VAAI 工作原理及存儲(chǔ)陣列支持
在虛擬服務(wù)器環(huán)境中,其存儲(chǔ)硬件和Hypervisor管理程序的通訊非常復(fù)雜。VMware為簡(jiǎn)化其通訊并提高效率,研發(fā)了vStorage陣列集成應(yīng)用接口(VAAI)。該應(yīng)用接口為Hypervisor管理程序和存儲(chǔ)設(shè)備規(guī)范了不同的職責(zé),使其各自關(guān)注工作效能***化,即Hypervisor致力于虛擬化相關(guān)的工作而存儲(chǔ)相關(guān)的工作則留給存儲(chǔ)陣列。
通過(guò)VAAI,存儲(chǔ)陣列廠商可以直接將其存儲(chǔ)硬件及應(yīng)用程序和vSphere進(jìn)行集成。VAAI使得某些存儲(chǔ)層的工作,諸如克隆等,可以在存儲(chǔ)陣列上離線運(yùn)行,這較在主機(jī)端完成更為高效。主機(jī)端可以簡(jiǎn)單地將相關(guān)工作轉(zhuǎn)到存儲(chǔ)陣列上完成,而主機(jī)端只負(fù)責(zé)過(guò)程監(jiān)控,而非使用主機(jī)端的資源來(lái)完成(在VAAI之前的產(chǎn)品即是如此)。存儲(chǔ)陣列更擅長(zhǎng)此類(lèi)數(shù)據(jù)工作,可以較主機(jī)端更為快速的完成相關(guān)服務(wù)請(qǐng)求。
vStorage陣列集成應(yīng)用接口工作原理
VAAI目前使得vSphere對(duì)于某些存儲(chǔ)相關(guān)操作更為高效,主要體現(xiàn)在以下三個(gè)領(lǐng)域:
離線拷貝。拷貝虛擬磁盤(pán)文件的操作,比如虛擬機(jī)克隆或通過(guò)模板部署新的虛擬機(jī),可以通過(guò)陣列離線進(jìn)行的方式實(shí)現(xiàn)硬件加速,而不是在ESX服務(wù)器端進(jìn)行文件級(jí)的拷貝操作。這種技術(shù)同樣可以應(yīng)用于Storage vMotion功能,將一個(gè)虛擬機(jī)的數(shù)據(jù)從一臺(tái)存儲(chǔ)移動(dòng)到另一臺(tái)。VMware的Fully Copy可以極大程度上提升如何拷貝相關(guān)的操作,這可以非??焖俚夭渴鹦绿摂M機(jī)。這對(duì)于虛擬機(jī)頻繁創(chuàng)建提供或在同一時(shí)刻需創(chuàng)建大量虛擬機(jī)的應(yīng)用場(chǎng)合尤其有用。
離線并發(fā)寫(xiě)。在所有虛擬磁盤(pán)初始寫(xiě)入之前,必須進(jìn)行清零操作(一個(gè)沒(méi)有如何數(shù)據(jù)的磁盤(pán)數(shù)據(jù)塊里有空值;這時(shí)要在該磁盤(pán)數(shù)據(jù)塊中寫(xiě)入零,以清除所有可能從之前刪除的虛擬機(jī)中遺留的數(shù)據(jù)。默認(rèn)的“慢速清零”虛擬磁盤(pán)(具體數(shù)據(jù)塊根據(jù)是否需要初始寫(xiě)入,進(jìn)行清零)直到有***寫(xiě)入操作請(qǐng)求時(shí)才對(duì)該磁盤(pán)數(shù)據(jù)塊進(jìn)行清零操作。這造成了極大的性能影響,而且陳舊的數(shù)據(jù)可能會(huì)遺留給其它客戶端操作系統(tǒng)。“提前清零”虛擬磁盤(pán)(所有的磁盤(pán)數(shù)據(jù)塊在創(chuàng)建時(shí)一次性清零)可以用于取代原有方式以取消原***寫(xiě)入磁盤(pán)數(shù)據(jù)塊時(shí)的性能影響,并消除任何原有虛擬機(jī)數(shù)據(jù)保存在其它磁盤(pán)數(shù)據(jù)塊上的可能性。在該格式化過(guò)程中,大量的零數(shù)據(jù)從ESX/ESXi主機(jī)發(fā)送到要清零的陣列上的磁盤(pán)數(shù)據(jù)塊(因此也叫“并發(fā)寫(xiě)”),這可能是一項(xiàng)耗時(shí)且耗資源的過(guò)程。通過(guò)VMware Block Zeroing操作,陣列可以處理所有的清零過(guò)程,更為高效。磁盤(pán)陣列無(wú)需讓主機(jī)端等待操作完成,其立刻提示操作完成,然后處理清零操作,這期間不涉及到主機(jī)端的任何操作。
硬件輔助鎖定。VMFS文件系統(tǒng)允許多主機(jī)對(duì)同一共享邏輯卷的并發(fā)訪問(wèn),這是vMotion運(yùn)行的必要條件。VMFS有一個(gè)內(nèi)置的安全機(jī)制,防止虛擬機(jī)被超過(guò)一臺(tái)的主機(jī)同時(shí)運(yùn)行或修改。vSphere采用“SCSI預(yù)留”作為其傳統(tǒng)文件鎖定機(jī)制,這種方式在某項(xiàng)存儲(chǔ)相關(guān)的指令操作期間,比如增量快照增長(zhǎng)或發(fā)生時(shí),均使用“RESERVE SCSI”命令鎖定整個(gè)邏輯卷。這有助于防止沖突,不過(guò)也拖延了存儲(chǔ)工作的完成,因?yàn)橹鳈C(jī)必須等待邏輯卷的解鎖命令“RELEASE SCSI”才能繼續(xù)寫(xiě)入。使用Atomic Test and Set(ATS)命令是一種硬件輔助的鎖定機(jī)制,可以離線地對(duì)存儲(chǔ)陣列加鎖,這樣就可以對(duì)個(gè)別磁盤(pán)數(shù)據(jù)塊而非整個(gè)邏輯卷。這樣可以使得余下的邏輯卷在鎖定期間繼續(xù)被主機(jī)訪問(wèn),十分有助于避免性能下降。該功能同時(shí)通過(guò)VMFS數(shù)據(jù)存儲(chǔ),允許同一集群中部署更多的主機(jī),以及更多的虛擬主機(jī)部署在同一個(gè)邏輯卷上。
VAAI的廠商支持
目前,vStorage陣列集成應(yīng)用接口只針對(duì)基于數(shù)據(jù)塊的存儲(chǔ)陣列(光纖存儲(chǔ)或iSCSI)有效,并不支持NFS存儲(chǔ)。廠商對(duì)于VAAI的支持一更不相同,某些廠商,諸如EMC,很快地支持了這些功能,而另一些廠商花費(fèi)了很長(zhǎng)的時(shí)間將其整合到他們的所有存儲(chǔ)陣列型號(hào)中。你可以通過(guò)查看VMware對(duì)光纖存儲(chǔ)的兼容列表來(lái)了解哪些存儲(chǔ)陣列支持特定的vStorage應(yīng)用接口特性。
通過(guò)VMware光纖存儲(chǔ)兼容列表,你可以搜索你的存儲(chǔ)陣列是否可以支持VAAI,如果這樣,其它的應(yīng)用接口也是支持的。
該列表易于搜索,并告知各存儲(chǔ)陣列是否支持多路徑插件,以及支持何種VAAI特性等信息。如果你的存儲(chǔ)陣列目前尚不支持VAAI,可以和供應(yīng)商確認(rèn)其是否有這方面的規(guī)劃。你也可能要升級(jí)更新發(fā)布的vSphere或更新的存儲(chǔ)陣列型號(hào)來(lái)支持VAAI。
關(guān)閉VAAI
vStorage陣列集成應(yīng)用接口在vSphere 4.1版中默認(rèn)激活(不過(guò)在vSphere 4.0版中并不支持),并且只要存儲(chǔ)陣列支持,該功能就會(huì)被激活。不過(guò)你也可能希望關(guān)閉VAAI功能,比方說(shuō)你發(fā)現(xiàn)你的存儲(chǔ)陣列無(wú)法兼容或出于測(cè)試的需要,你要比較VAAI打開(kāi)和關(guān)閉的性能比較。你可以使用如下高級(jí)主機(jī)設(shè)置功能逐個(gè)關(guān)閉這些功能:配置->軟件->vSphere客戶端中高級(jí)設(shè)置菜單。
關(guān)閉離線拷貝,設(shè)置DataMover.HardwareAcceleratedMove為0。
關(guān)閉離線并發(fā)寫(xiě),設(shè)置DataMover.HardwareAcceleratedInit為0。
關(guān)閉硬件輔助鎖定,設(shè)置VMFS3.HardwareAssistedLocking為0。
你可以通過(guò)“配置->軟件->vSphere中的高級(jí)設(shè)置菜單關(guān)閉VAAI設(shè)置
VAAI為特定的存儲(chǔ)操作提供了極大的性能改善,并且已有大量存儲(chǔ)廠商使用了這種應(yīng)用接口。VMware將在每次發(fā)布新的vSphere時(shí)持續(xù)改善vStorage應(yīng)用接口;我們期待在新版本中可以看到更多應(yīng)用接口集成在NFS增強(qiáng)的領(lǐng)域,離線快照領(lǐng)域以及陣列管理領(lǐng)域。