徹底理解VMware vSphere 下的虛擬卷:vVols
本文簡要介紹一下在VSphere 6.7/7.0中vVol的相關(guān)內(nèi)容。隨著虛擬化技術(shù)的發(fā)展,新的概念不斷被引入。特別是VMWare的產(chǎn)品更是新概念不斷,讓人眼花繚亂。
vVol是的全稱是Virtual Volume,也就是虛擬卷。但是vVol并非傳統(tǒng)意義上卷的概念,它更多的是一個(gè)對(duì)SAN和NAS進(jìn)行虛擬化集成與管理的框架。該框架式提供了一個(gè)更加有效的對(duì)虛擬化環(huán)境進(jìn)行管理的模型,同時(shí)將數(shù)據(jù)中心以基礎(chǔ)設(shè)施為中心轉(zhuǎn)換為以應(yīng)用為中心。從而使得虛擬化技術(shù)更好的為應(yīng)用服務(wù)。
vVol通過一種基于策略驅(qū)動(dòng)的自動(dòng)化方法來簡化操作。這使得更加靈活的滿足虛擬機(jī)對(duì)存儲(chǔ)的消費(fèi),同時(shí)可以實(shí)現(xiàn)按需實(shí)時(shí)動(dòng)態(tài)調(diào)整。它通過對(duì)硬件資源及以虛擬卷為粒度的基于磁盤陣列的數(shù)據(jù)服務(wù)的更精細(xì)的控制來簡化向應(yīng)用交付存儲(chǔ)服務(wù)級(jí)別操作。這里的存儲(chǔ)服務(wù)級(jí)別是指不同性能的存儲(chǔ)資源。
如下圖所示,通過vVol將多臺(tái)不同性能的SAN或者NAS設(shè)備虛擬化為一個(gè)稱為Datastore的資源池。而虛擬機(jī)所需資源都是從該池分配。

基于vVol, WMware提供了一個(gè)虛擬機(jī)及其磁盤粒度的視圖,而非LUN,使其變成了一個(gè)存儲(chǔ)系統(tǒng)管理單元。vVol封裝了虛擬磁盤和其他虛擬卷文件,并且將其存儲(chǔ)在存儲(chǔ)系統(tǒng)上。
vVol概述
vVol是從存儲(chǔ)陣列導(dǎo)出的VMDK粒度的存儲(chǔ)實(shí)體。vVol通過一個(gè)很小的協(xié)議終端(Protocal end-point,簡稱PE)集合導(dǎo)出到ESXi主機(jī)。PE是物理存儲(chǔ)結(jié)構(gòu)的一部分,其按需的建立起虛擬卷到期望vVol之間的數(shù)據(jù)通路。存儲(chǔ)系統(tǒng)在vVol上提供數(shù)據(jù)服務(wù)。結(jié)果是這些數(shù)據(jù)服務(wù)就是新的vVol。相對(duì)于數(shù)據(jù)路徑,數(shù)據(jù)服務(wù)、配置和虛擬卷的管理等則是帶外的。為了管理方便,多個(gè)vVol可以被打包為一個(gè)稱為存儲(chǔ)容器(SC)的邏輯項(xiàng)。
vVol和存儲(chǔ)容器形成了虛擬存儲(chǔ)結(jié)構(gòu),PE是物理存儲(chǔ)結(jié)構(gòu)的一部分。這點(diǎn)大家需要區(qū)分清楚。
通過使用一系列的稱為存儲(chǔ)感知的vSphere API(VASA),存儲(chǔ)系統(tǒng)可以感知vVol和其相關(guān)的虛擬機(jī)。通過VASA,vSphere和底層的存儲(chǔ)系統(tǒng)建立了兩路帶外通信鏈路。通過該通信鏈路vSphere可以執(zhí)行數(shù)據(jù)服務(wù)操作并將某些虛擬機(jī)的操作卸載到存儲(chǔ)系統(tǒng)端完成。例如快照和克隆等,可以從虛擬卷端轉(zhuǎn)移到存儲(chǔ)端來執(zhí)行。
對(duì)于帶內(nèi)通信,vSphere仍然通過標(biāo)準(zhǔn)的SCSI和NFS協(xié)議。于是,vVol可以支持任意類型的存儲(chǔ)系統(tǒng),包括iSCSI、FC、FCoE和NFS等。
- vVols 代表一個(gè)虛擬卷的虛擬磁盤,它是一個(gè)128位的GUID標(biāo)識(shí)的抽象對(duì)象,并被存儲(chǔ)系統(tǒng)硬件管理。
- 模型從數(shù)據(jù)存儲(chǔ)的空間管理轉(zhuǎn)變?yōu)榇疟P陣列的抽象對(duì)象的管理。
- 存儲(chǔ)硬件可以完全控制虛擬磁盤的內(nèi)容、布局和管理。
VMware的很多合作伙伴在其陣列中添加了多vVol的支持。為了端到端的支持,HBA卡驅(qū)動(dòng)需要實(shí)現(xiàn)對(duì)基于vVol設(shè)備的支持。這需要為SCSI驅(qū)動(dòng)提供一個(gè)新的API,該API用于獲得二級(jí)LUNID(SLLID)。

vVol 核心組件簡述
vVol包含5個(gè)主要的組件,分別是vVol設(shè)備,協(xié)議終端(PE),存儲(chǔ)容器(SC),VASA提供者和陣列。所有這些組件被VSphere棧的不同組件所管理或者使用。比如Virtual Center(VSSA,SPBM),ESXi(Hostd,VVolD,VVol FDS 驅(qū)動(dòng))。關(guān)于vVol的整體特性,我們概述如下:
- 沒有文件系統(tǒng)
- ESX通過VASA來管理磁盤陣列
- 陣列被劃分為邏輯的容器,稱為存儲(chǔ)容器
- 虛擬卷磁盤稱為vVol,被存儲(chǔ)在存儲(chǔ)容器當(dāng)中
- 從ESXi主機(jī)到存儲(chǔ)陣列的IO通過稱為PE的連接點(diǎn)進(jìn)行定位
- 數(shù)據(jù)服務(wù)被下沉(offload)到陣列,比如快照和加密等由陣列完成,而非虛擬化平臺(tái)
- 通過基于策略的存儲(chǔ)管理框(SPBM)架完成管理
VASA (存儲(chǔ)感知的vSphere APIs) APIs (VP)
vVol存儲(chǔ)提供者,也被稱為VASA提供者,本質(zhì)上就是一個(gè)軟件組件。其角色就是vSphere的一個(gè)存儲(chǔ)感知的服務(wù)。它負(fù)責(zé)組件間的帶外通信,其一端是ESXi主機(jī),另外一端是存儲(chǔ)系統(tǒng)。如下圖所示是EMC Unity的整體架構(gòu)圖,這個(gè)圖比較清楚的描述清楚了VASA與其它組件間的關(guān)系。

- 該組件由存儲(chǔ)陣列供應(yīng)商開發(fā)
- ESX和vCenter Server連接到VASA提供者
- 提供存儲(chǔ)感知的服務(wù)
- 一個(gè)VASA提供者可以管理多個(gè)陣列
- 支持VASA API通過ESXi主機(jī)導(dǎo)出
- VASA提供者可以基于陣列的管理程序或者固件實(shí)現(xiàn)
- 負(fù)責(zé)創(chuàng)建vVol
存儲(chǔ)容器 (SC)
不同于傳統(tǒng)LUN和基于NFS的vSphere存儲(chǔ),vVol功能并不需要在存儲(chǔ)端預(yù)配置卷。取而代之的是,vVol使用一個(gè)存儲(chǔ)容器。這個(gè)存儲(chǔ)容器可以是一個(gè)原始的存儲(chǔ)池或者聚合的存儲(chǔ)池。我們這里對(duì)存儲(chǔ)容器做如下總結(jié):
- 用于分組vVol的邏輯存儲(chǔ)結(jié)構(gòu)
- 根據(jù)虛擬卷對(duì)存儲(chǔ)的不同需求進(jìn)行隔離
- 一個(gè)SC可以被多個(gè)不同的PE訪問
- 所需能力(容量,QoS等)由SC申請(qǐng)
- VASA 提供者(Provider)發(fā)現(xiàn)存儲(chǔ)容器,并報(bào)告給vCenter服務(wù)
- 新虛擬機(jī)創(chuàng)建時(shí),隨后SC會(huì)自動(dòng)創(chuàng)建所需資源
協(xié)議終端 (PE)
雖然存儲(chǔ)系統(tǒng)負(fù)責(zé)vVol的所有管理工作,ESXi主機(jī)并不直接訪問存儲(chǔ)端的vVol。但是,ESXi主機(jī)通過一個(gè)邏輯IO代理與vVol和由vVol封裝的虛擬磁盤文件進(jìn)行通信。這里所謂的IO代理就是PE。ESXi通過PE按需的建立虛擬機(jī)與vVol的數(shù)據(jù)通路。
- 由存儲(chǔ)端隔離訪問點(diǎn)
- 可以使用多路徑策略或者NFS拓?fù)?/li>
- 實(shí)現(xiàn)ESXi主機(jī)與磁盤陣列間的通信
- 兼容所有SAN和NAS協(xié)議,如iSCSI, NFS v3, FC, FCoE.
- PE可以使用上述任何協(xié)議
vVols對(duì)象
在vCenter和vSphere Web客戶端中,虛擬數(shù)據(jù)存儲(chǔ)(datastore)代表一個(gè)存儲(chǔ)容器。vVol是對(duì)虛擬機(jī)文件、虛擬盤和其衍生品(比如快照)的封裝。
虛擬卷對(duì)象存儲(chǔ)在存儲(chǔ)容器當(dāng)中有5種不同類型的vVol,具體如下:
- Config-vVol - 元數(shù)據(jù)
- Data-vVol - VMDK
- Mem-vVol - 快照
- Swap-vVol - Swap 文件
- Other-vVol - 供應(yīng)商解決方案相關(guān)
實(shí)例簡析
雖然上面對(duì)vSphere的關(guān)鍵概念都做了解釋,估計(jì)還會(huì)有摸不著頭腦的感覺。其實(shí)簡單的理解就是提供了一套在虛擬機(jī)管理軟件中對(duì)存儲(chǔ)進(jìn)行管理的接口。這樣,在創(chuàng)建虛擬機(jī),或者進(jìn)行虛擬卷操作的時(shí)候,可以通過存儲(chǔ)系統(tǒng)的支持提供虛擬機(jī)操作的性能等。當(dāng)然,為了能夠讓虛擬機(jī)管理軟件訪問存儲(chǔ)系統(tǒng),需要建立兩者之間的關(guān)聯(lián),也就是集成的過程。
以vSphere與Unity集成為例。首先需要在存儲(chǔ)系統(tǒng)添加虛擬主機(jī)信息,然后創(chuàng)建datastore。之后在vSphere中將存儲(chǔ)系統(tǒng)添加到其中。當(dāng)然,具體操作比較多,本文不再贅述,下面是一個(gè)主要的流程。

另外,還需要建立ESXi主機(jī)與存儲(chǔ)之間數(shù)據(jù)鏈路??梢允莍SCSI或者FC,通過在宿主機(jī)實(shí)現(xiàn)到存儲(chǔ)系統(tǒng)的掛載,而且每個(gè)宿主機(jī)都要掛載成功。
