Zachraňujeme dáta zo zlyhávajúceho disku. Zn. zadarmo

Nič nevydrží večne (FLASH)

Flash pamäte sú trochu iná kategória, mechnické bolesti pevných diskov ich netrápia a znesú trochu hrubšie zaobchádzanie, za to majú svoje špecifické problémy. V popise sme si uviedli, že FLASH pamäť využíva tunelového efektu pre zápis dát. Problémom je, že tento efekt má deštruktívny vplyv na materiál izolujúci plávajúcu bázu (dioxid kremíka), ktorý začne postupom času elektróny pohlcovať, čím sa zmenšuje rozdiel medzi prahovými napätiami, ktoré odpovedajú úrovniam pre logickú 0 a 1. Tým pádom ostane pamäťová bunka, po určitom počte zápisov, trvale v stave logickej jednotky (nemá náboj. t.j. neblokuje čítacie napätie), prípadne v nedefinovanom stave, kedy prečítané napätie neodpovedá ani jednému z definovaných stavov.

FLASH bunky majú životnosť zhruba 100 000 zápisových cyklov (SLC, 1 bit na bunku, 1 napäťová úroveň), okolo 5000 pre MLC (= bežné SSD, 2 bity na bunku, 2 napäťové úrovne), TLC (tri bity na bunku) len okolo 1000 (napr. taký Samsung 840 non-Pro, 840Pro je MLC). Prečo tendencia klesá je celkom jasné - ako sa materiál unavuje, klesá schopnosť rozpoznať stavy, a na čím viac napäťových úrovní chceme nastaviť na plávajúcej báze, tým užšie sú intervaly medzi nimi menšie a tým rýchlejšie môže dôjsť k chybe, resp. konečnému štádiu opotrebovania. Preto odporúčam vyvarovať sa SSD s TLC pamäťami pre náročné použitie, pre domáce použitie možno postačuje, v náročných podmienkach aspoň MLC. Pri zápise 20-30GB dát Vám aj TLC potenciálne vydrží roky (spomínaný Samsung 840 s TLC pamäťami vydržal v teste na xtremesystems.org 432TB zápisu). Paradoxom vývoja SSD je, že so zmenšujúcim sa výrobným procesom klesá aj životnosť pamäťových buniek - kým 34nm MLC zvládnu 5000 P/E cyklov, 25nm už len 3000. Nižší výrobný proces znamená nižšie napätie, užšie intervaly pre jednotlivé stavy.

Práve preto má každý radič FLASH pamätí integrovanú techniku pre vyrovnávanie záťaže medzi jednotlivé bunky, aby sa všetky opotrebovávali približne rovnomerne. Nakoľko SSD sú spomedzi FLASH zariadení vyťažované asi najviac, postupne bol do radičov SSD diskov pre zvýšenie životnosti implementovaný garbage collector a príkaz TRIM.

V prvom rade, SSD nie je organizované tak, ako pevný disk - je delené na bloky a tie ďalej na tzv. pages, stránky. Veľkosť stránky je obvykle 4kB (podobne ako v operačnom systéme), blok pozostáva zo 128 stránok, celkovo má teda 512kB. Problém u SSD je, že pokiaľ máme na disku určité dáta a tie zmeníme, nenastane ich prepis, ako na klasickom HDD. Tieto dáta musia byť najprv zmazané a až potom zapísané. Dáta môžu byť zapisované do jednotlivých stránok, no problém je, že mazané môžu byť len celé bloky. Preto SSD, pri prepise dát, pôvodné dáta označí ako neplatné a nové dáta uloží na iné voľné miesto, aj kvôli snahe opotrebovávať bunky rovnomerne. Pokiaľ však chceme zmazať blok a označiť ho ako voľný, musíme platné stránky z tohto bloku niekam presunúť, čím dochádza k tzv. write amplification - teda dáta, ktoré sme dávnejšie zapísali, sú v skutočnosti zapísané na niekoľkých miestach na disku (platná je vždy jedna kópia). WA sa matematicky dá vyjadriť ako pomer medzi množstvom reálne zapísaných dát ku dátam, ktoré zapísal operačný systém. Navyše keď zmažeme súbor, SSD samo o sebe nevie, že sme ho vymazali. Operačný systém totiž len označí v tabuľke súborov dotyčnú časť disku ako voľné miesto, no fyzicky tam dáta stále sú a SSD ich vedie ako platné stránky.

Príkaz TRIM je práve určený na to, aby operačný systém zdelil SSD-čku, že môže dáta po vymazaní súboru fyzicky zneplatniť. Tým nám na disku neostávajú zombie-súbory a garbage collectoru, ktorý sa stará práve o mazanie neplatných blokov a presun platných stránok, to uľahčuje život. A samozrejme sa tým znižuje write amplification, nakoľko nedochádza k presunu stránok, ktoré by boli ináč označené ako platné, no v skutočnosti patria vymazanému súboru. Pre detailnejší popis, ako aj dopad na výkon, odporúčam článok Problémy SSD na našom webe.

Smrť SSD môže byť v určitých prípadoch rýchlejšia ako smrť pevného disku. Elektronika v SSD môže umrieť v podstate z minúty na minútu, bez varovania. Prípadne pre chybu vo firmware sa radič jednoducho zablokuje, a máte po dátach. Riešenie? Niekedy pomôže len odpájkovať kontrolér a priletovať nový. Pokiaľ je SSD interne hardwarovo kryptované, po zlyhaní radiča nezachránite vôbec nič, nakoľko kryptovacie kľúče su pre každý disk unikátne. Preto radšej siahnite po SSD bez vstavaného šifrovania a pre kryptovanie použite napr. TrueCrypt. Firmware však u nových SSD nebýva problém, pôrodné bolesti novej technológie sú zdá sa za nami. Okrem toho sú smrteľné kŕče SSD podobné tým u pevných diskov - BSOD, I/O chyby, nemožnosť čítať súbory...

Pokiaľ SSD zlyháva, garbage collector môže presúvať dáta, ktoré sú zapísané na fungujúcich stránkach, na stránky chybné. A hoci sa počet zlých buniek z krátkeho časového hľadiska meniť nemusí, budete postupne prichádzať o viac a viac dát. Taktiež pozor na výpadky napájania - SSD (FLASH pamäť vo všeobecnosti) je na ne citlivejšia.

Komentáre (12)
Broslowski
Skvelý článok, tlieskam!
Shatterhand
Ja len takú malú poznámočku - termín "plávajúca báza" sa (pokiaľ viem) nepoužíva, používa sa termín "plávajúce hradlo", aj keď v zásade slovo gate/base možno preložiť ako báza/hradlo. Technicky to však nie je správne, pretože báza alias base sa používa len pri určitom type tranzistora(nebudem to rozpitvávať), pri inom zasa gate. Ale inak klobúk dole za článok, muselo to zabrať dosť času naštudovať a tak jasne spracovať !
periodic
Pomocou akeho programu sa da zistit access time na jednotlive sektory (staci iba pri citani), ale pritom sa dal nastavit timeout, pokial ten cas presiahne mnou nastavenu hodnotu? Pri programe Victoria 4.46 vsetko ide, len nereaguje na mnou nastaveny timeout cas a stale sa snazi citat sektory, ktore maju pristup vacsi, alebo su poskodene, ze ich nevie precitat. Taka detekcia potom trva zbytocne dlhu dobu a pritom aj tak nepotrebujem vediet aky je cas pokial je vecsi ako mnou nastavena hodnota (pre mna pouzitelny cas je do 100 ms, ale program sa stale snazi citat sektory aj s niekolko sekundovym pristupom). Chcel by som si zistit este neposkodene casti (obsadit ich particiou) a tie este na nejaky cas pouzivat, ostatne poskodene casti a casti s horsou dobou pristupu by zostali neobsadene (nepouzivane).
Pjetro_de
Dovolim si oponovat v tom, ze RAID je naplast a riesi svetko zalohovanie. Neriesi. Zachrana dat z pokazeneho RAID pola (nie jednotliveho pokazeneho disku, ale celeho RAID pola) je ovela zlozitejsia ako zachrana dat na jednotlivom disku. Ak totiz zlyha SW obsluhujuci RAID, na diskoch su/budu necitatelne nezmysly. Ak zlyha HW (radic RAID pola), asi na tom nebudeme o nic lespie, ba este horsie. Chlapik v BA mi pri zachrane disku povedal, ze tam mava pravidelne placucich adminov, ktori si myslia, ze RAID je svatena voda, ktora vsetko riesi a velmi sa cuduju, ze ked cely RAID klakne, sanca na zachranu je milion-nasobne mensia ako pri jednotlivom HDD. Takze dovolim si poopravit, zalohovanie dnes vieme realizovat jedine kombinaciou tychchto faktorov: 1) Kopirovanim dat na novsie a novsie nosice - aj novsie generacie nosicov, pretoze tie zasratavaju jednak moralne a jednak fyzicky. Nikto neskusal precitat nieco po 500 rokoch, simulacie su na nic. Plati nepriama umera: cim viac dat, tym menej su trvacne. Ryhy na kosti vlka predstavuju zopar bajtov, ale vo volnej prirode prezili 50 tisic rokov. Hieroglyfy na egyptskych skalach (ci "kamenne" pisma inych civilizacii) predstavuju radovo kilobajty az desiatky kilobajtov a prezili 5 tisic rokov. Staroveke zvitky (knihy v staroveku neexistovali) predstavovali mozno uz niekolko desiatok kB ci radovo sto kB a prezili by tiez mozno tisicrocie (keby iní chuji nevypalili Alexandrijsku knihnicu). Knihy obsahujuce radovo stovky kB dat vydrzia storocia (potom sa bohuzial zacnu rozpadavat ako vsetko po istom case, treba kvalitny papier a specialne podmienky skladovania). Jednoducho ako pribuda kapacita, ubuda trvacnost. Dnesne 4 TB disky si istotne nezachovaju data 50 tisic, 5 tisic rokov, ani 500 ci 50 rokov ale blizsie realite je 5 rokov. Samozrejme pri zaobchadzani v kuravickach. 2) Nezavislou redundanciou dat. T.j. mat to na viacerych (dvoch-troch) miestach naraz. Ako som ale pisal vyssie, RAID nie je tento typ, pretoze tie disky nie su nezavisle. Riadi ich softver a hardver RAID pola a ked zlyha ovladanie RAID pola, data budeme tazko dolovat. Idealne je mat teda data na 2-3 diskoch UPLNE, SEPARATNYCH a teda nijako nezavislych. Samozrejme niekto moze vidiet problem, kto to tam bude stale kopirovat. Na to staci disky pripojit raz za den/tyzden/mesiac alebo ako casto chceme a pripravenym batakom si tam v noci (zakial budeme spinkat) natrieskat co chceme ...
nManJofo
Nie je RAID ako RAID samozrejme... pokial mi lahne radic na 5-kovom poli, tak je to pruser, ale u jednotky by to nemal byt problem, nakolko oba disky obsahuju rovnake data.
Pjetro_de
Samozrejme zalezi od RAIDu, sak ich je aj tucet druhov ... Jediny "neohrozeny" by teoreticky mohol byt ten jednoduchy mirroring (na ktory stacia 2 disky), resp. aj velke RAIDy obsahujuce v konecnom dosledku mirroring, aj ked na tom visi napr. 0 ci replikacia celeho pola. Vsetko ostatne co vobec neobsahuje mirroring je dost ohrozene najme 5 a 6. Je sice pekne ze pri 5tke (min 3 disky) moze zlyhat jeden lubovolny disk a pri 6tke (min 4 disky) mozu zlyhat lubovolne dva. Ked zlyha cely RAID, data na kazdom disku su uplne na prd.
Hiro
Ani ten nebude moc super. Staci nejaky vyboj ci skrat kde odidu oba disky naraz. Ja to riesim tak ze mam externy disk kde synchronizujem zalohu kazdy tyzden a inak je vypnuty, odlozeny.
felipe25
Napodobne, super clanok... Vecer vyskusam na dvoch kartach a jednom USB ktore mi uz rok potom co ich getdataback nevie rozchodit, a system ich detekuje.. snad pomoze :)
felipe25
Strana 5: "3.Nabootujte z USB kľúča, bude Vás čakať terminál. V prvom rade musíme disky v systéme identifikovať. K tomu slúži utilita fdisk. Do terminálu napíšte: " mam problem, po boote vidim akesi menu: 1. default 2. start/install ubuntu /myslimP. 3. boot from first harddrive atd.. co mam zvolit? vyskusal som 1 aj 2, no potom zacne len blikat kurzor... ak napisem : sudo fdisk -l nic sa nedeje.. ale ani nevidim ubuntu@ubuntu: ? Co s tym? Diky
nManJofo
Tam len hodit enter a to ubuntu by malo startovat
felipe25
Pytam sa dalej v sekcii vo fore: http://pretaktovanie.zoznam.sk/viewtopic.php?f=13&t=96090 Čítajte viac: http://pc.zoznam.sk/node/16349/talk#comment-50026#ixzz2fpppXac5
pauco
Musim napisat pochvalny koment. Clanok sa cita velmi dobre, ma to hlavu aj patu a na konci konkretny priklad, palec hore.
Pridať nový komentár
TOPlist