Zdecydowana większość dostawców usług IT na całym świecie oferuje swoim klientom usługi odzyskiwania danych. W większości przypadków próby odzyskania danych są podejmowane wyłącznie za pomocą narzędzi programcowych przez osoby bez formalnego szkolenia w zakresie odzyskiwania danych. Te nieprofesjonalne próby każdego ą roku są przyczyną niezliczonych przypadków awarii dysków twardych oraz trwałej utraty danych. Ten dwuczęściowy wpis na blogu wyjaśni niektóre z głównych przyczyn tych niepożądanych skutków.
Odzyskiwanie danych za pomocą oprogramowania nieuchronnie spowoduje pewien poziom nieodwracalnych szkód podczas próby użycia niestabilnego dysku. W tym przypadku dysk niestabilny to dowolny dysk, który ma problemy z niezawodnym przetwarzaniem poleceń odczytu z powodów przedstawionych poniżej
- degradacji głowic odczytu/zapisu
- uszkodzenia/zabrudzenia talerzy
- niestabilnością elektroniki
- niedopracowanego oprogramowania układowego itd.
Tego typu niestabilności zwykle pojawiają się początkowo jako kilka sporadycznych złych sektorów. Po pojawieniu się pierwszych objawów dysk będzie stopniowo pogarszał swoja kondycje im częściej będzie używany, do momentu aż nastąpi ostateczna awaria. Ta awaria sprawi, że dysk pozostaje wtedy w stanie całkowicie uniemożliwiającym odzyskania danych lub w stanie gdzie dramatycznie skomplikuje on późniejszy proces przywracania dostępu, sprawiając, że ostateczne odzyskanie danych przez klienta jest znacznie trudniejsze i bardziej kosztowne.
Sedno problemu polega na tym, że wszystkie narzędzia programowe mogą wysyłać standardowe polecenia odczytu do napędu i mieć nadzieję, że odpowie na nie we właściwym czasie. Jeśli napęd nie odpowiada, oprogramowanie nie ma mechanizmu, który mógłby cokolwiek z tym zrobić. Aby zrozumieć, dlaczego jest to problem, musimy najpierw zrozumieć, jak dyski twarde przetwarzają standardowe polecenia odczytu.
Za każdym razem, gdy napęd odbiera polecenie odczytu, występuje kilka operacji wewnętrznych. Najpierw żądany blok sektora jest odczytywany z talerzy przez głowice odczytu/zapisu i ładowany do pamięci podręcznej dysku.
W pamięci podręcznej suma kontrolna danych użytkownika każdego sektora fizycznego jest obliczana przez procesor dysku. Ta suma kontrolna jest następnie porównywana z sumą kontrolną w kodzie korekcji błędów, który został pierwotnie zapisany razem z sektorem.
Jeśli sumy kontrolne są zgodne, napęd stwierdza, że dane odczytane z talerzy są takie same, jak dane, które zostały pierwotnie zapisane, i wysyła je przez kanał ATA.
W przypadku niezgodności dysk najpierw podejmie próbę naprawienia uszkodzenia, korzystając z kodu korekcji błędów problematycznego sektora. Jeśli to się nie powiedzie, dysk będzie automatycznie próbował ponownie odczytać sektor(y) z problemem, próbując uzyskać dobry odczyt.
Uszkodzony sektor oznacza, że dysk nie był w stanie uzyskać odczytu integralnego i zrezygnował z prób, wysyłając błąd (bez danych) przez kanał ATA.
W tym momencie dysk użyje również swoich głowic odczytu/zapisu do zapisu w swoim obszarze usług (który znajduje się na talerzach), aby zaktualizować stan różnych dzienników, takich jak liczba ponownie przydzielonych sektorów w atrybutach SMART.
W celu odzyskania danych proces ten marnuje czas i powoduje dodatkową niepotrzebną degradację głowic odczytu/zapisu.
Jest to również potencjalny punkt poważnego uszkodzenia obszaru usług, ponieważ zdegradowane głowice odczytu/zapisu niekoniecznie będą w stanie dokonać dokładnych zapisów w dzienniku, do których dąży napęd.
Procedury prowadzenia dokumentacji, takie jak te, można całkowicie wyłączyć za pomocą odpowiedniego sprzętu, ale narzędzia programowe nie mają takich możliwości.
Kluczową kwestią do zrozumienia jest to, że dyski twarde nie rezygnują łatwo z sektorów! Nawet w całkowicie sprawnych urządzeniach sporadyczna wewnętrzna awaria odczytu jest względnie normalnym zjawiskiem, gdy występuje przy pierwszej lub drugiej próbie odczytu.
Oprogramowanie układowe dysku zostało zaprojektowane z myślą o tym. Automatyczne próby wewnętrzne zapewniają, że dysk będzie działał zgodnie z oczekiwaniami, niezależnie od sporadycznych niestabilności odczytu wewnętrznego.
Fakt, że te błędy są przede wszystkim powszechne, jest objawem ogromnej presji rynkowej na zwiększenie pojemności pamięci masowej, którą nieustannie doświadczają producenci napędów. Im większa gęstość danych, tym trudniej jest głowicom odczytująco-zapisującym niezawodnie wykonywać swoją pracę.
Jeśli sektor wróci jako BAD, oznacza to, że dysk już próbował go odczytać wewnętrznie setki razy w ciągu kilku sekund bez powodzenia. Te liczne nieudane próby powodują dalszą degradację popędu.
Należy zauważyć, że wszystkie te wewnętrzne ponowienia mają miejsce po pojedynczym poleceniu odczytu ATA. Innymi słowy, zachodzą one niezależnie od jakiejkolwiek opcji „bez ponownych prób”, co oznacza jedynie, że oprogramowanie nie wyśle więcej niż jednej komendy odczytu dla każdego bloku sektora.
Ponieważ większość uszkodzonych sektorów występuje z powodu zdegradowanych głowic odczytu/zapisu i/lub problemów z powierzchnią talerza (talerzy), te wielokrotne próby odczytu wewnętrznego dodatkowo uszkadzają dysk, szybko zaostrzając początkowy problem.
Na przykład mała plamka brudu na talerzu może przerodzić się w rysę, a następnie zniszczyć głowice odczytu/zapisu, jeśli jest używana wystarczająco dużo razy.
Oprogramowanie układowe dysku jest tym, co ostatecznie decyduje, kiedy zrezygnować z nieczytelnych sektorów. W niektórych przypadkach niestabilności oprogramowanie układowe dysku może nie wykonać tego poprawnie, powodując trwałe zablokowanie dysku w stanie ponownego odczytu uszkodzonego sektora w celu uzyskania odczytu integralnego.
Jest to najgorszy możliwy stan podczas przywracania danych za pomocą oprogramowania, ponieważ dysk będzie się niszczył bardzo szybko, a oprogramowanie nie będzie miało możliwości naprawienia problemu lub nawet wiedzy, że to się dzieje.
Prawidłowo zaprojektowany sprzęt do odzyskiwania danych z dysków zapewnia pełną kontrolę nad tym, jak długo dysk może wykonywać wewnętrzne próby. Już samo to ogranicza niepożądane przetwarzanie (a tym samym degradację napędu) do niewielkiej części, ponieważ możemy zmusić napęd do rezygnacji z prób po kilkuset milisekundach zamiast po kilku sekundach.
Sprzęt ma również bezpośrednią kontrolę nad zasilaniem przekazywanym do napędu, co w ostateczności może być automatycznie włączane i wyłączane w przypadku awarii wszystkich innych metod zabezpieczania napędu.