温馨提示×

ubuntu swapper报错怎么办

小樊
37
2026-10-21 04:26:09
栏目: 智能运维

在 Ubuntu 中 swapper / swap 相关报错 比较常见,原因和处理方式取决于具体报错内容。下面我按「常见场景 → 排查 → 解决」给你一个通用指南,你可以对照自己的情况处理。


一、先确认报错到底是什么

请先查看相关日志:

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

把完整报错信息发出来,能更精准定位。


二、常见报错及解决办法

1️⃣ swapper 进程占用高 / 系统卡死

典型表现:

  • top 里 swapper 占 CPU
  • 系统卡顿、OOM

原因

  • 内存不足,频繁 swap
  • swap 分区太小或没有 swap

解决

free -h
swapon --show

✅ 如果没有 swap:

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

永久生效:

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

2️⃣ “swapon failed: Invalid argument”

常见于:

  • 文件系统不支持(如某些容器环境)
  • swap 文件创建方式不对

✅ 正确方式(不要用 dd 旧方式):

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

❌ 容器(Docker / LXC)通常不支持 swap


3️⃣ 开机提示 “Cannot allocate memory” / swap 无法挂载

可能原因:

  • /etc/fstab 中 swap 配置错误
  • UUID 不对

检查:

blkid
cat /etc/fstab

修正 UUID 或暂时注释 swap 行。


4️⃣ swapper 报错 + 磁盘 IO 高

说明:

  • 系统在“拼命”使用 swap

✅ 临时减少 swap 使用:

sudo sysctl vm.swappiness=10

永久:

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

5️⃣ Ubuntu 22.04+ zram / systemd-swap 冲突

新版本 Ubuntu 可能用 zram

查看:

swapon --show
zramctl

✅ 如果冲突:

sudo systemctl disable systemd-zram-setup

三、快速排查清单(建议照做)

free -h
swapon --show
df -h
dmesg | tail

四、如果你愿意

你可以直接把报错原文贴出来(哪怕是截图文字),例如:

  • swapper[0]: BUG: unable to handle page fault
  • swapon: /swapfile: swapon failed
  • out of memory: killed process

我可以直接告诉你是哪一类问题 + 精确修复命令。

0 踩