在 CentOS(以及其他 Linux 系统)中设置 swap(交换分区/交换文件) 主要有以下几个重要原因:
1. 内存不足时的“缓冲区”
当系统的 物理内存(RAM)不够用 时,Linux 会把一部分不常用的内存数据暂时放到 swap 中,腾出内存给更紧急的进程使用。
✅ 避免因为内存耗尽直接导致:
- 进程被 OOM(Out Of Memory)杀掉
- 系统卡死或无响应
2. 防止系统崩溃
如果没有 swap,在内存耗尽时:
- 内核可能直接触发 OOM Killer
- 关键服务(如数据库、Web 服务)可能被强制关闭
有 swap 可以作为“安全垫”,让系统有机会平稳处理内存压力。
3. 支持休眠(Hibernate)
如果你使用 休眠(suspend to disk) 功能:
- 系统会把内存内容写入 swap
- 下次开机再从 swap 恢复
⚠️ 注意:
服务器通常 不使用休眠,所以这条对服务器意义不大。
4. 某些软件有 swap 依赖或建议
一些应用或内核机制在以下情况更依赖 swap:
- 数据库(如 MySQL、PostgreSQL)在内存紧张时
- 编译大型程序
- 虚拟化(KVM、Docker 某些场景)
即使内存充足,部分场景下 swap 也能提高稳定性。
5. 云服务器 / 小内存机器的必备
在以下情况,swap 尤其重要:
- 1G / 2G 内存的云服务器
- 突发流量导致内存瞬间升高
- 便宜 VPS(很多默认无 swap)
否则很容易出现:
free -m 显示内存为 0
- SSH 连不上
- 服务自动退出
6. CentOS 的默认行为
- CentOS 7/8 安装时:
若内存 ≤ 2GB,通常会自动创建 swap
- 云镜像:
很多云厂商 默认不创建 swap,需要手动加
什么时候“不需要” swap?
✅ 以下情况可以不用或少用 swap:
- 内存非常充足(如 32G+)
- 对性能要求极高(swap 比内存慢很多)
- 实时性系统(swap 会导致延迟)
但仍建议保留 小 swap(如 2G) 以防意外。
简单建议
| 内存大小 |
建议 swap |
| ≤ 2GB |
内存的 1–2 倍 |
| 2–8GB |
等于内存 |
| 8–16GB |
4–8GB |
| > 16GB |
2–4GB(或禁用) |
如果你愿意,我可以:
- 教你 CentOS 如何创建 swap 文件
- 帮你判断 你当前服务器是否需要 swap
- 解释 swap 和 swappiness 的关系
只要告诉我你的 CentOS 版本和内存大小即可。