在 CentOS(以及大多数 Linux 系统)中使用 swap(交换空间),主要是为了内存管理和系统稳定性。下面从原理和实际作用来解释“为什么 CentOS 要用 swap”。
一、什么是 swap
swap 是磁盘上的一块空间(分区或文件),被当作“备用内存”使用。
- 物理内存(RAM)不够用时
- 系统把不常用的内存数据写到 swap
- 腾出 RAM 给更需要的程序
简单理解:
swap = 慢速的“扩展内存”
二、CentOS 为什么需要 swap
1️⃣ 防止内存耗尽导致系统崩溃
如果 没有 swap,当物理内存用完时:
- Linux 会触发 OOM Killer(内存溢出杀手)
- 强制杀掉进程(可能是 MySQL、Java、Nginx 等)
- 严重时系统直接卡死或重启
✅ 有 swap:
- 系统可以“撑一下”
- 避免瞬间崩溃
- 给运维争取处理时间
2️⃣ 释放物理内存给更活跃的程序
Linux 会:
- 把长时间不用的内存页移到 swap
- 把 RAM 留给:
这对服务器尤其重要。
3️⃣ 支持休眠(Hibernate)
如果 CentOS 使用:
那么:
- 内存内容必须写入 swap
- swap 大小 ≥ 物理内存
(服务器一般不用,但桌面会用到)
4️⃣ 某些软件或场景“默认假设有 swap”
例如:
- JVM(Java)
- Elasticsearch
- 数据库
- 容器环境
虽然它们“不推荐依赖 swap”,但:
- 没有 swap 时行为可能更激进
- OOM 风险更高
三、CentOS 中 swap 的常见形式
1️⃣ swap 分区(传统方式)
fdisk /dev/sdb
mkswap /dev/sdb1
swapon /dev/sdb1
2️⃣ swap 文件(更灵活)
dd if=/dev/zero of=/swapfile bs=1M count=2048
mkswap /swapfile
swapon /swapfile
四、是不是“有 swap 就一定好”?
⚠️ 不是
swap 的缺点
- 磁盘比内存慢得多
- 频繁 swap(swap thrashing)会让系统极卡
所以:
五、CentOS 官方/社区建议
一般服务器建议
| 内存大小 |
swap 建议 |
| ≤ 2GB |
2 × RAM |
| 2–8GB |
= RAM |
| 8–64GB |
4–8GB |
| > 64GB |
最少 4GB(或不用) |
云服务器常见做法:
- 小内存实例:必开 swap
- 大内存实例:可少或关 swap(但保留应急)
六、总结一句话
CentOS 用 swap,不是为了“更快”,而是为了“更稳”。
它是:
如果你愿意,我也可以:
- 帮你判断当前 CentOS 该不该开 swap
- 教你怎么调
swappiness
- 分析你服务器内存使用情况