GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

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:

  1. 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.

  1. 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

  1. 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.


Linux
  1. Überprüfen Sie den belegten Speicherplatz unter Linux mit du

  2. Linux DD-Befehl - 15 Beispiele mit allen Optionen

  3. Fehler beim Klonen der Festplatte mit Cat?

  4. Ist es möglich, Tabs als Tabs mit der Maus in Urxvt auszuwählen?

  5. Ansible:Ist es möglich, die Größe des ext4-Dateisystems zu ändern?

Überprüfen Sie den freien Speicherplatz in Linux mit ncdu

So installieren Sie vyOS RouterOS mit KVM

So klonen Sie ein verschlüsseltes Disk-Image mit Clonezilla

So verwalten Sie virtuelle KVM-Maschinen mit Virt-Manager

Ist es möglich, LINQPad mit Mono (Mac) auszuführen?

Ist es möglich, einen Symlink mit einem Texteditor zu bearbeiten?