Debian 12 管理 Swap 虚拟内存

关于 Swap

Swap 的作用

  • 扩展可用内存:当物理内存(RAM)不足时,系统将部分不活跃的内存数据转移到 Swap 空间(硬盘/SSD 上),避免进程崩溃。
  • 支持休眠(Hibernate):休眠功能需要 Swap 空间存储内存快照。
  • 应对内存峰值:即使 RAM 充足,Swap 仍可缓解突发的高内存需求。

是否需要设置 Swap

建议启用 Swap 的场景:

  • 物理内存 ≤ 4GB:小内存设备(如 VPS、老旧电脑)必须设置 Swap。
  • 运行内存密集型应用:如数据库(MySQL)、虚拟机、编译大型代码。
  • 启用休眠功能:Swap 大小需 ≥ 物理内存。
  • 避免 OOM(内存耗尽):防止系统因内存不足强制终止进程。

可能无需 Swap 的场景:

  • 物理内存 ≥ 16GB 且负载稳定:如果内存常年富余,Swap 使用率极低。
  • 高速 SSD 敏感型应用:频繁 Swap 可能影响 SSD 寿命(但现代 SSD 通常能承受)。

Swap 使用倾向

Swap 使用倾向取决于 swappiness 的值大小(范围 0 - 100,默认 60)。

  • 较低值(如 10):尽量少用 Swap,适合 SSD 或大内存。
  • 较高值(如 60):更积极使用 Swap,适合机械硬盘或小内存。

VPS 推荐配置

SSD 磁盘的 VPS 通用场景推荐以下配置:

  • 物理内存 ≤ 2GB:Swap = 2 × RAM,swappiness = 60
  • 2GB < 物理内存 ≤ 4GB:Swap = 4GB,swappiness = 30
  • 4GB < 物理内存:Swap = 4GB,swappiness = 10

管理 Swap

查看当前 Swap

查看当前系统内存使用情况:

free -m

Swap 交换分区大小即为当前虚拟内存大小。

设置 Swap

根据需要 Swap 大小创建一个空文件:

sudo fallocate -l 2G /swapfile

设置该文件权限为仅 root 可以读写:

sudo chmod 600 /swapfile

将该文件格式化为 Swap 文件:

sudo mkswap /swapfile

启用 Swap 文件:

sudo swapon /swapfile

写入 Swap 信息到系统启动分区挂载配置文件中:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

禁用 Swap

停止所有的 Swap:

sudo swapoff -a

删除 Swap 文件:

sudo rm -rf /swapfile

编辑系统启动分区挂载配置文件:

sudo vim /etc/fstab

删除 Swap 信息:

/swapfile none swap sw 0 0

调整 Swap 使用倾向

查看当前 Swap 使用倾向

cat /proc/sys/vm/swappiness

写入配置到内核参数配置文件中:

echo 'vm.swappiness = <number>' | sudo tee -a /etc/sysctl.conf

<number> 为需要的值大小(范围 0 - 100),数字越大,系统越倾向于使用 Swap。

从配置文件加载并立即应用内核参数:

sudo sysctl -p

参考文献