Soluzione 1:
So che è una vecchia domanda, ma l'ho trovata mentre cercavo la soluzione su Google e spero che possa aiutare qualcun altro.
Per quanto riguarda oggi lo è possibile ridimensionare il disco rigido sulla macchina. Ho trovato un modo di lavorare qui:
https://bugzilla.redhat.com/show_bug.cgi?id=648594
È necessario eseguire i seguenti passaggi:
-
Trova il nome del file e il nome del dispositivo KVM del disco rigido che desideri ridimensionare:
[email protected]:/data# virsh dumpxml test | xpath -e /domain/devices/disk Found 2 nodes in stdin: -- NODE -- <disk type="file" device="disk"> <driver name="qemu" type="qcow2" /> <source file="/data/test.img" /> <backingStore /> <target dev="vda" bus="virtio" /> <alias name="virtio-disk0" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" /> </disk> -- NODE -- <disk type="file" device="cdrom"> <driver name="qemu" type="raw" /> <source file="/data/images/debian-8.2.0-amd64-netinst.iso" /> <backingStore /> <target dev="hda" bus="ide" /> <readonly /> <alias name="ide0-1-1" /> <address type="drive" controller="0" bus="1" target="0" unit="1" /> </disk>
Quello interessante per noi è il disco. Dovresti cercare source
e alias
blocchi. Per me il nome del file è test.img
e il nome alias è virtio-disk0
. A questo nome, devi anteporre drive-
per ottenere il nome dell'unità qemu.
-
Ora ridimensioniamo effettivamente l'unità utilizzando qemu monitor:
virsh qemu-monitor-command test block_resize drive-virtio-disk0 100G --hmp
Si noti che il nome del file è stato utilizzato senza l'estensione .img e l'unità- è stata aggiunta all'alias del disco. Il 100G è la dimensione risultante dell'unità che vogliamo avere
-
Accedi alla macchina e verifica che le dimensioni effettive siano state modificate:
[email protected]:~# fdisk -l Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x7e6e7f71 Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 499711 497664 243M 83 Linux /dev/vda2 501758 167770111 167268354 79.8G 5 Extended /dev/vda5 501760 167770111 167268352 79.8G 8e Linux LVM
Questo è tutto! Ora puoi creare nuove partizioni o ridimensionare quelle esistenti.
Soluzione 2:
AFAIK, questo non è possibile:puoi aggiungere nuove immagini disco e, come fai notare, potresti anche aggiungere nuove immagini a un volume LVM, ma per ridimensionare un'immagine disco attiva e avviabile devi essere in grado di chiuderla verso il basso e modifica le partizioni.
Ecco una buona spiegazione per espandere un'immagine. Sebbene richieda l'arresto, probabilmente potresti farla franca con solo un paio di minuti di inattività, soprattutto se eviti l'opzione --nonsparse image e aggiungi il disco gparted a un file iso e monti in anticipo nel tuo guest KVM. Spero che questo aiuti.
Soluzione 3:
Penso che tu sia bloccato a fare ciò che hai menzionato se vuoi farlo senza smontare la macchina.
Perché non fornire semplicemente i LUN delle macchine virtuali direttamente dalla SAN e gestire lo spazio lì? Funziona meglio se si desidera comunque utilizzare funzionalità come la migrazione in tempo reale.
KVM è basato su QEMU, quindi tutto il supporto del formato immagine proviene da quel progetto. Ecco una buona guida per ridimensionare i vari formati supportati da Qemu/KVM. Ma il forum Qemu sarebbe un buon posto per porre questa domanda se non ottieni risposte solide qui.
Un'altra opzione che potrebbe non essere l'ideale è utilizzare qcow2 molto grande o un altro formato di immagine sparso per le unità. Quindi potresti dare a ogni macchina una piccola unità per il sistema operativo e una grande immagine sparsa per i dati sotto LVM. Ciò manterrebbe almeno il numero di unità/immagini virtuali che devi gestire. Ma questo thin provisioning potrebbe essere un problema se lo fai su 1000 macchine e tutti ti prendono in considerazione lo spazio libero che vedono.
XEN credo abbia attualmente le stesse limitazioni.
Soluzione 4:
È possibile spostare un sistema Linux tra i dischi mentre è in esecuzione. La limitazione è che non puoi modificare le partizioni su un disco che ha partizioni in uso.
Per fare ciò il tuo filesystem di root deve essere su un LVM, questo spesso significa che devi avere un filesystem di avvio separato (questo non è, tuttavia, essenziale, rende solo le cose più facili)
Dopo aver collegato il nuovo disco, lo aggiungi a LVM con vgextend, usa pvmove per spostare rootfs sul nuovo disco, usa lvextend e resize2fs per espandere rispettivamente il volume logico e il filesystem, quindi usa vgreduce per rimuovere il vecchio disco dal volume gruppo. Una volta rimosso, il vecchio volume può essere scollegato.
Per il caso semplice hai un minuscolo disco per il filesystem di avvio che non devi mai toccare. Ma se è da solo è facile per smontarlo, scollegalo, inseriscine uno nuovo e ricostruisci il disco di avvio senza arrestare il sistema. (basta non andare in crash mentre lo fai)
Nota:resize2fs può anche ridurre i filesystem.