今天我们服务器的硬盘突然满了。之前几周和几个月里,磁盘使用率一直保持在 50% 左右(服务器会定期删除旧数据)。
我删除了 /tmp 中的 10 GB 文件,奇怪的是释放了 51 GB。以下是我所做的:
root@***:~# df -h
Dateisystem Size Used Avail Use% Eingehängt auf
/dev/sda3 139G 137G 0 100% /
tmpfs 3,9G 0 3,9G 0% /lib/init/rw
udev 3,9G 116K 3,9G 1% /dev
tmpfs 3,9G 0 3,9G 0% /dev/shm
/dev/sda1 985M 25M 910M 3% /boot
root@***:/var# du -hs *
3,3M backups
438M cache
9,4G lib
4,0K local
12K lock
76M log
24K mail
4,0K opt
88K run
184K spool
10G tmp
12K www
root@***:/var/tmp# find -type f -print0 | xargs -0 rm
root@***:/var/tmp# df -h
Dateisystem Size Used Avail Use% Eingehängt auf
/dev/sda3 139G 81G 51G 62% /
tmpfs 3,9G 0 3,9G 0% /lib/init/rw
udev 3,9G 116K 3,9G 1% /dev
tmpfs 3,9G 0 3,9G 0% /dev/shm
/dev/sda1 985M 25M 910M 3% /boot
有没有解释为什么删除 /tmp 中的 10 GB 后磁盘上又恢复了 51 GB?这是否意味着 SSD 故障?Debian 是否有任何工具可以测试 SSD 健康状况?
我已经检查了系统日志。与此事件相关的第一个条目是 mysql 消息:
1:22:02 [ERROR] /usr/sbin/mysqld: Disk is full writing...
所以我根本不知道这是什么原因造成的。
答案1
猜测是某个程序打开了一个或多个非常大的文件,但已将其删除,因此它们在文件系统中不再可见。这是处理临时文件的常用技巧。
它可能阻止尝试写入这些文件并由于空间不足而失败,然后当您腾出一些空间时,它能够完成正在执行的操作并关闭文件,从而释放它们所使用的空间。
答案2
这可能与 SSD 故障无关。虽然您可能遇到某种形式的文件系统损坏,但我认为您会看到更明显的症状。
我已经发布这里关于如何检查 SSD 驱动器的健康状况。
至于您的另一个问题(删除 10GB 如何产生 50GB 的可用空间),我认为 TomH 的回答可能是正确的。