GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo encontrar el desplazamiento de un sistema de archivos Ext4?

Tengo un disco duro defectuoso que no puede escribir ni leer los primeros sectores del disco. Simplemente da errores de E/S y eso es todo lo que hay. Hay otras áreas en el disco que parecen estar (en su mayoría) bien.
Estoy tratando de montar una partición (ext4) y ver si puedo acceder a algunos archivos que me gustaría recuperar. Desde el mount El comando admite un offset opción, debería poder montar el sistema de archivos aunque la tabla de particiones no se pueda leer ni escribir. El problema es cómo encontrar el desplazamiento. Ninguna de las herramientas ext4 parece tener esta función en particular.

Respuesta aceptada:

No hay un desplazamiento estándar per se, ya que, por supuesto, puede iniciar la partición donde lo desee. Pero supongamos por un momento que está buscando la primera partición y que se creó más o menos aceptando los valores predeterminados. Entonces, hay dos lugares donde puede encontrarlo, suponiendo que esté usando una tabla de particiones tradicional de DOS:

  1. Empezando en el sector 63 (512 bytes). Esta fue la tradición durante mucho tiempo y funcionó hasta que a alguien se le ocurrieron discos 4K...
  2. A partir del sector 2048 (512 bytes). Esta es la nueva tradición, para acomodar discos 4K.
  3. ¡Una opción adicional! Comenzando en el sector 56. Esto es lo que sucede si alguien mueve la partición de inicio 63 para alinearla con un sector 4K.

Ahora, para continuar, querrá elegir su herramienta de volcado hexadecimal favorita y aprender un poco sobre el diseño del disco ext4. En particular, comienza con 1024 bytes de relleno, que ext4 ignora. Luego viene la supermanzana. Puede reconocer el superbloque comprobando el número mágico 0xEF53 en el desplazamiento 0x38 (desde el inicio del superbloque, o 0x438 desde el inicio de la partición, o 1080 en decimal). El número mágico es little-endian. Así que en realidad está almacenado en el disco como 0x53EF.

Esto es lo que parece con xxd -a :

0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
*
0000400: 0040 5d00 0084 7401 33a0 1200 33db a600 [email protected]]...t.3...3...
0000410: 4963 5300 0000 0000 0200 0000 0200 0000 IcS.............
0000420: 0080 0000 0080 0000 0020 0000 6637 0952 ......... ..f7.R
0000430: 6637 0952 0200 1600 53ef 0100 0100 0000 f7.R....S.......
0000440: 9938 f851 004e ed00 0000 0000 0100 0000 .8.Q.N..........

Tenga en cuenta que cuando proporciona el desplazamiento para montar (o perder), debe proporcionar el desplazamiento donde comienza el relleno, no el superbloque.

Relacionado:¿No encuentras las notificaciones de YouTube sobre los comentarios?

Ahora, si no es la primera partición, o si no está en uno de los dos (tres) lugares esperados, básicamente puedes buscar el número mágico 0xEF53. Esto es lo que testdisk (recomendado en un comentario) hace por ti.


Linux
  1. Cómo crear un sistema de archivos en una partición o volumen lógico de Linux

  2. ¿Cómo encontrar el tamaño de inodo de un sistema de archivos ext2/ext3/ext4?

  3. ¿Cómo averiguo qué está utilizando todo el espacio en mi partición /?

  4. ¿Cómo encontrar el tamaño de una partición desmontada en Linux?

  5. ¿Cómo encuentro el UUID de un sistema de archivos?

Cómo encontrar la versión de Redhat Linux instalada

Cómo cambiar el UUID de la partición en el sistema de archivos de Linux

Cómo encontrar el tipo de sistema de archivos montado en Linux

¿Cómo mover la partición Ext4 delante de la partición de arranque?

¿Cómo cambiar el esquema de partición en su servidor Linux?

Android - ¿Cómo encontrar el nombre de ruta de la partición de intercambio en la tarjeta SD?