專利名稱:用矩陣條帶高速緩存器改進raid系統(tǒng)輸入和輸出性能的方法
技術領域:
本發(fā)明通常涉及一種改進獨立磁盤冗余陣列(RAID)系統(tǒng)的輸入/輸出(I/O)性能的方法。更具體地,本發(fā)明涉及一種使用矩陣條帶高速緩存器(MSC)改進RAID系統(tǒng)的I/O性能的方法;該方法為MSC中的每列執(zhí)行讀取連接和寫入連接,以減少I/O操作次數(shù),從而改進片斷寫入的性能;以及該方法以退化模式的讀取性能為代價,改進了正常模式的讀取性能。
背景技術:
RAID系統(tǒng)將多個獨立的磁盤存儲設備集成為一個,分配并存儲各個磁盤中的數(shù)據(jù),并實現(xiàn)了至多個磁盤的同步存取,從而改進了I/O特性。此外,RAID系統(tǒng)允許通過主機計算機系統(tǒng)來將多個獨立的磁盤存儲設備視為單個磁盤,從而實現(xiàn)高容量存儲設備。
此外,RAID系統(tǒng)保存輔助數(shù)據(jù),如,磁盤復制或誤差檢驗和校正(ECC)碼或奇偶校驗數(shù)據(jù),從而即使RAID系統(tǒng)的任何一個磁盤出了故障,也可以自動恢復數(shù)據(jù),因而提高了系統(tǒng)的可靠性。
圖1是示出了一般RAID系統(tǒng)的示意性結構的圖示。RAID系統(tǒng)包括被認為是系統(tǒng)主體的主機系統(tǒng)10,與主機系統(tǒng)10連接的多個硬磁盤30,在主機系統(tǒng)10和硬磁盤30之間連接、并配置用于管理硬磁盤30的RAID控制器20。RAID控制器20包括存儲器21,用于補償主機系統(tǒng)10和硬磁盤30之間的速度差。
此外,根據(jù)配置,將RAID系統(tǒng)分為五個等級。根據(jù)由Patterson等所著的文章,將RAID系統(tǒng)分為五個類型,即,RAID等級1至RAID等級5。
RAID等級1是將數(shù)據(jù)存儲于N個磁盤中、將數(shù)據(jù)存儲于其它N個磁盤中、以及將數(shù)據(jù)復制并存儲至其它鏡像磁盤中的技術。在寫入數(shù)據(jù)時,必須總將相同的數(shù)據(jù)存儲至兩個不同的磁盤。在讀取數(shù)據(jù)時,可以選擇兩個磁盤中具有較快存取時間的一個磁盤,并可以從所選磁盤中讀取數(shù)據(jù)。如果兩個磁盤之一出現(xiàn)故障,則可以使用鏡像磁盤連續(xù)提供服務。
RAID等級2是使用漢明碼保護數(shù)據(jù)的技術,并導致了比RAID1的鏡像方案低的磁盤成本。
RAID等級3是將一個奇偶校驗磁盤添加至N個數(shù)據(jù)磁盤組的技術。在該等級上,在寫入數(shù)據(jù)時,以比特或字節(jié)為單位來分配數(shù)據(jù)并將數(shù)據(jù)存儲于N個相應的磁盤中,以及將通過針對存儲在每個數(shù)據(jù)磁盤中的數(shù)據(jù)執(zhí)行XOR操作而獲得的奇偶校驗數(shù)據(jù)存儲于奇偶校驗磁盤中。在讀取數(shù)據(jù)時,必須同時對N個磁盤進行存取。如果N個磁盤之一出現(xiàn)故障,則可以使用存儲于奇偶校驗磁盤中的奇偶校驗數(shù)據(jù)來恢復信息。
RAID等級4包括N+1個磁盤,其中,數(shù)據(jù)存儲于N個磁盤上,以及奇偶校驗(parity)存儲于另一磁盤上,RAID等級4與RAID等級3十分類似,但是與RAID等級3的不同之處在于,根據(jù)塊來分配并存儲數(shù)據(jù)。因此,在寫入數(shù)據(jù)時,需要對一個數(shù)據(jù)磁盤和奇偶校驗磁盤的存取,以及在讀取數(shù)據(jù)時,僅對一個磁盤進行存取。此外,當一個磁盤出現(xiàn)故障時,可以使用存儲于奇偶校驗磁盤中的奇偶校驗塊來恢復信息。
RAID等級5與RAID等級4的相似之處在于,根據(jù)塊來存儲數(shù)據(jù),但是與RAID等級4的不同之處在于,在磁盤上分配奇偶校驗數(shù)據(jù),而不是將奇偶校驗數(shù)據(jù)存儲于固定磁盤上。在該等級上,在讀取和寫入數(shù)據(jù)時所使用的方法和在一個磁盤出現(xiàn)故障時使用的數(shù)據(jù)恢復方法與RAID等級4中的方法相同。
此外,存在RAID等級0,該等級在不使用輔助數(shù)據(jù)的情況下簡單地分配并保存數(shù)據(jù);以及存在RAID等級6,該等級具有使用里德-所羅門碼的P+Q誤差恢復方法。由于甚至兩個磁盤同時出現(xiàn)故障時也可以恢復信息,所以RAID等級6顯示出了比使用奇偶校驗校驗的方法更加高的可靠性。目前,大多數(shù)RAID系統(tǒng)支持RAID等級0、1、3和5,以及RAID等級0/1,即,RAID等級0和1的組合。選擇并使用適用于用戶應用環(huán)境的RAID等級。
同時,對于小寫入操作,伴隨著奇偶校驗的RAID等級(如,RAID等級5)顯示出了非常不良的性能。為了解決該問題,開發(fā)了降級算法。
術語“降級”指以下方法在請求寫入時,將寫入數(shù)據(jù)復制到高速緩存器而不是將數(shù)據(jù)立即傳遞至磁盤,之后將數(shù)據(jù)傳遞至磁盤。降級算法包括寫入逐級排序(Wise Ordering for Write,WOW)、高低水印(High Low Water Mark,HLMN)、線性閾值(LT)調度等。
此外,為了改進讀取性能而降低磁盤I/O操作次數(shù)的高速緩存器替換算法包括ARC,2Q,MQ,LRU-2,ALRFU,LIRS,MRU,LRU等。諸如CSCAN,SSTF和先行(anticipatory)磁盤調度算法之類的磁盤調度算法減少了對磁盤的尋找和輪循等待時間。
此外,與傳統(tǒng)的RAID系統(tǒng)相關的專利包括美國專利No.6,704,837,其中,為了改進RAID系統(tǒng)的寫入性能,在降級時對寫入操作的大小和磁盤的軌道大小進行相互比較。
此外,“A Case for Redundant Arrays of Inexpensive Disks(RAID)”(ACM SIGMOD.1988,D.A.Patterson等)提出了一種RAID結構,但是并沒有提出改進RAID系統(tǒng)的I/O性能的方法?!癢OWWise Orderingfor Writes-Combining Spatial and Temporal Locality in Non-volatileCaches”(USENIX FAST 2005,Binny S.Gill等)”僅公開了用于改進RAID系統(tǒng)的寫入性能的降級算法之一?!癝cheduling algorithms formodern disk drives”(SIGMETRICS,D.L. Worthington)引入了用于改進磁盤讀取和寫入性能的各種磁盤調度技術。
此外,在RAID系統(tǒng)中,通常連續(xù)執(zhí)行寫入數(shù)據(jù)操作。然而,如果文件系統(tǒng)非常碎(即,一個文件不連續(xù)地存儲于磁盤中,即,作為一個單元,但是被分為多個片斷并不連續(xù)地存儲于磁盤中),則從磁盤角度,將寫入數(shù)據(jù)視為片斷連續(xù)寫入。即,寫入的圖案顯示出了跨距圖案,即跳越圖案,在這種情況下,導致了非常不良的性能。此外,在RAID系統(tǒng)中,由于在其中必須支持磁盤故障容忍功能的復雜實現(xiàn),RAID控制器無法利用磁盤的最大性能。此外,RAID系統(tǒng)可以在磁盤出現(xiàn)故障時(退化模式中)無丟失地讀取數(shù)據(jù)。然而,RAID系統(tǒng)在讀取操作期間,由于其實現(xiàn)的復雜性而需要大量開銷,因此在正常模式和退化模式中使讀取性能均下降。
發(fā)明內容
因此,本發(fā)明解決了現(xiàn)有技術中出現(xiàn)的上述問題,本發(fā)明的目的是提供一種使用MSC來改進RAID系統(tǒng)的I/O性能的方法,該方法可以改進RAID系統(tǒng)的性能,并與現(xiàn)有的降級算法、現(xiàn)有的高速緩存器替換算法和現(xiàn)有的磁盤調度算法兼容。
本發(fā)明的另一目的是提供一種使用MSC改進RAID的I/O性能的方法,該方法可以改進RAID控制器中片斷連續(xù)寫入的性能,并提供RAID的有效實現(xiàn),以及可以以RAID退化模式的讀取性能為代價來改進RAID正常模式的讀取性能。
為了實現(xiàn)以上目的,本發(fā)明提供了一種使用MSC改進RAID系統(tǒng)的I/O性能的方法,其中,MSC是由用于片斷寫入連續(xù)變換的rxw矩陣所管理的條帶高速緩存器。rxw矩陣的元素與條帶的塊相對應。該方法包括第一步驟,用于生成基本rxw矩陣,基本rxw矩陣呈現(xiàn)了使條帶高速緩存器降級所需的所有讀取、xor操作和寫入,選擇所述條帶高速緩存器以降級至磁盤;第二步驟,用于對基本rxw矩陣執(zhí)行連續(xù)變換以生成變換后的rxw矩陣,該rxw矩陣包含使所選條帶高速緩存器降級所需的最終讀取、xor操作和寫入;以及第三步驟,基于第二步驟中生成的變換后的rxw矩陣來執(zhí)行讀取、基于變換后的rxw矩陣來執(zhí)行XOR操作、以及基于變換后的rxw矩陣來執(zhí)行寫入。
第二步驟的連續(xù)變換由讀取連續(xù)變換和寫入連續(xù)變換構成。讀取連續(xù)變換必須在寫入連續(xù)變換之前,以提高寫入連續(xù)變換的可能性。
對于基本rxw矩陣的每一列,讀取連續(xù)變換將讀取操作插入位于同一列中的兩個不連續(xù)讀取之間。對于基本rxw矩陣的每一列,寫入連續(xù)變換將寫入操作插入兩個不連續(xù)寫入之間。
對于基本rxw矩陣的每一列,如果在具有讀取操作的兩個不連續(xù)元素之間不具有讀取操作的元素個數(shù)大于預定最大讀取距離,則不允許讀取連續(xù)變換;對于基本rxw矩陣的每一列,如果在具有寫入操作的兩個不連續(xù)元素之間不具有寫入操作的元素個數(shù)大于預定最大寫入距離,則不允許寫入連續(xù)變換。
預定最大讀取距離是顯示出了比連續(xù)讀取更快性能的跨距距離,其中,通過兩個不連續(xù)I/O之間的塊數(shù)來定義跨距距離。預定最大寫入距離是顯示出了比連續(xù)寫入更快性能的跨距距離。通過跨距基準,從磁盤陣列的成員磁盤(member disk)中獲得最大讀取距離和最大寫入距離,這在管理員創(chuàng)建磁盤陣列時自動執(zhí)行??缇嗷鶞释ㄟ^改變跨距距離,在跨距圖案中生成工作負載。
為了實現(xiàn)以上目的,本發(fā)明提供了一種使用MSC改進RAID系統(tǒng)的I/O性能的方法,該方法包括第一步驟,用于確定是否至少一個臟塊(dirty block)存在于選擇要降級至磁盤的MSC單元(如果主機對塊進行寫入,則在實際將寫入數(shù)據(jù)降級至磁盤之前,將寫入數(shù)據(jù)復制于MSC單元的相應塊高速緩存器,以及所述塊高速緩存器成為臟塊);第二步驟,如果確定至少一個臟塊存在于MSC單元中,則為了使MSC單元降級,生成對基本rxw矩陣的讀取/xor/寫入操作;第三步驟,用于讀取連續(xù)變換,如果兩個不連續(xù)讀取元素之間的條帶距離不大于最大讀取距離,則將讀取操作插入位于同一列的兩個不連續(xù)讀取元素之間的基本rxw矩陣的所有元素中;第四步驟,用于寫入連續(xù)變換,如果兩個不連續(xù)寫入元素之間的條帶距離不大于最大寫入距離,則將寫入操作插入位于同一列的兩個不連續(xù)寫入元素之間的基本rxw矩陣的所有元素中;第五步驟,用于確定在通過第三和第四步驟處理的變換后的rxw矩陣中,是否有至少一個讀取操作,以及如果存在至少一個讀取操作,則對于變換后的rxw矩陣的每一列進行讀?。灰约暗诹襟E,用于對于變換后的rxw矩陣的每一行執(zhí)行XOR操作,然后對于變換rxw矩陣的每一列執(zhí)行寫入。
為了實現(xiàn)以上目的,本發(fā)明提供了一種使用MSC來改進RAID系統(tǒng)的I/O性能的方法,所述方法包括第一步驟,如果讀取請求包括至少兩個MSC單元,則將讀取請求分為用于相應MSC單元的多個讀取請求;第二步驟,用于確定是否存在故障磁盤;第三步驟,如果作為第二步驟中確定的結果,沒有發(fā)現(xiàn)存在故障磁盤,則確定在相應的MSC單元中是否存在空塊;第四步驟,如果作為第三步驟中確定的結果,發(fā)現(xiàn)存在空塊,則確定相應的MSC單元是否在讀取MSC單元的整個塊之下;第五步驟,如果作為第四步驟中確定的結果,確定MSC單元讀取MSC單元的整個塊,則將讀取請求添加至MSC單元的分塊列表;第六步驟,如果作為第四步驟中確定的結果,確定MSC單元不在讀取MSC單元的整個塊之下,則產(chǎn)生rxw矩陣,即MSC單元所有空塊的讀取和寫入矩陣,并基于該rxw矩陣來讀取MSC單元的整個塊;以及第七步驟,用于在第六步驟中完成了整個讀取之后,終止MSC單元的分塊列表中存在的所有讀取請求。
結合附圖,將會從以下的詳細描述中更加清楚地理解本發(fā)明的以上和其它目的、特征和優(yōu)點,其中圖1是示出了RAID系統(tǒng)的一般結構的圖示;圖2是通過改變條帶距離而示出在硬盤中的讀取執(zhí)行時間的圖示;圖3是通過改變條帶距離而示出在硬盤中的寫入執(zhí)行時間的圖示;圖4是示出了使用根據(jù)本發(fā)明的MSC寫入的實施例的圖示;圖5是示出了使用根據(jù)本發(fā)明的MSC的寫入操作的流程圖;圖6是示出了使用本發(fā)明的MSC的讀取操作的流程圖;圖7是RAID-5陣列的數(shù)據(jù)組織和術語;圖8是RAID-5陣列中的讀取-修改-寫入-循環(huán);以及圖9是在PBG的各種情況中的RAID-5的降級操作。
具體實施例方式
將參照附圖詳細描述本發(fā)明的優(yōu)選實施例。
本發(fā)明是現(xiàn)有降級算法、高速緩存器替換算法和磁盤調度方法的補充并與之兼容,以及可以應用于各種RAID等級,如,RAID等級0、RAID等級1、RAID等級5和RAID等級6。
本發(fā)明的原理特征是有效使用圖2和3中所示磁盤的特性。圖2是示出了讀取周轉時間與條帶距離的圖示,其中,讀取在相同的預設塊處開始,并在到達相同的預設目的地時停止。通過兩個不連續(xù)I/O之間的塊數(shù)來定義條帶距離。在條帶距離是1時,連續(xù)讀取塊。當條帶距離是2時,跳過一個塊,然后讀取后續(xù)的一個塊,并重復該樣式。當條帶距離是3時,跳過兩個塊,然后讀取一個塊,并重復該樣式。
圖3是通過改變條帶距離示出了在硬盤上測量的執(zhí)行時間的圖示。圖2和3的結果示出了在條帶距離是2時性能的急劇降低。圖2示出了大于5的條帶距離的不連續(xù)順序I/O優(yōu)于其條帶距離為1的順序I/O。在圖3中,條帶距離大于21的不連續(xù)順序I/O優(yōu)于順序I/O。本發(fā)明使用這種磁盤特性改進了RAID系統(tǒng)的性能。
如圖7所示,RAID咨詢部使用術語條和條帶詳細描述了RAID-5,通過條帶40組織RAID-5陣列,每個條帶由奇偶校驗條45和數(shù)據(jù)條41~44構成。每個條41~45包括由磁盤分區(qū)的塊集合47。通過位于成員磁盤的相同偏移處的塊組來定義奇偶校驗塊組(PBG)46。奇偶校驗條45中的奇偶校驗塊存儲在相同PBG46中的數(shù)據(jù)塊的逐比特異或(XOR)的結果。奇偶校驗條45包括條帶40中的奇偶校驗塊48。
在本發(fā)明中,跨距高速緩存器用于改進I/O性能。本發(fā)明所提出的方法中所使用的條帶高速緩存器單元的大小是條帶的大小。根據(jù)條帶來管理由條帶高速緩存器單元構成的高速緩存器。換言之,每個條帶高速緩存器單元與每個條帶相對應,它是用于高速緩存器替換和降級的管理單元。在本發(fā)明中,矩陣條帶高速緩存器(MSC)單元是由用于所提出的連續(xù)變換的所提出的rxw矩陣來管理的條帶高速緩存器單元。rxw矩陣的元素與塊47和48相對應。rxw矩陣的列與條41~45相對應。
此外,在本發(fā)明中,連續(xù)變換生成rxw矩陣以使條帶降級,并通過將附加讀取和寫入插入不連續(xù)區(qū)域,將兩個不連續(xù)的讀取或寫入變換為連續(xù)讀取或寫入。連續(xù)變換采用一致性和性能規(guī)則,這使得數(shù)據(jù)在不依據(jù)文件系統(tǒng)、數(shù)據(jù)修改和性能降低的情況下能夠一致。根據(jù)MSC單元進行管理的高速緩存器提供了RAID系統(tǒng)容易的實施方式和連續(xù)或大量I/O的有效性能,并采用了空間位置。此外,本發(fā)明以退化模式的讀取性能為代價,改進了正常模式的讀取性能(這更加重要)。在圖1的RAID控制器中執(zhí)行本發(fā)明。
盡管本發(fā)明可以應用于各種RAID等級,但是將以使本發(fā)明應用于RAID等級5為例進行描述。
圖4示出了根據(jù)本發(fā)明降級操作的實施例,其中,五個磁盤構成了RAID等級5陣列。
將傳遞至RAID的寫入數(shù)據(jù)高速緩存于圖1所示的RAID控制單元20的存儲器21中。根據(jù)MSC單元100來管理高速緩存器。
可以不將高速緩存存儲器分配給MSC單元的空塊,或者事先將所有高速緩存存儲器分配給MSC的所有各個塊。本發(fā)明不限于這兩種方法中的任何一種。
在圖4的MSC單元100中,MSC單元100的每個塊高速緩存器可以是臟塊、凈塊或空塊。在圖4中,“D”表示臟塊,“C”表示凈塊,以及“E”表示空塊。MSC單元100的每個塊高速緩存器與條帶的每個塊相對應。換言之,“列”指各個磁盤,“行”指升序排列的數(shù)據(jù)塊。當將塊數(shù)據(jù)從主機寫入RAID系統(tǒng)時,將塊數(shù)據(jù)復制至MSC單元100的相應塊高速緩存器,以及塊高速緩存器成為臟塊。當讀取塊或將MSC單元100的臟塊寫入磁盤時,該塊成為凈塊。在MSC單元100中,空塊指示相應的塊高速緩存器不包含有意義的數(shù)據(jù)。
此外,在通過用于降級塊的降級方法來選擇MSC單元100進行降級之后,從所選MSC單元100中生成基本rxw矩陣110,然后連續(xù)變換將基本rxw矩陣110轉換為變換rxw矩陣140。最后,使用變換后的rxw矩陣140來執(zhí)行從磁盤中的讀取、塊高速緩存器的XOR操作、以及至磁盤的寫入。
可以通過六個操作r,t,w,x,xx來對RAID-5的所有操作進行分類。在圖4中,‘r’指示從磁盤至塊高速緩存存儲器的對于塊的讀取操作,以及‘t’指示從磁盤至臨時存儲器的對于塊的讀取操作?!畑’指示相應的塊是XOR操作的操作對象,‘xx’指示基于相應塊的操作‘t’的臨時存儲器和相應塊的塊高速緩存器是操作對象,‘-’指示XOR操作的目的地,以及‘w’指示相應塊的寫入操作。
使用這些助記術來方便地描述工作。為了以新數(shù)據(jù)來更新一個塊,有必要(1)讀取更新塊所屬于的PBG的所有其它塊,除非它被高速緩存;(2)XOR所有數(shù)據(jù)塊;以及(3)寫入奇偶校驗塊和新塊。該操作需要(N-1-d-c)次讀取和(d+1)次寫入,它們均包括(N-c)個I/O,其中,N是磁盤數(shù),c是高速緩存的凈塊數(shù),以及d是要更新的臟塊數(shù)。將該過程稱為重構-寫入循環(huán)。當d=N-1時,不必讀取任何塊;將這種情況稱為完全-奇偶校驗-塊-組-寫入。
由于重構-寫入循環(huán)需要(N-c)個I/O,而讀取-修改-寫入循環(huán)需要2(1+d)個I/O,所以當N-c>2(1+d)時,讀取-修改-寫入循環(huán)可以用于減小I/O數(shù)。該過程如下(1)將新數(shù)據(jù)復制到高速緩存存儲器;(2)讀取舊奇偶校驗塊(r)并同時將舊塊讀入臨時存儲器(t);(3)用舊塊(xx)XOR新塊,并用舊奇偶校驗塊(x)XOR結果以生成新奇偶校驗塊(_);以及(4)寫入新塊(w)并同時寫入新奇偶校驗塊(w),如圖8所示。讀取-修改-寫入循環(huán)需要(1+d)次讀取和(1+d)次寫入,它們均包括2(1+d)個I/O。
對于緩存器狀態(tài)的各種情況,圖9示出了記憶術的降級操作。如圖9的情況2所示,如果兩個塊被高速緩存(凈)以及另一塊被寫入(臟),由于N-c>2(1+d)(其中,N=5,c=2及d=1),所以選擇重構-寫入循環(huán)來使PBG降級。因此有必要讀取空塊(r),對所有數(shù)據(jù)塊進行XOR以更新奇偶校驗塊(x),并寫入臟塊和新奇偶校驗(w)。因此,凈塊只包括x,臟塊需要xw,空塊需要rx,以及奇偶校驗塊需要w。如果在情況4中的所有塊都是臟塊,則有必要對所有數(shù)據(jù)塊進行XOR,無需讀取,并寫入所有塊和奇偶校驗。換言之,所有數(shù)據(jù)塊和奇偶校驗塊分別需要xw和w。圖9中的情況1和6示出了使用讀取-修改-寫入循環(huán)的示例。
在MSC單元100中的塊狀態(tài)中,“D”表示臟塊,其中,新數(shù)據(jù)在高速緩存器中但還未更新至磁盤;“C”表示凈塊,其中,與磁盤一致的數(shù)據(jù)在高速緩存器中;以及“E”表示空塊,其中,有效數(shù)據(jù)不在高速緩存器中。u是每條的塊數(shù),以及v是由RAID-5陣列構成的磁盤數(shù)。圖4中示出的MSC單元100的塊的高速緩存器狀態(tài)可以由以下的u×(v-1)矩陣表示Z=[zij]u×(v-1)=DEEECEEDCEDEDDDDDCDDEDEEEEEEEEDE..................(1)]]>在對于條帶中的所有塊來實際執(zhí)行讀取、XOR和寫入之前,有必要通過生成如圖4所示的基本rxw矩陣來確定應當讀取哪些塊、應當作出怎樣的奇偶校驗塊,以及應當寫入哪些塊。通過針對矩陣Z的每行選擇圖9所示的重構-寫入循環(huán)和讀取-修改-寫入循環(huán)之一,確定了基本rxw矩陣M110(其元素為mij)是{t,r,x,xx,,w}的子集。基本rxw矩陣110表示使條帶中的所有塊降級的所有操作??梢詫D4所示的rxw矩陣110表示為以下等式M=[mij]u×v=m11m12m13m14m15m21m22m23m24m25m31m32m33m34m35m41m42m43m44m45m51m52m53m54m55m61m62m63m64m65m71m72m73m74m75m81m82m83m84m85]]>={txxw}{}{}{}{rx_w}{x}{rx}{rx}{xw}{_w}{x}{rx}{xw}{rx}{_w}{xw}{xw}{xw}{xw}{_w}{xw}{x}{xw}{xw}{_w}{}{txxw}{}{}{rx_w}{}{}{}{}{}{}{}{txxw}{}{rx_w}..................(2)]]>
通過基本rxw矩陣110來描述為使臟塊降級而對于奇偶校驗塊組生成奇偶校驗塊的方法。例如,在基本rxw矩陣110的第一行中,臟塊(z11)存在于與磁盤D0相對應的第一列中,但是其它列的所有塊(z21,z31,z41)為空。然后,使用讀取-修改-寫入循環(huán)。基本rxw矩陣110的m11成為txxw,以及作為奇偶校驗塊組的奇偶校驗塊的m15成為rx_w。換言之,m11執(zhí)行操作‘t’,m15執(zhí)行操作‘r’,針對m11的臨時和高速緩存存儲器和m15的高速緩存存儲器執(zhí)行XOR操作,然后m11和m15執(zhí)行操作‘w’。
將基本rxw矩陣110的第三行作為示例。z33是臟塊,以及z31是凈塊。因此,通過重構-寫入循環(huán),m31成為‘x’,m32成為‘rx’,m33成為‘xw’,m34成為‘rx’,以及m35成為‘w’。
基本rxw矩陣110中示出僅讀取操作的讀取矩陣120顯示在圖4中。讀取矩陣120不是單獨存在的矩陣。圖4中示出的讀取矩陣120是為了容易地在基本rxw矩陣110中示出僅讀取操作。寫入矩陣130是不存在的矩陣,并示出以與讀取矩陣120相同的方式容易地示出僅寫入操作。
在從MSC單元100的塊狀態(tài)中生成基本rxw矩陣110之后,執(zhí)行由讀取連續(xù)變換和寫入連續(xù)變換構成的連續(xù)變換,以產(chǎn)生變換后的rxw矩陣140。
讀取連續(xù)變換的基本原理如下讀取操作可以添加至的rxw元素mij在兩個不連續(xù)元素maj和mbj之間的不連續(xù)區(qū)域內,其中,maj和mbj均包括‘r’或‘t’。在不連續(xù)區(qū)域內,不存在包括‘r’或‘t’的元素。在圖4中示出的第二列的情況下,可以在m32和m62之間添加‘r’或‘t’,其中j=2,a=3和b=7。
同時,當將讀取操作添加至元素mij時,如果mij不與奇偶校驗塊相對應并且相應的高速緩存器狀態(tài)zij為臟時,使用操作‘t’。否則,使用操作‘r’。
寫入連續(xù)變換在讀取連續(xù)變換之后。寫入連續(xù)變換的基本原理如下寫入操作可以添加至的rxw元素mij在兩個不連續(xù)元素maj和mbj之間的不連續(xù)區(qū)域內,其中,maj和mbj均包括‘w’。在不連續(xù)區(qū)域內,不存在包括‘w’的元素。在圖4中示出的第一列的情況下,可以在m11和m41之間添加‘w’,其中j=1,a=1和b=4。
此外,當將寫入操作添加至元素mij時,如果對于位于maj和mbj之間不連續(xù)區(qū)域內的所有mij,存在至少一個mij,使得它的高速緩存狀態(tài)zij為空,以及mij不包含‘r’,則不允許寫入連續(xù)變換。
存在連續(xù)變換的其它限制。如果在基本rxw矩陣110中的兩個不連續(xù)讀取之間的跨距距離大于預定“最大讀取距離”,則不允許用于不連續(xù)讀取的讀取連續(xù)變換。以類似的方式,如果在基本rxw矩陣110中的兩個不連續(xù)寫入之間的跨距距離大于預定“最大寫入距離”,則不允許用于不連續(xù)寫入的寫入連續(xù)變換。
預定最大讀取距離是顯示出了比連續(xù)讀取更快的性能的跨距距離,其中,通過兩個不連續(xù)I/O之間的塊數(shù)來定義跨距距離。預定最大寫入距離是顯示出了比連續(xù)寫入更快的性能的跨距距離。當管理員創(chuàng)建磁盤陣列時,根據(jù)跨距基準,自動地執(zhí)行從磁盤陣列的成員磁盤中獲得最大讀取距離和最大寫入距離。通過改變跨距距離,跨距基準生成跨距圖案的工作量。
將“最大讀取距離”值和“最大寫入距離”值存儲于可以永久存儲這些值的非易失性存儲器中。
通過基本rxw矩陣110的連續(xù)變換生成變換后的rxw矩陣140。為了易于理解如何通過比較讀取矩陣120和寫入矩陣130來執(zhí)行連續(xù)變換,圖4示出了變換后的讀取矩陣150和變換后的寫入矩陣160,它們均通過變換后的rxw矩陣來驅動,并且在物理上并不存在。
最后,在生成變換后的rxw矩陣140之后,執(zhí)行用于使MSC單元100降級的實際的讀取、XOR、寫入。實際同時向磁盤請求對變換后的rxw矩陣140的所有讀取。在所有所請求的讀取完成之后,執(zhí)行XOR操作,并向磁盤請求對變換后的rxw矩陣140的所有寫入。當完成了所有所請求的寫入之后,完成對MSC單元100的降級。
當如上所述執(zhí)行連續(xù)變換時,即使單個磁盤命令具有較長的數(shù)據(jù)長度,多個讀取或寫入命令仍形成了單個磁盤命令。后一磁盤命令顯示出了比前一磁盤命令更快的性能。
在圖5的流程圖中示出了導致MSC100的變換后的rxw矩陣140生成的過程。
當在步驟200中確定使MSC單元100降級時,執(zhí)行用于確定在MSC單元100中是否存在一個或多個臟塊的第一步驟201。如果在第一步驟201中,在MSC單元100中存在一個或多個臟塊,則執(zhí)行第二步驟202;否則,在步驟211處終止對單元MSC100的降級。
在第二步驟202中,使用讀取-修改-寫入循環(huán)和重構-寫入循環(huán)生成基本rxw矩陣110,以使MSC100單元每行的臟塊降級。
以下,在第三步驟中執(zhí)行讀取連續(xù)變換。在讀取連續(xù)變換中,將讀取操作添加至的rxw元素mij在兩個不連續(xù)元素maj和mbj之間的不連續(xù)區(qū)域內,其中,maj和mbj均包括‘r’或‘t’。然而,如果在基本rxw矩陣110中的兩個不連續(xù)讀取之間的跨距距離大于預定“最大讀取距離”,則不允許用于不連續(xù)讀取的讀取連續(xù)變換。當將讀取操作添加至元素mij時,如果mij不與奇偶校驗塊相對應并且相應的高速緩存器狀態(tài)zij為臟時,使用操作‘t’。否則,使用操作‘r’。
之后,在第四步驟204中執(zhí)行寫入連續(xù)變換。在寫入連續(xù)變換中,寫入操作可以添加至的rxw元素mij在兩個不連續(xù)元素maj和mbj之間的不連續(xù)區(qū)域內,其中,maj和mbj均包括‘w’。在不連續(xù)區(qū)域內,不存在包括‘w’的元素。然而,如果在基本rxw矩陣110中的兩個不連續(xù)寫入之間的跨距距離大于預定“最大寫入距離”,則不允許用于不連續(xù)寫入的寫入連續(xù)變換。此外,當將寫入操作添加至元素mij時,如果對于位于maj和mbj之間不連續(xù)區(qū)域內的所有mij,存在至少一個mij使得它的高速緩存狀態(tài)zij為空,以及mij不包含‘r’,則不允許寫入連續(xù)變換。
之后,在第五步驟205中確定在變換后的rxw矩陣中,讀取操作‘r’或‘t’的次數(shù)是否是一個或多個。如果在第五步驟205中讀取操作‘r’或‘t’的次數(shù)不是一個或多個,則執(zhí)行第八步驟208。如果在第五步驟205中讀取操作‘r’或‘t’的次數(shù)是一個或多個,則在第六步驟206中,實際向磁盤同時請求對變換后的rxw矩陣140的所有讀取。
在第七步驟207中完成了所有所請求的讀取之后,在第八步驟208中執(zhí)行對于最終rxw矩陣140每行的XOR操作,在第九步驟209中,向磁盤請求對變換后的rxw矩陣140的所有寫入。
當在第十步驟210中完成所有所請求的寫入之后,在步驟211中使MSC單元100降級。
如果最大讀取距離是1,則不存在讀取連續(xù)變換所協(xié)助的寫入連續(xù)變換。如果在不遵守所確定的最大讀取距離的所述規(guī)則的情況下,為了增加寫入連續(xù)變換的可能性而積極增加最大讀取距離,則可以獲得更好的性能。
以下描述根據(jù)本發(fā)明的改進讀取性能的方法。讀取性能改進方案與寫入性能改進方案獨立。
通過犧牲退化模式的讀取性能,本發(fā)明的讀取性能改進方案可以改進正常模式的讀取性能。在退化模式中,必須使用奇偶校驗高速緩存器來改進讀取性能。為此,讀取請求之間出現(xiàn)了復雜的相關性,因此RAID讀取的實施方式變得復雜,從而導致了大量的讀取開銷。
為了減小這種開銷,總是在條帶的全部塊上執(zhí)行退化模式中的讀取。因此,可以降低讀取請求之間的復雜相關性。然而,這導致了小讀取操作的不良性能。
圖6的流程圖示出了讀取性能改進方案。
如果在步驟300中生成了讀取請求并開始讀取,則如果在讀取請求包括兩個或多個MSC單元100,則在第一步驟301中,對于各個MSC單元,將包括兩個或多個MSC單元100的讀取請求分為多個讀取請求。
之后,執(zhí)行用于確定是否存在故障磁盤的第二步驟302。如果在第二步驟302中沒有故障磁盤,則執(zhí)行為所劃分的讀取請求讀取MSC單元100的空塊的第三步驟303,然后在步驟309中終止所述讀取。
在第三步驟303中,可以存在由MSC單元命中高速緩存器的塊,可選地,所請求的所有塊會命中高速緩存器。在這種情況下,終止讀取請求而無需任何讀取操作。
同時,如果在第二步驟302中存在故障磁盤,則在第四步驟304中確定在MSC單元100中是否存在空塊。如果在第四步驟304中確定在MSC單元100中存在空塊,則在第五步驟305中確定MSC單元100是否正在讀取MSC單元100的所有塊。如果在第四步驟304中確定在MSC單元100中不存在空塊,則在步驟309中終止所述讀取。如果在第五步驟305中確定MSC單元100正在讀取MSC單元100的所有塊,則在第八步驟308中將讀取請求插入MSC單元100的分塊列表中。然后,在第七步驟307中終止讀取請求。
如果在第五步驟305中MSC單元100沒有讀取MSC單元100的所有塊,則在第六步驟306中,產(chǎn)生rxw矩陣以讀取MSC單元100的所有空塊,為rxw矩陣執(zhí)行讀取連續(xù)變換,然后通過rxw矩陣執(zhí)行對MSC單元所有塊的讀取。然而,可以省略該讀取連續(xù)變換。在完成了對條帶所有塊的讀取之后,執(zhí)行完成MSC單元100的分塊列表中的讀取請求,然后在步驟309處終止所述讀取。
如上所述,利用諸如RAID-5、RAID-6等復雜的故障容忍方案,本發(fā)明可以改進對磁盤陣列的不連續(xù)順序寫入的性能。
權利要求
1.一種使用矩陣條帶高速緩存器(MSC)來改進獨立磁盤冗余陣列(RAID)系統(tǒng)的輸入/輸出(I/O)性能的方法,所述方法包括第一步驟,在將執(zhí)行對磁盤的寫入的MSC單元中,生成基本rxw矩陣,所述基本rxw矩陣呈現(xiàn)了使條帶高速緩存器降級所需的所有讀取、xor操作和寫入,其中,選擇所述條帶高速緩存器以降級至磁盤;第二步驟,用于對基本rxw矩陣執(zhí)行連續(xù)變換以生成變換后的rxw矩陣,所述rxw矩陣包含使所選MSC單元降級所需的最終讀取、xor操作和寫入;以及第三步驟,基于第二步驟中生成的變換后的rxw矩陣來執(zhí)行讀取、基于變換后的rxw矩陣來執(zhí)行XOR操作、以及基于變換后的rxw矩陣來執(zhí)行寫入。
2.如權利要求1所述的方法,所述第二步驟的連續(xù)變換包括讀取連續(xù)變換和寫入連續(xù)變換,其中,所述讀取連續(xù)變換在所述寫入連續(xù)變換之前。
3.如權利要求1所述的方法,其中,對于基本rxw矩陣的每一列,所述讀取連續(xù)變換將讀取操作插入兩個不連續(xù)元素之間的不連續(xù)區(qū)域內,其中,所述兩個不連續(xù)元素均包括讀取操作并位于同一列中,并且不存在包括讀取操作的元素,以及對于基本rxw矩陣的每一列,所述寫入連續(xù)變換將寫入操作插入兩個不連續(xù)元素之間的不連續(xù)區(qū)域內,其中,所述兩個不連續(xù)元素均包括寫入操作并位于同一列中,并且不存在包括寫入操作的元素。
4.如權利要求3所述的方法,其中,對于基本rxw矩陣的每一列,如果在包括讀取操作的兩個不連續(xù)元素之間不包括讀取操作的元素個數(shù)大于預定最大讀取距離,則不允許所述讀取連續(xù)變換;以及對于基本rxw矩陣的每一列,如果在包括寫入操作的兩個不連續(xù)元素之間不包括寫入操作的元素個數(shù)大于預定最大寫入距離,則不允許所述寫入連續(xù)變換。
5.如權利要求4所述的方法,其中,所述預定最大讀取/寫入距離是比具有等效搜索距離的連續(xù)讀取/寫入顯示出了更快的性能的最小跨距距離;其中,通過兩個不連續(xù)I/O之間的塊數(shù)來定義所述跨距距離,以及所述等效搜索距離指示應用了相等的開始和結束位置。
6.一種使用MSC改進RAID系統(tǒng)的I/O性能的方法,所述方法包括第一步驟,用于確定是否至少一個臟塊存在于選擇要降級至磁盤的MSC單元中(如果主機對塊進行寫入,則在實際將寫入數(shù)據(jù)降級至磁盤之前,將寫入數(shù)據(jù)復制于MSC單元的相應塊高速緩存器,以及塊高速緩存器成為臟塊);第二步驟,如果確定至少一個臟塊存在于MSC單元中,則為了使MSC單元降級,生成對基本rxw矩陣的讀取/xor/寫入操作;第三步驟,用于讀取連續(xù)變換,對于基本rxw矩陣的每一列,所述讀取連續(xù)變換將讀取操作插入位于同一列的包括讀取操作的兩個不連續(xù)讀取元素之間;第四步驟,用于寫入連續(xù)變換,對于基本rxw矩陣的每一列,所述寫入連續(xù)變換將寫入操作插入位于同一列的包括寫入操作的兩個不連續(xù)寫入元素之間;第五步驟,用于確定在通過第三和第四步驟處理的變換后的rxw矩陣中,是否有至少一個讀取操作,以及如果存在至少一個讀取操作,則對于變換后的rxw矩陣的每一列進行讀?。灰约暗诹襟E,用于對于變換后的rxw矩陣的每一行執(zhí)行XOR操作,然后對于變換rxw矩陣的每一列執(zhí)行寫入。
7.如權利要求6所述的方法,其中對于基本rxw矩陣的每一列,如果在包括讀取操作的兩個不連續(xù)元素之間不包括讀取操作的元素個數(shù)大于預定最大讀取距離,則不允許所述讀取連續(xù)變換;以及對于基本rxw矩陣的每一列,如果在包括寫入操作的兩個不連續(xù)元素之間不包括寫入操作的元素個數(shù)大于預定最大寫入距離,則不允許所述寫入連續(xù)變換。
8.如權利要求7所述的方法,其中,所述預定最大讀取/寫入距離是比等效搜索距離的連續(xù)讀取/寫入顯示出了更快的性能的最小跨距距離;其中,通過兩個不連續(xù)I/O之間的塊數(shù)來定義所述跨距距離,以及所述等效搜索距離指示應用了相等的開始和結束位置。
9.如權利要求6所述的方法,在第三步驟,如果緩存狀態(tài)zij為臟,則將‘t’插入用于讀取操作的元素mij,以及如果緩存狀態(tài)zij非臟,則將‘r’插入用于讀取操作的元素,其中,zij與確定插入讀取操作的rxw矩陣的元素mij相對應,其中,‘r’指示從磁盤至塊高速緩存存儲器的塊的讀取操作,以及‘t’指示從磁盤至臨時存儲器的塊的讀取操作。
10.如權利要求6所述的方法,其中,在第四步驟中,當將寫入操作添加至元素mij時,如果對于位于maj和mbj之間不連續(xù)區(qū)域內的所有mij,存在至少一個mij使得它的高速緩存狀態(tài)zij為空,以及mij不包含‘r’,則不允許寫入連續(xù)變換。
11.一種使用MSC來改進RAID系統(tǒng)的I/O性能的方法,所述方法包括第一步驟,如果讀取請求包括至少兩個MSC單元,則將讀取請求分為用于相應MSC單元的多個讀取請求;第二步驟,用于確定是否存在故障磁盤;第三步驟,作為第二步驟中確定的結果,如果沒有發(fā)現(xiàn)存在故障磁盤,則確定在相應的MSC單元中是否存在空塊;第四步驟,作為第三步驟中確定的結果,如果發(fā)現(xiàn)存在空塊,則確定相應的MSC單元是否正在讀取MSC單元的整個塊;第五步驟,作為第四步驟中確定的結果,如果確定MSC單元讀取MSC單元的整個塊,則將讀取請求添加至MSC單元的分塊列表;第六步驟,作為第四步驟中確定的結果,如果確定MSC單元沒有讀取MSC單元的整個塊,則產(chǎn)生rxw矩陣,即MSC單元所有空塊的讀取和寫入矩陣,并基于該rxw矩陣來讀取MSC單元的整個塊;以及第七步驟,用于在第六步驟中完成了整個讀取之后,終止MSC單元的分塊列表中存在的所有讀取請求,其中,所述MSC單元是根據(jù)條帶組管理的高速緩存器單元。
12.如權利要求11所述的方法,其中,如果在第二步驟中沒有發(fā)現(xiàn)故障磁盤,則針對單元MSC的空塊執(zhí)行讀取,然后在每個讀取請求處終止。
13.如權利要求11所述的方法,其中,在第六步驟中,在執(zhí)行整個讀取之前,針對最終的rxw矩陣執(zhí)行讀取連續(xù)變換。
全文摘要
這里公開了一種使用矩陣條帶高速緩存器(MSC)來改進獨立磁盤冗余陣列(RAID)系統(tǒng)的輸入/輸出(I/O)性能的方法,所述方法包括第一步驟,用于通過將執(zhí)行對磁盤的寫入的單元MSC,生成在行組合之前呈現(xiàn)的基本rxw矩陣,即讀取和寫入矩陣;第二步驟,用于通過行組合,根據(jù)在第一步驟中生成的行組合之前的rxw矩陣來生成rxw矩陣,即最終的讀取和寫入矩陣;以及第三步驟,基于第二步驟中生成的行組合后的rxw矩陣來執(zhí)行讀取、針對基于行的行組合后的rxw矩陣來執(zhí)行XOR操作、以及基于列的行組合后的rxw矩陣來執(zhí)行寫入。
文檔編號G06F3/06GK101093434SQ20071011007
公開日2007年12月26日 申請日期2007年6月14日 優(yōu)先權日2006年6月20日
發(fā)明者白承勛, 樸圭晧 申請人:韓國科學技術院