Publicerades första gången på TECHNET den 11 augusti 2017

Hej! Jag heter Cosmos. Följ mig på Twitter @cosmosdarwin.

Bakgrund

Storage Spaces Direct i Windows Server 2016 och Windows Server 2019 har en inbyggd, beständig läs- och skrivcache för att maximera lagringsprestanda. Du kan läsa allt om det på Förstå cache i Storage Spaces Direct . I all-flash-installationer cachas NVMe-enheter vanligtvis för SATA/SAS-SSD-enheter; i hybridinstallationer cachas NVMe- eller SATA/SAS-SSD-enheter för hårddiskar.

I vilket fall som helst kommer cache-enheterna att betjäna den överväldigande majoriteten av IO, inklusive 100 % av skrivningarna. Detta är viktigt för att leverera den oöverträffade prestandan hos Storage Spaces Direct, oavsett om du mäter det i miljontals IOPS , Tb/s IO-genomströmning eller konsekvent latenstid på mindre än en millisekund.

Men ingenting är gratis: dessa cachediskar riskerar att slitas ut snabbt.

Recension: Vad är flash-slitage

Fasta hårddiskar består i dag nästan uteslutande av NAND-flash, som slits med tiden. Varje flashminnescell kan bara skrivas ett visst antal gånger innan den blir opålitlig. (Det finns många bra artiklar på nätet som tar upp alla detaljer – bland annat på Wikipedia).
Du kan se hur detta sker i Windows genom att titta på Wear reliability counter i PowerShell:
PS C:\> Get-PhysicalDisk | Get-StorageReliabilityCounter | Select Wear
Här är resultatet från min bärbara dator – min SSD är cirka 5 % sliten efter två år.

Notera: Alla enheter rapporterar inte exakt detta värde till Windows. I vissa fall kan räknaren vara tom. Kontrollera med din tillverkare för att se om de har egna verktyg som du kan använda för att hämta det här värdet.
Generellt sett sliter inte läsningar ut NAND-flash.

Kvantifiering av flashens uthållighet

Mätning av slitage är en sak, men hur kan vi förutsäga livslängden för en SSD?

Flashens ”uthållighet” mäts vanligen på två sätt:

  • Drive Writes Per Day (DWPD)
  • Terabytes Written (TBW)

Båda tillvägagångssätten baseras på tillverkarens garantiperiod för enheten, dess så kallade ”livstid”.

Drive Writes Per Day (DWPD)

Drive Writes Per Day (DWPD) mäter hur många gånger du skulle kunna skriva över enhetens hela storlek varje dag under dess livslängd. Anta till exempel att din enhet är 200 GB stor och att garantiperioden är 5 år. Om DWPD är 1 betyder det att du kan skriva in 200 GB (dess storlek, en gång) i den varje dag under de kommande fem åren.

Om du multiplicerar det blir det 200 GB per dag × 365 dagar/år × 5 år = 365 TB kumulativa skrivningar innan du kanske behöver byta ut den.

Om DWPD var 10 i stället för 1 skulle det betyda att du kan skriva in 10 × 200 GB = 2 TB (dess storlek, tio gånger) i den varje dag. På motsvarande sätt blir det 3 650 TB = 3,65 PB av kumulativa skrivningar under 5 år.

Terabyte Written (TBW)

Terabyte Written (TBW) är ett direkt mått på hur mycket du kan skriva kumulativt i enheten under dess livstid. I huvudsak ingår bara den multiplikation som vi gjorde ovan i själva mätningen.
Om din hårddisk till exempel är dimensionerad för 365 TBW betyder det att du kan skriva 365 TB i den innan du kan behöva byta ut den.
Om garantiperioden är 5 år, blir det 365 TB ÷ (5 år × 365 dagar/år) = 200 GB skrivningar per dag. Om din enhet var 200 GB stor motsvarar det 1 DWPD. Om din enhet är dimensionerad för 3,65 PBW = 3 650 TBW motsvarar det 2 TB skrivningar per dag eller 10 DWPD.
Som du ser kan du, om du känner till enhetens storlek och garantiperiod, alltid gå från DWPD till TBW eller vice versa med några enkla multiplikationer eller divisioner. De två mätningarna är verkligen mycket lika varandra.

Vad är skillnaden?

Den enda verkliga skillnaden är att DWPD beror på enhetens storlek medan TBW inte gör det.
Tänk till exempel på en SSD som kan ta 1 000 TB skrivningar under sin femåriga livslängd.
Antag att SSD:n är 200 GB:
1 000 TB ÷ (5 år × 365 dagar/år × 200 GB) = 2,74 DWPD
Antag nu att SSD:n är 400 GB:
1 000 TB ÷ (5 år × 365 dagar/år × 400 GB) = 1,37 DWPD
Det resulterande DWPD är annorlunda! Vad betyder det?
Å ena sidan kan den större 400 GB-enheten göra exakt samma kumulativa skrivningar under sin livstid som den mindre 200 GB-enheten. Om man tittar på TBW är detta mycket tydligt – båda enheterna är dimensionerade för 1 000 TBW. Men om man tittar på DWPD verkar den större enheten bara ha halva uthålligheten! Man kan hävda att det är bättre att använda TBW eftersom den skulle prestera ”lika bra” vid samma arbetsbelastning.
Å andra sidan kan man hävda att 400 GB-enheten kan ge lagringsutrymme för mer arbetsbelastning eftersom den är större, och att dess 1 000 TBW därför sprids tunnare, och att den verkligen bara har halva uthålligheten! Med detta resonemang är det bättre att använda DWPD.

Slutsatsen

Du kan använda det mått du föredrar. Det är nästan allmängiltigt att se både TBW och DWPD på enhetsspecifikationsblad idag. Beroende på dina antaganden finns det övertygande argument för endera.

Rekommendation för Storage Spaces Direct

Vår minimirekommendation för Storage Spaces Direct anges på sidan om maskinvarukrav. Från och med mitten av 2017, för cache-enheter:

    • Om du väljer att mäta i DWPD rekommenderar vi 3 eller fler.
    • Om du väljer att mäta i TBW rekommenderar vi 4 TBW per dag av livstid. Specifikationsblad anger ofta TBW kumulativt, vilket du måste dividera med dess livslängd. Om din enhet till exempel har en garantiperiod på 5 år, är 4 TB × 365 dagar/år × 5 år = 7 300 TBW = 7,3 PBW totalt.

Ofta kommer ett av dessa mått att fungera som något mindre strikt än det andra.

Du kan använda det mått du föredrar.

Det finns ingen minimirekommendation för kapacitetsdiskar.

Tillägg: Skrivförstärkning

Du kan frestas att resonera om uthållighet utifrån IOPS-tal, om du känner till dem. Om din arbetsbelastning till exempel genererar (i genomsnitt) 100 000 IOPS som är (i genomsnitt) 4 KiB vardera varav (i genomsnitt) 30 % är skrivningar, kan du tänka:
100 000 × 30 % × 4 KiB = 120 MB/s skrivningar
120 MB/s × 60 sekunder/min × 60 minuter/timme × 24 timmar = ca 10 TBW/dag
Om du har fyra servrar med två cache-enheter vardera är det:
10 TBW/dag ÷ (8 totala cache-enheter) = ca 1,25 TBW/dag per enhet
Interessant! Mindre än 4 TBW/dag!
Det här är tyvärr bristfällig matematik eftersom den inte tar hänsyn till skrivförstärkning.
Skrivförstärkning är när en skrivning (på användar- eller programlagret) blir till flera skrivningar (på det fysiska enhetslagret). Skrivförstärkning är oundviklig i alla lagringssystem som garanterar motståndskraft och/eller kraschkonsistens. Det mest uppenbara exemplet i Storage Spaces Direct är trevägsspegling: allt skrivs tre gånger, till tre olika enheter.
Det finns även andra källor till skrivförstärkning: reparationsjobb genererar ytterligare IO, datadeduplicering genererar ytterligare IO, filsystemet, och många andra komponenter, genererar ytterligare IO genom att de upprätthåller sina metadata och loggstrukturer osv. Faktum är att själva enheten genererar skrivförstärkning från interna aktiviteter som t.ex. skräpplockning! (Om du är intresserad kan du ta en titt på JESD218-standardmetoden för att se hur man tar hänsyn till detta i uthållighetsberäkningarna).
Detta är allt nödvändigt och bra, men det gör det svårt att på ett konsekvent sätt härleda IO-aktivitet på enhetsnivå i botten av stapeln från IO-aktivitet på applikationsnivå i toppen av stapeln. Det är därför som vi, baserat på vår erfarenhet, publicerar rekommendationen om minsta DWPD och TBW.
Låt oss veta vad du tycker! 🙂

admin

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg