Ich bin noch neu in ZFS. Ich habe Nexenta verwendet, möchte aber auf OpenIndiana oder Solaris 11 Express umsteigen. Momentan denke ich darüber nach, den ZFS-Server als Gast innerhalb von ESXi, Hyper-V oder XenServer zu virtualisieren (ich habe mich noch nicht entschieden - ich neige zu ESXi für VMDirectPath- und FreeBSD-Unterstützung).
Der Hauptgrund dafür ist, dass ich anscheinend genug Ressourcen habe, um damit umzugehen, sodass problemlos 1-3 andere VMs gleichzeitig ausgeführt werden können. Hauptsächlich Windows Server. Vielleicht auch eine Linux / BSD-VM. Ich möchte, dass der virtualisierte ZFS-Server alle Daten für die anderen VMs hostet, damit deren Daten auf physisch getrennten Datenträgern von den ZFS-Datenträgern gespeichert werden können (Bereitstellung als iscsi oder nfs).
Der Server verfügt derzeit über einen AMD Phenom II mit insgesamt 6 Kernen (2 nicht gesperrt), 16 GB RAM (maximal) und einen angeschlossenen LSI SAS 1068E HBA mit (7) 1 TB SATA II-Festplatten (RAIDZ2-Planung mit Hot Spare). Ich habe auch (4) 32GB SATA II SSDs an das Motherboard angeschlossen. Ich hoffe, zwei der SSDs auf einen Bootspiegel (für den virtuellen Host) zu spiegeln und die anderen beiden SSDs für ZIL und L2ARC (für den ZFS-VM-Gast) zu belassen. Ich bin bereit, zwei weitere Festplatten hinzuzufügen, um die VM-Gäste zu speichern und alle sieben aktuellen Festplatten als ZFS-Speicher zuzuweisen. Hinweis: Das Motherboard ist nicht hat IOMMU Unterstützung als die 880G es nicht unterstützt, aber ich habe ein 890FX Bord habe , die IOMMU tut, wenn es einen großen Unterschied macht.
Meine Fragen sind:
1) Ist es ratsam, dies zu tun? Ich sehe keine offensichtlichen Nachteile (weshalb ich mich frage, warum es niemand anders erwähnt hat). Ich habe das Gefühl, dass ich ein großes Versehen machen könnte, und ich würde es hassen, mich dazu zu verpflichten, alle meine Daten zu überfliegen, um von einem winzigen Detail, das ich vermisst habe, auf den neuesten Stand zu kommen.
2) ZFS Virtual Guest Performance? Ich bin bereit, einen kleinen Leistungseinbruch hinzunehmen, aber ich denke, wenn der VM-Gast vollen Festplattenzugriff auf die Festplatten hat, ist die Festplatten-E / A-Leistung zumindest vernachlässigbar (im Vergleich zur Ausführung von ZFS ohne Virtualisierung). . Kann jemand aus Erfahrung mit dem Hosten eines ZFS-Servers als VM-Gast darüber sprechen?
Antworten:
Ich habe eine Reihe dieser "All-in-One" -ZFS-Speicherkonfigurationen erstellt. Ursprünglich inspiriert von den hervorragenden Beiträgen bei Ubiquitous Talk , verfolgt meine Lösung einen etwas anderen Ansatz beim Hardwaredesign, liefert aber das Ergebnis eines gekapselten virtualisierten ZFS-Speichers.
Um Ihre Fragen zu beantworten:
Die Entscheidung, ob dies ein weiser Ansatz ist, hängt wirklich von Ihren Zielen ab. Was versuchst du zu erreichen? Wenn Sie eine Technologie (ZFS) haben und nach einer Anwendung dafür suchen, ist dies eine schlechte Idee. Sie sollten einen geeigneten Hardware-RAID-Controller verwenden und Ihre VMs auf einer lokalen VMFS-Partition ausführen. Es ist der Weg des geringsten Widerstands. Wenn Sie jedoch einen bestimmten Grund für die Verwendung von ZFS haben (Replikation, Komprimierung, Datensicherheit, Portabilität usw.), ist dies definitiv möglich, wenn Sie bereit sind, sich anzustrengen.
Die Leistung hängt stark von Ihrem Design ab, unabhängig davon, ob Sie auf Bare-Metal oder virtuell arbeiten. Die Verwendung von PCI-Passthrough (oder AMD IOMMU in Ihrem Fall) ist unerlässlich, da Sie Ihrer ZFS-VM direkten Zugriff auf einen SAS-Speichercontroller und -Datenträger gewähren würden. Solange Ihrer VM eine angemessene Menge an RAM- und CPU-Ressourcen zugewiesen ist, ist die Leistung nahezu nativ. Natürlich ist Ihr Pooldesign wichtig. Bitte berücksichtigen Sie Spiegel im Vergleich zu RAID Z2. ZFS skaliert über vdevs und nicht über die Anzahl der Festplatten .
Meine Plattform ist VMWare ESXi 5 und mein bevorzugtes ZFS-fähiges Betriebssystem ist NexentaStor Community Edition .
Das ist mein
Zuhause- Server . Es ist ein HP ProLiant DL370 G6 , auf dem ESXi von einer internen SD-Karte ausgeführt wird. Die beiden gespiegelten 72-GB-Festplatten in der Mitte sind mit dem internen Smart Array P410 RAID-Controller verbunden und bilden ein VMFS-Volume. Dieses Volume enthält eine NexentaStor-VM. Denken Sie daran , dass die virtuelle Maschine zum Leben braucht ZFS irgendwo auf stabile Lagerung.Es gibt einen LSI 9211-8i SAS-Controller , der an den Laufwerkskäfig angeschlossen ist und sechs 1-TB-SATA-Festplatten auf der rechten Seite enthält. Es wird an die virtuelle NexentaStor-Maschine weitergeleitet, sodass Nexenta die Festplatten als RAID 1 + 0-Setup erkennt. Bei den Festplatten handelt es sich um Western Digital Green WD10EARS- Laufwerke, die ordnungsgemäß mit einer modifizierten
zpool
Binärdatei ausgerichtet sind.Ich verwende in dieser Installation kein ZIL-Gerät oder keinen L2ARC-Cache.
Der VM sind 6 GB RAM und 2 vCPUs zugewiesen. Wenn Sie in ESXi PCI-Passthrough verwenden, wird eine Speicherreservierung für den gesamten zugewiesenen Arbeitsspeicher der VM erstellt.
Ich gebe dem NexentaStor VM zwei Netzwerkschnittstellen. Eine ist für den Verwaltungsverkehr. Der andere ist Teil eines separaten vSwitch und verfügt über eine vmkernel-Schnittstelle (ohne externen Uplink). Auf diese Weise kann die VM NFS-Speicher bereitstellen, der von ESXi über ein privates Netzwerk bereitgestellt werden kann. Sie können problemlos eine Uplink-Schnittstelle hinzufügen, um den Zugriff auf externe Hosts zu ermöglichen.
Installieren Sie Ihre neuen VMs im ZFS-exportierten Datenspeicher. Stellen Sie sicher, dass Sie die Parameter "Starten / Herunterfahren der virtuellen Maschine" in ESXi festlegen. Sie möchten, dass die Storage-VM vor den Gastsystemen gestartet und zuletzt heruntergefahren wird.
Hier sind die Bonnie ++ - und Iozone- Ergebnisse eines Laufs direkt auf der NexentaStor-VM. Die ZFS-Komprimierung ist deaktiviert, damit der Test mehr zuordenbare Zahlen anzeigt. In der Praxis sollte jedoch immer die ZFS-Standardkomprimierung (nicht gzip) aktiviert sein.
# bonnie++ -u root -n 64:100000:16:64
# iozone -t1 -i0 -i1 -i2 -r1m -s12g
Dies ist ein NexentaStor DTrace-Diagramm, in dem die IOPS- und Übertragungsraten der Storage-VM während des Testlaufs dargestellt sind. 4000 IOPS und 400+ Megabyte / Sekunde sind für solche Low-End-Festplatten ziemlich vernünftig. (obwohl große Blockgröße)
Weitere Hinweise.
quelle