讲解 Ubuntu 云服务器 Swap 文件的创建、权限、fstab、swappiness、移除和高换页排查。
默认建议:1—2 GiB 内存的普通 Ubuntu 小站,在确认云盘至少还有数 GiB 空间后,可以先创建 1—2 GiB Swap 文件作为 OOM 缓冲;数据库或持续高负载业务不要靠大 Swap 掩盖内存不足。Swap 不单独收费,但会占用云盘容量和 I/O。所有命令都在 SSH 终端执行,先记录 free -h、swapon --show 和 df -h,避免写满系统盘。

先检查当前内存和 Swap
free -h
swapon --show
cat /proc/swaps
vmstat 1 5free -h 中的 available 比 free 更能反映可用内存;vmstat 的 si、so 持续出现,说明系统频繁换入换出。Swap Used 不为零不一定异常。
创建 Swap 文件前的检查
- 确认磁盘有足够空间,避免 Swap 文件把根分区占满。
- 确认文件系统支持普通 Swap 文件;Btrfs 等文件系统需要按其规则处理。
- 数据库和低延迟服务应优先评估真实内存需求,不能依赖 Swap 保持性能。
创建并启用 2 GiB Swap 文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show
free -h权限必须限制为 600。若文件无法启用,应先检查文件系统与文件创建方式。
设置重启后自动启用
备份并检查 /etc/fstab,确认没有重复条目,再增加:
/swapfile none swap sw 0 0使用 sudo findmnt --verify 检查语法,并在维护窗口重启后再次验证。
调整 swappiness
vm.swappiness 影响使用 Swap 的倾向,不是使用百分比。先观察内存回收、延迟和 si/so,再逐步调整:
sysctl vm.swappiness
sudo sysctl -w vm.swappiness=10确认效果后写入独立的 /etc/sysctl.d/ 配置文件。
安全移除
确认可用内存足够,在低峰期执行 sudo swapoff /swapfile。停用成功后删除 fstab 条目,再删除文件。若内存不足,swapoff 可能失败或引发强烈内存压力。
常见故障
| 现象 | 重点检查 |
|---|---|
| insecure permissions | 文件是否为 600 |
| swapfile has holes | 文件系统与创建方式 |
| 长期大量换页 | 泄漏、工作集与实例容量 |
| 重启后未启用 | fstab 路径与语法 |
边界条件
Swap 不能保证 OOM 永远不会发生,也不能修复内存泄漏。关键服务应结合告警、实例升配和应用优化。
创建前先确认真的是内存压力
使用 journalctl -k 或内核日志查找 OOM killed 记录,再看应用内存是否持续增长。若磁盘已经接近满载,先清理或扩容,不能再创建 Swap 文件。云主机位于容器内部时,宿主机可能禁止启用 Swap,此时应在云服务器层处理。
创建 2 GiB Swap 的安全顺序
- 用
sudo fallocate -l 2G /swapfile创建文件;文件系统不支持时再按官方方法使用dd,设备和路径必须核对。 - 执行
sudo chmod 600 /swapfile,防止其他用户读取内存换出内容。 - 执行
sudo mkswap /swapfile后再sudo swapon /swapfile。 - 用
swapon --show和free -h确认已启用。 - 确认无误后才在
/etc/fstab增加对应条目,并先运行挂载配置检查。
有 Swap 仍卡顿怎样判断
Swap 是缓冲,不是内存扩容。使用 vmstat 1 观察 si、so;如果长时间持续换入换出且 I/O 等待升高,机器正在抖动,应限制应用内存、修复泄漏或升级规格。swappiness 只影响使用倾向,不能消除真实容量不足。
验证与撤销
重启前先检查 fstab 格式,重启后确认 Swap 自动启用、应用恢复和磁盘空间正常。要撤销时先执行 sudo swapoff /swapfile,确认内存容得下当前工作集,再删除 fstab 条目,最后删除文件。若因 fstab 错误无法启动,从云控制台救援模式或挂载系统盘到救援机修复,不能格式化系统盘。
Ubuntu 云服务器怎么设置 Swap现场验收单
- 入口或命令:通过 SSH 进入服务器终端,先执行 free、swapon、df 和内存日志只读检查
- 提交前风险:Swap 文件占云盘空间,云盘和 I/O 可能收费;错误执行 dd、fallocate 或 fstab 会导致磁盘/启动故障
- 不能继续时:磁盘空间不足、文件系统不支持、权限错误、fstab 写错、容器内无权限、持续换页变慢
- 完成证据:swapon 显示目标文件,重启后仍启用,业务无 OOM 且 swap in/out 不持续飙升
- 退出办法:先 swapoff 再删 fstab 条目和文件;启动失败从救援模式修复 fstab

