Kurze Antwort: Schreiben Sie etwas Neues in den Sektor (sogar Nullen - was ein langes Format tut).
Lange Antwort
Festplatten versuchen heute, fehlerhafte Sektoren vor dem Host-Computer zu verstecken. Der Host-Computer fordert das Laufwerk einfach auf, den Inhalt einer bestimmten Sektornummer zurückzugeben. Normalerweise liest das Laufwerk den Sektor, gibt ihn an den Host-Rechner zurück, und alles ist in Ordnung.
Die Festplatte weiß, ob der gelesene Wert gültig ist oder nicht, da das Laufwerk Error-correcting code (ECC) verwendet, um zu überprüfen, ob der gelesene Inhalt korrekt ist. Wenn das Laufwerk feststellt, dass der Inhalt des Sektors ungültig ist, wird es den Lesevorgang wiederholen. Die Hoffnung ist, dass es den korrekten Sektorinhalt erhält, wenn es ihn einfach noch einmal liest. Das Laufwerk versucht es so lange, bis es einen guten Wert erhält oder sein Zeitlimit erreicht hat (formell bekannt als Command completion time limit, oder CCTL _).
Während dieser Wiederholungen erscheint der Antrieb tot, da er nicht mehr auf Befehle reagiert .
Ersatzsektoren
Die meisten modernen Laufwerke enthalten eine Anzahl von “Ersatz” Sektoren (z. B. 1.024 Ersatzsektoren). Wenn das Laufwerk einen Sektor als fehlerhaft erkennt, wird er nicht mehr verwendet. Alle Anfragen zum Lesen oder Schreiben auf diesen beschädigten Sektor werden transparent auf einen Ersatzsektor umgeleitet. Diese Markierung eines defekten Sektors und die Neuzuweisung seiner Daten an einen Ersatzsektor wird als Reallocation Event bezeichnet. Und die Gesamtzahl der Sektoren, die neu zugewiesen wurden (und damit, wie viele Ihrer Ersatzsektoren verbraucht wurden), ist der Reallocated Sector Count.
In diesem Beispiel von einer meiner eigenen Festplatten wurden 64 Sektoren als fehlerhaft eingestuft. Das bedeutet, dass 64 der freien Sektoren des Laufwerks in Anspruch genommen wurden:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
Auf dieser gleichen Festplatte gab es 4 Reallocation Events. Das bedeutet, dass es vier Gelegenheiten gab, bei denen das Laufwerk Sektoren als schlecht markiert und stattdessen Ersatzsektoren verwendet hat.
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
Was, wenn es die Daten nie lesen kann?
Diese Aktionen des erneuten Lesens von Sektoren, des Verbrauchs von Ersatzsektoren, alles hinter dem Rücken des Computers, ist eine gute Sache. Es bedeutet, dass sich das Host-Betriebssystem nicht mit dem Problem der fehlerhaften Sektoren befassen muss. Das Laufwerk selbst kann diese Details selbst handhaben.
Bonusgeschwätz : Früher wurde Ihre Festplatte mit einem Aufkleber ausgeliefert, der an ihr befestigt war. Dieser Aufkleber enthielt die Factory Defect List; die Liste aller bekannten Fehlerstellen auf der Festplatte.
Wenn Sie eine Low-Level-Formatierung des Laufwerks durchgeführt haben, mussten Sie ein Tool verwenden, um alle Zylinderkopf-Sektor-Positionen der fehlerhaften Stellen einzutippen.
SCSI-Laufwerke haben einen Befehl, IOCTL_DISK_REASSIGN_BLOCKS
, der ihnen sagt, dass sie einen Bad Spot auf dem Laufwerk neu zuweisen sollen, nachdem das Betriebssystem ihn entdeckt hat. Bei IDE-Laufwerken geschieht dies alles automatisch, ohne dass ein Eingriff des Betriebssystems erforderlich ist.
Idealerweise würde das Laufwerk erkennen, dass der Sektor fehlerhaft ist, die Daten in einen Ersatzsektor verschieben und den ursprünglichen Sektor nie wieder verwenden. Aber was passiert, wenn das Laufwerk den Sektor nicht erfolgreich lesen konnte?
Das ist, was Pending Sectors
sind. Das Laufwerk hat erkannt, dass ein Sektor fehlerhaft ist und in einen Ersatzsektor umgewandelt werden muss. Das kann es aber erst tun, wenn es die Daten erfolgreich lesen kann. Wenn das Laufwerk weiß, dass ein Sektor fehlerhaft ist und neu zugeordnet werden muss, es dies aber noch nicht tun kann, weil es darauf wartet, dass der Sektor erfolgreich gelesen wird, wird dies Pending Sector Count genannt:
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
Meine Festplatte hat 2 Sektoren, die das Laufwerk als fehlerhaft erkennt, die aber noch nicht neu zugeordnet werden können. Wenn Sie einen dieser “ausstehenden Sektoren” lesen würden, würde das Laufwerk wahrscheinlich erneut versuchen (und versuchen und versuchen) und schließlich einen Lesefehler an das Host-Betriebssystem zurückgeben:
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
Geben Sie den ausstehenden Sektor auf, und er wird neu zugewiesen
Es gibt zwei Möglichkeiten, wie das Laufwerk den Sektor schließlich neu zuweisen und einen anderen freien Sektor verbrauchen kann:
- es wird schließlich gut gelesen
- es ist Ihnen egal, was sich in dem Sektor befindet
Wenn das Laufwerk den Sektor schließlich gelesen hat, dann weiß es, dass es den Sektor neu zuweisen kann.
Die andere Möglichkeit, wie das Laufwerk den Sektor neu zuordnen kann, ist, wenn Sie ihm mitteilen, dass der Inhalt des Sektors irrelevant ist; dass es Ihnen egal ist, was sich in ihm befindet. Wie machen Sie das?
Indem man etwas Neues in den Sektor schreibt.
Wann immer Sie von einem Sektor auf einer Festplatte lesen oder in ihn schreiben, müssen Sie den gesamten 512-Byte-Sektor1 lesen/schreiben. Es ist nicht möglich, nur einen Teil eines Sektors zu schreiben. Wenn das Betriebssystem Daten in einen Sektor schreibt, muss es die gesamten 512 Bytes angeben. Wenn Sie der Festplatte sagen, dass diese neuen Inhalte diesen fehlerhaften Sektor ersetzen sollen, dann weiß die Festplatte, dass es Ihnen egal ist, was sich momentan in dem fehlerhaften Sektor befindet. Sie kann dann den fehlerhaften Sektor einem der Ersatzsektoren neu zuweisen, und der Sektor ist nicht mehr anhängig.
Das ist der Grund, warum, wenn Leute nach einige Current Pending Sectors
haben, lautet der übliche Ratschlag, ein Werkzeug (wie Data LifeGuard von Western Digital) zu verwenden, um alle Nullen auf das Laufwerk zu schreiben.
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Durch das Schreiben von Nullen in jeden Sektor des Laufwerks teilen Sie dem Laufwerk mit, dass es endlich all diese lästigen Hängenden Sektoren neu zuordnen kann. Nach dem Löschvorgang werden alle Ihre Pending Sectors
zu Reallocated Sectors
:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Hinweis: Es ist nicht unbedingt notwendig, ein “Low-Level”-Tool wie den Data LifeGuard von Western Digital zu verwenden. Wenn Sie Windows anweisen, ein Vollformat (d. h. kein Quick-Format) eines Datenträgers durchzuführen, schreibt es Nullen in jeden Sektor des Datenträgers.
Das Ablagesystem des Betriebssystems unterstützt das Markieren von Sektoren als schlecht
Mit diesem Wissen bewaffnet, werden wir ein häufig verwirrendes Szenario untersuchen.
Vor dem Aufkommen von Integrated Drive Electronics (IDE) war das Host-Betriebssystem dafür verantwortlich, fehlerhafte Sektoren zu erkennen, die Leseversuche zu wiederholen, Daten in einen anderen Sektor zu verschieben und alte Sektoren als fehlerhaft zu markieren.
Wenn Sie ein chkdsk /r c:
mit dem Host-Betriebssystem ausführen würden, würde es erkennen, dass die “anstehenden” Sektoren schlecht sind, und sie selbst als schlecht markieren und nie wieder versuchen, sie zu benutzen:
>chkdsk c: /B
Angenommen, eine Festplatte mit 512 Byte großen Sektoren hat 12 KB “anstehende Sektoren” oder in diesem Beispiel 12 KB, die vom Betriebssystem als “schlechte Sektoren” markiert wurden, dann würde das dezimal 24 oder hexadezimal 0x18 entsprechen, wie es durch ein S angezeigt würde. M.A.R.T.-Datenträgerprogramm wie Crystal Disk Information angezeigt wird:
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
Hinweis : Das Dienstprogramm Data LifeGuard v1.31 (Stand 31.8.2017) von Western Digital scheint die aktuellen S.M.A.R.T. ‘Raw’-Zählerwerte nicht korrekt anzuzeigen.
Wenn Sie nun eine Vollformatierung durchführen (die Nullen in jeden Sektor des Datenträgers schreibt):
/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.
Das bedeutet, dass all diese Sektoren, die Pending
waren, neu zugewiesen werden. Es ist nun sicher für das Ablagesystem, diese Sektoren wieder zu verwenden. Um dem Ablagesystem mitzuteilen, dass diese Sektoren nicht mehr “schlecht” sind, führen Sie eine Option aus, bei der es schlechte Sektoren neu bewertet:
, wo in der Befehlsdokumentation
oder
steht, laut https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
Das war eine ganze Menge Schreibarbeit und eine ganze Menge Screenshots für etwas, das nie gelesen werden wird.