Pubblicato per la prima volta su TECHNET l’11 agosto 2017
Ciao! Seguimi su Twitter @cosmosdarwin.
Background
Storage Spaces Direct in Windows Server 2016 e Windows Server 2019 presenta una cache integrata, persistente, in lettura e scrittura per massimizzare le prestazioni dello storage. Puoi leggere tutto su di esso a Capire la cache in Storage Spaces Direct . Nelle implementazioni all-flash, le unità NVMe in genere fanno da cache per gli SSD SATA/SAS; nelle implementazioni ibride, gli SSD NVMe o SATA/SAS fanno da cache per gli HDD.
In ogni caso, le unità cache serviranno la stragrande maggioranza dell’IO, compreso il 100% delle scritture. Questo è essenziale per fornire le prestazioni impareggiabili di Storage Spaces Direct, sia che si misuri in milioni di IOPS, Tb/s di IO throughput, o latenza costante inferiore al millisecondo.
Ma nulla è gratis: queste unità di cache sono soggette a consumarsi rapidamente.
Recensione: Cos’è l’usura flash
Le unità a stato solido oggi sono quasi universalmente composte da NAND flash, che si consuma con l’uso. Ogni cella di memoria flash può essere scritta solo tante volte prima di diventare inaffidabile. (Ci sono numerosi grandi scritti online che coprono tutti i dettagli cruenti – anche su Wikipedia).
Puoi vedere questo accadere in Windows guardando il contatore di affidabilità di Wear in PowerShell:
PS C:\> Get-PhysicalDisk | Get-StorageReliabilityCounter | Select Wear
Ecco il risultato del mio portatile – il mio SSD è consumato per circa il 5% dopo due anni.
Nota: Non tutte le unità riportano accuratamente questo valore a Windows. In alcuni casi, il contatore può essere vuoto. Controlla con il tuo produttore per vedere se hanno uno strumento proprietario che puoi usare per recuperare questo valore.
Generalmente, le letture non consumano la NAND flash.
Quantificare la resistenza della flash
Misurare l’usura è una cosa, ma come possiamo predire la longevità di un SSD?
La “resistenza” della flash è comunemente misurata in due modi:
- Drive Writes Per Day (DWPD)
- Terabytes Written (TBW)
Entrambi gli approcci sono basati sul periodo di garanzia del produttore dell’unità, la sua cosiddetta “vita”.
Drive Writes Per Day (DWPD)
Drive Writes Per Day (DWPD) misura quante volte si potrebbe sovrascrivere l’intera dimensione del drive ogni giorno della sua vita. Per esempio, supponiamo che il vostro drive sia di 200 GB e che il suo periodo di garanzia sia di 5 anni. Se il suo DWPD è 1, significa che puoi scriverci 200 GB (la sua dimensione, una volta) ogni singolo giorno per i prossimi cinque anni.
Se lo moltiplichi, sono 200 GB al giorno × 365 giorni/anno × 5 anni = 365 TB di scritture cumulative prima di doverlo sostituire.
Se il suo DWPD fosse 10 invece di 1, vorrebbe dire che puoi scriverci 10 × 200 GB = 2 TB (la sua dimensione, dieci volte) ogni giorno. Corrispondentemente, sono 3.650 TB = 3,65 PB di scritture cumulative in 5 anni.
Terabyte scritti (TBW)
Terabyte scritti (TBW) misura direttamente quanto si può scrivere cumulativamente nel drive durante la sua vita. Essenzialmente, include solo la moltiplicazione che abbiamo fatto sopra nella misurazione stessa.
Per esempio, se la vostra unità è valutata per 365 TBW, ciò significa che potete scriverci 365 TB prima di doverla sostituire.
Se il suo periodo di garanzia è di 5 anni, questo significa 365 TB ÷ (5 anni × 365 giorni/anno) = 200 GB di scritture al giorno. Se il tuo disco fosse di 200 GB, questo equivale a 1 DWPD. Corrispondentemente, se il tuo disco era valutato per 3,65 PBW = 3.650 TBW, ciò equivale a 2 TB di scritture al giorno, o 10 DWPD.
Come puoi vedere, se conosci le dimensioni dell’unità e il periodo di garanzia, puoi sempre passare da DWPD a TBW o viceversa con alcune semplici moltiplicazioni o divisioni. Le due misure sono davvero molto simili.
Qual è la differenza?
L’unica vera differenza è che DWPD dipende dalla dimensione dell’unità mentre TBW no.
Per esempio, consideriamo un SSD che può sopportare 1.000 TB di scritture nei suoi 5 anni di vita.
Supponiamo che l’SSD sia da 200 GB:
1.000 TB ÷ (5 anni × 365 giorni/anno × 200 GB) = 2,74 DWPD
Ora supponiamo che l’SSD sia da 400 GB:
1.000 TB ÷ (5 anni × 365 giorni/anno × 400 GB) = 1,37 DWPD
La DWPD risultante è diversa! Che cosa significa?
Da un lato, il disco più grande da 400 GB può fare esattamente le stesse scritture cumulative durante la sua vita del disco più piccolo da 200 GB. Guardando il TBW, questo è molto chiaro – entrambe le unità sono classificate per 1.000 TBW. Ma guardando il DWPD, il disco più grande sembra avere solo la metà della resistenza! Si potrebbe sostenere che, poiché a parità di carico di lavoro, le prestazioni sarebbero “le stesse”, usare il TBW è meglio.
D’altra parte, si potrebbe sostenere che l’unità da 400 GB può fornire archiviazione per un maggior carico di lavoro perché è più grande, e quindi i suoi 1.000 TBW si distribuiscono in modo più sottile, e ha davvero solo la metà della resistenza! Con questo ragionamento, usare DWPD è meglio.
La linea di fondo
Puoi usare la misura che preferisci. È quasi universale vedere entrambi i TBW e DWPD apparire sulle schede tecniche delle unità oggi. A seconda delle tue ipotesi, c’è un caso convincente per entrambi.
Raccomandazione per Storage Spaces Direct
La nostra raccomandazione minima per Storage Spaces Direct è elencata nella pagina dei requisiti hardware. A partire dalla metà del 2017, per le unità cache:
- Se si sceglie di misurare in DWPD, consigliamo 3 o più.
- Se si sceglie di misurare in TBW, consigliamo 4 TBW per giorno di vita. Le schede tecniche spesso forniscono TBW cumulativi, che dovrai dividere per la sua durata. Per esempio, se il tuo drive ha un periodo di garanzia di 5 anni, allora 4 TB × 365 giorni/anno × 5 anni = 7.300 TBW = 7,3 PBW totali.
Spesso, una di queste misure risulterà essere leggermente meno rigorosa dell’altra.
Potete usare la misura che preferite.
Non esiste una raccomandazione minima per le unità di capacità.
Addendum: Amplificazione della scrittura
Si può essere tentati di ragionare sulla resistenza dai numeri IOPS, se li conoscete. Per esempio, se il vostro carico di lavoro genera (in media) 100.000 IOPS che sono (in media) 4 KiB ciascuno dei quali (in media) il 30% sono scritture, si può pensare:
100.000 × 30% × 4 KiB = 120 MB/s di scritture
120 MB/s × 60 sec/min × 60 min/ora × 24 ore = circa 10 TBW/giorno
Se avete quattro server con due unità cache ciascuno, sono:
10 TBW/giorno ÷ (8 unità di cache totali) = circa 1,25 TBW/giorno per unità
Interessante! Meno di 4 TBW/giorno!
Purtroppo, questo è un calcolo errato perché non tiene conto dell’amplificazione della scrittura.
L’amplificazione della scrittura è quando una scrittura (a livello dell’utente o dell’applicazione) diventa una scrittura multipla (a livello del dispositivo fisico). L’amplificazione della scrittura è inevitabile in qualsiasi sistema di archiviazione che garantisca la resilienza e/o la coerenza dei crash. L’esempio più lampante in Storage Spaces Direct è il mirror a tre vie: scrive tutto tre volte, su tre unità diverse.
Ci sono anche altre fonti di amplificazione della scrittura: i lavori di riparazione generano IO aggiuntivi; la deduplicazione dei dati genera IO aggiuntivi; il filesystem, e molti altri componenti, generano IO aggiuntivi persistendo i loro metadati e strutture di log; ecc. In effetti, l’unità stessa genera un’amplificazione della scrittura da attività interne come la garbage collection! (Se siete interessati, controllate la metodologia standard JESD218 per sapere come tenerne conto nei calcoli di resistenza).
Questo è tutto necessario e buono, ma rende difficile derivare l’attività IO a livello di unità nella parte inferiore dello stack dall’attività IO a livello di applicazione nella parte superiore dello stack in qualsiasi modo coerente. Ecco perché, sulla base della nostra esperienza, pubblichiamo la raccomandazione DWPD e TBW minima.
Facci sapere cosa ne pensi! 🙂