Linux 安装 Swap 交换分区大小标准(通用 + 生产服务器 + 个人 PC)
Swap 是硬盘虚拟内存,物理内存不够时把内存数据临时存到 Swap,SSD 服务器不建议过大 Swap,机械硬盘可适当放大,分四类场景给出标准方案。
一、通用官方推荐规则(红帽 RHEL、Debian/Ubuntu 通用)
1. 桌面 / 个人电脑(笔记本、台式机,会休眠)
休眠功能需要 Swap ≥ 物理内存,才能完整保存内存到硬盘实现关机休眠
表格
| 物理内存 RAM | Swap 分区推荐大小 | 备注 |
|---|---|---|
| ≤2GB | RAM × 2 | 2G 内存配 4G Swap |
| 2GB~8GB | RAM × 1.5 | 4G 内存配 6G Swap,8G 配 12G |
| 8GB~16GB | 等于 RAM 大小 | 16G 内存配 16G Swap |
| >16GB | 8GB~16GB | 32G/64G 内存无需超大 Swap,8G 足够,要休眠则等于内存 |
2. 服务器(生产环境,关闭休眠,无桌面)
服务器几乎不用休眠,仅作内存缓冲、OOM 兜底,SSD 环境优先小 Swap:
- RAM ≤4G:Swap = 4G
- 4G < RAM ≤16G:Swap = RAM
- 16G < RAM ≤64G:Swap = 16G
- RAM >64G:Swap = 8G~16G
高性能数据库、缓存服务(Redis、MySQL):Swap 建议 8G 以内,频繁使用 Swap 会严重拖慢性能。
3. 特殊场景:内存极小老机器(1G 及以下)
直接设置 Swap = RAM × 2,否则系统极易卡死。
二、现代云服务器 / SSD 优化建议(重点)
SSD 读写速度远快于机械盘,但Swap 频繁交换依然会大幅降性能:
- 云主机 32G/64G/128G 大内存:Swap 8G 足矣,甚至可以不分 Swap,靠调整
vm.swappiness控制使用频率; - 数据库、AI 算力服务器(昇腾、GPU 服务器):最小化 Swap(8G),业务尽量全部跑物理内存;
- 机械硬盘(HDD)服务器:Swap 按标准上限分配,HDD 交换延迟极高,避免业务触发 Swap。
三、swappiness 参数配套优化(分区大小配完必调)
vm.swappiness 取值 0~100,控制内核多积极使用 Swap:
- 服务器(数据库 / 业务):
vm.swappiness=10,内存快耗尽才用 Swap - 个人桌面电脑:
vm.swappiness=60,平衡内存缓存与 Swap - 高性能算力 / 缓存服务:
vm.swappiness=0(优先不碰 Swap)
临时生效:
sysctl vm.swappiness=10
永久生效编辑 /etc/sysctl.conf 添加:
vm.swappiness = 10
四、两种 Swap 实现方式对比
1. Swap 分区(安装系统时划分,推荐服务器)
- 独立分区,性能稳定,适合装机阶段规划;
- 缺点:装机时分配死,后期扩容麻烦。
2. Swap 文件(装机没分够后期扩容用)
无需重装系统,随时增减大小,云主机常用:
# 创建8G交换文件示例
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# 写入/etc/fstab开机自动挂载
/swapfile swap swap defaults 0 0
五、避坑要点
- 不要分配超大 Swap(比如 64G 内存分 64G Swap):一旦触发交换,业务卡顿严重;
- NVMe SSD 不要上百 G Swap,浪费磁盘空间;
- 若机器永不休眠,不需要 Swap 等于内存;
- 内存≥128G 的超大型服务器,可直接不分 Swap,依靠监控预警内存溢出。
快速总结极简分配口诀
- 家用要休眠:小内存翻倍,大内存等于内存,32G 以上 16G 封顶
- 线上服务器不休眠:4G 内 4G,4-64G 等于内存,64G 以上统一 8~16G
- SSD 大内存算力机:8G Swap 足够,调低 swappiness 减少交换