快速诊断
# 查看磁盘使用情况
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-alertLast updated on