再起動後もサイズが小さく、空き容量はありません。

再起動後もサイズが小さく、空き容量はありません。

昨夜の予想よりも多くの出力データを生成するいくつかのプログラムを実行しましたが、最終的にルートext4パーティションがいっぱいになりました。問題のプロセスを終了し、不要になった外部データの削除を開始しましたが、次のような結果が出ました。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.4G     0  3.4G   0% /dev
tmpfs           690M   11M  680M   2% /run
/dev/sda4       810G  806G     0 100% /
tmpfs           3.4G     0  3.4G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.4G     0  3.4G   0% /sys/fs/cgroup
/dev/sda1       476M   26M  450M   6% /boot/efi
tmpfs           690M     0  690M   0% /run/user/1000

ご覧のとおり、「Used」が「Size」より4GB少ないにもかかわらず、空き容量はありません。これがいくつかのプロセスによって開かれた削除されたファイルであると仮定し、lsofを使用して最大のファイルが64MB /memfd:pulseaudioであることを確認しました。

混乱してシステムを再起動しましたが、問題が解決されるとほぼ確信していました。ただし、df の出力は変更されません。

どうやってこれができますか?どうすれば解決できますか?

$ uname -a
Linux ... 4.16.0-1-amd64 #1 SMP Debian 4.16.5-1 (2018-04-29) x86_64 GNU/Linux
$ cat /etc/issue
Debian GNU/Linux buster/sid \n \l

答え1

ext4ルートとして実行されるプロセスによってのみ埋められる「予約済みブロック」という概念があります。出力ではdfこれを考慮できます。

たとえば、あるシステムでは、次のようにdf表示されます。

Filesystem          1K-blocks      Used Available Use% Mounted on
/dev/sda1            30626752  14557916  14490036  51% /

ここで、30626752 - 14557916 - 14490036は1578800に等しく、これは予約ブロックのデフォルト数の合計の約5%に相当します。予約済みブロック率を0に変更2fs調整tune2fs -m 0 /dev/sda1)表示されている数字が変更されましたdf

Filesystem          1K-blocks      Used Available Use% Mounted on
/dev/sda1            30626752  14557924  16052444  48% /

(数字はまだ正確に一致しません。16384個の1kブロックが計算されていませんが、これは何らかの理由で「使用済み」と計算されないいくつかの内部ファイルシステム構造のためだと思います。)

関連情報