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