Files
markdown/blog/1.技术栈/990.Linux 系统 Swap 分区配置指南.md
2025-08-08 10:01:03 +08:00

109 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Linux 系统 Swap 分区配置指南
description: 在云服务器上配置Swap分区
date: 2025-07-10
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250623214305360.png
navigation:
icon: simple-icons:linux
---
## **1. Swap 分区简介**
Swap交换分区是 Linux 系统用来扩展内存的一种机制。当物理内存RAM耗尽时操作系统会将部分不活跃的内存页inactive memory移至 Swap 分区,避免 **OOMOut Of Memory** 错误导致的服务崩溃。
### **Swap 分区的适用场景**
**内存不足时**Swap 可使系统暂存部分数据,防止进程被强制终止
**突发高负载时**:避免系统因短时内存不足而崩溃
**SSD/高性能盘场景**:频繁 Swap 会导致 I/O 瓶颈,影响性能
**数据库/高性能应用**Swap 会降低内存访问速度,建议直接增加物理内存
---
## **2. 查看当前 Swap 配置**
**检查当前是否已启用 Swap**
```bash
swapon --show
```
- **无输出**:表示未配置 Swap 分区
- **有输出**:显示已启用的 Swap 设备及其大小
---
## **3. 配置 Swap 分区**
### **1创建 Swap 文件(推荐)**
Swap 可以基于 **分区****文件**,推荐使用文件方式(更灵活)。
```bash
# 创建一个 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 分区**
```bash
sudo swapon /swapfile
```
验证是否生效:
```bash
free -h # 查看 Swap 使用情况
```
### **3设置开机自动挂载**
`/etc/fstab` 中追加配置:
```bash
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
```
验证配置:
```bash
cat /etc/fstab | grep swap
```
---
## **4. 调整内存管理策略(可选)**
默认情况下Linux 倾向于使用物理内存而非 Swap。
若希望 **减少 Swap 使用**(避免频繁 I/O可调整 `vm.swappiness`推荐值10~60
```bash
# 查看当前值默认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如需**
```bash
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