用于存儲系統(tǒng)中的服務(wù)感知數(shù)據(jù)放置的方法和系統(tǒng)的制作方法
【專利說明】
【背景技術(shù)】
[0001]為了防止存儲系統(tǒng)中的數(shù)據(jù)的潛在丟失,實施復(fù)制方案常常是有利的。在寫入數(shù)據(jù)和奇偶校驗值時,現(xiàn)有的復(fù)制方案不考慮存儲系統(tǒng)的硬件服務(wù)調(diào)度。
【發(fā)明內(nèi)容】
[0002]一般地,在一個方面,本發(fā)明涉及一種包括當通過處理器被執(zhí)行時執(zhí)行方法的指令的非暫時性計算機可讀介質(zhì),該方法包括:接收指定目標存儲設(shè)備(SD)的服務(wù)通知;在接收服務(wù)通知之后,完成以下操作:接收將數(shù)據(jù)寫入到永久存儲器的請求,其中,永久存儲器包括SD ;響應(yīng)請求,將獨立磁盤冗余陣列(RAID)條帶寫入到永久存儲器,其中,RAID條帶包括第一數(shù)據(jù)塊和第一奇偶校驗塊,其中,第一數(shù)據(jù)塊中的至少一個包括數(shù)據(jù)的一部分,第一奇偶校驗塊包括通過使用第一數(shù)據(jù)塊計算的第一奇偶校驗值,并且,第一奇偶校驗塊不存儲于目標SD上,并且,第一數(shù)據(jù)塊均不存儲于目標SD上;執(zhí)行改進的垃圾收集操作,其中,改進的垃圾收集操作包括:標識永久存儲器中的活RAID條帶,其中,活RAID條帶包括N個第二數(shù)據(jù)塊和第二奇偶校驗塊,其中,活RAID條帶的至少一部分位于目標SD上;將新的RAID條帶寫入到永久存儲器中的新位置,其中,新的RAID條帶包括N-1個第三數(shù)據(jù)塊,N-1個第三數(shù)據(jù)塊中的至少一個包括第二數(shù)據(jù)塊中的至少一個中的數(shù)據(jù)的副本,新的RAID條帶包括第三奇偶校驗塊,第三奇偶校驗塊包括通過使用N-1個第三數(shù)據(jù)塊計算的第二奇偶校驗值,第三奇偶校驗塊不存儲于目標SD上,并且,N-1個第三數(shù)據(jù)塊均不存儲于目標SD上;和當完成改進的垃圾收集操作時,發(fā)出去除通知,其中,去除通知指示可從永久存儲器去除目標SD。
[0003]一般地,在一個方面,本發(fā)明涉及一種系統(tǒng),該系統(tǒng)包括:包括N+M個存儲設(shè)備(SD)的存儲陣列;和與存儲陣列可操作地連接并且被配置為完成以下操作的存儲控制器:標識用于去除的目標SD ;在標識作為多個SD中的一個的目標SD之后,完成以下操作:接收將數(shù)據(jù)寫入到存儲陣列的請求;響應(yīng)請求,將包括N-1個數(shù)據(jù)塊和M個奇偶校驗塊的獨立磁盤冗余陣列(RAID)條帶寫入到存儲陣列,其中,N-1個數(shù)據(jù)塊均不存儲于目標SD上,并且,M個奇偶校驗塊均不存儲于目標SD上;執(zhí)行改進的垃圾收集操作,其中,改進的垃圾收集操作包括:標識存儲陣列中的活RAID條帶,其中,活RAID條帶包括第二數(shù)據(jù)并且包括N個第二數(shù)據(jù)塊和M個第二奇偶校驗塊;將新的RAID條帶寫入到存儲陣列中的新位置,其中,新的RAID條帶包括N-1個第三數(shù)據(jù)塊和M個第三奇偶校驗塊,其中,N-1個第三數(shù)據(jù)塊中的至少一個包括N個第二數(shù)據(jù)塊中的至少一個中的數(shù)據(jù)的副本;和當完成改進的垃圾收集操作時,發(fā)出去除通知,其中,去除通知指示可從存儲陣列去除目標SD。
[0004]從以下的描述和所附的權(quán)利要求,本發(fā)明的其它方面將十分明顯。
【附圖說明】
[0005]圖1表不根據(jù)本發(fā)明的一個實施例的系統(tǒng)。
[0006]圖2表示根據(jù)本發(fā)明的一個或更多個實施例的RAID條帶。
[0007]圖3表示根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)結(jié)構(gòu)。
[0008]圖4表示根據(jù)本發(fā)明的一個或更多個實施例的實現(xiàn)RAID寫入操作的流程圖。
[0009]圖5表示根據(jù)本發(fā)明的一個或更多個實施例的用于實現(xiàn)服務(wù)感知數(shù)據(jù)放置的流程圖。
[0010]圖6表示根據(jù)本發(fā)明的一個或更多個實施例的用于實現(xiàn)改進的RAID寫入操作的流程圖。
[0011]圖7A-7B表示根據(jù)本發(fā)明的一個或更多個實施例的用于實現(xiàn)改進的垃圾收集操作的流程圖。
[0012]圖8A-8B表不根據(jù)本發(fā)明的一個或更多個實施例的例子。
【具體實施方式】
[0013]現(xiàn)在參照附圖詳細描述本發(fā)明的具體實施例。在本發(fā)明的實施例的以下詳細描述中,為了使得能夠更徹底地理解本發(fā)明,闡述大量的特定細節(jié)。但是,對于本領(lǐng)域技術(shù)人員來說,很顯然,可以在沒有這些具體細節(jié)的情況下實施本發(fā)明。在其它情況下,為了避免不必要地使描述復(fù)雜化,沒有描述公知的特征。
[0014]在圖1?SB的以下描述中,在本發(fā)明的各種實施例中針對附圖描述的任何組件可以與針對任何其它附圖描述的一個或更多個名稱類似的組件等同。為了簡便起見,對這些組件的描述并不針對每個附圖進行重復(fù)。因此,各附圖的組件的每一個實施例通過引用被并入,并且被假定為可選地存在于具有一個或更多個名稱類似的組件的每一個其它附圖中。另外,根據(jù)本發(fā)明的各種實施例,附圖的組件的任何描述要被解釋為可選實施例,該可選實施例的實施可以附加于、結(jié)合于或者替代針對其他任意附圖中相應(yīng)的名稱類似組件所描述的實施例。
[0015]一般地,本發(fā)明的實施例涉及通過使用RAID方案在存儲陣列中存儲數(shù)據(jù)。具體而言,RAID方案使用關(guān)于在確定新的和活RAID條帶的RAID條帶幾何結(jié)構(gòu)時被去除和/或替代的存儲設(shè)備的信息。
[0016]對于本發(fā)明,這里使用的術(shù)語“RAID”指的是“獨立磁盤冗余陣列”。雖然“RAID”指的是獨立磁盤的任何陣列,但可通過使用任何類型的永久性存儲設(shè)備實現(xiàn)本發(fā)明的實施例。
[0017]圖1表示根據(jù)本發(fā)明的一個實施例的系統(tǒng)。如圖1所示,系統(tǒng)包括一個或更多個客戶機(100A、100M)、RAID控制器(104)、存儲器(106)、可選的現(xiàn)場可編程門陣列(FPGA)
(102)和存儲陣列(108)。
[0018]在本發(fā)明的一個實施例中,客戶機(100A、100M)是包括向RAID控制器(104)發(fā)出讀取請求或?qū)懭胝埱蟮墓δ艿娜魏蜗到y(tǒng)或任何在這種系統(tǒng)上執(zhí)行的處理。在本發(fā)明的一個實施例中,每個客戶機(100A、100M)可包括處理器(未示出)、存儲器(未示出)和永久存儲器(未示出)。在本發(fā)明的一個實施例中,RAID控制器(104)被配置為實現(xiàn)RAID方案,該RAID方案包括以與在圖4?7中描述的實施例一致的方式將數(shù)據(jù)寫入到存儲陣列(108),和根據(jù)在圖7中描述的實施例執(zhí)行垃圾收集操作。進一步地,RAID控制器包括從存儲陣列
(108)讀取數(shù)據(jù)(包括重構(gòu)數(shù)據(jù))的功能。在本發(fā)明的一個實施例中,RAID控制器(104)包括被配置為執(zhí)行用于實現(xiàn)本發(fā)明的一個或更多個實施例的指令的處理器,其中,指令存儲于位于RAID控制器(104)內(nèi)或者與其可操作地連接的非暫時性計算機可讀介質(zhì)(未示出)上。作為替代方案,可通過使用硬件實現(xiàn)RAID控制器(104)。本領(lǐng)域技術(shù)人員可以理解,可通過使用軟件和/或硬件的任意組合實現(xiàn)RAID控制器(104)。
[0019]在本發(fā)明的一個實施例中,RAID控制器(104)與存儲器(106)可操作地連接。存儲器(106)可以是任何易失性存儲器,包括但不限于動態(tài)隨機存儲器(DRAM)、同步DRAM、SDRSDRAM和DDR SDRAM。在本發(fā)明的一個實施例中,存儲器(106)被配置為在各種數(shù)據(jù)(包括奇偶校驗數(shù)據(jù))被存儲于存儲陣列中之前暫時存儲這些數(shù)據(jù)。
[0020]在本發(fā)明的一個實施例中,F(xiàn)PGA(102)(如果存在的話)包括出于在存儲陣列
(108)中存儲數(shù)據(jù)的目的計算奇偶校驗值(例如,P奇偶校驗值、Q奇偶校驗值)的功能,和/或執(zhí)行恢復(fù)通過使用RAID方案存儲的損壞數(shù)據(jù)所需要的各種計算的功能。根據(jù)本發(fā)明的一個或更多個實施例,RAID控制器(104)可使用FPGA(102)以卸載各種數(shù)據(jù)的處理。
[0021]在本發(fā)明的一個實施例中,存儲陣列(108)包括一個或更多個存儲設(shè)備(SDD)(110AU10B)?各存儲設(shè)備包括永久存儲介質(zhì)。存儲設(shè)備的例子包括但不限于磁存儲設(shè)備、光學存儲設(shè)備、相變存儲設(shè)備、固態(tài)存儲設(shè)備、帶驅(qū)動、任何其它適當類型的永久存儲設(shè)備或它們的任意組合。
[0022]本領(lǐng)域技術(shù)人員可以理解,雖然圖1表示FPGA,但可以在沒有FPGA的情況下實現(xiàn)本發(fā)明。并且,本領(lǐng)域技術(shù)人員可以理解,在不背離本發(fā)明的情況下,可以使用其它的組件以替代FPGA。例如,可通過使用下列設(shè)備來實現(xiàn)本發(fā)明:專用集成電路(ASIC)、圖形處理單元(GPU)、通用處理器、能夠出于在存儲陣列中存儲數(shù)據(jù)的目的計算奇偶校驗值和/或執(zhí)行恢復(fù)通過使用RAID方案存儲的損壞數(shù)據(jù)所需要的各種計算的任何其它硬件設(shè)備、包括被配置為出于在存儲陣列(108)中存儲數(shù)據(jù)的目的計算奇偶校驗值和/或執(zhí)行恢復(fù)通過使用RAID方案存儲的損壞數(shù)據(jù)所需要的各種計算的硬件、固件和/或軟件的組合的任何設(shè)備或它們的任意組合。
[0023]本領(lǐng)域技術(shù)人員可以理解,本發(fā)明不限于圖1所示的配置。
[0024]圖2表示根據(jù)本發(fā)明的一個或更多個實施例的RAID條帶。各RAID條帶包括數(shù)據(jù)塊和奇偶校驗塊。數(shù)據(jù)塊與位于包括數(shù)據(jù)(與奇偶校驗值相對)的存儲設(shè)備上的RAID條帶的一部分對應(yīng)。奇偶校驗塊與位于包括RAID條帶的奇偶校驗值(或奇偶校驗值中的一個)的存儲設(shè)備上的RAID條帶的一部分對應(yīng)。各RAID條帶包括數(shù)據(jù)塊和一個或更多個