Iza
Dołączył: 28 Wrz 2005
Posty: 3
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Wto 21:19, 23 Maj 2006 Temat postu: Korekta błędów dysku twardego |
|
|
Fizycznym nośnikiem informacji w dysku twardym jest zespół koncentrycznie osadzonych krążków (płyt) pokrytych warstwą magnetyczną. Pomimo wyrafinowanej technologii produkcji tej części napędu do dnia dzisiejszego nie jest możliwe uzyskanie absolutnie idealnych właściwości magnetycznych materiału pokrycia. Już mikroskopijnej wielkości defekt fizyczny niszczy fragment ścieżki. Jeden uszkodzony bit eliminuje niestety cały sektor.
Dyski twarde, przechodząc kolejne etapy produkcji, poddawane są długotrwałym próbom mającym na celu wykrycie wszystkich takich punktów. W wyniku kontroli sporządzana jest lista, w której zapisuje się adresy CHS (Cylinder-Head-Sector) uszkodzonych sektorów. Liczba uszkodzeń nie jest jednak komunikowana na zewnątrz. Kontroler jednostki dyskowej dysponuje pulą rezerwową, z zasobów której przydzielane są sektory zastępcze. Zewnętrzne odwołania do uszkodzonych punktów kierowane są automatycznie w nowe miejsca (Bad Sector Mapping).
Czterobajtowe pole ID metryki adresowej sektora dysku twardego ma nieco inną budowę niż jego dyskietkowy odpowiednik. Główna różnica tkwi w ostatnim bajcie, który w przypadku dysku twardego nie podaje wielkości sektora, lecz stanowi jego znacznik.
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Objaśnienia odnoszą się do sytuacji, w której dany bit jest ustawiony.
bity 7-4 Zarezerwowane.
bit 3 Oznacza ścieżkę zastępczą.
bit 2 Metryka adresowa wskazuje na ścieżkę zastępczą.
bit 1 Ścieżka uszkodzona bez przydziału ścieżki zastępczej.
bit 0 Sektor uszkodzony.
Tak więc ustawienie bitu 0 znacznika sygnalizuje uszkodzenie danego sektora. Jeżeli uszkodzona jest cała ścieżka, a kontroler nie był w stanie przydzielić dla niej „zastępstwa”, ustawiany jest bit 1. Odpowiednio duża przestrzeń rezerwowa dysku umożliwia kontrolerowi zastąpienie całej uszkodzonej ścieżki. Sektor uszkodzonej ścieżki mają wtedy ustawiony bit 2. znacznika, a pierwsze trzy bajty pola ID wskazują nie na ścieżkę aktualną, lecz na zapasową. Ścieżka uznana za zastępczą ma ustawiony bit 3. znacznika.
Mechanizm odwzorowania uszkodzonych sektorów opiera się na dwóch tablicach przechowywanych na dysku. Pierwszą z nich jest lista błędów wykrytych podczas testowania powierzchni magnetycznej jeszcze u producenta. Umieszczona jest ona zwykle na ścieżce zerowej i może zawierać maksymalnie 101 pozycji. Poszczególne pozycje lokalizują uszkodzone miejsce przez podanie numeru cylindra, głowicy i liczby bajtów zawartych między znacznikiem D3 na początku ścieżki a miejscem uszkodzenia. Drugą listę tworzy sam kontroler dysku podczas operacji formatowania (automatycznie lub na życzenie wyrażone odpowiednim rozkazem – aktualizacja listy). Lista ta nosi nazwę listy znanych błędów (Grown Error List). Pozycje na tej liście, w przeciwieństwie do listy błędów ustalonej przez producenta, oznaczają uszkodzone miejsca poprzez podanie sekwencji CHS.
W oparciu o przedstawione listy kontroler ma możliwość optymalnego zagospodarowania powierzchni dysku. Niesprawne sektory i ścieżki są logicznie przesuwane lub zastępowane innymi tak, że dysk na zewnątrz prezentuje się nienagannie mimo wielu uszkodzeń. Zjawiska tego nie należy traktować jako wad dysku. Jeżeli dana ścieżka zawiera tylko jeden zły sektor, kontroler może w trakcie operacji formatowania tak przesunąć wszystkie sektory, że uszkodzenie trafi na niewykorzystaną część ścieżki. Operacja ta określana jest często mianem sector – slipping ; jeśli może być przeprowadzona, nie powstaje ubytek pojemności dysku. Wykluczenie uszkodzonego sektora przez oznaczenie go jako zły stanowi nieco gorsze wyjście, gdyż zmniejsza pojemność dysku. Niektóre kontrolery profilaktycznie formatują w tym celu na każdej ze ścieżek o jeden sektor więcej (zwykle 18 zamiast 17 lub 27 zamiast 26). Dodatkowe sektory nie są w normalnych warunkach wykorzystywane i oczekują w rezerwie. Umożliwia to eliminację pojedynczych sektorów ścieżki bez utraty pojemności.
Niewielkie błędy mogą być stosunkowo łatwo likwidowane przez kontroler. Uszkodzenia obejmujące więcej niż jeden sektor nie mogą być skompensowane w ramach tej samej ścieżki. Kontroler oznacza w takim przypadku całą ścieżkę jako uszkodzoną, a jako zastępczą wyznacza najwyższą z pozostałych dostępnych ścieżek. Jej metryki adresowe (cylinder-głowica-sektor-znacznik) odkładane są we wszystkich polach ID ścieżki uszkodzonej, przy czym ustawiony zostaje bit 2. znacznika. Z kolei w znacznikach sektorów ścieżki rezerwowej ustawiony zostaje bit 3. Ścieżka taka, adresowana swymi własnymi parametrami, przestaje być dostępna dla normalnych operacji. Każda próba dostępu do sektorów uszkodzonej ścieżki kierowana jest przez kontroler do ścieżki rezerwowej. Praktycznie oznacza to dodatkowy manewr najazdu (pozycjonowania) głowic.
Przydział ścieżki zapasowej powoduje wprawdzie zmniejszenie pojemności dysku, ale pozostawienie uszkodzonej ścieżki bez przydzielenia zastępstwa jest jeszcze gorsze, oznacza bowiem przerwanie ciągłości w przestrzeni adresowej sektorów. Zarządzenie takim obszarem jest dla kontrolera zadaniem dużo trudniejszym i sprawność dysku obniża się. Na szczęście obecny poziom technologii umożliwia minimalizację liczby uszkodzeń powierzchni dysków do tego stopnia, że na skorygowanie wszystkich błędów pozwala w zasadzie sama technika Sector-Slipping.
Kontrolery realizujące opisany powyżej mechanizm odwzorowania uszkodzonych sektorów rezerwują zwykle dla swoich celów pierwszy cylinder fizyczny dysku i przydzielają mu numer ujemny (-1). Daje to gwarancję, że dostęp do tego cylindra może mieć wyłącznie kontroler, żaden rozkaz nie może bowiem zaadresować sektora położonego na ujemnym cylindrze. W tak zabezpieczonych sektorach kontroler przechowuje wykorzystywane listy błędów oraz dokładny opis rzeczywistej geometrii dysku (dla bezpieczeństwa w kilku kopiach).
Oprócz uszkodzeń powierzchni w dobrze znanych kontrolerowi miejscach występują sporadycznie również inne problemy. Na skutek niezmiernie wysokiej gęstości zapisu danych na dyskach twardych pojawiać się mogą często błędy pozycjonowania lub odczytu. Istnieje kilka znanych źródeł tego rodzaju błędów. Najbardziej drastycznym przykładem jest zetknięcie się głowic z powierzchnią magnetyczną (Head Crush). W normalnych warunkach pracy głowice utrzymywane są w odległości około 0,0003 mm od powierzchni nośnika. Dla porównania, średnica włosa ludzkiego wynosi w przybliżeniu 0,01 mm, a więc 30 razy więcej! Mikroskopijnej wielkości drobiny pyłów lub też raptowny wstrząs mogą więc łatwo doprowadzić do kolizji, w wyniku której zniszczony zostanie fragment powierzchni magnetycznej (jeśli nie sama głowica).
Znany jest też powszechnie efekt stopniowego zaniku namagnesowania sektorów podawanych wyłącznie odczytowi. Najbardziej klasycznym tego przykładem jest sektor ładujący, dla którego już po kilku latach mogą wystąpić pojedyncze błędy odczytu. W początkowej fazie powstawania takich błędów procedury korekcji są w stanie jeszcze je wyeliminować, ale pewnego dnia sektor przestaje być czytelny. Istnieją oczywiście specjalne programy rozpoznające takie słabe punkty dysku i odświeżające zawartość zagrożonych sektorów.
Najczęstszym źródłem błędów są oczywiście niedokładności pozycjonowania głowic nad żadaną ścieżką, szczególnie często spotykane wśród dysków wyposażonych w mechanizm przesuwu sterowany silnikiem krokowym. Realizując dostęp do określonego sektora kontroler musi ustawić głowice nad cylindrem, do którego przynależy ścieżka zawierająca ten sektor. Liczba niezbędnych kroków mechanizmu przesuwu obliczana jest na podstawie odległości żądanego cylindra od pozycji bieżącej. Jeżeli zapis w polu ID dowolnego sektora po osiągnięciu celu wskazuje mimo wszystko na inny cylinder, mamy do czynienia właśnie z błędem pozycjonowania. Ewentualny błąd w polu danych sektora wykrywany jest natychmiast dzięki obecności kodów ECC. Nie oznacza to jednak, że kontroler od razu daje za wygraną. W zależności od szczegółowych rozwiązań zawartych w pamięci stałej mikroprocesora kontrolera możliwych jest ponad 30 różnych prób odczytu, zanim systemowi operacyjnemu przekazany zostanie meldunek o niemożliwości dostępu do sektora.
Ogólny algorytm postępowania wygląda zwykle następująco:
· Krok pierwszy – podejmowana jest (ośmiokrotnie) próba odczytu sektora bez korzystania z korekcyjnych właściwości kodu ECC. Ta prosta strategia może być uwieńczona sukcesem, jeżeli przyczyną błędu było chwilowe rozsynchronizowanie spowodowane zachwianiem prędkości obrotowej dysku.
· Krok drugi – następuje wymuszenie przejazdu głowicy nad powierzchnią dysku; składają się nań polecenia powrotu nad ścieżkę zerową, a stamtąd na koniec obszaru danych i ponownie do punktu wyjścia. Manewr taki likwiduje ewentualne przesunięcie fazy mechanizmu pozycjonowania, który nie lokuje głowic w środkowej części ścieżek, lecz na ich krawędzi, gdzie odczytywany sygnał może być zbyt słaby.
· Krok trzeci – podejmowana jest próba odczytu sektora z wykorzystaniem samokorygujących właściwości kodu ECC.
· Krok czwarty – kontroler wykonuje próby odczytu sektora z celowo wprowadzonym przesunięciem fazy danych i zegara. Kontroler sprawdza kolejno następujące przesunięcia : +1,5%, +6%, +7,5%, -1,5%, -6%, -7,5%. Tego typu postępowanie likwiduje ewentualne przesunięcia bitów powstałe na skutek braku tzw. prekompensacji przy zapisie.
· Krok piąty – mechanizm pozycjonowania głowic przechodzi do pracy w trybie mikrokrokowym. Kontroler realizuje osiem kolejnych prób odczytu, podczas których głowice przesuwane są kolejno o jeden mikrokrok w poprzek szerokości ścieżki. Korekcyjne właściwości kodu ECC nie są brane pod uwagę. W ten sposób mogą być zlikwidowane błędy wywołane zmianą wymiarów powierzchni dysku pod wpływem różnicy temperatury w stosunku do tej z momentu formatowania.
· Krok szósty – kontroler realizuje osiem kolejnych prób odczytu z wykorzystaniem strategii mikrokroków, a odczyt odbywa się z udziałem kodów ECC.
Realizacja powyższego algorytmu jest naturalnie przerywana, jeśli tylko uda się odczytać dane z sektora.
Metodyka korekcji błędów pozycjonowania nie jest aż tak rozbudowana jak w powyższym opisie. Błędem pozycjonowania w rozumieniu kontrolera może być zarówno brak pod głowicą jakiejkolwiek metryki adresowej, jaki i odczytanie metryki niezgodnej z oczekiwaną. W pierwszym przypadku przyczyną jest przeważnie ustawienie głowic w położeniu międzyścieżkowym, które likwiduje pojedyncza kalibracja napędu. W drugim przypadku kontroler przeprowadza zwykle kilkakrotną kalibrację i ponawia próbę odczytu.
Kontrolery dysków realizujące technikę odwzorowania uszkodzonych sektorów kierują się często swoimi własnymi regułami i może się zdarzyć, że po kolejnej nieudanej próbie najazdu ścieżka zostanie oznaczona jako zła. Przydział ścieżki zastępczej odbywa się wówczas w opisany wcześniej sposób.
Post został pochwalony 0 razy
|
|