xen virtuális gép indítása drbd alól

Fórumok

Sziasztok!

Sikerült megoldanom azt, hogy pygrub-bal induljon a xen-es gép drbd alól, vagyis nem kell kimásolni a kernelt.

# vim /etc/xen/vm/debian-proba.cfg
bootloader = '/usr/lib/xen-4.4/bin/pygrub'

vcpus = '1'
memory = '512'

#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'drbd:/dev/drbd/by-res/debian-proba/0,xvda2,w',
'drbd:/dev/drbd/by-res/debian-proba/1,xvda1,w',
]

Vagyis az erőforrást kell megadni és a teljes útvonalat!

A gondom annyi, hogy elindul a virtuális gép, de itt megáll és nem megy tovább:
xenbus_probe_frontend: Waiting for devices to initialise: 25s...

Valami ötlet?

Hozzászólások

ha pygrub-t használsz, szerintem nem kell megadni a root= -t, hiszen a pygrub tölti be a kernelt, aminek megadja paraméterként. Nem lehet, h itt a gond?

ps: tényleg van különbség a /dev/drbd0 és /dev/drbd/by-res/debian-proba/0 között? főleg, hogy /dev/drbd/by-res/debian-proba/0 egy symlink /dev/drbd0-ra?

cat /proc/drbd mit mond? mindkét resource-d primary?

ha pygrub-t használsz, szerintem nem kell megadni a root= -t, hiszen a pygrub tölti be a kernelt, aminek megadja paraméterként. Nem lehet, h itt a gond?
- Ez ahogy néztem nem osztott nem szorozott. Azért hagytam benne, mert ezt a cfg-t a xen-tools generálta, abban is benne volt a root és a pygrub is.

tényleg van különbség a /dev/drbd0 és /dev/drbd/by-res/debian-proba/0 között? főleg, hogy /dev/drbd/by-res/debian-proba/0 egy symlink /dev/drbd0-ra?
- Megmondom őszintén más teljes útvonalat nem próbáltam, volt egy tutorial ahol a debian-proba/0 volt megadva, úgy nem működött.

cat /proc/drbd mit mond? mindkét resource-d primary?
Nem. Akkor lehet ez a baj? Mondjuk én nem is szeretném, hogy mind a két oldal primary legyen. Azt szeretném ha az egyik gép leáll, tegye át a másik helyen primary-ba és induljon el a gép. Vagy ez butaság?

amit Te mondasz, akkor kell, ha egyszerre többen akarják használni az FS-t, de itt nem erről van szó,
hanem arról, hogy van egy partíció, ami egyszerre 1 helyen aktív: az egy darab virtuális gépen.
Az más kérdés, hogy a virtuális gép melyik fizikai gépen fut éppen, sőt ha Remus-t használsz, akkor is csak az egyik fizikai gépen lesz aktív a virtuális gép, a másikon "csak" sync'ed állapotban van.

>>cat /proc/drbd mit mond? mindkét resource-d primary?
>Nem. Akkor lehet ez a baj? Mondjuk én nem is szeretném, hogy mind a két oldal primary legyen. Azt >szeretném ha az egyik gép leáll, tegye át a másik helyen primary-ba és induljon el a gép. Vagy ez >butaság?
nem mindegy, hogy mindkét resource (a Te konfigod egy géphez két partíciót használ, mindkét partíció 1-1 resource) vagy mindkét oldal (mindkét oldalon - értsd gépen - megvan mindkét resource).

Butaságnak nem butaság. Elméletben úgy működik ez a xen drbd backend esetén, hogy az egyik gépen aktív (primary) a másikon nem (secondary) - és maga a backend driver kapcsolja át őket - avagy lehet pri/pri is, csak vigyázni kell, h egyszerre 1nél több gépen ne akarjon elindulni.

"Ha leáll akkor" na most az a kérdés, hogyan áll le? Mondjuk szabályos shutdown, mert meghibásodik valami, és leállítja magát a gép - ebben az esetben a shutdown script át tudja rakni a futót virtuális gépet (ha van elég ideje).
Ha a gép kiesik - pl kihúzod a delejt - na, erre olyan megoldás kell, ami a tartalék gépen is folyamatosan szinkronban tartja (nem csak a diszket, ram-ot is) a vm-t. Ilyen pl a Xen-Remus

nem mindegy, hogy mindkét resource (a Te konfigod egy géphez két partíciót használ, mindkét partíció 1-1 resource) vagy mindkét oldal (mindkét oldalon - értsd gépen - megvan mindkét resource).
- Igen, jogos az észrevétel. Akkor a válaszom a kérdésedre, hogy mind a két resource primary-ben van. Amelyiken fut a virtuális gép az primary amelyiken éppen nem az secondary. Ha secondary-ben lenne az az oldal is ahol a gépet futtatni akarom, nem is engedné elindítani a virtuális gépet, kipróbáltam. :)

Egyelőre nekem az a "szint" elég, hogy a xen migrate paranccsal átmigrálok a másik oldalra. Ha ez flottul megy, akkor lehet kipróbálok mást is.

# drbd-overview
3:debian-proba/0 Connected Primary/Secondary UpToDate/UpToDate C r-----
4:debian-proba/1 Connected Primary/Secondary UpToDate/UpToDate C r-----

version: 8.4.3 (api:1/proto:86-101)
srcversion: 69A5E1D3708F09A9D055736

--------------------------------------

# cat /proc/drbd
3: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:0 nr:0 dw:0 dr:12456 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
4: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:0 nr:0 dw:0 dr:748 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Tehát az első gépen lévő mindkét resource primary. Mégis a lenti hibával indul a virtuális gép.

# xl create -c /etc/xen/vm/debian-proba.cfg
[ 1.264217] IMA: No TPM chip found, activating TPM-bypass!
[ 6.360124] xenbus_probe_frontend: Waiting for devices to initialise: 25s...20s...15s...

Itt akad el.

Szerk.:
Az igazsághoz hozzá tartozik, hogy mind a két host gép, virtualbox alatt fut, vagyis:

Laptop -> virtualbox -> HOST1 -> XEN -> debian-proba
Laptop -> virtualbox -> HOST2 -> XEN -> debian-proba

Nekem a te javaslatoddal nem indul el a virtuális gép.

File "/usr/lib/xen-4.4/bin/pygrub", line 809, in
part_offs = get_partition_offsets(file)
File "/usr/lib/xen-4.4/bin/pygrub", line 106, in get_partition_offsets
image_type = identify_disk_image(file)
File "/usr/lib/xen-4.4/bin/pygrub", line 48, in identify_disk_image
fd = os.open(file, os.O_RDONLY)
OSError: [Errno 124] Wrong medium type: '/dev/drbd/by-res/HAunifi/1'

Ha kézzel primary-ra rakom a resource-t, akkor (de szép magyar mondat):

libxl: error: libxl_device.c:1085:device_hotplug_child_death_cb: script: /etc/xen/scripts/block-drbd failed; error detected

Marad ez a reszelt változat:

#bootloader = '/usr/lib/xen-4.4/bin/pygrub'
kernel = "/var/lib/xen/images/unifi/vmlinuz"
ramdisk = "/var/lib/xen/images/unifi/initrd.img"

#
# Disk device(s).
#
root = '/dev/xvda1 ro'
disk = [
'drbd:HAunifi/1,xvda1,w',
'drbd:HAunifi/2,xvda2,w',
]

Szia!

Én ubuntu serveren próbálkozom. Lehet a te rendszereden nincs ilyen symlink.
Próbáld meg megadni magát a xen erőforrást.

disk = [
'drbd:/dev/drbd3,xvda2,w',
'drbd:/dev/drbd4,xvda1,w',
]

Kipróbáltam, nekem így is megy. :) Vagyis nincs különbség a két megoldás között.