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