跨多個虛擬機(jī)共享虛擬硬盤的制作方法
【專利說明】跨多個虛擬機(jī)共享虛擬硬盤
[0001 ] 背景
[0002]在高度可用計算鄰域內(nèi),服務(wù)器通常是群集的。也就是說,它們一起作為一個組來工作。在這類配置中,如果一個服務(wù)器故障,其它服務(wù)器繼續(xù)工作。因此,連接到服務(wù)器的一個或多個客戶端要么看不到服務(wù)的中斷,要么看到極小影響的中斷。當(dāng)這些服務(wù)器群集被虛擬化時,它們?nèi)匀恍枰蚕淼谋P。在當(dāng)前的實(shí)現(xiàn)中,使用的是對群集的所有成員對稱式地可用的盤驅(qū)動器。
[0003]各實(shí)施例正是對于這些和其它一般考慮事項而做出的。而且,盡管討論了相對具體的問題,但是應(yīng)當(dāng)理解,各實(shí)施例不應(yīng)被限于解決本【背景技術(shù)】中所標(biāo)識的具體問題。
[0004]概述
[0005]提供本概述來以簡化形式介紹將在以下詳細(xì)描述部分中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
[0006]各實(shí)施例提供了一種用于在多個虛擬機(jī)中共享存儲的方法和系統(tǒng)。具體地,一個或多個實(shí)施例涉及將命令從多個虛擬機(jī)發(fā)送到共享存儲。在各實(shí)施例中,共享存儲可以是一個或多個虛擬硬盤。此處提供的方法和系統(tǒng)公開了將命令通過由文件系統(tǒng)協(xié)議建立的通信會話從虛擬機(jī)發(fā)送給文件服務(wù)器。在某些實(shí)施例中,命令以第一格式從虛擬機(jī)發(fā)出。在通過文件系統(tǒng)協(xié)議傳遞給文件服務(wù)器之前,命令從第一格式轉(zhuǎn)換成第二格式。如以下將討論的,第二格式基于由文件系統(tǒng)協(xié)議定義的偏好。當(dāng)在文件服務(wù)器處接收到命令時,過濾器將該命令從第二格式自動轉(zhuǎn)換回第一格式。過濾器隨后將命令傳遞給解析器,解析器將命令從第一格式轉(zhuǎn)換成第三格式。解析器隨后在共享存儲上執(zhí)行該命令。
[0007]附圖簡述
[0008]參考以下附圖描述非限制性和非窮盡的實(shí)施例,其中:
[0009]圖1解說了根據(jù)本公開的一個或多個實(shí)施例的用于在多個虛擬機(jī)之間共享存儲的系統(tǒng);
[0010]圖2解說了根據(jù)本公開的一個或多個實(shí)施例的用于在多個虛擬機(jī)之間共享存儲的方法;
[0011]圖3解說了根據(jù)本公開的一個或多個實(shí)施例的用于對接收到的要在共享的存儲上執(zhí)行的命令進(jìn)行過濾的方法;
[0012]圖4是解說可以與本公開的一個或多個實(shí)施例一起使用的計算設(shè)備的示例物理組件的框圖;
[0013]圖5A和5B是可以與本公開的一個或多個實(shí)施例一起使用的移動計算設(shè)備的簡化框圖;以及
[0014]圖6是解說可以與本公開的一個或多個實(shí)施例一起使用的分布式計算系統(tǒng)的簡化框圖。
[0015]詳細(xì)描述
[0016]以下將參考形成本發(fā)明一部分并示出各具體示例性實(shí)施例的附圖更詳盡地描述各個實(shí)施例。然而,各實(shí)施例可以以許多不同的形式來實(shí)現(xiàn),并且不應(yīng)將其解釋為限制此處所闡述的各實(shí)施例;相反地,提供這些實(shí)施例以使得本公開變得透徹和完整,并且將這些實(shí)施例的范圍完全傳達(dá)給本領(lǐng)域普通技術(shù)人員。各實(shí)施例可按照方法、系統(tǒng)或設(shè)備來實(shí)施。因此,這些實(shí)施例可采用硬件實(shí)現(xiàn)形式、全軟件實(shí)現(xiàn)形式或者結(jié)合軟件和硬件方面的實(shí)現(xiàn)形式。因此,以下詳細(xì)描述并非是局限性的。
[0017]如以下將詳細(xì)闡述的,此處所描述的方法和系統(tǒng)使得計算環(huán)境中的多個虛擬機(jī)能夠連接到中央存儲設(shè)備、從其讀取數(shù)據(jù)、或?qū)?shù)據(jù)寫入其中。圖1解說了根據(jù)本公開的一個或多個實(shí)施例的用于在多個虛擬機(jī)中共享存儲的系統(tǒng)100。一個或多個實(shí)施例提出共享的存儲可以是一個或多個虛擬硬盤、物理硬盤中的一個或多個位置、或這兩者的組合。
[0018]在某些實(shí)施例中,虛擬機(jī)可被配置成使用塊存儲協(xié)議來存儲和訪問數(shù)據(jù)。由于虛擬機(jī)可能能夠訪問包括塊存儲的虛擬硬盤,虛擬機(jī)可被配置成通過執(zhí)行塊存儲操作來與其虛擬硬盤交互。這些操作可包括讀操作、寫操作、幾何操作、或其它小型計算機(jī)系統(tǒng)接口(SCSI)或互聯(lián)網(wǎng)小型計算機(jī)系統(tǒng)接口(ISCSI)命令。
[0019]然而,替代授權(quán)每個虛擬機(jī)直接訪問能夠由多個服務(wù)(諸如SAN)共享的塊存儲設(shè)備,此處所公開的一個或多個實(shí)施例提出虛擬機(jī)可訪問由虛擬硬盤文件所支持的虛擬硬盤,該虛擬硬盤文件能夠同時由其它虛擬機(jī)共享。在這樣的實(shí)施例中,每個虛擬機(jī)觀察該文件所支持的同一虛擬盤并與之交互。相應(yīng)地,每個塊存儲操作可能需要通過網(wǎng)絡(luò)從包含該虛擬機(jī)的物理主機(jī)傳送到中央存儲設(shè)備上的存儲。然而,為了確保這些同時發(fā)生的改動不彼此影響或沖突,各實(shí)施例提出塊命令通過文件系統(tǒng)或文件系統(tǒng)協(xié)議來傳送給中央存儲設(shè)備。具體來說,一個或多個塊存儲命令采用隧穿機(jī)制來傳遞給遠(yuǎn)程文件服務(wù)器以使得塊存儲命令能夠通過文件系統(tǒng)協(xié)議來傳遞。
[0020]參照圖1,系統(tǒng)100可包括多個節(jié)點(diǎn),每個節(jié)點(diǎn)具有形成虛擬機(jī)群集的一個或多個虛擬機(jī)。例如,如圖1中所示,節(jié)點(diǎn)A 110具有形成虛擬機(jī)群集的虛擬機(jī)A 111以及虛擬機(jī)B112。類似地,節(jié)點(diǎn)B 115具有形成虛擬機(jī)群集的虛擬機(jī)C 116以及虛擬機(jī)D 117。在某些實(shí)施例中,一個虛擬機(jī)(例如虛擬機(jī)A 111)可正在主動執(zhí)行和發(fā)送命令給遠(yuǎn)程文件服務(wù)器120,而另一虛擬機(jī)(例如虛擬機(jī)B 112)正擔(dān)當(dāng)備份。因此,如果虛擬機(jī)A 111將要故障,則虛擬機(jī)A 111的工作負(fù)載將故障轉(zhuǎn)移給虛擬機(jī)B 112,且虛擬機(jī)B 112將開始執(zhí)行必要的命令并且根據(jù)需要訪問遠(yuǎn)程文件服務(wù)器120。由于虛擬機(jī)B能夠訪問與虛擬機(jī)A相同的遠(yuǎn)程文件服務(wù)器,節(jié)點(diǎn)A 110不需要等待虛擬機(jī)A 111復(fù)位并重啟。因此,很少的(如果有的話)時間和資源被浪費(fèi)在等待虛擬機(jī)A 111回到在線上。
[0021]雖然圖1示出了兩個節(jié)點(diǎn)(節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115),但是設(shè)想了系統(tǒng)100可包括更少或更多個節(jié)點(diǎn)。另外,雖然圖1示出節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115運(yùn)行兩個虛擬機(jī),但是設(shè)想了每個節(jié)點(diǎn)可具有更少或更多個運(yùn)行在其上并形成群集的虛擬機(jī)。
[0022]在某些實(shí)施例中,節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115可以是服務(wù)器計算機(jī)。在其它實(shí)施例中,節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115可以是客戶端計算機(jī),諸如例如個人計算機(jī)、平板、膝上型計算機(jī)、智能電話、個人數(shù)字助理等。由此,在某些實(shí)施例中,節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115可以各自被配置為監(jiān)管程序(hypervisor)。也就是說,節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115可被配置成具有用來創(chuàng)建和監(jiān)視虛擬機(jī)的軟件、硬件或固件。由此,節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115可指的是主機(jī),而虛擬機(jī)A
111、虛擬機(jī)B 112、虛擬機(jī)C 116和虛擬機(jī)D 117被稱為客虛擬機(jī)。
[0023]在一個或多個實(shí)施例中,節(jié)點(diǎn)A110和節(jié)點(diǎn)B 115將每個虛擬機(jī)的操作系統(tǒng)呈現(xiàn)為虛擬操作平臺。另外,節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115管理每個操作系統(tǒng)的執(zhí)行。在某些實(shí)施例中,節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115是由華盛頓州雷蒙德市的微軟公司所分布的HYPER-V服務(wù)器。
[0024]如將要被討論的,本公開的各實(shí)施例描述了如何向虛擬機(jī)展示虛擬硬盤以及如何讀取和存儲由虛擬機(jī)在可跨虛擬機(jī)共享的虛擬硬盤文件中寫入的數(shù)據(jù)。例如,當(dāng)虛擬機(jī)(諸如例如虛擬機(jī)A 111)請求其盤上的一個塊時,從虛擬硬盤文件中的對應(yīng)塊中讀取該數(shù)據(jù)并將數(shù)據(jù)返回給虛擬機(jī)。類似地,如果虛擬機(jī)D 117請求在塊上寫入數(shù)據(jù),則該數(shù)據(jù)被傳送給虛擬硬盤文件。如將要被討論的,當(dāng)虛擬硬盤被共享時,替代使用物理主機(jī)上的虛擬硬盤解析器來裝載虛擬硬盤,在遠(yuǎn)程文件系統(tǒng)上打開針對該虛擬硬盤的文件句柄。這種方法的一個優(yōu)點(diǎn)在于虛擬機(jī)管理員可把虛擬盤當(dāng)成任何其它文件來對待、采用文件歷史、采用被表達(dá)成具有審計日志的訪問控制列表的許可、基于文件的備份工具等等。
[0025]另外,遠(yuǎn)程文件系統(tǒng)被配置成廣告其為遠(yuǎn)程文件系統(tǒng)上的虛擬硬盤使用塊協(xié)議(而不是基于文件的協(xié)議)的能力。塊命令通過文件句柄從虛擬機(jī)傳遞給遠(yuǎn)程文件系統(tǒng),而無需該命令在物理主機(jī)上被翻譯(這通常會發(fā)生在非共享虛擬硬盤場景中)。
[0026]各實(shí)施例還公開了裝載被存儲在遠(yuǎn)程文件系統(tǒng)上的共享的虛擬硬盤中的虛擬盤并且將塊命令傳遞給該虛擬盤。當(dāng)命令抵達(dá)位于例如遠(yuǎn)程文件系統(tǒng)上的虛擬硬盤解析器時,該虛擬硬盤解析器將該塊命令轉(zhuǎn)換成基于文件的操作,這實(shí)現(xiàn)了從虛擬硬盤文件中讀取數(shù)據(jù)或者將數(shù)據(jù)寫入虛擬硬盤文件中。在某些實(shí)施例中,過濾器追蹤關(guān)于哪些虛擬機(jī)具有寫入共享的虛擬硬盤的各區(qū)域的權(quán)限的信息。這些權(quán)限可由持久預(yù)留(諸如例如由SCS1-3 Persistent Reservat1ns)來定義。在特定實(shí)施例中,當(dāng)虛擬機(jī)從一個主機(jī)移動到另一主機(jī)時,這些權(quán)限(即預(yù)留)隨其一起移動。
[0027]參考回圖1,一個或多個實(shí)施例提出節(jié)點(diǎn)A110和節(jié)點(diǎn)B 115各自具有運(yùn)行在其上并形成虛擬機(jī)群集的多個虛擬機(jī)。在某些實(shí)施例中,每個虛擬機(jī)和虛擬機(jī)群集訪問存儲在遠(yuǎn)程文件服務(wù)器120上的中央存儲設(shè)備123。由于系統(tǒng)100中的每個虛擬機(jī)能夠訪問遠(yuǎn)程文件服務(wù)器120上的中央存儲設(shè)備123,因此每個虛擬機(jī)可不被授權(quán)訪問本地虛擬硬盤。然而,在一些實(shí)施例中,虛擬機(jī)群集中的一個或多個虛擬機(jī)可被提供或授權(quán)訪問本地虛擬硬盤以及訪問存儲在遠(yuǎn)程文件服務(wù)器120上的中央存儲設(shè)備123。
[0028]在某些實(shí)施例中,中央存儲設(shè)備123可包括多個存儲設(shè)備。在某些實(shí)施例中,中央存儲設(shè)備123可包括物理存儲、虛擬存儲、或以上的組合。在其中中央存儲設(shè)備123包括虛擬存儲的實(shí)現(xiàn)中,虛擬存儲由一個或多個物理盤支持。
[0029]如圖1中所示,遠(yuǎn)程文件服務(wù)器120還可包括過濾器121,該過濾器121被配置成接收、解包和挑選從節(jié)點(diǎn)A 110和節(jié)點(diǎn)B 115接收的一個或多個命令。在各實(shí)施例中,雖然過濾器被示為文件服務(wù)器120的一個組件,