Ich erwäge die Migration von ext3 zu ZFS zur Datenspeicherung auf meinem Debian Linux-Host unter Verwendung von ZFS unter Linux . Ein Killer-Feature von ZFS, das ich wirklich möchte, ist die Garantie der Datenintegrität. Ich würde mich auch darauf freuen, den Speicherplatz mit zunehmendem Speicherbedarf trivial erweitern zu können.
Ich führe jedoch auch einige VMs auf demselben Host aus. (Normalerweise wird in meinem Fall immer nur eine VM auf dem Host ausgeführt.)
In Anbetracht der Datenüberprüfungssumme und des Copy-on-Write-Verhaltens von ZFS sowie der Tatsache, dass die VM-Disk-Images vergleichsweise große Dateien sind (die Disk-Image-Datei meiner Haupt-VM hat derzeit eine Größe von 31 GB), welche Auswirkungen hat dies auf die Leistung des VM-Gasts? eine Migration? Welche Schritte kann ich unternehmen, um die möglichen negativen Auswirkungen auf die Leistung zu verringern?
Ich kann bei Bedarf mit weniger Datenintegritätsgarantien auf den VM-Disk-Images leben (ich mache in keiner der VMs etwas wirklich Kritisches) und kann sie leicht vom Rest des Dateisystems trennen, aber es wäre schön, wenn ich sie nicht anziehe Ich muss (sogar selektiv) nicht so ziemlich die Funktion deaktivieren, die mich am meisten dazu bringt, auf ein anderes Dateisystem zu migrieren.
Die Hardware ist für ein System der Workstation-Klasse ziemlich leistungsfähig, hält aber für einen High-End-Server keine große Rolle (32 GB RAM mit selten> 10 GB im Einsatz, 6-Kern-3,3-GHz-CPU, derzeit 2,6 TB verwendbar Speicherplatz gemäß df
und insgesamt ca. 1,1 TB frei; die Migration auf ZFS wird wahrscheinlich mehr freien Speicherplatz hinzufügen ) und ich plane nicht, die Datendeduplizierung auszuführen (da das Aktivieren von Dedup in meiner Situation einfach nicht viel hinzufügen würde). Der Plan ist, mit einer JBOD-Konfiguration zu beginnen (offensichtlich mit guten Backups), aber ich kann eventuell zu einem Zwei-Wege-Spiegel-Setup wechseln, wenn die Bedingungen dies erfordern.
quelle
Antworten:
Da ZFS auf Blockebene arbeitet, spielt die Größe der Dateien keine Rolle. ZFS benötigt mehr Speicher und CPU, ist jedoch als Dateisystem von Natur aus nicht wesentlich langsamer. Sie müssen sich jedoch bewusst sein, dass RAIDZ in seiner Geschwindigkeit nicht RAID5 entspricht. RAID10 ist in Ordnung, wenn Geschwindigkeit Priorität hat.
quelle
ZFS auf anständiger (dh Buff-) Hardware ist wahrscheinlich schneller als andere Dateisysteme. Sie möchten wahrscheinlich eine ZIL auf einem schnellen (dh SSD-) Speicherort erstellen. Dies ist im Wesentlichen ein Speicherort zum Zwischenspeichern von Schreibvorgängen (eher wie ein Journal in ext3 / 4). Auf diese Weise kann die Box bestätigen, dass sie auf die Festplatte geschrieben wird, bevor die eigentlichen Spindeln die Daten haben.
Sie können auch einen L2-ARC auf einer SSD für den Lese-Cache erstellen. Dies ist fantastisch in einer VM-Umgebung, in der Sie physische Festplatten in die Knie zwingen können, indem Sie mehrere VMs gleichzeitig starten.
Laufwerke gehen in VDEVs, VDEVs gehen in Zpools (bitte verwenden Sie jeweils ganze Festplatten). Wenn dies ein kleineres System ist, möchten Sie möglicherweise einen einzelnen Zpool und (wenn Sie nicht zu besorgt über Datenverlust sind) einen einzelnen VDEV. In VDEVs wählen Sie den RAID-Level aus (obwohl Sie auch VDEVs SPIEGELN können, wenn Sie über genügend Festplatten verfügen). Die langsamste Festplatte in einer VDEV bestimmt, wie schnell die gesamte VDEV ist.
Bei ZFS dreht sich alles um Datenintegrität. Der Grund, warum viele der herkömmlichen Tools für die Dateisystemwartung nicht vorhanden sind (wie fsck), ist das Problem, das sie in einem ZFS-Dateisystem nicht lösen können.
IMO ist der größte Nachteil von ZFS, dass wenn Ihre Dateisysteme sich voll nähern (sagen wir 75% +), es SEHR langsam wird. Geh einfach nicht dorthin.
quelle
31 GB sind wirklich überhaupt nicht groß ...
Abhängig vom aktuell verwendeten Dateisystem kann es sein, dass ZFS etwas langsamer ist, aber angesichts Ihrer Hardwarespezifikationen möglicherweise vernachlässigbar ist.
Offensichtlich verwendet ZFS einen guten Teil des Arbeitsspeichers für das Caching, wodurch Ihre VMs im allgemeinen Gebrauch möglicherweise schneller erscheinen (wenn Sie nicht viel lesen oder schreiben). Ich bin mir nicht sicher, wie ZFS unter Linux optimiert ist, aber Sie müssen möglicherweise den ARC einschränken, wenn dies möglich ist, um zu verhindern, dass ZFS mit Ihrem gesamten RAM davonläuft (da Sie einen anständigen Teil für Ihr Hostsystem und möchten VMs).
Ich würde die Komprimierung aktivieren (heutzutage wird empfohlen, sie einzuschalten, es sei denn, Sie haben einen guten Grund, dies nicht zu tun). Denken Sie daran, dass dies erfolgen muss, bevor Daten in das Dateisystem gestellt werden. Die meisten Leute sind überrascht, dass es tatsächlich schneller geht, da die Komprimierungsalgorithmen im Allgemeinen schneller ausgeführt werden als Festplatten-E / A. Ich bezweifle, dass dies bei Ihrem 6-Kern-Prozessor zu erheblichen Leistungsproblemen führen wird. Ich hatte nicht erwartet, dass VMs viel komprimieren würden, aber ich habe es geschafft, ~ 470 GB VM-Daten nur mit der Standardkomprimierungseinstellung in 304 GB umzuwandeln.
Kümmern Sie sich nicht um Deduplizierung, es wird Sie später nur noch verfolgen und Sie werden Wochen damit verbringen, Daten zu mischen, um sie loszuwerden.
Wenn Sie auf Leistungsprobleme stoßen, besteht die offensichtliche Antwort darin, eine SSD als ZIL / L2ARC oder sogar beides hinzuzufügen. Es ist nicht ideal, ein Gerät für beide zu verwenden, aber es wird höchstwahrscheinlich immer noch die Leistung in einem Pool verbessern, der eine kleine Anzahl von Festplatten / vdevs enthält.
Hinzufügen: Ich würde wirklich versuchen, wenn möglich mit einer redundanten Konfiguration zu beginnen (idealerweise Spiegel) oder so schnell wie möglich von einem Streifen in Spiegel umzuwandeln. Während ZFS alle Daten prüft und Fehler im laufenden Betrieb (oder während eines Scrubs) erkennt, kann es nichts dagegen tun (ohne Kopien = 2 zu verwenden, wodurch die Festplattennutzung verdoppelt wird). Sie werden nur darauf hingewiesen, dass es Fehler in Dateien gibt (wahrscheinlich in Ihren VM-Disk-Images), gegen die Sie nicht viel tun können, ohne diese Dateien zu löschen und neu zu erstellen.
quelle
Abhängig von Ihren Anwendungsfällen und VMs würde ich Folgendes berücksichtigen. Lassen Sie das Host-Betriebssystem sich um die Dateien kümmern, die Sie auf den ZFS-Volumes speichern.
Erstellen Sie nach Möglichkeit nur eine LUN für jede VM, die nur das Betriebssystem und die erforderlichen Binärdateien enthält. Und präsentieren Sie Storage Stace für einzelne Daten als Freigaben über NFS, Samba oder iSCSI (oder zvols, wie in den Kommentaren erwähnt). ZFS ist in der Lage, jede Datei mit Prüfsumme und Zugriffszeiten ect zu verfolgen. Wenn die Geschwindigkeit nicht so wichtig ist, können Sie natürlich auch die Komprimierung für einige Datenspeicher aktivieren. Der Vorteil wäre eine fehlende Schicht eines anderen Dateisystems. Wenn Sie eine LUN für die zweite virtuelle Festplatte erstellen und darüber ein NTFS-Dateisystem erstellen möchten, muss ZFS einen großen Binär-Blob verarbeiten und kennt keinen der Inhalte oder Dateien und kann daher den ZIL- oder ARC-Cache nicht nutzen genauso wie die Flugzeugdateien.
Durch die Erwähnung von ACLs kann ZFS ACLs über NFSv4 oder Samba verwenden (falls aktiviert). Ich muss zugeben, dass ich ZFS unter FreeBSD verwende und nicht sicherstellen kann, wie Sambas-ACLs aktiviert werden, die sich auf ZFS-Volumes verbinden. Aber ich bin sicher, dass dies keine große Sache sein sollte.
Die Deduplizierung in Kombination mit einem Lese-Cache ist ein großer Vorteil, wenn es darum geht, Platz zu sparen und massive Lesevorgänge zu verbessern (Boot Storm), da alle VMs beginnen, dieselben Blöcke zu lesen.
Gleiches gilt für ZFS-Snapshots für die VMs und die Datenspeicher. Sie können ein einfaches Shell-Skript erstellen, um die VM einzufrieren, einen Snapshot der VM und des Datenspeichers zu erstellen und weiter zu arbeiten, oder nur den Datenspeicher allein, und die VM klonen, um den Snapshot des ursprünglichen zu präsentieren und einige Dinge zu testen.
Die Möglichkeiten mit ZFS sind endlos;)
EDIT: Hoffentlich habe ich es jetzt ein bisschen besser erklärt
EDIT2: Persönliche Meinung: Erwägen Sie die Verwendung eines RAIDZ2 (RAID6), da Sie einem Ausfall der doppelten Festplatte standhalten können! Wenn Sie nur noch eine Ersatzfestplatte haben, wird dies niemals falsch sein, aber zwei Festplattenfehler sollten für eine schnelle Reaktion ausreichen. Ich poste gerade mein Skript zur Überwachung des Festplattenstatus hier
quelle