(57)【要約】【課題】ホストコンピュータに対する応答性能を向上する。【解決手段】パス冗長化ドライバ４は、論理ディスク７０〜７２に対するデータの記録及び再生をキャッシュメモリ１５，２５を有するコントローラ１０，２０で制御するとともに、論理ディスク７０〜７２にデータを書き込む際にキャッシュメモリ１５，２５にそれぞれ同じ当該データを書き込むディスクアレイ装置９に用いられ、各コントローラ１０，２０毎にリードデータ転送とライトデータ転送とのパスを振り分ける機能を備えている。ライトデータ転送は特定のコントローラ１０（又は２０）のみが実行することになる。その結果、ライトデータのキャッシュメモリ１５，２５への二重書き込みにおける競合がなくなる。【選択図】        図１
2004164171.tif 000002
【特許請求の範囲】
【請求項１】
多数の記録媒体に対するデータの記録及び再生をキャッシュメモリを有する複数のコントローラで制御するとともに、前記記録媒体にデータを書き込む際に少なくとも二つの前記コントローラの前記キャッシュメモリにそれぞれ同じ当該データを書き込む記録装置に用いられ、
前記各コントローラ毎にリードデータ転送とライトデータ転送とのパスを振り分ける機能を備えた、
パス冗長化装置。
【請求項２】
前記記録媒体は論理ディスクであり、前記記録装置はディスクアレイ装置である、
請求項１記載のパス冗長化装置。
【請求項３】
前記複数のコントローラは、リードデータ転送専用のパスとなる第一のコントローラと、ライトデータ転送専用のパスとなる第二のコントローラとからなる、
請求項１又は２記載のパス冗長化装置。
【請求項４】
多数の記録媒体に対するデータの記録及び再生をキャッシュメモリを有する複数のコントローラで制御するとともに、前記記録媒体にデータを書き込む際に少なくとも二つの前記コントローラの前記キャッシュメモリにそれぞれ同じ当該データを書き込む記録装置に用いられ、
前記各コントローラ毎にリードデータ転送とライトデータ転送とのパスを振り分ける、
パス冗長化方法。
【請求項５】
前記記録媒体は論理ディスクであり、前記記録装置はディスクアレイ装置である、
請求項４記載のパス冗長化方法。
【請求項６】
前記複数のコントローラは、リードデータ転送専用のパスとなる第一のコントローラと、ライトデータ転送専用のパスとなる第二のコントローラとからなる、
請求項４又は５記載のパス冗長化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスクアレイ装置などに用いられ、データ入出力のパスを切り替えるパス冗長化装置及び方法に関する。
【０００２】
【従来の技術】
例えば下記特許文献１に開示されたディスクアレイ装置では、多数の論理ディスクに対するデータの記録及び再生をキャッシュメモリを有する二つのコントローラで制御するとともに、論理ディスクにデータを書き込む際に二つのコントローラのキャッシュメモリにそれぞれ同じ当該データを書き込んでいる。これにより、コントローラの一方に障害（又は故障、以下同じ。）が発生しても、他方のコントローラのキャッシュメモリにデータが保持されているので、論理ディスクに当該データを書き込むことができる。
【０００３】
このようなディスクアレイ装置に接続されるホストコンピュータには、ディスクアレイ装置に至る接続経路障害の回避手段としてパス冗長化ドライバが具備されている。パス冗長化ドライバは、Ｉ／Ｏ（入出力）アクセスパスの構成要素（コントローラ等）において障害が発生した場合においても、ホストコンピュータ上で動作するアプリケーション・プログラムの運用に影響を与えないために、代替パスを用いてリトライ処理を行う。また、パス冗長化ドライバには、特定のパスにＩ／Ｏが集中することのないように、Ｉ／Ｏを複数のパスに発行する機能を併せ持つものもある。
【特許文献１】
特開２００１−３１８７６６号公報
【０００４】
【発明が解決しようとする課題】
しかしながら、このような従来技術すなわち各コントローラ毎に独立したキャッシュメモリを持つアーキテクチャを採用したディスクアレイ装置では、次のような問題があった。
【０００５】
▲１▼．パス冗長化ドライバにて複数のパスにＩ／Ｏを分散して発行する場合、各コントローラに接続されたホストコンピュータからのライトデータは、相互にもう一方のコントローラ上のキャッシュメモリへ二重に書き込まれる。一方のコントローラが故障した場合に、キャッシュメモリ上に存在するディスクへの未書き込みデータが消失することを防ぐためである。しかし、この二重書き込み同士の競合が発生した場合、ホストコンピュータへの正常終了の応答遅延が発生するため、パス冗長化ドライバによる負荷分散機能が逆に性能低下を招いてしまう。
【０００６】
▲２▼．リードデータ転送Ｉ／Ｏとライトデータ転送Ｉ／Ｏとが同一のコントローラに対して発行されることは、キャッシュメモリの制御を複雑にするため、キャッシュメモリの性能を最大限に活用することが難しくなる。その結果、ホストコンピュータに対するレスポンス低下を招いてしまう。
【０００７】
【発明の目的】
そこで、本発明の目的は、ホストコンピュータに対する応答性能を向上できるパス冗長化装置及び方法を提供することにある。
【０００８】
【課題を解決するための手段】
【０００９】
本発明に係るパス冗長化装置は、多数の記録媒体に対するデータの記録及び再生をキャッシュメモリを有する複数のコントローラで制御するとともに、記録媒体にデータを書き込む際に少なくとも二つのコントローラのキャッシュメモリにそれぞれ同じ当該データを書き込む記録装置に用いられ、各コントローラ毎にリードデータ転送とライトデータ転送とのパスを振り分ける機能を備えている（請求項１）。
【００１０】
各コントローラ毎にリードデータ転送のパスとライトデータ転送のパスとを振り分けることにより、ライトデータ転送は特定のコントローラのみが実行することになる。その結果、ライトデータのキャッシュメモリへの二重書き込みにおいて、競合がなくなる。また、各キャッシュメモリの制御をリードデータ転送専用又はライトデータ転送専用に特化できるので、キャッシュメモリの性能が最大限に発揮される。
【００１１】
また、記録媒体は論理ディスクであり、記録装置はディスクアレイ装置である、としてもよい（請求項２）。更に、複数のコントローラは、リードデータ転送専用のパスとなる第一のコントローラと、ライトデータ転送専用のパスとなる第二のコントローラとからなる、としてもよい（請求項３）。
【００１２】
本発明に係るパス冗長化方法（請求項４〜６）は、本発明に係るパス冗長化装置に用いられるものであり、それぞれ請求項１〜３に対応する。
【００１３】
換言すると、本発明は、Ｉ／Ｏリクエストのデータ転送方向別にＩ／Ｏ発行パスを制御することにより、Ｉ／Ｏレスポンスを向上させるＩ／Ｏパス冗長化システムを提供するものである。
【００１４】
【発明の実施の形態】
図１は本発明に係るパス冗長化装置の一実施形態を示すブロック図である。以下、この図面に基づき説明する。
【００１５】
本発明に係るパス冗長化装置としてのパス冗長化ドライバ４は、論理ディスク７０〜７２に対するデータの記録及び再生をキャッシュメモリ１５，２５を有するコントローラ１０，２０で制御するとともに、論理ディスク７０〜７２にデータを書き込む際にキャッシュメモリ１５，２５にそれぞれ同じ当該データを書き込むディスクアレイ装置９に用いられ、各コントローラ１０，２０毎にリードデータ転送とライトデータ転送とのパスを振り分ける機能を備えている。
【００１６】
各コントローラ１０，２０毎にリードデータ転送のパスとライトデータ転送のパスとを振り分けることにより、ライトデータ転送は特定のコントローラ１０（又は２０）のみが実行することになる。その結果、ライトデータのキャッシュメモリ１５，２５への二重書き込みにおける競合がなくなる。また、各キャッシュメモリ１５，２５の制御をリードデータ転送専用又はライトデータ転送専用に特化できるので、キャッシュメモリ１５，２５の性能が最大限に発揮される。更に詳しく説明する。
【００１７】
ホストコンピュータ１のＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）６，７は、それぞれホストインタフェースケーブル５０，５１を介してディスクアレイ装置９のコントローラ１０，２０に接続されている。ホストコンピュータ１は、ディスクアレイ装置９が制御する論理ディスク７０〜７２に対するＩ／Ｏを実行する。下位ドライバ５は、ＨＢＡ６，７を制御することによりＩ／Ｏ処理を行う。
【００１８】
パス冗長化ドライバ４は、次のように動作する。上位ドライバ３から受け取ったＩ／Ｏを、下位ドライバ５に引き渡す。また、ディスクアレイ装置９が制御する論理ディスク７０〜７２に対するＩ／Ｏの実行結果を、ＨＢＡ６，７を介して下位ドライバ５から受け取り、正常終了又は異常終了を判断する。異常終了の原因がパスの構成要素（ＨＢＡ６，７、ホストインタフェースケーブル５０，５１、コントローラ１０，２０等）における障害であると判断した場合は、代替パスを用いて、異常終了したＩ／Ｏのリトライ処理を行う。
【００１９】
ホストインタフェース制御回路１１，２１は、それぞれホストインタフェースケーブル５０，５１を介してＨＢＡ６，７に接続され、ホストコンピュータ１から要求される入出力Ｉ／Ｏに対する制御を行う。
【００２０】
データ転送制御回路１２，２２は、それぞれ内部バス３０，４０を介してホストインタフェース制御回路１１，２１、ＭＰＵ１４，２４、キャッシュメモリ１５，２５、ＨＤＤインタフェース制御回路１３，２３、及びライトデータミラーリング制御回路１６，２６に接続され、各コントローラ１０，２０内のデータ転送を制御する。
【００２１】
ＨＤＤインタフェース制御回路１３，２３は、ディスクインタフェース６０を介して論理ディスク７０〜７２に接続されている。そのため、コントローラ１０，２０のいずれからも、各論理ディスク７０〜７２に対する入出力制御を行うことができる。
【００２２】
ＭＰＵ１４，２４は、それぞれ内部バス３０，４０を介してコントローラ１０，２０内の各制御回路及びキャッシュメモリ１５，２５を制御する。
【００２３】
キャッシュメモリ１５，２５は、ホストコンピュータ１からの入出力要求に対するレスポンス性能向上のために使用されるメモリである。
【００２４】
ライトデータミラーリング制御回路１６，２６は、一方のキャッシュメモリ１５（又は２５）上のみに存在する論理ディスク７０〜７２への未書き込みデータを、ミラーリングデータ転送インタフェース３１を介して他方のキャッシュメモリ２５（又は１５）上へミラーリング（すなわちコピー制御）を行う。
【００２５】
論理ディスク７０〜７２は、それぞれ複数の単体ディスクから構成されている。
【００２６】
次に、ホストコンピュータ１及びディスクアレイ装置９の動作について説明する。
【００２７】
ホストコンピュータ１上で動作するアプリケーション・プログラム８からディスクアレイ装置９に書き込まれるデータ（ライトデータ転送Ｉ／Ｏ）は、アプリケーション・プログラム８、ファイルシステム２、上位ドライバ３、パス冗長化ドライバ４、下位ドライバ５、ＨＢＡ６、ホストインタフェースケーブル５０を介してコントローラ１０に至り、指定された論理ディスク７０〜７２に書き込まれる。
【００２８】
ホストコンピュータ１上で動作するアプリケーション・プログラム８によってディスクアレイ装置９から読み出されるデータ（リードデータ転送Ｉ／Ｏ）は、指定された論理ディスク７０〜７２から、コントローラ１０、ホストインタフェースケーブル５０を介してＨＢＡ６に至り、下位ドライバ５、パス冗長化ドライバ４、上位ドライバ３、ファイルシステム２を経てアプリケーション・プログラム８に至る。
【００２９】
また、ホストコンピュータ１による各Ｉ／Ｏの実行結果については、ＨＢＡ６、下位ドライバ５、パス冗長化ドライバ４、上位ドライバ３、ファイルシステム２及びアプリケーション・プログラム８の各レイヤによって判断が行われ、必要に応じて何らかの処置が行われる。
【００３０】
ここで、パス冗長化ドライバ４は、下位ドライバ５から受け取ったＩ／Ｏの実行結果について正常終了又は異常終了の判断を行い、異常終了の原因がパスの構成要素（ＨＢＡ６，７、ホストインタフェースケーブル５０，５１、コントローラ１０，２０等）における障害と判断した場合は、代替パスを用いて、異常終了したＩ／Ｏのリトライ処理を行う。
【００３１】
また、パス冗長化ドライバ４は、一方のＩ／Ｏパス（例えば、ホストインタフェースケーブル５０経由）のみにＩ／Ｏが集中することのないよう、複数のＩ／Ｏパスを有効に活用し、Ｉ／Ｏの負荷分散（ホストインタフェースケーブル５０，５１経由）を行う機能を有する。
【００３２】
次に、キャッシュメモリ１５，２５について説明する。
【００３３】
ディスクアレイ装置９内のコントローラ１０，２０に障害が発生していない場合、ホストコンピュータ１からのライトデータは、例えばホストインタフェースケーブル５０を介して、ディスクアレイ装置９のコントローラ１０内のキャッシュメモリ１５に一時的に蓄積される。しかし、一般的にキャッシュメモリ１５には揮発性メモリが用いられているため、論理ディスク７０〜７２の然るべき論理ディスクに書き込まれるまでの間に、コントローラ１０に障害が発生すると、キャッシュメモリ１５上に一時的に蓄積されたデータは消失してしまう。
【００３４】
これを回避するために、ディスクアレイ装置９では、各コントローラ１０，２０毎に独立したキャッシュメモリ１５，２５を持つアーキテクチャを採用している。つまり、ホストコンピュータ１からのライトデータは、一方のコントローラ１０（又は２０）が故障した場合にキャッシュメモリ１５（又は２５）上に存在するディスクへの未書き込みデータの消失を防ぐため、相互にもう一方のコントローラ２０（又は１０）上のキャッシュメモリ２５（又は１５）へ二重に書き込まれる。これらは、ミラーリングデータ転送インタフェース３１を介して互いに接続されたライトデータミラーリング制御回路１６，２６によって行われる。
【００３５】
ここで、従来技術では、パス冗長化ドライバ４によるＩ／Ｏの負荷分散機能によって、ホストインタフェースケーブル５０，５１経由でライトデータ（ライトデータ転送Ｉ／Ｏ）が各コントローラ１０，２０に対して発行された場合に、次のような問題が発生する。ライトデータは、各コントローラ１０（又は２０）上のキャッシュメモリ１５（又は２５）に蓄積された後、ライトデータミラーリング制御回路１６，２６を介してもう一方のコントローラ２０（又は１０）上のキャッシュメモリ２５（又は１５）上に反映される。しかし、反映処理は同時に行えないため、いずれか一方のコントローラ１０（又は２０）からの反映処理が終了するまでの間、他方のコントローラ２０（又は１０）による反映処理は待たされることになる。そのため、いずれか一方のホストインタフェースケーブル５１（又は５０）経由で発行されたライトデータ（ライトデータ転送Ｉ／Ｏ）に対するホストコンピュータ１への正常終了応答が遅れることとなる。
【００３６】
また、リード（リードデータ転送Ｉ／Ｏ）とライト（ライトデータ転送Ｉ／Ｏ）が同一のコントローラ１０（又は２０）に対して発行されることは、キャッシュメモリ１５，２５の制御を複雑にするので、キャッシュメモリ性能を最大限に活用することが難しくなり、結果としてホストコンピュータ１への応答が遅れることとなる。
【００３７】
図２は、図１におけるパス冗長化ドライバの動作の一例を示すフローチャートである。以下、図１及び図２に基づき説明する。
【００３８】
図２は、上位ドライバ３から受け取とったＩ／Ｏリクエストのデータ転送方向の判断を行い、リード方向のデータ転送を伴うリクエストとライト方向のデータ転送を伴うリクエストとを異なるパスへ振り分ける指定をするための処理過程の一部を示している。これらの処理はパス冗長化ドライバ４により実施される。すなわち、図２は、パス冗長化ドライバ４により実施され、パス冗長化ドライバ４によるリードデータ転送Ｉ／Ｏ及びライトデータ転送Ｉ／Ｏに関する処理過程の一部を示したフローである。以下、前述したホストコンピュータ１に対する応答遅延について、これを解決するための方法を図１及び２を用いて説明する。
【００３９】
まず、リード方向のデータ転送を伴うＩ／Ｏリクエストとライト方向のデータ転送を伴うＩ／Ｏリクエストとの各々に対して発行するパスを振り分けるための設定情報を読み込む（ステップＳ２０１）。ここで、設定情報とは、データ転送方向に基づいてＩ／Ｏリクエストを発行するパスを振り分けるための情報であり、次の二種類がある。１．上位ドライバ３から受け取ったＩ／Ｏリクエストがリード方向のデータ転送を伴う場合であって、ＨＢＡ６及びホストインタフェースケーブル５０を介してコントローラ１０へ至るパス。２．Ｉ／Ｏリクエストがライト方向のデータ転送を伴う場合であって、ＨＢＡ７及びホストインタフェースケーブル５１を介してコントローラ２０へ至るパス。これらの設定情報は、外部から定義ファイルとして与えられる。
【００４０】
続いて、上位ドライバ３からＩ／Ｏリクエストを受け取り（ステップＳ２０２）、そのＩ／Ｏリクエストがリード方向のデータ転送を伴うものであるかライト方向のデータ転送を伴うものであるかを判断する（ステップＳ２０３）。リード方向のデータ転送を伴う場合は、ステップＳ２０１での設定情報に従い、ＨＢＡ６及びホストインタフェースケーブル５０を介してコントローラ１０へＩ／Ｏが発行されるようにＩ／Ｏリクエストのパス設定を行う（ステップＳ２０４）。同様に、ライト方向のデータ転送を伴う場合は、ステップＳ２０１での設定情報に従い、ＨＢＡ７及びホストインタフェースケーブル５１を介してコントローラ２０へＩ／Ｏが発行されるようにＩ／Ｏリクエストのパス設定を行う（ステップＳ２０５）。
【００４１】
続いて、ステップＳ２０４又はステップＳ２０５にてパス設定されたＩ／Ｏリクエストを下位ドライバ５へ発行する（ステップＳ２０６）。下位ドライバ５は、ステップＳ２０４又はステップＳ２０５にて指定されたパス（ＨＢＡ６又はＨＢＡ７）へＩ／Ｏリクエストを発行する。
【００４２】
以上により、ディスクアレイ装置９へ発行されるＩ／Ｏのデータ転送方向（リード方向／ライト方向）の制御を実現する。
【００４３】
なお、本発明は、言うまでもなく、上記実施形態に限定されない。例えば、次のようにしてもよい。
【００４４】
ａ．図２のステップＳ２０１における設定情報は、固定的なものとしたが、そのような制限はなく、任意の時点及び任意の手段で変更可能である。ｂ．図２のステップＳ２０１における設定情報は、外部から定義ファイルで与えられるものとしたが、その制限はなく、フロッピーディスク、ＲＯＭなどの媒体から与えられるものとしてもよいし、パス冗長化ドライバ４自身によるＩ／Ｏパターンの分析結果などにより能動的にフィードバックされるものでもよい。ｃ．図１では、二つのＨＢＡ６，７を搭載するホストコンピュータ１を構成例としてあげたが、ＨＢＡの枚数は、ＯＳの種類、下位ドライバ５、又はホストコンピュータ１のハードウェアによって制限されるものであり、何枚でもよい。ｄ．図１では、二つのコントローラ１０，２０を搭載するディスクアレイ装置９を構成例としてあげたが、コントローラ数、及びインタフェースケーブルを介して各コントローラとホストコンピュータ等を接続するためのポート数に、制限はない。ｅ．図１では、ＨＢＡ６，７とコントローラ１０，２０とをそれぞれインタフェースケーブルで直接接続したものを構成例としてあげたが、途中に、ハブ又はスイッチ等が介在してもかまわない。ｆ．図１では、論理ディスク７０〜７２はディスクアレイ装置９内に構成されるものを例としてあげたが、ディスクアレイ装置９に接続されたＪＢＯＤ（Ｊｕｓｔ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ）等の外部のディスクで構成してもよい。ｇ．図１のホストコンピュータ１に接続されるディスクアレイ装置９の数に制限はない。ｈ．図１のディスクアレイ装置９に接続されるホストコンピュータ１の数に制限はない。ｉ．図１のディスクアレイ装置９内に構成される論理ディスク７０〜７２の数に制限はないｊ．本発明では、ディスクアレイ装置９を例にしたが、ディスクアレイ装置のみに限定されるものではない。
【００４５】
【発明の効果】
本発明に係るパス冗長化装置及び方法によれば、各コントローラ毎にリードデータ転送のパスとライトデータ転送のパスとを振り分けることにより、ライトデータ転送が特定のコントローラで実行されるので、ライトデータのキャッシュメモリへの二重書き込みにおける競合をなくすことができる。また、各キャッシュメモリの制御をリードデータ転送専用又はライトデータ転送専用に特化できるので、キャッシュメモリの性能を最大限に発揮することができる。これにより、ホストコンピュータに対する応答性能を向上できる。
【００４６】
換言すると、本発明によれば、ディスクアレイ装置の任意のコントローラ毎にリードデータ転送Ｉ／Ｏとライトデータ転送Ｉ／Ｏを振り分けることにより、次の二つの効果を奏する。第一の効果は、ライトデータのキャッシュメモリへの二重書き込みにおける競合がなくなるので、ホストコンピュータへの正常終了の応答遅延を回避することが可能となる。第二の効果は、キャッシュメモリの制御をリードデータ転送Ｉ／Ｏ専用又はライトデータ転送Ｉ／Ｏ専用に特化したチューニングを施すことが可能となるので、キャッシュメモリ性能を最大限に活用することにより、ホストコンピュータへの応答性能を向上させることが可能となる。
【図面の簡単な説明】
【図１】本発明に係るパス冗長化装置の一実施形態を示すブロック図である。
【図２】図１におけるパス冗長化ドライバの動作の一例を示すフローチャートである。
【符号の説明】
１  ホストコンピュータ
４  パス冗長化ドライバ（パス冗長化装置）
９  ディスクアレイ装置
１０，２０  コントローラ
１５，２５  キャッシュメモリ
７０〜７２  論理ディスク
【図１】
2004164171.tif 000003
【図２】
2004164171.tif 000004