Est-il possible de redimensionner une image disque QEMU?

12

Comme le dit le titre: est-il possible de redimensionner une image disque QEMU sous Linux? Et si oui, qu'advient-il des partitions qui s'y trouvent? Sont-ils également redimensionnés automatiquement (douteux) ou y a-t-il juste un nouveau bloc d'espace inutilisé qui les suit?

Richie Marquez
la source

Réponses:

12

D' ici :

!!! Sauvegardez votre image disque avant d'essayer ci-dessous !!!

Si vous utilisez une image brute clairsemée, faites

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

où hdd.img est l'image au format brut que vous souhaitez redimensionner et N est la nouvelle taille que vous souhaitez que l'image soit, en mégaoctets. Pour changer les unités de N, remplacez obs par quelque chose d'autre comme 1 Go pour les unités en gigaoctets (1000x1000x1000).

Si vous voulez redimensionner une image brute mais que vous ne voulez pas qu'elle devienne clairsemée (vous voulez en fait ces zéros dans le fichier), faites "dd if = / dev / zero of = recherche d'image = S count = NS obs = 1" au lieu de cela, où N est la nouvelle taille et S est l'ancienne taille (en octets).

Si vous souhaitez redimensionner une image qcow2, cela n'est pas encore pris en charge.

cet e-mail montre quelques expériences avec le redimensionnement des images qcow avec un éditeur hexadécimal.

Le redimensionnement ou la croissance d'images dans d'autres formats (VMware, Bochs, vache ou cloop) n'est pas pris en charge à ma connaissance.

Sur un hôte Windows, il est possible de redimensionner une image disque au format brut à l'aide de la commande «copier». Vous pouvez utiliser qemu-img pour convertir votre image existante au format brut si nécessaire. Nous utiliserons une image disque au format brut temporaire qui sera ajoutée à la fin de votre image disque au format brut existante. La taille de cette image temporaire est la taille de l'image existante sera développée par:

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

Vous devez ensuite exécuter la commande ci-dessous - orig.img est votre image au format brut existante que vous souhaitez agrandir, temp.img est le fichier d'image temporaire créé précédemment et new.img est l'image résultante redimensionnée:

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

Vous devrez ensuite repartitionner et redimensionner les partitions et les systèmes de fichiers existants sur la nouvelle image. Une méthode consiste à démarrer gparted dans QEMU avec l'iso livecd gparted et la nouvelle image disque.


Autres liens que vous voudrez peut-être vérifier si les éléments ci-dessus ne fonctionnent pas:

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

fretje
la source
17

Une image qcow2 peut être redimensionnée pour grandir avec une version nouvelle / actuelle de qemu. Par exemple, j'ai un arch.qcow2 c'est 2G et je veux qu'il devienne 50G, dans ce cas je tape:

qemu-img resize arch.qcow2 50G

alors qemu me dit:

image resized

c'est tout, je viens de le faire aujourd'hui. redhat a en fait de jolis documents sur qemu:

user1026169
la source
3
Cependant, l'espace augmenté ne sera pas alloué. Vous devrez redimensionner votre disque virtuel à l'aide d'un outil de partition.
Yamaneko
Excellente solution!
RckLN
qemu-img version 1.0 me ditqemu-img: This image format does not support resize
HDave
3

Réponse courte pour 2017: pour ajouter par exemple 30 Go à une image brute existante, je viens d'utiliser cette commande:

qemu-img resize nameofimg.img +30G

Cela ajoute 30 Go à votre fichier image existant (pas besoin de créer un nouveau fichier). Ensuite, dans votre machine virtuelle invitée, vous pouvez étendre vos partitions existantes, dans Windows 10 par exemple avec "Gestion des disques", facilement.

Plus d'informations et d'options:

man qemu-img

Voir aussi: qemu wiki> qemu-img

Firepol
la source
1

Oui, vous pouvez. Et non ça ne changera pas les partitions ou la table. La table de partition devra peut-être être mise à jour pour avoir la taille complète du disque, et il y aura de l'espace inutilisé à la fin si vous l'agrandissez, et vous hacherez une partition et la perdrez ou la dernière partie de ses données si vous la réduisez .

Si vous êtes dans le moniteur qemu (ou utilisez probablement QMP ), et que l'interface le prend en charge (comme virtio-scsi-pci avec rbd que j'ai testé ici), alors sans redémarrer la VM, vous pouvez le faire:

(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

Et pouf, l'image est redimensionnée à la taille que vous avez spécifiée en MiB, et la machine virtuelle affichera la nouvelle taille.

J'ai testé ce qui suit sur qemu 2.7.0:

  • RBD de Ceph - fonctionne, rapide, grandit ou rétrécit
  • Fichier disque qcow2 - fonctionne, plus lentement, ne fait que croître
  • fichier de disque brut - fonctionne, rapide, grandit ou rétrécit
  • disque LVM brut - le moniteur semble normal mais n'a aucun effet
Peter
la source
Appréciez le tableau en bas. C'était super utile.
cloaked1