Skąd wiemy o tym, że sektor jest uszkodzony?
W komunikacji z dyskiem twardym wykorzystujemy kilka rejestry. Jeden z nich, to rejestr stanu. Informuje on o aktualnym stanie dysku i w normalnych warunkach powinniśmy obserwować statusy zajętości (BSY), gotowości (DRSC odpowiadający za gotowość do przyjęcia polecenia i DRDY oznaczający gotowość do wymiany danych) oraz odnalezienia żądanego sektora (DREQ).
W tym, artykule jeszcze bardziej zainteresuje nas rejestr błędów. To właśnie dzięki niemu możemy się dowiedzieć więcej o rodzaju uszkodzonego sektora i przyczynie problemu. Zarejestrowanie jakiegokolwiek błędu przez rejestr błędów powoduje wystawienie bitu ERR w rejestrze stanu.
Programy diagnostyczne w różny sposób informują nas o uszkodzonych sektorach. Prostsze z nich monitorują jedynie rejestr stanu i jedyne, co potrafią nam powiedzieć, to, że wystąpił jakiś problem z odczytaniem sektora. Lepsze odczytują także zawartość rejestru błędów, dzięki czemu mogą nam zwrócić pełną informację o typie problemu. Dlatego jeśli chcesz na poważnie zająć się diagnostyką dysków (zob. Security Magazine 2(11)/2023), zwróć uwagę na to, by używać programu oferującego bardziej szczegółową informację o uszkodzonych sektorach.
UNC – błąd sumy kontrolnej
Błędy typu UNC należą do najpopularniejszych uszkodzonych sektorów. Wystąpienie tego typu uszkodzenia sektora oznacza, że jest on wprawdzie jest odnajdywany i dysk próbuje go odczytać, jednak ostatecznie nie udaje mu się uzyskać rezultatu możliwego do skorygowania kodami korekcji błędów. Często w pobliżu sektorów zwracających ten błąd znajdziemy mniej lub bardziej liczne sektory o wolnych czasach odczytu, co świadczy o degradacji powierzchni w tym obszarze.
Przyczyny wystąpienia takich sektorów mogą być różne. Mogą to być fizyczne defekty powierzchni, zarówno fabryczne, jak np. błędy struktury krystalicznej, jak i wtórne – powstałe np. w wyniku kontaktu głowicy z powierzchnią talerza.
Często jednak są to błędy namagnesowania wynikające z wahań napięć zasilających, używania niskiej klasy, niestabilnych zasilaczy, nadmiernej temperatury pracy dysku, efektu superparamagnetyzmu (typowo dla dysków z zapisem równoległym) lub wystąpienia niekorzystnych czynników zewnętrznych. I w przypadku błędów namagnesowania często istnieje możliwość ich naprawienia przez ponowne namagnesowanie (nadpisanie) takiego sektora.
Nie w każdym przypadku taki błąd oznacza uszkodzenie samego sektora. W przypadku dysków Seagate przy wyliczaniu kontrolek sektorów uwzględnia się ich aktualny adres LBA. Dlatego w przypadku uszkodzenia podsystemu translacji adresacji LBA na fizyczną (zob. Security Magazine 9(18)/2023) może łatwo dojść do sytuacji, kiedy translator próbuje przypisać fizycznemu sektorowi niewłaściwy adres LBA. W takiej sytuacji niezgodność numeru LBA będzie skutkowała niezgodnością sumy kontrolnej.
Jest to problem szczególnie popularny w dyskach SMR (zob. Security Magazine 6(15)/2023). Ale problem ten może też być ubocznym skutkiem nieudanej naprawy z wykorzystaniem procedury naprawy dysków z tzw. czarnej serii Barracuda 7200.11 (błąd LED:000000CC – tzw. „mucha CC”). Niektórzy niestety traktują tę procedurę jako panaceum na wszystkie problemy Seagatów pomijając diagnostykę usterki i zapominając o tym, że architektura oprogramowania układowego cały czas ewoluuje. Dlatego procedura, jaką kilkanaście lat temu opublikował kol. Okzo, łatwo może spowodować wtórne usterki podsystemu translacji, nieraz daleko groźniejsze od pierwotnego problemu.
Aby uniknąć takich sytuacji trzeba pamiętać, że jakakolwiek ingerencja w oprogramowanie układowe dysku, czy inne działania naprawcze powinny znajdować uzasadnienie we wcześniejszej diagnostyce i powinny być podejmowane ze zrozumieniem ich konsekwencji. W szczególności próba naprawy dysku w takiej sytuacji przez nadpisanie „uszkodzonych” sektorów łatwo zakończy się bezpowrotną utratą danych. Należy przy tym też przestrzegać zasady zabezpieczania stanu wyjściowego, w tym przypadku przez uprzednie zgranie zawartości strefy serwisowej, a w szczególności plików systemowych 28, 346 i 348.
ABRT – odmowa wykonania polecenia
Błąd typu ABRT nie oznacza uszkodzenia sektora jako takiego, a odmowę wykonania polecenia. Dysk po prostu pokazuje nam gest Kozakiewicza*. Najczęstszą przyczyną takiego zachowania dysku jest hasło ATA. W takiej sytuacji dysk nie pozwala ani na odczyt ani na zapis do żadnego z sektorów, dopóki dysk nie zostanie odblokowany przez podanie właściwego hasła.
Błędy ABRT mogą też występować w przypadku Seagatów ze zdegradowaną powierzchnią. Zdarzają się sytuacje, kiedy taki dysk od pewnego momentu zaczyna zwracać ten błąd przy próbie wykonania dowolnego polecenia. Po wyłączeniu dysku i ponownym włączeniu zachowanie dysku wraca do normy, w tym można swobodnie odczytywać sektory, do jakich dysk wcześniej odmawiał nam dostępu, przynajmniej do momentu, kiedy znów trafimy w zdegradowany obszar i sytuacja się powtórzy.
Błąd ABRT może też występować w przypadku niepełnej inicjalizacji dysków WD. Dysk w takich sytuacjach jest rozpoznawany poprawnie, hasło ATA nie jest założone, ale i tak dysk przy próbie odczytania któregokolwiek sektora, odmawia wykonania polecenia. Problemy tego typu mogą być spowodowane wystąpieniem uszkodzonych sektorów lub błędnych zapisów w strefie serwisowej albo uszkodzeniem którejś z głowic. Taka sytuacja może też się zdarzyć w konsekwencji problemów z kalibracją i odczytem sygnału serwo po naprawach uszkodzeń mechanicznych.
IDNF – nieprawidłowy identyfikator sektora
Błędne identyfikatory sektora są już znacznie rzadszym rodzajem uszkodzeń. Nagłówki sektorów chronione są przed przypadkowym nadpisaniem polami ochronnymi wymuszającymi wyłączenie głowicy zapisującej, co minimalizuje ryzyko przypadkowego nadpisania ich zawartości. Jednak sporadycznie zdarzają się sytuacje degradacji namagnesowania i wystąpienia błędów w tych obszarach.
W przypadku dysków z zapisem równoległym za tego typu błędy często odpowiadał efekt superparamagnetyzmu powodujący odwrócenie polaryzacji namagnesowania domeny magnetycznej pod wpływem temperatury i pól magnetycznych indukowanych przez sąsiednie domeny.
Wskazane wyżej sytuacje mogą tłumaczyć jedynie wystąpienie pojedynczych błędów tego typu. Jednak czasem można spotkać dyski, w jakich błąd ten jest zwracany przy próbie dostępu do bardzo dużej liczby, a nawet i do wszystkich sektorów. Jest to dość typowy objaw uszkodzenia podsystemu translacji adresacji LBA na fizyczną w przypadku dysków WD.
Odzyskanie dostępu do tych sektorów wymaga poprawnej odbudowy translatora.
AMNF – nieznaleziony znacznik adresowy
Błąd polegający na nieodnalezieniu znacznika adresowego wskazuje na uszkodzenie nagłówka sektora. Od błędu IDNF różni się tym, że w przypadku błędów IDNF nagłówek sektora istnieje jako całość, a jedynie zawiera niezgodny z oczekiwaniami identyfikator sektora. Błędy AMNF są bardzo rzadkie i najczęściej wynikają z wystąpienia defektów fizycznych spowodowanych kontaktem głowicy z powierzchnią talerza. Rzadziej uszkadzane są przypadkowym nadpisaniem, jeśli głowica zostanie wytrącona ze swojej trajektorii podczas zapisu.
Inne rodzaje błędów
Prócz wyżej wymienionych, standard ATA opisuje jeszcze cztery inne rodzaje błędów. BBK – uszkodzony blok, jakiego nie spotkamy w prawdziwej przyrodzie, gdyż jeśli jakiś sektor będzie uszkodzony, jego uszkodzenie zostanie zakwalifikowane do jednej ze wskazanych wyżej kategorii oraz trzy rodzaje błędów charakterystycznych dla dyskietek.
T0NF – nieznaleziona lub uszkodzona ścieżka zerowa, a także MC i MCR wykorzystywane dla sygnalizacji konieczności wymiany dyskietki w napędzie i pustego napędu (braku dyskietki w napędzie).
Uszkodzone sektory w SSD
SSDki, podobnie, jak i inne nośniki wykorzystujące układy Flash-NAND, w wewnętrznej adresacji nie wykorzystują sektorów, ale strony i bloki (zob. Security Magazine 11(20)/2023). Tym niemniej, dla zachowania zgodności ze standardem ATA, ich kontrolery również komunikują się ze światem zewnętrznym wykorzystując sektory LBA.
W związku z tym także w przypadku SSDków mogą wystąpić komunikaty o uszkodzonych sektorach. Ponieważ w przypadku SSDków uszkodzenia podsystemu translacji skutkują odcięciem dostępu do układów pamięci, w praktyce będziemy spotykać jedynie błędy typu UNC lub ABRT.
Wystąpienie błędów UNC nawet w niewielkiej liczbie jest wyraźnym sygnałem, że nasz SSDek umiera (zob. Security Magazine 2(23)/2024) i należy niezwłocznie zabezpieczyć jego zawartość.
Z uwagi na zupełnie inną fizykę zapisu i przechowywania danych niż w nośnikach magnetycznych, próby naprawy uszkodzonych sektorów przez ich nadpisanie nie mogą przynieść pozytywnego rezultatu, a nawet wręcz przeciwnie – łatwo doprowadzą do dalszej degradacji układów pamięci.
Podobnie pozorne zniknięcie lub przemieszczenie uszkodzonych sektorów w inne miejsce jest jedynie wynikiem rotacji adresów LBA po adresach fizycznych i w żaden sposób nie wskazuje na poprawę stanu nośnika.
*Władysław Kozakiewicz, polski lekkoatleta, jaki po zdobyciu mistrzostwa olimpijskiego w Moskwie w konkursie skoku o tyczce (1980) podziękował radzieckiej publiczności za gorący aplauz gestem wykorzystywanym współcześnie w morskiej nawigacji dla wskazywania właściwego kierunku ruskim okrętom.