Ist es möglich, die Größe eines QEMU-Festplattenabbilds zu ändern?

32420
Richie Marquez

Wie der Titel sagt: Ist es möglich, ein QEMU-Festplatten-Image in Linux zu skalieren? Und wenn ja, was passiert mit den Partitionen darin? Werden sie auch automatisch in der Größe geändert (zweifelhaft) oder gibt es nur einen neuen Block ungenutzten Speicherplatzes, der ihnen folgt?

8

4 Antworten auf die Frage

12
fretje

Von hier :

!!! Sichern Sie Ihr Disketten-Image, bevor Sie das unten stehende versuchen !!!

Wenn Sie ein spärliches Rohbild verwenden, dann tun Sie dies

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

Dabei ist hdd.img das Rohformat, das Sie ändern möchten, und N ist die neue Größe, die das Bild haben soll, in Megabytes. Um die Einheiten von N zu ändern, ändern Sie obs in etwas anderes, beispielsweise 1 GB für Einheiten in Gigabyte (1000x1000x1000).

Wenn Sie die Größe eines Rohbilds ändern möchten, es jedoch nicht spärlich werden soll (Sie möchten diese Nullen tatsächlich in der Datei), führen Sie "dd if = / dev / zero von = Bild suchen = S count = NS obs = 1" aus. Stattdessen ist N die neue Größe und S die alte Größe (in Bytes).

Wenn Sie die Größe eines qcow2-Images ändern möchten, wird dies noch nicht unterstützt.

Diese E-Mail zeigt einige Experimente mit dem Ändern der Größe von Qcow-Bildern mit einem Hex-Editor.

Das Ändern der Größe oder das Vergrößern von Bildern in anderen Formaten (VMware, Bochs, Cow oder Cloop) wird nach meinem besten Wissen nicht unterstützt.

Auf einem Windows-Host ist es möglich, die Größe eines Festplatten-Image im Raw-Format mithilfe des Befehls "Kopieren" zu ändern. Sie können qemu-img verwenden, um Ihr vorhandenes Bild bei Bedarf in ein Rohformat zu konvertieren. Wir verwenden ein temporäres Raw-Image-Image, das an das Ende Ihres vorhandenen Raw-Image-Image angehängt wird. Die Größe dieses temporären Bildes ist die Größe, um die das vorhandene Bild erweitert wird:

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

Sie sollten dann den folgenden Befehl ausgeben - orig.img ist Ihr vorhandenes Bild im Rohformat, das Sie vergrößern möchten, temp.img ist die zuvor erstellte temporäre Bilddatei, und new.img ist das resultierende Bild, dessen Größe geändert wurde:

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

Sie müssen dann die vorhandenen Partitionen und Dateisysteme im neuen Image neu partitionieren und deren Größe ändern. Eine Methode dafür ist das Booten von gparted in QEMU mit dem gparted livecd-iso und dem neuen Disk-Image.


Andere Links, die Sie überprüfen können, wenn das oben genannte nicht funktioniert:

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

12
user1026169

A qcow2 image can be resized to grow with a new/current version of qemu. For example, i have a arch.qcow2 thats 2G and I want it to become 50G, in that case i type:

qemu-img resize arch.qcow2 50G 

then qemu tells me:

image resized 

thats it, I just did this today. redhat actually has some nice docs on qemu:

Der vergrößerte Speicherplatz wird jedoch nicht zugewiesen. Sie müssen die Größe Ihrer virtuellen Festplatte mithilfe eines Partitionierungsprogramms ändern. Yamaneko vor 11 Jahren 3
Excelent, Lösung! RckLN vor 10 Jahren 0
qemu-img Version 1.0 sagt mir "qemu-img: Dieses Bildformat unterstützt keine Größenänderung" HDave vor 10 Jahren 0
2
firepol

Kurze Antwort für 2017: Um einem vorhandenen RAW-Image beispielsweise 30 GB hinzuzufügen, habe ich gerade diesen Befehl verwendet:

qemu-img resize nameofimg.img +30G 

Dadurch werden Ihrer vorhandenen Image-Datei 30 GB hinzugefügt (Sie müssen keine neue Datei erstellen). Dann können Sie in Ihrer Gast-VM Ihre vorhandenen Partitionen erweitern, in Windows 10 zB mit "Disk Management", einfach.

Weitere Infos und Optionen:

man qemu-img 

Siehe auch: qemu wiki> qemu-img

0
Peter

Ja, du kannst. Und nein, die Partitionen oder die Tabelle werden nicht geändert. Möglicherweise muss die Partitionstabelle auf die volle Festplattengröße aktualisiert werden. Wenn Sie sie vergrößern, wird am Ende leerer ungenutzter Speicherplatz zur Verfügung stehen, und Sie werden eine Partition hacken und sie oder den letzten Teil ihrer Daten verlieren, wenn Sie sie verkleinern .

Wenn Sie sich im Qemu-Monitor befinden (oder QMP wahrscheinlich verwenden) und die Schnittstelle dies unterstützt (z. B. virtio-scsi-pci mit rbd, das ich hier getestet habe), können Sie dies ohne Neustart der VM tun:

(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 

Und puff, das Bild wird auf die Größe angepasst, die Sie in MiB angegeben haben, und die VM zeigt die neue Größe an.

Ich habe folgendes auf qemu 2.7.0 getestet:

  • RBD von Ceph - funktioniert schnell, wächst oder schrumpft
  • qcow2 disk file - arbeitet langsamer, wächst nur
  • RAW-Disk-Datei - funktioniert schnell, wächst oder schrumpft
  • Der unformatierte LVM-Festplattenmonitor sieht normal aus, hat jedoch keine Auswirkungen