温馨提示×

如何修复Debian Swapper

小樊
47
2026-08-24 10:14:02
栏目: 智能运维

在 Debian 系统中,“swapper”相关的问题通常指 swap 分区或交换文件(swap file)配置异常,导致系统无法正确启用交换空间、启动卡住或性能下降。以下是常见问题的排查与修复方法。


一、确认问题现象

先明确是哪种“swapper”问题:

  1. 系统启动卡在 swapper / init 阶段
  2. swap 未启用(free -h 看不到 swap)
  3. 休眠(hibernate)失败
  4. OOM / 内存不足,但 swap 未使用

二、检查当前 Swap 状态

free -h
swapon --show
lsblk
cat /proc/swaps

正常应看到类似:

NAME      TYPE      SIZE USED PRIO
/swapfile file        4G   0B   -2

三、常见修复方案

✅ 1. 修复缺失或损坏的 Swap 分区

查看 fstab 是否正确

cat /etc/fstab

示例(分区):

UUID=xxxx-none swap swap sw 0 0

或(swap 文件):

/swapfile none swap sw 0 0

如果 UUID 错误或不存在,需要修正。

获取正确 UUID

blkid

✅ 2. 重新创建 Swap 文件(推荐)

如果 swap 文件损坏或不存在:

sudo swapoff /swapfile        # 如果有
sudo rm /swapfile

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

写入 fstab:

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

✅ 3. 修复 Swap 分区

如果是分区(如 /dev/sda2):

sudo swapoff /dev/sda2
sudo mkswap /dev/sda2
sudo swapon /dev/sda2

并在 /etc/fstab 中确认:

/dev/sda2 none swap sw 0 0

✅ 4. 修复启动卡在 swapper 的问题

常见于 initramfs / fstab / UUID 错误

进入恢复模式

  1. 启动时选择 Advanced → Recovery Mode
  2. 或 GRUB 添加:
init=/bin/bash

修复步骤

mount -o remount,rw /
nano /etc/fstab
  • 注释掉不存在的 swap
  • 或修正 UUID

然后:

update-initramfs -u
update-grub
reboot

✅ 5. 修复休眠(Hibernate)失败

休眠需要:

swapon --show

且 swap ≥ 内存大小。

检查:

cat /sys/power/image_size

修复 GRUB:

sudo nano /etc/default/grub

添加:

GRUB_CMDLINE_LINUX="resume=UUID=swap分区UUID"

更新:

sudo update-grub

四、内核级 swapper 问题(少见)

如果你看到的是:

swapper/0: page allocation failure

通常是:

  • 内存不足
  • 驱动 bug
  • 内核版本问题

✅ 解决方案:

sudo apt update
sudo apt upgrade

或回退内核:

apt list --installed | grep linux-image

五、推荐配置(Debian 通用)

内存 Swap
≤ 2GB 2× 内存
2–8GB 1× 内存
≥ 8GB 4–8GB

六、快速自检清单 ✅

[ ] free -h 有 swap
[ ] swapon --show 非空
[ ] /etc/fstab 正确
[ ] UUID 与 blkid 一致
[ ] initramfs 已更新

如果你愿意,可以把以下信息发我,我可以精确判断并给出修复命令

  • free -h
  • cat /etc/fstab
  • lsblk
  • 启动时的错误截图或日志

0