「複数宣言されたブロック」は、ブロックが複数のファイルに属しているように見えるときにfsckによって報告されるエラーです。両方のファイルが書き込まれると、両方のファイルが変更されるため、データが破損する可能性があります。
しかし、ブロックが複数の所有権を主張する理由は何ですか?どのように生成され、どのように防止できますか?
答え1
記載されているように非常に初期に中央宗湯彼自身は2つを持つことができます即時理由は」宣言されたブロックの乗算fsckが報告した内容:
そのうちの1つは、inodeテーブル内の1つ以上のブロックが誤った場所に書き込まれ、inodeテーブル内の他のブロックを上書きすることです。
これは通常、いくつかのカーネルのバグが原因で発生します。 (T'Tsoは簡単に識別できるいくつかのパターンを説明できることを読むことができます。=>外部ソースによって引き起こされる偽の損傷はランダムではありません。)
これは特にまれな競争条件のためにEXTファイルシステムファミリの新機能の初期に発生します。
- そしてビガロック
- 遅延割り当て、
- 最近は指摘したようにフロストスーツOPの意見では、fast_commit関数について。
2番目のケースは、ブロック割り当てビットマップが破損し、使用中の一部のブロックが使用可能とマークされている場合です。それからファイルシステムを再マウントし、ファイルをファイルシステムに書き込むことで、新しいファイルにブロックが再割り当てされるようにします。
これらの問題はいくつかの損傷の後にランダムに現れ、根本的な原因がカーネルのバグである可能性は低いです。
これには、不完全なシャットダウン、誤って作成されたアプリケーション、ハードウェア環境に関連する不合理なインストールオプションなどが含まれます。メモリやその他のハードウェア障害。
もちろん、fsck
エラーレポートを生成する責任や他のファイルシステムの不一致を修正しようとするときは、問題の根本的な原因を忘れてはなりません。実はすでにあります。
これをどのように避けることができますか?上記に基づいて、その発生確率を制限することができます。
- 低レベルのスキルを維持します;-)新機能がリリースされるとすぐに設定しないでください。
- ECCメモリと信頼性の高いストレージデバイスを使用して
- ファイルシステムオプション(時々提供される)を微調整し、インストール
mkfs
オプションを賢く選択してください(環境に合わせて)。 - 信頼できないすべてのソフトウェアをサンドボックスで実行します。
- 最後にT'Tsoで働く競合が発生した場合は、次を実行します。
e2croncheck
:
今私が実際にやっていることは、クラッシュが発生するたびに再起動してログインしてすぐにe2croncheckを実行することです。これにより、潜在的なファイルシステムの破損が深刻になる前に気付くことができます。
答え2
ネットワーク/共有ストレージ(ファイバーチャネル、iscsi、SAN、JBODデバイスなど)では、複数の要求ブロックが発生する可能性があります。これらの設定を使用すると、誤って設定された場合、両方のシステム(仮想またはベアメタル)が同じブロックにアクセスできるようになります。設定が正しくない場合、ブロックは別のブロックデバイスに割り当てられ、他のデバイスに割り当てられます。これらのシステムは、他のシステムがブロックを使用して何をしているのかわからないため、これらのエラーが発生する可能性があります。
このようなエラーを回避するには、ブロックデバイスが1つのデバイスにのみ割り当てられるようにして、ブロックデバイスへのアクセスを1つのシステムに制限します。可能であれば「ロック」を使用してください。ロックは、blockdevが使用中としてマークされ、他のシステムで使用できることを意味します(簡単な説明です)。