为什么要做磁盘清理与空间管理?¶
当你的Linux服务器提示“磁盘空间不足”时,系统可能会变得卡顿、应用无法安装或更新,甚至影响服务运行。定期清理和管理磁盘空间,能让系统保持高效运行,避免突发故障。本文将用简单易懂的方式,教你如何诊断和解决磁盘空间问题。
一、查看磁盘空间:先搞清楚“吃”了多少空间¶
1. 查看整体磁盘使用情况¶
最常用的命令是 df(Disk Free),它能显示所有挂载点的空间使用状态。
示例:
df -h
-h参数:将空间单位转为人类可读形式(如1K显示为1K,1024K显示为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.log、syslog)。
- 第二步:清理旧日志
日志文件可直接删除(需确认内容已备份或无需保留):
# 先查看日志内容,确认是否重要(以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. 调整分区大小(谨慎操作)¶
若需扩展现有分区(如根分区 /),需使用工具(如 parted、gparted)调整分区大小。⚠️ 风险较高,必须先备份数据!
- 步骤:卸载分区 → 调整大小 → 重新挂载。
- 建议:若对分区操作不熟悉,可联系服务器管理员或使用可视化工具(如 gparted)。
四、日常维护建议¶
- 定期检查磁盘空间:
每天或每周用df -h查看磁盘使用率,超过80%时及时清理。 - 设置日志轮转:
配置logrotate自动清理旧日志(如nginx、syslog日志)。 - 避免在根目录存放数据:
重要数据放在/home、/data等独立挂载点,减少根分区压力。 - 不要随意删除系统文件:
如/etc、/bin、/usr等目录下的系统文件需谨慎操作,避免破坏系统。
总结¶
磁盘清理与空间管理的核心是“定位大文件 → 清理无用数据 → 定期维护”。通过 df 和 du 命令快速诊断,优先清理日志、缓存和临时文件,再考虑扩容。日常养成定期检查的习惯,能有效避免磁盘空间不足的问题。记住:操作前务必备份重要数据,删除文件前确认用途,谨慎使用 rm 命令!