磁盘使用率显示为 100%,但实际只使用了 10%

磁盘使用率显示为 100%,但实际只使用了 10%

这是DF显示使用率为100%,重启后显示使用率为8%

系统运行不到一个月,再次显示 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/*

或者只是重新启动,就我的情况而言,我无法重新启动,因为我的服务器正在运行。

Ubuntu 22.04 Server 全新安装时磁盘使用情况报告不正确

相关内容