两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

寫操作處理方法和裝置的制作方法

文檔序號(hào):6583674閱讀:124來(lái)源:國(guó)知局
專利名稱:寫操作處理方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種寫操作處理方法和裝置。 隨著存儲(chǔ)信息的爆炸式增長(zhǎng),采用獨(dú)立冗余磁盤陣列(Redundant Array oflnd印endent Disk ;以下簡(jiǎn)稱RAID)技術(shù)的大容量、高效率、高可靠性的磁盤陣列存儲(chǔ) 設(shè)備得到越來(lái)越普遍的應(yīng)用;RAID發(fā)展至今共有10個(gè)主要等級(jí),其中RAID5因其磁盤利用 率高和可靠性高得到最廣泛的應(yīng)用。RAID5采用條帶化和磁盤冗余相結(jié)合的技術(shù),條帶化提 高了訪問(wèn)速度,磁盤冗余提高了數(shù)據(jù)的可靠性。 在存儲(chǔ)系統(tǒng)中,RAID收到緩沖存儲(chǔ)器(CACHE)下發(fā)的地址連續(xù)的數(shù)據(jù)塊后要把數(shù) 據(jù)塊拆分成小數(shù)據(jù)塊下發(fā)到對(duì)應(yīng)的磁盤上,假設(shè)CACHE下發(fā)的數(shù)據(jù)塊是B0B1B2,該數(shù)據(jù)塊 將被拆分成BO、 Bl和B2,計(jì)算出校驗(yàn)數(shù)據(jù)塊,然后下發(fā)到對(duì)應(yīng)的磁盤上。RAID每收到一塊 CACHE下發(fā)的數(shù)據(jù)塊,就要對(duì)該數(shù)據(jù)塊進(jìn)行拆分、計(jì)算校驗(yàn)數(shù)據(jù)塊和下發(fā)到對(duì)應(yīng)的磁盤的操 作。RAID5寫操作中,計(jì)算新的校驗(yàn)數(shù)據(jù)塊的方法包括大寫和小寫兩種算法。其中,根據(jù)要 寫的數(shù)據(jù)和其它數(shù)據(jù)單元的數(shù)據(jù)計(jì)算新的校驗(yàn)數(shù)據(jù)塊的算法稱作大寫;根據(jù)要寫的數(shù)據(jù)、 將要被覆蓋的數(shù)據(jù)及現(xiàn)有的校驗(yàn)數(shù)據(jù)塊計(jì)算新的校驗(yàn)數(shù)據(jù)塊的算法稱作小寫。
RAID成員盤中的一組位置相同的磁盤邏輯分塊組成一個(gè)分條(Stripe),在同一 分條進(jìn)行的多個(gè)寫操作要執(zhí)行互斥,在同一分條進(jìn)行的多個(gè)寫操作要串行執(zhí)行,以保證數(shù) 據(jù)的一致性?,F(xiàn)有技術(shù)中,寫操作的執(zhí)行效率低;當(dāng)采用小寫算法時(shí),還存在增加磁盤負(fù)荷、 增大主機(jī)的輸入輸出(Input Output ;以下簡(jiǎn)稱10)延時(shí),以及增加資源消耗的缺陷。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種寫操作處理方法和裝置,以實(shí)現(xiàn)并行處理同一分條上的至 少兩個(gè)寫操作請(qǐng)求,減少了不必要的下盤操作,減小了主機(jī)的10延時(shí)。
本發(fā)明實(shí)施例提供一種寫操作處理方法,包括 接收到寫操作請(qǐng)求之后,根據(jù)所述寫操作請(qǐng)求的接收時(shí)間和目的地址將所述寫操 作請(qǐng)求插入等待隊(duì)列; 在達(dá)到預(yù)定的觸發(fā)條件之后,將所述等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與 所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求合并為寫操作請(qǐng)求列表,所述寫 操作請(qǐng)求列表包括至少兩個(gè)寫操作請(qǐng)求; 將所述寫操作請(qǐng)求列表按照分條拆分為分條列表,所述分條列表包括至少兩個(gè)寫 操作請(qǐng)求; 并行處理所述分條列表上的至少兩個(gè)寫操作請(qǐng)求。
本發(fā)明實(shí)施例還提供一種寫操作處理裝置,包括 隊(duì)列插入模塊,用于在接收到寫操作請(qǐng)求之后,根據(jù)所述寫操作請(qǐng)求的接收時(shí)間 和目的地址將所述寫操作請(qǐng)求插入等待隊(duì)列;
背景技術(shù)
5
列表插入模塊,用于在達(dá)到預(yù)定的觸發(fā)條件之后,將所述等待隊(duì)列中最先接收的 寫操作請(qǐng)求,以及與所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作 請(qǐng)求列表,所述寫操作請(qǐng)求列表包括至少兩個(gè)寫操作請(qǐng)求; 拆分模塊,用于將所述列表插入模塊獲得的寫操作請(qǐng)求列表按照分條拆分為分條 列表,所述分條列表包括至少兩個(gè)寫操作請(qǐng)求; 處理模塊,用于并行處理所述分條列表上的至少兩個(gè)寫操作請(qǐng)求。 本發(fā)明實(shí)施例中,在接收到寫操作請(qǐng)求之后,將該寫操作請(qǐng)求插入等待隊(duì)列,在達(dá)
到預(yù)定的觸發(fā)條件之后,將等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與該最先接收的寫操
作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表,在處理該寫操作請(qǐng)求列表時(shí),
先按照分條將寫操作列表拆分為分條列表,該分條列表包括至少兩個(gè)寫操作請(qǐng)求,然后并
行處理該分條列表上的至少兩個(gè)寫操作請(qǐng)求;從而實(shí)現(xiàn)了在RAID層并行處理同一分條上
的至少兩個(gè)寫操作請(qǐng)求,減少了不必要的下盤操作,減小了主機(jī)的10延時(shí)。


為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使 用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
圖1為本發(fā)明寫操作處理方法一個(gè)實(shí)施例的流程圖;
圖2為本發(fā)明寫操作處理方法另一個(gè)實(shí)施例的流程圖; 圖3為本發(fā)明將目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表一個(gè)實(shí)施例的 流程圖; 圖4為本發(fā)明分條列表一個(gè)實(shí)施例的示意圖; 圖5(a)為本發(fā)明分條單元包含至少兩個(gè)寫操作請(qǐng)求一個(gè)實(shí)施例的示意圖;
圖5(b)為本發(fā)明包含至少兩個(gè)寫操作請(qǐng)求的分條單元一個(gè)實(shí)施例的結(jié)構(gòu)示意 圖; 圖6為本發(fā)明寫操作處理裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖7為本發(fā)明寫操作處理裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例
中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是
本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員
在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明寫操作處理方法一個(gè)實(shí)施例的流程圖,如圖1所示,該實(shí)施例包括 步驟101,接收到寫操作請(qǐng)求之后,根據(jù)該寫操作請(qǐng)求的接收時(shí)間和目的地址將該
寫操作請(qǐng)求插入等待隊(duì)列。 具體地,在接收到寫操作請(qǐng)求之后,寫操作處理裝置根據(jù)該寫操作請(qǐng)求的目的地 址,按照目的地址增加或減少的順序?qū)⒃搶懖僮髡?qǐng)求插入上述目的地址對(duì)應(yīng)的邏輯單元號(hào)(Logic Unit Number ;以下簡(jiǎn)稱LUN)的第一等待隊(duì)列;并根據(jù)該寫操作請(qǐng)求的接收時(shí)間,
按照接收時(shí)間由先至后的順序?qū)⒃搶懖僮髡?qǐng)求插入上述LUN的第二等待隊(duì)列;并按照接收
時(shí)間由先至后的順序?qū)⑺鰧懖僮髡?qǐng)求插入包含所有寫操作請(qǐng)求的第三等待隊(duì)列。 步驟102,在達(dá)到預(yù)定的觸發(fā)條件之后,將等待隊(duì)列中最先接收的寫操作請(qǐng)求,
以及與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表
(Request List ;以下簡(jiǎn)稱REQ_List);該寫操作請(qǐng)求列表包括至少兩個(gè)寫操作請(qǐng)求。 本實(shí)施例中,上述觸發(fā)條件可以包括第三等待隊(duì)列中最先接收的寫操作請(qǐng)求的
等待時(shí)間達(dá)到預(yù)設(shè)的等待時(shí)間閾值;或者,第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)達(dá)到預(yù)設(shè)的
等待個(gè)數(shù)閾值。 步驟103,將寫操作請(qǐng)求列表按照分條拆分為分條列表,該分條列表包括至少兩個(gè)寫操作請(qǐng)求。其中,每個(gè)分條列表中的寫操作請(qǐng)求的目的地址在同一分條上。
步驟104,并行處理上述分條列表上的至少兩個(gè)寫操作請(qǐng)求。 具體地,寫操作處理裝置并行處理上述分條列表上的至少兩個(gè)寫操作請(qǐng)求可以為 寫操作處理裝置將分條列表進(jìn)一步拆分為分條單元(Stripe Unit ;以下簡(jiǎn)稱SU),并行處理拆分后獲得的至少兩個(gè)分條單元上的至少兩個(gè)寫操作請(qǐng)求。其中,分條單元是RAID中的一個(gè)分條在一個(gè)磁盤上的邏輯分塊。 本實(shí)施例中,一個(gè)分條列表包括至少兩個(gè)寫操作請(qǐng)求,一個(gè)分條單元可以包括至少一個(gè)寫操作請(qǐng)求。 上述實(shí)施例中,寫操作處理裝置在接收到寫操作請(qǐng)求之后,將該寫操作請(qǐng)求插入
等待隊(duì)列,在達(dá)到預(yù)定的觸發(fā)條件之后,將等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與該最
先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表,在處理該寫操作
請(qǐng)求列表時(shí),先按照分條將寫操作列表拆分為分條列表,該分條列表包括至少兩個(gè)寫操作
請(qǐng)求,然后并行處理該分條列表上的至少兩個(gè)寫操作請(qǐng)求;從而實(shí)現(xiàn)了并行處理同一分條
上的至少兩個(gè)寫操作請(qǐng)求,減少了不必要的下盤操作,減小了主機(jī)的IO延時(shí)。 圖2為本發(fā)明寫操作處理方法另一個(gè)實(shí)施例的流程圖,如圖2所示,該實(shí)施例包
括 步驟201,接收到寫操作請(qǐng)求之后,根據(jù)該寫操作請(qǐng)求的接收時(shí)間和目的地址將該寫操作請(qǐng)求插入等待隊(duì)列。 具體地,在接收到寫操作請(qǐng)求之后,寫操作處理裝置根據(jù)該寫操作請(qǐng)求的目的地址,按照目的地址增加或減少的順序?qū)⒃搶懖僮髡?qǐng)求插入上述目的地址對(duì)應(yīng)的邏輯單元號(hào)(Logic Unit Number ;以下簡(jiǎn)稱LUN)的第一等待隊(duì)列;并根據(jù)該寫操作請(qǐng)求的接收時(shí)間,按照接收時(shí)間由先至后的順序?qū)⒃搶懖僮髡?qǐng)求插入上述LUN的第二等待隊(duì)列;并按照接收時(shí)間由先至后的順序?qū)⑺鰧懖僮髡?qǐng)求插入包含所有寫操作請(qǐng)求的第三等待隊(duì)列。
步驟202,判斷第三等待隊(duì)列中最先接收的寫操作請(qǐng)求的等待時(shí)間是否達(dá)到預(yù)設(shè)的等待時(shí)間閾值。如果第三等待隊(duì)列中最先接收的寫操作請(qǐng)求的等待時(shí)間達(dá)到預(yù)設(shè)的等待時(shí)間閾值,則執(zhí)行步驟203 ;如果第三等待隊(duì)列中最先接收的寫操作請(qǐng)求的等待時(shí)間未達(dá)到預(yù)設(shè)的等待時(shí)間閾值,則執(zhí)行步驟204 步驟205。 其中,該等待時(shí)間閾值可以動(dòng)態(tài)設(shè)置,本實(shí)施例以該等待時(shí)間閾值為2ms為例進(jìn)
7行說(shuō)明。 步驟203,取出第三等待隊(duì)列中最先接收的寫操作請(qǐng)求,執(zhí)行步驟206。 本實(shí)施例中,當(dāng)?shù)谌却?duì)列中最先接收的寫操作請(qǐng)求的等待時(shí)間達(dá)到預(yù)設(shè)的等
待時(shí)間閾值時(shí),取出第三等待隊(duì)列中最先接收的寫操作請(qǐng)求,然后執(zhí)行步驟206,將該最先
接收的寫操作請(qǐng)求插入寫操作請(qǐng)求列表。 步驟204,判斷第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)是否達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值。如果第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)已達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值,則執(zhí)行步驟205 ;如果第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)未達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值,則結(jié)束本次流程。
本實(shí)施例中,如果第三等待隊(duì)列中最先接收的寫操作請(qǐng)求尚未達(dá)到預(yù)設(shè)的等待時(shí)間閾值,則寫操作處理裝置判斷每個(gè)LUN的第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)是否達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值。其中,該等待個(gè)數(shù)閾值可以動(dòng)態(tài)設(shè)置,本實(shí)施例以該等待個(gè)數(shù)閾值為6為例進(jìn)行說(shuō)明。 步驟205,取出第二等待隊(duì)列中最先接收的寫操作請(qǐng)求;然后,執(zhí)行步驟206。
本實(shí)施例中,在某個(gè)LUN的第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值之后,取出該第二等待隊(duì)列中最先接收的寫操作請(qǐng)求,然后執(zhí)行步驟206,將該最先接收的寫操作請(qǐng)求插入寫操作請(qǐng)求列表。 步驟206,將最先接收的寫操作請(qǐng)求插入寫操作請(qǐng)求列表。然后,記錄最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中與該最先接收的寫操作請(qǐng)求相鄰的寫操作請(qǐng)求的目的地址,并將最先接收的寫操作請(qǐng)求從第三等待隊(duì)列,以及該最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列和第二等待隊(duì)列中刪除。 其中,與該最先接收的寫操作請(qǐng)求相鄰的寫操作請(qǐng)求可以包括第一寫操作請(qǐng)求和/或第二寫操作請(qǐng)求,對(duì)應(yīng)的,假設(shè)第一寫操作請(qǐng)求的目的地址為第一 目的地址,第二寫操作請(qǐng)求的目的地址為第二目的地址。因此寫操作處理裝置記錄的與該最先接收的寫操作請(qǐng)求相鄰的寫操作請(qǐng)求的目的地址可以包括第一 目的地址和/或第二目的地址。在此假設(shè),第一 目的地址為最先接收的寫操作請(qǐng)求的高地址方向相鄰的第一個(gè)寫操作請(qǐng)求的目的地址,第二目的地址為最先接收的寫操作請(qǐng)求的低地址方向相鄰的第一個(gè)寫操作請(qǐng)求的目的地址。 步驟207,根據(jù)記錄的目的地址在該最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中,查找與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求,并將查找到的寫操作請(qǐng)求插入上述寫操作請(qǐng)求列表。 圖3為本發(fā)明將目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表一個(gè)實(shí)施例的流程圖,該實(shí)施例具體介紹步驟207中,根據(jù)記錄的目的地址在該最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中,查找與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求,并將查找到的寫操作請(qǐng)求插入上述寫操作請(qǐng)求列表的一種操作流程。如圖3所示,該實(shí)施例包括 步驟301,根據(jù)記錄的第一目的地址,在該最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中查找與該第一 目的地址對(duì)應(yīng)的寫操作請(qǐng)求。 本實(shí)施例中,寫操作處理裝置先查找第一 目的地址對(duì)應(yīng)的寫操作請(qǐng)求,再按照目的地址從低到高的順序在上述第一等待隊(duì)列中繼續(xù)查找。當(dāng)然本發(fā)明實(shí)施例并不局限于此,寫操作處理裝置也可以先根據(jù)步驟206中記錄的第二目的地址,在該最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中查找與該第二目的地址對(duì)應(yīng)的寫操作請(qǐng)求,再按照目的地址從高到低的順序在上述第一等待隊(duì)列中繼續(xù)查找。 本發(fā)明實(shí)施例對(duì)查找順序不作限定,但本實(shí)施例先按照目的地址從低到高的順序、再按照目的地址從高到低的順序進(jìn)行查找。 步驟302,判斷查找到的寫操作請(qǐng)求是否為第一等待隊(duì)列的隊(duì)列頭。如果查找到的寫操作請(qǐng)求是第一等待隊(duì)列的隊(duì)列頭,則執(zhí)行步驟311 ;如果查找到的寫操作請(qǐng)求不是第一等待隊(duì)列的隊(duì)列頭,則執(zhí)行步驟303。 步驟303,判斷查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址是否相鄰。如果相鄰,則執(zhí)行步驟304 ;如果查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址不相鄰,則執(zhí)行步驟311。 具體地,判斷查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址是否相鄰可以為判斷查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址相差是否超過(guò)預(yù)設(shè)的范圍閾值;如果未超過(guò)預(yù)設(shè)的范圍閾值,則可以確定查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址相鄰;如果查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址相差超過(guò)預(yù)設(shè)的范圍閾值,則可以確定查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址不相鄰。 由于寫操作請(qǐng)求一般是請(qǐng)求將待寫入數(shù)據(jù)寫入一段地址,因此本發(fā)明實(shí)施例中的寫操作請(qǐng)求的目的地址包括寫操作請(qǐng)求的起始地址和結(jié)束地址。因此更具體地,判斷查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址是否相鄰可以為判斷查找到的寫操作請(qǐng)求的結(jié)束地址與最先接收的寫操作請(qǐng)求的起始地址相差是否超過(guò)預(yù)設(shè)的范圍閾值;或者,判斷最先接收的寫操作請(qǐng)求的結(jié)束地址與查找到的寫操作請(qǐng)求的起始地址相差是否超過(guò)預(yù)設(shè)的范圍閾值。當(dāng)查找到的寫操作請(qǐng)求的結(jié)束地址與最先接收的寫操作請(qǐng)求的起始地址相差不超過(guò)預(yù)設(shè)的范圍閾值,或者,最先接收的寫操作請(qǐng)求的結(jié)束地址與查找到的寫操作請(qǐng)求的起始地址相差不超過(guò)預(yù)設(shè)的范圍閾值時(shí),可以確定查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址相鄰;當(dāng)查找到的寫操作請(qǐng)求的結(jié)束地址與最先接收的寫操作請(qǐng)求的起始地址相差超過(guò)預(yù)設(shè)的范圍閾值,或者,最先接收的寫操作請(qǐng)求的結(jié)束地址與查找到的寫操作請(qǐng)求的起始地址相差超過(guò)預(yù)設(shè)的范圍閾值時(shí),可以確定查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址不相鄰。 其中,該預(yù)設(shè)的范圍閾值可以為一個(gè)分條的范圍。即,當(dāng)查找到的寫操作請(qǐng)求的結(jié)
束地址與最先接收的寫操作請(qǐng)求的起始地址相差不超過(guò)一個(gè)分條的范圍,或者,最先接收
的寫操作請(qǐng)求的結(jié)束地址與查找到的寫操作請(qǐng)求的起始地址相差不超過(guò)一個(gè)分條的范圍
時(shí),可以確定查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址相鄰;當(dāng)查找到的
寫操作請(qǐng)求的結(jié)束地址與最先接收的寫操作請(qǐng)求的起始地址相差超過(guò)一個(gè)分條的范圍,或
者,最先接收的寫操作請(qǐng)求的結(jié)束地址與查找到的寫操作請(qǐng)求的起始地址相差超過(guò)一個(gè)分
條的范圍時(shí),可以確定查找到的寫操作請(qǐng)求與最先接收的寫操作請(qǐng)求的目的地址不相鄰。 本實(shí)施例中,查找到的寫操作請(qǐng)求的目的地址即為步驟206中記錄的第一 目的地址。 步驟304,將查找到的寫操作請(qǐng)求插入上述寫操作請(qǐng)求列表。
9
步驟305,判斷獲得的寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)是否大于預(yù)設(shè)的個(gè)數(shù)閾值。如果獲得的寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)不大于預(yù)設(shè)的個(gè)數(shù)閾值,則執(zhí)行步驟306 步驟309 ;如果獲得的寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)大于預(yù)設(shè)的個(gè)數(shù)閾值,則執(zhí)行步驟310。其中,預(yù)設(shè)的個(gè)數(shù)閾值可以根據(jù)實(shí)際需要任意設(shè)置,例如可以將該個(gè)數(shù)閾值設(shè)為6。 步驟306,從第一等待隊(duì)列、第二等待隊(duì)列和第三等待隊(duì)列中刪除上述查找到的寫操作請(qǐng)求。 優(yōu)選地,如果寫操作處理裝置未記錄查找到的寫操作請(qǐng)求的目的地址,則需先記錄查找到的寫操作請(qǐng)求的目的地址,再?gòu)牡谝坏却?duì)列、第二等待隊(duì)列和第三等待隊(duì)列中刪除上述查找到的寫操作請(qǐng)求。 步驟307,以上述查找到的寫操作請(qǐng)求的目的地址為參考,按照目的地址從低到高的順序,在上述第一等待隊(duì)列中繼續(xù)查找與上述查找到的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求。 步驟308,判斷查找到的寫操作請(qǐng)求是否為第一等待隊(duì)列的隊(duì)列頭。如果查找到的寫操作請(qǐng)求是第一等待隊(duì)列的隊(duì)列頭,則執(zhí)行步驟311 ;如果查找到的寫操作請(qǐng)求不是第一等待隊(duì)列的隊(duì)列頭,則執(zhí)行步驟309。 步驟309,判斷查找到的寫操作請(qǐng)求的目的地址與作為參考的目的地址是否相鄰。如果相鄰,則執(zhí)行步驟304 308 ;如果查找到的寫操作請(qǐng)求的目的地址與作為參考的目的地址不相鄰,則執(zhí)行步驟311。 具體地,判斷查找到的寫操作請(qǐng)求的目的地址與作為參考的目的地址是否相鄰的方法與步驟303提供的方法相同,在此不再贅述。 步驟310,從獲得的寫操作請(qǐng)求列表中刪除上述查找到的寫操作請(qǐng)求,執(zhí)行步驟208。 步驟311,結(jié)束上述順序的查找,根據(jù)步驟206記錄的第二目的地址,在該最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中查找與該第二目的地址對(duì)應(yīng)的寫操作請(qǐng)求,并執(zhí)行步驟302 步驟310。需要說(shuō)明的是,執(zhí)行步驟302 步驟310的過(guò)程中,在步驟307中,是按照目的地址從高到低的順序在第一等待隊(duì)列中查找。在按照目的地址從高到低的順序查找的過(guò)程中,如果再次查找到了第一等待隊(duì)列的隊(duì)列頭,則不論寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)是否大于預(yù)設(shè)的個(gè)數(shù)閾值,均結(jié)束本次流程,執(zhí)行步驟208。
步驟208,下發(fā)寫操作請(qǐng)求列表,返回執(zhí)行步驟202。 本實(shí)施例中,寫操作請(qǐng)求列表的生成流程與處理流程是并行執(zhí)行的流程,在步驟208,寫操作處理裝置將寫操作請(qǐng)求列表下發(fā)至該寫操作處理裝置中負(fù)責(zé)處理寫操作請(qǐng)求列表的功能模塊,并返回執(zhí)行步驟202。 在接收到寫操作請(qǐng)求列表之后,該寫操作處理裝置中負(fù)責(zé)處理寫操作請(qǐng)求列表的功能模塊將獲得的寫操作請(qǐng)求列表按照分條拆分為分條列表,并行處理分條列表上的至少兩個(gè)寫操作請(qǐng)求。 本實(shí)施例中,寫操作處理裝置將多個(gè)寫操作請(qǐng)求插入同一寫操作請(qǐng)求列表,因此獲得的寫操作請(qǐng)求列表中的寫操作請(qǐng)求的目的地址可能對(duì)應(yīng)不同的分條。在該寫操作處理裝置中負(fù)責(zé)處理寫操作請(qǐng)求列表的功能模塊處理該寫操作請(qǐng)求列表時(shí),該功能模塊首先需要按照分條,將該寫操作請(qǐng)求列表拆分為分條列表,每個(gè)分條列表中的寫操作請(qǐng)求的目的地址在同一分條上。圖4為本發(fā)明分條列表一個(gè)實(shí)施例的示意圖,如圖4所示,一個(gè)分條列表中包括至少兩個(gè)寫操作請(qǐng)求,每個(gè)分條列表中的寫操作請(qǐng)求的目的地址位于同一分條上。 具體地,在并行處理分條列表上的至少兩個(gè)寫操作請(qǐng)求時(shí),寫操作處理裝置中負(fù)
責(zé)處理寫操作請(qǐng)求列表的功能模塊將分條列表進(jìn)一步拆分為分條單元,分條單元是RAID中的一個(gè)分條在一個(gè)磁盤上的邏輯分塊;然后上述功能模塊并行處理分條列表的至少兩個(gè)
分條單元上的至少兩個(gè)寫操作請(qǐng)求。 本實(shí)施例中,一個(gè)分條列表包括至少兩個(gè)寫操作請(qǐng)求,一個(gè)分條單元可以包括至少一個(gè)寫操作請(qǐng)求。圖5(a)為本發(fā)明分條單元包含至少兩個(gè)寫操作請(qǐng)求一個(gè)實(shí)施例的示意圖;圖5(b)為本發(fā)明包含至少兩個(gè)寫操作請(qǐng)求的分條單元一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
上述實(shí)施例中,寫操作處理裝置將接收到的寫操作請(qǐng)求插入寫操作請(qǐng)求列表,在處理該寫操作請(qǐng)求列表時(shí),先按照分條將寫操作列表拆分為分條列表,該分條列表包括至少兩個(gè)寫操作請(qǐng)求,然后并行處理該分條列表上的至少兩個(gè)寫操作請(qǐng)求;從而實(shí)現(xiàn)了并行處理同一分條上的至少兩個(gè)寫操作請(qǐng)求,減少了不必要的下盤操作,減小了主機(jī)的10延時(shí)。 需要說(shuō)明的是,本發(fā)明實(shí)施例中,可能存在寫操作請(qǐng)求列表拆分成的分條列表中只包括一個(gè)寫操作請(qǐng)求的情形,例如寫操作請(qǐng)求列表中包括兩個(gè)寫操作請(qǐng)求,這兩個(gè)寫操作請(qǐng)求分別位于不同的分條上,拆分成的分條列表中各包括一個(gè)寫操作請(qǐng)求;上述情形同樣適用本發(fā)明實(shí)施例提出的寫操作處理方法,但本發(fā)明實(shí)施例以寫操作請(qǐng)求列表拆分成的分條列表中包括至少兩個(gè)寫操作請(qǐng)求為例進(jìn)行說(shuō)明。 本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、 RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。 圖6為本發(fā)明寫操作處理裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,該實(shí)施例的寫操作處理裝置可以作為RAID,或RAID的一部分,實(shí)現(xiàn)本發(fā)明圖1所示實(shí)施例的流程。如圖6所示,該寫操作處理裝置可以包括隊(duì)列插入模塊62、列表插入模塊63、拆分模塊64和處理模塊65。 其中,隊(duì)列插入模塊62,用于在接收到寫操作請(qǐng)求之后,根據(jù)該寫操作請(qǐng)求的接收時(shí)間和目的地址將該寫操作請(qǐng)求插入等待隊(duì)列;具體地,隊(duì)列插入模塊62根據(jù)該寫操作請(qǐng)求的目的地址,按照目的地址增加或減少的順序?qū)⒃搶懖僮髡?qǐng)求插入上述目的地址對(duì)應(yīng)的LUN的第一等待隊(duì)列;并根據(jù)該寫操作請(qǐng)求的接收時(shí)間,按照接收時(shí)間由先至后的順序?qū)⒃搶懖僮髡?qǐng)求插入上述LUN的第二等待隊(duì)列;并按照接收時(shí)間由先至后的順序?qū)⑺鰧懖僮髡?qǐng)求插入包含所有寫操作請(qǐng)求的第三等待隊(duì)列; 列表插入模塊63,用于在達(dá)到預(yù)定的觸發(fā)條件之后,將上述等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表;上述觸發(fā)條件可以包括第三等待隊(duì)列中最先接收的寫操作請(qǐng)求的等待時(shí)間達(dá)到預(yù)設(shè)的等待時(shí)間閾值;或者,第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值; 拆分模塊64,用于將列表插入模塊63獲得的寫操作請(qǐng)求列表按照分條拆分為分條列表,該分條列表包括至少兩個(gè)寫操作請(qǐng)求,每個(gè)分條列表中的寫操作請(qǐng)求的目的地址在同一分條上; 處理模塊65,用于并行處理上述分條列表上的至少兩個(gè)寫操作請(qǐng)求。
上述實(shí)施例中,在接收到寫操作請(qǐng)求之后,隊(duì)列插入模塊62將該寫操作請(qǐng)求插入等待隊(duì)列,在達(dá)到預(yù)定的觸發(fā)條件之后,列表插入模塊63將等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表,然后由拆分模塊64先按照分條將寫操作列表拆分為分條列表,該分條列表包括至少兩個(gè)寫操作請(qǐng)求,每個(gè)分條列表中的寫操作請(qǐng)求的目的地址在同一分條上,再由處理模塊65并行處理該分條列表上的至少兩個(gè)寫操作請(qǐng)求;從而實(shí)現(xiàn)了并行處理同一分條上的至少兩個(gè)寫操作請(qǐng)求,減少了不必要的下盤操作,減小了主機(jī)的IO延時(shí)。 圖7為本發(fā)明寫操作處理裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,該實(shí)施例的寫操作處理裝置可以作為RAID,或RAID的一部分,實(shí)現(xiàn)本發(fā)明圖2所示實(shí)施例的流程。如圖7所示,該寫操作處理裝置可以包括隊(duì)列插入模塊72、列表插入模塊73、拆分模塊74和處理模塊75。 其中,隊(duì)列插入模塊72,用于在接收到寫操作請(qǐng)求之后,根據(jù)該寫操作請(qǐng)求的接收時(shí)間和目的地址將該寫操作請(qǐng)求插入等待隊(duì)列;具體地,隊(duì)列插入模塊72根據(jù)該寫操作請(qǐng)求的目的地址,按照目的地址增加或減少的順序?qū)⒃搶懖僮髡?qǐng)求插入上述目的地址對(duì)應(yīng)的LUN的第一等待隊(duì)列;并根據(jù)該寫操作請(qǐng)求的接收時(shí)間,按照接收時(shí)間由先至后的順序?qū)⒃搶懖僮髡?qǐng)求插入上述LUN的第二等待隊(duì)列;并按照接收時(shí)間由先至后的順序?qū)⑺鰧懖僮髡?qǐng)求插入包含所有寫操作請(qǐng)求的第三等待隊(duì)列; 列表插入模塊73,用于在達(dá)到預(yù)定的觸發(fā)條件之后,將上述等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表;上述觸發(fā)條件可以包括第三等待隊(duì)列中最先接收的寫操作請(qǐng)求的等待時(shí)間達(dá)到預(yù)設(shè)的等待時(shí)間閾值;或者,第二等待隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值;具體地,列表插入模塊73可以按照本發(fā)明圖3所示實(shí)施例提供的方法將與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表; 拆分模塊74,用于將列表插入模塊73獲得的寫操作請(qǐng)求列表按照分條拆分為分條列表,該分條列表包括至少兩個(gè)寫操作請(qǐng)求,每個(gè)分條列表中的寫操作請(qǐng)求的目的地址在同一分條上; 處理模塊75,用于并行處理上述分條列表上的至少兩個(gè)寫操作請(qǐng)求。
其中,列表插入模塊73可以包括請(qǐng)求插入子模塊731、記錄子模塊732、刪除子模塊733和查找子模塊734。請(qǐng)求插入子模塊731,用于將第三等待隊(duì)列或第二等待隊(duì)列中最先接收的寫操作請(qǐng)求插入寫操作請(qǐng)求列表中;記錄子模塊732用于記錄最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中與最先接收的寫操作請(qǐng)求相鄰的寫操作請(qǐng)求的目的地址;刪除子模塊733用于將最先接收的寫操作請(qǐng)求從第三等待隊(duì)列,以及該最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列和第二等待隊(duì)列中刪除;查找子模塊734,用于根據(jù)記錄子模塊732記錄的目的地址,在最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中查找與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求;當(dāng)查找子模塊734查找到的寫操作請(qǐng)求不是第一 等待隊(duì)列的隊(duì)列頭時(shí),請(qǐng)求插入子模塊731將查找到的寫操作請(qǐng)求插入上述寫操作請(qǐng)求列 表。 本實(shí)施例中,列表插入模塊73還可以包括判斷子模塊735,用于在請(qǐng)求插入子模 塊731將查找子模塊734查找到的寫操作請(qǐng)求插入寫操作請(qǐng)求列表之后,判斷獲得的寫操 作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)是否超過(guò)預(yù)設(shè)的個(gè)數(shù)閾值;當(dāng)判斷子模塊735確定獲得的 寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)不大于該個(gè)數(shù)閾值時(shí),刪除子模塊733從第一等待隊(duì) 列、第二等待隊(duì)列和第三等待隊(duì)列中刪除查找子模塊734查找到的寫操作請(qǐng)求;當(dāng)判斷子 模塊735確定獲得的寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)大于預(yù)設(shè)的個(gè)數(shù)閾值時(shí),刪除子 模塊733從上述寫操作請(qǐng)求列表中刪除查找子模塊734查找到的寫操作請(qǐng)求。
其中,處理模塊75可以包括列表拆分子模塊751和請(qǐng)求處理子模塊752。列表 拆分子模塊751,用于將分條列表拆分為分條單元,分條單元是RAID中的一個(gè)分條在一個(gè) 磁盤上的邏輯分塊;請(qǐng)求處理子模塊752,用于并行處理列表拆分子模塊751獲得的至少兩 個(gè)分條單元上的至少兩個(gè)寫操作請(qǐng)求。本實(shí)施例中,一個(gè)分條列表包括至少兩個(gè)寫操作請(qǐng) 求,一個(gè)分條單元可以包括至少一個(gè)寫操作請(qǐng)求。 上述實(shí)施例中,在接收到寫操作請(qǐng)求之后,隊(duì)列插入模塊72將該寫操作請(qǐng)求插入 等待隊(duì)列,在達(dá)到預(yù)定的觸發(fā)條件之后,列表插入模塊73將等待隊(duì)列中最先接收的寫操作 請(qǐng)求,以及與該最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列 表,然后由拆分模塊74先按照分條將寫操作列表拆分為分條列表,該分條列表包括至少兩 個(gè)寫操作請(qǐng)求,每個(gè)分條列表中的寫操作請(qǐng)求的目的地址在同一分條上;再由處理模塊75 并行處理該分條列表上的至少兩個(gè)寫操作請(qǐng)求;從而實(shí)現(xiàn)了并行處理同一分條上的至少兩 個(gè)寫操作請(qǐng)求,減少了不必要的下盤操作,減小了主機(jī)的IO延時(shí)。 本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流 程并不一定是實(shí)施本發(fā)明所必須的。 本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分
布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上
述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。 最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡
管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然
可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替
換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精
神和范圍。
權(quán)利要求
一種寫操作處理方法,其特征在于,包括接收到寫操作請(qǐng)求之后,根據(jù)所述寫操作請(qǐng)求的接收時(shí)間和目的地址將所述寫操作請(qǐng)求插入等待隊(duì)列;在達(dá)到預(yù)定的觸發(fā)條件之后,將所述等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表,所述寫操作請(qǐng)求列表包括至少兩個(gè)寫操作請(qǐng)求;將所述寫操作請(qǐng)求列表按照分條拆分為分條列表,所述分條列表包括至少兩個(gè)寫操作請(qǐng)求;并行處理所述分條列表上的至少兩個(gè)寫操作請(qǐng)求。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述寫操作請(qǐng)求的接收時(shí)間和 目的地址將所述寫操作請(qǐng)求插入等待隊(duì)列包括按照寫操作請(qǐng)求的目的地址增加或減少的順序?qū)⑺鰧懖僮髡?qǐng)求插入所述目的地址 對(duì)應(yīng)的邏輯單元號(hào)LUN的第一等待隊(duì)列;根據(jù)所述寫操作請(qǐng)求的接收時(shí)間,按照接收時(shí)間由先至后的順序?qū)⑺鰧懖僮髡?qǐng)求插 入所述LUN的第二等待隊(duì)列;并按照接收時(shí)間由先至后的順序?qū)⑺鰧懖僮髡?qǐng)求插入包含所有寫操作請(qǐng)求的第三等待隊(duì)列。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述預(yù)定的觸發(fā)條件包括所述第三等待 隊(duì)列中最先接收的寫操作請(qǐng)求的等待時(shí)間達(dá)到預(yù)設(shè)的等待時(shí)間閾值;或者,所述第二等待 隊(duì)列中寫操作請(qǐng)求的個(gè)數(shù)達(dá)到預(yù)設(shè)的等待個(gè)數(shù)閾值。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述等待隊(duì)列中最先接收的寫操 作請(qǐng)求,以及與所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求 列表包括將所述第三等待隊(duì)列或所述第二等待隊(duì)列中最先接收的寫操作請(qǐng)求插入寫操作請(qǐng)求 列表中,記錄所述最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中與所述最先接收的寫操作 請(qǐng)求相鄰的寫操作請(qǐng)求的目的地址,并將所述最先接收的寫操作請(qǐng)求從所述第三等待隊(duì) 列,以及所述最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列和第二等待隊(duì)列中刪除;根據(jù)記錄的目的地址,在所述最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中,查找與 所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求;當(dāng)查找到的寫操作請(qǐng)求不是所述第一等待隊(duì)列的隊(duì)列頭時(shí),將所述查找到的寫操作請(qǐng) 求插入所述寫操作請(qǐng)求列表。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將所述查找到的寫操作請(qǐng)求插入所 述寫操作請(qǐng)求列表之后,還包括判斷獲得的寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)是否超過(guò)預(yù)設(shè)的個(gè)數(shù)閾值; 當(dāng)所述寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)不大于所述個(gè)數(shù)閾值時(shí),從所述第一等待隊(duì)列、第二等待隊(duì)列和第三等待隊(duì)列中刪除所述查找到的寫操作請(qǐng)求;當(dāng)所述寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)大于所述個(gè)數(shù)閾值時(shí),從所述寫操作請(qǐng)求列表中刪除所述查找到的寫操作請(qǐng)求。
6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述并行處理所述分條列表上的至少兩 個(gè)寫操作請(qǐng)求包括將所述分條列表拆分為分條單元; 并行處理所述分條單元上的至少兩個(gè)寫操作請(qǐng)求。
7. —種寫操作處理裝置,其特征在于,包括隊(duì)列插入模塊,用于在接收到寫操作請(qǐng)求之后,根據(jù)所述寫操作請(qǐng)求的接收時(shí)間和目 的地址將所述寫操作請(qǐng)求插入等待隊(duì)列;列表插入模塊,用于在達(dá)到預(yù)定的觸發(fā)條件之后,將所述等待隊(duì)列中最先接收的寫操 作請(qǐng)求,以及與所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求 列表,所述寫操作請(qǐng)求列表包括至少兩個(gè)寫操作請(qǐng)求;拆分模塊,用于將所述列表插入模塊獲得的寫操作請(qǐng)求列表按照分條拆分為分條列 表,所述分條列表包括至少兩個(gè)寫操作請(qǐng)求;處理模塊,用于并行處理所述分條列表上的至少兩個(gè)寫操作請(qǐng)求。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述隊(duì)列插入模塊根據(jù)所述寫操作請(qǐng)求 的目的地址,按照目的地址增加或減少的順序?qū)⑺鰧懖僮髡?qǐng)求插入所述目的地址對(duì)應(yīng)的 邏輯單元號(hào)LUN的第一等待隊(duì)列;根據(jù)所述寫操作請(qǐng)求的接收時(shí)間,按照接收時(shí)間由先至 后的順序?qū)⑺鰧懖僮髡?qǐng)求插入所述LUN的第二等待隊(duì)列;并按照接收時(shí)間由先至后的順 序?qū)⑺鰧懖僮髡?qǐng)求插入包含所有寫操作請(qǐng)求的第三等待隊(duì)列。
9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述列表插入模塊包括 請(qǐng)求插入子模塊,用于將所述第三等待隊(duì)列或所述第二等待隊(duì)列中最先接收的寫操作請(qǐng)求插入寫操作請(qǐng)求列表中;記錄子模塊,用于記錄所述最先接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列中與所述最先 接收的寫操作請(qǐng)求相鄰的寫操作請(qǐng)求的目的地址;刪除子模塊,用于將所述最先接收的寫操作請(qǐng)求從所述第三等待隊(duì)列,以及所述最先 接收的寫操作請(qǐng)求對(duì)應(yīng)的第一等待隊(duì)列和第二等待隊(duì)列中刪除;查找子模塊,用于根據(jù)所述記錄子模塊記錄的目的地址,在所述最先接收的寫操作請(qǐng) 求對(duì)應(yīng)的第一等待隊(duì)列中查找與所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng) 求;當(dāng)所述查找子模塊查找到的寫操作請(qǐng)求不是所述第一等待隊(duì)列的隊(duì)列頭時(shí),所述請(qǐng)求 插入子模塊將所述查找到的寫操作請(qǐng)求插入所述寫操作請(qǐng)求列表。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述列表插入模塊還包括 判斷子模塊,用于在所述請(qǐng)求插入子模塊將所述查找子模塊查找到的寫操作請(qǐng)求插入所述寫操作請(qǐng)求列表之后,判斷獲得的寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)是否超過(guò)預(yù)設(shè) 的個(gè)數(shù)閾值;當(dāng)所述判斷子模塊確定獲得的寫操作請(qǐng)求列表中寫操作請(qǐng)求的個(gè)數(shù)不大于所述個(gè)數(shù) 閾值時(shí),所述刪除子模塊還用于從所述第一等待隊(duì)列、第二等待隊(duì)列和第三等待隊(duì)列中刪 除所述查找子模塊查找到的寫操作請(qǐng)求;當(dāng)所述判斷子模塊確定獲得的寫操作請(qǐng)求列表中 寫操作請(qǐng)求的個(gè)數(shù)大于所述個(gè)數(shù)閾值時(shí),所述刪除子模塊還用于從所述寫操作請(qǐng)求列表中 刪除所述查找子模塊查找到的寫操作請(qǐng)求。
11. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理模塊包括 列表拆分子模塊,用于將所述分條列表拆分為分條單元;請(qǐng)求處理子模塊,用于并行處理所述列表拆分子模塊獲得的分條單元上的至少兩個(gè)寫操作請(qǐng)求。
全文摘要
本發(fā)明實(shí)施例提供一種寫操作處理方法和裝置,所述寫操作處理方法包括接收到寫操作請(qǐng)求之后,根據(jù)所述寫操作請(qǐng)求的接收時(shí)間和目的地址將所述寫操作請(qǐng)求插入等待隊(duì)列;在達(dá)到預(yù)定的觸發(fā)條件之后,將所述等待隊(duì)列中最先接收的寫操作請(qǐng)求,以及與所述最先接收的寫操作請(qǐng)求的目的地址相鄰的寫操作請(qǐng)求插入寫操作請(qǐng)求列表,所述寫操作請(qǐng)求列表包括至少兩個(gè)寫操作請(qǐng)求;將所述寫操作請(qǐng)求列表按照分條拆分為分條列表,所述分條列表包括至少兩個(gè)寫操作請(qǐng)求;并行處理所述分條列表上的至少兩個(gè)寫操作請(qǐng)求。本發(fā)明實(shí)施例實(shí)現(xiàn)了在RAID層并行處理同一分條上的至少兩個(gè)寫操作請(qǐng)求,減少了不必要的下盤操作,減小了主機(jī)的IO延時(shí)。
文檔編號(hào)G06F3/06GK101702113SQ20091022196
公開日2010年5月5日 申請(qǐng)日期2009年11月23日 優(yōu)先權(quán)日2009年11月23日
發(fā)明者王雪松, 石兵偉, 陳建術(shù) 申請(qǐng)人:成都市華為賽門鐵克科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
桐城市| 金平| 田阳县| 盐津县| 安化县| 北辰区| 嘉鱼县| 凤台县| 巴东县| 临泽县| 十堰市| 石嘴山市| 盈江县| 泰和县| 鹰潭市| 平果县| 石渠县| 乌恰县| 阿瓦提县| 普兰店市| 西和县| 荔浦县| 石棉县| 喜德县| 高淳县| 黑龙江省| 高州市| 红桥区| 临夏县| 镇宁| 习水县| 沈丘县| 伊宁县| 平谷区| 沈阳市| 林西县| 山西省| 双江| 牡丹江市| 汪清县| 三都|