JP2015225603A - ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム - Google Patents

ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム Download PDF

Info

Publication number
JP2015225603A
JP2015225603A JP2014111500A JP2014111500A JP2015225603A JP 2015225603 A JP2015225603 A JP 2015225603A JP 2014111500 A JP2014111500 A JP 2014111500A JP 2014111500 A JP2014111500 A JP 2014111500A JP 2015225603 A JP2015225603 A JP 2015225603A
Authority
JP
Japan
Prior art keywords
data
read
write
sector
storage
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.)
Withdrawn
Application number
JP2014111500A
Other languages
English (en)
Inventor
麻理恵 安部
Marie Abe
麻理恵 安部
康太郎 仁村
Kotaro Nimura
康太郎 仁村
與志仁 紺田
Yoshihito Konta
與志仁 紺田
政智 中村
Masatomo Nakamura
政智 中村
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
Priority to JP2014111500A priority Critical patent/JP2015225603A/ja
Priority to US14/698,875 priority patent/US20150347224A1/en
Publication of JP2015225603A publication Critical patent/JP2015225603A/ja
Withdrawn 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • 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/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1612Error detection by comparing the output signals of redundant hardware where the redundant component is persistent storage
    • 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/2056Error 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 by mirroring
    • G06F11/2082Data synchronisation
    • 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

Abstract

【課題】書き込み要求に対する応答遅延が抑制された、書き込みの信頼性が高いストレージ制御装置を実現する。【解決手段】書き込み制御部11は、書き込み要求に応じて、書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置21に書き込むとともに、第2の記憶装置22における書き込みデータに対応する記憶領域に、同じ付加データを書き込む。読み出し制御部12は、データの読み出し要求に応じて、読み出しデータとこれに付加された付加データとを第1の記憶装置21から読み出すとともに、第2の記憶装置22における対応する記憶領域から付加データを読み出し、各記憶装置から読み出した付加データの照合結果に基づいて読み出しデータの正当性を判定する。【選択図】図1

Description

本発明は、ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムに関する。
ストレージシステムに関しては、書き込み処理の信頼性を高めるための様々な技術が考えられている。その例として、HDD(Hard Disk Drive)等の記憶装置へデータを書き込んだ直後に、書き込まれたデータを読み込み、読み込んだデータと元のデータとが一致しているかを確認する技術がある。この技術は、リードアフターライト(Read After Write:RAW)等と呼ばれる。
また、ファイル管理の信頼性を高める技術には次のようなものがある。例えば、参照対象ブロックの位置と、実際に読み出したブロック内のファイル更新情報域内に設定されているブロックの位置情報とを比較して、ファイルのブロック破壊を検査する技術が提案されている。
特開平06−175901号公報
書き込み処理時にRAWを用いた場合、ストレージシステムにおけるデータの書き込み処理の信頼性は向上するものの、データの書き込み処理に加え、書き込んだデータを確認するためのデータの読み出し処理が生じる。そのため、書き込み処理時にRAWを用いる場合、上記データの読み出し処理にかかる時間だけ、書き込み処理の要求に対する応答が遅延する。
1つの側面では、本発明は、書き込み要求に対する応答遅延が抑制された、書き込みの信頼性が高いストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
1つの案では、書き込み制御部と読み出し制御部とを有するストレージ制御装置が提供される。書き込み制御部は、データの書き込み要求に応じて、書き込みが要求された書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置に書き込むとともに、第2の記憶装置における書き込みデータに対応する記憶領域に、書き込みデータに付加した付加データを書き込んで、書き込み要求に応じた書き込み処理の完了通知を出力する。読み出し制御部は、データの読み出し要求に応じて、読み出しが要求された読み出しデータと読み出しデータに付加された付加データとを第1の記憶装置から読み出すとともに、第2の記憶装置における読み出しデータに対応する記憶領域から付加データを読み出し、第1の記憶装置および第2の記憶装置からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて読み出しデータの正当性を判定する。
また、1つの案では、上記ストレージ制御装置と同様の処理をコンピュータが実行するストレージ制御方法が提供される。
さらに、1つの案では、上記ストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
一側面では、書き込み要求に対する応答遅延が抑制された、書き込みの信頼性が高いストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムを実現できる。
第1の実施の形態のストレージシステムの構成例および処理例を示す図である。 第2の実施の形態のストレージシステムの構成例を示す図である。 ストレージ制御装置のハードウェア構成例を示す図である。 ストレージ制御装置の機能例を示す図である。 セクタのフォーマット例を示す図である。 RAID管理テーブルの例を示す図である。 RAID1における書き込み制御および読み出し制御の例を示す図である。 RAID1における書き込み制御および読み出し制御の例を示す図(続き)である。 RAID5における書き込み制御の例を示す図である。 RAID5における読み出し制御の例を示す図である。 パリティの読み出し制御を伴うデータの書き込み制御の例を示す図である。 パリティの読み出し制御を伴うデータの書き込み制御の例を示す図(続き)である。 RAID5におけるパリティの読み出し制御の例を示す図である。 RAID1のRAIDグループに属するHDDのリカバリの例を示す図である。 RAID5のRAIDグループに属するHDDのリカバリの例を示す図である。 RAID5のRAIDグループに属するHDDのリカバリの例を示す図(続き)である。 RAID5のRAIDグループに属するHDDのリカバリの例を示す図(続き2)である。 書き込み制御処理の例を示すフローチャートである。 読み出し制御処理の例を示すフローチャートである。 リカバリ処理の例を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムの構成例および処理例を示す図である。第1の実施の形態のストレージ装置1は、ストレージ制御装置10、第1の記憶装置21および第2の記憶装置22を有する。
第1の記憶装置21および第2の記憶装置22は、例えば、HDDやSSD(Solid State Drive)として実現される。なお、第1の記憶装置21と第2の記憶装置22の少なくとも一方は、ストレージ装置1の外部に設けられていてもよい。また、第1の記憶装置21と第2の記憶装置22の少なくとも一方は、ストレージ制御装置10の内部に搭載されていてもよい。
ストレージ制御装置10には、例えば、ホスト装置30が接続されている。ストレージ制御装置10は、例えば、ホスト装置30からの要求に応じて、第1の記憶装置21に対するデータの書き込みや、第1の記憶装置21からのデータの読み出しを行う。また、データの書き込み要求やデータの読み出し要求は、ホスト装置30ではなく、ストレージ制御装置10の内部機能(図示せず)から発せられてもよい。
ストレージ制御装置10は、書き込み制御部11および読み出し制御部12を有する。
書き込み制御部11は、データの書き込み要求に応じて、書き込みが要求された書き込みデータに付加データを付加して第1の記憶装置21に書き込む。これとともに、書き込み制御部11は、第2の記憶装置22における書き込みデータに対応する記憶領域にも、書き込みデータと付加データを書き込む。書き込み制御部11は、以上の処理を実行すると、書き込み要求に応じた書き込み処理の完了通知を、その要求元に対して出力する。
書き込みデータに付加される付加データは、同じ記憶領域への書き込みのたびに更新されるデータであればよい。このような付加データの例としては、データの更新時刻を示す情報を用いることができる。また、第1の記憶装置21において、付加データは、対応する書き込みデータと隣接する記憶領域に書き込まれる。
読み出し制御部12は、データの読み出し要求に応じて、読み出しが要求された読み出しデータと、この読み出しデータに付加された付加データとを、第1の記憶装置21から読み出す。これとともに、読み出し制御部12は、第2の記憶装置22における上記の読み出しデータに対応する記憶領域から、付加データを読み出す。
読み出し制御部12は、第1の記憶装置21および第2の記憶装置22からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて、第1の記憶装置21から読み出した読み出しデータの正当性を判定する。付加データ同士が一致している場合、読み出しデータが正当なものであると判定される。一方、付加データ同士が一致していない場合、読み出しデータが不当なものである可能性があると判定される。
ここで、第1の記憶装置21におけるデータ領域21aにデータ#1が記憶され、かつ、データ領域21aに隣接する付加データ領域21bに、データ#1に対応する付加データが記憶されている初期状態からの処理例について説明する。付加データには、対応するデータ領域でのデータの最終更新時刻を示すものとする。そして、初期状態では、付加データ領域21bに、データ#1に対応する付加データとして時刻“12:00”が記憶されているとする。なお、この初期状態では、図示しないものの、第2の記憶装置22における、データ領域21aに対応する付加データ領域22aにも、データ#1に対応する付加データとして時刻“12:00”が記憶されているとする。
書き込み制御部11は、データ領域21aに対する新たなデータ#2(図示せず)の書き込み要求を受け付ける。すると、書き込み制御部11は、データ#2をデータ領域21aに書き込み、現在の時刻“14:00”を付加データ領域21bに書き込む。これとともに、書き込み制御部11は、第2の記憶装置22における、データ領域21aに対応する付加データ領域22aにも、付加データとして現在の時刻“14:00”を書き込む(S1)。
ここで、第1の記憶装置21におけるデータ領域21aおよび付加データ領域21bへの書き込み処理が失敗し、データ領域21aおよび付加データ領域21bが更新されなかったものとする。例えば、第1の記憶装置21がHDDであるとすると、磁気ディスクの記録面やヘッドに一時的にゴミやホコリが付着した場合に、データ領域21aおよび付加データ領域21bが更新されない“書き込み抜け”が発生する場合がある。
この後、読み出し制御部12は、第1の記憶装置21におけるデータ領域21aからのデータの読み出し要求を受け付ける。すると、読み出し制御部12は、第1の記憶装置21のデータ領域21aおよび付加データ領域21bから、それぞれデータおよび付加データを読み出す。これとともに、読み出し制御部12は、第2の記憶装置21の付加データ領域22aから、付加データを読み出す(S2)。
読み出し制御部12は、付加データ領域21b,22aからそれぞれ読み出した付加データ同士を照合する(S3)。もし、これらの付加データが一致する場合、読み出し制御部12は、データ領域21aに対する直近の書き込み処理(データ#2の書き込み処理)が正常に実行されており、データ領域21aから読み出したデータが正当なものであると判定する。この場合、データ領域21aから読み出されたデータは、データ#2となる。
しかし、上記のように、データ領域21aに対するデータ#2の書き込み処理が正常に行われず、データ領域21aおよび付加データ領域21bが更新されなかった場合、付加データ領域21b,22aからそれぞれ読み出された付加データは一致しない。この場合、図1に示すように、付加データ領域21bからは時刻“12:00”が読み出され、付加データ領域22aからは時刻“14:00”が読み出される。この場合、読み出し制御部12は、データ領域21aに対する直近の書き込み処理(データ#2の書き込み処理)が正常に実行されていないために、データ領域21aから読み出したデータが正当なものでない可能性があると判定する。
以上の処理によれば、ストレージ制御装置10は、データの読み出しが要求されたときに、第1の記憶装置21においてそのデータに付加された付加データと、第2の記憶装置22における対応する記憶領域に格納された付加データとを照合する。これにより、ストレージ制御装置10は、読み出したデータが不当である可能性の有無を判定することができる。よって、第1の記憶装置21に対するデータ書き込みの信頼性を向上させることができる。
また、ストレージ制御装置10は、データの書き込みが要求されたときに、そのデータに付加データを付加して第1の記憶装置21に書き込むとともに、同じ付加データを別の記憶装置(第2の記憶装置22)にも書き込む。これにより、ストレージ制御装置10は、データの書き込み要求を受け付けたときでなく、その後に、書き込まれたデータの読み出し要求を受け付けたときに、書き込まれたデータが不当である可能性の有無を判定することができる。よって、データの書き込み要求に対する応答遅延を抑制することができる。例えば、データの書き込み要求を受け付けたときにデータの正当性を検証するRAWと比較して、データの書き込み要求に対する応答速度を向上させることができる。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムの構成例を示す図である。ストレージシステム2は、ストレージ制御装置100およびディスクアレイ200を有する。ストレージ制御装置100は、第1の実施の形態のストレージ制御装置10の一例である。
ディスクアレイ200は、HDD210a,210b,210c,210d,210e,210fを有する。HDD210a,210b,210c,210d,210e,210fは、第1の実施の形態の第1の記憶装置21または第2の記憶装置22の一例である。HDD210a,210b,210c,210d,210e,210fは、ホスト装置300によるアクセス要求の対象となるデータを記憶する。第2の実施の形態において、HDD210a,210b,210c,210d,210e,210fは、同じ物理記憶容量を有する。
なお、第2の実施の形態では、ディスクアレイ200内の記憶装置としてHDD210a等のHDDを備えるが、例えば、SSD等のHDD以外の不揮発性記憶装置を備えていてもよい。また、ディスクアレイ200が備えるHDDは、2〜5つでもよいし、7つ以上でもよい。また、ストレージ制御装置100には、ディスクアレイ200と同様の構成を有する複数のディスクアレイが接続されていてもよい。
ストレージ制御装置100には、ホスト装置300が接続されている。ストレージ制御装置100は、ホスト装置300からのアクセス要求に応じて、ディスクアレイ200内のHDDに対するデータの読み書きを行う。アクセス要求には、ディスクアレイ200内のHDDに対するデータの書き込みを要求する"書き込み要求"や、ディスクアレイ200内のHDDに対するデータの読み出しを要求する"読み出し要求"が含まれる。
また、ストレージ制御装置100は、ディスクアレイ200内のHDDによって実現される物理記憶領域をRAID(Redundant Arrays of Inexpensive Disks)によって管理し、これらの物理記憶領域へのアクセスを制御する。このとき、ストレージ制御装置100は、ディスクアレイ200に搭載された複数のHDDを、RAIDグループとして管理する。RAIDグループとは、複数のHDDの記憶領域によって構成され、異なるHDDにデータが冗長化されるように管理される論理記憶領域である。
ホスト装置300は、例えば、ユーザの操作に応じて、ストレージ制御装置100を通じて、ディスクアレイ200内のHDDに対するデータの書き込みを行うことができる。また、ホスト装置300は、例えば、ユーザの操作に応じて、ストレージ制御装置100を通じて、ディスクアレイ200内のHDDからのデータの読み出しを行うことができる。
図3は、ストレージ制御装置のハードウェア構成例を示す図である。
ストレージ制御装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、RAM102および複数の周辺機器が、バス109を介して接続されている。RAM102は、ストレージ制御装置100の主記憶装置として使用され、プロセッサ101に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
プロセッサ101には、周辺機器の例として、HDD103、表示装置104、入力装置105、読み取り装置106、ホストインタフェース107およびディスクインタフェース108が接続されている。
HDD103は、ストレージ制御装置100の二次記憶装置として使用され、プロセッサ101によって実行されるプログラムやその実行に必要な各種のデータ等を記憶する。なお、二次記憶装置としては、例えば、SSD等の他の種類の不揮発性記憶装置が使用されてもよい。
表示装置104は、プロセッサ101からの命令にしたがって、ストレージ制御装置100が備えるディスプレイに画像を表示させる。なお、ディスプレイとしては、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機EL(Electro Luminescence)等を用いることができる。
入力装置105は、ストレージ制御装置100のユーザによる入力操作により出力された出力信号をプロセッサ101に送信する。入力装置105の例として、タッチパッドやキーボード等が挙げられる。
読み取り装置106は、記録媒体106aに記録されたプログラムやデータを読み取る駆動装置である。記録媒体106aとして、例えば、フレキシブルディスク(FD:Flexible Disk)やHDD等の磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)等の光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。
ホストインタフェース107は、ホスト装置300とストレージ制御装置100との間でデータを送受信するインタフェース処理を実行する。ディスクインタフェース108は、ディスクアレイ200とストレージ制御装置100との間でデータを送受信するインタフェース処理を実行する。
なお、ストレージ制御装置100は、読み取り装置106を備えていなくてもよく、専ら他の端末装置から制御される場合には、表示装置104や入力装置105を備えていなくてもよい。
図4は、ストレージ制御装置の機能例を示す図である。ストレージ制御装置100は、管理情報記憶部110、ホストアクセス制御部120、RAID制御部130、パトロール制御部140およびリカバリ制御部150を有する。管理情報記憶部110は、RAM102またはHDD103に確保した記憶領域として実現できる。ホストアクセス制御部120、RAID制御部130、パトロール制御部140およびリカバリ制御部150の処理は、例えば、プロセッサ101が所定のプログラムを実行することで実現される。
管理情報記憶部110は、ストレージ制御装置100が管理するRAIDグループに関する情報を格納するRAID管理テーブルを記憶する。
ホストアクセス制御部120は、ホスト装置300から、ディスクアレイ200内のHDDによって実現される記憶領域(論理ボリューム)に対するアクセス要求(読み出し要求または書き込み要求)を受け付ける。ホストアクセス制御部120は、RAM102の一部をキャッシュ領域として使用しながら、ホスト装置300からディスクアレイ200内の記憶領域へのアクセスを制御する。キャッシュ領域は、ディスクアレイ200に記録するデータをキャッシュするための記憶領域を意味する。
例えば、ホストアクセス制御部120は、ホスト装置300から書き込みが要求されたデータを、キャッシュ領域に一時的に蓄積する。ホストアクセス制御部120は、キャッシュ領域へのデータの書き込みとは非同期のタイミングで、キャッシュ領域に蓄積されたデータをディスクアレイ200の記憶領域に記憶させる"ライトバック"を実行する。ライトバックを実行する際、ホストアクセス制御部120は、ライトバックの対象とするデータと、書き込み先のRAIDグループおよび論理記憶領域とをRAID制御部130に指定して、ディスクアレイ200への書き込みを依頼する。
また、ホストアクセス制御部120は、ホスト装置300からデータの読み出し要求を受け付けると、読み出しを要求されたデータがキャッシュ領域に蓄積されているかを判定する。読み出しを要求されたデータがキャッシュ領域に蓄積されている場合、ホストアクセス制御部120は、データをキャッシュ領域から読み出してホスト装置300に送信する。
一方、読み出しを要求されたデータがキャッシュ領域に蓄積されていない場合、ホストアクセス制御部120は、論理ボリュームにおけるデータの読み出し元の論理アドレスを指定して、RAID制御部130にデータの読み出しを依頼する。ホストアクセス制御部120は、ディスクアレイ200から読み出されたデータを、キャッシュ領域に格納すると共に、ホスト装置300に送信する。
RAID制御部130は、書き込み制御部131および読み出し制御部132を有する。書き込み制御部131は、第1の実施の形態の書き込み制御部11の一例である。また、読み出し制御部132は、第1の実施の形態の読み出し制御部12の一例である。
書き込み制御部131は、ホストアクセス制御部120からの書き込みの依頼を受けたとき、RAID管理テーブルに記憶された、書き込み対象の論理ボリュームに対応するRAIDグループの情報と、ホストアクセス制御部120から指定された論理アドレスとに基づいて、書き込み先の物理記憶領域を特定する。物理記憶領域は、ディスク番号およびセクタ番号により特定される。ディスク番号は、ディスクアレイ200内のHDDを識別するための番号である。セクタ番号は、HDD毎のセクタを識別するための番号である。書き込み制御部131は、特定したディスクアレイ200内のHDDの物理記憶領域にデータを書き込む。
書き込み制御部131は、データを書き込む際、書き込み先のセクタの更新日時を示す"更新日時情報"を生成する。書き込み制御部131は、生成した更新日時情報を、データの書き込みと同時に書き込み先のセクタに付加情報として書き込む。これとともに、書き込み制御部131は、生成した更新日時情報を、書き込み先のHDDと同じRAIDグループに属する他のHDD内のセクタにも付加情報として書き込む。書き込み制御部131は、データの書き込みの結果をホストアクセス制御部120に通知する。
なお、更新日時情報の書き込み先のセクタの特定方法の詳細については、図7以降で後述する。また、第2の実施の形態において、異なる複数のHDDにデータを書き込む場合、各HDDに並列して書き込むことが可能である。
読み出し制御部132は、ホストアクセス制御部120からの依頼に応じて、ディスクアレイ200内のHDDからデータを読み出す。依頼元がホストアクセス制御部120である場合、読み出し制御部132は、RAID管理テーブルに記憶された、読み出し対象の論理ボリュームに対応するRAIDグループの情報と、ホストアクセス制御部120から指定された読み出し元の論理アドレスとに基づいて、読み出し元の物理記憶領域を特定する。読み出し制御部132は、依頼元の機能(ホストアクセス制御部120)に、読み出したデータを受け渡す。なお、第2の実施の形態において、異なる複数のHDDからデータを読み出す場合、各HDDから並列してデータを読み出すことが可能である。
読み出し制御部132は、データを読み出す際、RAID管理テーブルを参照して、読み出し元のHDDと同じRAIDグループに属する他のHDDから、比較対象となる更新日時情報が格納されたセクタを特定する。読み出し制御部132は、読み出し元のHDDのセクタと、上記で特定したセクタの両方から更新日時情報を読み出し、読み出した更新日時情報同士を比較する。各更新日時情報が一致した場合、読み出し制御部132は、読み出し元のHDDのセクタに対する書き込み処理で書き込み抜けが発生していなかったと判定する。ここで、"書き込み抜け"は、セクタへの書き込み時に、HDDの磁気ディスク面やヘッドに一時的にゴミやホコリが付着することにより、そのセクタへの書き込みが行われず、そのセクタのデータが更新されないことを意味する。
読み出し制御部132は、各更新日時情報が一致しなかった場合、比較対象である更新日時情報が設定されているセクタのいずれかについて、直近の書き込み処理で書き込み抜けが発生したと判定し、比較結果に基づいて書き込み抜けがあったセクタを判定する。読み出し制御部132は、リカバリ制御部150に、書き込み抜けがあったと判定したセクタを指定してリカバリを依頼する。書き込み抜けがあったセクタが読み出し元のセクタである場合、読み出し制御部132は、リカバリ制御部150からリカバリが完了した旨の通知を受けて、そのセクタを読み出し、読み出したセクタに設定されているデータを依頼元の機能に通知する。ここで、"セクタのリカバリ"は、HDD内のいずれかのセクタについてのみリカバリすることを意味する。
パトロール制御部140は、ストレージシステム2の管理者の入力操作により、または、定期的または不定期に、ディスクアレイ200内のHDDのセクタからデータを読み出し、HDDに異常がないか判定する。
パトロール制御部140は、読み出しに失敗したHDDが存在する場合、その旨をストレージシステム2の管理者に通知する。通知を受けた管理者は、例えば、ストレージ制御装置100に対する入力操作により、通知されたHDDに対するリカバリをストレージ制御装置100に実行させる。なお、パトロール制御部140は、読み出しに失敗したHDDが存在する場合、リカバリ制御部150に異常が発生したHDDのディスク番号を指定して、そのHDDのリカバリを依頼してもよいし、ログファイル等に記録したりしてもよい。後者の場合、ログファイルは、例えば、ストレージ制御装置100のHDD103に格納する。ここで、"HDDのリカバリ"は、HDD内の各セクタのデータをリカバリすることを意味する。
リカバリ制御部150は、読み出し制御部132からの依頼に応じて、指定されたセクタのリカバリを行う。また、リカバリ制御部150は、ストレージシステム2の管理者の入力操作に応じて、指定されたHDDのリカバリを行う。
図5は、セクタのフォーマット例を示す図である。図5において、左側に記載された領域ほど前方の領域(記憶領域の先頭側の領域)であるものとする。セクタ211は、ディスクアレイ200内のHDDの物理記憶領域を、一定記憶容量毎に分割した領域である。セクタ211は、ストレージ制御装置100がHDDの物理記憶領域へデータを記録する際の最小単位となる。例えば、RAID制御部130は、ホストアクセス制御部120から書き込みが要求されたデータを一定データ長の分割データに分割し、1つの分割データを1つのセクタ211に書き込む。
セクタ211は、データ領域および付加情報領域を有する。ここでは、例として、1つのセクタ211の大きさを4224バイトとし、データ領域の大きさを4160バイトとし、付加情報領域の大きさを64バイトとする。
データ領域には、ホスト装置300から書き込みが要求されたデータや、ストライプ内に分割されたデータのパリティが格納される。付加情報領域には、自己のセクタ内のデータの更新日時を示す情報(更新日時情報)が格納される。また、セクタ211が属するRAIDグループのRAIDレベルがRAID5である場合、付加情報領域には、さらに、同じストライプ内の他のセクタの更新日時情報が1つ以上格納される。
なお、各セクタにおける付加情報領域の位置は、データ領域の前方に隣接した位置でもよいし、データ領域の後方に隣接した位置でもよい。第2の実施の形態では、付加情報領域の位置は、データ領域の後方に位置するものとする。
図6は、RAID管理テーブルの例を示す図である。RAID管理テーブル111は、ストレージ制御装置100が管理するRAIDグループに関する情報を格納する。RAID管理テーブル111は、RAIDグループ毎に生成されて、管理情報記憶部110に記憶される。各RAID管理テーブル111には、RAIDグループ番号、RAIDレベル、ストライプサイズ、ディスク数およびディスク番号の各項目に対応する情報が登録される。
RAIDグループ番号の項目には、RAIDグループの識別番号が設定される。RAIDレベルの項目には、対応するRAIDグループの制御に使用されるRAIDレベルが設定される。ストライプサイズの項目には、ストライプが使用されるRAIDレベル(例えば、RAID5等)が設定された場合に、1ストライプにおける記憶装置毎の記憶領域のサイズが設定される。
ディスク数の項目には、対応するRAIDグループに属するHDDの数が設定される。ディスク番号の項目には、対応するRAIDグループに属するHDDの識別番号が設定される。したがって、ディスク番号の項目には、ディスク数の項目に設定された数分のディスク番号が登録される。
次に、RAID制御部130が、RAIDレベルがRAID1のRAIDグループに属するHDDに対して、データの書き込み制御および読み出し制御を実行し、データの書き込み抜けの有無を判定する方法について説明する。
書き込み制御部131は、ディスクアレイ200内のHDDへデータを書き込む際、書き込み先がRAID1のRAIDグループの場合、書き込み先の各HDDのセクタに対して、データと同時に更新日時情報を書き込む。そして、書き込み制御部131は、書き込み結果をホストアクセス制御部120へ通知する。なお、ストレージシステム2において、各HDDの物理記憶領域の構成が同一であるため、書き込み先がRAID1のRAIDグループの場合、書き込み先の各セクタは、同じセクタ番号となる。
読み出し制御部132は、RAID1のRAIDグループからデータを読み出す際、一方のHDDにおける読み出し元のセクタから、データとともに更新日時情報を読み出す。これとともに、読み出し制御部132は、他方のHDDにおける同じセクタからも更新日時情報を読み出す。そして、読み出し制御部132は、読み出した各更新日時情報を比較し、各更新日時情報の比較結果に基づいて、読み出し元の各セクタにおける書き込み抜けの有無を判定する。
ここで、図7〜8を用いて、RAID1の場合のデータの書き込み制御および読み出し制御の具体例を説明する。
図7は、RAID1における書き込み制御および読み出し制御の例を示す図である。HDD210a,210bは、RAIDグループ#1に属する。RAIDグループ#1のRAIDレベルは、RAID1である。HDD210aのディスク番号は"#1"であり、HDD210bのディスク番号は"#2"である。セクタ211a,211bは、それぞれHDD210a,210bにおける記憶領域であり、セクタ211a,211bのセクタ番号は、ともに"#1"である。すなわち、セクタ211a,211bに対しては、同じデータの書き込み処理が実行される。以下、ディスク番号が"n"(nは、自然数)であるHDDを"HDD#n"と記載する場合がある。また、セクタ番号が"n"(nは、自然数)であるセクタを"セクタ#n"と記載する場合がある。
ここで、書き込み制御部131が、RAIDグループ#1に属する各HDD内のセクタ#1に対して、データ#Bの書き込み処理を実行する場合において、データ#Bの書き込み抜けが発生しなかった場合の例について説明する。
まず、書き込み制御部131は、セクタ211a,211bの更新日時情報を生成する。そして、書き込み制御部131は、セクタ211a,211bに、生成した更新日時情報をデータ#Bと同時に書き込む(S11)。なお、書き込み制御部131は、セクタ211a,211bへのデータおよび更新日時情報の書き込みを、並列に行うことができる。
図7上段に示すように、セクタ211a,211bのいずれに対してもデータの書き込みが成功している。そのため、図7中段に示すように、セクタ211a,211bのデータ領域には、データ#Bが格納され、付加情報領域には、更新日時情報として各セクタの更新日時情報"10:00"が格納される。このように、各セクタへのデータの書き込みに成功した場合、各セクタに格納された更新日時情報は同じ値となる。
次に、読み出し制御部132は、RAIDグループ#1に属する各HDD内のセクタ#1からデータ#Bを読み出す際、HDD#1のセクタ211aからデータ#Bおよび更新日時情報を読み出すとともに、HDD#2のセクタ211bからも更新日時情報を読み出す。なお、実際の処理では、HDD#1,#2に対して読み出しアドレスとして同じセクタ番号"1"が指定され、この指定に応じてHDD#1,#2の両方からセクタ211a,211b全体に格納された情報が読み出される。
読み出し制御部132は、セクタ211a,211bから読み出した各更新日時情報を比較する。図7中段に示すように、セクタ211a,211bの更新日時情報は、一致する。そのため、読み出し制御部132は、各HDDのセクタ#1に対してデータの書き込み抜けがなかったと判定する。
図8は、RAID1における書き込み制御および読み出し制御の例を示す図(続き)である。図8では、書き込み制御部131が、RAIDグループ#1に属する各HDD内のセクタ#1に対して、データ#Bの書き込み処理を実行する場合において、データ#Bの書き込み抜けが発生した場合の例について説明する。図8において、図7と同じ構成や処理については説明を省略する。
図8では、セクタへの書き込み前において、セクタ211a,211bのデータ領域にデータ#Aが格納され、付加情報領域には各セクタの更新日時情報"09:00"が格納されているものとする。
まず、書き込み制御部131は、図7と同様に、セクタ211a,211bに、各セクタの更新日時情報をデータ#Bと同時に書き込む(S11a)。
図8上段に示すように、セクタ211bに対してはデータの書き込みに成功しているが、セクタ211aに対しては書き込み抜けが発生している。そのため、図8中段に示すように、セクタ211aのデータ領域には、更新前のデータであるデータ#Aが格納されたままであり、付加情報領域にはデータ#Aに更新したときの更新日時情報"09:00"が格納されたままである。一方、セクタ211bのデータ領域は、データ#Bに更新され、付加情報領域は、データ#Bに更新したときの更新日時情報"10:00"に更新されている。したがって、書き込み抜けがあったセクタ211aに格納されている更新日時情報は、書き込み抜けのなかったセクタ211bに格納されている更新日時情報と比較して小さい。
このように、更新日時情報の格納先となるセクタのうち、いずれかのセクタについて書き込み抜けがあった場合、各セクタに格納した更新日時情報は一致しなくなる。また、更新日時情報は、直近の更新日時に近い日時であるほど値が大きくなる。そのため、上記のように、書き込み抜けのあったセクタに格納されている更新日時情報は、書き込みに成功した更新日時情報より小さくなる。
次に、読み出し制御部132は、RAIDグループ#1に属する各HDD内のセクタ#1からデータを読み出す際、HDD#1のセクタ211aからデータおよび更新日時情報を読み出すとともに、HDD#2のセクタ211bからも更新日時情報を読み出す。そして、読み出し制御部132は、読み出した各更新日時情報を比較する。図8中段に示すように、セクタ211aに格納された更新日時情報は、セクタ211bに格納された更新日時情報より小さい。したがって、読み出し制御部132は、セクタ211aに対してデータの書き込み抜けがあったと判定する。
図7〜8で説明したように、RAID1のRAIDグループに対してデータを書き込む際、データの書き込み先となる両方のセクタに、データと同時に更新日時情報を書き込む。そして、RAID1のRAIDグループからデータを読み出す際、同じRAIDグループに属する各HDDから、読み出し元のセクタ番号が一致する各セクタから更新日時情報を読み出し、読み出した各更新日時情報同士を比較して書き込み抜けの有無を判定する。
データの書き込み先のセクタの一部の領域へ更新日時情報を書き込むことにより、その更新日時情報は、書き込みの対象となるデータと共に同じセクタに書き込まれる。そのため、更新日時情報の更新の有無を判定することで、同じセクタに格納されているデータの書き込み抜けの有無を判定でき、データの書き込みに対する信頼性が向上する。
また、RAWのように書き込みが要求された際にデータの書き込み抜けの有無を判定するのではなく、読み出しが要求された際に判定することで、RAWを行う場合と比較してデータの書き込み要求に対する応答の遅延を抑制できる。
また、付加情報領域に格納する情報を、更新日時情報のようなデータの更新に伴って大きくなる情報にすることで、付加情報領域に設定された情報の比較結果により、書き込み抜けのあったセクタを特定できるようになる。
また、二重化するデータのそれぞれに隣接する記憶領域に更新日時情報を書き込むことで、更新日時情報を各HDDへ並列に書き込み可能となり、しかも、更新日時情報をデータと同時に書き込み可能となる。そのため、データの書き込み要求に対する応答時間にほとんど影響を与えずに、更新日時情報を書き込む処理を実行できる。また、読み出し時においても、一方のHDDからは更新日時情報をデータと同時に読み出し可能となる。しかも、更新日時情報を異なるHDDに格納することで、各更新日時情報を並列に読み出すことができる。そのため、読み出し要求に対する応答時間に影響を与えずに、複数のHDDから更新日時情報を読み出す処理を実行できる。よって、ホスト装置300からのアクセス要求に対する応答時間に影響を与えずに、書き込み抜けの有無を判定できる。
なお、図7〜8では、RAIDレベルがRAID1のRAIDグループに属するセクタに対する書き込み抜けの判定の例について説明したが、データが二重化されるRAIDグループであれば、RAID1に限定されるものではない。例えば、図7〜8において、RAIDグループ#1のRAIDレベルは、RAID1+0やRAID0+1であってもよい。
次に、パリティを用いてデータが冗長化される場合の例として、RAID5の場合について説明する。なお、以下の説明では、データ領域にデータが格納されるセクタを"データセクタ"と記載する場合がある。また、データの領域にパリティが格納されるセクタを"パリティセクタ"と記載する場合がある。
まず、図9を用いて、書き込み先がRAID5のRAIDグループであり、書き込み先のストライプ内の全データセクタが更新される場合の書き込み制御について説明する。
図9は、RAID5における書き込み制御の例を示す図である。HDD210c,210d,210eは、RAIDグループ#2に属する。RAIDグループ#2のRAIDレベルは、RAID5である。HDD210cのディスク番号は"#3"であり、HDD210dのディスク番号は"#4"であり、HDD210eのディスク番号は"#5"である。
セクタ211c,211d,211eは、それぞれHDD210c,210d,210eにおける記憶領域であり、セクタ211c,211d,211eのセクタ番号は、それぞれ"#1"である。セクタ211c,211d,211eは、同一のストライプを構成する。セクタ211c,211dは、データが格納されているセクタ(データセクタ)であり、セクタ211eは、セクタ211c,211dに分割して格納されたデータのパリティが格納されているセクタ(パリティセクタ)である。
RAID5のように1種類のパリティが利用される場合、同一ストライプ内の各データセクタの付加情報領域には、そのセクタに対応する更新日時情報と、同一ストライプのパリティセクタに対応する更新日時情報とが格納される。また、パリティセクタの付加情報領域には、同一ストライプの他のデータセクタのそれぞれに対応する更新日時情報と、当該パリティセクタに対応する更新日時情報とが格納される。
ここで、書き込み制御部131が、RAIDグループ#2に属するHDD210c,210d内のセクタ#1に対してデータ#1,#2の書き込み処理を同時に実行する例について説明する。なお、図9以降では、ディスク番号が#m(mは、自然数)であり、セクタ番号が#n(nは、自然数)である物理記憶領域を、"HDD#m:セクタ#n"と記載する場合がある。
この場合、まず、書き込み制御部131は、書き込み対象のデータ#1,#2を用いてパリティを算出し、データ領域の更新対象となるセクタ211c,211d,211eの更新日時情報を生成する(S21)。このとき、セクタ211c,211d,211eのセクタの更新日時情報は、いずれも"10:00"となる。
そして、書き込み制御部131は、セクタ211cを、データ#1および更新日時情報"10:00"で更新し、セクタ211dを、データ#2および更新日時情報"10:00"で更新する。これとともに、書き込み制御部131は、セクタ211eを、算出したパリティおよび更新日時情報"10:00"で同時に更新する(S22)。
このとき、データセクタであるセクタ211c,211dについて、付加情報領域のうち一番前方の領域(図9における、セクタ211c,211dの付加情報領域の左端の領域)に、自己のセクタの更新日時情報が格納される。また、その後方の(右側の)領域に、セクタ211eの更新日時情報が格納される。すなわち、データのセクタの付加情報領域には、自己のセクタの更新日時情報、パリティセクタの更新日時情報の順に、前方から並んで更新日時情報が設定される。
また、パリティセクタであるセクタ211eの付加情報領域のうち、一番手前の領域(図9における、セクタ211eの付加情報領域の左端の領域)に、セクタ211cの更新日時情報が設定される。さらに、その後方の(右側の)領域に、セクタ211dの更新日時情報が設定され、その後方の(右側の)領域に、パリティセクタの更新日時情報が設定される。すなわち、パリティのセクタの付加情報領域には、ストライプ内の各セクタに対応するディスク番号順に、各セクタの更新日時情報が前方から並んで設定される。
このように、RAID5のRAIDグループに属するHDD内のセクタに対して、書き込み処理を行う場合、書き込み制御部131は、書き込みの対象となるデータをデータ領域に書き込む。同時に、書き込み先の各セクタの付加情報領域に、データセクタの更新日時情報と、パリティセクタの更新日時情報とを書き込む。また、パリティセクタに対して、算出したパリティをデータ領域に書き込み、同時に、各データセクタの更新日時情報と、パリティセクタの更新日時情報とを、付加情報領域に書き込む。
なお、第2の実施の形態では、データセクタには、自己のセクタの更新日時情報と、パリティセクタの更新日時情報とが格納され、パリティセクタには、自己のストライプ内の各セクタの更新日時情報が設定される。これに対し、各セクタに、自己のセクタが属するストライプを構成するセクタのうち、自己のセクタの更新日時情報と、自己のセクタが属するHDDの次のディスク番号のHDDに属するセクタの更新日時情報とが設定されるようにしてもよい。後者の場合、RAIDグループに属する複数のHDDは、ストライプを構成していればよく、例えば、RAID0を構成するものであってもよい。
また、セクタの付加情報領域に設定される更新日時情報の並び順は、上記に限定されるものではない。例えば、データセクタ内の付加情報領域には、ストライプを構成する各セクタの更新日時情報を、各セクタが属するHDDのディスク番号順に並べて設定する方法が挙げられる。別の例として、パリティセクタ内の付加情報領域の前方には、データセクタの更新日時情報をセクタが属するHDDのディスク番号順に並べて設定し、その後方にパリティセクタの更新日時情報を設定する方法が挙げられる。
次に、図10を用いて、RAID制御部130によるRAID5のRAIDグループに対するデータの読み出し制御について説明する。この場合、読み出し制御部132は、読み出し元が要求されたデータが格納されたデータセクタ、および、同一ストライプにおけるパリティセクタから、データセクタに対応する更新日時情報を読み出す。そして、読み出し制御部132は、読み出した各更新日時情報の比較し、その比較結果に基づいてデータセクタにおける書き込み抜けの有無を判定する。
図10は、RAID5における読み出し制御の例を示す図である。図10では、図9でデータ#1,#2の書き込み処理が実行された後、ホストアクセス制御部120からの読み出し要求に応じて、データセクタであるセクタ211c(HDD#3:セクタ#1)からデータを読み出す場合の例について説明する。
この場合、まず、読み出し制御部132は、データ読み出し対象のセクタ211cと、同一ストライプ内のパリティセクタであるセクタ211eとから、格納された内容を読み出す。そして、読み出し制御部132は、セクタ211cの付加領域情報に格納されたセクタ211cの更新日時情報と、セクタ211eの付加領域情報に格納されたセクタ211cの更新日時情報とを比較する(S23)。図10に示すように、各更新日時情報は一致するため、読み出し制御部132は、セクタ211cへの直近のデータ書き込み時に、セクタ211c,211eに対して書き込み抜けが発生していないと判定する。
また、図示しないが、読み出し対象のデータセクタに格納されている自己の更新日時情報が、同じストライプ内のパリティセクタに格納されている読み出し対象のセクタの更新日時情報より小さい場合、読み出し対象のセクタに対してデータの書き込み抜けがあったと判定する。読み出し対象のセクタに格納されている自己の更新日時情報が、同じストライプ内のパリティセクタに格納されている読み出し対象のセクタの更新日時情報より大きい場合、当該パリティセクタに対してパリティの書き込み抜けがあったと判定する。読み出し制御部132は、書き込み抜けがあったと判定したセクタを指定して、そのセクタのリカバリをリカバリ制御部150に依頼する。
図9〜10で説明したように、RAID5のRAIDグループに対してデータを書き込む際、書き込み対象となるデータをデータ領域に書き込む。同時に、各書き込み先のデータのセクタの付加情報領域に、自己のセクタの更新日時情報と、パリティセクタの更新日時情報とを書き込む。また、書き込み先のストライプのパリティセクタのデータ領域に、書き込みデータに基づいて算出したパリティを書き込む。同時に、パリティセクタの付加情報領域に、同じストライプを構成する各セクタの更新日時情報を書き込む。
そして、RAID5のRAIDグループからデータを読み出す際、データ読み出し対象のセクタと、パリティセクタとから読み出した読み出し対象のセクタの更新日時情報同士を比較する。そして、その比較結果に基づいて、読み出し対象のセクタに対する書き込み抜けの有無を判定する。
このような書き込み抜けの判定が可能になることで、データの書き込みに対する信頼性が向上する。また、データの読み出しが要求された際に書き込み抜けの判定を行うことで、RAWを行う場合と比較して、データの書き込み要求に対する応答の遅延を抑制できる。
また、データの書き込みに伴いパリティも更新されるため、書き込み先のデータのセクタの更新日時情報をパリティのセクタに書き込むことで、データの書き込み要求に対する応答時間にほとんど影響を与えずに、更新日時情報を格納する処理を実行できる。さらに、データの読み出しの際には、データに対応する更新日時情報とパリティに対応する更新日時情報とを、異なるHDDから並列に読み出すことができる。そのため、読み出し要求に対する応答時間に影響を与えずに、複数のHDDから更新日時情報を読み出す処理を実行できる。
なお、図9〜10では、RAIDレベルがRAID5のRAIDグループに属するセクタに対する書き込み抜けの判定の例について説明したが、パリティにより冗長化されているRAIDグループであれば、RAID5に限定されるものではない。例えば、図9〜10におけるRAIDグループ#2のRAIDレベルは、RAID3、RAID4またはRAID6であってもよい。
RAID6の場合、例えば、データセクタの付加情報領域には、データセクタ自身に対応する更新日時情報と、同一ストライプ上のPパリティのセクタに対応する更新日時情報と、Qパリティのセクタに対応する更新日時情報とが格納される。また、PパリティおよびQパリティの各パリティセクタの付加情報領域には、同一ストライプ上の各データパリティに対応する更新日時情報と、パリティセクタ自身に対応する更新日時情報とが格納される。データ読み出し時においては、読み出しデータに付加された更新日時情報と、いずれかのパリティセクタから読み出された、読み出しデータに対応する更新日時情報とが比較されることで、データの書き込み抜けの有無を判定することができる。
次に、RAID5において、同じストライプ内の他のセクタの読み出し制御を伴う、データの書き込み制御について説明する。その例として、書き込み先がRAID5のRAIDグループであり、書き込み先のストライプ内のデータセクタのうちの一部のデータセクタに対する書き込み制御を実行する場合が挙げられる。
この場合、まず、書き込み制御部131は、パリティを算出する。ここで、ストライプの全データではなく、一部のデータを更新する場合、パリティを算出するために、書き込み先のストライプ内のセクタのうち、書き込み先のセクタ以外のセクタのいずれかからデータを読み出す必要がある。
例えば、パリティを算出する方法として、"更新前のデータ XOR 更新後のデータ XOR 更新前のパリティ"により算出する方法がある。上記方法を適用する場合、読み出し制御部132は、パリティを算出するために、書き込み先のセクタと、そのセクタと同じストライプ内のパリティセクタとから、それぞれ更新前のデータおよびパリティを読み出す。このとき、読み出し制御部132は、読み出した各セクタに対する書き込み抜けがないかを判定する。詳細は、図11で後述する。各セクタに対して書き込み抜けがないと判定したら、書き込み制御部131は、書き込み先のセクタから読み出したデータと、パリティセクタから読み出したパリティと、書き込み対象となるデータとに基づいてパリティを算出する。
次に、書き込み制御部131は、データを書き込む際、書き込み先のセクタの更新日時情報を生成する。次に、書き込み制御部131は、書き込み先のデータセクタに、生成した更新日時情報を書き込み対象のデータと同時に書き込む。これとともに、書き込み制御部131は、算出したパリティと、書き込み先の各データセクタの更新日時情報と、パリティセクタの更新日時情報とを、パリティセクタに同時に書き込む。そして、書き込み制御部131は、書き込み結果をホストアクセス制御部120へ通知する。
図11〜12では、パリティセクタの読み出し制御を伴うデータの書き込み制御の例として、書き込み先のストライプ内のセクタのうちの一部のデータのセクタに対する書き込み制御について説明する。
図11は、パリティの読み出し制御を伴うデータの書き込み制御の例を示す図である。図11〜12において、図9〜10と同じ内容については説明を省略する。
セクタ211cのデータ領域には、データ#1が格納されている。セクタ211cの付加情報領域には、セクタ211cの更新日時情報"10:00"、データ#1の書き込み時に更新されたパリティセクタ(セクタ211e)の更新日時情報"10:00"の順に前方から並んで格納されている。
また、セクタ211dのデータ領域には、データ#2が格納されている。セクタ211dの付加情報領域には、セクタ211dの更新日時情報"10:02"、データ#2の書き込み時に更新されたパリティのセクタ(セクタ211e)の更新日時情報"10:02"の順に前方から並んで格納されている。
セクタ211eのデータ領域には、データ#1,#2のパリティであるパリティ#1が格納されている。さらに、セクタ211eの付加情報領域には、セクタ211cの更新日時情報"10:00"、セクタ211dの更新日時情報"10:02"、セクタ211eの更新日時情報"10:02"の順に前方から並んで格納されている。
ここで、書き込み制御部131が、RAIDグループ#2に属するHDD210c内のセクタ#1に対してデータ#1の書き込み処理を実行する例について説明する。
まず、読み出し制御部132は、更新後のパリティを生成するために、更新前のデータ#1を含むセクタ211cと、更新前のパリティを含むセクタ211eとから、格納された内容を読み出す。
次に、読み出し制御部132は、セクタ211cの付加情報領域に格納されているセクタ211cの更新日時情報と、セクタ211eの付加情報領域に格納されているセクタ211cの更新日時情報とを比較する(S31)。図11に示すように、上記各更新日時情報は一致するため、読み出し制御部132は、セクタ211cに対して書き込み抜けが発生していないと判定する。すなわち、読み出し制御部132は、セクタ211cに格納されているデータ#1を、正しく書き込まれたデータであると判定する。
また、読み出し制御部132は、セクタ211dの内容を読み出す。読み出し制御部132は、セクタ211cの付加情報領域に格納されているパリティセクタの更新日時情報と、セクタ211dの付加情報領域に格納されているパリティセクタの更新日時情報とを比較する。なお、読み出し制御部132は、セクタ211dからの読み出しを、セクタ211c,211eからの読み出しと並列に実行することができる。
ここで、セクタ211c,210dの両方から読み出したパリティセクタの更新日時情報を比較する理由は、図11の状態より前の段階において、セクタ211c,211dの一方のみが更新された可能性があるからである。例えば、セクタ211dのみが更新された場合、セクタ211dにおけるパリティセクタの更新日時情報と、セクタ211eにおけるパリティセクタの更新日時情報とが更新される。しかし、セクタ211cにおけるパリティセクタの更新日時情報は更新されない。この場合、セクタ211d,211eにおけるパリティセクタの更新日時情報と、セクタ211cにおけるパリティセクタの更新日時情報とが一致しなくなる。
このような場合に備えて、読み出し制御部132は、同一ストライプ上の一部のデータセクタにのみデータを書き込む際にも、そのストライプ上のすべてのデータセクタからパリティセクタの更新日時情報を読み出して、比較する。そして、読み出し制御部132は、読み出した更新日時情報のうち最大のものを、パリティが直近に更新されたときのパリティセクタの更新日時情報と判定する。
図11に示す例では、セクタ211cから読み出したパリティセクタの更新日時情報"10:00"と比較して、セクタ211dから読み出したパリティセクタの更新日時情報"10:02"の方が大きい。そのため、読み出し制御部132は、セクタ211dから読み出したパリティセクタの更新日時情報"10:02"を、パリティが直近に更新されたときのセクタ211eの更新日時情報と判定する(S32)。そして、セクタ211dから読み出したパリティセクタの更新日時情報"10:02"を、次の比較処理に利用する。
すなわち、読み出し制御部132は、セクタ211dから読み出したパリティセクタの更新日時情報と、セクタ211eから読み出したパリティセクタの更新情報とを比較する(S33)。図11に示すように、上記各更新日時情報は、一致する。そのため、読み出し制御部132は、セクタ211eへの直近のパリティの書き込み時に書き込み抜けが発生していないと判定する。すなわち、読み出し制御部132は、セクタ211eに格納されているパリティ#1を、正しく書き込まれたパリティであると判定する。
次に、書き込み制御部131は、"データ#1 XOR データ#3 XOR パリティ#1"により、パリティ#2を算出する(S34)。データ#1は、セクタ211cのデータ領域から取得され、パリティ#1は、セクタ211eのデータ領域から取得される。
図12は、パリティの読み出し制御を伴うデータの書き込み制御の例を示す図(続き)である。
次に、書き込み制御部131は、データ書き込み先のセクタ211cおよびパリティ書き込み先のセクタ211eの更新日時情報"10:03"を生成する。次に、書き込み制御部131は、セクタ211cのデータ領域をデータ#3で更新するとともに、セクタ211cの付加情報領域のうち、セクタ211cの更新日時情報を"10:03"で更新し、セクタ211eの更新日時情報を"10:03"で更新する(S35)。
また、書き込み制御部131は、セクタ211eのデータ領域をパリティ#2で更新するとともに、セクタ211eの付加情報領域のうち、セクタ211cの更新日時情報を"10:03"で更新し、セクタ211eの更新日時情報を"10:03"で更新する(S36)。なお、セクタの一部のみを書換えることはできない。そのため、ステップS36における更新では、データ#3、セクタ211cの更新日時情報、セクタ211eの更新日時情報と共に、セクタ211dの更新日時情報に対しても、更新前の更新日時情報である"10:02"が書き込まれる。
また、ストレージシステム2において、ディスクアレイ200内のHDDに対して並列してアクセスが可能であるため、ステップS35,S36を並列して実行してもよい。これにより、書き込み速度が向上する。
図11〜12で説明したように、ホストアクセス制御部120から書き込み要求がされた場合でも、読み出し処理が発生する場合がある。このような場合においても、読み出し制御部132は、更新日時情報の比較を行い、書き込み抜けの有無を判定する。
また、パリティセクタに対して読み出し処理を行う際、各データセクタに格納されているパリティセクタの更新日時情報のうち、最も大きい更新日時情報を特定し、特定した更新日時情報と、パリティセクタに格納されているパリティセクタの更新日時情報とを比較する。これにより、パリティセクタに対する書き込み抜けの判定を正確に行うことができる。
なお、第2の実施の形態では、読み出し制御部132は、更新後のデータ、更新前のデータおよび更新前のパリティに基づいて、更新後のパリティを算出する。これに対し、書き込み先のストライプを構成するセクタのうち、書き込み先のセクタ以外の全データセクタに格納されているデータと、更新後のデータとに基づいて更新後のパリティを算出してもよい。この場合、書き込み先のセクタ以外の各データセクタの内容が読み出され、図10で説明した方法により、当該各データセクタに対して書き込み抜けの有無が判定される。
次に、図13を用いて、パトロールに伴いパリティセクタからパリティが読み出される場合について説明する。
図13は、RAID5におけるパリティの読み出し制御の例を示す図である。図13において、図9〜12と同じ内容については説明を省略する。セクタ211c,211d,211eのデータ領域および付加情報領域には、図11と同じ内容が格納されている。
このとき、パトロール制御部140は、HDD#5のセクタ#1の内容を読み出すとする。
この場合、まず、パトロール制御部140は、セクタ211c,211d,211eの内容を読み出す。次に、パトロール制御部140は、セクタ211cの付加情報領域に格納されているパリティセクタの更新日時情報と、セクタ211dの付加情報領域に格納されているパリティセクタの更新日時情報とを比較する。
図13に示すように、上記更新日時情報のうち、セクタ211cにおけるパリティセクタの更新日時情報と比較して、セクタ211dにおけるパリティセクタの更新日時情報の方が大きい。そのため、パトロール制御部140は、セクタ211dにおけるパリティセクタの更新日時情報を、直近にパリティを更新したときのセクタ211eの更新日時情報と判定する(S41)。
次に、パトロール制御部140は、直近にパリティを更新したときの更新日時情報と判定された更新日時情報と、セクタ211eに格納されているセクタ211eの更新日時情報とを比較する(S42)。図11に示すように、上記各更新日時情報は、一致する。そのため、パトロール制御部140は、セクタ211eへのパリティの書き込み時に、セクタ211d,211eに対する書き込み抜けが発生していないと判定する。
図示しないが、パリティセクタの更新日時情報が、データセクタに格納された、比較対象であるパリティセクタの更新日時情報より小さい場合、パトロール制御部140は、パリティセクタに対してデータの書き込み抜けがあったと判定する。一方、パリティセクタの更新日時情報が、データセクタに格納されたパリティセクタの更新日時情報より大きい場合、パトロール制御部140は、各データセクタのいずれかに対して書き込み抜けがあったと判定する。後者の場合、例えば、パトロール制御部140は、各データセクタについて、図10で説明した方法で、書き込み抜けの有無を判定することで、書き込み抜けが発生したセクタを判定する。パトロール制御部140は、書き込み抜けがあったと判定したセクタを指定して、そのセクタのリカバリをリカバリ制御部150に依頼する。
図13で説明したように、パリティセクタのパトロールを実行する場合、パリティセクタに対して読み出し処理が発生する。このような場合においても、パトロール制御部140は、更新日時情報の比較を行い、書き込み抜けの有無を判定する。
次に、図14〜17を用いて、HDDのリカバリの例について説明する。まず、図14を用いて、RAID1のRAIDグループに属するHDDのリカバリについて説明する。そして、図15〜17を用いて、RAID5のRAIDグループに属するHDDのリカバリについて説明する。
図14は、RAID1のRAIDグループに属するHDDのリカバリの例を示す図である。図14において、図7と同じ内容については説明を省略する。セクタ211bのデータ領域にはデータ#Aが格納され、付加情報領域には、セクタ211bの更新日時情報"10:00"が格納されている。HDD210aは、例えば、HDD210bとペアで運用されていたHDD(図示せず)が故障したことにより、そのHDDの代わりに用いられるものであり、HDD210a内の各セクタ(例えば、セクタ211a)にはデータが格納されていない。
この状態において、HDD210aに対するリカバリの説明を、セクタ211a,211bを用いて説明する。この場合、リカバリ制御部150は、セクタ211bのデータ領域の内容をそのまま、セクタ211aのデータ領域にコピーする。また、リカバリ制御部150は、新たに生成した更新日時情報ではなく、セクタ211bの付加情報領域に格納されている更新日時情報を、セクタ211aの付加情報領域にコピーする(S51)。すなわち、RAID1のRAIDグループに属するHDDをリカバリする際、リカバリ対象であるHDDのミラーディスクの内容をそのままコピーする。
ここで、リカバリの際、新たに生成された更新日時情報を書き込むと、その後の読み出し処理に伴う更新日時情報の比較結果が一致しなくなるため、リカバリ後に更新日時情報の比較による書き込み抜けの判定が正常に実行できなくなる。上記処理により、リカバリ後の読み出し処理時においても、更新日時情報の比較結果による書き込み抜けの判定を正常に実行できる。
図15は、RAID5のRAIDグループに属するHDDのリカバリの例を示す図である。図15〜17において、図9〜12と同じ内容については説明を省略する。HDD210fは、ホットスペア(Hot Spare)と呼ばれる予備用のHDDである。ホットスペアのHDD210fのディスク番号は、"#6"である。
HDD210cのセクタ211c、HDD210dのセクタ211d、およびHDD210eのセクタ211eは、同一のストライプを構成している。セクタ211c,211d,211eのセクタ番号は、#1である。セクタ211c,211dはデータセクタであり、セクタ211eはパリティセクタである。セクタ211c,211dのデータ領域にはそれぞれデータ#1,データ#2が格納され、セクタ211eのデータ領域にはパリティ#1が格納されている。
また、HDD210cのセクタ211f、HDD210dのセクタ211g、およびHDD210eのセクタ211hは、同一のストライプを構成している。セクタ211f,211g,211hのセクタ番号は、#2である。セクタ211g,211hはデータセクタであり、セクタ211fはパリティセクタである。セクタ211g,211hのデータ領域にはそれぞれデータ#3,データ#4が格納され、セクタ211fのデータ領域にはパリティ#2が格納されている。
この状態において、HDD210cが故障した場合のリカバリ処理について、セクタ211c〜211hを用いて説明する。
この場合、まず、リカバリ制御部150は、セクタ番号が"#1"であるセクタ211d,セクタ211eの内容を読み出す。そして、リカバリ制御部150は、セクタ211dに格納されているデータ#2と、セクタ211eに格納されているパリティ#1との排他論理和(XOR)により、セクタ211cに格納されていたデータ#1を再構築する(S61)。
次に、リカバリ制御部150は、ホットスペアのHDD210fのセクタ#1のデータ領域に、再構築したデータ#1を書き込む。これとともに、リカバリ制御部150は、HDD210fのセクタ#1の付加情報領域に、セクタ211cの更新日時情報"10:00"、セクタ211eの更新日時情報"10:02"の順に書き込む(S62)。セクタ211cの更新日時情報およびセクタ211eの更新日時情報は、セクタ211eの付加情報領域に格納されている。
図16は、RAID5のRAIDグループに属するHDDのリカバリの例を示す図(続き)である。この図16では、セクタ211fに格納されていたパリティを再構築する際の処理を示す。パリティを再構築する際の処理は、図15に示したデータを再構築する処理とは、その一部が異なる。
リカバリ制御部150は、セクタ番号が"#2"であるセクタ211g,211hの内容を読み出す。リカバリ制御部150は、セクタ211gに格納されているデータ#3と、セクタ211hに格納されているデータ#4との排他論理和(XOR)により、セクタ211fに格納するパリティ#2を再構築する(S63)。
次に、リカバリ制御部150は、セクタ211gに格納されているパリティセクタの更新日時情報と、セクタ211hに格納されているパリティセクタの更新日時情報とを比較する。リカバリ制御部150は、各データセクタに格納されているパリティセクタの更新日時情報のうち、大きい方の更新日時情報を、セクタ211fに格納されていた、セクタ211f(パリティセクタ)の更新日時情報と特定する(S64)。図16に示すように、セクタ211hに格納されているパリティセクタの更新日時情報"10:03"と比較して、セクタ211gに格納されているパリティセクタの更新日時情報"10:04"の方が大きい。そのため、更新日時情報"10:04"が、セクタ211fの更新日時情報として特定される。
図17は、RAID5のRAIDグループに属するHDDのリカバリの例を示す図(続き2)である。次に、リカバリ制御部150は、ホットスペアのHDD210fのセクタ#2のデータ領域に、再構築したパリティ#2を書き込む。これとともに、リカバリ制御部150は、HDD210fのセクタ#2の付加情報領域に、セクタ211fの更新日時情報"10:04"、セクタ211gの更新日時情報"10:04"、セクタ211hの更新日時情報"10:03"の順に書き込む(S65)。セクタ211gの更新日時情報は、セクタ211gの付加情報領域に格納され、セクタ211hの更新日時情報は、セクタ211hの付加情報領域に格納されている。
このように、リカバリ制御部150は、HDD210c内の各セクタ番号のセクタの内容を再構築し、ホットスペアのHDD210fにおける同じセクタ番号のセクタに、再構築したセクタの内容を格納する。
図15〜17で説明した方法により、リカバリ先のHDD210fをRAIDグループ#2に組み入れた後の読み出し処理時において、更新日時情報の比較結果による書き込み抜けの判定を正常に実行できる。
なお、この後に、故障したHDD210cの代わりに新たなHDD(図示せず)が搭載された場合には、リカバリ制御部150は、ホットスペアのHDD210fの内容を新たなHDDに書き戻す。このとき、リカバリ制御部150は、図14に示した処理と同様に、ホットスペアのHDD210fの各セクタにおけるデータ領域および付加情報領域の内容を、新たなHDDの対応するセクタに対してそのままコピーする。これにより、書き戻しが完了したHDDをRAIDグループに組み入れた後の読み出し処理時においても、更新日時情報の比較結果による書き込み抜けの判定を正常に実行できる。
次に、図18〜20を用いて、書き込み制御および読み出し制御の処理についてフローチャートを用いて説明する。
図18は、書き込み制御処理の例を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
(S101)書き込み制御部131は、ホストアクセス制御部120からデータの書き込み要求を受け付ける。ここで、ホストアクセス制御部120がデータの書き込み要求を出力するケースとは、例えば、キャッシュ領域に格納されたデータをディスクアレイ200内のHDDへ書き込む"ライトバック"を行うケースである。ライトバックの具体例としては、例えば、キャッシュ領域の残容量が所定容量以下になったとき、最終更新日時が最も早いデータをHDDへ書き込んで、そのデータをキャッシュ領域から削除する場合と、キャッシュ領域内のデータが更新されてから所定時間後に、更新されたデータをHDDへ書き込む場合とがある。
ホストアクセス制御部120からの書き込み要求には、例えば、書き込み対象のデータの論理ボリュームにおける先頭論理アドレスが含まれる。書き込み制御部131は、書き込み対象の論理ボリュームに対応するRAIDグループを特定する。書き込み制御部131は、特定したRAIDグループに対応するRAID管理テーブル111を参照し、そのRAIDグループに関する情報と、ホストアクセス制御部120から指定された先頭論理アドレスと、書き込み対象のデータのデータ長とに基づいて、書き込み先のセクタを特定する。書き込み先のセクタは、ディスク番号とセクタ番号の組み合わせより指定される。
(S102)書き込み制御部131は、更新日時情報を生成する。生成される更新日時情報は、現在の日時を示す。
(S103)書き込み制御部131は、RAID管理テーブル111を参照して、書き込み対象のRAIDグループのRAIDレベルを判定する。ミラーリングが行われるRAIDレベル(例えば、RAID1)である場合、処理をステップS104へ進める。パリティが使用されるRAIDレベル(例えば、RAID5)である場合、処理をステップS105へ進める。
(S104)書き込み制御部131は、書き込み先となる2つのHDDのそれぞれに1セクタ分のデータを並列に書き込む際に、データとともに、ステップS102で生成した更新日時情報を、各HDDのセクタに書き込む。この処理は、図7のステップS11で説明した通りである。
(S105)書き込み制御部131は、1つのストライプのセクタのうち、データの書き込み対象となっているデータセクタとパリティセクタとを更新する。
ストライプ内の全データセクタが書き込み対象となっている場合、図9のステップS21,S22で説明した手順により書き込み処理が行われる。この場合、書き込み制御部131は、ストライプ内の全セクタのデータ領域に新たなデータまたはパリティを書き込む。これとともに、書き込み制御部131は、ストライプ内の全セクタの付加情報領域に、ステップS102で生成した更新日時情報を書き込む。
また、ストライプ内の一部のデータセクタが書き込み対象となっている場合、図11,12に示した手順により書き込み処理が行われる。この場合、書き込み制御部131は、ストライプ内のデータセクタのうち、書き込み対象となっているデータセクタのデータ領域および付加情報領域に、新たなデータと更新日時情報とをそれぞれ書き込む。また、書き込み制御部131は、パリティセクタのデータ領域に新たなパリティを書き込むとともに、パリティセクタの付加情報領域に対して、データの書き込み対象となっているデータセクタの更新日時情報とパリティセクタの更新日時情報とを書き込む。
(S106)書き込み制御部131は、ホストアクセス制御部120に対して、書き込み要求に応じた書き込み処理が完了したことを通知して応答する。
図19は、読み出し制御処理の例を示すフローチャートである。読み出し制御部132は、ホストアクセス制御部120から、読み出し対象の論理ボリュームおよび論理アドレスの指定を受ける。読み出し制御部132は、指定された論理ボリュームに対応するRAID管理テーブル111を参照して、読み出し元のディスク番号およびセクタ番号を特定する。そして、読み出し制御部132は、読み出し元のセクタ毎に図19の処理を実行する。以下、図19に示す処理をステップ番号に沿って説明する。
(S121)読み出し制御部132は、RAID管理テーブル111を参照して、読み出し元のRAIDグループのRAIDレベルを判定する。ミラーリングが行われるRAIDレベルである場合、処理をステップS122へ進める。パリティが使用されるRAIDレベルである場合、処理をステップS123へ進める。
(S122)読み出し制御部132は、メインディスク(二重化されたHDDのうち、メインのHDD)の該当セクタの内容を読み出すとともに、ミラーディスク(二重化されたHDDのうち、他方のHDD)の該当セクタの内容を読み出す。
(S123)読み出し制御部132は、該当データセクタの内容を読み出すとともに、同じストライプ内のパリティセクタの内容を読み出す。
なお、実際には、同じストライプ内の複数のデータセクタが読み出し対象である場合には、それらのデータセクタおよびパリティセクタのそれぞれからの読み出しが同時に行われる。
(S124)読み出し制御部132は、各セクタの付加情報領域から、該当データセクタの更新日時情報を取得し、それらを比較する。
(S125)読み出し制御部132は、ステップS124で取得した各更新日時情報同士が一致するか判定する。ステップS124で取得した各更新日時情報が一致する場合、処理をステップS130へ進める。各更新日時情報が一致しない場合、処理をステップS126へ進める。
(S126)読み出し制御部132は、ステップS124,S125での更新日時情報の比較結果から、比較対象とされたセクタのどちらにおいて書き込み抜けが発生したかを判定する。
(S127)読み出し制御部132は、現時点から所定時間(例えば、10分)前までの期間において、ディスクアレイ200に搭載されたHDDのうち、ステップS126で書き込み抜けの発生が判定されたセクタが属するHDDを除く他のHDDでも、書き込み抜けの発生が判定されているかを判定する。他のHDDでも書き込み抜けが発生した場合、処理をステップS128に進める。他のHDDで書き込み抜けが発生していない場合、処理をステップS129に進める。
(S128)読み出し制御部132は、ストレージ制御装置100が故障している旨を、ストレージシステム2の管理者に通知する。
(S129)読み出し制御部132は、ステップS126で書き込み抜けが発生したと判定されたセクタを指定して、セクタのリカバリをリカバリ制御部150に依頼する。リカバリ制御部150は、読み出し制御部132からの依頼に応じて、指定されたセクタのリカバリを実行する。詳細は、図20において後述する。
(S130)読み出し制御部132は、読み出しが要求されたデータを取得する。ステップS122が実行された場合、メインディスクのセクタのデータ領域からデータが取得される。ステップS123が実行された場合、データセクタのデータ領域からデータが取得される。読み出し制御部132は、例えば、取得したデータをRAM102等に一時的に格納する。
図20は、リカバリ処理の例を示すフローチャートである。図20の処理は、前述のステップS129で実行される。本処理実行時には、リカバリ対象のセクタが指定される。リカバリ対象のセクタは、ディスク番号とセクタ番号の組み合わせより指定される。以下、図20に示す処理をステップ番号に沿って説明する。
(S141)リカバリ制御部150は、RAID管理テーブル111を参照して、リカバリ対象のRAIDグループのRAIDレベルを判定する。ミラーリングが行われるRAIDレベルである場合、処理をステップS142へ進める。パリティが使用されるRAIDである場合、処理をステップS143へ進める。
(S142)リカバリ制御部150は、ステップS124で比較した更新日時情報のうち、後の日時を示す更新日時情報の取得元セクタにおけるデータ領域および付加情報領域の内容を、他方のセクタのデータ領域および付加情報領域にそれぞれコピーする。これにより、書き込み抜けが発生したセクタの内容が復旧する。
(S143)リカバリ制御部150は、次のようにしてセクタの内容を復旧する。
ステップS126においてデータセクタでの書き込み抜けが発生したと判定された場合、リカバリ制御部150は、同一ストライプのセクタのうち、書き込み抜けが発生したデータセクタを除く他の全データセクタおよびパリティセクタの内容を読み出す。リカバリ制御部150は、読み出した内容のうち、各データ領域のデータおよびパリティに基づいて、書き込み抜けが発生したデータセクタにおけるデータ領域のデータを算出する。これとともに、リカバリ制御部150は、パリティセクタの付加情報領域から、書き込み抜けが発生したデータセクタの更新日時情報と、パリティセクタの更新日時情報とを取得する。リカバリ制御部150は、書き込み抜けが発生したデータセクタにおけるデータ領域に、算出したデータを書き込むとともに、そのデータセクタにおける付加情報領域に、取得した各更新日時情報を書き込む。これにより、書き込み抜けが発生したデータセクタの内容が復旧する。
なお、以上の処理は、図15において、セクタ211cで書き込み抜けが発生したと仮定した場合に、再構築したデータ#1と更新日時情報とを、ホットスペアのセクタの代わりに元のセクタ211cに書き込む処理に相当する。
一方、ステップS126においてパリティセクタでの書き込み抜けが発生したと判定された場合、リカバリ制御部150は、同一ストライプの全データセクタの内容を読み出す。リカバリ制御部150は、読み出した内容のうち、各データ領域のデータに基づいて、パリティを再計算する。これとともに、読み出した内容のうちの各付加情報領域に格納されているパリティセクタの更新日時情報を比較し、これらの中から最も後の日時を示す更新日時情報を選択する。リカバリ制御部150は、書き込み抜けが発生したパリティセクタにおけるデータ領域に、再計算により算出されたパリティを書き込む。これとともに、書き込み抜けが発生したパリティセクタにおける付加情報領域に、各データセクタの付加情報領域に格納されていた、各データセクタの更新日時情報と、上記手順で選択したパリティセクタの更新日時情報とを書き込む。これにより、書き込み抜けが発生したパリティセクタの内容が復旧する。
なお、以上の処理は、図16において、セクタ211fで書き込み抜けが発生したと仮定した場合に、再構築したパリティ#2と更新日時情報とを、ホットスペアのセクタの代わりに元のセクタ211fに書き込む処理に相当する。
図19,20の処理では、読み出し制御部132は、ステップS125において更新日時情報が一致しない場合、ステップS126において、それらの更新日時情報の比較に基づいて、比較対象としたどちらのセクタで書き込み抜けが発生したかを判定できる。このため、読み出し制御部132は、書き込み抜けが発生したと判定したセクタをリカバリ対象として指定して、そのリカバリをリカバリ制御部150に依頼することができる。これにより、書き込み抜けが発生したセクタの内容を、正当な内容に更新することができ、記録データの信頼性を向上させることができる。
なお、前述のように、第1の実施の形態の情報処理は、ストレージ制御装置10にプログラムを実行させることで実現でき、第2の実施の形態の情報処理は、ストレージ制御装置100にプログラムを実行させることで実現できる。このようなプログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体106a)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等を使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置(例えば、HDD103)に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。また、上記の情報処理の少なくとも一部を、DSP(Digital Signal Processor)、PLD(Programmable Logic Device)等の電子回路で実現することも可能である。
以上の第1および第2の実施の形態を含む実施の形態に関し、さらに以下の付記を開示する。
(付記1) データの書き込み要求に応じて、書き込みが要求された書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置に書き込むとともに、第2の記憶装置における前記書き込みデータに対応する記憶領域に、前記書き込みデータに付加した付加データを書き込んで、前記書き込み要求に応じた書き込み処理の完了通知を出力する書き込み制御部と、
データの読み出し要求に応じて、読み出しが要求された読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記第2の記憶装置における前記読み出しデータに対応する記憶領域から付加データを読み出し、前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて前記読み出しデータの正当性を判定する読み出し制御部と、
を有することを特徴とするストレージ制御装置。
(付記2) 前記書き込み制御部は、前記書き込みデータに対応する冗長データを前記第2の記憶装置に書き込むとともに、前記第1の記憶装置において前記書き込みデータに付加した付加データを前記冗長データに付加して前記第2の記憶装置に書き込み、
前記読み出し制御部は、前記読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記読み出しデータに対応する冗長データに付加された付加データを前記第2の記憶装置から読み出す、
ことを特徴とする付記1記載のストレージ制御装置。
(付記3) 前記書き込み制御部は、前記書き込みデータとこれに対応する冗長データとに付加する付加データに、前記書き込みデータの書き込み時の時刻を示す時刻情報を含め、
前記読み出し制御部は、前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合する処理において、各付加データに含まれる時刻情報同士を比較し、時刻情報が一致する場合には、読み出された前記読み出しデータおよび対応する冗長データをともに正当なデータと判定し、時刻情報が一致しない場合には、読み出された前記読み出しデータおよび対応する冗長データのうち、付加されていた付加データに含まれる時刻情報が早い時刻を示すデータを不当なデータと判定する、
ことを特徴とする付記2記載のストレージ制御装置。
(付記4) 前記読み出し制御部は、読み出された前記読み出しデータおよび対応する冗長データのうちの一方のデータを不当なデータと判定したとき、他方のデータを用いて前記一方のデータを再構築し、前記第1の記憶装置または前記第2の記憶装置に記憶されている前記一方のデータ、および、前記一方のデータに付加された付加データを、再構築された前記一方のデータ、および、前記他方のデータに付加されている付加データによってそれぞれ更新することを特徴とする付記3記載のストレージ制御装置。
(付記5) 前記第1の記憶装置に記憶されているデータを、前記第2の記憶装置に記憶されている、当該データに対応する冗長データを用いて再構築して第3の記憶装置に格納するとき、前記第2の記憶装置において当該冗長データに付加されている付加情報を、再構築されたデータに付加して前記第3の記憶装置に書き込むリカバリ制御部をさらに有することを特徴とする付記2乃至4のいずれか1つに記載のストレージ制御装置。
(付記6) 前記書き込み制御部は、前記第2の記憶装置に対して、前記書き込みデータに対応する冗長データとして、前記書き込みデータを用いて算出されるパリティデータを書き込むことを特徴とする付記2乃至5のいずれか1つに記載のストレージ制御装置。
(付記7) 前記第1の記憶装置および前記第2の記憶装置を含む複数の記憶装置のそれぞれにおける単位記憶領域によってストライプが構成され、ストライプ内の2以上の所定数の単位記憶領域が、書き込みが要求されたデータが格納されるデータ格納領域に割り当てられ、ストライプ内の残りの単位記憶領域が、同じストライプ内のデータ格納領域に格納されたデータに基づくパリティデータが格納されるパリティ格納領域に割り当てられ、
前記書き込み制御部は、ストライプ内の1以上のデータ格納領域に対するデータ更新に伴って同じストライプ内のパリティ格納領域のパリティデータを更新するとき、更新対象のパリティ格納領域における更新後のパリティデータに対して、当該パリティデータの更新時刻を示すパリティ更新時刻情報を付加するとともに、付加したパリティ更新時刻を、データが更新された前記1以上のデータ格納領域における更新後のデータにも付加し、
前記読み出し制御部は、ストライプ内のパリティ格納領域からパリティデータを読み出すとき、読み出したパリティデータに付加されたパリティ更新時刻情報と、同じストライプ内の全データ格納領域においてデータに付加されたパリティ更新時刻情報のうち、最も遅い時刻を示すパリティ更新時刻情報とを照合し、読み出したパリティデータの正当性を判定する、
ことを特徴とする付記6記載のストレージ制御装置。
(付記8) 前記書き込み制御部は、前記第2の記憶装置に対して、前記書き込みデータに対応する冗長データとして前記書き込みデータと同一のデータを書き込むことを特徴とする付記2乃至5のいずれか1つに記載のストレージ制御装置。
(付記9) ストレージ制御装置が、
データの書き込み要求に応じて、書き込みが要求された書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置に書き込むとともに、第2の記憶装置における前記書き込みデータに対応する記憶領域に、前記書き込みデータに付加した付加データを書き込んで、前記書き込み要求に応じた書き込み処理の完了通知を出力し、
データの読み出し要求に応じて、読み出しが要求された読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記第2の記憶装置における前記読み出しデータに対応する記憶領域から付加データを読み出し、
前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて前記読み出しデータの正当性を判定する、
ことを特徴とするストレージ制御方法。
(付記10) 前記書き込み要求に応じた書き込み処理では、前記書き込みデータに対応する冗長データを前記第2の記憶装置に書き込むとともに、前記第1の記憶装置において前記書き込みデータに付加した付加データを前記冗長データに付加して前記第2の記憶装置に書き込み、
前記読み出し要求に応じた読み出し処理では、前記読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記読み出しデータに対応する冗長データに付加された付加データを前記第2の記憶装置から読み出す、
ことを特徴とする付記9記載のストレージ制御方法。
(付記11) 前記書き込み要求に応じた書き込み処理では、前記書き込みデータとこれに対応する冗長データとに付加する付加データに、前記書き込みデータの書き込み時の時刻を示す時刻情報を含め、
前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出された付加データ同士を照合する処理では、各付加データに含まれる時刻情報同士を比較し、時刻情報が一致する場合には、読み出された前記読み出しデータおよび対応する冗長データをともに正当なデータと判定し、時刻情報が一致しない場合には、読み出された前記読み出しデータおよび対応する冗長データのうち、付加されていた付加データに含まれる時刻情報が早い時刻を示すデータを不当なデータと判定する、
ことを特徴とする付記10記載のストレージ制御方法。
(付記12) 読み出された前記読み出しデータおよび対応する冗長データのうちの一方のデータを不当なデータと判定したとき、他方のデータを用いて前記一方のデータを再構築し、前記第1の記憶装置または前記第2の記憶装置に記憶されている前記一方のデータ、および、前記一方のデータに付加された付加データを、再構築された前記一方のデータ、および、前記他方のデータに付加されている付加データによってそれぞれ更新することを特徴とする付記11記載のストレージ制御方法。
(付記13) 前記第1の記憶装置に記憶されているデータを、前記第2の記憶装置に記憶されている、当該データに対応する冗長データを用いて再構築して第3の記憶装置に格納するとき、前記第2の記憶装置において当該冗長データに付加されている付加情報を、再構築されたデータに付加して前記第3の記憶装置に書き込むことを特徴とする付記10乃至12のいずれか1つに記載のストレージ制御方法。
(付記14) 前記書き込み要求に応じた書き込み処理では、前記第2の記憶装置に対して、前記書き込みデータに対応する冗長データとして、前記書き込みデータを用いて算出されるパリティデータを書き込むことを特徴とする付記2乃至5のいずれか1つに記載のストレージ制御方法。
(付記15) コンピュータに、
データの書き込み要求に応じて、書き込みが要求された書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置に書き込むとともに、第2の記憶装置における前記書き込みデータに対応する記憶領域に、前記書き込みデータに付加した付加データを書き込んで、前記書き込み要求に応じた書き込み処理の完了通知を出力し、
データの読み出し要求に応じて、読み出しが要求された読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記第2の記憶装置における前記読み出しデータに対応する記憶領域から付加データを読み出し、
前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて前記読み出しデータの正当性を判定する、
処理を実行させることを特徴とするストレージ制御プログラム。
10 ストレージ制御装置
11 書き込み制御部
12 読み出し制御部
21 第1の記憶装置
21a データ領域
21b,22a 付加データ領域
22 第2の記憶装置
30 ホスト装置

Claims (10)

  1. データの書き込み要求に応じて、書き込みが要求された書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置に書き込むとともに、第2の記憶装置における前記書き込みデータに対応する記憶領域に、前記書き込みデータに付加した付加データを書き込んで、前記書き込み要求に応じた書き込み処理の完了通知を出力する書き込み制御部と、
    データの読み出し要求に応じて、読み出しが要求された読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記第2の記憶装置における前記読み出しデータに対応する記憶領域から付加データを読み出し、前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて前記読み出しデータの正当性を判定する読み出し制御部と、
    を有することを特徴とするストレージ制御装置。
  2. 前記書き込み制御部は、前記書き込みデータに対応する冗長データを前記第2の記憶装置に書き込むとともに、前記第1の記憶装置において前記書き込みデータに付加した付加データを前記冗長データに付加して前記第2の記憶装置に書き込み、
    前記読み出し制御部は、前記読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記読み出しデータに対応する冗長データに付加された付加データを前記第2の記憶装置から読み出す、
    ことを特徴とする請求項1記載のストレージ制御装置。
  3. 前記書き込み制御部は、前記書き込みデータとこれに対応する冗長データとに付加する付加データに、前記書き込みデータの書き込み時の時刻を示す時刻情報を含め、
    前記読み出し制御部は、前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合する処理において、各付加データに含まれる時刻情報同士を比較し、時刻情報が一致する場合には、読み出された前記読み出しデータおよび対応する冗長データをともに正当なデータと判定し、時刻情報が一致しない場合には、読み出された前記読み出しデータおよび対応する冗長データのうち、付加されていた付加データに含まれる時刻情報が早い時刻を示すデータを不当なデータと判定する、
    ことを特徴とする請求項2記載のストレージ制御装置。
  4. 前記読み出し制御部は、読み出された前記読み出しデータおよび対応する冗長データのうちの一方のデータを不当なデータと判定したとき、他方のデータを用いて前記一方のデータを再構築し、前記第1の記憶装置または前記第2の記憶装置に記憶されている前記一方のデータ、および、前記一方のデータに付加された付加データを、再構築された前記一方のデータ、および、前記他方のデータに付加されている付加データによってそれぞれ更新することを特徴とする請求項3記載のストレージ制御装置。
  5. 前記第1の記憶装置に記憶されているデータを、前記第2の記憶装置に記憶されている、当該データに対応する冗長データを用いて再構築して第3の記憶装置に格納するとき、前記第2の記憶装置において当該冗長データに付加されている付加情報を、再構築されたデータに付加して前記第3の記憶装置に書き込むリカバリ制御部をさらに有することを特徴とする請求項2乃至4のいずれか1項に記載のストレージ制御装置。
  6. 前記書き込み制御部は、前記第2の記憶装置に対して、前記書き込みデータに対応する冗長データとして、前記書き込みデータを用いて算出されるパリティデータを書き込むことを特徴とする請求項2乃至5のいずれか1項に記載のストレージ制御装置。
  7. 前記第1の記憶装置および前記第2の記憶装置を含む複数の記憶装置のそれぞれにおける単位記憶領域によってストライプが構成され、ストライプ内の2以上の所定数の単位記憶領域が、書き込みが要求されたデータが格納されるデータ格納領域に割り当てられ、ストライプ内の残りの単位記憶領域が、同じストライプ内のデータ格納領域に格納されたデータに基づくパリティデータが格納されるパリティ格納領域に割り当てられ、
    前記書き込み制御部は、ストライプ内の1以上のデータ格納領域に対するデータ更新に伴って同じストライプ内のパリティ格納領域のパリティデータを更新するとき、更新対象のパリティ格納領域における更新後のパリティデータに対して、当該パリティデータの更新時刻を示すパリティ更新時刻情報を付加するとともに、付加したパリティ更新時刻を、データが更新された前記1以上のデータ格納領域における更新後のデータにも付加し、
    前記読み出し制御部は、ストライプ内のパリティ格納領域からパリティデータを読み出すとき、読み出したパリティデータに付加されたパリティ更新時刻情報と、同じストライプ内の全データ格納領域においてデータに付加されたパリティ更新時刻情報のうち、最も遅い時刻を示すパリティ更新時刻情報とを照合し、読み出したパリティデータの正当性を判定する、
    ことを特徴とする請求項6記載のストレージ制御装置。
  8. 前記書き込み制御部は、前記第2の記憶装置に対して、前記書き込みデータに対応する冗長データとして前記書き込みデータと同一のデータを書き込むことを特徴とする請求項2乃至5のいずれか1項に記載のストレージ制御装置。
  9. ストレージ制御装置が、
    データの書き込み要求に応じて、書き込みが要求された書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置に書き込むとともに、第2の記憶装置における前記書き込みデータに対応する記憶領域に、前記書き込みデータに付加した付加データを書き込んで、前記書き込み要求に応じた書き込み処理の完了通知を出力し、
    データの読み出し要求に応じて、読み出しが要求された読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記第2の記憶装置における前記読み出しデータに対応する記憶領域から付加データを読み出し、
    前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて前記読み出しデータの正当性を判定する、
    ことを特徴とするストレージ制御方法。
  10. コンピュータに、
    データの書き込み要求に応じて、書き込みが要求された書き込みデータに、同じ記憶領域への書き込みのたびに更新される付加データを付加して第1の記憶装置に書き込むとともに、第2の記憶装置における前記書き込みデータに対応する記憶領域に、前記書き込みデータに付加した付加データを書き込んで、前記書き込み要求に応じた書き込み処理の完了通知を出力し、
    データの読み出し要求に応じて、読み出しが要求された読み出しデータと前記読み出しデータに付加された付加データとを前記第1の記憶装置から読み出すとともに、前記第2の記憶装置における前記読み出しデータに対応する記憶領域から付加データを読み出し、
    前記第1の記憶装置および前記第2の記憶装置からそれぞれ読み出した付加データ同士を照合し、照合結果に基づいて前記読み出しデータの正当性を判定する、
    処理を実行させることを特徴とするストレージ制御プログラム。
JP2014111500A 2014-05-29 2014-05-29 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム Withdrawn JP2015225603A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014111500A JP2015225603A (ja) 2014-05-29 2014-05-29 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
US14/698,875 US20150347224A1 (en) 2014-05-29 2015-04-29 Storage control apparatus and method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014111500A JP2015225603A (ja) 2014-05-29 2014-05-29 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2015225603A true JP2015225603A (ja) 2015-12-14

Family

ID=54701867

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014111500A Withdrawn JP2015225603A (ja) 2014-05-29 2014-05-29 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US20150347224A1 (ja)
JP (1) JP2015225603A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022040260A (ja) * 2018-01-15 2022-03-10 株式会社バッファロー ストレージ装置、ストレージシステム、及びプログラム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10665305B2 (en) * 2015-09-09 2020-05-26 Toshiba Memory Corporation Host device connectable to memory device performing patrol read and memory device performing patrol read
CN108228090B (zh) * 2016-12-22 2021-02-26 财团法人工业技术研究院 硬盘阵列及其重建方法
CN110309012B (zh) * 2018-03-27 2021-01-26 杭州海康威视数字技术股份有限公司 一种数据处理方法及其装置
US11132315B2 (en) * 2019-02-04 2021-09-28 American Megatrends International, Llc Secured and out-of-band (OOB) server san solution on a commodity storage box

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448728A (en) * 1991-08-08 1995-09-05 Sharp Kabushiki Kaisha Storage medium control system for controlling a write-once read-many storage medium
JPH08249218A (ja) * 1995-03-15 1996-09-27 Fujitsu Ltd ファイル制御装置及びデータ書き込み方法
US6578120B1 (en) * 1997-06-24 2003-06-10 International Business Machines Corporation Synchronization and resynchronization of loosely-coupled copy operations between a primary and a remote secondary DASD volume under concurrent updating
US5999931A (en) * 1997-10-17 1999-12-07 Lucent Technologies Inc. Concurrency control protocols for management of replicated data items in a distributed database system
US7200623B2 (en) * 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US6170063B1 (en) * 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
US9239763B2 (en) * 2012-09-28 2016-01-19 Oracle International Corporation Container database
US7076510B2 (en) * 2001-07-12 2006-07-11 Brown William P Software raid methods and apparatuses including server usage based write delegation
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US7239605B2 (en) * 2002-09-23 2007-07-03 Sun Microsystems, Inc. Item and method for performing a cluster topology self-healing process in a distributed data system cluster
JP4021823B2 (ja) * 2003-09-01 2007-12-12 株式会社日立製作所 リモートコピーシステム及びリモートコピーの方法
WO2005050489A1 (en) * 2003-11-13 2005-06-02 Commvault Systems, Inc. System and method for stored data archive verification
JP4434857B2 (ja) * 2003-12-04 2010-03-17 株式会社日立製作所 リモートコピーシステム及びシステム
US7421549B2 (en) * 2004-03-02 2008-09-02 Hitachi, Ltd. Method and apparatus of remote copy for multiple storage subsystems
US8768890B2 (en) * 2007-03-14 2014-07-01 Microsoft Corporation Delaying database writes for database consistency
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US20090083503A1 (en) * 2007-09-20 2009-03-26 Inventec Corporation System of creating logical volume and method thereof
US8046333B1 (en) * 2008-04-30 2011-10-25 Netapp, Inc. Incremental dump with a metadata container walk using inode-to-parent mapping information
US7962458B2 (en) * 2008-06-12 2011-06-14 Gravic, Inc. Method for replicating explicit locks in a data replication engine
JP5391712B2 (ja) * 2009-02-05 2014-01-15 富士通株式会社 ディスクアレイ装置
JP2011108306A (ja) * 2009-11-16 2011-06-02 Sony Corp 不揮発性メモリおよびメモリシステム
US8990162B1 (en) * 2011-09-30 2015-03-24 Emc Corporation Metadata generation for incremental backup
US9100330B1 (en) * 2012-07-13 2015-08-04 Emc Corporation Introduction of read delay or write delay in servers of a geographically distributed data processing system so that clients read up-to-date data
US9672237B2 (en) * 2013-03-15 2017-06-06 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US9519510B2 (en) * 2014-03-31 2016-12-13 Amazon Technologies, Inc. Atomic writes for multiple-extent operations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022040260A (ja) * 2018-01-15 2022-03-10 株式会社バッファロー ストレージ装置、ストレージシステム、及びプログラム
JP7193763B2 (ja) 2018-01-15 2022-12-21 株式会社バッファロー ストレージ装置、ストレージシステム、及びプログラム

Also Published As

Publication number Publication date
US20150347224A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
US9542272B2 (en) Write redirection in redundant array of independent disks systems
JP5066199B2 (ja) 半導体記憶装置
JP4901968B2 (ja) 半導体記憶装置
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP5807458B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
US20110197024A1 (en) Providing redundancy in a virtualized storage system for a computer system
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
JP5843010B2 (ja) ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
WO2013159503A1 (zh) 一种硬盘数据恢复方法、装置及系统
JP2012509521A (ja) ソリッドステートドライブデータを回復するためのシステム及び方法
JP2015201204A (ja) データ記憶装置におけるデータ保全性管理
JP2006146833A (ja) ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法
JP2015225603A (ja) ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
JP5942512B2 (ja) ストレージ制御装置およびストレージシステム
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP4491330B2 (ja) ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム
US8938641B2 (en) Method and apparatus for synchronizing storage volumes
US8832370B2 (en) Redundant array of independent storage
US20130019122A1 (en) Storage device and alternative storage medium selection method
JP2010026812A (ja) 磁気ディスク装置
JP6171616B2 (ja) ストレージ制御装置、及びストレージ制御プログラム
JP2005107839A (ja) アレイコントローラ及びディスクアレイ再構築方法
JP2012247817A (ja) ストレージ制御装置、ストレージ装置及びパトロール診断方法
JP6957845B2 (ja) ストレージ制御装置及びストレージ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20171127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171130