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

So ändern Sie den Standardspeicherort von KVM Libvirt

Diese Anleitung erklärt, was Speicherpools und Volumes in Libvirt sind und wie man den KVM-Standardspeicherpoolspeicherort von libvirt mit Virsh ändert Programm, Virt-Manager und Cockpit unter Linux.

Speicherpools und Volumes in Libvirt

Libvirt bietet Speicherverwaltung auf einem KVM-Hostsystem über Speicherpools und Volumes.

Ein Speicherpool ist eine Speichermenge, die auf dem KVM-Host zur Verwendung durch die virtuellen Maschinen zugewiesen wird. Ein Speicherpool wird in Speichervolumes unterteilt und den VMs als Blockgeräte zugewiesen.

Mit anderen Worten, ein Speicherpool ist eine Speicherressource auf einem KVM-Hostsystem, die zum Speichern von Volumes verwendet werden kann. Und das Speichervolume ist ein Speichergerät, das einer virtuellen Maschine zugewiesen werden kann.

Ein Speichervolume kann ein Blockgerät sein, beispielsweise eine Partition, ein logisches Volume oder eine Datei. Die virtuellen Festplatten, CD-/DVD-/Diskettenlaufwerke und ISO-Images, die an die Gastcomputer angehängt sind, sind Beispiele für Speichervolumes.

Sie können kein Speichervolume ohne Speicherpool haben. Zuerst müssen Sie einen Speicherpool erstellen und dann die Speichervolumes innerhalb des Pools erstellen.

Standardmäßig werden alle mit libvirt erstellten virtuellen Maschinen unter /var/lib/libvirt/images/ Lage. Dies ist der Standardspeicherpool für Libvirt-VM-Images.

Arten von Speicherpools

Ein Speicherpool kann einer der folgenden Typen sein:

  1. Verzeichnispool – Verwenden Sie ein Verzeichnis als Pool zum Hosten von Bilddateien. Bei den Dateien kann es sich um einen der gültigen Volume-Formattypen wie Raw, qcow, qcow2, dmg, vmdk, vpc oder ISO-Images handeln.
  2. Dateisystem-Pool - Verwenden Sie ein Blockgerät (z. B. Partition oder LVM-Gruppe) als Pool anstelle eines Verwendungsverzeichnisses auf einem vorhandenen gemounteten Dateisystem.
  3. Netzwerk-Dateisystem-Pool – Verwenden Sie ein Netzwerk-Dateisystem (z. B. cifs , glusterfs , nfs etc.) als Pool zum Speichern von Speichervolumes. Anstelle eines Verzeichnisses oder eines Blockgeräts erfordert es einen Netzwerkhost und den Pfad eines freigegebenen Verzeichnisses.
  4. Logischer Volume-Pool – Verwenden Sie eine LVM-Volumengruppe als Pool zum Speichern von Volumes.
  5. Festplattenpool – Verwenden Sie eine physische Festplatte als Pool. Die Volumes können durch Hinzufügen von Partitionen zur Festplatte erstellt werden.
  6. iSCSI-Pool – Verwenden Sie ein iSCSI-Ziel zum Speichern von Volumes. Alle Volumes sollten auf dem iSCSI-Server vorab zugewiesen werden.
  7. Direkter iSCSI-Pool – Dies ist eine Variante des iSCSI-Pools. Anstelle von iscsiadm wird libiscsi verwendet . Es erfordert einen Host, einen Pfad, der der Ziel-IQN ist, und einen Initiator-IQN.
  8. SCSI-Pool - Verwenden Sie einen SCSI-Host-Bus-Adapter fast genauso wie ein iSCSI-Ziel.
  9. Multipath-Pool - Derzeit wird Multipath nicht unterstützt.
  10. RBD-Pool - Dieser Speichertreiber stellt einen Pool bereit, der alle RBD-Images in einem RADOS-Pool enthält. RBD (RADOS Block Device) ist Teil des verteilten Speicherprojekts von Ceph.
  11. Sheepdog-Pool – Verwenden Sie den Sheepdog-Cluster als Pool zum Speichern von Volumes.
  12. Gluster-Pool – Verwenden Sie das verteilte Gluster-Dateisystem als Pool.
  13. ZFS-Pool – ZFS-Dateisystem als Pool verwenden.
  14. Vstorage-Pool – Verwenden Sie den verteilten softwaredefinierten Speicher von Virtuozzo als Pool.

Für die Zwecke dieses Leitfadens verwenden wir den Directory pool .

1. Standardspeicherort für KVM Libvirt ändern

Wie bereits erwähnt, werden alle KVM/Libvirt-Images in /var/lib/libvirt/images/ gespeichert Standort standardmäßig. Da sich dieser Speicherort im rootfs befindet Partition, möchten Sie sie vielleicht an einen anderen Ort verschieben, zum Beispiel $HOME Verzeichnis.

Wir können den Standardspeicherort von KVM Libvirt VM-Images mit virsh ändern Kommandozeilenprogramm und sein grafisches Frontend namens Virt-manager , und auch Cockpit Webkonsole.

Zuerst werden wir sehen, wie man den Standardspeicherpoolpfad von Libvirt mit virsh ändert Programm.

1.1. Ändern Sie den standardmäßigen Speicherpoolspeicherort von KVM Libvirt mit dem Programm virsh

1.1.1. Melden Sie sich bei Ihrem KVM-Hostsystem an und schalten Sie alle laufenden Gäste aus.

Um die Liste der ausgeführten VMs zu finden, tun Sie einfach:

$ virsh list --all

Herunterfahren, wenn VMs ausgeführt werden.

$ virsh shutdown

1.1.2. Listen Sie alle konfigurierten Speicherpools auf Ihrem KVM-Hostcomputer auf:

$ virsh pool-list 

Beispielausgabe:

 Name      State    Autostart
 default   active   no

Wie Sie sehen können, habe ich nur einen Speicherpool, der default ist . Es wird automatisch erstellt, wenn wir kvm/libvirt installieren .

1.1.3. Lassen Sie uns die Details des Standardspeicherpools mit dem Befehl anzeigen:

$ virsh pool-info default 

Beispielausgabe:

 Name:           default
 UUID:           76f47a3c-7656-4c34-9ab5-c87e5136d532
 State:          running
 Persistent:     yes
 Autostart:      no
 Capacity:       369.22 GiB
 Allocation:     65.60 GiB
 Available:      303.62 GiB

Die obige Ausgabe listet die Details wie Name des Speicherpools, UUID, Status, Persistent, Autostart, Kapazität, zugewiesenen Speicherplatz des Speicherpools und den verbleibenden verfügbaren Speicherplatz auf.

Da wir den Pfad des Speicherpools ändern werden, müssen wir ihn auch finden.

1.1.4. Um den Pfad des Standardspeicherpools anzuzeigen, verwenden wir grep Befehl mit virsh wie unten:

$ virsh pool-dumpxml default | grep -i path

Beispielausgabe:

<path>/var/lib/libvirt/images</path>

Wie Sie in der obigen Ausgabe sehen, ist der Standardspeicherpool /var/lib/libvirt/images/ . Wir werden es in den folgenden Schritten ändern.

1.1.5. Mit virsh alle vorhandenen VM-Images auflisten, die im Standardspeicherpool gespeichert sind wie unten:

$ virsh vol-list default | grep "/var/lib/libvirt/images/"

Beispielausgabe:

archlinux.img   /var/lib/libvirt/images/archlinux.img

Ich habe ein Arch Linux-VM-Image im Standardspeicherpool.

1.1.6. Stoppen Sie den Standardspeicherpool und definieren Sie ihn mit dem Befehl:

$ virsh pool-destroy default
$ virsh pool-undefine default

1.1.7. Bearbeiten Sie den Standardspeicherpool mit dem Befehl:

$ virsh pool-edit default 

Dadurch wird die XML-Datei der VM in Ihrem Standard-Editor geöffnet.

Suchen Sie die Zeile mit der Aufschrift "<path>/var/lib/libvirt/images</path>" unter target Direktive und ändern Sie sie in einen neuen Pfad Ihrer Wahl.

In meinem Fall habe ich den <path> geändert -Element aus /var/lib/libvirt/images nach /home/sk/.local/share/libvirt/images .

<pool type='dir'>
  <name>default</name>
  <uuid>76f47a3c-7656-4c34-9ab5-c87e5136d532</uuid>
  <capacity unit='bytes'>396452147200</capacity>
  <allocation unit='bytes'>71178977280</allocation>
  <available unit='bytes'>325273169920</available>
  <source>
  </source>
  <target>
    <path>/home/sk/.local/share/libvirt/images</path>
    <permissions>
      <mode>0755</mode>
      <owner>1000</owner>
      <group>1000</group>
      <label>unconfined_u:object_r:svirt_home_t:s0</label>
    </permissions>
  </target>
</pool>

Stellen Sie einfach sicher, dass der neue Pfad vorhanden ist. Wenn es existiert, erstellen Sie es einfach und weisen Sie dem neuen Pfadverzeichnis ausreichende Berechtigungen zu. Speichern Sie die Datei und schließen Sie sie.

TIPP:

Wenn aus irgendeinem Grund kein Standardspeicherpool vorhanden ist, können Sie einen wie folgt erstellen:

$ virsh pool-define-as --name default --type dir --target /home/sk/.local/share/libvirt/images/

Ersetzen Sie den Speicherpfad durch Ihren eigenen.

1.1.8. Starten Sie schließlich den Standardspeicherpool:

$ virsh pool-start default

1.1.9. Legen Sie den Speicherpool so fest, dass er beim Systemstart automatisch gestartet wird:

$ virsh pool-autostart default

1.1.10. Überprüfen Sie mit folgendem Befehl, ob der Pfad des libvirt-Speicherpools geändert wurde oder nicht:

$ virsh pool-dumpxml default | grep -i path

Sie sollten jetzt den neuen Pfad sehen.

     /home/sk/.local/share/libvirt/images

Von nun an werden die virtuellen Bilder im neuen Speicherpool gespeichert.

1.1.11. Überprüfen Sie den Status des Speicherpools:

$ virsh pool-list 
 Name      State    Autostart
-------------------------------
 default   active   yes

1.1.12. Starten Sie den libvirtd-Dienst neu:

$ sudo systemctl restart libvirtd

1.1.13. Wir müssen noch eine letzte Sache erledigen. Kopieren Sie alle VM-Images vom alten Speicherpfad in den neuen:

$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/

Alles erledigt!

So ändern wir den Standardspeicherpoolspeicherort von KVM Libivrt über die Befehlszeile mit Virsh in einen neuen Programm. Wie Sie sehen können, ist das Ändern des Standardspeicherpfads für KVM/Libvirt-Gäste ziemlich einfach!

Sehen wir uns nun an, wie der Standardspeicherpoolpfad von Libvirt mithilfe einer grafischen Anwendung namens Virt-manager geändert wird .

1.2. Ändern Sie den Standardspeicherort von KVM Libvirt mit Virt-manager

Virt-Manager , kurz für Virtual Machine Manager, ist eine Anwendung mit grafischer Benutzeroberfläche, die zum Verwalten virtueller Maschinen über libvirt verwendet wird . Mit anderen Worten, Virt-Manager ist ein reines grafisches Frontend für libvirt .

1.2.1. Öffnen Sie die Virt-Manager-Anwendung. Klicken Sie mit der rechten Maustaste auf QEMU/KVM und klicken Sie auf Details Option.

Sie können auch auf Bearbeiten -> Verbindungsdetails klicken aus der Virt-Manager-Oberfläche.

1.2.2. Unter Speicher Im Abschnitt sehen Sie den Standardspeicherort des Speicherpools.

1.2.3. Klicken Sie auf Pool stoppen und dann Pool löschen Optionen im unteren linken Bereich.

Dadurch wird der Standardpool deaktiviert und gelöscht.

1.2.4. Klicken Sie auf das Plus (+) Melden Sie sich unten links an, um einen neuen Speicherpool zur Verwendung durch die virtuellen Maschinen zu erstellen.

Geben Sie den Namen für den Speicherpool ein (z. B. default in meinem Fall). Wählen Sie die Art des Pools. In unserem Fall habe ich Dateisystemverzeichnis ausgewählt . Geben Sie den Zielspeicherort an und klicken Sie auf Fertig stellen.

1.2.5. Jetzt ist der neue Speicher aktiv. Überprüfen Sie den Autostart Box, um den neuen Speicherpool beim Systemstart automatisch zu starten.

1.2.6. Verschieben Sie alle VM-Images aus dem alten Speicherverzeichnis in das neue.

$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/

1.2.7. Starten Sie abschließend den libvirtd-Dienst neu:

$ sudo systemctl restart libvirtd

1.3. Ändern Sie den Standardspeicherort von KVM Libvirt mit Cockpit

Cockpit ist ein kostenloses webbasiertes Serververwaltungstool zur Überwachung und Verwaltung von Linux-Servern über einen Webbrowser.

1.3.1 Öffnen Sie Ihren Webbrowser und melden Sie sich bei der Cockpit-Konsole an, indem Sie zu http://localhost:9090 navigieren oder http://IP-Adresse:9090 aus der Adressleiste.

1.3.2. Klicken Sie auf Virtuelle Maschinen Registerkarte im linken Bereich. Klicken Sie rechts auf Speicherpool Option.

1.3.3. Unter dem Abschnitt Speicherpools sehen Sie den Standardspeicherpool. Klicken Sie auf den kleinen Pfeil, um die Registerkarte Speicherpools zu erweitern, und klicken Sie auf Deaktivieren und Löschen Schaltflächen.

Hinweis: Da ich den Standardspeicherort bereits geändert habe, zeigt es den neuen Pfad an. In Ihrem System wird der alte Standardpfad angezeigt, d. h. /var/lib/libvirt/images .

1.3.4. Geben Sie den Namen, den Typ und den Zielpfad des Speicherpools ein und klicken Sie auf Erstellen . Stellen Sie sicher, dass das Kontrollkästchen Startup aktiviert ist.

1.3.5. Klicken Sie auf Aktivieren Schaltfläche, um den Pool zu starten.

1.3.6. Verschieben Sie alle VM-Images aus dem alten Speicherverzeichnis in das neue.

$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/

1.3.7. Starten Sie den libvirtd-Dienst neu:

$ sudo systemctl restart libvirtd

Fehlerbehebung

Nach dem Ändern des Speicherpoolpfads wird beim Starten einer VM wahrscheinlich der folgende Fehler auftreten:

Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied.

Das liegt daran, dass qemu Der Benutzer hat möglicherweise keine Leseberechtigung für das Speicherverzeichnis. Um das Problem zu beheben, verwenden Sie den folgenden Link:

  • [Gelöst] Zugriff auf Speicherdatei nicht möglich, Zugriff verweigert Fehler in KVM Libvirt

Schlussfolgerung

In diesem Leitfaden haben wir ein wichtiges KVM/Libvirt-Thema besprochen – Speicherpools . Wir haben gelernt, was Speicherpools und Volumes sind, und dann, wie man den Standardspeicherpoolspeicherort von kvm libvirt mit drei Programmen ändert, nämlich VIrsh, Virt-manager und Cockpit. Ich hoffe, Sie finden das nützlich.


Linux
  1. Konfigurieren Sie den standardmäßigen virtuellen KVM-Speicher auf Redhat Linux

  2. So ändern Sie das standardmäßige Apache-Verzeichnis „DocumentRoot“ in Linux

  3. So ändern Sie die Standard-Shell in Linux

  4. Wie erstelle ich ein Duplikat einer KVM/libvirt/virt-manager VM?

  5. Wie kann ich die Standardgruppe eines Benutzers in Linux ändern?

So verwenden Sie Vagrant mit dem Libvirt KVM-Anbieter

So ändern Sie die Standard-Sudo-Protokolldatei in Linux

So richten Sie einen ZFS-Speicherpool unter Ubuntu ein

So ändern Sie die Standard-Shell im Linux-System

So verwalten Sie lokalen Speicher mit Stratis | Roter Hut

So ändern Sie die Standardeinstellungen für Drucken in Datei...