Linux 添加与修改 Swap 虚拟内存指南
在便宜的云厂商(如著名的各种“灵车”厂商)处购买的 VPS,内存经常只有 512MB 甚至更小。当咱们运行一点稍微复杂的应用环境(如安装了 Docker、1Panel 或是跑个稍微耗点资源的后端服务)时,经常会遇到整个系统突然死掉、或者程序莫名其妙被系统强制杀死 (OOM-Kill) 的情况。
为了解决这个问题,添加并开启 Swap 是一项必备技能操作。
什么是 Swap?有什么用?
Swap(交换空间) 其实就相当于 Windows 系统里的“虚拟内存”。 当你的物理内存(RAM)即将被耗尽不够用时,Linux 内核就会借用硬盘上的部分空间当作内存来凑合用,把那些很久没被访问的内存数据暂且移动到硬盘里,以此腾出真实的物理内存来运行眼前的急需任务。
虽然硬盘的速度远不如内存快,但这好歹“不至于让程序直接崩溃退出”。
一键脚本(懒人最爱)
如果你不想敲过多代码,著名的开源脚本其实能完美处理。这里提供甬哥的一键添加/删除 Swap 脚本:
wget -O swap.sh https://raw.githubusercontent.com/yqs12/swap/main/swap.sh && bash swap.sh运行后会根据菜单提示,输入你想添加的大小数字(比如添加 1024 代表添加 1GB 或者添加 2048 代表 2GB)即可。
如果你有安全洁癖喜欢纯手动掌控的过程,请往下看咱们极简的手动教程。
纯手工添加 Swap 文件教程(5个步骤)
下面以添加一个大小为 2GB 的 Swap 交换文件为例。全过程需要 root 权限去执行。
1. 检查当前是否已有 Swap
free -h看输出的 Swap: 这一行。如果后面显示的都是 0B 或者 0,说明咱们现在还没有 Swap。继续往下走。
2. 创建一个物理文件用作 Swap
使用 fallocate 命令会在根目录 / 下快速创建一个 2G 大小的名为 swapfile 的空白文件。
fallocate -l 2G /swapfile注:如果你需要 1GB,把 2G 改成 1G 即可。
3. 设置严格的安全权限并格式化该文件
不设置好权限,系统会报错不让你挂载(因为这事关系统内存的安全)。
chmod 600 /swapfile
mkswap /swapfile终端会提示类似 Setting up swapspace version 1。
4. 激活当前这个 Swap 文件
swapon /swapfile此时再运行一次 free -h,你看 Swap: 这一行是不是已经显示大概 2.0G 了?说明这部分虚拟内存拿下了!
5. 设为开机自启(永久生效)
上面的动作只要一重启 VPS 就会失效。接下来我们需要把它写入系统的设备挂载表 /etc/fstab 里,让它下次开机时自动被挂载上。
执行这行追加命令:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab如何优化 Swap 的使用率 (Swappiness)?
默认情况下,一旦内存稍微吃紧,Linux 会比较积极地去使用 Swap。不过既然有物理内存,咱们肯定更喜欢优先用内存(毕竟速度快)。我们可以通过修改一个叫 swappiness 的内核参数来让内核不到迫不得已不要去碰 Swap。
swappiness 的值从 0 到 100:
- 值接近 0:告诉系统尽可能用物理内存,不到万不得已别碰 Swap。
- 值接近 100:告诉系统早点把数据往硬盘(Swap)里丢。
对大多数服务器来说,咱们把这个值设为 10 是极其推荐的。
修改步骤:
- 打开系统控制配置表bash
nano /etc/sysctl.conf - 在该文件的在最末尾换行并添加:text
vm.swappiness=10 Ctrl + X,再按Y,然后回车保存退出。- 应用生效:bash
sysctl -p
从此你的小鸡再也不会轻易死机崩溃了!
- 🔥🔥🔥2026年便宜好用的翻墙VPN机场推荐评测(长期更新 欢迎推荐)
- 稳定好用的流媒体合租平台推荐(长期更新 欢迎推荐)
- AI 使用教程汇总|ChatGPT、Gemini 新手入门与国内使用指南
- 国外接码平台 Hero SMS 评测(稳定 · 低价 · 高成功率)
免责声明
本文仅供技术交流和学习参考,请遵守当地法律法规,合理合法使用网络服务。