本說明書一個或多個實施例涉及通信技術,尤其涉及一種基于內(nèi)存共享的spdk架構多控存儲擴展方法及裝置。
背景技術:
1、存儲性能開發(fā)套件(storage?performance?development?kit,spdk)提供了一系列的高性能、可擴展、用戶態(tài)下面的工具和庫。spdk目前的應用場景主要是針對塊存儲,其采用輪詢模式驅動,采用環(huán)形隊列(ring?queue)的方式處理線程之間的請求,請求線程將請求提交到隊列后繼續(xù)執(zhí)行其他工作,處理線程可以通過不斷輪詢或定期輪詢隊列的方式檢查是否有新請求提交并進行處理。當前的存儲系統(tǒng)已經(jīng)從單一的單控系統(tǒng)發(fā)展成多控系統(tǒng),然而目前spdk軟件只能運行在單個機器上,導致多控情況下,spdk架構的控制器之間的通信方式只能通過fc、iscsi、nvme-of等通信協(xié)議,將一個控制器的存儲設備通過上述協(xié)議映射到另一個控制器上,使映射的存儲設備被當做塊設備來使用。這些方式都需要經(jīng)過塊設備層的處理,增加了結構的復雜性,成本較高,傳輸速率較慢,io時延較高,多控間運行的spdk軟件相互協(xié)作性較差。
技術實現(xiàn)思路
1、為了解決上述問題,本說明書一個或多個實施例描述了一種基于內(nèi)存共享的spdk架構多控存儲擴展方法及裝置。
2、根據(jù)第一方面,提供了一種基于內(nèi)存共享的spdk架構多控存儲擴展方法,所述方法包括:
3、基于支持內(nèi)存共享的高速互聯(lián)協(xié)議構建與其余控制器之間的互聯(lián)鏈路,所述互聯(lián)鏈路用以對多個控制器進行內(nèi)存映射共享;
4、在spdk進程中創(chuàng)建原始環(huán)形隊列,基于所述互聯(lián)鏈路在其余控制器的spdk進程中映射所述原始環(huán)形隊列對應的映射環(huán)形隊列,相互匹配的所述原始環(huán)形隊列與映射環(huán)形隊列的隊列數(shù)據(jù)實時共享;
5、遍歷處理所述原始環(huán)形隊列中的隊列數(shù)據(jù)。
6、優(yōu)選的,所述高速互聯(lián)協(xié)議為非透明橋協(xié)議或計算快速鏈路協(xié)議。
7、優(yōu)選的,所述原始環(huán)形隊列僅設置有消息出隊權限,所述映射環(huán)形隊列僅設置有消息入隊權限。
8、優(yōu)選的,所述在spdk進程中創(chuàng)建原始環(huán)形隊列之后,還包括:
9、初始化所述原始環(huán)形隊列。
10、優(yōu)選的,所述遍歷處理所述原始環(huán)形隊列中的隊列數(shù)據(jù),包括:
11、以不斷輪詢的方式遍歷所述原始環(huán)形隊列,當所述原始環(huán)形隊列中存在隊列數(shù)據(jù)時,從所述原始環(huán)形隊列中取出所述隊列數(shù)據(jù),并處理所述隊列數(shù)據(jù)。
12、優(yōu)選的,所述方法還包括:
13、當檢測到數(shù)據(jù)寫入指令時,確定待寫入數(shù)據(jù)對應的目標映射環(huán)形隊列和目標寫入行,并將所述待寫入數(shù)據(jù)寫入至所述目標映射環(huán)形隊列的目標寫入行。
14、優(yōu)選的,所述在spdk進程中創(chuàng)建原始環(huán)形隊列,基于所述互聯(lián)鏈路在其余控制器的spdk進程中映射所述原始環(huán)形隊列對應的映射環(huán)形隊列,包括:
15、當存在兩個以上需要內(nèi)存共享的其余控制器時,基于需要內(nèi)存共享的其余控制器數(shù)量在spdk進程中創(chuàng)建相同數(shù)量的原始環(huán)形隊列,并基于所述互聯(lián)鏈路在各其余控制器的spdk進程中分別映射不同所述原始環(huán)形隊列對應的映射環(huán)形隊列。
16、根據(jù)第二方面,提供了一種基于內(nèi)存共享的spdk架構多控存儲擴展裝置,所述裝置包括:
17、構建模塊,用于基于支持內(nèi)存共享的高速互聯(lián)協(xié)議構建與其余控制器之間的互聯(lián)鏈路,所述互聯(lián)鏈路用以對多個控制器進行內(nèi)存映射共享;
18、映射模塊,用于在spdk進程中創(chuàng)建原始環(huán)形隊列,基于所述互聯(lián)鏈路在其余控制器的spdk進程中映射所述原始環(huán)形隊列對應的映射環(huán)形隊列,相互匹配的所述原始環(huán)形隊列與映射環(huán)形隊列的隊列數(shù)據(jù)實時共享;
19、遍歷模塊,用于遍歷處理所述原始環(huán)形隊列中的隊列數(shù)據(jù)。
20、根據(jù)第三方面,提供了一種電子設備,包括處理器以及存儲器;
21、所述處理器與所述存儲器相連;
22、所述存儲器,用于存儲可執(zhí)行程序代碼;
23、所述處理器通過讀取所述存儲器中存儲的可執(zhí)行程序代碼來運行與所述可執(zhí)行程序代碼對應的程序,以用于執(zhí)行如第一方面或第一方面的任意一種可能的實現(xiàn)方式提供的方法的步驟。
24、根據(jù)第四方面,提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機可讀存儲介質(zhì)中存儲有指令,當所述指令在計算機或處理器上運行時,使得所述計算機或處理器執(zhí)行如第一方面或第一方面的任意一種可能的實現(xiàn)方式提供的方法。
25、本說明書實施例提供的方法及裝置,不需要fc、iscsi、nvme-of等上層通信協(xié)議的支持,也不需要經(jīng)過塊設備的轉換,通過spdk進程直接操作對端,也即操作其余控制器映射的環(huán)形隊列,將對端的spdk進程看作自身線程進行處理,以此將進程間的通信轉變?yōu)榫€程間的通信,減小了資源消耗,提升了通信速度,將spdk的運行從單控制器運行擴展到了多控制器運行,實現(xiàn)了spdk架構下的多控存儲擴展。
1.一種基于內(nèi)存共享的spdk架構多控存儲擴展方法,其特征在于,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述高速互聯(lián)協(xié)議為非透明橋協(xié)議或計算快速鏈路協(xié)議。
3.根據(jù)權利要求1所述的方法,其特征在于,所述原始環(huán)形隊列僅設置有消息出隊權限,所述映射環(huán)形隊列僅設置有消息入隊權限。
4.根據(jù)權利要求1所述的方法,其特征在于,所述在spdk進程中創(chuàng)建原始環(huán)形隊列之后,還包括:
5.根據(jù)權利要求1所述的方法,其特征在于,所述遍歷處理所述原始環(huán)形隊列中的隊列數(shù)據(jù),包括:
6.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括:
7.根據(jù)權利要求1所述的方法,其特征在于,所述在spdk進程中創(chuàng)建原始環(huán)形隊列,基于所述互聯(lián)鏈路在其余控制器的spdk進程中映射所述原始環(huán)形隊列對應的映射環(huán)形隊列,包括:
8.一種基于內(nèi)存共享的spdk架構多控存儲擴展裝置,其特征在于,所述裝置包括:
9.一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如權利要求1-7任一項所述方法的步驟。
10.一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機可讀存儲介質(zhì)中存儲有指令,當所述指令在計算機或處理器上運行時,使得所述計算機或處理器執(zhí)行如權利要求1-7任一項所述方法的步驟。