
私は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/1
PID番号は1)。そのディレクトリの下にあるシンボリックリンクはexe
プロセスとして実行されているバイナリを示し、名前付きファイルはmaps
プロセスのメモリスペースにマップされたファイルを示し、名前付きディレクトリはプロセスハンドルに対して開いているすべてのファイルを一覧fd
表示します。そこ(削除済み)が見えたらそれです。
答え2
ファイルシステムの使用量を対話的に閲覧するには、次のものを使用できますxdiskfree
。kdiskfree
baobab
。
デフォルトでは、 と同じ情報を取得できますが、du
各サブディレクトリに関する情報を取得するのではなく、ディレクトリをクリックするだけで詳細を表示できます。
答え3
前述のように、du -shコマンドを使用してフォルダの合計スペース使用量を確認できます。
フォルダ内のすべてのアイテムのサイズ情報を取得するには、sudoでこのコマンドを実行する必要があります。
-sオプションを使用すると、duはディスク使用量を再帰的に確認します。
-hオプションは、出力を読み取ることができるようにすることです。使い慣れたら、-h オプションを使用するか、使用せずに du を実行して出力を比較できます。時には -h なしで出力すると便利です。
duコマンドにワイルドカードを送信して、複数のフォルダの使用量を評価することもできます。だから:
sudo du -sh /home/*
/homeの各フォルダの合計使用量を示します。
答え4
51GBが報告されたのでdu /
51GBを使っているのです。削除されたファイルやマウントポイントによって隠されたファイルなど、見えない一部の使用済みスペースがある場合があります(終了を参照)。ディスク使用量を測定する方法はなぜそんなに変わりますか?- 実際、完全な答えは興味深いかもしれません。)しかし、あなたの場合はそうではありません。
PostgresQLデータベースがファイルシステム内にある場合はファイルとして表示され、合計に含まれます。明らかに見えるファイルよりも大きいため、データベースはアクセス可能なディレクトリツリーの外側にあります。
315GBは他のユーザーと共有できます。あるいは、315 GBのファイルシステムにアクセスできるようにストレージを構成しましたが、一部だけがディレクトリツリーとして表示され、データベースは表示されない他の部分に存在する可能性があります。たとえば、2つのサブディレクトリを持つ/clients/richard
ボリュームがあり、ディレクトリツリーのみを表示できます(たとえば、プロセスはroot
database
/clients/richard/root
根を引いたそこ)。
残りの 10 GB は一部のリカバリシステムである可能性があります(多くの VPS には、ブートされていないプライマリシステムを変更する必要がある場合は、リカバリシステムでブートできるサービスがあります)。あるいは、ルートのみが利用可能な緊急予備にすることもできます(「reserve」として検索)。ディスク使用量を測定する方法はなぜそんなに変わりますか?)。