华为的云计算采用的是xen的虚拟化,有时候我们要大致判断下主机是否为虚拟机。
windows主机,直接资源管理器查看硬件设备。
而linux主机可以用python脚本来监测
判断 OpenVZ/Xen PV/UML
判断 OpenVZ/Xen PV/UML 是最容易的,直接检查 /proc 下的相关目录和文件就可以知道,比如 OpenVZ VPS 上会有 /proc/vz 这个文件;Xen PV 虚拟机上会有 /proc/xen/ 这个目录,并且目录下有一些东西;UML 上打印 /proc/cpuinfo 会找到 UML 标志。写了一个简单的 Python 脚本来检测:
#!/usr/bin/python # check if a linux system running on a virtual machine (openvz/xen pv/uml) import sys, os def main(): if os.getuid() != 0: print "must be run as root" sys.exit(0) # check OpenVZ/Virtuozzo if os.path.exists("/proc/vz"): if not os.path.exists("/proc/bc"): print "openvz container" else: print "openvz node" # check Xen if os.path.exists("/proc/xen/capabilities"): if (os.path.getsize("/proc/xen/capabilities") > 0): print "xen dom0" else: print "xen domU" # check User Mode Linux (UML) f = open("/proc/cpuinfo", "r"); t = f.read(); f.close() if (t.find("UML") > 0): print "uml" if __name__=="__main__": main()