(57)【特許請求の範囲】
【請求項１】
ディスク装置にネットワークを介して接続され、前記ディスク装置に構成されたボリュームへのデータの読み書きを制御する制御部を備えるストレージ装置において、
前記制御部は、プロセッサとメモリとを含み、前記メモリは、前記ボリュームへのデータの読み書きを制御するプログラム、前記ボリューム間のコピー及び復旧を制御するプログラムを記憶し、
前記ボリュームは、第１のボリュームと第２のボリュームとを含み、
前記第２のボリュームには、前記第１のボリュームの各ブロックに格納されるデータ及び当該データの属性を示す情報を格納するメタデータがコピーされ、
前記制御部は、
前記第１のボリュームの復旧要求を受信した場合に、前記第１のボリュームの第１のブロックに格納される第１のメタデータを参照し、
前記参照した第１のメタデータに、第１のＷＯＲＭ化時刻において前記第１のブロックに格納されるデータの更新を禁止する第１のＷＯＲＭ属性が設定されているか否かを判定し、
前記参照した第１のメタデータに前記第１のＷＯＲＭ属性が設定されていると判定された場合には、前記第２のボリュームのうち、前記第１のブロックに対応する第２のブロックに格納される第２のメタデータに設定された、前記第２のブロックに格納されるデータの更新を禁止する時刻である第２のＷＯＲＭ化時刻を参照して、前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致するか否かを判定し、
前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致すると判定された場合には、前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致するか否かを判定し、
前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致すると判定された場合に、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第１のボリュームの前記第１のブロックに格納されるデータが読み出されるように制御し、
前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致しない、又は、前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致しない、の少なくともいずれかに該当すると判定された場合には、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第２のボリュームの前記第２のブロックに格納されるデータが読み出されるように制御し、
前記参照した第１のメタデータに、前記第１のＷＯＲＭ属性が設定されていないと判定された場合には、前記第２のボリュームの前記第２のブロックに格納されるデータ及び前記第２のメタデータを前記第１のボリュームの前記第１のブロックにコピーすることを特徴とするストレージ装置。
【請求項２】
前記制御部は、
前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致しない場合には、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第２のボリュームの前記第２のブロックに格納されるデータが読み出すように制御するための障害情報を前記第１のメタデータに設定することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
ディスク装置にネットワークを介して接続され、前記ディスク装置に構成されたボリュームへのデータの読み書きを制御する制御部を備えるストレージ装置において、ボリュームの内容を復旧するボリューム復旧方法であって、
前記ボリュームは、第１のボリュームと第２のボリュームとを含み、
前記第２のボリュームには、前記第１のボリュームの各ブロックに格納されるデータ及び当該データの属性を示す情報を格納するメタデータがコピーされ、
前記方法は、
前記第１のボリュームの復旧要求を受信した場合に、前記第１のボリュームの第１のブロックに格納される第１のメタデータを参照する第１の手順と、
前記参照した第１のメタデータに、第１のＷＯＲＭ化時刻において前記第１のブロックに格納されるデータの更新を禁止する第１のＷＯＲＭ属性が設定されているか否かを判定する第２の手順と、
前記参照した第１のメタデータに前記第１のＷＯＲＭ属性が設定されていると判定された場合には、前記第２のボリュームのうち、前記第１のブロックに対応する第２のブロックを特定し、当該第２のブロックに格納される第２のメタデータに設定された、前記第２の婦ロックに格納されるデータの更新を禁止する時刻である第２のＷＯＲＭ化時刻を参照して、前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致するか否かを判定する第３の手順と、
前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致すると判定された場合に、前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致するか否かを判定する第４の手順と、
前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致すると判定された場合に、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第１のボリュームの前記第１のブロックに格納されるデータが読み出されるように制御する第５の手順と、
前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致しない、又は、前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致しない、の少なくともいずれかに該当すると判定された場合には、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第２のボリュームの前記第２のブロックに格納されるデータが読み出されるように制御する第６の手順と、
前記参照した第１のメタデータに、前記第１のＷＯＲＭ属性が設定されていないと判定された場合には、前記第２のボリュームの前記第２のブロックに格納されるデータ及び前記第２のメタデータを前記第１のボリュームの前記第１のブロックにコピーする第７の手順と、を含むことを特徴とするデータ復旧方法。
【請求項４】
前記第５の手順は、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第２のボリュームの前記第２のブロックに格納されるデータが読み出すように制御するための障害情報を前記第１のメタデータに設定する手順を含むことを特徴とする請求項３に記載のデータ復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特に、ＷＯＲＭデータを含むボリュームのリストアを可能とするストレージ装置に関するものである。
【背景技術】
【０００２】
ファイルの長期保存を考慮したファイル保存の仕組みとして、保存期限内はファイルの変更及び消去を不可能に設定する、ＷＯＲＭ（Write Once Read Many）機能を備えたストレージシステムが知られている（例えば特許文献１参照。）。
【０００３】
このＷＯＲＭ機能によって、ストレージシステムによって格納されたＷＯＲＭファイルは、ファイル毎に保存期限又は保存期間が設定されており、その期限又は期間を経過するまでは当該ＷＯＲＭファイルは変更や消去が不可能である。
【特許文献１】米国特許公開公報２００４／０１８５８６８号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
まず、ストレージシステムにおけるボリュームペア機能について述べる。
【０００５】
ストレージシステムでは、ディスク装置内のデータの障害を防ぐために、ディスク装置内に設定されているボリュームの内容を他のボリュームにコピーして、保存データを二重化する手法が一般に用いられる。このような手法をボリュームレプリケーション又はボリュームイメージコピーと呼ぶ。
【０００６】
ＷＯＲＭファイルが存在するボリュームの信頼性を上げるためには、ＷＯＲＭ属性も含めたボリュームをコピーする。
【０００７】
このようなボリュームでは、ＷＯＲＭファイルに対するデータの改竄は保護されるが、ボリュームのセクタ障害や、ファイルシステムの矛盾による障害が発生する可能性がある。一般的に、このような障害が発生した場合は、プライマリボリュームのコピーを保持しているボリューム（セカンダリボリューム）からデータをリストアすることによって、障害を復旧する。しかし、ボリュームにＷＯＲＭファイルが存在する場合は、そのデータの更新が不可能であるため、リストアは失敗する。
【０００８】
本発明はこのような問題点に鑑みてなされたものであり、ＷＯＲＭファイルを含むボリュームのリストアを可能とするストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明による実施の形態の一例は、ディスク装置にネットワークを介して接続され、前記ディスク装置に構成されたボリュームへのデータの読み書きを制御する制御部を備えるストレージ装置において、前記制御部は、プロセッサとメモリとを含み、前記メモリは、前記ボリュームへのデータの読み書きを制御するプログラム、前記ボリューム間のコピー及び復旧を制御するプログラムを記憶し、前記ボリュームは、第１のボリュームと第２のボリュームとを含み、前記第２のボリュームには、前記第１のボリュームの各ブロックに格納されるデータ及び当該データの属性を示す情報を格納するメタデータがコピーされ、前記制御部は、前記第１のボリュームの復旧要求を受信した場合に、前記第１のボリュームの第１のブロックに格納される第１のメタデータを参照し、前記参照した第１のメタデータに、第１のＷＯＲＭ化時刻において前記第１のブロックに格納されるデータの更新を禁止する第１のＷＯＲＭ属性が設定されているか否かを判定し、前記参照した第１のメタデータに前記第１のＷＯＲＭ属性が設定されていると判定された場合には、前記第２のボリュームのうち、前記第１のブロックに対応する第２のブロックに格納される第２のメタデータに設定された、前記第２のブロックに格納されるデータの更新を禁止する時刻である第２のＷＯＲＭ化時刻を参照して、前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致するか否かを判定し、前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致すると判定された場合には、前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致するか否かを判定し、前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致すると判定された場合に、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第１のボリュームの前記第１のブロックに格納されるデータが読み出されるように制御し、前記第１のＷＯＲＭ化時刻と前記第２のＷＯＲＭ化時刻とが一致しない、又は、前記第１のブロックに格納されるデータと前記第２のブロックに格納されるデータとが一致しない、の少なくともいずれかに該当すると判定された場合には、前記第１のボリュームの前記第１のブロックへの読み出し要求に対して、前記第２のボリュームの前記第２のブロックに格納されるデータが読み出されるように制御し、前記参照した第１のメタデータに、前記第１のＷＯＲＭ属性が設定されていないと判定された場合には、前記第２のボリュームの前記第２のブロックに格納されるデータ及び前記第２のメタデータを前記第１のボリュームの前記第１のブロックにコピーすることを特徴とする。
【発明の効果】
【００１０】
本発明によると、コピーペアが設定されているボリュームにおいて、所定期間は更新が禁止されているデータ（ＷＯＲＭデータ）を含むボリュームに障害が発生した場合にも、当該ボリュームに格納されている内容を復旧することが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下に本発明の実施の形態を図面に基づいて説明する。
【００１２】
図１は、本発明の第１の実施の形態のストレージシステムの構成のブロック図である。
【００１３】
サーバ２０とストレージ装置３０とがネットワークを介して接続されている。
【００１４】
サーバ２０には端末１０が接続されている。また、ストレージ装置３０には、ディスク装置４０が接続されている。
【００１５】
端末１０はユーザアプリケーションを備えており、このアプリケーションの処理によって、サーバ２０に要求を送信し、その結果を受け取る。
【００１６】
サーバ２０は、端末１０からの要求を受けて、ストレージ装置３０のディスク装置４０のボリュームへのデータのＩ／Ｏを要求する。
【００１７】
ストレージ装置３０は、ディスク装置４０へのデータのＩ／Ｏを実行する。また、ディスク装置４０の構成を管理する。
【００１８】
サーバ２０は、ＣＰＵ２０１、メモリ２０２、インターフェース（Ｉ／Ｆ）２０３及び２０４を備えている。
【００１９】
ＣＰＵ２０１は、メモリ２０２に格納されているプログラムを実行することによって、そのプログラムに規定された処理を実行する。
【００２０】
メモリ２０２には、各種プログラムや情報が格納されている。具体的には、ファイルシステム制御部２０２１、ボリュームレプリケーション制御部２０２２、ＷＯＲＭ制御部２０２３及びデバイスドライバ２０２４が格納されている。これらは、ＣＰＵ２０１によって実行されることで、その機能が実行される。
【００２１】
ファイルシステム制御部２０２１は、端末１０にファイルシステムを提供する。すなわち、ディスク装置４０に構成されている各ボリュームに格納されたデータを、ファイルとしてアクセス可能にする。
【００２２】
ボリュームレプリケーション制御部２０２２は、ディスク装置４０に構成されているボリュームのコピーやリストアに関する制御をする。このボリュームレプリケーション制御部２０２２には、ボリュームペアに関する情報であるボリュームペア管理情報２０２２１を含む。
【００２３】
ＷＯＲＭ制御部２０２３は、ディスク装置４０に構成されているボリュームに格納されているデータのＷＯＲＭに関する制御をする。このＷＯＲＭ制御部２０２３は、ＷＯＲＭデータに関する情報であるＷＯＲＭ管理情報２０２３１を含む。
【００２４】
デバイスドライバ２０２４は、ディスク装置４０に構成されているボリュームの管理をする、より具体的には、ボリューム毎に付されているデバイス番号とアプリケーションソフトウェアが認識するデバイス情報とを相互に変換する。
【００２５】
Ｉ／Ｆ２０３は端末１０とでデータや要求を送受信する。Ｉ／Ｆ２０４は、ストレージ装置とでデータや要求を送受信する。
【００２６】
ストレージ装置３０は、ＣＰＵ３０１、メモリ３０２、インターフェース（Ｉ／Ｆ）３０３及び３０４を備えている。
【００２７】
ＣＰＵ３０１は、メモリ３０２に格納されているプログラムを実行することによって、そのプログラムに規定された処理を実行する。
【００２８】
メモリ３０２には、ＷＯＲＭ処理部３０２１、ボリュームレプリケーション処理部３０２２及び入出力処理部３０２３が格納されている。これらは、ＣＰＵ３０１によって実行されることで、その機能が実行される。
【００２９】
ＷＯＲＭ処理部３０２１は、ディスク装置４０に構成されているボリュームに格納されているデータのＷＯＲＭ化に関する処理を実行する。より具体的には、ファイルをＷＯＲＭ化する又はＷＯＲＭ化を解除する、また、ＷＯＲＭ化されたファイルについて指定期間内の変更や削除を禁止する。
【００３０】
ボリュームレプリケーション制御部３０２２は、ディスク装置４０に構成されているボリュームのコピーやリストアに関する制御をする。このボリュームレプリケーション制御部３０２２には、ボリュームペアに関する情報であるボリュームペア管理情報３０２２１を含む。
【００３１】
入出力処理部３０２３は、サーバ２０からの要求に基づいて、ディスク装置４０へのデータのＩ／Ｏ（入出力）処理を実行する。
【００３２】
Ｉ／Ｆ３０３はサーバ２０とでデータを送受信する。Ｉ／Ｆ３０４はディスク装置４０と出データを送受信する。このＩ／Ｆ３０４は、例えば、ＳＣＳＩやＦｉｂｒｅＣｈａｎｎｅｌ（ＦＣ）等のプロトコルに従ってデータや制御コマンドを送受信する。
【００３３】
ディスク装置４０は、一つ以上のハードディスクドライブを備えている。この一つ以上のハードディスクドライブから、ＲＡＩＤ構成によって仮想デバイスが構成される。この仮想デバイスは、サーバ２０からの要求を直接受けるプライマリデバイスと、プライマリデバイスの内容のバックアップとなるセカンダリデバイスとが設定されている。なお。これらの仮想デバイスの記憶領域をボリュームと呼ぶ。図１では、ボリューム４０１Ａをプライマリボリュームとして、ボリューム４０１Ｂをセカンダリボリュームとして示されている。
【００３４】
これらのボリューム４０１Ａ及び４０１Ｂ（以下、簡単のためボリューム４０１とのみ称する）は、メタデータ部４０２及びデータブロック部４０３を含む。メタデータ部４０２は、データブロック部４０３に格納されるデータの属性（例えばＷＯＲＭ属性）を示す情報が格納される。データブロック部４０３にはブロック毎にデータが格納される。
【００３５】
このような構成によってストレージシステムが構成される。
【００３６】
なお、図１では、サーバ２０は１台のみ描かれているが、複数台のサーバ２０がストレージ装置３０に接続されていてもよい。また、図１ではサーバ３０、ストレージ装置２０及びディスク装置４０は別に描かれているが、これらは同一の筐体に格納されるものであってもよい。
【００３７】
次に、サーバ２０がストレージ装置３０に送信する要求コマンドについて説明する。
【００３８】
なお、ここでは一般的なＳＣＳＩコマンドであるＭＯＤＥ  ＳＥＬＥＣＴコマンドを例に説明するが、他のプロトコルを用いた他の要求コマンド形式を用いてもよい。
【００３９】
図２Ａ及び図２Ｂは、ＷＯＲＭ制御のための要求コマンドのＩ／Ｏ形式及びモードパラメタ形式を示す説明図である。
【００４０】
図２Ａは、ＷＯＲＭ制御用の要求コマンドのＩ／Ｏ形式を示す。
【００４１】
サーバ２０は、このＩ／Ｏ形式に従った要求コマンドを送信することによって、ストレージ装置３０に対してＷＯＲＭの制御を指示する。すなわち、ファイルのＷＯＲＭ化設定やＷＯＲＭ化解除等を要求する。この指示の内容はモードパラメタ（図２Ｂ）に含まれる。
【００４２】
この要求コマンド形式５０１は、ＭＯＤＥ  ＳＥＬＥＣＴコマンド５０１１、ＷＯＲＭ制御用ページコード５０１２及びＭＯＤＥ  ＳＥＬＥＣＴデータの長さ５０１３を含む。
【００４３】
ＭＯＤＥ  ＳＥＬＥＣＴコマンド５０１１は、そのＩ／ＯデータがＭＯＤＥ  ＳＥＬＥＣＴコマンドであることを示す情報である。ＷＯＲＭ制御用ページコード５０１２は、このＩ／ＯがＷＯＲＭ制御用であることを示す情報である。ＭＯＤＥ  ＳＥＬＥＣＴデータの長さ５０１３は、そのＩ／Ｏデータのデータ長を示す。
【００４４】
図２Ｂは、ＷＯＲＭ制御用の要求コマンドのモードパラメタ形式を示す。
【００４５】
モードパラメタ５０２は、ＭＯＤＥ  ＳＥＬＥＣＴのヘッダ情報５０２１、ＷＯＲＭ制御用のページコード５０２２、モードパラメタの長さ５０２３、要求コード５０２４、先頭ブロック番号５０２５及び終端ブロック番号５０２６を含む。
【００４６】
ＭＯＤＥ  ＳＥＬＥＣＴのヘッダ情報５０２１は、当該ＭＯＤＥ  ＳＥＬＥＣＴの基本的な情報を含む。ＷＯＲＭ制御用のページコード５０２２は、当該モードパラメタがＷＯＲＭ制御用であることを示す情報である。モードパラメタの長さ５０２３は、モードパラメタのデータ長を示す。
【００４７】
要求コード５０２４は、当該モードパラメタによって指示する要求コードの内容を示す情報である。要求コードには、ＷＯＲＭ化設定コード又はＷＯＲＭ化解除コードの何れかが設定される。
【００４８】
先頭ブロック番号５０２５及び終端ブロック番号５０２６は、当該モードパラメタの要求対象であるデータの格納位置を示す。
【００４９】
図３Ａ及び図３Ｂは、ボリュームレプリケーション制御のための要求コマンドのＩ／Ｏ形式及びモードパラメタ形式を示す説明図である。
【００５０】
図３Ａは、ボリュームレプリケーション制御用の要求コマンドのＩ／Ｏ形式を示す。
【００５１】
サーバ２０は、このＩ／Ｏ形式に従った要求コマンドを送信することによって、ストレージ装置３０に対してボリュームのレプリケーションに関する制御を指示する。すなわち、ボリュームのペア定義、ペア解除、バックアップ、リストア等を要求する。この指示の内容はモードパラメタ（図３Ｂ）に含まれる。
【００５２】
この要求コマンド形式６０１は、ＭＯＤＥ  ＳＥＬＥＣＴコマンド６０１１、ボリュームレプリケーション制御用ページコード６０１２及びＭＯＤＥ  ＳＥＬＥＣＴデータの長さ６０１３を含む。
【００５３】
ＭＯＤＥ  ＳＥＬＥＣＴコマンド６０１１は、そのＩ／ＯデータがＭＯＤＥ  ＳＥＬＥＣＴコマンドであることを示す情報である。ボリュームレプリケーション制御用ページコード６０１２は、このＩ／Ｏがボリュームレプリケーション制御用であることを示す情報である。ＭＯＤＥ  ＳＥＬＥＣＴデータの長さ６０１３は、そのＩ／Ｏデータのデータ長を示す。
【００５４】
図３Ｂは、ボリュームレプリケーション制御用の要求コマンドのモードパラメタ形式を示す。
【００５５】
モードパラメタ６０２は、ＭＯＤＥ  ＳＥＬＥＣＴのヘッダ情報６０２１、ボリュームレプリケーション制御用のページコード６０２２、モードパラメタの長さ６０２３、要求コード６０２４、プライマリデバイス番号６０２５及びセカンダリデバイス番号６０２６を含む。
【００５６】
ＭＯＤＥ  ＳＥＬＥＣＴのヘッダ情報６０２１は、当該ＭＯＤＥ  ＳＥＬＥＣＴの基本的な情報を含む。ボリュームレプリケーション制御用のページコード６０２２は、当該モードパラメタがボリュームレプリケーション制御用であることを示す情報である。モードパラメタの長さ６０２３は、モードパラメタのデータ長を示す。
【００５７】
要求コード６０２４は、当該モードパラメタによって指示する要求コードの内容を示す情報である。要求コードには、ボリュームのペア定義、ボリュームのペア解除、プライマリボリュームからセカンダリボリュームへのバックアップ又はセカンダリボリュームからプライマリボリュームへのリストアの何れかの要求コードが設定される。
【００５８】
プライマリデバイス番号６０２５及びセカンダリデバイス番号６０２６は、当該モードパラメタの要求対象であるプライマリデバイス及びセカンダリデバイスを示す。
【００５９】
次に、サーバ２０及びストレージ装置３０の格納する各種情報を説明する。
【００６０】
図４は、ＷＯＲＭ管理情報２０２３１の詳細を示す説明図である。
【００６１】
ＷＯＲＭ管理情報２０２３１は、サーバ２０のＷＯＲＭ制御部２０２３によって管理される情報であり、ストレージ装置３０によって制御されているディスク装置４０に格納されているデータのＷＯＲＭ制御に関する情報が格納される。
【００６２】
このＷＯＲＭ管理情報２０２３１は、一方向キュー形式によって管理されている。
【００６３】
ＷＯＲＭ管理情報２０２３１は、ＷＯＲＭ管理情報アンカーテーブル２０２３２、ＷＯＲＭ管理情報エントリ２０２３３及びＷＯＲＭブロック情報エントリ２０２３４を含む。
【００６４】
ＷＯＲＭ管理情報アンカーテーブル２０２３２は、ＷＯＲＭ化設定されたデータ毎の情報を格納するＷＯＲＭ管理情報エントリ２０２３３のキューの先頭エントリへのポインタが格納される。
【００６５】
ＷＯＲＭ管理情報エントリ２０２３３は、ＷＯＲＭ化設定されたデータのブロック位置の情報を格納するＷＯＲＭブロック情報エントリ２０２３４のキューの先頭エントリへのポインタが格納される。また、当該データのＷＯＲＭ化設定に関する情報が格納される。さらに、他のＷＯＲＭ化設定が成功した場合は、他のＷＯＲＭ管理情報エントリ２０２３３へのポインタが格納される。
【００６６】
ＷＯＲＭブロック情報エントリ２０２３４は、ＷＯＲＭ化設定されたデータのブロック位置が格納される。そのデータのブロックが連続していないときは、次のブロック位置の情報を格納するＷＯＲＭブロック情報エントリ２０２３４へのポインタが格納される。
【００６７】
図５は、ＷＯＲＭ管理情報エントリ２０２３３の構成を示す説明図である。
【００６８】
ＷＯＲＭ管理情報エントリ２０２３３は、ＮＥＸＴエントリポインタ２０２３３１、デバイス識別子２０２３３２、ＷＯＲＭブロック情報エントリへのポインタ２０２３３３及びＷＯＲＭ化期間２０２３３４を含む。
【００６９】
ＮＥＸＴエントリポインタ２０２３３１は、他のＷＯＲＭ管理情報エントリ２０２３３へのポインタが格納される。なお、最終のＷＯＲＭ管理情報エントリ２０２３３のＮＥＸＴエントリポインタ２０２３３１にはＮＵＬＬが格納される。
【００７０】
デバイス識別子２０２３３２は、データを格納するボリュームのデバイスを示す識別子が格納される。
【００７１】
ＷＯＲＭブロック情報エントリへのポインタ２０２３３３は、データが格納されるブロック位置を示すＷＯＲＭブロック情報エントリ２０２３４へのポインタが格納される。
【００７２】
ＷＯＲＭ化期間２０２３３４は、当該ＷＯＲＭ化設定されたデータをＷＯＲＭ化しておく期間が格納される。
【００７３】
図６は、ＷＯＲＭブロック情報エントリ２０２３４の構成を示す説明図である。
【００７４】
ＷＯＲＭブロック情報エントリ２０２３４は、ＮＥＸＴエントリポインタ２０２３４１、先頭ブロック番号２０２３４２及び終端ブロック番号２０２３４３を含む。
【００７５】
ＮＥＸＴエントリポインタ２０２３３１は、ブロックが連続していないときに、次にブロックの情報を格納するＷＯＲＭブロック情報エントリ２０２３４へのポインタが格納される。なお、最終のＷＯＲＭブロック情報エントリ２０２３４のＮＥＸＴエントリポインタ２０２３３１にはＮＵＬＬが格納される。
【００７６】
図７は、サーバ２０のボリュームレプリケーション制御部２０２２が管理するボリュームペア管理情報２０２２１の構成を示す説明図である。
【００７７】
ボリュームペア管理情報２０２２１は、サーバ２０とストレージ装置３０とでそれぞれ個別に管理されている。これらは相互に共通した情報を含んでいる。
【００７８】
ボリュームペア管理情報２０２２１は、ＷＯＲＭ管理情報２０２３１と同様に、一方向キュー形式によって管理されている。
【００７９】
ボリュームペア管理情報２０２２１は、ボリュームペア管理情報アンカーテーブル２０２２２及びボリュームペア管理情報エントリ２０２２３を含む。
【００８０】
ボリュームペア管理情報アンカーテーブル２０２２２は、ペア毎の情報を格納するボリュームペア管理情報エントリ２０２２３のキューの先頭エントリへのポインタが格納される。
【００８１】
ボリュームペア管理情報エントリ２０２２３には、ペアの情報が格納される。また、当該ペアに含まれるボリュームに関する情報が格納される。
【００８２】
図８は、ボリュームペア管理情報エントリ２０２２３の構成を示す説明図である。
【００８３】
ボリュームペア管理情報エントリ２０２２３は、ＮＥＸＴエントリポインタ２０２２３１、プライマリデバイス識別子２０２２３２、セカンダリデバイス識別子２０２２３３及びバックアップ時刻２０２２３４を含む。
【００８４】
ＮＥＸＴエントリポインタ２０２３３１は、他のペアのボリュームペア管理情報エントリ２０２２３へのポインタが格納される。なお、最終のボリュームペア管理情報エントリ２０２２３のＮＥＸＴエントリポインタ２０２３３１には、ＮＵＬＬが格納される。
【００８５】
プライマリデバイス識別子２０２２３２には、ボリュームペアを構成する主側のボリューム（プライマリボリューム）を特定できるデバイス識別子が格納される。
【００８６】
セカンダリデバイス識別子２０２２３３には、ボリュームペアを構成する副側のボリューム（セカンダリボリューム）を特定できるデバイス識別子が格納される。
【００８７】
バックアップ時刻２０２２３４には、プライマリボリュームからセカンダリボリュームへのデータのバックアップが完了した時刻が格納される。
【００８８】
図９は、ストレージ装置３０のボリュームレプリケーション処理部３０２２が管理するボリュームペア管理情報３０２２１の構成を示す説明図である。
【００８９】
ボリュームペア管理情報３０２２１は、前述した、サーバ２０のボリュームレプリケーション制御部２０２２が管理するボリュームペア管理情報２０２２１とほぼ同一の構成である。ただし、ボリュームペア管理情報エントリ３０２２３（図１０）は、プライマリデバイス識別子２０２２３２とセカンダリデバイス識別子２０２２３３とをストレージ装置３０で処理できるように、プライマリデバイス番号３０２２３２とセカンダリデバイス番号３０２２３３とに変換して格納する。また、ボリュームペア管理情報エントリ３０２２３にはバックアップ時刻２０２２３４を含まない。ボリュームペアのデータのバックアップ時刻は、主としてユーザアプリケーション側で必要となる情報であるため、ストレージ装置３０ではバックアップ時刻に関する情報を含む必要がないためである。
【００９０】
次に、ディスク装置４０のボリューム４０１に格納されるメタデータを説明する。
【００９１】
図１１は、メタデータ４０２の構成を示す説明図である。
【００９２】
メタデータとは、ボリュームに格納されているデータ毎に、その属性を示す情報が格納される。
【００９３】
メタデータ４０２は、ＷＯＲＭ属性４０２１、ＷＯＲＭ化時刻４０２２及び障害情報４０２３を含む。
【００９４】
ＷＯＲＭ属性４０２１には、当該メタデータによって示されるデータがＷＯＲＭ化設定されているか否かを示す情報が格納される。
【００９５】
ＷＯＲＭ化時刻４０２２には、当該メタデータによって示されるデータがＷＯＲＭ化設定された時刻が格納される。
【００９６】
障害情報４０２３には、当該メタデータによって示されるデータに何らかの障害（リードエラー／ライトエラー等）が発生した場合に、その旨を示す情報が格納される。
【００９７】
次に、本実施の形態のストレージシステムによって実行される処理を説明する。
【００９８】
まず、ＷＯＲＭの設定及び解除の処理を説明する。
【００９９】
図１２Ａ及び図１２Ｂは、ＷＯＲＭ化設定処理のフローチャートである。
【０１００】
本フローチャートは、サーバ２０のＷＯＲＭ制御部２０２３によって実行される。
【０１０１】
端末１０のユーザアプリケーションは、ボリューム４０１Ａのデバイス識別子とボリューム４０１Ａに格納されているファイル名又はデータブロック番号とを指定してＷＯＲＭ化設定を要求する。ＷＯＲＭ制御部２０２３は、これを受けて本処理を開始する。
【０１０２】
まず、ＷＯＲＭ制御部２０２３は、指定された情報からＷＯＲＭ管理情報エントリ２０２３３を作成する（Ｓ１２０１）。
【０１０３】
次に、指示されたＷＯＲＭ化設定対象は、ファイル名による指定であるかデータのブロック番号による指定であるかを判定する（Ｓ１２０２）。ファイル名であると判定した場合はステップＳ１２０３に移行し、ブロック番号であると判定した場合はステップＳ１２０４に移行する。
【０１０４】
ステップＳ１２０３では、ＷＯＲＭ制御部２０２３は、ファイルシステム制御部２０２１に、指定されたファイル名を問い合わせる。ファイルシステム制御部２０２１は、問い合わせを受けたファイル名から、該当するファイルのデータ部のブロック番号一覧を応答する。ＷＯＲＭ制御部は、この応答を受けて、当該ブロック番号一覧からＷＯＲＭブロック情報エントリ２０２３４を作成する。
【０１０５】
一方、ステップＳ１２０４では、ＷＯＲＭ制御部２０２３は、指定されたブロック番号一覧からＷＯＲＭブロック情報エントリを作成する。
【０１０６】
次に、ＷＯＲＭ制御部２０２３は、繰り返しのための変数ｉに０を設定する。また、ポインタｐｔｒにＷＯＲＭブロック情報エントリ２０２３４キューの先頭エントリのアドレスを格納する（Ｓ１２０５）。
【０１０７】
次に、ＷＯＲＭ制御部２０２３は、ＷＯＲＭ制御用のモードパラメタを作成する。
【０１０８】
まず、ＷＯＲＭ制御用モードパラメタの先頭ブロック番号２０２５に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの先頭ブロック番号を設定する。また、ＷＯＲＭ制御用モードパラメタの終端ブロック番号２０２６に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの終端ブロック番号を設定する（Ｓ１２０６）。次に、ＷＯＲＭ制御用モードパラメタの要求コードにＷＯＲＭ化設定コードを設定する（Ｓ１２０７）。
【０１０９】
ＷＯＲＭ制御部２０２３は、ＷＯＲＭ制御用のモードパラメタの作成が終了したら、ＷＯＲＭ制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１２０８）。そして、このＷＯＲＭ制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１２０９）。
【０１１０】
ＷＯＲＭ制御用Ｉ／Ｏが成功したと判定した場合は、ステップＳ１２１０に移行する。ＷＯＲＭ制御用Ｉ／Ｏが失敗したと判定した場合は、ステップＳ１２２１（図１２Ｂ）に移行する。
【０１１１】
ステップＳ１２１０では、カウント用変数ｉに１を加算する。そして、ポインタｐｔｒに、ポインタｐｔｒに格納されていたアドレスに対応するＷＯＲＭブロック情報エントリ２０２３４のＮＥＸＴエントリポインタを格納する。
【０１１２】
次に、全てのＷＯＲＭブロック情報エントリ２０２３４に対する処理が完了したか否かを判定する。この判定はポインタｐｔｒの値を参照し、値がＮＵＬＬである場合は、全ての処理が完了したと判定する（Ｓ１２１１）。
【０１１３】
全てのＷＯＲＭブロック情報エントリ２０２３４に対する処理が完了したと判定した場合は、ステップＳ１２１２に移行する。一方、未処理のＷＯＲＭブロック情報エントリ２０２３４がある場合（ｐｔｒがＮＵＬＬでない場合）は、ステップＳ１２０６に戻り、処理を繰り返す。
【０１１４】
ステップＳ１２１２では、ＷＯＲＭ管理情報エントリ２０２３３を、ＷＯＲＭ管理情報アンカーテーブル２０２３２のキューに登録して、処理を終了する。
【０１１５】
ステップＳ１２２１乃至Ｓ１２２８の処理によって、ＷＯＲＭ化設定処理において部分的にＷＯＲＭ化設定したデータブロックのＷＯＲＭ化を解除する。
【０１１６】
ステップＳ１２２１では、まず、ポインタｐｔｒにＷＯＲＭブロック情報エントリ２０２３４キューの先頭エントリのアドレスを格納する。
【０１１７】
次に、変数ｉがＮＵＬＬであるか否かを判定する（Ｓ１２２２）。変数ｉがＮＵＬＬである場合は、ＷＯＲＭ化設定処理において部分的にＷＯＲＭ化設定された部分のＷＯＲＭ化解除処理が全て終了しているので、要求元の端末１０にエラーを返送し、異常終了とする。
【０１１８】
変数ｉがＮＵＬＬでない場合は、ＷＯＲＭ制御用モードパラメタの先頭ブロック番号２０２５に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの先頭ブロック番号を設定する。また、ＷＯＲＭ制御用モードパラメタの終端ブロック番号２０２６に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの終端ブロック番号を設定する（Ｓ１２２３）。
【０１１９】
次に、ＷＯＲＭ制御用モードパラメタの要求コードに、ＷＯＲＭ化解除コードを設定する（Ｓ１２２４）。
【０１２０】
ＷＯＲＭ制御部２０２３は、ＷＯＲＭ制御用のモードパラメタの作成が終了したら、ＷＯＲＭ制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１２２５）。そして、このＷＯＲＭ制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１２２６）。
【０１２１】
ＷＯＲＭ制御用Ｉ／Ｏが成功したと判定した場合は、ステップＳ１２２８に移行し、失敗したと判定した場合は、ステップＳ１２２７に移行する。
【０１２２】
ステップＳ１２２７では、ＷＯＲＭ化設定のＩ／Ｏが失敗した旨のエラーメッセージを発行して、ステップＳ１２２８に移行する。
【０１２３】
ステップＳ１２２８では、変数ｉから１を減算する。そして、ポインタｐｔｒに、ポインタｐｔｒに格納されていたアドレスに対応するＷＯＲＭブロック情報エントリ２０２３４のＮＥＸＴエントリポインタを格納する。そして、ステップＳ１２２２に戻り、処理を繰り返す。
【０１２４】
以上の処理によって、ストレージ装置３０に対して、ボリューム４０１ＡのデータのＷＯＲＭ化設定が完了する。
【０１２５】
図１３Ａ乃至図１３Ｃは、ＷＯＲＭ化解除処理のフローチャートである。
【０１２６】
なお、ＷＯＲＭ化解除の処理は、解除対象のファイルが、既にＷＯＲＭ化期間を満了していることが前提である。
【０１２７】
本フローチャートは、サーバ２０のＷＯＲＭ制御部２０２３によって実行される。
【０１２８】
端末１０のユーザアプリケーションは、ボリューム４０１Ａのデバイス識別子とボリューム４０１Ａに格納されているファイル名又はデータブロック番号とを指定してＷＯＲＭ化解除を要求する。ＷＯＲＭ制御部２０２３は、これを受けて本処理を開始する。
【０１２９】
まず、ＷＯＲＭ制御部２０２３は、指示されたＷＯＲＭ化解除対象データは、ファイル名による指定であるかデータのブロック番号による指定であるかを判定する（Ｓ１３０１）。ファイル名であると判定した場合はステップＳ１３０２に移行し、ブロック番号であると判定した場合はステップＳ１３０３に移行する。
【０１３０】
ステップＳ１３０２では、ＷＯＲＭ制御部２０２３は、ファイルシステム制御部２０２１に、指定されたファイル名を問い合わせる。ファイルシステム制御部２０２１は、問い合わせを受けたファイル名に該当するファイルのデータ部のブロック番号一覧を応答する。ＷＯＲＭ制御部は、この応答を受けて、当該ブロック番号一覧からＷＯＲＭブロック情報エントリ２０２３４を作成する。
【０１３１】
一方、ステップＳ１３０３では、ＷＯＲＭ制御部２０２３は、指定されたブロック番号一覧からＷＯＲＭブロック情報エントリを作成する。
【０１３２】
次に、ＷＯＲＭ管理情報２０２３１のＷＯＲＭ管理情報アンカーテーブルを参照して、ユーザアプリケーションから指定されたボリューム４０１Ａのデバイス識別子とステップＳ１３０２又はステップＳ１３０３によって作成されたＷＯＲＭブロック情報エントリと同じ情報を持つＷＯＲＭブロック情報エントリを検索する（Ｓ１３０４）。そして、同じ情報を持つＷＯＲＭ管理情報エントリが存在するか否かを判定する（Ｓ１３０５）。
【０１３３】
エントリが存在すると判定した場合は、ステップＳ１３０６に移行する。一方、エントリが存在しないと判定した場合は、要求対象のＷＯＲＭデータは存在しないので、要求元の端末１０にエラーを返送し、異常終了とする。
【０１３４】
ステップＳ１３０６では、指定されたＷＯＲＭファイルは、ＷＯＲＭ化期間を既に満了しているか否かを判定する。ＷＯＲＭ化期間を満了していないと判定した場合は、要求対象のＷＯＲＭデータのＷＯＲＭ化解除は実行できないため、要求元の端末１０にエラーを返送し、異常終了とする。
【０１３５】
ＷＯＲＭ化期間を既に満了していると判定した場合は、ステップＳ１３１１（図１３Ｂ）に移行する。
【０１３６】
ステップＳ１３１１では、ＷＯＲＭ制御部２０２３は、繰り返しのための変数ｊに０を設定する。また、ポインタｐｔｒにＷＯＲＭブロック情報エントリ２０２３４キューの先頭エントリのアドレスを格納する。
【０１３７】
次に、ＷＯＲＭ制御部２０２３は、ＷＯＲＭ制御用のモードパラメタを作成する。
【０１３８】
まず、ＷＯＲＭ制御用モードパラメタの先頭ブロック番号２０２５に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの先頭ブロック番号を設定する。また、ＷＯＲＭ制御用モードパラメタの終端ブロック番号２０２６に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの終端ブロック番号を設定する（Ｓ１３１２）。次に、ＷＯＲＭ制御用モードパラメタの要求コードにＷＯＲＭ化解除コードを設定する（Ｓ１３１３）。
【０１３９】
ＷＯＲＭ制御部２０２３は、ＷＯＲＭ制御用のモードパラメタの作成が終了したら、ＷＯＲＭ制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１３１４）。そして、このＷＯＲＭ制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１３１５）。
【０１４０】
ＷＯＲＭ制御用Ｉ／Ｏが成功したと判定した場合は、ステップＳ１３１６に移行する。ＷＯＲＭ制御用Ｉ／Ｏが失敗したと判定した場合は、ステップＳ１３２１（図１３Ｃ）に移行する。
【０１４１】
ステップＳ１３１６では、カウント用変数ｊに１を加算する。そして、ポインタｐｔｒに、ポインタｐｔｒに格納されていたアドレスに対応するＷＯＲＭブロック情報エントリ２０２３４のＮＥＸＴエントリポインタを格納する。
【０１４２】
次に、全てのＷＯＲＭブロック情報エントリ２０２３４に対する処理が完了したか否かを判定する。この判定はポインタｐｔｒの値を参照し、値がＮＵＬＬである場合は、全ての処理が完了したと判定する（Ｓ１３１７）。
【０１４３】
全てのＷＯＲＭブロック情報エントリ２０２３４に対する処理が完了したと判定した場合は、ステップＳ１３１８に移行する。一方、未処理のＷＯＲＭブロック情報エントリ２０２３４がある場合（ｐｔｒがＮＵＬＬでない場合）は、ステップＳ１３１２に戻り、処理を繰り返す。
【０１４４】
ステップＳ１３１８では、指定されたＷＯＲＭデータのＷＯＲＭ管理情報エントリ２０２３３を、ＷＯＲＭ管理情報アンカーテーブル２０２３２のキューから削除して、処理を終了する。
【０１４５】
ステップＳ１３２１乃至Ｓ１３２８の処理によって、ＷＯＲＭ化解除処理において部分的にＷＯＲＭ化解除されたデータブロックを再びＷＯＲＭ化設定する。
【０１４６】
ステップＳ１３２１では、まず、ポインタｐｔｒにＷＯＲＭブロック情報エントリ２０２３４キューの先頭エントリのアドレスを格納する。
【０１４７】
次に、変数ｊがＮＵＬＬであるか否かを判定する（Ｓ１３２２）。変数ｊがＮＵＬＬである場合は、ＷＯＲＭ化解除処理において部分的にＷＯＲＭ化解除された部分のＷＯＲＭ化設定処理が全て終了しているので、異常終了とする。
【０１４８】
変数ｊがＮＵＬＬでない場合は、ＷＯＲＭ制御用モードパラメタの先頭ブロック番号２０２５に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの先頭ブロック番号を設定する。また、ＷＯＲＭ制御用モードパラメタの終端ブロック番号２０２６に、ポインタｐｔｒに格納されているアドレスに対応するＷＯＲＭブロック情報エントリの終端ブロック番号を設定する（Ｓ１３２３）。
【０１４９】
次に、ＷＯＲＭ制御用モードパラメタの要求コードに、ＷＯＲＭ化設定コードを設定する（Ｓ１３２４）。
【０１５０】
ＷＯＲＭ制御部２０２３は、ＷＯＲＭ制御用のモードパラメタの作成が終了したら、ＷＯＲＭ制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１３２５）。そして、このＷＯＲＭ制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１３２６）。
【０１５１】
ＷＯＲＭ制御用Ｉ／Ｏが成功したと判定した場合は、ステップＳ１３２８に移行し、失敗したと判定した場合は、ステップＳ１３２７に移行する。
【０１５２】
ステップＳ１３２７では、ＷＯＲＭ化設定のＩ／Ｏが失敗した旨のエラーメッセージを発行して、ステップＳ１２２８に移行する。
【０１５３】
ステップＳ１３２８では、変数ｊから１を減算する。そして、ポインタｐｔｒに、ポインタｐｔｒに格納されていたアドレスに対応するＷＯＲＭ情報エントリ２０２３４のＮＥＸＴエントリポインタを格納する。そして、ステップＳ１３２２に戻り、処理を繰り返す。
【０１５４】
以上の処理によって、ストレージ装置３０に対して、ボリューム４０１のファイルのＷＯＲＭ化解除が完了する。
【０１５５】
次に、ボリュームレプリケーションの処理を説明する。
【０１５６】
まず、サーバ２０側の処理について、ペアの定義、ペアの解除、バックアップ及びレストア処理を説明する。
【０１５７】
図１４は、ペア定義処理のフローチャートである。
【０１５８】
本フローチャートは、サーバ２０のボリュームレプリケーション制御部２０２２によって実行される。
【０１５９】
端末１０のユーザアプリケーションは、ペアを定義するボリューム４０１Ａ及び４０１Ｂの情報を指定してボリュームのペア定義を要求する。ボリュームレプリケーション制御部２０２２は、これを受けて本処理を開始する。
【０１６０】
まず、ボリュームレプリケーション制御部２０２２は、指定された情報からボリュームペア管理情報２０２２１のボリューム管理情報エントリ２０２２３を作成する（Ｓ１４０１）。より具体的には、指定されたプライマリボリューム４０１Ａのデバイス識別子をプライマリデバイス情報２０２２３２に格納し、指定されたセカンダリボリューム４０１Ｂのデバイス識別子をセカンダリデバイス情報２０２２３２に格納する。また、バックアップ時刻２０２２３４にはＮＵＬＬを格納する。
【０１６１】
次に、ボリュームレプリケーション制御部２０２２は、デバイスドライバ２０２４にプライマリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたプライマリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１４０２）。
【０１６２】
さらに、デバイスドライバ２０２４にセカンダリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたセカンダリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１４０３）。
【０１６３】
次に、ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタを作成する。まず、取得したプライマリデバイス番号とセカンダリデバイス番号とを設定する（Ｓ１４０４）。そして、ボリュームレプリケーション制御用モードパラメタの要求コードにペア設定コードを設定する（Ｓ１４０５）。
【０１６４】
ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタの作成が完了したら、ボリュームレプリケーション制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１４０６）。そして、このボリュームレプリケーション制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１４０７）。
【０１６５】
ボリュームレプリケーション制御用Ｉ／Ｏが成功したと判定した場合は、ステップＳ１４０８に移行する、失敗したと判定した場合は、要求元の端末１０にエラーを返送し、異常終了とする。
【０１６６】
ステップＳ１４０８では、作成したボリュームペア管理情報エントリを、ボリュームペア管理情報のキューに登録する。
【０１６７】
以上の処理によって、ボリューム間のペアが定義される。
【０１６８】
図１５は、ペア解除処理のフローチャートである。
【０１６９】
本フローチャートは、サーバ２０のボリュームレプリケーション制御部２０２２によって実行される。
【０１７０】
端末１０のユーザアプリケーションは、ペアを解除するボリューム４０１Ａ及び４０１Ｂの情報を指定してボリュームのペア解除を要求する。ボリュームレプリケーション制御部２０２２は、これを受けて本処理を開始する。なお、この処理は、既にペアが定義されていることが前提条件となる。
【０１７１】
まず、ボリュームレプリケーション制御部２０２２は、指定された情報からボリュームペア管理情報２０２２１のボリュームペア管理情報エントリ２０２２３を検索する（Ｓ１５０１）。より具体的には、指定されたプライマリデバイス識別子とセカンダリデバイス識別子とを含むボリューム管理情報エントリを検索する。
【０１７２】
そして、この検索結果から、指定されたペアがボリュームペア管理情報に格納されているか否かを判定する（Ｓ１５０２）。
【０１７３】
指定されたペアが格納されているエントリが存在しない場合は、ペアが存在しないため要求元の端末１０にエラーを返送し、異常終了とする。
【０１７４】
指定されたペアが格納されているエントリが存在する場合は、まず、ボリュームレプリケーション制御部２０２２は、デバイスドライバ２０２４にプライマリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたプライマリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１５０３）。
【０１７５】
さらに、デバイスドライバ２０２４にセカンダリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたセカンダリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１５０４）。
【０１７６】
次に、ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタを作成する。まず、取得したプライマリデバイス番号とセカンダリデバイス番号とを設定する（Ｓ１５０５）。そして、ボリュームレプリケーション制御用モードパラメタの要求コードにペア解除コードを設定する（Ｓ１５０６）。
【０１７７】
ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタの作成が完了したら、ボリュームレプリケーション制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１５０７）。そして、このボリュームレプリケーション制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１５０８）。
【０１７８】
ボリュームレプリケーション制御用Ｉ／Ｏが成功したと判定した場合は、ステップＳ１５０９に移行する、失敗したと判定した場合は、要求元の端末１０にエラーを返送し、異常終了とする。
【０１７９】
ステップＳ１５０９では、指定されたペアに対応するボリュームペア管理情報エントリを、ボリュームペア管理情報のキューから削除する。
【０１８０】
以上の処理によって、定義されているボリュームペアが解除される。
【０１８１】
図１６は、バックアップ処理のフローチャートである。
【０１８２】
本フローチャートは、サーバ２０のボリュームレプリケーション制御部２０２２によって実行される。
【０１８３】
端末１０のユーザアプリケーションは、プライマリデバイス４０１Ａ及びセカンダリデバイス４０１Ｂの情報を指定してボリュームの内容をコピーする処理（バックアップ処理）を要求する。ボリュームレプリケーション制御部２０２２は、これを受けて本処理を開始する。なお、この処理は、既にペアが定義されていることが前提条件となる。
【０１８４】
まず、ボリュームレプリケーション制御部２０２２は、指定された情報からボリュームペア管理情報２０２２１のボリュームペア管理情報エントリ２０２２３を検索する（Ｓ１６０１）。より具体的には、指定されたプライマリデバイス識別子とセカンダリデバイス識別子とを含むボリュームペア管理情報エントリを検索する。
【０１８５】
そして、この検索結果から、指定されたペアがボリュームペア管理情報に格納されているか否かを判定する（Ｓ１６０２）。
【０１８６】
指定されたペアが格納されているエントリが存在しない場合は、ペアが存在しないため要求元の端末１０にエラーを返送し、異常終了とする。
【０１８７】
指定されたペアが格納されているエントリが存在する場合は、まず、ボリュームレプリケーション制御部２０２２は、デバイスドライバ２０２４にプライマリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたプライマリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１６０３）。
【０１８８】
さらに、デバイスドライバ２０２４にセカンダリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたセカンダリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１６０４）。
【０１８９】
次に、ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタを作成する。まず、取得したプライマリデバイス番号とセカンダリデバイス番号とを設定する（Ｓ１６０５）。そして、ボリュームレプリケーション制御用モードパラメタの要求コードにバックアップコードを設定する（Ｓ１６０６）。
【０１９０】
ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタの作成が完了したら、ボリュームレプリケーション制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１６０７）。そして、このボリュームレプリケーション制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１６０８）。
【０１９１】
ボリュームレプリケーション制御用Ｉ／Ｏが成功したと判定した場合は、ステップＳ１６０９に移行する、失敗したと判定した場合は、要求元の端末１０にエラーを返送し、異常終了とする。
【０１９２】
ステップＳ１６０９では、指定されたペアに対応するボリュームペア管理情報エントリのバックアップ時刻に現在の時刻を設定する。
【０１９３】
以上の処理によって、ボリュームペアがバックアップされる。
【０１９４】
図１７は、リストア処理のフローチャートである。
【０１９５】
本フローチャートは、サーバ２０のボリュームレプリケーション制御部２０２２によって実行される。
【０１９６】
端末１０のユーザアプリケーションは、プライマリデバイス４０１Ａ及びセカンダリデバイス４０１Ｂの情報を指定してボリュームの内容のリストアを要求する。ボリュームレプリケーション制御部２０２２は、これを受けて本処理を開始する。なお、この処理は、既にペアが定義されていることが前提条件となる。
【０１９７】
まず、ボリュームレプリケーション制御部２０２２は、指定された情報からボリュームペア管理情報２０２２１のボリュームペア管理情報エントリ２０２２３を検索する（Ｓ１７０１）。より具体的には、指定されたプライマリデバイス識別子とセカンダリデバイス識別子とを含むボリューム管理情報エントリを検索する。
【０１９８】
そして、この検索結果から、指定されたペアがボリュームペア管理情報に格納されているか否かを判定する（Ｓ１７０２）。
【０１９９】
指定されたペアが格納されているエントリが存在しない場合は、ペアが存在しないため要求元の端末１０にエラーを返送し、異常終了とする。
【０２００】
指定されたペアが格納されているエントリが存在する場合は、まず、ボリュームレプリケーション制御部２０２２は、デバイスドライバ２０２４にプライマリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたプライマリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１７０３）。
【０２０１】
さらに、デバイスドライバ２０２４にセカンダリデバイス識別子を問い合わせる。デバイスドライバ２０２４は、問い合わせを受けたセカンダリデバイス識別子をデバイス番号に変換し、そのデバイス番号を応答する（Ｓ１７０４）。
【０２０２】
次に、ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタを作成する。まず、取得したプライマリデバイス番号とセカンダリデバイス番号とを設定する（Ｓ１７０５）。そして、ボリュームレプリケーション制御用モードパラメタの要求コードにリストアコードを設定する（Ｓ１７０６）。
【０２０３】
ボリュームレプリケーション制御部２０２２は、ボリュームレプリケーション制御用モードパラメタの作成が完了したら、ボリュームレプリケーション制御用Ｉ／Ｏをストレージ装置３０に発行する（Ｓ１７０７）。そして、このボリュームレプリケーション制御用Ｉ／Ｏが成功したか否かを判定する（Ｓ１７０８）。
【０２０４】
ボリュームレプリケーション制御用Ｉ／Ｏが成功したと判定した場合は、処理を終了する。一方、ボリュームレプリケーション制御用Ｉ／Ｏが失敗したと判定した場合は、要求元の端末１０にエラーを返送し、異常終了とする。
【０２０５】
以上の処理によって、ボリュームペアがリストアされる。
【０２０６】
次に、ストレージ装置３０側の処理を説明する。
【０２０７】
図１８Ａ及び図１８Ｂは、ストレージ装置３０の入出力処理部３０３２の処理のフローチャートである。
【０２０８】
ストレージ装置３０の入出力部３０２３は、サーバ２０からのＩ／Ｏを待機している、そして、サーバ２０からのＩ／Ｏを受信したときに、本フローチャートを実行する。
【０２０９】
入出力処理部３０２３は、受信したＩ／Ｏの内容を判別する。
【０２１０】
まず、受信したＩ／ＯがＷＯＲＭ制御用Ｉ／Ｏであるか否かを判定する（Ｓ１８０１）。ＷＯＲＭ制御用Ｉ／Ｏであると判定した場合は、ＷＯＲＭ処理部３０２１に処理を渡し、ＷＯＲＭ処理（図１９）を実行する。
【０２１１】
次に、受信したＩ／Ｏがボリュームレプリケーション制御用Ｉ／Ｏであるか否かを判定する（Ｓ１８０２）。受信したＩ／Ｏが、ボリュームレプリケーション制御用Ｉ／Ｏであると判定した場合は、ボリュームレプリケーション処理部３０２２に処理を渡し、ボリュームレプリケーション処理（図２０）を実行する。
【０２１２】
次に、受信したＩ／Ｏは、リード要求か、ライト要求か、又はその他の要求かを判定する（Ｓ１８０３）。
【０２１３】
リード要求と判定した場合は、ステップＳ１８０５に移行する。ライト要求と判定した場合はステップＳ１８１１（図１８Ｂ）に移行する。
【０２１４】
また、その他の要求であると判定した場合は、その他のＩ／Ｏ処理を実行する（Ｓ１８０４）。
【０２１５】
ステップＳ１８０５では、リード要求に係るブロックのデータに対応するメタデータを参照し、当該メタデータに障害情報が設定されているか否かを判定する（Ｓ１８０５）。障害情報が設定されていると判定した場合はステップＳ１８０７に移行し、障害情報が設定されていないと判定した場合はステップＳ１８０６に移行する。
【０２１６】
ステップＳ１８０６では、リード要求に係るブロックのデータをプライマリデバイスから読み出し、要求元に返す。一方、ステップＳ１８０７では、リード要求に係るブロックのデータをセカンダリデバイスから読み出し、要求元に返す。
【０２１７】
すなわち、リード要求に係るブロックに障害情報が設定されていない場合はプライマリデバイスからデータを読み出すが、リード要求に係るブロックに障害情報が設定されている場合は、セカンダリデバイスからデータを読み出す。
【０２１８】
次に、このリード処理は成功したか否かを判定する（Ｓ１８０８）。リード処理が成功した場合は正常終了し、失敗した場合は異常終了とする。
【０２１９】
一方、ステップＳ１８０４で、Ｉ／Ｏがライト要求であると判定した場合は、ステップＳ１８１１（図１８Ｂ）に移行し、ライト要求に係るブロックに対応するメタデータを参照する。そして、メタデータにＷＯＲＭ属性が設定されているか否かを判定する。
【０２２０】
ＷＯＲＭ属性が設定されていると判定した場合は、そのブロックにデータを書き込むことはできないので、異常終了とする。
【０２２１】
ＷＯＲＭ属性が設定されていないと判定した場合は、ライト要求に係るプライマリデバイスのブロックに、ライトデータを書き込む（Ｓ１８１２）。
【０２２２】
次に、このライト処理は成功したか否かを判定する（Ｓ１８１３）。ライト処理が成功した場合は正常終了し、失敗した場合は異常終了とする。
【０２２３】
以上の処理によって、ストレージ装置３０の入出力処理が完了する。
【０２２４】
ここで注目すべき点は、ステップＳ１８０５乃至Ｓ１８０７において、リードデータのブロックに障害情報が設定されている場合は、通常読み書きされるデバイスであるプライマリデバイスではなく、セカンダリデバイスからデータを読み込むことである。
【０２２５】
これは、後述するように、ボリュームペアのリストア処理において、ＷＯＲＭ属性のデータブロックに何らかの障害が発生し、リストア不可能である場合に、当該ブロックに障害情報を設定する。障害情報が設定されている場合は、当該ブロックは、リストアされるべきデータであるセカンダリデバイスのデータを有効とする。
【０２２６】
図１９は、ＷＯＲＭ処理部３０２１で実行されるＷＯＲＭ処理のフローチャートである。
【０２２７】
入出力処理（図１８Ａ）のステップＳ１８０１において、Ｉ／Ｏが、ＷＯＲＭ制御用Ｉ／Ｏであると判定した場合は、ＷＯＲＭ処理部３０２１に処理が渡され、本フローチャートの処理が実行される。
【０２２８】
まず、ＷＯＲＭ処理部３０２１は、ＷＯＲＭ制御用Ｉ／Ｏのモードパラメタの内容を参照し、要求コードの内容を取得する。
【０２２９】
そして、要求コードがＷＯＲＭ化設定コードであるか否かを判定する（Ｓ１９０１）。要求コードがＷＯＲＭ化設定コードでないと判定した場合は、要求コードがＷＯＲＭ化解除コードであるか否かを判定する（Ｓ１９０２）。
【０２３０】
要求コードがＷＯＲＭ化設定コードであると判定した場合は、ステップ１９０３に移行する。ステップ１９０３では、ＷＯＲＭ処理部３０２１は、ＷＯＲＭ制御用モードパラメタを参照して、先頭ブロック番号及び終端ブロック番号を取得する。そして、当該先頭ブロックから終端ブロックまでの全てのブロック番号に対応するメタデータに、ＷＯＲＭ属性を設定し、現在の時刻をＷＯＲＭ化時刻として設定する。
【０２３１】
要求コードがＷＯＲＭ化解除コードであると判定した場合は、ステップ１９０４に移行する。ステップ１９０４では、ＷＯＲＭ処理部３０２１は、ＷＯＲＭ制御用モードパラメタを参照して、先頭ブロック番号及び終端ブロック番号を取得する。そして、当該先頭ブロックから終端ブロックまでの全てのブロック番号に対応するメタデータの、ＷＯＲＭ属性を解除する。
【０２３２】
ステップＳ１９０３又はＳ１９０４の処理後、当該処理が成功したか否かを判定する（Ｓ１９０５）。処理が成功した場合は正常終了し、処理が失敗した場合は、異常終了とする。
【０２３３】
なお、ステップＳ１９０２において、要求コードの内容がＷＯＲＭ化設定コード及びＷＯＲＭ化解除コードの何れでもないと判定した場合は、要求元の端末１０にエラーを返送し、異常終了とする。
【０２３４】
以上の処理によって、ＷＯＲＭ処理が完了する。
【０２３５】
図２０Ａ乃至図２０Ｄは、ボリュームレプリケーション部３０２２で実行されるボリュームレプリケーション処理のフローチャートである。
【０２３６】
入出力処理（図１８Ａ）のステップＳ１８０２において、Ｉ／Ｏが、ボリュームレプリケーション制御用Ｉ／Ｏであると判定した場合は、ボリュームレプリケーション処理部３０２１に処理が渡され、本フローチャートの処理が実行される。
【０２３７】
まず、ボリュームレプリケーション処理部３０２２は、ボリュームレプリケーション制御用Ｉ／Ｏのモードパラメタの内容を参照し、要求コードの内容を取得する。
【０２３８】
そして、要求コードの内容を判定する。
【０２３９】
要求コードがペア設定コードであると判定した場合は、ステップＳ２００５に移行する（Ｓ２００１）。
【０２４０】
要求コードがペア解除コードであると判定した場合は、ステップ２０１１（図２０Ｂ）に移行する（Ｓ２００２）。
【０２４１】
要求コードがバックアップコードであると判定した場合は、ステップ２０２１（図２０Ｃ）に移行する（Ｓ２００３）。
【０２４２】
要求コードがリストアコードであると判定した場合は、ステップ２０３１（図２０Ｄ）に移行する（Ｓ２００４）。
【０２４３】
要求コードが、ペア設定コード、ペア解除コード、バックアップコード及びリストアコードの何れのコードでもないと判定した場合は、異常終了とする。
【０２４４】
ステップＳ２００５では、要求に係るセカンダリデバイスのメタデータを全て参照し、メタデータにＷＯＲＭ属性が設定されているものが少なくとも一つあるか否かを判定する。
【０２４５】
セカンダリデバイスのメタデータにＷＯＲＭ属性が設定されている場合は、当該ブロックへの変更処理は不可能であるためペア設定は不可能と判定し、要求元の端末１０にエラーを返送し、異常終了とする。
【０２４６】
セカンダリデバイスのメタデータにＷＯＲＭ属性は設定されていないと判定した場合は、ステップＳ２００６に移行する。ステップＳ２００６では、ボリュームペア管理情報にボリュームペア管理情報エントリを作成し、作成したエントリをキューに登録して、処理を終了する。
【０２４７】
図２０Ａのステップ２００２において、要求コードがペア解除コードであると判定した場合は、ステップ２０１１（図２０Ｂ）に移行する。ステップＳ２０１１では、指定されたプライマリデバイス番号とセカンダリデバイス番号とを持つボリュームペア管理情報エントリを検索する。そして、検索の結果、エントリが存在するか否かを判定する（Ｓ２０１２）。
【０２４８】
エントリが存在しない場合は、ペアが存在しないので、異常終了とする。
【０２４９】
エントリが存在すると判定した場合は、そのボリュームペア管理情報エントリを、ボリュームペア管理情報のキューから削除して（Ｓ２０１３）、処理を終了する。
【０２５０】
図２０Ａのステップ２００３において、要求コードがバックアップコードであると判定した場合は、ステップ２０２１（図２０Ｃ）に移行する。
【０２５１】
ステップ２０２１では、変数ｂｌｏｃｋに１を代入する。そして、変数ｂｌｏｃｋに該当するプライマリデバイスのブロック位置のメタデータ及びデータブロックをプライマリデバイスからセカンダリデバイスにコピーする（Ｓ２０２２）。
【０２５２】
次に、このコピー処理が成功したか否かを判定する（Ｓ２０２３）コピー処理が失敗したと判定した場合は、異常終了とする。
【０２５３】
コピー処理が成功したと判定した場合は、変数ｂｌｏｃｋに１を加算する（Ｓ２０２４）。そして、この変数ｂｌｏｃｋの値が、プライマリデバイスの総ブロック数を上回ったか否かを判定する（Ｓ２０２５）。
【０２５４】
変数ｂｌｏｃｋの値がプライマリデバイスの総ブロック数に満たない場合は、ステップＳ２０２２に戻り、処理を繰り返す。変数ｂｌｏｃｋの値がプライマリデバイスの総ブロック数を超えた場合は、プライマリデバイスの全てのデータブロックのコピーが完了したことを示すので、処理を終了する。
【０２５５】
図２０ＡのステップＳ２００４において、要求コードがリストアコードであると判定した場合は、ステップ２０３１（図２０Ｄ）に移行する。
【０２５６】
ステップ２０３１では、変数ｂｌｏｃｋに１を代入する。そして、変数ｂｌｏｃｋに該当するプライマリデバイスのブロック位置のメタデータを参照し、当該メタデータにＷＯＲＭ属性が設定されているか否かを判定する（Ｓ２０３２）。
【０２５７】
ＷＯＲＭ属性が設定されていると判定した場合はステップＳ２０３４に移行し、ＷＯＲＭ属性が設定されていないと判定した場合は、ステップＳ２０３２１に移行する。
【０２５８】
ステップＳ２０３２１では、変数ｂｌｏｃｋに該当するプライマリデバイスのブロック位置のメタデータ及びデータブロックをセカンダリデバイスからプライマリデバイスにコピーする。そして、このコピー処理が成功したか否かを判定する（Ｓ２０３３）コピー処理が失敗したと判定した場合は、異常終了とする。コピー処理が成功したと判定した場合は、ステップＳ２０３７に移行する。
【０２５９】
一方、ステップＳ２０３４では、まず、変数ｂｌｏｃｋに該当するプライマリデバイスのブロック位置のメタデータのＷＯＲＭ化時刻と、セカンダリデバイスの対応する一のメタデータのＷＯＲＭ化時刻とが等しいか否かを判定する。
【０２６０】
ＷＯＲＭ化時刻が等しくないと判定した場合は、当該ブロックのメタデータ又はデータブロックに何らかの異常が発生しているかデータが更新されている可能性がある。そのため、ステップＳ２０３６に移行し、プライマリデバイスのメタデータに障害情報を設定して、ステップＳ２０３７に移行する。
【０２６１】
次に、プライマリデバイスの変数ｂｌｏｃｋに対応するブロック位置のデータの内容と、セカンダリデバイスの該当するブロック位置のデータの内容とが等しいか否かを判定する（Ｓ２０３５）。
【０２６２】
データの内容が等しくないと判定した場合は、当該ブロックのデータブロックに何らかの異常が発生しているかデータが更新されている可能性がある。そのため、ステップＳ２０３６に移行し、プライマリデバイスのメタデータに障害情報を設定して、ステップＳ２０５７に移行する。
【０２６３】
ステップＳ２０３７では、変数ｂｌｏｃｋに１を加算する。そして、この変数ｂｌｏｃｋの値がプライマリデバイスの総ブロック数を上回ったか否かを判定する（Ｓ２０３８）。
【０２６４】
変数ｂｌｏｃｋの値がプライマリデバイスの総ブロック数に満たない場合は、ステップＳ２０３２に戻り、処理を繰り返す。変数ｂｌｏｃｋの値がプライマリデバイスの総ブロック数を超えた場合は、プライマリデバイスの全てのデータブロックのコピーが完了したことを示すので、処理を終了する。
【０２６５】
以上の処理によって、ストレージ装置３０の入出力処理が完了する。
【０２６６】
ここで注目すべき点は、リストア要求時の処理において、ＷＯＲＭ属性が設定されているブロックのデータは、リストア、すなわちセカンダリデバイスからプライマリデバイスへのコピーは実行しない。これは、ＷＯＲＭ属性の設定されているブロックは、ＷＯＲＭ期限が満了するまでは変更が不可能であることに基づく。
【０２６７】
図２１は、このリストア処理及びリード時の処理の説明図である。
【０２６８】
リストア処理中に、プライマリデバイスとセカンダリデバイスとでＷＯＲＭ化時刻の不一致（図２０Ｄ、ステップＳ２０３４）又はデータ内容の不一致（図２０Ｄ、ステップＳ２０３５）が発生していた場合は、プライマリデバイスの当該ブロックに対応するメタデータに障害情報を設定する（図２０Ｄ、ステップＳ２０３６）。なお、障害情報は、図２１ではＩと記す。
【０２６９】
このリストア処理後、プライマリデバイスの当該データブロック位置に対するリード要求があった場合は（図１８Ａ、ステップＳ１８０３）、当該ブロック位置のメタデータに障害情報が設定されているか否かを判定する（図１８Ａ、ステップＳ１８０４）。障害情報が設定されていない場合は、通常の通り、プライマリデバイスの該当ブロックのデータを読み出す（図１８Ａ、ステップＳ１８０６）。一方、障害情報が設定されている場合は、セカンダリデバイスの該当するブロックのデータを読み出す（図１８Ａ、ステップＳ１８０７）。
【０２７０】
以上のように、本発明の第１の実施の形態では、ボリュームペア構成において、ＷＯＲＭデータを含んだボリュームのリストア処理が可能となる。特に、プライマリデバイスとセカンダリデバイスとでＷＯＲＭデータの不一致があった場合は、当該データに関して、リード要求時にセカンダリデバイスのデータを参照するように設定する。
【０２７１】
従来はＷＯＲＭデータの含まれたボリュームはＷＯＲＭ期限が満了するまではデータが更新不可能であるため再利用不可能であったが、本発明の第１の実施の形態では、セカンダリボリュームのデータを利用することで、当該ボリュームを継続して使用することが可能となる。ただし、障害が発生したボリュームを含むディスク装置は交換することが望ましい。
【０２７２】
また、ファイルレベルのＷＯＲＭ機能では、ファイルのデータ部はＷＯＲＭ化の対象となるが、ファイルシステム管理部は書き込み保護されていない。そのため、万一、ファイルシステム管理部が破壊されるような場合には、これを修正することによってデータブロック部に手を加えることなく復旧可能である。
【０２７３】
次に、第２の実施の形態を説明する。
【０２７４】
図２２は、本発明の第２の実施の形態のストレージシステムの構成のブロック図である。
【０２７５】
第２の実施の形態では、各装置の構成が第１の実施の形態と異なる。第１の実施の形態では、
サーバ２０Ａは、前述した第１の実施の形態のサーバ２０とほぼ同一の構成であるが、ユーザアプリケーション２０２５をメモリ２０２に含んでいる。これによって、サーバ２０Ａを操作する管理者等が、サーバ２０Ａを介してストレージ装置３０にデータの読み書きやボリュームレプリケーションの設定、ＷＯＲＭの設定等を実行することができる。
【０２７６】
一方、ストレージ装置３０Ａは、前述したストレージ装置３０とディスク装置４０とを備える構成である。ストレージ装置３０Ａにはコントローラ３００を備える。このコントローラが、サーバ２０ＡからのＩ／Ｏ要求を受け取り、当該Ｉ／Ｏ要求に基づいた処理をディスク装置のボリューム４０１Ａ及び４０１Ｂに実行する。
【０２７７】
なお、第２の実施の形態のストレージシステムの処理及び動作は、前述した第１の実施の形態と同一であるため、その説明は省略する。
【０２７８】
このように、本発明による実施の形態は、いわゆるＮＡＳ（Network Attached Storage）を適用したストレージシステムにも、ＳＡＮ（Storage Area Network）を適用したストレージシステムにも同様に適用できるものである。
【図面の簡単な説明】
【０２７９】
【図１】本発明の第１の実施の形態のストレージシステムの構成のブロック図である。
【図２Ａ】ＷＯＲＭ制御用の要求コマンドのＩ／Ｏ形式を示す説明図である。
【図２Ｂ】ＷＯＲＭ制御用の要求コマンドのモードパラメタ形式を示す説明図である。
【図３Ａ】ボリュームレプリケーション制御用の要求コマンドのＩ／Ｏ形式を示す説明図である。
【図３Ｂ】ボリュームレプリケーション制御用の要求コマンドのモードパラメタ形式を示す説明図である。
【図４】ＷＯＲＭ管理情報の詳細を示す説明図である。
【図５】ＷＯＲＭ管理情報エントリの構成を示す説明図である。
【図６】ＷＯＲＭブロック情報エントリの構成を示す説明図である。
【図７】サーバ側のボリュームペア管理情報の構成を示す説明図である。
【図８】サーバ側のボリュームペア管理情報エントリの構成を示す説明図である。
【図９】ストレージ装置側のボリュームペア管理情報の構成を示す説明図である。
【図１０】ストレージ装置側のボリュームペア管理情報エントリの構成を示す説明図である。
【図１１】メタデータの構成を示す説明図である。
【図１２Ａ】ＷＯＲＭ化設定処理のフローチャートである。
【図１２Ｂ】ＷＯＲＭ化設定処理のフローチャートである。
【図１３Ａ】ＷＯＲＭ化解除処理のフローチャートである。
【図１３Ｂ】ＷＯＲＭ化解除処理のフローチャートである。
【図１３Ｃ】ＷＯＲＭ化解除処理のフローチャートである。
【図１４】ペア定義処理のフローチャートである。
【図１５】ペア解除処理のフローチャートである。
【図１６】バックアップ処理のフローチャートである。
【図１７】リストア処理のフローチャートである。
【図１８Ａ】入出力処理部の処理のフローチャートである。
【図１８Ｂ】入出力処理部の処理のフローチャートである。
【図１９】ＷＯＲＭ処理のフローチャートである。
【図２０Ａ】ボリュームレプリケーション処理のフローチャートである。
【図２０Ｂ】ボリュームレプリケーション処理のフローチャートである。
【図２０Ｃ】ボリュームレプリケーション処理のフローチャートである。
【図２０Ｄ】ボリュームレプリケーション処理のフローチャートである。
【図２１】リストア処理及びリード時の処理の説明図である。
【図２２】本発明の第２の実施の形態のストレージシステムの構成のブロック図である。
【符号の説明】
【０２８０】
１０  端末
２０  サーバ
３０  ストレージ装置
４０  ディスク装置
２０１  ＣＰＵ
２０２  メモリ
２０３、２０４  インターフェース（Ｉ／Ｆ）
２０２１  ファイルシステム制御部
２０２２  ボリュームレプリケーション制御部
２０２３  ＷＯＲＭ制御部
２０２４  デバイスドライバ
３０１  ＣＰＵ
３０２  メモリ
３０３、３０４  インターフェース（Ｉ／Ｆ）
３０２１  ＷＯＲＭ処理部
３０２２  ボリュームレプリケーション処理部
３０２３  入出力処理部
４０１  ボリューム
４０２  メタデータ部
４０３  データブロック部
【図１】
0004766954.tif 000002
【図２Ａ】
0004766954.tif 000003
【図２Ｂ】
0004766954.tif 000004
【図３Ａ】
0004766954.tif 000005
【図３Ｂ】
0004766954.tif 000006
【図４】
0004766954.tif 000007
【図５】
0004766954.tif 000008
【図６】
0004766954.tif 000009
【図７】
0004766954.tif 000010
【図８】
0004766954.tif 000011
【図９】
0004766954.tif 000012
【図１０】
0004766954.tif 000013
【図１１】
0004766954.tif 000014
【図１２Ａ】
0004766954.tif 000015
【図１２Ｂ】
0004766954.tif 000016
【図１３Ａ】
0004766954.tif 000017
【図１３Ｂ】
0004766954.tif 000018
【図１３Ｃ】
0004766954.tif 000019
【図１４】
0004766954.tif 000020
【図１５】
0004766954.tif 000021
【図１６】
0004766954.tif 000022
【図１７】
0004766954.tif 000023
【図１８Ａ】
0004766954.tif 000024
【図１８Ｂ】
0004766954.tif 000025
【図１９】
0004766954.tif 000026
【図２０Ａ】
0004766954.tif 000027
【図２０Ｂ】
0004766954.tif 000028
【図２０Ｃ】
0004766954.tif 000029
【図２０Ｄ】
0004766954.tif 000030
【図２１】
0004766954.tif 000031
【図２２】
0004766954.tif 000032