Respuesta corta: escriba algo nuevo para el sector (incluso ceros, lo que hace un formato largo).
Respuesta larga
Los discos duros de hoy intentan ocultar sectores defectuosos del equipo host. La computadora host simplemente le pide a la unidad que devuelva el contenido de un número de sector en particular. Normalmente, la unidad lee el sector, lo devuelve a la máquina host y todo está bien.
El disco duro sabe si el valor que lee es válido o no, porque utiliza un código de corrección de errores (ECC) para validar que el contenido que lee es correcto. Si la unidad detecta que el contenido del sector no es válido, volverá a intentar la lectura. La esperanza es que si simplemente lo lee nuevamente, podría obtener los contenidos correctos del sector. Continuará volviendo a intentarlo hasta que obtenga un buen valor, o llegue a su límite de tiempo (formalmente conocido como el límite de tiempo de finalización del comando, o CCTL ).
Durante estos reintentos, la unidad aparecerá muerta; ya que ya no responde a los comandos .
Sectores de repuesto
La mayoría de las unidades modernas contienen varios sectores "de repuesto" (por ejemplo, 1.024 sectores de repuesto). Si la unidad reconoce un sector como malo, dejará de usarlo. Cualquier solicitud de lectura o escritura en ese sector dañado se redirigirá de manera transparente a un sector libre. Este marcado de un sector defectuoso y la reasignación de sus datos a un sector libre se llama Evento de reasignación . Y el número total de sectores que se han reasignado (y cuántos de sus sectores de repuesto se han utilizado) es el recuento de sectores reasignado .
En este ejemplo de uno de mis propios discos duros, se descubrió que 64 sectores eran malos. Eso significa que se han puesto en uso 64 de los sectores de repuesto de la unidad:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
En este mismo disco duro, ha habido 4 eventos de reasignación . Esto significa que hubo cuatro ocasiones en las que la unidad marcó sectores como defectuosos y utilizó sectores de repuesto.
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
¿Qué pasa si nunca puede leer los datos?
Estas acciones de releer sectores, consumir repuestos, todo detrás de la computadora es algo bueno. Significa que el sistema operativo host no tiene que lidiar con el problema de los sectores defectuosos. El propio disco puede manejar esos detalles en sí mismo.
Chat extra : en los viejos tiempos, su disco duro se enviaba con una pegatina pegada. Esta pegatina contenía la Lista de defectos de fábrica ; la lista de todos los puntos malos conocidos en el disco.
Si realizó un formato de bajo nivel de la unidad, tuvo que usar una herramienta para escribir en todas las ubicaciones de los puntos defectuosos del cilindro- culata.
Las unidades SCSI tienen un comando IOCTL_DISK_REASSIGN_BLOCKS
para indicarles que reasignen un punto defectuoso en la unidad después de que el sistema operativo lo detecte. En las unidades IDE, todo esto ocurre automáticamente, sin la necesidad de intervención del sistema operativo.
Idealmente, la unidad reconocería que el sector está fallando, movería los datos a un sector libre y nunca volvería a usar el sector original. Pero, ¿qué sucede si la unidad no ha podido leer el sector con éxito?
Esto es lo que Pending Sectors
son. La unidad ha detectado que un sector está fallando y debe reasignarse a un repuesto. Pero no puede hacer eso hasta que pueda leer con éxito los datos. Cuando el disco sabe que un sector es malo y necesita ser reasignado, pero aún no puede hacerlo porque está esperando obtener una buena lectura del sector: eso se llama Recuento de sectores pendientes :
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
Mi disco duro tiene 2 sectores que el disco reconoce como defectuosos, pero aún no se pueden reasignar. Si tuviera que leer uno de estos 'sectores pendientes', es probable que la unidad vuelva a intentarlo (y vuelva a intentarlo, y vuelva a intentarlo), y eventualmente devolverá un error de lectura al sistema operativo host:
Renunciar al sector pendiente y se reasignará
Hay dos formas en que la unidad finalmente puede reasignar el sector y consumir otro sector de repuesto:
- finalmente consigue una buena lectura
- ya no te importa lo que hay en el sector
Si la unidad finalmente lee el sector, entonces sabe que puede reasignar el sector.
La otra forma en que la unidad puede reasignar el sector es si le hace saber que el contenido de ese sector es irrelevante; que ya no te importa lo que hay en él. ¿Cómo haces eso?
Al escribir algo nuevo para el sector.
Siempre que lea o escriba en un sector en un disco duro, debe leer / escribir todo el sector 1 de 512 bytes . No puede escribir solo una parte de un sector. Cuando el sistema operativo escribe datos en un sector, tiene que especificar los 512 bytes completos . Si le dice al disco duro que desea que estos nuevos contenidos reemplacen a este sector defectuoso, entonces la unidad sabrá que ni siquiera le importa lo que hay actualmente en el sector defectuoso. Luego puede reasignar un sector defectuoso a uno de los repuestos, y el sector ya no está pendiente .
Esta es la razón por la cual cuando las personas preguntan acerca de tener algunas Current Pending Sectors
, el consejo común es usar una herramienta (como Data LifeGuard de Western Digital) para escribir todos los ceros en la unidad.
Al escribir ceros en cada sector de la unidad, le está diciendo a la unidad que finalmente puede reasignar todos esos molestos sectores pendientes . Después de la toallita, toda su Pending Sectors
llegarán a ser 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: No es estrictamente necesario usar una herramienta de "bajo nivel" como Data LifeGuard de Western Digital. Si le indica a Windows que realice un formato completo (es decir, formato no rápido ) de un volumen, escribirá ceros en cada sector del volumen.
El sistema de archivos del sistema operativo admite marcar sectores como incorrectos
Armados con este conocimiento, exploraremos un escenario comúnmente confuso.
Antes del advenimiento de Integrated Drive Electronics (IDE), el sistema operativo host era responsable de detectar sectores defectuosos, reintentar las lecturas, mover datos a otro sector y marcar sectores antiguos como defectuosos.
Si chkdsk /r c:
tuviera que ejecutar un uso del sistema operativo host, reconocería que los sectores "pendientes" son incorrectos, y los marcaría como incorrectos, y nunca volvería a utilizarlos:
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Asumiendo un disco duro de sector de 512 bytes, 12 KB de 'Sectores pendientes' o, en este ejemplo, 12KB marcados por el sistema operativo como 'sectores defectuosos', eso correspondería al decimal 24 o hexadecimal 0x18, como lo mostraría una utilidad de disco SMART como la información del disco de cristal:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Nota : La utilidad Data LifeGuard v1.31 de Western Digital (la última a partir del 31/08/2017) no parece mostrar correctamente los valores actuales del contador SMART 'Raw'.
Ahora, si realiza un formato completo (que escribe ceros en cada sector del volumen) :
Eso significa que todos los sectores que Pending
iban a ser reasignados. Ahora es seguro para el sistema de archivo usar esos sectores nuevamente. Para indicarle al sistema de archivo que esos sectores ya no son "malos" , debe realizar una opción donde reevalúe los sectores defectuosos:
>chkdsk c: /B
donde dice la documentación del comando
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
O
De acuerdo con:
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.
Este fue un escrito Whole Lotta, y toda una lotta capturas de pantalla, algo que nunca va a ser leído.