Hyper-V 服务器虚拟化概览

时间:2022-02-20 18:07:31

题记:偶然看到了牛可老师的这篇关于虚拟化的文章,感觉不错,转载过来,和朋友们分享!

作者:牛可

    庸置疑虚拟化是当今最热的IT技术领域之一,这一点无论是从众多IT技术厂商不断推出的虚拟化产品在市场中一浪高过一浪的宣传攻势,还是从企业用户开始大规模地使用虚拟化的解决方案都可以看出这一点。那么到底什么是虚拟化呢?其实这个问题可以从两个方面来理解,首先如果从狭义的角度来说,虚拟化通常就是指对某种虚拟机技术的应用(例如:Hyper-V、VMware ESX等),通过这种技术我们可以将多个操作系统运行于同一台物理计算机之上,从而能够有效地节省在硬件投入方面的开销,整合应用并且降低管理方面的成本。但如果是从广义的角度来理解什么是虚拟化,我们可以认为所谓的虚拟化就是指对计算资源进行有效隔离的技术手段。所以它不仅限于虚拟机产品,所有能够实现这一特性的技术都可以划归在虚拟化的范畴之内。这点可能不是非常好理解,但是可以通过一个简要的例子来说明:一位用户使用一个应用程序来完成自己的工作,其实在这个我们非常熟悉的场景中包括很多个层次,首先用户使用的这个应用程序是安装在特定的操作系统之上,操作系统是安装在特定的硬件平台之上,用户的数据是存放在计算机本地的特定磁盘中,计算机的网络是连接到本地的特定物理交换机上……所有的这些层次都是紧紧关联在一起的,你无法轻易地将其中的一个层次和其他层次分离,例如将这个应用程序复制到另外一台安装了不同操作系统的计算机上它还可以完全和之前一样的运行并访问原来的数据。这种现象就如图1所示的静态计算模型,所有的层次都紧密关联在一起。

 

Hyper-V 服务器虚拟化概览
 
        图1  静态计算模型vs.虚拟计算

    如果我们能够将这些资源层次之间的紧密连接进行有效分离,就像图1的右侧,使得对某个层次的变动甚至是替换都不会影响到其他的层次,那么我们就可以将这种技术看作是一种虚拟化技术。最常见的虚拟化技术——虚拟机就是将操作系统和硬件之间的紧密绑定进行了分离,这使得我们能将一台虚拟机从一台物理机复制到另一台物理机而不用做任何修改就可以像以前一样运行。当然从这个角度来看,远程桌面或者终端服务也是一种虚拟化技术——展现虚拟化,因为它实现了应用程序的展现与应用程序、操作系统以及硬件设备之间的分离,无论在什么地理位置只要能够通过终端服务的客户端,就可以像在那台服务器本地一样访问上面运行的应用程序。所以从广义上来讲,虚拟化并不是仅局限于虚拟机技术,它可以在很多个层面上实现,与此同时众多的虚拟化厂商也在各个层面上都推出了相应的虚拟化技术与产品,例如微软公司的虚拟化战略中就包括了从服务器虚拟化、展示虚拟化、存储虚拟化、应用程序虚拟化等众多的产品与技术。

    虚拟化之所以成为当前企业IT应用的一个热点,其主要原因正是虚拟化能够将资源进行有效隔离,从而可以更充分地利用有限的计算机资源,降低在成本和管理上的投入,同时对于计算资源的隔离也打破了这些资源间原有的紧密绑定,使得企业的IT系统能够更加灵活,具备了“按需而变”的动态特性。

    在Windows Server 2008 R2中有很多方面都提供了对虚拟化的支持,其中包括了展示虚拟化(通过终端服务角色实现)、网络虚拟化(通过VPN组件实现)和服务器虚拟化(通过Hyper-V角色实现),而Hyper-V则是其中全新提供并具有广泛应用前景的一个组件,因为在同一个物理设备上运行多个操作系统的需求仍然是目前企业虚拟化应用中最主要的形式。Hyper-V被微软称为服务器虚拟化平台,很显然它的主要目标就是实现服务器操作系统的虚拟化。Hyper-V服务器虚拟化的典型应用场景主要有以下几个:

    首先,是服务器的整合。事实上企业中的很多服务器并不像我们想像的那么忙碌,一般情况下很多服务器的运行负荷很低,也许CPU的占用率通常都不到20%,其他资源的利用率也很低,但是因为考虑到操作系统的版本、应用程序的冲突与兼容性以及易于管理等方面的因素,只能把它们安装在一个个独立的物理服务器上,无论从哪个角度来讲,都带来了很大的浪费。Hyper-V使得我们在同一台物理硬件服务器上运行多个不同类型的操作系统,而这些操作系统在逻辑层面上是完全隔离的,自然也不会带来兼容性方面的问题。这样就可以将原来分别运行在几台、十几台甚至几十台物理服务器上的操作系统和应用整合在一台物理服务器上,对于成本的节省是显而易见的,而与此同时在管理方面也带来了很大的效率提升。

    其次,是协助实现业务的持续性。所谓业务的持续性就是如何保证企业环境中的应用系统能够获得最大的可用性。以往这个方面对于IT管理是一个很大的挑战,举个比较常见的例子,对物理服务器的硬件进行升级和替换是很常见的操作,但是这些操作基本都是需要在关闭了服务器以后才能进行,这就会造成该服务器上的应用程序很长一段时间不可用,对于一些关键的应用系统来讲,这种情况是无法接受的。如果使用Hyper-V将应用服务器进行虚拟化,这个问题就能得到很好的解决,因为虚拟机中的操作系统并没有与服务器底层的硬件相互绑定,所以能够很容易地将运行中的虚拟服务器快速迁移到另外一台物理服务器上继续运行,而对原来的一台服务器进行硬件的升级和替换。有些应用系统的高可用方案实施起来比较烦琐,而且不同的应用系统使用完全不同的高可用技术,这样对于应用系统的高可用性管理也带来了很多的不便。如果使用Hyper-V将应用服务器进行虚拟化,由于Hyper-V本身可以基于Windows Server 2008 R2的故障转移群集很容易地实现虚拟机的高可用性,因此运行于Hyper-V之上的虚拟机和应用系统也自然成为了高可用的应用系统,这使得高可用应用系统的构建和管理变得非常简单。另外,虚拟化也极大简化了服务器的备份和灾难恢复,并且提供了快速灾难恢复的能力。

    再次,是构建测试和开发环境。对于软件公司和IT解决方案的提供商而言,开发和测试环境显然是必需的,但是随着信息技术在企业中的不断深入,企业应用解决方案的开发和测试环境也成为企业IT环境中必不可少的一部分。但是构建一个测试环境的成本投入、测试环境的提供和管理、从测试到生产环境的迁移等,都是比较棘手的问题。使用Hyper-V这样的服务器虚拟化平台以后,一方面可以用较低的成本来构建测试开发环境,另一方面在测试环境的管理、从测试环境到生产环境的转换和迁移等方面都将变得易于实现。

    最后,是构建动态的数据中心。Hyper-V能够将虚拟服务器操作系统以及上面运行的应用程序与物理硬件相分离,这使得对应用系统的管理、控制、高可用、迁移和容灾等方面都具有了非常大的灵活性,因此Hyper-V能够为构建动态的企业数据中心提供核心的支撑平台。

    微软在Windows Server 2008 R2 Hyper-V之前也有一款服务器虚拟化的产品——Virtual Server 2005,但是需要知道的是Hyper-V虽然和Virtual Server2005在应用领域方面有相同的地方,但是它们并不是同一款产品,Hyper-V也不是Virtual Server 2005的升级版本。Hyper-V和Virtual Server 2005拥有完全不同的架构,虽然作为使用者不需要了解太多Hyper-V原理和机制方面的知识,但是从图2中至少可以了解到非常重要的一点:Hyper-V中的“虚拟机(guest)”和所谓的“宿主机(host)” 都是运行在同一个层次的,虚拟机操作系统并不是运行在另一个操作系统的内部,也就是说Hyper-V中并没有“真实操作系统”和“虚拟操作系统”之分,你可以认为它们都是虚拟的或者都是真实的,这是Hyper-V和Virtual Server结构上最大的不同点之一。
 

Hyper-V 服务器虚拟化概览
 
        图2  Hyper-V原理结构

 

    这种结构带来的一个最直接的好处就是Hyper-V中的虚拟机能够获得比以前Virtual Server等寄居型服务器虚拟化产品更好的性能和可伸缩性。与此同时由于基于硬件的虚拟化支持,虚拟机之间可以进行有效的隔离和数据保护,从而能够在这个虚拟化平台之上提供更高的安全性。这一切都使得Hyper-V为企业级的虚拟架构提供了更加稳固和可靠的平台。