(57)【特許請求の範囲】
【請求項１】
自装置が有する複数のコントローラの各々がキャッシュメモリを備えるローカルキャッシュ方式を採用したストレージ装置であって、
前記複数のコントローラのうち、論理ボリュームに対する読み書きを制御する第１のコントローラが、
前記論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みする入出力処理部と、
前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、前記先読みしたデータを配置するデータ管理部とを備え、
前記第１のコントローラは、前記論理ボリュームに対する入出力要求の発行元を示す発行元情報を含む入出力履歴を蓄積し、
前記データ管理部は、前記蓄積された入出力履歴に含まれる前記発行元情報に基づいて、前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想する
ストレージ装置。
【請求項２】
前記第１のコントローラによって前記先読みされたデータが配置されたコントローラは、前記読み出し要求に応じて当該データを読み出すと共に前記読み出し要求の発行元に返却すると、当該データを削除する
請求項１記載のストレージ装置。
【請求項３】
前記第１のコントローラを除く前記コントローラは、受け取った読み出し要求に応じたデータを保持しない場合、当該読み出し要求を前記第１のコントローラに転送する
請求項１または２記載のストレージ装置。
【請求項４】
前記第１のコントローラは、前記論理ボリュームに対する入出力要求がシーケンシャルな読み出し要求である場合、前記入出力要求の発行元に対して、当該読み出し要求をラウンドロビン方式にて発行することを要求する
請求項１ないし３記載のストレージ装置。
【請求項５】
前記第１のコントローラの入出力処理部は、前記論理ボリュームに対するデータの書き込み要求を受けた場合、前記論理ボリュームにおける当該データを、受け取ったデータにより更新すると共に、前記先読みにより当該データを配置したコントローラから、前記データを削除する
請求項１ないし４のいずれか１項記載のストレージ装置。
【請求項６】
各々がキャッシュメモリを備える複数のコントローラを有する、ローカルキャッシュ方式を採用したストレージ装置に含まれる前記複数のコントローラのうち、
論理ボリュームに対する読み書きを制御するコントローラであって、
前記論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みする入出力処理部と、
前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、前記先読みしたデータを配置するデータ管理部と
を備え、
前記論理ボリュームに対する入出力要求の発行元を示す発行元情報を含む入出力履歴を蓄積し、
前記データ管理部は、前記蓄積された入出力履歴に含まれる前記発行元情報に基づいて、前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想する
コントローラ。
【請求項７】
前記請求項１ないし５のいずれか１項記載のストレージ装置と、
前記論理ボリュームとを備えた
ストレージシステム。
【請求項８】
ストレージ装置が有する複数のコントローラの各々がキャッシュメモリを備えるローカルキャッシュ方式を採用したストレージ装置におけるデータアクセス方法であって、
前記複数のコントローラのうち、論理ボリュームに対する読み書きを制御する第１のコントローラは、
前記論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みし、
前記論理ボリュームに対する入出力要求の発行元を示す発行元情報を含む入出力履歴を蓄積し、
前記蓄積された入出力履歴に含まれる前記発行元情報に基づいて、前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、前記先読みしたデータを配置する
データアクセス方法。
【請求項９】
各々がキャッシュメモリを備える複数のコントローラを有する、ローカルキャッシュ方式を採用したストレージ装置に含まれる前記複数のコントローラのうち、論理ボリュームに対する読み書きを制御する第１のコントローラに、
論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みする処理と、
前記論理ボリュームに対する入出力要求の発行元を示す発行元情報を含む入出力履歴を蓄積する処理と、
前記蓄積された入出力履歴に含まれる前記発行元情報に基づいて、前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、前記先読みしたデータを配置する処理とを
実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散キャッシュ方式を採用するストレージ技術に関する。
【背景技術】
【０００２】
ホストコンピュータと、ディスク等の記憶装置との間に複数のアクセスパスを存在させるようなストレージシステムがある。このようなストレージシステムでは、アクセスパスを効率的に利用するため、複数のアクセスパスに分散して入出力することで負荷分散を行う。
【０００３】
上記負荷分散を実現するため、ホストコンピュータとディスクとの間に位置し、ホストコンピュータの指示に基づいて、ディスクへのアクセスを制御するストレージ装置がある。ストレージ装置は、ホストコンピュータからのデータの入出力を制御するコントローラを備える。
【０００４】
コントローラと、当該コントローラとホストコンピュータとを接続するホストパスとに冗長性を持つＡＬＵＡ（Ａｓｙｍｍｅｔｒｉｃ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ａｃｃｅｓｓ）をサポートする分散キャッシュ方式を採用するストレージ装置がある。このようなストレージ装置では、通常、ホストコンピュータのデータを格納する論理ボリューム（ＬＵＮ）ごとに優先ホストパスが決まる。優先ホストパスとは、ホストコンピュータとストレージ装置との間のコマンドやデータの送受信に、優先的に使用されるパスである。
【０００５】
近年、各コントローラがホストコンピュータとディスクとの間を転送されるデータを一時的に保持するキャッシュメモリを有するローカルキャッシュ方式が普及し、ホストコンピュータは、優先ホストパスにＩＯ要求を発行するアーキテクチャが一般的になってきている。
【０００６】
しかしながら、ＬＵＮが１つしか存在しないような構成のストレージシステムでは、特定のリソースしか使用されないという問題が生じる。すなわち、ＬＵＮが１つしか存在しない場合、ストレージ装置が、データの入出力を制御する複数のコントローラを備えたとしても、そのＬＵＮを担当する特定のコントローラと、当該コントローラに対するホストパスのみが使用され、他のコントローラおよびホストパスは使用されない。したがって、ストレージ装置は、一部のリソースしか使用しないため、その性能を十分に発揮できないという課題が生じる。
【０００７】
図１７は、上述のようにストレージ装置における特定のコントローラのみがＬＵＮにアクセスすると共に、そのコントローラに対するホストパスのみが使用されることを示す図である。
【０００８】
例えば、特許文献１は、アクセスパターンの特殊性によって記憶システムの性能を向上させる記憶システムを開示する。
【０００９】
また、特許文献２は、シーケンシャルリードを始め、各種のリードに対して良好な負荷分散を可能にした負荷分散システムを開示する。
【００１０】
また、特許文献３は、複数コントローラ構成のディスクアレイ制御装置で単一または複数のホストと接続したとき、シーケンシャル判定のテーブルをＬＵＮ毎に管理することにより、高性能を保証するシステムを開示する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００８−２６９０１５号公報
【特許文献２】特開２００９−２４４９２３号公報
【特許文献３】特開２００１−０２２５３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述のように、ＬＵＮが１つしか存在しないような構成のストレージシステムでは、そのＬＵＮを担当する特定のコントローラと、当該コントローラに対するホストパスのみが使用され、他のコントローラは使用されない。よって、ストレージ装置は、一部のリソースしか使用しないため、その性能を十分に発揮できないという課題がある。
【００１３】
上述した特許文献１には、複数のＬＵＮが存在するストレージシステムにおける性能の向上について開示されるが、１つのＬＵＮしか存在しないストレージシステムにおける性能の向上については開示されない。同様に、特許文献２および３にも、ストレージ装置がそのリソースを十分に使用することにより性能を向上させることは開示されない。
【００１４】
本願発明は、上記課題を鑑みてなされたものであり、リソースを十分に使用することにより性能を向上できるストレージ装置等を提供することを主要な目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１のストレージ装置は、自装置が有する複数のコントローラのうち、論理ボリュームに対する読み書きを制御する第１のコントローラが、前記論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みする入出力処理部と、前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、前記先読みしたデータを配置するデータ管理部とを備える。
【００１６】
本発明の第１のコントローラは、ストレージ装置が有する複数のコントローラのうち、論理ボリュームに対する読み書きを制御すると共に、前記論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みする入出力処理部と、前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、前記先読みしたデータを配置するデータ管理部とを備える。
【００１７】
本発明の第１のデータアクセス方法は、ストレージ装置が有する複数のコントローラのうち、論理ボリュームに対する読み書きを制御する第１のコントローラは、前記論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みし、前記先読みされたデータへの読み出し要求を、前記複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、前記先読みしたデータを配置する。
【００１８】
なお同目的は、上記の各構成を有するストレージ装置、第１のコントローラまたはデータアクセス方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１９】
本願発明によれば、リソースを十分に使用することによりストレージ装置の性能を向上することができるという効果が得られる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係るストレージシステムの構成の概略を示す図である。
【図２】本発明の第１の実施形態に係るストレージ装置が備えるコントローラの構成を示すブロック図である。
【図３】本発明の第１の実施形態に係るコントローラのいずれかが、ホストコンピュータからリードコマンドを受信した際の動作を示すフローチャートである。
【図４】本発明の第１の実施形態に係るＬＵＮオーナーであるコントローラがリードコマンドを受信し、キャッシュメモリにリード対象となるデータが保持されていないときのコマンド等の流れを説明する図である。
【図５】本発明の第１の実施形態に係るＩＯ履歴格納部に格納されるＩＯ情報の例を示す図である。
【図６】本発明の第１の実施形態に係る非ＬＵＮオーナーであるコントローラが、ホストコンピュータからリードコマンドを受信し、キャッシュメモリにリード対象となるデータが保持されないときのコマンド等の流れを説明する図である。
【図７】本発明の第１の実施形態に係るストレージ装置におけるコマンド等の流れを説明する図である。
【図８】本発明の第１の実施形態に係るＬＵＮオーナーであるコントローラにおけるＩＯ処理部によるプリフェッチ動作について説明するフローチャートである。
【図９】本発明の第１の実施形態に係るストレージ装置におけるデータの事前配置について説明する図である。
【図１０】本発明の第１の実施形態に係るＬＵＮオーナーであるコントローラがリードコマンドを受信し、対象となるデータがキャッシュメモリに保持される場合のコマンド等の流れを説明する図である。
【図１１】本発明の第１の実施形態に係る非ＬＵＮオーナーであるコントローラがリードコマンドを受信すると共に、対象となるデータがキャッシュメモリに保持される場合を説明する図である。
【図１２】本発明の第１の実施形態に係るＬＵＮオーナーであるコントローラが、非ＬＵＮオーナーであるコントローラにより処理済みのＩＯ情報を受信したときの動作を示すフローチャートである。
【図１３】本発明の第１の実施形態に係るストレージ装置におけるコマンド等の流れを説明する図である。
【図１４】本発明の第１の実施形態に係るＬＵＮオーナーであるコントローラがライトコマンドを受信したときの動作を説明する図である。
【図１５】本発明の第２の実施形態に係るストレージ装置の構成を示すブロック図である。
【図１６】本発明の各実施形態に係るコントローラを実現可能な情報処理装置のハードウエア構成を例示する図である。
【図１７】ストレージシステムの構成の一例の概略を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００２２】
第１の実施形態
図１は、本発明の第１の実施形態に係るストレージシステム１００の構成の概略を示す図である。図１に示すように、ストレージシステム１００は、ストレージ装置１１０と、ディスク１２０とを備える。
【００２３】
ストレージ装置１１０は、複数のコントローラを備える。本実施形態では、ストレージ装置１１０は、例えば４つのコントローラ１１１−１１４を備えると仮定する。コントローラ１１１−１１４は、それぞれ、アクセスパス（ホストパス）を介してホストコンピュータ２００からの指示に基づいてディスク１２０の制御を行うと共に、ホストコンピュータ２００とディスク１２０との間のデータ転送を制御する。
【００２４】
ディスク１２０は、ホストコンピュータ２００のデータを格納する１つの論理ボリューム（ＬＵＮ）を備える。ＬＵＮには、オーナーとして１つのコントローラが決められる。ここでは、コントローラ１１４がＬＵＮオーナーであり、コントローラ１１１−１１３は非オーナーであると仮定する。ＬＵＮオーナーは、ディスク１２０にアクセスしたり、ホストコンピュータ２００からのＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ（入出力））要求を管理したりする。各コントローラ１１１−１１４は、それぞれキャッシュメモリ（ＣＨＥ）を備える。ストレージシステム１００の動作の詳細については後述する。
【００２５】
図２は、本実施形態に係るストレージ装置１１０が備えるコントローラ１１１−１１４の構成を示すブロック図である。図２に示すように、コントローラ１１１−１１４は、ホストポート４１、キャッシュメモリ４２およびディスクポート４３を備える。さらに、コントローラ１１１−１１４は、ＩＯ処理部４４、ＩＯパターン判定部４５、ＩＯ履歴格納部４６、キャッシュデータ管理部４７、キャッシュデータ管理情報格納部４８を備える。
【００２６】
ホストポート４１は、ホストコンピュータ２００とのデータまたは情報の入出力に用いることが可能なインタフェースである。ディスクポート４３は、ディスク１２０とのデータまたは情報の入出力のためのインタフェースである。キャッシュメモリ４２は、ホストコンピュータ２００とディスク１２０との間を転送されるデータを一時的に保持する。
【００２７】
ＩＯ処理部４４は、ホストコンピュータ２００から受信したＩＯ要求に関する処理を行う。ＩＯパターン判定部４５は、ホストコンピュータ２００から受信したＩＯ要求のパターン、例えばシーケンシャルリード等を判定する。ＩＯ履歴格納部４６は、ホストコンピュータ２００から受信したＩＯ要求に関するＩＯ情報の履歴（入出力履歴）を格納する。キャッシュデータ管理部４７は、キャッシュメモリ４２におけるデータの配置を管理する。キャッシュデータ管理情報格納部４８は、キャッシュメモリ４２におけるデータがどこに配置されたかを記録するキャッシュデータ管理情報を格納する。
【００２８】
上記各構成要素のうち、ＩＯ処理部４４、ＩＯパターン判定部４５、ＩＯ履歴格納部４６、キャッシュデータ管理部４７、キャッシュデータ管理情報格納部４８は、ＬＵＮオーナーとなったコントローラにおいて機能する。
【００２９】
＜キャッシュメモリにリード対象となるデータが保持されていない際の動作について＞
（１）ＬＵＮオーナーのコントローラがリードコマンドを受信した場合のストレージ装置１１０の動作
図３は、コントローラ１１１−１１４のいずれかが、ホストコンピュータ２００からリードコマンド（読み出し要求）を受信した際の動作を示すフローチャートである。また、図４は、ＬＵＮオーナーであるコントローラ１１４がリードコマンドを受信し、キャッシュメモリ４２にリード対象となるデータが保持されていないときのコマンド等の流れを説明する図である。図３および図４を参照して、ＬＵＮオーナーであるコントローラ１１４の動作について説明する。
【００３０】
ホストコンピュータ２００から、ホストポート４１を介してコントローラ１１４にリードコマンドが送信されると、ＩＯ処理部４４はリードコマンドを受信する（ステップＳＴ２０１）。ＩＯ処理部４４は、リードコマンドを受信すると、キャッシュメモリ４２に読み出し対象となるデータが保持されるか否かを調べる（ステップＳＴ２０２）。対象となるデータがない場合（ステップＳＴ２０３においてＮｏ）、コントローラ１１４はＬＵＮオーナーであるため（ステップＳＴ２０４においてＹｅｓ）、ＩＯ処理部４４は、ディスクポート４３を介してディスク１２０から対象となるデータを読み出しキャッシュメモリ４２に格納する（ステップＳＴ２０５）。
【００３１】
そして、ＩＯ処理部４４は、当該データをリードコマンドの発行元（ホストコンピュータ２００）に返却する（ステップＳＴ２０６）。続いてＩＯ処理部４４は、ホストコンピュータ２００から受信したリードコマンドを、ＩＯパターン判定部４５に通知する。
【００３２】
ＩＯパターン判定部４５は、受け取ったリードコマンドと、ＩＯ履歴格納部４６に格納されるＩＯ情報とを比較し、受信したリードコマンドのＩＯパターンを判定する。ＩＯパターンには、例えば、ランダム方式、シーケンシャル方式、ラウンドロビン方式等がある。
【００３３】
ＩＯパターン判定部４５が、受信したＩＯ要求はシーケンシャルな読み込み要求、すなわちシーケンシャルリードであると判定（プリフェッチ判定）すると（ステップＳＴ２０７）、ＩＯ処理部４４は、プリフェッチ動作を実施する（ステップＳＴ２０８）。なお、プリフェッチ動作（先読み）に関して、詳細は図８および図９を参照して後述する。
【００３４】
一方、シーケンシャルリードでない場合、ＩＯパターン判定部４５は受け取ったリードコマンドに関するＩＯ情報をＩＯ履歴格納部４６に登録する（ステップＳＴ２０９）。
【００３５】
図５は、ＩＯ履歴格納部４６に格納されるＩＯ情報５０の例を示す図である。図５に示すように、ＩＯ情報５０は、ＬＵＮ番号５１、アドレス５２、長さ５３および発行元５４を含む。ＬＵＮ番号５１は、データの読み出し／書き込み先であるＬＵＮの識別番号を示す。アドレス５２は、ＬＵＮにおける、データの読み出し／書き込み先のアドレスを示す。長さ５３は、ＩＯ情報の長さを示す。発行元５４は、ＩＯ情報の発行元を示す。
【００３６】
なお、ＩＯ履歴格納部４６は、ＩＯ情報としてシーケンシャルリードを検出するための系列を格納してもよい。これは、ＩＯパターン判定部４５によるシーケンシャルリードの検出アルゴリズムによるものであるため、本実施形態ではその詳細な説明は省略する。
【００３７】
（２）非ＬＵＮオーナーのコントローラがリードコマンドを受信した場合のストレージ装置１１０の動作
図６は、非ＬＵＮオーナーであるコントローラが、ホストコンピュータ２００からリードコマンドを受信し、キャッシュメモリ４２にリード対象となるデータが保持されないときのコマンド等の流れを説明する図である。図３および図６を参照して、非ＬＵＮオーナーであるコントローラの動作について説明する。
【００３８】
非ＬＵＮオーナーであるコントローラは、リードコマンドを受信すると（ステップＳＴ２０１）、ＩＯ処理部４４は、キャッシュメモリ４２に読み出し対象となるデータが保持されるか否かを調べる（ステップＳＴ２０２）。対象となるデータがない場合（ステップＳＴ２０３においてＮｏ）、非ＬＵＮオーナーであるコントローラは（ステップＳＴ２０４においてＮｏ）、ＩＯ処理部４４からＬＵＮオーナーであるコントローラ１１４にリードコマンドを転送する（ステップＳＴ３０１）。
【００３９】
ＬＵＮオーナーであるコントローラ１１４は、上記リードコマンドの転送を受信すると（ステップＳＴ２０１）、キャッシュメモリ４２に該当データが保持されるか否かを調べ（ステップＳＴ２０２）、保持される場合はそれを読み出し、それをリードコマンドの転送元のコントローラに返却する（ステップＳＴＳＴ４０１）。一方、キャッシュメモリ４２に対象となるデータが保持されない場合、ＬＵＮオーナーであるコントローラ１１４はディスク１２０から当該データを読み出し（ステップＳＴＳＴ２０５）、それをリードコマンドの転送元のコントローラに返却する（ステップＳＴＳＴ２０６）。
【００４０】
リードコマンドの転送元の（ホストコンピュータ２００からリードコマンドを受信した）コントローラは、ＬＵＮオーナーであるコントローラ１１４から該当データを取得すると、それをキャッシュメモリ４２に格納する（ステップＳＴ３０１）。そして、リードコマンドの発行元であるホストコンピュータ２００に、該当データを返却する（ステップＳＴ３０２）。
【００４１】
また、ホストコンピュータ２００からリードコマンドを受信したコントローラは、リード処理を実施した旨と、受信したコマンド（ＩＯ情報）とをＬＵＮオーナーであるコントローラ１１４に通知する（ステップＳＴ３０３）（詳細は、図１２を参照して後述する）。
【００４２】
図７は、上記と同様の場合のストレージ装置１１０全体におけるコマンド等の流れを説明する図である。すなわち、４つのコントローラ１１１−１１４を備えたストレージ装置１１０において、各コントローラにホストコンピュータ２００からリードコマンドが発行され、キャッシュメモリ４２に対象となるデータが保持されない場合のコマンド等の流れを示す。図３および図６を参照して上述したように、この場合、各コントローラは、リードコマンドをＬＵＮオーナーであるコントローラ１１４に転送する。そして、当該転送により、コントローラ１１４から返却されたデータを、それぞれキャッシュメモリ４２に格納すると共に、ホストコンピュータ２００に返却する。
【００４３】
＜プリフェッチ動作およびデータの事前配置について＞
上述したように、ホストコンピュータ２００からのコマンド（ＩＯ要求）は、ＬＵＮオーナーであるコントローラ１１４にて受信された場合も、非ＬＵＮオーナーであるコントローラ１１１−１１３にて受信された場合も、ＬＵＮオーナーであるコントローラ１１４のＩＯ履歴格納部４６に蓄積される。例えば、ホストコンピュータ２００からシーケンシャルリード要求が発行され続けると、ＩＯ履歴格納部４６には、シーケンシャルリードのＩＯ要求に関するＩＯ情報が蓄積される。
【００４４】
図３におけるステップＳＴ２０７に示したように、ＩＯパターン判定部４５が、プリフェッチ動作実施の判定、すなわち、シーケンシャルリードであると判定すると、ＩＯ処理部４４は、プリフェッチ動作を実施する。
【００４５】
ここで、ＩＯ履歴格納部４６に蓄積されるＩＯ情報には、図５に示すように、コマンド発行元を示す情報（発行元情報）が記録される。したがって、蓄積されたＩＯ情報に記録されるコマンド発行元を示す情報を順に参照すれば、ＩＯ処理部４４がプリフェッチしたデータが、将来どのコントローラから読まれるかを予想することが可能となる。例えば、コントローラ、ホストパスを４つ備えるストレージ装置に対して、１Ｍバイト毎にラウンドロビン方式にてホストコンピュータからリードコマンドが発行されると、この先も１Ｍバイト毎にリードコマンドがラウンドロビン方式にて（異なるコントローラに順に）発行されると予想される。
【００４６】
図５に示すＩＯ情報を例に説明すると、各ＩＯ情報の発行元は、「Ｈｏｓｔ」、「コントローラ１１１」、「コントローラ１１２」、「コントローラ１１３」、「Ｈｏｓｔ」、「コントローラ１１１」である。ＩＯ情報は、すべてＬＵＮオーナーであるコントローラ１１４に送られるので、コントローラ１１４に対して「Ｈｏｓｔ」、「コントローラ１１１」、「コントローラ１１２」、「コントローラ１１３」からそれぞれ順にＩＯ情報が送られたことを示す。これは、ホストコンピュータ２００から、「コントローラ１１１」、「コントローラ１１２」、「コントローラ１１３」、「コントローラ１１４」の順に、すなわちラウンドロビン方式でコマンドが発行されたことを意味する。
【００４７】
このように、ラウンドロビン方式でコマンドが発行されていることが判明すると、この先もコマンドがラウンドロビン方式で発行されると予想できる。つまり、次にそのコマンドが発行されるコントローラを予想できる。したがって、次にそのコマンドが発行されると予想されるコントローラに、対象となるデータを配置することにより、当該データが配置されたコントローラにて読み出しが可能となる。
【００４８】
図８は、ＬＵＮオーナーであるコントローラにおけるＩＯ処理部４４によるプリフェッチ動作について説明するフローチャートである。また図９は、ストレージ装置１１０におけるデータの事前配置について説明する図である。図８および図９を参照して、ＩＯ処理部４４によるプリフェッチ動作およびデータの事前配置について説明する。
【００４９】
図３におけるステップＳＴ２０７に示したように、プリフェッチ動作実施と判定されると、ＩＯ処理部４４は、読み出したデータの次の領域に格納されるデータをディスク１２０から読み出すと共に、キャッシュメモリ４２に格納（プリフェッチ）する（ステップＳＴ５０１）。続いて、キャッシュデータ管理部４７は、ＩＯ履歴格納部４６を参照し、プリフェッチされたデータが将来どのコントローラから読まれるかを予想すると共に、予想したコントローラのキャッシュメモリ４２に当該データを、図９に示すように配置する（ステップＳＴ５０２）。
【００５０】
このとき、キャッシュデータ管理部４７は、どのコントローラにプリフェッチしたデータを配置したかを示すキャッシュデータ管理情報を、キャッシュデータ管理情報格納部４８に格納する（ステップＳＴ５０３）。キャッシュデータ管理情報は、該当データが、プリフェッチにより配置されたデータであることを示す情報を含んでもよい。
【００５１】
各コントローラは、引き続きホストコンピュータ２００からリードコマンドを受信すると、自コントローラが備えるキャッシュメモリ４２に、対象となるデータが保持されるか否を判定する。上述したキャッシュデータ管理部４７による予想が当たると、自コントローラが備えるキャッシュメモリ４２に対象となるデータが保持されることになる。この場合、リードコマンドを受信したコントローラは、キャッシュメモリ４２から対象となるデータを読み出すと共に、ホストコンピュータ２００に返却する。
【００５２】
＜プリフェッチ動作によるヒットリードの際の動作について＞
（１）ＬＵＮオーナーであるコントローラがリードコマンドを受信した場合の動作
図１０は、ＬＵＮオーナーであるコントローラ１１４がリードコマンドを受信し、対象となるデータがキャッシュメモリ４２に保持される場合のコマンド等の流れを説明する図である。図３および図１０を参照して、対象となるデータがキャッシュメモリ４２に保持される場合のコントローラ１１４の動作について説明する。
【００５３】
コントローラ１１４のＩＯ処理部４４は、リードコマンドを受信すると（ステップＳＴ２０１）、キャッシュメモリ４２に対象となるデータが保持されるか否かを調べる（ステップＳＴ２０２）。データが保持される場合、ＩＯ処理部４４はそれを読み出すと共に、ホストコンピュータ２００に返却する（ステップＳＴ４０１）。ＩＯ処理部４４は、受信したリードコマンドをＩＯパターン判定部４５に通知する。コントローラ１１４はＬＵＮオーナーであるので（ステップＳＴ４０２においてＹｅｓ）、ＩＯパターン判定部４５は、処理をステップＳＴ２０７に進める。
【００５４】
（２）非ＬＵＮオーナーであるコントローラがリードコマンドを受信した場合の動作
図１１は、非ＬＵＮオーナーであるコントローラがリードコマンドを受信すると共に、対象となるデータがキャッシュメモリ４２に保持される場合を説明する図である。図３および図１１を参照して、対象となるデータがキャッシュメモリ４２に保持される場合の非ＬＵＮオーナーであるコントローラの動作について説明する。
【００５５】
非ＬＵＮオーナーであるコントローラのＩＯ処理部４４は、リードコマンドを受信すると（ステップＳＴ２０１）、キャッシュメモリ４２に対象となるデータが保持されるか否かを調べる（ステップＳＴ２０２）。データが保持される場合、ＩＯ処理部４４はそれを読み出すと共に、ホストコンピュータ２００に返却する（ステップＳＴ４０１）。コントローラはＬＵＮオーナーでないので（ステップＳＴ４０２においてＮｏ）、ＩＯ処理部４４は、キャッシュメモリ４２に保持される、当該返却したデータを削除する（ステップＳＴ４０３）。そして、ＩＯ処理部４４は、受信したコマンド（ＩＯ情報）と、リード処理を実施した旨を、ＬＵＮオーナーに通知する（ステップＳＴ４０４）。
【００５６】
図１２は、上記ステップＳＴ４０４およびステップＳＴ３０３において、ＬＵＮオーナーであるコントローラ１１４が、非ＬＵＮオーナーであるコントローラにより処理済みのＩＯ情報を受信したときの動作を示すフローチャートである。
【００５７】
ＬＵＮオーナーであるコントローラ１１４は、ＩＯ処理部４４において非ＬＵＮオーナーであるコントローラにより処理済みのＩＯ情報を受信すると（ステップＳＴ６０１）、当該ＩＯ情報をＩＯパターン判定部４５に通知する。ＩＯパターン判定部４５は、受け取ったＩＯ情報に基づいて、プリフェッチ動作するか否かの判定を行う（ステップＳＴ６０２）。ＩＯパターン判定部４５がプリフェッチ動作を実施すると判定した場合、すなわち、受信したＩＯ情報に基づいてシーケンシャルリードであると判定した場合、ＩＯ処理部４４は、プリフェッチ動作を実施する（ステップＳＴ６０３）。このとき、ＩＯ処理部４４は、図８に示した動作を実施する。
【００５８】
一方、ＩＯパターン判定部４５は、プリフェッチ動作を実施しないと判定した場合、受信したＩＯ情報をＩＯ履歴格納部４６に登録する（ステップＳＴ６０４）。そして、キャッシュデータ管理部４７は、図３のステップＳＴ４０３においてキャッシュメモリから削除したデータに関するキャッシュデータ管理情報を、キャッシュデータ管理情報格納部４８から削除する（ステップＳＴ６０５）。
【００５９】
図１３は、上記と同様の場合のストレージ装置１１０全体におけるコマンド等の流れを説明する図である。すなわち、４つのコントローラ１１１−１１４を備えたストレージ装置１１０において、各コントローラにホストコンピュータ２００からリードコマンドが発行され、キャッシュメモリ４２に対象となるデータが保持される場合のコマンド等の流れを示す。図３および図１１を参照して上述したように、この場合、各コントローラは、リードコマンドを受信すると、キャッシュメモリ４２から対象となるデータを読み出し、ホストコンピュータ２００に返却する。そして、返却したデータをキャッシュメモリ４２から削除すると共に、ＬＵＮオーナーにリード処理を実施した旨とＩＯ情報とを通知する。
【００６０】
＜ホストコンピュータ２００から発行されるＩＯパターンについて＞
上述したＬＵＮオーナーによるデータの「事前配置」が有用となるためには、ホストコンピュータ２００から発行されるシーケンシャルリードコマンドが、ラウンドロビン方式にて各コントローラで受信される必要がある。
【００６１】
例えば、ビデオデータの読み出し、バックアップデータの読み出しといった業務の特徴から運用上シーケンシャルリードコマンドが多く発行されることが分かっている場合、ホストコンピュータ２００は、予め、ＩＯ要求をラウンドロビン方式にて発行するように構成できる。
【００６２】
また、通常はランダム方式で発行されるが、ときどきシーケンシャルでリードコマンドが発行される場合がある。このような場合、ストレージ装置１１０は、以下のような処理を行う。すなわち、ストレージ装置１１０は、シーケンシャルリードコマンドが発行されていることを検出すると、ホストコンピュータ２００に、「ＵＮＩＴ  ＡＴＴＥＮＴＩＯＮ」コマンドを返却する。ホストコンピュータ２００は、パス制御ソフトウエアにより「ＵＮＩＴ  ＡＴＴＥＮＴＩＯＮ」コマンドを受信すると、発行するコマンドをラウンドロビン方式に切り替える。
【００６３】
ストレージ装置１１０は、受信したコマンドに対してヒットリードであるかミスヒットであるかをホストコンピュータ２００に通知する。ホストコンピュータ２００は、ストレージ装置１１０からヒットリードを通知される間は、ラウンドロビン方式でのコマンド発行を続ける。一方、ストレージ装置１１０は、ミスヒットを多く検出するようになると、別種の「ＵＮＩＴ  ＡＴＴＥＮＴＩＯＮ」コマンドをホストコンピュータ２００に返却する。ホストコンピュータ２００は、パス制御ソフトウエアにより「ＵＮＩＴ  ＡＴＴＥＮＴＩＯＮ」コマンドを受信すると、ラウンドロビン方式でのコマンド発行を中止し、予め設定される優先ホストパスにＩＯ要求を発行する。
【００６４】
あるいは、ホストコンピュータ２００が備えるパス制御ソフトウエアは、プリフェッチ検出機構を備えてもよい。すなわち、ホストコンピュータ２００は、通常は、優先ホストパスにＩＯ要求を発行するが、プリフェッチ検出機構によりストレージ装置１１０にてプリフェッチ動作が実施されたことを検出すると、ラウンドロビン方式でＩＯ要求を発行するように切り替える。これにより、ホストコンピュータ２００からシーケンシャルリードコマンドが発行される場合と、それ以外のＩＯ要求が発行される場合とで、ラウンドロビン方式での発行と、優先ホストパスへの発行とを切り替えることができる。
【００６５】
＜ライトコマンド受信の際の動作＞
図１４は、ＬＵＮオーナーであるコントローラ１１４がライトコマンドを受信したときの動作を説明する図である。コントローラ１１４は、ライトコマンドを受信すると、対象となるデータを書き換える（更新する）。したがって、非ＬＵＮオーナーに当該データが配置されている場合、書き換え前のデータが返却されてしまう虞があるので、非ＬＵＮオーナーにおける当該データを削除する必要がある。
【００６６】
以下、ＬＵＮオーナーであるコントローラ１１４がライトコマンドを受信したときの動作の詳細を説明する。
【００６７】
ＬＵＮオーナーであるコントローラ１１４は、ＩＯ処理部４４においてライトコマンドを受け取ると、キャッシュメモリ４２に領域を確保する。そして、ＩＯ処理部４４は、ホストコンピュータ２００から書き込みデータを受信すると、当該データをキャッシュメモリ４２に書き込む。そして、ＩＯ処理部４４は、キャッシュメモリ４２に書き込まれた書き込みデータにより、ディスク１２０の該当データを更新する。
【００６８】
ここで、当該データが非ＬＵＮオーナーであるコントローラ、例えばコントローラ１１３に配置されていると、コントローラ１１３は、リードコマンドを受信すると旧データを返却してしまう。したがって、コントローラ１１３における当該データは削除される必要がある。
【００６９】
そこで、キャッシュデータ管理部４７は、キャッシュデータ管理情報格納部４８を参照し、当該データが非オーナーであるコントローラ１１３に配置されているか否かを調べる。配置されている場合、ＩＯ処理部４４は、当該データが配置されているコントローラ１１３に対して当該データの削除要求を発行する。削除要求を受けたコントローラ１１３は、該当するデータをキャッシュメモリ４２から削除する。そして、キャッシュデータ管理部４７は、該当データに関するキャッシュデータ管理情報を、キャッシュデータ管理情報格納部４８から削除する。これにより、非ＬＵＮオーナーであるコントローラ１１３は、リードコマンドを受信すると、ＬＵＮオーナーであるコントローラ１１４にそのコマンドを転送するので、ホストコンピュータ２００には、更新後のデータが返却される。
【００７０】
以上のように、本実施形態によれば、複数のコントローラ１１１−１１４を備えるストレージ装置１１０において、ＬＵＮオーナーとなるコントローラ１１４は、ホストコンピュータ２００からのＩＯ要求に関するＩＯ情報を蓄積する。蓄積したＩＯ情報に基づいて、ＩＯ要求の発行パターンを判定し、シーケンシャルリードである場合は、ＬＵＮに格納されるデータをプリフェッチする。そして、コントローラ１１４は、次にそのコマンドが発行されると予想されるコントローラに、対象となるデータを配置する。
【００７１】
上記構成を採用することにより、本実施形態によれば、ＬＵＮが１つしか存在しないストレージシステム１００でも、ホストコンピュータ２００とストレージ装置１１０との間のデータ転送を、優先ホストパスだけでなく他のホストパスを介して実施することができる。また、上述のようなデータの事前配置により、ＬＵＮオーナーであるコントローラ１１４へのリードコマンドの転送を減らすことができるので、リードコマンドを受信したときのストレージ装置１１０における処理量を低減できる。さらに、上記データの事前配置により、特定のコントローラだけでなく他のコントローラのキャッシュメモリも使用できるので、使用可能なキャッシュメモリ容量を増大できる。このように、本実施形態によれば、ストレージ装置１１０のリソースを十分に使用することにより、その性能を向上することができるという効果が得られる。
【００７２】
第２の実施形態
図１５は、本発明の第２の実施形態に係るストレージ装置５０の構成を示すブロック図である。図１５に示すように、ストレージ装置５０は、複数のコントローラを備える。複数のコントローラのうち、論理ボリュームに対する読み書きを制御する第１のコントローラ５１は、入出力処理部５２と、データ管理部５３とを備える。
【００７３】
入出力処理部５２は、論理ボリュームに対してシーケンシャルな読み出し要求を受けた場合、当該論理ボリュームに格納されるデータを先読みする。データ管理部５３は、先読みされたデータへの読み出し要求を、複数のコントローラのうちいずれが受けるかを予想すると共に、当該予想したコントローラに、先読みしたデータを配置する。
【００７４】
なお、第１のコントローラは、上記第１の実施形態におけるＬＵＮオーナーであるコントローラに相当し、入出力処理部は、同じくＩＯ処理部、ＩＯパターン判定部に相当する。また、データ管理部は、キャッシュデータ管理部に相当する。
【００７５】
上記構成を採用することにより、本第２の実施形態によれば、リソースを十分に使用することによりストレージ装置の性能を向上することができるという効果が得られる。
【００７６】
なお、図２等に示したコントローラの各部は、図１６に例示するハードウエア資源において実現される。すなわち、図１６に示す構成は、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、外部接続インタフェース１３および記憶媒体１４を備える。コントローラのＣＰＵ１０は、ＲＯＭ１２または記憶媒体１４に記憶された各種ソフトウエア・プログラム（コンピュータ・プログラム）を、ＲＡＭ１１に読み出して実行することにより、コントローラの全体的な動作を司る。すなわち、上記各実施形態において、ＣＰＵ１０は、ＲＯＭ１２または記憶媒体１４を適宜参照しながら、コントローラが備える各機能（各部）を実行するソフトウエア・プログラムを実行する。
【００７７】
また、上述した各実施形態では、図２等に示したコントローラにおけるＩＯ処理部４４、ＩＯパターン判定部４５、キャッシュデータ管理部４７を、図１６に示すＣＰＵ１０が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、図２等に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
【００７８】
また、各実施形態を例に説明した本発明は、コントローラに対して、その説明において参照したフローチャート（図３、図８および図１２）の機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、ＣＰＵ１０がＲＡＭ１１に読み出して実行することによって達成される。
【００７９】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【産業上の利用可能性】
【００８０】
本発明は、例えば、ホストコンピュータと、ディスク等の記憶装置との間に複数のアクセスパスを存在させるようなストレージ装置等に適用できる。
【符号の説明】
【００８１】
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  外部接続インタフェース
１４  記憶媒体
４１  ホストポート
４２  キャッシュメモリ
４３  ディスクポート
４４  ＩＯ処理部
４５  ＩＯパターン判定部
４６  ＩＯ履歴格納部
４７  キャッシュデータ管理部
４８  キャッシュデータ管理情報格納部
１００  ストレージシステム
１１０  ストレージ装置
１１１、１１２、１１３、１１４  コントローラ
１２０  ディスク
２００  ホストコンピュータ
【図１】
0005967054.tif 000002
【図２】
0005967054.tif 000003
【図３】
0005967054.tif 000004
【図４】
0005967054.tif 000005
【図５】
0005967054.tif 000006
【図６】
0005967054.tif 000007
【図７】
0005967054.tif 000008
【図８】
0005967054.tif 000009
【図９】
0005967054.tif 000010
【図１０】
0005967054.tif 000011
【図１１】
0005967054.tif 000012
【図１２】
0005967054.tif 000013
【図１３】
0005967054.tif 000014
【図１４】
0005967054.tif 000015
【図１５】
0005967054.tif 000016
【図１６】
0005967054.tif 000017
【図１７】
0005967054.tif 000018