一、查看当前 Swap 使用情况

1
sudo swapon --show

或使用:

1
free -h

输出示例:

1
2
3
              total        used        free      shared  buff/cache   available
Mem: 2.0Gi 1.5Gi 100Mi 50Mi 350Mi 200Mi
Swap: 1.0Gi 500Mi 524Mi

这表示你当前有 1GB 的 Swap,其中已使用 500MB。

🛠 二、增加 Swap 大小(以添加一个 2GB 的 Swap 文件为例)
✅ 步骤如下:

  1. 关闭现有 Swap
1
sudo swapoff -a

⚠️ 注意:如果你正在运行一些依赖 Swap 的程序,请确保它们不会因内存不足而崩溃。

  1. 删除旧 Swap 文件(可选)
    如果之前是用文件作为 Swap,比如 /swapfile,可以删除它:
1
sudo rm /swapfile
  1. 创建新的 Swap 文件(如 2GB)
1
sudo fallocate -l 2G /swapfile

如果你的系统不支持 fallocate,可以用 dd 替代:

1
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
  1. 设置合适的权限(防止被普通用户读写)
1
sudo chmod 600 /swapfile
  1. 格式化为 Swap 文件系统
1
sudo mkswap /swapfile
  1. 启用新 Swap
1
sudo swapon /swapfile
  1. 永久生效(写入 /etc/fstab)
    编辑 /etc/fstab 文件:
1
sudo nano /etc/fstab

添加一行:

1
/swapfile none swap sw 0 0

保存并退出(Ctrl + O → Enter → Ctrl + X)。

🔍 三、验证新 Swap 是否生效

1
sudo swapon --show

你应该看到类似:

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

或者使用:

1
free -h

确认 Swap 容量已经变为 2GB。

⚙️ 四、调整 Swap 使用频率(swappiness)
Linux 控制 Swap 使用频率的参数叫 swappiness,值范围是 0~100:

0 = 尽可能少使用 Swap
100 = 积极使用 Swap
默认值通常是 60。对于桌面或服务器环境,建议设置为 10~30。

查看当前 swappiness 值:

1
cat /proc/sys/vm/swappiness

临时修改(重启后失效):

1
sudo sysctl vm.swappiness=10

永久修改:
编辑配置文件:

1
sudo nano /etc/sysctl.conf

添加或修改这一行:

1
vm.swappiness=10

保存并退出。

📌 五、常见问题解答
❓ 我应该设置多大的 Swap?

物理内存 (RAM) 推荐 Swap 大小
≤ 2GB ≥ 2GB
4GB 1~2GB
8GB+ 0~1GB 或关闭

如果你使用的是 SSD,Swap 性能还可以接受;如果是 HDD,尽量避免频繁使用 Swap。

❓ 可以完全关闭 Swap 吗?
可以,但不推荐。关闭 Swap 可能导致系统在内存不足时直接崩溃(OOM Killer 杀掉进程)。如果你内存充足(如 ≥ 8GB),可以关闭 Swap:

1
2
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab

✅ 六、完整脚本(一键操作)
你可以复制下面这个脚本,一键完成 Swap 扩展到 2GB:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

# 关闭原有 Swap

sudo swapoff -a

# 删除旧 Swap 文件(如有)

sudo rm -f /swapfile

# 创建 2GB 新 Swap 文件

sudo fallocate -l 2G /swapfile

# 设置权限

sudo chmod 600 /swapfile

# 格式化为 Swap

sudo mkswap /swapfile

# 挂载启用

sudo swapon /swapfile

# 写入 fstab 实现开机自动挂载

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

# 设置 swappiness 为 10

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

# 显示结果

echo "✅ Swap 已更新为 2GB"
free -h

保存为 resize_swap.sh,然后运行:

1
2
chmod +x resize_swap.sh
sudo ./resize_swap.sh

🧠 总结
操作 命令
查看 Swap free -h 或 swapon –show
创建 Swap 文件 fallocate -l 2G /swapfile
格式化 Swap mkswap /swapfile
启用 Swap swapon /swapfile
开机自动启用 添加 /swapfile none swap sw 0 0 到 /etc/fstab
调整使用频率 sysctl vm.swappiness=10