Obtener archivos de XFS con un tamaño de bloque de 64 kb

9

He estado en una misión para recuperar archivos de uno de mis 2 discos NAS perfectamente encriptados, no corruptos y que funcionaban perfectamente en RAID 1. El NAS era Patriot Javelin S4, que (como descubrí en mi investigación ) utiliza el controlador de incursión falsa Promise Fasttrack.

La información es muy escasa sobre esto, por lo que para los googlers en la misma situación aquí hay algunos datos sobre este NAS:

  • Controlador RAID: Promise FastTrack (FakeRaid)
  • Sistema de volumen: LVM2
  • Sistema de archivos: XFS con un tamaño de bloque de 64 kb (65536 bytes)
  • Arco: procesador AMCC PowerPC de 800 MHz, 256 MB de RAM (gracias a la investigación de Matthew)

Solo tenía una computadora con Windows 10 y MacOS cuando hacía esto, y no encontré ningún software capaz de montar XFS en el volumen LVM2 (con una excepción, más sobre esto a continuación). Tuve que sacar mi viejo netbook Acer Aspire One e instalar cachorro Linux en él (específicamente sabor lxpup).

En puppy linux logré montar este sistema de archivos usando una herramienta llamada dmraid. Esta herramienta tiene una forma de montar un volumen pdc, que es su id para Promise FastTrack. Una vez que logré saltar algunos aros para montarlo, obtuve acceso al sistema de archivos XFS real, y para mi consternación, resultó ser un tamaño de bloque de 64 kb.

Aquí es donde comencé a buscar en Google cosas como "leer xfs 64kb tamaño de bloque" y no llegar a ninguna parte. Solo unas pocas respuestas que dicen: "Linux no puede leer tamaños de bloque mayores a 4kb, a menos que parches el núcleo". No tengo idea de cómo parchear el kernel, y estoy desconcertado de que no haya ningún tipo de emulación para permitir esto.

Mencioné 1 excepción entre las aplicaciones que no pueden leer esta partición en Win / Mac. Esa excepción fue ufsexplorer. Es una aplicación de $ 100, fue capaz de mostrarme sin problemas los archivos. Copié algunos archivos demostrando que funciona, pero la versión de prueba solo permite copiar archivos pequeños.

Me niego a creer que no exista una herramienta gratuita de código abierto de cualquier nivel de complejidad que no pueda ayudarme a leer 64kb xfs.

Mi pregunta es: ¿alguien sabe de alguna herramienta de este tipo? Se agradece cualquier instrucción específica sobre cómo obtener los datos utilizando una o más herramientas, o parches del kernel, u otra cosa (gratis).

Un punto más: preferiría no tener que crear imágenes locales de estas unidades (a menos que sea la única forma). Después de todo, son 2 TB de datos, es posible que no tenga tanto espacio.

PD: Si hay un Linux conocido que puedo instalar en mi Acer que puede leer 64kb xfs, esa también es una solución viable.

Actualización 1 : Acabo de enterarme de https://www.cgsecurity.org/wiki/TestDisk . Podría valer la pena intentarlo. Informaré una vez que haya tenido tiempo de probarlo.

Actualización 2 : TestDisk parece reconocer la presencia de la partición XFS, pero no estoy seguro de cómo proceder desde allí. No veo una manera de extraer un archivo, así que lo abandoné por ahora y probé el enfoque qemu en la respuesta de Matthew.

Max Chernyak
fuente
Veo dos soluciones, construyo tu propio kernel personalizado o crea una imagen con tu partición xfs e intento abrirlo bajo windows por fs-driver.org
Alexander Tolkachev
@AlexanderT Hola, gracias por responder. ¿Algún enlace sobre kernel personalizado? Además, ¿hay alguna manera de clonar la unidad en la unidad de mi Mac mientras se convierte el sistema de archivos sobre la marcha? Y para ser claros: tengo la unidad NAS conectada a través del convertidor SATA -> USB, por lo que puedo conectarla directamente a Windows o Mac sin hacer una imagen.
Max Chernyak
Pruebe y vea si xfsdump ayuda.
Marciano
> resultó ser un tamaño de bloque de 64kb. Explique cómo llegó a esta conclusión, por favor
poige
1
Veo. Bueno, lo que preferiría por estar en tu lugar es escribir en la lista de correo correspondiente: xfs.org/index.php/XFS_email_list_and_archives
poige

Respuestas:

8

He investigado un poco tu problema. No es fácil pero parece factible.

El área del código que lo rompe es la siguiente (bueno, en los núcleos más nuevos): fs/xfs/libxfs/xfs_sb.c

271         /*
272          * Until this is fixed only page-sized or smaller data blocks work.
273          */
274         if (unlikely(sbp->sb_blocksize > PAGE_SIZE)) {
275                 xfs_warn(mp,
276                 "File system with blocksize %d bytes. "
277                 "Only pagesize (%ld) or less will currently work.",
278                                 sbp->sb_blocksize, PAGE_SIZE);
279                 return -ENOSYS;
280         }

Básicamente requiere que el tamaño del bloque XFS sea al menos igual al tamaño de página del sistema.

Esto significa dos cosas.

  1. Esta es una solución alternativa de un error que anteriormente no se conocía.
  2. El tamaño de página del sistema originalmente era de 64k.

Fui y verifiqué un kernel realmente viejo (EL4) y esa restricción anterior todavía estaba allí. Esto significa que básicamente no es factible hacer lo que desea hacer en su arquitectura (x86).

Dado que proporcionó el nombre del NAS, busqué en Google y descubrí esto: http://www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/

Lo que implica que usa una CPU PPC.

El hardware de Javelin es más que capaz de manejar roles adicionales. Es esencialmente un sistema Linux integrado con un procesador PowerPC AMCC de 800 MHz y 256 MB de RAM.

De hecho, en los núcleos PowerPC se pueden construir para usar páginas de 64k o páginas de 4k. Esto explicaría por qué el bloque es de 64k y también por qué no puede ejecutar el sistema de archivos en su máquina, donde antes funcionaba en su propio NAS.

Si desea intentar abrir el sistema de archivos, creo que su mejor opción es ejecutar una instancia de máquina virtual en un hipervisor usando PPC64LE (creo que esa es la arquitectura real de esa CPU), Fedora construye su PPC64LE con 64k páginas.

https://alt.fedoraproject.org/alt/

Puedes usar qemu para hacer esto. Este tipo parece dar algunas instrucciones (no probadas) sobre cómo harías para hacer esto.

https://rwmj.wordpress.com/tag/ppc64le/

A partir de ahí, exponga directamente los discos en la VM y haga su dmraid / lvm / mount normal para acceder a la unidad.

Matthew Ife
fuente
Informaré tan pronto como haya tenido tiempo de analizar el enfoque qemu. Parece muy esperanzador, aprecio el tiempo que dedicas a este Matthew.
Max Chernyak
Actualmente estoy astuto tratando de correr virt-builder fedora-25 --arch ppc64le -o fedora-25-ppc64le.img. Estoy en linux y obtengo "supermin: no se pudo detectar el administrador de paquetes utilizado por este sistema o distribución".
Max Chernyak
Usa una distribución de fedora para hacerlo.
Matthew Ife
Todavía no he tenido la oportunidad de terminar este intento, pero te estoy dando la recompensa. Espero poder seguir haciendo seguimiento mientras estoy trabajando para lograrlo.
Max Chernyak
@hakunin Pude formatear y montar un sistema de archivos xfs de 64 kb en una arquitectura ppc64le como te sugerí que hicieras a principios de esta semana, así que sé que esto funcionará.
Matthew Ife