(57)【要約】【課題】冗長化論理ディスクに対するライトスルー処理を高速化する。【解決手段】ライトスルーでのデータ書き込みに際し、ミラーリングモードのストライプの空き領域を探し（Ｓ２）、その空き領域にミラーリングモードでデータを書き込む（Ｓ３）。【選択図】　　図５
2004102823.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ディスクにより構成され、パリティまたはミラーリングのいずれかのモードでデータが保持されるストライプを単位に管理される冗長化論理ディスクに対し、ライトスルーでデータを書き込むためのライトスルー処理方法であって、
ホストから要求されたデータのライトスルーでの書き込みに際し、前記ミラーリングモードのストライプの空き領域を探索するステップと、
前記探索されたミラーリングモードのストライプの空き領域に前記ミラーリングモードでデータを書き込むステップと
を具備することを特徴とするライトスルー処理方法。
【請求項２】
前記ミラーリングモードのストライプを探索するステップと、
前記探索されたミラーリングモードのストライプのデータを前記パリティモードのストライプのデータに変更するステップと
を更に具備することを特徴とする請求項１記載のライトスルー処理方法。
【請求項３】
前記ミラーリングモードのストライプを探索するステップと、前記探索されたミラーリングモードのストライプのデータを前記パリティモードのストライプのデータに変更するステップとは、空きストライプが予め定められた数を下回った場合を含む条件のうちの予め定められた条件の成立時に実行されることを特徴とする請求項２記載のライトスルー処理方法。
【請求項４】
前記ミラーリングモードのストライプの空き領域が見つからなかった場合に、空きストライプを探索するステップと、
前記探索された空きストライプを構成する前記複数の物理ディスクの領域のうち、相対的に高速アクセスが可能なミラーリング用の１対の物理ディスクの領域を空き領域として選択するステップと
を更に具備し、
前記ミラーリングモードでデータを書き込むステップでは、前記探索された空きストライプ中の前記選択された物理ディスクの領域に前記ミラーリングモードでデータを書き込む
ことを特徴とする請求項１記載のライトスルー処理方法。
【請求項５】
前記ホストからのリード要求で指定された論理アドレスのデータが前記ミラーリングモードのストライプに存在する場合に、そのデータが書き込まれている当該ストライプ中の１対の物理ディスクの領域のうち、相対的に高速アクセスが可能な物理ディスクの領域をリード対象として選択するステップを更に具備することを特徴とする請求項１記載のライトスルー処理方法。
【請求項６】
前記ホストからのライト要求で指定された論理アドレスのデータが前記ミラーリングモードのストライプに存在する場合に、そのデータを、当該ストライプに前記ミラーリングモードで上書きするステップを更に具備することを特徴とする請求項１記載のライトスルー処理方法。
【請求項７】
前記ホストからのライト要求で指定されたデータのサイズが前記ストライプのデータ領域のサイズであるストライプサイズ以上の場合、当該ストライプサイズのデータを単位に空きストライプを探索して、その空きストライプに当該ストライプサイズのデータをパリティモードで書き込むステップを更に具備し、
前記ミラーリングモードでデータを書き込むステップでは、前記ライト要求で指定されたデータのサイズが前記ストライプサイズに満たない場合には当該データを前記ミラーリングモードで書き込み、前記ライト要求で指定されたデータのサイズが前記ストライプサイズを超えている場合には、当該データのうち、前記ストライプサイズのデータを単位とする前記パリティモードでの書き込みの対象とならない残りのデータを前記ミラーリングモードで書き込む
ことを特徴とする請求項１記載のライトスルー処理方法。
【請求項８】
前記ミラーリングモードでデータを書き込むステップでは、前記冗長化論理ディスクを構成する前記物理ディスクの数が４以上の場合に、少なくとも２組の１対の物理ディスクの領域をミラーリングのデータの領域として、そのうちの１組を選択使用することを特徴とする請求項１記載のライトスルー処理方法。
【請求項９】
前記冗長化論理ディスクを構成する前記複数の物理ディスクのうちの１つが故障している場合の、前記ホストから要求されたデータのライトスルーでの書き込みに際し、アクセス可能な領域にパリティデータが存在しない前記パリティモードのストライプから空きデータ領域を探索するステップと、
前記探索された、アクセス可能な領域にパリティデータが存在しないストライプの空きデータ領域に、データの書き込み先を割り当て、当該ストライプのモードを前記パリティモードに保ったまま、当該空きデータ領域にデータを書き込むステップと
を更に具備することを特徴とする請求項１記載のライトスルー処理方法。
【請求項１０】
複数の物理ディスクにより構成され、パリティまたはミラーリングのいずれかのモードでデータが保持されるストライプを単位に管理される冗長化論理ディスクに対し、ライトスルーでデータを書き込むためのライトスルー処理用プログラムであって、
前記冗長化論理ディスクを制御するディスクコントローラに、
前記ホストから要求されたデータのライトスルーでの書き込みに際し、前記ミラーリングモードのストライプの空き領域を探索するステップと、
前記探索されたミラーリングモードのストライプの空き領域に前記ミラーリングモードでデータを書き込むステップと
を実行させるためのライトスルー処理用プログラム。
【請求項１１】
複数の物理ディスクにより構成され、パリティまたはミラーリングのいずれかのモードでデータが保持されるストライプを単位に管理される冗長化論理ディスクに対するアクセスを制御するディスクコントローラであって、
ホストから要求されたデータのライトスルーでの書き込みに際し、前記ミラーリングモードのストライプの空き領域を探索する手段と、
前記探索手段により探索されたミラーリングモードのストライプの空き領域に前記ミラーリングモードでデータを書き込む手段と
を具備することを特徴とするディスクコントローラ。
【請求項１２】
前記ミラーリングモードのストライプを探索する手段と、前記探索されたミラーリングモードのストライプのデータを前記パリティモードのストライプのデータに変更する回復処理手段と
を更に具備することを特徴とする請求項１１記載のディスクコントローラ。
【請求項１３】
論理アドレスと当該論理アドレスに対応する物理アドレスであって、当該論理アドレスのデータが格納されている、前記冗長化論理ディスクを構成する物理ディスク内の領域の物理アドレスとの対応関係を示すアドレス変換情報を記憶する手段と、
前記冗長化論理ディスクの各ストライプについて、当該ストライプのデータが前記パリティモードまたは前記ミラーリングモードのいずれで保持されているかを示すと共に、前記ミラーリングモードの場合には、有効なデータが保持されている少なくとも１組の１対の物理ディスクを示すストライプモード管理情報を記憶する手段と、
前記冗長化論理ディスクの各ストライプについて、当該ストライプの空きの有無と、当該ストライプ中の対応する物理ディスクの物理ブロック毎の空きの有無とを示す空き領域管理情報を記憶する手段と、
前記書き込み手段によるデータ書き込みに応じて前記アドレス変換情報記憶手段及び前記空き領域管理情報記憶手段の記憶内容を更新する手段と
を更に具備し、
前記空き領域探索手段は、前記ストライプモード管理情報記憶手段及び前記空き領域管理情報記憶手段の記憶内容をもとに前記ミラーリングモードのストライプの空き領域を探索することを特徴とする請求項１１記載のディスクコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の物理ディスクから構成される冗長性を持つ論理ディスク（ディスクアレイ）を制御するディスクコントローラに係り、特にホストから要求されたライトデータをライトスルーで当該論理ディスクに書き込むための冗長化論理ディスクに対するライトスルー処理方法、ライトスルー処理用プログラム及びディスクコントローラに関する。
【０００２】
【従来の技術】
安価で信頼性の高い大容量記憶装置を実現する手段として、複数のディスク（ディスク装置）から構成されるディスクアレイが知られている。このディスクアレイは、当該ディスクアレイを利用するホストからは、１つのディスク（ディスク装置）として見える。そのため、ディスクアレイは論理ディスク（論理ディスク装置）とも呼ばれる。また、ディスクアレイを構成するディスク（ディスク装置）は、物理ディスク（物理ディスク装置）とも呼ばれる。
【０００３】
ディスクアレイは一般に、高信頼性化のために、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ　Ａｒｒａｙ　ｏｆ　Ｉｎｄｅｐｅｎｄｅｎｔ　ＤｉｓｋｓまたはＲｅｄｕｎｄａｎｔ　Ａｒｒａｙ　ｏｆ　Ｉｎｅｘｐｅｎｓｉｖｅ　Ｄｉｓｋｓ）に代表されるように、冗長データとしての例えばパリティデータにより冗長性を持たせたディスク構成、いわゆる冗長化ディスク構成を適用している。ディスクアレイには、ホストからの要求を受けて当該ディスクアレイのアクセスを制御する、例えば特開平１１−５３２３５号公報に記載されたディスクコントローラ（ディスクアレイコントローラ）が接続されている。この公報に記載のディスクコントローラは、ディスクアレイのアクセス（ディスクアクセス）、例えばランダムライトのディスクアクセスを高速化するために次の手法を適用している。即ち、公報記載のディスクコントローラでは、ホストから要求されたライトデータをキャッシュメモリ上に蓄積し、一定量に達した際に、蓄積されていたデータをディスクアレイ上の連続する空き領域に書き込む手法を適用している。ここでは、ホストから要求されたアドレス（論理アドレス）と実際にデータが書かれているディスクアレイ上のアドレス（物理アドレス）との対応をアドレス変換マップで管理している。
【０００４】
【発明が解決しようとする課題】
上記した、ランダムライトのディスクアクセスの高速化手法は、いわゆるライトバック技術に属するものである。ここでは、ホストから要求されたライトデータが、ディスクコントローラ上のキャッシュメモリに書かれた時点で、ホストから要求されたライト動作の完了が当該ホストに通知される。
【０００５】
一方、ランダムライトのディスクアクセスの高速化手法を採用したシステムにおいて、一層の高信頼性化のために、ホストから要求されたライトデータを直接ディスク（ディスクアレイ）に書くライトスルーでの運用が要求されることがある。ここでは、ディスクにデータが書かれた時点で、ホストから要求されたライト動作の完了が当該ホストに通知される。
【０００６】
しかしながら、ライトスルーでの運用の方法は、システムの性質上、定義されていない。また、ライトスルー処理は、ライトバック処理に比べて低速であるため、高速化が要求されている。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、冗長化論理ディスクに対するライトスルー処理が高速化できる冗長化論理ディスクに対するライトスルー処理方法、ライトスルー処理用プログラム及びディスクコントローラを提供することにある。
【０００８】
【課題を解決するための手段】
本発明の１つの観点によれば、複数の物理ディスクにより構成され、パリティまたはミラーリングのいずれかのモードでデータが保持されるストライプを単位に管理される冗長化論理ディスクに対し、ライトスルーでデータを書き込むための方法（ライトスルー処理方法）が提供される。この方法は、ホストから要求されたデータのライトスルーでの書き込みに際し、上記ミラーリングモードのストライプの空き領域を探索するステップと、この探索されたミラーリングモードのストライプの空き領域に上記ミラーリングモードでデータを書き込むステップとから構成される。
【０００９】
このように、上記の構成においては、各ストライプにデータを保持するモードとして、パリティモードとミラーリングモードの２通りを用意し、そのいずれかのモードが動的に設定可能なようにしている。パリティモードのストライプには、データ領域とパリティ領域とが割り当てられる。通常、パリティ領域には、上記論理ディスクを構成する複数の物理ディスクのうちのいずれか１つの物理ディスクの領域が割り当てられる。データ領域には、残りの物理ディスクの領域が割り当てられる。これに対し、ミラーリングモードのストライプには、上記複数の物理ディスクのうちの少なくとも１組の１対の物理ディスクの領域がミラーリングでデータを保持するためのデータ領域（ミラーリング領域）として割り当てられる。
【００１０】
ここで、ライトスルーでのデータ書き込みに際しては、ミラーリングモードのストライプの空き領域が探索されて、その空き領域にミラーリングモードでデータが書き込まれる。もし、パリティモードでライト処理を実行するならば、パリティ生成のためにディスクからのリード処理が必要である。しかしながら、上記のように、ミラーリングモードでデータを書き込むならば、パリティ生成が不要となるため、冗長性を確保しながら、上記リード処理のオーバヘッドをなくすことができる。これによりライトスルー処理の高速化が可能となる。また、どのストライプもミラーリングモードに設定可能なため、ホストからのライト要求が多い場合でもミラーリングモードのストライプを増やすことにより迅速に対応可能である。
【００１１】
ここで、上記の構成に、以下のステップ、即ち、ミラーリングモードのストライプを探索するステップと、この探索されたミラーリングモードのストライプのデータをパリティモードのストライプのデータに変更するステップとを追加するとよい。このようにすると、ストライプの領域を無駄なく利用できるようになる。よって、ライトスルーでの書き込みをミラーリングモードで行う結果、ミラーリングモードのストライプが一時的に増加しても、そのことによる記憶容量への影響を軽減できる。ここで、上記ミラーリングモードのストライプを探索するステップと、この探索されたミラーリングモードのストライプのデータをパリティモードのストライプのデータに変更するステップとを、空きストライプが予め定められた数を下回った場合を含む条件のうちの予め定められた条件の成立時に実行する構成とするとよい。このように、予め定められた条件の成立時に上記両ステップを実行してストライプの領域を無駄なく利用することにより、常に空きストライプを確保すること、つまりミラーリングモードに適用可能なストライプを確保することが可能となる。
【００１２】
また、上記の構成に以下のステップ、即ち、ミラーリングモードのストライプの空き領域が見つからなかった場合に、空きストライプを探索するステップと、上記探索された空きストライプを構成する上記複数の物理ディスクの領域のうち、相対的に高速アクセスが可能なミラーリング用の１対の物理ディスクの領域を空き領域として選択するステップとを追加し、上記ミラーリングモードでデータを書き込むステップでは、上記探索された空きストライプ中の上記選択された物理ディスクの領域にミラーリングモードでデータを書き込むようにするとよい。
【００１３】
このように、ミラーリングモードでのデータ書き込みに加えて、相対的に高速アクセスが可能なミラーリング用の１対の物理ディスクの領域を選択することで、物理ディスクへの負荷分散の最適化が行えるため、ライトスルー処理の一層の高速化が可能となる。相対的に高速アクセスが可能な物理ディスクは、（１）その時点において入出力アクセスの少ない物理ディスク、または（２）相対的に性能の良い物理ディスク、または（３）各物理ディスクの現在のヘッド位置から、空きストライプ中の該当する物理ディスクの領域にヘッドをシークするのに要する時間がより短くて済む物理ディスクである。
【００１４】
また、上記の構成に以下のステップ、即ち、ホストからのリード要求で指定された論理アドレスのデータがミラーリングモードのストライプに存在する場合に、そのデータが書き込まれている当該ストライプ中の１対の物理ディスクの領域のうち、相対的に高速アクセスが可能な物理ディスクの領域をリード対象として選択するステップを追加するとよい。
【００１５】
ここで、ホストからのリード要求で指定された論理アドレスのデータがミラーリングモードのストライプに存在する場合に、そのデータが書き込まれている当該ストライプ中の１対の物理ディスクの領域のいずれからもデータを読み出すことが可能である。このため、上記１対の物理ディスクの領域のうち、相対的に高速アクセスが可能な物理ディスクの領域をリード対象として選択することにより、リード処理の高速化が可能となる。相対的に高速アクセスが可能な物理ディスクは、上記（１）または（２）または（３）の条件を満たす物理ディスクである。
【００１６】
また、上記の構成に以下のステップ、即ち、ホストからのライト要求で指定された論理アドレスのデータがミラーリングモードのストライプに存在する場合に、そのデータを、当該ストライプにミラーリングモードで上書きするステップを追加するとよい。このようにすると、新たなミラーリングストライプを割り当てずに済むことから、ミラーリングモードのストライプのデータをパリティモードのストライプのデータに変更する処理（回復処理）が軽減できる。
【００１７】
また、上記の構成に以下のステップ、即ち、ホストからのライト要求で指定されたデータのサイズがストライプサイズ（ストライプのデータ領域のサイズ）以上の場合に、当該ストライプサイズのデータを単位に空きストライプを探索して、その空きストライプに当該ストライプサイズのデータをパリティモードで書き込むステップを追加し、上記ミラーリングモードでデータを書き込むステップでは、上記ライト要求で指定されたデータのサイズがストライプサイズに満たない場合には当該データをミラーリングモードで書き込み、上記ライト要求で指定されたデータのサイズがストライプサイズを超えている場合には、当該データのうち、ストライプサイズのデータを単位とするパリティモードでの書き込みの対象とならない残りのデータをミラーリングモードで書き込むようにするとよい。
【００１８】
このように、ライト要求で指定されたデータのサイズに応じて、パリティモードストライプへのライト処理とミラーリングモードストライプへのライト処理を動的に切り替えて、或いは併用してライトスルー処理を行うことにより、常にミラーリングモードでのみのライト処理を行う場合に比べて、ライト処理を一層効率的に実行することが可能となる。
【００１９】
なお、ライト要求で指定されたデータのサイズに無関係に、パリティモードでのライト処理とミラーリングモードでのライト処理を動的に切り替えることも可能である。例えば、通常はミラーリングモードでのライト処理を実行し、空きストライプが不足して上記変更処理（ミラーリングモードのストライプのデータをパリティモードのストライプのデータに変更する処理）が必要となった結果、ミラーリングモードでのライト処理の方が時間を要する場合、つまりパリティモードでのライト処理の方が高速に行える場合には、当該パリティモードでのライト処理を実行することも可能である。このようにすると、ミラーリングモードのストライプを多く作り過ぎずに済む。
【００２０】
また、冗長化論理ディスクを構成する物理ディスクの数が４以上の場合には、上記ミラーリングモードでデータを書き込むステップにおいて、少なくとも２組の１対の物理ディスクの領域をミラーリングのデータの領域として、そのうちの１組を選択使用する構成とするとよい。このようにすると、ミラーリングモードのストライプの領域を無駄なく有効に利用できる。
【００２１】
冗長化論理ディスクを構成する複数の物理ディスクのうちの１つが故障している場合、つまり論理ディスクの縮退時には、当該論理ディスクは冗長性を持たない。このため、パリティモードのストライプであっても、当該ストライプ中のパリティデータの領域（パリティ領域）が故障物理ディスクの領域の場合には、パリティデータは意味をなさない。そこで、上記の構成に以下のステップ、即ち、論理ディスクの縮退時におけるライトスルーでの書き込みに際し、アクセス可能な領域にパリティデータが存在しないパリティモードのストライプから空きデータ領域を探索するステップと、ここで探索された空きデータ領域（つまりアクセス可能な領域にパリティデータが存在しないストライプの空きデータ領域）に、データの書き込み先を割り当て、当該ストライプのモードをパリティモードに保ったまま、当該空きデータ領域にデータを書き込むステップとを追加すると、パリティモードのストライプへの書き込みであっても、もともとパリティ計算の必要がないことから、ライトスルー処理が高速に行える。また、ミラーリングモードでの書き込みを適用しないため、パリティモードのストライプのデータへの変更処理（回復処理）も不要となる。
【００２２】
なお、以上のライトスルー処理方法に係る本発明は、コンピュータに当該方法に相当する手順を実行させるためのプログラムに係る発明としても成立する。また、上記ライトスルー処理方法に係る本発明は、当該方法を適用し、冗長化論理ディスクを制御するコントローラ（ディスクコントローラ）に係る発明としても成立する。
【００２３】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図１は、本発明の一実施形態に係るディスクコントローラを備えたコンピュータシステムの構成を示すブロック図である。
【００２４】
図１において、ディスクアレイ装置１は、ディスクコントローラ（ディスクアレイコントローラ）１１と、当該コントローラ１１により制御されるディスクアレイ（冗長化論理ディスク）１２とから構成される。ディスクアレイ１２は、複数、例えば３つの物理ディスク（物理ディスク装置）１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）から構成されており、記録するデータはストライプ単位に管理される。各ストライプは、ディスクアレイ１２を構成する物理ディスク１２０−０〜１２０−２にそれぞれ対応する、同時にアクセス可能なストライプユニットから構成される。１つのストライプを構成する３つのストライプユニットの、対応するディスク１２０−０〜１２０−２上の相対位置は同一である。この３つのストライプユニットは、対応するディスク１２０−０〜１２０−２上の物理アドレスが連続する複数の物理ブロック（本実施形態では４ブロック）から構成される。
【００２５】
各ディスク１２０−０〜１２０−２は、ＳＣＳＩ（Ｓｍａｌｌ　Ｃｏｍｐｕｔｅｒ　Ｓｙｓｔｅｍ　Ｉｎｔｅｒｆａｃｅ）バス等のディスクインタフェースバス１３によりディスクコントローラ１１と接続されている。ディスクコントローラ１１は、ディスクアレイ装置１（内のディスクアレイ１２）を利用するホスト（ホストコンピュータ）２とホストインタフェースバス２１により接続されている。
【００２６】
ディスクコントローラ１１は、キャッシュメモリ１１１と、アドレス変換テーブル１１２と、ストライプモード管理テーブル１１３と、空き領域管理テーブル１１４と、アクセス制御部１１５とから構成される。
【００２７】
キャッシュメモリ１１１は高速で揮発性の記憶装置である。キャッシュメモリ１１１は、ホスト２から転送されてディスクアレイ１２に書き込まれるデータ、及びディスクアレイ１２から読み出されてホスト２に転送されるデータを一時格納するのに用いられる。
【００２８】
アドレス変換テーブル１１２は、図２に示すように、各論理アドレスについて、当該論理アドレス（論理ブロックアドレス）と、当該論理アドレスに割り当てられるディスクアレイ１２の物理アドレス空間の物理アドレス（物理ブロックアドレス）との対応を示す情報（アドレス変換情報）が登録されるエントリから構成される。ここで、物理アドレスは、物理ディスクの番号（ＨＤＤ番号）と、当該物理ディスク内の物理ブロックのアドレス（ＨＤＤ内アドレス）とにより示される。アドレス変換テーブル１１２の各エントリの情報は、対応する論理アドレスのブロックのデータがパリティモードＰまたはミラーリングモードＭのいずれで書かれているかを示すモード情報（モードフラグ）を含む。図２のデータ構造のアドレス変換テーブル１１２を参照することにより、目的の論理アドレスがどの物理アドレスに対応するかを調べると共に、当該論理アドレスのデータがパリティモードＰまたはミラーリングモードＭのいずれで書かれているかを識別できる。ミラーリングモードＭでは、２つのディスク内の同一アドレスに同一データが書き込まれる。しかし、アドレス変換テーブル１１２では、２つのディスクのうちの一方のＨＤＤ番号だけが登録される。ここでは、ＨＤＤ０，ＨＤＤ１またＨＤＤ２が登録されている場合、ミラーリングモードＭでデータが書かれているもう１つのＨＤＤは、それぞれＨＤＤ１，ＨＤＤ２またはＨＤＤ０であると予め定められている。
【００２９】
図２の例では、論理アドレス０及び１のデータが、ＨＤＤ０の物理アドレス０及び１にパリティモードＭで書かれていることが示されている。同様に、論理アドレス３及び４のデータが、ＨＤＤ１（とＨＤＤ２）の物理アドレス４及び５にミラーリングモードＭで書かれていることが示されている。なお、図２中のＨＤＤ番号のフィールドに「−」が設定されているエントリは、対応する論理アドレスに物理アドレスが割り当てられていないことを示す。
【００３０】
ストライプモード管理テーブル１１３は、図３に示すように、各ストライプについて、そのストライプを成す物理ディスク上のデータがパリティモードＰまたはミラーリングモードＭで書かれているかを示す情報（ストライプモード管理情報）が登録されるエントリから構成される。前記したように、１つのストライプを構成するストライプユニット（ここでは３つのストライプユニット）は、それぞれ４ブロックから構成されている。この場合、１ストライプのデータ領域（データ部分）のサイズは、ミラーリングモードＭまたはパリティモードＰのいずれの場合にも、２ストライプユニット分、即ち８ブロックである。パリティモードＰのストライプのパリティ領域（パリティ１単位を保持する領域）のサイズは、１ストライプユニット分、即ち４ブロックである。
【００３１】
ストライプモード管理テーブル１１３の各エントリの情報は、対応するストライプを指定する情報と、当該ストライプのモードを示すモード情報（モードフラグ）とを含む。ここで、ストライプを指定する情報には、当該ストライプを構成するストライプユニットの先頭ブロックの物理アドレス（ストライプ先頭アドレス）が用いられる。ストライプモード管理テーブル１１３の各エントリ情報は更に、対応するストライプがミラーリングモードＭの場合には、ディスク１２０−０（ＨＤＤ０）〜１２−２（ＨＤＤ２）のうち、有効なデータが格納されている物理ディスク、即ちミラーリングデータの格納に用いられている１対の物理ディスク（ミラーＨＤＤ）の番号（ＨＤＤ番号）を含む。図３の例では、ストライプ先頭アドレス４で示されるストライプを構成するストライプユニットのうち、ＨＤＤ１及びＨＤＤ２上のストライプユニットが、ミラーリングデータの格納に用いられていることを示す。
【００３２】
空き領域管理テーブル１１４は、各ストライプについて、当該ストライプの空きの有無と、（当該ストライプが空きでない場合に）当該ストライプ中の対応するディスク１２０−０〜１２０−２の物理ブロック毎の空きの有無とを示す空き領域管理情報が登録されるエントリから構成される。この空き領域管理テーブル１１４を参照することで、空きストライプ、またはストライプ中の空き領域（ブロック）を探索することができる。なお、効率を考えないならば、アドレス変換テーブル１１２を参照して当該テーブル１１２に登録されていない物理アドレスを検索することでも、空きストライプ、またはストライプ中の空き領域が探索可能である。
【００３３】
テーブル１１２〜１１４は図示せぬメモリ上に置かれる。このメモリには、ディスクコントローラ１１の電源がオフされてもテーブル１１２〜１１４の内容が消失しないように、書き換え可能な不揮発性メモリを用いるとよい。また、バッテリバックアップされた揮発性メモリを用いることも可能である。また、テーブル１１２〜１１４が、メモリ以外の記憶手段、例えばディスクに格納される構成とすることも可能である。
【００３４】
アクセス制御部１１５は、ホスト２からリードまたはライトの要求を受けて、ディスクアレイ１２へのアクセスの制御及びキャッシュメモリ１１１の割り当てを含む制御を行う。アクセス制御部１１５は、例えば、制御プログラムが格納されたＲＯＭ等の不揮発性メモリと、当該制御プログラムを実行するＣＰＵ（いずれも図示せず）とにより実現可能である。この制御プログラムは、ホスト２からのライト要求に応じて、ディスクアレイ１２にデータをライトスルーで書き込むためのプログラムを含む。
【００３５】
アクセス制御部１１５は、ホスト２からライトの要求を受けた場合、実際にデータを書き込む物理ディスク上の位置を決定する。そして、アクセス制御部１１５は、ホストから要求されてキャッシュメモリ１１１上に割り当てられた領域に書き込まれたデータを、上記決定した物理ディスク上の位置に書き込む。このときアクセス制御部１１５は、上記決定した物理ディスク上の位置に応じて、アドレス変換テーブル１１２内の上記参照エントリの情報を更新すると共に、空き領域管理テーブル１１４内の対応するエントリの情報も更新する。
【００３６】
図４に、図２の内容のアドレス変換テーブル１１２及び図３の内容のストライプモード管理テーブル１１３で示される、ディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）の状態を示す。ここでは、ストライプ先頭アドレス４で示されるストライプを構成するストライプユニットのうち、ＨＤＤ１並びにＨＤＤ２のストライプユニット中の物理アドレス４及び５に、それぞれミラーリングデータ４０１ａ及び４０１ｂが格納されている。
【００３７】
次に、図１中のディスクアレイ装置１におけるライト処理について、ライトスルーでディスクアレイ装置１内のディスクアレイ１２にデータを書き込む場合を例に、図５のフローチャートを参照して説明する。
【００３８】
まず、ホスト２からディスクアレイ装置１内のディスクコントローラ１１に対し、論理アドレス“０”から３ブロック分のサイズのライトが要求されたものとする。この場合、ディスクコントローラ１１内のアクセス制御部１１５は、ライトすべきデータのサイズ（ここでは、ホストからのライト要求で指定されたサイズ）がストライプサイズ（ストライプのデータ領域のサイズ）以上であるか否かを判定する（ステップＳ１）。ここで、ストライプサイズは８ブロックであり、ライトすべきデータのサイズは３ブロックである。
【００３９】
この例のように、ライトすべきデータのサイズがストライプサイズ（８ブロック）未満の場合、つまりステップＳ１での判定がＮｏの場合、アクセス制御部１１５はミラーリングモードでライトを行うことを確定する。そこでアクセス制御部１１５は、ミラーリングモードＭのストライプ（ミラーリングストライプ）に空き領域があるか否かを判定する（ステップＳ２）。但し、このステップＳ２は、実際にはステップＳ１でＮｏが判定された直後ではなく、後述するステップＳ５１及びＳ５２（図１２参照）が実行されて、当該ステップ（判定ステップ）Ｓ５２でＮｏが判定された場合に実行される。
【００４０】
ステップＳ２の判定は、例えば、ストライプモード管理テーブル１１３を参照して、ミラーリングストライプを検索し、そのストライプについて空き領域管理テーブル１１４を参照することにより実現される。なお、効率は悪いものの、ミラーリングストライプのデータ領域を構成する１対のストライプユニットの物理ブロックについて、その物理ブロックのアドレスがアドレス変換テーブル１１２に登録されているか否かを調べることでも、ステップＳ２の判定は可能である。
【００４１】
本実施形態では、図４中の物理アドレス“４”から始まるストライプがミラーリングストライプであり、且つミラーディスク１２０−１（ＨＤＤ１）及び１２０−２（ＨＤＤ２）の物理アドレス６及び７のブロックが空き領域（空きブロック）となっている。
【００４２】
アクセス制御部１１５は、見つけた空き領域にミラーリングでデータを書ける量だけ書き込む（ステップＳ３）。ここでは、ディスク１２０−１（ＨＤＤ１）及び１２０−２（ＨＤＤ２）の物理アドレス“６”及び“７”のブロックが空き領域として検出されたことから、指定された論理アドレス“０”〜“２”のデータのうち、論理アドレス“０”及び“１”のデータが、ディスク１２０−１（ＨＤＤ１）の物理アドレス“６”及び“７”の空き領域とディスク１２０−２（ＨＤＤ２）の物理アドレス“６”及び“７”の空き領域とに、それぞれミラーリングで書き込まれる。この様子を、図６に示す。ここでは、論理アドレス“０”及び“１”のデータ６００及び６０１が、ディスク１２０−１（ＨＤＤ１）及び１２０−２（ＨＤＤ２）の、いずれも物理アドレス“６”及び“７”の空き領域にミラーリングで書き込まれる（ステップＳ１１）。
【００４３】
アクセス制御部１１５は、ステップＳ３の書き込みを終了すると、その書込みを終えた分に関して、アドレス変換テーブル１１２を更新する（ステップＳ４）。このときアクセス制御部１１５は、物理アドレス“４”から始まるストライプ中の、ディスク１２０−１（ＨＤＤ１）及び１２０−２（ＨＤＤ２）の物理アドレス“６”及び“７”の領域に関して、空き領域管理テーブル１１４も更新する。
【００４４】
上記論理アドレス“０”及び“１”のデータの書き込み及び後述する論理アドレス“２”のデータの書き込みに伴って、それぞれステップＳ４の更新処理が実行された後のアドレス変換テーブル１１２の内容を図７に示す。ここでは、論理アドレス“０”及び“１”のデータが、ディスク１２０−１（とディスク１２０−２）、つまりＨＤＤ１（とＨＤＤ２）の物理アドレス“６”及び“７”にミラーリングモードＭで書かれていることが示されている。このとき、ディスク１２０−０（ＨＤＤ０）の物理アドレス“０”及び“１”の領域に既に書き込まれていた、論理アドレス“０”及び“１”のデータ（図２のアドレス変換テーブル１１２参照）は無効データとなる。
【００４５】
アクセス制御部１１５は、ステップＳ４を実行すると、未書き込みデータが残っているか否かを調べる（ステップＳ５）。この例のように、未書き込みデータ（論理アドレス“２”のデータ）が残っている場合、アクセス制御部１１５はステップＳ１に戻る。また、この例のように、未書き込みデータがストライプサイズ（ストライプのデータ領域のサイズ）に満たない場合（ステップＳ１）、アクセス制御部１１５は、再びステップＳ２を実行して、ミラーリングモードのストライプに空き領域があるか否かを調べる。ここでは、ミラーリングモードのストライプに空きがないものとする。この場合、アクセス制御部１１５は、空き領域管理テーブル１１４を参照して空きストライプを探す（ステップＳ６）。ここでは、図６中の物理アドレス“１２”から始まるストライプが見つかったものとする。
【００４６】
アクセス制御部１１５は、ステップＳ６で空きストライプが見つけられた場合、その空きストライプを構成するディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）の領域のうち、任意の１対（２台）のディスク（ＨＤＤ）の領域を有効なミラーリングデータの書き込み用、つまりミラーリング用の空き領域として選択する（ステップＳ７）。ここでは、ディスク１２０−０（ＨＤＤ０）及び１２０−１（ＨＤＤ１）の領域がミラーリング用に選択されたものとする。
【００４７】
次にアクセス制御部１１５は、ステップＳ６で見つけた空きストライプをミラーリングモードＭに切り替えると共に、ステップＳ７でのＨＤＤ選択結果をもとに、ストライプモード管理テーブル１１３を更新する（ステップＳ８）。この更新後のストライプモード管理テーブル１１３の内容を図８に示す。ここでは、物理アドレス“１２”から始まるストライプがミラーリングモードＭとなり、当該ストライプを構成するストライプユニットのうち、ＨＤＤ０及びＨＤＤ１のストライプユニットが、ミラーリングデータの格納に用いられることが示されている。
【００４８】
次にアクセス制御部１１５は、ステップＳ７で選択された、空きストライプ中の２つのＨＤＤの領域（空き領域）に、ミラーリングでデータを書ける量だけ書き込む（ステップＳ３）。
【００４９】
これにより本実施形態では、図６に示すように、物理アドレス“１２”から始まるストライプがミラーリングモードＭに変更された状態で（ステップＳ１２）、当該ストライプ中の、例えばディスク１２０−０（ＨＤＤ０）及び１２２−１（ＨＤＤ１）の物理アドレス“１２”の領域に、論理アドレス“２”のデータ６０２がミラーリングで書き込まれる（ステップＳ１３）。
【００５０】
次にアクセス制御部１１５は、書込みを終えた分に関してアドレス変換テーブル１１２（及び空き領域管理テーブル１１４）を更新する（ステップＳ４）。このステップＳ４での更新後の、論理アドレス“２”に対応するアドレス変換テーブル１１２内エントリでは、図７から明らかなように、論理アドレス“２”のデータが、ディスク１２０−０（とディスク１２０−１）、つまりＨＤＤ０（とＨＤＤ１）の物理アドレス“１２にミラーリングモードＭで書かれていることが示されている。
【００５１】
以上により、ホスト２から指定された論理アドレス“０”から３ブロック分のデータの書き込みがすべて終了し、未書き込みデータがなくなったため（ステップＳ５）、アクセス制御部１１５はホスト２から指定されたデータをライトスルーでディスクアレイ１２に書き込む処理を終了し、ライト完了をホスト２に通知する。
【００５２】
次に、上記ステップＳ７で、ミラーリングストライプ中の有効データを書き込むディスクの領域を選択する方法について、図９の動作説明図を参照して説明する。
【００５３】
上記したように、ステップＳ６で空きストライプを検出すると、アクセス制御部１１５は、当該空きストライプをミラーリングモードに切り替えるに際し、有効データを書き込む２台の物理ディスクを、ディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）のうちから選択する（ステップＳ７）。このステップＳ７では、その時点でより早く書き込みが行える２台の物理ディスクの領域を選択するとよい。このようにすると、ライト処理をより高速に処理できる。ここでは、図９に示すように、ディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）のうち、たまたまディスク１２０−１（ＨＤＤ１）への入出力アクセスが多いものとする。言い換えれば、ディスク１２０−０（ＨＤＤ０）及び１２０−２（ＨＤＤ２）へのアクセスが少ないものとする。この場合、アクセス制御部１１５は、ＨＤＤ０とＨＤＤ２への書き込みがＨＤＤ１への書き込みよりも早く処理できるものと判断し、図９に示すように、空きストライプ中のＨＤＤ０及びＨＤＤ２の領域をミラーリング用に選択す（割り当て）る（ステップＳ２０）。なお、アクセスの少ない物理ディスクを２台選択する代わりに、相対的に性能の良い物理ディスクを２台選択しても、ライト処理の一層の高速化が可能となる。この他に、各ＨＤＤの現在のヘッド位置から、空きストライプ中の該当するＨＤＤの領域にヘッドをシークするのに要する時間が短い方の２台を選択するようにしてもよい。
【００５４】
次に、ミラーリングモードＭが設定されている領域からのデータ読み出しについて、図１０の動作説明図を参照して説明する。
ホスト２からリード要求のあった論理アドレスに対応する物理アドレスの領域がミラーリングモードＭのストライプ（ミラーリングストライプ）上に存在する場合、つまり当該論理アドレスのデータがミラーリングストライプに存在する場合、明らかなように、有効データを持つ２台の物理ディスクのどちらからもデータを読み出すことが可能である。その際、その時点でより早く読み出しが行える方の物理ディスクの領域を選ぶと、より高速に処理できる。
【００５５】
今、ディスク１２０−０（ＨＤＤ０）及び１２０−１（ＨＤＤ１）に有効データのあるミラーリングストライプを対象とするリード要求があったものとする。このとき、図１０に示すように、たまたまディスク１２０−１（ＨＤＤ１）への入出力アクセスが多いものとする。この場合、アクセス制御部１１５は、ＨＤＤ０からの読み出しの方がＨＤＤ１からの読み出しよりも早く処理できるものと判断し、図１０に示すように、ミラーリングストライプ中のＨＤＤ０の領域からデータの読み出しを行う（ステップＳ３０）。なお、アクセスの少ない物理ディスクから読み出す代わりに、上述のミラーリングでのライト処理の場合のディスク選択と同様に、相対的に性能の良い物理ディスク、またはシークが短時間で済む物理ディスクを選択するようにしても、リード処理を一層高速化できる。
【００５６】
次に、図５中のステップＳ１でストライプサイズ（ストライプのデータ領域サイズ）以上のライトであると判定された場合の動作について説明する。
まず、ストライプサイズのライトに関しては、ライトデータから直接パリティ（パリティデータ）を作成することが可能である。この場合、パリティモードＰでデータを書き込んでも、パリティ生成のためのリードによるオーバーヘッドがない。そこで本実施形態では、以下に述べるように、ストライプサイズのデータのライトをパリティモードＰで実行することにより、後述するミラーリングモードＭのストライプの回復処理を削減するようにしている。
【００５７】
まずアクセス制御部１１５は、データのライトに際しては、ライトすべきデータのサイズがストライプサイズ（ストライプのデータ領域のサイズ）以上であるか否かを判定する（図５ステップＳ１）。もし、ライトすべきデータのサイズがストライプサイズ（本実施形態では８ブロック）以上ならば、アクセス制御部１１５はパリティモードＰでライトを行うことが可能であると判断する。この場合、アクセス制御部１１５はライトすべきデータから１ストライプ分のデータ（８ブロック分のデータ）を切り出すと共に、空き領域管理テーブル１１４をもとに空きストライプを探して、その空きストライプにパリティモードＰで１ストライプ分のデータ及び対応するパリティ（パリティデータ）を書き込む（図５ステップＳ９）。ここで、パリティは、ストライプサイズのデータから直接生成される。アクセス制御部１１５は、パリティモードＰでのデータ書き込みを実行すると（ステップＳ９）、書込みを終えた分に関してアドレス変換テーブル１１２（及び空き領域管理テーブル１１４）を更新して（ステップＳ４）、ステップＳ５の判定処理に進む。
【００５８】
図１１は、このストライプサイズのデータのライトを説明するための図である。図１１の例では、物理アドレス“１２”から始まる（ＨＤＤ０〜ＨＤＤ２に対応するストライプユニットから構成される）ストライプが空きストライプであるものとする。また、ストライプサイズのデータＤ、つまり８ブロック分のデータＤが、ライトすべきデータであるものとする。この場合、アクセス制御部１１５は、８ブロック分のデータＤを４ブロック分のデータＤａ及びＤｂに２等分する。次に、データＤａ及びＤｂの間の例えば排他的論理和演算を行うことで、４ブロック分のパリティＰを生成する（ステップＳ４０）。そして、物理アドレス１２から始まる空きストライプを構成するストライプユニットのうち、例えばＨＤＤ０及びＨＤＤ１のストライプユニットにデータＤａ及びＤｂを書き込み、ＨＤＤ２のストライプユニットにパリティＰを書き込む。
【００５９】
次に、ミラーリングモードＭの領域への上書きについて、図１２のフローチャートを参照して説明する。なお、図１２のフローチャートは、図５のフローチャートでは省略されていた処理手順を示し、図５中のステップＳ１の判定でＮｏとなった直後に実行される処理手順（ステップＳ５１及びＳ５２）を含む。
【００６０】
本実施形態では、ホスト２からのライト要求で指定された論理アドレスに対応する物理アドレスの領域がミラーリングモードＭのストライプ中に存在する場合には、以下に述べるように、図１２のフローチャートに示す手順で、その物理アドレスにデータをミラーリングモードＭで上書きをしている。このようにすると、アドレス変換テーブル１１２の更新と、新たな空きミラーリング領域の割り当てを行わずに済む。
【００６１】
アクセス制御部１１５は、ステップＳ１で、ライトすべきデータのサイズがストライプサイズ（ストライプのデータ領域のサイズ）未満であると判定した場合、そのデータに対応する論理アドレスでアドレス変換テーブル１１２を参照する（ステップＳ５１）。そして、アクセス制御部１１５は、その論理アドレスに対応する物理アドレスの領域がミラーリングモードＭのストライプ（ミラーリングストライプ）上に存在するか否かを判定する（ステップＳ５２）。この判定がＮｏの場合、アクセス制御部１１５は図５中のステップＳ２に進む。これに対し、ステップＳ５２の判定がＹｅｓの場合、即ちライトすべきデータの論理アドレスに対応する物理アドレスの領域がミラーリングストライプ中に存在する場合には、アクセス制御部１１５はストライプモード管理テーブル１１３を参照して、当該ストライプ中の有効なデータ領域を提供する２つの物理ディスク（ＨＤＤ）を検出する（ステップＳ５３，Ｓ５４）。そしてアクセス制御部１１５は、上記ストライプ中の、上記検出した２つの物理ディスクの領域に、同一のライトデータを上書きし（ステップＳ５５）、しかる後に図５中のステップＳ５に進む。
【００６２】
このデータの上書きの具体例について、図６を参照して説明する。今、論理アドレス“０”及び“１”のデータ６００及び６０１を、物理アドレス“４”から始まるストライプ中の、ＨＤＤ１とＨＤＤ２の領域（物理アドレス“６”及び“７”の領域）にミラーリングモードＭで書き込む処理（ステップＳ１１）が実行されたものとする。この状態で、論理アドレス“０”に対して１ブロックのデータ６０３のライト要求があったものとする。このとき、アドレス変換テーブル１１２及びストライプモード管理テーブル１１３の内容は、それぞれ図７及び図８のようになっているものとする。
【００６３】
アクセス制御部１１５は、論理アドレス“０”でアドレス変換テーブル１１２を参照することにより（ステップＳ５１）、当該論理アドレス“０”のデータが、ミラーリングモードＭで物理アドレス６の領域に書き込まれていることを認識する（ステップＳ５２）。この場合、アクセス制御部１１５は、論理アドレス“０”のデータの上書きを決定する。そこでアクセス制御部１１５は、ストライプモード管理テーブル１１３を参照して、物理アドレス“４”から始まるストライプ（ミラーリングストライプ）上のＨＤＤ０〜ＨＤＤ２の領域のうち、いずれのＨＤＤの領域が有効であるかを調べる（ステップＳ５３，Ｓ５４）。ここでは、図８から明らかなように、ＨＤＤ１及びＨＤＤ２の領域が有効である。そこで、アクセス制御部１１５は、データ６０３を、図６に示すように、物理アドレス“４”から始まるミラーリングストライプ中のＨＤＤ１及びＨＤＤ２の領域の物理アドレス“６”の領域に上書きする（ステップＳ１４）。
【００６４】
次に、ミラーリングモードＭのストライプのデータをパリティモードＰのストライプのデータに回復（変更）する処理について、図１３のフローチャート並びに図６及び図１４の動作説明図を参照して説明する。
【００６５】
本実施形態において、ミラーリングモードＭのストライプ（ミラーリングストライプ）のデータをパリティモードＰのストライプのデータに回復する処理は、予め定められた条件の成立時に実行される。ここでは、上記回復処理は、ディスクアレイ装置１がホスト２からアクセスされないアイドル状態時、或いは空きストライプが予め定められた数を下回った場合（つまり空きストライプの不足時）を含む条件のうちの、予め定められた条件の成立時に実行される。
【００６６】
まずアクセス制御部１１５は、ストライプモード管理テーブル１１３をもとに、回復処理の対象となるミラーリングモードＭのストライプを選択する（ステップＳ６１）。ここで、有効データの総量がパリティモードでの１ストライプに収まる範囲であれば、複数のミラーリングモードＭのストライプを選んでもよい。ここでは、図６中の物理アドレス“４”から始まるストライプと、物理アドレス“１２”から始まるストライプとが選ばれたものとする。
【００６７】
次にアクセス制御部１１５は、空き領域管理テーブル１１４をもとに空きストライプを探す（ステップＳ６２）。ここでは、図６中の物理アドレス“０”から始まるストライプが空きストライプとして検出されている。ここで、物理アドレス“０”から始まるストライプを構成するＨＤＤ０のストライプユニットのうち、物理アドレス０及び１のブロックに格納されていたデータは、アドレス変換テーブル１１２の対応するエントリの内容が図２の状態から図７の状態に更新されて既に無効となっているものとする。
【００６８】
次にアクセス制御部１１５は、ステップＳ６１で選択したミラーリングモードＭのストライプのデータを、順次、ステップＳ６２で見つけた空きストライプのデータ領域にコピーする（ステップＳ６３）。図１４の例では、ＨＤＤ０の物理アドレス“１２”のデータが、当該ＨＤＤ０の物理アドレス０の領域にコピーされる（ステップＳ７１）。このステップＳ７１では、ＨＤＤ１の物理アドレス４〜７のデータが、当該ＨＤＤ１の物理アドレス０〜３の領域にコピーされる。
【００６９】
アクセス制御部１１５は上記ステップＳ６３において、有効データがコピーされたストライプのパリティを生成し、そのパリティを当該ストライプのパリティ領域に書き込む。図１４の例では、ＨＤＤ０及びＨＤＤ１の、それぞれ物理アドレス“０”〜“３”のデータ（ストライプユニットのデータ）が読み出されて、そのデータ間で排他的論理和演算を行うことで、そのデータのパリティが生成される（ステップＳ７２）。この生成されたパリティが、ＨＤＤ２の物理アドレス“０”〜“３”の領域に書き込まれる。
【００７０】
アクセス制御部１１５は、ステップＳ６３を実行し終えると、アドレス変換テーブル１１２（及び空き領域管理テーブル１１４）を更新する（ステップＳ６４）。図１５に、図１４の例における更新後のアドレス変換テーブル１１２の内容を示す。
【００７１】
またアクセス制御部１１５は、ストライプモード管理テーブル１１３を更新し、ステップＳ６１で選択したストライプのミラーリングモードＭを解除して、パリティモードＰに切り替える（ステップＳ６５）。これにより図１４の例では、物理アドレス“４”から始まるストライプ、及び物理アドレス“１２”から始まるストライプのミラーリングモードＭがそれぞれ解除される（ステップＳ７３）。図１６に、図１４の例における更新後のストライプモード管理テーブル１１３の内容を示す。
【００７２】
なお、上述のミラーリングモードＭのストライプのデータをパリティモードＰのストライプのデータに回復する処理を、独立の処理とせずに、有効データ再配置処理と一体化して実行することも可能である。有効データ再配置処理とは、ディスクアレイ装置１内のディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）上で細切れになって配置されている有効データを集めてストライプ上に再配置する処理である。
【００７３】
次に、１ストライプ上への複数組のミラーリングデータの配置について説明する。
ディスクアレイ（論理ディスク）が２ｎ台または２ｎ＋１台（ｎは２以上の整数）の物理ディスクから構成されている場合、１対（２台）の物理ディスクの組を単位にミラーリングを行うと、１ストライプ中に、最大ｎ組のミラーリング領域を確保することが可能となる。今、図１中のディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）から構成されるディスクアレイ１２に、図１７に示すように、ディスク１２０−３（ＨＤＤ３）を追加して、４台の物理ディスクでディスクアレイ１２を構成したものとする。この場合、図１７に示すように、１ストライプ中の、例えばＨＤＤ０及びＨＤＤ１の領域をミラーリングデータ用に割り当て、当該ストライプ中のＨＤＤ２及びＨＤＤ３の領域を別のミラーリングデータ用に割り当てる。これにより、ミラーリングモードＭのストライプでより多くの冗長データを保持できる。
【００７４】
次に、ディスクアレイ１２が縮退している状態におけるライト処理について、図１８の動作説明図及び図１９のフローチャートを参照して説明する。なお、縮退状態とは、ディスクアレイ（論理ディスク）を構成する複数の物理ディスクのうちの例えば１台が故障によりアクセス不能となり、残りの物理ディスクで運用を継続している状態をいう。
【００７５】
今、図１中のディスクアレイ１２を構成するディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）のうちの例えばディスク１２０−２（ＨＤＤ２）が図１８に示すように故障したものとする。この場合、ディスクアレイ１２は縮退状態で運用されるため、冗長性を持たない。このような状態では、図１９のフローチャートの示す手順でライト処理を実行することにより、ライト処理の高速化が可能となる。
【００７６】
アクセス制御部１１５は、故障していない物理ディスクの領域（つまりアクセス可能領域）がすべてデータ領域（つまりパリティの存在しない領域）のパリティモードＰのストライプであって、当該データ領域に空き領域（つまり空きデータ領域）を含むストライプを探す（ステップＳ８１）。ここでは、空きデータ領域を含むストライプとして、図１８に示すように、正常なディスク１２０−０（ＨＤＤ０）及び１２０−１（ＨＤＤ１）の領域がデータ領域１８０及び１８１で、故障ディスク１２０−１（ＨＤＤ２）の領域がパリティ領域１８２のストライプが検出されたものとする。この場合、アクセス制御部１１５は、今回ライトすべき論理アドレスに、ステップＳ８１で検出したストライプ中の空きデータ領域の物理アドレスを割り当てる（ステップＳ８２）。
【００７７】
次にアクセス制御部１１５は、ステップＳ８１で検出したストライプのモードはパリティモードＰのまま、ステップＳ８２で割り当てた物理アドレスの領域にデータを書き込む（ステップＳ８３）。ここでは、図１８に示すように、ＨＤＤ０内のデータ領域１８０の先頭ブロックにデータが書き込まれる（ステップＳ８０）。このデータ書き込みでは、ステップＳ８１で検出されたパリティモードＰのストライプのパリティ領域を提供するＨＤＤ２は故障しているため、つまり当該パリティ領域は使用できないため、パリティ計算の必要はない。また、このデータ書き込みが行われたストライプはパリティモードＰに保たれているため、前述の空きストライプへのミラーリングデータ書き込みの場合と異なって、パリティモードＰへの回復処理も必要ない。
【００７８】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００７９】
【発明の効果】
以上詳述したように本発明によれば、ライトスルーでのデータ書き込みに際し、ミラーリングモードのストライプの空き領域を探し、その空き領域にミラーリングモードでデータを書き込む構成としたので、パリティ生成が不要となり、冗長性を確保しながら、パリティ生成のためのリード処理のオーバヘッドをなくして、ライトスルー処理を高速化できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るディスクコントローラを備えたコンピュータシステムの構成を示すブロック図。
【図２】図１中のアドレス変換テーブル１１２のデータ構造例を示す図。
【図３】図１中のストライプモード管理テーブル１１３のデータ構造例を示す図。
【図４】図２の内容のアドレス変換テーブル１１２及び図３の内容のストライプモード管理テーブル１１３で示される。ディスク１２０−０（ＨＤＤ０）〜１２０−２（ＨＤＤ２）の状態を示す図。
【図５】同実施形態におけるライト処理の手順を示すフローチャート。
【図６】同実施形態におけるライト処理、及びミラーリングモードＭの領域への上書きを説明するための図。
【図７】図６に示すライト処理実行後のアドレス変換テーブル１１２の内容を示す図。
【図８】図６に示すライト処理実行後のストライプモード管理テーブル１１３の内容を示す図。
【図９】ミラーリングストライプ中の有効データを書き込むディスクの領域を選択する方法を説明するための図。
【図１０】ミラーリングストライプ中の有効データの読み出しの対象とするディスクの領域を選択する方法を説明するための図。
【図１１】ストライプサイズのデータのライト処理を説明するための図、
【図１２】ミラーリングモードＭの領域への上書きの手順を示すフローチャート。
【図１３】ミラーリングモードＭのストライプのデータをパリティモードＰのストライプのデータに回復する処理の手順を示すフローチャート。
【図１４】上記回復処理を説明するための図。
【図１５】図１４の例における更新後のアドレス変換テーブル１１２の内容を示す図。
【図１６】図１４の例における更新後のストライプモード管理テーブル１１３の内容を示す図。
【図１７】１ストライプ上への複数組のミラーリングデータの配置を説明するための図。
【図１８】ディスクアレイ１２が縮退している状態におけるライト処理を説明するための図。
【図１９】ディスクアレイ１２が縮退している状態におけるライト処理の手順を示すフローチャート。
【符号の説明】
１…ディスクアレイ装置
２…ホスト（ホストコンピュータ）
１１…ディスクコントローラ
１２…ディスクアレイ（冗長化論理ディスク）
１１１…キャッシュメモリ
１１２…アドレス変換テーブル（アドレス変換情報記憶手段）
１１３…ストライプモード管理テーブル（ストライプモード管理情報記憶手段）
１１４…空き領域管理テーブル（空き領域管理情報記憶手段）
１１５…アクセス制御部
１２０−０，１２０−１，１２０−２，１２０−３…物理ディスク（ＨＤＤ０，ＨＤＤ１，ＨＤＤ２，ＨＤＤ３）
【図１】
2004102823.tif 000003
【図２】
2004102823.tif 000004
【図３】
2004102823.tif 000005
【図４】
2004102823.tif 000006
【図５】
2004102823.tif 000007
【図６】
2004102823.tif 000008
【図７】
2004102823.tif 000009
【図８】
2004102823.tif 000010
【図９】
2004102823.tif 000011
【図１０】
2004102823.tif 000012
【図１１】
2004102823.tif 000013
【図１２】
2004102823.tif 000014
【図１３】
2004102823.tif 000015
【図１４】
2004102823.tif 000016
【図１５】
2004102823.tif 000017
【図１６】
2004102823.tif 000018
【図１７】
2004102823.tif 000019
【図１８】
2004102823.tif 000020
【図１９】
2004102823.tif 000021