Storage Spaces deep dive

Con Windows Server 2012 e Windows 8 è stata introdotta una novità per quanto riguarda la gestione dello storage ovvero gli Storage Space di cui avevo discusso nel post Windows Server 2012: virtualizzazione dello storage tramite Storage Spaces.

Di seguito cercherò di raccogliere alcuni dettagli su questa tecnologia che di fatto permette di creare una SAN a basso costo tramite aggregazione di drive, ma anche di di gestire l’alta disponibilità dello storage tramite Failover Clustering e la sua scalabilità tramite il Thin Provisioning.

image image

 

Drive supportati in uno Storage Pool

I drive supportati per l’utilizzo all’interno di un pool possono essere interni, esterni o SSD delle seguenti tipologie:

  • SATA (Serial ATA)
  • SAS (Serial Attached SCSI)
  • SCSI (Small Computer System Interface)
  • Possono essere utilizzati dischi SAS e SATA anche in JBOD (just-a-bunch-of-disks) enclosure che supportano SCSI Enclosure Services (SES) versione 3 o tramite RAID adapters. Nel caso di RAID adapters occorre disabilitare le funzionalità di RAID per consentire la visualizzazione dei dischi connessi.
  • USB ma è preferibile utilizzare drive USB 3 per non degradare le performance. Un drive USB 2 infatti rischia di saturare la banda disponibile del canale USB, se si usano drive USB 2 connetterli a controller USB differenti. In ogni caso se si utilizzano drive USB è consigliabile fare pool contenenti solo questa tipologia di drive.
  • VHD, VHDX e dischi pass-through in una virtual machine

Non sono invece supportati:

  • I drive connessi tramite iSCSI
  • I drive connessi tramite Fibre Channel
  • Gli Storage layers che astraggono i dischi fisici (come ad esempio i dischi logici esposti da un RAID adapter)
  • Gli storage che non sono compatibili con storport.sys

I criteri che un driver deve rispettare per l’appartenenza ad uno storage pool sono i seguenti:

Per maggiori informazioni si vedano:

Layout di archiviazione

Durante la creazione di un Storage Space a partire da un Pool sono disponibili i seguenti layout di archiviazione detti anche resiliency types:

Resiliency types

Note

N° minimo dischi

N° dischi in fail consentito

Simple I dati sono distribuiti su tutti i dischi per massimizzare la capacità e il throughput, ma prevede alcuna ridondanza di dati (simile al RAID 0).
Indicato per file temporanei.

1

Nessuno

Mirror two-way I dati e le informazioni di parità sono distribuiti su due per aumenta le performance e la ridondanza a discapito della capacità (simile al RAID 1).
Indicato per file server e librerie di VHD.

2

1

Mirror three-way I dati e le informazioni di parità sono distribuiti su cinque dischi per aumenta le performance e la ridondanza a discapito della capacità (simile al RAID 1).
Indicato per file server e librerie di VHD.

5

2

Single Parity I dati sono distribuiti su tre dischi per aumentare la ridondanza e ottimizzare la capacità (simile al RAID 5).
Indicato per file dati e streaming (letti/scritti a blocchi grandi), non può essere usato in un Failover Cluster.

3

1

Dual Parity I dati sono distribuiti su cinque dischi per aumentare la ridondanza e ottimizzare la capacità (simile al RAID 6).
Indicato per file dati e streaming  (letti/scritti a blocchi grandi), non può essere usato in un Failover Cluster.
Introdotto con WS2012 R2.

5

2

 

Inoltre è possibile gestire tramite PowerShell altri parametri per la gestione delle ridondanza e delle performance:

  • Number of Columns: il numero delle colonne contenute nel Virtual Disk (Stored Space)
  • Number of Data Copies: il numero di copie dei dati che vengono mantenute
  • Disk interleave: il numero di bytes che formano uno stripe (blocco di dati scritto su uno Virtual Disk)
  • Physical disks to use: il nuomero di dischi utilizzati dal Virtual Disk

Per maggiori informazioni si vedano:

Novità in Windows Server 2012 R2

Oltre all’introduzione del resiliency type Dual Parity, in Windows Server 2012 R2 sono state introdotte le seguenti funzionalità:

  • Storage tiers ovvero la capacità di di gestire la combinazione di dischi SSD e HDD. Il concetto è quello di avere un Virtual Disk con dischi SSD e HDD e di posizionare sui dischi SSD veloci ma meno economici e meno capienti i dati più frequentemente utilizzati, mentre i dati neno utilizzati vengono mantenuti sugli HDD che meno performanti, ma più capienti ed economici.
  • Write-back cache che permette di utilizzare una piccola porzione di dischi SSD esistenti nel pool come buffer per le piccole operazioni di scrittura random per aumentare le performance, in seguito le operazioni di scrittura random verranno poi eseguite sugli HDD. Dal momento che i workloads aziendali sono spesso caratterizzati da questo tipo di operazioni questa funzionalità va ad aumentare le performance senza intaccare la sicurezza e l’integrità dei dati.

Per maggiori informazioni si vedano:

  • Storage Spaces Overview
  • Free ebook: Introducing Windows Server 2012 R2 Preview Release
  •  

    Disaster recovery

    Le informazioni di configurazione dei Pools e degli Storage Spaces sono mantenute in metadati memorizzate sui dischi fisici che compongono il Pool. Questo significa che nel caso il server su cui è configurato il Pool presenta problemi hardware è possibile spostare il Pool e gli Storage Spaces in esso definiti semplicemente spostando i dischi fisici che compongono il Pool su un nuovo server.

    Dopo lo spostamento dei dischi occorre impostare il pool come Read-Write quindi sarà possibile eseguire l’attach dei Virtual Disks (operazioni che possono essere eseguita tramite Server Manager o PowerShell).

    Da alcune prove che ho eseguito i Virtual Disk vengano montati col flag ManualAttach a True, questo significa che riavviando il server non venga eseguito l’attach del Virtual Disk, per risolvere è possibile utilizzare il seguente comando PowerShell:

    Set-VirtualDisk –FriendlyName DiskName -IsManualAttach $False

    Per ulteriori informazioni si vedano:

    Best practices e Hotfixes

    Come riportato nella KB 2765077: All Storage Spaces to be detached prior to reconfiguring Storage hardware se si intende modificare la configurazione di uno Storage Space senza eliminarlo occorre disconnetterlo per non incorrere in problemi di performance:

    When you intend to reconfigure your storage hardware without first deleting your storage spaces, meaning you intend to use the same storage spaces after reconfiguring your storage hardware, you need to first detach your storage spaces.  Examples of storage hardware reconfiguration include removing of drives from their arrays en masse, and, disconnecting internal array wiring, again, en masse.

    If you do not detach your storage spaces prior to reconfiguring your storage hardware, you may experience periods of slow IO responsiveness and you might not be able to move clustered spaces to different cluster nodes. If you have inadvertently left your storage spaces attached while reconfiguring storage hardware and have not yet completed the reconfiguration, you should detach your storage spaces prior to continuing to reconfigure the hardware.

    Inoltre sono state rilasciate delle KB per la correzione di specifici problemi relativi agli Stored Spaces: