Frank Karls

 

Windows 2012 R2 Storage schematisch:

http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-38-13-metablogapi/2335.image_5F00_254636DF.png

Der Windows Server 2012 R2 hat ein umfassendes Update der Speicherbereitstellung erhalten, mit einigen genialen neuen Features, die bisher nur dedizierten Storage Appliances vorbehalten waren.

Features:
– Thin Provisioning
– Simple-, Mirror- und Parity-Storage Layout
– 3-Way Mirroring
– Hot Spare Disk
– 2-Tier Storage
– Dual Parity Storage
– Write-Back Cache

Letzteres sehen wir uns genauer an – den Write-Back Cache.

Cache, oder kein Cache?
Um Leistungsspitzen abzudämpfen, (Datenbank-, Mailserver-, oder Virtualisierungs- Szenarien), nutzen kann theoretisch ein Cache-Mechanismus verwendet werden, um zufällige, oder gleichzeitige Datenzugriffe in einem Cache zwischen zu speichern und Arbeitslast von rotierenden Speichersystemen zu nehmen, für lesende Zugriffe funktioniert dieses System auch mit Einschränkungen hervorragend. Beispielsweise geht MS im neuen 2014er SQL Server mit In-Memory Tables den Weg Datentabellen, entweder komplett, oder zu großen Teilen im Arbeitsspeicher zu halten.
Viele Applikationen umgehen aus Datensicherheitsgründen die vorhandenen Betriebssystem Cache-Funktionen und warten auf eine Schreibbestätigung der Datenplatte – mit der entsprechenden Verzögerung. Bei plötzlichem Hardwareversagen, ist dieses Verhalten äußerst positiv, da nur so gesichert werden kann das alle Daten konsistent und wie beabsichtigt abgelegt werden. Insbesondere im Zusammenhang mit Hyper-V tritt dieses Phänomen massiv zu Tage: Viele verschiedene virtuelle Maschinen greifen parallel und komplett zufällig auf eine gemeinsame Speicherhardware zu, und es darf unter keinen Umständen zu Dateninkonsistenzen kommen.
Bei vielen Hyper-V Installationen mit unterdimensionierten Storagesystemen gerät alleine schon ein wartungsbedingter Systemneustart zur Geduldsprobe.
Als Alternative bot sich bisher nur an, den kompletten Datenbereich auf SSD Medien zu verlagern, was aber zumindest bis heute mit immensen Kosten verbunden ist.

Hier kommt jetzt die Write-Back-Cache Funktion des neuen Windows Server 2012 R2 Storage Spaces ins Spiel. Nun ist es möglich aus verschiedenen, beliebig kombinierbaren Datenträgersystemen (Tatsächlich werden sogar USB-Medien unterstützt) einen neuen Datenträgerverbund (Storage Pool) zu generieren (z.B.: 4 * SSD + 10 * HDD).

Während der Erstellung des neuen virtuellen Datenträgers (Storage Space) kann frei definiert werden wie viel Speicher von den verwendeten SSD’s als Cache verwendet werden soll z.B.: (50GB).
Dieser SSD Cache fängt dann selbständig Lastspitzen bei zufälligen Zugriffen, oder Schreiboperationen ab und speichert diese zwischen. Aus diesem nicht flüchtigen SSD-Cache können anschließend, sequenziell sämtliche Informationen im Hintergrund auf die wesentlich größeren Datenplatten abgelegt werden.

Durch die Kombination der SSD mit der einer klassischen HDD können sehr preisgünstig die Vorteile beider Technologien vereint werden, ohne Einschränkungen der Datensicherheit in Kauf zu nehmen.
Je nach verwendeter Hardware kann hier durch den Einbau einer SSD als Cachemedium eine Verbesserung der RandomIO Schreib und Leseprozesse um den Faktor 10-20 erreicht werden.
Beispielkonfigurationen:

Erstellung einer virtuellen Platte „HYPER-V DATA“ innerhalb des Storage Pools „DATAPOOL“ mit 600GB Datengröße und zusätzlichen 20GB Cache (Bis auf die Einstellungen zum Cache können diese auch mit dem Storage Pool Wizard vollzogen werden):

$PhysicalDisks = (Get-PhysicalDisk -CanPool $True)
New-StoragePool -FriendlyName „DATAPOOL“ -StorageSubsystemFriendlyName „Storage Spaces*“ -PhysicalDisks $PhysicalDisks
$SSD_Tier = New-StorageTier -StoragePoolFriendlyName “ DATAPOOL″ -FriendlyName SSD_Tier -MediaType SSD
$HDD_Tier = New-StorageTier -StoragePoolFriendlyName “ DATAPOOL″ -FriendlyName HDD_Tier -MediaType HDD
New-VirtualDisk -StoragePoolFriendlyName „DATAPOOL“ -FriendlyName „HYPER-V DATA“ -StorageTiers @($SSD_Tier, $HDD_Tier) -StorageTierSizes @(100GB, 500GB) -ResiliencySettingName Mirror -WriteCacheSize 20GB

Erstellung einer virtuellen Datenplatte „DATA“ innerhalb des Storage Pools „DATAPOOL“ mit 4TB Datengröße und dreifacher Spiegelung:

New-VirtualDisk -StoragePoolFriendlyName DATAPOOL -FriendlyName DATA -ResiliencySettingName Mirror -NumberOfDataCopies 3 -Size 4TB -ProvisioningType Thin