Solución:
Respuesta corta: Escriba algo nuevo en el sector (incluso ceros, lo que hace un formato largo).
Respuesta larga
Hoy en día, los discos duros intentan ocultar los sectores defectuosos de la computadora 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 los contenidos que lee son correctos. 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 vuelve a leer, podría obtener el contenido correcto del sector. Seguirá intentándolo hasta que obtenga un buen valor o haya alcanzado su límite de tiempo (formalmente conocido como Límite de tiempo de finalización del comando, o CCTL).
Durante estos reintentos, la unidad parecerá muerta; ya que ya no responde a los comandos.
Sectores de repuestos
La mayoría de las unidades modernas contienen una serie de “repuesto” sectores (por ejemplo, 1.024 sectores de repuesto). Si la unidad reconoce un sector como defectuoso, dejará de usarlo. Cualquier solicitud para leer o escribir en ese sector dañado se redirigirá de forma transparente a un sector de reserva. Este marcado de un sector defectuoso y la reasignación de sus datos a un sector de repuesto se denomina Evento de reasignación. Y el número total de sectores que se han reasignado (y por tanto, cuántos de sus sectores de repuesto se han utilizado) es el Reasignado el conteo del sector.
En este ejemplo de uno de mis propios discos duros, se encontró que 64 sectores estaban defectuosos. 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 en su lugar.
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 a espaldas de la computadora es algo bueno. Significa que el sistema operativo del host no tiene que lidiar con el problema de los sectores defectuosos. La propia unidad puede manejar esos detalles por sí misma.
Chat de bonificación: En los viejos tiempos, su disco duro se enviaba con una pegatina adherida. Esta pegatina contenía el Lista de defectos de fábrica; la lista de todos los puntos defectuosos conocidos en la unidad.
Si realizó un formateo de bajo nivel de la unidad, tuvo que usar una herramienta para escribir todos los Sector de culata de cilindro ubicaciones de los puntos malos.
Las unidades SCSI tienen un comando,IOCTL_DISK_REASSIGN_BLOCKS
, para indicarles que reasignen un lugar defectuoso en la unidad después de que el sistema operativo lo detecte. En las unidades IDE, todo esto sucede automáticamente, sin la necesidad de la intervención del sistema operativo.
Idealmente, la unidad reconocería que el sector está fallando, movería los datos a un sector de reserva y nunca volvería a usar el sector original. Pero, ¿qué sucede si la unidad no ha podido leer el sector correctamente?
Esto es lo que Pending Sectors
están. La unidad ha detectado que un sector está fallando y debe reasignarse a un repuesto. Pero no puede hacer eso hasta que pueda leer correctamente los datos. Cuando la unidad sabe que un sector es defectuoso 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 la unidad reconoce como defectuosos, pero que 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, finalmente, devuelva un error de lectura al sistema operativo host:
Renuncia al sector pendiente y será reasignado
Hay dos formas en que la unidad finalmente redistribuir 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 los contenidos de ese sector son irrelevantes; que ya no te importa lo que hay en él. ¿Cómo haces eso?
Escribiendo algo nuevo para el sector.
Siempre que lea o escriba en un sector de un disco duro, debe leer / escribir el completo Sector de 512 bytes1. No puedes escribir solo parte de un sector. Cuando el sistema operativo escribe datos en un sector, debe especificar la completo 512 bytes. Si le dice al disco duro que desea que estos nuevos contenidos reemplacen este sector defectuoso, el disco sabe que ni siquiera le importa lo que se encuentre actualmente en el sector defectuoso. Entonces puede Redistribuir un sector defectuoso a uno de los repuestos, y el sector ya no es Pendiente.
Por eso, cuando la gente pregunta por tener Current Pending Sectors
, el consejo común es utilizar 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 limpieza, todos tus Pending Sectors
se convertirá 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 utilizar una herramienta de “bajo nivel” como Data LifeGuard de Western Digital. Si instruye a Windows que realice una lleno formato (es decir, noRápido formato) de un volumen, escribirá ceros en cada sector del volumen.
El sistema de archivo del sistema operativo admite el marcado de sectores como defectuosos
Armados con este conocimiento, exploraremos un escenario comúnmente confuso.
Antes del advenimiento de electrónica de unidad integrada (IDE), el sistema operativo host era responsable de detectar sectores defectuosos, reintentar las lecturas, mover datos a otro sector y marcar los sectores antiguos como defectuosos.
Si tuviera que ejecutar un chkdsk /r c:
utilizando el sistema operativo host, reconocería que el “pendiente” Los sectores son malos, y los marcan como malos en sí mismos, y nunca intente utilizarlos de nuevo:
> C:Windowssystem32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Entonces, asumiendo un disco duro de sector de 512 bytes, 12 KB de ‘Sectores pendientes’ o, en este ejemplo, 12 KB 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 (más reciente al 31 de agosto de 2017) no parece mostrar correctamente los valores actuales del contador SMART ‘Raw’.
Ahora bien, si realizas un formato completo (que escribe ceros en todos los sectores del volumen):
Eso significa todos aquellos sectores que estaban Pending
van a ser reasignados. Ahora es seguro para el sistema de archivo volver a utilizar esos sectores. Para instruir al sistema de archivo que esos sectores ya no son “malo”, realizas una opción donde reevalúa malos sectores:
>chkdsk c: /B
donde dice la documentación del comando
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
O
Según: 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.
Esto fue un montón de escritura y muchas capturas de pantalla, para algo que nunca se leerá.
No es necesario que hagas nada, todavía. El recuento de reasignaciones significa “disco encontrado sector defectuoso y exitosamente reasignado “. El firmware ya solucionó el problema.
Solo debe tener en cuenta que la unidad está comenzando a fallar. En algún momento en el futuro, la unidad no tendrá sectores de repuesto para la reasignación y perderá datos. Si se pierde algún bloque importante, es posible que pierda todos los datos de la unidad.
Así que esté atento a este valor o compre una nueva unidad de inmediato para que pueda olvidarse de ella.
Tuve una buena experiencia con el método descrito aquí https://www.smartmontools.org/wiki/BadBlockHowto. Mi disco hacía ruido y dejaba de funcionar, así que utilizo el informe inteligente y la fórmula para calcular el bloque defectuoso y uso dd para borrarlo. Tuve suerte porque smart todavía está informando un recuento actual del sector, pero el disco funciona desde hace 2 años más o menos. Compré un reemplazo pero nunca lo usé. Me parece que inteligente tampoco es tan preciso.