用于在存儲(chǔ)服務(wù)器之間復(fù)制數(shù)據(jù)的技術(shù)的制作方法
【專(zhuān)利摘要】本發(fā)明描述了用于在存儲(chǔ)服務(wù)器之間復(fù)制數(shù)據(jù)的技術(shù)。公開(kāi)了用于在存儲(chǔ)服務(wù)器之間復(fù)制數(shù)據(jù)的示例。在某些示例中,耦合到客戶(hù)端設(shè)備或存儲(chǔ)服務(wù)器的網(wǎng)絡(luò)輸入/輸出(I/O)設(shè)備可以交換從客戶(hù)端設(shè)備接收到的與復(fù)制數(shù)據(jù)相關(guān)聯(lián)的遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)命令或RDMA完成命令。數(shù)據(jù)可以被復(fù)制到通過(guò)相應(yīng)的網(wǎng)絡(luò)通信鏈路彼此互連和/或互連到客戶(hù)端設(shè)備的多個(gè)存儲(chǔ)服務(wù)器。描述并要求保護(hù)其他示例。
【專(zhuān)利說(shuō)明】用于在存儲(chǔ)服務(wù)器之間復(fù)制數(shù)據(jù)的技術(shù)
【技術(shù)領(lǐng)域】
[0001] 此處所描述的示例一般涉及將數(shù)據(jù)從客戶(hù)端設(shè)備復(fù)制到多個(gè)存儲(chǔ)服務(wù)器。
【背景技術(shù)】
[0002] 對(duì)數(shù)據(jù)可靠性和可恢復(fù)性的典型解決方案可以是使用冗余獨(dú)立磁盤(pán)陣列 (redundant array of independent disk :RAID)。RAID 的實(shí)現(xiàn)可以在從簡(jiǎn)單鏡像到冗余 奇偶校驗(yàn)塊之間變動(dòng)。與存儲(chǔ)容量相關(guān)聯(lián)的成本持續(xù)下降。網(wǎng)絡(luò)訪問(wèn)時(shí)間或網(wǎng)絡(luò)帶寬能力 改善,以使得可以在與本地可訪問(wèn)存儲(chǔ)的時(shí)間相當(dāng)?shù)臅r(shí)間下使用網(wǎng)絡(luò)可訪問(wèn)存儲(chǔ)。由于較 低的成本和較大的網(wǎng)絡(luò)帶寬能力,諸如因特網(wǎng)公用數(shù)據(jù)中心(iroc)之類(lèi)的許多數(shù)據(jù)中心 使用多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)或存儲(chǔ)服務(wù)器來(lái)管理數(shù)據(jù)可靠性并且改善數(shù)據(jù)訪問(wèn)可縮放性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0003] 圖1示出了第一示例系統(tǒng)。
[0004] 圖2示出了示例完成隊(duì)列元素。
[0005] 圖3示出了第二示例系統(tǒng)。
[0006] 圖4示出了第三示例系統(tǒng)。
[0007] 圖5示出了第四示例系統(tǒng)。
[0008] 圖6示出了第五示例系統(tǒng)。
[0009] 圖7示出了第六示例系統(tǒng)。
[0010] 圖8示出了第七示例系統(tǒng)。
[0011] 圖9不出了第一設(shè)備的不例框圖。
[0012] 圖10示出第一邏輯流程的示例。
[0013] 圖11示出第一存儲(chǔ)介質(zhì)的示例。
[0014] 圖12不出了第一網(wǎng)絡(luò)輸入/輸出設(shè)備的不例。
[0015] 圖13示出了第二設(shè)備的示例框圖。
[0016] 圖14示出第二邏輯流程的示例。
[0017] 圖15示出了第二存儲(chǔ)介質(zhì)的示例。
[0018] 圖16不出了第二網(wǎng)絡(luò)輸入/輸出設(shè)備的不例。
【具體實(shí)施方式】
[0019] 如在本發(fā)明中設(shè)想的,數(shù)據(jù)中心可以使用多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)或存儲(chǔ)服務(wù)器來(lái)管理數(shù)據(jù) 可靠性,改善數(shù)據(jù)訪問(wèn)可縮放性。復(fù)制數(shù)據(jù)的多個(gè)存儲(chǔ)服務(wù)器可能部分地由于硬盤(pán)驅(qū)動(dòng)器 或固態(tài)驅(qū)動(dòng)器(SSD)的存儲(chǔ)容量擴(kuò)展,以使得各種RAID方案用來(lái)保護(hù)數(shù)據(jù)變得困難或不切 實(shí)際。例如,使用帶有分布式奇偶校驗(yàn)塊(parity block)的塊條帶(block stripping)的 RAID5方案可能具有長(zhǎng)得不能接受的重建時(shí)間,并且在從以前的錯(cuò)誤恢復(fù)時(shí)遇到不可恢復(fù) 的錯(cuò)誤的概率可能不再是可忽略的。另一種RAID方案,RAID6嘗試通過(guò)添加冗余奇偶校驗(yàn) 塊來(lái)解決RAID5的這些問(wèn)題。然而,添加冗余奇偶校驗(yàn)塊可能會(huì)顯著增大數(shù)據(jù)保護(hù)開(kāi)銷(xiāo)。
[0020] 在某些示例中,使用多個(gè)存儲(chǔ)服務(wù)器的方案可以使用每一存儲(chǔ)服務(wù)器作為類(lèi)似于 RAID方案中的硬盤(pán)或硬盤(pán)驅(qū)動(dòng)的冗余單元。對(duì)于這些多個(gè)存儲(chǔ)服務(wù)器方案,從客戶(hù)端設(shè)備 進(jìn)行數(shù)據(jù)復(fù)制可能是級(jí)聯(lián)的。換言之,客戶(hù)端設(shè)備可以向存儲(chǔ)服務(wù)器發(fā)出存儲(chǔ)器請(qǐng)求,然 后,存儲(chǔ)服務(wù)器將數(shù)據(jù)復(fù)制到其他存儲(chǔ)服務(wù)器(包括提供合適的糾錯(cuò)碼/校驗(yàn)和)。在一些 解決方案中,服務(wù)器在實(shí)際執(zhí)行復(fù)制之前確認(rèn)數(shù)據(jù)的寫(xiě)入/復(fù)制的完成。這可以避免來(lái)自 多個(gè)事務(wù)的等待時(shí)間/開(kāi)銷(xiāo)。然而,客戶(hù)端設(shè)備可能沒(méi)有數(shù)據(jù)成功地被復(fù)制到其他存儲(chǔ)服 務(wù)器的確認(rèn)。
[0021] 最近,存儲(chǔ)服務(wù)器開(kāi)始包括具有試圖最小化操作系統(tǒng)和主機(jī)處理器參與的增強(qiáng)能 力的存儲(chǔ)控制器和網(wǎng)絡(luò)(NW)輸入/輸出(I/O)設(shè)備。例如,諸如命令提交和命令完成隊(duì)列 之類(lèi)的硬件元件可以被存儲(chǔ)服務(wù)器的NW I/O設(shè)備和存儲(chǔ)控制器用來(lái)允許客戶(hù)端或主機(jī)設(shè) 備遠(yuǎn)程通過(guò)被稱(chēng)為遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)的過(guò)程來(lái)訪問(wèn)存儲(chǔ)器。
[0022] 在這些遠(yuǎn)程可訪問(wèn)存儲(chǔ)服務(wù)器上維護(hù)的存儲(chǔ)控制器還被設(shè)計(jì)成可以遵循可與 RDMA -起良好工作的相對(duì)新的互連通信協(xié)議來(lái)操作。進(jìn)一步地,這些存儲(chǔ)控制器可以控制 對(duì)硬盤(pán)驅(qū)動(dòng)器(HDD)或固態(tài)驅(qū)動(dòng)器(SSD)的訪問(wèn)。SSD可以包括,但不僅限于,各種類(lèi)型 的非易失性存儲(chǔ)器,諸如3維交叉點(diǎn)存儲(chǔ)器、閃存、鐵電存儲(chǔ)器、硅氧化物氮化物氧化物硅 (S0N0S)存儲(chǔ)器、聚合物存儲(chǔ)器、納米線、鐵電晶體管隨機(jī)存取存儲(chǔ)器(FeTRAM或FeRAM)、納 米線或電可擦可編程只讀存儲(chǔ)器(EEPR0M)。在某些示例中,對(duì)HDD或SSD的訪問(wèn)可以包括 使用行業(yè)標(biāo)準(zhǔn)或規(guī)范(包括后代或變體)(諸如2010年11月發(fā)布的外圍組件互連(PCI) Express (快速)基本規(guī)范("PCI Express"或"PCIe"))中所描述的互連通信協(xié)議,和/ 或使用各種基于PCIe的SSD的控制器接口(諸如2012年10月發(fā)布的非易失性存儲(chǔ)器 Express(nvme)規(guī)范修訂版 1. 1)。
[0023] 遵循NVMe規(guī)范操作的存儲(chǔ)控制器("NVMe控制器")在允許遠(yuǎn)程客戶(hù)端或主機(jī) 設(shè)備訪問(wèn)諸如SSD之類(lèi)的存儲(chǔ)設(shè)備時(shí)可以能夠最小化操作系統(tǒng)和主機(jī)處理器參與,并使用 這些存儲(chǔ)設(shè)備來(lái)支持可靠性、可用性和可維修性(RAS)解決方案。這些類(lèi)型的遠(yuǎn)程可訪問(wèn) NVMe受控存儲(chǔ)器設(shè)備,在與高速網(wǎng)絡(luò)連接(例如,10千兆每秒鐘(Gbps)或更高)耦合時(shí), 可以被高效地用于支持包括多個(gè)存儲(chǔ)服務(wù)器的RAS解決方案。然而,如上文所提及的,僅僅 級(jí)聯(lián)客戶(hù)端設(shè)備和存儲(chǔ)服務(wù)器之間的數(shù)據(jù)復(fù)制可能會(huì)導(dǎo)致沒(méi)有數(shù)據(jù)在存儲(chǔ)服務(wù)器之間被 成功地復(fù)制的明顯指示。正是針對(duì)這些和其它挑戰(zhàn)才需要此處所描述的示例。
[0024] 在某些示例中,可以實(shí)現(xiàn)在存儲(chǔ)服務(wù)器之間復(fù)制數(shù)據(jù)的技術(shù)。對(duì)于這些示例,技術(shù) 可以包括在耦合到客戶(hù)端設(shè)備的NW I/O設(shè)備處發(fā)送將用于復(fù)制的數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ)服 務(wù)器的RDMA命令消息??梢酝ㄟ^(guò)一個(gè)或多個(gè)存儲(chǔ)服務(wù)器和客戶(hù)端設(shè)備之間的至少一個(gè)網(wǎng) 絡(luò)連接,將RDMA命令消息發(fā)送到多個(gè)存儲(chǔ)服務(wù)器之中的一個(gè)或多個(gè)存儲(chǔ)服務(wù)器。此外,對(duì) 于這些示例,還可以從所述一個(gè)或多個(gè)存儲(chǔ)服務(wù)器中接收一個(gè)或多個(gè)RDMA命令完成消息, 所述完成消息用于指示所述數(shù)據(jù)在所述多個(gè)存儲(chǔ)服務(wù)器之中的至少第一存儲(chǔ)服務(wù)器和第 二存儲(chǔ)服務(wù)器之間的復(fù)制。
[0025] 根據(jù)某些其他示例,技術(shù)可以包括在耦合到第一存儲(chǔ)服務(wù)器的NW I/O設(shè)備中,通 過(guò)第一網(wǎng)絡(luò)連接,從遠(yuǎn)程客戶(hù)端接收第一 RDMA命令消息。對(duì)于這些其他示例,第一 RDMA命 令消息可以與在由第一存儲(chǔ)服務(wù)器中維護(hù)的第一 NVMe控制器控制的第一存儲(chǔ)設(shè)備處存儲(chǔ) 數(shù)據(jù)相關(guān)聯(lián)。然后,可以將所述第一 RDM命令消息轉(zhuǎn)發(fā)到所述第一 NVMe控制器以導(dǎo)致第一 NVMe控制器響應(yīng)于RDMA命令消息而從遠(yuǎn)程客戶(hù)端獲取數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)到第一存儲(chǔ) 設(shè)備中。然后,可以將RDMA命令完成消息從所述第一 NVMe控制器轉(zhuǎn)發(fā)到所述遠(yuǎn)程客戶(hù)端 以指示數(shù)據(jù)的存儲(chǔ)。這些其他示例也可以包括通過(guò)第二網(wǎng)絡(luò)連接,從第二存儲(chǔ)服務(wù)器接收 第二RDMA命令消息。第二RDMA命令消息可以與復(fù)制存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)相關(guān)聯(lián)。 然后,可以將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器。然后,第一 NVMe控制器可以導(dǎo) 致存儲(chǔ)在第一存儲(chǔ)設(shè)備上的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取,以使第二存儲(chǔ)服務(wù)器能夠通過(guò) 將數(shù)據(jù)存儲(chǔ)到由在第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備來(lái)復(fù)制 數(shù)據(jù)。
[0026] 圖1示出了第一示例系統(tǒng)。如圖1所示,第一示例系統(tǒng)包括具有通過(guò)網(wǎng)絡(luò)50通信 地耦合到服務(wù)器20的客戶(hù)端10的系統(tǒng)100。根據(jù)某些示例,術(shù)語(yǔ)"主機(jī)計(jì)算機(jī)"、"主機(jī)設(shè) 備"、"主機(jī)"、"客戶(hù)端設(shè)備"、"客戶(hù)端"和"客戶(hù)端節(jié)點(diǎn)"可以可互換地使用,并可以表示,例 如但不限于:一個(gè)或多個(gè)終端站、移動(dòng)因特網(wǎng)設(shè)備、智能電話(huà)、媒體設(shè)備、輸入/輸出(I/O) 設(shè)備、平板電腦、電器、中間站、網(wǎng)絡(luò)接口、客戶(hù)端、和/或其一些部分。此外,在某些示例中, 術(shù)語(yǔ)"服務(wù)器"、"存儲(chǔ)服務(wù)器"、"服務(wù)器節(jié)點(diǎn)"、"復(fù)制服務(wù)器"、"存儲(chǔ)節(jié)點(diǎn)",或"遠(yuǎn)程存儲(chǔ)服 務(wù)器"可以可互換地使用,并可以表示,例如但不限于客戶(hù)端設(shè)備遠(yuǎn)程可訪問(wèn)的(例如,通過(guò) 網(wǎng)絡(luò)連接)的服務(wù)器。雖然客戶(hù)端10、服務(wù)器20以及網(wǎng)絡(luò)50將以單數(shù)引用的,但是應(yīng)該理 解,每一這樣的相應(yīng)的組件都可以包括多個(gè)這樣的相應(yīng)的組件,而不會(huì)偏離這些示例。
[0027] 根據(jù)某些示例,"網(wǎng)絡(luò)"可以是或包括任何機(jī)構(gòu)、工具、模態(tài)和/或其部分,其至少部 分地準(zhǔn)許、便于和/或允許兩個(gè)或更多個(gè)實(shí)體通信地耦合到一起。也在某些示例中,如果第 一實(shí)體能夠向第二實(shí)體傳輸和/或從第二實(shí)體接收一個(gè)或多個(gè)命令和/或數(shù)據(jù),則第一實(shí) 體可以"通信地耦合"到第二實(shí)體。此外,數(shù)據(jù)和信息還以可互換地使用,并可以是或包括 一個(gè)或多個(gè)命令(例如,一個(gè)或多個(gè)程序指令),和/或一個(gè)或多個(gè)這樣的命令可以是或包 括數(shù)據(jù)和/或信息。此外,對(duì)于這些示例,"指令"可包括數(shù)據(jù)和/或一個(gè)或多個(gè)命令。
[0028] 客戶(hù)端10可以包括此處被稱(chēng)為網(wǎng)絡(luò)(NW) I/O設(shè)備106的遠(yuǎn)程直接存儲(chǔ)器訪問(wèn) (RDMA)啟用的網(wǎng)絡(luò)接口控制器(RNIC)和/或一個(gè)或多個(gè)(以及在圖1所示出的示例中,多 個(gè))緩沖器13。
[0029] 如圖1所示,服務(wù)器20可以包括一個(gè)或多個(gè)集成電路(1C)芯片180、存儲(chǔ)器21, 和/或存儲(chǔ)150。一個(gè)或多個(gè)芯片180可以具有可以包括NW I/O設(shè)備108、可管理性模塊 109或NVMe控制器112的電路118。雖然在圖1中未示出,但是,在某些示例中,NW I/O設(shè) 備108和/或NVMe控制器112可以分別地是耦合到服務(wù)器20并包括如下面進(jìn)一步描述的 電路的可附連設(shè)備。
[0030] 也如圖1所示,一個(gè)或多個(gè)芯片180可被整合到一個(gè)或多個(gè)多核主機(jī)處理器(HP) 和/或中央處理單元(CPU) 12內(nèi)。盡管在圖中未示出,然而,服務(wù)器20也可包括一個(gè)或多個(gè) 芯片組或設(shè)備,以包括,但不僅限于,存儲(chǔ)器或輸入/輸出控制器電路)。NW I/O設(shè)備108、 NVMe控制器112,和/或HP/CPU12可以能夠相互進(jìn)行通信。另外,NW I/O設(shè)備108、NVMe 控制器112、可管理性模塊109和/或HP/CPU12可以能夠通過(guò)一個(gè)或多個(gè)這樣的芯片組,訪 問(wèn)服務(wù)器20的一個(gè)或多個(gè)其他組件(諸如存儲(chǔ)器21和/或存儲(chǔ)150)和/或與它們進(jìn)行 通信。在某些示例中,客戶(hù)端10和/或NW I/O設(shè)備106可以遠(yuǎn)離(例如,在地理位置上遠(yuǎn) 離)服務(wù)器20和/或NW I/O設(shè)備108。
[0031] 根據(jù)某些示例,"電路"可包括例如單個(gè)或任意組合形式的模擬電路、數(shù)字電路、硬 連線電路、可編程電路、協(xié)處理器電路、狀態(tài)機(jī)電路和/或可包括程序指令的存儲(chǔ)器,該程 序指令可由可編程電路執(zhí)行。也在某些示例中,處理器、HP、CPU、處理器核(PC)、核和控制 器中的每一個(gè)都可以包括能夠執(zhí)行一個(gè)或多個(gè)算術(shù)和/或邏輯操作和/或執(zhí)行一個(gè)或多個(gè) 指令的相應(yīng)的電路。集成電路芯片可以包括一個(gè)或多個(gè)微電子器件、襯底,和/或管芯。雖 然在圖1中未示出,但是,服務(wù)器20可以具有圖形用戶(hù)界面系統(tǒng),該系統(tǒng)可以包括,例如,相 應(yīng)的鍵盤(pán)、指示設(shè)備以及可以允許個(gè)人用戶(hù)向服務(wù)器20和/或系統(tǒng)100輸入命令以及監(jiān)測(cè) 服務(wù)器20和/或系統(tǒng)100的操作的顯示系統(tǒng)。此外,存儲(chǔ)器還可以包括下列類(lèi)型的存儲(chǔ)器 中的一種或多種:半導(dǎo)體固件存儲(chǔ)器、可編程存儲(chǔ)器、非易失性存儲(chǔ)器、只讀存儲(chǔ)器、電可編 程存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器、閃存、磁盤(pán)存儲(chǔ)器、光盤(pán)存儲(chǔ)器和/或其他或未來(lái)開(kāi)發(fā)的計(jì)算 機(jī)可讀和/或可寫(xiě)存儲(chǔ)器。
[0032] 在某些示例中,存儲(chǔ)150可以包括大容量存儲(chǔ)156。對(duì)于這些示例,存儲(chǔ)150可以 包括一個(gè)或多個(gè)設(shè)備,可以分別向其中存儲(chǔ)數(shù)據(jù)和/或從其中檢索數(shù)據(jù)。此外,對(duì)于這些示 例,大容量存儲(chǔ)還可以包括能夠?qū)?shù)據(jù)進(jìn)行非易失性存儲(chǔ)的存儲(chǔ)。例如,大容量存儲(chǔ)156可 包括但不限于一個(gè)或多個(gè)非易失性電機(jī)械、磁、光學(xué)和/或半導(dǎo)體存儲(chǔ)設(shè)備。這些設(shè)備可以 包括硬盤(pán)驅(qū)動(dòng)器(HDD)或固態(tài)驅(qū)動(dòng)器(SSD)。SSD可以具有非易失性存儲(chǔ)器,諸如3維交叉 點(diǎn)存儲(chǔ)器、閃存、鐵電存儲(chǔ)器、硅氧化物氮化物氧化物硅(S0N0S)存儲(chǔ)器、聚合物存儲(chǔ)器、納 米線、鐵電晶體管隨機(jī)存取存儲(chǔ)器(FeTRAM或FeRAM)、納米線或電可擦可編程只讀存儲(chǔ)器 (EEPR0M)。
[0033] 根據(jù)某些示例,可管理性模塊109、NVMe控制器112、存儲(chǔ)150或大容量存儲(chǔ)156可 以能夠遵循PCIe規(guī)范和/或NVMe規(guī)范操作。
[0034] 一個(gè)或多個(gè)機(jī)器可讀程序指令可以存儲(chǔ)在存儲(chǔ)器21中。在服務(wù)器20的操作中, 這些機(jī)器可讀指令可以由一個(gè)或多個(gè)主機(jī)處理器12、NW I/O設(shè)備108,和/或NVMe控制器 112來(lái)訪問(wèn)和執(zhí)行。當(dāng)被一個(gè)或多個(gè)HP 12執(zhí)行時(shí),這些一個(gè)或多個(gè)機(jī)器可讀指令可以導(dǎo) 致一個(gè)或多個(gè)操作系統(tǒng)環(huán)境(0SE) 31由一個(gè)或多個(gè)HP12執(zhí)行,并變成駐留在存儲(chǔ)器21中。 此外,當(dāng)這些機(jī)器可讀指令由NW I/O設(shè)備108和/或NVMe控制器112執(zhí)行時(shí),這一個(gè)或多 個(gè)指令可以導(dǎo)致NVMe控制器112的一個(gè)或多個(gè)命令接口、一個(gè)或多個(gè)門(mén)鈴(doorbell) 192、 一個(gè)或多個(gè)指針202、一個(gè)或多個(gè)代理194、一個(gè)或多個(gè)完成隊(duì)列124,和/或一個(gè)或多個(gè)提 交隊(duì)列126被建立和/或由NW I/O設(shè)備108和/或NVMe控制器112執(zhí)行,和/或變成駐 留在存儲(chǔ)器21中。
[0035] 根據(jù)某些示例,一個(gè)或多個(gè)0SE32可以包括一個(gè)或多個(gè)操作系統(tǒng)(0S) 31和/或一 個(gè)或多個(gè)NW I/O設(shè)備和/或NVMe控制器驅(qū)動(dòng)器33。這一個(gè)或多個(gè)驅(qū)動(dòng)器33可以與一個(gè) 或多個(gè)0S 31相互不同。另選地或另外地,在不偏離這些示例的情況下,一個(gè)或多個(gè)0S 32 和/或驅(qū)動(dòng)器33的一個(gè)或多個(gè)相應(yīng)的部分可以相互不同,和/或可以包括在彼此中。同樣, 在不偏離這些示例的情況下,電路118、NW I/O設(shè)備108、可管理性模塊109和/或NVMe控 制器112可以不同于一個(gè)或多個(gè)未示出的芯片組和/或HP12,或者可另選地,可以被包括 在一個(gè)或多個(gè)未示出的芯片組和/或HP12中。此外,在不偏離這些示例的情況下,存儲(chǔ)器 21的一個(gè)或多個(gè)部分可以被包括在或維護(hù)在NW I/O設(shè)備1〇8、可管理性模塊109、NVMe控 制器 112、電路 118、HP 12,和 / 或 IC 180。
[0036] 在某些示例中,實(shí)體的一部分或子集可以包括實(shí)體的全部或少于實(shí)體的全部。同 時(shí),對(duì)于這些示例,進(jìn)程、線程、守護(hù)進(jìn)程(daemon)、程序、驅(qū)動(dòng)器、操作系統(tǒng)、應(yīng)用程序、內(nèi)核 和/或虛擬機(jī)監(jiān)視器中的每一個(gè)都可以(1)包括,和/或(2)導(dǎo)致和/或來(lái)源于,一個(gè)或多 個(gè)操作和/或程序指令的執(zhí)行。
[0037] 根據(jù)某些示例,命令接口可以至少部分地促進(jìn),允許,和/或?qū)崿F(xiàn)數(shù)據(jù)和/或一個(gè) 或多個(gè)命令的交換、傳輸,和/或接收。對(duì)于這些示例,隊(duì)列、緩沖器和/或門(mén)鈴可以是存儲(chǔ) 器中可以至少臨時(shí)地存儲(chǔ)數(shù)據(jù)和/或一個(gè)或多個(gè)命令的一個(gè)或多個(gè)位置(例如,由一個(gè)或 多個(gè)地址指定的和/或指出的)。此外,隊(duì)列元素還可以包括要被存儲(chǔ)和/或存儲(chǔ)在一個(gè)或 多個(gè)隊(duì)列中的數(shù)據(jù)和/或一個(gè)或多個(gè)命令,諸如,例如,一個(gè)或多個(gè)描述符和/或一個(gè)或多 個(gè)命令。另外,對(duì)于這些示例,指針可以指示,尋址,和/或指定存儲(chǔ)器中的一個(gè)或多個(gè)位置 和/或一個(gè)或多個(gè)項(xiàng)。
[0038] 在某些示例中,NW I/O設(shè)備106和NW I/O設(shè)備108可以通過(guò)網(wǎng)絡(luò)50,根據(jù)一個(gè) 或多個(gè)協(xié)議交換數(shù)據(jù)和/或命令,該一個(gè)或多個(gè)協(xié)議可以符合和/或兼容于RDMA協(xié)議,諸 如因特網(wǎng)廣域RDMA協(xié)議(iWARP)、Infiniband(無(wú)限帶:IB)協(xié)議、以太網(wǎng)協(xié)議、傳輸控制協(xié) 議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議和/或匯聚以太網(wǎng)上RDMA(RDMA over converged Ethernet : RoCE)協(xié)議。例如,iWARP協(xié)議可以符合和/或兼容于Recio等人所著的"An RDMA Protocol Specification (RDMA 協(xié)議規(guī)范)"(因特網(wǎng)草案規(guī)范(Internet Draft Specification),,互 聯(lián)網(wǎng)工程任務(wù)組(IETF),2002年10月21日)。還例如,以太網(wǎng)協(xié)議可以符合和/或兼容 于2008年12月26日電氣與電子工程師學(xué)會(huì),Inc. (IEEE)標(biāo)準(zhǔn)802. 3-2008。另外,例如, TCP/IP協(xié)議可以符合和/或兼容于在1981年9月發(fā)布的因特網(wǎng)工程任務(wù)組(IETF)征求 意見(jiàn)資料(RFC) 791和793中所描述的協(xié)議。此外,IB協(xié)議還可以符合和/或兼容于2012 年11月發(fā)布的InfinibandTM體系結(jié)構(gòu)規(guī)范,第2卷版本1. 3。另外,例如,RoCE協(xié)議可以符 合和/或兼容于2010年4月發(fā)布的Infiniband架構(gòu)規(guī)范的增補(bǔ),Vol. 1,Rel. 1.2. 1,附錄 A16 :"匯聚以太網(wǎng)上RDMA (RoCE) "。許多不同的,額外的,和/或其他協(xié)議可以用于這樣的 數(shù)據(jù)和/或命令交換,而不會(huì)偏離這些示例(例如,如上所述的,相關(guān)的,和/或其他協(xié)議的 以前的和/或以后開(kāi)發(fā)的版本)。
[0039] 根據(jù)某些示例,電路118可以允許和/或促進(jìn)NW 1/0設(shè)備106通過(guò)NW 1/0設(shè)備 108對(duì)一個(gè)或多個(gè)命令接口 110的訪問(wèn)。例如,電路118可以允許和/或促進(jìn)NW 1/0設(shè)備 106能夠以獨(dú)立于服務(wù)器20中的0SE32的方式訪問(wèn)一個(gè)或多個(gè)命令接口 110。此訪問(wèn)可以 包括,例如,將至少一個(gè)隊(duì)列元素(例如,一個(gè)或多個(gè)隊(duì)列元素(QE) 116)寫(xiě)入到一個(gè)或多個(gè) 命令接口 110中的一個(gè)或多個(gè)提交隊(duì)列114。這可以會(huì)導(dǎo)致NW 1/0設(shè)備108將命令轉(zhuǎn)發(fā)到 NVMe控制器112以執(zhí)行涉及與NVMe控制器112相關(guān)聯(lián)的存儲(chǔ)150和/或大容量存儲(chǔ)156 的一個(gè)或多個(gè)操作。NVMe控制器112可以響應(yīng)于一個(gè)或多個(gè)隊(duì)列元素116 (例如,在一個(gè)或 多個(gè)隊(duì)列元素116被寫(xiě)入到一個(gè)或多個(gè)提交隊(duì)列114然后由NW 1/0設(shè)備108轉(zhuǎn)發(fā)之后,并 響應(yīng)于此)執(zhí)行這些一個(gè)或多個(gè)操作。涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的這一個(gè)或多 個(gè)操作可以包括涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)寫(xiě)入操作和/或一個(gè)或 多個(gè)讀取操作。對(duì)于這些示例,戶(hù)端10由此能夠通過(guò)由NVMe控制器112執(zhí)行的一個(gè)或多 個(gè)讀取操作和/或一個(gè)或多個(gè)寫(xiě)入操作訪問(wèn)存儲(chǔ)150和/或大容量存儲(chǔ)156。
[0040] 作為示例,在系統(tǒng)100的操作中,客戶(hù)端10和/或NW I/O設(shè)備106可以向服務(wù) 器20認(rèn)證客戶(hù)端10和/或NW I/O設(shè)備106和/或NW I/O設(shè)備108處的邏輯和/或特 征。這可能會(huì)導(dǎo)致客戶(hù)端10和/或NW I/O設(shè)備106被給予訪問(wèn)在服務(wù)器20的元件中維 護(hù)的或由該元件控制的設(shè)備的權(quán)限(例如,通過(guò)NW I/O設(shè)備108)。與此同時(shí),在此之后或 之前,NVMe控制器112、一個(gè)或多個(gè)代理194,和/或OSE32可以在存儲(chǔ)器21中生成、建立, 和/或維持一個(gè)或多個(gè)接口 110和/或一個(gè)或多個(gè)指示符181。一個(gè)或多個(gè)接口 110和/ 或指示符181可以指出一個(gè)或多個(gè)接口 110和/或其組件可以位于存儲(chǔ)器21中的什么位 置(例如,一個(gè)或多個(gè)位置)。例如,一個(gè)或多個(gè)指示符181可以指示存儲(chǔ)器21中的一個(gè)或 多個(gè)提交隊(duì)列114、一個(gè)或多個(gè)完成隊(duì)列120、一個(gè)或多個(gè)門(mén)鈴170,和/或一個(gè)或多個(gè)緩沖 器130A. ..130N可能所在的一個(gè)或多個(gè)位置。NW I/O設(shè)備108可以通過(guò)網(wǎng)絡(luò)50向NW 1/ 〇設(shè)備106提供一個(gè)或多個(gè)指示符181。此后,NW I/O設(shè)備106可以使用一個(gè)或多個(gè)指示 符181中的一個(gè)或多個(gè)來(lái)訪問(wèn)一個(gè)或多個(gè)命令接口 110和/或一個(gè)或多個(gè)命令接口 110的 一個(gè)或多個(gè)組件。一個(gè)或多個(gè)指示符181可以是或包括存儲(chǔ)器21中的一個(gè)或多個(gè)區(qū)域的 一個(gè)或多個(gè)句柄(例如,被指派給事務(wù)上下文),諸如,在此示例中,可符合和/或可兼容于 RDMA(例如,iWARP、IB、R〇CE)協(xié)議的一個(gè)或多個(gè)服務(wù)標(biāo)記(STag)。在某些示例中,存儲(chǔ)器 21中的一個(gè)或多個(gè)區(qū)域可以被包括在維護(hù)的一個(gè)或多個(gè)緩沖器中,以促進(jìn)客戶(hù)端1〇對(duì)存 儲(chǔ)150或大容量存儲(chǔ)156的遠(yuǎn)程訪問(wèn)。
[0041] 在接收一個(gè)或多個(gè)指示符181之后,客戶(hù)端10和/或NW I/O設(shè)備106可以通過(guò) 網(wǎng)絡(luò)50以及NVMe控制器112的NW I/O設(shè)備108以繞過(guò)和/或獨(dú)立于0SE32的參與的方 式,向服務(wù)器20發(fā)出一個(gè)或多個(gè)命令105。一個(gè)或多個(gè)命令105可以命令NVMe控制器112 執(zhí)行涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)操作。
[0042] 根據(jù)某些示例,一個(gè)或多個(gè)命令105可以符合和/或兼容于RDMA(例如,iWARP、 IB、RoCE)協(xié)議。一個(gè)或多個(gè)命令105可以包括和/或指定可以實(shí)現(xiàn)和/或指出涉及存儲(chǔ) 150和/或大容量存儲(chǔ)156的正在被命令的一個(gè)或多個(gè)操作的一個(gè)或多個(gè)隊(duì)列元素116。雖 然在圖1中未示出,一個(gè)或多個(gè)命令105可以包括,指定,和/或指示指示符181中的一個(gè) 或多個(gè),這些指示符可以指示一個(gè)或多個(gè)提交隊(duì)列114中的一個(gè)或多個(gè)位置作為一個(gè)或多 個(gè)隊(duì)列元素116的一個(gè)或多個(gè)預(yù)期目的地。
[0043] 在某些示例中,一個(gè)或多個(gè)隊(duì)列元素116可以導(dǎo)致NW I/O設(shè)備108轉(zhuǎn)發(fā)讓NVMe控 制器112執(zhí)行涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)寫(xiě)入操作的命令。因此, 作為NW I/O設(shè)備108向NVMe控制器112轉(zhuǎn)發(fā)一個(gè)或多個(gè)隊(duì)列元素116的結(jié)果,一個(gè)或多 個(gè)命令105還可以包括和/或指定數(shù)據(jù)199將被寫(xiě)入存儲(chǔ)150和/或大容量存儲(chǔ)156。一 個(gè)或多個(gè)命令105可以包括,指定,和/或指示指示符志181中的一個(gè)或多個(gè),這些指示符 可以指示客戶(hù)端10的一個(gè)或多個(gè)緩沖器(例如,緩沖器13)中數(shù)據(jù)199將被(至少臨時(shí)) 寫(xiě)入到的一個(gè)或多個(gè)位置
[0044] 在某些示例中,響應(yīng)于接收到一個(gè)或多個(gè)命令105, NW I/O設(shè)備108可以(例如, 根據(jù)RDMA(例如,iWARP、IB、RoCE)協(xié)議和/或以繞過(guò)和/或獨(dú)立于0SE32的方式),以由一 個(gè)或多個(gè)命令105命令的方式,將一個(gè)或多個(gè)隊(duì)列元素116和數(shù)據(jù)199直接分別寫(xiě)入到一 個(gè)或多個(gè)提交隊(duì)列114和一個(gè)或多個(gè)緩沖器130A。如此,事實(shí)上,通過(guò)向NW I/O設(shè)備108 發(fā)出一個(gè)或多個(gè)命令105, NW I/O設(shè)備106可以將一個(gè)或多個(gè)隊(duì)列元素116和數(shù)據(jù)199分 別寫(xiě)入到一個(gè)或多個(gè)提交隊(duì)列114和一個(gè)或多個(gè)緩沖器130A。
[0045] 一個(gè)或多個(gè)命令105還可以包括和/或指定一個(gè)或多個(gè)值201以及一個(gè)或多個(gè)指 示符181,這些指示符可以指示一個(gè)或多個(gè)門(mén)鈴170中一個(gè)或多個(gè)值201可以被寫(xiě)入到的一 個(gè)或多個(gè)位置。響應(yīng)于一個(gè)或多個(gè)命令105中的這一個(gè)或多個(gè)值201以及這一個(gè)或多個(gè)指 示符181,NW I/O設(shè)備108可以(例如,根據(jù)RDMA(例如,iWARP、IB、RoCE)協(xié)議和/或以 繞過(guò)和/或獨(dú)立于0SE 32的方式),以由一個(gè)或多個(gè)命令105命令的方式,直接在門(mén)鈴170 中寫(xiě)入一個(gè)或多個(gè)值201。在門(mén)鈴170中寫(xiě)入一個(gè)或多個(gè)值201可以振鈴門(mén)鈴170。如此, 事實(shí)上,通過(guò)向NW I/O設(shè)備108發(fā)出一個(gè)或多個(gè)命令105, NW I/O設(shè)備106可以振鈴門(mén)鈴 170。
[0046] 根據(jù)某些示例,與實(shí)體相關(guān)聯(lián)的門(mén)鈴的振鈴可以包括和/或涉及將一個(gè)或多個(gè)值 寫(xiě)入到一個(gè)或多個(gè)存儲(chǔ)器位置(例如,與門(mén)鈴相關(guān)聯(lián),包括門(mén)鈴,和/或?qū)崿F(xiàn)門(mén)鈴),這些值 可能會(huì)導(dǎo)致和/或觸發(fā)實(shí)體執(zhí)行一個(gè)或多個(gè)操作和/或動(dòng)作。在某些示例中,門(mén)鈴170和 /或192可以對(duì)CPU 12和/或服務(wù)器20分別表現(xiàn)為NVMe控制器112和/或NW I/O設(shè)備 108中的相應(yīng)的存儲(chǔ)器(未不出)中的一個(gè)或多個(gè)相應(yīng)的存儲(chǔ)器位置(未不出)。
[0047] 在某些示例中,響應(yīng)于門(mén)鈴170的振鈴,NVMe控制器112可以返回到完全操作狀 態(tài)(例如,如果NVMe控制器112先前進(jìn)入了相對(duì)于此完全操作狀態(tài)的功率降低狀態(tài)),并可 以讀取被寫(xiě)入到一個(gè)或多個(gè)提交隊(duì)列114的一個(gè)或多個(gè)隊(duì)列元素116。NVMe控制器112可 以執(zhí)行由一個(gè)或多個(gè)隊(duì)列元素116指定和/或?qū)崿F(xiàn)的一個(gè)或多個(gè)命令。這可能會(huì)導(dǎo)致NVMe 控制器112執(zhí)行涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)操作(例如,存儲(chǔ)在一 個(gè)或多個(gè)緩沖器130A中的數(shù)據(jù)199的向存儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)寫(xiě) 入)。
[0048] 根據(jù)某些示例,在涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的這一個(gè)或多個(gè)操作的完 成之后,NVMe控制器112可以生成一個(gè)或多個(gè)完成隊(duì)列元素(CQE) 129并將它們寫(xiě)入到一 個(gè)或多個(gè)完成隊(duì)列124。也在涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的這一個(gè)或多個(gè)操作完 成之后,NVMe控制器112或可管理性模塊109可以將一個(gè)或多個(gè)值寫(xiě)入到與NW I/O設(shè)備 108相關(guān)聯(lián)的一個(gè)或多個(gè)門(mén)鈴192。這可以振鈴一個(gè)或多個(gè)門(mén)鈴192。響應(yīng)于一個(gè)或多個(gè) 門(mén)鈴192的振鈴,NW I/O設(shè)備108可以(例如,通過(guò)一個(gè)或多個(gè)RDMA寫(xiě)入操作)將一個(gè)或 多個(gè)完成隊(duì)列元素190寫(xiě)入到一個(gè)或多個(gè)完成隊(duì)列120,然后,(例如,通過(guò)一個(gè)或多個(gè)響應(yīng) 197)將一個(gè)或多個(gè)完成隊(duì)列元素190轉(zhuǎn)發(fā)到客戶(hù)端10中的一個(gè)或多個(gè)緩沖器13。
[0049] 在某些示例中,在執(zhí)行涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)(例如, 若干個(gè))這樣的寫(xiě)入和/或讀取操作之后,一個(gè)或多個(gè)代理194可以實(shí)現(xiàn)某些管理功能。例 如,一個(gè)或多個(gè)代理194可以在與NW I/O設(shè)備108相關(guān)聯(lián)的一個(gè)或多個(gè)提交隊(duì)列126中建 立一個(gè)或多個(gè)提交隊(duì)列條目/元素(E)和/或在表250中建立一個(gè)或多個(gè)提交隊(duì)列條目/ 元素 QE A. ..QE N(參見(jiàn)圖2)。如下面比較詳細(xì)地討論的,這些元素196A. ..196N和/或 QE A. ..QE N,當(dāng)由NW I/O設(shè)備108執(zhí)行時(shí),可以允許和/或促進(jìn)一個(gè)或多個(gè)其他隊(duì)列條目 (例如,一個(gè)或多個(gè)NVMe控制器112完成條目129)向客戶(hù)端10和/或NW I/O設(shè)備106的 復(fù)制或轉(zhuǎn)發(fā),和/或由NVMe控制器112讀取的數(shù)據(jù)的復(fù)制或轉(zhuǎn)發(fā)。
[0050] 根據(jù)某些示例,這些管理功能還可以包括由一個(gè)或多個(gè)代理194更新(例如,適當(dāng) 地推進(jìn))與(同NW I/O控制器108和NVMe控制器112相關(guān)聯(lián)的)一個(gè)或多個(gè)隊(duì)列對(duì)(例 如,提交/完成隊(duì)列對(duì)114、120和/或提交/完成隊(duì)列對(duì)126,124)相關(guān)聯(lián)的一個(gè)或多個(gè)指 針(例如,振鈴指針PNTR202)。這可以允許將隊(duì)列對(duì)的新條目存儲(chǔ)在將不會(huì)導(dǎo)致隊(duì)列對(duì)中 的其他條目的錯(cuò)誤的改寫(xiě)的位置處。另外,作為這些管理功能的一部分,一個(gè)或多個(gè)代理 194可以指示也可以重復(fù)使用的緩沖器130A. . . 130N中的一個(gè)或多個(gè)。
[0051] 作為另一個(gè)示例,一個(gè)或多個(gè)隊(duì)列元素116可以命令NVMe控制器112執(zhí)行涉及存 儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)讀取操作。因此,作為執(zhí)行一個(gè)或多個(gè)隊(duì)列元 素116的結(jié)果,一個(gè)或多個(gè)命令105還可以包括和/或指定存儲(chǔ)150和/或大容量存儲(chǔ)156 中NVMe控制器112將從中讀取數(shù)據(jù)199的一個(gè)或多個(gè)位置(例如,名稱(chēng)空間)。
[0052] 根據(jù)某些示例,響應(yīng)于接收到一個(gè)或多個(gè)命令105,NW I/O設(shè)備108可以(例如,根 據(jù)RDMA(例如,iWARP、IB、RoCE)協(xié)議和/或以繞過(guò)和/或獨(dú)立于0SE 32的方式),以由一 個(gè)或多個(gè)命令105命令的方式,將一個(gè)或多個(gè)隊(duì)列兀素116直接寫(xiě)入到一個(gè)或多個(gè)提交隊(duì) 列114。如此,事實(shí)上,通過(guò)向NW I/O設(shè)備108發(fā)出一個(gè)或多個(gè)命令105, NW I/O設(shè)備106 可以將一個(gè)或多個(gè)隊(duì)列元素116分別寫(xiě)入到一個(gè)或多個(gè)提交隊(duì)列114和一個(gè)或多個(gè)緩沖器 130A。
[0053] 在此示例中,一個(gè)或多個(gè)命令105還可以包括和/或指定一個(gè)或多個(gè)值201和指 示符181中的一個(gè)或多個(gè),這些指示符可以指示一個(gè)或多個(gè)門(mén)鈴170中的一個(gè)或多個(gè)值201 可以被寫(xiě)入到的一個(gè)或多個(gè)位置。響應(yīng)于一個(gè)或多個(gè)命令105中的這些一個(gè)或多個(gè)值201 和這一個(gè)或多個(gè)指示符181,NW I/O設(shè)備108可以(例如,根據(jù)RDMA (例如,iWARP、IB、RoCE) 協(xié)議和/或以繞過(guò)和/或獨(dú)立于0SE32的方式),以由一個(gè)或多個(gè)命令105命令的方式,直 接在門(mén)鈴170中寫(xiě)入一個(gè)或多個(gè)值201。在門(mén)鈴170中寫(xiě)入一個(gè)或多個(gè)值201可以振鈴門(mén) 鈴170。如此,事實(shí)上,通過(guò)向NW I/O設(shè)備108發(fā)出一個(gè)或多個(gè)命令105, NW I/O設(shè)備106 可以振鈴門(mén)鈴170。
[0054] 根據(jù)某些示例,響應(yīng)于門(mén)鈴170的振鈴,NVMe控制器112可以返回到完全操作狀 態(tài)(例如,如果NVMe控制器112先前進(jìn)入了相對(duì)于此完全操作狀態(tài)的功率降低狀態(tài)),并可 以讀取被寫(xiě)入到一個(gè)或多個(gè)提交隊(duì)列114的一個(gè)或多個(gè)隊(duì)列元素116。NVMe控制器112隨 后可以執(zhí)行由一個(gè)或多個(gè)隊(duì)列元素116指定和/或體現(xiàn)的一個(gè)或多個(gè)命令。這可能會(huì)導(dǎo)致 NVMe控制器112執(zhí)行涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的一個(gè)或多個(gè)操作(例如,對(duì)存 儲(chǔ)150和/或大容量存儲(chǔ)156的獲得數(shù)據(jù)199的一個(gè)或多個(gè)讀?。?,并將數(shù)據(jù)199存儲(chǔ)在一 個(gè)或多個(gè)緩沖器中(例如,一個(gè)或多個(gè)緩沖器130A)。
[0055] 在某些示例中,在涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的這些一個(gè)或多個(gè)操作的 完成之后,NVMe控制器112可以生成一個(gè)或多個(gè)完成隊(duì)列元素(CQE) 129并將它們寫(xiě)入到 一個(gè)或多個(gè)完成隊(duì)列124。也在涉及存儲(chǔ)150和/或大容量存儲(chǔ)156的這些一個(gè)或多個(gè)操 作完成之后,NVMe控制器112還可以將一個(gè)或多個(gè)值寫(xiě)入到與NW I/O設(shè)備108相關(guān)聯(lián)的 一個(gè)或多個(gè)門(mén)鈴192。這可以振鈴一個(gè)或多個(gè)門(mén)鈴192。響應(yīng)于一個(gè)或多個(gè)門(mén)鈴192的振 鈴,NW I/O設(shè)備108可以從一個(gè)或多個(gè)完成隊(duì)列124獲得隊(duì)列元素129,并將一個(gè)或多個(gè)完 成隊(duì)列元素190轉(zhuǎn)發(fā)到或?qū)懭氲揭粋€(gè)或多個(gè)完成隊(duì)列120,以促進(jìn)數(shù)據(jù)199 (例如,通過(guò)利用 NW I/O設(shè)備106的一個(gè)或多個(gè)RDMA寫(xiě)入操作)向客戶(hù)端10中的一個(gè)或多個(gè)緩沖器13的 傳輸(例如,通過(guò)一個(gè)或多個(gè)響應(yīng)197)??闪磉x地,可管理性模塊109可以從完成隊(duì)列124 獲取隊(duì)列元素129,并將完成隊(duì)列元素190轉(zhuǎn)發(fā)到或?qū)懭氲酵瓿申?duì)列120,以促進(jìn)數(shù)據(jù)199 向緩沖器13的傳輸。
[0056] 根據(jù)某些示例,命令接口 110可以是異步的,因?yàn)椋纾瓿申?duì)列元素可以不以 一順序存儲(chǔ)在一個(gè)或多個(gè)完成隊(duì)列120中,該順序?qū)?yīng)于(1)命令隊(duì)列元素存儲(chǔ)在一個(gè)或 多個(gè)提交隊(duì)列114中的順序,(2)這樣的命令隊(duì)列元素被轉(zhuǎn)發(fā)供由NVMe控制器112執(zhí)行和 /或完成的順序,和/或⑶完成隊(duì)列元素190存儲(chǔ)在一個(gè)或多個(gè)完成隊(duì)列120和/或被 提供給NW I/O設(shè)備106和/或客戶(hù)端10的順序。在操作中,在從客戶(hù)端10和/或NW 1/ 〇設(shè)備106發(fā)出的寫(xiě)入命令的情況下,NW I/O設(shè)備106和/或客戶(hù)端10可以適當(dāng)?shù)刂匦屡?序從NW I/O設(shè)備108接收到的相應(yīng)的完成隊(duì)列元素190。然而,在此實(shí)施例中,在讀取命 令的情況下,為了允許從存儲(chǔ)150和/或大容量存儲(chǔ)156中讀取的相應(yīng)的數(shù)據(jù)被適當(dāng)?shù)嘏c 對(duì)應(yīng)的完成隊(duì)列元素190相關(guān)聯(lián),以傳輸?shù)娇蛻?hù)端10和/或NW I/O設(shè)備106,由被NW I/O 設(shè)備108置于完成隊(duì)列120中的完成指示所產(chǎn)生的每一個(gè)完成隊(duì)列元素(例如,完成隊(duì)列 元素190)可以包括圖2中所示出的元素。
[0057] 如圖2所示,完成隊(duì)列元素200 (例如,完成隊(duì)列元素190)可以包括一個(gè)或多個(gè)命 令參數(shù)304、一個(gè)或多個(gè)命令隊(duì)列標(biāo)識(shí)符306、一個(gè)或多個(gè)命令隊(duì)列頭部(head)位置指示符 308、狀態(tài)信息310、一個(gè)或多個(gè)隊(duì)列相位比特(P) 312,和/或一個(gè)或多個(gè)命令標(biāo)識(shí)符302。 一個(gè)或多個(gè)命令參數(shù)304可以是和/或指示一個(gè)或多個(gè)隊(duì)列元素116和/或命令105的一 個(gè)或多個(gè)命令特定參數(shù),這些參數(shù)可以對(duì)應(yīng)于一個(gè)或多個(gè)完成隊(duì)列元素190和/或與它們 相關(guān)聯(lián)。一個(gè)或多個(gè)命令隊(duì)列標(biāo)識(shí)符306可以指示和/或指定一個(gè)或多個(gè)隊(duì)列元素116被 寫(xiě)入其中的一個(gè)或多個(gè)提交隊(duì)列114。一個(gè)或多個(gè)命令隊(duì)列頭部位置指示符308可以指示 一個(gè)或多個(gè)隊(duì)列元素116可位于的當(dāng)前位置(例如,在由一個(gè)或多個(gè)命令隊(duì)列標(biāo)識(shí)符306 所標(biāo)識(shí)的一個(gè)或多個(gè)提交隊(duì)列114中)。狀態(tài)信息310可以指出一個(gè)或多個(gè)命令105和/ 或一個(gè)或多個(gè)隊(duì)列元素116是否由NVMe控制器112成功地執(zhí)行。一個(gè)或多個(gè)相位比特312 可以指示一個(gè)或多個(gè)完成隊(duì)列元素190是否構(gòu)成一個(gè)或多個(gè)完成隊(duì)列120中的最近添加的 有效條目(例如,用于服務(wù))。一個(gè)或多個(gè)命令標(biāo)識(shí)符302可以指示對(duì)應(yīng)的一個(gè)或多個(gè)隊(duì)列 元素116中的一個(gè)或多個(gè)對(duì)應(yīng)的命令標(biāo)識(shí)符和/或與它們相同。作為這些一個(gè)或多個(gè)對(duì)應(yīng) 的隊(duì)列元素116的執(zhí)行的結(jié)果,命令標(biāo)識(shí)符302可以允許將一個(gè)或多個(gè)完成隊(duì)列元素190 被正確地與一個(gè)或多個(gè)對(duì)應(yīng)的隊(duì)列元素116相關(guān)聯(lián)和/或與從存儲(chǔ)150和/或大容量存儲(chǔ) 156中讀取的相應(yīng)的數(shù)據(jù)199相關(guān)聯(lián)。
[0058] 在某些示例中,可以選擇一個(gè)或多個(gè)命令標(biāo)識(shí)符302,以使得不與可能當(dāng)前被任何 完成隊(duì)列元素使用的、還沒(méi)有被NW I/O設(shè)備108提供給客戶(hù)端10和/或NW I/O設(shè)備的任 何其他命令標(biāo)識(shí)符沖突和/或相同??梢栽谙到y(tǒng)100中使用的命令標(biāo)識(shí)符可以是預(yù)先計(jì)算 出的和/或預(yù)先生成的,并可以被用作可以存儲(chǔ)在可被存儲(chǔ)于存儲(chǔ)器21中的表250中的相 應(yīng)的條目ENTRY(條目)Α· ·· ENTRY N的相應(yīng)的索引INDEX(索弓丨)Α· ·· INDEX N。表250中 的每一個(gè)條目ENTRY A. .. ENTRY N都可以存儲(chǔ)可與NW I/O設(shè)備108的相關(guān)聯(lián)的一個(gè)或多 個(gè)相應(yīng)的預(yù)先計(jì)算出的和/或預(yù)先生成的命令隊(duì)列元素 QE A...QE N。每一個(gè)相應(yīng)的元素 QE A. . . QE N都可以與一個(gè)或多個(gè)緩沖器130A. . . 130N中的一個(gè)或多個(gè)相應(yīng)的緩沖器相關(guān) 聯(lián)。NVMe控制器112可以向其中存儲(chǔ)從存儲(chǔ)150和/或大容量存儲(chǔ)156中讀取的數(shù)據(jù)的一 個(gè)或多個(gè)緩沖器130A. .. 130N中的緩沖器中的每一個(gè)也可以與系統(tǒng)100中所使用的一個(gè)或 多個(gè)相應(yīng)的提交標(biāo)識(shí)符和/或相應(yīng)的條目ENTRY A. .. ENTRY N相關(guān)聯(lián)。
[0059] 命令隊(duì)列元素 QE A. . . QE N可以由客戶(hù)端10和/或一個(gè)或多個(gè)代理194存儲(chǔ)在 和/或維護(hù)在表250中。如果一個(gè)或多個(gè)緩沖器130A. . . 130N是靜態(tài)地分配的,則表250 可以是靜態(tài)的,并就例如分配特征而言可以對(duì)應(yīng)于可在客戶(hù)端10中分配的一個(gè)或多個(gè)緩 沖器13。
[0060] 作為示例,在NVMe控制器112從存儲(chǔ)150和/或大容量存儲(chǔ)156讀取數(shù)據(jù)199之 后,NVMe控制器112可以將數(shù)據(jù)199存儲(chǔ)在可以與一個(gè)或多個(gè)命令標(biāo)識(shí)符302相關(guān)聯(lián)的一 個(gè)或多個(gè)緩沖器中(例如,一個(gè)或多個(gè)緩沖器130A),并可以向NW I/O設(shè)備108發(fā)送訪問(wèn)命 令已經(jīng)完成的指示,例如,振鈴一個(gè)或多個(gè)門(mén)鈴192。響應(yīng)于NVMe控制器112振鈴一個(gè)或多 個(gè)門(mén)鈴192,NW I/O設(shè)備108可以基于一個(gè)或多個(gè)隊(duì)列相位比特312,確定一個(gè)或多個(gè)完成 隊(duì)列120中的一個(gè)或多個(gè)最近添加的有效完成隊(duì)列。NW I/O設(shè)備108可以使用一個(gè)或多個(gè) 完成隊(duì)列元素190中的一個(gè)或多個(gè)命令標(biāo)識(shí)符302以索引到表250中,以定位表250中可 與一個(gè)或多個(gè)命令標(biāo)識(shí)符302相關(guān)聯(lián)的和/或可以由一個(gè)或多個(gè)命令標(biāo)識(shí)符302所標(biāo)識(shí)的 一個(gè)或多個(gè)條目(例如,一個(gè)或多個(gè)條目ENTRY A)和一個(gè)或多個(gè)命令隊(duì)列元素(例如,一 個(gè)或多個(gè)隊(duì)列元素 QE AhNW I/O設(shè)備108可以執(zhí)行可與這一個(gè)或多個(gè)命令隊(duì)列元素 QE A 相關(guān)聯(lián)的和/或由這一個(gè)或多個(gè)命令隊(duì)列元素 QE A體現(xiàn)的一個(gè)或多個(gè)命令。對(duì)于這些示 例,這可以導(dǎo)致NW 1/0108讀取一個(gè)或多個(gè)緩沖器130A以獲取數(shù)據(jù)199,并將數(shù)據(jù)199和一 個(gè)或多個(gè)完成隊(duì)列元素190傳輸?shù)絅W I/O設(shè)備106和/或客戶(hù)端10 (例如,通過(guò)一個(gè)或多 個(gè)響應(yīng)197)。結(jié)果,數(shù)據(jù)199和/或一個(gè)或多個(gè)完成隊(duì)列元素190可以被復(fù)制到一個(gè)或多 個(gè)客戶(hù)端緩沖器13中。
[0061] 可另選地,在某些示例中NW I/O設(shè)備108可以包括狀態(tài)機(jī)(未示出)。此狀態(tài)機(jī) 可以是獨(dú)立的和/或與可與NW I/O設(shè)備108相關(guān)聯(lián)和/或由NW I/O設(shè)備108使用的一個(gè) 或多個(gè)提交隊(duì)列114分開(kāi)。此狀態(tài)機(jī)可以基于一個(gè)或多個(gè)命令標(biāo)識(shí)符302,定位表250中的 一個(gè)或多個(gè)命令隊(duì)列元素 QE A,并可以將一個(gè)或多個(gè)隊(duì)列元素 QE A復(fù)制到一個(gè)或多個(gè)提交 隊(duì)列126中的一個(gè)或多個(gè)對(duì)應(yīng)的提交隊(duì)列元素196A。然后,狀態(tài)機(jī)可以發(fā)信號(hào)指令NW I/O 設(shè)備108訪問(wèn)并執(zhí)行一個(gè)或多個(gè)提交隊(duì)列126中的一個(gè)或多個(gè)提交隊(duì)列元素196A。
[0062] 進(jìn)一步可另選地,在不偏離這些示例的情況下,在完成涉及存儲(chǔ)150和/或大容 量存儲(chǔ)156的一個(gè)或多個(gè)讀取操作之前,NVMe控制器112可以基于一個(gè)或多個(gè)命令標(biāo)識(shí)符 302,定位和/或選擇表250中的一個(gè)或多個(gè)隊(duì)列元素 QE A。然后,NVMe控制器112可以 將一個(gè)或多個(gè)完成隊(duì)列元素190寫(xiě)入到一個(gè)或多個(gè)完成隊(duì)列120中,并可以將一個(gè)或多個(gè) 隊(duì)列元素 QE A寫(xiě)入到一個(gè)或多個(gè)提交隊(duì)列126中的一個(gè)或多個(gè)對(duì)應(yīng)的提交隊(duì)列元素196A 中。然后,NVMe控制器112可以振鈴一個(gè)或多個(gè)門(mén)鈴192。這可以導(dǎo)致NW I/O設(shè)備108訪 問(wèn)和執(zhí)行一個(gè)或多個(gè)提交隊(duì)列126中的一個(gè)或多個(gè)提交隊(duì)列元素196A。對(duì)于這些示例,這 可以導(dǎo)致NW I/O設(shè)備108讀取一個(gè)或多個(gè)緩沖器130A,以獲取數(shù)據(jù)199,并將數(shù)據(jù)199和 一個(gè)或多個(gè)完成隊(duì)列元素190傳輸?shù)絅W I/O設(shè)備106和/或客戶(hù)端10 (例如,通過(guò)一個(gè)或 多個(gè)響應(yīng)197)。結(jié)果,數(shù)據(jù)199和/或一個(gè)或多個(gè)完成隊(duì)列元素190可以被復(fù)制到一個(gè)或 多個(gè)客戶(hù)端緩沖器13中。
[0063] 在此替換的示例中,由NW I/O設(shè)備108、NVMe控制器112或可管理性模塊109執(zhí)行 的固件和/或一個(gè)或多個(gè)代理194可以維護(hù)每隊(duì)列對(duì)(per-queue-pair)上下文信息,以指 示用于RDMA事務(wù)的一個(gè)或多個(gè)隊(duì)列對(duì)。此上下文信息還可以包括各種指針(例如,指向提 交隊(duì)列元素196A. . . 196N的一個(gè)或多個(gè)陣列以將數(shù)據(jù)從一個(gè)或多個(gè)緩沖器130A. . . 130N移 動(dòng)到一個(gè)或多個(gè)緩沖器13,和/或一個(gè)或多個(gè)提交隊(duì)列126的頭部),一個(gè)或多個(gè)門(mén)鈴192 的一個(gè)或多個(gè)位置和用于振鈴一個(gè)或多個(gè)門(mén)鈴192的一個(gè)或多個(gè)值,以及一個(gè)或多個(gè)提交 隊(duì)列126的頭部的本地副本和/或指向該一個(gè)或多個(gè)提交隊(duì)列126的指針。這些指針(例 如,頭和尾指針)可以通過(guò)由NVMe控制器112執(zhí)燈的固件來(lái)動(dòng)態(tài)地更新。
[0064] 另選地或另外地,在不偏離這些示例的情況下,NW I/O設(shè)備108、可管理性模塊 109和/或NVMe控制器112可以被包括在未示出的芯片組,或包括在未示出的電路板或設(shè) 備。也另選地或另外地,在不偏離此實(shí)施例的情況下,存儲(chǔ)150和/或大容量存儲(chǔ)156可以 是服務(wù)器20內(nèi)部的,或可以是服務(wù)器20外部的。
[0065] 進(jìn)一步地,雖然前面的描述是參考NW I/O設(shè)備108是RNIC而NVMe控制器112是 NVMe順應(yīng)存儲(chǔ)控制器來(lái)作出的,但是,此實(shí)施例的原理可以應(yīng)用于其中可以使用與RDMA或 NVMe不同和/或作為其補(bǔ)充的協(xié)議的情況,和/或其中在執(zhí)行和/或促進(jìn)不涉及存儲(chǔ)150 的操作(例如,其他和/或附加的輸入/輸出和/或通信相關(guān)操作)時(shí)可能涉及NVMe控制 器112的情況。相應(yīng)地,在不偏離上文所提及的示例的情況下,NW I/O設(shè)備108可以利用, 和/或客戶(hù)端10和服務(wù)器20之間的通信可以使用與RDMA不同和/或作出其補(bǔ)充的協(xié)議。 此外,在不偏離此實(shí)施例的情況下,NW I/O設(shè)備108、可管理性模塊109或NVMe控制器112 可以在執(zhí)行時(shí)被涉及,和/或可以促進(jìn)可使用與PCIe協(xié)議或NVMe協(xié)議不同的協(xié)議的此類(lèi) 其他和/或附加操作的執(zhí)行。在這些附加的和/或備選方案中,硬件和/或固件電路(未 示出)可以被包括在電路118中,該電路118可以允許通過(guò)例如一個(gè)或多個(gè)中斷機(jī)制(例 如,一個(gè)或多個(gè)消息中斷((MSI/MSI-X)和/或其他機(jī)制)向門(mén)鈴170和/或192寫(xiě)入。此 實(shí)施例應(yīng)該被廣泛地視為包含所有這樣的替代方案、修改方案,以及變體。
[0066] 如此,在某些示例中,電路可以被布置為允許客戶(hù)端中的第一NW I/O設(shè)備,通過(guò)遠(yuǎn) 離客戶(hù)端中的服務(wù)器中的第二NW I/O設(shè)備并以獨(dú)立于服務(wù)器中的操作系統(tǒng)環(huán)境的方式,訪 問(wèn)服務(wù)器的另一(例如,存儲(chǔ)器,和/或另一/附加的類(lèi)型的)控制器的命令接口??蛻?hù)端 中的NW I/O設(shè)備和服務(wù)器中的NW I/O設(shè)備可以是或包括相應(yīng)的遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)啟用 的網(wǎng)絡(luò)接口控制器(例如,能夠使用RDMA和/或通過(guò)RDMA進(jìn)行通信的控制器)。命令接 口可以包括至少一個(gè)(例如,存儲(chǔ)器,和/或其他/附加的類(lèi)型的)控制器命令隊(duì)列。這樣 的訪問(wèn)可以包括將至少一個(gè)隊(duì)列元素寫(xiě)入到至少一個(gè)提交隊(duì)列,以命令另一控制器來(lái)執(zhí)行 與另一控制器(例如,NVMe控制器)相關(guān)聯(lián)的至少一個(gè)操作(例如,涉及存儲(chǔ)器,和/或涉 及一個(gè)或多個(gè)其他和/或附加的類(lèi)型的操作,諸如,其他和/或附加的輸入/輸出操作)。 其他控制器可以響應(yīng)于至少一個(gè)隊(duì)列元素,執(zhí)行至少一個(gè)操作。許多替代方案、變化,以及 修改也是可以的。這些替代方案中的某些可以包括使用耦合在NW I/O設(shè)備和服務(wù)器中的 NVMe控制器之間的可管理性模塊(例如,可管理性模塊109),以促進(jìn)遠(yuǎn)程N(yùn)W I/O設(shè)備對(duì)至 少一個(gè)命令接口的訪問(wèn)。
[0067] 如此,在某些示例中,服務(wù)器20中的NVMe控制器112的一個(gè)或多個(gè)命令接口 110 可以由客戶(hù)端的NW I/O設(shè)備106通過(guò)一個(gè)或多個(gè)RDMA事務(wù),以繞過(guò)、獨(dú)立于、和/或不會(huì) 涉及服務(wù)器的0SE32和/或CPU12的方式來(lái)直接訪問(wèn)。有利地,這可以允許存儲(chǔ)命令、數(shù)據(jù), 以及完成消息在客戶(hù)端和服務(wù)器之間快速地并且高效地傳遞,且具有縮短的等待時(shí)間。此 夕卜,在此實(shí)施例中,NW I/O設(shè)備108和NVMe控制器112之間的交互可以完全地或幾乎完全 地由硬件執(zhí)行(例如,使用對(duì)等存儲(chǔ)器和門(mén)鈴寫(xiě)入),并且還以繞過(guò)、獨(dú)立于、和/或不會(huì)涉 及服務(wù)器的0SE32和/或CPU12的方式來(lái)執(zhí)行。有利地,這可以允許這樣的交互被快速地 并且高效地執(zhí)行,且具有縮短的等待時(shí)間。另外,此實(shí)施例的上面的特征可以降低服務(wù)器的 功耗,熱耗散,以及由0SE32和CPU12消費(fèi)的帶寬量。
[0068] 許多其他修改方案也是可以的。例如,如前所述,在此實(shí)施例中,客戶(hù)端10可以包 括多個(gè)客戶(hù)端。如果RDMA用于服務(wù)器20和客戶(hù)端10之間的通信,則在此實(shí)施例中,有利 地,客戶(hù)端10可以在客戶(hù)端10與服務(wù)器20、NW I/O設(shè)備108,和/或NVMe控制器112之 間的通信中動(dòng)態(tài)地共享緩沖器130A. .. 130N,作為公共緩沖器池。為了允許這樣的緩沖器共 享,NW I/O設(shè)備108可以能夠操縱、調(diào)整,和/或修改可在由客戶(hù)端10提供給服務(wù)器20的 命令105中指示的緩沖器指定信息,以便允許在客戶(hù)端10之間共享緩沖器130A. .. 130N和 /或其他服務(wù)器資源,而不會(huì)導(dǎo)致例如競(jìng)爭(zhēng)相關(guān)問(wèn)題。
[0069] 例如,一個(gè)或多個(gè)指示符181和/或由一個(gè)或多個(gè)指示符181指示的STag可以包 括NW I/O設(shè)備108可以將其與一個(gè)或多個(gè)緩沖器和/或緩沖器130A中的緩沖池進(jìn)行關(guān)聯(lián) 的相應(yīng)的信息(作為一個(gè)或多個(gè)存儲(chǔ)器區(qū)句柄的替代和/或補(bǔ)充)。。在此布局中,客戶(hù)端 10可以使用這樣的指示符181來(lái)執(zhí)行RDMA讀取操作,NW I/O設(shè)備108可以對(duì)由相應(yīng)的信 息和/或指示符181指示的一個(gè)或多個(gè)緩沖器和/或緩沖池執(zhí)行寫(xiě)入操作。在執(zhí)行其操作 時(shí),NW I/O設(shè)備108可以適當(dāng)?shù)卣{(diào)整提供給NVMe控制器112的實(shí)際命令和/或命令隊(duì)列 元素,以便當(dāng)NVMe控制器112執(zhí)行這樣的命令和/或命令隊(duì)列元素時(shí)導(dǎo)致正確的緩沖器等 等被NVMe控制器112寫(xiě)入。
[0070] 替代或補(bǔ)充地,在不偏離上面的示例的情況下,NW I/O設(shè)備108可以包括共享接 收隊(duì)列(未示出)和/或與其相關(guān)聯(lián),用以從多個(gè)客戶(hù)端10接收例如命令105。NW I/O設(shè) 備108可以能夠?qū)⒁粋€(gè)或多個(gè)合適的服務(wù)器緩沖器地址,值,和/或其他信息替換到接收到 的命令105的一個(gè)或多個(gè)部分(例如,隊(duì)列元素116、值201、指示符181,和/或其他信息), 以允許在多個(gè)客戶(hù)端10之間共享一個(gè)或多個(gè)命令接口 110中的結(jié)構(gòu),而不會(huì)導(dǎo)致競(jìng)爭(zhēng)或性 能的其他降級(jí)。在此布置中,客戶(hù)端可能不被提供和/或使用存儲(chǔ)控制器的命令隊(duì)列和/ 或門(mén)鈴的一個(gè)或多個(gè)STag,并且向這些結(jié)構(gòu)寫(xiě)入可以由服務(wù)器的NW I/O設(shè)備108來(lái)執(zhí)行。 有利地,這可以允許可以與共享的接收隊(duì)列相關(guān)聯(lián)和/或使用共享的接收隊(duì)列的多個(gè)客戶(hù) 端10來(lái)使用和/或共享相同存儲(chǔ)控制器命令隊(duì)列、門(mén)鈴,和/或其他結(jié)構(gòu)。
[0071] 例如,在寫(xiě)入操作的情況下,一個(gè)或多個(gè)命令105中的一個(gè)或多個(gè)指示符181、一 個(gè)或多個(gè)值201,和/或其他信息可以指示用于寫(xiě)入操作的一個(gè)或多個(gè)存儲(chǔ)控制器STag (以 及相關(guān)的信息),和/或一個(gè)或多個(gè)完成隊(duì)列元素可以被寫(xiě)入到其中的一個(gè)或多個(gè)緩沖器 的一個(gè)或多個(gè)RDMA STag。對(duì)于這些示例,基于一個(gè)或多個(gè)接收到的命令105和/或存儲(chǔ) 在NW I/O設(shè)備108中的其他信息,NW I/O設(shè)備108可以選擇緩沖器130A. ..130N中的一個(gè) 或多個(gè)緩沖器以及提交隊(duì)列114中的一個(gè)或多個(gè)位置,要向該一個(gè)或多個(gè)位置張貼待寫(xiě)入 數(shù)據(jù)199及將被轉(zhuǎn)發(fā)到與NVMe控制器112相關(guān)聯(lián)的提交隊(duì)列126的一個(gè)或多個(gè)對(duì)應(yīng)的命 令隊(duì)列元素 。NW I/O設(shè)備108可以根據(jù)這樣的選擇,張貼數(shù)據(jù)199和一個(gè)或多個(gè)對(duì)應(yīng)的命 令隊(duì)列元素,此后,可以振鈴門(mén)鈴170。如由NW I/O設(shè)備108張貼的,一個(gè)或多個(gè)命令隊(duì)列 元素可以指示在一個(gè)或多個(gè)命令105中所提供的一個(gè)或多個(gè)存儲(chǔ)控制器STag、命令標(biāo)識(shí)符 302、安全上下文信息(例如,用以允許驗(yàn)證一個(gè)或多個(gè)存儲(chǔ)控制器STag),和/或數(shù)據(jù)199 已經(jīng)被張貼到其中的一個(gè)或多個(gè)緩沖器的一個(gè)或多個(gè)STag。在NVMe控制器112完成了請(qǐng) 求的一個(gè)或多個(gè)寫(xiě)入操作并張貼一個(gè)或多個(gè)完成隊(duì)列元素(例如,向完成隊(duì)列124)之后, NVMe控制器112可以振鈴門(mén)鈴192?;诒?50中的信息,NW I/O設(shè)備108可以生成一個(gè) 或多個(gè)合適的響應(yīng)197,并通過(guò)將來(lái)自完成隊(duì)列124的完成隊(duì)列元素轉(zhuǎn)發(fā)到完成隊(duì)列120, 來(lái)將一個(gè)或多個(gè)合適的響應(yīng)197轉(zhuǎn)發(fā)到提供接收到的命令105的一個(gè)或多個(gè)客戶(hù)端。
[0072] 在讀取操作的情況下,可以在命令105中提供一般類(lèi)似的信息,并可以由NW I/O 設(shè)備108和/或NVMe控制器112執(zhí)行一般類(lèi)似的操作。然而,在讀取操作的情況下,由NVMe 控制器112讀取的數(shù)據(jù)199可以由NVMe控制器112存儲(chǔ)到由NW I/O設(shè)備108所指定的緩 沖器130A... 130N中的一個(gè)或多個(gè)中,并可以由NW I/O設(shè)備108讀取,而不是相反(例如, 如可能是寫(xiě)入操作中的情況那樣)。NW I/O設(shè)備108可以將讀取的數(shù)據(jù)199傳輸?shù)皆谝粋€(gè) 或多個(gè)響應(yīng)197中提供接收到的命令105的一個(gè)或多個(gè)客戶(hù)端。在前面的布局中,至少?gòu)?啟動(dòng)這樣的訪問(wèn)的一個(gè)或多個(gè)客戶(hù)端執(zhí)行的應(yīng)用程序的觀點(diǎn)來(lái)看,命令105可以與可被客 戶(hù)端用來(lái)訪問(wèn)客戶(hù)端本地的存儲(chǔ)的命令相類(lèi)似或與其相同。有利地,這可以允許前面所描 述的類(lèi)型的遠(yuǎn)程操作和/或RDMA事務(wù)基本上對(duì)這些一個(gè)或多個(gè)客戶(hù)端執(zhí)行的應(yīng)用程序是 透明的。
[0073] 如此,在某些示例中,有利地,多個(gè)客戶(hù)端可以共享存儲(chǔ)控制器的命令隊(duì)列、門(mén)鈴, 和/或服務(wù)器的緩沖器,和/或使用RDMA協(xié)議,寫(xiě)入到這些結(jié)構(gòu)(通過(guò)服務(wù)器的NW I/O設(shè) 備),而不會(huì)遭受原本可能會(huì)發(fā)生的資源競(jìng)爭(zhēng)問(wèn)題(和/或其他缺點(diǎn))。服務(wù)器的NW I/O設(shè) 備可以能夠修改與客戶(hù)端的命令105相關(guān)聯(lián)的和/或包含在客戶(hù)端的命令105中的信息, 以在客戶(hù)端之間或當(dāng)中促進(jìn)這樣的共享和/或RDMA STag信息的共享。有利地,這可以允 許RDMA協(xié)議用于服務(wù)器和多個(gè)客戶(hù)端之間的命令通信和/或完成信息,且具有改進(jìn)的可縮 放性,而同時(shí)降低實(shí)現(xiàn)這樣的特征所需的存儲(chǔ)器消耗,且沒(méi)有通信線路速率的降級(jí)。
[0074] 圖3不出了第二不例系統(tǒng)。如圖3所不,第二不例系統(tǒng)包括系統(tǒng)300。根據(jù)某些 示例,系統(tǒng)300可以包括多個(gè)存儲(chǔ)節(jié)點(diǎn)或存儲(chǔ)服務(wù)器310-1到305-n(其中,"η"表示大于3 的任何正整數(shù))和客戶(hù)端350。對(duì)于這些示例,NW I/O設(shè)備330或緩沖器360可以位于客 戶(hù)端305上,被維護(hù)在客戶(hù)端305上,或與客戶(hù)端305耦合。此外,如圖3所示,用于復(fù)制的 數(shù)據(jù)340還可以至少臨時(shí)存儲(chǔ)在客戶(hù)端305中和/或由諸如由客戶(hù)端305的電路執(zhí)行的應(yīng) 用程序之類(lèi)的邏輯和/或特征(未示出)生成。
[0075] 在某些示例中,由網(wǎng)絡(luò)I/O設(shè)備330和/或客戶(hù)端305的電路執(zhí)行的邏輯和/或 特征可以向存儲(chǔ)服務(wù)器310-1到310-η分配資源,以促進(jìn)用于復(fù)制的數(shù)據(jù)340中所包括的 數(shù)據(jù)的復(fù)制。對(duì)于這些示例,單獨(dú)的I/O隊(duì)列對(duì)(QP) 320-1到320-η可以分別被分配或指 派給存儲(chǔ)服務(wù)器310-1到310-η。此外,緩沖器360的至少某些部分還可以被分配或指派 給服務(wù)器310-1到310-η。根據(jù)某些示例,I/O QP320-1到320-η和/或緩沖器360可以是 駐留在客戶(hù)端305中的系統(tǒng)存儲(chǔ)器的一部分(未示出)??闪磉x地,I/O QP320-1到320-η 可以被維護(hù)在NW I/O設(shè)備330中或通過(guò)其來(lái)維護(hù)。
[0076] 根據(jù)某些示例,I/O QP320-1到320-η可以分別地包括命令提交隊(duì)列和命令完成 隊(duì)列兩者,這些隊(duì)列被NW I/O設(shè)備330中的邏輯和/或特征用來(lái)與存儲(chǔ)服務(wù)器310-1到 310-η交換關(guān)于RDMA命令或與RDMA命令相關(guān)聯(lián)的請(qǐng)求的信息,以復(fù)制用于復(fù)制的數(shù)據(jù)340 中所包括的數(shù)據(jù)。對(duì)于這些示例,用于復(fù)制的數(shù)據(jù)340也可以包括合適的糾錯(cuò)碼/校驗(yàn)和 來(lái)復(fù)制所包括的數(shù)據(jù)。
[0077] 在某些示例中,由NW I/O設(shè)備330中的電路執(zhí)行的邏輯和/或特征可以能夠發(fā)送 將用于復(fù)制的數(shù)據(jù)340存儲(chǔ)在服務(wù)器310-1到310-n中的RDMA命令消息。如下文比較詳 細(xì)地描述的,可以通過(guò)一個(gè)或多個(gè)存儲(chǔ)服務(wù)器和客戶(hù)端305之間的至少一個(gè)網(wǎng)絡(luò)連接,將 RDMA命令消息發(fā)送到存儲(chǔ)服務(wù)器310-1到310-n之中的一個(gè)或多個(gè)存儲(chǔ)服務(wù)器。NW I/O 設(shè)備330中的邏輯和/或特征也可以從一個(gè)或多個(gè)存儲(chǔ)服務(wù)器接收一個(gè)或多個(gè)RDMA命令 完成消息,這些消息指示數(shù)據(jù)在存儲(chǔ)服務(wù)器310-1到310-n之中的服務(wù)器中的至少兩個(gè)之 間的復(fù)制。
[0078] 根據(jù)某些示例,I/O QP320-1到320-n可以被維護(hù)在NW I/O設(shè)備330中。對(duì)于這 些示例,I/O QP320-1到320-n可以處于在NW I/O設(shè)備330中維護(hù)的存儲(chǔ)器中,存儲(chǔ)器包 括非易失性存儲(chǔ)器或易失性存儲(chǔ)器中的至少一種。在NW I/O設(shè)備330中維護(hù)的存儲(chǔ)器可 以能夠至少臨時(shí)存儲(chǔ)與存儲(chǔ)服務(wù)器310-1到310-n中的一個(gè)或多個(gè)處用于復(fù)制的數(shù)據(jù)340 中所包括的數(shù)據(jù)的存儲(chǔ)相關(guān)聯(lián)的信息。信息可以包括一個(gè)或多個(gè)RDMA STag。在某些示例 中,存儲(chǔ)服務(wù)器中的每一個(gè)的相應(yīng)的STag可能已經(jīng)被預(yù)先指派給客戶(hù)端305,并可以指示 針對(duì)由在這些存儲(chǔ)服務(wù)器處維護(hù)的NVMe控制器控制的相應(yīng)的存儲(chǔ)設(shè)備預(yù)先指派給客戶(hù)端 305的存儲(chǔ)容量的量或部分。
[0079] 圖4示出了第三示例系統(tǒng)。如圖4所示,第三示例系統(tǒng)包括系統(tǒng)400。根據(jù)某些示 例,系統(tǒng)400可以包括耦合到客戶(hù)端305的存儲(chǔ)服務(wù)器310-1和存儲(chǔ)服務(wù)器310-2到310-n。 對(duì)于這些示例,NW I/O設(shè)備430、NVMe控制器450、緩沖器460或存儲(chǔ)設(shè)備470可以位于存 儲(chǔ)服務(wù)器310-1中,被維護(hù)或與其耦合。此外,如圖4所示,存儲(chǔ)設(shè)備470可以包括用于復(fù) 制的數(shù)據(jù)340,其中可以包括從客戶(hù)端305復(fù)制和/或存儲(chǔ)的數(shù)據(jù)。
[0080] 在某些示例中,由網(wǎng)絡(luò)I/O設(shè)備430和/或服務(wù)器310-1的電路執(zhí)行的邏輯和/ 或特征可以向客戶(hù)端305和/或存儲(chǔ)服務(wù)器310-2到310-n分配資源,以促進(jìn)對(duì)由NVMe控 制器450控制或通過(guò)NVMe控制器450可訪問(wèn)的存儲(chǔ)設(shè)備470的遠(yuǎn)程訪問(wèn)。對(duì)于這些示例, 單獨(dú)的I/O QP420-1到420-n可以被分別分配或指派給客戶(hù)端305和存儲(chǔ)服務(wù)器310-2到 310-n。此外,緩沖器460的至少某些部分還可以被分配或指派給客戶(hù)端305和存儲(chǔ)服務(wù)器 310-1到310-n。根據(jù)某些示例,I/O QP420-1到420-n和/或緩沖器460可以是可被單獨(dú) 地管理的駐留在存儲(chǔ)服務(wù)器310-1中的系統(tǒng)存儲(chǔ)器的一部分,或存儲(chǔ)服務(wù)器310-1中維護(hù) 的單獨(dú)的系統(tǒng)存儲(chǔ)器的一部分(未示出)??闪磉x地,I/O QP420-1到420-n可以被維護(hù)在 NW I/O設(shè)備430中或通過(guò)其來(lái)維護(hù)。
[0081] 根據(jù)某些示例,類(lèi)似于圖3的系統(tǒng)300, I/O QP420-1到420-n可以單獨(dú)地包括命 令提交隊(duì)列和命令完成隊(duì)列兩者,這些隊(duì)列被NW I/O設(shè)備430中的邏輯和/或特征用來(lái)就 客戶(hù)端305和/或存儲(chǔ)服務(wù)器310-2到310-n接收/轉(zhuǎn)發(fā)關(guān)于復(fù)制用于復(fù)制的數(shù)據(jù)340中 所包括的數(shù)據(jù)的RDMA命令或與復(fù)制用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)的RDMA命令相關(guān) 聯(lián)的請(qǐng)求的RDMA命令/命令完成消息。
[0082] 在某些示例中,如下文比較詳細(xì)地描述的,由NW I/O設(shè)備430中的電路執(zhí)行的邏 輯和/或特征可以從諸如客戶(hù)端305之類(lèi)的客戶(hù)端接收包括STag的RDMA命令。如下文 比較詳細(xì)地描述的,STag可能已經(jīng)由存儲(chǔ)服務(wù)器310-1軟件(未示出)預(yù)先指派給客戶(hù)端 305,并可以指示存儲(chǔ)設(shè)備470中已經(jīng)被分配給客戶(hù)端305和/或被分配用于存儲(chǔ)用于復(fù)制 的數(shù)據(jù)340的存儲(chǔ)容量的量或部分。對(duì)于這些示例,RDM命令可以是復(fù)制用于復(fù)制的數(shù)據(jù) 340中從客戶(hù)端305接收/獲取的數(shù)據(jù),以及將接收/獲取的數(shù)據(jù)存儲(chǔ)在由NVMe控制器450 控制和/或通過(guò)NVMe控制器450可訪問(wèn)的存儲(chǔ)設(shè)備470中。NW I/O設(shè)備430中的邏輯和 /或特征可以將帶有STag的RDMA命令轉(zhuǎn)發(fā)到NVMe控制器450。根據(jù)某些示例,NVMe控制 器450可以基于將RDMA命令中所包括的STag與分配部分進(jìn)行關(guān)聯(lián)的關(guān)聯(lián)方案,將用于復(fù) 制的數(shù)據(jù)340中所包括的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備470中的分配部分。
[0083] 根據(jù)某些示例,一旦用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)已經(jīng)被存儲(chǔ)到存儲(chǔ)設(shè)備 470中的分配部分,NVMe控制器450就可以生成RDMA命令完成消息。對(duì)于這些示例,NW 1/ 0設(shè)備430中的邏輯和/或特征可以能夠?qū)DMA命令完成消息轉(zhuǎn)發(fā)到客戶(hù)端305,以指示 用于復(fù)制數(shù)據(jù)340中所包括的數(shù)據(jù)的存儲(chǔ)。
[0084] 在某些示例中,NW I/O設(shè)備430中的邏輯和/或特征也可以從諸如存儲(chǔ)服務(wù)器 310-2之類(lèi)的存儲(chǔ)服務(wù)器接收另一 RDMA命令。此其他RDMA命令也可以包括STag。對(duì)于這 些示例,STag可以是由存儲(chǔ)服務(wù)器310-1軟件(未示出)預(yù)先指派的相同STag,并可以指 示存儲(chǔ)設(shè)備470中已經(jīng)被分配給客戶(hù)端305-1和/或被分配用于存儲(chǔ)用于復(fù)制的數(shù)據(jù)340 的存儲(chǔ)容量的量或部分。對(duì)于這些示例,其他RDMA命令可以是復(fù)制用于復(fù)制的數(shù)據(jù)340中 的數(shù)據(jù),并將復(fù)制的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)服務(wù)器310-2中。NW I/O設(shè)備430中的邏輯和/或特 征可以將帶有Stag的其他RDMA命令轉(zhuǎn)發(fā)到NVMe控制器450。根據(jù)某些示例,NVMe控制器 450可在隨后導(dǎo)致用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)可被存儲(chǔ)服務(wù)器310-2的邏輯和/ 或特征讀取,以使存儲(chǔ)服務(wù)器310-2能夠通過(guò)將數(shù)據(jù)存儲(chǔ)到由在存儲(chǔ)服務(wù)器310-2中維護(hù) 的另一 NVMe控制器控制的一個(gè)或多個(gè)存儲(chǔ)設(shè)備來(lái)復(fù)制數(shù)據(jù)。
[0085] 根據(jù)某些示例,響應(yīng)于發(fā)送到存儲(chǔ)服務(wù)器310-2的、使存儲(chǔ)服務(wù)器310-2復(fù)制用于 復(fù)制的數(shù)據(jù)340的請(qǐng)求消息,可能已經(jīng)接收到其他RDMA命令。對(duì)于這些示例,請(qǐng)求可能已 經(jīng)由客戶(hù)端305的邏輯和/或特征發(fā)送??闪磉x地,請(qǐng)求可能已經(jīng)由存儲(chǔ)服務(wù)器310-1的 邏輯和/或特征發(fā)送。
[0086] 根據(jù)某些示例,I/O QP420-1到420-n可以維護(hù)在NW I/O設(shè)備430中。對(duì)于這些 示例,I/O QP420-1到420-n可以處于在NW I/O設(shè)備430中維護(hù)的存儲(chǔ)器中,存儲(chǔ)器包括 非易失性存儲(chǔ)器或易失性存儲(chǔ)器中的至少一種。在NW I/O設(shè)備430中維護(hù)的存儲(chǔ)器可以 能夠至少臨時(shí)存儲(chǔ)與存儲(chǔ)服務(wù)器310-1和/或一個(gè)或多個(gè)存儲(chǔ)服務(wù)器310-2到310-n處用 于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)的存儲(chǔ)相關(guān)聯(lián)的信息。信息可以包括一個(gè)或多個(gè)RDMA STag。在某些示例中,一個(gè)或多個(gè)RDMA STag之中的至少一個(gè)RDMA STag可以被包括在被 轉(zhuǎn)發(fā)到NVMe控制器450的其他RDMA命令消息中,以導(dǎo)致用于復(fù)制的數(shù)據(jù)340中所包括的 數(shù)據(jù)可被存儲(chǔ)服務(wù)器310-2中的邏輯和/或特征讀取。
[0087] 圖5示出了第四示例系統(tǒng)。如圖5所示,第四示例系統(tǒng)包括系統(tǒng)500。根據(jù)某些示 例,系統(tǒng)500可以包括耦合到客戶(hù)端305的存儲(chǔ)服務(wù)器310-2,存儲(chǔ)服務(wù)器310-1到和存儲(chǔ) 服務(wù)器310-3到310-n。對(duì)于這些示例,NW I/O設(shè)備530、NVMe控制器550、緩沖器560或 存儲(chǔ)設(shè)備570可以位于存儲(chǔ)服務(wù)器310-2中,被維護(hù)在服務(wù)器310-2處或與服務(wù)器310-2 耦合。此外,如圖5所示,存儲(chǔ)設(shè)備570可以包括用于復(fù)制的數(shù)據(jù)340,其可以包括從客戶(hù)端 305或諸如存儲(chǔ)服務(wù)器310-1之類(lèi)的另一存儲(chǔ)服務(wù)器復(fù)制的數(shù)據(jù)。
[0088] 在某些示例中,由網(wǎng)絡(luò)I/O設(shè)備530和/或服務(wù)器310-2的電路執(zhí)行的邏輯和/ 或特征可以向客戶(hù)端305和/或存儲(chǔ)服務(wù)器310-1或310-3到310-n分配資源,以促進(jìn)對(duì) 由NVMe控制器550控制或通過(guò)NVMe控制器550可訪問(wèn)的存儲(chǔ)設(shè)備570的遠(yuǎn)程訪問(wèn)。對(duì)于 這些示例,單獨(dú)的I/O QP520-1到520-n可以分別被分配或指派給客戶(hù)端305和存儲(chǔ)服務(wù) 器310-U310-3到310-n。此外,緩沖器560的至少諸部分還可以被分配或指派給客戶(hù)端 305和存儲(chǔ)服務(wù)器310-1、310-3到310-n。根據(jù)某些示例,I/O QP520-1到520-n和/或緩 沖器560可以是駐留在可被單獨(dú)管理的存儲(chǔ)服務(wù)器310-2中的系統(tǒng)存儲(chǔ)器的一部分,或存 儲(chǔ)服務(wù)器310-2中維護(hù)的單獨(dú)的系統(tǒng)存儲(chǔ)器的一部分(未示出)??闪磉x地,I/O QP520-1 至lj 520-n可以維護(hù)在NW I/O設(shè)備530中。
[0089] 根據(jù)某些示例,類(lèi)似于圖3或4的系統(tǒng)300或400, I/O QP520-1到520-n可以單 獨(dú)地包括命令提交隊(duì)列和命令完成隊(duì)列,這些隊(duì)列被NW I/O設(shè)備530中的邏輯和/或特征 用于就客戶(hù)端305和/或存儲(chǔ)服務(wù)器310-1或310-3到310-n接收/轉(zhuǎn)發(fā)關(guān)于復(fù)制用于復(fù) 制的數(shù)據(jù)340中所包括的數(shù)據(jù)的RDMA命令或與復(fù)制用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù) 的RDMA命令相關(guān)聯(lián)的請(qǐng)求的RDMA命令/命令完成消息。
[0090] 在某些示例中,類(lèi)似于存儲(chǔ)服務(wù)器310-1的NW I/O設(shè)備430,由NW I/O設(shè)備530 中的電路執(zhí)行的邏輯和/或特征可以從諸如客戶(hù)端305之類(lèi)的客戶(hù)端或諸如存儲(chǔ)服務(wù)器 310-1之類(lèi)的存儲(chǔ)服務(wù)器接收包括STag的RDMA命令。STag可能已經(jīng)由存儲(chǔ)服務(wù)器310-2 軟件(未示出)預(yù)先指派給客戶(hù)端305或存儲(chǔ)服務(wù)器310-1,并可以指示存儲(chǔ)設(shè)備570中 已經(jīng)被分配給客戶(hù)端305和/或被分配用于存儲(chǔ)用于復(fù)制的數(shù)據(jù)340的存儲(chǔ)容量的量或部 分。對(duì)于這些示例,RDMA命令可以是復(fù)制用于復(fù)制的數(shù)據(jù)340中從客戶(hù)端305或存儲(chǔ)服務(wù) 器310-1接收/獲取的數(shù)據(jù),以及將接收/獲取的數(shù)據(jù)存儲(chǔ)在由NVMe控制器550控制和/ 或通過(guò)NVMe控制器550可訪問(wèn)的存儲(chǔ)設(shè)備570中。NW I/O設(shè)備530中的邏輯和/或特征 可以將帶有Stag的RDMA命令轉(zhuǎn)發(fā)到NVMe控制器550。根據(jù)某些示例,NVMe控制器550可 以基于將RDMA命令中所包括的STag與分配部分進(jìn)行關(guān)聯(lián)的關(guān)聯(lián)方案,將用于復(fù)制的數(shù)據(jù) 340中所包括的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備570的分配部分。
[0091] 根據(jù)某些示例,一旦用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)已經(jīng)被存儲(chǔ)到存儲(chǔ)設(shè)備 570中的分配部分,NVMe控制器550就可以生成RDMA命令完成消息。對(duì)于這些示例,NW 1/ 0設(shè)備530中的邏輯和/或特征可以能夠?qū)DMA命令完成消息轉(zhuǎn)發(fā)到接收到的RDMA命令 的源,假設(shè)它是客戶(hù)端305或存儲(chǔ)服務(wù)器310-1,以指出用于復(fù)制數(shù)據(jù)340中所包括的數(shù)據(jù) 的存儲(chǔ)。
[0092] 圖6示出了第五示例系統(tǒng)。如圖6所示,第五示例系統(tǒng)包括系統(tǒng)600。根據(jù)某些示 例,系統(tǒng)600可以包括分別通過(guò)網(wǎng)絡(luò)(NW)連接605-U605-2和605-3,耦合到存儲(chǔ)服務(wù)器 310-U310-2和310-3的客戶(hù)端305。在某些示例中,NW連接605-1到605-3可以通過(guò)一種 或多種類(lèi)型的有線或無(wú)線通信介質(zhì),通過(guò)諸如局部訪問(wèn)網(wǎng)(LAN)之類(lèi)的網(wǎng)絡(luò)(未示出)來(lái) 路由。一種或多種類(lèi)型的有線或無(wú)線通信介質(zhì),例如,可以被配置成允許客戶(hù)端305與服務(wù) 器310-1到310-3交換RDMA消息,這些RDMA消息順應(yīng)包括但不限于iWARP、Infiniband或 RoCE的協(xié)議。
[0093] 在某些示例中,客戶(hù)端305中的邏輯和/或特征可以通過(guò)相應(yīng)的NW連接605-1, 605-2,向存儲(chǔ)服務(wù)器310-1和310-2發(fā)送單獨(dú)的RDMA命令消息。單獨(dú)的RDMA消息可以是 存儲(chǔ)用于復(fù)制的數(shù)據(jù)。對(duì)于這些示例,諸如上文參照?qǐng)D4和5所描述的邏輯和/或特征之 類(lèi)的存儲(chǔ)服務(wù)器310-1和310-2中的邏輯和/或特征可以導(dǎo)致通過(guò)將數(shù)據(jù)存儲(chǔ)在由這些存 儲(chǔ)服務(wù)器中的每一個(gè)中維護(hù)的相應(yīng)的NVMe控制器450和550控制的存儲(chǔ)設(shè)備470或570 中來(lái)復(fù)制數(shù)據(jù)。然后,存儲(chǔ)服務(wù)器310-1和310-2可以向客戶(hù)端305單獨(dú)地發(fā)送RDMA命令 完成消息,這些消息指示數(shù)據(jù)在至少存儲(chǔ)服務(wù)器310-1和310-2之間的復(fù)制。
[0094] 根據(jù)某些示例,可以通過(guò)NW連接605-3,將另一 RDMA命令消息發(fā)送到存儲(chǔ)服務(wù)器 310-3。其他RDMA命令消息可以是存儲(chǔ)與在存儲(chǔ)服務(wù)器310-1和310-2中復(fù)制的或存儲(chǔ)的 數(shù)據(jù)相關(guān)聯(lián)的錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息。對(duì)于這些示例,存儲(chǔ)服務(wù)器310-3中的邏輯和/或 特征可以將錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息存儲(chǔ)在由在存儲(chǔ)服務(wù)器310-3中維護(hù)的NVMe控制器 控制的存儲(chǔ)設(shè)備中。然后,存儲(chǔ)服務(wù)器310-3中的邏輯和/或特征可以向客戶(hù)端305發(fā)送 RDMA命令完成消息,這些消息用于指示錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息的存儲(chǔ)。在某些示例中,錯(cuò) 誤校正或數(shù)據(jù)恢復(fù)信息可以被用來(lái)校正由服務(wù)器310-1或310-2存儲(chǔ)的復(fù)制的數(shù)據(jù)中的一 個(gè)或多個(gè)錯(cuò)誤或用來(lái)恢復(fù)復(fù)制的數(shù)據(jù)的至少某些部分。
[0095] 圖7示出了第六示例系統(tǒng)。如圖7所示,第六示例系統(tǒng)包括系統(tǒng)700。根據(jù)某些示 例,系統(tǒng)700可以包括分別通過(guò)NW連接705-1、705-2、705-3和705-4,耦合到存儲(chǔ)服務(wù)器 310-U310-2和310-4的客戶(hù)端305。在某些示例中,類(lèi)似于圖6的NW連接605-1到605-3、 NW連接705-1到705-4可以通過(guò)一種或多種類(lèi)型的有線或無(wú)線通信介質(zhì),通過(guò)諸如LAN之 類(lèi)的網(wǎng)絡(luò)(未示出)來(lái)路由。一種或多種類(lèi)型的有線或無(wú)線通信介質(zhì),例如,也可以被配置 成允許客戶(hù)端305與服務(wù)器310-1到310-4交換RDMA消息,這些RDMA消息順應(yīng)包括但不 限于 iWARP、Infiniband 或 RoCE 的協(xié)議。
[0096] 在某些示例中,客戶(hù)端305中的邏輯和/或特征可以通過(guò)NW連接705-2,向存儲(chǔ) 服務(wù)器310-1發(fā)送RDMA命令消息。第一 RDMA消息可以是在存儲(chǔ)服務(wù)器310-1中存儲(chǔ)用于 復(fù)制的數(shù)據(jù)340。對(duì)于這些示例,諸如上文參照?qǐng)D4所描述的邏輯和/或特征之類(lèi)的存儲(chǔ) 服務(wù)器310-1中的邏輯和/或特征可以導(dǎo)致用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)被存儲(chǔ)在 由存儲(chǔ)服務(wù)器310-1中維護(hù)的NVMe控制器450控制的存儲(chǔ)設(shè)備470中。然后,存儲(chǔ)服務(wù)器 310-1可以向客戶(hù)端305發(fā)送RDMA命令完成消息,這些消息指示用于復(fù)制的數(shù)據(jù)340至少 在存儲(chǔ)設(shè)備470中的存儲(chǔ)。
[0097] 根據(jù)某些示例,客戶(hù)端305中的邏輯和/或特征可以通過(guò)NW連接705-2,將用于復(fù) 制的數(shù)據(jù)340中所包括的數(shù)據(jù)發(fā)送或推到存儲(chǔ)服務(wù)器310-1中維護(hù)的諸如緩沖器460之類(lèi) 的一個(gè)或多個(gè)緩沖器。然后,客戶(hù)端305中的邏輯和/或特征可以在第一 RDMA消息中指示 數(shù)據(jù)的位置。對(duì)于這些示例,存儲(chǔ)服務(wù)器310-1中的NVMe控制器450可以能夠基于從一個(gè) 或多個(gè)緩沖器中讀取數(shù)據(jù),并將此數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備470中,導(dǎo)致RDMA命令完成消息被 發(fā)送到客戶(hù)端305。在某些示例中,用于復(fù)制的數(shù)據(jù)340可以存儲(chǔ)在存儲(chǔ)設(shè)備470中與由客 戶(hù)端305所發(fā)送的第一 RDMA消息中所包括的STag相關(guān)聯(lián)的分配部分。
[0098] 在某些其他示例中,客戶(hù)端305中的邏輯和/或特征可以將用于復(fù)制的數(shù)據(jù)340 中所包括的數(shù)據(jù)發(fā)送到客戶(hù)端305中維護(hù)的諸如緩沖器360之類(lèi)的一個(gè)或多個(gè)緩沖器。然 后,客戶(hù)端305中的邏輯和/或特征可以在第一 RDMA消息中指示數(shù)據(jù)的位置。對(duì)于這些示 例,存儲(chǔ)服務(wù)器310-1中的NW I/O設(shè)備430可以能夠通過(guò)NW連接705-2從緩沖器360拉 取數(shù)據(jù)。然后,所拉取的數(shù)據(jù)可以至少臨時(shí)存儲(chǔ)到存儲(chǔ)服務(wù)器310-1中的緩沖器460中。 然后,存儲(chǔ)服務(wù)器310-1中的NVMe控制器450可以基于從緩沖器460中讀取數(shù)據(jù),并將此 數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備470中,來(lái)導(dǎo)致RDM命令完成消息被發(fā)送到客戶(hù)端305。在某些示例 中,用于復(fù)制的數(shù)據(jù)340可以存儲(chǔ)在存儲(chǔ)設(shè)備470中與由客戶(hù)端305所發(fā)送的第一 RDMA消 息中所包括的STag相關(guān)聯(lián)的分配部分。
[0099] 在某些示例中,第二RDMA命令消息可以由客戶(hù)端305的邏輯和/或特征通過(guò)NW 連接705-4發(fā)送到存儲(chǔ)服務(wù)器310-4。第二RDMA命令消息可以是存儲(chǔ)與被存儲(chǔ)在存儲(chǔ)服務(wù) 器310-1中的用于復(fù)制的數(shù)據(jù)340相關(guān)聯(lián)的錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息。對(duì)于這些示例,存 儲(chǔ)服務(wù)器310-4中的邏輯和/或特征可以將錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息存儲(chǔ)在由在存儲(chǔ)服務(wù) 器310-4中維護(hù)的NVMe控制器控制的存儲(chǔ)設(shè)備中。然后,存儲(chǔ)服務(wù)器310-3中的邏輯和/ 或特征可以向客戶(hù)端305發(fā)送RDMA命令完成消息,這些消息用于指示錯(cuò)誤校正或數(shù)據(jù)恢復(fù) 信息的存儲(chǔ)。在某些示例中,錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息可以被用來(lái)校正存儲(chǔ)在存儲(chǔ)服務(wù)器 310-1以及還存儲(chǔ)在存儲(chǔ)服務(wù)器310-2中的用于復(fù)制的數(shù)據(jù)340中的一個(gè)或多個(gè)錯(cuò)誤(下 面比較詳細(xì)地描述)或用來(lái)恢復(fù)復(fù)制的數(shù)據(jù)的至少諸部分。
[0100] 根據(jù)某些示例,客戶(hù)端305中的邏輯和/或特征,在從存儲(chǔ)服務(wù)器310-1接收到指 示用于復(fù)制的數(shù)據(jù)340的存儲(chǔ)的RDMA命令完成消息之后,可以通過(guò)相應(yīng)的NW連接705-1 和705-3,向存儲(chǔ)服務(wù)器310-2和310-3發(fā)送單獨(dú)的復(fù)制請(qǐng)求消息。對(duì)于這些示例,存儲(chǔ)服 務(wù)器310-2和310-3中的邏輯和/或特征可以響應(yīng)于來(lái)自客戶(hù)端305的它們的相應(yīng)的復(fù)制 請(qǐng)求消息,各自向存儲(chǔ)服務(wù)器310-1發(fā)送RDMA命令消息。單獨(dú)的RDMA命令消息可以是復(fù) 制存儲(chǔ)在由NVMe控制器450控制的存儲(chǔ)設(shè)備470中的用于復(fù)制的數(shù)據(jù)340中所包括的數(shù) 據(jù)。單獨(dú)的RDMA命令消息可被各自轉(zhuǎn)發(fā)到NVMe控制器450以導(dǎo)致存儲(chǔ)在存儲(chǔ)設(shè)備470中 的用于復(fù)制的數(shù)據(jù)340可被存儲(chǔ)服務(wù)器310-2和310-3讀取。
[0101] 在某些示例中,單獨(dú)的RDMA命令消息可以各自包括一個(gè)或多個(gè)RDMA Stag,用以 指示存儲(chǔ)存儲(chǔ)設(shè)備470中的用于復(fù)制的數(shù)據(jù)340的位置。對(duì)于這些示例,存儲(chǔ)服務(wù)器310-2 和310-3中的相應(yīng)的NW I/O設(shè)備可以能夠使用一個(gè)或多個(gè)RDMA STag,經(jīng)由NW連接710-1 和710-2,拉取用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)。此外,這些存儲(chǔ)服務(wù)器中的NVMe控制 器還可以能夠?qū)⑺〉臄?shù)據(jù)存儲(chǔ)到由這些NVMe控制器控制的存儲(chǔ)設(shè)備,以便復(fù)制用于 復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)。一旦數(shù)據(jù)已經(jīng)被復(fù)制,存儲(chǔ)服務(wù)器310-2和310-3就可以 向存儲(chǔ)服務(wù)器310-1發(fā)送單獨(dú)的RDMA命令完成消息以指示數(shù)據(jù)的成功的復(fù)制。復(fù)制可以 包括由復(fù)制方服務(wù)器計(jì)算各種類(lèi)型的錯(cuò)誤恢復(fù)代碼,包括,但不僅限于,Reed Solomon(李 德所羅門(mén))錯(cuò)誤恢復(fù)代碼集。
[0102] 根據(jù)某些其他示例,單獨(dú)的RDMA命令消息可以各自包括一個(gè)或多個(gè)RDMA STag, 用以指示存儲(chǔ)在存儲(chǔ)設(shè)備470中的用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)的位置,該用于復(fù) 制的數(shù)據(jù)340中所包括的數(shù)據(jù)已通過(guò)NW連接710-1和710-2被推到存儲(chǔ)服務(wù)器310-2和 310-3中的每一個(gè)中的一個(gè)或多個(gè)緩沖器。對(duì)于這些其他示例,這些存儲(chǔ)服務(wù)器中的相應(yīng)的 NVMe控制器可以能夠讀取被推到一個(gè)或多個(gè)緩沖器的數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到由這些NVMe 控制器控制的存儲(chǔ)設(shè)備,以便復(fù)制用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù)。一旦數(shù)據(jù)已經(jīng)被 復(fù)制,存儲(chǔ)服務(wù)器310-2和310-3就可以向存儲(chǔ)服務(wù)器310-1發(fā)送單獨(dú)的RDMA命令完成消 息以指出數(shù)據(jù)的成功的復(fù)制。
[0103] 圖8示出了第七示例系統(tǒng)。如圖8所示,第七示例系統(tǒng)包括系統(tǒng)800。根據(jù)某些示 例,系統(tǒng)800可以包括通過(guò)NW連接805耦合到存儲(chǔ)服務(wù)器310-1的客戶(hù)端305。此外,如圖 8所示,存儲(chǔ)服務(wù)器310-1還可以分別通過(guò)NW連接810-1和810-2耦合到存儲(chǔ)服務(wù)器310-2 和310-3。在某些示例中,NW連接805可以通過(guò)一種或多種類(lèi)型的有線或無(wú)線通信介質(zhì),通 過(guò)諸如LAN之類(lèi)的網(wǎng)絡(luò)(未示出)來(lái)路由。此外,NW連接810-1和810-2還可以通過(guò)一種 或多種類(lèi)型的有線或無(wú)線通信介質(zhì),通過(guò)相同或不同的的網(wǎng)絡(luò)來(lái)路由。一種或多種類(lèi)型的 有線或無(wú)線通信介質(zhì),例如,可以被配置成允許客戶(hù)端305與服務(wù)器310-1交換RDMA消息, 或允許服務(wù)器310-1與存儲(chǔ)服務(wù)器310-2或310-3交換RDMA消息。這些交換的RDMA消息 可以順應(yīng)包括但不限于iWARP、Infiniband或RoCE的協(xié)議。
[0104] 在某些示例中,客戶(hù)端305中的邏輯和/或特征可以通過(guò)NW連接805,向存儲(chǔ)服務(wù) 器310-1發(fā)送RDMA命令消息。RDMA消息可以發(fā)往NVMe控制器450,以將用于復(fù)制的數(shù)據(jù) 340存儲(chǔ)在存儲(chǔ)設(shè)備470中。對(duì)于這些示例,存儲(chǔ)服務(wù)器310-1中的諸如NW I/O設(shè)備430 和/或NVMe控制器450之類(lèi)的邏輯和/或特征可以響應(yīng)于RDMA消息,從客戶(hù)端305讀取 用于復(fù)制的數(shù)據(jù)340中所包括的數(shù)據(jù),并導(dǎo)致將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備470中的分配部分。 NVMe控制器450還可以通過(guò)相應(yīng)的NW連接810-1和810-2,將單獨(dú)的請(qǐng)求消息發(fā)送到存儲(chǔ) 服務(wù)器310-2和310-3,以使這些存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備470中的分配部分的數(shù) 據(jù)。存儲(chǔ)服務(wù)器310-2和310-3的邏輯和/或特征可以復(fù)制用于復(fù)制數(shù)據(jù)340中所包括的 數(shù)據(jù),然后,將單獨(dú)的RDMA命令完成消息發(fā)送到存儲(chǔ)服務(wù)器310-1,以指示成功的復(fù)制。根 據(jù)某些示例,然后,NVMe控制器450可以導(dǎo)致RDMA命令完成消息被發(fā)送到客戶(hù)端305,以指 示用于復(fù)制的數(shù)據(jù)340被成功地復(fù)制到存儲(chǔ)服務(wù)器310-1到310-3。
[0105] 圖9不出了第一設(shè)備的不例框圖。如圖9所不,第一設(shè)備包括設(shè)備900。盡管圖9 中示出的設(shè)備900具有處于特定拓?fù)渲械挠邢迶?shù)量的元素,但可以明白,設(shè)備900可包括給 定實(shí)現(xiàn)所需的處于替換拓?fù)渲械母嗷蚋僭亍?br>
[0106] 設(shè)備900可以由在耦合到客戶(hù)端305 (例如,客戶(hù)端305)的NW I/O設(shè)備中維護(hù)的 電路920來(lái)支持。電路920可以被配置為執(zhí)行一個(gè)或多個(gè)軟件或固件實(shí)現(xiàn)的組件或模塊 922-a。值得注意的是,如此處所使用的"a"和"b"和"c"以及類(lèi)似的符號(hào)旨在作為表示任 何正整數(shù)的變量。如此,例如,如果實(shí)現(xiàn)設(shè)置a = 3的值,那么,模塊922-a的完整的一組軟 件或固件可以包括模塊922-U922-2或922-3。呈現(xiàn)的示例在此上下文不受限制,所使用的 不同的變量可以表示相同或不同的整數(shù)值。
[0107] 根據(jù)某些示例,電路920可以包括處理器或處理器電路。處理器或 處理器電路可以是各種市場(chǎng)上可買(mǎi)到的處理器中的任一種,包括但不僅限于, AMD? Athlon?、Duron?和Opteron?處理器;ARM?應(yīng)用程序、嵌入式和安全處理 器;丨BM? 和 Motorola? DragonBall? 以及 PowerPC?處理器;IBM 和 Sony? Cell 處 理器;Intel? Atom?、Celeron?、Core(核)(2) Duo?、Core i3、Core i5、Core i7、 Itanium?、Pentium?、Xeon?、Xeon Phi?和 xscale?處理器;以及類(lèi)似的處理器。 根據(jù)某些示例,電路920也可以是專(zhuān)用集成電路(ASIC),至少某些模塊922-a可以實(shí)現(xiàn)為 ASIC的硬件元件。
[0108] 根據(jù)某些示例,設(shè)備900可以包括供電路920執(zhí)行的命令模塊922-1。命令模塊 922-1可以能夠發(fā)送存儲(chǔ)可被復(fù)制到多個(gè)存儲(chǔ)服務(wù)器中的數(shù)據(jù)905中所包括的數(shù)據(jù)以及還 將錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息915中所包括的錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息存儲(chǔ)到存儲(chǔ)服務(wù)器 以校正或恢復(fù)與將數(shù)據(jù)復(fù)制到多個(gè)服務(wù)器相關(guān)聯(lián)的可能的錯(cuò)誤的RDM命令。
[0109] 在某些示例中,命令模塊922-1可以能夠至少臨時(shí)存儲(chǔ)RDMA協(xié)議信息924_a、STag 信息925-b (例如,存儲(chǔ)在諸如查詢(xún)表(LUT)之類(lèi)的數(shù)據(jù)結(jié)構(gòu)中或在非易失性存儲(chǔ)器中), 以促進(jìn)將RDMA命令發(fā)送到存儲(chǔ)服務(wù)器。對(duì)于這些示例,RDMA協(xié)議信息924-a可以基于與 iWARP、Infiniband或RoCE相關(guān)聯(lián)的協(xié)議中的至少一個(gè)。此外,對(duì)于這些示例,STag信息 925-b可以包括指示多個(gè)存儲(chǔ)服務(wù)器中的所分配的存儲(chǔ)部分的RDMA STag。RDMA STag可能 已經(jīng)通過(guò)由耦合到設(shè)備900的客戶(hù)端中的軟件或由多個(gè)存儲(chǔ)服務(wù)器中的軟件發(fā)送的客戶(hù) 端RDMA Stag而被接收到。
[0110] 在某些示例中,設(shè)備900也可以包括供電路920執(zhí)行的請(qǐng)求模塊922-2。請(qǐng)求模塊 922-2可以能夠向多個(gè)存儲(chǔ)服務(wù)器中的至少某些發(fā)送復(fù)制被存儲(chǔ)到多個(gè)服務(wù)器中的至少一 個(gè)的數(shù)據(jù)的請(qǐng)求消息。請(qǐng)求模塊922-2可以能夠至少臨時(shí)存儲(chǔ)存儲(chǔ)服務(wù)器信息927-d(例 如,存儲(chǔ)在LUT中),以促進(jìn)發(fā)送可以包括復(fù)制數(shù)據(jù)的請(qǐng)求消息的請(qǐng)求935。
[0111] 在某些示例中,設(shè)備900也可以包括供電路920執(zhí)行的完成模塊922-3。完成模 塊922-3可以能夠接收命令完成消息940中所包括的一個(gè)或多個(gè)RDMA命令完成消息。對(duì) 于這些示例,可以從多個(gè)存儲(chǔ)服務(wù)器之中的存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)接收RDMA命令完 成消息940,這些消息可以指示數(shù)據(jù)905在多個(gè)存儲(chǔ)服務(wù)器之中的至少第一存儲(chǔ)服務(wù)器和 第二存儲(chǔ)服務(wù)器之間的復(fù)制。
[0112] 根據(jù)某些示例,RDMA命令930、請(qǐng)求935和RDMA命令完成消息940可以在具有設(shè) 備900的客戶(hù)端和多個(gè)存儲(chǔ)服務(wù)器之間交換,如上文參照?qǐng)D6-8中的系統(tǒng)600、700或800 所描述的。在此上下文中,示例不受限制。
[0113] 此處所包括的是一組代表用于執(zhí)行所公開(kāi)的體系結(jié)構(gòu)的新穎方面的示例方法的 邏輯流程圖。盡管為了簡(jiǎn)潔起見(jiàn),作為一系列動(dòng)作示出和描述了一個(gè)或多個(gè)方法,但是,所 屬領(lǐng)域的技術(shù)人員將了解和明白,方法不受動(dòng)作的順序的限制。某些動(dòng)作可以按與此處所 示出和描述的不同的順序進(jìn)行和/或與其他動(dòng)作并行地進(jìn)行。例如,本領(lǐng)域的技術(shù)人員將 明白并理解,方法可被替換地表示為一系列相互相關(guān)聯(lián)的狀態(tài)或事件,諸如以狀態(tài)圖的形 式。此外,并非方法中所示出的所有動(dòng)作都是新穎實(shí)現(xiàn)所必需的。
[0114] 邏輯流程可以以軟件、固件,和/或硬件來(lái)實(shí)現(xiàn)。在軟件和固件實(shí)施例中,邏輯流 程可通過(guò)計(jì)算機(jī)執(zhí)行的指令來(lái)實(shí)現(xiàn),該計(jì)算機(jī)執(zhí)行的指令被存儲(chǔ)在例如光學(xué)存儲(chǔ)、磁存儲(chǔ) 或半導(dǎo)體存儲(chǔ)之類(lèi)的至少一種非臨時(shí)計(jì)算機(jī)可讀介質(zhì)或機(jī)器可讀介質(zhì)上。在此上下文中, 示例不受限制。
[0115] 圖10示出第一邏輯流程的示例。如圖10所示,第一邏輯流程包括邏輯流程1000。 邏輯流程1000可表示諸如設(shè)備900之類(lèi)的本文所述的一個(gè)或多個(gè)邏輯、特征或設(shè)備所執(zhí)行 的操作中的一些或全部。更具體而言,邏輯流程1000可以通過(guò)命令模塊922-1、請(qǐng)求模塊 922-2或完成模塊922-3來(lái)實(shí)現(xiàn)。
[0116] 根據(jù)某些示例,在框1002,邏輯流程1000可以包括發(fā)送將用于復(fù)制的數(shù)據(jù)存儲(chǔ)在 多個(gè)存儲(chǔ)服務(wù)器的RDMA命令消息??梢酝ㄟ^(guò)一個(gè)或多個(gè)存儲(chǔ)服務(wù)器和客戶(hù)端設(shè)備之間的 至少一個(gè)網(wǎng)絡(luò)連接,將RDMA命令消息發(fā)送到多個(gè)存儲(chǔ)服務(wù)器之中的一個(gè)或多個(gè)存儲(chǔ)服務(wù) 器。對(duì)于這些示例,客戶(hù)端設(shè)備中所包括的設(shè)備900的命令模塊922-1可以發(fā)送將用于復(fù) 制的數(shù)據(jù)905存儲(chǔ)在多個(gè)存儲(chǔ)服務(wù)器的RDMA命令消息。
[0117] 在某些示例中,在框1004,邏輯流程1000可以從一個(gè)或多個(gè)存儲(chǔ)服務(wù)器接收一 個(gè)或多個(gè)RDMA命令完成消息,這些完成消息用于指示數(shù)據(jù)在多個(gè)存儲(chǔ)服務(wù)器之中的至少 第一存儲(chǔ)服務(wù)器和第二存儲(chǔ)服務(wù)器之間的復(fù)制。對(duì)于這些示例,完成模塊922-3可以接收 RDMA命令完成消息940中所包括的一個(gè)或多個(gè)RDMA命令完成消息,這些完成消息用于指示 數(shù)據(jù)905在第一和第二存儲(chǔ)服務(wù)器中的復(fù)制。
[0118] 在某些示例中,命令模塊922-1和/或完成模塊922-3可以使用RDMA協(xié)議信息 924-a來(lái)發(fā)送或接收順應(yīng)諸如iWARP、Infiniband或RoCE之類(lèi)的協(xié)議的消息。
[0119] 圖11示出第一存儲(chǔ)介質(zhì)的示例。如圖11所示,第一存儲(chǔ)介質(zhì)包括存儲(chǔ)介質(zhì)1100。 存儲(chǔ)介質(zhì)1100可以包括制品。在某些示例中,存儲(chǔ)介質(zhì)1100可以包括任何非瞬態(tài)計(jì)算機(jī) 可讀介質(zhì)或機(jī)器可讀介質(zhì),諸如光學(xué)存儲(chǔ)、磁存儲(chǔ)或半導(dǎo)體存儲(chǔ)。存儲(chǔ)介質(zhì)1100可以存儲(chǔ) 各種類(lèi)型的計(jì)算機(jī)可執(zhí)行指令,諸如實(shí)現(xiàn)邏輯流程1000的指令。計(jì)算機(jī)可讀或機(jī)器可讀 存儲(chǔ)介質(zhì)的示例可包括能夠存儲(chǔ)電子數(shù)據(jù)的任何有形的介質(zhì),包括易失性存儲(chǔ)器或非易失 性存儲(chǔ)器,可移動(dòng)或不可移動(dòng)存儲(chǔ)器,可擦除或不可擦存儲(chǔ)器,可寫(xiě)入或可重寫(xiě)的存儲(chǔ)器等 等。計(jì)算機(jī)可執(zhí)行指令的示例可包括任何合適類(lèi)型的代碼,如源代碼、已編譯的代碼、已解 釋的代碼、可執(zhí)行代碼、靜態(tài)代碼、動(dòng)態(tài)代碼、面向?qū)ο蟠a、可視代碼等等。在此上下文中, 示例不受限制。
[0120] 圖12示出了示例NW I/O設(shè)備1200。在某些示例中,如圖12所示,NW I/O設(shè)備 1200可以包括處理組件1240、其他平臺(tái)組件或通信接口 1260。根據(jù)某些示例,如上文所提 及的,NW I/O設(shè)備1200可以在耦合到客戶(hù)端設(shè)備的NW I/O設(shè)備中實(shí)現(xiàn)。
[0121] 根據(jù)某些示例,處理組件1240可以執(zhí)行設(shè)備900和/或存儲(chǔ)介質(zhì)1100的處理操 作或邏輯。處理組件1240可包括各硬件元素、軟件元素或兩者的組合。硬件元件的示例可 包括器件、邏輯器件、組件、處理器、微處理器、電路、處理器電路、電路元件(例如,晶體管、 電阻器、電容器、感應(yīng)器等等)、集成電路、專(zhuān)用集成電路(ASIC)、可編程邏輯器件(PLD)、 數(shù)字信號(hào)處理器(DSP)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、存儲(chǔ)器單元、邏輯門(mén)、寄存器、半導(dǎo)體器 件、芯片、微芯片、芯片組等等。軟件元件的示例可以包括軟件組件、程序、應(yīng)用、計(jì)算機(jī)程 序、應(yīng)用程序、設(shè)備驅(qū)動(dòng)器、系統(tǒng)程序、軟件開(kāi)發(fā)程序、機(jī)器程序、操作系統(tǒng)軟件、中間件、固 件、軟件模塊、例程、子例程、函數(shù)、方法、過(guò)程、軟件接口、應(yīng)用程序編程接口(API)、指令集、 計(jì)算代碼、計(jì)算機(jī)代碼、代碼段、計(jì)算機(jī)代碼段、字、值、符號(hào),或其任何組合。判斷一個(gè)示例 是否使用硬件元素或軟件元素來(lái)示例可以根據(jù)任意數(shù)量的因素而不同,如所希望的計(jì)算速 率、功率級(jí)別、耐熱性、處理周期預(yù)算、輸入數(shù)據(jù)速率、輸出數(shù)據(jù)速率、存儲(chǔ)器資源、數(shù)據(jù)總線 速度,及其他設(shè)計(jì)或性能約束,如根據(jù)需要給定示例的需要。
[0122] 在某些示例中,其他平臺(tái)組件1250可以包括常見(jiàn)的計(jì)算元件,諸如一個(gè)或多個(gè)處 理器、多核處理器、協(xié)處理器、存儲(chǔ)器單元、芯片組、控制器、外圍設(shè)備、接口、振蕩器、計(jì)時(shí)設(shè) 備等等。存儲(chǔ)器單元的示例可以包括,但不僅限于,一種或多種更高的速度存儲(chǔ)器單元形 式的各種類(lèi)型的計(jì)算機(jī)可讀的和機(jī)器可讀的存儲(chǔ)介質(zhì),諸如ROM、RAM、DRAM、DDRAM、SDRAM、 SRAM、PROM、EPROM、EEPROM、閃存或適用于存儲(chǔ)信息的任何其他類(lèi)型的存儲(chǔ)介質(zhì)。
[0123] 在某些示例中,通信接口 1260可以包括支持通信接口的邏輯和/或特征。對(duì)于這 些示例,通信接口 1260可以包括根據(jù)各種通信協(xié)議或標(biāo)準(zhǔn)來(lái)操作以通過(guò)直接或網(wǎng)絡(luò)通信 鏈路進(jìn)行通信的一種或多種通信接口。直接通信可以通過(guò)使用在一個(gè)或多個(gè)行業(yè)標(biāo)準(zhǔn)(包 括后代和變體)(諸如那些與PCIe規(guī)范、NVMe規(guī)范、RDMA協(xié)議規(guī)范、IEEE802-2-2008規(guī)范、 RFC791或RFC793相關(guān)聯(lián)的)中所描述的通信協(xié)議或標(biāo)準(zhǔn)來(lái)進(jìn)行。
[0124] NW I/O設(shè)備1200的組件和特征可以使用不連續(xù)線路、專(zhuān)用集成電路(ASIC)、邏輯 門(mén)和/或單芯片體系結(jié)構(gòu)的任何組合來(lái)實(shí)現(xiàn)。進(jìn)一步地,在適當(dāng)?shù)那闆r下,NW I/O設(shè)備1200 的特征可以使用微控制器、可編程邏輯陣列和/或微處理器或合適的前面的任何組合來(lái)實(shí) 現(xiàn)。值得注意的是,硬件、固件和/或軟件元素可以共同地或分別地稱(chēng)為"邏輯"或"電路"。
[0125] 應(yīng)該理解,圖12的框圖所示出的示例性NW I/O設(shè)備1200可以表示許多潛在實(shí)現(xiàn) 的一個(gè)功能描述性的示例。相應(yīng)地,附圖中所描繪的塊功能的分割、省略或包括不會(huì)推斷, 用于實(shí)現(xiàn)這些功能的硬件組件、電路、軟件和/或元件將一定被分割,省略,或包括在各實(shí) 施例中。
[0126] 圖13示出了第二設(shè)備的示例框圖。如圖13所示,第二設(shè)備包括設(shè)備1300。盡管 圖13中示出的設(shè)備1300具有處于特定拓?fù)渲械挠邢迶?shù)量的元素,但可以明白,設(shè)備1300 可包括給定實(shí)現(xiàn)所需的處于替換拓?fù)渲械母嗷蚋僭亍?br>
[0127] 設(shè)備1300可以由位于或耦合到存儲(chǔ)服務(wù)器的NW I/O設(shè)備中維護(hù)的電路1320來(lái) 支持,存儲(chǔ)服務(wù)器可以遠(yuǎn)離客戶(hù)端設(shè)備(例如,遠(yuǎn)程客戶(hù)端)。電路1320可以被布置為執(zhí) 行一個(gè)或多個(gè)軟件或固件實(shí)現(xiàn)的組件或模塊1322-a。值得注意的是,如此處所使用的"a" 和"b"和"c"以及類(lèi)似的符號(hào)旨在作為表示任何正整數(shù)的變量。如此,例如,如果實(shí)現(xiàn)設(shè) 置a = 4的值,那么,模塊1322-a的完整的一組軟件或固件可以包括模塊1322-1、1322-2、 1322-2或1322-4。呈現(xiàn)的示例在此上下文不受限制,所使用的不同的變量可以表示相同或 不同的整數(shù)值。
[0128] 根據(jù)某些示例,電路1320可以包括處理器或處理器電路。處理器或 處理器電路可以是各種市場(chǎng)上可買(mǎi)到的處理器中的任一種,包括但不僅限于, AMD? Athlon?、Duron?和Opteron?處理器;ARM?應(yīng)用程序、嵌入式和安全處 理器;丨BM?.和 M〇t〇丨_〇la? DragonBal1? 以及 PowerPC? 處理器;IBM 和 Sony? Cell 處理器;Intel? Atom?、Celeron?、Core ⑵ Duo?、Core i3、Core i5、Core i7、 Itanium?、Pentium?、Xeon?、Xeon Phi?和 XScale?處理器;以及類(lèi)似的處理器。 根據(jù)某些示例,電路1320也可以是專(zhuān)用集成電路(ASIC),至少某些模塊1322-a可以實(shí)現(xiàn)為 ASIC的硬件元件。
[0129] 根據(jù)某些示例,設(shè)備1300可以包括供電路1320執(zhí)行的命令接收模塊1322-1。命令 接收模塊1322-1可以能夠通過(guò)第一網(wǎng)絡(luò)連接,從遠(yuǎn)程客戶(hù)端接收被包括在RDMA命令1310 中的第一 RDMA命令消息。第一 RDMA命令消息可以與在由第一存儲(chǔ)服務(wù)器中維護(hù)的第一 NVMe控制器控制的第一存儲(chǔ)設(shè)備中存儲(chǔ)包括在數(shù)據(jù)1305中的數(shù)據(jù)相關(guān)聯(lián)。對(duì)于這些示例, 命令接收模塊1322-1可以能夠至少臨時(shí)存儲(chǔ)RDMA協(xié)議信息1324-b (例如,在諸如LUT之 類(lèi)的數(shù)據(jù)結(jié)構(gòu)中)。RDMA協(xié)議信息1324-a可以基于與iWARP、Infiniband或RoCE相關(guān)聯(lián)的 協(xié)議中的至少一個(gè),并可以被命令接收模塊1322-1用來(lái)接收第一 RDMA命令消息。
[0130] 在某些示例中,設(shè)備1300也可以包括供電路1320執(zhí)行的命令轉(zhuǎn)發(fā)模塊1322-2。 命令轉(zhuǎn)發(fā)模塊1322-2可以能夠?qū)⒌谝?RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器,以導(dǎo)致第一 NVMe控制器響應(yīng)于RDMA命令1310中所包括的第一 RDMA命令消息,從遠(yuǎn)程客戶(hù)端獲取被包 括在數(shù)據(jù)1305中的數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到中第一存儲(chǔ)設(shè)備中。對(duì)于這些示例,命令轉(zhuǎn)發(fā)模 塊1322-2可以能夠至少臨時(shí)將STag信息1325-b維護(hù)在諸如LUT之類(lèi)的數(shù)據(jù)結(jié)構(gòu)中或非 易失性存儲(chǔ)器中。STag信息1325-b可以包括與第一存儲(chǔ)設(shè)備中所分配的部分相關(guān)聯(lián)的一 個(gè)或多個(gè)STag。
[0131] 在某些示例中,設(shè)備1300也可以包括供電路1320執(zhí)行的完成轉(zhuǎn)發(fā)模塊1322-3。 完成轉(zhuǎn)發(fā)模塊1322-3可以能夠?qū)DMA命令完成消息1335中所包括的RDMA命令完成消息 從第一 NVMe控制器轉(zhuǎn)發(fā)到遠(yuǎn)程客戶(hù)端,以指示將數(shù)據(jù)1305中所包括的數(shù)據(jù)存儲(chǔ)到第一存 儲(chǔ)設(shè)備。
[0132] 根據(jù)某些示例,命令接收模塊1322-1還可以能夠通過(guò)接收被包括在RDMA命令完 成消息1310中的第二RDMA命令消息。對(duì)于這些示例,第二RDMA命令消息可以與復(fù)制數(shù)據(jù) 1305中所包括并且被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)相關(guān)聯(lián)。此外,對(duì)于這些示例,命令轉(zhuǎn)發(fā)模 塊1322-3還可以將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器,以導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè) 備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取。導(dǎo)致數(shù)據(jù)可被讀取可以使第二存儲(chǔ)服務(wù)器能通過(guò)將 數(shù)據(jù)存儲(chǔ)到由在第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備來(lái)復(fù)制數(shù) 據(jù)。對(duì)于這些示例,復(fù)制數(shù)據(jù)還可以包括添加至少一些糾錯(cuò)碼/校驗(yàn)和,以保護(hù)數(shù)據(jù)免于在 在存儲(chǔ)服務(wù)器之間進(jìn)行數(shù)據(jù)復(fù)制期間可能發(fā)生的至少一些錯(cuò)誤。
[0133] 根據(jù)某些示例,設(shè)備1300也可以包括供電路1320執(zhí)行的請(qǐng)求轉(zhuǎn)發(fā)模塊1322-4。 請(qǐng)求轉(zhuǎn)發(fā)模塊1322-4可以能夠從第一 NVMe控制器轉(zhuǎn)發(fā)請(qǐng)求1330中所包括的一個(gè)或多個(gè) 請(qǐng)求消息,以使第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)。對(duì)于這些示例,命令接 收模塊1322-1可以響應(yīng)于被轉(zhuǎn)發(fā)到第二存儲(chǔ)服務(wù)器的請(qǐng)求消息,接收第二RDMA命令消息。
[0134] 一個(gè)或多個(gè)RDMA協(xié)議可以包括,但不限于,iWARP、Infiniband或RoCE協(xié)議。此外, 對(duì)于這些示例,請(qǐng)求轉(zhuǎn)發(fā)模塊1322-4還可以至少臨時(shí)維護(hù)存儲(chǔ)服務(wù)器信息1326-c(例如, 在LUT中),以促進(jìn)將請(qǐng)求消息發(fā)送到第二存儲(chǔ)服務(wù)器,并發(fā)送到可能的其他存儲(chǔ)服務(wù)器以 復(fù)制數(shù)據(jù)1305中所包括的數(shù)據(jù)。
[0135] 根據(jù)某些示例,RDMA命令1310、請(qǐng)求1330和RDMA命令完成消息1335可以在具有 設(shè)備1300的存儲(chǔ)服務(wù)器和遠(yuǎn)程客戶(hù)端或其他存儲(chǔ)服務(wù)器之間交換,如上文參照?qǐng)D6-8中的 系統(tǒng)600、700或800所描述的。在此上下文中,示例不受限制。
[0136] 圖14示出第二邏輯流程的示例。如圖14所示,第二邏輯流程包括邏輯流程1400。 邏輯流程1400可表示諸如設(shè)備1300之類(lèi)的本文所述的一個(gè)或多個(gè)邏輯、特征或設(shè)備所執(zhí) 行的操作中的一些或全部。更具體而言,邏輯流程1400可以通過(guò)命令接收模塊1322-1、命 令轉(zhuǎn)發(fā)模塊1322-2、完成轉(zhuǎn)發(fā)模塊1322-3或請(qǐng)求轉(zhuǎn)發(fā)模塊1322-4來(lái)實(shí)現(xiàn)。
[0137] 根據(jù)某些示例,在框1402,邏輯流程1400可以通過(guò)第一網(wǎng)絡(luò)連接,從遠(yuǎn)程客戶(hù)端 接收第一遠(yuǎn)程RDMA命令消息。第一 RDMA命令消息可以與在由第一存儲(chǔ)服務(wù)器中維護(hù)的第 一 NVMe控制器控制的第一存儲(chǔ)設(shè)備中存儲(chǔ)數(shù)據(jù)相關(guān)聯(lián)。例如,命令接收模塊1322-1還可 以接收RDMA命令1310中所包括的第一 RDMA命令消息中的用于存儲(chǔ)數(shù)據(jù)1305中所包括的 數(shù)據(jù)的第一 RDMA命令消息。
[0138] 在某些示例中,在框1404,邏輯流程1400可以將第一 RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器,以導(dǎo)致第一 NVMe控制器響應(yīng)于RDMA命令消息而從遠(yuǎn)程客戶(hù)端獲取數(shù)據(jù)并將 數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備中。例如,命令轉(zhuǎn)發(fā)模塊1322-2可以將第一 RDMA命令消息轉(zhuǎn)發(fā)到第 一 NVMe控制器,以便數(shù)據(jù)1305中所包括的數(shù)據(jù)被存儲(chǔ)到第一存儲(chǔ)設(shè)備。
[0139] 根據(jù)某些示例,邏輯流程1400在框1406可以將RDMA命令完成消息從第一 NVMe控 制器轉(zhuǎn)發(fā)到客戶(hù)端設(shè)備以指示數(shù)據(jù)的存儲(chǔ)。例如,完成轉(zhuǎn)發(fā)模塊1322-3可以通過(guò)RDMA命 令完成消息1335將RDMA命令完成消息轉(zhuǎn)發(fā)到遠(yuǎn)程客戶(hù)端。
[0140] 在某些示例中,邏輯流程1400在框1400可以通過(guò)第二網(wǎng)絡(luò)連接,從第二存儲(chǔ)服務(wù) 器接收第二RDMA命令消息。第二RDMA命令消息可以與復(fù)制被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù) 相關(guān)聯(lián)。例如,命令接收模塊1322-1可以通過(guò)與第二存儲(chǔ)服務(wù)器的第二網(wǎng)絡(luò)連接,接收第 二RDMA命令消息。
[0141] 根據(jù)某些示例,邏輯流程1400在框1410可以將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器以導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè)備上的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取,以使第二存儲(chǔ) 服務(wù)器能夠通過(guò)將數(shù)據(jù)存儲(chǔ)到由在第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二 存儲(chǔ)設(shè)備來(lái)復(fù)制數(shù)據(jù)。例如,命令轉(zhuǎn)發(fā)模塊1322-2可以將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器。然后,第一 NVMe控制器可以使第二存儲(chǔ)服務(wù)器能將數(shù)據(jù)1305中所包括的數(shù) 據(jù)復(fù)制到由在第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備。
[0142] 圖15示出了第二存儲(chǔ)介質(zhì)的示例。如圖15所示,第二存儲(chǔ)介質(zhì)包括存儲(chǔ)介質(zhì) 1500。存儲(chǔ)介質(zhì)1500可以包括制品。在某些示例中,存儲(chǔ)介質(zhì)1500可以包括任何非瞬時(shí) 的計(jì)算機(jī)可讀介質(zhì)或機(jī)器可讀的介質(zhì),諸如光學(xué)存儲(chǔ)、磁存儲(chǔ)或半導(dǎo)體存儲(chǔ)。存儲(chǔ)介質(zhì)1500 可以存儲(chǔ)各種類(lèi)型的計(jì)算機(jī)可執(zhí)行指令,諸如用于實(shí)現(xiàn)邏輯流程1400的指令。計(jì)算機(jī)可讀 或機(jī)器可讀存儲(chǔ)介質(zhì)的示例可包括能夠存儲(chǔ)電子數(shù)據(jù)的任何有形的介質(zhì),包括易失性存儲(chǔ) 器或非易失性存儲(chǔ)器,可移動(dòng)或不可移動(dòng)存儲(chǔ)器,可擦除或不可擦存儲(chǔ)器,可寫(xiě)入或可重寫(xiě) 的存儲(chǔ)器等等。計(jì)算機(jī)可執(zhí)行指令的示例可包括任何合適類(lèi)型的代碼,如源代碼、已編譯的 代碼、已解釋的代碼、可執(zhí)行代碼、靜態(tài)代碼、動(dòng)態(tài)代碼、面向?qū)ο蟠a、可視代碼等等。在此 上下文中,示例不受限制。
[0143] 圖16示出了示例NW I/O設(shè)備1600。在某些示例中,如圖16所示,NW I/O設(shè)備 1600可以包括處理組件1640、其他平臺(tái)組件或通信接口 1660。根據(jù)某些示例,如上文所提 及的,NW I/O設(shè)備1600可以在耦合到能夠耦合到遠(yuǎn)程客戶(hù)端的服務(wù)器的NW I/O設(shè)備中實(shí) 現(xiàn)。
[0144] 根據(jù)某些示例,處理組件1640可以執(zhí)行設(shè)備1300和/或存儲(chǔ)介質(zhì)1500的處理操 作或邏輯。處理組件1640可包括各硬件元素、軟件元素或兩者的組合。
[0145] 在某些示例中,其他平臺(tái)組件1650可以包括常見(jiàn)的計(jì)算元件,諸如一個(gè)或多個(gè)處 理器、多核處理器、協(xié)處理器、存儲(chǔ)器單元、芯片組、控制器、外圍設(shè)備、接口、振蕩器、定時(shí)設(shè) Λ7雄雄 奮寺寺。
[0146] 在某些示例中,通信接口 1660可以包括支持通信接口的邏輯和/或特征。對(duì)于這 些示例,通信接口 1660可以包括根據(jù)各種通信協(xié)議或標(biāo)準(zhǔn)來(lái)操作以通過(guò)直接或網(wǎng)絡(luò)通信 鏈路進(jìn)行通信的一種或多種通信接口。直接通信可以通過(guò)使用在一個(gè)或多個(gè)行業(yè)標(biāo)準(zhǔn)(包 括后代和變體)(諸如那些與PCIe規(guī)范、NVMe規(guī)范、RDMA協(xié)議規(guī)范、IEEE802-2-2008規(guī)范、 RFC791或RFC793相關(guān)聯(lián)的)中所描述的通信協(xié)議或標(biāo)準(zhǔn)來(lái)進(jìn)行。
[0147] NW I/O設(shè)備1600的組件和特征可以使用不連續(xù)線路、專(zhuān)用集成電路(ASIC)、邏輯 門(mén)和/或單芯片體系結(jié)構(gòu)的任何組合來(lái)實(shí)現(xiàn)。進(jìn)一步地,在適當(dāng)?shù)那闆r下,NW I/O設(shè)備1600 的特征可以使用微控制器、可編程邏輯陣列和/或微處理器或合適的前面的任何組合來(lái)實(shí) 現(xiàn)。值得注意的是,硬件、固件和/或軟件元素可以共同地或分別地稱(chēng)為"邏輯"或"電路"。
[0148] 應(yīng)該理解,圖16的框圖所示出的示例性NW I/O設(shè)備1600可以表示許多潛在的實(shí) 現(xiàn)的一個(gè)功能上描述性的示例。相應(yīng)地,附圖中所描繪的塊功能的分割、省略或包括不會(huì)推 斷,用于實(shí)現(xiàn)這些功能的硬件組件、電路、軟件和/或元件將一定被分割,省略,或包括在各 實(shí)施例中。
[0149] 至少一個(gè)示例的一個(gè)或多個(gè)方面可以通過(guò)存儲(chǔ)在至少一種機(jī)器可讀介質(zhì)上的代 表性的指令來(lái)實(shí)現(xiàn),指令表示處理器內(nèi)的各種邏輯,指令在由機(jī)器、計(jì)算設(shè)備或系統(tǒng)讀取時(shí) 使機(jī)器、計(jì)算設(shè)備或系統(tǒng)制造執(zhí)行此處所描述的技術(shù)的邏輯。被稱(chēng)為"IP核"的這樣的表示 可以存儲(chǔ)在有形的機(jī)器可讀介質(zhì)中,并提供給各種客戶(hù)或生產(chǎn)設(shè)施,以加載到實(shí)際制造邏 輯或處理器的制造機(jī)器中。
[0150] 各示例可以使用硬件元件、軟件元件或兩者的組合來(lái)實(shí)現(xiàn)。在某些示例中,硬件 元件可包括器件、邏輯器件、組件、處理器、微處理器、電路、處理器組件、電路元件(例如, 晶體管、電阻器、電容器、感應(yīng)器等等)、集成電路、專(zhuān)用集成電路(ASIC)、可編程邏輯器件 (PLD)、數(shù)字信號(hào)處理器(DSP)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、存儲(chǔ)器單元、邏輯門(mén)、寄存器、半 導(dǎo)體器件、芯片、微芯片、芯片組等等。在某些示例中,軟件元件可以包括軟件組件、程序、應(yīng) 用程序、計(jì)算機(jī)程序、系統(tǒng)程序、機(jī)器程序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子 例程、函數(shù)、方法、過(guò)程、軟件接口、應(yīng)用程序接口(API)、指令集、計(jì)算代碼、計(jì)算機(jī)代碼、代 碼段、計(jì)算機(jī)代碼段、字、值、符號(hào),或其任何組合。判斷一個(gè)示例是否使用硬件元素或軟件 元素來(lái)實(shí)現(xiàn)可以根據(jù)任意數(shù)量的因素而不同,如所希望的計(jì)算速率、功率級(jí)別、耐熱性、處 理周期預(yù)算、輸入數(shù)據(jù)速率、輸出數(shù)據(jù)速率、存儲(chǔ)器資源、數(shù)據(jù)總線速度,及給定實(shí)現(xiàn)需要的 其他設(shè)計(jì)或性能約束。
[0151] 某些示例可以包括制品或至少一種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以包括存 儲(chǔ)邏輯的非瞬態(tài)存儲(chǔ)介質(zhì)。在某些示例中,非瞬態(tài)存儲(chǔ)介質(zhì)可包括一種或多種類(lèi)型的能夠 存儲(chǔ)電子數(shù)據(jù)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括易失性存儲(chǔ)器或非易失性存儲(chǔ)器,可移動(dòng)或不 可移動(dòng)存儲(chǔ)器,可擦除或不可擦存儲(chǔ)器,可寫(xiě)入或可重寫(xiě)的存儲(chǔ)器等等。在某些示例中,邏 輯可包括各種軟件元素,如軟件組件、程序、應(yīng)用、計(jì)算機(jī)程序、應(yīng)用程序、系統(tǒng)程序、機(jī)器程 序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子例程、函數(shù)、方法、過(guò)程、軟件接口、API、 指令集、計(jì)算代碼、計(jì)算機(jī)代碼、代碼段、計(jì)算機(jī)代碼段、字、值、符號(hào),或其任何組合。
[0152] 根據(jù)某些示例,計(jì)算機(jī)可讀介質(zhì)可以包括存儲(chǔ)或維護(hù)指令的非瞬態(tài)存儲(chǔ)介質(zhì),所 述指令,當(dāng)由機(jī)器、計(jì)算設(shè)備或系統(tǒng)執(zhí)行時(shí),導(dǎo)致機(jī)器、計(jì)算設(shè)備或系統(tǒng)執(zhí)行根據(jù)所描述的 示例的方法和/或操作。指令可包括任何合適類(lèi)型的代碼,如源代碼、已編譯的代碼、已解 釋的代碼、可執(zhí)行代碼、靜態(tài)代碼、動(dòng)態(tài)代碼等等。指令可以根據(jù)預(yù)定義的計(jì)算機(jī)語(yǔ)言、方式 或語(yǔ)法來(lái)實(shí)現(xiàn),以便指示機(jī)器、計(jì)算設(shè)備或系統(tǒng)來(lái)執(zhí)行某一功能。指令可以使用任何合適的 高級(jí)、低級(jí)、面向?qū)ο蟆⒖梢?、已編譯和/或解釋性編程語(yǔ)言來(lái)實(shí)現(xiàn)。
[0153] 可以使用表達(dá)"在一個(gè)示例中"或"示例"以及它們的派生詞來(lái)描述某些示例。這 些術(shù)語(yǔ)意味著,參考示例所描述的特定功能、結(jié)構(gòu)或特征包括在至少一個(gè)示例中。在本說(shuō)明 書(shū)中的不同位置出現(xiàn)短語(yǔ)"在一個(gè)示例中"不一定都是指同一個(gè)示例。
[0154] 可以使用表達(dá)"耦合"和"連接"以及它們的派生詞來(lái)描述某些示例。這些術(shù)語(yǔ)不 一定作為彼此的同義詞。例如,使用術(shù)語(yǔ)"連接"和/或"耦合"的描述可以表示,兩個(gè)或更 多元件彼此處于直接的物理或電接觸的狀態(tài)。然而,術(shù)語(yǔ)"耦合"也可以意味著,兩個(gè)或更 多彼此不直接接觸,但是仍彼此合作或進(jìn)行交互的元件。
[0155] 要強(qiáng)調(diào)的是,提供可公開(kāi)內(nèi)容的摘要以符合37C.F.R.第1.72(b)段,要求將可使 讀者快速地弄清本技術(shù)公開(kāi)的特征的摘要。但應(yīng)理解,它不能被用來(lái)解釋或限制權(quán)利要求 的范圍或含義。此外,在前面的"【具體實(shí)施方式】"中,可以看出,各種特點(diǎn)可以組合在一個(gè)示 例中,以便簡(jiǎn)化說(shuō)明。本發(fā)明的此方法不應(yīng)被解釋為反映帶權(quán)利要求的各示例需要比每一 個(gè)權(quán)利要求中明確地列舉的特點(diǎn)更多的特點(diǎn)的意圖。相反,如下面的權(quán)利要求所反映的,本 發(fā)明的主題在于少于所公開(kāi)的單一示例的所有特點(diǎn)。如此,下面的權(quán)利要求被包括到"詳 細(xì)描述"中,每一個(gè)權(quán)利要求本身也作為單獨(dú)的示例。在所附權(quán)利要求書(shū)中,術(shù)語(yǔ)"包括"和 "其特征在于"被用作相應(yīng)的術(shù)語(yǔ)"包含"和"其中"的普通英語(yǔ)等效詞。此外,術(shù)語(yǔ)"第一"、 "第二"、"第三"等等只用作標(biāo)記,并不旨在對(duì)它們的對(duì)象施加數(shù)值要求。
[0156] 在某些示例中,網(wǎng)絡(luò)I/O設(shè)備的示例第一設(shè)備可以包括電路。示例第一設(shè)備還可 以包括供電路執(zhí)行的命令模塊,用以發(fā)送把用于復(fù)制的數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ)服務(wù)器中的 RDMA命令消息。可以通過(guò)一個(gè)或多個(gè)存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè)備之間的至少一個(gè)網(wǎng)絡(luò)連 接,將RDMA命令消息發(fā)送到多個(gè)存儲(chǔ)服務(wù)器之中的一個(gè)或多個(gè)存儲(chǔ)服務(wù)器。示例第一設(shè)備 還可以包括供電路執(zhí)行以從一個(gè)或多個(gè)存儲(chǔ)服務(wù)器接收一個(gè)或多個(gè)RDMA命令完成消息的 完成模塊,這些消息指示數(shù)據(jù)在多個(gè)存儲(chǔ)服務(wù)器之中的至少第一和第二存儲(chǔ)服務(wù)器之間的 復(fù)制。
[0157] 在示例第一設(shè)備的某些示例中,命令模塊可以通過(guò)相應(yīng)的第一和第二網(wǎng)絡(luò)連接向 第一存儲(chǔ)服務(wù)器和第二存儲(chǔ)服務(wù)器兩者發(fā)送RDMA命令消息,并且完成模塊從第一和第二 存儲(chǔ)服務(wù)器接收相應(yīng)的第一和第二RDMA命令完成消息,完成消息指示數(shù)據(jù)在至少第一和 第二存儲(chǔ)服務(wù)器之間的復(fù)制。
[0158] 根據(jù)不例第一設(shè)備的某些不例,命令模塊向第一存儲(chǔ)服務(wù)器發(fā)送RDMA命令消息 可以包括命令模塊向在第一存儲(chǔ)服務(wù)器中維護(hù)的控制第一存儲(chǔ)設(shè)備的第一 NVMe控制器發(fā) 送RDMA命令消息并導(dǎo)致數(shù)據(jù)被推到第一存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)緩沖器。第一 NVMe控制 器可以能夠基于從一個(gè)或多個(gè)緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)設(shè)備中,導(dǎo)致第 一 RDMA命令完成消息被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。對(duì)于這些示例,命令模塊向第二存儲(chǔ)服務(wù)器 發(fā)送RDMA命令消息包括命令模塊向在第二存儲(chǔ)服務(wù)器中維護(hù)的控制第二存儲(chǔ)設(shè)備的第二 NVMe控制器發(fā)送RDMA命令消息并導(dǎo)致數(shù)據(jù)被推到第二存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)緩沖器。 第二NVMe控制器可以能夠基于從一個(gè)或多個(gè)緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ) 設(shè)備中,導(dǎo)致第二RDMA命令完成消息被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。
[0159] 在示例第一設(shè)備的某些示例中,命令模塊可以通過(guò)第三存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè) 備之間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù)器發(fā)送RDMA命令消息。對(duì)于這些示例,RDMA命令 消息發(fā)往在第三存儲(chǔ)服務(wù)器中維護(hù)的控制存儲(chǔ)設(shè)備的NVMe控制器。NVMe控制器能夠響應(yīng) 于RDMA命令消息,從客戶(hù)端設(shè)備獲取數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備,并導(dǎo)致RDMA命令完成 消息被發(fā)送到完成模塊以指示數(shù)據(jù)的存儲(chǔ)。示例第一設(shè)備還可以包括請(qǐng)求模塊,該請(qǐng)求模 塊供電路執(zhí)行以通過(guò)網(wǎng)絡(luò)I/O設(shè)備和第一存儲(chǔ)服務(wù)器之間的第二網(wǎng)絡(luò)連接,向第一存儲(chǔ)服 務(wù)器發(fā)送使第一存儲(chǔ)服務(wù)器復(fù)制存儲(chǔ)到被存儲(chǔ)設(shè)備的數(shù)據(jù)的第一請(qǐng)求消息。對(duì)于這些示 例,請(qǐng)求模塊可以通過(guò)網(wǎng)絡(luò)I/O設(shè)備和第二存儲(chǔ)服務(wù)器之間的第三網(wǎng)絡(luò)連接,向第二存儲(chǔ) 服務(wù)器發(fā)送使第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備的數(shù)據(jù)的第二請(qǐng)求消息。
[0160] 根據(jù)示例第一設(shè)備的某些示例,命令模塊可以導(dǎo)致數(shù)據(jù)被推到第三存儲(chǔ)設(shè)備中的 一個(gè)或多個(gè)緩沖器,并在RDMA命令消息中指示數(shù)據(jù)的位置。對(duì)于這些示例,完成模塊基 于NVMe控制器從一個(gè)或多個(gè)緩沖器讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備中的分配部分,從 NVMe控制器接收RDMA命令完成消息。
[0161] 在示例第一設(shè)備的某些示例中,命令模塊可以導(dǎo)致數(shù)據(jù)被推到耦合到網(wǎng)絡(luò)I/O設(shè) 備的客戶(hù)端設(shè)備中的一個(gè)或多個(gè)緩沖器,并在RDMA命令消息中指示數(shù)據(jù)的位置。第三存儲(chǔ) 服務(wù)器中的網(wǎng)絡(luò)I/O設(shè)備可以能夠從客戶(hù)端設(shè)備中的一個(gè)或多個(gè)緩沖器拉取數(shù)據(jù),以至少 臨時(shí)將數(shù)據(jù)存儲(chǔ)到第三存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器中。對(duì)于這些示例,完成模塊基 于NVMe控制器從第三存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè) 備中的分配部分,從NVMe控制器接收RDMA命令完成消息。
[0162] 根據(jù)示例第一設(shè)備的某些示例,命令模塊可以通過(guò)第三存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè) 備之間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù)器發(fā)送RDMA命令消息。RDMA命令消息可以發(fā)往在 第三存儲(chǔ)服務(wù)器中維護(hù)的控制存儲(chǔ)設(shè)備的NVMe控制器。對(duì)于這些示例,完成模塊可以基于 NVMe控制器響應(yīng)于RDMA命令消息從網(wǎng)絡(luò)I/O設(shè)備讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備中的 分配部分,從NVMe控制器接收RDMA命令完成消息。NVMe控制器還可以通過(guò)第三存儲(chǔ)服務(wù) 器和第一存儲(chǔ)服務(wù)器之間的第二網(wǎng)絡(luò)連接,向第一存儲(chǔ)服務(wù)器發(fā)送使第一存儲(chǔ)服務(wù)器復(fù)制 被存儲(chǔ)到存儲(chǔ)設(shè)備的數(shù)據(jù)的第一請(qǐng)求消息,以及,通過(guò)第三存儲(chǔ)服務(wù)器和第二存儲(chǔ)服務(wù)器 之間的第三網(wǎng)絡(luò)連接,向第二存儲(chǔ)服務(wù)器發(fā)送使第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備的 數(shù)據(jù)的第二請(qǐng)求消息。
[0163] 在示例第一設(shè)備的某些示例中,RDMA命令消息和RDMA命令完成消息可以順應(yīng)包 括iWARP、Infiniband或RoCE中的一個(gè)的協(xié)議。
[0164] 根據(jù)某些示例,示例第一設(shè)備也可以包括具有非易失性存儲(chǔ)器或易失性存儲(chǔ)器中 的至少一種的存儲(chǔ)器。存儲(chǔ)器可以能夠至少臨時(shí)存儲(chǔ)與把用于復(fù)制的數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ) 服務(wù)器相關(guān)聯(lián)的信息。信息可以包括一個(gè)或多個(gè)RDMA STag,一個(gè)或多個(gè)RDMA服務(wù)標(biāo)記之 中的至少一個(gè)RDMA服務(wù)標(biāo)記被包括在RDMA命令消息中。
[0165] 在某些示例中,在網(wǎng)絡(luò)I/O設(shè)備中實(shí)現(xiàn)的示例第一方法可以包括發(fā)送把用于復(fù)制 的數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ)服務(wù)器的RDMA命令消息??梢酝ㄟ^(guò)一個(gè)或多個(gè)存儲(chǔ)服務(wù)器和網(wǎng)絡(luò) I/O設(shè)備之間的至少一個(gè)網(wǎng)絡(luò)連接,將RDMA命令消息發(fā)送到多個(gè)存儲(chǔ)服務(wù)器之中的一個(gè)或 多個(gè)存儲(chǔ)服務(wù)器。示例第一方法還可以包括從一個(gè)或多個(gè)存儲(chǔ)服務(wù)器接收一個(gè)或多個(gè)RDMA 命令完成消息,這些消息用于指示數(shù)據(jù)在多個(gè)存儲(chǔ)服務(wù)器之中的至少第一和第二存儲(chǔ)服務(wù) 器之間的復(fù)制。
[0166] 根據(jù)某些示例,示例第一方法還可以通過(guò)相應(yīng)的第一和第二網(wǎng)絡(luò)連接向第一存儲(chǔ) 服務(wù)器和第二存儲(chǔ)服務(wù)器兩者發(fā)送RDMA命令消息,以及從第一和第二存儲(chǔ)服務(wù)器接收相 應(yīng)的第一和第二RDMA命令完成消息,完成消息指示數(shù)據(jù)在至少第一和第二存儲(chǔ)服務(wù)器之 間的復(fù)制。
[0167] 在示例第一方法的某些示例中,向第一存儲(chǔ)服務(wù)器發(fā)送RDMA命令消息可以包括 向在第一存儲(chǔ)服務(wù)器中維護(hù)的控制第一存儲(chǔ)設(shè)備的NVMe控制器發(fā)送RDMA命令消息。示例 第一方法還可以包括向第一存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器發(fā)送數(shù)據(jù),第一 NVMe控制 器能夠基于從一個(gè)或多個(gè)緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)設(shè)備中,導(dǎo)致所述第 一 RDMA命令完成消息被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。示例第一方法還可以包括,向第二存儲(chǔ)服務(wù) 器發(fā)送RDMA命令消息包括向在第二存儲(chǔ)服務(wù)器中維護(hù)的控制第二存儲(chǔ)設(shè)備的第二NVMe控 制器發(fā)送RDMA命令消息并向第二存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器發(fā)送數(shù)據(jù)。第二NVMe 控制器可以能夠基于從一個(gè)或多個(gè)緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)設(shè)備中,導(dǎo) 致第二RDMA命令完成消息被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。
[0168] 根據(jù)某些示例,示例第一方法還可以包括通過(guò)第三網(wǎng)絡(luò)連接,將與被復(fù)制到第一 和第二存儲(chǔ)服務(wù)器的數(shù)據(jù)相關(guān)聯(lián)的錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息發(fā)送到第三存儲(chǔ)服務(wù)器。對(duì)于 這些示例,錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息用于校正復(fù)制的數(shù)據(jù)中的一個(gè)或多個(gè)錯(cuò)誤或恢復(fù)復(fù)制 的數(shù)據(jù)的至少諸部分。
[0169] 在某些示例中,示例第一方法還可以包括通過(guò)第三存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè)備之 間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù)器發(fā)送RDMA命令消息。RDMA命令消息可以發(fā)往在第三 存儲(chǔ)服務(wù)器中維護(hù)的控制存儲(chǔ)設(shè)備的NVMe控制器。NVMe控制器能夠響應(yīng)于RDMA命令消 息,從網(wǎng)絡(luò)I/O設(shè)備獲取數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備,并導(dǎo)致RDMA命令完成消息被發(fā)送到 網(wǎng)絡(luò)I/O設(shè)備以指示數(shù)據(jù)的存儲(chǔ)。示例第一方法還可以包括通過(guò)網(wǎng)絡(luò)I/O設(shè)備和第一存儲(chǔ) 服務(wù)器之間的第二網(wǎng)絡(luò)連接,向第一存儲(chǔ)服務(wù)器發(fā)送使第一存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ) 設(shè)備的數(shù)據(jù)的第一請(qǐng)求消息。示例第一方法還可以包括通過(guò)網(wǎng)絡(luò)I/O設(shè)備和第二存儲(chǔ)服務(wù) 器之間的第三網(wǎng)絡(luò)連接,向第二存儲(chǔ)服務(wù)器發(fā)送使第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備 的數(shù)據(jù)的第二請(qǐng)求消息。
[0170] 根據(jù)某些示例,示例第一方法還可以包括向第三存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)緩沖器 發(fā)送數(shù)據(jù),并在RDMA命令消息中指示數(shù)據(jù)的位置,第二NVMe控制器能夠基于從一個(gè)或多個(gè) 緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)設(shè)備中的分配部分,導(dǎo)致RDMA命令完成消息 被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。
[0171] 在某些示例中,示例第一方法還可以包括向耦合到網(wǎng)絡(luò)I/O設(shè)備的客戶(hù)端設(shè)備中 的一個(gè)或多個(gè)緩沖器發(fā)送數(shù)據(jù)。示例第一方法還可以包括在RDMA命令消息中指出數(shù)據(jù)的 位置。第三存儲(chǔ)服務(wù)器中的網(wǎng)絡(luò)I/O設(shè)備可以能夠從客戶(hù)端設(shè)備中的一個(gè)或多個(gè)緩沖器拉 取數(shù)據(jù),以至少臨時(shí)將數(shù)據(jù)存儲(chǔ)到第三存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器中。第二NVMe控 制器可以能夠基于從第三存儲(chǔ)服務(wù)器上的一個(gè)或多個(gè)緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在 第二存儲(chǔ)設(shè)備中的分配部分,導(dǎo)致RDMA命令完成消息被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。
[0172] 根據(jù)某些示例,示例第一方法還可以包括通過(guò)網(wǎng)絡(luò)I/O設(shè)備和第四存儲(chǔ)服務(wù)器之 間的第四網(wǎng)絡(luò)連接,將與被復(fù)制到第一和第二存儲(chǔ)服務(wù)器的數(shù)據(jù)相關(guān)聯(lián)的錯(cuò)誤校正或數(shù)據(jù) 恢復(fù)信息發(fā)送到第四存儲(chǔ)服務(wù)器。對(duì)于這些示例,錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息用于校正復(fù)制 的數(shù)據(jù)中的一個(gè)或多個(gè)錯(cuò)誤或恢復(fù)復(fù)制的數(shù)據(jù)的至少諸部分。
[0173] 在某些示例中,示例第一方法還可以包括通過(guò)第三存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè)備之 間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù)器發(fā)送RDMA命令消息。RDMA命令消息發(fā)往在第三存 儲(chǔ)服務(wù)器中維護(hù)的控制存儲(chǔ)設(shè)備的NVMe控制器。示例第一方法還可以包括基于NVMe控制 器響應(yīng)于RDMA命令消息從網(wǎng)絡(luò)I/O設(shè)備讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備中的分配部分, 從NVMe控制器接收RDMA命令完成消息。所述NVMe控制器還通過(guò)所述第三存儲(chǔ)服務(wù)器和 所述第一存儲(chǔ)服務(wù)器之間的第二網(wǎng)絡(luò)連接,向所述第一存儲(chǔ)服務(wù)器發(fā)送使所述第一存儲(chǔ)服 務(wù)器復(fù)制被存儲(chǔ)到所述存儲(chǔ)設(shè)備的數(shù)據(jù)的第一請(qǐng)求消息,以及,通過(guò)所述第三存儲(chǔ)服務(wù)器 和所述第二存儲(chǔ)服務(wù)器之間的第三網(wǎng)絡(luò)連接,向所述第二存儲(chǔ)服務(wù)器發(fā)送使所述第二存儲(chǔ) 服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備的數(shù)據(jù)的第二請(qǐng)求消息。
[0174] 根據(jù)示例第一方法的某些示例,RDMA命令消息和RDMA命令完成消息可以順應(yīng)包 括iWARP、Infiniband或RoCE中的一個(gè)的協(xié)議。
[0175] 在某些示例中,包括多個(gè)指令的第一至少一種機(jī)器可讀介質(zhì),所述指令,響應(yīng)于在 網(wǎng)絡(luò)I/O設(shè)備上執(zhí)行,導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備發(fā)送把用于復(fù)制的數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ)服務(wù)器的 RDMA命令消息。可以通過(guò)一個(gè)或多個(gè)存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè)備之間的至少一個(gè)網(wǎng)絡(luò)連 接,將RDMA命令消息發(fā)送到多個(gè)存儲(chǔ)服務(wù)器之中的一個(gè)或多個(gè)存儲(chǔ)服務(wù)器。RDMA命令消息 可以順應(yīng)包括iWARP、Infiniband或RoCE中的一個(gè)的協(xié)議。指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備 從一個(gè)或多個(gè)存儲(chǔ)服務(wù)器接收一個(gè)或多個(gè)RDMA命令完成消息,這些消息用于指示數(shù)據(jù)在 多個(gè)存儲(chǔ)服務(wù)器之中的至少第一和第二存儲(chǔ)服務(wù)器之間的復(fù)制。RDMA命令完成消息順應(yīng)協(xié) 議。
[0176] 根據(jù)第一至少一種機(jī)器可讀介質(zhì)的某些示例,指令還導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備通過(guò)相應(yīng) 的第一和第二網(wǎng)絡(luò)連接,向第一存儲(chǔ)服務(wù)器和第二存儲(chǔ)服務(wù)器兩者發(fā)送RDMA命令消息,以 及從第一和第二存儲(chǔ)服務(wù)器接收相應(yīng)的第一和第二RDMA命令完成消息,完成消息指示數(shù) 據(jù)在至少第一和第二存儲(chǔ)服務(wù)器之間的復(fù)制。
[0177] 在第一至少一種機(jī)器可讀介質(zhì)的某些示例中,指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備向第 一存儲(chǔ)服務(wù)器中維護(hù)的控制第一存儲(chǔ)設(shè)備的NVMe控制器發(fā)送RDMA命令消息,并導(dǎo)致數(shù)據(jù) 被推到第一存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器。第一 NVMe控制器可以能夠基于從一個(gè)或 多個(gè)緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)設(shè)備中,導(dǎo)致第一 RDMA命令完成消息被 發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備向第二存儲(chǔ)服務(wù)器中維護(hù)的控制第二 存儲(chǔ)設(shè)備的第二NVMe控制器發(fā)送RDMA命令消息,并導(dǎo)致數(shù)據(jù)被推到第二存儲(chǔ)服務(wù)器中的 一個(gè)或多個(gè)緩沖器,第二NVMe控制器能夠基于從一個(gè)或多個(gè)緩沖器中讀取數(shù)據(jù)并將數(shù)據(jù) 存儲(chǔ)在第二存儲(chǔ)設(shè)備中,導(dǎo)致第二RDMA命令完成消息被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備。
[0178] 根據(jù)第一至少一種機(jī)器可讀介質(zhì)的某些示例,指令還導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備通過(guò)第三 存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè)備之間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù)器發(fā)送RDMA命令消息。 RDMA命令消息可以發(fā)往在第三存儲(chǔ)服務(wù)器中維護(hù)的控制存儲(chǔ)設(shè)備的NVMe控制器。NVMe控 制器能夠響應(yīng)于RDMA命令消息,從網(wǎng)絡(luò)I/O設(shè)備獲取數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備,并導(dǎo)致 RDMA命令完成消息被發(fā)送到網(wǎng)絡(luò)I/O設(shè)備以指示數(shù)據(jù)的存儲(chǔ)。指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè) 備通過(guò)網(wǎng)絡(luò)I/O設(shè)備和第一存儲(chǔ)服務(wù)器之間的第二網(wǎng)絡(luò)連接,向第一存儲(chǔ)服務(wù)器發(fā)送使第 一存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備的數(shù)據(jù)的第一請(qǐng)求消息。指令還可以導(dǎo)致I/O設(shè)備通 過(guò)客戶(hù)端設(shè)備和第二存儲(chǔ)服務(wù)器之間的第三網(wǎng)絡(luò)連接,向第二存儲(chǔ)服務(wù)器發(fā)送使第二存儲(chǔ) 服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備的數(shù)據(jù)的第二請(qǐng)求消息。
[0179] 在第一至少一種機(jī)器可讀介質(zhì)的某些示例中,指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備通過(guò) 第三存儲(chǔ)服務(wù)器和網(wǎng)絡(luò)I/O設(shè)備之間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù)器發(fā)送RDMA命令消 息,RDMA命令消息發(fā)往在第三存儲(chǔ)服務(wù)器中維護(hù)的控制存儲(chǔ)設(shè)備的NVMe控制器。指令還 可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備基于NVMe控制器響應(yīng)于RDMA命令消息,從網(wǎng)絡(luò)I/O設(shè)備讀取數(shù)據(jù), 將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備中的分配部分,從NVMe控制器接收RDM命令完成消息。NVMe控制 器還可以通過(guò)第三存儲(chǔ)服務(wù)器和第一存儲(chǔ)服務(wù)器之間的第二網(wǎng)絡(luò)連接,向第一存儲(chǔ)服務(wù)器 發(fā)送使第一存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備的數(shù)據(jù)的第一請(qǐng)求消息,以及,通過(guò)所述第 三存儲(chǔ)服務(wù)器和所述第二存儲(chǔ)服務(wù)器之間的第三網(wǎng)絡(luò)連接,向所述第二存儲(chǔ)服務(wù)器發(fā)送使 所述第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到存儲(chǔ)設(shè)備的數(shù)據(jù)的第二請(qǐng)求消息。
[0180] 在某些示例中,網(wǎng)絡(luò)I/O設(shè)備的示例第二設(shè)備可以包括電路。示例第二設(shè)備還可 以包括供電路執(zhí)行的命令接收模塊,用以通過(guò)第一網(wǎng)絡(luò)連接從遠(yuǎn)程客戶(hù)端接收第一 RDMA 命令消息。第一RDMA命令消息與在由耦合到網(wǎng)絡(luò)I/O設(shè)備的第一存儲(chǔ)服務(wù)器中維護(hù)的第一 NVMe控制器控制的第一存儲(chǔ)設(shè)備中存儲(chǔ)數(shù)據(jù)相關(guān)聯(lián)。示例第二設(shè)備還可以包括命令轉(zhuǎn)發(fā)模 塊,該命令轉(zhuǎn)發(fā)模塊供電路執(zhí)行以將第一 RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器,以導(dǎo)致第 一 NVMe控制器,響應(yīng)于第一 RDMA命令消息,從遠(yuǎn)程客戶(hù)端獲取數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到存儲(chǔ) 設(shè)備中。示例第二設(shè)備還可以包括完成轉(zhuǎn)發(fā)模塊,該完成轉(zhuǎn)發(fā)模塊供電路執(zhí)行以將RDMA命 令完成消息從第一 NVMe控制器轉(zhuǎn)發(fā)到遠(yuǎn)程客戶(hù)端,以指示數(shù)據(jù)的存儲(chǔ)。命令接收模塊可以 通過(guò)第二網(wǎng)絡(luò)連接從第二存儲(chǔ)服務(wù)器接收第二RDMA命令消息。第二RDMA命令消息與復(fù)制 被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)相關(guān)聯(lián)。示例第二設(shè)備還可以包括命令轉(zhuǎn)發(fā)模塊,該命令轉(zhuǎn) 發(fā)模塊用以將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器,以導(dǎo)致存儲(chǔ)到第一存儲(chǔ)設(shè)備中 的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取,以使第二存儲(chǔ)服務(wù)器能通過(guò)將數(shù)據(jù)存儲(chǔ)到由在第二存儲(chǔ) 服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備來(lái)復(fù)制數(shù)據(jù)。
[0181] 在某些示例中,示例第二設(shè)備還可以包括請(qǐng)求轉(zhuǎn)發(fā)模塊,該請(qǐng)求轉(zhuǎn)發(fā)模塊供電路 執(zhí)行以從第一 NVMe控制器轉(zhuǎn)發(fā)使第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)的請(qǐng) 求消息。命令接收模塊響應(yīng)于被轉(zhuǎn)發(fā)到第二存儲(chǔ)服務(wù)器的請(qǐng)求消息,接收第二RDMA命令消 肩、。
[0182] 根據(jù)示例第二設(shè)備的某些示例,命令轉(zhuǎn)發(fā)模塊可以將第二RDMA命令消息轉(zhuǎn)發(fā)到 第一 NVMe控制器,以導(dǎo)致通過(guò)包括用于指示存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的位置的RDMA Stag的第二RDMA命令消息,存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取。第二 存儲(chǔ)服務(wù)器上的第二網(wǎng)絡(luò)I/O設(shè)備可以能夠使用RDMA STag來(lái)從第一存儲(chǔ)設(shè)備拉取數(shù)據(jù), 而第二NVMe控制器能夠?qū)⒗〉降臄?shù)據(jù)存儲(chǔ)到第二存儲(chǔ)設(shè)備,以便復(fù)制數(shù)據(jù)。
[0183] 在示例第二設(shè)備的某些示例中,命令轉(zhuǎn)發(fā)模塊可以將第二RDMA命令消息轉(zhuǎn)發(fā)到 第一 NVMe控制器,以導(dǎo)致通過(guò)致使存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)被推到第二存儲(chǔ)服務(wù)器 上的一個(gè)或多個(gè)緩沖器,存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取。對(duì)于這 些示例,命令轉(zhuǎn)發(fā)模塊可以與轉(zhuǎn)發(fā)的第二RDMA命令一起包括RDMA STag,以指示用于將數(shù) 據(jù)存儲(chǔ)到第二存儲(chǔ)設(shè)備的分配部分。第二NVMe控制器可以能夠讀取被推到第二存儲(chǔ)服務(wù) 器中的一個(gè)或多個(gè)緩沖器的數(shù)據(jù),并使用RDMA STag將數(shù)據(jù)存儲(chǔ)到分配部分,以便復(fù)制數(shù) 據(jù)。
[0184] 根據(jù)某些示例,RDMA命令消息和RDMA命令完成消息可以順應(yīng)包括iWARP、 Infiniband或RoCE中的一個(gè)的協(xié)議。
[0185] 在示例第二設(shè)備的某些示例中,第一存儲(chǔ)設(shè)備可以包括固態(tài)驅(qū)動(dòng)器(SSD),固態(tài)驅(qū) 動(dòng)器(SSD)具有非易失性存儲(chǔ)器,所述非易失性存儲(chǔ)器包括3維交叉點(diǎn)存儲(chǔ)器、閃存、鐵電 存儲(chǔ)器、硅-氧化物-氮化物-氧化物-硅(S0N0S)存儲(chǔ)器、聚合物存儲(chǔ)器、納米線、鐵電晶 體管隨機(jī)存取存儲(chǔ)器(FeTRAM或FeRAM)、納米線或電可擦可編程只讀存儲(chǔ)器(EEPROM)中的 至少一種。
[0186] 根據(jù)某些示例,示例第二設(shè)備也可以包括包括具有非易失性存儲(chǔ)器或易失性存儲(chǔ) 器中的至少一種的存儲(chǔ)器。存儲(chǔ)器可以能夠至少臨時(shí)存儲(chǔ)與把用于復(fù)制的數(shù)據(jù)存儲(chǔ)到第二 存儲(chǔ)服務(wù)器相關(guān)聯(lián)的信息。信息可以包括一個(gè)或多個(gè)RDM STag,一個(gè)或多個(gè)RDM STag之 中的至少一個(gè)RDM STag將被包括在由命令轉(zhuǎn)發(fā)模塊轉(zhuǎn)發(fā)到第一 NVMe控制器的第二RDMA 命令消息中,以導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取。
[0187] 在某些示例中,在網(wǎng)絡(luò)I/O設(shè)備中實(shí)現(xiàn)的示例第二方法可以包括在網(wǎng)絡(luò)I/O設(shè)備 中通過(guò)第一網(wǎng)絡(luò)連接,從遠(yuǎn)程客戶(hù)端接收第一 RDMA命令消息。第一 RDMA命令消息可以與 在由耦合到網(wǎng)絡(luò)I/O設(shè)備的第一存儲(chǔ)服務(wù)器中維護(hù)的第一 NVMe控制器控制的第一存儲(chǔ)設(shè) 備中存儲(chǔ)數(shù)據(jù)相關(guān)聯(lián)。示例第一方法還可以包括將第一 RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控 制器,以導(dǎo)致第一 NVMe控制器響應(yīng)于RDMA命令消息而從遠(yuǎn)程客戶(hù)端獲取數(shù)據(jù)并將數(shù)據(jù)存 儲(chǔ)到第一存儲(chǔ)設(shè)備中。示例第一方法還可以包括將RDMA命令完成消息從第一 NVMe控制器 轉(zhuǎn)發(fā)到遠(yuǎn)程客戶(hù)端以指示數(shù)據(jù)的存儲(chǔ)。示例第一方法還可以包括通過(guò)第二網(wǎng)絡(luò)連接,從第 二存儲(chǔ)服務(wù)器接收第二RDMA命令消息,第二RDMA命令消息與復(fù)制被存儲(chǔ)到第一存儲(chǔ)設(shè)備 的數(shù)據(jù)相關(guān)聯(lián)。示例第一方法還可以包括將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器, 以導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取,以使第二存儲(chǔ)服務(wù)器能夠 通過(guò)將數(shù)據(jù)存儲(chǔ)到由在第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備來(lái) 復(fù)制數(shù)據(jù)。
[0188] 根據(jù)某些示例,示例第二方法還可以包括響應(yīng)于發(fā)送到第二存儲(chǔ)服務(wù)器的使第二 存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)的請(qǐng)求消息,接收第二RDMA命令消息。對(duì)于 這些示例,可從第一存儲(chǔ)服務(wù)器或遠(yuǎn)程客戶(hù)端中的一個(gè)發(fā)送請(qǐng)求消息。
[0189] 在示例第二方法的某些示例中,將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器以 導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取,可以涉及與第二RDMA命令 消息一起包括用于指示存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的位置的RDMA STag,第二存儲(chǔ)服務(wù) 器中的第二網(wǎng)絡(luò)I/O設(shè)備能夠使用RDMA STag,從第一存儲(chǔ)設(shè)備拉取數(shù)據(jù),第二NVMe控制器 能夠?qū)⒗〉臄?shù)據(jù)存儲(chǔ)到第二存儲(chǔ)設(shè)備,以便復(fù)制數(shù)據(jù)。
[0190] 根據(jù)示例第二方法的某些示例,RDMA STag可以與從第一存儲(chǔ)服務(wù)器或遠(yuǎn)程客戶(hù) 端中的一個(gè)發(fā)送的請(qǐng)求消息一起被接收。
[0191] 在示例第二方法的某些示例中,將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器以 導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取,可以包括將存儲(chǔ)在第一存 儲(chǔ)設(shè)備中的數(shù)據(jù)推到第二存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器。對(duì)于這些示例,可以與第 二RDMA命令一起包括RDMA STag,用以指示將數(shù)據(jù)存儲(chǔ)到第二存儲(chǔ)設(shè)備的分配部分,第二 NVMe控制器能夠讀取被推到第二存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器的數(shù)據(jù),并使用RDMA STag將數(shù)據(jù)存儲(chǔ)到分配部分,以便復(fù)制數(shù)據(jù)。
[0192] 根據(jù)示例第二方法的某些示例,RDMA STag可以與從第一存儲(chǔ)服務(wù)器或遠(yuǎn)程客戶(hù) 端中的一個(gè)發(fā)送的請(qǐng)求消息一起被接收。
[0193] 在示例第二方法的某些示例中,RDMA命令消息和RDMA命令完成消息可以順應(yīng)包 括iWARP、Infiniband或RoCE中的一個(gè)的協(xié)議。
[0194] 在示例第二方法的某些示例中,第一存儲(chǔ)設(shè)備可以包括具有非易失性存儲(chǔ)器 的SSD,所述非易失性存儲(chǔ)器包括3維交叉點(diǎn)存儲(chǔ)器、閃存、鐵電存儲(chǔ)器、硅-氧化物-氮 化物-氧化物-硅(S0N0S)存儲(chǔ)器、聚合物存儲(chǔ)器、納米線、鐵電晶體管隨機(jī)存取存儲(chǔ)器 (FeTRAM或FeRAM)、納米線或電可擦可編程只讀存儲(chǔ)器(EEPR0M)中的至少一種。
[0195] 在某些示例中,包括多個(gè)指令的第二至少一種機(jī)器可讀介質(zhì),所述指令,響應(yīng)于在 網(wǎng)絡(luò)I/O設(shè)備上執(zhí)行,導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備通過(guò)第一網(wǎng)絡(luò)連接,從遠(yuǎn)程客戶(hù)端接收第一 RDMA 命令消息。第一 RDMA命令消息可以與在由耦合到網(wǎng)絡(luò)I/O設(shè)備的第一存儲(chǔ)服務(wù)器中維護(hù)的 第一 NVMe控制器控制的第一存儲(chǔ)設(shè)備中存儲(chǔ)數(shù)據(jù)相關(guān)聯(lián),RDMA命令消息順應(yīng)包括iWARP、 Infiniband或RoCE中的一個(gè)的協(xié)議。指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備向第一 NVMe控制器轉(zhuǎn) 發(fā)第一 RDMA命令消息,以導(dǎo)致第一 NVMe控制器響應(yīng)于RDMA命令消息從遠(yuǎn)程客戶(hù)端獲取數(shù) 據(jù)并將數(shù)據(jù)存儲(chǔ)到第一存儲(chǔ)設(shè)備中。指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備將RDMA命令完成消息 從第一 NVMe控制器轉(zhuǎn)發(fā)到遠(yuǎn)程客戶(hù)端,以指示數(shù)據(jù)的存儲(chǔ),RDMA命令完成消息順應(yīng)協(xié)議。 指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備通過(guò)第二網(wǎng)絡(luò)連接,從第二存儲(chǔ)服務(wù)器接收第二RDMA命令消 息,第二RDMA命令消息與復(fù)制被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)相關(guān)聯(lián),第二RDMA命令消息順 應(yīng)協(xié)議。指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備將第二RDMA命令消息轉(zhuǎn)發(fā)到第一 NVMe控制器,以 導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀取,以使第二存儲(chǔ)服務(wù)器能夠通 過(guò)將數(shù)據(jù)存儲(chǔ)到由在第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備來(lái)復(fù) 制數(shù)據(jù)。
[0196] 根據(jù)第二至少一種機(jī)器可讀介質(zhì)的某些示例,可以響應(yīng)于發(fā)送到第二存儲(chǔ)服務(wù)器 的使第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到第一存儲(chǔ)設(shè)備的數(shù)據(jù)的請(qǐng)求消息,接收第二RDMA命令 消息。對(duì)于這些示例,可以從第一存儲(chǔ)服務(wù)器或遠(yuǎn)程客戶(hù)端中的一個(gè)發(fā)送請(qǐng)求消息。
[0197] 在第二至少一種機(jī)器可讀介質(zhì)的某些示例中,導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備將第二RDMA命令 消息轉(zhuǎn)發(fā)到第一 NVMe控制器以導(dǎo)致存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀 取的指令可以包括還導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備用第二RDMA命令消息包括RDMA STag的指令,該 RDMA Stag用于指示存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的位置。對(duì)于這些示例,第二存儲(chǔ)服務(wù) 器中的第二網(wǎng)絡(luò)I/O設(shè)備可以能夠使用RDMA STag,從第一存儲(chǔ)設(shè)備拉取數(shù)據(jù),而第二NVMe 控制器能夠?qū)⒗〉臄?shù)據(jù)存儲(chǔ)到第二存儲(chǔ)設(shè)備,以便復(fù)制數(shù)據(jù),RDMA STag是與從第一存儲(chǔ) 服務(wù)器或遠(yuǎn)程客戶(hù)端中的一個(gè)發(fā)送的請(qǐng)求消息一起被接收到的。
[0198] 根據(jù)第二至少一種機(jī)器可讀介質(zhì)的某些示例,導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備將第二RDMA命令 消息轉(zhuǎn)發(fā)到第一 NVMe控制器以導(dǎo)致存儲(chǔ)到第一存儲(chǔ)設(shè)備中的數(shù)據(jù)可被第二存儲(chǔ)服務(wù)器讀 取的指令包括還導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備將存儲(chǔ)在第一存儲(chǔ)設(shè)備中的數(shù)據(jù)推到第二存儲(chǔ)服務(wù)器 中的一個(gè)或多個(gè)緩沖器的指令。這些指令還可以導(dǎo)致網(wǎng)絡(luò)I/O設(shè)備用第二RDMA命令包括 RDMA Stag,該RDMA Stag指示將數(shù)據(jù)存儲(chǔ)到第二存儲(chǔ)設(shè)備的分配部分,第二NVMe控制器能 夠讀取被推到第二存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器的數(shù)據(jù),并使用RDMA STag將數(shù)據(jù)存 儲(chǔ)到分配部分,以便復(fù)制數(shù)據(jù),RDMA STag是與從第一存儲(chǔ)服務(wù)器或遠(yuǎn)程客戶(hù)端中的一個(gè)發(fā) 送的請(qǐng)求消息一起被接收到的。
[0199] 盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專(zhuān)用的語(yǔ)言描述了本主題,但可以理解,所附權(quán) 利要求書(shū)中定義的主題不必限于上述具體特征或動(dòng)作。相反,上述具體特征和動(dòng)作是作為 實(shí)現(xiàn)權(quán)利要求的示例形式公開(kāi)的。
【權(quán)利要求】
1. 一種用于網(wǎng)絡(luò)輸入/輸出(I/O)設(shè)備的裝置,包括: 電路; 命令模塊,所述命令模塊由所述電路執(zhí)行以發(fā)送把用于復(fù)制的數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ)服 務(wù)器的遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)命令消息,所述RDMA命令消息通過(guò)所述一個(gè)或多個(gè)存 儲(chǔ)服務(wù)器和所述網(wǎng)絡(luò)I/O設(shè)備之間的至少一個(gè)網(wǎng)絡(luò)連接,被發(fā)送到所述多個(gè)存儲(chǔ)服務(wù)器之 中的一個(gè)或多個(gè)存儲(chǔ)服務(wù)器;以及 完成模塊,所述完成模塊由所述電路執(zhí)行以從所述一個(gè)或多個(gè)存儲(chǔ)服務(wù)器接收一個(gè)或 多個(gè)RDMA命令完成消息,所述完成消息指示所述數(shù)據(jù)在所述多個(gè)存儲(chǔ)服務(wù)器之中的至少 第一存儲(chǔ)服務(wù)器和第二存儲(chǔ)服務(wù)器之間的復(fù)制。
2. 如權(quán)利要求1所述的裝置,其特征在于,包括:命令模塊,所述命令模塊通過(guò)相應(yīng)的 第一和第二網(wǎng)絡(luò)連接向所述第一存儲(chǔ)服務(wù)器和所述第二存儲(chǔ)服務(wù)器兩者發(fā)送所述RDMA命 令消息;以及完成模塊,所述完成模塊從所述第一和第二存儲(chǔ)服務(wù)器接收相應(yīng)的第一和第 二RDMA命令完成消息,所述完成消息指示所述數(shù)據(jù)在至少所述第一和第二存儲(chǔ)服務(wù)器之 間的復(fù)制。
3. 如權(quán)利要求2所述的裝置,其特征在于,包括 所述命令模塊向所述第一存儲(chǔ)服務(wù)器發(fā)送所述RDMA命令消息包括所述命令模塊向在 所述第一存儲(chǔ)服務(wù)器上維護(hù)的控制第一存儲(chǔ)設(shè)備的第一非易失性存儲(chǔ)器快速(NVMe)控制 器發(fā)送所述RDMA命令消息并導(dǎo)致所述數(shù)據(jù)被推到所述第一存儲(chǔ)設(shè)備上的一個(gè)或多個(gè)緩沖 器,所述第一 NVMe控制器能夠基于從所述一個(gè)或多個(gè)緩沖器中讀取所述數(shù)據(jù)并將所述數(shù) 據(jù)存儲(chǔ)在所述第一存儲(chǔ)設(shè)備中,導(dǎo)致所述第一 RDMA命令完成消息被發(fā)送到所述網(wǎng)絡(luò)I/O設(shè) 備;以及 所述命令模塊向所述第二存儲(chǔ)服務(wù)器發(fā)送所述RDMA命令消息包括所述命令模塊向在 所述第二存儲(chǔ)服務(wù)器上維護(hù)的控制第二存儲(chǔ)設(shè)備的第二NVMe控制器發(fā)送所述RDMA命令消 息并導(dǎo)致所述數(shù)據(jù)被推到所述第二存儲(chǔ)設(shè)備上的一個(gè)或多個(gè)緩沖器,所述第二NVMe控制 器能夠基于從所述一個(gè)或多個(gè)緩沖器中讀取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)在所述第二存儲(chǔ) 設(shè)備中,導(dǎo)致所述第二RDMA命令完成消息被發(fā)送到所述網(wǎng)絡(luò)I/O設(shè)備。
4. 如權(quán)利要求1所述的裝置,其特征在于,包括: 所述命令模塊通過(guò)所述第三存儲(chǔ)服務(wù)器和所述網(wǎng)絡(luò)I/O設(shè)備之間的第一網(wǎng)絡(luò)連接, 向第三存儲(chǔ)服務(wù)器發(fā)送所述RDMA命令消息,所述RDMA命令消息發(fā)往在所述第三存儲(chǔ)服務(wù) 器中維護(hù)的控制存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器快速(NVMe)控制器,所述NVMe控制器能夠響 應(yīng)于所述RDMA命令消息,從所述客戶(hù)端設(shè)備獲取所述數(shù)據(jù),將所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)設(shè) 備,并導(dǎo)致所述RDMA命令完成消息被發(fā)送到所述完成模塊以指示所述數(shù)據(jù)的存儲(chǔ); 請(qǐng)求模塊,所述請(qǐng)求模塊由所述電路執(zhí)行以通過(guò)所述網(wǎng)絡(luò)I/O設(shè)備和所述第一存儲(chǔ)服 務(wù)器之間的第二網(wǎng)絡(luò)連接,向所述第一存儲(chǔ)服務(wù)器發(fā)送使所述第一存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ) 到所述存儲(chǔ)設(shè)備的所述數(shù)據(jù)的第一請(qǐng)求消息;以及 所述請(qǐng)求模塊通過(guò)所述網(wǎng)絡(luò)I/O設(shè)備和所述第二存儲(chǔ)服務(wù)器之間的第三網(wǎng)絡(luò)連接,向 所述第二存儲(chǔ)服務(wù)器發(fā)送使所述第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到所述存儲(chǔ)設(shè)備的所述數(shù)據(jù) 的第二請(qǐng)求消息。
5. 如權(quán)利要求4所述的裝置,其特征在于,包括: 所述命令模塊導(dǎo)致所述數(shù)據(jù)被推到所述第三存儲(chǔ)服務(wù)器處的一個(gè)或多個(gè)緩沖器,并在 所述RDMA命令消息中指示所述數(shù)據(jù)的位置;以及 所述完成模塊基于所述NVMe控制器從所述一個(gè)或多個(gè)緩沖器讀取所述數(shù)據(jù)并將所述 數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)設(shè)備中的分配部分,從所述NVMe控制器接收所述RDMA命令完成消息。
6. 如權(quán)利要求4所述的裝置,其特征在于,包括: 所述命令模塊導(dǎo)致所述數(shù)據(jù)被推到耦合到所述所述網(wǎng)絡(luò)I/O設(shè)備的客戶(hù)端設(shè)備中的 一個(gè)或多個(gè)緩沖器,并在所述RDMA命令消息中指示所述數(shù)據(jù)的位置,所述第三存儲(chǔ)服務(wù)器 中的網(wǎng)絡(luò)I/O設(shè)備能夠從所述客戶(hù)端設(shè)備中的所述一個(gè)或多個(gè)緩沖器拉取所述數(shù)據(jù),以至 少臨時(shí)將所述數(shù)據(jù)存儲(chǔ)到所述第三存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器;以及 所述完成模塊基于所述NVMe控制器從所述第三存儲(chǔ)服務(wù)器上的所述一個(gè)或多個(gè)緩沖 器讀取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)設(shè)備中的分配部分,從所述NVMe控制器接 收所述RDMA命令完成消息。
7. 如權(quán)利要求1所述的裝置,其特征在于,包括: 所述命令模塊通過(guò)所述第三存儲(chǔ)服務(wù)器和所述網(wǎng)絡(luò)I/O設(shè)備之間的第一網(wǎng)絡(luò)連接,向 第三存儲(chǔ)服務(wù)器發(fā)送所述RDMA命令消息,所述RDMA命令消息發(fā)往在所述第三存儲(chǔ)服務(wù)器 中維護(hù)的控制存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器快速(NVMe)控制器;以及 所述完成模塊基于所述NVMe控制器響應(yīng)于所述RDMA命令消息,從所述網(wǎng)絡(luò)I/O設(shè)備 讀取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)設(shè)備中的分配部分,從所述NVMe控制器接收 所述RDMA命令完成消息,所述NVMe控制器還通過(guò)所述第三存儲(chǔ)服務(wù)器和所述第一存儲(chǔ)服 務(wù)器之間的第二網(wǎng)絡(luò)連接,向所述第一存儲(chǔ)服務(wù)器發(fā)送使所述第一存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ) 到所述存儲(chǔ)設(shè)備的所述數(shù)據(jù)的第一請(qǐng)求消息,以及,通過(guò)所述第三存儲(chǔ)服務(wù)器和所述第二 存儲(chǔ)服務(wù)器之間的第三網(wǎng)絡(luò)連接,向所述第二存儲(chǔ)服務(wù)器發(fā)送使所述第二存儲(chǔ)服務(wù)器復(fù)制 被存儲(chǔ)到所述存儲(chǔ)設(shè)備的所述數(shù)據(jù)的第二請(qǐng)求消息。
8. 如權(quán)利要求1所述的裝置,其特征在于,包括所述RDMA命令消息和所述RDMA命令完 成消息順應(yīng)包括以下各項(xiàng)中的一個(gè)的協(xié)議:因特網(wǎng)廣域RDMA協(xié)議(iWARP)、Infiniband或匯 聚以太網(wǎng)上RDMA(RoCE)中的一種的協(xié)議。
9. 如權(quán)利要求1所述的裝置,其特征在于,包括: 包括非易失性存儲(chǔ)器或易失性存儲(chǔ)器中的至少一個(gè)的存儲(chǔ)器,所述存儲(chǔ)器能夠至少臨 時(shí)存儲(chǔ)與把用于復(fù)制的數(shù)據(jù)存儲(chǔ)到所述多個(gè)存儲(chǔ)服務(wù)器相關(guān)聯(lián)的信息,所述信息包括一個(gè) 或多個(gè)RDMA服務(wù)標(biāo)記(STag),所述一個(gè)或多個(gè)RDMA服務(wù)標(biāo)記之中的至少一個(gè)RDMA服務(wù)標(biāo) 記被包括在所述RDMA命令消息中。
10. -種在網(wǎng)絡(luò)輸入/輸出(I/O)設(shè)備處實(shí)現(xiàn)的方法,包括: 發(fā)送把用于復(fù)制的數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ)服務(wù)器的遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)命令消 息,所述RDMA命令消息通過(guò)所述一個(gè)或多個(gè)存儲(chǔ)服務(wù)器和所述網(wǎng)絡(luò)I/O設(shè)備之間的至少一 個(gè)網(wǎng)絡(luò)連接,被發(fā)送到所述多個(gè)存儲(chǔ)服務(wù)器之中的一個(gè)或多個(gè)存儲(chǔ)服務(wù)器;以及 從所述一個(gè)或多個(gè)存儲(chǔ)服務(wù)器接收一個(gè)或多個(gè)RDMA命令完成消息,所述完成消息指 示所述數(shù)據(jù)在所述多個(gè)存儲(chǔ)服務(wù)器之中的至少第一存儲(chǔ)服務(wù)器和第二存儲(chǔ)服務(wù)器之間的 復(fù)制。
11. 如權(quán)利要求10所述的方法,其特征在于,包括通過(guò)相應(yīng)的第一和第二網(wǎng)絡(luò)連接向 所述第一存儲(chǔ)服務(wù)器和所述第二存儲(chǔ)服務(wù)器兩者發(fā)送所述RDM命令消息,以及從所述第 一和第二存儲(chǔ)服務(wù)器接收相應(yīng)的第一和第二RDMA命令完成消息,所述完成消息指示所述 數(shù)據(jù)在至少所述第一和第二存儲(chǔ)服務(wù)器之間的復(fù)制。
12. 如權(quán)利要求11所述的方法,其特征在于,包括: 向所述第一存儲(chǔ)服務(wù)器發(fā)送所述RDMA命令消息包括向在所述第一存儲(chǔ)服務(wù)器處維護(hù) 的控制第一存儲(chǔ)設(shè)備的第一非易失性存儲(chǔ)器快速(NVMe)控制器發(fā)送所述RDMA命令消息以 及將所述數(shù)據(jù)發(fā)送到所述第一存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器,所述第一 NVMe控制器 能夠基于從所述一個(gè)或多個(gè)緩沖器中讀取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)在所述第一存儲(chǔ)設(shè) 備,導(dǎo)致所述第一 RDMA命令完成消息被發(fā)送到所述網(wǎng)絡(luò)I/O設(shè)備;以及 向所述第二存儲(chǔ)服務(wù)器發(fā)送所述RDMA命令消息包括向在所述第二存儲(chǔ)服務(wù)器處維護(hù) 的控制第二存儲(chǔ)設(shè)備的第二NVMe控制器發(fā)送所述RDMA命令消息以及將所述數(shù)據(jù)發(fā)送到所 述第二存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器,所述第二NVMe控制器能夠基于從所述一個(gè)或 多個(gè)緩沖器中讀取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)在所述第二存儲(chǔ)設(shè)備中,導(dǎo)致所述第二RDMA 命令完成消息被發(fā)送到所述網(wǎng)絡(luò)I/O設(shè)備。
13. 如權(quán)利要求10所述的方法,其特征在于,包括: 通過(guò)第三網(wǎng)絡(luò)連接,將與被復(fù)制到所述第一和第二存儲(chǔ)服務(wù)器的所述數(shù)據(jù)相關(guān)聯(lián)的錯(cuò) 誤校正或數(shù)據(jù)恢復(fù)信息發(fā)送到第三存儲(chǔ)服務(wù)器,所述錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息用于校正所 述復(fù)制的數(shù)據(jù)中的一個(gè)或多個(gè)錯(cuò)誤或恢復(fù)所述復(fù)制的數(shù)據(jù)的至少諸部分。
14. 如權(quán)利要求10所述的方法,其特征在于,包括: 通過(guò)所述第三存儲(chǔ)服務(wù)器和所述網(wǎng)絡(luò)I/O設(shè)備之間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù) 器發(fā)送所述RDMA命令消息,所述RDMA命令消息發(fā)往在所述第三存儲(chǔ)服務(wù)器中維護(hù)的控制 存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器快速(NVMe)控制器,所述NVMe控制器能夠響應(yīng)于所述RDMA命 令消息,從所述網(wǎng)絡(luò)I/O設(shè)備獲取所述數(shù)據(jù),將所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)設(shè)備,并導(dǎo)致所述 RDMA命令完成消息被發(fā)送到所述所述網(wǎng)絡(luò)I/O設(shè)備以指示所述數(shù)據(jù)的存儲(chǔ); 通過(guò)所述網(wǎng)絡(luò)I/O設(shè)備和所述第一存儲(chǔ)服務(wù)器之間的第二網(wǎng)絡(luò)連接,向所述第一存儲(chǔ) 服務(wù)器發(fā)送使所述第一存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到所述存儲(chǔ)設(shè)備的所述數(shù)據(jù)的第一請(qǐng)求消 息;以及 通過(guò)所述所述網(wǎng)絡(luò)I/O設(shè)備和所述第二存儲(chǔ)服務(wù)器之間的第三網(wǎng)絡(luò)連接,向所述第二 存儲(chǔ)服務(wù)器發(fā)送使所述第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到所述存儲(chǔ)設(shè)備的所述數(shù)據(jù)的第二請(qǐng) 求消息。
15. 如權(quán)利要求14所述的方法,其特征在于,包括: 將所述數(shù)據(jù)發(fā)送到所述第三存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)緩沖器;以及 在所述RDMA命令消息中指出所述數(shù)據(jù)的位置,所述第二NVMe控制器能夠基于從所述 一個(gè)或多個(gè)緩沖器中讀取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)在所述第二存儲(chǔ)設(shè)備中的分配部分, 導(dǎo)致所述RDMA命令完成消息被發(fā)送到所述網(wǎng)絡(luò)I/O設(shè)備。
16. 如權(quán)利要求14所述的方法,其特征在于,包括: 將所述數(shù)據(jù)發(fā)送到耦合至所述網(wǎng)絡(luò)I/O設(shè)備的客戶(hù)端設(shè)備中的一個(gè)或多個(gè)緩沖器;以 及 在所述RDMA命令消息中指示所述數(shù)據(jù)的位置,所述第三存儲(chǔ)服務(wù)器處的網(wǎng)絡(luò)I/O設(shè)備 能夠從所述客戶(hù)端設(shè)備中的所述一個(gè)或多個(gè)緩沖器拉取所述數(shù)據(jù),以至少臨時(shí)將所述數(shù)據(jù) 存儲(chǔ)到所述第三存儲(chǔ)服務(wù)器中的一個(gè)或多個(gè)緩沖器,所述第二NVMe控制器能夠基于從所 述第三存儲(chǔ)服務(wù)器處的所述一個(gè)或多個(gè)緩沖器中讀取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)在所述 第二存儲(chǔ)設(shè)備中的分配部分,導(dǎo)致所述RDMA命令完成消息被發(fā)送到所述網(wǎng)絡(luò)I/O設(shè)備。
17. 如權(quán)利要求14所述的方法,其特征在于,包括: 通過(guò)所述網(wǎng)絡(luò)I/O設(shè)備和所述第四存儲(chǔ)服務(wù)器之間的第四網(wǎng)絡(luò)連接,將與被復(fù)制到所 述第一和第二存儲(chǔ)服務(wù)器的所述數(shù)據(jù)相關(guān)聯(lián)的錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息發(fā)送到第四存儲(chǔ) 服務(wù)器,所述錯(cuò)誤校正或數(shù)據(jù)恢復(fù)信息用于校正所述復(fù)制的數(shù)據(jù)中的一個(gè)或多個(gè)錯(cuò)誤或恢 復(fù)所述復(fù)制的數(shù)據(jù)的至少諸部分。
18. 如權(quán)利要求10所述的方法,其特征在于,包括: 通過(guò)所述第三存儲(chǔ)服務(wù)器和所述網(wǎng)絡(luò)I/O設(shè)備之間的第一網(wǎng)絡(luò)連接,向第三存儲(chǔ)服務(wù) 器發(fā)送所述RDMA命令消息,所述RDMA命令消息發(fā)往在所述第三存儲(chǔ)服務(wù)器中維護(hù)的控制 存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器快速(NVMe)控制器;以及 基于所述NVMe控制器響應(yīng)于所述RDMA命令消息,從所述網(wǎng)絡(luò)I/O設(shè)備讀取所述數(shù)據(jù) 并將所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)設(shè)備中的分配部分,從所述NVMe控制器接收所述RDMA命令 完成消息,所述NVMe控制器還通過(guò)所述第三存儲(chǔ)服務(wù)器和所述第一存儲(chǔ)服務(wù)器之間的第 二網(wǎng)絡(luò)連接,向所述第一存儲(chǔ)服務(wù)器發(fā)送使所述第一存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到所述存儲(chǔ)設(shè) 備的所述數(shù)據(jù)的第一請(qǐng)求消息,以及,通過(guò)所述第三存儲(chǔ)服務(wù)器和所述第二存儲(chǔ)服務(wù)器之 間的第三網(wǎng)絡(luò)連接,向所述第二存儲(chǔ)服務(wù)器發(fā)送使所述第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到所述 存儲(chǔ)設(shè)備的所述數(shù)據(jù)的第二請(qǐng)求消息。
19. 包括多個(gè)指令的至少一個(gè)機(jī)器可讀介質(zhì),響應(yīng)于在設(shè)備上被執(zhí)行,所述指令導(dǎo)致所 述設(shè)備執(zhí)行如權(quán)利要求10-18中任一項(xiàng)所述的方法。
20. -種在網(wǎng)絡(luò)輸入/輸出(I/O)設(shè)備處實(shí)現(xiàn)的方法,包括: 通過(guò)第一網(wǎng)絡(luò)連接,從遠(yuǎn)程客戶(hù)端接收第一遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)命令消息,所 述第一 RDMA命令消息與把數(shù)據(jù)存儲(chǔ)到由在耦合到所述網(wǎng)絡(luò)I/O設(shè)備的第一存儲(chǔ)服務(wù)器中 維護(hù)的第一非易失性存儲(chǔ)器快速(NVMe)控制器控制的第一存儲(chǔ)設(shè)備相關(guān)聯(lián); 將所述第一 RDMA命令消息轉(zhuǎn)發(fā)到所述第一 NVMe控制器以導(dǎo)致所述第一 NVMe控制器 響應(yīng)于所述RDMA命令消息而從所述遠(yuǎn)程客戶(hù)端獲取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)到所述第 一存儲(chǔ)設(shè)備; 將RDMA命令完成消息從所述第一 NVMe控制器轉(zhuǎn)發(fā)到所述遠(yuǎn)程客戶(hù)端以指示所述數(shù)據(jù) 的所述存儲(chǔ); 通過(guò)第二網(wǎng)絡(luò)連接從第二存儲(chǔ)服務(wù)器接收第二RDMA命令消息,所述第二RDMA命令消 息與復(fù)制被存儲(chǔ)到所述第一存儲(chǔ)設(shè)備的所述數(shù)據(jù)相關(guān)聯(lián);以及 將所述第二RDMA命令消息轉(zhuǎn)發(fā)到所述第一 NVMe控制器以導(dǎo)致存儲(chǔ)在所述第一存儲(chǔ)設(shè) 備處的所述數(shù)據(jù)可被所述第二存儲(chǔ)服務(wù)器讀取,以使所述第二存儲(chǔ)服務(wù)器能夠通過(guò)將所述 數(shù)據(jù)存儲(chǔ)到由在所述第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備來(lái)復(fù) 制所述數(shù)據(jù)。
21. 如權(quán)利要求20所述的方法,其特征在于,包括響應(yīng)于發(fā)送到所述第二存儲(chǔ)服務(wù)器 以使所述第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到所述第一存儲(chǔ)設(shè)備的所述數(shù)據(jù)的請(qǐng)求消息,接收所 述第二RDM命令消息,所述請(qǐng)求消息是從所述第一存儲(chǔ)服務(wù)器或所述遠(yuǎn)程客戶(hù)端中的一 個(gè)發(fā)送的。
22. 如權(quán)利要求21所述的方法,其特征在于,將所述第二RDMA命令消息轉(zhuǎn)發(fā)到所述第 一 NVMe控制器以導(dǎo)致存儲(chǔ)在所述第一存儲(chǔ)設(shè)備處的所述數(shù)據(jù)可被所述第二存儲(chǔ)服務(wù)器讀 取包括: 用所述第二RDMA命令消息包括指示存儲(chǔ)所述第一存儲(chǔ)設(shè)備處的所述數(shù)據(jù)的位置的 RDMA服務(wù)標(biāo)記(STag),所述第二存儲(chǔ)服務(wù)器處的第二網(wǎng)絡(luò)I/O設(shè)備能夠使用所述RDMA STag來(lái)從所述第一存儲(chǔ)設(shè)備拉取數(shù)據(jù),而所述第二NVMe控制器能夠?qū)⑺隼〉臄?shù)據(jù)存 儲(chǔ)到所述第二存儲(chǔ)設(shè)備,以便復(fù)制所述數(shù)據(jù),所述RDMA STag是與從所述第一存儲(chǔ)服務(wù)器或 所述遠(yuǎn)程客戶(hù)端中的一個(gè)發(fā)送的所述請(qǐng)求消息一起被接收到的。
23. 如權(quán)利要求21所述的方法,其特征在于,將所述第二RDMA命令消息轉(zhuǎn)發(fā)到所述第 一 NVMe控制器以導(dǎo)致存儲(chǔ)在所述第一存儲(chǔ)設(shè)備處的所述數(shù)據(jù)可被所述第二存儲(chǔ)服務(wù)器讀 取包括: 將存儲(chǔ)在所述第一存儲(chǔ)設(shè)備處的所述數(shù)據(jù)推到所述第二存儲(chǔ)服務(wù)器處的一個(gè)或多個(gè) 緩沖器;以及 用所述第二RDMA命令消息包括指示用于將所述數(shù)據(jù)存儲(chǔ)到所述第二存儲(chǔ)設(shè)備的分配 部分的RDMA服務(wù)標(biāo)記(STag),所述第二NVMe控制器能夠讀取被推到所述第二存儲(chǔ)服務(wù)器 中的所述一個(gè)或多個(gè)緩沖器的所述數(shù)據(jù),并使用所述RDMA STag將所述數(shù)據(jù)存儲(chǔ)到所述分 配部分,以便復(fù)制所述數(shù)據(jù)。
24. 包括多個(gè)指令的至少一種機(jī)器可讀介質(zhì),響應(yīng)于在設(shè)備上被執(zhí)行,所述指令導(dǎo)致所 述設(shè)備執(zhí)行如權(quán)利要求20-23中任一項(xiàng)所述的方法。
25. -種用于網(wǎng)絡(luò)輸入/輸出(I/O)設(shè)備的裝備,包括: 用于通過(guò)第一網(wǎng)絡(luò)連接從遠(yuǎn)程客戶(hù)端接收第一遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)命令消 息的裝置,所述第一 RDMA命令消息與把數(shù)據(jù)存儲(chǔ)到由在耦合到所述網(wǎng)絡(luò)I/O設(shè)備的第一 存儲(chǔ)服務(wù)器中維護(hù)的第一非易失性存儲(chǔ)器快速(NVMe)控制器控制的存儲(chǔ)設(shè)備相關(guān)聯(lián),所 述RDMA命令消息順應(yīng)包括因特網(wǎng)廣域RDMA協(xié)議(iWARP)、Infiniband或匯聚以太網(wǎng)上 RDMA (RoCE)中的一種的協(xié)議; 用于將所述第一 RDMA命令消息轉(zhuǎn)發(fā)到所述第一 NVMe控制器以導(dǎo)致所述第一 NVMe控 制器響應(yīng)于所述RDMA命令消息而從所述遠(yuǎn)程客戶(hù)端獲取所述數(shù)據(jù)并將所述數(shù)據(jù)存儲(chǔ)到所 述第一存儲(chǔ)設(shè)備中的裝置; 用于將RDMA命令完成消息從所述第一 NVMe控制器轉(zhuǎn)發(fā)到所述遠(yuǎn)程客戶(hù)端以指出所述 數(shù)據(jù)的所述存儲(chǔ)的裝置,所述RDMA命令完成消息順應(yīng)所述協(xié)議; 用于通過(guò)第二網(wǎng)絡(luò)連接從第二存儲(chǔ)服務(wù)器接收第二RDMA命令消息的裝置,所述第二 RDMA命令消息與復(fù)制被存儲(chǔ)到所述第一存儲(chǔ)設(shè)備的所述數(shù)據(jù)相關(guān)聯(lián),所述第二RDMA命令 消息順應(yīng)所述協(xié)議;以及 用于將所述第二RDMA命令消息轉(zhuǎn)發(fā)到所述第一 NVMe控制器以導(dǎo)致存儲(chǔ)在所述第一存 儲(chǔ)設(shè)備上的所述數(shù)據(jù)可被所述第二存儲(chǔ)服務(wù)器讀取,以使所述第二存儲(chǔ)服務(wù)器能夠通過(guò)將 所述數(shù)據(jù)存儲(chǔ)到由在所述第二存儲(chǔ)服務(wù)器中維護(hù)的第二NVMe控制器控制的第二存儲(chǔ)設(shè)備 來(lái)復(fù)制所述數(shù)據(jù)的裝置,所述第二RDMA命令消息是響應(yīng)于發(fā)送到所述第二存儲(chǔ)服務(wù)器以 讓所述第二存儲(chǔ)服務(wù)器復(fù)制被存儲(chǔ)到所述第一存儲(chǔ)設(shè)備所述的數(shù)據(jù)的請(qǐng)求消息而接收的, 所述請(qǐng)求消息是從所述第一存儲(chǔ)服務(wù)器或所述遠(yuǎn)程客戶(hù)端中的一個(gè)發(fā)送的。
【文檔編號(hào)】H04L29/08GK104283938SQ201410321310
【公開(kāi)日】2015年1月14日 申請(qǐng)日期:2014年7月7日 優(yōu)先權(quán)日:2013年7月8日
【發(fā)明者】E·塔米爾, F·L·貝瑞, P·C·凱頓, D·E·伍德 申請(qǐng)人:英特爾公司