Linuxの単一のハードドライブでエラーを検出して修正する方法(btrfsまたは他の方法を使用)

Linuxの単一のハードドライブでエラーを検出して修正する方法(btrfsまたは他の方法を使用)

Linuxでbtrfsの最大の利点の1つは、ブロックごとのチェックサムがあるため、冗長データがある場合はビット減衰を変更できることです。 2つのディスクでraid1を設定すると、冗長データを取得できます。しかし、単一のディスクでビット減衰を防ぐために冗長データを取得することもできますか?

-m dupbtrfsには、各ドライブに2つのメタデータコピーを保存するメタデータDUPオプション()があることを確認しました。ただし、ドキュメントにはdupがデータのオプションではないことが示されています(つまり、-d dupオプションではありません)。この問題を解決する良い方法はありますか?単一のディスクを2つの同じ部分に分けて一緒に襲撃しますか?

あるいは、Linuxでファイルシステムレベルのエラーを検出して修正する別の簡単な方法はありますか(ファイルシステムの自動アーカイブに似ています)?

(2つのドライブを使用するという回答には興味がありません。)

編集する:私が見つけたこれ、エラー修正ファイルを通常のファイルのようにマウントできるFUSEファイルシステムです。つまり、これは誰かが2009年に作成した小さなハッキング/概念証明であり、それ以降は実際には扱われませんでした。

答え1

混合ブロックグループが有効になっている場合、Btrfsは冗長ブロックをサポートします。

mkfs.btrfs --mixed --metadata dup --data dup /dev/<device>

編集:修理するこれにより、ブレンドモードを使用せずにこれを行うことができます。 2015年11月のスレッドに続いてメインラインbtrfsコードに追加されたようです。

答え2

たとえば、LVMを使用してドライブを10個のパーティションに分割し、ブロックレベルでそれらをraid-5に分割するのはどうですか?これはエラー訂正のために約10%の冗長性を提供しませんか?

答え3

Btrfsと同様に、ZFSを使用すると、次のようにdup --dataデータブロックの複数のコピーを保存できます。zfs set copies

zfs set copies=2 users/home

バラよりZFSユーザーデータの複数コピーの保存

データでもメタデータでもブロックにアクセスすると、対応するチェックサムが計算され、保存されたチェックサム値と比較されます。チェックサムが一致すると、データはプログラミングスタックを介してそれを要求したプロセスに渡されます。ストレージプールがデータ冗長性を提供する場合、ZFSはデータを回復できます。(たとえば、内部ミラーリング)、データのコピーが破損しておらず、チェックサムが一致すると仮定します。 (またはそれ以上)を指定して追加のプール内のcopies=2冗長性を提供するオプションがありますcopies=3。つまり、データはディスクに2回(または3回)保存され、copies=3ストレージ容量が効果的に半分(または3分の1に減ります)を意味します。ディスク。また、セキュリティ上の理由から、ZFS がプールを管理するために使用する一部のデータ型は、デフォルト設定をcopies=1使用してもデフォルトで複数回保存されます。

https://en.wikipedia.org/wiki/ZFS#Data_integrity

関連情報