JP6052288B2 - ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム - Google Patents

ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム Download PDF

Info

Publication number
JP6052288B2
JP6052288B2 JP2014524569A JP2014524569A JP6052288B2 JP 6052288 B2 JP6052288 B2 JP 6052288B2 JP 2014524569 A JP2014524569 A JP 2014524569A JP 2014524569 A JP2014524569 A JP 2014524569A JP 6052288 B2 JP6052288 B2 JP 6052288B2
Authority
JP
Japan
Prior art keywords
data
stripe
parity
data block
block
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.)
Active
Application number
JP2014524569A
Other languages
English (en)
Other versions
JPWO2014010077A1 (ja
Inventor
智樹 河田
智樹 河田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2014010077A1 publication Critical patent/JPWO2014010077A1/ja
Application granted granted Critical
Publication of JP6052288B2 publication Critical patent/JP6052288B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1061Parity-single bit-RAID4, i.e. RAID 4 implementations

Description

本発明は、ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラムに関する。
ディスクアレイとして、RAID5ボリュームやRAID4ボリュームと呼ばれているものが存在している。
RAID5ボリュームは、耐障害性の向上と高速化、大容量化のすべてを実現できるという利点を有している。ただし、RAID5ボリューム及びRAID4ボリュームでは、データをディスクに記録する際、パリティ生成のためのデータをディスクから読み出し、パリティを算出(生成)してディスクに書き込む処理が行われる。そのため、RAID5ボリューム及びRAID4ボリューム(以下、パリティ付きストライプセットと表記する)は、データライト時のオーバーヘッドが比較的に大きなもの(書き込み性能が高くないもの)となっている。
特開2007−34877号公報 特開2002−157149号公報 特許第4836732号公報 特開2009−116809号公報 特開2005−11317号公報
開示の技術の課題は、パリティ付きストライプセットにおけるパリティの算出に要する時間を短縮できる技術を提供することにある。
開示の技術の一態様のディスクアレイ制御装置は、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含み、
前記制御部は、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する。
また、開示の技術の一態様のディスクアレイ制御方法は、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための方法であって、
コンピュータが、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能なテーブルをメモリ上に用意し、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記テーブルに、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプのパリティブロックへ書き込むパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記テーブルに記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する。
また、開示の技術の一態様のディスクアレイ制御プログラムは、
コンピュータを、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含む装置であって、
前記制御部が、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する
装置として動作させる。
尚、開示の技術の一態様のディスクアレイ制御プログラムは、CD−ROM(Compact Disc Read Only Memory)、Flashメモリ等のコンピュータ可読媒体に記録して配布することが出来る。
開示の技術によれば、パリティ付きストライプセットにおけるパリティの算出に要する時間を短縮することが出来る。
図1は、実施形態に係るディスクアレイ制御装置の構成及び使用形態の説明図である。 図2は、実施形態に係るディスクアレイ制御装置内のコントローラが実行するデータライト処理の流れ図である。 図3は、コントローラが実行するデータリード処理の流れ図である。 図4は、コントローラが実行するデータ破棄処理の流れ図である。 図5は、コントローラが実行するリビルド処理の流れ図である。 図6は、コントローラが実行する一貫性チェック処理の流れ図である。
以下、本発明を実施するための形態について、図面を参照して詳細に説明する。
まず、図1を用いて、本発明の一実施形態に係るディスクアレイ制御装置10の構成及び使用形態を説明する。
図1に示してあるように、本実施形態に係るディスクアレイ制御装置10は、コントローラ11及びFlashメモリ15を備えた装置である。また、ディスクアレイ制御装置10は、1台以上(図1では、1台)のホスト60と複数台(図1では、3台)のハードディスクドライブ50(以下、ディスク50とも表記する)とに接続されて使用される装置となっている。
Flashメモリ15は、その記憶領域の一部が、状況管理テーブル16(詳細は後述)として使用される書き換え可能な不揮発性メモリである。
コントローラ11は、制御プログラム13を記憶したFlashメモリ12、制御プログラム13を実行するプロセッサ(図示略)等を内蔵したRAID(Redundant Arrays of Inexpensive Disks)コントローラチップである。このコントローラ11は、既存のRAIDコントローラチップのファームウェアを制御プログラム13に変えたものであるため、コントローラ11の具体的な回路構成の説明は省略する。
以下、本実施形態に係るディスクアレイ制御装置10の動作を説明する。
ディスクアレイ制御装置10は、接続されている複数台のディスク50の中からオペレータにより選択された複数台のディスク50を、各種RAIDレベルのディスクアレイ(論理ボリューム)として機能させることが出来る装置である。ただし、ディスクアレイ制御装置10は、複数台のディスク50を、パリティ付きストライプセット(RAID5ボリューム又はRAID4ボリューム)として機能させる際の動作内容に特に特徴があるものとなっている。そして、RAID5ボリュームの方がRAID4ボリュームよりも高性能なので、以下では、複数台のディスク50をRAID5ボリュームとして機能させる際の動作内容を中心に、ディスクアレイ制御装置10の動作を説明することにする。
RAID5ボリューム(又はRAID4ボリューム)を実現/構築するためには、少なくとも3台のディスク50が必要である。従って、ディスクアレイ制御装置10を用いてRAID5ボリュームを実現/構築する場合には、ディスクアレイ制御装置10に3台以上のディスク50が接続される。その後、オペレータにより、ホスト60(又は他のコンピュータ)を用いて、ディスクアレイ制御装置10に対して、少なくとも3台のディスク50を指定してRAID5ボリュームの作成を指示する作業が行われる。
RAID5ボリュームの作成が指示されると、コントローラ11は、Flashメモリ15上に、当該ボリュームに関する状況管理テーブル16を作成する。
図1に示してあるように、状況管理テーブル16は、RAID5ボリューム化が指示された複数台(図1では、3台)のディスク50のそれぞれのブロック(所定サイズの記憶領域)毎に、そのブロックについての状況値を記憶可能なテーブルである。
以下、RAID5ボリューム化が指示されたM台のディスク50、それらの中の1台のディスク50ことを、それぞれ、単に、M台のディスク50、ディスク50と表記する。また、各ディスク50の、データが記憶されるブロックのことをデータブロックと表記し、各ディスク50の、パリティが記憶されるブロックのことをパリティブロックと表記する。さらに、それらに記憶されているデータからパリティが算出されるM−1個のデータブロックと、算出されたパリティが記憶されるパリティブロックとからなる総計M個のブロックのことを、ストライプと表記する。
状況管理テーブル16(図1)に記憶される状況値としては、3種の状況値“0”、“1”及び“P”がある。
状況値“1”は、データブロックについての状況値としてのみ使用される、データブロックが有効なデータを保持していることを示す情報である。状況値“P”は、パリティブロックについての状況値としてのみ使用される、パリティブロックが有効なパリティを保持していることを示す情報である。状況値“0”は、データブロック、パリティブロックのいずれについての状況値としても使用される、データ/パリティブロックが、本来、ALL0データ(全ビットが“0”のデータ)を保持しているべきブロックであることを示す情報である。尚、各状況値としては、例えば、「状況値“0”=00b、状況値“1”=01b、状況値“P”=11b」といったように、通常、2ビットのデータが使用される。
RAID5ボリュームの作成が指示された場合、コントローラ11は、M(≧3)台のディスク50の各ブロック(データ/パリティブロック)について状況値を記憶可能な、空の状況管理テーブル16を作成する。そして、コントローラ11は、ディスクアレイの作成完了をホスト60に通知する。
その後、オペレータによりホスト60に対して所定の操作がなされ、その結果として、ホスト60からコントローラ11(ディスクアレイ制御装置10)に、作成したRAID5ボリューム(ディスクアレイ)の初期化を指示する初期化コマンドが送信される。
初期化コマンドを受信した場合、コントローラ11は、各ディスク50を実際に初期化する(各ディスク50内の各ブロックにALL0データを書き込む)ことなく、状況管理テーブル16上の各ブロックに関する状況値を“0”に初期化する。そして、コントローラ11は、初期化の完了をホスト60に通知してから、ホスト60からの各種コマンドに応答できる状態となる。
コントローラ11がホスト60から受信するコマンドには、ライトコマンド、リードコマンド、データ破棄コマンド、リビルドコマンド、一貫性チェックコマンド等がある。
以下、各コマンドに対するコントローラ11の動作を順に説明する。
《ライトコマンドに対するコントローラ11の動作》
コントローラ11がホスト60から受信するライトコマンドは、RAID5ボリュームのブロックサイズの整数倍のサイズの、書き込み開始位置が或るブロックの先頭位置と一致しているデータの書き込みを要求するコマンドである。コントローラ11は、全ディスク50が正常に機能している場合にのみ、ライトコマンドを受け付ける(受信したライトコマンドに応答する)。換言すれば、ディスクアレイ制御装置10は、RAID5ボリューム(M台のディスク50)がストレージとして機能し得る場合であっても、RAID5ボリュームの冗長性が失われている場合には、ライトコマンドを受け付けない装置となっている。
ライトコマンドを受信した場合、コントローラ11は、受信したライトコマンドを、1データブロックへのデータの書き込みを要求する幾つかのライト要求に分割する。そして、コントローラ11は、各ライト要求について、図2に示した手順のデータライト処理を行う。尚、図2及び図2に関する以下の説明において、ライトデータとは、データライト処理の処理対象となっているライト要求が書き込みを要求している1ブロックサイズ分のデータのことである。また、注目データブロックとは、ライトデータが書き込まれるべきデータブロックのことであり、注目ストライプとは、注目データブロックを含むストライプのことである。
すなわち、或るライト要求に対するデータライト処理を開始したコントローラ11は、まず、状況管理テーブル16から、注目ストライプの各データブロックに関する状況値を読み出す(ステップS101)。
次いで、コントローラ11は、ライトデータを注目データブロックに書き込む(ステップS102)。
その後、コントローラ11は、パリティ算出処理(ステップS103)を行うことにより、注目ストライプに関するパリティ(注目ストライプのパリティブロックに書き込むべきパリティ)を算出する。
具体的には、このパリティ算出処理時、コントローラ11は、まず、ステップS101の処理で読み出した状況値が“1”となっている、注目データブロック以外の各データブロックから、各データブロック上の全データ(1ブロックサイズ分のデータ)を読み出す。そして、コントローラ11は、そのようなデータの読み出しにより、パリティの算出に必要とされるデータ(ライトデータ以外のM−2個のデータ)が揃った場合には、それらのデータとライトデータの排他的論理和(つまり、注目ストライプに関するパリティ)を算出して、パリティ算出処理を終了する。
一方、パリティの算出に必要とされるデータが揃わなかった場合、コントローラ11は、不足している各データとして、1ブロックサイズ分のALL0データを用いて、注目ストライプに関するパリティを算出する。
すなわち、上記のようなデータの読み出しにより、パリティの算出に必要とされるデータ(ライトデータ以外のM−2個のデータ)が揃わないのは、状況値が“0”となっている幾つかのデータブロックが存在している場合である。状況値の具体的な更新手順については順次説明していくが、既に説明したように、状況管理テーブル16上の状況値“0”は、データ/パリティブロックが、本来、ALL0データを保持しているべきブロックであることを示す情報となっている。従って、不足している各データとしてALL0データを用いることにより、注目ストライプに関するパリティが算出できることになる。
幾つかのALL0データを用いて注目ストライプに関するパリティを算出したコントローラ11は、パリティ算出処理(ステップS103)を終了する。
パリティ算出処理を終えた(ALL0データを用いて又はALL0データを用いずにパリティを算出した)コントローラ11は、算出したパリティを、注目ストライプのパリティブロックに書き込む(ステップS104)。次いで、コントローラ11は、状況管理テーブル16上の、今回、情報(データ/パリティ)を書き込んだデータブロック(注目データブロック)、パリティブロックに関する状況値を、それぞれ、“1”、“P”に更新する(ステップS105)。尚、このステップS105の処理は、いずれか一方の状況値の値、又は双方の状況値の値が、変わらない場合もある処理である。
ステップS105の処理を終えたコントローラ11は、このデータライト処理(図2の処理)を終了する。
そして、コントローラ11は、受信したライトコマンドの分割により得られた全ライト要求に対するデータライト処理が完了したときに、ホスト60にデータの書込が完了したことを通知してから、受信したライトコマンドに対する処理を終了する。
《リードコマンドに対するコントローラ11の動作》
コントローラ11がホスト60から受信するリードコマンドは、RAID5ボリュームのブロックサイズの整数倍のサイズの、読み出し開始位置が或るブロックの先頭位置と一致しているデータの読み出しを要求するコマンドである。尚、コントローラ11は、M台のディスク50が全て正常に機能している場合と、M−1台のディスク50が正常に機能している場合とに、リードコマンドを受け付ける。
リードコマンドを受信した場合、コントローラ11は、受信したリードコマンドを、1データブロックのデータの読み出しを要求する幾つかのリード要求に分割する。そして、コントローラ11は、各リード要求について、図3に示した手順のデータリード処理を行う。尚、図3及び図3に関する以下の説明において、リードデータとは、データリード処理の処理対象となっているリード要求が読み出しを要求している1データブロック上のデータのことである。注目データブロックとは、リードデータが格納されているデータブロックのことである。また、注目ストライプとは、注目データブロックを含むストライプのことであり、リード対象ディスクとは、注目データブロックを有するディスク50のことである。
図3に示してあるように、或るリード要求に対するデータリード処理を開始したコントローラ11は、まず、状況管理テーブル16から、注目ストライプの各ブロック(データ/パリティブロック)に関する状況値を読み出す(ステップS201)。
そして、コントローラ11は、状況管理テーブル16から読み出した注目データブロックについての状況値が“0”であるか否かを判断する(ステップS202)。
注目データブロックに関する状況値が“0”であった場合(ステップS202;YES)、コントローラ11は、何れのディスク50にもアクセスすることなく、処理中のリード要求に対する応答データとしてALL0データを記憶する(ステップS203)。そして、コントローラ11は、このデータリード処理を終了する。
一方、注目データブロックに関する状況値が“1”であった場合(ステップS202;NO)、コントローラ11は、リード対象ディスク(注目データブロックを有するディスク50)が故障中であるか否かを判断する(ステップS204)。
リード対象ディスクが故障中ではなかった場合(ステップS204;NO)、コントローラ11は、リード対象ディスクの注目データブロックからリードデータを読み出して、処理中のリード要求に対する応答データとして記憶する(ステップS205)。
また、リード対象ディスクが故障中であった場合(ステップS204;YES)、コントローラ11は、ステップS205にて、他のM−1台のディスク50内のデータから、リードデータを生成(復旧)するデータ生成処理を行う。このデータ生成処理時、コントローラ11は、ステップS201の処理で読み出した状況値が“1”となっている、注目データブロック以外の各ブロックから、データ/パリティを読み出す。そして、コントローラ11は、各ブロックからのデータの読み出しによりリードデータを生成するのに必要なデータが揃った場合には、それらのデータからリードデータを生成して、データ生成処理を終了する。
一方、上記データの読み出しでは、リードデータを生成するのに必要なデータが揃わなかった場合、コントローラ11は、不足している各データとしてALL0データを用いてリードデータを生成する。そして、コントローラ11は、データ生成処理を終了する。
上記内容のデータ生成処理によりリードデータを生成したコントローラ11は、生成したリードデータを処理中のリード要求に対する応答データとして記憶する。そして、コントローラ11は、ステップS206の処理及びデータリード処理(図2の処理)を終了する。
コントローラ11は、リードコマンドを分割した全リード要求に対するデータリード処理が完了したときに、各リード要求に対する応答データとして記憶しているデータを繋げたデータをホスト60に送信する。そして、コントローラ11は、受信したリードコマンドに対する処理を終了する。
《データ破棄コマンドに対するコントローラ11の動作》
データ破棄コマンドは、或るアドレス範囲内のデータの破棄(“0”クリア)を指示するためにホスト60が送信するコマンド(アドレス範囲の指定情報を含むコマンド)である。
このデータ破棄コマンドを受信した場合、コントローラ11は、図4に示した手順のデータ破棄処理を実行する。
すなわち、データ破棄コマンドを受信したコントローラ11は、まず、状況管理テーブル16上の情報に基づき、指定破棄範囲に、全領域が含まれる各データブロックと一部の領域が含まれる各データブロックとを特定する(ステップS301)。ここで、指定破棄範囲とは、受信したデータ破棄コマンドにてデータを破棄することが指示されているアドレス範囲のことである。
次いで、コントローラ11は、全領域が指定破棄範囲に含まれる1つ以上のデータブロックを特定できたか否かを判断する(ステップS302)。全領域が指定破棄範囲に含まれる1つ以上のデータブロックを特定できた場合(ステップS302;YES)、コントローラ11は、当該1つ以上のデータブロックを実際に“0”クリアすることなく、状況管理テーブル16上の、当該1つ以上のデータブロックのそれぞれについての状況値を“0”に変更する(ステップS303)。
その後、コントローラ11は、一部の領域が指定破棄範囲に含まれる1つ以上のデータブロックを特定できたか否かを判断する(ステップS304)。尚、全領域が指定破棄範囲に含まれるデータブロックが全く特定できなかった場合(ステップS302;NO)、ステップS303の処理を行うことになく、ステップS304の処理(判断)を行う。
一部の領域が指定破棄範囲に含まれるデータブロックが1つも特定できなかった場合(ステップS304;NO)、コントローラ11は、このデータ破棄処理(図4の処理)を終了する。一方、一部の領域が指定破棄範囲に含まれる1つ又は2つのデータブロックが特定できた場合(ステップS304;YES)、コントローラ11は、各データブロックの指定破棄範囲内の部分を“0”クリアする(ステップS305)。その後、コントローラ11は、このデータ破棄処理を終了する。
《リビルドコマンドに対するコントローラ11の動作》
リビルドコマンドは、或るディスク50が故障した場合に、そのディスク50を正常な新ディスク50に交換してから、コントローラ11に対して送信されるコマンドである。
リビルドコマンドを受信した場合、コントローラ11は、図5に示した手順のリビルド処理を実行する。尚、図5及び以下の説明において、復旧対象ブロックとは、新ディスク50の或るデータ/パリティブロックのことであり、正常ディスク50とは、元からあったディスク50(新ディスク50ではないディスク50)のことである。有効データブロック、無効データブロックとは、それぞれ、状況管理テーブル16上の状況値が“1”、“0”となっている正常ディスク50内のデータブロックのことである。
図5に示してあるように、リビルドコマンドの受信によりこのリビルド処理を開始したコントローラ11は、まず、RAID5ボリュームの最初のストライプを処理対象ストライプとして選択する(ステップS401)。次いで、コントローラ11は、処理対象ストライプの各ブロック(データ/パリティブロック)に関する状況値を状況管理テーブル16から読み出す(ステップS402)。そして、コントローラ11は、読み出した状況値に基づき、処理対象ストライプに有効データブロックが含まれているか否かを判断する(ステップS403)。
処理対象ストライプに有効データブロックが含まれていた場合(ステップS403;YES)、コントローラ11は、読み出してある状況値に基づき、さらに、処理対象ストライプに無効データブロックが含まれているか否かを判断する(ステップS404)。
尚、或るデータブロックに関する状況値が“1”である場合(或るデータブロックが有効データブロックである場合)、常に、そのデータブロックと同じストライプに含まれるパリティブロックに関する状況値は、“P”となっている(図2、図4参照)。従って、ステップS403でYES側への分岐が行われる場合、処理対象ストライプのパリティブロックが正常ディスク50内に存在しているのであれば、当該パリティブロックにも有効なデータが記憶されていることになる。
コントローラ11は、処理対象ストライプに無効データブロックが含まれていなかった場合(ステップS404;NO)、通常復旧処理(ステップS405)を行う。ここで、通常復旧処理とは、M−1台の正常ディスク50のそれぞれから、処理対象ストライプに関するデータ/パリティブロック上の情報を読み出し、読み出したM−1個の情報から、復旧対象ブロック用のデータ/パリティを生成し、生成したデータ/パリティを復旧対象ブロックに書き込む処理のことである。
一方、処理対象ストライプに無効データブロックが含まれていた場合(ステップS404;YES)、コントローラ11は、ステップS406にて、以下の内容の特殊復旧処理を行う。
特殊復旧処理を開始したコントローラ11は、処理対象ストライプの各正常ディスク50内の有効データブロック(又は、パリティブロック)に記憶されている情報を、各正常ディスク50から読み出す。その後、コントローラ11は、復旧対象データを復旧するのに必要とされる他の各データとしてALL0データを使用して、復旧対象ブロック用のデータ/パリティを生成する。そして、コントローラ11は、生成したデータ/パリティを復旧対象ブロックに書き込んでから、特殊復旧処理を終了する。
特殊復旧処理又は通常復旧処理を終えたコントローラ11は、未処理ストライプが残っているか否かを判断する(ステップS407)。
未処理ストライプが残っていた場合(ステップS407;YES)、コントローラ11は、次ストライプを処理対象ストライプとして選択(ステップS408)してから、ステップS402以降の処理を再び開始する。
また、コントローラ11は、処理対象ストライプに有効データブロックが含まれていなかった場合(ステップS403;NO)には、特殊復旧処理/通常復旧処理を行うことなく、ステップS407の判断を行う。
すなわち、処理対象ストライプに有効データブロックが含まれていないのは、処理対象ストライプの全データブロックの状況値とパリティブロックの状況値とが全て“0”である場合、及び、処理対象ストライプの全データブロックの状況値が“0”であり、パリティブロックの状況値が“P”である場合(図4参照)である。そして、これらの場合は、いずれも、復旧対象ブロック上の情報(データ/パリティ)を復旧する必要がない場合である。そのため、コントローラ11は、処理対象ストライプに有効データブロックが含まれていなかった場合(ステップS403;NO)、復旧処理(特殊復旧処理又は通常復旧処理)をスキップ/省略して、未処理ストライプが残っているか否かを判断する(ステップS407)。
そして、コントローラ11は、全てのストライプに対する処理が終わったときに(ステップS407;NO)、このリビルド処理を終了する。
《一貫性チェックコマンドに対するコントローラ11の動作》
一貫性チェックコマンドは、各ストライプ内のデータに一貫性があるか否かをチェックすることを要求するコマンドである。尚、「或るストライプ内のデータに一貫性がある」とは、「或るストライプの各データブロック上のデータから算出したパリティと当該ストライプのパリティブロック上のパリティとが一致する」ということである。
一貫性チェックコマンドを受信した場合、コントローラ11は、図6に示した手順の一貫性チェック処理を実行する。
すなわち、一貫性チェックコマンドを受信したコントローラ11は、まず、最初のストライプを処理対象ストライプとして選択する(ステップS501)。次いで、コントローラ11は、処理対象ストライプの各ブロック(データ/パリティブロック)に関する状況値を状況管理テーブル16から読み出す(ステップS502)。
その後、コントローラ11は、読み出した状況値に基づき、処理対象ストライプに有効データブロックが含まれているか否かを判断する(ステップS503)。ここで、有効データブロックとは、状況管理テーブル16上の状況値が“1”となっているデータブロックのことである。
処理対象ストライプに有効データブロックが含まれていた場合(ステップS503;YES)、コントローラ11は、読み出してある状況値に基づき、さらに、処理対象ストライプに、無効データブロック(状況値が“0”となっているデータブロック)が含まれているか否かを判断する(ステップS504)。
コントローラ11は、処理対象ストライプに無効データブロックが含まれていなかった場合(ステップS504;NO)、ステップS505にて、以下の内容の通常一貫性チェック処理を行う。
通常一貫性チェック処理を開始したコントローラ11は、まず、各ディスク50から処理対象ストライプのデータブロック又はパリティブロック上の情報(データ/パリティ)を読み出す。その後、コントローラ11は、読み出したM−1個のデータのパリティを算出し、算出結果がパリティブロックから読み出してあるパリティと一致しているか否かをチェックする。そして、コントローラ11は、チェック結果を記憶してから通常一貫性チェック処理を終了する。
一方、処理対象ストライプに無効データブロックが含まれていた場合(ステップS504;YES)、コントローラ11は、ステップS506にて、以下の内容の特殊一貫性チェック処理を行う。
特殊一貫性チェック処理を開始したコントローラ11は、処理対象ストライプの全有効データブロック及びパリティブロックのそれぞれに記憶されている情報を、各ブロックを備えたディスク50から読み出す。その後、コントローラ11は、処理対象ストライプに関するパリティの算出に必要な残りの各データとしてALL0データを使用して、パリティを算出する。そして、コントローラ11は、生成したパリティが、処理対象ストライプのパリティブロックから読み出してあるパリティと一致しているか否かをチェックし、チェック結果を記憶してから特殊一貫性チェック処理を終了する。
通常/特殊一貫性チェック処理(ステップS505又はS506)を終えたコントローラ11は、未処理ストライプが残っているか否かを判断する(ステップS507)。
未処理ストライプが残っていた場合(ステップS507;YES)、コントローラ11は、次ストライプを処理対象ストライプとして選択(ステップS508)してから、ステップS502以降の処理を再び開始する。
また、処理対象ストライプに有効データブロックが含まれていなかった場合(ステップS503;NO)、コントローラ11は、通常/特殊一貫性チェック処理を行うことなく、ステップS507の判断を行う。
コントローラ11は、全ストライプに対する処理が終わった場合(ステップS507;NO)には、各通常/特殊一貫性チェック処理のチェック結果を纏めた情報をホスト60に対して送信する(ステップS509)。そして、コントローラ11は、この一貫性チェック処理を終了する。
以上、説明したように、本実施形態に係るディスクアレイ制御装置10は、制御対象となっているパリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、“0”が状況値として状況管理テーブル16に記憶されている各データブロックのデータについては、各データブロックを有するディスク50にアクセスすることなく、各データブロックのデータがALL0データであるとしてパリティを算出する(図2参照)機能を有している。
すなわち、ディスクアレイ制御装置10は、通常のディスクアレイ制御装置よりもパリティの算出時にディスク50から読み出すデータの数が少ない場合がある装置となっている。そして、ディスク50から読み出すデータの数が減れば、パリティの算出に要する手間/時間が減るのであるから、ディスクアレイ制御装置10は、既存のディスクアレイ制御装置よりも、パリティの生成に要する時間(平均時間)が短い装置となっていると言うことが出来る。さらに、パリティの生成に要する時間が短ければ、データの書き込みに要する時間も短くなる。従って、本実施形態に係るディスクアレイ制御装置10によれば、既存のディスクアレイ制御装置よりも、データの書き込み速度が速いパリティ付きストライプセットを実現できることになる。
また、ディスクアレイ制御装置10は、或るデータブロック上のデータの破棄が指示された場合に、当該データブロックに関する状況値を“0”に戻す機能(図4参照)を有している。従って、本ディスクアレイ制御装置10を用いておけば、或るデータブロック上のデータがファイルシステム上では削除されているのも拘わらず、そのデータブロックの状況値が“1”となっているが故に、当該データブロックからのデータの読み出しが省略されないといったことが生ずるのを抑止できることにもなる。
ディスクアレイ制御装置10は、或るデータブロックからデータを読み出すべきときに、当該データブロックを有するディスク50が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に、状況値“0”が状況管理テーブル16に記憶されているK個のデータブロックがあった場合、K台のディスク50からデータを読み出すことなく、当該データブロックのデータを生成する機能(図3参照)も有している。従って、ディスクアレイ制御装置10は、1台のディスク50が故障している場合におけるデータの平均的な読み出し速度が速い装置となっていることにもなる。
さらに、ディスクアレイ制御装置10は、リビルド/一貫性チェック時に、状況管理テーブル16上の情報に基づき、実際に処理が必要なストライプのみを処理する機能(図5,図6参照)を有してる。従って、ディスクアレイ制御装置10によれば、パリティ付きストライプセット(RAID5ボリューム等)のリビルド、一貫性チェックの双方が高速に行えることにもなる。
《変形形態》
上記したディスクアレイ制御装置10は、各種の変形を行えるものである。例えば、ディスクアレイ制御装置10を、ハードディスクドライブ50ではない記憶装置(SSD(Solid State Drive)等)をパリティ付きストライプセットとして機能させる装置に変形することが出来る。また、制御プログラム13をパーソナルコンピュータ用のものにプログラミングしなおすことにより、ディスクアレイ制御装置10が行っているものと同様の制御をパーソナルコンピュータに行わせることも出来る。
さらに、ディスクアレイ制御装置10から幾つかの機能を取り除いておいても良いことや、ディスク50等の記憶装置に対する具体的な制御手順を上記したものとは異なるものとしておいても良いことなどは、当然のことである。
本発明は、各種情報を記憶するためのストレージ(パリティ付きストライプセット)を実現するために利用することができる。
10 ディスクアレイ制御装置
11 コントローラ
12、15 Flashメモリ
13 制御プログラム
16 状況管理テーブル
50 ハードディスクドライブ
60 ホスト

Claims (9)

  1. M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
    前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
    を含み、
    前記制御部は、
    前記パリティ付きストライプセットの或るデータブロックに対する初期化コマンドまたはデータ破棄コマンドを受信した場合に、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
    前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出し、
    複数のストライプのそれぞれについて、そのストライプのデータに一貫性があるか否かのチェックを実行すべきことが指示された場合に、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記チェックを省略する
    ことを特徴とするディスクアレイ制御装置。
  2. 前記制御部は、
    或るデータブロックのデータに対する読み出し要求を受信したときに、当該データブロックを有する記憶装置が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に前記第1所定値が前記状況値として前記状況値記憶部に記憶されている幾つかのデータブロックがあった場合、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データがALL0データであるとして前記データブロックのデータの生成し、生成したデータを前記読み出し要求の送信元に返送する
    ことを特徴とする請求項1に記載のディスクアレイ制御装置。
  3. 前記制御部は、
    前記M台の記憶装置の中の1台が新記憶装置に交換されてから前記パリティ付きストライプセットのリビルドが指示された場合、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記新記憶装置に対する復旧処理を省略する
    ことを特徴とする請求項1に記載のディスクアレイ制御装置。
  4. M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるためのディスクアレイ制御方法であって、
    コンピュータが、
    前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能なテーブルをメモリ上に用意し、
    前記パリティ付きストライプセットの或るデータブロックに対する初期化コマンドまたはデータ破棄コマンドを受信した場合に、当該データブロックにALL0データを書き込むことなく、前記テーブルに、当該データブロックの状況値として第1所定値を記憶させ、
    前記パリティ付きストライプセットの或るストライプのパリティブロックへ書き込むパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記テーブルに記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出し、
    複数のストライプのそれぞれについて、そのストライプのデータに一貫性があるか否かのチェックを実行すべきことが指示された場合に、前記テーブルに記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記チェックを省略する
    ことを特徴とするディスクアレイ制御方法。
  5. 前記コンピュータが、
    或るデータブロックのデータに対する読み出し要求を受信したときに、当該データブロックを有する記憶装置が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に前記第1所定値が前記状況値として前記テーブルに記憶されている幾つかのデータブロックがあった場合、前記第1所定値が前記状況値として前記テーブルに記憶されている各データがALL0データであるとして前記データブロックのデータの生成し、生成したデータを前記読み出し要求の送信元に返送する
    ことを特徴とする請求項に記載のディスクアレイ制御方法。
  6. 前記コンピュータが、
    前記M台の記憶装置の中の1台が新記憶装置に交換されてから前記パリティ付きストライプセットのリビルドが指示された場合、前記テーブルに記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記新記憶装置に対する復旧処理を省略する
    ことを特徴とする請求項に記載のディスクアレイ制御方法。
  7. コンピュータを、
    M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
    前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
    を含む装置であって、
    前記制御部が、
    前記パリティ付きストライプセットの或るデータブロックに対する初期化コマンドまたはデータ破棄コマンドを受信した場合に、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
    前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する
    装置として動作させ、
    複数のストライプのそれぞれについて、そのストライプのデータに一貫性があるか否かのチェックを実行すべきことが指示された場合に、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記チェックを省略する
    ことを特徴とするディスクアレイ制御プログラム。
  8. 前記制御部は、
    或るデータブロックのデータに対する読み出し要求を受信したときに、当該データブロックを有する記憶装置が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に前記第1所定値が前記状況値として前記状況値記憶部に記憶されている幾つかのデータブロックがあった場合、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データがALL0データであるとして前記データブロックのデータの生成し、生成したデータを前記読み出し要求の送信元に返送する
    ことを特徴とする請求項に記載のディスクアレイ制御プログラム。
  9. 前記制御部は、
    前記M台の記憶装置の中の1台が新記憶装置に交換されてから前記パリティ付きストライプセットのリビルドが指示された場合、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記新記憶装置に対する復旧処理を省略する
    ことを特徴とする請求項に記載のディスクアレイ制御プログラム。
JP2014524569A 2012-07-13 2012-07-13 ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム Active JP6052288B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/067916 WO2014010077A1 (ja) 2012-07-13 2012-07-13 ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2014010077A1 JPWO2014010077A1 (ja) 2016-06-20
JP6052288B2 true JP6052288B2 (ja) 2016-12-27

Family

ID=49915579

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014524569A Active JP6052288B2 (ja) 2012-07-13 2012-07-13 ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム

Country Status (2)

Country Link
JP (1) JP6052288B2 (ja)
WO (1) WO2014010077A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6556980B2 (ja) * 2014-03-04 2019-08-07 日本電気株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US20190205044A1 (en) * 2017-01-10 2019-07-04 Hitachi, Ltd. Device for restoring lost data due to failure of storage drive
CN112947858B (zh) * 2021-02-25 2023-04-25 浪潮电子信息产业股份有限公司 一种raid 5校验值的更新方法、装置和介质
CN116795295B (zh) * 2023-08-16 2023-11-17 苏州浪潮智能科技有限公司 磁盘阵列中的数据处理方法及装置、存储介质、电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3711631B2 (ja) * 1996-06-10 2005-11-02 株式会社日立製作所 コンピュータシステムのディスクアレイ装置
JP2011048553A (ja) * 2009-08-26 2011-03-10 Nec Corp ストレージ装置、および同装置における実容量割当て方法、ならびに実容量割当てプログラム

Also Published As

Publication number Publication date
WO2014010077A1 (ja) 2014-01-16
JPWO2014010077A1 (ja) 2016-06-20

Similar Documents

Publication Publication Date Title
JP5923964B2 (ja) ディスクアレイ装置、制御装置、およびプログラム
US8799745B2 (en) Storage control apparatus and error correction method
JP6175684B2 (ja) Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ
US20050229033A1 (en) Disk array controller and information processing apparatus
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
EP1703397A2 (en) Storage control apparatus and method
JP2010015197A (ja) ストレージ制御装置、データ復元装置およびストレージシステム
US10067833B2 (en) Storage system
JP2006139478A (ja) ディスクアレイシステム
JP2014096072A (ja) ミラー構成を有するディスクアレイ及びそのリビルド方法
US9378092B2 (en) Storage control apparatus and storage control method
JP6052288B2 (ja) ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム
WO2014188479A1 (ja) ストレージ装置及びストレージ装置の制御方法
JP5040331B2 (ja) 記憶装置、記憶装置の制御方法、及び記憶装置の制御プログラム
JP2005107838A (ja) ディスクアレイコントローラ及びログ情報記録方法
JP4788492B2 (ja) ストレージ装置の容量拡張方法、プログラム、およびストレージ装置
US10073633B2 (en) Data storage system and method for a plurality of disk arrays
JP6556980B2 (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP6175771B2 (ja) ディスクアレイ装置、バッドセクタ修復方法および修復プログラム
JP2012174037A (ja) ディスクアレイ装置及びその制御方法
JP2005346212A (ja) ディスクアレイコントローラおよび情報処理装置
JP6318769B2 (ja) ストレージ制御装置、制御プログラム、および制御方法
JP2017054303A (ja) ディスクアレイ装置、ディスクアレイシステム、制御方法、および、制御プログラム
JP6876288B2 (ja) ストレージ管理装置、ストレージシステム、ストレージ管理方法およびプログラム
JP6859599B2 (ja) ディスクアレイ制御装置、ディスクアレイ制御方法およびディスクアレイ制御プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161114

R150 Certificate of patent or registration of utility model

Ref document number: 6052288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150