BTRFS:他のツリールートに切り替えることは可能ですか?


2

BTRFSパーティションが破損した

mount -o usebackuproot ...

動作しません:

[ 9252.141767] BTRFS info (device dm-1): trying to use backup root at mount time
[ 9252.141779] BTRFS info (device dm-1): disabling disk space caching
[ 9252.141784] BTRFS info (device dm-1): has skinny extents
[ 9252.184586] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.186302] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.186306] BTRFS warning (device dm-1): failed to read tree root
[ 9252.186729] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.187091] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.187094] BTRFS warning (device dm-1): failed to read tree root
[ 9252.187372] BTRFS error (device dm-1): parent transid verify failed on 7777213923328 wanted 100335 found 89750
[ 9252.187589] BTRFS error (device dm-1): parent transid verify failed on 7777213923328 wanted 100335 found 89750
[ 9252.187592] BTRFS warning (device dm-1): failed to read tree root
[ 9252.187948] BTRFS error (device dm-1): parent transid verify failed on 7777188921344 wanted 100334 found 100336
[ 9252.188281] BTRFS error (device dm-1): parent transid verify failed on 7777188921344 wanted 100334 found 100336
[ 9252.188284] BTRFS warning (device dm-1): failed to read tree root
[ 9252.188661] BTRFS error (device dm-1): parent transid verify failed on 7260661022720 wanted 100333 found 96460
[ 9252.189025] BTRFS error (device dm-1): parent transid verify failed on 7260661022720 wanted 100333 found 96460
[ 9252.189029] BTRFS warning (device dm-1): failed to read tree root
[ 9252.236361] BTRFS: open_ctree failed

BTRFSチェック どちらも動作しません:

btrfs check /dev/mapper/media
parent transid verify failed on 7777276116992 wanted 100336 found 89751
parent transid verify failed on 7777276116992 wanted 100336 found 89751
parent transid verify failed on 7777276116992 wanted 100336 found 89751
parent transid verify failed on 7777276116992 wanted 100336 found 89751
Ignoring transid failure
Couldn't setup extent tree
Couldn't open file system

私が使用できる木の根ブロックをいくつか見つけました。」 btrfsの復元 ":

btrfs restore -t 8889016483840 -D -i -v /dev/mapper/media /dev/null | wc -l
2264442

しかし、私はここで問題を抱えています。私のbtrfsストレージは非常に大きく、それは20TBを超えています、そして私はそれをバックアップして復元するためにそのようなサイズのスペアディスクを持っていません。再フォーマットせずに、そのようなファイルシステムを修復したり、所定のツリールートブロックに「インプレース」で切り替えることは可能ですか?

回答:


1

まず、有効なスーパーブロックがあることを確認してください。

btrfs rescue super-recover -v <device>

つかいます:

btrfs find-root <device>

修復に使うのに最適な木の根を見つける

  1. ルートノードは最高レベルを持つべきです
  2. 世代が高いほど、そのルートを使用してfsを回復できる可能性が高くなります。

注:エラーメッセージには、 wanted ログ内の世代です。 found 木の根に基づく世代です。

次のコマンドから最もクリーンな出力を見つけます。

btrfs check --tree-root <block> --super <sup>

どこで:

  • <sup> どちらかです 01 または 2
  • <block> によって与えられる btrfs find-root (注意: しない マニュアルには書かれていますが、ブロックサイズを掛ける <bytenr>

その後、次のようにファイルシステムを修復します。

btrfs check --repair --tree-root <block> --super <sup>

の追加に注意してください --repair 実際にファイルシステムを変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.