ubuntu swap激活步骤解析
小樊
42
2025-11-20 19:09:42
Ubuntu 中 Swap 的激活与常用管理
一、前置检查
- 查看是否已有 Swap 在使用:free -h、swapon --show、cat /proc/swaps。
- 确认磁盘空间与路径可写(创建文件前)。
- 需要持久化时准备编辑 /etc/fstab(操作前建议备份)。
以上命令用于确认当前状态与后续验证,均为系统管理常用工具,适用于 Ubuntu 桌面与服务器 场景。
二、激活 Swap 的两种方式
-
方式 A:使用 Swap 文件(灵活、易调整)
- 创建文件(示例 4GB):
- 推荐:sudo fallocate -l 4G /swapfile
- 兼容备选:sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
- 设置安全权限:sudo chmod 600 /swapfile
- 格式化为 Swap:sudo mkswap /swapfile
- 立即启用:sudo swapon /swapfile
- 持久化(开机自动挂载):
- 编辑 /etc/fstab,新增:/swapfile none swap sw 0 0
- 或使用命令追加:echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
- 验证:free -h、swapon --show 应能看到 /swapfile。
说明:fallocate 更快,但在少数文件系统/环境上可能不可用,此时使用 dd 更稳妥。
-
方式 B:使用 Swap 分区(传统、性能略优)
- 确认或创建分区(如 /dev/sdaX),并格式化为 Swap:sudo mkswap /dev/sdaX
- 立即启用:sudo swapon /dev/sdaX
- 持久化:
- 使用设备路径:/dev/sdaX none swap sw 0 0(写入 /etc/fstab)
- 或使用 UUID(更稳健,推荐):
- 获取 UUID:sudo blkid
- 写入:UUID=xxxx none swap sw 0 0(将 xxxx 替换为实际 UUID)
- 验证:free -h、swapon --show。
说明:分区方式大小固定、调整不便;使用 UUID 可避免设备名变化导致挂载失败。
三、验证与常用管理
- 验证是否生效:free -h(看 Swap 总量与已用)、swapon --show(列出活跃 Swap)、cat /proc/swaps。
- 临时关闭全部 Swap:sudo swapoff -a;验证:free -h 或 swapon --show。
- 永久关闭:编辑 /etc/fstab,注释或删除与 Swap 相关的行,保存后重启验证。
- 调整 Swap 使用倾向(swappiness,范围 0–100):
- 查看:cat /proc/sys/vm/swappiness
- 临时修改(示例设为 10):sudo sysctl vm.swappiness=10
- 永久修改:echo ‘vm.swappiness=10’ | sudo tee -a /etc/sysctl.conf
提示:服务器为减少磁盘 I/O 可设较低值(如 10),桌面环境常用默认值 60。
四、大小建议与性能优化
- 推荐 Swap 大小(经验值,按场景微调):
| 物理内存 |
推荐 Swap |
说明 |
| ≤ 2GB |
2 × 内存 |
小内存设备必备 |
| 2–8GB |
≈ 内存大小 |
平衡模式 |
| > 8GB |
4–8GB |
大内存仅作应急 |
| > 64GB(服务器) |
禁用或 1–4GB |
依赖 OOM Killer 管理 |
- 性能优化要点:
- 优先使用 SSD/NVMe,显著降低 Swap 延迟。
- 启用 Zswap(内核 4.0+):在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 中添加
zswap.enabled=1 zswap.compressor=lz4,执行 sudo update-grub && sudo reboot。
- 监控 vmstat 1 的 si/so(Swap In/Out),判断 Swap 压力与 I/O 是否异常。