但是設想了過濾器121可被集成到文件服務器的功能中。因此,文件服務器120自身將執(zhí)行以下關于過濾器121描述的功能,而過濾器121無需實際地作為系統(tǒng)100的一部分。
[0030]在某些實施例中,命令通過由文件系統(tǒng)協(xié)議建立的文件系統(tǒng)會話130從節(jié)點A110和節(jié)點B 115傳送。當命令已被解包和挑選時,過濾器121將命令發(fā)送給虛擬硬盤(VHD)解析器122,虛擬硬盤(VHD)解析器122被配置成將命令從塊命令轉(zhuǎn)換成在中央存儲設備123上執(zhí)行的基于文件的操作。
[0031]在某些實施例中,虛擬機(諸如例如節(jié)點A110上的虛擬機A 111)可發(fā)出命令。如以上所討論的,命令可以是塊存儲操作格式,諸如例如SCSI格式、ISCSI格式等。雖然給出了具體格式,但是設想了由虛擬機發(fā)出的命令可以是與那些具體列出的格式不同的格式。
[0032]一旦虛擬機A 110發(fā)出了命令,其或者由虛擬機A或者由其主機(節(jié)點A110)傳遞給本地解析器(例如,解析器代理A 113)。如圖1中所示,系統(tǒng)100中的每個節(jié)點具有本地解析器。例如,節(jié)點A 110具有解析器代理A 113,而節(jié)點B 115具有解析器代理B 118。雖然圖1示出每個虛擬機群集具有本地解析器,但是設想了不同節(jié)點上的虛擬機可包括虛擬機群集。
[0033]例如,虛擬機A 111、虛擬機B 112、虛擬機C 116以及虛擬機D 117可被配置成形成單個虛擬機群集,即使它們是由兩個不同節(jié)點主控的。在這類情況下,虛擬機群集可具有單個解析器(例如,解析器代理A 113),該解析器在每一個虛擬機嘗試訪問中央存儲設備123時能夠被虛擬機群集中的每一個虛擬機訪問。替代地或另外地,即使虛擬機群集由或者相同主機或者不同主機上的虛擬機組成,每個主機可仍然具有針對不共享的虛擬盤的本地解析器。針對共享的盤的解析器位于節(jié)點A 110和/或節(jié)點B 115上也是可能的,以使得主機能夠協(xié)調(diào)對于中央存儲設備123的訪問。
[0034]參考回圖1和以上的示例,一旦節(jié)點A110發(fā)出了命令,則該命令被傳遞給解析器代理A 113。解析器代理A 113分析該命令以確定節(jié)點A 110的布局。另外,解析器代理A 113將命令從塊存儲操作格式轉(zhuǎn)換成能夠通過由文件系統(tǒng)協(xié)議建立的文件系統(tǒng)會話130從節(jié)點A 110傳送給遠程文件服務器120的格式。在某些實施例中,文件系統(tǒng)協(xié)議是華盛頓州雷蒙德市的微軟公司的服務器消息塊協(xié)議(SMB)、網(wǎng)絡文件系統(tǒng)協(xié)議(NFS)協(xié)議、或本地協(xié)議的一個版本。
[0035]例如,節(jié)點A110可發(fā)出塊存儲操作并將該塊存儲操作傳遞給解析器代理A 113。在收到該塊存儲操作之后,解析器代理A 113自動將該塊存儲操作以該塊存儲操作能夠通過由文件系統(tǒng)協(xié)議(例如,SMB協(xié)議的一個版本)建立的文件系統(tǒng)會話130傳送給遠程文件服務器120的方式進行格式化。在某些實施例中,解析器代理A 113將該塊存儲操作以該塊存命令可通過文件系統(tǒng)會話130隧穿的方式進行格式化。
[0036]在其中使用SMB協(xié)議的一個版本的實施例中,可在解析器代理A113將塊存儲操作發(fā)送給遠程文件服務器120之前的任何時間建立該SMB會話。作為示例,在節(jié)點A 110和遠程文件服務器120之間的SMB會話的建立期間,可進行協(xié)商以指示節(jié)點A 110和遠程文件服務器120兩者都支持SMB會話內(nèi)的多個連接。這可包括協(xié)商SMB協(xié)議的一個版本。另外,節(jié)點A110和遠程文件服務器120還可確定關于節(jié)點A 110和遠程文件服務器120之間的各個接口和連接的信息。這包括連接或信道的類型以及每一連接或信道的速度。此外,節(jié)點A 110和遠程文件服務器120中的任意一個可根據(jù)類型和速度對接口和連接進行排序以確定排名高的接口。因此,節(jié)點A 110和遠程文件服務器120可進一步確定在建立附加信道以傳輸數(shù)據(jù)時哪些接口或信道應當被使用。
[0037]更具體地,一個或多個連接傳輸可在節(jié)點A 110和遠程文件服務器120之間可用。例如,節(jié)點A 110和遠程文件服務器120可通過各種傳輸(諸如以太網(wǎng)和W1-Fi)以及同一傳輸?shù)娜哂噙B接(如多個網(wǎng)絡接口卡(NIC))來連接。另外,一些連接傳輸可以支持諸如遠程直接存儲器訪問(RDMA)等影響一個連接傳輸?shù)乃俣瘸^另一個的能力。
[0038]參考回圖1,一旦塊存儲操作通過文件系統(tǒng)會話130隧穿,則該塊存儲操作在遠程文件服務器120上的過濾器121處被接收。在某些實施例中,過濾器121被配置成解包“隧穿的”塊存儲操作并將隧穿的塊存儲操作轉(zhuǎn)換成原始的塊存儲操作格式。在某些實施例中,過濾器121被配置成確定塊存儲操作是讀命令、寫命令、打開命令還是關閉命令。另外,過濾器121可被配置成確定該命令是要在遠程文件服務器120的物理文件上執(zhí)行還是在由文件支持的虛擬硬盤(例如,根據(jù)例如新技術文件系統(tǒng)(NTFS)格式格式化的盤)上執(zhí)行。
[0039]一旦過濾器121將塊存儲操作還原成其原始格式,過濾器121就將該塊存儲操作傳遞給VHD過濾器122 JHD過濾器122可隨后將該塊存儲操作格式化成能夠在中央存儲設備123上執(zhí)行的不同格式,諸如例如文件系統(tǒng)操作格式。一旦塊存儲操作已被轉(zhuǎn)換成文件系統(tǒng)操作格式,就在中央存儲設備123上執(zhí)行所請求的操作。
[0040]參考回過濾器121,在某些實施例中,過濾器121還可根據(jù)接收到的塊存儲操作(例如,讀、寫、打開、關閉等)將附加信息傳遞給VHD解析器。例如,如果接收到的塊存儲操作是讀命令,則過濾器121還可發(fā)送關于以下的信息:(i)共享的虛擬盤文件的句柄形式的身份;
(ii)從要從中讀取數(shù)據(jù)的虛擬盤的開頭起的偏移(以字節(jié)為單位要讀取的字節(jié)數(shù);(iv)要讀取的最小字節(jié)數(shù);以及(V)要用來接收所讀取的數(shù)據(jù)的緩沖器。類似地,如果接收到的塊存儲操作是寫命令,則過濾器121還可規(guī)定:(i)共享的虛擬盤文件的句柄形式的身份;(ii)從要將數(shù)據(jù)寫入其中的虛擬盤的開頭起的偏移(以字節(jié)為單位要寫入的字節(jié)數(shù);以及(iv)包含要被寫入的數(shù)據(jù)的緩沖器。
[0041]圖2解說了根據(jù)本公開的一個或多個實施例的用于在多個虛擬機之間共享存儲的方法200。在某些實施例中,方法200可被自動執(zhí)行和/或在命令通過系統(tǒng)(諸如例如系統(tǒng)100(圖1))的不同組件傳遞命令時在進行中地(on the fly)執(zhí)行。例如,節(jié)點A 110的虛擬機A111可發(fā)出命令(例如,塊存儲操作),針對該命令,當發(fā)出的命令在系統(tǒng)100中移動時可實現(xiàn)以下描述的操作。
[0042]方法200在解析器(例如,解析器代理A113(圖1))接收到由一個或多個虛擬機所發(fā)出的命令時開始。在某些實施例中,虛擬機可以是由被配置為監(jiān)管程序的主計算機所主控的虛擬機群集的一部分。在某些實施例中,命令可以是第一格式的,諸如例如塊存儲操作格式。在某些實施例中,塊存儲操作格式可包括讀命令、寫命令、打開命令、關閉命令以及SCSI 或 ISCSI 命令。
[0043]一旦解析器接收該命令,解析器將命令的格式從第一格式轉(zhuǎn)換220成第二格式。在某些實施例中,第二格式包括實現(xiàn)盤共享的命令,諸如例如SCS1-3PerSiStentReservat 1n命令。在各實施例中,SCSI_3Per si stent Reservat 1ns可被持久地存儲在諸如例如虛擬硬盤文件中。另外,第二格式可包括與發(fā)送該命令的虛擬機相關聯(lián)的標識符。相應地,虛擬機的持久預留可被維護,即使當虛擬機從一個物理主機移動到另一物理主機時。在某些實施例中,轉(zhuǎn)換過程發(fā)生以使得解析器能夠通過文件系統(tǒng)協(xié)議(諸如例如SMB協(xié)議的一個版本(例如,使用SMB文件句柄和/或SMB FSCTL碼))來發(fā)送命令。
[0044]在某些實施例中,從第一格式到第二格式的轉(zhuǎn)換可發(fā)生,因為文件系統(tǒng)協(xié)議不傳輸具有第一格式的數(shù)據(jù)。在其它實施例中,第一格式和第二格式之間的格式轉(zhuǎn)換發(fā)生以使得能夠在主機計算機和遠程文件服務器之間以采用文件系統(tǒng)協(xié)議的一個或多個特征的方式傳遞命令。
[0045]例如,在其中文件系統(tǒng)協(xié)議是SMB協(xié)議的一個版本的實現(xiàn)中,可使用SMB協(xié)議的能力將命令傳遞給遠程文件服務器(例如,遠程文件服務器120(圖1)),SMB協(xié)議的能力包括自動發(fā)現(xiàn)、認證、授權(quán)、帶寬聚合、對RDMA和TCP的支持、RDMA上的零復制等。在某些實施例中,命令從第一格式到第二格式的轉(zhuǎn)換包括用隧穿協(xié)議來準備命令以使得命令能夠通過文件系統(tǒng)協(xié)議會話隧穿到遠程服務器。
[0046]—旦命令已從第一格式轉(zhuǎn)換成第二格式,流程隨后前進到操作230,其中命令通過文件系統(tǒng)會話傳遞給遠程文件服務器。如以上所討論的,命令可通過將塊命令通過文件系統(tǒng)協(xié)議隧穿來通過文件系統(tǒng)協(xié)議會話傳遞給遠程文件服務器。
[0047]一旦命令已由遠程文件服務器接收,遠程文件服務器上的過濾器將該命令從第二格式轉(zhuǎn)換240回第一格式。例如,過濾器(過濾器121(圖1))可被配置成接收經(jīng)格式化的命令,并對經(jīng)格式化的命令解包和/或解碼。當完成了解包和/或解碼時,該命令將是與其被虛擬機發(fā)出時相同的格式。例如,如果命令是通過SMB協(xié)議隧穿的SCSI命令,則過濾器將在收到該命令之際提取該SCSI命令。
[0048]流程隨后前進到操作250,其中命令被從過濾器傳遞給解析器(例如VHD解析器122(圖1))并且從第一格式轉(zhuǎn)換成第三格式。在某些實施例中,第一格式、第二格式和第三格式全都是不同的格式。如所討論的,在某些實施例中,第一格式可以是SCSI命令,而第二格式可以是隧穿格式。類似地,第三格式可以是I/o請求包(IRP)格式。在某些實施例中,命令可被轉(zhuǎn)換成第三格式以便以更高效的速率來處理該命令。
[0049]