Linux VPS 新手必备:5分钟创建 2GB Swap 交换空间完整教程

开篇:小内存 VPS 为什么需要 Swap?

如果你手里有台 1GB 内存的 VPS(比如甲骨文的 AMD 小鸡、各种低配云服务器),在运行 Ghost 博客、WordPress 或者编译程序时,可能会遇到内存不够的尴尬情况——系统直接把进程杀掉(OOM Killed)

这种时候,Swap 交换空间就是你的救命稻草。

什么是 Swap?简单说就是”硬盘充当临时内存”

Swap 其实就是用硬盘空间模拟内存。当物理内存(RAM)不够用时,系统会把一部分暂时不用的数据挪到 Swap 里,给急需内存的程序腾地方。

通俗类比

  • 物理内存 = 你的办公桌
  • Swap = 旁边的抽屉
  • 当桌面放不下时,把不常用的东西塞进抽屉,需要时再拿出来

为什么推荐 2GB?

  • 对于 1GB 内存的服务器,2倍内存大小的 Swap 是经典配置
  • 既能应对临时内存峰值,又不会占用太多硬盘空间

好了,废话不多说,下面直接开干!


正文:6步创建并永久启用 Swap

整个过程大概 5分钟,适用于 Ubuntu、Debian、CentOS 等主流 Linux 发行版。

第一步:使用 fallocate 快速创建 Swap 文件

传统的 dd 命令创建文件很慢,我们用更快的 fallocate

# 创建一个 2GB 大小的文件,路径为 /swapfile
sudo fallocate -l 2G /swapfile

这个命令的作用

  • fallocate:瞬间分配磁盘空间(比 dd 快几十倍)
  • -l 2G:指定文件大小为 2GB
  • /swapfile:文件保存路径(可以改,但建议用默认的)

执行后没有任何输出,这是正常的。我们接着验证文件是否创建成功:

ls -lh /swapfile

应该会看到:

-rw-r--r-- 1 root root 2.0G Jan  4 10:30 /swapfile

第二步:设置严格的安全权限(非常重要!)

Swap 文件里可能包含敏感数据(比如密码、密钥),必须确保只有 root 能读写:

# 将 /swapfile 的权限设置为 600
sudo chmod 600 /swapfile

权限解释

  • 600 = 只有所有者(root)有读写权限,其他所有人没有任何权限
  • 这是 Linux 系统安全的基本原则

再次检查权限:

ls -lh /swapfile

现在应该显示:

-rw------- 1 root root 2.0G Jan  4 10:30 /swapfile

前面的 -rw------- 就是 600 权限,完美!


第三步:格式化为 Swap 格式

现在这个文件还只是一个普通文件,需要告诉系统”这是 Swap 空间”:

# 格式化为 swap 格式
sudo mkswap /swapfile

成功后会看到

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

出现 UUID 就说明格式化成功了!


第四步:启用 Swap 空间

让系统开始使用这个 Swap 文件:

# 启用 swap
sudo swapon /swapfile

同样,没有输出就是最好的输出


第五步:验证 Swap 是否生效

free 命令查看内存和 Swap 的使用情况:

free -h

-h 参数的意思:human-readable(人类友好的单位,如 G、M、K)

你应该会看到类似这样的输出:

               total        used        free      shared  buff/cache   available
Mem:           981Mi       169Mi       131Mi       0.0Ki       680Mi       662Mi
Swap:          2.0Gi          0B       2.0Gi

重点看最后一行

  • Swap: 2.0Gi —— ✅ 说明 Swap 已经成功启用!
  • 0B 是当前使用量(系统还有足够的物理内存,所以暂时没用到 Swap)

第六步:让 Swap 永久生效(关键一步!)

⚠️ 注意:上面的 swapon 命令只在当前会话有效,服务器重启后 Swap 会失效

为了让服务器每次开机都自动挂载 Swap,需要把配置写入 /etc/fstab 文件:

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

这个命令做了什么

  • echo '...':生成配置内容
  • |:管道符,把前面的输出传给后面的命令
  • sudo tee -a /etc/fstab:以 root 权限追加(-a)到 /etc/fstab 文件末尾

验证是否写入成功

tail -1 /etc/fstab

应该显示:

/swapfile none swap sw 0 0

完美!现在重启服务器,Swap 也会自动挂载。


进阶优化:调整 Swappiness 值(强烈推荐)

什么是 Swappiness?

swappiness 是 Linux 内核参数,控制系统使用 Swap 的积极程度

  • 值范围:0 到 100
  • 值越高:系统越早使用 Swap(默认通常是 60)
  • 值越低:系统尽量使用物理内存,只有在必要时才用 Swap

为什么要调低?

对于 VPS 和网站服务器,默认值 60 太高了,会导致:

  • ❌ 系统过早使用 Swap(硬盘 I/O 比内存慢几十倍)
  • ❌ 网站响应速度变慢
  • ❌ 数据库查询延迟增加

推荐值:10

  • ✅ 让系统优先使用物理内存
  • ✅ 只在内存真正不够时才用 Swap
  • ✅ 性能和稳定性的最佳平衡

实操:修改 Swappiness

方法一:临时修改(立即生效,重启后失效)

sudo sysctl vm.swappiness=10

验证当前值

cat /proc/sys/vm/swappiness

应该显示 10

方法二:永久修改(重启后依然生效)

编辑系统配置文件:

sudo nano /etc/sysctl.conf

在文件最末尾添加一行:

vm.swappiness=10

保存并退出

  1. Ctrl + X
  2. Y 确认保存
  3. Enter 退出

让配置立即生效(不用重启):

sudo sysctl -p

完美!现在你的服务器会更聪明地使用 Swap。


常见问题 FAQ

Q1:我的服务器是 512MB 内存,应该创建多大的 Swap?

推荐 1GB。规则是:

  • 1GB 以下内存 → Swap = 内存的 2 倍
  • 1-4GB 内存 → Swap = 内存大小或 2GB
  • 4GB 以上内存 → Swap = 1-2GB 即可(甚至可以不用)

Q2:Swap 会拖慢系统吗?

看情况

  • ✅ 合理配置 + 调低 Swappiness = 不会影响性能,反而能避免 OOM
  • ❌ 没调 Swappiness + 频繁使用 Swap = 硬盘狂读写,卡得要死

Q3:可以把 Swap 文件放在其他位置吗?

可以!只要路径一致即可:

sudo fallocate -l 2G /var/swap
sudo chmod 600 /var/swap
sudo mkswap /var/swap
sudo swapon /var/swap
echo '/var/swap none swap sw 0 0' | sudo tee -a /etc/fstab

Q4:如何删除 Swap?

# 1. 停用 Swap
sudo swapoff /swapfile

# 2. 从 fstab 中删除配置行
sudo nano /etc/fstab  # 手动删除 /swapfile 那一行

# 3. 删除文件
sudo rm /swapfile

总结:Swap 配置的最佳实践

推荐配置

  • 1GB 内存 VPS → 创建 2GB Swap
  • 设置 600 权限(安全第一)
  • 写入 /etc/fstab 永久挂载
  • 设置 vm.swappiness=10(性能优化)

适用场景

  • Ghost、WordPress 等博客程序
  • 编译代码(make、npm build)
  • Docker 容器运行
  • 临时任务处理

不推荐

  • 生产环境高负载服务器(应该直接加内存)
  • SSD 寿命敏感的场景(频繁写入会缩短寿命)
上一篇文章

纯公网 IP 申请 HTTPS 证书记录 (Docker + Lego + Let's Encrypt)

下一篇文章

白嫖 ChatGPT Plus 一年?最近流行的"给美国大兵扫墓"操作完整指南

写评论

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注