Manière la plus simple
btrfs-zero-log /dev/sda5
Vous obtenez ce problème car une transaction (écriture ou suppression) est bloquée dans le journal du journal et le disque ne le correspond pas.
Comment ça fonctionne:
Ainsi, lorsque les données sont écrites en premier, elles sont écrites dans le journal puis sur le disque (ou en même temps, mais le journal enregistre simplement les métadonnées sur l'écriture à venir - pas sûr ... besoin de plus de recherches sur cette partie) ...
Quoi qu'il en soit , si vous désactivez le système au milieu de cette écriture / supprimer ou faire quelque chose hickups le système (démonter le câble USB qui contient vos Btrfs point de montage), puis quand il revient qui montent ne fonctionnera pas , il échouera ( dmesg et btrfsck volonté vous montrer les erreurs dans plus de détails) ...
En regardant vous dmesg verrez ces mêmes messages TRANSID.
Vous verrez quelque chose comme ceci:
parent transid verify failed on 109973766144 wanted 1823 found 1821
Cela signifie que btrfs voulait transif 1826 (c'était sur le journal) mais sur le disque il a vu 1821. Donc, le disque était à 2 transactions d'être synchronisé avec le journal. Personnellement, je risquerais un brtfs-zero-log ici simplement parce que ce ne sont que 2 transactions. Mais pour être sûr à 100% s'il s'agit de vos seules données (au fait, si vous avez des données critiques, vous ne devriez JAMAIS en avoir qu'une seule copie, ayez toujours une copie / sauvegarde dans un autre endroit sûr - blâmer les créateurs de btrfs ne serait pas justifier contre le manque de responsabilité des personnes de ne pas avoir de sauvegarde - btrfs n'est pas une solution de sauvegarde, c'est un système de fichiers - rien n'est une vraie solution de sauvegarde en plus d'en avoir une copie ailleurs où - pas même la parité ou les lecteurs en miroir, une vraie sauvegarde est assis quelque part sous terre dans les Alpes tandis que sa copie active est dans votre bureau au Texas)
parent transid verify failed on 31302336512 wanted 62455 found 62456
Ici, le journal manque 62455 mais le disque est en avance à 62456, donc dans votre cas, je voudrais simplement effacer le journal. Le journal n'a pas été mis à jour cette fois. Encore une fois, je vous ai dit d'être sûr, si ce sont vos seules données et son méga critique (honte à vous), et je ferais d'abord les opérations ci-dessous pour être sûr.
L'exécution d'un btrfsck / dev / sda5 (qui, soit dit en passant, effectue uniquement une vérification en lecture seule pour que ce soit complètement sûr, ses seules options btrfsck dont vous devez vous soucier) vous montrera également ces messages.
Mais méfiez-vous si ces données sont critiques, je le ferais d'abord (comme l'ont dit les autres hommes)
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
Ensuite, cp ou rsync tous vos fichiers vers un emplacement sûr, puis en toute sécurité, faites le btrfs-zero-log, si c'est une opération réussie, vous venez de perdre beaucoup de temps à sauvegarder votre système (mais si ce n'est pas réussi, vous venez d'enregistrer votre cul)
Ensuite, si les montages ont échoué, effectuez une restauration btrfs (vidage du système, si je comprends bien, c'est une opération pouvant être reprise, mais il continue de demander Y ou y de temps en temps, alors regardez la sortie)
btrfs restore /dev/sda5 /USB
Ensuite, lorsque la sécurité est terminée (lorsque la restauration de btrfs est terminée), effectuez le btrfs-zero-log, si c'est une opération réussie, vous venez de perdre beaucoup de temps à sauvegarder votre système (mais si cela ne réussit pas, vous venez de sauvegarder votre cul)
Vous pouvez d'abord exécuter l'écran
screen /bin/bash
btrfs restore /dev/sda5 /USB
NOTE CÔTÉ ÉCRAN
Pour détacher (la commande sera toujours exécutée): CONTROL-a puis tapez ": détacher" sans les guillemets puis appuyez sur ENTREE
Une autre façon de se détacher: Fermez ensuite le mastic ou votre terminal et il se détachera (la commande / restauration s'exécutera toujours).
Pour vérifier, revenez simplement dessus:
screen -x
screen -x s'attachera aux sessions, même s'il est détaché, et contrairement à -h dit, il s'attachera même s'il est déjà attaché)
Si vous avez plusieurs écrans, screen -x vous indiquera que vous devez être plus spécifique pour attacher à la session:
screen -ls
ls pour lister toutes les sessions, facile à retenir.
pour voir le PID, vous pouvez également le faire:
ps aux | grep screen
Une fois que vous avez trouvé votre PID, lancez l'écran comme ceci:
screen -x PID
Cela se rattachera à une session spécifique. Vous pouvez avoir plusieurs sessions / puttys attachés au même écran (ils produiront le même texte, vous pouvez taper des commandes dans une, et elles seront reflétées sur l'autre putty)
nospace_cache
?La réponse de Pierre a résolu le problème pour moi, mais pas sur Ubuntu. J'ai eu une
/home
partition btrfs'd qui a obtenu naturellement corrompu. Le système ne démarre parce qu'il étaitfstab
. Je suis entré dans le mode d'entretien, HASHED la ligne avec cette partition, et démarrais normalement (j'avais une partition ext4 libre , je pouvais utiliser comme/home
).J'ai monté la partition manuellement avec la commande suivante:
mount -t btrfs -o recovery,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3
et a effectivement pu enregistrer mes données. Bien qu'il n'a pas fallu longtemps pour le monter. Alors MERCI Peter.la source
ro = lecture seule
Ce travail pour moi
la source
J'ai eu le même problème. Après un redémarrage, je ne pouvais plus monter ma partition btrfs. Cependant, aucune des solutions mentionnées ici n'a pu le résoudre.
Ce qui a résolu le problème pour moi, c'était la mise à niveau du noyau de 3.10 à 3.12. Après un redémarrage, la partition btrfs peut être à nouveau montée.
la source