我刚刚在 Raspberry Pi 3B 上全新安装了 Raspian Buster Lite,并安装了普罗米修斯随着节点导出器只需进行一些简单的诊断 - 特别是可用磁盘空间。
问题是可用磁盘空间似乎不断减少。我可以使用 检查可用字节数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
我可以使用以下命令在 Prometheus 数据库中检查此指标格拉法纳:
它很可能只是一些日志或其他东西,但我想更好地理解它。根据此图,空间似乎正在以每小时 2.9 MB 左右的速度减少,这对我来说似乎很多。
理想情况下,我想我正在寻找一种方法来仅查看大小已更改的文件,比如说在最后一刻或其他情况下。追踪其来源的好方法是什么?感谢您的耐心等待 - 我是 Linux 新手。
编辑
如果有人感兴趣,我发现几乎所有 2.9 MB/小时都可以归因于 Prometheus 中的预写日志 (WAL) - 您可以阅读有关它如何存储数据的信息这里。我能够使用命令观察 WAL 目录的建立
watch -d "sudo du -s -B1 /home/pi/prometheus/data/*"
它很好地突出显示了正在变化的文件:
正如 Richie Frame 暗示的那样,每隔一段时间(我相信在 Prometheus 中默认情况下应该是每 2 小时一次,但我需要检查一下)数据会从 WAL 中压缩并放入更永久的存储中,这更有效就所需磁盘空间而言是高效的。您可以在 Grafana 上看到压缩的发生(这是在一夜之间进行的,而 Pi 则闲置在那里),并且释放了一些磁盘空间:
我不知道为什么磁盘空间似乎每 4 小时就会大幅跳跃,而不是预期的 2 小时,但这是另一天的任务。感谢大家的帮助!
答案1
我的建议是这个命令:
watch -d "ls -lt /var/log/**/* | head"
watch
默认情况下每 2 秒运行一次以下命令。该-d
标志突出显示每次执行后的差异。
ls -lt
根据上次修改日期列出文件(首先是最新的),**/*
是一个递归查找所有文件的 glob。
最后,head
用于仅输出前 10 行。
答案2
您可以使用类似的方法找到系统上最近更新的文件
find / -type f -newermt '-5 minutes'`
您可以将其与尺寸显示结合起来:
find / -type f -newermt '-5 minutes' -exec stat -c '%10s %n' {} + `
答案3
作为 root 做crontab -e
并做类似的事情
30 * * * * * /root/checkmydiskspace.sh
这将每半小时运行一次 bash 脚本/root/checkmydiskspace.sh
,您必须创建该脚本。查找 crontab 并决定是否需要更频繁地检查。
该脚本将是这样的,并且会输出必要的信息来帮助您查明在哪里随着时间的推移,磁盘空间会被耗尽。
#!/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 分钟或其他时间,您就拥有了推断具体发生的情况和地点所需的一切。然后就需要确定是哪个程序或进程导致了这种情况。