VMware虛擬磁盤編程指導(一)

    最近在看VMware相關的東西,由於需要對ESX/ESXi遠程主機上的虛擬機進行備份,所以下載了《Virutal Disk Program Guide》(虛擬磁盤編程指導),裏面講解了虛擬磁盤的基本概念、API函數、備份還原等,但由於是英文的,沒有中文版,所以起初看起來有點困難。自從去年看過一遍後,感覺沒有多麼深刻的概念,所以現在回過頭來再看一次,爲了加深自己的理解,我採用一邊看一邊翻譯的方式。現在將自己陸陸續續翻譯的內容和大家分享,其中有很多自己也不敢肯定的翻譯,我一般在後面附上英文原文,還望大家多多指點。請注意,這只是本人隨筆翻譯的內容,如果需要深入的研究,建議還是看英文原版的。

關於這本書

VMwareVirtual Disk Programming Guide 介紹了虛擬磁盤開發接口(VDDK)以及vShpere存儲API的數據保護部分(VADP)VDDK描述瞭如何使用虛擬磁盤庫開發軟件,虛擬磁盤庫提供了管理虛擬磁盤的系統調用接口,而VADP則描述瞭如何針對vShpere開發備份和還原軟件。

如果需要查看這本書的早期版本或者其他VMware API以及SDK文檔,請訪問:

http://www.vmware.com/support/pubs/sdk_pubs.html

修改歷史

1簡單描述本書的歷史版本中的修改內容。

                             wKioL1OISfeTUnlmAAHU19HQ42Q711.jpg

目標讀者

這本書適合創建管理虛擬磁盤應用程序的開發者,尤其是開發備份、還原程序的開發者,並假設對CC++編程有一定的瞭解。如果涉及VADP開發,還需要了解Java

支持的平臺產品

你可以使用WindowsLinux開發VDDK程序,在VMWare工作站、ESXi主機或vSphere上進行測試。如果要開發、測試VADP程序,你還想要一個vCenter ServerESXi主機,並且需要Java的基礎。

文檔反饋

VMware歡迎您提供建議幫助我們改善開發文檔。請將您的反饋發送到[email protected]



1 虛擬磁盤接口簡介

虛擬磁盤接口(VDDK)用來幫助開發者創建應用程序訪問虛擬機的存儲設備。本章介紹的VDDK開發包以虛擬磁盤接口爲基礎。

VMware數據保護存儲接口(VADP)使用虛擬磁盤接口以及一部分vSphere接口,對運行在ESXi主機上的虛擬機創建快照,然後進行完全或增量備份。

關於虛擬磁盤接口

虛擬磁盤接口,VixDiskLib,包含一組管理VMDK格式文件的函數調用。函數調用使用C語言的文件I/O系統調用(Function call semantics are patternedafter C system calls for file I/O)。使用虛擬磁盤接口,你可以在你的軟件中編寫程序直接訪問VMDK文件。

這些庫函數能夠操作VMware工作站上的虛擬磁盤,或其他類似產品上的虛擬磁盤(如宿主磁盤,hosted disk),以及ESX/ESXi主機的VMFS捲上虛擬磁盤(managed disk)Hosted表示虛擬平臺上寄宿了一個客戶機操作系統,如WindowsLinux(Hosted is a term indicatingthat the virtualization platform is hosted by a guest operation system such asWindows or Linux)

VDDK可以安裝在WindowsLinux上,所以你可以使用任何一個系統編寫VDDKVADP應用。應用程序可以操作任何操作系統上的虛擬磁盤,只要上面運行了支持的VMware平臺產品。你可以通過簽署一份分發協議,將VDDK庫打包進你的軟件應用中。如果要了解更多關於支持的平臺產品以及開發系統的信息,請查看VDDK發佈說明。

使用VDDKVADP,還可以開發應用程序,通過中心控制器(central location)有效地操作多個虛擬磁盤。

VDDK組件

虛擬磁盤開發文檔包括以下內容:

1. 虛擬盤庫,一組管理VMDK文件的C函數調用。

2. 磁盤掛載庫,一組遠程掛載VMDK文件系統的C函數調用。

3. C++示例代碼,可以使用Visual StudioGNU C編譯。

4. PDF手冊和在線HTML幫助

虛擬磁盤庫(Virtual Disk Library)

VixDiskLib是一個單獨的封裝庫,幫助開發者設計集成VMware平臺產品的解決方案。虛擬磁盤庫包括以下內容:

1. 允許程序創建、轉換、擴展、整理(defragment)、壓縮、重命名虛擬磁盤文件。

2. 創建重寫日誌(父子磁盤鏈,或差異),刪除VMDK文件。(create redo logs(parent-childdisk chaining, or deltas) can delete VMDK files.)

3. 允許隨機讀寫VMDK文件上任何位置的數據,並讀取元數據(metadata)

4. 使用高級傳輸方式(SANHotAdd)連接遠程vSphere存儲。

Windows上,虛擬磁盤內核驅動是64位的,用戶庫可以是32位的,因爲64Windows可以運行32爲程序。VMware僅提供64位的二進制庫。

磁盤掛載庫(Disk Mount Library)

虛擬磁盤掛載庫,vixMntapi,運行程序以掛載磁盤分區的方式訪問虛擬磁盤。更多信息請查看附錄A,“虛擬磁盤掛載API”。vixMntapi庫和vixDiskLib庫一起放在同一個包中。

虛擬磁盤工具(Virtual Disk Utilities)

虛擬磁盤開發接口包中有兩個命令行工具,用來管理虛擬磁盤文件:磁盤掛載和虛擬磁盤管理。它們的最新版本在VDDK 5.0中。更多信息請查看網站上的磁盤掛載和虛擬磁盤管理用戶手冊。

vSphere備份還原

VMware存儲API——數據保護(VADP)包含一組API,用於開發或擴展備份軟件,保護VMWare數據中心中ESX/ESXi主機上的虛擬機。更多信息,請查看第7章,設計vSphere備份方案

vCloud Director備份設計

VMware vCloud中,vCloud Director自帶服務提供了三級數據保護。備份程序可以提供系統級、中間層、用戶級的vApp保護(Backup providers can offer vAppprotection at system level, the tenant level, or the end-user level)。更多關於vCloud數據保護的信息,請查看“Backup Design for vCloud TenantvApps”

虛擬磁盤庫的用例(Use Cases for the Virtual Disk Library)

VDDK能夠訪問虛擬磁盤,並允許以下操作:

1. 備份虛擬機的單個指定卷或所有卷。

2. 將備份代理連接到vSphere,備份存儲簇上的所有虛擬機。

3. 讀取虛擬磁盤,運行離線的虛擬機病毒掃描,數據分析。

4. 寫入虛擬磁盤,執行虛擬機的離線統一補丁(perform off-linecentralized patching)

5. 管理虛擬磁盤的整理、擴展、轉換、重命名、壓縮文件系統鏡像。

6. 對中毒和被破壞的離線虛擬機進行數據恢復或病毒清除。

VMware平臺產品的開發(Developingfor VMware Platform Products)

VMware的數據中心上,商業備份軟件通常通過備份代理遠程訪問虛擬磁盤。備份代理可以是安裝了備份軟件的虛擬機或物理機。

在一個備份時間點上,備份軟件通常做以下操作:

1. 對一個簇中虛擬機創建快照(一個一個的,或並行的)

2. 拷貝VMDK文件到備份媒體,或者增量備份時只拷貝發生改變的塊。

3. 記錄虛擬機配置。

4. 刪除快照(作爲靜態的虛擬機)

在上面的過程中,虛擬磁盤庫只用於第二步。其他過程使用一部分vSphere接口(VADP)來創建快照並保存虛擬機配置。簇中虛擬磁盤是由vSphere管理的。

託管磁盤和寄宿磁盤(Managed Disk and Hosted Disk)

和硬盤驅動器類似,虛擬磁盤文件呈現虛擬機的存儲卷,每個文件都以”.vmdk“後綴命名。在運行VMware工作站的系統上,每個客戶機系統(guest OS)的文件系統都保持在VMDK文件中,他們存放在宿主系統的物理磁盤上。VMDK文件可以在宿主系統上直接訪問。

ESX/ESXi主機上虛擬機文件系統VMFS上,VMDK文件同樣作爲虛擬機的存儲卷,它們通常存放在簇中共享的存儲上。vCenter管理這些存儲簇,它能夠在ESX/ESXi主機之間遷移虛擬機而不需要移動VMDK文件。VMFS存儲也叫作託管磁盤。

VMFS磁盤可以存放在通過光纖通道、iSCSISAS連接到ESX/ESXi主機的存儲網絡(SAN)上,也可以存儲在網絡掛載存儲(NAS)或直接掛載的磁盤上。

1-1描述了託管磁盤(VMFS文件系統上的VMDK)和本地磁盤(物理磁盤上VMDK)

                             wKiom1OISsjSTYEzAAFi_VR_-sw871.jpg

VMDK支持兩種類型的磁盤(Managed and Hosted Disk),但是一些函數不支持託管磁盤,而另外一些功能不支持寄宿磁盤。文檔中將提到這些區別。

高級傳輸模式(Advanced Transports)

對於託管磁盤,VDDK應用程序可以利用高級傳輸通過SAN而不是LAN來執行大多數I/O操作,這會提高程序性能,並保護網絡帶寬。

VDDKVADP筆記

虛擬磁盤開發包(VDDK)包含一系列的C函數庫,用於操作虛擬磁盤(VixDiskLib)和掛載虛擬磁盤分區(VixMntApi)VDDK主要關注有效地訪問並傳輸虛擬磁盤數據。

用於數據保護的vSphere存儲接口(VADP)vShpere API的一個子集,用於開發備份和還原應用。基於快照的VADP框架允許有效、非主機(off-host)、中央控制的(centralized)虛擬機備份。快照創建後,虛擬磁盤變爲靜默狀態(quiesce),軟件可以使用VDDK庫函數進行備份。

vSphere是基於XMLWeb服務(Web Service),爲vCenter服務器管理運行在ESX/ESXi主機上的虛擬機提供了接口。

開發需要結合VDDKVADP來編寫數據保護軟件。VADP將會在第7章,“開發vSphere備份解決方案”中講到。

平臺產品兼容(Platform Product Compatibility)

爲了支持最新的vSphere版本,你應該使用最新的VDDK來重新編譯並更新你的軟件,因爲VDDK會持續更新以便能夠支持vSphere中的新功能。比如5.0VDDK的版本號對應了vSphere的版本號。

2008年開始,VDDK已經向後兼容了多個VMware平臺的產品,如工作站,ESX/ESXi 3.5VitualCenter2.5(現在的vCenter Server),但是從沒有支持VMware FusionVDDK將不會在工作站上進行測試,但是工作站可以作爲一個良好的開發平臺。

分發VDDK組件(Redistributing VDD Componnents)

當你使用VDDK開發完軟件應用之後,你可能需要重新打包編譯進你的軟件的二進制庫。

要擁有VDDK分發的資格,你必須在VMware TAP項目中具有Select或更高級別,並且簽署一份分發協議。可以聯繫你的VMware合作經理,以獲取VDDK分發協議。VMware需要知道你如何使用VDDK,並計劃將它分發哪些產品上,公司的名稱,以及你的聯繫信息。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章