Ich habe gerade einen glänzenden neuen KVM / libvirt-basierten virtuellen Maschinenhost erstellt, der 4 SATA II-Festplatten enthält und CentOS 5.5 x86_64 ausführt.
Ich habe beschlossen, Laufwerke virtueller Maschinen als logische Volumes in einer LVM-Volume-Gruppe zu erstellen, die als libvirt-Speicherpool verwaltet wird, anstatt wie üblich die Laufwerke als qcow-Images zu erstellen.
Ich kann mich nicht entscheiden, ob ich die logischen Volumes der virtuellen Maschine in der Volume-Gruppe des VM-Hosts oder in einer dedizierten Volume-Gruppe erstellen soll.
Welche Methode soll ich wählen und warum?
Methode 1: Verwenden Sie die Volume-Gruppe des VM-Hosts
Implementierung:
- kleines RAID1
md0
mit dem/boot
Dateisystem - großer RAID10
md1
belegt den verbleibenden Speicherplatz, der eine LVM-Datenträgergruppe enthältvghost
.vghost
Enthält das Root-Dateisystem und die Swap-Partition des VM-Hosts - Erstellen Sie die Festplatten der virtuellen Maschine
vghost
nach Bedarf als logische Volumes
Vorteile:
- Wenn das Root-Dateisystem des VM-Hosts keinen Speicherplatz mehr hat, kann ich
vghost
relativ einfach mehr Speicherplatz zuweisen - Das System ist bereits in Betrieb (aber es ist keine große Sache, von vorne anzufangen)
Nachteile:
Trotz der Tatsache, dass diese Methode zu funktionieren scheint, kann ich das Gefühl nicht loswerden, dass dies irgendwie eine schlechte Idee ist. Ich fühle, dass:
- Dies kann ein Sicherheitsrisiko darstellen
- Irgendwann in der Zukunft stelle ich möglicherweise Einschränkungen beim Setup fest und wünsche mir, dass ich eine dedizierte Gruppe verwende
- Das System (CentOS, libvirt usw.) ist möglicherweise nicht für diese Verwendung ausgelegt. Daher kann es vorkommen, dass ich versehentlich die Dateien und / oder das Dateisystem des VM-Hosts beschädige / verliere
Methode 2: Verwenden Sie eine dedizierte Datenträgergruppe
Implementierung:
- gleiche
md0
undmd1
wie in Verfahren 1, mit der Ausnahme makemd1
gerade groß genug für das VM - Host enthalten (z. B. 5 bis 10 GB) - großer RAID10
md2
belegt den verbleibenden Platz.md2
enthält eine LVM-Volume-Gruppevgvms
, deren logische Volumes ausschließlich von virtuellen Maschinen verwendet werden sollen
Vorteile:
- Ich kann basteln,
vgvms
ohne befürchten zu müssen, das Host-Betriebssystem zu beschädigen - Dies scheint eine elegantere und sicherere Lösung zu sein
Nachteile:
- Wenn das Dateisystem des VM-Hosts keinen Speicherplatz mehr hat, müsste ich Teile des Dateisystems (z. B. / usr oder / var) darauf verschieben
vgvms
, was nicht sehr schön erscheint. - Ich muss das Host-Betriebssystem neu installieren (was mir, wie bereits erwähnt, nichts ausmacht)
UPDATE 1:
Ein Grund, warum ich mir Sorgen mache, dass mir der Festplattenspeicher des VM-Hosts in Methode 2 ausgeht, ist, dass ich nicht weiß, ob der VM-Host leistungsfähig genug ist, um alle Dienste in virtuellen Maschinen auszuführen, d. H. Möglicherweise muss ich einige / alle Dienste von virtuellen Maschinen auf das Host-Betriebssystem migrieren.
VM-Hosthardwarespezifikation:
- Phenom II 955 X4 Black Edition-Prozessor (3,2 GHz, 4-Kern-CPU)
- 2x4 GB Kingston PC3-10600 DDR3 RAM
- Gigabyte GA-880GM-USB3-Motherboard
- 4x WD Caviar RE3 500 GB SATA II-Festplatten (7200 U / min)
- Antec BP500U Basiq 500W ATX Netzteil
- CoolerMaster CM 690 Koffer
UPDATE 2:
Ein Grund, warum ich der Meinung bin, dass das System möglicherweise nicht für die Verwendung der Host-VG als libvirt-Speicherpool in Methode 1 ausgelegt ist, ist ein Verhalten, das ich in virt-manager festgestellt habe:
- nach dem Hinzufügen hat es sich beschwert, dass es das VG nicht aktivieren konnte (offensichtlich, weil das Host-Betriebssystem es bereits aktiviert hat)
- Nach dem Entfernen wurde dies abgelehnt, da die VG nicht deaktiviert werden konnte (offensichtlich, weil das Host-Betriebssystem immer noch die Root- und Swap-LVs verwendet).
Antworten:
Durchdachte Frage!
Ich würde mit Methode 2 gehen, aber das ist eher eine persönliche Präferenz. Für mich sind die Nachteile von Methode 2 kein großes Problem. Ich sehe nicht, dass das Host-Betriebssystem über seine 5-10 GB-Partition hinauswächst, es sei denn, Sie installieren zusätzliches Material darauf, was Sie wirklich nicht tun sollten. Der Einfachheit und Sicherheit halber sollte das Host-Betriebssystem wirklich eine reine Minimalinstallation sein, auf der nur das für die Administration erforderliche Minimum (z. B. sshd) ausgeführt wird.
Die Methode 1 Nachteile sind auch kein wirkliches Problem, IMO. Ich glaube nicht, dass es ein zusätzliches Sicherheitsrisiko geben würde, da, wenn eine verwurzelte VM aus ihrer Partition ausbrechen und andere Partitionen infizieren / beschädigen kann, das Host-Betriebssystem in einer separaten VG möglicherweise keinen Unterschied macht. Die anderen beiden Nachteile kann ich nicht aus direkter Erfahrung ansprechen, aber ich bin der Meinung, dass CentOS, LVM und libvirt flexibel und robust genug sind, um sich keine Sorgen zu machen.
EDIT - Antwort auf Update 1
Heutzutage ist die Leistungseinbuße bei der Virtualisierung sehr gering, insbesondere bei Verwendung von Prozessoren mit integrierter Unterstützung. Ich halte es daher nicht für sinnvoll, einen Dienst von einer Gast-VM auf das Host-Betriebssystem zu verschieben. Sie könnten einen Geschwindigkeitsschub von 10% erzielen, wenn Sie auf dem "Bare-Metal" -Programm laufen, aber Sie würden die Vorteile eines kleinen, engen und sicheren Host-Betriebssystems verlieren und möglicherweise die Stabilität des gesamten Servers beeinträchtigen. Lohnt sich nicht, IMO.
Vor diesem Hintergrund würde ich immer noch Methode 2 bevorzugen.
Antwort auf Update 2
Es scheint, dass die Art und Weise, in der libvirt davon ausgeht, dass die Speicherung erfolgt, ein weiterer Punkt für Methode 2 ist. Meine Empfehlung lautet: Fahren Sie mit Methode 2 fort.
quelle
Solange nur ein System versucht, einen bestimmten LV im Lese- / Schreibmodus zu verwenden, ist es möglich, dasselbe VG für Host und Gäste zu verwenden. Wenn mehrere Systeme versuchen, auf dieselbe LV zu schreiben, führt dies zu einer Beschädigung des Dateisystems.
quelle
Vielleicht möchten Sie einen Blick darauf werfen, vielleicht basteln und sehen, wie dieses Projekt das macht, wovon Sie sprechen.
ProxmoxVE ist ein Bare-Metal-KVM-Host, der eine Perl-Implementierung von libvirt anstelle von RHELs schwerem Gegenstück verwendet. Es implementiert beide Szenarien.
Virtuelle Laufwerke sind .raw und spärlich, ähnlich wie .qcow, aber schneller.
Die Disk-Image-Formate qcow und vmdk werden ebenfalls unterstützt, aber ich denke, dass es möglicherweise LVM-Einschränkungen gibt. Ich benutze sie nicht, deshalb kann ich nicht viel dazu sagen.
LVM-Speicher wird von den VMs auf dem Knoten gemeinsam genutzt und kann ein DRBD-Gerät sein.
Bei der gemeinsamen Nutzung des VG-Speicherplatzes des Betriebssystems besteht die einzige Einschränkung in der Größe des Snapshots während der Sicherung. Hier kann dieser Wert in einer Konfigurationsdatei geändert werden, und ich sehe manchmal in den Foren, wo die Leute ihn ändern mussten, aber die Standardeinstellungen haben mir seit ein paar Jahren gute Dienste geleistet - selbst mit riesigen virtuellen Festplatten.
LVM-Speicherdetails von PVE:
http://pve.proxmox.com/wiki/Storage_Model#LVM_Groups_with_Network_Backing
So sind die VGs aufgebaut:
Volume-Gruppe "LDatastore1" mit Metadatentyp lvm2 gefunden
Volume-Gruppe "LDatastore0" mit Metadatentyp lvm2 gefunden
Volume-Gruppe "pve" mit Metadatentyp lvm2 gefunden
Dies sind meine LVs:
ACTIVE '/ dev / LDatastore1 / vm-9098-disk-1' [4,00 GB] erben
ACTIVE '/ dev / LDatastore1 / vm-7060-disk-1' [2,00 GB] erben
ACTIVE '/ dev / LDatastore1 / vm-5555-disk-1' [8.00 GB] erben
ACTIVE '/ dev / LDatastore0 / vm-4017-disk-1' [8.00 GB] erben
ACTIVE '/ dev / LDatastore0 / vm-4017-disk-2' [512.00 GB] erben
ACTIVE '/ dev / LDatastore0 / vm-7057-disk-1' [32.00 GB] erben
ACTIVE '/ dev / LDatastore0 / vm-7055-disk-1' [32.00 GB] erben
ACTIVE '/ dev / LDatastore0 / vm-6030-disk-1' [80,01 GB] erben
ACTIVE '/ dev / pve / swap' [3.62 GB] erben
ACTIVE '/ dev / pve / root' [7,25 GB] erben
ACTIVE '/ dev / pve / data' [14.80 GB] erben
Dies ist LVM auf RAID10 mit 6 Seagate Barracuda SATA-Laufwerken mit 7200 U / min:
CPU BOGOMIPS: 53199.93
REGEX / SECOND: 824835
HD-GRÖSSE: 19,69 GB (/ dev / mapper / LDatastore0-testlv)
GEPUFFERTE LESEN: 315,17 MB / Sek
Durchschnittliche Suchzeit: 7,18 ms
FSYNCS / SECOND: 2439,31
Und das ist LVM auf einer einzelnen Intel X25-E SATA SSD, dieselbe VG wie die oben genannten / dev / pve / data, auf denen VMs leben:
CPU BOGOMIPS: 53203.97
REGEX / SECOND: 825323
HD-GRÖSSE: 7,14 GB (/ dev / mapper / pve-root)
GEPUFFERTE LESEN: 198,52 MB / Sek
Durchschnittliche Suchzeit: 0,26 ms
FSYNCS / SECOND: 1867.56
quelle