新四季網

具有raid1類型的raid組的存儲裝置以及向raid1類型的raid組的寫入的控制方法

2023-04-28 15:47:11

專利名稱:具有raid1類型的raid組的存儲裝置以及向raid1類型的raid組的寫入的控制方法
技術領域:
本發明涉及存儲控制裝置,特別是涉及向RAIDl類型的RAID (Redundant Arrayof Independent (or Inexpensive) Disks)組的寫入的控制。
背景技術:
存儲裝置(例如磁碟陣列裝置)一般具有多個HDD(硬碟驅動器Hard Disk Drive)和用於控制向多個HDD的訪問的控制器(以下將磁碟控制器簡稱為「DKC」)。在這種存儲裝置中通常有由多個HDD構成的一個以上的RAID組。DKC按照RAID組的RAID等級訪問RAID組。作為RAID等級,例如有RAID I (專利文獻I)。應用了 RAIDl的RAID組由主HDD和鏡像HDD構成。DKC從主裝置接收寫對象數據,將寫對象數據二重化。然後,DKC將二重化後的數據中的一方的數據寫入到一方的HDD (以下稱為主HDD),將另一方的數據寫入到另一方的HDD (以下稱為鏡像HDD)。現有技術文獻專利文獻專利文獻I :日本特開2009-217519號公報

發明內容
發明要解決的問題一般來說,HDD提供的存儲區域由多個子存儲區域(以下稱為「塊」)構成,以塊大小單位將數據寫入到HDD中。根據HDD的種類,有時HDD的寫入單位的大小與針對HDD的寫入對象數據的單位大小不同。例如,作為HDD 有 SATA (Serial ATA (Advanced Technology Attachment))_HDD。如圖IA所示,SATA-HDD的寫入單位(I個塊ElO的大小)是512B (字節)。如圖IB所示,這與來自主裝置的一個數據要素DlO的大小(512B)相同(來自主裝置的寫入對象數據由一個以上的數據要素構成,圖示的數據要素DlO是這些一個以上的數據要素中的一個)。但是,如圖IB所示,DKC從提高可靠性的觀點出發,向數據要素DlO附加保證碼(例如ECC (Error Correcting Code))Dll。保證碼Dll的大小例如是8B (字節)。由此,生成520B的數據集(dataset)Dl。因此,DKC寫入到SATA-HDD的數據集Dl的大小(寫入對象數據的單位大小)比SATA-HDD的寫入單位的大小(I個塊的大小)大8B的量。因此,數據集Dl沒有被收納在SATA-HDD的一個塊中,如圖2A所示,跨越兩個塊ElO 以及 E11。在這種情況下,為了以SATA-HDD的寫入單位寫入數據,如圖2B所示,需要通過對數據集Dl附加數據,生成與成為數據集Dl的寫入目的地的兩個塊ElO以及Ell的合計大 小相同的數據大小的數據單元F1。為了生成該數據單元Fl,DKC進行下面的處理。
(*)DKC將塊ElO中的、在沒有被寫入數據集Dl的部分存儲的開頭側的數據El讀出,將該數據El附加到數據集Dl的開頭。(*)DKC將塊Ell中的、在沒有被寫入數據集Dl的部分存儲的末端側的數據E2讀出,將該數據E2附加到數據集Dl的末端。 S卩,為了生成數據單元F1,從SATA-HDD的讀出最多需要2次。這存在提高了 DKC以及SATA-HDD的各自的負荷的問題。並且,在由SATA-HDD構成RAID組,並且RAID等級為RAIDl的情況下該問題特別大。這是因為最多兩次的讀出是針對兩個HDD (主HDD和鏡像HDD)的各自來進行的。以下進行具體說明。另外,在以下的說明中,為了方便,將為了生成數據單元而讀出並附加到數據集的數據稱為「附加數據」。如圖3所示,存儲裝置IA具有RAID組20和DKC10。DKClO具有前端接口裝置(FE-IF)Il和高速緩衝存儲器12。FE-IF是針對主裝置30的通信接口裝置。RAID組20其RAID等級是RAIDl,因此是主HDD21和鏡像HDD22的對。HDD21以及22都是SATA-HDD。如圖3的箭頭a所示,FE-IF 11從主裝置30接收數據要素。該數據要素被存儲在高速緩衝存儲器12中。DKClO通過對該數據要素附加保證碼(例如ECC),生成數據集Dl。然後,DKClO如圖3的箭頭bl以及b2所示,生成兩個數據集Dl的副本。S卩,生成主(master)用數據集D2和鏡像(mirror)用數據集D3。然後,DKClO針對主HDD21以及鏡像HDD22的各個進行兩次讀出,即進行合計四次的讀出。具體來說,如圖3的箭頭Cl以及c2所示,DKClO從主HDD21讀出附加數據El以及E2,將讀出的附加數據El以及E2加到主用數據集D2。由此生成主用數據單元Fl。此外,如圖3的箭頭c3以及c4所示,DKClO從鏡像HDD22讀出附加數據E3以及E4,並將讀出的附加數據E3以及E4加到鏡像用數據集D2。由此,生成鏡像用數據單元F2。DKClO如圖4的箭頭dl所示,將生成的數據單元Fl寫入主HDD21,並且如圖4的箭頭d2所示,將生成的數據單元F2寫入鏡像HDD22。根據上述的流程,如上所述最多進行四次讀出。當數據的讀出次數多時,SATA-HDD以及DKClO的雙方的負荷變大。於是,存儲裝置I的處理性能下降。這種情況並不限於RAID1,對於RAIDl類型以外的RAID等級也可能存在。例如在RAIDlO (也被稱為「RAID1+0」)的情況下,在一個RAID組中存在多個主HDD和鏡像HDD的組,因此,與RAIDl的情況相比,認為上述問題的影響更大。此外,上述問題不限於SATA-HDD,對於寫入單位與作為寫入對象的數據的單位大小不同的其它種類的物理存儲設備也可能存在。因此,本發明的目的在於提高寫入對象數據的單位大小和構成RAIDl類型的RAID組的物理存儲設備的寫入單位的大小不同的存儲裝置的處理性能。用於解決課題的手段存儲裝置具備由多個物理存儲設備構成的RAID (Redundant Array ofIndependent (or Inexpensive) Disks)組、和按照 RAID 組的 RAID 等級來控制向 RAID 組的數據寫入以及從RAID組的數據讀出的控制器。RAID組是具有一個以上第一存儲設備和第二存儲設備的對的RAIDl類型的RAID組。寫入對象數據的單位大小與存儲設備的寫入單位的大小不同。存儲設備提供的存儲區域由多個存儲塊構成。各存儲塊的大小與存儲設備的寫入單位的大小相同。控制器從第一存儲設備中的、包含寫入對象數據的寫入目的地的第一存儲塊群的全部區域讀出數據。控制器根據寫入對象數據和作為該讀出的數據的緩衝數據生成一個以上數據單元,該數據單元由寫入對象數據或者其副本和緩衝數據部分或其副本構成,是與第一存儲塊群相同大小的數據。控制器將一個以上的數據單元中的某一個數據單元寫入第一存儲設備中的第一存儲塊群,並且將一個以上的數據單元中的某一個數據單元寫入第二存儲設備中的、與第一存儲塊群對應並與其大小相同的第二存儲塊群。寫入對象數據,例如可以是對來自主裝置的數據附加了其他數據(例如保證碼)的數據,也可以是來自主裝置的數據本身。主裝置是存儲裝置的外部的裝置。


圖IA是表示構成HDD的一個塊的大小的圖。圖IB是表示DKC寫入到HDD的數據 集的大小的圖。圖2A表示DKC寫入到HDD的數據集的大小比一個塊的大小大。圖2B是用於說明為了生成與兩個塊的合計大小相同大小的數據單元而進行的現有處理的圖。圖3表示針對RAIDl的RAID組的現有的寫入處理的一部分。圖4表示上述現有的寫入處理的剩餘部分。圖5表示在本發明的一個實施例中針對RAIDl的RAID組進行的寫入處理的第一部分。圖6表示本實施例的上述寫入處理的第二部分。圖7表示本實施例的上述寫入處理的第三部分。圖8表示本實施例的上述寫入處理的剩餘部分。圖9表示本實施例的計算機系統的結構。圖IOA表不段和段表的關係。圖IOB表不段表的結構。圖11是表示當將連續的多個520B的高速緩衝存儲塊和連續的多個512B的SATA塊並排排列時每32kB邊界一致的圖。圖12A表示段群W中的段群W中的中間髒數據的配置的第一例。圖12B表示段群W中的段群W中的中間髒數據的配置的第二例。圖12C表示段群W中的中間髒數據的配置的第三例。圖12D表示段群W中的中間髒數據的配置的第四例。圖12E表示段群W中的中間髒數據的配置的第五例。圖13A表示與圖12A所示的例子對應的緩衝數據讀出。圖13B表示與圖12B所示的例子對應的緩衝數據讀出。圖13C表示與圖12C所示的例子對應的緩衝數據讀出。圖13D表示與圖12D所示的例子對應的緩衝數據讀出。圖13E表示與圖12E所示的例子對應的緩衝數據讀出。圖14是表示本實施例的針對RAIDl的RAID組的寫入處理流程的一部分的流程圖。圖15是表示本實施例的所述寫入處理的剩餘部分的流程圖。圖16表示圖14以及圖15的流程圖的步驟40廣411中的各步驟的段表。圖17表示圖12的流程圖的步驟412 416中的各步驟的段表。圖18是高速緩存間複製的說明圖。
具體實施方式
以下說明本發明的一個實施例。此外,在實施例中為了容易理解說明而採用了下述的例子。(*)物理存儲裝置是HDD。控制器是用於控制對HDD的訪問的磁碟控制器(以下稱為 DKC)。(*) RAID組的RAID等級是RAIDl。RAID組是主HDD以及鏡像HDD的對。 (* )主HDD以及鏡像HDD各自是SATA-HDD。(*)將構成由SATA-HDD提供的存儲區域的各子存儲區域稱為「塊」。(*)塊的大小是512B (字節)。(*)構成由DKC從主裝置接收到的數據的各數據要素的大小是512B (字節)。數據要素的大小是從主裝置提供給存儲裝置的數據的最小的大小。(*)保證碼(例如 ECC (Error Correcting Code)的大小是 8B (字節)。在本實施例中,在針對RAIDl的RAID組的寫入處理中,可以不需要從主HDD以及鏡像HDD中的一方的數據的讀出,並且能夠將從RAID組的數據的讀出的次數設為最多I次。以下,參照圖5 圖8說明該寫入處理的概要。此外,在以下的說明中,設本實施例的存儲裝置IB內的DKC100具有高速緩衝存儲器120,高速緩衝存儲器120由多個段(segment)構成,將存儲與主裝置300交換的數據的段的屬性稱為寫入(write)面(以下稱為W面),將存儲與主HDD210以及鏡像HDD220交換的數據的段的屬性稱為讀出(read)面(以下稱為R面)。此外,假設DKC100從主裝置300接收到的數據由一個數據要素構成。首先,DKC100如圖5的箭頭a01所示,從主裝置300接收寫入請求以及該寫入要求所附帶的數據要素D21。DKC100如箭頭alO所示,將來自主裝置300的數據要素D21存儲在段中(存儲了數據要素D21的段的屬性成為W面)。然後,DKC100如圖5的箭頭a02所示,向主裝置300發送應答(例如寫入結束)。然後,DKC100對所存儲的數據要素D21追加保證碼(例如ECC( (Error CorrectingCode))D22,生成數據集D20。數據集D20的大小是520B (521B+8B)。數據集D20是作為寫入對象的數據。然後,DKC100如圖5的箭頭blO所示,從主HDD210 (或者鏡像HDD220)中的、包含數據集D20的寫入目的地的塊群(在此為兩個塊)的全部區域中讀出數據E20,將該數據E20存儲到段中(存儲了數據E20的段的屬性成為R面)。從HDD的數據的讀出僅為這一次。以下,將從HDD讀出到高速緩衝存儲器120的數據稱為「緩衝數據(staging data)」。然後,DKClOO如圖6的箭頭clO所示,將數據集D20寫入到緩衝數據E20上,並且如圖6的箭頭cll所示,將數據集D20複製到其他段。根據圖6,為了區別原始數據集D20和數據集D20的副本,對作為數據集D20的副本的數據集分別賦予參照符號D30、D40。存儲了數據集D40的段的屬性成為R面。因為是與HDD交換數據集D40。通過在緩衝數據E20上重寫數據集D20而生成的數據單元FlO是主HDD210用的數據。DKC100如圖7的箭頭dlO以及dll所示,將數據單元FlO中的緩衝數據部分E21以及E22加到數據集D40中。由此生成鏡像HDD220用數據單元F20。數據單元F20是與數據單元FlO —致的數據。
然後,DKClOO如圖8的箭頭elO所示,將數據單元FlO寫入主HDD210,如圖8的箭頭ell所示,將數據單元F20寫入鏡像HDD220。如上所述,在按照本實施例的對RAIDl的RAID組的寫入處理中,不需要從主HDD210以及鏡像HDD22中的一方讀出數據,並且從RAID組200的數據的讀出次數最多為一
次即可。在上述的寫入處理中,數據單元F20可以是數據單元FlO的副本,但是理想的是如上述那樣進行生成。這是因為在複製數據單元FlO時發生任何故障的情況下,生成的數據單元F20有可能成為與數據單元FlO不同的數據。此外,在上述的寫入處理中,緩衝數據E20 (讀出源的塊群)的大小是數據集Dl的大小以上,並且是SATA-HDD的寫入單位的大小的倍數即可,但是優選是在該範圍內最小的大小。這是為了抑制高速緩衝存儲器120的消耗。在上述的例子中,數據集Dl是512B,因此緩衝數據E20的大小優選是1024B (512BX2)。數據單元FlO以及F20的大小優選與緩衝數據E20的大小相同。數據單元FlO的寫入目的地是緩衝數據E20的讀出源的塊群。數據單元F20的寫入目的地是與讀出源的塊群對應的塊群(例如是與讀出源的塊群相同地址的塊群)。然後,參照圖 Γ圖18 (根據需要也參照圖5 圖8)詳細說明本實施例。圖9表示具有本實施例的存儲裝置IB的計算機系統的結構。存儲裝置IB具備二重化的DKC100、HDD群900。在存儲裝置IB上連接了作為存儲裝置IB的外部裝置的一種的、用於發行I/O (Input/Output)請求的主裝置300。DKC100具有FE-IF (前端接口裝置)110、高速緩衝存儲器120、CPU130、本地存儲器140和BE-IF (後端接口裝置)150。FE-IFllO以及BE-IF150是用於DKC100與外部的裝置進行數據等的交換的通信接口裝置。FE-IFllO與主裝置300通信,BE-IF150與HDD通信。高速緩衝存儲器120是用於臨時存儲讀寫到HDD的數據的存儲器。高速緩衝存儲器120彼此共享一部分數據。本地存儲器140存儲控制所需的信息(以下稱為管理信息)、電腦程式。CPU130執行本地存儲器140存儲的程序,根據管理信息進行存儲裝置IB的控制。由HDD群900構成一個以上的RAID組。至少一個RAID組是RAID組200,即RAIDl的RAID組。此外,本發明不限於RAID1,也可以應用於數據被二重化地寫入的類型的其它種類的RAID等級(即RAIDl類型以外的種類的RAID等級)。圖IOA表示高速緩衝存儲器120的結構和本地存儲器140存儲的信息。高速緩衝存儲器120由多個段121構成。本地存儲器140存儲多個段表(以下稱為SG表)141。段121和SG表141——對應。SG表141具有與其對應的段121相關的信息。此外,也可以代替針對每個段121具有SG表141,而由一個表具有多個記錄,各記錄與一個段121對應。此外,與多個段121相關的信息可以表現為表以外的形式。圖IOB表不若干SG表141的結構。SG表141例如具有下述信息。此外,在參照圖IOB的說明中著眼於一個SG表141,並且將與該SG表141對應的段稱為「對象段」。(*)數據140a是表示存儲在對象段121中的數據的屬性的信息,
(*)數據140b是表示在對象段121內的哪個位置存在數據(具體來說,對象段120內的從哪裡到哪裡是針對HDD的輸入輸出對象數據)的信息,(*)隊列140c是表示管理對象段121的隊列的信息,(*)屬性140d是表示對象段121的屬性的信息,(*)標誌140e是表示對象段121內的數據是否存在於與具有該對象段121的高速 緩衝存儲器120不同的別的高速緩衝存儲器120中的信息。作為數據140a的值(換言之,對象段121內的數據),有「中間髒數據」、「緩衝數據」、「物理髒數據」。「中間髒數據」是存在於高速緩衝存儲器120中而不存在於HDD中的數據(髒數據)的一種,是還沒有被寫入到HDD的狀態的數據。具體來說,「中間髒數據」例如是所述數據集(512B的數據要素和SB的保證碼的集合)。「緩衝數據」如前所述,是從HDD被讀出到高速緩衝存儲器120的數據。「物理髒數據」是髒數據的一種,是寫入到HDD的良好的狀態的數據。在本實施例中所說的「隊列」雖然未圖示,但是例如是多個條目(entry)按照預定的順序排列的信息。各條目與段對應,具有與對應的段有關的信息。條目的順序例如是新存儲了數據的時刻的順序。在本實施例中,作為隊列例如有中間髒隊列、乾淨隊列、空閒(free)隊列、物理髒隊列。中間髒隊列由存儲了中間髒數據的段所對應的條目構成。乾淨隊列由存儲了乾淨數據的段所對應的條目構成。作為乾淨數據的一種,有緩衝數據。空閒隊列由空閒的段所對應的條目構成。物理髒隊列由存儲了物理髒數據的段所對應的條目構成。關於標誌140e,開(ON)(例如「I」)表示在別的高速緩衝存儲器120中也存在對象段121內的數據,關(OFF)(例如「O」)表示在別的高速緩衝存儲器120中不存在對象段121內的數據。在寫入處理中,從高速緩衝存儲器120中確保段群(一個以上的段),向所確保的段群中寫入數據,但是所確保的段群的大小是寫入對象數據的單位大小和SATA-HDD的寫入單位的大小的公倍數,優選是最小公倍數。具體來說,寫入對象數據的單位大小是520B,SATA-HDD的寫入單位的大小是512B,因此,所確保的段群的大小是520B和512B的最小公倍數、即32kB (千字節)。因此。例如如果段的大小是4kB,則確保8個段,如果段的大小是8kB,則確保4個段(以下假設段的大小是8kB)。如上所述,通過確保32kB (最小公倍數的大小)的段群並以段群單位進行處理,能夠期待不需要從HDD讀出緩衝數據的情形(即能夠將讀出次數設為O)。關於這點,參照圖11進行詳細說明。如圖11所示,各段由多個520B的高速緩衝存儲塊構成。在一個高速緩衝存儲塊中存儲520B的數據集(512B的數據要素和SB的保證碼的集合)。在假設將連續的多個高速緩衝存儲塊和連續的多個SATA塊(SATA-HDD的塊)開頭對齊來進行排列的情況下,每32kB高速緩衝塊的邊界和SATA塊的邊界一致。此外,32kB是作為SATA-HDD的寫入單位的大小的512B的倍數。因此,在作為寫入對象的數據的大小是32kB的情況下,能夠按照SATA-HDD的寫入單位寫入作為寫入對象的數據。因此,如果將數據集(520B的中間髒數據)存儲到32kB的量的全部的高速緩衝存儲塊中(即如果從32kB的段群的開頭到末端,中間髒數據連續),則作為寫入對象的數據是32kB的數據(由連續的64個數據集構成的數據),因此,能夠不從HDD讀出緩衝數據地完成
寫入處理。如上所述,如果以32kB單位來確保段群,則能夠期待不需要從HDD的讀出的情況。此外,所確保的段群的大小可以是32kB以外的512B和520B的公倍數,但是從抑制高速緩衝存儲器120的消耗的觀點出發,優選是最小公倍數。以下,參照圖12A 圖12F以及圖13A 圖13F,說明32kB的段群中的數據集的配置例和緩衝數據的範圍的關係。此外,在圖12A 圖12F以及圖13A 圖13F中畫陰影線的對 象表示中間髒數據(一個以上的數據集),用灰色塗抹的對象表示緩衝數據或其一部分。根據圖12A所示的例子,在32kB的段群的全部區域中存在連續的中間髒數據D200。在這種情況下,如上所述,因為不需要讀出緩衝數據,所以不讀出緩衝數據(參照圖13A)。根據該例,連續的中間髒數據D200是寫入到HDD的數據單元F200。根據圖12B以及圖12C所示的例子,連續的中間髒數據在段群的開頭以及末端的一方的邊界處重合,但是在另一方的邊界不重合。具體來說,根據圖12B所示的例子,連續的中間髒數據D210在段群的末端的邊界處不重合,但是在該段群的開頭的邊界處重合。在這種情況下,讀出比連續的中間髒數據D210大的大小的緩衝數據E210 (參照圖13B),生成寫入到HDD的數據單元F210,但是,在該數據單元F210中成為在連續的中間髒數據D220的末端附加了緩衝數據部分E211的狀態。此外,根據圖12C所示的例子,連續的中間髒數據D220在32kB的段群的開頭的邊界處不重合,但是在該段群的末端的邊界處重合。在這種情況下,讀出比連續的中間髒數據D220大的大小的緩衝數據E220 (參照圖13C),生成寫入到HDD的數據單元F220,但是在該數據單元F220中成為在連續的中間髒數據D220的開頭附加了緩衝數據部分E221的狀態。根據圖12D所示的例子,連續的中間髒數據D230在段群的開頭以及末端的任意邊界都不重合。在這種情況下,讀出比連續的中間髒數據D230大的大小的緩衝數據E230(參照圖13D),生成寫入到HDD的數據單元F230,但是在該數據單元F230中成為在連續的中間髒數據D230的開頭以及末端附加了緩衝數據部分E231以及E232的狀態。根據圖12E以及圖12F所示的例子,在段群中中間髒數據成為不連續。在這種情況下,不針對每個中間髒數據讀出比中間髒數據大的緩衝數據,而是讀出從開頭的中間髒數據的開頭到末端的中間髒數據的末端的範圍以上的大小的緩衝數據。這是為了將讀出次數設為最多一次。因此,根據圖12E的例子,讀出比從開頭的中間髒數據D240的開頭到末端的中間髒數據D241的末端的範圍大的緩衝數據E240 (參照圖13E)。根據中間髒數據240以及D241和緩衝數據E240,生成寫入到HDD的數據單元F240。此外,根據圖12F的例子,開頭的中間髒數據D250的開頭與段群的開頭的邊界一致,末端的中間髒數據D252的末端與段群的末端的邊界一致。因此,讀出32kB的緩衝數據E250 (參照圖13F)。根據中間髒數據D250、D251以及D252和緩衝數據E250生成寫入到HDD的數據單元F241。如此,在段群中中間髒數據不連續的情況下,讀出從開頭的中間髒數據的開頭到末端的中間髒數據的末端的範圍以上的大小的緩衝數據。在寫入到HDD的數據單元F240、F250中,成為用緩衝數據部分填滿中間髒數據的狀態。構成上述的段群(32kB)的四個段(SkB)在高速緩衝存儲器120中未必連續。例如可以確保在高速緩衝存儲器120中分散的四個段作為段群。然後,參照圖14 圖17,說明針對RAIDl的RAID組的寫入處理中的中間匯總寫入處理的詳細的流程。中間匯總寫入處理是生成數據集(來自主裝置300的數據要素(512B)和保證碼(SB)的組)後直到將數據單元寫入到HDD的處理。圖14以及圖15表示中間匯總寫入處理的流程。此外,以下為了容易理解說明,將存儲在一個W面的段中的中間髒數據作為寫入對象。CPU130針對多個中間髒隊列的各個中間髒隊列檢查中間髒數據的量,決定將哪個中間髒隊列作為處理對象(步驟401)。例如將判斷為中間髒數據的量最多的中間髒隊列(例如具有最多條目的中間髒隊列)決定為處理對象。中間髒隊列,例如位於每個預定單位(例如每個HDD、或者每個邏輯分割高速緩衝存儲器120所得的區域(分區))中。然後,CPU130確定通過在步驟401決定的中間髒隊列管理的中間髒數據中的、最以前存儲在高速緩衝存儲器120中的中間髒數據(步驟402)。存儲在此確定的中間髒數據的段#1所對應的SG表#1,在步驟401階段如圖16的行#1所示那樣,在步驟402階段如圖16的行#2所示那樣。然後,CPU130確保包含段#1的32kB的段群(步驟403)。以下將在此確保的段群表記為「段群W」。對所確保的段群W進行排他控制使得不寫入數據。在該階段的SG表#1如圖16的行#3所示那樣。構成段群W的其它的段可以是任何的段。例如可以是存儲了在步驟402中沒有被確定的中間髒數據的段。此外,在成為寫入對象的中間髒數據的大小大於32kB的情況下,可以確保2個以上的32kB的段群。然後,CPU130將表示物理髒預約數的信息例如登錄到本地存儲器140中(步驟404)。具體來說,CPU130將中間髒段(在段群W中存儲了中間髒數據的段)的數量的兩倍的值設為物理髒預約數。將中間髒段的數量設為兩倍的理由是包含中間髒數據的副本的數據單元即將被作為物理髒數據管理、以及生成兩個中間髒數據的副本(關於主HDD210和鏡像HDD220兩者而生成)。CPU130對物理髒預約數和已經存在物理髒數據的段的數進行合計,在其合計超過一定值的情況下可以中止生成物理髒數據的動作。此外,該步驟404中的SG表#1如圖16的行#4所示那樣。然後,CPU130判定寫入對象的中間髒數據的寫入目的地的RAID組的RAID等級(步驟405)。該步驟405中的SG表#1如圖16的行#5所示那樣。在RAID等級不是RAIDl類型的情況下(步驟405 :否),CPU130按照RAID等級處理中間髒數據(步驟406)。在RAID等級是RAIDl類型的情況下(步驟405 :是),CPU130判斷是否需要緩衝數據(步驟407)。該步驟407中的SG表#1如圖16的行#6所示那樣。步驟407的判斷的結果,如果連續的中間髒數據佔據了段群W的全部區域(參照圖12A),則成為否定(步驟407 :否),除此以外成為肯定(步驟407 :是)。
CPU130在需要緩衝數據的情況下(步驟407 :是),從高速緩衝存儲器120中確保用於存儲緩衝數據的段群(以下稱為段群Rl)(步驟408)。該步驟408中的SG表#1如圖16的行#7所示那樣。在行#7中除了 SG表#1外,還表示了段群Rl中的一個段#2所對應的SG表#2 (步驟408中的SG表#2)。此外,CPU130在無法確保段群Rl的情況下,中止緩衝數據的讀出。
然後,CPU130根據中間髒數據的狀態決定主HDD210 (或者鏡像HDD220)中的作為緩衝數據的讀出源的SATA塊群,從所決定的SATA塊群的全部區域中將緩衝數據讀出到段群Rl中(步驟409)。中間髒數據的狀態(例如圖12A 圖12F所例示的狀態)能夠根據段群W所對應的多個SG表中的映像140b進行判別。此外,作為讀出源的SATA塊群是包含中間髒數據的寫入目的地的SATA塊群。此外,作為讀出源的SATA塊群的大小是中間髒數據的大小以上的範圍內的最小的大小(但是,SATA塊的大小的倍數)。在該步驟409中,SG表#1以及#2如圖16的行#8所示那樣。具體來說,緩衝數據通過二重化的DKC100的雙方的高速緩衝存儲器120來保持,因此標誌140e成為「I」。CPU130判定段群W內的中間髒數據是否連續(步驟410)。在該步驟410中的SG 表#1以及#2是如圖16的行#9所示那樣。在中間髒數據不連續的情況下(步驟410 :否),CPU130進行高速緩存間複製(圖15的步驟411)。具體來說,如圖18所示,CPU130通過緩衝數據部分填滿中間髒數據間地、將段群Rl中的緩衝數據部分複製到段群W。由此,能夠獲得用於從段群W向後述的段群R2的複製的連續的數據。此外,該步驟411中的SG表#1以及#2是如圖16的行#10所示那樣。CPU130判定緩衝數據部分是否被正常地複製到段群W中(步驟412)。該步驟410中的SG表#1以及#2如圖16的行#11所示那樣。CPU130在正常地進行了高速緩存間複製的情況下(步驟412 :是)進行步驟413以後的步驟。一方面,CPU130在沒有正常地進行高速緩存間複製的情況下(步驟412 :否)進行步驟417。在步驟417中,CPU130將複製失敗的數據存儲到預定的保存區域(例如非易失性的存儲區域)。該保存區域內的數據可以在以後通過CPU130再執行複製(數據單元的生成)(即,可以從保存區域向段群W、R1或R2複製數據)。保存區域可以由DKC具有,也可以使用HDD的一部分。在正常地進行了高速緩存間複製的情況下(步驟412 :是),CPU130從高速緩衝存儲器120中確保鏡像HDD用的段群(以下稱為段群R2)(步驟413)。在該步驟413中的SG表#1以及#2是圖17的行#12所示那樣。在行#12中,除了 SG表#1以及#2外,還表示了段群R2中的一個段#3所對應的SG表#3 (步驟413中的SG表#3)。此外,CPU130在無法確保段群R2的情況下,中斷處理,或者可以為了增加空閒的段而進行將物理髒數據寫入到HDD的處理等。CPU130生成用於寫入到主HDD210的數據單元和用於寫入到鏡像HDD220的數據單元(步驟414)。該步驟414中的SG表#1 #3是圖14的行#13所述那樣。此外,映像140b的「髒映像+」表示通過SG表#2以及#3管理的數據相同。在步驟414中例如進行下述的處理。(*)CPU130在段群Rl內的緩衝數據上重寫段群W內的連續數據,並且將連續數據複製到段群R2。由此,在段群Rl中生成主HDD210用的數據單元(以下稱為主數據單元),並且在段群R2中存在連續數據。此外,作為段群W內的連續數據,可以是由連續的中間髒數據構成的數據,也可以是由不連續的中間髒數據和緩衝數據部分構成的數據。(*) CPU130將段群Rl內的緩衝數據部分(緩衝數據中未重寫連續數據的部分)複製到段群R2。由此,在段群R2中生成鏡像HDD220用的數據單元(以下稱為鏡像數據單元)。CPU130判斷是否正常進行了主數據單元或者鏡像數據單元的生成(步驟415)。該步驟414中的SG表#1 #3如圖14的行#14所示那樣。CPU130在主數據單元以及鏡像數據單元中的至少一方沒有被正常進行的情況下(步驟415 :否),進行上述的步驟417的處理。
CPU130在正常進行了主數據單元以及鏡像數據單元的生成的情況下(步驟415 是),將主數據單元以及鏡像數據單元的各自的屬性遷移為物理髒數據(步驟416)。具體來說,例如CPU130通過物理髒隊列來管理存儲了主數據單元的一個以上的段或存儲了鏡像數據單元的一個以上的段。此外,該步驟416中的SG表#1~#3如圖14的行#15所示那樣。之後,CPU130釋放段群W(步驟418)。由此,構成段群W的各段被作為空閒的段來管理。能夠確保空閒的段。在該步驟418中的SG表#廣#3如圖14的行#16所示那樣。根據行#16的SG表#1,將被釋放的段群W中的段#1作為空閒的段來管理。以上是中間匯總寫入處理的流程。在該中間匯總寫入處理之後,CPU130將主數據單元(物理髒數據)寫入主HDD210,並且將鏡像數據單元(物理髒數據)寫入鏡像HDD220。根據本實施例,在針對RAIDl的RAID組的寫入處理中,不需要從主HDD以及鏡像HDD的一方讀出緩衝數據,並且能夠將讀出次數設為最多I次。由此,能夠減輕HDD以及DKC100雙方的負荷。以上說明了本發明的一個實施例,但是,本發明並不限於該實施例,在不脫離其宗旨的範圍內當然可以進行各種變更。例如,在段群W的全部區域被連續的中間髒數據佔據的情況下,將段群W內的中間髒數據作為物理髒數據來管理,之後,可以將該物理髒數據寫入主HDD (或者鏡像HDD)。或者可以確保段群Rl,進行從段群W向段群Rl的數據複製,將段群Rl內的數據作為物理髒數據來管理,之後,將物理髒數據寫入主HDD (或者鏡像HDD)。符號說明IB存儲裝置
權利要求
1.一種存儲裝置,其特徵在於, 具備 由多個物理的存儲設備構成的RAID組;以及 按照所述RAID組的RAID等級來控制向所述RAID組的數據的寫入以及從所述RAID組的數據的讀出的控制器, 所述RAID組是具有一個以上第一存儲設備和第二存儲設備的對的RAIDl類型的RAID組, 寫入對象數據的單位大小與所述存儲設備的寫入單位的大小不同, 所述存儲設備提供的存儲區域由多個存儲塊構成, 各存儲塊的大小與所述存儲設備的寫入單位的大小相同, 所述控制器, (A)從所述第一存儲設備中的包含所述寫入對象數據的寫入目的地的第一存儲塊群的全部區域讀出數據, (B)根據所述寫入對象數據和作為在所述(A)中讀出的數據的緩衝數據,生成一個以上數據單元,該數據單元由所述寫入對象數據或其副本和緩衝數據部分或其副本構成,是與所述第一存儲塊群大小相同的數據, (C)將所述一個以上的數據單元中的某一個寫入所述第一存儲設備中的所述第一存儲塊群,並且將所述一個以上的數據單元中的某一個寫入所述第二存儲設備中的、與所述第一存儲塊群對應並且與其大小相同的第二存儲塊群。
2.根據權利要求I所述的存儲裝置,其特徵在於, 在所述(B)中,所述控制器通過在所述緩衝數據中寫入所述寫入對象數據或其副本來生成第一數據單元,生成所述寫入對象數據的副本,通過對所述寫入對象數據的副本附加所述第一數據單元內的緩衝數據部分的副本來生成第二數據單元, 在所述(C)中,所述控制器將所述第一以及第二數據單元的一方寫入所述第一存儲塊群,將所述第一以及第二數據單元的另一方寫入所述第二存儲塊群。
3.根據權利要求2所述的存儲裝置,其特徵在於, 所述控制器具有由多個高速緩存塊構成的高速緩衝存儲器, 各高速緩存塊的大小是所述寫入對象數據的單位大小, 在所述(A)中,所述控制器從所述高速緩衝存儲器中確保第一高速緩存區域,該第一高速緩存區域包含存儲了所述寫入對象數據的一個以上的高速緩存塊, 在所述(A)中,所述控制器從所述高速緩衝存儲器中確保第二高速緩存區域, 在所述(A)中,所述控制器在所述第二高速緩存區域中讀出所述緩衝數據, 在所述(B)中,所述控制器確保第三高速緩存區域, 在所述(B)中,所述控制器通過將所述第一高速緩存區域內的所述寫入對象數據複製到所述第二高速緩存區域來生成所述第一數據單元, 在所述(B)中,所述控制器通過將所述第二高速緩存區域內的所述緩衝數據部分複製到所述第三高速緩存區域來生成所述第二數據單元, 各高速緩存區域由兩個以上的高速緩存塊構成, 各高速緩存區域的大小是所述存儲塊的大小和所述高速緩存塊的大小的最小公倍數。
4.根據權利要求3所述的存儲裝置,其特徵在於, 在所述第一高速緩存區域的全部區域被連續的所述寫入對象數據佔據的情況下,所述控制器不進行所述緩衝數據的讀出, 所述第一數據單元以及所述第二數據單元是所述寫入對象數據的副本。
5.根據權利要求3所述的存儲裝置,其特徵在於, 在所述第一高速緩存區域中存在不連續的所述寫入對象數據的情況下,所述第一存儲塊群的大小是從所述第一高速緩存區域中的開頭的寫入對象數據的開頭到所述第一高速緩存區域中的末端的寫入對象數據的末端為止的範圍以上的大小。
6.根據權利要求5所述的存儲裝置,其特徵在於, 在所述(B)中,所述控制器從所述第二高速緩存區域向所述第一高速緩存區域複製緩衝數據部分,以便通過在所述第一高速緩存區域中的寫入對象數據間填滿緩衝數據部分來生成連續數據, 所述連續數據由不連續的所述寫入對象數據和所述緩衝數據部分構成, 在所述(B)中,所述控制器通過將所述連續數據複製到所述第二高速緩存區域來生成所述第一數據單元, 在所述(B)中,所述控制器將所述連續數據複製到所述第三高速緩存區域。
7.根據權利要求3所述的存儲裝置,其特徵在於, 具有作為保存數據的存儲區域的保存區域, 所述控制器,在沒有正常生成所述第一或第二數據單元的情況下,將在該生成中使用的數據暫時寫入所述保存區域, 所述控制器將所述保存區域內的數據複製到所述第二以及第三高速緩存區域中的、存儲了沒有正常生成的數據單元的高速緩存區域中。
8.根據權利要求3所述的存儲裝置,其特徵在於, 所述寫入對象數據的單位大小是來自主機裝置的數據和保證碼的數據集的大小, 所述存儲設備是SATA-HDD。
9.根據權利要求I所述的存儲裝置,其特徵在於, 所述第一存儲塊群的大小是所述寫入對象數據以上的範圍中最小的大小。
10.根據權利要求I所述的存儲裝置,其特徵在於, 在所述寫入對象數據是連續的數據,並且其大小是所述寫入對象數據的單位大小和所述存儲設備的寫入單位的大小的公倍數的情況下,所述控制器不進行所述緩衝數據的讀出, 所述數據單元是所述寫入對象數據的副本。
11.根據權利要求I所述的存儲裝置,其特徵在於, 在預定的範圍中所述寫入對象數據不連續的情況下,所述第一存儲塊群的大小是從所述預定的範圍中的開頭的寫入對象數據的開頭到所述預定範圍中的末端的寫入對象數據的末端為止的範圍以上的大小。
12.根據權利要求11所述的存儲裝置,其特徵在於, 所述一個以上的數據單元包含第一數據單元和第二數據單元, 在所述(B)中,所述控制器複製緩衝數據部分,以便通過在所述預定範圍中的寫入對象數據間填滿緩衝數據部分來生成連續數據, 所述連續數據由不連續的所述寫入對象數據和所述緩衝數據部分構成, 在所述(B)中,所述控制器通過將所述連續數據寫入所述緩衝數據上來生成所述第一數據單元, 在所述(B)中,所述控制器生成所述連續數據的副本,並且對該連續數據的副本附加所述第一數據單元中的緩衝數據部分,由此生成所述第二數據單元, 在所述(C)中,所述控制器將所述第一以及第二數據單元的一方寫入所述第一存儲塊群,將所述第一以及第二數據單元的另一方寫入所述第二存儲塊群。
13.根據權利要求I所述的存儲裝置,其特徵在於, 具有作為保存數據的存儲區域的保存區域, 所述控制器在沒有正常地生成所述數據單元的情況下,將該生成中使用的數據暫時寫入所述保存區域, 所述控制器使用所述保存區域內的數據來生成數據單元。
14.一種向RAIDl類型的RAID組的寫入的控制方法,該RAIDl類型的RAID組具有一個以上第一存儲設備和第二存儲設備的對,該控制方法的特徵在於, 從所述第一存儲設備中的包含寫入對象數據的寫入目的地的第一存儲塊群的全部區域中讀出數據, 根據所述寫入對象數據和作為所述被讀出的數據的緩衝數據,生成一個以上數據單元,該數據單元由所述寫入對象數據或其副本和緩衝數據部分或其副本構成,是與所述第一存儲塊群大小相同的數據, 將所述一個以上的數據單元中的某一個寫入所述第一存儲設備中的所述第一存儲塊群,並且將所述一個以上的數據單元中的某一個寫入所述第二存儲設備中的、與所述第一存儲塊群對應並與其大小相同的第二存儲塊群。
全文摘要
RAID1類型的RAID組具有一個以上第一存儲設備和第二存儲設備的對。存儲裝置從第一存儲設備中的、包含寫入對象數據的寫入目的地的第一存儲塊群的全部區域中讀出數據。存儲裝置根據寫入對象數據和讀出的數據即緩衝數據,生成一個以上數據單元,該數據單元由寫入對象數據或其副本和緩衝數據部分或其副本構成,是與第一存儲塊群相同大小的數據。控制器將一個以上的數據單元中的某一個數據單元寫入到第一存儲設備中的第一存儲塊群中,並且將一個以上的數據單元中的某一個數據單元寫入到第二存儲設備中的、與第一存儲塊群對應且與其大小相同的第二存儲塊群中。
文檔編號G06F3/06GK102630314SQ20108005403
公開日2012年8月8日 申請日期2010年3月8日 優先權日2010年3月8日
發明者出田宏, 松井佑光, 西原悠佑 申請人:株式會社日立製作所

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀