(57)【特許請求の範囲】
【請求項１】
複数の記憶メディアと、
前記記憶メディアに対するデータの入出力を制御するストレージコントローラと
を備え、
前記ストレージコントローラは、
接続されるホスト計算機に論理ボリュームを提供し、前記ホスト計算機から送信される前記論理ボリューム内の複数の記憶領域をリード先として指定した第１のリードコマンドを受信した場合に、リード先として指定された当該論理ボリューム内の前記記憶領域ごとに、当該記憶領域に書き込まれたデータが実際に格納されている前記記憶メディア及び当該記憶メディア内のアドレスをそれぞれ特定し、
特定した前記記憶メディア内の特定した一部又は全部の各前記アドレスをそれぞれリード先として指定した第２のリードコマンドを特定した前記記憶メディアごとにそれぞれ作成すると共に、作成した各前記第２のリードコマンドをそれぞれ対応する前記記憶メディアにそれぞれ送信し、
前記第２のリードコマンドを受信した各前記記憶メディアは、
受信した前記第２のリードコマンドにおいて指定された各前記アドレスからデータをそれぞれ読み出して前記ストレージコントローラに送信し、
前記ストレージコントローラは、
前記第２のリードコマンドを送信した各前記記憶メディアからそれぞれ送信される、前記第２のリードコマンドにおいて指定した各前記アドレスからそれぞれ読み出されたデータを前記ホスト計算機に転送する
ことを特徴とするストレージ装置。
【請求項２】
前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
前記第１のリードコマンドにおいてリード先として指定された前記論理ボリューム内の前記記憶領域のうち、当該記憶領域に書き込まれたデータが前記キャッシュ領域に格納されていない各前記記憶領域とそれぞれ対応する前記記憶メディア内の前記アドレスをリード先として指定した前記第２のリードコマンドを作成する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
定期的又は不定期に、前記キャッシュ領域に記憶された前記データのうちの前記記憶メディアに格納されていない各データについて、当該データを格納すべき前記記憶メディア及び当該記憶メディア内の記憶領域をそれぞれ検出し、
検出結果に基づいて、前記キャッシュ領域から前記記憶メディアに格納すべき各データのライト先をそれぞれ指定した第１のライトコマンドを前記記憶メディアごとにそれぞれ作成し、作成した前記第１のライトコマンドと、当該第１のライトコマンドにおいてライト先を指定した各データとを、それぞれ対応する前記記憶メディアに送信する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記論理ボリュームは、仮想的な論理ボリュームであり、
前記ストレージコントローラは、
前記複数の記憶メディアの記憶領域をプールとして管理し、
前記論理ボリュームに対する前記ホスト計算機からのライト要求に応じて、前記プールから記憶領域を当該論理ボリュームに動的に割り当て、割り当てた前記記憶領域にライト対象のデータを格納する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項５】
前記ストレージコントローラは、
同一の前記第１のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項４に記載のストレージ装置。
【請求項６】
前記ストレージコントローラは、
同一の前記第１のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一種別の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項４に記載のストレージ装置。
【請求項７】
複数の記憶メディアと、前記記憶メディアに対するデータの入出力を制御するストレージコントローラとを有するストレージ装置において実行される前記記憶メディアに対するデータ入出力方法において、
前記ストレージコントローラが、接続されるホスト計算機に論理ボリュームを提供し、前記ホスト計算機から送信される前記論理ボリューム内の複数の記憶領域をリード先として指定した第１のリードコマンドを受信した場合に、リード先として指定された当該論理ボリューム内の前記記憶領域ごとに、当該記憶領域に書き込まれたデータが実際に格納されている前記記憶メディア及び当該記憶メディア内のアドレスをそれぞれ特定する第１のステップと、
前記ストレージコントローラが、特定した前記記憶メディア内の特定した一部又は全部の各前記アドレスをそれぞれリード先として指定した第２のリードコマンドを特定した前記記憶メディアごとにそれぞれ作成すると共に、作成した各前記第２のリードコマンドをそれぞれ対応する前記記憶メディアにそれぞれ送信する第２のステップと、
前記第２のリードコマンドを受信した各前記記憶メディアが、受信した前記第２のリードコマンドにおいて指定された各前記アドレスからデータをそれぞれ読み出して前記ストレージコントローラに送信する第３のステップと、
前記ストレージコントローラが、前記第２のリードコマンドを送信した各前記記憶メディアからそれぞれ送信される、前記第２のリードコマンドにおいて指定した各前記アドレスからそれぞれ読み出されたデータを前記ホスト計算機に転送する第４のステップと
を備えることを特徴とするデータ入出力方法。
【請求項８】
前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
前記第２のステップにおいて、前記第１のリードコマンドにおいてリード先として指定された前記論理ボリューム内の前記記憶領域のうち、当該記憶領域に書き込まれたデータが前記キャッシュ領域に格納されていない各前記記憶領域とそれぞれ対応する前記記憶メディア内の前記アドレスをリード先として指定した前記第２のリードコマンドを作成する
ことを特徴とする請求項７に記載のデータ入出力方法。
【請求項９】
前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
定期的又は不定期に、前記キャッシュ領域に記憶された前記データのうちの前記記憶メディアに格納されていない各データについて、当該データを格納すべき前記記憶メディア及び当該記憶メディア内の記憶領域をそれぞれ検出し、
検出結果に基づいて、前記キャッシュ領域から前記記憶メディアに格納すべき各データのライト先をそれぞれ指定した第１のライトコマンドを前記記憶メディアごとにそれぞれ作成し、作成した前記第１のライトコマンドと、当該第１のライトコマンドにおいてライト先を指定した各データとを、それぞれ対応する前記記憶メディアに送信する
ことを特徴とする請求項７に記載のデータ入出力方法。
【請求項１０】
前記論理ボリュームは、仮想的な論理ボリュームであり、
前記ストレージコントローラは、
前記複数の記憶メディアの記憶領域をプールとして管理し、
前記論理ボリュームに対する前記ホスト計算機からのライト要求に応じて、前記プールから記憶領域を当該論理ボリュームに動的に割り当て、割り当てた前記記憶領域にライト対象のデータを格納する
ことを特徴とする請求項７に記載のデータ入出力方法。
【請求項１１】
前記ストレージコントローラは、
同一の前記第１のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項１０に記載のデータ入出力方法。
【請求項１２】
前記ストレージコントローラは、
同一の前記第１のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一種別の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項１０に記載のデータ入出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びデータ入出力方法に関し、特に、スキャッタギャザー（Scatter-Gather）コマンドに対応したストレージ装置に適用して好適なものである。
【背景技術】
【０００２】
スキャッタギャザーＩ／Ｏコマンドは、標準化活動中のＳＣＳＩ（Small  Computer  System  Interface）コマンドであり、Ｉ／Ｏ（Input/Output）コマンドとしてリードコマンドの一種であるリードギャザー（Read  Gather）コマンドと、ライトコマンドの一種であるライトスキャッタ（Write  Scatter）コマンドがある。【０００３】
これらリードギャザーコマンド及びライトスキャッタコマンドは、パラメータリストと共に送信先に送信される。パラメータリストは、非連続な複数の記憶領域にそれぞれ格納されているリード／ライト対象のデータについて、これらデータが格納されている又は格納すべき記憶領域の先頭アドレス及びこれらデータのデータ長をリスト化したものである。【０００４】
そして、これらリードギャザーコマンド及びライトスキャッタコマンドのうち、例えばリードギャザードコマンドを受信したストレージ装置は、パラメータリストにおいて指定された各記憶領域から指定されたデータ長のデータをそれぞれ読み出し、読み出したすべてのデータを纏めて１回のデータ転送でリードギャザーコマンドの送信元に送信する。【０００５】
このようなスキャッタギャザーコマンドを利用することによって、非連続の複数の記憶領域に対するリード／ライト要求を１回のコマンド送信で行うことができるため、個々の記憶領域ごとにリードコマンドやライトコマンドをストレージ装置に送信する場合と比べて、ストレージ装置の処理負荷を低減することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１０／１３１３７３号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、リードギャザーコマンドを受信したストレージ装置のストレージコントローラは、まず、パラメータリストにおいて指定された各データをキャッシュメモリ上で探索し、キャッシュミスしたデータについて、対応する記憶メディアにリードコマンドを発行することにより、そのデータをその記憶メディアから読み出す。そしてストレージコントローラは、このような記憶メディアからのデータの読み出しを、キャッシュミスしたデータについてそれぞれ行うことになる。【０００８】
このためリードギャザーコマンドを受信したストレージ装置側では、このようなストレージコントローラによる複数回に渡る記憶メディアからのデータのリード処理の処理負荷がネックとなって、例え記憶メディアとして高性能な記憶メディアを利用したとしても、ストレージ装置全体の応答性能として十分な応答性能を得ることが難しい問題があった。【０００９】
本発明は以上の点を考慮してなされたもので、ストレージ装置全体としての応答性能を向上させ得るストレージ装置及びデータ入出力方法を提案しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため本発明においては、ストレージ装置において、接続される複数の記憶メディアと、前記記憶メディアに対するデータの入出力を制御するストレージコントローラとを設け、前記ストレージコントローラが、ホスト計算機に論理ボリュームを提供し、前記ホスト計算機から送信される前記論理ボリューム内の複数の記憶領域をリード先として指定した第１のリードコマンドを受信した場合に、リード先として指定された当該論理ボリューム内の前記記憶領域ごとに、当該記憶領域に書き込まれたデータが実際に格納されている前記記憶メディア及び当該記憶メディア内のアドレスをそれぞれ特定し、特定した前記記憶メディア内の特定した一部又は全部の各前記アドレスをそれぞれリード先として指定した第２のリードコマンドを特定した前記記憶メディアごとにそれぞれ作成すると共に、作成した各前記第２のリードコマンドをそれぞれ対応する前記記憶メディアにそれぞれ送信し、前記第２のリードコマンドを受信した各前記記憶メディアが、受信した前記第２のリードコマンドにおいて指定された各前記アドレスからデータをそれぞれ読み出して前記ストレージコントローラに送信し、前記ストレージコントローラが、前記第２のリードコマンドを送信した各前記記憶メディアからそれぞれ送信される、前記第２のリードコマンドにおいて指定した各前記アドレスからそれぞれ読み出されたデータを前記ホスト計算機に転送するようにした。【００１１】
以上のストレージ装置によれば、ストレージコントローラが記憶メディア内の複数の記憶領域に対するリードを１回のコマンド発行により行うことができる。
【発明の効果】
【００１２】
本発明によれば、リード処理に関するストレージコントローラの処理負荷を低減することができ、ストレージ装置全体としての応答性能を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明によるリード処理の流れの説明に供するシーケンス図である。
【図２】本発明によるライト処理の流れの説明に供するシーケンス図である。
【図３】第１の実施の形態による計算機システムの概略構成を示すブロック図である。
【図４】第１の実施の形態のメモリのローカルメモリ領域に格納された各種情報及び各種プログラムの説明に供する概念図である。
【図５】キャッシュ管理情報の構成を示す概念図である。
【図６】第１の実施の形態によるマップ情報の構成を示す概念図である。
【図７】スキャッタギャザーコマンドのコマンドフォーマットを示す概念図である。
【図８】パラメータリストのフォーマットを示す概念図である。
【図９】ＬＢＡレンジディスクリプタの構成を示す概念図である。
【図１０】リードギャザードパラメータデータの構成を示す概念図である。
【図１１】第１の実施の形態によるリード処理の処理手順を示すフローチャートである。
【図１２】第１の実施の形態によるメディア及びアドレス特定処理の処理手順を示すフローチャートである。
【図１３】第１の実施の形態によるライト処理の処理手順を示すフローチャートである。
【図１４】第１の実施の形態によるデステージング処理の処理手順を示すフローチャートである。
【図１５】第１の実施の形態によるメディアアドレス検出処理の処理手順を示すフローチャートである。
【図１６】第２〜第４の実施の形態による計算機システムの概略構成を示すブロック図である。
【図１７】仮想化機能の説明に供する概念図である。
【図１８】第２の実施の形態のメモリのローカルメモリ領域に格納された各種情報及び各種プログラムの説明に供する概念図である。
【図１９】第２〜第４の実施の形態によるマップ情報の構成を示す概念図である。
【図２０】第２〜第４の実施の形態によるメディア及びアドレス特定処理の処理手順を示すフローチャートである。
【図２１】第２〜第４の実施の形態によるメディアアドレス検出処理の処理手順を示すフローチャートである。
【図２２】第３及び第４の実施の形態のメモリのローカルメモリ領域に格納された各種情報及び各種プログラムの説明に供する概念図である。
【図２３】第１のデータ再配置処理の処理手順を示すフローチャートである。
【図２４】第２のデータ再配置処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下図面について、本発明の一実施の形態を詳述する。
【００１５】
（１）第１の実施の形態
（１−１）本実施の形態による計算機システムの概要
図１及び図２は、第１の実施の形態による計算機システム１において実行されるリード処理（図１）と、ライト処理及びデステージング処理（図２）との流れの概要を示す。本計算機システム１は、ストレージ装置３において、データを記憶メディア５からストレージコントローラ４内のキャッシュ領域に読み出すステージング時や、当該キャッシュ領域に格納されているデータを対応する記憶メディア５に書き込むデステージング時に、ストレージコントローラ４が記憶メディア５内の非連続な複数の記憶領域に分散して格納された又は格納すべきデータを、スキャッタギャザーコマンドを利用して一括してその記憶メディア５にリード／ライトする点を特徴とする。
【００１６】
なお、図１及び図２は、ストレージ装置３が備える記憶メディア５が「メディア１」及び「メディア２」の２つである場合の例であるが、記憶メディア５が１つだけの場合や、記憶メディア５が３つ以上存在する場合も処理の流れは同様である。また図１及び図２では、ホスト計算機２からのデータを１つの記憶メディア５が提供する記憶領域にリード／ライトする場合の例であるが、複数の記憶メディア５によりＲＡＩＤ（Redundant Arrays of Independent Disks）グループを構成し、当該ＲＡＩＤグループが提供する記憶領域にホスト計算機２からのデータをリード／ライトする場合も処理の流れは同様である。
【００１７】
まず、図１を参照して、本計算機システム１におけるリード処理の流れについて説明する。ホスト計算機２は、ストレージ装置３内の非連続な複数の記憶領域からデータを一括して読み出す場合、これらの記憶領域をリード先としてそれぞれ指定したパラメータリストをリードギャザーコマンドと共にストレージ装置３に送信する（ＳＰ１）。
【００１８】
このリードギャザーコマンド及びパラメータリストを受信したストレージ装置３のストレージコントローラ４は、パラメータリストにおいて指定された各データをキャッシュ領域上で探索し（ＳＰ２）、キャッシュ領域に格納されていないデータ（キャッシュヒットしなかったデータ）については、そのデータが格納されている記憶メディア５及び当該記憶メディア５上のアドレスをそれぞれ特定する（ＳＰ３）。
【００１９】
またストレージコントローラ４は、このようにして記憶メディア５及び当該記憶メディア５上のアドレスを特定した各データを、そのデータが格納されている記憶メディア５ごとに分類する（ＳＰ４）。そしてストレージコントローラ４は、分類結果に基づいて、記憶メディア５ごとのリードギャザーコマンド及びパラメータリストを生成し、生成したリードギャザーコマンド及びパラメータリストをそれぞれ対応する記憶メディア５に送信する（ＳＰ５Ａ，ＳＰ５Ｂ）。
【００２０】
リードギャザーコマンド及びパラメータリストを受信した各記憶メディア５は、それぞれそのパラメータリストにおいて指定された各記憶領域からデータをそれぞれ読み出し、読み出した各データを一括してストレージコントローラ４に転送する（ＳＰ６Ａ，ＳＰ６Ｂ）。
【００２１】
ストレージコントローラ４は、記憶メディア５から転送されてきたリード対象のデータを受信すると、このデータをキャッシュ領域に順次格納する（ＳＰ７Ａ，ＳＰ７Ｂ）。またストレージコントローラ４は、すべての記憶メディア５からすべてのデータを受信し終えると、ステップＳＰ２においてキャッシュ領域上で検出したリード対象のデータ（キャッシュヒットしたデータ）と、上述のように各記憶メディア５から読み出したリード対象のデータとを上述のリードギャザーコマンドの送信元のホスト計算機２に一括して送信する（ＳＰ８）。このようなストレージコントローラ４からホスト計算機２へのデータ転送の完了により、リード処理が終了する。
【００２２】
次に、図２を参照して、本計算機システム１におけるライト処理及びデステージング処理の流れについて説明する。ホスト計算機２は、ストレージ装置３にデータを書き込む際、ライトコマンドをストレージ装置３に送信する（ＳＰ１０）。なお、このときホスト計算機２からストレージ装置３に送信されるライトコマンドはライトスキャッタコマンド及び通常のライトコマンドのいずれであってもよい。
【００２３】
ライトコマンドを受信したストレージ装置３のストレージコントローラ４は、必要な容量の記憶領域をキャッシュメモリ上に確保し（ＳＰ１１）、その後、データの転送開始を要求する通知（以下、これをデータ転送開始通知と呼ぶ）をホスト計算機２に送信する（ＳＰ１２）。かくして、データ転送開始通知を受信したホスト計算機２は、データ転送を開始して、ライト対象のデータを順次ストレージ装置３に転送する（ＳＰ１３）。
【００２４】
ストレージコントローラ４は、かかるライト対象のデータを受信すると、これをキャッシュ領域に順次格納する（ＳＰ１４）。そしてストレージコントローラ４は、やがてすべてのライト対象のデータを受信し、これらのデータをすべてキャッシュ領域に格納し終えると、データの格納が完了した旨の通知（以下、これを格納完了通知と呼ぶ）をホスト計算機２に送信する（ＳＰ１５）。これによりホスト計算機２及びストレージ装置３間におけるライト対象のデータの転送処理が完了する。
【００２５】
一方、ストレージコントローラ４は、キャッシュ領域に格納されているデータのうち、記憶メディア５にデステージングされていないデータを、そのデータについてのライトコマンドにおいて指定された記憶メディア５内の当該ライトコマンドにおいて指定された記憶領域に書き込むデステージング処理を定期的に実行する（ＳＰ１６Ａ〜ＳＰ２０Ａ，ＳＰ１６Ｂ〜ＳＰ２０Ｂ）。
【００２６】
デステージング処理において、ストレージコントローラ４は、そのとき対象とする記憶メディア５を１つ選択し、キャッシュ領域に格納されているデータの中から、その記憶メディアに書き込むべきデータであって、その記憶メディア５に未だ書き込まれていないデータを検索する（ＳＰ１６Ａ）。
【００２７】
そしてストレージコントローラ４は、かかる検索により検出したすべてのデータについて、そのデータを格納すべきアドレスと、そのデータのデータ長とを指定したライトスキャッタコマンド及びパラメータリストを生成し、生成したライトスキャッタコマンド及びパラメータリストを、ステップＳＰ１６Ａにおいて選択した記憶メディア５に送信する（ＳＰ１７Ａ）。
【００２８】
また、このライトスキャッタコマンド及びパラメータリストを受信した記憶メディア５は、データ受信の準備が完了するとデータ転送開始通知をストレージコントローラ４に送信する（ＳＰ１８Ａ）。かくして、このデータ転送開始通知を受信したストレージコントローラ４は、データ転送を開始して、パラメータリストにおいて格納先のアドレスを指定したすべてのデータをキャッシュ領域から順次読み出して当該記憶メディア５に一括して転送する（ＳＰ１９Ａ）。
【００２９】
記憶メディア５は、これらのデータを受信すると、受信した各データをそれぞれパラメータリストにおいて指定されたアドレスに格納する。そして記憶メディア５は、やがてパラメータリストにおいて指定されたすべてのデータを受信し、これらのデータをすべてパラメータリストにおいて指定されたアドレスにそれぞれ格納し終えると、格納完了通知をストレージコントローラ４に送信する（ＳＰ２０Ａ）。これにより、その記憶メディア５に対するデステージング処理が完了する。
【００３０】
そしてストレージコントローラ４は、他の記憶メディア５についてもステップＳＰ１６Ａ〜ステップＳＰ２０Ａと同様の処理を、記憶メディア５ごとに順番に又はすべての記憶メディア５について並列的に実行する（ＳＰ１６Ｂ〜ＳＰ２０Ｂ）。
【００３１】
このように本実施の形態による計算機システム１では、ストレージ装置３内におけるストレージコントローラ４及び記憶メディア５間におけるデータの転送にも近年技術開発が盛んに行われているスキャッタギャザーコマンド（ギャザーリードコマンド及びライトスキャッタコマンド）を使用するため、ストレージコントローラ４及び記憶メディア５間におけるデータ転送時におけるオーバヘッドをさらに低減することができる。かくするにつきストレージコントローラ４の処理負荷を低減して、ストレージ装置３全体としての応答性能をさらに向上することができる。
【００３２】
以下、このような機能を有する本実施の形態による計算機システム１の詳細について説明する。
【００３３】
（１−２）本実施の形態による計算機システムの構成
図３は、本実施の形態による計算機システム１を示す。本計算機システム１では、ホスト計算機２及びストレージ装置３がＳＣＳＩネットワークＮＷを介して接続されている。
【００３４】
ホスト計算機２は、例えばＣＰＵ（Central  Processing  Unit）やメモリなどの情報処理資源を備えたコンピュータ装置であり、パーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。ホスト計算機２には、ストレージ装置３に対するデータのリード要求やライト要求を発行するアプリケーション１０と、アプリケーション１０から発行されたリード要求やライト要求をＳＣＳI規格に応じたＩ／Ｏコマンド（リードコマンド、ライトコマンド、リードギャザーコマンド又はライトスキャッタコマンドなど）に変換してストレージ装置３に送信するＯＳ（Operating  System）・ドライバ１１となどのソフトウェアが実装される。
【００３５】
ストレージ装置３は、１又は複数の記憶メディア５と、記憶メディア５に対するデータの入出力（リード／ライト）を制御するストレージコントローラ４とを備えて構成される。
【００３６】
記憶メディア５は、ＳＡＳ（Serial  Attached  SCSI）ディスク、ＳＡＴＡ（Serial  AT  Attachment）ディスク等のハードディスク装置や、フラッシュメモリやＳＳＤ（Solid  State  Drive）等の半導体メモリなどから構成される。同一種別の複数の記憶メディア５が１つのＲＡＩＤグループＲＧとして管理され、１つのＲＡＩＤグループＲＧを構成する各記憶メディア５が提供する物理的な記憶領域上に１又は複数の論理的なボリューム（以下、これを論理ボリュームと呼ぶ）ＶＯＬが設定される。そして、ホスト計算機２からのデータは、この論理ボリュームＶＯＬ内に所定大きさのブロック（以下、これを論理ブロックと呼ぶ）を単位として格納される。
【００３７】
論理ボリュームＶＯＬには、固有の識別子（以下、これをボリューム番号と呼ぶ）が付与される。本実施の形態の場合、論理ボリュームＶＯＬに対するデータの入出力は、データをリード／ライトする論理ボリュームＶＯＬ内の先頭のＬＢＡ（以下、これを先頭ＬＢＡと呼ぶ）と、リード／ライトすべきデータのデータ長とを指定して行われる。
【００３８】
なお本実施の形態の場合、記憶メディア５としては、上述のスキャッタギャザーコマンドに対応したものが適用される。従って、記憶メディア５は、ストレージコントローラ４からリードギャザーコマンド及びパラメータリストが与えられた場合には、そのパラメータリストにおいて指定された各記憶領域からそれぞれデータを読み出してストレージコントローラ４に転送する一方、ストレージコントローラ４からライトスキャッタコマンド、パラメータリスト及びライト対象のデータが与えられた場合には、そのパラメータリストにおいて指定された各記憶領域にそれぞれ対応するライト対象のデータを格納する。
【００３９】
ストレージコントローラ４は、ホストバスアダプタ（ＨＢＡ：Host  Bus  Adapter）１２、チップセット１３、メモリ１４、マイクロプロセッサ（ＭＰ：Microprocessor）１５及び複数のディスクアダプタ１６などを備えて構成される。
【００４０】
ホストバスアダプタ１２は、ホスト計算機２との通信時におけるプロトコル制御を行う機能を有するインタフェースであり、ホスト計算機２との間で各種コマンドやデータを送受する。チップセット１３は、ストレージコントローラ４内の各要素間でのデータ転送を制御する機能を有する。ホストバスアダプタ１２、メモリ１４、マイクロプロセッサ１５及びディスクアダプタ１６間におけるデータの転送は、このチップセット１３を介して行われる。
【００４１】
メモリ１４は、例えばダイナミック・ランダム・アクセス・メモリ(ＤＲＡＭ)などの半導体メモリから構成され、記憶領域がキャッシュメモリ領域１４Ａと、ローカルメモリ領域１４Ｂとに分割されて使用される。そして、記憶メディア５に入出力するデータや、ホスト計算機２からのコマンドがキャッシュメモリ領域１４Ａに一時的に格納され、ストレージ装置３の起動時等に特定の記憶メディア５から読み出された各種プログラムや各種データがローカルメモリ領域１４Ｂに格納される。
【００４２】
マイクロプロセッサ１５は、ストレージコントローラ４全体の動作制御を司る機能を有する。マイクロプロセッサ１５は、メモリ１４のキャッシュメモリ領域１４Ａに格納されたホスト計算機２からのコマンドと、メモリ１４のローカルメモリ領域１４Ｂに格納された制御プログラム及び各種データとに基づいて必要な演算処理や制御処理を実行する。
【００４３】
ディスクアダプタ１６は、各記憶メディア５との通信を制御するインタフェースであり、各記憶メディア５とＳＣＳIケーブル又はＳＣＳＩネットワーク等の通信路１７を介して接続される。ディスクアダプタ１６は、ＳＡＳ規格による通信プロトコルに従って記憶メディア５との間の通信を制御する。
【００４４】
（１−３）各種プログラム及び各種情報の構成
上述のように本計算機システム１は、ストレージ装置３において、記憶メディア５に格納されているデータをストレージコントローラ４内のメモリ１４のキャッシュメモリ領域１４Ａにステージングする際や、当該キャッシュメモリ領域１４Ａから記憶メディア５にデータをデステージングする際に、スキャッタギャザーコマンドを利用してデータを記憶メディア５に一括してリード／ライトするステージング／デステージング機能がストレージ装置３に搭載されている点を特徴とする。
【００４５】
このようなステージング／デステージング機能を実現するための手段として、ストレージ装置３におけるメモリ１４のローカルメモリ領域１４Ｂには、図４に示すように、キャッシュ管理情報２０、マップ情報２１及び制御プログラム群２２が格納されている。
【００４６】
このうちキャッシュ管理情報２０は、メモリ１４のキャッシュメモリ領域１４Ａに一時的に格納されているデータを管理するために利用される情報であり、図５に示すように、キャッシュメモリアドレス欄２０Ａ、ボリューム番号欄２０Ｂ、先頭ＬＢＡ欄２０Ｃ、属性欄２０Ｄ及び状態欄２０Ｅを備えるテーブル状のデータ構成を有する。
【００４７】
そしてキャッシュメモリアドレス欄２０Ａには、メモリ１４のキャッシュメモリ領域１４Ａ内の各アドレス（以下、これをキャッシュメモリアドレスと呼ぶ）がそれぞれ格納される。またボリューム番号欄２０Ｂには、対応するキャッシュメモリアドレスに格納されたデータが書き込まれた論理ボリュームＶＯＬのボリューム番号が格納され、先頭ＬＢＡ欄２０Ｃには、そのデータが書き込まれたその論理ボリュームＶＯＬ内の記憶領域の先頭ＬＢＡが格納される。
【００４８】
属性欄２０Ｄには、対応するキャッシュメモリアドレスに格納されているデータの属性が格納される。データの属性としては、ホスト計算機２によりライトされたユーザデータ（「Data」）と、当該ユーザデータに基づき生成されたパリティデータ（「Parity」）などがある。
【００４９】
状態欄２０Ｅには、対応するキャッシュメモリアドレスに格納されているデータの状態が格納される。データの状態としては、そのデータがデステージング済みのデータ（以下、これをクリーンデータと呼ぶ）であることを表すクリーン（「Clean」）と、そのデータがデステージングされていないデータ（以下、これをダーティデータと呼ぶ）であることを表す（「Dirty」）となどがある。
【００５０】
従って、図５の例の場合、例えばメモリ１４の「0x00000000」というキャッシュメモリアドレスに格納されているデータは、「０」というボリューム番号の論理ボリュームＶＯＬにおける先頭ＬＢＡが「0x02009101」の記憶領域に格納されたユーザデータ（「Data」）であり、既にデステージング済み（「Clean」）であることが示されている。
【００５１】
なおキャッシュ管理情報２０において、メモリ１４のデータが格納されていないキャッシュメモリアドレスについては、情報が存在しないことを表す「Null」がボリューム番号欄２０Ｂ、先頭アドレス欄２０Ｃ及び属性欄２０Ｄにそれぞれ格納されると共に、「Free」という情報が状態欄２０Ｅに格納される。
【００５２】
マップ情報２１は、各論理ボリュームＶＯＬの構成を管理するために利用される情報であり、図６に示すように、ボリューム番号欄２１Ａ、構成欄２１Ｂ及びメディア番号欄２１Ｃを備えるテーブル状のデータ構成を有する。
【００５３】
そしてボリューム番号欄２１Ａには、ストレージコントローラ４がホスト計算機２に提供している各論理ボリュームＶＯＬのボリューム番号が格納され、構成欄２１Ｂには、対応する論理ボリュームＶＯＬを提供するＲＡＩＤグループＲＧのＲＡＩＤ構成を表す情報が格納される。またメディア番号欄２１Ｃには、対応するＲＡＩＤグループＲＧを構成するすべての記憶メディア５の識別番号（記憶メディア番号）が格納される。
【００５４】
従って、図６の例の場合、例えば「０」というボリューム番号の論理ボリュームＶＯＬは、それぞれ「０」、「１」、「２」及び「３」という記憶メディア番号がそれぞれ付与された４つの記憶メディア５から構成される「ＲＡＩＤ１０」というＲＡＩＤ構成のＲＡＩＤグループＲＧが提供する記憶領域であることが示されている。また図６では、そのＲＡＩＤグループＲＧは、データを２つの記憶メディア５に分散して格納すると共に、これをミラーリングした構成（「2D＋2D」）であることも示されている。
【００５５】
なお、マップ情報２１において、定義されていない論理ボリュームＶＯＬのボリューム番号のエントリ（行）については、構成欄２１Ｂ及びメディア番号欄２１Ｃにそれぞれ情報が存在しないことを意味する「null」が格納される。
【００５６】
一方、制御プログラム群２２は、図４に示すように、リード処理プログラム２３、ライト処理プログラム２４及びデステージング処理プログラム２５を備えて構成される。
【００５７】
リード処理プログラム２３は、リードギャザーコマンドを含むリードコマンドがホスト計算機２から送信されてきたときに起動されるプログラムであり、ライト処理プログラム２４は、ライトスキャッタコマンドを含むライトコマンドがホスト計算機２から送信されてきたときに起動されるプログラムである。
【００５８】
またデステージング処理プログラム２５は、メモリ１４のキャッシュメモリ領域１４Ａに格納されているダーティデータを対応する記憶メディア５にデステージングする際に起動されるプログラムである。
【００５９】
これらリード処理プログラム２３、ライト処理プログラム２４及びデステージング処理プログラム２５のより詳細な機能については、後述する。
【００６０】
（１−４）スキャッタギャザーコマンド等の構成
ここで、ホスト計算機２及びストレージ装置３間、及びストレージ装置３のストレージコントローラ４及び記憶メディア５間においてやり取りされるスキャッタギャザーコマンド（リードギャザーコマンド及びライトスキャッタコマンド）のコマンドフォーマットについて説明する。
【００６１】
図７は、スキャッタギャザーコマンドのコマンドフォーマットを示す。この図７に示すように、スキャッタギャザーコマンドの０バイト目には、このスキャッタギャザーコマンドのオペレーションコード（「OPERATION CODE」）が格納される。ここで用いられるオペレーションコードは、そのスキャッタギャザーコマンドがリードギャザーコマンド及びライトスキャッタコマンドのいずれであるかを表すコードである。
【００６２】
またスキャッタギャザーコマンドの４〜７バイト目には、このスキャッタギャザーコマンドと共にコマンド送信先に送信されるパラメータリスト（図８）に格納されている後述のＬＢＡレンジディスクリプタ（「LBA range descriptor」）の数が格納され、スキャッタギャザーコマンドの８〜１１バイト目には、このスキャッタギャザーコマンドによりリード／ライトしようとしている各データのデータ長の合計値が格納される。
【００６３】
なおリード／ライト対象の論理ボリュームの指定は、ネットワークのトランスポート層においてその論理ボリューム番号（ＬＵＮ：Logical Unit Number）を指定することにより行われる。具体的には、ＳＣＳＩネットワークＮＷ（図１）における通信プロトコルとしてファイバチャネルプロトコルが採用されている場合には、そのファイバチャネルプロトコルにおけるＬＵＮフィールドに対象とする論理ボリュームのＬＵＮが格納されることにより行われ、ＳＣＳＩネットワークＮＷにおける通信プロトコルとしてｉＳＣＳＩプロトコルが採用されている場合には、ＢＨＳ（Basic Header Segment）部に格納される（「http://tools.ietf.org/html/rfc3720#page-116」の「10.2.1」のByte  8を参照）。
【００６４】
図８は、上述のスキャッタギャザーコマンド（図７）と共にコマンド送信元からコマンド送信先に送信されるパラメータリストのフォーマットを示す。この図８に示すように、パラメータリストの３２バイト目以降には、それぞれ３２バイトのデータサイズを有するＬＢＡレンジディスクリプタ（「LBA  range  descriptor」）が、そのスキャッタギャザーコマンドによりリード／ライトしようとしているデータ数と同じ数だけ格納される。
【００６５】
図９は、かかるパラメータリスト（図８）に格納されたＬＢＡレンジディスクリプタ（「LBA range descriptor」）の具体的な内容を示す。ＬＢＡレンジディスクリプタは、スキャッタギャザーコマンドにより論理ボリュームＶＯＬ内又は記憶メディア５内の非連続な複数の記憶領域にデータをリード／ライトする際、当該記憶領域及びその記憶領域にリード／ライトすべきデータのデータ長を指定するためのディスクリプタであり、データをリード／ライトしようとする記憶領域ごとに作成される。図９に示すように、ＬＢＡレンジディスクリプタの０〜７バイト目には、論理ボリュームＶＯＬ又は記憶メディア５内の記憶領域のうち、データをリード／ライトすべき記憶領域の先頭ＬＢＡ（「LOGICAL  BLOCK  ADDRESS」）が格納され、８〜１１バイト目には、その記憶領域にリード／ライトされるデータのデータ長（「TRANSFER  LENGTH」）が格納される。
【００６６】
図１０は、スキャッタギャザーコマンドのうちのリードギャザーコマンドを受信したストレージ装置３又は記憶メディア５から当該リードギャザーコマンドの送信元のホスト計算機２又はストレージコントローラ４に送信されるパラメータデータのデータフォーマットを示す。リードギャザーコマンドを受信したストレージ装置３又は記憶メディア５は、この図１０に示すように、対応する論理ボリュームＶＯＬ又は記憶メディア５内のリードギャザーコマンドにおいて指定された各記憶領域からそれぞれ読み出したデータを、当該リードギャザーコマンドにおける対応するＬＢＡレンジディスクリプタ（「LBA  range  descriptor」）と同じ順番で並べ、これをリードギャザーコマンドの送信元のホスト計算機２又はストレージコントローラ４に送信する。
【００６７】
（１−５）Ｉ／Ｏに関連する各種処理
次に、本計算機システム１においてデータのリード／ライトに関連して実行される各種処理の具体的な処理内容について説明する。なお、以下においては、各種処理の処理主体を「プログラム」として説明するが、実際上、そのプログラムに基づいてストレージ装置３のマイクロプロセッサ１５がその処理を実行することは言うまでもない。
【００６８】
（１−５−１）リード処理
図１１は、ホスト計算機２からのリードギャザーコマンド（図６参照）及びパラメータリスト（図７参照）を受信したストレージ装置３のリード処理プログラム２３（図４）により実行されるリード処理の処理手順を示す。
【００６９】
リード処理プログラム２３は、ストレージコントローラ４がホスト計算機２からのリードギャザーコマンド及びパラメータリストを受信すると、このリード処理を開始し、まず、受信したパラメータリストに登録されている未処理のＬＢＡレンジディスクリプタの中から１つのＬＢＡレンジディスクリプタを選択する（ＳＰ３０）。
【００７０】
続いて、リード処理プログラム２３は、キャッシュ管理情報２０（図５）を参照して、論理ボリュームＶＯＬ内のステップＳＰ３０で選択したＬＢＡレンジディスクリプタ（以下、これを選択ＬＢＡレンジディスクリプタと呼ぶ）において指定されたＬＢＡを先頭ＬＢＡとする記憶領域に書き込まれたデータが未だメモリ１４のキャッシュメモリ領域１４Ａ内に存在するか否かを判定する（ＳＰ３１）。
【００７１】
そしてリード処理プログラム２３は、この判断で肯定結果を得るとステップＳＰ３０に戻る。これに対してリード処理プログラム２３は、ステップＳＰ３０の判断で否定結果を得ると、その選択ＬＢＡレンジディスクリプタにおいて指定されているデータ長と同じ容量の記憶領域をメモリ１４のキャッシュメモリ領域１４Ａ上に確保すると共に、キャッシュ管理情報２０のエントリ（行）のうち、このときキャッシュメモリ領域１４Ａ上に確保した記憶領域に対応するエントリの状態欄２０Ｅ（図５）に「Clean」を格納する（ＳＰ３２）。
【００７２】
次いで、リード処理プログラム２３は、論理ボリュームＶＯＬ内の選択ＬＢＡレンジディスクリプタにおいて指定された記憶領域に書き込まれたデータ（以下、このデータをそのＬＢＡレンジディスクリプタにおいて指定されたデータと呼ぶ）が実際に格納されている記憶メディア５と、その記憶メディア５における当該データが格納されているアドレスとを特定するメディア及びアドレス特定処理を実行する（ＳＰ３３）。
【００７３】
またリード処理プログラム２３は、ステップＳＰ３３の特定結果に基づいて、選択ＬＢＡレンジディスクリプタと、当該選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５と対応付ける（ＳＰ３４）。
【００７４】
この後、リード処理プログラム２３は、そのとき受信したパラメータリストに登録されているすべてのＬＢＡレンジディスクリプタについてステップＳＰ３０〜ステップＳＰ３４の処理を実行し終えたか否かを判断する（ＳＰ３５）。
【００７５】
リード処理プログラム２３は、この判断で否定結果を得るとステップＳＰ３０に戻り、この後ステップＳＰ３０において選択するＬＢＡレンジディスクリプタを未処理の他のＬＢＡレンジディスクリプタに順次切り替えながら、ステップＳＰ３０〜ステップＳＰ３５の処理を繰り返す。
【００７６】
そしてリード処理プログラム２３は、そのとき受信したパラメータリストに登録されたすべてのＬＢＡレンジディスクリプタについてステップＳＰ３０〜ステップＳＰ３４の処理を実行し終えることによりステップＳＰ３５で肯定結果を得ると、上述のステップＳＰ３０〜ステップＳＰ３５の繰返し処理により少なくとも１つのＬＢＡレンジディスクリプタが対応付けられた記憶メディア５の中から１つの記憶メディア５を選択する（ＳＰ３６）。
【００７７】
続いて、リード処理プログラム２３は、ステップＳＰ３６で選択した記憶メディア（以下、これを選択記憶メディアと呼ぶ）５に対応付けられた各ＬＢＡレンジディスクリプタにおいて指定されたデータを当該選択記憶メディア５から一括してリードするためのリードギャザーコマンド及びパラメータリストをステップＳＰ３０〜ステップＳＰ３５の繰返し処理の処理結果に基づいて作成する。そしてリード処理プログラム２３は、作成したリードギャザーコマンド及びパラメータリストを選択記憶メディア５に送信する（ＳＰ３７）。
【００７８】
具体的に、リード処理プログラム２３は、ステップＳＰ３０〜ステップＳＰ３５の繰返し処理により選択記憶メディア５に対応付けられた各ＬＢＡレンジディスクリプタについて、当該ＬＢＡレンジディスクリプタにおいて指定されている先頭ＬＢＡを、ステップＳＰ３３において特定した選択記憶メディア５上のアドレスに置き換える。そしてリード処理プログラム２３は、このように先頭ＬＢＡを選択記憶メディア５上のアドレスに置き換えたＬＢＡレンジディスクリプタをすべて登録したパラメータリストを作成する。
【００７９】
またリード処理プログラム２３は、そのとき作成したパラメータリストに登録されているＬＢＡレンジディスクリプタの数を図７の４〜７バイト目に格納し、パラメータリストに登録されている各ＬＢＡレンジディスクリプタにおいてそれぞれ指定されたデータ長を合算したデータサイズを図７の８〜１１バイト目に格納したリードギャザーコマンドを作成する。そしてリード処理プログラム２３は、このように作成したリードギャザーコマンド及びパラメータリストを選択記憶メディア５に送信する。
【００８０】
次いで、リード処理プログラム２３は、上述のステップＳＰ３０〜ステップＳＰ３５の繰返し処理により少なくとも１つのＬＢＡレンジディスクリプタが対応付けられたすべての記憶メディア５についてステップＳＰ３６及びステップＳＰ３７の処理を実行し終えたか否かを判断する（ＳＰ３８）。
【００８１】
リード処理プログラム２３は、この判断で否定結果を得るとステップＳＰ３６に戻り、この後ステップＳＰ３６において選択する記憶メディア５を未処理の他の記憶メディアに順次切り替えながら、ステップＳＰ３６〜ステップＳＰ３８の処理を繰り返す。
【００８２】
そしてリード処理プログラム２３は、上述のステップＳＰ３６〜ステップＳＰ３８の繰返し処理により少なくとも１つのＬＢＡレンジディスクリプタが対応付けられたすべての記憶メディア５に対してリードギャザーコマンド及びパラメータリストを送信し終えることによりステップＳＰ３８で肯定結果を得ると、リードギャザーコマンド及びパラメータリストを送信した各記憶メディア５からそれぞれ転送されてくるリード対象のデータを、それぞれステップＳＰ３２においてメモリ１４のキャッシュメモリ領域１４Ａ上に確保した記憶領域に順次格納する（ＳＰ３９）。
【００８３】
さらにリード処理プログラム２３は、リードギャザーコマンド及びパラメータリストを送信したすべての記憶メディア５からリード対象のすべてのデータの転送が終了し、かつ、これらすべてのデータをメモリ１４のキャッシュメモリ領域１４Ａに格納し終えると、このリード処理を実行するトリガとなったリードギャザーコマンドの送信元のホスト計算機２にリード対象のすべてのデータを転送する（ＳＰ４１）。
【００８４】
具体的に、リード処理プログラム２３は、かかるリードギャザーコマンドと共に送信されてきたパラメータリストに登録されている各ＬＢＡレンジディスクリプタにそれぞれ対応するリード対象のデータを、当該パラメータリストにおける対応するＬＢＡレンジディスクリプタの順番でメモリ１４のキャッシュメモリ領域１４Ａから順次読み出し、読み出したデータを図１０のデータフォーマットでかかるリードギャザーコマンドの送信元のホスト計算機２に順次送信する。
【００８５】
そしてリード処理プログラム２３は、リードギャザーコマンド及びパラメータリストにおいて指定されたすべてのデータを当該リードギャザーコマンド及び当該パラメータリストの送信元のホスト計算機２に送信し終えると、このリード処理を終了する。
【００８６】
なお、上述したリード処理のステップＳＰ３３においてリード処理プログラム２３により実行される処理（以下、これをメディア及びアドレス特定処理と呼ぶ）の具体的な処理内容を図１２に示す。以下においては、ＲＡＩＤグループＲＧのＲＡＩＤレベルは「ＲＡＩＤ１０」、「ＲＡＩＤ５」及び「ＲＡＩＤ６」のいずれかに設定されるものとして説明を進める。
【００８７】
リード処理プログラム２３は、リード処理のステップＳＰ３３に進むと、このメディア及びアドレス特定処理を開始し、まず、マップ情報２１を参照して、選択ＬＢＡレンジディスクリプタにおいて指定されたデータが書き込まれた論理ボリュームＶＯＬのＲＡＩＤレベルを判定する（ＳＰ５０）。
【００８８】
そしてリード処理プログラム２３は、この判定によりその論理ボリュームＶＯＬのＲＡＩＤレベルがＲＡＩＤ５又はＲＡＩＤ６であることを認識すると、当該論理ボリュームＶＯＬ内の選択ＬＢＡレンジディスクリプタにおいて指定されたＬＢＡと、その論理ボリュームＶＯＬについて定義されているストライプサイズとから、当該選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５と、当該記憶メディア５上のアドレスとを特定する（ＳＰ５１）。そしてリード処理プログラム２３は、この後、このメディア及びアドレス特定処理を終了してリード処理のステップＳＰ３４に進む。
【００８９】
これに対してリード処理プログラム２３は、ステップＳＰ５０の判定によりその論理ボリュームＶＯＬのＲＡＩＤレベルがＲＡＩＤ１０であることを認識すると、当該論理ボリュームＶＯＬ内の選択ＬＢＡレンジディスクリプタにおいて指定されたＬＢＡと、その論理ボリュームＶＯＬについて定義されているストライプサイズとから、当該選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５と、当該記憶メディア５上のアドレスとを特定する（ＳＰ５２）。
【００９０】
なお、論理ボリュームＶＯＬのＲＡＩＤレベルがＲＡＩＤ１０の場合、データが複数の記憶メディア５に分散された上でミラーリングされて保存されるため、ステップＳＰ５２では選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５として複数の記憶メディア５が特定されることになる。
【００９１】
そこでリード処理プログラム２３は、かかる複数の記憶メディア５から順番にデータを読み出すことによりリード処理のスループット性能を向上させるため、ステップＳＰ５２において特定された複数の記憶メディア５の中から前回のリード処理時に選択しなかった記憶メディア５を、選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５として決定する（ＳＰ５３）。
【００９２】
そしてリード処理プログラム２３は、この後、このメディア及びアドレス特定処理を終了してリード処理のステップＳＰ３４に進む。
【００９３】
（１−５−２）ライト処理
一方、図１３は、ホスト計算機２からのライトスキャッタコマンドを受信したストレージ装置３のライト処理プログラム２４（図４）により実行されるライト処理の処理手順を示す。
【００９４】
ライト処理プログラム２４は、ストレージコントローラ４がホスト計算機２からのライトスキャッタコマンド（図７参照）及びパラメータリスト（図８参照）を受信すると、このライト処理を開始し、まず、受信したパラメータリストに登録されている未処理のＬＢＡレンジディスクリプタの中から１つのＬＢＡレンジディスクリプタを選択する（ＳＰ６０）。
【００９５】
続いて、ライト処理プログラム２４は、キャッシュ管理情報２０（図５）を参照して、ステップＳＰ６０で選択したＬＢＡレンジディスクリプタ（以下、これを選択ＬＢＡレンジディスクリプタと呼ぶ）に対応するデータを格納するための記憶領域がメモリ１４のキャッシュメモリ領域１４Ａ上に確保済みであるか否かを判断する（ＳＰ６１）。なお選択ＬＢＡレンジディスクリプタに対応するデータが、既にメモリ１４のキャッシュメモリ領域１４Ａに格納されているデータを上書きするデータである場合には、ステップＳＰ６１において肯定結果が得られることになる。
【００９６】
そしてライト処理プログラム２４は、この判断で肯定結果を得るとステップＳＰ６０に戻る。これに対してライト処理プログラム２４は、ステップＳＰ６１の判断で否定結果を得ると、選択ＬＢＡレンジディスクリプタに対応するデータのデータ長と同じサイズの記憶領域をメモリ１４のキャッシュメモリ領域１４Ａ上に確保すると共に、キャッシュ管理情報２０のエントリ（行）のうち、このとき確保した記憶領域に対応するエントリの状態欄２０Ｅ（図５）に「Dirty」を格納する（ＳＰ６２）。
【００９７】
次いで、ライト処理プログラム２４は、そのとき受信したパラメータリスト内のすべてのＬＢＡレンジディスクリプタについてステップＳＰ６０〜ステップＳＰ６２の処理を実行し終えたか否かを判断する（ＳＰ６３）。
【００９８】
ライト処理プログラム２４は、この判断で否定結果を得るとステップＳＰ６０に戻り、この後ステップＳＰ６０において選択するＬＢＡレンジディスクリプタを未処理の他のＬＢＡレンジディスクリプタに順次切り替えながら、ステップＳＰ６０〜ステップＳＰ６３の処理を繰り返す。
【００９９】
そしてライト処理プログラム２４は、やがてそのとき受信したパラメータリストに登録されたすべてのＬＢＡレンジディスクリプタについてステップＳＰ６０〜ステップＳＰ６２の処理を実行し終えることによりステップＳＰ６３で肯定結果を得ると、図２について上述したデータ転送開始通知（図２のＳＰ１２を参照）をホスト計算機２に送信する（ＳＰ６４）。
【０１００】
この後、ライト処理プログラム２４は、ホスト計算機２からライト対象のデータが転送されてくるのを待ち受け（ＳＰ６５）、やがてライト対象のデータがホスト計算機２から転送されてくると（ＳＰ６５：ＹＥＳ）、パラメータリストに登録されている各ＬＢＡレンジディスクリプタの登録順序に従って、メモリ１４のキャッシュメモリ領域１４Ａにおけるライト対象のデータの格納順序を判断する（ＳＰ６６）。なお、本実施の形態の場合、パラメータリストに登録されている各ＬＢＡレンジディスクリプタの登録順序が早いものほどメモリ１４のキャッシュメモリ領域１４Ａにおけるキャッシュメモリアドレスが小さい記憶領域に格納されるものとする。
【０１０１】
続いて、ライト処理プログラム２４は、その後、ホスト計算機２から転送されてくるライト対象のデータを、ステップＳＰ６２においてメモリ１４のキャッシュメモリ領域１４Ａ上に確保した記憶領域等に順次格納する（ＳＰ６７）。そしてライト処理プログラム２４は、ライト対象のデータをすべてメモリ１４のキャッシュメモリ領域１４Ａに格納し終えると、図２について上述した格納完了通知（図２のステップＳＰ１５を参照）をホスト計算機２に送信し（ＳＰ６８）、この後、このライト処理を終了する。
【０１０２】
（１−５−３）デステージング処理
他方、図１４は、ストレージ装置３のデステージング処理プログラム２５（図４）により定期的に、かつ記憶メディア５ごとに順番に又は並列的に実行されるデステージング処理の処理手順を示す。
【０１０３】
デステージング処理プログラム２５は、このデステージング処理を開始すると、まず、今回の周期でデステージング処理が未処理の記憶メディア５を１つ選択する（ＳＰ７０）。
【０１０４】
続いて、デステージング処理プログラム２５は、キャッシュ管理情報２０（図５）を参照して、メモリ１４のキャッシュメモリ領域１４Ａのキャッシュメモリアドレスであって未処理のキャッシュメモリアドレスを１つ選択する（ＳＰ７１）。
【０１０５】
次いで、デステージング処理プログラム２５は、キャッシュ管理情報２０を参照して、メモリ１４のキャッシュメモリ領域１４Ａ内のステップＳＰ７１で選択したキャッシュメモリアドレス（以下、これを選択キャッシュメモリアドレスと呼ぶ）で特定される記憶領域に格納されているデータはダーティデータであるか否かを判断する（ＳＰ７２）。
【０１０６】
デステージング処理プログラム２５は、この判断で否定結果を得るとステップＳＰ７１に戻る。これに対してデステージング処理プログラム２５は、ステップＳＰ７２の判断で肯定結果を得ると、キャッシュ管理情報２０を参照して、メモリ１４のキャッシュメモリ領域１４Ａ内の選択キャッシュメモリアドレスにより特定される記憶領域に格納されているデータは、ステップＳＰ７０で選択した記憶メディア（以下、これを選択記憶メディアと呼ぶ）５に格納すべきデータであるか否かを判断する（ＳＰ７３）。
【０１０７】
デステージング処理プログラム２５は、この判断で否定結果を得るとステップＳＰ７１に戻る。これに対してデステージング処理プログラム２５は、ステップＳＰ７３の判断で肯定結果を得ると、選択キャッシュメモリアドレスに対応する記憶メディア５上のアドレス（以下、これをメディアアドレスと呼ぶ）を検出するメディアアドレス検出処理を実行する（ＳＰ７４）。
【０１０８】
この後、デステージング処理プログラム２５は、メモリ１４のキャッシュメモリ領域１４Ａ内のすべてのキャッシュメモリアドレスについてステップＳＰ７１〜ステップＳＰ７４の処理を実行し終えたか否かを判断する（ＳＰ７５）。そしてデステージング処理プログラム２５は、この判断で否定結果を得るとステップＳＰ７１に戻り、この後、ステップＳＰ７１において選択するキャッシュメモリアドレスを未処理の他のキャッシュメモリアドレスに順次切り替えながら、ステップＳＰ７１〜ステップＳＰ７５の処理を繰り返す。
【０１０９】
そしてデステージング処理プログラム２５は、やがてメモリ１４のキャッシュメモリ領域１４Ａ内のすべてのキャッシュメモリアドレスについてステップＳＰ７１〜ステップＳＰ７４の処理を実行し終えることによりステップＳＰ７５で肯定結果を得ると、選択記憶メディア５にライトスキャッタコマンド及びパラメータリストを送信する（ＳＰ７６）。
【０１１０】
具体的に、デステージング処理プログラム２５は、まず、ステップＳＰ７０〜ステップＳＰ７５の繰返し処理により検出した、選択記憶メディア５に格納すべきダーティデータごとのＬＢＡレンジディスクリプタをそれぞれ作成する。このＬＢＡレンジディスクリプタでは、ステップＳＰ７４において検出された対応するメディアアドレスが先頭ＬＢＡとして設定される。そしてデステージング処理プログラム２５は、このようにして作成したダーティデータごとのＬＢＡレンジディスクリプタをすべて登録したパラメータリストを作成する。
【０１１１】
またデステージング処理プログラム２５は、そのとき作成したパラメータリストに登録されているＬＢＡレンジディスクリプタの数を図７の４〜７バイト目に格納し、パラメータリストに登録されている各ＬＢＡレンジディスクリプタにおいてそれぞれ指定されたデータ長を合算したデータサイズを図７の８〜１１バイト目に格納したライトスキャッタコマンドを作成する。そしてデステージング処理プログラム２５は、このように作成したライトスキャッタコマンド及びパラメータリストを選択記憶メディア５に送信する。
【０１１２】
続いて、デステージング処理プログラム２５は、図２のステップＳＰ１８Ａ，ＳＰ１８Ｂについて上述したデータ転送開始通知が対象記憶メディア５から送信されてくるのを待ち受け（ＳＰ７７）、やがて当該データ転送開始通知が対象記憶メディア５から送信されてくると、ステップＳＰ７４において対象記憶メディア５上のアドレスとの対応を記憶した各対象キャッシュメモリアドレスにより特定される、メモリ１４のキャッシュメモリ領域１４Ａ内の記憶領域に格納されているデータをそれぞれ当該キャッシュメモリ領域１４Ａから読み出して図１０のデータフォーマットで対象記憶メディア５に転送する（ＳＰ７８）。
【０１１３】
この後、デステージング処理プログラム２５は、図２のステップＳＰ２０Ａ，ＳＰ２０Ｂについて上述した格納完了通知が対象記憶メディア５から送信されてくるのを待ち受け（ＳＰ７９）、やがて当該格納完了通知が選択記憶メディア５から送信されてくると、キャッシュ管理情報２０のエントリ（行）のうち、ステップＳＰ７８で選択記憶メディア５に転送した各データにそれぞれ対応するエントリの状態欄２０Ｅ（図５）に格納されている値をそれぞれ「Clean」に設定する（ＳＰ８０）。そしてデステージング処理プログラム２５は、この後、このデステージング処理を終了する。
【０１１４】
なお上述したデステージング処理のステップＳＰ７４においてデステージング処理プログラム２５により実行されるメディアアドレス検出処理の具体的な処理内容を図１５に示す。以下においても、ＲＡＩＤグループＲＧのＲＡＩＤレベルは「ＲＡＩＤ１０」、「ＲＡＩＤ５」及び「ＲＡＩＤ６」のいずれかに設定されるものとして説明を進める。
【０１１５】
デステージング処理プログラム２５は、デステージング処理のステップＳＰ７４に進むと、このメディアアドレス検出処理を開始し、まず、マップ情報２１を参照して、メモリ１４のキャッシュメモリ領域１４Ａにおける選択キャッシュメモリアドレスに格納されているダーティデータが書き込まれた論理ボリュームＶＯＬのＲＡＩＤレベルを判定する（ＳＰ９０）。
【０１１６】
そしてデステージング処理プログラム２５は、この判定によりその論理ボリュームＶＯＬのＲＡＩＤレベルがＲＡＩＤ５又はＲＡＩＤ６であることを認識すると、キャッシュ管理情報２０及びマップ情報２１を参照して、その論理ボリュームＶＯＬにおけるそのダーティデータが書き込まれた記憶領域の先頭ＬＢＡと、その論理ボリュームＶＯＬについて定義されているストライプサイズと、そのダーティデータの属性とに基づいて、当該ダーティデータを格納すべき選択記憶メディア５上のアドレス（メディアアドレス）を特定する（ＳＰ９１）。そしてデステージング処理プログラム２５は、この後、このメディアアドレス特定処理を終了してデステージング処理のステップＳＰ７５に進む。
【０１１７】
これに対してデステージング処理プログラム２５は、ステップＳＰ５０の判定によりその論理ボリュームＶＯＬのＲＡＩＤレベルがＲＡＩＤ１０であることを認識すると、キャッシュ管理情報２０及びマップ情報２１を参照して、その論理ボリュームＶＯＬにおけるそのダーティデータが書き込まれた記憶領域の先頭ＬＢＡと、その論理ボリュームＶＯＬについて定義されているストライプサイズとに基づいて、そのダーティデータを格納すべきもう１つの記憶メディア５を特定し、当該記憶メディア５及び選定記憶メディア５におけるそのダーティデータを格納すべきアドレス（メディアアドレス）を特定する（ＳＰ９２）。そしてデステージング処理プログラム２５は、この後、このメディアアドレス特定処理を終了してデステージング処理のステップＳＰ７５に進む。
【０１１８】
（１−６）本実施の形態の効果
以上の本計算機システム１によれば、ストレージコントローラ４が、記憶メディア５内の複数の記憶領域に対するデータのリード／ライトを１回のコマンド発行により行うことができる。従って、リード処理及びライト処理に関するストレージコントローラ４の処理負荷を低減することができ、その結果として、ストレージ装置３全体としてのスループット性能を向上させることができる。
【０１１９】
（２）第２の実施の形態
（２−１）本実施の形態による計算機システムの構成
図１との対応部分に同一符号を付して示す図１６は、第２の実施の形態による計算機システム３０を示す。本計算機システム３０は、ストレージ装置３１に仮想化機能が搭載されている点が第１の実施の形態による計算機システム１と大きく異なる。
【０１２０】
実際上、本実施の形態の場合、ストレージ装置３１のストレージコントローラ３２は、図１７に示すように、複数の記憶メディア５から構成されるＲＡＩＤグループＲＧが提供する物理的な記憶領域をプールボリュームＰＬＶＯＬとして管理すると共に、１又は複数のプールボリュームＰＬＶＯＬをまとめてプールＰＬとして管理している。
【０１２１】
またストレージコントローラ３２は、ホスト計算機２に対して仮想的な論理ボリューム（以下、これを仮想ボリュームと呼ぶ）ＶＶＯＬを提供すると共に、ホスト計算機２からこの仮想ボリュームＶＶＯＬに対してデータの書き込みがあった場合には、当該仮想ボリュームＶＶＯＬ内のデータの書き込みがあった記憶領域（以下、これをページと呼ぶ）ＰＧに対してプールＰＬ内のいずれかのプールボリュームＰＬＶＯＬから所定大きさの被参照領域ＡＲを割り当て、当該被参照領域ＡＲにそのとき書き込まれたデータを格納する。この仮想化機能はThin  Provisioningと呼ばれる技術で有り、第２の実施の形態はこのThin  provisioningに対応させた実施形態である。
【０１２２】
図１８は、本実施の形態によるストレージ装置３１のメモリ構成を示す。本計算機システム３０の場合、メモリ１４の記憶領域がキャッシュメモリ領域１４Ａ及びローカルメモリ領域１４Ｂに分割され、キャッシュメモリ領域１４Ａには、ホスト計算機２及び記憶メディア５間でやり取りされるデータが一時的に格納されると共に、ローカルメモリ領域１４Ｂには、キャッシュ管理情報２０及びマップ情報３３が格納される点は第１の実施の形態と同様である。また本計算機システム３０の場合、ローカルメモリ領域１４Ｂに、制御プログラム群３４として、リード処理プログラム３５、ライト処理プログラム２４及びデステージング処理プログラム３６が格納される点も第１の実施の形態と同様である。
【０１２３】
ただし、本計算機システム３０の場合、マップ情報３３の構成と、リード処理プログラム３５及びデステージング処理プログラム３６の機能（つまりリード処理プログラム３５により実行されるリード処理の処理内容及びデステージング処理プログラム３６により実行されるデステージング処理の処理内容）とが第１の実施の形態と相違する。リード処理プログラム３５及びデステージング処理プログラム３６の機能については後述するとして、ここでは、本実施の形態のマップ情報３３の構成について説明する。
【０１２４】
本実施の形態のマップ情報３３は、図１９に示すように、仮想ボリューム管理テーブル３７及びプールボリューム構成管理テーブル３８から構成される。
【０１２５】
仮想ボリューム管理テーブル３７は、ストレージ装置３１がホスト計算機２に提供している仮想ボリュームＶＶＯＬを管理するために利用されるテーブルであり、図１９（Ａ）に示すように、ボリューム番号欄３７Ａ、ページ番号欄３７Ｂ、プールボリューム番号欄３７Ｃ及び被参照領域番号欄３７Ｄから構成される。
【０１２６】
そしてボリューム番号欄３７Ａには、ストレージ装置３１がホスト計算機２に提供している各仮想ボリュームＶＶＯＬのボリューム番号が格納され、ページ番号欄３７Ｂには、対応する仮想ボリュームＶＶＯＬ内の各ページＰＧにそれぞれ付与された識別番号（ページ番号）が格納される。
【０１２７】
またプールボリューム番号欄３７Ｃには、対応する仮想ボリュームＶＶＯＬ内の対応するページＰＧに被参照領域ＡＲが割り当てられている（つまりそのページＰＧにホスト計算機２からのデータの書き込まれている）場合に、その被参照領域ＡＲを提供するプールボリュームＰＬＶＯＬの識別子（プールボリューム番号）が格納され、その被参照領域ＡＲの識別子（被参照領域番号）が被参照領域番号欄３７Ｄに格納される。
【０１２８】
従って、図１９（Ａ）の例の場合、「０」というボリューム番号が付与された仮想ボリュームＶＶＯＬ内の「０」というページ番号のページＰＧに対しては、「０」というプールボリューム番号のプールボリュームＰＬＶＯＬから「72」という被参照領域番号の被参照領域ＡＲが割り当てられていることが示されている。
【０１２９】
なお、仮想ボリューム管理テーブル３７において、仮想ボリュームＶＶＯＬ内の被参照領域ＡＲが割り当てられていないページＰＧについては、情報が存在しないことを意味する「null」がプールボリューム番号欄３７Ｃ及び被参照領域番号欄３７Ｄにそれぞれ格納される。
【０１３０】
一方、プールボリューム構成管理テーブル３８は、ストレージ装置３１内に作成されたプールボリュームＰＬＶＯＬを管理するために利用されるテーブルであり、図１９（Ｂ）に示すように、プールボリューム番号欄３８Ａ、構成欄３８Ｂ及びメディア番号欄３８Ｃから構成される。
【０１３１】
そしてプールボリューム番号欄３８Ａには、ストレージ装置３１内に作成された各プールボリュームＰＬＶＯＬのプールボリューム番号が格納され、構成欄３８Ｂには、対応するプールボリュームＰＬＶＯＬを提供するＲＡＩＤグループＲＧのＲＡＩＤ構成が格納される。またメディア番号欄３８Ｃには、対応するプールボリュームＰＬＶＯＬを提供するＲＡＩＤグループＲＧを構成するすべての記憶メディア５のメディア番号が格納される。
【０１３２】
従って、図１９（Ｂ）の例の場合、例えば「０」というプールボリューム番号のプールボリュームＰＬＶＯＬは、それぞれ「０」、「１」、「２」及び「３」という記憶メディア番号がそれぞれ付与された４つの記憶メディア５から構成される「ＲＡＩＤ１０（２Ｄ＋２Ｄ）」というＲＡＩＤ構成のＲＡＩＤグループＲＧが提供する記憶領域であることが示されている。
【０１３３】
なお、プールボリューム構成管理テーブル３８において、対応するプールボリューム番号が付与されたプールボリュームＰＬＶＯＬが定義されていない場合には、構成欄３８Ｂ及びメディア番号欄３８Ｃには、それぞれ情報が存在しないことを意味する「null」が格納される。
【０１３４】
（２−２）Ｉ／Ｏに関連する各種処理
次に、本計算機システム３０のストレージ装置３１において実行されるリード処理、デステージング処理の具体的な処理内容について説明する。なお本計算機システム３０のストレージ装置３１において実行されるライト処理の処理内容は、図１３について第１の実施の形態のライト処理と同様であるので、ここでの説明は省略する。
【０１３５】
（２−２−１）リード処理
まず、リード処理について説明する。本計算機システム３０において、ストレージ装置３１に実装されたリード処理プログラム３５（図４）により実行されるリード処理の処理内容は、図１１について上述した第１の実施の形態によるリード処理とほぼ同様である。
【０１３６】
ただし本計算機システム３０の場合、ストレージ装置３１がホスト計算機２に対して仮想ボリュームＶＶＯＬを提供しているため、図１１のステップＳＰ３３において実行される記憶メディア及びアドレス特定処理の処理内容が第１の実施の形態と異なる。
【０１３７】
図２０は、図１１のステップＳＰ３３において、図１２について上述したメディア及びアドレス特定処理に代えて、本実施の形態のリード処理プログラム３５により実行される本実施の形態によるメディア及びアドレス特定処理の処理手順を示す。なお、以下においては、ＲＡＩＤグループＲＧのＲＡＩＤレベルは「ＲＡＩＤ１０」、「ＲＡＩＤ５」及び「ＲＡＩＤ６」のいずれかに設定されるものとして説明を進める。
【０１３８】
本実施の形態のリード処理プログラム３５は、図１１のステップＳＰ３３に進むとこの図２０に示すメディア及びアドレス特定処理を開始し、まず、仮想ボリューム管理テーブル３７（図１９（Ａ））を参照して、リード処理のステップＳＰ３０において選択したＬＢＡレンジディスクリプタ（選択ＬＢＡレンジディスクリプタ）においてデータのリード先の先頭ＬＢＡとして指定された仮想ボリュームＶＶＯＬ上のＬＢＡが属するページＰＧに被参照領域ＡＲを割り当てているプールボリュームＰＬＶＯＬを特定する（ＳＰ１００）。
【０１３９】
続いて、リード処理プログラム３５は、選択ＬＢＡレンジディスクリプタにおいてデータのリード先の先頭ＬＢＡとして指定されたＬＢＡが属するページＰＧの先頭から、当該ＬＢＡまでのオフセット量（ページＰＧの先頭からそのＬＢＡまでのＬＢＡの数）を算出する（ＳＰ１０１）。
【０１４０】
次いで、リード処理プログラム３５は、プールボリューム構成管理テーブル３８（図１９（Ｂ））を参照して、ステップＳＰ１００で特定したプールボリュームＰＬＶＯＬのＲＡＩＤレベルを判定する（ＳＰ１０２）。
【０１４１】
そしてリード処理プログラム３５は、この判定によりそのプールボリュームＰＬＶＯＬのＲＡＩＤレベルがＲＡＩＤ５又はＲＡＩＤ６であることを認識すると、ステップＳＰ１０１において算出したオフセット量と、そのプールボリュームＰＬＶＯＬについて定義されているストライプサイズとから、選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５と、当該記憶メディア５上のアドレスとを特定する（ＳＰ１０３）。そしてリード処理プログラム３５は、この後、このメディア及びアドレス特定処理を終了してリード処理（図１１）のステップＳＰ３４に進む。
【０１４２】
これに対してリード処理プログラム３５は、ステップＳＰ１０２の判定によりそのプールボリュームＰＬＶＯＬのＲＡＩＤレベルがＲＡＩＤ１０であることを認識すると、テップＳＰ１０１において算出したオフセット量と、そのプールボリュームＰＬＶＯＬについて定義されているストライプサイズとから、選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５と、当該記憶メディア５上のアドレスとを特定する（ＳＰ１０４）。
【０１４３】
またリード処理プログラム３５は、ステップＳＰ１０４において特定された複数の記憶メディア５の中から前回のリード処理時に選択しなかった記憶メディア５を、選択ＬＢＡレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア５として決定する（ＳＰ１０５）。
【０１４４】
そしてリード処理プログラム３５は、この後、このメディア及びアドレス特定処理を終了してリード処理（図１１）のステップＳＰ３４に進む。
【０１４５】
（２−２−２）デステージング処理
次に、デステージング処理について説明する。本計算機システム３０において、ストレージ装置３１に実装されたデステージング処理プログラム３６（図１８）により実行されるデステージング処理の処理内容は、図１４について上述した第１の実施の形態によるデステージング処理とほぼ同様である。
【０１４６】
ただし本計算機システム３０では、ストレージ装置３１がホスト計算機２に対して仮想ボリュームＶＶＯＬを提供しているため、図１４のステップＳＰ７４において実行されるメディアアドレス検出処理の処理内容が第１の実施の形態と異なる。
【０１４７】
図２１は、図１４のステップＳＰ７４において、図１２について上述したメディアアドレス検出処理に代えて、本実施の形態のデステージング処理プログラム３６により実行される本実施の形態によるメディアアドレス検出処理の処理手順を示す。なお、以下においても、ＲＡＩＤグループＲＧのＲＡＩＤレベルは「ＲＡＩＤ１０」、「ＲＡＩＤ５」及び「ＲＡＩＤ６」のいずれかに設定されるものとして説明を進める。
【０１４８】
本実施の形態のデステージング処理プログラム３６は、図１４のステップＳＰ７４に進むと、この図２１に示すメディアアドレス検出処理を開始し、まず、ステップＳＰ１１０及びステップＳＰ１１１を図２０について上述したメディア及びアドレス特定処理のステップＳＰ１００及びステップＳＰ１０１と同様に処理する。
【０１４９】
続いて、デステージング処理プログラム３６は、プールボリューム構成管理テーブル３８（図１９（Ｂ））を参照して、ステップＳＰ１００で特定したプールボリュームＰＬＶＯＬのＲＡＩＤレベルを判定する（ＳＰ１１２）。
【０１５０】
そしてデステージング処理プログラム３６は、この判定によりそのプールボリュームＰＬＶＯＬのＲＡＩＤレベルがＲＡＩＤ５又はＲＡＩＤ６であることを認識すると、ステップＳＰ１１１において算出したオフセット量と、そのプールボリュームＰＬＶＯＬについて定義されているストライプサイズとから、そのとき対象としているダーティデータを格納すべき選択記憶メディア５上のアドレスを特定する（ＳＰ１１３）。そしてデステージング処理プログラム３６は、この後、このメディアアドレス特定処理を終了してリード処理（図１１）のステップＳＰ３４に進む。
【０１５１】
これに対してデステージング処理プログラム３６は、ステップＳＰ１１２の判定によりそのプールボリュームＰＬＶＯＬのＲＡＩＤレベルがＲＡＩＤ１０であることを認識すると、テップＳＰ１１１において算出したオフセット量と、そのプールボリュームＰＬＶＯＬについて定義されているストライプサイズとに基づいて、そのとき対象としているダーティデータを格納すべきもう１つの記憶メディア５を特定し、当該記憶メディア５及び選定記憶メディア５におけるそのダーティデータを格納すべきアドレス（メディアアドレス）を特定する（ＳＰ１１４）。そしてデステージング処理プログラム３６は、この後、このメディアアドレス特定処理を終了してデステージング処理（図１４）のステップＳＰ７５に進む。
【０１５２】
（２−３）本実施の形態の効果
以上のように本実施の形態の計算機システム３０では、第１の実施の形態による計算機システム１と同様に、ストレージコントローラ３２が、記憶メディア５内の複数の記憶領域に対するデータのリード／ライトを１回のコマンド発行により行うことができる。かくするにつきThin  Provisioning仮想化機能が搭載されたホスト計算機３０についても、リード処理及びライト処理に関するストレージコントローラ４２の処理負荷を低減することができ、その結果として、ストレージ装置３１全体としてのスループット性能を向上させることができる。
【０１５３】
（３）第３の実施の形態
図１６において、４０は全体として第３の実施の形態による計算機システムを示す。この計算機システム４０は、後述する第１のデータ再配置機能がストレージ装置４１（図１６）に搭載されている点を除いて第２の実施の形態による計算機システム３０と同様に構成されている。
【０１５４】
ここで、第１のデータ再配置処理機能について説明する。第２の実施の形態による計算機システム３０において、ホスト計算機２からのリードギャザーコマンド及びパラメータリストを受信したストレージ装置３１は、当該パラメータリストにおいて指定された複数のデータのうち、メモリ１４のキャッシュメモリ領域１４Ａに格納されていないデータについては、対応する記憶メディア５から読み出す必要がある。
【０１５５】
この場合において、同一のパラメータリストにおいて高頻度でリード対象とされるデータ同士が同一の記憶メディア５に格納されていれば、これらのデータが複数の記憶メディア５に分散されて格納されている場合に比べて、効率良くステージングを行い得るものと考えられる。
【０１５６】
そこで本実施の形態による計算機システム４０には、ホスト計算機２からストレージ装置４１に送信される同一のパラメータリストにおいて高頻度でリード／ライトの対象となるデータのペア（組）を検出し、これらのデータを同一の記憶メディア５に再配置する上述の第１のデータ再配置機能がストレージ装置４１に搭載されている。
【０１５７】
実際上、本実施の形態のストレージ装置４１の場合、このような第１のデータ再配置機能を発揮するための手段として、図１８との対応部分に同一符号を付した図２２に示すように、ストレージコントローラ４２のメモリ１４のローカルメモリ領域１４Ｂには、制御プログラム群４３として、リード処理プログラム３５、ライト処理プログラム２４及びデステージング処理プログラム３６に加えて第１の再配置処理プログラム４４が格納されている。
【０１５８】
そして第１の再配置処理プログラム４４は、定期的又は不定期に図２３に示す第１のデータ再配置処理を実行することにより、上述のようにホスト計算機２からストレージ装置４１に送信される同一のパラメータリストにおいて高頻度でリード／ライトの対象となるデータのペアを検出し、これらのデータを同一の記憶メディア５に再配置する。
【０１５９】
すなわち第１の再配置処理プログラム４４は、この図２３に示す第１のデータ再配置処理を開始すると、まず、ホスト計算機２からリードギャザーコマンド又はライトスキャッタコマンドと共に送信されてきた所定時間（例えば数分）分のパラメータリストを収集する（ＳＰ１２０）。
【０１６０】
続いて、第１の再配置処理プログラム４４は、ステップＳＰ１２０において収集した各パラメータリストにそれぞれ登録されているＬＢＡレンジディスクリプタを参照して、同一のパラメータリストにおいて高頻度（予め定められた閾値以上の回数）でリード元又はライト先の先頭ＬＢＡとして指定されている同一仮想ボリュームＶＶＯＬ内のＬＢＡのペア（以下、これをＬＢＡペアと呼ぶ）をすべて検出する（ＳＰ１２１）。
【０１６１】
次いで、第１の再配置処理プログラム４４は、ステップＳＰ１２１において検出したＬＢＡペアであってステップＳＰ１２４以降の処理を未処理のＬＢＡペアが存在するか否かを判断する（ＳＰ１２２）。そして第１の再配置処理プログラム４４は、この判断で肯定結果を得ると、ステップＳＰ１２１において検出したＬＢＡペアであってステップＳＰ１２４以降の処理が未処理のＬＢＡペアの中から１つのＬＢＡペアを選択する（ＳＰ１２３）。
【０１６２】
さらに第１の再配置処理プログラム４４は、マップ情報３３（図１９）を参照して、ステップＳＰ１２１において選択したＬＢＡペアを構成する各ＬＢＡとそれぞれ対応付けられた記憶メディア５（つまり仮想ボリュームＶＶＯＬ内のそれらのＬＢＡにそれぞれ割り当てられた被参照領域ＡＲを提供している記憶メディア５）を特定する（ＳＰ１２４）。
【０１６３】
また第１の再配置処理プログラム４４は、ステップＳＰ１２４の特定結果に基づいて、ステップＳＰ１２３において選択したＬＢＡペアを構成する各ＬＢＡとそれぞれ対応付けられた記憶メディア５は異なる記憶メディアであるか否かを判断する（ＳＰ１２５）。
【０１６４】
そして第１の再配置処理プログラム４４は、この判断で否定結果を得るとステップＳＰ１２２に戻る。これに対して、第１の再配置処理プログラム４４は、ステップＳＰ１２５の判断で肯定結果を得ると、仮想ボリュームＶＶＯＬ内のステップＳＰ１２３において選択したＬＢＡペアを構成する各ＬＢＡで指定される記憶領域にそれぞれ格納されているデータを、同じ記憶メディア５に集約することができるか否かを判断する（ＳＰ１２６）。
【０１６５】
第１の再配置処理プログラム４４は、この判断で否定結果を得るとステップＳＰ１２２に戻る。これに対して、第１の再配置処理プログラム４４は、ステップＳＰ１２６の判断で肯定結果を得ると、仮想ボリュームＶＶＯＬ内のステップＳＰ１２３で選択したＬＢＡペアを構成する各ＬＢＡで指定されている記憶領域にそれぞれ格納されているデータを同じ記憶メディア５に移動させるデータ移動処理を実行する（ＳＰ１２７）。
【０１６６】
具体的に、第１の再配置処理プログラム４４は、仮想ボリュームＶＶＯＬ内のステップＳＰ１２３で選択したＬＢＡペアを構成する各ＬＢＡで指定されている記憶領域にそれぞれ格納されているデータの一方を他方のデータが格納されている記憶メディア５に移動させ、又は、これらのデータをいずれも他の同一の記憶メディア５に移動させるようディスクアダプタ１６を介して対応する記憶メディア５を制御する。また第１の再配置処理プログラム４４は、これと併せてマップ情報３３を構成する仮想ボリューム管理テーブル３７をかかるデータ移動後の状態に更新する。
【０１６７】
続いて、第１の再配置処理プログラム４４は、上述のようなデータ移動処理を終えるとステップＳＰ１２２に戻り、この後、ステップＳＰ１２３において選択するＬＢＡペアを他の未処理のＬＢＡペアに順次切り替えながら、ステップＳＰ１２２〜ステップＳＰ１２７の処理を繰り返す。
【０１６８】
そして第１の再配置処理プログラム４４は、やがてステップＳＰ１２１において検出したすべてのＬＢＡペアに対してステップＳＰ１２４以降の処理を実行し終えることによりステップＳＰ１２２で肯定結果を得ると、この第１のデータ再配置処理を終了する。
【０１６９】
以上のように本実施の形態による計算機システム４０では、ホスト計算機２からストレージ装置４１に送信される同一のパラメータリストにおいて高頻度でリード／ライトの対象となるデータの組を検出し、これらのデータを同一の記憶メディア５に再配置するため、第２の実施の形態による計算機システム３０と比べて効率良くステージングを行うことができる。この結果、リード処理及びライト処理に関するストレージコントローラ４２の処理負荷を低減させることができ、第２の実施の形態の計算機システム３０と比べてより一層とストレージ装置４１全体としてのスループット性能を向上させることができる。
【０１７０】
（４）第４の実施の形態
図１６において、５０は全体として第４の実施の形態による計算機システムを示す。この計算機システム５０は、後述する第２のデータ再配置機能がストレージ装置５１（図１６）に搭載されている点を除いて第２の実施の形態による計算機システム３０と同様に構成されている。
【０１７１】
ここで、第２のデータ再配置機能について説明する。第２の実施の形態による計算機システム３０において、上述のようなリードギャザーコマンドを利用したリード処理の性能は、パラメータリストにおいて指定された各データがそれぞれ格納されている記憶メディア５のうちの最も応答性能が低い記憶メディア５の応答性能に依存する。
【０１７２】
例えばホスト計算機２からストレージ装置３１に送信されたリードギャザーコマンド及びパラメータリストにおいて指定されたリード対象の複数のデータが、それぞれ応答性能が異なる複数種別の記憶メディア５に分散して格納されている場合、これらすべてのデータをそれぞれ対応する記憶メディア５から読み出してホスト計算機２に転送するために、ストレージコントローラ３２は最も応答性能が低い記憶メディア５からのデータ転送を待つ必要がある。
【０１７３】
従って、第２の実施の形態による計算機システム３０において、高頻度で同一のリードギャザーパラメータコマンドにおいてリード対象として指定されるデータ同士については、同一種別の記憶メディア５に格納されていることが望ましく、このようにすることによって応答性能が低い記憶メディア５からのデータの読み出しに起因するストレージ装置３１全体としてのリード処理の遅延を有効に防止できるものと考えられる。
【０１７４】
そこで本実施の形態による計算機システム５０の場合、ホスト計算機２からストレージ装置５１（図１６）に送信される同一のパラメータリストにおいて高頻度でリード／ライトの対象となるデータの組を検出し、これらのデータを同一種別の記憶メディア５に再配置する第２のデータ再配置機能がストレージ装置５１に搭載されている。
【０１７５】
実際上、本実施の形態のストレージ装置５１においては、このような第２のデータ再配置機能を発揮するための手段として、図２２に示すように、ストレージコントローラ４２のメモリ１４のローカルメモリ領域１４Ｂに、制御プログラム群５３として、リード処理プログラム３５、ライト処理プログラム２４及びデステージング処理プログラム３６に加えて第２の再配置処理プログラム５４が格納されている。
【０１７６】
そして第２の再配置処理プログラム５４は、定期的又は不定期に図２４に示す第２のデータ再配置処理を実行することにより、上述のようにホスト計算機２からストレージ装置４１に送信される同一のパラメータリストにおいて高頻度でリード／ライトの対象となるデータの組を検出し、これらのデータを同種の記憶メディア５に再配置する。
【０１７７】
すなわち第２の再配置処理プログラム５４は、この図２４に示す第２のデータ再配置処理を開始すると、まず、ホスト計算機２から送信されてくる所定時間（例えば数分）分のパラメータリスト（リードギャザーパラメータリスト又はライトスキャッタパラメータリスト）を収集する（ＳＰ１３０）。
【０１７８】
続いて、第２の再配置処理プログラム５４は、ステップＳＰ１３０において収集した各パラメータリストにそれぞれ登録されているＬＢＡレンジディスクリプタを参照して、同一のパラメータリストにおいて高頻度（予め定められた閾値以上の回数）でリード元又はライト先の先頭ＬＢＡとして指定されている同一仮想ボリュームＶＶＯＬ内のＬＢＡのペア（以下、これをＬＢＡペアと呼ぶ）をすべて検出する（ＳＰ１３１）。
【０１７９】
次いで、第２の再配置処理プログラム５４は、ステップＳＰ１３１において検出したＬＢＡペアであってステップＳＰ１３４以降の処理を未処理のＬＢＡペアが存在するか否かを判断する（ＳＰ１３２）。そして第２の再配置処理プログラム５４は、この判断で肯定結果を得ると、ステップＳＰ１３１において検出したＬＢＡペアであってステップＳＰ１３４以降の処理が未処理のＬＢＡペアの中から１つのＬＢＡペアを選択する（ＳＰ１３３）。
【０１８０】
さらに第２の再配置処理プログラム５４は、マップ情報３３（図１９）を参照して、ステップＳＰ１３１において選択したＬＢＡペアを構成する各ＬＢＡとそれぞれ対応付けられた記憶メディア５（つまり仮想ボリュームＶＶＯＬ内のそれらのＬＢＡにそれぞれ割り当てられた被参照領域ＡＲを提供している記憶メディア５）を特定する（ＳＰ１３４）。
【０１８１】
また第２の再配置処理プログラム５４は、ステップＳＰ１３４の特定結果に基づいて、ステップＳＰ１３３において選択したＬＢＡペアを構成する各ＬＢＡとそれぞれ対応付けられた記憶メディア５は異種の記憶メディア５であるか否かを判断する（ＳＰ１３５）。なお、本実施の形態の場合、ストレージ装置５１のストレージコントローラ４２は、個々の記憶メディア５の種別を予め記憶しているものとする。
【０１８２】
そして第２の再配置処理プログラム５４は、この判断で否定結果を得るとステップＳＰ１３２に戻る。これに対して、第２の再配置処理プログラム５４は、ステップＳＰ１３５の判断で肯定結果を得ると、仮想ボリュームＶＶＯＬ内のステップＳＰ１３３において選択したＬＢＡペアを構成する各ＬＢＡで指定される記憶領域にそれぞれ格納されているデータを、同種別の記憶メディア５に集約することができるか否かを判断する（ＳＰ１３６）。
【０１８３】
第２の再配置処理プログラム５４は、この判断で否定結果を得るとステップＳＰ１３２に戻る。これに対して、第２の再配置処理プログラム５４は、ステップＳＰ１３６の判断で肯定結果を得ると、仮想ボリュームＶＶＯＬ内のステップＳＰ１３３で選択したＬＢＡペアを構成する各ＬＢＡで指定されている記憶領域にそれぞれ格納されているデータを同一種別の記憶メディア５に移動させるデータ移動処理を実行する（ＳＰ１３７）。
【０１８４】
具体的に、第２の再配置処理プログラム５４は、仮想ボリュームＶＶＯＬ内のステップＳＰ１３３で選択したＬＢＡペアを構成する各ＬＢＡで指定されている記憶領域にそれぞれ格納されているデータの一方を他方のデータが格納されている記憶メディア５と同種別の記憶メディア５に移動させ、又は、これらのデータをいずれも他の同種別の記憶メディア５に移動させるようディスクアダプタ１６を介して対応する記憶メディア５を制御する。また第２の再配置処理プログラム５４は、これと併せてマップ情報３３を構成する仮想ボリューム管理テーブル３７をかかるデータ移動後の状態に更新する。
【０１８５】
続いて、第２の再配置処理プログラム５４は、上述のようなデータ移動処理を終えるとステップＳＰ１３２に戻り、この後、ステップＳＰ１３３において選択するＬＢＡペアを他の未処理のＬＢＡペアに順次切り替えながら、ステップＳＰ１３２〜ステップＳＰ１３７の処理を繰り返す。
【０１８６】
そして第２の再配置処理プログラム５４は、やがてステップＳＰ１３１において検出したすべてのＬＢＡペアに対してステップＳＰ１３４以降の処理を実行し終えることによりステップＳＰ１３２で肯定結果を得ると、この第２のデータ再配置処理を終了する。
【０１８７】
以上のように本実施の形態による計算機システム５０では、ホスト計算機２からストレージ装置５１に送信される同一のパラメータリストにおいて高頻度でリード／ライトの対象となるデータの組を検出し、これらのデータを同一種別の記憶メディア５に再配置するため、応答性能が低い記憶メディア５からのデータの読み出しに起因するストレージ装置３１全体としてのリード処理の遅延を有効に防止することができる。かくして第２の実施の形態の計算機システム３０と比べて、より一層とストレージ装置５１全体としての応答性能を向上させることができる。
【０１８８】
（５）他の実施の形態
なお上述の第１〜第４の実施の形態においては、本発明を図１又は図１６のように構成されたストレージ装置３，３１，４１，５１に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を有するストレージ装置に広く適用することができる。
【０１８９】
また上述の第１〜第４の実施の形態においては、ホスト計算機２からストレージ装置３，３１，４１，５１に送信される当該ストレージ装置３，３１，４１，５１内の論理ボリュームＶＯＬ又は仮想ボリュームＶＶＯＬ内の複数の記憶領域をリード先として指定した第１のリードコマンドや、ストレージコントローラ４，３２，４２，５２から各記憶メディア５に送信される当該記憶メディア５内の複数の記憶領域をリード先として指定した第２のリードコマンド、並びに、ストレージコントローラ４，３２，４２，５２から各記憶メディア５に送信される当該記憶メディア５内の複数の記憶領域をライト先として指定した第１のライトコマンドを、図７〜図９に規定されたコマンドフォーマットにより作成して送信するようにした場合について述べたが、本発明はこれに限らず、これら第１及び第２のリードコマンド並びに第１のライトコマンドのコマンドフォーマットとしては、この他種々のフォーマットを広く適用することができる。
【０１９０】
また上述の第３及び第４の実施の形態においては、第２の実施の形態の計算機システム３０に第１又は第２のデータ再配置機能の一方のみを搭載するようにして計算機システム４０，５０を構築するようにした場合について述べたが、本発明はこれに限らず、これら第１及び第２のデータ再配置機能を第２の実施の形態の計算機システム３０に搭載するようにしても良い。
【０１９１】
さらに上述の第４の実施の形態においては、第２のデータ再配置処理のステップＳＰ１３７において、ＬＢＡペアを構成する各ＬＢＡにより特定される仮想ボリュームＶＶＯＬ内の記憶領域にそれぞれ格納されたデータを、単に同一種別の記憶メディア５に格納するだけの場合について述べたが、本発明はこれに限らず、例えば、これらのデータのアクセス頻度に応じた応答性能を有する記憶メディア５の種別を選択して、その種別の記憶メディア５にこれらのデータを再配置するようにしても良い。
【０１９２】
この場合、ストレージコントローラ４２が各記憶メディア５に格納されているすべてのデータのアクセス頻度を常時計測しておき、第２の再配置処理プログラム５４が、これらのデータのアクセス頻度に基づいて、アクセス頻度の高い方のデータを基準にして、そのデータのアクセス頻度がより高いものほどより応答性能が高い記憶メディア５に再配置するように、ストレージコントローラ４がこれらのデータの再配置先を決定すれば良い。
【符号の説明】
【０１９３】
１，３０，４０，５０……計算機システム、２……ホスト計算機、３，３１，４１，５１……ストレージ装置、４，３２，４２，５２……ストレージコントローラ、５……記憶メディア、１４……メモリ、１４Ａ……キャッシュメモリ領域、１４Ｂ……ローカルメモリ領域、１５……マイクロプロセッサ、ＶＯＬ……論理ボリューム、ＶＶＯＬ……仮想ボリューム、２０……キャッシュ管理情報、２１，３３……マップ情報、２２，３４，４３，５３……制御プログラム群、２３，３５……リード処理プログラム、２４……ライト処理プログラム、２５，３６……デステージング処理プログラム、３７……仮想ボリューム管理テーブル、３８……プールボリューム構成管理テーブル、４４，５４……再配置処理プログラム、ＰＬ……プールボリューム、ＰＬＶＯＬ……プールボリューム、ＲＧ……ＲＡＩＤグループ。
【図１】
0006013609.tif 000002
【図２】
0006013609.tif 000003
【図３】
0006013609.tif 000004
【図４】
0006013609.tif 000005
【図５】
0006013609.tif 000006
【図６】
0006013609.tif 000007
【図７】
0006013609.tif 000008
【図８】
0006013609.tif 000009
【図９】
0006013609.tif 000010
【図１０】
0006013609.tif 000011
【図１１】
0006013609.tif 000012
【図１２】
0006013609.tif 000013
【図１３】
0006013609.tif 000014
【図１４】
0006013609.tif 000015
【図１５】
0006013609.tif 000016
【図１６】
0006013609.tif 000017
【図１７】
0006013609.tif 000018
【図１８】
0006013609.tif 000019
【図１９】
0006013609.tif 000020
【図２０】
0006013609.tif 000021
【図２１】
0006013609.tif 000022
【図２２】
0006013609.tif 000023
【図２３】
0006013609.tif 000024
【図２４】
0006013609.tif 000025