¿Cómo recupero una partición BTRFS que no se monta?

La instalación para 12.04 siguió fallando, y la solución fue hacer que el instalador ignorara la partición btrfs que he estado usando anteriormente para / home.

Ahora que está instalado, he estado tratando de hacer que monte la partición btrfs para poder acceder a mis 70GB de archivos. No se montará, y btrfsck falla con las siguientes tres líneas:

parent transid verify failed on 31302336512 wanted 62455 found 62456 parent transid verify failed on 31302336512 wanted 62455 found 62456 parent transid verify failed on 31302336512 wanted 62455 found 62456 

¿Puede alguien decirme cómo hacer funcionar esta partición? He leído en línea que probablemente pueda recuperar los datos usando btrfs-restre, pero no puedo encontrar ese progtwig en ninguna parte.

La manera más fácil

 btrfs-zero-log /dev/sda5 

Está obteniendo ese problema porque una transacción (escritura o eliminación) está atascada en el registro de diario y el disco no coincide.

Cómo funciona:

Entonces, cuando los datos se escriben primero, se escriben en el diario, luego en el disco (o al mismo tiempo, pero el diario solo guarda los metadatos sobre la escritura siguiente; no estoy seguro … necesito más investigación sobre esa parte) …

De todos modos, si apaga el sistema en medio de este proceso de escritura / borrado o si realiza una operación de arranque del sistema (desmonte el USB que contiene el punto de assembly de btrfs), cuando vuelva a funcionar, el assembly no funcionará ( dmesg y btrfsck le mostrará los errores con más detalle) …

Mirando a dmesg verás esos mismos mensajes transidos.

Verás algo como esto:

 parent transid verify failed on 109973766144 wanted 1823 found 1821 

Significa que btrfs quería transif 1826 (que estaba en el diario) pero en el disco vio 1821. Así que el disco estaba a 2 transacciones de estar sincronizado con el diario. Personalmente, arriesgaría un registro brtfs-zero aquí solo porque son solo 2 transacciones. Pero para estar 100% seguro si esta es su única información (por cierto, si tiene información crítica NUNCA debe tener una sola copia, siempre tenga una copia / copia de seguridad en otra ubicación segura, culpar a los creadores de btrfs no justifique contra la propia falta de responsabilidad de las personas de no tener una copia de seguridad – btrfs no es una solución de copia de seguridad, es un sistema de archivos – nada es una verdadera solución de copia de seguridad, además de tener una copia de la misma en otro lugar – ni paridad ni unidades duplicadas, una verdadera copia de seguridad es sentado en algún lugar subterráneo en los Alpes mientras su copia activa está en su oficina en Texas)

 parent transid verify failed on 31302336512 wanted 62455 found 62456 

Aquí, el diario necesita 62455, pero el disco está por delante en 62456, por lo que en su caso, simplemente borraría el diario. El diario no actualizó esta vez. Nuevamente, le dije que estaba seguro, si es su única información y su mega crítica (vergüenza de usted), y yo haría las siguientes operaciones primero para estar seguro.

Ejecutar un btrfsck / dev / sda5 (que por cierto solo hace una comprobación de solo lectura por lo que es completamente seguro, sus únicas opciones de btrfsck de las que tiene que preocuparse) también le mostrará esos mensajes.

Pero ten cuidado si esos datos son críticos, primero lo haría (como dijeron los otros caballeros)

 mount -t btrfs -o rootflags=recovery,nospace_cache /dev/sda3 /mnt/sda3 mount -t btrfs -o rootflags=recovery,nospace_cache,clear_cache /dev/sda3 /mnt/sda3 mount -t btrfs -o recovery,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3 

Luego cp o rsync todos sus archivos a una ubicación segura, luego, cuando sea seguro, haga btrfs-zero-log, si es una operación exitosa, simplemente perdió una gran cantidad de tiempo en la copia de seguridad de su sistema (pero si no es exitoso, simplemente guardó su culo)

Luego, si los assemblys fallaron, realice una restauración btrfs (volcado del sistema, como entiendo que es una operación reanudable, sin embargo, sigue pidiendo Y o y de vez en cuando, así que mire la salida)

 btrfs restre /dev/sda5 /USB 

Luego, cuando esté seguro (cuando se realice la restauración de btrfs), realice el registro de btrfs-zero, si es una operación exitosa, simplemente perdió una gran cantidad de tiempo en la copia de seguridad de su sistema (pero si no tiene éxito, simplemente salvó su culo)

Puedes ejecutar la pantalla primero

 screen /bin/bash btrfs restre /dev/sda5 /USB 

NOTA LATERAL DE LA PANTALLA

Para separar (aún se ejecutará el comando): CONTROL-a, luego escriba “: separar” sin las comillas y luego presione ENTER

Otra forma de separar: luego cierre la masilla o su terminal y se separará (el comando / restaurar aún se ejecutará).

Para verificarlo, simplemente vuelva a verlo:

 screen -x 

screen -x se adjuntará a las sesiones, incluso si está desconectado, y a diferencia de -h dice, se adjuntará incluso si ya está adjunto)

Si tiene varias pantallas, screen -x le dirá que debe ser más específico para adjuntar a la sesión:

 screen -ls 

Es para enumerar todas las sesiones, fácil de recordar eso.

Para ver el PID también puedes hacer esto:

 ps aux | grep screen 

Una vez que descubras tu PID, ejecuta la pantalla de esta manera:

 screen -x PID 

Eso se adjuntará a una sesión específica. Puede tener varias sesiones / masillas conectadas a la misma pantalla (emitirán el mismo texto, puede escribir comandos en una y se reflejarán en la otra masilla)

Monte en el arranque usando las opciones de assembly de raíz fs:

 rootflags=recovery,nospace_cache 

o

 rootflags=recovery,nospace_cache,clear_cache 

La lista completa de opciones de assembly de btrfs debería estar aquí https://btrfs.wiki.kernel.org/index.php/Mount_options y otras cosas también pueden ser útiles, como noatime, nodatacow (solucioné un error en el kernel para que me diera una oportunidad de copiar mis archivos).

Agréguelo a su grub.cfg / menu.lst, o escríbalo al iniciar.

Las cosas de nospace_cache harán que las cosas sean terriblemente lentas. Simplemente inicie, espere (largo), apague y arranque normalmente.

Tuve lo mismo hace unos días, y lo anterior lo solucionó. Pero también después, hubo algunos problemas de espacio … el espacio reportado no es del 100%, pero aún se puede decir sin espacio.

==

Creo que también puedes agregar las mismas opciones en tu fstab, por ejemplo:

 UUID=0237alksfadg-lhdfkj3624-4fdfjb-9dsfe2d-dfddaf /home btrfs defaults,recovery,nospace_cache,clear_cache,[email protected] 0 2 

Si intentaba recuperar un directorio / home montado sobre una partición con UUID=0237alksfadg-lhdfkj3624-4fdfjb-9dsfe2d-dfddaf .

La respuesta de Peter me solucionó el problema, aunque no en Ubuntu. Tuve una partición /home btrfs’d que, por supuesto, se corrompió. El sistema no arrancaría porque estaba en fstab . Entré en el modo de mantenimiento, corté la línea con esa partición y arranqué normalmente (tenía una partición ext4 de repuesto que podía usar como /home ).

Monté la partición manualmente con el siguiente comando:

mount -t btrfs -o recovery,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3 y realmente pude guardar mis datos. Aunque no tardó tanto en montarlo. Así que GRACIAS Peter.

 mount -t btrfs -o ro,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3 

ro = solo lectura

Este trabajo para mi

Yo tuve el mismo problema. Después de reiniciar, ya no pude montar mi partición btrfs. Sin embargo, ninguna de las soluciones mencionadas aquí podría resolverlo.

Lo que me lo arregló fue actualizar el kernel de 3.10 a 3.12. Después de reiniciar la partición btrfs se podría montar de nuevo.