Portál AbcLinuxu, 6. května 2025 16:38
Řešení dotazu:
Zaprvé se přimlouvám za SmartMonTools = původně linuxový projekt, ale existuje port pro Windows. Mimo jiné umí zjevit všechny SMART atributy vč. Reallocated Sector Count a Offline Uncorrectable - týká se "rotující rzi". Ne vždy, ale dost často disky hlásí předem v těchto atributech, že se něco děje, a pokud v systému běží smartd, tak pošle varování. Takže konečná smrt disku pak není překvápko.
SmartCtl umí také zobrazit zajímavé statistiky z SSD - například už tuším některá/mnohá SSDčka hlásí standardizovaný "počet přepisů" (historicky se tohle dalo zjistit jenom pomocí vendor-proprietary nástrojů).
Obecně byste měl mít především představu, kolik přepisů ten disk má vydržet. Jako nenáročná bootovačka v klientském stroji vydrží běžně MLC dostatečně dlouho (několik let). Pokud ale SSDčku naložíte trvalý tok drobných zápisů, přežije MLC třeba jenom tři měsíce. Co přežijou dnešní konzumní TLC a QLC, to si netroufám soudit. Ony řadiče dokážou drobné jednotlivé chyby docela dobře odstínit (na bázi nějakého ECC/FEC) ale při masivním úhynu erase bloků už s tím nejde nic moc dělat - a u flashek rozhodně není spoleh, že když dojdou erase bloky, tak že půjde aspoň přečíst co se dá, spíše opak je pravdou.
Pokud víte předem, že chcete SSD, ale že má mít nějakou specifikovanou netriviální odolnost proti přepisům, existují průmyslové disky. Deklarace střetu zájmů: prodáváme značku Innodisk, která se na průmyslový segment specializuje. Obecně platily dlouhá léta následující dovolené počty přepisů:
SLC: 50k
MLC: 3k
TLC/QLC: radši nepátrat (řádově 1000)
Později přibylo "pseudo-SLC na bázi MLC čipů", Innodisk mu říká iSLC, konkurence má jiné názvy. V našem případě se udává tradičně asi 30k přepisů.
Údajně už existují řady "pseudo-SLC" SSD na aktuálních litografických technologiích (řekněme TLC) které mají jmenovitý počet vnějších celkových přepisů vyhnaný až někam ke 100k (využíváním pouze 1 bitu na buňku a velikou zásobou rezervních bloků).
Počty již provedených přepisů se dají z SSDček zjistit, bývají k dispozici dvě statistická čísla AVG a MAX. SSDčko si interně vede počty "per erase block" a z nich tu statistiku počítá. Pokud hodnota MAX není o mnoho vyšší než AVG, tak to víceméně znamená, že wear leveling funguje správně.
Aktuální SmartMonTools (smartctl/smartd) umí tuším kromě ATA/SATA a SCSI taky NVME.
Pro eMMC (embedded záležitost, podobná/příbuzná SD, rozhraní je i zde na blokové vrstvě) je v Linuxu k dispozici dedicated utilita zvaná prostě mmc z balíku mmc-utils, která dokáže zjistit v zásadě hrubý integer, který říká "procento ošoupání" (odžité životnosti). Přesněji procento využití rezervních erase bloků.
Průmyslová SSDčka (přinejmenším některé řady) mají taky vylepšenou odolnost proti náhlému výpadku napájení. Toto může být řešeno opatrnějším write-back bufferingem, dodržováním "bariérových operací" ve write-back frontě, opatrnějším wear levelingem (minimalizací "kritických sekcí" kdy jsou data na čipech v nekonzistentním stavu), a některé špičkové modely mají navíc superkondík, který dá SSDčku pří výpadku napájení dostatek času pro writeback.
Na tomto místě je vhodné rozlišovat minimálně dvě vrstvy provozu SSD úložiště:
A) interní wear leveling / mapování vnějšího LBA prostoru na řádky a erase bloky (nekonzistence interních metadat může být fatální)
versus
B) konzistenci "užitečných dat" = souborového systému, který je na disku provozován operačním systémem.
Levná SSDčka napříč dobou jsou schopna přijít o konzistenci interních metadat, na což reagují buď introvertní smrtí nebo totální ztrátou užitečných dat... (reset metadat do "prázdného" stavu).
You get what you pay for.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.