温馨提示×

Debian环境下如何优化磁盘空间

小樊
39
2025-12-28 13:36:01
栏目: 云计算

Debian 磁盘空间优化实操指南

一 快速定位占用

  • 查看分区使用率:df -h(关注 Use% 接近 100% 的分区)。
  • 查看块设备与分区:lsblk(确认磁盘、分区、挂载点)。
  • 分析目录占用:
    • 交互式定位大目录:sudo apt-get install ncdu && ncdu /path
    • 查看目录总大小:du -sh /var /home /usr
  • 查找大文件:sudo find / -type f -size +1G -exec ls -lh {} ; 2>/dev/null(从根目录向下找大于 1GB 的文件)。

二 清理可安全释放的空间

  • APT 缓存与历史
    • 清理已下载包:sudo apt-get clean
    • 仅删旧版本:sudo apt-get autoclean
    • 删除孤立包与无用依赖:sudo apt-get autoremove --purge
    • 可选:清理包索引列表缓存:sudo rm -rf /var/lib/apt/lists/ && sudo apt-get update*
  • 日志与临时文件
    • 清理 systemd 日志:sudo journalctl --vacuum-time=2weeks(保留最近两周,可按需改为 1month
    • 清理临时文件:sudo rm -rf /tmp/*(建议在单用户或维护模式执行)
  • 旧内核(谨慎)
    • 查看当前内核:uname -r
    • 列出可移除旧内核包:dpkg --list | grep linux-image
    • 删除指定旧内核:sudo apt-get purge linux-image-<版本号>-
    • 更新引导:sudo update-grub
  • 第三方清理工具(可选)
    • 图形化清理:sudo apt-get install bleachbit && bleachbit(按需勾选项,避免误删)。

三 查找并处理大文件与重复文件

  • 定位大文件:sudo find / -type f -size +1G -exec ls -lh {} ; 2>/dev/null
  • 定位大目录:sudo du -xh / | sort -hr | head -n 20(只看本文件系统,按大小倒序)
  • 查找重复文件:sudo apt-get install fdupes && fdupes -r /path(先预览再删除)
  • 归档压缩不常用数据:tar -czvf archive.tar.gz /path/to/dir(释放空间同时保留归档)。

四 长期优化与扩容

  • 配置日志轮转
    • 编辑策略:sudo nano /etc/logrotate.conf 或在 /etc/logrotate.d/ 下为具体服务配置(设置 maxsizerotatecompressmissingok 等),避免日志无限增长。
  • 使用 LVM 在线扩容(若已采用 LVM)
    • 扩展逻辑卷:sudo lvextend -L +10G /dev/vg0/root
    • 在线调整文件系统(ext4):sudo resize2fs /dev/vg0/root
    • 扩展前建议:lvdisplayvgdisplay 查看可用空间与卷组状态。
  • 调整分区与新增磁盘
    • 分区工具:fdisk /dev/sdXparted /dev/sdX
    • 图形化:sudo apt-get install gparted && gparted
    • 格式化与挂载:sudo mkfs.ext4 /dev/sdX1 && sudo mount /dev/sdX1 /mnt/data
    • 开机自动挂载:在 /etc/fstab 添加条目(建议使用 UUIDLABEL)。
  • 监控与告警
    • 定期查看:df -hiostat(I/O 压力)、Glances(综合监控)。

五 安全与回退建议

  • 重要操作前先备份关键数据与配置(如 /etc、数据库、用户目录)。
  • 删除旧内核前确认当前运行内核:uname -r,避免误删正在使用的内核。
  • 清理 /tmp 建议在维护模式或确保无服务依赖相关临时文件时进行。
  • 清理 APT 索引后记得 sudo apt-get update,避免软件源信息缺失。
  • 谨慎使用通配删除与递归删除,优先用工具(如 ncdufdupes)确认目标后再执行。

0