專利名稱:輸入輸出請求調(diào)度方法、存儲控制器和存儲陣列的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲技術(shù)領(lǐng)域,具體涉及一種輸入輸出(10,Input Output)請求調(diào)度 方法、存儲控制器和存儲陣列。
背景技術(shù):
存儲陣列的核心是保證有效地將數(shù)據(jù)寫入或讀出,以滿足不同應(yīng)用的需求?,F(xiàn)有 的存儲陣列中,通常按照功能劃分不同的模塊,然后定義各模塊的邊界和接口,各模塊之間 通過接口進行通信。參見圖1,圖1是現(xiàn)有技術(shù)中的存儲陣列結(jié)構(gòu)示意圖。其中,存儲陣列中的功能模塊通常包括目標器(Target)、緩存(Cache)模塊、復(fù)制 (Replication)模塊、快照(Snapshot)模塊、獨立冗余磁盤陣列(RAID,Redundant Array Of Independent Disk)和磁盤等其它模塊,存儲陣列中還包括一些驅(qū)動接口?,F(xiàn)有的存儲陣列在接收到主機發(fā)送的IO請求后,目標器中的線程將該IO請求加 入到等候隊列中排隊進行處理,在目標器中的線程將該IO請求處理完成后,將處理結(jié)果傳 遞給下層模塊,比如緩存模塊,該處理結(jié)果中包括偏移地址、長度等信息;緩存模塊中的線 程根據(jù)接收到的處理結(jié)果按照隊列方式排隊處理緩存IO請求,在處理完成后將緩存IO請 求的處理結(jié)果傳遞給下層模塊,逐層傳遞處理結(jié)果,實現(xiàn)將數(shù)據(jù)寫入磁盤中或從磁盤讀出。發(fā)明人在研究現(xiàn)有技術(shù)的過程中發(fā)現(xiàn),由于各模塊之間存在各自獨立的線程,IO 請求在執(zhí)行過程中需要進行多次上下文切換,導(dǎo)致IO請求的響應(yīng)時間較長,影響存儲陣列 的性能。
發(fā)明內(nèi)容
本發(fā)明提供一種使用一個線程運行IO請求的所有階段,從而避免和其它線程進 行上下文切換的IO請求調(diào)度方法、存儲控制器以及存儲陣列。本發(fā)明實施例提供的輸入輸出請求調(diào)度方法,包括接收主機發(fā)送的輸入輸出請求,所述輸入輸出請求中攜帶目標地址信息;根據(jù)所述目標地址信息調(diào)用目標器子類中的處理函數(shù),所述目標器子類是從預(yù)置 的基類中繼承得到的;根據(jù)所述目標器子類中的處理函數(shù)的輸出結(jié)果調(diào)用緩存子類中的處理函數(shù),所述 緩存子類是從預(yù)置的基類中繼承得到的;根據(jù)所述緩存子類中的處理函數(shù)的輸出結(jié)果調(diào)用獨立冗余磁盤陣列算法子類中 的處理函數(shù),所述獨立冗余磁盤陣列算法子類是從預(yù)置的基類中繼承得到的;根據(jù)所述獨立冗余磁盤陣列算法子類中的處理函數(shù)的輸出結(jié)果調(diào)用磁盤子類中 的處理函數(shù),所述磁盤子類是從預(yù)置的基類中繼承得到的。本發(fā)明實施例還提供一種存儲控制器,包括輸入輸出接收單元,用于接收主機發(fā)送的輸入輸出請求,所述輸入輸出請求中攜帶目標地址信息;函數(shù)調(diào)用單元,用于根據(jù)所述目標地址信息調(diào)用目標器子類中的處理函數(shù),所述 目標器子類是從預(yù)置的基類中繼承得到的;所述函數(shù)調(diào)用單元還根據(jù)所述目標器子類中的處理函數(shù)的輸出結(jié)果調(diào)用緩存子 類中的處理函數(shù),所述緩存子類是從預(yù)置的基類中繼承得到的;所述函數(shù)調(diào)用單元還根據(jù)所述緩存子類中的處理函數(shù)的輸出結(jié)果調(diào)用陣列子類 中的處理函數(shù),所述陣列子類是從預(yù)置的基類中繼承得到的;所述函數(shù)調(diào)用單元還根據(jù)所述陣列子類中的處理函數(shù)的輸出結(jié)果調(diào)用磁盤子類 中的處理函數(shù),所述磁盤子類是從預(yù)置的基類中繼承得到的。本發(fā)明實施例還提供一種存儲陣列,包括如上所述的存儲控制器。在本發(fā)明實施例中,存儲控制器在接收到IO請求后,順序調(diào)用從基類中繼承得到 的目標器子類中的處理函數(shù)、緩存子類中的處理函數(shù)、獨立冗余磁盤陣列算法子類中的處 理函數(shù)以及磁盤子類中的處理函數(shù),只需要一個線程來執(zhí)行全部調(diào)用過程,即一個線程可 以運行完IO執(zhí)行的所有階段,無需和其它線程做上下文切換,進而減少線程之間的鎖競 爭,提高IO的處理速度,進而提高存儲系統(tǒng)的性能。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。圖1是現(xiàn)有技術(shù)中的存儲陣列的結(jié)構(gòu)示意圖;圖2是本發(fā)明實施例一提供的輸入輸出請求調(diào)度方法的流程圖;圖3是本發(fā)明實施例提供的輸入輸出請求調(diào)度方法中根據(jù)目標地址信息調(diào)用目 標器子類中的處理函數(shù)的實施例的流程圖;圖4是本發(fā)明實施例三提供的存儲控制器的結(jié)構(gòu)示意圖;圖5是本發(fā)明實施例四提供的存儲控制器的結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護的范圍。本發(fā)明提供了一種輸入輸出請求調(diào)度方法、存儲陣列以及存儲控制器。為了更好 的理解本發(fā)明實施例的技術(shù)方案,下面結(jié)合附圖對本發(fā)明提供的實施例進行詳細地描述。參見圖2,圖2是本發(fā)明實施例一提供的輸入輸出請求調(diào)度方法的流程圖。本發(fā)明實施例提供的輸入輸出請求調(diào)度方法可以包括Al、接收主機發(fā)送的輸入輸出請求,輸入輸出請求中攜帶目標地址信息。具體的,存儲控制器可以接收主機發(fā)送的輸入輸出請求,例如錯誤處理IO請求,定時處理IO請求等,存儲控制器接收到的輸入輸出請求中攜帶目標地址信息。其中,目標 地址信息中可以包括下層對象、偏移地址、數(shù)據(jù)長度等信息。A2、根據(jù)目標地址信息調(diào)用目標器子類中的處理函數(shù),目標器子類是從預(yù)置的基 類中繼承得到的。具體的,存儲控制器可以根據(jù)目標地址信息來調(diào)用目標器子類中的處理函數(shù),目 標器子類是從預(yù)置的基類中繼承得到的。其中,預(yù)置的基類是對現(xiàn)有RAID IO對象、復(fù)制IO對象、快照IO對象、Cache IO對 象以及Target IO對象等進行抽象得到的,基類中包括IO本身的特性(即數(shù)據(jù)部分)以及 IO操作的特性(即處理函數(shù))。目標器子類繼承了基類中的數(shù)據(jù)部分和處理函數(shù),同時針 對目標器本身的特性又增加了其它的數(shù)據(jù)部分和處理函數(shù)。A3、根據(jù)目標器子類中的處理函數(shù)的輸出結(jié)果調(diào)用緩存子類中的處理函數(shù),緩存 子類是從預(yù)置的基類中繼承得到的。具體的,存儲控制器可以根據(jù)步驟A2中的目標器子類中的處理函數(shù)的輸出結(jié)果 進一步調(diào)用下一級處理函數(shù),即調(diào)用緩存子類中的處理函數(shù),緩存子類是從預(yù)置的基類中 繼承得到。其中,緩存子類中的處理函數(shù)的輸出結(jié)果可以包括下層對象、偏移地址、長度等 信息。緩存子類繼承了基類中的數(shù)據(jù)部分和處理函數(shù),同時針對緩存本身的特性又增加了 其它的數(shù)據(jù)部分和處理函數(shù)。A4、根據(jù)緩存子類中的處理函數(shù)的輸出結(jié)果調(diào)用獨立冗余磁盤陣列算法子類中的 處理函數(shù),獨立冗余磁盤陣列算法子類是從預(yù)置的基類中繼承得到的。具體的,存儲控制器可以根據(jù)步驟A3中的緩存子類中的處理函數(shù)的輸出結(jié)果進 一步調(diào)用下一級處理函數(shù),即調(diào)用獨立冗余磁盤陣列算法子類中的處理函數(shù),獨立冗余磁 盤陣列算法子類是從預(yù)置的基類中繼承得到。獨立冗余磁盤陣列算法子類繼承了基類中的 數(shù)據(jù)部分和處理函數(shù),同時針對獨立冗余磁盤陣列算法模塊本身的特性又增加了其它的數(shù) 據(jù)部分和處理函數(shù)。其中,獨立冗余磁盤陣列算法可以包括RAIDO RAID7等多種算法。A5、根據(jù)獨立冗余磁盤陣列算法子類中的處理函數(shù)的輸出結(jié)果調(diào)用磁盤子類中的 處理函數(shù),磁盤子類是從預(yù)置的基類中繼承得到的。具體的,存儲控制器可以根據(jù)步驟A4中的獨立冗余磁盤陣列算法子類中的處理 函數(shù)的輸出結(jié)果進一步調(diào)用下一級處理函數(shù),即調(diào)用磁盤子類中的處理函數(shù),磁盤子類是 從預(yù)置的基類中繼承得到的。磁盤子類繼承了基類中的數(shù)據(jù)部分和處理函數(shù),同時針對磁 盤本身的特性增加了其它的數(shù)據(jù)部分和處理函數(shù)。磁盤子類中的處理函數(shù)進行相應(yīng)的處理,完成磁盤的讀寫請求,磁盤子類中的處 理函數(shù)設(shè)置返回值,通知上一級模塊IO請求處理完成。在本發(fā)明實施例中,存儲控制器在接收到IO請求后,順序調(diào)用從基類中繼承得到 的目標器子類中的處理函數(shù)、緩存子類中的處理函數(shù)、獨立冗余磁盤陣列算法子類中的處 理函數(shù)以及磁盤子類中的處理函數(shù),只需要一個線程來執(zhí)行全部調(diào)用過程,即一個線程可 以運行完IO執(zhí)行的所有階段,執(zhí)行過程無需和其它線程做上下文切換,進而減少線程之間 的鎖競爭,提高IO的處理速度,進而提高存儲系統(tǒng)的性能。在本發(fā)明實施例中,基類中IO本身的特性可以包括
1)10數(shù)據(jù)發(fā)送的對象,即IO數(shù)據(jù)在存儲介質(zhì)中的實際地址;2) IO數(shù)據(jù)的偏移;3) IO數(shù)據(jù)的長度;4) IO之間的可能依賴關(guān)系等其它數(shù)據(jù)。
IO操作的特性可以包括1)啟動IO的執(zhí)行;2) IO執(zhí)行完畢后的回調(diào);3)當(dāng)前的IO還存在子10,子IO執(zhí)行完畢等其它處理函數(shù)?;愔袇?shù)可以如表1所示。表 權(quán)利要求
1.一種輸入輸出請求調(diào)度方法,其特征在于,包括接收主機發(fā)送的輸入輸出請求,所述輸入輸出請求中攜帶目標地址信息; 根據(jù)所述目標地址信息調(diào)用目標器子類中的處理函數(shù),所述目標器子類是從預(yù)置的基 類中繼承得到的;根據(jù)所述目標器子類中的處理函數(shù)的輸出結(jié)果調(diào)用緩存子類中的處理函數(shù),所述緩存 子類是從預(yù)置的基類中繼承得到的;根據(jù)所述緩存子類中的處理函數(shù)的輸出結(jié)果調(diào)用獨立冗余磁盤陣列算法子類中的處 理函數(shù),所述獨立冗余磁盤陣列算法子類是從預(yù)置的基類中繼承得到的;根據(jù)所述獨立冗余磁盤陣列算法子類中的處理函數(shù)的輸出結(jié)果調(diào)用磁盤子類中的處 理函數(shù),所述磁盤子類是從預(yù)置的基類中繼承得到的。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述接收主機發(fā)送的輸入輸出請求之 后,還包括將接收到的輸入輸出請求中的定時處理輸入輸出請求加入到預(yù)置的定時處理隊列中;所述根據(jù)目標地址信息調(diào)用目標器子類中的處理函數(shù),包括 判斷預(yù)置的定時器是否到時;若定時器到時,則獲取接收到的輸入輸出請求中的定時處理輸入輸出請求; 根據(jù)所述獲取的定時處理輸入輸出請求中攜帶的目標地址信息調(diào)用目標器子類中的 處理函數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在將定時處理輸入輸出請求加入到定時 處理隊列之后,還包括獲取接收到的輸入輸出請求中除定時處理請求之外的輸入輸出請求的優(yōu)先級; 將優(yōu)先級低于預(yù)置級別的輸入輸出請求加入到低優(yōu)先級等候隊列中,將優(yōu)先級高于預(yù) 置級別的輸入輸出請求加入到高優(yōu)先級等候隊列中; 所述方法還包括若定時器沒有到時,則判斷高優(yōu)先級隊列中是否存在輸入輸出請求; 若高優(yōu)先級隊列中存在輸入輸出請求,則獲取高優(yōu)先級隊列中的第一輸入輸出請求; 根據(jù)所述第一輸入輸出請求中攜帶的目標地址信息調(diào)用目標器子類中的處理函數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括若高優(yōu)先級隊列中不存在輸入輸出請求,則獲取低優(yōu)先級隊列中的第二輸入輸出請求;根據(jù)所述第二輸入輸出請求中攜帶的目標地址信息調(diào)用目標器子類中的處理函數(shù)。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,在根據(jù)獨立冗余磁盤陣列算法子類中 的處理函數(shù)的輸出結(jié)果調(diào)用磁盤子類中的處理函數(shù)之后,還包括獲取所述高優(yōu)先級隊列和所述低優(yōu)先級隊列當(dāng)前的隊列深度; 在所述低優(yōu)先級隊列的隊列深度減去所述高優(yōu)先級隊列的隊列深度的差大于預(yù)設(shè)值 時,降低所述預(yù)置級別的等級。
6.一種存儲控制器,其特征在于,包括輸入輸出接收單元,用于接收主機發(fā)送的輸入輸出請求,所述輸入輸出請求中攜帶目標地址信息;函數(shù)調(diào)用單元,用于根據(jù)所述目標地址信息調(diào)用目標器子類中的處理函數(shù),所述目標 器子類是從預(yù)置的基類中繼承得到的;所述函數(shù)調(diào)用單元還根據(jù)所述目標器子類中的處理函數(shù)的輸出結(jié)果調(diào)用緩存子類中 的處理函數(shù),所述緩存子類是從預(yù)置的基類中繼承得到的;所述函數(shù)調(diào)用單元還根據(jù)所述緩存子類中的處理函數(shù)的輸出結(jié)果調(diào)用陣列子類中的 處理函數(shù),所述陣列子類是從預(yù)置的基類中繼承得到的;所述函數(shù)調(diào)用單元還根據(jù)所述陣列子類中的處理函數(shù)的輸出結(jié)果調(diào)用磁盤子類中的 處理函數(shù),所述磁盤子類是從預(yù)置的基類中繼承得到的。
7.根據(jù)權(quán)利要求6所述的存儲控制器,其特征在于,還包括定時請求處理單元,用于在接收到主機發(fā)送的輸入輸出請求之后,將接收到的輸入輸 出請求中的定時處理輸入輸出請求加入到預(yù)置的定時處理隊列中; 所述函數(shù)調(diào)用單元包括 定時判斷模塊,用于判斷預(yù)置的定時器是否到時;第一獲取模塊,用于在所述定時判斷單元判斷定時器到時,則獲取接收到的輸入輸出 請求中的定時處理輸入輸出請求;函數(shù)調(diào)用模塊,用于根據(jù)所述獲取的定時處理輸入輸出請求中攜帶的目標地址信息調(diào) 用目標器子類中的處理函數(shù)。
8.根據(jù)權(quán)利要求7所述的存儲控制器,其特征在于,還包括優(yōu)先級獲取單元,用于在所述定時請求處理單元將定時處理輸入輸出請求加入到定時 處理隊列之后,獲取接收到的輸入輸出請求中除定時處理請求之外的輸入輸出請求的優(yōu)先 級;隊列調(diào)度單元,用于將優(yōu)先級低于預(yù)置級別的輸入輸出請求加入到低優(yōu)先級等候隊列 中,將優(yōu)先級高于預(yù)置級別的輸入輸出請求加入到高優(yōu)先級等候隊列中; 所述函數(shù)調(diào)用單元還包括隊列判斷模塊,用于在所述定時判斷單元判斷定時器沒有到時,則判斷高優(yōu)先級隊列 中是否存在輸入輸出請求;第二獲取模塊,用于在所述隊列判斷單元判斷高優(yōu)先級隊列中存在輸入輸出請求,則 獲取高優(yōu)先級隊列中的第一輸入輸出請求;所述函數(shù)調(diào)用模塊還根據(jù)所述第一輸入輸出請求中攜帶的目標地址信息調(diào)用目標器 子類中的處理函數(shù)。
9.根據(jù)權(quán)利要求8所述的存儲控制器,其特征在于,所述函數(shù)調(diào)用單元還包括第三獲取模塊,用于在所述隊列判斷模塊判斷高優(yōu)先級隊列中不存在輸入輸出請求, 則獲取低優(yōu)先級隊列中的第二輸入輸出請求;所述函數(shù)調(diào)用模塊還用于根據(jù)所述第二輸入輸出請求中攜帶的目標地址信息調(diào)用目 標器子類中的處理函數(shù)。
10.根據(jù)權(quán)利要求8或9所述的存儲控制器,其特征在于,還包括;隊列深度獲取單元,用于在所述函數(shù)調(diào)用單元根據(jù)獨立冗余磁盤陣列算法子類中的處 理函數(shù)的輸出結(jié)果調(diào)用磁盤子類中的處理函數(shù)之后,獲取所述高優(yōu)先級隊列和所述優(yōu)先級隊列當(dāng)前的隊列深度;預(yù)置級別調(diào)整單元,用于在所述低優(yōu)先級隊列的隊列深度減去所述高優(yōu)先級隊列的隊 列深度的差大于預(yù)設(shè)值時,減小所述預(yù)置級別的大小。
11. 一種存儲陣列,其特征在于,包括 如權(quán)利要求5到10任一項所述的存儲控制器。
全文摘要
本發(fā)明實施例公開了一種輸入輸出請求調(diào)度方法、存儲控制器和存儲陣列,該方法包括接收主機發(fā)送的輸入輸出請求,輸入輸出請求中攜帶目標地址信息;根據(jù)目標地址信息調(diào)用目標器子類中的處理函數(shù),目標器子類是從預(yù)置的基類中繼承得到的;根據(jù)目標器子類中的處理函數(shù)的輸出結(jié)果調(diào)用緩存子類中的處理函數(shù),緩存子類是從預(yù)置的基類中繼承得到的;根據(jù)緩存子類中的處理函數(shù)的輸出結(jié)果調(diào)用獨立冗余磁盤陣列算法子類中的處理函數(shù),獨立冗余磁盤陣列算法子類是從預(yù)置的基類中繼承得到的;根據(jù)獨立冗余磁盤陣列算法子類中的處理函數(shù)的輸出結(jié)果調(diào)用磁盤子類中的處理函數(shù),磁盤子類是從預(yù)置的基類中繼承得到的。本發(fā)明可以提高存儲系統(tǒng)的性能。
文檔編號G06F3/06GK102073461SQ20101057709
公開日2011年5月25日 申請日期2010年12月7日 優(yōu)先權(quán)日2010年12月7日
發(fā)明者羅慶超 申請人:成都市華為賽門鐵克科技有限公司