3.3 KiB
3.3 KiB
title, description, date, img, navigation
title | description | date | img | navigation | ||
---|---|---|---|---|---|---|
Linux 系统 Swap 分区配置指南 | 在云服务器上配置Swap分区 | 2025-07-10 | https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250623214305360.png |
|
1. Swap 分区简介
Swap(交换分区)是 Linux 系统用来扩展内存的一种机制。当物理内存(RAM)耗尽时,操作系统会将部分不活跃的内存页(inactive memory)移至 Swap 分区,避免 OOM(Out Of Memory) 错误导致的服务崩溃。
Swap 分区的适用场景
✅ 内存不足时:Swap 可使系统暂存部分数据,防止进程被强制终止 ✅ 突发高负载时:避免系统因短时内存不足而崩溃 ❌ SSD/高性能盘场景:频繁 Swap 会导致 I/O 瓶颈,影响性能 ❌ 数据库/高性能应用:Swap 会降低内存访问速度,建议直接增加物理内存
2. 查看当前 Swap 配置
检查当前是否已启用 Swap:
swapon --show
- 无输出:表示未配置 Swap 分区
- 有输出:显示已启用的 Swap 设备及其大小
3. 配置 Swap 分区
(1)创建 Swap 文件(推荐)
Swap 可以基于 分区 或 文件,推荐使用文件方式(更灵活)。
# 创建一个 1GB 的 Swap 文件(可按需调整大小)
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
# 确保该文件只能由 root 访问
sudo chmod 600 /swapfile
# 将文件转换为 Swap 格式
sudo mkswap /swapfile
⚠️ 注意:
- 如果
mkswap
报错swap area needs to be at least 40 KiB
,说明文件过小,需调整bs=1M count=1024
(1GB)。- 生产环境建议 Swap 大小 = 1~2 倍物理内存(如 4GB 内存可配 4~8GB Swap)。
(2)启用 Swap 分区
sudo swapon /swapfile
验证是否生效:
free -h # 查看 Swap 使用情况
(3)设置开机自动挂载
在 /etc/fstab
中追加配置:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
验证配置:
cat /etc/fstab | grep swap
4. 调整内存管理策略(可选)
默认情况下,Linux 倾向于使用物理内存而非 Swap。
若希望 减少 Swap 使用(避免频繁 I/O),可调整 vm.swappiness
(推荐值:10~60):
# 查看当前值(默认60)
cat /proc/sys/vm/swappiness
# 临时调整
sudo sysctl vm.swappiness=10
# 永久生效
echo "vm.swappiness=10" >> /etc/sysctl.conf
参数说明:
0
:尽量不使用 Swap(可能导致 OOM)10
:低内存时少量使用60
:默认值
5. 关闭 Swap(如需)
swapoff /swapfile # 停止 Swap
rm -f /swapfile # 删除 Swap 文件
sed -i '/swapfile/d' /etc/fstab # 移除 fstab 中的配置
6. 云服务器(ECS)注意事项
- 普通云盘:不建议用 Swap,因其 I/O 性能较差,易引发性能问题
- SSD/高效云盘:可适当启用 Swap,但要避免频繁交换
- 最优方案:升级实例规格,直接增加物理内存
🎯 总结
- Swap 是临时方案,长期内存不足仍需扩容物理内存
- 监控 Swap 使用,避免频繁触发磁盘 I/O
- 高性能应用建议禁用 Swap(如 Redis、MySQL)