Garbage Collection & TRIM: SSD Dirty Little Secret
rumblingsna online och i vissa It-kretsar har visat sig vara sanna: SSD-hastigheter kan sakta ner över tiden. Lyckligtvis finns det saker du kan göra som kan förhindra att detta händer och hjälpa dig att behålla din SSD: s snabba natur.
vad är SSD Garbage Collection
precis som att ta ut papperskorgen är en nödvändig uppgift för att underhålla ditt hem, är sophämtning också en typ av SSD-underhåll. Det är något av en missvisande eftersom sophämtning har ingenting att göra med att ta bort filer som inte längre behövs. Det är mer som att bli av med tomma lådor med saker du redan har kastat bort. I sin kärna är SSD garbage collection en automatiserad process som är utformad för att förbättra prestanda.
Vi vet alla SSD: er är initialt mycket snabba men vi upptäcker att de blir långsammare över tiden, särskilt när enheten börjar fylla. Det här är precis det som SSD sophämtning är utformad för att förhindra. Med korrekt underhåll kan hastigheten på en SSD bevaras.
den stora SSD-avmattningen
för att förstå varför SSD: er blir långsammare med tiden är det viktigt att veta hur filsystem fungerar. Varje filsystem har sitt eget sätt att göra saker, men generellt sett, när du tar bort en fil, är den filen inte riktigt borta. Operativsystemet raderar vanligtvis inte lagringsblocken som tidigare beboddes av filen. Istället markerar operativsystemet helt enkelt blocken som tillgängliga och lagrar den informationen i en katalogfil. Det är därför återvinning programvara som Hard Disk Warrior kan återställa filer som har’raderas’. Filen finns fortfarande i dessa block på disken, men katalogfilen listar dem som tomma så att de är osynliga för din dator.
med hårddiskar denna metod för att ta bort en fil var inte ett problem. Operativsystemet skulle helt enkelt markera blocken som tillgängliga, och hårddisken kunde skriva nya data över toppen av den gamla data. SSD kan inte göra det. För SSD: er måste lagringsblock raderas innan de kan skrivas över. Det är detta krav för att radera tidigare använda block som gör att SSD-enheter blir långsammare över tiden.
ta ut SSD-soporna
för att förhindra att denna oönskade situation händer, kör moderna SSD-enheter komplexa rutiner som kallas sophämtning för att alltid hålla så stor reserv som möjligt av orörda tomma block redo för skrivning. Sophämtning innebär att kontrollenheten söker igenom sin inventering av skrivna sidor efter sidor som har markerats som ”inaktuella”—det vill säga de skrevs till och sedan behövde de data de innehöll ändras av operativsystemet; eftersom det är omöjligt att ändra sidans tillstånd utan att först radera det, skrivs ändringarna alltid till nya sidor och de gamla sidorna markeras inaktuella. Garbage collection letar efter block som innehåller en blandning av bra och inaktuella sidor och sedan duplicerar alla bra sidor i nya block och lämnar bara inaktuella sidor i det gamla blocket. Sedan raderar det gamla blocket och markerar det klart för användning.
det finns en mer detalj att notera om SSD sophämtning, dock. SSD: er kan läsa och skriva på sidnivå—vilket vanligtvis är 8 kB för moderna enheter—men de har ett märkligt misslyckande genom att de inte kan radera på sidnivå. SSD: er kan bara radera hela block, som vanligtvis består av hundratals sidor. Anledningen till detta är att radering av sidans innehåll kräver att den sidan stängs med en obetydlig mängd spänning, och NAND-stillayouten för alla moderna SSD-enheter gör det oöverkomligt svårt att isolera den spänningen till endast de sidor som behöver raderas.
och här är där ”sophämtning” missvisande kommer in i bilden, eftersom det är faktiskt bra sidor som ”samlas”, med soporna kvar. Målet bakom denna process är att försöka optimera prestanda genom att ha block antingen helt tomma (och sedan radera blocket) eller helt fullt.
vad sägs om TRIM?
på en hårddisk finns det vanligtvis en fast korrelation mellan filsystemets kluster och diskens sektorer. Men på en SSD, där det inte finns någon fast korrelation och där sidor i bruk måste spåras och hämtas av skräpsamling, kan det vara en stor sak. Sidor som innehåller raderade filer ser ut som giltiga sidor, och de fortsätter att samlas in tillsammans med faktiskt bra sidor.
detta är situationen TRIM infördes för att åtgärda. TRIM (som är korrekt aktiverat men inte är en akronym) är ett ata-kommando som operativsystemet kan orsaka att skickas när det tar bort en fil. TRIM-kommandot ger den bron från filnivån till blocknivån, vilket ger operativsystemet ett sätt att berätta för SSD att det tar bort filer och att markera dessa filers sidor som inaktuella.
med TRIM tvingas en SSD inte längre att spara sidor som tillhör raderade filer. TRIM är inte ett alternativ till sophämtning—det fungerar med sophämtning för att mer korrekt markera sidor som inaktuella. Och du behöver inte trimma för att sophämtning ska fungera—men TRIM gör en SSD: s sophämtning effektivare.
med det sagt, om du använder en Mac, stöder Apple inte TRIM på SSD-enheter från tredje part. Det var möjligt att kringgå denna begränsning i tidigare versioner av OS X, Men du kan inte göra det i Yosemite utan att öppna ett säkerhetshål —gör inte det, för även om TRIM gör skillnad i att minska skrivförstärkningen och förlänga livslängden och prestandan hos en SSD, är det inte värt de säkerhetshål i ladugården som du måste öppna för att få det.
så använd alltid TRIM om du kan. Det kommer att göra din SSD: s sophämtning fungerar mycket bättre. Men om du befinner dig i en situation där TRIM inte är tillgängligt, var inte panik—det är trevligt att ha, men det är inte ett krav.