Frage Hosten eines ZFS-Servers als virtueller Gast


Ich bin immer noch neu in ZFS. Ich habe Nexenta verwendet, aber ich denke an OpenIndiana oder Solaris 11 Express. Im Moment bin ich kurz davor, den ZFS-Server als Gast in ESXi, Hyper-V oder XenServer zu virtualisieren (ich habe mich noch nicht entschieden - ich bin auf ESXi für VMDirectPath und FreeBSD-Unterstützung angewiesen).

Der Hauptgrund dafür ist, dass es so aussieht, als hätte ich genug Ressourcen, um herumzulaufen. Ich könnte leicht 1-3 andere VMs gleichzeitig laufen lassen. Meistens 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 ihre Daten auf physisch getrennten Datenträgern von den ZFS-Datenträgern aufbewahrt werden können (mount as iscsi oder nfs).

Der Server verfügt derzeit über einen AMD Phenom II mit insgesamt 6 Kernen (2 entsperrt), 16 GB RAM (maximiert) und einen LSI SAS 1068E HBA mit (7) 1 TB SATA II-Festplatten (Planung auf RAIDZ2 mit Hotspare). Ich habe auch (4) 32GB SATA II SSDs an das Motherboard angeschlossen. Ich hoffe, zwei der SSDs auf einen Boot-Mirror (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 der aktuellen Festplatten als ZFS-Speicher zuzuordnen. Hinweis: Das Motherboard tut es nicht habe IOMMU-Unterstützung, da der 880G es nicht unterstützt, aber ich habe ein 890FX-Board, das IOMMU hat, wenn es einen großen Unterschied macht.

Meine Fragen sind:

1) Ist es klug, dies zu tun? Ich sehe keinen offensichtlichen Nachteil (was mich wundern lässt, warum niemand sonst es erwähnt hat). Ich habe das Gefühl, dass ich ein riesiges Versehen machen könnte, und ich würde es hassen, mich dazu zu verpflichten, alle meine Daten zu verschieben, nur um von einem winzigen Detail, das ich vermisst habe, zu gehen.

2) ZFS virtuelle Gastleistung? Ich bin bereit, einen kleinen Leistungseinbruch zu machen, aber ich denke, wenn der VM-Gast vollständigen Festplattenzugriff auf die Festplatten hat, ist die Festplatten-I / O-Leistung zumindest vernachlässigbar (im Vergleich zur Ausführung von nicht virtualisiertem ZFS). . Kann jemand aus Erfahrung damit sprechen, einen ZFS-Server als VM-Gast zu hosten?


22
2018-06-06 17:41


Ursprung


Sie sagen, dass Sie Daten für alle anderen VMs hosten möchten. Erwarten Sie, dass Sie irgendwann Deduplizierung wünschen? Wenn dies der Fall ist, sollte dies wirklich auf der eigenen Maschine sein, da die Deduplizierung sehr speicherintensiv ist. Schauen Sie sich etwas wie SmartOS für Ihre ZFS-Bedürfnisse an. Auf diese Weise erhalten Sie auch einen Hypervisor. - devicenull
Ich habe über Deduplizierung nachgedacht, aber für die unmittelbare Zeit, nein, ich würde es lieber nicht verwenden. Ich werde SmartOS untersuchen. Ich habe noch nichts davon gehört, also werde ich das überprüfen. - osij2is


Antworten:


Ich habe eine Reihe dieser "All-in-One" ZFS-Speicher-Setups erstellt. Anfänglich inspiriert von den hervorragenden Posten bei Allgegenwärtiges Gespräch, meine Lösung verfolgt einen etwas anderen Ansatz als das Hardware-Design, liefert aber das Ergebnis eines gekapselten virtualisierten ZFS-Speichers.

Um deine Fragen zu beantworten:

  • Ob dies ein kluger Ansatz ist, hängt von Ihren Zielen ab. Was versuchst du zu erreichen? Wenn Sie eine Technologie (ZFS) haben und nach einer Anwendung dafür suchen, dann ist das 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 haben, ZFS zu verwenden (Replikation, Komprimierung, Datensicherheit, Portabilität usw.), dann ist dies definitiv möglich, wenn Sie bereit sind, sich die Mühe zu machen.

  • Die Leistung hängt stark von Ihrem Design ab, unabhängig davon, ob Sie mit Bare-Metal oder virtuell arbeiten. Verwenden PCI-Passthrough (oder AMD IOMMU in Ihrem Fall) ist unerlässlich, da Sie Ihrer ZFS-VM direkten Zugriff auf einen SAS-Speicher-Controller und Festplatten bieten würden. Solange Ihre VM eine angemessene Menge an RAM- und CPU-Ressourcen zugewiesen hat, ist die Leistung nahezu nativ. Natürlich ist Ihr Pool-Design wichtig. Bitte beachten Sie Spiegel gegenüber RAID Z2. ZFS skaliert über vdevs und nicht die Anzahl der Festplatten.


Meine Plattform ist VMWare ESXi 5 und mein bevorzugtes ZFS-fähiges Betriebssystem ist NexentaStor Gemeinschaftsausgabe.

Das ist mein Zuhause Server. Es ist ein HP ProLiant DL370 G6 Ausführen von ESXi von einer internen SD-Karte. Die beiden gespiegelten 72-GB-Festplatten in der Mitte sind mit dem internen Smart Array P410 RAID-Controller verbunden und bilden ein VMFS-Volume. Dieser Datenträger enthält eine NexentaStor-VM. Denken Sie daran, dass die virtuelle ZFS-Maschine leben muss irgendwo auf stabilem Speicher.

Da ist ein LSI 9211-8i SAS-Controller verbunden mit dem Laufwerkskäfig Gehäuse sechs 1TB SATA-Festplatten auf der rechten Seite. Es wird an die virtuelle NexentaStor-Maschine weitergeleitet, sodass Nexenta die Festplatten als RAID 1 + 0-Setup sehen kann. Die Scheiben sind el-cheapo Western Digital Grün WD10EARS fährt richtig ausgerichtet mit einem modifizierten zpool binär.

Ich verwende kein ZIL-Gerät oder einen L2ARC-Cache in dieser Installation.

enter image description here

Die VM verfügt über 6 GB RAM und 2 vCPUs. Wenn Sie in ESXi PCI-Passthrough verwenden, wird eine Speicherreservierung für den gesamten zugewiesenen RAM der VM erstellt.

Ich gebe der NexentaStor VM zwei Netzwerkschnittstellen. Einer ist für den Management-Verkehr. Der andere ist Teil eines separaten vSwitch und hat eine VMkernel-Schnittstelle (ohne einen externen Uplink). Dadurch 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 die Parameter "Start / Herunterfahren des virtuellen Computers" in ESXi festgelegt sind. Sie möchten, dass die Speicher-VM vor den Gastsystemen startet und zuletzt herunterfährt.


enter image description here

Hier sind die Bonnie ++ und iozone Ergebnisse eines Laufs direkt auf der NexentaStor VM. Die ZFS-Komprimierung ist deaktiviert, damit der Test besser zuordenbare Zahlen anzeigt. In der Praxis sollte jedoch die ZFS-Standardkomprimierung (nicht gzip) verwendet werden immer aktiviert sein.

# bonnie++ -u root -n 64:100000:16:64

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
saint           12G   156  98 206597  26 135609  24   410  97 367498  21  1478  17
Latency               280ms    3177ms    1019ms     163ms     180ms     225ms
Version  1.96       ------Sequential Create------ --------Random Create--------
saint               -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
    64:100000:16/64  6585  60 58754 100 32272  79  9827  58 38709 100 27189  80
Latency              1032ms     469us    1080us     101ms     375us   16108us

# iozone -t1 -i0 -i1 -i2 -r1m -s12g

    Iozone: Performance Test of File I/O

    Run began: Wed Jun 13 22:36:14 2012

    Record Size 1024 KB
    File size set to 12582912 KB
    Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s12g
    Output is in Kbytes/sec
    Time Resolution = 0.000001 seconds.
    Throughput test with 1 process
    Each process writes a 12582912 Kbyte file in 1024 Kbyte records

    Children see throughput for  1 initial writers  =  234459.41 KB/sec
    Children see throughput for  1 rewriters        =  235029.34 KB/sec
    Children see throughput for  1 readers          =  359297.38 KB/sec
    Children see throughput for 1 re-readers        =  359821.19 KB/sec
    Children see throughput for 1 random readers    =   57756.71 KB/sec
    Children see throughput for 1 random writers    =  232716.19 KB/sec

Dies ist ein NexentaStor DTrace-Diagramm, das die IOPS und Übertragungsraten der Speicher-VM während des Testlaufs zeigt. 4000 IOPS und 400+ Megabyte / Sekunde sind für solche Low-End-Festplatten ziemlich vernünftig. (große Blockgröße, obwohl) enter image description here

Weitere Hinweise.

  • Sie sollten Ihre SSDs testen, um zu sehen, ob sie direkt einer VM präsentiert werden können oder ob der DirectPath den gesamten Motherboard-Controller auswählt.
  • Sie haben nicht viel CPU-Leistung, also beschränken Sie die Speichereinheit auf 2 vCPUs.
  • Verwenden Sie RAIDZ1 / Z2 / Z3 nur, wenn Sie wirklich Speicherplatz benötigen.
  • Verwenden Sie keine Deduplizierung. Die Komprimierung ist kostenlos und sehr nützlich für VMs. Deduplizierung würde viel mehr RAM + L2ARC benötigen, um effektiv zu sein.
  • Starten Sie ohne SSDs und fügen Sie diese bei Bedarf hinzu. Bestimmte Arbeitsauslastungen Schlage nicht die ZIL oder L2ARC.
  • NexentaStor ist ein komplettes Paket. Es hat einen Vorteil, eine solide Management-GUI zu haben, aber ich habe von Erfolg mit gehört Napp-es auch.

37
2018-06-14 04:22



+1. Danke für alle Informationen! Um deine Frage zu beantworten, mache ich das aus ein paar Gründen. Ich mache das größtenteils, um die anderen CPU-Kerne zu nutzen, um ein oder zwei andere VMs zu erstellen (ohne ZFS zu machen) und um meinem virtuellen Opteron-Server ein iSCSI-Ziel zu liefern. Meine Gründe für ZFS sind (in keiner bestimmten Reihenfolge) Komprimierung und Datensicherheit und Replikation. Dedupe sieht sehr cool aus, aber in Bezug auf Ressourcen und meine Daten bin ich mir nicht sicher, ob es notwendig ist. Ich verwende gerade Nexenta, aber ich erwog, zu Solaris Express oder OpenIndiana zu wechseln, wenn ich weiterhin auf den Festplatten stapele, um das Limit von 18 TB zu überschreiten. - osij2is
Also, ich verstehe Ihren Kommentar darüber, ob Sie die SSDs für L2ARC oder ZIL verwenden sollen und ich bin bereit, genau das zu tun. Sehen Sie zuerst die Leistung, DANN bestimmen Sie, ob ZIL und / oder ARC hinzugefügt werden sollen. Wie für Spiegelung vs. RAIDZ, nach dem Lesen Ihrer Kommentare und Lesen dieses Blog-Post (constantin.glez.de/blog/2010/01/...) Ich denke, die Spiegelung hält eine leichte Kante. Ich brauche den Speicherplatz nicht wirklich, aber wenn ich einige Redundanz- und schnelle Lese- / Schreibfähigkeiten haben kann, werde ich darauf wechseln. Welchen Speicherplatz ich auch wirklich aussuchen könnte, wäre es nicht wert. - osij2is
Denken Sie außerdem daran, dass die Komprimierung nützlich ist. Ich zahle für kommerzielle Nexenta für Client-Systeme und alles größer als 18 TB. Die gleichen Tipps gelten jedoch auch für OpenIndiana. - ewwhite
Verwenden Sie ein E1000 vnic oder ein VMXNet3 vnic für das NFS-Netzwerk? weil Ich bekomme nur 1gbps zwischen Nexenta / Solaris und VMware mit einem ähnlichen Setup und kann nicht herausfinden, wie man mehr Geschwindigkeit bekommt. Welche Version von NexentaStor? Ich vermute, die Version, die sie zur Zeit haben, ist kaputt ... - Josh