如何从托pipe的domU中finddom0的名字

我实际上是在两台服务器之间用XentestingRHEL 5.3,以便拥有一个灾难恢复解决scheme。 所以我正在把我的domU从一台dom0服务器移到另一台服务器上。

不幸的是,当其他人移动domU时,我不知道我的域名托pipe在哪里。 我想知道在哪里我不能find我的dom0名称与内部domU。 我正在寻找像solaris稀疏区域上的gzonename命令。 我在/ proc / xen里面查了一下,但是除了dom0内核版本,我没有看到任何特别的东西。

有人知道要等待吗?

我们使用xenstore-write /tool/hostname $(uname -n); xenstore-chmod /tool/hostname rDom0上使用xenstore-write /tool/hostname $(uname -n); xenstore-chmod /tool/hostname r ,然后在VM中使用xenstore-read /tool/hostname 。 容易和轻量级…

我敢肯定,无法从domU中finddom0“name”(这是一个模糊的概念)。 如果你没有运行pygrub,你可以添加一些东西到你可以从/ proc / cmdline查询的内核启动命令行(在每个dom0中存储的domUconfiguration文件中),但是这有点破解。

你真正应该做的是有一个脚本,可以查询dom0s显示哪些虚拟机在哪里。 即使是通过dom0s循环并运行xm list也可能是为了您的简单目的。

SLES11有两个RPM提供的“聪明”的解决scheme:

第一个在Dom0上运行,并创build一个小的内存盘(/ dev / shm中的循环设备)。 该ram-disk以ro /读取多模式连接到DomU。 然后Dom0中的一个守护进程以可configuration的间隔(Dom0-hostname,Dom0的cpu-load,…)更新ram-disk中的一些信息。

第二个在DomU中运行并读取附加的ram-disk的值。

有关更多详细信息,请参见SLES11 XEN文档

更新2017-01-31:第10.7节

我发现了一个聪明的解决scheme(我不能赞赏): 向Xen脚本添加一个参数,告诉domU它运行在哪个dom0上

我知道这已经发布了几年,但我看到这是一个沉重的访问页面,仍然没有办法find这个追溯,所以这里是我用的方法:

从VM中,使用tcpdump查找交换机名称和端口号:

 [myID@vm001 ~] sudo tcpdump –nn –v –i eth0 –s 1500 –c 1 'ether[20:2] == 0x2000' 

给它几分钟。 跑步; 完成后,在输出中查找这两行(它们将被其他输出行分隔):

 Device-ID (0x01), length: 26 bytes: 'Switch001.mydomain.com' Port-ID (0x03), length: 19 bytes: 'GigabitEthernet8/17' 

然后您将需要查看交换机端口以确定连接的是哪个物理服务器。 希望你能够物理访问交换机,并且可以执行一个电缆跟踪,或者可以使用某个可以交换端口configuration的人,或者对交换机端口configuration有很好的描述,并且可以查看这些信息,或者find可以交换信息的人。 我已经读取了我们的交换机,并能够find我的主机服务器:

 SWITCH001#sho interface description | inc 8/17 Gi8/17 up up HOST0002 

在Xen Dom0和DomU上安装lldpd。 然后lldpctl会告诉你哪个网桥和网桥的主机名(即Dom0的名称)。 在Dom0上,如果启用了LLDP,您也将看到上游交换机,这也是有用的。

这适用于PV,PVHVM等。实际上,它应该适用于任何可以在主机上运行LLDP的虚拟化平台,除非主机直接转发LLDP数据包(不应该)。