Debian 系统添加 Swap 教程
本文档详细介绍在 Debian(包括 Debian 10、11、12)系统中添加 Swap 分区或 Swap 文件的步骤,帮助提升系统的内存管理能力,防止因内存不足导致的程序崩溃或性能下降。
目录
为什么需要 Swap
- 当系统物理内存(RAM)耗尽时,Swap 提供了额外的虚拟内存空间,防止 OOM(Out‑Of‑Memory)错误。
- 对于内存占用高的服务(如数据库、容器等),适当的 Swap 可以提升系统的稳健性。
- 在资源受限的 VPS 或云服务器上,Swap 是一种低成本的内存扩容手段。
检查当前 Swap 状态
# 查看当前 Swap 使用情况
free -h
# 或者使用更加详细的命令
swapon --show
如果输出为空,说明系统当前没有启用 Swap。
使用 Swap 分区
注意:大多数情况下,使用 Swap 文件 更加灵活且无需重新分区。只有在磁盘空间极其紧张且不想占用文件系统时才考虑分区方式。
- 创建分区(假设磁盘为
/dev/sda)
bash
fdisk /dev/sda
# 在交互式界面中创建一个新分区,类型设为 "Linux swap" - 格式化分区为 swap
bash
mkswap /dev/sdaX # 将 X 替换为新创建的分区号 - 激活 swap
bash
swapon /dev/sdaX - 持久化:编辑
/etc/fstab
bash
echo '/dev/sdaX none swap sw 0 0' >> /etc/fstab
使用 Swap 文件(推荐)
1. 创建 Swap 文件
假设我们需要 2 GB 的 Swap:
sudo fallocate -l 2G /swapfile
# 如果 fallocate 不可用,可使用 dd
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
2. 设置权限
sudo chmod 600 /swapfile
3. 将文件标记为 Swap 区域
sudo mkswap /swapfile
4. 启用 Swap
sudo swapon /swapfile
5. 验证
swapon --show
free -h
6. 开机自动挂载
将以下行追加到 /etc/fstab(确保使用 tab 分隔)
/swapfile none swap sw 0 0
调优 Swap 参数
Linux 使用 vm.swappiness 参数决定何时将页面写入 Swap,取值 0‑100,默认 60。可以根据工作负载调低或调高该值。
# 查看当前值
cat /proc/sys/vm/swappiness
# 临时修改(例如设为 10)
sudo sysctl vm.swappiness=10
# 永久修改,编辑 /etc/sysctl.conf 或 /etc/sysctl.d/99-swap.conf
echo 'vm.swappiness = 10' | sudo tee /etc/sysctl.d/99-swap.conf
sudo sysctl -p /etc/sysctl.d/99-swap.conf
另一个常用参数是 vm.vfs_cache_pressure,控制内核回收目录项和 inode 的比例。默认 100,适当调低(如 50)可以提升文件系统缓存命中率。
常见问题排查
- Swap 文件创建失败:确认磁盘空间足够,且使用
fallocate时文件系统支持(如 XFS 不支持,需要使用dd)。 - 系统启动时报错找不到 swap 分区:检查
/etc/fstab中的设备路径是否正确,使用 UUID 更加可靠。
bash
blkid /dev/sdaX
# 将输出的 UUID 替换到 fstab 中:
UUID=xxxx-xxxx none swap sw 0 0 - Swap 使用率长期居高不下:说明物理内存长期不足,考虑升级硬件或进一步调低
swappiness。
结论
- 对于大多数 Debian 系统,Swap 文件 是最简洁、最安全的方案。
- 根据业务需求调节
swappiness与vfs_cache_pressure,可以在性能与内存利用率之间取得平衡。 - 完成上述步骤后,使用
free -h或swapon --show可随时查看 Swap 状态。
祝您部署顺利!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END














暂无评论内容