Ubuntu / Debian 配置 Swap 完整指南

Ubuntu / Debian 配置 Swap 完整指南

什么是 Swap?

Swap(交换空间)是硬盘上的一块空间,当系统内存(RAM)不足时,Linux 会将暂时不用的数据移到 Swap 中,以避免因内存耗尽导致程序崩溃或系统被 OOM Killer 杀死。

优点

  • 防止内存不足导致服务崩溃
  • 提高小内存 VPS 的稳定性
  • Docker、MySQL、Node.js、Java 等程序更容易正常运行

缺点

  • Swap 位于硬盘上,速度远低于内存
  • 频繁使用 Swap 会降低性能

因此:

Swap 的作用是提高系统稳定性,而不是替代内存。


查看当前内存和 Swap 状态

查看内存:

free -h

查看 Swap:

swapon --show

创建 2GB Swap

1. 创建 Swap 文件

创建一个 2GB 的 Swap 文件:

sudo fallocate -l 2G /swapfile

如果提示 fallocate 不支持:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

说明:

  • 2G 表示 2GB
  • /swapfile 为 Swap 文件名称

2. 设置权限

Swap 文件必须仅允许 root 访问:

sudo chmod 600 /swapfile

验证:

ls -lh /swapfile

输出类似:

-rw------- 1 root root 2.0G ...

3. 格式化 Swap 文件

将普通文件转换为 Swap 格式:

sudo mkswap /swapfile

成功后会显示:

Setting up swapspace version 1

4. 启用 Swap

立即启用:

sudo swapon /swapfile

5. 验证是否生效

查看:

swapon --show

正确输出类似:

NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2

以及:

free -h

例如:

               total        used        free
Mem:           403Mi       173Mi        12Mi
Swap:          2.0Gi       0.0Ki       2.0Gi

说明 Swap 已正常工作。


设置开机自动加载

编辑系统挂载配置:

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

验证:

grep swapfile /etc/fstab

输出:

/swapfile none swap sw 0 0

说明系统重启后会自动启用 Swap。


优化 Swap 使用策略

查看当前参数:

cat /proc/sys/vm/swappiness

通常默认:

60

对于 VPS 或服务器,推荐设置:

sudo sysctl vm.swappiness=10

永久生效:

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

验证:

cat /proc/sys/vm/swappiness

输出:

10

删除 Swap(如需重建)

先关闭:

sudo swapoff /swapfile

删除文件:

sudo rm /swapfile

编辑:

sudo nano /etc/fstab

删除这一行:

/swapfile none swap sw 0 0

保存退出即可。


推荐配置

物理内存推荐 Swap
512MB1~2GB
1GB1~2GB
2GB2GB
4GB2~4GB
8GB+2~8GB

你的服务器配置

当前检测:

内存:403MiB
Swap:2GiB

配置结果:

✅ 已成功创建 2GB Swap

✅ 已启用 Swap

✅ 适合 512MB VPS 使用

✅ 建议额外设置:

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

这样能够减少对 Swap 的依赖,提高系统响应速度。