鲸鱼之海

鲸鱼之海

Linux 开启 Swap

2026-01-12

Linux 开启 Swap

很多云主机/新装系统默认不启用 Swap,需要手动开启。
下面用Swap 文件的方式(更通用、改动小),并把 vm.swappiness 固定为 60


1)查看当前是否有 Swap

swapon --show
free -h
cat /proc/sys/vm/swappiness

2)创建并启用 Swap 文件(推荐)

下面以 8G 为例(想要 4G/16G 自行改数字)。

# 创建 8G swap 文件(优先 fallocate;不支持就自动回退到 dd)
sudo fallocate -l 8G /swapfile || sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress

# 权限必须收紧(安全要求)
sudo chmod 600 /swapfile

# 格式化为 swap 并启用
sudo mkswap /swapfile
sudo swapon /swapfile

# 验证
swapon --show
free -h

3)设置开机自动启用(fstab)

# 避免重复写入
grep -q '^/swapfile ' /etc/fstab || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

4)设置 vm.swappiness=60(永久生效)

swappiness 范围是 0~100:值越低越少用 Swap,值越高越积极使用 Swap。

# 永久生效(推荐写到 sysctl.d)
echo 'vm.swappiness=60' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

# 验证
sysctl vm.swappiness

5)一键版(整段复制即可)

swapon --show || true
free -h
cat /proc/sys/vm/swappiness

sudo fallocate -l 8G /swapfile || sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

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

echo 'vm.swappiness=60' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

swapon --show
free -h
sysctl vm.swappiness

6)关闭/移除 Swap(需要时)

# 关闭
sudo swapoff /swapfile

# 移除开机配置
sudo sed -i.bak '\|^/swapfile |d' /etc/fstab

# 删除文件
sudo rm -f /swapfile