问题背景
lsblk
显示存在物理设备(如 /dev/nvme0n1
),但 swapon --show
无输出
说明 系统未启用任何 Swap 设备
问题原因分析
-
/etc/fstab
中 Swap 的 UUID 配置错误
从图片中看到执行sudo swapon -a
时报错:swapoff: cannot find the device for UUID=7c428630-813b-... # 提示 UUID 无效
这通常是因为
/etc/fstab
(系统自动挂载配置文件)中定义了 Swap 分区的 UUID,但实际磁盘中不存在该 UUID 对应的分区。可能原因:- 分区被删除或重新格式化。
- 手动修改了 UUID 但未更新
/etc/fstab
。 - 复制了其他机器的
fstab
配置导致 UUID 冲突。
-
Swap 分区未正确格式化或未启用
- 如果 Swap 分区未格式化为
linux-swap
类型,系统无法识别。 - 即使分区存在,若未执行
swapon
命令,Swap 也不会被激活。
- 如果 Swap 分区未格式化为
解决方案
1. 检查 /etc/fstab
中的 Swap 配置
cat /etc/fstab | grep swap # 查看 Swap 相关配置行
- 如果输出类似以下内容:
说明配置的 UUID 无效,需修正或删除此行。UUID=7c428630-... none swap sw 0 0 # 但此 UUID 实际不存在
2. 确认磁盘上的真实 Swap 分区
-
列出所有磁盘分区的 UUID:
sudo blkid | grep -i swap # 检查是否有标记为 "swap" 的分区
如果有输出(如
/dev/nvme0n1pX: UUID="..." TYPE="swap"
),记录其 UUID 和设备路径(如/dev/nvme0n1pX
)。
若无输出,说明磁盘上无 Swap 分区。 -
检查分区类型(若分区存在但未格式化为 Swap):
sudo fdisk -l /dev/nvme0n1 # 查看分区表,确认是否有 "Linux swap" 类型分区
若分区类型不是
Linux swap
,需重新格式化:sudo mkswap /dev/nvme0n1pX # 格式化指定分区为 Swap sudo swapon /dev/nvme0n1pX # 临时启用 Swap(重启后失效)
3. 修正 /etc/fstab
或手动启用 Swap
-
若磁盘上有 Swap 分区:
更新/etc/fstab
中的 UUID 为真实的 UUID(通过sudo blkid
获取)或直接使用设备路径:# 替换为真实 UUID 或设备路径(二选一) UUID=正确的-UUID-here none swap sw 0 0 # 或 /dev/nvme0n1pX none swap sw 0 0
保存后执行:
sudo swapoff -a # 关闭所有 Swap sudo swapon -a # 重新启用 Swap(此时应无报错)
-
若磁盘上无 Swap 分区:
删除或注释掉/etc/fstab
中无效的 Swap 配置行,然后选择以下方案之一:- 方案 1:创建 Swap 文件(推荐,无需分区)
sudo fallocate -l 4G /swapfile # 创建 4GB 文件(大小自定) sudo chmod 600 /swapfile # 设置权限 sudo mkswap /swapfile # 格式化为 Swap sudo swapon /swapfile # 启用 Swap echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 永久生效
- 方案 2:新建 Swap 分区
使用gparted
或fdisk
工具创建一个新分区并格式化为linux-swap
,再更新/etc/fstab
。
- 方案 1:创建 Swap 文件(推荐,无需分区)
4. 验证 Swap 是否生效
swapon --show # 应显示已启用的 Swap 设备
free -h # 检查 "Swap" 行是否有使用量
图片中其他问题的解释
sudo weapon
报错:这是命令拼写错误,正确命令是sudo swapon
。- Swap 总量 59Gi 但使用 0B:系统检测到 Swap 设备的总容量,但因未正确启用,实际未使用。
🔑
图标未显示:与加密无关,因当前问题集中在 Swap 配置,加密图标可能因分区未加密或无解锁操作导致。
操作总结
- 删除或修正
/etc/fstab
中的无效 Swap 配置。 - 确认磁盘上的 Swap 分区是否存在并正确格式化。
- 若无 Swap 分区,建议直接创建 Swap 文件(更简单且无需分区)。
- 更新配置后执行
swapon -a
并验证。
执行完上述步骤后,swapon --show
应有输出,且 free -h
会显示 Swap 使用量。