btrfs は不良ブロックを追跡/回避できますか?

btrfs は不良ブロックを追跡/回避できますか?

完全に信頼できるわけではないが、それでも使いたい HDD があります (バーストコイン マイニングでは、ファイルに不良ブロックがあっても、数セントしか失いません)。

btrfs に特定のブロックを不良としてマークするように指示するにはどうすればよいですか (たとえば、badblocks出力から)?

ブロックを事前に不良としてマークできない場合、btrfs scrubそれらを使用しているファイルが削除されると、 によって識別された不良ブロックは将来回避されますか?

答え1

残念ながら、いいえ。

btrfs は不良ブロックを追跡せず、btrfs scrub次のファイルが同じ不良ブロックに遭遇するのを防ぎません。

このbtrfsメーリングリストの投稿ext4の使用を推奨しますmkfs.ext4 -c(これ「不良ブロックリストを作成し、それらのセクターは使用しません」)。使用の提案RAID0 を使用した mdadm 3.1+ 上の btrfs は動作しません

のようだLVMは不良ブロックの再割り当てをサポートしていません

回避策としては、不良であることがわかっているブロックを除外してデバイスを構築することです。dmsetup 経由の btrfs


btrfs プロジェクトのアイデア wiki言う:

申請されていない — まだパッチなし — まだカーネルに組み込んでいない

現在、btrfs は不良ブロック (書き込まれたデータが失われる可能性が非常に高いディスク ブロック) を追跡しません。btrfs は、不良ブロックの出力形式のリストを受け入れ、それを新しい btree (または新しいフラグを使用して現在のエクステント ツリー) に格納し、ブロックに含まれるデータを再配置し、これらのブロックを将来の割り当てに使用できないように予約する必要があります。さらに、チェックサム エラーが見つかったときに不良ブロックをテストするように scrub を学習させることもできます。これにより scrub ははるかに便利になります。チェックサム エラーは通常ディスクによって発生しますが、scrub は影響を受けたファイルを検出し、バックアップ シナリオでそれらを再作成する機会を与えますが、不良ブロックを再利用する次のファイルは代わりにエラーを受け取り始めます。これらの 2 つの項目は、ext4 機能 (e2fsck を介して使用) と一致します。

ステータスが変わった場合はコメントしてください。この回答を更新します。

答え2

これが私がこの制限を回避するために考えている方法です。不完全な解決策です。

  1. ジャーナリングなしでファイルシステムとして ext4 を作成する (不良ブロックをマークする)
  2. ext4 の上に btrfs ファイル イメージを作成します。
  3. ループデバイスを使用して btrfs イメージをマウントします。

若干の追加オーバーヘッドが予想される場合があります。

関連情報