Ist eine Größenänderung der Online-Festplatte mit KVM möglich?


14

In einigen Projekten wird KVM für Linux-Virtualisierung evaluiert. Alles läuft soweit gut. Eine unserer Anforderungen ist jedoch die Möglichkeit, einem laufenden Gast Speicherplatz hinzuzufügen, ohne ihn neu zu starten oder offline zu schalten. Ist das mit KVM möglich?

Das einzige, was ich bisher gefunden habe (aber noch nicht getestet habe), ist die Fähigkeit, Festplatten in die Maschine zu stecken. Wenn ich diesen Weg gehe, könnte ich die neue Festplatte jederzeit einer LVM-Datenträgergruppe auf dem Gast hinzufügen und dann den ausgewählten logischen Datenträger erweitern. Der größte Nachteil dieses Ansatzes ist, dass im Laufe der Zeit Gäste mit einer variablen Anzahl virtueller Festplatten auftreten können. Der "echte" Festplattenspeicher wird dem Host über ein SAN zur Verfügung gestellt, sodass wir dem Host jederzeit mehr Speicherplatz hinzufügen können.


(Und "Ja", es ist möglich.)
Poige

Antworten:


4

Ich denke, Sie tun nicht das, was Sie erwähnt haben, wenn Sie es tun möchten, ohne die Maschine herunterzufahren.

Warum geben Sie den virtuellen Maschinen nicht einfach die LUNs direkt aus dem SAN und verwalten den Speicherplatz dort? Dies funktioniert besser, wenn Sie ohnehin Funktionen wie Live-Migration verwenden möchten.

KVM basiert auf QEMU, daher stammt die gesamte Unterstützung für das Bildformat aus diesem Projekt. Hier erfahren Sie, wie Sie die Größe der verschiedenen von Qemu / KVM unterstützten Formate ändern können . 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 von wirklich großem qcow2 oder einem anderen spärlichen Image-Format für die Laufwerke. So können Sie jeder Maschine ein kleines Laufwerk für das Betriebssystem und ein großes, spärliches Image für Daten unter LVM zuweisen. Dies würde zumindest die Anzahl der zu verwaltenden virtuellen Laufwerke / Images beibehalten. Diese Thin-Provisionierung könnte jedoch ein Problem darstellen, wenn Sie dies auf 1000 Computern ausführen und jeder Benutzer den freien Speicherplatz beansprucht, den er sieht.

XEN hat meiner Meinung nach derzeit die gleichen Einschränkungen.


Bei weiteren Überlegungen ist es wahrscheinlich der richtige Weg, den SAN-Speicher vom Gast selbst aus zu mounten. Und danke auch für die zusätzlichen Infos.
Eil

Thin Provisioning kann auch aufgrund von Fragmentierung kostspielig sein.
Wazoox

14

Ich weiß, dass das eine alte Frage ist, aber ich habe sie gefunden, als ich nach der Lösung gegoogelt habe, und hoffe, dass sie jemand anderem hilft.

Was heute ist möglich , die Festplatte auf der Maschine zu ändern. Ich habe hier einen Weg gefunden:

https://bugzilla.redhat.com/show_bug.cgi?id=648594

Die folgenden Schritte müssen ausgeführt werden:

  1. Ermitteln Sie den Dateinamen und den KVM-Gerätenamen der Festplatte, deren Größe Sie ändern möchten:

    root@vhstage02:/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 für uns interessante ist Scheibe. Sie sollten suchen sourceund aliasblockieren. Bei mir ist Dateiname test.imgund Aliasname virtio-disk0. Um diesen Namen zu erhalten, müssen Sie dem drive-Namen des QEMU-Laufwerks voranstellen .

  1. Jetzt ändern wir die Größe des Laufwerks mithilfe von 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 Laufwerk-Alias ​​hinzugefügt wurde. Das 100G ist die resultierende Größe des Laufwerks, das wir haben möchten

  1. Melden Sie sich an der Maschine an und überprüfen Sie, ob die tatsächliche Größe geändert wurde:

    root@test:~# 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 Partitionen ändern.


1
Vielen Dank, dass Sie zurückgekommen sind und diese Antwort hinzugefügt haben! Macht die Dinge viel einfacher als die alte Art, es zu tun.
Dave Sherohman

3

AFAIK, dies ist nicht möglich. Sie können neue Datenträgerabbilder hinzufügen. Sie weisen darauf hin, dass Sie einem LVM-Volume auch neue Abbilder hinzufügen können. Um jedoch die Größe eines aktiven, bootfähigen Datenträgerabbilds zu ändern, müssen Sie es schließen können nach unten und bearbeiten Sie die Partitionen.

Hier finden Sie eine gute Erklärung zum Erweitern eines Bildes. Obwohl das Herunterfahren erforderlich ist, könnten Sie wahrscheinlich nur ein paar Minuten Ausfallzeit haben, besonders wenn Sie die Option --nonsparse image vermeiden und die gparted-Festplatte in eine ISO-Datei konvertieren und im Voraus in Ihren KVM-Gast einbinden. Hoffe das hilft.


2
Das Problem hängt eigentlich nicht mit KVM zusammen. Unter Linux können Sie die Größe der Festplatte, von der Sie gebootet haben, einfach nicht ändern. Dies gilt auch für physische RAID-Arrays.
Wazoox

3

Es ist möglich, ein Linux-System während des Betriebs zwischen Festplatten zu verschieben. Die Einschränkung besteht darin, dass Sie keine Partitionen auf einem Datenträger ändern können, auf dem Partitionen verwendet werden.

Dazu muss sich Ihr Root-Dateisystem auf einem LVM befinden. Dies bedeutet häufig, dass Sie über ein separates Boot-Dateisystem verfügen müssen (dies ist jedoch nicht unbedingt erforderlich, es vereinfacht lediglich die Arbeit).

Nachdem Sie den neuen Datenträger angeschlossen haben, fügen Sie ihn mit vgextend zum LVM hinzu, verschieben die Rootfs mit pvmove auf den neuen Datenträger, erweitern mit lvextend und resize2fs das logische Volume bzw. das Dateisystem und entfernen den alten Datenträger mit vgreduce vom Volume Gruppe. Nach dem Entfernen kann das alte Volume vom Stromnetz getrennt werden.

Für den einfachen Fall haben Sie eine winzige Festplatte für das Boot-Dateisystem, die Sie nie berühren müssen. Aber wenn es von alleine ist, ist es einfach , es vom Computer zu trennen, ein neues einzustecken und die Bootdiskette neu zu erstellen, ohne das System anzuhalten. (nur nicht abstürzen, während du es tust)

Hinweis: resize2fs kann auch Dateisysteme verkleinern.


0

Nicht möglich atm, aber afaik es ist ein Feature in der Entwicklung. Sie können stattdessen eine Verbindung zu einem iSCSI-Ziel von der VM herstellen und den Speicherplatz auf diesem Ziel auf der SAN-Seite verwalten.


Sie haben die Frage nicht mit einer Antwort beantwortet, die er verwenden kann.
Mei

@ David: und was bringt dich dazu, das zu denken und meine Antwort sogar abzustimmen? Wie kann ich das Problem mit meiner Antwort nicht umgehen?
dyasny

Sie sagten "Nicht möglich atm ..." und erzählten ihm von einer Funktion, die im Moment nicht möglich ist. (Jetzt, fast zwei Jahre später, könnte es anders sein - aber diese Antwort sagt das nicht.)
Mei

1
Also hätte ich ihm vor zwei Jahren sagen sollen, dass es in zwei Jahren möglich sein wird? Sehe ich für dich wie ein Prophet aus? Damals befand sich das Hotplugging in der Entwicklung, und genau das habe ich gesagt. Dann bot ich einen anderen Ansatz an, um Speicher an die VM anzuhängen, der unabhängig vom gesamten QEMU-Featureset ist. Ich habe nie gesagt, dass dies der einzige Ansatz ist, aber es ist ein Weg.
dyasny

Ich verstehe jetzt ... Ich habe Ihre Antwort bearbeitet, um Ihre Absicht besser zu zeigen.
Mei
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.