以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明において、「インターフェース部」は、1以上のインターフェースでよい。この1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明において、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明において、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。もしくは、フラッシュパッケージでもよい。
フラッシュパッケージは不揮発性記憶媒体を含む記憶デバイスである。フラッシュパッケージの構成例としては、コントローラと、計算機システムからのライトデータを記憶するための記憶媒体であるフラッシュメモリを有する。コントローラは、ドライブI/F、プロセッサ、メモリ、フラッシュI/Fを有する論理回路を有し、これらは内部ネットワークを介して相互接続されている。
また、以下の説明において、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部などを用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、「計算機システム」は、1以上の物理的な計算機を含んだシステムである。物理的な計算機は、汎用計算機でも専用計算機でもよい。物理的な計算機は、I/O(Input/Output)要求を発行する計算機(例えばホスト計算機やサーバシステムと呼ぶ)として機能してもよいし、I/O要求に応答してデータのI/Oを行う計算機(例えばストレージ装置)として機能してもよい。
すなわち、計算機システムは、I/O要求を発行する1以上のサーバシステム、及び、I/O要求に応答してデータのI/Oを行う1以上のストレージ装置であるストレージシステムのうちの少なくとも1つでよい。少なくとも1つの物理的な計算機において、1以上の仮想的な計算機(例えばVM(Virtual Machine))が実行されてもよい。仮想的な計算機は、I/O要求を発行する計算機でもよいし、I/O要求に応答してデータのI/Oを行う計算機でもよい。
また、物理的な計算機(例えばノード装置)が所定のソフトウェアを実行することにより、その物理的な計算機、又は、その物理的な計算機を含んだ計算機システムに、SDx(Software-Defined anything)が構築されてもよい。SDxとしては、例えば、SDS(Software Defined Storage)又はSDDC(Software-defined Datacenter)が採用されてもよい。
また、少なくとも1つの物理的な計算機(例えばストレージ装置)が、サーバシステムとしての1以上の仮想的な計算機と、ストレージシステムのストレージコントローラ(典型的には、I/O要求に応答してデータをPDEV部に対して入出力する装置)としての仮想的な計算機とが実行されてもよい。
言い換えれば、このような少なくとも1つの物理的な計算機は、サーバシステムの少なくとも一部としての機能と、ストレージシステムの少なくとも一部としての機能の両方を有してもよい。
また、計算機システム(典型的にはストレージシステム)は、冗長構成グループを有してよい。冗長構成は、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数のノード装置での構成でもよいし、PDEV部の少なくとも一部としての1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一の計算機(例えばノード装置)での構成でもよい。
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
HA構成として、非同期リモートコピー構成を組む。正サイト側で受けたI/O、および、正サイト側のボリュームに対するQoS設定を行うボリュームオペレーションを正サイトのジャーナルボリュームに記録し、ジャーナルを副サイトへ転送することで、副サイト側でI/Oおよび前記QoS設定を再現できる。
更なる構成として、以下の構成がある。ジャーナルが副サイトへ未転送のまま障害が発生した場合、未転送のジャーナルで示された内容は副サイトでは再現できない。ジャーナルにはQoS設定のボリュームオペレーションも記録される。しかし、前記QoS設定はI/Oと異なり順序性を保証しなくてもよいものである。このことから、QoS設定のボリュームオペレーションは、正サイトで要求を受けたらジャーナルに登録せずに副サイトにも要求を出してもよい。このようにすることで、QoS設定のボリュームオペレーションは、ジャーナル化する方法よりも早くに副サイトに反映できる。
このように、ライト要求かQoS設定かのボリュームのオペレーションによって、副サイトへの反映方法を選択するために、オペレーション毎に副サイトへの反映方法を事前に決めておく処理を行う。
以下、図面を参照して、実施例1を説明する。
<システム構成>
図1は、実施例1に係るリモートコピーシステム1の物理構成を示す図、図2は実施例1に係るリモートコピーシステム1の論理構成を示す図である。
地震などの災害への対策としてディザスタリカバリ(DR)の重要性が高まっている。リモートコピーはストレージシステムの高可用性(HA(High Availability))を実現する構成の一つである。
ストレージシステム200はリモートコピー構成を構築するため、2つ以上のサイト、例えば、プライマリサイト(正サイト)100A、セカンダリサイト100B(副サイト)がある。以下、説明を分かりやすくするため、プライマリサイト100Aが有する要素の参照符号は、親番号と子符号「A」の組合せであり、セカンダリサイト100Bが有する要素の参照符号は、親番号と子符号「B」の組合せである。また、プライマリサイト100Aとセカンダリサイト100Bを区別する必要がないときは、参照符号を親番号のみとする。
リモートコピー構成のプライマリサイトとセカンダリサイトでは、同一機種のストレージシステムにて構築する場合が多いが、今回は障害発生時にフェイルオーバして処理を継続できるシステムの提供が目的であり、リモートコピー構成を組むそのことを目的とせずその手段のひとつとしてリモートコピー機能を使用しているため、リモートコピー構成を組むストレージシステムの機種をそろえることは発明の本質では無い。
リモートコピーによるデータ複製のコピー元となるプライマリサイト100A側のストレージシステム200Aが有するデータボリューム222A(図2参照)を、以下「PVOL(プライマリボリューム、正ボリューム)」といい、PVOLに格納されるデータの複製先となるセカンダリ側のストレージシステム200Bが有するデータボリューム(図2において図略)を、以下「SVOL(セカンダリボリューム、セカンダリ側(S)ボリューム)」ということにする。複製データの格納元をプライマリサイト又は正サイト又はローカルサイトと呼び、複製を格納する先をセカンダリサイト又は副サイト又はリモートサイトと呼ぶ。
リモートコピー機能は、サーバシステムからの書き込みコマンドと同期してストレージシステムがデータをコピー先のストレージシステムに転送する「同期リモートコピー」と、サーバシステムからの書き込みコマンドへの完了応答後にストレージシステムがデータをコピー先のストレージシステムに転送する「非同期リモートコピー」の二種類に大別される。
どちらのリモートコピー機能を用いる場合でも、正サイトの災害発生時には、サーバシステム及びストレージ装置の双方の業務を副サイトへ交替する。これにより、サイトに災害が発生した場合でもデータ喪失や業務停止を最小化することができる。
また、同期リモートコピーはコピー元とコピー先のデータが常に同期されている利点がある一方、サーバシステムからの書込みの応答まで時間がかかってしまうため、長距離のサイトの間では非同期リモートコピーを用いることが一般的である。さらに、ストレージシステムがフラッシュ媒体を搭載することもあり、フラッシュ媒体の高性能を生かすためにも非同期リモートコピーを用いる。
以降は非同期リモートコピー機能を採用した説明とする。
HAの別の方法として、ボリューム単位にリモートコピー構成を組む方法もある。ここでは、ストレージシステム200単位にコピー元およびコピー先を決定する方法で説明する。
ストレージシステム200は、図1に示すようにストレージコントローラ101を有する。ストレージコントローラ101は、プロセッサ211を含むコントローラの一例である。ストレージコントローラ101は、仮想ストレージシステム機能、非同期リモートコピー機能、障害検出やフェイルオーバを処理する障害管理機能を有する。
ストレージシステム200は、複数(又は1つ)の物理的記憶デバイスであるPDEV220と、PDEV220に接続されたストレージコントローラ101とを有する。
ストレージコントローラ101は、I/F214と、I/F215と、I/F213と、メモリ212と、それらに接続されたプロセッサ211とを有する。I/F214、I/F216、及びI/F213が、インターフェース部の一例である。メモリ212が、記憶部の一例である。プロセッサ211が、プロセッサ部の一例である。
I/F214は、サーバシステム201とストレージコントローラ101との間のデータのやり取りを仲介する通信インターフェースデバイスである。I/F214に、FC(Fibre Channel)ネットワーク203を介して、サーバシステム201が接続される。
サーバシステム201は、ストレージコントローラ101に対して、I/O先(例えばLUN(Logical Unit Number)のような論理ボリューム番号や、LBA(Logical Block Address)のような論理アドレス)を指定したI/O要求(ライト要求又はリード要求)を送信する。サーバシステム201は、例えば、入力デバイス、出力デバイス、CPU(Central Processing Unit)、メモリ、ディスクアダプタ、ネットワークアダプタ、及び、記憶デバイスを備える(図示なし)。なお、各サーバシステム201では、ユーザが使用するアプリケーションプログラム(AP)202(図2参照)や、ストレージコントローラ101とのインターフェース制御をおこなうストレージシステム制御プログラムもサーバシステム201が有するCPUにて実行される。
I/F216は、ストレージシステム200Aとストレージシステム200Bとの間でHA構成をつくるためのやり取りを仲介する通信インターフェースデバイスである。HA構成は非同期リモートコピーを使用する為、リモートコピー用I/Fでもよい。I/F216は、ストレージシステム間ネットワーク206を介して他のストレージシステム200に接続される。ストレージシステム間ネットワーク206は、ディザスタリカバリの観点から公衆回線などのグローバルネットワークであることが多いが、ストレージシステム同士が同じ部屋の中、同じビルの中、近隣ビルの中にある場合などはローカルネットワークであってもよい。ただし、このようなネットワークの形態によって本発明が限定されるものではない。
I/F213は、複数のPDEV220とストレージコントローラ101の間のデータのやり取りを仲介する通信インターフェースデバイスである。I/F213には、複数のPDEV220が接続される。
メモリ212は、プロセッサ211が実行するプログラムと、プロセッサ211が使用するデータを記憶する。プロセッサ211は、メモリ212に格納されているプログラムを実行する。例えば、メモリ212及びプロセッサ211の組が二重化されている。
PDEV220は、複数の記憶デバイスによって構成される。記憶デバイスは、例えばハードディスクドライブで構成され、主としてユーザデータを格納する。記憶デバイスとしては、フラッシュメモリなどの半導体メモリからなるドライブでもよい。記憶デバイスは、RAID構成に基づいてRAIDグループを構成する。
PDEV220には、RAIDグループに基づいて一つ以上の論理記憶領域(論理ボリューム)221、222(図2参照)が作成される。論理ボリュームは、PDEV220が有する物理的な記憶領域と関連付けられる。これらの論理ボリュームはユーザの指定によりPVOL150AやSVOL150B等のデータボリュームとジャーナルを格納するボリュームのジャーナルボリューム160として使用される。
ボリューム150および160はボリューム容量と実際の容量が一致するいわゆるLDEVでも、プールからページ(記憶領域の単位)を割当てるシンプロビジョニングボリュームでもよい。また、全てのボリュームは図示しない他のストレージシステムの備える記憶媒体に基づいて構成されてもよい。この場合、当該ボリュームにサーバシステムからアクセスされた場合には、アクセスをされたストレージシステムは記憶媒体を備える他のストレージシステムと通信を行いサーバシステムに応答する。
なお、ストレージシステム200は、ストレージ装置、あるいはストレージサブシステムと言うこともできる。
Quorum250は、ストレージシステム200A、ストレージシステム200B以外の装置で、例えばストレージシステム200に置かれる記憶領域である。前記HA構成のストレージシステム200Aとストレージシステム200B間で通信不可となった場合に、前記HA構成のストレージシステム200Aとストレージシステム200Bのうち、継続稼動させるものと停止させるものを決定する機能を提供する。
例えば、ストレージシステム200Aとストレージシステム200Bはそれぞれのストレージシステムの状態やそれぞれのストレージシステムから見た他方のストレージシステムへの通信状態をQuorum250に書き込む。互いのストレージシステムはQuorum250を定期的またはI/Oの応答に同期して参照し、Quorum250に書き込まれた情報に基づいて継続稼動させるものと停止させるものを決定する。
ネットワーク203及びネットワーク207は、ストレージネットワークでもよい。ストレージネットワークを介してサーバシステム201A(サーバシステム201B)とストレージシステム200A(ストレージシステム200B)間でデータを送受信する。ストレージシステム200はストレージネットワークを介して互いに通信する。
図2に示すように、ストレージシステム200A及びストレージシステム200Bはサーバシステム201A及びサーバシステム201Bに対して仮想ストレージシステム110を提供している。
ストレージシステム200Aのボリュームであるボリューム150Aおよびストレージシステム200Bのボリュームであるボリューム150Bは同一のデータが格納され、サーバシステム201に対して同じ識別子(例えばID)を示し、仮想ストレージシステム110の一つの仮想ボリューム111として提供されている。
仮想ストレージシステム110の識別子、(例えば、製造番号(S/N))は、XXXである。一方、ストレージシステム200A、ストレージシステム200B、それぞれ、製造番号AAA、製造番号BBBを有している。サーバシステム201は、仮想ストレージシステム110を、ターゲットポート102A、ターゲットポート102Bを含む、製造番号XXXのストレージシステムと認識する。
ボリューム150A、150BはHAボリュームペアを構成し、一つの仮想ボリューム111を構成する。ボリューム150A、150BのIDは、それぞれ、10:00、30:00である。一方、仮想ボリューム111のIDは、20:00である。
サーバシステム201は、仮想ストレージシステム110から仮想ボリューム111を提供され、VOL IDが20:00のボリュームと認識する。ストレージシステム200Aは通常業務を実施する正サイト(正常系)であり、ストレージシステム200Bは正サイトに障害が起こったときに業務を引き続き実施するために正サイトのデータ状態を再現する副サイト(待機系、スタンバイサイト)である。サーバシステム201は、ターゲットポート102A、102Bのいずれを介しても、仮想ボリューム111にアクセスすることができる。サーバシステム201Aは、ターゲットポート102Aのみを介して仮想ボリューム111にアクセスし、サーバシステム201Bは、ターゲットポート102Bのみを介して仮想ボリューム111にアクセスする。
サーバシステム201Aとサーバシステム201Bはクラスタリングソフトウェアによって連携して一つのシステムとして運用する。これにより、サーバシステム201Aに障害に発生しても、サーバシステム201Bで業務を継続できる。
なお、図1、図2には記載しないが、リモートコピーシステム1に管理装置を設けてもよい。管理装置は、ストレージシステム200の記憶領域の構成を管理し、例えば、入力デバイス、出力デバイス、CPU、メモリ、ネットワークアダプタ、及び、記憶デバイスを有する。Quorum250が管理装置を担ってもよい。
図3は、実施例1に係るリモートコピーシステム1のストレージコントローラ101のメモリ212の構成の一例を示す図であり、より詳細には、メモリ212の構成と、メモリ212内のプログラム及び管理情報との例を示す図である。
メモリ212は、ローカルメモリ401、キャッシュメモリ402、及び共有メモリ404というメモリ領域を含む。これらのメモリ領域のうちの少なくとも1つは、独立したメモリであってもよい。ローカルメモリ401は、このローカルメモリ401を含むメモリ212と同一組に属するプロセッサ211により使用される。
ローカルメモリ401には、リードライトプログラム411、リモートコピー制御プログラム412、ジャーナル管理プログラム413、障害管理プログラム414、オペレーション反映方法決定プログラム415、及び、反映方法選択プログラム416が格納される。これらのプログラムについては後述する。また、他、図示していないプログラムも共有メモリ404に格納される。
キャッシュメモリ402には、PDEV220に対してライト又はリードされるデータセットが一時的に格納される。
共有メモリ404は、この共有メモリ404を含むメモリ212と同一組に属するプロセッサ211、及び異なる組に属するプロセッサ211の両方により使用される。共有メモリ404には、管理情報が格納される。
管理情報は、VOL管理テーブル421、VOLマッピング管理テーブル422、ペアVOL管理テーブル423、ジャーナルテーブル424、オペレーション反映方法テーブル425を含む。ボリュームをVOLと表記する。
<管理情報>
次に、管理情報である各テーブルの構成例を説明する。
図4は、実施例1に係るリモートコピーシステム1のVOL管理テーブル421の一例を示す図である。
VOL管理テーブル421は、VOLに関する情報を保持する。例えば、VOL管理テーブル421は、VOL毎にエントリを有する。各エントリは、VOL ID801、VOL容量802、及び、ペア ID803といった情報を格納する。以下、1つのVOL(「対象VOL」と呼ぶ)を例に取って説明する。
VOLID801は、対象VOLの番号(識別番号)の情報である。VOL容量802は、対象VOLの容量の情報であり、いわゆるボリュームサイズを示す。ペア ID803はVOLID801とHA構成を組んでいるペア情報であり、ペアVOL管理テーブル423のペア IDを示す。
VOL管理テーブル421は、その他、図示していないが、ボリュームの属性(I/Oを行うボリュームかジャーナルボリュームか)、ボリュームを構成する物理ハードディスク番号群や、その物理ハードディスクからボリュームを構成するRAIDレベルや、LU番号、物理ポート番号などの情報を管理する。
図5は、実施例1に係るリモートコピーシステム1のVOLマッピング管理テーブル422の一例を示す図である。
VOLマッピング管理テーブル422は、ストレージシステム200が有するボリュームの実構成情報と仮想構成情報とを関連付ける。具体的には、VOLマッピング管理テーブル422は、VOL ID701、仮想VOL ID702、仮想ストレージシステムID(例として製品番号)703、HAフラグ704を有する。
各エントリは、ボリュームが対応付けられている仮想VOL ID、当該仮想ボリュームを提供する仮想ストレージシステム ID、及び、当該ボリュームがHAボリュームペアを構成するか否かを示している。HAフラグの値がONのとき、当該ボリュームは、他のボリュームとHAボリュームペアを構成する。ここでは、全ボリュームがHA構成をとるため全てONである。HA構成はリモートコピー構成である。
図6は、実施例1に係るリモートコピーシステム1のペアVOL管理テーブル423の一例を示す図である。
ペアVOL管理テーブル423は、リモートコピーペアを管理する情報である。ペアVOL管理テーブル423は、少なくともストレージシステム200A側に格納される。ここではストレージシステム200に格納する。
PVOL IDは、リモートコピーのコピー元であるボリュームを示す。SVOLは、リモートコピーのコピー先であるボリュームを示す。
ペアVOL管理テーブル423には、リモートコピーペアを識別するペアID901、リモートコピーデータの複製元であるPVOL情報として、PVOLのストレージシステムID902とPVOL ID903とジャーナルを格納するためのジャーナルVOL ID904、リモートコピーデータの複製先であるSVOL情報として、SVOLのストレージシステムID905と、SVOL ID906、ジャーナルを格納するためのジャーナルVOL ID907、およびペア状態908が含まれる。
ストレージシステムID902とストレージシステムID904は、当該ボリュームが存在する各ストレージシステム200の識別子、例えば、製造番号(S/N)である。
PVOL ID903とジャーナルVOL ID904、および、SVOL ID905とジャーナルVOL ID907は、各ストレージシステム200の中での当該ボリュームの識別子である。これらの各IDにより、当該ボリュームが一意に決まることになる。
ペア状態906は、複製状態を示す、ペアの一方のボリュームから他方のボリュームにデータをコピーしている状態「COPY」、ペアである二つのボリュームが同期している状態「PAIR」、ペアである二つのボリュームが非同期の状態「SUSPEND」のうち、いずれかを表わすものである。
図7は、実施例1に係るリモートコピーシステム1のジャーナルテーブル424の一例を示す図である。
ジャーナルとは、元データの更新に関する履歴を表す情報である。ジャーナルは、データのコピーであるデータ部分と、データの管理情報とから構成される。管理情報はPVOL150Aで行われたデータ更新の情報を持ち、例えば、VOL ID1001、開始LBA1002、ブロック数1003、シーケンス番号1004、時刻1005、データ1006、オペレーション1007を挙げることができる。
VOL ID1001は、PVOL150Aを特定するための情報である。開始LBA1002は、PVOL150Aに書き込まれるライトデータの先頭を示す論理ブロックアドレスである。ブロック数1003は、ライトデータのデータサイズを示す情報である。シーケンス番号1004は、ジャーナルデータに連番で設定される識別番号である。時刻1005は、ライト要求が発行された時刻である。データ1006は、データ本体が格納されている位置(アドレス)を示すポインタ情報である。オペレーション1007は、ライト要求以外の要求、例えば、QoS設定およびスナップショット取得を処理する要求(コマンドなど)があった場合に格納する。ライト要求の場合はオペレーション1007にライト要求を格納してもよいが、原則この情報は使用しない。ボリュームに対する設定等の要求があったらオペレーション1007に登録し、ライト要求以外の場合は、開始LBA1002及びブロック数1003、データ1006は使用しない。
図8は、実施例1に係るリモートコピーシステム1のオペレーション反映方法テーブル425の一例を示す図である。
オペレーションの種類501は、正サイト側が受信するボリュームに対する処理要求で、ライト要求やQoS設定やスナップショットなどがある。実行者502は前記オペレーションの要求元であり、サーバシステム201のAP202またはストレージ管理者である。ストレージ管理者は管理装置やリモートコピーシステム1に接続した端末等の機器を介して要求を出す。副サイト再現方法503は、前記オペレーションを副サイトに再現する際の再現方法を選択し登録する。
副サイト再現方法503は、例えば、方法1は要求を受けたら副サイトにも要求を送信する方法、方法2はジャーナル化して副サイトに再現する方法である。
図9は、実施例1に係るリモートコピーシステム1の設定時の動作の一例を説明するためのフローチャートである。
サーバシステム201Aとサーバシステム201Bは、クラスタリングソフトウェアによって連携する(S1010)。クラスタリングソフトウェアによって連携された複数のサーバシステム201は一つのシステムとして運用される。
正サイト100A側のサーバシステム201Aは正常系で通常業務を行い、副サイト100B側のサーバシステム201Bは待機系でスタンバイし、正常系が稼動している間はI/Oは受け付けない。正常系のサーバシステム201Aが障害により稼動できなくなったら、サーバシステム201Bにフェイルオーバし、サーバシステム201Bが正常系となり、AP202Aの替わりにAP202Bが処理を継続して行う。このため、正サイト100Aと副サイト100Bのストレージシステム200内に格納されるデータ及びボリュームへのQoS設定等を一致させる必要がある。
そこで、正サイト100Aのストレージシステム200Aと、副サイト100Bのストレージシステム200Bとを、ストレージシステム間ネットワーク206を介して接続し、リモートコピーを構成する。
リモートコピー制御プログラム412は、ストレージシステム200A内のボリュームをリモートコピーの正ボリューム(PVOL)150Aとし、ストレージシステム200B内のボリュームをリモートコピーの副ボリューム(SVOL)150Bとでリモートコピーのペアを形成する。
例えば、サーバシステム201、あるいは、ストレージシステム200に設置された保守端末(あるいは、管理装置)が持つGUI(Graphical User Interface)等からストレージシステム200にペア生成コマンドを発行し、データ複製のコピー元となるストレージシステム200Aが有するPVOL150Aと、PVOL150Aに格納されるデータの複製先となるストレージシステム200Bが有するSVOL150Bとを、ペアとして関連付ける(S1012)。ペアを生成したらペアVOL管理テーブル423に登録する。
ここでは、従来のリモートコピー構成を設定して構築する必要はなく、ストレージシステム200間のオペレーションとデータの転送をリモートコピーのジャーナル転送技術で行いたい。ペアを作成することで後述の仮想ボリュームに割り当てる。仮想ストレージシステムを構築して仮想ボリュームに2つのストレージシステム200のボリュームを割当てることでペアとして登録してもよい。正サイト100Aと副サイト100Bのハードウェア構成やハードウェア性能及び数は同じであってもよいし、異なるところがあってもよい。
さらに、各々のサイトのジャーナル管理プログラム413を用いて、PVOL150AおよびSVOL150Bのペアに対応するジャーナルを格納するジャーナルボリュームを割り当て、ペアVOL管理テーブル423に登録する。これにより、データとI/Oやボリュームに対するコマンド等の操作の順序どおりに副サイト側であるコピー先ストレージシステム200Bに正サイト側のコピー元ストレージシステム200Aのデータ及びを反映できる。
次に、仮想ストレージシステム110を設定する(S1014)。設定の方法は図2を参照して既に説明したとおりである。
仮想ストレージシステム110の仮想ボリューム111に、前記作成したペアの、正サイトのストレージシステム200AのPVOL150Aと、副サイトのストレージシステム200BのSVOL150Bの両方をマッピングし、VOLマッピング管理テーブル422に登録する(S1016)
これにより、サーバシステム201Aに障害に発生しても、サーバシステム201Bにフェイルオーバして業務を継続できる。
サーバシステム201A及びサーバシステム201Bは一つの仮想ボリューム111にリード/ライト指示を送信し、実際にはボリューム150Aに前記指示が送信される。
図10は、実施例1に係るリモートコピーシステム1のジャーナル処理の一例を説明するためのフローチャートである。
図9により、リモートコピー技術及び仮想ストレージシステム技術を使ったHA構成を構築したシステムでは、通常運用時、正サイト100Aのストレージシステム200Aへの要求を受け付ける。
ストレージシステム200Aのリードライトプログラム411は、サーバシステム201Aからリモートコピー元ボリュームPVOL150Aへのライト要求を受信すると(S1110)、前記ライト要求に従って、受信したデータを指定されたPVOL150Aのアドレスに書き込む処理を実施する。ライト要求を実施すると、ジャーナル管理プログラム413Aは、実施したライト要求のジャーナルを作成する。ライト要求の対象となったボリュームのVOL IDをVOL管理テーブル421から参照し、ライト要求に示されるライト対象位置を開始LBA1002及びブロック数1003に、それぞれ登録する。ライト要求を受信した時刻を時刻1005に登録する。
ライトデータはジャーナル用に複製して別途ジャーナル専用エリアの記憶領域に格納し、前記記憶領域へのアドレスをデータ1006に登録する。以上のように作成したジャーナルはジャーナルテーブル424に登録され、ジャーナルテーブル424はジャーナルボリューム160Aに格納する(S1112)。
ここで、ジャーナル管理プログラム413は、ストレージシステム200Aの共有メモリ404上に格納されているVOL管理テーブル421とペアVOL管理テーブル423とジャーナルテーブル424を参照し、ジャーナル格納先を決定し、ジャーナルテーブル424の最新シーケンス番号1004の次の番号をシーケンス番号として取得し、新規ジャーナルを作成し、ジャーナルボリューム160A内のジャーナルテーブル424に追加する。
ストレージシステム200Aは、ストレージシステム200Aへの書き込みが完了した時点で、サーバシステム201Aへの書き込み完了応答を行う。ストレージシステム200Aからストレージシステム200Bへのジャーナルの転送は、ライト要求とは非同期に行われる。
ストレージシステム200Bは、一定周期ごと等、所定のタイミングで、ストレージシステム200Aのジャーナルの情報を取得する。ストレージシステム200Bにおいて、ジャーナル管理プログラム413Bは、ストレージシステム200Aから、ジャーナル作成状況に関する情報を取得するための要求を、ストレージシステム200Aに送信する(S1114)。ジャーナル作成状況に関する情報は、例えば、ジャーナルボリューム内のジャーナルの容量、ジャーナルの一番古い時刻等である。
ジャーナル管理プログラム413Aは、前記要求に従ってジャーナル作成状況に関する情報をストレージシステム200Bに転送する(S1115)。ジャーナル管理プログラム413Bは、この取得した情報を利用してジャーナル転送要求を作成する。
次に、ストレージシステム200Aからストレージシステム200Bにジャーナルを転送する処理について説明する。
ストレージシステム200Bにおいて、GUIを介したユーザからの指示の入力あるいは予め定められたスケジュールに従って、ジャーナル転送指示が発生すると、ジャーナル管理プログラム413Bは、ストレージシステム200Aに対し、ジャーナル転送要求を出す(S1116)。スケジュールは、例えば、ストレージシステム200Aで一定量のジャーナルがジャーナルボリューム160Aに格納されたときや、一定期間ごと等である。
ジャーナル転送要求には、コピーすべきジャーナル(複数でも良い)、そのジャーナルが格納されているジャーナルボリューム160A、そのジャーナルボリュームを有するストレージシステム200Aを指定する情報、および、コピーしたジャーナルが格納されるジャーナルボリューム160Bを指定する情報が含まれている。ジャーナル管理プログラム413Bは、共有メモリ404上のVOL管理テーブル421やペアVOL管理テーブル423から取得した情報から、ジャーナル転送要求を作成する。
ジャーナル転送要求を受けたジャーナル管理プログラム413Bは、ジャーナル転送要求で指定されたジャーナルに対するリードコマンドをストレージシステム200Aに対して発行する(S1118)。
このリードコマンドを受けたストレージシステム200Aのジャーナル管理プログラム413Aは、リードコマンドで指定されたジャーナルをストレージシステム200Bに送信する(S1120)。ジャーナルを受信したストレージシステム200Bのジャーナル管理プログラム413Bは、ジャーナル転送要求で指定されたジャーナルボリューム160Bに、受信したジャーナルを格納する(S1121)。
その後、ストレージシステム200Bのジャーナル管理プログラム413Bは、ジャーナル反映要求を発行する(S1122)。ジャーナル反映要求を受けたジャーナル管理プログラム413Bは、ジャーナルボリューム160Bのジャーナルのシーケンス番号に従って、ジャーナルデータをSVOL150Bに書込むことで、SVOL150BにPVOL150Aのデータの反映をおこなう(S1124)。
その後、反映に用いられたジャーナルが格納されていた領域をパージする(S1125)。これにより、その領域は、新たなジャーナルの格納に利用されることができる。従来のジャーナルはライト要求だけであったため、スナップショットを取得する場合は、ストレージシステム200Aとストレージシステム200BへのI/Oを停止し、ストレージ管理者がストレージシステム200Aとストレージシステム200Bとに同時にスナップショット指示を出していた。ジャーナルにスナップショット取得のオペレーションを入れることで、スナップショット取得を自動化できる。
また、ジャーナル管理プログラム413Bは、SVOL150Bにデータが反映されたジャーナルのシーケンス番号を、ストレージシステム200Aのジャーナル管理プログラム413Aに通知する。これにより、ジャーナル管理プログラム413Aは、SVOL150Bに反映されたジャーナルが格納されていた、ストレージシステム200Aのジャーナルボリューム160Aの領域を解放する(S1126)。この領域は、新たなジャーナルの格納に利用することができる。なお、ジャーナルのパージを、通知の受領後すぐにおこなう必要はない。ジャーナルのパージを定期的におこなっても良いし、ユーザからの指示に従ってパージしても良い。
以上のジャーナル処理によれば、PVOL150AからSVOL150Bへの非同期リモートコピーを行うことができる。リモートコピー技術により、遠隔地のストレージシステム同士でのオペレーションの順序を守ることが実現できる。
前記では、前述のジャーナル処理のようにストレージシステム200Aがストレージシステム200Bからのリードコマンドを待つ方法で説明したが、ストレージシステム200Aからストレージシステム200Bに対してデータを書き込むライトコマンドを発行することにより、ジャーナルの転送を行ってもよい。
ストレージシステム200Bは、ストレージシステム200Aから転送されたジャーナルのデータをジャーナルに格納されたSVOL情報に対応するSVOL150Bの対応箇所に更新する。
実施例はライト要求について説明したが、ストレージシステム200AのボリュームにQoS設定の要求等が来た場合も同様にジャーナルに登録して実行する。例えば、ストレージシステム200Aがスナップショット作成したら、ジャーナルテーブル424のオペレーション1007にスナップショット作成を登録し、ストレージシステム200Bがジャーナルを読み出し、スナップショット作成の検出に応じてSVOL150Bのスナップショットを作成する。
図11は、実施例1に係るリモートコピーシステム1のフェイルオーバ処理の一例を説明するためのフローチャートである。
ストレージシステム200とQuorum250間で死活確認処理を定期的に実行する。
前述のとおり、Quorum250は、正サイトのストレージシステム200A、副サイトのストレージシステム200B以外のストレージシステム200に置かれる記憶領域である。ストレージシステム200Aとストレージシステム200Bは、それぞれのストレージシステムの状態やそれぞれのストレージシステムから見た他方のストレージシステムへの通信状態をQuorum250に書き込む。
例として、ストレージシステム200Bがストレージシステム200Aの死活状態を監視する処理を説明する。ストレージシステム200Aの障害管理プログラム414Aは定期的またはI/Oの応答に同期して、Quorum250の所定ビットに1を設定する(S1210)。障害管理プログラム414Bは、予め決めた時間間隔で定期的に、Quorum250内の前記所定ビットに1が設定されているか判定する(S1220)。所定ビットに基づいて継続稼動させるものと停止させるものを決定する。
Quorum250の所定ビットの値を確認した時に、所定ビットが1に設定されていた場合、ストレージシステム200Aが正常に動作していることが確認できる。確認したら、障害管理プログラム414Bは、Quorum250の所定ビットを0(ゼロ)にリセットする。ストレージシステム200Aが正常に動作していれば定期的に自身でまたビットを1にする。それを監視するためである。S1210へ戻り、定期的にQuorum250の所定ビットを参照する。
これに対し、Quorum250の所定ビットの値を確認した時に、所定ビットが0(ゼロ)に設定されていた場合、ストレージシステム200Aに障害が発生しているために所定ビットをリセットできなくなっていると判定することができる。障害管理プログラム414Bは、ストレージシステム200Aに障害が発生したことを検知する。S1230の処理へ進む。
障害を検出したら、ストレージシステム200Aをリセットさせるためのリセット指示を発行する。Quorum250に発行させてもよい。ストレージシステム200Aは障害によってはリセット指示を受けつけられない可能性もある。可能な場合だけ、ストレージシステム200Aはリセット指示を受信すると、Quorum250にリセット完了を応答した後、リセット処理を実行する。
ストレージシステム200Bはストレージシステム200Aが障害であることを検知したため、サーバシステム201BのAP202Bに対して再起動を指示する(S1230)。クラスタリングソフトウェアはAP202Bを正常系として動作し、フェイルオーバ処理を開始する。以降AP202Bからストレージシステム200Bへアクセスに切り替わる。
ストレージシステム200Bは障害ストレージシステム200Aが担当していた論理ボリュームへの要求をAP202Bから受信する(S1240)。AP202が認識している論理ボリュームは仮想ボリューム111であるため仮想ボリューム111へのアクセスは変わらず、仮想ボリューム111にSVOL150Bをマッピングして処理を継続して行う。即ち、同じ識別子(ID)をもつ仮想ボリューム111をフェイルオーバのペアであるにストレージシステム200Aとストレージシステム200Bに同時に提供していて、正常時にはストレージシステム200Aを、障害時にはストレージシステム200Bにアクセスする。
フェイルオーバしたら、ジャーナルが実行完了している時点を復元時点として、前記復元時点のストレージシステム200Bをサーバシステム201Bに提供する。AP202Bは復元時点のストレージシステム200Bを認識し処理を継続する。障害の旧正サイトから未転送のジャーナルの分は再現できない。最新状態より少し過去の状態にて業務を続けることができる。
このように構成される本実施例によれば、サーバシステム201のAP202にストレージシステム200の構成を意識させずに、ボリュームオペレーションも含めてコピー先ストレージシステム200に運用環境を反映しF.O.することができる。
また、本実施例によれば、正サイトに障害が発生し、正サイトから副サイトへ未転送のジャーナルが存在した場合でも、副サイトへフェイルオーバし、ボリュームへのQoS設定を含め副サイトでの運用環境を再現でき、業務を継続できるResurrectableなリモートコピーシステム1を提供できる。
また、本実施例のリモートコピーシステム1は高可用性を示し得る。AP202にも負荷をかけずに、AP202とストレージ管理者で認識するストレージの構成情報と同じ構成を正副サイトに実現できる。従来、ストレージシステム200内の障害が起こった場合、障害状況を調査しフェイルオーバするには専門の知識をもつ管理者及び技術者の操作が必要であったが、本実施例により、クラスタリングソフトとQuorum250と連携して自動フェイルオーバを実現できる。障害からの復旧を容易化、迅速化できる。ジャーナルを利用することでI/O単位にコピー処理を行えるため、RPO(Recovery Point Objective)が小さい。専門知識をもつ技術者が必要なくなる。
なお、Quorum250自身が管理装置として、ストレージシステム200の状況を管理し、いずれかのストレージシステム200内での障害発生を検知した場合、障害発生元ストレージシステムに対してリセット指示を出し、フェイルオーバ先のストレージシステム200に対してフェイルオーバ指示を発行してもよい。
障害によっては応答できない場合は、タイムオーバによりフェイルオーバ処理を開始するか決定してもよい。
ストレージシステム200Aはペアを形成する相手のストレージシステム200Bとハードビート通信を行うことで相手ストレージシステムが正常に稼動しているかを監視する経路を持ってもよい。