Chyba cteni disku
Dan Lukes
dan at obluda.cz
Tue Sep 2 01:02:10 CEST 2014
On 1.9.2014 21:17, Zbyněk Burget:
> Muj vadny sektor musi byt nekde v datech, protoze mi na konzole skacou
> chyby cteni. kdyby byla chyba ve volnem miste, tak by to, predpokladam,
> nic nechtelo cist.
Nejsem si jisty, co se presne stane, kdyz "jen" posunes konec souboru.
Obzvlast pokud ho posunes jen v ramci fragmentu, ktery uz stejne pro
dany soubor naalokovany je.
> co kdyz je vadny sektor v adresarove strukture? Kdy mi takhle nahlasi chybu cteni?
Kdyby nic jinyho, adresar lze precist jako by to byl obycejny soubor.
Jen zapisovat je timto zpusobem zakazano. No a pak by ti samozrejme mel
nahlasit chybu pokud prochazis zapisy v adresari - ale to nemusi platit
vzdy. Pokud mel kdysi adresar hodne souboru tak se "natahne", ale uz se
nikdy nezmensi. Pokud ma dnes zaznamu jen par, tak pri prochazeni do te
"vadne" casti zabrousit nemusis.
>> Takze nakonec jsem si napsal vlastni utilitu, ktera cte cely disk po
>> relativne velkych blocich (takze pomerne rychle) a kdyz se konkretni
>> blok nepovede, tak to pulenim intervalu upresni az na uroven jednoho
>> sektoru - a prepise jen ten. Navic za "problem" nepovazuju jen to, ze se
>> dany blok nepodarilo precist vubec, ale i to, ze jeho cteni trvalo
>> "nejak podezrele dlouho". V takovem pripad predpokladam, ze blok
>> obsahuje sektor s "mekkou vadou", ktery sel precist jen zasluhou L2
>> samoopravnych mechanismu (ktere ale trvaji dele) - a pro jistotu ho
>> prepisu taky (dokud z nej jeste mam kompletni a spravna data). Nic
>> horsiho, nez to, ze jsem ho prepsal zbytecne se nestane.
>
> Zeptam se dost netaktne - nedala by se ta utilita nejak nekde najit /
> ziskat / upiratit ;-) ?
No, jestli ti pomuzou zdrojaky, tak s tim ja jsem nikdy velky cavyky
nedelal. Nemam to v podobe "uzivatelsky blbuvzdorneho" binaru. Napriklad
ta logika "neprimerene dlouho" je proste natvrdo nastavena v kodu pro
aktualni disk na ktery to spoustim (a kdyz ji chci zmenit, tak to proste
znova prelozim).
Dokonce ani ty zdrojaky nebyly vytvarene s umyslem je publikovat, takze
to neni uplen cisty programovani.
A samozrejme, zadna garance, ze ti to nekdy nejaky data neznici.
Treba se bude hodit i Mirkovi - ze si ji nedokaze napsat neznamena, ze
nedokaze prelozit ci pripadne drobne poupravit dodany zdrojaky.
> Je mozne ji pustit za chodu systemu nebo musi pri jejim behu byt system
> mimo provoz?
Teoreticky by samozrejme slo rozdelit "detekcni" a "opravnou" fazi. Ale
cteni na pouzivanem disku by znacne komplikovalo onu zminenou logiku
"vadny je i kdyz cteni trva dlouho". Kazdopadne, napsany to tak neni,
pocita se, ze disk se nepouziva.
Kazdopadne, zdrojaky lezi tady:
> http://www.freebsd.cz/~dan/disktest.c
Kazdy si to pouziva na vlastni nebezpeci. Option '-f' zpusobi, ze to
proste prepise vsechny sektory, bez pokusu o nejakou detekci. Option
'-i' rika offset odkud se ma test delat, pokud nema bezet defaultne od
nuly (napriklad proto, ze byl nedokonceny predchozi beh prerusen).
Hranice "cteni trva prilis dlouho" je momentalne hard-coded na 0.5sec
> ...a dozvim se pri pouziti tehle utility ktery soubor / adresarova
> struktura byla zasazena?
O nic takoveho se nepokousim. Vypise jake sektory prepsal, takze o
analyzu tohoto druhu se pak muzes pokusit sam.
> Mimochodem - porad nejak proste nechapu, ze muze byt takovy problem
> zjistit, ktery sektor patri kteremu souboru.
Uvedom si, ze kdyz chces ziskat obsah souboru, tak ten dotaz prochazi
pres pomerne mnoho nezavislych vrstev - zacina to filesystemem (a mame
ruzne), pres ruzne vrstvy jako je sprava partition a slice, nez se
dostaneme k fyzickemu disku tak tam muze byt po ceste i nejake to
sifrovani nebo RAID.
Pres vsechny tyhle vrstvy dotaz projde a zpatky se dostane obsah.
Naspodu vubec nemusi byt vzdycky neco, co vubec ma sektory. Nazpet
kazdopadne jdou jen data, nikoli identifikace toho, odkud presne
pochazeji. Vzhledem k tomu, ze data mohou obecne pochazet z cehokoliv
nebyla by ani takova identifikace jednoduse mozna. Dokonce ani
bezprostredne nasledujici vrstva uz nemusi byt schopna obecne rozumet
identifikaci vrstvy predchazejici, natozpak kdyz to prejde pres spoustu
vrstev ...
I procfs je filesystem ...
A to odpovida nejen na to, proc je prakticky nemozne napsat nejake
"obecne" reverzni resolveni schopne odpovedet na otazku "ke kterymu
souboru patri tenhle sektor", ale dokonce i na to, proc nenapises ani
"dopredne" resolveni, kdy bys proste vytvoril kompletni mapu sekvencnim
prochazenim adresaru a souboru v nich ...
Dan
More information about the Users-l
mailing list