17 votos

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

Cuando una comprobación SMART en un disco informa de un sector defectuoso, es importante poder identificar el archivo que tiene el sector defectuoso, y restaurarlo a partir de 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 hiciera un escaneo de la superficie del hardware (por debajo del nivel del SO, con los circuitos SMART de la unidad):

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

He mirado 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

Por lo tanto, un sector ya estaba marcado como malo, y 9 fueron marcados para ser reemplazados desde el espacio del sector "en espera". 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) a la que se "tradujo" este número:

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

La partición comenzaba en el sector 32. Entonces, el sector malo era...

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

...con un desplazamiento de 591363141 sectores desde el inicio de la partición.

Ahora podría encontrar qué archivo estaba "manchado":

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

El tamaño de bloque de este sistema de archivos EXT3 era 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) corresponde 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 he restaurado ese archivo desde mis copias de seguridad.

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

30voto

TechZilla Puntos 998

Sé que tienes un FS NTFS, y ejecutas Windows en ese FS. No sé si "podrías" boot un Linux en vivo para trabajar en ese controlador o no.

Si puede boot Linux desde un CD o USB, puedes usar ntfsprogs. mira -

ntfscluster 

ntfsinfo 

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

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: