高性能廉價磁盤冗余陣列raid機制的處理方法及裝置的制造方法
【專利摘要】本發明提供了一種高性能廉價磁盤冗余陣列RAID機制的處理方法及裝置,其中該方法包括:獲取需要寫輸入/輸出的一個或多個數據的模型;將一個或多個數據的模型與指定分條進行比較,將小于分條的數據寫入第一硬盤中,其中,第一硬盤用于緩存并合并小于分條的數據至滿分條;對第一硬盤中的滿足滿分條的數據執行寫操作。通過本發明,解決了相關技術中基于RAID執行寫數據的方式步驟冗余導致性能低的問題,進而達到了提高RAID執行寫數據的效率的效果。
【專利說明】
高性能廉價磁盤冗余陣列RAID機制的處理方法及裝置
技術領域
[0001]本發明涉及存儲領域,具體而言,涉及一種高性能廉價磁盤冗余陣列RAID機制的處理方法及裝置。
【背景技術】
[0002]廉價磁盤冗余陣列(RedundantArray of Inexpensive Disks簡稱為RAID),RAID技術將一個個單獨的磁盤以不同的組合方式形成一個邏輯硬盤,從而提高了磁盤讀取的性能和數據的安全性,不同的組合方式用RAID級別來標識。
[0003]相關技術中應用最廣的RAID5和RAID6在隨機寫輸出/輸出I/O模型下存在很大的性能瓶頸,而隨機寫I/O模型又是目前最常見的業務模型,以RAID5為例來描述一下RAID處理寫I/O的流程。
[0004]圖1是相關技術中基于RAID的硬盤分條示意圖,如圖1所示,RAID按照固定的大小將每個硬盤切分成不同大小的分條單元(如:64K、128K等),然后按順序將硬盤的分條單元組成一個個分條,比如用戶寫入512Κ的數據,RAID將512K的數據按64K依次存儲下圖的Dl?D8,但是RAID寫入到硬盤中的數據不僅僅只是用戶數據,同時寫入硬盤的還有按分條計算出的校驗數據Pl和P2,校驗數據由用戶數據通過異或算法計算得出,如Pl = Dl異或D2異或D3異或D4。
[0005]可見,依據以上的RAID原理來看,用戶如果只是隨機的寫入一小塊數據,如4K,那RAID的流程就復雜了,圖2是相關技術中隨機寫入數據的示意圖,隨機寫入64K數據,如圖2所示,其中,該隨機寫入的方法步驟包括:
[0006]步驟S202:用戶隨機寫入4K數據Dl ’ ;
[0007]步驟S204:分別讀出硬盤中DI和PI的4K舊數據;
[0008]步驟S206:計算出新的校驗數據P1’ ;
[0009]其中,由于Pl = Dl異或D2異或D3異或D4,所以Dl異或Pl = D2異或D3異或D4 ;ΡΓ = D1’異或D2異或D3異或D4 = D1’異或Dl異或Pl ;
[0010]步驟S208:寫入用戶新數據D1’和新校驗數據Ρ1’。
[0011]從上面的流程可以看出,相關技術中為了寫入一小塊數據,需要額外多讀出兩塊數據。
[0012]針對相關技術中基于RAID執行寫數據的方式步驟冗余導致性能低的問題,目前尚未提出有效的解決方案。
【發明內容】
[0013]本發明的主要目的在于提供一種高性能廉價磁盤冗余陣列RAID機制的處理方法及裝置,以至少解決相關技術中基于RAID執行寫數據的方式步驟冗余導致性能低的問題。
[0014]根據本發明的一個方面,提供了一種廉價磁盤冗余陣列RAID機制的處理方法,包括:獲取需要寫輸入/輸出的一個或多個數據的模型;將所述一個或多個數據的模型與指定分條進行比較,將小于所述指定分條的數據寫入第一硬盤中,其中,所述第一硬盤用于緩存并合并所述小于所述指定分條的數據至滿分條;對所述第一硬盤中的滿足滿分條的數據執行寫操作。
[0015]進一步地,所述第一硬盤用于緩存并合并所述數據至滿分條包括:緩存所述一個或多個數據中模型小于所述指定分條的數據并合并所述小于所述指定分條的數據至大于等于所述指定分條。
[0016]進一步地,對所述第一硬盤中的滿足滿分條的數據執行寫操作包括:將合并后的數據寫入第二硬盤中,其中,所述第二硬盤用于執行輸入/輸出數據的滿分條寫操作。
[0017]進一步地,所述方法還包括:將所述一個或多個數據中模型大于等于所述指定分條的數據寫入所述第二硬盤中。
[0018]進一步地,所述第一硬盤為固態硬盤SSD,所述第二硬盤為串行連接的小型計算機系統接口 SAS盤或串行高級技術附件SATA盤。
[0019]根據本發明的另一個方面,提供了一種高性能廉價磁盤冗余陣列RAID機制的處理裝置,包括:獲取模塊,用于獲取需要寫輸入/輸出的一個或多個數據的模型;第一寫入模塊,用于將所述一個或多個數據的模型與指定分條進行比較,將小于所述指定分條的數據寫入第一硬盤中,其中,所述第一硬盤用于緩存并合并所述小于所述指定分條的數據至滿分條;執行模塊,用于對所述第一硬盤中的滿足滿分條的數據執行寫操作。
[0020]進一步地,所述第一寫入模塊,還用于緩存所述一個或多個數據中模型小于所述指定分條的數據并合并所述小于所述指定分條的數據至大于等于所述指定分條。
[0021]根據權利要求7所述的裝置,其特征在于,
[0022]所述執行模塊,還用于將合并后的數據寫入第二硬盤中,其中,所述第二硬盤用于執行輸入/輸出數據的滿分條寫操作。
[0023]根據權利要求8所述的裝置,其特征在于,所述裝置還包括:
[0024]第二寫入模塊,用于將所述一個或多個數據中模型大于等于所述指定分條的數據寫入所述第二硬盤中。
[0025]進一步地,所述第一硬盤為固態硬盤SSD,所述第二硬盤為串行連接的小型計算機系統接口 SAS盤或串行高級技術附件SATA盤。
[0026]通過本發明,采用在獲取到需要執行寫輸入/輸出(I/O)數據的模型之后,將一個或多個數據的模型與指定分條進行比較,將小于分條的數據寫入第一硬盤中,其中,第一硬盤用于緩存并合并小于分條的數據至滿分條,從而可以通過第一硬盤緩存和合并將小于指定分條的數據合并至滿分條,進而可以對數據執行滿分條寫操作,這樣就可以直接計算校驗值,然后把數據寫入硬盤。通過本發明,解決了相關技術中基于RAID執行寫數據的方式步驟冗余導致性能低的問題,進而達到了提高RAID執行寫數據的效率的效果。
【附圖說明】
[0027]此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0028]圖1是相關技術中基于RAID的硬盤分條示意圖;
[0029]圖2是相關技術中隨機寫入數據的示意圖;
[0030]圖3是根據本發明實施例的高性能廉價磁盤冗余陣列RAID機制的處理方法流程圖;
[0031]圖4是根據本發明實施例的高性能廉價磁盤冗余陣列RAID機制的處理裝置結構框圖;
[0032]圖5是根據本發明實施例的高性能廉價磁盤冗余陣列RAID機制的處理裝置可選結構框圖;
[0033]圖6是根據本發明可選實施例的實現尚性能RAID機制的不意圖;
[0034]圖7是根據本發明可選實施例的系統讀請求處理方法的流程圖;
[0035]圖8是根據本發明可選實施例的系統寫請求處理方法的流程圖;
[0036]圖9是根據本發明可選實施例的I/O分流模塊處理I/O請求方法流程圖。
【具體實施方式】
[0037]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本發明。
[0038]本實施例提供了一種高性能廉價磁盤冗余陣列RAID機制的處理方法,圖3是根據本發明實施例的高性能廉價磁盤冗余陣列RAID機制的處理方法流程圖,如圖3所示,該方法的步驟包括:
[0039]步驟S302:獲取需要寫輸入/輸出(I/O)的一個或多個數據的模型;
[0040]步驟S304:將一個或多個數據的模型與指定分條進行比較,將小于指定分條的數據寫入第一硬盤中;
[0041]其中,第一硬盤用于緩存并合并小于指定分條的數據至滿分條;
[0042]步驟S306:對所述第一硬盤中的滿足滿分條的數據執行寫操作。
[0043]通過本實施例,采用在獲取到需要執行寫輸入/輸出I/O數據的模型之后,將一個或多個數據的模型與指定分條進行比較,將小于分條的數據寫入第一硬盤中,其中,第一硬盤用于緩存并合并小于分條的數據至滿分條,從而可以通過第一硬盤緩存和合并將小于指定分條的數據合并至滿分條,進而可以對數據執行滿分條寫操作,這樣就可以直接計算校驗值,然后把數據寫入硬盤。通過本實施例,解決了相關技術中基于RAID執行寫數據的方式步驟冗余導致性能低的問題,進而達到了提高RAID執行寫數據的效率的效果。
[0044]對于本實施例中涉及到的第一硬盤用于緩存并合并數據至滿分條的方式,在本實施例的一個可選實施方式中可以通過如下方式來實現:緩存一個或多個數據中模型小于指定分條的數據并合并該小于指定分條的I/o數據至大于等于指定分條。
[0045]而基于上述緩存并合并小I/O的操作,在本實施例的另一個可選實施方式中,在小于該指定分條的數據在該第一硬盤中緩存并合并至滿分條之后,再對合并后的數據在第二硬盤中進行滿分條寫操作。
[0046]而對于本實施例中涉及到的大于指定分條的數據將直接寫入第二硬盤中,在該第二硬盤中進行滿分條寫操作。
[0047]也就是說,本實施例采用了判斷該I/O的大小是否大于等于分條大小,即是否可以按照滿分條寫的方式下盤,如果I/O小于分條大小,將小于分條的I/O緩存并合并,在合并后的I/O大于等于分條時,再對合并后的數據進行滿分條寫入,保證了每次執行寫入的數據都是能夠執行滿分條的寫入。需要說明的是,上述方式僅僅是本發明的可選實施方式,并不夠成對本發明的限定。
[0048]對于本實施例涉及到的第一硬盤和第二硬盤,在不同的應用場景中可以采用相應的硬盤,可選地,在本實施例中第一硬盤為固態硬盤(Solid State Drives簡稱為SSD),第二硬盤為串行連接的小型計算機系統接口(Serial Attached SCSI簡稱為SAS)盤或串行高級技術附件(Serial Advanced Technology Attachment簡稱為SATA)盤。需要說明的是,上述僅僅是對第一硬盤和第二硬盤進行舉例說明,并不夠成對第一硬盤和第二硬盤選擇的限定。
[0049]也就是說,在本實施例的一個可選應用場景中,對于小于分條的I/O數據將數據寫入RAIDlO固態硬盤SSD中,而不寫入該數據本應該寫入的串行連接SCSI (SAS)盤或串行高級技術附件SATA盤中,待SSD中緩存合并為滿分條后,再由后臺線程寫入SAS盤或SATA盤。
[0050]在本實施例中還提供了一種高性能廉價磁盤冗余陣列RAID機制的處理裝置,該裝置用于實現上述實施例及可選實施方式,已經進行過說明的不再贅述。如以下所使用的,術語“模塊”可以實現預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能并被構想的。
[0051]圖4是根據本發明實施例的高性能廉價磁盤冗余陣列RAID機制的處理裝置結構框圖,如圖4所示,該裝置包括:獲取模塊42,用于獲取需要寫輸入/輸出的一個或多個數據的模型;第一寫入模塊44,與獲取模塊42耦合連接,用于將一個或多個數據的模型與指定分條進行比較,將小于指定分條的數據寫入第一硬盤中,其中,第一硬盤用于緩存并合并小于指定分條的數據至滿分條;執行模塊46,與第一寫入模塊44耦合連接,用于對第一硬盤中的滿足滿分條的數據執行寫操。。
[0052]可選地,第一寫入模塊44,還用于緩存一個或多個數據中模型小于指定分條的數據并合并小于該指定分條的數據至大于等于指定分條。
[0053]可選地,執行模塊46,還用于將合并后的數據寫入第二硬盤中,其中,第二硬盤用于執行輸入/輸出數據的滿分條寫操作。
[0054]圖5是根據本發明實施例的高性能廉價磁盤冗余陣列RAID機制的處理裝置可選結構框圖,如圖5所示,該裝置還包括:第二寫入模塊52,與獲取模塊42耦合連接,用于將一個或多個數據中模型大于等于指定分條的數據寫入第二硬盤中。
[0055]可選地,對于本實施例裝置中涉及到的第一硬盤可以為固態硬盤SSD,第二硬盤可以為串行連接的小型計算機系統接口 SAS盤或串行高級技術附件SATA盤。
[0056]下面結合本發明可選實施例,對本發明進行舉例說明;
[0057]相對于相關技術中的RAID實現方法,本可選實施例通過識別寫I/O的模型,并利用高性能的固態硬盤來緩存合并寫數據,將隨機寫1的模型轉換為滿分條的大1模型,將隨機寫1的性能提升幾十倍,甚至達到順序寫帶寬的性能,解決了相關技術中RAID算法的性能瓶頸的問題。
[0058]圖6是根據本發明可選實施例的實現高性能RAID機制的示意圖,如圖6所示,在本可選實施例中,I/O分流模塊,用于識別寫I/O的模型,按照分條大小為粒度,判斷該I/O的大小是否大于等于分條大小,是否可以按照滿分條寫的方式下盤,如果I/O小于分條大小,那么則將數據寫入RAIDlO固態硬盤SSD中,而不寫入該數據本應該寫入的串行連接SCSI盤SAS或的串行高級技術附件SATA盤中,待SSD中緩存合并為滿分條后,再由后臺線程寫入SAS盤或SATA盤。
[0059]RAIDlO SSD,用于緩存那些非滿分條的小1的存儲空間,由于SSD盤比SAS或SATA盤的隨機讀寫性能高出幾十倍?幾百倍,并且RAIDlO的隨機寫性能比RAID5和RAID6高出幾倍,所以通過RAIDlO SSD的緩存作用能解決現有RAID的性能問題。該方法的步驟包括:
[0060]步驟S602:識別寫I/O的模型;
[0061]步驟S604:判斷該I/O的大小是否大于等于分條大小;在I/O大于等于分條時執行步驟S608 ;在I/O小于分條時,執行步驟S606 ;
[0062]步驟S606:在RAIDlO SSD中緩存并合并小于分條的I/O ;在合并后的I/O大于等于分條后,執行步驟S610;
[0063]步驟S608:將大于分條的I/O數據,通過后臺線程寫入SAS盤或SATA盤。
[0064]下面通過本實施例的可選實施方式進行詳細說明;
[0065]可選實施方式一:用戶配置使用高性能RAID機制;
[0066]步驟S21:用戶選擇需要配置的VD或POOL ;
[0067]步驟S22:系統檢測該VD或POOL是否能配置該功能;
[0068]其中,要求VD或POOL對應的RAID級別為非RAID1/10/0的其他RAID級別;
[0069]步驟S23:用戶選擇已存在的RAIDlO SSD緩存區,如果希望新建,則用戶選擇需要添加的SSD盤,并創建出RAIDlO SSD緩存區;
[0070]步驟S24:點擊確定,建立其VD或POOL和RAID10 SSD緩存區的對應關系。
[0071]可選實施方式二:
[0072]圖7是根據本發明可選實施例的系統讀請求處理方法的流程圖,如圖7所示,該方法的步驟包括:
[0073]步驟S702:1/0分流模塊根據數據查找渡請求對應的分條信息;在查找到分條信息時執行步驟S704 ;在未找到分條信息時執行步驟S706 ;
[0074]步驟S704:RAID SAS根據讀請求的地址信息,將讀請求下發到硬盤;之后執行步驟 S712 ;
[0075]步驟S706:根據分條信息中記錄的數據記錄位圖來確定該請求餓哪些數據存放在RAIDlO SSD中,拆分出RAIDlO SSD存放數據讀請求;
[0076]步驟S708 =RAIDlO SSD根據讀請求的地址信息,將讀請求下發到硬盤,拆分出RAID5SAS存放數據的讀請求;
[0077]步驟S710:RAID SAS根據讀請求的地址信息,將讀請求下發到硬盤;
[0078]步驟S712:返回讀1/0成功結果及數據;
[0079]步驟S714:1/0分流模塊合并SSD和SAS上讀出的數據。
[0080]可選實施方式三:
[0081]圖8是根據本發明可選實施例的系統寫請求處理方法的流程圖,如圖8所示,該方法的步驟包括:
[0082]步驟S802:1/0分流模塊根據1/0請求的RAID地址和長度,判斷該寫請求是否為滿分條寫;在判斷結果為是時執行步驟S804 ;在判斷結果為否時,執行步驟S806 ;
[0083]步驟S804:RAID SAS計算校驗,然后將數據寫入對應的硬盤;之后執行步驟S812 ;
[0084]步驟S806:1/0分流模塊根據元素查找該寫請求對應的分條信息;
[0085]步驟S808:如果沒有查找到分條信息,則分配一個新的分條及其對應的RAIDlOSSD硬盤空間根據分條信息記錄的RAID地址,將請求下發給配置的RAIDlO SSD處理;
[0086]步驟S810 =RAIDlO SSD根據鏡像關系,將數據寫入對應的硬盤;
[0087]步驟S812:返回寫請求成功。
[0088]可選實施方式四:
[0089]圖9是根據本發明可選實施例的I/O分流模塊處理I/O請求方法流程圖,如圖9所示,該方法的步驟包括:
[0090]前臺處理:
[0091]步驟S902:1/0分流模塊根據寫I/O請求的RAID地址和長度,判斷出該寫請求為非滿分條寫;
[0092]步驟S904:查找該請求對應的分條信息;
[0093]其中,依據RAID ID、地址和請求長度計算出唯一的分案索引;
[0094]步驟S906:如果查找到分條信息,分配新的分條信息結果;如果找到分條信息,則按已有的分條信息處理;
[0095]步驟S908:1/0分流模塊向RAIDlO SSD下發寫請求;
[0096]步驟S910 =RAIDlO SSD向I/O分流模塊返回寫成功;
[0097]步驟S912:修改分條信息中記錄臟數據的位圖;
[0098]其中,按扇區標記,I表示有臟數據,O表示無臟數據。
[0099]后臺線程:包括場景一和場景二 ;
[0100]場景一:
[0101]步驟S914:后臺線程掃描分條信息,找出已湊齊分滿分條的分條;
[0102]步驟S916:1/0分流模塊向RAIDlO SSD下發讀請求;
[0103]步驟S918 =RAIDlO SSD向I/O分流模塊返回讀出的數據;
[0104]步驟S920:1/0分流模塊向RAIDlO SAS下發寫請求;
[0105]步驟S922 =RAIDlO SAS向I/O分流模塊返回寫成功。
[0106]場景二:
[0107]步驟S924:1/0分流模塊確定如果臟數據站SSD空間的比例已超過高水位,則啟動強制將SSD中的數據寫入SAS ;
[0108]步驟S926:1/0分流模塊根據分條終端餓數據從躲到少的排序方式,一次將SSD中的數據寫入SAS ;
[0109]步驟S928:1/0分流模塊向RAIDlO SSD下發讀請求;
[0110]步驟S930:1/0分流模塊度該分條中,SSD上沒有的數據;
[0111]步驟S932 =RAIDlO SSD向I/O分流模塊返回讀出的數據;
[0112]步驟S934 =RAIDlO SAS向I/O分流模塊返回讀出的數據;
[0113]步驟S936:1/0分流模塊合并從SSD和SAS上讀出的數據;
[0114]步驟S938:1/0分流模塊向RAIDlO SAS下發寫請求;
[0115]步驟S940 =RAIDlO SAS向I/O分流模塊返回寫成功。
[0116]通過本本可選實施例,在RAIDlO系統中,用戶寫入一塊數據不需要計算校驗,直接采用寫兩份數據的方式來保證可靠性,相較于RAID5,隨機小塊寫的性能高出很多倍。
[0117]在另外一個實施例中,還提供了一種軟件,該軟件用于執行上述實施例及優選實施方式中描述的技術方案。
[0118]在另外一個實施例中,還提供了一種存儲介質,該存儲介質中存儲有上述軟件,該存儲介質包括但不限于:光盤、軟盤、硬盤、可擦寫存儲器等。
[0119]顯然,本領域的技術人員應該明白,上述本發明的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,并且在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本發明不限制于任何特定的硬件和軟件結合。
[0120]上述僅為本發明的可選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種高性能廉價磁盤冗余陣列RAID機制的處理方法,其特征在于,包括: 獲取需要寫輸入/輸出的一個或多個數據的模型; 將所述一個或多個數據的模型與指定分條進行比較,將小于所述指定分條的數據寫入第一硬盤中,其中,所述第一硬盤用于緩存并合并所述小于所述指定分條的數據至滿分條; 對所述第一硬盤中的滿足滿分條的數據執行寫操作。2.根據權利要求1所述的方法,其特征在于,所述第一硬盤用于緩存并合并所述數據至滿分條包括: 緩存所述一個或多個數據中模型小于所述指定分條的數據并合并所述小于所述指定分條的數據至大于等于所述指定分條。3.根據權利要求2所述的方法,其特征在于,對所述第一硬盤中的滿足滿分條的數據執行寫操作包括: 將合并后的數據寫入第二硬盤中,其中,所述第二硬盤用于執行輸入/輸出數據的滿分條寫操作。4.根據權利要求3所述的方法,其特征在于,所述方法還包括: 將所述一個或多個數據中模型大于等于所述指定分條的數據寫入所述第二硬盤中。5.根據權利要求4所述的方法,其特征在于,所述第一硬盤為固態硬盤SSD,所述第二硬盤為串行連接的小型計算機系統接口 SAS盤或串行高級技術附件SATA盤。6.一種高性能廉價磁盤冗余陣列RAID機制的處理裝置,其特征在于,包括: 獲取模塊,用于獲取需要寫輸入/輸出的一個或多個數據的模型; 第一寫入模塊,用于將所述一個或多個數據的模型與指定分條進行比較,將小于所述指定分條的數據寫入第一硬盤中,其中,所述第一硬盤用于緩存并合并所述小于所述指定分條的數據至滿分條; 執行模塊,用于對所述第一硬盤中的滿足滿分條的數據執行寫操作。7.根據權利要求6所述的裝置,其特征在于, 所述第一寫入模塊,還用于緩存所述一個或多個數據中模型小于所述指定分條的數據并合并所述小于所述指定分條的數據至大于等于所述指定分條。8.根據權利要求7所述的裝置,其特征在于, 所述執行模塊,還用于將合并后的數據寫入第二硬盤中,其中,所述第二硬盤用于執行輸入/輸出數據的滿分條寫操作。9.根據權利要求8所述的裝置,其特征在于,所述裝置還包括: 第二寫入模塊,用于將所述一個或多個數據中模型大于等于所述指定分條的數據寫入所述第二硬盤中。10.根據權利要求9所述的裝置,其特征在于,所述第一硬盤為固態硬盤SSD,所述第二硬盤為串行連接的小型計算機系統接口 SAS盤或串行高級技術附件SATA盤。
【文檔編號】G06F3/06GK106033320SQ201510106848
【公開日】2016年10月19日
【申請日】2015年3月11日
【發明人】舒坦
【申請人】中興通訊股份有限公司