ファイルシステムの整合性を維持しながら、fsckが破損を修正していることをどのように確認できますか?
クライアントがNFSを介してサーバーに多数のファイルを書き込んだときに破損(異常なシャットダウン/その他のカーネルパニック)を引き起こしたとしましょう。したがって、ファイルシステムの現在の状態がわかりません(部分的に記録されているなど)。その後、fsckを実行すると破損(無効なブロックなど)が修正され、ファイルシステムは現在しなければならない最新の状態を維持してください。私のファイルシステムが最新であることをどうやって確認しますか?
通常、私は作成されたファイルのソースを再確認するためにdiffまたはdtを使用します。ただし、この場合、ファイルに書き込んだ後にソースがもう存在しないとします。
答え1
Fsckはファイルシステムを次に返します。言葉のない状態。クラッシュするとその状態が失われる可能性があるため、これは必ずしもファイルシステムの「最新」状態ではありません。実際、クラッシュ時に半分しか作成されていないファイルがある場合、ファイルシステムは一貫した状態にありません。これはfsckが修正するように設計されています。つまり、fsckを実行した後は、ファイルシステムができるだけ最新の状態になります。
アプリケーションがクラッシュしたときにディスクに保存されている内容に関するフィードバックが必要な場合は、ファイルに書き込む以上の作業を行う必要があります。電話する必要がありますsync
、またはより良いfsync
、書き込み操作の後、特定の書き込みがディスクにコミットされていることを確認します(ただし、これを頻繁に実行するとパフォーマンスが低下し、データベースエンジンに切り替える必要があります)。最大衝突生存(最大速度ではない)のために構成されたジャーナリングファイルシステムが必要です。
実行された操作(ディスクの書き込みなど)を(システムがクラッシュしても)元に戻すことができない属性を呼び出します。耐久性。これはその一つです。データベース(ACID)の4つの基本属性。このプロパティが必要な場合は、次をお読みください。取引。
ファイルシステムはデータベースタイプですが、通常はACID属性とうまく機能しないように設計されており、柔軟性を強調しています。専用データベースエンジンにより、より耐久性が向上します。次に、システムではなくディスクがクラッシュした場合に何が起こるのか考えてみましょう。高い耐久性のためには複製も必要です。
答え2
-Nは実行されず、実行するアクションのみを表示します。
今回も次のことを行います。shell> fsck -N /dev/sda1