Drazí přátelé!
Dovolte, abych vnesl trochu zmatku do světa ukládání dat:
001) Funkce TRIM(ATA) či UNMAP(SCSI) nemá přímou souvislost s nepřepisováním jedné stránky, ale slouží k tomu, aby souborový systém mohl disku oznámit, že smazal nějaké soubory. Tudíž, že jimi obsazené sektory jsou nyní volné a SSD disk na nich může provést Garbage Collection. Tedy Asynchronní Erase, které stránku připraví pro příští zápis a přemístí ji do bufferu, který se používá pro Wear Leveling. Buffer je to místo, které na disku není vidět, ale je tam právě proto, aby poskytovalo zásobárnu čerstvých stránek pro nové zápisy a aby se do něj navždy remapovaly ty stránky, které jsou již zničené. Počet zničených stránek v tomto bufferu = stav opotřebení SSD disku.
010) Aby se nezapisovalo stále do jedné stránky, je potřeba, aby disk uměl "Wear Leveling", což je právě ono transparentní přemapovávání stránek.
Disk, který umí reagovat na TRIM/UNMAP, umí vždy i Wear Leveling.
Disk, který umí Wear Leveling nemusí TRIM/UNMAP umět.
011) TRIM/UNMAP nefunguje, pokud tyto informace nepředává souborový systém. A většina FS informace nepředává, nebo se musí k jejich předávání aspoň specielně namountovat (např. ext4). Naštěstí, jak jsem uvedl výše, Wear Leveling funguje i BEZ těchto informací, jen prostě maličko hůře.
100) Typická SD karta neumí ani TRIM, UNMAP ani Wear Leveling.
101) Industrial SD karta umí vždy Wear Leveling. Navíc používá i kvalitnější NAND médium - SLC. Takže vydrží i bez nutnosti jakkoliv ošetřovat program. Pokud karta umí Wear Leveling a zároveň je na ní hodně volného, nikdy nepopsaného místa, pak je téměř nezničitelná.
110) Další možností je použít takový souborový systém, který je "Flash Friendly" a proces Wear Levelingu vlastně simuluje neustálým přemapováváním stránek při každém větším zápisu. Bohužel, tyhle exotické FS nejsou moc rozšířené a pokud člověk není linuxový geek, tak se mu s nimi blbje pracuje.
111) Mám-li plnou kontrolu nad kódem aplikace a nechci kupovat drahé médium, pak si skutečně mohu pomoci obezličkou v podobě kruhového logování apod. Potíž je, že i tak dojde po čase k většímu opotřebení těch sektorů média, na kterých jsou uloženy tabulky s metadaty souborového systému. Ideální tedy je kombinovat tuto programátorskou techniku se bufferováním logů v RAM a cyklickým dávkovým ukládáním například každou hodinu. Bohužel, to sebou nese i pár nevýhod, jako například ztrátu obsahu logu v případě neočekávaného rebootu.
Douška:
SLC rozlišuje v jedné paměťové buňce dvě napěťové úrovně. Tedy jeden bit, který může nabývat hodnot 0 nebo 1.
MLC 4 napěťové úrovně a 2 bity.
TLC 8 napěťových úrovní a 3 bity.
QLC 16 napěťových úrovní a 4 bity.
Jinýmy slovy, MLC, TLC a QLC je vlastně ukládání digitální informace analogovým způsobem. A zpátky se to čte voltmetrem.
Je tedy nad slunce jasné, že dříve nebo později se informaci (exaktně) přečíst nepovede. Z toho plyne poučení, že písničky si v klidu pouštím z magneťáku, ale do Gamma nože dávám před operací mozku zásadně SD kartu Swissbit SLC Industrial.