系统运行不到一个月,再次显示 100% 磁盘使用率 /
root@ed:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 394M 41M 353M 11% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 125G 125G 0 100% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda2 976M 290M 619M 32% /boot
/dev/loop0 56M 56M 0 100% /snap/core18/1885
secnaslg:/mnt/Z2/NFSBackup 11T 357G 9.8T 4% /mnt/backup
/dev/loop6 31M 31M 0 100% /snap/snapd/9607
/dev/loop3 31M 31M 0 100% /snap/snapd/9721
/dev/loop7 70M 70M 0 100% /snap/lxd/17936
/dev/loop5 70M 70M 0 100% /snap/lxd/18013
/dev/loop2 56M 56M 0 100% /snap/core18/1932
tmpfs 394M 0 394M 0% /run/user/0
临时目录只有 904K,交换文件只有 4G。DU 不包括 /mnt(包含已安装的 NFS 共享)总共只显示 12G
root@ed:~# du -h --summarize /tmp/
904K /tmp/
root@ed:~# du -h /swap.img
3.9G /swap.img
root@ed:~# du -h --exclude=/mnt --summarize /
12G /
上次我检查了几次,发现磁盘空间在慢慢增加(一周后从 8% 增加到 9%),机器是一个运行 LAMP 堆栈和基于 PHP 的连接器的虚拟机,它连接到 EDDN(游戏 Elite Dangerous 的数据网络)以获取市场数据并将其解析为 MySQL DB。
上次重启后(暂时)显示已使用 8%。我目前不急于使用机器,所以一直保持这种状态,希望有人能提供一些想法来检查。
这不仅仅是一个报告问题,无法将任何内容写入磁盘。
root@ed:~# echo 1 > test
-bash: echo: write error: No space left on device
答案1
我以前遇到过这个问题,这是由于在挂载操作将文件连接到相应的分区/设备之前,挂载点目录中存储的文件引起的。
要查找答案,请在恢复模式下重新启动系统并启动 shell。使用cat /etc/fstab
并查看每个未注释行(不以 # 号开头的行)的第二列来查找系统的挂载点。
在恢复模式下,根目录应该是唯一挂载的分区,并且是只读的,但我们正在分析系统,所以这并不重要,但如果您必须创建目录或编辑文件,请mount -o remount,rw /
在执行此操作之前使用其重新挂载为读写。
使用命令检查根文件系统中实际使用的空间du -x /
。此命令确保du
即使已安装其他文件系统,也不会深入其中。如果可用空间不足,则必须找到其使用位置。
接下来,使用du -x /directory
每个 fstab 挂载点检查每个目录中使用的空间。所有目录都应该是空的,如果不是,则说明问题出在了你身上。检查内容,看它们是否是一次性的,是否可以删除它们,如果不是,则挂载备份分区,在删除之前安全地将它们复制到那里。
如果挂载点/mnt/备份已经填满了,只需创建另一个目录,例如,/根/ tmp备份,并暂时将文件系统挂载在那里。为了避免为其编写完整命令,只需编辑/etc/fstab文件,复制所需的安装行以获得副本,在行首用 # 注释其中一个,并将另一个的第二列从/mnt/备份到/根/ tmp备份。保存文件并用 挂载它mount /root/tmpbackup
。这样,您可以在完成修复操作后恢复更改。
现在,如果所有挂载点都是空的(当然除了根目录),那么你必须找到根文件系统其余部分中所有空间的使用位置。为此,我建议安装北卡罗莱纳大学程序(apt install ncdu
)。要运行它,请ncdu -xq /directory
在控制台或终端中使用:。此命令将读取 /directory 树下的所有文件大小,并按目录大小排序显示它们。按 h 查看帮助屏幕,按 Enter 查看子目录内部,或按 q 退出。我总是在每个新系统中安装它以防万一。
如果您无法安装北卡罗莱纳大学,使用以下方法模拟(无需轻松导航)杜。例如,要检查 /var 下的大小,请使用:
du -csx /var/* | sort -nr | less
在哪里-s检查个别 * 参数,-C显示总计和-X限制杜到单个文件系统。由于结果以字节为单位,我们使用-编号按数字和反向对它们进行排序,并使用较少的。
我发现其他可能的罪魁祸首有时可能是系统或程序登录/var/日志填充报告的重复问题,或者,如果系统有完整的自动更新,可能是下载/解压的软件包填充了剩余空间,或者是我们忘记在系统某处存储的一些程序/文件。
祝你好运!
注意:抱歉文字量太大,但我更喜欢为未来阅读答案的初学者详细解释一些术语。
答案2
我没有足够的积分来发表评论。我愿意冒险并违反论坛规则,因为这可能会对某些人有所帮助。
对我来说,这似乎是一个错误。df -ih
如果您看到这些卷上有很大比例的空闲空间,请检查您的 inode。它们tempfs
可能读取不正确,并且必须占用所有空间,如果与我的情况相同,请尝试以下操作 -
停止所有应用程序/服务(如 mysql/nginx/php/redis 等)
然后
sudo rm -r /tmp/*
或者只是重新启动,就我的情况而言,我无法重新启动,因为我的服务器正在运行。