--- 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)