¿Cómo forzar una reasignación de sectores informados en SMART C5 (Recuento de sectores pendientes actual)?

38

El valor SMART C5 de mi unidad de disco duro Samsung HM640JJ (en una computadora portátil HP Pavilion dv6) es "estado amarillo = precaución"

C5 tenía 10 ayer y hoy son 21.

C4 (Reallocation Event Count) = 0 y 05 (Reallocated Sectors Count) = 0

¿Cómo puedo forzar el firmware para reasignarlos?

  • Eliminé las particiones, las recreé de nuevo y formateé todo el disco.
  • corrí chkdsk /r /f
  • Ejecuté la utilidad de comprobación de disco del BIOS y otras herramientas de diagnóstico / reparación
edteke
fuente
Utilizo el disco de arranque spinrite6 en el nivel 2 para hacer esto ... grc.com/intro.htm
Moab

Respuestas:

118

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.

ingrese la descripción de la imagen aquí

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_BLOCKSpara 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 Sectorsson. 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:

ingrese la descripción de la imagen aquí

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.

ingrese la descripción de la imagen aquí

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 Sectorsllegará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) :

ingrese la descripción de la imagen aquí

Eso significa que todos los sectores que Pendingiban 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.

Ian Boyd
fuente
Tengo un archivo de 200 MB que tiene un problema al 87%. Tengo 3 sectores pendientes. Traté de hash el archivo para obtener buenas lecturas y reclamar sectores reasignados, ¡pero no se están reasignando! Resultados de hash: ok, falla, ok, ok, falla, falla. Cada vez que el sistema operativo generó varios errores de disco en el visor de eventos, y en los hash de acuerdo, se colgó durante medio minuto al 87%. Todos los hashes son iguales. C5 sigue siendo 3 y C4 sigue siendo 0. ¿Cuál es su opinión sobre esto?
Mark Jeronimus
@ MarkJeronimus Intente utilizar un limpiador de archivos, que escribirá todos los ceros (o todos los datos aleatorios) en el archivo. Eso debería hacer que la unidad se dé cuenta de que ya no te importan esos sectores.
Ian Boyd
Hice un formato completo, pero aún no hay cambio.
Mark Jeronimus
2
Una cosa que no entiendo muy bien: ¿es posible (a) muestra qué archivos contienen los sectores C5 actuales, y (b) 'nuclear' esos sectores, es decir, que se muevan a C6, y dejar de tratar de leerlos? No quiero que mi HDD se atasque en un ciclo interminable de lectura fallida; preferiría ocultar esos sectores y eliminar los archivos en cuestión (restaurarlos manualmente desde otra fuente si son importantes).
MM
1
Sin embargo, no quiero poner a cero toda la unidad, solo evite la parte mala. Echaré un vistazo a ese programa, gracias
MM
5

No necesitas hacer nada, todavía. El recuento de reasignación significa "el disco encontró un sector defectuoso y lo reasignó con éxito ". El firmware ya solucionó el problema.

Solo necesita saber que la unidad está comenzando a fallar. En algún momento en el futuro, la unidad no tendrá sectores libres para la reasignación y perderá datos. Si se pierde algún bloque importante, puede perder todos los datos en la unidad.

Esté atento a este valor o compre una nueva unidad de inmediato para que pueda olvidarse de ella.

Aaron Digulla
fuente
3

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 uso un informe inteligente y la fórmula para calcular el bloque defectuoso y uso dd para borrarlo. Tuve suerte porque Smart todavía informa un conteo actual del sector, pero el disco funciona desde hace aproximadamente 2 años. Compré un reemplazo pero nunca lo he usado. Me parece que la inteligencia tampoco es tan precisa.

Gigamegs
fuente
oflag = opción directa para dd al escribir ceros en ubicaciones incorrectas para forzar la reasignación (como se sugiere en ese enlace) era la parte que estaba buscando. ¡Gracias!
Anton
2

Quizás no conozcas esta herramienta: HD Sentinel

Hard Disk Sentinel (HDSentinel) es un software de monitoreo y análisis de SSD y HDD de múltiples sistemas operativos. Su objetivo es encontrar, probar, diagnosticar y reparar problemas de la unidad de disco duro, informar y mostrar el estado de SSD y HDD, degradaciones de rendimiento y fallas. Hard Disk Sentinel proporciona una descripción textual completa, consejos y muestra / informa la información más completa sobre los discos duros y los discos de estado sólido dentro de la computadora y en gabinetes externos (discos duros USB / discos duros e-SATA). Hay muchas alertas diferentes y opciones de informes disponibles para garantizar la máxima seguridad de sus valiosos datos.

Esto parece ser una gran herramienta para hacer tales acciones. Pero tenga cuidado, algunas opciones de ejecución pueden destruir completamente los datos.

Estevan TH.
fuente
1

Debe utilizar una herramienta que escriba en cada sector de la unidad. De lo contrario, no hay forma de hacerlo. Si la unidad asignó un sector de repuesto y se reasignó, ¿qué datos debería poner en el sector de repuesto? No tiene idea, ya que su intento de leer del sector existente fracasó. Solo una operación de escritura puede borrar el error.

David Schwartz
fuente
¿Formatear todo el disco duro es una operación de escritura para todos los sectores? Ya formateé la unidad (comando de formato basado en Windows, sin 'formato rápido'). Gracias
edteke
2
Un formato rápido no es una operación de escritura para todos los sectores, generalmente lo es un formato regular. Siempre puedes usar DBaN . ¿El formato regular al menos redujo el conteo?
David Schwartz
Hice un formato regular (no un formato rápido), esperaba la cuenta regresiva o una reasignación después del formato, pero el número era el mismo. Gracias
edteke
Eso es muy extraño, en realidad. ¿La partición que formateó tenía el tamaño de toda la unidad?
David Schwartz
@edgh: Un formato normal no ayuda cuando tienes ese error. Te sugiero que pruebes mi método.
Gigamegs
1

Escritura cero, también conocida como formato de bajo nivel. Por lo general, solo puede hacer esto con una utilidad de disco del fabricante. Si hay una falla en el disco duro que causa este error, puede volver casi de inmediato.

Chris Abbott
fuente
1

Pruebe los CD de arranque Spinrite 6 o HDD regenerator. Escriben pruebas de superficie, por lo que deberían eliminar los sectores defectuosos pendientes y aumentar el recuento reasignado.

danwat1234
fuente
0

Para agregar otra solución, recientemente utilicé Victoria para reparar 2 discos que fallaron con sectores pendientes, pero el disco no los reasignó automáticamente por sí solo.

Victoria es una interfaz gráfica de bajo nivel para su disco, e incluye (¡si realmente lo desea!) Edición byte a byte real del disco, forzar la reasignación del sector en caso de fallas, admite unidades USB y esos USB-2-sata baratos de China-bay adaptadores, cambie los atributos y características inteligentes configurados de fábrica, y más.

La desventaja: es desarrollado por un desarrollador ruso, y te dejo abrir la caja de Pandora si tienes problemas con ella ...

Con Victoria, tomé el primer sector que no se pudo reasignar, ejecuté un análisis de "Leer" de cada sector después de eso con una reasignación de fuerza. Luego ejecuté una "Verificación" de todo el disco, volví a ejecutar la comprobación inteligente y ahora está bien ...

... Pero tengo discos de repuesto, así que estoy en el proceso de cambiarlos ahora. ¡Esto fue un poco aterrador, ya que también estoy entre soluciones de respaldo, de todos los tiempos!

KolonUK
fuente