A.19.7. migration Fails with error: unables to address


症状
QEMU 客户机代理失败,并显示这个错误消息:
# virsh migrate qemu qemu+tcp://192.168.122.12/system
  error: Unable to resolve address name_of_host service '49155': Name or service not known
Copy to Clipboard Toggle word wrap
例如,如果目标主机名是 newyork,则错误消息会显示如下:
# virsh migrate qemu qemu+tcp://192.168.122.12/system
error: Unable to resolve address 'newyork' service '49155': Name or service not known
Copy to Clipboard Toggle word wrap
但是,这个错误看上去有些奇怪,因为我们没有在任何位置使用 newyork 主机名。
正在调查
在迁移过程中,在目标主机上运行的 libvirtd 从地址和端口创建一个 URI,用于接收迁移数据并将其发回源主机上运行的 libvirtd
在这种情况下,目标主机(192.168.122.12)的名称被设置为 'newyork'。出于某种原因,在该主机上运行的虚拟机的 libvirtd 无法将名称解析为可以返回并仍然有用的 IP 地址。因此,它会在解析名称时返回 "newyork "主机名希望源 libvirtd 更加成功。如果 DNS 没有被正确配置,或者 /etc/hosts 具有与本地回环地址(127.0.0.1)关联的主机名,则可能会出现此情况。
请注意,无法从连接到目标 libvirtd 的地址自动决定用于迁移数据的地址(例如,来自 qemu+tcp://192.168.122.12/system)。这是因为,要与目标 libvirtd 通信,源 libvirtd 可能需要使用与 virsh (可能在独立计算机上运行)类型不同的网络基础架构。
解决方案
最佳解决方案是正确配置 DNS,以便涉及迁移的所有主机都可以解析所有主机名。
如果 DNS 无法配置为执行此操作,则可以手动将用于迁移的每个主机添加到每个主机上的 /etc/hosts 文件中。但是,在动态环境中让这类列表保持一致非常困难。
如果主机名不能被任何途径解析,virsh migrate 支持指定迁移主机:
# virsh migrate qemu qemu+tcp://192.168.122.12/system tcp://192.168.122.12
Copy to Clipboard Toggle word wrap
目的地 libvirtd 将采用 tcp://192.168.122.12 URI,并附加自动生成的端口号。如果这不是理想的情况(例如,由于防火墙配置),可在此命令中指定端口号:
# virsh migrate qemu qemu+tcp://192.168.122.12/system tcp://192.168.122.12:12345
Copy to Clipboard Toggle word wrap
另一种选择是使用隧道迁移。隧道的迁移不会为迁移数据创建单独的连接,而是通过用于连接目标 libvirtd 的连接(例如 qemu+tcp://192.168.122.12/system):
# virsh migrate qemu qemu+tcp://192.168.122.12/system --p2p --tunnelled
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat