Linux折腾记(二十二):虚拟机体验之Xen篇——令
这一篇我要体验的虚拟机系统是Xen。在虚拟机领域,Xen具有非常高的知名度,其名字经常在各类文章中出现。Xen也具有非常高的难度,别说玩转,就算仅仅只是理解它,都不是那么容易。之所以如此,那是因为Xen采用了和我前面介绍的那几个虚拟机完全不同的架构。在这里,我称之为令人脑洞大开的奇异架构。
比如说在经典的虚拟机架构中,虚拟机软件运行于Host System之中,而Guest System运行于虚拟机软件之中。为了提高Guest System的运行速度,虚拟机软件一般会在Host System中使用内核模块开一个洞,将Guest System的运行指令直接映射到物理硬件上。在Xen中,则根本没有Host System的概念,传说它所有的虚拟机都直接运行于硬件之上,虚拟机运行的效率非常的高,虚拟机之间的隔离性非常的好。
,传说只是传说。我刚开始也是很纳闷,怎么可能让所有的虚拟机都直接运行于硬件之上。后来我终于知道,这只是一个噱头。虚拟机和硬件之间,还是有一个管理层的,那就是Xen Hypervisor。Xen Hypervisor的功能毕竟是有限的,怎么样它也比不上一个操作系统,,在Xen Hypervisor上运行的虚拟机中,有一个虚拟机是具有特权的,它称之为Doma 0,而其它的虚拟机都称之为Doma U。
Xen的架构如下图
从图中可以看出,Xen虚拟机架构中没有Host System,在硬件层之上是薄薄的一层Xen Hypervisor,在这之上就是各个虚拟机了,没有Host System,只有Doma 0,而Guest System都是Doma U,不管是Doma 0还是Doma U,都是虚拟机,都是被虚拟机软件管理的对象。
既然Doma 0也是一个虚拟机,也是被管理的对象,所以可以给它分配很少的资源,然后将其余的资源公平地分配到其它的Doma。很奇怪的是,所有的虚拟机管理软件其实都是运行在这个Doma 0中的。,如果要连接到其它Guest System的控制台,而又不是使用远程桌面(VNC)的话,这些控制台也是显示在Domian 0中的。所以说,这是一个奇异的架构,是一个让人很不容易理解的架构。
这种架构桌面用户不喜欢,因为Host System变成了Doma 0,本来应该掌控所有资源的主操作系统变成了一个受管理的虚拟机,本来用来打游戏、编程、聊天的主战场受到限制了,可能不能完全发挥硬件的性能了,还有可能运行不稳定了,自然会心里不爽。(Doma 0确实不能安装专用显卡驱动,确实会运行不稳定,这个后面会讲。)企业级用户喜欢,因为所有的Doma都是虚拟机,所以可以更加公平地分配资源,而且由于Doma U不再是运行于Domian 0里面的软件,而是和Doma 0平级的系统,这样即使Doma 0崩溃了,也不会影响到正在运行的Doma U。(真的不会有丝毫影响吗?我表示怀疑。)
下面开始在Ubuntu系统中体验Xen。使用如下命令可以在Ubuntu的软件源中搜索和Xen相关的软件包以及安装Xen Hypervisor
复制代码
sudo aptitude search xensudo aptitude stall xen-hypervisor-4.4-amd64
传说在旧版本的Xen Hypervisor上只能运行经过修改过的Lux内核。在目前的版本中不存在该问题。我机器上的Ubuntu 14.10系统不经任何修改,就可以当成Doma 0中的系统运行。至于是否让该系统运行于Xen Hypervisor上,在启动时可以选择,如下图
通过查看Grub的配置文件,可以看到通过Xen虚拟机启动Ubuntu系统时,Grub先启动的是/boot/xen-4.4-amd64.gz,然后才把Lux内核以及itrd文件作为模块载入内存。也就是说,Grub启动Xen Hypervisor,然后Xen Hypervisor运行Domian 0。
前面提到Host System一下子变成了Doma 0中的操作系统是让桌面用户比较不爽的事,这里详细论述。虽然说目前的Xen支持全虚拟化和半虚拟化,支持操作系统不经任何修改就运行于Xen虚拟机上(全虚拟),系统是否稳定还是和内核有很大关系的。比如说我在Ubuntu 14.04刚推出的那段时间,在Ubuntu 14.04中使用Xen是没有什么问题的,经过几次系统升级后,Xen就出问题了,没办法成功进入Doma 0中的Ubuntu 14.04。现在我用的是Ubuntu 14.10,已经升过好几次级了,目前使用Xen还是很稳定的。就是显卡驱动的问题,我的Ubuntu当主系统用时,使用的是NVIDIA的显卡驱动,当Ubuntu运行于Doma 0中时,就不能使用NVIDIA的显卡驱动了,否则无法进入图形界面。
下面来测试一下Xen虚拟机的运行效果。通过前文的探讨,可以看出一个虚拟机的运行需要两个要素一是一套虚拟的硬件系统,二是一个包含了操作系统的磁盘镜像。QEMU虚拟机关于硬件的配置全由命令行指定,VirtualBox虚拟机的硬件配置存在于配置文件中,而Xen呢,它也存在于配置文件中,这个配置文件要我们自己写。至于磁盘镜像,还是复用我之前创建的那个WXP.img吧,记住,它是qcow2格式的。
先进入我主目录的virtual-os目录,ls 看一下,里面有我之前创建的WXP.img。然后,我们创建一个WXP_Xen.hvm配置文件,其内容如下
复制代码