Gestione partizioni di macchine virtuali Xen
I comandi fondamentali sono:
xe host-vm-list
per ottenere l'uuid (cioè il nome interno) della macchina virtuale, noto il nome.
find /dev -name \*UUID\*
(dove UUID è il valore trovato prima) per la lista dei block device della macchina virtuale.
Notare che la parte terminale del nome è il nome del disco all'interno di xen (xvda, xvdb, ...).
ATTENZIONE: questi device sono partizioni il cui contenuto è l'immagine di un disco! Questo vuol dire che il kernel dell'host li vede come partizioni, mentre il kernel del guest li vede come dischi. Quindi, per vedere le partizioni ed i filesystem di un disco virtuale sulla macchina host, bisogna prima caricare nel kernel host la tabella delle partizioni, in modo che crei i device per le partizioni, e poi accedere al filesystem attraverso i device delle partizioni appena creati.
ATTENZIONE: assicurarsi di aver spento la macchina virtuale prima di fare qualsiasi modifica ai suoi dischi.
Per prima cosa occorre ridimensionare il disco da interfaccia grafica xenserver-client (altrimenti sarà necessario un lvresize ed il valore riportato dall'interfaccia grafica NON sarà aggiornato).
Esempi
Supponiamo che il nostro disco virtuale sia
/dev/VG_XenStorage-00cbc55d-7345-4a7d-83b9-ea2aef2f9dd7/LV-f5f903fc-869f-40ea-9249-52886d454f6d.xvdb
Per vederne le partizioni:
fdisk -l /dev/VG_XenStorage-00cbc55d-7345-4a7d-83b9-ea2aef2f9dd7/LV-f5f903fc-869f-40ea-9249-52886d454f6d.xvdb
Per modificarne o allargare le partizioni:
fdisk /dev/VG_XenStorage-00cbc55d-7345-4a7d-83b9-ea2aef2f9dd7/LV-f5f903fc-869f-40ea-9249-52886d454f6d.xvdb
Per accedere ad un filesystem di una partizione:
losetup /dev/loop0 /dev/VG_XenStorage-00cbc55d-7345-4a7d-83b9-ea2aef2f9dd7/LV-f5f903fc-869f-40ea-9249-52886d454f6d.xvdb
kpartx -a /dev/loop0
per fare l'e2fsck sul filesystem nella prima partizione:
e2fsck /dev/mapper/loop0p1
per fare il resize del filesystem nella prima partizione:
e2fsck -f /dev/mapper/loop0p1 resize2fs /dev/mapper/loop0p1
per montare il filesystem nella prima partizione:
mkdir a mount /dev/mapper/loop0p1 a ls a umount a rmdir a
ATTENZIONE: prima di riavviare la macchina virtuale è indispensabile fare umount, scaricare la tabella delle partizioni ed eliminare il loop device. I comandi sono:
umount a kpartx -d /dev/loop0 losetup -d /dev/loop0
e vanno eseguiti in questo ordine.