服务器Swap分区优化:从创建到调优的完整操作

当服务器物理内存不够用时,系统会把一部分不常用的内存页临时挪到磁盘上的Swap分区,腾出RAM给活跃进程。Swap不能替代内存,它只是兜底手段:磁盘速度远低于内存,一旦频繁读写Swap,程序响应会明显变慢。
因此优化Swap的目标是“够用、少用、可控”,而不是把它当成免费内存。

本文适合内存较小、偶发内存峰值或担心进程被OOM杀掉的Linux服务器用户。
下面所有命令需要root权限或sudo,操作前请确认磁盘有足够剩余空间,并了解创建Swap文件会占用相应磁盘容量。

先确认现状和磁盘余量

动手前先看清当前状态,避免重复创建或空间不足。

free -h
swapon --show
cat /proc/swaps
df -h /

free -h看内存和Swap总量,swapon --show列出已启用的Swap设备,df -h /确认根分区剩余空间。
如果swapon --show已有输出,说明Swap已启用,可跳过创建步骤,直接看后面的参数调优。

常见判断:Swap为0且内存经常吃紧,建议补一块;
Swap已有但free -h里Swap的used长期很高,说明内存确实不足,应先排查是哪个进程占用,而不是单纯加大Swap。

创建并启用Swap文件

下面以创建一个2GB的Swap文件为例。
大小可按内存和磁盘情况调整,常见做法是内存较小时设为内存的1到2倍,但磁盘紧张时不要盲目加大。

# 创建2GB空文件(count=2048,每块1M)
fallocate -l 2G /swapfile
# 如果文件系统不支持fallocate,改用:
# dd if=/dev/zero of=/swapfile bs=1M count=2048

# 设置仅root可读写,权限过宽会导致启用失败
chmod 600 /swapfile

# 格式化为Swap
mkswap /swapfile

# 启用
swapon /swapfile

每步的预期结果:fallocate或dd执行后ls -lh /swapfile能看到文件大小;mkswap会输出“Setting up swapspace”并显示UUID;swapon无报错即成功。
最后用swapon --show复查,应能看到/swapfile这一行。

避坑:权限必须是600,
否则swapon会提示“insecure permissions”并拒绝启用;fallocate在部分文件系统上创建的文件可能无法被Swap识别,
此时改用dd方式重新创建。

配置开机自动挂载

上面启用的Swap重启后会失效,需要写入/etc/fstab。

# 先备份
cp /etc/fstab /etc/fstab.bak
# 追加一行
echo '/swapfile none swap sw 0 0' >> /etc/fstab

改完不要急着重启,先用下面命令校验fstab有没有写错,避免配置错误导致系统启动异常:

mount -a
swapon --show

mount -a没有报错、swapon --show仍显示Swap,说明配置正常。
回滚方式:把/etc/fstab.bak覆盖回去,再执行swapoff /swapfile即可。

调整swappiness控制使用倾向

vm.swappiness决定内核有多积极地把内存页换到Swap,取值0到100。
值越高越倾向使用Swap,值越低越倾向保留内存。
默认常见为60,很多服务器场景会调低到10左右,减少不必要的磁盘交换。

# 查看当前值
cat /proc/sys/vm/swappiness

# 临时修改(立即生效,重启失效)
sysctl vm.swappiness=10

# 永久生效
cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p

注意:swappiness=0并不等于完全禁用Swap,在内存严重不足时系统仍可能使用。
不要为了追求“纯内存”把它设成0,反而可能让OOM更容易触发。
具体数值要结合业务实测,不存在通用最优值。

验证效果与后续观察

优化后需要确认三件事:Swap已启用、参数已生效、系统没有异常交换。

free -h
swapon --show
cat /proc/sys/vm/swappiness
cat /proc/meminfo | grep -i swap

free -h看Swap总量和已用量,/proc/meminfo里的SwapCached、SwapFree能反映交换活跃度。
如果Swap used持续增长、vmstat 1中si和so长期不为0,说明内存确实紧张,应优先排查高占用进程,而不是继续加Swap。

常见问题:swapon报“Invalid argument”通常是文件创建方式或格式有问题,用dd重建再mkswap;
重启后Swap消失,多半是/etc/fstab没写或写错,用mount -a排查;
调整swappiness后无变化,检查是否写进了/etc/sysctl.conf并执行了sysctl -p。

服务器Swap分区优化本质上是在内存和磁盘之间做取舍。
先补齐Swap保证兜底,再通过swappiness控制使用倾向,最后靠监控确认系统是否真的健康,这套流程比单纯“加大Swap”更可靠。

分享到:
上一篇
服务器AppArmor配置:从启用、调整到排错的实操步骤
下一篇
服务器文件系统选型:ext4、XFS、Btrfs 该选哪个
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意