李 剛 張 魏
摘要:本文作者針對(duì)目前流行的虛擬化應(yīng)用,通過(guò)自身對(duì)虛擬化實(shí)際運(yùn)用與理解,從硬件需求、應(yīng)用分析、系統(tǒng)安全等方面詳細(xì)闡述了虛擬化容易產(chǎn)生的幾個(gè)誤區(qū),并提出了可實(shí)施的解決方案,以此讓大家對(duì)虛擬化有更多的了解。
關(guān)鍵詞:虛擬化 虛擬系統(tǒng) 宿主 寄宿 誤區(qū)
0 引言
現(xiàn)如今的虛擬機(jī)軟件不下數(shù)十種,主要針對(duì)WINDOWS和LINUX平臺(tái)而開(kāi)發(fā),具有代表性的有VMware的ESX和Microsoft的Hyper-V。從應(yīng)用上來(lái)看,VMware發(fā)展的較早,功能豐富、應(yīng)用強(qiáng)大從而占據(jù)了虛擬機(jī)市場(chǎng)大壁江山,微軟由于提供了對(duì)VMware映像文件的支持,因而兼容性更好。在提及正文之前,讓我們從另一個(gè)方面再來(lái)了解下虛擬機(jī)的概念。筆者認(rèn)為虛擬化技術(shù)狹隘的講就是虛擬機(jī)應(yīng)用,它將一個(gè)或多個(gè)操作系統(tǒng)通過(guò)虛擬機(jī)軟件在一個(gè)操作系統(tǒng)平臺(tái)上進(jìn)行窗口化模擬,其模擬出的運(yùn)行效果與單機(jī)相同,且對(duì)其占用的系統(tǒng)資源可根據(jù)需要進(jìn)行調(diào)配,模擬運(yùn)行的操作系統(tǒng)就是虛擬系統(tǒng)。這種模擬的模式就是宿主與寄宿的關(guān)系。而宿主機(jī)硬件環(huán)境的好壞,直接影響寄宿機(jī)運(yùn)行的性能。
1 只要是服務(wù)器,就可以虛擬化
基于寄宿者對(duì)宿主的要求,因而宿主機(jī)的硬件配置必須足夠強(qiáng)大。對(duì)于早期購(gòu)入的服務(wù)器,由于架構(gòu)及性能的不足,很多硬件雖然支持虛擬化技術(shù),但實(shí)際運(yùn)行起來(lái),效果卻強(qiáng)差人意。操作系統(tǒng)的不斷自我升級(jí),運(yùn)行所占用的資源也在不斷增長(zhǎng),在保障自身流暢運(yùn)行的前提下,還要分出大量硬件資源去做虛擬機(jī)應(yīng)用,這樣會(huì)給已經(jīng)不堪重負(fù)的宿主機(jī)帶來(lái)更大的壓力。
讓我們來(lái)看一下,虛擬機(jī)所需的硬件配置。一個(gè)WINDOWS 2003 SERVER操作系統(tǒng)按照微軟官方的建議系統(tǒng)需求,需要占用1個(gè)專用的CPU內(nèi)核、256M以上內(nèi)存、2G以上磁盤空間,實(shí)際流暢的運(yùn)行則需占用2個(gè)專用的CPU內(nèi)核、1G以上內(nèi)存、10G以上磁盤空間,再加上宿主機(jī)所需硬件資源,轉(zhuǎn)換成服務(wù)器配置為:單核雙路處理器、2G以上物理內(nèi)存、40G以上磁盤空間。盡管服務(wù)器配置并非很高,而且這樣的配置對(duì)大多數(shù)“老機(jī)”來(lái)說(shuō)足以勝任,但要求這種僅能滿足自身需求的配置還要分離一半物理資源用來(lái)支撐虛擬機(jī)的運(yùn)行,簡(jiǎn)直就是一種浪費(fèi)。何況,通過(guò)減小虛擬系統(tǒng)的性能而減少所占用的硬件資源,本身無(wú)意義。
建議:采用雙路雙核2G以上處理器、4G以上內(nèi)存、76G磁盤空間、千兆網(wǎng)卡等以上配置機(jī)型。
2 將應(yīng)用分離,可以最大化利用網(wǎng)絡(luò)資源
虛擬機(jī)可以設(shè)置多個(gè)虛擬網(wǎng)卡,也可以通過(guò)橋接或網(wǎng)絡(luò)地址轉(zhuǎn)換來(lái)實(shí)現(xiàn)上網(wǎng)功能。但虛擬機(jī)并不支持宿主機(jī)上的虛擬網(wǎng)卡(如英特爾網(wǎng)卡的分組功能或鏈路聚合功能),它只能基于硬件驅(qū)動(dòng)識(shí)別物理網(wǎng)卡。當(dāng)虛擬機(jī)設(shè)置為自動(dòng)識(shí)別橋接網(wǎng)卡時(shí),多個(gè)虛擬系統(tǒng)都是通過(guò)第一塊物理網(wǎng)卡實(shí)現(xiàn)橋接功能,不能指定虛擬系統(tǒng)使用某塊固定的物理網(wǎng)卡,因此也不能實(shí)現(xiàn)負(fù)載均衡或應(yīng)用負(fù)載分流。
建議:使用千兆光纖網(wǎng)卡以提升網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)數(shù)據(jù)的處理能力。不采取虛擬機(jī)軟件的自動(dòng)識(shí)別橋接網(wǎng)卡功能,通過(guò)定制每個(gè)虛擬系統(tǒng)的網(wǎng)絡(luò)配置,實(shí)現(xiàn)硬件網(wǎng)卡的分離調(diào)用。
3 虛擬機(jī)的操作與真機(jī)一樣
筆者在使用VMware虛擬機(jī)時(shí),發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象。當(dāng)安裝VMware Tools后,從宿主機(jī)將數(shù)據(jù)拷貝到虛擬系統(tǒng)第二個(gè)分區(qū)時(shí),數(shù)據(jù)并不是直接拷貝,而是先拷貝到虛擬系統(tǒng)第一個(gè)分區(qū)的臨時(shí)文件夾下,然后再?gòu)呐R時(shí)文件夾拷貝到第二個(gè)分區(qū)上,而且拷貝完成后,臨時(shí)文件夾下的數(shù)據(jù)也不會(huì)被刪除。如果你的第一個(gè)分區(qū)剩余空間不夠大,而且所需拷貝數(shù)據(jù)遠(yuǎn)遠(yuǎn)大于剩余空間,那么對(duì)你來(lái)說(shuō),將是一種折磨。由于虛擬系統(tǒng)是通過(guò)軟件模擬的特性,因此單個(gè)虛擬系統(tǒng)的性能與單機(jī)獨(dú)立運(yùn)行的性能還存在一定的差距。
建議:在新建虛擬系統(tǒng)時(shí),對(duì)虛擬磁盤分配采用單個(gè)分區(qū),或是通過(guò)虛擬機(jī)自帶的文件夾共享功能實(shí)現(xiàn)大文件的存取。
4 虛擬機(jī)可以通過(guò)軟件來(lái)提速。
宿主機(jī)的剩余內(nèi)存空間還很多時(shí),你可能會(huì)利用第三方軟件來(lái)提速,如SUPERCACHE或RAMDISK,把剩余內(nèi)存劃分一部分做為虛擬磁盤,將虛擬機(jī)映像放在這個(gè)虛擬盤上,這樣可以大大提升讀寫速度,但事實(shí)并非如此。SUPERCACHE與RAMDISK是可以起到讀取速度成倍數(shù)增長(zhǎng)的效果,但要求裝載的文件尺寸不要過(guò)大。而虛擬機(jī)映射文件少則幾個(gè)G,大則數(shù)10G,還有隨之產(chǎn)生的臨時(shí)文件體積也以G為單位,讀取更不頻繁。因此,每次讀寫操作都是基于物理磁盤完成,即犧牲了物理內(nèi)存,又占用了剩余磁盤空間,優(yōu)勢(shì)并不明顯,且設(shè)置SUPERCACHE與RAMDISK后,系統(tǒng)自身可用內(nèi)存變小,反而減弱了正常的交換處理速度。
建議:在宿主機(jī)和寄宿機(jī)系統(tǒng)里設(shè)置更大的虛擬交換空間,單個(gè)虛擬系統(tǒng)分配更大的物理內(nèi)存。
5 集中式管理,方便到家
宿主機(jī)配置足夠強(qiáng)大時(shí),你會(huì)多開(kāi)虛擬系統(tǒng)或是細(xì)分應(yīng)用來(lái)充分榨取宿主機(jī)的資源。啟用宿主機(jī)的遠(yuǎn)程終端服務(wù),可遠(yuǎn)程登錄一次管理多個(gè)虛擬系統(tǒng),無(wú)需頻繁切換,操作非常方便,但同時(shí)也增加了部分操作量。使用一個(gè)操作系統(tǒng)時(shí),多個(gè)應(yīng)用并存,你只需要調(diào)試一次即可完成,但開(kāi)啟多個(gè)虛擬系統(tǒng)后,你要對(duì)每個(gè)虛擬系統(tǒng)進(jìn)行同樣的調(diào)試操作,即便一個(gè)系統(tǒng)補(bǔ)丁的升級(jí),也會(huì)帶來(lái)N次的重復(fù)操作。因?yàn)閷?duì)于一個(gè)小型數(shù)據(jù)中心或計(jì)算機(jī)中心來(lái)說(shuō),其虛擬化本身就會(huì)帶來(lái)工作量的提升,再加上日常維護(hù),工作量將是成倍增長(zhǎng)。
建議:對(duì)關(guān)鍵服務(wù)不采用虛擬化應(yīng)用。
6 虛擬機(jī)運(yùn)行后,就像刀片機(jī)一樣方便
的確,在一臺(tái)高端機(jī)上運(yùn)行多個(gè)虛擬系統(tǒng)后,不會(huì)增加機(jī)架數(shù)量及電源消耗等管理成本,還可以將多個(gè)虛擬系統(tǒng)集群化,提供應(yīng)用上的負(fù)載均衡,這樣的功能就跟刀片服務(wù)器一模一樣,卻比購(gòu)置刀片服務(wù)器節(jié)省了大量的資金。但不可忽視的是由于架構(gòu)的不同,刀片服務(wù)器在并行運(yùn)算、磁盤讀取性能、整體擴(kuò)展等方面有不可替代的優(yōu)勢(shì)。多個(gè)虛擬系統(tǒng)只是在一臺(tái)物理服務(wù)器上運(yùn)行,不僅磁盤讀取性能受到服務(wù)器自身磁盤性能的影響,而且端口的可擴(kuò)展性也將受到局限。
建議:服務(wù)器磁盤系統(tǒng)應(yīng)采用SCSI Ultra 320或SAS等支持RAID 5陣列的獨(dú)立板卡,且自身帶有128M以上緩存。硬盤采用高轉(zhuǎn)速(15K)、高緩存(16M以上)的型號(hào)。宿主機(jī)可另配USB集線器,以滿足某些虛擬系統(tǒng)對(duì)USB接口的擴(kuò)展需要。
7 用虛擬機(jī)做系統(tǒng),安全萬(wàn)無(wú)一失
將宿主機(jī)的安全做到最大化,把所有應(yīng)用都放在虛擬系統(tǒng)里運(yùn)行,這樣即便某個(gè)虛擬系統(tǒng)被攻擊,對(duì)其它虛擬系統(tǒng)和宿主機(jī)無(wú)任何影響,并可通過(guò)最近的快照功能進(jìn)行恢復(fù),因此虛擬機(jī)相對(duì)單個(gè)系統(tǒng),安全系數(shù)相當(dāng)高。但最近有報(bào)到稱,研究人員可以利用虛擬機(jī)內(nèi)存讀寫的漏洞,直接對(duì)宿主機(jī)發(fā)起攻擊,并可運(yùn)行任意代碼。隨著時(shí)間的推移,安全問(wèn)題也會(huì)成為虛擬機(jī)軟件所面對(duì)的首選問(wèn)題。而且一旦宿主機(jī)宕機(jī)或出現(xiàn)物理故障,則所有虛擬系統(tǒng)都將離線。
建議:宿主機(jī)做好系統(tǒng)備份、升級(jí)系統(tǒng)補(bǔ)丁、定時(shí)殺毒等工作,關(guān)閉無(wú)用系統(tǒng)服務(wù)及端口,減低故障發(fā)生風(fēng)險(xiǎn),網(wǎng)絡(luò)連接不設(shè)置IP地址(不能禁用,否則虛擬系統(tǒng)網(wǎng)絡(luò)無(wú)法使用),虛擬系統(tǒng)采用橋接模式與網(wǎng)絡(luò)連接(NAT模式下宿主機(jī)與網(wǎng)絡(luò)有連接,可被入侵)。
8 結(jié)束語(yǔ)
筆者并非要對(duì)虛擬化潑冷水,在虛擬化大行其道的今天,筆者更希望大家能理性看待,切勿一擁而上,應(yīng)結(jié)合自己的切實(shí)需求認(rèn)真分析、合理布署。截止筆者發(fā)稿時(shí),VMware又一次站在時(shí)代的潮頭,率先推出了業(yè)界第一款云操作系統(tǒng)VMware vSphere 4,將數(shù)據(jù)中心轉(zhuǎn)變成極為簡(jiǎn)化的云計(jì)算基礎(chǔ)架構(gòu),再一次帶給人們?nèi)碌捏w驗(yàn)。