web-dev-qa-db-ja.com

Linuxで使用されているディスク容量が徐々に増加している原因を特定するにはどうすればよいですか?

私はRaspberry Pi 3BにRaspian Buster Liteのフレッシュインストールを行い、 PrometheusNode Exporter をインストールして、いくつかの簡単な診断、特に利用可能なディスクを削り取りましたスペース。

問題は、使用可能なディスク領域が継続的に減少しているように見えることです。 df -B1を使用して、使用可能なバイト数を確認できます。これにより、次が返されます(使用されている「16 GB」のSDカードから13.08 GB)。

pi@raspberrypi:/home $ df -B1

Filesystem       1B-blocks       Used   Available Use% Mounted on
/dev/root      15383740416 1647845376 13078351872  12% /
devtmpfs         480808960          0   480808960   0% /dev
tmpfs            485527552          0   485527552   0% /dev/shm
tmpfs            485527552    6459392   479068160   2% /run
tmpfs              5242880       4096     5238784   1% /run/lock
tmpfs            485527552          0   485527552   0% /sys/fs/cgroup
/dev/mmcblk0p1   264289280   54748672   209540608  21% /boot
tmpfs             97103872          0    97103872   0% /run/user/1000

これを定期的に調べると、減少するだけです。数分後に確認すると、次のようになります。

Filesystem       1B-blocks       Used   Available Use% Mounted on
/dev/root      15383740416 1648463872 13077733376  12% /
devtmpfs         480808960          0   480808960   0% /dev
tmpfs            485527552          0   485527552   0% /dev/shm
tmpfs            485527552    6459392   479068160   2% /run
tmpfs              5242880       4096     5238784   1% /run/lock
tmpfs            485527552          0   485527552   0% /sys/fs/cgroup
/dev/mmcblk0p1   264289280   54748672   209540608  21% /boot
tmpfs             97103872          0    97103872   0% /run/user/1000

Grafana を使用して、Prometheusデータベースでこのメトリックを調べることができます。

enter image description here

たぶんいくつかのログか何かかもしれませんが、少し良く理解したいと思います。このグラフに基づいて、スペースは1時間あたり約2.9 MBの速度で減少しているように見えます。これは私にはかなり思えます。

理想的には、サイズが変更されたファイルのみを表示する方法を探しているとしましょう。たとえば、ギリギリか何かで。この原因を突き止めるにはどうしたらよいでしょうか?お待ちいただきありがとうございます-私はLinuxを使用するのが初めてです。


編集する

誰かが興味を持っている場合は、2.9 MB /時間のほぼすべてがPrometheusの先読みログ(WAL)に起因する可能性があることを発見しました-データの保存方法について読むことができます ここ 。次のコマンドを使用して、WALディレクトリの構築を観察できました

watch -d "Sudo du -s -B1 /home/pi/prometheus/data/*"

変更するファイルを適切に強調表示します。

enter image description here

Richie Frameがほのめかしたように、頻繁に(デフォルトではPrometheusでは2時間ごとであると思われますが、確認する必要があります)データはWALから圧縮され、より永続的なストレージに配置されます。必要なディスク容量の点で効率的です。 Grafanaで圧縮が行われていること(これは、Piがアイドル状態であったときに一晩かかったもの)と、解放されているディスク領域の一部を確認できます。

enter image description here

予想される2時間ではなく、4時間ごとにのみディスク容量が大幅に増加するように見える理由はわかりませんが、それは別の日の仕事です。皆様のご協力ありがとうございます!

4
teeeeee

私の提案は次のコマンドです:

watch -d "ls -lt /var/log/**/* | head"

watchは、デフォルトで次のコマンドを2秒ごとに実行します。 -dフラグは、各実行後の違いを強調表示します。

ls -ltは、ファイルの最終更新日(最新のものから)に従ってファイルを一覧表示します。**/*は、すべてのファイルを再帰的に検索するためのグロブです。

最後に、headは最初の10行のみを出力するために使用されます。

4
Panki

次のようなものを使用して、システムで最近更新されたファイルを見つけることができます

find / -type f -newermt '-5 minutes'`

これをサイズ表示と組み合わせることができます。

find / -type f -newermt '-5 minutes' -exec stat -c '%10s %n' {} + `
4
xenoid

ルートとしてcrontab -eのようにします

30 * * * * *   /root/checkmydiskspace.sh

bashスクリプトを実行します/root/checkmydiskspace.sh、作成する必要がある30分ごと。 crontabを調べて、より頻繁にチェックする必要があるかどうかを判断します。

そのスクリプトは次のようになり、ピンポイントを特定するのに役立つ情報を必ず出力しますwhere時間の経過とともにディスク領域が使い果たされています。

#!/bin/bash

now=$(date '+%Y-%m-%d-%H:%M')

filename=wheremydiskspacegone_$now.log

du -sh /* > /root/$filename

また、chmod 744 /root/checkmydiskspace.sh

作成されたログファイルを見て、何かが起こっている場所を見つけて、du -sh /* することが du -sh /usr/* 例えば; duが使用されているほとんどのスペースを示しているサブフォルダーに移動します。

もちろん、du -sh /*事前に確認し、どのフォルダに最も多くのものがあるかを確認します。これが原因である可能性があります。しかし、すべてのログファイルを使用して、X分ごとなど、具体的に何がどこで起こっているのかを推測するために必要なすべてのものがあります。次に、それを引き起こしているプログラムまたはプロセスを特定することが問題になります。

1
ron