說(shuō)到VMware vSphere的某些高級(jí)特性,比如VMotion、fault tolerance(容錯(cuò))、high availability(高可用)以及VMware DRS(Distributed Resource Scheduler,分布式資源調(diào)度)。vSphere的專(zhuān)利技術(shù)--“VMFS文件系統(tǒng)”--具有一種特殊的鎖機(jī)制,允許多臺(tái)物理主機(jī)連接到同一個(gè)共享的存儲(chǔ)卷,其上的虛擬機(jī)也可以共享存儲(chǔ)空間。不過(guò),從傳統(tǒng)的角度來(lái)說(shuō),實(shí)現(xiàn)共享存儲(chǔ)卷意味著必須使用昂貴的光纖通道網(wǎng)絡(luò)基礎(chǔ)架構(gòu), 不過(guò)現(xiàn)在,iSCSI和NFS網(wǎng)絡(luò)存儲(chǔ)設(shè)備已經(jīng)成為了一種更經(jīng)濟(jì)的選擇。
在本文中,我們將為您介紹如何在vSphere環(huán)境中正確的安裝、配置iSCSI存儲(chǔ),我們會(huì)對(duì)要點(diǎn)做相應(yīng)的提示,并提供一些最佳實(shí)踐供您參考。此外,我們?cè)诓煌呐渲铆h(huán)境下做了性能測(cè)試,通過(guò)比較這些測(cè)試結(jié)果,能夠分析出各類(lèi)配置對(duì)性能的影響。
VMware的流行促進(jìn)了iSCSI的普及
第一個(gè)支持iSCSI網(wǎng)絡(luò)存儲(chǔ)的VMware版本是 ESX 3.0.它的內(nèi)部集成了一個(gè)叫做initiatior(發(fā)起端)的客戶(hù)端程序,通過(guò)局域網(wǎng)將SCSI命令發(fā)送到存儲(chǔ)裝置中的Target(目標(biāo)端)SCSI設(shè)備。與光纖通道技術(shù)不同,iSCSI使用傳統(tǒng)的網(wǎng)絡(luò)元件和標(biāo)準(zhǔn)的TCP/IP協(xié)議,因此它不需要特殊的線纜和交換機(jī)設(shè)備。
目前iSCSI的initiator(發(fā)起端)可以是軟件程序,也可以基于硬件。軟件initiator 通過(guò)使用內(nèi)建于VMkernel的設(shè)備驅(qū)動(dòng),利用網(wǎng)絡(luò)適配器和以太網(wǎng)協(xié)議將數(shù)據(jù)寫(xiě)到遠(yuǎn)端的iSCSI Target(目標(biāo)端)。因此軟件initiator 的一些重要特征是:
使用以太網(wǎng)卡和本地VMkernel iSCSI堆棧
對(duì)于刀片服務(wù)器,或者擴(kuò)展槽有限的服務(wù)器來(lái)說(shuō)是一個(gè)好的選擇
比硬件initiator便宜
CPU密集運(yùn)算,因?yàn)閰f(xié)議的處理會(huì)增加CPU的開(kāi)銷(xiāo)
ESX server不支持基于軟件initiator的boot(啟動(dòng))模式;ESXi可以使用iSCSI Boot Firmware Table(iBFT)。
硬件initiator則使用專(zhuān)用的iSCSI HBA卡,它可以幫助服務(wù)器提升性能。它包括網(wǎng)絡(luò)適配器、TCP/IP協(xié)議卸載引擎(TOE,TCP/IP offload engine)、以及SCSI總線控制器等組件。硬件initiator的特征包括:
I/O性能比軟件initiator好
消耗更少的ESX server主機(jī)資源,特別是CPU資源
ESX server能夠從硬件initiator啟動(dòng)
如果想進(jìn)一步了解iSCSI與其他存儲(chǔ)協(xié)議相比有哪些優(yōu)缺點(diǎn)。請(qǐng)參見(jiàn)“iSCSI利弊分析”。
對(duì)于正在使用光纖通道存儲(chǔ)的用戶(hù)來(lái)說(shuō),iSCSI是個(gè)不錯(cuò)的替代方案,因?yàn)閕SCSI不但可以降低部署成本,還可以保證良好的性能。vSphere目前已經(jīng)能夠支持10Gbps以太網(wǎng)協(xié)議,性能大大超過(guò)1Gbps以太網(wǎng)技術(shù)。當(dāng)然,使用iSCSI也存在一個(gè)大的風(fēng)險(xiǎn),如果采用的是軟件initiator,難免會(huì)給CPU帶來(lái)額外的開(kāi)銷(xiāo),不過(guò)換成硬件initiator之后,這個(gè)問(wèn)題就可以避免。使用硬件initiator還有一個(gè)好處就是可以將iSCSI數(shù)據(jù)流與其他網(wǎng)絡(luò)流量完全隔離,而各種數(shù)據(jù)流的混合會(huì)讓網(wǎng)絡(luò)環(huán)境變得脆弱且容易波動(dòng)。
出于優(yōu)化vSphere的目的,VMware公司將軟件iSCSI initiator的堆棧代碼完全重寫(xiě)了一遍,就是為了更有效的利用CPU時(shí)鐘周期。結(jié)果,與VMware的上一個(gè)版本Infrastructure 3相比,vSphere的效率和吞吐量明顯提升。這個(gè)結(jié)果的實(shí)現(xiàn)主要是通過(guò)改進(jìn)VMkernel的TCP/IP堆棧,優(yōu)化相關(guān)緩存,以及通過(guò)提高內(nèi)部鎖的效率達(dá)成的。vSphere還增加了對(duì)雙向CHAP(Challenge-Handshake Authentication Protocol)的支持,無(wú)論是initiator(發(fā)起端)還是Target(目標(biāo)端)都需要經(jīng)過(guò)相互的認(rèn)證,這種認(rèn)證機(jī)制提供了更好的安全保護(hù)。
在vSphere環(huán)境中,如何規(guī)劃iSCSI的實(shí)施
在我們計(jì)劃將iSCSI存儲(chǔ)用于vSphere環(huán)境之前,必須做好幾個(gè)決策。讓我們先來(lái)看看iSCSI存儲(chǔ)設(shè)備。
我們可以在vSphere環(huán)境中隨心所欲的使用任何類(lèi)型的iSCSI存儲(chǔ)設(shè)備,因?yàn)橹鳈C(jī)端連接使用的是標(biāo)準(zhǔn)的網(wǎng)絡(luò)適配器、標(biāo)準(zhǔn)的initiator以及通用的協(xié)議。但是我們必須注意兩件事。首先,vSphere官方宣稱(chēng)支持的iSCSI存儲(chǔ)設(shè)備僅限于某些廠商的特定型號(hào)(具體參見(jiàn)vSphere硬件兼容性指南),這就意味著如果我們打電話(huà)向VMware咨詢(xún)一個(gè)與存儲(chǔ)設(shè)備相關(guān)的問(wèn)題,他有可能讓我們?nèi)艽虼鎯?chǔ)供應(yīng)商的支持電話(huà)。其次,我們需要注意的是,不同的iSCSI存儲(chǔ)系統(tǒng)性能也有較大的差異。通常,對(duì)性能要求越高,所需的成本也越高。所以,針對(duì)虛擬機(jī)環(huán)境,我們要謹(jǐn)慎的選擇iSCSI設(shè)備,確保它的性能能夠滿(mǎn)足應(yīng)用程序?qū)Υ疟P(pán)I/O的要求。
關(guān)于網(wǎng)絡(luò),也有一些需要注意的事項(xiàng)。如果要優(yōu)化iSCSI的性能,最好創(chuàng)建一個(gè)獨(dú)立的網(wǎng)絡(luò)環(huán)境。這是為了確保iSCSI數(shù)據(jù)流不被其他網(wǎng)絡(luò)流量干擾,同時(shí)對(duì)確保iSCSI的信息安全也有幫助。在虛擬機(jī)環(huán)境下,不能用100兆網(wǎng)卡承載iSCSI應(yīng)用,那會(huì)非常的慢,甚至于完全不可用。所以,至少要用到千兆網(wǎng)絡(luò)環(huán)境,如果預(yù)算充足的話(huà),推薦使用萬(wàn)兆以太網(wǎng)。如果擔(dān)心服務(wù)器資源開(kāi)銷(xiāo)過(guò)大,則可以考慮使用硬件initiator(TOE適配器),前提是確保我們選擇的這個(gè)TOE適配器在VMware的硬件兼容列表中。如果我們使用了一個(gè)VMware不支持的TOE適配器,vSphere會(huì)將視其為一個(gè)標(biāo)準(zhǔn)的網(wǎng)卡,那也就無(wú)從發(fā)揮TOE的好處了。最后,如果為了獲得最高的系統(tǒng)可用性而使用多路徑的話(huà),至少要用到兩塊網(wǎng)卡(不能是橋接或者多端口)分別連接到兩臺(tái)物理交換機(jī),這一點(diǎn)與我們?cè)诠饫w通道環(huán)境中配置多路徑是一樣的。
在vSphere環(huán)境中設(shè)置iSCSI
一旦建立起了iSCSI環(huán)境,我們就可以開(kāi)始vSphere的設(shè)置。針對(duì)軟件或硬件initiator,設(shè)置的方法會(huì)有所不同。我們先來(lái)看看軟件initiator的設(shè)置。
基于軟件initiator的設(shè)置:vSphere中內(nèi)建的軟件iSCSI initiator被當(dāng)做一個(gè)存儲(chǔ)適配器,要啟用這個(gè)適配器,用戶(hù)必須在一個(gè)vSwitch上(虛擬交換機(jī))創(chuàng)建一個(gè)VMkernel端口組。vSphere憑借這個(gè)VMkernel接口與iSCSI目標(biāo)端連接。所有主機(jī)與目標(biāo)存儲(chǔ)之間的網(wǎng)絡(luò)流量都必經(jīng)過(guò)虛擬交換機(jī)(vSwitch)上的這個(gè)VMkernel接口。每個(gè)vSwitch上的VMkernel接口數(shù)量可以大于一個(gè)。這個(gè)VMkernel接口也被用于VMotion、容錯(cuò)(fault-tolerance)日志傳輸以及連接NFS存儲(chǔ)設(shè)備。當(dāng)需要使用VMkernel接口做上面提到的多種用途時(shí),我們強(qiáng)烈建議用戶(hù)為iSCSI連接創(chuàng)建一個(gè)獨(dú)立的vSwitch,并使用專(zhuān)用的VMkernel接口;而且還應(yīng)該將兩個(gè)物理網(wǎng)卡同時(shí)綁定到這個(gè)vSwitch上,以便保證容錯(cuò)性或?qū)嵤┒嗦窂脚渲谩H绻h(huán)境中同時(shí)擁有多個(gè)網(wǎng)卡和多個(gè)VMkernel接口,那么應(yīng)該確保iSCSI VMkernel接口被綁定在正確的那個(gè)網(wǎng)卡上。更多信息可參考VMware的iSCSI SAN配置指南。
在設(shè)置了vSwitch和VMkernel接口之后,我們就可以配置軟件iSCSI適配器了。在vSphere客戶(hù)端界面選擇“配置/存儲(chǔ)適配器”,會(huì)看到“軟件iSCSI適配器”顯示出來(lái),選擇它,并點(diǎn)擊屬性配置。在總標(biāo)簽欄(General tab)下,我們可以啟用適配器,并配置CHAP認(rèn)證(強(qiáng)烈建議做CHAP配置)。在動(dòng)態(tài)搜索(Dynamic Discovery tab)標(biāo)簽欄下,我們可以通過(guò)添加目標(biāo)設(shè)備的IP地址自動(dòng)搜索iSCSI目標(biāo)端設(shè)備;另一個(gè)方法是通過(guò)在靜態(tài)搜索欄(Static Discovery tab)下,手動(dòng)輸入目標(biāo)設(shè)備的名字,輸入這些信息之后,返回到存儲(chǔ)適配器的界面,然后點(diǎn)擊“重新掃描”按鈕進(jìn)行設(shè)備搜索,即可找到我們需要的iSCSI目標(biāo)端設(shè)備。
基于硬件initiator的設(shè)置:這個(gè)過(guò)程與設(shè)置軟件initiator相似,只是不需要使用VMkernel網(wǎng)絡(luò),所以有些步驟可以跳過(guò)。TOE適配器是一個(gè)特殊的網(wǎng)絡(luò)適配器,但它卻可以在存儲(chǔ)適配器界面顯示。選擇該適配器,單擊并設(shè)置屬性。在這里,屬性的設(shè)置原則跟軟件initiator類(lèi)似,通過(guò)在總標(biāo)簽欄(General tab)、動(dòng)態(tài)搜索(Dynamic Discovery tab)標(biāo)簽欄、靜態(tài)搜索欄(Static Discovery tab)中輸入恰當(dāng)?shù)男畔ⅰP枰⒁獾氖牵诳倶?biāo)簽欄中,我們還需要為T(mén)OE適配器分配一個(gè)固定的IP地址,因?yàn)榇藭r(shí)TOE設(shè)備并不依賴(lài)VMkernel網(wǎng)絡(luò)。
在設(shè)置好initiator之后,應(yīng)該可以順利搜索到目標(biāo)iSCSI存儲(chǔ)設(shè)備,然后以VMFS卷的格式將其映射給前端主機(jī)。具體步驟是選擇一個(gè)主機(jī),點(diǎn)選“設(shè)置標(biāo)簽欄”,然后選擇存儲(chǔ),點(diǎn)擊“添加存儲(chǔ)”之后進(jìn)入一個(gè)向?qū)Ы缑妫疟P(pán)類(lèi)型選擇“Disk/LUN”,表示這是一個(gè)基于塊的存儲(chǔ)設(shè)備。(如果使用基于網(wǎng)絡(luò)文件系統(tǒng)的存儲(chǔ)設(shè)備,則選擇添加“NFS磁盤(pán)存儲(chǔ)設(shè)備”)。進(jìn)入下一個(gè)界面,在可用設(shè)備列表中選擇所需的iSCSI目標(biāo)端設(shè)備,為其添加一個(gè)卷名,然后設(shè)定塊的大小。這個(gè)過(guò)程走完,我們就完成了新VMFS數(shù)據(jù)卷的創(chuàng)建,可以隨時(shí)使用了。
vSphere環(huán)境使用iSCSI存儲(chǔ)的最佳實(shí)踐
一旦完成了iSCSI磁盤(pán)設(shè)備的配置,虛擬機(jī)就可以使用它們了。下面羅列的一些關(guān)于iSCSI存儲(chǔ)系統(tǒng)的最佳實(shí)踐,有助于我們?cè)谑褂眠^(guò)程中獲得最佳的性能和可用性。
iSCSI存儲(chǔ)系統(tǒng)的性能表現(xiàn)與網(wǎng)絡(luò)的健康程度和利用率密切相關(guān),為了追求最佳的效果,準(zhǔn)備一個(gè)獨(dú)立的網(wǎng)絡(luò)環(huán)境,完全隔離iSCSI數(shù)據(jù)流是必要的。
每臺(tái)ESX server主機(jī)只能配置一個(gè)軟件initiator.為iSCSI連接配置vSwitch時(shí),可以利用多個(gè)物理網(wǎng)絡(luò)端口形成冗余結(jié)構(gòu)。如果想正確的配置多路徑,還要確保VMkernel接口與vSwithc中的網(wǎng)絡(luò)端口有正確的綁定關(guān)系。
確保iSCSI vSwitch的網(wǎng)絡(luò)端口與一個(gè)獨(dú)立的網(wǎng)絡(luò)交換機(jī)連接,以降低網(wǎng)絡(luò)單點(diǎn)故障所帶來(lái)的影響。
vSphere支持存儲(chǔ)協(xié)議中使用jumbo frames(巨幀),但是jumbo frames的優(yōu)勢(shì)只在一些非常特殊的環(huán)境中才能發(fā)揮出來(lái),比如I / O的尺寸非常大的數(shù)據(jù)流。此外,后端的存儲(chǔ)系統(tǒng)必須能夠處理較大的吞吐量,比如RAID組中磁盤(pán)的數(shù)量大于等于15個(gè),否則我們將看不到任何效果。如果I / O尺寸太小或者磁盤(pán)數(shù)量不夠,那么使用jumbo frames的效果會(huì)很差,甚至感覺(jué)不到任何性能的提升。在某些環(huán)境下,jumbo frames還可能會(huì)造成性能的衰減,所以在啟用jumbo frames之前和之后做兩次性能測(cè)試,比較jumbo frames產(chǎn)生的影響是必要的。還有一個(gè)需要注意的問(wèn)題是,整個(gè)連接環(huán)節(jié)中,每一個(gè)端到端的組件都必須支持并且打開(kāi)jumbo frames功能,包括物理網(wǎng)絡(luò)端口和網(wǎng)絡(luò)交換機(jī)、vSwitch(虛擬交換機(jī))、VMkernel端口、以及iSCSI目標(biāo)端。其中任何一個(gè)環(huán)節(jié)沒(méi)有設(shè)置jumbo frames,jumbo frames都不會(huì)起作用。
使用最新的Paravirtual SCSI總線控制器(PVSCSI)作為虛擬機(jī)的磁盤(pán)控制器,可以帶來(lái)最大的吞吐帶寬和性能,超過(guò)傳統(tǒng)上常用的標(biāo)準(zhǔn)LSI Logic以及BusLogic總線控制器。如果I/O的壓力很小,那么LSI Logic總線控制器是最佳選擇。
設(shè)置高級(jí)多路徑(advanced multipathing)功能可以獲得更好的性能,進(jìn)入iSCSI存儲(chǔ)卷的屬性界面,點(diǎn)擊路徑管理,就可以配置路徑的選擇策略,多路徑驅(qū)動(dòng)既可以是VMware自帶的,也可以是第三方多路徑插件。當(dāng)使用軟件initiator的時(shí)候,我們可以在一個(gè)vSwitch虛擬交換機(jī)上創(chuàng)建兩個(gè)VMkernel接口,并各分配一個(gè)物理網(wǎng)絡(luò)端口,一個(gè)是Active狀態(tài),另一個(gè)是Unused狀態(tài);使用命令“esxcli”將一個(gè)VMkernel端口綁定到第一個(gè)網(wǎng)絡(luò)端口,另一個(gè)VMkernel端口綁定到第二個(gè)網(wǎng)絡(luò)端口上。用“循環(huán)使用(Round Robin)”的路徑切換策略代替“修復(fù)/最近使用(Fixed or Most Recently Used (MRU))”策略,通常會(huì)獲得更好的性能。不過(guò),如果虛擬機(jī)上運(yùn)行的是MSCS(Microsoft Cluster Server),則要避免使用“循環(huán)策略(Round Robin)”。
參考可用的iSCSI使用指南
VMware公司提供了兩份詳盡的vSphere環(huán)境下部署iSCSI存儲(chǔ)系統(tǒng)的指南。包括《iSCSI SAN配置指南》和《iSCSI設(shè)計(jì)和部署指南》。