È possibile ridimensionare un'immagine del disco QEMU?


12

Come dice il titolo: È possibile ridimensionare un'immagine del disco QEMU in Linux? E se sì, cosa succede alle partizioni al suo interno? Vengono automaticamente ridimensionati (in dubbio) o c'è solo un nuovo blocco di spazio inutilizzato che li segue?

Risposte:


12

Da qui :

!!! Eseguire il backup dell'immagine del disco prima di provare quanto segue !!!

Se stai usando un'immagine raw sparsa, allora fallo

dd if=/dev/zero of=hdd.img seek=N obs=1MB count=0"

dove hdd.img è l'immagine in formato non elaborato che si desidera ridimensionare e N è la nuova dimensione in cui si desidera che l'immagine sia, in megabyte. Per cambiare le unità di N, cambia obs in qualcos'altro come 1 GB per unità in gigabyte (1000x1000x1000).

Se vuoi ridimensionare un'immagine grezza ma non vuoi che diventi sparsa (in realtà vuoi quegli zeri nel file) allora fai "dd if = / dev / zero of = image seek = S count = NS obs = 1" invece, dove N è la nuova dimensione e S è la dimensione precedente (in byte).

Se vuoi ridimensionare un'immagine qcow2, questa non è ancora supportata.

questa email mostra alcuni esperimenti con il ridimensionamento delle immagini qcow con un editor esadecimale.

Il ridimensionamento o la crescita di immagini in altri formati (VMware, Bochs, cow o cloop) non è supportato per quanto ne so.

Su un host Windows è possibile ridimensionare un'immagine disco di formato non elaborato utilizzando il comando 'copia'. È possibile utilizzare qemu-img per convertire l'immagine esistente in formato non elaborato, se necessario. Useremo un'immagine disco temporanea in formato raw che verrà aggiunta alla fine dell'immagine disco esistente in formato raw. La dimensione di questa immagine temporanea è la dimensione in cui l'immagine esistente verrà espansa di:

qemu-img create -f raw temp.img 300M

Dovresti quindi emettere il comando seguente: orig.img è l'immagine in formato raw esistente che desideri ingrandire, temp.img è il file di immagine temporaneo creato in precedenza e new.img è l'immagine risultante ridimensionata:

copy /b orig.img+temp.img new.img

Sarà quindi necessario ripartizionare e ridimensionare le partizioni e i filesystem esistenti sulla nuova immagine. Un metodo per eseguire questa operazione è avviare gparted in QEMU con iso livecd gparted e la nuova immagine del disco.


Altri link che potresti voler verificare se quanto sopra non funziona:

http://qemu-forum.ipi.fi/viewtopic.php?p=12362
http://kev.coolcavemen.com/2007/04/how-to-grow-any-qemu-system-image/
http: / /bryan-murdock.blogspot.com/2007/12/resize-qemukvm-windows-disk-image.html
http://www.larsen-b.com/Article/329.html
http://www.brabbel.net / wp / archives / 174


17

Un'immagine qcow2 può essere ridimensionata per crescere con una versione nuova / corrente di qemu. Ad esempio, ho un arch.qcow2 che è 2G e voglio che diventi 50G, in quel caso scrivo:

qemu-img resize arch.qcow2 50G

quindi qemu mi dice:

image resized

tutto qui, l'ho appena fatto oggi. redhat ha in realtà dei bei documenti su qemu:


3
Tuttavia, lo spazio aumentato non sarà allocato. Dovrai ridimensionare il tuo disco virtuale usando uno strumento di partizione.
Yamaneko,

Ottima soluzione!
RckLN,

mi dice qemu-img versione 1.0qemu-img: This image format does not support resize
HDave l'

3

Risposta breve per il 2017: per aggiungere ad esempio 30 GB a un'immagine raw esistente ho appena usato questo comando:

qemu-img resize nameofimg.img +30G

Ciò aggiunge 30 GB al file di immagine esistente (non è necessario creare un nuovo file). Quindi nella VM guest è possibile estendere le partizioni esistenti, in Windows 10 ad esempio con "Gestione disco", facilmente.

Ulteriori informazioni e opzioni:

man qemu-img

Vedi anche: qemu wiki> qemu-img


1

Si, puoi. E no, non cambierà le partizioni o la tabella. Potrebbe essere necessario aggiornare la tabella delle partizioni per avere l'intera dimensione del disco e alla fine ci sarà spazio inutilizzato vuoto se la cresci e taglierai una partizione e la perderai o l'ultima parte dei suoi dati se la riduci .

Se sei nel monitor qemu (o usi probabilmente QMP ) e l'interfaccia lo supporta (come virtio-scsi-pci con rbd che ho testato qui), quindi senza riavviare la VM, puoi farlo:

(qemu) info block -v disk1
disk1 (#block165): rbd:rbd/manjaro (raw)
    Cache mode:       writeback

Images:
image: rbd:rbd/manjaro
file format: raw
virtual size: 4.0G (4294967296 bytes)
[...]

(qemu) block_resize disk1 5120

E poi, l'immagine viene ridimensionata alle dimensioni specificate in MiB e la VM mostrerà le nuove dimensioni.

Ho provato quanto segue su qemu 2.7.0:

  • RBD di Ceph: funziona, velocemente, cresce o si restringe
  • File del disco qcow2: funziona, più lentamente, cresce solo
  • file del disco non elaborato: funziona, velocemente, cresce o si restringe
  • disco LVM non elaborato - nel monitor sembra normale ma non ha alcun effetto

Apprezzo la tabella in fondo. È stato molto utile.
mascherato1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.