De sector defectuoso a "archivo dañado": ¿lo hice para Linux / ext3, puedo hacerlo para Windows / NTFS?

17

Cuando una verificación SMART en un disco informa un sector defectuoso, es importante poder identificar el archivo que tiene el sector defectuoso y restaurarlo desde las copias de seguridad. A continuación, muestro cómo hice esto para mi servidor Linux / ext3 VMWARE, pero ¿alguien sabe si esto se puede hacer para Windows / NTFS?

Así es como lo hice para Linux / ext3: primero le pedí a la unidad que escaneara la superficie del hardware (por debajo del nivel del sistema operativo, con los circuitos SMART en la unidad):

vserver:~# smartctl -t long /dev/sdc

Miré los resultados:

vserver:~# smartctl -a /dev/sdc
...
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       9
...
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     27679         591363172

Entonces, un sector ya estaba marcado como malo, 9 fueron marcados para ser reemplazados desde el espacio del sector "provisional". Más importante aún, la primera dirección de bloque lógico (LBA) que es ilegible, fue 591363172.

Encontré la partición (y el desplazamiento dentro de ella) que este número "tradujo" a:

vserver:~# fdisk -lu /dev/sdc
Device Boot      Start         End      Blocks   Id  System
/dev/sdc1           32   976773119   488386544   83  Linux

La partición comenzó en el sector 32. Entonces, el sector malo fue ...

vserver:~# bc -l
591363172-32+1
591363141

... en un desplazamiento de 591363141 sectores desde el comienzo de la partición.

Ahora podría encontrar qué archivo fue "alojado":

vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size:               4096

El tamaño del bloque de este sistema de archivos EXT3 fue de 4096 bytes, por lo que el sector defectuoso destruyó este bloque en el sistema de archivos:

vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000

Y el número de bloque (73920392) correspondía a este archivo:

vserver:~# debugfs
debugfs 1.41.3 (12-Oct-2008)
debugfs:  open /dev/sdc1
testb 73920392
debugfs:  testb 73920392
Block 73920392 marked in use
debugfs:  icheck 73920392
Block           Inode number
73920392        18472967
debugfs:  ncheck 18472967
Inode           Pathname
18472967        /path/to/filewithbadsector

Y restauré ese archivo de mis copias de seguridad.

¿Existe un procedimiento equivalente que pueda seguir para Windows / NTFS?

ttsiodras
fuente
FYI: el recuento pendiente actual de 9 significa que hay 9 sectores defectuosos, no solo uno. La autoprueba extendida simplemente se detiene en la primera que encuentra. Antes de restaurar desde la copia de seguridad, también debe tratar con el sector defectuoso escribiendo ceros con él dd. Esto obligará a la unidad a repararla o reasignarla.
psusi
Sí, tienes razón. Después de la restauración, hice otra comprobación INTELIGENTE y descubrí que todo estaba bien, por lo que la escritura del archivo aparentemente escribió sobre los sectores defectuosos 9 + 1 (y el área de preparación proporcionó sustitutos). ¿Pero qué hay de Windows? :-)
ttsiodras
Creo que su cálculo para el desplazamiento del sector en una partición es incorrecto. Los números de sector (aparte del físico, también conocido como CHS) están todos basados ​​en cero, ya que el sector 32 es el sector de partición 32-32 == 0, no 1.
Sorprendentemente, nadie ha dicho esto todavía en una pregunta de más de un año: cuando empiezas a ver sectores defectuosos en el disco, significa que tienes tantos que la reasignación interna automática de bloques defectuosos del disco ya no puede compensar. En lugar de restaurar desde copias de seguridad a una unidad agotada , debe reemplazar la unidad y restaurarla a la nueva unidad.
voretaq7

Respuestas:

7

Sé que tiene un NTFS FS y ejecuta ventanas en ese FS. No sé si "podría" arrancar un Linux en vivo para trabajar en ese controlador o no.

Si puede arrancar Linux desde un CD o USB, puede usar ntfsprogs. mirar -

ntfscluster 

ntfsinfo 

Creo que ntfscluster te dice qué archivo almacena un clúster en particular. Espero que esto te ponga en la dirección correcta.

JM Becker
fuente
Encontré esta publicación en el foro que tiene un contenedor de utilidad para hacer esto en diferentes sistemas de archivos, y también usa ntfscluster. ubuntuforums.org/showthread.php?t=1943721
Lethargy
Sí, función ddrutility: encuentra los archivos relacionados con sectores defectuosos, también puede usar un archivo con una lista de sectores, tal vez podríamos usar "badblocks -nvs" + "ddrutility"
diyism