- 首页 >
- 问答 >
-
云计算 >
- Ubuntu Swap如何优化磁盘空间
Ubuntu Swap如何优化磁盘空间
小樊
34
2025-12-06 12:17:41
Ubuntu Swap 磁盘空间优化指南
一 核心思路
- 明确目标:在保证稳定性的前提下,减少不必要的磁盘占用,同时避免频繁换页导致的卡顿。
- 优先顺序:先“控使用”(降低换出频率)、再“调大小”(匹配内存与场景)、最后“选实现”(分区/文件、启用压缩/休眠)。
- 关键手段:调整内核参数(如 swappiness)、启用 Zswap(内存压缩)、合理设置 Swap 大小、优先使用 SSD/NVMe、必要时清理或迁移现有 Swap。
二 快速检查与定位
- 查看内存与 Swap 使用:运行 free -h;查看活跃交换设备:swapon --show;查看详细:cat /proc/swaps。
- 观察换页压力:运行 vmstat 1,关注 si/so(Swap In/Out),持续大于 0 表示存在换页,数值越大压力越高。
- 检查磁盘空间:df -h;定位大目录:du -hs 目录名。这些有助于判断是否需要扩容或清理。
三 优化策略与推荐配置
- 调整 swappiness(控制内核使用 Swap 的积极性,范围 0–100)
- 查看:cat /proc/sys/vm/swappiness(默认多为 60)
- 临时降低换出倾向(示例设为 10):sudo sysctl vm.swappiness=10
- 永久生效:在 /etc/sysctl.conf 添加 vm.swappiness=10 后重启或执行 sysctl -p
- 经验值:桌面可保留 60;服务器常见 10;若需尽量不使用 Swap 可设 0(风险是更易触发 OOM)。
- 启用 Zswap(内核 4.0+,先压缩再写盘,显著减少磁盘 I/O)
- 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 添加:zswap.enabled=1 zswap.compressor=lz4
- 更新并重启:sudo update-grub && sudo reboot
- 适合 SSD/NVMe,能降低 Swap 读写对响应时间的影响。
- 合理设置 Swap 大小(按内存与用途)
- ≤ 2GB:2 × 内存(小内存设备必备)
- 2–8GB:≈ 内存大小
- > 8GB:4–8GB(大内存多为应急与缓冲)
- 服务器 > 64GB:1–4GB 或禁用(依赖 OOM Killer 策略)
- 需要休眠(Hibernate)的设备:Swap 容量应 ≥ 物理内存。
- 选择实现方式(分区 vs 文件)
- Swap 分区:性能略高、大小固定;适合传统场景或 HDD。
- Swap 文件:灵活易调、性能略低;适合 SSD/NVMe 与现代系统。
- 使用 SSD/NVMe 并监控
- 优先将 Swap 放在 SSD/NVMe 上以降低延迟;用 vmstat 1 持续观察 si/so 判断配置是否合理。
四 扩容与清理的实操步骤
- 创建或扩容 Swap 文件(示例设为 8GB)
- 创建:sudo fallocate -l 8G /swapfile(若失败可用 dd if=/dev/zero of=/swapfile bs=1M count=8192)
- 权限:sudo chmod 600 /swapfile
- 格式化:sudo mkswap /swapfile
- 启用:sudo swapon /swapfile
- 开机自启:在 /etc/fstab 写入 /swapfile none swap sw 0 0
- 验证:free -h、swapon --show。
- 调整现有 Swap 文件大小
- 关闭:sudo swapoff /swapfile
- 删除旧文件:sudo rm /swapfile
- 按上节步骤创建新大小并启用,更新 /etc/fstab。
- 使用 Swap 分区(示例 /dev/sdaX 或 /dev/nvme0n1pX)
- 格式化:sudo mkswap /dev/sdaX
- 启用:sudo swapon /dev/sdaX
- 开机自启:在 /etc/fstab 写入 /dev/sdaX none swap sw 0 0(或按 UUID 更稳健)。
- 清理与迁移
- 若存在无用的 /swapfile 且已启用分区,先 swapoff /swapfile、再 rm /swapfile,避免重复占用。
- 风险提示
- 调整前备份重要数据;操作 Swap 会影响系统性能与稳定性;在 SSD 上大量 Swap 会缩短寿命(视写入量与策略而定)。