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

12

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

Richie Marquez
quelle

Antworten:

12

Von hier aus :

!!! Sichern Sie Ihr Disk-Image, bevor Sie Folgendes versuchen !!!

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

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

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

Wenn Sie die Größe eines Rohbilds ändern möchten, aber nicht möchten, dass es spärlich wird (Sie möchten tatsächlich diese Nullen in der Datei), führen Sie "dd if = / dev / zero von = image seek = 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 zum Ändern der Größe von qcow-Bildern mit einem Hex-Editor.

Das Ändern oder 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 Disk-Images im Rohformat mit dem Befehl 'copy' zu ändern. Sie können qemu-img verwenden, um Ihr vorhandenes Bild bei Bedarf in das Rohformat zu konvertieren. Wir verwenden ein temporäres Raw-Format-Disk-Image, das an das Ende Ihres vorhandenen Raw-Format-Disk-Images angehängt wird. Die Größe dieses temporären Bildes entspricht der Größe, um die das vorhandene Bild erweitert wird:

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

Sie sollten dann den folgenden Befehl ausführen: orig.img ist Ihr vorhandenes Rohformatbild, das Sie vergrößern möchten, temp.img ist die zuvor erstellte temporäre Bilddatei und new.img ist das resultierende resultierende Bild in der Größe:

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

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


Andere Links, die Sie möglicherweise überprüfen möchten, wenn die oben genannten nicht funktionieren:

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
quelle
17

Die Größe eines qcow2-Bildes kann so geändert werden, dass es mit einer neuen / aktuellen Version von qemu wächst. Zum Beispiel habe ich eine arch.qcow2, die 2G ist und ich möchte, dass es 50G wird, in diesem Fall tippe ich:

qemu-img resize arch.qcow2 50G

dann sagt mir qemu:

image resized

das ist es, ich habe das heute gerade gemacht. redhat hat tatsächlich ein paar nette docs auf qemu:

user1026169
quelle
3
Der vergrößerte Speicherplatz wird jedoch nicht zugewiesen. Sie müssen die Größe Ihrer virtuellen Festplatte mithilfe eines Partitionstools ändern.
Yamaneko
Hervorragend, Lösung!
RckLN
qemu-img Version 1.0 sagt mirqemu-img: This image format does not support resize
HDave
3

Kurze Antwort für 2017: Um zB 30 GB zu einem vorhandenen Rohbild hinzuzufügen, habe ich gerade diesen Befehl verwendet:

qemu-img resize nameofimg.img +30G

Dadurch werden Ihrer vorhandenen Bilddatei 30 GB hinzugefügt (es ist nicht erforderlich, eine neue Datei zu erstellen). Dann können Sie in Ihrer Gast-VM Ihre vorhandenen Partitionen, in Windows 10, z. B. mit "Datenträgerverwaltung", einfach erweitern.

Weitere Infos und Optionen:

man qemu-img

Siehe auch: qemu wiki> qemu-img

Feuerpol
quelle
1

Ja, du kannst. Und nein, es wird die Partitionen oder die Tabelle nicht ändern. Die Partitionstabelle muss möglicherweise aktualisiert werden, um die volle Festplattengröße zu erhalten. Wenn Sie sie vergrößern, wird am Ende nicht genutzter Speicherplatz frei sein. Sie werden eine Partition zerhacken und verlieren oder den letzten Teil ihrer Daten, wenn Sie sie verkleinern .

Wenn Sie sich im qemu-Monitor befinden (oder wahrscheinlich QMP 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

Außerdem wird die Größe des Images auf die in MiB angegebene Größe geändert, 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 - funktioniert, langsamer, wächst nur
  • Raw Disk File - funktioniert, schnell, wächst oder schrumpft
  • Raw-LVM-Festplatte - im Monitor sieht normal aus, hat jedoch keine Auswirkung
Peter
quelle
Schätzen Sie die Tabelle unten. Das war super hilfreich.
getarnt1