# Storage Spaces: Flexibles Software-Defined Storage auf dem Client

TL;DR / Management Summary Storage Spaces (Speicherplätze) ist Microsofts Antwort auf klassisches Hardware-RAID. Es erlaubt das Zusammenfassen von unterschiedlichen Festplatten (USB, SATA, NVMe) in einem Pool. Darauf lassen sich virtuelle Laufwerke mit Redundanz (Mirror, Parity) erstellen. Für Senior Admins ist es das ideale Werkzeug, um Workstations mit großen Datenmengen (Video-Schnitt, Dev-VMs) abzusichern, ohne teure RAID-Controller zu kaufen.


# 1. Einführung & Architektur

Die Abstraktionsebene.

Storage Spaces trennt die physische Hardware von der logischen Sicht des Betriebssystems.

# Die drei Ebenen

  1. Physical Disks: Die rohen Festplatten.
  2. Storage Pool: Der Verbund aller Disks. Hier wird die Kapazität aggregiert.
  3. Storage Space (Virtual Disk): Das Laufwerk, das Windows sieht. Hier wird die Resilienz (RAID-Level) definiert.

# Resilienz-Typen

# Architektur-Diagramm (Mermaid)

graph TD
    D1[Disk 1] --- POOL[Storage Pool]
    D2[Disk 2] --- POOL
    D3[Disk 3] --- POOL
    POOL --> SPACE1[Space 1: Mirror - Drive D:]
    POOL --> SPACE2[Space 2: Simple - Drive E:]
    
    subgraph "Logic Layer"
    SPACE1
    SPACE2
    end

# 2. Einrichtung & Management

Pools bauen via GUI und PowerShell.

# Setup via GUI

Systemsteuerung -> Speicherplätze verwalten.

# Management via PowerShell

Für Admins ist PowerShell effizienter, da es detailliertere Optionen bietet.

# Alle verfügbaren Disks für einen Pool anzeigen
Get-PhysicalDisk -CanPool $True

# Neuen Pool erstellen
New-StoragePool -FriendlyName "DataPool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $True)

# Virtuelles Laufwerk (Mirror) erstellen
New-VirtualDisk -StoragePoolFriendlyName "DataPool" -FriendlyName "SafeData" -ResiliencySettingName Mirror -Size 500GB -ProvisioningType Thin

# 3. Deep Dive: Column Count & Interleave

Performance verstehen.

Storage Spaces schreibt Daten in “Columns” (Spalten) über die Disks.


# 4. Day-2 Operations: Wartung & Austausch

Was tun bei einem Defekt?

# Disk-Tausch Workflow

  1. Defekte Disk identifizieren (Status: Retired).
  2. Neue Disk physisch einbauen.
  3. Neue Disk zum Pool hinzufügen: Add-PhysicalDisk.
  4. Defekte Disk entfernen: Remove-PhysicalDisk.
  5. Windows startet automatisch den Repair (Rebuild) Prozess im Hintergrund.
# Reparatur-Status überwachen
Get-StorageJob

# 5. Troubleshooting & “War Stories”

Wenn der Pool ‘untergetaucht’ ist.

# Top 3 Fehlerbilder

  1. Symptom: Pool ist Read-Only.

    • Ursache: Zu viele Disks ausgefallen oder Pool ist zu 100% voll.
    • Lösung: Physischen Platz hinzufügen oder Daten löschen und Optimize-StoragePool ausführen.
  2. Symptom: Extrem langsame Schreibperformance bei Parity.

    • Ursache: Storage Spaces nutzt keinen Write-Back Cache auf Standard-Hardware.
    • Lösung: Nutzen Sie SSDs als “Journal” (Journaling Disks) im Pool oder wechseln Sie auf Mirror.
  3. Symptom: Disks werden nach Umzug an einen anderen PC nicht erkannt.

    • Lösung: Get-StoragePool | Set-StoragePool -IsReadOnly $false.

# “War Story”: Der “Hidden” RAID-Controller

Ein Kunde baute ein Storage Spaces System auf, nutzte aber intern einen billigen RAID-Controller im “RAID 0” Modus für jede einzelne Platte. Das Problem: Storage Spaces sah nicht die echten Sektoren und SMART-Werte. Als eine Disk starb, meldete der Controller den Fehler nicht an Windows weiter. Storage Spaces schrieb weiter Daten in den Pool, was zu massiver Dateisystem-Korruption führte. Lehre: Storage Spaces benötigt HBA-Modus (IT-Mode) oder direkte SATA/NVMe Anbindung. Abstraktion über Abstraktion ist der Tod der Datenintegrität.


# 6. Monitoring & Alerting

Storage Health Dashboard.

# Wichtige Metriken


# 7. Fazit & Empfehlung

Storage Spaces ist ideal für Workstations, aber weniger für High-Performance Server (dafür gibt es S2D - Storage Spaces Direct, Artikel 500).


# Anhang: Cheatsheet

Aufgabe Befehl
Alle Disks sehen Get-PhysicalDisk
Pool Status Get-StoragePool
Rebuild starten Repair-VirtualDisk -FriendlyName "Name"
Pool optimieren Optimize-StoragePool -FriendlyName "Name"

# Referenzen