Kort antwoord: Schrijf iets nieuws naar de sector (zelfs nullen - wat een lang formaat doet).
Lang Antwoord
Harde schijven proberen tegenwoordig slechte sectoren voor de hostcomputer te verbergen. De hostcomputer vraagt de drive gewoon om de inhoud van een bepaald sectornummer terug te geven. Normaal leest de schijf de sector, stuurt die terug naar de hostcomputer, en alles is in orde.
De harde schijf weet of de waarde die hij leest geldig is of niet, omdat de schijf Error-correcting code (ECC) gebruikt om te valideren dat de gelezen inhoud correct is. Als de drive ontdekt dat de inhoud van de sector ongeldig is, zal hij het lezen opnieuw proberen. De hoop is dat als hij gewoon opnieuw leest, hij de juiste sectorinhoud krijgt. Hij blijft het opnieuw proberen totdat hij een goede waarde krijgt, of totdat hij zijn tijdslimiet heeft bereikt (formeel bekend als de Command completion time limit, of CCTL _).
Tijdens deze pogingen, zal de aandrijving dood lijken; aangezien het niet meer reageert op commando’s .
Reservesectoren
De meeste moderne schijven bevatten een aantal “reserve” sectoren (b.v. 1.024 reservesectoren). Als de schijf herkent dat een sector slecht is, wordt deze niet meer gebruikt. Alle verzoeken om te lezen of te schrijven naar die beschadigde sector zullen transparant worden omgeleid naar een reservesector. Het markeren van een slechte sector en het opnieuw toewijzen van de gegevens aan een reservesector wordt een Reallocation Event genoemd. En het totale aantal sectoren dat opnieuw is toegewezen (en dus hoeveel van uw reservesectoren zijn opgebruikt) is de Gerealloceerde Sector Telling.
In dit voorbeeld van een van mijn eigen harde schijven, bleken 64 sectoren slecht te zijn. Dat betekent dat 64 van de reservesectoren van de schijf in gebruik zijn genomen:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
Op deze zelfde harde schijf zijn er 4 Reallocation Events geweest. Dit betekent dat de schijf vier keer sectoren als slecht heeft gemarkeerd, en in plaats daarvan reservesectoren heeft gebruikt.
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
Wat als hij de data nooit kan lezen?
Deze acties van het herlezen van sectoren, het gebruiken van reserves, allemaal achter de rug van de computer om is een goede zaak. Het betekent dat het host besturingssysteem niet hoeft om te gaan met het probleem van falende sectoren. De schijf zelf kan die details zelf afhandelen.
Bonus Chatter : Vroeger werd uw harde schijf geleverd met een sticker erop geplakt. Deze sticker bevatte de Factory Defect List; de lijst van alle bekende slechte plekken op de schijf.
Als je een low-level format van de schijf uitvoerde, moest je een tool gebruiken om alle Cylinder-Head-Sector locaties van de slechte plekken in te typen.
SCSI-schijven hebben een commando, IOCTL_DISK_REASSIGN_BLOCKS
, om ze te vertellen een slechte plek op de schijf opnieuw toe te wijzen nadat het besturingssysteem dit heeft gedetecteerd. Bij IDE-schijven gebeurt dit allemaal automatisch, zonder tussenkomst van het besturingssysteem.
Idealiter zou de schijf herkennen dat de sector defect is, de gegevens naar een reservesector verplaatsen, en de oorspronkelijke sector nooit meer gebruiken. Maar wat gebeurt er als de schijf de sector niet met succes heeft kunnen lezen?
Dit is wat Pending Sectors
zijn. De drive heeft gedetecteerd dat een sector faalt, en moet omgevormd worden naar een reserve. Maar hij kan dat niet doen totdat hij de data succesvol kan lezen. Als de drive weet dat een sector slecht is, en moet worden omgedraaid, maar dat nog niet kan doen omdat hij wacht op een goede lezing van de sector: dat wordt de Pending Sector Count genoemd:
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
Mijn harde schijf heeft 2 sectoren die de schijf herkent als slecht, maar die nog niet opnieuw toegewezen kunnen worden. Als u een van deze ‘Pending sectors’ zou lezen, zou de schijf waarschijnlijk opnieuw proberen (en opnieuw proberen, en opnieuw proberen), en uiteindelijk een leesfout teruggeven aan het host besturingssysteem:
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
Geef op de in afwachting van sector en het zal opnieuw toegewezen
Er zijn twee manieren waarop de drive kan eindelijk ** opnieuw toewijzen** de sector, en consumeren een andere reserve sector:
- het krijgt eindelijk een goede lezen
- kan je niet meer schelen wat er in de sector
Als de drive eindelijk gelezen de sector, dan weet dat het kan opnieuw toewijzen van de sector.
De andere manier waarop de drive de sector opnieuw kan toewijzen is als je hem laat weten dat de inhoud van die sector irrelevant is; dat het je niet meer kan schelen wat er in zit. Hoe doe je dat?
Door iets nieuws naar de sector te schrijven.
Telkens als je leest van, of schrijft naar, een sector op een harde schijf, moet je de gehele 512 byte sector1 lezen/schrijven. Het is niet mogelijk om slechts een deel van een sector te schrijven. Als het besturingssysteem gegevens naar een sector schrijft, moet het de gehele 512 bytes specificeren. Als je de harddisk vertelt dat je deze nieuwe inhoud in de plaats van de slechte sector wilt, dan weet de harddisk dat het je niet eens kan schelen wat er nu in de slechte sector zit. Hij kan dan een slechte sector heralloceren naar een van de reserves, en de sector is niet langer In afwachting.
Dit is waarom wanneer mensen vragen over Als u een aantal Current Pending Sectors
hebt, is het gebruikelijke advies om een programma te gebruiken (zoals Data LifeGuard van Western Digital) om alle nullen naar de schijf te schrijven.
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Door nullen te schrijven naar elke sector op de schijf, vertel je de schijf dat hij eindelijk al die vervelende pending sectoren opnieuw kan toewijzen. Na het wissen, zullen al uw Pending Sectors
Reallocated Sectors
worden:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Note: Het is niet strikt noodzakelijk om een “low level” tool zoals Western Digital’s Data LifeGuard te gebruiken. Als u Windows opdracht geeft om een volledig format (d.w.z. geen Quick format) van een volume uit te voeren, dan schrijft het nullen naar elke sector in het volume.
Het OS bestandssysteem ondersteunt het markeren van sectoren als slecht
Gewapend met deze kennis, zullen we een veel voorkomend verwarrend scenario onderzoeken.
Voor de komst van Integrated Drive Electronics (IDE), was het host-besturingssysteem verantwoordelijk voor het detecteren van slechte sectoren, het opnieuw proberen van de leest, het verplaatsen van gegevens naar een andere sector, en het markeren van oude sectoren als slecht.
Als je een chkdsk /r c:
zou uitvoeren met het host besturingssysteem, zou het herkennen dat de “pending” sectoren slecht zijn, en ze zelf als slecht markeren, en nooit meer proberen ze te gebruiken:
>chkdsk c: /B
Dus uitgaande van een 512-byte sector harde schijf, 12 KB aan “Pending Sectors” of in dit voorbeeld 12KB gemarkeerd door het OS als “slechte sectoren”, zou dat overeenkomen met decimaal 24 of hexadecimaal 0x18 zoals zou worden weergegeven door een S. M.A.R.T. schijfhulpprogramma zoals Crystal Disk Information:
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
Note : Het hulpprogramma Data LifeGuard v1.31 (laatste per 8/31/2017) van Western Digital lijkt de huidige S.M.A.R.T. ‘Raw’ tellerwaarden niet correct weer te geven.
Als je nu een full format (die nullen schrijft naar elke sector in het volume) uitvoert:
/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.
Dat betekent dat al die sectoren die Pending
waren, opnieuw toegewezen gaan worden. Het is nu veilig voor het opslagsysteem om die sectoren weer te gebruiken. Om het archiefsysteem te instrueren dat die sectoren niet langer “slecht” zijn, voer je een optie uit waarbij het slechte sectoren herwaardeert:
waar de commando documentatie zegt
Of
Volgens https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
Dit was een heleboel schrijfwerk, en een heleboel screenshots, voor iets dat nooit gelezen zal worden.