Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj

Estis 2019. Nia laboratorio ricevis QUANTUM FIREBALL Plus KA-disko kun kapacito de 9.1GB, kio ne estas tute ofta por nia tempo. Laŭ la posedanto de la disko, la fiasko okazis en 2004 pro malsukcesa elektroprovizo, kiu kunportis la malmolan diskon kaj aliajn komputilajn komponantojn. Poste estis vizitoj al diversaj servoj kun provoj ripari la diskon kaj restarigi datumojn, kiuj estis malsukcesaj. En iuj kazoj ili promesis, ke ĝi estos malmultekosta, sed ili neniam solvis la problemon, en aliaj ĝi estis tro multekosta kaj la kliento ne volis restarigi la datumojn, sed finfine la disko trapasis multajn servocentrojn. Ĝi estis perdita plurfoje, sed dank’ al tio, ke la posedanto antaŭe zorgis pri registri informojn de diversaj glumarkoj sur la disko, li sukcesis certigi, ke lia malmola disko estis resendita de iuj servocentroj. La promenadoj ne pasis sen spuro, multoblaj spuroj de lutado restis sur la originala regilo-tabulo, kaj la manko de SMD-elementoj ankaŭ videblis (rigardante antaŭen, mi diros, ke ĉi tio estas la plej malgranda el la problemoj de ĉi tiu stirado).

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 1 HDD Quantum Fireball Plus KA 9,1GB

La unua afero, kiun ni devis fari, estis serĉi en la arkivo de donacanto tian antikvan ĝemelan fraton de ĉi tiu disko kun funkcianta regila tabulo. Kiam ĉi tiu serĉo estis finita, fariĝis eble efektivigi ampleksajn diagnozajn rimedojn. Post kontrolado de la motoraj bobenoj por mallonga cirkvito kaj certiginte, ke ne estas kurta cirkvito, ni instalas la tabulon de la donacanto al la pacienca stirado. Ni aplikas potencon kaj aŭdas la normalan sonon de la ŝafto turniĝanta supren, pasante kalibran teston kun ŝarĝo de la firmware, kaj post kelkaj sekundoj la stirado raportas per registroj, ke ĝi estas preta respondi al komandoj de la interfaco.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 2 DRD DSC-indikiloj indikas pretecon ricevi komandojn.

Ni rezervas ĉiujn kopiojn de firmware-moduloj. Ni kontrolas la integrecon de la firmware-moduloj. Ne estas problemoj pri legado de moduloj, sed analizo de la raportoj montras, ke estas iuj strangaĵoj.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 3. Zono-tabelo.

Ni atentas la zonan distribuan tabelon kaj rimarkas, ke la nombro da cilindroj estas 13845.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 4 P-listo (primara listo - listo de difektoj enkondukitaj dum la produktadociklo).

Ni atentigas pri la tro malgranda nombro da difektoj kaj ilia loko. Ni rigardas la fabrikan difekton kaŝantan protokolan modulon (60h) kaj trovas, ke ĝi estas malplena kaj ne enhavas ununuran eniron. Surbaze de ĉi tio, ni povas supozi, ke en unu el la antaŭaj servocentroj, iuj manipuladoj eble estis faritaj kun la serva areo de la disko, kaj hazarde aŭ intence estis skribita fremda modulo aŭ la listo de difektoj en la originalo. unu estis liberigita. Por testi ĉi tiun supozon, ni kreas taskon en Data Extractor kun la opcioj "krei sektoro-post-sektoro-kopion" kaj "krei virtualan tradukilon" ebligitaj.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 5 Taskaj parametroj.

Kreinte la taskon, ni rigardas la enskribojn en la diskpartiga tabelo en sektoro nulo (LBA 0)

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 6 Majstra lanĉa rekordo kaj diskpartiga tablo.

Ĉe ofseto 0x1BE estas ununura eniro (16 bajtoj). La dosiersistemo tipo sur la subdisko estas NTFS, ofseto al la komenco de 0x3F (63) sektoroj, diskgrandeco 0x011309A3 (18) sektoroj.
En la sektoro redaktilo, malfermu LBA 63.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 7 NTFS-ŝargsektoro

Laŭ la informoj en la lanĉa sektoro de la NTFS-diskodo, ni povas diri la jenon: la sektorgrandeco akceptita en la volumo estas 512 bajtoj (vorto 0x0 (0) estas skribita ĉe ofseto 0200x512B), la nombro da sektoroj en la areto estas 8 (bajto 0x0 estas skribita ĉe ofseto 0x08D), la aretgrandeco estas 512x8=4096 bajtoj, la unua MFT-rekordo situas ĉe ofseto de 6 sektoroj de la komenco de la disko (ĉe ofseto de 291x519 kvarobla vorto 0x30 0 00 00 00 00C 00 0 (00) nombro de la unua MFT-areto.La sektora nombro estas kalkulita per la formulo: Areto nombro * nombro da sektoroj en la areto + ofseto al la komenco de la sekcio 00* 786+432= 786).
Ni transiru al sektoro 6.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Fig. Xnumx

Sed la datumoj enhavitaj en ĉi tiu sektoro estas tute malsama de la MFT-rekordo. Kvankam tio indikas eblan malĝustan tradukon pro malĝusta difekta listo, ĝi ne pruvas ĉi tiun fakton. Por plu kontroli, ni legos la diskon per 10 sektoroj en ambaŭ direktoj relative al 000 sektoroj. Kaj poste ni serĉos regulajn esprimojn en tio, kion ni legas.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 9 Unua MFT-registrado

En sektoro 6 ni trovas la unuan MFT-rekordon. Ĝia pozicio diferencas de la kalkulita per 291 sektoroj, kaj tiam grupo de 551 registroj (de 32 ĝis 16) senĉese sekvas. Ni enigu la pozicion de sektoro 0 en la ŝanĝtabelon kaj antaŭeniru per 15 sektoroj.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Fig. Xnumx

La pozicio de rekordo n-ro 16 devus esti ĉe ofseto 12, sed ni trovas nulojn tie anstataŭ la MFT-rekordo. Ni faru similan serĉon en la ĉirkaŭaĵo.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 11 MFT-eniro 0x00000011 (17)

Granda fragmento de MFT estas detektita, komencante kun rekorda numero 17 kun longo de 53 rekordoj) kun ŝanĝo de 646 sektoroj. Por pozicio 17, metu movon de +12 sektoroj en la movtabelo.
Determininte la pozicion de MFT-fragmentoj en spaco, ni povas konkludi, ke tio ne aspektas kiel hazarda fiasko kaj registrado de MFT-fragmentoj ĉe malĝustaj ofsetoj. Versio kun malĝusta tradukilo povas esti konsiderata konfirmita.
Por pli lokalizi la movopunktojn, ni starigos la maksimuman eblan movon. Por fari tion, ni determinas kiom la finmarko de la NTFS-disko (kopio de la ekŝarga sektoro) estas ŝovita. En Figuro 7, ĉe ofseto 0x28, la kvarobla vorto estas la disdivida grandvaloro de 0x00 00 00 00 01 13 09 A2 (18) sektoroj. Ni aldonu la ofseton de la subdisko mem de la komenco de la disko ĝis ĝia longo, kaj ni ricevas la ofseton de la fino NTFS-marko 024 866 18 + 024 = 866 63 18. Kiel atendite, la bezonata kopio de la lanĉa sektoro ne estis tie. Dum serĉado de la ĉirkaŭa regiono, ĝi estis trovita kun kreskanta ŝanĝo de +024 sektoroj relative al la lasta MFT-fragmento.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 12 Kopio de NTFS-ŝargsektoro

Ni ignoras la alian kopion de la lanĉa sektoro ĉe ofseto 18, ĉar ĝi ne rilatas al nia sekcio. Surbaze de antaŭaj agadoj, oni konstatis, ke ene de la sekcio estas inkludoj de 041 sektoroj, kiuj "eksperigis" en la elsendo, kiuj vastigis la datumojn.
Ni plenumas plenan legadon de la disko, kiu lasas 34 nelegitajn sektorojn. Bedaŭrinde, estas neeble fidinde garantii, ke ĉiuj ili estas difektoj forigitaj de la P-listo, sed en plua analizo estas konsilinde konsideri ilian pozicion, ĉar en iuj kazoj eblos fidinde determini la movopunktojn per precizeco de la sektoro, kaj ne la dosiero.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 13 Diskaj legado de statistikoj.

Nia sekva tasko estos establi la proksimumajn lokojn de la ŝanĝoj (al la precizeco de la dosiero en kiu ili okazis). Por fari tion, ni skanos ĉiujn MFT-rekordojn kaj konstruos ĉenojn de dosierlokoj (dosierfragmentoj).

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 14 Ĉenoj de loko de dosieroj aŭ iliaj fragmentoj.

Poste, moviĝante de dosiero al dosiero, ni serĉas la momenton, en kiu estos aliaj datumoj anstataŭ la atendata dosierkapo, kaj la dezirata kaplinio estos trovita kun certa pozitiva movo. Kaj dum ni rafinas la movopunktojn, ni plenigas la tabelon. La rezulto de plenigo de ĝi estos pli ol 99% de dosieroj sen damaĝo.

Promenante tra agonio aŭ la longa historio de unu provo de reakiro de datumoj
Rizo. 15 Listo de uzantdosieroj (konsento estis ricevita de la kliento por publikigi ĉi tiun ekrankopion)

Por establi punktoŝanĝojn en individuaj dosieroj, vi povas fari plian laboron kaj, se vi konas la strukturon de la dosiero, trovi inkludojn de datumoj ne rilataj al ĝi. Sed en ĉi tiu tasko ĝi ne estis ekonomie farebla.

PS Mi ŝatus ankaŭ alparoli miajn kolegojn, en kies manoj ĉi tiu disko antaŭe estis. Bonvolu esti singarda kiam vi laboras kun aparata firmvaro kaj sekurkopiu servajn datumojn antaŭ ol ŝanĝi ion ajn, kaj ne intence pligravigu la problemon se vi ne povis konsenti kun la kliento pri la laboro.

Antaŭa publikigo: Konservado de matĉoj aŭ reakiro de datumoj de muelanta HDD Seagate ST3000NC002-1DY166

fonto: www.habr.com

Aldoni komenton