将 /var/lib/libvirt/images 移至更大的磁盘后,新的虚拟机无法完成

将 /var/lib/libvirt/images 移至更大的磁盘后,新的虚拟机无法完成

我已经在 Fedora 37 服务器上构建虚拟机一段时间了,突然磁盘空间开始不足。因此,我查看了文件系统,发现新虚拟机的磁盘构建在 /var/lib/libvirt/images 中,因此我将 /var/lib/libvirt/images 设置为指向我创建的新分区的符号链接,该分区的空间大得多。但是现在,当我 virt-install 新的虚拟机时,它会卡在控制台中,无法完成构建。我不能 100% 确定新符号链接的权限是否设置正确。以下是我所拥有的:

ls -l /var/lib/libvirt
total 0
drwx--x--x. 2 root root   6 Nov 20 12:45 boot
drwxr-xr-x. 2 root root  97 Mar 10 19:33 dnsmasq
drwx--x--x. 2 root root   6 Nov 20 12:45 filesystems
lrwxrwxrwx. 1 root root  15 Mar 20 06:00 images -> /vmroot/images/
drwx------. 2 root root   6 Nov 20 12:45 network
drwxr-x--x. 9 qemu qemu 103 Mar 24 11:32 qemu
drwx--x--x. 2 root root   6 Nov 20 12:45 swtpm

VM 启动失败如下所示,仅供参考:

1;39mmultipathd.[    4.614630] multipathd[555]: /etc/multipath.conf. See man    mpathconf(8) for more details
service…apper [    4.616316] multipathd[555]: /etc/multipath.conf does not exist, blacklisting all devices.
Multipath Device[    4.617884] multipathd[555]: You can run "/sbin/mpathconf --enable" to create
 Controller.[    4.619390] multipathd[555]: /etc/multipath.conf. See man mpathconf(8) for more details

[    4.620934] multipathd[555]: reconfigure: setting up paths and maps
[    4.622211] systemd[1]: Started multipathd.service - Device-Mapper Multipath Device Controller.
[   ***] Job dev-disk-by\x2dlabel-boot.device/start running (20s / 1min 30s)

最后:

[    4.510452] systemd[1]: Started multipathd.service - Device-Mapper Multipath Device Controller.
[[   93.412712] systemd[1]: dev-disk-by\x2dlabel-boot.device: Job dev-disk-by\x2dlabel-boot.device/start timed out.
 TIME ] Timed out waiting fo[   93.418160] systemd[1]: Timed out waiting for device dev-disk-by\x2dlabel-boot.device - /dev/disk/by-label/boot.
r device ▒▒ice - /dev/disk/by-label/boot.

在此之后,它陷入了一个循环,我只能按 Ctrl-D 来继续循环,或者按 Enter 进入维护模式。

在符号链接更改之前,我可以毫无问题地启动虚拟机,但更改之后,我无法再构建虚拟机,因此我确信这就是问题所在。但我不知道如何修复。有什么建议吗?

答案1

这可能是由于 selinux 造成的。

尝试这个:

semanage fcontext -a -e /var/lib/libvirt /vmroot/images
restorecon -RF /var/lib/libvirt
restorecon -RF /vmroot/images
systemctl restart libvirtd

如果不起作用,您可以尝试删除/var/lib/libvirt/images符号链接,并用绑定挂载执行以下操作:

semanage fcontext -a -e /var/lib/libvirt /vmroot/images
mkdir /var/lib/libvirt/images
mount --bind /vmroot/images /var/lib/libvirt/images
restorecon -RF /var/lib/libvirt
systemctl restart libvirtd

如果它仍然不起作用您可以在宽容模式下设置 selinux:

setenforce 0
systemctl restart libvirtd

要永久将 selinux 设置为宽容模式,您需要编辑/etc/selinux/config并设置

SELINUX=permissive

相关内容