(57)【要約】【課題】  冗長なデータ転送を削減し帯域の少ないネットワークを用いてレプリケーションを行うシステム及び方法の提供。【解決手段】  ホスト１上で動作するアプリケーションは通常のストレージシステムと同様にデータの書き込みや読みこみ命令を発行し、監視手段７は、ホスト１や、ホスト１が発行する命令を監視し再開可能点を検出し、再開可能点をストレージ２に対して発行する。ストレージ２は、再開可能点を契機としてバッファリング部２４に格納されている複数の命令に対し冗長なデータ転送を削減した転送用命令へ変換してストレージ４に転送し、ストレージ４は受信した命令を記憶部４４に対して適用し、その際、転送用命令を通常命令に復元して適用する。【選択図】  図２３
2006146580.tif 000002
【特許請求の範囲】
【請求項１】
レプリケーションに際し、レプリケーション元からレプリケーション先へ転送されることになる１つ又は複数の命令をそのまま転送するかわりに、前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換し、前記変換した転送用命令を、前記レプリケーション元から前記レプリケーション先に転送する手段を備えている、ことを特徴とするストレージシステム。
【請求項２】
前記レプリケーション先では、前記レプリケーション元からの前記転送用命令を受け取り、前記レプリケーション先の命令形式に変換して実行するか、前記レプリケーション先で前記転送用命令を実行できる場合には前記転送用命令を変換することなくそのまま実行する、ことを特徴とする請求項１記載のストレージシステム。
【請求項３】
ホストから前記レプリケーション元のストレージに発行される命令が、互いに異なる複数の領域への同一データの書き込みである場合には、前記レプリケーション元は、前記複数の書き込み命令を、１つの命令で異なる複数の領域への同一データの書き込みを指示する形式の転送用命令に変換し、前記転送用命令を前記レプリケーション先へ転送する、ことを特徴とする請求項１記載のストレージシステム。
【請求項４】
ホストから前記レプリケーション元のストレージに発行される命令が、互いに異なる複数の領域への同一データの書き込みである場合に、前記レプリケーション元では、前記複数の書き込み命令を複数の転送用命令に変換し、前記複数の転送用命令のうちの少なくとも１つは、実データの転送を伴わない形式の転送用命令とされる、ことを特徴とする請求項１記載のストレージシステム。
【請求項５】
前記実データの転送を伴わない形式の転送用命令は、前記実データを指示するポインタを含む、ことを特徴とする請求項４記載のストレージシステム。
【請求項６】
前記転送用命令は、コマンド部とアドレス部とデータ部、又は、コマンド部とデータを指示するポインタを含む、ことを特徴とする請求項１記載のストレージシステム。
【請求項７】
前記転送用命令は、コマンド部が省略され、アドレス部とデータ部又は、データを指示するポインタをを含む、ことを特徴とする請求項１記載のストレージシステム。
【請求項８】
前記データ部が、圧縮されたデータである、ことを特徴とする請求項６又は７記載のストレージシステム。
【請求項９】
前記レプリケーション元において、ホストから発行された命令のうちレプリケーションによる転送を伴う命令を一時的に蓄積するバッファを備え、
前記バッファの蓄積量が所定値以上となったとき、
前記バッファに蓄積される複数の命令において所定の命令パターンが検知されたとき、
前記転送用命令に変換できる命令の組み合わせが到着したとき、
前回の転送処理から所定時間経過したとき、
前回の転送処理が終わったとき、
のいずれかの条件に該当するとき、転送処理を開始する、ことを特徴とする請求項１記載のストレージシステム。
【請求項１０】
ホストと、
レプリケーション元と、
レプリケーション先と、
を備え、
前記レプリケーション元から前記レプリケーション先へ転送されることになる１つ又は複数の命令を転送するかわりに、前記ホストが、前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換する手段を備え、
前記ホストは、前記変換した転送用命令を、前記レプリケーション元に発行し、
前記レプリケーション元から前記転送用命令が前記レプリケーション先に転送され、
前記レプリケーション元、及び、前記レプリケーション先では、前記変換した転送用命令をそのまま又は復元した上で、それぞれのストレージに適用する、ことを特徴とするストレージシステム。
【請求項１１】
ホストと、
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備え、
前記ホストにおいて、ソフトウェアミラーリング処理を行う命令を予め定義しておき、
前記ホストは、前記定義された命令を発行し、
前記ホストから発行された前記命令を、前記レプリケーション元のストレージが実行可能な形式に変換して前記レプリケーション元のストレージに対して発行するとともに、前記発行された前記命令を、そのまま前記レプリケーション先に転送する手段と、
転送された前記命令を受け取り、前記レプリケーション先のストレージが実行可能な形式に変換し前記レプリケーション先のストレージに対して発行する手段と、
を備えている、ことを特徴とするストレージシステム。
【請求項１２】
ホストと、
１つ又は複数の記憶装置と、
を備え、
前記ホストから発行された命令を受け、前記記憶装置内でのデータのコピー又は複数の前記記憶装置間にわたるデータのコピーを行うにあたり、前記ホストから発行された命令を、前記コピーによって書き込まれるデータの転送を行わない形式の命令に変換する変換手段を備えている、ことを特徴とするストレージシステム。
【請求項１３】
前記変換手段は、前記ホストから発行された複数の命令のパターンに基づき、コピー処理であることを認識する、ことを特徴とする請求項１２記載のストレージシステム。
【請求項１４】
前記記憶装置のあるアドレスからデータを読み出し、前記コピー処理によって発生する書き込み処理を、前記書き込み処理に対応する書き込み命令の内容となるデータのポインタを転送する命令に変換する、ことを特徴とする請求項９記載のストレージシステム。
【請求項１５】
前記コピー処理の対象となる記憶単位が予め指定されている、ことを特徴とする請求項１４記載のストレージシステム。
【請求項１６】
前記変換手段は、前記コピー処理を認識する際に、前記ホストのシステムログを利用する、ことを特徴とする請求項１４記載のストレージシステム。
【請求項１７】
ホストと、
１つ又は複数の記憶装置と、
を備え、
前記ホストにおいて、記憶装置内または記憶装置間でのデータのコピー処理を行う命令を予め定義しておき、前記ホストは前記定義された命令を発行し、
前記ホストから発行された前記命令を、前記記憶装置が実行可能な形式に変換する変換手段を備えている、ことを特徴とするストレージシステム。
【請求項１８】
ホストと、
レプリケーション元のストレージと、
前記レプリケーション元のストレージと通信接続されるレプリケーション先のストレージと、
を備え、
前記レプリケーション元のストレージは、前記ホストから前記レプリケーション元のストレージに対して発行された命令を一時的に格納するバッファリング部と、
前記バッファリング部に格納された命令を転送に適した所定の転送用命令に変換する第１の命令変換部と、
を備え、
前記レプリケーション元のストレージは、前記転送用命令を前記レプリケーション先のストレージに転送し、
前記レプリケーション先のストレージは、前記レプリケーション元のストレージから転送された前記転送用命令を受け、前記転送用命令を前記レプリケーション先のストレージで実行できる命令に変換する第２の命令変換部を備えている、ことを特徴とするストレージシステム。
【請求項１９】
前記第１の命令変換部が、前記バッファリング部に格納されている命令群から、同じデータを複数箇所に書き込みを行う命令の組み合わせを検出した場合に、前記同じデータを複数回転送せずに済む命令形式の転送用の命令に変換した上で、前記転送用命令を前記レプリケーション先のストレージに転送し、
前記第２の命令変換部では、前記転送用命令を実行用命令に変換して、前記レプリケーション先のストレージに適用する、ことを特徴とする請求項１８記載のストレージシステム。
【請求項２０】
前記第１の命令変換部が、前記バッファリング部に格納されている命令群から、レプリケーション元のストレージに既に存在するデータを書き込む命令群を発見し、レプリケーション元のストレージに既に存在するデータを利用して目的の命令を実現する転送用命令に変換し、
前記第２の命令変換部が、前記転送用命令を実行用命令に変換して、レプリケーション先のストレージに適用する、ことを特徴とする請求項１８記載のストレージシステム。
【請求項２１】
ホストと、
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備え、
前記レプリケーション元のストレージに対応して設けられた第１の命令受信・変換層と、
前記レプリケーション先のストレージに対応して設けられた第２の命令受信・変換層と、
前記第１の命令受信・変換層は、前記ホストから前記レプリケーション元のストレージに対して発行された命令を一時的に格納するバッファリング部と、
前記バッファリング部に格納された命令を転送に適した転送用命令に変換する第１の命令変換部と、
を備え、
前記第２の命令受信・変換層は、前記第１の命令受信・変換層から転送された転送用命令を、前記レプリケーション先のストレージが実行できる命令に変換する第２の命令変換部を備えている、ことを特徴とするストレージシステム。
【請求項２２】
前記第１の命令変換部が、前記バッファリング部に存在する冗長化情報が付与された書き込み命令を、前記レプリケーション先のストレージで復元できるデータを削除した転送用命令に変換して前記レプリケーション先のストレージに転送し、
前記第２の命令変換部において、前記転送用命令をそのまま実行するか、又は、書き込み命令に変換し、前記レプリケーション先のストレージに適用する、ことを特徴とする請求項１８乃至２１のいずれか一に記載のストレージシステム。
【請求項２３】
前記ホストは、前記レプリケーション元のストレージに対する命令を発行する命令発行部を備え、
前記第１の命令変換部は、システムログ情報を監視して、レプリケーションにおけるデータの転送量を削減できる処理が行われるか否かを検知し、前記検知情報に基づき、転送用命令への変換を行う、ことを特徴とする請求項１８記載のストレージシステム。
【請求項２４】
前記ホスト及び前記レプリケーション元のストレージを監視する監視手段を備え、
前記監視手段は、ホストの動作、あるいは、前記レプリケーション元のストレージで受信される命令を監視して再開可能点の認識し、再開可能点通知の発行を行う、ことを特徴とする請求項１８記載のストレージシステム。
【請求項２５】
前記監視手段は、前記ホストによって発行されレプリケーション元が受信するコマンドを監視し、予め定められたファイルあるいは記憶領域にアクセスするコマンドが発生したことが検出された後に、再開可能点通知を発行する、ことを特徴とする請求項２４記載のストレージシステム。
【請求項２６】
前記監視手段は、ジャーナルログに書き込みが発生するコマンドを検知した場合に、再開可能点を通知する、ことを特徴とする請求項２４記載のストレージシステム。
【請求項２７】
前記監視手段は、前記ホストのプロセスを監視し、予め定められたプロセスが動作した時に再開可能点となる場合に、前記時点で、再開可能点通知を発行する、ことを特徴とする請求項２４記載のストレージシステム。
【請求項２８】
前記ホスト、及び前記レプリケーション元のストレージを監視する監視手段を備え、
前記ホストが発行する前記ストレージへの命令を監視して発行した再開可能点通知、又は前記ホストが発行した再開可能点通知を、前記第１の命令変換部が転送契機として利用して、転送処理を行う、ことを特徴とする請求項１８記載のストレージシステム。
【請求項２９】
前記第２の命令変換部が、再開可能点通知までの命令を全て受信したことを確認し、依存関係のある命令は、発行順に並び替えてから前記レプリケーション先のストレージへの適用処理を行う、ことを特徴とする請求項２８記載のストレージシステム。
【請求項３０】
レプリケーション元のストレージと、
レプリケーション先のストレージと、
前記レプリケーション元のストレージを利用するホストと、
前記レプリケーション元のストレージに対応して設けられる第１の命令受信層と、
前記レプリケーション先のストレージに対応して設けられる第２の命令受信層と、
を備え、
前記第１の命令受信層は、受信した命令をレプリケーション元のストレージが実行できる命令に変換する第１の命令変換部を備え、
前記第２の命令受信層は、転送用命令をレプリケーション先のストレージが実行できる命令に変換する処理を行う第２の命令変換部を備え、
前記ホストは、予め定義された通常の命令よりもデータ転送量を削減できる命令を発行し、
前記第１の命令変換部が、前記ホストから発行された前記転送量を削減できる命令を、前記レプリケーション元のストレージが実行できる形の命令に変換して前記レプリケーション元のストレージに対して渡し、
前記レプリケーション先のストレージへの転送は、前記ホストが発行した転送量を削減できる命令のまま転送し、
前記第２の命令変換部が、前記ホストが発行した転送量を削減できる命令を前記レプリケーション先のストレージの実行できる形の命令に変換し、レプリケーション先のストレージに渡す、ことを特徴とするストレージシステム。
【請求項３１】
レプリケーションに際して、レプリケーション元からレプリケーション先へ転送されることになる１つ又は複数の命令をそのまま転送するかわりに、
前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換する工程と、
前記変換した転送用命令を、前記レプリケーション元から前記レプリケーション先に転送する工程と、
を含む、ことを特徴とするレプリケーション方法。
【請求項３２】
前記レプリケーション先では、前記レプリケーション元からの前記転送用命令を受け取り、前記レプリケーション先の命令形式に変換して実行するか、もしくは、前記レプリケーション先で前記転送用命令を実行できる場合にはそのまま実行する、ことを特徴とする請求項３１記載のレプリケーション方法。
【請求項３３】
前記ホストから前記レプリケーション元のストレージに発行される命令が、互いに異なる複数の領域への同一データの書き込みである場合には、前記レプリケーション元は、前記複数の書き込み命令を、１つの命令で異なる複数の領域への同一データの書き込みを指示する形式の転送用命令に変換して、前記転送用命令を前記レプリケーション先へ転送する、ことを特徴とする請求項３１記載のレプリケーション方法。
【請求項３４】
前記レプリケーション元において、前記ホストから発行された命令のうち、レプリケーションによる転送を伴う命令を一時的に蓄積するバッファを備え、
前記バッファの蓄積量が所定値以上となったとき、
前記バッファに蓄積される複数の命令において所定の命令パターンが検知されたとき、
前記転送用命令に変換できる命令の組み合わせが到着したとき、
前回の転送処理から所定時間経過したとき、
前回の転送処理が終わったとき、
のいずれかの条件に該当するとき、転送処理を開始する、ことを特徴とする請求項３１記載のレプリケーション方法。
【請求項３５】
ホストと、
レプリケーション元と、
レプリケーション先と、
を備えたシステムのレプリケーション方法において、
前記レプリケーション元から前記レプリケーション先へ転送されることになる１つ又は複数の命令を転送するかわりに、前記ホストが、前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換する工程と、
前記ホストが、前記変換した転送用命令を前記レプリケーション元に発行する工程と、
前記レプリケーション元から前記転送用命令が前記レプリケーション先に転送される工程と、
前記レプリケーション元、及び、前記レプリケーション先では、前記変換した転送用命令をそのまま実行するか、又は復元して、それぞれのストレージに適用する工程と、
を含む、ことを特徴とするレプリケーション方法。
【請求項３６】
ホストと、
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備えたシステムのレプリケーション方法において、
前記ホストにおいて、ソフトウェアミラーリング処理を行う命令を予め定義しておき、
前記ホストは、前記定義された命令を発行する工程と、
前記ホストから発行された前記命令を、前記レプリケーション元のストレージが実行可能な形式に変換し前記レプリケーション元のストレージに対して発行するとともに、前記発行された前記命令をそのまま前記レプリケーション先に転送する工程と、
転送された前記命令を受け取り、前記レプリケーション先のストレージが実行可能な形式に変換し前記レプリケーション先のストレージに対して発行する工程と、
を含む、ことを特徴とするレプリケーション方法。
【請求項３７】
１つ又は複数の記憶装置がホストから発行された命令を受ける工程と、
前記記憶装置内または複数の前記記憶装置間でデータのコピー又はミラーリング処理を行うにあたり、前記ホストから発行された命令を、前記コピー又はミラーリングで書き込まれるデータの転送を行わない形式の少なくとも１つの命令に変換する工程と、
を含む、ことを特徴とする複製方法。
【請求項３８】
前記ホストから発行された複数の命令のパターンに基づきコピー処理であることを認識する、ことを特徴とする請求項３７記載の複製方法。
【請求項３９】
前記記憶装置のあるアドレスからデータを読み出し、前記コピー又はミラーリング処理によって発生する書き込み処理を、前記書き込み処理に対応する書き込み命令の内容となるデータのポインタを転送する命令に変換する、ことを特徴とする請求項３７記載の複製方法。
【請求項４０】
前記コピー又はミラーリング処理の対象となるボリュームが予め指定されている、ことを特徴とする請求項３７乃至３９のいずれか一に記載の複製方法。
【請求項４１】
前記コピー処理を認識する際に、前記ホストのシステムログを利用する、ことを特徴とする請求項３７記載の複製方法。
【請求項４２】
ホストにおいて、記憶装置内又は複数の記憶装置間でのコピー又はミラーリングの書き込み処理を行う命令を予め定義しておき、
前記ホストが前記定義された命令を発行する工程と、
前記ホストから発行された前記命令を、前記記憶装置が実行可能な形式に変換し前記記憶装置に対して発行する工程と、
を含む、ことを特徴とする複製方法。
【請求項４３】
ホストと、
レプリケーション元のストレージと、
前記レプリケーション元のストレージと通信接続されるレプリケーション先のストレージと、
を備えたシステムのレプリケーション方法において、
前記レプリケーション元のストレージは、前記ホストから前記レプリケーション元のストレージに対して発行された命令をバッファに一時的に格納する第１の工程と、
前記バッファに格納された命令を転送に適した所定の転送用命令に変換する第２の工程と、
前記レプリケーション元のストレージは、前記転送用命令を前記レプリケーション先のストレージに転送する第３の工程と、
前記レプリケーション先のストレージは、前記レプリケーション元のストレージから転送された前記転送用命令を受け、前記転送用命令を前記レプリケーション先のストレージで実行できる命令に変換する第４の工程と、
を含む、ことを特徴とするレプリケーション方法。
【請求項４４】
前記第２の工程が、前記バッファに格納されている命令群から、同じデータを複数箇所に書き込みを行う命令の組み合わせを検出した場合に、前記同じデータを複数回転送せずに済む命令形式の転送用の命令に変換した上で、前記転送用命令を前記レプリケーション先のストレージに転送し、
前記第４の工程が、前記転送用命令を実行用命令に変換して、前記レプリケーション先のストレージに適用する、ことを特徴とする請求項４３記載のレプリケーション方法。
【請求項４５】
前記第２の工程が、前記バッファリング部に格納されている命令群から、レプリケーション元のストレージに既に存在するデータを書き込む命令群を検出し、レプリケーション元のストレージに既に存在するデータを利用して目的の命令を実現する転送用命令に変換し
前記第４の工程が、前記転送用命令を実行用命令に変換して、レプリケーション先のストレージに適用する、ことを特徴とする請求項４３記載のレプリケーション方法。
【請求項４６】
ホストと、
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備えたシステムのレプリケーション方法において、
前記レプリケーション元のストレージに対応して設けられた第１の命令受信・変換層が、前記ホストから前記レプリケーション元のストレージに対して発行された命令をバッファに一時的に格納する第１の工程と、
前記第１の命令受信・変換層が、前記バッファに格納された命令を転送に適した転送用命令に変換する第２の工程と、
前記第１の命令受信・変換層から前記レプリケーション先のストレージに対応して設けられた第２の命令受信・変換層に前記転送用命令を転送する第３の工程と、
前記第２の命令受信・変換層が前記第１の命令受信・変換層から転送された転送用命令を、前記レプリケーション先のストレージが実行できる命令に変換する処理を行う第４の工程と、
を含む、ことを特徴とするレプリケーション方法。
【請求項４７】
前記第２の工程において、前記バッフに存在する冗長化情報が付与された書き込み命令を、前記レプリケーション先のストレージで復元できるデータを削除した転送用命令に変換して前記レプリケーション先のストレージに転送し、
前記第４の工程において、前記転送用命令をそのまま実行するか、又は、元の書き込み命令に復元し、前記レプリケーション先のストレージに適用する、ことを特徴とする請求項４３乃至４６のいずれか一に記載のレプリケーション方法。
【請求項４８】
前記ホストは、前記レプリケーション元のストレージに対する命令を発行する命令発行部と記憶部とを備え、
前記第２の工程が、前記ホストの前記記憶部又は前記レプリケーション先のストレージの記憶部に対して書き込まれるシステムログ情報を監視して、転送量を削減できる処理が行われるか否かを検知し、前記検知情報に基づき、転送用命令への変換を行う、ことを特徴とする請求項４３記載のレプリケーション方法。
【請求項４９】
前記ホスト及び前記レプリケーション元のストレージを監視する監視手段が、前記ホストが発行する前記ストレージへの命令を監視して発行した再開可能点通知、又は前記ホストが発行した再開可能点通知を、前記第１の命令変換部が転送契機として利用して、転送処理を行う、ことを特徴とする請求項４３記載のレプリケーション方法。
【請求項５０】
前記第４の工程が、再開可能点通知までの命令を全て受信したことを確認し、依存関係のある命令は、発行順に並び替えてから前記レプリケーション先のストレージへの適用処理を行う、ことを特徴とする請求項４９記載のレプリケーション方法。
【請求項５１】
レプリケーション元のストレージと、
レプリケーション先のストレージと、
前記レプリケーション元のストレージを利用するホストと、
前記レプリケーション元のストレージに対応して設けられる第１の命令受信層が、ホストから受信した命令をレプリケーション元のストレージが実行できる命令に変換する工程と、
前記レプリケーション先のストレージに対応して設けられる第２の命令受信層が、前記転送用命令をレプリケーション先のストレージが実行できる命令に変換する処理を行う工程と、
前記ホストは、予め定義された通常の命令よりも転送量を削減できる命令を発行する工程と、
前記第１の命令受信層が、前記ホストから発行された前記転送量を削減できる命令を、前記レプリケーション元のストレージが実行できる形の命令に変換して前記レプリケーション元のストレージに対して渡す工程と、
前記第１の命令受信層は、前記レプリケーション先のストレージへの転送にあたり、前記ホストが発行した前記転送量を削減できる命令のままで転送する工程と、
前記第２の命令受信層が、前記ホストが発行した前記転送量を削減できる命令を前記レプリケーション先のストレージの実行できる形の命令に変換し、レプリケーション先のストレージに渡す工程と、
を含む、ことを特徴とするレプリケーション方法。
【請求項５２】
レプリケーション元からレプリケーション先へのレプリケーションシステムを構成するコンピュータに、
レプリケーションに際し、レプリケーション元からレプリケーション先へ転送されることになる１つ又は複数の命令をそのまま転送するかわりに、前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換する処理と、
前記変換した転送用命令を、前記レプリケーション元から前記レプリケーション先に転送する処理と、
を実行させるプログラム。
【請求項５３】
請求項５２記載のプログラムにおいて、
前記レプリケーション先では、前記レプリケーション元からの前記転送用命令を受け取り、前記レプリケーション先で前記転送用命令を実行できる場合にはそのまま実行し、もしくは、前記レプリケーション先の命令形式に変換して実行する処理を、前記コンピュータに実行させるプログラム。
【請求項５４】
請求項５２記載のプログラムにおいて、
ホストから前記レプリケーション元のストレージに発行される命令が、互いに異なる複数の領域への同一データの書き込みである場合には、前記レプリケーション元は、前記複数の書き込み命令を、１つの命令で異なる複数の領域への同一データの書き込みを指示する形式の転送用命令に変換して、前記転送用命令を前記レプリケーション先へ転送する処理を、前記コンピュータに実行させるプログラム。
【請求項５５】
請求項５２記載のプログラムにおいて、
前記レプリケーション元において、ホストから発行された命令のうち、レプリケーションによる転送を伴う命令を一時的に蓄積するバッファを備え、
前記バッファの蓄積量が所定値以上となったとき、
前記バッファに蓄積される複数の命令において所定の命令パターンが検知されたとき、
前記転送用命令に変換できる命令の組み合わせが到着したとき、
前回の転送処理から所定時間経過したとき、
前回の転送処理が終わったとき、
のいずれかの条件に該当するとき、転送処理を開始する処理を、前記コンピュータに実行させるプログラム。
【請求項５６】
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備えたシステムを構成するコンピュータに、
前記レプリケーション元から前記レプリケーション先へ転送されることになる１つ又は複数の命令を転送するかわりに、前記ホストが、前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換する処理と、
前記変換した転送用命令を前記レプリケーション元に発行する処理と、
前記レプリケーション元から前記転送用命令が前記レプリケーション先に転送される処理と、
前記レプリケーション元、及び、前記レプリケーション先では、前記変換した転送用命令をそのまま実行するか又は復元して、それぞれのストレージに適用する処理と、
を実行させるプログラム。
【請求項５７】
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備えたシステムを構成するコンピュータに、
ソフトウェアミラーリング処理を行う命令を予め定義しておき、
前記定義された命令を発行する処理と、
前記命令を、前記レプリケーション元のストレージが実行可能な形式に変換し前記レプリケーション元のストレージに対して発行するとともに、前記発行された前記命令をそのまま前記レプリケーション先に転送する処理と、
転送された前記命令を受け取り、前記レプリケーション元のストレージが実行可能な形式に変換し前記レプリケーション先のストレージに対して発行する処理と、
を実行させるプログラム。
【請求項５８】
ストレージシステムを構成するコンピュータに、
ホストから発行された命令を受ける処理と、
前記記憶装置内または複数の前記記憶装置間でデータのコピーを行うにあたり、前記ホストから発行された命令を、前記コピーによって書き込まれるデータの転送を行わない命令に変換する処理と、
を実行させるプログラム。
【請求項５９】
請求項５８記載のプログラムにおいて、
前記ホストから発行された複数の命令のパターンに基づき、コピー処理であることを認識する処理を、前記コンピュータに実行させるプログラム。
【請求項６０】
請求項５８記載のプログラムにおいて、
前記記憶装置のあるアドレスからデータを読み出し、前記コピー処理によって発生する書き込み処理を、前記書き込み処理に対応する書き込み命令の内容となるデータのポインタを転送する命令に変換する処理を、前記コンピュータに実行させるプログラム。
【請求項６１】
請求項５８記載のプログラムにおいて、
前記コピー処理を認識する際に、前記コピー処理の対象となる記憶単位が予め指定されていることを特徴とするプログラム。
【請求項６２】
請求項５８記載のプログラムにおいて、
前記コピー処理を認識する際に、前記ホストのシステムログを利用する処理を、前記コンピュータに実行させるプログラム。
【請求項６３】
ホストに記憶装置内、又は記憶装置間のデータのコピー処理を行う命令を予め定義しておき、ストレージシステムを構成するコンピュータに、
前記ホストより、定義された命令を発行する処理と、
前記命令を前記記憶装置が実行可能な形式に変換し前記記憶装置に対して発行する処理と、
を実行させるプログラム。
【請求項６４】
レプリケーション元のストレージと、
前記レプリケーション元のストレージと通信接続されるレプリケーション先のストレージと、
を備えたシステムを構成するコンピュータに、
前記レプリケーション元のストレージは、前記ホストから前記レプリケーション元のストレージに対して発行された命令をバッファに一時的に格納する第１の処理と、
前記バッファに格納された命令を転送に適した所定の転送用命令に変換する第２の処理と、
前記レプリケーション元のストレージは、前記転送用命令を前記レプリケーション先のストレージに転送する第３の処理と、
前記レプリケーション先のストレージは、前記レプリケーション元のストレージから転送された前記転送用命令を受け、前記転送用命令を前記レプリケーション先のストレージで実行できる命令に変換する第４の処理と、
を実行させるプログラム。
【請求項６５】
請求項６４記載のプログラムにおいて、
前記第２の処理が、前記バッファに格納されている命令群から、同じデータを複数箇所に書き込みを行う命令の組み合わせを検出した場合に、前記同じデータを複数回転送せずに済む命令形式の転送用の命令に変換した上で、前記転送用命令を前記レプリケーション先のストレージに転送し、
前記第４の処理が、前記転送用命令を実行用命令に変換して、前記レプリケーション先のストレージに適用する、ことを特徴とするプログラム。
【請求項６６】
請求項６４記載のプログラムにおいて、
前記第２の処理が、前記バッファリング部に格納されている命令群から、レプリケーション元のストレージに既に存在するデータを書き込む命令群を検出し、レプリケーション元のストレージに既に存在するデータを利用して目的の命令を実現する転送用命令に変換し
前記第４の処理が、前記転送用命令を実行用命令に変換して、レプリケーション先のストレージに適用する、ことを特徴とするプログラム。
【請求項６７】
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備えたシステムを構成するコンピュータに、
前記レプリケーション元のストレージに対応して設けられた第１の命令受信・変換層が、前記ホストから前記レプリケーション元のストレージに対して発行された命令をバッファに一時的に格納する第１の処理と、
前記第１の命令受信・変換層が、前記バッファに格納された命令を転送に適した転送用命令に変換する第２の処理と、
前記第１の命令受信・変換層から前記レプリケーション先のストレージに対応して設けられた第２の命令受信・変換層に前記転送用命令を転送する第３の処理と、
前記第２の命令受信・変換層が前記第１の命令受信・変換層から転送された転送用命令を、前記レプリケーション先のストレージが実行できる命令に変換する処理を行う第４の処理と、
を実行させるプログラム。
【請求項６８】
請求項６７記載のプログラムにおいて、
前記第２の処理において、前記バッフに存在する冗長化情報が付与された書き込み命令を、前記レプリケーション先のストレージで復元できるデータを削除した転送用命令に変換して前記レプリケーション先のストレージに転送し、
前記第４の処理において、前記転送用命令をそのまま実行するか、又は、元の書き込み命令に復元し、前記レプリケーション先のストレージに適用する、ことを特徴とするプログラム。
【請求項６９】
請求項５８記載のプログラムにおいて、
前記第２の処理が、システムログ情報を監視して、転送量を削減できる処理が行われるか否かを検知し、前記検知情報に基づき、転送用命令への変換を行う、ことを特徴とするプログラム。
【請求項７０】
請求項５８記載のプログラムにおいて、
ホストが発行する前記ストレージへの命令を監視して発行した再開可能点通知、又は前記ホストが発行した再開可能点通知を、前記第１の命令変換部が転送契機として利用して、転送処理を行う処理を、前記コンピュータに実行させるプログラム。
【請求項７１】
請求項６１記載のプログラムにおいて、
前記第４の処理が、再開可能点通知までの命令を全て受信したことを確認し、依存関係のある命令は、発行順に並び替えてから前記レプリケーション先のストレージへの適用処理を行う処理を、前記コンピュータに実行させるプログラム。
【請求項７２】
レプリケーション元のストレージと、
レプリケーション先のストレージと、
を備えたシステムを構成するコンピュータに、
前記レプリケーション元のストレージに対応して設けられる第１の命令受信層が、ホストから受信した命令をレプリケーション元のストレージが実行できる命令に変換する処理と、
前記レプリケーション先のストレージに対応して設けられる第２の命令受信層が、前記転送用命令をレプリケーション先のストレージが実行できる命令に変換する処理を行う処理と、
前記ホストは、予め定義された通常の命令よりも転送量を削減できる命令を発行する処理と、
前記第１の命令受信層が、前記ホストから発行された前記転送量を削減できる命令を、前記レプリケーション元のストレージが実行できる形の命令に変換して前記レプリケーション元のストレージに対して渡す処理と、
前記第１の命令受信層が、前記レプリケーション先のストレージへの転送にあたり、前記ホストが発行した前記転送量を削減できる命令のまま転送する処理と、
前記第２の命令受信層が、前記ホストが発行した前記転送量を削減できる命令を前記レプリケーション先のストレージの実行できる形の命令に変換し、前記レプリケーション先のストレージに渡す処理と、
を実行させるプログラム。
【請求項７３】
記憶装置にデータの書き込みを行う命令が、同一データを複数のアドレスに格納する命令である場合、前記書き込みを行う命令を、複数のアドレスと１つの前記データとをオペランドに含む書き込み命令に変換する手段を備えている、ことを特徴とする情報処理装置。
【請求項７４】
記憶装置にデータの書き込みを行う命令が、同一データを複数（Ｎ個）のアドレスに格納する命令である場合、前記書き込みを行う命令を、前記データを第１のアドレスに書き込む命令と、前記データへのポインタと前記データの第ｉ（ただし、ｉは２乃至Ｎの整数）のアドレスとをオペランドに有する１つ又は複数の命令とに変換する手段を備えている、ことを特徴とする情報処理装置。
【請求項７５】
あるアドレスからデータを読み出すリード命令に対して、前記データを他のアドレスに書き込む書き込み命令が入力された場合、前記データをポイントするオペランドの命令に変換する手段を備えている、ことを特徴とする情報処理装置。
【請求項７６】
前記データは、命令内に含まれる即値データであるか、又は、前記命令のコマンドと分離されたデータよりなる、ことを特徴とする請求項７３記載の情報処理装置。
【請求項７７】
１のノードから他のノードに、同一データを複数のアドレスに格納する命令を転送するにあたり、前記複数の命令を、オペランドに、前記データと、複数の領域を指定した命令に変換した上で転送する、ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーションを行うシステム、レプリケーション方法およびレプリケーション用プログラムに関し、特に、冗長なデータ転送量の削減に好適とされる、レプリケーションシステム、レプリケーション方法およびレプリケーション用プログラムに関する。
【背景技術】
【０００２】
従来から、災害等が発生しても機能を維持するために正常系（あるいは稼働系）サイトと待機系サイトを備えたコンピュータシステムが用いられている。このようなコンピュータシステムをレプリケーションシステムと呼ぶ。例えば、通常には正常系サイトがシステム機能を提供する動作をしており、正常系サイトが正常に機能できないときには、その正常系サイトに代わって待機系サイトが動作する。
【０００３】
コンピュータシステムとしての機能を提供するために、正常系サイトと待機系サイトは各々にデータを格納するためのストレージを有している。そして、レプリケーションシステムでは、待機系サイトが正常系サイトに代わって動作できるように、正常系サイトのストレージ内のデータが待機系サイトのストレージに複製され、保持される（例えば、非特許文献１、２参照）。この処理は、「レプリケーション」と呼ばれている。
【０００４】
レプリケーションシステムでは、正常系サイトと待機系サイトが「同期」している場合（以下、「同期レプリケーション」という）と、「非同期」の場合（以下、「非同期レプリケーション」という）がある。
【０００５】
同期レプリケーションでは、正常系サイトにおいてストレージにＷＲＩＴＥ（データの書き込み）があると、それを契機に、待機系サイトのストレージにも、同じデータのＷＲＩＴＥが行われる。一方、非同期レプリケーションでは、待機系サイトのストレージに対するＷＲＩＴＥは、正常系サイトに対するＷＲＩＴＥを契機とせず、事後的に行われる。
【０００６】
現在、ネットワークの利用帯域を減らす方法としては、同一のブロックに対する更新データを、最後の更新データのみ転送する方法がある（非特許文献１）。また、正常系と待機系のストレージの差分のみを転送してコピーを行うことによっても、完全なデータコピーを行う事と比較してネットワーク上を流れるデータの量を減らす事が出来る。しかし、これらの方式では、ある一定時間の間に同じ領域に対して更新が発生した場合に対してのみしか、データ量を減らすことができない。物理的あるいは論理的に異なる領域に対して行われた更新データに対してはデータ転送量を減らすことができない。
【０００７】
また、データベース等のミドルウェア層によってレプリケーションを実現する方式では、ＲＥＤＯログを転送し、データファイルを待機系サイトで作成する方法がある（非特許文献３等）。このような方式を用いても、レプリケーションすることにより、待機系サイトに転送する必要の無いデータを転送することを不要とし、ネットワーク上を流すデータの量を削減する事が出来る。しかし、待機系サイトで、ミドルウェアを動作させる為の計算機能力、ソフトウエア、ソフトウェアライセンス等が必要になってしまう。また、ホストでミドルウェア、あるいはミドルウェア中のレプリケーション機能を動作させることにより、正常系サイト上で動作しているアプリケーションの性能が低下する可能性がある。また、稼働するアプリケーションはそのミドルウェアを利用して作成しなければならない、という問題点がある。従って、既存のシステムをミラーリングする際には、ミドルウェアを新たに導入する為にシステムを改変しなければならない、という問題もある。
【０００８】
なお、従来の刊行物として、例えば特許文献１には、ＤＢ表データコピーに要するデータ転送量を削減し、コピー先のＤＢ表として整合性のとれたデータであることを保証する方法とシステムが開示されており、ログの使用によってキャッシュ上にバッファリングより少ない情報量でリモートへコピーすべきデータをバッファリングできることが記載されている。しかしながら、特許文献１に記載の方法とシステムおいて、異なる箇所に同一内容のデータが書き込まれる場合には、そのままデータを転送する必要がある。
【０００９】
また、例えば特許文献２には、中央処理装置からのフレームをマスタ側ディスク装置内のヘッダ変換バッファに一旦蓄積し、フレームのヘッダ部をリモート側ディスク装置送信用に変換して送信するシステムが開示されている。
【００１０】
さらに、特許文献３には、プライマリサイトのディスクアレイ装置では、コンセントレータのコピー手段が、キャッシュ上の更新データを送信バッファに先頭から順にパッキングするようにコピーし、送信手段が格納バッファのパッキングデータをセカンダリサイトのディスクアレイ装置に転送し、セカンダリサイトのディスクアレイ装置では、受信手段が転送されてきたパッキングデータ内の更新データをパッキング順に多重でキャッシュにコピーする構成が開示されている。この場合、更新データは全て転送されることになる。
【００１１】
さらにまた特許文献４には、マスターファイル及び複製ファイルの多重化の際の通信量を低減するシステムが開示されている。このシステムでは、マスター領域から読み込んだマスターファイルをキャッシュ領域にキャッシュし、キャッシュ領域の変更されたデータ部分をマスター領域の対応する部分に転送し、変更された部分は、マスター領域とキャッシュ領域で多重化され、変更されていないデータ領域については、マスタ領域と複製領域で多重化される。最後に変更されていないデータ部分をキャッシュ領域に転送し、キャッシュ領域に複製データを統合して複製領域とする。複製ファイル作成時、マスター領域にのみデータを転送すればよく、多重化に際して通信量を削減することができるというものである。
【００１２】
【非特許文献１】イーエムシー・コーポレーション、EMC SRDF,SRDF/A[ONLINE]［平成１６年７月２８日検索］、インターネット< URL http://japan.emc.com/local/ja/jp/products/networking/srdf.jsp ＞
【非特許文献２】日本電気株式会社、SYSTEMGLOBE REMOTEDATAREPLICATION[ONLINE]［平成１６年７月２８日検索］、インターネット< URL http://www.sw.nec.co.jp/products/istorage/product/software/rdr/index.shtml >
【非特許文献３】オラクル、ORACLE DATAGUARD 10G  ホワイトペーパー[ONLINE]［平成１６年７月２８日］、インターネット< URL: http://otn.oracle.co.jp/cgi-bin/otn/auth_r.cgi?path=/download/products/database/oracle10g/pdf/twp_ha_dataguardoverview_10gr1_1103.pdf >
【特許文献４】特開２０００−３４７９１７号公報
【特許文献２】特開２００３−０８５０１７号公報
【特許文献３】特開２００３−１６７６８４号公報
【特許文献４】特開２００３−３２３３２８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
第１の問題点は、レプリケーションシステムに太い帯域をもったネットワークが必要である、ということである。その理由は、レプリケーションシステムでは、正常系サイトと待機系サイトのストレージの複製を、ネットワークを介して行う場合、正常系サイトのストレージに対して変更されたデータ全てを許容されうる時間内にネットワークを介して伝送する必要があり、更新密度が高い状態でも、許容時間内で伝送が完了できる帯域の回線を用意しなければならないからである。
【００１４】
第２の問題点は、保存するデータの内容が同じ場合であっても、ストレージ中の異なる場所に保存する場合には、同じデータを複数回転送しなければならない、ということである。その理由は、サーバからストレージに対して、同じ内容のデータを異なる場所に書き込む場合であっても、書き込む回数分、データを書き込む命令を発行しなければならず、書き込み命令を受け取ったストレージは、それぞれの命令を個別に処理をして、複数回同じデータを転送する、構成とされているためである。
【００１５】
第３の問題点は、既にストレージ内に閉じてデータを複製する場合に、そのストレージがレプリケーションを行っている場合に、バックアップサイトのストレージにも存在するデータを、ネットワークを介してデータ転送しなければならない、ということである。その理由は、ストレージ内に閉じた複製処理を実行するために、サーバからは、複数の命令の組み合わせとして発行しなければならず、ストレージは、それを保持しているデータの複製処理であることを認識できず、書き込み処理と認識し、再度、データ転送を行うことになるためである。
【００１６】
第４の問題点は、転送量を削減したレプリケーションシステムを実現するには、転送量を削減する方式を実現する為のストレージ装置を必要とする、ということである。その理由は、ストレージ装置に対して発行される命令を解釈して処理をする為に、独自の処理が出来る仕組みをストレージ装置側に必要としたためである。
【００１７】
第５の問題点は、サーバ上で動作するアプリケーションの意図をストレージが知ることが出来ない、ということである。その理由は、サーバがストレージに指示できる内容が書き込み・読み込み等に限られるためである。
【００１８】
第６の問題点は、ＲＡＩＤ５におけるパリティのような復元のためのデータが付与された書き込み命令のレプリケーションを行う際に、付与したデータの分だけ、転送量が増大してしまう、ということである。その理由は、復元のためのデータが付与された書き込み命令のデータを、全て、レプリケーション先のストレージシステムに対して転送する構成とされているためである。
【００１９】
第７の問題点は、データ転送量を削減する為に書き込み命令を変換するには、サーバが発行する命令のパターンを分析し、転送用の命令に変換することが出来る命令が発行されたことをストレージが認識出来なければならない、ということである。その理由は、サーバが発行できる命令は、ストレージに対して、書き込み・読みこみ等の命令のみ発行するからである。
【００２０】
第８の問題点は、ストレージが決定する任意の契機でレプリケーション先にデータ転送を行なった場合、アプリケーションが被災後の処理が最小にならない、ということである。その理由は、ホスト上で動作するアプリケーションがいかなる契機でレプリケーション先にデータが転送されるか知らないためである。
【００２１】
したがって、本発明の主たる目的は、データの複製に要するネットワークの帯域を縮減可能とするシステムと方法及びプログラムを提供することにある。
【００２２】
本発明の他の目的は、保存するデータの内容が同じ場合であってもストレージ中の異なる場所に保存する時に、書き込むデータの内容を１回転送するだけで実現できるシステムと方法及びプログラムを提供することにある。
【００２３】
本発明のさらに他の目的は、ストレージ内に閉じてデータを複製する場合、ストレージが保持しているデータの複製処理であるとして認識し、複製処理を行う命令を送ることによって、ストレージ内に閉じてデータを複製する処理を実現可能とするシステムと方法及びプログラムを提供する事にある。
【００２４】
本発明のさらに他の目的は、通常のストレージ装置を利用してネットワークの転送量を削減したレプリケーションを行う事が出来る、システムと方法及びプログラムを提供する事にある。
【００２５】
本発明のさらに他の目的は、サーバがストレージに対して通常の書き込み・読みこみ等の命令を発行するだけで、転送量が削減されたシステムと方法及びプログラムを提供する事にある。
【００２６】
本発明のさらに他の目的は、ＲＡＩＤ５におけるパリティのような復元のためのデータが付与された書き込み命令のレプリケーション処理を、レプリケーション先において復元するのに必要最小限のデータのみを転送して実現できるシステムと方法及びプログラムを提供する事にある。
【００２７】
本発明のさらに他の目的は、ホストが発行する命令のパターンを分析しなくても、転送量を削減するように命令を変換できるシステムと方法及びプログラムを提供する事にある。
【００２８】
本発明のさらに他の目的は、サーバがストレージに対して、ストレージ内の複製処理等のあらかじめ決められた命令を発行して、その命令をストレージシステムが処理をしてレプリケーションを実現するシステムと方法及びプログラムを提供する事にある。
【００２９】
本発明のさらに他の目的は、レプリケーション先のストレージが保有するデータを、ホスト上で動作するアプリケーションが即座に利用できる状態で保持することが出来るシステムと方法及びプログラムを提供する事にある。
【課題を解決するための手段】
【００３０】
本願で開示される発明は、前記目的を達成するため、概略以下の通りの構成とされる。  本発明の第１の側面（アスペクト）に係るシステムは、レプリケーション元であるストレージ（図１の２）と、レプリケーション先であるストレージ（図１の４）を備え、レプリケーション元のストレージシステムには、ストレージに対して発行された命令を一時格納するバッファリング部（図２の２４）と、バッファリング部に格納された命令を転送に適した命令に変換する、転送用命令への変換部（図２の２５；「転送用命令変換部」ともいう）を備え、レプリケーション先のストレージシステムには、転送用命令をストレージが実行できる命令に変換する処理を行う、実行用命令への変換部（図２の４２；「実行用命令変換部」ともいう）を備える。
【００３１】
このような構成を採用し、転送用命令への変換部が、バッファリング部に格納されている命令群から、同じデータを複数箇所に書き込みを行う命令の組み合わせ（図８）を検出し、同じデータを複数回送らずに済む転送用命令（図９、図１０）に変換する。
【００３２】
そして、レプリケーション元のストレージシステムは、転送用命令を転送し、レプリケーション先で、実行用命令への変換部が実行用命令に変換して、レプリケーション先のストレージに適用する。
【００３３】
これにより、本発明の第１、第２及び第５の目的を達成する事が出来る。
【００３４】
本発明の第２の側面（アスペクト）に係るシステムは、レプリケーション元であるストレージ（図１の２）とレプリケーション先であるストレージ（図１の４）を備え、レプリケーション元のストレージシステムには、ストレージに対して発行された命令を一時格納するバッファリング部（図２の２４）と、バッファリング部に格納された命令を転送に適した命令に変換する転送用命令変換部（図２の２５）を備える。レプリケーション先のストレージシステムには、転送用命令をストレージが実行できる命令に変換する処理を行う実行用命令変換部（図２の４２）を備える。このような構成を採用し、転送用命令変換部がバッファリング部に格納されている命令群から、ストレージに既に存在するデータを書き込む命令群（図１４、図１５）を発見し、ストレージに既に存在するデータを利用して目的の命令を実現する転送用命令（図１７、図１８）に変換する。そして、レプリケーション先のストレージシステムで、実行用命令変換部が、実行用命令（図１９）に変換して、レプリケーション先のストレージに適用する。これにより、本発明の第１、第３及び第５の目的を達成する事が出来る。
【００３５】
本発明の第３の側面（アスペクト）に係るシステムは、レプリケーション元であるストレージ（図３２の２）とレプリケーション先であるストレージ（図３２の４）を備え、命令受信・変換層（図３２の７０、８０）を備える。そして、レプリケーション元の命令受信・変換層には、ストレージに対して発行された命令を一時格納するバッファリング部（図３３の２４）と、バッファリング部に格納された命令を転送に適した命令に変換する転送用命令変換部（図３３の２５）を備える。レプリケーション先のストレージシステムには、転送用命令をストレージが実行できる命令に変換する処理を行う実行用命令変換部（図３３の４２）を備える。このような構成を採用し、第１あるいは第２のレプリケーションシステムと同じ動作をすることによって、本発明の第１、第２、第３、第４及び第５の目的を達成する事ができる。
【００３６】
本発明の第４の側面（アスペクト）に係るシステムは、第１、第２及び第３のレプリケーションシステムと同じ構成を持つ。このような構成を採用し、転送用命令変換部がバッファリング部に存在する冗長化情報が付与された書き込み命令（図１２）を、レプリケーション先で復元できるデータを削除した転送用命令（図１３）に変換してレプリケーション先のストレージシステムに転送する。そして、レプリケーション先のストレージシステムで転送用命令を元の書き込み命令に復元し、適用処理を行う。これにより、本発明の第１、第５及び第６の目的を達成する事ができる。
【００３７】
本発明の第５の側面（アスペクト）に係るシステムは、レプリケーション元であるストレージ（図１の２）とレプリケーション先であるストレージ（図１の４）を備える。そして、レプリケーション元のストレージシステムには、ストレージに対して発行された命令を一時格納するバッファリング部（図１６の２４）と、バッファリング部に格納された命令を転送に適した命令に変換する転送用命令変換部（図１６の２５）、ホスト１に接続された記憶部（図１６の１３）を備える。レプリケーション先のストレージシステムには、転送用命令をストレージが実行できる命令に変換する処理を行う実行用命令変換部（図１６の４２）を備える。このような構成を採用し、転送用命令変換部がホスト１に接続された記憶部あるいはストレージ２の記憶部に対して書き込まれるシステムログ情報をモニタリングして、転送量を削減できる処理が行われるかどうかを検知する。そして、その情報を利用して、転送用命令への変換を行う。これにより、本発明の第７の目的を達成する事ができる。
【００３８】
本発明の第６の側面（アスペクト）に係るシステムは、レプリケーション元であるストレージ（図１の２）とレプリケーション先であるストレージ（図１の４）を備える。そして、レプリケーション元のストレージシステムには、ストレージに対して発行された命令を一時格納するバッファリング部（図２３の２４）と、バッファリング部に格納された命令を転送に適した命令に変換する転送用命令変換部（図２３の２５）、ホストに接続された記憶部（図２３の１３）を備える。レプリケーション先のストレージシステムには、転送用命令をストレージが実行できる命令に変換する処理を行う実行用命令変換部（図２３の４２）を備える。そして、ホストやストレージを監視する監視手段（図２３の７）を備える。このような構成を採用し、監視手段がホストの発行するストレージへの命令を監視して発行した再開可能点通知、あるいはホストが発行した再開可能点通知を、転送用命令変換部が転送契機として利用して、転送処理を行う。そして、受信したレプリケーション先のストレージシステムにおいて、実行用命令変換部４２が再開可能点通知までの命令を全て受信したことを確認し、依存関係のある命令は発行順に並び替えてからストレージへの適用処理を行う。これにより、本発明の第９の目的を達成する事ができる。
【００３９】
本発明の第７の側面（アスペクト）に係るシステムは、レプリケーション元であるストレージ（図３５の２）と、レプリケーション先であるストレージ（図３５の４）と、レプリケーション元のストレージを利用するホスト（図３５の１）と、命令受信層（図３５の５１，５２）を備える。そして、レプリケーション元の命令受信層には、受信した命令をストレージが実行できる命令に変換する命令変換部（図３６の５１２）、レプリケーション先の命令受信層には、転送用命令をストレージが実行できる命令に変換する処理を行う実行用命令変換部（図３６の５２２）を備える。このような構成を採用し、ホスト１はあらかじめ定義された、通常の命令よりも転送量を削減できる命令（図３７、図３８）を発行し、レプリケーション元の命令実行部がそれをストレージが実行できる形の命令（図３９、図４３）に変換してストレージに対して渡す。レプリケーション先への転送はホストが発行した転送量を削減できる命令のまま転送し、レプリケーション先の命令変換部がストレージの実行できる形の命令に変換し、レプリケーション先のストレージに渡す。これにより、本発明の第７、第８の目的を達成する事ができる。
【００４０】
本発明の他の側面に係る方法は、レプリケーションに際して、レプリケーション元からレプリケーション先へ転送されることになる１つ又は複数の命令をそのまま転送するかわりに、前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換する工程と、
前記変換した転送用命令を、前記レプリケーション元から前記レプリケーション先に転送する工程と、
を含む。
【００４１】
本発明の他の側面に係るプログラムは、レプリケーション元からレプリケーション先へのレプリケーションシステムを構成するコンピュータに、レプリケーションに際し、レプリケーション元からレプリケーション先へ転送されることになる１つ又は複数の命令をそのまま転送するかわりに、前記１つ又は複数の命令を、レプリケーションにおけるデータ転送総量が、前記レプリケーション元から前記レプリケーション先へ前記１つ又は複数の命令をそのまま転送する場合のデータ転送総量よりも少なくする形式の１つ又は複数の転送用命令に変換する処理と、前記変換した転送用命令を、前記レプリケーション元から前記レプリケーション先に転送する処理と、を実行させるプログラムよりなる。
【発明の効果】
【００４２】
本発明の第１の効果は、同じ内容のデータを異なる場所に対して書き込みを行う場合に、データ転送量を減らせる、ことである。その理由は、本発明においては、同じ内容のデータを複数の場所に書き込ませる命令で、データ本体を一つで済ませるためである。
【００４３】
本発明の第２の効果は、既にレプリケーション先のストレージが保持しているデータをレプリケーション先ストレージの他の箇所に書き込む場合にデータ転送量を減らせることである。
【００４４】
その理由は、ストレージに既に存在するデータを書き込む命令群を、レプリケーション先のストレージに既に存在するデータを他の箇所に複製する命令にて変換し、実データの転送を行なわないためである。
【００４５】
本発明の第３の効果は、レプリケーションシステムが必要とするネットワーク帯域を低くできることにある。
【００４６】
その理由は、第１、第２の効果及び後述の第７の効果による。
【００４７】
本発明の第４の効果は、同じ内容のデータを異なる場所に対して書き込みを行う複数の命令が存在するときに、データ転送回数を減らすことが出来ることにある。
【００４８】
その理由は、複数の書き込みを同じ内容のデータを複数の場所に書き込ませる一つの命令に変換し、転送するためである。
【００４９】
本発明の第５の効果は、通常のストレージ装置を利用してネットワークの転送量を削減したレプリケーションを行う事が出来ることにある。
【００５０】
その理由は、ホストとストレージの間に命令受信・変換層を保持し、本発明による機能を命令受信・変換層で行うことにより、第１・２の効果を得る事が出来る為である。
【００５１】
本発明の第６の効果は、サーバ上で動作しているアプリケーションに改変を加えず、また新たにアプリケーションで機能開発をする必要が無いままに、ネットワークの転送量を削減したレプリケーションを行う事が出来ることにある。
【００５２】
その理由は、ストレージに対して発行された命令を一時格納するバッファリング部と、バッファリング部に格納された命令を転送に適した命令に変換する転送用命令変換部を備え、サーバが通常発行する書き込み・読みこみの命令から、転送に適した命令に変換し、第１・２の効果を得る事が出来る為である。
【００５３】
本発明の第７の効果は、ＲＡＩＤ５におけるパリティのような復元のためのデータが付与された書き込み命令のレプリケーション処理を、レプリケーション先において復元するのに必要最小限のデータのみを転送して実現できることである。
【００５４】
その理由は、復元のための情報が付与された書き込み命令を、レプリケーション先で復元できるデータを削除した転送用命令に変換してレプリケーション先のストレージシステムに転送する。そして、レプリケーション先のストレージシステムで転送用命令を元の書き込み命令に復元し、適用処理を行うためである。
【００５５】
本発明の第８の効果は、サーバが発行する命令のパターンを分析しなくても、転送量を削減するレプリケーションシステムを実現できることである。
【００５６】
その理由は、ホストに接続された記憶部あるいはストレージの記憶部に対して書き込まれるシステムログ情報を監視することにより、データ転送量を削減できる処理が行われたかどうかを認識する。そして、その情報を利用して転送用命令への変換を行うためである。また、後述の第１０の効果による。
【００５７】
本発明の第９の効果は、非同期にレプリケーションを行なうシステムにおいて、被災後の処理を最小に出来ることである。
【００５８】
その理由は、アプリケーションが指定した再開可能点を契機として転送を行なうため、レプリケーション先のストレージが再開可能点でのレプリケーション元のストレージのデータの状態になり、アプリケーションが被災後の処理が最小となるストレージ状態で再開可能点を通知することで被災後の処理を最小に出来るためである。
【００５９】
本発明の第１０の効果は、サーバがレプリケーションにおいて転送量を削減する為の特殊な命令を発行して、その命令をストレージシステムが処理をしてレプリケーションを実現できることにある。
【００６０】
その理由は、サーバはあらかじめ定義された、通常の命令よりも転送量を削減できる命令を発行し、ホストとストレージ間の命令受信層がその命令をストレージが実行できる形の命令に変換してストレージに対して渡す。そして、レプリケーション先への転送はホストが発行した転送量を削減できる命令のまま転送し、レプリケーション先の命令受信層がストレージの実行できる形の命令に変換し、レプリケーション先のストレージに渡すためである。
【００６１】
本発明の第１１の効果は、転送量を削減する為のストレージにおける処理の演算量を削減できることにある。
【００６２】
その理由は、第２の効果を得る為に命令を比較する際に、データの内容が一致しているかどうかを判断すればよいため、圧縮などを行うよりも演算量を削減できるためである。
【００６３】
本発明の第１２の効果は、既存のアプリケーションが動作するサーバと既存のストレージに対して導入する事で、通信ネットワークのコストを低くしたレプリケーションシステムを実現する事ができることにある。
【００６４】
その理由は、第３、第５の効果と同一である。
【発明を実施するための最良の形態】
【００６５】
本発明の実施形態について図面を参照して詳細に説明する。
【００６６】
本発明の第１の実施形態について説明する。本発明の第１の実施形態は、ストレージシステム内で命令をバッファリングし、転送用命令へ変換する。図１は、本発明の第１の実施形態のレプリケーションシステムの構成を示す図である。第１の実施形態のレプリケーションシステムは、ホスト１、ストレージ２、ネットワーク３、ストレージ４を有し、サービスを提供するコンピュータシステムである。ストレージ２とストレージ４はネットワーク３を介して接続されている。
【００６７】
ストレージ２、４は、データを格納する記憶装置である。一例として、ストレージ２、４は、単体のディスク装置、あるいは複数のディスク装置からなるディスクアレイ装置であってもよい。また、他の例として、ストレージ２、４は、光磁気装置あるいはそれらの集合であるアレイ装置であってもよい。さらに他の例として、ストレージ２、４は、単体あるいは複数の半導体メモリによる記憶装置であってもよい。あるいは、ストレージ２、４はこれらの複数の装置の組み合わせであってもよい。例えば、高価なディスクアレイ装置と、比較的安価なディスクアレイ装置、テープライブラリの３つから成り立つシステムがあげられる。
【００６８】
ホスト１は、本コンピュータシステムで運用されるサービスを実現するアプリケーション、データベース等のミドルウェア、オペレーティングシステム等を動作させるコンピュータであり、ストレージ２を利用して処理を行う。図１において、ホスト１は単体のコンピュータとして記述されているが、複数あってもよい。
【００６９】
ストレージ４は、ストレージ２のデータを複製して保持し、必要に応じて利用する。ストレージ２はホスト１上で動作するプログラムによって、作成や利用されるデータを格納する。ストレージ２は格納されているデータの複製を、ネットワーク３を介してストレージ４上に保持させる。
【００７０】
ストレージ４に複製を作成する目的は、どんな理由でも構わないが、例えばストレージ２のバックアップデータとして利用することが挙げられる。例えば、ホスト１やストレージ２に何らかの障害が発生した際に、ストレージ４に保持されているデータを利用して、ストレージ４に接続されているホスト（ホスト１でも良いし、あらかじめ接続された別のホストでもよいし、障害後に新たに接続するホストでもよい）とストレージ４を用いて、ホスト１とストレージ２で提供したサービスを障害後にも継続して提供する。他にも、ストレージ２の過去のある時点のデータをストレージ４にバックアップとして保持するためや、データマイニング等の他のアプリケーションのデータとして利用する為等がある。
【００７１】
ネットワーク３は、インターネットまたは専用線等の通信ネットワークであり、ストレージ２とストレージ４間を接続する。また、ホスト１とストレージ２の間も同様に通信ネットワークにより接続される。ここで用いられる通信ネットワークは、例えば、ＳＣＳＩ、ファイバーチャネル（ＦＩＢＲＥ  ＣＨＡＮＮＥＬ）、ＡＴＡ、Ｓ−ＡＴＡ、イーサネット（登録商標）（ＥＴＨＥＲＮＥＴ（登録商標））、ＩＮＦＩＮＩＢＡＮＤ等である。
【００７２】
なお、図１では、ホスト１、ストレージ２、ストレージ４が１つずつの場合が示されているが、各要素はそれぞれ複数であってもよい。例えば、ストレージ２の複製先であるストレージ４が２つあってもよい。
【００７３】
図２は、第１の実施の形態におけるホストおよびストレージの詳細な構成を示すブロック図である。
【００７４】
図２を参照すると、ホスト１は、命令発行部１１を備える。命令発行部１１は、ホスト１上で動作するアプリケーション、データベース等のミドルウェア、オペレーティングシステム等がＷＲＩＴＥやＲＥＡＤ等の命令、あるいはその他の制御命令等の発行を行う。
【００７５】
レプリケーション元のストレージシステム２（単に「ストレージ２」ともいう）は、命令受信部２１、命令実行部２２、記憶部２３、バッファリング部２４、転送用命令への変換部（単に「転送用命令変換部」という）２５、転送送信部２６を備える。これらの要素は、ストレージ２として一体に構成されてもよく、あるいは、分散配置された構成としてもよい。また、これらの要素は、ストレージシステム２を構成するコンピュータのプログラムによってその機能を実現するようにしてもよいことは勿論である。
【００７６】
命令受信部２１は、命令発行部１１が発行する命令を受信する。
【００７７】
命令実行部２２は、命令受信部２１が受信した命令を記憶部２３に対して実行し、必要あれば、結果をホスト１に返す。例えば、命令発行部１１が発行したＷＲＩＴＥ命令を命令受信部２１が受信し、命令実行部２２は、その受信したＷＲＩＴＥ命令を記憶部２３に対して適用する。命令が完了すれば、完了通知をホスト１に返す。
【００７８】
記憶部２３は、ストレージシステム２が保存するデータを格納する記憶媒体であり、データを蓄積する機能を有する。
【００７９】
バッファリング部２４は、命令受信部２１が受信した命令を一時格納する記憶媒体である。
【００８０】
転送用命令変換部２５は、バッファリング部２４に一時格納されている命令群を転送用命令に変換し、転送送信部２６へ渡す。転送する直前に変換してもよいし、必要分が集まったら、直ちに変換し、蓄積していてもよい。
【００８１】
転送送信部２６は、転送用命令変換部２５から受け取った、転送用命令をレプリケーション先のストレージシステム４へ転送する機能を持つ。
【００８２】
レプリケーション先のストレージシステム４（単に「ストレージ４」ともいう）は、転送受信部４１と、実行用命令への変換部（単に「実行用命令変換部」という）４２、命令実行部２２、記憶部２３を有する。これらの要素はストレージ２として一体に構成されてもよく、分散配置された構成としてもよい。また、これらの要素は、ストレージシステム２を構成するコンピュータのプログラムによってその機能を実現するようにしてもよいことは勿論である。以下に説明する変形例、他の実施形態についても同様である。
【００８３】
転送受信部４１は、ストレージシステム２の転送送信部２６から送られてくる転送用命令を受信する。そして、受信した転送用命令を、転送命令バッファリング部４５に渡す。
【００８４】
実行用命令変換部４２は、受信した転送用命令を転送命令バッファリング部４５から取り出して解析し、実行用命令に変換する。変換する実行用命令は、ストレージシステム２が元々受信した命令とそのまま同じものでもよいし、論理的に同じ結果となる別の命令でもよいし、バックアップストレージに書き込む為に最適化された別の命令であってもよい。そして、変換した実行用命令を、命令実行部４３へ渡す。なお、受信した転送用命令を命令実行部４３がそのまま実行できる場合、実行用命令変換部４２による変換は不要とされる。
【００８５】
命令実行部４３は、実行用命令を受信して、記憶部４４に対して適用する機能を果たす。命令実行部４３は、ストレージ２の命令実行部２２と同様の構成であってもよい。
【００８６】
記憶部４４は、ストレージ２の記憶部２３と同様に、データを格納する記憶媒体であって、データを蓄積する機能を果たす。記憶部４４も、ストレージ２が保持している記憶部２３ものと同様の機能を果たすことになる。ただし、ストレージ２の保持している記憶部２３と物理的に完全に同じものを保持している必要はない。例えば、ストレージ２よりも安価なディスクを用いたストレージシステムをストレージ４に採用してもよい。
【００８７】
転送命令バッファリング部４５は、転送受信部４１が受信した命令を一時格納する記憶媒体である。
【００８８】
図３は、本発明の第１の実施形態のシステムのレプリケーション動作のうち、レプリケーション元のストレージシステム２の動作を説明する為のフローチャートである。以下の動作例は、ホスト１の命令発行部１１がストレージ２に対して何らかの命令を発行したとする。ここで、命令とは、ストレージ２からデータを読み出すＲＥＡＤ等のコマンド、ストレージ２に対してデータを書き込むＷＲＩＴＥ等のコマンド、その他にはストレージ２に対して何らかの制御を行う制御コマンド等がある。
【００８９】
まず、ホスト１の命令発行部１１が発行した命令を、ストレージ２の命令受信部２１が受信する（ステップＡ１）。
【００９０】
次に、ストレージ２の命令実行部２２は、命令受信部２１が受信した命令を実行し、必要あれば、ホスト１に対して命令の結果を返す。命令の結果を返す処理は、命令受信部２１を介して行っても良いし、命令実行部２２が直接ホスト１に対して返しても良い。例えば、ＷＲＩＴＥコマンドの場合、記憶部２３に対して、ＷＲＩＴＥコマンドの内容の書き込みを行い、書き込みが完了した後に、ホスト１に対して書き込み完了の旨を通知する。また、ＲＥＡＤコマンドの場合には、記憶部２３から該当アドレスの情報を読み取り、ホスト１に対して読み取った情報を返す（ステップＡ２）。
【００９１】
また、ホスト１に対して結果を返す処理は、命令受信部２１がキャッシュを保持することによってステップＡ１において行ってもよい。
【００９２】
ステップＡ２の後、命令受信部２１が受信した命令を、バッファリング部２４に蓄積する（ステップＡ３）。蓄積方法は任意である。
【００９３】
しかし、ストレージ２の記憶部２３に対する更新順序を保証するには、命令が到着した順序を記憶あるいは管理しておく必要がある。具体的な方法としては、
・ＦＩＦＯ（ＦＩＲＳＴ−ＩＮ  ＦＩＲＳＴ−ＯＵＴ）で処理を行うキューで保存しておく、
・命令に到着の番号を付ける、
・何らかの方法で命令を識別して到着順を管理するテーブルを作成する、
等がある。
【００９４】
また、受信した命令の全てをバッファリング部２４に保存してもよいし、
ＷＲＩＴＥ等の書き込みを伴う命令のみ、ある一定の領域に対する命令のみ、等のように特定の命令のみを蓄積してもよい。
【００９５】
これは、転送する必要がある命令と、次に説明する図６のステップＡ５において、転送用命令変換部２５が、解析に利用する材料として必要な命令を蓄積していればよいということである。
【００９６】
次に、転送処理を開始するかどうかの条件判定を行う（ステップＡ４）。
【００９７】
転送処理開始の条件はどのようなものでもよい。例えば、
・転送用命令変換部２５がバッファリング部２４にある一定以上の命令が溜まったことを検知した時、
・転送用命令に変換することによって高い効果が得られるアクセスパターンを検知した時、
・転送用命令へ変換できる命令の組み合わせが到着した時、
・前回の転送処理より一定時間が過ぎた時、
・前回の転送処理が終わった時等に、
転送処理を開始するという方法がある。
【００９８】
ステップＡ４の結果がＮＯで、転送処理を開始しない場合には、再度、命令受信部２１がホスト１から命令を受信するのを待ち、新たな命令を受信後、ステップＡ１へ戻る。
【００９９】
ステップＡ４の結果、転送処理を開始する場合には、次の処理に進む。ここでは、転送用命令変換部２５は、バッファリング部２４のデータを解析し、転送用命令変換部２５のもつ変換アルゴリズムによって、バッファリング部２４に蓄積されている命令を、転送用命令へ変換する。そして、変換した転送用命令は転送送信部２６へ渡す（ステップＡ５）。変換アルゴリズムについては、後に説明する。
【０１００】
転送送信部２６は、転送用命令変換部２５から受け取った転送用命令を、ストレージ４へネットワーク３を介して転送する（ステップＡ６）。
【０１０１】
転送用命令の送信は、
・転送用命令変換部２５から受け取って直ぐ送ってもよいし、
・ある程度、転送送信部２６で蓄積してから、送ってもよい。
【０１０２】
ここで、ステップＡ２とステップＡ３ーＡ６の間には、因果関係が無い為、ステップＡ２より先に、ステップＡ３から処理を行っても良いし、同時並行的に処理を行ってもよい。また、ステップＡ２において、ホスト１に対して結果を返す処理を行っているが、この結果を返す処理も、ステップＡ２の終了後ではなく、他のステップのいずれのタイミングでもよい。特に、ステップＡ６において、ストレージ４へ転送用命令が転送完了した後に、ホスト１へ結果を返す処理を行う場合には、ストレージ４へのデータ転送が保証されるため同期レプリケーションの特性を持つ事となる。
【０１０３】
従って、ストレージ２のみに障害が発生した際に、データを失わないことを保証できる。
【０１０４】
また、ステップＡ１−Ａ３、Ａ４−Ａ６は、独立した動作として処理を行っても良い。その場合のフローチャートは、図４、図５に示す。
【０１０５】
図４は、命令受信部２１、命令実行部２２、記憶部２３を中心とした、ホスト１から発行される命令を受信して記憶部２３に適用させる流れであり、図５は、データ転送を行う流れを示した図である。個々のステップに関しては図３のものと同一である。
【０１０６】
次に、図６を用いて、レプリケーション先のストレージシステム４の動作について説明する。まず、ストレージ４の転送受信部４１は、レプリケーション元のストレージシステム２の転送送信部２６によって送信された転送用命令を受信する（ステップＢ１）。
【０１０７】
次に、実行用命令変換部４２は、転送受信部４１が受信し、転送命令バッファリング部４５に格納されている転送用命令を、変換アルゴリズムに従って、実行用命令に変換する（ステップＢ２）。変換アルゴリズムの一例として、ステップＡ５において利用している変換アルゴリズムの逆変換を行い、元の命令に復元するアルゴリズムがある。または、元の命令に復元するのではなく、バックアップストレージであるストレージ４の構成に基づいて、最適化した命令に変換してもよい。例えば、メインサイトのレプリケーション対象向けの領域（パーティション、ボリューム等）に書き込まれるように変換する、あるいは安価なストレージシステムあるいはディスクに書き込まれるようにするなどがある。
【０１０８】
次に、命令実行部４３は、変換された実行用命令を解釈し、記憶部４４に対して適用する（ステップＢ３）。命令実行部４３は、ストレージ２の命令実行部２２と同様に、ホスト１から通常に発行される命令を実行する機能があればよい。また、命令実行部４３が、受信した転送用命令を独自に実行できる機能を持っていてもよいが、変換アルゴリズムや転送用命令の変換パターンを解釈できる独自の命令実行部である必要がある。その場合には、実行用命令変換部４２は必要なく、受信した転送用命令を直接、命令実行部４３で実行できる。
【０１０９】
図７は、図３、図６のフローチャートにて示した、ホスト１、ストレージ２、ストレージ４の装置間の動作を示すシーケンス図である。図７は、まず、一度目のステップＡ４（図３参照）の判定がＮＯで、二度目のステップＡ４（図３参照）の判定がＹＥＳの場合を示す。図７を参照すると、まずホスト１は、ストレージ２に対して命令を発行する。
【０１１０】
ストレージ２は命令を受信し、図３のステップＡ１ーＡ２の処理を行い、その結果をホスト１に返す。
【０１１１】
ストレージ２は次にステップＡ３の処理を行った後、ステップＡ４で転送処理を行うかどうかの判定を行う。
【０１１２】
一度目のステップＡ４は、転送処理を行う必要が無い場合であるので、再びホスト１から命令が送られるのを待つ。
【０１１３】
さらに、ホスト１から命令が発行されると、ストレージ２は命令を受信して、ステップＡ１−Ａ２の処理を行い、その結果をホスト１に返す。
【０１１４】
そして、ステップＡ３の処理を行い、再びステップＡ４の条件判定を行う。今回は転送処理を行う場合であるので、ストレージ２はステップＡ５−６の処理を行い、変換した転送用命令をストレージ４に対して送る。
【０１１５】
そして、ストレージ４は変換した転送用命令を受信し、ステップＢ１−３の処理を行う。
【０１１６】
次に、第１の実施の形態のステップＡ５とステップＢ２における、変換アルゴリズムについて説明する。
【０１１７】
まず、図３のステップＡ５における変換処理（転送用命令への変換処理）について説明する。
【０１１８】
図８は、ストレージ２のバッファリング部２４に２種類の未転送命令が格納されていることを示す図である。
【０１１９】
本実施の形態では、ホスト１から発行される命令は、少なくとも命令の種類（命令Ａ）、命令の対象アドレス（アドレスＡ、アドレスＢ）、命令のデータ（データＡ）を所持する。例えば、ＳＣＳＩのＣＤＢコマンドの場合、図における命令の種類は、ＯＰＥＣＯＤＥ等であり、命令の対象アドレスはＬＢＡ等であり、命令のデータは、ＷＲＩＴＥコマンドにおける書き込みデータや、ＤＡＴＡ−ＩＮコマンドのデータである。
【０１２０】
本実施の形態では、図８に示すように、同じ命令を違う対象アドレスに対して行わせる１組の命令が格納されている。これは、例えば、同じデータを複数のアドレスに書き込むような状況で出現する。さらに具体的には、データベースのジャーナルログのような、ホスト側で信頼性向上の為に同じファイルを複数作成するような状況である。
【０１２１】
転送用命令変換部２５は、変換処理において、バッファリング部２４内に、図８に示されるような２種類の命令が格納されていないか検索する。このような一組の命令を発見すると、転送用命令変換部２５は、図８に示される命令を、図９に示される転送用命令へ変換する。
【０１２２】
図９は、変換した転送用命令の構成を示す図である。転送用命令は、少なくとも、図８の２つの命令に共通している命令ＡとデータＡを含み、対象アドレスとしてアドレスＡ、アドレスＢの２つを含む形となる。
【０１２３】
あるいは、図１０のような転送用命令に変換してもよい。この場合、一度目の命令（命令Ａ、アドレスＡ、データＡ）はそのまま送り、２回目の命令のデータＡの実体を送らない。２回目の命令では、データＡの実体を送らない代わりに、データＡへのポインタ（データＡが書き込まれている先のアドレス等）を指定する。例えば、転送用命令の転送順が確保されているのならば、データＡは、２回目の命令を処理する際にはアドレスＡから先に書き込まれている為、アドレスＡをポインタとして示す。また、あるいは、一回目の転送用命令のデータ（データＡ）を示すことによっても可能である。この場合には、一回目の転送用命令のＩＤ等を示せばよい。
【０１２４】
次に、ステップＢ２における変換アルゴリズムについて説明する。ステップＢ２では、転送受信部４１が受信した転送用命令を、実行用命令変換部４２が命令実行部４３に実行させたい命令に変換するステップである。ここでは、図９に示される転送用命令が送られてきたとする。実行用命令変換部４２は、受信した転送用命令を分解し、図８に示される実行用命令に戻す。
【０１２５】
また、実行用命令に戻す際には、ストレージ２と完全に同じ構成で復元するのではなく、片方のアドレスは安価なディスクを使うように片方のアドレス（例えばアドレスＢを別のアドレスＣに）を変換するようなことをしても良い。その場合、実行用命令変換部４２に対して、前もって指示しておけばよい。例えば、アドレス変換テーブルを用意する等である。この場合、実行用命令だけでなく、元々変換する必要のない命令に対して規則を設定して、変換処理をしてもよい。
【０１２６】
実行用命令変換部４２が、受信した命令が転送用命令であり、変換すべき命令であることを検知するには、様々な方法がある。例えば、転送用命令の命令種類を命令Ａでなく、命令Ａ’のような命令コードを設定しておき、そのような命令の場合には、決められた変換を行う方法がある。また、他にも、変換すべき命令であるかどうかのフラグを付ける方法でもよい。さらに、転送用命令に含まれるアドレスが、実行用命令変換部４２に指定されたアドレス範囲に含まれる場合に変換処理を行う方法でもよい。
【０１２７】
また、ステップＡ５における変換処理において、変換される転送用命令が他の命令をまたいでいる場合（例えば、図８に示される２つの命令の間に、関係の無い命令を挟んでいる）に、その更新順序を正しく保証しなければならない場合には、その順序を元に戻す事が出来るよう、変換する転送用命令に対して情報を付与する必要がある。そして、転送命令バッファリング部４５に、その挟まれた命令が格納されるのを待ち、順序を調整してから、命令実行部４３は記憶部４４に対して適用する。あるいは、その間に付与されている情報も１つの転送用命令としてまとめてしまうことによって、更新順序を保証する。
【０１２８】
転送命令バッファリング部４５は、上記の順序を調整する処理を行わない場合には、特別必要ではない。つまり、ストレージ４が受け取った順に処理をしてよい場合には、転送受信部４１が直接実行用命令変換部４２に渡して処理をしてもよい。あるいは、ストレージ２の転送用命令変換部２５や、転送送信部２６が、順序を入れ替える必要が無いように転送処理を行っても良い（ストレージ４の受信を確認後、次の処理を行うなど）。
【０１２９】
第１の実施形態の作用効果について説明する。既存の方式で、図８に示される元の命令を転送する場合には、命令ＡとデータＡを２回送らなければならなかった。しかし、このように、転送用命令に変換して転送することにより、２つの命令に重複するデータＡは、一回転送するだけで、データ転送を完了することができる。従って、ネットワークの利用帯域を該当するデータに対してほぼ半分に減らすことが出来る。
【０１３０】
また、元の複数回の命令を１つの転送用命令へ変換する構成とすることで、命令を転送する毎に必要な通信処理が削減される。従って、より高いスループットを得る事が出来る。
【０１３１】
また、ホスト１のアプリケーション、データベース、オペレーティングシステム等が、レプリケーションの転送量を削減する為に特殊な命令を発行する必要がない。そのため、本実施形態の効果を得る為に、アプリケーションの改変を行うこと、データベースやオペレーティングシステムの設定、データの構成等について変更をする必要がない。
【０１３２】
また、ホスト１から受信した命令は、一旦、バッファリング部２４に蓄積される。転送処理を行う前に、ホスト１から受信した命令は記憶部２３に対して実行され、その結果をホスト１に返す。従って、ホスト１のアプリケーションにとってストレージ４にレプリケーションを行うことによる影響を受けない。
【０１３３】
また、命令実行部２２、記憶部２３は、ストレージ２、ストレージ４双方において、ホスト１が一般に発行する命令を実行する機能を保持していればよいため、既存のストレージシステムと同様のものを利用できる。
【０１３４】
また、ストレージ４の実行用命令変換部４２において、命令の変換処理を行う事が出来る為、ストレージ４の構成にとって最適な記憶箇所に、ストレージ４側で変換することによって書き込みを行う事が出来る。
【０１３５】
また、転送命令バッファリング部４５に、転送受信部４１が受け取る命令を一時バッファリングすることによって、転送用命令によって入れ替わる可能性がある更新順序を保証することができる。
【０１３６】
また、転送用命令へ変換する際に、そのデータ部分のみを比較して変換処理を行えばよいため、通常の圧縮処理を行うよりも、圧縮時と復元時において演算量が少なくて済む。
【０１３７】
なお、ホストからの複数の命令（図８）を、１つの転送用命令（図９）に変換する例について説明したが、本発明は、ホストからの複数の命令の個数（ｎ個）をｎ＋１個以上の転送用命令に変換することで、データ転送量を減少させるようにしてもよいことは勿論である。ホストからの命令（元の命令）が、例えば図４８に示す形式の命令（命令Ａ、アドレスＡ、データＡ）よりなり、データＡが、データａ１を複数回の繰り返し（図４８では３回）を含んで構成される場合、次のような転送用命令に変換される。すなわち、
最初の命令は、
（命令Ａ、アドレスＡ，データａ１）の形式よりなり、
次に命令は、
（命令Ａ、アドレスａ２、データａ１へのポインタ）よりなり、
次の命令は、
（命令Ａ、アドレスａ３、データａ１へのポインタ）
よりなり、計３つの命令に変換することで、データ転送量は、もとの１／３となる。
【０１３８】
また、図４９に示すように、元の命令（図４８の元の命令と同一）を変換した転送用命令として、（命令Ａと、アドレスＡ、アドレスａ２、アドレスａ３、データａ１）としてもよい。この場合、データａ１は一回のみ転送されるだけであり、元のデータａ１を３回転送することは回避される。
【０１３９】
また、図５０に示すように、元の命令が（命令Ａ  アドレスＡ、データＡ）よりなり、データＡが、データｂ、データａ１、データｂ、データａ１、アドレスＣ、データａ１を含む場合を、図１０の形式にしたがって、６つの転送用命令、
（命令Ａ、アドレスＡ、データｂ）、
（命令Ａ、アドレスａ１、データａ１）、
（命令Ａ、アドレスｂ、データｂへのポインタ）、
（命令Ａ、アドレスａ２、データａ１へのポインタ）、
（命令Ａ、アドレスｃ、データｃ）、
（命令Ａ、アドレスａ３、データａ１へのポインタ）
のように変換してもよい。この場合、元の命令のデータｂは、変換後の転送用命令として、データｂとそのポインタの２つの命令に変換されて転送量は、元の命令の１／２とされ、データａ１の転送量は元の命令の１／３となる。
【０１４０】
図５１に示すように、元の命令（図５０と同一）を、
（命令Ａ、アドレスＡ、アドレスｂ、データｂ）
（命令Ａ、アドレスａ１、アドレスａ２、アドレスａ３、データａ１）
（命令Ａ、アドレスｃ、データｃ１）
のように変換してもよい。すなわち、同一データｂをアドレスＡとアドレスｂに書き込み命令と、データａ１をデータａ１、ａ２、ａ３を書き込む命令、データｃをアドレスｃに書き込む命令に変換する。
【０１４１】
本実施形態において、命令は、上記した命令、アドレス、データ（又はポインタ）等の形式に制限されるものでないことは勿論である。すなわち、コマンド部（オペコード）、アドレスなどの制御情報、データ部分の形式に限定されず、データと制御情報からなる構成としてもよい。また、データ部分は圧縮したデータであってもよいし、加工、変換処理されたものであってもよい。またコマンド部を簡略化してもよく、レプリケーションで転送される命令はＷｒｉｔｅ系の命令であるため、コマンド部を省略してもよい。
【０１４２】
また、レプリケーション元とレプリケーション先の差分情報を管理しておき、差分情報のみを転送する構成としてもよい。例えば図５２に、差分情報の転送用命令のデータ部分を示す。更新データと制御情報を対として含む。制御情報は、論理ディスク番号、論理ブロックアドレス、データ長を含む構成としてもよい。
【０１４３】
また、図８、図９、図１０の命令において、データ部は、コマンド部と一体の即値データとする形式の命令であったもよいし、コマンド部と、データ部とが分離された形式であってもよい。
【実施例】
【０１４４】
次に、本発明の第１の実施形態の実施例について述べる。本発明を利用するレプリケーションシステムにおいて、ホスト１上でデータベースを動作させているものとする。ホスト１は、データベースのデータの保存先として、ストレージ２を利用し、そのデータをストレージ４に対して、ネットワーク３を介して、レプリケーションを行っている。
【０１４５】
一般に、データベースは、データとしてジャーナルログを保持し、そのジャーナルログはホスト側で耐障害性向上のために、物理的に異なるディスクへ２重化して保存するよう指示される。２重化して保存する先は、物理的に異なるディスクである場合の他にストレージ側で仮想化されている異なるボリュームであってもよいし、同じディスクへ２重化している場合もある。
【０１４６】
図１１は、ストレージ２内の記憶領域を示す図である。図１１では、ストレージ２は、ボリューム２０１、ボリューム２０２と、複数の記憶領域を保持しているとする。本実施例において、ホスト１上で動作するデータベースプログラムは、ジャーナルログの１つをボリューム２０１へ、もう１つをボリューム２０２へと記録するものとする。ここで、データベースプログラムは、データベースに更新が発生する事に、ジャーナルログに対して追記作業を行うため、命令発行部１１は、追記作業が発生すると、ボリューム２０１とボリューム２０２に対して全く同じデータを書き込む命令を発行する。
【０１４７】
その発行される命令は、図８で示されるような命令の組み合わせであるとする。図８の命令について、本実施例と対応させて説明する。
【０１４８】
命令Ａは、データを書き込む命令であり、アドレスＡはボリューム２０１のアドレス、アドレスＢはボリューム２０２のアドレスとなる。データＡは、書き込まれるデータを指し、２つの命令で共通のデータとなる。
【０１４９】
そして、図８の命令は、図９で示される転送用命令に変換されストレージ４に対して転送される。
【０１５０】
従って、本実施例ではバッファリング部２４へ格納されるデータは書き込みを行う命令のみでよい。また、転送用命令に変換する処理においては、２重化してデータが書き込まれるボリューム、あるいは物理ディスクのアドレスに対する書き込み処理に対してのみ、転送用命令への変換処理が行えるかどうかを検索すればよい。
【０１５１】
また、２重化して書き込まれるデータの対象があるボリュームに対していると決められている場合には、そのボリュームに対して発生するＷＲＩＴＥコマンドは冗長化されていることがわかる為、そのコマンドに対してのみ転送用命令への変換処理を行えばよい。
【０１５２】
本実施例では、データベースのデータ構成により、２重化して同じデータを作成する場合において記述しているが、他にも、ホスト１上で、ミラーリングしているファイルであれば、何にでも適用できる。
【０１５３】
また、１つのボリュームの中に、大きなデータを作成する場合においても、同じデータが繰り返し書き込まれるような書き込みに対しても適用できる。例えば、データベース内の表を保存する領域においては、各行に、同じデータが書き込まれるケースが多いアプリケーションが動作する場合には、そのような書き込みパターンが現れる可能性がある。
【０１５４】
本実施例の作用効果について説明する。第１の実施形態で得られる効果に加え、下記の作用効果を奏する。
【０１５５】
本実施例では、バッファリング部２４に対して格納するデータは、書き込み命令だけで良いので、全てのデータをバッファリング部２４に格納する場合と比較して、バッファリング部２４に必要な容量が少なくて済む。
【０１５６】
また、転送用命令変換部２５で変換対象となる命令が、ある決められたボリュームに対して発行されると決められている場合には、転送用命令変換部２５が走査するバッファリング部２４の量が減少する為、変換処理の速度が向上する。
【０１５７】
次に、第１の実施形態の変形例１について述べる。
【０１５８】
＜第１の実施形態の変形例１＞
変形例１では、ＲＡＩＤ５等の冗長化データを付与した書き込みデータに対して転送量の削減を行う。第１の実施の形態の変形例１の構成は、図１、図２に示される第１の実施の形態の構成と同様であるため説明を省略する。また、図３、図６、図７に示される処理の流れについても、第１の実施の形態と同様である。
【０１５９】
この例では、図３のステップＡ５における変換アルゴリズムが、前記実施形態と相違している。そして、この変形例１では、ホスト１上、または命令受信部２１より上位層で、ＲＡＩＤ５処理をしてストレージ２に対してデータの書き込みを行っているものとする。すると、ホスト１からＲＡＩＤ５処理をされた後に発行される書き込み命令は、図１２で示されるような命令となる。図１２は、図８と同様の命令の形態を簡略化したものである。
【０１６０】
図１２の命令Ｂは、ＲＡＩＤ５処理をされたあとの書き込み処理の為の命令、アドレスＣ−Ｇは、ＲＡＩＤ５処理をされた後に分散されて書き込まれる対象のアドレスを指す。そして、データＢ１ー５は、ＲＡＩＤ５処理をされた後のストライピングされた４つのデータと１つのパリティデータを指す。
【０１６１】
そして、ステップＡ５において、転送用命令変換部２５は変換アルゴリズムに従い、これらの命令を転送用命令に変換を行う。しかし第１の実施の形態における変換アルゴリズムでは、図１２のどの命令も変換の対象にならない。しかし、本変形例１の変換アルゴリズムでは次のように変換することでデータを削減する事が出来る。
【０１６２】
本変形例１の変換アルゴリズムは、図１２の命令群を図１３の命令群のように変換する。本変形例１ではＲＡＩＤ５処理をされてデータＢ１−Ｂ５に分散され、パリティを付与されているため、１つのデータを失っても再作成することができる。従って、図１３のようにデータＢ５を削除し、ストレージ４側の変換処理であるステップＢ２において、データ５をパリティ計算し復元することにより、データ５を再作成することができる。これにより、転送するデータ量を約４／５にすることが出来る。また、前もってＲＡＩＤ化されているボリュームアドレス等を把握している場合には、データが存在しない命令（アドレスＧの命令）を転送する必要はない。
【０１６３】
また、ここで削減するデータはデータ５である必要はない。削減するデータはパリティ部分である必要は無いので、５つに分割されるデータのうち先に到着した４つの命令を転送し、最後の１つを削除すればよい。また、本実施の形態の変形例１では、ＲＡＩＤ５処理について説明したが、ＲＡＩＤ５だけでなく、他に冗長化データを作成してＷＲＩＴＥを行う、ＲＡＩＤ６、ＲＡＩＤ４、ＲＡＩＤ３等であってもよい。また、ＲＡＩＤ１に関しては、実施の形態１の変換アルゴリズムが適用できる。
【０１６４】
また、ＲＡＩＤだけでなく、同様に後に復元するための冗長化したデータを作成して書き込みを行う処理全てに対して適用できる。その理由は、本変形例で説明したとおり、同様に冗長化のためのパリティなどのコードのデータ、あるいは冗長化したことにより再作成できるデータをストレージ４側へ転送しないで済むからである。
【０１６５】
本変形例１の効果について説明する。
【０１６６】
第１の実施形態とその実施例における効果に加え、同一のデータを異なる場所に書き込む場合以外に、冗長化データが付与されるデータの書き込みに対して、転送量削減の効果を得る事ができる。
【０１６７】
＜第１の実施形態の変形例２＞
次に、第１の実施形態の変形例２について説明する。この変形例２は、アーカイブログ化のような、ローカルコピーの処理について、実データを送らずに実現するものである。第１の実施形態の変形例２は、図１１に示されるような構成のストレージ２において、ボリューム２０１に書かれているデータを、ボリューム２０２にコピーする命令をホスト１が発行した場合において、データ転送量を削減する方式である。
【０１６８】
ボリューム２０１からボリューム２０２へコピーすると述べたが、同一ボリューム内でコピーを行う場合でも良い。また、単純なファイルのコピーでもよいし、一部を書き換えるが大部分が同じであるコピーを作成する場合でもよい。このようなストレージ２内でデータコピーを行う処理を、以降、「ローカルコピー処理」と呼ぶ。
【０１６９】
例えば、ローカルコピー処理には、次のような処理がある。データベースアプリケーションにおいては、一般的に、ジャーナルログデータを保持しており、過去のジャーナルログデータを保存する。そして、定期的に、他の場所へアーカイブのファイル名を付ける等をして保存する処理を行う。この処理は、既にストレージ２内に書き込まれているジャーナルログデータをアーカイブ先にコピーする処理と考える事ができるため、ローカルコピー処理の一例である。
【０１７０】
また、ディスクアレイ装置に作成されているデータがあまり参照されなくなった為、安価なディスク装置にコピーする、あるいは保存用の記憶装置にコピーする、等の処理を行う場合でもよい。この処理もローカルコピー処理の一例である。あるいは、レプリケーション元のデータセンターから別の装置へのコピーについても同様にして適用することができる。
【０１７１】
本変形例２の構成は、図１、図２に示される第１の実施の形態の構成と同様であるため説明を省略する。また、図３、図６、図７に示される処理の流れについても第１の実施の形態と同様である。
【０１７２】
本変形例２は、ステップＡ５における変換アルゴリズムが異なる。
【０１７３】
本変形例２の変換アルゴリズムは、ローカルコピー処理によりホスト１から発行された命令群を、ローカルコピーによって書き込まれるデータの転送を行わない転送用命令に変換する。
【０１７４】
次に、ローカルコピー処理の為の変換アルゴリズムの例を説明する。図１４は、ローカルコピー処理により、ホスト１から発行された命令が、バッファリング部２４（バッファメモリ）に格納されている様子を示す概念図である。最初に命令受信部２１が受け取った命令（命令R  アドレスA）が、図４の一番上に示されている。命令ＲはＲＥＡＤ系統の命令でデータを読み取る命令である。命令ＷはＷＲＩＴＥ系統の命令でデータを書き込む命令である。ここで、ホスト１は、アドレスＡ−Ｄから始まる箇所に記録されているデータＡ−Ｄを読みこみ、アドレスＥ−Ｈに対して、読み込みデータＡ−Ｄを書き込む処理を行おうとしている。すなわちローカルコピー処理である。
【０１７５】
転送用命令変換部２５は、図１４に示すようなパターンを検知し、転送用命令へ変換する。ここで、命令Ｒの結果として、それぞれデータＡ−Ｄが得られ、その後、命令Ｒのデータとして利用されるか否かは、バッファリング部２４に保存される命令だけでは確認できない。従って、変換アルゴリズムが、命令Ｒの結果がデータＡ−Ｄであることを確認する必要があるのならば、図６のステップＡ２において、命令Ｒで得られた結果をバッファリング部２４に伝える処理を追加する。ただ、単に、図１４に示されるような特徴的な命令群によって、ローカルコピー処理であることを認識できる場合には、命令Ｒで得られた結果をバッファリング部２４に伝える処理は必要無い。
【０１７６】
また、ホスト１から発行する命令として、図１４に示すように、命令Ｒが全てのデータを読み込むとは限らない。なぜなら、ホスト１のバッファが保持しているデータは、ストレージ２に対して読み込みが行われない等の現象が発生する可能性があるからである。従って、図１５に示すように、命令が欠ける現象が発生する可能性がある。それに関しても、ローカルコピー処理に基づく特徴的なアクセスパターンは残っていると考えられるため、データＡ−Ｄまでのローカルコピー処理として、変換アルゴリズムが認識してもよい。また、ローカルコピー処理としてそのまま認識できるであろう、データＡ−Ｃまでのローカルコピーとして見なしてもよい。
【０１７７】
バッファリング部２４に格納されている、図１４のような命令パターンを、ローカルコピー処理であると認識するには、様々な方法がある。ホスト１上で動作するアプリケーションの特徴から、ローカルコピー処理としてよく出現するパターンを、転送用命令変換部２５に対して人手で認識させるという方法がある。あるいは、ホスト１から発行される命令のアクセスパターンのログから学習させ、自動的に認識させてもよい。さらに、ローカルコピー処理のＷＲＩＲＥ処理は、ある決められたボリュームに対して行うことが考えられるため、そのボリュームに対するＷＲＩＴＥ命令を変換対象と見なしてもよい。
【０１７８】
また、命令パターンを、ローカルコピー処理であると認識するには、次のような方法もある。ホスト１上で動作するアプリケーションあるいはオペレーティングシステムは、ローカルコピーなどの処理を、何らかのログに記録している可能性がある。従って、そのログを、転送用命令変換部２５が、定期的、あるいは、変換処理実行時に、検知することによって、ローカルコピー処理の認識を行う。
【０１７９】
ホスト１のログは、ストレージ２の記憶部２３に記録される場合もあれば、ホスト１のローカルな記憶装置に記録される場合もあり、必要な場所のログを確認することが必要である。この方法を用いる場合には、図２に示されるレプリケーションシステムの詳細な構成は、図１６に示すような構成となる。
【０１８０】
図１６のブロック図について説明する。ホスト１は、図２の構成と比較して、記憶部１３を有する点が相違している。記憶部１３は、ホスト１が利用する記憶装置である。例えば、ホスト１のコンピュータに接続される記憶装置であり、具体的には磁気記憶装置や半導体記憶装置、ネットワーク越しに接続される記憶装置などである。また、図１６は図２の構成と比較して、転送用命令変換部２５が、記憶部２３と記憶部１３を参照する点が異なる。
【０１８１】
上記に述べた方法を用いて、ローカルコピー処理であることを、転送用命令変換部２５が認識した場合には、転送用命令へ変換する。変換する転送用命令としては次のような例がある。
【０１８２】
図１７に、図１４の命令を変換した転送用命令の例を示す。命令ＷのデータＡ−Ｄの実体の転送を行わない例である。データＡ−Ｄを送る代わりに、データＡ−Ｄが存在するポインタを示す。図１４の命令では、データＡ−Ｄは、その直前に、アドレスＡ−Ｄから読み込まれるはずであるので、データＡ−Ｄへのポインタとして、アドレスＡ−Ｄを指定すればよい。
【０１８３】
また、図１８に、図１４を変換した転送用命令の他の例を提示する。これは、命令Ｘという、特殊な命令を定義しておくことにより実現する。ここでは、命令Ｘは、アドレスＡ−Ｄから始まるデータをアドレスＥ−Ｈに対して書き込みを行うという命令であるとする。また、アドレスＡからＤ、アドレスＥからＨが連続した領域である場合には、アドレスＡとアドレスＥを指定し、別途容量を指定するという形式の命令でもよい。
【０１８４】
図１７、図１８のような転送用命令を、ストレージ４の実行用命令変換部４２は、図１９に示されるような命令として変換し、実行する。また、図１４のように、先に命令Ｒを行い、その結果を受け取って命令Ｗを実行するよう変換を行っても良い。
【０１８５】
本変形例では、命令が４つの場合であったが、命令数は制限されず、いくつでもよい。
【０１８６】
また、本変形例は、第１の実施形態や他の変形例と組み合わせて実施することができる。
【０１８７】
次に、第１の実施形態の変形例２における効果について説明する。第１の実施形態における効果に加えて以下の効果を得る事ができる。
【０１８８】
本変形例では、ローカルコピー処理によって発生するＷＲＩＴＥ処理を、そのＷＲＩＴＥ命令の内容となるデータのポインタを転送するだけで実現する事ができる。従って、大幅な転送量を削減する事ができる。
【０１８９】
また、ローカルコピー処理を認識する際に、ローカルコピー処理の対象となるボリュームを指定しておくことによって、転送用命令変換部２５の変換処理の計算量を軽減することができる。ボリュームのかわりに、アドレス空間、パーティション、ファイル等でもよく、仮想化された、あるいは物理的な書き込み場所を指定するものであれば任意である。
【０１９０】
また、ローカルコピー処理を認識する際に、システムログ情報等を利用することによって、転送用命令変換部２５の計算処理を大幅に少なくし、処理を容易にすることが出来る。システムログ情報等には、オペレーション・システムやデータベースソフトウェア、アプリケーションソフトウェアが書き出す処理の記録やエラー警告等が含まれる。
【０１９１】
＜第１の実施形態の変形例３＞
次に、第１の実施形態の変形例３について述べる。第１の実施形態の変形例３は、転送契機の変形例である。第１の実施の形態の変形例３の構成は、図１、図２に示される第１の実施の形態の構成と同様であるため説明を省略する。また、図３、図６、図７に示される処理の流れについても第１の実施の形態と同様である。
【０１９２】
本変形例３では、図３、図５のステップＡ４における、転送処理開始条件について述べる。
【０１９３】
基本的には、ステップＡ４において転送処理が開始される条件はどのようなものでもよい。例えば、単純に定期的に時間で区切り、転送処理を開始する方法がある。３０秒毎、１分毎、１時間毎のように、ある一定時間毎にバッファリング部２４の記憶領域を区切り、転送処理を行う。その時の処理について、図２０、図２１を用いて説明する。
【０１９４】
図２０は、ある時刻でのバッファリング部２４の状態の例を示す。この例では、バッファリング部２４は、ＦＩＦＯで処理をするキューとして実装されているとする。
【０１９５】
また、命令２４１−２４５は、命令受信部２１が受信した命令であり、バッファリング部２４に蓄積される命令である。
【０１９６】
図２０においては、命令２４１−２４４がバッファリング部２４に到着順に格納されており、次の命令２４５はその後ろに格納されるものとする。そして、図２０の状態の時に、転送処理を開始する時刻になったとする。
【０１９７】
すると、その時、図２１に示されるように、転送用命令変換部２５は区切り２４６を挿入する。そして、命令２４１−２４４の命令に対して転送処理を行う。そのとき、命令２４１−２４４内において、転送量を削減できる命令の組み合わせが存在するのならば、それに対応した変換処理を行う。またもし、区切り２４６以降に到着した、命令２４５あるいは命令２４７と命令２４１−２４４間において、削減できる命令の組み合わせが存在した場合においても、変換処理は行わない。
【０１９８】
また、ストレージ４側の適用処理においては、ストレージ４の転送命令バッファリング部４５に区切り２４６以前の命令である命令２４１−２４４が全て到達するまで適用処理を行わないようにすれば、転送開始のタイミングである図２０時点のストレージ２の記憶部２３の状態とストレージ４の記憶部４４の状態が同一であることを保証出来る。
【０１９９】
また、決まった転送契機を作らず、バッファリング部２４に命令が格納されている場合には、そのつど送り、送りきれずバッファリング部２４にたまっている命令において、削減できる組み合わせが存在した場合には、転送用命令への変換を行う。
【０２００】
また、図２２で示されるような構成にすることにより、転送開始点通知部６が、転送処理を開始するタイミングを通知しても良い。例えば、図８、図１１、図１４で示されるような、削減可能な命令がバッファリング部２４に蓄積された時点で、転送処理を開始するようにすることが可能である。
【０２０１】
図２２で示される変形例３の構成は、図２で示される第１の実施形態の構成と比較して転送開始点通知部６が存在する点のみが異なる。従って、この点のみを説明する。
【０２０２】
転送開始点通知部６は、転送用命令変換部２５に対して、転送開始点を通知する機能を有する。転送開始点通知部６は、バッファリング部２４の状態を検知して転送タイミングを決定する事ができる。
【０２０３】
転送開始点通知部６は、ホスト１で動作しても、ストレージ２内で動作しても、全く別の装置で動作しても構わない。また、ホスト１上で動作しているデータベースがその機能を有しても良いし、アプリケーションがその機能を有しても良いし、あるいは人間が明示的に指示する端末でもよい。
【０２０４】
次に、本変形例３における作用効果について説明する。第１の実施形態における効果に加え、次のような作用効果がある。
【０２０５】
本変形例３によって、ストレージ４の転送命令バッファリング部４５において、区切り２４６以前の命令が全て揃うまでストレージ４の記憶部４４に対する適用を遅らせることによって、転送契機の瞬間において、記憶部２３と記憶部４４の論理的なデータの一致を保証できる。
【０２０６】
また、本変形例３により、削減可能な命令群がバッファリング部２４に蓄積されたタイミングでデータ転送処理を行う事ができる。従って、ストレージ４の記憶部４４の、ストレージ２の記憶部２３に対する追従の遅れを最小限にしつつ、転送量削減の効果を得る事が出来る。
【０２０７】
また、ストレージ４における適用処理において、転送命令バッファリング部４５に格納されている命令群を、転送契機間において順序を入れ替える処理が出来る。
従って、ストレージ２からの転送処理において転送契機間の転送順序を保証しなくてもよい。その為、より転送効率の優れた転送方式により転送を行う事ができる。
【０２０８】
また、ストレージ４における適用処理において、転送命令バッファリング部４５に格納されている命令群を、転送契機間において順序を入れ替える処理を、命令間に相互関係が存在するものについてのみ行えば良い。従って、順序の入れ替え処理にかかる負荷を軽減する事ができる。
【０２０９】
＜第１の実施形態の変形例４＞
次に、本発明の第１の実施形態の変形例４について説明する。本発明の第１の実施形態の変形例４の構成は、図１、図２に示した前記第１の実施の形態の構成と同様であるため、説明を省略する。
【０２１０】
本変形例においては、ホスト１の命令発行部１１がストレージ２に対する命令以外に、再開可能点を示すタイミングを通知する命令を送る。「再開可能点」とは、ホスト１のアプリケーション、オペレーティングシステムが何らかの障害により停止して再開する際に、再開しやすい時点を指す。例えば、ストレージ２に記憶されているデータが、再開時に再作成や再構築をする処理の必要が無い時点の事を指す。この再開可能点のデータをストレージが保持している状態から再開するときには、再開可能点ではない時点のデータから再開するよりも早い時間でサービスを再開することができる。
【０２１１】
ホスト１は、再開可能点通知を、命令発行部１１を介して発行する。再開可能点通知が発行されるタイミングの例として、以下のようなものがある。まず、ホスト１上のアプリケーション、ミドルウェアがプログラムの中に組み込んで通知を行う。また、ホスト１が複数のＣＰＵやプロセスで動作する際に、メモリ上でバリア処理が行われたタイミングやセマフォの値が変化したタイミングなどに、自律的に発行しても良い。
【０２１２】
また、再開可能点に決まったファイル（あるいは記憶領域）にアクセスするのであれば、そのファイルにアクセスがあったタイミングに再開可能点通知を行う。
【０２１３】
また、再開可能点である時に決まったプロセスが処理を行うのであれば、そのプロセスが動作したタイミングに再開可能点通知を行えばよい。
【０２１４】
データベースを例にあげると、ジャーナルログのデータを書き込んだタイミングは、上位のアプリケーションによってコミット命令が発行されたタイミングであり、再開可能点と考えることができる。従って、ジャーナルログファイル（あるいはこれが格納されているボリューム、ファイルなど）に対して、書き込みが発生した際に、再開可能点通知を行う。
【０２１５】
あるいは、ジャーナルログファイルに書き込みを行うプロセスが動作したタイミングで再開可能点通知を行っても良い。
【０２１６】
また、次のようにホスト１の命令発行部１１が発行する命令によって再開可能点の通知を行っても良い。この場合には、ストレージシステムの構成は図２３に示すような構成を用いる。図２３の構成は、監視手段７を持つ点が図２と比較して異なるため、この点について説明する。
【０２１７】
監視手段７は、ホスト１の動作あるいは、命令受信部２１に受信される命令を監視して、再開可能点の認識し、再開可能点通知の発行を行う機能を有する。そして、監視手段７はホスト１内で動作してもよいし、ストレージ２で動作してもよいし、それ以外で動作してもよい。
【０２１８】
監視手段７は、前述した再開可能点を検知して、命令受信部２１に対して再開可能点通知を発行する。例えば、ホスト１が発行し命令受信部２１が受信するコマンドを監視して、あるファイル（あるいは記憶領域）にアクセスするコマンドが発生後に、再開可能点通知を挿入する。また、ジャーナルログに書き込みが発生するコマンドを検知したら、再開可能点を通知する、という動作をしてもよい。
【０２１９】
また、監視手段７はホスト１のプロセスを監視しても良い。例えば、あるプロセスが動作したときに、再開可能点となるのであれば、その時点で再開可能点通知を監視手段７が発行する。
【０２２０】
監視手段７の動作の流れについて、図２４を用いて説明する。
【０２２１】
まず、監視手段７は監視対象の監視を行う（ステップＣ１）。この監視対象は例えば、命令受信部２１やホスト１である。また、バッファリング部２４のような他のものでもよい。そして、監視対象の挙動から再開可能点であるかどうかを、監視手段７は判断する（ステップＣ２）。再開可能点で無い場合には、再度監視対象の監視を行う。再開可能点であると判断した場合には、再開可能点通知を命令受信部２１に対して発行する（ステップＣ３）。
【０２２２】
また、レプリケーション元のストレージシステム２の動作について、図３を用いて説明する。基本的には、ストレージ２の動作については、図３に示した第１の実施形態における動作と同一である。再開可能点通知の存在によって、処理が異なる点について述べる。基本的に、再開可能点通知は、通常の命令として扱って良い。ステップＡ２において、命令実行部２２は、再開可能点通知に対して何も処理をしなくて良いし、あるいは記憶部２３においてスナップショットを取るような処理を行っても良い。
【０２２３】
また、再開可能点通知は転送処理に必要になるため、バッファリング部２４に対して蓄積する必要がある。この処理も通常の転送が必要な命令と同様に、ステップＡ３においてバッファリング部２４に対して格納すればよい。ステップＡ４において、転送処理を開始する転送契機については、再開可能点通知を利用する。再開可能点通知が、バッファリング部２４に格納されている場合には転送処理を開始する。
【０２２４】
ステップＡ５の転送処理について、図２５、図２６を用いて説明する。
【０２２５】
まず、バッファリング部２４に図２５に示すように命令が格納されているとする。そして、ここでは、命令２４１と命令２４２を転送用命令２４９に変換して転送を行うとする。再開可能点通知２４８が到着した段階で転送処理を開始する。図２５に示すように、命令２４５が再開可能点通知２４８の後に到着している場合でも、今回の転送処理では命令２４５は転送しない。次に、再開可能点通知が到着した後に、転送処理の対象とする。ここで例えば、命令２４５と命令２４４が変換処理の対象となる場合においても、変換処理は行わない。
【０２２６】
従って、転送される命令は、図２６に示すような命令となる。この例では、この順序で転送が行われたとする。
【０２２７】
また、レプリケーション先のストレージシステム４の処理の流れは、図６に示される通りである。ストレージ４の処理においても、再開通知点に関する処理を除くと、第１の実施形態と同一の処理となる。
【０２２８】
ステップＢ２の適用処理について、図２７、図２８を用いて説明する。図２６に示されるような命令が転送された場合には、受信した命令は、図２７に示されるように転送命令バッファリング部４５に格納される。そして、転送用命令２４９を変換し、元の命令に復元して記憶部４４に対して適用を行う。図２８は図２７の命令群を、復元した命令群を示す図である。図２８では、変換した命令２４１、２４２を再び転送命令バッファリング部４５に戻しているが、必ずしもその必要はなく、命令を変換してそのまま適用してもよい。
【０２２９】
また、ステップＢ２の適用処理を行う際に、転送命令の到着後、順次適用処理を行うのではなく、再開通知点が到着後にその時点までの命令を適用するようにすると、スナップショット機能が無いストレージ装置においても再開可能点の状態を保障できる。また、必ずストレージ４が再開可能点のデータを保持することになるので、ストレージ４を用いてアプリケーションを再開する際に、すばやく再開することができる。
【０２３０】
順次適用処理を行っていると、途中の整合性が取れていない状態でストレージ４にデータが保存されてしまう。
【０２３１】
また、再開可能点ではないタイミングでストレージ４がデータを保持してしまい、ストレージ４によってサービスを再開するのに時間がかかってしまう。
【０２３２】
次に、ステップＡ５において、図２５に示す命令を変換するときに、命令２４１と命令２４３が変換対象であった場合について説明する。この時、命令２４１と命令２４３を転送用命令２５０に変換するものとする。
【０２３３】
すると、図２５の命令群は、図２９のように変換され、転送が行われる。そして図２９の命令がストレージ４に転送された時、転送用命令２５０を元の命令２４１と命令２４３に復元するとする。すると、ステップＢ２において変換された後の転送命令バッファリング部４５の状態は、図３０に示すような状態となる。
【０２３４】
これは、図２５に示す場合と順序が異なってしまう。この場合、命令２４３と命令２４２の間に依存関係が無い場合（異なる記憶位置に書き込みを行う等）には、再開可能点通知２４８までの命令が全てストレージ４に転送されている場合において順序を入れ替える必要が無い。
【０２３５】
しかし、命令２４３と命令２４２の間に依存関係がある場合（同じ記憶位置に書き込みを行う等）には、発行された順序（図２５参照）で処理されるように、命令２４３と命令２４２間の順序を入れ替える必要がある。
【０２３６】
この場合、図２８に示すよう、命令順序を入れ替えなければならない。その場合、転送用命令に命令順序の情報を追加する、再開可能点通知内に命令順序の情報を追加すればよい。
【０２３７】
次に、ステップＡ５における転送方式について、他の方式を説明する。本変形例では、再開可能点通知が到着した際に、その再開可能点までの命令において（必要あれば）変換処理を行い、転送処理を行う。
【０２３８】
しかし、図３１に示すように、一回目の転送処理を行っている間に、複数の再開可能点通知が到着する可能性もある。この時の転送方式には複数の方式が存在する。その転送方式の例について、図３１の命令群がバッファリング部２４に存在する時を例に挙げ説明する。
【０２３９】
まず、通常の方式を説明する。再開可能点通知２４８より以前の命令（命令２４１，２４２，２４３，２４４）の転送後、再開可能点通知２５１より以前の命令（命令２４５，２４７）の転送を行い、その次に再開可能点通知２５４より以前の命令（命令２５２，２５３）の転送を行う。
【０２４０】
また、特に制限されないが、次のような方式用いてもよい。再開可能点通知２４８、再開可能点通知２５１を無視し、再開可能点通知２５４までの命令（命令２４１，２４２，２４３，２４４、２４５，２４７，２５２，２５３）を、ひとかたまりの命令群と扱って処理を行う。通常の方式では、例えば命令２４３と命令２４５が転送用命令に変換出来たとしても、変換する事が出来ないが、本方式では変換する事が出来るため、より高い転送量削減効果を得る事が出来る。
【０２４１】
また、特に制限されないが、次のような方式を用いてもよい。まず再開可能点通知２４８までの命令（命令２４１，２４２，２４３，２４４）の転送処理を行う。そして、その後に再開可能点通知２５１が到着したときに、再開可能点通知２５１までの命令（命令２４１，２４２，２４３，２４４，２４５，２４７）を別途転送する。また、その後、再開可能点通知２５４が到着した時に、最初の転送処理（再開可能点通知２４８まで）が終わっており、２度目の転送処理（再開可能点２５１まで）が終わっていない場合には再開可能点通知２４８後から再開可能点通知２５４までの命令（命令２４５，２４７，２５２，２５３）を別途転送する処理を行う。
【０２４２】
また、ステップＢ２の適用処理においても、各再開可能点通知までの適用処理を順次行うのではなく、図３１の命令が転送される時には、再開可能点通知２５４までの到着を待って、適用処理を行っても良い。
【０２４３】
次に、第１の実施形態の変形例４の作用効果について述べる。本変形例では、前記第１の実施形態における作用効果に加え、次のような作用効果がある。
【０２４４】
本変形例４により、再開可能点におけるデータをストレージ４において保持するため、ストレージ４においてサービスの再開を行う際に、データの再構築などの処理が不要になり、通常の方式より早くサービスの再開を行う事が出来る。
【０２４５】
また、再開可能点通知までの命令群の転送を、命令間に依存関係が無い限りいかなる順序で送っても良いため、効率の良い転送が出来る。
【０２４６】
また、レプリケーション先のストレージにおいて、再開可能点通知までの受信を確認後に、適用処理を行うことによって確実に再開可能な記憶状態をレプリケーション先ストレージにおいて復元する事ができる。
【０２４７】
また、再開可能点通知をホスト１のアプリケーションによって発行させることにより、アプリケーションにとって都合の良いタイミングにおけるストレージの記憶状態をストレージシステムに保持させることができる。
【０２４８】
また、ホスト１から再開可能点通知を発行しなくても、監視手段７がアプリケーションにとって再開可能点であるタイミングを判断し、通知することが出来る。これは、ホスト１の動作あるいは、命令パターンを検知することによって行う事ができる。
【０２４９】
また、ストレージ２からの転送処理において、再開可能点通知が複数、バッファリング部２４に格納されている時には、それらを一纏めにして転送処理を行う事が出来る。従って、より多くの変換処理を行うことが出来る可能性があり、転送量を軽減する事ができる。
【０２５０】
また、本変形例ではストレージ４における適用処理において、転送命令バッファリング部４５において、再開通知点までの命令群の順序を調整して適用処理を行う事ができる。従って、ストレージ２からの転送処理において再開通知点間の転送順序は特に拘束されないため、より優れた転送順序で転送を行う事が出来る。
【０２５１】
＜第１の実施の形態の変形例５＞
次に、第１の実施形態の変形例５について述べる。第１の実施の形態の変形例５の構成を、図３２と、図３３に示す。
【０２５２】
図３２は、第１の実施形態の変形例５の全体構成を示す図である。図３２を参照すると、ホスト１と、レプリケーション元のストレージシステム２、レプリケーション先のストレージシステム４、ネットワーク５、命令受信・変換層７０、命令受信・変換層８０を有する。そして、第１の実施形態と同一の機能を提供できるコンピュータシステムである。図１に示される第１の実施形態の構成図と比較して、ホスト１とストレージ２の間に命令受信・変換層７０を有し、またストレージ２とストレージ４間の接続が命令受信・変換層７０、ネットワーク５，命令受信・変換層８０を介して行われる点が異なる。
【０２５３】
ホスト１、レプリケーション元のストレージシステム２（単に、「ストレージ２という」、レプリケーション先のストレージシステム４（単に、「ストレージ４」という）は、前記第１の実施形態と同一である為、説明を省略する。
【０２５４】
ネットワーク５は、命令受信・変換層７０と命令受信・変換層８０の間を接続している点が異なるが、それ以外の点はネットワーク３と同一である。ネットワーク５で利用するネットワークは、ストレージ間を接続するネットワークである他に、ホスト１のコンピュータとストレージ間、コンピュータ同士、コンピュータとスイッチ間等を結ぶネットワークである。具体的には、コンピュータ間を接続する内部バスまたはイーサネット（登録商標）、ＩＮＦＩＮＩＢＡＮＤ、無線回線等が上げられる。
【０２５５】
図３３は、第１の実施形態の変形例５の詳細構成を示す図である。図３３に示す通り、命令受信・変換層７０、命令受信・変換層８０は、図２に示した第１の実施形態の構成においてストレージ２、４が果たしている役割の一部を担う。
【０２５６】
命令受信・変換層７０は、ストレージ２が第１の実施形態の構成において有していた、命令受信部２１、バッファリング部２４、転送用命令変換部２５、転送送信部２６を有する。
【０２５７】
また、変形例５におけるストレージ２は命令実行部２２、記憶部２３のみを有する。命令実行部２２がホスト１へ接続されているが、ホスト１がストレージ２に対して発行したＷＲＩＴＥなどの命令を実行した結果を返す経路である。このように、ホスト１に対して直接、命令の実行結果を返しても良いが、命令受信・変換層７０を介して結果を返してもよい。
【０２５８】
命令受信・変換層８０は、ストレージ４が第１の実施形態の構成において有していた、転送受信部４１、実行用命令変換部４２を有する。
【０２５９】
また、変形例５におけるストレージ４は命令実行部４３、記憶部４４のみを有する。
【０２６０】
命令受信・変換層７０、８０はホスト１のアプリケーションからストレージの間のいかなる装置、プログラムにおいて機能を果たしても良い。例えばイーサネット（登録商標）やファイバーチャネルのスイッチ装置が、命令受信・変換層７０、８０の機能を果たしてもよい。また、他にもデータベースソフトウェア、ボリュームマネージャ、ファイルシステム、オペレーティングシステム、ストレージ仮想化装置等で実現する事が可能である。また、命令受信・変換層７０、８０がストレージ内で実現することも可能であり、それが第１の実施形態の構成となる。
【０２６１】
第１の実施形態の変形例５の動作の流れについては、図３、図６、図７に示される第１の実施形態の動作と同様であるため、説明を省略する。
【０２６２】
第１の実施形態の変形例５の作用効果について説明する。第１の実施形態と各変形例の作用効果に加え、下記の作用効果を奏する。
【０２６３】
本変形例では、ストレージ２、ストレージ４の装置は、一般的なストレージアクセス命令を受信し、記憶部に対して処理を行い、結果を返すだけである。従って、本発明における機能を組み込む際にストレージ装置に改造を行うことや、特殊なストレージ装置を利用する必要がない。
【０２６４】
本変形例では、ストレージ２、ストレージ４間をネットワークで直接接続する必要は無い。従って、ネットワーク接続費用などを軽減する事ができる。
【０２６５】
＜第１の実施形態の変形例６＞
次に、第１の実施形態の変形例６について説明する。第１の実施の形態の変形例６の全体構成は図１に示される第１の実施の形態の構成と同様であるため説明を省略する。図３４は詳細な構成を示すブロック図である。
【０２６６】
図３４は、図２に示される第１の実施形態の詳細構成と比較して、転送用命令変換部２５、実行用命令変換部４２に対して変換アルゴリズムを設定する変換アルゴリズム設定部８を有する点が異なる。
【０２６７】
図３４は、第１の実施形態に付属する構成として書いたが、他の変形例にも適用できる。また、実行用命令変換部４２に対しては別の変換アルゴリズム設定部８を用意してもよいし、図３３のように１つの変換部が双方に設定する形でもよい。
【０２６８】
また、図３、図６、図７に示される処理の流れは、第１の実施の形態と同様であるため説明を省略する。
【０２６９】
変換アルゴリズム設定部８は、転送用命令変換部２５の変換アルゴリズムを設定する機能を有する。これは、管理者がコマンドを入力すると、変換アルゴリズムを設定できるコンピュータプログラムであってもよいし、管理者が「重複ＷＲＩＴＥデータを削減する」あるいは「ローカルコピー処理の転送データを削減する」のようにポリシーとして設定できるようなツールでもよい。また、ホスト１上で動作してもよいし、ストレージ２上で動作してもよいし、その他の場所でもよい。また、例えばストレージ管理ソフトウエアに組み込まれてもよい。
【０２７０】
また、他の状況を監視し、自律的に、転送用命令変換部２５及び実行用命令変換部４２の動作を制御するプログラムであってもよい。
【０２７１】
変換アルゴリズム設定部８によって、例えば、変換アルゴリズムを幾つか転送用命令変換部２５が保持しているときに、そのうちどの変換アルゴリズムを実行させるかを、管理者は選択する事ができる。例えば、第１の実施形態の変換アルゴリズムを動作させ、変形例１のアルゴリズムは動作させない、などのように設定する。
【０２７２】
また、変換アルゴリズムを、変換アルゴリズム設定部８によって、プログラムとしてユーザが開発したものを組み込めるように出来ても良い。
【０２７３】
また、転送用命令変換部２５が、転送契機として何を用いるかを設定出来ても良い。例えば、変形例３のようにある一定時間毎に転送処理を行うのであれば、その周期をどんな値にするかを変換アルゴリズム設定部８により設定する。
【０２７４】
また、変換アルゴリズム設定部８は、転送用命令変換部２５、実行用命令変換部４２に必要となるあらゆるパラメータを設定できる機能を有してもよい。例えば、変換する命令の対象を、どのボリュームに対する書き込み命令にするか、などを設定する。
【０２７５】
次に、第１の実施形態の変形例６の作用効果について説明する。
【０２７６】
本変形例６により、本発明のシステムにおいて、変換アルゴリズムや転送方法について、管理者が制御することが出来る。
【０２７７】
また、本変形例６により、個別に開発した変換アルゴリズムプログラムを転送用命令変換部２５に組み込むことができる。
【０２７８】
また、本変形例６により、管理者がポリシーを設定することにより、転送命令変換部２５、実行用命令変換部４２が利用する変換アルゴリズムを決定することができる。
【０２７９】
また、本変形例６によって、管理者が変換アルゴリズムの動作に必要あるいはあると処理が効率化するパラメータ情報を設定することによって、変換アルゴリズムの処理の時間を短縮する事が出来る。
【０２８０】
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。図３５は、本発明の第２の実施形態のレプリケーションシステムの構成を示すブロック図である。図３５を参照すると、本発明の第２の実施形態のシステムは、図１に示した前記第１の実施の形態と比較して、ホスト１と、レプリケーション元のストレージシステム２（単に、「ストレージ２」という）の間に命令受信層５１が配設され、ネットワーク５と接続され、レプリケーション先のストレージシステム４（単に、「ストレージ４」という）と接続された命令受信層５２が配設されている点が相違する。
【０２８１】
ホスト１は、前記第１の実施形態と同一構成のコンピュータであり、また、ストレージ２、４に関しても、前記第１の実施形態と同一構成の記憶装置であるため、説明は省略する。
【０２８２】
ネットワーク５は、インターネットまたは専用線等の通信ネットワークのような、あるいはホスト間、ホスト−ストレージ間、ストレージ間を結ぶネットワークであり、前記第１の実施形態の変形例５で扱ったものと同一であるため、説明を省略する。
【０２８３】
命令受信層５１は、ホスト１が発行する命令を受信して、その命令をストレージ２に対して発行する。ここで、ホスト１が発行する命令は、ストレージ２が実行できる命令とは限らないため、ストレージ２が実行できる命令に変換して発行を行う。また、命令受信層５１は受信した命令を、ネットワーク５を介して命令受信層５２へ転送を行う。
【０２８４】
命令受信層５２は、命令受信層５１から転送された命令を受信する。そして受信した命令を、命令受信層５１と同様に、ストレージ４が実行できる命令に変換して、ストレージ４に対して発行する。
【０２８５】
命令受信層５１、５２は、ホスト１のアプリケーションからストレージの間のいかなる装置、プログラムにおいて機能を果たしても良い。例えばイーサネット（登録商標）やファイバーチャネルのスイッチ装置が、命令受信・変換層７０、８０の機能を果たしてもよい。また、他にもデータベースソフトウェア、ボリュームマネージャ、ファイルシステム、オペレーティングシステム、ストレージ仮想化装置等で実現する事が可能である。また、命令受信・変換層７０、８０がストレージ内で実現することも可能であり、それが前記第１の実施形態の構成となる。
【０２８６】
また、命令受信層５１が受信する命令のプロトコルは特に問わない。ＳＣＳＩ(Small Computer System Interface)のようなブロックレベルでストレージを操作するプロトコル以外にも、ＣＩＦＳ(Common Interface File System)やＮＦＳ(Network File System)などのプロトコルを用いても良い。つまり、ストレージ２，４が、ファイルシステムを持つＮＡＳ（Network Storage System）システムでもよい。
【０２８７】
図３６は、本発明第２の実施の形態におけるホストおよびストレージ、命令受信層の詳細な構成を示すブロック図である。
【０２８８】
図３６を参照すると、ホスト１は、命令発行部１２を備える。命令発行部１２は、ホスト１上で動作するアプリケーション、データベース等のミドルウェア、オペレーティングシステム等が、ＷＲＩＴＥやＲＥＡＤ等の命令、あるいは他の制御命令等の他に、命令受信層５１によりあらかじめ定義された命令を発行する。
【０２８９】
命令受信層５１により、あらかじめ定義された命令について説明する。前記第１の実施形態で説明したように、ホスト１のアプリケーション等は、レプリケーションを行う際に、冗長であるＷＲＩＴＥを発行する場合がある。例えば、
・ホスト１のアプリケーションで、同じデータを複数箇所に書き込みを行うソフトウェアミラーリングのＷＲＩＴＥ（ソフトウェアミラーリングＷＲＩＴＥ処理）や、
・ストレージ２内に既に存在するデータを他の箇所にコピーを行うローカルコピー処理がある。
【０２９０】
ソフトウェアミラーリングＷＲＩＴＥ処理や、ローカルコピー処理は、通常、ホスト１が命令を発行し、その命令に従って、レプリケーションシステムが処理を行う場合、ソフトウェアミラーリング処理では、同じデータを複数回転送することによって複製する。また、ローカルコピー処理では、コピーするデータが、レプリケーション先のストレージに既に存在する場合であっても、再度、データ転送を行う。
【０２９１】
本実施形態では、このような処理を行う代わりに、
・ソフトウェアミラーリングＷＲＩＴＥ処理を行う命令、
・ローカルコピー処理を行う命令
を予め定義しておき、その定義された命令を、ホスト１は発行する。
【０２９２】
そして、命令受信層５１は、定義された命令を受信し、定義された命令のままストレージ４側の命令受信層５２に対して転送する。
【０２９３】
また、命令受信層５１は、ストレージ２が実行可能な形式に変換し、ストレージ２に対して発行する。
【０２９４】
今後、この定義された命令を「ストレージアクセスインタフェース」（「ＳＡＩ」と略記される）という。ソフトウェアミラーリングＷＲＩＴＥ処理と、ローカルコピー処理を例にあげて説明したが、通常、ホスト１から発行する命令をレプリケーション先のストレージに転送するよりも、ＳＡＩを転送した方が処理や転送量を効率化できる命令であればなんであってもよい。
【０２９５】
ＳＡＩは、ある決められた定義に従い、ホスト１から発行されなければならないので、製品マニュアル等で明示される。また、設定プログラムによって、ユーザ独自のＳＡＩを設定することが出来るようにしても良いことは勿論である。
【０２９６】
図３７は、ＳＡＩの例を示した概念図である。図３７に示した概念図は、図８に示したような前記第１の実施形態で用いた命令形と同様である。図３７は、ソフトウェアミラーリング処理を行う命令であり、データＡをアドレスＡ、アドレスＢの双方に対してＷＲＩＴＥを行う。通常、ホスト１がＳＡＩを用いないでＷＲＩＴＥ命令を発行する場合には、図８に示される命令が発行されることとなる。
【０２９７】
同様に、ローカルコピー処理のＳＡＩの例を示す概念図を図３８に示す。図３８は、アドレスＡから始まる、ある決められた容量のデータ（あるいはＳＡＩ内で容量を指定してもよい）をアドレスＥに対してＷＲＩＴＥ（コピー）を行うという命令である。
【０２９８】
通常、ホスト１がＳＡＩを用いないで、ローカルコピー処理を行う場合には、図３９に示される命令群が発行される。この場合、アドレスＡ−Ｄ、アドレスＥ−Ｈは連続した領域を示している。
【０２９９】
命令受信層５１は、命令受信部５１１と、命令変換部５１２と、命令転送部５１３とを有する。
【０３００】
命令受信部５１１は、命令発行部１２が発行するＳＡＩあるいは通常のストレージアクセス命令を受信する。そして、命令変換部５１２に対して渡す。また、転送すべきＳＡＩあるいは転送すべき通常のストレージアクセス命令を命令転送部５１３に対して渡す。命令転送部５１３に対して渡す処理は、命令変換部５１２に対して渡した処理を行い、ストレージ２に対して適用を行った後でもよいし、そうでなくてもよい。
【０３０１】
命令変換部５１２は、命令受信部５１１から受け取ったＳＡＩあるいは通常のストレージアクセス命令を、ストレージ２の命令実行部２２に対して発行する機能を有する。ここで、通常のストレージアクセス命令はそのまま命令実行部２２に対して渡し、その結果も命令実行部２２から受け取って、ホスト１に対して返す。一方、ＳＡＩの場合は、ＳＡＩをストレージ２が実行できる命令に変換し、命令実行部２２に対して渡す。また、変換した命令の結果を受け取り、ＳＡＩの結果として変換してホスト１に返す。
【０３０２】
命令転送部５１３は、転送すべきＳＡＩあるいは転送すべき通常のストレージアクセス命令を、ネットワーク５を介して命令受信層５２に対して送る。ある程度ここで、ＳＡＩ等をバッファリングすることによって、まとめて転送しても良いし、受け取り次第転送しても良い。
【０３０３】
ストレージ２は、命令実行部２２と記憶部２３とを有し、一般の記憶装置である。
第１の実施形態のストレージ２と同様である。命令実行部２２、記憶部２３も第１の実施形態と同一であるため、説明を省略する。
【０３０４】
命令受信層５２は、転送受信部５２１と命令変換部５２２とを有する。
【０３０５】
転送受信部５２１は、命令受信層５１から送られてきた、ＳＡＩやストレージアクセス命令を受信し、命令変換部５２２に対して渡す。
【０３０６】
命令変換部５２２は、転送受信部５２１から渡されたＳＡＩやストレージアクセス命令を、ストレージ４に対して渡す役割を果たし、命令変換部５１２と同様の処理を行う。
【０３０７】
ストレージ４は、命令実行部２２と、記憶部２３とを有し、ストレージ２と同一の機能を果たす。
【０３０８】
次に、本発明の第２の実施形態のレプリケーションシステムの動作を説明する。
【０３０９】
図４０は、命令受信層５１の動作を説明する為のフローチャートである。
【０３１０】
まず、ホスト１の命令発行部１２が命令発行した命令（通常のストレージアクセス命令又はＳＡＩ）を、命令受信部５１１が受信する（ステップＣ１）。
【０３１１】
次に、命令受信部５１１は、受信した命令を命令変換部５１２に対して渡す（ステップＣ２）。
【０３１２】
命令変換部５１２は、受信した命令がＳＡＩであるかどうか判定を行う（ステップＣ３）。
【０３１３】
ＳＡＩでない場合には、命令変換部５１２は、受信した命令をそのままストレージ２に対して発行する（ステップＣ４）。そして、ストレージ２は、通常通り、その命令を実行し、結果を発行元である命令変換部５１２に返すので、命令変換部５１２はその結果を受け取る（ステップＣ５）。そして、その結果をそのままホスト１に対して返す（ステップＣ６）。
【０３１４】
一方、ステップＣ３において、受信した命令がＳＡＩであった場合には、ＳＡＩの場合の処理を行う（ステップＣ７）。ステップＣ７の場合の処理は、後述する。ＳＡＩの処理が完了後、命令変換部５１２は結果をホスト１に対して返す（ステップＣ６）。
【０３１５】
ステップＣ６の終了後、命令受信部５１１は、命令転送部５１３に、この受信した命令を渡す（ステップＣ８）。
【０３１６】
そして、命令転送部５１３は、命令受信層５２に対して、受け取った命令を転送する（ステップＣ９）。
【０３１７】
また、図４１に示すように、ステップＣ２以降の処理を行う前に、ステップＣ８−Ｃ９を行っても良い。また、ステップＣ８−Ｃ９の処理は、ステップＣ２−Ｃ７の処理とは独立して処理を行う事が出来るため、並行して実行しても良い。
【０３１８】
さらに、図４０、図４１に示した流れ図は、非同期レプリケーションを前提にしているが、ステップＣ９によって転送された命令が、レプリケーション先のストレージに適用されたことを確認した後に、ステップＣ６の処理行うことによって、同期レプリケーションにおいても、本実施形態を適用できる。
【０３１９】
次に、ＳＡＩ処理について説明する。図４２は、図４０、図４１のステップＣ７の処理であり、命令変換部５１２が行うＳＡＩの処理の流れを示した図である。
【０３２０】
まず、命令変換部５１２は、ＳＡＩの種類を判定する処理を行う（ステップＣ１）。
【０３２１】
処理を行うＳＡＩには大きく２種類ある。その１つは、図３７に示されるようなソフトウェアミラーリング処理のようなＳＡＩ（命令W'  アドレスA  アドレスB  データA）であり、ＳＡＩを通常のストレージアクセス命令に変換するだけで、ＳＡＩ処理を完了することが出来るものである。図３７に示されるようなＳＡＩは、図４３に示すようなＷＲＩＴＥ命令２つ（命令W  アドレスA  データAと  命令W  アドレスB  データA）に変換することにより、ＳＡＩで命令されたソフトウェアミラーリング処理を行うことができる。
【０３２２】
このように、ＳＡＩを通常命令に変換するだけでよいものを、「前処理の必要の無いＳＡＩ」と呼び、図４２のステップＤ１の判定においてＮＯとなるＳＡＩとする。
【０３２３】
他の１つは、図３８に示されるようなローカルコピー処理のようなＳＡＩ（命令C  アドレスA  アドレスE）である。このようなＳＡＩは、ＳＡＩ処理を完了するためには、ローカルコピー処理において、ＷＲＩＴＥするデータであるコピー元のデータを、ローカルストレージ（この場合はストレージ２）から受信して、そのデータを書き込む処理を行わなければならない。従って、図３８に示される命令は、図４４に示すような命令（命令rアドレスA）により、アドレスＡに記されるデータを読みこむ（必要であればコピーを行う全てのデータを同様に読み込む）処理を行う。そして、図４４の命令の結果をストレージ２から受け取り、そのデータのＷＲＩＴＥ処理を行う。従って、図４４の結果として、データＡを受信したとすると、図４５に示されるようなローカルコピー先のアドレスに対してデータＡを書き込む命令（命令W  アドレスE  データA）を発行する。
【０３２４】
このように、ＳＡＩ処理を行う為に、ストレージ２とのやり取りが必要になる処理を、「前処理の必要なＳＡＩ」と呼び、図４２のステップＤ１の判定においてＹＥＳとなるＳＡＩとする。
【０３２５】
まず、図４２のステップＤ１の判定の結果、ＮＯであった場合の処理について説明する。ステップＤ１の判定後、命令変換部５１２は、ＳＡＩをストレージが実行できる命令に変換する（ステップＤ２）。これは、例えば図３７に示されるようなソフトウェアミラーリング処理のＳＡＩを、図４３に示される通常のストレージアクセス命令に変換する処理である。
【０３２６】
次に、この変換したストレージアクセス命令を、ストレージ２に対して発行する（ステップＤ３）。ストレージ２は、この命令を、通常通り受信し、記憶部２３に対して実行し、結果を発行元である命令変換部５１２に対して返す。そして、その結果を命令変換部５１２は受け取る（ステップＤ４）。
【０３２７】
受け取った結果は、変換したストレージアクセス命令に対する結果であるので、ＳＡＩで定義してある結果の形式に変換を行う（ステップＤ５）。これは、例えば図３７に示されるようなソフトウェアミラーリング処理のＳＡＩである場合には、２つのＷＲＩＴＥ命令に変換された命令が、双方とも成功したら、成功である通知を返し、失敗すれば失敗通知を返す、等がある。
【０３２８】
命令変換部５１２は、ステップＤ５において変換された結果を、図４０、図４１のステップＣ６でホスト１に返せばよい。
【０３２９】
次に、ステップＤ１の判定において、ＹＥＳである場合の処理について説明する。まず、ステップＤ１の判定後、命令変換部５２２は、ＳＡＩの処理を行う為に、最初に必要となる処理の命令を作成する（ステップＤ６）。これは、例えば図３８に示されるようなローカルコピー処理のＳＡＩの場合には、最初にコピー元のデータをストレージ２から読み込む処理である。つまり、図４４に示されるような命令を作成する。
【０３３０】
次に、ステップＤ６で作成した命令を、ストレージ２に対して発行する（ステップＤ７）。ストレージ２は、その命令を受け取り、通常通りに実行し、結果を命令変換部５１２に対して返す。命令変換部５１２は返された結果を受け取り（ステップＤ８）、受け取った結果からＳＡＩにより実行すべき命令を作成し、発行する（ステップＤ９）。ステップＤ９によって作成される命令は、先程の例によると図４５のような命令となる。図４５に示される命令によって、ローカルコピー処理の実際のＷＲＩＴＥ命令を発行する。そして、ストレージ２は、通常通り命令を受信し、実行して、結果を命令変換部５２２に対して返す。命令変換部５２２は返された結果を受信する（ステップＤ１０）。
【０３３１】
そして、受け取った結果は、ステップＤ１がＮＯの場合と同様に、変換したストレージアクセス命令に対する結果であるので、ＳＡＩで定義してある結果の形式に変換を行う（ステップＤ５）。これは、ローカルコピー処理のＳＡＩであれば、処理の成否を結果として返すことが例としてあげることができる。
【０３３２】
また、図４２では、ステップＤ６−１０の処理を１回行うのみで処理を完了できているが、１つのＳＡＩの処理を行うのに、Ｄ６−１０の処理を複数繰り返すことがあってもよい。
【０３３３】
次に、ストレージ２、ストレージ４の処理について説明する。ストレージ２、４は、通常の記憶装置として、発行された命令を命令実行部２２が受信して、記憶部２３に対して命令を実行し、結果を返すという処理を行う。つまり、一般のストレージ装置として動作する。
【０３３４】
つぎに、命令受信層５２の動作について、図４６を用いて説明する。
【０３３５】
まず、転送受信部５２１が、命令転送部５１３から転送される命令を受信する（ステップＥ１）。
【０３３６】
次に、転送受信部５２１は、その受信した命令を命令変換部５２２に対して渡す（ステップＥ２）。
【０３３７】
次に、命令変換部５２２は、受信した命令がＳＡＩであるかどうかを判定する（ステップＥ３）。
【０３３８】
ステップＥ３の結果、受信した命令がＳＡＩでない場合、その受信した命令をそのままストレージ４に対して発行する（ステップＥ４）。
【０３３９】
ストレージ４は、受信した命令を、通常通り実行し、結果を返すという処理を行うので、ストレージ４から返された結果を命令変換部５２２は受信する（ステップＥ５）。必要あれば、ステップＥ５で受け取った結果を命令受信層５１に対して返す。
【０３４０】
一方、受信した命令がＳＡＩである場合には、ＳＡＩ処理を行う（ステップＥ６）。
【０３４１】
ＳＡＩ処理について、図４７を用いて説明する。ステップＦ１の判定は、図４５のステップＤ１と同様であり、ＳＡＩ処理を行うのにストレージ４とのアクセスが必要かどうかを判定する（ステップＦ１）。
【０３４２】
ソフトウェアミラーリング処理のＳＡＩのような、ステップＦ１の結果がＮＯの場合には、ＳＡＩをストレージが実行できる命令に変換する処理を行う（ステップＦ２）。これは、図４５のステップＤ２と同様の処理である。
【０３４３】
また、変換した通常のストレージアクセス命令を、ストレージ４に対して発行する（ステップＦ３）。この処理も同様に、図４５のステップＤ３と同様の処理である。そして、ストレージ４は、通常通りにストレージアクセス命令を受信し、実行して結果を命令変換部５２２に対して返す。その結果を命令変換部５２２は受信する（ステップＦ８）。必要あれば、受け取った結果をＳＡＩの結果に変換し、命令受信層５１に対して返す。
【０３４４】
ローカルコピー処理のＳＡＩのような、ステップＦ１の結果がＹＥＳの場合には、まず、ＳＡＩにより必要となるストレージアクセス処理の命令を作成する（ステップＦ４）。この処理は、図４５のステップＤ６と同様である。
【０３４５】
そして、ステップＦ５−７の処理に関しても、図４５のステップＤ７−９の処理と同様である。
【０３４６】
ストレージ４は、通常通りにストレージアクセス命令を受信し、実行して結果を命令変換部５２２に対して返す。その結果を命令変換部５２２は受信する（ステップＦ８）。必要あれば、受け取った結果をＳＡＩの結果に変換し、命令受信層５１に対して返す。
【０３４７】
次に、本発明の第２の実施形態の作用効果について説明する。
【０３４８】
本発明の第２の実施形態では、転送量を削減できる命令を発行する際に、ホスト１がＳＡＩを用いるため、余計なデータの転送を行わなくて済む。このため、ネットワーク上に流れるデータ量を削減することができる。
【０３４９】
また、前記第１の実施形態と比べ、ＳＡＩに対して決められた変換を行うだけでよいので、命令受信層に多くの計算資源を必要としないですむ。
【０３５０】
また、前記第１の実施形態と比べ、レプリケーション元において命令のバッファリングを行わなくて済む為、必要とする記憶容量を少なくする事が出来る。
【０３５１】
また、前記第１の実施形態と比べ、レプリケーション元において命令のバッファリングを行わなくて済む為、同期型レプリケーションにおいても容易に適用する事が出来る。
【０３５２】
また、命令実行部２２、記憶部２３はストレージ２，ストレージ４双方において、ホスト１が一般に発行する命令を実行する機能を備えていればよいため、既存のストレージシステムと同様のものを利用できる。
【０３５３】
また、ストレージ２の命令変換部５１２、ストレージ４の命令変換部５２２において、ストレージ２，４の構成にとって最適な記憶箇所にストレージ側で変換することによって、書き込み位置を変更する事が出来る。これを行う為に、ホスト１上のアプリケーションに改変を加える必要がない。
【０３５４】
また、本発明の第２の実施形態は、前記第１の実施形態と比較して、前記第１の実施形態では転送用命令変換部２５が認識できる命令群のみ、転送量を削減する事が出来ないが、第２の実施形態では、ホスト１側で転送量を削減できる事を認識してＳＡＩを発行する事が出来る為、より優れた転送量削減の効果を得ることができる。
【０３５５】
本発明によれば、ネットワークにより接続された待機系システムにデータを保存するレプリケーションシステムや、レプリケーションシステムを実現するためのプログラムといった用途に適用できる。また、災害等の不測な事態に備える為、正常系サイトの負荷を分散する為、ソフトウエアのバージョンアップの為、データマイニングに利用する為、データベース等のデータ記憶領域を最適化する為などの用途のために、複製データを作成するといった用途に適用できる。
【０３５６】
以上本発明を上記実施形態に即して説明したが、本発明は上記実施形態の構成にのみ限定されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【０３５７】
【図１】本発明の第１の実施形態の構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるホストおよびストレージの詳細な構成を示すブロック図である。
【図３】本発明の第１の実施形態におけるストレージ２の動作を示す流れ図である。
【図４】本発明の第１の実施形態におけるストレージ２の動作において、命令実行の流れと、転送処理の流れを分けた場合における、命令実行の処理を示す流れ図である。
【図５】本発明の第１の実施形態におけるストレージ２の動作において、命令実行の流れと、転送処理の流れを分けた場合における、転送処理を示す流れ図である。
【図６】本発明の第１の実施形態におけるストレージ４の動作を示す流れ図である。
【図７】本発明の第１の実施形態におけるホスト１、ストレージ２、ストレージ４の装置間の動作を示すシーケンス図である。
【図８】本発明の第１の実施形態におけるバッファリング部に格納される２種類の命令を示す概念図である。
【図９】本発明の第１の実施形態において、図８の命令を変換した、転送用命令の概念図である。
【図１０】本発明の第１の実施形態において、図８の命令を変換した、転送用命令の概念図である。
【図１１】本発明の第１の実施形態の実施例における、ストレージ２の記憶領域の構成を示す図である。
【図１２】本発明の第１の実施形態の変形例１における、ＲＡＩＤ５処理後に発行された命令の概念図である。
【図１３】本発明の第１の実施形態の変形例１において、図１２の命令を変換した転送用命令の概念図である。
【図１４】本発明の第１の実施形態の変形例２において、ローカルコピー処理によってホスト１から発行される命令の概念図である。
【図１５】本発明の第１の実施形態の変形例２において、図１４の命令のＲＥＡＤ命令が１命令欠けた場合の概念図である。
【図１６】本発明の第１の実施形態の変形例２において、ホストおよびストレージの詳細な構成を示すブロック図の別例である。
【図１７】本発明の第１の実施形態の変形例２において、図１４の命令を変換した転送用命令の概念図である。
【図１８】本発明の第１の実施形態の変形例２において、図１４の命令を変換した図１７とは別の例である転送用命令の概念図である。
【図１９】本発明の第１の実施形態の変形例２において、図１７、図１８のような転送用命令をストレージ４において実行する為の形態に変換した例である。
【図２０】本発明の第１の実施形態の変形例３における、ある時刻のバッファリング部２４の状態の例を示す図である。
【図２１】本発明の第１の実施形態の変形例３における、図２０の状態から区切り２４６が挿入され、その後命令２４５が到着した様子を示す図である。
【図２２】本発明の第１の実施形態の変形例３において、転送処理開始点通知部６を加えた場合の構成を示すブロック図である。
【図２３】本発明の第１の実施形態の変形例４において、監視手段７を備えた場合の構成を示すブロック図である。
【図２４】本発明の第１の実施形態の変形例４における、監視手段７の動作を示す流れ図である。
【図２５】本発明の第１の実施形態の変形例４における転送処理において、バッファリング部２４に格納されている命令の例を示す図である。
【図２６】本発明の第１の実施形態の変形例４における転送処理において、図２５の命令を転送する時の命令群の例である。
【図２７】本発明の第１の実施形態の変形例４における転送処理において、図２６に示されるような命令を受信した場合の、転送命令バッファリング部４５の様子を示す図である。
【図２８】本発明の第１の実施形態の変形例４における転送処理において、図２７の命令を復元した様子を示す図である。
【図２９】本発明の第１の実施形態の変形例４における転送処理において、図２５の命令を転送する時に、命令２４１と命令２４３が変換対象の命令であった場合について示す図である。
【図３０】本発明の第１の実施形態の変形例４における転送処理において、図２９の命令をステップＢ２において復元した際の命令群を示す図である。
【図３１】本発明の第１の実施形態の変形例４における転送処理において、複数の再開可能点通知がバッファリング部２４に格納されている時の例を示す図である。
【図３２】本発明の第１の実施形態の変形例５の全体構成を示すブロック図である。
【図３３】本発明の第１の実施形態の変形例５におけるホストおよびストレージの詳細な構成を示すブロック図である。
【図３４】本発明の第１の実施形態の変形例６の詳細な構成を示すブロック図である。
【図３５】本発明の本発明の第２の実施形態の構成を示すブロック図である。
【図３６】本発明の第２の実施の形態におけるホストおよびストレージ、命令受信層の詳細な構成を示すブロック図である。
【図３７】本発明の第２の実施形態における、ＳＡＩの例（ソフトウェアミラーリング処理）を示した概念図である。
【図３８】本発明の第２の実施形態における、ＳＡＩの例（ローカルコピー処理）を示した概念図である。
【図３９】本発明のＳＡＩを用いない場合に、ホスト１がローカルコピー処理を行う際に発行する命令の概念図である。
【図４０】本発明の第２の実施形態における、命令受信層５１の動作を説明する為のフローチャートである。
【図４１】本発明の第２の実施形態における、図４０のフローチャートの変形例を示すフローチャートである。
【図４２】本発明の第２の実施形態における、命令変換部５１２が行うＳＡＩの処理の流れを示した図である。
【図４３】本発明の第２の実施形態における、図３７のＳＡＩを命令変換部５１２で変換した命令の概念図である。
【図４４】本発明の第２の実施形態における、図３８のＳＡＩを処理する際に、命令変換部５１２が最初に発行する命令の概念図である。
【図４５】本発明の第２の実施形態における、図３８のＳＡＩを処理する際に、命令変換部５１２が図４４の処理後に発行する命令の概念図である。
【図４６】本発明の第２の実施形態における、命令受信層５２の動作を説明するフローチャートである。
【図４７】本発明の第２の実施形態における、命令受信層５２のＳＡＩを処理する動作を説明するフローチャートである。
【図４８】本発明の第１の実施形態における転送用命令への変換の他の例を説明するための図である。
【図４９】本発明の第１の実施形態における転送用命令への変換の他の例を説明するための図である。
【図５０】本発明の第１の実施形態における転送用命令への変換の他の例を説明するための図である。
【図５１】本発明の第１の実施形態における転送用命令への変換の他の例を説明するための図である。
【図５２】本発明の第１の実施形態におけるデータ部の他の例を説明するための図である。
【符号の説明】
【０３５８】
１      ホスト
２、レプリケーション元のストレージシステム（ストレージ）
３、５  ネットワーク
４  レプリケーション先のストレージシステム（ストレージ）
６      転送開始点通知部
７      監視手段
８      変換アルゴリズム設定部
１１    命令発行部
１３    記憶部
２１    命令受信部
２２、４３  命令実行部
２３、４４  記憶部
２４    バッファリング部
２５    転送用命令への変換部（転送用命令変換部）
２６    転送送信部
４１    転送受信部
４２    実行用命令への変換部（実行用命令変換部）
４５  転送命令バッファリング部
２０１、２０２  ボリューム
５１、５２  命令受信層
１２  命令発行部
２４１，２４２，２４３，２４４，２４５，２４６，２４７，２５２，２５３  命令
２４８，２５１，２５４  再開可能点通知
２４９，２５０      転送用命令
７０，８０  命令受信・変換層
５１１  命令受信部
５１２  命令変換部
５１３  命令転送部
５２１  転送受信部
５２２  命令変換部
【図１】
2006146580.tif 000003
【図２】
2006146580.tif 000004
【図３】
2006146580.tif 000005
【図４】
2006146580.tif 000006
【図５】
2006146580.tif 000007
【図６】
2006146580.tif 000008
【図７】
2006146580.tif 000009
【図８】
2006146580.tif 000010
【図９】
2006146580.tif 000011
【図１０】
2006146580.tif 000012
【図１１】
2006146580.tif 000013
【図１２】
2006146580.tif 000014
【図１３】
2006146580.tif 000015
【図１４】
2006146580.tif 000016
【図１５】
2006146580.tif 000017
【図１６】
2006146580.tif 000018
【図１７】
2006146580.tif 000019
【図１８】
2006146580.tif 000020
【図１９】
2006146580.tif 000021
【図２０】
2006146580.tif 000022
【図２１】
2006146580.tif 000023
【図２２】
2006146580.tif 000024
【図２３】
2006146580.tif 000025
【図２４】
2006146580.tif 000026
【図２５】
2006146580.tif 000027
【図２６】
2006146580.tif 000028
【図２７】
2006146580.tif 000029
【図２８】
2006146580.tif 000030
【図２９】
2006146580.tif 000031
【図３０】
2006146580.tif 000032
【図３１】
2006146580.tif 000033
【図３２】
2006146580.tif 000034
【図３３】
2006146580.tif 000035
【図３４】
2006146580.tif 000036
【図３５】
2006146580.tif 000037
【図３６】
2006146580.tif 000038
【図３７】
2006146580.tif 000039
【図３８】
2006146580.tif 000040
【図３９】
2006146580.tif 000041
【図４０】
2006146580.tif 000042
【図４１】
2006146580.tif 000043
【図４２】
2006146580.tif 000044
【図４３】
2006146580.tif 000045
【図４４】
2006146580.tif 000046
【図４５】
2006146580.tif 000047
【図４６】
2006146580.tif 000048
【図４７】
2006146580.tif 000049
【図４８】
2006146580.tif 000050
【図４９】
2006146580.tif 000051
【図５０】
2006146580.tif 000052
【図５１】
2006146580.tif 000053
【図５２】
2006146580.tif 000054