Risposta breve: scrivi qualcosa di nuovo nel settore (anche zeri, cosa che fa un formato lungo).
Risposta lunga
I dischi rigidi oggi cercano di nascondere settori danneggiati dal computer host. Il computer host richiede semplicemente all'unità di restituire i contenuti di un determinato numero di settore. Normalmente l'unità legge il settore, lo restituisce al computer host e tutto va bene.
Il disco rigido sa se il valore letto è valido o meno, poiché utilizza il codice di correzione errori (ECC) per convalidare che i contenuti letti siano corretti. Se l'unità rileva che i contenuti del settore non sono validi, ritenterà la lettura. La speranza è che se lo rilegge semplicemente, potrebbe ottenere i contenuti del settore corretti. Continuerà a riprovare fino a quando non ottiene un buon valore o non viene raggiunto il limite di tempo (formalmente noto come limite di tempo di completamento del comando o CCTL ).
Durante questi tentativi, l'unità apparirà morta; in quanto non risponde più ai comandi .
Settori di riserva
Le unità più moderne contengono numerosi settori "di riserva" (ad es. 1.024 settori di riserva). Se l'unità riconosce un settore come difettoso, smetterà di usarlo. Qualsiasi richiesta di lettura o scrittura in quel settore danneggiato verrà reindirizzata in modo trasparente a un settore di riserva. La delimitazione di un settore danneggiato e la riallocazione dei suoi dati in un settore di riserva è chiamata Evento di riallocazione . E il numero totale di settori che sono stati riallocati (e quindi quanti dei tuoi settori di riserva sono stati esauriti ) è il conteggio dei settori riallocato .
In questo esempio tratto da uno dei miei dischi rigidi, 64 settori sono risultati difettosi. Ciò significa che 64 dei settori di riserva dell'unità 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 . Ciò significa che ci sono state quattro occasioni in cui l'unità ha contrassegnato i settori come danneggiati e ha invece utilizzato 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 riuscisse mai a leggere i dati?
Queste azioni di rilettura di settori, consumo di ricambi, tutto dietro la schiena del computer è una buona cosa. Significa che il sistema operativo host non deve affrontare il problema dei settori in fallimento. L'unità stessa può gestire questi dettagli.
Bonus Chatter : ai vecchi tempi, il tuo disco rigido veniva spedito con un adesivo fissato su di esso. Questo adesivo conteneva l' elenco dei difetti di fabbrica ; l'elenco di tutti i punti negativi noti sul disco.
Se si è eseguito un formato di basso livello dell'unità, è stato necessario utilizzare uno strumento per digitare tutte le posizioni cilindro-testa-settore dei punti difettosi.
Le unità SCSI hanno un comando IOCTL_DISK_REASSIGN_BLOCKS
per dire loro di riallocare una posizione errata sull'unità dopo che il sistema operativo l'ha rilevata. Nelle unità IDE tutto ciò avviene automaticamente, senza la necessità di intervento del sistema operativo.
Idealmente, l'unità dovrebbe riconoscere che il settore non funziona, spostare i dati in un settore di riserva e non utilizzare mai più il settore originale. Ma cosa succede se l'unità non è stata in grado di leggere correttamente il settore?
Questo è quello che Pending Sectors
sono L'unità ha rilevato che un settore non funziona e deve essere rimappato. Ma non può farlo finché non riesce a leggere correttamente i dati. Quando l'unità sa che un settore è danneggiato e deve essere rimappato, ma non può ancora farlo perché è in attesa di ottenere una buona lettura dal settore: si chiama Conteggio settori in sospeso :
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 difettosi, ma non può ancora essere riallocato. Se dovessi leggere uno di questi "settori in sospeso", è probabile che l'unità riprovi (e riprovi, e riprova) e alla fine restituisca un errore di lettura al sistema operativo host:
Rinuncia al settore in sospeso e verrà riallocato
Esistono 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à finalmente legge il settore, allora sa che può riallocare il settore.
L'altro modo in cui l'unità può riallocare il settore è se gli fai sapere che i contenuti di quel settore sono irrilevanti; che non ti interessa più cosa c'è dentro. Come si fa a farlo?
Scrivendo qualcosa di nuovo per il settore.
Ogni volta che leggi o scrivi su un settore su un disco rigido, devi leggere / scrivere l' intero settore 1 a 512 byte . Non sei in grado di scrivere solo una parte di un settore. Quando il sistema operativo scrive i dati in un settore, deve specificare l' intero 512 byte. Se dici al disco rigido che vuoi che questi nuovi contenuti rimpiazzino questo settore danneggiato, allora l'unità saprà che non ti interessa nemmeno ciò che è attualmente nel settore danneggiato. Può quindi riallocare un settore danneggiato in uno dei pezzi di ricambio e il settore non è più in sospeso .
Questo è il motivo per cui quando le persone chiedono di averne alcuni Current Pending Sectors
, il consiglio comune è quello di utilizzare uno strumento (come Data LifeGuard di Western Digital) per scrivere tutti gli zero sull'unità.
Scrivendo zeri in tutti i settori del disco, stai dicendo al disco che può finalmente riallocare tutti quei fastidiosi settori in sospeso . Dopo la pulizia, tutto ciò Pending Sectors
che diventerai 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
Nota: non è strettamente necessario utilizzare uno strumento di "basso livello" come Data LifeGuard di Western Digital. Se si indica a Windows di eseguire un formato completo (ovvero un formato non rapido ) di un volume, questo scriverà zero in ogni settore del volume.
Il sistema di archiviazione del sistema operativo supporta la marcatura dei settori come non valida
Forti di questa conoscenza, esploreremo uno scenario comunemente confuso.
Prima dell'avvento di Integrated Drive Electronics (IDE), il sistema operativo host era responsabile del rilevamento di settori danneggiati, riprovare a leggere, spostare i dati in un altro settore e contrassegnare i vecchi settori come negativi.
Se dovessi eseguire un chkdsk /r c:
utilizzo del sistema operativo host, riconoscerebbe che i settori "in sospeso" sono danneggiati e li contrassegnerebbe come non validi, senza mai tentare di riutilizzarli:
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Supponendo quindi un disco rigido settoriale da 512 byte, 12 KB di 'Settori in sospeso' o, in questo esempio, 12 KB contrassegnati dal sistema operativo come 'settori danneggiati', che corrisponderebbe a 24 decimali o 0x18 esadecimali, come mostrato da un'utilità del disco SMART come Crystal Disk Information:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Nota : l'utilità Data LifeGuard v1.31 di Western Digital (aggiornata al 31/08/2017) non sembra mostrare correttamente i valori del contatore SMART "Raw" correnti.
Ora se esegui un formato completo (che scrive zeri in ogni settore del volume) :
Ciò significa che tutti quei settori che sarebbero stati Pending
riallocati. Ora è sicuro che il sistema di archiviazione riutilizzi tali settori. Al fine di indicare al sistema di archiviazione che quei settori non sono più "cattivi" , si esegue un'opzione in cui rivaluta i settori danneggiati:
>chkdsk c: /B
dove dice la documentazione del comando
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
O
Secondo:
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.
Questo è stato un sacco di sceneggiature, e un sacco di schermate, per qualcosa che non verrà mai letto.