針對遠程存儲器訪問的nvm express控制器的制造方法
【技術領域】
[0001]本發明總體上涉及在網絡上使用非易失性存儲器Express(NVMe)協議并利用低延時來訪問遠程存儲器。
【背景技術】
[0002]通常,CPU可以在網絡上通過使用網絡協議來訪問遠程存儲器或者I/O設備。用于訪問遠程存儲器或者I/O設備的一個常規方法是通過iSCSI存儲。該方法通過CPU使用大量的處理,其增加總訪問延時。經由iSCSI存儲訪問遠程存儲器或者I/O設備通常具有比對本地存儲器或者I/o設備的直接訪問大四到五倍的延時。這導致針對在網絡上要求遠程存儲器或者I/o設備訪問的系統的顯著的性能和吞吐量退化。
[0003]處理本地非易失性存儲器訪問的相對新的接口標準是NVMExpress(NVMe),有時被稱為非易失性存儲器主機控制器接口規范。NVMe是寄存器級接口,其允許主機軟件與非易失性存儲器子系統通信。該接口針對企業和客戶端固態驅動器(SSD)而被優化,其通常附接到PCI Express(PCle)接口 JVMe提供對本地非易失性存儲器的直接I/O訪問。使用NVMe,與諸如SAS (串行SC SI)或者SATA (串行ATA)的傳統I /0接口上的連接相比較,減少了讀取和寫入操作的延時。
[0004]然而,NVMe具有關于以太網交換機或者其他類型的網絡上的數據傳遞的限制。通常,NVMe被設計為訪問本地SSD并且未在通過網絡訪問遠程存儲方面被定義。如現今所定義的NVMe不提供用于通過網絡通過多個主機CHJ訪問多個遠程SSD的方案。因此,存在使得NVMe能夠在網絡(例如,以太網)上高效地工作以用于在網絡上訪問遠程SSD和命名空間的需要。
【發明內容】
[0005]本發明通過提供一種系統來克服現有技術的限制,該系統使能使用NVMe命令在外部網絡(諸如以太網)上對遠程非易失性存儲器的訪問。在一個方面中,擴展的NVMe控制器提供該能力。
[0006]在一種方法中,擴展的NVMe控制器使得CPU能夠使用NVMe協議來訪問遠程非易失性存儲器(例如,SSD)。例如,擴展的NVMe控制器被實現在用于經由以太網交換機與其他服務器或者SSD通信的一個服務器上。可以通過提供以太網上的NVM(NVM0E)幀在以太網上使用NVMe協議。在一個實施方式中,定義NVMoE幀,其指定通過以太網由擴展的NVMe控制器所傳輸的NVMoE命令。擴展的NVMe控制器包括用于基于NVMoE幀的定義來將NVMe命令轉換為NVMoE命令的轉換機制。特別地,通過映射表支持轉換機制,映射表用于將NVMe控制器的主機標識符(HSID)和/或NVMe命令的命名空間標識符(NSID)映射到NVMoE命令中所包括的以太網介質訪問控制(MAC)地址。
[0007]在另一方面中,擴展的NVMe控制器配備有用于從通過外部網絡所傳輸的NVMe命令的損耗恢復的重試機制。重試機制包括用于檢測NVMe命令的損耗的定時器,并且如果NVMe命令被確定為根據定時器的丟失,則重試機制將重新發出NVMe命令。
[0008]在又一方面中,擴展的NVMe控制器使能多路徑I/O和命名空間共享。多路徑I/O是指單個主機與命名空間之間的兩個或兩個以上完全獨立的物理PCIe路徑。命名空間共享是指兩個或兩個以上主機使用不同的NVMe控制器來訪問共同共享命名空間的能力。擴展的NVMe控制器中的一個或多個擴展的NVMe控制器可以使得主機能夠通過多個PCIe路徑訪問單個命名空間和兩個或兩個以上主機訪問共享命名空間。
[0009]本發明的另一方面包括擴展的NVMe存儲網絡和外部網絡,該擴展的NVMe存儲網絡包括多個本地NVMe存儲節點,并且該外部網絡耦合多個NVMe存儲節點。本地NVMe存儲節點包括一個或多個主機處理器,如上文所描述的擴展的NVMe控制器和本地非易失性存儲器。
[0010]在一個示例性實施例中,外部網絡可以包括L3網絡。因此,擴展的NVMe控制器可以包括用于將NVMe命令轉譯為由L3分組頭部封裝并且因此適于在L3網絡上的傳輸的NVMoE命令。
[0011]擴展的NVMe存儲網絡的各種示例應用在本文中還被描述以適于不同的場景。在一個應用中,擴展的NVMe存儲網絡實現為服務器機架,其中本地存儲節點包括服務器機架中的服務器,并且外部網絡包括架頂以太網交換機。在另一應用中,擴展的NVMe存儲網絡實現為包括單個主機的單個服務器,其中每個本地NVMe存儲節點包括專用擴展的NVMe控制器和基于專用本地非易失性存儲器的命名空間。在又一示例應用中,擴展的NVMe存儲網絡包括至少兩個主機處理器并且經由兩個擴展的NVMe控制器提供冗余度。
[0012]本發明的其他方面包括與上文所描述的那些有關的方法、系統、部件、設備、改進、應用和其他方面。
[0013]本發明的附加特征和優點將在以下描述中被闡述并且部分將從描述變得明顯或者可以通過本發明的實踐被學習。可以通過在書面描述和其權利要求以及附圖中特別指出的結構實現和達到本發明的各種優點。應當理解,前述一般描述和以下詳細描述是示例性和解釋性的,并且旨在提供如所要求保護的本發明的進一步的解釋。
【附圖說明】
[0014]當結合附圖時,本發明具有從本發明的以下詳細描述和隨附的權利要求更容易明顯的其他優點和特征,其中:
[0015]圖1是圖示擴展的NVMe存儲網絡的系統的框圖。
[0016]圖2是NVMoE幀定義的示圖。
[0017]圖3是如圖2中所描繪的NVMoE幀定義的第一部分的示圖。
[0018]圖4是用于使得NVMe命令能夠在以太網上傳輸的方法的流程圖。
[0019]圖5是擴展的NVMe控制器的框圖。
[0020]圖6是如圖5中所描繪的擴展的NVMe控制器的詳細結構的框圖。
[0021]圖7是NVMoE幀的一個實施例的示圖。
[0022]圖8是NVMoE幀的另一實施例的示圖。
[0023]圖9是L3網絡上的擴展的NVMe存儲系統的框圖。
[0024]圖10是適于在L3網絡上傳輸的NVMoE幀的示圖。
[0025]圖1lA-B是將擴展的NVMe存儲網絡的應用模型圖示為服務器機架的示圖。
[0026]圖12A-B是將擴展的NVMe存儲網絡的應用模型圖示為單個服務器的示圖。
[0027]圖13是將擴展的NVMe存儲網絡的應用模型圖示為雙服務器系統的示圖。
[0028]圖14是將擴展的NVMe存儲網絡的應用模型圖示為雙端口服務器系統的示圖。
[0029]圖15是命名空間控制器的框圖。
[0030]圖16是可以使用在本發明中的計算機或者服務器的示意性示例的框圖。
[0031]僅出于圖示的目的,附圖描繪了本發明的實施例。本領域的技術人員將容易地從以下討論認識到,在不脫離本文所描述的本發明的原理的情況下,可以采用本文所圖示的結構和方法的備選實施例。
【具體實施方式】
[0032]通常,NVMe控制器與單個PCI功能相關聯。控制器所支持的能力在控制器能力(CAP)寄存器中被指示并且作為如標識命令所返回的控制器和命名空間數據結構的一部分。控制器數據結構指示適于整個控制器的能力和設置。命名空間數據結構指示特定于具體命名空間的能力和設置。另外,NVMe控制器基于配對的提交和完成隊列機制。通過主機軟件將命令放置到提交隊列中。通過控制器將完成放置到相關聯的完成隊列中。多個提交隊列可以利用相同的完成隊列。將提交和完成隊列分配在主機存儲器中。
[0033]本發明涉及用于使能在網絡上使用NVMe協議對遠程非易失性存儲器(例如,SSD)命名空間的訪問以減少訪問延時的方法。因此,擴展的NVMe控制器使得主機CPU能夠使用NVMe協議來訪問遠程非易失性存儲器。附圖和以下描述僅以圖示的方式涉及優選的實施例。應當注意,根據以下討論,在不脫離權利要求書的原理的情況下,本文所公開的結構和方法的備選實施例將容易地被識別為可以采用的可行的備選方案。
[0034]現在參考圖1,根據一個示例性實施例,描繪了圖示擴展的NVMe存儲網絡的系統100的框圖。擴展的NVMe存儲網絡100可以是以太網架構上的NVMe的一個示例。在所圖示的示例性實施例中,擴展的NVMe存儲網絡100包括兩個本地NVMe存儲節點11 la、11 Ib和耦合兩個本地NVMe存儲節點111a、Illb的外部網絡(包括交換機114)。擴展的NVMe存儲網絡100還包括目錄服務器116,其通信地耦合到包括交換機114的外部網絡。在一個實施例中,外部網絡是以太網。在其他實施例中,外部網絡可以是光纖信道(FC)或者無線帶寬(IB)類型的網絡。
[0035]兩個本地NVMe存儲節點ll