Lösung 1:
Ich weiß, das ist eine alte Frage, aber ich habe sie beim Googeln nach der Lösung gefunden und hoffe, dass sie jemand anderem helfen kann.
Für heute ist es ist möglich, die Festplatte auf der Maschine zu ändern. Ich habe hier einen funktionierenden Weg gefunden:
https://bugzilla.redhat.com/show_bug.cgi?id=648594
Folgende Schritte müssen durchgeführt werden:
-
Finden Sie den Dateinamen und den KVM-Gerätenamen der Festplatte heraus, deren Größe Sie ändern möchten:
[email protected]:/data# virsh dumpxml test | xpath -e /domain/devices/disk Found 2 nodes in stdin: -- NODE -- <disk type="file" device="disk"> <driver name="qemu" type="qcow2" /> <source file="/data/test.img" /> <backingStore /> <target dev="vda" bus="virtio" /> <alias name="virtio-disk0" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" /> </disk> -- NODE -- <disk type="file" device="cdrom"> <driver name="qemu" type="raw" /> <source file="/data/images/debian-8.2.0-amd64-netinst.iso" /> <backingStore /> <target dev="hda" bus="ide" /> <readonly /> <alias name="ide0-1-1" /> <address type="drive" controller="0" bus="1" target="0" unit="1" /> </disk>
Das, was für uns interessant ist, ist die Festplatte. Sie sollten nach source
suchen und alias
Blöcke. Für mich ist der Dateiname test.img
und der Aliasname ist virtio-disk0
. Diesem Namen müssen Sie drive-
voranstellen um den Namen des qemu-Laufwerks zu erhalten.
-
Jetzt ändern wir tatsächlich die Größe des Laufwerks mit qemu monitor:
virsh qemu-monitor-command test block_resize drive-virtio-disk0 100G --hmp
Beachten Sie, dass der Dateiname ohne die Erweiterung .img verwendet wurde und das Laufwerk zum Alias der Festplatte hinzugefügt wurde. Die 100 G ist die resultierende Größe des Laufwerks, das wir haben möchten
-
Melden Sie sich an der Maschine an und prüfen Sie, ob die tatsächliche Größe geändert wurde:
[email protected]:~# fdisk -l Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x7e6e7f71 Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 499711 497664 243M 83 Linux /dev/vda2 501758 167770111 167268354 79.8G 5 Extended /dev/vda5 501760 167770111 167268352 79.8G 8e Linux LVM
Das ist es! Jetzt können Sie entweder neue Partitionen erstellen oder die Größe bestehender ändern.
Lösung 2:
AFAIK, das ist nicht möglich - Sie können neue Disk-Images hinzufügen, und wie Sie darauf hinweisen, können Sie auch neue Images zu einem LVM-Volume hinzufügen, aber um die Größe eines aktiven, bootfähigen Disk-Images zu ändern, müssen Sie es schließen können herunterfahren und die Partitionen bearbeiten.
Hier ist eine gute Erklärung für das Erweitern eines Bildes. Obwohl das Herunterfahren erforderlich ist, könnten Sie wahrscheinlich mit nur ein paar Minuten Ausfallzeit davonkommen, insbesondere wenn Sie die Option --nonsparse image vermeiden und die gparted-Festplatte zu einer ISO-Datei hinzufügen und Ihren KVM-Gast im Voraus einhängen. Hoffe das hilft.
Lösung 3:
Ich glaube, du steckst bei dem fest, was du erwähnt hast, wenn du es tun willst, ohne die Maschine herunterzufahren.
Warum geben Sie den virtuellen Maschinen nicht einfach LUNs direkt aus dem SAN und verwalten den Speicherplatz dort? Dies funktioniert besser, wenn Sie Funktionen wie die Live-Migration trotzdem nutzen möchten.
KVM basiert auf QEMU, daher stammt die gesamte Bildformatunterstützung aus diesem Projekt. Hier ist eine gute Anleitung zur Größenänderung der verschiedenen Formate, die Qemu/KVM unterstützt. Aber das Qemu-Forum wäre ein guter Ort, um diese Frage zu stellen, wenn Sie hier keine soliden Antworten erhalten.
Eine andere Option, die möglicherweise nicht ideal ist, ist die Verwendung eines wirklich großen qcow2- oder eines anderen Sparse-Image-Formats für die Laufwerke. Sie könnten also jeder Maschine ein kleines Laufwerk für das Betriebssystem und ein großes Sparse-Image für Daten unter LVM geben. Dies würde zumindest die Anzahl der virtuellen Laufwerke/Images beibehalten, die Sie verwalten müssen. Aber dieses Thin Provisioning könnte ein Problem sein, wenn Sie dies auf 1000 Maschinen tun und jeder Sie auf den freien Speicherplatz anspricht, den er sieht.
XEN hat meines Erachtens derzeit die gleichen Einschränkungen.
Lösung 4:
Es ist möglich, ein Linux-System zwischen Festplatten zu verschieben, während es läuft. Die Einschränkung besteht darin, dass Sie Partitionen nicht ändern können auf einer Festplatte mit Partitionen im Einsatz.
Dazu muss sich Ihr Root-Dateisystem auf einem LVM befinden, was oft bedeutet, dass Sie ein separates Boot-Dateisystem benötigen (dies ist jedoch nicht unbedingt erforderlich, es macht die Dinge nur einfacher)
Nachdem Sie die neue Festplatte angeschlossen haben, fügen Sie sie mit vgextend zum LVM hinzu, verwenden pvmove, um die rootfs auf die neue Festplatte zu verschieben, verwenden lvextend und resize2fs, um das logische Volume bzw. Dateisystem zu erweitern, und verwenden dann vgreduce, um die alte Festplatte aus dem Volume zu entfernen Gruppe. Sobald das alte Volume entfernt wurde, kann es entfernt werden.
Für den einfachen Fall haben Sie eine winzige Platte für das Boot-Dateisystem, die Sie nie anfassen müssen. Aber wenn es alleine ist, ist es einfach Um es zu unmounten, stecken Sie es aus, stecken Sie ein neues ein und erstellen Sie die Bootdiskette neu, ohne das System zu stoppen. (nur nicht abstürzen, während du es tust)
Hinweis:resize2fs kann auch Dateisysteme verkleinern.