为什么要做磁盘清理与空间管理?

当你的Linux服务器提示“磁盘空间不足”时,系统可能会变得卡顿、应用无法安装或更新,甚至影响服务运行。定期清理和管理磁盘空间,能让系统保持高效运行,避免突发故障。本文将用简单易懂的方式,教你如何诊断和解决磁盘空间问题。

一、查看磁盘空间:先搞清楚“吃”了多少空间

1. 查看整体磁盘使用情况

最常用的命令是 df(Disk Free),它能显示所有挂载点的空间使用状态。
示例

df -h
  • -h 参数:将空间单位转为人类可读形式(如 1K 显示为 1K1024K 显示为 1M)。

输出解释
| 列名 | 含义 |
|------------|----------------------------------------------------------------------|
| Filesystem | 磁盘设备名称(如 /dev/sda1) |
| Size | 磁盘总容量 |
| Used | 已用空间 |
| Avail | 可用空间 |
| Use% | 使用率(超过80%时需警惕) |
| Mounted on | 该磁盘挂载的目录(如 / 是根目录,/home 是用户主目录挂载点) |

注意df -h 会显示所有文件系统,包括临时文件系统(如 /tmp),但临时文件通常可安全清理。

2. 查看单个目录/文件的大小

如果 df 显示磁盘整体满了,需要定位具体哪个目录占用了空间,用 du(Disk Usage)命令。
示例1:查看某个目录的总大小

du -sh /var/log
  • -s 参数:仅显示目录的总大小(不递归子目录);-h 同上,转为人类可读单位。
  • 若想查看 /var/log 下所有子目录的大小,去掉 -s 即可:du -h /var/log

示例2:递归查找大文件
如果想找系统中所有超过100MB的文件,用 find 命令:

find / -type f -size +100M 2>/dev/null
  • -type f:只找普通文件(排除目录、设备等);
  • -size +100M:文件大小超过100MB;
  • 2>/dev/null:屏蔽错误信息(如无权限访问的目录)。

二、磁盘清理:删除“不需要的空间”

1. 清理日志文件(最常见的“空间杀手”)

日志文件(如 /var/log 下的文件)是磁盘空间的主要占用者,尤其是系统日志、应用日志(如Nginx、MySQL日志)。
操作步骤
- 第一步:查看日志目录大小

  du -sh /var/log/*

找到占用大的日志文件(如 nginx/access.logsyslog)。

  • 第二步:清理旧日志
    日志文件可直接删除(需确认内容已备份或无需保留):
  # 先查看日志内容,确认是否重要(以Nginx日志为例)
  tail /var/log/nginx/access.log
  # 若确认无用,清空或删除(注意:若日志服务正在运行,直接删除可能导致日志丢失,建议先截断)

  # 清空日志(推荐,不影响服务运行)
  > /var/log/nginx/access.log

  # 或删除旧日志文件(需确保文件名正确,避免误删)
  rm -f /var/log/nginx/access.log.1  # 删除带编号的旧日志(如.log.1、.log.2)

技巧:系统日志通常由 logrotate 工具自动轮转(生成旧日志文件并清空),可通过 logrotate 配置自动清理。

2. 清理缓存和临时文件

Linux会缓存数据到内存提升性能,但若内存不足,缓存可能占用大量磁盘空间。
清理系统缓存

# 1. 先同步数据到磁盘(避免数据丢失)
sync

# 2. 释放缓存(需root权限)
sudo sysctl -w vm.drop_caches=3
  • vm.drop_caches=3:释放所有缓存(包括页面缓存、目录项缓存等),系统会自动恢复缓存。

清理临时文件
系统临时文件(如 /tmp/var/tmp)可安全清理:

# 清理/tmp目录下所有文件(注意:临时文件可能被其他程序占用,建议先确认)
sudo rm -rf /tmp/*

# 清理apt缓存(Debian/Ubuntu系统,yum/dnf同理)
sudo apt clean  # 清理所有已下载的安装包缓存
sudo apt autoclean  # 只清理过期的安装包缓存

3. 清理用户数据和旧文件

用户目录(如 /home)或共享目录可能存放大量冗余文件:
步骤
- 检查主目录大文件

  # 查看当前用户主目录下的大文件(如超过100MB)
  du -sh ~/.*  # ~ 表示当前用户主目录
  # 进入目录确认文件用途
  cd ~/Downloads  # 检查下载目录
  du -sh *  # 查看目录内文件大小
  • 删除无用文件
    警告:删除前务必确认文件用途!
  # 删除指定文件(如确认无用的大文件)
  rm ~/Downloads/large_file.zip

  # 删除多个文件(如确认所有*.tmp临时文件)
  rm ~/tmp/*.tmp

安全操作:若不确定文件是否有用,先用 ls 列出文件,确认后再删除:

ls ~/old_data  # 查看目录内容
rm -i ~/old_data/unused_file  # -i 参数会提示确认删除

三、空间不足时的“扩容”思路

如果清理后仍空间不足,可能需要扩容磁盘:

1. 挂载新磁盘(推荐)

若服务器有未挂载的新磁盘,直接挂载即可:

# 查看新磁盘设备名(如 /dev/sdb)
lsblk

# 格式化磁盘(仅首次操作,需确认设备名!)
sudo mkfs.ext4 /dev/sdb

# 创建挂载点目录
sudo mkdir /mnt/new_disk

# 挂载磁盘
sudo mount /dev/sdb /mnt/new_disk

# 永久挂载(避免重启后失效)
sudo vim /etc/fstab  # 编辑fstab文件,添加一行:
/dev/sdb   /mnt/new_disk   ext4   defaults   0   0

2. 调整分区大小(谨慎操作)

若需扩展现有分区(如根分区 /),需使用工具(如 partedgparted)调整分区大小。⚠️ 风险较高,必须先备份数据!
- 步骤:卸载分区 → 调整大小 → 重新挂载。
- 建议:若对分区操作不熟悉,可联系服务器管理员或使用可视化工具(如 gparted)。

四、日常维护建议

  1. 定期检查磁盘空间
    每天或每周用 df -h 查看磁盘使用率,超过80%时及时清理。
  2. 设置日志轮转
    配置 logrotate 自动清理旧日志(如 nginxsyslog 日志)。
  3. 避免在根目录存放数据
    重要数据放在 /home/data 等独立挂载点,减少根分区压力。
  4. 不要随意删除系统文件
    /etc/bin/usr 等目录下的系统文件需谨慎操作,避免破坏系统。

总结

磁盘清理与空间管理的核心是“定位大文件 → 清理无用数据 → 定期维护”。通过 dfdu 命令快速诊断,优先清理日志、缓存和临时文件,再考虑扩容。日常养成定期检查的习惯,能有效避免磁盘空间不足的问题。记住:操作前务必备份重要数据,删除文件前确认用途,谨慎使用 rm 命令!

小夜