進一步地,所述查找模塊還用于,如果查找到,且數(shù)據(jù)塊的緩存狀態(tài)為臟,將其刷寫到磁盤上。
[0033]本發(fā)明提供了一種存儲系統(tǒng)數(shù)據(jù)寫時拷貝的處理方法和處理裝置,通過設(shè)置具有大小不同的多個數(shù)據(jù)塊的數(shù)據(jù)組織方式,并在采用寫時拷貝方式更新數(shù)據(jù)時對較大的數(shù)據(jù)塊進行拆分,實現(xiàn)了為寫入數(shù)據(jù)分配大小合適的數(shù)據(jù)塊。與現(xiàn)有技術(shù)定長塊數(shù)據(jù)組織方式相比,本發(fā)明不僅降低了數(shù)據(jù)寫時拷貝產(chǎn)生的寫懲罰,而且提升了存儲空間利用率;與現(xiàn)有技術(shù)變長塊數(shù)據(jù)組織方式相比,本發(fā)明不會出現(xiàn)嚴(yán)重的碎片化和性能降低。
[0034]本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
【附圖說明】
[0035]附圖用來提供對本發(fā)明技術(shù)方案的進一步理解,并且構(gòu)成說明書的一部分,與本申請的實施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對本發(fā)明技術(shù)方案的限制。
[0036]圖1為本發(fā)明存儲系統(tǒng)數(shù)據(jù)組織方式的示意圖;
[0037]圖2為本發(fā)明存儲系統(tǒng)數(shù)據(jù)寫時拷貝的處理方法的處理流程圖;
[0038]圖3a?圖3d為本發(fā)明存儲系統(tǒng)數(shù)據(jù)寫時拷貝的處理方法的示意圖;
[0039]圖4為本發(fā)明存儲系統(tǒng)數(shù)據(jù)寫時拷貝的處理裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0040]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0041]在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0042]圖1為本發(fā)明存儲系統(tǒng)數(shù)據(jù)組織方式的示意圖。本發(fā)明采用的數(shù)據(jù)組織方式是:以數(shù)據(jù)塊為單位,采用卷邏輯地址/池邏輯地址、池邏輯地址/磁盤物理地址的兩級地址映射,將不同大小的數(shù)據(jù)塊組織在一起。
[0043]如圖1所示,邏輯磁盤10、11和12分別被劃分為大小不同的多個數(shù)據(jù)塊,每個數(shù)據(jù)塊的大小為磁盤扇區(qū)大小的2的整數(shù)次冪倍,所有數(shù)據(jù)塊的最大值是用戶設(shè)定的存儲系統(tǒng)數(shù)據(jù)塊大小,邏輯磁盤10、11和12的下層物理設(shè)備可以是單塊物理磁盤、固態(tài)硬盤SSD或者多塊物理磁盤組成的磁盤陣列RAID。例如,用戶設(shè)定的存儲系統(tǒng)數(shù)據(jù)塊大小為64KB,則將64KB作為數(shù)據(jù)塊大小的最大值,邏輯磁盤中同時存在32KB、16KB、8KB和4KB等大小的數(shù)據(jù)塊。圖1所示數(shù)據(jù)組織方式中,數(shù)據(jù)塊101和102屬于邏輯磁盤10,數(shù)據(jù)塊111屬于邏輯磁盤11,數(shù)據(jù)塊121屬于邏輯磁盤12。其中,數(shù)據(jù)塊111大小是數(shù)據(jù)塊101和121大小的2倍,是數(shù)據(jù)塊102大小的4倍。
[0044]如圖1所示,存儲池20是存儲系統(tǒng)中將多個磁盤的物理地址空間組織成的地址連續(xù)的邏輯地址空間。圖1所示數(shù)據(jù)組織方式中,在存儲池20中,池邏輯塊201、202、203和204的池邏輯地址是連續(xù)的,但池邏輯塊大小不同,分別對應(yīng)于數(shù)據(jù)塊101、數(shù)據(jù)塊111、數(shù)據(jù)塊102和數(shù)據(jù)塊121的磁盤物理地址,即每個大小相同的池邏輯塊與數(shù)據(jù)塊對應(yīng)。實際使用中,存儲池20也可以是記錄磁盤物理地址到統(tǒng)一連續(xù)的邏輯地址的映射關(guān)系的元數(shù)據(jù)信息。
[0045]如圖1所示,邏輯卷30和31用于存儲系統(tǒng)提供上層應(yīng)用,邏輯卷30和31從存儲池20池邏輯地址空間中分配地址范圍,構(gòu)成邏輯卷內(nèi)的連續(xù)地址空間。圖1所示數(shù)據(jù)組織方式中,邏輯卷30中的卷邏輯塊301、302和邏輯卷31中的卷邏輯塊311和312,其卷內(nèi)地址是連續(xù)的,但卷邏輯塊大小不同,分別對應(yīng)于池邏輯塊201、203、202和204的池邏輯地址,即每個大小相同的卷邏輯塊與池邏輯塊對應(yīng)。
[0046]本發(fā)明提出了一種具有多個大小不同的數(shù)據(jù)塊的數(shù)據(jù)組織方式,不同大小的數(shù)據(jù)塊單獨進行管理,包括數(shù)據(jù)塊的分配、回收、創(chuàng)建/刪除地址映射、合并等操作,對于上層的寫1請求,可以根據(jù)待寫入數(shù)據(jù)的大小,分配最適合的數(shù)據(jù)塊,不僅可以降低寫時拷貝方式更新數(shù)據(jù)時引起的寫懲罰,而且可以減少空間浪費,同時不會產(chǎn)生較多的碎片。
[0047]圖2為本發(fā)明存儲系統(tǒng)數(shù)據(jù)寫時拷貝的處理方法的處理流程圖,圖3為本發(fā)明存儲系統(tǒng)數(shù)據(jù)寫時拷貝的處理方法的示意圖。本發(fā)明的設(shè)計構(gòu)思是,在采用寫時拷貝方式更新數(shù)據(jù)時,通過對較大的數(shù)據(jù)塊進行拆分,實現(xiàn)為寫入數(shù)據(jù)分配大小相匹配的數(shù)據(jù)塊,以降低數(shù)據(jù)寫時拷貝產(chǎn)生的寫懲罰,提升存儲空間利用率,且不會產(chǎn)生碎片化。如圖2和圖3所示,本發(fā)明存儲系統(tǒng)數(shù)據(jù)寫時拷貝的處理方法包括:
[0048]步驟11、提取數(shù)據(jù)塊的邏輯地址與待寫入數(shù)據(jù)塊的邏輯地址有重疊的數(shù)據(jù)塊。
[0049]當(dāng)待寫入數(shù)據(jù)塊的邏輯地址與數(shù)據(jù)塊的邏輯地址出現(xiàn)重疊時,該重疊可以是完全重疊,也可以是部分重疊,完全重疊是指待寫入數(shù)據(jù)塊的邏輯地址包含了數(shù)據(jù)塊的全部邏輯地址,部分重疊是指待寫入數(shù)據(jù)塊的邏輯地址僅包含數(shù)據(jù)塊的部分邏輯地址。
[0050]如圖3a所示,待寫入數(shù)據(jù)塊501的邏輯地址與數(shù)據(jù)塊601、602和603的邏輯地址有重疊。其中,待寫入數(shù)據(jù)塊501的邏輯地址包含了數(shù)據(jù)塊602的全部邏輯地址,屬于完全重疊,待寫入數(shù)據(jù)塊501的邏輯地址包含數(shù)據(jù)塊601和603的部分邏輯地址,屬于部分重置。
[0051]步驟12、判斷數(shù)據(jù)塊的重疊程度,提取重疊程度小的數(shù)據(jù)塊。
[0052]在數(shù)據(jù)塊完全重疊時,整體數(shù)據(jù)塊必須全部進行拷貝,不涉及數(shù)據(jù)復(fù)制量和內(nèi)存占用的考慮。在數(shù)據(jù)塊部分重疊時,如果數(shù)據(jù)塊重疊程度小,即數(shù)據(jù)塊的邏輯地址與待寫入數(shù)據(jù)的邏輯地址僅有小部分重疊,此時如果將整個數(shù)據(jù)塊全部進行拷貝,則會增加不必要的內(nèi)存占用和數(shù)據(jù)復(fù)制量,進而對性能造成影響。在數(shù)據(jù)塊部分重疊時,如果數(shù)據(jù)塊重疊程度大,即數(shù)據(jù)塊的邏輯地址與待寫入數(shù)據(jù)的邏輯地址是大部分重疊,此時將整個數(shù)據(jù)塊全部進行拷貝,雖會增加一定的內(nèi)存和數(shù)據(jù)復(fù)制量,但因?qū)π阅苡绊戄^小,仍可以采用整體數(shù)據(jù)塊全部進行拷貝的處理。
[0053]步驟13、將重疊程度小的數(shù)據(jù)塊拆分,直到拆分后的數(shù)據(jù)塊變成重疊程度大的數(shù)據(jù)塊。
[0054]本發(fā)明中,重疊程度大是指,重疊的邏輯地址范圍大于數(shù)據(jù)塊的邏輯地址范圍的二分之一,數(shù)據(jù)塊重疊程度小是指,重疊的邏輯地址范圍小于等于數(shù)據(jù)塊的邏輯地址范圍的二分之一。也就是說,如果數(shù)據(jù)塊的邏輯地址的重疊量比半個數(shù)據(jù)塊的邏輯地址還小的話,說明該數(shù)據(jù)塊存在拆分成2個數(shù)據(jù)塊的可能,拆分成2個數(shù)據(jù)塊后的其中I個數(shù)據(jù)塊存在重疊,如果拆分后的數(shù)據(jù)塊仍屬于重疊程度小的數(shù)據(jù)塊,則繼續(xù)拆分,直到拆分后的數(shù)據(jù)塊屬于重疊程度大的數(shù)據(jù)塊,即拆分后的數(shù)據(jù)塊不需要繼續(xù)拆分。對于重疊程度大的數(shù)據(jù)塊,如果將該數(shù)據(jù)塊拆分成2個數(shù)據(jù)塊,勢必使得拆分后的2個數(shù)據(jù)塊均存在重疊,因此不需要拆分。
[0055]如圖3b所示,對待寫入數(shù)據(jù)塊501進行寫時