制(IOTCL)機制 來在內(nèi)核模式與用戶模式之間交換數(shù)據(jù)。作為另一替換方案,該示例體系結(jié)構(gòu)可以在內(nèi)核 模式中實現(xiàn)并行存儲代碼庫202。
[0037] 在軟件應(yīng)用發(fā)起文件系統(tǒng)操作時,文件系統(tǒng)驅(qū)動程序206將一個或多個輸入/輸 出(I/O)請求分組(IRP)傳遞給存儲設(shè)備驅(qū)動程序208該一個或多個分組被轉(zhuǎn)發(fā)給轉(zhuǎn)換器 組件110,轉(zhuǎn)換器組件110將文件系統(tǒng)操作轉(zhuǎn)換成一個或多個對應(yīng)的并行存儲命令。關(guān)于讀 /寫文件系統(tǒng)操作,轉(zhuǎn)換器組件110可以使用并行存儲代碼庫202來調(diào)用對合適的存儲節(jié)點 的相應(yīng)讀/寫命令。經(jīng)由存儲設(shè)備驅(qū)動程序208,轉(zhuǎn)換器組件110可將來自這樣的存儲節(jié) 點的任何響應(yīng)中繼到文件系統(tǒng)驅(qū)動程序206。例如,存儲設(shè)備驅(qū)動程序208可以在所有讀/ 寫命令成功完成之后傳遞文件系統(tǒng)操作的完成通知。
[0038] 該并行存儲體系結(jié)構(gòu)可以實現(xiàn)異步消息收發(fā)協(xié)議,以在存儲節(jié)點204、文件系統(tǒng)驅(qū) 動程序206、存儲設(shè)備驅(qū)動程序208以及轉(zhuǎn)換器組件110之間高效地交換數(shù)據(jù)。轉(zhuǎn)換器組 件110是多線程安全的,且通過并行地發(fā)出多個塊級讀/寫命令來最大化吞吐量。作為一 個選項,文件系統(tǒng)驅(qū)動程序206還可向轉(zhuǎn)換器組件110發(fā)出轉(zhuǎn)儲清除命令。轉(zhuǎn)儲清除命令 一般指令存儲設(shè)備驅(qū)動程序208和轉(zhuǎn)換器組件110在處理新操作之前完成任何未完成的輸 入/輸出操作。在各轉(zhuǎn)儲清除命令之間,轉(zhuǎn)換器組件110將多個輸入/輸出操作維持"在進 行中",但如果文件系統(tǒng)驅(qū)動程序206向重疊的字節(jié)范圍發(fā)出輸入/輸出操作,則轉(zhuǎn)換器組 件110可以將這些操作排序以維護可串行化性。
[0039] 根據(jù)一個示例實現(xiàn),經(jīng)由存儲設(shè)備驅(qū)動程序208,轉(zhuǎn)換器組件110可以禁用轉(zhuǎn)儲清 除(文件系統(tǒng))操作以改進性能。甚至在啟用這樣的轉(zhuǎn)儲清除操作的情況下,文件系統(tǒng)驅(qū) 動程序也仍然可在多個計算設(shè)備上的桌面軟件應(yīng)用發(fā)出多個同時I/O請求以訪問文件數(shù) 據(jù)時積極地預(yù)取數(shù)據(jù)。這些計算設(shè)備可包括臺式計算機、膝上型計算機、移動設(shè)備、平板,等 等。
[0040] 存儲節(jié)點204中的每一個可包括數(shù)據(jù)網(wǎng)絡(luò)適配器(例如,網(wǎng)絡(luò)接口卡,如10(十) GB/s NIC)和原始硬盤。存儲節(jié)點204(有時稱為專用域服務(wù)器)可以遠離臺式計算機或與 臺式計算機處于同一地點。每一域服務(wù)器可實例化為單個盤的邏輯網(wǎng)絡(luò)前端。具有多個盤 的機器可每個盤維護一個域服務(wù)器。存儲機制可將每一存儲節(jié)點配置為具有基本上等于或 大于每盤的可用存儲帶寬的網(wǎng)絡(luò)帶寬能力。如果例如SAS盤具有約120兆字節(jié)/秒(或約 1千兆比特/秒)的讀性能,則在一個實現(xiàn)中,向存儲節(jié)點提供至少1千兆比特/秒的網(wǎng)絡(luò) 帶寬。
[0041] 圖3是根據(jù)一個示例實現(xiàn)的用于虛擬存儲區(qū)的示例映射方案的表示。要理解,該 示例映射方案是本公開中描述的實施例所預(yù)想的但不受本公開所描述的實施例限制的多 個其他映射方案中的映射方案。該示例映射方案可被配置成將虛擬存儲區(qū)內(nèi)的字節(jié)偏移轉(zhuǎn) 換成存儲節(jié)點群地址空間內(nèi)的塊偏移。還要理解,虛擬硬盤構(gòu)成可在其上執(zhí)行并行化輸入/ 輸出操作的虛擬存儲區(qū)的一個示例。另外,該示例映射方案可被適用于其他虛擬存儲技術(shù)。
[0042] 如圖3所示,多個存儲節(jié)點可被配置成將與虛擬存儲區(qū)相關(guān)的文件數(shù)據(jù)保持在非 易失性存儲器中。文件數(shù)據(jù)可被劃分成多個塊,其中塊〇到塊11可表示其一部分。該多個 塊共同表示虛擬存儲區(qū),并且可作為邏輯字節(jié)序列來被尋址。該多個塊可被進一步劃分成 各組塊,其中每一組涉及虛擬存儲區(qū)內(nèi)的毗連地址空間。在每一組內(nèi),每一個塊被映射到存 儲節(jié)點群中的不同存儲節(jié)點中的特定位置(例如,邏輯地址或索引)。
[0043] 圖3所示的示例映射方案包括形成被配置成針對該多個塊中的塊0到塊11執(zhí)行 嵌套分拆的示例存儲節(jié)點群的存儲節(jié)點302、304、306以及308。響應(yīng)于輸入/輸出操作,該 示例存儲群可被配置成并行地寫/讀與四個塊的毗連序列相關(guān)聯(lián)的數(shù)據(jù)。該多個塊中的其 他塊可由其他存儲節(jié)點來分拆。根據(jù)一個示例實現(xiàn),該示例存儲節(jié)點群是其中每一存儲節(jié) 點群也包括四個存儲節(jié)點的多個存儲節(jié)點群(例如,在本文中,這樣的存儲節(jié)點群可被稱 為段)之一。
[0044] 如進一步示出的,示例第一組塊可包括包含塊0、塊1、塊2、以及塊3的毗連塊序 列,其中每一個塊映射到存儲節(jié)點中的相應(yīng)一個的第一位置,例如塊〇映射到存儲節(jié)點302 的第一位置,塊1映射到存儲節(jié)點304的第一位置,塊2映射到存儲節(jié)點306的第一位置,以 及塊3映射到存儲節(jié)點308的第一位置。與存儲節(jié)點相關(guān)聯(lián)的各軟件/硬件組件(例如, 圖1的存儲機制104)可以將每一個塊并行寫入每一存儲節(jié)點處的第一位置并且記錄對應(yīng) 的塊級地址。
[0045] 示例第二組塊可包括包含塊4、塊5、塊6以及塊7的毗連塊序列,其中每一個塊映 射到存儲節(jié)點302、304、306以及308中的相應(yīng)一個的第二位置。在將該示例第二組塊寫入 所映射的第二位置之后,針對這些塊中的每一個來記錄另一對應(yīng)的塊級地址。響應(yīng)于請求 該示例第二組塊的輸入/輸出操作,存儲節(jié)點302、304、306以及308可將塊4、塊5、塊6以 及塊7并行地分別傳送到與該虛擬存儲區(qū)相關(guān)聯(lián)的計算設(shè)備。
[0046] 塊級地址的示例實現(xiàn)可被表示為存儲節(jié)點標識符和塊標識符。例如,塊1可映射 到包括存儲節(jié)點304的GUID和存儲節(jié)點304內(nèi)的第一位置的索引號(例如,索引=零(0)) 的地址。塊2可映射到包括存儲節(jié)點306的⑶ID和(與塊1類似)該節(jié)點內(nèi)的第一位置的 索引號(例如,索引=零(〇))的地址。作為另一示例,塊4的塊級地址可包括存儲節(jié)點302 的GUID和該節(jié)點內(nèi)的第二位置的索引號(例如,索引=一(1))。作為又一示例,塊11的塊 級地址可包括存儲節(jié)點308的GUID和與最后位置相對應(yīng)的索引(例如,索引=二(2))。
[0047] 因為第一組塊被劃分在不同的存儲節(jié)點之間,所以存儲機制可從存儲節(jié)點302、存 儲節(jié)點304、存儲節(jié)點306以及存儲節(jié)點308并行地檢索每一對應(yīng)的塊,和/或以等于或大 于預(yù)定速率的數(shù)據(jù)傳輸率將第一組塊流傳輸?shù)接嬎阍O(shè)備。這樣的預(yù)定速率的示例可以是來 自本地存儲設(shè)備(諸如硬盤)的標準傳輸速率。預(yù)定速率可在某些條件下被調(diào)整,包括變 化的客戶需求、負載平衡、資源可用性,等等。
[0048] 在一個示例實施例中,虛擬存儲區(qū)在邏輯上被存儲在微軟BLOB (例如,與128位 GUID相關(guān)聯(lián)的任何長度的字節(jié)序列)中。在處理BLOB級輸入/輸出時,存儲機制可以將數(shù) 據(jù)作為域來讀/寫,其中每一個域可指的是BLOB內(nèi)預(yù)定義數(shù)量的字節(jié)(例如,范圍從八(8) MB到四(4)KB(4096字節(jié)))。每一個域可按以零(0)開始的順序次序來被索引,它也可用 作域定位符/標識符或其一部分。一個示例域定位符/標識符可被計算為BLOB GUID (例 如,128位BLOB⑶ID)與域標識符(例如,64位域號)的總和對域總數(shù)取模。因而,該示例 映射方案的合適的塊級地址可包括BLOB GUID、域標識符以及域內(nèi)的塊索引的某一數(shù)學組 合。如圖3所示,例如,塊4映射到使用至少存儲節(jié)點302的塊標識符和塊索引一(1)來生 成的塊級地址。
[0049] 映射方案的一個示例實現(xiàn)(在本文中它被稱為嵌套分拆)可以