(57)【要約】【課題】  ストレージシステムにおいてデータ転送の回数を減らすことを可能とする管理方法を提供する。【解決手段】  ストレージシステムは、複数の記憶装置と、別のストレージシステムの正ボリュームとリモートコピーペアを構成する副ボリュームを管理するよう制御されるコントローラであって、複数の記憶装置の一部と対応するものを有する。副ボリュームは、リモートコピー処理によって前記別のストレージシステムからのジャーナルデータに含まれるデータを格納する機能を有する。ジャーナルデータとジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、別のストレージシステムからストレージシステムに送信された別のジャーナルデータの関係が条件を満たす場合、コントローラは、ジャーナルデータのデータを副ボリュームに格納する前に、複数の記憶装置の別の部分に対応する第三ボリュームにジャーナルデータを一時的に格納するよう処理する。【選択図】図８
2014142913.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置と、
別のストレージシステムの正ボリュームとリモートコピーペアを構成する副ボリュームを、前記複数の記憶装置の領域と対応するよう管理するコントローラ
を有するストレージシステムであって、
該副ボリュームは、リモートコピー処理によって前記別のストレージシステムから送られたジャーナルデータに含まれるデータを格納する機能を有し、
前記ジャーナルデータと、該ジャーナルデータのシーケンス番号より小さいシーケンス番号を有し前記別のストレージシステムから該ストレージシステムに送信された別のジャーナルデータとの関係が条件を満たす場合、前記コントローラは、前記ジャーナルデータのデータを前記副ボリュームに格納する前に、複数の記憶装置の別の部分に対応する第三ボリュームに前記ジャーナルデータを一時的に格納するよう処理する
ことを特徴とするストレージシステム。
【請求項２】
前記コントローラは、前記関係が条件を満たさない場合、前記第三ボリュームに一時的に格納することなく、前記ジャーナルデータを副ボリュームに直接格納するよう処理する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記第三ボリュームは前記コントローラのキャッシュメモリの一部にあり、前記副ボリュームは前記コントローラの前記キャッシュメモリの別の部分にある
ことを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記コントローラは、
前記別のストレージシステムからシーケンス番号を各々有する複数のジャーナルデータを受け取り、ここで該シーケンス番号は前記正ボリュームにデータを書き込むライト順序を管理する制御情報であり、
前記副ボリュームまたは前記第三ボリュームに格納済みでない複数の受信済みジャーナルデータのうち最小のシーケンス番号を有するジャーナルデータを選択し、
前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがあるかどうかを判断し、
前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する前記別のジャーナルデータとして受信済みでないジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択したジャーナルデータを前記副ボリュームに格納する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記コントローラは、
前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがない場合、
前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する受信済みジャーナルデータがあるかどうかを判断し、ここで該リストアアドレスはジャーナルデータを書き込むための副ボリューム内のアドレスであり、
前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択したジャーナルデータを前記副ボリュームに格納する
ことを特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記コントローラは、
前記選択したジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがない場合、
前記選択したジャーナルデータを、前記第三ボリュームに一時的に格納することなく、直接前記副ボリュームに書き込む
ことを特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記ストレージシステムはさらに、
バッファを有し、
前記別のストレージシステムから送られた前記ジャーナルデータはまず前記バッファに格納されてから、前記ジャーナルデータのデータが前記副ボリュームまたは第三ボリュームに格納される
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項８】
複数の記憶装置を有する正ストレージシステムと、副ストレージシステムとを有するシステムであって、前記副ストレージシステムは、
複数の記憶装置を有し、
前記正ストレージシステムの正ボリュームとリモートコピーペアを構成する副ボリュームを、前記副ストレージシステム内の複数の記憶装置の領域と対応するよう管理し制御されるコントローラと
を有し、
該副ボリュームは、リモートコピー処理によって前記正ストレージシステムから送られたジャーナルデータに含まれるデータを格納する機能を有し、
前記ジャーナルデータと、該ジャーナルデータのシーケンス番号より小さいシーケンス番号を有し前記正ストレージシステムから前記副ストレージシステムに送信された別のジャーナルデータとの関係が条件を満たす場合、前記コントローラは、前記ジャーナルデータのデータを前記副ボリュームに格納する前に、複数の記憶装置の別の部分に対応する第三ボリュームに前記ジャーナルデータを一時的に格納するよう処理する
ことを特徴とするシステム。
【請求項９】
前記コントローラは、前記関係が条件を満たさない場合、前記第三ボリュームに一時的に格納することなく、前記ジャーナルデータを副ボリュームに直接格納するよう処理する
ことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記第三ボリュームは前記コントローラのキャッシュメモリの一部にあり、前記副ボリュームは前記コントローラの前記キャッシュメモリの別の部分にある
ことを特徴とする請求項８に記載のシステム。
【請求項１１】
前記コントローラは、
前記別のストレージシステムからシーケンス番号を各々有する複数のジャーナルデータを受け取り、ここで該シーケンス番号は前記正ボリュームにデータを書き込むライト順序を管理する制御情報であり、
前記副ボリュームまたは前記第三ボリュームに格納済みでない複数の受信済みジャーナルデータのうち最小のシーケンス番号を有するジャーナルデータを選択し、
前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがあるかどうかを判断し、
前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する前記別のジャーナルデータとして受信済みでないジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択したジャーナルデータを前記副ボリュームに格納する
ことを特徴とする請求項８に記載のシステム。
【請求項１２】
前記コントローラは、
前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがない場合、
前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する受信済みジャーナルデータがあるかどうかを判断し、ここで該リストアアドレスはジャーナルデータを書き込むための副ボリューム内のアドレスであり、
前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択ジャーナルデータを前記副ボリュームに格納する
ことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記コントローラは、
前記選択したジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがない場合、
前記選択したジャーナルデータを、前記第三ボリュームに一時的に格納することなく、直接前記副ボリュームに書き込む
ことを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記副ストレージシステムはさらに、
バッファを有し、
前記正ストレージシステムから送られた前記ジャーナルデータは、まず前記バッファに格納されてから、前記ジャーナルデータのデータが前記副ボリュームまたは第三ボリュームに格納される
ことを特徴とする、請求項８に記載のシステム。
【請求項１５】
複数の記憶装置を有する正ストレージシステムから副ストレージシステムへリモートコピーを行うデータプロセッサを制御する複数の指示を格納するコンピュータ読取可能記憶媒体であって、前記複数の指示は、
前記データプロセッサに指示を与えて、前記正ストレージシステムの正ボリュームとリモートコピーペアを構成する副ボリュームを管理し、前記副ボリュームは複数の記憶装置の一部と対応し、該副ボリュームは、リモートコピー処理によって前記正ストレージシステムから送られたジャーナルデータに含まれるデータを格納する機能を有し、
データプロセッサに指示を与えて、前記ジャーナルデータと該ジャーナルデータのシーケンス番号より小さいシーケンス番号を有し前記正ストレージシステムから前記副ストレージシステムに送信された別のジャーナルデータとの関係が条件を満たす場合、前記ジャーナルデータのデータを前記副ボリュームに格納する前に、複数の記憶装置の別の部分に対応する第三ボリュームにジャーナルデータを一時的に格納させる
ことを特徴とする、コンピュータ読取可能記憶媒体。
【請求項１６】
前記複数の指示は、
前記データプロセッサに指示を与えて、前記関係が条件を満たさない場合、前記第三ボリュームに一時的に格納することなく、前記ジャーナルデータを副ボリュームに直接格納させる
ことを特徴とする請求項１５に記載のコンピュータ読取可能記憶媒体。
【請求項１７】
前記第三ボリュームは前記コントローラのキャッシュメモリの一部にあり、前記副ボリュームは前記コントローラの前記キャッシュメモリの別の部分にある
ことを特徴とする請求項１５に記載のコンピュータ読取可能記憶媒体。
【請求項１８】
前記複数の指示はさらに、
前記データプロセッサに指示を与えて、前記別のストレージシステムからシーケンス番号を各々有する複数のジャーナルデータを受け取らせ、ここで該シーケンス番号は前記正ボリュームにデータを書き込むライト順序を管理する制御情報であり、
前記データプロセッサに指示を与えて、前記副ボリュームまたは前記第三ボリュームに格納済みでない複数の受信済みジャーナルデータのうち最小のシーケンス番号を有するジャーナルデータを選択させ、
前記データプロセッサに指示を与えて、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがあるかどうかを判断させ、
前記データプロセッサに指示を与えて、前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する前記別のジャーナルデータとして受信済みでないジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択したジャーナルデータを前記副ボリュームに格納させる
ことを特徴とする請求項１５に記載のコンピュータ読取可能記憶媒体。
【請求項１９】
前記複数の指示はさらに、
前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがない場合、
前記データプロセッサに指示を与えて、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する受信済みジャーナルデータがあるかどうかを判断させ、ここで該リストアアドレスはジャーナルデータを書き込むための副ボリューム内のアドレスであり、
前記データプロセッサに指示を与えて、前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択ジャーナルデータを前記副ボリュームに格納させる
ことを特徴とする請求項１８に記載のコンピュータ読取可能記憶媒体。
【請求項２０】
前記複数の指示はさらに、
前記選択したジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがない場合、
前記データプロセッサに指示を与えて、前記選択したジャーナルデータを、前記第三ボリュームに一時的に格納することなく、直接前記副ボリュームに書き込む
ことを特徴とする請求項１９に記載のコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明はストレージシステム、リモートコピーシステムおよびリモートコピーシステムのデータコピー方法に関し、特に、ストレージシステム内のデータ転送の回数を減らすための管理方法に関する。
【背景技術】
【０００２】
０００２    多くのストレージシステム製品は、災害復旧のためのリモートコピー機能を有する。リモートコピー機能は、正ストレージシステム内の正ボリューム（記憶領域）に格納されたデータを、副ストレージシステムの副ボリュームにコピーする機能である。リモートコピーには、同期リモートコピーと非同期リモートコピーという二つのタイプがある。同期リモートコピーでは、サーバからのライト処理と同時にデータを転送し、一方、非同期リモートコピーでは、サーバからのライト処理とは非同期にデータを転送する。
【０００３】
０００３    特許文献１（米国特許第７，８６５，６８０号公報）には、非同期リモートコピーにおけるデータコピー方法が開示される。非同期リモートコピーでは、正ボリュームから直接副ボリュームにデータは転送されず、データはまずバッファ領域に転送されてから、副ボリュームに格納される。バッファ領域はジャーナルボリュームと表現される。バッファ領域はキャッシュメモリを含むことがある。ジャーナルボリューム等のバッファ領域にデータを一旦転送する理由は、サーバからＳＶＯＬ（副ボリューム）へのライト要求とＰＶＯＬ（正ボリューム）へのライト要求を同一にすることにより、データの整合性を保証するためである。
【０００４】
０００４    非同期リモートコピーでは、データはバッファに転送されるため、処理のオーバヘッドが大きくなり、キャッシュメモリ等のハードウェアの利用効率が悪くなる。その結果、システムの性能が低減してしまう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７，８６５，６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
０００５    本発明の実施例は、リモートコピー等のデータコピーの際にストレージシステム内で行われるデータ転送の回数を減らす技術に関する。副ストレージシステムは、同一のコピー先アドレスを有する他のＪＮＬ（ジャーナル）がない場合、直接ＳＶＯＬへデータを転送する。本発明により、データ転送の回数を減らすことができる。その結果、キャッシュメモリおよびプロセッサの利用効率を向上させることができる。
【０００７】
０００６    本発明の一つの態様によると、ストレージシステムは、複数の記憶装置と、別のストレージシステムの正ボリュームとリモートコピーペアを構成する副ボリュームを管理するよう制御されるコントローラであって、複数の記憶装置の一部と対応するものを有する。該副ボリュームは、リモートコピー処理によって前記別のストレージシステムから送られたジャーナルデータに含まれるデータを格納する機能を有する。前記ジャーナルデータと該ジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、前記別のストレージシステムから該ストレージシステムに送信された別のジャーナルデータの関係が条件を満たす場合、前記コントローラは、前記ジャーナルデータのデータを前記副ボリュームに格納する前に、複数の記憶装置の別の部分に対応する第三ボリュームにジャーナルデータを一時的に格納するよう処理する。
【０００８】
０００７    ある実施例によると、前記コントローラは、前記関係が条件を満たさない場合、前記第三ボリュームに一時的に格納することなく、前記ジャーナルデータを副ボリュームに直接格納するよう制御される。前記第三ボリュームは前記コントローラのキャッシュメモリの一部にあり、前記副ボリュームは前記コントローラの前記キャッシュメモリの別の部分にある。前記コントローラは、前記別のストレージシステムからシーケンス番号を各々有する複数のジャーナルデータを受け取り、ここで該シーケンス番号は前記正ボリュームにデータを書き込むライト順序を管理する制御情報であり、前記副ボリュームまたは前記第三ボリュームに格納済みでない複数の受信済みジャーナルデータのうち最小のシーケンス番号を有するジャーナルデータを選択し、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがあるかどうかを判断し、前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する前記別のジャーナルデータとして受信済みでないジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択したジャーナルデータを前記副ボリュームに格納する。
【０００９】
０００８  特定の実施例によると、前記コントローラは、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有する受信済みでないジャーナルデータがない場合、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する受信済みジャーナルデータがあるかどうかを判断し、ここで該リストアアドレスはジャーナルデータを書き込むための副ボリューム内のアドレスであり、前記条件として、前記選択したジャーナルデータのシーケンス番号よりも小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがある場合、前記選択したジャーナルデータを一時的に前記第三ボリュームに格納してから、前記選択ジャーナルデータを前記副ボリュームに格納する。
【００１０】
０００９    ある実施例によると、前記コントローラは、前記選択したジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、かつ前記選択したジャーナルデータと同じリストアアドレスを有する前記別のジャーナルデータとして受信したジャーナルデータがない場合、前記選択したジャーナルデータを、前記第三ボリュームに一時的に格納することなく、直接前記副ボリュームに書き込む。
【００１１】
００１０  ある実施例によると、前記ストレージシステムはさらにバッファを有する。前記別のストレージシステムから送られた前記ジャーナルデータはまず前記バッファに格納されてから、前記ジャーナルデータのデータが前記副ボリュームまたは第三ボリュームに格納される。
【００１２】
００１１    本発明の別の態様によると、システムは、複数の記憶装置を有する正ストレージシステムと、副ストレージシステムとを有する。前記副ストレージシステムは、複数の記憶装置を有し、前記正ストレージシステムの正ボリュームとリモートコピーペアを構成する副ボリュームを、前記副ストレージシステム内の複数の記憶装置の領域と対応するよう管理し制御されるコントローラを有する。該副ボリュームは、リモートコピー処理によって前記正ストレージシステムから送られたジャーナルデータに含まれるデータを格納する機能を有する。前記ジャーナルデータと該ジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、前記正ストレージシステムから前記副ストレージシステムに送信された別のジャーナルデータの関係が条件を満たす場合、前記コントローラは、前記ジャーナルデータのデータを前記副ボリュームに格納する前に、複数の記憶装置の別の部分に対応する第三ボリュームにジャーナルデータを一時的に格納するよう処理する。
【００１３】
００１２    本発明の別の態様によると、複数の記憶装置を有する正ストレージシステムから副ストレージシステムへリモートコピーを行うデータプロセッサを制御する複数の指示を格納するコンピュータ読取可能記憶媒体が提供される。前記複数の指示は、前記データプロセッサに指示を与えて、前記正ストレージシステムの正ボリュームとリモートコピーペアを構成する副ボリュームを管理し、前記副ボリュームは複数の記憶装置の一部と対応し、該副ボリュームは、リモートコピー処理によって前記正ストレージシステムから送られたジャーナルデータに含まれるデータを格納する機能を有し、データプロセッサに指示を与えて、前記ジャーナルデータと該ジャーナルデータのシーケンス番号より小さいシーケンス番号を有し、前記別のストレージシステムから該ストレージシステムに送信された別のジャーナルデータの関係が条件を満たす場合、前記コントローラは、前記ジャーナルデータのデータを前記副ボリュームに格納する前に、複数の記憶装置の別の部分に対応する第三ボリュームにジャーナルデータを一時的に格納する。
【発明の効果】
【００１４】
０００５    副ストレージシステムは、同一のコピー先アドレスを有する他のＪＮＬ（ジャーナル）がない場合、直接ＳＶＯＬへデータを転送する。本発明により、データ転送の回数を減らすことができる。その結果、キャッシュメモリおよびプロセッサの利用効率を向上させることができる。
【００１５】
００１３    上述した本発明の特徴および効果、およびその他の特徴および効果は、後に述べる本発明の実施形態の詳細な説明から、当業者にとって明らかとなろう。
【図面の簡単な説明】
【００１６】
【図１】００１４    本発明の実施例にかかるサーバに着目したコンピュータシステムを示す図である。
【図２】００１５    本発明の実施例に係るストレージシステムに着目したコンピュータシステムを示す図である。
【図３】００１６    リモートコピー構成の例を示す図である。
【図４】００１７    シーケンス番号の例を示す図である。
【図５】００１８    ストレージ制御情報の例を示す詳細なブロック図である。
【図６】００１９    ストレージプログラムの例を示す詳細なブロック図である。
【図７】本発明によって解決すべき問題であるリモートコピー処理中に各ハードウェアが何回アクセスされたかを示す図である。
【図８】００２０    図７に示す問題を解決する本発明の実施例を示す概念図である。
【図９】００２１    ＪＮＬ作成プログラムの処理の例を示すフロー図である。
【図１０】００２２    ＪＮＬ転送プログラムの処理の例を示すフロー図である。
【図１１】００２３    リストア先テーブルの例を示す図である。
【図１２】００２４    受信したシーケンス番号ビットマップの例である。
【図１３】００２５    ＪＮＬリードプログラムの処理の例を示すフロー図である。
【図１４】００２６    ＪＮＬリストアプログラムの処理の例を示すフロー図である。
【図１５】００２７    ＪＶＯＬリードプログラムの処理の例を示すフロー図である。
【図１６】００２８    一時停止プログラムの処理の例を示すフロー図である。
【図１７】００２９    一時停止要求を受け取った後のＪＮＬリードプログラム終了処理の例を示すフロー図である。
【発明を実施するための形態】
【００１７】
００３１    以下に記す本発明についての詳細な説明では、開示の一部を成すとともに本発明を実施する例示的な実施形態として示される添付図面を参照するが、本発明は図面の内容に限定されるものではない。図面において、類似する数字は複数の図面においてほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では、以下の説明および図面に示される通り様々な実施の形態を示すが、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態をも含む。本明細書における「一実施例」、「本実施例」、又は「上述の実施例」の文言は、ある実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明の理解を深めるために多くの具体的かつ詳細な記載がなされている。ただし、本発明を実施するためにこれらの具体的かつ詳細な内容すべてが必要なわけではないことは、当業者にとって明らかであろう。状況によっては、曖昧な記載を避けるために、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ／又はブロック図において図示していない場合もある。
【００１８】
００３２    さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズムおよび記号表現で示されている。これらのアルゴリズム記述及び記号表現は、データ処理分野の当業者がその新しいアイディアの本質を最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相応量の物理的操作を必要とする。必ずしもそうとは限らないが、通常はかかる数量は、格納、転送、組み合わせ、比較その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、記号、文字、用語、数字、命令等として言及することがある。但し、上記の及び類似の用語すべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルに過ぎないことに留意すべきである。別段の記載がない限り、以下の解説から明らかなように、説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた説明は、コンピュータシステムのレジスタ及びメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的（電気的）数量として同等に表されるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作またはプロセスを含み得る。
【００１９】
００３３    本発明は、本明細書における操作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構築された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、リードオンリーメモリ、ランダムアクセスメモリ、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等（但し、これらに限定されない）のコンピュータ読取可能記憶媒体に格納され得る。本明細書において提示するアルゴリズム及び態様は、特定のコンピュータ又はその他の装置とは本質的に関係していない。様々な汎用システムを、本明細書の教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法を実施するためにより特化した装置を構築した方がよい場合も有り得る。さらに本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示内容を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置（ＣＰＵ）、プロセッサ、又はコントローラによって実行され得る。
【００２０】
００３４    下記に詳細に説明する本発明の各実施例は、ストレージシステムにおいて、リモートコピー等のデータコピーを行う際のデータ転送の回数を減らすことにより、性能を向上した装置、方法およびコンピュータプログラムを提供するものである。
【００２１】
００３５    図１は、本発明の実施例に係るサーバに着目したコンピュータシステムを示す図である。本コンピュータシステムは、サーバ１００とストレージシステム２００を有する。サーバは、ＯＳ（オペレーティングシステム）１０１、プロセッサ１０２、ＤＲＡＭ１０３、サーバ制御情報１０４、アプリケーション１０５、およびストレージＩ／Ｆ（インタフェース）１０８を有する。サーバ１００は、ＯＳとデータベースシステム等のアプリケーションを実行することによりサービスを提供する。データベースシステムによって処理されたデータはストレージシステム２００に格納される。サーバ１００はネットワーク１１０を介してストレージシステム２００に接続される。
【００２２】
００３６    図２は、本発明の実施例に係るストレージシステムに着目したコンピュータシステムを示す図である。ストレージシステム２００は、キャッシュユニット２０１、ストレージＩ／Ｆ２０２、プロセッサ２０３、ディスクＩ／Ｆ２０４、ボリューム２０５、ＨＤＤ（ハードディスクドライブ）２０６、ストレージ制御情報２０７、およびストレージプログラム２０８を有する。
【００２３】
００３７    ストレージＩ／Ｆ２０２は一つ以上のポート２０９とバッファ２１０を有する。ポート２０９はネットワーク１１０を介してサーバ１００に接続され、サーバ１００との通信を仲介する。バッファ２１０は、サーバ１００とストレージシステム２００間の転送データを格納するための一時記憶領域である。プロセッサ２０３は、ストレージプログラム２０８に格納された多種のプログラムを実行することにより、多様な処理を行うことができる。さらに、プロセッサ２０３は、ストレージ制御情報２０７に格納された多種の情報を使用することにより、多様な処理を行うことができる。ディスクＩ／Ｆ２０４はバスを介して、物理ストレージ装置の例としての少なくとも一つのＨＤＤ２０６に接続される。データを管理するよう構成されたボリューム２０５は、例えばＨＤＤ２０６の少なくとも一つの記憶領域により構成される。物理記憶装置はＨＤＤ２０６に限られず、例えばＳＳＤ（ソリッドステートドライブ）またはＤＶＤであってもよい。さらに、少なくとも一つのＨＤＤ２０６をパリティグループの単位として集め、ＲＡＩＤ（Redundant  Arrays  of  Independent  Disks）などの高い信頼性を有する技術を適用することもできる。ストレージ制御情報２０７は多種のプログラムを使用することにより、多様な情報を格納する。ストレージプログラム２０８は、例えばリード処理プログラム、ライト処理プログラム等の多様なプログラムを格納する。キャッシュユニット２０１はパフォーマンスブーストのために、ＨＤＤ２０６に格納されるデータをキャッシュする。
【００２４】
００３８    図３は、リモートコピー構成の例を示す。正ストレージシステム６００はリモートコピー元となるストレージシステムであり、サーバによって使用されるデータを格納する正ボリューム（ＰＶＯＬ）６０１と、一時的に転送データを格納するジャーナルボリューム（ＪＶＯＬ）６０２と、副ストレージシステム７００に接続されるストレージＩ／Ｆ６０３を有する。副ストレージシステム７００はリモートコピー先のストレージシステムであって、ＰＶＯＬ６０１からのコピーデータを格納する副ボリューム（ＳＶＯＬ）７０１と、転送データを一時的に格納するＪＶＯＬ７０２と、正ストレージシステム６００に接続されるストレージＩ／Ｆ７０３とを有する。ＰＶＯＬ６０１とＳＶＯＬ７０１間の関係は、リモートコピーペアと呼ばれる。正ストレージシステム６００と副ストレージシステム７００は、データ転送のための一つ以上のストレージＩ／Ｆ６０３、７０３を有する。
【００２５】
００３９    非同期リモートコピー処理のフローを下記に簡単に説明する。正ストレージシステム６００はサーバ１００からライト要求を受け取る。正ストレージシステム６００はライトデータをＰＶＯＬ６０１とＪＶＯＬ６０２内にジャーナル（ＪＮＬ）として格納する。ＪＮＬは転送データであり、ＪＶＯＬ６０２はＪＮＬを一時的に格納するための記憶領域である。ＪＶＯＬはボリュームである必要はない。ＪＮＬはキャッシュユニット２０１に格納することができる。その後、正ストレージシステム６００はサーバに完了メッセージを送る。ＪＮＬは副ストレージシステム７００のＪＶＯＬ７０２に非同期に転送される。最後に、ＪＶＯＬ７０２に格納されたＪＮＬがＳＶＯＬ７０１にコピーされる。より詳細には、ＪＮＬは、ジャーナル制御ブロック（ＪＮＣＢ）とジャーナルデータ（ＪＮＬデータ）から構成される。ＪＮＬデータは書き込みデータのコピーである。ＪＮＣＢは、ＪＶＯＬのＪＮＬデータアドレス、ＳＶＯＬのコピー先アドレス、およびサーバ１００からのライト要求のライトシーケンス情報を含む。ライトシーケンス情報を図４に示す。
【００２６】
００４０    図４は、シーケンス番号２２０の例を示す。この例において、シーケンス番号の現在の値は「０」である。「０」がサーバ１００からの次のライト要求に割り当てられる。この図には一つのシーケンス番号のみが管理されている例が示されるが、整合性を保証するための各ユニットに対するシーケンス番号を管理することができる。一般的に、このユニットは整合性グループと呼ばれる。
【００２７】
００４１    図５は、ストレージ制御情報２０７の例を示す詳細なブロック図である。シーケンス番号２２０が正ストレージシステム６００において使用される。受信したシーケンス番号ビットマップ２２１、リストア先テーブル２２２、および最大リストアシーケンス番号２２３が副ストレージシステム７００内で使用される。シーケンス番号２２０はサーバ１００からのライト順序を管理するための制御情報である。受信したシーケンス番号ビットマップ２２１は、副ストレージシステムにコピーされたＪＮＬのシーケンス番号を管理する。リストア先テーブル２２２は、各リストア先アドレスにリストアされるべきＪＮＬを管理する。最大リストアシーケンス番号２２３はＳＶＯＬにリストアされたＪＮＬの最大シーケンス番号を管理する。
【００２８】
００４２    図６は、ストレージプログラム２０８の例を示す詳細なブロック図である。ＪＮＬ作成プログラム２３０およびＪＮＬ転送プログラム２３１が正ストレージシステムで実行される。ＪＮＬリードプログラム、ＪＮＬリストアプログラムおよびＪＶＯＬリードプログラムが副ストレージシステムで実行される。ＪＮＬ作成プログラム２３０は、ＪＮＬを作成するためのプログラムである。ＪＮＬ転送プログラム２３１は、ＪＮＬを副ストレージシステムに送るためのプログラムである。ＪＮＬリードプログラム２３２は、リードコマンドを発行し正ストレージシステムからＪＮＬを受信するためのプログラムである。ＪＮＬリストアプログラム２３３は、ＪＮＬデータを副ボリュームに書き込むためのプログラムである。ＪＶＯＬリードプログラム２３４は、ＪＮＬデータをＪＶＯＬから転送するためのプログラムである。これらのプログラムの詳細を以下に記す。
【００２９】
００４３    図７は、リモートコピー処理のために各ハードウェアが何回アクセスされるかの例を示す図であり、本発明がその解決を目的とする問題である。図７の例は、正ボリュームから最初に副ボリュームへＪＮＬを転送する状態を示す。ＪＮＬデータはすでに正ボリュームに格納されており、ＪＮＣＢは正ボリュームのアドレスを有する。ＪＮＣＢ作成の処理フローを図９に示す。ＲＡＩＤ１を利用してＨＤＤのデータがミラーされると想定する。そのため、ＨＤＤへのデータ書き込みは２回行われる。
【００３０】
００４４    最初に、ＰＶＯＬに対応するＨＤＤから読み出されるデータはＪＶＯＬ領域６０５のＪＮＬデータとしてキャッシュユニット２０１に書き込まれる。次に、ＪＮＬデータは正ストレージシステム内のストレージＩ／Ｆのバッファ６０６に転送される。三番目に、ＪＮＬデータは副ストレージシステム内のストレージＩ／Ｆのバッファ７０６にさらに転送される。四番目に、転送されたＪＮＬデータは、ＪＶＯＬ領域７０４のＪＶＯＬデータとしてキャッシュユニット２０１に書き込まれる。このとき、ミラーデータが作成される。このようにして、キャッシュユニット２０１に対する二回の書き込みが行われる。第三ステップの転送処理は、一つ以上のプロセッサにより一つ以上のＪＮＬ転送ジョブとして並行して行われる。リストア処理はシーケンス番号順にリストアされるよう、ＪＶＯＬで待機が行われる。待機後、ＪＮＬデータはバッファ７０６を介して、ＳＶＯＬ領域７０５のＳＶＯＬデータとしてキャッシュユニット２０１に転送される。ミラーデータの内の一つがキャッシュユニット２０１から読み出され、バッファ７０６から二度転送される。このように、キャッシュユニット２０１に対する一回のリードと二回のライトが行われる。最後に、データはミラーを構成するＨＤＤへ転送される。このように、キャッシュユニット２０１に対する二回のリードが行われる。初期コピーの場合、副ストレージシステム内で、キャッシュユニット２０１に対して７回のアクセスが行われる。この第四ステップは、キャッシュユニット２０１、バッファ７０６およびプロセッサの資源消費を増やし、性能低下をもたらす。
【００３１】
００４５    図８は、図７に示す問題を解決する本発明の実施例を示す概念図である。本実施例では、図８に示すように、ＪＮＬデータを副ストレージシステム７００のバッファ７０６からＪＶＯＬ領域７０４に転送することなく、ＪＮＬデータを直接ＳＶＯＬ領域７０５に転送する。データ整合性を保証する所定の条件が満足されて初めて、バッファ７０６からＳＶＯＬ領域７０５への直接転送が実行される。具体的には、一つ以上のＪＮＬのリストアアドレス（ＳＶＯＬアドレス）が同一でない場合、ＪＮＬのシーケンス番号よりも小さいシーケンス番号を有するリストアされていないＪＮＬがあったとしても、ストレージシステムはＪＮＬをリストアする。ＪＮＬ転送処理を図９から図１７に示す。
【００３２】
００４６    図９は、ＪＮＬに対しＰＶＯＬデータを正ストレージシステムのＳＶＯＬにコピーさせるためのＪＮＬ作成プログラム２３０の処理の例を示すフロー図である。最初に、ボリュームコピープログラムは、ＰＶＯＬの元のアドレスを算出する（ステップＳ１００）。処理の開始時、この値はＰＶＯＬの先頭アドレスである。その後、プログラムは現在のシーケンス番号を取得し、その値をインクリメントする（ステップＳ１０１）。その後、プログラムはＪＮＣＢを作成し、ＪＶＯＬに格納する（ステップＳ１０２）。ＪＮＣＢは取得したＰＶＯＬアドレス、シーケンス番号、ＳＶＯＬ  ＩＤ等を含む。一般的に、リモートコピー機能はＰＶＯＬに対応する副ストレージシステムＩＤとＳＶＯＬ  ＩＤを管理するためのリモートコピーペアテーブルを有する。この実施例において、ペアテーブルは省略されている。ＪＮＣＢはストレージ制御情報に格納してもよい。次にプログラムは、ＰＶＯＬアドレスがＰＶＯＬの最終アドレスであるかを確認する（ステップＳ１０３）。ＰＶＯＬアドレスが最終アドレスである場合、すべてのＰＶＯＬ領域のＪＮＬ作成が完了したということを意味する。プログラムは処理を終了する（ステップＳ１０４）。ステップＳ１０３の結果が「ＮＯ」の場合、プログラムはステップＳ１００に戻り、ＰＶＯＬの次のアドレスの処理を行う。プログラムにより、ＰＶＯＬのすべての領域にＪＮＬが作成される。
【００３３】
００４７    図１０は、副ストレージシステムからのＪＮＬリード要求を受け取ってＪＮＬを転送するＪＮＬ転送プログラム２３１の処理の例を示すフロー図である。最初に、ＪＮＬ転送プログラムは副ストレージシステムからＪＮＬリード要求を受け取る（Ｓ２００）。その後、プログラムは転送すべきＪＮＬを決定する（Ｓ２０１）。一つ以上の方法が考えられる。例えば、最小シーケンス番号から所定の番号を選択する。または、ジョブＩＤ等を使用して処理のためのシーケンス番号を算出するルールを作成する。その後、プログラムは決定したＪＮＬに対応するＰＶＯＬアドレスを取得する（Ｓ２０２）。この処理は、ＪＮＣＢ内のＰＶＯＬアドレス情報を参照することにより行われる。取得ＰＶＯＬアドレスに対応するデータがキャッシュユニットにない場合、プログラムはキャッシュユニット内に領域を割り当て、ＨＤＤに対してリード要求を発行する（Ｓ２０３）。データをキャッシュユニットに格納後、プログラムはバッファ内に領域を割り当て、ＪＮＣＢとＪＮＬデータをキャッシュユニットから割り当て領域に転送する（Ｓ２０４）。その後、プログラムはストレージＩ／Ｆに対して、ＪＮＬをバッファから副ストレージシステムに対して転送するよう指示し（Ｓ２０５）、処理を終了する（Ｓ２０６）。
【００３４】
００４８    ＪＮＬデータをバッファから直接副ストレージシステム内のＳＶＯＬに転送する処理について説明した。この処理はデータ整合性のため、各ＪＮＬのリストアアドレスがリストア前と同じであるかを確認する。アドレスが同じでない場合、リストアが実行される。
【００３５】
００４９    図１１は、リストアアドレスを検索するためのリストア先テーブル２２２の例を示す。リストアアドレスから算出されたハッシュ値エントリ８００が図の左側に示される。リストアアドレスとは、ＳＶＯＬ  ＩＤ（識別子）とＳＶＯＬ内のアドレスを意味する。ＳＶＯＬ  ＩＤとＳＶＯＬ内アドレスをハッシュ値の代わりに使用することもできる。ハッシュ値を使うことにより、テーブルのサイズを小さくすることができる。シーケンス番号リスト８０１をハッシュ値エントリ８００のために管理する。ＳＥＱ＃は、シーケンス番号を意味する。図示の例において、シーケンス番号「１００」が付与されたＪＮＬのリストアアドレスから算出されたハッシュ値は「ａａａ」である。シーケンス番号「１０２」と「１０３」のハッシュ値は「ｃｃｃ」である。これは、リストアアドレスが同じであることを意味する。シーケンス番号「１０３」より小さいシーケンス番号１０２を有するＪＮＬを最初にリストアする。リストア処理において、このテーブル内のリストアアドレスを確認することにより、データ整合性を保証することができる。
【００３６】
００５０    データ整合性を保証するためには、別の制御情報も必要である。制御情報を図１２に示す。例えば、図１１には、シーケンス番号「１００」にも「１０１」にも、同じリストアアドレスを有するＪＮＬは存在しない。しかしながら、まだ副ストレージシステムに転送されていないシーケンス番号「９９」のＪＮＬのリストアアドレスは同じであるかもしれない。副ストレージシステムへのＪＮＬ転送は一つ以上のプロセッサ、ジョブおよび物理パスを使って並行して行われるため、シーケンス番号「９９」のＪＮＬはもっと遅い時間に到着する可能性がある。その場合、シーケンス番号「１００」や「１０１」のＪＮＬがリストアされると、ＳＶＯＬデータは整合性を有しない可能性がある。
【００３７】
００５１    図１２は、受信したシーケンス番号ビットマップ２２１の例を示す。受信したシーケンス番号ビットマップ２２１は上述のデータ不一致を避けるために使用される。受信したビットマップ９０１はＪＮＬの到達状態を管理する。「ＯＮ」はＪＮＬがすでに受信されたという意味である。カッコ内の数字はＳＥＱ＃を意味する。シーケンス番号「０」から「１０２」と「１０５」を有するＪＮＬはすでに受信され、シーケンス番号「１０３」等を有するＪＮＬはまだ受信されていない。例に示したような簡易なデータ構造の例においては、受信したシーケンス番号ビットマップ２２１のサイズは非常に大きい。制御情報のサイズを小さくするため、いくつかの方法がある。最終ビットを使用した後、先頭ビットはＳＥＱ＃「０」以外のＳＥＱ＃において再利用することができる。その場合、先頭ビットにどのＳＥＱ＃が対応するかを管理する制御情報が必要となる。例えば、最終ビットがＳＥＱ＃「１００」と共に使用される場合、先頭ビットがＳＥＱ＃「１０１」と共に再利用され、ビット「０」とＳＥＱ＃「１０１」との対応関係が管理される。リストア先テーブル２２２を使ったアドレスチェック処理は、図１１に示す不一致を避けるため、省略することなくＪＮＬを受信した領域すべてに実行される。ＪＮＬが範囲にない場合、データ不一致が起こる可能性があるため、この時点ではＳＶＯＬへの直接のリストアは行われない。次に、図１１および図１２の内容を考慮に入れたＪＮＬリード処理を説明する。
【００３８】
００５２    図１３は、ＪＮＬリードプログラム２３２の処理の例を示すフロー図である。最初に、ＪＮＬリードプログラムは正ストレージシステムに対してＪＮＬリード要求を発行し（ステップＳ３００）、正ストレージシステムからＪＮＬを受信する（ステップＳ３０１）。その後、プログラムはリストアアドレスに基づいてハッシュ値を算出し、ハッシュ値とシーケンス番号を各ＪＮＬについてリストア先テーブル２２２に登録する（ステップＳ３０２）。さらに、プログラムは各ＪＮＬについて、受け取ったシーケンス番号ビットマップ２２１を更新する（ステップＳ３０３）。制御情報を更新した後、プログラムは受け取ったＪＮＬから最小のシーケンス番号を有するＪＮＬを選択する（ステップＳ３０４）。その後プログラムは、選択したＪＮＬのシーケンス番号より小さいシーケンス番号を有する未受信のＪＮＬがあるかどうかを確認する（ステップＳ３０５）。この確認は、図１２のシーケンス番号ビットマップ２２１を使って行われる。ステップＳ３０５の結果が「ＮＯ」の場合、プログラムは、選択したＪＮＬと同じリストアアドレスを有し、かつ選択したＪＮＬよりも小さいシーケンス番号を有する受信済みＪＮＬがあるかどうかを確認する（ステップＳ３０６）。ステップＳ３０６の結果が「ＮＯ」の場合、ＪＮＬがバッファからＳＶＯＬディレクトリにリストアされたとき、データ整合性が保証される。プログラムはステップＳ３０７に進み、リストアのためにＪＮＬリストアプログラム２３３を呼び出す（ステップＳ３０７）。ステップＳ３０７におけるＳＥＱ＃のリストア後、図１１からＳＥＱ＃が削除される。ステップＳ３０７の後、未処理のＪＮＬがある場合（ステップＳ３０８）、プログラムはステップＳ３０４に戻り、最小シーケンス番号を有する次のＪＮＬの処理を実行する。ステップＳ３０５かステップＳ３０６の結果が「ＹＥＳ」である場合、プログラムはステップＳ３０９に進み、データをＪＶＯＬへ転送する（ステップＳ３０９）。このＪＮＬリード処理は一つ以上のプロセッサおよびジョブを使って並行して行われる。
【００３９】
００５３    ステップＳ３０９に進む前に、所定の時間待機した後、ステップＳ３０５またはＳ３０６を再実行することができる。これは、待機中に別のＪＮＬリードまたはＪＮＬリストア処理を実行することにより、Ｓ３０５またはＳ３０６の条件が満足する可能性があるからである。未処理のＪＮＬがない場合またはステップＳ３０９が完了した場合、プログラムはステップＳ３１０に進み、処理を終了する（ステップＳ３１０）。ステップＳ３０６の結果が「ＹＥＳ」の場合、プログラムはステップＳ３０９において選択されたＪＮＬデータをＪＶＯＬに転送した後、ステップＳ３０４に進むことができる。これは、受信したＪＮＬ内にリストア可能なＪＮＬがあるかもしれないからである。図１１の例において、シーケンス番号「１０３」が処理できなくても、シーケンス番号「１０４」をリストアすることができる。このＪＮＬリードプログラム２３２は、次のＪＮＬを転送するために、定期的に実行される。
【００４０】
００５４    図１４は、ＪＮＬリードプログラム２３２から呼び出されたＪＮＬリストアプログラムの処理の例を示したフロー図である。このプログラムは、バッファから副ストレージシステムのＳＶＯＬへＪＮＬデータを転送する。最初に、ＪＮＬリストアプログラムが別のプログラムから呼び出される。プログラムは呼び出し側からバッファアドレスを受け取る（ステップＳ４００）。その後、プログラムは副ボリュームのためにキャッシュユニット内に領域を割り当て（ステップＳ４０１）、バッファに格納されたデータを割り当て領域に転送する（ステップＳ４０２）。転送されたデータは、ＪＶＯＬデータではなく、ＳＶＯＬデータとして、キャッシュユニットに格納される。最後に、プログラムは呼び出し側に完了メッセージを送り、処理を終了する（ステップＳ４０３とＳ４０４）。
【００４１】
００５５    ＪＮＬは、ＪＮＬリードプログラム２３２のステップＳ３０９においてＪＶＯＬに転送されうる。ＪＶＯＬからＪＮＬをリストアする処理が必要となる。図１５は、ＪＶＯＬからＪＮＬをリストアするＪＶＯＬリードプログラム２３４の処理の例を示すフロー図である。最初に、ＪＶＯＬリードプログラムはＪＶＯＬ内にＪＮＬがあるか否かを確認する（ステップＳ５００）。その後、プログラムは格納されたＪＮＬから最小のシーケンス番号を有するＪＮＬを選択する（ステップＳ５０１）。次に、プログラムは図１３のステップＳ３０５とＳ３０６と同様の処理を実行する。ステップＳ３０５とステップＳ３０６の両方の結果が「ＮＯ」の場合、プログラムはバッファ内に領域を割り当て（ステップＳ５０２）、ＪＮＬリストアプログラム２３３を呼び出す（ステップＳ３０７）。その後、プログラムはステップＳ５００に戻り、最小シーケンス番号を有する次のＪＮＬの処理を実行する。ステップＳ３０５かステップＳ３０６の結果が「ＹＥＳ」の場合、プログラムはステップＳ５０３に進み、所定の時間プロセッサを解放する。ステップＳ５０３の後、プログラムはステップＳ５００に戻り、同じＪＮＬについて処理を実行する。
【００４２】
００５６    上述の通り、副ストレージシステムは、同じリストアアドレスを有する他のＪＮＬがない場合、バッファからＳＶＯＬへデータを直接転送する。つまり、厳密にいえば、ＪＮＬのリストア順序はシーケンス番号の順序とは異なる。しかしながら、障害後にサーバからＳＶＯＬがアクセスされるとき、ＳＶＯＬは整合性を有する状態でなければならない、つまり特定のシーケンス番号へのリストアが完了しており、特定のシーケンス番号以降のリストアはまだ完了していない。図１６と図１７に、整合性を有するＳＶＯＬ状態を提供するための処理が示される。
【００４３】
００５７    図１６は、サーバもしくは管理サーバから一時停止要求を受け取り、サーバからＳＶＯＬを使用するようリモートコピーペア状態を変更する一時停止プログラムの例を示すフロー図である。最初に、一時停止プログラムはサーバもしくは管理サーバから一時停止要求を受けて、一時停止要求の受信を登録する。一時停止要求は、整合性またはリモートコピーペアのためのグループから通知することができる。プログラムは、一時停止要求に基づいて処理を終了するＪＮＬリードプログラム２３２の終了を待つ（ステップＳ６００）。ＪＮＬリードプログラムの終了後、一時停止プログラムは、受信ＪＮＬの範囲をすべて特定する（Ｓ６０１）。正ストレージ障害後のケースでは、正ストレージシステム内に作成されたすべてのＪＮＬが副ストレージシステムに到達してはいない可能性がある。プログラムは範囲内の最大のシーケンス番号を取得する（ステップＳ６０２）。この時、ＳＶＯＬデータ整合性のための特定のシーケンス番号が決定される。次に、プログラムはＪＮＬを、取得した最大シーケンス番号にリストアする（ステップＳ６０３）。この処理は図１５のステップＳ５０１、Ｓ５０２およびＳ３０７と同じである。その後、プログラムはステップＳ６０３において呼び出されたＪＮＬリストアプログラム２３３の完了を待つ。最後に、プログラムはＳＶＯＬ状態をＩ／Ｏ許容状態に更新し（ステップＳ６０５）、処理を終了する（ステップＳ６０６）。
【００４４】
００５８    図１７は、一時停止要求を受け取った後のＪＮＬリードプログラム２３２の終了処理の例を示すフロー図である。最初に、プログラムは正ストレージシステムに対してＪＮＬリード要求を発行する（Ｓ７００）。その後、プログラムはサーバからの一時停止要求があるか否かを確認する（ステップＳ７０１）。この確認は、図１６のステップＳ６００において設定される情報をリードすることにより行われる。一時停止要求を受け取っていない場合、プログラムは図１３に示す通常の処理を実行する（ステップＳ７０２）。一時停止要求を受け取った場合、プログラムは処理を終了する。正ストレージシステムからの返信が「ＪＮＬなし」または返答なしの場合（ステップＳ７０３）、プログラムはジョブＩＤとともに処理の終了を登録する（ステップＳ７０４）。ステップＳ６００において、一時停止プログラムはこの情報に基づき、ＪＮＬリードプログラムの完了を待つ。登録後、プログラムは処理を終了する（ステップＳ７０５）。Ｓ７０３の結果が「ＮＯ」である場合、プログラムはステップＳ７０２に進み、通常の処理を実行する。これは、正ストレージシステムに未転送のＪＮＬが存在するからである。ステップＳ７０２の後、プログラムは処理の完了を登録することなく、ステップＳ７０５において処理を終了する。つまり、ＪＮＬリードプログラムは再度実行される。
【００４５】
００５９    もちろん、図１、２および８に示すシステム構成は本発明が適用されうる情報システムの単なる例を示すものであり、本発明は特定のハードウェア構成に限定されるものではない。本発明が適用されるコンピュータやストレージシステムは、さらに、上述の発明を実施するのに使用されるモジュールやプログラムやデータ構造を読み出し可能に格納する周知のＩ／Ｏデバイス（例えばＣＤやＤＶＤドライブ、フロッピーディスクドライブ、ハードドライブ等）を有することができる。これらのモジュールやプログラムやデータ構造は、コンピュータ読取可能媒体にエンコードすることができる。例えば、本発明のデータ構造は、本発明に使用されるプログラムが格納される一つ以上のコンピュータ読取可能媒体とは別のコンピュータ読取可能媒体に格納することができる。本システムの構成要素は、例えばコミュニケーションネットワークといったデジタルデータ通信のある形態または媒体によって、相互に接続される。コミュニケーションネットワークの例としては、ローカルエリアネットワークや、インターネット、ワイヤレスネットワーク、ストレージエリアネットワーク等のワイドエリアネットワークを含む。
【００４６】
００６０      本明細書では、本発明の理解を深めるために、多くの具体的かつ詳細な記載がなされている。しかし当業者にとっては、本発明を実施するためにこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、フロー図、構成図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明するが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。
【００４７】
００６１    当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置（ハードウェア）を用いて実施してよく、その一方で、その他の態様は、機械読取可能媒体（ソフトウェア）上に記憶された命令を用いて実施してもよく、当該発明は、プロセッサによって実行された場合には、プロセッサに本発明の実施形態を実行させる方法を実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてもよく、その他の実施形態は、ソフトウェアのみで実施されてもよい。さらに、説明された様々な機能は一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に広めることができる。ソフトウェアによって実施された場合、本発明の方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮およびまたは暗号化形式で命令を媒体に記憶することができる。
【００４８】
００６２    上記により、本発明が、ストレージシステム内のデータ整理のための方法、装置およびコンピュータ読取可能な媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって明白なように、開示された特定の実施形態の代わりに、同じ目的を達成するために創出された構成を用いてもよい。本開示は、本発明のあらゆる適応例や変形例を対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示した特定の実施形態に限定するよう解釈されるべきではない。むしろ本発明の範囲は、以下の請求項によって判断されるべきものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。
【符号の説明】
【００４９】
１００：  サーバ
１０１：  ＯＳ
１０２：  プロセッサ
１０３：  ＤＲＡＭ
１０４：  サーバ制御情報
１０５：  アプリケーション
１０８，２０２：  ストレージＩ／Ｆ
２００：  ストレージシステム
２０１：  キャッシュユニット
２０３：  プロセッサ
２０４：  ディスクＩ／Ｆ
２０５：  ボリューム
２０６：  ＨＤＤ
２０７：  ストレージ制御情報
２０８：  ストレージプログラム
２０９：  ポート
２１０：  バッファ
２２０：  シーケンス番号
２２１：  シーケンス番号ビットマップ
２２２：  リストア先テーブル
２２３：  最大リストアシーケンス番号
２３０：  ＪＮＬ作成プログラム
２３１：  ＪＮＬ転送プログラム
２３２：  ＪＮＬリードプログラム
２３３：  ＪＮＬリストアプログラム
２３４：  ＪＶＯＬリードプログラム
６００：  正ストレージシステム
６０４：  ＰＶＯＬ領域
６０５：  ＪＶＯＬ領域
６０６：  バッファ
７００：  副ストレージシステム
７０６：  バッファ
７０４：  ＪＶＯＬ領域
７０５：  ＳＶＯＬ領域
【図１】
2014142913.tif 000003
【図２】
2014142913.tif 000004
【図３】
2014142913.tif 000005
【図４】
2014142913.tif 000006
【図５】
2014142913.tif 000007
【図６】
2014142913.tif 000008
【図７】
2014142913.tif 000009
【図８】
2014142913.tif 000010
【図９】
2014142913.tif 000011
【図１０】
2014142913.tif 000012
【図１１】
2014142913.tif 000013
【図１２】
2014142913.tif 000014
【図１３】
2014142913.tif 000015
【図１４】
2014142913.tif 000016
【図１５】
2014142913.tif 000017
【図１６】
2014142913.tif 000018
【図１７】
2014142913.tif 000019
【外国語明細書】
2014142913000001.pdf
2014142913000002.pdf
2014142913000003.pdf
2014142913000004.pdf