温馨提示×

CentOS Swap怎么设置合适

小樊
36
2026-07-08 01:25:44
栏目: 智能运维

CentOS(7/8/Stream) 中,Swap 的大小设置没有绝对标准,但可以根据 内存大小、用途(桌面 / 服务器 / 数据库) 来决定。下面给你一个 实用、可落地的建议方案


一、Swap 设置的基本原则(通用)

1️⃣ 内存 ≤ 2GB

强烈建议设置 Swap

推荐大小:

Swap = 内存的 2 倍

示例:

  • 内存 1GB → Swap 2GB
  • 内存 2GB → Swap 4GB

2️⃣ 内存 2GB ~ 8GB

建议设置 Swap

推荐大小:

Swap = 内存大小 或 1.5 倍

示例:

  • 4GB 内存 → 4~6GB Swap
  • 8GB 内存 → 8GB Swap

3️⃣ 内存 8GB ~ 64GB

可选,但建议设置

推荐大小:

Swap = 内存的一半 或 至少 4~8GB

示例:

  • 16GB 内存 → 8~16GB Swap
  • 32GB 内存 → 8~16GB Swap

4️⃣ 内存 ≥ 64GB(服务器 / 数据库)

⚠️ 视用途而定

场景 建议
数据库(MySQL / PostgreSQL) 8~16GB Swap
K8s / 容器 4~8GB
纯计算 / HPC 可关闭 Swap

⚠️ 数据库服务器不建议完全依赖 Swap,但保留少量 Swap 可防止 OOM。


二、CentOS 常见推荐值(速查表)

内存 推荐 Swap
1GB 2GB
2GB 4GB
4GB 4~6GB
8GB 8GB
16GB 8~16GB
32GB 8~16GB
64GB+ 4~16GB

三、CentOS 查看当前 Swap

free -h
swapon --show

四、CentOS 添加 / 修改 Swap(推荐方式)

✅ 方式一:Swap 文件(最简单,推荐)

1️⃣ 创建 swap 文件

dd if=/dev/zero of=/swapfile bs=1M count=4096
# 或(更快)
fallocate -l 4G /swapfile

2️⃣ 设置权限

chmod 600 /swapfile

3️⃣ 格式化为 swap

mkswap /swapfile

4️⃣ 启用 swap

swapon /swapfile

5️⃣ 开机自动挂载

echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

✅ 方式二:Swap 分区(传统服务器)

fdisk /dev/sdb
# 创建 swap 分区
mkswap /dev/sdb1
swapon /dev/sdb1

五、优化 Swap 使用策略(很重要)

1️⃣ 调整 swappiness(CentOS 默认 30)

cat /proc/sys/vm/swappiness

推荐值:

  • 服务器:10~30
  • 桌面 / 开发:30~60

临时修改:

sysctl vm.swappiness=10

永久生效:

echo 'vm.swappiness=10' >> /etc/sysctl.conf

六、什么时候不建议用 Swap?

❌ 以下情况可以 关闭或减小 Swap

  • 高性能数据库(MySQL / MongoDB)
  • Redis 纯内存服务
  • 对延迟极其敏感的服务

⚠️ 但 不建议完全关闭,否则可能触发 OOM Killer。


七、总结一句话

CentOS Swap 设置原则:内存小就大,内存大就小,数据库要保守,服务器要留一点。

如果你愿意,可以告诉我:

  • ✅ 内存大小
  • ✅ CentOS 版本
  • ✅ 是数据库 / Web / K8s / 桌面

我可以 直接给你一套最优配置方案

0