我已经在 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