温馨提示×

ubuntu swap为何失效

小樊
45
2026-09-10 05:25:10
栏目: 智能运维

在 Ubuntu 中,swap 失效(即系统配置了 swap,但实际没有使用,或开机后 swap 为 0)是比较常见的问题。下面按常见原因 → 排查方法 → 解决办法来说明。


一、最常见原因

1. swap 分区 / 文件未正确启用

很多人以为:

  • 分了 swap 分区
  • 或创建了 swapfile

就“自动生效”,但实际上必须显式启用

检查:

swapon --show

free -h

如果 Swap:0 或为空,说明没启用。

解决:

如果是 swap 分区:

sudo swapon /dev/sdXn

如果是 swapfile:

sudo swapon /swapfile

2. /etc/fstab 配置错误(最常见)

系统重启后 swap 消失,90% 是 fstab 问题。

正确示例:

swap 分区:

UUID=xxxx-xxxx none swap sw 0 0

swapfile:

/swapfile none swap sw 0 0

常见错误:

  • UUID 写错
  • 路径写错
  • 少了 sw
  • 文件系统类型写错

检查:

sudo mount -a

或重启后:

swapon --show

3. swapfile 权限不正确

swapfile 必须是 600 权限,否则会被拒绝。

sudo chmod 600 /swapfile
sudo chown root:root /swapfile

4. swapfile 创建方式不对

错误方式(不行):

echo "swap" > /swapfile

正确方式:

sudo fallocate -l 4G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

(fallocate 不可用可用 dd)


二、系统“有 swap 但不使用”

5. swappiness 太低

Ubuntu 默认:

vm.swappiness = 60

如果被改成 0~10,系统几乎不用 swap。

查看:

cat /proc/sys/vm/swappiness

临时修改:

sudo sysctl vm.swappiness=60

永久修改:

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=60

6. 内存还很充足

这是正常现象

  • 内存够用
  • swap 就是 0 使用

这不是“失效”。


三、特殊情况

7. 使用了 zram / zswap

某些 Ubuntu(尤其 22.04+)启用了 zram

swapon --show

可能看到:

/dev/zram0

这是压缩内存 swap,不是失效


8. 磁盘损坏 / 分区表错误

swap 分区异常时:

dmesg | grep swap

可能看到 I/O 错误。


四、快速自查清单 ✅

swapon --show
free -h
cat /etc/fstab
cat /proc/sys/vm/swappiness
ls -l /swapfile

如果你愿意,可以贴出:

  • swapon --show
  • cat /etc/fstab
  • free -h

我可以直接帮你判断是哪一类问题。

0