JP2004086721A - データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム - Google Patents

データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム Download PDF

Info

Publication number
JP2004086721A
JP2004086721A JP2002249049A JP2002249049A JP2004086721A JP 2004086721 A JP2004086721 A JP 2004086721A JP 2002249049 A JP2002249049 A JP 2002249049A JP 2002249049 A JP2002249049 A JP 2002249049A JP 2004086721 A JP2004086721 A JP 2004086721A
Authority
JP
Japan
Prior art keywords
data
storage
processing
standby
unit
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.)
Pending
Application number
JP2002249049A
Other languages
English (en)
Inventor
Junichi Yamato
大和 純一
Yoshihide Kikuchi
菊地 芳秀
Yuji Kaneko
金子 裕治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2002249049A priority Critical patent/JP2004086721A/ja
Priority to US10/644,934 priority patent/US7343514B2/en
Publication of JP2004086721A publication Critical patent/JP2004086721A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover

Abstract

【課題】待機系のシステムにデータを送信して耐障害性を確保する際、データの送信に伴う正常系のシステムの処理の遅れを防止する。
【解決手段】中継装置15は、正常系のホスト(ホストコンピュータ)10おおびストレージ11の設置場所において地震等の災害が発生したときに、災害の影響が波及すると想定される範囲の外に設置される。さらに、ストレージ11とストレージ12とが直接データを転送する場合のデータ転送時間よりも、ストレージ11と中継装置15との間のデータ転送時間が短くなるような位置に設置される。中継装置15は、ストレージ11からデータを受信した場合、ストレージ12に対してそのデータの送信を完了させる前に、ストレージ11に対してデータ受信完了を通知する。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラムに関する。
【0002】
【従来の技術】
災害等が発生してもコンピュータシステムの機能を維持できるようにするため、正常系(稼働系)のシステムと待機系のシステムとが設けられたコンピュータシステムが実現されている。例えば、EMC Corporation(イーエムシー コーポレーション)は、正常系のストレージと待機系のストレージとを用いてミラーリングを行うシステムを実現している。このシステムに関する情報は、「http://www.emc2.co.jp/local/ja/JP/products/product_pdfs/srdf/srdf.pdf 」というURLで公開されている。
【0003】
また、特開2000−305856公報には、メインセンター(正常系のシステム)とリモートセンター(待機系のシステム)とでデータの二重化を図るシステムが記載されている。
【0004】
一般に、正常系のシステムでは、正常系のストレージとそのストレージを使用する正常系のホストコンピュータ(以下、ホストという。)とが接続される。待機系のシステムも同様である。そして、正常系のストレージと待機系のストレージとが、例えば、専用回線やインターネット等の通信ネットワークを介して接続される。
【0005】
「http://www.emc2.co.jp/local/ja/JP/products/product_pdfs/srdf/srdf.pdf 」において公開されているシステムや、特開2000−305856公報に記載されたシステムでは、正常系のシステムから待機系のシステムに直接データを送信している。しかし、正常系のシステムから中継装置にデータを送信し、中継装置から待機系のシステムにデータを送信することもある。一般に、中継装置は、正常系のシステムから受信したデータを待機系のシステムに送信し、待機系のシステムから受信完了の通知を受けたときに、正常系のシステムに待機系へのデータ転送が完了したことを通知している。そして、正常系のシステムは、中継装置にデータを送信した場合、データ転送が完了した旨の通知を中継装置から受信してから次の処理を開始する。
【0006】
また、一般に、通信ネットワークを介してデータを送受信する場合、データを分割してデータ送信単位毎に送受信する。このデータ送信単位は、通信プロトコル毎に異なる。ここでは、パケットをデータ送信単位とする場合を例に説明する。パケット等のデータ送信単位には、送信対象のデータだけでなく、送信過程でのデータの誤り(データ化け)を検出するためのエラー検出コードも含まれる。エラー検出コードとしては、チェックサムデータやCRC(Cyclic Redundancy Check )データ等がある。データを受信した装置は、エラー検出コードによってデータの誤りを検出すると、そのパケットを廃棄する。
【0007】
また、データに誤りが生じていない場合でも、通信ネットワークに輻輳(通信負荷が高い状態)が生じると、パケットは通信ネットワーク上で廃棄される。パケットが廃棄され、送信先からの応答が得られない場合、送信元は再度パケットを送信する。なお、通信ネットワークに輻輳が生じたときにパケットの廃棄を開始すると、送信元による再送信によってさらに通信負荷が高くなったり、通信ネットワークの利用率が低くなったりすることがある。このような問題を回避するため、近年、通信負荷が所定のしきい値を越えたときに通信ネットワークを構成する機器が任意にパケットを廃棄する方式が採用されている。この方式は、RED(Random Early Detection)と呼ばれている。
【0008】
また、データを受信した装置がデータの誤りを訂正することができるデータ伝送方式も提案されている。例えば、特開昭57−138237号公報には、送信対象のデータと、そのデータから作成されたパリティビットとを別々に送信し、送信対象のデータとパリティビットとを受信した装置が誤り訂正を行うデータ伝送方式が記載されている。
【0009】
なお、以下、ミラーリングとバックアップとを以下のように区別するものとする。「ミラーリング」とは、あるストレージに対してホストから書込コマンド(write コマンド)が出力されたことを契機として、そのストレージを含む2つ以上のストレージに対して同じデータを書き込むことと定義する。レプリケーションもミラーリングの一種として扱う。また、「バックアップ」とは、ストレージに対するwrite コマンドを契機とせず、任意のタイミングで、あるストレージの内容を他のストレージに複写することと定義する。
【0010】
また、コンピュータシステムにおいて、実行中のプログラムを任意の時点で中断させ、後に再開させる技術が実現されている。例えば、SXシリーズという名称で販売されている日本電気株式会社製のスーパコンピュータでは、任意の時点におけるプロセスの実行状態(例えば、メモリやレジスタの状態等)を保存して、プログラムを中断・再開するようにしている。この機能は、チェックポイント・リスタート機能と呼ばれる場合もある。
【0011】
【発明が解決しようとする課題】
正常系のシステムから中継装置を介して待機系のシステムにデータを送信する場合には、以下のような問題があった。中継装置は、正常系のシステムから受信したデータを待機系のシステムに送信し、待機系のシステムから受信完了の通知を受けたときに、転送が完了したことを正常系のシステムに通知する。そして、正常系のシステムは、転送が完了した旨の通知を中継装置から受信しなければ、次の処理に移行しない。そのため、正常系のシステムが中継装置にデータを送信してから、次の処理を開始できるまでの時間がかかってしまうという問題があった。特に、災害対策として中継装置や待機系のシステムを設ける場合には、正常系のシステムの遠隔地に中継装置を配置し、待機系のシステムをより遠い場所に配置する。その結果、正常系システムと中継装置との間でデータや通知を送受信する時間や、中継装置と待機系システムとの間でデータや通知を送受信する時間がかかってしまい、正常系のシステムにおける次の処理の開始が遅れてしまう。
【0012】
例えば100km離れた地点との通信におけるラウンドトリップ時間(データを送信してから応答を得るまでの往復時間)は、ms(ミリ秒)のオーダである。ホストは、μs(マイクロ秒)のオーダで各処理を進める。従って、送信に対する応答を得るまでの時間は、処理の遅れの原因となる。
【0013】
また、データの送信過程において、パケット等のデータ送信単位で廃棄されると、送信元となる正常系のストレージはデータを再送信することになる。すると、データ送信完了までに一層時間がかかり、次の処理の開始がさらに遅れてしまう。
【0014】
また、正常系のストレージから待機系のストレージにデータのバックアップ処理を行うときには、データの送信距離が長いことに加えて、送信すべきデータの量が多くなるため、送信時間が一層増大してしまう。
【0015】
また、正常系のシステムに異常が生じたときに、待機系のシステムですぐに処理を開始できるとは限らなかった。例えば、ある処理Xを開始する際には、ストレージに対するデータAおよびデータBの書き込みが完了していなければならないとする。正常系のホストがデータAを書き込むwrite コマンドをストレージに出力してミラーリングを行うと、待機系のストレージにもデータAは反映される。その後、正常系のシステムに異常が発生したとする。この場合、待機系のストレージには、データBが書き込まれていないため、すぐに処理Xを開始できない。待機系のシステムで処理を開始する場合には、待機系のストレージにデータBを書き込んで処理Xを開始するか、あるいは、データAを削除して処理Xの前の処理からやり直す必要がある。そのため、待機系システムでの処理の再開に時間がかかってしまっていた。
【0016】
また、所定のデータ記録状態になっていれば処理を再開できるような機能がアプリケーションプログラムによって実現されていない場合がある。例えば、上記の例においてホストがストレージにA,Bを書き込んだならば処理Xから処理を再開できるようにした機能が実現されていない場合がある。以下、ストレージが所定のデータ記録状態になっていれば処理を再開できるような機能を「再開機能」と記す。アプリケーションプログラムによって再開機能が実現されていない場合においても、正常系で異常が生じたならば、待機系で迅速に処理を再開できることが好ましい。
【0017】
そこで本発明は、中継装置を介して待機系のシステムにデータを送信する場合に、正常系のシステムが早く次の処理を開始できるようにすることを目的とする。また、送信過程でデータが廃棄されたとしても迅速にデータの送受信を完了できるようにすることを目的とする。また、正常系のシステムで異常が発生したときに、すぐに待機系のシステムが処理を進められるようにすることを目的とする。
【0018】
【課題を解決するための手段】
本発明によるデータ複製システムは、第一のストレージ内のデータを通信ネットワークを介して第二のストレージにミラーリングまたはバックアップするデータ複製システムにおいて、第一のストレージから第二のストレージに転送されるデータを中継する中継装置であって、第一のストレージが災害によって稼働できない状態になっても、稼働を継続できるとあらかじめ算定された位置に設置された中継装置を備え、第一のストレージは、データ転送の制御を行うデータ転送処理手段を含み、データ転送処理手段は、中継装置に対してデータ転送を完了したときに、第二のストレージに対してデータ転送を完了したとみなすことを特徴とする。
【0019】
中継装置は、第一のストレージから受信したコマンドおよびデータを記憶するための不揮発性記憶手段と、データの中継制御を行う中継処理手段とを含み、中継処理手段は、第一のストレージから受信したコマンドおよびデータを不揮発性記憶手段に記憶し、記憶されたコマンドおよびデータを任意のタイミングで第二のストレージに送信する構成であってもよい。そのような構成によれば、中継装置と第二のストレージとが接続される通信ネットワークの運用コストを低減することができる。
【0020】
複数の中継装置が設けられ、第一のストレージにおけるデータ転送処理手段は、第一のストレージ内のデータを同時に複数の中継装置に向けて送信してもよい。そのような構成によれば、データの転送をより迅速に行うことができる。
【0021】
また、本発明による中継装置は、第一のストレージから第二のストレージに転送されるデータを中継する中継装置であって、第一のストレージから受信したデータを記憶するための記憶手段と、データの中継制御を行う中継処理手段とを含み、中継処理手段は、第一のストレージから受信したデータを記憶手段に記憶し、記憶手段にデータを記憶したときに第一のストレージに対する応答を送信し、第二のストレージに対して記憶手段に記憶したデータを送信することを特徴とする。
【0022】
また、本発明によるデータを送信する送信元からデータを受信する送信先にデータを送信するデータ送受信方法において、送信元では、送信される元データから少なくとも1つのエラー訂正のための冗長データを作成し、元データと冗長データとを別々のデータ送信単位で送信することを特徴とする。
【0023】
送信先では、元データと冗長データとの集合であるデータ群のすべてについて受信を完了する前に、元データについて部分的にエラー訂正処理を実行できるデータ群の一部を受信した段階で、エラー訂正処理を実行することが好ましい。そのような方法によれば、送信過程でデータの一部が廃棄されても、送信元はデータを再度送信する必要がない。
【0024】
例えば、送信元では、元データを分割データに分割し、それらの分割データのうちの1つまたは複数が消失しても元データを復元可能な冗長データを作成する。
【0025】
例えば、冗長データとしてパリティデータまたはECC(Error Correcting Code )を用いればよい。
【0026】
また、冗長データとして送信データの複製データを用いてもよい。
【0027】
元データと冗長データとを、別々の通信ネットワークに送出してもよい。そのような方法によれば、一方の通信ネットワークで障害等が発生しても、もう一方の通信ネットワークから受信したデータによって処理を進めることができる。
【0028】
また、本発明によるデータ複製システムは、第一のストレージ内のデータを第二のストレージに通信ネットワークを介してミラーリングまたはバックアップするデータ複製システムにおいて、第一のストレージは、データ転送の制御を行うデータ転送処理手段と、送信される元データから少なくとも1つのエラー訂正のための冗長データを作成する冗長化手段とを含み、データ転送処理手段は、元データと冗長化手段が作成した冗長データとを別々のデータ送信単位で送信することを特徴とする。
【0029】
第二のストレージは、第一のストレージから受信した冗長データを用いてエラー訂正処理を行うデータ復元手段と、データ復元手段が復元したデータを記憶媒体に格納する格納処理手段とを含み、データ復元手段は、第一のストレージから元データと冗長データとの集合であるデータ群のすべてについて受信を完了する前に、元データについて部分的にエラー訂正処理を実行できるデータ群の一部を受信した段階で、エラー訂正処理を実行することが好ましい。そのような構成によれば、送信過程でデータの一部が廃棄されても、送信元はデータを再度送信する必要がない。
【0030】
例えば、第一のストレージにおける冗長化手段は、元データを分割データに分割し、それらの分割データのうちの1つまたは複数が消失しても元データを復元可能な冗長データを作成する。
【0031】
冗長化手段は、冗長データとしてパリティデータまたはECCを用いてもよい。
【0032】
冗長化手段は、冗長データとして、元データの複製データを作成してもよい。
【0033】
データ転送処理手段は、元データと冗長データとを、別々の通信ネットワークに送出してもよい。そのような構成によれば、一方の通信ネットワークで障害等が発生しても、もう一方の通信ネットワークから受信したデータによって処理を進めることができる。
【0034】
また、本発明によるデータ複製システムは、稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおいて、稼働系のストレージは、データの書き込み要求が発生すると、書き込み対象のデータと遅延書き込み要求とを待機系のストレージに送信する遅延書き込み要求手段と、そのデータの状態であればアプリケーションがそのまま動作を再開可能な再開可能ポイントであることを知らせるための再開可能ポイント通知を上位装置から受けると遅延書き込み実行要求を待機系のストレージに送信する書き込み実行要求手段とを含み、待機系のストレージは、データを一時的に記憶する一時記憶手段と、受信したデータを遅延書き込み要求に応じて一時記憶手段に格納するとともに、遅延書き込み実行要求を受信すると一時記憶手段に格納されているデータを記憶媒体に格納する格納処理手段とを含むことを特徴とする。
【0035】
稼働系のストレージにおける遅延書き込み要求手段と遅延書き込み実行要求手段とは、遅延書き込み要求と遅延書き込み実行要求とを待機系のストレージに非同期に送信し、待機系のストレージにおける格納処理手段は、一の遅延書き込み実行要求を受信すると、一つ前の遅延書き込み実行要求と一の遅延書き込み実行要求との間に送信された遅延書き込み要求に対応するデータを全て一時記憶手段に格納し終え、一つ前の遅延書き込み実行要求以前に送信されたデータを記憶媒体に格納し終えたときに、一時記憶手段に格納されているデータを記憶媒体に格納する。
【0036】
待機系のストレージにおける格納処理手段は、稼働系に異常が生ずると、一時記憶手段に格納されているデータを破棄する。
【0037】
また、本発明によるデータ複製システムは、稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおいて、稼働系のストレージは、データの書き込み要求が発生すると、書き込み対象のデータと書き込み要求とを待機系のストレージに送信する書き込み要求手段と、そのデータの状態であればアプリケーションがそのまま動作を再開可能な再開可能ポイントであることを知らせるための再開可能ポイント通知を上位装置から受けるとスナップショット作成要求を待機系のストレージに送信するスナップショット作成要求手段とを含み、待機系のストレージは、書き込み要求を受信したら書き込み要求に対応するデータを書き込むべき領域を割り当てて記憶媒体にデータを格納するとともに、記憶媒体へのデータ格納状況を示す格納情報を更新し、スナップショット作成要求を受信したらスナップショットを作成するスナップショット作成手段を含むことを特徴とする。
【0038】
例えば、書き込み要求手段は、待機系ストレージのスナップショット作成手段がスナップショットを作成している場合には、スナップショット作成手段がスナップショット作成を完了した後に、書き込み要求を待機系のストレージに送信する。
【0039】
また、稼働系のストレージにおける書き込み要求手段とスナップショット作成要求手段とは、書き込み要求とスナップショット作成要求とを待機系のストレージに非同期に送信し、待機系のストレージにおけるスナップショット作成手段は、各書き込み要求を受信したときに、受信した書き込み要求の直前のスナップショット作成要求に基づくスナップショットの作成を完了するまで、書き込み要求に対応するデータを記憶媒体に格納するのを待ち、一のスナップショット作成要求を受信すると、一つ前のスナップショット作成要求に基づくスナップショットの作成を完了し、一つ前のスナップショット作成要求と一のスナップショットとの間に送信された書き込み要求に対応するデータを全て記録媒体に格納し終えたときに、スナップショットを作成してもよい。
【0040】
待機系のストレージにおけるスナップショット作成手段は、稼働系に異常が生ずると、直前のスナップショット作成後にデータが格納された記憶媒体の領域を未使用状態として解放し、格納情報を直前のスナップショット作成時の状態に戻す。
【0041】
また、稼働系のストレージを使用する稼働系の上位装置は、再開可能ポイントになると稼働系のストレージに再開可能ポイント通知を送信する再開可能ポイント通知手段を含み、待機系のストレージを使用する待機系の上位装置は、稼働系の異常を検出すると、異常の発生を待機系のストレージに通知して待機系のストレージの状態を再開可能ポイントに対応する状態にするように促し、待機系のストレージの状態が再開可能ポイントに対応する状態になったときに処理を再開する構成であってもよい。
【0042】
また、稼働系のストレージを使用する稼働系の上位装置は、待機系のストレージを使用する待機系の上位装置に、稼働系の処理実行状態を示す実行イメージを転送する実行イメージ転送手段と、実行イメージ転送手段が実行イメージを転送するタイミングで、稼働系のストレージに再開可能ポイント通知を送信する任意時点再開可能ポイント通知手段とを含み、待機系のストレージを使用する待機系の上位装置は、実行イメージ転送手段が転送する実行イメージを保存する実行イメージ保存手段を含み、実行イメージ転送手段は、任意の時点における実行イメージを待機系の上位装置に転送し、待機系のストレージを使用する待機系の上位装置は、稼働系の異常を検出すると、異常の発生を待機系のストレージに通知して、待機系のストレージの状態を実行イメージの転送タイミングに対応する状態にするように促し、待機系のストレージの状態が実行イメージの転送タイミングに対応する状態になった場合に実行イメージを用いて処理を再開する構成であってもよい。
【0043】
稼働系の上位装置における実行イメージ転送手段は、前回転送した実行イメージから変更された部分のみを転送してもよい。
【0044】
また、本発明によるストレージ内のデータを複製するためのプログラムは、第一のストレージ内のデータを通信ネットワークおよび中継装置を介して第二のストレージにミラーリングまたはバックアップするデータ複製システムにおける中継装置内に設けられているコンピュータに、第一のストレージから受信したデータを中継装置内の記憶媒体に記憶する処理と、データを中継装置内の記憶媒体に記憶したときに第一のストレージに対する応答を送信する処理と、中継装置内の記憶媒体に記憶したデータを第二のストレージに送信する処理とを実行させる。
【0045】
また、本発明によるストレージ内のデータを複製するためのプログラムは、第一のストレージ内のデータを第二のストレージに通信ネットワークを介してミラーリングまたはバックアップするデータ複製システムにおける第一のストレージ内に設けられているコンピュータに、送信される元データから少なくとも1つのエラー訂正のための冗長データを作成する処理と、元データと冗長データとを別々のデータ送信単位で送信する処理とを実行させる。
【0046】
また、本発明によるストレージ内のデータを複製するためのプログラムは、稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおける稼働系のストレージ内に設けられているコンピュータに、
データの書き込み要求が発生すると、書き込み対象のデータと一時記憶装置にデータを格納することを指示する遅延書き込み要求とを待機系のストレージに送信する処理と、そのデータの状態であればアプリケーションがそのまま動作を再開可能なポイントであることを知らせるための再開可能ポイント通知を上位装置から受けると、一時記憶装置に格納されているデータを記憶媒体に格納することを指示する遅延書き込み実行要求を待機系のストレージに送信する処理とを実行させる。
【0047】
また、本発明によるストレージ内のデータを複製するためのプログラムは、稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおける稼働系のストレージ内に設けられているコンピュータに、
データの書き込み要求が発生すると、書き込み対象のデータと記憶媒体にデータを書き込むことを指示する書き込み要求とを待機系のストレージに送信する処理と、そのデータの状態であればアプリケーションがそのまま動作を再開可能なポイントであることを知らせるための再開可能ポイント通知を上位装置から受けるとスナップショット作成要求を待機系のストレージに送信する処理を実行させる。
【0048】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
【0049】
実施の形態1.
図1は、本発明によるデータ複製システムの第1の実施の形態を示すブロック図である。図1に示すデータ複製システムにおいて、ストレージ11が、ストレージ11を使用するホスト(ホストコンピュータ)10とローカルに接続されている。ストレージ11は、インターネットや専用線等の通信ネットワーク(以下、ネットワークという。)13を介して中継装置15に接続されている。また、中継装置15は、ネットワーク14を介してストレージ12に接続されている。
【0050】
ストレージ11,12は、例えば、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置である。ストレージ11,12として、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置の集合であるディスクアレイ装置を使用することもできる。ホスト10とストレージ11とは、SCSI、ファイバチャネル(Fibre channel )、イーサネット(登録商標)等で接続される。
【0051】
図2は、図1に示すストレージ11の構成例を示すブロック図である。なお、ストレージ12の構成も、図2に示すような構成である。図2に示すように、ストレージ11は、ストレージコントローラ100とストレージ本体である記憶媒体101とを含む。ストレージコントローラ100は、ホスト10および他のストレージまたは中継装置と通信を行う通信部102、各処理のシーケンスを管理する処理シーケンサ103、記憶媒体101に対する処理命令の順序制御を行うIOスケジューラ104、IOスケジューラ104が発行する処理命令に従って記憶媒体101の動作を制御する媒体処理部105、およびホスト10等から記憶媒体101へのデータおよび記憶媒体101からホスト10等へのデータを一時記憶するバッファメモリ106を含む。処理シーケンサ103は、例えば、プログラムに従って動作するCPUで実現される。
【0052】
図2では、媒体制御部105と記憶媒体101との組み合わせを一組だけ含む場合を示した。ストレージ11、12が複数の記録媒体101を含み、それぞれの記憶媒体に対応して媒体制御部105が設けられていてもよい。ただし、個々のストレージ11,12に含まれるIOスケジューラ104は一つである。記憶媒体101が複数存在する場合、処理シーケンサ103は処理命令の対象となる記憶媒体を指定し、IOスケジューラ104は、指定された記憶媒体に対応する媒体制御部105に処理を行わせる。
【0053】
図3は、図1に示す中継装置15の構成例を示すブロック図である。中継装置15は、ストレージ11,12と通信を行う通信部150、中継処理のシーケンス管理を行う中継処理部151、およびストレージ11,12から受信したデータを一時記憶するバッファメモリ152を含む。中継処理部151は、例えば、プログラムに従って動作するCPUで実現される。
【0054】
図1および図2に示すように、ストレージ11には通信部102が設けられ、ストレージ11自身が主体的にデータを転送する。すなわち、ホスト10がストレージ11からデータを読み出して中継装置15にデータを送信するのではなく、ストレージ11が直接中継装置15にデータを送信する。ストレージ12も、中継装置15から直接データを受信する。ただし、ストレージ11が中継装置15にデータを送信するタイミングは、ホスト10が指示する。
【0055】
また、中継装置15は、ストレージ11,12の設置場所において地震等の災害が発生したときに、災害の影響が波及すると想定される範囲の外に設置される。すなわち、ストレージ11,12が災害によって稼働できない状態になっても、その位置であれば稼働を継続できる位置(ストレージ11,12からの距離)があらかじめ算定され、中継装置15は、算定された位置に設置されている。例えば、ストレージ11があらかじめ想定した震度(例えば震度6〜7)の地震に被災したときに、中継装置15には破損等が生じない程度の震度になるような位置に、中継装置15が設置される。さらに、ストレージ11またはストレージ12と中継装置15との間のデータ転送時間が、ストレージ11とストレージ12との間で直接データを転送した場合のデータ転送時間よりも短くなるように、中継装置15が設置される。よって、データ複製システムは、耐災害データ管理システムとして機能する。
【0056】
次に、データ複製システムの動作を、図4および図5のフローチャートを参照して説明する。ここでは、バックアップ処理として、データの転送元としてのストレージ11が、データの転送先としてのストレージ12に向けてデータを転送する場合を例にする。図4は、ストレージコントローラ100における処理シーケンサ103の動作を示すフローチャートであり、図5は中継装置15における中継処理部151の動作を示すフローチャートである。
【0057】
ホスト10は、バックアップ処理を実行するときに、ストレージ11のストレージコントローラ100における通信部102に対して複写コマンドを出力する。複写コマンドは、バックアップを指示するコマンドである。複写コマンドには、複写対象のデータの範囲すなわちバックアップ処理対象のデータ範囲を指定する情報および複写先のストレージを指定する情報が含まれている。通信部102は、複写コマンドを受け取ると、複写コマンドを処理シーケンサ103に渡し、複写処理を開始することを処理シーケンサ103に指示する。
【0058】
処理シーケンサ103は、複写コマンドを受け取ると、図4に示すように、まず、複写対象のデータの範囲の先頭のブロックをデータ転送対象のブロックとして設定する(ステップS100)。次いで、通信部102に、複写コマンドで指定された複写先のストレージに対応した中継装置に対してwrite コマンドを送信するように指示する(ステップS101)。write コマンドには、ブロックサイズすなわちデータ量を示す情報が含まれている。また、データ転送対象のデータの読み出し要求をIOスケジューラ104に登録する。IOスケジューラ104は、読み出し要求に応じて、媒体制御部105に、データ転送対象のデータの読み出し指示を行う。媒体制御部105は、読み出し指示に従って、データ転送対象のデータを記憶媒体101からバッファメモリ106に出力させる(ステップS102)。媒体制御部105は、データ転送対象の全てのデータが記憶媒体101からバッファメモリ106に出力されると、読み出し完了通知を処理シーケンサ103に出力する。
【0059】
そして、処理シーケンサ103は、通信部102を介して入力される中継装置15からの受信準備完了のメッセージと、媒体制御部105からの読み出し完了通知との双方を待ち(ステップS103)。双方が入力されたら、バッファメモリ106に記憶されたデータを中継装置15に転送するように通信部102に指示する。通信部102は、指示に応じてバッファメモリ106に記憶されたデータを中継装置15に送信する(ステップS104)。そして、処理シーケンサ103は、通信部102を介して入力される中継装置15からの受信完了のメッセージを待つ(ステップS105)。
【0060】
通信部102は、バッファメモリ106に記憶された全てのデータを中継装置15に送信し、中継装置15から受信完了のメッセージを受けたら、受信完了のメッセージを処理シーケンサ103を出力する。処理シーケンサ103は、受信完了のメッセージを入力すると、複写対象の全てのデータの中継装置15への転送が完了したか否か確認する(ステップS106)。完了していなければ、複写対象のデータの範囲の次のブロックをデータ転送対象のブロックとして設定し(ステップS108)、ステップS101に戻る。
【0061】
複写対象の全てのデータの転送が完了していれば、処理シーケンサ103は、ホスト10に対して完了通知を出力するように通信部102に指示し(ステップS107)、処理を終了する。
【0062】
なお、1ブロックのデータ量は、あらかじめシステムに設定されている量である。また、処理シーケンサ103は、1ブロックのデータ量を、転送先のストレージ12のバッファメモリ106および中継装置15のバッファメモリ152の容量に応じて変化させるようにしてもよい。
【0063】
処理シーケンサ103がIOスケジューラ104に登録するものとして、処理の種類(読み出し/書き込み)と、処理を識別するためのIDと、処理の対象となる記憶媒体101中の領域を示す情報と、処理の対象となるバッファメモリ106の領域を示す情報とがある。なお、処理シーケンサ103が複数の読み出し処理命令や複数の書き込み処理命令を指示する場合もあり、処理を識別するためのIDは、このような場合に各処理を識別するために用いられる。従って、図4に示された処理では、処理シーケンサ103は、データ転送対象のデータの読み出し要求を登録する際に、処理の種類、読み出し処理を識別するためのIDを登録するとともに、処理の対象となる記憶媒体101中の領域としてデータ転送対象のブロックを登録する。また、記憶媒体が複数ある場合には、処理シーケンサ103は、記憶媒体を特定するための情報も登録する。そして、処理シーケンサ103は、登録時に指定したIDによって、どの処理が完了したのかを判別する。
【0064】
IOスケジューラ104は、処理シーケンサ103によって登録された処理を記録する。そして、記録されている処理をあらかじめ決められているアルゴリズムに従って選択し、取り出した処理を媒体制御部105に実行させる。あらかじめ決められているアルゴリズムとして、例えば、登録された順がある。また、記憶媒体101の磁気ヘッドや光ヘッドの現在位置から処理対象の位置までの移動距離が最も小さくなる処理を最初に選択してもよい。また、ストレージ11が複数の記録媒体101を含むディスクアレイ装置であってそれぞれの記憶媒体に対応して媒体制御部105が設けられている場合には、IOスケジューラ104は、処理を取り出そうとした記憶媒体101に対応した媒体制御部105が担当する記憶媒体101を対象とした処理を選択する。
【0065】
媒体制御部105の実行中の処理が完了すると、IOスケジューラ104は次の処理を取り出す。処理が読み出し処理であった場合には、媒体制御部105は、記憶媒体101に、記憶媒体101における指定された領域からデータを読み出させて、読み出したデータをバッファメモリ106の指定された領域に書き込ませる。処理が書き込み処理であった場合には、媒体制御部105は、記憶媒体101に、バッファメモリ106の指定された領域のデータを、記憶媒体101における指定された領域に書き込ませる。そして、媒体制御部105は、処理が完了したときには、処理シーケンサ103に処理の完了を通知する。
【0066】
通信部102は、外部から入力されたデータが、コマンド、受信準備完了のメッセージ、受信完了のメッセージ等の制御系メッセージであった場合には、入力されたデータを処理シーケンサ103に渡す。また、ストレージ11に書き込まれるべきデータであった場合には、データを格納すべき場所を処理シーケンサ103に問い合わせる。そして、処理シーケンサ103から指定されたバッファメモリ106中の領域にデータを格納する。
【0067】
また、通信部102は、処理シーケンサ103から指定されたコマンドまたは完了通知を、指定された中継装置またはホストに向けて送信する処理も行う。さらに、処理シーケンサ103から指定されたバッファメモリ106中のデータを、指定された中継装置またはホストに向けて送信する処理も行う。
【0068】
なお、ホスト10は、ストレージ11から完了通知を受けたら、すなわち、中継装置15へのデータ転送が完了したら、ストレージ11からストレージ12へのデータ転送が完了したと認識する。
【0069】
次に、中継装置15の動作を説明する。中継装置15において、ストレージ11,12からのデータ(コマンドまたは転送されるデータ)は、通信部150で受信される。通信部150は、ストレージ11がステップS101において送信したwrite コマンドを受信すると、write コマンドを中継処理部151に渡す。
【0070】
中継処理部151は、図5に示すように、ストレージ11から送られてくるデータを格納するのに必要な領域をバッファメモリ152に確保する(ステップS120)。中継処理部151は、write コマンドに含まれるデータ量の情報に基づいてデータの格納領域を確保する。そして、受信準備完了の通知をストレージ11に送るように通信部150に指示する(ステップS121)。通信部150は、指示に応じて、ストレージ11に受信準備完了のメッセージを送信する。また、write コマンドをストレージ12に送るように通信部150に指示する(ステップS122)。通信部150は、指示に応じて、ストレージ12にwrite コマンドを送信する。このwrite コマンドは、ストレージ11から受信するデータをストレージ12に書き込ませるためのwrite コマンドである。
【0071】
次いで、ストレージ11からデータが届くのを待ち(ステップS123)、データが届いて通信部150からデータを格納すべきバッファメモリ152の領域の問い合わせを受けると、ステップS120で確保した領域を通信部150に知らせる(ステップS124)。また、データのバッファメモリ152への格納の完了を待ち(ステップS125)、全てのデータがバッファメモリ152に格納されたことが通信部150から通知されると、ストレージ11にwrite コマンドに対する完了を通知するように通信部150に指示する(ステップS126)。通信部150は、指示に応じて、ストレージ11に受信完了のメッセージを送信する。
【0072】
そして、ストレージ12から準備完了のメッセージ(ステップS122において送信したwrite コマンドに対する応答)が送信されるのを待つ(ステップS127)。ストレージ12からの準備完了のメッセージを受信したことが通信部150から通知されると、通信部150に、バッファメモリ152に格納されたデータをストレージ12に向けて送信させる(ステップS128)。その後、ストレージ12から受信完了のメッセージが送信されるのを待ち(ステップS129)、ストレージ12からの受信完了のメッセージを受信したことが通信部150から通知されると、処理を終了する。
【0073】
通信部150は、外部からコマンドを受信すると、受信したコマンドを中継処理部151に渡す。また、外部から各種のメッセージを受信すると、受信したことを中継処理部151に通知する。さらに、データを受信した場合には、データを格納すべきバッファメモリ152の領域を中継処理部151に問い合わせ、バッファメモリ152中の指定された領域にデータを格納する。また、中継処理部151の指示に応じて、指定されたメッセージを指定されたストレージに送信する。さらに、バッファメモリ152中の領域と送信先のストレージとが指定された場合には、その領域中のデータを指定されたストレージに送信する。
【0074】
中継処理部151がデータの送信先のストレージを決定する際に、あらかじめ送信先のストレージ(この例ではストレージ12)が固定的に決められている場合には特に選択処理を行わないが、データの転送元のストレージ(この例ではストレージ11)に応じてデータの送信先のストレージが決まる場合には、転送元のストレージに応じて送信先のストレージを選択する処理を行う。また、送信先のストレージのデータを送信するのに先立って、データの転送元のストレージから送信先が指定されることもある。なお、バッファメモリ152に格納されたデータは、送信先のストレージ(この例ではストレージ12)へのデータの送信が完了すると破棄される。
【0075】
ストレージ12の通信部102は、中継装置15がステップS122において送信したwrite コマンドを受信すると、write コマンドを処理シーケンサ103に渡す。処理シーケンサ103は、中継装置15から送られてくるデータを格納するのに必要な領域をバッファメモリ106に確保する。そして、通信部102に、準備完了のメッセージを中継装置15に対して送信させる。この準備完了メッセージは、中継装置15がステップS127において待つメッセージである。その後、中継装置15からデータが送られてくると、ストレージ12の通信部102は、データを格納すべき領域を処理シーケンサ103に問い合わせ、バッファメモリ106に格納する。データを全て格納したならば、受信完了のメッセージを中継装置15に送信する。この受信完了メッセージは、中継装置15がステップS129において待つメッセージである。また、ストレージ12の処理シーケンサ103は、バッファメモリ106へのデータ格納後、IOスケジューラ104に対して、処理の種類(この場合には書き込み)と、処理の識別IDと、処理の対象となる記憶媒体101中の領域を示す情報と、処理の対象となるバッファメモリ106の領域を示す情報とを登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、書き込み対象のデータの書き込み指示を行う。媒体制御部105は、登録内容に応じてバッファメモリ106から記憶媒体101へのデータの書き込み処理を行う。
【0076】
この実施の形態では、中継装置15は、ストレージ11の設置場所において地震等の災害が発生したときに、災害の影響が波及すると想定される範囲の外に設置される。また、中継装置15は、ストレージ11と中継装置15との間のデータ転送時間が、ストレージ11とストレージ12との間で直接データを転送した場合のデータ転送時間よりも短くなるような位置に設置されている。さらに、バックアップのためにストレージ11からストレージ12に向けてデータを転送する際に、ストレージ11を使用しているホスト10は、中継装置15へのデータ転送が完了したら、ストレージ11からストレージ12へのデータ転送が完了したと認識する。
【0077】
従って、ストレージ11が被災しても中継装置15は被災せず、かつ、ストレージ11から中継装置15へのデータ転送時間が短いので、耐障害性が向上する。また、ホスト10は、ストレージ12にデータが格納されるのを待たずに、次の処理を開始することができるので、データ転送に伴う処理の遅れが改善される。
【0078】
実施の形態2.
第1の実施の形態では、中継装置15は、ストレージ11からの1ブロックのデータを全て受信してから、ストレージ12に対するデータの送信を開始したが、ストレージ11からの1ブロックのデータの受信の完了を待たずに、ストレージ12に対するデータの送信を開始してもよい。図6は、ストレージ11からのデータの受信の完了を待たずにストレージ12に対するデータの送信を開始する制御を行う第2の実施の形態の中継処理部151の動作を示すフローチャートである。なお、データ複製システムの構成およびストレージ11,12と中継装置15の構成は第1の実施の形態の場合と同じである(図1〜図3参照)。
【0079】
中継処理部151は、第一の実施の形態に示す場合と同様に、ストレージ11がステップS101において送信したwrite コマンドを受信する。すると、中継処理部151は、図6に示すように、ストレージ11から送られてくるデータを格納するのに必要な領域をバッファメモリ152に確保する(ステップS140)。中継処理部151は、ストレージ11からのwrite コマンドに含まれるデータ量の情報に基づいてデータの格納領域を確保する。そして、受信準備完了の通知をストレージ11に送るように通信部150に指示する(ステップS141)。また、write コマンドをストレージ12に送るように通信部150に指示する(ステップS142)。このwrite コマンドは、ストレージ11から受信するデータをストレージ12に書き込ませるためのwrite コマンドである。
【0080】
次いで、ストレージ11からデータが届くのを待ち(ステップS143)、データが届いて通信部150からデータを格納すべきバッファメモリ152の領域の問い合わせを受けると、ステップS140で確保した領域を通信部150に知らせる(ステップS144)。次いで、ストレージ12から準備完了のメッセージが送信されるのを待ち(ステップS145)、ストレージ12からの準備完了のメッセージを受信したことが通信部150から通知されると、通信部150に、バッファメモリ152に格納されたデータをストレージ12に向けて送信させる(ステップS146)。
【0081】
ステップS146の処理を行っているときに、ストレージ11からのデータがバッファメモリ152に格納され、バッファメモリ152から読み出されたデータがストレージに向けて送信されるが、通信部150は、データの読み出し位置(読み出しアドレス)が格納位置(格納アドレス)を追い越さないように制御する。すなわち、読み出し位置が格納位置に追いついたら、バッファメモリ152からのデータの読み出しを中止する。
【0082】
そして、データのバッファメモリ152への格納が完了するのを待ち(ステップS147)、全てのデータがバッファメモリ152に格納されたことが通信部150から通知されると、ストレージ11にwrite コマンドに対する完了を通知するように通信部150に指示する(ステップS148)。その後、ストレージ12から受信完了のメッセージが送信されるのを待ち(ステップS149)、ストレージ12からの受信完了のメッセージを受信したことが通信部150から通知されると、処理を終了する。
【0083】
この実施の形態では、第1の実施の形態に比べて、中継装置15からストレージ12へのデータの送信を早めに完了させることができる。なお、ストレージ11,12の動作は、第1の実施の形態のそれらの動作と同じである。
【0084】
実施の形態3.
第1および第2の実施の形態では、ストレージ11のデータのバックアップが実現されたが、ミラーリングによってストレージ11のデータをストレージ12に転送するようにしてもよい。図7は、第3の実施の形態、すなわちミラーリングを行う場合のストレージ11のストレージコントローラ100における処理シーケンサ103の動作を示すフローチャートである。なお、データ複製システムの構成およびストレージ11,12と中継装置15の構成は第1の実施の形態の場合と同じである(図1〜図3参照)。また、ストレージ11において、通信部102、IOスケジューラ104および媒体制御部105の動作は、第1の実施の形態のそれらの動作と同じである。
【0085】
第1および第2の実施の形態に示したバックアップは、ホスト10がストレージ11に対して複写コマンドを出力したことを契機に開始される。第3の実施の形態として示すミラーリングは、ホスト10がストレージ11に対してデータの書き込みを指示するwrite コマンドを出力したことを契機に開始される。
【0086】
ストレージ11の通信部102がホスト10からwrite コマンドを受信すると、通信部102はそのwrite コマンドを処理シーケンサ103に渡す。すると、処理シーケンサ103は、図7に示すように、ホスト10から受け取るデータを格納するのに必要な領域をバッファメモリ106に確保する(ステップS160)。また、準備完了の通知をホスト10に送るように通信部102に指示する(ステップS161)。通信部102は、指示に応じて、準備完了の通知をホスト10に送る。
【0087】
そして、処理シーケンサ103は、ホスト10からデータが到着するのを待ち(ステップS162)、データが届いて通信部102からデータを格納すべきバッファメモリ106の領域の問い合わせを受けると、ステップS160で確保した領域を通信部102に知らせる(ステップS163)。次いで、write コマンドを中継装置15に送るように通信部102に指示する(ステップS164)。通信部102は、指示に応じて、中継装置15にwrite コマンドを送信する。
【0088】
次いで、処理シーケンサ103は、ホスト10からのデータのバッファメモリ106への格納の完了を待ち(ステップS165)、全てのデータがバッファメモリ106に格納されたことが通信部102から通知されると、処理シーケンサ103は、IOスケジューラ104に対して、処理の種類(この場合には書き込み)と、処理の識別IDと、処理の対象となる記憶媒体101中の領域を示す情報と、処理の対象となるバッファメモリ106の領域を示す情報とを登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、書き込み対象のデータの書き込み指示を行う。媒体制御部105は、登録内容に応じてバッファメモリ106から記憶媒体101へのデータの書き込み処理を行う(ステップS166)。
【0089】
そして、処理シーケンサ103は、中継装置15から受信準備完了のメッセージ(ステップS164において送ったwrite コマンドに対する応答)が送信されるのを待つ(ステップS167)。中継装置15からの受信準備完了のメッセージを受信したことが通信部102から通知されると、処理シーケンサ103は、通信部102に、バッファメモリ106に格納されたデータを中継装置15に向けて送信させる(ステップS168)。その後、中継装置15から受信完了のメッセージが送信されるのと、媒体制御部105からの書き込み完了通知とを待ち(ステップS169)、中継装置15からの受信完了のメッセージを受信したことが通信部102から通知され、かつ、媒体制御部105からの書き込み完了通知を受けると、ホスト10に書き込みの完了を通知し(ステップS170)、処理を終了する。ホスト10は、ストレージ11から完了通知を受けたら、すなわち、中継装置15へのデータ転送および記憶媒体101へのデータ書き込みが完了したら、ミラーリングが完了したと認識する。
【0090】
中継装置15がストレージ11から送られるデータを中継する動作や、ストレージ12が中継装置15から送られるデータを記憶媒体101に記憶させる動作は、第一の実施の形態と同様である。
【0091】
この実施の形態でも、ストレージ11が被災しても中継装置15は被災せず、かつ、ストレージ11から中継装置15へのデータ転送時間が短いので、耐障害性が向上する。また、ホスト10がwrite コマンドを送信してから次の処理を開始するまでの時間を短縮化できる。
【0092】
実施の形態4.
図8は、本発明によるデータ複製システムの第4の実施の形態を示すブロック図である。図8に示すデータ複製システムにおいて、ストレージ11が、ストレージ11を使用するホスト10とローカルに接続されている。ストレージ11は、ネットワーク13を介して中継装置15−1〜15−nに接続されている。また、中継装置15−1〜15−nは、ネットワーク14を介してストレージ12に接続されている。なお、ストレージ11,12の構成は、第1の実施の形態のストレージ11,12の構成と同じであり、中継装置15−1〜15−nの構成は、第1の実施の形態の中継装置15の構成と同じである。また、各中継装置15−1〜15−nがストレージ11から受信したデータをストレージ12に転送する動作や、ストレージ12が受信したデータを記憶媒体101に記憶させる動作は、第1の実施の形態の中継装置15やストレージ12の動作と同様である。
【0093】
第一の実施の形態と同様に、ストレージ11は主体的にデータを送信する。すなわち、ホスト10がストレージ11からデータを読み出して中継装置15−1〜15−nにデータを送信するのではなく、ストレージ11が直接中継装置15にデータを送信する。ストレージ12も、中継装置15から直接データを受信する。また、中継装置15−1〜15−nは、ストレージ11,12の設置場所において地震等の災害が発生したときに、災害の影響が波及すると想定される範囲の外に設置される。さらに、ストレージ11またはストレージ12と中継装置15−1〜15−nとの間のデータ転送時間が、ストレージ11とストレージ12との間で直接データを転送した場合のデータ転送時間よりも短くなるように、中継装置15−1〜15−nが設置される。
【0094】
次に、データ複製システムの動作を説明する。図9は、ストレージ11のストレージコントローラ100における処理シーケンサ103の動作を示すフローチャートである。ここでは、データの転送元としてのストレージ11が、データの転送先としてのストレージ12に向けてデータを転送して、バックアップを行う場合の例を説明する。
【0095】
処理シーケンサ103は、通信部102を介してホスト10から複写コマンドを受け取ると、図9に示すように、まず、複写対象のデータの範囲の先頭のブロックをデータ転送対象のブロックとして設定する(ステップS200)。次いで、中継装置15−1〜15−nのうちから使用する中継装置を選択する(ステップS201)。ここでは、中継装置15−1が選択されたとする。そして、通信部102に、選択した中継装置15−1に対してwrite コマンドを送信するように指示する(ステップS202)。また、データ転送対象のデータの読み出し要求をIOスケジューラ104に登録する(ステップS203)。ステップS203において読み出し要求が登録されたときのIOスケジューラ104と媒体制御部105の動作は、第1の実施の形態で説明したステップS102における動作と同様である。
【0096】
そして、処理シーケンサ103は、通信部102を介して入力される中継装置15−1からの受信準備完了のメッセージと、媒体制御部105からの読み出し完了通知との双方を待ち(ステップS204)。双方が入力されたら、バッファメモリ106に記憶されたデータを中継装置15−1に転送するように通信部102に指示する(ステップS205)。そして、処理シーケンサ103は、通信部102を介して入力される中継装置15−1からの受信完了のメッセージを待つ(ステップS206)。
【0097】
通信部102は、ステップS203においてバッファメモリ106に記憶させたデータを中継装置15−1に送信し、中継装置15−1から受信完了のメッセージを受けたら、受信完了のメッセージを処理シーケンサ103に出力する。処理シーケンサ103は、受信完了のメッセージを入力すると、複写対象の全てのデータの中継装置15への転送が完了したか否か確認する(ステップS207)。完了していなければ、複写対象のデータの範囲の次のブロックをデータ転送対象のブロックとして設定し(ステップS209)、ステップS201に戻る。
【0098】
複写対象の全てのデータの転送が完了していれば、処理シーケンサ103は、ホスト10に対して完了通知を出力するように通信部102に指示し(ステップS208)、処理を終了する。
【0099】
なお、1ブロックのデータ量は、あらかじめシステムに設定されている量である。また、処理シーケンサ103は、1ブロックのデータ量を、転送先のストレージ12のバッファメモリ106および中継装置15のバッファメモリ152の容量に応じて変化させるようにしてもよい。
【0100】
ステップS201での中継装置を選択する方法として、例えば、中継装置15−1〜15−nを順に選択したり、負荷の軽い(他のデータ転送に用いられていない)中継装置を選択したり、乱数を用いて選択したりする方法がある。
【0101】
あるいは、複数の中継装置を同時に使用してデータ転送を並列に実行してもよい。図10は、複数の中継装置を同時に使用する場合のストレージ11の動作を示すフローチャートである。ここでは、1ブロックのデータを転送する場合を例にする。
【0102】
ストレージ11において、処理シーケンサ103が、複写対象のデータの範囲の先頭のブロックをデータ転送対象のブロックとして設定すると(ステップS220)、ストレージ11は、全中継装置15−1〜15−nに対してデータを転送する(ステップS221)。
【0103】
図11は、ステップS221の処理を具体的に示すフローチャートである。処理シーケンサ103は、個々の中継装置15−1〜15−nに対して、それぞれ、図11に示すフローチャートに従ってデータを送信する。ここでは、中継装置15−1にデータを送信する場合を例に説明する。処理シーケンサ103は、バッファメモリ106に格納されているデータから、中継装置15−1に送信するデータを選択する(ステップS240)。そして、その中継装置15−1に対してwrite コマンドを送るように通信部102に指示する(ステップS241)。また、IOスケジューラ104に、転送対象のデータの読み出し要求を登録する(ステップS242)。ステップS242において読み出し要求が登録されたときのIOスケジューラ104と媒体制御部105の動作は、第1の実施の形態で説明したステップS102における動作と同様である。処理シーケンサ103は、通信部102を介して入力される中継装置15−1からの受信準備完了のメッセージと、媒体制御部105からの読み出し完了通知との双方を待ち(ステップS243)。双方が入力されたら、バッファメモリ106に記憶されたデータを中継装置15−1に送信するように通信部102に指示する(ステップS244)。ここでは中継装置15−1にデータを送信する場合を例に説明したが、処理シーケンサ103は、ステップS240〜S244の処理を全ての中継装置15−1〜15−nについて実行する。
【0104】
さらに、処理シーケンサ103は、いずれかの中継装置から受信完了のメッセージを受けたことを通信部102から通知されたら(ステップS222)、未転送のデータがまだあるか否か確認し(ステップS223)、ある場合には、受信完了のメッセージを送信した中継装置に対して、write コマンドを送るように通信部102に指示する(ステップS224)。なお、ステップS224の具体的な処理は、図11に示された処理である。
【0105】
ステップS223において未転送のデータがないことを確認したら、処理シーケンサ103は、各中継装置から受信完了のメッセージを受けるのを待ち(ステップS225)、データを転送した全ての中継装置から受信完了のメッセージを受けたら(ステップS226)、ホスト10に対して完了通知を出力するように通信部102に指示し(ステップS227)、処理を終了する。
【0106】
図12は、1ブロックのデータを5つに分け、3台の中継装置15−1,15−2,15−3を使用する場合のデータ転送の例を示すタイミング図である。ストレージ11は、ホスト10からの複写コマンドに応じて、中継装置15−1,15−2,15−3のそれぞれにwrite コマンドを送信する。そして、受信準備完了のメッセージを送信した中継装置15−1,15−2,15−3にデータ▲1▼,▲2▼,▲3▼を転送する。
【0107】
図12に示す例では、中継装置15−2,15−3が先に完了通知を送信したので、ストレージ11は、中継装置15−2,15−3に対してwrite コマンドを送信し、その後、データ▲4▼,▲5▼を送信する。そして、全ての中継装置15−1,15−2,15−3からの完了通知の受信を確認した時点で、ストレージ11は、ホスト10に完了通知を出力する。
【0108】
この実施の形態では、複数の経路を用いてデータ転送を実行することができる。よって、個々の経路の使用率および中継装置の処理能力の影響を受けにくくすることができる。例えば、図12に示された例では、中継装置15−1への経路が輻輳していたか、または中継装置15−1の処理能力が低かったことになるが、他の中継装置15−2,15−3を用いることによって、中継装置15−1への経路の輻輳または中継装置15−1の処理能力が低いことは、ストレージ11からのデータ転送に対して大きな影響を与えることはない。
【0109】
ここでは、各中継装置15−1〜15−nに、それぞれ異なるデータを送信する場合について説明したが、同一のデータのwrite コマンドを各中継装置15−1〜15−nに送信するようにしてもよい。例えば、送信すべきデータとしてデータA〜Cがあるとする。ストレージ11は、データA〜Cのいずれのwrite コマンドについても、各中継装置15−1〜15−nに送信する。
【0110】
この場合、ストレージ11は、各中継装置15−1〜15−nに送信する同一のデータの組毎に識別子を設け、その識別子を各write コマンドに付加する。識別子としては、送信される各データの組の順番を表す数値を用いればよい。例えば、最初にデータAを各中継装置に送信するのであれば、各中継装置に送信する各write コマンドに一番目を表す「1」という識別子を付加する。続いて、各中継装置にデータBを送信するのであれば、各中継装置に送信する各write コマンドに二番目を表す「2」という識別子を付加する。他のデータのwrite コマンドにも同様に識別子を付加する。
【0111】
各中継装置15−1〜15−nは、ストレージ11に対してデータの転送完了を通知するときには、write コマンドに付加された識別子も通知する。従って、ストレージ11は、同一の識別子が付加された応答を各中継装置15−1〜15−nから受信する。ストレージ11は、応答に付加された識別子が初めて受信する識別子であれば、ホスト10にそのデータの転送終了を通知する。その後、同一の識別子が付加された応答を受信した場合、その応答に対しては何も処理を行わない。
【0112】
また、各中継装置15−1〜15−nは、識別子を付加したままwrite コマンドを待機系のストレージ12に送信する。従って、ストレージ12は同一の識別子が付加されたwrite コマンドを各中継装置15−1〜15−nから受信する。ストレージ12は、write コマンドに付加された識別子が初めて受信する識別子であれば、そのwrite コマンドに従って処理を進める。その後、同一の識別子が付加されたwrite コマンドを受信した場合には、そのwrite コマンドを送信した中継装置に対して、転送が完了した通知のみを行う。
【0113】
このように同一データのwrite コマンドを各中継装置に送信すれば、複数のデータ転送経路のうち最も速度が速い経路を用いて処理を進めることができる。従って、ストレージ11がミラーリングやバックアップを行う際、中継装置からの応答の待ち時間を短くすることができる。その結果、ホスト10が次の処理を開始するまでの時間を短縮化される。
【0114】
第一の実施の形態から第四の実施の形態において、中継装置15に不揮発性記憶装置を設け、中継装置15が、ストレージ11から受信したコマンドおよびデータをその不揮発性記憶装置に記録し、不揮発性記憶装置に記録したコマンドを任意のタイミングでストレージ12に発行するようにしてもよい。中継装置15に設ける不揮発性記憶装置としては、例えば、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置の集合であるディスクアレイ装置等を使用すればよい。あるいは、バッテリバックアップされたメモリを使用してもよい。
【0115】
中継装置15は、例えば、中継装置15およびストレージ12が接続されるネットワーク14の通信量が所定のしきい値以下になった場合等に、ストレージ12に対してwrite コマンドを発行すればよい。write コマンド発行のタイミングは、不揮発性記憶装置にコマンドおよびデータを記録してから所定の時間が経過したとき、所定の時刻になったとき、あるいはストレージ12からwrite コマンドの発行を要求されたとき等であってもよい。
【0116】
このように不揮発性記憶装置にストレージ11からのコマンドおよびデータを記録すれば、コマンドやデータが喪失されることがない。そして、ストレージ11からのwrite コマンド受信と連動せずに、任意のタイミングでストレージ12にwrite コマンドを発行できる。その結果、ストレージ12を常時稼働させておかなくてもよくなる。同様に、中継装置15およびストレージ12が接続されるネットワーク14も常時接続状態を保つ必要がなくなり、ネットワーク14の運用コストも低減される。
【0117】
また、通常は、第一の実施の形態から第四の実施の形態に示したようにストレージ11からのwrite コマンド受信と連動させてストレージ12にwrite コマンドを発行し、ネットワーク14の通信量が所定のしきい値以上になったときに、コマンドやデータを不揮発性記憶装置に記録するようにしてもよい。この場合、ネットワーク14の通信量を平均化することが可能となる。また、ネットワーク14として運用コストが安価な回線を使用することができ、データ複製システム全体のコストを低減することができる。
【0118】
第一の実施の形態から第四の実施の形態において、データ転送処理手段は、処理シーケンサ103および通信部102によって実現される。中継処理手段は、中継処理部151および通信部150によって実現される。
【0119】
実施の形態5.
図13は、本発明によるデータ複製システムの第5の実施の形態を示すブロック図である。図13に示すデータ複製システムにおいて、ストレージ20が、ストレージ20を使用するホスト10とローカルに接続されている。ストレージ20は、ネットワーク13を介してストレージ21に接続されている。
【0120】
ストレージ20,21は、例えば、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置である。ストレージ20,21として、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置の集合であるディスクアレイ装置を使用することもできる。ホスト10とストレージ20とは、SCSI、ファイバチャネル(Fibre channel )、イーサネット(登録商標)等で接続される。
【0121】
図14は、図13に示すストレージ20の構成例を示すブロック図である。なお、ストレージ21の構成も、図14に示すような構成である。図14に示すように、ストレージ20は、ストレージコントローラ200とストレージ本体である記憶媒体101とを含む。ストレージコントローラ200は、ホスト10および他のストレージと通信を行う通信部204、各処理のシーケンスを管理する処理シーケンサ201、記憶媒体101に対する処理命令の順序制御を行うIOスケジューラ104、IOスケジューラ104が発行する処理命令に従って記憶媒体101の動作を制御する媒体処理部105、ホスト10等から記憶媒体101へのデータおよび記憶媒体101からホスト10等へのデータを一時記憶するバッファメモリ106、他のストレージに送るデータを冗長化する冗長化部202、および他のストレージから送られてきた冗長化データから元のデータを復元する復元部202を含む。処理シーケンサ103は、例えば、プログラムに従って動作するCPUで実現される。
【0122】
次に、実施の形態5のデータ複製システムの動作を、図15および図16のフローチャートを参照して説明する。図15は、ストレージコントローラ200における処理シーケンサ201の動作を示すフローチャートであり、図16は通信部204の動作を示すフローチャートである。
【0123】
処理シーケンサ201は、通信部204を介してホスト10から複写コマンドを受け取ると、図15に示すように、まず、複写対象のデータの範囲の先頭のブロックをデータ転送対象のブロックとして設定する(ステップS300)。次いで、通信部204に、複写コマンドで指定された複写先のストレージに対して冗長化write コマンドを送信するように指示する(ステップS301)。冗長化write コマンドは、冗長化されたデータに基づく書き込みを指示するコマンドである。冗長化write コマンドには、ブロックサイズすなわちデータ量を示す情報とともに、データが冗長化されることを示す情報が含まれている。また、処理シーケンサ201は、データ転送対象のデータの読み出し要求をIOスケジューラ104に登録する。IOスケジューラ104は、読み出し要求に応じて、媒体制御部105に、データ転送対象のデータの読み出し指示を行う。媒体制御部105は、読み出し指示に従って、データ転送対象のデータを記憶媒体101からバッファメモリ106に出力させる(ステップS302)。
【0124】
そして、処理シーケンサ201は、通信部204を介して入力されるストレージ21からの受信準備完了のメッセージと、媒体制御部105からの読み出し完了通知との双方を待ち(ステップS303)。双方が入力されたら、バッファメモリ106に格納されたデータの冗長化を冗長化部202に行わせる(ステップS304)。冗長化は、元のデータ(以下、元データという。)から冗長データを作成することによって行う。以下の説明において、元データおよび新たに作成された冗長データの集合を冗長化されたデータ群と記す。処理シーケンサ201は、冗長化されたデータ群をストレージ21に転送するように通信部204に指示する。通信部204は、この指示に応じて、冗長化されたデータ群をストレージ21に送信する(ステップS305)。
【0125】
ただし、通信部204は、元データと冗長データとを別々のデータのまとまりとしてストレージ21に送信する。この「データのまとまり」とは、各種データ転送プロトコルの最小のデータ送信単位のことである。「データのまとまり」の具体例としては、例えば、TCPやUDPにおけるセグメント、インターネットプロトコルにおけるパケット、あるいはファイバチャネルプロトコルやイーサネット(登録商標)の物理層におけるフレーム等がある。従って、例えばインターネットプロトコルに従って送信を行う場合、通信部204は、元データと冗長データとを別々のパケットで送信する。なお、一般に、パケット等のデータ送信単位の内部には、伝送中に生じたエラー(データ化け)を検出するためのエラー検出データが付加される。ステップS304で作成される冗長データは、独立したデータのまとまりとして送信されるデータであり、パケット等に付加されるエラー検出データとは異なるデータである。
【0126】
また、後述するように、元データを分割し、分割された元データに基づいて冗長データを作成する。ステップS305において、通信部305は、分割された元データをそれぞれ個々のデータ送信単位として送信する。例えば、元データをN個に分割し、N個のデータからm個の冗長データを作成したとする。この場合、通信部は元データおよび冗長データをそれぞれN個、m個のパケット(あるいはセグメント、フレーム等)で送信する。通信部204が元データと冗長データとをそれぞれ別々のデータのまとまりとして送信したならば、通信部204を介して入力されるストレージ21からの受信完了のメッセージを待つ(ステップS306)。
【0127】
通信部204は、冗長化されたデータ群(元データと冗長データ)を全てストレージ21に送信し、ストレージ21から受信完了のメッセージを受けたら、受信完了のメッセージを処理シーケンサ201を出力する。処理シーケンサ201は、受信完了のメッセージを入力すると、複写対象の全てのデータの中継装置15への転送が完了したか否か確認する(ステップS307)。完了していなければ、複写対象のデータの範囲の次のブロックをデータ転送対象のブロックとして設定し(ステップS309)、ステップS301に戻る。
【0128】
複写対象の全てのデータの転送が完了していれば、処理シーケンサ201は、ホスト10に対して完了通知を出力するように通信部204に指示し(ステップS308)、処理を終了する。
【0129】
なお、1ブロックのデータ量は、あらかじめシステムに設定されている量である。また、処理シーケンサ201は、1ブロックのデータ量を、転送先のストレージ21のバッファメモリ106の容量に応じて変化させるようにしてもよい。
【0130】
通信部204は、外部から入力されたデータが、コマンド、受信準備完了のメッセージ、受信完了のメッセージ等の制御系メッセージであった場合には、入力されたデータを処理シーケンサ201に渡す。また、ストレージ20に書き込まれるべきデータであった場合には、データを格納すべき場所を処理シーケンサ201に問い合わせる。そして、処理シーケンサ201から指定されたバッファメモリ106中の領域にデータを格納するか、または、復元部203にデータを復元させた後、指定されたバッファメモリ106中の領域にデータを格納する。
【0131】
また、通信部204は、処理シーケンサ201から指定されたコマンドまたは完了通知を、指定されたストレージまたはホストに送信する処理も行う。さらに、処理シーケンサ201から指定されたバッファメモリ106中のデータを、指定されたストレージまたはホストに送信する処理も行う。また、冗長化部202から冗長化されたデータを受け取り、受け取ったデータを、指定されたストレージまたはホスト10に送信する処理も行う。
【0132】
なお、通信部204は、他のストレージにコマンドを送信する場合に、各コマンドを区別するためのコマンド識別子をコマンドに付加する。コマンド識別子の例として、コマンドを送信する毎に1加算した数値である発行番号(後述する発行ID)がある。また、冗長化されたデータ群を送信する際に、その送信に関連したコマンドのコマンド識別子を付加する。例えば、冗長化write コマンドを送信するときに、その冗長化write コマンドを識別するためのコマンド識別子を付加する。そして、その冗長化write コマンドに対応する冗長化されたデータ群(元データおよび冗長データ)にも、冗長化write コマンドと同じコマンド識別子を付加する。
【0133】
さらに、通信部204は、各コマンドやデータに、送信元となるストレージの識別子も付加する。
【0134】
次に、冗長化部202の動作について説明する。冗長化部202は、指定されたデータをバッファ106から取得し、規定された冗長化方法を用いて、冗長化されたデータ群を作成する。冗長化部202は、指定された元データをN個のデータに分割する。そして、N個に分割された元データからm個の冗長データを作成する。N,mは自然数である。このN+m個のデータ群が、冗長化されたデータ群となる。冗長化されたデータ群には、復元時に使用するための識別情報が付加される。
【0135】
以下、冗長化の具体例について説明する。冗長化部202は、例えば、元データをその先頭からN等分するなどの方法により、元データをN個に分割する。この方法を採用した場合、先頭から何番目のデータであるのかを示す番号を識別情報として使用する。冗長化部202は、元データをN個のデータに分割したならば、RAID3およびRAID5の装置等と同様にパリティ演算によってパリティデータを作成し、そのパリティデータを冗長データとする。すなわち、N個に分割された各データおよび冗長データにおいて、対応する各ビットの値の総和が必ず奇数(または必ず偶数)になるように冗長データを作成する。この場合、1個の冗長データを作成すればよい。このように冗長ビットを作成すれば、分割後のN個の元データのうち、一つが欠落しても、欠落したデータを復元できる。
【0136】
冗長化の方法は上記のパリティ演算のみに限定されず、冗長データの数も1個とは限らない。例えば、ダブルパリティ演算によって冗長データを作成してもよい。また、元データに基づくECC(Error Correcting Code:誤り訂正符号)を冗長データとして用いてもよい。このように様々な冗長化の方法があるが、以下の説明では、パリティ演算によって1個の冗長データを作成した場合を例に説明する。
【0137】
次に、データの転送先であるストレージ21の動作を説明する。ストレージ20からストレージ21のストレージコントローラ200における通信部204に冗長化write コマンドが送られる。通信部204は、冗長化write コマンドを受信すると、処理シーケンサ201に冗長化write コマンドを渡し、冗長化write コマンドにもとづく処理(冗長化write 処理)の開始を指示する。
【0138】
図16は、ストレージ21における処理シーケンサ201の動作を示すフローチャートである。処理シーケンサ201は、複数の冗長化write 処理を並行して行うことが可能であり、コマンドを発行処理したストレージの識別子と、コマンドに付加されたコマンド識別子を用いて各処理を識別する。
【0139】
冗長化write 処理では、処理シーケンサ201は、まず、送られてくるデータを記憶できる領域をバッファ106中に確保する(ステップS320)。次いで、通信部204に冗長化write コマンドを送信したストレージ20に向けて受信準備の完了通知を送信させる(ステップS321)。そして、ストレージ20からデータが届くのを待ち(ステップS322)、データが到着したことが通信部204から通知されたら、データ転送元のストレージ20の識別子とデータに付加されているコマンド識別子とを指定し、データを復元部203に送るように通信部204に指示する(ステップS323)。
【0140】
次いで、処理シーケンサ201は、冗長化write コマンドに対応して送られてきたデータの個数を判断する(ステップS324)。各データには、冗長化write コマンドに対応したコマンド識別子が付加されているので、処理シーケンサ201は、受信した各データが冗長化write コマンドに対応して送られてきたデータか否かを確認することができる。データの個数が所定の個数(n個)未満の場合にはステップS322に移行し、所定の個数(n個)である場合にはステップS325に移行する(ステップS324)。この所定の個数は、元データを復元することができるデータの個数であり、冗長化の方式によって異なる。例えば、N個に分割された元データからパリティ演算によって1個の冗長データが作成された場合、ストレージ20からはN+1個のデータが送られてくる。この場合、N個のデータを受信すれば、元データを復元することができる。従って、ステップS324では受信したデータの数がN個未満か否かを判断すればよい。
【0141】
ステップS325において、処理シーケンサ201は、データ転送元のストレージ20の識別子およびコマンド識別子と、ステップS320で確保したバッファ106中の領域とを指定し、データの復元を復元部203に指示する。そして、データ転送元のストレージ20に応答を送信するように通信部204に指示する(ステップS326)。また、IOスケジューラ104に対して、ステップS320で確保したバッファ106中の領域中のデータを、冗長化write コマンドで指定された媒体中の領域に書き込むように指示を出し(ステップS327)、処理を終了する。IOスケジューラ104にこの指示が出された場合のIOスケジューラ104および媒体制御部105の動作は、第1の実施の形態で説明したステップS102における動作と同様である。
【0142】
なお、処理シーケンサ201は、ステップS325の処理開始以降に通信部204に到着した冗長化write コマンドに関連したデータについては、通信部204にそのデータの破棄を指示する。例えば、N個のデータから元データを復元できる場合、N+1個目に到着したデータは必要がない。必要なデータが到着した後にストレージ21に到着したデータは破棄する。
【0143】
次に、復元部203の処理について説明する。復元部203は、バッファメモリを有し、データ転送元のストレージ20の識別子およびコマンド識別子とともに渡されたデータをバッファメモリに蓄える。データ転送元のストレージ20の識別子およびコマンド識別子と、バッファメモリ106中の復元したデータを格納する領域とが指定され、復元が指示されると、復元部203は、内部のバッファから、データ転送元のストレージ20の識別子およびコマンド識別子に該当するデータを集める。そして、各データに付加された識別情報を元に、データ群から冗長化前のデータを復元する。
【0144】
例えば、RAID3およびRAID5の装置等のように、N個に分割された元データからパリティ演算によって1個の冗長データを作成して冗長化を行っていたとする。そして、分割されたN個の元データのうちk番目のデータがストレージ21に到着せず、他のN−1個のデータと1個の冗長データ(合計N個のデータ)が到着したとする。この場合、k番目のデータと到着したN個のデータにおいて、対応する各ビットの値の総和が必ず奇数(または必ず偶数)になるようにすることによって、k番目のデータを作成することができる。そして、作成したk番目のデータと、ストレージ21に到着した他のデータとによって、分割前の元データを復元すればよい。分割された各データには、識別情報(例えば、先頭から何番目のデータであるのかを示す番号)が付加されているので、分割された状態から分割前の元データに復元させることができる。また、N個に分割された元データが全てストレージ21に到着し、冗長データが到着しなかった場合には、到着したN個のデータから分割前の元データを復元すればよい。
【0145】
復元部203は、指定されたバッファメモリ106中の領域に復元したデータを格納する。なお、復元部203の内部のバッファにおける復元処理で使用されていたデータを格納していた領域は、復元処理終了後他のデータの格納に再利用される。
【0146】
既述のように、冗長化の方法は、パリティ演算によって1個の冗長データを作成する方法に限られない。転送先のストレージ21では、冗長化の方法に対応した方法で復元を行えるように制御すればよい。例えば、ECCを冗長データとしたならば、ECCに対応した方法で復元を行うように制御すればよい。
【0147】
また、ここでは、元データをN個に分割して冗長データを作成する場合を例示に説明したが、ストレージ20の冗長化部202は、ステップS304において、元データを分割せずに元データと同一のデータを複製し、その複製したデータを冗長データとしてもよい。そして、ステップS305では、元データを一つのデータのまとまり(例えば、一つのパケット、セグメントあるいはフレーム等)として送信し、元データの複製である冗長データも一つのデータのまとまりとして送信してもよい。元データと冗長データとは同一のデータであり、また、分割されていないので、転送先ストレージ21では、いずれか一方を受信したときに、受信したデータをそのまま記憶媒体101に書き込んでよい。また、遅れて受信したデータは破棄してよい。従って、ストレージ21の処理シーケンサ201は、一回目にステップS324に移行したならば、すぐに次のステップS325に移行してよい。さらに、ステップS325において復元部203が復元処理を行うことなく、次のステップS326に移行してよい。
【0148】
このように元データと冗長データとを同一のデータとして、別々の二つのデータのまとまりとして送信すれば、一方のデータが送信過程で失われてもストレージ21は、送信元が送信しようとした元データをそのまま受信することができる。
【0149】
また、ここでは、元データを分割せずに元データと同一のデータを複製し、その複製したデータを冗長データとする場合を示した。ストレージ20の冗長化部202は、冗長データを作成するときに、元データをN個に分割し、分割したN個のデータについてそれぞれ同一のデータを複製してもよい。この場合、分割後のN個のデータの複製であるN個のデータが冗長データとなる。そして、ステップS305では、元データをN個のデータのまとまり(例えば、N個のパケット、セグメントあるいはフレーム等)として送信し、冗長データもN個のデータのまとまりとして送信してもよい。この場合、ストレージ21には2×N個のデータが送信される。ストレージ21は、この2×N個のデータのうち、元データを復元することができる一組のデータ(分割後の第一番目から第N番目までの各データ)について受信したならば、そのデータに基づいて元データを復元する。すなわち、ストレージ21の処理シーケンサ201は、ステップS324において、分割後の第一番目のデータから第N番目のデータまでを全て受信したか否かを確認すればよい。そして、全て受信していればステップS325に移行し、まだ受信していないデータがあればステップS322に戻ればよい。
【0150】
このように複製データを冗長データとして送信すれば、2×N個のデータの一部が送信過程で廃棄されても、ストレージ21が分割後の第一番目のデータから第N番目のデータまでを全て受信した時点でデータを復元することができる。なお、ストレージ20の冗長化部202は、元データを分割してからその分割後の各データの複製を作成してもよいし、また、分割前の元データと同一のデータを複製し、元データおよび複製データをそれぞれ分割してもよい。
【0151】
第5の実施の形態によれば、冗長データを作成し、元データと冗長データとを別々に送信する。従って、データの一部が送信過程で失われてしまったとしても、元データを復元することができる。あるいは、送信元が送信しようとした元データをそのまま受信することができる。この結果、元データの一部が送信過程で失われた場合、転送元のストレージ20に元データが届いていないことを通知して、ストレージ20に再度送信させる必要がなくなり、データの転送時間を短縮することができる。
【0152】
図13に示すデータ複製システムでは、冗長化されたデータ群に含まれる元データおよび冗長データは、いずれもネットワーク13を介して送受信される。元データと冗長データとを別々のネットワークを介して送信する構成であってもよい。図17は、元データと冗長データとを別々のネットワークを介して送信するデータ複製システムの構成例を示すブロック図である。図17に示す構成例において、ストレージ20は、ネットワーク13を介してストレージ21に接続され、またネットワーク14を介してもストレージ21に接続されている。ストレージ20とストレージ21とが二つのネットワーク13,14を介して接続されている点以外は、図13に示す構成と同様である。また、図17に示すストレージ20,21の構成は、図14に示す構成と同様である。ただし、通信部204は、二つのネットワーク13,14に接続される。
【0153】
また、図17に示すストレージ20の動作は、図13に示すストレージ20の動作と同様である。ただし、ステップS305(図15参照)において、通信部204が冗長化されたデータ群をストレージ21に送信する場合、通信部204は、元データと冗長データをそれぞれ別々のネットワークを介して送信する。例えば、元データを一つのデータ転送単位として(例えば一つのパケット等として)、ネットワーク13aを介してストレージ21に送信し、元データの複製である冗長データを、ネットワーク14を介してストレージ21に送信する。
【0154】
このような構成によれば、ネットワーク13,14のいずれか一方で障害が発生したり、いずれか一方のネットワークの転送速度が遅かったとしても、もう一方のネットワークを介して元データまたは元データと同一の冗長データを送信することができる。従って、元データの複製を冗長データとする場合に、耐障害性をより高めることができる。なお、元データをN個に分割して冗長データを作成する場合であっても、分割した元データと冗長データとをそれぞれ別のネットワークを介して送信するようにしてもよい。
【0155】
実施の形態6.
第5の実施の形態では、ストレージ20のデータのバックアップが実現されたが、ミラーリングによってストレージ20のデータをストレージ21に転送するようにしてもよい。図18は、第6の実施の形態、すなわちミラーリングを行う場合のストレージ20のストレージコントローラ200における処理シーケンサ201の動作を示すフローチャートである。なお、データ複製システムの構成およびストレージ20,21の構成は第5の実施の形態の場合と同じである(図13,図14参照)。また、ストレージ20において、通信部204、IOスケジューラ104および媒体制御部105の動作は、第5の実施の形態のそれらの動作と同じである。
【0156】
ストレージ20は、ホスト10からwrite コマンドを受信したときにミラーリングを開始する。ストレージ20の通信部204がホスト10からwrite コマンドを受信すると、通信部204はそのwrite コマンドを処理シーケンサ204に渡す。すると、処理シーケンサ201は、図18に示すように、ホスト10から受け取るデータを格納するのに必要な領域をバッファメモリ106に確保する(ステップS340)。また、準備完了の通知をホスト10に送るように通信部204に指示する(ステップS341)。通信部204は、指示に応じて、準備完了の通知をホスト10に送る。
【0157】
そして、処理シーケンサ201は、ホスト10からデータが到着するのを待ち(ステップS342)、データが届いて通信部204からデータを格納すべきバッファメモリ106の領域の問い合わせを受けると、ステップS340で確保した領域を通信部204に知らせる(ステップS343)。次いで、冗長化write コマンドをストレージ21に送るように通信部204に指示する(ステップS344)。通信部204は、指示に応じて、ストレージ21に冗長化write コマンドを送信する。
【0158】
次いで、処理シーケンサ201は、ホスト10からのデータのバッファメモリ106への格納の完了を待ち(ステップS345)、全てのデータがバッファメモリ106に格納されたことが通信部204から通知されると、処理シーケンサ201は、IOスケジューラ104に対して、処理の種類(この場合には書き込み)と、処理の識別IDと、処理の対象となる記憶媒体101中の領域を示す情報と、処理の対象となるバッファメモリ106の領域を示す情報とを登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、書き込み対象のデータの書き込み指示を行う。媒体制御部105は、登録内容に応じてバッファメモリ106から記憶媒体101へのデータの書き込み処理を行う(ステップS346)。
【0159】
そして、処理シーケンサ201は、ストレージ21から受信準備完了のメッセージ(ステップS344において送った冗長化write コマンドに対する応答)が送信されるのを待つ(ステップS347)。ストレージ21からの受信準備完了のメッセージを受信したことが通信部204から通知されると、バッファメモリ106に格納されたデータを冗長化するように冗長化部202に指示する。冗長化部202は、指示に応じて、第5の実施の形態の場合と同様に冗長化を行う(ステップS348)。ステップS348では、元データをN個に分割し、分割後のデータから冗長データを作成してもよい。あるいは、元データを分割せず、元データを複製したデータを冗長データとしてもよい。また、元データを分割した各データと同一のデータを複製し、複製した各データを冗長データとしてもよい。元データと同一のデータを複製し、元データおよび複製データをそれぞれ分割してもよい。
【0160】
続いて、処理シーケンサ201は、通信部204に、冗長化部202によって冗長化されたデータ群をストレージ21に向けて送信するように指示する(ステップS349)。通信部204は、この指示に応じて、冗長化されたデータ群(分割後の元データおよび冗長データ)をストレージ21に送信する。その後、ストレージ21から受信完了のメッセージが送信されるのと、媒体制御部105からの書き込み完了通知とを待ち(ステップS350)、ストレージ21からの受信完了のメッセージを受信したことが通信部204から通知され、かつ、媒体制御部105からの書き込み完了通知を受けると、ホスト10に完了通知し(ステップS351)、処理を終了する。なお、ストレージ21が、ストレージ20から冗長化されたデータ群を受信するときの動作は、実施の形態5と同様である。
【0161】
図17に示す場合と同様に、ストレージ20とストレージ21とがネットワーク13,14によって接続されていてもよい。そして、ステップS349において、通信部204が冗長化されたデータ群を送信するときには、元データと冗長データとをそれぞれ別々のネットワークを介して送信するようにしてもよい。
【0162】
第1の実施の形態から第4の実施の形態のデータ複製システムにおいて、ストレージと中継装置とがデータを送受信する際に、第5の実施の形態または第6の実施の形態に示したように冗長化されたデータ群を送受信するようにしてもよい。その場合、第1の実施の形態から第4の実施の形態においても、第5の実施の形態または第6の実施の形態と同様の効果が得られる。
【0163】
第5の実施の形態および第6の実施の形態において、データ転送処理手段は、処理シーケンサ201および通信部204によって実現される。冗長化手段202は、冗長株202によって実現される。復元手段は、復元部203によって実現される。格納処理手段は、処理シーケンサ201、IOスケジューラ104および媒体制御部105によって実現される。
【0164】
実施の形態7.
図19は、本発明によるデータ複製システムの第7の実施の形態を示すブロック図である。図19に示すデータ複製システムにおいて、ストレージ301が、ストレージ301を使用するホスト(上位装置)300とローカルに接続されている。また、ストレージ302が、ストレージ302を使用するホスト303とローカルに接続されている。ストレージ301は、ネットワーク13を介してストレージ302に接続されている。また、ホスト300とホスト303とは通信可能に接続されている。ホスト300とホスト303とは、専用回線によって接続されていることが好ましいが、専用回線以外のネットワーク(例えばインターネット等)によって接続されていてもよい。
【0165】
ストレージ301,302は、例えば、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置である。ストレージ301,302として、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置の集合であるディスクアレイ装置を使用することもできる。ホスト300,303とストレージ301,302とは、SCSI、ファイバチャネル(Fibre channel )、イーサネット(登録商標)等で接続される。なお、図19に示すシステムにおいて、ホスト300が、システムに障害が発生していないときに稼働する正常系ホストであり、ホスト303が、ホスト300において障害が発生したときに稼働する待機系ホストであるとする。
【0166】
ホスト300,303は、それぞれホスト300,303自身が保持するアプリケーションプログラム(以下、アプリケーションと記す。)に従って処理を行う。このアプリケーションは、ストレージ301,302のデータを処理対象とする。例えば、ストレージ301,302に銀行の顧客の預金額等のデータを記憶する場合には、ホスト300,303は、預金データ管理アプリケーションに従って、ストレージ301,302内のデータの更新等を行う。実際に動作を行うのはホストであるが、以下、アプリケーションの動作として説明する。
【0167】
本実施の形態では、正常系のストレージ301内のデータが遠隔地に存在する待機系のストレージ303にミラーリングされる。ただし、正常系ホスト300がストレージ301にデータを書き込んだ時点では、待機系ストレージ303の記憶媒体にそのデータを書き込ませるのではなく、待機系ストレージ303が備える同期用バッファメモリにそのデータを保持させる。そして、ホスト300が指定するタイミングで、待機系ストレージ303の同期用バッファメモリ内のデータを所定の記憶媒体に書き込ませる。例えば、ホストが処理Xを開始するときには、ストレージにデータA,Bが書き込まれていなければならないとする。この場合、正常系のホスト300がストレージ301にデータAを書き込んだ時点では、待機系ストレージ302にはデータAを同期用バッファメモリに保持させるだけで、待機系ストレージ302の記憶媒体への書き込みは行わせない。ホスト300がストレージ301にデータBを書き込んだ後に、ホスト300は待機系ストレージ302の記憶媒体への書き込みタイミングを指定し、そのタイミングで待機系ストレージ302は同期用バッファメモリ内のデータA,Bを記憶媒体に書き込む。
【0168】
そのデータの状態であればアプリケーションがそのまま動作を再開することができるタイミングを、再開可能ポイントと記す。すなわち、再開可能ポイントとは、書き込まれたデータの状態がアプリケーションによる処理を再開することができる状態になっているタイミングのことである。上記の例では、正常系のストレージ301にデータA,Bが書き込まれてから次のデータが書き込まれるまでの間が、処理Xを開始することができる再開可能ポイントとなる。
【0169】
図20は、ホスト300の構成例を示すブロック図である。ホスト300において、単数あるいは複数のアプリケーションが動作する。ここでは、2つのアプリケーション310a,310bを例示する。アプリケーション310a,310bは、IO管理部311を用いて、ストレージ301中のデータにアクセスする。また、IO管理部311は、ストレージ301に再開可能ポイントを通知するための再開可能ポイント通知部312を有する。アプリケーション310a,310bに従い、再開可能ポイント通知部312は、再開可能ポイントにおいて、ストレージ301に再開可能ポイントであることを知らせる処理(再開可能ポイント通知処理)を行う。また、ホスト300の状態を監視するホスト監視部313が備えられている。なお、ホスト303の構成は、ホスト300の構成と同じである。
【0170】
本実施の形態におけるアプリケーション310a,310bは、再開機能を有するアプリケーションである。すなわち、ストレージの記憶媒体101のデータ記録状態が所定の状態になっていれば処理を再開できる機能を実現するアプリケーションである。
【0171】
図21は、図19に示すストレージ301の構成例を示すブロック図である。なお、ストレージ302の構成も、図21に示すような構成である。図21に示すように、ストレージ301は、ストレージコントローラ320とストレージ本体である記憶媒体101とを含む。ストレージコントローラ320は、ホスト300および他のストレージと通信を行う通信部322、各処理のシーケンスを管理する処理シーケンサ321、記憶媒体101に対する処理命令の順序制御を行うIOスケジューラ104、IOスケジューラ104が発行する処理命令に従って記憶媒体101の動作を制御する媒体処理部105、ホスト300から記憶媒体101へのデータおよび記憶媒体101からホスト300へのデータを一時記憶するバッファメモリ106、および他のストレージから送られてきたデータを一時保存する同期用バッファメモリ322を含む。処理シーケンサ321は、例えば、プログラムに従って動作するCPUで実現される。IOスケジューラ104および媒体制御部105の動作は、第1の実施の形態におけるIOスケジューラ104および媒体制御部105の動作と同様である。
【0172】
なお、同期用バッファメモリ322として半導体メモリが使用される場合もあるし、磁気ディスク装置、光ディスク装置または光磁気ディスク装置等のより大容量の記憶装置が使用される場合もある。
【0173】
アプリケーション310a,310bがストレージ301からデータを読み出す際、ホスト300は、ストレージ301にデータの読み出しを要求する。ストレージ301の処理シーケンサ321は、IOスケジューラ104等によって、要求されたデータを記憶媒体101からバッファメモリ106にコピーする。そして、そのデータをホスト300に送信する。
【0174】
次に、ホスト300がストレージに301にデータを書き込むときの動作の概要について説明する。ホスト300は、write コマンドをストレージ301に出力することによって、ストレージ301にデータを書き込ませる。また、一回または複数回write コマンドを出力した後に再開可能ポイントになったならば、再開可能ポイント通知コマンドをストレージ301に出力することによって、再開可能ポイントになったことを通知する。
【0175】
ストレージ301は、write コマンドを受信した場合、そのwrite コマンドに従って、記憶媒体101にデータを書き込む。また、ストレージ302に、遅延write コマンドを出力して、そのデータを待機系ストレージ302の同期用バッファメモリ323に保持させる。遅延write コマンドは、記憶媒体101に書き込むべきデータを同期用バッファメモリ323に保持させ、後述する遅延データ反映コマンドが届いたときに記憶媒体101に書き込むことを指示するコマンドである。
【0176】
ストレージ301は、再開可能ポイント通知コマンドを受信した場合、遅延データ反映コマンド(遅延書き込み実行要求)をストレージ302に送信する。遅延データ反映コマンドは、同期用バッファメモリ内に記憶しているデータを記憶媒体101に書き込むことを指示するコマンドである。待機系のストレージ302は、遅延データ反映コマンドを受信したときに、同期用バッファメモリ323に記憶したデータを記憶媒体101に書き込む。このような動作によって、ストレージ302の記憶媒体101が常に処理を開始できる状態に保つ。
【0177】
ストレージ301は、遅延write コマンドおよび遅延データ反映コマンドに同期IDおよび発行IDを付加して送信する。図22は、同期IDおよび発行IDの例を示す説明図である。ストレージ301は、ホスト300から再開可能ポイント通知コマンドを受信する度に同期IDを更新する。従って、ある再開可能ポイントから次の再開可能ポイントまでの間に出力した遅延write コマンドには、同一の同期IDが付加される。ただし、ストレージ301は、再開可能ポイント通知コマンドを受信したときに発行する遅延データ反映コマンドに、更新する直前の同期IDを付加する。その後に発行する遅延write コマンドに更新後の同期IDを付加する。図22に示す例では、遅延write コマンドに更新後の同期IDである「24」や「25」が付加され、その直近に出力された遅延データ反映コマンドに更新前の同期IDである「23」や「24」が付加されている。
【0178】
また、ストレージ301は、遅延write コマンドまたは遅延データ反映コマンドを発行する度に(すなわち、遅延write コマンドまたは遅延データ反映コマンドを作成して送信する度に)発行IDを更新する。図22に示す例では、遅延write コマンドまたは遅延データ反映コマンドの発行IDが1増加する場合の例を示している。
【0179】
ストレージ301は、ホスト300からのwrite コマンドを受信すると、ストレージ302に遅延write コマンドを送信し、その後、遅延write コマンドに対応するデータを送信する。このデータの送信順序は、遅延write コマンドの発行順序と同一でなくてもよい。例えば、ストレージ301が、データp,qを書き込ませるために遅延write コマンドを発行し、その後データrを書き込ませるために次の遅延write コマンドを発行するものとする。この場合、ストレージ301が各データを送信する順番は、p,q,rという順番に限られない。データp,qの送信完了前にデータrの送信を開始してもよい。ただし、遅延データ反映コマンドをストレージ302に送信するときには、それまでに発行した遅延write コマンドのデータの送信を完了させてから遅延データ反映コマンドを送信する。
【0180】
なお、ストレージ301は、遅延write コマンドに対して、遅延write コマンドで指定されたデータを書き込むべき場所(オフセットアドレス、セクター番号、ブロック番号等)やデータのサイズも付加する。
【0181】
次に、アプリケーション310a,310bが、ストレージ301にデータを書き込むときの動作を説明する。図23は、ストレージコントローラ320における処理シーケンサ321の動作を示すフローチャートである。
【0182】
アプリケーション310a,310bは、ストレージ301にデータを書き込むときに、ストレージ301のストレージコントローラ320における通信部322に対してwrite コマンドを出力する。通信部322は、write コマンドを受け取ると、write コマンドを処理シーケンサ321に渡し、write 処理を開始することを処理シーケンサ321に指示する。
【0183】
処理シーケンサ321は、write コマンドを受け取ると、図23に示すように、ホスト300から送られてくるデータを格納するのに必要な領域をバッファメモリ106に確保する(ステップS400)。そして、準備完了の通知をホスト300に送るように通信部322に指示する(ステップS401)。通信部322は、指示に応じて、ホスト300に準備完了の通知を送信する。
【0184】
次いで、ホスト300からデータが届くのを待ち(ステップS402)、データが届いて通信部322からデータを格納すべきバッファメモリ106の領域の問い合わせを受けると、ステップS400で確保した領域を通信部322に知らせる(ステップS403)。また、通信部322にストレージ302に対して同期IDを指定して遅延write コマンドを送信するよう指示する(ステップS404)。通信部322は、指示に応じて、ストレージ302に遅延write コマンドを送信する。既に説明したように、遅延write コマンドには、同期IDおよび発行IDが付加される。ある再開可能ポイントから次の再開可能ポイントまでの間に出力する各遅延write コマンドには、同一の同期IDを付加する。また、遅延write コマンドまたは遅延データ反映コマンドを出力する度に発行IDを更新する(図22参照)。
【0185】
そして、ホスト300からのデータのバッファメモリ106への格納の完了を待ち(ステップS405)、全てのデータがバッファメモリ106に格納されたことが通信部322から通知されると、処理シーケンサ321は、IOスケジューラ104に対して、処理の種類(この場合には書き込み)と、処理の識別IDと、処理の対象となる記憶媒体101中の領域を示す情報と、処理の対象となるバッファメモリ106の領域を示す情報とを登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、書き込み対象のデータの書き込み指示を行う。媒体制御部105は、登録内容に応じてバッファメモリ106から記憶媒体101へのデータの書き込み処理を行う(ステップS406)。
【0186】
そして、ストレージ302から準備完了のメッセージ(遅延write コマンドに対する応答)が送信されるのを待つ(ステップS407)。ストレージ302からの準備完了のメッセージを受信したことが通信部322から通知されると、処理シーケンサ321は、通信部322に、バッファメモリ106に格納されたデータをストレージ302に送信させる(ステップS408)。その後、ストレージ302から受信完了のメッセージが送信されるのと、媒体制御部105からの書き込み完了通知とを待ち(ステップS409)、ストレージ302からの受信完了のメッセージを受信したことが通信部322から通知され、かつ、媒体制御部105からの書き込み完了通知を受けると、ホスト300に完了通知し(ステップS410)、処理を終了する。
【0187】
ステップS408において送信するデータの順番は、対応する遅延write コマンドの発行順序と異なっていてもよい。ストレージ301がホスト300から連続してwrite コマンドを受信し、連続して遅延write コマンドを発行したとする。この場合、ストレージ301は、先に発行した遅延write コマンドに対応するデータの送信(ステップS408)が完了しないうちに、後の遅延write コマンドに対応するデータの送信(ステップS408)を開始してもよい。
【0188】
次に、ストレージ302が遅延write コマンドを受信したときの処理を説明する。図24は、ストレージ302のストレージコントローラ320における処理シーケンサ321が遅延write コマンドを受信したときの動作を示すフローチャートである。
【0189】
処理シーケンサ321は、まず、受け取るデータに必要な領域を同期用バッファメモリ323に確保し(ステップS420)、要求の送信元(この例ではストレージ301)に受信準備完了の通知を送るように通信部322に指示する。通信部322は、指示に応じて受信準備完了のメッセージを送信元に送る(ステップS421)。次いで、データの到着を待ち(ステップS422)、データが到着し通信部322からデータの格納位置の問い合わせを受けると、ステップS420で確保した同期用バッファメモリ323の領域を通信部322に通知する(ステップS423)。そして、要求の送信先からのデータの同期用バッファメモリ323への格納が完了するのを待ち(ステップS424)、データの格納が完了したら、要求の送信先に遅延write コマンドにもとづく処理を完了したことを通知するように通信部322に指示する。通信部322は、指示に応じて、遅延write コマンドにもとづく処理を完了したことを要求の送信先に通知する(ステップS425)。そして、処理シーケンサ321は処理を終了する。
【0190】
また、処理シーケンサ321は、データを記憶媒体101に書き込む際に、同期用バッファメモリ323に既に格納されているデータと同一の同期IDを有し、かつ、格納する領域が一部だけでも重なるデータについては、既に同期用バッファメモリ323に格納されている重なる部分を書き込まないように制御する。すなわち、同じ領域に書き込むデータに関して、後続の遅延write コマンドにもとづく処理でのデータが有効になるように制御を行う。
【0191】
例えば、記憶媒体101中のある領域へのデータの書き込みを指示する遅延write コマンドがストレージ302に届き、同じ領域への書き込みを指示する遅延write コマンドが届いたとする。そして、この二つの遅延write コマンドの同期IDが同一であるとする。この場合、正常系のストレージ301において再開可能ポイントの間に、一回データが書き込まれ、さらにデータが上書きされたことを意味する。従って、処理シーケンサ321は、同じ領域に書き込まれるデータのうち最初に書き込まれるデータを待機系ストレージ302の同期用バッファメモリ323の中に保持しなくてもよい。処理シーケンサ321は、新たにストレージ301から遅延write コマンドを受信したときに、上書きされることになるデータが同期用バッファメモリ323に存在するか否かを判断する。そして、上書きされることになるデータを特定したならばそのデータを同期用バッファメモリ323から削除する。
【0192】
次に、アプリケーション310a,310bが、ストレージ301に再開可能ポイント通知を通知する再開可能ポイント通知処理の動作を説明する。ここでは、アプリケーション310aが再開可能ポイント通知処理を行う場合を例にする。
【0193】
アプリケーション310aが、再開可能ポイントを通知する場合、IO管理部311に再開可能ポイントを通知するように指示する。IO管理部311において、アプリケーション310aから再開可能ポイントの通知が指示されると、再開可能ポイント通知部312が、ストレージ301に対して再開可能ポイント通知コマンドを発行する。
【0194】
ストレージ301に再開可能ポイント通知コマンドが到着すると、ストレージ301のストレージコントローラ320における通信部322に再開可能ポイント通知コマンドが入力される。通信部322は、再開可能ポイント通知コマンドを受け取ると、処理シーケンサ321に再開可能ポイント通知コマンドを渡し、再開可能ポイント通知処理の開始を指示する。
【0195】
図25は、処理シーケンサ321の動作を示すフローチャートである。処理シーケンサ321は、まず、その時点での内部の同期IDの値を保持した後に、同期IDの値を更新する(ステップS440)。同期IDの値を保持するとは、例えば、レジスタに保存することである。次いで、ステップS440で保持した同期IDを指定した遅延データ反映コマンドをストレージ302に送信するように通信部322に指示する。通信部322は、指示に応じて、遅延データ反映コマンドをストレージ302に送信する(ステップS441)。そして、ストレージ302から遅延データ反映コマンドにもとづく処理の完了のメッセージが送られてくるのを待つ(ステップS442)。ストレージ302から完了のメッセージが到着したことが通信部322から通されたら、通信部322を介してホスト300に再開可能ポイント通知コマンドにもとづく処理の完了を通知し(ステップS443)、処理を終了する。
【0196】
なお、図22に示すように、一つの遅延データ反映コマンドの送信後に出力する各遅延write コマンドには、レジスタ等に保存した同期IDではなく、更新後の同期IDを付加する。
【0197】
次に、ストレージ302の遅延データ反映コマンドを受けた際の動作を説明する。ストレージ302に遅延データ反映コマンドが到着すると、ストレージ302のストレージコントローラ320の通信部322に遅延データ反映コマンドが入力される。通信部322は、遅延データ反映コマンドを受け取ると、処理シーケンサ321に遅延データ反映コマンドを渡し、遅延データ反映処理の開始を指示する。
【0198】
図26は、ストレージ302のストレージコントローラ320における処理シーケンサ321の遅延データ反映処理の動作を示すフローチャートである。処理シーケンサ321は、到着した遅延データ反映コマンドに付加された同期IDの値が前回処理した遅延データ反映コマンドの次の値かどうかを判定する(ステップS460)。次の値でなかった場合には、同期IDが、前回処理した遅延データ反映コマンドの同期IDの次の値になっている遅延データ反映コマンドの到着を待つ。例えば、図22に示す例において、前回処理した遅延データ反映コマンドが、同期ID「23」の遅延データ反映コマンドであったとする。その後、同期ID「25」の遅延データ反映コマンドを受信した場合、同期ID「24」の遅延データ反映コマンドの到着を待つ。そして、同期ID「24」の遅延データ反映コマンドについてステップS461〜S468の処理を行った後、同期ID「25」の遅延データ反映コマンドについてステップS461以降の処理を行う。
【0199】
同期IDが前回の同期IDの次の値であった場合には、保持してある前回処理した遅延データ反映コマンドの発行IDの値と、今回処理する遅延データ反映コマンドに付加された発行IDの値の間の値の発行IDを持つ遅延write コマンドに対応するデータが全て同期用バッファメモリ323に記録されているか否か検索する(ステップS461)。例えば、図22に示す各コマンドのうち、前回処理した遅延データ反映コマンドの発行IDが「71」であり、今回処理する遅延データ反映コマンドに付加された発行IDが「76」であるとする。この場合、発行IDが「71」〜「75」の遅延write コマンドに対応するデータが全て同期用バッファメモリ323に記録されているか否かを確認する。ただし、上書きされるデータであるとして削除したデータは記録確認の対象に含めなくてよい。抜けがあった場合には、各遅延write コマンドに対応するデータが全て待機系ストレージ302に到着し、同期用バッファメモリ323に記録されるまで待つ。
【0200】
ステップS463では、処理シーケンサ321は、同期用バッファメモリ323を検索し、遅延データ反映コマンドにより指定された同期IDと一致し、かつ、書き込み処理中でない遅延write コマンドを検索する。例えば、図22に示す発行ID「76」の遅延データ反映コマンドを受信して処理を行っている場合、そのコマンドに付加された同期ID「24」と一致し、かつ、書き込み処理中でない遅延write コマンドを検索する。検索した結果、見つからなければ、記憶媒体101へのデータの書き込み処理が開始されていない遅延write コマンドが存在しないことになる。この場合、ステップS465に移行する。また、検索対象の遅延write コマンドが見つかった場合には、記憶媒体101へのデータの書き込み処理が開始されていない遅延write コマンドが存在することになる。この場合、ステップS464に移行する。
【0201】
ステップS464では、ステップS462の検索で見つかった遅延write コマンドで指定された記憶媒体101上のデータを書き込むべき場所(オフセットアドレス)に対して、同期用バッファメモリ323中の対応したデータを書き込む指示(書き込み要求)をIOスケジューラ104に登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、データ転送対象のデータの書き込み指示を行う。媒体制御部105は、書き込み指示に従って、データを同期用バッファメモリ323から記憶媒体101に出力させる。そして、処理シーケンサ321は、同期用バッファメモリ323中の検索された領域を書き込み処理中とし、ステップS462に戻る。
【0202】
ステップS465では、同期用バッファメモリ323から記憶媒体101へデータ出力処理を行っているか否かを判断する。そして、処理中であればステップS466に移行し、すでに処理が完了しているならばステップS468に移行する。ステップS466では、記憶媒体101へデータ出力処理のうち1つが終了するまで待ち、完了した処理の対象であった同期用バッファメモリ323中の領域を未使用状態にして(ステップS467)、ステップS465に戻る。ステップS468では、遅延データ反映コマンドの送信元(この例ではストレージ301)に遅延データ反映コマンドにもとづく処理の完了を通知するように通信部322に指示する。通信部322は、指示に応じて、処理の完了を遅延データ反映コマンドの送信元に通知する。また、処理シーケンサ321は、前回処理した遅延データ反映コマンドの情報として保持している同期IDおよび発行IDを、処理した遅延データ反映コマンドのものに更新し、処理を終了する。
【0203】
次に、災害発生時の動作を説明する。災害等によってホスト300が使用できなくなった場合には、ストレージ302を待機系から正常系にする。また、ホスト303が、ホスト300から処理を引き継ぐ。
【0204】
障害検知からアプリケーション再開までのホスト303の動作を説明する。まず、ホスト303中のホスト監視部313がホスト300の異常を検出する。ホスト監視部313は、ホスト300の異常を検出すると、待機系であるストレージ302に対して遅延データ破棄コマンドを発行する。そして、遅延データ破棄コマンドに対する応答を待ち、応答を受けたら、待機系ホスト303のホスト監視部313は、待機系ホストのアプリケーション310a,310bを実行させる。以後、ホスト303からのデータの書き込みおよび読み出しは、ストレージ302に対して行われる。
【0205】
なお、ホスト303中のホスト監視部313は、ホスト300と常時あるいは定期的に通信を行っている。ホスト監視部313が、一定時間ホスト300と通信できなくなった場合、あるいは、ホスト300から異常が報告された場合に、ホスト監視部313は、ホスト300において災害が発生したと認識する。ホスト303がホスト300の異常を確実に認識するために、ホスト303とホスト300とは専用回線で接続されていることが好ましい。
【0206】
次に、待機系ストレージ302が、待機系ホスト303から遅延データ破棄コマンドを受けた場合の動作を説明する。ストレージ302に遅延データ破棄コマンドが到着すると、ストレージ302のストレージコントローラ320における通信部322に遅延データ破棄コマンドが入力される。通信部322は、遅延データ破棄コマンドを受け取ると、処理シーケンサ322に遅延データ破棄コマンドを渡し、遅延データ破棄処理の開始を指示する。
【0207】
図27は、処理シーケンサ322が実行する遅延データ破棄処理を示すフローチャートである。処理シーケンサ322は、同期用バッファメモリ323を検索する(ステップS480)。ステップS480では、未だ遅延データ反映コマンドが到着していないため記憶媒体101に移動させる必要がないデータを検索する。処理シーケンサ322は、検索した結果、見つからなかった場合ステップS483に移行し、見つかった場合にはステップS482に移行する(ステップS481)。例えば、図22に示す各コマンドのうち、発行ID「76」の遅延データ反映コマンドを受信しておらず、発行ID「72」〜「75」のうちの一部の遅延write コマンドのデータが同期用バッファメモリ323に記憶されているならば、ステップS482に移行する。発行ID「76」の遅延データ反映コマンドを受信して、各遅延write コマンドのデータを記憶媒体101に移行している場合には、ステップS483に移行する。
【0208】
ステップS482では、処理シーケンサ322は、ステップS480で見つかったデータを記録している同期用バッファメモリ323中の領域を未使用状態にしてステップS480に戻る。すると、次のステップS481では、ステップS483に移行することになる。ステップS483では、遅延データ反映処理中であった場合にはステップS484に移行し、遅延データ反映処理中でなかった場合にはステップS485に移行する。
【0209】
ステップS484では、処理中の遅延データ反映処理の完了を持ち、完了したらステップS485に移行する。ステップS485では、遅延データ破棄コマンドの発行元(この例ではホスト303)に遅延データ破棄コマンドにもとづく処理の完了を通知するように通信部322に指示する。通信部322は、指示に応じて、処理の完了を遅延データ破棄コマンドの発行元に通知する、そして、処理シーケンサ322は処理を終了する。
【0210】
本実施の形態では、正常系のホスト300がストレージ301にwrite コマンドを出力したとき、待機系のストレージ302はストレージ301から書き込まれるデータを受信するが、記憶媒体101には記録せず、同期用バッファメモリ323に記録する。そして、ストレージ302は、再開可能ポイント通知コマンドを受信したときに、そのデータを同期用バッファメモリ323から記憶媒体101に移動させ、遅延データ破棄コマンドを受信した場合、同期用バッファメモリ323を未使用状態にする。従って、ストレージ302の記憶媒体101は、常にアプリケーション310a,310bの処理を再開できる状態に保たれる。その結果、ホスト300に異常が生じたときに、即座にホスト303が処理を続行することができる。
【0211】
また、正常系ストレージ301は、再開可能ポイントと再開可能ポイントとの間で記憶媒体101に書き込んだデータを一度に待機系ストレージ302に送信するのではなく、write コマンドを受信したタイミング毎に送信する。従って、大量のデータを一度に送信しないので、ホスト302とのデータ転送時間が少なくてすむ。
【0212】
さらに、待機系ストレージ302がストレージ301から受信する各コマンドは同期IDおよび発行IDによって管理され、再開可能ポイントと再開可能ポイントとの間に正常系ストレージが送信したデータの到着順序は任意の順序でよい。従って、遅延write コマンドに対応するデータを遅延write コマンドが送信する順序が制限されないので、設計を行いやすくなる。
【0213】
本実施の形態では、遅延write コマンドおよび遅延データ反映コマンドに同期IDおよび発行IDの双方を付加する場合を説明したが、発行IDのみを付加するようにしてもよい。この場合、待機系ストレージ302の処理シーケンサ321は、遅延データ反映コマンドを受信した場合、ステップS460,S461の代わりに以下の処理を行えばよい。処理シーケンサ321は、遅延データ反映コマンドを受信した場合、前回処理した遅延データ反映コマンドの発行IDと受信した遅延データ反映コマンドの発行IDとの間の発行IDが付加された各コマンドを全て受信しているか否かを確認する。そして、各発行IDが付加されたコマンドを全て受信してれば、ステップS462(図26参照)以降の処理を行う。各発行IDが付加されたコマンドを全て受信していなければ、各コマンドを全て受信したときにステップS462以降の処理を開始する。
【0214】
例えば、図22に示す各コマンド(同期IDは付加されていないものとする)のうち、発行ID「71」の遅延データ反映コマンドが前回処理した遅延データ反映コマンドであったとする。その後、発行ID「76」の遅延データ反映コマンドを受信した場合、発行ID「72」〜「75」の各コマンドを受信しているか否かを確認し、これらのコマンドを全て受信した後にステップS462以降の処理を開始する。また、発行ID「76」より先に発行ID「80」の遅延データ反映コマンドを受信した場合、制御シーケンサ321は、発行ID「72」〜「79」の各コマンドを受信しているか否かを確認する。そして、発行ID「72」〜「76」の各コマンドを全て受信したときに、発行ID「76」の遅延データ反映コマンドの処理を行う。その後、発行ID「77」〜「79」のコマンドを全て受信したときに発行ID「80」の遅延データ反映コマンドの処理を行う。
【0215】
なお、各コマンドに同期IDも付加される場合には、遅延write コマンドを受信したときに、上書きされるデータを特定することができる。一方、同期IDを用いない場合には、処理シーケンサ321はステップS462の処理を開始する直前に、上書きされるデータを特定し、そのデータを同期用バッファメモリ323から削除する。
【0216】
第7の実施の形態において、遅延書き込み要求手段および書き込み実行要求手段は、ストレージ301の処理シーケンサ321および通信部322によって実現される。一時記憶手段は、同期用バッファメモリ323によって実現される。格納処理手段は、ストレージ302の処理シーケンサ321、IOスケジューラ104および媒体制御部105によって実現される。再開可能ポイント通知手段は、再開可能ポイント通知部312によって実現される。
【0217】
実施の形態8.
図28は、本発明によるデータ複製システムの第8の実施の形態を示すブロック図である。この実施の形態では、ストレージが主体となってデータ転送を実行するとともに、正常系システムにおけるストレージ内のデータが遠隔地にミラーリングされる。さらに、システムには、少なくとも1世代前のスナップショットを保存できる待機系のストレージが設けられる。1世代前のスナップショットとは、直近の再開可能ポイントにおいてデータが格納されていた記憶媒体101のアドレスの情報である。
【0218】
図28に示すデータ複製システムにおいて、ストレージ400が、ストレージ400を使用するホスト300とローカルに接続されている。また、ストレージ401が、ストレージ401を使用するホスト303とローカルに接続されている。ストレージ301は、ネットワーク13を介してストレージ302に接続されている。また、ホスト300とホスト303とは、ホスト303がホスト300の状態を監視するために通信可能に接続されている。ホスト300とホスト303は専用回線によって接続されていることが好ましいが、専用回線以外のネットワーク(例えばインターネット等)によって接続されていてもよい。なお、ホスト300,303の構成は、第7の実施の形態におけるホスト300,303の構成と同じである(図20参照)。
【0219】
ストレージ400,401は、例えば、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置である。ストレージ400,401として、単体の磁気ディスク装置、光ディスク装置または光磁気ディスク装置の集合であるディスクアレイ装置を使用することもできる。ホスト300,303とストレージ400,401とは、SCSI、ファイバチャネル(Fibre channel )、イーサネット(登録商標)等で接続される。なお、図28に示すシステムにおいて、ホスト300が、システムに障害が発生していないときに稼働する正常系ホストであり、ホスト303が、ホスト300において障害が発生したときに稼働する待機系ホストであるとする。
【0220】
この実施の形態では、ホスト300上で動作するアプリケーション310a,310bが、動作中に、そのデータの状態であればアプリケーションがそのまま動作を再開可能なポイントで、ストレージ301に再開可能なポイントであることを知らせるために再開可能ポイント通知処理を行う。なお、アプリケーション310a,310bが、ストレージ400からデータを読み出す際のホスト300およびストレージ400の動作は、通常のデータ読み出し処理の場合の動作と同様である。また、ストレージ400において、IOスケジューラ104および媒体制御部105の動作は、第1の実施の形態におけるIOスケジューラ104および媒体制御部105の動作と同様である。
【0221】
本実施の形態におけるアプリケーション310a,310bは、再開機能を有するアプリケーションである。すなわち、ストレージの記憶媒体101のデータ記録状態が所定の状態になっていれば処理を再開できるアプリケーションである。
【0222】
図29は、図28に示すストレージ400の構成例を示すブロック図である。なお、ストレージ401の構成も、図29に示すような構成である。図29に示すように、ストレージ400は、ストレージコントローラ410とストレージ本体である記憶媒体101とを含む。ストレージコントローラ410は、ホスト300および他のストレージと通信を行う通信部412、各処理のシーケンスを管理する処理シーケンサ411、記憶媒体101に対する処理命令の順序制御を行うIOスケジューラ104、IOスケジューラ104が発行する処理命令に従って記憶媒体101の動作を制御する媒体処理部105、ホスト300から記憶媒体101へのデータおよび記憶媒体101からホスト300へのデータを一時記憶するバッファメモリ106、論理ブロックアドレスの管理を行うLBA管理部413、および論理ブロックアドレスの管理に用いられるアドレステーブルを記憶したアドレステーブル記憶部414を含む。処理シーケンサ321は、例えば、プログラムに従って動作するCPUで実現される。
【0223】
なお、同期用バッファメモリ322として半導体メモリが使用される場合もあるし、磁気ディスク装置、光ディスク装置または光磁気ディスク装置等のより大容量の記憶装置が使用される場合もある。
【0224】
ストレージ400,401は、記憶媒体101の物理アドレス空間によって、データを管理する。一方、他の装置からデータの書き込み処理や読み込み処理等の要求を受け付ける場合には、書き込み領域や読み込み領域を論理アドレス空間のアドレスによって指定される。再開可能ポイントにおける論理アドレス空間をスナップショット論理アドレス空間と呼ぶ。また、最新の時点において論理アドレスを最新論理アドレス空間と呼ぶ。ストレージ400,401は、スナップショット論理アドレス空間の情報と、最新論理アドレス空間の情報とを用いて処理を進める。また、ストレージ400,401は、複数のスナップショット論理アドレス空間を管理する場合もある。
【0225】
アドレステーブル記憶部414が記憶するアドレステーブルの一例を図30に示す。アドレステーブル420は、複数のエントリ420−0〜420−nから構成されている。各エントリ420−0〜420−nは、論理アドレス空間を固定長のデータに分割した論理ブロックに対応する。
【0226】
図31(a)は、エントリの説明図である。各エントリ420−0〜420−nを構成する情報には、最新論理アドレス空間に対応したストレージ内の物理ブロック番号と、スナップショット論理アドレス空間に対応した物理ブロック番号がある。各物理ブロック番号は、直近にスナップショットを作成してからブロック番号の変更があったことを記録するフラグとセットになっている。なお、物理ブロック番号とは、ストレージ400,401のアドレス空間を固定長のデータに分割した際の物理ブロック個々につけられた一意の番号である。なお、スナップショット論理アドレス空間に対応する物理ブロック番号のフラグは設けなくてもよい。
【0227】
図31(b)は、一つのエントリの初期状態の例を示す。図31(b)では、「aaa」という物理ブロック番号に対応するアドレスにデータが格納されていることを示す。また、再開可能ポイント以降、データが変更されていないので、最新論理アドレス空間に対応する物理ブロック番号も「aaa」となっている。「aaa」という物理ブロック番号に対応するアドレスへの書き込みが要求されたとする。その場合、書き込みは他のアドレスに行い、そのアドレスに対応する物理ブロック番号「bbb」を最新論理アドレス空間に対応する物理ブロック番号として保持する。また、新論理アドレス空間に対応するフラグも「変更有り」に更新する。その後、再開可能ポイントになったならば、図31(d)に示すように最新論理アドレス空間に対応する情報を、スナップショット論理アドレス空間に対応する情報にコピーする。また、最新論理アドレス空間に対応するフラグを「変更無し」とする。
【0228】
本実施の形態では、スナップショット論理アドレス空間に対応する情報をスナップショットとして用いる。
【0229】
この結果、次に再開可能ポイントとなるまでは、新たに書き込もうとしたデータは、書き込もうとしたアドレスとは別のアドレスに書き込まれる。従って、再開可能ポイントの時点におけるデータが残ることになる。待機系のストレージへのデータの書き込みをこのように管理することにより、ホスト300に異常が生じても、すぐにホスト303が処理を再開することができる。
【0230】
また、アドレステーブル記憶部414は、どの論理アドレス空間にも含まれない物理ブロックのブロック番号が記録された未使用ブロックテーブルも記憶する。なお、アドレステーブル記憶部414として、不揮発性の半導体メモリ、磁気ディスク装置、光ディスク装置または光磁気ディスク等が使用される。また、アドレステーブル記憶部414として、記憶媒体101の記憶領域の一部が使用される場合もある。
【0231】
次に、ホスト300が、ストレージ400,401にデータを書き込むときの動作を説明する。ホスト300は、ストレージ400にデータを書き込むときに、ストレージ400のストレージコントローラ410における通信部412に対してwrite コマンドを出力する。通信部412は、write コマンドを受け取ると、write コマンドを処理シーケンサ411に渡し、write 処理を開始することを処理シーケンサ411に指示する。処理シーケンサ411が実行する書き込み処理は、データ転送先ストレージが設定されている場合といない場合とで異なる。なお、ストレージ400には、データ転送先としてストレージ401が設定され、ストレージ401には、データ転送先が設定されていない。
【0232】
図32は、データ転送先が設定されている場合のストレージコントローラ410における処理シーケンサ411の動作を示すフローチャートである。すなわち、この実施の形態では、ストレージ400における処理シーケンサ411の動作を示すフローチャートである。データ転送先が設定されている場合には、処理シーケンサ411は、まず、受け取るデータに必要な領域を同期用バッファメモリ323に確保する(ステップS500)。また、write コマンドで指定された書き込み先の論理アドレスとwrite 処理であることを指定して、LBA管理部413に論理アドレスを物理アドレスに変換させる(ステップS501)。LBA管理部413は、図31に示す最新論理アドレス空間に対応する物理ブロック番号を割り当て、その物理ブロック番号に対応する物理アドレスを処理シーケンサ411に返す。ステップS501におけるLBA管理部413の動作の詳細については後述する。
【0233】
次いで、処理シーケンサ411は、準備完了の通知をホスト300に送るように通信部412に指示する(ステップS502)。通信部412は、指示に応じて、ホスト300に準備完了の通知を送信する。そして、ホスト300からデータが届くのを待ち(ステップS503)、データが届いて通信部412からデータを格納すべきバッファメモリ106の領域の問い合わせを受けると、ステップS500で確保した領域を通信部412に知らせる(ステップS504)。また、再開可能ポイント通知処理を行っている場合にはステップS513に移行し、行っていなかった場合にはステップS506に移行する(ステップS505)。ここで、「再開可能ポイント通知処理を行っている場合」とは、ホスト300から再開可能ポイントを通知され、ストレージ401に対して所定の処理を行っている場合を指す。具体的には、後述するステップS562〜S564の処理を行っている場合にはステップS513に移行し、行っていなかった場合にはステップS506に移行する。
【0234】
ステップS506では、処理シーケンサ411は、データ転送先のストレージ(この例ではストレージ401)に対してwrite コマンドを発行するように通信部412に指示する。このwrite コマンドでは、書き込み先を論理アドレスで指定する。通信部412は、指示に応じて、write コマンドをデータ転送先のストレージに送信する。そして、ホスト300からのデータのバッファメモリ106への格納の完了を待ち(ステップS507)、全てのデータがバッファメモリ106に格納されたことが通信部412から通知されると、処理シーケンサ411は、IOスケジューラ104に対して、ステップS501で変換した物理アドレスに対応した領域に、バッファメモリ106に格納されたデータを書き込む指示(書き込み要求)を登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、書き込み対象のデータの書き込み指示を行う。媒体制御部105は、登録内容に応じてバッファメモリ106から記憶媒体101へのデータの書き込み処理を行う(ステップS508)。
【0235】
そして、ストレージ401から準備完了のメッセージが送信されるのを待ち(ステップS509)、ストレージ401からの準備完了のメッセージを受信したことが通信部412から通知されると、通信部412に、バッファメモリ106に格納されたデータをストレージ401に送信させる(ステップS510)。その後、ストレージ401から受信完了のメッセージが送信されるのと、媒体制御部105からの書き込み完了通知とを待ち(ステップS511)、ストレージ401からの受信完了のメッセージを受信したことが通信部412から通知され、かつ、媒体制御部105からの書き込み完了通知を受けると、ホスト300に完了通知し(ステップS512)、処理を終了する。
【0236】
ステップS513では、ホスト300からのデータのバッファメモリ106への格納の完了を待ち、全てのデータがバッファメモリ106に格納されたことが通信部412から通知されると、処理シーケンサ411は、IOスケジューラ104に対して、ステップS501で変換した物理アドレスに対応した領域に、バッファメモリ106に格納されたデータを書き込む指示(書き込み要求)を登録する(ステップS514)。次いで、再開可能ポイント通知処理が完了するまで待ち(ステップS515)、再開可能ポイント通知処理が完了したら、データ転送先のストレージに対してwrite コマンドを発行するように通信部412に指示する(ステップS516)。このwrite コマンドでは、書き込み先を論理アドレスで指定する。ステップS516の後、ステップS509に移行する。
【0237】
なお、ステップS506〜S508での処理と、ステップS513〜S516での処理では、ストレージ401に対するwrite コマンド発行処理と記憶媒体101への書き込み処理の順番が逆になっている。これは、以下の理由によるものである。ステップS506〜S508では、ストレージ401にwrite コマンドを送信し、その応答が戻って来るまでの期間に記憶媒体101への書き込み処理を進めるため、write コマンド発行処理を記憶媒体101への書き込み処理よりも先に行うこととした。一方、ステップS513〜S516では、再開可能ポイント通知処理の終了を待っている間、ストレージ401にエントリの変更を行わせている。従って、再開可能ポイント通知処理の終了まではストレージ401にwrite コマンドを送信できない。そこで、再開可能ポイント通知処理の終了を待つまでの間に記憶媒体101への書き込み処理を進めることとした。
【0238】
図33は、データ転送先が設定されている場合のストレージコントローラ410における処理シーケンサ411の動作を示すフローチャートである。すなわち、この実施の形態では、ストレージ401における処理シーケンサ411の動作を示すフローチャートである。より具体的には、ステップS506,S516で送信されたwrite コマンドを受信したストレージ401の処理シーケンサ411の動作を示すフローチャートである。
【0239】
処理シーケンサ411はwrite コマンドを受信すると、まず、受け取るデータに必要な領域をバッファメモリ106に確保する(ステップS520)。また、write コマンドで指定された書き込み先の論理アドレスとwrite 処理であることを指定して、LBA管理部413に論理アドレスを物理アドレスに変換させる(ステップS521)。この処理はステップS501(図32参照)と同様の処理である。
【0240】
次いで、処理シーケンサ411は、準備完了の通知をデータ転送元のストレージ(この例ではストレージ400)に送るように通信部412に指示する(ステップS522)。通信部412は、指示に応じて、データ転送元のストレージに準備完了の通知を送信する。そして、データ転送元のストレージからデータが届くのを待ち(ステップS523)、データが届いて通信部412からデータを格納すべきバッファメモリ106の領域の問い合わせを受けると、ステップS520で確保した領域を通信部412に知らせる(ステップS524)。
【0241】
さらに、データ転送元のストレージからのデータのバッファメモリ106への格納の完了を待ち(ステップS525)、全てのデータがバッファメモリ106に格納されたことが通信部412から通知されると、処理シーケンサ411は、IOスケジューラ104に対して、ステップS521で変換した物理アドレスに対応した領域に、バッファメモリ106に格納されたデータを書き込む指示(書き込み要求)を登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、書き込み対象のデータの書き込み指示を行う。媒体制御部105は、登録内容に応じてバッファメモリ106から記憶媒体101へのデータの書き込み処理を行う(ステップS526)。
【0242】
そして、媒体制御部105からの書き込み完了通知を待ち(ステップS527)、媒体制御部105からの書き込み完了通知を受けると、データ転送元のストレージに完了通知を行い(ステップS528)、処理を終了する。
【0243】
ストレージ400,401は、いずれも論理アドレスを指定されたwrite コマンドを受信して、書き込み処理を開始する。しかし、その論理アドレスに対応する物理アドレスにデータを書き込むのではなく、別の物理アドレス(ステップS501,S521で割り当てた物理アドレス)にデータを書き込む。従って、再開可能ポイントにおけるデータを記憶媒体101に保持し続けることができるので、正常系のホスト300に異常が生じても、待機系のホスト303は、短時間で処理を再開することができる。
【0244】
次に、LBA管理部413による論理アドレスから物理アドレスへの変換処理を説明する。なお、LBA管理部413による変換処理は、write 処理であることが指定された場合とされなかった場合とで異なる。write 処理であることが指定されなかった場合には、LBA管理部413は、論理アドレスが指定されて変換処理の指示を受けると、論理アドレスから論理ブロック番号を算出し、アドレステーブル記憶部414から、最新論理アドレス空間でのその論理ブロック番号に対応した物理ブロック番号を取得する。また、物理ブロック番号と論理ブロックアドレスとから物理アドレスを算出し、算出した物理アドレスを処理シーケンサ411に通知する。なお、論理ブロック番号は、論理ブロックアドレスをブロック長で割った値(小数点以下は切り捨てる)である。また、物理アドレスを算出する場合、まず物理ブロックとブロック長の積(Pとする)を求める。また、論理アドレスをブロック長で割った値の余り(Qとする)を求める。PとQの和を物理アドレスとして算出する。
【0245】
図34は、write 処理であることが指定された場合のLBA管理部413の動作を示すフローチャートである。すなわち、ステップS501,S521におけるLBA管理部413の動作を示すフローチャートである。write 処理であることが指定された場合には、LBA管理部413は、論理アドレスから論理ブロック番号を算出する(ステップS540)、次いで、アドレステーブル記憶部414から、ステップS540で算出した論理ブロック番号に対応したエントリを取得する(ステップS541)。ステップS541では、最新論理アドレス空間におけるエントリを取得する。そして、エントリ中の、最新論理アドレス空間に対応する物理ブロック番号と対になるフラグを確認する(ステップS542)。フラグが「変更有り」となっている場合にはステップS546に移行し、「変更無し」となっている場合にはステップS543に移行する。
【0246】
フラグが「変更無し」となっている場合とは、図31(b)に示すように、最新論理アドレス空間に対応する物理ブロック番号がスナップショット論理アドレス空間に対応する物理ブロック番号と等しい場合である。以下、図31(b),(c)を用いて説明する。ステップS543では、LBA管理部413は、アドレステーブル記憶部414中の未使用ブロックテーブルから未使用の物理ブロック番号を入手する(ステップS543)。ここでは、「bbb」という物理ブロック番号を入手したものとする。また、アドレステーブル記憶部414に登録されている未使用ブロックテーブルの情報から、入手した物理ブロック番号の情報を削除する。そして、削除後の未使用ブロックテーブルの情報をアドレステーブル記憶部414に登録し直す。
【0247】
さらに、ステップS543で入手した物理ブロック番号(bbb)に該当する領域に、ステップS541で入手したエントリ中の最新論理アドレス空間に対応する物理ブロック(aaa)に該当する領域のデータをコピーする旨の情報(コピー要求)をIOスケジューラ104に登録する。IOスケジューラ104は、コピー要求に応じて、媒体制御部105に、対象のデータのコピー指示を行う。媒体制御部105は、記憶媒体101における指定された領域間のコピー処理を行う(ステップS544)。コピー処理が完了したら、LBA管理部413は、ステップS541で入手したエントリの最新論理アドレス空間に対応する物理ブロック番号(aaa)をステップS543で入手した物理ブロック番号(bbb)に変更し、変更後の物理ブロック番号とセットとなっているフラグを「変更有り」に更新する。また、アドレステーブル記憶部414に、変更したエントリを記憶させる(ステップS545)。そして、ステップS546に移行する。
【0248】
ステップS546では、LBA管理部413は、エントリの最新論理アドレス空間に対応する物理ブロック番号から物理アドレスを算出し、算出した物理アドレスを処理シーケンサ411に通知し(ステップS547)、処理を終了する。
【0249】
ステップS542の後、ステップS543以降の処理を行うと、図31(b)に示す物理ブロック番号は、図(c)に示すように変更される。しかし、ステップS547までの処理が終了した時点では、「bbb」に対応する物理アドレスには、「aaa」に対応する物理アドレスと同一のデータが格納されている。正常系ストレージ400が「bbb」に対応する物理アドレスのデータを書き換えるのは、ステップS508またはステップS514においてである(図32参照)。また、待機系ストレージ401が「bbb」に対応する物理アドレスのデータを書き換えるのはステップS526においてである(図33参照)。
【0250】
次に、アプリケーション310a,310bが、ストレージ400に再開可能ポイント通知を通知するときの動作を説明する。アプリケーション310a,310bは、ストレージ400に再開可能ポイント通知を通知するときに、IO管理部311(図20参照)に再開可能ポイントの通知を指示する。すると、IO管理部311において再開可能ポイント通知部312は、ストレージ400に対して再開可能ポイント通知コマンドを発行する。
【0251】
ストレージ400に再開可能ポイント通知コマンドが到着すると、再開可能ポイント通知コマンドは、ストレージコントローラ410における通信部412に入力される。通信部412は、再開可能ポイント通知コマンドを受け取ると、再開可能ポイント通知コマンドを処理シーケンサ411に渡し、再開可能ポイント通知処理を開始することを処理シーケンサ411に指示する。
【0252】
図35は、再開可能ポイント通知コマンドを受け取った処理シーケンサ411の動作を示すフローチャートである。処理シーケンサ411は、再開可能ポイント通知コマンドを受け取ると、図35に示すように、まず、他ストレージに対して要求したwrite 処理のうちで完了していないものがあるか否かを調べ(ステップS560)、あった場合にはステップS561に処理を実行する。すなわち、他ストレージに対して要求したwrite 処理が全て完了するのを待つ(ステップS561)。なお、処理シーケンサ411は、発行した各write コマンドに対する応答が完了しているのか否かを示す一覧情報を管理する。ステップS560では、この情報に基づいて判断を行えばよい。
【0253】
処理シーケンサ411は、他ストレージに対して要求したwrite 処理が全て完了している状態で、通信部412に、データ転送先のストレージ(この例ではストレージ401)にスナップショット作成コマンド(スナップショット作成要求)を送信するように指示する。通信部412は、指示に応じて、データ転送先のストレージにスナップショット作成コマンドを送信する(ステップS562)。スナップショット作成コマンドとは、最新論理アドレス空間に対応する情報を、スナップショット論理アドレス空間に対応する情報にコピーするようにし、かつ、最新論理アドレス空間に対応するフラグを「変更無し」に更新するように要求するコマンドである。処理シーケンサ411は、ステップS562の後、転送先ストレージからの応答を待ち(ステップS563)、応答が到着ことが通信部412から通知されたら、通信部412にホスト300に対して完了を通知するように指示し(ステップS564)、処理を終了する。
【0254】
次に、データ転送先のストレージであるストレージ401がスナップショット作成コマンドを受信した場合の動作を説明する。ストレージ401にスナップショット作成コマンドが到着すると、ストレージ401のストレージコントローラ410の通信部412にスナップショット作成コマンドが入力される。通信部412は、スナップショット作成コマンドを受け取ると、処理シーケンサ411にスナップショット作成コマンドを渡し、スナップショット作成処理の開始を指示する。
【0255】
スナップショット作成処理では、処理シーケンサ411は、アドレステーブル記憶部414中のアドレステーブルの全エントリに対して以下の処理を行う。すなわち、最新論理アドレス空間に対応するフラグに「変更有り」が記録されていた場合には、そのエントリのスナップショット論理アドレス空間に対応する物理ブロック番号を、未使用ブロックとしてアドレステーブル記憶部414中の未使用ブロックテーブルに登録する。また、スナップショット論理アドレス空間に対応するブロック番号に最新論理アドレス空間に対応する物理ブロック番号をコピーする。このとき、フラグの値もコピーする。その後、最新論理アドレス空間に対応するフラグを「変更無し」に初期化する。
【0256】
例えば、図31(c)に示すエントリでは、最新論理アドレス空間に対応するフラグに「変更有り」が記録されている。この場合、スナップショット論理アドレス空間に対応する物理ブロック番号「aaa」を未使用ブロックとして未使用ブロックテーブルに登録する。そして、スナップショット論理アドレス空間に対応するブロック番号に、最新論理アドレス空間に対応する物理ブロック番号「bbb」をコピーする。そして、最新論理アドレス空間に対応するフラグ「変更有り」も同様にコピーする。さらに、最新論理アドレス空間に対応するフラグを「変更無し」に初期化する。すると、エントリの状態は、図31(c)に示す状態から、図31(d)に示す状態になる。
【0257】
また、最新論理アドレス空間に対応するフラグが「変更無し」である場合、直前の再開可能ポイント以降その物理ブロック番号に対応するアドレスに格納されたデータが変更されていないことを意味する。従って、そのエントリには何も処理を行わない。
【0258】
最新論理アドレス空間に対応するフラグが「変更有り」となっている全エントリに対して処理を終了した後、処理シーケンサ411は、通信部412を用いてスナップショット作成コマンドに対する応答を送信する。
【0259】
次に、災害発生時の動作を説明する。災害等によってホスト300が使用できなくなった場合には、ストレージ401を待機系から正常系にする。また、ホスト303が、ホスト300から処理を引き継ぐ。
【0260】
障害検知からアプリケーション再開までのホスト303の動作を説明する。まず、ホスト303中のホスト監視部313(図20参照)がホスト300の異常を検出する。ホスト監視部313は、ホスト300の異常を検出すると、待機系であるストレージ401に対してスナップショット復帰コマンドを発行する。そして、スナップショット復帰コマンドに対する応答を待ち、応答を受けたら、ホスト監視部313は、アプリケーション310a,310bを実行させる。以後、ホスト303からのデータの書き込みおよび読み出しは、ストレージ401に対して行われる。
【0261】
なお、ホスト303中のホスト監視部313は、ホスト300と常時あるいは定期的に通信を行っている。ホスト監視部313が、一定時間ホスト300と通信できなくなった場合、あるいは、ホスト300から異常が報告された場合に、ホスト監視部313は、ホスト300において災害が発生したと認識する。
【0262】
次に、ストレージ401が、スナップショット復帰コマンドを受けた場合の動作を説明する。ストレージ401にスナップショット復帰コマンドが到着すると、ストレージ401のストレージコントローラ410における通信部412にスナップショット復帰コマンドが入力される。通信部412は、スナップショット復帰コマンドを受け取ると、処理シーケンサ411にスナップショット復帰コマンドを渡し、スナップショット復帰処理の開始を指示する。
【0263】
スナップショット復帰処理では、処理シーケンサ411は、アドレステーブル記憶部中414のアドレステーブルの全エントリに対して以下の処理を行う。すなわち、最新論理アドレス空間に対応するフラグに「変更有り」が記録されていた場合には、その最新論理アドレス空間に対応する物理ブロック番号を未使用ブロックとしてアドレステーブル記憶部414の未使用ブロックテーブルに登録する。その結果、その物理ブロック番号に対応する領域は未使用状態として解放される。次いで、記憶媒体へのデータ格納状況を示す格納情報(最新論理アドレス空間に対応する物理ブロック番号およびフラグ)を、直前のスナップショット作成時の状態に戻す。すなわち、最新論理アドレス空間に対応するブロック番号にスナップショット論理アドレス空間に対応する物理ブロック番号をコピーする。また、最新論理アドレス空間に対応するフラグを「変更有り」から「変更無し」にする。
【0264】
例えば、スナップショット復帰処理開始時に、あるエントリが図31(c)に示す状態であったとする。この最新論理アドレス空間に対応するフラグは「変更有り」となっている。従って、処理シーケンサ411は、その最新論理アドレス空間に対応する物理ブロック番号「bbb」を未使用ブロックとして未使用ブロックテーブルに登録する。次いで、最新論理アドレス空間に対応するブロック番号「bbb」にスナップショット論理アドレス空間に対応する物理ブロック番号をコピーする。この結果、最新論理アドレス空間に対応するブロック番号は「aaa」になる。また、最新論理アドレス空間に対応するフラグを「変更有り」から「変更無し」にする。この結果、格納情報(最新論理アドレス空間に対応する物理ブロック番号およびフラグ)は、直前のスナップショット作成時の状態に戻る。このように、スナップショット復帰処理を行うことにより、エントリは直前の再開可能ポイントにおける状態に復帰する。
【0265】
また、最新論理アドレス空間に対応するフラグが「変更無し」である場合、直前の再開可能ポイント以降その物理ブロック番号に対応するアドレスに格納されたデータが変更されていないことを意味する。従って、そのエントリには何も処理を行わない。
【0266】
本実施の形態では、待機系のストレージ401はストレージ400から受信したデータを、新たに割り当てた物理ブロック番号に対応するアドレスに格納する。そして、ストレージ401は、再開可能ポイントにおいてスナップショット作成コマンドを受信すると、その新たに割り当てた物理ブロックの情報をスナップショットとして保持する。また、再開可能ポイントの前に、正常系のホストに異常が発生した場合には、新たに割り当てた物理ブロック番号を未使用状態にする。新たに割り当てた物理ブロック番号を未使用の状態にすれば、ホスト303は、アプリケーション310a,310bの処理を再開できる。すなわち、ホスト300に異常が生じたとしても、ホスト303が処理を再開するまでの時間は短くて済む。
【0267】
また、正常系ストレージ400は、再開可能ポイントと再開可能ポイントとの間で記憶媒体101に書き込んだデータを一度に待機系ストレージ401に送信するのではなく、ホスト300からwrite コマンドを受信したタイミング毎に送信する。従って、大量のデータを一度に送信しないので、ホスト401とのデータ転送時間が少なくてすむ。
【0268】
次に、第8の実施の形態の変形例について説明する。図32および図35に示された処理例では、再開可能ポイント通知処理が行われていた場合にはwrite コマンドの発行は待たされていた(ステップS505参照)。また、write 処理のうちで完了していないものがある場合にはスナップショット作成コマンドの発行が待たされていた(ステップS560参照)。これに対し、本変形例では、ストレージ400は、ホスト300からwrite コマンドを受信した場合、再開可能ポイント通知処理の状態によらずにストレージ401にwrite コマンドを送信する。すなわち、図32に示すステップS504の後、即座にステップS506以降の処理を開始する。また、ストレージ400は、ホスト300から再開可能ポイント通知を受けた場合には、write 処理の状況によらず即座にストレージ401にスナップショット作成コマンドが発行される。すなわち、再開可能ポイント通知を受けた場合、即座に図35に示すステップS562以降の処理を開始する。
【0269】
本変形例では、ストレージ400は、ストレージ401に対して送信する全てのコマンドに発行IDを付加する。また、待機系のストレージ401は、処理済発行ID情報を保持する。処理済発行ID情報は、ストレージ400から受信した各コマンドのどのコマンドまでの処理が完了したのかを示す情報である。例えば、処理済発行ID情報の内容が「53」であるならば、発行ID「53」までのコマンドに対する処理が完了したことを意味する。
【0270】
図36は、第8の実施の形態の変形例において、write コマンドを受信したストレージ401の処理シーケンサ411の動作を示すフローチャートである。処理シーケンサ411は、まず、受け取るデータに必要な領域をバッファメモリ106に確保する(ステップS580)。また、write コマンドで指定された書き込み先の論理アドレスとwrite 処理であることを指定して、LBA管理部413に論理アドレスを物理アドレスに変換させる(ステップS581)。ステップS581において、LBA管理部413は、ステップS521の場合と同様にエントリに対して処理を行い、物理アドレスを処理シーケンサ411に渡す。
【0271】
次いで、処理シーケンサ411は、準備完了の通知をデータ転送元のストレージ(この例ではストレージ400)に送るように通信部412に指示する(ステップS582)。通信部412は、指示に応じて、データ転送元のストレージに準備完了の通知を送信する。そして、データ転送元のストレージからデータが届くのを待ち(ステップS583)、データが届いて通信部412からデータを格納すべきバッファメモリ106の領域の問い合わせを受けると、ステップS580で確保した領域を通信部412に知らせる(ステップS584)。
【0272】
さらに、データ転送元のストレージからのデータのバッファメモリ106への格納の完了を待ち(ステップS585)、全てのデータがバッファメモリ106に格納されたことが通信部412から通知されると、処理シーケンサ411は、処理済発行ID情報の値が、処理対象のwrite コマンドに付加された発行IDの一つ前の値になるまで待つ(ステップS586)。例えば、発行ID「54」のwrite コマンドを受信して、ステップS580からステップS585までの動作を行ったとする。このとき、発行ID「53」までの各コマンド(write コマンドやスナップショット作成コマンド等)を受信しているとは限らない。この場合、ステップS586では、発行ID「53」までの各コマンドを受信し、その各コマンドに応じた処理を全て完了させるまで、発行ID「54」に対する処理を中断する。処理済発行ID情報が「53」になったならば、発行ID「54」に対する処理を再開し、ステップS587に移行する。
【0273】
処理済発行ID情報の値が発行IDの一つ前の値になったら、処理シーケンサ411は、IOスケジューラ104に対して、ステップS581で変換した物理アドレスに対応した領域に、バッファメモリ106に格納されたデータを書き込む指示(書き込み要求)を登録する。IOスケジューラ104は、書き込み要求に応じて、媒体制御部105に、書き込み対象のデータの書き込み指示を行う。媒体制御部105は、登録内容に応じてバッファメモリ106から記憶媒体101へのデータの書き込み処理を行う(ステップS587)。
【0274】
そして、媒体制御部105からの書き込み完了通知を待ち(ステップS588)、媒体制御部105からの書き込み完了通知を受けると、データ転送元のストレージに完了通知を行う(ステップS589)。また、ステップS589では、write コマンドに付加された発行IDを処理済発行ID情報に反映させる。例えば、発行ID「54」のwrite コマンドについてステップS589までの処理を行ったならば、処理済発行ID情報の情報を「53」から「54」に更新する。
【0275】
また、第8の実施の形態の変形例では、ストレージ401がスナップショット作成コマンドを受信した場合には、以下のように動作する。すなわち、ストレージ401にスナップショット作成コマンドが到着すると、ストレージ401のストレージコントローラ410の通信部412にスナップショット作成コマンドが入力される。通信部412は、スナップショット作成コマンドを受け取ると、処理シーケンサ411にスナップショット作成コマンドを渡し、スナップショット作成処理の開始を指示する。
【0276】
スナップショット作成処理では、処理済発行ID情報後が、処理対象の要求に付加された発行IDの一つ前の値になるまで待つ。すなわち、ステップS586の場合と同様に、スナップショット作成コマンドよりも一つ前に発行されたコマンドに応じた処理を全て完了させるまで、そのスナップショット作成コマンドに応じた処理を進めずに待つ。
【0277】
処理済発行ID情報の値が発行IDの一つ前の値になったら、処理シーケンサ411は、アドレステーブル記憶部中414のアドレステーブルの全エントリに対して以下の処理を行う。すなわち、最新論理アドレス空間に対応するフラグに「変更有り」が記録されていた場合には、その最新論理アドレス空間に対応する物理ブロック番号を未使用ブロックとしてアドレステーブル記憶部414の未使用ブロックテーブルに登録する。次いで、最新論理アドレス空間に対応するブロック番号にスナップショット論理アドレス空間に対応する物理ブロック番号をコピーする。また、最新論理アドレス空間に対応するフラグを「変更有り」から「変更無し」にする。
【0278】
また、最新論理アドレス空間に対応するフラグが「変更無し」である場合、直前の再開可能ポイント以降その物理ブロック番号に対応するアドレスに格納されたデータが変更されていないことを意味する。従って、そのエントリには何も処理を行わない。
【0279】
以上の処理全てが終了したならば、処理シーケンサ411は、処理済発行ID情報の値をスナップショット作成コマンドに付加された発行IDに変更する。そして、通信部412を用いてスナップショット作成コマンドに対する応答をストレージ400に送信する。
【0280】
本変形例では、ストレージ401が発行IDの順番に各コマンドの処理を進めていく点が、既に説明した第8の実施の形態と異なる。しかし、エントリに対する処理自体に相違点はない。従って、ホスト300に異常が生じたとしても、ホスト303が処理を再開するまでの時間は短くて済む。また、ストレージ400,401間でのデータ転送時間も短くて済む。
【0281】
第8の実施の形態において、書き込み要求手段およびスナップショット作成要求手段は、ストレージ400の処理シーケンサ411および通信部412によって実現される。スナップショット作成手段は、ストレージ401の処理シーケンサ411、LBA管理部413およびアドレステーブル記憶部414によって実現される。再開可能ポイント通知手段は、ホスト300の再開可能ポイント通知部312によって実現される。
【0282】
実施の形態9.
図37は、本発明によるデータ複製システムの第9の実施の形態を示すブロック図である。図37に示すデータ複製システムにおいて、正常系のストレージ400が、ストレージ400を使用する正常系のホスト600とローカルに接続されている。また、待機系のストレージ401が、ストレージ401を使用する待機系のホスト601とローカルに接続されている。ストレージ400は、ネットワーク13を介してストレージ401に接続されている。また、ホスト600は、ネットワーク602を介してホスト601に接続されている。
【0283】
なお、ストレージ400,401の構成および動作は、第8の実施の形態におけるスナップショット機能を有するストレージ400,401の構成および動作と同じである(図29参照)。また、ストレージ400,401に代えて、第7の実施の形態におけるストレージ301,302(図21参照)を用いてもよい。
【0284】
また、ネットワーク13,602は、1つのネットワークであってもよい。ただし、ホスト600,601が接続されるネットワーク602は、専用回線とすることが好ましい。
【0285】
図38は、ホスト600の構成例を示すブロック図である。図38に示すように、ホスト600において、単数あるいは複数のアプリケーションが動作する。ここでは、2つのアプリケーション603a,603bを例示する。アプリケーション603a,603bは、IO管理部311を用いて、ストレージ400中のデータにアクセスを行う。また、IO管理部311は、ストレージ400に再開可能ポイントを通知するための再開可能ポイント通知部312を有する。また、ホスト601にアプリケーション603a,603bの実行イメージを転送し、再開可能ポイント通知部312に再開可能ポイントを通知する実行イメージ転送部604が備えられている。
【0286】
本実施の形態におけるアプリケーション603a,603bは、再開機能を有さないアプリケーションである。すなわち、ストレージの記憶媒体101のデータ記録状態が所定の状態になっていれば処理を再開できるような機能を有していないアプリケーションである。
【0287】
図39は、ホスト601の構成例を示すブロック図である。図39に示すように、ホスト601には、実行イメージを保存する実行イメージ保存部606と、ホスト600から送られてきた実行イメージを受け取り実行イメージ保存部606に保存する実行イメージ受信部605と、ホスト600の状況を監視するホスト監視部608と、実行イメージ保存部606中の実行イメージを元にアプリケーションを再開させるアプリケーション再開部607とが備えられている。実行イメージ保存部606は、揮発性半導体メモリ、不揮発性半導体メモリ、磁気ディスク、光磁気ディスク、光ディスク等のデータを保存する媒体である。
【0288】
実行イメージは、稼働系の処理実行状態を示す情報であり、各アプリケーションによって実行されるプロセスを他のホストで実行させるのに必要な情報である。実行イメージには、例えば、各プロセスの仮想アドレス空間中のデータ、プロセス管理情報であるレジスタの値、プログラムカウンタの値およびプロセスの状態等である。プロセスが使用しているファイルやプロセス間通信を復元するための情報等が含まれる。また、並列処理によって一つのプロセスを複数のスレッドで実現する場合には、各スレッドのレジスタの値、プログラムカウンタの値、プログラム状態ワードおよび各種フラグ等も実行イメージに含まれる。さらに、実行イメージは、対象プロセスが使用するカーネル中の通信バッファの内容等を含む場合もある。なお、スレッドとは、並列処理における処理単位である。
【0289】
次に、動作について説明する。まず、実行イメージ転送時の動作を説明する。正常系のホスト600の実行イメージ転送部604には、例えば、ユーザから実行イメージ転送指示が入力される。この指示が入力されるタイミングは、任意のタイミングでよい。指示が入力されると、実行イメージ転送部604は、アプリケーション603a,603bの実行イメージを取得する。次に、実行イメージ転送部604は、IO管理部311の再開可能ポイント通知部312に、ストレージ400に対して再開可能ポイントを通知するように指示する。そして、再開可能ポイント通知部312は、ストレージ400に再開可能ポイントを通知する。次いで、実行イメージ転送部604は、ホスト601の実行イメージ受信部605に対して、取得した実行イメージを転送する。ホスト601において、実行イメージ受信部605は、ホスト600の実行イメージ受信部606から実行イメージを受け取ると、受け取った実行イメージを実行イメージ保存部606に保存する。
【0290】
ストレージ400は、実行イメージの転送が指示された時点において再開可能ポイント通知を受信し、その通知に応じて動作する。従って、待機系のストレージ401は、正常系のホストにおいて実行イメージ転送が指示された時点におけるスナップショットを作成する。
【0291】
ストレージとして第7の実施の形態と同様のストレージ301,302(図19参照)を用いる場合、待機系のストレージ401は、記憶媒体の状態を、正常系のホストにおいて実行イメージ転送が指示された時点における状態に維持する。
【0292】
なお、実行イメージの容量は、数百MB以上になる場合もあり、ホスト601への実行イメージの転送には時間がかかる。そして、実行イメージの転送中にアプリケーション603a,603bが処理を進めるとメモリやレジスタの値が変化してしまい、転送途中で実行イメージの内容が変わってしまう。そのため、実行イメージ転送中は、アプリケーション603a,603bは処理を停止する。
【0293】
あるいは、ホスト600が備えるメモリや磁気ディスク等(図37において図示せず)に、実行イメージの情報を保存し、保存した実行イメージをホスト601に送信してもよい。一旦、保存完了後に、処理を進めても、保存された実行イメージの内容は保たれる。従って、この場合、ホスト600のアプリケーション603a,603bは処理を進めることができる。実行イメージをメモリ等に保存する時間は、実行イメージの転送時間に比べ短い。従って、実行イメージをメモリ等に保存してから転送するようにすれば、処理を停止する時間は短くて済む。
【0294】
ここでは、実行イメージ転送部604がユーザからの指示に応じて実行イメージを転送する場合を示した。実行イメージ転送部604が実行イメージ転送処理を開始するタイミングは、ユーザから指示が入力された時点に限定されない。例えば、一定時間間隔毎に実行イメージ転送処理を開始するようにしてもよい。また、実行イメージの転送が終了したときに再度実行イメージの転送処理を開始してもよい。あるいは、アプリケーションがアイドルになった時点、アプリケーションのアイドルタイムが一定値を越えた時点等に転送処理を開始してもよい。
【0295】
次に、災害発生時の動作を説明する。災害等によってホスト600が使用できなくなった場合には、ストレージ401を待機系から正常系にする。また、ホスト601が、ホスト600から処理を引き継ぐ。
【0296】
障害検知からアプリケーション再開までのホスト601の動作を説明する。まず、ホスト601中のホスト監視部608がホスト600の異常を検出する。例えば、ホスト監視部608は、ホスト600と常時あるいは定期的に通信を行い、一定時間ホスト600と通信できなくなった場合に異常が生じたと認識する。あるいは、ホスト600から異常が報告された場合に、ホスト600において災害が発生したと認識してもよい。
【0297】
ホスト監視部608は、ホスト600の異常を検出すると、待機系であるストレージ401に対してスナップショット復帰コマンドを発行する。そして、スナップショット復帰コマンドに対する応答を待ち、応答を受けたら、ホスト監視部608は、アプリケーション再開部607に、アプリケーションの再開を指示する。アプリケーション再開部607は、実行イメージ保存部606に保存されている実行イメージを用いてアプリケーションアプリケーションの動作を再開させる。本例では、ストレージとして第五の実施の形態と同様のストレージ400,401を用いる場合を示した。ストレージとして第7の実施の形態と同様のストレージ301,302(図19参照)を用いる場合、ホスト監視部608は、スナップショット復帰コマンドの代わりに遅延データ破棄コマンドを出力すればよい。
【0298】
なお、アプリケーション再開部607は、アプリケーションの処理を再開するときに、実行イメージのうち動作するホストによって変更を必要とする情報がある場合には、復元時にその情報を変更する。
【0299】
第9の実施の形態では、正常系のホストにおいて実行イメージの転送が指示された時点で、正常系のストレージは再開可能ポイント通知を受信する。従って、待機系のストレージは、正常系のホストにおいて実行イメージの転送が指示された時点におけるスナップショットを作成する。あるいは、正常系のホストにおいて実行イメージの転送が指示された時点における記憶媒体の状態を維持する。さらに、待機系のホストは、実行イメージの転送が指示された時点における正常系ホストの実行イメージを保持する。従って、アプリケーションによって再開機能が実現されていなくても、待機系のストレージは、所定の時点における正常系のストレージの状態を再現でき、待機系のホストは、その時点における実行イメージを再現できるので、待機系で処理を迅速に再開することができる。
【0300】
第9の実施の形態において、実行イメージ転送部604は、実行イメージを全て転送するのではなく、前回転送した実行イメージとの差分のみを転送してもよい。このように、前回転送した実行イメージから変更された部分のみを転送するようにすれば、転送時間を短縮化することができる。
【0301】
仮想記憶をコンピュータシステムでは、使用される確率の高い論理アドレスと物理アドレスとの変換テーブルを用いることが多い。この変換テーブルは、TLB(Translation Look−aside Buffer )と呼ばれる。TLBでは、変換される各アドレス毎に、そのアドレスのデータが書き換えられたか否かを示す更新情報を管理する。この更新情報は、一般に、ダーティ(dirty)フラグまたはダーティビットと呼ばれている。例えば、「コンピュータ・アーキテクチャ 設計・実現・評価の定量的アプローチ(デイビット・パターソン,ジョン・ヘネシー著、富田眞治 他2名訳、日経BP社,1994年2月,p.442−443)」では、この更新情報はダーティビットとして記載されている。実行イメージ転送部604は、変更があったことを示すダーティフラグに対応する情報を実行イメージとして送信すればよい。
【0302】
また、仮想記憶において、プログラムの実行に必要なページを実記憶装置に配置することをページインとよび、ページを実記憶装置から外して仮想記憶装置に配置することをページアウトとよぶ。実行イメージ転送部604は、実行イメージの転送を指示された場合には、ページインしているメモリのデータをホスト601に送信し、その後、ページアウトが発生したタイミングで、ページアウトしたメモリのデータをホスト601に送信してもよい。ページアウトしたメモリのデータは、次にページインするまで変更されることがない。そのため、このように実行イメージを送信することで、実行イメージの送信量を減らすことができる。
【0303】
第9の実施の形態において、実行イメージ転送手段は、実行イメージ転送部604によって実現される。実行イメージ保存手段は、実行イメージ保存部606によって実現される。任意時点再開可能ポイント通知手段は、ホスト600の再開可能ポイント通知部312によって実現される。
【0304】
図40,41は、クライアントサーバシステムに、第7の実施の形態から第9の実施の形態を適用した場合の構成例を示すブロック図である。通常、ホスト300が各クライアント500−1〜500−nのサーバとして機能する。災害等により、ホスト300またはストレージ400に以上が発生した場合、ホスト303が稼働する。ホスト303が稼働を開始した後、各クライアントはホスト303をサーバとして、ホスト303に処理を要求する。
【0305】
なお、図40に示すように、ホスト300とホスト303とが直接接続されている場合には、第7の実施の形態から第9の実施の形態で説明したように、ホスト303がホスト300の状態を監視する。図41に示すように、ホスト300とホスト303とが直接接続されていない場合には、各クライアント500−1〜500−nがホスト300の状態を監視し、ホスト300に以上が発生したときに、ホスト303に以上の発生を通知してもよい。
【0306】
第7の実施の形態から第9の実施の形態において、第1の実施の形態から第4の実施の形態と同様に、中継装置を介して待機系のストレージにデータを送信するようにしてもよい。その場合、第1の実施の形態から第4の実施の形態の効果も得ることができる。また、ストレージ同士で、あるいはストレージと中継装置との間でデータを送受信するときには、第5の実施の形態または第6の実施の形態に示したように冗長化されたデータ群を送受信するようにしてもよい。その場合、第5の実施の形態または第6の実施の形態と同様の効果も得られる。
【0307】
【発明の効果】
本発明によれば、第一のストレージから第二のストレージに転送されるデータを中継する中継装置であって、第一のストレージが災害によって稼働できない状態になっても、稼働を継続できるとあらかじめ算定された位置に設置された中継装置を備え、第一のストレージは、データ転送の制御を行うデータ転送処理手段を含み、データ転送処理手段は、中継装置に対してデータ転送を完了したときに、第二のストレージに対してデータ転送を完了したとみなす。従って、稼働系のストレージが被災しても中継装置は被災せず、また、稼働系の上位装置は、待機系のストレージにデータが格納されるのを待たずに、次の処理を開始することができるので、データ転送に伴う処理の遅れが改善される。
【0308】
また、本発明によれば、送信される元データから少なくとも1つのエラー訂正のための冗長データを作成し、元データと冗長データとを別々のデータ送信単位で送信する。従って、待機系では、元データと冗長データとの集合のうちの一部から元データを復元することができ、送信過程で一部のデータが廃棄されても再度送信する必要がない。その結果、データの転送を迅速に完了させることができる。
【0309】
また、本発明によれば、稼働系のストレージは、データの書き込み要求が発生すると、書き込み対象のデータと遅延書き込み要求とを待機系のストレージに送信する遅延書き込み要求手段と、そのデータの状態であればアプリケーションがそのまま動作を再開可能な再開可能ポイントであることを知らせるための再開可能ポイント通知を上位装置から受けると遅延書き込み実行要求を待機系のストレージに送信する書き込み実行要求手段とを含み、待機系のストレージは、データを一時的に記憶する一時記憶手段と、受信したデータを遅延書き込み要求に応じて一時記憶手段に格納するとともに、遅延書き込み実行要求を受信すると一時記憶手段に格納されているデータを記憶媒体に格納する格納処理手段とを含む。従って、待機系の記憶媒体の状態を再開可能ポイント通知時の状態にすることができ、正常系で異常が発生したときに待機系ですぐに処理を再開することができる。
【0310】
また、本発明によれば、稼働系のストレージは、データの書き込み要求が発生すると、書き込み対象のデータと書き込み要求とを待機系のストレージに送信する書き込み要求手段と、そのデータの状態であればアプリケーションがそのまま動作を再開可能な再開可能ポイントであることを知らせるための再開可能ポイント通知を上位装置から受けるとスナップショット作成要求を待機系のストレージに送信するスナップショット作成要求手段とを含み、待機系のストレージは、書き込み要求を受信したら書き込み要求に対応するデータを書き込むべき領域を割り当てて記憶媒体にデータを格納し、スナップショット作成要求を受信したらスナップショットを作成するスナップショット作成手段を含む。従って、待機系の記憶媒体の状態を再開可能ポイント通知時の状態にすることができ、正常系で異常が発生したときに待機系ですぐに処理を再開することができる。
【図面の簡単な説明】
【図1】データ複製システムの第1の実施の形態を示すブロック図である。
【図2】ストレージの構成例を示すブロック図である。
【図3】中継装置の構成例を示すブロック図である。
【図4】処理シーケンサの動作を示すフローチャートである。
【図5】中継処理部の動作を示すフローチャートである。
【図6】第2の実施の形態の中継処理部の動作を示すフローチャートである。
【図7】第3の実施の形態の処理シーケンサの動作を示すフローチャートである。
【図8】データ複製システムの第4の実施の形態を示すブロック図である。
【図9】処理シーケンサの動作を示すフローチャートである。
【図10】ストレージの動作を示すフローチャートである。
【図11】ステップS221の処理を具体的に示すフローチャートである。
【図12】データ転送の例を示すタイミング図である。
【図13】データ複製システムの第5の実施の形態を示すブロック図である。
【図14】ストレージの構成例を示すブロック図である。
【図15】処理シーケンサの動作を示すフローチャートである。
【図16】通信部の動作を示すフローチャートである。
【図17】データ複製システムの他の構成例を示すブロック図である。
【図18】第6の実施の形態の処理シーケンサの動作を示すフローチャートである。
【図19】データ複製システムの第の実施の形態を示すブロック図である。
【図20】ホストの構成例を示すブロック図である。
【図21】ストレージの構成例を示すブロック図である。
【図22】同期IDおよび発行IDの例を示す説明図である。
【図23】処理シーケンサの動作を示すフローチャートである。
【図24】処理シーケンサが遅延write コマンドを受信したときの動作を示すフローチャートである。
【図25】処理シーケンサの動作を示すフローチャートである。
【図26】遅延データ反映処理の動作を示すフローチャートである。
【図27】遅延データ破棄処理を示すフローチャートである。
【図28】データ複製システムの第8の実施の形態を示すブロック図である。
【図29】ストレージの構成例を示すブロック図である。
【図30】アドレステーブルの一例を示す説明図である。
【図31】エントリの説明図である。
【図32】処理シーケンサの動作を示すフローチャートである。
【図33】処理シーケンサの動作を示すフローチャートである。
【図34】LBA管理部の動作を示すフローチャートである。
【図35】処理シーケンサの動作を示すフローチャートである。
【図36】処理シーケンサの動作を示すフローチャートである。
【図37】データ複製システムの第9の実施の形態を示すブロック図である。
【図38】ホストの構成例を示すブロック図である。
【図39】ホストの構成例を示すブロック図である。
【図40】クライアントサーバシステムに本発明を適用した場合の構成例を示すブロック図である。
【図41】クライアントサーバシステムに本発明を適用した場合の構成例を示すブロック図である。
【符号の説明】
10 ホスト
11,12 ストレージ
13,14 ネットワーク
15 中継装置
101 記憶媒体
102 通信部
103 処理シーケンサ
104 IOスケジューラ
105 媒体制御部
106 バッファメモリ
151 中継処理部
150 通信部
152 バッファメモリ

Claims (30)

  1. 第一のストレージ内のデータを通信ネットワークを介して第二のストレージにミラーリングまたはバックアップするデータ複製システムにおいて、
    前記第一のストレージから前記第二のストレージに転送されるデータを中継する中継装置であって、前記第一のストレージが災害によって稼働できない状態になっても、稼働を継続できるとあらかじめ算定された位置に設置された中継装置を備え、
    前記第一のストレージは、データ転送の制御を行うデータ転送処理手段を含み、
    前記データ転送処理手段は、前記中継装置に対してデータ転送を完了したときに、前記第二のストレージに対してデータ転送を完了したとみなす
    ことを特徴とするデータ複製システム。
  2. 中継装置は、第一のストレージから受信したコマンドおよびデータを記憶するための不揮発性記憶手段と、データの中継制御を行う中継処理手段とを含み、
    前記中継処理手段は、第一のストレージから受信したコマンドおよびデータを前記不揮発性記憶手段に記憶し、記憶されたコマンドおよびデータを任意のタイミングで第二のストレージに送信する
    請求項1記載のデータ複製システム。
  3. 複数の中継装置が設けられ、
    第一のストレージにおけるデータ転送処理手段は、第一のストレージ内のデータを同時に複数の中継装置に向けて送信する
    請求項1または請求項2に記載のデータ複製システム。
  4. 第一のストレージから第二のストレージに転送されるデータを中継する中継装置であって、
    前記第一のストレージから受信したデータを記憶するための記憶手段と、データの中継制御を行う中継処理手段とを含み、
    前記中継処理手段は、前記第一のストレージから受信したデータを記憶手段に記憶し、記憶手段にデータを記憶したときに前記第一のストレージに対する応答を送信し、前記第二のストレージに対して記憶手段に記憶したデータを送信する
    ことを特徴とする中継装置。
  5. データを送信する送信元からデータを受信する送信先にデータを送信するデータ送受信方法において、
    前記送信元では、送信される元データから少なくとも1つのエラー訂正のための冗長データを作成し、元データと冗長データとを別々のデータ送信単位で送信する
    ことを特徴とするデータ送受信方法。
  6. 送信先では、元データと冗長データとの集合であるデータ群のすべてについて受信を完了する前に、元データについて部分的にエラー訂正処理を実行できる前記データ群の一部を受信した段階で、エラー訂正処理を実行する
    請求項5記載のデータ送受信方法。
  7. 送信元では、元データを分割データに分割し、それらの分割データのうちの1つまたは複数が消失しても元データを復元可能な冗長データを作成する
    請求項5または請求項6に記載のデータ送受信方法。
  8. 冗長データとしてパリティデータまたはECCを用いる請求項7記載のデータ送受信方法。
  9. 冗長データとして送信データの複製データを用いる
    請求項5から請求項7のうちのいずれか1項に記載のデータ送受信方法。
  10. 元データと冗長データとを、別々の通信ネットワークに送出する
    請求項5から請求項9のうちのいずれか1項に記載のデータ送受信方法。
  11. 第一のストレージ内のデータを第二のストレージに通信ネットワークを介してミラーリングまたはバックアップするデータ複製システムにおいて、
    前記第一のストレージは、データ転送の制御を行うデータ転送処理手段と、送信される元データから少なくとも1つのエラー訂正のための冗長データを作成する冗長化手段とを含み、
    前記データ転送処理手段は、元データと前記冗長化手段が作成した冗長データとを別々のデータ送信単位で送信する
    ことを特徴とするデータ複製システム。
  12. 第二のストレージは、第一のストレージから受信した冗長データを用いてエラー訂正処理を行うデータ復元手段と、データ復元手段が復元したデータを記憶媒体に格納する格納処理手段とを含み、
    前記データ復元手段は、前記第一のストレージから元データと冗長データとの集合であるデータ群のすべてについて受信を完了する前に、元データについて部分的にエラー訂正処理を実行できる前記データ群の一部を受信した段階で、エラー訂正処理を実行する
    請求項11記載のデータ複製システム。
  13. 第一のストレージにおける冗長化手段は、元データを分割データに分割し、それらの分割データのうちの1つまたは複数が消失しても元データを復元可能な冗長データを作成する
    請求項11または請求項12に記載のデータ複製システム。
  14. 冗長化手段は、冗長データとしてパリティデータまたはECCを用いる請求項13記載のデータ複製システム。
  15. 冗長化手段は、冗長データとして、元データの複製データを作成する
    請求項11から請求項13のうちのいずれか1項に記載のデータ複製システム。
  16. データ転送処理手段は、元データと冗長データとを、別々の通信ネットワークに送出する
    請求項11から請求項15のうちのいずれか1項に記載のデータ複製システム。
  17. 稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおいて、
    前記稼働系のストレージは、データの書き込み要求が発生すると、書き込み対象のデータと遅延書き込み要求とを前記待機系のストレージに送信する遅延書き込み要求手段と、そのデータの状態であればアプリケーションがそのまま動作を再開可能な再開可能ポイントであることを知らせるための再開可能ポイント通知を上位装置から受けると遅延書き込み実行要求を前記待機系のストレージに送信する書き込み実行要求手段とを含み、
    前記待機系のストレージは、データを一時的に記憶する一時記憶手段と、受信したデータを遅延書き込み要求に応じて前記一時記憶手段に格納するとともに、遅延書き込み実行要求を受信すると前記一時記憶手段に格納されているデータを記憶媒体に格納する格納処理手段とを含む
    ことを特徴とするデータ複製システム。
  18. 稼働系のストレージにおける遅延書き込み要求手段と遅延書き込み実行要求手段とは、遅延書き込み要求と遅延書き込み実行要求とを待機系のストレージに非同期に送信し、
    前記待機系のストレージにおける格納処理手段は、一の遅延書き込み実行要求を受信すると、一つ前の遅延書き込み実行要求と前記一の遅延書き込み実行要求との間に送信された遅延書き込み要求に対応するデータを全て一時記憶手段に格納し終え、前記一つ前の遅延書き込み実行要求以前に送信されたデータを記憶媒体に格納し終えたときに、一時記憶手段に格納されているデータを記憶媒体に格納する
    請求項17記載のデータ複製システム。
  19. 待機系のストレージにおける格納処理手段は、稼働系に異常が生ずると、一時記憶手段に格納されているデータを破棄する
    請求項17または請求項18に記載のデータ複製システム。
  20. 稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおいて、
    前記稼働系のストレージは、データの書き込み要求が発生すると、書き込み対象のデータと書き込み要求とを前記待機系のストレージに送信する書き込み要求手段と、そのデータの状態であればアプリケーションがそのまま動作を再開可能な再開可能ポイントであることを知らせるための再開可能ポイント通知を上位装置から受けるとスナップショット作成要求を前記待機系のストレージに送信するスナップショット作成要求手段とを含み、
    前記待機系のストレージは、書き込み要求を受信したら前記書き込み要求に対応するデータを書き込むべき領域を割り当てて記憶媒体に前記データを格納するとともに、前記記憶媒体へのデータ格納状況を示す格納情報を更新し、スナップショット作成要求を受信したらスナップショットを作成するスナップショット作成手段を含む
    ことを特徴とするデータ複製システム。
  21. 書き込み要求手段は、待機系ストレージのスナップショット作成手段がスナップショットを作成している場合には、スナップショット作成手段がスナップショット作成を完了した後に、書き込み要求を待機系のストレージに送信する請求項20に記載のデータ複製システム。
  22. 稼働系のストレージにおける書き込み要求手段とスナップショット作成要求手段とは、書き込み要求とスナップショット作成要求とを待機系のストレージに非同期に送信し、
    前記待機系のストレージにおけるスナップショット作成手段は、各書き込み要求を受信したときに、受信した書き込み要求の直前のスナップショット作成要求に基づくスナップショットの作成を完了するまで、書き込み要求に対応するデータを記憶媒体に格納するのを待ち、
    一のスナップショット作成要求を受信すると、一つ前のスナップショット作成要求に基づくスナップショットの作成を完了し、前記一つ前のスナップショット作成要求と前記一のスナップショットとの間に送信された書き込み要求に対応するデータを全て記録媒体に格納し終えたときに、スナップショットを作成する
    請求項20に記載のデータ複製システム。
  23. 待機系のストレージにおけるスナップショット作成手段は、稼働系に異常が生ずると、直前のスナップショット作成後にデータが格納された記憶媒体の領域を未使用状態として解放し、格納情報を直前のスナップショット作成時の状態に戻す請求項20ないし請求項22のうちのいずれか1項に記載のデータ複製システム。
  24. 稼働系のストレージを使用する稼働系の上位装置は、再開可能ポイントになると前記稼働系のストレージに再開可能ポイント通知を送信する再開可能ポイント通知手段を含み、
    待機系のストレージを使用する待機系の上位装置は、前記稼働系の異常を検出すると、異常の発生を待機系のストレージに通知して待機系のストレージの状態を前記再開可能ポイントに対応する状態にするように促し、待機系のストレージの状態が前記再開可能ポイントに対応する状態になったときに処理を再開する
    請求項19または請求項23に記載のデータ複製システム。
  25. 稼働系のストレージを使用する稼働系の上位装置は、待機系のストレージを使用する待機系の上位装置に、稼働系の処理実行状態を示す実行イメージを転送する実行イメージ転送手段と、
    実行イメージ転送手段が実行イメージを転送するタイミングで、稼働系のストレージに再開可能ポイント通知を送信する任意時点再開可能ポイント通知手段とを含み、
    待機系のストレージを使用する待機系の上位装置は、前記実行イメージ転送手段が転送する実行イメージを保存する実行イメージ保存手段を含み、
    実行イメージ転送手段は、任意の時点における実行イメージを待機系の上位装置に転送し、
    待機系のストレージを使用する待機系の上位装置は、前記稼働系の異常を検出すると、異常の発生を待機系のストレージに通知して、待機系のストレージの状態を実行イメージの転送タイミングに対応する状態にするように促し、待機系のストレージの状態が実行イメージの転送タイミングに対応する状態になった場合に実行イメージを用いて処理を再開する
    請求項19または請求項23に記載のデータ複製システム。
  26. 稼働系の上位装置における実行イメージ転送手段は、前回転送した実行イメージから変更された部分のみを転送する
    請求項25記載のデータ複製システム。
  27. 第一のストレージ内のデータを通信ネットワークおよび中継装置を介して第二のストレージにミラーリングまたはバックアップするデータ複製システムにおける前記中継装置内に設けられているコンピュータに、
    前記第一のストレージから受信したデータを中継装置内の記憶媒体に記憶する処理と、
    データを中継装置内の記憶媒体に記憶したときに前記第一のストレージに対する応答を送信する処理と、
    中継装置内の記憶媒体に記憶したデータを前記第二のストレージに送信する処理とを
    実行させるストレージ内のデータを複製するためのプログラム。
  28. 第一のストレージ内のデータを第二のストレージに通信ネットワークを介してミラーリングまたはバックアップするデータ複製システムにおける前記第一のストレージ内に設けられているコンピュータに、
    送信される元データから少なくとも1つのエラー訂正のための冗長データを作成する処理と、
    元データと冗長データとを別々のデータ送信単位で送信する処理とを実行させるストレージ内のデータを複製するためのプログラム。
  29. 稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおける前記稼働系のストレージ内に設けられているコンピュータに、
    データの書き込み要求が発生すると、書き込み対象のデータと一時記憶装置にデータを格納することを指示する遅延書き込み要求とを前記待機系のストレージに送信する処理と、
    そのデータの状態であればアプリケーションがそのまま動作を再開可能なポイントであることを知らせるための再開可能ポイント通知を上位装置から受けると、一時記憶装置に格納されているデータを記憶媒体に格納することを指示する遅延書き込み実行要求を前記待機系のストレージに送信する処理とを実行させるストレージ内のデータを複製するためのプログラム。
  30. 稼働系のストレージ内のデータを通信ネットワークを介して待機系のストレージにミラーリングするデータ複製システムにおける前記稼働系のストレージ内に設けられているコンピュータに、
    データの書き込み要求が発生すると、書き込み対象のデータと記憶媒体にデータを書き込むことを指示する書き込み要求とを前記待機系のストレージに送信する処理と、そのデータの状態であればアプリケーションがそのまま動作を再開可能なポイントであることを知らせるための再開可能ポイント通知を上位装置から受けるとスナップショット作成要求を前記待機系のストレージに送信する処理を実行させるストレージ内のデータを複製するためのプログラム。
JP2002249049A 2002-08-28 2002-08-28 データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム Pending JP2004086721A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002249049A JP2004086721A (ja) 2002-08-28 2002-08-28 データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム
US10/644,934 US7343514B2 (en) 2002-08-28 2003-08-21 Data copying system, relaying device, data transfer/reception system and program for copying of data in storage unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002249049A JP2004086721A (ja) 2002-08-28 2002-08-28 データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2008004914A Division JP2008140415A (ja) 2008-01-11 2008-01-11 データ複製システム、データ送受信方法およびストレージ内のデータを複製するためのプログラム
JP2008004915A Division JP2008152796A (ja) 2008-01-11 2008-01-11 データ複製システム、およびストレージ内のデータを複製するためのプログラム

Publications (1)

Publication Number Publication Date
JP2004086721A true JP2004086721A (ja) 2004-03-18

Family

ID=31972550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002249049A Pending JP2004086721A (ja) 2002-08-28 2002-08-28 データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム

Country Status (2)

Country Link
US (1) US7343514B2 (ja)
JP (1) JP2004086721A (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006139477A (ja) * 2004-11-11 2006-06-01 Hitachi Ltd 計算機システム、管理方法及びストレージネットワークシステム
JP2007004690A (ja) * 2005-06-27 2007-01-11 Hitachi Ltd 記憶制御方法、システム及びプログラム
JP2008509489A (ja) * 2004-08-12 2008-03-27 テレコム・イタリア・エッセ・ピー・アー 通信網を介してデータセットを更新するためのシステム、方法及び装置
JP2008217077A (ja) * 2007-02-28 2008-09-18 Nec Corp ディスクアレイ装置、ディスクアレイコントローラ及びプログラム
JP2008217306A (ja) * 2007-03-02 2008-09-18 Nec Corp レプリケーション方法、レプリケーションシステム、ストレージ装置、プログラム
JP2010044608A (ja) * 2008-08-13 2010-02-25 Nec Corp ディスクアレイ装置間の遠隔データコピー方法、システムおよびプログラム
JP2010182154A (ja) * 2009-02-06 2010-08-19 Nec Corp 情報システム及びディザスタリカバリ方法
JP2012501508A (ja) * 2008-09-02 2012-01-19 エクスタス グローバル リミテッド 分散的な記憶及び通信
US8161138B2 (en) 2004-06-25 2012-04-17 Nec Corporation Replication system having the capability to accept commands at a standby-system site before completion of updating thereof
JP2014099054A (ja) * 2012-11-14 2014-05-29 I-O Data Device Inc 記録装置のバックアップシステムおよび記録装置のバックアッププログラム
JP2014174597A (ja) * 2013-03-06 2014-09-22 Kddi Corp インメモリ型分散データベース、データ分散方法及びプログラム
JP2015014963A (ja) * 2013-07-05 2015-01-22 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
JP2015050480A (ja) * 2013-08-29 2015-03-16 ブラザー工業株式会社 通信装置及びプログラム
CN105408870A (zh) * 2013-07-30 2016-03-16 三菱电机株式会社 数据处理装置、数据通信装置、通信系统、数据处理方法、数据通信方法以及程序

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4537022B2 (ja) 2003-07-09 2010-09-01 株式会社日立製作所 データ配置に制限を設けるデータ処理方法、記憶領域制御方法、および、データ処理システム。
US7406628B2 (en) * 2003-07-15 2008-07-29 Seagate Technology Llc Simulated error injection system in target device for testing host system
US7797571B2 (en) * 2003-07-15 2010-09-14 International Business Machines Corporation System, method and circuit for mirroring data
US7302501B1 (en) 2004-03-31 2007-11-27 Western Digital Technologies, Inc. Peripheral data storage system with multi-state user display
US7346790B1 (en) * 2004-03-31 2008-03-18 Western Digital Technologies, Inc. Remote power cycling of peripheral data storage system
US7302579B1 (en) 2004-03-31 2007-11-27 Western Digital Technologies, Inc. Performing backup operations to peripheral data storage systems
JP2007533012A (ja) * 2004-04-12 2007-11-15 アリゾナ ボード オブ リージェンツ データ格納のための情報処理と輸送アーキテクチャ
US9195397B2 (en) 2005-04-20 2015-11-24 Axxana (Israel) Ltd. Disaster-proof data recovery
CN100543691C (zh) * 2005-04-20 2009-09-23 阿克萨纳(以色列)有限公司 远程数据镜像系统
JP4577118B2 (ja) * 2005-06-24 2010-11-10 ブラザー工業株式会社 サービス提供システム、クライアント、サーバおよびプログラム
US7577803B2 (en) * 2007-02-16 2009-08-18 Seagate Technology Llc Near instantaneous backup and restore of disc partitions
JP2008299481A (ja) * 2007-05-30 2008-12-11 Hitachi Ltd ストレージシステム及び複数拠点間でのデータコピー方法
EP2201456A4 (en) * 2007-10-08 2012-02-15 Axxana Israel Ltd SYSTEM FOR QUICK DATA RECOVERY
WO2009141752A2 (en) * 2008-05-19 2009-11-26 Axxana (Israel) Ltd. Resilient data storage in the presence of replication faults and rolling disasters
WO2010076755A2 (en) * 2009-01-05 2010-07-08 Axxana (Israel) Ltd Disaster-proof storage unit having transmission capabilities
US9021124B2 (en) 2009-12-02 2015-04-28 Axxana (Israel) Ltd. Distributed intelligent network
US8688935B1 (en) * 2010-01-19 2014-04-01 Infinidat Ltd Storage system and method for snapshot space management
JP5661313B2 (ja) * 2010-03-30 2015-01-28 キヤノン株式会社 記憶装置
JP5969515B2 (ja) 2011-02-22 2016-08-17 フェデックス コーポレイト サービシズ,インコーポレイティド 分散型グローバル(クラウド)アーキテクチャを通じたセンサーデータのジオステージングのためのシステム及び方法
KR20140028454A (ko) * 2012-08-29 2014-03-10 삼성전자주식회사 휴대 단말기의 데이터 저장 방법 및 시스템
WO2015047398A1 (en) * 2013-09-30 2015-04-02 Hewlett-Packard Development Company, L.P. Overlays to modify data objects of source data
US10769028B2 (en) 2013-10-16 2020-09-08 Axxana (Israel) Ltd. Zero-transaction-loss recovery for database systems
US9954605B2 (en) * 2014-07-10 2018-04-24 Sony Corporation Telecommunications apparatus and methods
US10379958B2 (en) 2015-06-03 2019-08-13 Axxana (Israel) Ltd. Fast archiving for database systems
US10592326B2 (en) 2017-03-08 2020-03-17 Axxana (Israel) Ltd. Method and apparatus for data loss assessment
US11080210B2 (en) * 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US11061751B2 (en) 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
CN109582247B (zh) * 2018-12-10 2022-04-22 浪潮(北京)电子信息产业有限公司 一种主机到存储系统io的传输方法及存储系统
CN114675790B (zh) * 2022-05-24 2022-08-23 华中科技大学 一种多通道并行采样系统数据同步存储的自校正方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57138237A (en) 1981-02-20 1982-08-26 Nec Corp Transmission system for error correction parallel data
US5155845A (en) * 1990-06-15 1992-10-13 Storage Technology Corporation Data storage system for providing redundant copies of data on different disk drives
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5369757A (en) * 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5555371A (en) * 1992-12-17 1996-09-10 International Business Machines Corporation Data backup copying with delayed directory updating and reduced numbers of DASD accesses at a back up site using a log structured array data storage
US5504861A (en) * 1994-02-22 1996-04-02 International Business Machines Corporation Remote data duplexing
US5537533A (en) * 1994-08-11 1996-07-16 Miralink Corporation System and method for remote mirroring of digital data from a primary network server to a remote network server
US5835953A (en) * 1994-10-13 1998-11-10 Vinca Corporation Backup system that takes a snapshot of the locations in a mass storage device that has been identified for updating prior to updating
US6304980B1 (en) * 1996-03-13 2001-10-16 International Business Machines Corporation Peer-to-peer backup system with failure-triggered device switching honoring reservation of primary device
US5901327A (en) * 1996-05-28 1999-05-04 Emc Corporation Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
JP3410010B2 (ja) 1997-12-24 2003-05-26 株式会社日立製作所 サブシステムの移行方法および情報処理システム
US6131148A (en) * 1998-01-26 2000-10-10 International Business Machines Corporation Snapshot copy of a secondary volume of a PPRC pair
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US6360331B2 (en) * 1998-04-17 2002-03-19 Microsoft Corporation Method and system for transparently failing over application configuration information in a server cluster
WO1999063441A1 (en) * 1998-06-05 1999-12-09 Mylex Corporation Snapshot backup strategy
US6148383A (en) * 1998-07-09 2000-11-14 International Business Machines Corporation Storage system employing universal timer for peer-to-peer asynchronous maintenance of consistent mirrored storage
US6266781B1 (en) * 1998-07-20 2001-07-24 Academia Sinica Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
US6308284B1 (en) * 1998-08-28 2001-10-23 Emc Corporation Method and apparatus for maintaining data coherency
US6266784B1 (en) * 1998-09-15 2001-07-24 International Business Machines Corporation Direct storage of recovery plan file on remote server for disaster recovery and storage management thereof
US6148414A (en) * 1998-09-24 2000-11-14 Seek Systems, Inc. Methods and systems for implementing shared disk array management functions
JP2000305856A (ja) 1999-04-26 2000-11-02 Hitachi Ltd ディスクサブシステム及びこれらの統合システム
US6553401B1 (en) * 1999-07-09 2003-04-22 Ncr Corporation System for implementing a high volume availability server cluster including both sharing volume of a mass storage on a local site and mirroring a shared volume on a remote site
US6912629B1 (en) * 1999-07-28 2005-06-28 Storage Technology Corporation System and method for restoring data from secondary volume to primary volume in a data storage system
JP4434407B2 (ja) * 2000-01-28 2010-03-17 株式会社日立製作所 サブシステム及びこれらの統合システム
US6587970B1 (en) * 2000-03-22 2003-07-01 Emc Corporation Method and apparatus for performing site failover
US6598174B1 (en) * 2000-04-26 2003-07-22 Dell Products L.P. Method and apparatus for storage unit replacement in non-redundant array
US20010047412A1 (en) * 2000-05-08 2001-11-29 Weinman Joseph B. Method and apparatus for maximizing distance of data mirrors
EP1158743B1 (en) * 2000-05-23 2008-07-09 Hitachi, Ltd. Computing system with remote copy facility
DE10196341T1 (de) 2000-06-12 2003-04-30 Emc Corp Hopkinton Querverweis auf verwandte Anmeldungen
US6760861B2 (en) * 2000-09-29 2004-07-06 Zeronines Technology, Inc. System, method and apparatus for data processing and storage to provide continuous operations independent of device failure or disaster
US6691245B1 (en) * 2000-10-10 2004-02-10 Lsi Logic Corporation Data storage with host-initiated synchronization and fail-over of remote mirror
US6594744B1 (en) * 2000-12-11 2003-07-15 Lsi Logic Corporation Managing a snapshot volume or one or more checkpoint volumes with multiple point-in-time images in a single repository
US6742138B1 (en) * 2001-06-12 2004-05-25 Emc Corporation Data recovery method and apparatus
US6883110B1 (en) * 2001-06-18 2005-04-19 Gateway, Inc. System and method for providing a data backup of a server on client systems in a network
US6948089B2 (en) * 2002-01-10 2005-09-20 Hitachi, Ltd. Apparatus and method for multiple generation remote backup and fast restore
US7134044B2 (en) * 2002-08-16 2006-11-07 International Business Machines Corporation Method, system, and program for providing a mirror copy of data
JP4037257B2 (ja) * 2002-12-26 2008-01-23 株式会社日立製作所 情報処理システムの制御方法、情報処理システム、及びプログラム
JP3974538B2 (ja) * 2003-02-20 2007-09-12 株式会社日立製作所 情報処理システム
JP4321705B2 (ja) * 2003-07-29 2009-08-26 株式会社日立製作所 スナップショットの取得を制御するための装置及び記憶システム

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8161138B2 (en) 2004-06-25 2012-04-17 Nec Corporation Replication system having the capability to accept commands at a standby-system site before completion of updating thereof
JP4902538B2 (ja) * 2004-08-12 2012-03-21 テレコム・イタリア・エッセ・ピー・アー 通信網を介してデータセットを更新するためのシステム、方法及び装置
JP2008509489A (ja) * 2004-08-12 2008-03-27 テレコム・イタリア・エッセ・ピー・アー 通信網を介してデータセットを更新するためのシステム、方法及び装置
JP2006139477A (ja) * 2004-11-11 2006-06-01 Hitachi Ltd 計算機システム、管理方法及びストレージネットワークシステム
US7673106B2 (en) 2004-11-11 2010-03-02 Hitachi, Ltd. Computer system, management method and storage network system
US7945753B2 (en) 2004-11-11 2011-05-17 Hitachi, Ltd. Computer system, management method and storage network system
JP2007004690A (ja) * 2005-06-27 2007-01-11 Hitachi Ltd 記憶制御方法、システム及びプログラム
JP4531643B2 (ja) * 2005-06-27 2010-08-25 株式会社日立製作所 記憶制御方法、システム及びプログラム
JP2008217077A (ja) * 2007-02-28 2008-09-18 Nec Corp ディスクアレイ装置、ディスクアレイコントローラ及びプログラム
JP2008217306A (ja) * 2007-03-02 2008-09-18 Nec Corp レプリケーション方法、レプリケーションシステム、ストレージ装置、プログラム
JP4715774B2 (ja) * 2007-03-02 2011-07-06 日本電気株式会社 レプリケーション方法、レプリケーションシステム、ストレージ装置、プログラム
JP2010044608A (ja) * 2008-08-13 2010-02-25 Nec Corp ディスクアレイ装置間の遠隔データコピー方法、システムおよびプログラム
JP2012501508A (ja) * 2008-09-02 2012-01-19 エクスタス グローバル リミテッド 分散的な記憶及び通信
JP2015052806A (ja) * 2008-09-02 2015-03-19 クアンド サービス インコーポレイテッド 分散的な記憶及び通信
JP2010182154A (ja) * 2009-02-06 2010-08-19 Nec Corp 情報システム及びディザスタリカバリ方法
JP2014099054A (ja) * 2012-11-14 2014-05-29 I-O Data Device Inc 記録装置のバックアップシステムおよび記録装置のバックアッププログラム
JP2014174597A (ja) * 2013-03-06 2014-09-22 Kddi Corp インメモリ型分散データベース、データ分散方法及びプログラム
JP2015014963A (ja) * 2013-07-05 2015-01-22 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
CN105408870A (zh) * 2013-07-30 2016-03-16 三菱电机株式会社 数据处理装置、数据通信装置、通信系统、数据处理方法、数据通信方法以及程序
JP6038326B2 (ja) * 2013-07-30 2016-12-07 三菱電機株式会社 データ処理装置及びデータ通信装置及び通信システム及びデータ処理方法及びデータ通信方法及びプログラム
US10063348B2 (en) 2013-07-30 2018-08-28 Mitsubishi Electric Corporation Retransmission data processing device, retransmission data communication device, retransmission data communication system, retransmission data processing method, retransmission data communication method, and non-transitory computer readable medium for detecting abnormality by comparing retransmission data to transmission data
JP2015050480A (ja) * 2013-08-29 2015-03-16 ブラザー工業株式会社 通信装置及びプログラム

Also Published As

Publication number Publication date
US7343514B2 (en) 2008-03-11
US20040044649A1 (en) 2004-03-04

Similar Documents

Publication Publication Date Title
JP2004086721A (ja) データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム
EP1481324B1 (en) Producing a mirrored copy using incremental-divergence
JP4452533B2 (ja) システムおよび記憶装置システム
JP4430846B2 (ja) 遠隔ミラーリングシステム、装置及び方法
JP4282464B2 (ja) リモートコピーシステム
US7673173B2 (en) System and program for transmitting input/output requests from a first controller to a second controller
US7908448B1 (en) Maintaining data consistency in mirrored cluster storage systems with write-back cache
JP4236049B2 (ja) データのミラー・コピーを提供するための方法、システム、およびプログラム
US8250323B2 (en) Determining whether to use a repository to store data updated during a resynchronization
US7120824B2 (en) Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair
US7293196B2 (en) Method, apparatus, and system for preserving cache data of redundant storage controllers
JP4074072B2 (ja) データの完全性を備えるリモートコピーシステム
CN101755257B (zh) 管理在不同的网络上将写入从首要存储器拷贝到次要存储器
JP2004303025A (ja) 情報処理方法及びその実施システム並びにその処理プログラム並びにディザスタリカバリ方法およびシステム並びにその処理を実施する記憶装置およびその制御処理方法
JP2005301976A (ja) 多重リモートストレージでのデータ同期
JP2009501382A (ja) マルチライタシステムにおける書き込み順序忠実性の維持
JP2003122509A (ja) リモートコピー制御方法、これを用いた記憶サブシステム、及び、これらを用いた広域データストレージシステム
JP2006023889A (ja) リモートコピーシステム及び記憶装置システム
EP1628220B1 (en) Remote copy system maintaining a logically consistent copy
JP2005309793A (ja) データ処理システム
JP3610574B2 (ja) ディスクアレイ装置
JP2006285336A (ja) 記憶装置及びストレージシステム並びにその制御方法
JP2008152796A (ja) データ複製システム、およびストレージ内のデータを複製するためのプログラム
JP2008140415A (ja) データ複製システム、データ送受信方法およびストレージ内のデータを複製するためのプログラム
JP4452494B2 (ja) 複数リモートストレージでのリモートコピー停止後のデータ同期化方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040914

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20051116

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20051116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080111

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080304