如何优化 Linux 上的存储空间
15 分钟阅读 - 2026年5月22日

在 Linux 服务器上回收和优化磁盘空间的实用技术,从软件包缓存清理到文件系统调整和自动维护。
如何优化 Linux 系统的存储空间
多年来,面对磁盘空间不足的问题,默认的解决方案很简单:增加存储空间。当时存储成本低廉。但如今情况已然不同。自 2025 年末以来,受人工智能基础设施需求消耗全球产能的影响,NAND 闪存价格已大幅飙升。 仅在2026年第一季度,企业级SSD的合约价格就上涨了85%-90%,消费级NVMe硬盘的市价也大致翻了一番,而新的NAND生产能力预计要到2027年才能投产。
结果是:服务器上每GB存储空间的成本都比一年前更高,这使得优化现有资源比通过购买新设备来解决问题要划算得多。本文将介绍如何找出占用磁盘空间的元凶、清理这些数据,以及如何配置文件系统以更高效地利用存储空间。
查找占用磁盘资源的程序
首先运行 df -h 以获取所有已挂载文件系统的快照,包括总大小、已用空间及使用百分比。任何使用率超过 90% 的分区都需要关注。如有必要,请单独检查特定分区:
df -h /
df -h /boot切勿忽略 inodes。文件系统可能存在可用空间却无可用 inodes,这会导致同样的故障。请使用 df -i.
如果 df 显示 100% 占用率但各项数据加总不符,则很可能是存在“幽灵文件”。这些文件已被删除,但仍被运行中的进程占用。除非该进程释放文件句柄,否则空间无法被回收。使用以下命令查找:
sudo lsof / | grep deleted一旦确定了哪些文件系统压力较大,请使用 du 或 ncdu。若需快速检查或编写脚本, du 是理想工具:
du -h --max-depth=1 /var添加 -x ,即可在从根目录开始扫描时保持在单一文件系统内,并跳过诸如 /proc。若要在远程服务器上进行交互式探索, ncdu 提供了一个可导航的文本界面,您可以在其中按大小排序并直接删除文件。
| 功能 | du | ncdu |
|---|---|---|
| 界面 | 静态命令行输出 | 带方向键导航的交互式 TUI |
| 最适合 | 脚本编写和快速检查 | 在远程服务器上手动探索 |
| 排序 | 需要通过管道传输至 sort | 内置(按大小、名称等) |
| 文件删除 | 单独的 rm 命令 | 内置(按 d) |
清理包缓存、日志和重复文件
有三个领域始终占据着可回收空间的最大份额:软件包缓存、日志文件以及大文件或重复文件。
软件包缓存与孤立依赖项
每次安装或更新都会留下缓存的软件包文件。随着时间推移,这些文件会悄然堆积。请根据您的发行版进行清理:
| 任务 | Debian/Ubuntu (APT) | Fedora/RHEL (DNF) | Arch (Pacman) |
|---|---|---|---|
| 清除缓存 | sudo apt clean | sudo dnf clean all | sudo paccache -r |
| 移除孤立包 | sudo apt autoremove | sudo dnf autoremove | pacman -Rs $(pacman -Qdtq) |
| 清除残留配置 | sudo apt autoremove --purge | 由 autoremove 处理 | 不适用 |
请先使用 sudo apt autoremove --dry-run。旧内核在 Ubuntu 系统上可能占用 1.5GB 或更多空间。删除旧版本前,请务必保留当前运行的内核及一个备份版本。
若使用 Snap 或 Flatpak,这些组件也会累积修订版本和运行时文件:
sudo snap set system refresh.retain=2
flatpak uninstall --unused/var/log 中的日志文件
日志文件是最常见的隐形磁盘空间消耗源。请优先查找体积过大的日志文件:
du -xhd1 /var/log | sort -h
find /var/log -type f -size +100M对于 systemd 日志,请使用内置的 vacuum 工具,而非手动删除文件:
sudo journalctl --vacuum-size=500M要设置永久限制,请编辑 /etc/systemd/journald.conf:
SystemMaxUse=500M
MaxRetentionSec=14day对于仍被服务保持打开状态的活跃日志文件,请勿使用 rm。只要进程持有文件描述符,空间就不会被释放。请改用 truncate:
sudo truncate -s 0 /var/log/syslog大文件与重复文件
查找整个系统中大于 500MB 的文件:
sudo find / -type f -size +500M -exec ls -lh {} +对于重复文件, rmlint 采用基于哈希的比较来检测重复文件、空目录和损坏的符号链接。在删除任何内容之前,请仔细审查其输出结果,特别是在同一文件可能承担不同作用的服务器上。
文件系统级优化
清理文件后,您可以通过调整文件系统,在同一硬件上释放出更多可用空间。
减少 ext4 保留空间
默认情况下,ext4 会为根文件系统预留 5% 的空间。在 2TB 的数据分区中,这意味着有 100GB 处于闲置状态。在数据分区并非根文件系统的专用服务器上,您可以安全地减少此预留空间:
sudo tune2fs -m 1 /dev/sdXn这将保留空间设置为 1%,对于大多数使用场景已足够。使用 tune2fs -l /dev/sdXn.
Btrfs 透明压缩
Btrfs 支持透明文件压缩,这是 ext4 和 XFS 所不具备的。使用 compress=zstd 参数挂载,即可在写入时自动压缩数据。ZSTD 能在速度与压缩率之间取得良好平衡。对于混合文件工作负载, compress-force=zstd 通过压缩通常会被启发式算法跳过的文件,可额外节省 10-20% 的空间。
要压缩 Btrfs 卷上的现有数据:
btrfs filesystem defragment -czstd /path/to/dir在包含快照或引用链接的卷上操作时请务必谨慎。碎片整理会破坏写时复制关系,实际上可能增加磁盘使用率。
用于即时副本的 reflinks
XFS 和 Btrfs 均支持 reflinks,该机制会创建共享物理块的文件副本,直到其中一个副本被修改为止。这对于克隆虚拟机磁盘映像或容器层非常有用,且不会使存储消耗翻倍:
cp --reflink=always source.img clone.imgLVM 薄 Provisioning
LVM 薄 Provisioning 允许您分配超过物理空间的逻辑空间,仅在写入数据时才消耗实际磁盘空间。当运行多个虚拟机或容器时,这非常有用——每个虚拟机或容器都需要自己的逻辑卷,但不会同时填满所有卷。
为防止精简池空间耗尽,请在 /etc/lvm/lvm.conf 中启用自动扩展 thin_pool_autoextend_threshold 并 thin_pool_autoextend_percent.
存储维护自动化
手动清理只能解决一次问题。而自动化清理则能在您下次登录之前,始终保持磁盘的健康状态。使用 systemd 定时器 cron 。它们会将输出日志 journalctl ,并 Persistent=true 会在重启后补上错过的运行。
| 任务 | 工具 | 频率 |
|---|---|---|
| 日志轮换 | logrotate | 每日或每周 |
| 日志清理 | journalctl --vacuum-time | 每周 |
| 包缓存清理 | apt clean / dnf clean all | 每月 |
| 临时文件清理 | systemd-tmpfiles | 每日 |
| Docker 清理 | docker system prune | 每周 |
| 磁盘使用情况监控 | 自定义脚本 + systemd 定时器 | 每 15-30 分钟 |
Docker 值得特别关注。容器日志可能会在没有任何明显警告的情况下不断增长。通过编辑 /etc/docker/daemon.json。设置 max-size 并 max-file 在 log-opts 键下设置和,以防止单个容器占满磁盘空间。
为了主动监控,请设置两级警报系统:磁盘使用率达到 80% 时发出警告,达到 90% 时发出严重警报。每小时记录磁盘使用情况,以便您跟踪增长趋势并预测分区何时会达到容量上限:
0 * * * * df --output=source,size,used,pcent >> /var/log/disk_usage.csv另一项防护措施:挂载 /var, /tmp,并 /home 分别挂载在不同的分区上。这样可以防止失控的日志或用户数据占用根文件系统,从而导致整个系统崩溃。
让每一千兆字节都物尽其用
随着存储价格持续攀升,且预计要等到 2027 年新的 NAND 产能投产后才能缓解,优化现有资源不仅是一种良好实践,更能切实节省成本。方法很简单:
- 使用
df,du,并ncdu在进行任何更改前。 - 清除软件包缓存、轮换日志并删除重复数据,以立即回收空间。
- 调整文件系统。减少 ext4 预留块、启用 Btrfs 压缩,或使用 LVM 精简配置,从而在现有硬件上获得更高利用率。
- 利用 systemd 定时器实现维护自动化,确保在两次检查之间磁盘始终保持整洁。
- 监控使用趋势,并在 80% 和 90% 阈值设置警报,以便及早发现问题。
如果您需要配备高性能 NVMe 存储的专用服务器基础设施,FDC 的专用服务器正是为此而打造。
如何优化 Linux 上的存储空间
15 分钟阅读 - 2026年5月22日