Miroslav Lachman napsal/wrote, On 09/24/09 15:43:
Dokazal bys mi k tomu rict, jakym konkretnim postupem zjistim, na jake partition tato oblast lezi a jaky se v ni nachazi soubor / soubory. Pripadne jak tenhle sektor zkusit znovu precist / prepsat?

Ono je to u tebe jeste o dost slozitejsi nez u me. Ja mel FS skutecne na tom disku. To ty ale nemas - ty mas FS na virtualnim disku gm0. Oproti me tedy, nez prepocitas znamou polohu ve slice na oznaceni konkretniho souboru, musis jeste prevest udaj o fyzicke lokaci na udaj o lokaci v ramci toho virtualniho disku.

Pokud je ten mirror gm0 slozen primo z disku ad4 a ad6, tak by mel pokryt celou oblast disku krome posledniho sectoru, ale zacatek bude mit stejny, nebo se pletu? Nejak tam nevidim zadny duvod k tomu, aby mirror a nad nim udelane slices a partitions byly o neco posunute, nez kdyby tam byl samotny ad4

Jak sam rikas - melo. Nezkoumal jsem presnou vnitrni implementaci gmirror, takze nevim. Over si svoje tvrzeni - precti par sektoru z gm0 a par z ad4 a pokud bude obsah stejny (zkus se netrefit do prazdneho mista a vynulovanych sektoru).

Kdyz overis, ze prepocet je fakticky identita potvrdia tim i moje tvrzeni, ze ten prepocet bude jednoduchy.


Otazka ale je, nakolik to bezpodminecne nutne potrebujes vedet.

Zivotne dulezite to neni, vzdy je tu moznost - disk vyhodit a cely system nainstalovat a nakonfigurovat znovu na jiny disk... ale pokud bych dokazal rozumnym postupem zjistit, ktereho souboru se to tyka, usetrilo by mi to hodne prace.

Ja mluvil o riziku, ze prepises soubory, ktere je snadne prepsat (instalace OS a portu), zbytek ponechas a uneses zbytkove riziko, ze poskozeny je nektery z neprepsanych souboru.

Krome systemu a portu tam je uz pomerne velka MySQL databaze (InnoDB cca 8GB data file + binlogy pro replikaci). V tomto konkretnim pripade bych tedy spis potreboval najit jistotu, ze tahle databaze neni poskozena

Databazi 's tam odnekud nakopiroval nebo je prazdna. V obou pripadech by nemel byt problem ji smazat a obnovit. Pokdu mas tabulky vytvorene s checksumem tak by poskozeni mel zdetekovat uz databazovy engine. A nakonec - staci provest kompletni dump (treba na /dev/null) - pokud se povede tak databaze poskozena neni.

obecne by se mi asi hodilo, znat postup, *jak zjistit soubor podle pozice 
vadneho bloku*.

Taky by se mi obcas hodilo. Bohuzel, neznam.

Mam v planu zkusit vynutit realokaci prepisem toho sektoru, ale to az v pripade, ze zjistim, co na tom sektoru lezi, nebo ze tam nic nelezi.

Nejprve dohledej ktery z tech 256 sektoru ve ctenem bloku to byl. Pak muzes zkusit nahlednout jeho obsah. Asi ne primo, protoze pokud sektor cist nelze, obvykle ti to nevrati ani castecny obsah, ale same nuly.

Takze spis budes muset zkouknout ty sektory okolo a verit, ze patri do jednoho alokacniho bloku. I tak ale nahlednutim do obsahu nezjistis spolehlive co (a zda neco) sektor pouziva.

V kazdem pripade budes muset nejprve prevest pozici na fyzickem disku na pozici v ramci slice (trivialni matematika - zjistis, kde partition na fyzickem disku zacina a odectes) nasledne budes muset zaridit podobny prepocet (podobnym algoritmem) pri prechodu z slice do partition. A zde koncime - pozici v ramci FS na soubor proste prevest neumim. ZKus zmermomocnit ten port o kterem byla rec - treba z nej neco dostanes. Me se ho nejak zdolat nepovedlo.

Docela by me zajimalo, jak to s temi realokovanymi sektory je u jednotlivych vyrobcu / modelu HDD. Na nekolika systemech se mi cca po roce provozu objevil treba jeden "pending sector", prepsanim celeho disku zmizel, ale ve SMARTu se nenavysil counter realokovanych sektoru. Na jednom systemu se dokonce tenhle pending sector porad objevuje, po kazdem prepisu disku na cas zmizi a pak se zase objevi, ale Reallocated_Sector_Ct i Reallocated_Event_Count maji porad nulovou hodnotu. Tak jestli se to nahodou vyrobci nesnazi jeste nejak nepekne maskovat.

Vyrobci maji v tomto ohledu zcela volne ruce. Zaprve co se tyce algoritmu urcujicim "sektor ma byt relokovan". Mohou napriklad do sektoru zapsat (i kdyz nejde precist) a pokud se zapis s verifikaci povede vyhodnoti sektor jako dobry. Jini prehodnoti nazor napriklad tehdy, kdyz se pri opakovanem cteni sektor podari precist.

Zadruhe - vyznam RAW i COOKED hodnot v ramci SMART neni standardizovan. Urceno je v zasade jedine - dokud je COOKED hodnota vetsi nez TRESHOLD tak je vse OK, pokud je mensi znaci to problem. Fakticky vzato tak "relocated sector count" muze ukazovat porad stejnou vysokou hodnotu a vesele relokovat a kdyz mu sektory k relokaci dojdou, muze skokem prepnout na ukazovani nizke hodnoty. Nebude to poruseni specifikace.

A v neposledni rade - pokud vim, tak v poslednich specifikacich uz neni snandardizovano ani to, co ten-ktery atribut globalne znamena. Takze - i kdyz zjistis, ze attribut 5 je pod urovni threshold vis s jistotou akorat tolik, ze NECO je spatne. Neni ale standardni zpusob jak zjistit co.

Proste - bez vendor-specific interpretace hodnot toho SMART prozradi opravdu dost malo. Takze je treba davat pozor - neni zaruceno ani to, ze vsechny disky jednoho vyrobce k veci pristupuji stejne (nejiste zejmena po akvizicich) a v neposledni rade se vyznam muze menit dokonce i pri vymene firmware. Nejmene teoreticky.

                                        Dan

--
FreeBSD mailing list ([email protected])
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem