図2は、本実施例による記憶システムの要部の構成を示すブロック図である。ホスト10A,10Bは、例えば、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。
ホスト10Aは、通信ネットワークCN1を介して第1ストレージ装置100にアクセスするためのHBA(Host Bus Adapter)11Aと、例えば、データベースソフトウェア等のアプリケーションプログラム12Aと、を備えている。同様に、ホスト10Bも、第2ストレージ装置200にアクセスするためのHBA11Bと、アプリケーションプログラム12Bとを備えている。以下、各ホスト10A,10Bを特に区別しない場合は、単に、ホスト10,HBA11,アプリケーションプログラム12と呼ぶ。
通信ネットワークCN1としては、例えば、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、専用回線、公衆回線等を場合に応じて適宜用いることができる。LANを介するデータ通信は、例えば、TCP/IPプロトコルに従って行われる。ホスト10がLANを介して第1ストレージ装置100,200に接続される場合、ホスト10は、ファイル名を指定してファイル単位でのデータ入出力を要求する。
一方、ホスト10がSANを介して第1ストレージ装置100,200に接続される場合、ホスト10は、ファイバチャネルプロトコルに従って、複数のディスク記憶装置(ディスクドライブ)により提供される記憶領域のデータ管理単位であるブロックを単位としてデータ入出力を要求する。通信ネットワークCN1がLANである場合、HBA11は、例えばLAN対応のネットワークカードである。通信ネットワークCN1がSANの場合、HBA11は、例えばホストバスアダプタである。
管理装置20は、記憶システムの構成等を管理するためのコンピュータ装置であり、例えば、システム管理者等のユーザにより操作される。管理装置20は、通信ネットワークCN2を介して、各ストレージ装置100,200とそれぞれ接続されている。管理装置20は、後述のように、コピーペアの形成やアクセス属性等について各ストレージ装置100,200に指示を与える。
第1ストレージ装置100は、例えば、ディスクアレイサブシステムとして構成されるものである。但し、これに限らず、第1ストレージ装置100を、高機能化されたインテリジェント型のファイバチャネルスイッチとして構成することもできる。第1ストレージ装置100は、後述のように、第2ストレージ装置200の有する記憶資源を自己の論理ボリューム(Logical Unit)としてホスト10に提供するようになっている。
第1ストレージ装置100は、コントローラと記憶部160とに大別することができ、コントローラは、例えば、複数のチャネルアダプタ(以下、「CHA」)110と、複数のディスクアダプタ(以下、「DKA」)120と、キャッシュメモリ130と、共有メモリ140と、接続制御部150とを備えている。
各CHA110は、ホスト10との間のデータ通信を行うものである。各CHA110は、ホスト10と通信を行うための通信ポート111を備えている。各CHA110は、それぞれCPUやメモリ等を備えたマイクロコンピュータシステムとして構成されており、ホスト10から受信した各種コマンドを解釈して実行する。各CHA110には、それぞれを識別するためのネットワークアドレス(例えば、IPアドレスやWWN)が割り当てられており、各CHA110は、それぞれが個別にNAS(Network Attached Storage)として振る舞うことも可能である。複数のホスト10が存在する場合、各CHA110は、各ホスト10からの要求をそれぞれ個別に受け付けて処理する。
各DKA120は、記憶部160が有するディスクドライブ161との間でデータ授受を行うものである。各DKA120は、CHA110と同様に、CPUやメモリ等を備えたマイクロコンピュータシステムとして構成される。各DKA120は、例えば、CHA110がホスト10から受信したデータや第2ストレージ装置200から読み出されたデータを、所定のディスクドライブ161の所定のアドレスに書込む。また、各DKA120は、所定のディスクドライブ161の所定のアドレスからデータを読み出し、ホスト10または第2ストレージ装置200に送信させる。ディスクドライブ161との間でデータ入出力を行う場合、各DKA120は、論理的なアドレスを物理的なアドレスに変換する。各DKA120は、ディスクドライブ161がRAIDに従って管理されている場合は、RAID構成に応じたデータアクセスを行う。例えば、各DKA120は、同一のデータを別々のディスクドライブ群(RAIDグループ)にそれぞれ書き込んだり、あるいは、パリティ計算を実行し、データ及びパリティをディスクドライブ群に書き込む。
キャッシュメモリ130は、ホスト10または第2ストレージ装置200から受信したデータを記憶したり、あるいは、ディスクドライブ161から読み出されたデータを記憶するものである。後述のように、キャッシュメモリ130の記憶空間を利用して、仮想的な中間記憶デバイスが構築される。
共有メモリ(制御メモリとも呼ばれる場合がある)140には、第1ストレージ装置100の作動に使用するための各種制御情報等が格納される。また、共有メモリ140には、ワーク領域が設定されるほか、後述するマッピングテーブル等の各種テーブル類も格納される。
なお、ディスクドライブ161のいずれか1つあるいは複数を、キャッシュ用のディスクとして使用してもよい。また、キャッシュメモリ130と共有メモリ140とは、それぞれ別々のメモリとして構成することもできるし、同一のメモリの一部の記憶領域をキャッシュ領域として使用し、他の記憶領域を制御領域として使用することもできる。
接続制御部150は、各CHA110,各DKA120,キャッシュメモリ130及び共有メモリ140を相互に接続させるものである。接続制御部150は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。
記憶部160は、複数のディスクドライブ161を備えている。ディスクドライブ161としては、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、磁気テープドライブ、半導体メモリドライブ、光ディスクドライブ等のような各種記憶デバイス及びこれらの均等物を用いることができる。また、例えば、FC(Fibre Channel)ディスクやSATA(Serial AT Attachment)ディスク等のように、異種類のディスクを記憶部160内に混在させることもできる。
なお、後述のように、第1ストレージ装置100は、第2ストレージ装置200の有するディスクドライブ220に基づく仮想内部ボリューム191が形成される。この仮想内部ボリューム191は、ディスクドライブ161に基づく内部ボリューム190と同様にホスト10Aに提供される。
第2ストレージ装置200は、例えば、コントローラ210と、複数のディスクドライブ220とを備えている。第2ストレージ装置200は、通信ポート211を介して、ホスト10Bと、管理装置20及び第1ストレージ装置100にそれぞれ通信可能に接続されている。
第2ストレージ装置200とホスト10Bとは、通信ネットワークCN1を介して接続されている。第2ストレージ装置200と管理装置20とは通信ネットワークCN2を介して接続されている。第2ストレージ装置200と第1ストレージ装置100とは通信ネットワークCN3を介して接続されている。通信ネットワークCN2,CN3は、例えば、SANやLAN等から構成することができる。
第2ストレージ装置200は、第1ストレージ装置100とほぼ同様の構成を備えることもできるし、第1ストレージ装置100よりも簡易な構成を採用することもできる。第2ストレージ装置200のディスクドライブ220は、第1ストレージ装置100の内部記憶デバイスとして扱われるようになっている。
図3を参照する。図3は、本実施例の機能構成に着目した構成説明図である。第1ストレージ装置100のコントローラ101は、各CHA110及び各DKA120と、キャッシュメモリ130及び共有メモリ140等から構成される。
このコントローラ101は、その内部機能として、例えば、第1全コピー制御部102と、第2全コピー制御部103と、第1差分コピー制御部104と、第2差分コピー制御部105とを備えている。また、コントローラ101の共有メモリ140内には、マッピングテーブルT1や差分ビットマップT4等の各種テーブル類が格納されている。
第1全コピー制御部102は、仮想内部ボリューム191の全ての記憶内容を内部ボリューム190にコピーさせる機能である。これとは逆に、第2全コピー制御部103は、内部ボリューム190の全ての記憶内容を仮想内部ボリューム191にコピーさせる機能である。また、第1差分コピー制御部104は、内部ボリューム190の差分データ192を仮想内部ボリューム191にコピーさせる制御である。第2差分コピー制御部105は、仮想内部ボリューム191の差分データ261を内部ボリューム190にコピーさせる機能である。
第1ストレージ装置100には、内部ボリューム190及び仮想内部ボリューム191がそれぞれ設けられている。内部ボリューム190は、第1ストレージ装置100が直接的に支配している各ディスクドライブ161の記憶領域に基づいて設定されるボリュームである。仮想内部ボリューム191は、第2ストレージ装置200の有する各ディスクドライブ220の記憶領域に基づいて設定されるボリュームである。
第2ストレージ装置200のコントローラ210は、その図示せぬメモリ内に差分ビットマップT4(2)を記憶させている。この差分ビットマップT4(2)は、第2ストレージ装置200の有する外部ボリューム260について生じた差分データ261を管理するためのものである。ここで、外部ボリューム260は、上述のように、ディスクドライブ220の記憶領域に基づくもので、第2ストレージ装置200にとっては内部のボリュームである。しかし、このボリューム260は、仮想内部ボリューム191にマッピングされて、第1ストレージ装置100に取り込まれるため、本実施例では、外部ボリューム260と呼ぶ。
管理装置20は、アクセス属性設定部21を備えている。このアクセス属性設定部21は、内部ボリューム190または外部ボリューム260に対して、アクセス属性を設定するためのものである。アクセス属性の設定は、ユーザが手動で行うこともできるし、例えば、何らかのトリガ信号に基づいて自動的に設定することもできる。アクセス属性の種類については、さらに後述する。
図4を参照する。図4は、第1ストレージ装置100及び第2ストレージ装置200の記憶構造に着目した構成説明図である。まず、第1ストレージ装置100の構成から先に説明する。
第1ストレージ装置100の記憶構造は、例えば、物理的記憶階層と論理的記憶階層とに大別することができる。物理的記憶階層は、物理的なディスクであるPDEV(Physical Device)161により構成される。PDEVは、ディスクドライブに該当する。
論理的記憶階層は、複数の(例えば2種類の)階層から構成することができる。一つの論理的階層は、VDEV(Virtual Device)162と、VDEV162のように扱われる仮想的なVDEV(以下、「V−VOL」とも呼ぶ)163とから構成可能である。他の一つの論理的階層は、LDEV(Logical Device)164から構成することができる。
VDEV162は、例えば、4個1組(3D+1P)、8個1組(7D+1P)等のような所定数のPDEV161をグループ化して構成される。グループに属する各PDEV161がそれぞれ提供する記憶領域が集合して一つのRAID記憶領域が形成される。このRAID記憶領域がVDEV162となる。
VDEV162が物理的な記憶領域上に構築されるのと対照的に、V−VOL163は、物理的な記憶領域を必要としない仮想的な中間記憶デバイスである。V−VOL163は、物理的な記憶領域に直接関係づけられるものではなく、第2ストレージ装置200のLU(Logical Unit)をマッピングするための受け皿となる。
LDEV164は、VDEV162またはV−VOL163上に、それぞれ少なくとも一つ以上設けることができる。LDEV164は、例えば、VDEV162を固定長で分割することにより構成することができる。ホスト10がオープン系ホストの場合、LDEV164がLU165にマッピングされることにより、ホスト10は、LDEV164を一つの物理的なディスクとして認識する。オープン系のホストは、LUN(Logical Unit Number )や論理ブロックアドレスを指定することにより、所望のLDEV164にアクセスする。なお、メインフレーム系ホストの場合は、LDEV164を直接認識する。
LU165は、SCSIの論理ユニットとして認識可能なデバイスである。各LU165は、ターゲットポート111Aを介してホスト10に接続される。各LU165には、少なくとも一つ以上のLDEV164をそれぞれ関連付けることができる。一つのLU165に複数のLDEV164を関連付けることにより、LUサイズを仮想的に拡張することもできる。
CMD(Command Device)166は、ホスト10上で稼働するI/O制御プログラムとストレージ装置100のコントローラ101(CHA110,DKA120)との間で、コマンドやステータスを受け渡すために使用される専用のLUである。ホスト10からのコマンドは、CMD166に書き込まれる。ストレージ装置100のコントローラ101は、CMD166に書き込まれたコマンドに応じた処理を実行し、その実行結果をステータスとしてCMD166に書き込む。ホスト10は、CMD166に書き込まれたステータスを読出して確認し、次に実行すべき処理内容をCMD166に書き込む。このようにして、ホスト10は、CMD166を介して、ストレージ装置100に各種の指示を与えることができる。
なお、ホスト10から受信したコマンドを、CMD166に格納することなく、処理することもできる。また、実体のデバイス(LU)を定義せずに、CMDを仮想的なデバイスとして生成し、ホスト10からのコマンドを受け付けて処理するように構成してもよい。即ち、例えば、CHA110は、ホスト10から受信したコマンドを共有メモリ140に書き込み、この共有メモリ140に記憶されたコマンドを、CHA110又はDKA120が処理する。その処理結果は共有メモリ140に書き込まれ、CHA110からホスト10に送信される。
さて、第1ストレージ装置100の外部接続用のイニシエータポート(External
Port)111Bには、通信ネットワークCN3を介して、第2ストレージ装置200が接続されている。
第2ストレージ装置200は、複数のPDEV220と、PDEV220の提供する記憶領域上に設定されたVDEV230と、VDEV230上に少なくとも一つ以上設定可能なLDEV240とを備えている。各LDEV240は、LU250にそれぞれ関連付けられている。
そして、本実施例では、第2ストレージ装置200のLU250(即ち、LDEV240)は、仮想的な中間記憶デバイスであるV-VOL163にマッピングされており、第1ストレージ装置100からも使用できるようになっている。
例えば、図4において、第2ストレージ装置200の「LDEV1」,「LDEV2」は、第2ストレージ装置200の「LU1」,「LU2」を介して、第1ストレージ装置100の「V−VOL1」,「V−VOL2」にそれぞれマッピングされている。そして、「V−VOL1」,「V−VOL2」は、それぞれ「LDEV3」,「LDEV4」にマッピングされ、「LU3」,「LU4」を介して、利用可能となっている。
なお、VDEV162,V-VOL163は、RAID構成を適用することができる。即ち、1つのディスクドライブ161を複数のVDEV162,V-VOL163に割り当てることもできるし(スライシング)、複数のディスクドライブ161から1つのVDEV162,V-VOL163を形成することもできる(ストライピング)。
そして、第1ストレージ装置100の「LDEV1」または「LDEV2」が図3中の内部ボリューム190に該当する。第1ストレージ装置100の「LDEV3」または「LDEV4」が仮想内部ボリューム191に該当する。第2ストレージ装置200の「LDEV1」または「LDEV2」が図3中の外部ボリューム260に該当する。
図5を参照する。図5は、外部ボリューム260を仮想内部ボリューム191にマッピングするためのマッピングテーブルT1の一例を示す。
マッピングテーブルT1は、例えば、VDEV162,V-VOL163をそれぞれ識別するためのVDEV番号と、外部のディスクドライブ220の情報とをそれぞれ対応付けることにより、構成することができる。
外部デバイス情報としては、例えば、デバイス識別情報と、ディスクドライブ220の記憶容量と、デバイスの種別を示す情報と(例えば、テープ系デバイスかディスク系デバイスか等)、ディスクドライブ220へのパス情報とを含んで構成することができる。パス情報は、各通信ポート211に固有の識別情報(WWN)と、LU250を識別するためのLUN番号とを含んで構成できる。
なお、図5中に示すデバイス識別情報やWWN等は、説明の便宜上の値であって特に意味はない。また、図5中の下側に示すVDEV番号「3」のVDEV101には、3個のパス情報が対応付けられている。即ち、このVDEV(#3)にマッピングされる外部ディスクドライブ220は、その内部に3つの経路を有する交代パス構造を備えており、VDEV(#3)には、この交代パス構造を意識してマッピングされている。これら3つの経路のいずれを通っても同一の記憶領域にアクセスできることが判明しているため、いずれか1つまたは2つの経路に障害等が発生した場合でも、残りの正常な経路を介して所望のデータにアクセスできる。
図5に示すようなマッピングテーブルT1を採用することにより、第1ストレージ装置100内のV-VOL163に対して、1つまたは複数の外部のディスクドライブ220をマッピングすることができる。
なお、以下に示す他のテーブルでも同様であるが、テーブル中のボリューム番号等は、テーブル構成を説明するための例示であって、図4等に示す他の構成とは特に対応していない。
図6を参照して、各種テーブルを利用してデータが変換される様子を説明する。図6の上部に示すように、ホスト10は、所定の通信ポート111に対し、LUN番号(LUN#)及び論理ブロックアドレス(LBA)を指定してデータを送信する。
第1ストレージ装置100は、LDEV用に入力されたデータ(LUN#+LBA)を、図6(a)に示す第1変換テーブルT2に基づいて、VDEV用のデータに変換する。第1変換テーブルT2は、第1ストレージ装置100内のLUNを指定するデータを、VDEV用データに変換するためのLUN−LDEV−VDEV変換テーブルである。
この第1変換テーブルT2は、例えば、LUN番号(LUN#)と、そのLUNに対応するLDEVの番号(LDEV#)及び最大スロット数と、LDEVに対応するVDEV(V-VOLを含む)の番号(VDEV#)及び最大スロット数等を対応付けることにより構成される。この第1変換テーブルT2を参照することにより、ホスト10からのデータ(LUN#+LBA)は、VDEV用のデータ(VDEV#+SLOT#+SUBBLOCK#)に変換される。
次に、第1ストレージ装置100は、図6(b)に示す第2変換テーブルT3を参照して、VDEV用のデータを、第2ストレージ装置200のLUN用に送信して記憶させるためのデータに変換する。
第2変換テーブルT3には、例えば、VDEVの番号(VDEV#)と、そのVDEVからのデータを第2ストレージ装置200に送信するためのイニシエータポートの番号と、データ転送先の通信ポートを特定するためのWWNと、その通信ポートを介してアクセス可能なLUNとが対応付けられている。
この第2変換テーブルT3に基づいて、第1ストレージ装置100は、記憶させるべきデータの宛先情報を、イニシエータポート番号#+WWN+LUN#+LBAの形式に変換する。このように宛先情報が変更されたデータは、指定されたイニシエータポートから通信ネットワークCN3を介して、指定された通信ポート211に到達する。そして、データは、指定されたLDEVの所定の場所に格納される。
図6(c)は、別の第2変換テーブルT3aを示す。この変換テーブルT3aは、外部ディスクドライブ220に由来するVDEV(即ち、V-VOL)に、ストライプやRAIDを適用する場合に使用される。変換テーブルT3aは、VDEV番号(VDEV#)と、ストライプサイズと、RAIDレベルと、第2ストレージ装置200を識別するための番号(SS#(ストレージシステム番号))と、イニシエータポート番号と、通信ポート211のWWN及びLUN番号とを対応付けることにより構成されている。
図6(c)に示す例では、1つのVDEV(V-VOL)は、SS#(1,4,6,7)で特定される合計4つの外部記憶制御装置を利用してRAID1を構成する。また、SS#1に割り当てられている3個のLUN(#0,#0,#4)は、同一デバイス(LDEV#)に設定されている。なお、LUN#0のボリュームは、2個のアクセスデータパスを有する交代パス構造を備えている。このように、複数の外部ストレージ装置がそれぞれ有する論理ボリューム(LDEV)を、第1ストレージ装置100内の一つのV-VOLにそれぞれマッピングし、仮想内部ボリューム191として利用することもできる。これにより、本実施例では、外部に存在する複数の論理ボリューム(LDEV)からVDEV(V-VOL)を構成することにより、ストライピングやRAID等の機能を追加した上で、ホスト10に提供することができる。
図7は、差分データ192を管理するための差分ビットマップT4及び退避先アドレス管理テーブルT5をそれぞれ示す。なお、第2ストレージ装置200においても、図7と同様の方法で差分データ261が管理されている。
差分ビットマップテーブルT4は、例えば、内部ボリューム190を構成するディスクドライブ161の各論理トラック毎に、更新されたか否かのステータスを示す更新フラグ情報を対応付けることにより、構成することができる。1つの論理トラックは、キャッシュセグメント3個分に相当し、48KBまたは64KBのサイズを有する。
退避先アドレス管理テーブルT5は、例えば、各論理トラック単位毎に、そのトラックに記憶されていたデータをどこに退避させたかを示す退避先アドレスを対応付けることにより構成することができる。なお、テーブルT4及びT5において、管理単位は、トラック単位に限定されない。例えば、スロット単位やLBA単位等のように、別の管理単位を採用することもできる。
図8は、コピーペア管理テーブルT6の一例を示す説明図である。コピーペア管理テーブルT6は、例えば、コピー元LUを特定する情報と、コピー先LUを特定する情報と、現在のペアステータスとを対応付けることにより、構成することができる。ペアステータスとしては、例えば、「ペア形成(Paircreate)」、「ペア分割(Pairsplit)」、「再同期(Resync)」等を挙げることができる。
ここで、「ペア形成」ステータスは、コピー元ボリュームからコピー先ボリュームへ初期コピー(全コピー)を行って、コピーペアを形成する状態である。「ペア分割」ステータスは、コピーペアを強制的に同期させた後、コピー元ボリュームとコピー先ボリュームとを切り離す状態である。「再同期」ステータスは、コピー元ボリュームとコピー先ボリュームとを切り離した状態から、両者の記憶内容を再び同期させてコピーペアを形成する状態である。
図9は、アクセス属性管理テーブルT7の一例を示す説明図である。アクセス属性とは、ボリュームへのアクセス可否等を制御する情報である。アクセス属性管理テーブルT7は、例えば、LU番号(LUN)毎にアクセス属性を対応付けることにより、構成することができる。
アクセス属性としては、例えば、「リード/ライト可能」、「ライト抑止(リードオンリー)」、「リード/ライト不可」、「空き容量0」、「コピー先設定不可」及び「隠蔽」を挙げることができる。
ここで、「リード/ライト可能」とは、そのボリュームへの読み書きが可能である状態を示す。「ライト抑止」とは、そのボリュームへの書込みが禁止され、読出しは許可される状態を示す。「リード/ライト不可」とは、そのボリュームへの読み書きが禁止される状態を示す。「空き容量0」とは、ボリューム残量の問合せに対して、実際に空き容量がある場合でも、残量0(満杯)と応答する状態を示す。「コピー先設定不可」とは、そのボリュームをコピー先ボリューム(セカンダリボリューム)に設定することができない状態を示す。「隠蔽」とは、イニシエータから認識することができない状態を示す。なお、既に述べたように、テーブル内のLUNは、説明のためのものであって、番号それ自体には特に意味がない。
次に、本実施例の動作について説明する。まず、図10は、第2ストレージ装置200の外部ボリューム260を第1ストレージ装置100の仮想内部ボリューム191として利用するためのマッピング方法を示すフローチャートである。この処理は、ボリュームのマッピングを行う際に、第1ストレージ装置100と第2ストレージ装置200との間で行われる。
第1ストレージ装置100は、CHA110のイニシエータポートを介して、第2ストレージ装置200にログインする(S1)。第2ストレージ装置200が、第1ストレージ装置100のログインに対して応答を返すことにより、ログインが完了する(S2)。次に、第1ストレージ装置100は、例えば、SCSI(Small Computer System Interface)規格で定められている照会コマンド(inquiryコマンド)を、第2ストレージ装置200に送信し、第2ストレージ装置200の有するディスクドライブ220の詳細について応答を求める(S3)。
照会コマンドは、照会先の装置の種類及び構成を明らかにするために用いられるもので、照会先装置の有する階層を透過してその物理的構造を把握することができる。照会コマンドを使用することにより、第1ストレージ装置100は、例えば、装置名、デバイスタイプ、製造番号(プロダクトID)、LDEV番号、各種バージョン情報、ベンダID等の情報を、第2ストレージ装置200から取得できる(S4)。第2ストレージ装置200は、問合せされた情報を第1ストレージ装置100に送信し、応答する(S5)。
第1ストレージ装置100は、第2ストレージ装置200から取得した情報を、マッピングテーブルT1の所定箇所に登録する(S6)。第1ストレージ装置100は、第2ストレージ装置200からディスクドライブ220の記憶容量を読み出す(S7)。第2ストレージ装置200は、第1ストレージ装置100からの問合せに対して、ディスクドライブ220の記憶容量を返信し(S8)、応答を返す(S9)。第1ストレージ装置100は、ディスクドライブ220の記憶容量をマッピングテーブルT1の所定箇所に登録する(S10)。
以上の処理を行うことにより、マッピングテーブルT1を構築できる。第1ストレージ装置100のV-VOLにマッピングされた外部のディスクドライブ220(外部LUN、即ち外部ボリューム260)との間でデータの入出力を行う場合は、図6で述べた他の変換テーブルT2,T3を参照してアドレス変換等を行う。
次に、第1ストレージ装置100と第2ストレージ装置200との間のデータ入出力について説明する。図11は、データ書込み時の処理を示す模式図である。
ホスト10は、アクセス権限を有する論理ボリューム(LDEV)にデータを書き込むことができる。例えば、SANの中に仮想的なSANサブネットを設定するゾーニングや、アクセス可能なLUNのリストをホスト10が保持するLUNマスキングという手法により、ホスト10を特定のLDEVに対してのみアクセスさせるように設定できる。
ホスト10がデータを書き込もうとするLDEVが、VDEVを介して内部の記憶デバイスであるディスクドライブ161に接続されている場合は、通常の処理によってデータが書き込まれる。即ち、ホスト10からのデータは、いったんキャッシュメモリ130に格納され、キャッシュメモリ130からDKA120を介して、所定のディスクドライブ161の所定アドレスに格納される。この際、DKA120は、論理的なアドレスを物理的なアドレスに変換する。また、RAID構成の場合、同一のデータが複数のディスクドライブ161に記憶等される。
これに対し、ホスト10がデータを書き込もうとするLDEVが、V-VOLを介して外部のディスクドライブ220に接続されている場合は、図11に示すような流れとなる。図11(a)は記憶階層を中心に示す流れ図であり、図11(b)はキャッシュメモリ130の使われ方を中心に示す流れ図である。
ホスト10は、書込み対象のLDEVを特定するLDEV番号と、このLDEVにアクセスするための通信ポート111を特定するWWNとを明示して、ライトコマンド(Write)を発行する(S21)。第1ストレージ装置100は、ホスト10からのライトコマンドを受信すると、第2ストレージ装置200に送信するためのライトコマンドを生成し、第2ストレージ装置200に送信する(S22)。第1ストレージ装置100は、ホスト10から受信したライトコマンド中のアドレス情報等を、外部ボリューム260に合わせて変更することにより、新たなライトコマンドを生成する。
ホスト10は、ライトデータを第1ストレージ装置200に送信する(S23)。第1ストレージ装置100に受信されたライトデータは、LDEVからV-VOLを介して(S24)、第2ストレージ装置200に転送される(S26)。ここで、第1ストレージ装置100は、ホスト10からのデータをキャッシュメモリ130に格納した時点で、ホスト10に対し書込み完了の応答(Good)を返す(S25)。
第2ストレージ装置200は、第1ストレージ装置100からライトデータを受信した時点で(あるいはディスクドライブ220に書込みを終えた時点で)、書込み完了報告を第1ストレージ装置100に送信する(S26)。即ち、第1ストレージ装置100がホスト10に対して書込み完了を報告する時期(S25)と、実際にデータがディスクドライブ220に記憶される時期とは相違する(非同期方式)。従って、ホスト10は、実際にライトデータがディスクドライブ220に格納される前に、データ書込み処理から解放され、別の処理を行うことができる。
図11(b)を参照する。キャッシュメモリ130には、多数のサブブロックが設けられている。第1ストレージ装置100は、ホスト10から指定された論理ブロックアドレスをサブブロックのアドレスに変換し、キャッシュメモリ130の所定箇所にデータを格納する(S24)。換言すれば、V-VOL及びVDEVは、キャッシュメモリ130の記憶空間に設けられた論理的な存在である。
図12を参照して、第2ストレージ装置200の外部ボリューム260からデータを読み出す場合の流れを説明する。
まず、ホスト10は、通信ポート111を指定して第1ストレージ装置100にデータの読み出しコマンドを送信する(S31)。第1ストレージ装置100は、リードコマンドを受信すると、要求されたデータを第2ストレージ装置200から読み出すべく、リードコマンドを生成する。
第1ストレージ装置100は、生成したリードコマンドを第2ストレージ装置200に送信する(S32)。第2ストレージ装置200は、第1ストレージ装置100から受信したリードコマンドに応じて、要求されたデータをディスクドライブ220から読み出し、この読出したデータを第1ストレージ装置100に送信し(S33)、正常に読み出しが完了した旨を報告する(S35)。図12(b)に示すように、第1ストレージ装置100は、第2ストレージ装置200から受信したデータを、キャッシュメモリ130の所定の場所に格納させる(S34)。
第1ストレージ装置100は、キャッシュメモリ130に格納されたデータを読み出し、アドレス変換を行った後、LUN103等を介してホスト10にデータを送信し(S36)、読み出し完了報告を行う(S37)。これらデータ読み出し時の一連の処理では、図6と共に述べた変換操作が逆向きで行われる。
図12では、ホスト10からの要求に応じて、第2ストレージ装置200からデータを読み出し、キャッシュメモリ130に保存するかのように示している。しかし、これに限らず、外部ボリューム260に記憶されているデータの全部または一部を、予めキャッシュメモリ130に記憶させておくこともできる。この場合、ホスト10からのリードコマンドに対し、直ちにキャッシュメモリ130からデータを読み出してホスト10に送信することができる。
次に、内部ボリューム190と仮想内部ボリューム191(その実体は外部ボリューム260)との間で記憶内容を同期させる方法について説明する。図13及び図14は、コピー元ボリュームの記憶内容を全てコピー先ボリュームにコピーさせる全コピーモードを示し、図15及び図16は、全コピーの完了後にコピー元ボリュームで発生した差分データのみをコピー先ボリュームにコピーさせる差分コピーモードを示す。いずれのコピーモードの場合でも、第1ストレージ装置100と第2ストレージ装置200との間で直接的にデータが転送され、ホスト10は関与しない。
管理装置20は、第1ストレージ装置100に対して、第1全コピーモードの実行を指示する(S41)。この指示を受信したCHA110は、共有メモリ140に記憶されているマッピングテーブルT1を参照し(S42)、コピー先ボリュームである外部ボリューム260のパス情報を取得する。CHA110は、第2ストレージ装置200に対してリードコマンドを発行し(S43)、外部ボリューム260に記憶されているデータの読み出しを要求する。
第2ストレージ装置200は、第1ストレージ装置100からのリードコマンドに応じて、外部ボリューム260からデータを読出し(S44)、この読み出されたデータを第1ストレージ装置100に送信する(S45)。
CHA110は、第2ストレージ装置200からのデータを受信すると、この受信データをキャッシュメモリ130に記憶させる(S46)。また、CHA110は、例えば、共有メモリ140にライトコマンドを書き込むことにより、DKA120に対してディステージ処理の実行を要求する(S47)。
DKA120は、随時共有メモリ140を参照しており、未処理のライトコマンドを発見すると、キャッシュメモリ130に記憶されているデータを読出し、アドレス変換等の処理を行って、所定のディスクドライブ161に書き込む(S48)。
このようにして、コピー元ボリュームである外部ボリューム260の全記憶内容を、コピー先ボリュームである内部ボリューム190にコピーさせ、両ボリュームの記憶内容を一致させることができる。
図14は、第2全コピーモードの処理を示す。管理装置20は、第1ストレージ装置100に対して、第2全コピーモードの実行を指示する(S51)。この指示を受信したCHA110は、共有メモリ140に記憶されているマッピングテーブルT1を参照し(S52)、コピー先ボリュームである外部ボリューム260へのパス情報を取得する。また、CHA110は、DKA120に対して、内部ボリューム190に記憶されているデータのステージング(データをキャッシュ上に転送する処理)を要求する(S53)。
DKA120は、ステージング要求に応じて、ディスクドライブ161から内部ボリューム190のデータを読出し、キャッシュメモリ130に記憶させる(S54)。そして、DKA120は、CHA110に対し、ライトコマンドの発行を要求する(S55)。
CHA110は、S52で取得したパス情報に基づいて、第2ストレージ装置200にライトコマンドを発行する(S56)。次に、CHA110は、第2ストレージ装置200にライトデータを送信する(S57)。
第2ストレージ装置200は、第1ストレージ装置100からのライトデータを受信し(S58)、このデータを所定のディスクドライブ220に記憶させる(S59)。このようにして、コピー元ボリュームである内部ボリューム190の記憶内容をコピー先ボリュームである外部ボリューム260にコピーさせて、両ボリュームの記憶内容を一致させることができる。
図15は、第1差分コピーモードの処理を示す。まず、差分コピーの開始前に、管理装置20は、第1ストレージ装置100に対して、コピーペアのスプリットを要求する(S61)。スプリット指示を受信したCHA110は、共有メモリ140に記憶されているコピーペア管理テーブルT6を更新し、コピーペアのステータスをスプリット状態に変更させる(S62)。これにより、内部ボリューム190と仮想内部ボリューム191(外部ボリューム260)とのペア状態が解除される。
ホスト10Aは、内部ボリューム190に対して更新I/Oを発行する(S63)。CHA110は、ホスト10Aから受信したライトデータをキャッシュメモリ130に記憶させ(S64)、ライトコマンドの処理完了をホスト10Aに応答する(S65)。
また、CHA110は、差分ビットマップT4及び差分データ192をそれぞれ更新し(S66)、DKA120にディステージ処理の実行を要求する(S67)。DKA120は、更新I/Oにより生じたライトデータをディスクドライブ161に記憶させる(S68)。
差分コピーの開始前に、ホスト10Aからの更新I/Oが停止される(S69)。このI/O停止は、例えば、ユーザによって手動で行うことができる。また、管理装置20は、内部ボリューム190のアクセス属性を「リード/ライト可能」から「ライト抑止」に変更させる(S70)。ホスト10Aによる更新I/Oの発行は既に停止されているが、アクセス属性を「ライト抑止」に変更することにより、内部ボリューム190の記憶内容がこれ以上変化するのを未然に防止することができる。
そして、管理装置20は、第1ストレージ装置100に対して、第1差分コピーの実行を指示する(S71)。この指示を受信したCHA110は、マッピングテーブルT1を参照し(S72)、外部ボリューム260のパス情報を取得する。また、CHA110は、差分ビットマップT4を参照し(S73)、差分データ192のステージングをDKA120に要求する(S74)。
DKA120は、内部ボリューム190について生じた差分データ192をディスクドライブ161から読み出し、キャッシュメモリ130に記憶させる(S75)。そして、DKA120は、CHA110に対して、ライトコマンドの発行を要求する(S76)。
CHA110は、第2ストレージ装置200にライトコマンドを発行し(S77)、ライトデータ(差分データ192)を第2ストレージ装置200に送信する(S78)。第2ストレージ装置200は、受信したライトデータを外部ボリューム260に記憶させる。これにより、外部ボリューム260と内部ボリューム190の記憶内容が一致する。そして、管理装置20は、内部ボリューム190のアクセス属性を「ライト抑止」から「リード/ライト可能」に変更させる(S79)。
図16は、第2差分コピーモードの処理を示す。差分コピーを開始する前に、まず、管理装置20は、第1ストレージ装置100に対して、コピーペアのスプリットを指示する(S81)。この指示を受信したCHA110は、コピーペア管理テーブルT6を更新し、ペア状態を解除させる(S82)。
そして、ホスト10Bが、外部ボリューム260にアクセスして更新I/Oを発行すると(S83)、第2ストレージ装置200は、ライトデータをディスクドライブ220に書込み(S84)、差分データ261及び差分ビットマップT4(2)をそれぞれ更新させる(S85)。
差分コピーを開始する際に、管理装置20は、外部ボリューム260のアクセス属性を「リード/ライト可能」から「ライト抑止」に変更させる(S86)。外部ボリューム260の更新を禁止させた後、管理装置20は、第1ストレージ装置100に対して、第2差分コピーの開始を指示する(S87)。
差分コピーの開始指示を受信したCHA110は、第2ストレージ装置200に対して、差分ビットマップT4(2)の転送を要求する(S88)。外部ボリューム260に生じた差分データ261の内容は、第2ストレージ装置200で管理されているため、第1ストレージ装置100は、第2ストレージ装置200から差分ビットマップT4(2)を取得する(S89)。
なお、この実施例では、第1ストレージ装置100と第2ストレージ装置200との間で直接コマンドやデータを交換する構成を採用する。しかし、本発明はこれに限らず、例えば、管理装置20を介して、差分ビットマップ等のデータを各ストレージ装置100,200間で交換することもできる。
CHA110は、マッピングテーブルT1を参照して(S90)、外部ボリューム260へのパス情報を取得する。そして、CHA110は、第2ストレージ装置200にリードコマンドを発行することにより、差分データ261の転送を要求する(S91)。
第2ストレージ装置200は、第1ストレージ装置100からのリードコマンドに応じて、差分データ261を第1ストレージ装置100に送信する(S92)。そして、この差分データ261を受信したCHA110は、差分データ261をキャッシュメモリ130に記憶させる(S93)。CHA110は、差分データ261のディステージ処理をDKA120に要求する(S94)。そして、DKA120は、キャッシュメモリ130に記憶された差分データ261を読み出し、内部ボリューム190を構成するディスクドライブ161に書き込む(S95)。これにより、外部ボリューム260と内部ボリューム190の記憶内容が一致する。
以上詳述した通り、本実施例によれば、外部のディスクドライブ220をV-VOLにマッピングすることにより、外部ボリューム260を第1ストレージ装置100内の論理ボリュームであるかのように取り扱うことができる。従って、第2ストレージ装置200が、ホスト10と直接接続することができない旧型の装置である場合でも、新型の第1ストレージ装置100が介在することにより、旧型装置の記憶資源を第1ストレージ装置100の記憶資源として再利用し、ホスト10に提供することができる。これにより、旧型のストレージ装置200を新型のストレージ装置100に統合して記憶資源を有効に利用することができる。
また、第1ストレージ装置100が高性能・高機能の新型装置の場合、第1ストレージ装置100の有する高性能なコンピュータ資源(キャッシュ容量やCPU処理速度等)によって第2ストレージ装置200の低性能を隠すことができ、ディスクドライブ220を活用した仮想的な内部ボリュームを用いて、高性能なサービスをホスト10に提供することができる。さらに、ディスクドライブ220上に構築される外部ボリューム260に、例えば、ストライピング、拡張、分割、RAID等の機能を追加して使用することができる。従って、外部のボリュームを直接LUNにマッピングする場合に比較して、利用の自由度が高まり、使い勝手が向上する。
これらの効果に加えて、本実施例では、内部ボリューム190と仮想内部ボリューム191(外部ボリューム260)との間で、記憶内容を同期させることができる。従って、内部ボリューム190のバックアップを仮想内部ボリューム191に形成したり、これとは逆に、仮想内部ボリューム191のバックアップを内部ボリューム190に形成することができ、より一層使い勝手が向上する。
また、本実施例では、全コピーモードと差分コピーモードの両方を実施可能なため、状況に応じた効率的なコピーを行うことができる。
さらに、本実施例では、アクセス属性を「ライト抑止」に変更することにより、コピー元ボリュームの記憶内容を固定させる構成を採用した。従って、ホスト10における処理内容を特に変更することなく、ボリュームコピーを実行することができる。
1…第1ストレージ装置、1A〜1C…通信ポート、2…第2ストレージ装置、2A〜2C…各通信ポート、3…ホスト、4…管理装置、5…制御部、5A…差分ビットマップ、5B…マッピングテーブル、6…内部ボリューム、6A…差分データ、7…仮想内部ボリューム、8…制御部、8A…差分ビットマップ、9…外部ボリューム、9A…差分データ、10,10A,10B…ホスト、11A,11B…ホストバスアダプタ(HBA)、12A,12B…アプリケーションプログラム、20…管理装置、21…アクセス属性設定部、100…第1ストレージ装置、101…コントローラ、102…第1全コピー制御部、103…第2全コピー制御部、104…第1差分コピー制御部、105…第2差分コピー制御部、110…チャネルアダプタ(CHA)、111,111A,111B…通信ポート、120…ディスクアダプタ(DKA)、130…キャッシュメモリ、140…共有メモリ、150…接続制御部、160…記憶部、161…ディスクドライブ、190…内部ボリューム、191…仮想内部ボリューム、192…差分データ、200…第2ストレージ装置、210…コントローラ、211…通信ポート、220…ディスクドライブ、240…論理ボリューム、260…外部ボリューム、261…差分データ、300…第3ストレージ装置、311…ターゲットポート、320…ディスクドライブ、340…論理ボリューム、T1…マッピングテーブル、T2,T3,T3a…変換テーブル、T4,T4(2)…差分ビットマップ、T5…退避先アドレス管理テーブル、T6…コピーペア管理テーブル、T7…アクセス属性管理テーブル、CN…通信ネットワーク