以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
<概要>
本発明の一実施の形態におけるストレージシステムは、複数のプロセッサと、各プロセッサに共有接続されたSMと、各プロセッサに直接接続され高速にアクセス可能なLMとを有する。各プロセッサでは制御プログラムが動作し、SM上の制御情報にアクセスしながらホストコンピュータから送られてくるI/O要求を処理する。
本実施の形態のストレージシステムでは、プロセッサで動作する制御プログラムがSM上の制御情報を参照する際に、これら制御情報の一部をLMにキャッシュしてアクセスする。これにより、アクセス対象の制御情報が既にLMにキャッシュされている場合(以下「LMヒット」という場合がある)、対象の制御情報を高速に参照できるため、システムとしての性能を向上させることができる。なお、SM上の制御情報を更新する際には、他のLM上にキャッシュされた制御情報との整合性を保つため、更新を他プロセッサに通知する。更新を通知された他プロセッサでは、更新箇所に対応するLM上の制御情報を無効化する。
ここで、SM上の制御情報全体ではなくその一部のみをLMにキャッシュする場合、ホストコンピュータからのアクセスパターンによってはLM上にキャッシュされた制御情報のLMヒットの割合が低下し、システムとしての性能が悪化する可能性がある。そこで、本実施の形態のストレージシステムでは、SM上の制御情報を構成依存情報および容量依存情報の二つに区別してLMへのキャッシュを制御する。
構成依存情報とは、ストレージシステムの構成に応じてその情報量が決まる制御情報であり、頻繁にアクセスされる制御情報である。例えば、ストレージシステム毎に保持する情報(ストレージシステムのハードウェア構成の管理情報など)、各ボリューム毎に保持する情報(ボリュームの属性情報、ボリュームへのアクセスパス定義情報など)や、ストレージが備える機能の設定情報(例えば、コピー機能(ボリュームデータのコピーを行う機能)のためのコピー元とコピー先の対応情報など)などが該当する。これら構成依存情報は、ホストコンピュータによるアクセス対象であるボリューム内の領域に依存せずに参照されるためI/O毎に頻繁にアクセスされ、重要度が高い。
これに対して、容量依存情報は、ボリューム内の領域毎に対応した個別の制御情報(例えば、コピー機能におけるコピー済領域の管理情報など)であり、ホストコンピュータからのI/Oのパターンに依存してアクセス対象が変わる制御情報である。それぞれの制御情報は、対応するボリューム内の領域に対するホストコンピュータからのアクセスがあった場合にのみ参照・更新される。
構成依存情報は、装置単位またはボリューム単位で存在する制御情報であるため、ボリュームの容量に比例して増加する容量依存情報に比べて制御情報のサイズが小さい。そのため、制御情報全体で見ると、容量としては小さい構成依存情報に対してアクセスが集中する特性がある。
ここで、構成依存情報と容量依存情報とでLM上の制御情報キャッシュエリアを共有すると、ホストコンピュータからのアクセスの範囲が拡大するにつれて容量依存情報へのアクセス範囲も増加し、制御情報キャッシュエリア内の容量依存情報の割合が大きくなる。このため、参照頻度の低い容量依存情報が参照頻度の高い構成依存情報を制御情報キャッシュエリアから追い出してしまうことにより、対象の制御情報がLMにキャッシュされていない状態(以下「LMミス」という場合がある)が頻繁に起こり、低速なSMへのアクセスが発生するためシステムの処理性能が低下してしまう。
これを回避するため、制御情報毎に格納先の制御情報キャッシュエリアを小領域(以下「格納エリア」という場合がある)に分ける。各制御情報は、決まった格納エリアにのみ情報が格納され、他の格納エリアには格納されない。これにより、LM上の制御情報キャッシュエリアに優先的に格納する必要のある構成依存情報が、そうではない容量依存情報によって制御情報キャッシュエリアから追い出されることを防ぐことができ、LMヒット率を維持できる。この際、構成依存情報の格納エリアは、構成依存情報が全て格納可能となる十分なサイズが確保されていることが望ましい。
また、ストレージシステムの構成変更など、構成依存情報のサイズが変わるタイミングにあわせて格納エリアの設定を変更し、構成依存情報に対して十分な格納エリアが確保されるように維持することでシステムの性能を維持できるようにする。なお、ストレージシステムの構成変更は頻繁には行われないと想定されるため、上記のような格納エリアの設定変更処理の負荷はそれほど大きくはならない。
また、頻繁に参照されない制御情報は、LMにキャッシュしてもシステムの性能向上に対する効果が大きくないため、キャッシュ対象から外すことによりLM利用効率を高めることができる。また、頻繁に更新される情報は、更新時の他プロセッサへの更新通知処理が頻発し、システムの性能低下を招く可能性があるため、同様にキャッシュ対象から外すことによりシステムの性能低下を防ぐことができる。
また、例えば、管理端末からの要求に応じて、管理情報として制御情報キャッシュエリアの各格納エリアの使用状況(必要な格納エリアサイズに対する確保容量の割合、キャッシュされた制御情報のLMヒット率など)を表示する。表示された管理情報に基づいて、管理者からの指示により、各格納エリアの設定を変更したり、制御対象のボリュームを他のプロセッサに移動させてプロセッサが扱う制御情報を変更したりすることで、LM上の制御情報キャッシュエリアの使用を最適化し、ストレージシステムの使用状況に対応してシステムの性能を維持することが可能となる。
また、ある時点において特定のプロセッサにより単独で参照される制御情報については、当該制御情報が更新された際に他のプロセッサに更新を通知しないことにより、更新通知の処理と更新通知を受信した際の処理とを省略することができ、システムの性能を向上させることができる。
以上に説明したようなストレージシステムを有する本発明の一実施の形態である計算機システムについて、以下に実施の形態1〜4にて具体的に説明する。
<実施の形態1>
以下に、本発明の実施の形態1である計算機システムについて説明する。
[システム構成]
図1は、本実施の形態である計算機システムの構成例の概要を示した図である。本実施の形態の計算機システムは、ストレージシステム1000と、ホストコンピュータ(ホスト)2000とを有する構成となっている。
ストレージシステム1000は、ホスト2000と通信するための1つ以上のポート1100と、1つ以上のプロセッサパッケージ(MPPK:Micro Processor PacKage)1200と、共有制御用メモリ(SM:Shared Memory)1300と、ホストデータキャッシュメモリ(CM:Cache Memory)1400と、1つ以上のボリューム(論理記憶装置(LDEV:Logical DEVice))1500とを有する。なお、各LDEV1500は、ストレージシステム1000がLDEV1500を一意に識別するためのLDEV番号を持つ。
ホスト2000は、ストレージシステム1000に対してデータの書き込みまたは読み込みを行うため、I/O(Input/Output)要求をストレージシステム1000に対して送信する。I/O要求は、例えば、SCSI(Small Computer System Interface)のコマンド等であり、リード/ライトの区別を示す情報と、アクセス対象の装置を指し示すSCSIのポート番号と、LUN(Logical Unit Number)、およびアクセス対象領域を指し示すLBA(Logical Block Address)などを含む。
ストレージシステム1000は、LDEV1500に対してアクセスするように動作するため、ポート1100において、ポート番号とLUNを、後述するパス管理情報を用いてLDEV番号に変換し、LBAをLDEVアドレスに変換した上で、MPPK1200にI/O要求を送信する。
各MPPK1200は、それぞれ1つ以上のプロセッサ(MP:Micro Processor)1210と、ローカルメモリ(LM:Local Memory)1220とを有するパッケージである。なお、各LDEV1500には、それぞれにそのI/O処理を担当するMPPK1200(以下「担当MPPK」という場合がある)が設定されている。
CM1400は、LDEV1500に格納されたホストデータに対するアクセス高速化のために一般的に用いられるキャッシュメモリであり、LDEV1500に格納されたホストデータの一部を一時的に格納することにより、ホスト2000から頻繁にアクセスされるデータに高速にアクセスすることを可能とする。なお、CM1400は、本実施の形態のストレージシステム1000の特徴である制御情報4000のキャッシュには用いられない。
SM1300には、ストレージシステム1000において、LDEV1500、CM1400、ポート1100などの各構成要素を管理するための制御情報4000が格納される。
MPPK1200内の各MP1210では、制御プログラム3000が動作している。制御プログラム3000は、まず、ポート1100から振り分けられたホスト2000のI/O要求を処理するI/O処理3100と、アプリケーション処理3200と、これらがSM1300上の制御情報4000にアクセスするために呼び出す制御情報アクセス処理3300とを構成要素として持つ。
なお、アプリケーション処理3200とは、データの高信頼化や容量圧縮等を目的としてストレージシステム1000により提供される機能であるストレージアプリケーション(以下単に「アプリケーション」という場合がある)に対応した処理である。アプリケーションの例としては、前述したコピー機能(ボリュームデータのコピーを行う機能)や、後述する仮想LDEV機能などがある。ただし、アプリケーションについては、本実施の形態のストレージシステム1000において制御情報4000の具体例等を説明するために記載しているものであり、本発明の概念として必須となる構成要素ではない。
いずれかのアプリケーションが適用されているLDEV1500を対象とするI/O要求の処理においては、MP1210は、I/O処理3100によって対象のアプリケーション処理3200を呼び出し、アプリケーション固有の処理を行う。このとき、I/O処理3100やアプリケーション処理3200の中で、SM1300に格納された制御情報4000を参照・更新するため、制御情報アクセス処理3300を呼び出す。
この際、制御情報アクセス処理3300は、SM1300上の制御情報4000の一部を、LM1220上の制御情報キャッシュエリア5100に格納してアクセスする。これにより、低速なSM1300へのアクセスを高速なLM1220へのアクセスに置き換えることができ、制御情報4000へのアクセスのオーバーヘッドを減らし、システムの高性能化を実現できる。この制御情報4000についてのキャッシュ処理において、制御情報アクセス処理3300は、LM1220上に格納された制御情報管理情報5200へのアクセスを行う。これらの処理内容については後述する。
[アプリケーション(仮想LDEV)]
本実施の形態におけるストレージシステム1000は、上述したアプリケーションの例として、例えば、仮想LDEV機能を備える。以下、本実施の形態のストレージシステム1000における仮想LDEV機能について説明する。図2は、仮想LDEV機能の概要を説明する図である。
仮想LDEV機能は、実領域の割り当てられていない仮想的なLDEV(以下「仮想LDEV」という場合がある)を作成し、データの書き込みがあるまで実領域の割り当てを遅延する機能である。仮想LDEVに実領域を割り当てるためのLDEVを実体LDEVといい、仮想LDEV上のアドレス(仮想アドレス)に対して割り当てられた実体LDEV上の領域のアドレスを実体アドレスという。
図2において、実体LDEV6210はプール6200として管理される。新たに実体LDEV6300をプール6200に追加すると、追加した実体LDEV6300は仮想LDEV6100に対する実領域割当対象として確保され、その実使用領域が管理される。
仮想LDEV6100を対象としてI/O要求があった際に、まずI/O要求に含まれる仮想アドレスに対して実領域が割り当てられている場合は、対応する実体アドレスを取得し、取得した実体アドレスに対して実際にアクセスを行う。
一方、仮想LDEV6100上の実領域が未割り当ての領域に書き込みがあった場合は、プール6200に追加されている実体LDEV6210の中で未使用領域を持つものから1つを、例えばラウンドロビン方式等により選択し、未使用領域を割り当てて、割り当てられた領域に書き込みを行う。また、実領域が未割り当ての領域に対する読み込みがあった場合は、空のデータを生成して返すことにより実領域を消費しない。
このように、本機能を利用して、実体LDEV6210を仮想LDEV6100の使用容量に応じて柔軟に増やすことができ、また、実体LDEV6210を他の仮想LDEV6100と共有することでディスク装置の利用効率を上げることができる。
[ハードウェア構成]
図3は、本実施の形態の計算機システムにおけるハードウェア構成例を示した図である。本実施の形態の計算機システムは、ホストコンピュータ(ホスト)2000とデータ転送用ネットワーク2200と管理端末2100と管理用ネットワーク2300とストレージシステム1000とを有する構成となっている。
ストレージシステム1000は、上述したMPPK1200と、1つ以上のキャッシュメモリパッケージ(CMPK:Cache Memory PacKage)1800と、1つ以上のバックエンドパッケージ(BEPK:BackEnd PacKage)1700と、1つ以上の物理記憶装置1720と、1つ以上のフロントエンドパッケージ(FEPK:FrontEnd PacKage)1600と、管理用ネットワーク2300に接続されたネットワークI/F1020と、これらを相互に結合する内部結合網1010とを有する。
CMPK1800は、例えば、1つ以上の不揮発性半導体メモリ1810で構成され、図1におけるSM1300およびCM1400として使用される。
BEPK1700は、1つ以上のディスクI/F1710を有し、ディスクI/F1710は、それぞれ複数の物理記憶装置1720に接続して通信する。ディスクI/F1710は、例えばFC(Fibre Channel)のポートである。ディスクI/F1710は、データ転送プロセッサ1711を有し、データ転送プロセッサ1711は、物理記憶装置1720からCM1400へのデータ転送を行う。
FEPK1600は、データ転送用ネットワーク2200に接続された1つ以上のホストI/F1610を有する。ホストI/F1610は、例えば、FCのポートである。ホストI/F1610は、データ転送プロセッサ1611を有し、データ転送プロセッサ1611は、CM1400からホスト2000へのデータ転送を行う。また、ホストI/F1610は、担当MPPKとLDEV1500との対応関係の情報や、LDEV1500とポート番号およびLUNとの対応関係の情報を保持するためのホストI/Fバッファメモリ1612を有する。
ストレージシステム1000は、ホスト2000とデータ転送用ネットワーク2200を介して接続され、また、ストレージシステム1000を管理するための管理端末2100と、管理用ネットワーク2300を介して接続される。データ転送用ネットワーク2200は、例えば、FC−SAN(Storage Area Network)であり、管理用ネットワーク2300は、例えば、IP(Internet Protocol)を用いたLAN(Local Area Network)である。また、ネットワークI/F1020は、例えば、Ethernet(登録商標)のポートである。なお、ストレージシステム1000と、ホスト2000および管理端末2100とは、ネットワークを介さず直接接続してもよい。
また、ストレージシステム1000の内部結合網1010は、例えば、クロスバースイッチやバスであり、これを介して、MP1210は、SM1300や、ホストI/F1610、ディスクI/F1710、ネットワークI/F1020、他のMPPK1200のLM1220等と通信することができる。
物理記憶装置1720は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)である。ストレージシステム1000は、物理記憶装置1720をLDEV1500として管理している。LDEV1500と物理記憶装置1720は1対1で対応する必要はなく、1つの物理記憶装置1720に複数のLDEV1500を構成したり、1つのLDEV1500が複数の物理記憶装置1720で構成されたりしてもよい。
[制御プログラム構成]
図4は、本実施の形態の計算機システムにおける制御プログラム3000の構成例を示した図である。制御プログラム3000は、I/O処理3100と、アプリケーション処理3200、制御情報アクセス処理3300、および管理端末2100による構成変更要求を処理する構成変更処理3400から構成される。
上述したように、本実施の形態のストレージシステム1000におけるアプリケーション処理3200としては、仮想LDEV機能処理3210がある。仮想LDEV機能処理3210は、例えば、仮想アドレスをそれに対応した実体アドレスに変換する仮想−実体アドレス変換処理3211、およびプール6200に追加されている実体LDEV6210の未使用領域から実領域を割り当てる実領域割当処理3212で構成される。
I/O処理3100は、ホスト2000の要求するLDEV番号とLDEVアドレスを基にデータの転送処理を行う。このとき、ホスト2000が要求したLDEVアドレスが仮想アドレスである場合には、仮想−実体アドレス変換処理3211を通してLDEV番号とLDEVアドレスを実体LDEV番号と実体アドレスに変換した上で処理を行う。
リードアクセスの場合は、CM1400上に対象のホストデータがあるかどうかを判断し、あればホストI/F1610に対してCM1400からホスト2000へのデータの転送を指示する。ホストデータがCM1400上に無ければ、LDEVアドレスを物理記憶装置1720のアドレスへと変換し、ディスクI/F1710に対して物理記憶装置1720からCM1400へのデータ転送を指示する。その後、CM1400上にホストデータが格納されるのを待った上で、ホストI/F1610に対してCM1400からホスト2000へのデータの転送を指示する。
ライトアクセスの場合は、ホストI/F1610に対してホスト2000からCM1400へのデータの転送を指示し、さらにCM1400から物理記憶装置1720へのデータの転送を指示してその完了を待つか、または、非同期的にCM1400から物理記憶装置1720へのデータの転送を指示する。このときのLDEV1500と物理記憶装置1720との対応付けや、ホストデータのキャッシングの手法については、例えば、特開2005−301802号公報などに記載されているように、よく知られた技術であるため、詳細な説明は省略する。
また、構成変更処理3400は、ストレージシステム1000内の各種構成要素の設定変更を行う処理であり、また、アプリケーション設定変更処理3410により、各種アプリケーションの設定変更も行う。構成変更処理3400では、例えば、LDEV1500の作成・削除や、LDEV1500のコピーペアの作成・削除、仮想LDEV6100の作成・削除などを行う。
制御プログラム3000における以上の各処理の中で、必要に応じてSM1300上の制御情報4000へアクセスすることになる。各処理は、その都度、制御情報アクセス処理3300を呼び出すが、制御情報アクセス処理では、低速なSM1300へのアクセスが頻発することを防ぐため、LM1220上の制御情報キャッシュエリア5100にSM1300上の制御情報4000の一部をキャッシュしてアクセスする。
制御情報4000のキャッシュ方法は、上述したような、ホストデータにおいて用いられる一般的に知られたキャッシュ技術を適用してもよい。本実施の形態のストレージシステム1000では、SM1300のアドレス空間を数十バイト程度の大きさの単位(以下「ライン」という場合がある)に分け、ライン単位でSM1300から制御情報4000を読み出して、LM1220上の制御情報キャッシュエリア5100に情報を格納する。
アクセス対象の制御情報4000がLM1220上の制御情報キャッシュエリア5100に存在する場合(LMヒット)には、高速なLM1220から情報を読み出すため、MP1210の待ち時間が短くなる。一方、アクセス対象の制御情報4000が制御情報キャッシュエリア5100に存在しない場合(LMミス)には、低速なSM1300へのアクセスとなるため、MP1210の待ち時間が長くなり、MP1210の処理性能が低下する。
なお、SM1300上の制御情報4000は、他のMPPK1200との間で共有しているため、他のMPPK1200で制御情報4000が更新されると、同じ情報をLM1220上にキャッシュしていた場合に不整合が生じる。そこで、制御情報4000の更新の際には、LM1220上に情報がキャッシュされているか否かに関わらず、SM1300上の制御情報4000を更新し、他のMPPK1200に更新を通知する必要がある。
[制御情報構成]
図5は、SM1300上の制御情報4000の構成例を示した図である。SM1300には、制御情報4000として、各LDEV1500の基本情報を格納するLDEV情報表4100と、各LDEV1500とその担当MPPKとの対応関係を管理する担当MPPK表4200と、SCSIのポート番号およびLUNとLDEV1500との対応関係を管理するパス管理表4300と、各アプリケーション固有のアプリケーション制御情報4400が格納される。
本実施の形態におけるアプリケーション制御情報4400としては、例えば、仮想LDEV機能に関する制御情報として、実体LDEV6210を管理する実体LDEV管理表4410と、仮想アドレスと実体アドレスとを対応づける仮想−実体アドレス変換表4420がある。
ここで、本実施の形態におけるSM1300上の制御情報4000を、上述した構成依存情報と容量依存情報とに区別すると、LDEV情報表4100、実体LDEV管理表4410、担当MPPK表4200、パス管理表4300は構成依存情報であり、仮想−実体アドレス変換表4420は容量依存情報である。
また、その他の制御情報4000として、例えば、ホストコンピュータ2000からのI/O要求の数などをカウントする統計情報などが挙げられる。統計情報はI/O毎に更新されるが、管理端末2100によるストレージ稼動状況の表示要求等に応じて参照されるのみである。このように、更新は頻繁に発生するが参照頻度が少ないような制御情報4000は、キャッシュ対象としないことによりシステムの性能低下を防ぐことができる。
一方、仮想−実体アドレス変換表4420は、更新されるのは実領域が未割り当ての領域へのアクセス時のみであり、実領域が割り当てられた後は更新されることが無い。このように、更新は低頻度であるのに対して参照はI/O毎に頻繁に行われるような制御情報4000は、キャッシュ対象とすることによりシステムの性能向上を図ることができる。
図6は、LM1220上の情報の構成例を示した図である。LM1220には、SM1300上の制御情報4000をキャッシュするための制御情報キャッシュエリア5100と、制御情報管理情報5200と、他のMP1210からの通知等を格納するための通信エリア5300が格納される。
制御情報管理情報5200は、LM1220上の制御情報キャッシュエリア5100における領域と、その領域(すなわちその領域に格納されたキャッシュされた制御情報4000)がSM1300上のどの領域に対応するかを管理するLM−SM対応表5210と、制御情報4000の種別に応じた制御情報キャッシュエリア5100上の格納エリアを管理する制御情報キャッシュ管理表5220とを有する。
図7は、制御情報管理情報5200であるLM−SM対応表5210の構成例を示した図である。LM−SM対応表5210は、LM1220上の制御情報キャッシュエリア5100上の各ラインが、SM1300上のどこに対応するかを管理するテーブルであり、それぞれ固定数(図7の例では4)のエントリを持つ複数のLM−SM対応表5210で構成される。各LM−SM対応表5210にはそれぞれ番号(以下「インデックス番号」という場合がある)が振られている。
このように、単一の対応表で管理せずに少数のエントリを持つ複数の対応表で管理し、SM1300上のアドレス(以下「SMアドレス」という場合がある)もしくはLM1220上のアドレス(以下「LMアドレス」という場合がある)から、インデックス番号を、例えばハッシュ等を用いて高速に算出することで、高速にLMアドレスとSMアドレスの対応を検索することができる。
それぞれのLM−SM対応表5210は、LMアドレスフィールド5211と、SMアドレスフィールド5212と、最終アクセス時刻フィールド5213を含むエントリを有する。LMアドレスフィールド5211には、LMアドレスが格納される。LM−SM対応表5210の各エントリのLMアドレスは、制御情報キャッシュエリア5100上のアドレスと1対1に対応する。
SMアドレスフィールド5212には、同じエントリのLMアドレスフィールド5211におけるLMアドレスが示す制御情報キャッシュエリア5100上の領域に格納された制御情報4000について、これと対応する制御情報4000が格納されているSM1300上の領域のSMアドレスが格納される。最終アクセス時刻フィールド5213は、同じエントリのLMアドレスフィールド5211におけるLMアドレスが示す制御情報キャッシュエリア5100にキャッシュされた制御情報4000が最後に参照された時刻を示す。この最終アクセス時刻フィールド5213は、各LM−SM対応表5210内で最も長い間アクセスされていないエントリを識別するために用いられる。
図8は、制御情報管理情報5200である制御情報キャッシュ管理表5220の構成例を示した図である。制御情報キャッシュ管理表5220は、制御情報4000の全ての種別について、格納先のSM1300およびLM1220上の制御情報キャッシュエリア5100上の領域を、LM−SM対応表5210のインデックス番号単位で管理する。
制御情報キャッシュ管理表5220は、制御情報名フィールド5221と、SMアドレス範囲フィールド5222と、格納エリアインデックス番号範囲フィールド5223とを含むエントリを有する。制御情報名フィールド5221には、制御情報4000を識別するための制御情報名が格納される。なお、本実施の形態では、説明の便宜のため制御情報名を文字表記で記載しているが、実装に際しては、各制御情報4000を識別するために割り当てたID等が設定されていてもよい。
SMアドレス範囲フィールド5222には、同じエントリの制御情報名フィールド5221における制御情報名が示す制御情報4000が格納されているSM1300上の領域の開始アドレスと終了アドレスとが格納される。格納エリアインデックス番号範囲フィールド5223には、同じエントリの制御情報名フィールド5221における制御情報名が示す制御情報4000がキャッシュされているLM1220上の格納エリアの開始インデックス番号と終了インデックス番号とが格納される。このフィールドに値が格納されていない場合は、対象の制御情報4000がキャッシュ対象ではないことを示す。
このように、制御情報キャッシュ管理表5220によって、制御情報4000の種別毎に、キャッシュの対象とするか否か、およびキャッシュする際のそれぞれの格納エリアを個別に管理することが可能となる。
なお、本実施の形態のストレージシステム1000における制御情報4000のキャッシュ方式では、制御情報キャッシュ管理表5220を用いて、アクセス対象のSMアドレスから各制御情報4000の種別を調べているが、I/O処理3100が制御情報アクセス処理3300を呼び出す際に、アクセス対象のSMアドレスではなく、制御情報4000の種別を明示する方法をとることも可能である。
図9は、制御情報4000であるLDEV情報表4100の構成例を示した図である。LDEV情報表4100は、LDEV1500が仮想LDEVであるか否かを問わず、全てのLDEV1500について、LDEV番号フィールド4101と、適用アプリケーションフィールド4102と、容量フィールド4103とを含むエントリを有する。
LDEV番号フィールド4101には、LDEV番号が格納される。適用アプリケーションフィールド4102には、同じエントリのLDEV番号フィールド4101におけるLDEV番号が示すLDEV1500に適用されるアプリケーションの種別が格納される。なお、本実施の形態では、説明の便宜のため適用されるアプリケーション名を文字表記で記載しているが、実装に際しては、各アプリケーションを識別するために割り当てたID等が設定されていてもよい。また、各LDEV1500には複数のアプリケーションが適用される場合もある。容量フィールド4103には、同じエントリのLDEV番号フィールド4101におけるLDEV番号が示すLDEV1500の容量を示す値が格納される。
図10は、制御情報4000である実体LDEV管理表4410の構成例を示した図である。実体LDEV管理表4410は、プール6200に登録された全ての実体LDEV6210について、実体LDEV番号フィールド4411と、実体LDEV容量フィールド4412と、使用容量フィールド4413とを含むエントリを有する。
実体LDEV番号フィールド4411には、実体LDEV6210のLDEV番号が格納される。実体LDEV容量フィールド4412には、同じエントリの実体LDEV番号フィールド4411におけるLDEV番号が示す実体LDEV6210の容量を示す値が格納される。使用容量フィールド4413には、同じエントリの実体LDEV番号フィールド4411におけるLDEV番号が示す実体LDEV6210の使用中の容量を示す値が格納される。本実施の形態のストレージシステム1000では、実体LDEV6210はその先頭からデータが格納されるものとし、使用容量フィールド4413を参照することで、次にデータが格納されるべき未使用領域の位置を知ることができる。
図11は、制御情報4000である仮想−実体アドレス変換表4420の構成例を示した図である。仮想−実体アドレス変換表4420は、全ての仮想LDEVにおける実領域割り当て済みのアドレス空間について、仮想LDEV番号フィールド4421と、仮想アドレスフィールド4422と、実体LDEV番号フィールド4423と、実体アドレスフィールド4424とを含むエントリを有する。
仮想LDEV番号フィールド4421および仮想アドレスフィールド4422には、実領域を割り当てた仮想LDEVのLDEV番号と仮想アドレスがそれぞれ格納される。実体LDEV番号フィールド4423および実体アドレスフィールド4424には、同じエントリの仮想LDEV番号フィールドおよび仮想アドレスフィールドが示す仮想LDEV上の仮想アドレスに対応して、実領域が割り当てられた実体LDEV6210のLDEV番号と実体LDEV6210上の領域のアドレス(実体アドレス)がそれぞれ格納される。
図12は、制御情報4000である担当MPPK表4200の構成例を示した図である。担当MPPK表4200は、全てのLDEV1500について、LDEV番号フィールド4201と、担当MPPK番号フィールド4202とを含むエントリを有する。
LDEV番号フィールド4201には、LDEV番号が格納される。担当MPPK番号フィールド4202には、同じエントリのLDEV番号フィールド4201におけるLDEV番号が示すLDEV1500についての担当MPPKを示すMPPK番号(MPPK1200を識別する番号)が格納される。
図13は、制御情報4000であるパス管理表4300の構成例を示した図である。パス管理表4300は、定義された全てのアクセスパスについて、ポート番号フィールド4301と、パス名フィールド4302と、LDEV番号フィールド4303とを含むエントリを有する。
ポート番号フィールド4301には、ポート1100のポート番号が格納される。ポート番号は、例えば、ホストI/F1610に対して1対1で割り当てられ、ホスト2000がI/O要求を送る際に指定するSCSI等のポート番号である。パス名フィールド4302は、同じエントリのポート番号フィールド4301に格納されたポート番号が示すホストI/F1610について定義されたパス名(例えば、SCSIのLUN)が格納される。LDEV番号フィールド4303は、同じエントリのポート番号フィールド4301に格納されたポート番号が示すホストI/F1610と、パス名フィールド4302に格納されたパス名に対応するLDEV1500のLDEV番号が格納される。
[処理フロー]
以下、本実施の形態のストレージシステム1000における、制御プログラム3000による各種処理の処理フローについて説明する。図14は、I/O処理3100での動作の例を示すフローチャートである。
MP1210は、I/O処理3100での処理を開始すると(S101)、まず、後述する制御情報アクセス処理3300の制御情報参照処理を呼び出して、LDEV情報表4100において、I/O要求に含まれるLDEV番号(以下「対象LDEV番号」という場合がある)をLDEV番号フィールド4101に含むエントリを参照する(S102)。なお、以下では、対象LDEV番号が示すLDEV1500を「対象LDEV」、I/O要求に含まれるLDEVアドレスを「対象LDEVアドレス」という場合がある。
次に、MP1210は、ステップS102で取得したLDEV情報表4100における、対象LDEVに対応するエントリの適用アプリケーションフィールド4102から、対象LDEVに仮想LDEVのアプリケーションが適用されているか否か、すなわち、対象LDEVが仮想LDEVであるか否かを判断する(S103)。
適用アプリケーションフィールド4102に格納された値に仮想LDEVが含まれる場合は、後述するアプリケーション処理3200の仮想LDEV機能処理を呼び出して(S104)、ステップS105へ進む。ステップS104での仮想LDEV機能処理により、I/O要求に含まれる対象LDEV番号(仮想LDEV番号)および対象LDEVアドレス(仮想アドレス)の値は、それぞれ実体LDEV番号および実体アドレスに変換される。ステップS103にて、適用アプリケーションフィールド4102に格納された値に仮想LDEVが含まれていない場合は、処理を行わずにステップS105へ進む。
ステップS105では、MP1210は、対象LDEV番号と対象LDEVアドレスから対応する物理記憶装置1720の物理アドレスを取得し、物理記憶装置1720に対してホストデータのリード/ライト処理を行う(S105)。この時、必要に応じて、CM1400にホストデータのキャッシング処理を行う。以上で、I/O処理3100での処理を終了する(S106)。
図15は、アプリケーション処理3200の仮想LDEV機能処理3210での動作の例を示すフローチャートである。
MP1210は、仮想LDEV機能処理3210での処理を開始すると(S201)、仮想−実体アドレス変換処理3211での処理として、まず、後述する制御情報アクセス処理3300の制御情報参照処理を呼び出して、仮想−実体アドレス変換表4420において、対象LDEVアドレスに対応する仮想アドレスフィールド4422を含むエントリを参照する(S202)。
次に、ステップS202で取得した仮想−実体アドレス変換表4420において、対象LDEVアドレスに対応する仮想アドレスフィールド4422を含むエントリがあるか否かを判断し(S203)、無い場合はステップS204へ進む。エントリがある場合は、ステップS208へ進む。
ステップS204では、I/O要求がリードアクセスであるかライトアクセスであるかを判断し(S204)、ライトアクセスである場合は、実領域の新規割り当てを行うため、ステップS205へ進む。
I/O要求がリードアクセスである場合は、空データ専用のLDEV番号およびLDEVアドレスを取得して、I/O要求の対象LDEV番号および対象LDEVアドレスの値を置き換えて(S209)、仮想LDEV機能処理を終了する(S210)。なお、空データ専用のLDEV番号およびLDEVアドレスが対象LDEV番号および対象LDEVアドレスとして設定された場合は、前述の図14におけるステップS105において、物理記憶装置1720に対して実際のアクセスを行わず、空のデータを生成してホスト2000に対して返す。
ステップS205では、実領域割当処理3212での処理として、実領域を割り当てるため、まず、後述する制御情報アクセス処理3300の制御情報参照処理を呼び出して、実体LDEV管理表4410を参照する(S205)。次に、ステップS205で取得した実体LDEV管理表4410に基づいて、実体LDEV6210の未使用領域を取得する(S206)。次に、後述する制御情報アクセス処理3300の制御情報更新処理を呼び出して、ステップS206で取得した領域を仮想−実体アドレス変換表4420に登録し、また、実体LDEV管理表4410における、取得した領域を有する実体LDEV6210に対応するエントリの使用容量フィールド4413を更新し(S207)、ステップS208へ進む。
ステップS208では、対象LDEV番号および対象LDEVアドレスに対応する仮想−実体アドレス変換表4420のエントリの実体LDEV番号および実体LDEVアドレスを取得して、I/O要求の対象LDEV番号および対象LDEVアドレスの値を置き換えて(S208)、仮想LDEV機能処理3210での処理を終了する(S210)。
図16は、制御情報アクセス処理3300での制御情報参照処理の動作の例を示すフローチャートである。制御情報参照処理は、前述したI/O処理3100やアプリケーション処理3200から、参照対象のSMアドレスを伴って呼び出される。
MP1210は、制御情報アクセス処理3300での制御情報参照処理を開始すると(S301)、まず、対象のSMアドレスを含むラインの先頭のSMアドレス(以下「参照アドレス」という場合がある)およびライン内オフセット値を求める(S302)。参照アドレスは、例えば、SMアドレスの値をラインのサイズで除算した余りをSMアドレスの値から減算することで求められ、このとき、ライン内オフセット値はその余り値となる。上記演算の際、MP1210は、ラインバッファというラインサイズの一時記憶領域を用いて処理を行う。ラインバッファは、例えばLM1220上に確保してもよい。
次に、後述する制御情報更新通知受信処理を呼び出して、他のMP1210からの制御情報4000の更新通知を受領している場合に、当該制御情報4000についてのキャッシュを無効化する(S303)。
次に、制御情報キャッシュ管理表5220を参照し、SMアドレス範囲フィールド5222が対象のSMアドレスを含むエントリにおいて、格納エリアインデックス番号範囲フィールド5223に値が格納されているか否か、すなわち、対象のSMアドレスに対応するLM1220上の格納エリアがあるか否かを判断する(S304)。値が格納されている場合は、対象の制御情報4000はキャッシュ対象と判断し、ステップS306へ進む。
ステップS304で、格納エリアインデックス番号範囲フィールド5223に値が格納されていない場合は、対象のSMアドレスはキャッシュ対象外と判断し、ステップS305へ進む。ステップS305では、参照アドレスに基づいてSM1300からラインバッファにラインを読み込み、ステップS313へ進む(S305)。
ステップS306では、参照アドレスと、対応する制御情報キャッシュ管理表5220のエントリの格納エリアインデックス番号範囲フィールド5223の値から、対象の制御情報4000が格納されている格納エリアのインデックス番号を算出する(S306)。算出の方法としては、例えばハッシュ等を用いることができる。
次に、ステップS306で算出されたインデックス番号に対応するLM−SM対応表5210を参照し、SMアドレスフィールド5212に参照アドレスを含むエントリが存在するか否かを判断する(S307)。エントリが存在しない場合は、ステップS309へ進む。
ステップS307で、エントリが存在する場合は、最新のデータがキャッシュされていると判断し、SM1300からの読み込み処理を省略し、LM−SM対応表5210の該当のエントリのLMアドレスフィールド5211に格納されたLMアドレスを用いて制御情報キャッシュエリア5100からラインバッファにラインを読み込み(S308)、ステップS312へ進む。
ステップS307で、エントリが存在しない場合は、最新のデータがキャッシュされていないと判断し、参照アドレスに基づいてSM1300を参照し、ラインバッファにラインを読み込む(S309)。次に、対象のLM−SM対応表5210のエントリのうち、最終アクセス時刻フィールド5213に格納された時刻が最も古いエントリにおけるLMアドレスフィールド5211に格納されたLMアドレスに基づいて、ラインバッファから格納エリアにラインを格納する(S310)。その後、LM−SM対応表5210の対象エントリのSMアドレスフィールド5212の値を参照アドレスの値で更新し(S311)、ステップS312へ進む。
ステップS312では、LM−SM対応表5210の対象のエントリの最終アクセス時刻フィールド5213の値を現在時刻に更新し(S312)、ステップS313へ進む。
ステップS313では、ステップS302で算出したライン内オフセット値を用いてラインから制御情報4000を読み込み、読み込んだ制御情報4000を要求元であるI/O処理3100やアプリケーション処理3200に応答して(S313)、制御情報参照処理を終了する(S314)。
図17は、制御情報アクセス処理3300での制御情報更新通知受信処理の動作の例を示すフローチャートである。
MP1210は、制御情報アクセス処理3300での制御情報更新通知受信処理を開始すると(S401)、まず、LM1220上の通信エリア5300を参照し、通信エリア5300上に制御情報更新通知があるか否かを判断する(S402)。制御情報更新通知がない場合は、以降の処理を行わずに制御情報更新通知受信処理を終了する(S407)。
ステップS402で、制御情報更新通知がある場合は、制御情報キャッシュ管理表5220を参照し、SMアドレス範囲フィールド5222が制御情報更新通知に含まれるSMアドレス(以下「更新アドレス」という場合がある)を含むエントリの格納エリアインデックス番号範囲フィールド5223に値が格納されているか否か、すなわち、更新アドレスに対応する格納エリアがあるか否かを判断する(S403)。値が格納されていない場合は、以降の処理を行わずに制御情報更新通知受信処理を終了する(S407)。
ステップS403で、値が格納されている場合は、更新アドレスと、対応する制御情報キャッシュ管理表5220のエントリの格納エリアインデックス番号範囲フィールド5223の値から、対象の制御情報4000が格納されている格納エリアのインデックス番号を算出する(S404)。算出の方法としては、前述したように、例えばハッシュ等を用いることができる。
次に、インデックス番号に対応するLM−SM対応表5210を参照し、SMアドレスフィールド5212に更新アドレスを含むエントリが存在するか否かを判断する(S405)。エントリが存在しない場合は、以降の処理を行わずに制御情報更新通知受信処理を終了する(S407)。
ステップS406で、エントリが存在する場合は、LM−SM対応表5210において当該エントリのSMアドレスフィールド5212および最終アクセス時刻フィールド5213の値を削除して当該エントリを無効化し(S406)、制御情報更新通知受信処理を終了する(S407)。
図18は、制御情報アクセス処理3300での制御情報更新処理の動作の例を示すフローチャートである。制御情報更新処理は、前述したI/O処理3100やアプリケーション処理3200から、更新対象のSMアドレスを伴って呼び出される。
MP1210は、制御情報アクセス処理3300での制御情報更新処理を開始すると(S501)、まず、上述した制御情報参照処理と同様に、対象のSMアドレスを含むラインの先頭のSMアドレス(以下「更新アドレス」という場合がある)を求める(S502)。
次に、制御情報キャッシュ管理表5220を参照し、SMアドレス範囲フィールド5222が更新アドレスを含むエントリの格納エリアインデックス番号範囲フィールド5223に値が格納されているか否か、すなわち、更新アドレスに対応する格納エリアがあるか否かを判断する(S503)。値が格納されていない場合は、ステップS507へ進む。
ステップS503で、値が格納されている場合は、更新アドレスと、対応する制御情報キャッシュ管理表5220のエントリの格納エリアインデックス番号範囲フィールド5223の値から、対象の制御情報4000が格納されている格納エリアのインデックス番号を算出する(S504)。算出の方法としては、前述したように、例えばハッシュ等を用いることができる。
次に、インデックス番号に対応するLM−SM対応表5210を参照し、SMアドレスフィールド5212に更新アドレスを含むエントリが存在するか否かを判断する(S505)。エントリが存在する場合は、当該エントリのLMアドレスフィールド5211に格納されたLMアドレスに基づいてLM1220上の制御情報キャッシュエリア5100の制御情報4000を更新する(S506)。ステップS505で、エントリが存在しない場合は、ステップS507へ進む。
ステップS507では、更新アドレスに基づいてSM1300上の制御情報4000を更新する(S507)。次に、他のMPPK1200のLM1220上の通信エリア5300に制御情報更新通知を書き込むことで、他のMPPK1200のMP1210に制御情報4000の更新を通知し(S508)、制御情報更新処理を終了する(S509)。
なお、制御情報更新通知は更新アドレスを含む。また、制御情報更新通知は、制御情報4000の更新の都度行うのではなく、例えば、バッファ等に通知を保持しておいて適切なタイミング(例えば一連のI/O処理が完了した時点など)にまとめて通知してもよい。また、前述した統計情報等、キャッシュ対象外の制御情報4000については、制御情報更新通知を省略してもよい。
図19は、構成変更処理3400での動作の例を示すフローチャートである。
MP1210は、構成変更処理3400での処理を開始すると(S601)、まず、管理端末2100から送信された構成変更要求を受け取る(S602)。次に、構成変更要求の種別に応じて処理を分岐する(S603、S605、S607、S609)。パス定義更新の要求の場合はステップS604へ、LDEV作成または削除の要求である場合はステップS606へ進む。また、アプリケーション設定変更処理3410での処理として、仮想LDEV作成・削除の要求である場合はステップS608へ、実体LDEV登録要求である場合にはステップS610へ進む。構成変更要求が上記のいずれにも該当しない場合は構成変更処理3400での処理を終了する(S613)。
構成変更要求がパス定義更新の要求の場合は、前述した制御情報アクセス処理3300の制御情報更新処理を呼び出して、パス管理表4300を更新し(S604)、ステップS612へ進む。また、構成変更要求がLDEV作成・削除の要求の場合は、前述した制御情報アクセス処理3300の制御情報更新処理を呼び出して、LDEV情報表4100を更新し(S606)、さらに、担当MPPK表4200を更新し(S611)、ステップS612へ進む。なお、作成されたLDEV1500の担当MPPKは、例えばラウンドロビン方式で決定される。
ステップS612では、各ホストI/F1610のバッファメモリ1612上の各表を更新することで、上述した担当MPPK表4200およびパス管理表4300の更新内容を各ホストI/F1610に反映し(S612)、構成変更処理3400での処理を終了する(S613)。
構成変更要求が仮想LDEV作成・削除の要求の場合は、前述した制御情報アクセス処理3300の制御情報更新処理を呼び出して、LDEV情報表4100および仮想−実体アドレス変換表4420を更新し(S608)、ステップS611へ進んで担当MPPKを設定する。また、構成変更要求が実体LDEV6300のプール6200への登録の要求の場合は、前述した制御情報アクセス処理3300の制御情報更新処理を呼び出して、実体LDEV管理表4410を更新し(S610)、構成変更処理3400での処理を終了する(S613)。
以上に説明したように、本実施の形態のストレージシステム1000によれば、低速なアクセスとなるSM1300上の制御情報4000について、高速なアクセスが可能なLM1220上に一部をキャッシュとして格納してアクセスすることにより、制御情報4000へのアクセスの待ち時間を削減でき、システムの処理性能を向上させることができる。また、制御情報4000を、頻繁にアクセスされる構成依存情報とそうでない容量依存情報とに区別し、キャッシュの要否や、キャッシュする際のLM1220上での格納エリアを分けることにより、頻繁にアクセスされる制御情報4000についてのLMヒット率を向上させ、システムの処理性能を向上させることができる。
<実施の形態2>
以下に、本発明の実施の形態2である計算機システムについて説明する。本実施の形態では、ストレージシステム1000の構成変更に応じて動的にLM1220上の各制御情報4000をキャッシュする格納エリアのサイズを変更する場合の例について説明する。なお、システム構成の概要やハードウェア構成等は、実施の形態1で説明したものと同様であるため、再度の説明は省略する。
[制御プログラム構成]
図20は、本実施の形態の計算機システムにおける制御プログラム3000の構成例を示した図である。実施の形態1の図4で説明した制御プログラム3000の構成例に対して、格納エリア設定・変更処理3500が追加されている点が異なる。格納エリア設定・変更処理3500は、制御情報4000をキャッシュするためのLM1220上の格納エリアのサイズを、ストレージシステム1000の構成変更に応じて動的に変更するための機能を提供する。格納エリア設定・変更処理3500の詳細については後述する。
[制御情報構成]
図21は、LM1220上の情報の構成例を示した図である。実施の形態1の図6で説明したものに対して、制御情報管理情報5200に制御情報サイズ表5230が追加されている点が異なる。
図22は、制御情報管理情報5200である制御情報サイズ表5230の構成例を示した図である。制御情報サイズ表5230は、制御情報4000の全ての種別について、制御情報名フィールド5231と、構成依存情報サイズフィールド5232と、容量依存情報サイズフィールド5233と、使用アプリケーションフィールド5234と、アプリケーション適用状況フィールド5235とを含むエントリを有する。
制御情報名フィールド5231には、制御情報4000を識別するための制御情報名が格納される。なお、本実施の形態においても実施の形態1と同様に、説明の便宜のため制御情報名を文字表記で記載しているが、実装に際しては、各制御情報4000を識別するために割り当てたID等が設定されていてもよい。
構成依存情報サイズフィールド5232には、同じエントリの制御情報名フィールド5231に格納された制御情報名が示す制御情報4000における、構成依存情報の1単位(図22の例ではLDEV1500)あたりのサイズを示す値が格納される。また、容量依存情報サイズフィールド5233には、同じエントリの制御情報名フィールド5231に格納された制御情報名が示す制御情報4000における、容量依存情報の1単位(図22の例では容量256KB)あたりのサイズを示す値が格納される。
SM1300上の制御情報4000の中には、制御情報キャッシュエリア5100にキャッシュするべきでない情報が存在する。これらの制御情報4000については、構成依存情報サイズフィールド5232および容量依存情報サイズフィールド5233に値を格納しないことにより、制御情報キャッシュエリア5100上に格納エリアが割り当てられず、制御情報キャッシュエリア5100を効率的に使用することができる。
なお、これらの制御情報4000は、実施の形態1の図8で説明した制御情報キャッシュ管理表5200において、対応するエントリの格納エリアインデックス番号範囲フィールド5223に値が格納されない。従って、図16で説明した制御情報アクセス処理3300での制御情報参照処理のステップS304において、キャッシュ対象外と判断される。
使用アプリケーションフィールド5234には、同じエントリの制御情報名フィールド5231に格納された制御情報名が示す制御情報4000を使用するアプリケーションの種別が格納される。なお、本実施の形態においても実施の形態1と同様に、説明の便宜のためアプリケーション名を文字表記で記載しているが、実装に際しては、各アプリケーションを識別するために割り当てたID等が設定されていてもよい。また、各制御情報4000は複数のアプリケーションによって使用される場合があり、また全てのアプリケーションに共通で使用される場合もある。
アプリケーション適用状況フィールド5235には、同じエントリの使用アプリケーションフィールド5234に格納されたアプリケーションのいずれかが実際に適用されたLDEV1500が1つ以上存在するか否かを示す値が格納される。例えば、図22の例では、仮想LDEV機能を実際に適用したLDEV1500が1つでも存在する場合には、仮想LDEV機能が使用する実体LDEV管理表4410および仮想−実体アドレス変換表4420、および全てのアプリケーションが使用するLDEV情報表4100に対応するエントリのアプリケーション適用状況フィールド5235に、アプリケーションが適用されていることを示す値(図22の例では“適用”の文字データ)が格納される。
図23は、格納エリアサイズ表5900の構成例を示した図である。格納エリアサイズ表5900は、後述する格納エリア設定・変更処理3500での格納エリアサイズ表計算処理により計算された結果を格納するために一時的に作られ、格納エリアサイズ表計算処理後は破棄されるものである。格納エリアサイズ表5900は、制御情報4000の全ての種別について、制御情報名フィールド5901と、格納エリアサイズフィールド5902とを含むエントリを有する。
制御情報名フィールド5901には、制御情報4000を識別するための制御情報名が格納される。格納エリアサイズフィールド5902は、同じエントリの制御情報名フィールド5901に格納された制御情報名が示す制御情報4000について、制御情報キャッシュエリア5100上に確保する格納エリアのサイズを示す数値が格納される。
[処理フロー]
以下、本実施の形態のストレージシステム1000における、制御プログラム3000による各種処理の処理フローについて、実施の形態1で説明したものと異なる部分を中心に説明する。
図24は、構成変更処理3400での動作の例を示すフローチャートである。実施の形態1の図19で説明した構成変更処理に対して、ステップS621が追加されているところのみが異なる。構成変更要求に対する処理により制御情報4000が更新された後、ステップS621では、後述する格納エリア設定・変更処理を呼び出して、制御情報キャッシュエリア5100上に確保する格納エリアを変更する(S621)。
図25は、構成変更処理3400での格納エリア設定・変更処理の動作の例を示すフローチャートである。
MP1210は、構成変更処理3400での格納エリア設定・変更処理を開始すると(S701)、まず、制御情報キャッシュ管理表5220の格納エリア情報のリセット(全エントリの格納エリアインデックス番号範囲フィールド5223のクリア)を行う(S702)。次に、後述する格納エリアサイズ表計算処理を呼び出し、格納エリアサイズ表5900を計算して作成する(S703)。次に、LM−SM対応表5210の全エントリをクリアし、制御情報キャッシュ管理表5220の格納エリアインデックス番号範囲フィールド5223の値を、ステップS703で作成された格納エリアサイズ表5900の内容に基づいて更新し(S704)、格納エリア設定・変更処理を終了する(S705)。
なお、ストレージシステム1000の起動時において、上述した構成変更処理3400での格納エリア設定・変更処理を行って、制御情報キャッシュ管理表5220の格納エリアインデックス番号範囲フィールド5223の値を新たに定義し直し、この値に従って格納エリアを設定するようにしてもよい。また、制御情報キャッシュ管理表5220の内容を、ストレージシステム1000の停止時にも適当な手段で保持しておき、ストレージシステム1000の起動時に、保持しておいた制御情報キャッシュ管理表5220の格納インデックス番号範囲フィールド5223の値に基づいてそのまま格納エリアを定義してもよい。
図26は、構成変更処理3400での格納エリア設定・変更処理における格納エリアサイズ表計算処理の第1の動作の例を示すフローチャートである。ここでは、まず、制御情報4000のうち構成依存情報について格納エリアサイズを計算する。
MP1210は、格納エリアサイズ表計算処理を開始すると(S801)、まず、格納エリアサイズ表5900を初期化する(S802)。以下、制御情報4000のキャッシュ対象の全ての構成依存情報について、それぞれ格納エリアサイズの計算を行う。本実施の形態の例では、構成依存情報としては、LDEV情報表4100と、実体LDEV管理表4410が該当する。
具体的には、まず、格納エリアサイズの計算が未処理の制御情報4000(構成依存情報)があるか否かを判断する(S803)。ここでは、例えば、制御情報サイズ表5230において、構成依存情報サイズフィールド5232に値が格納されているエントリの制御情報名フィールド5231で特定される制御情報4000について、未処理のものがあるか否かを判断する。
ステップS803で、未処理のものがない場合は、制御情報4000毎の計算処理を終了し、ステップS816へ進む。未処理のものがある場合は、そのうちの1つの制御情報4000を選択し(S804)、選択された制御情報4000に対して、以下、全てのLDEV1500について、それぞれ格納エリアサイズを計算する。
具体的には、まず、格納エリアサイズの計算が未処理のLDEV1500があるか否かを判断する(S805)。ここでは、例えば、LDEV情報表4100の各エントリのLDEV番号フィールド4101で特定されるLDEV1500について、未処理のものがあるか否かを判断する。未処理のものがない場合は、対象の制御情報4000についての計算処理を終了し、ステップS803へ戻って、残りの制御情報4000についての計算処理を行う。未処理のものがある場合は、そのうちの1つのLDEV1500を選択し(S806)、選択されたLDEV1500に対して格納エリアサイズを計算する。
まず、担当MPPK表4200を参照し、対象のLDEV1500についての担当MPPK番号4202を取得する(S807)。次に、取得した担当MPPK番号が、当該制御プログラム3000が動作しているMP1210が所属するMPPK1200(以下「自MPPK」という場合がある)のMPPK番号と一致するか否か、すなわち、対象のLDEV1500が、自MPPKが担当するLDEV1500であるか否かを判断する(S808)。自MPPKが担当するLDEV1500ではない場合は、当該LDEV1500についての計算処理を終了し、ステップS805へ戻って、残りのLDEV1500についての計算処理を行う。
ステップS808で、自MPPKが担当するLDEV1500であった場合は、LDEV情報表4100を参照し、対象のLDEV1500に対応するエントリの適用アプリケーションフィールド4102に格納されている値を取得する(S809)。次に、取得した適用アプリケーションフィールド4102にいずれかのアプリケーションが設定されているか否か、すなわち、対象のLDEV1500に適用されているアプリケーションがあるか否かを判断する(S810)。適用アプリケーションがない場合は、当該LDEV1500についての計算処理を終了し、ステップS805へ戻って、残りのLDEV1500についての計算処理を行う。
ステップS810で、適用アプリケーションがある場合は、制御情報サイズ表5230を参照し、対象の制御情報4000に対応するエントリの使用アプリケーションフィールド5234に格納されている値を取得する(S811)。次に、取得した使用アプリケーションフィールド5234に、ステップS809で取得した適用アプリケーションと一致するものがあるか否か、すなわち、対象のLDEV1500に適用されているアプリケーションが、対象の制御情報4000を使用しているか否かを判断する(S812)。対象の制御情報4000を使用していない場合は、当該LDEV1500についての計算処理を終了し、ステップS805へ戻って、残りのLDEV1500についての計算処理を行う。
ステップS812で、対象の制御情報4000を使用している場合は、制御情報サイズ表5230を参照し、対象の制御情報4000に対応するエントリの構成依存情報サイズフィールド5232に格納されている構成依存情報のサイズを取得する(S813)。次に、格納エリアサイズ表5900を参照し、対象の制御情報4000に対応するエントリの格納エリアサイズフィールド5902に格納されている値を取得して、これに、ステップS813で取得した構成依存情報サイズを加算する(S814)。次に、得られた値で、格納エリアサイズ表5900の対象の制御情報4000に対応するエントリの格納エリアサイズフィールド5902を更新し(S815)、ステップS805へ戻って、残りのLDEV1500についての計算処理を行う。
ステップS816以降では、各制御情報4000(構成依存情報)に対して求められた格納エリアサイズの補正を行う。具体的には、まず、格納エリアサイズ表5900の各エントリを参照し、格納エリアサイズフィールド5902に格納された値の合計値を算出する(S816)。次に、得られた合計値が、構成依存情報に対する制御情報キャッシュエリア5100の容量の上限値を超えているか否かを判断する(S817)。
ここで、構成依存情報に対する制御情報キャッシュエリア5100の容量の上限値は、例えば、サイズの絶対値や、制御情報キャッシュエリア5100の全容量に対する比率等によって指定することができ、任意の手段でストレージシステム1000に保持しておくことができる。
ステップS817で、上限値を超えていない場合は、構成依存情報についての格納エリアサイズの計算処理を終了する(図中A)。上限値を超えている場合は、格納エリアサイズを上限値を超えないように補正する(S818)。
補正の方法としては、例えば、格納エリアサイズ表5900を参照し、構成依存情報毎の格納エリアサイズの比に従って、上限値を超えた分を按分してサイズを減らしてもよい。また、構成依存情報の中でも比較的高頻度で参照される情報(例えば、LDEV情報表4100等)に対して優先的に格納エリアサイズを確保してもよい。なお、後述する容量依存情報のための格納エリアサイズの確保のため、制御情報キャッシュエリア5100の容量を構成依存情報で使い切らないことが望ましい。
図27は、構成変更処理3400での格納エリア設定・変更処理における格納エリアサイズ表計算処理の第2の動作の例を示すフローチャートである。図27においても、図26で説明したのと同様に、まず、制御情報4000のうち構成依存情報について格納エリアサイズを計算する。なお、図26におけるステップS801〜S804での格納エリアサイズ表5900の初期化、および未処理の制御情報4000を選択する処理と、ステップS816〜S818での格納エリアサイズの補正の処理については、図27の例でも同様であるため、再度の説明は省略する。
図27の例では、ステップS804で選択された制御情報4000について、制御情報サイズ表5230を参照し、対象の制御情報4000に対応するエントリのアプリケーション適用状況フィールド5235に格納されている値を取得する(S821)。次に、取得したアプリケーション適用状況フィールド5235の値が、対象の制御情報4000を使用するいずれかのアプリケーションが1つ以上のLDEV1500に実際に適用されていることを示す値であるか否かを判断する(S822)。アプリケーションが実際に適用されていない場合は、対象の制御情報4000についての計算処理を終了し、ステップS803へ戻って、残りの制御情報4000についての計算処理を行う。
ステップS822で、いずれかのアプリケーションが1つ以上のLDEV1500に実際に適用されている場合は、担当MPPK表4200を参照し、自MPPKが担当MPPKとなっているLDEV1500の数を取得する(S823)。次に、制御情報サイズ表5230を参照し、対象の制御情報4000に対応するエントリから構成依存情報サイズフィールド5232に格納されている構成依存情報のサイズを取得する(S824)。
次に、ステップS823で取得した自MPPKが担当MPPKとなっているLDEV1500の数と、ステップS824で取得した対象の制御情報4000の構成依存情報のサイズとを積算し、格納エリアサイズを計算する(S825)。次に、得られた値で、格納エリアサイズ表5900の対象の制御情報4000に対応するエントリの格納エリアサイズフィールド5902を更新し(S826)、ステップS803へ戻って、残りの制御情報4000についての計算処理を行う。
以上に説明したように、図26で説明した構成依存情報の格納エリアサイズの計算処理では、対象の制御情報4000について、これを実際に使用するアプリケーションが適用されたLDEV1500の数に応じたサイズだけ格納エリアを確保するため、制御情報キャッシュエリア5100の領域を無駄なく効率的に利用できるが、LDEV1500毎にLDEV情報表4100を参照して処理を行う必要があり、処理が若干煩雑となる。
一方、図27で説明した構成依存情報の格納エリアサイズの計算処理では、対象の制御情報4000について、これを実際に使用するアプリケーションが適用されたLDEV1500が1つでもあれば、全てのLDEV1500の数に応じたサイズの格納エリアを確保するため、制御情報キャッシュエリア5100の領域の利用効率は低下するが、LDEV1500毎の処理が不要となり、LDEV情報表4100を参照する必要もなく、計算処理を高速化することができる。
なお、図27の例では、全てのLDEV1500の数に応じたサイズの格納エリアを確保するようにしているが、例えば、適用されたアプリケーションについての利用可能なLDEV1500のライセンス数に応じたサイズの格納エリアを確保するようにしてもよい。
図28は、構成変更処理3400での格納エリア設定・変更処理における格納エリアサイズ表計算処理の動作の例の続きを示すフローチャートである。ここでは、前述した図26もしくは図27での構成依存情報についての格納エリアサイズの計算処理に続き、制御情報4000のうち容量依存情報について格納エリアサイズを計算する。
MP1210は、構成依存情報についての格納エリアサイズの計算処理に続き(図中A)、制御情報4000のキャッシュ対象の全ての容量依存情報について、それぞれ格納エリアサイズの計算を行う。本実施の形態の例では、容量依存情報としては、仮想−実体アドレス変換表4420が該当する。
具体的には、まず、格納エリアサイズの計算が未処理の制御情報4000(容量依存情報)があるか否かを判断する(S851)。ここでは、図26で説明した構成依存情報の場合と同様に、例えば、制御情報サイズ表5230において、容量依存情報サイズフィールド5233に値が格納されているエントリの制御情報名フィールド5231で特定される制御情報4000について、未処理のものがあるか否かを判断する。
ステップS851で、未処理のものがない場合は、制御情報4000毎の計算処理を終了し、ステップS863へ進む。未処理のものがある場合は、そのうちの1つの制御情報4000を選択し(S852)、選択された制御情報4000に対して、以下、全てのLDEV1500について、それぞれ格納エリアサイズを計算する。
具体的には、まず、格納エリアサイズの計算が未処理のLDEV1500があるか否かを判断する(S853)。ここでも、図26で説明した構成依存情報の場合と同様に、例えば、LDEV情報表4100の各エントリのLDEV番号フィールド4101で特定されるLDEV1500について、未処理のものがあるか否かを判断する。未処理のものがない場合は、対象の制御情報4000についての計算処理を終了し、ステップS851へ戻って、残りの制御情報4000についての計算処理を行う。未処理のものがある場合は、そのうちの1つのLDEV1500を選択し(S854)、選択されたLDEV1500に対して格納エリアサイズを計算する。
まず、LDEV情報表4100を参照し、対象のLDEV1500に対応するエントリの適用アプリケーションフィールド4102に格納されている値を取得する(S855)。次に、取得した適用アプリケーションフィールド4102にいずれかのアプリケーションが設定されているか否か、すなわち、対象のLDEV1500に適用されているアプリケーションがあるか否かを判断する(S856)。適用アプリケーションがない場合は、当該LDEV1500についての計算処理を終了し、ステップS853へ戻って、残りのLDEV1500についての計算処理を行う。
ステップS856で、適用アプリケーションがある場合は、制御情報サイズ表5230を参照し、対象の制御情報4000に対応するエントリの使用アプリケーションフィールド5234に格納されている値を取得する(S857)。次に、取得した使用アプリケーションフィールド5234に、ステップS855で取得した適用アプリケーションと一致するものがあるか否か、すなわち、対象のLDEV1500に適用されているアプリケーションが、対象の制御情報4000を使用しているか否かを判断する(S858)。対象の制御情報4000を使用していない場合は、当該LDEV1500についての計算処理を終了し、ステップS853へ戻って、残りのLDEV1500についての計算処理を行う。
ステップS858で、対象の制御情報4000を使用している場合は、LDEV情報表4100を参照し、対象のLDEV1500に対応するエントリの容量フィールド4103に格納されている値を取得する(S859)。次に、制御情報サイズ表5230を参照し、対象の制御情報4000に対応するエントリの容量依存情報サイズフィールド5233に格納されている容量依存情報のサイズを取得する(S860)。
次に、ステップS859で取得した対象のLDEV1500の容量の値と、ステップS860で取得した対象の制御情報4000の容量依存情報のサイズとを積算し、格納エリアサイズを計算する。また、格納エリアサイズ表5900を参照し、対象の制御情報4000に対応するエントリの格納エリアサイズフィールド5902に格納されている値を取得して、これに、計算された容量依存情報サイズを加算する(S861)。次に、得られた値で、格納エリアサイズ表5900の対象の制御情報4000に対応するエントリの格納エリアサイズフィールド5902を更新し(S862)、ステップS853へ戻って、残りのLDEV1500についての計算処理を行う。
ステップS863以降では、各制御情報4000(容量依存情報)に対して求められた格納エリアサイズの補正を行う。具体的には、まず、格納エリアサイズ表5900の各エントリを参照し、格納エリアサイズフィールド5902に格納された値の合計値を算出する(S863)。次に、得られた合計値が、制御情報キャッシュエリア5100のサイズを超えているか否かを判断する(S864)。
ステップS864で、制御情報キャッシュエリア5100のサイズを超えていない場合は、格納エリアサイズ表計算処理を終了する(S866)。制御情報キャッシュエリア5100のサイズを超えている場合は、格納エリアサイズが制御情報キャッシュエリア5100のサイズを超えないように補正し(S865)、格納エリアサイズ表計算処理を終了する(S866)。補正の方法としては、例えば、格納エリアサイズ表5900を参照し、容量依存情報毎の格納エリアサイズの比に従って、制御情報キャッシュエリア5100のサイズを超えた分を按分してサイズを減らしてもよい。
また、容量依存情報については、それぞれ個別に格納エリアを確保せずに、全ての容量依存情報で共有の格納エリアを確保するという方法もある。例えば、仮想LDEV機能を利用する場合、実体LDEV6210の使用容量が極めて少ない場合には、仮想−実体アドレス変換表4420の情報量は大きくならない。そのため、制御情報キャッシュエリア5100の中で仮想LDEV6100の容量に比例した格納エリアを確保してしまうと、制御情報キャッシュエリア5100の領域の利用効率が低下する。
そこで、容量依存情報に個別に格納エリアを確保せず、全ての容量依存情報で共有の格納エリアを確保することにより、上記のような状況を防ぎ、制御情報キャッシュエリア5100の領域を無駄なく効率的に利用できる。
以上に説明したように、本実施の形態のストレージシステム1000によれば、ストレージシステム1000の構成や設定の変更に応じて、動的に制御情報キャッシュエリア5100上の格納エリアサイズを変更することができる。これにより、LM1220上の制御情報キャッシュエリア5100の領域の利用効率を高くすることができる。
<実施の形態3>
以下に、本発明の実施の形態3である計算機システムについて説明する。本実施の形態では、各制御情報4000の管理情報を管理端末2100に表示する場合の例について説明する。なお、システム構成の概要やハードウェア構成等は、実施の形態1で説明したものと同様であるため、再度の説明は省略する。
図29は、本実施の形態の計算機システムにおける制御プログラム3000の構成例を示した図である。実施の形態2の図20で説明した制御プログラム3000の構成例に対して、管理情報表示処理3600が追加されている点が異なる。管理情報表示処理3600は、管理端末2100が送信する管理情報表示要求を受信し、制御情報4000についての管理情報を取得して管理端末2100上に表示させる機能を提供する。
図30は、管理情報表示処理3600での動作の例を示すフローチャートである。
MP1210は、管理端末2100から管理情報表示要求を受信すると管理情報表示処理を開始する(S901)。まず、実施の形態2の図26〜図28で説明した格納エリアサイズ表計算処理のうち、図26もしくは図27におけるステップS816〜S818の格納エリアサイズの補正処理を除いた、構成依存情報についての格納エリアサイズの計算処理、および、図28におけるステップS863〜S865の格納エリアサイズの補正処理を除いた、容量依存情報についての格納エリアサイズの計算処理を呼び出し、制御情報4000毎の格納エリアサイズの必要量(必要格納エリアサイズ)を算出する(S902)。
格納エリア設定・変更処理3500での格納エリアサイズ表計算処理のうち、格納エリアサイズの補正処理を除いているため、各制御情報4000についての格納エリアサイズの必要量を算出することができる。なお、ここで算出された格納エリアサイズの必要量は、その合計値が制御情報キャッシュエリア5100の総容量を超えている場合もあり得る。
次に、LM−SM対応表5210および制御情報キャッシュ管理表5220を参照し、制御情報キャッシュ管理表5220の各制御情報4000に対応するエントリの格納エリアインデックス番号範囲フィールド5223に格納された値と、LM−SM対応表5210のLMアドレスフィールド5211に格納された値とに基づいて、制御情報4000毎の格納エリアサイズの割り当て量(割当格納エリアサイズ)を算出する(S903)。
次に、その他の制御情報4000としてホスト2000からのI/O要求の数などをカウントしている統計情報に基づいて、制御情報4000毎のLMヒット率を算出する(S904)。LMヒット率は、例えば、実施の形態1の図16で説明した制御情報参照処理の中で、LMヒットした回数(ステップS307でYesの分岐)とLMミスした回数(ステップS307でNoの分岐)を統計情報として記録し、定期的に集計・初期化することで得られる。
次に、ステップS902で算出された制御情報4000毎の必要格納エリアサイズ、ステップS903で算出された制御情報4000毎の割当格納エリアサイズ、ステップS904で算出された制御情報4000毎のLMヒット率を、管理端末2100に管理情報として表示し(S905)、管理情報表示処理を終了する(S906)。
図31は、管理端末2100で制御情報4000の管理情報を表示する管理画面の例を示した図である。管理画面7000上には、例えば、各MPPK1200を示す枠が表示され、そのそれぞれに、対象のMPPK1200における制御情報4000毎の必要格納エリアサイズ、割当格納エリアサイズ、LMヒット率などが表示される。また、管理者に、管理画面7000上で各制御情報4000に割り当てる格納エリアサイズを入力させることで、各アプリケーションの使用する制御情報4000に対して、割り当てる格納エリアのサイズを変更し、特定のアプリケーションの性能を優先させる等の設定ができるようにしてもよい。
また、LM1220の使用容量が大きく、LMヒット率が低下しているMPPK1200から、当該MPPK1200が担当するLDEV1500を他のMPPK1200に移動することによって、MPPK1200毎のLM1220の使用容量の偏りを無くし、利用効率を上げることができる。また、管理端末2100上で動作するプログラムによって、MPPK1200間でLM1220の使用容量の偏りが少なくなるLDEV1500とその担当MPPKの組み合わせを算出し、管理者に提示してもよい。
以上に説明したように、本実施の形態のストレージシステム1000によれば、各制御情報4000の管理情報を管理端末2100に表示することで、管理者が管理情報を参照し、実施の形態2で説明した構成変更処理3400によって、LM1220上の制御情報キャッシュエリア5100の格納エリアサイズを最適に設定することが可能となり、制御情報キャッシュエリア5100の利用効率を上げることができる。
<実施の形態4>
以下に、本発明の実施の形態4である計算機システムについて説明する。本実施の形態では、制御情報4000の更新に伴う他のMPPK1200への更新通知を省略する場合の例について説明する。なお、システム構成の概要やハードウェア構成、制御プログラム構成等は、実施の形態1〜3で説明したものと同様であるため、再度の説明は省略する。
図32は、制御情報管理情報5200である制御情報キャッシュ管理表5220の構成例を示した図である。実施の形態1の図8で説明したものに対して、単独使用フラグフィールド5224が追加されている点が異なる。
単独使用フラグフィールド5224は、同じエントリの制御情報名フィールド5221が示す制御情報4000の各情報が、特定のMPPK1200によってしか使用されない制御情報4000であるか否かを示すフラグである(例えば、“1”:特定のMPPK1200のみが単独使用、“0”:複数のMPPK1200が使用)。
例えば、本実施の形態のストレージシステム1000では、仮想−実体アドレス変換表4420の各エントリは、それぞれのエントリの仮想LDEV番号フィールド4421に格納されたLDEV番号が示す仮想LDEV6200の担当MPPKのみがアクセスする情報である。従って、図32の例では、制御情報キャッシュ管理表5220における、仮想−実体アドレス変換表4420に対応するエントリの単独使用フラグフィールド5224に“1”が格納されている。
図33は、制御情報アクセス処理3300での制御情報更新通知受信処理の動作の例を示すフローチャートである。実施の形態1の図18で説明したものに対して、ステップS521とS522が追加されている点が異なる。
MP1210は、ステップS501〜S508で、制御情報更新要求に対して更新アドレスを算出し、LM1220およびSM1300上の情報を更新した後、制御情報キャッシュ管理表5220を参照し、更新した制御情報4000に対応するエントリの単独使用フラグフィールド5224に格納されている値を取得する(S521)。次に、取得した単独使用フラグフィールド5224に格納されていた値が“1”であるか否か、すなわち、更新した制御情報4000が、特定のMPPK1200に単独使用される制御情報4000であるか否かを判断する(S522)。
ステップS522で、更新した制御情報4000が単独使用される制御情報4000である場合は、ステップS509の他のMPPK1200への更新通知を行わずに、制御情報更新処理を終了する(S510)。更新した制御情報4000が複数のMPPK1200に使用される制御情報4000である場合は、他のMPPK1200への更新通知を行い(S509)、制御情報更新処理を終了する(S510)。
このように、MPPK1200によって単独使用される制御情報4000については、制御情報更新通知を行わないことにより、MPPK1200間の通信、および、更新通知の受信に伴う処理が発生しないようにすることができるため、システムの性能が向上する。
なお、単独使用される制御情報4000については更新通知を行わないため、例えば、LDEV1500の担当MPPKを変更した際に、変更前の担当MPPK上の制御情報キャッシュエリア5100に古い情報が残ってしまう場合がある。このとき、変更前の担当MPPKでは、正しい情報にアクセスできなくなる可能性がある。これを防ぐため、構成変更処理3400によって、担当MPPKが新たに設定されたり変更されたりして、担当するLDEV1500が増えたMPPK1200は、単独使用される制御情報4000について、後述する担当MPPK設定後処理を呼び出すことにより、他のMPPK1200が最新の情報にアクセスできるようにする必要がある。
図34は、構成変更処理3400での動作の例を示すフローチャートである。実施の形態2の図24で説明したものに対して、ステップS631が追加されている点が異なる。
MP1210は、ステップS611で担当MPPK表4200を更新した後、作成もしくは新たに設定されたLDEV1500についての担当MPPKのMP1210に対して、後述する担当MPPK設定後処理を実行させる(S631)。例えば、対象のLDEV1500について、自MPPKが担当MPPKである場合には、自MPPKが担当MPPK設定後処理を呼び出す。また、他MPPKが担当MPPKである場合には、担当MPPKのLM1220の通信エリア5300に処理要求を書き込むことで、担当MPPKに担当MPPK設定後処理を呼び出させるといった方法をとることができる。
図35は、構成変更処理3400での担当MPPK設定後処理の動作の例を示すフローチャートである。
MP1210は、構成変更処理3400での担当MPPK設定後処理を開始すると(S1001)、まず、未処理の制御情報4000があるか否かを判断する(S1002)。ここでは、例えば、制御情報キャッシュ管理表5220の制御情報名フィールド5221で特定される制御情報4000について、未処理のものがあるか否かを判断する。
ステップS1002で、未処理のものがない場合は、担当MPPK設定後処理を終了する(S1007)。未処理のものがある場合は、そのうちの1つの制御情報4000を選択し(S1003)、選択された制御情報4000に対して以下のステップS1004〜S1006の処理を行う。
具他的には、まず、制御情報キャッシュ管理表5220を参照し、対象の制御情報4000に対応するエントリの単独使用フラグフィールド5224に格納されている値を取得する(S1004)。次に、取得した単独使用フラグフィールド5224の値が“1”であるか否か、すなわち、対象の制御情報4000が単独使用されるものであるか否かを判断する(S1005)。単独使用フラグフィールド5224の値が“1”ではない、すなわち、対象の制御情報4000が複数のMPPK1200に使用されるものである場合は、ステップS1002へ戻って、残りの制御情報4000についての処理を行う。
ステップS1005で、単独使用フラグフィールド5224の値が“1”である場合、すなわち、対象の制御情報4000が単独使用されるものである場合は、制御情報キャッシュ管理表5220を参照し、対象の制御情報4000に対応するエントリの格納エリアインデックス番号範囲フィールド5223に格納されているインデックス番号の範囲を取得する。この範囲に含まれるインデックス番号に対応するLM−SM対応表5210の全エントリについて、SMアドレスフィールド5212および最終アクセス時刻フィールド5213の値を削除することによって、キャッシュされた制御情報4000を無効化する(S1006)。
以上の処理により、担当MPPKが変更された場合に、その担当MPPKにより単独使用される制御情報4000は、他のMPPK1200のLM1220上の制御情報キャッシュエリア5100に存在する場合に無効化される。なお、単独使用される制御情報4000について、全てのLDEV1500に関する制御情報4000を無効化せずに、新たに担当するLDEV1500に関する制御情報4000だけを無効化するようにしてもよい。
このように、頻繁に参照される制御情報4000については、LM1220上にキャッシュしてアクセスすることでシステムの性能が向上する。その中でも、更新が少ない制御情報4000は、全てのMPPK1200でLM1220にそれぞれキャッシュし、あるMPPK1200で更新された際に他のMPPK1200へ更新通知を送ればよい。
一方、更新が頻繁であっても、特定のMPPK1200でしかアクセスされない制御情報4000は、上述したように、そのMPPK1200でのみキャッシュすることで、他のMPPK1200への更新通知を省略できる。また、前述したように、統計情報等、全てのMPPK1200においてキャッシュ対象外である制御情報4000についても、更新通知を省略できる。すなわち、他のMPPK1200の全てがキャッシュしていない制御情報4000については、更新通知を省略できる。
以上に説明したように、本実施の形態のストレージシステム1000によれば、特定のMPPK1200でしかアクセスされない制御情報4000は、そのMPPK1200でのみキャッシュして他のMPPK1200への更新通知を省略することで制御情報更新通知を減らすことができ、MPPK1200間の通信、および、更新通知の受信に伴う処理が減ることにより、システムの性能を向上させることができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、実施の形態1〜4に記載された計算機システムにおける各構成要素は、説明の簡便化のために1つのみ記載されているものであっても、それらを二重化等することで高信頼化を図ることが可能である。