Zkratka proSolid State Drivees-es-déTakéSolid State Drive, NVMe SSD, SSD disk, flash diskZákladní
Definice
SSD je úložné zařízení, které data ukládá do polovodičové flash paměti NAND místo na rotující magnetické plotny. Nemá pohyblivé části, takže přístup k libovolnému místu trvá řádově desítky mikrosekund a náhodné čtení je stokrát až tisíckrát rychlejší než u pevného disku. Řadič uvnitř SSD navíc mapuje logické bloky na fyzické buňky.
Nezaměňujte: Zkratka SSD se v jiných oborech používá i pro Sum of Squared Differences ve zpracování obrazu nebo Single Shot Detector v počítačovém vidění; toto heslo popisuje úložné zařízení.
Než se na to spolehnete: Konkrétní číselné rozsahy (latence HDD 5 až 10 ms, strop SATA kolem 600 MB/s, TBW ve stovkách TB u 1TB disku) jsou typické řádové hodnoty, ne normované údaje. Wikidata Q193406 pro Solid-state drive uvádím podle paměti, doporučuji ověřit. Doba udržení dat bez napájení se liší podle typu buněk a teploty, uvedený rozsah měsíců až let je orientační.
Proč SSD změnilo pravidla pro výkon aplikací
Klasický pevný disk musí před každým čtením přesunout rameno nad správnou stopu a počkat, až se pod hlavu otočí požadovaný sektor. Tahle mechanická latence tvoří u HDD kolem 5 až 10 milisekund a nedá se obejít žádným chytřejším softwarem. SSD tento krok nemá vůbec: adresa se přeloží v řadiči a data se přečtou z buněk NAND. Kvůli tomu přestal být u databází a build systémů kritický ukazatel „kolik sekvenčních megabajtů za sekundu“ a začaly rozhodovat IOPS, tedy počet nezávislých operací za sekundu, a latence na 99. percentilu.
Co se uvnitř děje při zápisu
Flash paměť má nepříjemnou asymetrii: číst a programovat lze po stránkách (typicky jednotky kilobajtů), ale mazat se dá jen po celých blocích, které obsahují stovky stránek. Přepis jednoho bajtu proto znamená zapsat data jinam a starou verzi označit za neplatnou. O tohle se stará vrstva FTL (Flash Translation Layer) v řadiči, která zároveň provádí wear leveling, tedy rozprostírání zápisů po celém čipu, aby se neopotřebovaly stále stejné buňky.
Vedlejším efektem je write amplification: aplikace zapíše 4 kB, ale disk kvůli úklidu (garbage collection) fyzicky zapíše mnohem víc. Proto operační systémy posílají příkaz TRIM, kterým souborový systém oznámí, které bloky už nejsou potřeba, a řadič je může uklidit dopředu.
Typy buněk a jejich cena
SLC ukládá jeden bit na buňku, MLC dva, TLC tři a QLC čtyři. Čím víc bitů, tím nižší cena za gigabajt, ale také méně zápisových cyklů a pomalejší zápis, jakmile se vyčerpá rychlá SLC vyrovnávací oblast. Spotřební QLC disk proto může při dlouhém kopírování spadnout na rychlost blízkou pevnému disku.
SATA versus NVMe
Rozhraní SATA vzniklo pro mechanické disky a strop má kolem 600 MB/s. NVMe komunikuje přímo přes PCI Express, používá hluboké fronty a paralelismus, takže moderní disk běžně dosahuje jednotek gigabajtů za sekundu. Rozdíl v latenci je menší než rozdíl v propustnosti, ale u vysoce paralelní zátěže je zásadní.
Co z toho plyne pro vývojáře
Na SSD se vyplatí jiné datové struktury než na HDD: menší význam má sekvenční uspořádání, větší význam má počet zápisů. Databáze jako PostgreSQL nebo úložiště typu LSM-tree explicitně ladí parametry podle toho, jestli běží na flash. Zároveň platí, že SSD není náhrada operační paměti: i nejrychlejší NVMe je řádově pomalejší než RAM a má omezenou životnost v počtu zapsaných terabajtů (TBW).
Pro zálohování je důležité, že SSD po odpojení od napájení drží data omezeně dlouho (řádově měsíce až roky podle teploty a opotřebení). Jako archivní médium do šuplíku se tedy nehodí lépe než jiné technologie.
Příklady z praxe
Databáze po přesunu z HDD na NVMe
E-shop běžel na serveru s pevnými disky a výpis objednávek trval sekundy, protože každý index lookup znamenal náhodné čtení. Po migraci na NVMe SSD klesla doba dotazu pod sto milisekund bez jediné změny SQL. Úzkým místem se místo disku stalo CPU a serializace odpovědi.
Kontrola opotřebení disku přes SMART
U serverového SSD se sleduje atribut zbývající životnosti a celkový objem zapsaných dat. Když se hodnota Percentage Used blíží 100, disk se plánovaně vymění dřív, než začne odmítat zápisy. Nástroj smartctl přečte tyto údaje přímo z NVMe logu.
# přehled zdraví NVMe disku sudo smartctl -a /dev/nvme0 # ověření, že souborový systém posílá TRIM sudo fstrim -v /
Časté omyly
- MýtusSSD nemají pohyblivé části, takže se nemůžou pokazit.
- Ve skutečnostiSSD odolává otřesům, ale flash buňky mají omezený počet zápisových cyklů a selhat může i řadič nebo firmware. Porucha navíc bývá náhlá a bez varovných zvuků, takže záloha je stejně nutná jako u pevného disku.
- MýtusDefragmentace SSD zrychlí přístup k datům.
- Ve skutečnostiDefragmentace u SSD nemá smysl, protože náhodný přístup nestojí nic navíc, a naopak generuje zbytečné zápisy, které ukrajují z životnosti. Moderní systémy místo toho spouštějí TRIM.
- MýtusKdyž je disk plný z 99 procent, jde jen o volné místo.
- Ve skutečnostiZaplněné SSD nemá kam přesouvat platná data při úklidu bloků, takže prudce roste write amplification a rychlost zápisu klesá. Ponechání rezervy (over-provisioning) drží výkon stabilní.
Časté dotazy
- Jak dlouho SSD vydrží?
- Životnost SSD se udává v TBW, tedy v celkovém objemu terabajtů, které lze na disk zapsat, případně v DWPD (přepisů kapacity denně po dobu záruky). Spotřební disk o kapacitě 1 TB má běžně TBW v řádu stovek terabajtů, což při běžném desktopovém použití znamená mnoho let. Kritické není stáří, ale objem zápisů: databázový server nebo build stroj vyčerpá limit řádově rychleji než kancelářský počítač. Aktuální opotřebení se dá kdykoli přečíst ze SMART atributů.
- Kdy se ještě vyplatí pevný disk místo SSD?
- Pevný disk zůstává levnější na gigabajt, takže dává smysl u velkých archivů, záloh, videoknihoven a chladných dat, kde se čte zřídka a sekvenčně. HDD také lépe snáší dlouhé skladování bez napájení. Pro operační systém, databáze, virtuální stroje a jakoukoli zátěž s náhodným přístupem je SSD nesrovnatelně vhodnější. Časté řešení je kombinace: SSD na systém a horká data, HDD nebo objektové úložiště na zbytek.
- Jaký je rozdíl mezi SATA SSD a NVMe SSD?
- SATA SSD používá rozhraní navržené pro mechanické disky a naráží na strop kolem 600 MB/s s jednou frontou příkazů. NVMe SSD komunikuje přímo po sběrnici PCI Express, podporuje tisíce paralelních front a dosahuje jednotek gigabajtů za sekundu s nižší režií ovladače. V běžném desktopovém provozu je rozdíl subjektivně menší, než napovídají čísla, protože typická zátěž nevyužije paralelismus. U serverů, databází a kompilace velkých projektů je přínos NVMe naopak jasně měřitelný.
- Zpomaluje SSD, když se zaplní?
- Zaplněné SSD zpomaluje, a to výrazně. Řadič potřebuje volné bloky, aby mohl zapisovat a průběžně uklízet neplatná data; když jich je málo, musí před každým zápisem přesouvat platné stránky jinam. Roste tím write amplification i latence zápisu. Praktické doporučení je nechat zhruba 10 až 20 procent kapacity volných a mít zapnutý TRIM. Serverové disky mají část kapacity vyhrazenou skrytě přímo od výrobce (over-provisioning).
- Jde ze SSD obnovit smazaná data?
- Obnova dat ze SSD je výrazně těžší než u pevného disku. Jakmile souborový systém pošle TRIM, řadič bloky uvolní a při čtení už typicky vrací nuly, i když fyzické mazání proběhne až později. Klasické nástroje pro undelete proto většinou selžou. Z hlediska bezpečnosti je to výhoda, ale spolehlivé smazání celého disku se stejně provádí příkazem secure erase nebo šifrováním od začátku a následným zahozením klíče.
Zdroje
- Solid-state drive(otevře se v novém okně)
- NVM Express driver documentation(otevře se v novém okně)
- Flash memory(otevře se v novém okně)
- Guidelines for Media Sanitization (SP 800-88)(otevře se v novém okně)