大容量ファイルシステムでfsckが遅すぎるのはなぜですか?

大容量ファイルシステムでfsckが遅すぎるのはなぜですか?

私は12GB DDR3と複数の1.5TBハードドライブを持つOpenBSDサーバーに12のファイルシステムを持っています。すべてのファイルシステム自体のサイズは通常8GBから64GBです。

ベストプラクティスに従った後でも(あまりにも小さく保たれる)、再起動時にはfsckまだ非常に遅いことがわかりました。

何がそんなに遅くなるのでしょうかfsck?生のファイルシステムサイズ?総inode数(使用された+ ifree)は何ですか?使用されたinodeの数は何ですか?全く違うの?fsck時間をさらに改善する簡単な方法はありますか?

ベストアンサー1

fsckを実行する目的は、不一致を見つけることです。これは、ファイルシステムを参照して各ディレクトリエントリ(ディレクトリ/ファイル)の後ろにあるデータを調べ、ディレクトリエントリのサイズがデータの実際のサイズと一致することを確認することを意味します。プロセスが遅かった。過去には、ファイルシステムがはるかに小さく、少数のファイルが含まれていて、とにかくコンピュータを起動するのに長い時間がかかりました。回転するディスクの速度は容量ほど増加しないため、システム起動時にファイルシステムチェックを実行することはますます不可能になります。

これが、多くの最新のファイルシステム(例:ext3、ext4、reiserfs、XFS...)が再起動時にファイルシステムチェックを実行しなくなった理由です。代わりに雑誌簿記に使用されます。変更がディスクに書き込まれる前にログに書き込まれます。変更が完了すると、未解決のトランザクションはログに完了したとマークされます。トランザクションが完了する前にシステムがシャットダウンすると、ファイルシステムは進行中のトランザクションを知り、そのトランザクションを「再生」してファイルシステムを一貫した状態に戻すことができます。これは、ファイルシステムチェックを実行するよりもはるかに速いことがよくあります。最新のファイルシステムは、ログメンテナンスによるオーバーヘッドを減らすために多くの巧妙なトリックを使用しています。実際、一般的に違いに気づかないでしょう。

btrfs、ZFSなどの最新世代のファイルシステム...書き込み中のコピーこれは、ファイルまたはメタデータを変更するトランザクションが既存のデータを上書きしないことを意味します。代わりに、新しいデータが別のブロックに書き込まれます。新しいコピーが準備されると、ファイルシステムは自動的に新しいコピーを使用するように切り替えられます。これはまた、ファイルシステムが一貫していないことを効果的に防止します(そして他の利点もあります)。

使用を検討してくださいジャーナルファイルシステムまたは記録中のコピーファイルシステムシステムをすばやく起動したい場合。

おすすめ記事