通常、フォールトトレラントまたは破損した回復ファイルシステムを作成するには、複数のドライブとraid 5またはraid 0以外のものを使用します。
darなどのフォールトトレラントアーカイブファイルを作成する方法もいくつかあります。
電力供給されていない拡張ストレージのビット破損から単一の外部SSDをより安全にする方法を探しています。それ以外の場合は、通常のドライブとしてドライブを使用し、ドキュメントが必要な場合は他のファイルシステムと同じようにマウントして読み書きするだけです。 「私が気分が良くなった時」は時々数年の間隔になることがあります。
「一般」は、Windows と Mac で使用できるという意味ではありません。ただLinux。
答え1
まず、ほとんどの最新HDDにはすでに内部ECCメカニズム(https://en.wikipedia.org/wiki/Hard_disk_drive#Error_rates_and_handling)。 RAID 5に代わるものではありませんが、存在することに気付くことを嬉しく思います。主に#5、#187、#188、#197、#198など、いくつかの主要なSMART属性を積極的に監視することをお勧めします(https://www.backblaze.com/blog/hard-drive-smart-stats/)。
ファイルシステムの場合、あなたが探しているのはデータクリーンアップをサポートするFSのようです(https://en.wikipedia.org/wiki/Data_scrubbing)。 ZFSはこれを行うことができます(https://docs.oracle.com/cd/E19253-01/819-5461/gbbxi/index.html)
[編集]からhttps://www.45drives.com/community/articles/zfs-best-practices/
ZFSクリーンアップは、恐ろしいビット腐敗を処理するための最良の方法です。 ZFS はブロックを読み込むたびに、そのブロックをチェックサムと比較し、必要に応じて自動的に回復します。ただし、ZPoolに書き込まれたデータの中には、長い間読み取られないものがあります。
幸いなことに、このデータはビット破損から自動的に保護されません。これが私たちがデータを整理する理由です。最良の方法は、少なくとも月に一度スクラブを計画することです。必ずしも必要ではありませんが、一部の人はより頻繁にまたは毎週スクラブを望むかもしれません。クリーンアップ中にZPoolを使用することはできますが、それほど集中的ではありませんが、ディスク上の一部のIOを処理するため、業務外の時間やダウンタイムにZPoolを使用するようにスケジュールできます。
答え2
@チェニスタ言及するZFSしかし、より良いまたはより簡単な他のオプションもあります(ZFSは重いエレベーターを正しく使用してください)
BtrfsとZFSはこれを行うことができ、他の場合も可能です。
- BtrFSデータの整合性を確保するために、さまざまなハッシュ機能がサポートされており、その一部(SHA256など)はデータ重複排除にも使用できます。素晴らしいファイルシステムですが、本番システムではExt4などほど成熟しません。
- XFSメタデータのcrc32チェックサムのみをサポート
- 外部4メタデータのcrc32チェックサムのみがサポートされていますが、有効にする必要があります。Ext4メタデータチェックサム
- ZFSさまざまなハッシュアルゴリズム、重複排除、シングルディスクとマルチディスクを含むマルチデータ冗長モードをサポートします。学習曲線はやや急であるが、非常に成熟している。
DIY、たぶん簡単になるかもしれません。
sha256
すべてのファイルに記録し、その状態を追跡し、問題を警告する独自のクローン操作などを持つことを検討することもできます。次の場所に固定することもできます。外部4使用して拡張属性次のようになります。setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" file.txt
- または単にtxtファイルとしてどこかに保存してください。これにより、スキャンするファイルとその動作を完全に制御できます。ファイルをインポートしてコピーし、ファイルを少し破損させ、何が起こるかを確認することでこのメカニズムをテストできます。ビットを削除します(CLIでは実行が難しい)。
a=$(xxd -b -l 1 -seek 3 -p <original_important_file>);b=1;echo -e "\x$((${a}^${b}))" | dd of=<corrupted_important_file> bs=1 seek=3 count=1 conv=notrunc
私は次のソースからこのスクリプトをインポートして適用しました。@Kantiumの返信