In diesem Beispiel erstelle ich ein Tiered Storage Space in Windows Server 2019. Für das Erstellen des Pools und des abschließenden Volume nutze ich die GUI, die Erstellung des virtuellen Datenträgers erfordert den Einsatz der PowerShell.
Vorüberlegungen
Der Einsatz eines Tiered Storage Space verlangt nach mehreren Datenträgern, die genaue Anzahl hängt von der Komplexität des zu erstellenden Tiered Storage Space ab.
In diesem Beispiel soll der Hot-Storage aus einem dem RAID10 ähnlichem Gebilde bestehen; dafür werden vier Datenträger benötigt. Der Cold-Storage soll als Parity (RAID5) angelegt werden, daher werden hierfür drei Datenträger benötigt.
In meinem Testsystem ist aktuell nur eine SSD verbaut, aus diesem Grund werden für das Hot-Storage vier virtuelle Festplatten eingesetzt, die auf der Datenpartition der SSDs liegen. Das Cold-Storage wird aus drei Festplatten des Typs Hitachi HUC10186 CLAR600 bestehen.
Die virtuellen Festplatten haben jeweils eine Kapazität von 50GB, die HDDs 600GB, von denen aber nur 558.79GB nutzbar sind. Die Festplattenhersteller gehen davon aus, dass 1GB = 1000MB sind. Windows rechnet aber 1GB sind 1024MB. Daher ist die tatsächlich nutzbare Kapazität geringer als die Nennkapazität. Sie beträgt ca. 91% der vom Hersteller angegeben Kapazität.
In Summe steht eine Rohkapazität von 200GB für das Hot-Storage und 1676.37GB (1.676TB) für das Cold-Storage bereit. Wie bereits erwähnt, sollen Modi verwendet werden, die dem RAID10 und dem RAID5 ähnlich sind. Durch die beiden RAIDs wird die Rohkapazität verringert.
Für das Hot-Storage bleibt eine nutzbare Kapazität von 100GB übrig, für das Cold-Storage 1117.58GB (1.117TB). Zur Sicherheit sollte bei der Betrachtung ein wenig Reserve gelassen werden. Ein Grund dafür ist der Cache auf den Laufwerken angelegt wird, zum anderen kann es sein, dass errechnete Kapazitäten nicht exakt stimmen. In diesem Beispiel wird das Hot-Storage eine Größe von 95GB haben, das Cold-Storage von 1100GB (1.1TB).
Erstellen des Pools
Für die Erstellung des Pools nutze ich die GUI. Hierzu wird der Server Manager geöffnet und in den Bereich Datei-/Speicherdienste -> Speicherpools gewechselt. Im Drop-Down-Menü Aufgaben kann die Erstellung einen neuen Speicherpools begonnen werden. In diesem Beispiel trägt der neue Pool die Bezeichnung vPool0. In dem sich öffnenden Assistenten werden alle für den Pool vorgesehenen Datenträger hinzugefügt. In diesem Beispiel die vier virtuellen Festplatten und drei HDDs. Nach Abschluss der Erstellung, sollte die Option zum Erstellen eines virtuellen Datenträgers abgewählt werden. Für ein Tiered Storage Space wird für das Anlegen des virtuellen Datenträgers die PowerShell genutzt.
Erstellen des virtuellen Datenträgers – Tier 0 & Tier 1
Die PowerShell lässt sich bequem öffnen, indem im Startmenü PowerShell eingegeben wird. In den Suchergebnissen taucht auch die PowerShell ISE auf. Diese ist für das Erstellen von PowerShell-Skripten vorgesehen. Für dieses Beispiel wird die einfache PowerShell genutzt.
Zunächst wird kontrolliert, ob Windows alle in den Pool eingefügten Datenträger korrekt erkannt hat. Der folgende PowerShell-Befehl zeigt alle sich in dem Pool befindlichen Datenträger an.
Get-StoragePool vPool0 | Get-PhysicalDisk
Die Spalte MediaType gibt an, als welchen Datenträgertyp Windows den angeschlossenen Datenträger erkannt hat. Ist ein Datenträger als unspezifiziert gekennzeichnet, sollte dessen Typ geändert werden. SSDs werden zumeist richtig erkannt, klassische, oder virtuelle Festplatten werden auch gerne als unspezifiziert gekennzeichnet. In meinem Fall ist ein Ändern des Typs nicht notwendig gewesen.
Für den Fall, dass ein Datenträger nicht korrekt erkannt wurde, ist es möglich den Datenträgertyp manuell zu wechseln. Der folgende PowerShell-Befehl ändert alle Datenträger im Pool, die unspezifiziert sind, auf HDD.
Get-StoragePool vPool0 | Get-PhysicalDisk | ? MediaType -eq "Unspecified" | Set-PhysicalDisk -MediaType HDD
Der Befehl gibt im Erfolgsfall keine sichtbare Rückmeldung. Zur Kontrolle sollten sich die Datenträger des Pools ein weiteres Mal angezeigt werden lassen. Es sollten nun allen Datenträgern entweder der Typ SSD oder HDD zugeordnet sein.
In den folgenden beiden Abschnitten werden die eigentlichen Storage Tiers angelegt. Dabei wird die Resilienz festgelegt und welcher Typ Datenträger in dem jeweiligen Tier benutzt werden soll (HDD oder SSD). Am Schluss werden die beiden Storage Tiers miteinander zu einem virtuellen Datenträger verbunden.
Tier 0 oder Hot-Storage
Wie in den Vorüberlegungen genannt, soll das Hot-Storage aus vier virtuellen Festplatten bestehen, die in einem RAID10 ähnlichem Verbund laufen.
Ein RAID10 besteht aus zwei RAID1Verbünden, welche durch ein RAID0 zusammengefasst werden. Es wird manchmal auch als RAID 1 + 0 bezeichnet. Die beiden RAID1s sorgen für eine höhere Ausfallsicherheit als ein einzelner Datenträger. Zur Performancesteigerung werden die beiden RAID1 durch ein RAID0 zusammengeschlossen.
Windows Storage Spaces unterstütz kein natives RAID10. Um dennoch eine dem RAID10 ähnliche Konstruktion zu erhalten, kann der Resilienz-Typ Mirror verwendet werden. Die vier im Tier 0 enthaltenen SSDs werden in zwei Mirror aufgeteilt. Diese beiden Blöcke werden von den Storage Spaces automatisch in einem RAID0 zusammengefasst.
Die Option NumberOfColumns 2 in dem folgenden PowerShell-Befehl weist die Storage Spaces an, die Aufteilung vorzunehmen.
New-StorageTier -StoragePoolFriendlyName vPool0 -FriendlyName SSD_Tier -MediaType SSD -ResiliencySettingName Mirror -NumberOfColumns 2
Die Option FaultDomainRedundancy in der Ausgabe gibt an, wie viele Festplatten des Verbunds ausfallen dürfen, ohne dass es zu Datenverlust kommt. Hier ist es eine Festplatte. Der in der Spalte Größe (Size) zu sehende Wert von 0B ist in diesem Schritt normal und kein Grund zur Beunruhigung. Es wurde bisher kein Volume angelegt, daher ist die aktuelle Größe 0B(yte).
Tier 1 oder Cold-Storage
Das Cold-Storage soll mit den Resilienz-Typ Parity erstellt werden. Der Befehl ist ähnlich dem für die Erstellung des Hot-Storage. Der Unterschied ist der Resilienz-Typ und der Anzahl der genutzten Datenträger. Die Option NumberOfColumns 3 gibt hier an, dass drei Festplatten genutzt werden sollen; dies entspricht einem RAID5. Wird der Wert mit vier angegeben, entspräche dies einem RAID6.
New-StorageTier -StoragePoolFriendlyName vPool0 -FriendlyName HDD_Tier -MediaType HDD -ResiliencySettingName Parity -NumberOfColumns 3
Tier 0 + Tier 1 = virtueller Datenträger
Damit der Befehl für das Erstellen des virtuellen Datenträgers etwas übersichtlicher gestaltet wird, werden die Eigenschaften von Tier 0 und Tier 1 in zwei Variablen hinterlegt.
$tier0 = Get-StorageTier -FriendlyName SSD_Tier
$tier1 = Get-StorageTier -FriendlyName HDD_Tier
Zurück zu den Überlegungen am Anfang bezüglich der Größe der einzelnen Tiers. Für das Tier 0, oder Hot-Storage, wurde für dieses Beispiel eine Größe von 95GB festgelegt. Das Tier 1, oder Cold-Storage, soll eine Größe von 1100GB (1.1TB) haben.
In den beiden Optionen StorageTiers und StorageTierSize müssen zuerst die Werte für das Tier 0, also das Hot-Storage angegeben werden. Es ist zudem wichtig, den virtuellen Datenträger zu initialisieren, andernfalls schlägt das Erstellen einen neuen Volume im nachfolgenden Abschnitt fehl. Der Ausdruck Initialize-Disk -PassThru im untenstehenden PowerShell-Befehl übernimmt die Initialisierung.
New-VirtualDisk -StoragePoolFriendlyName vPool0 -FriendlyName "Tiered Storage Space" -StorageTiers @($tier0,$tier1) -StorageTierSizes 95GB, 1.1TB |Initialize-Disk -PassThru
Es ist möglich, dass die Erstellung fehl schlägt. In der PowerShell wird dann folgende Ausgabe zu sehen sein.
Auf den ersten Blick scheint diese Fehlermeldung schwer verständlich. Ihr Inhalt sagt aus, dass der zu erstellende virtuelle Datenträger zu groß ist. Die in dem Speicherpool befindlichen Ressourcen sind zu gering. Meist deutet dies darauf hin, dass eine, oder beide angegebenen Größen die Poolkapazität überschreitet.
Das bedeutet, die in den Vorüberlegungen festgelegten Größen stimmen nicht. Die Größe für das Hot-Storage wird auf 75GB verringert, die des Cold-Storage auf 1.085TB.
New-VirtualDisk -StoragePoolFriendlyName vPool0 -FriendlyName "TieredStorageSpace" -StorageTiers @($tier0,$tier1) -StorageTierSizes 75GB, 1.085TB | Initialize-Disk -PassThru
Mit diesen Größen lässt sich der virtuelle Datenträger erfolgreich anlegen.
Erstellen des Volume
Damit der im letzten Abschnitt erstellte Datenträger nutzbar ist, muss auf diesem noch ein Volume angelegt werden. Für diesen Schritt kann wieder auf die GUI zurückgegriffen werden. Ist der Server Manager während der Arbeiten mit der PowerShell offen gewesen, wird der neue virtuelle Datenträger noch nicht angezeigt. Abhilfe schafft hier ein Aktualisieren der Ansicht.
Um ein neues Volume zu erstellen, kann der dafür zuständige Assistent durch einen Rechtsklick auf den virtuellen Datenträger gestartet werden.
Sobald der Assistent gestartet wurde, wird der Datenträger ausgewählt auf dem das neue Volume angelegt werden soll. Bereits vollständig belegte virtuelle Datenträger werden in der Auflistung nicht angezeigt.
Der nächste Schritt beinhaltet die Größenangabe des Volume.
Bei einem Tired Storage Space kann das Volume nur dieselbe Größe haben wie der darunterliegenden virtuelle Datenträger. Ein Volume was kleiner oder größer ist, kann nicht erstellt werden.
Für die Bereitstellung des Volume im Betriebssystem gibt es drei Möglichkeiten:
- Vergeben eines Laufwerksbuchstabens
- Bereitstellen in einem Ordner
- Keinen Laufwerksbuchstaben vergeben
In diesem Beispiel soll das neue Volume mit dem Laufwerksbuchstaben Q ins Betriebssystem eingebunden werden.
Das Volume kann mit zwei Dateisystemen formatiert werden, NTFS oder ReFs. Standardmäßig sollte NTFS verwendet werden. Das Dateisystem ReFs ist eher für Archivsysteme gedacht, nicht für Produktivsysteme. Zur besseren Unterscheidung kann dem Volume ein Name gegeben werden.
Das nachfolgende Fenster listet alle Einstellungen als Zusammenfassung auf. Sind die Einstellungen korrekt, kann das Volume erstellt werden. Nach der Erstellung kann das Tiered Storage Space als normaler Datenträger verwendet werden.
Download
Ich habe die PowerShell-Befehle der oberen Abschnitte in einem Skript zusammengefasst. Die Intention dahinter ist es, Anfängern den Einstieg in die PowerShell zu erleichtern. Auch kann das Skript genutzt werden, um für das Anlegen von Tiered Storage Spaces automatisieren zu können. Das Skript kann nachfolgend heruntergeladen werden.
Download: Create_TieredStorage.ps1 (als zip-Archiv)
Download: Create_TiredStorage.txt (zum Ansehen direkt im Browser)
Für die eigene Verwendung müssen einige Variablen angepasst werden. Ganz oben im Skript finden sich die zu ändernden Variablen; standardmäßig enthalten die Variablen die Werte aus diesem Beispiel.