李 刚 张 魏
摘要:本文作者针对目前流行的虚拟化应用,通过自身对虚拟化实际运用与理解,从硬件需求、应用分析、系统安全等方面详细阐述了虚拟化容易产生的几个误区,并提出了可实施的解决方案,以此让大家对虚拟化有更多的了解。
关键词:虚拟化 虚拟系统 宿主 寄宿 误区
0 引言
现如今的虚拟机软件不下数十种,主要针对WINDOWS和LINUX平台而开发,具有代表性的有VMware的ESX和Microsoft的Hyper-V。从应用上来看,VMware发展的较早,功能丰富、应用强大从而占据了虚拟机市场大壁江山,微软由于提供了对VMware映像文件的支持,因而兼容性更好。在提及正文之前,让我们从另一个方面再来了解下虚拟机的概念。笔者认为虚拟化技术狭隘的讲就是虚拟机应用,它将一个或多个操作系统通过虚拟机软件在一个操作系统平台上进行窗口化模拟,其模拟出的运行效果与单机相同,且对其占用的系统资源可根据需要进行调配,模拟运行的操作系统就是虚拟系统。这种模拟的模式就是宿主与寄宿的关系。而宿主机硬件环境的好坏,直接影响寄宿机运行的性能。
1 只要是服务器,就可以虚拟化
基于寄宿者对宿主的要求,因而宿主机的硬件配置必须足够强大。对于早期购入的服务器,由于架构及性能的不足,很多硬件虽然支持虚拟化技术,但实际运行起来,效果却强差人意。操作系统的不断自我升级,运行所占用的资源也在不断增长,在保障自身流畅运行的前提下,还要分出大量硬件资源去做虚拟机应用,这样会给已经不堪重负的宿主机带来更大的压力。
让我们来看一下,虚拟机所需的硬件配置。一个WINDOWS 2003 SERVER操作系统按照微软官方的建议系统需求,需要占用1个专用的CPU内核、256M以上内存、2G以上磁盘空间,实际流畅的运行则需占用2个专用的CPU内核、1G以上内存、10G以上磁盘空间,再加上宿主机所需硬件资源,转换成服务器配置为:单核双路处理器、2G以上物理内存、40G以上磁盘空间。尽管服务器配置并非很高,而且这样的配置对大多数“老机”来说足以胜任,但要求这种仅能满足自身需求的配置还要分离一半物理资源用来支撑虚拟机的运行,简直就是一种浪费。何况,通过减小虚拟系统的性能而减少所占用的硬件资源,本身无意义。
建议:采用双路双核2G以上处理器、4G以上内存、76G磁盘空间、千兆网卡等以上配置机型。
2 将应用分离,可以最大化利用网络资源
虚拟机可以设置多个虚拟网卡,也可以通过桥接或网络地址转换来实现上网功能。但虚拟机并不支持宿主机上的虚拟网卡(如英特尔网卡的分组功能或链路聚合功能),它只能基于硬件驱动识别物理网卡。当虚拟机设置为自动识别桥接网卡时,多个虚拟系统都是通过第一块物理网卡实现桥接功能,不能指定虚拟系统使用某块固定的物理网卡,因此也不能实现负载均衡或应用负载分流。
建议:使用千兆光纤网卡以提升网络带宽和网络数据的处理能力。不采取虚拟机软件的自动识别桥接网卡功能,通过定制每个虚拟系统的网络配置,实现硬件网卡的分离调用。
3 虚拟机的操作与真机一样
笔者在使用VMware虚拟机时,发现一个有趣的现象。当安装VMware Tools后,从宿主机将数据拷贝到虚拟系统第二个分区时,数据并不是直接拷贝,而是先拷贝到虚拟系统第一个分区的临时文件夹下,然后再从临时文件夹拷贝到第二个分区上,而且拷贝完成后,临时文件夹下的数据也不会被删除。如果你的第一个分区剩余空间不够大,而且所需拷贝数据远远大于剩余空间,那么对你来说,将是一种折磨。由于虚拟系统是通过软件模拟的特性,因此单个虚拟系统的性能与单机独立运行的性能还存在一定的差距。
建议:在新建虚拟系统时,对虚拟磁盘分配采用单个分区,或是通过虚拟机自带的文件夹共享功能实现大文件的存取。
4 虚拟机可以通过软件来提速。
宿主机的剩余内存空间还很多时,你可能会利用第三方软件来提速,如SUPERCACHE或RAMDISK,把剩余内存划分一部分做为虚拟磁盘,将虚拟机映像放在这个虚拟盘上,这样可以大大提升读写速度,但事实并非如此。SUPERCACHE与RAMDISK是可以起到读取速度成倍数增长的效果,但要求装载的文件尺寸不要过大。而虚拟机映射文件少则几个G,大则数10G,还有随之产生的临时文件体积也以G为单位,读取更不频繁。因此,每次读写操作都是基于物理磁盘完成,即牺牲了物理内存,又占用了剩余磁盘空间,优势并不明显,且设置SUPERCACHE与RAMDISK后,系统自身可用内存变小,反而减弱了正常的交换处理速度。
建议:在宿主机和寄宿机系统里设置更大的虚拟交换空间,单个虚拟系统分配更大的物理内存。
5 集中式管理,方便到家
宿主机配置足够强大时,你会多开虚拟系统或是细分应用来充分榨取宿主机的资源。启用宿主机的远程终端服务,可远程登录一次管理多个虚拟系统,无需频繁切换,操作非常方便,但同时也增加了部分操作量。使用一个操作系统时,多个应用并存,你只需要调试一次即可完成,但开启多个虚拟系统后,你要对每个虚拟系统进行同样的调试操作,即便一个系统补丁的升级,也会带来N次的重复操作。因为对于一个小型数据中心或计算机中心来说,其虚拟化本身就会带来工作量的提升,再加上日常维护,工作量将是成倍增长。
建议:对关键服务不采用虚拟化应用。
6 虚拟机运行后,就像刀片机一样方便
的确,在一台高端机上运行多个虚拟系统后,不会增加机架数量及电源消耗等管理成本,还可以将多个虚拟系统集群化,提供应用上的负载均衡,这样的功能就跟刀片服务器一模一样,却比购置刀片服务器节省了大量的资金。但不可忽视的是由于架构的不同,刀片服务器在并行运算、磁盘读取性能、整体扩展等方面有不可替代的优势。多个虚拟系统只是在一台物理服务器上运行,不仅磁盘读取性能受到服务器自身磁盘性能的影响,而且端口的可扩展性也将受到局限。
建议:服务器磁盘系统应采用SCSI Ultra 320或SAS等支持RAID 5阵列的独立板卡,且自身带有128M以上缓存。硬盘采用高转速(15K)、高缓存(16M以上)的型号。宿主机可另配USB集线器,以满足某些虚拟系统对USB接口的扩展需要。
7 用虚拟机做系统,安全万无一失
将宿主机的安全做到最大化,把所有应用都放在虚拟系统里运行,这样即便某个虚拟系统被攻击,对其它虚拟系统和宿主机无任何影响,并可通过最近的快照功能进行恢复,因此虚拟机相对单个系统,安全系数相当高。但最近有报到称,研究人员可以利用虚拟机内存读写的漏洞,直接对宿主机发起攻击,并可运行任意代码。随着时间的推移,安全问题也会成为虚拟机软件所面对的首选问题。而且一旦宿主机宕机或出现物理故障,则所有虚拟系统都将离线。
建议:宿主机做好系统备份、升级系统补丁、定时杀毒等工作,关闭无用系统服务及端口,减低故障发生风险,网络连接不设置IP地址(不能禁用,否则虚拟系统网络无法使用),虚拟系统采用桥接模式与网络连接(NAT模式下宿主机与网络有连接,可被入侵)。
8 结束语
笔者并非要对虚拟化泼冷水,在虚拟化大行其道的今天,笔者更希望大家能理性看待,切勿一拥而上,应结合自己的切实需求认真分析、合理布署。截止笔者发稿时,VMware又一次站在时代的潮头,率先推出了业界第一款云操作系统VMware vSphere 4,将数据中心转变成极为简化的云计算基础架构,再一次带给人们全新的体验。