我实际上正在两台服务器之间测试带有 Xen 的 RHEL 5.3,以便获得灾难恢复解决方案。因此,我正在尝试将我的 domU 从一个 dom0 服务器移动到另一个服务器。
不幸的是,当其他人移动 domU 时,我不知道我的域托管在哪里。我想知道在 domU 内部我找不到我的 dom0 名称。我正在寻找类似 solaris 稀疏区域上的 gzonename 命令。我检查了 /proc/xen 内部,但除了 dom0 内核版本之外,我没有看到任何特殊的东西。
有人知道要等待多久才能找到这个吗?
答案1
我们xenstore-write /tool/hostname $(uname -n); xenstore-chmod /tool/hostname r
在虚拟机上使用Dom0
,然后xenstore-read /tool/hostname
在虚拟机内使用。简单又轻便...
答案2
我非常确定没有办法从 domU 中找到 dom0“名称”(充其量只是一个模糊的概念)。如果您没有运行 pygrub,您可以在内核启动命令行(存储在每个 dom0 上的 domU 配置文件中)中添加一些内容,您可以从 /proc/cmdline 进行查询,但这有点儿像黑客行为。
您真正应该做的是编写一个脚本,该脚本可以查询 dom0 以显示哪些 VM 位于何处。即使是循环遍历 dom0 并运行的脚本xm list
也可能满足您的简单目的。
答案3
SLES11 有一个由两个 rpm 提供的“聪明”解决方案:
第一个在 Dom0 上运行并创建一个小型 RAM 磁盘(/dev/shm 中的循环设备)。该 RAM 磁盘以 ro/read 多模式连接到 DomU。然后,Dom0 中的守护进程以可配置的间隔更新 RAM 磁盘中的某些信息(Dom0 主机名、Dom0 的 CPU 负载等)。
第二个在 DomU 中运行并读取所连接的 RAM 磁盘的值。
更新 2017-01-31:第 10.7 节
答案4
在 Xen Dom0 和 DomU 上安装 lldpd。然后 lldpctl 将告诉您哪个网络桥以及桥的主机名(即 Dom0 的名称)。在 Dom0 上,您还将看到上游交换机(如果它们启用了 LLDP),这也很有用。
这适用于 PV、PVHVM 等。事实上,它应该适用于任何可以在主机上运行 LLDP 的虚拟化平台,除非主机直接转发 LLDP 数据包(它不应该这样做)。