Krótka odpowiedź: Zapisz coś nowego do sektora (nawet zera - co robi długi format).
Długa odpowiedź
Dzisiejsze dyski twarde starają się ukryć uszkodzone sektory przed komputerem hosta. Komputer hosta po prostu prosi dysk o zwrócenie zawartości określonego numeru sektora. Zazwyczaj dysk odczytuje sektor, zwraca go do hosta i wszystko jest w porządku.
Dysk twardy wie, czy odczytana wartość jest prawidłowa, czy nie, ponieważ dysk wykorzystuje Kod korekcji błędów (ECC) do sprawdzenia, czy odczytana zawartość jest prawidłowa. Jeżeli napęd wykryje, że zawartość sektora jest nieprawidłowa, ponowi próbę odczytu. Istnieje nadzieja, że jeśli po prostu odczyta go ponownie, może uzyskać prawidłową zawartość sektora. Napęd będzie ponawiał próby do momentu uzyskania dobrej wartości lub osiągnięcia limitu czasu (formalnie znanego jako limit czasu ukończenia polecenia, lub CCTL ](http://www.t13.org/Documents/UploadedDocuments/docs2008/D1699r6a-ATA8-ACS.pdf)_).
Podczas tych prób, dysk będzie wyglądał na martwy, ponieważ nie odpowiada na komendy .
Sektory zapasowe
Większość nowoczesnych napędów zawiera pewną liczbę “zapasowych” sektorów (np. 1,024 zapasowych sektorów). Jeśli dysk rozpozna, że sektor jest uszkodzony, przestanie go używać. Wszelkie żądania odczytu lub zapisu w tym uszkodzonym sektorze zostaną w sposób przezroczysty przekierowane do sektora zapasowego. Oznaczenie uszkodzonego sektora i przeniesienie jego danych do sektora zapasowego jest określane jako zdarzenie realokacji. A całkowita liczba sektorów, które zostały realokowane (a więc ile z Twoich wolnych sektorów zostało wykorzystanych) to Liczba realokowanych sektorów.
W tym przykładzie z jednego z moich własnych dysków twardych 64 sektory zostały uznane za uszkodzone. Oznacza to, że 64 z wolnych sektorów na dysku zostało wykorzystanych:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
Na tym samym dysku twardym wystąpiły 4 zdarzenia realokacji. Oznacza to, że w czterech przypadkach dysk oznaczył sektory jako uszkodzone i użył zamiast nich 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 można odczytać danych?
Te działania polegające na ponownym odczytywaniu sektorów, zużywaniu sektorów zapasowych, a wszystko to za plecami komputera, to dobra rzecz. Oznacza to, że system operacyjny hosta nie musi zajmować się problemem uszkodzonych sektorów. Dysk sam sobie poradzi z tymi szczegółami.
Bonus Chatter : W dawnych czasach dysk twardy był dostarczany z naklejką przyklejoną do niego. Ta naklejka zawierała Factory Defect List; listę wszystkich znanych uszkodzeń dysku.
Jeśli przeprowadzałeś niskopoziomowy format dysku, musiałeś użyć narzędzia do wpisania wszystkich lokalizacji sektora głowicy cylindra uszkodzonych miejsc.
Dyski SCSI mają polecenie, IOCTL_DISK_REASSIGN_BLOCKS
, aby powiedzieć im, aby ponownie przydzielić uszkodzone miejsce na dysku po wykryciu go przez system operacyjny. W napędach IDE wszystko to dzieje się automatycznie, bez potrzeby interwencji systemu operacyjnego.
W idealnej sytuacji dysk rozpoznaje uszkodzony sektor, przenosi dane do sektora zapasowego i nigdy więcej nie używa oryginalnego sektora. Ale co się dzieje, jeśli dysk nie był w stanie pomyślnie odczytać sektora?
Tym właśnie jest Pending Sectors
. Dysk wykrył, że sektor jest uszkodzony i musi zostać przemapowany do sektora zapasowego. Ale nie może tego zrobić, dopóki nie będzie w stanie pomyślnie odczytać danych. Gdy dysk wie, że sektor jest uszkodzony i należy go przemapować, ale nie może tego jeszcze zrobić, ponieważ czeka na dobry odczyt z sektora: jest to Liczba Sektorów Oczekujących:
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 są rozpoznawane przez dysk jako uszkodzone, ale nie mogą być jeszcze realokowane. Jeśli chciałbyś odczytać jeden z tych “sektorów oczekujących”, dysk prawdopodobnie ponowiłby próbę (i ponowiłby próbę, i ponowiłby próbę), a w końcu zwróciłby błąd odczytu do systemu operacyjnego hosta:
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
Zrezygnuj z sektora oczekującego, a zostanie on ponownie przydzielony
Istnieją dwa sposoby, w jakie dysk może w końcu przydzielić sektor i skonsumować inny wolny sektor:
- w końcu uzyskuje dobry odczyt
- nie obchodzi Cię już, co jest w sektorze
Jeśli dysk w końcu odczytał sektor, to wie, że może ponownie przydzielić sektor.
Innym sposobem, w jaki napęd może ponownie przydzielić sektor, jest poinformowanie go, że zawartość tego sektora jest nieistotna; że nie obchodzi cię już, co się w nim znajduje. Jak to zrobić?
Poprzez zapisanie czegoś nowego do sektora.
Za każdym razem, gdy odczytujesz lub zapisujesz sektor na dysku twardym, musisz odczytać/zapisać cały 512-bajtowy sektor1. Nie można zapisywać tylko części sektora. Gdy system operacyjny zapisuje dane w sektorze, musi określić całą wielkość 512-bajtowego sektora. Jeśli powiesz dyskowi twardemu, że chcesz, aby nowa zawartość zastąpiła uszkodzony sektor, dysk będzie wiedział, że nie obchodzi go, co znajduje się w uszkodzonym sektorze. Może on wtedy Realokować uszkodzony sektor do jednego z zapasowych, a sektor ten nie jest już Oczekujący.
To dlatego, gdy ludzie pytają o Mając kilka Current Pending Sectors
, powszechną radą jest użycie narzędzia (takiego jak Data LifeGuard firmy Western Digital), aby zapisać wszystkie zera na dysku.
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Zapisując zera w każdym sektorze na dysku, mówisz dyskowi, że może w końcu ponownie przydzielić wszystkie te dokuczliwe oczekujące sektory. Po wymazaniu, wszystkie Twoje Pending Sectors
staną się Reallocated Sectors
:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Uwaga: Nie jest bezwzględnie konieczne użycie narzędzia “niskiego poziomu”, takiego jak Data LifeGuard firmy Western Digital. Jeśli polecisz Windowsowi wykonanie pełnego formatu (tj. innego niż Quick) woluminu, zapisze on zera w każdym sektorze woluminu.
System plików OS obsługuje oznaczanie sektorów jako uszkodzone
Uzbrojeni w tę wiedzę, zbadamy często mylący scenariusz.
Przed pojawieniem się Integrated Drive Electronics (IDE), system operacyjny hosta był odpowiedzialny za wykrywanie złych sektorów, ponawianie prób odczytu, przenoszenie danych do innego sektora i oznaczanie starych sektorów jako złych.
Gdybyś uruchomił chkdsk /r c:
używając systemu operacyjnego hosta, rozpoznałby on, że “oczekujące” sektory są uszkodzone i oznaczyłby je jako uszkodzone, i nigdy nie próbowałby użyć ich ponownie:
>chkdsk c: /B
Zakładając więc, że dysk twardy ma 512-bajtowe sektory, 12 KB “oczekujących sektorów” lub w tym przykładzie 12 KB oznaczonych przez system operacyjny jako “uszkodzone sektory”, odpowiadałoby to dziesiętnej 24 lub szesnastkowej 0x18, co byłoby pokazane przez S. M.A.R.T., takie jak Crystal Disk Information:
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
Uwaga : Narzędzie Data LifeGuard v1.31 (najnowsze na dzień 8/31/2017) firmy Western Digital nie wyświetla poprawnie bieżących wartości licznika S.M.A.R.T. ‘Raw’.
Teraz, jeśli wykonasz pełny format (który zapisuje zera do każdego sektora na woluminie):
/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.
Oznacza to, że wszystkie te sektory, które były Pending
zostaną ponownie przydzielone. Teraz jest to bezpieczne dla systemu katalogów, aby użyć tych sektorów ponownie. Aby poinstruować system plików, że te sektory nie są już “złe”, wykonujesz opcję, która przewartościowuje złe sektory:
gdzie dokumentacja komendy mówi
Lub
Według https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
To było dużo pisania i dużo zrzutów ekranu, dla czegoś, co nigdy nie zostanie przeczytane.