Risposta breve: Scrivere qualcosa di nuovo nel settore (anche degli zeri - cosa che fa un formato lungo).
Risposta lunga
I dischi rigidi oggi cercano di nascondere i settori difettosi al computer ospite. Il computer host chiede semplicemente all'unità di restituire il contenuto di un particolare numero di settore. Normalmente il disco legge il settore, lo restituisce al computer host e tutto va bene.
Il disco rigido sa se il valore letto è valido o no, perché l'unità usa Error-correcting code (ECC) per convalidare che il contenuto letto sia corretto. Se l'unità rileva che il contenuto del settore non è valido, riprova la lettura. La speranza è che se semplicemente lo legge di nuovo, potrebbe ottenere il contenuto corretto del settore. Continuerà a riprovare finché non otterrà un buon valore, o avrà raggiunto il suo limite di tempo (formalmente conosciuto come il Command completion time limit, o CCTL _).
Durante questi tentativi, l'unità apparirà morta; poiché non risponde più ai comandi .
Settori di riserva
La maggior parte delle unità moderne contiene un certo numero di settori di riserva (ad esempio 1.024 settori di riserva). Se il drive riconosce un settore come cattivo, smetterà di usarlo. Qualsiasi richiesta di leggere o scrivere su quel settore danneggiato sarà trasparentemente reindirizzata a un settore di riserva. Questa marcatura di un settore danneggiato, e la riallocazione dei suoi dati in un settore di riserva, è chiamata un Evento di riallocazione. E il numero totale di settori che sono stati riallocati (e quindi quanti dei vostri settori di riserva sono stati utilizzati) è il Conteggio dei settori riallocati.
In questo esempio da uno dei miei dischi rigidi, 64 settori sono stati trovati difettosi. Ciò significa che 64 dei settori di riserva del disco sono stati chiamati in uso:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
Su questo stesso disco rigido, ci sono stati 4 Eventi di riallocazione. Questo significa che ci sono state quattro occasioni in cui l'unità ha contrassegnato i settori come cattivi, e ha usato invece i settori di riserva.
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
E se non potesse mai leggere i dati?
Queste azioni di rilettura dei settori, consumando i settori di riserva, tutto alle spalle del computer è una buona cosa. Significa che il sistema operativo host non deve occuparsi del problema dei settori difettosi. L'unità stessa può gestire questi dettagli da sola.
Bonus Chatter : Ai vecchi tempi, il tuo hard disk veniva spedito con un adesivo attaccato ad esso. Questo adesivo conteneva la Lista dei difetti di fabbrica; la lista di tutti i punti difettosi conosciuti sul disco.
Se eseguivi una formattazione di basso livello del disco, dovevi usare uno strumento per digitare tutte le posizioni Cylinder-Head-Sector dei punti difettosi.
I drive SCSI hanno un comando, IOCTL_DISK_REASSIGN_BLOCKS
, per dire loro di riallocare un bad spot sul drive dopo che il sistema operativo lo ha rilevato. Nelle unità IDE tutto questo avviene automaticamente, senza il bisogno dell'intervento del sistema operativo.
Idealmente l'unità riconoscerebbe che il settore sta fallendo, sposterebbe i dati in un settore di riserva e non userebbe più il settore originale. Ma cosa succede se l'unità non è stata in grado di leggere il settore con successo?
Ecco cosa sono gli Pending Sectors
. L'unità ha rilevato che un settore sta fallendo e deve essere rimappato in un settore di riserva. Ma non può farlo finché non può leggere con successo i dati. Quando l'unità sa che un settore è difettoso e deve essere rimappato, ma non può ancora farlo perché sta aspettando di ottenere una buona lettura dal settore: questo è chiamato Pending Sector Count :
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
Il mio disco rigido ha 2 settori che l'unità riconosce come cattivi, ma non possono ancora essere riallocati. Se si dovesse leggere uno di questi ‘Pending sectors’, l'unità probabilmente riproverebbe (e riprovare, e riprovare), e alla fine restituirebbe un errore di lettura al sistema operativo host:
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
Rinuncia al settore in sospeso e verrà riallocato
Ci sono due modi in cui l'unità può finalmente riallocare il settore, e consumare un altro settore di riserva:
- finalmente ottiene una buona lettura
- non ti interessa più cosa c'è nel settore
Se l'unità legge finalmente il settore, allora sa che può riassegnare il settore.
L'altro modo in cui l'unità può riallocare il settore è se gli fate sapere che il contenuto di quel settore è irrilevante; che non vi interessa più cosa c'è dentro. Come si fa?
Scrivendo qualcosa di nuovo nel settore.
Ogni volta che leggete da, o scrivete su, un settore su un disco rigido, dovete leggere/scrivere l'intero settore1 da 512 byte. Non potete scrivere solo parte di un settore. Quando il sistema operativo scrive dati in un settore, deve specificare i 512 byte interi. Se dite al disco rigido che volete che questi nuovi contenuti sostituiscano questo settore difettoso, il disco sa che non vi interessa cosa c'è attualmente nel settore difettoso. Può quindi **Riallocare un settore difettoso in uno dei ricambi, e il settore non è più Pendente.
Ecco perché quando la gente chiede di Avendo alcuni Current Pending Sectors
, il consiglio comune è di usare uno strumento (come Data LifeGuard di Western Digital) per scrivere tutti gli zero sul disco.
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Scrivendo degli zeri su ogni settore del disco, si sta dicendo al disco che può finalmente riallocare tutti quei fastidiosi settori in sospeso. Dopo la cancellazione, tutti i vostri Pending Sectors
diventeranno Reallocated Sectors
:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Nota: Non è strettamente necessario usare uno strumento di “basso livello” come Data LifeGuard di Western Digital. Se ordinate a Windows di eseguire una formattazione completa (cioè non formattazione rapida) di un volume, esso scriverà degli zeri su ogni settore del volume.
Il sistema di archiviazione del sistema operativo supporta la marcatura dei settori come cattivi
Armati di questa conoscenza, esploreremo uno scenario comunemente confuso.
Prima dell'avvento dell’Integrated Drive Electronics (IDE), il sistema operativo host era responsabile di rilevare i settori danneggiati, riprovare la lettura, spostare i dati in un altro settore, e marcare i vecchi settori come danneggiati.
Se tu dovessi eseguire un chkdsk /r c:
usando il sistema operativo host, esso riconoscerebbe che i settori “pendenti” sono cattivi, e li segnerebbe come cattivi lui stesso, e non cercherebbe mai più di usarli:
>chkdsk c: /B
Quindi assumendo un disco rigido con 512 byte di settore, 12 KB di ‘Pending Sectors’ o in questo esempio 12KB segnati dal SO come ‘settori cattivi’, ciò corrisponderebbe al decimale 24 o all'esadecimale 0x18 come sarebbe mostrato da una S. M.A.R.T. come Crystal Disk Information:
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
Nota : L'utility Data LifeGuard v1.31 di Western Digital (ultima al 31/08/2017) non sembra mostrare correttamente i valori attuali del contatore S.M.A.R.T. ‘Raw’.
Ora se si esegue una formattazione completa (che scrive degli zeri su ogni settore del volume):
/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.
Questo significa che tutti quei settori che erano Pending
stanno per essere riallocati. Ora è sicuro per il sistema di archiviazione usare di nuovo quei settori. Per istruire il sistema di archiviazione che quei settori non sono più “cattivi”, si esegue un'opzione in cui esso rivaluta i settori cattivi:
dove la documentazione del comando dice
Or
Secondo https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
Questo era un sacco di roba scritta, e un sacco di screenshot, per qualcosa che non sarà mai letto.