插件窝 干货文章 教你恢复 Linux 被吃掉的磁盘空间

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

文件 空间 占用 sudo 593    来源:    2025-05-13

恢复 Linux 被占用的磁盘空间

当 Linux 系统磁盘空间不足时,通常有以下几种情况会导致空间"被吃掉"。下面我将介绍如何查找和恢复这些空间。

1. 查找大文件和目录

首先使用以下命令找出占用空间最多的目录:

# 查看各分区使用情况
df -h

# 查看当前目录下各子目录大小
du -sh * | sort -h

# 查找大于100MB的文件
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | awk '{ print $9 ": " $5 }'

2. 常见占用空间的原因及解决方案

2.1 日志文件占用

系统日志和应用程序日志可能占用大量空间:

# 查看/var/log目录大小
du -sh /var/log

# 清空特定日志文件(例如syslog)
sudo truncate -s 0 /var/log/syslog

# 使用logrotate管理日志
sudo logrotate -f /etc/logrotate.conf

2.2 已删除但未释放的文件

被进程占用的已删除文件会占用空间:

# 查找已删除但未释放的大文件
sudo lsof | grep deleted

# 重启相关进程或系统以释放空间
# 或者直接终止相关进程(谨慎操作)

2.3 软件包缓存

# 清理apt缓存(适用于Debian/Ubuntu)
sudo apt-get clean
sudo apt-get autoclean

# 清理yum缓存(适用于RHEL/CentOS)
sudo yum clean all

2.4 临时文件

# 清理/tmp目录
sudo rm -rf /tmp/*

# 清理旧的内核版本(释放/boot空间)
sudo apt-get autoremove --purge  # Debian/Ubuntu
sudo package-cleanup --oldkernels --count=1  # RHEL/CentOS

2.5 Docker占用

如果使用Docker,可能会有大量未清理的镜像和容器:

# 清理无用的Docker对象
docker system prune -a --volumes

3. 高级空间恢复技巧

3.1 使用ncdu工具

安装ncdu进行交互式磁盘使用分析:

sudo apt-get install ncdu  # Debian/Ubuntu
sudo yum install ncdu     # RHEL/CentOS

# 扫描目录
ncdu /

3.2 检查稀疏文件

稀疏文件可能占用比显示更大的空间:

# 查找稀疏文件
find / -type f -printf "%S\t%p\n" | awk '$1 < 1.0 {print}' | sort -n

3.3 检查文件系统保留空间

# 查看文件系统保留空间比例(通常5%)
tune2fs -l /dev/sda1 | grep "Reserved block count"

# 修改保留空间比例(谨慎操作)
sudo tune2fs -m 1 /dev/sda1  # 设置为1%

4. 预防措施

  1. 设置日志轮转策略
  2. 定期清理临时文件
  3. 监控磁盘使用情况
  4. 考虑使用LVM以便扩展分区
  5. 对大容量目录(如/var)使用单独分区

通过以上方法,您应该能够找出并恢复大部分"丢失"的磁盘空间。如果问题依然存在,可能需要考虑扩展磁盘容量或迁移部分数据。