JP4546629B2 - 記憶システム、記憶システムの応答方法及び記録媒体 - Google Patents
記憶システム、記憶システムの応答方法及び記録媒体 Download PDFInfo
- Publication number
- JP4546629B2 JP4546629B2 JP2000285237A JP2000285237A JP4546629B2 JP 4546629 B2 JP4546629 B2 JP 4546629B2 JP 2000285237 A JP2000285237 A JP 2000285237A JP 2000285237 A JP2000285237 A JP 2000285237A JP 4546629 B2 JP4546629 B2 JP 4546629B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- computer
- storage device
- written
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
【発明の属する技術分野】
本発明は、ディスク制御装置間の非同期リモートコピーにおけるデータ同期制御に関するものである。
【0002】
【従来の技術】
近年のコンピュータシステムは、銀行及び証券業務の基幹業務を、大型コンピュータによる一括管理から、クライアント・サーバシステムを中心とする分散システムへ移行している。このような分散システム環境では、クライアントからの要求を複数のサーバとディスクアレイ装置を用いてデータを処理するHA(High Availability:高可用性)クラスタ構成が採られている。このようなHAクラスタ構成では、地震などの災害に備えて遠隔地にあるデータセンター間でデータを二重化する方法が採用されてきている。二重化は、通常、2台のディスクアレイ装置(記憶システム)を公衆回線や専用回線等を介してリモート接続し、ホストコンピュータ装置からローカルのディスクアレイ装置への書込みデータを、リモートのディスクアレイ装置へコピーする方法が採られている。
【0003】
ディスクアレイ装置間で二重化する方法は、大別すると同期方式と非同期方式の2種類がある。
【0004】
同期方式では、まず、ローカル側のホスト装置からの書込み要求を、ローカル側のディスクアレイ装置のキャッシュに書込む。続いて、ローカル側のディスクアレイ装置は、キャッシュに書込まれたデータを、リモートのディスクアレイ装置に転送する。更に、ローカル側のディスクアレイ装置は、書込み要求のデータがリモート側のディスクアレイ装置により受信されたこと示す応答信号を受信すると、この後、ホストに対して、前記書込み要求に対する応答を返す。つまり、ローカル側のディスクアレイ装置は、リモート側のディスクアレイ装置にデータが届けられたことを確認して、ホストへ応答を返す。この応答は、ホスト装置に対しリモート側にデータが渡されたことを保証する。(同期とは、ホストからの書込み要求とリモート側のディスクアレイ装置へのコピーが同期して行われるという意味で用いられる。)この同期方式は、リモート側からの応答信号を待つ遅延が発生するため、ローカルとリモート間でデータ伝送の伝播遅延が少ない比較的近距離(100Km以内)に適しているが、例えば公衆回線網等を使用する遠距離転送には適さない。なお、ローカル側およびリモート側のディスクアレイ装置に記録されたデータは、それぞれのドライブ制御回路を介してそれぞれの物理ディスクへ書込まれる。
【0005】
一方、非同期方式は、遠距離転送に向いており、ローカル側のホスト装置からの書込み要求に対するホスト装置への応答(書込み完了)は、ローカル側のキャッシュに前記書込み要求のデータが書かれた時点で、書込み完了をホスト装置へ返される。キャッシュに書かれたデータは、ホスト装置への応答後に、別のタイミングで(この意味で非同期)、リモート側のディスクアレイ装置へコピー(転送)される。この非同期方式では、リモート側のディスクアレイ装置へデータを転送するタイミングとは関係なく、ホスト装置へ上記書込み要求に対する応答を行うので、応答タイミングが同期方式と比べて速くなり、ホストは次の処理に早く移ることができる。
【0006】
なお、リモートコピーに関しては、特表平8−509565号に記載がある。
【0007】
【発明が解決しようとする課題】
上記非同期にリモート側にデータを転送する方法では、ローカル側のディスクアレイ装置が、当該ディスクアレイ装置内にデータを格納した時点で、リモート側にデータがストアされたか否かに関係なく、ホストに対し、書込み要求完了を報告する。このため、ローカル側のホストは、ホスト書込み要求のリモート側への同期完了確認(ホスト書込み要求によるデータがリモート側のディスクアレイ装置へ確実に転送されたかの確認)が困難であった。このホスト書込み要求のリモート側での同期完了確認は、特に、データベースの履歴ログファイル等でのデータベースのトランザクション単位のコミット(データが確実にストレージに記憶されたという保証)で必要とされる。なお、コミットとは、1つのトランザクションに関する複数のデータベースの更新結果を実際の記憶システム上にログファイルと共に書込む一連の処理のことである。
【0008】
また、災害時のデータリカバリの観点から正サイト障害によってディスクアレイ装置内に残存していた未転送のデータは失われ、副サイトに切替り副サイトで運用を開始した時に保証されるデータが分からない問題があった。
【0009】
しかしながら、上記従来技術の非同期転送方式は、非同期転送の特性上から、ホストIOに対する同期確定方法を備えていなかった。即ち、データベース(DB)運用上必要となる、APP(アプリケーションプログラム)からのトランザクションに対するコミットポイントでの書込み要求がリモートサイト(副サイト)に確実に書かれたか否かを確認する方法が提供されていなかった。
【0010】
以下、課題を具体的に説明する。まず、コンピュータが1つの記憶システムと接続される場合を説明し、その後、記憶システムが非同期データ転送(非同期リモートコピー)を行っている場合につき、その課題を明確に説明する。
【0011】
初めに、コンピュータに1つの記憶システムが接続されている場合を説明する。コンピュータのアプリケーションが、書込みコマンド(要求)を実行すると、通常、コミット(commit)コマンド無しの状態では、その書込みコマンドのデータはコンピュータ内のデータバッファ上に書込まれるだけで、データバッファ上のデータと、記憶システム内のデータは一致しない。その後、アプリケーションがコミットコマンドを発行すると、データバッファ上のデータが記憶システムへ実際に書込みコマンドによって書込まれる。その後、記憶システムは、書込みデータをキャッシュメモリに記憶すると(この時点で記憶システム内のデータとコンピュータ内のデータは一致する)、書込みコマンドを発行したコンピュータに対し、書込み要求完了で応答する。コンピュータは、その書込み要求完了を確認すると、前記コミットコマンドに対するリターンをアプリケーションへ発行する。アプリケーションは、このリターンにより、記憶システム内のデータとコンピュータ内のデータが一致していることを知る。
【0012】
次に、非同期リモートコピーを行っている場合について説明する。コンピュータのアプリケーションが、コミットコマンドを発行すると、データバッファ内のデータが書込みコマンドでローカル側の記憶システムのキャッシュへ書込まれる。ローカル側の記憶システムは、その応答として、書込み完了をコンピュータへ返す。コンピュータは、書込み完了を受けると、アプリケーションへコミットに対するリターンを返す。しかしながら、このリターンは、単にローカル側の記憶システムのデータがデータバッファ内のデータと一致したことを示すのみであり、リモート側の記憶システム内のデータとデータバッファ内のデータが一致したことを示すものではない。従って、ローカル側の記憶システムが書込み要求完了を返した後で、かつ、リモート側へのデータコピーが終了する前にローカル側の記憶システム内のデータが消失した場合に、アプリケーションがリモート側のデータを用いて処理を継続しようとすると、コミットのリターンを受け、記憶システム上でデータが確定したと確認したにもかかわらず、誤ったデータを用いて処理を継続することになる。即ち、非同期リモートコピー中に、もし、障害等が発生した場合には、従来からのコミット機能ではアプリケーションは満足な結果を得られない場合が発生することになる。
【0013】
このように、従来技術の非同期リモートコピーは、非同期転送の特性上から、ホストIOに対するデータ同期確定方法を備えていない。その結果、従来技術の非同期転送方式では、データベース(DB)運用上必要となる、APP(アプリケーションプログラム)からのトランザクションに対するコミットポイントでの書込み要求がリモートサイト(副サイト)に確実に書かれたか否かを確認できないとういう課題がある。
【0014】
本発明の目的は、ホストIO(書込み要求)に対するリモートサイトへのデータ同期確定を、ホストアプリケーションのコミット単位または任意な時点での同期確定を可能にすることにある。
【0015】
【課題を解決するための手段】
かかる課題を解決するため本発明においては、ローカル側の上位装置とリモート側の記憶システムとに接続され、前記上位装置から与えられる書込み対象のデータを記憶すると共に、当該書込み対象のデータを前記リモート側の記憶システムに送信する記憶システムであって、前記リモート側の記憶システムが前記書込み対象のデータを受信したか否かを問い合わせる問合せコマンドを前記上位装置から受信する手段と、前記上位装置へ、前記問合せコマンドに対する応答を送信する手段とを備えることを特徴とする。
また本発明においては、データを記憶するディスク装置と、外部上位装置と前記ディスク装置との間で前記データを転送するディスク制御装置とを有する記憶システムであって、前記ディスク制御装置は、前記上位装置から与えられた前記ディスク装置に書き込むべき書込み対象のデータを他の記憶システムへ送信する回路と、前記上位装置から入力されるコマンドを実行する回路及びソフトウェアとを備え、前記コマンドは、前記他の記憶システムが前記書込み対象のデータを受信したか否かに関する情報を問合せるものであり、かつ、自記憶システムに対して、前記外部上位装置にその問合せに対する結果を報告することを要求するものであることを特徴とする。
さらに本発明においては、上位装置に対する記憶システムの応答方法であって、前記上位装置から送信される書込みコマンドを受信する第1のステップと、前記書込みコマンドに対する応答を前記上位装置に返す第2のステップと、前記書込みコマンド内のデータを他記憶システムへ送信する第3のステップと、前記上位装置から送信される前記他の記憶システムが前記データを受信したか否かを問う問合せコマンドを受信する第4のステップと、前記上位装置へ、前記問合せコマンドに対する応答を送信する第5のステップとを備えることを特徴とする。
さらに本発明においては、ローカル側の上位装置とリモート側の記憶システムとに接続され、前記上位装置から与えられる書込み対象のデータを対応する正ボリュームに格納すると共に、当該書込み対象のデータを副ボリュームが設けられた前記リモート側の記憶システムに送信する記憶システムであって、上位装置との間で情報を送受信するための第1のインタフェース回路と、他の記憶システムとの間で情報を送受信するための第2のインタフェース回路とを備え、前記上位装置から送信される書込み対象のデータを前記第1のインタフェース回路を介して受信し、当該書込み対象のデータを、当該書込みデータに付与した識別情報と共に前記第2のインタフェース回路を介して前記他の記憶システムに送信し、前記上位装置からの前記書込み対象のデータに関する問合せコマンドを前記第1のインタフェース回路を介して受信し、前記問合せコマンドにおいて指定された前記書込み対象データに付与した前記識別情報を前記第1のインタフェース回路を介して前記上位装置に送信すると共に、最後に前記副ボリュームに格納された前記書込み対象のデータに付与された前記識別情報を、前記第2のインタフェース回路を介して前記他の記憶システムに問い合わせ、前記他の記憶システムから送信される、最後に前記副ボリュームに格納された前記書込み対象のデータに付与された前記識別情報を前記第2のインタフェース回路を介して受信し、当該識別情報を、前記第1のインタフェース回路を介して前記上位装置に送信することを特徴とする。
【0016】
さらに本発明においては、コンピュータ上で動作するアプリケーションから複数の書込み要求を受けた際に、前記複数の書込み要求内のデータを他記憶システムに非同期にコピーする記憶システムと接続される前記コンピュータに、インストールされるプログラムが記録された記録媒体であって、前記プログラムは、前記アプリケーションから問合せコマンドを受ける第1ステップと、前記記憶システムから、前記記憶システムに記憶された前記アプリケーションに関する書込み対象のデータを識別する識別情報を得る第2ステップと、前記記憶システムから、前記他の記憶システムに記憶された前記アプリケーションに関する書込み対象のデータを識別する識別情報を得る第3ステップと、前記第2ステップで得た識別情報と前記第3ステップで得た識別情報を基に、前記問合せに応答する第4のステップとを備える処理を前記コンピュータに実行させることを特徴とする。
さらに本発明においては、ローカル側ホストからの書込み対象のデータを、他の記憶システムへリモート非同期データ転送を行う記憶システムであって、前記記憶システムは、前記書込み対象のデータが前記他の記憶システムへ記憶されたか否かを前記ローカル側ホストへ報告することを特徴とする。
さらに本発明においては、他の記憶システムへデータの非同期リモートコピーを行う記憶システムに接続されるコンピュータにインストールされるプログラムを記録する記録媒体であって、前記プログラムは、前記コンピュータ内で動作するアプリケーションからコミットコマンドを受けると前記コンピュータ内のバッファにある前記アプリケーションが発行した書込み対象のデータを実際に前記記憶システムへ書込む書込み要求を発行する第1のステップと、前記記憶システムから前記書込み要求に対する書込み完了を受信する第2のステップと、前記書込み対象のデータが前記他の記憶システムにコピーされたか否かを問い合わせる問合せコマンドを前記記憶システムへ発行する第3のステップと、前記記憶システムから前記問合わせコマンドに対する応答を受ける第4のステップと、前記書込み完了を受信し、かつ、前記応答を受けた後で、前記コミットコマンドに対する応答を返す第5のステップとを備える処理を前記コンピュータに実行させることを特徴とする。
【0017】
【発明の実施の形態】
(実施例)
以下、本発明の一実施例を図1〜図3により詳細に説明する。
【0018】
最初に、図3を用いて本発明を適用するシステム構成例を示す。図3は、一般的なHAクラスタの全体構成を示したシステムブロック図である。以下、ディスクアレイ装置13aをローカル(又は正サイト)、ディスクアレイ装置13bをリモート(又は副サイト)とし説明する。また、参照番号に「a」を添付した方をローカル側、参照番号に「b」を添付した方をリモート側として説明する。
【0019】
HAクラスタを構成するホストコンピュータ装置1a、1bはデータベース等のAPP(アプリケーション・プログラム)2a、2b、ミドルソフト3a、3b、APPやミドルソフトを制御するOS(オペレーティング・システム)4a、4b、及び、ディスクアレイ装置との間でコマンド等の入出力を制御する“IO I/F”(入出力インタフェース)23a、23bで構成される。
【0020】
ミドルソフト3a、3bは、リモート側(副サイト)では、正サイト障害での副サイト運用時に、副サイト側のホスト装置に対し、副サイトのディスクアレイ装置への書込み禁止状態を解除し、一方、正サイト側では、正サイトと副サイト間でデータを一致させる初期ペア状態の生成、ペア状態のサスペンド(論理的なペアを切断した状態)等のペア制御指令を大型ディスクアレイ装置13a、13bに送るコマンド制御ソフトである。本発明の一実施例では、このミドルソフト3aにより、本願特有のSyncコマンドを提供する(詳細は後述する)。
【0021】
ホストコンピュータ装置1a、1bからのIO要求は“IO I/F”(23a、23b)を介して大型ディスクアレイ装置13a、13bに送られる。
【0022】
大型ディスクアレイ装置13a、13bは、HOST I/F制御回路17a、17bでホストからのIO要求を受け、キャッシュ21a、21bに、書込み要求のデータ(WRITEデータ)を書込む。このキャッシュ21a、21bに書かれたデータはドライブ制御22a、22bによって実際の物理ディスク9a、9bに書込まれる。ここで、キャッシュに書込まれたデータに関しては、大型ディスクアレイ装置は、そのデータの記憶を保証するものとする。また、大型ディスクアレイ装置は、複数の物理ディスク9をRAID(RedundancyArray of Inexpensive Drives)1、RAID5等で保護し物理ディスクの障害に備える。なお、RAIDに関しては、"A Casefor Redundant Arrays of Inexpensive Disks (RAID)"by David A. Patterson, et al., Dec 1987, U. C. Berkleyに記載がある。
【0023】
大型ディスクアレイ装置間でのデータの二重化では、まず、ローカル大型ディスクアレイ装置13aのキャッシュ21aに書かれたデータが、リモートI/F制御回路18a、18bおよび公衆回線や専用線等のデータ転送路20a、20bを介してリモート大型ディスクアレイ装置13bに送られる。リモート側の大型ディスクアレイ装置13bは、キャッシュ21bに、この送られたデータを書き込む。この後、リモート側の大型ディスクアレイ装置13bは、ローカル側での物理ディスク装置9aへの書込みと同様に、物理ディスク9bへ受信したデータを書込む。
【0024】
この二重化された状態では、リモート側のHOST I/F制御17bはリモートホスト1bからの書込みを禁止する。
【0025】
ここで、リモート側への未転送データは、BITMAPメモリ11a、11bによって差分管理される。このメモリ内の差分情報によって管理される差分データ(未転送データ)が、ホスト装置1aからのIO要求に同期しないで非同期にリモート側に転送される。この差分データを管理する差分BITMAPメモリについては後述する。
【0026】
なお、図3において、本願発明で定義するSyncコマンド等のディスクアレイ装置内での処理は、HOST/IF制御回路やリモートI/F制御回路等に、マイクロプロセッサおよびマイクロプロセッサから参照されるプログラムやデータが保持される一般的なメモリ(DRAM等)を設け、マイクロプロセッサがプログラムを実行することによって実現される。また、制御回路内に専用回路を設けることで実現しても良い。一方、当該装置を制御するマイクロプロセッサ、プログラムを記憶するメモリ等を、HOST/IF制御回路やリモートI/F制御回路等以外の場所に設け、これにより、HOST/IF制御回路やリモートI/F制御回路を制御しながら実行しても良い。
【0027】
図1は、図3のシステム構成において本願発明を実現する論理ブロックを示す。
【0028】
ローカル側のホスト装置1aの論理ブロックは、アプリケーションソフトであるAPP(アプリケーションプログラム)2a、大型ディスクアレイ装置13a、13b内のボリュームの初期ペア状態の生成、ペア状態のサスペンド等のペア制御を実行するミドルソフト3a、及びOS4aで構成される。
【0029】
ローカルサイトである大型ディスクアレイ装置13aと、リモートサイトである大型ディスクアレイ装置13bは、図示しない光ファイバ、広域回線網等のデータ転送路(図3の20a、20b)で接続される。大型ディスクアレイ装置13a、13b内のボリュームは、PVOL(正ボリューム)10aとSVOL(副ボリューム)10bで構成され、ホストからのデータはPVOL10aからSVOL10bにコピーされ二重化される。なお、これらボリュームは物理ディスク(図3の9a、9b)の中に保持される。
【0030】
BITMAP110(図3のBITMAPメモリ13aに保持される)、BITMAP120(図3のBITMAPメモリ13bに保持される)は、それぞれPVOL(10a)とSVOL(10b)間のデータ差分管理テーブル(ボリューム単位に管理可能)であり、PVOLとSVOLの全データブロックを数10KB(キロバイト)単位でビットマップ化したものである。BITMAP110は、PVOL(正ボリューム)に格納されているがリモート側へ未転送であるデータを表し、BITMAP120はリモート側へ転送されたがSVOL(副ボリューム)へまだ格納されていないデータを表す。通常、ペア(PAIR)状態(二重化状態)がサスペンド(P SUS)した状態となると、ホストからの新たなデータはPVOL10aにのみ書込まれるので、このデータ分がPVOL(10a)とSVOL(10b)の不一致として、このBITMAP110、120によって差分管理されることになる。
【0031】
ローカル側のFIFO7、リモート側のFIFO8は、それぞれ、ローカル側の大型ディスクアレイ装置13a、リモート側の大型ディスクアレイ装置13b間の非同期転送用のバッファキューであり、ペア(PAIR)状態の時に使用される。
【0032】
ローカル側のホスト1aからのIO(入出力)の書込みデータは、大型ディスクアレイ装置13aのPVOL(10a)対応のキャッシュに置かれる。その後、データは、物理ディスク9aに書込まれると同時に、そのIO単位に、そのIOを識別するための識別子であるシーケンス番号が付加され、即ち、ホストIOデータは順序化され、ホストコンピュータからの書込み要求の発行順に、一旦FIFO7にキューされる。なお、識別子は番号の他、タイムスタンプ等、データをホストコンピュータからの書込み要求の発行順に一意に識別できる識別子ならその種類は問わない。また、FIFOバッファ7にキャッシュ上のデータをキューイングする際は、このFIFOバッファに、キャッシュ上のデータの複製を作り実際にキューイングする方法でも良いが、データ量の増加を防ぐため、キャッシュ上のデータを管理するポインタ・アドレス等を管理するキューであることが望ましい。この場合、実際のデータをリモート側へ転送する場合は、キャッシュから実際のデータが転送されることになる。
【0033】
このシーケンス番号を付加したデータは、ホストへのIO完了応答報告と非同期に、ローカル側の大型ディスクアレイ装置13aからリモート側の大型ディスクアレイ装置13bへ転送される。リモート側の大型ディスクアレイ装置13bは、このデータを受信すると、このデータをシーケンス番号順にFIFO8にキューイングする。このFIFO8にキューされたデータは、シーケンス番号順にSVOL(副ボリューム)10b対応のキャッシュに置かれ、その後、物理ディスク9bに書込まれる。なお、受信データを一旦FIFO8にキューイングした後にシーケンス番号順にキャッシュに置く理由は、ローカル側の大型ディスクアレイ装置13aの制御の都合や転送路の通信状態の関係で、リモート側の大型ディスクアレイ装置13bは、書込み要求のデータを必ずしも、ホストコンピュータからの書込み要求の発行順序で、受信しないからである。本実施例では、前述のように、FIFO8に受信データをキューイングし、その後、受信データに割り付けられているシーケンス番号が番号順に揃った段階で、こんどは、FIFOからデータをシーケンス番号順に読み出してSVOL対応のキャッシュへ正式に書込むことで、その順序性を保証している。当然のことながら、リモート側の大型ディスクアレイ装置13bがデータを受信した順序がそのまま、ホストコンピュータから発行される書込み要求の発行順序と一致することが保証されるなら、大型ディスクアレイ装置13bは、受信データをキャッシュへSVOLデータとして直接書込める。
【0034】
大型ディスクアレイ装置13a、13b間の伝送路等の転送障害等によって非同期転送が出来ない場合、大型ディスクアレイ装置13a、13bは、FIFO7、8にキューされた未転送データをBITMAP110、120に差分データとして、ボリューム単位に、管理し、二重化を障害サスペンド(PSUE)状態とする。
【0035】
ローカル側からリモート側へのデータの転送が進むと、FIFO7内にはデータが無くなる。一方、FIFO8には、データが受信され、例えば、FIFO8内にシーケンス番号「1」〜「5」を持つデータが記憶される。その後、FIFO8からSVOL対応のキャッシュへ受信データが格納されると、FIFO8内のデータは減る。この際、SVOLへ新たに書込まれたデータに割り付けられていたシーケンス番号が新たなSVOL書込みシーケンス番号となる。従って、FIFO8から実際にSVOL対応のキャッシュへ書込まれたデータに割り当てられているシーケンス番号をリモート側の大型記憶システム内に設けられるメモリにSVOL書込みシーケンス番号として記憶しておき、ローカル側から問合せがあった場合に、このメモリ内のシーケンス番号をSVOL書込みシーケンス番号として報告すれば良い。そして、リモート側がSVOL書込みシーケンス番号として「5」を報告すると、ミドルウェア3aは、(PVOLシーケンス番号「5」)<=(SVOL書込みシーケンス番号「5」)が成立したことから、データ同期が確立したと判断する。
【0036】
次に、本願発明である、ホスト1aのAPP2aとミドルソフト3aと大型ディスクアレイ装置13aの連携によってAPP2aのCommit時のリモートサイトへの同期確認がどのように実行されるか説明する。
【0037】
これは、ホスト1aのミドルソフト3aが、APP2aから同期確認の要求を受け、大型ディスクアレイ装置13a、13bの状態とFIFO7、8キュー等から得られる、PVOLとSVOLに格納されるデータに関するシーケンス番号を比較し、コミットコマンド発行直前の“WTITE I/O”(書込み要求)のデータがリモートサイトに同期したかを確認し、APP2aへリターンを返すことで、可能になる。
【0038】
以下、ホスト1aのAPP2aとミドルソフト3aと大型ディスクアレイ装置13aの連携によってAPP2aのCommitのリモートサイトへの同期要求がどのように行われるか具体的に説明する。
【0039】
ホスト1aのAPP2aからのCommitが発行されAPP2aのCommitをリモートサイトへ同期要求する場合、まず、APP2aはトランザクションとしてデータベースへWRITEし、最後にCommitを発行する。通常はこのCommitで完了である。
【0040】
本願発明では、大型ディスクアレイ装置間でデータが二重化構成の場合、更に、Commitの直後に、本発明の特徴である“Syncコマンド”を発行する。Syncコマンドは、ホスト装置上で動作するライブラリ及びホストコマンドあり、ソフトウエア製品としてCDROM、フロッピーディスク等のソフトウェア記憶媒体を介して提供される。このSyncコマンドはミドルソフト3によってアプリケーションに提供される。また、パラメータとしてgroup(後で説明する)と最大の同期完了待ち時間を指定するtimeoutによって定義される。
【0041】
なお、このSyncコマンドを発行するタイミングは、Commit直後に限定されず、アプリケーションソフトが、リモート側とローカル側でデータの同期が必要と判断した時点に任意に発行可能である。言い換えれば、同期を取る/取らないの選択が、Syncコマンドの発行の有/無で任意にできるので、Syncコマンドを使用するアプリケーションソフトに対する自由度がある。但し、非同期リモートコピーにおいて、トランザクション単位でコミットを行う場合、リモート側の大型ディスクアレイ装置内に書込みデータが確実に記憶されているか否かを確認するという意味では、アプリケーションにおける、コミットコマンドの発行、引き続いての本発明のSyncコマンドの発行という2つのコマンドの流れは必然である。
【0042】
このミドルソフト3aは、Syncコマンドを受けると、大型ディスクアレイ装置のペア状態をチェックし、PAIR状態であればFIFO7の最新のPVOLシーケンス番号(最も新しくホストから受領したデータであって、ローカル側のキャッシュ21aに書かれており、リモートへ未コピーのデータに付与されているシーケンス番号)をローカル側のディスクアレイ装置13aから取得し、このPVOLの最新シーケンス番号をCommit直後のシーケンス番号として保持する。次に、ミドルソフト3aは、ローカル側の大型ディスクアレイ装置13aを介して、リモート側の大型ディスクアレイ装置13b内のSVOL書込みシーケンス番号(最も新しくSVOL(リモート側のキャッシュ21b)へ書き込まれたデータに付与されているシーケンス番号)を取得する。更に、PVOLシーケンス番号とSVOL書込みシーケンス番号を比較し、
(PVOLシーケンス番号)
<=(SVOL書込みシーケンス番号)
が成立するまでSVOL書込みシーケンス番号を繰返し取得し、テストを繰り返す。条件が成立すると、ミドルソフト3aは、同期完了の応答としてこのSyncコマンドの呼び出しもとであるAPP2aにリターンを返す。APP2aは、このリターンを受けると、つまり、このSyncコマンドが完了したことで同期完了とみなす。
【0043】
ここで、このPVOLシーケンス番号とSVOL書込みシーケンス番号の取得およびデータ同期について、以下、詳細に説明する。PVOLシーケンス番号は、最も新しくローカル側のキャッシュに書込まれたデータに付与されたシーケンス番号であるから、例えば、図1においては、FIFO7から最新のPVOLシーケンス番号「5」が獲得され、これがミドルソフト3aへ報告される。一方、リモート側のSVOL書込みシーケンス番号に関しては、FIFO8にはデータ「1」「2」がキューイングされた状態であることから、SVOLには「0」のシーケンス番号を持つデータまでが書込まれていることが分かる。つまり、FIFO8を用いて、番号「0」が、SVOL書込みシーケンス番号であることが分かり、このSVOL書込みシーケンス番号「0」がミドルソフト3aへ報告される。この状態では、(PVOLシーケンス番号「5」)>(SVOL書込みシーケンス番号「0」)であるから、ミドルソフト3aは、同期がとれていないと判断する。
【0044】
ローカル側からリモート側へのデータの転送が進むと、FIFO7内にはデータが無くなる。一方、FIFO8には、データが受信され、例えば、FIFO8内にシーケンス番号「1」〜「5」を持つデータが記憶される。その後、FIFO8からSVOL対応のキャッシュへ受信データが格納されると、FIFO8内のデータは減る。この際、SVOLへ新たに書込まれたデータに割り付けられていたシーケンス番号が新たなSVOL書込みシーケンス番号となる。従って、FIFO8から実際にSVOL対応のキャッシュへ書込まれたデータに割り当てられているシーケンス番号をローカル側の大型記憶システム内に設けられるメモリにSVOL書込みシーケンス番号として記憶しておき、ローカル側から問合せがあった場合に、このメモリ内のシーケンス番号をSVOL書込みシーケンス番号として報告すれば良い。そして、リモート側がSVOL書込みシーケンス番号として「5」を報告すると、ミドルウェア3aは、(PVOLシーケンス番号「5」)<=(SVOL書込みシーケンス番号「5」)が成立したことから、データ同期が確立したと判断する。
【0045】
なお、上記において、PVOLシーケンス番号、SVOL書込みシーケンス番号をFIFOから求めるのでなく、ローカル側およびリモート側のRAM等の記憶手段を別途設け、2つの番号を随時これらに記憶するようにしておき、必要な時は、これを読むようにしても良い。
【0046】
また、上記説明では、ホスト1a内のAPP2aはOS4aからは1つのプロセスであるが、複数のプロセスとしてAPP2aは存在することもできる。この場合、この複数のプロセスからそれぞれSyncコマンドが発行されるが、それぞれのSyncコマンド受領時点でのPVOL最新シーケンス番号をそれぞれのSyncコマンド対応に取得し、これをSVOL最新シーケンス番号と比較することで、複数のプロセス単位でも同期確認することが可能である。
【0047】
また、ホスト1a内のアプリケーションソフト単位にグループ化して、このグループ単位に同期確認をとることも可能である。この場合、このグループ単位に非同期転送のシーケンス番号を維持する。大型ディスクアレイ装置内に複数のグループを定義しておき、アプリケーションソフトが同期確認を行う場合、そのアプリケーションソフトが同期完了要求にグループ名を指定することでグループ単位に独立して同期確認が可能になる。
【0048】
図2は、図1を用いて説明した事項の全体制御フローを示す図である。以下制御フローに基づき詳細に説明する。ここで、図2の説明で用いるSVOLシーケンス番号は、図1の説明のSVOL書込みシーケンス番号と同意味で使用する。
【0049】
まず、制御フローは、ホスト1aのアプリケーションソフトであるAPP2aと、ペア制御及びSyncコマンドを実行するミドルソフト3aと、大型ディスクアレイ装置13aホスト1aと物理ディスク9a間でデータの転送制御を行うDKC130a(図3参照)の制御を示す。
【0050】
APP2aは、コミットポイントになると、コミットコマンドを発行し、ホストコンピュータ1aのデータバッファ内に記憶していたデータを大型ディスクアレイ装置13aへ書込む(図2には示していない)。
【0051】
次に、APP2aは、データベースへのコミット完了直後にSyncコマンドを発行する。ここで、Syncコマンドは、Syncコマンドであることを示すコマンドコード(図示せず)の他、2つの引数を有する。第1引数であるgroupは、前述したグループ名を指定する。第2引数であるtimeoutは、最大の同期完了待ち時間を指定する。APP2aは、Syncコマンドを発行した後、同期完了の報告をミドルソフト3aから受けるか、若しくは同期失敗の報告を受けるまで待つ。
【0052】
ミドルソフト3aは、Sync(group、timeout)コマンド31を実行する。Sync(group、timeout) コマンド31は、このコマンド内でまずローカル側の大型ディスクアレイ装置13a内のPVOL(正ボリューム)10aのペア状態を調べるために、PVOL状態取得コマンド201を大型ディスクアレイ装置13aに発行する(PVOL状態取得ステップ32)。大型ディスクアレイ装置13aの制御部分であるディスク制御部(DKC)130aは、このコマンド応答としてPVOLペア状態202を返す(PVOL状態応答ステップ39)。なお、groupが指定されていた場合は、このgroup単位にPVOLのシーケンス番号を管理することになる。以下、groupがある特定グループに限定されていると考え、groupの違いを省いて説明する。
【0053】
ミドルソフト3aは、PVOLペア状態202を大型ディスクアレイ装置13aから受けると、PVOL状態のチェックを行い、状態がPAIR以外(PSUS,PSUE)であれば二重化はサスペンドであるとして同期失敗をAPP2aへ返す(PVOL状態のチェックステップ33)。なお、大型ディスクアレイ装置はこれらの状態を管理する機能を有するものとする。
【0054】
一方、PVOL状態のチェックステップ33は、状態がPAIRであれば二重化状態と判断し、FIFO7にキューされている書き込みデータの最新のPVOLシーケンス番号を調べるため、PVOLシーケンス番号取得コマンド203を、大型ディスクアレイ装置13aに発行する(PVOLシーケンス番号を取得するステップ34)。
【0055】
大型ディスクアレイ装置13aは、このコマンド応答として、FIFO7上にキューされている最新のデータに付加されている最新のPVOLシーケンス番号をPVOL最新シーケンス番号204として、ミドルソフト3aへ返す(PVOL最新シーケンス応答ステップ40)。
【0056】
本発明でのミドルソフト3aは、この取得したPVOL(正ボリューム)シーケンス番号を同期確認の間保持し、後で取得するSVOL(副ボリューム)シーケンス番号との比較に使用する。
【0057】
次に、ミドルソフト3aは、リモートサイトのSVOLシーケンス番号を入手するために、SVOLシーケンス番号取得コマンド205を大型ディスクアレイ装置13aに発行する(SVOLシーケンス番号を取得するステップ35)。大型ディスクアレイ装置13aは、リモートサイトの大型ディスクアレイ装置13bからSVOL10bに書き込まれたデータに対応する最新のシーケンス番号を取得し、このSVOLシーケンス番号取得コマンドの応答として、最新のSVOL書込みシーケンス番号206をミドルソフト3aへ返す(SVOL書込みシーケンス応答ステップ41)。
【0058】
なお、リモートサイトの大型ディスクアレイ装置13bからSVOL10bに書き込まれたデータに対応する最新のシーケンス番号を取得するには、まず、ローカル側の大型ディスクアレイ装置13aが、リモート側の大型ディスク装置13bに対して、SVOLへ書込まれた最新のデータに関する最新のSVOL書込みシーケンス番号を問い合わせるコマンドを発行する。本実施例では、このコマンドは、通常のコピーデータを転送する通信路を用いて、リモートI/F制御部18a、18bを介して問い合わせられるものとする。これを受信したリモートの大型ディスクアレイ装置は、この問い合わせコマンドを解析し、SVOLへ書込まれた最新のデータに関する最新のSVOL書込みシーケンス番号を取得する。
【0059】
ここで、最新のSVOL書込みシーケンス番号は、大型ディスクアレイ装置13bが有する特定のメモリに記録され、リモート側がコピーデータを確実に保証できる形で保持した段階で、更新されているものとする。本実施例では、先に説明したように、リモート側でのデータ受信順序がホストコンピュータが発行したデータ順序と必ずしも一致していない場合を考慮し、FIFO8を使用する場合を示している。そのため、リモート側がコピーデータを確実に保証できる形とは、本実施例では、受信データを、シーケンス番号に抜けが無い状態で、FIFO8からSVOLに対応するキャッシュメモリに管理を移した状態である(なお、本システムは、キャッシュに記憶されたデータは物理ディスクに書き込むことを保証するものとする)。そして、この状態のデータに付与されたシーケンス番号がSVOL書込みシーケンス番号となる。例えば、FIFO8内にシーケンス番号「2」、「3」、「5」を有する受信データがあるとすると、シーケンス番号「2」「3」を有する受信データはSVOLに対応するキャッシュへ書込まれるがシーケンス番号「5」を有する受信データはSVOL対応のキャッシュへは書込まれない。この段階でのSVOL書込みシーケンス番号は「3」である。その後、シーケンス番号「4」を有するデータを受信すると、シーケンス番号「4」および「5」の受信データが順次SVOL対応のキャッシュに格納される。ここで初めて、リモート側がコピーデータを確実に保証できる形で保持した段階の最新のSVOL書込みシーケンス番号は、「5」ということになる。一方、ローカル側の記憶システムや、ローカル側とリモート側の間の通信路が、リモート側での受信データの順序性を保証できるものであれば、リモート側の記憶システムは受信データを受信した時点で、例えば、リモートI/F制御回路がデータを受信した時点で、その受信したデータに付与されているシーケンス番号を、本実施例でいう最新のSVOL書込みシーケンス番号として用いることができる。
【0060】
リモート側のディスクアレイ装置13bは、取得した最新のSVOL書込みシーケンス番号を、前記問い合わせコマンドの応答として、ローカル側の大型ディスクアレイ装置13aへ転送する。
【0061】
また、リモート側の最新のシーケンス番号を取得する別の方法として、リモート側の大型ディスクアレイ自体が、定期的に、又は、SVOLへのデータ書込み更新が有った際に、最新のSVOL書込みシーケンス番号をローカル側へ通知し、これをローカル側で記録するようにし、Syncコマンドが発生した時点で、ローカル側に記録したこの最新のSVOLシーケンス番号を読み出して用いるようにしても良い。
【0062】
ミドルソフト3aは、次のステップ36で、保持していたPVOL(最新)シーケンス番号とSVOL(書込み)シーケンス番号を比較し、
PVOLシーケンス番号<=SVOL書込みシーケンス番号
であれば当該PVOLシーケンス番号に対応するデータはSVOL側に書き込み済みであるとして、APP2aに同期完了を返す(PVOLとSVOLシーケンス比較ステップ36)。
【0063】
一方、
PVOLシーケンス番号>SVOLシーケンス番号
であれば同期が完了していない(リモート側へデータが書き込まれていない)として、次のステップに進みタイムアウトのチェックを行い指定timeout値を超えていれば同期完了タイムアウトとして同期失敗をAPP2aへ返す(タイムアウトのチェックステップ37)。ここで、指定timeout値を超えていなければ一定時間待ち(WAITステップ38)、その後、ステップ35からステップ38を同期が完了するまで繰り返す。繰り返しの中で、ステップ36で“PVOLシーケンス番号<=SVOLシーケンス番号”の条件が成立した時点で、同期完了し、Syncコマンドを発行した呼出し元であるAPP2に制御が戻る。APP2aは、Syncコマンドの制御が戻った時点で、戻り値をチェックし同期完了を確認する。
【0064】
以上説明したように、ホスト1aのAPP2aは、ミドルソフト3aと連携して、データベース等のトランザクションのコミットを行った直後に本願で示したSyncコマンドを実行するので、本Syncコマンド発行前にディスクアレイ装置へ書込まれたデータが、リモート側のディスクアレイ装置にデータが確実に格納されているか否かをAPP2は、知ることが出来る。見方を変えれば、本実施例を使用するホストコンピュータ内のアプリケーションからは、非同期コピーが、Syncコマンドを発行することによってアプリケーション毎に同期処理(データがコンピュータ内とリモートの記憶装置内で一致する処理)ができるリモートコピーとして見えることになる。
【0065】
(他の実施例)
図4および図5は、ホスト装置1aのミドルソフト制御の負荷を軽減する目的で、ミドルソフト3aの制御をローカル側の大型ディスクアレイ装置13a内で実施した本発明の他の実施例を示したものである。
【0066】
図4は、図1、図2のところで説明したミドルソフト制御を、大型ディスクアレイ装置内で実施した場合の、本発明の論理的なブロック図を示す。図4において、図1のミドルソフト3aで実現していた機能を図4のSync制御300(後述)で置換えた以外は、論理的構成はほぼ同じである。Sync制御300の機能は、“HOST I/F制御回路(17a)”または“リモートI/F制御回路(18a)”上で本機能を実現するプログラムを実行することで実現される。
【0067】
ホスト1a内のAPP2aは、前記実施例と同様にトランザクションとしてデータベースへWRITEし、最後にCommitを発行し、その後、本発明の特徴コマンドであるSyncコマンドを発行する。このSyncコマンドは、OSを介してディスクアレイ装置13aに入力される。なお、ここでは、Commit動作を確認するという意味でSyncコマンドをCommitの発行の後に入れているが、Syncコマンドを発行するタイミングは、この時点に限定されるものでなく、アプリケーションプログラムが必要と認識した時点で発行できる。
また、以降説明するディスクアレイ装置側でのSyncコマンドの処理も、当該Syncコマンドの発行時点に左右されるものではない。
【0068】
このSyncコマンドは、大型ディスクアレイ装置によって、これに接続されるホストに対して提供され、大型ディスクアレイ装置に内蔵されたマイクロプログラム等の機能(後述のSync制御300が相当する)である。例えば、図1のHOST I/F制御回路内のマイクロプロセッサ等が、リモートI/F制御回路等と連絡しながら実行する。
【0069】
ここで、Sync(appID、 group、timeout)コマンド51は、パラメータとして、ローカル側の大型ディスクアレイ装置13aのSync制御300がSync要求プロセスを識別するためのappIDと、前記のgroup(前述したグループ名)と、および、最大の同期完了待ち時間を指定するTimeoutを有する。
【0070】
このSyncコマンド51は、OS4aを介し大型ディスクアレイ装置13aのSync制御300に渡される。このSync制御300はSyncコマンドを受けると、前記実施例と同様にボリュームのペア状態をチェックし、PAIR状態であれば、FIFO7の“最新のPVOLシーケンス番号”とSyncコマンドパラメータとして渡される“appID”をディスクアレイ装置内のメモリに登録し、このPVOL最新シーケンス番号をCommitの直後のシーケンス番号として保持する。
【0071】
次にSync制御300は、リモート側のSVOL書込みシーケンス番号を取得し、
“PVOLシーケンス番号”
<=“SVOL書込みシーケンス番号”
が成立するまでSVOL書込みシーケンス番号を繰返しテストし、このSync制御300内で待つ。条件が成立するとこのSync制御300は、同期完了の応答として、OS4aを介し“appID”を、呼び出しもとであるAPP2aに戻す。APP2aは、この“appID”を受けると、Syncコマンドが完了したことで同期完了とみなす。なお、PVOLシーケンス番号およびSVOL書込みシーケンス番号の具体的な取得方法は、先の実施例と同様である。
【0072】
上記では、ホスト1a内のAPP2aは、OS4aからは1つのプロセスとして説明したが、複数のプロセスとしてAPP2aは存在することもできる。この場合、複数のプロセスからSyncコマンドが発行されると、Sync制御300は、appIDで識別し、プロセス対応のそれぞれのSyncコマンド受領時点でのappIDとPVOL最新シーケンス番号を登録して、後で得るSVOLシーケンス番号と比較するので複数のプロセス単位で同期確認することが可能である。結果は、登録したappIDを有するアプリケーションへ報告される。
【0073】
また、ホスト1a内のアプリケーションソフトを複数合わせてグループ化して、このグループ単位に同期確認をとることも可能である。この場合、このグループ単位に非同期転送のシーケンス番号を維持する。大型ディスクアレイ装置内に複数のグループを定義しおき、アプリケーションソフトが同期確認を行う場合、そのアプリケーションソフトが同期完了要求にグループ名を指定することでグループ単位に独立して同期確認が可能になる。
【0074】
図5は、図4で説明した事項の全体制御フローを示す図である。以下制御フローに基づき詳細に説明する。ここで、図5の説明で用いるSVOLシーケンス番号は、図4の説明のSVOL書込みシーケンス番号と同意味で使用する。制御フローは、ホスト1aのアプリケーションソフトであるAPP2aと、ペア制御及びSyncコマンドを実行するローカル側の大型ディスクアレイ装置13a内のSync制御300と、及び、リモート側大型ディスクアレイ装置13bのディスク制御DKC130bの制御を示す。
【0075】
APP2aは、データベースへのコミット完了直後にSync(appID、group、timeout)コマンド51を発行する。Syncコマンド51の第1引数であるappIDは、大型ディスクアレイ装置13aのSync制御300が、ホスト1a内のSync要求プロセス(アプリケーション)を識別するための引数である。これにより、Sync要求を発行するプロセス(アプリケーション)毎に同期確定を行うことが可能となる。第2引数であるgroupは、前述したグループ名を指定する場合に用いる。第3引数であるtimeoutは、最大の同期完了待ち時間を指定する。
【0076】
大型ディスクアレイ装置13aのSync制御300は、Sync(appID、group、timeout)コマンド51を実行する。まずSync制御300は、大型ディスクアレイ装置13a内のPVOL9のペア状態を調べる(PVOL状態のチェックステップ533)。
【0077】
Sync制御300は、PVOL状態のチェック33によって状態がPAIR以外(PSUS、PSUE)であれば二重化はサスペンドであるとして同期失敗をAPP2aに返す。状態がPAIRであれば二重化状態であり、書き込みデータはFIFO7にキューされているので、最新のPVOLシーケンス番号とappIDをディスクアレイ装置内のメモリに登録する(appIDとPVOLシーケンス番号を登録するステップ534)。この登録したPVOLシーケンス番号とappIDは、同期確認の間保持され、後で、SVOLシーケンス番号との比較に使用される。
【0078】
次に、Sync制御300は、PVOLシーケンス番号とリモートサイトのSVOLシーケンス番号の比較のために、SVOLシーケンス番号取得コマンド501をリモート側の大型ディスクアレイ装置13bのディスク制御部130b(図3のリモート側のディスクアレイ装置参照)に発行する(SVOLシーケンス番号を取得するステップ535)。
【0079】
リモート側の大型ディスクアレイ装置13bは、このコマンド501の応答としてSVOL書込みシーケンス応答として最新のSVOL書込みシーケンス番号502を、ローカル側のディスクアレイ装置13aへ返す(SVOL書込みシーケンス応答ステップ541)。なお、SVOL書込みシーケンス番号の具体的な取得方法は先の実施例と同様である。
【0080】
ローカル側のディスクアレイ装置13aのSync制御300は、次のステップ36で、保持していたappIDに対応するPVOLシーケンス番号とSVOLシーケンス番号を比較し、
“PVOLシーケンス番号”<=“SVOLシーケンス番号”
であれば当該PVOLシーケンス番号はSVOL側に書き込み済みであるとして、該当appIDと合せて同期完了を、アプリケーションソフトAPP2aを返す。一方、
“PVOLシーケンス番号”>“SVOLシーケンス番号”
であれば同期が完了していないので次の待ちステップ537に進む(appIDのPVOLとSVOLシーケンスを比較するステップ536)。
【0081】
次のタイムアウトをチェックするステップ537では、タイムアウトのチェック537を行い、指定timeout値を超えていれば同期完了タイムアウトとして同期失敗をAPP2aへ返す。一方、指定timeout値を超えていなければ一定時間WAIT538する(WAITステップ538)。
【0082】
その後、ステップ535から同期が完了するまでステップ536を繰り返し、
“PVOLシーケンス番号”<=“SVOLシーケンス番号”
の条件が成立した時点で、同期が完了したとして、Syncコマンド51の呼び出し元であるAPP2aに、Sync制御から、制御を返す。APP2aは、Syncコマンドの制御が戻った時点で、appIDをチェックすると共に戻り値(同期が完了したか否かを示す値)をチェックし同期完了を確認する。
【0083】
以上説明したようにディスクアレイ装置が、Syncコマンドを受信すると、ホストからの書込み要求のデータが確実にリモート側のディスクアレイ装置にコピーされたか否か確認した上で、ホストに対し報告することが可能となる。従って、ホストはディスクアレイ装置が非同期リモートコピーを行っている場合でも、Syncコマンドを発行することによって、Syncコマンドの発行前にディスクアレイ装置へ書込まれているデータがリモート側へ転送されているかを正確に知ることができ、データベース等で必要となるCommit制御を確実なものとすることができる。見方を変えれば、本実施例を使用するホストコンピュータ内のアプリケーションからは、非同期コピーが、Syncコマンドを発行することによってアプリケーション毎に同期処理(データがコンピュータ内とリモートの記憶装置内で一致する処理)ができるリモートコピーとして見えることになる。
【0084】
上記実施例では、コミットコマンドの発行に続けてSyncコマンドの発行という形で発明を説明したが、次のような変形も可能である。
【0085】
一つ目は、最初の実施例においてミドルソフト3aを機能拡張し、これにより、非同期データ転送を行っている場合は、アプリケーションから受けた従来のコミットコマンドを「従来のコミットコマンド+Syncコマンド」と認識して、処理する方法である。具体的には、機能拡張されたミドルソフト3aは、コミットコマンドを受けると、まず、コンピュータ内のデータバッファ内にあるデータを記憶システムへ書込む。それと合わせて、コミットの対象となるデータが記憶されるボリュームが非同期コピー中か否かを判断する。対象ボリュームが非同期コピー中の場合は、ミドルソフト3aは本発明の最初の実施例に対応した問合せコマンドをローカル側の記憶システムへ発行する。その後、ミドルソフト3aは、ローカル側の記憶システムから書込み完了を受けるが、この時点ではアプリケーションに対してコミットコマンドに対するリターンを返さず、先の問合せコマンドに対する応答が有るのを待つ。そして、ミドルソフト3aは、記憶システムから問合せコマンドに対する応答を受け、リモート側の記憶システムで書込みデータの確定が取れた時点で初めて、前記アプリケーションへ、コミットコマンドに対するリターンを返すようにする。この方法では、アプリケーションはSyncコマンドを発行する必要が無いので、非同期コピー中であることを意識しなくてすむというメリットがある。
【0086】
2つ目は、ローカル側の記憶システムが非同期リモートコピーを行っている際、書込みコマンドを発行するホストコンピュータに対して、リモート側の記憶システムが書込みコマンドのデータをどの時点まで記憶したかを、定期的に、報告する方法である。例えば、ローカル側の記憶システムは、定期的に、ホストからのある書込み要求が発行された時刻を記憶しておき、この書込み要求以前に発行された全ての書込み要求に対応するデータがリモート側の記憶システムへ確実に記憶された段階で、先に記録した時刻をホストコンピュータへ返すようにする。
このようにすれば、ホストコンピュータは定期的にどの時刻までの書込み要求が確実にリモート側の記憶システムへ記憶されたかが分かるようになる。一方、ホスト側のアプリケーションは、従来と同様にコミットコマンドを発行する。このコミットコマンドを受けた時点でミドルソフトは、ローカル側の記憶システムへデータバッファ内のデータを書込むため、書込み要求を発行するが、この際、書込み要求を発行した最終時刻を記憶するようにする。そして、ミドルソフトは、この書込み要求に対する全ての書込み完了を受け、かつ、当該最終時刻に等しいか又は遅い、先に述べたローカル側の記憶システムが定期的に報告する時刻を受けた場合に、アプリケーションに対し、先のコミットコマンドに対するリターンを返すようにする。この2つ目の方法では、ホスト側のアプリケーションはSyncコマンドを発行する必要が無いので、非同期コピー中であることを意識しなくてすむというメリットがある。また、記憶システム側は自発的にリモート側の状況をホストコンピュータに通知するだけなので、ホストコンピュータと記憶システム間のインタフェースが簡単なものとなる。
【0087】
なお、この2つ目の方法において、ローカル側の記憶システムが定期的にどの時刻までの書込み要求をリモート側の記憶システムに確実に書込んだかをホストコンピュータに報告する例をあげている。このような機能を有する記憶システムは、本実施例で説明するようなアプリケーションのためのデータ同期確認にもちろん利用可能であるが、これ以外にも、ホストコンピュータ側から記憶システム状態を知る上で重要な情報を提供しているわけであり、本記憶システムはホスト側から管理しやすい、又は、制御しやすい、又は、使いやすい記憶システムということができる。
【0088】
【発明の効果】
本発明では、非同期リモートコピーを行っている際、ホストに対し、書込み要求のデータがリモート側に記憶されたか否かを判断するのに必要なリモート側の記憶システムに関する情報をローカル側の記憶システム経由でホストに提供するので、アプリケーションは、ホスト内データとリモート側記憶システム内のデータとの一致を確認できる。
【0089】
また、本発明では、非同期リモートコピーを行う記憶システムが、ホストに対し、書込み要求のデータがリモート側に記憶されたか否かを通知するので、ホスト内のアプリケーションは、ホスト内データとリモート側記憶システム内のデータとの一致を確認できる。
【図面の簡単な説明】
【図1】本発明の論理的なブロック図を示す。
【図2】本発明の全体制御フローを示す。
【図3】本発明を適用する一般的なHAクラスタの全体構成図である。
【図4】本発明の第2の実施例の論理的なブロック図を示す。
【図5】本発明の第2の実施例に相当する全体フローを示す。
【符号の説明】
1a、1b ホスト装置
2a、2b アプリケーションソフト(APP)
3a、3b ミドルソフト
300 Sync制御
4a、4b オペレーティングシステム(OS)
5 PVOL最新シーケンス番号
6 SVOL書込みシーケンス番号
7 FIFO(PVOL対応)
8 FIFO(SVOL対応)
10a P(正)VOL
10b S(副)VOL
110 BITMAP(PVOL対応)
120 BITMAP(SVOL対応)
13a ローカル側大型ディスクアレイ装置
13b リモート側大型ディスクアレイ装置
31 実施例のSyncコマンド
51 他の実施例のSyncコマンド
Claims (8)
- 計算機と、第二のストレージ装置と、に接続された第一のストレージ装置であって、
プロセッサと、
前記プロセッサから参照される制御プログラムやデータが保存されたメモリと、を有し、
前記プロセッサは、
前記計算機から送信された複数の書き込み対象のデータに、前記計算機からの書き込み要求が発行された順に識別子を付与し、
前記書き込み対象のデータを、前記書き込み要求とは非同期に、前記第二のストレージ装置に送信し、
前記計算機によって実行されるアプリケーションプログラムのトランザクションごとに対するコミットに基づいて、前記計算機が発行した、前記第二のストレージ装置が前記書込み対象のデータを格納したかを確認するデータ格納確認コマンドを前記計算機から受信して、前記第二のストレージ装置のボリュームに書き込まれるデータの前記識別子を前記第二のストレージ装置に問い合わせ、
前記データ格納確認コマンドを受信するまでに、前記計算機から書き込まれたデータに付加した第1の識別子と、前記第二のストレージ装置から得た第2の識別子とを比較し、
この比較結果に基づいて、前記データ格納確認コマンドに対する完了応答を、前記計算機へ送信する、ストレージ装置。 - 前記識別子は、複数の前記書込み対象のデータの順序性を示すシーケンス番号である、請求項1記載のストレージ装置。
- 前記第2の識別子は、前記第二のストレージ装置への前記問い合わせの直前に、前記第二のストレージ装置に格納されたデータに付与された識別子であり、
前記第1の識別子は、前記データ格納確認コマンドを受信する直前に、前記計算機から書き込まれた最新データに対する識別子である、請求項2記載のストレージ装置。 - 前記アプリケーションプログラムが前記トランザクションのコミットポイントでコミットコマンドを送信した直後に、前記計算機から、前記データ格納確認コマンドを受信する、請求項1記載のストレージ装置。
- 前記計算機は前記アプリケーションプログラムを複数備え、
前記複数のアプリケーションプログラムはグループ分けされており、
前記識別子は、前記複数のアプリケーションプログラムのグループを識別するための情報を含む、請求項2記載のストレージ装置。 - 計算機に接続する第一のストレージ装置と、第二のストレージ装置と、の間のデータコピー制御方法であって、
前記第一のストレージ装置は、
前記計算機から送信された複数の書き込み対象のデータに、前記計算機からの書き込み要求が発行された順に識別子を付与し、
前記書き込み対象のデータを、前記書き込み要求とは非同期に、前記第二のストレージ装置に送信し、
前記計算機によって実行されるアプリケーションプログラムのトランザクションごとに対するコミットに基づいて、前記計算機が発行した、前記第二のストレージ装置が前記書込み対象のデータを格納したかを確認するデータ格納確認コマンドを前記計算機から受信して、前記第二のストレージ装置のボリュームに書き込まれるデータの前記識別子を前記第二のストレージ装置に問い合わせ、
前記データ格納確認コマンドを受信するまでに、前記計算機から書き込まれたデータに付加した第1の識別子と、前記第二のストレージ装置から得た第2の識別子とを比較し、
この比較結果に基づいて、前記データ格納確認コマンドに対する完了応答を、前記計算機へ送信する、リモートコピー制御方法。 - 計算機に接続する第一のストレージ装置に、第二のストレージ装置へのデータコピーを実行させるためのプログラムが記録されたコンピュータ読取可能な媒体であって、
前記プログラムは、
前記計算機から送信された複数の書き込み対象のデータに、前記計算機からの書き込み要求が発行された順に識別子を付与するステップと、
前記書き込み対象のデータを、前記書き込み要求とは非同期に、前記第二のストレージ装置に送信するステップと、
前記計算機によって実行されるアプリケーションプログラムのトランザクションごとに対するコミットに基づいて、前記計算機が発行した、前記第二のストレージ装置が前記書込み対象のデータを格納したかを確認するデータ格納確認コマンドを前記計算機から受信して、前記第二のストレージ装置のボリュームに書き込まれるデータの前記識別子を前記第二のストレージ装置に問い合わせるステップと、
前記データ格納確認コマンドを受信するまでに、前記計算機から書き込まれたデータに付加した第1の識別子と、前記第二のストレージ装置から得た第2の識別子とを比較するステップと、
この比較結果に基づいて、前記データ格納確認コマンドに対する完了応答を、前記計算機へ送信するステップと、を前記第一のストレージ装置に実行させるものである、媒体。 - 計算機と、
前記計算機に接続する第一のストレージ装置と、
前記第一のストレージ装置に接続する第二のストレージ装置と、
を備える、データコピー制御システムであって、
前記第一のストレージ装置は、
プロセッサと、
前記プロセッサから参照されるプログラムやデータが保存されたメモリと、を有し、
前記プロセッサは、
前記計算機から送信された複数の書き込み対象のデータに、前記計算機からの書き込み要求が発行された順に識別子を付与し、
前記書き込み対象のデータを、前記書き込み要求とは非同期に、前記第二のストレージ装置に送信し、
前記計算機によって実行されるアプリケーションプログラムのトランザクションごとに対するコミットに基づいて、前記計算機が発行した、前記第二のストレージ装置が前記書込み対象のデータを格納したかを確認するデータ格納確認コマンドを前記計算機から受信して、前記第二のストレージ装置のボリュームに書き込まれるデータの前記識別子を前記第二のストレージ装置に問い合わせ、
前記データ格納確認コマンドを受信するまでに、前記計算機から書き込まれたデータに付加した第1の識別子と、前記第二のストレージ装置から得た第2の識別子とを比較し、
この比較結果に基づいて、前記データ格納確認コマンドに対する完了応答を、前記計算機へ送信する、データコピー制御システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000285237A JP4546629B2 (ja) | 2000-05-25 | 2000-09-14 | 記憶システム、記憶システムの応答方法及び記録媒体 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000159547 | 2000-05-25 | ||
JP2000-159547 | 2000-05-25 | ||
JP2000285237A JP4546629B2 (ja) | 2000-05-25 | 2000-09-14 | 記憶システム、記憶システムの応答方法及び記録媒体 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002049517A JP2002049517A (ja) | 2002-02-15 |
JP2002049517A5 JP2002049517A5 (ja) | 2007-09-20 |
JP4546629B2 true JP4546629B2 (ja) | 2010-09-15 |
Family
ID=26592864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000285237A Expired - Fee Related JP4546629B2 (ja) | 2000-05-25 | 2000-09-14 | 記憶システム、記憶システムの応答方法及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4546629B2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6889231B1 (en) | 2002-08-01 | 2005-05-03 | Oracle International Corporation | Asynchronous information sharing system |
JP4283576B2 (ja) | 2003-03-27 | 2009-06-24 | 株式会社日立製作所 | トランザクション同期方法、データベースシステム及びデータベース装置 |
JP2004302556A (ja) | 2003-03-28 | 2004-10-28 | Hitachi Ltd | 複数の計算機システム間でのデータ共有方法およびディスク制御装置 |
JP4371724B2 (ja) | 2003-07-03 | 2009-11-25 | 株式会社日立製作所 | 記憶システム及び記憶装置システム |
US7243200B2 (en) * | 2004-07-15 | 2007-07-10 | International Business Machines Corporation | Establishing command order in an out of order DMA command queue |
US7680793B2 (en) | 2005-10-07 | 2010-03-16 | Oracle International Corporation | Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers |
US7801856B2 (en) | 2006-08-09 | 2010-09-21 | Oracle International Corporation | Using XML for flexible replication of complex types |
JP4844736B2 (ja) * | 2006-08-29 | 2011-12-28 | 日本電気株式会社 | ディスクアレイシステムのデータ同期方法及びコンピュータプログラム |
JP4861480B2 (ja) * | 2006-09-22 | 2012-01-25 | オーセ プリンティング システムズ ゲゼルシャフト ミット ベシュレンクテル ハフツング | 印刷データの自動的な伝送、特に印刷ジョブのミラーリングのための方法及びシステム |
JP4369486B2 (ja) | 2007-02-01 | 2009-11-18 | 富士通株式会社 | データ転送装置、半導体集積回路、および処理状況通知方法 |
JP4998549B2 (ja) | 2007-02-28 | 2012-08-15 | 富士通株式会社 | メモリミラー化制御プログラム、メモリミラー化制御方法およびメモリミラー化制御装置 |
JP4935901B2 (ja) | 2007-05-01 | 2012-05-23 | 富士通株式会社 | ストレージシステム、ストレージ装置、リモートコピー方法 |
JP2010160544A (ja) * | 2009-01-06 | 2010-07-22 | Core Micro Systems Inc | キャッシュメモリシステム及びキャッシュメモリの制御方法 |
US8171202B2 (en) * | 2009-04-21 | 2012-05-01 | Google Inc. | Asynchronous distributed object uploading for replicated content addressable storage clusters |
JP5331050B2 (ja) * | 2009-08-27 | 2013-10-30 | 日本電信電話株式会社 | データ同期システム、データ同期方法、情報処理装置、情報処理方法、およびプログラム |
JP5923913B2 (ja) * | 2011-09-27 | 2016-05-25 | 富士通株式会社 | ストレージ装置、ストレージ装置の制御方法及びストレージシステム |
GB2496377B (en) | 2011-11-02 | 2014-07-30 | Ibm | Message reconciliation during disaster recovery |
US9361213B2 (en) * | 2013-01-23 | 2016-06-07 | Hitachi, Ltd. | Method and apparatus for efficient remote copy |
MX2020010658A (es) * | 2018-04-10 | 2020-10-28 | Huawei Tech Co Ltd | Sincronizacion de bases de datos de punto a punto en un protocolo de transporte. |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08509565A (ja) * | 1993-04-23 | 1996-10-08 | イーエムシー コーポレーション | 遠隔データのミラー化 |
-
2000
- 2000-09-14 JP JP2000285237A patent/JP4546629B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08509565A (ja) * | 1993-04-23 | 1996-10-08 | イーエムシー コーポレーション | 遠隔データのミラー化 |
Also Published As
Publication number | Publication date |
---|---|
JP2002049517A (ja) | 2002-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1158409B1 (en) | Storage system making possible data synchronisation confirmation at time of asynchronous remote copy | |
JP4546629B2 (ja) | 記憶システム、記憶システムの応答方法及び記録媒体 | |
US8209282B2 (en) | Method, system, and article of manufacture for mirroring data at storage locations | |
US7043665B2 (en) | Method, system, and program for handling a failover to a remote storage location | |
US7734883B2 (en) | Method, system and program for forming a consistency group | |
US7188222B2 (en) | Method, system, and program for mirroring data among storage sites | |
US7383264B2 (en) | Data control method for duplicating data between computer systems | |
US7475208B2 (en) | Method for consistent copying of storage volumes | |
US6981008B2 (en) | Method for duplicating data of storage subsystem and data duplicating system | |
US7627775B2 (en) | Managing failures in mirrored systems | |
JP4902289B2 (ja) | バックアップシステム及びバックアップ方法 | |
US7293194B2 (en) | Method and device for switching database access part from for-standby to currently in use | |
JP4289056B2 (ja) | 計算機システム間のデータ二重化制御方法 | |
JP2007518195A (ja) | リモートデータミラーリングを用いたクラスタデータベース | |
JP2003099306A (ja) | 計算機システムおよび計算機システムにおけるバックアップ方法 | |
JP2017111580A (ja) | 制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060418 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070806 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070806 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20070806 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20070822 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090210 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100311 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100317 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100517 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100628 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100702 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130709 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |