下面来测试一下Xen虚拟机的运行效果。通过前文的探讨,可以看出一个虚拟机的运行需要两个要素:一是一套虚拟的硬件系统,二是一个包含了操作系统的磁盘镜像。QEMU虚拟机关于硬件的配置全由命令行指定,VirtualBox虚拟机的硬件配置存在于配置文件中,而Xen呢,它也存在于配置文件中,这个配置文件要我们自己写。至于磁盘镜像,还是复用我之前创建的那个WinXP.img吧,记住,它是qcow2格式的。
先进入我主目录的virtual-os目录,ls 看一下,里面有我之前创建的WinXP.img。然后,我们创建一个WinXP_Xen.hvm配置文件,其内容如下:
builder = "hvm"
name = "WinXP_Xen.hvm"
memory = 2048
vcpus = 2
disk = [ '/home/youxia/virtual-os/WinXP.img, qcow2, hda, rw' ]
sdl = 1
这段配置文件很简单,也很容易懂。 hvm 代表这是一个全虚拟化的虚拟机,和全虚拟化相对的是半虚拟化,半虚拟化只能运行经过修改的内核,但是可以获得更高的性能。为该虚拟机分配2个CPU和2G内存,并指定硬盘镜像文件。最后一个 sdl=1 表示使用SDL图形库显示虚拟操作系统的界面,如果不想用SDL,也可以写成 vnc=1,这样需要使用 vncviewer 才能连接到虚拟机操作系统的桌面。
至于Xen的配置文件怎么写,管理命令怎么用,这个必须得有学习资料。通过 man xl 和 man xl.cfg 查看手册页是可以的,但是最全面的资料还是在Xen的官网 上。
使用 sudo xl list 命令可以看到系统中只有一个Domain 0在运行,然后使用 sudo xl create -c WinXP_Xen.hvm 即可运行一个Domian U虚拟机,该虚拟机使用WinXP_Xen.hvm配置文件。 xl 命令的 -c 选项表示把Domain U的控制台显示在Domain 0中,如果不用 -c 选项而使用 -V 选项,则创建虚拟机后使用 vncviewer 进行连接。新建的虚拟机运行起来后,再次使用 sudo xl list 命令,可以看到除了Domain 0,还多了一个名称为“WinXP_Xen.hvm”的虚拟机。运行效果如下图:
关于Xen更多更高级的功能,比如动态迁移什么的,我这里就不试了。至于说到Xen虚拟机的隔离性,如果一个Domain U崩溃了,肯定是不会影响到Domain 0和其它Domain U的,但是如果Domain 0崩溃了,Domain U真的不会受到任何影响吗?Domain 0崩溃了怎么重启它呢?这都是我没想明白的问题。在折腾Xen的过程中,我曾多次重启过机器,重启后一看,WinXP_Xen.hvm还在继续运行,似乎是没有受到Domain 0的影响,但是我就想,我机器都重启了,电源都断了,Domain U它真的能丝毫不受影响吗?
总结:
1.Xen虚拟机不应该是桌面用户的首选,因为它架构比较奇异不容易理解,可能因内核升级而出现不稳定,不能充分发挥桌面硬件的性能,比如显卡;桌面用户还是应该首选VirtualBox。
2.企业及客户可以考虑Xen,因为它可以提供较好的性能和隔离性,企业级用户不需要桌面用户那么多的功能,所以可以把Domain 0做到很薄,可以完全不要图形界面,也不用经常升级内核,甚至可以选择一个经过修改优化的内核,这样就可以在一套硬件上运行尽可能多的虚拟机。
关于Linux下虚拟机相关的内容,就写到这里吧。欢迎大家批评指正。