(57)【要約】【課題】複数のプロセッサを有するストレージシステムにおいて、多数のローカルメモリを必要とせずに、共有メモリ上の制御情報へのアクセス性能を向上させることにより、さらに高性能なストレージシステムを提供する。【解決手段】１つ以上のＬＤＥＶ１５００と、１つ以上のプロセッサ１２１０と、各プロセッサ１２１０に対応するローカルメモリ１２２０と、各プロセッサ１２１０に共有される共有制御用メモリ１３００とを有し、Ｉ／Ｏ処理３１００やアプリケーション処理３２００に関する制御情報４０００を共有制御用メモリ１３００に格納するストレージシステム１０００であって、プロセッサ１２１０は、共有制御用メモリ１３００に格納された制御情報４０００を参照する際に、プロセッサ１２１０に対応するローカルメモリ１２２０に、制御情報４０００の一部を制御情報４０００の種別毎に格納先エリアを分けてキャッシュする。【選択図】図１
2010086211.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のボリュームと、１つ以上のプロセッサと、前記各プロセッサに対応するローカルメモリと、前記各プロセッサに共有される共有メモリとを有し、
Ｉ／Ｏ処理やストレージアプリケーションに係る処理に関する制御情報を前記共有メモリに格納するストレージシステムであって、
前記プロセッサは、前記共有メモリに格納された前記制御情報を参照する際に、前記プロセッサに対応する前記ローカルメモリに、前記制御情報の一部を前記制御情報の種別毎に格納先エリアを分けてキャッシュすることを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムにおいて、
前記プロセッサは、前記制御情報を種別毎に構成依存情報と容量依存情報とに区別して管理し、前記ローカルメモリに前記制御情報の種別毎に前記格納先エリアを確保する際に、前記構成依存情報に対して優先的に前記格納先エリアを確保することを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムにおいて、
前記プロセッサは、前記共有メモリに格納された前記制御情報を参照する際に、前記制御情報の種別毎に、参照対象の前記制御情報を前記ローカルメモリにキャッシュするか否かを判断することを特徴とするストレージシステム。
【請求項４】
請求項２に記載のストレージシステムにおいて、
前記プロセッサは、該ストレージシステムの構成が変更された場合は、変更後の構成に応じて前記格納先エリアの設定を変更することを特徴とするストレージシステム。
【請求項５】
請求項４に記載のストレージシステムにおいて、
前記プロセッサは、前記格納先エリアの設定を変更する際に、前記制御情報の種別毎に、対象の前記制御情報を参照してＩ／Ｏ処理もしくはストレージアプリケーションに係る処理が行われる前記ボリュームの数に応じて前記格納先エリアを確保することを特徴とするストレージシステム。
【請求項６】
請求項４に記載のストレージシステムにおいて、
前記プロセッサは、前記格納先エリアの設定を変更する際に、前記制御情報の種別毎に、対象の前記制御情報を参照してＩ／Ｏ処理もしくはストレージアプリケーションに係る処理が行われる前記ボリュームが１つ以上存在する場合は、全ての前記ボリュームの数分の前記格納先エリアを確保することを特徴とするストレージシステム。
【請求項７】
請求項２に記載のストレージシステムにおいて、
さらに管理端末を有し、前記管理端末に前記プロセッサ毎の前記格納先エリアの状況を表示し、前記管理端末から入力された内容に基づいて前記格納先エリアの設定を変更することを特徴とするストレージシステム。
【請求項８】
請求項７に記載のストレージシステムにおいて、
前記管理端末に表示する前記プロセッサ毎の前記格納先エリアの状況に、前記制御情報の種別毎の前記ローカルメモリに対するキャッシュヒット率を含むことを特徴とするストレージシステム。
【請求項９】
請求項１に記載のストレージシステムにおいて、
前記プロセッサは、前記共有メモリに格納された前記制御情報を更新する際に、他の前記プロセッサに前記制御情報の更新を通知することを特徴とするストレージシステム。
【請求項１０】
請求項９に記載のストレージシステムにおいて、
前記プロセッサは、他の前記プロセッサから前記制御情報の更新の通知を受け取った際に、更新の対象の前記制御情報が対応する前記ローカルメモリにキャッシュされている場合は、これを無効化することを特徴とするストレージシステム。
【請求項１１】
請求項９に記載のストレージシステムにおいて、
前記プロセッサは、前記共有メモリに格納された前記制御情報を更新する際に、更新の対象の前記制御情報が、いずれの他の前記プロセッサも対応する前記ローカルメモリにキャッシュしていない前記制御情報である場合は、他の前記プロセッサに前記制御情報の更新を通知しないことを特徴とするストレージシステム。
【請求項１２】
請求項１１に記載のストレージシステムにおいて、
いずれの他の前記プロセッサも対応する前記ローカルメモリにキャッシュしていない前記制御情報として、前記制御情報を参照してＩ／Ｏ処理もしくはストレージアプリケーションに係る処理が行われる前記ボリュームを担当する前記プロセッサのみがアクセスする前記制御情報を含むことを特徴とするストレージシステム。
【請求項１３】
１つ以上のボリュームと、１つ以上のプロセッサと、前記各プロセッサに対応するローカルメモリと、前記各プロセッサに共有される共有メモリとを有し、
Ｉ／Ｏ処理やストレージアプリケーションに係る処理に関する制御情報を前記共有メモリに格納するストレージシステムにおけるストレージシステム制御方法であって、
前記プロセッサが、前記共有メモリに格納された前記制御情報を参照する際に、前記プロセッサに対応する前記ローカルメモリに、前記制御情報の一部を前記制御情報の種別毎に格納先エリアを分けてキャッシュする処理を有することを特徴とするストレージシステム制御方法。
【請求項１４】
１つ以上のボリュームと、１つ以上のプロセッサと、前記各プロセッサに対応するローカルメモリと、前記各プロセッサに共有される共有メモリとを有し、
Ｉ／Ｏ処理やストレージアプリケーションに係る処理に関する制御情報を前記共有メモリに格納するストレージシステムにおける、前記プロセッサ上で動作する制御プログラムであって、
前記共有メモリに格納された前記制御情報を参照する際に、前記プロセッサに対応する前記ローカルメモリに、前記制御情報の一部を前記制御情報の種別毎に格納先エリアを分けてキャッシュすることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムの高性能化に関し、特に、複数のプロセッサを有し、共有メモリ上の制御情報を用いてディスク装置を制御するストレージシステムおよびその制御プログラムならびにストレージシステム制御方法に適用して有効な技術に関するものである。
【背景技術】
【０００２】
高性能・高信頼なストレージシステムとして、例えば、特許第３２６４４６５号公報（特許文献１）には、複数のプロセッサ間で処理を分散し、Ｉ／Ｏ処理やその他の処理に伴って参照・更新する必要のある、ディスク装置やボリューム、ストレージアプリケーションに関する制御情報を、プロセッサ間の共有メモリ（ＳＭ：Shared Memory）上に置いて動作するストレージシステムが開示されている。
【特許文献１】特許第３２６４４６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１に記載されたような複数プロセッサを有するストレージシステムでは、各プロセッサに直結されたローカルメモリ（ＬＭ：Local Memory）へのアクセスに比べ、共有接続されたＳＭへのアクセスは、プロセッサ間ネットワークを経由するためアクセスレイテンシが大きい。従って、ＳＭへのアクセスが多くなるとシステムとしての性能が低下する場合がある。
【０００４】
しかしながら、上記の課題を回避するため、ＳＭ上の制御情報全体のコピーを各プロセッサのＬＭ上に置くとすると、プロセッサの数分の制御情報全体のコピーを保持する必要があり、多数のＬＭが必要となるため高コストとなってしまう。
【０００５】
そこで本発明の目的は、複数のプロセッサを有するストレージシステムにおいて、多数のローカルメモリを必要とせずに、共有メモリ上の制御情報へのアクセス性能を向上させることにより、さらに高性能なストレージシステムを提供することにある。
【０００６】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【０００８】
本発明の代表的な実施の形態によるストレージシステムは、ストレージシステム、およびその制御プログラム、ならびにストレージシステム制御方法などに適用され、以下のような特徴を有するものである。すなわち、前記ストレージシステムは、１つ以上のボリュームと、１つ以上のプロセッサと、前記各プロセッサに対応するローカルメモリと、前記各プロセッサに共有される共有メモリとを有し、Ｉ／Ｏ処理やストレージアプリケーションに係る処理に関する制御情報を前記共有メモリに格納するストレージシステムであって、前記プロセッサは、前記共有メモリに格納された前記制御情報を参照する際に、前記プロセッサに対応する前記ローカルメモリに、前記制御情報の一部を前記制御情報の種別毎に格納先エリアを分けてキャッシュすることを特徴とするものである。
【発明の効果】
【０００９】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１０】
本発明の代表的な実施の形態によれば、プロセッサで動作する制御プログラムがＳＭ上の制御情報を参照する際に、これら制御情報の一部をＬＭにキャッシュしてアクセスすることにより、システムの処理性能を向上させることができる。また、制御情報の種別毎にキャッシュする際のＬＭ上での格納領域を分けることにより、頻繁にアクセスされる制御情報についてのＬＭヒット率を向上させ、システムの処理性能を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１２】
＜概要＞
本発明の一実施の形態におけるストレージシステムは、複数のプロセッサと、各プロセッサに共有接続されたＳＭと、各プロセッサに直接接続され高速にアクセス可能なＬＭとを有する。各プロセッサでは制御プログラムが動作し、ＳＭ上の制御情報にアクセスしながらホストコンピュータから送られてくるＩ／Ｏ要求を処理する。
【００１３】
本実施の形態のストレージシステムでは、プロセッサで動作する制御プログラムがＳＭ上の制御情報を参照する際に、これら制御情報の一部をＬＭにキャッシュしてアクセスする。これにより、アクセス対象の制御情報が既にＬＭにキャッシュされている場合（以下「ＬＭヒット」という場合がある）、対象の制御情報を高速に参照できるため、システムとしての性能を向上させることができる。なお、ＳＭ上の制御情報を更新する際には、他のＬＭ上にキャッシュされた制御情報との整合性を保つため、更新を他プロセッサに通知する。更新を通知された他プロセッサでは、更新箇所に対応するＬＭ上の制御情報を無効化する。
【００１４】
ここで、ＳＭ上の制御情報全体ではなくその一部のみをＬＭにキャッシュする場合、ホストコンピュータからのアクセスパターンによってはＬＭ上にキャッシュされた制御情報のＬＭヒットの割合が低下し、システムとしての性能が悪化する可能性がある。そこで、本実施の形態のストレージシステムでは、ＳＭ上の制御情報を構成依存情報および容量依存情報の二つに区別してＬＭへのキャッシュを制御する。
【００１５】
構成依存情報とは、ストレージシステムの構成に応じてその情報量が決まる制御情報であり、頻繁にアクセスされる制御情報である。例えば、ストレージシステム毎に保持する情報（ストレージシステムのハードウェア構成の管理情報など）、各ボリューム毎に保持する情報（ボリュームの属性情報、ボリュームへのアクセスパス定義情報など）や、ストレージが備える機能の設定情報（例えば、コピー機能（ボリュームデータのコピーを行う機能）のためのコピー元とコピー先の対応情報など）などが該当する。これら構成依存情報は、ホストコンピュータによるアクセス対象であるボリューム内の領域に依存せずに参照されるためＩ／Ｏ毎に頻繁にアクセスされ、重要度が高い。
【００１６】
これに対して、容量依存情報は、ボリューム内の領域毎に対応した個別の制御情報（例えば、コピー機能におけるコピー済領域の管理情報など）であり、ホストコンピュータからのＩ／Ｏのパターンに依存してアクセス対象が変わる制御情報である。それぞれの制御情報は、対応するボリューム内の領域に対するホストコンピュータからのアクセスがあった場合にのみ参照・更新される。
【００１７】
構成依存情報は、装置単位またはボリューム単位で存在する制御情報であるため、ボリュームの容量に比例して増加する容量依存情報に比べて制御情報のサイズが小さい。そのため、制御情報全体で見ると、容量としては小さい構成依存情報に対してアクセスが集中する特性がある。
【００１８】
ここで、構成依存情報と容量依存情報とでＬＭ上の制御情報キャッシュエリアを共有すると、ホストコンピュータからのアクセスの範囲が拡大するにつれて容量依存情報へのアクセス範囲も増加し、制御情報キャッシュエリア内の容量依存情報の割合が大きくなる。このため、参照頻度の低い容量依存情報が参照頻度の高い構成依存情報を制御情報キャッシュエリアから追い出してしまうことにより、対象の制御情報がＬＭにキャッシュされていない状態（以下「ＬＭミス」という場合がある）が頻繁に起こり、低速なＳＭへのアクセスが発生するためシステムの処理性能が低下してしまう。
【００１９】
これを回避するため、制御情報毎に格納先の制御情報キャッシュエリアを小領域（以下「格納エリア」という場合がある）に分ける。各制御情報は、決まった格納エリアにのみ情報が格納され、他の格納エリアには格納されない。これにより、ＬＭ上の制御情報キャッシュエリアに優先的に格納する必要のある構成依存情報が、そうではない容量依存情報によって制御情報キャッシュエリアから追い出されることを防ぐことができ、ＬＭヒット率を維持できる。この際、構成依存情報の格納エリアは、構成依存情報が全て格納可能となる十分なサイズが確保されていることが望ましい。
【００２０】
また、ストレージシステムの構成変更など、構成依存情報のサイズが変わるタイミングにあわせて格納エリアの設定を変更し、構成依存情報に対して十分な格納エリアが確保されるように維持することでシステムの性能を維持できるようにする。なお、ストレージシステムの構成変更は頻繁には行われないと想定されるため、上記のような格納エリアの設定変更処理の負荷はそれほど大きくはならない。
【００２１】
また、頻繁に参照されない制御情報は、ＬＭにキャッシュしてもシステムの性能向上に対する効果が大きくないため、キャッシュ対象から外すことによりＬＭ利用効率を高めることができる。また、頻繁に更新される情報は、更新時の他プロセッサへの更新通知処理が頻発し、システムの性能低下を招く可能性があるため、同様にキャッシュ対象から外すことによりシステムの性能低下を防ぐことができる。
【００２２】
また、例えば、管理端末からの要求に応じて、管理情報として制御情報キャッシュエリアの各格納エリアの使用状況（必要な格納エリアサイズに対する確保容量の割合、キャッシュされた制御情報のＬＭヒット率など）を表示する。表示された管理情報に基づいて、管理者からの指示により、各格納エリアの設定を変更したり、制御対象のボリュームを他のプロセッサに移動させてプロセッサが扱う制御情報を変更したりすることで、ＬＭ上の制御情報キャッシュエリアの使用を最適化し、ストレージシステムの使用状況に対応してシステムの性能を維持することが可能となる。
【００２３】
また、ある時点において特定のプロセッサにより単独で参照される制御情報については、当該制御情報が更新された際に他のプロセッサに更新を通知しないことにより、更新通知の処理と更新通知を受信した際の処理とを省略することができ、システムの性能を向上させることができる。
【００２４】
以上に説明したようなストレージシステムを有する本発明の一実施の形態である計算機システムについて、以下に実施の形態１〜４にて具体的に説明する。
【００２５】
＜実施の形態１＞
以下に、本発明の実施の形態１である計算機システムについて説明する。
【００２６】
［システム構成］
図１は、本実施の形態である計算機システムの構成例の概要を示した図である。本実施の形態の計算機システムは、ストレージシステム１０００と、ホストコンピュータ（ホスト）２０００とを有する構成となっている。
【００２７】
ストレージシステム１０００は、ホスト２０００と通信するための１つ以上のポート１１００と、１つ以上のプロセッサパッケージ（ＭＰＰＫ：Micro Processor PacKage）１２００と、共有制御用メモリ（ＳＭ：Shared Memory）１３００と、ホストデータキャッシュメモリ（ＣＭ：Cache Memory）１４００と、１つ以上のボリューム（論理記憶装置（ＬＤＥＶ：Logical DEVice））１５００とを有する。なお、各ＬＤＥＶ１５００は、ストレージシステム１０００がＬＤＥＶ１５００を一意に識別するためのＬＤＥＶ番号を持つ。
【００２８】
ホスト２０００は、ストレージシステム１０００に対してデータの書き込みまたは読み込みを行うため、Ｉ／Ｏ（Input/Output）要求をストレージシステム１０００に対して送信する。Ｉ／Ｏ要求は、例えば、ＳＣＳＩ（Small Computer System Interface）のコマンド等であり、リード／ライトの区別を示す情報と、アクセス対象の装置を指し示すＳＣＳＩのポート番号と、ＬＵＮ（Logical Unit Number）、およびアクセス対象領域を指し示すＬＢＡ（Logical Block Address）などを含む。
【００２９】
ストレージシステム１０００は、ＬＤＥＶ１５００に対してアクセスするように動作するため、ポート１１００において、ポート番号とＬＵＮを、後述するパス管理情報を用いてＬＤＥＶ番号に変換し、ＬＢＡをＬＤＥＶアドレスに変換した上で、ＭＰＰＫ１２００にＩ／Ｏ要求を送信する。
【００３０】
各ＭＰＰＫ１２００は、それぞれ１つ以上のプロセッサ（ＭＰ：Micro Processor）１２１０と、ローカルメモリ（ＬＭ：Local Memory）１２２０とを有するパッケージである。なお、各ＬＤＥＶ１５００には、それぞれにそのＩ／Ｏ処理を担当するＭＰＰＫ１２００（以下「担当ＭＰＰＫ」という場合がある）が設定されている。
【００３１】
ＣＭ１４００は、ＬＤＥＶ１５００に格納されたホストデータに対するアクセス高速化のために一般的に用いられるキャッシュメモリであり、ＬＤＥＶ１５００に格納されたホストデータの一部を一時的に格納することにより、ホスト２０００から頻繁にアクセスされるデータに高速にアクセスすることを可能とする。なお、ＣＭ１４００は、本実施の形態のストレージシステム１０００の特徴である制御情報４０００のキャッシュには用いられない。
【００３２】
ＳＭ１３００には、ストレージシステム１０００において、ＬＤＥＶ１５００、ＣＭ１４００、ポート１１００などの各構成要素を管理するための制御情報４０００が格納される。
【００３３】
ＭＰＰＫ１２００内の各ＭＰ１２１０では、制御プログラム３０００が動作している。制御プログラム３０００は、まず、ポート１１００から振り分けられたホスト２０００のＩ／Ｏ要求を処理するＩ／Ｏ処理３１００と、アプリケーション処理３２００と、これらがＳＭ１３００上の制御情報４０００にアクセスするために呼び出す制御情報アクセス処理３３００とを構成要素として持つ。
【００３４】
なお、アプリケーション処理３２００とは、データの高信頼化や容量圧縮等を目的としてストレージシステム１０００により提供される機能であるストレージアプリケーション（以下単に「アプリケーション」という場合がある）に対応した処理である。アプリケーションの例としては、前述したコピー機能（ボリュームデータのコピーを行う機能）や、後述する仮想ＬＤＥＶ機能などがある。ただし、アプリケーションについては、本実施の形態のストレージシステム１０００において制御情報４０００の具体例等を説明するために記載しているものであり、本発明の概念として必須となる構成要素ではない。
【００３５】
いずれかのアプリケーションが適用されているＬＤＥＶ１５００を対象とするＩ／Ｏ要求の処理においては、ＭＰ１２１０は、Ｉ／Ｏ処理３１００によって対象のアプリケーション処理３２００を呼び出し、アプリケーション固有の処理を行う。このとき、Ｉ／Ｏ処理３１００やアプリケーション処理３２００の中で、ＳＭ１３００に格納された制御情報４０００を参照・更新するため、制御情報アクセス処理３３００を呼び出す。
【００３６】
この際、制御情報アクセス処理３３００は、ＳＭ１３００上の制御情報４０００の一部を、ＬＭ１２２０上の制御情報キャッシュエリア５１００に格納してアクセスする。これにより、低速なＳＭ１３００へのアクセスを高速なＬＭ１２２０へのアクセスに置き換えることができ、制御情報４０００へのアクセスのオーバーヘッドを減らし、システムの高性能化を実現できる。この制御情報４０００についてのキャッシュ処理において、制御情報アクセス処理３３００は、ＬＭ１２２０上に格納された制御情報管理情報５２００へのアクセスを行う。これらの処理内容については後述する。
【００３７】
［アプリケーション（仮想ＬＤＥＶ）］
本実施の形態におけるストレージシステム１０００は、上述したアプリケーションの例として、例えば、仮想ＬＤＥＶ機能を備える。以下、本実施の形態のストレージシステム１０００における仮想ＬＤＥＶ機能について説明する。図２は、仮想ＬＤＥＶ機能の概要を説明する図である。
【００３８】
仮想ＬＤＥＶ機能は、実領域の割り当てられていない仮想的なＬＤＥＶ（以下「仮想ＬＤＥＶ」という場合がある）を作成し、データの書き込みがあるまで実領域の割り当てを遅延する機能である。仮想ＬＤＥＶに実領域を割り当てるためのＬＤＥＶを実体ＬＤＥＶといい、仮想ＬＤＥＶ上のアドレス（仮想アドレス）に対して割り当てられた実体ＬＤＥＶ上の領域のアドレスを実体アドレスという。
【００３９】
図２において、実体ＬＤＥＶ６２１０はプール６２００として管理される。新たに実体ＬＤＥＶ６３００をプール６２００に追加すると、追加した実体ＬＤＥＶ６３００は仮想ＬＤＥＶ６１００に対する実領域割当対象として確保され、その実使用領域が管理される。
【００４０】
仮想ＬＤＥＶ６１００を対象としてＩ／Ｏ要求があった際に、まずＩ／Ｏ要求に含まれる仮想アドレスに対して実領域が割り当てられている場合は、対応する実体アドレスを取得し、取得した実体アドレスに対して実際にアクセスを行う。
【００４１】
一方、仮想ＬＤＥＶ６１００上の実領域が未割り当ての領域に書き込みがあった場合は、プール６２００に追加されている実体ＬＤＥＶ６２１０の中で未使用領域を持つものから１つを、例えばラウンドロビン方式等により選択し、未使用領域を割り当てて、割り当てられた領域に書き込みを行う。また、実領域が未割り当ての領域に対する読み込みがあった場合は、空のデータを生成して返すことにより実領域を消費しない。
【００４２】
このように、本機能を利用して、実体ＬＤＥＶ６２１０を仮想ＬＤＥＶ６１００の使用容量に応じて柔軟に増やすことができ、また、実体ＬＤＥＶ６２１０を他の仮想ＬＤＥＶ６１００と共有することでディスク装置の利用効率を上げることができる。
【００４３】
［ハードウェア構成］
図３は、本実施の形態の計算機システムにおけるハードウェア構成例を示した図である。本実施の形態の計算機システムは、ホストコンピュータ（ホスト）２０００とデータ転送用ネットワーク２２００と管理端末２１００と管理用ネットワーク２３００とストレージシステム１０００とを有する構成となっている。
【００４４】
ストレージシステム１０００は、上述したＭＰＰＫ１２００と、１つ以上のキャッシュメモリパッケージ（ＣＭＰＫ：Cache Memory PacKage）１８００と、１つ以上のバックエンドパッケージ（ＢＥＰＫ：BackEnd PacKage）１７００と、１つ以上の物理記憶装置１７２０と、１つ以上のフロントエンドパッケージ（ＦＥＰＫ：FrontEnd PacKage）１６００と、管理用ネットワーク２３００に接続されたネットワークＩ／Ｆ１０２０と、これらを相互に結合する内部結合網１０１０とを有する。
【００４５】
ＣＭＰＫ１８００は、例えば、１つ以上の不揮発性半導体メモリ１８１０で構成され、図１におけるＳＭ１３００およびＣＭ１４００として使用される。
【００４６】
ＢＥＰＫ１７００は、１つ以上のディスクＩ／Ｆ１７１０を有し、ディスクＩ／Ｆ１７１０は、それぞれ複数の物理記憶装置１７２０に接続して通信する。ディスクＩ／Ｆ１７１０は、例えばＦＣ（Fibre Channel）のポートである。ディスクＩ／Ｆ１７１０は、データ転送プロセッサ１７１１を有し、データ転送プロセッサ１７１１は、物理記憶装置１７２０からＣＭ１４００へのデータ転送を行う。
【００４７】
ＦＥＰＫ１６００は、データ転送用ネットワーク２２００に接続された１つ以上のホストＩ／Ｆ１６１０を有する。ホストＩ／Ｆ１６１０は、例えば、ＦＣのポートである。ホストＩ／Ｆ１６１０は、データ転送プロセッサ１６１１を有し、データ転送プロセッサ１６１１は、ＣＭ１４００からホスト２０００へのデータ転送を行う。また、ホストＩ／Ｆ１６１０は、担当ＭＰＰＫとＬＤＥＶ１５００との対応関係の情報や、ＬＤＥＶ１５００とポート番号およびＬＵＮとの対応関係の情報を保持するためのホストＩ／Ｆバッファメモリ１６１２を有する。
【００４８】
ストレージシステム１０００は、ホスト２０００とデータ転送用ネットワーク２２００を介して接続され、また、ストレージシステム１０００を管理するための管理端末２１００と、管理用ネットワーク２３００を介して接続される。データ転送用ネットワーク２２００は、例えば、ＦＣ−ＳＡＮ（Storage Area Network）であり、管理用ネットワーク２３００は、例えば、ＩＰ（Internet Protocol）を用いたＬＡＮ（Local Area Network）である。また、ネットワークＩ／Ｆ１０２０は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）のポートである。なお、ストレージシステム１０００と、ホスト２０００および管理端末２１００とは、ネットワークを介さず直接接続してもよい。
【００４９】
また、ストレージシステム１０００の内部結合網１０１０は、例えば、クロスバースイッチやバスであり、これを介して、ＭＰ１２１０は、ＳＭ１３００や、ホストＩ／Ｆ１６１０、ディスクＩ／Ｆ１７１０、ネットワークＩ／Ｆ１０２０、他のＭＰＰＫ１２００のＬＭ１２２０等と通信することができる。
【００５０】
物理記憶装置１７２０は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）である。ストレージシステム１０００は、物理記憶装置１７２０をＬＤＥＶ１５００として管理している。ＬＤＥＶ１５００と物理記憶装置１７２０は１対１で対応する必要はなく、１つの物理記憶装置１７２０に複数のＬＤＥＶ１５００を構成したり、１つのＬＤＥＶ１５００が複数の物理記憶装置１７２０で構成されたりしてもよい。
【００５１】
［制御プログラム構成］
図４は、本実施の形態の計算機システムにおける制御プログラム３０００の構成例を示した図である。制御プログラム３０００は、Ｉ／Ｏ処理３１００と、アプリケーション処理３２００、制御情報アクセス処理３３００、および管理端末２１００による構成変更要求を処理する構成変更処理３４００から構成される。
【００５２】
上述したように、本実施の形態のストレージシステム１０００におけるアプリケーション処理３２００としては、仮想ＬＤＥＶ機能処理３２１０がある。仮想ＬＤＥＶ機能処理３２１０は、例えば、仮想アドレスをそれに対応した実体アドレスに変換する仮想−実体アドレス変換処理３２１１、およびプール６２００に追加されている実体ＬＤＥＶ６２１０の未使用領域から実領域を割り当てる実領域割当処理３２１２で構成される。
【００５３】
Ｉ／Ｏ処理３１００は、ホスト２０００の要求するＬＤＥＶ番号とＬＤＥＶアドレスを基にデータの転送処理を行う。このとき、ホスト２０００が要求したＬＤＥＶアドレスが仮想アドレスである場合には、仮想−実体アドレス変換処理３２１１を通してＬＤＥＶ番号とＬＤＥＶアドレスを実体ＬＤＥＶ番号と実体アドレスに変換した上で処理を行う。
【００５４】
リードアクセスの場合は、ＣＭ１４００上に対象のホストデータがあるかどうかを判断し、あればホストＩ／Ｆ１６１０に対してＣＭ１４００からホスト２０００へのデータの転送を指示する。ホストデータがＣＭ１４００上に無ければ、ＬＤＥＶアドレスを物理記憶装置１７２０のアドレスへと変換し、ディスクＩ／Ｆ１７１０に対して物理記憶装置１７２０からＣＭ１４００へのデータ転送を指示する。その後、ＣＭ１４００上にホストデータが格納されるのを待った上で、ホストＩ／Ｆ１６１０に対してＣＭ１４００からホスト２０００へのデータの転送を指示する。
【００５５】
ライトアクセスの場合は、ホストＩ／Ｆ１６１０に対してホスト２０００からＣＭ１４００へのデータの転送を指示し、さらにＣＭ１４００から物理記憶装置１７２０へのデータの転送を指示してその完了を待つか、または、非同期的にＣＭ１４００から物理記憶装置１７２０へのデータの転送を指示する。このときのＬＤＥＶ１５００と物理記憶装置１７２０との対応付けや、ホストデータのキャッシングの手法については、例えば、特開２００５−３０１８０２号公報などに記載されているように、よく知られた技術であるため、詳細な説明は省略する。
【００５６】
また、構成変更処理３４００は、ストレージシステム１０００内の各種構成要素の設定変更を行う処理であり、また、アプリケーション設定変更処理３４１０により、各種アプリケーションの設定変更も行う。構成変更処理３４００では、例えば、ＬＤＥＶ１５００の作成・削除や、ＬＤＥＶ１５００のコピーペアの作成・削除、仮想ＬＤＥＶ６１００の作成・削除などを行う。
【００５７】
制御プログラム３０００における以上の各処理の中で、必要に応じてＳＭ１３００上の制御情報４０００へアクセスすることになる。各処理は、その都度、制御情報アクセス処理３３００を呼び出すが、制御情報アクセス処理では、低速なＳＭ１３００へのアクセスが頻発することを防ぐため、ＬＭ１２２０上の制御情報キャッシュエリア５１００にＳＭ１３００上の制御情報４０００の一部をキャッシュしてアクセスする。
【００５８】
制御情報４０００のキャッシュ方法は、上述したような、ホストデータにおいて用いられる一般的に知られたキャッシュ技術を適用してもよい。本実施の形態のストレージシステム１０００では、ＳＭ１３００のアドレス空間を数十バイト程度の大きさの単位（以下「ライン」という場合がある）に分け、ライン単位でＳＭ１３００から制御情報４０００を読み出して、ＬＭ１２２０上の制御情報キャッシュエリア５１００に情報を格納する。
【００５９】
アクセス対象の制御情報４０００がＬＭ１２２０上の制御情報キャッシュエリア５１００に存在する場合（ＬＭヒット）には、高速なＬＭ１２２０から情報を読み出すため、ＭＰ１２１０の待ち時間が短くなる。一方、アクセス対象の制御情報４０００が制御情報キャッシュエリア５１００に存在しない場合（ＬＭミス）には、低速なＳＭ１３００へのアクセスとなるため、ＭＰ１２１０の待ち時間が長くなり、ＭＰ１２１０の処理性能が低下する。
【００６０】
なお、ＳＭ１３００上の制御情報４０００は、他のＭＰＰＫ１２００との間で共有しているため、他のＭＰＰＫ１２００で制御情報４０００が更新されると、同じ情報をＬＭ１２２０上にキャッシュしていた場合に不整合が生じる。そこで、制御情報４０００の更新の際には、ＬＭ１２２０上に情報がキャッシュされているか否かに関わらず、ＳＭ１３００上の制御情報４０００を更新し、他のＭＰＰＫ１２００に更新を通知する必要がある。
【００６１】
［制御情報構成］
図５は、ＳＭ１３００上の制御情報４０００の構成例を示した図である。ＳＭ１３００には、制御情報４０００として、各ＬＤＥＶ１５００の基本情報を格納するＬＤＥＶ情報表４１００と、各ＬＤＥＶ１５００とその担当ＭＰＰＫとの対応関係を管理する担当ＭＰＰＫ表４２００と、ＳＣＳＩのポート番号およびＬＵＮとＬＤＥＶ１５００との対応関係を管理するパス管理表４３００と、各アプリケーション固有のアプリケーション制御情報４４００が格納される。
【００６２】
本実施の形態におけるアプリケーション制御情報４４００としては、例えば、仮想ＬＤＥＶ機能に関する制御情報として、実体ＬＤＥＶ６２１０を管理する実体ＬＤＥＶ管理表４４１０と、仮想アドレスと実体アドレスとを対応づける仮想−実体アドレス変換表４４２０がある。
【００６３】
ここで、本実施の形態におけるＳＭ１３００上の制御情報４０００を、上述した構成依存情報と容量依存情報とに区別すると、ＬＤＥＶ情報表４１００、実体ＬＤＥＶ管理表４４１０、担当ＭＰＰＫ表４２００、パス管理表４３００は構成依存情報であり、仮想−実体アドレス変換表４４２０は容量依存情報である。
【００６４】
また、その他の制御情報４０００として、例えば、ホストコンピュータ２０００からのＩ／Ｏ要求の数などをカウントする統計情報などが挙げられる。統計情報はＩ／Ｏ毎に更新されるが、管理端末２１００によるストレージ稼動状況の表示要求等に応じて参照されるのみである。このように、更新は頻繁に発生するが参照頻度が少ないような制御情報４０００は、キャッシュ対象としないことによりシステムの性能低下を防ぐことができる。
【００６５】
一方、仮想−実体アドレス変換表４４２０は、更新されるのは実領域が未割り当ての領域へのアクセス時のみであり、実領域が割り当てられた後は更新されることが無い。このように、更新は低頻度であるのに対して参照はＩ／Ｏ毎に頻繁に行われるような制御情報４０００は、キャッシュ対象とすることによりシステムの性能向上を図ることができる。
【００６６】
図６は、ＬＭ１２２０上の情報の構成例を示した図である。ＬＭ１２２０には、ＳＭ１３００上の制御情報４０００をキャッシュするための制御情報キャッシュエリア５１００と、制御情報管理情報５２００と、他のＭＰ１２１０からの通知等を格納するための通信エリア５３００が格納される。
【００６７】
制御情報管理情報５２００は、ＬＭ１２２０上の制御情報キャッシュエリア５１００における領域と、その領域（すなわちその領域に格納されたキャッシュされた制御情報４０００）がＳＭ１３００上のどの領域に対応するかを管理するＬＭ−ＳＭ対応表５２１０と、制御情報４０００の種別に応じた制御情報キャッシュエリア５１００上の格納エリアを管理する制御情報キャッシュ管理表５２２０とを有する。
【００６８】
図７は、制御情報管理情報５２００であるＬＭ−ＳＭ対応表５２１０の構成例を示した図である。ＬＭ−ＳＭ対応表５２１０は、ＬＭ１２２０上の制御情報キャッシュエリア５１００上の各ラインが、ＳＭ１３００上のどこに対応するかを管理するテーブルであり、それぞれ固定数（図７の例では４）のエントリを持つ複数のＬＭ−ＳＭ対応表５２１０で構成される。各ＬＭ−ＳＭ対応表５２１０にはそれぞれ番号（以下「インデックス番号」という場合がある）が振られている。
【００６９】
このように、単一の対応表で管理せずに少数のエントリを持つ複数の対応表で管理し、ＳＭ１３００上のアドレス（以下「ＳＭアドレス」という場合がある）もしくはＬＭ１２２０上のアドレス（以下「ＬＭアドレス」という場合がある）から、インデックス番号を、例えばハッシュ等を用いて高速に算出することで、高速にＬＭアドレスとＳＭアドレスの対応を検索することができる。
【００７０】
それぞれのＬＭ−ＳＭ対応表５２１０は、ＬＭアドレスフィールド５２１１と、ＳＭアドレスフィールド５２１２と、最終アクセス時刻フィールド５２１３を含むエントリを有する。ＬＭアドレスフィールド５２１１には、ＬＭアドレスが格納される。ＬＭ−ＳＭ対応表５２１０の各エントリのＬＭアドレスは、制御情報キャッシュエリア５１００上のアドレスと１対１に対応する。
【００７１】
ＳＭアドレスフィールド５２１２には、同じエントリのＬＭアドレスフィールド５２１１におけるＬＭアドレスが示す制御情報キャッシュエリア５１００上の領域に格納された制御情報４０００について、これと対応する制御情報４０００が格納されているＳＭ１３００上の領域のＳＭアドレスが格納される。最終アクセス時刻フィールド５２１３は、同じエントリのＬＭアドレスフィールド５２１１におけるＬＭアドレスが示す制御情報キャッシュエリア５１００にキャッシュされた制御情報４０００が最後に参照された時刻を示す。この最終アクセス時刻フィールド５２１３は、各ＬＭ−ＳＭ対応表５２１０内で最も長い間アクセスされていないエントリを識別するために用いられる。
【００７２】
図８は、制御情報管理情報５２００である制御情報キャッシュ管理表５２２０の構成例を示した図である。制御情報キャッシュ管理表５２２０は、制御情報４０００の全ての種別について、格納先のＳＭ１３００およびＬＭ１２２０上の制御情報キャッシュエリア５１００上の領域を、ＬＭ−ＳＭ対応表５２１０のインデックス番号単位で管理する。
【００７３】
制御情報キャッシュ管理表５２２０は、制御情報名フィールド５２２１と、ＳＭアドレス範囲フィールド５２２２と、格納エリアインデックス番号範囲フィールド５２２３とを含むエントリを有する。制御情報名フィールド５２２１には、制御情報４０００を識別するための制御情報名が格納される。なお、本実施の形態では、説明の便宜のため制御情報名を文字表記で記載しているが、実装に際しては、各制御情報４０００を識別するために割り当てたＩＤ等が設定されていてもよい。
【００７４】
ＳＭアドレス範囲フィールド５２２２には、同じエントリの制御情報名フィールド５２２１における制御情報名が示す制御情報４０００が格納されているＳＭ１３００上の領域の開始アドレスと終了アドレスとが格納される。格納エリアインデックス番号範囲フィールド５２２３には、同じエントリの制御情報名フィールド５２２１における制御情報名が示す制御情報４０００がキャッシュされているＬＭ１２２０上の格納エリアの開始インデックス番号と終了インデックス番号とが格納される。このフィールドに値が格納されていない場合は、対象の制御情報４０００がキャッシュ対象ではないことを示す。
【００７５】
このように、制御情報キャッシュ管理表５２２０によって、制御情報４０００の種別毎に、キャッシュの対象とするか否か、およびキャッシュする際のそれぞれの格納エリアを個別に管理することが可能となる。
【００７６】
なお、本実施の形態のストレージシステム１０００における制御情報４０００のキャッシュ方式では、制御情報キャッシュ管理表５２２０を用いて、アクセス対象のＳＭアドレスから各制御情報４０００の種別を調べているが、Ｉ／Ｏ処理３１００が制御情報アクセス処理３３００を呼び出す際に、アクセス対象のＳＭアドレスではなく、制御情報４０００の種別を明示する方法をとることも可能である。
【００７７】
図９は、制御情報４０００であるＬＤＥＶ情報表４１００の構成例を示した図である。ＬＤＥＶ情報表４１００は、ＬＤＥＶ１５００が仮想ＬＤＥＶであるか否かを問わず、全てのＬＤＥＶ１５００について、ＬＤＥＶ番号フィールド４１０１と、適用アプリケーションフィールド４１０２と、容量フィールド４１０３とを含むエントリを有する。
【００７８】
ＬＤＥＶ番号フィールド４１０１には、ＬＤＥＶ番号が格納される。適用アプリケーションフィールド４１０２には、同じエントリのＬＤＥＶ番号フィールド４１０１におけるＬＤＥＶ番号が示すＬＤＥＶ１５００に適用されるアプリケーションの種別が格納される。なお、本実施の形態では、説明の便宜のため適用されるアプリケーション名を文字表記で記載しているが、実装に際しては、各アプリケーションを識別するために割り当てたＩＤ等が設定されていてもよい。また、各ＬＤＥＶ１５００には複数のアプリケーションが適用される場合もある。容量フィールド４１０３には、同じエントリのＬＤＥＶ番号フィールド４１０１におけるＬＤＥＶ番号が示すＬＤＥＶ１５００の容量を示す値が格納される。
【００７９】
図１０は、制御情報４０００である実体ＬＤＥＶ管理表４４１０の構成例を示した図である。実体ＬＤＥＶ管理表４４１０は、プール６２００に登録された全ての実体ＬＤＥＶ６２１０について、実体ＬＤＥＶ番号フィールド４４１１と、実体ＬＤＥＶ容量フィールド４４１２と、使用容量フィールド４４１３とを含むエントリを有する。
【００８０】
実体ＬＤＥＶ番号フィールド４４１１には、実体ＬＤＥＶ６２１０のＬＤＥＶ番号が格納される。実体ＬＤＥＶ容量フィールド４４１２には、同じエントリの実体ＬＤＥＶ番号フィールド４４１１におけるＬＤＥＶ番号が示す実体ＬＤＥＶ６２１０の容量を示す値が格納される。使用容量フィールド４４１３には、同じエントリの実体ＬＤＥＶ番号フィールド４４１１におけるＬＤＥＶ番号が示す実体ＬＤＥＶ６２１０の使用中の容量を示す値が格納される。本実施の形態のストレージシステム１０００では、実体ＬＤＥＶ６２１０はその先頭からデータが格納されるものとし、使用容量フィールド４４１３を参照することで、次にデータが格納されるべき未使用領域の位置を知ることができる。
【００８１】
図１１は、制御情報４０００である仮想−実体アドレス変換表４４２０の構成例を示した図である。仮想−実体アドレス変換表４４２０は、全ての仮想ＬＤＥＶにおける実領域割り当て済みのアドレス空間について、仮想ＬＤＥＶ番号フィールド４４２１と、仮想アドレスフィールド４４２２と、実体ＬＤＥＶ番号フィールド４４２３と、実体アドレスフィールド４４２４とを含むエントリを有する。
【００８２】
仮想ＬＤＥＶ番号フィールド４４２１および仮想アドレスフィールド４４２２には、実領域を割り当てた仮想ＬＤＥＶのＬＤＥＶ番号と仮想アドレスがそれぞれ格納される。実体ＬＤＥＶ番号フィールド４４２３および実体アドレスフィールド４４２４には、同じエントリの仮想ＬＤＥＶ番号フィールドおよび仮想アドレスフィールドが示す仮想ＬＤＥＶ上の仮想アドレスに対応して、実領域が割り当てられた実体ＬＤＥＶ６２１０のＬＤＥＶ番号と実体ＬＤＥＶ６２１０上の領域のアドレス（実体アドレス）がそれぞれ格納される。
【００８３】
図１２は、制御情報４０００である担当ＭＰＰＫ表４２００の構成例を示した図である。担当ＭＰＰＫ表４２００は、全てのＬＤＥＶ１５００について、ＬＤＥＶ番号フィールド４２０１と、担当ＭＰＰＫ番号フィールド４２０２とを含むエントリを有する。
【００８４】
ＬＤＥＶ番号フィールド４２０１には、ＬＤＥＶ番号が格納される。担当ＭＰＰＫ番号フィールド４２０２には、同じエントリのＬＤＥＶ番号フィールド４２０１におけるＬＤＥＶ番号が示すＬＤＥＶ１５００についての担当ＭＰＰＫを示すＭＰＰＫ番号（ＭＰＰＫ１２００を識別する番号）が格納される。
【００８５】
図１３は、制御情報４０００であるパス管理表４３００の構成例を示した図である。パス管理表４３００は、定義された全てのアクセスパスについて、ポート番号フィールド４３０１と、パス名フィールド４３０２と、ＬＤＥＶ番号フィールド４３０３とを含むエントリを有する。
【００８６】
ポート番号フィールド４３０１には、ポート１１００のポート番号が格納される。ポート番号は、例えば、ホストＩ／Ｆ１６１０に対して１対１で割り当てられ、ホスト２０００がＩ／Ｏ要求を送る際に指定するＳＣＳＩ等のポート番号である。パス名フィールド４３０２は、同じエントリのポート番号フィールド４３０１に格納されたポート番号が示すホストＩ／Ｆ１６１０について定義されたパス名（例えば、ＳＣＳＩのＬＵＮ）が格納される。ＬＤＥＶ番号フィールド４３０３は、同じエントリのポート番号フィールド４３０１に格納されたポート番号が示すホストＩ／Ｆ１６１０と、パス名フィールド４３０２に格納されたパス名に対応するＬＤＥＶ１５００のＬＤＥＶ番号が格納される。
【００８７】
［処理フロー］
以下、本実施の形態のストレージシステム１０００における、制御プログラム３０００による各種処理の処理フローについて説明する。図１４は、Ｉ／Ｏ処理３１００での動作の例を示すフローチャートである。
【００８８】
ＭＰ１２１０は、Ｉ／Ｏ処理３１００での処理を開始すると（Ｓ１０１）、まず、後述する制御情報アクセス処理３３００の制御情報参照処理を呼び出して、ＬＤＥＶ情報表４１００において、Ｉ／Ｏ要求に含まれるＬＤＥＶ番号（以下「対象ＬＤＥＶ番号」という場合がある）をＬＤＥＶ番号フィールド４１０１に含むエントリを参照する（Ｓ１０２）。なお、以下では、対象ＬＤＥＶ番号が示すＬＤＥＶ１５００を「対象ＬＤＥＶ」、Ｉ／Ｏ要求に含まれるＬＤＥＶアドレスを「対象ＬＤＥＶアドレス」という場合がある。
【００８９】
次に、ＭＰ１２１０は、ステップＳ１０２で取得したＬＤＥＶ情報表４１００における、対象ＬＤＥＶに対応するエントリの適用アプリケーションフィールド４１０２から、対象ＬＤＥＶに仮想ＬＤＥＶのアプリケーションが適用されているか否か、すなわち、対象ＬＤＥＶが仮想ＬＤＥＶであるか否かを判断する（Ｓ１０３）。
【００９０】
適用アプリケーションフィールド４１０２に格納された値に仮想ＬＤＥＶが含まれる場合は、後述するアプリケーション処理３２００の仮想ＬＤＥＶ機能処理を呼び出して（Ｓ１０４）、ステップＳ１０５へ進む。ステップＳ１０４での仮想ＬＤＥＶ機能処理により、Ｉ／Ｏ要求に含まれる対象ＬＤＥＶ番号（仮想ＬＤＥＶ番号）および対象ＬＤＥＶアドレス（仮想アドレス）の値は、それぞれ実体ＬＤＥＶ番号および実体アドレスに変換される。ステップＳ１０３にて、適用アプリケーションフィールド４１０２に格納された値に仮想ＬＤＥＶが含まれていない場合は、処理を行わずにステップＳ１０５へ進む。
【００９１】
ステップＳ１０５では、ＭＰ１２１０は、対象ＬＤＥＶ番号と対象ＬＤＥＶアドレスから対応する物理記憶装置１７２０の物理アドレスを取得し、物理記憶装置１７２０に対してホストデータのリード／ライト処理を行う（Ｓ１０５）。この時、必要に応じて、ＣＭ１４００にホストデータのキャッシング処理を行う。以上で、Ｉ／Ｏ処理３１００での処理を終了する（Ｓ１０６）。
【００９２】
図１５は、アプリケーション処理３２００の仮想ＬＤＥＶ機能処理３２１０での動作の例を示すフローチャートである。
【００９３】
ＭＰ１２１０は、仮想ＬＤＥＶ機能処理３２１０での処理を開始すると（Ｓ２０１）、仮想−実体アドレス変換処理３２１１での処理として、まず、後述する制御情報アクセス処理３３００の制御情報参照処理を呼び出して、仮想−実体アドレス変換表４４２０において、対象ＬＤＥＶアドレスに対応する仮想アドレスフィールド４４２２を含むエントリを参照する（Ｓ２０２）。
【００９４】
次に、ステップＳ２０２で取得した仮想−実体アドレス変換表４４２０において、対象ＬＤＥＶアドレスに対応する仮想アドレスフィールド４４２２を含むエントリがあるか否かを判断し（Ｓ２０３）、無い場合はステップＳ２０４へ進む。エントリがある場合は、ステップＳ２０８へ進む。
【００９５】
ステップＳ２０４では、Ｉ／Ｏ要求がリードアクセスであるかライトアクセスであるかを判断し（Ｓ２０４）、ライトアクセスである場合は、実領域の新規割り当てを行うため、ステップＳ２０５へ進む。
【００９６】
Ｉ／Ｏ要求がリードアクセスである場合は、空データ専用のＬＤＥＶ番号およびＬＤＥＶアドレスを取得して、Ｉ／Ｏ要求の対象ＬＤＥＶ番号および対象ＬＤＥＶアドレスの値を置き換えて（Ｓ２０９）、仮想ＬＤＥＶ機能処理を終了する（Ｓ２１０）。なお、空データ専用のＬＤＥＶ番号およびＬＤＥＶアドレスが対象ＬＤＥＶ番号および対象ＬＤＥＶアドレスとして設定された場合は、前述の図１４におけるステップＳ１０５において、物理記憶装置１７２０に対して実際のアクセスを行わず、空のデータを生成してホスト２０００に対して返す。
【００９７】
ステップＳ２０５では、実領域割当処理３２１２での処理として、実領域を割り当てるため、まず、後述する制御情報アクセス処理３３００の制御情報参照処理を呼び出して、実体ＬＤＥＶ管理表４４１０を参照する（Ｓ２０５）。次に、ステップＳ２０５で取得した実体ＬＤＥＶ管理表４４１０に基づいて、実体ＬＤＥＶ６２１０の未使用領域を取得する（Ｓ２０６）。次に、後述する制御情報アクセス処理３３００の制御情報更新処理を呼び出して、ステップＳ２０６で取得した領域を仮想−実体アドレス変換表４４２０に登録し、また、実体ＬＤＥＶ管理表４４１０における、取得した領域を有する実体ＬＤＥＶ６２１０に対応するエントリの使用容量フィールド４４１３を更新し（Ｓ２０７）、ステップＳ２０８へ進む。
【００９８】
ステップＳ２０８では、対象ＬＤＥＶ番号および対象ＬＤＥＶアドレスに対応する仮想−実体アドレス変換表４４２０のエントリの実体ＬＤＥＶ番号および実体ＬＤＥＶアドレスを取得して、Ｉ／Ｏ要求の対象ＬＤＥＶ番号および対象ＬＤＥＶアドレスの値を置き換えて（Ｓ２０８）、仮想ＬＤＥＶ機能処理３２１０での処理を終了する（Ｓ２１０）。
【００９９】
図１６は、制御情報アクセス処理３３００での制御情報参照処理の動作の例を示すフローチャートである。制御情報参照処理は、前述したＩ／Ｏ処理３１００やアプリケーション処理３２００から、参照対象のＳＭアドレスを伴って呼び出される。
【０１００】
ＭＰ１２１０は、制御情報アクセス処理３３００での制御情報参照処理を開始すると（Ｓ３０１）、まず、対象のＳＭアドレスを含むラインの先頭のＳＭアドレス（以下「参照アドレス」という場合がある）およびライン内オフセット値を求める（Ｓ３０２）。参照アドレスは、例えば、ＳＭアドレスの値をラインのサイズで除算した余りをＳＭアドレスの値から減算することで求められ、このとき、ライン内オフセット値はその余り値となる。上記演算の際、ＭＰ１２１０は、ラインバッファというラインサイズの一時記憶領域を用いて処理を行う。ラインバッファは、例えばＬＭ１２２０上に確保してもよい。
【０１０１】
次に、後述する制御情報更新通知受信処理を呼び出して、他のＭＰ１２１０からの制御情報４０００の更新通知を受領している場合に、当該制御情報４０００についてのキャッシュを無効化する（Ｓ３０３）。
【０１０２】
次に、制御情報キャッシュ管理表５２２０を参照し、ＳＭアドレス範囲フィールド５２２２が対象のＳＭアドレスを含むエントリにおいて、格納エリアインデックス番号範囲フィールド５２２３に値が格納されているか否か、すなわち、対象のＳＭアドレスに対応するＬＭ１２２０上の格納エリアがあるか否かを判断する（Ｓ３０４）。値が格納されている場合は、対象の制御情報４０００はキャッシュ対象と判断し、ステップＳ３０６へ進む。
【０１０３】
ステップＳ３０４で、格納エリアインデックス番号範囲フィールド５２２３に値が格納されていない場合は、対象のＳＭアドレスはキャッシュ対象外と判断し、ステップＳ３０５へ進む。ステップＳ３０５では、参照アドレスに基づいてＳＭ１３００からラインバッファにラインを読み込み、ステップＳ３１３へ進む（Ｓ３０５）。
【０１０４】
ステップＳ３０６では、参照アドレスと、対応する制御情報キャッシュ管理表５２２０のエントリの格納エリアインデックス番号範囲フィールド５２２３の値から、対象の制御情報４０００が格納されている格納エリアのインデックス番号を算出する（Ｓ３０６）。算出の方法としては、例えばハッシュ等を用いることができる。
【０１０５】
次に、ステップＳ３０６で算出されたインデックス番号に対応するＬＭ−ＳＭ対応表５２１０を参照し、ＳＭアドレスフィールド５２１２に参照アドレスを含むエントリが存在するか否かを判断する（Ｓ３０７）。エントリが存在しない場合は、ステップＳ３０９へ進む。
【０１０６】
ステップＳ３０７で、エントリが存在する場合は、最新のデータがキャッシュされていると判断し、ＳＭ１３００からの読み込み処理を省略し、ＬＭ−ＳＭ対応表５２１０の該当のエントリのＬＭアドレスフィールド５２１１に格納されたＬＭアドレスを用いて制御情報キャッシュエリア５１００からラインバッファにラインを読み込み（Ｓ３０８）、ステップＳ３１２へ進む。
【０１０７】
ステップＳ３０７で、エントリが存在しない場合は、最新のデータがキャッシュされていないと判断し、参照アドレスに基づいてＳＭ１３００を参照し、ラインバッファにラインを読み込む（Ｓ３０９）。次に、対象のＬＭ−ＳＭ対応表５２１０のエントリのうち、最終アクセス時刻フィールド５２１３に格納された時刻が最も古いエントリにおけるＬＭアドレスフィールド５２１１に格納されたＬＭアドレスに基づいて、ラインバッファから格納エリアにラインを格納する（Ｓ３１０）。その後、ＬＭ−ＳＭ対応表５２１０の対象エントリのＳＭアドレスフィールド５２１２の値を参照アドレスの値で更新し（Ｓ３１１）、ステップＳ３１２へ進む。
【０１０８】
ステップＳ３１２では、ＬＭ−ＳＭ対応表５２１０の対象のエントリの最終アクセス時刻フィールド５２１３の値を現在時刻に更新し（Ｓ３１２）、ステップＳ３１３へ進む。
【０１０９】
ステップＳ３１３では、ステップＳ３０２で算出したライン内オフセット値を用いてラインから制御情報４０００を読み込み、読み込んだ制御情報４０００を要求元であるＩ／Ｏ処理３１００やアプリケーション処理３２００に応答して（Ｓ３１３）、制御情報参照処理を終了する（Ｓ３１４）。
【０１１０】
図１７は、制御情報アクセス処理３３００での制御情報更新通知受信処理の動作の例を示すフローチャートである。
【０１１１】
ＭＰ１２１０は、制御情報アクセス処理３３００での制御情報更新通知受信処理を開始すると（Ｓ４０１）、まず、ＬＭ１２２０上の通信エリア５３００を参照し、通信エリア５３００上に制御情報更新通知があるか否かを判断する（Ｓ４０２）。制御情報更新通知がない場合は、以降の処理を行わずに制御情報更新通知受信処理を終了する（Ｓ４０７）。
【０１１２】
ステップＳ４０２で、制御情報更新通知がある場合は、制御情報キャッシュ管理表５２２０を参照し、ＳＭアドレス範囲フィールド５２２２が制御情報更新通知に含まれるＳＭアドレス（以下「更新アドレス」という場合がある）を含むエントリの格納エリアインデックス番号範囲フィールド５２２３に値が格納されているか否か、すなわち、更新アドレスに対応する格納エリアがあるか否かを判断する（Ｓ４０３）。値が格納されていない場合は、以降の処理を行わずに制御情報更新通知受信処理を終了する（Ｓ４０７）。
【０１１３】
ステップＳ４０３で、値が格納されている場合は、更新アドレスと、対応する制御情報キャッシュ管理表５２２０のエントリの格納エリアインデックス番号範囲フィールド５２２３の値から、対象の制御情報４０００が格納されている格納エリアのインデックス番号を算出する（Ｓ４０４）。算出の方法としては、前述したように、例えばハッシュ等を用いることができる。
【０１１４】
次に、インデックス番号に対応するＬＭ−ＳＭ対応表５２１０を参照し、ＳＭアドレスフィールド５２１２に更新アドレスを含むエントリが存在するか否かを判断する（Ｓ４０５）。エントリが存在しない場合は、以降の処理を行わずに制御情報更新通知受信処理を終了する（Ｓ４０７）。
【０１１５】
ステップＳ４０６で、エントリが存在する場合は、ＬＭ−ＳＭ対応表５２１０において当該エントリのＳＭアドレスフィールド５２１２および最終アクセス時刻フィールド５２１３の値を削除して当該エントリを無効化し（Ｓ４０６）、制御情報更新通知受信処理を終了する（Ｓ４０７）。
【０１１６】
図１８は、制御情報アクセス処理３３００での制御情報更新処理の動作の例を示すフローチャートである。制御情報更新処理は、前述したＩ／Ｏ処理３１００やアプリケーション処理３２００から、更新対象のＳＭアドレスを伴って呼び出される。
【０１１７】
ＭＰ１２１０は、制御情報アクセス処理３３００での制御情報更新処理を開始すると（Ｓ５０１）、まず、上述した制御情報参照処理と同様に、対象のＳＭアドレスを含むラインの先頭のＳＭアドレス（以下「更新アドレス」という場合がある）を求める（Ｓ５０２）。
【０１１８】
次に、制御情報キャッシュ管理表５２２０を参照し、ＳＭアドレス範囲フィールド５２２２が更新アドレスを含むエントリの格納エリアインデックス番号範囲フィールド５２２３に値が格納されているか否か、すなわち、更新アドレスに対応する格納エリアがあるか否かを判断する（Ｓ５０３）。値が格納されていない場合は、ステップＳ５０７へ進む。
【０１１９】
ステップＳ５０３で、値が格納されている場合は、更新アドレスと、対応する制御情報キャッシュ管理表５２２０のエントリの格納エリアインデックス番号範囲フィールド５２２３の値から、対象の制御情報４０００が格納されている格納エリアのインデックス番号を算出する（Ｓ５０４）。算出の方法としては、前述したように、例えばハッシュ等を用いることができる。
【０１２０】
次に、インデックス番号に対応するＬＭ−ＳＭ対応表５２１０を参照し、ＳＭアドレスフィールド５２１２に更新アドレスを含むエントリが存在するか否かを判断する（Ｓ５０５）。エントリが存在する場合は、当該エントリのＬＭアドレスフィールド５２１１に格納されたＬＭアドレスに基づいてＬＭ１２２０上の制御情報キャッシュエリア５１００の制御情報４０００を更新する（Ｓ５０６）。ステップＳ５０５で、エントリが存在しない場合は、ステップＳ５０７へ進む。
【０１２１】
ステップＳ５０７では、更新アドレスに基づいてＳＭ１３００上の制御情報４０００を更新する（Ｓ５０７）。次に、他のＭＰＰＫ１２００のＬＭ１２２０上の通信エリア５３００に制御情報更新通知を書き込むことで、他のＭＰＰＫ１２００のＭＰ１２１０に制御情報４０００の更新を通知し（Ｓ５０８）、制御情報更新処理を終了する（Ｓ５０９）。
【０１２２】
なお、制御情報更新通知は更新アドレスを含む。また、制御情報更新通知は、制御情報４０００の更新の都度行うのではなく、例えば、バッファ等に通知を保持しておいて適切なタイミング（例えば一連のＩ／Ｏ処理が完了した時点など）にまとめて通知してもよい。また、前述した統計情報等、キャッシュ対象外の制御情報４０００については、制御情報更新通知を省略してもよい。
【０１２３】
図１９は、構成変更処理３４００での動作の例を示すフローチャートである。
【０１２４】
ＭＰ１２１０は、構成変更処理３４００での処理を開始すると（Ｓ６０１）、まず、管理端末２１００から送信された構成変更要求を受け取る（Ｓ６０２）。次に、構成変更要求の種別に応じて処理を分岐する（Ｓ６０３、Ｓ６０５、Ｓ６０７、Ｓ６０９）。パス定義更新の要求の場合はステップＳ６０４へ、ＬＤＥＶ作成または削除の要求である場合はステップＳ６０６へ進む。また、アプリケーション設定変更処理３４１０での処理として、仮想ＬＤＥＶ作成・削除の要求である場合はステップＳ６０８へ、実体ＬＤＥＶ登録要求である場合にはステップＳ６１０へ進む。構成変更要求が上記のいずれにも該当しない場合は構成変更処理３４００での処理を終了する（Ｓ６１３）。
【０１２５】
構成変更要求がパス定義更新の要求の場合は、前述した制御情報アクセス処理３３００の制御情報更新処理を呼び出して、パス管理表４３００を更新し（Ｓ６０４）、ステップＳ６１２へ進む。また、構成変更要求がＬＤＥＶ作成・削除の要求の場合は、前述した制御情報アクセス処理３３００の制御情報更新処理を呼び出して、ＬＤＥＶ情報表４１００を更新し（Ｓ６０６）、さらに、担当ＭＰＰＫ表４２００を更新し（Ｓ６１１）、ステップＳ６１２へ進む。なお、作成されたＬＤＥＶ１５００の担当ＭＰＰＫは、例えばラウンドロビン方式で決定される。
【０１２６】
ステップＳ６１２では、各ホストＩ／Ｆ１６１０のバッファメモリ１６１２上の各表を更新することで、上述した担当ＭＰＰＫ表４２００およびパス管理表４３００の更新内容を各ホストＩ／Ｆ１６１０に反映し（Ｓ６１２）、構成変更処理３４００での処理を終了する（Ｓ６１３）。
【０１２７】
構成変更要求が仮想ＬＤＥＶ作成・削除の要求の場合は、前述した制御情報アクセス処理３３００の制御情報更新処理を呼び出して、ＬＤＥＶ情報表４１００および仮想−実体アドレス変換表４４２０を更新し（Ｓ６０８）、ステップＳ６１１へ進んで担当ＭＰＰＫを設定する。また、構成変更要求が実体ＬＤＥＶ６３００のプール６２００への登録の要求の場合は、前述した制御情報アクセス処理３３００の制御情報更新処理を呼び出して、実体ＬＤＥＶ管理表４４１０を更新し（Ｓ６１０）、構成変更処理３４００での処理を終了する（Ｓ６１３）。
【０１２８】
以上に説明したように、本実施の形態のストレージシステム１０００によれば、低速なアクセスとなるＳＭ１３００上の制御情報４０００について、高速なアクセスが可能なＬＭ１２２０上に一部をキャッシュとして格納してアクセスすることにより、制御情報４０００へのアクセスの待ち時間を削減でき、システムの処理性能を向上させることができる。また、制御情報４０００を、頻繁にアクセスされる構成依存情報とそうでない容量依存情報とに区別し、キャッシュの要否や、キャッシュする際のＬＭ１２２０上での格納エリアを分けることにより、頻繁にアクセスされる制御情報４０００についてのＬＭヒット率を向上させ、システムの処理性能を向上させることができる。
【０１２９】
＜実施の形態２＞
以下に、本発明の実施の形態２である計算機システムについて説明する。本実施の形態では、ストレージシステム１０００の構成変更に応じて動的にＬＭ１２２０上の各制御情報４０００をキャッシュする格納エリアのサイズを変更する場合の例について説明する。なお、システム構成の概要やハードウェア構成等は、実施の形態１で説明したものと同様であるため、再度の説明は省略する。
【０１３０】
［制御プログラム構成］
図２０は、本実施の形態の計算機システムにおける制御プログラム３０００の構成例を示した図である。実施の形態１の図４で説明した制御プログラム３０００の構成例に対して、格納エリア設定・変更処理３５００が追加されている点が異なる。格納エリア設定・変更処理３５００は、制御情報４０００をキャッシュするためのＬＭ１２２０上の格納エリアのサイズを、ストレージシステム１０００の構成変更に応じて動的に変更するための機能を提供する。格納エリア設定・変更処理３５００の詳細については後述する。
【０１３１】
［制御情報構成］
図２１は、ＬＭ１２２０上の情報の構成例を示した図である。実施の形態１の図６で説明したものに対して、制御情報管理情報５２００に制御情報サイズ表５２３０が追加されている点が異なる。
【０１３２】
図２２は、制御情報管理情報５２００である制御情報サイズ表５２３０の構成例を示した図である。制御情報サイズ表５２３０は、制御情報４０００の全ての種別について、制御情報名フィールド５２３１と、構成依存情報サイズフィールド５２３２と、容量依存情報サイズフィールド５２３３と、使用アプリケーションフィールド５２３４と、アプリケーション適用状況フィールド５２３５とを含むエントリを有する。
【０１３３】
制御情報名フィールド５２３１には、制御情報４０００を識別するための制御情報名が格納される。なお、本実施の形態においても実施の形態１と同様に、説明の便宜のため制御情報名を文字表記で記載しているが、実装に際しては、各制御情報４０００を識別するために割り当てたＩＤ等が設定されていてもよい。
【０１３４】
構成依存情報サイズフィールド５２３２には、同じエントリの制御情報名フィールド５２３１に格納された制御情報名が示す制御情報４０００における、構成依存情報の１単位（図２２の例ではＬＤＥＶ１５００）あたりのサイズを示す値が格納される。また、容量依存情報サイズフィールド５２３３には、同じエントリの制御情報名フィールド５２３１に格納された制御情報名が示す制御情報４０００における、容量依存情報の１単位（図２２の例では容量２５６ＫＢ）あたりのサイズを示す値が格納される。
【０１３５】
ＳＭ１３００上の制御情報４０００の中には、制御情報キャッシュエリア５１００にキャッシュするべきでない情報が存在する。これらの制御情報４０００については、構成依存情報サイズフィールド５２３２および容量依存情報サイズフィールド５２３３に値を格納しないことにより、制御情報キャッシュエリア５１００上に格納エリアが割り当てられず、制御情報キャッシュエリア５１００を効率的に使用することができる。
【０１３６】
なお、これらの制御情報４０００は、実施の形態１の図８で説明した制御情報キャッシュ管理表５２００において、対応するエントリの格納エリアインデックス番号範囲フィールド５２２３に値が格納されない。従って、図１６で説明した制御情報アクセス処理３３００での制御情報参照処理のステップＳ３０４において、キャッシュ対象外と判断される。
【０１３７】
使用アプリケーションフィールド５２３４には、同じエントリの制御情報名フィールド５２３１に格納された制御情報名が示す制御情報４０００を使用するアプリケーションの種別が格納される。なお、本実施の形態においても実施の形態１と同様に、説明の便宜のためアプリケーション名を文字表記で記載しているが、実装に際しては、各アプリケーションを識別するために割り当てたＩＤ等が設定されていてもよい。また、各制御情報４０００は複数のアプリケーションによって使用される場合があり、また全てのアプリケーションに共通で使用される場合もある。
【０１３８】
アプリケーション適用状況フィールド５２３５には、同じエントリの使用アプリケーションフィールド５２３４に格納されたアプリケーションのいずれかが実際に適用されたＬＤＥＶ１５００が１つ以上存在するか否かを示す値が格納される。例えば、図２２の例では、仮想ＬＤＥＶ機能を実際に適用したＬＤＥＶ１５００が１つでも存在する場合には、仮想ＬＤＥＶ機能が使用する実体ＬＤＥＶ管理表４４１０および仮想−実体アドレス変換表４４２０、および全てのアプリケーションが使用するＬＤＥＶ情報表４１００に対応するエントリのアプリケーション適用状況フィールド５２３５に、アプリケーションが適用されていることを示す値（図２２の例では“適用”の文字データ）が格納される。
【０１３９】
図２３は、格納エリアサイズ表５９００の構成例を示した図である。格納エリアサイズ表５９００は、後述する格納エリア設定・変更処理３５００での格納エリアサイズ表計算処理により計算された結果を格納するために一時的に作られ、格納エリアサイズ表計算処理後は破棄されるものである。格納エリアサイズ表５９００は、制御情報４０００の全ての種別について、制御情報名フィールド５９０１と、格納エリアサイズフィールド５９０２とを含むエントリを有する。
【０１４０】
制御情報名フィールド５９０１には、制御情報４０００を識別するための制御情報名が格納される。格納エリアサイズフィールド５９０２は、同じエントリの制御情報名フィールド５９０１に格納された制御情報名が示す制御情報４０００について、制御情報キャッシュエリア５１００上に確保する格納エリアのサイズを示す数値が格納される。
【０１４１】
［処理フロー］
以下、本実施の形態のストレージシステム１０００における、制御プログラム３０００による各種処理の処理フローについて、実施の形態１で説明したものと異なる部分を中心に説明する。
【０１４２】
図２４は、構成変更処理３４００での動作の例を示すフローチャートである。実施の形態１の図１９で説明した構成変更処理に対して、ステップＳ６２１が追加されているところのみが異なる。構成変更要求に対する処理により制御情報４０００が更新された後、ステップＳ６２１では、後述する格納エリア設定・変更処理を呼び出して、制御情報キャッシュエリア５１００上に確保する格納エリアを変更する（Ｓ６２１）。
【０１４３】
図２５は、構成変更処理３４００での格納エリア設定・変更処理の動作の例を示すフローチャートである。
【０１４４】
ＭＰ１２１０は、構成変更処理３４００での格納エリア設定・変更処理を開始すると（Ｓ７０１）、まず、制御情報キャッシュ管理表５２２０の格納エリア情報のリセット（全エントリの格納エリアインデックス番号範囲フィールド５２２３のクリア）を行う（Ｓ７０２）。次に、後述する格納エリアサイズ表計算処理を呼び出し、格納エリアサイズ表５９００を計算して作成する（Ｓ７０３）。次に、ＬＭ−ＳＭ対応表５２１０の全エントリをクリアし、制御情報キャッシュ管理表５２２０の格納エリアインデックス番号範囲フィールド５２２３の値を、ステップＳ７０３で作成された格納エリアサイズ表５９００の内容に基づいて更新し（Ｓ７０４）、格納エリア設定・変更処理を終了する（Ｓ７０５）。
【０１４５】
なお、ストレージシステム１０００の起動時において、上述した構成変更処理３４００での格納エリア設定・変更処理を行って、制御情報キャッシュ管理表５２２０の格納エリアインデックス番号範囲フィールド５２２３の値を新たに定義し直し、この値に従って格納エリアを設定するようにしてもよい。また、制御情報キャッシュ管理表５２２０の内容を、ストレージシステム１０００の停止時にも適当な手段で保持しておき、ストレージシステム１０００の起動時に、保持しておいた制御情報キャッシュ管理表５２２０の格納インデックス番号範囲フィールド５２２３の値に基づいてそのまま格納エリアを定義してもよい。
【０１４６】
図２６は、構成変更処理３４００での格納エリア設定・変更処理における格納エリアサイズ表計算処理の第１の動作の例を示すフローチャートである。ここでは、まず、制御情報４０００のうち構成依存情報について格納エリアサイズを計算する。
【０１４７】
ＭＰ１２１０は、格納エリアサイズ表計算処理を開始すると（Ｓ８０１）、まず、格納エリアサイズ表５９００を初期化する（Ｓ８０２）。以下、制御情報４０００のキャッシュ対象の全ての構成依存情報について、それぞれ格納エリアサイズの計算を行う。本実施の形態の例では、構成依存情報としては、ＬＤＥＶ情報表４１００と、実体ＬＤＥＶ管理表４４１０が該当する。
【０１４８】
具体的には、まず、格納エリアサイズの計算が未処理の制御情報４０００（構成依存情報）があるか否かを判断する（Ｓ８０３）。ここでは、例えば、制御情報サイズ表５２３０において、構成依存情報サイズフィールド５２３２に値が格納されているエントリの制御情報名フィールド５２３１で特定される制御情報４０００について、未処理のものがあるか否かを判断する。
【０１４９】
ステップＳ８０３で、未処理のものがない場合は、制御情報４０００毎の計算処理を終了し、ステップＳ８１６へ進む。未処理のものがある場合は、そのうちの１つの制御情報４０００を選択し（Ｓ８０４）、選択された制御情報４０００に対して、以下、全てのＬＤＥＶ１５００について、それぞれ格納エリアサイズを計算する。
【０１５０】
具体的には、まず、格納エリアサイズの計算が未処理のＬＤＥＶ１５００があるか否かを判断する（Ｓ８０５）。ここでは、例えば、ＬＤＥＶ情報表４１００の各エントリのＬＤＥＶ番号フィールド４１０１で特定されるＬＤＥＶ１５００について、未処理のものがあるか否かを判断する。未処理のものがない場合は、対象の制御情報４０００についての計算処理を終了し、ステップＳ８０３へ戻って、残りの制御情報４０００についての計算処理を行う。未処理のものがある場合は、そのうちの１つのＬＤＥＶ１５００を選択し（Ｓ８０６）、選択されたＬＤＥＶ１５００に対して格納エリアサイズを計算する。
【０１５１】
まず、担当ＭＰＰＫ表４２００を参照し、対象のＬＤＥＶ１５００についての担当ＭＰＰＫ番号４２０２を取得する（Ｓ８０７）。次に、取得した担当ＭＰＰＫ番号が、当該制御プログラム３０００が動作しているＭＰ１２１０が所属するＭＰＰＫ１２００（以下「自ＭＰＰＫ」という場合がある）のＭＰＰＫ番号と一致するか否か、すなわち、対象のＬＤＥＶ１５００が、自ＭＰＰＫが担当するＬＤＥＶ１５００であるか否かを判断する（Ｓ８０８）。自ＭＰＰＫが担当するＬＤＥＶ１５００ではない場合は、当該ＬＤＥＶ１５００についての計算処理を終了し、ステップＳ８０５へ戻って、残りのＬＤＥＶ１５００についての計算処理を行う。
【０１５２】
ステップＳ８０８で、自ＭＰＰＫが担当するＬＤＥＶ１５００であった場合は、ＬＤＥＶ情報表４１００を参照し、対象のＬＤＥＶ１５００に対応するエントリの適用アプリケーションフィールド４１０２に格納されている値を取得する（Ｓ８０９）。次に、取得した適用アプリケーションフィールド４１０２にいずれかのアプリケーションが設定されているか否か、すなわち、対象のＬＤＥＶ１５００に適用されているアプリケーションがあるか否かを判断する（Ｓ８１０）。適用アプリケーションがない場合は、当該ＬＤＥＶ１５００についての計算処理を終了し、ステップＳ８０５へ戻って、残りのＬＤＥＶ１５００についての計算処理を行う。
【０１５３】
ステップＳ８１０で、適用アプリケーションがある場合は、制御情報サイズ表５２３０を参照し、対象の制御情報４０００に対応するエントリの使用アプリケーションフィールド５２３４に格納されている値を取得する（Ｓ８１１）。次に、取得した使用アプリケーションフィールド５２３４に、ステップＳ８０９で取得した適用アプリケーションと一致するものがあるか否か、すなわち、対象のＬＤＥＶ１５００に適用されているアプリケーションが、対象の制御情報４０００を使用しているか否かを判断する（Ｓ８１２）。対象の制御情報４０００を使用していない場合は、当該ＬＤＥＶ１５００についての計算処理を終了し、ステップＳ８０５へ戻って、残りのＬＤＥＶ１５００についての計算処理を行う。
【０１５４】
ステップＳ８１２で、対象の制御情報４０００を使用している場合は、制御情報サイズ表５２３０を参照し、対象の制御情報４０００に対応するエントリの構成依存情報サイズフィールド５２３２に格納されている構成依存情報のサイズを取得する（Ｓ８１３）。次に、格納エリアサイズ表５９００を参照し、対象の制御情報４０００に対応するエントリの格納エリアサイズフィールド５９０２に格納されている値を取得して、これに、ステップＳ８１３で取得した構成依存情報サイズを加算する（Ｓ８１４）。次に、得られた値で、格納エリアサイズ表５９００の対象の制御情報４０００に対応するエントリの格納エリアサイズフィールド５９０２を更新し（Ｓ８１５）、ステップＳ８０５へ戻って、残りのＬＤＥＶ１５００についての計算処理を行う。
【０１５５】
ステップＳ８１６以降では、各制御情報４０００（構成依存情報）に対して求められた格納エリアサイズの補正を行う。具体的には、まず、格納エリアサイズ表５９００の各エントリを参照し、格納エリアサイズフィールド５９０２に格納された値の合計値を算出する（Ｓ８１６）。次に、得られた合計値が、構成依存情報に対する制御情報キャッシュエリア５１００の容量の上限値を超えているか否かを判断する（Ｓ８１７）。
【０１５６】
ここで、構成依存情報に対する制御情報キャッシュエリア５１００の容量の上限値は、例えば、サイズの絶対値や、制御情報キャッシュエリア５１００の全容量に対する比率等によって指定することができ、任意の手段でストレージシステム１０００に保持しておくことができる。
【０１５７】
ステップＳ８１７で、上限値を超えていない場合は、構成依存情報についての格納エリアサイズの計算処理を終了する（図中Ａ）。上限値を超えている場合は、格納エリアサイズを上限値を超えないように補正する（Ｓ８１８）。
【０１５８】
補正の方法としては、例えば、格納エリアサイズ表５９００を参照し、構成依存情報毎の格納エリアサイズの比に従って、上限値を超えた分を按分してサイズを減らしてもよい。また、構成依存情報の中でも比較的高頻度で参照される情報（例えば、ＬＤＥＶ情報表４１００等）に対して優先的に格納エリアサイズを確保してもよい。なお、後述する容量依存情報のための格納エリアサイズの確保のため、制御情報キャッシュエリア５１００の容量を構成依存情報で使い切らないことが望ましい。
【０１５９】
図２７は、構成変更処理３４００での格納エリア設定・変更処理における格納エリアサイズ表計算処理の第２の動作の例を示すフローチャートである。図２７においても、図２６で説明したのと同様に、まず、制御情報４０００のうち構成依存情報について格納エリアサイズを計算する。なお、図２６におけるステップＳ８０１〜Ｓ８０４での格納エリアサイズ表５９００の初期化、および未処理の制御情報４０００を選択する処理と、ステップＳ８１６〜Ｓ８１８での格納エリアサイズの補正の処理については、図２７の例でも同様であるため、再度の説明は省略する。
【０１６０】
図２７の例では、ステップＳ８０４で選択された制御情報４０００について、制御情報サイズ表５２３０を参照し、対象の制御情報４０００に対応するエントリのアプリケーション適用状況フィールド５２３５に格納されている値を取得する（Ｓ８２１）。次に、取得したアプリケーション適用状況フィールド５２３５の値が、対象の制御情報４０００を使用するいずれかのアプリケーションが１つ以上のＬＤＥＶ１５００に実際に適用されていることを示す値であるか否かを判断する（Ｓ８２２）。アプリケーションが実際に適用されていない場合は、対象の制御情報４０００についての計算処理を終了し、ステップＳ８０３へ戻って、残りの制御情報４０００についての計算処理を行う。
【０１６１】
ステップＳ８２２で、いずれかのアプリケーションが１つ以上のＬＤＥＶ１５００に実際に適用されている場合は、担当ＭＰＰＫ表４２００を参照し、自ＭＰＰＫが担当ＭＰＰＫとなっているＬＤＥＶ１５００の数を取得する（Ｓ８２３）。次に、制御情報サイズ表５２３０を参照し、対象の制御情報４０００に対応するエントリから構成依存情報サイズフィールド５２３２に格納されている構成依存情報のサイズを取得する（Ｓ８２４）。
【０１６２】
次に、ステップＳ８２３で取得した自ＭＰＰＫが担当ＭＰＰＫとなっているＬＤＥＶ１５００の数と、ステップＳ８２４で取得した対象の制御情報４０００の構成依存情報のサイズとを積算し、格納エリアサイズを計算する（Ｓ８２５）。次に、得られた値で、格納エリアサイズ表５９００の対象の制御情報４０００に対応するエントリの格納エリアサイズフィールド５９０２を更新し（Ｓ８２６）、ステップＳ８０３へ戻って、残りの制御情報４０００についての計算処理を行う。
【０１６３】
以上に説明したように、図２６で説明した構成依存情報の格納エリアサイズの計算処理では、対象の制御情報４０００について、これを実際に使用するアプリケーションが適用されたＬＤＥＶ１５００の数に応じたサイズだけ格納エリアを確保するため、制御情報キャッシュエリア５１００の領域を無駄なく効率的に利用できるが、ＬＤＥＶ１５００毎にＬＤＥＶ情報表４１００を参照して処理を行う必要があり、処理が若干煩雑となる。
【０１６４】
一方、図２７で説明した構成依存情報の格納エリアサイズの計算処理では、対象の制御情報４０００について、これを実際に使用するアプリケーションが適用されたＬＤＥＶ１５００が１つでもあれば、全てのＬＤＥＶ１５００の数に応じたサイズの格納エリアを確保するため、制御情報キャッシュエリア５１００の領域の利用効率は低下するが、ＬＤＥＶ１５００毎の処理が不要となり、ＬＤＥＶ情報表４１００を参照する必要もなく、計算処理を高速化することができる。
【０１６５】
なお、図２７の例では、全てのＬＤＥＶ１５００の数に応じたサイズの格納エリアを確保するようにしているが、例えば、適用されたアプリケーションについての利用可能なＬＤＥＶ１５００のライセンス数に応じたサイズの格納エリアを確保するようにしてもよい。
【０１６６】
図２８は、構成変更処理３４００での格納エリア設定・変更処理における格納エリアサイズ表計算処理の動作の例の続きを示すフローチャートである。ここでは、前述した図２６もしくは図２７での構成依存情報についての格納エリアサイズの計算処理に続き、制御情報４０００のうち容量依存情報について格納エリアサイズを計算する。
【０１６７】
ＭＰ１２１０は、構成依存情報についての格納エリアサイズの計算処理に続き（図中Ａ）、制御情報４０００のキャッシュ対象の全ての容量依存情報について、それぞれ格納エリアサイズの計算を行う。本実施の形態の例では、容量依存情報としては、仮想−実体アドレス変換表４４２０が該当する。
【０１６８】
具体的には、まず、格納エリアサイズの計算が未処理の制御情報４０００（容量依存情報）があるか否かを判断する（Ｓ８５１）。ここでは、図２６で説明した構成依存情報の場合と同様に、例えば、制御情報サイズ表５２３０において、容量依存情報サイズフィールド５２３３に値が格納されているエントリの制御情報名フィールド５２３１で特定される制御情報４０００について、未処理のものがあるか否かを判断する。
【０１６９】
ステップＳ８５１で、未処理のものがない場合は、制御情報４０００毎の計算処理を終了し、ステップＳ８６３へ進む。未処理のものがある場合は、そのうちの１つの制御情報４０００を選択し（Ｓ８５２）、選択された制御情報４０００に対して、以下、全てのＬＤＥＶ１５００について、それぞれ格納エリアサイズを計算する。
【０１７０】
具体的には、まず、格納エリアサイズの計算が未処理のＬＤＥＶ１５００があるか否かを判断する（Ｓ８５３）。ここでも、図２６で説明した構成依存情報の場合と同様に、例えば、ＬＤＥＶ情報表４１００の各エントリのＬＤＥＶ番号フィールド４１０１で特定されるＬＤＥＶ１５００について、未処理のものがあるか否かを判断する。未処理のものがない場合は、対象の制御情報４０００についての計算処理を終了し、ステップＳ８５１へ戻って、残りの制御情報４０００についての計算処理を行う。未処理のものがある場合は、そのうちの１つのＬＤＥＶ１５００を選択し（Ｓ８５４）、選択されたＬＤＥＶ１５００に対して格納エリアサイズを計算する。
【０１７１】
まず、ＬＤＥＶ情報表４１００を参照し、対象のＬＤＥＶ１５００に対応するエントリの適用アプリケーションフィールド４１０２に格納されている値を取得する（Ｓ８５５）。次に、取得した適用アプリケーションフィールド４１０２にいずれかのアプリケーションが設定されているか否か、すなわち、対象のＬＤＥＶ１５００に適用されているアプリケーションがあるか否かを判断する（Ｓ８５６）。適用アプリケーションがない場合は、当該ＬＤＥＶ１５００についての計算処理を終了し、ステップＳ８５３へ戻って、残りのＬＤＥＶ１５００についての計算処理を行う。
【０１７２】
ステップＳ８５６で、適用アプリケーションがある場合は、制御情報サイズ表５２３０を参照し、対象の制御情報４０００に対応するエントリの使用アプリケーションフィールド５２３４に格納されている値を取得する（Ｓ８５７）。次に、取得した使用アプリケーションフィールド５２３４に、ステップＳ８５５で取得した適用アプリケーションと一致するものがあるか否か、すなわち、対象のＬＤＥＶ１５００に適用されているアプリケーションが、対象の制御情報４０００を使用しているか否かを判断する（Ｓ８５８）。対象の制御情報４０００を使用していない場合は、当該ＬＤＥＶ１５００についての計算処理を終了し、ステップＳ８５３へ戻って、残りのＬＤＥＶ１５００についての計算処理を行う。
【０１７３】
ステップＳ８５８で、対象の制御情報４０００を使用している場合は、ＬＤＥＶ情報表４１００を参照し、対象のＬＤＥＶ１５００に対応するエントリの容量フィールド４１０３に格納されている値を取得する（Ｓ８５９）。次に、制御情報サイズ表５２３０を参照し、対象の制御情報４０００に対応するエントリの容量依存情報サイズフィールド５２３３に格納されている容量依存情報のサイズを取得する（Ｓ８６０）。
【０１７４】
次に、ステップＳ８５９で取得した対象のＬＤＥＶ１５００の容量の値と、ステップＳ８６０で取得した対象の制御情報４０００の容量依存情報のサイズとを積算し、格納エリアサイズを計算する。また、格納エリアサイズ表５９００を参照し、対象の制御情報４０００に対応するエントリの格納エリアサイズフィールド５９０２に格納されている値を取得して、これに、計算された容量依存情報サイズを加算する（Ｓ８６１）。次に、得られた値で、格納エリアサイズ表５９００の対象の制御情報４０００に対応するエントリの格納エリアサイズフィールド５９０２を更新し（Ｓ８６２）、ステップＳ８５３へ戻って、残りのＬＤＥＶ１５００についての計算処理を行う。
【０１７５】
ステップＳ８６３以降では、各制御情報４０００（容量依存情報）に対して求められた格納エリアサイズの補正を行う。具体的には、まず、格納エリアサイズ表５９００の各エントリを参照し、格納エリアサイズフィールド５９０２に格納された値の合計値を算出する（Ｓ８６３）。次に、得られた合計値が、制御情報キャッシュエリア５１００のサイズを超えているか否かを判断する（Ｓ８６４）。
【０１７６】
ステップＳ８６４で、制御情報キャッシュエリア５１００のサイズを超えていない場合は、格納エリアサイズ表計算処理を終了する（Ｓ８６６）。制御情報キャッシュエリア５１００のサイズを超えている場合は、格納エリアサイズが制御情報キャッシュエリア５１００のサイズを超えないように補正し（Ｓ８６５）、格納エリアサイズ表計算処理を終了する（Ｓ８６６）。補正の方法としては、例えば、格納エリアサイズ表５９００を参照し、容量依存情報毎の格納エリアサイズの比に従って、制御情報キャッシュエリア５１００のサイズを超えた分を按分してサイズを減らしてもよい。
【０１７７】
また、容量依存情報については、それぞれ個別に格納エリアを確保せずに、全ての容量依存情報で共有の格納エリアを確保するという方法もある。例えば、仮想ＬＤＥＶ機能を利用する場合、実体ＬＤＥＶ６２１０の使用容量が極めて少ない場合には、仮想−実体アドレス変換表４４２０の情報量は大きくならない。そのため、制御情報キャッシュエリア５１００の中で仮想ＬＤＥＶ６１００の容量に比例した格納エリアを確保してしまうと、制御情報キャッシュエリア５１００の領域の利用効率が低下する。
【０１７８】
そこで、容量依存情報に個別に格納エリアを確保せず、全ての容量依存情報で共有の格納エリアを確保することにより、上記のような状況を防ぎ、制御情報キャッシュエリア５１００の領域を無駄なく効率的に利用できる。
【０１７９】
以上に説明したように、本実施の形態のストレージシステム１０００によれば、ストレージシステム１０００の構成や設定の変更に応じて、動的に制御情報キャッシュエリア５１００上の格納エリアサイズを変更することができる。これにより、ＬＭ１２２０上の制御情報キャッシュエリア５１００の領域の利用効率を高くすることができる。
【０１８０】
＜実施の形態３＞
以下に、本発明の実施の形態３である計算機システムについて説明する。本実施の形態では、各制御情報４０００の管理情報を管理端末２１００に表示する場合の例について説明する。なお、システム構成の概要やハードウェア構成等は、実施の形態１で説明したものと同様であるため、再度の説明は省略する。
【０１８１】
図２９は、本実施の形態の計算機システムにおける制御プログラム３０００の構成例を示した図である。実施の形態２の図２０で説明した制御プログラム３０００の構成例に対して、管理情報表示処理３６００が追加されている点が異なる。管理情報表示処理３６００は、管理端末２１００が送信する管理情報表示要求を受信し、制御情報４０００についての管理情報を取得して管理端末２１００上に表示させる機能を提供する。
【０１８２】
図３０は、管理情報表示処理３６００での動作の例を示すフローチャートである。
【０１８３】
ＭＰ１２１０は、管理端末２１００から管理情報表示要求を受信すると管理情報表示処理を開始する（Ｓ９０１）。まず、実施の形態２の図２６〜図２８で説明した格納エリアサイズ表計算処理のうち、図２６もしくは図２７におけるステップＳ８１６〜Ｓ８１８の格納エリアサイズの補正処理を除いた、構成依存情報についての格納エリアサイズの計算処理、および、図２８におけるステップＳ８６３〜Ｓ８６５の格納エリアサイズの補正処理を除いた、容量依存情報についての格納エリアサイズの計算処理を呼び出し、制御情報４０００毎の格納エリアサイズの必要量（必要格納エリアサイズ）を算出する（Ｓ９０２）。
【０１８４】
格納エリア設定・変更処理３５００での格納エリアサイズ表計算処理のうち、格納エリアサイズの補正処理を除いているため、各制御情報４０００についての格納エリアサイズの必要量を算出することができる。なお、ここで算出された格納エリアサイズの必要量は、その合計値が制御情報キャッシュエリア５１００の総容量を超えている場合もあり得る。
【０１８５】
次に、ＬＭ−ＳＭ対応表５２１０および制御情報キャッシュ管理表５２２０を参照し、制御情報キャッシュ管理表５２２０の各制御情報４０００に対応するエントリの格納エリアインデックス番号範囲フィールド５２２３に格納された値と、ＬＭ−ＳＭ対応表５２１０のＬＭアドレスフィールド５２１１に格納された値とに基づいて、制御情報４０００毎の格納エリアサイズの割り当て量（割当格納エリアサイズ）を算出する（Ｓ９０３）。
【０１８６】
次に、その他の制御情報４０００としてホスト２０００からのＩ／Ｏ要求の数などをカウントしている統計情報に基づいて、制御情報４０００毎のＬＭヒット率を算出する（Ｓ９０４）。ＬＭヒット率は、例えば、実施の形態１の図１６で説明した制御情報参照処理の中で、ＬＭヒットした回数（ステップＳ３０７でＹｅｓの分岐）とＬＭミスした回数（ステップＳ３０７でＮｏの分岐）を統計情報として記録し、定期的に集計・初期化することで得られる。
【０１８７】
次に、ステップＳ９０２で算出された制御情報４０００毎の必要格納エリアサイズ、ステップＳ９０３で算出された制御情報４０００毎の割当格納エリアサイズ、ステップＳ９０４で算出された制御情報４０００毎のＬＭヒット率を、管理端末２１００に管理情報として表示し（Ｓ９０５）、管理情報表示処理を終了する（Ｓ９０６）。
【０１８８】
図３１は、管理端末２１００で制御情報４０００の管理情報を表示する管理画面の例を示した図である。管理画面７０００上には、例えば、各ＭＰＰＫ１２００を示す枠が表示され、そのそれぞれに、対象のＭＰＰＫ１２００における制御情報４０００毎の必要格納エリアサイズ、割当格納エリアサイズ、ＬＭヒット率などが表示される。また、管理者に、管理画面７０００上で各制御情報４０００に割り当てる格納エリアサイズを入力させることで、各アプリケーションの使用する制御情報４０００に対して、割り当てる格納エリアのサイズを変更し、特定のアプリケーションの性能を優先させる等の設定ができるようにしてもよい。
【０１８９】
また、ＬＭ１２２０の使用容量が大きく、ＬＭヒット率が低下しているＭＰＰＫ１２００から、当該ＭＰＰＫ１２００が担当するＬＤＥＶ１５００を他のＭＰＰＫ１２００に移動することによって、ＭＰＰＫ１２００毎のＬＭ１２２０の使用容量の偏りを無くし、利用効率を上げることができる。また、管理端末２１００上で動作するプログラムによって、ＭＰＰＫ１２００間でＬＭ１２２０の使用容量の偏りが少なくなるＬＤＥＶ１５００とその担当ＭＰＰＫの組み合わせを算出し、管理者に提示してもよい。
【０１９０】
以上に説明したように、本実施の形態のストレージシステム１０００によれば、各制御情報４０００の管理情報を管理端末２１００に表示することで、管理者が管理情報を参照し、実施の形態２で説明した構成変更処理３４００によって、ＬＭ１２２０上の制御情報キャッシュエリア５１００の格納エリアサイズを最適に設定することが可能となり、制御情報キャッシュエリア５１００の利用効率を上げることができる。
【０１９１】
＜実施の形態４＞
以下に、本発明の実施の形態４である計算機システムについて説明する。本実施の形態では、制御情報４０００の更新に伴う他のＭＰＰＫ１２００への更新通知を省略する場合の例について説明する。なお、システム構成の概要やハードウェア構成、制御プログラム構成等は、実施の形態１〜３で説明したものと同様であるため、再度の説明は省略する。
【０１９２】
図３２は、制御情報管理情報５２００である制御情報キャッシュ管理表５２２０の構成例を示した図である。実施の形態１の図８で説明したものに対して、単独使用フラグフィールド５２２４が追加されている点が異なる。
【０１９３】
単独使用フラグフィールド５２２４は、同じエントリの制御情報名フィールド５２２１が示す制御情報４０００の各情報が、特定のＭＰＰＫ１２００によってしか使用されない制御情報４０００であるか否かを示すフラグである（例えば、“１”：特定のＭＰＰＫ１２００のみが単独使用、“０”：複数のＭＰＰＫ１２００が使用）。
【０１９４】
例えば、本実施の形態のストレージシステム１０００では、仮想−実体アドレス変換表４４２０の各エントリは、それぞれのエントリの仮想ＬＤＥＶ番号フィールド４４２１に格納されたＬＤＥＶ番号が示す仮想ＬＤＥＶ６２００の担当ＭＰＰＫのみがアクセスする情報である。従って、図３２の例では、制御情報キャッシュ管理表５２２０における、仮想−実体アドレス変換表４４２０に対応するエントリの単独使用フラグフィールド５２２４に“１”が格納されている。
【０１９５】
図３３は、制御情報アクセス処理３３００での制御情報更新通知受信処理の動作の例を示すフローチャートである。実施の形態１の図１８で説明したものに対して、ステップＳ５２１とＳ５２２が追加されている点が異なる。
【０１９６】
ＭＰ１２１０は、ステップＳ５０１〜Ｓ５０８で、制御情報更新要求に対して更新アドレスを算出し、ＬＭ１２２０およびＳＭ１３００上の情報を更新した後、制御情報キャッシュ管理表５２２０を参照し、更新した制御情報４０００に対応するエントリの単独使用フラグフィールド５２２４に格納されている値を取得する（Ｓ５２１）。次に、取得した単独使用フラグフィールド５２２４に格納されていた値が“１”であるか否か、すなわち、更新した制御情報４０００が、特定のＭＰＰＫ１２００に単独使用される制御情報４０００であるか否かを判断する（Ｓ５２２）。
【０１９７】
ステップＳ５２２で、更新した制御情報４０００が単独使用される制御情報４０００である場合は、ステップＳ５０９の他のＭＰＰＫ１２００への更新通知を行わずに、制御情報更新処理を終了する（Ｓ５１０）。更新した制御情報４０００が複数のＭＰＰＫ１２００に使用される制御情報４０００である場合は、他のＭＰＰＫ１２００への更新通知を行い（Ｓ５０９）、制御情報更新処理を終了する（Ｓ５１０）。
【０１９８】
このように、ＭＰＰＫ１２００によって単独使用される制御情報４０００については、制御情報更新通知を行わないことにより、ＭＰＰＫ１２００間の通信、および、更新通知の受信に伴う処理が発生しないようにすることができるため、システムの性能が向上する。
【０１９９】
なお、単独使用される制御情報４０００については更新通知を行わないため、例えば、ＬＤＥＶ１５００の担当ＭＰＰＫを変更した際に、変更前の担当ＭＰＰＫ上の制御情報キャッシュエリア５１００に古い情報が残ってしまう場合がある。このとき、変更前の担当ＭＰＰＫでは、正しい情報にアクセスできなくなる可能性がある。これを防ぐため、構成変更処理３４００によって、担当ＭＰＰＫが新たに設定されたり変更されたりして、担当するＬＤＥＶ１５００が増えたＭＰＰＫ１２００は、単独使用される制御情報４０００について、後述する担当ＭＰＰＫ設定後処理を呼び出すことにより、他のＭＰＰＫ１２００が最新の情報にアクセスできるようにする必要がある。
【０２００】
図３４は、構成変更処理３４００での動作の例を示すフローチャートである。実施の形態２の図２４で説明したものに対して、ステップＳ６３１が追加されている点が異なる。
【０２０１】
ＭＰ１２１０は、ステップＳ６１１で担当ＭＰＰＫ表４２００を更新した後、作成もしくは新たに設定されたＬＤＥＶ１５００についての担当ＭＰＰＫのＭＰ１２１０に対して、後述する担当ＭＰＰＫ設定後処理を実行させる（Ｓ６３１）。例えば、対象のＬＤＥＶ１５００について、自ＭＰＰＫが担当ＭＰＰＫである場合には、自ＭＰＰＫが担当ＭＰＰＫ設定後処理を呼び出す。また、他ＭＰＰＫが担当ＭＰＰＫである場合には、担当ＭＰＰＫのＬＭ１２２０の通信エリア５３００に処理要求を書き込むことで、担当ＭＰＰＫに担当ＭＰＰＫ設定後処理を呼び出させるといった方法をとることができる。
【０２０２】
図３５は、構成変更処理３４００での担当ＭＰＰＫ設定後処理の動作の例を示すフローチャートである。
【０２０３】
ＭＰ１２１０は、構成変更処理３４００での担当ＭＰＰＫ設定後処理を開始すると（Ｓ１００１）、まず、未処理の制御情報４０００があるか否かを判断する（Ｓ１００２）。ここでは、例えば、制御情報キャッシュ管理表５２２０の制御情報名フィールド５２２１で特定される制御情報４０００について、未処理のものがあるか否かを判断する。
【０２０４】
ステップＳ１００２で、未処理のものがない場合は、担当ＭＰＰＫ設定後処理を終了する（Ｓ１００７）。未処理のものがある場合は、そのうちの１つの制御情報４０００を選択し（Ｓ１００３）、選択された制御情報４０００に対して以下のステップＳ１００４〜Ｓ１００６の処理を行う。
【０２０５】
具他的には、まず、制御情報キャッシュ管理表５２２０を参照し、対象の制御情報４０００に対応するエントリの単独使用フラグフィールド５２２４に格納されている値を取得する（Ｓ１００４）。次に、取得した単独使用フラグフィールド５２２４の値が“１”であるか否か、すなわち、対象の制御情報４０００が単独使用されるものであるか否かを判断する（Ｓ１００５）。単独使用フラグフィールド５２２４の値が“１”ではない、すなわち、対象の制御情報４０００が複数のＭＰＰＫ１２００に使用されるものである場合は、ステップＳ１００２へ戻って、残りの制御情報４０００についての処理を行う。
【０２０６】
ステップＳ１００５で、単独使用フラグフィールド５２２４の値が“１”である場合、すなわち、対象の制御情報４０００が単独使用されるものである場合は、制御情報キャッシュ管理表５２２０を参照し、対象の制御情報４０００に対応するエントリの格納エリアインデックス番号範囲フィールド５２２３に格納されているインデックス番号の範囲を取得する。この範囲に含まれるインデックス番号に対応するＬＭ−ＳＭ対応表５２１０の全エントリについて、ＳＭアドレスフィールド５２１２および最終アクセス時刻フィールド５２１３の値を削除することによって、キャッシュされた制御情報４０００を無効化する（Ｓ１００６）。
【０２０７】
以上の処理により、担当ＭＰＰＫが変更された場合に、その担当ＭＰＰＫにより単独使用される制御情報４０００は、他のＭＰＰＫ１２００のＬＭ１２２０上の制御情報キャッシュエリア５１００に存在する場合に無効化される。なお、単独使用される制御情報４０００について、全てのＬＤＥＶ１５００に関する制御情報４０００を無効化せずに、新たに担当するＬＤＥＶ１５００に関する制御情報４０００だけを無効化するようにしてもよい。
【０２０８】
このように、頻繁に参照される制御情報４０００については、ＬＭ１２２０上にキャッシュしてアクセスすることでシステムの性能が向上する。その中でも、更新が少ない制御情報４０００は、全てのＭＰＰＫ１２００でＬＭ１２２０にそれぞれキャッシュし、あるＭＰＰＫ１２００で更新された際に他のＭＰＰＫ１２００へ更新通知を送ればよい。
【０２０９】
一方、更新が頻繁であっても、特定のＭＰＰＫ１２００でしかアクセスされない制御情報４０００は、上述したように、そのＭＰＰＫ１２００でのみキャッシュすることで、他のＭＰＰＫ１２００への更新通知を省略できる。また、前述したように、統計情報等、全てのＭＰＰＫ１２００においてキャッシュ対象外である制御情報４０００についても、更新通知を省略できる。すなわち、他のＭＰＰＫ１２００の全てがキャッシュしていない制御情報４０００については、更新通知を省略できる。
【０２１０】
以上に説明したように、本実施の形態のストレージシステム１０００によれば、特定のＭＰＰＫ１２００でしかアクセスされない制御情報４０００は、そのＭＰＰＫ１２００でのみキャッシュして他のＭＰＰＫ１２００への更新通知を省略することで制御情報更新通知を減らすことができ、ＭＰＰＫ１２００間の通信、および、更新通知の受信に伴う処理が減ることにより、システムの性能を向上させることができる。
【０２１１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０２１２】
例えば、実施の形態１〜４に記載された計算機システムにおける各構成要素は、説明の簡便化のために１つのみ記載されているものであっても、それらを二重化等することで高信頼化を図ることが可能である。
【産業上の利用可能性】
【０２１３】
本発明は、複数のプロセッサを有し、共有メモリ上の制御情報を用いてディスク装置を制御するストレージシステムおよびその制御プログラムならびにストレージシステム制御方法に利用可能である。
【図面の簡単な説明】
【０２１４】
【図１】本発明の実施の形態１である計算機システムの構成例の概要を示した図である。
【図２】本発明の実施の形態１における仮想ＬＤＥＶ機能の概要を説明する図である。
【図３】本発明の実施の形態１におけるハードウェア構成例を示した図である。
【図４】本発明の実施の形態１における制御プログラムの構成例を示した図である。
【図５】本発明の実施の形態１におけるＳＭ上の制御情報の構成例を示した図である。
【図６】本発明の実施の形態１におけるＬＭ上の情報の構成例を示した図である。
【図７】本発明の実施の形態１におけるＬＭ−ＳＭ対応表の構成例を示した図である。
【図８】本発明の実施の形態１における制御情報キャッシュ管理表の構成例を示した図である。
【図９】本発明の実施の形態１におけるＬＤＥＶ情報表の構成例を示した図である。
【図１０】本発明の実施の形態１における実体ＬＤＥＶ管理表の構成例を示した図である。
【図１１】本発明の実施の形態１における仮想−実体アドレス変換表の構成例を示した図である。
【図１２】本発明の実施の形態１における担当ＭＰＰＫ表の構成例を示した図である。
【図１３】本発明の実施の形態１におけるパス管理表の構成例を示した図である。
【図１４】本発明の実施の形態１におけるＩ／Ｏ処理での動作の例を示すフローチャートである。
【図１５】本発明の実施の形態１におけるアプリケーション処理の仮想ＬＤＥＶ機能処理での動作の例を示すフローチャートである。
【図１６】本発明の実施の形態１における制御情報アクセス処理での制御情報参照処理の動作の例を示すフローチャートである。
【図１７】本発明の実施の形態１における制御情報アクセス処理での制御情報更新通知受信処理の動作の例を示すフローチャートである。
【図１８】本発明の実施の形態１における制御情報アクセス処理での制御情報更新処理の動作の例を示すフローチャートである。
【図１９】本発明の実施の形態１における構成変更処理での動作の例を示すフローチャートである。
【図２０】本発明の実施の形態２における制御プログラムの構成例を示した図である。
【図２１】本発明の実施の形態２におけるＬＭ上の情報の構成例を示した図である。
【図２２】本発明の実施の形態２における制御情報サイズ表の構成例を示した図である。
【図２３】本発明の実施の形態２における格納エリアサイズ表の構成例を示した図である。
【図２４】本発明の実施の形態２における構成変更処理での動作の例を示すフローチャートである。
【図２５】本発明の実施の形態２における構成変更処理での格納エリア設定・変更処理の動作の例を示すフローチャートである。
【図２６】本発明の実施の形態２における、構成変更処理での格納エリア設定・変更処理における格納エリアサイズ表計算処理の第１の動作の例を示すフローチャートである。
【図２７】本発明の実施の形態２における、構成変更処理での格納エリア設定・変更処理における格納エリアサイズ表計算処理の第２の動作の例を示すフローチャートである。
【図２８】本発明の実施の形態２における、構成変更処理での格納エリア設定・変更処理における格納エリアサイズ表計算処理の動作の例の続きを示すフローチャートである。
【図２９】本発明の実施の形態３における制御プログラムの構成例を示した図である。
【図３０】本発明の実施の形態３における管理情報表示処理での動作の例を示すフローチャートである。
【図３１】本発明の実施の形態３における、管理端末で制御情報の管理情報を表示する管理画面の例を示した図である。
【図３２】本発明の実施の形態４における制御情報キャッシュ管理表の構成例を示した図である。
【図３３】本発明の実施の形態４における制御情報アクセス処理での制御情報更新通知受信処理の動作の例を示すフローチャートである。
【図３４】本発明の実施の形態４における構成変更処理での動作の例を示すフローチャートである。
【図３５】本発明の実施の形態４における構成変更処理での担当ＭＰＰＫ設定後処理の動作の例を示すフローチャートである。
【符号の説明】
【０２１５】
１０００…ストレージシステム、１０１０…内部結合網、１０２０…ネットワークＩ／Ｆ、１１００…ポート、１２００…プロセッサパッケージ（ＭＰＰＫ）、１２１０…プロセッサ（ＭＰ）、１２２０…ローカルメモリ（ＬＭ）、１３００…共有制御用メモリ（ＳＭ）、１４００…ホストデータキャッシュメモリ（ＣＭ）、１５００…ボリューム（論理記憶装置（ＬＤＥＶ））、１６００…フロントエンドパッケージ（ＦＥＰＫ）、１６１０…ホストＩ／Ｆ、１６１１…データ転送プロセッサ、１６１２…ホストＩ／Ｆバッファメモリ、１７００…バックエンドパッケージ（ＢＥＰＫ）、１７１０…ディスクＩ／Ｆ、１７１１…データ転送プロセッサ、１７２０…物理記憶装置、１８００…キャッシュメモリパッケージ（ＣＭＰＫ）、１８１０…不揮発性半導体メモリ、
２０００…ホストコンピュータ（ホスト）、２１００…管理端末、２２００…データ転送用ネットワーク、２３００…管理用ネットワーク、
３０００…制御プログラム、３１００…Ｉ／Ｏ処理、３２００…アプリケーション処理、３２１０…仮想ＬＤＥＶ機能処理、３２１１…仮想−実体アドレス変換処理、３２１２…実領域割当処理、３３００…制御情報アクセス処理、３４００…構成変更処理、３４１０…アプリケーション設定変更処理、３５００…格納エリア設定・変更処理、３６００…管理情報表示処理、
４０００…制御情報、４１００…ＬＤＥＶ情報表、４１０１…ＬＤＥＶ番号フィールド、４１０２…適用アプリケーションフィールド、４１０３…容量フィールド、４２００…担当ＭＰＰＫ表、４２０１…ＬＤＥＶ番号フィールド、４２０２…担当ＭＰＰＫ番号フィールド、４３００…パス管理表、４３０１…ポート番号フィールド、４３０２…パス名フィールド、４３０３…ＬＤＥＶ番号フィールド、４４００…アプリケーション制御情報、
４４１０…実体ＬＤＥＶ管理表、４４１１…実体ＬＤＥＶ番号フィールド、４４１２…実体ＬＤＥＶ容量フィールド、４４１３…使用容量フィールド、４４２０…仮想−実体アドレス変換表、４４２１…仮想ＬＤＥＶ番号フィールド、４４２２…仮想アドレスフィールド、４４２３…実体ＬＤＥＶ番号フィールド、４４２４…実体アドレスフィールド、
５１００…制御情報キャッシュエリア、５２００…制御情報管理情報、５２１０…ＬＭ−ＳＭ対応表、５２１１…ＬＭアドレスフィールド、５２１２…ＳＭアドレスフィールド、５２１３…最終アクセス時刻フィールド、５２２０…制御情報キャッシュ管理表、５２２１…制御情報名フィールド、５２２２…ＳＭアドレス範囲フィールド、５２２３…格納エリアインデックス番号範囲フィールド、５２２４…単独使用フラグフィールド、５２３０…制御情報サイズ表、５２３１…制御情報名フィールド、５２３２…構成依存情報サイズフィールド、５２３３…容量依存情報サイズフィールド、５２３４…使用アプリケーションフィールド、５２３５…アプリケーション適用状況フィールド、５３００…通信エリア、５９００…格納エリアサイズ表、５９０１…制御情報名フィールド、５９０２…格納エリアサイズフィールド、
６１００…仮想ＬＤＥＶ、６２００…プール、６２１０…実体ＬＤＥＶ、６３００…実体ＬＤＥＶ、
７０００…管理画面。
【図１】
2010086211.tif 000003
【図２】
2010086211.tif 000004
【図３】
2010086211.tif 000005
【図４】
2010086211.tif 000006
【図５】
2010086211.tif 000007
【図６】
2010086211.tif 000008
【図７】
2010086211.tif 000009
【図８】
2010086211.tif 000010
【図９】
2010086211.tif 000011
【図１０】
2010086211.tif 000012
【図１１】
2010086211.tif 000013
【図１２】
2010086211.tif 000014
【図１３】
2010086211.tif 000015
【図１４】
2010086211.tif 000016
【図１５】
2010086211.tif 000017
【図１６】
2010086211.tif 000018
【図１７】
2010086211.tif 000019
【図１８】
2010086211.tif 000020
【図１９】
2010086211.tif 000021
【図２０】
2010086211.tif 000022
【図２１】
2010086211.tif 000023
【図２２】
2010086211.tif 000024
【図２３】
2010086211.tif 000025
【図２４】
2010086211.tif 000026
【図２５】
2010086211.tif 000027
【図２６】
2010086211.tif 000028
【図２７】
2010086211.tif 000029
【図２８】
2010086211.tif 000030
【図２９】
2010086211.tif 000031
【図３０】
2010086211.tif 000032
【図３１】
2010086211.tif 000033
【図３２】
2010086211.tif 000034
【図３３】
2010086211.tif 000035
【図３４】
2010086211.tif 000036
【図３５】
2010086211.tif 000037