df出力のサイズと使用されたスペースが空きスペースと矛盾する理由

df出力のサイズと使用されたスペースが空きスペースと矛盾する理由

次のコマンドを実行します。

$ df -h

次の出力を提供します。

Filesystem                        Size  Used Avail Use% Mounted on
/dev/md2                           91G   85G  1.2G  99% /home

つまり、合計91GiBのうち85GiBのみが使用され、6GiB Avail(91 - 85 = 6)が残ります。

なぜAvail1.2GiBだけが必要なのですか?

この質問は、次のものではなく、Used - Size出力の列と列の間の矛盾について明示的に説明します。Availdfdfduこの関連質問

私の場合、ファイルシステムから削除されたファイルはまだ使用されていません。

答え1

デフォルトでは、ext2、ext3、およびext4ファイルシステムはrootユーザーの容量の5%を予約します。これは断片化を減らし、rootユーザーまたはroot所有デーモンが重要なタスクを実行するときにディスク容量が不足する可能性を減らします。この予約理由の詳細については、次の質問に対する回答で確認できます。この関連質問

予約の規模を確認できます。tune2fs注文する:

tune2fs -l /dev/md2 | grep "Reserved block count:"

-m予約率は、次のコマンドのオプションを使用して変更できますtune2fs

tune2fs -m 0 /dev/md2

-r次のコマンドのオプションを使用して、保持される予約済みブロックの数を変更できますtune2fs

tune2fs -r 0 /dev/md2

予約済みスペースは、オペレーティングシステムに依存しない静的コンテンツを持つ大規模ファイルシステムでは最も便利ではありません。このようなファイルシステムの場合、保存期間をゼロに短縮するのが合理的です。ファイルシステムは/、、、および/rootディレクトリ/varを含むシステムを含むデフォルトの5%保存状態を維持するのが最善です/tmp

答え2

この効果の最も一般的な原因は、開いているファイルが削除されたためです。

カーネルは、ファイルが削除されたときにファイルが使用されていない場合にのみ、ファイルのディスクブロックを解放します。それ以外の場合は、ファイルが閉じるかシステムが再起動されるまでこの操作が遅れます。

一時ファイルを残さないようにするためのUnix世界の一般的な方法は次のとおりです。

  1. プロセスは一時ファイルを作成して開きます。
  2. プロセスは、開かれたファイル記述子を保持し続けながらファイルのリンクを解放(つまり削除)します。
  3. プロセスは通常、ファイル記述子を使用してファイルを読み書きします。
  4. プロセスが完了すると、ファイル記述子が閉じ、カーネルが空き領域を解放します。
  5. プロセス(またはシステム)が予期せず終了すると、一時ファイルが削除されたため、クリーンアップは必要ありません。
  6. ボーナスとして、ファイルを削除すると、一時ファイルを作成するときに名前が競合する可能性が減り、ルートを除くすべての人に実行中のプロセスの追加のあいまいなレイヤーが与えられます。

この動作により、プロセスは突然自分の足元から出てくるファイルを処理する必要がなく、ファイルを削除するためにプロセスが互いにネゴシエートする必要がなくなります。ただし、通常は使用中のファイルを削除することは許可されていないため、これはWindowsシステムユーザーにとって予期しない動作です。

lsofコマンドは、rootとして実行されたときに開いているすべてのファイルを表示し、特に削除された削除済みファイルを示します。

# lsof 2>/dev/null | grep deleted
bootlogd   2024       root    1w      REG                9,3         58     917506 /tmp/init.0W2ARi (deleted)
bootlogd   2024       root    2w      REG                9,3         58     917506 /tmp/init.0W2ARi (deleted)

問題のあるプロセスを停止して再起動するか、サーバーを再起動すると問題が解決します。

たとえば、削除されたファイルがマウントされたファイルシステムイメージの場合、カーネルはそのファイルを開いたままにすることもできます。この場合、ファイルシステムをマウント解除するか、サーバーを再起動すると問題が解決します。

あなたの場合は、「欠けている」スペースの量で判断し、インストール後に削除したCentos DVDイメージなど、VPSの設定に使用したファイルへの参照を探します。

関連情報