教你恢复 Linux 被吃掉的磁盘空间

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

在服务器管理中,通过du和find命令可以找到占用空间大的目录或文件。但有时通过这些命令查找到的占用空间与df看到的磁盘空间占用不一致,可能是已删除文件占用了空间。可以使用lsof命令查看被占用的文件并重启应用释放空间。Linux文件系统默认保留5%的磁盘空间给root用户,可以通过tune2fs命令修改预留空间的比例。

🔎

延伸解读

du 与 df 不一致的常见原因

当 du 统计的占用空间远小于 df 显示的已用空间时,通常是因为有已删除文件仍被进程占用。文件被删除后,若进程未关闭该文件句柄,磁盘空间不会立即释放。此时可用 lsof +L1 查看这类文件,并重启相关应用来释放空间。

预留空间:df 中消失的 5%

df 输出中 Used 与 Avail 之和小于 Size,并非磁盘故障,而是 Linux 文件系统默认为 root 用户保留 5% 的空间,用于紧急情况,避免关键应用在磁盘满时立即崩溃。可通过 tune2fs -m 调整预留比例,例如设为 1%,从而释放部分空间。

查找大文件:du 与 find 的取舍

du 适合按目录层级统计空间,结合 -d 参数和 grep 过滤可快速定位大目录;find 则更快速灵活,能直接按文件大小搜索,如 find / -type f -size +1G。两者结合使用,能更高效地找到占用磁盘空间的元凶。

❓

Q&A

如何使用du命令查找占用磁盘空间大的目录?

可以使用du -hs命令列出各目录所占空间大小,结合-d参数设置查询的目录深度,并用grep过滤以找到大目录。

find命令与du命令相比有什么优势?

find命令比du更快速、灵活,适合查询大文件。

为什么df显示的磁盘空间与du查到的空间不一致?

可能是因为已删除文件占用了空间,虽然文件已删除,但资源没有释放。

如何查看被占用的文件并释放空间?

可以使用lsof +L1命令查看被占用的文件,重启相关应用可以释放空间。

Linux文件系统为什么要保留5%的磁盘空间?

Linux文件系统默认保留5%的磁盘空间给root用户,以应对紧急情况,确保关键应用在硬盘满时有余地。

如何修改Linux文件系统的预留空间比例?

可以使用tune2fs命令修改预留空间的比例,例如使用tune2fs -m 1 /dev/vda1。

🏷️

标签

➡️

继续阅读