專利名稱:數(shù)據(jù)讀寫方法及應(yīng)用該方法的磁盤陣列系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)讀寫方法及使用該方法的磁 盤陣列系統(tǒng)。
背景技術(shù):
目前,磁盤陣列系統(tǒng)可按照前端主機(jī)接口來劃分,分為光纖通道(FibreCharmel,F(xiàn)C)磁盤陣列,互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口(Internet Small ComputerSystem Interface, iSCSI)磁盤陣列,串行 SCSI (Serial Attached SCSI, SAS)磁盤陣列,及 Infiniband 磁盤 陣列。FC/iSCSI/SAS/Infiniband磁盤陣列系統(tǒng)的結(jié)構(gòu)主要由前端協(xié)議驅(qū)動(dòng)層,卷管理 層,緩存層(Cache)和獨(dú)立冗余磁盤陣列(Redundant Array of IndependentDisks, RAID) 層組成。如圖1至3分別示出了現(xiàn)有技術(shù)中的三種磁盤陣列系統(tǒng)結(jié)構(gòu)圖。以圖1為例,對 讀寫命令的處理流程描述如下根據(jù)前端主機(jī)接口的不同,讀寫命令經(jīng)過主機(jī)端不同傳輸 協(xié)議的封裝,進(jìn)入磁盤陣列系統(tǒng),由前端協(xié)議驅(qū)動(dòng)層101對數(shù)據(jù)包/幀進(jìn)行解析,提取讀寫 命令交由卷管理層102 ;卷管理層102根據(jù)讀寫命令操作的卷進(jìn)行分類,并將命令交由緩存 層103處理;緩存層103判斷讀寫命令對應(yīng)的數(shù)據(jù)塊在緩存中是否命中,如命中,則直接執(zhí) 行該讀寫命令對應(yīng)的操作,并將操作結(jié)果返回前端協(xié)議驅(qū)動(dòng)層101 ;否則交由RAID層104 處理,由RAID層104調(diào)用相關(guān)的物理設(shè)備105執(zhí)行操作。操作結(jié)果依次返回前端協(xié)議驅(qū)動(dòng) 層101。無論是以上哪種方式返回的操作結(jié)果,前端協(xié)議驅(qū)動(dòng)層101將操作結(jié)果及數(shù)據(jù)按照 協(xié)議進(jìn)行封裝,并發(fā)送至主機(jī)端。其中,數(shù)據(jù)塊在緩存層中的處理分為三部分1、查找即查找數(shù)據(jù)塊是否在緩存區(qū)內(nèi);2、命中處理數(shù)據(jù)塊在緩存區(qū)內(nèi),則直接返回操作結(jié)果;3、不命中處理數(shù)據(jù)塊不在緩存區(qū)內(nèi),則以緩存塊的大小為單位,分配緩存空間, 若為讀操作或是數(shù)據(jù)塊小于緩存塊的寫操作,則通過RAID讀取磁盤中最新數(shù)據(jù)到緩存塊 中,再執(zhí)行對應(yīng)的讀/寫操作;否則直接將數(shù)據(jù)塊寫入緩存區(qū)。圖2及圖3所示磁盤陣列系統(tǒng)中各個(gè)層的連接方式與圖1大體相同,只是圖2中的 緩存層203與前端協(xié)議驅(qū)動(dòng)層201之間的數(shù)據(jù)與命令的交互都要經(jīng)由卷管理層202實(shí)現(xiàn); 而圖3中卷管理層303在緩存層302的下層,前端協(xié)議驅(qū)動(dòng)層301對數(shù)據(jù)包/幀進(jìn)行解析 提取讀寫命令后,首先將讀寫命令交給緩存層302進(jìn)行處理,如果命中直接將操作結(jié)果返 回前端協(xié)議驅(qū)動(dòng)層301,如果未命中再交給卷管理層303 ;卷管理層102根據(jù)讀寫命令操作 的卷進(jìn)行分類,并將命令發(fā)送至RAID層304,后續(xù)處理則與前述情況類似。主機(jī)端對磁盤陣列系統(tǒng)的讀寫,其總時(shí)間主要包括主機(jī)端和磁盤陣列系統(tǒng)之間的 數(shù)據(jù)塊傳輸時(shí)間(Tl)和磁盤陣列系統(tǒng)對讀寫命令的處理時(shí)間(T2)。在數(shù)據(jù)庫等小數(shù)據(jù)塊 操作居多的應(yīng)用中,小數(shù)據(jù)塊的傳輸時(shí)間(即Tl)很短,磁盤陣列系統(tǒng)對小數(shù)據(jù)塊的處理時(shí) 間(即T2)占總時(shí)間的比例較大,故降低小數(shù)據(jù)塊的處理時(shí)間極為重要。結(jié)合圖1所對應(yīng)的流程,如果數(shù)據(jù)塊在緩存層均未命中,則每個(gè)讀寫命令都需要經(jīng)過從前端協(xié)議驅(qū)動(dòng)層到緩存層,甚至到RAID層,再回到前端協(xié)議驅(qū)動(dòng)層的過程。根據(jù)數(shù)據(jù)塊在緩存層中的流程處理,當(dāng)數(shù)據(jù)塊大小小于緩存塊大小的讀寫命令操 作完成后,當(dāng)在一定時(shí)間范圍內(nèi)對同一緩存塊進(jìn)行操作時(shí),都還需要進(jìn)行對同一緩存塊的 查找和命中操作。如對應(yīng)用中大小為512B的順序操作,此時(shí)磁盤陣列系統(tǒng)中的緩存塊大 小為64KB,則有連續(xù)128個(gè)命令都在訪問同一個(gè)緩存塊。隨著緩存介質(zhì)容量性價(jià)比越來越 高,磁盤陣列系統(tǒng)中的緩存容量也越來越大,對同一查找算法而言,數(shù)據(jù)塊在緩存區(qū)的查找 時(shí)間會(huì)越來越長。對于小數(shù)據(jù)塊操作而言,無疑緩存區(qū)的查找時(shí)間占磁盤陣列系統(tǒng)處理時(shí) 間較大,即對于小數(shù)據(jù)塊操作而言,緩存區(qū)的查找時(shí)間占操作總時(shí)間的比例較大。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于,提出一種數(shù)據(jù)讀寫方法,可以提高連續(xù)對磁盤陣列 系統(tǒng)中的同一個(gè)緩存數(shù)據(jù)塊操作時(shí)的讀寫速度。本發(fā)明實(shí)施例提出的一種數(shù)據(jù)讀寫方法,該方法應(yīng)用于包含前端協(xié)議驅(qū)動(dòng)層、卷 管理層以及緩存層的磁盤陣列系統(tǒng),在磁盤陣列系統(tǒng)中設(shè)置虛擬緩存層,所述虛擬緩存層 在前端協(xié)議驅(qū)動(dòng)層之下,且在緩存層之上,虛擬緩存層中存儲(chǔ)緩存層中的一個(gè)緩存塊地址; 該方法包括如下步驟接收到來自前端協(xié)議驅(qū)動(dòng)層的讀寫命令,判斷該讀寫命令對應(yīng)的數(shù)據(jù)塊是否全部 包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,若是,則對虛擬緩存層存儲(chǔ)的緩 存塊地址對應(yīng)的數(shù)據(jù)塊進(jìn)行讀寫操作,并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;否則將該讀 寫命令交給虛擬緩存層的下層進(jìn)行操作,并將當(dāng)前虛擬緩存層存儲(chǔ)內(nèi)容更新為該讀寫命令 所對應(yīng)的緩存塊地址。所述讀寫命令為操作大小小于或等于一個(gè)存儲(chǔ)塊的讀寫命令。所述判斷的結(jié)果為讀寫命令對應(yīng)的數(shù)據(jù)塊部分包含在虛擬緩存層中存儲(chǔ)的緩存 塊地址對應(yīng)的數(shù)據(jù)塊中,則執(zhí)行如下步驟將所述讀寫命令拆分為第一子命令和第二子命令,所述第一子命令對應(yīng)的數(shù)據(jù)塊 全部包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,所述第二子命令對應(yīng)的數(shù)據(jù) 塊不包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中;根據(jù)第一子命令對虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊執(zhí)行讀寫操作, 并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;并將第二子命令交給虛擬緩存層的下層進(jìn)行操作。本發(fā)明實(shí)施例還提出了一種磁盤陣列系統(tǒng),包含前端協(xié)議驅(qū)動(dòng)層、卷管理層以及 緩存層,該磁盤陣列系統(tǒng)還包括虛擬緩存層,所述虛擬緩存層在前端協(xié)議驅(qū)動(dòng)層之下,且在 緩存層之上,虛擬緩存層中存儲(chǔ)緩存層中的一個(gè)緩存塊地址,所述虛擬緩存層還包括接收模塊、判斷模塊,讀寫模塊、傳送模塊和更新模塊,接收模塊用于接收來自前端協(xié)議驅(qū)動(dòng)層的讀寫命令;判斷模塊,用于判斷接收模塊所接收的讀寫命令對應(yīng)的數(shù)據(jù)塊是否全部包含在虛 擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中;若是,由讀寫模塊對虛擬緩存層存儲(chǔ)的緩存塊地址對應(yīng)的緩存塊進(jìn)行讀寫操作, 并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;
否則,由傳送模塊將該讀寫命令交給虛擬緩存層的下層,并由更新模塊將當(dāng)前虛 擬緩存層存儲(chǔ)內(nèi)容更新為該讀寫命令所對應(yīng)的緩存塊地址。所述虛擬緩存層位于前端協(xié)議驅(qū)動(dòng)層內(nèi)部,卷管理層內(nèi)部或緩存層內(nèi)部。所述虛擬緩存層還包括 拆分模塊,當(dāng)判斷模塊的判斷結(jié)果為所述讀寫命令對應(yīng)的數(shù)據(jù)塊部分包含在虛擬 緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,則將該讀寫命令拆分為第一子命令和第二子 命令,所述第一子命令對應(yīng)的數(shù)據(jù)塊全部包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù) 據(jù)塊中,所述第二子命令對應(yīng)的數(shù)據(jù)塊不包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù) 據(jù)塊中;所述讀寫模塊根據(jù)第一子命令對虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊 執(zhí)行讀寫操作,并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;所述傳送模塊將第二子命令交給虛擬緩存層的下層進(jìn)行操作。從以上技術(shù)方案可以看出,通過設(shè)置虛擬緩存層存儲(chǔ)上一次讀寫操作對應(yīng)的緩存 層的一個(gè)存儲(chǔ)塊地址;對于讀寫命令,首先判斷虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的緩 存數(shù)據(jù)塊是否為該讀寫命令對應(yīng)的數(shù)據(jù)塊,若是則直接對該緩存塊地址對應(yīng)的緩存數(shù)據(jù)塊 進(jìn)行操作,這樣可以省去對緩存層進(jìn)行檢索的過程。本發(fā)明方案特別適用于連續(xù)多條命令 操作同一個(gè)數(shù)據(jù)塊的情況,可以只進(jìn)行一次檢索而省略其他檢索過程,相對于現(xiàn)有技術(shù)可 以極大提高讀寫速度。
圖1為現(xiàn)有技術(shù)中的第一種磁盤陣列系統(tǒng)的結(jié)構(gòu)圖;圖2為現(xiàn)有技術(shù)中的第二種磁盤陣列系統(tǒng)的結(jié)構(gòu)圖;圖3為現(xiàn)有技術(shù)中的第三種磁盤陣列系統(tǒng)的結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例提出的磁盤陣列系統(tǒng)結(jié)構(gòu)圖;圖5為本發(fā)明實(shí)施例虛擬緩存層上層對虛擬緩存層進(jìn)行命令操作的流程圖;圖6為本發(fā)明實(shí)施例的命令部分命中虛擬緩存層情況的流程圖;圖7為本發(fā)明實(shí)施例中虛擬緩存層上層對其進(jìn)行緩存更新的流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步 的詳細(xì)闡述。本發(fā)明提出一種磁盤陣列系統(tǒng)中提高小數(shù)據(jù)塊讀寫速度的方法。對現(xiàn)有的磁盤陣 列系統(tǒng)的進(jìn)行改進(jìn),在系統(tǒng)中增加一個(gè)虛擬緩存層,該虛擬緩存層位于前端協(xié)議驅(qū)動(dòng)層之 下,且在緩存層之上。虛擬緩存層用于緩存最近一次小數(shù)據(jù)塊操作所對應(yīng)緩存塊的地址,來 減少之后對此緩存塊數(shù)據(jù)訪問命令的處理時(shí)間,提高小數(shù)據(jù)塊讀寫速度。以緩存塊大小為 64K,應(yīng)用為512B的順序操作為例,則每128個(gè)命令減少了 127倍的緩存查找時(shí)間。較佳 地,此虛擬緩存層不占用真實(shí)的數(shù)據(jù)空間,其緩存區(qū)實(shí)際空間為緩存層的緩存區(qū),虛擬緩存 層僅保存對應(yīng)緩存區(qū)的地址。圖4示出了用于實(shí)現(xiàn)該方法的一種磁盤陣列系統(tǒng)的實(shí)施例。在該實(shí)施例中,在前端協(xié)議驅(qū)動(dòng)層401和卷管理層403之間增加了一個(gè)虛擬緩存層402。在以下對實(shí)施方式說明中,對虛擬層的上一層或是其所在層稱為虛擬緩存層上層,將虛擬緩存層的下一層稱為虛擬緩存層下層。本發(fā)明所述小數(shù)據(jù)塊是指大小小于一個(gè) 緩存塊大小的數(shù)據(jù)塊。例如若緩存塊大小為64kB,則小數(shù)據(jù)塊是小于64kB的數(shù)據(jù)塊。虛擬 緩存層402中存儲(chǔ)緩存層404中的一個(gè)緩存塊地址。其中,所述虛擬緩存層404還包括接收模塊、判斷模塊,讀寫模塊、傳送模塊和更 新模塊,接收模塊用于接收來自前端協(xié)議驅(qū)動(dòng)層401的讀寫命令;判斷模塊,用于判斷接收模塊所接收的讀寫命令對應(yīng)的數(shù)據(jù)塊是否全部包含在虛 擬緩存層402中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中;若是,由讀寫模塊對虛擬緩存層402存儲(chǔ)的緩存塊地址對應(yīng)的緩存塊進(jìn)行讀寫操 作,并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;否則,由傳送模塊將該讀寫命令交給虛擬緩存層402的下層(即卷管理層403),并 由更新模塊將當(dāng)前虛擬緩存層存儲(chǔ)內(nèi)容更新為該讀寫命令所對應(yīng)的緩存塊地址。在其他實(shí)施例中,所述虛擬緩存層還可以位于前端協(xié)議驅(qū)動(dòng)層內(nèi)部,卷管理層內(nèi) 部或緩存層內(nèi)部。所述虛擬緩存層還可以包括拆分模塊,當(dāng)判斷模塊的判斷結(jié)果為所述讀寫命令對應(yīng)的數(shù)據(jù)塊部分包含在虛擬 緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,則將該讀寫命令拆分為第一子命令和第二子 命令,所述第一子命令對應(yīng)的數(shù)據(jù)塊全部包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù) 據(jù)塊中,所述第二子命令對應(yīng)的數(shù)據(jù)塊不包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù) 據(jù)塊中;所述讀寫模塊根據(jù)第一子命令對虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊 執(zhí)行讀寫操作,并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;所述傳送模塊將第二子命令交給虛擬緩存層的下層進(jìn)行操作?;趫D4所示磁盤陣列系統(tǒng)實(shí)現(xiàn)的數(shù)據(jù)讀寫實(shí)現(xiàn)流程如圖5所示,包括如下步 驟步驟501 命中判斷步驟對操作大小小于或等于一個(gè)緩存塊的讀寫命令,經(jīng)過虛 擬緩存層時(shí),進(jìn)行命中判斷,如命中則執(zhí)行步驟503 ;否則執(zhí)行步驟502。所述讀寫命令中包含所要操作的數(shù)據(jù)塊的首地址以及該數(shù)據(jù)塊的大??;等效地, 讀寫命令也可以包含所要操作的數(shù)據(jù)塊的首地址和尾地址。本發(fā)明的對虛擬緩存層的命中判斷與現(xiàn)有技術(shù)中緩存層的命中判斷有所不同?,F(xiàn) 有技術(shù)緩存層的命中判斷,是對該緩存層進(jìn)行檢索,判斷是否能夠檢索到讀寫命令對應(yīng)的 緩存數(shù)據(jù)塊;而本發(fā)明對虛擬緩存層的命中判斷,則是判斷該讀寫命令對應(yīng)的數(shù)據(jù)塊是否 包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的緩存數(shù)據(jù)塊中,若讀寫命令對應(yīng)的數(shù)據(jù)塊完 全包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的緩存數(shù)據(jù)塊中,則為完全命中,若讀寫命 令對應(yīng)的數(shù)據(jù)塊完全不包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的緩存數(shù)據(jù)塊中,則為 未命中;若讀寫命令對應(yīng)的數(shù)據(jù)塊中的一部分包含在在虛擬緩存層中存儲(chǔ)的緩存塊地址對 應(yīng)的緩存數(shù)據(jù)塊中,而另一部分不包含在其中,則為部分命中。
步驟502 緩存更新步驟將命令交給虛擬緩存層的下層進(jìn)行操作,且將當(dāng)前虛擬 緩存層中的內(nèi)容更新為此命令對應(yīng)的緩存塊首地址。步驟503 對虛擬緩存層執(zhí)行讀寫操作,也就是對虛擬緩存層存儲(chǔ)的緩存塊地址 對應(yīng)的緩存塊進(jìn)行讀寫操作,返回操作結(jié)果至前端協(xié)議驅(qū)動(dòng)層401,并結(jié)束本流程。參考圖4,以在前端協(xié)議驅(qū)動(dòng)層401和卷管理層403之間加入虛擬緩存層402為 例,讀寫命令需要從前端協(xié)議驅(qū)動(dòng)層401經(jīng)過虛擬緩存層402,到卷管理層403 ;而當(dāng)前端協(xié) 議驅(qū)動(dòng)層收到緩存層返回的操作結(jié)果時(shí),也需要根據(jù)該操作結(jié)果對虛擬緩存層進(jìn)行更新。參考圖5,當(dāng)對虛擬緩存層進(jìn)行讀寫命令操作時(shí),虛擬緩存層檢查該讀寫命令所要 訪問的數(shù)據(jù)塊是否命中,如命中,則直接進(jìn)行讀寫操作;否則將命令提交虛擬緩存層下層操 作,在圖4的實(shí)例中,即提交給卷管理層403操作。另外,當(dāng)命令部分命中虛擬緩存層時(shí),其流程圖參考圖6,包括如下步驟步驟601 當(dāng)對虛擬緩存層進(jìn)行讀寫命令操作時(shí),虛擬緩存層檢查訪問數(shù)據(jù)塊是 否全命中,如全命中,則執(zhí)行步驟606直接進(jìn)行讀寫操作;否則轉(zhuǎn)至步驟602 ;步驟602 判斷訪問數(shù)據(jù)塊是否部分命中虛擬緩存層,若是,執(zhí)行步驟603,否則轉(zhuǎn) 至步驟605提交到底層進(jìn)行操作。所謂部分命中,可以是如下情況讀寫命令對應(yīng)的數(shù)據(jù)塊首地址在虛擬緩存層存 儲(chǔ)的緩存塊地址對應(yīng)的緩存塊中,讀寫命令對應(yīng)的數(shù)據(jù)塊尾地址不在虛擬緩存層存儲(chǔ)的緩 存塊地址對應(yīng)的緩存塊中。步驟603 將命令拆分為兩個(gè)子命令,第一子命令全部命中虛擬緩存層,第二子命 令完全沒有命中虛擬緩存層;步驟604 判斷子命令是否為全部命中虛擬緩存層的子命令,若是,則轉(zhuǎn)至步驟 606直接根據(jù)該子命令對虛擬緩存層執(zhí)行讀寫操作,并向虛擬緩存層的上層返回操作結(jié)果, 否則,轉(zhuǎn)至步驟605。步驟605 將該命令或子命令提交虛擬緩存層的下層進(jìn)行進(jìn)一步操作。且將當(dāng)前 虛擬緩存層中的內(nèi)容更新為此命令或子命令所在的緩存塊首地址。然后結(jié)束本流程。步驟606 根據(jù)該命令或子命令對虛擬緩存層執(zhí)行讀寫操作,并向虛擬緩存層的 上層返回操作結(jié)果,然后結(jié)束本流程。參考圖7,當(dāng)前端協(xié)議驅(qū)動(dòng)層對虛擬緩存層進(jìn)行更新操作時(shí),執(zhí)行步驟701虛擬緩存 層檢查此更新操作對應(yīng)的數(shù)據(jù)塊是否不足一個(gè)緩存塊,如不足一個(gè)緩存塊,則執(zhí)行步驟702 更新虛擬緩存層塊,并通知緩存層標(biāo)記新緩存塊,釋放老緩存塊,以防緩存調(diào)度算法替換當(dāng)前 虛擬緩存層所指向的塊,而避免虛擬地址對應(yīng)數(shù)據(jù)失效的問題。否則不執(zhí)行任何操作。以上實(shí)施例中,虛擬緩存層設(shè)置在卷管理層和前端協(xié)議驅(qū)動(dòng)層之間。根據(jù)現(xiàn)有技 術(shù)中磁盤陣列的不同結(jié)構(gòu),虛擬緩存層放于前端協(xié)議驅(qū)動(dòng)層到緩存層之間的任何位置,如 前端協(xié)議驅(qū)動(dòng)層內(nèi)部,卷管理層內(nèi)部或緩存層內(nèi)部,也可獨(dú)立為一個(gè)模塊。本領(lǐng)域技術(shù)人員 可以推斷出,虛擬緩存層還可能設(shè)置在前端協(xié)議驅(qū)動(dòng)層和緩存層之間,或者卷管理層和緩 存層之間。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范 圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
一種數(shù)據(jù)讀寫方法,該方法應(yīng)用于包含前端協(xié)議驅(qū)動(dòng)層、卷管理層以及緩存層的磁盤陣列系統(tǒng),其特征在于,在磁盤陣列系統(tǒng)中設(shè)置虛擬緩存層,所述虛擬緩存層在前端協(xié)議驅(qū)動(dòng)層之下,且在緩存層之上,虛擬緩存層中存儲(chǔ)緩存層中的一個(gè)緩存塊地址;該方法包括如下步驟接收到來自前端協(xié)議驅(qū)動(dòng)層的讀寫命令,判斷該讀寫命令對應(yīng)的數(shù)據(jù)塊是否全部包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,若是,則對虛擬緩存層存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊進(jìn)行讀寫操作,并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;否則將該讀寫命令交給虛擬緩存層的下層進(jìn)行操作,并將當(dāng)前虛擬緩存層存儲(chǔ)內(nèi)容更新為該讀寫命令所對應(yīng)的緩存塊地址。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述讀寫命令為操作大小小于或等于一 個(gè)存儲(chǔ)塊的讀寫命令。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷的結(jié)果為讀寫命令對應(yīng)的數(shù)據(jù) 塊部分包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,則執(zhí)行如下步驟將所述讀寫命令拆分為第一子命令和第二子命令,所述第一子命令對應(yīng)的數(shù)據(jù)塊全部 包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,所述第二子命令對應(yīng)的數(shù)據(jù)塊不 包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中;根據(jù)第一子命令對虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊執(zhí)行讀寫操作,并將 操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;并將第二子命令交給虛擬緩存層的下層進(jìn)行操作。
4.一種磁盤陣列系統(tǒng),包含前端協(xié)議驅(qū)動(dòng)層、卷管理層以及緩存層,其特征在于,該磁 盤陣列系統(tǒng)還包括虛擬緩存層,所述虛擬緩存層在前端協(xié)議驅(qū)動(dòng)層之下,且在緩存層之上, 虛擬緩存層中存儲(chǔ)緩存層中的一個(gè)緩存塊地址,所述虛擬緩存層還包括接收模塊、判斷模塊,讀寫模塊、傳送模塊和更新模塊,接收模塊用于接收來自前端協(xié)議驅(qū)動(dòng)層的讀寫命令;判斷模塊,用于判斷接收模塊所接收的讀寫命令對應(yīng)的數(shù)據(jù)塊是否全部包含在虛擬緩 存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中;若是,由讀寫模塊對虛擬緩存層存儲(chǔ)的緩存塊地址對應(yīng)的緩存塊進(jìn)行讀寫操作,并將 操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;否則,由傳送模塊將該讀寫命令交給虛擬緩存層的下層,并由更新模塊將當(dāng)前虛擬緩 存層存儲(chǔ)內(nèi)容更新為該讀寫命令所對應(yīng)的緩存塊地址。
5.根據(jù)權(quán)利要求4所述的磁盤陣列系統(tǒng),所述虛擬緩存層位于前端協(xié)議驅(qū)動(dòng)層內(nèi)部, 卷管理層內(nèi)部或緩存層內(nèi)部。
6.根據(jù)權(quán)利要求4或5所述的磁盤陣列系統(tǒng),其特征在于,所述虛擬緩存層還包括拆分模塊,當(dāng)判斷模塊的判斷結(jié)果為所述讀寫命令對應(yīng)的數(shù)據(jù)塊部分包含在虛擬緩存 層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,則將該讀寫命令拆分為第一子命令和第二子命令, 所述第一子命令對應(yīng)的數(shù)據(jù)塊全部包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中, 所述第二子命令對應(yīng)的數(shù)據(jù)塊不包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中;所述讀寫模塊根據(jù)第一子命令對虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊執(zhí)行 讀寫操作,并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;所述傳送模塊將第二子命令交給虛擬緩存層的下層進(jìn)行操作。
全文摘要
本發(fā)明公開了一種應(yīng)用于磁盤陣列系統(tǒng)的數(shù)據(jù)讀寫方法,接收到來自前端協(xié)議驅(qū)動(dòng)層的讀寫命令,判斷該讀寫命令對應(yīng)的數(shù)據(jù)塊是否包含在虛擬緩存層中存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊中,若是,則對虛擬緩存層存儲(chǔ)的緩存塊地址對應(yīng)的數(shù)據(jù)塊進(jìn)行讀寫操作,并將操作結(jié)果返回至前端協(xié)議驅(qū)動(dòng)層;否則將該讀寫命令交給虛擬緩存層的下層進(jìn)行操作,并將當(dāng)前虛擬緩存層存儲(chǔ)內(nèi)容更新為該讀寫命令所對應(yīng)的緩存塊地址。本發(fā)明還公開了一種應(yīng)用該方法的磁盤陣列系統(tǒng)。本發(fā)明方案特別適用于連續(xù)多條命令操作同一個(gè)數(shù)據(jù)塊的情況,可以只進(jìn)行一次檢索而省略其他檢索過程,相對于現(xiàn)有技術(shù)可以極大提高讀寫速度。
文檔編號(hào)G06F3/06GK101840310SQ20091024359
公開日2010年9月22日 申請日期2009年12月25日 優(yōu)先權(quán)日2009年12月25日
發(fā)明者雷偉 申請人:創(chuàng)新科存儲(chǔ)技術(shù)有限公司;創(chuàng)新科軟件技術(shù)(深圳)有限公司