交换:从分区到文件,现在出现“没有可用的匹配交换设备”

在运行Ubuntu 18.04的过程中,我将交换分区更改为交换文件。 swapon -s(摘要)和free命令显示了具有新大小的交换文件。 /etc/fstab文件已被更改,交换文件的权限已更改,并且交换分区已被删除。当进行更新(apt-get update和upgrade)时,我会收到以下错误提示:
Setting up amd64-microcode (3.20180524.1~ubuntu0.18.04.2) ...
update-initramfs: deferring update (trigger activated)
amd64-microcode: microcode will be updated at next boot
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for initramfs-tools (0.130ubuntu3.1) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-29-generic
W: initramfs-tools configuration sets RESUME=UUID=c5a2c6f4-b67c-4d95-bc23-8333ed6c0f11
W: but no matching swap device is available.
那里列出的UUID是用于旧的交换分区。我不认为交换文件有UUID,但对此并不确定。其他一切似乎都正常工作。我应该如何继续排除故障和修复这个问题?

这显示了什么?sudo swapon --show?还有:ls -lh /swapfile - oldfred
输出如下: 名称 类型 大小 已用 优先级 /swapfile 文件 3G 0B -2 以及 -rw------- 1 root root 3.0G 7月10日 13:00 /swapfile - rkeaing
那些看起来基本上和我的一样。fstab显示了什么?为了保留格式,请在上面发布 cat /etc/fstab - oldfred
尝试在上面发布,但文本太大了。我只会把最后几行(关于交换空间)放在这里:

安装期间,交换空间位于/dev/sdb5

#UUID=c5a2c6f4-b67c-4d95-bc23-8333ed6c0f11 none swap #sw 0 0

现在交换空间在/swapfile中

/swapfile none swap sw 0 0
- rkeaing
这不是一个错误,W:代表的是警告 - mook765
3个回答

步骤1:

$ sudo blkid

它将列出系统上每个设备或分区的UUID。复制交换分区的UUID。

第二步:

$ sudo vim /etc/initramfs-tools/conf.d/resume

将可用的UUID替换为刚刚复制并保存的UUID。
第三步:
$ sudo update-initramfs -u

2执行命令'sudo swaplabel /swapfile'实际上会显示交换文件的UUID。sudo blkid显示的是分区,而不是/swapfile。至少在我的情况下是这样。你是否创建了/swapfile - Gryu
这是正确的答案。 - Sam Protsenko
3这应该是被接受的答案。我讨厌那些懒散的“删除它”的回答。 - Aries
6这个答案对于这种情况是无效的。楼主说:“那里列出的UUID是旧的交换分区的UUID。我认为交换文件没有UUID。”他是对的。如果他不再使用交换分区,而是使用交换文件,那么就没有UUID需要处理了。所以,这个答案对于这个情况没有意义。但是,对于那些使用交换分区的人来说可能会有用... - Laurent Simon
3对于已经转向使用交换文件的发行版来说,这是一个错误的答案。 - DanglingPointer

那行代码在/etc/initramfs-tools/conf.d/resume文件中,尝试删除它。
涉及的文件“/etc/initramfs-tools/conf.d/resume”自Ubuntu 14.04以来的LTS版本中甚至不存在。在18.04系统上删除其中一行不会导致任何问题。这是一个很好的例子,为什么重新安装比升级更可取,有时旧事物可能会留下,以后可能会引发问题。
至于那些认为blkid对swapfile会产生任何输出的人,你们是错的。回答中建议使用blkid的答案与所述问题无关。再次阅读问题,已经没有交换分区了。
如评论所建议,可以使用swaplabel生成swapfile的UUID,但是读者需要自己判断将该swapfile的UUID用在不再是Ubuntu系统的配置文件中是否真正能解决问题,还是只会导致另一个UUID查找失败。

6+1 是的。删除它或替换为RESUME=NONE,或将其作为注释(在行首加上**#**)。 - sudodus
1删除它,重新启动,运行apt update和upgrade。initramfs已更新,没有错误。谢谢! - rkeaing
5在Ubuntu LTS 18.04上,RESUME=NONE无法正常工作。但是删除该行或者将RESUME=留空可以解决问题。 - Serge Stroobandt
1这会搞乱新的Debian和Ubuntu安装。下面的答案可以正确修复它...就按照那样做。 - Eric
2这个答案是糟糕的建议。请不要随意删除你不了解的 Linux 内容。这个为什么被接受作为答案令人困惑。相反,按照其他答案中使用 blkid 来确定正确的交换分区 UUID 并替换它的指示进行操作! - dovetalk
这个答案也不完全正确,首先我在Ubuntu 16.04上有这个文件,那是第一个安装的版本,而在另一个实例上的Ubuntu 20.04上,我没有这个文件,通过使用blkid命令添加了它后问题得到解决。 - Tofandel
1@dovetalk:你的评论给出了糟糕的建议。你甚至还没读问题就妄下结论。现在已经没有swap分区了,所以使用blkid来找它的UUID是不适用的。 - Reinier Post
看起来你没有阅读其他(得票更高的)答案,它展示了如何找到活动的UUID并用它替换不活动的UUID。不要使用if语句来找到已删除的UUID。但没关系。 - dovetalk

编辑/etc/fstab并使用新的交换分区UUID,启动时间从2分钟缩短到了10秒。

完美,但这与“没有匹配的交换设备可用”有什么关系呢? - Marc Vanhoomissen
这与问题无关,问题是在/etc/initramfs-tools/conf.d/resume中的RESUME交换分区,而不是/etc/fstab - dovetalk