虚拟化技术伴随着云计算服务产业的发展已经日趋成熟了,VMware, Microsoft、Red Hat和Citrix都已经在各自的虚拟化层中实现了对CPU和内存的虚拟化。VMware则更进一步,提出了软件定义数据中心的理念,旨在将虚拟化技术延伸到网络和存储。
虚拟化这些资源的意义何在呢?对用户而言有什么益处?相对于虚拟化CPU和内存而言,虚拟化网络和存储又有什么特殊的价值?这绝对值得我们认真思考。
如果把CPU虚拟化定义为抽象物理CPU以方便工作负载使用计算资源,则VMware并不是第一个实现CPU虚拟化的厂商,现代操作系统早就做到了。负载包括线程和进程,操作系统负责将这些线程和进程调度到CPU中运行。
VMware通过CPU虚拟化技术解决难题的是如何在一个操作系统实例中运行多个应用。实现这一任务的困难之处在于每一个应用都与操作系统之间有着密切的依赖关系。一个应用通常只能运行于特定版本的操作系统和中间件之上。这就是Windows用户常常提到的“DLL地狱”。
因此,大多数用户只能在一个Windows操作系统实例上运行一种应用,操作系统实例独占一台物理服务器。这种状况会导致物理服务器的CPU资源被极大地浪费。能够使多个操作系统实例同时运行在一台物理服务器之上,是VMware所提供的CPU虚拟化技术的价值所在。通过整合服务器充分利用CPU资源,可以给用户带来极大的收益。
服务器整合的益处能够得以实现的前提是工作负载并不需要知晓它们正在共享CPU,虚拟化层必须具备这种能力。这是CPU虚拟化与其它虚拟化形式所不同的地方。
内存虚拟化保驾护航
VMware的CPU虚拟化通过时间片的方式实现CPU的共享。而通过虚拟化技术来共享内存就没这么简单了。假设一个应用程序需要2GB物理内存,即使分配2GB虚拟内存给它,后面对应的物理内存也必须存在。否则应用程序的性能将变得很差。
VMware通过透明页共享技术可以实现一定程度上的内存共享。虚拟化层能够识别出各操作系统只读内存区域(代码页)中的相同部分,这些页面在内存中只保留一个副本。Windows操作系统自身所使用的内存大多为代码页,因此在运行有N个Windows实例的物理服务器上vSphere只保留一个Windows操作系统副本。这就是为什么在VDI的环境中你只需要为VDI映像分配比物理桌面少得多的内存。
CPU时间分片是虚拟化层能够实现的,内存却不能按时间分片。多个应用可以共用一个CPU,但多个应用却不能同时使用一段内存区域。CPU的速度在持续增长,虚拟机的密度主要受限于服务器上物理内存的数量。
网络虚拟化软硬转移
对于未来虚拟化技术,我们所面临的重要问题之一就是网络虚拟化如何工作,能给我们带来什么样的收益?这个问题的答案差不多是这样:网络虚拟化将虚拟网络的配置从硬件交换机移到了虚拟化平台。使虚拟化管理员可以更容易地创建和变更虚拟网络。网络配置也可以很容易地随着虚拟机移动。
云管理软件可以基于服务目录自动创建工作负载所需要的虚拟网络。这与虚拟化层可以很容易地配置虚拟CPU和虚拟内存所带来的好处是相似的。但是在节省成本,提高投资回报方面,它并不像服务器整合所带来的收益那么明显。
但是网络虚拟化也有CPU虚拟化和内存虚拟化所不具备的独到之处。它将一部分通过网络硬件实现的工作转移给了虚拟网络软件。VMware很早就已经在软件中实现了虚拟交换机。微软的Hyper-V中也有类似的东西。运行在同一主机上的两台虚拟机要相互通讯,网络流量不需要通过物理网卡传送到物理交换机。如果你把服务于某个应用的WEB服务器、应用服务器和数据库服务器放在同一台主机上。
只有数据库服务器的流量会流经网卡(使用NAS)或HBA卡(使用光纤存储),因此网络虚拟化可以减少物理服务器所需网口的数量。这是不是可以称之为“网络整合”呢?减少三分之一到一半的网线(以及TOR交换机的端口)也算是一大成就了。
如此一来,用户将不再需要那些昂贵且智能的交换机。所有的智能都移到了软件之中,谁还需要智能交换机呢?你只需要一台能够转发数据包的傻瓜交换机就可以了。网络虚拟化技术将改变交换机产业。这两点可以解释VMware收购Nicira时Cisco所做出的反映。
存储虚拟化小路包抄
与CPU的虚拟化不同,存储虚拟化并不是VMware或Microsoft的主要投资目标。早就有多种抽象物理存储的方法在应用了,LUN就是一种逻辑抽象,存储管理员负责将它映射到物理存储。一些创新型的企业如Tintri和Virsto也是通过提供独特的存储抽象技术来创造价值的。
VMware现在有一款名为vSphere Storage Appliance的产品,可以将最多三台物理服务器的本地硬盘存储整合成池,这个虚拟存储池可以通过一个访问点进行访问,提供冗余能力和高可用服务。如果VMware将vSphere Storage Appliance扩展为32节点的服务器集群会如何?为32节点集群提供存储虚拟化服务,如果服务器内部有足够多的磁盘来容纳数据。
而且虚拟存储阵列能够满足应用对存储性能的要求,你可能就不需要另外购买NAS或者光纤存储了。
与内存类似,这种方式的虚拟存储并不能实现多个负载共享同一块存储区域。如果一个负载需要2TB网络存储,也就意味着需要占用2TB的本地存储池。所以不会像CPU虚拟化和服务器虚拟化一样有明显的整合收益。
如果这些本地存储池能够取代网络和光纤存储阵列,则会带来与网络虚拟化类似的收益。服务器本地的直连存储要比网络上的共享存储便宜得多。如果这一技术能在VMware客户中得以大量应用,在存储方面的成本节省将是非常显著的。
编辑的话
虚拟化技术分为很多种,要想让虚拟化技术能够真正的帮助企业网络提高办公效率,就需要将上述的几项有机结合起来,载以云计算和大数据的强大后盾,相辅相成,这样一来,企业在发展云计算方面也会容易得多,效率提升的也就更明显。
来源: 51CTO