Respuesta corta: Escribir 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 al ordenador central. El ordenador central simplemente pide a la unidad que devuelva el contenido de un número de sector concreto. Normalmente, la unidad lee el sector, lo devuelve a la máquina anfitriona y todo está bien.
El disco duro sabe si el valor que lee es válido o no, porque la unidad utiliza el 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 de nuevo, podría obtener el contenido correcto del sector. Seguirá reintentando hasta que obtenga un buen valor, o hasta que haya alcanzado su límite de tiempo (formalmente conocido como Límite de tiempo de finalización de comandos, o CCTL _).
Durante estos reintentos, la unidad parecerá muerta; ya que no responde a los comandos .
Sectores de reserva
La mayoría de las unidades modernas contienen un número de sectores “de reserva” (por ejemplo, 1.024 sectores de reserva). Si la unidad reconoce un sector como malo, dejará de utilizarlo. Cualquier solicitud de lectura o escritura en ese sector dañado será redirigida 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 han sido reasignados (y por tanto cuántos de sus sectores de repuesto han sido utilizados) es el Cuento de sectores reasignados.
En este ejemplo de uno de mis discos duros, se encontraron 64 sectores defectuosos. Esto significa que 64 de los sectores libres de la unidad han sido llamados a ser utilizados:
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 malos y utilizó sectores de reserva 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 no se pueden leer los datos?
Estas acciones de relectura de sectores, consumiendo repuestos, todo a espaldas del ordenador es algo bueno. Significa que el sistema operativo anfitrión no tiene que ocuparse del problema de los sectores que fallan. La propia unidad puede manejar esos detalles por sí misma.
Charla de bonificación : Antiguamente, el disco duro se entregaba con una pegatina pegada. Esta pegatina contenía la Lista de defectos de fábrica; la lista de todos los puntos malos conocidos de la unidad.
Si se realizaba un formateo de bajo nivel de la unidad, había que utilizar una herramienta para teclear todas las ubicaciones del Sector de Cabeza de Cilindro de los puntos malos.
Las unidades SCSI tienen un comando, IOCTL_DISK_REASSIGN_BLOCKS
, para decirles que reasignen un punto malo en la unidad después de que el sistema operativo lo detecte. En las unidades IDE todo esto ocurre automáticamente, sin necesidad de que intervenga el sistema operativo.
Lo ideal sería que la unidad reconociera que el sector está fallando, moviera los datos a un sector de reserva y no volviera a utilizar el sector original. Pero, ¿qué ocurre si la unidad no ha podido leer el sector con éxito?
Esto es lo que son los Pending Sectors
. La unidad ha detectado que un sector está fallando, y necesita ser reasignado a un repuesto. Pero no puede hacerlo hasta que pueda leer los datos con éxito. Cuando la unidad sabe que un sector es malo, y necesita ser reasignado, pero no puede hacerlo todavía porque está esperando a obtener una buena lectura del sector: eso se llama el Cuento 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 malos, pero que aún no pueden ser reasignados. Si leyera uno de estos “sectores pendientes”, la unidad probablemente reintentaría (y reintentaría, y reintentaría), y finalmente devolvería un error de lectura al sistema operativo anfitrión:
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
Abandona el sector pendiente y se reasigna
Hay dos formas en las que la unidad puede finalmente reasignar el sector, y consumir otro sector de reserva:
- finalmente consigue una buena lectura
- ya no le 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 haces saber que el contenido de ese sector es irrelevante; que ya no te importa lo que hay en él. ¿Cómo se hace eso?
Escribiendo algo nuevo en el sector.
Cada vez que lees o escribes en un sector de un disco duro, tienes que leer/escribir el sector entero de 512 bytes1. No se puede escribir sólo parte de un sector. Cuando el sistema operativo escribe datos en un sector, tiene que especificar los enteros 512 bytes. Si le dices al disco duro que quieres que estos nuevos contenidos sustituyan a este sector defectuoso, el disco sabe que no te importa lo que hay actualmente en el sector defectuoso. Entonces puede Reasignar un sector defectuoso a uno de los repuestos, y el sector ya no está Pendiente.
Por eso, cuando la gente pregunta por Al tener algunos 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.
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Al escribir ceros en todos los sectores de la unidad, le está diciendo a la unidad que por fin puede reasignar todos esos molestos sectores pendientes. Tras el borrado, todos tus Pending Sectors
se convertirán en Reallocated Sectors
:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Nota: No es estrictamente necesario utilizar una herramienta de “bajo nivel” como Data LifeGuard de Western Digital. Si le indica a Windows que realice un formato completo (es decir, que no sea un formato rápido) de un volumen, escribirá ceros en todos los sectores del volumen.
El sistema de archivos del SO soporta marcar sectores como malos
Armados con este conocimiento, exploraremos un escenario comúnmente confuso.
Antes de la llegada de la Educación de Unidades Integradas (IDE), el sistema operativo anfitrión era responsable de detectar los sectores malos, reintentar las lecturas, mover los datos a otro sector y marcar los sectores antiguos como malos.
Si se ejecutara un chkdsk /r c:
con el sistema operativo anfitrión, éste reconocería que los sectores “pendientes” son malos, y los marcaría como malos él mismo, y no volvería a intentar usarlos:
>chkdsk c: /B
Así que suponiendo un disco duro de 512 bytes de sector, 12 KB de “Sectores Pendientes” o en este ejemplo 12KB marcados por el SO como “sectores malos”, eso correspondería al decimal 24 o al hexadecimal 0x18 como se mostraría con una S. M.A.R.T. como Crystal Disk Information:
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
Nota : La utilidad Data LifeGuard v1.31 de Western Digital (la más reciente al 31 de agosto de 2017) no parece mostrar correctamente los valores actuales del contador S.M.A.R.T. ‘Raw’.
Ahora si realiza un formato completo (que escribe ceros en cada sector del volumen):
/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.
Eso significa que todos esos sectores que eran Pending
van a ser reasignados. Ahora es seguro que el sistema de archivo vuelva a utilizar esos sectores. Para indicarle al sistema de archivo que esos sectores ya no son “malos”, se realiza una opción en la que se revalúan los sectores malos:
donde la documentación del comando dice
O
Según https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
Esto fue un montón de escritura, y un montón de capturas de pantalla, para algo que nunca será leído.