Blog entry by Petri Asikainen

Petri Asikainen
by Petri Asikainen - Tuesday, 21 February 2012, 11:55 AM
Anyone in the world

Kun päivitin xen-palvelimen alustan (dom0) yksi virtuallikoneista (opensuse 11.4) ei enää käynnistynyt. Kaatuessaan se aiheutti dom0 tasolla virheen lohkolaitteden käsittelyssä. Ko kone oli jäänyt päivittämättä ennen päivitystä jotan kyseessä oli jokinlainen yhteensopivuus ongelma xen-versioden kanssa.

Korjatakseni ongelman: Ensiksi päivitin käynnistymättöman koneen

dom0: losetup /dev/loop60  /var/lib/xen/images/ongelmakone/disk0
dom0: kpartx -a /dev/loop60
dom0: mount /dev/mapper/loop60p2 /mnt/ongelma
dom0: cd /mnt/ongelma
dom0: chroot .
dom0: zypper up

Tähän saakka kaikki sujui hyvin, sain kaikki päivityksen koneeseen. mutta johtuen puttuvista /dev /proc rekaenteista ei initrd luominen onnistunut. Joten lopputuloksena oli kone ilman inird-levykuvia. :(

Sitten koitin kopioida vastaavasta virtuaalikoneesta inird-tiedoston, mutta sillä kone ei käynnistynyt koska koneiden osioinnit eivät olleet samanlaisia. Eli inird piti korjata käsin

.

dom0: cp toisenkoneen-initrd /tmp/sourceinitrd.gz
dom0: gunzip /tmp/sourceinitrd.gz
dom0: mkdir /tmp/rd
dom0: cd /tmp/rd
dom0: cpio -id < /tmp/sourceinird

#Nyt initrd oli purettuna tähän kansioon. Sitten etsin vittaukset levyihin:
dom0: grep -R xvd *

Ja editoin löytyneet tiedostot vastaamaan ongelmakonetta. Tämän jälkeen inirdn:n uudeen paketointi ja pakkaus

dom0: cd /tmp/rd
dom0: find . | cpio --create --format='newc' > /tmp/uusiinitrd
dom0: gzip /tmp/uusiinitrd

Tämän jälkeen tarvitsi vain kopioida /tmp/uusiinitrd /boot - kansioon oikealle nimelle ja poistaa lisätyt partitiot ja loop-laite.

dom0: exit #exit chroot
dom0: cd /mnt
dom0: umount /mnt/ongelma
dom0: kpartx -d /dev/loop60
dom0: losetup -d /dev/loop60

Tälläisen operaation jälkeenongelmallinen virtuallikone käynnistyi kivuitta.