¿Cómo montar / recuperar datos en un disco que era parte de una incursión mdadm 1 en otra máquina?

17

Algunos antecedentes

  • El disco en sí fue "trabajado" por un amigo y se dice que todavía está intacto, no está dañado y aún se puede montar / recuperar
  • El disco era parte de una incursión de software 1 en Ubuntu 12.04
  • El otro disco en la incursión original 1 fue formateado y utilizado para otro propósito, dejando el disco actual (el en cuestión) técnicamente parte de una incursión que ya no existe

Lo que ya he probado

  • Montaje básico

    • Agregué una entrada a fstab, marqué el disco como ext3 / ext4 e intenté montarlo.
    • Al montar, aparece el siguiente error

      wrong fs type, bad option, bad superblock on

    • Y en dmesg

      EXT4-fs (sdc1): VFS: Can't find ext4 filesystem

  • He intentado encontrar el tipo de sistema de archivos del disco y se me ocurrió

    $sudo file -s /dev/sdc
    /dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8

Donde necesito ayuda / Mis preguntas

  • ¿Hay alguna forma de convertir el disco a ext4 sin dañar los datos?
  • ¿Hay una manera simple de montar el disco de tipo de archivo Linux 83 y recuperar los datos?
  • Actualmente tengo otro disco libre en caso de que sea posible reconstruir la incursión de alguna manera
  • Mi objetivo principal es recuperar los datos del disco. Estoy abierto a todas las opciones.

Actualizar

Salida de algunos comandos

  • fdisk -l / dev / sdc

    $fdisk -l /dev/sdc

    Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
    255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0005ed9c

    Device Boot Start End Blocks Id System
    /dev/sdc1 63 1953520064 976760001 83 Linux

  • archivo -s / dev / sdc1

    $file -s /dev/sdc1
    /dev/sdc1: data

  • hexdump -C -n 32256 / dev / sdc (No estoy seguro si esto podría ayudar o no)

    $hexdump -C -n 32256 /dev/sdc`
    00000000  fa b8 00 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |................|
    00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
    00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
    00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
    00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
    00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001b0  00 00 00 00 00 00 00 00  9c ed 05 00 00 00 00 fe  |................|
    000001c0  ff ff 83 fe ff ff 3f 00  00 00 82 59 70 74 00 00  |......?....Ypt..|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00007e00
    
Adán
fuente
El problema es que la partición cree que tiene algún volumen de incursión y no un ext4fs. Y el núcleo tiene razón. Sin embargo, como fue una incursión 1, resulta ser un ext4fs. A mount -f ext4 /dev/sdc1 /mountpointdebería hacer el truco. Hacer que mount asuma ext4 en lugar de buscar un sistema de archivos es lo que hace -f
Bananguin
1
El montaje forzado no da ningún error, pero el punto de montaje está en blanco. O los datos se han ido o el montaje no funcionó como se esperaba. Hacer un dfme muestra que el disco recién montado tiene un uso del 2%, que es significativamente menor de lo esperado.
Adam
@ user1129682, si mount dice que no es ext4, entonces no lo es ... intentar forzarlo no va a ayudar.
psusi
@psusi: funcionó para mí. La respuesta de Gilles explica por qué funciona en algunas circunstancias
Bananguin
@Bananguin ¿No quieres decir mount -t ext4? La bandera -f es para montaje 'falso' (ubuntu 14.04).
Quantum7

Respuestas:

11

Esto funciona excelentemente en Ubuntu 14.04:

sudo -i
mdadm --assemble --scan

Conseguirás:

mdadm: /dev/md/1 has been started with 1 drive (out of 2)

Luego monte y vea sus archivos:

cd /mnt && mkdir to-restore-md1 && mount /dev/md1 to-restore-md1
ls -la to-restore-md1
vchepurnov
fuente
Estaba obteniendo "existe pero no es una matriz de md" en un disco duro fallido que era parte de una matriz ... y esto funcionó mejor que todas las otras sugerencias. Montado con éxito, ocupado copiando datos ahora mismo.
Zayne S Halsall
Esta opción funcionó bien para mí. 2 SSD de Intel en RAID1. Sacó uno y esclavizó el puerto SATA a la PC con suse linux. Inicialmente aparece como solo /dev/sdcy como /dev/md127. Luego hizo lo mdadm --assemble --scanque resultó en /dev/md/Volume0_0p1y /dev/md/Volume0_0p2así sucesivamente correspondientes a 4 particiones que estaban en el disco. P2 era el que necesitaba, mkdir /p2 seguido de un mount /dev/md/Volume0_0p2 /p2montaje que era EXT3 y puedo acceder y copiar fácilmente los datos. También lo montó como lectura-escritura.
ron
¡me has alegrado el día! ¡Gracias!
Gooshan
a veces, el --scanmodo no inicia las matrices con discos faltantes, en mi caso aquí tuve que detener la matriz autoensamblada y comenzar de nuevo conmdadm --assemble --force /dev/md/1 /dev/sdc1
BrunoJCM
7

Linux mdraid tiene varios formatos de metadatos . Los formatos 0.9 y 1.0 colocan los metadatos al final del dispositivo contenedor, y la carga útil (el sistema de archivos) comienza al comienzo del dispositivo y se puede acceder directamente sin pasar por la capa de incursión. Los formatos 1.1 y 1.2 colocan los metadatos en el medio y al comienzo del dispositivo contenedor respectivamente, por lo que la carga útil está en un desplazamiento.

El instalador de Ubuntu crea volúmenes con el formato de metadatos 1.2, por lo que sus datos comienzan después de los metadatos en lugar de al principio del dispositivo.

La forma más sencilla de acceder a esos datos es ensamblar el dispositivo raid. En un volumen RAID-1, un solo dispositivo es suficiente.

madadm -A /dev/sdc1

(Detente aquí a menos que te guste el dolor).

También puede acceder a los datos en un desplazamiento. El único punto que puedo ver para hacer esto es si tiene que trabajar en un núcleo muy antiguo que no admite formatos 1.x mdraid. Primero, determine el desplazamiento mdadm -E /dev/sdc1: busque la línea Data Offset : SSS sectors. Un sector mdadm tiene 512 bytes.

sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1

En la desesperación, con formatos 1.x, el desplazamiento de datos se almacena en bytes 128-135 de los metadatos, little-endian¹. 1.2 metadatos son 4096 bytes después del comienzo del dispositivo.

También puede cambiar la tabla de particiones para que comience aún más. Ten mucho cuidado con tu aritmética. Solo haga eso si desea seguir usando el disco a largo plazo en un sistema antiguo que no puede acceder al dispositivo raid.

¹ ¿ O con endianness de plataforma? No estoy seguro.

Gilles 'SO- deja de ser malvado'
fuente
los datos pueden comenzar en diferentes desplazamientos (ver mdadm -E /dev/sdc1dónde exactamente) pero ciertamente no en 4k para 1.2 metadatos, ya que 4k es precisamente donde se almacenan los metadatos. Ver también unix.stackexchange.com/q/57477/22565
Stéphane Chazelas
@StephaneChazelas Vaya, sí, pedo cerebral. Gracias.
Gilles 'SO- deja de ser malvado'
3
mdadm -A /dev/sdc1salidas mdadm: device /dev/sdc1 exists but is not an md array.He ido un poco más allá para usar mdadm y ver si hay alguna información adicional ... mdadm --misc --examine /dev/sdc1salidas mdadm: No md superblock detected on /dev/sdc1.. ¿Hay alguna manera de reescribir los superbloques en este disco para marcarlo como un disco disponible para el ensamblado RAID?
Adam
@Gilles A me mdadm -E /dev/sdcdevuelve lo siguiente: /dev/sdc: MBR Magic : aa55 Partition[0] : 1953520002 sectors at 63 (type 83) pero no hay información para / dev / sdc1
Adam
1
@ Adam Si mdadm no puede encontrar sus metadatos, no hay nada que puedas hacer allí: no puedes obligarlo a hacer algo ya que no sabe qué hacer. Debe buscar un sistema de archivos, y si el consejo de psusi no conduce a ninguna parte, el panorama es sombrío. Tal vez un hexdump de los primeros kilobytes del disco podría inspirar a alguien (tenga en cuenta que podría exponer algunos datos confidenciales).
Gilles 'SO- deja de ser malvado'
5

Para mi sorpresa, pude / soy capaz de recuperar los datos simplemente usando foremost .

La ayuda recibida aquí fue invaluable. Después de probar una variedad de combinaciones sugeridas, así como mis propios complementos, el método ideal (montar y usar el disco normalmente) ya no parecía una opción. Recurrir a la recuperación de datos es mi solución en este caso.

Adán
fuente
Me doy cuenta de que esto fue hace un tiempo! Pero, ¿recuerdas si pudiste usar primero sin montar la partición?
PhillipOReilly
Lo siento, ya no recuerdo los detalles de esto. : /
Adam
3

Parece que ya has eliminado el superbloque mdadm. Si solía estar allí y tenía el formato 1.1 o 1.2, lo más probable es que el sistema de archivos esté en el desplazamiento 2048 sectores. Puede ejecutar e2fsck /dev/sdc1?offset=2048para forzarlo a buscar el sistema de archivos a partir de ese desplazamiento. Si lo encuentra, puede modificar su tabla de particiones para señalar dónde se inicia realmente el sistema de archivos. Puede usar parted /dev/sdcy el unit scomando para usar unidades de sectores. printEn la tabla, observe el sector inicial y final, luego rmla partición, luego vuelva a crearla mkparty use el mismo sector final, pero agregue el desplazamiento al sector inicial.

Si 2048 no funciona, también puedes probar 1985.

psusi
fuente
Ejecutar e2fsck /dev/sdc1?offset=2048salidas (también ejecuté offset = 1985) Bad magic number..Superblock invalid..., así como sugerir que el superbloque está dañado e intentar ejecutar e2fsck con un superbloque alternativo. Parece que debería proporcionarle un superbloque alternativo para avanzar.
Adam
@ Adam, no, solo necesitas obtener el desplazamiento correcto. testdiskdebería poder hacer un escaneo detallado y arreglar la tabla de particiones por usted.
psusi
testdiskEs un territorio completamente nuevo para mí. Un programa básico de ejecución (Analizar) No ext2, JFS, Reiser.. marker. Bad relative sector. No partition is bootable.También proporciona lo siguiente: 1 P Linux 0 1 1 121600 254 63 1953520002¿Cómo puedo entender eso para ayudar a la situación?
Adam
@ Adam, nunca lo he usado yo mismo, solo sé que se supone que es capaz de escanear y encontrar el superbloque. Lo ejecutaste en todo el disco, no en la partición, ¿verdad?
psusi
Después de ejecutar un análisis en el disco completo, no apareció ninguna partición. Actualmente ejecuta una exploración profunda ahora. Si esto no muestra nada, no estoy seguro de a dónde ir desde aquí.
Adam