温馨提示×

ubuntu swap失败怎么办

小樊
33
2026-09-01 07:25:16
栏目: 智能运维

在 Ubuntu 中遇到 swap 失败(无法启用、无法挂载、swap 不足等)时,可以按下面步骤排查和解决。


一、先确认现象

常见报错或表现:

  • swapon: /swapfile: swapon failed: Invalid argument
  • 系统启动卡在 a start job is running for /swapfile
  • free -h 看不到 swap
  • 休眠(hibernate)失败

先执行:

swapon --show
free -h
lsblk
cat /etc/fstab

二、常见原因及解决办法

1️⃣ swapfile 创建方式不对(最常见)

如果你是直接 touch /swapfile,那是错的

正确做法:

sudo fallocate -l 4G /swapfile
# 如果 fallocate 不支持(如某些文件系统)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

开机自动挂载:

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

2️⃣ 文件系统不支持 swap

以下情况 不能做 swapfile

  • Btrfs(需单独分区)
  • 某些网络文件系统(NFS)

解决:

  • 使用独立 swap 分区
  • 或改用 ext4

查看文件系统:

df -T /swapfile

3️⃣ swap 文件在启用时仍在写

如果系统正在用 swap:

sudo swapoff /swapfile
sudo swapon /swapfile

⚠️ 内存不足时 swapoff 会失败。


4️⃣ UUID / fstab 写错

检查:

cat /etc/fstab

如果是分区:

blkid

确保 UUID 正确。


5️⃣ 休眠(hibernate)失败

需要:

sudo swapon --show

swap ≥ 内存大小

并在:

/etc/default/grub

添加:

resume=UUID=xxx

然后:

sudo update-grub

6️⃣ zram / systemd 冲突

新 Ubuntu 常用 zram:

swapon --show

如果有 /dev/zram0,说明已用压缩内存 swap。

禁用:

sudo systemctl disable --now systemd-zram-setup@zram0

三、快速修复模板(推荐)

sudo swapoff -a
sudo rm -f /swapfile
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

四、如果你愿意

可以把下面信息发我,我可以直接帮你定位:

  1. Ubuntu 版本
  2. 报错完整截图或命令输出
  3. swapon --showcat /etc/fstab 的结果

我可以一步一步帮你修 ✅

0