BTRFSブロックを変更するには?

BTRFSブロックを変更するには?

不明な理由でBTRFSファイルシステムが破損しています。 dmesg 印刷

BTRFS critical (device sda2): corrupt leaf, slot offset bad: block=43231330304,root=1, slot=47

(dmesgトレースで1000倍以上)。

ブロック#43231330304を修正する方法は?

答え1

あなたはインストールする必要がありますインテリジェントモニタリングツールそして長いテストをしてみてください(時間がかかります)

#smartctl -t long /dev/sd?

その後、不良ブロックでは失敗します。

Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       80%       682         1193046

これにより、ブロックのLBAアドレス(1193046)を取得できます。

次にインストールします。sg_utils上記のlbaアドレスを使用して実行します。

# sg_verify --lba=1193046 /dev/sda

次のような回答が届きます。

# sg_verify --lba=1193046 /dev/sdb
verify (10):  Fixed format, current;  Sense key: Medium Error
 Additional sense: Unrecovered read error
  Info fld=0x123456 [1193046]
  Field replaceable unit code: 228
  Actual retry count: 0x008b
medium or hardware error, reported lba=0x123456

これにより、セクタが実際に不良であり、ディスクマイクロコントローラの障害リストに自動的に配置できないことがわかります。

次のコマンドを使用して、障害のリストを確認できます。

# sg_reassign --grown /dev/sda
>> Elements in grown defect list: 0

セクターを再配置する場合

# sg_reassign --address=1193046 -v /dev/sda

次に、追加された欠陥のリストを確認します。

# sg_reassign --grown /dev/sdb
>> Elements in grown defect list: 1

カウンターが1ずつ増えるのがわかります。

その後、実行する必要があります

#smartctl -t long /dev/sd?

ディスクがきれいになり、長いテストがエラーなしで実行されるまで、このプロセスをやり直してください。

この場合は、Steamライブラリなどの重要ではない作業にこのディスクを使用します。しかし、ディスクを交換するかどうかを確認するためでした。しかし、今はディスクは大丈夫でしょう。

答え2

障害のあるハードドライブ(不良ブロックなど)で問題が発生した場合は、回復できません。

不良ブロックを確認してください。 badblocks -n /dev/sdX

破損したファイルについては、次をご覧ください。BTRFSブロックのファイル部分を一覧表示するには?

答え3

ランニングを提案しないでください。

btrfs check --repair

問題の原因が何であるかわからず、これが最後のオプションである必要がない場合は、この時点でバックアップを実行する必要があります。

マニュアルページには次の内容が記載されています。

--repair警告:開発者や経験豊富なユーザーが推奨しない限り、fsckがすべての種類のファイルシステムの破損を正常に修復できないことを認識してから使用してください。例えば。他のソフトウェアまたはハードウェアの障害により、ボリュームが重大に破損する可能性があります。

答え4

BTRFS開発者は、BTRFSに関連する(比較的深刻な)問題についてIRCまたはlinux-btrfsメーリングリストを介して連絡することをお勧めします。BTRFS Wiki FAQ: Btrfsファイルシステムに問題があります!:

より質問FAQ一般的な問題と解決策この
ページが役に立たない場合は、IRCに投稿してみてください。Btrfsメーリングリスト
明確にしてください:くださいバグや問題をメーリングリストに報告してください。(誰かいいえ購読が必要です)。

バラよりBtrfsメーリングリストメーリングリストに投稿する方法とヘルプを要求するときに含める必要がある情報の詳細。

私の場合、「Corrupted Leaf」エラーに対する最も簡単な解決策は、影響を受けたファイルに重要な内容が含まれていないため、そのファイルを削除することでした。

破損した葉の影響を受けるファイルを見つけるには、次の手順を実行します。

btrfs inspect-internal logical-resolve 43231330304 <mountpoint>

その他の一般的なアドバイスは次のとおりです。

  • まず、データをバックアップしてください。
  • カーネル 5.11 以降を実行 (新しいバージョンほど良い) (v5.11 にはメタデータの書き込みに関するより完全なチェックが導入されています)
  • 最新のbtrfs-progs(2021年9月現在5.14)を使用してください。
  • user2246514が述べたように使用しないでくださいBTRFS開発者が推奨しない限り、 "btrfs check --repair"です。 ~からbtrfs-check(8) のマニュアルページ:

警告:開発者や経験豊富なユーザーが推奨しない限り、--repairを使用しないでください。 fsckがすべての種類のファイルシステムの破損を正常に修復できないことを認識した後にのみ使用してください。例えば。他のソフトウェアまたはハードウェアの障害により、ボリュームが重大に破損する可能性があります。

関連情報