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

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

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

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

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