温馨提示×

为什么ubuntu swapper失效

小樊
46
2026-09-27 20:11:26
栏目: 智能运维

在 Ubuntu 中,“swapper(交换分区/交换文件)失效”通常不是指内核里的 swapper 进程本身(那个是 PID 0,不会“失效”),而是指交换空间(swap)没有被正常使用或启用失败。下面从常见原因到排查方法系统说明。


一、常见导致 Ubuntu swap 失效的原因

1. 交换文件 / 分区未启用

系统安装了 swap,但没有 swapon:

swapon --show

如果为空,说明当前没有启用任何 swap。

2. /etc/fstab 配置错误

常见于:

  • UUID 写错
  • 文件系统类型写错(如写成 ext4)
  • 使用 swap 文件但路径不对

示例正确写法(swap 文件):

/swapfile none swap sw 0 0

3. 使用了 swap 文件但未正确创建

常见错误:

  • 文件权限不是 600
  • 没有执行 mkswap
  • 文件位于不支持 swap 的文件系统(如某些加密/网络文件系统)

正确创建方式:

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

4. 启用了 zRAM(常见于新版本 Ubuntu)

Ubuntu 22.04+ 默认可能使用 zRAM 而不是磁盘 swap:

swapon --show
# 可能看到 /dev/zram0

这看起来像“swap 失效”,其实是用了压缩内存。

5. swapiness 设置过低

即使有 swap,也几乎不用:

cat /proc/sys/vm/swappiness

默认通常是 60,如果是 1 或 0,系统几乎不 swap。

临时修改:

sudo sysctl vm.swappiness=60

6. 系统使用了休眠(hibernate)但 swap 太小

如果尝试休眠:

  • swap < 内存大小
  • 或 swap 未固定(zRAM 不支持休眠)

会导致“swap 无效”。

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

swap 分区所在磁盘有错误,会导致:

  • swapon 失败
  • mkswap 报错

可用:

dmesg | grep swap

二、快速排查步骤(推荐顺序)

1️⃣ 看是否启用

swapon --show
free -h

2️⃣ 看系统日志

journalctl -xe | grep -i swap
dmesg | grep -i swap

3️⃣ 检查 fstab

cat /etc/fstab

4️⃣ 手动测试启用

sudo swapon /swapfile

如果报错,错误信息非常关键。


三、常见错误示例

❌ swapon: /swapfile: read swap header failed → 没执行 mkswap

❌ swapon: cannot open /swapfile: Permission denied → 权限不是 600

❌ 系统卡死但不 swap → swappiness 太低或内存泄漏


四、如果你愿意,我可以更精准帮你

你可以贴出以下信息之一:

  • swapon --show 输出
  • /etc/fstab 内容
  • 报错信息
  • Ubuntu 版本(lsb_release -a)

我可以直接告诉你为什么你的 swapper 失效以及怎么修。

0 踩