www.hj8828.com 1

[收藏学习]Linux内核虚拟机 学习KVM架构及其优点

本文教大家如何让KVM在Ubuntu服务器上顺畅运行、安装多个访客操作系统、管理存储,以及将访客操作系统迁移到新主机上。

1.先介绍一下红帽的企业级虚拟化产品RHEV

本文转自IBM,参考:

作为Linux内核虚拟机管理程序,KVM称得上是企业级虚拟化领域的后起之秀。它有诸多优点:非常精简,因而占用资源少,运行起来速度快,可以轻松自如地运行没有经过改动的访客操作系统。在这堂速成课中,我们会迅速让KVM在Ubuntu服务器上运行起来、安装多个访客操作系统、管理存储,以及将访客操作系统迁移到新主机上。

RHEV是Red Hat
Enterprise Virtualization
的缩写,目前稳定版本是2.0,测试版本是3.0,由于3.0相对于2.0有很大的改动,所以,我这次使用的是RHEV
3.0。

虚拟化
概念很早就已出现。简单来说,虚拟化就是使用某些程序,并使其看起来类似于其他程序的过程。将这个概念应用到计算机系统中可以让不同用户看到不同的单个系统(例如,一台计算机可以同时运行
Linux 和 Microsoft® Windows®)。这通常称为全虚拟化(full
virtualization)。

KVM与Ubuntu服务器

相关阅读:

虚拟化也可以使用更加复杂的格式,其中单个计算机看上去具有多个架构(对于一个用户来说,它是一个标准的
x86 平台;对于另外一个用户来说,它是 IBM Power PC®
平台)。这种虚拟化形式通常被称为 硬件仿真

KVM的全称是“基于内核的虚拟机”,最先由Qumranet公司开发而成。2008年,红帽公司收购了Qumranet,将KVM作为服务器版红帽企业级虚拟化RHEV)的核心部分。KVM采用了GPL许可证模式,是主线内核mainline
kernel)的一部分,因而任何Linux发行版都能支持它。KVM是一种类型2虚拟机管理程序,这意味着它在操作系统里面运行。一些流行的类型2虚拟机管理程序包括Xen和VirtualBox。类型1虚拟机管理程序如IBM的z/VM和VMWare
ESXi)则可以直接在裸机上运行,不需要什么操作系统。KVM几乎支持任何访客操作系统:Linux、Mac
OS X、Unix、Windows以及你所采用的其他任何操作系统。

尝鲜RHEV 3.0——RHEV-M安装篇
http://www.linuxidc.com/Linux/2011-12/50590.htm

最后,更加简单的一种虚拟化是操作系统虚拟化,其中一台计算机可以运行相同类型的多个操作系统。这种虚拟化可以将一个操作系统的多个服务器隔离开来(这意味着全都必须使用相同类型和版本的操作系统)。

与KVM一样,Ubuntu服务器也发展成为一款面向企业的重量级服务器。Ubuntu支持x86和x86
64位平台上的KVM。与红帽和Novell这两大企业级Linux开发商不一样,你没必要进行注册或者理睬销售噱头,就可以下载和测试Ubuntu。如果你想要获得培训、商业支持或者在线服务比如Landscape系统管理器或Ubuntu云服务),你想要的时候,就能随时获取。

尝鲜RHEV 3.0——RHEV-H安装篇
http://www.linuxidc.com/Linux/2011-12/50591.htm

虚拟化和准虚拟化(para-virtualization)

系统要求

尝鲜RHEV 3.0——浏览器登录管理中心
http://www.linuxidc.com/Linux/2011-12/50592.htm

虚拟化最常使用的两种方法是全虚拟化
准虚拟化。使用全虚拟化,在虚拟化的操作系统和硬件之间存在一个层,用于决定访问。这个层称为www.hj8828.com,系统管理程序
或虚拟机监视器(VMM)。准虚拟化与之类似,但是系统管理程序会以一种更具协作性的方式进行操作。这是因为每个客户操作系统都了解自己正在虚拟化模式中运行,因此每个系统都与系统管理程序协作,来实现底层硬件的虚拟化。

就这堂速成课而言,你需要配备英特尔VT或AMD-V处理器的Ubuntu计算机,因为这些处理器包含特殊的扩展功能,可以原生支持虚拟机。想了解更多信息,请参阅KVM的处理器支持页面:
Natty Narwhal
64位版本。我建议使用Ubuntu服务器作为你生产环境的KVM服务器;但是进行测试的话,任何Ubuntu都可以。使用该命令,看看你的x86处理器有没有虚拟化扩展功能:

2.RHEV 3.0和2.0的不同:

全虚拟化的例子包括商业虚拟化解决方案 VMware,以及商业 IBM zSeries®
计算机上使用的 IBM System z9 Virtual
Machine(z/VM)操作系统。准虚拟化的例子有 Xen 和 User-Mode-Linux (UML)。
KVM 也被认为是一个全虚拟化解决方案,不过我们稍后再介绍这个问题。

$ egrep -o ‘(vmx|svm)’ /proc/cpuinfo
vmx
vmx

RHEV 2.0
的时候,RHEV-M是用C语言写的,更致命的是,它运行在windows上,使用了IIS,数据库也是用的SQL
Server

虚拟化的工作原理

这个示例显示了能够支持虚拟化的双核英特尔处理器。你可能不得不在你系统的BIOS中启用虚拟化扩展功能。确保这项功能已启用,否则KVM无法正常运行。

RHEV
3.0,用java语言重写了RHEV-M,RHEV-M可以完全RHEL上面运行了,数据库也改成了postgrepSQL,IIS也换成了JBoss。

我们首先简要介绍一下虚拟化技术及其涉及的元素。虚拟化解决方案的底部是要进行虚拟化的机器。这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化;那么就需要系统管理程序
层的支持。系统管理程序,或称为
VMM,可以看作是平台硬件和操作系统的抽象化。在某些情况中,这个系统管理程序就是一个操作系统;此时,它就称为主机操作系统,如

1
所示。

你可以在64位系统上运行32位或64位访客操作系统,但是在32位系统上却只能运行32位访客操作系统。使用大量内存是好事,使用多核处理器也是如此。Ubuntu服务器占用系统资源很少,因而给你的虚拟机访客操作系统留出了更多资源。Ubuntu服务器系统的最低要求是300
MHz处理器、128 MB内存和1
GB硬盘空间。这个要求非常低。为了测试KVM,我建议至少为你的访客操作系统配备2
GHz处理器、2
GB内存以及足够的磁盘空间,另外还要有数据存储系统。为生产服务器配置资源很难做到非常准确。如果你仅仅把所有访客操作系统的系统要求叠加起来,很可能面临一台配置过度的机器,除非你的访客操作系统始终在全速运行。虚拟机的其中一个优点是,可以更高效地使用硬件,因为当一个访客操作系统闲置时,另一个访客操作系统忙碌运行。如果你配置资源过少,服务器变得不堪重负时,那么可以将访客操作系统转移到不同主机上。所以,你有很大的活动余地,不需要一开始就在资源配置方面做到完美。

3.RHEV的历史

图 1. 虚拟化的分层抽象
www.hj8828.com 1

作为Linux内核虚…

最早是Qumranet公司开发出了KVM技术

系统管理程序之上是客户机操作系统,也称为虚拟机(VM)。这些 VM
都是一些相互隔离的操作系统,将底层硬件平台视为自己所有。但是实际上,是系统管理程序为它们制造了这种假象。