ディスクスペースがどこに行くのか理解していますか?

ディスクスペースがどこに行くのか理解していますか?

私はDebianを使用しています。df -h約275GBを使用していることを示しています。

 Filesystem                 Size  Used Avail Use% Mounted on
rootfs                     315G  274G   26G  92% /
udev                        10M     0   10M   0% /dev
tmpfs                      6.4G  200K  6.4G   1% /run
/dev/disk/by-label/DOROOT  315G  274G   26G  92% /
tmpfs                      5.0M     0  5.0M   0% /run/lock
tmpfs                       13G  4.0K   13G   1% /run/shm

274GBはどこに行ったのか気になりますね。次のような答えはここにあります、ファイルシステムが約50GBを使用していることがわかります。

$ du -h /  --max-depth 3
...
51G     /

また、私は大規模なPostgresデータベースを持っていることを知っているので、それがどのくらいのスペースを使用しているかを確認できます。

$ psql 
=> SELECT pg_database.datname, pg_database_size(pg_database.datname), pg_size_pretty(pg_database_size(pg_database.datname)) FROM pg_database ORDER BY pg_database_size DESC;
   datname   | pg_database_size | pg_size_pretty
-------------+------------------+----------------
 mydatabase  |     230809349908 | 215 GB
 postgres    |          6688532 | 6532 kB
 template1   |          6570500 | 6417 kB
 template0   |          6562308 | 6409 kB

したがって、Postgresは約215GBを使用し、ファイルシステムは約50GBを使用します。

しかし、残りの10GBがどこに行ったのかを確認する方法は何ですか?

あまりないのにこれをどのように追跡するのか気になりますね。

ベストアンサー1

追加スペースは開いていましたが、削除されたファイルに割り当てられる可能性が高いです。

duファイルシステムを介してアクセスできるファイル(つまり、ファイル名を持つファイル)のみが表示されます。ファイルが削除されると、そのファイル名はディレクトリから削除されますが、ディスクブロック(およびinode)は、すべてのプロセスがそのファイルに対して開いているファイルハンドルを閉じたときにのみ解放されます。この問題を解決する最も簡単な方法は、開いているログファイルを削除してスペースを解放することです。その後、保持プロセスがファイルハンドルを閉じるように強制するか、そのプロセスを終了する必要があります(終了プロセスは常にすべてのファイルハンドルを閉じます)。プロセスがファイルを使用する他の方法があります(バイナリとして実行、共有オブジェクトとしてロード、メモリ空間にマッピング)。

実行中のプロセスが保存した開いているが削除されたファイルを表示するには、同じユーティリティを使用するか、またはlsofを表示できます/proc/*。ここで実行されている各プロセスには、PID名の付いたディレクトリがあります(たとえば、/proc/1PID番号は1)。そのディレクトリの下にあるシンボリックリンクはexeプロセスとして実行されているバイナリを示し、名前付きファイルはmapsプロセスのメモリスペースにマップされたファイルを示し、名前付きディレクトリはプロセスハンドルに対して開いているすべてのファイルを一覧fd表示します。そこ(削除済み)が見えたらそれです。

おすすめ記事