京山游侠

专注技术 拒绝扯淡
posts - 63, comments - 403, trackbacks - 2, articles - 0
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

虚拟机体验之 KVM 篇

Posted on 2015-02-24 18:50 京山游侠 阅读(...) 评论(...) 编辑 收藏

在上一篇中,我展示了虚拟机软件 QEMU 的使用、效果及其性能,同时也分析了不同用户对虚拟机的不同追求。但是不管是桌面用户还是企业级用户,对虚拟机软件的追求有一点是共同的,那就是性能。QEMU 是一个强大的虚拟机软件,它可以完全以软件的形式模拟出一台完整的电脑所需的所有硬件,甚至是模拟出不同架构的硬件,在这些虚拟的硬件之上,可以安装完整的操作系统。QEMU 的运行模式如下图:

很显然,这种完全以软件模拟硬件的形式虽然功能强大,但是性能难以满足用户的需要。模拟出的硬件的性能和物理硬件的性能相比,必然会大打折扣。为了提高虚拟机软件的性能,开发者们各显神通。其中,最常用的办法就是在主操作系统中通过内核模块开一个洞,通过这个洞将虚拟机中的操作直接映射到物理硬件上,从而提高虚拟机中运行的操作系统的性能。如下图:

其中 KVM 就是这种加速模式的典型代表。在社区中,大家常把 KVM 和 Xen 相提并论,但是它们其实完全不一样。从上图可以看出,使用内核模块加速这种模式,主操作系统仍然占主导地位,内核模块只是在主操作系统中开一个洞,用来连接虚拟机和物理硬件,给虚拟机加速,但是虚拟机中的客户操作系统仍然受到很大的限制。这种模式比较适合桌面用户使用,主操作系统仍然是他们的主战场,不管是办公还是打游戏,都通过主操作系统完成,客户操作系统只是按需使用。至于 Xen,则完全使用不同的理念,比较适合企业级用户使用,桌面用户就不要轻易去碰了,具体内容下一篇我再讲。

其实 VirtualBox 也是采取的这种内核模块加速的模式。我之所以这么说,是因为在安装 VirtualBox 时,它会要求安装 DKMS。如下图:

熟悉 Linux 的人知道,DKMS 就是为了方便用户管理内核模块而存在的,不熟悉 DKMS 的人 Google 一下也可以了解个大概。关于 VirtualBox 的具体使用方面的内容,我下一篇再讲。这一篇主要讲 KVM。

KVM 和 QEMU 是相辅相成的,QEMU 可以使用 KVM 内核模块加速,而 KVM 需要使用 QEMU 运行虚拟机。从上图可以看到,如果要使用 Ubuntu 的包管理软件安装 KVM,其实安装的就是 qemu-kvm。而 qemu-kvm 并不是一个什么很复杂的软件包,它只包含很少量几个文件,如下图:

用 man 命令查看一下它的文档,发现 qemu-kvm 包不仅包含的文件很少,而且它的可执行文件 kvm 也只是对 qemu-system-x86_64 命令的一个简单包装,如下图:

那么问题来了,kvm 内核模块究竟是由哪个包提供的呢?其实,自从 Linux 2.6 开始,kvm 就已经被加入内核了。如果非要找出 kvm 内核模块 kvm.ko 是由哪个包提供的,可以用如下命令考察一下:

写到这里,已经可以看出 KVM 的使用是很简单的了。下面,我使用 KVM 运行一下上一篇中安装的 WinXP 操作系统,体验一下 QEMU 经过 KVM 加速后的运行效率。使用如下命令运行使用 KVM 加速的 QEMU:

可以看出,使用 KVM 加速后,虚拟机中的 WinXP 运行速度提升了不少,开机只用了 34 秒。我将分辨率调整为 1366*768,图形界面运行也很流畅,不管是打开 IE 浏览器还是 Office 办公软件都没有问题,再也没有出现 CPU 使用率飙升到 100% 的情况。如果用 ps -ef | grep qemu 命令查看一下,发现 kvm 命令运行的还是 qemu-system-x86_64 程序,只不过加上了 -enable-kvm 参数,如下图:

另外,对于桌面用户来说,有一个好用的图形化界面也是很重要的。虽然 QEMU 和 KVM 自身不带图形界面的虚拟机管理器,但是我们可以使用第 3 方软件,比如 virt-manager。只需要使用 sudo apt-get install virt-manager 即可安装该软件。该软件依赖于 libvirt,在安装过程中也会自动安装。运行 virt-manager 的效果如下图,注意必须使用 sudo 运行,因为该软件需要超级用户权限:

该软件可自动识别系统中的虚拟机环境是 QEMU+KVM 还是 Xen。新建一个虚拟机,由于之前安装过一个 WinXP 系统,所以选择导入现有硬盘镜像。点下一步后,出现如下界面:

这一步没什么好说的,再点下一步,如下图:

这里可以设置网络选项。如果勾选“在安装前自定义配置”的话,还可以对硬件进行进一步的自定义,如下图:

在上图中,我们可以看到虚拟机支持的所有虚拟显卡的类型,在这里,我当然选择的是 VMVGA,因为我以前经常用 VMWare,知道这些操作系统在 VMWare 的虚拟显卡设置下运行得都没有问题。当然,其它的选项都可以试一下,不过在虚拟的操作系统中需要安装相应的驱动程序。

最后,虚拟机运行的效果图如下:

可以看到,该程序提供的界面有非常丰富的功能菜单,功能是非常强大的,甚至可以向虚拟机中的操作系统发送组合按键。

可以这么说,如果没有 VirtualBox 的话,QEMU+KVM 的组合应该是桌面用户的首选。下一篇我将尝试 VirtualBox,VirtualBox 号称是最强大的开源虚拟机系统,敬请期待。

 

(京山游侠于2015-02-24发布于博客园,转载请注明出处。)