[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