btrfsを修正するにはどうすればよいですか?[閉まっている]


9

私はメーリングリストを調べて、ようやくUbuntuのbtrfsページを読み終えましたが、完全な修正ユーティリティがbtrfs まだない(ホームページに示されているように)と感じてます。数か月前であっても、OracleのLinuxのデフォルトになる予定で、多くのディストリビューションに含まれています。

それで、その代わりに、どこに修正するかについてのトラブルシューティングガイドがありますbtrfsか?

それが失敗した場合、バックアップをFSの上にコピーすると問題が修正されますか?(スペースが必要な場合はスナップショットを削除しますか?それとも破損を削除しますか?)代わりに、以前のスナップショットに戻してから、不足しているファイルをバックアップから復元する必要がありますか?または、@および@homeスナップショットから欠落しているファイルを復元しますか?

:これは一般的な質問です。私は(今のところ)正確なFS問題を意図的に省略しています。一般的な/正規のワークフローとトラブルシューティングガイドを見つけたい。

(OK、OK -ここではいくつかのだより詳細;))

ハングしたシャットダウン中に電源を切ったところ、システムが不安定になりました。システムは、十分なデータを書き込んでフリーズするまで、しばらくの間起動して実行します。前回、Thunderbirdを開いたところです。これらはより多くのハードリセットとおそらくより多くの破損を必要とします。 sudo btrfsck /dev/sda1いくつかのエラーの間で振動する-多くの場合、フォームの最初の時間

root 338 inode 7861227 errors 1000
root 338 inode 7904568 errors 1000
root 338 inode 7955174 errors 400
found 46242054144 bytes used err is 1
total csum bytes: 43112400
total tree bytes: 2074640384
total fs tree bytes: 1889853440
btree space waste bytes: 547680627
file data blocks allocated: 110756974592
 referenced 68393684992
Btrfs Btrfs v0.19

oooo、今は本当にフルーティーなgetty parent transid verify failedです。

parent transid verify failed on 14266105856 wanted 464223 found 464221
parent transid verify failed on 14266105856 wanted 464223 found 464221
Extent back ref already exists for 14261530624 parent 0 root 256 
leaf parent key incorrect 14261751808
bad block 14261751808
Extent back ref already exists for 66455355392 parent 0 root 2 
Extent back ref already exists for 66455257088 parent 0 root 2 
Extent back ref already exists for 14257274880 parent 0 root 2 
block 14262571008 rec extent_item_refs 2, passed 2
block 14262575104 rec extent_item_refs 1, passed 1
block 14262579200 rec extent_item_refs 1, passed 1
Extent back ref already exists for 14262579200 parent 0 root 257 
leaf 14263906304 items 50 free space 132 generation 464224 owner 2
fs uuid 7d049403-cf6e-4b52-a624-32051e1f5b2a
chunk uuid be6f8f93-320c-4465-85d6-f53907698c32
item 0 key (14263341056 EXTENT_ITEM 4096) itemoff 3944 itemsize 51
    extent refs 1 gen 464168 flags 2
    tree block key (8332576 1 0) level 0
    tree block backref root 257
item 1 key (14263345152 EXTENT_ITEM 4096) itemoff 3893 itemsize 51
    extent refs 1 gen 464168 flags 2
    tree block key (8332586 c 8332543) level 0
    tree block backref root 257
failed to find block number 14263525376

(もちろん、すべて要約されています。私はこれらの詳細であなたを圧倒したくありませんでした:))

そして今、私の最後の実行は私に馴染みのあるものを残しています:

parent transid verify failed on 14265458688 wanted 464230 found 464221
parent transid verify failed on 14265458688 wanted 464230 found 464221
parent transid verify failed on 14265458688 wanted 464230 found 464223
btrfsck: root-tree.c:46: btrfs_find_last_root: Assertion `!(path->slots[0] == 0)' failed.

、オプションのランダムエラーを最後に含めます。ああ幸せな喜び。verify failedデータがドライブに書き込まれると、これらは変更されることに注意してください。

別のランダムなエラー:

btrfsck: disk-io.c:412: find_and_setup_root: Assertion `!(!root->node)' failed.

2
これは制限が多すぎるようです。実際の問題を投稿してください。難読化しても誰にも役立ちません。
クリスダウン

私は最近試してみることにし、新しいシステムのルートで使用しました。Macineはハードリセットされました(質問しないでください)。そのとき、btrfsのfsckが不完全であることがわかりました。それはそうかもしれとしてうわー、私はそれはクールとして、ルートファイルシステムのオプションだったことを信じることができない
barrymac

私は約7か月間私の鉱山をうまく利用しています。私が実際にこの問題にぶつかる頃には、適切なfsckに近づいているはずだと考えました(これは、私が "実験"する方法を考えると避けられませんでした...)
Stephen

1
あら。破損につながるいくつかのアクティビティ(linux、btrfs、または外部アクションa-laパワーカットのいずれか)に「問題」を同一化するのは遠すぎますか?不幸なユーザーがファイルシステムを扱うときに遭遇する他の意味のある問題は何ですか?はい、100%最良の単語の選択ではありませんが、「欠けている」という単語を含むコメントを保証するわけではありません。Linuxが(btrfsと同様に)主流になりつつあり、初心者がいることを覚えておいてください(私はそうではありません)。では、「@ ChrisDownなので、btrfsの合理的なトラブルシューティングガイドはないと思います」
Stephen

1
トラブルシューティングガイドが必要な場合は、それを確認する必要があります(あいまいではありません)。不幸なユーザーがそのような言い回しを使用するかどうかに基づいてガイドを求めることは、質問をするのに悪い方法のように思えます...
Chris Down

回答:


6

答えを助けるために:

親transidの検証が14265458688で失敗しました464230が見つかりました464221が見つかりました

以下で修正できます:

$ btrfs-zero-log DEVICE

注:データが失われる可能性があります!最初に試してマウントしてください:

$ mount -t btrfs -o recovery,nospace_cache,clear_cache DEVICE MOUNTPOINT

「悪いfs」と言うようなデータをマウントできない場合:

$ btrfs restore DEVICE DIRECTORY_TO_DUMP_DATA_TO

これは、彼の解決策を明確にするために私が送信した、実際の、追跡は困難な電子メールです。うまくいけば、この不可解な説明を理解できるでしょう。

メールの抜粋

再:質問:このパーティションを回復するにはどうすればよいですか?(論理$ hugenum len 4096が見つかりません)

Hugo Mills carfax.org.uk>の書き込み:

2013年8月26日01:10:54 PM -0600に、Chris Murphyは次のように書いています。

2013年8月26日午前11時41分、Nick Lee nickle.es>は次のように書いています。

数日前にIRCに関する議論がありましたが、ツリールートのブロコの問題は、ディスク自体またはチャンクツリー/論理マッピングの問題の結果である可能性が高いとされています。チャンクリカバリを実行し、検出されたエラーを確認して、書き込みにヒットしました。(失敗した場合は、photorecを実行し、副作用として組織が失われることになっていました。)

明日のフライトが明日着いたら、もっと明確に書けます。

私は、さまざまな手法をいつ使用するかについて興味があります:-o recovery、btrfsck、chunk-recover、zero log。

物理デバイスに障害がないと仮定しましょう(これは別のツールセットです-mount -odegraded、btrfs dev del missing)。

最初にすることは、ファイルシステムのbtrfs-image -c9 -t4を取得し、出力のコピーを保持してjosefを表示することです。:)

次に、ほとんどすべての-orecoveryと-oro、recoveryから始めます。

これらが失敗した場合は、ログツリーに関連するエラーがないかdmesgを調べてください。これが破損していて読み取りができない(またはクラッシュが発生する)場合は、btrfs-zero-logを使用してください。

チャンクツリーに問題がある場合(最近見たのは「アドレスをマップできません」など)だけだった場合、チャンクリカバリが役立つ可能性があります。

その後、おそらくbtrfsckが次に試すことになります。オプション-s1、-s2、-s3が成功した場合、btrfs-select-superはスーパーブロックを機能するものに置き換えることで役立ちます。それが役に立たない場合は、btrfsck --repairに戻ってください。

最後に、破損したエクステントツリーがある場合、btrfsck --repair --init-extent-treeが必要になることがあります。最後に、チェックサムが破損している場合は、-init-csum-treeがあります。

ヒューゴ。


また、ユニットが突然オフになったときに発生するトランザクション(書き込みまたは削除)があると、一時的な問題が発生します。起動時に特定の値が返されることを期待しますが、そのトランザクションがディスクに書き込まれた場合(ただし、ログにのみ記録され、場合によってはディスク上にある場合)、これらのエラーが発生します。464230を期待していたが、9つのトランザクションのように古い464221を取得したことに注意してください。 。
コスボス2014年

私は答えを提供することに対して報酬を与えなければなりませんが、それが有効かどうかはわかりません-私は単純なニーズ(信頼性、およびディスク上のできるだけ多くのメディアを詰め込むことができる必要があるため)からbtrfsから離れました。
Stephen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.