Storage Spaces Direct in Windows Server 2016

Technical Preview 4

Hochverfügbarer Speicher mit günstigen Komponenten

Bereits seit Server 2012 verfolgt Microsoft mit Storage Spaces den Ansatz, hochverfügbaren Speicher ohne teure und komplexe Fibre-Channel Infrastruktur bereitzustellen. So ist es seit Server 2012 möglich, externe Festplattengehäuse ohne eigene Intelligenz (JBOD) per SAS an alle Server eines Failover Clusters anzubinden. 

Basis der Storage Spaces ist ein Pool, der aus den Festplatten der JBODS gebildet wird, der Pool ist die Grundlage um virtuelle Festplatten zu generieren, die als Cluster Shared Volume im Failover Cluster genutzt werden. Sei es als Speicher für Hyper-V Maschinen, die auf demselben Failover Cluster betrieben werden oder als hochverfügbaren SMB3 Share, der wiederum als Ablage für Hyper-V Maschinen von anderen Failover Clustern dienen kann. Voraussetzungen sind, alle Server müssen eine physische SAS Verbindung zu jedem JBOD haben und es können nur SAS HDDs und SAS SSDs verwendet werden.

(Bild: TechNet)

Der Grund warum diese Lösung keinen großen Anklang fand denke ich ist dem Umstand geschuldet, dass die benötigten JBODs, SAS HBAs und SAS Festplatten bzw. SAS SSDs doch noch recht teuer sind und damit wieder in die Regionen von professionellen FibreChannel Lösungen kommt. Gleichzeitig ist durch die maximale Länge der SAS Kabel und die maximale Anzahl von Hostports der JBODs die Skalierung limitiert. SAS Switche sind hier nur begrenzt hilfreich, da diese zwar die Portlimitierung überwinden können nicht aber das Kabellängenproblem.

Ungeachtet dessen wird diese Lösung weiterhin von Server 2016 unterstützt und hat in gewissen Einsatzszenarien auch seine Daseinsberechtigung.

Was hat sich nun in Server 2016 Technical Preview 4 geändert?

Um auf noch mehr zusätzliche Hardware verzichten zu können, hat Microsoft mit Server 2016 eine weitere Lösung namens Storage Spaces Direct (S2D) eingeführt. Die Idee dahinter ist, den lokal verbauten Speicher eines jeden Servers im Failover Cluster zu nutzen und in einem Pool zusammenzufassen, wobei die Verteilung der Daten auf andere Knoten dabei über RDMA fähige 10GbE Adapter mit SMB3 bewerkstelligt wird.

(Bild: TechNet)

Aus diesem Pool heraus werden dann virtuelle Festplatten generiert die je nach Einsatzzweck mit unterschiedlichen Redundanzen versehen werden können. Zur Verfügung stehen Two-Way Mirror (Spiegelt Daten auf zwei Knoten), Three-Way Mirror (Spiegelt Daten auf 3 Knoten) und Parity (erasure coding). Die virtuellen Festplatten können dann wiederum die Cluster Shared Volumes beherbergen und z.B. ein Cluster aus Storage und Hyper-V zur Verfügung stehen. Microsoft vollzieht mit diesem Ansatz einen konsequenten Schritt hinzu hyperkovergenten Systemen vergleichbar dem vSAN von VMware.

Grundsätzlich werden für Storage Spaces Direct  in der Technical Preview 4 mindestens vier und identisch ausgestatte  Knoten  Dies rührt daher, dass die kleinste Redundanz ein Two-Way Mirror ist bei dem zwei Kopien auf den Servern verteilt werden und dem Umstand, dass immer mehr als 50% der Knoten online sein müssen um ein Storage Quorum zu gewährleisten. Ob sich die Anzahl der Server in der Final Release noch ändern wird ist zur Zeit unklar, ein hochverfügbarer Cluster aus zwei Server samt Storage wäre aber meiner Meinung nach für KMUs eine geniale Lösung – mal sehen was noch kommt. 

Die aktuelle Mindestkonfiguration sehe ich allerdings in mindestens fünf Servern. So können unter Berücksichtigung des Storage Quroums bis zu zwei Knoten ausfallen anstatt des einen Knotens bei vier Servern.

Dem Wegfall der SAS Infrastruktur sei Dank, sind nun endlich auch günstige SATA Festplatten und SATA SSDs verwendbar, auch neu hinzugekommen ist der Support für NVMe SSDs. SSDs können als read/write Cache und als Speicher für Metadaten dienen. Auch all-flash Konfigurationen mit NVMe SSDs als write Cache  und als Speicher für Metadaten für virtuelle Festplatten bestehend aus SSDs sind möglich. Der Einsatz von SSDs ist in jedem Fall ratsam um die etwas niedrigere Schreibperformance beim Mirroring auszugleichen.

Die Erweiterbarkeit der Lösung gestaltet sich prinzipiell recht einfach, nur einen weiteren Cluster Knoten mit identischer Ausstattung in den Cluster einbinden. Die Verteilung der Daten auf die hinzugekommenen Festplatten übernimmt Storage Spaces Direct automatisch im Hintergrund. Beim Hyper-Converged Szenario muss allerdings bedacht werden, dass neben dem Festplattenplatz auch genug Rechenpower und Arbeitsspeicher bereitgestellt wird um die evtl. zusätzlich geplanten Hyper-V Maschinen zu bedienen.

Abb. 1

Ansicht der Cluster Knoten als Enclosures mit verfügbaren Festplatten. Aus Storage Sicht ist jeder Server im S2D Verbund ein Enclosure mit Platten.

Abb. 2

Ansicht des erstellten Pools mit den darin enthaltenen Festplatten

Abb. 3

Ansicht der virtuellen Disk, die als Cluster Shared Volume bereitgestellt wurde.

Ein weiteres neues Feature sind Multi-Resilient Virtual Disks. In einer virtuellen Disk werden hier zwei Tiers erstellt, ein Mirror-Tier auf das immer als erstes geschrieben wird und ein zweites Parity-Tier auf welches Daten vom Mirror-Tier nach Bedarf (sobald es voll wird) bewegt werden. Der Vorteil des schnellen Schreibens auf das Mirror-Tier und der geringere Platzbedarf vom Parity-Tier wird hiermit vereint. Die Performance von Parity-Tiers war im alten Storage Space Konzept noch relativ langsam und wenig ratsam einzusetzen, hier bleibt durch Tests abzuwarten ob Server 2016 Verbesserungen erzielen kann. Ansonsten wäre dies ein interessanter Kompromiss zwischen Geschwindigkeit und weniger Verlust beim Speicherplatz.

Die Einrichtung und das Management muss zumindest in der TP4 komplett mittels Powershell erfolgen. Es gibt nur sehr eingeschränkte Möglichkeiten dies über die GUI zu konfigurieren, allerdings fehlen dann viele Optionen, die nur über die Powershell zur Verfügung stehen. Also besser gleich alles per Powershell einrichten und managen. Hier hilft einem der Powershell Editor (Powershell ISE). Wenn man alle Basis Befehle zum Einrichten und Managen zusammen hat kann man diese mithilfe des Editors einfach zeilenweise ausführen.