温馨提示×

ubuntu swapper为何失效

小樊
37
2026-09-06 18:35:04
栏目: 智能运维

在 Ubuntu(以及一般 Linux)中,swapper / swap 失效通常并不是“swapper 进程坏了”,而是 swap 没有正确启用或不可用。下面按常见原因系统性说明。


一、先澄清:swapper 是什么

  • swapper(PID 0)是内核线程,不会“失效”
  • 真正可能失效的是:
    • swap 分区 / swap 文件
    • swap 启用状态
    • 内存回收机制

二、最常见原因(按概率)

1️⃣ Swap 根本没启用

检查:

swapon --show
free -h

如果 swapon 无输出,说明 swap 未启用

启用方式:

sudo swapon /swapfile

或分区:

sudo swapon /dev/sdXn

2️⃣ 使用了 Swap 文件但没正确创建

Ubuntu 常见错误:

  • 文件权限不对
  • mkswap
  • 没写 /etc/fstab

正确示例:

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

/etc/fstab

/swapfile none swap sw 0 0

3️⃣ Swap 文件在 Btrfs / 某些文件系统不支持

  • Btrfs 不支持 swap 文件(旧内核)
  • 需要使用 swap 分区

4️⃣ swappiness 被设为 0

cat /proc/sys/vm/swappiness

如果是 0,几乎不会用 swap

临时:

sudo sysctl vm.swappiness=60

永久:

/etc/sysctl.conf
vm.swappiness=60

5️⃣ 系统使用 zram / zswap 替代 swap

新版 Ubuntu:

  • 默认用 zram
  • swapon --show 可能只显示 /dev/zram0

这是正常行为


6️⃣ 内存充足,系统“懒得”用 swap

Linux 设计原则:

有内存就不 swap

只有当:

  • 内存紧张
  • 匿名页可回收

才会触发


7️⃣ Swap 分区 UUID 变化

常见于:

  • 重装系统
  • 克隆磁盘

检查:

blkid
cat /etc/fstab

UUID 不一致会导致 swap 不挂载


8️⃣ 休眠(hibernate)相关失败

如果你是想 休眠失败

  • swap 小于内存
  • swap 不在内核启动参数

三、快速自检清单 ✅

swapon --show
free -h
cat /proc/sys/vm/swappiness
systemctl status swap*

四、如果你愿意

你可以告诉我:

  1. Ubuntu 版本
  2. 物理机 / 虚拟机 / 云服务器
  3. swapon --show 输出
  4. 是“swap 没用”还是“休眠失败”

我可以精准定位原因并给出修复命令。

0