デフォルトでは、新しく作成されたファイルシステムは、ルートに割り当てられたスペースの5%で作成されることを理解しています。また、定義したスペースを次のように変更できることも知っています。
tune2fs -m 1 /dev/sdXY
しかし私が気になるのは、この予約スペースの実際の目的が何であるかです。状況によっては5%以上のスペースに値する実用的な目的に役立ちますか?
私がこの質問に出くわした理由は、最近1 TBのファイルストアを作成したため、df -hで容量の5%が失われた理由がよくわからなかったためです。
重要なルートプロセス(および可能なレスキューアクション)のためにスペースを節約することが1つの理由です。
しかし、もう1つあります。 Ext3はファイルシステムの断片化を回避するのにかなり優れていますが、約95%を超えると、その動作が崖から落ち、ファイルシステムのパフォーマンスが突然混乱します。したがって、5%を予約したままにしておくと、これに対するバッファーになります。
Linuxファイルシステム開発者/第一人者Theodore Ts'oが説明 として、Ext4の方が優れているはずです。
予約済みブロックカウントをゼロに設定した場合、ファイルシステムがほぼ満杯(つまり、95%を超える)の間に長時間(大量のファイルの作成と削除を伴う)実行する場合を除いて、パフォーマンスに大きな影響はありません。その時点で、断片化の問題が発生します。 Ext4のマルチブロックアロケーターは、隣接するブロックを見つけるのがはるかに難しくなるため、断片化に強くなります。そのため、他のext4機能を有効にしない場合でも、ファイルシステムの前にext4を使用してext3ファイルシステムをマウントするだけで、より良い結果が得られます。完全にいっぱいになります。
長期間アーカイブするためにファイルシステムを使用しているだけで、ファイルがあまり頻繁に変更されない場合(つまり、巨大なmp3またはビデオストア)、それは明らかに問題になりません。
たとえば、sshを介して他のユーザーがシステムにログオンすることを許可する場合、これらの5%ブロックを予約しておくと、外部ユーザーがディスクをいっぱいにすることができなくなります。他人にシステムへのログインを許可しない場合でも、予約済みブロックにより、rootとして実行されていないプログラムがディスクをいっぱいにすることを防ぎます。
ユーザーと、rootとして実行するのではなく特定のユーザーとして実行しているサービスを予約したブロックでは、filesystsemを埋めることができず、上記のファイルシステムに書き込む必要のある他のものを壊す可能性があります。ただし、rootとして実行しているサービスでも、完全に作成できますもちろんいっぱい。
また、ユーザーがディスクがいっぱいである、またはファイルシステムがいっぱいであるためにサービスが失敗し始めたと文句を言うときに、作業するためのスペースも提供します。たとえば、ファイルを削除する前に、Zip/gz/7Zipアーカイブにいくつかのファイルをアーカイブすることができます(ファイルシステムが完全にいっぱいの場合、代わりにアーカイブファイルを作成できる他のファイルシステムがある可能性があります)。
5%はlong時間のデフォルトであり、ディスクがはるかに小さい(数百ギガバイトではなく数十メガバイト)ときから、5%はそれほど多くありませんでした。幸いなことに、あなたが言うように、より小さな割合に簡単に調整できます。また、tune2fs
の代わりに-r
の-m
オプションを使用すると、特定のブロック数に設定できます。どちらの場合も、0のパラメーターを指定して予約を完全にオフにすることができます-/
、/tmp
、/var
などに対してはこれを行いませんが、ユーザーストレージ(グローバルファイル共有など)としてのみ機能するファイルシステム、または新しいファイルを作成したときにのみ拡張する固定サイズのファイル(固定サイズのVMなど)のみを保持するファイルシステムの場合。
デフォルトの5%はシステムパーティション用です。たとえば、ディスク領域がいっぱいになると、システムログ(/var/log
)とルートのメールボックス(/var/mail/root
)は引き続き重要な情報を受け取ることができます。のために /home
または一般的なデータストレージパーティション。ルート用のスペースを残す必要はありません。特別なニーズについては、緊急用スペース(tune2fs -u 1234
)。
Ext [234]ファイルシステムがいっぱいになるのを許可しない別の理由があります。それは fragmentation です。