Ich bin mir nicht ganz sicher, wie ich diese Frage formulieren soll (daher der schlechte Titel). Lassen Sie mich ein Beispiel dafür geben, was ich versuche.
Auf meinem (alten) Xen-Host kann ich jedem Gast LVM-Dateisysteme direkt präsentieren. Diese Dateisysteme werden tatsächlich auf dem Host erstellt und formatiert und direkt weitergeleitet. Beispiel: Für einen meiner Hosts, der eine separate tmp- und Swap-Partition verwendet, definiere ich den Speicher folgendermaßen:
disk = [
'phy: / dev / vg1 / guest1-swap, sda1, w',
'phy: / dev / vg1 / guest1-disk, sda2, w',
'phy: / dev / vg1 / guest1-tmp, sda3 , w ',
]
Guest1-swap wird also als Swap-Partition formatiert, guest1-disk und guest1-tmp werden mit ext4 formatiert, und aus der Sicht des Gasts werden sie einfach als drei formatierte Partitionen unter / dev / sda angezeigt.
(Das mag nach viel Arbeit klingen, aber es gibt Provisioning-Skripte, wie die fantastischen Xen-Tools , die so ziemlich alles automatisierten).
Dies bietet einige wirklich nützliche Funktionen, von denen ich zwei besonders für KVM herausfinden möchte:
Hängen Sie die Gast-Dateisysteme vom Host-Betriebssystem ein . Ich kann jederzeit ein schreibgeschütztes Mounten eines Gast-Dateisystems durchführen, auch wenn der Gast ausgeführt wird. Dies hat den zusätzlichen Vorteil, dass ich LVM-Snapshots aller vorhandenen Volumes erstellen kann, während der Gast ausgeführt wird. Auf diese Weise kann ich alle meine Gäste während des Betriebs zentral vom Host sichern.
Größenänderung des Online-Volumes . Da die Volumes Standard-Linux-Dateisysteme enthalten, kann ich eine Kombination aus lvextend und resize2fs verwenden, um meine Gast-Dateisysteme wieder zu vergrößern, während sie online sind.
Ich richte gerade einen KVM-Host ein, der den Xen-Host ersetzt. Ähnlich wie beim Xen-Setup nutze ich LVM, um direkten Dateisystemzugriff zu ermöglichen, aber KVM / qemu verhält sich anders, da immer eine Image-Datei für die Gäste erstellt wird, auch auf dem LVM-Volume. Aus der Sicht des Gasts wird dies als nicht partitionierte Festplatte angesehen. Es ist Sache des Gasts, eine Partitionsbezeichnung anzuwenden und dann die Partitionen und Dateisysteme zu erstellen.
Aus Sicht der Gäste ist das in Ordnung, aber aus Sicht der Server / Verwaltung scheint es weitaus weniger flexibel zu sein als das von mir beschriebene Xen-Setup. Ich bin noch neu in KVM, daher kann mir (hoffentlich) etwas fehlen.
Dieses Problem trat auf, als ich versuchte, meine frühere Sicherungslösung auf dem KVM-Host erneut zu implementieren, und der Befehl mount wurde blockiert, als ich versuchte, eines der Dateisysteme des Gasts bereitzustellen. Das anzusprechen ist mein aktuelles Anliegen, aber es hat mich auch über die Größenänderung beunruhigt, da ich mir sicher bin, dass dieses Problem auch irgendwann auftauchen wird.
Also, hier sind meine Fragen:
Gibt es eine Möglichkeit, dass kvm / qemu LVM-Volume-Dateisysteme direkt verwendet, wie ich es für mein Xen-Setup beschrieben habe? Ich verwende libvirt für die Verwaltung, wenn das einen Unterschied macht.
Wenn nicht, was kann ich tun, um ähnliche Bereitstellungs- / Sicherungsfunktionen unter KVM zu erhalten? Ich habe Diskussionen über die Verwendung von libguestfs mit FUSE gesehen, aber ist das wirklich die beste Option? Ich würde es vorziehen, wenn möglich bei einem nativen Dateisystem-Mount zu bleiben.
Ist es auch möglich, die Größe eines Online-Dateisystems unter KVM zu ändern? Ich habe mehrere Diskussionen / Anleitungen dazu gefunden, aber die Antworten scheinen überall zu sein, ohne klare und definitiv unkomplizierte Lösungen.
Entschuldigung für den langen Beitrag, wollte nur sicherstellen, dass es klar war. Bitte teilen Sie mir mit, ob ich weitere hilfreiche Informationen zur Verfügung stellen kann. Freue mich auf die Diskussion. :-)
quelle
Antworten:
virt-*
Tools) kann den Zugriff auf Gastdateisysteme auf eine sauberere Weise ermöglichen als alles, was Sie direkt auf dem Host erneut bereitstellen, obwohl beides möglich ist.resize2fs
funktioniert in einer VM genauso gut wie auf physischer Hardware. Das einzige Problem ist, dass der Gast die Größenänderungen erneut erkennt. Versuchen Sievirt-resize
als Standard - Tool, sondernlvresize
undqemu-img
auch leicht verwendet werden kann (wenn auch im Offline - Modus, einen Gast - Neustart erfordern in der Regel).Ich denke,
lvresize
mitresize2fs
wird tatsächlich ohne einen Neustart des Gastes funktionieren, aber ich habe es noch nicht versuchtquelle
virsh
aber einfach genug istvirt-manager
. Die seriöseren Systeme wie RHEV / oVirt verwenden LVM tatsächlich die ganze Zeit für FC / iSCSI-basierten Speicherattach-disk
, es dynamisch zu verbinden, aber das ist nicht permanent und ich kann es nicht zum Laufen bringen für /. Können Sie auf eine Dokumentation dazu verweisen oder konkrete Hinweise geben? Vielen Dank!Ich verwende qemu-kvm + libvirt mit genau der Konfiguration, nach der Sie fragen, aus den von Ihnen angegebenen Gründen, aber zusätzlich, weil ich ohne die Dateisystemschicht des KVM-Hosts eine viel bessere Leistung erhalte . Wenn Sie die VG in virt-manager als 'Speicherpool' hinzufügen, können Sie solche VMs mithilfe des benutzerfreundlichen Assistenten erstellen. (Aber ich schreibe das XML heutzutage nur von Hand unter Verwendung einer vorhandenen VM als Vorlage).
Hier ist die bereinigte Ausgabe von 'virsh dumpxml' für einen meiner Gäste:
Ein anderer Gedanke (nicht relevant für Ihre Frage, aber er könnte helfen): Wenn Sie können, stellen Sie sicher, dass Sie die Treiber "paravirtualisiert" für Netzwerk, Block, Zufall, Uhr usw. verwenden - sie sind bedeutend schneller als die vollständig virtualisierten. Dies ist das "model = virtio" Zeug oben. Sie müssen Treibermodule in den Kernel des Hosts laden, z. B. virtio_net.
Hier ist die Ausgabe von 'virsh pool-dumpxml vg1':
quelle
virsh pool-dumpxml mypool
Ich kenne keine Möglichkeit, das von Ihnen beschriebene Xen-Verhalten exakt zu replizieren. Sie können
kpartx
jedoch die Partitionen in einer LV, die ein Image auf der gesamten Festplatte enthält, als Blockgeräte auf dem Host bereitstellen, die Sie dann bereitstellen können usw.quelle
Die Antwort auf meine eigene Frage zu diesem Problem finden Sie unter KVM-Booten von einem Image-Kernel und einer vorhandenen Partition . Kurz gesagt, es ist ziemlich einfach, virt-install zu veranlassen, eine Konfiguration dafür zu erstellen, wenn man eine kleine Modifikation von guest / etc / fstab vornimmt.
quelle