A szegény legény XEN-nel főz UPDATE

Sziasztok!

Előzmények:
http://hup.hu/node/139090
http://hup.hu/node/140320

A szegény legény nagy fába vágta a fejszéjét.. Feláldozta az eddig elért gyorsaságot a kényelem oltárán. Más szóval openwrt-t és omv-t virtualizált xen alatt.

Miért jó ez?
Alapvetően kényelmes. A routeres + a nas-os résznek is van külön webes felülete. Ami (elvileg) kiforrott és stabil. De ha mégis bele kell nyúlni a rendszerbe, ott a konzol.

Az openwrt-t xen-re felhúzni nem volt egyszerű feladat. Főleg úgy, hogy az egyik hálókártyát az openwrt kezelje. A szegény legény mégis megoldotta a feladatot. És most leírja a lépéseket.

Először nem az éles rendszeren, hanem virtuális gépen kísérleteztem. Jót látni, hogy egy virtualbox alatt is létre lehet hozni egy xen-es teszt környezetet. Végül is miért ne lehetne hiszen paravirtualizált környezetet hoztam létre. :) Bár talán a paravirtualizált környezet nélkül is menne a mai világban.

A rendszer egy LVM partíción nyugszik, amit több szempontból is ideális. Könnyű növelni a méretét és lehet snapshot-ot készíteni. Igaz egy ilyen pici rendszernél mint az openwrt az annyira nem lényeges viszont a többi virtuális gép is ezen az elven lesz létrehozva, így a karbantartásuk könnyebb.

Mindenképp saját openwrt-t kellett főzni, mert a xen-es környezethez picit más kernel kell. A rendszer lett vagy 100MB. No nem a xenes kerneltől, hanem a rengeteg modultól amit még belepakoltam. :) Mire letöltött mindent és lefordult, azt hittem ugratok a szopórollerrel, 4 óráig tartott..

Az omv telepítés ehhez képest simán ment. Debian felhúz a xenre, és rá egy omv. Bár itt is volt egy csavar, nem tudtam felcsatolni a data partíciót (xvdb1) mert nem létezett /dev/xvdb nevű blokkeszköz. Ha nincs akkor létre kell hozni egyet. Ez így egyszerűnek hangzik, de mire erre rájöttem.. Lehet virtuális blokkeszközt létrehozni?? :-O Lehet. :) Létrehoztam a /dev/xvdb nevű eszközt, így már csatolta az omv a data partíciót és tudtam bizgerálni a weben.

Itt van a tutorial ha valaki omv-t akar xenre pakolni:
http://peterjolson.com/installing-openmediavault-on-xenserver/

És a bűvös parancs:
mknod /dev/xvdb b 220 0

Hiányosságok:
- a bridge-be lévő vm nem kap az openvrt-től ip címet DHCP-vel, de ha statikusan adom meg, minden ok
- a pci-passtrugh nem indul el automatikusan.. csak ha kézzel indítom el
- Kezdem érezni, hogy ennek a vasnak kezd sok lenni a xen. Nem egy mikroserver.. :)

Előnyök:
- Csini webes felület mindenhol. Érted: MINDENHOL
- Át lehet érni a küldetés teljesítve érzést, nem kell hozzá lottóötös ;)

Az alábbi leírás kiindulópontnak jó lehet:
http://publications.jbfavre.org/virtualisation/xen_openwrt_domu_pci_pas…

Kiegészítés:
- Beletesszük a target/linux/x86/xen_domu/config-default-ba az alábbi sort
CONFIG_XEN_PCIDEV_FRONTEND=y
Majd utána: make menuconfig

- a kernelt beállítjuk, hogy gzip tömörítésű legyen

- az imageben beállítjuk, hogy a kernelt is forgassa bele

- az előző kettő lépés azért kell, hogy rsync-el ki be lehessen másolni az lvm-re a rendszert és ne .img-ből kelljen indítani, lehet máshogy csinálni

- kernel/block devices/kmod-ide-core
ezt érdemes beletenni a make menuconfig-ba és csak ezt más ebből a menüből nem kell

- FONTOS!! a sorost portot a target image-n belül ugyanarra kell állítani, mint a .cfg fájlban
különben kernel panic lesz

A cfg fájl
------------------------
bootloader = 'pygrub'

root = '/dev/xvda2 rw'

memory = '256'
vcpus = '1'
#cpus = '2'
localtime = 0
serial = 'pty'

disk = [
'phy:/dev/vg-teszt/open-wrt,xvda2,w',
'phy:/dev/vg-teszt/open-wrt-swap,xvda1,w',
]

vif = [ 'mac=00:16:3E:F1:E4:5F,bridge=br0' ]

on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

extra = "console=hvc0 xencons=tty"

# Ez csak akkor kell ha PCI passthrough-ot használsz
#pci = [ '00:08.0' ]

name = 'openwrt'
hostname = 'openwrt'
-------------------------------------------

UPDATE:
Kitaláltam hogy lehet az én esetemben automatikusan (az indításkor) megoldani a PCI passthrough-ot.

sudo vim /etc/modules.conf
xen-pciback

sudo vim /etc/default/grub
GRUB_CMDLINE_XEN="iommu=1"

sudo echo "xen-pciback passthrough=1 hide=(08:00.0)" >> /etc/initramfs-tools/modules

update-initramfs -k all -c

Hozzászólások

xvdb vs xvdb1 problema:

En ezt ugy szoktam megoldani, hogy eleve a xen-nek teljes blokkeszkozt (xvdb) adok, nem csak egy particiot (xvdb1), es hagyom, hogy a xen guest ugy particionaljon, ahogy neki jol esik. A kpartx nevu cucc segit abban, hogy meg ilyen korulmenyek kozott is gond nelkul belelassak a letrehozott virtualis gep particioi koze.
--
Blog | @hron84
Üzemeltető macik

Igen, de én egyik gépnél sem img-ből dolgozom. Van egy fizikai kötet, és rajta több logikai kötet, egyenként a virtuális gépeknek. Nekem így jobban tetszett mintha minden gépnek egy img fájlja lenne.
Bár kétségtelen, ha úgy csináltam volna ahogy te, nem jött volna elő a probléma. :)

Off:
Azért ha már a címben égteleknkedik, mégiscsak szólok: Nem azt mondod, hogy zenel / kszenel, hanem azt, hogy zennel / kszennel. Tehát helyesen XEN-nel az írásmód. Nem értem miért, de valami oka van, hogy HUP-on ezt milliószor látni.

Teljesen igazad van. Nem typo, egyszerűen így írtam le.

Egy pár éve vettem észre, hogy folyamatosan tunyul a helyesírásom, egyre gyakoribb, hogy kiejtés szerint írok le szavakat, az a legdurvább, amikor angolban is előfordul (pl. physicly, de a contin(uo)us-nál is rendszeresen a szóellenőrző figyelmeztet). Ezeket már lassan észre sem veszem. De ez a -val/-vel (még) mindig kiszúrja a szemem.