對(duì)于整個(gè)主機(jī)系統(tǒng),存儲(chǔ)可能是其中最為緩慢和復(fù)雜的一部分,并且很容易成為整個(gè)系統(tǒng)的瓶頸,這對(duì)于那些在主機(jī)上運(yùn)行虛擬機(jī)的用戶,存儲(chǔ)可能會(huì)使得整個(gè)系統(tǒng)變得相當(dāng)緩慢。在VMware的虛擬化環(huán)境中,存儲(chǔ)I/O控制(Storage I/O Control)提供了必要的存儲(chǔ)I/O控制,并且可以確保運(yùn)行關(guān)鍵業(yè)務(wù)的虛擬機(jī)性能不會(huì)被其它主機(jī)上和其共享I/O資源的虛擬機(jī)影響到。
VMware存儲(chǔ)I/O管理最初在vSphere4.1中引入,將vSphere的存儲(chǔ)資源控制提升到一個(gè)更高的標(biāo)準(zhǔn)。在vSphere5中,存儲(chǔ)I/O管理得到進(jìn)一步增強(qiáng),可以支持NFS數(shù)據(jù)存儲(chǔ)和集群內(nèi)的I/O共享。
在vSphere4.1之前的版本中,存儲(chǔ)資源控制可以在每臺(tái)主機(jī)的虛擬機(jī)級(jí)別進(jìn)行設(shè)置,所使用的共享功能提供按優(yōu)先級(jí)排序的存儲(chǔ)資源訪問。雖然對(duì)于單臺(tái)主機(jī)這種方式可行,但很多場(chǎng)景下許多主機(jī)會(huì)共享數(shù)據(jù)存儲(chǔ),但是由于每臺(tái)主機(jī)各自運(yùn)作,控制虛擬機(jī)對(duì)磁盤資源的訪問,某臺(tái)主機(jī)上的虛擬機(jī)可能會(huì)限制其它主機(jī)上對(duì)磁盤資源的使用。
以下是一個(gè)出現(xiàn)問題的例子:
主機(jī)A有大量非關(guān)鍵業(yè)務(wù)的虛擬機(jī),占用數(shù)據(jù)存儲(chǔ)1,其磁盤共享設(shè)置為“正常”。
主機(jī)B運(yùn)行一個(gè)關(guān)鍵業(yè)務(wù)的SQL服務(wù)器虛擬機(jī),同樣占用數(shù)據(jù)存儲(chǔ)1,其磁盤共享設(shè)置為“高”。
主機(jī)A上的非關(guān)鍵虛擬機(jī)啟動(dòng)一項(xiàng)事物,初始了一個(gè)內(nèi)部磁盤I/O;由于主機(jī)A中的資源并不緊張,該虛擬機(jī)可以占用其所需的所有存儲(chǔ)I/O資源。
數(shù)據(jù)存儲(chǔ)1收到主機(jī)A上的虛擬機(jī)大量的I/O資源請(qǐng)求。
結(jié)果主機(jī)B上關(guān)鍵業(yè)務(wù)SQL虛擬機(jī)的存儲(chǔ)性能受到影響。
存儲(chǔ)I/O控制的工作機(jī)制
存儲(chǔ)I/O控制通過(guò)在數(shù)據(jù)存儲(chǔ)級(jí)別增強(qiáng)存儲(chǔ)資源控制解決這一問題,所有集群內(nèi)的主機(jī)和虛擬機(jī)訪問數(shù)據(jù)存儲(chǔ)時(shí)都對(duì)虛擬機(jī)進(jìn)行優(yōu)先級(jí)排序后才能訪問存儲(chǔ)資源。因此,當(dāng)有更高優(yōu)先級(jí)的虛擬機(jī),即使是在其它主機(jī)上,需要更多的存儲(chǔ)資源時(shí),一個(gè)低或正常優(yōu)先級(jí)的虛擬機(jī)會(huì)被限速。存儲(chǔ)I/O控制可以在任何數(shù)據(jù)存儲(chǔ)上激活,并且一旦激活,會(huì)通過(guò)擁堵的閾值測(cè)量存儲(chǔ)子系統(tǒng)的延遲。閾值一旦達(dá)到,存儲(chǔ)I/O控制開始限制各主機(jī)上較低優(yōu)先級(jí)虛擬機(jī)的存儲(chǔ)訪問,從而確保高優(yōu)先級(jí)的虛擬機(jī)可以獲取所需資源。
在各臺(tái)激活的數(shù)據(jù)存儲(chǔ)上擁堵閾值的設(shè)置基于毫秒。默認(rèn)的擁堵閾值設(shè)置為30毫秒,并且可以從10毫秒到100毫秒進(jìn)行調(diào)整。在大多情況下用默認(rèn)值就可以。在更改之前,你需要了解更改后可能引起的變化。設(shè)置值越高意味著更集中的數(shù)據(jù)吞吐量但虛擬機(jī)I/O控制將被弱化。而設(shè)置值越低可以確保更強(qiáng)的虛擬機(jī)I/O控制,但共享控制也將更頻繁地調(diào)用。當(dāng)設(shè)置閾值時(shí),為了確保存儲(chǔ)I/O控制正常工作,需要注意的是對(duì)于同一陣列上的所有數(shù)據(jù)存儲(chǔ)都必須設(shè)置同一閾值。
存儲(chǔ)I/O控制還增加了另一項(xiàng)虛擬機(jī)I/O控制:這項(xiàng)新設(shè)置使得你可以設(shè)置每個(gè)虛擬機(jī)允許的最大IOPS。該設(shè)置性操作和共享功能無(wú)關(guān),并且基本上設(shè)置了每個(gè)虛擬機(jī)一個(gè)硬性的性能限制。要注意的一點(diǎn)是該限制及時(shí)在存儲(chǔ)資源性能十分充裕時(shí)仍對(duì)I/O進(jìn)行控制;因此,其中該項(xiàng)設(shè)置必須謹(jǐn)慎。
如何激活并配置存儲(chǔ)I/O控制
存儲(chǔ)I/O控制可以通過(guò)在首頁(yè)選中Datastores目錄對(duì)象,使用vSphere客戶端激活并進(jìn)行配置。
第二步,在左側(cè)面板中選擇所要激活存儲(chǔ)I/O控制的數(shù)據(jù)存儲(chǔ),并在右側(cè)面板中點(diǎn)擊配置標(biāo)簽。然后點(diǎn)擊屬性鏈接。
一旦激活,你可以點(diǎn)擊高級(jí)按鈕,將閾值從默認(rèn)值更改為你想要的值。
這樣存儲(chǔ)I/O控制就激活了,你可以根據(jù)需要調(diào)整各虛擬機(jī)的共享和IOPS設(shè)置。默認(rèn)地,所有虛擬機(jī)被設(shè)置為正常的共享優(yōu)先級(jí)以及不限制IOPS的形式,因此所有虛擬機(jī)可以公平地訪問存儲(chǔ)。要更改默認(rèn)設(shè)置,選中一個(gè)虛擬機(jī)后編輯其設(shè)置。然后在資源標(biāo)簽中選中磁盤,這樣就可以修改設(shè)置和IOPS值了。
一旦你激活了存儲(chǔ)I/O控制,你可以通過(guò)選中一個(gè)數(shù)據(jù)存儲(chǔ),選擇性能標(biāo)簽,并在視圖下拉菜單中選擇性能來(lái)監(jiān)控存儲(chǔ)I/O控制。你可以看到數(shù)據(jù)存儲(chǔ)和各虛擬機(jī)平均的延遲和IOPS總和。
注意點(diǎn)
此外,還有一些地方需要注意:
存儲(chǔ)I/O控制在vSphere4.1或5的版本中默認(rèn)是關(guān)閉的。
在vSphere4.1中,存儲(chǔ)I/O控制只能運(yùn)作在基于數(shù)據(jù)塊的虛擬機(jī)文件系統(tǒng)(VMFS)數(shù)據(jù)存儲(chǔ)上(iSCSI和光纖);并不支持NFS。不過(guò)在vSphere5版本中,NFS數(shù)據(jù)存儲(chǔ)得以支持。
存儲(chǔ)I/O控制只包括在企業(yè)版的vSphere中。
激活存儲(chǔ)I/O控制的數(shù)據(jù)存儲(chǔ)必須通過(guò)單個(gè)的vCenter Server系統(tǒng)進(jìn)行管理。
vCenter Server和所有連接數(shù)據(jù)存儲(chǔ)的主機(jī)都必須運(yùn)行在vSphere4.1或更高的版本上。
在vSphere4.1或5版本中,原始設(shè)備映射(RDM)功能都不支持。
存儲(chǔ)I/O控制不支持?jǐn)?shù)據(jù)存儲(chǔ)的Multiple Extent功能。
當(dāng)數(shù)據(jù)存儲(chǔ)后面的陣列支持自動(dòng)存儲(chǔ)分層時(shí),在使用存儲(chǔ)I/O控制之前,請(qǐng)點(diǎn)擊VMware存儲(chǔ)/SAN兼容性指南來(lái)驗(yàn)證你的自動(dòng)化分層陣列是否被存儲(chǔ)I/O控制功能驗(yàn)證過(guò)。