Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.19.8. 带有 Unables 的 migration Fails 以允许访问磁盘路径:没有这些文件或目录

症状
无法迁移客户机虚拟机(或域),因为 libvirt 无法访问磁盘映像:
# virsh migrate qemu qemu+tcp://name_of_host/system
error: Unable to allow access for disk path /var/lib/libvirt/images/qemu.img: No such file or directory
例如,如果目标主机名是 newyork,则错误消息会显示如下:
# virsh migrate qemu qemu+tcp://newyork/system
error: Unable to allow access for disk path /var/lib/libvirt/images/qemu.img: No such file or directory
正在调查
默认情况下,迁移仅传输正在运行的客户机的内存中状态(如内存或 CPU 状态)。虽然磁盘镜像不会在迁移期间传输,但它们都需要在这两个主机在同一个路径上保持访问。
解决方案
在两个主机上的同一位置设置并挂载共享存储。执行此操作的最简单方法是使用 NFS:

过程 A.9. 设置共享存储

  1. 在主机上设置 NFS 服务器作为共享存储。NFS 服务器可以是迁移中涉及的主机之一,只要涉及的主机都通过 NFS 访问共享存储。
    # mkdir -p /exports/images
    # cat >>/etc/exports <<EOF
    /exports/images    192.168.122.0/24(rw,no_root_squash)
    EOF
  2. 在运行 libvirt 的所有主机上,将导出的目录挂载到一个通用位置。例如,如果 NFS 服务器的 IP 地址为 192.168.122.1,使用以下命令挂载该目录:
    # cat >>/etc/fstab <<EOF
    192.168.122.1:/exports/images  /var/lib/libvirt/images  nfs  auto  0 0
    EOF
    # mount /var/lib/libvirt/images
注意
使用 NFS 从一个主机导出本地目录,并将它挂载到另一主机上的相同路径 - 用于存储磁盘镜像的目录必须从两个主机上的共享存储挂载。如果没有正确配置,客户机虚拟机在迁移过程中可能会丢失对磁盘映像的访问,因为源主机的 libvirt 守护进程可能会在成功将客户机成功迁移到其目的地后更改磁盘映像的所有者、权限和 SELinux 标签。
如果 libvirt 检测到磁盘镜像是从共享存储位置挂载的,则不会进行这些更改。