[LONG !] Kontrola disku na vadne bloky pred vytvorenim filesystemu
Dan Lukes
dan at obluda.cz
Wed Feb 28 00:42:52 CET 2007
magnitudo at o2active.cz napsal/wrote, On 02/27/07 14:21:
> Chtel bych se zeptat, jak se tento problem resi pod FreeBSD. Nepodarilo se mi
> nalezt uspokojive reseni. Myslim neco analogickeho jako treba u Linuxu: mke2fs -c .
> Nemohu se zbavit pocitu, ze kdyz pridam novy disk a provedu bsdlabel (nebo sysinstall),
> tak ze mohu nahravat na spatne bloky. Moc bych nespolehal na to, ze si to sam disk
> osetri, pokud jsem dobre informovan.
Ja si trochu pustim hubu na spacir. Jen takovy sled par poznatku a
uvah. Mozna si z toho nekdo neco rozumneho vyberete. Kdo vite jak disky
a interakce OS s nimi funguje, anito nectete, nic noveho tady pro vas
nebude.
Disky ve skutecnosti s moznosti vady pocitaji. Proto jsou ulozena data
zabezpecena samoopravnymi kody. Chyby prvni vznikaji nepresnosti
vystaveni hlavy, mirnymi odchylkami v rychlosti rotace, rusenim,
drobnymi otresy a jinymi podobnymi nahodnymi jevy. Takove chyby jsou
zcela bezne, prvni uroven samoopravnych mechanismu se s nimi vyrovna a
tak nemaji zadny pozorovatelny vnejsi efekt a typicky nemaji ani zadny
vnitrni dopad. Z pohledu "uzivatele disku" se vyskyt teto udalosti
vlastne ani za chybu nepovazuje - jednak je to prilis "bezna" vec,
jednak se o ni nedozvedi.
Co se nepodari opravit na prvni urovni postupuje do druheho kola oprav.
Sem se dostavaji zavaznejsi problemy, mj. vady media ci zaznamu na nej.
I zde se pouzivaji samoopravne kody, ale slozitejsi a delsi dobu
trvajici vypocet, ktery umoznuje opravit vetsi chyby nez "rychla
analyza" v prvnim kole. V nouzi nejvyssi pak muze disk sahnout i k
opakovanemu media. Chyby druhe urovne uz maji vliv navenek. Krome
zpozdeni v dodani dat je vnejsimu svetu poskytnuta informace o vzniku
teto situace i explicitne. I pripade, ze se chybu podari napravit
obsahuje zaverecny operace informaci "opravena chyba". A samozrejme,
nepovede-li se oprava, je vysledkem operace "neopravitelna chyba".
Tim se OS muze dozvedet o chybach drive, nez se stanou neopravitelnymi.
FreeBSD vytvori LOG hlasku o "soft error", ktera se, podle nastaveni v
SYSLOGu objevi v prislusnych LOG souborech, na konzoli, a pripadne v
nocnich hlasenich.
Pozor, dneska se z disku malokdy cte jediny sektor - cislo sektoru
uvedene v takove hlasce je obvykle prvni cislo bloku sektoru, se kterymi
se pracovalo. Ale nelze zjistit, ke kteremu z nich se chyba/varovani
vztahovalo presne.
Varovani/ozmaneni chyby ale neni vsechno. Prakticky vsechny soucasne
disku (a "soucasne" dnes zahrnuje uz i disky hezkych par let stare)
obsahuji "nahradni sektory" a cele "nahradni stopy". Tyto sektory nejsou
bezne dostupne. Jejich pocet se lisi podle typu disku a je to udaj,
ktery obvykle neni verejne zjistitelny, ale patrne je typicky pomerne
velky - mam duvod odhadovat, ze by typicky mohlo jit o vice nez promile
a mene nez procento celkove kapacity disku.
Disk, ktery zjisti pri zapisu neopravitelnou chybu media takovy sektor
vyradi a misto nej zacne pouzivat nektery z nahradnich. Ucini tak tise,
bez toho, ze o tom uzivatele nejak informuji. Vyjimku z "tise" mohou
tvorit disky podporujici S.M.A.R.T - prostrednictvim tohoto protokolu
disk MUZE dat k dispozici informaci o tom, ze k nejakym relokacim v
historii disku doslo. Ale nemusi. Pripadna moznost zjistit "kolikrat" uz
je pak vyslovene proprietarni zalezitost.
U cteni je situace jina - neopravitelne chyby pri cteni konci chybou,
ale relokace se neprovadi. Sektor ale muze/nemusi byt oznacen jako
uncorrectable/pending coz vyvola jeho nepodminenou relokaci pri pristim
zapisu (nezkouma se tedy, jestli by novy zapis dat do sektoru problem
nevyresil). Opravitelna chyba muze vyvolat zpetny zapis vypoctenych
opravenych dat zpet na medium, do stejneho nebo nahradniho sektoru.
Nicmene, presne chovani disku je proprietarni a neverejna zalezitost a
ruzne disky mohou (ne)relokovat i na zaklade jinych (ci dalsich) podminek.
"Specialni" testovaci utility vyrobce ve skutecnosti nejsou nic
magickeho - typicky vyuzivaji zcela standardni pristupove funkce. Takova
typicka testovaci rutina disk proste pouze precte. V lepsim pripade,
narazi-li na problem, zapise prectena data zpet, coz pripadne vyvola
vnitrni relokaci. Typickym vysledkem testovaci utility vyrobce tedy je
"disk bez zavad" (ti poctivejsi nekdy, pokud neco najdou, "nalezene
zavady uspesne opraveny").
Soucasne FreeBSD nepocita s trvalym vyskytem na disku. Kdysi se s
takovou moznosti pocitalo a OS obsahoval nejake automaticke reakce na
vyskyt takove udalosti, ale mam dojem, ze nekde v oblasti prechodu
3.x->4.x byla "podpora behu na vadnych discich" odstranena. Nicmene,
stale zustala moznost vadny sektor izolovat "rucne" (man badsect) - to
je ale mozne jen u vadnych sektoru, ktere nepadly "do nevhodneho mista"
(to ale do znacne miry platilo i pro puvodni system).
---------------
Tolik tedy informace, aby si kazdy mohl svoji cestu rozmyslet sam. A
jak jsem si to rozmyslel ja ?
Aktualni stav disku lze zjistit jeho kompletnim prectenim. Jak soft tak
hard error - i kdyby jen jedna - jsou signalem, ze disk neni vhodny pro
dulezita data. I v pripade, ze cteni zadnou chybu nezjisti, neni to
dukaz, ze disk za sebou nema pohnutou historii - muze obsahovt desitky i
stovky relokovanych sektoru. Pokud nam informaci o nich neposkytne
S.M.A.R.T. (a jak jsem psal, i kdyz tam je, tak nemusi, a i kdyz
poskytne, nemusi tak udelat detailnim zpusobem) mame smulu.
Konsolidaci disku (ukryti pripadnych problemu) lze dosahnout zapisem do
vsech sektoru - pripadne problematicke sektory budou relokovany. Na
rozdil od cteni, ktere o stavu disku poskytne alespon nejakou informaci,
zapis je v tomto ohledu bezcenny - on chyby neukaze - proste je
"odstrani" (ve skutecnosti ukryje). Tedy - vyjma pripadu, kdy zapis
skutecne nejakou chybu ukaze - pak je ale disk nejspis v prevelice
spatnem stavu a pro ukladani dat nevhodny.
"Specialni utility od vyrobce" neudelaji nic lepsiho a tedy jejich
pouziti vetsinou nic zajimaveho neprinese.
Na discich, ktere maji S.M.A.R.T. lze take vyvolat vnitrni test. co
dela presne ten se nevi, patrne udela jen proste cteni celeho disku,
tedy totez co "uzivatelske precteni", ale uskodit to spis nemuze.
"Predformatovaci" kontrola "podle Dana" tedy spociva v precteni a
nasledne zapsani vsech sektoru (oboji pomoci dd) a je-li S.M.A.R.T. tak
vyvolani vnitrniho long testu - a kontrole udaju, ktere S.M.A.R.T.
poskytne - budou-li nejake pouzitelne.
"Provozni" kontrola je velmi omezena - k dispozici jsou pouze varovani
o soft-error. Plus to, co poskytne S.M.A.R.T.
Predpokladejme, ze chyba, ktera nevznikla "nasilim" je chyba postupne
se objevujici a bude vcas oznamena takto nez se stane neopravitelnou.
Chyby vznikle nasilim (mechanicky naraz, prepeti v napajeni, upadla
cteci hlava a pod.) sice budou "bez varovani neopravitelne", ale ty
stejne nelze predikovat otestovanim disku.
Tak si z toho neco vyberte ...
Dan
--
Dan Lukes SISAL MFF UK
AKA: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz
More information about the Users-l
mailing list