Skip to Content
文档参考故障排查磁盘空间爆满

快速诊断

# 查看磁盘使用情况 df -h # 查看各目录占用 du -sh /* 2>/dev/null | sort -rh | head -20 # 查看当前目录下大文件 du -sh * | sort -rh | head -20

清理 APT 缓存

APT 下载的 .deb 包默认保存在缓存中:

# 查看缓存大小 du -sh /var/cache/apt/archives/ # 清除所有缓存 sudo apt clean # 仅清除过期缓存 sudo apt autoclean # 删除不再需要的依赖 sudo apt autoremove

清理 Snap 包

Snap 默认保留旧版本快照,可能占用大量空间:

# 查看 snap 占用 du -sh /var/lib/snapd/snaps/ du -sh ~/snap/ # 列出所有 snap 版本 snap list --all # 删除旧版本 snap(保留当前版本) sudo snap set system refresh.retain=2 # 手动清理所有禁用的旧版本 snap list --all | awk '/disabled/{print $1, $3}' | \ while read name rev; do sudo snap remove "$name" --revision="$rev" done

清理系统日志

# 查看日志占用 journalctl --disk-usage # 保留最近 7 天的日志 sudo journalctl --vacuum-time=7d # 限制日志最大占用 500MB sudo journalctl --vacuum-size=500M # 永久限制日志大小 sudo nano /etc/systemd/journald.conf # 设置:SystemMaxUse=500M sudo systemctl restart systemd-journald

清理旧内核

# 查看已安装的内核 dpkg --list | grep linux-image # 查看当前使用的内核 uname -r # 删除旧内核(不要删除当前使用的!) sudo apt purge linux-image-旧版本号-generic sudo apt autoremove # 自动清理不再需要的旧内核(purge-old-kernels 已废弃) sudo apt autoremove --purge

查找大文件

# 查找大于 100MB 的文件 sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh # 使用 ncdu 交互式分析(推荐) sudo apt install ncdu sudo ncdu /

ncdu 提供交互式界面,可以直观地查看和定位大文件/目录。

清理用户缓存

# 浏览器缓存 du -sh ~/.cache/ rm -rf ~/.cache/thumbnails/* rm -rf ~/.cache/mozilla/firefox/*/cache2/* rm -rf ~/.cache/google-chrome/Default/Cache/* # Flatpak 缓存 flatpak uninstall --unused

清理 /tmp

# 查看 /tmp 大小 du -sh /tmp/ # 系统重启会自动清理 /tmp # 手动清理超过 7 天的临时文件 sudo find /tmp -type f -atime +7 -delete

清理 Docker(如果已安装)

# 查看 Docker 占用 docker system df # 清理未使用的镜像、容器、网络 docker system prune -a # 清理构建缓存 docker builder prune

扩展磁盘空间

LVM 扩容

# 查看 LVM 状态 sudo lvs sudo vgs # 如果 VG 有剩余空间 sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

挂载额外硬盘

# 格式化新硬盘 sudo mkfs.ext4 /dev/sdb1 # 挂载 sudo mkdir -p /mnt/data sudo mount /dev/sdb1 /mnt/data # 写入 fstab 持久化 echo "UUID=$(blkid -s UUID -o value /dev/sdb1) /mnt/data ext4 defaults 0 2" | sudo tee -a /etc/fstab

磁盘使用监控

设置磁盘空间告警,防止再次爆满:

# 简单的 cron 检查脚本 cat << 'SCRIPT' | sudo tee /usr/local/bin/disk-alert.sh #!/bin/bash USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') if [ "$USAGE" -gt 90 ]; then echo "警告:根分区使用率已达 ${USAGE}%" | \ systemd-cat -t disk-alert -p warning fi SCRIPT sudo chmod +x /usr/local/bin/disk-alert.sh # 每小时检查 echo "0 * * * * root /usr/local/bin/disk-alert.sh" | sudo tee /etc/cron.d/disk-alert
Last updated on