Debian 的 swapper(swap 机制)不工作通常不是“完全没这个功能”,而是没有被激活或配置不正确。下面按最常见原因 → 排查步骤 → 解决办法给你一个系统性的排查清单。
swapon --show
free -h
✅ 正常情况应看到类似:
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
❌ 如果 swapon --show 没有任何输出,说明 swap 未启用。
lsblk
cat /proc/swaps
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
sudo swapon -a
cat /etc/fstab
应有类似:
/swapfile none swap sw 0 0
或
UUID=xxxx none swap sw 0 0
某些 VPS / 云镜像会禁用 swap。
systemctl status swap.target
sudo systemctl enable swap.target
sudo swapon -a
⚠️ 不等于 swapper 不工作,而是“尽量不用 swap”。
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=60
echo 'vm.swappiness=60' | sudo tee -a /etc/sysctl.conf
Linux 只在内存压力大时才用 swap。
测试是否真的能用:
stress-ng --vm 1 --vm-bytes 90% --timeout 30s
(需安装 stress-ng)
sudo chattr +C /swapfile
确认 VG 有空间:
vgs
lvs
sysctl -a | grep swap
Debian 默认 AppArmor,一般不影响 swap。
swapon --show
free -h
cat /proc/swaps
cat /etc/fstab | grep swap
cat /proc/sys/vm/swappiness
❌ /swapfile 权限不是 600
❌ fstab 写错类型(写成 ext4)
❌ 使用 dd 没 sync 就 mkswap
❌ swappiness=0 + 内存大 → 看起来像“没工作”
你可以直接贴出:
swapon --show
free -h
cat /etc/fstab
lsblk
我可以精确判断你是哪一种情况,而不是泛泛而谈。