JP2021099624A - ストレージシステム及びストレージシステムのリビルド処理方法 - Google Patents

ストレージシステム及びストレージシステムのリビルド処理方法 Download PDF

Info

Publication number
JP2021099624A
JP2021099624A JP2019230631A JP2019230631A JP2021099624A JP 2021099624 A JP2021099624 A JP 2021099624A JP 2019230631 A JP2019230631 A JP 2019230631A JP 2019230631 A JP2019230631 A JP 2019230631A JP 2021099624 A JP2021099624 A JP 2021099624A
Authority
JP
Japan
Prior art keywords
rebuild
data
drive
priority
storage system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019230631A
Other languages
English (en)
Inventor
翔 澤田
Sho Sawada
翔 澤田
鈴木 秀典
Shusuke Suzuki
秀典 鈴木
栄寿 葛城
Eiju Katsuragi
栄寿 葛城
信太郎 井上
Shintaro Inoue
信太郎 井上
裕大 藤井
Yuudai Fujii
裕大 藤井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019230631A priority Critical patent/JP2021099624A/ja
Priority to US17/029,297 priority patent/US11379327B2/en
Publication of JP2021099624A publication Critical patent/JP2021099624A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Abstract

【課題】分散RAID構成のストレージシステムにおいて、障害が生じたドライブに格納されたデータの復元速度を速めることを可能にする。【解決手段】ストレージシステム10のストレージコントローラ100は、少なくとも二つのドライブ200に障害が生じた際に、優先的にリビルドする優先リビルドデータの復元のためにデータを読み出す読み出しドライブ200と復元した優先リビルドデータを書き込む書き込みドライブ200とを特定してリビルド処理を行う優先リビルド処理と、通常リビルドデータに対して読み出しドライブ200と書き込みドライブ200とを特定してリビルド処理を行う通常リビルド処理とを並行して行う。【選択図】図1

Description

本発明は、ストレージシステム及びストレージシステムのリビルド処理方法に関する。
複数のディスクドライブを用いてRAID(Redundant Arrays of Independent (or Inexpensive) Disks)を構成するストレージシステムにおいて、少なくとも1台のドライブに障害が生じた際に外付けのスペアドライブにデータを復元するかわりに、各々のドライブにスペア領域を設け、このスペア領域にデータを復元(リビルド)する分散RAID(Distributed RAID)という技術が知られている。
また、分散RAIDを構成するストレージシステムにおいて、リビルド処理の際に優先度の高いデータを選定し、優先度の高いデータを他のデータに優先してリビルド処理をする優先リビルド処理と呼ばれる技術も知られている。
本技術分野の背景技術として、特開2015−158768号(特許文献1)がある。この公報には、「データが格納される第1の記憶領域及び第1の記憶領域に格納された一部のデータと同じデータが格納される第2の記憶領域をそれぞれが有し、同じ管理単位に属する複数のデータが分散して格納される複数の記憶装置と、管理単位毎に設定された優先度に基づき、複数の記憶装置が有する第2の記憶領域について管理単位毎の使用割合を設定する制御部と、を有する、ストレージ装置が提供される。」と記載されている(要約参照)。
特開2015−158768号公報
上述した背景技術において優先リビルド処理が行われている間、それ以外のリビルド処理は行われない。このため、障害が生じたドライブに格納されたデータを最終的に復元するまでの時間を長く要していた。
本発明は上記の課題に鑑みてなされたもので、分散RAID構成のストレージシステムにおいて、障害が生じたドライブに格納されたデータの復元速度を速めることが可能なストレージシステム及びストレージシステムのリビルド処理方法を提供することにある。
上記課題を解決すべく、本発明の一つの観点に従うストレージシステムは、複数のドライブと、これら複数のドライブにより分散RAIDを構成させるプロセッサとを有し、プロセッサは、少なくとも二つのドライブに障害が生じた際に、障害が生じたドライブに格納されているデータを他のドライブに復元させるリビルド処理を行うとき、優先的にリビルドする優先リビルドデータを選定し、この優先リビルドデータの復元のためにデータを読み出す読み出しドライブと復元した優先リビルドデータを書き込む書き込みドライブとを特定してリビルド処理を行う優先リビルド処理と、優先リビルドデータ以外のデータである通常リビルドデータに対して読み出しドライブと書き込みドライブとを特定してリビルド処理を行う通常リビルド処理とを並行して行う。
本発明によれば、分散RAID構成のストレージシステムにおいて、障害が生じたドライブに格納されたデータの復元速度を速めることが可能なストレージシステム及びストレージシステムのリビルド処理方法を実現することができる。
実施例1に係るストレージシステムのハードウェア構成を示す図である。 実施例1に係るストレージシステムのストレージコントローラのメモリの構成の一例を示す図である。 実施例1に係るストレージシステムのリビルド管理テーブルの一例を示す図である。 実施例1に係るストレージシステムの分散RGマッピング管理テーブルの一例を示す図である。 実施例1に係るストレージシステムのデータマッピングテーブルの一例を示す図である。 実施例1に係るストレージシステムのパーセルグループ冗長度管理テーブルの一例を示す図である。 実施例1に係るストレージシステムのマッピングイメージの一例を示す図である。 実施例1に係るストレージシステムのスペアマッピングイメージの一例を示す図である。 実施例1に係るストレージシステムの優先リビルド中ビットマップの一例を示す図である。 一般的なストレージシステムにおけるリビルド処理の流れの一例を説明するための図である。 一般的なストレージシステムにおけるリビルド処理の流れの別の例を説明するための図である。 一般的なストレージシステムにおけるリビルド処理の流れのさらに別の例を説明するための図である。 一般的なストレージシステムにおけるリビルド処理の流れのまたさらに別の例を説明するための図である。 実施例1に係るストレージシステムにおけるリビルド処理の流れの一例を説明するための図である。 実施例1に係るストレージシステムにおけるリビルド処理の流れの別の例を説明するための図である。 実施例1の変形例に係るストレージシステムにおけるリビルド処理の流れの一例を説明するための図である。 実施例1に係るストレージシステムのコレクションコピー起動処理の一例を説明するためのフローチャートである。 実施例1に係るストレージシステムの優先リビルド前処理の一例を説明するためのフローチャートである。 実施例1に係るストレージシステムの優先リビルド処理の一例を説明するためのフローチャートである。 実施例1に係るストレージシステムの優先リビルド後処理の一例を示すフローチャートである。 実施例1に係るストレージシステムの通常リビルド前処理の一例を説明するためのフローチャートである。 実施例1に係るストレージシステムの通常リビルド処理の一例を説明するためのフローチャートである。 実施例1に係るストレージシステムの通常リビルド後処理の一例を示すフローチャートである。 実施例2に係るストレージシステムにおけるリビルド処理の流れの一例を説明するための図である。 実施例2に係るストレージシステムの優先リビルド前処理の一例を説明するためのフローチャートである。 実施例2に係るストレージシステムの優先リビルド処理の一例を説明するためのフローチャートである。 実施例2に係るストレージシステムの優先リビルド後処理の一例を示すフローチャートである。 実施例2に係るストレージシステムの通常リビルド対象パーセルグループ選択処理の一例を示すフローチャートである。 実施例3に係るストレージシステムにおけるリビルド処理の流れの一例を説明するための図である。 実施例3に係るストレージシステムの通常リビルド対象パーセルグループ選択処理の一例を示すフローチャートである。
以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
なお、実施例を説明する図において、同一の機能を有する箇所には同一の符号を付し、その繰り返しの説明は省略する。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
以下の説明では、「テーブル」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU、GPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGAやASIC)を含んでいてもよい。
また、以下の説明において、「プロセッサ(部)」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
以下の説明において、「インターフェース部」は、1以上のインターフェースでよい。この1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明において、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
本開示において、ストレージデバイスは、1台のHDD(Hard Disk Drive)やSSD(Solid State Drive)等の1台のストレージドライブ、複数台のストレージドライブを含むRAID装置、及び複数のRAID装置を含む。また、ドライブがHDDである場合には、例えば、SAS(Serial Attached SCSI) HDDを含んでもよく、NL−SAS(ニアラインSAS) HDDを含んでもよい。
以下、本明細書に用いる用語について説明する。
・パーセル:分散RGのデータを管理する単位。LBA(Logical Block Addressing)が連続する所定数のストライプで構成される。
・パーセルグループ:LBAが連続する所定数のストライプ列で構成されるパーセル列。2D+2PのRAID構成の場合、4つのパーセルで構成される。図7では、リピテーショングループ内の同じ数字のパーセルが同じパーセルグループに属することを示している。
・リピテーショングループ:マッピングを繰り返す単位。図7では、図5に示している10×12のデータマッピングテーブルをリピテーショングループの単位としている。
・分散RG(Raid Group)のマッピング:分散RGはドライブ容量に応じて、同一パターンを繰り返すことでマッピングを行う。図7では、図5に示している10×12のデータマッピングテーブルのパターンを繰り返すことでマッピングを行っている。
以下、図面を参照して、実施例1を説明する。
図1は、実施例1に係るストレージシステムのハードウェア構成を示す図である。
実施例1に係るストレージシステム10は、ホスト計算機(以下、ホスト)20が接続されて構成される。ストレージシステム10とホスト20とは、ネットワーク30を介して通信可能である。ネットワーク30は、例えば、SAN(Storage Area Network)、LAN(Local Area Network)などである。
ストレージシステム10は、ストレージ装置40と、ストレージ装置40に接続されたストレージコントローラ100とを有する。ストレージ装置40は複数のストレージデバイス200を有する。複数のストレージデバイス200は、例えば図略のスイッチを介して相互に接続されており、ストレージデバイス200間でEnd−to−End通信が可能である。複数のストレージデバイス200のそれぞれは、図略のスイッチを介してストレージコントローラ100と接続される。
ストレージコントローラ100は、ホスト20と通信を行うデバイスであるホストインターフェイス110、ストレージシステム10全体の動作制御を行うCPU(Central Processing Unit)120、CPU120がデータ転送時に使用するストレージ管理情報やホスト20からライトされるデータやストレージデバイス200からリードされたデータを一時的に記憶するローカルメモリ130、ストレージデバイス200と通信を行うデバイスであるストレージインターフェイス140、キャッシュメモリ150を有し、これらは内部バス(例えば、PCI−Express(PCIe)バス、AXI(Advanced eXtensible Interface)バス)160を通じて互いに接続されている。ここでは、全ての内部バス160には同一の記号が付されているが、それらの内部バスは、同一のバス規格のバスで構成されていてもよいし、異なるバス規格のバスを含んでいてもよい。また、ストレージコントローラ100内のストレージインターフェイス140は、PCIeバス170を介して複数のストレージデバイス200と接続される。
本実施形態では、後に詳述するように、12台のストレージデバイス200に基づいてRAID6(2D+2P)のRAIDグループが構成されているものとする。
RAIDには、いくつかのレベル(以下、「RAIDレベル」という)がある。例えば、RAID5では、RAID5に対応したホストコンピュータから指定されたライト対象のデータは、所定サイズのデータ(以下、便宜上「データ単位」という)に分割される。各データ単位は、複数のデータ要素に分割される。複数のデータ要素は、同一のストライプ列内の複数のストライプにそれぞれ書き込まれる。
RAID5では、ストレージデバイス200に障害が発生したことにより、そのストレージデバイス200から読み出せなくなったデータ要素を復元(リビルド)するために、各データ単位に対して、“パリティ”と呼ばれる冗長な情報(以下、「冗長コード」)が生成される。冗長コードも、複数のデータ要素と同一のストライプ列内のストライプに書き込まれる。
例えば、RAID5のRAIDグループを構成するストレージデバイス200の数が4である場合、そのうちの3個のストレージデバイス200に対応する3個のストライプに、データ単位を構成する3個のデータ要素が書き込まれ、残りの一つのストレージデバイス200に対応するストライプに、冗長コードが書き込まれる。
例えば、RAIDストライプ0では、データ0とデータ1とデータ2に基づいてパリティ0が生成されている。パリティ0は、データ0とデータ1とデータ2の排他的論理和演算(以下、XOR演算)により生成される。データ0、データ1、データ2、パリティ0は、ストレージデバイス200に1つずつ分散格納される。ストレージデバイス200の障害等によりデータ1が読み出せなくなった場合、データ0とデータ2とパリティ0のXOR演算によりデータ1が復元される。
RAID6では、各データ単位に対して、2種類の冗長コード(Pパリティ、Qパリティという)が生成されて、それぞれの冗長コードが同一のストライプ列内のストライプに書き込まれる。これにより、データ単位を構成する複数のデータ要素のうちの2個のデータ要素を読み出すことができない場合に、これら2個のデータ要素を復元することができる。
上記に説明した以外にもRAIDレベルは存在する(例えばRAID1〜4)。データの冗長化技術として、3重ミラー(Triplication)や、パリティを3個用いたトリプルパリティ技術等もある。冗長コードの生成技術についても、ガロア演算を用いたReed−solomon符号や、EVEN−ODD等さまざまな技術が存在する。以下においては、主にRAID6について説明するが、冗長化技術を上述した方法に置き換え可能である。
図2は、実施例1に係るストレージシステム10のストレージコントローラ100のローカルメモリ130の構成の一例を示す図であり、より詳細には、ローカルメモリ130内のプログラム及び管理情報の例を示す図である。
ローカルメモリ130には、ホストインターフェイス処理プログラム131、リビルド処理プログラム132、コピーバック処理プログラム133、パリティ処理プログラム134が格納されている。
ホストインターフェイス処理プログラム131は、ストレージコントローラ100とホスト20との通信処理を行うプログラムである。リビルド処理プログラム132は、後述する本実施例の特徴であるリビルド処理を含めたリビルド処理を行うプログラムである。コピーバック処理プログラム133は、リビルド処理プログラム132によるリビルド処理の後、ストレージデバイス200交換後にスペア領域のデータから新しいストレージデバイス200へのコピー処理を行う。本処理の実行完了後、ストレージ装置40の状態は、正常状態となる。パリティ処理プログラム134は、上述したパリティを生成してストレージデバイス200の所定の位置にパリティを書き込む。また、他、図示していないプログラムもローカルメモリ130に格納される。
また、ローカルメモリ130には、管理情報としてリビルド管理テーブル135、分散RGマッピング管理テーブル136、データマッピングテーブル137、パーセルグループ冗長度管理テーブル138が格納されている。
次に、管理情報である各テーブルの構成例を説明する。
図3は、実施例1に係るストレージシステム10のリビルド管理テーブル135の一例を示す図である。
リビルド管理テーブル135は、リビルド処理に関する情報を保持する。リビルド管理テーブル135は、分散RG毎にエントリを有する。各エントリは、対象分散RGの番号の情報である分散RG#301、ドライブ(ストレージデバイス200)の番号の情報であるドライブ#302、テーブル有効フラグに関する情報であるテーブル有効フラグ(FLG)303、通常リビルド処理におけるコピー位置のポインタ情報である通常コピーポインタ304、優先リビルド処理におけるコピー位置のポインタ情報である優先コピーポインタ305、優先リビルド中ビットマップの情報である優先リビルド中ビットマップ306、優先リビルド済ビットマップの情報である優先リビルド済ビットマップ307である。優先リビルド中ビットマップ及び優先リビルド済ビットマップの詳細については後述する。
図4は、実施例1に係るストレージシステム10の分散RGマッピング管理テーブル136の一例を示す図である。
分散RGマッピング管理テーブル136は、分散RGのマッピングに関する情報を保持する。分散RGマッピング管理テーブル136は、分散RG毎にエントリを有する。各エントリは、対象分散RGの番号の情報である分散RG#401、データマッピングに関する情報であるデータマッピング402、スペアマッピングに関する情報であるスペアマッピング403である。
図5は、実施例1に係るストレージシステム10のデータマッピングテーブル137の一例を示す図である。
既に説明したように、本実施例のストレージシステム10はRAIDレベルがRAID6(2D+2P)であり、12台のストレージデバイス200により構成されている。その際のデータマッピングテーブル137を図5に示す。なお、本実施例では、リビルド処理の際に各ストレージデバイス200のリードパーセル数ができるだけ均等化されるようにデータがマッピングされている。
図6は、実施例1に係るストレージシステム10のパーセルグループ冗長度管理テーブル138の一例を示す図である。
パーセルグループ冗長度管理テーブル138は、各々のパーセルグループの冗長度に関する情報を保持する。パーセルグループ冗長度管理テーブル138は、分散RG毎にエントリを有する。各エントリは、対象分散RGの番号の情報である分散RG#501、パーセルグループの番号の情報であるパーセルグループ#502、冗長度の情報である冗長度503である。
図7は、実施例1に係るストレージシステム10のマッピングイメージの一例を示す図である。
既に説明したように、本実施例のストレージシステム10はRAIDレベルがRAID6(2D+2P)であり、12台(図中#0〜#11で示す)のストレージデバイス200により構成されている。ストレージデバイス200に書き込まれるデータは所定サイズのデータ単位に分割され、各データ単位は、複数のデータ要素に分割される。複数のデータ要素は、同一のストライプ列内の複数のストライプにそれぞれ書き込まれる。本実施例では、4つのストライプが1つのストライプ列を構成している。1つのストライプ列はデータDを格納する2つのストライプと、データDに基づくPパリティを格納する1つのストライプと、データDに基づくQパリティを格納する1つのストライプで構成されている。以下、LBAが連続する複数のストライプで構成される単位を「パーセル」と称し、LBAが連続する複数のストライプ列で構成されるパーセル列を「パーセルグループ」と称する。図7において同じ番号で示されたパーセルは同じパーセルグループに属することを示す。また、各々のストレージデバイス200にはスペア領域(図中「S」で示している)が設けられている。スペア領域は後述するリビルド処理の際に用いられ、通常はデータが格納されていない。
図8は、実施例1に係るストレージシステム10のスペアマッピングイメージの一例を示す図である。
既に説明したように、本実施例のストレージシステム10はRAIDレベルがRAID6(2D+2P)であり、12台のストレージデバイス200により構成されている。図8は、ストレージデバイス200のうち#0、#1のストレージデバイスに障害が発生した場合にリビルド処理がスペア領域に書き込むデータのマッピングを示す。スペアマッピングは、リビルドするパーセルが属するパーセルグループの冗長度を維持するため、リビルドするパーセルが属するパーセルグループのパーセルが格納されていないストレージデバイス200に、リビルド処理がリビルドするパーセルを書き込むようにマッピングされる。本実施例では、リビルド処理がストレージデバイス200の#0に格納されているパーセルグループ#1のパーセルをリビルドし、ストレージデバイス200の#2のスペア領域にリビルドしたパーセルを書き込む。
図9は、実施例1に係るストレージシステム10の優先リビルド中ビットマップ306の一例を示す図である。
優先リビルド中ビットマップ306は、パーセルグループ冗長度管理テーブル138から生成される。優先リビルド中ビットマップ306はそれぞれのパーセルグループが優先リビルド処理の対象であるか否かを表すビットマップである。優先リビルド中ビットマップ306は16進数の所定桁の数字である。例えば、図に示す優先リビルド中ビットマップの1桁目はパーセルグループ#0〜#3に対応する。
本実施例では、冗長度0のパーセルグループを優先リビルド処理の対象とする。図9に示すパーセルグループ冗長度管理テーブル138は、ストレージデバイス200のうち#0及び#1に障害が生じた際の冗長度に基づいたものである。パーセルグループ#0〜#3において冗長度0のパーセルグループは#0のみである。従って、優先リビルド中ビットマップの1桁目を構成する数字は2進数で0001であるので、16進数でこれを表すと「1」となる。これ以外の桁についても同様にして優先リビルド中ビットマップが生成される。
次に、本実施例のストレージシステム10におけるリビルド処理の概要について説明する。まず、一般的なストレージシステムにおけるリビルド処理の流れを図10〜図13を用いて説明する。
図10〜図13は、一般的なストレージシステムにおけるリビルド処理の流れの一例を説明するための図である。図示する一般的なストレージシステムは、実施例1のストレージシステム10と同様に、RAIDレベルがRAID6(2D+2P)であり、12台のストレージデバイスにより構成されているものとする。
図10の上部に示す図が、ストレージデバイスに障害が起きていない状態を示し、図10の下部に示す図が、ストレージデバイスのうち#0、#1のストレージデバイスに障害が発生した状態を示す図である。
ストレージデバイスのうち#0、#1のストレージデバイスに障害が発生したことをストレージシステムが検出したら、図11の上部に示す図のように、まず、ストレージシステムは優先リビルド処理を開始する。図11の上部に示す図では、#0のストレージデバイスについて優先リビルド処理を開始ししている。
図示では、パーセルグループ#0(「0」で示されるパーセルからなるパーセルグループ)について、#2、#3のストレージデバイスに格納されているパーセルを用いて、#4のストレージデバイスのスペア領域にデータをリビルドし、パーセルグループ#4について、#5、#7のストレージデバイスに格納されているパーセルを用いて、#6のストレージデバイスのスペア領域にデータをリビルドしている。これらパーセルグループ#0、#4はストレージデバイス#0、#1の双方に格納されているパーセルに係るグループであり、冗長度0であることから、優先リビルド処理の対象となる。この結果、図11の下部に示す図のように、優先リビルド処理が終了し、データがリビルドされる。
優先リビルド処理を終了したら、ストレージシステムは次に、図12の上部に示す図のように、#0のストレージデバイスについて通常リビルド処理を行う。この結果、図12の下部に示す図のように、#0のストレージデバイスについて通常リビルド処理が終了する。最終的に、図13に示すように、優先リビルド処理と通常リビルド処理とを経て、#0のストレージデバイスについてリビルド処理が完了する。
しかしながら、一般的なストレージシステムにおいては、上述したように、優先リビルド処理が終了してから通常リビルド処理を行っている。このため、図13に示すように最終的にリビルド処理が終了するまでの時間に長時間を要していた。
そこで、実施例1のストレージシステム10では、優先リビルド処理を行っている際にパーセルの読み出し及び書き込みを行っているストレージデバイス200である読み出しドライブ及び書き込みドライブ以外にパーセルの読み出しも書き込みも行っていないストレージデバイス200があれば、このストレージデバイス200(ドライブ)に格納されている通常リビルド対象パーセルを用いて通常リビルド処理を行う。これにより、リビルド処理全体にかかる時間の短縮を図っている。
具体的には、図14の上部に示す図のように、優先リビルド処理を行っている際に読み出しドライブとして用いられているストレージデバイス200 #2、#3、#5、#7及び書き込みドライブとして用いられているストレージデバイス200 #4、#6以外のストレージデバイス200で、通常リビルド処理の対象となり得るパーセルグループ#10については、このパーセルグループ#10に属するパーセルが格納されたストレージデバイス200 #8、#10は優先リビルド処理において読み出しドライブとしても書き込みドライブとしても用いられていない。さらに、パーセルグループ#10に属するパーセルを用いてリビルドしたデータを書き込むストレージデバイス200 #9も、優先リビルド処理において読み出しドライブとしても書き込みドライブとしても用いられていない。そこで、ストレージコントローラ100は、優先リビルド処理と並行して、通常リビルド対象パーセルのうち、優先リビルド処理において読み出しドライブとしても書き込みドライブとしても用いられていないストレージデバイス200に格納されている通常リビルド対象パーセルを用いて通常リビルド処理を行う。この結果、図14の下部に示す図のように、優先リビルド対象パーセルが属するパーセルグループと通常リビルド対象パーセルが属するパーセルグル―プのうち一部のパーセルグループのリビルド処理が終了する。
その後、ストレージコントローラ100は、図14においてリビルド処理の対象とならなかったパーセルグループについて、図15の上部に示す図のように、通常リビルド処理を行う。その結果、図15の下部に示す図のように、通常リビルド処理が終了する。
次に、図17〜図23のフローチャートを参照して、本実施例のストレージシステム10の動作について説明する。
図17は、実施例1に係るストレージシステム10のコレクションコピー起動処理の一例を説明するためのフローチャートである。
まず、ストレージコントローラ100のリビルド処理プログラム132は、スペアマッピングの生成の要否を判定する(ステップS100)。その結果、生成が必要と判定したら(ステップS100においてYES)、リビルド処理プログラム132はスペアマッピング生成処理を行い(ステップS101)、生成が不要と判定したら(ステップS100においてNO)ステップS102に移行する。
次に、リビルド処理プログラム132は、障害が生じたドライブ(ストレージデバイス200)の最小冗長度が0であるか否かを判定する(ステップS102)。その結果、ドライブの最小冗長度が0であると判定したら(ステップS102においてYES)、リビルド処理プログラム132は優先リビルド前処理を実行し(ステップS103)、さらに、優先コピーポインタが最終LBAに達するまで(ステップS105においてYES)優先リビルド処理を実行する(ステップS104)。その後、リビルド処理プログラム132は優先リビルド後処理を行う(ステップS106)。優先リビルド前処理、優先リビルド処理及び優先リビルド後処理の詳細については後述する。
一方、ドライブの最小冗長度が0でない(1以上である)と判定したら(ステップS102においてNO)、リビルド処理プログラム132は通常リビルド前処理を実行し(ステップS107)、さらに、通常コピーポインタが最終LBAに達するまで(ステップS109においてYES)通常リビルド処理を実行する(ステップS108)。その後、リビルド処理プログラム132は通常リビルド後処理を行う(ステップS110)。通常リビルド前処理、通常リビルド処理及び通常リビルド後処理の詳細については後述する。
その後、リビルド処理プログラム132は冗長度の更新処理を行う(ステップS111)。
図18は、実施例1に係るストレージシステム10の優先リビルド前処理の一例を説明するためのフローチャートである。図18に示すフローチャートは、図17のフローチャートにおけるステップS103の処理の詳細を示すものである。
まず、リビルド処理プログラム132は、リビルド管理テーブル135の優先コピーポインタ305を初期化する(ステップS200)。次いで、リビルド処理プログラム132は、リビルド管理テーブル135の優先リビルド中ビットマップ306を初期化する(ステップS201)。
次いで、リビルド処理プログラム132は、パーセルグループ冗長度管理テーブル138を参照して、優先リビルド処理の対象となるパーセルグループ#を取得する(ステップS202)。さらに、リビルド処理プログラム132は、ステップS202で取得したパーセルグループ#に基づいて、リビルド管理テーブル135の優先リビルド中ビットマップ306を更新する(ステップS203)。
さらに、リビルド処理プログラム132は、優先リビルド処理の対象を含まないドライブ(ストレージデバイス200)をリビルド対象とするために、分散RGマッピング管理テーブル136とパーセルグループ冗長度管理テーブル138を参照し、優先リビルド処理の対象を含まないドライブ(ストレージデバイス200)をリビルド対象にするパーセルグループ#を取得する(ステップS204)。そして、リビルド処理プログラム132は、ステップS204で取得したパーセルグループ#に基づいて、リビルド管理テーブル135の優先リビルド中ビットマップ306を更新する(ステップS205)。
図19は、実施例1に係るストレージシステム10の優先リビルド処理の一例を説明するためのフローチャートである。図19に示すフローチャートは、図17のフローチャートにおけるステップS104の処理の詳細を示すものである。
まず、リビルド処理プログラム132は、リビルド管理テーブル135を参照して、優先リビルド中ビットマップ306がONになっているパーセルグループ#をこの優先リビルド中ビットマップ306から取得する(ステップS300)。
次いで、リビルド処理プログラム132は、パーセルコピージョブの多重度を決定する(ステップS301)。そして、リビルド処理プログラム132は、ステップS301で決定したパーセルコピージョブの多重度の数の分のコピー対象パーセルを決定する(ステップS302)。そして、リビルド処理プログラム132は、ステップS302で決定したコピー対象パーセルに対して、リビルド処理を多重起動する(ステップS303)。ステップS303の処理は、対象パーセル内の全ストライプの回復処理が終了するまで(ステップS304においてYES)繰り返される。
この後、リビルド処理プログラム132は、リピテーショングループ内の全対象パーセルについて回復処理を完了したかどうかを判定し(ステップS305)、判定が肯定されたら(ステップS305においてYES)、リビルド処理プログラム132は、リビルド管理テーブル135の優先コピーポインタ305を次のリピテーショングループの先頭に移動させる(ステップS306)。一方、判定が否定されたら(ステップS305においてNO)、処理をステップS302に戻す。
図20は、実施例1に係るストレージシステム10の優先リビルド後処理の一例を示すフローチャートである。図20に示すフローチャートは、図17のフローチャートにおけるステップS106の処理の詳細を示すものである。
まず、リビルド処理プログラム132は、リビルド管理テーブル135の優先リビルド済ビットマップ307を更新する(ステップS400)。優先リビルド済ビットマップ307の更新は、優先リビルド中ビットマップ306とのORを取ればよい。次いで、リビルド処理プログラム132は、リビルド管理テーブル135の優先リビルド中ビットマップ306の値に無効値を設定する(ステップS401)。
この後、リビルド処理プログラム132は、スペアマッピング再生成不要フラグをONに設定し(ステップS402)、登録先キューに通常リビルドキューを設定し(ステップS403)、エンキュー処理を行う(ステップS404)。
図21は、実施例1に係るストレージシステム10の通常リビルド前処理の一例を説明するためのフローチャートである。図21に示すフローチャートは、図17のフローチャートにおけるステップS107の処理の詳細を示すものである。
リビルド処理プログラム132は、リビルド管理テーブル135の通常コピーポインタ304を初期化する(ステップS500)。
図22は、実施例1に係るストレージシステム10の通常リビルド処理の一例を説明するためのフローチャートである。図22に示すフローチャートは、図17のフローチャートにおけるステップS108の処理の詳細を示すものである。
まず、リビルド処理プログラム132は、リビルド管理テーブル135を参照して、優先リビルド中ビットマップ306がOFFになっているパーセルグループ#をこの優先リビルド中ビットマップ306から取得する(ステップS600)。
次いで、リビルド処理プログラム132は、パーセルコピージョブの多重度を決定する(ステップS601)。そして、リビルド処理プログラム132は、ステップS601で決定したパーセルコピージョブの多重度の数の分のコピー対象パーセルを決定する(ステップS602)。そして、リビルド処理プログラム132は、ステップS602で決定したコピー対象パーセルに対して、リビルド処理を多重起動する(ステップS603)。ステップS603の処理は、対象パーセル内の全ストライプの回復処理が終了するまで(ステップS604においてYES)繰り返される。
この後、リビルド処理プログラム132は、リピテーショングループ内の全対象パーセルについて回復処理を完了したかどうかを判定し(ステップS605)、判定が肯定されたら(ステップS605においてYES)、リビルド処理プログラム132は、リビルド管理テーブル135の通常コピーポインタ304を次のリピテーショングループの先頭に移動させる(ステップS606)。一方、判定が否定されたら(ステップS605においてNO)、処理をステップS602に戻す。
図23は、実施例1に係るストレージシステム10の通常リビルド後処理の一例を示すフローチャートである。図23に示すフローチャートは、図17のフローチャートにおけるステップS110の処理の詳細を示すものである。
リビルド処理プログラム132は、リビルド管理テーブル135の優先リビルド済ビットマップ307に無効値を設定する(ステップS700)。
このように構成される本実施例によれば、ストレージコントローラ100は、少なくとも二つのドライブ(ストレージデバイス200)に障害が生じた際に、障害が生じたドライブに格納されているデータを他のドライブに復元させるリビルド処理を行うとき、優先的にリビルドする優先リビルドデータを選定し、この優先リビルドデータの復元のためにデータを読み出す読み出しドライブと復元した優先リビルドデータを書き込む書き込みドライブとを特定してリビルド処理を行う優先リビルド処理と、優先リビルドデータ以外のデータである通常リビルドデータに対して読み出しドライブと書き込みドライブとを特定してリビルド処理を行う。
従って、本実施例によれば、優先リビルド処理を行っているときに、優先リビルド処理に並行して通常リビルド処理を行うことができる。これにより、分散RAID構成のストレージシステムにおいて、障害が生じたドライブに格納されたデータの復元速度を速めることが可能となる。
また、ストレージコントローラ100は、優先リビルド処理が終了したら、これら優先リビルド処理及び通常リビルド処理で復元されなかったデータのリビルド処理を行うので、障害が生じたドライブのリビルド処理を早期にかつ確実に行うことができる。
また、ストレージコントローラ100は、データの冗長度に基づいて優先リビルドデータを選定し、特に、障害が生じたドライブに格納されたデータのうち、より冗長度が低いデータを優先リビルドデータとして優先リビルド処理を行い、優先リビルドデータより冗長度が高いデータを通常リビルドデータとして通常リビルド処理を行うので、データの消失という最悪の事態を未然にかつ確実に防ぎつつリビルド処理を行うことができる。
さらに、ストレージコントローラ100は、通常リビルド処理において、書き込みドライブ及び読み出しドライブとして優先リビルド処理で特定された書き込みドライブ及び読み出しドライブの双方を特定しないようにしてリビルド処理を行うので、優先リビルド処理を行っているときに、優先リビルド処理に影響を及ぼさない範囲で通常リビルド処理を行うことができる。これにより、分散RAID構成のストレージシステムにおいて、障害が生じたドライブに格納されたデータの復元速度を速めることが可能となる。
<実施例1の変形例>
ここで、実施例1のストレージシステム10はRAIDレベルがRAID6(2D+2P)であり、4つのパーセルによりパーセルグループが構成されている。従って、障害が生じたドライブ(ストレージデバイス200)にパーセルグループのうち1つのパーセルが含まれており、このパーセルグループについてリビルド処理を行うに当たって、少なくとも2つのパーセルが読み出せればリビルド処理を行うことができる。
そこで、実施例1の変形例では、同一のパーセルグループに属する3つのパーセルのうち、優先リビルド処理を行っている際に2つのパーセルの読み出し及び書き込みを行っているストレージデバイス200である読み出しドライブ及び書き込みドライブ以外にパーセルの読み出しも書き込みも行っていないストレージデバイス200があれば、このストレージデバイス200(ドライブ)に格納されている通常リビルド対象パーセルを用いて通常リビルド処理を行う。
具体的には、図16に示すように、パーセルグループ#10に属するパーセルが格納されているドライブのうち、ドライブ#3は優先リビルド処理の読み出しドライブとして用いられているが、ドライブ#8、#10は優先リビルド処理の読み出しドライブとしても書き込みドライブとしても用いられていない。従って、ストレージコントローラ100は、ドライブ#8、#10に格納されたパーセルを用いて通常リビルド処理を行う。この際、書き込みドライブも、スペアマッピングに従って、優先リビルド処理の読み出しドライブとしても書き込みドライブとしても用いられていないドライブ#9にする。
これにより、優先リビルド処理と並列に行う際の通常リビルド処理に用いられるドライブの選択肢を広げることができ、障害が生じたドライブに格納されたデータの復元速度をより速めることが可能となる。
実施例2のストレージシステム10はRAIDレベルがRAID6(2D+2P)であり、12台のドライブ(ストレージデバイス200)により構成されている。その際のデータマッピングテーブル137(図5)は、リビルド処理の際に各ドライブのリードパーセル数ができるだけ均等化されるようにデータがマッピングされている。これにより、リビルド処理の際の各ドライブのリードパーセル数の偏りによるドライブの性能のボトルネックが解消されることで、リビルド処理時間を短縮できる。
しかしながら、一般的なストレージシステムにおいては、優先リビルド処理は優先リビルド対象パーセルが格納されているドライブのみを選定してリビルド処理を行うため、優先リビルド処理の際に各ドライブのリードパーセル数が偏り、ドライブの性能のボトルネックにより全体のリビルド処理時間が延長される。
そこで、実施例2のストレージシステム10では、優先リビルド処理を行っている際にパーセルの読み出し及び書き込みを行っているストレージデバイス200である読み出しドライブ及び書き込みドライブのうち、最大のパーセル数を読み出すドライブのリードパーセル数及び最大のパーセル数を書き込むドライブのライトパーセル数を取得する。そして、各ドライブのリードパーセル数及びライトパーセル数が、取得した最大のリードパーセル数及び最大のライトパーセル数を超えない範囲でリビルドができる通常リビルド対象パーセルを選定し、選定した通常リビルド対象パーセルを用いて優先リビルド処理と並列に通常リビルド処理を行う。これにより、リビルド処理の際の各ドライブのリードパーセル数の偏りによるドライブの性能のボトルネックが解消されることで、リビルド処理全体にかかる時間のさらなる短縮を図っている。
具体的には、図24の上部に示す図において、優先リビルド処理は読み出しドライブとしてドライブ#2、#3、#5、#7を使用しており、1つの読み出しドライブから最大で1つのパーセルを読み出している。さらに、優先リビルド処理は書き込みドライブとしてドライブ#4、#6を使用しており、1つの書き込みドライブに最大で1つのパーセルを書き込む。そこで、ストレージコントローラ100は、リードパーセル数が1つ以下のドライブであるドライブ#9、#10に格納されているパーセルグループ#1のパーセルを読み出してリビルドを行い、リビルドしたパーセルをライトパーセル数が1つ以下のドライブである#2に書き込む。
図25は、実施例2に係るストレージシステム10の優先リビルド前処理の一例を説明するためのフローチャートである。
まず、リビルド処理プログラム132は、リビルド管理テーブル135の優先コピーポインタ305を初期化する(ステップS800)。次いで、リビルド処理プログラム132は、リビルド管理テーブル135の優先リビルド中ビットマップ306を初期化する(ステップS801)。
次いで、リビルド処理プログラム132は、パーセルグループ冗長度管理テーブル138を参照して、優先リビルド処理の対象となるパーセルグループ#を取得する(ステップS802)。さらに、リビルド処理プログラム132は、ステップS802で取得したパーセルグループ#に基づいて、リビルド管理テーブル135の優先リビルド中ビットマップ306を更新する(ステップS803)。
さらに、リビルド処理プログラム132は、通常リビルド対象パーセルグループを選択する(ステップS804)。通常リビルド対象パーセルグループ選択処理の詳細については後述する。
図26は、実施例2に係るストレージシステム10の優先リビルド処理の一例を説明するためのフローチャートである。
まず、リビルド処理プログラム132は、リビルド管理テーブル135を参照して、優先リビルド中ビットマップ306がONになっているパーセルグループ#をこの優先リビルド中ビットマップ306から取得する(ステップS900)。
次いで、リビルド処理プログラム132は、パーセルコピージョブの多重度を決定する(ステップS901)。そして、リビルド処理プログラム132は、ステップS901で決定したパーセルコピージョブの多重度の数の分のコピー対象パーセルを決定する(ステップS902)。そして、リビルド処理プログラム132は、ステップS902で決定したコピー対象パーセルに対して、リビルド処理を多重起動する(ステップS903)。ステップS903の処理は、対象パーセル内の全ストライプの回復処理が終了するまで(ステップS904においてYES)繰り返される。
この後、リビルド処理プログラム132は、リピテーショングループ内の全対象パーセルについて回復処理を完了したかどうかを判定し(ステップS905)、判定が肯定されたら(ステップS905においてYES)、リビルド処理プログラム132は、リビルド管理テーブル135の優先コピーポインタ305を次のリピテーショングループの先頭に移動させる(ステップS906)。一方、判定が否定されたら(ステップS905においてNO)、処理をステップS902に戻す。
図27は、実施例2に係るストレージシステム10の優先リビルド後処理の一例を示すフローチャートである。
まず、リビルド処理プログラム132は、リビルド管理テーブル135の優先リビルド済ビットマップ307を更新する(ステップS1000)。優先リビルド済ビットマップ307の更新は、優先リビルド中ビットマップ306とのORを取ればよい。次いで、リビルド処理プログラム132は、リビルド管理テーブル135の優先リビルド中ビットマップ306の値に無効値を設定する(ステップS1001)。
この後、リビルド処理プログラム132は、スペアマッピング再生成不要フラグをONに設定し(ステップS1002)、登録先キューに通常リビルドキューを設定し(ステップS1003)、エンキュー処理を行う(ステップS1004)。
図28は、実施例2に係るストレージシステム10の通常リビルド対象パーセルグループ選択処理の一例を示すフローチャートである。図28に示すフローチャートは、図25のフローチャートにおけるステップS804の処理の詳細を示すものである。
まず、リビルド処理プログラム132は、優先リビルド処理時における優先リビルド処理の対象となっているドライブのうち、最大のパーセル数を読み出すドライブのリードパーセル数及び最大のパーセル数を書き込むドライブのライトパーセル数を取得する(ステップS1100)。
次いで、リビルド処理プログラム132は、パーセルグループ冗長度管理テーブル138から、通常リビルド処理の対象となっているパーセルグループ#を取得する(ステップS1101)。
次いで、リビルド処理プログラム132は、ステップS1101で取得したパーセルグループ#のうち、対象パーセルグループ#のリビルドを実施した場合のデータを読み出すドライブ#(ストレージデバイス200)及びデータを書き込むドライブ#を取得する(ステップS1102)。
次いで、リビルド処理プログラム132は、対象パーセルグループのリビルドを実施した場合、優先リビルド処理においてステップS1100で取得した最大リードパーセル数及び最大ライトパーセル数を超過するドライブがあるか否かを判定する(ステップS1103)。
そして、判定が肯定されたら(ステップS1103においてYES)、プログラムはステップS1105に移行する。一方、判定が否定されたら(ステップS1103においてNO)、対象パーセルグループのデータを読み出すドライブ#、データを書き込むドライブ#を基に各ドライブのリードパーセル数、ライトパーセル数を更新する(ステップS1104)。さらに、対象となっているパーセルグループ#に基づいて優先リビルド中ビットマップ306を更新する(ステップS1105)。この後、プログラムはステップS1106に移行する。
ステップS1106では、対象となっている全ての通常リビルド処理についてステップS1103に示す判定を終了したか否かが判定され、判定が肯定されると図28のフローチャートを終了し、判定が否定されるとステップS1102に戻る。
実施例3のストレージシステム10では、ドライブ負荷という概念を用いて優先リビルド処理と並行して行う通常リビルド処理の読み出しドライブ及び書き込みドライブを選定している。一般的に、ドライブ(ストレージデバイス200)に与える負荷は、データ読み出し動作とデータ書き込み動作とで異なる。そこで、次式に示すように、ドライブ負荷を定義する。

ドライブ負荷=(リードパーセル数×α)+(ライトパーセル数×β)
ここで、α、βはドライブの種別毎に異なる値を取る定数である。従って、定数α、βを予め定めておく必要がある。以下の説明では、α=1、β=2とする。そして、このドライブ負荷が優先リビルド処理のみを行った際の最大ドライブ負荷を超えない範囲で読み出しドライブ及び書き込みドライブを選択して、優先リビルド処理に並行して通常リビルドデータの通常リビルド処理を行う。これにより、ドライブに与える影響を平準化できるので、ドライブ負荷の偏りによるドライブの性能のボトルネックが解消されて、リビルド処理全体にかかる時間のさらなる短縮を図っている。
具体的には、図29の上部に示す図において、パーセルグループ#0、#4が優先リビルド処理の対象となっている。そして、優先リビルド処理のみを行った際の最大ドライブ負荷は2となっている。ドライブ負荷が2を超えない範囲でのパーセルの読み出しまたは書き込みを許容することから、同一のドライブにおいて2つのパーセルを同時に読み出すことはできるが、書き込みは1つのパーセルに限られる。
そこで、図29の上部の図に示すように、例えばドライブ#2においては優先リビルド処理としてパーセルグループ#0に属するパーセルを読み出す一方、パーセルグループ#18に属するパーセルを同時に読み出すことができる。一方、リビルドしたデータ書き込みについてはパーセルグループ#0に属するパーセルはドライブ#4のスペア領域に、パーセルグループ#18に属するパーセルについてはドライブ#11のスペア領域にそれぞれ分散して書き込む。
そして、優先リビルド処理が終了したら、図29の下部に示す図のように通常リビルド処理を行う。図29には参考までに優先リビルド処理及び通常リビルド処理を行っている際のドライブ負荷を示している。図29に示すように、通常リビルド処理を単独で行っている際には、優先リビルド処理のみを行った際の最大ドライブ負荷を超えてもよいものとしている。
図30は、実施例3に係るストレージシステム10の通常リビルド対象パーセルグループ選択処理の一例を示すフローチャートである。
まず、リビルド処理プログラム132は、優先リビルド処理時における優先リビルド処理の対象となっている各ドライブのリードパーセル数及びライトパーセル数を取得する(ステップS1200)。
次いで、リビルド処理プログラム132は、優先リビルド処理のみを行った際の最大ドライブ負荷を算出する(ステップS1201)。
次いで、リビルド処理プログラム132は、パーセルグループ冗長度管理テーブル138から、通常リビルド処理の対象となっているパーセルグループ#を取得する(ステップS1202)。
次いで、リビルド処理プログラム132は、ステップS1202で取得したパーセルグループのうち、対象パーセルグループ#のリビルドを実施した場合のデータを読み出すドライブ#(ストレージデバイス200)及びデータを書き込むドライブ#を取得する(ステップS1203)。
次いで、リビルド処理プログラム132は、対象パーセルグループのリビルドを実施した場合、優先リビルド処理のみを行った際の最大ドライブ負荷を超過するドライブがあるか否かを判定する(ステップS1204)。
そして、判定が肯定されたら(ステップS1204においてYES)、プログラムはステップS1206に移行する。一方、判定が否定されたら(ステップS1204においてNO)、対象パーセルグループのデータを読み出すドライブ#、データを書き込むドライブ#を基に各ドライブのリードパーセル数、ライトパーセル数を更新する(ステップS1205)。さらに、対象となっているパーセルグループに基づいて優先リビルド中ビットマップ306を更新する(ステップS1206)。この後、プログラムはステップS1207に移行する。
ステップS1207では、対象となっている全ての通常リビルド処理についてステップS1204に示す判定を終了したか否かが判定され、判定が肯定されると図30のフローチャートを終了し、判定が否定されるとステップS1203に戻る。
なお、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
10…ストレージシステム、40…ストレージ装置、100…ストレージコントローラ、110…ホストインターフェイス、120…CPU、130…ローカルメモリ、132…リビルド処理プログラム、135…リビルド管理テーブル、137…データマッピングテーブル、138…パーセルグループ冗長度管理テーブル、140…ストレージインターフェイス

Claims (11)

  1. 複数のドライブと、これら複数のドライブにより分散RAIDを構成させるプロセッサとを有するストレージシステムにおいて、
    前記プロセッサは、少なくとも二つの前記ドライブに障害が生じた際に、障害が生じた前記ドライブに格納されているデータを他の前記ドライブに復元させるリビルド処理を行うとき、優先的にリビルドする優先リビルドデータを選定し、この優先リビルドデータの復元のために前記データを読み出す読み出しドライブと復元した前記優先リビルドデータを書き込む書き込みドライブとを特定してリビルド処理を行う優先リビルド処理と、前記優先リビルドデータ以外の前記データである通常リビルドデータに対して前記読み出しドライブと前記書き込みドライブとを特定してリビルド処理を行う通常リビルド処理とを並行して行うことを特徴とするストレージシステム。
  2. 前記プロセッサは、前記優先リビルド処理が終了したら、前記優先リビルド処理及び前記通常リビルド処理で復元されなかった前記データのリビルド処理を行うことを特徴とする請求項1に記載のストレージシステム。
  3. 前記プロセッサは、前記データの冗長度に基づいて前記優先リビルドデータを選定することを特徴とする請求項1に記載のストレージシステム。
  4. 前記プロセッサは、障害が生じた前記ドライブに格納された前記データのうち、より冗長度が低い前記データを前記優先リビルドデータとして前記優先リビルド処理を行い、前記優先リビルドデータより冗長度が高い前記データを前記通常リビルドデータとして前記通常リビルド処理を行うことを特徴とする請求項3に記載のストレージシステム。
  5. 前記ドライブにはスペア領域が設けられ、
    前記プロセッサは、リビルド処理を行う際に前記スペア領域に前記データを書き込むことを特徴とする請求項1に記載のストレージシステム。
  6. 前記ドライブに格納されるデータは、前記ストレージシステムの外部にあるホストコンピュータから書き込み指示がされたユーザデータとこのユーザデータに基づいて生成される冗長データとの組からなり、
    前記プロセッサは前記ユーザデータと前記冗長データとの組単位で前記リビルド処理を行う
    ことを特徴とする請求項1に記載のストレージシステム。
  7. 前記プロセッサは、前記通常リビルド処理において、前記書き込みドライブ及び前記読み出しドライブとして前記優先リビルド処理で特定された前記書き込みドライブ及び前記読み出しドライブの双方を特定しないようにしてリビルド処理を行うことを特徴とする請求項1に記載のストレージシステム。
  8. 同一のパーセルグループに属するパーセルが複数の前記ドライブに格納されており、
    前記プロセッサは、前記通常リビルド処理において、前記書き込みドライブとして前記優先リビルド処理で特定された前記書き込みドライブに同一の前記パーセルグループに属する前記パーセルのうち少なくとも一つの前記パーセルが格納されているとき、前記優先リビルド処理で特定された前記書き込みドライブ以外の前記ドライブに格納されている同一の前記パーセルグループに属する前記パーセルを用いてリビルド処理を行う
    ことを特徴とする請求項1に記載のストレージシステム。
  9. 同一のパーセルグループに属するパーセルが複数の前記ドライブに格納されており、
    前記プロセッサは、前記優先リビルド処理において最大のパーセル数を読み出す前記読み出しドライブのパーセル数及び最大のパーセル数を書き込む前記書き込みドライブのパーセル数を超えない範囲で前記通常リビルド処理が行えるパーセルを選定して前記通常リビルド処理を行う
    ことを特徴とする請求項1に記載のストレージシステム。
  10. 前記プロセッサは、前記通常リビルド処理において、予め定められた前記書き込みドライブと前記読み出しドライブとのドライブ負荷率に基づいて前記書き込みドライブと前記読み出しドライブとを特定してリビルド処理を行うことを特徴とする請求項1に記載のストレージシステム。
  11. 複数のドライブと、これら複数のドライブにより分散RAIDを構成させるプロセッサとを有するストレージシステムにおけるリビルド処理方法であって、
    少なくとも二つの前記ドライブに障害が生じた際に、障害が生じた前記ドライブに格納されているデータを他の前記ドライブに復元させるリビルド処理を行うとき、優先的にリビルドする優先リビルドデータを選定し、この優先リビルドデータの復元のために前記データを読み出す読み出しドライブと復元した前記優先リビルドデータを書き込む書き込みドライブとを特定してリビルド処理を行う優先リビルド処理と、前記優先リビルドデータ以外の前記データである通常リビルドデータに対して前記読み出しドライブと前記書き込みドライブとを特定してリビルド処理を行う通常リビルド処理とを並行して行う
    ことを特徴とするストレージシステムにおけるリビルド処理方法。

JP2019230631A 2019-12-20 2019-12-20 ストレージシステム及びストレージシステムのリビルド処理方法 Pending JP2021099624A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019230631A JP2021099624A (ja) 2019-12-20 2019-12-20 ストレージシステム及びストレージシステムのリビルド処理方法
US17/029,297 US11379327B2 (en) 2019-12-20 2020-09-23 Storage system and rebuilding method for storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019230631A JP2021099624A (ja) 2019-12-20 2019-12-20 ストレージシステム及びストレージシステムのリビルド処理方法

Publications (1)

Publication Number Publication Date
JP2021099624A true JP2021099624A (ja) 2021-07-01

Family

ID=76437262

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019230631A Pending JP2021099624A (ja) 2019-12-20 2019-12-20 ストレージシステム及びストレージシステムのリビルド処理方法

Country Status (2)

Country Link
US (1) US11379327B2 (ja)
JP (1) JP2021099624A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403024B2 (en) * 2019-08-28 2022-08-02 Cohesity, Inc. Efficient restoration of content

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516425B1 (en) * 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US10747616B2 (en) * 2015-03-31 2020-08-18 Pure Storage, Inc. Adapting rebuilding of encoded data slices in a dispersed storage network
JP5391993B2 (ja) * 2009-10-19 2014-01-15 富士通株式会社 ディスクアレイ装置
US9898373B2 (en) * 2010-04-26 2018-02-20 International Business Machines Corporation Prioritizing rebuilding of stored data in a dispersed storage network
US9292389B2 (en) * 2014-01-31 2016-03-22 Google Inc. Prioritizing data reconstruction in distributed storage systems
JP6244974B2 (ja) 2014-02-24 2017-12-13 富士通株式会社 ストレージ装置、及びストレージ装置の制御方法
US10825477B2 (en) * 2018-08-02 2020-11-03 Western Digital Technologies, Inc. RAID storage system with logical data group priority
US11366601B2 (en) * 2020-06-22 2022-06-21 EMC IP Holding Company LLC Regulating storage device rebuild rate in a storage system

Also Published As

Publication number Publication date
US20210191828A1 (en) 2021-06-24
US11379327B2 (en) 2022-07-05

Similar Documents

Publication Publication Date Title
US10528274B2 (en) Storage system and data management method
US7594075B2 (en) Metadata for a grid based data storage system
JP5056747B2 (ja) 記憶領域管理装置、記憶領域管理方法
US20090037656A1 (en) Storage system having raid level changing function
US20050050381A1 (en) Methods, apparatus and controllers for a raid storage system
EP2051166B1 (en) Storage system
US8812779B2 (en) Storage system comprising RAID group
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
JP6889742B2 (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
US6993676B2 (en) Method and apparatus for fast initialization of redundant arrays of storage devices
US20020194427A1 (en) System and method for storing data and redundancy information in independent slices of a storage device
CN110737393A (zh) 数据读取方法、设备和计算机程序产品
CN110096219B (zh) 从驱动器组生成的驱动器区段池的有效容量
JP2000511318A (ja) 階層記憶管理システムのための変換式raid
US10678470B2 (en) Computer system,control method for physical storage device,and recording medium
CN111124262B (zh) 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质
WO2016142998A1 (ja) 計算機システム
CN106168920A (zh) 控制包括只读闪速数据存储设备的独立磁盘冗余阵列(raid)
US20220027070A1 (en) Storage system and storage management method
WO2014188479A1 (ja) ストレージ装置及びストレージ装置の制御方法
JP2021099624A (ja) ストレージシステム及びストレージシステムのリビルド処理方法
US11880278B2 (en) Storage system and storage administration method
US20130159765A1 (en) Storage subsystem and method for recovering data in storage subsystem
US11256428B2 (en) Scaling raid-based storage by redistributing splits
US20200183605A1 (en) Extent based raid encoding