Enterprise Server-based Storage: VMware vSAN

05.01.2018 / Cornlius Höchel-Winter / Referent

hoechel winter cornelius

aus dem Netzwerk Insider Januar 2018

Speicher ist neben der Rechenleistung und dem Netzwerk eine der drei wesentlichen Säulen im Rechenzentrum. Klassisch war dieser Speicher lokal in den Servern verbaut, der Zugriff erfolgte direkt über interne Bussysteme, das war einfach, eine eigene Infrastruktur hierfür nicht nötig.

Aber schon länger gibt es Anwendungen, die zentralen, über das Netzwerk erreichbaren Speicher erfordern (Datenbanken, Failover-Cluster etc.) und spätestens mit dem Einzug der Servervirtualisierung wurde zentraler Speicher ein unverzichtbares Designelement in modernen Rechenzentren. Die Antwort darauf waren große monolithische Speichersysteme, basierend auf proprietärer Hard- und Software und oft genug angebunden über ein eigenes Fibre-Channel-Netzwerk. Das ist teuer, komplex und aufwändig.

Die Servervirtualisierung zeigt aber in eine prinzipiell andere Richtung: Nutzung von Standardkomponenten, Abstraktion von der physischen Hardware und automatisierbare Steuerung der virtualisierten Ressourcen durch Software. „Server-based Storage“ ist ein Technologietrend, der diese Konzepte umsetzt und so eine enge Integration mit der Servervirtualisierung zulässt.

Schon lange gelten große, zentrale Speichersysteme als Kernkomponente der Datenhaltung in Unternehmensrechenzentren. Failover-Cluster und andere Redundanzmechanismen erfordern eine von den reinen Compute-Ressourcen unabhängige Datenhaltung. Aber spätestens mit dem Einzug der Virtualisierung von Servern wurde zentraler Speicher ein unverzichtbares Designelement im Rechenzentrum.

Der Grund hierfür ist einfach und liegt im Basiskonzept der Servervirtualisierung begründet: Virtuelle Maschinen werden unabhängig von konkreten physischen Ressourcen beschrieben und können daher prinzipiell auf beliebigen Virtualisierungshosts betrieben werden. Eines der wichtigsten Funktionsmerkmale der Servervirtualisierung ist daher die Möglichkeit, virtuelle Maschinen zur Laufzeit und unterbrechungsfrei auf andere Hosts verschieben zu können (bei VMware heißt dieses Feature vMotion, Microsoft und KVM nennen es Live Migration).

Alle Hypervisor-Hersteller unterstützen hierbei jetzt zwar das Verschieben der kompletten virtuellen Maschine inklusive zugeordneter virtueller Festplatten („Storage Migration“), jedoch ist es offensichtlich, dass solche Vorgänge deutlich mehr Zeit in Anspruch nehmen als wenn die Festplatten-Images auf einer zentralen Storage-Instanz liegen, auf die sowohl der Quell- als auch der Ziel-Host Zugriff haben, – von der zusätzlichen Last im Netzwerk ganz zu schweigen.

Das Verschieben aktiver virtueller Maschinen im laufenden Betrieb funktioniert nur dann innerhalb akzeptabel kurzer Zeitspannen, wenn nicht gleichzeitig mit der virtuellen Maschine – was in erster Linie der Hauptspeicher der virtuellen Maschine ist – auch die persistenten Daten, also die zugeordneten virtuellen Festplatten der Maschine bewegt werden müssen. (siehe Abbildung 1)

vMotion/Live Migration von virtuellen Maschinen

Abbildung 1: vMotion/Live Migration von virtuellen Maschinen

Das heißt:

  1. Betriebskonzepte produktiver RZ-Umgebungen, die auf eine dynamische Positionierung von virtuellen Servern und auf ein automatisiertes Ausrollen neuer Workloads setzen, sind ohne zentralen Speicher kaum realisierbar.
  2. Klassische lokale Festplatten in physischen Servern waren hierbei bislang eher hinderlich.
    Die standardmäßige Realisierung des Zugriffs auf einen gemeinsamen zentralen Speicher erfolgt bislang durch die großen Speichersysteme von EMC², Dell, IBM, Hitachi, HP, NetApp etc., die wir heute in praktisch jedem Unternehmensrechenzentrum sehen.

Diese Storage-Appliances haben unbestreitbar große Vorteile wie:

  • Alle (elektronische) Unternehmensdaten werden über ein System gehandhabt.
  • Der gesamte oder Teile der physischen Speicherkapazität können als Pool im Rechenzentrum zur Verfügung gestellt und damit optimal ausgenutzt werden.
  • Zugriffsrechte werden zentral verwaltet (wiewohl dies in der Regel nur auf der Ebene von LUNs oder Speicherbereichen und nicht auf Benutzer- oder Anwendungsebene erfolgen kann).
  • Zentraler Speicher kann nach Bedarf zugeteilt werden.
  • Es müssen wenige, meist lediglich zwei Systeme, die sich gegenseitig absichern, administriert werden.
  • Die Systeme beherrschen eine überbordende Funktionsvielfalt.
  • Hierzu gehören auch Möglichkeiten zu Datensicherung wie VTL (Virtual Tape Libraries) und Snapshots.

Die Nachteile solcher Appliances sind:

  • Proprietäre Betriebssysteme und proprietäre Bedienoberflächen benötigen speziell zugeschnittenes Know-how.
  • Spezial-Hardware und -Software, noch dazu in relativ kleinen Stückzahlen produziert, sind sehr teuer.
  • Der Zugriff (Disk-IOs) erfolgt über wenige Netzwerkschnittstellen.
  • Ein Ausbau der Speicherkapazität durch größere Festplatten oder zusätzliche Festplatten ist oft schwierig, aufwändig und meist klar begrenzt.
  • Die Systeme skalieren damit eher schlecht als recht.
  • Die Systeme sind wenig bis gar nicht in das Virtualisierungskonzept der Server integriert (Management, Automatisierung, Speicherzuordnung).
  • Von Hardware-Unabhängigkeit kann keine Rede sein – ganz im Gegenteil.

Beim Einsatz von Fibre Channel kommen noch eine ganze Reihe weiterer Probleme hinzu:

  • Die separate Netzwerk-Infrastruktur verursacht eine höhere Komplexität im RZ.
  • Zum Betrieb dieser Infrastruktur muss separates Know-how (inkl. zusätzlicher Zertifizierungen) aufgebaut werden.
  • Durch die zusätzliche Hardware (HBAs und FC-Switches) entstehen weitere Mehrkosten.
  • Im Vergleich zu Ethernet ist Fibre Channel klar ins Hintertreffen geraten:
    • Ethernet bietet pro Port Geschwindigkeiten von 100 Gbit/s gegen maximal 32 Gbit/s bei Fibre Channel.
    • 40/100-Gbit-Ethernet-Komponenten sind kostengünstiger als 16/32-Gbit-FC-Komponenten.
    • Viele Server haben heute 10-Gbit-Ethernet-Schnittstellen auf dem Mainboard.
    • Ethernet-Fabrics skalieren deutlich höher als FC-Fabrics.
  • Cloud-Umgebungen basieren auf IP! Damit können in der Cloud praktisch alle Storage-Protokolle unterstützt werden – aber nicht Fiber Channel.
  • Der Fibre-Channel-Markt schrumpft:
    • Die Umsätze gehen um 10 – 15 % pro Jahr zurück.
    • Die Anbieter von FC-Equipment werden immer weniger. Zuletzt hat Broadcom Brocade übernommen. Das verspricht keine fallenden Preise.

Alle Aspekte zusammen genommen passen diese Systeme damit jedoch in die alten, klassischen Betriebskonzepte unserer Rechenzentren: Der Betrieb von Servern, von Anwendungen, des Netzwerks und eben auch des Datenspeichers sind fein säuberlich voneinander getrennt und wird jeweils durch eine eigene Betriebsmannschaft geleistet. Mehr oder wenige strenge Vorgaben beschreiben die Schnittstellen zwischen den Technologien und ihrer Administratoren.

Die Speichersysteme selbst bzw. deren Hersteller verstärken diese Separierung von den anderen Betriebsbereichen durch proprietäre Betriebssysteme, proprietäre Bedienoberflächen und unüberschaubar viele Funktionsmerkmale, zugeschnitten exakt auf ihre Klientel.

Software-defined Data Center

Abbildung 2: Software-defined Data Center

Diese separierten Betriebskonzepte sind, wenn Sie sich auf den Weg zum SDDC (Software-defined Data Center) oder zur Private Cloud machen wollen, überholt und hinderlich.

Der Begriff „Software-defined Data Center“ steht im Kern für die durchgängige Automatisierung aller RZ-Ressourcen von Compute, Storage und Netzwerk und beschreibt damit die technologische Vorstufe zum Cloud Computing. Nur wenn wirklich alle betroffenen Ressourcen vollautomatisch oder zumindest per Mausklick einer virtuellen Anwendungsumgebung zur Verfügung gestellt werden können, kann die heutzutage notwendige schnelle Umsetzung von geschäftskritischen Projekten oder Kundenanforderungen gelingen – und das geht eben nur softwarebasierend. Der Aufbau dedizierter Hardware-Infrastrukturen und deren Betrieb dauert einfach zu lange.

Anforderungen an den Grundpfeiler „Storage“ des Software-defined Data Center sind daher:

Mit „Server-based Storage“ gibt es jetzt eine Speichertechnologie, die einige der oben angeführten Kritikpunkte adressiert, insbesondere:

  • Integration in eine gemeinsame Administration und Management mit der Server-Virtualisierung,
  • Hardware-Unabhängigkeit durch die Einführung einer Abstraktionsschicht auf der Basis von Standard-i386-Hardware,
  • bessere Skalierbarkeit und Erweiterungsfähigkeiten.

Neben einer Reihe spezieller Produkten haben insbesondere die beiden großen Hypervisor-Hersteller VMware und Microsoft dieses Thema für sich entdeckt und in ihr Virtualisierungsportfolio aufgenommen. Im Folgenden wird die VMware Lösung vSAN detailliert betrachtet.

VMware vSAN

VMware hatte bereits 2014 unter dem Produktnamen „Virtual SAN“ begonnen ihre Version eines im Hypervisor integrierten Software-defined Storage zu veröffentlichen. Aus „Virtual SAN“ wurde dann im Laufe der nachfolgenden Versionen die heute übliche Bezeichnung vSAN.

vSAN wurde entwickelt, um lokalen Speicher in ESXi-Hosts zu verwenden und daraus einen verteilten, ausfallsicheren Speicher-Pool zu bauen. (siehe Abbildung 3)

Architektur von VMware vSAN

Abbildung 3: Architektur von VMware vSAN

Ein vSAN-Cluster besteht aus bis zu 64 ESXI-Servern, jeder dieser Hosts steuert seine Magnetplatten und Flash-Laufwerke (SSDs) bei, um daraus einen verteilten vSAN-Datastore zu bauen.

Ursprünglich (in vSphere 5.5) waren nur sogenannte hybride Konfigurationen unterstützt. Hierbei sind pro Host sowohl Magnetfestplatten als auch Flash-Laufwerke zwingend vorgeschrieben, seit vSphere 6.0 werden jetzt auch All-flash-Architekturen unterstützt.

Speichergruppen

Alle lokalen Speicherlaufwerke werden pro Server auf bis zu fünf Speichergruppen (sogenannte „disk groups“) verteilt. Jede dieser Speichergruppen besteht aus genau einem Flash-Laufwerk als Cache Storage und maximal sieben weiteren Laufwerken, die als eigentlicher Datenspeicher genutzt werden. Pro vSAN-Host werden folglich maximal fünf SSDs unterstützt, die als Cache-Laufwerk genutzt werden, plus maximal 35 (= 5 * 7) weitere Datenlaufwerke – entweder SSDs oder klassische Magnetfestplatten. Die Minimalausstattung für einen Host, der Speicher zum vSAN-Pool beisteuert, ist zwei Laufwerke, wobei mindestens ein Laufwerk eine SSD ist.

Kurze Anmerkung: Es ist keineswegs notwendig, dass jeder Host eines vSAN-Clusters Speicher zur Verfügung stellt, es kann auch Hosts ohne lokalen Speicher geben!

Über diese Speichergruppen ist also jedem Datenlaufwerk exakt ein Cache-Laufwerk zugeordnet.

Das heißt, einerseits bilden Speichergruppen eine zweistufige Speicherarchitektur mit einem vorgeschalteten Lese-Schreib-Cache und nachgeschalteten Speicher („capacity tier“) und andererseits muss man sie als eigene Fehlerdomäne ansehen. Denn wenn der Cache-Tier ausfällt (und dieser Tier besteht ja nur aus einem einzigen Laufwerk) oder wenn der zugehörende Controller ausfällt, dann wird die gesamte Gruppe und damit alle virtuellen Maschinen, die auf Daten dieser Gruppe zugreifen, in Mitleidenschaft gezogen.

Speicherkonzepte

vSAN ist ein objektbasierendes Speichersystem, dediziert zugeschritten auf die Nutzung von virtuellen Maschinen unter ESXi und tief integriert in vSphere.

Objekte im Sinne von vSAN sind daher alle Dateien, die es typischerweise im Zusammenhang mit virtuellen Maschinen gibt:

  • Konfigurations- und Logdateien (.VMX)
  • Container für virtuelle Festplatten (.VMDK)
  • Swapfiles für virtuelle Maschinen
  • Snapshots
  • etc.
vSAN Disk Groups mit SSDs und HDDs

Abbildung 4: vSAN Disk Groups mit SSDs und HDDs

Jedes Objekt kann aus mehreren sogenannter „Komponenten“ bestehen. Solche Komponenten werden aus unterschiedlichen Gründen und unterschiedlicher Art und Weise erzeugt:

  • Verteilung der Daten auf einzelne Komponenten („Striping“ – RAID-0):
    Jede Komponente in vSAN kann maximal 255 GB groß sein. Ist ein Objekt größer, wird es in passende Komponenten zerlegt. Da mittlerweile virtuelle Festplatten mit 62 TB unterstützt werden, werden gerade große VMDK-Container regelmäßig zerlegt.

    Darüber hinaus zerlegt vSAN auch Objekte, die größer sind als der verfügbare Plattenplatz, oder aus anderen Gründen wie die gleichmäßige Auslastung der Datenplatten, zur Optimierung von Rebuilds etc.

    Der Konfigurationsparameter „NumberOfDiskStripesPerObject“ bestimmt maßgeblich die Verteilung solcher Striping-Komponenten auf physische Laufwerke. Der Parameter legt fest, auf wie viele physische Datenplatten die Komponenten eines RAID-0 mindestens verteilt werden müssen.

    Der Default-Wert dieses Parameters ist 1, das heißt, wenn der Parameter nicht gesetzt ist, können alle Komponenten eines RAID-0 durchaus auf demselben Laufwerk platziert werden. Wird der Parameter auf einen größeren Wert gesetzt (Maximum ist 12), dann müssen die Komponenten des betreffenden Objekts auf mindestens ebenso viele Festplatten verteilt werden. Im Umkehrschluss bedeutet dies natürlich, dass das Objekt in mindestens so viele RAID-0-Komponenten zerlegt werden muss, selbst wenn dies aufgrund der Größe des Objekts nicht notwendig wäre. Dass vSAN aus anderen Gründen gegebenenfalls noch mehr Komponenten erzeugt, bleibt hiervon unberührt.

    Dieses „Striping“ kann unter Umständen helfen, die Performance von I/O-intensiven Anwendungen zu verbessern, da die Daten und damit auch die i/Os auf unterschiedliche Laufwerke – im Falle von Magnetplatten auf unterschiedliche Spindeln – verteilt werden. Erfolgsversprechend ist dies aber offensichtlich nur dann, wenn die betroffenen Laufwerke I/O-mäßig nicht schon ausgelastet sind.

  • Redundanz der Daten (RAID-1 und RAID-5/6):
    Über Storage-Policies (siehe Abbildung 5) können Regeln zur Fehlertoleranz festgelegt werden. Hierfür stehen zwei Redundanzmechanismen zur Verfügung Spiegelung (RAID-1) und Erasure Coding (RAID-5/6)
vSAN Storage Policy

Abbildung 5: vSAN Storage Policy

Beispiele für Objekte und deren erzeugte Komponenten sind:

A) Eine virtuelle Festplatte wird mit 600 GB angelegt.

  • Das dazugehörende Objekt wird in drei RAID-0-Komponenten zerlegt, sodass jede Komponente kleiner als 255 GB ist.
  • Mit der Default-Policy wird dieses RAID-0-Konstrukt mit RAID-1 auf zwei verschiedene Hosts gespiegelt.
  • Um schließlich Split-Brain-Situationen zu vermeiden, wird eine sogenannte Witness-Komponente auf einem dritten Host erzeugt.

Das erzeugte Objekt für diese virtuelle Festplatte besteht damit aus sieben Komponenten, verteilt auf drei Hosts:

RAID-1
RAID-0
Komponente-A auf Host 1
Komponente-B auf Host 1
Komponente-C auf Host 1
RAID-0
Komponente-A* auf Host 2
Komponente-B* auf Host 2
Komponente-C* auf Host 2
Witness auf Host 3

B) Wird im obigen Beispiel der Container statt mit RAID-1 mit RAID-5/6 geschützt, werden nur vier Komponenten erzeugt, drei Datenkomponenten und eine weitere mit Parity-Informationen für einen eventuellen Rebuild. Diese vier Komponenten müssen jetzt aber auf vier Hosts verteilt werden, um den Ausfall eines Hosts kompensieren zu können:

RAID-5/6
Komponente-A auf Host 1
Komponente-B auf Host 2
Komponente-C auf Host 3
Komponente-P auf Host 4

C) Ist der Festplatten-Container (oder irgendeine andere Datei wie z. B. die Konfigurationsdatei einer VM) kleiner als 255 GB, entfällt die RAID-0-Zerlegung und die Datei wird auf zwei Hosts gespiegelt und die Witness-Komponente auf einem dritten Host erzeugt:

RAID-1
Komponente-A auf Host 1
Komponente-A* auf Host 2
Witness auf Host 3

D) Ist zusätzlich der Parameter NumberOfDiskStripesPerObject beispielsweise auf 2 gesetzt, werden auch kleinere VMDK-Container aufgesplittet und auf verschiedene Festplatten verteilt:

RAID-1
RAID-0
Komponente-A auf Host 1 –Laufwerk A
Komponente-B auf Host 1 – Laufwerk B
RAID-0
Komponente-A* auf Host 2 – Laufwerk A
Komponente-B* auf Host 2 – Laufwerk B
Witness auf Host 3

Fehlertoleranz

Die wichtigsten Parameter zur Definition des gewünschten Grads an Fehlertoleranz (siehe Abbildung 5) sind:

  • Number Of Failures To Tolerate (FTT)
    Diese Policy bestimmt die Anzahl von Fehlern, die auf Cluster-Ebene toleriert werden können ohne den Zugriff auf Daten zu verlieren. Der Default-Wert ist 1, der Parameter kann auf Werte zwischen 0 und maximal 3 gesetzt werden.
    Realisiert wird diese Fehlertoleranz selbstverständlich über Datenredundanz, das heißt der Parameter bestimmt auch, wie oft identische Daten im Cluster vorgehalten werden, und hat damit maßgeblichen Einfluss auf die notwendige Brutto-Gesamtkapazität im Cluster.
  • Fault Tolerance Method
    Mögliche Werte sind „RAID-1 mirroring“ und „RAID-5/6 erasure coding“, neben „keine Fehlertoleranz“, Default ist „RAID-1“.

    Mit RAID-1 werden maximal drei Fehler im Cluster aufgefangen, die notwendige Anzahl verfügbarer Hosts (bzw. Fehlerdomänen) berechnet sich aus „2*FTT + 1“, mit FTT = Number Of Failures To Tolerate (siehe Abbildung 7)

    Mit RAID-5/6 werden nur maximal zwei tolerierbare Fehler im Cluster unterstützt, wofür ein Host (bzw. eine Fehlerdomäne) mehr notwendig ist als in einer Konfiguration mit RAID-0 („2*FTT + 2“). Für FTT=1 werden die Daten auf drei Datenkomponenten verteilt und eine zusätzliche Parity-Komponente erzeugt (RAID-5: 3 + 1), für FTT=2 werden die Daten auf vier Datenkomponenten verteilt und zusätzliche zwei Parity-Komponenten erzeugt (RAID-6: 4 + 2).

    RAID-1 (mirroring) ist klassischerweise die einfachste Redundanzmethode und wird insbesondere für Umgebungen empfohlen, wo hohe I/O-Werte erreicht werden sollen. Der Vorteil von RAID-5/6 liegt im geringeren Verbrauch von physischem Speicherplatz. RAID-6 benötigt für FTT=2 nur das 1,5-fache der originalen Datenmenge, während RAID-1 hierfür den dreifachen Speicherplatz verbraucht und damit natürlich deutlich teurer ist (Abbildung 6 fasst die Anforderungen an den Speicherplatz zusammen).

    Die Nachteile des Erasure-Coding-Verfahrens liegen im höheren Overhead bei Schreiboperationen. Zum einen werden nämlich CPU-Ressourcen zur Berechnung der Parity-Informationen verbraucht und zum anderen entsteht eine höhere I/O-Last, da zur Parity-Berechnung Datenblöcke aller Datenlaufwerke gelesen werden müssen. VMware versucht diesen Overhead dadurch auszugleichen, dass RAID-5/6 nur in All-Flash-Konfigurationen zugelassen ist.

Speicherplatzanforderungen

Abbildung 6: Speicherplatzanforderungen

Beide Parameter können via Storage Policy sowohl auf virtuelle Maschinen als auch auf individuelle VMDK-Container angewendet werden. Falls einer der Hosts, die Komponenten eines Objekts halten, (oder mehrere, falls konfiguriert) offline geht, sorgen die Verfahren dafür, dass alle Daten weiterhin verfügbar sind. Fällt ein Host oder eine Speicherkomponente (Festplatte, Flash-Laufwerk, Storage-Controller) dauerhaft aus, erstellt vSAN im Hintergrund die ausgefallen Komponenten auf einem weiteren Host automatisch neu, um den ursprünglichen Redundanzgrad wieder zu erlangen.

Die minimale Anzahl Hosts in einem vSAN-Cluster ist also drei. In einem solchen Szenario wird lediglich Mirroring (RAID-1) mit FTT=1 unterstützt. Die Zahl Drei rührt daher, dass jedem Spiegel (aus zwei Komponenten) eine dritte, sogenannte „Witness“-Komponente hinzugefügt, um Split-Brain-Situationen zu verhindern. Seit Version 6.1 gibt es auch einen sogenannten „Witness Host“, der diese Rolle in einer Konfiguration mit nur zwei echten vSAN-Hosts übernehmen kann. Dieser „Witness Host“ ist eine virtuelle Appliance, die eine Instanz von vSphere und vSAN ausführt und die man sich bei VMware herunterladen kann.

Benötigte und empfohlene Hostanzahl

Abbildung 7: Benötigte und empfohlene Hostanzahl

vSAN unterstützt darüber hinaus die Definition von Fehlerdomänen und einer sogenannten Stretched-Cluster-Konfiguration.

„Fehlerdomänen“ erweitern einfach das Default-Konzept, wo zur Fehlertoleranz Daten redundant auf unterschiedlichen Hosts gespeichert werden, sodass Hosts neu gestartet, ausgeschaltet und sogar ausfallen können, ohne dass dies die Verfügbarkeit der Daten beeinträchtigt. Per Default ist also jeder Host eine eigene Fehlerdomäne.

Mit der Einführung von Fehlerdomänen können jetzt mehrere vSAN-Hosts (zum Beispiel alle Hosts im selben Rack) zu einer Fehlerdomäne zusammengefasst werden, sodass jetzt sogar ganze Gruppen von Hosts gleichzeitig ausfallen können, ohne dass dies die Verfügbarkeit der Daten beeinträchtigt.

Im Sinne der oben diskutierten Fehlertoleranzverfahren ist der Totalausfall aller Hosts einer Fehlerdomäne nur ein Fehler. Natürlich müssen aber die Mindestanforderungen aus Abbildung 7 jetzt auf die definierten Fehlerdomänen (z. B. Racks) übertragen werden! In einem Rechenzentrum mit nur zwei Racks führt das dazu, dass ein drittes Rack zumindest für den Witness Host benötigt wird.

Mit „Stretched Cluster“ erweitert VMware dieses Konzept erneut um eine weitere Stufe. Statt, wie gerade beschrieben, den Ausfall von Racks abzusichern, soll mit Stretched Cluster der Ausfall eines ganzen Rechenzentrums abgefangen werden. Damit wird vSAN auch in Desaster-Recovery-Szenarien möglich.
„Stretched Cluster“ führt hierzu im Wesentlichen eine weitere Redundanzebene ein und sorgt dafür, dass alle Daten aus Rechenzentrum A gespiegelt auch in Rechenzentrum B vorliegen – und zwar unabhängig vom lokalen Redundanzverfahren, das weiterhin die Daten innerhalb der Rechenzentren schützt. „Stretched Cluster“ stellt eine Active-Active-Umgebung zur Verfügung. Das heißt, jeder physische Schreibvorgang in Rechenzentrum A führt zu einem entsprechenden Schreibvorgang auf dem Spiegel in Rechenzentrum B und umgekehrt.

Für das Netzwerk empfiehlt VMware daher eine maximale Round Trip Time (RTT) von 5 msec, was grob einer maximalen Entfernung von 500 km zwischen beiden Rechenzentren bedeutet. Die benötigte Bandbreite hängt natürlich im Wesentlichen von der Anzahl und dem Umfang aller Schreibvorgänge zusammen, VMware empfiehlt pro Schreib-I/O mit 4 kB zu kalkulieren und 40 % für vSAN-Overhead und zusätzlich 25 % für Rebuilds einzubeziehen. Für 100.000 I/Os und einem Lese-Schreib-Verhältnis von 70:30 kommt man so auf

30.000 IO/sec * 4 kB/IO * 1,4 * 1,25 = 210 MB/sec = 1,68 Gb/sec

Die Anbindung an die Witness-Site ist dagegen nicht besonders kritisch: 200 msec RTT und relativ geringe Bandbreite.
Wie bei einer lokalen Zwei-Node-Konfiguration (und vergleichbaren Desaster-Recovery-Lösungen anderer Storage-Hersteller) wird auch bei Stretched Cluster ein remote Witness-Host an einer dritten Lokation benötigt, um Split-Brain-Situationen aus dem Weg zu gehen.

Im Detail führt VMware in Version 6.6 für Stretched Cluster ein paar neue Mechanismen und Parameter ein:

  • Der alte Parameter „Failures To Tolerate“ heißt jetzt „Primary Failures To Tolerate“.

    Ohne Stretched Cluster hat er dieselbe Bedeutung wie vorher. Mit Stretched Cluster kann er nur die Werte 0 oder 1 annehmen. 1 bedeutet, die Ressource wird über beide Rechenzentren gespiegelt, 0 bedeutet, die Ressource befindet sich nur lokal auf einer der beiden Seiten.

    Der neue Parameter „Affinity“ legt in diesem Fall fest, auf welcher der beiden Seite die Ressource platziert werden soll.

  • Es gibt einen neuen Parameter „Secondary Failures To Tolerate“, der in einer Stretched-Cluster-Umgebung die Rolle des alten Parameters „Failures To Tolerate“ übernimmt und regelt, wie die Ressource RZ-lokal geschützt wird.
  •  Ein neuer Standardmechanismus regelt, dass lesende Zugriff lokal und nicht über die WAN-Strecke erfolgen. Ohne Stretched Cluster werden lesende Zugriff im vSAN nämlich über alle verfügbaren Spiegel gleichmäßig verteilt.
vSAN Stretched Cluster

Abbildung 8: vSAN Stretched Cluster

Cache-Nutzung

In gemischten (hybriden) Konfigurationen bestimmt die Zahl der SSDs pro Server die Zahl der Speichergruppen, alle Magnetplatten werden hierbei dem Storage Tier zugeordnet und auf die Speichergruppen verteilt. Die Cache-SSD jeder Speichergruppe wird hierbei standardmäßig zu 70 % als Lese-Cache und zu 30 % als Schreib-Puffer genutzt.

In einer All-Flash-Konfiguration wird das Cache-Laufwerk dagegen nur als Schreib-Puffer genutzt, eine Lese-Cache wird als unnötig angesehen. VMware empfiehlt in einer All-Flash-Konfiguration jedoch zwei unterschiedliche Typen von Flash-Laufwerken einzusetzen: Schnelle Laufwerke mit einer höheren Lebensdauer (wegen der vielen Schreibzugriffe) wie beispielsweise hochwertige NVMe-Karten (Non-Volatile Memory Express) als Cache-Laufwerke und Standard-SSDs mit einer höheren Kapazität zum günstigeren Preis als Datenspeicher.

In einer hybriden Konfiguration erfolgen lesende Zugriffe also zunächst immer über die Cache-Laufwerke, erst wenn der gesuchte Datenblock dort nicht gefunden wird („cache miss“), wird er von der zugehörenden Festplatte gelesen. Da vSAN lesende Zugriffe gleichmäßig über alle (lokalen) Spiegel verteilt und um trotzdem die Effektivität dieses Caches nicht zu gefährden, wird pro Datenblock eine feste Zuordnung zu einem zuständigen Spiegel gehalten. Das heißt, ein bestimmter Datenblock wird immer von derselben Festplatte beziehungsweise vom selben Cache-Laufwerk gelesen, gleichzeitig werden aber die anderen Datenblöcke gleichmäßig über die Caches der anderen Spiegel verteilt.

Der Schreib-Puffer der Cache-Laufwerke fungiert dagegen als echter Puffer für alle Schreibzugriffe. Da hierbei selbstverständlich die Verfügbarkeitsanforderungen der betreffenden Anwendung oder virtuellen Maschine nicht verletzt werden dürfen, erfolgen Schreibzugriffe immer gleichzeitig auf alle Caches aller betroffenen Spiegel im Cluster.

In hybriden Konfigurationen wird dieser Schreib-Puffer auf einer regelmäßigen Basis auf die Festplatten geschrieben, wobei aus Performance-Gründen zusammenhängende Blöcke bevorzugt werden.

Bei All-Flash-Konfigurationen steht dagegen die gesamte Cache-Kapazität als Schreib-Puffer zur Verfügung, daher setzt VMware hier auf einen etwas anderen Algorithmus: Die Datenblöcke bleiben solange im Cache wie sie geändert werden („hot blocks“). Erst wenn über einen längeren Zeitraum keine Updates mehr erfolgen („cold blocks“), werden die Blöcke in den eigentlichen Datenspeicher geschrieben und aus dem Cache gelöscht. Dieses Verhalten reduziert unter anderem die Schreibzugriffe auf die Daten-SSDs und verlängert damit deren Lebensdauer.

Damit auch dieser Schreib-Puffer effektiv genutzt wird, empfiehlt VMware eine Cache-Größe, sodass alle regelmäßig veränderte Blöcke, mindestens aber 10 % der effektiv genutzten Daten im Cache gehalten werden können. Dass dies nur ein Daumenwert ist und von Anwendung zu Anwendung deutlich variieren kann, liegt auf der Hand.

Skalierbarkeit

Die Architektur von vSAN ermöglicht flexible, vielfältige Erweiterungsmöglichkeiten sowohl in die Breite als auch in die Höhe:

  • Scale Up durch das Hinzufügen weiterer Kapazitäten (Laufwerke) zum Storage Tier einzelner oder aller Hosts
  • Scale Up durch das Hinzufügen weiterer Speichergruppen (sowohl Speicher- als auch Cache-Laufwerke) zu vorhandenen Hosts
  • Scale Out durch das Hinzufügen weiterer Hosts mit eigener Speicherkapazität zum vSAN-Cluster

VMware empfiehlt klar ein Scale Out durch neue Hosts, da dies die einfachere und risikoärmere Methode zur Erweiterung eines vSAN-Clusters ist. Das Hinzufügen neuer Hosts erfolgt ohne Unterbrechung des laufenden Betriebs, die neuen Speicherkapazitäten werden in den vSAN-Pool integriert und transparent im Hintergrund mit Daten gefüllt.

Skalierbarkeit von vSAN

Abbildung 9: Skalierbarkeit von vSAN

Ein Scale Up mit beispielsweise größeren Festplatten oder einfach nur mehr Festplatten auf der Kapazitätsseite verändert das Verhältnis Speicherkapazität zu Cachegröße und dies kann Auswirkungen auf die Zugriffszeiten und damit auf die Performance der Anwendungen haben.

Etwas problemfreier ist das Hinzufügen zusätzlich Speichergruppen inklusive dazugehörendem Cache-Laufwerk, hier spielt nur die Leistungsfähigkeit des betroffenen Controllers eine Rolle.

Eine andere Möglichkeit zu Skalieren ist, die zusätzlichen Kapazitätserweiterungen von Anfang an vorzusehen und die Hosts direkt mit genügend großen Cache-Laufwerken aufzubauen und so bei Erweiterungen Performanceprobleme durch zu kleinen Cache zu vermeinen („Design for growth“).

Obwohl es aus Sicht der Architektur von vSAN prinzipiell egal ist, wie die jeweiligen Hosts oder die einzelnen Speichergruppen aufgebaut sind und man daher durchaus auch nur einzelne Hosts aufrüsten könnte, spricht vieles dafür, alle Hosts gleichartig auszustatten und zu konfigurieren. Ansonsten kann das einfache Verschieben einer Speicherkomponente oder deren Spiegel auf eine andere Speichergruppe dazu führen, dass sich die Anwendung plötzlich anders verhält.

Last but not least erfordert eine Scale-Up-Aufrüstung selbstverständlich immer, dass noch genügend freie Slots für neue Laufwerke vorhanden sind. Schon aus diesem Grund wird in vielen Fällen ein simples Scale Out durch weitere Hosts leicht umzusetzen sein.

Fazit

VMware liefert mit vSAN eine Speichertechnologie, die die traditionellen Hersteller massiv unter Druck setzen wird. Die Hardware besteht im Wesentlichen aus Standardservern und Standard-Speicherlaufwerken, die Konfiguration des Speicher-Pools erfolgt weitgehend automatisch und die Administration ist eng mit der Servervirtualisierung und der Administration von virtueller Maschinen verbunden.

Selbstverständlich gilt es wie bei klassischen vSphere-Realisierungen den VMware Compatibility Guide zu beachten. Insbesondere bei All-Flash-Konfigurationen haben die Cache-Laufwerke aufgrund der hohen Schreiblast besondere Anforderungen bezüglich ihrer Lebensdauer. Hier zu sparen bedeutet am falschen Ende zu sparen.

Die Anforderungen an das Netzwerk hält VMware traditionell gering. Dass die Anbindung an das vSAN-Netzwerk redundant ausgelegt werden soll, versteht sich von selbst, und auch die Forderung nach 10-Gb-Schnittstellen in einer All-Flash-Umgebung kann man heutzutage für die Anbindung von zentralem Speicher als moderat bezeichnen. Jumbo-Frames können genutzt werden, von einer expliziten Einführung nur für vSAN rät VMware ab, der Nutzen sei zu gering.

Die Notwendigkeit, Multicast im vSAN-Netz zu unterstützen, besteht übrigens seit der Version 6.6 nicht mehr.

VMware verfolgt mit vSAN konsequent die Idee des Software-defined Data Center und vervollständigt damit den Baustein „Software-defined Storage“:

  • Die Integration in das vCenter Management und das Verankern von Storage Policies (zur Steuerung von Verfügbarkeit und Performance) direkt an der virtuellen Maschine ermöglichen das vollständige automatische Ausrollen von VMs inklusive deren Speicher und Anforderungen daran.
  • Die weitgehend automatische Konfiguration des Speicherpools ermöglicht einfache und schnelle Scale-Out-Erweiterungen und die transparente Integration unterbrechungsfrei im laufenden Betrieb.

Damit können Kunden zunächst einmal mit einer relativ kleinen Umgebung starten und sukzessive weitere Hosts und Speicherkapazität hinzufügen und genauso im Laufe der Zeit die bestehende Speicherinfrastruktur durch modernere, leistungsfähigere Hosts ersetzen.

Dies ist deutlich effektiver und eben auch kostengünstiger als die Anschaffung großer monolithischer Speichersysteme und diese dann nach einigen Jahren komplett auszutauschen.

Der Netzwerk Insider gehört mit seinen Produkt- und Markt-Bewertungen rund um IT-Infrastrukturen zu den führenden deutschen Technologie-Magazinen. Der Bezug des Netzwerk Insiders ist kostenlos.

© Copyright - ComConsult