在一般情况下,磁盘空间已满意味着磁盘空间已满,但某处有隐藏/小文件。就像这个表格所说的那样恢复丢失的磁盘空间
我知道我的磁盘使用量约4GB
为sda
(50GB 格式化)和 12GB sdb
(100GB 格式化),但我得到No space left on device
之前 -
我有一台带有 2 个驱动器的 GCP VM,其中 1 个启动盘为 30GB,另外还安装了 100GB。主驱动器仅安装了 ubuntu 22.04 + mysql 8.0。mysql 磁盘指向已安装的磁盘/mnt/disk/mysql_data
当我使用df -Th
时,它报告使用了 100% (30GB 可用 + 30GB 已使用) /
,当我使用时du
,ncdu
它报告仅使用了 15GB(结合已安装磁盘的数据)/
。
所以我已经发现可能df
会将安装的驱动器混淆为内部驱动器。
如果这样的话,我应该有 50% 的空闲空间。我尝试了许多解决方案,最终通过对 30GB 磁盘进行快照并使用之前的图像创建一个新的 50GB 磁盘,将我的驱动器大小从 GCP 调整为 50GB。
调整大小之前
/dev/root ext4 29G 29G 0 100% /
/dev/sdb xfs 100G 12G 88G 12% /mnt/disks/data_disk
调整大小后
/dev/root ext4 49G 3G 0 16.3% /
/dev/sdb xfs 100G 12G 88G 12% /mnt/disks/data_disk
现在读数突然正确了??所以案子了结。
现在 2 周后,我又遇到了同样的问题,使用率为 100%。挂载磁盘上的数据仍然是 12GB。当我尝试创建一个文件时,我得到了No space left on device
我找不到丢失的空间去哪儿了??
我试过
- 查找大文件
- 清理小文件
- 清洁日志
- 清理备份
- 清理缓存
- 建议的解决方案
这是我的df -h
输出
df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/root 6.2M 122K 6.1M 2% /
tmpfs 931K 1 931K 1% /dev/shm
tmpfs 800K 633 800K 1% /run
tmpfs 931K 4 931K 1% /run/lock
/dev/sda15 0 0 0 - /boot/efi
/dev/sdb 50M 8.8K 50M 1% /mnt/disks/data_disk
tmpfs 187K 20 187K 1% /run/user/0
答案1
有趣的是,这似乎是一个错误。/temp
读错了。在我解决之前,这里是df -h
输出
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 49G 49G 17M 100% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 692K 1.5G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda15 105M 5.3M 100M 5% /boot/efi
/dev/sdb 100G 13G 88G 13% /mnt/disks/data_disk
tmpfs 745M 0 745M 0% /run/user/0
正如您所见,tmpfs
它使用了不到 6GB 的空间,所以我从来没有费心去清理它,因为它的临时文件会被自动删除,而且清理 6GB 没有意义,因为它会解决读取错误。
我刚刚停止了 mysql 并运行了以下命令,
sudo rm -r /tmp/*
现在
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 49G 3.3G 46G 7% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 692K 1.5G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda15 105M 5.3M 100M 5% /boot/efi
/dev/sdb 100G 13G 88G 13% /mnt/disks/data_disk
tmpfs 745M 0 745M 0% /run/user/0
这解释了为什么在磁盘升级后存储显示为可用,因为/tmp
重新启动时存储就被清除了。
我关闭这个问题,因为它已经通过以下方法解决,结论是它是一个计算错误。
版本是
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
更新
作为@Macro前面提到的/tmp
是文件系统上的目录,它不一定与 相同tmpfs
,后者是文件系统。以前我以为/tmp
是tempfs
。