目前服务器领域最热门的新技术之一就是虚拟化,虚拟化技术能允许用户在一台服务器上安装一个或者多个操作系统的多重实例。这项技术对于那些工作负载不大的服务器来说尤其适用,因为它取代了为所需的操作系统上的每个实例配置一台单独的物理服务器的传统方式。然而我们现在面临许多不同的虚拟化选择,在相互竞争争夺这块市场。本文意在阐明对虚拟化各种可能性的看法,你也可以从中了解如何安装Ubuntu服务器来实现虚拟化。
了解虚拟化
你将会了解到有关虚拟化的不同解决方案,我们会对两种主要的虚拟化途径进行深度解析:即全虚拟化和半虚拟化。
目前市场上有很多虚拟化解决方案,其中有三种解决方案尤其重要:即VMware,Xen,KVM (Kernel平台上的虚拟机)
对于其他的解决方案,你经常无法在数据中心寻觅到它们的踪迹。因为其他的虚拟化解决方案都存在很多的局限性,诸如缺乏必要的技术支持,在虚拟机上安装的操作系统的选择限制,使用过程中严重的性能不足等。出于以上原因的考虑,我们对这些解决方案忽略不计。
在这三个重要的虚拟化技术中,VMware公司是目前市场上的领军人物,原因可能是源于它为多个不同操作系统的虚拟化提供了一套商用解决方案。在数据中心中应用的最重要的VMware版本是VMware ESX虚拟化管理程序,它提供了一套结合了Virtual Machine Manager的Linux kernel。如果你想将VMware ESX作为虚拟化平台使用,你就必须在VMware虚拟化环境中通过将Ubuntu服务器作为虚拟化客户端操作系统的方式来实现。目前还没有办法能将VMwareESX与Ubuntu服务器结合起来共同作为虚拟化主机平台使用。
提示:在Xen社区,在我们讨论操作系统时通常避免使用"主机""客户机"这样的词汇。我会在稍后"使用Xen安装虚拟机"的章节中解释其中原因。不过为了更加清楚的对虚拟化进行解析,我在随后的定义中还会继续使用这样的词汇来描述。主机就是提供虚拟化服务的物理服务器,主机可能会也可能不会运行特定的操作系统来提供这些服务。客户机是指没有任何与虚拟化有关职责的虚拟机。
在虚拟化领域位居第二把交椅的是KVM,它们在Linuxkernel上技工虚拟化支持。如果你要使用KVM,你需要运行Linux操作系统的kvm.ko kernel模块,一个提供嵌入式虚拟化支持的中央处理器,当然还有支持KVM虚拟化的kernel(2.6.20 kernel是第一款支持虚拟化的Linux kernel)。要想创建KVM虚拟机,你需要使用/dev/kvm界面和QEMU程序的修订版。QEMU最初是作为开源虚拟化产品研发的,但它并不十分成功。不过它的自带工具却非常有用,QEMU工具和解决方案在KVM和Xen虚拟化环境中广泛使用。目前KVM的虚拟化主机能支持多数操作系统,能在同样的处理器体系架构上运行。
Linux虚拟化市场上第三个主角是Xen,它在剑桥大学作为一项研究计划开始发展起来。Xen的核心组件是它的管理程序,管理程序层使创建虚拟机成为可能。当使用虚拟机主机时,管理程序取代常规的Linux kernel(它在Xen管理程序之后进行装载)。Xen是目前供Linux操作系统使用的最佳虚拟化平台之一,这主要是因为它有强大的开发者社区作为支持,这个社区包括硬件厂商(诸如英特尔公司,惠普公司和AMD公司)和软件厂商(诸如NOVELL和红帽公司)。自Ubuntu服务器7.10发布之后,Ubuntu服务器成为Xen主机虚拟化平台一个强有力的选择。
虚拟化的途径
Xen和KVM这两种虚拟化解决方案都能提供两种途径的虚拟化方式:全面虚拟化和部分虚拟化。在创建虚拟化解决方案之前,你需要先了解一下这两种虚拟化途径的不同之处。
半虚拟化
半虚拟机需要一个客户端操作系统的修订版,这个修订版产生的指令能相对容易的被管理程序处理,这个管理程序是能够破译虚拟化指令并将它们传递给物理硬件的组件。因为操作系统能在部分虚拟化中产生修订指令,因此对于虚拟化而言它也是最有效的途径。这些修订指令意味着虚拟机管理员不再需要按照虚拟化环境中的格式更改虚拟机的常规指令。部分虚拟化也不需要任何特定的硬件,不过它最大的劣势在于它需要客户端操作系统的一个特定的修订版。出于竞争的需要,一些操作系统(诸如Windows操作系统)都不提供这样的版本。
全虚拟化
相对部分虚拟化而言的另外一个选择就是全虚拟化,它能允许用户使用常规的,无需修订的操作系统来作为客户端。但它需要特定的硬件支持,目前AMD公司和英特尔公司的中央处理器都能提供这种支持。因为这是一种服务器中央处理器中的嵌入式支持,全面虚拟机就能够最大可能的提升工作效率。不过来自虚拟化操作系统的指令需要虚拟机管理人员自行破译,因为客户端操作系统对虚拟机
没有概念,只能产生常规指令。因此这可能会导致客户端操作系统和硬件之间的虚拟化层产生问题。向中央处理器传递指令对虚拟化来说比较困难,特别是对于i386体系架构。因此要确保中央处理器的硬件虚拟化支持的性能代价不会太大。
哪种虚拟化途径是最佳选择?
看到这里,你可能会考虑这两种虚拟化途径那种是你的最佳选择。事实上,你不可能总是选择到理想的解决方案。如果你的操作系统无法提供部分虚拟化支持,全面虚拟化就成为唯一可供选择的方式。不过,如果你的中央处理器和操作系统都能提供虚拟化支持,那么最好选择部分虚拟化的方式,因为虚拟化操作系统产生的指令对于虚拟化环境来说是最优的。采用这种方式,由于虚拟化而导致的性能损失也能降低到最小化。
如果你因为你的操作系统无法提供支持而不能采用部分虚拟化的方式,你可以检查一下是否部分虚拟化驱动程序是可用的。这种驱动程序在很多情况下都能提供,它们能帮助提高特殊设备的性能,诸如你的网络接口卡。不过通常情况下,你会发现全面虚拟化是你唯一的解决方案,因为你想虚拟化的操作系统没有给你选择的机会。如果是KVM虚拟化方案,对于完整的操作系统的部分虚拟化也无法提供支持。因此接下来的章节我们假设有可以提供虚拟化支持的中央处理器。
提示:多数Pentium IV和至强处理器都能提供虚拟化支持。如果你对自己的中央处理器不能确认,只需检查一下系统上的BIOS(基本输入输出系统)设置。如果可以支持虚拟化,BIOS将包含一个虚拟化选项。作为一个选择,你也可以检查中央处理中/proc/cpuinfo文件的VMX标记,如果有这个标记,那就说明你的中央处理器能够支持虚拟化。
使用KVM安装虚拟机
如果你的中央处理器能支持虚拟化,KVM虚拟化解决方案是最为简便的使用方式(虽然它还只是刚刚发展起来)。在本节中,你会了解到如何将KVM虚拟主机来进行部署,如何在KVM虚拟化环境中将Windows和Ubuntu作为虚拟化操作系统进行安装。
警告:在使用虚拟化时,有个非常好的方法将主机操作系统与其他操作系统相区别。主机操作系统你的服务器引导的第一个操作系统。它也对其他的操作系统负有特别的职责,诸如对驱动器入口和虚拟机本身进行管理等。为了确保它能以最有效的方式执行任务,请不要在主机操作系统上运行任何服务性工作。
在Ubuntu服务器上安装KVM
按照以下的步骤执行来安装虚拟服务器(这里描述的安装步骤以UbuntuServer 7.04为基础)
1.安装所有KVM虚拟化所需的软件(KVM和QEMU套装)。作为根文件,使用"apt-getinstall kvm qemu." 命令。
2.安装玩这些软件套装后,确保所需的驱动程序已经装载完毕。作为根文件,如果你使用的是英特尔公司出品的CPU,使用modprobe kvm-intel,如果是AMD公司的CPU,则使用modprobe kvm-amd
3.进入kernel kvm.ko模块界面,在/dev目录下创建/dev/kvm文件。你要确认你的用户有权限访问这个文件,然后使用chmod 777/dev/kvm。
现在大功告成!你的Ubuntu服务器目前已经为客户端操作系统虚拟化已经准备就绪。以后的章节我们会继续讲解如果将Windows作为客户端操作系统进行安装。