
この機能が20年前にさかのぼることを知っていますが、まだ知りたいです。
ext2/3/4ファイルシステムで予約されているブロックの目的は何ですか?
答え1
マニュアルページにtune2fs
説明があります。
権限のあるプロセスで使用するために特定の数のファイルシステムブロックをスケジュールすることは、ファイルシステムの断片化を防ぎ、権限のないプロセスがファイルシステムに書き込むのをブロックした後、システムデーモン(syslogd(8)など)が正常に続行する動作を許可することです。
また、何らかの理由で通常のユーザーとそのプログラムがディスクを100%埋めると、ファイルを削除する前にログインおよび/または同期できなくなる可能性があります。一部のブロックを予約することにより、root
システムは常に状況を修正できるようにします。
実際、5%は以前のデフォルト値であり、ハードドライブが十分に大きい場合は高すぎる可能性があります。前述のツールを使用してこの値を変更できますが、tune2fs
まずマニュアルページをお読みください。
答え2
ルートだけのために少数のブロックを予約する目的は、ルートにログインする機会を与え、ディスクが完全にいっぱいになるとスペースを確保するための少しの呼吸スペースを提供することです。そうしないと、ファイルの書き込み中に予期しないエラー(たとえば、utmp
and wtmp
、file inなど)が発生する/dev/pts
とログインプロセスが失敗し、ルートがログインできなくなる可能性があります。ログインプロセスが強力でディスクがいっぱいになっても機能することが期待できますが、ログインプロセス中にディスクがいっぱいのエラーは、テストが少ないコードパスであることがよくあります。
もちろん、最近では小さな塊でも、この目的に必要なものよりも多くのスペースを表しています!
答え3
Reserve% の目的の 1 つは、断片化を防ぐためにファイル間に「空のポケット」を許可することです。後でファイルを修正しても必ずしもファイルが断片化されるわけではありません。もともと作成されたときにファイルの末尾にいくつかの内容が付いているからです。
緊急回復の側面もあります。ルートはログインして何かが間違ってドライブをいっぱいにしたので、ユーザーであるか誤って設定されたプログラムであれ、ログインしてクリーンアップできる必要があります。
適切な保存率は、パーティションのユースケースによって大きく異なります。パーティションがオペレーティングシステムディスクの場合、ルートに5〜10%を予約することは、非常に大きなパーティションの場合でも完全に合理的に見えます。ユーザーデータパーティションの場合、断片化を防ぐのに役立つ場合を除き、通常は保存は不要です。