本発明は、ストレージシステム及び記憶制御装置に関する。
例えば、企業や政府機関あるいは教育機関等のユーザが管理すべきデータは、日々増大するため、ユーザの必要とする記憶容量も増加する一方である。このため、ユーザは、既存の記憶制御装置に新たな記憶デバイスを追加したり、より大容量の記憶資源を有する記憶制御装置を新規に購入する。
このようにして、ユーザは、複数の記憶制御装置を利用することになり、ストレージシステム内には複数の記憶制御装置が混在する。そこで、複数の記憶制御装置を有効に利用すべく、第1の記憶制御装置に他の記憶制御装置を接続することにより、ストレージシステム内の記憶資源を仮想化して上位装置に提供する技術が提案されている(特許文献1,特許文献2,特許文献3)。
特開平10−283272号公報
特開2004−220450号公報
特開2005−92424号公報
前記各文献に記載の従来技術では、第1の記憶制御装置によって、ストレージシステム内の記憶資源を仮想化する機能が開示されている。また、特開2005−92424号公報には、第1の記憶制御装置の負担を軽減すべく、バックアップ処理等の負荷の重い処理を第2の記憶制御装置で実行させる技術が開示されている。
しかし、前記各文献に記載の従来技術では、上位装置から要求された機能の実行を、ストレージシステム内のいずれの記憶制御装置で実行させるのが最適であるかについて、検討の余地がある。
例えば、ストレージシステムが有する機能群は、各記憶制御装置がそれぞれ実行可能な共通機能と、所定の記憶制御装置のみが実行可能な固有機能とに大別可能である。ここで、上位装置から実行を要求された機能が共通機能の場合、いずれの記憶制御装置でも実行可能である。
しかし、その共通機能の実行が、ある1つの記憶制御装置に集中し、この1つの記憶制御装置内で複数の共通機能がそれぞれ起動された場合は、処理性能が低下する。従って、その共通機能に関して、ストレージシステム全体としての性能が低下する。
また、前記各文献に記載の従来技術では、第1の記憶制御装置の有する各機能は利用することはできるが、第2の記憶制御装置のみで実行可能な固有機能を有効に利用することができない。第1の記憶制御装置で実行不可能な機能を上位装置が要求した場合、第1の記憶制御装置は、直ちにエラー応答を返す可能性があるためである。
本発明は、上記の問題点に鑑みてなされたもので、その目的は、複数の記憶制御装置間で処理負荷を適切に分散させることができるようにしたストレージシステム及び記憶制御装置を提供することにある。本発明の他の目的は、第1記憶制御装置に接続された第2記憶制御装置のみで実行可能な固有機能の実行を上位装置から要求された場合に、この固有機能を第2記憶制御装置で実行させることができるようにしたストレージシステム及び記憶制御装置を提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明に従うストレージシステムは、上位装置からの要求を受け付ける第1記憶制御装置と、この第1記憶制御装置に通信可能に接続された少なくとも1つ以上の第2記憶制御装置とを備えたストレージシステムであって、第1記憶制御装置は、第2記憶制御装置の有する第2記憶領域を、第1記憶制御装置の有する第1記憶領域として、上位装置に提供可能となっている。さらに、第1記憶制御装置及び第2記憶制御装置の状況をそれぞれ検出する状況検出部と、第1記憶制御装置及び第2記憶制御装置でそれぞれ実行可能な機能を管理するための機能管理部と、上位装置から所定の機能の実行を要求された場合には、状況検出部と機能管理部とを用いることにより、各記憶制御装置の状況及び所定の機能の内容に基づいて、各記憶制御装置のうちいずれの記憶制御装置で所定の機能を実行すべきか判断する実行先判断部と、実行先判断部により実行先の記憶制御装置として決定された記憶制御装置に、所定の機能の実行を指示する実行指示部と、を備える。
本発明の実施形態では、各記憶制御装置がそれぞれ備える機能のうち、実行可能な機能を予め選択するための機能選択部をさらに備え、機能管理部は、各記憶制御装置毎に、機能選択部により選択された機能をそれぞれ管理する。
本発明の実施形態では、各記憶制御装置がそれぞれ実行可能な機能の動作モードを設定するための動作モード設定部をさらに備える。
本発明の実施形態では、各記憶制御装置がそれぞれ実行可能な機能には、この機能を実行させるための条件が予め設定されており、実行先判断部は、各記憶制御装置の状況及び所定の機能に予め対応付けられている条件に基づいて、各記憶制御装置のうちいずれの記憶制御装置で所定の機能を実行すべきかを判断する。
本発明の実施形態では、条件として、第1記憶制御装置の負荷が予め設定された第1閾値以上の場合に、所定の機能を第2記憶制御装置で実行すべき旨が設定されている。
本発明の実施形態では、条件として、第2記憶制御装置の負荷が予め設定された第2閾値未満の場合に、所定の機能を第2記憶制御装置で実行すべき旨が設定されている。
本発明の実施形態では、条件として、第1記憶制御装置の負荷が予め設定された第1閾値以上の場合であって、かつ、第2記憶制御装置の負荷が予め設定された第2閾値未満の場合に、所定の機能を第2記憶制御装置で実行すべき旨が設定されている。
本発明の実施形態では、第1記憶制御装置及び第2記憶制御装置でそれぞれ実行可能な機能は、各記憶制御装置がそれぞれ実行可能な共通機能と、各記憶制御装置のうちいずれか一方のみが実行可能な固有機能とに分けることができ、共通機能については、各記憶制御装置のうち、いずれの記憶制御装置で実行させるかを予め設定することができる。
本発明の実施形態では、第1記憶制御装置及び第2記憶制御装置でそれぞれ実行可能な機能は、各記憶制御装置がそれぞれ実行可能な共通機能と、各記憶制御装置のうちいずれか一方のみが実行可能な固有機能とに分けることができ、実行先判断部は、(1)共通機能については、第1記憶制御装置が共通機能を実行可能な場合に、第1記憶制御装置に共通機能を実行させ、第1記憶制御装置で実行不能な場合に、第2記憶制御装置の状況に基づいて、第2記憶制御装置に共通機能を実行させ、(2)固有機能については、第2記憶制御装置の状況に基づいて、第2記憶制御装置に固有機能を実行させる。
本発明の実施形態では、所定の機能は、データ内容の加工を伴う機能であって、第1記憶制御装置及び第2記憶制御装置は、所定の機能をそれぞれ実行可能であり、第1記憶制御装置が所定の機能を実行する場合には、第1記憶制御装置による所定の機能の実行を有効に設定すると共に、第2記憶制御装置による所定の機能の実行を無効に設定し、第2記憶制御装置が所定の機能を実行する場合には、第1記憶制御装置による所定の機能の実行を無効に設定すると共に、第2記憶制御装置による所定の機能の実行を有効に設定する、ようになっている。
本発明の実施形態では、データ内容の加工を伴う機能は、圧縮処理または暗号化処理の少なくともいずれか一方を含むことができる。
本発明の実施形態では、上位装置は、第1記憶領域について、所定の機能の実行を要求し、実行指示部は、実行先判断部によって第2記憶制御装置が実行先の記憶制御装置として決定された場合に、第2記憶領域に関して所定の機能を実行させるための実行指示を発行する。
本発明の実施形態では、第1記憶制御装置には、複数の第2記憶制御装置が通信可能にそれぞれ接続されており、かつ、該各第2記憶制御装置同士も通信可能に接続されており、実行指示部は、複数の第2記憶制御装置のうち、実行先判断部によって実行先の記憶制御装置として決定された第2記憶制御装置に所定の機能を実行させるための実行指示を発行し、この発行された実行指示は、複数の第2記憶制御装置のうち、実行先判断部により実行先の記憶制御装置として選択されなかった第2記憶制御装置を経由して、実行先の記憶制御装置として決定された第2記憶制御装置に伝達させるようになっている。
ここで、本発明の実施形態では、第2記憶制御装置を経由して伝達される前記所定の機能は、第2記憶領域内でのデータコピーまたは第2記憶領域を構成する記憶デバイスの電源制御機能の少なくともいずれか一方を含むことができる。
本発明の他の観点に従う記憶制御装置は、所定の機能の実行を要求する上位装置及び第2記憶制御装置とそれぞれ通信可能に接続される記憶制御装置であって、第2記憶制御装置の有する第2記憶領域を、自装置の有する第1記憶領域として、上位装置に仮想的に提供可能となっており、自装置及び第2記憶制御装置の状況をそれぞれ検出する状況検出部と、自装置及び第2記憶制御装置でそれぞれ実行可能な機能を管理するための機能管理部と、上位装置から所定の機能の実行を要求された場合には、状況検出部と機能管理部とを用いることにより、自装置及び第2記憶制御装置の状況と、所定の機能の内容とに基づいて、自装置または第2記憶制御装置のうちいずれの記憶制御装置で所定の機能を実行すべきか判断する実行先判断部と、実行先判断部により実行先の記憶制御装置として決定された記憶制御装置に、所定の機能の実行を指示する実行指示部と、を備える。
本発明のさらに別の観点に従うストレージシステムは、上位装置からの要求を受け付ける第1記憶制御装置と、この第1記憶制御装置に通信可能に接続された複数の第2記憶制御装置とを備えたストレージシステムであって、第1記憶制御装置は、少なくとも第1コントローラを備えており、各第2記憶制御装置は、指示された機能を実行するための第2コントローラ及び複数の記憶デバイスをそれぞれ備えている。
そして、第1コントローラは、第1記憶制御装置内に仮想的に設けられる1つまたは複数の中間記憶デバイスに、各第2記憶制御装置の有する各記憶デバイスによって提供される物理的記憶領域を対応付けることにより、中間記憶デバイス上に生成される論理ボリュームを上位装置に提供するようになっており、さらに、第1コントローラは、論理ボリュームと中間記憶デバイス及び各第2記憶制御装置の有する各記憶デバイスとの対応関係を管理するボリューム管理テーブルと、第1記憶制御装置及び各第2記憶制御装置でそれぞれ実行可能な機能が予め登録された機能管理テーブルと、機能管理テーブルに登録された各機能のうち、各第2記憶制御装置のいずれかで実行される可能性のある機能群については、これらの機能毎に、各第2記憶制御装置のいずれで実行させるかを予め設定する機能実行先管理テーブルと、第1記憶制御装置及び第2記憶制御装置の負荷状況をそれぞれ検出する状況検出部と、上位装置から所定の機能の実行を要求された場合には、状況検出部と機能管理テーブル及び機能実行先管理テーブルとを用いることにより、第1記憶制御装置または各第2記憶制御装置の状況及び所定の機能の内容に基づいて、第1記憶制御装置または各第2記憶制御装置のうちいずれの記憶制御装置で所定の機能を実行すべきか判断する実行先判断部と、実行先判断部により実行先の記憶制御装置として決定された記憶制御装置の有する第1コントローラまたは第2コントローラに、所定の機能の実行を指示する実行指示部と、を備えている。
本発明の各手段、各部の少なくとも一部は、コンピュータプログラムによって実行可能な場合がある。そして、このコンピュータプログラムは、各種記録媒体に固定された状態で配布したり、あるいは、通信媒体を介して送信することができる。
以下、図面に基づき、本発明の実施形態を説明する。まず、図1は、本実施形態によるストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、1つの接続元記憶制御装置1と、少なくとも1つ以上の接続先記憶制御装置2,3とを含んで構成することができる。
ここで、接続元記憶制御装置1は、「第1記憶制御装置」に対応する。第1接続先記憶制御装置2及び第2接続先記憶制御装置3は、「第2記憶制御装置」に対応する。また、ホストコンピュータ(以下「ホスト」)4は、「上位装置」に対応する。接続元記憶制御装置1の有する仮想ボリューム1Bは、「第1記憶領域」に対応する。各接続先記憶制御装置2,3が有する実ボリューム2B,3Bは「第2記憶領域」に対応する。
接続元記憶制御装置1は、ホスト4からの各種要求を受け付けて処理し、その結果を返すものである。接続元記憶制御装置1には、複数の接続先記憶制御装置2,3が接続されている。接続元記憶制御装置1は、各接続先記憶制御装置2,3の有する実ボリューム2B,3Bを自分自身のボリューム1Bであるかのようにして、ホスト4に提供することができる。接続元記憶制御装置1は、ホスト4から要求されたデータ処理(機能)を実行し、その結果をホスト4に返す。このように、接続元記憶制御装置1は、複数の記憶制御装置1,2,3が混在するストレージシステムにおいて、ストレージシステムを代表する窓口としての役割を果たす。
接続元記憶制御装置1の構成を説明する。接続元記憶制御装置1は、例えば、制御部1Aと、仮想ボリューム1Bと、上位通信部1C及び下位通信部1Dを備えて構成することができる。なお、上位通信部1C及び下位通信部1Dを制御部1Aの外部に配置しているが、制御部1A内に各通信部1C,1Dを設けてもよい。
後述のように、接続元記憶制御装置1は、ユーザデータを記憶するための物理的な記憶領域を備えている必要はない。従って、接続元記憶制御装置1は、ディスクアレイサブシステムのように構成することもできるし、ネットワークスイッチのように構成することもできる。
上位通信部1Cは、通信ネットワークCN1を介して、ホスト4に接続されており、ホスト4との間で双方向のデータ通信を行う。通信ネットワークCN1としては、例えば、LAN(Local Area Network)やSAN(Storage Area Network)等を用いることができる。即ち、上位通信部1Cとホスト4とは、TCP/IP(Transmission Control Protocol/Internet Protocol)や、FCP(Fibre Channel Protocol)を利用するデータ通信を行うことができる。
下位通信部1Dは、通信ネットワークCN2を介して、第1接続先記憶制御装置2に接続されている。また、下位通信部1Dは、通信ネットワークCN3を介して、第2接続先記憶制御装置3にも接続されている。通信ネットワークCN2,CN3としては、LANやSAN等を挙げることができる。また、通信ネットワークCN1,CN2,CN3は、同一のネットワークとして構成してもよい。
仮想ボリューム1Bは、ホスト4によって利用される論理的な記憶デバイスであり、論理ボリュームとも呼ばれる。以下の説明では、仮想ボリューム1Bを論理ボリューム1Bと呼ぶことがある。仮想ボリューム1Bには、ホスト4によって利用されるデータ(ユーザデータ)が記憶されている。しかし、仮想ボリューム1Bは、物理的な実体を備えていない。ユーザデータを実際に格納しているのは、第1接続先記憶制御装置2の有する実ボリューム2Bである。
実ボリューム2Bを仮想ボリューム1Bにマッピングすることにより、仮想ボリューム1Bのアドレス空間と実ボリューム2Bのアドレス空間とが対応付けられる。ホスト4が、仮想ボリューム1Bの所定アドレスを指定してライトデータを送信すると、このライトデータは、第1接続先記憶制御装置2に転送されて、実ボリューム2B内の所定アドレスに対応するアドレスに書き込まれる。ホスト4が、仮想ボリューム1Bの所定アドレスを指定してデータの読出しを要求すると、実ボリューム2B内の所定アドレスに対応するアドレスからデータが読み出され、第1接続先記憶制御装置2から接続元記憶制御装置1に送信される。接続元記憶制御装置1は、第1接続先記憶制御装置2から受信したデータをホスト4に送信する。
このように、ホスト4は、仮想ボリューム1Bの実体がストレージシステム内のどこに存在するかを全く意識することなく、仮想ボリューム1Bに対してデータの読み書きを行うことができる。接続元記憶制御装置1内の仮想ボリューム1Bに接続先記憶制御装置2の実ボリューム2Bを対応付けることにより、接続元記憶制御装置1の外部に存在する実ボリューム2Bをあたかも接続元記憶制御装置1内の論理ボリュームであるかのようにしてホスト4に提供する機能を、本明細書では、外部接続機能と呼ぶ。
制御部1Aの構成を説明する。制御部1Aは、上述した外部接続機能の他に、例えば、機能実行部1A1と、実行先判断部1A2と、機能管理部1A3と、状況検出部1A4と、実行指示部1A5と、動作モード設定部1A6及び機能選択部1A7を備えて構成することができる。
機能実行部1A1は、ホスト4から要求された機能を実行するためのものである。ここで、機能としては、例えば、ローカルボリュームコピー機能、リモートコピー機能、スナップショット機能、暗号化処理(復号化処理を含む)機能、圧縮処理(伸張処理を含む)機能等を挙げることができる。
ローカルボリュームコピー機能とは、コピー元ボリューム及びコピー先ボリュームの両方が同一の筐体内に存在する場合において、コピー元ボリュームからコピー先ボリュームへデータの全部または一部をコピーさせる機能である。従って、ローカルボリュームコピー機能は、筐体内ボリュームコピー機能と呼ぶこともできる。
リモートコピー機能とは、コピー元ボリュームとコピー先ボリュームとが別々の筐体内に存在する場合において、コピー元ボリュームからコピー先ボリュームへデータの全部または一部をコピーさせる機能である。リモートコピー機能は、筐体間ボリュームコピー機能と呼ぶこともできる。また、リモートコピー機能は、同期式リモートコピー機能と非同期式リモートコピー機能とに大別することができる。同期式リモートコピー機能とは、上位装置からコピー元ボリュームへのライト要求に対し、データ転送先(コピー先ボリュームを持つ記憶制御装置)におけるライト処理完了を確認してから、上位装置へライト完了応答を行う機能である。非同期式リモートコピー機能とは、上位装置からコピー元ボリュームへのライト要求に対し、データ転送先におけるライト処理完了を確認することなく、上位装置へライト完了応答を行う機能である。
スナップショット機能とは、指示された所定時点における論理ボリューム1Bの静止化された記憶イメージを作成する機能である。スナップショット機能は、ボリュームコピー機能を利用して作成した同期したボリュームを保存することによって実現する方法や、上位装置からのライト要求が発生した際にライト対象領域の旧データを別領域に退避(コピー)した後に新データを書き込むことによって実現する方法や、上位装置から静止化された領域にライト要求があった場合は別領域に新データを書き込むことによって実現する方法等がある。
マイグレーション機能とは、指示された所定の論理ボリューム1Bの一部または全部を、ホストのアクセスパスを変えることなく別の論理ボリューム1Bに移動させる機能である。マイグレーション機能の実現方法には、ボリュームコピー機能等を利用して同期したボリュームを作成した後に、ホストから移動元へのデータアクセスを移動先へのデータアクセスに変換する方法や、先にアクセスを移動先に変換してから、移動元のデータを順次移動先へとコピーしていく方法等がある。
暗号化処理機能とは、データを所定の暗号アルゴリズムに基づいて暗号化したり、暗号化されたデータを復号化する機能である。圧縮処理機能とは、データを圧縮アルゴリズムに基づいて圧縮したり、圧縮されたデータを伸張する機能である。
機能実行部1A1は、上述した各機能の全部または一部を実行する。上記各機能のうち、接続元記憶制御装置1及び各接続先記憶制御装置2,3が共通に備えている機能を共通機能F1と呼び、共通機能F1以外の機能を固有機能F2と呼ぶことができる。図1に示す例では、接続元記憶制御装置1は、共通機能F1のみを実行可能であり、各接続先記憶制御装置2,3は、共通機能F1及び固有機能F2をそれぞれ実行可能である。従って、固有機能F2は、例えば、接続先記憶制御装置2,3でのみ実行可能な機能と呼ぶことができる。
実行先判断部1A2は、ホスト4から実行を要求された機能を、各記憶制御装置1,2,3のいずれで実行させるべきかを判断するものである。実行先判断部1A2は、機能管理部1A3と状況検出部1A4とを用いることにより、ホスト4から要求された機能を実行すべき記憶制御装置を1つ選択する。
機能管理部1A3は、各記憶制御装置1,2,3のそれぞれにおいて、実行可能な(利用可能な)機能がどれであるかを管理する。機能選択部1A7は、各記憶制御装置1,2,3が有する複数の機能のうち、いずれの機能を実行可能とするかを選択する。即ち、機能管理部1A3は、機能選択部1A7によって各記憶制御装置1,2,3毎にそれぞれ選択された機能を管理する。従って、実行先判断部1A2は、機能管理部1A3を用いることにより、どの記憶制御装置がどの機能を実行可能であるかを把握できる。
状況検出部1A4は、各記憶制御装置1,2,3の状況をそれぞれ検出する。状況としては、例えば、各記憶制御装置1,2,3の負荷状態を挙げることができる。負荷状態を検出するためのパラメータとしては、例えば、単位時間あたりのデータ入出力要求の数(IOPS)、CPU(Central Processing Unit)の使用率、キャッシュメモリの使用率等を挙げることができる。これらのパラメータを複数組み合わせて、負荷状態を判断することもできる。なお、記憶制御装置の状況としては、負荷状態に限らず、例えば、各記憶制御装置1,2,3が起動しているか否か等を用いてもよい。保守作業等で停止している場合は、その記憶制御装置を選択しても、ホスト4から要求された機能を実行させることができないためである。
実行先判断部1A2は、状況検出部1A4を用いることにより、各記憶制御装置1,2,3の状況を把握することができる。実行先判断部1A2は、ホスト4から実行を要求された機能が各記憶制御装置1,2,3のいずれで実行可能であるかと、各記憶制御装置1,2,3の現在状況とに基づいて、実行を要求された機能の実行先を選択する。
実行指示部1A5は、実行先判断部1A2によって選択された記憶制御装置に向けて、ホスト4が実行を要求する機能を実行させるための指示を発行する。もしも、実行先記憶制御装置として接続元記憶制御装置1が選択された場合、実行指示部1A5は、機能実行部1A1に、実行指示を与える。もしも、実行先記憶制御装置として接続先記憶制御装置2,3のいずれかが選択された場合、実行指示部1A5は、選択された接続先記憶制御装置2または3のいずれかに、実行指示を与える。
動作モード設定部1A6は、実行可能な機能について、その動作モードを設定するためのものである。ある機能が複数の動作モードを備えており、各動作モードを切り替え可能である場合、動作モード設定部1A6は、いずれか1つの動作モードを選択するように設定する。例えば、データを圧縮するための圧縮モードと圧縮データを伸張するための伸張モードとを切り替えて実行可能な圧縮処理機能の場合、動作モード設定部1A6は、いずれかのモードを選択する。同様に、データを暗号化させるための暗号化モードと暗号データを復号化するための復号モードとを切り替えて実行可能な暗号化処理機能の場合、動作モード設定部1A6は、いずれかのモードを選択する。
次に、第1接続先記憶制御装置2の構成を説明する。第1接続先記憶制御装置2は、接続元記憶制御装置1に物理的な記憶領域を提供する。従って、第1接続先記憶制御装置2は、制御部2Aと、実ボリューム2Bと、上位通信部2Cを備えている。また、第1接続先記憶制御装置2は、第2接続先記憶制御装置3と連携して動作可能である。このため、第1接続先記憶制御装置2は、下位通信部2Dを備えている。第1接続先記憶制御装置2は、例えば、ディスクアレイサブシステムのように構成される。
制御部2Aは、第1接続先記憶制御装置2の動作を制御するものであり、機能実行部2A1を備えている。機能実行部2A1は、共通機能F1及び固有機能F2をそれぞれ実行可能であり、指示された機能を実行する。
実ボリューム2Bは、データを記憶するための物理的実体に結びつけられた論理的記憶デバイス(論理ボリューム)である。本明細書では、物理的実体に結びつけられている論理ボリュームを実ボリュームと呼び、物理的実体に直接的に結びつけられていない論理ボリュームを仮想ボリュームと呼ぶことがある。より詳しくは、例えば、ハードディスクドライブのような複数の記憶デバイスがそれぞれ有する物理的記憶領域を統合して仮想化し、この仮想化された物理的記憶デバイス(中間記憶デバイスとも呼ぶ)の有する記憶領域上に、実ボリュームを生成する。
上位通信部2Cは、接続元記憶制御装置1と通信ネットワークCN2を介して接続されており、接続元記憶制御装置1との間で双方向のデータ通信を行う。下位通信部2Dは、第2接続先記憶制御装置3と通信ネットワークCN4を介して接続されており、第2接続先記憶制御装置3との間で双方向のデータ通信を行う。通信ネットワークCN4としては、SANやLAN等を用いることができる。また、通信ネットワークCN4と通信ネットワークCN1,CN2,CN3とを同一のネットワークとして構成することもできる。
第2接続先記憶制御装置3は、第1接続先記憶制御装置2と同様に、接続元記憶制御装置1に物理的な記憶領域を提供する。従って、第2接続先記憶制御装置3は、第1接続先記憶制御装置2と同様に、例えば、制御部3Aと、実ボリューム3Bとを備えたディスクアレイサブシステムのように構成することができる。なお、紙面の都合上、通信部の構成を省略しているが、第2接続先記憶制御装置3も、上位通信部を備えている。また、第2接続先記憶制御装置3の下流にさらに別の記憶制御装置を接続する場合、第2接続先記憶制御装置3に下位通信部が設けられる。
制御部3Aは、第2接続先記憶制御装置3の動作を制御するものであり、機能実行部3A1を備えている。機能実行部3A1は、共通機能F1及び固有機能F2をそれぞれ実行可能であり、指示された機能を実行する。実ボリューム3Bは、接続元記憶制御装置1の仮想ボリューム1Bに対応付けることができる。なお、後述の実施例のように、第1接続先記憶制御装置2に外部接続機能を設け、第1接続先記憶制御装置2内の仮想ボリュームに第2接続先記憶制御装置3の実ボリューム3Bを対応付けることもできる。
次に、本ストレージシステムの動作を説明する。外部接続機能によるデータのリード処理及びライト処理については、既に述べたので割愛する。ホスト4は、リード要求及びライト要求以外の所定の機能(ボリュームコピー機能や圧縮機能等)の実行を、接続元記憶制御装置1に要求する。この実行要求には、所定の機能を適用すべきボリュームを特定するための情報が含まれている。
実行先判断部1A2は、ホスト4からの実行要求を受領すると、機能管理部1A3及び状況検出部1A4を用いることにより、実行を要求された機能を各記憶制御装置1,2,3のいずれで実行させるべきかを決定する。
機能管理部1A3によって管理されている複数の機能の全部または一部には、予め実行条件を設定しておくことができる。条件としては、例えば、「接続元記憶制御装置の負荷が高い場合には、接続先記憶制御装置で実行させる。」、「接続先記憶制御装置の負荷が低い場合には、その接続先記憶制御装置で代行処理させる。」、「接続元記憶制御装置の負荷が高く、かつ、接続先記憶制御装置の負荷が低い場合には、その接続先記憶制御装置で実行させる。」等を挙げることができる。
実行先判断部1A2は、実行を要求された所定の機能がいずれの記憶制御装置1,2,3で実行可能であるかを確認し、実行可能な記憶制御装置の現在の状況が実行条件を満足するか否かを判定する。そして、実行先判断部1A2は、実行条件を満たす記憶制御装置を実行先記憶制御装置として選択する。
実行指示部1A5は、実行先として決定された記憶制御装置の機能実行部1A1,2A1,3A1に向けて、所定の機能の実行を指示する。実行指示部1A5は、ホスト4からの実行要求をそのままで、あるいは、ホスト4からの実行要求を他の実行要求に変換して、実行を指示する。
例えば、接続元記憶制御装置1が2つの仮想ボリューム1Bを有しており、一方の仮想ボリューム1Bは第1接続先記憶制御装置2の実ボリューム2Bに、他方の仮想ボリューム1Bは第2接続先記憶制御装置3の実ボリューム3Bに、それぞれ対応付けられているとする。この構成において、ホスト4が、一方の仮想ボリューム1Bから他方の仮想ボリューム1Bへのデータコピーの実行を要求したとする。
接続元記憶制御装置1が実行先記憶制御装置として選択されている場合、実行指示部1A5は、ローカルボリュームコピー機能の実行を機能実行部1A1に指示する。機能実行部1A1は、ローカルボリュームコピー機能を実行することにより、一方の仮想ボリューム1Bから読み出したデータを、他方の仮想ボリューム1Bに書き込ませる。
第1接続先記憶制御装置2が実行先記憶制御装置として選択されている場合、実行指示部1A5は、リモートコピー機能の実行を機能実行部2A1に指示する。機能実行部2A1は、実ボリューム2Bから読み出したデータを、リモートコピー機能によって第2接続先記憶制御装置3に送信し、実ボリューム3Bに記憶させる。
このように、ホスト4の望む実行結果が得られるように、実行指示部1A5は、実行先として選択された記憶制御装置及び所定の機能の内容(ホスト4が期待する処理内容)とに基づいて、ホスト4からの実行要求を変換できるようになっている。
本実施形態は、上述のように構成されるため、以下の効果を奏する。第1に、本実施形態では、ホスト4が実行を要求する所定の機能の内容及び各記憶制御装置1,2,3の状況に基づいて、所定の機能を実行すべき記憶制御装置を選択する。従って、特定の記憶制御装置の処理負担が増加するのを抑制することができ、ストレージシステム内で、より適切な負荷分散を行うことができる。
第2に、本実施形態では、接続先記憶制御装置2,3のみで実行可能な固有機能F2の実行をホスト4が要求した場合、接続先記憶制御装置2,3の状況に応じて、適切な実行先記憶制御装置を選択し、実行させる。従って、接続元記憶制御装置1が有していない機能であっても、接続先記憶制御装置2,3で実行可能な機能F2であれば、その機能F2を実行させることができる。これにより、接続先記憶制御装置2,3でのみ実行可能な機能F2を有効に利用することができ、この機能F2を接続元記憶制御装置1に実装することなく、接続元記憶制御装置1を、見かけ上高機能化させることができる。
接続元記憶制御装置1に実装されておらず、接続先記憶制御装置2,3にのみ実装されている機能F2を利用するためには、その機能F2の実行指示を受け付けるためのインターフェースが必要となる。この非実装機能の実行指示を受け付けるためのインターフェースは、例えば、上位通信部1Cに設けることができる。このようなインターフェースの実装方法としては、例えば、標準化団体等によって推進される共通インタフェースを実装する方法、特殊な論理デバイスの特定アドレスに対するリード命令やライト命令を接続先記憶制御装置2,3における機能F2の実行指示に予め関連付けておく方法、ベンダユニークコマンドとして予め定義しておく方法、接続先記憶制御装置2,3で使用されているインターフェースを接続元記憶制御装置1に実装し直す方法等を挙げることができる。
上述した第2の作用効果に着目すると、本実施形態は、例えば、
「上位装置(4)からの要求を受け付ける第1記憶制御装置(1)と、この第1記憶制御装置に通信可能に接続された少なくとも1つ以上の第2記憶制御装置(2,3)とを備えたストレージシステムであって、
第1記憶制御装置は、第2記憶制御装置の有する第2記憶領域(2B)を、第1記憶制御装置の有する第1記憶領域(1B)として、上位装置に提供可能となっており、
第2記憶制御装置にのみ実装されている機能(F2)の実行要求が上位装置から発行された場合には、この実行指示を受け付ける受付部(1C)と、
第1記憶制御装置及び第2記憶制御装置でそれぞれ実行可能な機能を管理するための機能管理部(1A3)と、
受付部を介して、上位装置から所定の機能(F2)の実行を要求された場合には、機能管理部を用いることにより、所定の機能を実行可能な第2記憶制御装置を選択する実行先判断部(1A2)と、
実行先判断部により実行先の記憶制御装置として決定された接続先記憶制御装置に、所定の機能の実行を指示する実行指示部と、を備えたストレージシステム。」のように、表現することができる。
なお、ホスト4から記憶制御装置1への指示や記憶制御装置1から記憶制御装置2,3への指示は、いわゆるインバンド方式またはアウトオブバンド方式のいずれかを用いて行うことができる。即ち、データ入出力用のネットワークを介して指示を与えることもできるし(インバンド方式)、管理用のネットワークを介して指示を与えることもできる(アウトオブバンド方式)。以下、本実施形態を詳細に説明する。
図2は、本実施例によるストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、1つの接続元記憶制御装置100と、複数の接続先記憶制御装置200と、1つまたは複数のホスト10と、1つまたは複数の管理サーバ20と、を備えて構成することができる。
図2に示す構成と図1に示す構成との対応関係を説明すると、接続元記憶制御装置100は図1中の接続元記憶制御装置1に、第1接続先記憶制御装置200は図1中の第1接続先記憶制御装置2に、第2接続先記憶制御装置300は図1中の第2接続先記憶制御装置3に、ホスト10は図1中のホスト4に、それぞれ対応する。また、仮想ボリューム113は図1中の仮想ボリューム1Bに、実ボリューム213,313は図1中の実ボリューム2B,3Bにそれぞれ対応する。
接続元記憶制御装置100は、接続先記憶制御装置200,300を代表して、ホスト10からの各種コマンドを受け付ける装置である。接続先記憶制御装置200,300は、接続元記憶制御装置100に実ボリューム213,313を提供するものである。各記憶制御装置100,200,300の詳細は、後述する。
ホスト10は、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成されるコンピュータ装置である。ホスト10には、例えば、RAID(Redundant Array of Independent Disks)を管理するためのプログラムや、パスを管理するためのプログラム、各種アプリケーションプログラム等を設けることができる。
ホスト10は、接続元記憶制御装置100のボリューム113にアクセスし、データの読み書きを行う。管理サーバ20は、管理用の通信ネットワークCN13を介して、ホスト10及び各記憶制御装置100,200,300にそれぞれ接続されている。
管理サーバ20は、各ホスト10及び各記憶制御装置100,200,300の状態等を管理するものである。管理用の通信ネットワークCN3としては、例えば、LANを挙げることができる。
ホスト10と接続元記憶制御装置100とは、例えば、SAN等の通信ネットワークCN11を介して接続されている。また、接続元記憶制御装置100と各接続先記憶制御装置200,300とは、例えば、SAN等の通信ネットワークCN12を介して、それぞれ接続されている。
ここで、SANは、FCPを用いるFC_SANでもよいし、または、IP(Internet Protocol)を用いるIP_SANでもよい。また、ネットワークCN11をFC_SANとして、ネットワークCN12をIP_SANとして構成する場合のように、CN11とCN12とを別々のSANとして構成することもできる。また、CN11とCN12とを統合し、共通のネットワークによって、ホスト10と各記憶制御装置100,200,300及び各記憶制御装置100,200,300同士をそれぞれ接続する構成でもよい。
図3は、各記憶制御装置100,200,300のハードウェア構成を示す構成説明図である。図3では、接続元記憶制御装置100の構成例を中心に示している。接続元記憶制御装置100は、例えば、コントローラ101と、記憶部110とを備えたディスクアレイサブシステムのように構成することができる。なお、、接続元記憶制御装置100は、例えば、スイッチングデバイスのような中継装置として構成することもできる。
コントローラ101は、接続元記憶制御装置100の動作を制御する。コントローラ101は、例えば、複数のチャネルアダプタ(以下「CHA」)120と、複数のディスクアダプタ(以下「DKA」)130と、キャッシュメモリ140と、共有メモリ150と、接続制御部160と、サービスプロセッサ(以下「SVP」)170とを備えて構成できる。なお、コントローラ101の構成は、図3に示すものに限らない。ホスト10及び接続先記憶制御装置200,300との通信機能や外部接続機能、実行先判断機能等を実現できる構成であればよい。
CHA120は、ホスト10との間のデータ通信を制御するものである。CHA120は、例えば、マイクロプロセッサやメモリ、プロトコルチップ、データ転送チップ等を備えたコンピュータ装置として構成することができる。CHA120は、複数の通信ポート121を備えている。各通信ポート121には、例えば、IPアドレスやWWN(World wide Name)のようなネットワークアドレスが、それぞれ割り当てられている。
通信ポート121には、例えば、イニシエータポート、ターゲットポートのような役割を設定可能である。ターゲットポートに設定された通信ポート121は、ホスト10に接続される。イニシエータポート(外部接続用ポート)に設定された通信ポート121は、接続先記憶制御装置200,300に接続される。なお、ホスト10と接続元記憶制御装置100との間、接続元記憶制御装置100と各接続先記憶制御装置200,300との間を、それぞれ複数の通信パスで接続してもよい。これにより、通信負荷を分散させたり、耐障害性を向上させることができる。
DKA130は、記憶部110との間のデータ通信を制御するものである。DKA130は、CHA120と同様に、マイクロプロセッサやメモリ等を備えたコンピュータ装置として構成される。DKA130の通信ポート131は、通信ネットワークCN21を介して、記憶部110に接続されている。
キャッシュメモリ140は、ホスト10から受信したライトデータや、記憶部110から読み出されたリードデータ等を記憶する。共有メモリ150は、記憶制御装置100の動作を制御するために必要な各種の制御情報や管理情報等が記憶される。なお、複数のキャッシュメモリ140を設け、記憶部110に書き込まれていないデータ(いわゆるダーティデータ)を冗長記憶するようにしてもよい。また、キャッシュメモリ140と共有メモリ150とを同一のメモリパッケージとして構成してもよい。さらに、あるメモリの一部を制御メモリ領域として使用し、残りの部分をキャッシュメモリ領域として使用する構成でもよい。
接続制御部160は、例えば、クロスバスイッチ等のように構成される。接続制御部160は、各CHA120,各DKA130を、キャッシュメモリ140,共有メモリ150にそれぞれ接続させる。
SVP170は、内部LAN等を介して、CHA120やLANインターフェース180に接続されている。SVP170は、記憶制御装置100内の各種ステータス等の情報を定期的にまたは不定期に収集し、収集した情報に基づいて、警告信号や解析結果等を出力する。
図3では、紙面の都合上省略しているが、SVP170は、図2に示す管理端末31に接続されている。管理端末31は、例えば、パーソナルコンピュータや携帯情報端末等のように構成される。管理端末31は、SVP170を介して、記憶制御装置100の内部状態を把握することができる。また、ユーザは、管理端末31からSVP170を介して、記憶制御装置100の設定を変更することもできる。
LANインターフェース180は、管理用ネットワークCN13に接続されている。SVP170は、LANインターフェース180を介して、管理サーバ20やホスト10にも接続可能である。従って、管理サーバ20やホスト10は、管理用ネットワークCN13を介して、記憶制御装置100の情報を取得したり、記憶制御装置100を管理可能である。ホスト10から記憶制御装置100を管理する場合は、管理用プログラムを予めホスト10に実装しておく。
記憶部110は、例えば、アレイ状に接続された複数のディスクドライブ111を備えている。ディスクドライブ111は、「記憶デバイス」に該当する。ディスクドライブ111は、例えば、ハードディスクドライブ、半導体メモリドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープドライブ等のような種々の記憶デバイスとして構成することができる。
ハードディスクドライブの場合、例えば、FC(Fibre Channel)ディスク、SATA(Serial AT Attachment)ディスク、SCSI(Small Computer System Interface)ディスクのように、種々の種類のハードディスクドライブを利用可能である。また、記憶部110内に、異なる種類の記憶デバイスを混在させることもできる。
例えば、4台や8台等のような所定数のディスクドライブ111によって、一つのグループが構成される。このグループをRAIDグループ(パリティグループ)112と呼ぶ。RAIDグループ112に参加する各ディスクドライブ111は、それぞれ物理的な記憶領域を提供し、これら物理的な記憶領域の集合体が形成される。従って、RAIDグループ112は、物理的記憶デバイスと呼ぶことができる。RAIDレベルによっても相違するが、グループ112に参加する各ディスクドライブ111のうち、一つまたは複数のディスクドライブ111は、パリティデータの格納に使用される。なお、後述のように、RAIDグループ112には、中間記憶デバイス112Vが設定される。
RAIDグループ112の物理的記憶領域には、一つまたは複数の論理ボリューム113を設定することができる。論理ボリューム113は、CHA120の通信ポート121に割り当てられ、ホスト10からのアクセス対象となる。論理ボリューム113は、論理的記憶デバイスと呼ぶことができる。
概念的には、記憶部110内には、点線で示すように、仮想的な論理ボリューム(仮想ボリューム)113も設けられる。但し、仮想ボリューム113の物理的実体は、記憶部110内に存在せず、接続先記憶制御装置200,300内に存在する。接続元記憶制御装置100は、上述の外部接続機能によって、接続先記憶制御装置200,300の記憶資源を、自分自身の記憶資源であるかのように取り込むことができる。従って、記憶制御装置100は、必ずしもディスクドライブ111を備えている必要はなく、ネットワークスイッチのように構成することもできる。
次に、第1接続先記憶制御装置200の構成を説明する。この接続先記憶制御装置200は、例えば、コントローラ201と、記憶部210とを備えるディスクアレイサブシステムとして構成することができる。
コントローラ201は、接続先記憶制御装置200の動作を制御するもので、上述したコントローラ101と同様に、CHA機能、DKA機能、キャッシュメモリ、共有メモリ等を備えている。コントローラ201は、通信ポート221を介して、コントローラ101の通信ポート121に接続されている。コントローラ201とコントローラ101との間には、通信パスP1が設定されている。また、コントローラ201は、通信ポート231を介して、記憶部210に接続されている。
記憶部210は、上述した記憶部110と同様に、複数のディスクドライブ211を備えている。そして、複数のディスクドライブ211によってRAIDグループ212が構成されている。このRAIDグループ212には、論理ボリューム(実ボリューム)213が設けられる。
第2接続先記憶制御装置300は、第1接続先記憶制御装置200と同様に、コントローラ301と、記憶部310とを備えるディスクアレイサブシステムとして構成することができる。
コントローラ301は、接続先記憶制御装置300の動作を制御する。コントローラ301は、コントローラ201と同様に、CHA機能、DKA機能、キャッシュメモリ、共有メモリ等を備えている。コントローラ301は、通信ポート321を介して、コントローラ101の通信ポート121に接続されている。コントローラ301とコントローラ101との間には、通信パスP2が設定されている。また、コントローラ301は、通信ポート321を介して、コントローラ201の通信ポート221と接続されている。コントローラ301とコントローラ201との間には、通信パスP3が設定されている。
記憶部310は、記憶部210と同様に、複数のディスクドライブ311と、RAIDグループ312及び論理ボリューム(実ボリューム)313を備えている。
なお、紙面の都合上、接続先記憶制御装置を2台のみ示しているが、これに限らず、3台以上の接続先記憶制御装置を設けることもできる。また、接続先記憶制御装置にも外部接続機能を搭載することにより、ある接続先記憶制御装置を接続元として、別の接続先記憶制御装置に接続させることもできる。
ここで、先に、CHA120及びDKA130による通常のリードコマンド処理及びライトコマンド処理を説明する。CHA120は、ホスト10から発行されたリードコマンドを受信すると、このリードコマンドを共有メモリ150に記憶させる。DKA130は、随時、共有メモリ150を参照している。
DKA130は、未処理のリードコマンドを発見すると、このリードコマンドに含まれる読出し先アドレスをディスクドライブ111の物理的なアドレスに変換し、所定のディスクドライブ111からデータを読み出す。DKA130は、ディスクドライブ111から読出したデータを、キャッシュメモリ140に記憶させる。CHA120は、キャッシュメモリ140に記憶されたデータを読み出して、ホスト10に送信する。
CHA120がホスト10から発行されたライトコマンドを受信した場合、CHA120は、ライトデータを記憶させるための領域をキャッシュメモリ140に確保し、ライトコマンドを共有メモリ150に記憶させる。次に、CHA120は、ホスト10から受信したライトデータをキャッシュメモリ140に記憶させる。
DKA130は、共有メモリ150に記憶されたライトコマンドを確認し、キャッシュメモリ140からライトデータを読み出す。DKA130は、上述のアドレス変換を行った後、所定のディスクドライブ111にライトデータを記憶させる。
なお、ライトデータをキャッシュメモリ140に記憶させた時点で、CHA120は、ライトコマンドの処理が完了した旨をホスト10に通知することができる(非同期処理)。あるいは、DKA130がライトデータをディスクドライブ111に書き込んだことを確認した時点で、CHA120は、ホスト10にライトコマンドの処理完了を通知することもできる(同期処理)。
以上が、記憶制御装置100の実ボリュームに対するデータ入出力処理である。次に、仮想ボリュームに対するデータ入出力処理を説明する。ここでは、接続元記憶制御装置100内の仮想ボリューム113が、第1接続先記憶制御装置200内の実ボリューム213に対応付けられているものとして説明する。
まず、仮想ボリュームに対するリードコマンドが発行された場合、CHA120は、リードコマンドのボリューム識別子やアドレスを、実ボリューム213のものに変換し、リードコマンドを接続先記憶制御装置200に送信する。接続先記憶制御装置200は、このリードコマンドに従って実ボリューム213からデータを読出し、読出したデータを接続元記憶制御装置100に送信する。CHA120は、接続先記憶制御装置200からデータを受信すると、このデータをキャッシュメモリ140に記憶させる。そして、CHA120は、キャッシュメモリ140に記憶されたデータをホスト10に送信する。
仮想ボリュームに対するライトコマンドが発行された場合、CHA120は、ライトコマンドのボリューム識別子やアドレスを、実ボリューム213のものに変換する。また、CHA120は、ホスト10から受信したライトデータをキャッシュメモリ140に記憶させる。CHA120は、ライトコマンド及びライトデータを、接続先記憶制御装置200に送信する。接続先記憶制御装置200は、接続元記憶制御装置100から受信したライトデータを実ボリューム213に記憶させる。
図4は、ストレージシステムの記憶構成を模式的に示す説明図である。接続元記憶制御装置100は、複数の論理ボリューム113を備えることができる。各論理ボリュームは、実ボリュームと仮想ボリュームとに大別される。図4中では、実線で示す実ボリュームを「R-LU」と、点線で示す仮想ボリュームを「V-LU」として区別している。
各論理ボリューム113は、実ボリュームであるか仮想ボリュームであるかを問わずに、中間記憶デバイス(VDEV)112Vに接続されている。
この中間記憶デバイス112Vは、RAIDグループ112に対応する。但し、物理的実体を伴わない中間記憶デバイス112Vは、仮想的な中間記憶デバイスであり、キャッシュメモリ140上に存在する。物理的実体を伴わない中間記憶デバイスとは、接続元記憶制御装置100内のディスクドライブ111に結びつけられていないデバイスのことであり、即ち、仮想ボリュームが設けられるデバイスを意味する。
これらの仮想的な中間記憶デバイス(VDEV#12,VDEV#13,VDEV#14)112Vは、最終的に、いずれかの実ボリュームに対応付けられる。図4中に「VDEV#12,VEDV#13」として示す中間記憶デバイス112Vは、第1接続先記憶制御装置200の実ボリューム(R-LU#21)213,第1接続先記憶制御装置200の実ボリューム(R-LU#22)213及び第2接続先記憶制御装置300の実ボリューム(R-LU#31)313に、それぞれ対応付けられている。
なお、「VDEV#14」として示す中間記憶デバイス112Vは、第1接続先記憶制御装置200内の仮想ボリューム(V-LU#23)213を介して、第2接続先記憶制御装置300内の実ボリューム(R-LU#32)に接続されている。このように、ホスト10に提供される仮想ボリュームを、別の仮想ボリュームを経由して、実ボリュームに対応付けることも可能である。
各接続先記憶制御装置200,300も、接続元記憶制御装置100の記憶階層と同様に、物理的記憶層(ディスクドライブ211,311)と、物理的記憶層を仮想化してなる中間記憶層(212V,312V)と、中間記憶層の記憶領域を切り取るかのようにして設けられる論理的記憶層(213,313)を備えることができる。
なお、図4に示す構成は、説明のための例示であり、これに限定されない。例えば、1つのディスクドライブに中間記憶デバイスを設けることもできる。あるいは、1つの中間記憶デバイスから複数の論理ボリュームを構成することもできるし、または、複数の中間記憶デバイスから1つの論理ボリュームを構成することもできる。
図5は、ストレージシステム内の論理ボリュームを管理するためのボリューム管理テーブルT1を示す説明図である。このボリューム管理テーブルT1は、接続元記憶制御装置100の共有メモリ150に記憶させることができる。また、テーブルT1の全部または一部を、例えば、各CHA120内のローカルメモリにコピーさせることもできる。さらに、このテーブルT1を、接続先記憶制御装置200,300にもコピーし、全記憶制御装置が共有することもできる。
ボリューム管理テーブルT1は、例えば、ボリューム番号と、ボリュームサイズと、中間記憶デバイス番号と、中間記憶デバイスのサイズと、デバイス種別と、装置番号と、アドレス情報とを対応付けて管理している。なお、以下の説明でも同様であるが、各図中のボリューム番号は、説明の便宜のために各図毎にそれぞれ設定された値であって、互いに関連しない。
ボリューム番号(図中、番号を「#」と略記)とは、ストレージシステム内において、各論理ボリュームを一意に特定するための識別情報である。ボリュームサイズとは、論理ボリュームの記憶容量である。中間記憶デバイス番号とは、論理ボリュームが設けられている中間記憶デバイス(VDEV)を識別するための情報である。中間記憶デバイスのサイズとは、中間記憶デバイスの記憶容量である。デバイス種別とは、中間記憶デバイスに関連づけられている物理的実体(ディスクドライブ)の種別を示す情報である。装置番号とは、論理ボリュームのデータ格納先(即ち、ディスクドライブや実ボリューム)を有する記憶制御装置を識別するための情報である。アドレス情報とは、論理ボリュームのデータ格納先にアクセスするための情報である。
接続元記憶制御装置100内の実ボリュームは、接続元記憶制御装置100内のディスクドライブ111に対応付けられている。従って、記憶制御装置100内の実ボリュームには、対応付けられているディスクドライブ111を識別するためのドライブ番号リストが、アドレス情報に設定される。これに対し、接続元記憶制御装置100内の仮想ボリュームは、接続先記憶制御装置200,300内の実ボリューム213,313に対応付けられている。従って、記憶制御装置100内の仮想ボリュームには、対応付けられている外部の実ボリュームにアクセスするための通信パス情報が、アドレス情報として設定されている。
ここで、接続元記憶制御装置100の外部に存在する実ボリューム、即ち、接続先記憶制御装置200,300が有する実ボリューム213,313を外部ボリュームと呼び、接続元記憶制御装置100内に存在する実ボリューム113を内部ボリュームと呼ぶことができる。接続元記憶制御装置100内の仮想ボリュームに設定されるアドレス情報(通信パス情報)には、例えば、外部ボリュームのLUN(Logical Unit Number)やWWN等を含めることができる。
ボリューム管理テーブルT1の構成は、図5に示すものに限定されない。接続元記憶制御装置100内の各論理ボリューム113と、これら各論理ボリューム113に対応するディスクドライブ111または外部ボリューム213,313との関係を特定できる情報が含まれていればよい。
また、ボリューム管理テーブルT1とは別に、論理ボリュームの各種状態を管理するためのボリュームステータス管理テーブル等を用意することもできる。このような管理テーブルでは、コピーペアを形成するボリュームの情報や空き容量等を管理する。
図6は、各記憶制御装置100,200,300においてそれぞれ利用可能な機能を管理するための機能管理テーブルT2を示す説明図である。この管理テーブルT2は、例えば、接続元記憶制御装置100の共有メモリ150に記憶させることができる。
機能管理テーブルT2は、例えば、装置番号毎に、1つまたは複数のサポート機能を対応付けることにより構成することができる。サポート機能とは、その記憶制御装置において利用可能な機能を意味する。管理テーブルT2に登録されたサポート機能は、その記憶制御装置が有する全ての機能に等しい場合もあるし、その記憶制御装置の有する一部の機能のみがサポート機能として管理テーブルT2に登録される場合もある。
後述のように、ユーザは、管理サーバ20等を介して、各記憶制御装置100,200,300で実行可能な機能(サポート機能)を選択できる。即ち、各記憶制御装置の有する全機能のうち、ユーザは、任意の機能を選択し、この選択した機能のみを各記憶制御装置内で実行可能な機能として、管理テーブルT2に登録させることができる。
図7は、ホスト10から実行を指示された機能の実行先を管理するための機能実行先管理テーブルT3を示す説明図である。この管理テーブルT3は、テーブルT1,T2と同様に、接続元記憶制御装置100の共有メモリ150に記憶させることができる。
機能実行先管理テーブルT3は、各機能毎の実行先を個別に管理するための個別機能実行先管理テーブルT31〜T33を備えて構成されている。例えば、テーブルT31は、ローカルボリュームコピー機能をいずれの記憶制御装置で実行させるか等を管理する。また、テーブルT32は、暗号化機能をいずれの記憶制御装置で実行させるか等を管理する。テーブルT33は、圧縮機能をいずれの記憶制御装置で実行させるか等を管理する。
機能実行先管理テーブルT31〜T33は、例えば、実行される機能が適用されるボリュームを特定するための情報(ボリューム番号)と、実行先の記憶制御装置を特定するための情報(装置番号)と、機能を実行させるための条件(実行条件)とを対応付けることにより構成されている。実行条件については、さらに後述する。
ローカルボリュームコピー機能の実行先を管理するテーブルT31に着目すると、このテーブルT31は、コピー元ボリュームの番号と、コピー先ボリュームの番号と、実行先の装置番号及び実行条件とを対応付けて管理している。ここで、テーブルT31の最終行に示すように、ローカルボリュームコピーは、リモートコピーによって実現される場合がある。例えば、コピー元ボリューム及びコピー先ボリュームの実体(実ボリューム)が、それぞれ接続先記憶制御装置200,300内に分散している場合、各接続先記憶制御装置200,300間のリモートコピー機能によって、仮想ボリューム間のコピーが実現される。
暗号化機能の実行先を管理するテーブルT32及び圧縮機能の実行先を管理するテーブルT33も、機能の適用対象となるボリュームを特定する情報と、機能を実行する記憶制御装置を特定する情報と、実行条件とを含んで構成される。
実行条件について説明する。上述の通り、実行条件とは、その機能を実行させるための起動条件である。実行条件は、例えば、「無し」、「実行依頼元の記憶制御装置(接続元記憶制御装置)が所定の閾値以上の負荷を有する場合」、「実行依頼先の記憶制御装置(接続先記憶制御装置)が所定の閾値未満の負荷である場合」、「実行依頼元の記憶制御装置が所定の閾値以上の負荷を有し、かつ、実行依頼先の記憶制御装置が他の所定の閾値未満の負荷を有する場合」等のように、設定可能である。
実行条件に「無し」が設定されている機能は、実行先装置として登録されている記憶制御装置において、無条件に実行される。実行条件に閾値と現在負荷との関係が登録されている機能は、その条件を満足した場合にのみ、実行先装置として登録されている記憶制御装置において実行される。
ここで、負荷以外の条件で実行条件を定義することもできる。例えば、「機能の実行を要求された時間が、予め指定された時間帯に入っている場合にのみ、実行を許可する。」、「機能の実行を要求するホストが、予め指定されたホストである場合には、実行を許可する。」等のように、実行条件を設定してもよい。または、時間帯や要求元のホスト番号、負荷状態を組み合わせて、実行条件を設定してもよい。
なお、機能実行先管理テーブルT3の構成は、図7に示すものに限定されない。例えば、図7に示すように論理ボリューム単位で管理することもできるし、あるいは、ボリューム内のブロック単位で機能の実行先を管理してもよい。あるいは、複数のボリュームをグループ化して管理し、グループ単位で機能の実行先を管理することもできる。さらに、記憶制御装置単位で機能の実行先を管理してもよい。また、機能毎に、それぞれ異なる管理単位(ボリューム単位、ブロック単位、グループ単位等)を設定する構成でもよい。
図8は、ユーザに提供されるユーザインターフェースの一例を示す。図8に示す画面G1,G2は、例えば、管理サーバ20や管理端末31の画面に表示される。まず、図8の上側には、各記憶制御装置で利用する機能をユーザが選択するための画面G1が示されている。
この画面G1は、例えば、装置番号指定部G11と、機能表示部G12と、利用可否設定部G13と、実行条件設定部G14と、登録ボタンB11及び取消ボタンB12を備えることができる。
装置番号指定部G11は、記憶制御装置100,200,300のいずれかを選択するためのものである。機能表示部G12は、選択された記憶制御装置の有する全ての機能の名称を一覧表示させるものである。利用可否設定部G13は、表示された機能名の中から、利用したい機能(実行を予定する機能)を選択するためのものである。実行条件設定部G14は、選択された機能を実行させるための条件を設定するためのものである。なお、図中では、利用可否設定部G13の取りうる値を示すために、第1接続先記憶制御装置200は、ローカルボリュームコピー機能を利用しないかのように、示している。また、紙面の都合上、実行条件設定部G14の表示内容を簡略化して示してある。
図8の下側には、ユーザにより選択された機能を実行させる記憶制御装置を設定するための画面G2が示されている。この画面G3は、例えば、機能名選択部G21と、対象ボリューム表示部G22と、実行先装置番号設定部G23と、登録ボタンB21及び取消ボタンB22を備えることができる。
機能名選択部G21は、画面G1で登録された機能からいずれかの機能を選択するためのものである。対象ボリューム表示部G22は、選択された機能が適用されるボリューム番号を表示するものである。実行先装置番号設定部G23は、対象ボリュームについて機能を実行する場合に、どの記憶制御装置で実行させるかを設定するものである。
なお、図8に示すユーザインターフェースは、一例であって、これに限定されない。画面G1と画面G2とを1つの画面に統合したり、各画面G1,G2をそれぞれ複数の画面から構成することもできる。また、各画面G1,G2には、図8に示す以外の要素(表示項目、設定項目等)を含めることもできる。
次に、図9,図10に基づいて、機能の実行先を適切な記憶制御装置に割り当てるための動作を説明する。図9は、機能の実行先を割り当てるためのフローチャートを示し、図10は、図9中の分担処理(S13)の詳細を示すフローチャートである。以下の説明では、ステップを「S」と略記する。また、以下の説明でも同様であるが、各フローチャートは、発明の理解と実施に必要な限りにおいて作成されており、実際のコンピュータプログラムとは相違する。本処理は、接続元記憶制御装置100のコントローラ101によって実行される。
コントローラ101は、ホスト10から所定の機能の実行を指示される(S11)。所定の機能とは、サポート機能として登録されている機能である。ホスト10は、対象のボリュームや機能を特定するための情報を含んだ所定のコマンドを発行することにより、所定の機能の実行を要求することができる。
ここで、ホスト10は、I/O用の通信ネットワークCN11を介して、コントローラ101に所定のコマンドを送信することにより、所定の機能の実行を要求できる。例えば、ホスト10から発行されたコマンドをコントローラ101が直接的に受信して処理することもできるし、あるいは、コマンドを受け付けるための専用の論理ボリューム(コマンドデバイスとも呼ぶ)にコマンドを記憶させてから処理することもできる。さらに、ホスト10は、管理用の通信ネットワークCN13を介して、コントローラ101に所定の機能の実行を要求することもできる。
コントローラ101は、ホスト10から所定機能の実行を要求されると、この所定機能が接続元記憶制御装置100で実行可能であるか否かを判定する(S12)。接続元記憶制御装置100が所定機能を実行可能な場合(S12:YES)、図10に示す分担処理が実行される(S13)。この分担処理は、接続元記憶制御装置100と各接続先記憶制御装置200,300との間で、ホスト10から要求された所定の機能の実行を分担するためのものである。分担処理については、図10と共に後述する。
所定の機能を接続元記憶制御装置100で実行できない場合(S12:NO)、コントローラ101は、所定の機能の適用対象となっているボリューム113に対応する外部の実ボリューム212,313を検索する(S14)。この検索は、ボリューム管理テーブルT1を参照することにより行われる。
コントローラ101は、所定の機能の実行対象となっているボリューム113に、外部の実ボリューム213,313が対応付けられているか否かを判定する(S15)。対象となっているボリューム113に外部の実ボリュームが対応付けられていない場合(S15:NO)、コントローラ101は、ホスト10にエラーを通知する(S16)。例えば、所定の機能の適用対象とされたボリュームが、記憶制御装置100内の実ボリュームであり、かつ、その所定の機能を記憶制御装置100で実行できない場合である。このような場合、コントローラ101は、要求された所定の機能を実施不可能である旨を、ホスト10に通知する。
これに対し、所定の機能の適用対象とされたボリューム113が仮想ボリュームであって、外部の実ボリューム213,313のいずれかに対応付けられている場合(S15:YES)、コントローラ101は、対応付けられている実ボリュームを有する接続先記憶制御装置を特定する(S17)。この特定には、ボリューム管理テーブルT1または機能実行先管理テーブルT3を用いることができる。
次に、コントローラ101は、機能管理テーブルT2を参照し、その特定された接続先記憶制御装置(200または300)が、所定の機能を実行可能であるか否かを判断する(S18)。その特定された接続先記憶制御装置が、所定の機能を実行できない場合(S18:NO)、コントローラ101は、ホスト10にエラーを通知する(S24)。
特定された接続先記憶制御装置が所定の機能を実行可能である場合(S18:YES)、コントローラ101は、その特定された接続先記憶制御装置の状況を取得する(S19)。接続先記憶制御装置の状況を取得する方法としては、種々の方法を挙げることができる。
例えば、コントローラ101から接続先記憶制御装置のコントローラに向けて、負荷等の状況を問い合わせるための問合せコマンドを発行し、このコマンドへの応答によって、接続先記憶制御装置の状況を検出可能である。あるいは、各接続先記憶制御装置200,300が、定期的にまたは不定期に、自身の状況を接続元記憶制御装置100に通知する構成でもよい。または、各記憶制御装置100,200,300が、自身の状況をそれぞれ管理サーバ20に通知し、管理サーバ20で各記憶制御装置の状況を管理する構成でもよい。この場合、コントローラ101は、管理サーバ20に問い合わせることにより、実行先として登録されている接続先記憶制御装置の状況を取得することができる。
次に、コントローラ101は、ホスト10から実行を要求された所定の機能に設定されている実行条件を満足するか否かを判定する(S20)。即ち、コントローラ101は、実行先として登録されている接続先記憶制御装置の状況が、実行条件を満たすか否かを判定する。実行条件を満たさない場合(S20:NO)、所定の機能を実行させることができないため、コントローラ101は、ホスト10にエラーを通知する(S24)。
実行条件を満たす場合(S20:YES)、コントローラ101は、実行先として登録されている接続先記憶制御装置に、所定の機能の実行を指示する(S21)。コントローラ101は、ホスト10の期待する結果を得られるように、ホスト10からの指示内容を適宜変換することにより、接続先記憶制御装置に送信する。
そして、コントローラ101は、所定の機能の実行を指示した接続先記憶制御装置から処理完了通知が送信されるのを待つ(S22)。例えば、予め設定された所定時間内に、接続先記憶制御装置からの処理完了通知が届かない場合(S22:NO)、コントローラ101は、所定の機能が正常に実行されなかったものと判断し、ホスト10にエラーを通知することができる(S24)。
所定の機能の実行を依頼した接続先記憶制御装置から正常に処理を完了した旨の通知を受信した場合(S22:YES)、コントローラ101は、ホスト10に所定の機能の実行が正常に完了した旨を通知する(S23)。
なお、接続先記憶制御装置に所定の機能の実行を依頼した時点(S21)で、この接続先記憶制御装置から処理完了通知を受信するのを待たずに、ホスト10に処理完了を通知する構成でもよい。
図10を参照して、図9中のS13に示す分担処理を説明する。コントローラ101は、所定の機能の適用対象となっているボリュームに対応する外部の実ボリュームを検索する(S1300)。コントローラ101は、適用対象のボリュームに外部の実ボリュームが対応付けられているか否かを判定する(S1301)。
適用対象ボリュームに外部の実ボリュームが対応付けられていない場合(S1301:NO)、即ち、適用対象ボリュームが接続元記憶制御装置100内の実ボリュームである場合、コントローラ101は、所定の機能を実行する(S1302)。即ち、ホスト10から要求された所定の機能は、接続元記憶制御装置100内で、対象の実ボリュームに対して実施される。そして、コントローラ101は、正常に処理を完了した旨をホスト10に通知する(S1303)。
これに対し、所定の機能の適用対象となっているボリュームが仮想ボリュームの場合(S1301:YES)、コントローラ101は、その仮想ボリュームに対応する外部の実ボリュームを有する接続先記憶制御装置を特定する(S1304)。
そして、コントローラ101は、図9中のS18〜S23で述べたと同様のステップをそれぞれ実行する。即ち、コントローラ101は、特定された接続先記憶制御装置が所定の機能を実行可能であると判断した場合(S1305:YES)、その接続先記憶制御装置の状況を取得する(S1306)。
コントローラ101は、ホスト10から実行を要求された所定の機能に予め設定されている実行条件と接続先記憶制御装置の状況とを比較し、実行条件が満たされているか否かを判定する(S1307)。実行条件を満足する場合(S1307:YES)、コントローラ101は、その接続先記憶制御装置に、所定の機能の実行を指示する(S1308)。
コントローラ101は、接続先記憶制御装置からの処理完了通知を受信すると(S1309:YES)、ホスト10に、所定の機能が対象ボリュームに正常に適用された旨を通知する(S1310)。
なお、図9で述べたと同様に、特定された接続先記憶制御装置が所定の機能を備えていない場合(S1305:NO)、所定の機能の実行条件を満たさない場合(S1307:NO)、所定の機能の実行を依頼した接続先記憶制御装置から処理完了通知を受信できなかった場合(S1309:NO)のいずれかの場合には、コントローラ101は、ホスト10にエラーを通知する(S1311)。
なお、所定の機能の実行指示は、ホスト10のみに限らず、管理サーバ20や管理端末31からであってもよい。
本実施例は、上述のように構成されるので、以下の効果を奏する。本実施例では、接続元記憶制御装置100が備えていない機能であっても、各接続先記憶制御装置200,300が備えている場合には、実行可能な接続先記憶制御装置に、その機能の実行を依頼する構成とした。従って、各接続先記憶制御装置200,300でのみ実行可能な機能であっても、接続元記憶制御装置100は、ホスト10からの依頼を受け付けて処理させることができる。これにより、ホスト10から見た場合、接続元記憶制御装置100を高機能化させることができる。換言すれば、ストレージシステムの処理受付窓口となる接続元記憶制御装置100の機能を、仮想的に拡張することができる。
従って、例えば、それぞれ独自の特徴を備えた接続先記憶制御装置200,300が混在するストレージシステムにおいて、窓口となる接続元記憶制御装置100が一部または全ての機能を実装していない場合でも、それら特徴的な機能の全てを実行させることができ、使い勝手が向上する。
本実施例では、ホスト10から実行を要求された所定の機能の内容と実行先として登録された接続先記憶制御装置200,300の状況とに基づいて、実行先として登録されている接続先記憶制御装置に所定の機能の実行を依頼するか否かを判断する。即ち、実行先として登録されている接続先記憶制御装置が実行条件を満たす場合に、所定の機能の実行を指示する。従って、接続先記憶制御装置の負荷が高くなりすぎるのを抑制することができ、適切な負荷分散を行うことができる。
本実施例では、各記憶制御装置毎に利用可能な機能をそれぞれ予め登録し、さらに、利用可能な機能として登録された機能毎に、その実行先を予め設定可能な構成とした。従って、機能単位で、負荷を分散させることができ、使い勝手が向上する。また、記憶制御装置毎に利用可能な機能を設定できるため、各記憶制御装置100,200,300間で役割を分担させることができる。
次に、図11〜図14に基づいて、第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に該当する。以下の各実施例では、上述した構成と重複する構成の説明を割愛し、特徴部分を中心に説明する。本実施例では、圧縮機能(圧縮処理及び伸張処理を含む)が、各記憶制御装置100,200,300でそれぞれ利用可能な場合を説明する。
図11は、本実施例によるストレージシステムの全体構成を示す説明図である。各記憶制御装置100,200,300は、圧縮部及び伸張部をそれぞれ備えている。接続元記憶制御装置100は、圧縮部102及び伸張部103を備える。同様に、第1接続先記憶制御装置200は、圧縮部202及び伸張部203を備える。第2接続先記憶制御装置300は、圧縮部302及び伸張部303を備える。
圧縮部102,202,302は、入力されたデータを所定の圧縮アルゴリズムに従って圧縮し、圧縮データを出力する。伸張部103,203,303は、入力された圧縮データを、この圧縮データに使用された圧縮アルゴリズムに基づいて、圧縮前の状態に復元し、出力する。
これら圧縮部102,202,302及び伸張部103,203,303は、例えば、ASIC(Application Specific Integrated Circuit)のようなハードウェア回路として構成することができる。あるいは、圧縮部102,202,302及び伸張部103,203,303を、コンピュータプログラムとして構成し、このコンピュータプログラムをコントローラ内のCPUが読み込んで実行するようにしてもよい。さらには、例えば、圧縮部をハードウェア回路として構成し、伸張部をコンピュータプログラムとして構成することも可能である。
図12は、ストレージシステム内で圧縮機能を実行するために使用される各種管理情報の一例を示す説明図である。図12の上側には、各記憶制御装置100,200,300によって保持されている管理情報が示されており、図12の下側には、管理情報の詳細が示されている。なお、上述の実施例で述べた各テーブルT1〜T3も接続元記憶制御装置100は備えているが、図12では図示を省略している。
接続元記憶制御装置100は、圧縮機能設定管理テーブルT4と、圧縮状態管理テーブルT5及び圧縮管理情報T6を保持している。各接続先記憶制御装置200,300は、圧縮機能設定管理テーブルT4及び圧縮管理情報T6を、それぞれ保持可能である。
圧縮機能設定管理テーブルT4は、適用対象の各ボリューム毎に、圧縮機能の動作モードをそれぞれ設定するためのテーブルである。このテーブルT4は、例えば、圧縮機能の適用対象となるボリューム番号と、圧縮処理を行わせるか否かを設定するための圧縮動作設定値と、伸張処理を行わせるか否かを設定するための伸張動作設定値と、使用する圧縮アルゴリズムとを、対応付けることにより構成される。
圧縮動作設定値には、「圧縮」または「非圧縮」のいずれかの値が設定される。「圧縮」が設定された場合、その圧縮部は、圧縮処理を行う。この場合、圧縮部は、入力されたデータを圧縮して出力する。即ち、記憶制御装置は、受信したデータを圧縮してボリュームに記憶させる。「非圧縮」が設定された場合、その圧縮部は、圧縮処理を行わない。この場合、入力されたデータは、何ら加工されることなく、そのまま出力される。即ち、記憶制御装置は、受信データを圧縮することなく、そのままボリュームに記憶させる。
伸張動作設定値には、「伸張」または「非伸張」のいずれかの値が設定される。「伸張」が設定された場合、その伸張部は、伸張処理を行う。この場合、記憶制御装置は、ボリュームから読出したデータを、伸張してから転送する。「非伸張」が設定された場合、その伸張部は、伸張処理を行わない。この場合、入力されたデータは、何ら加工されることなく、そのまま出力される。即ち、記憶制御装置は、ボリュームから読み出したデータを、そのまま転送する。
圧縮アルゴリズムには、例えば、ランレングス法やハフマン法等の公知の種々の圧縮アルゴリズムを用いることができる。
圧縮状態管理テーブルT5は、各ボリューム毎に圧縮状態を管理するものである。このテーブルT5は、例えば、ボリューム番号と、圧縮状態と、圧縮アルゴリズムとを対応付けることにより構成される。圧縮状態には、「圧縮」または「非圧縮」のいずれかの状態が設定される。「圧縮」に設定されたボリュームは、圧縮データを記憶していることを意味する。「非圧縮」に設定されたボリュームは、圧縮されていないデータを記憶していることを意味する。
圧縮管理情報T6は、圧縮処理によって変化する種々の情報を管理する。圧縮管理情報T6には、例えば、ボリューム番号と、圧縮前のアドレスと、圧縮後のアドレスと、圧縮アルゴリズムとを対応付けておくことができる。記憶制御装置(コントローラ)は、圧縮管理情報T6を参照することにより、圧縮されたデータに対するリード要求やライト要求に対応することができる。
本実施例では、圧縮管理情報T6を各記憶制御装置100,200,300が共有する構成である。従って、圧縮処理または伸張処理を実行させる記憶制御装置を切り替えることができる。
次に、圧縮処理及び伸張処理の動作について説明する。ここでは、接続元記憶制御装置100のみが圧縮処理及び伸張処理を実行する場合を例に挙げて説明する。図13は、圧縮処理を示すフローチャートである。このフローチャートでは、仮想ボリュームに書き込まれるライトデータを接続元記憶制御装置100(コントローラ201)が圧縮し、この圧縮されたデータを接続先記憶制御装置(ここでは、第1接続先記憶制御装置200とする)の実ボリューム213に記憶させる。
まず、コントローラ101は、接続先記憶制御装置200の圧縮機能の動作モードを「非圧縮」及び「非伸張」に設定させる(S31,S32)。即ち、コントローラ201において、データ圧縮機能を停止させる。
この状態で、コントローラ101は、ホスト10からのライトデータを受信すると(S33)、ライトデータをキャッシュメモリ140に記憶させ(S34)、ホスト10にライトコマンドの処理を完了した旨を通知する(S35)。上述のように、ライトコマンドの処理方法としては、同期式及び非同期式が知られている。従って、接続先記憶制御装置200でのライトデータの記憶を確認してから、ホスト10にライトコマンドの処理完了を通知する構成でもよい。
コントローラ101は、接続先記憶制御装置200に向けて、データ格納先の実ボリューム213を明示し、ライトコマンドを発行する(S36)。接続先記憶制御装置200のコントローラ201は、ライトコマンドを受信すると、ライトデータを記憶するためのキャッシュ領域を確保する(S37)。
コントローラ101は、圧縮部102によってライトデータを圧縮し(S38)、この圧縮したライトデータをコントローラ201に送信する(S39)。コントローラ201は、圧縮されたライトデータを受信し(S40)、この圧縮されたライトデータをキャッシュメモリまたは実ボリューム213に記憶させる(S41)。
ここで、接続先記憶制御装置200は、圧縮処理の作動が停止されているため、コントローラ201は、コントローラ101から受信した圧縮済みのライトデータを、そのままの状態で、実ボリューム213に記憶させる。なお、コントローラ201は、圧縮済みのライトデータをキャッシュメモリに記憶させた後、適当なタイミングを見計らって、実ボリューム213を構成する各ディスクドライブ211に記憶させることができる。
そして、コントローラ101は、圧縮管理情報T6のアドレス情報等を更新させる(S42)。コントローラ201も、圧縮管理情報T6を更新させる(S43)。例えば、コントローラ201は、圧縮データを受信する毎に、コントローラ101に更新後の圧縮管理情報T6を問合せることにより、コントローラ201内の圧縮管理情報T6を更新することができる。あるいは、コントローラ101からコントローラ201に、圧縮管理情報T6の更新部分を通知する構成でもよい。さらには、複数の記憶制御装置間で共用される管理情報用ボリュームを設け、この管理情報用ボリューム内に圧縮管理情報T6を記憶させる構成でもよい。また、管理サーバ20等で、圧縮管理情報T6を一元的に管理する構成でもよい。
図14は、伸張処理を示すフローチャートである。コントローラ101は、仮想ボリュームからのデータ読出しを要求するリードコマンドをホスト10から受信すると(S51)、接続先記憶制御装置200に別のリードコマンドを発行する(S52)。このリードコマンドには、圧縮データを実際に記憶している実ボリューム213へアクセスするための情報や読出し先アドレス等が含まれている。コントローラ101は、圧縮管理情報T6を参照することにより、ホスト10の要求するデータを実ボリューム213から読み出させることができる。
接続先記憶制御装置200のコントローラ201は、コントローラ101からのリードコマンドを受信すると(S53)、データを一時的に記憶させるためのキャッシュ領域を確保し、実ボリューム213に対応するディスクドライブ211から圧縮データを読み出す(S54)。コントローラ201は、圧縮データをキャッシュメモリに記憶させた後、この圧縮データをコントローラ101に送信する(S55)。ここで、接続先記憶制御装置200は、伸張処理の作動が停止されているため、圧縮データは、圧縮されたままの状態でディスクドライブ211から読み出され、コントローラ101に送信される。
コントローラ101は、コントローラ201から圧縮データを受信すると(S56)、この圧縮データを伸張させ(S57)、この伸張されたデータをホスト10に送信させる(S58)。
このように構成される本実施例でも、前記第1実施例と同様の作用効果を奏する。これに加えて、本実施例では、各記憶制御装置100,200,300にそれぞれ共通の圧縮機能を備えさせ、各圧縮機能の動作モードを適宜設定することができる。従って、ユーザは、どの記憶制御装置で圧縮または伸張させるかを自由に設定することができ、負荷の分散が可能となり、使い勝手が向上する。
図15〜図17に基づいて第3実施例を説明する。本実施例では、1つの接続先記憶制御装置のみが、圧縮機能を有する場合に、この圧縮機能を利用して、コピー元ボリュームのデータを圧縮し、コピー先ボリュームへ格納させる。
図15は、本実施例によるストレージシステムの全体構成を示す説明図である。説明の便宜上、以下の説明では、圧縮機能(圧縮部及び伸張部)を備える接続先装置は、第1接続先記憶制御装置200であるとする。そして、コピー元ボリュームV1aは、接続元記憶制御装置100の実ボリュームであるとし、コピー先ボリュームV1cは、第2接続先記憶制御装置300の実ボリュームV3cに対応付けられている仮想ボリュームであるとする。
図15に示すように、接続元記憶制御装置100は、コピー元ボリュームV1aと、圧縮用の中継ボリュームV1bと、コピー先ボリュームV1cを備える。コピー元ボリュームV1aは、記憶制御装置100内の実ボリュームである。中継ボリュームV1bは、仮想ボリュームであり、第1接続先記憶制御装置200の実ボリュームV2bに対応付けられている。コピー先ボリュームV1cは、仮想ボリュームであり、第2接続先記憶制御装置300の実ボリュームV3cに対応付けられている。そして、第1接続先記憶制御装置200のみが、圧縮部202及び伸張部203を備えている。
なお、以上の前提は説明の便宜のためのものであって、これに限定されない。例えば、コピー元ボリュームV1a及びコピー先V1cは、ホスト10によって認識されているボリュームであれば、どこに存在しても構わない。圧縮用ボリュームの実体(実ボリューム)が、圧縮機能を有する記憶制御装置200に存在していればよい。
図16は、コピー元ボリュームV1aからコピー先ボリュームV1cに、データを圧縮して書き込む場合の処理を示すフローチャートである。コントローラ101は、ホスト10または管理サーバ20あるいは管理端末31から、「コピー元ボリュームV1aのデータを、圧縮用の中継ボリュームV1bを経由して圧縮し、コピー先ボリュームV1cに記憶させる。」という内容の圧縮コピー要求を受信する(S61)。
コントローラ101は、コントローラ201の圧縮機能を「圧縮」及び「非伸張」に設定させる(S62,S63)。即ち、コントローラ201において、圧縮処理の作動が有効に設定され、伸張処理の作動が停止される。
コントローラ101は、圧縮機能を有するコントローラ201に圧縮コピー要求を発行し(S64)、コピー元ボリュームV1aからデータを読出す(S65)。そして、コントローラ101は、コピー元ボリュームV1aから読み出したデータをコントローラ201に送信する(S67)。
そして、コントローラ201は、コントローラ101からデータを受信すると(S68)、この受信データを圧縮し(S69)、中継用ボリュームV1bに対応する実ボリュームV2bに記憶させる(S70)。この実ボリュームV2bは、圧縮用の実ボリュームと呼ぶこともできる。
コントローラ201は、受信データの圧縮記憶が完了した旨をコントローラ101に通知する(S71)。コントローラ101は、この通知を受信すると、圧縮状態管理テーブルT5中の圧縮用ボリュームV1bの圧縮状態を「圧縮」に設定する(S72)。
コントローラ201は、第2接続先記憶制御装置300のコントローラ301に、ライトコマンドを発行する(S73)。コントローラ301は、コントローラ201からのライトコマンドを受信すると(S74)、ライトデータを受信するためのキャッシュ領域を確保する。
コントローラ201は、圧縮用の実ボリュームV2bに記憶されている圧縮データを読み出して(S75)、この圧縮データをコントローラ301に送信する(S76)。コントローラ301は、圧縮データを受信すると(S77)、この圧縮データをコピー先ボリュームV1cに対応する実ボリュームV3cに記憶させる(S78)。
コントローラ201は、コントローラ301へ圧縮データの送信を完了すると、圧縮データのコピーが完了した旨を、コントローラ101に通知する(S79)。コントローラ101は、この通知を受信すると、圧縮コピーが完了した旨をホスト10に通知し(S80)、圧縮状態管理テーブルT5中のコピー先ボリュームV1cの圧縮状態を「圧縮」に設定する(S81)。
そして、コントローラ201は、圧縮コピー処理の完了が反映された圧縮管理情報T6を、コントローラ101に送信する(S82)。コントローラ101は、自己の管理する圧縮管理情報T6を更新させる(S83)。
なお、圧縮管理情報T6は、接続元記憶制御装置100(コントローラ101)で管理する必要は必ずしもなく、コピー先ボリュームを有する第2接続先記憶制御装置300で管理する構成でもよい。また、圧縮機能を有する第1接続先記憶制御装置200で圧縮管理情報T6を管理する構成でもよいし、管理サーバ20で管理させてもよい。圧縮データに対するホスト10からのリードコマンドまたはライトコマンドを処理するためには、圧縮管理情報T6が必要となる。
図17は、伸張コピー処理を示すフローチャートである。この処理では、図16に示す圧縮コピー処理とは逆に、ボリュームV1cに記憶されている圧縮データを、伸張させて、ボリュームV1aにコピーさせる。従って、本処理では、コピー元ボリュームはV1cとなり、コピー先ボリュームはV1aとなる。
コントローラ101は、ホスト10または管理サーバ20等から「コピー元ボリュームV1cに記憶されているデータ(圧縮データ)を、伸張用の中継ボリュームV1bを経由して伸張し、コピー先ボリュームV1aに記憶させる。」という内容の伸張コピー要求を受信する(S91)。コントローラ101は、伸張コピー要求を受信すると、コントローラ201の圧縮機能を「非圧縮」及び「伸張」に設定させる(S92)。これにより、コントローラ201では、圧縮部202の作動が停止され、伸張部203の作動が許可される(S93)。
次に、コントローラ101は、圧縮管理情報T6をコントローラ201に送信し(S94)、コントローラ201に圧縮管理情報T6を記憶させる(S95)。圧縮管理情報T6を、第1接続先記憶制御装置200(コントローラ201)で管理している場合は、S94,S95を省略することができる。また、圧縮管理情報T6を、管理サーバ20等の外部システムで管理している場合は、当該システムへの問合せが必要となる。
このようにして伸張コピーを行うための準備が完了した後、コントローラ101は、伸張コピー要求をコントローラ201に発行する(S96)。コントローラ201は、伸張コピー要求を受信すると(S97)、第2接続先記憶制御装置300のコントローラ301に、リードコマンドを発行する(S98)。
コントローラ301は、コントローラ201からのリードコマンドを受信すると(S99)、コピー元ボリュームV3cから圧縮データを読出して(S100)、この圧縮データをコントローラ201に送信する(S101)。
コントローラ201は、コントローラ301から圧縮データを受信すると(S102)、この圧縮データを、圧縮することなくそのままの状態で、中継用の実ボリュームV2bに記憶させる(S103)。コントローラ201は、圧縮データの記憶が完了した旨を、コントローラ101に通知する(S104)。コントローラ101は、この通知を受信すると、圧縮状態管理テーブルT5中の中継ボリュームV1bの圧縮状態を「圧縮」に設定する(S105)。
次に、コントローラ201は、コントローラ101に向けてライトコマンドを発行する(S106)。コントローラ101は、コントローラ201からのライトコマンドを受信すると(S107)、コントローラ201から受信したデータを記憶するための領域をキャッシュメモリ140に確保する。なお、データ転送は、コントローラ101からコントローラ201に向けたリードコマンドによって実現してもよい。
コントローラ201は、中継用の実ボリュームV2bから圧縮データを読出し(S108)、この圧縮データを伸張させる(S109)。そして、コントローラ201は、伸張されたデータをコントローラ101に送信する(S110)。なお、圧縮データを読出しながら伸張してもよいし、圧縮データを全て読出した後で伸張してもよい。
コントローラ101は、コントローラ201から伸張済みのデータを受信すると(S111)、この伸張データをコピー先ボリュームV1aに記憶させる(S112)。そして、コントローラ101は、圧縮状態管理テーブルT5中のコピー先ボリュームV1aの圧縮状態を「非圧縮」に設定する(S113)。
コントローラ101は、伸張コピー処理が完了した旨をホスト10に通知し(S114)、圧縮管理情報T6を更新させる(S115)。なお、上記同様に、圧縮管理情報T6は、コントローラ201等で管理することもできる。
このように構成される本実施例も前記第1実施例と同様の作用効果を奏する。これに加えて、本実施例では、ストレージシステム内で1つの記憶制御装置200のみが圧縮機能を備える場合に、この圧縮機能を有効に利用して、ボリュームデータのコピーや移動を行うことができ、使い勝手が向上する。
また、複数の記憶制御装置がそれぞれ圧縮機能を備えている場合でも、例えば、記憶容量の少ない記憶制御装置200の圧縮機能のみを有効に設定し、1つの記憶制御装置に圧縮処理及び伸張処理を集約させることができる。これにより、空いている記憶容量の少ない記憶制御装置200の処理性能を有効に利用することができる。
さらに、圧縮機能を有する記憶制御装置200の空き記憶容量が少ない場合でも、圧縮データを他の記憶制御装置300の記憶領域に退避させることにより、圧縮機能を有する記憶制御装置200の空き記憶容量が圧迫されるのを防止することができる。
図18,図19に基づいて、第4実施例を説明する。本実施例では、接続元記憶制御装置100から、第1接続先記憶制御装置200を経由して、第2接続先記憶制御装置300に機能の実行を要求する。
図18は、本実施例によるストレージシステムの全体構成を示す説明図である。本実施例では、接続元記憶制御装置100内の仮想ボリュームV1a,V1bは、第1接続先記憶制御装置200内の仮想ボリュームV2a,V2bを介して、第2接続先記憶制御装置300内の実ボリュームV3a,V3bに対応付けられているものとする。そして、第2接続先記憶制御装置300は、ローカルボリュームコピー機能F21及びドライブ電源制御機能F22を備えているものとする。ドライブ電源制御機能F22とは、ディスクドライブ311の電源をオンオフさせたり、低消費電力モード(スタンバイモード)に移行させるための機能である。
図19は、本ストレージシステムの動作を示すフローチャートである。ホスト10は、仮想ボリュームV1a,V1b間のボリュームコピーまたは仮想ボリュームV1a,V1bを構成するディスクドライブ311の電源制御を指示する(S121)。以下の説明では、これらボリュームコピー機能F21及びドライブ電源制御機能F22を所定の機能と呼ぶ場合がある。
接続元記憶制御装置100のコントローラ101は、ホスト10から所定の機能の実行に関する指示を受信すると(S122)、図9と共に述べた実行先割当処理を実行する(S123)。コントローラ101は、ホスト10から要求された所定の機能を自身で実行できないため、ホスト10からの指示を第1接続先記憶制御装置200に送信し、このホスト10からの指示を第2接続先記憶制御装置300に転送させる。
第1接続先記憶制御装置200のコントローラ201は、コントローラ101からの指示を受信すると(S124)、この指示を第2接続先記憶制御装置300のコントローラ301に転送する(S125)。
第2接続先記憶制御装置300のコントローラ301は、コントローラ201からの指示を受信すると(S126)、指示された内容を実行し(S127)、処理が完了した旨をコントローラ201に通知する(S128)。
コントローラ201は、コントローラ301から処理完了通知を受領すると(S129)、コントローラ101に処理完了を通知する(S130)。コントローラ101は、コントローラ201からの処理完了通知を受信すると(S131)、ホスト10に処理完了を通知する(S132)。ホスト10は、コントローラ101からの通知を受信し(S133)、S121で指示した処理が正常に行われたことを確認する。
このように、本実施例では、第1接続先記憶制御装置200をコマンド中継装置として利用し、第2接続先記憶制御装置300をコマンドの最終処理装置として利用する。これにより、本実施例では、複数の記憶制御装置100,200,300を、外部接続機能を用いて縦続接続させることができ、適切な記憶制御装置においてホスト10から要求された機能を実行させることができる。
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
本発明の実施形態によるストレージシステムの全体概念を示す説明図である。
ストレージシステムの全体構成を示す説明図である。
ストレージシステムのハードウェア構成を示す説明図である。
ストレージシステムの記憶構成を示す説明図である。
ボリューム管理テーブルを示す説明図である。
機能管理テーブルを示す説明図である。
機能実行先管理テーブルを示す説明図である。
機能を選択するための画面及び実行先の記憶制御装置を設定するための画面を示すユーザインターフェース説明図である。
実行先割当処理を示すフローチャートである。
図9中の分担処理を示すフローチャートである。
第2実施例に係るストレージシステムの全体構成を示す説明図である。
圧縮機能を利用するために使用される各テーブルの内容及び各テーブルの保持先を示す説明図である。
ライトデータを圧縮して記憶させるための処理を示すフローチャートである。
圧縮データを読み出して伸張させるための処理を示すフローチャートである。
第3実施例に係るストレージシステムの全体構成を示す説明図である。
圧縮コピー処理を示すフローチャートである。
伸張コピー処理を示すフローチャートである。
第4実施例に係るストレージシステムの全体構成を示す説明図である。
ストレージシステムの動作を示すフローチャートである。
符号の説明
1…接続元記憶制御装置、1A…制御部、1A1…機能実行部、1A2…実行先判断部、1A3…機能管理部、1A4…状況検出部、1A5…実行指示部、1A6…動作モード設定部、1A7…機能選択部、1B…論理ボリューム(仮想ボリューム)、1C…上位通信部、1D…下位通信部、2…接続先記憶制御装置、2A…制御部、2A1…機能実行部、2B…実ボリューム、2C…上位通信部、2D…下位通信部、3…接続先記憶制御装置、3A…制御部、3A1…機能実行部、3B…実ボリューム、4…ホスト、10…ホスト、20…管理サーバ、31〜33…管理端末、100…接続元記憶制御装置、101…コントローラ、102…圧縮部、103…伸張部、110…記憶部、111…ディスクドライブ、112…RAIDグループ、112V…中間記憶デバイス、113…ボリューム、120…チャネルアダプタ(CHA)、121…通信ポート、130…ディスクアダプタ(DKA)、131…通信ポート、140…キャッシュメモリ、150…共有メモリ、160…接続制御部、170…サービスプロセッサ(SVP)、180…LANインターフェース、200…第1接続先記憶制御装置、201…コントローラ、202…圧縮部、203…伸張部、210…記憶部、211…ディスクドライブ、212…RAIDグループ、213…ボリューム、221,231…通信ポート、300…第2接続先記憶制御装置、301…コントローラ、302…圧縮部、303…伸張部、310…記憶部、311…ディスクドライブ、312…RAIDグループ、313…ボリューム、321,331…通信ポート