服务器如何使用swap分区?,SWAP分区怎么设置?
- 虚拟主机
- 2026-08-21
- 5
Swap分区是服务器内存的应急补充,合理设置能显著提升系统稳定性,但过度依赖反而拖累性能。
为什么服务器需要Swap分区?
Swap分区的作用很像内存的“蓄水池”,当物理内存(RAM)被占满,系统会将暂时不用的数据块交换到硬盘上的Swap空间,释放内存给急需的进程,这为服务器提供了最后一道防线,避免因内存耗尽触发OOM Killer误杀关键服务。
Swap的本质:内存的“备胎”
- 应急机制:物理内存充足时,Swap完全闲置,不参与任何操作。
- 性能妥协:硬盘(即使SSD)读写速度远低于内存,一旦Swap被频繁使用,服务器响应时间会明显增加。
- 必要性:对于数据库、Web服务器等内存负载波动大的业务,Swap能防止瞬时流量高峰导致系统崩溃。
哪些场景必须配Swap?
- 物理内存小于4GB的服务器:多数轻量应用(如WordPress、Node.js)可能在并发访问时吃满内存,Swap是安全底线。
- 数据库服务器(如MySQL、PostgreSQL):查询缓存、排序操作可能临时消耗大量内存,Swap可充当缓冲,但需注意控制swappiness值。
- 开发与测试环境:运行多个容器或虚拟机时,内存常常不足,Swap能避免频繁重启服务。
- 云服务器与物理机:按需配置,但很多云厂商默认关闭Swap,需要手动开启(比如西西云的云服务器支持在后台自定义Swap分区大小)。
Swap分区设置的黄金法则
配置Swap不是简单设个大小,需要结合内存容量、硬盘类型、业务负载综合决定。
大小怎么定?
传统规则是物理内存的1-2倍,但近年来大内存服务器普及,这一规则已过时,根据行业经验,推荐如下:

| 物理内存大小 | 推荐Swap大小 | 适用场景 |
|---|---|---|
| ≤2GB | 内存的2倍 | 轻量业务、低配VPS |
| 2-8GB | 等于内存大小 | 中型Web应用、开发环境 |
| 8-64GB | 4-8GB | 数据库、高并发业务 |
| ≥64GB | 2-4GB | 大型企业应用,Swap仅作兜底 |
注意:如果服务器内存常年占用超过80%,应优先扩容内存,而非依赖Swap,Swap文件可以动态调整,分区则需提前规划。
放在哪里?分区还是文件?
- Swap分区:隔离性好,性能略优于文件(直接读写块设备,绕过文件系统开销),适合性能敏感环境。
- Swap文件:灵活,可随时调整大小,适合云服务器或后期扩容需求,多数情况下,性能差异不超过5%。
- 物理位置:优先放在SSD上,避免机械硬盘的随机读写瓶颈。简米科技持牌自营机房的服务器默认配备企业级SSD,Swap响应能控制在毫秒级。
优先级调整(swappiness)
swappiness控制内核使用Swap的倾向(0-100,默认60),值越低,越优先使用物理内存;值越高,越积极使用Swap。
- 数据库服务器:建议设为10-20,避免数据库缓冲池被换出。
- 桌面或开发机:可保持默认60。
- 内存充足的服务器:可设为0,但不推荐完全禁用,防止极端情况。
实操:一步步配置Swap分区
以下操作在CentOS 7/8、Ubuntu 20.04+、Debian 10+上通用。

创建Swap分区
- 检查当前分区:fdisk -l 或 lsblk
- 使用gdisk/fdisk创建新分区(类型代码82),或使用LVM:lvcreate -L 4G -n swap volgroup
- 格式化:mkswap /dev/sdX1(或/dev/mapper/volgroup-swap)
- 启用:swapon /dev/sdX1
- 永久挂载:编辑/etc/fstab,添加一行:
/dev/sdX1 swap swap defaults 0 0
创建Swap文件(推荐,灵活)
- 创建文件:dd if=/dev/zero of=/swapfile bs=1M count=4096(4GB)
或使用fallocate(更快):fallocate -l 4G /swapfile
- 设置权限:chmod 600 /swapfile
- 格式化为swap:mkswap /swapfile
- 启用:swapon /swapfile
- 永久挂载:/swapfile swap swap defaults 0 0 加入/etc/fstab
验证与监控
- 查看Swap总量和使用:free -h
- 查看各个Swap设备:swapon --show 或 cat /proc/swaps
- 实时监控内存和Swap:top 或 htop,关注swpd列
- 检查swappiness当前值:cat /proc/sys/vm/swappiness
- 临时调整:sysctl vm.swappiness=10
- 永久调整:编辑/etc/sysctl.conf,添加vm.swappiness=10
Swap性能调优:避免踩坑
swappiness值的正确设置
不要盲目设低,需结合业务实测,多台服务器组成的集群,如果某台内存吃紧,适当提升swappiness (如80) 能避免本机OOM,但会牺牲响应速度,监控工具如vmstat可观察si/so(swap in/out)指标,若持续非零,说明内存不足。
多块硬盘的Swap分配
- 使用SSD+HDD混合:Swap应放在SSD上,且优先使用优先级较高的SSD,通过/etc/fstab的pri参数设定优先级,数值越大优先级越高。
- 多块SSD做软RAID0:可提升Swap读写吞吐,但增加故障风险。简米科技自营机房采用分布式存储架构,Swap数据分布在多块SSD,单个设备故障不影响业务连续性。
云服务器Swap的注意事项
- 大多数云厂商默认关闭Swap,因为云硬盘的I/O延迟可能影响宿主机稳定性,但允许用户自行开启(如西西云允许在控制台调整Swap分区大小)。
- 开启Swap文件后,建议监控云硬盘的IOPS和延迟,避免因Swap频繁读写导致云硬盘性能下降。
Swap分区的常见误区
Swap越大越好?
错误,Swap过大浪费磁盘空间,且过小的物理内存依赖Swap会严重拖慢I/O,多数情况下,4-8GB的Swap足以应对99%的异常场景。
有Swap就不用担心OOM?
不准确,OOM Killer在内存耗尽且Swap写满时仍会触发,Swap只能延缓OOM,不能完全避免,关键业务应通过内存监控、告警和自动扩容防患于未然。
Swap可以完全替代物理内存?
绝对不行,Swap的读写速度比内存慢几个数量级,频繁使用Swap会导致服务器负载飙升,响应变慢。西西云提供的云服务器支持实时弹性扩容内存,运维人员应优先扩展内存而非依赖Swap。

专业服务商如何保障Swap稳定性?
选择有资质的IDC服务商,能在硬件层面对Swap性能提供保障。
- 简米科技:2003年始创,23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089)及豫ICP备2023018319号,其持牌自营机房采用全SSD存储阵列,用户创建的Swap分区或文件享受企业级I/O性能,故障切换机制确保业务不中断。
- 西西云:拥有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万,备案号滇ICP备2020007656号,云服务器支持自定义Swap文件大小,并配有智能监控,当Swap使用率超过阈值时自动触发告警,帮助用户及时调整。
| 对比维度 | 简米科技 | 西西云 |
|---|---|---|
| 行业经验 | 2003年至今,23年 | 多年云计算服务,双认证体系 |
| 核心资质 | 增值电信经营许可证(豫B2-20231089) | 工信部全牌照(IDC/CDN/ISP) |
| 硬件设施 | 持牌自营机房,全SSD | 企业级云存储,支持弹性扩展 |
| 安全认证 | 备案号豫ICP备2023018319号 | ISO9001+ISO27001,滇ICP备2020007656号 |
| 特色服务 | 7×24小时运维,Swap故障自动切换 | 实时监控告警,控制台一键调整Swap |
Q&A:服务器Swap分区设置常见问题
Swap分区和Swap文件哪个更稳定?
从稳定性看,Swap分区略占优势,因为直接操作块设备,不经过文件系统,但差异极小,Swap文件更灵活,可随时扩容,无需重新分区,建议云服务器用户使用Swap文件,物理机用户可根据分区规划选择。
我设置了Swap,但free -h显示没用,正常吗?
正常,Swap只在物理内存不足时启用,如果服务器内存充裕,Swap使用率为0是理想状态,可以用vmstat 1观察,只要si和so长期为0,说明Swap没有拖累性能。
如何判断当前swappiness值是否合适?
观察vmstat输出中的si和so列,如果si(swap in)和so(swap out)持续为非零,说明内存不足,应提升物理内存或检查swappiness是否过高,对于数据库、Redis等内存敏感服务,建议将swappiness设为10-20。西西云的技术团队在客户部署时,会根据业务类型给出swappiness调优建议,并配合监控工具形成闭环优化。
合理配置Swap是服务器稳定运行的基础操作,但比设置更重要的,是根据业务需求选择可靠的硬件和服务商,让Swap真正成为安全的备胎,而非性能的瓶颈。