Answers:
快速说明一下,实际上有3种模式,而在使用的驱动程序上则没有2种:
对于Xen guest / DomU,您可以做一个非常基本的操作uname
并lsmod
使用grep列出正在使用的模块:
uname -a
lsmod | grep xen
如果uname -a
列出的内核中包含字符串“ xen”,则说明您有一个已修改的内核,很可能是PV guest虚拟机,您将看到lsmod
命令的输出进行确认。如果您从grep上获得了输出lsmod
但没有经过修改的内核的迹象,那么您就是PV-HVM。没有任何迹象,这是一个直接的HVM。
注意:通常,对于安装了PV工具的VM可以做更多的事情,因此可以很明显地看出来,但是您可以伪造 PV工具的存在以允许挂起/恢复等操作,因此您通常不能依赖它。
有一个更好的替代方法可以分析uname -a
来宾域内部的输出。您应该在管理程序本身中检查VM配置文件。
使用用于独立Xen安装的当前 XenLight工具栈,可以通过运行以下xl list --long
命令来实现:
# xl list
Name ID Mem VCPUs State Time(s)
My-Virtual-Machine 42 1024 1 -b---- 9001.0
# xl list -l 42
or
# xl list --long My-Virtual-Machine
[
{
"domid": 6,
"config": {
"c_info": {
"name": "My-Virtual-Machine",
"uuid": "12345678-abcd-1234-abcd-12345678abcd",
"type": "pv",
...
},
...
}
}
]
请注意本节中的type
项目 c_info
-如果等于 "pv"
,则表示半虚拟。
对于使用传统管理工具堆栈的较旧的独立Xen安装xm
,情况是类似的:
# xm list --long My-Virtual-Machine
(domain
(domid 42)
(name My-Virtual-Machine)
(image
(linux
(kernel ...)
...
)
)
...
)
注意本节中的(linux)
元素 (image)
—它对应于 builder
配置指令,其中“ linux”表示“准虚拟”(而不是实际内核),而“ hvm”表示“完全虚拟化”。
使用XenServer或XCP 设备,您可以使用xe vm-list params=all
命令或类似命令。
可能有(或曾经有)某种方法可以从libvirt工具堆栈中获取此信息 ,但是我不知道。
请注意,从Xen 4.5开始,x86-64上的半虚拟模式具有两种风格:
要检查主机是否在启用PVH的情况下运行,可以使用主机xl info
(尽管此方法并不比检查grub.cfg好):
# xl info | grep xen_commandline
xen_commandline : pvh=1 loglvl=all guest_loglvl=all console=com1,vga
^^^^^
要pvh=1
再次检查特定来宾是否正在PVH模式下运行(在配置文件中),请咨询xl list -l
:
"c_info":{
"name": "My-Virtual-Machine",
"type": "pv",
"pvh": "True",
...
},
但是,从管理角度来看,PVH与PV不应有任何区别。
xm
命令,但是xl
输出不同。任何想法如何获取有关4.4.1 XEN的信息。谢谢。
xl
,但在内核名称或内核模块中没有提及xen。