Wie kann die Größe eines KVM-Images einer virtuellen Maschine verringert werden?

11

Wie können Sie die Größe einer virtuellen KVM-Festplatte verringern oder verkleinern?

Ich habe eine virtuelle Festplatte mit 500 GB zugewiesen (gespeichert unter /var/lib/libvirt/images/vm1.img) und finde diesen Overkill. Daher möchte ich jetzt einen Teil dieses Speicherplatzes für die Verwendung mit anderen virtuellen Festplatten freigeben Maschinen. Es scheint viele Antworten zu geben, wie der Bildspeicher erhöht, aber nicht verringert werden kann. Ich habe das virt-resize- Tool gefunden, aber es scheint nur mit unformatierten Festplattenpartitionen zu funktionieren, nicht mit Festplattenabbildern.

Bearbeiten: Ich verwende ein LVM mit einer Ext4-formatierten Partition.

Bearbeiten: GParted-Screenshot mit meinem LVM-Paritionslayout. Ich muss viel mehr tun, als nur die Größe des Dateisystems zu ändern. Ich kenne keinen sicheren Weg, um die Größe eines LVM zu ändern. Und bitte sag mir nicht, ich soll es benutzen pvresize. Trotz seines Namens wird die Größenänderung von LVMs nicht unterstützt.

GParted Screenshot

Ich habe es versucht sudo pvresize /dev/vda5, aber es heißt nur, physical volume "/dev/vda5" changedaber es reduziert die Größe nicht wirklich.

Ich habe versucht parted, die Partitionsgröße manuell einzustellen (sehr gefährlich), aber dabei wird print allnur der Fehler "/ dev / sr0 unerkannte Festplattenbezeichnung" angezeigt.

Bearbeiten: Durch Befolgen dieser Anweisungen konnte ich sowohl meine logischen als auch meine physischen Volumes erfolgreich verkleinern (obwohl ich daran denken musste, lvm vor und nach bestimmten Befehlen zu aktivieren und zu deaktivieren, die in den Anweisungen weggelassen wurden.

Jetzt zeigt GParted 250G nicht zugewiesenen freien Speicherplatz an. Wie entferne ich dies aus dem KVM-Image und gebe es an den zugrunde liegenden Hypervisor zurück?

Cerin
quelle
Müssen Sie die virtuelle Festplatte tatsächlich verkleinern, oder würde eine Komprimierung ausreichen? Letzteres könnte man mit so etwas machen qemu-img -O qcow2 vm1.img vm1-compact.qcow2.
Ansgar Wiechers
@AnsgarWiechers, Ja, ich muss die Festplatte noch verwenden, und ich habe viel mehr Speicherplatz zugewiesen, als ich jemals benötigen werde.
Cerin

Antworten:

10

Vielen Dank an diejenigen, die gepostet haben, aber Ihre Antworten waren viel zu vage, um hilfreich zu sein.

Nach stundenlangem Googeln fand ich endlich eine Anleitung ( Link redigiert ) mit schrittweisen Anweisungen zum Verkleinern meines Dateisystems, meiner logischen und physischen Volumes. Der Trick, den die meisten Hilfslinien übersehen, ist die Notwendigkeit, die physischen Partitionen tatsächlich zu löschen und sie mit der richtigen Größe neu zu erstellen, da parted die Größe von lvm-Partitionen nicht ändern kann.

Ich habe dann diese Dokumentation auf qemu-img gefunden, in der erklärt wird, wie ein rohformatiertes Image einer virtuellen Festplatte durch Ausführen verkleinert wird:

sudo qemu-img resize /var/lib/libvirt/images/myvm.img 255G
Cerin
quelle
qemu-img ist ein großartiges Werkzeug, wenn es um die Arbeit mit Disk-Images für kvm geht. 3 Jahre später scheint Ihr Link kaputt zu sein, hier die Handbuchseite von die.net linux.die.net/man/1/qemu-img
Louis Loudog Trottier
Und wenn jemand diese Bequemlichkeit wünscht und an einer .qcow2-VM festhält (nicht will), konvertieren Sie sie zuerst qemu-img convert -f qcow2 -O raw image.qcow2 image.imgund dann können Sie den obigen Befehl ausführen.
Oktober 1905
4

Was musst du machen,

  • Machen Sie ein Backup
  • Verkleinern der Dateisysteme * Führen Sie dies nicht auf einem Live-System durch. Ich empfehle die Verwendung einer Live-CD.
  • Erstellen Sie ein neues Disk-Image mit der gewünschten Größe.
  • Führen Sie ein Live-Betriebssystem aus, wobei die neuen und alten Images als (virtuelle) Festplatten (nicht gemountet) angehängt sind.
  • Erstellen Sie die neuen Partitionen in derselben Größe wie die Partitionen mit geänderter Größe auf der alten Festplatte
  • Verwenden Sie dd, um die Daten auf die neue Partition zu spiegeln.
  • Möglicherweise müssen Sie grub (2) löschen / neu generieren, um erfolgreich zu starten.

Dies kann sowohl über die GUI als auch über die CLI erreicht werden

Ressourcen

Werkzeuge

  • gparted (Link wegen Spam weggelassen, nicht genügend Wiederholungen)
daxroc
quelle
Der schwierige Teil ist "Verkleinern des Dateisystems". Ich verwende ein LVM, für das ich kein Tool gefunden habe, dessen Größe geändert werden kann. Nicht einmal eine GParted Live CD.
Cerin
Ich denke, das deckt es ab, ich habe es nicht benutzt, also melde bitte gut oder schlecht tcpdump.com/kb/os/linux/lvm-resizing-guide/shrink.html
daxroc
Es sind zwei Hauptpunkte zu beachten: 1) Führen Sie die Dinge in der richtigen Reihenfolge aus ( verkleinern Sie zuerst das Dateisystem, dann die Partition und dann die Festplatte). 2) Das Verfahren / die Tools zum Ändern der Größe eines Dateisystems hängen stark vom tatsächlichen Dateisystem ab (das das OP nicht offengelegt hat). Der Artikel @daxroc, der veröffentlicht wurde, funktioniert nicht für andere Dateisysteme als ext [234].
Ansgar Wiechers
@axroc, ich muss sowohl die logischen als auch die physischen Volumes reduzieren. Ihr Link behandelt nur die Reduzierung des logischen Volumens.
Cerin
einverstanden. Backup, neue Festplatte, Wiederherstellung ist am sichersten und einfachsten
dyasny
0

Das hat bei mir sehr gut funktioniert. Es komprimiert und verkleinert die 0 Blöcke im Disk-Image. Das Bild wird mit der Zeit erweitert, wenn es erneut überschrieben wird.

qemu-img convert -c -O qcow2 vmdisk.qcow2 vmdisk-comp.qcow2
Greg
quelle
-4

Ich empfehle, bevor Sie dies tun, eine vollständige Kopie des Disk-Images zu erstellen. Wenn alles kaputt ist, können Sie es einfach zurückkopieren, um von vorne zu beginnen.

Es gibt 3 Dinge, die Sie tun müssen:

1) Vergrößern Sie das Disk-Image. In Ihrem Gastgeber:

qemu-img Größe ändern foo.qcow2 + 32G

Jetzt kann Ihr Gast eine größere Festplatte sehen, hat aber immer noch alte Partitionen und Dateisysteme.

2) Vergrößern Sie die Partition im Disk-Image. Dazu müssen Sie eine LiveCD in Ihrem Gast starten, da Sie sich nicht mit einer gemounteten Partition anlegen können. Dies ist ziemlich kompliziert und wahrscheinlich der gefährlichste Teil. Es ist ziemlich viel hier zu kopieren, also werde ich stattdessen erst einmal verlinken. Sie möchten so etwas tun:

http://www.howtoforge.com/linux_resizing_ext3_partitions_p2

ODER 2b) Das Erstellen einer neuen Partition wäre einfacher (und sicherer), wenn Sie nur mehr Speicherplatz benötigen. Verwenden Sie fdisk oder cfdisk oder was auch immer Sie möchten - Sie sollten jetzt eine ganze Reihe von nicht zugewiesenem Speicherplatz auf Ihrer Gastdiskette sehen.

3) Wenn Sie die Größe Ihrer vorhandenen Partition geändert haben, vergrößern Sie das Dateisystem in der neuen größeren Partition (dies finden Sie in der oben verlinkten Anleitung). In Ihrem Gast:

Ankur Dholakiya
quelle
5
Er versucht, das Bild kleiner und nicht größer zu machen.
Michael Hampton