我实际上是在两台服务器之间使用 Xen 测试 RHEL 5.3,以便获得灾难恢复解决方案。所以我正在尝试将我的 domU 从一个 dom0 服务器移动到另一台服务器。
不幸的是,当其他人移动 domU 时,我不知道我的域托管在哪里。我想知道在 domU 中我在哪里找不到我的 dom0 名称。我在 solaris 稀疏区域上寻找类似 gzonename 命令的东西。我在 /proc/xen 内部进行了检查,但除了 dom0 内核版本之外,我没有看到任何特别之处。
有人知道等待找到这个吗?
我实际上是在两台服务器之间使用 Xen 测试 RHEL 5.3,以便获得灾难恢复解决方案。所以我正在尝试将我的 domU 从一个 dom0 服务器移动到另一台服务器。
不幸的是,当其他人移动 domU 时,我不知道我的域托管在哪里。我想知道在 domU 中我在哪里找不到我的 dom0 名称。我在 solaris 稀疏区域上寻找类似 gzonename 命令的东西。我在 /proc/xen 内部进行了检查,但除了 dom0 内核版本之外,我没有看到任何特别之处。
有人知道等待找到这个吗?
我们在虚拟机
xenstore-write /tool/hostname $(uname -n); xenstore-chmod /tool/hostname r
上使用Dom0
,然后xenstore-read /tool/hostname
在虚拟机内使用。简单轻便...我很确定没有办法从 domU 中找到 dom0“名称”(充其量是一个模糊的概念)。如果你没有运行 pygrub,你可以在内核启动命令行中添加一些东西(在每个 dom0 上存储的 domU 配置文件中),你可以从 /proc/cmdline 查询,但这有点小技巧。
你真正应该做的是有一个脚本可以查询 dom0s 以显示哪些虚拟机在哪里。即使是循环通过 dom0s 并运行的东西
xm list
也可能会为您的简单目的做。SLES11 有两个 rpm 提供的“聪明”解决方案:
第一个在 Dom0 上运行并创建一个小型 ram-disk(/dev/shm 中的循环设备)。该 ram-disk 以 ro/read many-mode 连接到 DomU。然后 Dom0 中的守护进程以可配置的时间间隔更新 ram-disk 中的一些信息(Dom0-hostname,Dom0 的 cpu-load,...)。
第二个在 DomU 中运行并读取附加的 ram-disk 的值。
有关详细信息,请参阅 SLES11 XEN 文档...
2017-01-31 更新:第 10.7 节
我找到了一个聪明的解决方案(我不能相信):向 Xen 脚本添加一个参数来告诉 domU 它在哪个 dom0 上运行
我知道这已经发布了几年,但我看到这是一个访问量很大的页面,仍然无法追溯找到它,所以这是我使用的方法:
在 VM 中,使用 tcpdump 查找交换机名称和端口号:
给它几分钟。跑步; 完成后,在输出中查找这两行(它们将被其他输出行分隔):
然后,您需要查看交换机端口以确定连接的物理服务器。希望您可以物理访问交换机并且可以执行电缆跟踪,或者可以聘请能够做到的人,或者您对交换机端口配置有很好的描述,并且可以查看该信息或聘请有能力的人。我拥有对我们交换机的读取权限,并且能够通过这种方式找到我的主机服务器:
在 Xen Dom0 和 DomU 上安装 lldpd。然后lldpctl 会告诉你是哪个网桥和网桥的主机名(即Dom0 的名称)。在 Dom0 上,如果上游交换机启用了 LLDP,您还将看到它们,这也很有用。
这适用于 PV、PVHVM 等。事实上,它应该适用于任何可以在主机上运行 LLDP 的虚拟化平台,除非主机直接转发 LLDP 数据包(它不应该)。