(57)【要約】【課題】メモリコントローラが使用不能となった場合にも、ファストライト動作を継続することができるディスクアレイサブシステム等を提供する。【解決手段】本発明のディスクアレイサブシステムは、ディスク装置を共有し、同一のキャッシュデータを格納する第１のクラスタと第２のクラスタとを含み、第１のクラスタは、キャッシュデータの少なくとも一部を格納する第１のキャッシュメモリと、キャッシュデータの格納アドレスを決定する第１のメモリコントローラとを含み、第２のクラスタは、キャッシュデータの少なくとも一部を格納する第２のキャッシュメモリと、キャッシュデータの格納アドレスを決定する第２のメモリコントローラとを含み、第１及び第２のメモリコントローラは、互いに無関係に、キャッシュデータを格納するアドレスを決定する。【選択図】      図１
2010092318.tif 000002
【特許請求の範囲】
【請求項１】
ディスク装置を共有し、同一のキャッシュデータを格納する第１のクラスタと第２のクラスタとを含み、
前記第１のクラスタは、
前記キャッシュデータの少なくとも一部を格納する第１のキャッシュメモリと、前記キャッシュデータの格納アドレスを決定する第１のメモリコントローラとを含み、
前記第２のクラスタは、
前記キャッシュデータの少なくとも一部を格納する第２のキャッシュメモリと、前記キャッシュデータの格納アドレスを決定する第２のメモリコントローラとを含み、
前記第１及び第２のメモリコントローラは、互いに無関係に、キャッシュデータを格納するアドレスを決定する
ディスクアレイサブシステム。
【請求項２】
前記アドレスはキャッシュページ番号である請求項１に記載のディスクアレイサブシステム。
【請求項３】
前記第１のクラスタは、
前記第１のキャッシュメモリが格納するキャッシュデータとは異なるキャッシュデータを格納する第３のキャッシュメモリを備えた第３のメモリコントローラ
を含み、
前記第２のメモリコントローラは、
前記第３のメモリコントローラが使用不能であることを検出する監視部
を含み、
前記第２のメモリコントローラは、
前記監視部が前記第３のメモリコントローラが使用不能であることを検出した場合、キャッシュデータを第２のキャッシュメモリから第１のキャッシュメモリに複製する復旧部
を含む請求項１又は２に記載のディスクアレイサブシステム。
【請求項４】
前記第２のキャッシュメモリに前記ディスク装置への書込みが完了していないダーティーデータが存在し、前記第１のキャッシュメモリに前記ダーティーデータと同一アドレスのダーティーデータが存在しなかった場合、前記復旧部は、前記ダーティーデータを前記第２のキャッシュメモリから第１のキャッシュメモリに複製する
請求項３に記載のディスクアレイサブシステム。
【請求項５】
前記同一アドレスは論理ディスク番号及び論理ブロック番号である
請求項４に記載のディスクアレイサブシステム。
【請求項６】
前記監視部は、第２の監視部であり、
前記第１のメモリコントローラは、前記第１のクラスタに第４のキャッシュメモリが接続されたことを検出する第１の監視部を含み、
前記第１の監視部が前記第１のクラスタに第４のキャッシュメモリが接続されたことを検出した場合、前記復旧部は、キャッシュデータを前記第２のキャッシュメモリから前記第４のキャッシュメモリに複製する
請求項３乃至５のいずれかに記載のディスクアレイサブシステム。
【請求項７】
前記第２のキャッシュメモリに前記ディスク装置への書込みが完了していないダーティーデータが存在し、前記第１のキャッシュメモリに前記ダーティーデータと同一アドレスのダーティーデータが存在しなかった場合、前記復旧部は、前記ダーティーデータを前記第２のキャッシュメモリから前記第４のキャッシュメモリに複製する
請求項６に記載のディスクアレイサブシステム。
【請求項８】
前記第４のキャッシュメモリは前記第３のキャッシュメモリである
請求項７に記載のディスクアレイサブシステム。
【請求項９】
ディスク装置を共有し、同一のキャッシュデータを格納する第１のクラスタと第２のクラスタの内、前記第１のクラスタの第１のキャッシュメモリが前記キャッシュデータの少なくとも一部を格納し、
前記第１のクラスタの第１のメモリコントローラが前記キャッシュデータの格納アドレスを決定し、
前記第２のクラスタの第２のキャッシュメモリが前記キャッシュデータの少なくとも一部を格納し、
前記第２のクラスタの第２のメモリコントローラが前記キャッシュデータの格納アドレスを決定し、
前記第１及び第２のメモリコントローラは、互いに無関係に、キャッシュデータを格納するアドレスを決定する
ディスクアレイサブシステムのキャッシュ制御方法。
【請求項１０】
コンピュータを、
ディスク装置を共有し、同一のキャッシュデータを格納する第１のクラスタと第２のクラスタの内、前記第１のクラスタの第１のキャッシュメモリに前記キャッシュデータの少なくとも一部を格納させ、
前記第１のクラスタの第１のメモリコントローラに、前記第２のクラスタの第２のメモリコントローラが前記キャッシュデータの第２のキャッシュメモリにおける格納アドレスを決定するのとは無関係に、前記キャッシュデータの前記第１のキャッシュメモリにおける格納アドレスを決定させる手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイサブシステム、ディスクアレイサブシステムのキャッシュ制御方法、及びプログラムに関し、特に保守性向上、或いは可用性向上を目的としたディスクアレイサブシステム、ディスクアレイサブシステムのキャッシュ制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ディスクアレイサブシステムにおいては、複数の磁気ディスク装置を統合管理する冗長化ディスク（ＲＡＩＤ、Redundant Arrays of Inexpensive Disks）制御技術を採用し、複数の磁気ディスク装置を並列に動作させることによって、高速にデータの読み出しや書き込みを行うことができるようになっている。しかし、ＲＡＩＤ技術を採用した場合でも、磁気ディスク装置がひとつのＩ／Ｏ（Input/Output）を処理するには、ミリ秒オーダの時間を要するため、一般的なディスクアレイサブシステムでは、磁気ディスク装置から読み出したデータ、或いは、磁気ディスク装置へ書き込むべきデータを一時的に保持する、キャッシュメモリを装備し、より高速なＩ／Ｏ処理を実現している。
【０００３】
キャッシュメモリを装備することによって、頻繁に読み出されるデータは、毎回磁気ディスク装置から読み出す必要がなくなり、また、キャッシュメモリに書き込んだ時点で、ホストへ書き込み完了のレスポンスを返すことができるようになる。さらに、ホストから発行されるリード要求が、磁気ディスク装置の連続的なアドレスであった場合には、ホストからの要求アドレスよりも先のデータをまとめてキャッシュに読み込んでおくことで、以降のリード要求に対する磁気ディスク装置へのアクセス回数を最少化したり、或いは、書き込むべきデータを、磁気ディスク装置にとって都合の良いサイズにまとめたりすることができる。これにより、特にパリティＲＡＩＤにおけるライトペナルティを、軽減することができるなど、キャッシュメモリを装備しないディスクアレイサブシステムに比べて、数十倍の高速化を図ることが可能となる。
【０００４】
ここで、ライトペナルティとは、パリティデータを生成するために必要となる磁気ディスク装置からの読み出し処理のことである。ホストから要求される前に、事前にデータをキャッシュメモリへ読み出しておく動作を、一般的にはプリフェッチリードや先読みと呼んでおり、磁気ディスク装置へデータを書き込む前に、ホストへ書き込み完了のレスポンスを返す動作を、一般的にはファストライトや遅延書き込みなどと呼んでいる。
【０００５】
一方、磁気ディスク装置への書き込みが完了する前に、ホストに対して、書き込み完了のレスポンスを返すために、キャッシュメモリに保持した未書き込みデータが失われないことを保証することが重要となってくる。例えば、２つのキャッシュメモリを冗長構成にすることによって、片方のキャッシュメモリが故障した場合でも、もう一方のキャッシュメモリに保持したデータを使用して、データを失うことなく、書き込み処理を継続できるようにする。しかし、キャッシュメモリが冗長構成でなくなった時点で、新たに受信した書き込み要求は、磁気ディスク装置に書き込まれるまでホストに書き込み完了のレスポンスを返すことができなくなるので、キャッシュメモリを搭載したことによる性能改善は見込めなくなる。従って、基幹系のシステムで使われるような、ハイエンドに位置するディスクアレイサブシステムでは、４つのキャッシュメモリを冗長構成とすることによって、ひとつのキャッシュメモリが故障しても、冗長性を維持し、書き込み性能が低下するのを防いでいる。
【０００６】
ここで、ディスクアレイサブシステムのキャッシュメモリについて、図１１を用いて詳細に説明する。図１１は、ディスクアレイサブシステムのメモリ構成を示したブロック図である。図１１に示したディスクアレイサブシステムの例では、各ハードウェア部品は、単一の障害であれば処理を継続できるように、クラスタ構成を採用している。図１１では、クラスタ９０ａは２つのメモリコントローラ２０ａ、２０ｃを含み、クラスタ９０ｂは２つのメモリコントローラ２０ｂ、２０ｄを含む。
【０００７】
メモリコントローラ２０ａは、データを格納するキャッシュメモリ８０ａを搭載しており、同様にメモリコントローラ２０ｃは、キャッシュメモリ８０ｃを搭載している。メモリコントローラ２０ａは、キャッシュメモリに格納されているデータを管理するためのテーブルである、ディレクトリ７０ａも有しており、このディレクトリ７０ａが、キャッシュメモリ８０ａとキャッシュメモリ８０ｃとを合わせたメモリ空間を管理する。クラスタ９０ｂもクラスタ９０ａとハードウェア的にまったく同じ構成で、かつ、ディレクトリ７０ａとディレクトリ７０ｂもまったく同じテーブルとなっているので、データの格納は、クラスタ９０ａとクラスタ９０ｂの同一アドレスのキャッシュメモリに対して実行されることになる。
【０００８】
図１２を用いて、ディレクトリについてさらに詳細に説明する。ディレクトリとは、キャッシュメモリをある固定長のサイズに分割したメモリブロック（以降、キャッシュページ、あるいは単にページと呼ぶ）に、どのようなデータが保持されているかを示したテーブルである。図１２は、正常状態におけるメモリ構成を示した機能ブロック図である。図１２のディレクトリ７０ａは、キャッシュメモリ８０ａのサイズを１ＧＢ、キャッシュメモリ８０ｃのサイズを１ＧＢ、ページサイズを３２ＫＢとしたときの一例である。合計ページ数は２ＧＢを３２ＫＢで割った６５５３６ページとなり、ページ０が保持しているデータは、論理ディスク２の論理ブロック０ｘ４０に、ページ１が保持しているデータは、論理ディスク１の論理ブロック０ｘ８０に書き込むべきデータであることを示している。
【０００９】
また、ページ６５５３５が保持しているデータは、論理ディスク２の論理ブロック０ｘ８０から読み出したデータであることを示しており、ページ２には有効なデータが格納されていないことを示している。この例では、２つのキャッシュメモリ８０ａ，８０ｃを図示しているが、クラスタ９０ａ内にひとつのキャッシュメモリしか存在しないときは、そのキャッシュメモリだけをディレクトリ７０ａで管理する。
【００１０】
キャッシュメモリは冗長構成となっており、データはキャッシュメモリ８０ａとキャッシュメモリ８０ｂの同一ページに二重書きされ、キャッシュメモリ８０ｃとキャッシュメモリ８０ｄの同一ページに二重書きされているので、ディレクトリ７０ｂはディレクトリ７０ａとまったく同じ情報を保持することになる。
【００１１】
このようなキャッシュメモリを冗長化した記憶装置システムの一例が特許文献１に開示されている。特許文献１の記憶システムは、同一のディスク装置を共有する２つのクラスタのキャッシュメモリに相手のクラスタのキャッシュメモリのライトデータを相互に冗長化する。その他、本発明に関連する文献として、特許文献２、３、及び４がある。
【００１２】
キャッシュメモリを搭載したディスクアレイサブシステムにおいて、２つのキャッシュメモリが故障すると冗長性を維持することができなくなるために、以後のホストからの書き込み要求に対して、ファストライト動作を実行できなくなることがある。この場合、冗長性のないキャッシュメモリにおいてファストライトを継続し、そのキャッシュメモリが故障したとすると、データを失うことになるため、キャッシュメモリにデータを格納した後、直ちにホストへ書き込み完了のレスポンスを返すのではなく、磁気ディスク装置への書き込みが完了してから、ホストへ書き込み完了のレスポンスを返すのが一般的である。このときの動作を、ライトスルー動作と呼ぶ。
【００１３】
ファストライト動作を実行できなくなる理由を図１３と図１４を用いて詳しく説明する。図１３は、メモリコントローラが１台故障した状態におけるメモリ構成を示した機能ブロック図である。図１４は、メモリコントローラが２台故障した状態におけるメモリ構成を示した機能ブロック図である。
【００１４】
図１３に示すように、メモリコントローラ２０ｃが故障したとすると、メモリコントローラ２０ａとメモリコントローラ２０ｂのペアは、冗長構成となっているのでファストライトを継続できるが、メモリコントローラ２０ｃとメモリコントローラ２０ｄのペアは、非冗長構成となるために、ファストライトを行うことができなくなる。メモリコントローラ２０ｃが故障したとしても、ディレクトリ７０ａとディレクトリ７０ｂは同一の内容を維持するが、実際にはページ３２７６８〜６５５３５はキャッシュメモリ８０ｄにしか存在しなくなるので、当該ページへのアクセス要求があった場合は、メモリコントローラ２０ｄにだけアクセスが実行されることになる。さらに、図１４に示すように、メモリコントローラ２０ｂが故障したとすると、メモリコントローラ２０ｄにディレクトリ７０ｄが再構築されるが、メモリコントローラ２０ａとメモリコントローラ２０ｂのペアも非冗長構成となるので、ファストライトをまったく行うことができなくなる。このとき、ディレクトリ７０ａとディレクトリ７０ｄは同一の内容を維持するが、実際には、ページ０〜３２７６７はキャッシュメモリ８０ａにしか存在しなくなるので、当該ページへのアクセス要求があった場合には、メモリコントローラ２０ａにだけアクセスが実行されることになる。
【００１５】
【特許文献１】特開２００５−０４３９３０号公報
【特許文献２】特開２００１−３４４１５４号公報
【特許文献３】特開平１０−１９８６０２号公報
【特許文献４】特開平０６−０３５８０２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
このように、上述した技術では、メモリコントローラが故障等で使用不能となった場合に、ファストライト動作を継続することができないことがあるという問題があった。その理由は、第１のクラスタ（クラスタ９０ａ）において生存しているメモリコントローラは、第２のクラスタ（クラスタ９０ｂ）におけるメモリコントローラのディレクトリと同一内容を維持する必要があるため、データを復旧して、キャッシュメモリの任意の格納アドレスに新たにデータを書き込み、冗長性を回復することが困難であるためである。
【００１７】
本発明の目的は、メモリコントローラが使用不能となった場合に、ファストライト動作を継続することができないという課題を解決するディスクアレイサブシステム、ディスクアレイサブシステムのキャッシュ制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１８】
本発明のディスクアレイサブシステムは、ディスク装置を共有し、同一のキャッシュデータを格納する第１のクラスタと第２のクラスタとを含み、第１のクラスタは、キャッシュデータの少なくとも一部を格納する第１のキャッシュメモリと、キャッシュデータの格納アドレスを決定する第１のメモリコントローラとを含み、第２のクラスタは、キャッシュデータの少なくとも一部を格納する第２のキャッシュメモリと、キャッシュデータの格納アドレスを決定する第２のメモリコントローラとを含み、第１及び第２のメモリコントローラは、互いに無関係に、キャッシュデータを格納するアドレスを決定する。
【００１９】
本発明のディスクアレイサブシステムのキャッシュ制御方法は、ディスク装置を共有し、同一のキャッシュデータを格納する第１のクラスタと第２のクラスタの内、第１のクラスタの第１のキャッシュメモリがキャッシュデータの少なくとも一部を格納し、第１のクラスタの第１のメモリコントローラがキャッシュデータの格納アドレスを決定し、第２のクラスタの第２のキャッシュメモリがキャッシュデータの少なくとも一部を格納し、第２のクラスタの第２のメモリコントローラがキャッシュデータの格納アドレスを決定し、第１及び第２のメモリコントローラは、互いに無関係に、キャッシュデータを格納するアドレスを決定する。
【００２０】
本発明のプログラムは、コンピュータを、ディスク装置を共有し、同一のキャッシュデータを格納する第１のクラスタと第２のクラスタの内、第１のクラスタの第１のキャッシュメモリにキャッシュデータの少なくとも一部を格納させ、第１のクラスタの第１のメモリコントローラに、第２のクラスタの第２のメモリコントローラがキャッシュデータの第２のキャッシュメモリにおける格納アドレスを決定するのとは無関係に、キャッシュデータの第１のキャッシュメモリにおける格納アドレスを決定させる手段として機能させる。
【発明の効果】
【００２１】
本発明は、メモリコントローラが使用不能となった場合においてもファストライト動作を継続することができるという効果を有する。
【発明を実施するための最良の形態】
【００２２】
次に本発明の概要について説明する。図１は、ディスクアレイサブシステム６００の概要を示す図である。ディスクアレイサブシステム６００は、ディスク装置を共有し、同一のキャッシュデータを格納するクラスタ９０ａ、９０ｂを含む。
【００２３】
クラスタ９０ａは、キャッシュデータの格納アドレスを決定するメモリコントローラ２０ａを含む。メモリコントローラ２０ａは、キャッシュデータの少なくとも一部を格納するキャッシュメモリ８０ａを含む。
【００２４】
クラスタ９０ｂは、キャッシュデータの格納アドレスを決定するメモリコントローラ２０ｂを含む。メモリコントローラ２０ｂは、キャッシュデータの少なくとも一部を格納するキャッシュメモリ８０ｂを含む。
【００２５】
コントローラ２０ａ及びコントローラ２０ｂは、それぞれ独立して互いに無関係に、キャッシュデータを格納するアドレスを決定する。
【００２６】
より具体的には、図２に示すように、データ自体はキャッシュメモリ８０ａ、８０ｃとキャッシュメモリ８０ｂ、８０ｄの両方に格納されるが、ディレクトリ７０ａとディレクトリ７０ｂとをそれぞれ関係することなく個別に管理することにより、それぞれのデータを異なるアドレスのページに格納できる。例えば、キャッシュメモリ８０ａとキャッシュメモリ８０ｂとの間で、データを二重書きしても良いし、キャッシュメモリ８０ａとキャッシュメモリ８０ｄとの間で、データを二重書きしても良い。同様に、キャッシュメモリ８０ｃとキャッシュメモリ８０ｂの間で、データを二重書きしても良いし、キャッシュメモリ８０ｃとキャッシュメモリ８０ｄとの間で、データを二重書きしても良い。
【００２７】
これにより、本発明は、メモリコントローラが使用不能となった場合においてもファストライト動作を継続することができるという効果を有する。
【００２８】
その理由は、メモリコントローラ２０ａ，２０ｂが、それぞれ独立して互いに無関係に、データを格納するアドレスを決定するためである。即ち、クラスタ９０ａにおいてメモリコントローラが使用不能となった場合においても、クラスタ９０ａにおいて生存しているメモリコントローラ２０ａは、クラスタ９０ｂのメモリコントローラ２０ｂのディレクトリと同一内容を維持する必要がなく、キャッシュメモリ８０ａの任意の格納アドレスに復旧したデータを書き込み、冗長性を回復することが可能であるためである。
【００２９】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００３０】
図３は、ディスクアレイサブシステム６００の全体構成を示すブロック図である。ディスクアレイサブシステム６００は、ホストコントローラ１０ａ，１０ｂ、メモリコントローラ２０ａ〜２０ｄ、ディスクコントローラ３０ａ，３０ｂ、内部スイッチ４０ａ，４０ｂ、ディスクエンクロージャ５００という主要コンポーネントを含む。また、クラスタ構成となっており、クラスタ９０ａは、クラスタ９０ｂと同一機能を提供し、クラスタ９０ｂと同一のキャッシュデータを格納する。ディスクエンクロージャ５００を除くコンポーネントは、クラスタ９０ａ又はクラスタ９０ｂに含まれる。この例では、メモリコントローラ２０ａ，２０ｃとメモリコントローラ２０ｂ，２０ｄとの間で、データを二重書きしている。
【００３１】
図４は、本実施の形態において、正常状態の一動作例を示した図である。
【００３２】
ファームウェアにより制御されるメモリコントローラ２０ａ〜２０ｄには、それぞれ１ＧＢのキャッシュメモリ８０ａ〜８０ｄが搭載されており、ページサイズは３２ＫＢとする。メモリコントローラ２０ａには、キャッシュメモリ８０ａ，８０ｃを管理するディレクトリ７０ａが構築されており、初期状態では、いずれのページにも有効なデータが格納されていないことを示す値が書き込まれている。同様に、メモリコントローラ２０ｂには、キャッシュメモリ８０ｂ，８０ｄを管理するディレクトリ７ｂが構築されており、初期状態では、いずれのページにも有効なデータが格納されていないことを示す値が書き込まれている。
【００３３】
メモリコントローラ２０ａは、他のメモリコントローラが使用不能であることを検出する監視部０１ａを含む。また、メモリコントローラ２０ａは、例えば、キャッシュデータをキャッシュメモリ８０ａ及び８０ｃの少なくとも一方からキャッシュメモリ８０ｂに複製する復旧部０２ａを含む。
【００３４】
同様に、メモリコントローラ２０ｂ，２０ｃ、２０ｄは、それぞれ、他のメモリコントローラが使用不能であることを、検出する監視部０１ｂ，０１ｃ，０１ｄを含み、キャッシュデータを複製し、別のメモリコントローラのキャッシュメモリに格納する復旧部０２ｂ，０２ｃ，０２ｄを含む。
【００３５】
次に、各コンポーネントの動作を、ホストライトコマンド処理を例に説明する。
【００３６】
ホストライトコマンドを図３に示したホストコントローラ１０ａが受信すると、まずメモリコントローラ２０ａ、２０ｃの中から、当該ライトデータを格納するためのキャッシュページを獲得する。より具体的には、メモリコントローラ２０ａは、メモリコントローラ２０ａが保持するディレクトリ７０ａを検索し、当該ライト要求と同一アドレスのキャッシュページがすでに存在すれば、そのページがデータを格納すべきページであると判断し、当該ライト要求と同一アドレスのキャッシュページが存在しなければ、新たにページを獲得することになる。このとき、割り当てるページをどのように決定するかは、ディスクアレイサブシステム６００の制御方法により異なり、様々なアルゴリズムが存在するが、一般的には、ＬＲＵ（Least Recently Used）アルゴリズムが用いられる。次に、ホストコントローラ１０ａは、メモリコントローラ２０ｂ，２０ｄの中からも、同様にライトデータを格納するためのキャッシュページを獲得し、それぞれのページに対して、ホストからのライトデータを転送する。
【００３７】
図３及び図４に示す例では、ホストコントローラ１０ａが、論理ディスク２番、論理ブロック番号０ｘ８０番へのライトコマンドを受信し、そのデータを格納するページが、キャッシュメモリ８０ｃのページ６５５３５とキャッシュメモリ８０ｂのページ１に互いに無関係に、それぞれ独立して決定されたときの様子を示している。ディスクコントローラ３０ａ、３ｂは、ディレクトリ７０ａ、もしくはディレクトリ７０ｂを検索し、ページ属性がdirtyのページがあれば、当該ページのデータを、ディスクエンクロージャ５００の中の磁気ディスク装置に書き落とし、ページ属性を適切な属性に変更する。一般的には、磁気ディスク装置と当該キャッシュページのデータとが一致していることを示すために、clean属性に変更するが、当該キャッシュページ内に有効なデータが格納されていないことを示す属性に変更しても良い。また、ページ属性がdirtyのページを無作為に抽出して書き落とすのではなく、一般的には、ディスクエンクロージャ５００に構築されているＲＡＩＤタイプによって最適な書き込みとなるように、スケジューリングする。
【００３８】
次に、ホストコントローラ１０ａがライトデータをキャッシュページに書き込んだ後、ディスクコントローラ３０ａ，３０ｂが当該ライトデータをディスクエンクロージャ５００に書き込む前に、メモリコントローラ２０ｃが故障したときの動作について、図５及び図８を参照して説明する。
【００３９】
図５は、本実施の形態において、メモリコントローラが１台故障した状態の一動作例を示した図である。図８は、本実施の形態において、メモリコントローラが１台故障した状態の動作例を示すシーケンス図である。監視部０１ａ及び監視部０１ｂが、メモリコントローラ２０ｃの故障を検知すると（Ａ１）、監視部０１ａは、キャッシュメモリ８０ｃに格納されていたデータを無効化するために、ディレクトリ７０ａを初期化、再構築する（Ａ２）。クラスタ９０ａのキャッシュメモリの全容量は１ＧＢとなるので、ページ番号は０〜３２７６７となる。また、キャッシュメモリ８０ｃに格納されていたdirty属性のデータを復旧するために、復旧部０２ｂは、ディレクトリ７０ｂを検索する（Ａ３）。dirty属性のページを見つけたときは（Ａ４，Ｙ）、監視部０１ｂは、そのページに対応する論理ディスク番号と論理ブロック番号の情報をメモリコントローラ２０ａに送信し（Ａ５）、メモリコントローラ２０ａが、受信する（Ａ６）。
【００４０】
メモリコントローラ２０ａの復旧部０２ａは、ディレクトリ７０ａを検索する（Ａ７）。受信した情報が示す論理ディスク番号と論理ブロック番号のdirty属性のページが存在しなかったときは（Ａ８，Ｎ）、新たにページを獲得（Ａ９）し、そのページ番号の情報をメモリコントローラ２０ｂに送信する（Ａ１０）。復旧部０２ｂは、ページ番号の情報を受信し（Ａ１１）、キャッシュメモリ８０ａの当該ページ番号領域に対してdirtyデータをコピーする（Ａ１２）。図５の例では、キャッシュメモリ８０ａのページ０に対して、キャッシュメモリ８０ｂのページ１からdirtyデータが転送された後の様子を示している。
【００４１】
次に、メモリコントローラ２０ｃが故障した際の復旧動作が完了し、dirtyデータが再び二重化された後に、メモリコントローラ２０ｂが故障したときの動作について、図６及び図９を参照して説明する。
【００４２】
図６は、本実施の形態において、メモリコントローラが２台故障した状態の一動作例を示した図である。図９は、本実施の形態において、メモリコントローラが２台故障した状態の動作例を示すシーケンス図である。監視部０１ａ及び監視部０１ｄが、メモリコントローラ２０ｂの故障を検知すると（Ｂ１）、監視部０１ｄは、ディレクトリ７０ｂを再構築する（Ｂ２）。クラスタ９０ｂのキャッシュメモリの全容量は１ＧＢとなるので、ページ番号は３２７６８〜６５５３５となる。また、キャッシュメモリ８０ｂに格納されていたdirty属性のデータを復旧するために、復旧部０２ａは、ディレクトリ７０ａを検索し（Ｂ３）。dirty属性のページを見つけたときは（Ｂ４，Ｙ）、監視部０１ａは、そのページに対応する論理ディスク番号と論理ブロック番号の情報をメモリコントローラ２０ｂに送信し（Ｂ５）、メモリコントローラ２０ｂが、受信する（Ｂ６）。
【００４３】
メモリコントローラ２０ｂの復旧部０２ｄは、ディレクトリ７０ｂを検索する（Ｂ７）。受信した情報が示す論理ディスク番号と論理ブロック番号のdirty属性のページが存在しなかったときは（Ｂ８，Ｎ）、新たにページを獲得（Ｂ９）し、そのページ番号の情報をメモリコントローラ２０ａに送信する（Ｂ１０）。復旧部０２ａは、ページ番号の情報を受信し（Ｂ１１）、キャッシュメモリ８０ｄの当該ページ番号領域に対してdirtyデータをコピーする（Ｂ１２）。図９の例では、キャッシュメモリ８０ｄのページ３２７６８に対して、キャッシュメモリ８０ａのページ０からdirtyデータを転送した後の様子を示している。
【００４４】
以上説明してきたように、第１の実施の形態は、クラスタ９０ａ，９０ｂそれぞれに少なくともひとつのメモリコントローラが生存すれば、複数のメモリコントローラが故障したとしても、ファストライトを継続することができるので、高速なＩ／Ｏ処理性能を維持することができるという効果を有する。その理由は、クラスタ９０ａ，９０ｂ毎にディレクトリを個別に管理することによって、冗長データの格納アドレスを任意に選択することができるためである。
【００４５】
次に、本発明の第２の実施の形態を図７と図１１を比較参照して詳細に説明する。
【００４６】
前述の図１１においては、メモリコントローラ２０ａと２０ｂがペアとなり、メモリコントローラ２０ｃと２０ｄとがペアとなっているため、例えば、メモリコントローラ２０ａのキャッシュメモリだけを増設したとしても、メモリコントローラ２０ｂに搭載しているキャッシュメモリがそれより少なければ、少ない容量に合わせることになり、増設したキャッシュメモリを有効に利用することができなかった。これにより例えば、メモリコントローラ２０ｃが故障したときに、キャッシュメモリ８０ｃは正常であったとしても、そのキャッシュメモリ８０ｃを正常なメモリコントローラ２０ａに搭載して、再利用することができなかった。
【００４７】
図７は、本実施の形態において、メモリコントローラ２０ｃが故障した後に、キャッシュメモリ８０ｃをメモリコントローラ２０ａに載せ換えた後のメモリ構成を示した機能ブロック図である。図１０は、本実施の形態において、メモリコントローラが１台故障した状態の動作例を示すシーケンス図である。
【００４８】
監視部０１ａ，０１ｂがメモリコントローラ２０ｃの故障を検出した場合に（Ｃ１）、保守員等がメモリコントローラ２０ｃは故障したが、キャッシュメモリ８０ｃは正常であると判断し、かつ、メモリコントローラ２０ｂが第１の実施の形態として示した図８の復旧処理をまだ行っていない場合には、当該キャッシュメモリ８０ｃを取り外し、メモリコントローラ２０ａの空きスロットに搭載する。メモリコントローラ２０ａの監視部０１ａは、キャッシュメモリ８０ｃが増設されたことを検出し（Ｃ２）、ディレクトリ７０ａを再構築する（Ｃ３）。キャッシュメモリの容量は２ＧＢとなるので、ページ番号は０〜６５５３５となる。このとき、ページ番号０〜３２７６７がキャッシュメモリ８０ａに割り当てられ、ページ番号３２７６８〜６５５３５がキャッシュメモリ８０ｃに割り当てられることになる。また、キャッシュメモリ８０ｃに格納されていたdirty属性のデータを復旧するために、復旧部０２ｂは、ディレクトリ７０ｂを検索し（Ｃ４）、dirty属性のページを探索する。dirty属性のページが見つかったときは（Ｃ５，Ｙ）、メモリコントローラ２０ａに対し、dirty属性のページの論理ディスク番号と論理ブロック番号を送信する（Ｃ６）。
【００４９】
復旧部０２ａはdirty属性のページの論理ディスク番号と論理ブロック番号を受信し（Ｃ７）、ディレクトリ７０ａを検索する（Ｃ８）。ディレクトリ７０ａにおいて同一アドレスのdirty属性のページが存在しなかったときは（Ｃ９，Ｎ）、新たにページを獲得し（Ｃ１０）、メモリコントローラ２０ｂに対し、そのページ番号を送信する（Ｃ１１）。復旧部０２ｂは、ページ番号を受信し（Ｃ１２）、そのページに対してdirtyデータをコピーする。図７の例では、キャッシュメモリ８０ａのページ０に対して、キャッシュメモリ８０ｂのページ１からdirtyデータを転送した後の状態を示している。
【００５０】
以上説明したように、第２の実施の形態は、可用性を向上させることができるという効果を有する。その理由は、故障したメモリコントローラ２０ｃに搭載されているキャッシュメモリ８０ｃが正常であるときは、同一クラスタ９０ａ内の正常なメモリコントローラ２０ａに載せ換えることにより、故障したメモリコントローラ２０ｃを交換するまでの間も、キャッシュ容量の減少を防ぐことが可能となるためである。
【図面の簡単な説明】
【００５１】
【図１】ディスクアレイサブシステム６００の概要を示す図である。
【図２】本発明における、正常状態におけるメモリ構成を示した機能ブロック図である。
【図３】ディスクアレイサブシステム６００の全体構成を示すブロック図である。
【図４】本実施の形態において、正常状態の一動作例を示した図である。
【図５】本実施の形態において、メモリコントローラが１台故障した状態の一動作例を示す図である。
【図６】本実施の形態において、メモリコントローラが２台故障した状態の一動作例を示す図である。
【図７】本発明の第２の実施の形態において、メモリコントローラ２０ｃが故障した後に、キャッシュメモリ８０ｃをメモリコントローラ２０ａに載せ換えた後のメモリ構成を示した機能ブロック図である。
【図８】本実施の形態において、メモリコントローラが１台故障した状態の動作例を示すシーケンス図である。
【図９】本実施の形態において、メモリコントローラが２台故障した状態の動作例を示すシーケンス図である。
【図１０】本実施の形態において、メモリコントローラが１台故障した状態の動作例を示すシーケンス図である。
【図１１】ディスクアレイサブシステムのメモリ構成を示したブロック図である。
【図１２】正常状態におけるメモリ構成を示した機能ブロック図である。
【図１３】メモリコントローラが１台故障した状態におけるメモリ構成を示した機能ブロック図である。
【図１４】メモリコントローラが２台故障した状態におけるメモリ構成を示した機能ブロック図である。
【符号の説明】
【００５２】
０１ａ，０１ｂ，０１ｃ，０１ｄ    監視部
０２ａ，０２ｂ，０２ｃ，０２ｄ    復旧部
１０ａ，１０ｂ    ホストコントローラ
２０ａ，２０ｂ，２０ｃ，２０ｄ    メモリコントローラ
３０ａ，３０ｂ    ディスクコントローラ
４０ａ，４０ｂ    内部スイッチ
７０ａ，７０ｂ    ディレクトリ
８０ａ，８０ｂ，８０ｃ，８０ｄ    キャッシュメモリ
９０ａ，９０ｂ    クラスタ
５００    ディスクエンクロージャ
６００    ディスクアレイサブシステム
【図１】
2010092318.tif 000003
【図２】
2010092318.tif 000004
【図３】
2010092318.tif 000005
【図４】
2010092318.tif 000006
【図５】
2010092318.tif 000007
【図６】
2010092318.tif 000008
【図７】
2010092318.tif 000009
【図８】
2010092318.tif 000010
【図９】
2010092318.tif 000011
【図１０】
2010092318.tif 000012
【図１１】
2010092318.tif 000013
【図１２】
2010092318.tif 000014
【図１３】
2010092318.tif 000015
【図１４】
2010092318.tif 000016