技术文章

ECS(Linux)配置Swap交换文件
技术文章 2026-07-23 103 阅读

ECS(Linux)配置Swap交换文件

超级管理员 本站 2026-07-23

重要提醒:普通高效云盘/普通云盘IO性能差,频繁使用Swap会严重卡顿;SSD云盘本地SSD适合开启Swap;Swap只是防止OOM兜底,不能替代物理内存。 系统:CentOS 7/8、Rocky、Ubuntu、Alibaba Linux通用

一、先检查当前Swap

# 查看swap状态
swapon --show
free -h

无输出=没有swap,可以开始操作。

二、创建Swap文件(示例:4G,按需修改大小)

方案1:fallocate(速度更快,推荐)

# 创建4G交换文件,把4G改成2G/8G即可
fallocate -l 4G /swapfile

如果报错 Operation not supported(XFS/Btrfs部分环境),改用下面dd方案:

方案2:dd兼容方案

# 4G:bs=1M count=4096;2G=count=2048
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

三、权限、格式化、启用Swap

# 权限必须600,安全限制
chmod 600 /swapfile

# 格式化为swap空间
mkswap /swapfile

# 立即启用
swapon /swapfile

执行完再次 free -h 就能看到Swap容量。

四、设置开机自动挂载(重启不丢失!关键步骤)

备份fstab防止改错:

cp /etc/fstab /etc/fstab.bak

写入开机配置:

echo '/swapfile none swap sw 0 0' >> /etc/fstab

✅ 校验fstab配置是否正确(避免服务器无法启动)

swapoff -a
swapon -a
swapon --show

正常显示swap信息代表配置无误;如果报错,立刻删除 /etc/fstab 新增那一行!

五、内核调优 vm.swappiness(控制系统多激进使用swap)

取值范围0~100

  • 1~10(推荐数据库/Redis/生产业务):尽量少使用swap

  • 30:通用Web服务器默认

  • 60:系统默认值

临时生效(重启失效)

sysctl vm.swappiness=10

永久生效

echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p

可选参数优化(缓存回收)

echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf
sysctl -p

常用运维命令

关闭并删除swap(需要扩容swap时操作)

swapoff /swapfile
rm -f /swapfile
# 同时删掉/etc/fstab内对应的那一行

完整一键脚本(直接复制执行,创建4G Swap)

#!/bin/bash
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p
free -h

大小推荐参考(ECS云服务器)

  • ≤2G内存:Swap = 2~4G

  • 2G~8G内存:Swap = 4G

  • >8G内存:4G足够(仅作为OOM缓冲,不建议很大)

常见坑

  1. 不要把swap放在挂载的外部数据盘 /mnt:很多ECS重启磁盘挂载顺序变动,swap挂载失败

  2. fstab写错会导致服务器启动卡住,操作前务必备份

  3. 使用普通云盘不要设置过大swap,大量换页会造成服务器IO打满卡死

如果你告诉我ECS系统版本、内存大小,我可以直接给你适配好大小的一键命令。


相关标签:

发表评论:

评论记录:

Ethan 2026-07-24 10:59:39

感谢分享,不错。 回复

QQ咨询
回电话
回拨通话

我们稍后回拨您的电话

座机请加区号

微信联系
微信扫一扫
微信二维码

扫码加微信