---
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 分区，避免 **OOM（Out 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）