(57)【要約】【課題】ディスク障害発生時の応答時間を短縮しつつ、キャッシュメモリの容量の浪費を防止するストレージ装置を提供する。【解決手段】ユーザデータ及び前記ユーザデータから生成された２種類以上の冗長データを格納する複数の記憶装置と、前記記憶装置へのデータの入出力を管理する制御部と、前記記憶装置へ入出力されるデータを一時的に格納するキャッシュと、を備えるディスクアレイ装置において、前記制御部は、前記記憶装置から前記ユーザデータを読み出す際に、前記記憶装置から前記冗長データを読み出し、前記ユーザデータと共に、前記１種類の冗長データを前記キャッシュに格納する。【選択図】  図１
2006065743.tif 000002
【特許請求の範囲】
【請求項１】
ユーザデータ及び前記ユーザデータから生成された２種類以上の冗長データを格納する複数の記憶装置と、前記記憶装置へのデータの入出力を管理する制御部と、前記記憶装置へ入出力されるデータを一時的に格納するキャッシュと、を備えるディスクアレイ装置において、
前記制御部は、
前記記憶装置から前記ユーザデータを読み出す際に、前記記憶装置から前記冗長データを読み出し、
前記ユーザデータと共に、前記１種類の冗長データを前記キャッシュに格納するディスクアレイ装置。
【請求項２】
前記制御部は、前記記憶装置から前記ユーザデータを読み出す際に、前記記憶装置から前記１種類の冗長データを読み出す請求項１に記載のディスクアレイ装置。
【請求項３】
前記制御部は、
通常時は前記１種類の冗長データを前記キャッシュに格納し、
前記記憶装置に障害が発生した時は、前記２種類の冗長データを前記キャッシュに格納する請求項１に記載のディスクアレイ装置。
【請求項４】
ユーザデータ及び前記ユーザデータから生成された２種類以上の冗長データを格納する複数の記憶装置と、前記記憶装置へのデータの入出力を管理する制御部と、前記記憶装置へ入出力されるデータを一時的に格納するキャッシュと、を備えるディスクアレイ装置において、
前記制御部は、
前記記憶装置に記憶された前記１種類の冗長データを前記キャッシュに格納し、
前記ユーザデータの復元時に、前記キャッシュから読み出した冗長データによってユーザデータを復元するディスクアレイ装置。
【請求項５】
前記制御部は、
通常時は前記１種類の冗長データを前記キャッシュに格納し、
前記記憶装置に障害が発生した時は、前記ユーザデータの復元時に、前記１種類の冗長データを前記キャッシュから読み出して、前記読み出した１種類の冗長データによってユーザデータを復元すると共に、前記２種類の冗長データを前記キャッシュに格納する請求項４に記載のディスクアレイ装置。
【請求項６】
ユーザデータ及び前記ユーザデータから生成された２種類以上の冗長データを格納する複数の記憶装置と、前記記憶装置へのデータの入出力を管理する制御部と、前記記憶装置へ入出力されるデータを一時的に格納するキャッシュと、を備えるディスクアレイ装置において、
前記制御部は、
前記記憶装置からユーザデータを読み出す際に、前記記憶装置から前記２種類の冗長データを読み出し、
前記ユーザデータと共に、前記２種類の冗長データを前記キャッシュに格納するディスクアレイ装置。
【請求項７】
前記制御部は、
前記記憶装置に障害が発生した時は、前記ユーザデータの復元時に、前記１種類の冗長データを前記キャッシュから読み出し、
前記読み出した１種類の冗長データによってユーザデータを復元する請求項６に記載のディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤ構成のディスクアレイ装置に関し、特にパリティデータのキャッシュへのステージ技術に関する。
【背景技術】
【０００２】
ディスクアレイ装置に格納されたユーザデータに関する冗長情報を、ディスクアレイ装置の一部に格納し、ディスクに障害が発生した場合に、ユーザデータを再構築するＲＡＩＤ構成のディスクアレイ装置が知られている。このＲＡＩＤ構成のうち、ＲＡＩＤ６では、複数のディスクにデータを分割して格納し、該データから２種類の冗長データを生成する。そして、各冗長データを異なるディスクに格納する。
【０００３】
また、ディスクアレイ装置は、ディスクから読み出される（又は、ディスクに書き込まれる）データを一時的に格納するキャッシュメモリを有し、データの入出力に必要な時間を短縮している。このとき、ディスクからのデータ読み出し時に冗長データも同時に読み出すことによって、データ読み出しに失敗した場合の応答時間を短縮する技術が提案されている（例えば、特許文献１参照。）。
【特許文献１】特開平１１−２１２７２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述した従来技術では、ＲＡＩＤ５構成のディスクアレイ装置で、ディスクからユーザデータと共に冗長データも読み出して、キャッシュに格納している。この技術をＲＡＩＤ６構成のディスクアレイ装置に適用すると、２種類の冗長データがキャッシュメモリに格納される。しかし、ＲＡＩＤ６構成のディスクアレイ装置において、ディスクに障害が発生したときに、キャッシュに格納された冗長データを用いてデータを復元する方法については提案されていなかった。
【０００５】
また、ＲＡＩＤ６構成のディスクアレイ装置において、生成された２種類の冗長データをキャッシュメモリに格納すると、大容量のキャッシュメモリが必要となる。２台のディスクに同時に障害が発生することは希なので、生成された２種類の冗長データを常にキャッシュメモリに格納すると、キャッシュメモリの容量を浪費する。
【０００６】
本発明は、ＲＡＩＤ６構成のディスクアレイ装置において、ディスク障害発生時に、キャッシュに格納された冗長データを用いてデータを復元する方法を提供する。また、本発明は、冗長データの必要に応じて、キャッシュに格納される冗長データを変えることによって、ディスク障害発生時の応答時間を短縮しつつ、キャッシュメモリの容量の浪費を防止するストレージ装置の提供を目的とする。
【課題を解決するための手段】
【０００７】
本発明は、ユーザデータ及び前記ユーザデータから生成された２種類以上の冗長データを格納する複数の記憶装置と、前記記憶装置へのデータの入出力を管理する制御部と、前記記憶装置へ入出力されるデータを一時的に格納するキャッシュと、を備えるディスクアレイ装置において、前記制御部は、前記記憶装置から前記ユーザデータを読み出す際に、前記記憶装置から前記冗長データを読み出し、前記ユーザデータと共に、前記１種類の冗長データを前記キャッシュに格納する。
【発明の効果】
【０００８】
本発明によると、ＲＡＩＤ６構成のディスクアレイ装置において、ディスク障害発生時の応答時間を短縮しつつ、キャッシュメモリの容量の浪費を防止することができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態を図面を参照して説明する。
【００１０】
図１は、本発明の第１の実施の形態の計算機システムのブロック図である。
【００１１】
この計算機システムは、ディスクアレイ装置１００、複数台の上位装置（ホストコンピュータ）２００、及び、計算機システム内の各装置を接続するＳＡＮ３００にから構成される。
【００１２】
ディスクアレイ装置１００には、ＣＰＵ１１０、メモリ１２０、キャッシュ１３０、上位インターフェース１４０、ディスクインターフェース１５０、及びディスク１６０が設けられている。
【００１３】
ＣＰＵ１１０は、メモリ１２０に記憶された管理プログラム１２１〜１２４をロードして実行することによって各種処理を行う。例えば、上位インターフェース１４０、ディスクインターフェース１５０及びキャッシュメモリ１３０の間のデータの転送を制御する。
【００１４】
メモリ１２０には、揮発性又は不揮発性のメモリであって、キャッシュ管理プログラム１２１、ディスク入出力管理プログラム１２２、ＲＡＩＤ管理プログラム１２３及びパリティ生成管理プログラム１２４が記憶されている。また、ＣＰＵ１１０による演算に必要なワークエリアが設けられている。
【００１５】
キャッシュ１３０は、ディスクアレイ装置１００から入出力されるデータを一時的に格納するメモリである。キャッシュ１３０には、データ領域１３１及びパリティ領域１３２が設けられている。
【００１６】
データ領域１３１には、上位インターフェース１４０とディスクインターフェース１５０との間で転送されるデータが格納される。パリティ領域１３２には、データ領域１３１に格納されるデータに対応する冗長データ（パリティ）が格納される。また、キャッシュ１３０には、キャッシュ管理テーブル１３３（図２）が格納されている。
【００１７】
なお、キャッシュ１３０は、メモリ１２０とは別個の記憶素子に設けてもよいが、メモリ１２０と同一の記憶素子の一部の領域をキャッシュ１３０として用いてもよい。
【００１８】
上位インターフェース１４０は、上位装置２００に対するインターフェースであって、ＳＡＮ３００を介して、上位装置２００との間でデータや制御信号を送受信する。この上位装置２００との間の通信は、ファイバチャネルプロトコルが用いられる。
【００１９】
ディスクインターフェース１５０は、ディスク１６０に対するインターフェースであって、例えば、ＡＴＡ、ＳＡＳ、ファイバチャネル等のプロトコルによって、ディスクとの間でデータや制御信号を送受信する。
【００２０】
ディスク１６０は、データを記憶する記憶装置で、例えば、複数の磁気ディスクドライブによって構成される。ディスク１６０は、ＲＡＩＤ（Redundant Array of Independent Disks）を構成しており、複数のディスクにユーザデータを分割して入出力することによって、ディスクの読み書き性能を向上させている。また、記憶されるデータに冗長性を持たせ、ディスクの一部に障害が生じても、記憶されたデータが消失しないようにしている。
【００２１】
ディスク１６０は論理区画によって分割され、論理ユニットを構成する。又は、複数のディスク装置１６０から論理ユニットを構成してもよい。
【００２２】
さらに本実施の形態では、ディスク１６０はＲＡＩＤ６を構成している。すなわち、複数のディスク１６０にユーザデータを分割して保存し、ユーザデータから生成された２種類の冗長データ（パリティ）の各々を、パリティグループを構成する異なるディスク１６０に格納する。
【００２３】
上位装置２００は、ＣＰＵ、メモリ、記憶装置及びインターフェースが備わるコンピュータ装置であり、ディスクアレイ装置１００から提供されるデータを利用して、データベースサービスやウェブサービス等を提供にする。
【００２４】
ＳＡＮ３００は、ディスクアレイ装置１００と上位装置２００とを接続している。ＳＡＮ３００は、例えばファイバチャネルプロトコルのような、データの転送に適するプロトコルで通信可能なネットワークである。
【００２５】
次に、ディスクアレイ装置１００のメモリ１２０に記憶された各種管理プログラムについて説明する。
【００２６】
キャッシュ管理プログラム１２１は、キャッシュ管理テーブル１３３を参照して、データが格納されているキャッシュ１３０の領域を管理する。また、キャッシュ１３０のどの領域にデータを格納するかを管理する。また、パリティ領域に格納される冗長データがどのデータに対応するかを管理する。
【００２７】
ディスク入出力管理プログラム１２２は、上位インターフェース１４０、ディスクインターフェース１５０及キャッシュ１３０間のデータの転送を管理する。また、上位装置２００からのデータ入出力要求に従ってディスク１６０に対してデータを読み書きする。
【００２８】
ＲＡＩＤ管理プログラム１２３は、ディスク１６０にＲＡＩＤを設定する。また、複数のディスク１６０によってパリティグループを構成して、ＲＡＩＤの動作を制御する。すなわち、同一パリティグループ中の複数のディスクにデータを分散させて記憶させ、複数のディスクに分散して記憶されたデータを読み出して再構築する。また、１台のディスクが故障しても、エラー訂正機能（コレクション）によって、失われたデータを復元する。
【００２９】
パリティ生成プログラム１２４は、ディスクに格納されているデータに基づいて、冗長データ（パリティ）を生成する。本実施の形態では、ディスクアレイ装置１００はＲＡＩＤ６構成である。よって、パリティ生成プログラム１２４には、二つのパリティ生成プログラムＡ、Ｂが含まれている、この二つのパリティ生成プログラムによって、２種類のパリティが生成される。
【００３０】
なお、以上説明したプログラム１２１〜１２４は、ＣＰＵ１１０によって実行されるが、これらのプログラムの機能をハードウェアで構成してもよい。
【００３１】
図２は、第１の実施の形態のキャッシュ管理テーブル１３３の構成図である。
【００３２】
キャッシュ管理テーブル１３３には、キャッシュアドレス、ディスクアドレス、及びデータ状態フラグが格納されている。
【００３３】
キャッシュアドレスは、キャッシュメモリ上のアドレスであり、キャッシュに格納されるデータとパリティの関係を示す値（例えば、データのアドレスと、パリティのアドレスのペア）が格納される。キャッシュアドレスがいずれの領域に含まれるかによって、データかパリティかを判断することができる。
【００３４】
ディスクアドレスは、キャッシュに格納されるデータと対応するディスク上のアドレスである。
【００３５】
データ状態フラグは、キャッシュに格納されるデータの生成状態を示す情報である。例えば、データ状態フラグが”０”であれば、キャッシュに格納されているデータがディスクから読み出されたステージングデータであり、また、データ状態フラグが”１”であれば、キャッシュに格納されているデータがキャッシュ上で復元されたデータであることを示す。
【００３６】
このデータ状態フラグによって復元データを特定することができ、ディスクが障害から復旧した場合に復元データをディスク１６０に書き込むデステージ処理をすることができる。
【００３７】
図３は、第１の実施の形態のディスクアレイ装置１００におけるデータ読出処理の概念図である。
【００３８】
ディスク１６０から読み出された読み出し要求に係るデータ（Ｄ１、Ｄ２）は、一旦、キャッシュ１３０のデータ領域１３１に格納され、上位装置２００に転送される。
【００３９】
このデータの読み出しと同時に、読み出し要求に係るデータの二つのパリティ（Ｐ、Ｑ）がディスクから読み出され、キャッシュ１３０のパリティ領域１３２に格納される。なお、このディスク１６０から読み出されたパリティは、上位装置２００には転送されない。
【００４０】
図４は、第１の実施の形態のデータ書込処理のフローチャートである。
【００４１】
まず、ディスク入出力管理プログラム１２２は、上位装置２００からのデータ書き込み要求を受信すると（Ｓ１１１）、当該書き込み要求に係るデータ（新データ）をキャッシュ１３０のデータ領域１３１に格納する（Ｓ１１２）。
【００４２】
ディスク入出力管理プログラム１２２は、新データをキャッシュ１３０に格納すると、上位装置２００に対しデータ書込完了報告を送信する（Ｓ１１３）。新データのディスク１６０への書き込みは、上位装置２００へのデータ書込完了報告後に、ライトアフタ処理によって非同期に実施される。
【００４３】
その後、パリティ生成管理プログラム１２４は、上位装置２００から書き込まれたデータが格納されるディスク１６０のアドレスを特定し、該アドレスに書き込まれている旧データと旧パリティをディスク１６０から読み出す（Ｓ１１４）。
【００４４】
そして、パリティ生成管理プログラム１２４は、ディスク１６０から読み出した旧データ、旧パリティ、及び上位装置２００から書き込まれた新データを用いて、新パリティを生成する（Ｓ１１５）。
【００４５】
その後、ディスク入出力管理プログラム１２２は、キャッシュ１３０から新データを読み出して、生成された新パリティとともに、ディスク１６０に書き込む（Ｓ１１６）。
【００４６】
図５は、第１の実施の形態のデータ書込処理（図４）の概念図である。
【００４７】
上位装置２００から書き込まれた新データ（ＮＤ１、ＮＤ２）はデータ領域１３１に格納される。その後、新データに対応する旧データ（Ｄ１、Ｄ２）及び旧パリティ（Ｐ、Ｑ）がディスク１６０から読み出される。
【００４８】
パリティ生成管理プログラムＡ、Ｂによって、ディスク１６０から読み出した旧データ、旧パリティ、及び上位装置２００から書き込まれた新データを用いて、新パリティ（ＮＰ、ＮＱ）が生成される。
【００４９】
このとき、パリティ生成プログラムＡは、ディスク１６０に格納されるデータの排他的論理和によってパリティＰを計算する。また、パリティ生成プログラムＢは、ディスク１６０に格納されるデータのガロア演算によってパリティＱを計算する。なお、ガロア演算は排他的論理和演算よりも、パリティ生成及びパリティを用いたデータの復元の計算量が多い。よって、後述するように１種類のパリティのみを用いる場合には、排他的論理和によって計算されたパリティＰを用いるとよい。
【００５０】
図６は、第１の実施の形態のキャッシュ上のパリティに障害が発生したときの処理のフローチャートである。
【００５１】
まず、ディスク入出力管理プログラム１２２が上位装置２００からのデータ読み出し要求を受信すると（Ｓ１２１）、該データ読み出し要求から、要求に係るデータが格納されているディスクを特定する（Ｓ１２２）。そして、ディスクアレイ装置１００内で管理されているテーブルを参照して、該特定されたディスクに障害が発生しているか否かを判定する（Ｓ１２３）。
【００５２】
その結果、該ディスクに障害が発生していなければ、通常の読み出し処理を行う。すなわち、該データ読み出し要求に係るデータと該データの一つのパリティＰをディスク１６０から読み出す。その後、読み出したデータ及び当該データの一つのパリティＰをキャッシュ１３０に格納する（Ｓ１２４）。
【００５３】
このとき読み出す一つのパリティはいずれのパリティでもよいが、データの復元が容易なパリティ（例えば、ＸＯＲ演算によるパリティＰ）を読み出すとよい。
【００５４】
一方、該ディスクに障害が発生していれれば、読み出し可能な全ての冗長データ（パリティ）を読み出す。その前に、データ領域１３１、パリティ領域１３２毎に、ディスクアレイ装置１００内で管理されているテーブルを参照して、どのデータが格納されているディスクに障害が発生したかを判定し、どのデータ又はどのパリティが読み出し可能かを判定する（Ｓ１２５）。
【００５５】
その結果、データが格納されているディスクに障害が発生していれば、障害が発生していないディスクのデータと該データの二つのパリティＰ及びＱをディスク１６０から読み出す。その後、読み出したデータ及び当該データの二つのパリティＰ及びＱをキャッシュ１３０に格納する（Ｓ１２６）。
【００５６】
そして、ＲＡＩＤ管理プログラム１２３が、データとパリティＰを用いてキャッシュ上でデータを復元する。そして、復元したデータをキャッシュ１３０に格納し、上位装置２００に転送する（Ｓ１２７）。その後ステップＳ１３１に進む。なお、ディスク１６０から読み出されたパリティＰ及びＱは、上位装置２００には転送されない。
【００５７】
一方、パリティＰが格納されているディスクに障害が発生していれば、該データ読み出し要求に係るデータと該データの一つのパリティＱをディスク１６０から読み出す。その後、読み出したデータ及び当該データの一つのパリティＱをキャッシュ１３０に格納する（Ｓ１２８）。
【００５８】
以上の処理によると、ディスク１６０に障害が生じていない通常時は、ＲＡＩＤ６によって二つのパリティを生成してディスク１６０に書き込むが、ＲＡＩＤ５のように一つのパリティしか読み出さない（Ｓ１２４）。しかし、ディスク１６０に障害が生じていない通常時は、ＲＡＩＤ６によって二つのパリティを生成してディスク１６０に書き込むが、ＲＡＩＤ５のように一つのパリティしか読み出さない（Ｓ１２６、Ｓ１２８）。このように、書き込みと読み出しを異なるモードで制御することによって、通常時の読み込み性能の低下を抑制することができる。
【００５９】
ステップＳ１２９では、キャッシュ１３０からデータの読み出しが失敗しているか否かを判定する。
【００６０】
その結果、キャッシュ１３０からのデータの読み出しが失敗していなければ、この処理を終了する。
【００６１】
一方、キャッシュ１３０からのデータの読み出しが失敗していれば、データ又は一つのパリティのいずれかの読み出しが失敗しているか否かを判定する（Ｓ１３０）。
【００６２】
一方、データ又は一つのパリティの読み出しが失敗していれば、さらに、データの読み出しに失敗したのか、一つのパリティの読み出しに失敗したのかを判定する（Ｓ１３１）。
【００６３】
その結果、データの読み出しに失敗していれば、キャッシュに格納されているデータとパリティとを用いてキャッシュ上でデータを復元して（Ｓ１３２）、ステップＳ１３４に進む。
【００６４】
一方、一つのパリティの読み出しに失敗していれば、キャッシュに格納されているデータを用いてキャッシュ上でパリティを再計算する。そして、再計算したパリティをキャッシュ１３０に格納して（Ｓ１３３）、ステップＳ１３４に進む。
【００６５】
そして、読み出し要求に係るデータを上位装置２００に転送する（Ｓ１３４）。
【００６６】
次に、第１の実施の形態の変形例について説明する。
【００６７】
この変形例では、キャッシュ１３０の構成が異なる。
【００６８】
前述した実施の形態（図１）では、キャッシュ１３０をアドレスによって分割して、データ領域１３１とパリティ領域１３２とを設けた。しかし、第２変形例では、キャッシュ１３０内にデータ領域１３１とパリティ領域１３２とを設けない。このため、キャッシュ管理テーブル１３３に格納される情報が異なる。
【００６９】
図７は、第１の実施の形態の変形例のキャッシュ管理テーブル１３３の構成図である。
【００７０】
キャッシュ管理テーブル１３３には、キャッシュアドレス、ディスクアドレス、データ状態フラグ、及びデータ／パリティフラグが格納されている。
【００７１】
キャッシュアドレス、ディスクアドレス、及びデータ状態フラグは、前述したキャッシュ管理テーブル（図２）と同じである。
【００７２】
データ／パリティフラグは、キャッシュアドレスで示される場所に格納されている内容が、データかパリティかを示す情報である。例えば、データ／パリティフラグが”０”であれば、データが格納されており、”１”であれば、パリティが格納されていることを示す。
【００７３】
このデータ／パリティフラグがによって、キャッシュに格納されている内容がデータかパリティかを特定することができる。よって、キャッシュ１３０にデータ領域とパリティ領域とを設ける必要がなく、キャッシュ１３０を効率的に使用することができる。
【００７４】
本発明の実施の形態では、ＲＡＩＤ６構成のディスクアレイ装置において、ディスク障害発生時の応答時間を短縮することができる。よって、放送用など、映像や音声のストリーミングデータが読み書きされるディスクアレイ装置においても、ディスク障害による映像化けや音声途切れを防止することができる。
【００７５】
また、ディスク障害の状況に応じてキャッシュに格納するパリティを変えるので、キャッシュメモリの容量の浪費を防止することができる。よって、キャッシュ容量が少なく、信頼性が高く安価なディスクアレイ装置を提供することができる。
【図面の簡単な説明】
【００７６】
【図１】本発明の第１の実施の形態の計算機システムのブロック図である。
【図２】第１の実施の形態のキャッシュ管理テーブル１３３の構成図である。
【図３】第１の実施の形態のデータ読出処理の概念図である。
【図４】第１の発明の実施の形態のデータ書込処理のフローチャートである。
【図５】第１の本発明の実施の形態のデータ書込処理の概念図である。
【図６】第１の実施の形態のキャッシュ上のパリティに障害が発生したときのデータ読み出し処理のフローチャートである。
【図７】第１の実施の形態の変形例のキャッシュ管理テーブル１３３の構成図である。
【符号の説明】
【００７７】
１００  ディスクアレイ装置
１１０  ＣＰＵ
１２０  メモリ
１３０  キャッシュ
１３３  キャッシュ管理テーブル１３３
１４０  上位インターフェース
１５０  ドライブインターフェース
１６０  ディスク
２００  上位装置２００
３００  ＳＡＮ
【図１】
2006065743.tif 000003
【図２】
2006065743.tif 000004
【図３】
2006065743.tif 000005
【図４】
2006065743.tif 000006
【図５】
2006065743.tif 000007
【図６】
2006065743.tif 000008
【図７】
2006065743.tif 000009