Questa breve guida spiega cos'è Virt-size strumento da riga di comando e come possiamo espandere o estendere le dimensioni del disco della macchina virtuale KVM utilizzando lo strumento Virt-resize in Linux.
L'altro giorno ho notato che una delle mie macchine virtuali KVM sta esaurendo lo spazio su disco. Non sono riuscito a installare nessuna nuova applicazione oa salvare i file a causa dello spazio su disco insufficiente. Per risolvere questo problema, ho semplicemente aumentato le dimensioni del disco di una macchina virtuale KVM utilizzando virt-size
comando. Ho testato personalmente i passaggi indicati di seguito per aumentare le dimensioni del disco di una macchina virtuale KVM CentOS 8 e ha funzionato come previsto.
Strumento di ridimensionamento virtuale
Ridimensionamento virtuale è uno strumento da riga di comando per ridimensionare il disco di una macchina virtuale. Usando virt-resize, possiamo aumentare o diminuire la dimensione del disco di una macchina virtuale. Possiamo anche eliminare le partizioni all'interno del disco virtuale con il comando virt-resize. Tieni presente che ridimensiona le macchine live. I sistemi guest dovrebbero essere spenti prima di ridimensionare le loro immagini disco.
Per espandere la dimensione del disco di una macchina virtuale, creiamo prima un'immagine disco più grande dell'immagine di origine. E poi copiamo l'immagine di origine nell'immagine di destinazione e infine la ridimensioniamo.
Virt-resize è la parte di libguestfs-tools
pacchetto. Per installare il pacchetto libguestfs-tools su Debian, Ubuntu e i suoi derivati, eseguire:
$ sudo apt install libguestfs-tools
Per installare il pacchetto libguestfs-tools su Fedora, RHEL e i suoi cloni, esegui:
$ sudo dnf install libguestfs-tools
In Fedora 34, guestfs-tools
il pacchetto fornisce lo strumento di ridimensionamento virtuale. Quindi, se sei su Fedora 34, installa guestfs-tools
pacchetto come di seguito:
$ sudo dnf install guestfs-tools
Ora vediamo come espandere la dimensione del disco della macchina virtuale usando virt-resize
comando.
Espandi o estendi la dimensione del disco della macchina virtuale KVM in Linux
Ai fini di questa guida, utilizzerò l'immagine disco della macchina virtuale CentOS 8 denominata centos8.qcow2
. Ho memorizzato questo mago nella mia attuale directory di lavoro. Puoi usare virsh dumpxml
comando per individuare l'immagine del disco che desideri ridimensionare.
Esempio:
$ virsh dumpxml centos8
Sostituisci centos8 con il nome della tua VM nel comando precedente.
Dopo aver individuato l'immagine del disco che desideri ridimensionare, controlla i dettagli della partizione all'interno di questa immagine del disco. Per stampare i dettagli della partizione e le relative dimensioni di un'immagine disco, eseguire:
$ virt-filesystems --long --parts --blkdevs -h -a centos8.qcow2
Risultato di esempio:
Name Type MBR Size Parent /dev/sda1 partition 83 1.0G /dev/sda /dev/sda2 partition 8e 19G /dev/sda /dev/sda device - 20G -

Come puoi vedere nell'output sopra, la mia immagine del disco ha solo due partizioni, ovvero /dev/sda1
con dimensione 1 GB e /dev/sda2
con 19 GB. La dimensione totale dell'immagine disco è di 20 GB.
Ora lo faremo,
- aumentare la dimensione totale dell'immagine del disco da 20 GB a 30 GB ,
- aumentare la dimensione della prima partizione
/dev/sda1
da 1,0 GB a 1,5 GB , - Espandi la seconda partizione
/dev/sda2
per riempire lo spazio rimanente.
Virt-resize non può ridimensionare le immagini del disco sul posto. Inoltre, Virt-resize non deve essere utilizzato su macchine virtuali live. Prima di ridimensionare l'immagine del disco, spegni la macchina virtuale ed esegui il backup dell'immagine del disco originale.
$ mv centos8.qcow2 centos8.qcow2.backup
Il comando precedente rinominerà l'immagine del disco corrente denominata centos8.qcow2
a centos8.qcow2.backup
.
Crea una nuova immagine disco con lo stesso nome e con una dimensione di 30 GB usando il comando:
$ qemu-img create -f qcow2 -o preallocation=metadata centos8.qcow2 30G
Risultato di esempio:
Formatting 'centos8.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off preallocation=metadata compression_type=zlib size=32212254720 lazy_refcounts=off refcount_bits=16
Assicurati che la dimensione del disco appena creato sia 30 GB:
$ virt-filesystems --long --parts --blkdevs -h -a centos8.qcow2
Risultato di esempio:
Name Type MBR Size Parent /dev/sda device - 30G -

Ora espandi/estendi la dimensione dell'immagine del disco della macchina virtuale KVM usando il comando:
$ virt-resize --resize /dev/sda1=+500M --expand /dev/sda2 centos8.qcow2.backup centos8.qcow2
Ecco,
--resize /dev/sda1=+500M
- aumenta la dimensione del/dev/sda1
partizione a 500 MB.- --expand /dev/sda2 - ridimensiona il
/dev/sda2
partizione per riempire tutto lo spazio rimanente. Nel mio caso, verrà ridimensionato da 19.0G a 28.5G. centos8.qcow2.backup
- è l'immagine del disco di input originale.centos8.qcow2
- è l'immagine del disco di output appena creata.
L'output di esempio del comando precedente è:
[ 0.0] Examining centos8.qcow2.backup Summary of changes: /dev/sda1: This partition will be resized from 1.0G to 1.5G. The filesystem ext4 on /dev/sda1 will be expanded using the ‘resize2fs’ method. /dev/sda2: This partition will be resized from 19.0G to 28.5G. The LVM PV on /dev/sda2 will be expanded using the ‘pvresize’ method. [ 4.2] Setting up initial partition table on centos8.qcow2 [ 5.6] Copying /dev/sda1 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00 [ 9.7] Copying /dev/sda2 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00 [ 45.1] Expanding /dev/sda1 using the ‘resize2fs’ method [ 45.3] Expanding /dev/sda2 using the ‘pvresize’ method Resize operation completed with no errors. Before deleting the old disk, carefully check that the resized disk boots and works correctly.

Controlla le partizioni e le loro dimensioni con virt-filesystems
comando:
$ virt-filesystems --long -h --all -a centos8.qcow2
Risultato di esempio:
Name Type VFS Label MBR Size Parent /dev/sda1 filesystem ext4 - - 1.4G - /dev/cl/root filesystem xfs - - 17G - /dev/cl/swap filesystem swap - - 2.0G - /dev/cl/root lv - - - 17G /dev/cl /dev/cl/swap lv - - - 2.0G /dev/cl /dev/cl vg - - - 29G /dev/sda2 /dev/sda2 pv - - - 29G - /dev/sda1 partition - - 83 1.5G /dev/sda /dev/sda2 partition - - 8e 29G /dev/sda /dev/sda device - - - 30G -

Come puoi vedere nell'output sopra, le dimensioni dell'immagine del mio disco KVM CentOS8 sono state ridimensionate da 20 GB a 30 GB.
Ora avvia la macchina virtuale con la nuova immagine del disco. Puoi anche creare una nuova macchina virtuale usando l'immagine Qcow2 come descritto nel seguente link.
- Crea una macchina virtuale KVM utilizzando l'immagine Qcow2 in Linux
Se funziona senza problemi, controlla attentamente se tutti i tuoi dati esistono. Se tutto è a posto, elimina il vecchio disco di backup.
In caso di problemi con il nuovo disco, arrestare la macchina virtuale e rinominare il disco di backup con il nome originale. Ripetere attentamente i passaggi precedenti. Non dimenticare di eseguire il backup dei dati e dell'immagine del disco.