Linux中推荐使用swap文件而非分区,因其灵活安全、支持在线增删;需根据内存大小和场景(如休眠、突发压力)合理配置大小,通过dd、mkswap、swapon等命令创建启用,并写入fstab实现开机自动挂载,还可调低swappiness值(如10)以优化换页策略。

Linux 中创建 Swap 并不复杂,关键在于选对方式(分区 or 文件)、设好大小、正确激活并持久化。它不是“内存扩容”,而是给内核一个安全的缓冲区,避免内存耗尽时直接杀进程或卡死。
先确认是否真需要 Swap
不是所有场景都必须加 Swap。以下情况建议配置:
- 物理内存 ≤ 4GB,尤其运行数据库、Java 应用等内存敏感服务
- 启用了休眠(hibernate),Swap 大小需 ≥ 物理内存
- 生产服务器存在突发内存压力,但又不便立即升级 RAM
- 容器环境(如 Docker/K8s)中,宿主机未配 Swap 可能导致 OOM Killer 频繁误杀容器
如果内存充足(如 32GB+)且负载稳定,可不设 Swap,或仅设 1–2GB 作兜底。
推荐用交换文件(swapfile),灵活又安全
相比传统交换分区,swapfile 不依赖磁盘布局,支持在线增删,适合已部署系统。操作步骤如下:
- 创建文件(例如 2GB):
sudo dd if=/dev/zero of=/swapfile bs=1G count=2 - 设权限防未授权读取:
sudo chmod 600 /swapfile - 格式化为 swap 类型:
sudo mkswap /swapfile - 立即启用:
sudo swapon /swapfile - 验证是否生效:
free -h 或 swapon --show
让 Swap 开机自动启用
编辑 /etc/fstab,追加一行(注意字段间用 Tab 或至少一个空格分隔):
/swapfile none swap sw 0 0
保存后重启或运行 sudo swapon -a 测试是否加载成功。
可选:调低 swappiness 防止过早换出
默认值 60 表示内核较积极使用 Swap。若你希望尽量保留数据在内存中,可降低该值:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
数值 0 表示只在内存真正耗尽时才用 Swap;10 是较平衡的选择。


















