Rozpadly mirror s vadnym diskem

Dan Lukes dan at obluda.cz
Tue Sep 11 13:50:56 CEST 2012


Miroslav Prýmek napsal/wrote, On 09/11/12 13:33:
> S timhle mam problem. Nahraval bych tam totiz obsah, ktery je "pozadu"
> za tim, ktery je necitelny

Spatna data nemuzou bejt horsi nez zadna.

> bych mel potom uz problem zjistit, ktere soubory byly postizeny (z
> necitelne oblasti se stane oblast citelna, ale s potencialne spatnymi
> daty).

V tomhle pripade mozna - pokud chces zasazeny soubor hledat tak, ze je 
vsechny prectes a budes cekat cteni ktereho selze, pak ano, mas pravdu, 
to je lepsi nechat sektoru necitelne.

To je ale casove narocny takze s touto moznosti jsem nepocital, 
popisoval jsem ti jak zkratit vypadek na minimum.

Takze ja bych sektory co nejrychlejc uvedl do citelneho stavu - byt' s 
nespravnymi daty. Samozrejme, ze cisla "opravenych" sektoru bych si 
poznamenal ...

>>  At uz udelas A nebo B mel bys mit system v normalne pouzitelnem stavu, s
>>  vyjimkou nejvyse dvou souboru (videl jsem dve cteci chyby, pokud se najdou
>>  dalsi bude to cislo jine) s poskozenym obsahem
>
> Da se na to opravdu ("relativne") spolehnout, ze to jsou jenom dva soubory?
> (popr. metadata o dvou adresarich) Ta delka 131072 me trochu mate...

To byl pozadavek na cteni 256 po sobe jdoucich sektoru. Cislo sektoru je 
LBA prvniho z nich. Kdyby byly vadny fakt vsechny, mohla by jedna hlaska 
znamenat i vic nez jeden vadny sektor - pokud mas velikost fragmentu na 
FS 2kB mohlo by to, teoreticky, byt az 64 poskozenych souboru an kazdou 
takovouhle hlasku.

Jenze, to ze je poskozeno vsech 256 sektoru je tak nepravdepodobne, ze s 
tim ani nepocitam.Takze bych pomoci dd a puleni intervalu nasel ktere z 
tech 256 sektoru je vadnej opravdu. Prestoze by jich mohlo byt vic nez 
jeden, nejpravdepodobnejsi je prave jeden. A jeden sektor dvema souborum 
urcite nepatri. Takze ty dve chyby s vysokou pravdepodobnosti znamenaji 
skutecne jen dva poskozene soubory.

>>  Reknu ti co jsem v podobny situaci udelal (vadny sektor na disku, nikoliv
>>  vsak mirror). Ja jsem preinstaloval kompletne system vcetne portu - coz nic
>>  moc nestoji a lze to udelat prakticky za plneho provozu takze jsem mel
>>  jistotu, ze system a programy mam v poradku. Zustala sance, ze je poskozeny
>>  nejaky uzivatelsky soubor - a od toho jsou zalohy, ktere jest treba
>>  vytahnouti az se nejaky poskozeny soubor (zustal-li tam nejaky) najde.

> Pro systemove soubory, co tam jsou/byly, mam SHA256 soucty, takze z
> toho nervozni nejsem.

No, pro en je reinstalace systemu natolik rutinni zalezitost, ze bych z 
kontrolu checksumu proste vynechal a rovnou to prepsal. Stav to nezhorsi.

>>  Jo - neskodi se na vadny sektor a nejblizsi okoli kouknout. Pri trose stesti
>>  se z obsahu muze podarit odhalit o jaky soubor je - ani to nemusi bejt nutne
>>  soubor textovej.
>>
>
> Jakej je nejlepsi zposubo to udelat? Ty cisla co byly v logu muze
> normalne pouzit pro dd
> (dd if=/dev/ad6 skip=250051297280) nebo to musim zas nejak prepocitat?

Udaj o chybe (oznaceny LBA) je poradove cislo sektoru na celem fyzickem 
disku - tedy tom, co system vidi jako ad6

Pozor ale, ze udaej 'skip' a 'count' se udavaji v blocich. Takze zalezi 
na parametru bs - pokud je bs=512 pak muzes cislo pouzit rovnou (blok se 
rovna sektoru).

To bys ale musel ten prikaz zavolat 256x na kazdy sektor zvlast (a u 
druhe chyby zas).

Takze rychlejsi je puleni intervalu, kdy z toho 128kB necitelneho bloku 
prectes prvni a druhou pulku, podle vysledku pak dale pulis a tak dal az 
an uroven sektoru. To ale znamena, ze ve chvili, kdy na zacatku ctes 
blok velikost 64kB (bs=64k) musis hodnotu skip vydelit 128 (protoze 64k 
blok je 128x vetsi nez sektor). Pro jine velikosti bloku pak analogicky.

Dan









More information about the Users-l mailing list