Krótka odpowiedź: napisz coś nowego w sektorze (nawet zera - co robi długi format).
Długa odpowiedź
Dyski twarde próbują dziś ukryć uszkodzone sektory przed komputerem hosta. Komputer hosta prosi dysk o zwrócenie zawartości określonego numeru sektora. Zwykle dysk odczytuje sektor, zwraca go do komputera hosta i wszystko jest w porządku.
Dysk twardy wie, czy odczytana wartość jest poprawna, czy nie, ponieważ dysk używa kodu korekcji błędów (ECC) w celu sprawdzenia poprawności odczytanej zawartości. Jeśli dysk wykryje, że zawartość sektora jest nieprawidłowa, ponowi próbę odczytu. Mamy nadzieję, że jeśli po prostu przeczyta go ponownie, może uzyskać poprawną zawartość sektora. Będzie kontynuował próbę, aż osiągnie dobrą wartość lub osiągnie limit czasu (formalnie znany jako limit czasu wykonania polecenia lub CCTL ).
Podczas tych ponownych prób napęd będzie wyglądał na martwy; ponieważ nie reaguje już na polecenia .
Zapasowe sektory
Większość współczesnych dysków zawiera wiele „zapasowych” sektorów (np. 1 024 wolnych sektorów). Jeśli dysk rozpozna sektor jako zły, przestanie go używać. Wszelkie żądania odczytu lub zapisu w tym uszkodzonym sektorze zostaną w sposób przejrzysty przekierowane do sektora zapasowego. Wyznaczenie złego sektora i przeniesienie jego danych do sektora zapasowego nazywa się zdarzeniem realokacji . A łączna liczba sektorów, które zostały realokowane (a więc ile z twoich wolnych sektorów zostało wykorzystanych), to liczba sektorów realokowanych .
W tym przykładzie z jednego z moich twardych dysków 64 sektory okazały się złe. Oznacza to, że wezwano do użycia 64 wolnych sektorów napędu:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
Na tym samym dysku twardym odbyły się 4 zdarzenia realokacji . Oznacza to, że były cztery sytuacje, w których dysk oznaczał sektory jako złe i zamiast tego używał sektorów zapasowych.
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
Co jeśli nie będzie w stanie odczytać danych?
Te działania polegające na ponownym czytaniu sektorów, zużywaniu części zamiennych, wszystko za plecami komputera, są dobrą rzeczą. Oznacza to, że system operacyjny hosta nie musi radzić sobie z problemem awarii sektorów. Sam dysk może sam poradzić sobie z tymi szczegółami.
Dodatkowe rozmowy : W dawnych czasach dysk twardy wysyłany był z przymocowaną naklejką. Ta naklejka zawierała listę wad fabrycznych ; lista wszystkich znanych złych miejsc na dysku.
Jeśli wykonałeś formatowanie niskiego poziomu napędu, musiałeś użyć narzędzia do wpisania wszystkich lokalizacji złych miejsc w głowicy cylindrów .
Dyski SCSI mają polecenie, IOCTL_DISK_REASSIGN_BLOCKS
które każe im przydzielić złe miejsce na dysku po wykryciu go przez system operacyjny. W napędach IDE wszystko dzieje się automatycznie, bez potrzeby interwencji systemu operacyjnego.
Idealnie byłoby, gdyby dysk rozpoznał awarię sektora, przeniósł dane do sektora zapasowego i nigdy więcej nie używałby pierwotnego sektora. Ale co się stanie, jeśli dysk nie będzie w stanie poprawnie odczytać sektora?
Oto jakie Pending Sectors
są. Dysk wykrył awarię sektora i należy go przypisać do rezerwy. Ale nie może tego zrobić, dopóki nie może z powodzeniem odczytać danych. Gdy dysk wie, że sektor jest zły i wymaga ponownego mapowania, ale nie może tego jeszcze zrobić, ponieważ czeka na dobry odczyt z sektora: to się nazywa liczba oczekujących sektorów :
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
(C5) Current Pending Sector 100 100 0 2
Mój dysk twardy ma 2 sektory, które dysk rozpoznaje jako zły, ale nie można go jeszcze ponownie przydzielić. Jeśli odczytasz jeden z tych „sektorów oczekujących”, napęd prawdopodobnie spróbuje ponownie (i spróbuje ponownie, i spróbuje ponownie), a ostatecznie zwróci błąd odczytu do systemu operacyjnego hosta:
Porzuć oczekujący sektor, a zostanie on ponownie przydzielony
Istnieją dwa sposoby, aby dysk mógł w końcu ponownie przydzielić sektor i wykorzystać inny wolny sektor:
- wreszcie dobrze się czyta
- nie obchodzi Cię już, co jest w sektorze
Jeśli dysk w końcu odczyta sektor, to wie, że może dokonać realokacji sektora.
Innym sposobem, w jaki dysk może ponownie przydzielić sektor, jest powiadomienie go, że zawartość tego sektora jest nieistotna; że już cię to nie obchodzi. Jak to robisz?
Pisząc coś nowego w branży.
Ilekroć czytasz z sektora na dysku twardym lub piszesz do niego, musisz odczytać / zapisać cały 512-bajtowy sektor 1 . Nie możesz napisać tylko części sektora. Kiedy system operacyjny zapisuje dane w sektorze, musi określić całe 512 bajtów. Jeśli powiesz dyskowi twardemu, że chcesz, aby ta nowa zawartość zastąpiła ten zły sektor, oznacza to, że nawet nie obchodzi Cię, co jest obecnie w złym sektorze. Następnie może realokować zły sektor do jednej z części zapasowych, a sektor nie jest już w toku .
Właśnie dlatego, gdy ludzie pytają o ich posiadanie Current Pending Sectors
, powszechną radą jest użycie narzędzia (takiego jak Data Digital LifeGuard firmy Western Digital), aby zapisać wszystkie zera na dysku.
Pisząc zera do każdego sektora na dysku, mówisz dyskowi, że może w końcu dokonać realokacji wszystkich tych nieznośnych oczekujących sektorów . Po wyczyszczeniu wszystko Pending Sectors
stanie się Reallocated Sectors
:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 66
(C4) Reallocated Event Count 196 196 0 5
(C5) Current Pending Sector 100 100 0 0
Uwaga: użycie narzędzia „niskiego poziomu”, takiego jak Data Digital LifeGuard firmy Western Digital, nie jest absolutnie konieczne. Jeśli poinstruujesz system Windows, aby wykonał pełny format woluminu (tj. Format inny niż szybki ), zapisuje zera w każdym sektorze woluminu.
System archiwizacji systemu operacyjnego obsługuje oznaczanie sektorów jako złe
Uzbrojeni w tę wiedzę zbadamy często mylący scenariusz.
Przed pojawieniem się zintegrowanej elektroniki napędowej (IDE) system operacyjny hosta był odpowiedzialny za wykrywanie uszkodzonych sektorów, ponawianie odczytów, przenoszenie danych do innego sektora i oznaczanie starych sektorów jako złe.
Jeśli miałbyś uruchomić chkdsk /r c:
system operacyjny hosta, rozpoznałby, że „oczekujące” sektory są złe, i oznaczył je jako złe, i nigdy nie próbowałby ich użyć ponownie:
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Przyjmując więc dysk twardy o wielkości 512 bajtów, 12 KB „sektorów oczekujących” lub w tym przykładzie 12 KB oznaczonych przez system operacyjny jako „uszkodzone sektory”, co odpowiada 24 lub dziesiętnemu 0x18, jak pokazano w narzędziu dyskowym SMART takie jak informacje o dysku Crystal:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Uwaga : Narzędzie Data LifeGuard v1.31 firmy Western Digital (najnowsze na 31.08.2017) nie wydaje się poprawnie wyświetlać bieżących wartości licznika SMART „Raw”.
Teraz, jeśli wykonasz pełny format (który zapisuje zera do każdego sektora w wolumenie) :
Oznacza to, że wszystkie sektory, które miały Pending
zostać realokowane. System archiwizacji może teraz bezpiecznie korzystać z tych sektorów. Aby poinstruować system plików, że te sektory nie są już „złe” , należy wykonać opcję, w której ponownie ocenia złe sektory:
>chkdsk c: /B
gdzie mówi dokumentacja polecenia
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
Lub
Według:
https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
/B NTFS only: Clears the list of bad clusters on the volume and
rescans all allocated and free clusters for errors. /b includes
the functionality of /r. Use this parameter after imaging a
volume to a new hard disk drive.
To było całe pisanie lotty i całe zrzuty ekranu lotty, dla czegoś, co nigdy nie zostanie przeczytane.