Hver fil du kopierer koster SSD-en din mer enn du tror
Du kopierer en 500MB fil fra pennstasjonen din til SSD-en din. Nå ville du forvente at det bare skjer en skriveoperasjon på 500MB på SSD-en din, ikke sant? Ikke regn med det. Avhengig av tilstanden til disken din, kan det hende den skriver 700MB eller til og med 1GB med data når du kopierer en 500MB fil til den.
Dette kalles skriveforsterkning, og det skjer på grunn av hvordan SSD-ens NAND-flashminne fungerer. Du kan ikke eliminere skriveforsterkning, men det finnes flere måter du kan redusere det på.
SSD-en din har en spesiell måte å skrive og slette data på
Alt takket være hvordan NAND-flashminne fungerer
Skriveforsterkning skjer bare på SSD-er som bruker NAND-flashbrikker til å lagre data, noe som praktisk talt gjelder alle moderne SSD-er. Jeg nevner dette fordi DRAM-baserte SSD-er ikke har dette problemet, og det har heller ikke HDD-er (bortsett fra SMR HDD-er). For å forstå skriveforsterkning, må du vite hvordan disse NAND-SSD-ene fungerer.
SSD-en din lagrer data i NAND-flashbrikker. Hver brikke er delt inn i blokker, og hver blokk er videre delt inn i sider — den minste lagringsenheten, vanligvis 8-16 KB. Disse NAND-flashbrikkene har noen særegenheter. Den første er at data skrives på sidenivå, men slettes på blokk-nivå. Et annet problem er at NAND-flash har et begrenset antall skrive-/slett-sykluser.
For å dempe disse problemene holder SSD-kontrolleren et internt kart over hvor hver databit ligger. Hver adresse er koblet til en side, og når SSD-en mottar en kommando om å skrive data til adresse ABC, kan den skrive det til hvilken som helst side og ganske enkelt oppdatere kartet sitt til «Adresse ABC ligger nå på side X.» Når verten ber om å få tilgang til dataene på adresse ABC, vet SSD-kontrolleren at side X inneholder data for adresse ABC.
En helt ny SSD kommer med alle blokkene slettet, så kontrollerens oppgave er ganske enkel: den skriver data sekvensielt til de tomme sidene. Disse sidene, og deretter blokkene, fylles opp. Dette er hvor ting blir komplisert. Se, data skrevet til en bestemt side kan ikke overskrives eller endres: blokken må slettes, og deretter kan nye data skrives til sidene i den. Når dataene på en bestemt adresse blir endret, skriver kontrolleren de oppdaterte dataene på en ny side, og siden som inneholder de eldre dataene blir ugyldiggjort. Blokker begynner å akkumulere ugyldige sider før de blir slettet.
Skriveforsterkning i aksjon
Ta et enkelt eksempel: det er to blokker, Blokk A og B med fem sider hver. Blokk A har to gyldige sider og tre ugyldige sider, og Blokk B har én ugyldig side og fire tomme sider. Du kopierer data tilsvarende fem sider til SSD-en. For å gjøre det, må SSD-en først kopiere de to gyldige sidene til de tomme sidene i Blokk B, slette Blokk A, og deretter skrive data tilsvarende fem sider til Blokk A. For å skrive data tilsvarende fem sider, måtte SSD-en utføre skriving tilsvarende syv sider.
SSDer har innebygde mekanismer for å forhindre ujevn slitasje
Disse, i kombinasjon med hvordan NAND-minne fungerer, resulterer i skriveforsterkning
SSD-er ville hatt en mye kortere levetid hvis det ikke var for disse tre funksjonene:
- TRIM: Forteller kontrolleren hvilke slettede sider som er trygge å slette under søppelsanking.
- Avfallshåndtering (GC): Flytter gyldige data ut av skitne blokker slik at de kan slettes og brukes på nytt.
- Slitasjeutjevning: Fordeler skriving jevnt over alle blokker, slik at ingen enkeltblokk slites ut tidlig.
Disse funksjonene arbeider sammen for å forhindre for tidlig SSD-feil ved å identifisere ugyldige sider, flytte gyldige data til andre blokker mens ugyldige blokker slettes, og distribuere nye skriver samtidig som kald/statisk data flyttes til andre blokker. Men disse funksjonene er et pharmakon, for å låne et begrep fra Jacques Derrida: noe som er både en kur og et giftstoff på samme tid. For å forhindre ujevn slitasje skjer flere skriver enn strengt tatt nødvendig.
SSDer benytter over-provisioning, hvor den faktiske lagringskapasiteten er litt større enn det verten (din datamaskin) kan se og bruke. Denne ekstra lagringen sikrer at SSDen din har god plass til å utføre garbage collection og wear leveling uten å påvirke SSDens ytelse negativt. Etter hvert som SSDen fylles opp, kjører garbage collection mer aggressivt for å finne ut hvilke blokker som kan slettes, og flere skrivinger finner sted når SSDen flytter gyldige sider, slik at blokker frigjøres for nye data, noe som øker skriveforsterkningen.
Hva du kan gjøre med skriveforsterkning
Siden skriveforsterkning er noe som strukturelt er en del av hvordan NAND-flashbrikker fungerer, kan du egentlig ikke eliminere det. Det beste du kan gjøre er å ikke bruke mer enn 80 % av SSD-ens lagringskapasitet. Tenk på det som manuell over-provisioning, siden SSD-er for forbrukere vanligvis bare har 7 % over-provisioning satt av produsenten.






