Først offentliggjort på TECHNET den 11. august 2017
Hej! Jeg hedder Cosmos. Følg mig på Twitter @cosmosdarwin.
Baggrund
Storage Spaces Direct i Windows Server 2016 og Windows Server 2019 indeholder en indbygget, vedvarende læse- og skrivecache for at maksimere lagerydelsen. Du kan læse alt om det på Understanding the cache in Storage Spaces Direct . I all-flash-implementeringer cacher NVMe-drev typisk for SATA/SAS SSD’er; i hybridimplementeringer cacher NVMe- eller SATA/SAS SSD’er for HDD’er.
Under alle omstændigheder vil cachedrevene betjene det overvældende flertal af IO, herunder 100 % af skrivninger. Dette er afgørende for at levere den uovertrufne ydeevne i Storage Spaces Direct, uanset om du måler den i millioner af IOPS , Tb/s IO-gennemløb eller konsekvent latenstid på under et millisekund.
Men intet er gratis: Disse cache-drev kan hurtigt blive slidt op.
Anmeldelse: Hvad er flash-slitage
Solid-state-drev består i dag næsten overalt af NAND-flash, som bliver slidt ved brug. Hver flash-hukommelsescelle kan kun skrives et vist antal gange, før den bliver upålidelig. (Der findes adskillige gode optegnelser online, der dækker alle de blodige detaljer – herunder på Wikipedia .)
Du kan se dette ske i Windows ved at se på tælleren Wear reliability counter i PowerShell:
PS C:\> Get-PhysicalDisk | Get-StorageReliabilityCounter | Select Wear
Her er resultatet fra min bærbare computer – min SSD er ca. 5% slidt efter to år.
Bemærk: Ikke alle drev rapporterer denne værdi nøjagtigt til Windows. I nogle tilfælde kan tælleren være tom. Kontakt din producent for at se, om de har et proprietært værktøj, som du kan bruge til at hente denne værdi.
Generelt slides NAND-flash ikke af læsning.
Kvantificering af flash-udholdenhed
Måling af slid er én ting, men hvordan kan vi forudsige en SSD’s levetid?
Flash-“udholdenhed” måles almindeligvis på to måder:
- Drive Writes Per Day (DWPD)
- Terabytes Written (TBW)
Både tilgange er baseret på producentens garantiperiode for drevet, dets såkaldte “levetid”.
Drive Writes Per Day (DWPD)
Drive Writes Per Day (DWPD) måler, hvor mange gange du kan overskrive hele drevets størrelse hver dag i dets levetid. Antag f.eks. at dit drev er på 200 GB, og at dets garantiperiode er 5 år. Hvis dens DWPD er 1, betyder det, at du kan skrive 200 GB (dens størrelse, én gang) ind på den hver eneste dag i de næste fem år.
Hvis du ganger det ud, er det 200 GB pr. dag × 365 dage/år × 5 år = 365 TB kumulative skrivninger, før du måske skal udskifte den.
Hvis dens DWPD var 10 i stedet for 1, ville det betyde, at du kan skrive 10 × 200 GB = 2 TB (dens størrelse, ti gange) ind på den hver dag. Tilsvarende er det 3.650 TB = 3,65 PB af kumulative skrivninger over 5 år.
Terabytes Written (TBW)
Terabytes Written (TBW) måler direkte, hvor meget du kan skrive kumulativt ind på drevet i løbet af dets levetid. I det væsentlige omfatter det blot den multiplikation, vi foretog ovenfor, i selve målingen.
Til eksempel, hvis dit drev er normeret til 365 TBW, betyder det, at du kan skrive 365 TB ind på det, før du måske skal udskifte det.
Hvis garantiperioden er 5 år, svarer det til 365 TB ÷ (5 år × 365 dage/år) = 200 GB skrivninger pr. dag. Hvis dit drev havde en størrelse på 200 GB, svarer det til 1 DWPD. Hvis dit drev var normeret til 3,65 PBW = 3.650 TBW, svarer det til 2 TB skrivninger pr. dag eller 10 DWPD.
Som du kan se, kan du, hvis du kender drevets størrelse og garantiperiode, altid komme fra DWPD til TBW eller omvendt med nogle enkle multiplikationer eller divisioner. De to målinger er virkelig meget ens.
Hvad er forskellen?
Den eneste reelle forskel er, at DWPD afhænger af drevets størrelse, mens TBW ikke gør det.
Tag f.eks. en SSD, som kan tage 1.000 TB skrivninger i løbet af sin femårige levetid.
Sæt, at SSD’en er på 200 GB:
1.000 TB ÷ (5 år × 365 dage/år × 200 GB) = 2,74 DWPD
Sæt nu, at SSD’en er på 400 GB:
1.000 TB ÷ (5 år × 365 dage/år × 400 GB) = 1,37 DWPD
Den resulterende DWPD er anderledes! Hvad betyder det?
På den ene side kan det større 400 GB-drev foretage nøjagtig de samme kumulative skrivninger i løbet af sin levetid som det mindre 200 GB-drev. Hvis man ser på TBW, er dette meget tydeligt – begge drev er normeret til 1.000 TBW. Men hvis man ser på DWPD, ser det ud til, at det større drev kun har halvt så lang udholdenhed! Du kan argumentere, at fordi den under samme arbejdsbyrde ville yde “det samme”, er det bedre at bruge TBW.
På den anden side kan du måske hævde, at 400 GB-drevet kan levere lagerplads til mere arbejdsbyrde, fordi det er større, og derfor spredes dets 1.000 TBW mere tyndt, og det har virkelig kun halvdelen af udholdenheden! Med dette ræsonnement er det bedre at bruge DWPD.
Bundlinjen
Du kan bruge den måling, du foretrækker. Det er næsten universelt at se både TBW og DWPD optræde på drevspecifikationsblade i dag. Afhængigt af dine forudsætninger er der overbevisende argumenter for begge dele.
Anbefaling for Storage Spaces Direct
Vores minimumsanbefaling for Storage Spaces Direct er anført på siden med hardwarekrav. Fra midten af 2017, for cache-drev:
- Hvis du vælger at måle i DWPD, anbefaler vi 3 eller flere.
- Hvis du vælger at måle i TBW, anbefaler vi 4 TBW per dag i levetid. Specifikationsblade angiver ofte TBW kumulativt, som du skal dividere med dens levetid. Hvis dit drev f.eks. har en garantiperiode på 5 år, er 4 TB × 365 dage/år × 5 år = 7.300 TBW = 7,3 PBW i alt.
Ofte vil den ene af disse målinger vise sig at være lidt mindre streng end den anden.
Du kan bruge den måling, du foretrækker.
Der er ingen minimumsanbefaling for kapacitetsdrev.
Addendum: Skriveforstærkning
Du kan være fristet til at ræsonnere om udholdenhed ud fra IOPS-tallene, hvis du kender dem. Hvis din arbejdsbyrde f.eks. genererer (i gennemsnit) 100.000 IOPS, som (i gennemsnit) er på 4 KiB hver, hvoraf (i gennemsnit) 30 % er skrivninger, kan du tænke:
100.000 × 30 % × 4 KiB = 120 MB/s skrivninger
120 MB/s × 60 sek/min × 60 minutter/time × 24 timer = ca. 10 TBW/dag
Hvis du har fire servere med to cache-drev hver, er det:
10 TBW/dag ÷ (8 cache-drev i alt) = ca. 1,25 TBW/dag pr. drev
Interessant! Mindre end 4 TBW/dag!
Det er desværre en mangelfuld matematik, fordi den ikke tager højde for skriveforstærkning.
Skrivningsforstærkning er, når en skrivning (på bruger- eller applikationslaget) bliver til flere skrivninger (på det fysiske enhedslag). Skriveforstærkning er uundgåelig i ethvert lagringssystem, der garanterer modstandsdygtighed og/eller konsistens ved nedbrud. Det mest åbenlyse eksempel i Storage Spaces Direct er trevejsspejl: Det skriver alting tre gange til tre forskellige drev.
Der er også andre kilder til skriveforstærkning: reparationsjob genererer yderligere IO; datadeduplikation genererer yderligere IO; filsystemet og mange andre komponenter genererer yderligere IO ved at persistere deres metadata og logstrukturer osv. Faktisk genererer selve drevet skriveforstærkning fra interne aktiviteter som f.eks. garbage collection! (Hvis du er interesseret, kan du læse JESD218-standardmetoden for at se, hvordan dette skal indregnes i udholdenhedsberegningerne).
Dette er alt sammen nødvendigt og godt, men det gør det vanskeligt at udlede IO-aktivitet på drevniveau i bunden af stakken fra IO-aktivitet på applikationsniveau i toppen af stakken på en konsistent måde. Det er derfor, baseret på vores erfaring, at vi offentliggør minimum DWPD- og TBW-anbefalingen.
Lad os vide, hvad du mener! 🙂