(57)【要約】【課題】本発明の記憶制御装置は、同時に動作する複数の機能毎にそれぞれ仮想メモリの領域を分割して割り当てる。【解決手段】上位通信制御部１内の各マイクロプロセッサ部８は、それぞれ複数のプログラムプロダクト８Ａを実行させることができる。ローカルメモリ９を利用して生成される仮想メモリ８Ｃは、複数の領域に分割される。キュー８Ｂによって、分割された領域は各プログラムプロダクト８Ａに割り当てられる。【選択図】図１
2008276326.tif 000002
【特許請求の範囲】
【請求項１】
上位装置に記憶領域を提供する記憶制御装置であって、
前記上位装置との間の通信を制御するための上位通信制御部と、
記憶デバイスとの間の通信を制御するための下位通信制御部と、
前記上位通信制御部及び前記下位通信制御部によって共有される共有記憶領域と、を備えており、
前記上位通信部及び下位通信部は、
通信相手先と通信するための複数の通信インターフェース部と、
前記通信インターフェース部を用いて、前記通信相手先との間のデータ転送を制御するためのマイクロプロセッサ部と、
物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、
前記仮想メモリ制御部は、前記各マイクロプロセッサ部により実現される所定の複数の機能毎に仮想メモリ容量をそれぞれ割り当て、かつ、前記各所定の機能に割り当てられる仮想メモリ容量をそれぞれ可変に制御する、記憶制御装置。
【請求項２】
前記仮想メモリには、前記各所定の機能毎に、前記共有記憶領域に記憶されている所定データの少なくとも一部がコピーされている請求項１に記載の記憶制御装置。
【請求項３】
前記仮想メモリ制御部は、前記各所定の機能毎に予め用意された、仮想メモリ容量を管理するための容量管理キューを用いて、前記各所定の機能に割り当てる仮想メモリ容量をそれぞれ制御する、請求項１に記載の記憶制御装置。
【請求項４】
前記仮想メモリ制御部は、さらに、未使用容量を管理するための未使用容量管理キューを用いて、前記仮想メモリの全容量のうち前記各所定の機能のいずれにも割り当てられていない未使用の容量を管理する、請求項３に記載の記憶制御装置。
【請求項５】
前記仮想メモリ制御部は、前記各所定の機能にそれぞれ割り当てられる仮想メモリ容量の閾値をそれぞれ管理するための最小値管理テーブルを用いて、前記各所定の機能に少なくとも前記閾値以上の仮想メモリ容量をそれぞれ割り当てる、請求項１に記載の記憶制御装置。
【請求項６】
前記閾値は、記憶制御装置の構成が変更された場合に自動でまたは手動により設定される、請求項５に記載の記憶制御装置。
【請求項７】
前記仮想メモリ制御部は、前記各所定の機能に、予め設定される所定の単位で、少なくとも前記閾値以上の仮想メモリ容量をそれぞれ割り当てていく、請求項５に記載の記憶制御装置。
【請求項８】
前記仮想メモリ制御部は、前記仮想メモリの全容量のうち未使用の容量を、予め設定される所定の単位で前記各所定の機能にそれぞれ割り当てていくことにより、前記各所定の機能に少なくとも前記閾値以上の仮想メモリ容量を割り当てる、請求項５に記載の記憶制御装置。
【請求項９】
前記仮想メモリ制御部は、前記各所定の機能のうち前記閾値以上の仮想メモリ容量が割り当てられている所定の機能について、未使用の仮想メモリ容量が存在するか否かを検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を前記未使用の容量として管理する、請求項４に記載の記憶制御装置。
【請求項１０】
前記仮想メモリ制御部は、前記各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を前記未使用の容量として管理する、請求項４に記載の記憶制御装置。
【請求項１１】
前記仮想メモリ制御部は、前記各所定の機能のうち前記閾値以上の仮想メモリ容量が割り当てられている所定の機能が存在するか否かを判定し、（１Ａ）前記閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見した場合には、（１Ｂ）その発見された所定の機能に割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かを検査し、（１Ｃ）未使用の仮想メモリ容量が存在すると判定した場合は、その未使用の仮想メモリ容量を前記未使用の容量として管理し、（２Ａ）前記閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見できない場合には、（２Ｂ）前記各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、（２Ｃ）未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を前記未使用の容量として管理する、請求項４に記載の記憶制御装置。
【請求項１２】
前記仮想メモリ制御部は、前記各所定の機能に割り当てられている仮想メモリ容量のうち未使用の仮想メモリ容量を、予め設定される所定の単位で、他の所定の機能に割り当て直す、請求項１に記載の記憶制御装置。
【請求項１３】
前記仮想メモリ制御部は、前記各所定の機能に割り当てられている仮想メモリ容量のうち最古の仮想メモリ容量を、予め設定される所定の単位で解放して再利用する、請求項１に記載の記憶制御装置。
【請求項１４】
前記共有記憶領域は、前記上位通信制御部及び前記下位通信制御部によって共有される制御メモリ、または、前記上位通信制御部及び前記下位通信制御部によって共有される、記憶デバイス内の記憶領域のいずれかである、請求項１に記載の記憶制御装置。
【請求項１５】
前記所定データには、前記上位装置に提供される論理ボリュームの構成を示すデータ、前記記憶制御装置の構成を示すデータ、前記上位装置から発行されるアクセス要求のパターンを示すデータ、前記上位装置に提供される論理ボリュームと前記上位装置との間の接続構成を示すデータ、のいずれか少なくとも二つ以上のデータが含まれている、請求項１に記載の記憶制御装置。
【請求項１６】
記憶制御装置内の仮想メモリを制御する方法であって、
前記記憶制御装置は、上位装置との間の通信を制御するための上位通信制御部と、記憶デバイスとの間の通信を制御するための下位通信制御部と、前記上位通信制御部及び前記下位通信制御部によって共有される共有記憶領域と、を備えており、
前記上位通信部及び下位通信部は、通信相手先と通信するための通信インターフェース部と、前記通信インターフェース部を用いて、前記通信相手先との間のデータ転送を制御するための複数のマイクロプロセッサ部と、物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、かつ、
前記記憶制御装置の構成が変更された場合に、前記各マイクロプロセッサ部によって実現される所定の複数の機能毎にそれぞれ割り当てられる仮想メモリ容量の閾値を設定する設定ステップと、
前記各所定の機能毎に、少なくとも前記閾値以上の仮想メモリ容量を可変に割り当てる割り当てステップと、
前記各所定の機能にそれぞれ割り当てられた仮想メモリ容量のうち未使用の仮想メモリ容量を未使用容量として解放する解放ステップと、
を含む記憶制御装置の仮想メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置の仮想メモリ制御方法に関する。
【背景技術】
【０００２】
企業等の組織では、多量のデータを管理するために、記憶制御装置を用いる。例えば、金融機関や病院等のような組織では、多くの顧客に関するデータを長期間保存する必要があるため、信頼性が高く、かつ、大容量の記憶制御装置が必要とされる。高信頼性及び大容量の両方を満たす記憶制御装置では、例えば、多数のハードディスクドライブを備えており、RAID（Redundant Array of Independent Disks）に基づく記憶領域をホストに提供可能である。
【０００３】
記憶制御装置は、例えば、多数の物理的記憶デバイス（ハードディスクドライブ等）、論理的記憶デバイス（論理ボリューム等）、通信経路、制御基板等を備えて構成される大規模なシステム製品である。記憶制御装置では、多数の制御基板を協調して動作させるために、共有メモリを用いて、各制御基板の間で制御情報や管理情報を共有させる。
【０００４】
各制御基板は、複数のマイクロプロセッサ及び少なくとも一つのローカルメモリをそれぞれ備えている。各ローカルメモリには、共有メモリに記憶されている制御情報や管理情報の少なくとも一部が予めコピーされる。一つの制御基板内の複数のマイクロプロセッサは、ローカルメモリにコピーされた制御情報や管理情報を用いて、所定の処理をそれぞれ実行する。
【０００５】
仮想メモリ機構を用いることにより、ローカルメモリの物理的サイズを上回るサイズのメモリサイズを得ることができる。仮想メモリ機構は、オペレーティングシステム（ＯＳ）の有するメモリ管理サブシステムによって実現することができる。仮想メモリの記憶領域を分割して使用する技術も知られている（特許文献１，特許文献２）。
【特許文献１】特開平９−２８２２３３号公報
【特許文献２】特開平１−２８３６６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前記各文献に記載の仮想メモリに関する従来技術は、いずれも記憶制御装置に直接関係する技術ではない。さらに、前記各文献に記載の従来技術は、いずれも単一のマイクロプロセッサによって使用される仮想メモリを管理するための技術であり、複数のマイクロプロセッサによって共用される仮想メモリの管理に、そのまま適用できない。また、前記各文献に記載の従来技術は、単一のマイクロプロセッサにより使用される仮想メモリを、予め決定される固定サイズで分割して管理するものであり、分割される領域のサイズを可変に制御するものではない。
【０００７】
記憶制御装置は、多数のホストコンピュータ（以下、ホスト）にそれぞれ論理ボリュームを提供する大規模なシステム製品であり、各ホストと各論理ボリュームとの対応関係、各ホストによる論理ボリュームの使用状態等は、種々変化する。例えば、ホストに提供される論理ボリュームのサイズを必要に応じて動的に制御したり、ホストによって使用されている論理ボリュームの記憶内容を別の論理ボリュームにコピーしたり、一方のホストに接続されていた論理ボリュームを他方のホストに接続し直したりする。従って、このような技術的性質を有する記憶制御装置には、新たな仮想メモリ技術が必要となる。
【０００８】
そこで、本発明の目的は、複数のマイクロプロセッサにより実現される所定の複数の機能毎に、仮想メモリ容量を可変に割り当てることができるようにした記憶制御装置及び記憶制御装置の仮想メモリ制御方法を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００９】
上記課題を解決すべく、本発明に従う、上位装置に記憶領域を提供する記憶制御装置は、上位装置との間の通信を制御するための上位通信制御部と、記憶デバイスとの間の通信を制御するための下位通信制御部と、上位通信制御部及び下位通信制御部によって共有される共有記憶領域と、を備えており、上位通信部及び下位通信部は、通信相手先と通信するための複数の通信インターフェース部と、通信インターフェース部を用いて、通信相手先との間のデータ転送を制御するためのマイクロプロセッサ部と、物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、仮想メモリ制御部は、各マイクロプロセッサ部により実現される所定の複数の機能毎に仮想メモリ容量をそれぞれ割り当て、かつ、各所定の機能に割り当てられる仮想メモリ容量をそれぞれ可変に制御する。
【００１０】
本発明の実施形態では、仮想メモリには、各所定の機能毎に、共有記憶領域に記憶されている所定データの少なくとも一部がコピーされている。
【００１１】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能毎に予め用意された、仮想メモリ容量を管理するための容量管理キューを用いて、各所定の機能に割り当てる仮想メモリ容量をそれぞれ制御する。
【００１２】
本発明の実施形態では、仮想メモリ制御部は、さらに、未使用容量を管理するための未使用容量管理キューを用いて、仮想メモリの全容量のうち各所定の機能のいずれにも割り当てられていない未使用の容量を管理する。
【００１３】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能にそれぞれ割り当てられる仮想メモリ容量の閾値をそれぞれ管理するための最小値管理テーブルを用いて、各所定の機能に少なくとも閾値以上の仮想メモリ容量をそれぞれ割り当てる。
【００１４】
本発明の実施形態では、閾値は、記憶制御装置の構成が変更された場合に自動でまたは手動により設定される。
【００１５】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能に、予め設定される所定の単位で、少なくとも閾値以上の仮想メモリ容量をそれぞれ割り当てていく。
【００１６】
本発明の実施形態では、仮想メモリ制御部は、仮想メモリの全容量のうち未使用の容量を、予め設定される所定の単位で各所定の機能にそれぞれ割り当てていくことにより、各所定の機能に少なくとも閾値以上の仮想メモリ容量を割り当てる。
【００１７】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能のうち閾値以上の仮想メモリ容量が割り当てられている所定の機能について、未使用の仮想メモリ容量が存在するか否かを検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を未使用の容量として管理する。
【００１８】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を未使用の容量として管理する。
【００１９】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能のうち閾値以上の仮想メモリ容量が割り当てられている所定の機能が存在するか否かを判定し、（１Ａ）閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見した場合には、（１Ｂ）その発見された所定の機能に割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かを検査し、（１Ｃ）未使用の仮想メモリ容量が存在すると判定した場合は、その未使用の仮想メモリ容量を未使用の容量として管理し、（２Ａ）閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見できない場合には、（２Ｂ）各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、（２Ｃ）未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を未使用の容量として管理する。
【００２０】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能に割り当てられている仮想メモリ容量のうち未使用の仮想メモリ容量を、予め設定される所定の単位で、他の所定の機能に割り当て直す。
【００２１】
本発明の実施形態では、仮想メモリ制御部は、各所定の機能に割り当てられている仮想メモリ容量のうち最古の仮想メモリ容量を、予め設定される所定の単位で解放して再利用する。
【００２２】
本発明の実施形態では、共有記憶領域は、上位通信制御部及び下位通信制御部によって共有される制御メモリ、または、上位通信制御部及び下位通信制御部によって共有される、記憶デバイス内の記憶領域のいずれかである。
【００２３】
本発明の実施形態では、所定データには、上位装置に提供される論理ボリュームの構成を示すデータ、記憶制御装置の構成を示すデータ、上位装置から発行されるアクセス要求のパターンを示すデータ、上位装置に提供される論理ボリュームと上位装置との間の接続構成を示すデータ、のいずれか少なくとも二つ以上のデータが含まれている。
【００２４】
本発明の他の観点に従う、記憶制御装置内の仮想メモリを制御する方法は、記憶制御装置は、上位装置との間の通信を制御するための上位通信制御部と、記憶デバイスとの間の通信を制御するための下位通信制御部と、上位通信制御部及び下位通信制御部によって共有される共有記憶領域と、を備えており、上位通信部及び下位通信部は、通信相手先と通信するための通信インターフェース部と、通信インターフェース部を用いて、通信相手先との間のデータ転送を制御するための複数のマイクロプロセッサ部と、物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、かつ、記憶制御装置の構成が変更された場合に、各マイクロプロセッサ部によって実現される所定の複数の機能毎にそれぞれ割り当てられる仮想メモリ容量の閾値を設定する設定ステップと、各所定の機能毎に、少なくとも閾値以上の仮想メモリ容量を可変に割り当てる割り当てステップと、各所定の機能にそれぞれ割り当てられた仮想メモリ容量のうち未使用の仮想メモリ容量を未使用容量として解放する解放ステップと、を含む。
【００２５】
本発明の構成要素は、その全部または一部をコンピュータプログラムとして構成できる場合がある。このコンピュータプログラムは、記録媒体に固定して譲渡等することができるほかに、インターネット等の通信ネットワークを介して伝送することもできる。
【発明を実施するための最良の形態】
【００２６】
以下、図面に基づき、本発明の実施の形態を説明する。図１は、本実施形態の全体概念を示す説明図である。図１に示すストレージシステムは、例えば、記憶制御装置１と、「上位装置」としてのホストコンピュータ（以下、ホスト）２とを備えて構成される。さらに、記憶制御装置１の構成変更等を指示するための別のコンピュータ装置を備えることもできる。
【００２７】
記憶制御装置１は、例えば、上位通信制御部３と、下位通信制御部４と、ディスクドライブ５と、共有メモリ６とを備えて構成される。記憶制御装置１の詳細な構成は、後述するが、キャッシュメモリ等も記憶制御装置１に設けられる。
【００２８】
記憶制御装置１には、それぞれ複数の上位通信制御部３及び下位通信制御部４を設けることができる。上位通信制御部３は、ホスト２との間の通信を制御するものである。下位通信制御部４は、「記憶デバイス」としてのディスクドライブ５との間の通信を制御するものである。上位通信制御部３と下位通信制御部４とは、共有メモリ６を介して処理の進行状況を確認し、協調して動作する。上位通信制御部３と下位通信制御部４とは、その内部の制御プログラムや通信相手先は相違するが、実質的に同一の構成を備えるように構成することができる。そこで、上位通信制御部３の構成に着目して説明する。
【００２９】
上位通信制御部３は、例えば、通信インターフェース部７と、マイクロプロセッサ部８と、「物理メモリ」としてのローカルメモリ９と、を備える。通信インターフェース部７及びマイクロプロセッサ８は、それぞれ複数ずつ設けられるが、説明の便宜上、図１では、それぞれ一つずつ示す。
【００３０】
マイクロプロセッサ部８は、複数のプログラムプロダクト８Ａをそれぞれ実行することができる。マイクロプロセッサ部８により実現されるＯＳは、メモリ管理用のサブシステムを備えている。このメモリ管理サブシステムは、複数の仮想メモリ管理キュー（以下、キューと略す場合がある）８Ｂを用いて、仮想メモリ８Ｃを制御する。
【００３１】
プログラムプロダクト８Ａとしては、例えば、仮想ボリュームを生成するためのプログラム（ＡＯＵ（Allocation On Use）と呼ぶ場合がある）、データのコピーを制御するプログラム、記憶制御装置１の構成を管理するためのプログラム、ホスト２との通信経路の構成を管理するためのプログラム、ホスト２によるボリュームの使用状況を管理するためのプログラム等を挙げることができる。以上のプログラムプロダクト８Ａは、一例であって、本発明は上述のプログラムプロダクト８Ａに限定されない。
【００３２】
ローカルメモリ９の物理的記憶領域は、例えば、５１２バイトのページ単位で、より大きなサイズの仮想メモリ８Ｃにマッピングされる。仮想メモリ８Ｃの記憶領域は、例えば、５１２バイトのページ単位で、各キュー８Ｂに登録される。これにより、仮想メモリ８Ｃの記憶領域は、複数の領域に分割される。分割された各領域は、各プログラムプロダクト８Ａによって使用される。
【００３３】
従って、一つのプログラムプロダクト８Ａに割り当てられてる仮想メモリ８Ｃの分割領域は、基本的に、他の各プログラムプロダクト８Ａに割り当てられる仮想メモリ８Ｃの分割領域に影響を与えない。しかし、後述の実施例から明らかなように、仮想メモリ８Ｃの分割領域内で使用頻度の低いページは、その分割領域から取り外されて、別の分割領域に追加される。
【００３４】
仮想メモリ８Ｃの記憶領域のうち、いずれのプログラムプロダクト８Ａにも割り当てられていない領域は、未使用の記憶領域である。未使用の記憶領域は、フリー領域と呼ぶこともできる。未使用の記憶領域に属する各ページは、フリーキュー８Ｂによって管理することができる。
【００３５】
仮想メモリ８Ｃの各分割領域には、その分割領域を使用するプログラムプロダクト８Ａに応じて、共有メモリ６内の少なくとも一部のデータがコピーされる。従って、各プログラムプロダクト８Ａは、共有メモリ６にアクセスすることなく、仮想メモリ８Ｃの分割領域にアクセスするだけで、処理を実行することができる。仮想メモリ８Ｃの分割領域内に存在しないデータをプログラムプロダクト８Ａが使用する場合、共有メモリ６から仮想メモリ８Ｃの分割領域に、必要なデータがコピーされる。
【００３６】
なお、ローカルメモリ９にデータを供給する供給元は、共有メモリ６に限らない。後述の実施例のように、ディスクドライブ５内の少なくとも一部のデータを、ローカルメモリ９にコピーして使用することもできる。
【００３７】
本実施例では、記憶デバイスとして、ハードディスクドライブ５を例に挙げる。しかし、ハードディスクドライブに限らず、例えば、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等の、データを読み書き可能な不揮発性の記憶デバイスを利用可能である。
【００３８】
ハードディスクデバイスを用いる場合、例えば、FC（Fibre Channel）ディスク、SCSI（Small Computer System Interface）ディスク、SATAディスク、ATA（AT Attachment）ディスク、SAS（Serial Attached SCSI）ディスク等を用いることができる。
記憶デバイスとして半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、FeRAM（Ferroelectric Random Access Memory）、MRAM（MagnetoresistiveRandom Access Memory）、相変化メモリ（Ovonic Unified Memory）、RRAM（Resistance RAM）」等の種々のメモリデバイスを利用可能である。本発明に用いることのできる記憶デバイスの種類は、上記のものに限定されず、将来製品化される他の種類の記憶デバイスを利用することもできるであろう。
【００３９】
本実施形態では、複数のマイクロプロセッサ部８によって共有されるローカルメモリ９を用いて仮想メモリ８Ｃを生成し、この仮想メモリ８Ｃを各マイクロプロセッサ部８により実現される各プログラムプロダクト８Ａに分割して提供する。
【００４０】
従って、本実施形態によれば、複数のプログラムプロダクト８Ａが同時に動作している場合でも、あるプログラムプロダクト８Ａに割り当てられている仮想メモリ容量が、他のプログラムプロダクト８Ａに割り当てられている仮想メモリ容量に影響を及ぼすのを、抑制できる。これにより、複数のマイクロプロセッサ部８により実行される複数のプログラムプロダクト８Ａが混在して同時に動作する場合でも、ヒットミスの発生を低減することができ、各プログラムプロダクト８Ａを円滑に動作させることができる。即ち、本実施形態の仮想メモリ管理技術を用いれば、限られたサイズの仮想メモリ８Ｃを有効に利用することができる。以下、本実施形態を詳細に説明する。
【実施例１】
【００４１】
図２は、本実施例による記憶制御装置１０を備えるストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、一つまたは複数の記憶制御装置１０と、一つまたは複数のホスト２０と、少なくとも一つの管理サーバ３０とを備えて構成される。ストレージシステムは、別の記憶制御装置４０を備えることもできる。記憶制御装置１０は、図１中の記憶制御装置１に対応する。ホスト２０は、図１中のホスト２に対応する。管理サーバ３０及び別の記憶制御装置４０は、図１では省略されている。記憶制御装置１０，ホスト２０、管理サーバ３０の詳細は、それぞれ後述する。
【００４２】
ストレージシステムのネットワーク構成を説明する。各ホスト２０と記憶制御装置１０とは、例えば、ＳＡＮのような通信ネットワークＣＮ１を介して、相互通信可能に接続されている。IP（Internet Protocol）を利用するIP_SANでもよいし、FCP（Fibre Channel Protocol）を利用するFC_SANでもよい。
【００４３】
管理サーバ３０は、例えば、ＬＡＮ（Local Area Network）のような、管理用の通信ネットワークＣＮ３を介して、各ホスト２０及び記憶制御装置１０とそれぞれ相互通信可能に接続されている。なお、ストレージシステムが外部記憶制御装置４０を備える場合、管理サーバ３０と外部記憶制御装置４０とを、通信ネットワークＣＮ３を介して相互通信可能に接続することもできる。
【００４４】
なお、図２中では、データ入出力用ネットワークＣＮ１と管理用ネットワークＣＮ３とを分離する場合を示すが、これに限らず、一つの通信ネットワークを用いて、データの入出力及び管理を行う構成でもよい。例えば、管理用通信ネットワークＣＮ３を廃止し、通信ネットワークＣＮ１のみを備える構成でもよい。
【００４５】
外部記憶制御装置４０は、記憶制御装置１０の外部に存在する別の記憶制御装置であるため、本実施例では、外部記憶制御装置と呼ぶ。外部記憶制御装置４０は、ＳＡＮのような、外部接続用通信ネットワークＣＮ２を介して、記憶制御装置１０に接続される。なお、外部接続用通信ネットワークＣＮ２を廃止し、データ入出力用ネットワークＣＮ１によって記憶制御装置１０と外部記憶制御装置４０とを接続する構成でも良い。
【００４６】
記憶制御装置１０の構成を説明する。記憶制御装置１０は、例えば、コントローラ１００と、ハードディスク搭載部２００とを備える。コントローラ１００は、少なくとも一つ以上のチャネルアダプタ（以下、ＣＨＡ）１１０と、少なくとも一つ以上のディスクアダプタ（以下、ＤＫＡ）１２０と、サービスプロセッサ（以下、ＳＶＰ）１３０と、キャッシュメモリ１４０と、共有メモリ１５０と、相互結合部１６０とを備えている。ＣＨＡ１１０，ＤＫＡ１２０は、それぞれ複数ずつコントローラ１００内に設けられる。
【００４７】
ＣＨＡ１１０は、ホスト２０との間のデータ通信を制御するためのもので、例えば、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。各ＣＨＡ１１０は、少なくとも一つ以上の通信ポートを備える。通信ポートには、例えば、WWN（World Wide Name）のような識別情報が設定される。ホスト２０と記憶制御装置１０とが、iSCSI（internet Small Computer System Interface）等を用いてデータ通信を行う場合、通信ポートには、ＩＰ（Internet Protocol）アドレス等の識別情報が設定される。
【００４８】
図２中には、２種類のＣＨＡ１１０が示されている。図２中右側に位置する一方のＣＨＡ１１０は、ホスト２０からのコマンドを受信して処理するためのものであり、その通信ポートは、ターゲットポートとなっている。図２中左側に位置する他方のＣＨＡ１１０は、外部記憶制御装置４０にコマンドを発行するためのものであり、その通信ポートは、イニシエータポートとなっている。
【００４９】
ＤＫＡ１２０は、各ディスクドライブ２１０との間のデータ通信を制御するためのもので、ＣＨＡ１１０と同様に、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。
【００５０】
ＤＫＡ１２０と各ディスクドライブ２１０とは、例えば、ファイバチャネルプロトコルに従う通信経路を介して接続されている。ＤＫＡ１２０と各ディスクドライブ２１０とは、ブロック単位のデータ転送を行う。コントローラ１００が各ディスクドライブ２１０にアクセスするための経路は、冗長化されている。いずれか一方のＤＫＡ１２０や通信経路に障害が発生した場合でも、コントローラ１００は、他方のＤＫＡ１２０や通信経路を用いて、ディスクドライブ２１０にアクセス可能である。同様に、ホスト２０とコントローラ１００との間の経路、外部記憶制御装置４０とコントローラ１００との間の経路も冗長化することができる。なお、ＤＫＡ１２０は、ディスクドライブ２１０の状態を随時監視している。ＳＶＰ１３０は、ＤＫＡ１２０による監視結果を、内部ネットワークＣＮ４を介して取得する。
【００５１】
ＣＨＡ１１０及びＤＫＡ１２０の動作を簡単に説明する。ＣＨＡ１１０は、ホスト２０から発行されたリードコマンドを受信すると、このリードコマンドを共有メモリ１５０に記憶させる。ＤＫＡ１２０は、共有メモリ１５０を随時参照しており、未処理のリードコマンドを発見すると、ディスクドライブ２１０からデータを読み出して、キャッシュメモリ１４０に記憶させる。ＣＨＡ１１０は、キャッシュメモリ１４０に移されたデータを読み出し、ホスト２０に送信する。
【００５２】
一方、ＣＨＡ１１０は、ホスト２０から発行されたライトコマンドを受信すると、このライトコマンドを共有メモリ１５０に記憶させる。また、ＣＨＡ１１０は、受信したライトデータをキャッシュメモリ１４０に記憶させる。ＣＨＡ１１０は、キャッシュメモリ１４０にライトデータを記憶させた後、ホスト２０に書込み完了を報告する。ＤＫＡ１２０は、共有メモリ１５０に記憶されたライトコマンドに従って、キャッシュメモリ１４０に記憶されたデータを読出し、所定のディスクドライブ２１０に記憶させる。
【００５３】
ＳＶＰ１３０は、ＬＡＮ（Local Area Network）のような内部ネットワークＣＮ４を介して、ＣＨＡ１１０及びＤＫＡ１２０と通信可能に接続される。また、ＳＶＰ１３０は、ＬＡＮやインターネット等の通信ネットワークＣＮ３を介して、管理サーバ３０に接続されている。ＳＶＰ１３０は、記憶制御装置１０内部の各種状態を収集し、管理サーバ３０に提供する。ＳＶＰ１３０は、管理サーバ３０からの指示に応じて、記憶制御装置１０の構成や仮想メモリの閾値等を設定する。なお、ＳＶＰ１３０は、ＣＨＡ１１０またはＤＫＡ１２０のいずれか一方にのみ接続されてもよい。ＳＶＰ１３０は、共有メモリ１５０を介して、各種のステータス情報を収集可能だからである。
【００５４】
キャッシュメモリ１４０は、例えば、ホスト２０から受信したデータ等を記憶するものである。キャッシュメモリ１４０は、例えば揮発メモリから構成される。共有メモリ１５０は、例えば不揮発メモリから構成される。共有メモリ１５０には、例えば、後述の各種管理用情報等が記憶される。
【００５５】
共有メモリ１５０及びキャッシュメモリ１４０は、別々のメモリ基板としてそれぞれ構成することもできるし、または、同一のメモリ基板上に混在して設けることもできる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
【００５６】
相互結合部１６０は、各ＣＨＡ１１０と、ＤＫＡ１２０と、キャッシュメモリ１４０及び共有メモリ１５０をそれぞれ相互に接続させる。これにより、全てのＣＨＡ１１０，ＤＫＡ１２０は、キャッシュメモリ１４０及び共有メモリ１５０にそれぞれアクセス可能である。相互結合部１６０は、例えばクロスバスイッチ等として構成される。
【００５７】
コントローラ１００の構成は、上述の構成に限定されない。例えば、一つまたは複数の制御基板上に、ホスト２０や外部記憶制御装置４０との間のデータ通信をそれぞれ行う機能と、ディスクドライブ２１０との間のデータ通信を行う機能と、データや各種管理情報等を保存する機能等を、それぞれ設ける構成でもよい。このようなコントローラ基板を用いることにより、記憶制御装置１０の外径寸法を小型化することができる。
【００５８】
ハードディスク搭載部２００の構成について説明する。ハードディスク搭載部２００は、複数のディスクドライブ２１０を備えている。ディスクドライブ２１０としては、例えば、ＦＣディスク、ＳＡＴＡディスク等のような種々のハードディスクドライブを用いることができる。
【００５９】
RAID構成等によっても相違するが、例えば、３個１組や４個１組等の所定数のディスクドライブ２１０によって、パリティグループが構成される。パリティグループは、パリティグループ内の各ディスクドライブ２１０がそれぞれ有する物理的記憶領域を仮想化したものである。パリティグループは、仮想化された物理的記憶デバイスである。
【００６０】
パリティグループの有する物理的記憶領域には、所定サイズまたは可変サイズの論理デバイス（LDEV:Logigal DEVice）２２０を一つまたは複数設定できる。論理デバイス２２０は、論理的な記憶デバイスであり、論理ボリュームに対応付けられる。
【００６１】
外部記憶制御装置４０は、記憶制御装置１０と同様に、例えば、コントローラ４１と、ハードディスク搭載部４２とを備えて構成することができる。コントローラ４１は、ディスクドライブの記憶領域を利用して、論理ボリュームを生成する。
【００６２】
外部記憶制御装置４０は、記憶制御装置１０から見た場合に記憶制御装置１０の外部に存在するため、外部記憶制御装置と呼ぶ。また、外部記憶制御装置４０の有するディスクドライブを外部ディスクと、外部記憶制御装置４０の有する論理ボリュームを外部ボリュームと、それぞれ呼ぶ場合がある。
【００６３】
例えば、外部記憶制御装置４０内の論理ボリュームは、通信ネットワークＣＮ２等を介して、記憶制御装置１０内に設けられる仮想的な論理デバイス（ＶＤＥＶ:Virtual DEVice）に対応付けられる。そして、仮想的な論理デバイスの記憶領域上には、仮想的な論理ボリュームを設定することができる。従って、記憶制御装置１０は、外部記憶制御装置４０内の論理ボリューム（外部ボリューム）を、それがあたかも記憶制御装置１０内の論理ボリュームであるかのようにして、ホスト２０に見せかけることができる。
【００６４】
仮想的な論理ボリュームへのアクセス要求が発生した場合、記憶制御装置１０は、仮想的論理ボリュームに関するアクセス要求のコマンドを、外部記憶制御装置４０内の論理ボリュームにアクセスするためのコマンドに変換する。変換されたコマンドは、通信ネットワークＣＮ２を介して、記憶制御装置１０から外部記憶制御装置４０に送信される。外部記憶制御装置４０は、記憶制御装置１０から受領したコマンドに従ってデータの読み書きを行い、その結果を記憶制御装置１０に返す。
【００６５】
このように、記憶制御装置１０は、外部に存在する別の記憶制御装置４０内の記憶資源（外部ボリューム）を、記憶制御装置１０内の記憶資源であるかのように利用することができる。従って、記憶制御装置１０は、ディスクドライブ２１０やＤＫＡ１２０を備える必要は必ずしもない。外部記憶制御装置４０内のハードディスクが提供する記憶領域を使用可能だからである。記憶制御装置１０は、高機能のファイバチャネルスイッチのように構成することもできる。
【００６６】
図３は、ＣＨＡ１１０の構成を示す説明図である。ＣＨＡ１１０は、例えば、複数のマイクロプロセッサ（ＣＰＵ）１１１と、周辺処理部１１２と、ローカルメモリ１１３と、チャネルプロトコル処理部１１４と、内部ネットワークインターフェース部１１５とを備えて構成される。
【００６７】
各マイクロプロセッサ１１１は、バス１１６を介して、周辺処理部１１２に接続されている。周辺処理部１１２は、ローカルメモリ１１３に接続されており、ローカルメモリ１１３の動作を制御する。さらに、周辺処理部１１２は、バス１１７を介して、各チャネルプロトコル処理部１１４にそれぞれ接続されている。周辺処理部１１２は、各マイクロプロセッサ１１１，各チャネルプロトコル処理部１１４，内部ネットワークインターフェース部１１５から、それぞれ入力されるパケットを処理する。例えば、転送先がローカルメモリ１１３になっているパケットの場合、周辺処理部１１２は、そのパケットを処理し、必要ならば処理結果をパケット送信元に返す。内部ネットワークインターフェース部１１５は、相互結合部１６０を介して、他のＣＨＡ１１０，ＤＫＡ１２０，キャッシュメモリ１４０及び共有メモリ１５０と通信するための回路である。
【００６８】
ローカルメモリ１１３内には、例えば、制御プログラム１１３Ｐ、通信用領域１１３Ｂ及び各種のテーブルＴが記憶される。各マイクロプロセッサ１１１は、制御プログラム１１３Ｐを読み出して実行する。各マイクロプロセッサ１１１は、通信用領域１１３Ｂを介して、他のマイクロプロセッサ１１１と通信を行う。
【００６９】
各種テーブルＴの元データは、共有メモリ１５０内に存在する。即ち、共有メモリ１５０内の各種テーブルＴのデータは、必要に応じて、その少なくとも一部がローカルメモリ１１３内にコピーされる。
【００７０】
チャネルプロトコル処理部１１４は、ホスト２０との間で通信を行うための処理を実行する。チャネルプロトコル処理部１１４は、ホスト２０からのアクセス要求を受信すると、そのホスト２０を識別するための番号やＬＵＮ（Logical Unit Number）、アクセス先アドレス等をマイクロプロセッサ１１１に通知する。
【００７１】
マイクロプロセッサ１１１は、チャネルプロトコル処理部１１４から通知された内容に基づいて、リード要求の対象とされたデータをホスト２０に送信させるための転送リストを作成する。チャネルプロトコル処理部１１４は、転送リストに基づいて、キャッシュメモリ１４０またはフラッシュメモリデバイス１２０のいずれかからデータを読み出して、ホスト２０に送信する。
【００７２】
ライト要求の場合、マイクロプロセッサ１１１は、転送リストにライトデータの格納先アドレスをセットする。チャネルプロトコル処理部１１４は、転送リストに基づいて、キャッシュメモリ１４０にライトデータを転送する。なお、ＤＫＡ１２０は、制御プログラム１１３Ｐの内容等は相違するが、実質的にＣＨＡ１１０と同様に構成される。
【００７３】
図４は、マッピングテーブルＴ１、構成管理テーブルＴ２及びアクセス履歴管理テーブルＴ３の一例を示す説明図である。上述の通り、各テーブルＴ１〜Ｔ３の全体は、共有メモリ１５０内に記憶されており、必要に応じて、各テーブルＴ１〜Ｔ３の一部のデータが、各ＣＨＡ１１０や各ＤＫＡ１２０のローカルメモリ１１３内にコピーされる。
【００７４】
マッピングテーブルＴ１は、記憶制御装置１０が他の記憶制御装置４０内の論理ボリューム（つまり、結果的にディスクドライブである）を利用するために使用される。マッピングテーブルＴ１は、例えば、ＬＵＮと、論理デバイス（ＬＤＥＶ）を識別するための番号と、仮想的な中間デバイス（ＶＤＥＶ）を識別するための番号とを対応付けることにより構成することができる。
【００７５】
仮想的な中間デバイスを識別するための情報には、例えば、仮想的な中間デバイスの番号と、仮想的な中間デバイスが接続される物理的な記憶デバイスの種類を示す情報と、物理的な記憶デバイスへ接続するための経路情報等を含めることができる。仮想的な中間デバイスが、記憶制御装置１０内のディスクドライブ２１０に対応付けられている場合、ディスクドライブ２１０にアクセスするための内部パス情報が設定される。
【００７６】
仮想的な中間デバイスが、外部記憶制御装置４０内の論理ボリュームに接続されている場合、その論理ボリュームへアクセスするために必要な外部パス情報が設定される。外部パス情報には、例えば、ＷＷＮやＬＵＮ等が含まれる。記憶制御装置１０のコントローラ１００は、マッピングテーブルＴ１を参照することにより、ホスト２０から受信したコマンドを、外部記憶制御装置４０に送信するためのコマンドに変換する。
【００７７】
構成管理テーブルＴ２は、記憶制御装置１０の管理下にある論理ボリュームの構成を管理するためのテーブルである。構成管理テーブルＴ２は、例えば、論理ボリュームを識別するための番号（ＬＵ＃）と、その論理ボリュームに対応付けられる論理デバイスを識別するための番号（ＬＤＥＶ＃）と、その論理デバイスに対応付けられる仮想的な中間デバイスを識別するための番号（ＶＤＥＶ＃）と、その仮想的な中間デバイスに対応付けられる物理的記憶デバイスを識別するための番号（ＰＤＥＶ＃）とを、管理する。
【００７８】
なお、記憶制御装置１０に提供する論理ボリュームを、ＡＯＵ機能を利用した仮想的な論理ボリューム（以下、ＡＯＵボリュームとも呼ぶ）として生成する場合、構成管理テーブルＴ２にＡＯＵボリュームの構成に関する情報を記憶させることができる。ＡＯＵ機能とは、ホスト２０からのアクセスに応じて、プールされている記憶領域を論理ボリュームに対応付ける機能である。即ち、ＡＯＵボリュームは、プールされた記憶領域を必要に応じて掻き集めることにより生成される。ＡＯＵ機能により、必要なサイズのボリュームを必要に応じて生成することができる。
【００７９】
アクセス履歴管理テーブルＴ３は、ホスト２０による論理ボリュームの使用状態の履歴を管理するテーブルである。アクセス履歴管理テーブルＴ３は、例えば、論理ボリュームを識別するための番号と、アクセスパターンと、アクセス回数等を対応付けて管理することができる。アクセスパターンとは、ホスト２０が論理ボリュームにアクセスする場合のパターンを意味し、ランダムアクセスまたはシーケンシャルアクセスのいずれかを示す値が設定される。
【００８０】
図５は、本実施例による仮想メモリ管理方法を模式的に示す説明図である。図５（ａ）に示すように、ローカルメモリ１１３の記憶領域は、例えば、５１２バイトのページ１１３Ａ単位で管理される。物理的なページであるため、図中では「ＰＰ」と示す。
【００８１】
仮想メモリ５００も、例えば、５１２バイトのページ５０１単位で管理される。仮想的なページであるため、図中では「ＶＰ」と示す。物理ページ１１３Ａのサイズと仮想ページ５０１のサイズとをそれぞれ５１２バイトに設定することにより、制御構造を簡素化することができる。但し、これに限らず、物理ページ１１３Ａのサイズと仮想ページ５０１のサイズとを異ならせる構成でもよい。
【００８２】
物理ページ１１３Ａと仮想ページ５０１には、それぞれを識別するためのページ番号が予め設定されている。物理ページ１１３Ａのページ番号を「ＰＰＮ」、仮想ページのページ番号を「ＶＰＮ」として示す。ページ管理テーブルＴ４は、仮想ページ番号ＶＰＮと物理ページ番号ＰＰＮとを対応付けて管理する。ページ管理テーブルＴ４によって、仮想ページ５０１へのアクセスは、その仮想ページに対応付けられている物理ページ１１３Ａへのアクセスに変換される。
【００８３】
仮想メモリ５００の各仮想ページ５０１は、キュー５１０に登録されることにより、所定の機能（ＡＯＵ機能等）によって使用されることになる。仮想メモリ５００の記憶領域（全仮想ページ５０１）のうち、いずれかの機能に割り当てられている領域５０２は、分割領域または割当済み領域と呼ぶことができる。仮想メモリ５００の記憶領域のうち、いずれの機能にも割り当てられていない領域５０３は、未使用領域またはフリー領域と呼ぶことができる。
【００８４】
図５（ｂ）は、仮想メモリ５００を各所定の機能毎に分割して管理するためのキュー構造を示している。所定の機能としては、例えば、ＡＯＵ機能、記憶制御装置１０の構成を管理する機能、ホスト２０のアクセスパターンを学習して管理する機能、ホスト２０と論理ボリュームとの間の通信経路の構成を管理する機能等を挙げることができる。これらの機能は一例であって、本発明は上述の機能に限定されない。例えば、データをコピーする機能等の他の機能にも本発明は適用可能である。
【００８５】
キュー５１０は、所定の機能毎にそれぞれ用意される。各キュー５１０には、その機能によって使用される仮想ページ５０１を特定するための、仮想ページ管理データ５１１が少なくとも一つ以上繋がれる。仮想ページ管理データ５１１には、仮想ページ５０１が最後に使用された時刻（図中、ＬＴと示す）を含めることができる。
【００８６】
図６は、閾値管理テーブルＴ５及び各キュー５１０（即ち、各機能）に割り当てられる仮想メモリ容量を示す説明図である。図６の上側に示す閾値管理テーブルＴ５は、各キュー５１０に設定される閾値Ｔｈを管理するためのテーブルである。閾値Ｔｈは、各キュー５１０に最低限割り当てられる仮想メモリ容量（仮想ページ数）を規定する。逆に言えば、閾値Ｔｈを超えた分の仮想メモリ容量は、そのキューから奪われて別のキューに割り当てられる可能性がある。
【００８７】
図６の下側に示すように、未使用の仮想ページ５０１から仮想ページ単位で、各キュー５１０に仮想ページが割り当てられる。各キュー５１０には、それぞれの閾値Ｔｈ以上の仮想ページが少なくとも割り当てられる。即ち、各キュー５１０に関するページ確保要求を満たすまで、閾値Ｔｈを超えた量の仮想ページが割り当てられる。
【００８８】
図７は、閾値Ｔｈを決定するための処理を示すフローチャートである。以下に示す各フローチャートは、本発明の理解及び実施に必要な範囲で処理の概要を示すものであり、実際のコンピュータプログラムとは相違する場合がある。いわゆる当業者であれば、フローチャート中のステップを変更したり、他のステップを追加等することができる。
【００８９】
コントローラ１００は、記憶制御装置１０の構成情報（Ｔ２または／及びＴ３）を参照し（Ｓ１０）、さらに、各プログラムプロダクトの使用状態を判定する（Ｓ１１）。即ち、コントローラ１００は、どのプログラムプロダクトが起動しているか、あるいは、起動が予定されているかを判別する。
【００９０】
コントローラ１００は、各プログラムプロダクトに関連づけられる各キュー５１０の閾値Ｔｈをそれぞれ決定する（Ｓ１２）。例えば、ユーザは、管理サーバ３０からＳＶＰ１３０を介して、閾値Ｔｈの値を手動で設定することができる。あるいは、コントローラ１００は、予め設定される初期閾値を自動的に選択する構成でもよい。
【００９１】
コントローラ１００は、決定された閾値Ｔｈを閾値管理テーブルＴ５に記憶させる（Ｓ１３）。キュー５１０には、後述のページ確保処理によって、閾値Ｔｈ以上の仮想ページが登録される。各プログラムプロダクトは、キュー５１０に登録された仮想ページに、共有メモリ１５０に記憶されている各種管理情報（各種テーブルＴ）の有するデータうち、必要なデータをコピーして使用する（Ｓ１４）。
【００９２】
次に、コントローラ１００は、記憶制御装置１０の構成が変更されたか否かを判定する（Ｓ１５）。即ち、閾値決定処理は、記憶制御装置１０の構成変更を契機として実行させることができる。記憶制御装置１０の構成変更としては、例えば、論理ボリュームの生成、ホスト２０に接続される論理ボリュームの変更、ディスクドライブ２１０の増設や減設等を挙げることができる。ユーザは、管理サーバ３０からＳＶＰ１３０を介して、記憶制御装置１０の構成変更を指示することができる。なお、記憶制御装置１０の構成を管理するための機能を、ホスト２０が備える構成でもよい。この場合、ユーザは、ホスト２０内の記憶制御装置管理機能を用いて、記憶制御装置１０の構成変更を指示できる。
【００９３】
構成変更が指示されると（S15:YES）、Ｓ１０に戻る。構成変更が指示されない場合（S15:NO）、コントローラ１００は、Ｓ１４に戻り、各機能によって仮想メモリ５００を分割して使用させる。
【００９４】
図８は、各キュー５１０に仮想ページを割り得てるためのページ確保処理を示すフローチャートである。各プログラムプロダクトは、処理量の増大等に応じて、自分自身に割り当てられるべき仮想メモリ容量を要求する（Ｓ２０）。
【００９５】
プログラムプロダクトから仮想ページの確保を要求された場合（S20:YES）、コントローラ１００は、未使用領域内に仮想ページが残っているか否かを判定する（Ｓ２１）。未使用領域内に仮想ページが残っている場合（S21:YES）、コントローラ１００は、ページの確保を要求するプログラムプロダクトに、未使用領域内の仮想ページを割り当て（Ｓ２２）、要求された量の仮想ページを確保できたか否かを判定する（Ｓ２３）。即ち、コントローラ１００は、プログラムプロダクトが希望する量の仮想メモリ量を割り当てることができたか否かを判定する（Ｓ２３）。
【００９６】
プログラムプロダクトの要求するだけの仮想ページを、そのプログラムプロダクトに割り当てることができた場合（S23:YES）、本処理は終了する。プログラムプロダクトの要求する量の仮想ページをそのプログラムプロダクトに割り当てていない場合（S23:NO）、Ｓ２１に戻る。従って、未使用記憶領域内の仮想ページ（未割り当ての仮想ページ）から優先して、プログラムプロダクトに割り当てられていく。
【００９７】
別のプログラムプロダクトが仮想ページの確保を要求した場合（S20:YES）、前記同様に、未使用領域内の仮想ページが優先して割り当てられる。そして、未使用領域の仮想ページが無くなった後で、さらに仮想ページの割り当てが要求された場合（S21:NO）、コントローラ１００は、他のキュー５１０（即ち、他のプログラムプロダクト）に割り当てられている仮想ページの中に、使用されていない仮想ページが存在するか否かを判定する（Ｓ２４）。使用されていない仮想ページとは、例えば、最近の所定期間内に使用されていない仮想ページである。
【００９８】
他のキュー５１０に割当済みの、最近使用されていない仮想ページを発見した場合（S24:YES）、コントローラ１００は、その最近使用されていない仮想ページを現在のキュー５１０から解放して、仮想ページの追加を希望しているプログラムプロダクトのキュー５１０に登録する（Ｓ２５）。
【００９９】
このように、本実施例では、未使用領域の仮想ページを使い切った後、他のプログラムプロダクトに割り当てられている仮想ページのうち、不要になったと考えられる仮想ページを使用する。
【０１００】
いずれかのプログラムプロダクトに既に割り当てられている仮想ページ群の中に、最近使用されていない仮想ページを発見できない場合（S24:NO）、コントローラ１００は、Ｓ２０で仮想ページの確保を要求するプログラムプロダクトに割り当てられている仮想ページの中から、最古の仮想ページを解放して、再びそのプログラムプロダクトに割り当てる（Ｓ２６）。
【０１０１】
このように、本実施例では、他のプログラムプロダクトに割り当てられている仮想ページの中から不要な仮想ページを奪って利用することができない場合、ページの確保を要求するプログラムプロダクトに割り当てられている仮想ページを再利用する。
【０１０２】
従って、プログラムプロダクトに仮想ページを割り当てる場合の、仮想ページの選択順位は、第１順位として未使用領域内の仮想ページ、第２順位として他のプログラムプロダクトで不要となった仮想ページ、第３順位として自プログラムプロダクト内の最古の仮想ページとなっている。
【０１０３】
なお、記憶制御装置１０の起動時に実行されるプログラムプロダクトの数（即ち、キュー５１０の本数）等によっても相違するが、記憶制御装置１０の起動時には、未使用領域内に多数の仮想ページが存在するため、各プログラムプロダクトには、未使用の仮想ページがそれぞれ割り当てられるであろう。そして、例えば、ホスト２０からのアクセス頻度が増大したり、起動するプログラムプロダクトの数が増加したような場合には、第２順位の仮想ページが用いられる。さらに、プログラムプロダクトが仮想ページを要求する場合、第３順位の仮想ページが使用される。
【０１０４】
図９は、各プログラムプロダクトに割当済みの仮想ページを未使用領域内に戻すための処理を示すフローチャートである。コントローラ１００は、閾値以上の仮想ページが割り当てられているキュー５１０が存在するか否かを検査する（Ｓ３０）。
【０１０５】
閾値以上の仮想ページを有するキュー５１０が存在する場合（S30:YES）、コントローラ１００は、その閾値以上の仮想ページを有するキュー５１０に登録されている各仮想ページの中から、所定時間以上アクセスされていない仮想ページを解放し、未使用領域に戻す（Ｓ３１）。
【０１０６】
閾値以上の仮想ページを有するキュー５１０が存在しない場合（S30:NO）、コントローラ１００は、各キュー５１０に登録されている仮想ページの中から、所定時間以上アクセスされていない仮想ページを解放し、未使用領域に戻す（Ｓ３２）。
【０１０７】
コントローラ１００は、所定周期が経過するまで待機し（Ｓ３３）、所定周期が経過した場合（S33:YES）、Ｓ３０に戻る。つまり、この処理は、所定周期毎に実行され、所定時間以上使用されていない仮想ページは、強制的に未使用領域に戻される。なお、Ｓ３１における第１所定時間とＳ３２における第２所定時間とは、同一の値に設定することもできるし、異なる値に設定することもできる。以上述べたページ確保処理、割当済みの仮想ページを未使用領域に戻す処理は、それぞれ独立して動作する。
【０１０８】
本実施例は上述の構成を備えるため、複数のプログラムプロダクトが同時に動作している場合でも、あるプログラムプロダクトに割り当てられている仮想メモリ容量が、他のプログラムプロダクトに割り当てられている仮想メモリ容量に影響を及ぼすのを、抑制することができる。
【０１０９】
従って、複数のマイクロプロセッサにより実行される複数のプログラムプロダクトが混在して同時に動作する場合でも、ヒットミスの発生を低減することができ、各プログラムプロダクトを円滑に動作させることができ、限られたサイズの仮想メモリを有効に利用することができる。
【実施例２】
【０１１０】
図１０に基づいて本発明の第２実施例を説明する。本実施例は、第１実施例の変形例に該当する。図１０は、本実施例による閾値決定処理のフローチャートである。本実施例では、ディスクドライブ２１０の記憶領域に記憶されているデータの少なくとも一部を、必要に応じて、仮想メモリ内の分割領域にコピーする。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【０１１１】
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０１１２】
【図１】本発明の実施形態の概念を示す説明図である。
【図２】記憶制御装置を含むストレージシステムの全体構成を示す説明図である。
【図３】チャネルアダプタの構成を示す説明図である。
【図４】マッピングテーブル等の構成を示す説明図である。
【図５】仮想メモリを管理する方法を示す説明図である。
【図６】閾値管理テーブルの構成を示す説明図である。
【図７】閾値決定処理を示すフローチャートである。
【図８】仮想ページを確保するための処理を示すフローチャートである。
【図９】割当済みの仮想ページを解放して未使用領域に戻すための処理を示すフローチャートである。
【図１０】第２実施例の記憶制御装置により実行される、閾値決定処理を示すフローチャートである。
【符号の説明】
【０１１３】
１…記憶制御装置、２…ホスト、３…上位通信制御部、４…下位通信制御部、５…ハードディスクドライブ、６…共有メモリ、７…通信インターフェース部、８…マイクロプロセッサ部、８Ａ…プログラムプロダクト、８Ｂ…キュー、８Ｃ…仮想メモリ、９…ローカルメモリ、１０…記憶制御装置、２０…ホスト、３０…管理サーバ、４０…外部記憶制御装置、４１…コントローラ、４２…ハードディスク搭載部、１００…コントローラ、１１０…チャネルアダプタ、１１１…マイクロプロセッサ、１１２…周辺処理部、１１３…ローカルメモリ、１１３Ｐ…制御プログラム、１１３Ａ…物理ページ、１１３Ｂ…通信用領域、１１４…チャネルプロトコル処理部、１１５…内部ネットワークインターフェース部、１１６，１１７…バス、１２０…ディスクアダプタ、１４０…キャッシュメモリ、１５０…共有メモリ、１６０…相互結合部、２００…ハードディスク搭載部、２１０…ディスクドライブ、２２０…論理デバイス、５００…仮想メモリ、５０１…仮想ページ、５０２…割当済みの領域、５０３…未使用領域、５１０…キュー、５１１…仮想ページ管理データ
【図１】
2008276326.tif 000003
【図２】
2008276326.tif 000004
【図３】
2008276326.tif 000005
【図４】
2008276326.tif 000006
【図５】
2008276326.tif 000007
【図６】
2008276326.tif 000008
【図７】
2008276326.tif 000009
【図８】
2008276326.tif 000010
【図９】
2008276326.tif 000011
【図１０】
2008276326.tif 000012