Xen Hotswap
Kaikkien Fixme:n virtuaalikoneiden kovalevy-backendina on hyperillä LVM:ssä sijaitsenva LV (Logical Volume). Yksi LVM/ext2:n ominaisuuksista on se, että on mahdollista kasvattaa LV/fs:n kokoa lennosta. Valitettavasti tämä ei onnistu suoraan xenin läpi, eli et voi kasvattaa osion kokoa hyperilta ja ajaa resize2fs:ää domU:ssa. Xen kuitenkin tarjoaa block-device hotswap funktionaalisuuden, jonka avulla on mahdollista ensim. :
umount <blockdev>domU:ssaxm block-detach <vm_id> <blockdev_id>dom0:ssalvresize -L <size> <vg_name>/<lv_name>dom0:ssaxm block-attach <vm_id> <backend_spec> <frontend_spec> <mode>dom0:ssafsck -f <blockdev>domU:ssaresize2fs <blockdev>domU:ssamount <mnt_path> <blockdev>domU:ssa
xm block-detach
vm_id on domU:n nimi/id, eli joko katso xm_list:sta, tai suoraan koneen nimi. blockdev_id on xenin oma dom0:n sisäinen blockdev-id. xm block-list <vm_id> näyttää listan vm:n blockdeveista, ja /var/log/xen/xend.log:ia grepaamalla selviää lisäinfoa.
xm block-attach
vm_id on domU:n nimi/id. backend_spec/frontend_spec on sama kun .cfg:ssa, eli esim. phy:fixme/foobar-disk /dev/sdb1. mode on varmaan w, ellet halua read-only, jolloin r.
Huomioi että tämän komennon virheittenkäsittely tuntuu bugaavan hieman - jos komento epäonnistuu (mode on esim. rw eikä w), niin frontend_spec jää "käytössä" tilaan, ja et voi block-attach:ata siihen enää.
fsck + resize2fs
resize2fs ei tykkää siitä lvresizeatusta osiosta suoraan, vaan pitää ensin ajaa fsck -f siihen. Tämä ei kuitenkaan mun osalta löytänyt mitään virheitä, eli pitäisi kuitenkin olla ihan OK.
References
http://www.sandelman.ca/mcr/blog/2007/10/25#how_to_extend_a_file_system_using_lvm_xen