Debian 系统添加 Swap 教程

Debian 系统添加 Swap 教程

本文档详细介绍在 Debian(包括 Debian 10、11、12)系统中添加 Swap 分区或 Swap 文件的步骤,帮助提升系统的内存管理能力,防止因内存不足导致的程序崩溃或性能下降。


目录

  1. 为什么需要 Swap
  2. 检查当前 Swap 状态
  3. 使用 Swap 分区
  4. 使用 Swap 文件(推荐)
  5. 调优 Swap 参数
  6. 常见问题排查

为什么需要 Swap

  • 当系统物理内存(RAM)耗尽时,Swap 提供了额外的虚拟内存空间,防止 OOM(Out‑Of‑Memory)错误。
  • 对于内存占用高的服务(如数据库、容器等),适当的 Swap 可以提升系统的稳健性。
  • 在资源受限的 VPS 或云服务器上,Swap 是一种低成本的内存扩容手段。

检查当前 Swap 状态

# 查看当前 Swap 使用情况
free -h

# 或者使用更加详细的命令
swapon --show

如果输出为空,说明系统当前没有启用 Swap。


使用 Swap 分区

注意:大多数情况下,使用 Swap 文件 更加灵活且无需重新分区。只有在磁盘空间极其紧张且不想占用文件系统时才考虑分区方式。

  1. 创建分区(假设磁盘为 /dev/sda
    bash
    fdisk /dev/sda
    # 在交互式界面中创建一个新分区,类型设为 "Linux swap"
  2. 格式化分区为 swap
    bash
    mkswap /dev/sdaX # 将 X 替换为新创建的分区号
  3. 激活 swap
    bash
    swapon /dev/sdaX
  4. 持久化:编辑 /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)可以提升文件系统缓存命中率。


常见问题排查

  1. Swap 文件创建失败:确认磁盘空间足够,且使用 fallocate 时文件系统支持(如 XFS 不支持,需要使用 dd)。
  2. 系统启动时报错找不到 swap 分区:检查 /etc/fstab 中的设备路径是否正确,使用 UUID 更加可靠。
    bash
    blkid /dev/sdaX
    # 将输出的 UUID 替换到 fstab 中:
    UUID=xxxx-xxxx none swap sw 0 0
  3. Swap 使用率长期居高不下:说明物理内存长期不足,考虑升级硬件或进一步调低 swappiness

结论

  • 对于大多数 Debian 系统,Swap 文件 是最简洁、最安全的方案。
  • 根据业务需求调节 swappinessvfs_cache_pressure,可以在性能与内存利用率之间取得平衡。
  • 完成上述步骤后,使用 free -hswapon --show 可随时查看 Swap 状态。

祝您部署顺利!

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容