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