磁盘使用情况分析

LinuxBeginner
立即练习

简介

要清理已满的硬盘,你需要回答两个问题:

  1. 「哪些目录像巨型箱子一样占空间?」(占用空间大的目录)
  2. 「哪些文件像巨型物品一样占空间?」(大文件)

使用以下工具:

  • **find**:金属探测器(按大小查找文件)。
  • **du**:秤(统计目录大小)。
  • **sort**:整理器(按大小排序)。

在本实验中,你将执行一次专业的「春季大扫除」式磁盘审计。

这种分析方式在生产环境中很常见。当文件系统空间耗尽时,真正需要回答的问题通常不是「它是不是满了?」,而是「究竟是哪些文件或目录导致了这个问题?」。

查找大文件(find)

使用 find 捕获「大鱼」:查找大于 100 MB 的文件。

cd ~/project
find . -type f -size +100M

参数说明:

  • .:当前目录。
  • -type f:只匹配文件。
  • -size +100M:匹配大于 100 MB 的文件。

find 命令的强大之处在于,它可以根据规则搜索,而不需要手动浏览目录。因此,在大型或杂乱的文件系统中,它尤其有用。

输出示例:

./storage/backup_v1.iso

将报告保存到文件中:

find . -type f -size +100M > large_files.txt
cat large_files.txt

分析目录大小(du)

有时,问题并不是某个大文件,而是一个堆满许多小文件的「杂物抽屉」。

使用 du 统计 /var(可变数据目录)的大小:

sudo du -h --max-depth=1 /var

参数说明:

  • -h:以便于人类阅读的格式显示大小(MB、GB)。
  • --max-depth=1:只显示顶层子目录(这一点非常重要)。

输出示例:

246M    /var/cache
5.5G    /var/lib
...

现在可以看出,/var/lib 就是占用空间最大的目录。

分析目录级别的大小很有用,因为存储问题通常有两种原因:某个文件特别大,或者文件系统的某个区域随着时间推移积累了大量数据。

按大小排列目录(sort)

杂乱无序的列表很难阅读。使用 sort 整理结果。

将 du、sort 和 head 组合起来,使用这个「黄金组合」:

sudo du -h --max-depth=1 /var | sort -hr | head -n 5 > ~/project/top_var_dirs.txt

参数说明:

  • du ...:获取目录大小。
  • sort -hr:按便于人类阅读的大小格式进行逆序排序(最大的排在最前面)。
  • head -n 5:只显示前 5 项。

查看报告:

cat ~/project/top_var_dirs.txt

这是系统管理员常用的标准工作流程。

请记住这个流程:先定位占用空间最大的区域,再对结果排序,最后优先清理最有可能产生最大效果的位置。

总结

在本实验中,你学会了像「侦探」一样分析磁盘空间。

  • **find -size**:帮助你找出具体的大文件(「大鱼」)。
  • **du -h --max-depth=1**:帮助你统计主要目录的大小(「巨型箱子」)。
  • **sort -hr**:帮助你按大小排列目录,从而确定清理优先级。

使用这些工具,你可以快速回答「我的服务器为什么满了?」并在问题扩大之前解决它。