(57)【要約】【課題】本発明は、ユーザの使い勝手を向上させ得るストレージ装置を提案する。【解決手段】ホスト装置から送信されるデータを格納する第１のボリュームを有し、当該第１のボリュームのバックアップを実施するストレージ装置において、前記ホスト装置から前記第１のボリュームのバックアップ指示を受信すると、前記第１のボリュームのバックアップボリュームである第２のボリュームを作成すると共に、前記第２のボリュームのフォーマット及び前記第１のボリュームから前記第２のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する制御部を備える。【選択図】図１
2009211401.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置から送信されるデータを格納する第１のボリュームを有し、当該第１のボリュームのバックアップを実施するストレージ装置において、
前記ホスト装置から前記第１のボリュームのバックアップ指示を受信すると、前記第１のボリュームのバックアップボリュームである第２のボリュームを作成すると共に、前記第２のボリュームのフォーマット及び前記第１のボリュームから前記第２のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する制御部
を備えることを特徴とするストレージ装置。
【請求項２】
前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第１のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記第２のボリュームのフォーマットを管理するフォーマット管理ビットマップ及び前記第１のボリュームから前記第２のボリュームへのコピーを管理するコピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第１のボリュームに書き込む
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第２のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第２のボリュームに書き込む
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第１のボリュームのリードコマンドを受信した場合、キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、当該データを前記ホスト装置に送信し、前記キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、対応する前記第２のボリュームから当該データを読み出して前記ホスト装置に送信する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項５】
前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第２のボリュームのリードコマンドを受信した場合、当該リードコマンドに対応するデータが前記第２のボリュームにコピーされているか否かを判断し、コピーされていないときに、対応する第１のボリュームから当該データを読み出して前記ホスト装置に送信すると共に、前記フォーマット管理ビットマップに基づいて、当該データを前記第２のボリュームに書き込む
ことを特徴とする請求項１に記載のストレージ装置。
【請求項６】
前記制御部は、
第１の制御部及び第２の制御部
を備え、
前記第２の制御部は、
前記第１の制御部により前記バックアップ指示の完了応答を送信した後に、前記第１の制御部に障害が発生した場合、前記第１の制御部に格納されているデータ、前記第１の制御部の前記第１のボリューム及び前記第２のボリュームのペア状態を管理するペア管理テーブル、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップを引き継いで、前記第２のボリュームのフォーマット及び前記第１のボリュームから前記第２のボリュームへのコピーを再開する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項７】
前記第２の制御部は、
前記第１の制御部から引き継いだデータに対応する第１のボリュームへのライトコマンドの完了応答を、前記ホスト装置に送信したか否かを判断し、前記ホスト装置に送信した場合、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前期第１のボリュームに書き込む
ことを特徴とする請求項１に記載のストレージ装置。
【請求項８】
前記第２の制御部は、
第２のボリュームのリードコマンドに対応する前記第１の制御部から引き継いだデータが、前記第２のボリュームにコピーされているか否かを判断し、コピーされていないときに、前記フォーマット管理ビットマップに基づいて、前記リードコマンドのデータを前記第２のボリュームに書き込む
ことを特徴とする請求項１に記載のストレージ装置。
【請求項９】
ホスト装置から送信されるデータを格納する第１のボリュームを有し、当該第１のボリュームのバックアップを実施するストレージ装置の制御方法において、
制御部が、前記ホスト装置から前記第１のボリュームのバックアップ指示を受信すると、前記第１のボリュームのバックアップボリュームである第２のボリュームを作成する第１のステップと、
制御部が、前記第２のボリュームのフォーマット及び前記第１のボリュームから前記第２のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する第２のステップと
を備えることを特徴とするストレージ装置の制御方法。
【請求項１０】
前記第２のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第１のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記第２のボリュームのフォーマットを管理するフォーマット管理ビットマップ及び前記第１のボリュームから前記第２のボリュームへのコピーを管理するコピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第１のボリュームに書き込む
ことを特徴とする請求項９に記載のストレージ装置の制御方法。
【請求項１１】
前記第２のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第２のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第２のボリュームに書き込む
ことを特徴とする請求項９に記載のストレージ装置の制御方法。
【請求項１２】
前記第２のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第１のボリュームのリードコマンドを受信した場合、キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、当該データを前記ホスト装置に送信し、前記キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、対応する前記第２のボリュームから当該データを読み出して前記ホスト装置に送信する
ことを特徴とする請求項９に記載のストレージ装置の制御方法。
【請求項１３】
前記第２のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第２のボリュームのリードコマンドを受信した場合、当該リードコマンドに対応するデータが前記第２のボリュームにコピーされているか否かを判断し、コピーされていないときに、対応する第１のボリュームから当該データを読み出して前記ホスト装置に送信すると共に、前記フォーマット管理ビットマップに基づいて、当該データを前記第２のボリュームに書き込む
ことを特徴とする請求項９に記載のストレージ装置の制御方法。
【請求項１４】
前記第２のステップでは、
前記制御部の第１の制御部及び第２の制御部のうち、前記第１の制御部により前記バックアップ指示の完了応答を送信した後に、前記第１の制御部に障害が発生した場合、前記第２の制御部が、前記第１の制御部に格納されているデータ、前記第１の制御部の前記第１のボリューム及び前記第２のボリュームのペア状態を管理するペア管理テーブル、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップを引き継いで、前記第２のボリュームのフォーマット及び前記第１のボリュームから前記第２のボリュームへのコピーを再開する
ことを特徴とする請求項９に記載のストレージ装置の制御方法。
【請求項１５】
前記第２のステップでは、
前記第１の制御部から引き継いだデータに対応する第１のボリュームへのライトコマンドの完了応答を、前記ホスト装置に送信したか否かを判断し、前記ホスト装置に送信した場合、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前期第１のボリュームに書き込む
ことを特徴とする請求項１４に記載のストレージ装置の制御方法。
【請求項１６】
前記第２のステップでは、
第２のボリュームのリードコマンドに対応する前記第１の制御部から引き継いだデータが、前記第２のボリュームにコピーされているか否かを判断し、コピーされていないときに、前記フォーマット管理ビットマップに基づいて、前記リードコマンドのデータを前記第２のボリュームに書き込む
ことを特徴とする請求項１４に記載のストレージ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びその制御方法に関し、例えば、データを格納するボリュームのバックアップを実施するストレージ装置に適用して好適なものである。
【背景技術】
【０００２】
従来、ホスト装置から送信されるデータの消失等を未然かつ有効に防止するために、当該データを格納するボリュームのバックアップを実施するストレージ装置が広く知られており、これに関する種々の技術が提案されている。
【０００３】
例えば、特許文献１では、ストレージ装置で記憶ボリュームのデータについての複数の複製を作成する際に、処理装置から複数回の命令を発行する手間を削減し、その際に関連する複数の記憶ボリュームのデータ整合性を保障する技術を提供する。具体的に、特許文献１は、未コピーデータを退避領域に一時退避させる方式である。
【特許文献１】特開２００６-０３１５７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、近年では、ボリュームのバックアップの実施形態として、マイクロソフト社（登録商標）のサーバＯＳ（Operation System）（ホスト装置）に搭載された機能の１つであるＶＳＳ（Volume Shadow Copy Service）と連携することにより、低コストでユーザ負担の少ないバックアップ環境が提供することができるようになされている。
【０００５】
このようなＶＳＳ（ホスト装置）との連携では、ＶＳＳの仕様により、当該ＶＳＳがバックアップコマンドを送信してから完了応答を受信するまでの時間設定が短いため、バックアップコマンドのタイムアウトによるエラーを防止すべく、ストレージ装置においてバックアップについて以下のように運用していた。
【０００６】
すなわち、ストレージ装置では、すべてのボリュームについて予め同一のボリュームを作成しておき、当該ボリューム間のデータが同一になるように常にペア状態を維持しておく。そして、ストレージ装置では、ＶＳＳからのバックアップコマンドを受信すると、該当するボリュームのペア状態を解除してボリュームを切り離すことにより、バックアップを運用していた。
【０００７】
しかしながら、ストレージ装置では、このように運用した場合、バックアップを実施しないボリュームを含めすべてのボリュームについてペア状態を維持しておくため、初期設定の際にユーザに煩雑な作業をさせることとなると共に、実際に使用する記憶領域の２倍以上の記憶領域が必要となるという問題がある。
【０００８】
本発明は以上の点を考慮してなされたもので、ユーザの使い勝手を向上させ得るストレージ装置及びその制御方法を提案するものである。
【課題を解決するための手段】
【０００９】
かかる課題を解決するために本発明においては、ホスト装置から送信されるデータを格納する第１のボリュームを有し、当該第１のボリュームのバックアップを実施するストレージ装置において、前記ホスト装置から前記第１のボリュームのバックアップ指示を受信すると、前記第１のボリュームのバックアップボリュームである第２のボリュームを作成すると共に、前記第２のボリュームのフォーマット及び前記第１のボリュームから前記第２のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する制御部を備える。
【００１０】
また、本発明においては、ホスト装置から送信されるデータを格納する第１のボリュームを有し、当該第１のボリュームのバックアップを実施するストレージ装置の制御方法において、制御部が、前記ホスト装置から前記第１のボリュームのバックアップ指示を受信すると、前記第１のボリュームのバックアップボリュームである第２のボリュームを作成する第１のステップと、制御部が、前記第２のボリュームのフォーマット及び前記第１のボリュームから前記第２のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する第２のステップとを備える。
【００１１】
従って、バックアップを実施しないボリュームを含めすべてのボリュームについてペア状態を維持することなく、スプリット指示を受信したボリュームのみその都度バックアップボリュームを作成するため、初期設定の際にユーザに煩雑な作業をさせることを未然かつ有効に防止することができると共に、実際に使用する記憶領域以上の記憶領域を不要とすることができる。
【発明の効果】
【００１２】
本発明によれば、ユーザの使い勝手を向上させ得るストレージ装置及びその制御方法を実現することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の一実施の形態を、図面を参照して詳細に説明する。なお、これにより本発明が限定されるものではない。
【００１４】
図１は、本実施の形態によるストレージシステム１の構成の一例を示している。ストレージシステム１は、ホスト装置２及びストレージ装置３がネットワーク４を介して接続されることにより構成されている。
【００１５】
ホスト装置２は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。ホスト装置２は、例えば、キーボードスイッチやポインティングデバイス、マイクロフォン等の情報入力装置（図示せず）と、例えば、モニタディスプレイやスピーカー等の情報出力装置（図示せず）とを備えている。さらに、ホスト装置２には、例えば、ストレージ装置３が提供する記憶領域を使用するデータベースソフトウェア等のアプリケーションプログラムや、ストレージ装置３のボリューム（後述）のバックアップを実施するＶＳＳプログラム、ネットワーク４を介してストレージ装置３にアクセスするためのアダプタ（図示せず）等が設けられている。
【００１６】
ネットワーク４は、例えば、ＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、インターネット、専用回線、公衆回線等を場合に応じて適宜用いることができる。ＬＡＮを介するデータ通信は、例えば、ｉＳＣＳＩや、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコルに従って行われる。ホスト装置２は、ＬＡＮを介してストレージ装置３に接続される場合、ファイル名を指定してファイル単位でのデータ入出力を要求する。一方、ホスト装置２は、ＳＡＮを介してストレージ装置３に接続される場合、ファイバチャネルプロトコルに従って、複数のディスク記憶装置（ディスク装置７（後述））により提供される記憶領域のデータ管理単位であるブロックを単位としてデータ入出力を要求する。ホスト装置２のアダプタは、ネットワーク４がＬＡＮである場合、例えば、ＬＡＮ対応のネットワークカードである。一方、ホスト装置２のアダプタは、ネットワーク４がＳＡＮの場合、例えば、ホストバスアダプタである。
【００１７】
ストレージ装置３は、例えば、ディスクアレイシステムとして構成されるものである。この場合、ストレージ装置３は、コントローラ部５及び記憶部６により構成されている。ストレージ装置３は、コントローラ部５を最低１つ備えている必要がある。本実施の形態では、信頼性向上のため、コントローラ部５を２つ備えている。コントローラ部５は、当該ストレージ装置３全体を制御する。記憶部６は、ホスト装置２から送信されるデータを格納するディスク装置７から構成されている。
【００１８】
コントローラ部５は、上位インタフェース１１、ＣＰＵ１２、キャッシュメモリ１３、ローカルメモリ１４及びドライブインタフェース１５により構成されている。
【００１９】
上位インタフェース１１は、ホスト装置２とネットワーク４を介して接続され、ホスト装置２から送信される各種コマンドやデータの送受信を制御する。上位インタフェース１１は、ネットワーク４の種類に応じた種々のインタフェースを用いることができる。
【００２０】
ＣＰＵ１２は、コントローラ部５ごとに１つ備えられる。ＣＰＵ１２は、コントローラ部５全体を制御し、例えば、上位インタフェース１１から送信されたコマンドを解釈して、各構成要素に指示を送信する。また、ＣＰＵ１２は、ディスク装置７に対して、ＲＡＩＤ（Redundant Arrays of Independent Disks）制御を行うことにより、ストレージ装置３の信頼性、可用性及び性能を向上させることができる。
【００２１】
この場合、ＣＰＵ１２は、ディスク装置７をＲＡＩＤ方式で運用する。ＣＰＵ１２は、１又は複数のディスク装置７により提供される物理的な記憶領域（ＲＡＩＤグループ）上に、１又は複数の論理的なボリューム（以下、これをボリュームと呼ぶ）を設定する。そして、データは、このボリューム内に所定の大きさのブロック（以下、これを論理ブロックと呼ぶ）単位で記憶される。
【００２２】
各ボリュームには、それぞれ固有の識別子（以下、これをＬＵ（Logical Unit number）と呼ぶ）が付与される。本実施の形態の場合、データの入出力は、このＬＵと、各論理ブロックにそれぞれ付与されるその論理ブロックに固有の番号（LBA :Logical Block Address）とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【００２３】
キャッシュメモリ１３は、ホスト装置２から受信したデータを一時的に格納したり、ストレージ装置３内部で使用する各種テーブルを格納する。この場合、キャッシュメモリ１３の一部は、他のコントローラ部５との共有メモリとして使用されており、一方のコントローラ部５が閉塞（故障）した場合に、正常な別のコントローラ部５に情報を引き継げるようになされている。
【００２４】
図２は、キャッシュメモリ１３に格納されている各種テーブルの一例を示している。キャッシュメモリ１３には、セグメント管理テーブル２１、フォーマット管理ビットマップ２２、コピー管理ビットマップ２３及びオーナー権管理テーブル２４が格納されている。なお、セグメント管理テーブル２１、フォーマット管理ビットマップ２２、コピー管理ビットマップ２３及びオーナー権管理テーブル２４の具体的な構成については、後述する。
【００２５】
ローカルメモリ１４は、コントローラ部５内部で使用する各種プログラムや、各種テーブルを格納する。
【００２６】
図３は、ローカルメモリ１４に格納されている各種プログラム及び各種テーブルの一例を示している。ローカルメモリ１４には、ペア管理テーブル３１、セグメント管理テーブル３２、ホストコマンド管理テーブル３３及び制御プログラム３４が格納されている。なお、ペア管理テーブル３１、セグメント確保テーブル３２及びホストコマンド管理テーブル３３の具体的な構成並びに制御プログラム３４の具体的な処理については、後述する。
【００２７】
ドライブインタフェース１５は、記憶部６のディスク装置７と接続され、ホスト装置２から送信されるデータの送受信を制御する。ドライブインタフェース１５は、ファイバチャネル、ＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA）等の種類に応じた種々のインタフェースを用いることができる。
【００２８】
図４は、ストレージ装置３がライトデータを受信して、ディスク装置７に格納する仕組みを示している。ＣＰＵ１２は、ホスト装置２からライトコマンドを受信すると、ホスト装置２から送信されるライトデータをキャッシュメモリ１３のライト面１３Ａに格納する（図４（１））。続いて、ＣＰＵ１２は、ライトデータをディスク装置７に格納する契機になったときに、当該ライトデータのパリティデータを作成し、ライトデータ及びパリティデータをキャッシュメモリ１３のリード面１３Ｂに格納する（図４（２））。また、ＣＰＵ１２は、当該ライトデータをキャッシュメモリ１３のライト面１３Ａから削除する。続いて、ＣＰＵ１２は、その後、所定のタイミングで該当するディスク装置７にライトデータ及びパリティデータを格納する（図４（３））。
【００２９】
図５は、セグメント管理テーブル２１の構成の一例を示している。セグメント管理テーブル２１は、キャッシュメモリ１３上で管理されるデータの最小単位であるセグメント単位で存在し、当該セグメントの状態や属性を管理する。セグメント管理テーブル２１は、ライト面欄２１Ａ、リード面欄２１Ｂ、書込み抑止欄２１Ｃその他の欄により構成されている。
【００３０】
ライト面欄２１Ａは、セグメントがキャッシュメモリ１３のライト面１３Ａに格納されているか否かを管理する。例えば、ライト面欄２１Ａには、セグメントがキャッシュメモリ１３のライト面１３Ａに格納されている場合、「１」が格納される一方、セグメントがキャッシュメモリ１３のライト面１３Ａに格納されていない場合、「０」が格納される。
【００３１】
リード面欄２１Ｂは、セグメントがキャッシュメモリ１３のリード面１３Ｂに格納されているか否かを管理する。例えば、リード面欄２１Ｂには、セグメントがキャッシュメモリ１３のリード面１３Ｂに格納されている場合、「１」が格納される一方、セグメントがキャッシュメモリ１３のリード面１３Ｂに格納されていない場合、「０」が格納される。
【００３２】
書込み抑止欄２１Ｃは、セグメントをディスク装置７に格納するのを禁止するか否かを管理する。例えば、書込み抑止欄２１Ｃには、セグメントをディスク装置７に格納するのを禁止する場合、「１」が格納される一方、セグメントをディスク装置７に格納するのを許可する場合、「０」が格納される。すなわち、ＣＰＵ１２は、書込み抑止欄２１Ｃに「１」が格納されている場合、該当するセグメントをディスク装置７に格納しないようになされている。
【００３３】
セグメント管理テーブル２１には、セグメントがキャッシュメモリ１３のライト面１３Ａに格納されている場合、当該ライトデータ（セグメント）をディスク装置７に格納することができないため、ライト面欄２１Ａに「１」が格納されると共に、書込み抑止欄２１Ｃに「１」が格納される。
【００３４】
また、セグメント管理テーブル２１は、セグメントがキャッシュメモリ１３のリード面１３Ｂに移動した場合、ライト面欄２１Ａが「０」に変更されると共に、リード面欄２１Ｂが「１」に変更され、書込み抑止欄２１Ｃが「０」に変更される。
【００３５】
図６は、フォーマット管理ビットマップ２２の構成の一例を示している。フォーマット管理ビットマップ２２は、バックアップを実施した場合に、バックアップ先のボリューム（以下、これをセカンダリボリューム４２（Ｓ−ＶＯｌ）（図１７等）と呼ぶ）のフォーマットが完了したか否かをセグメントごとに管理する。例えば、フォーマット管理ビットマップ２２には、セカンダリボリューム４２のボリュームのセグメントのフォーマットが完了した場合、該当するビットマップに「０」が格納される一方、セカンダリボリューム４２のボリュームのセグメントのフォーマットが完了していない場合、該当するビットマップに「１」が格納される。
【００３６】
図７は、コピー管理ビットマップ２３の構成の一例を示している。コピー管理ビットマップ２２は、バックアップを実施した場合に、バックアップ対象のボリューム（以下、これをプライマリボリューム４１（Ｐ−ＶＯｌ）（図１７等）と呼ぶ）からセカンダリボリューム４２へのコピーが完了したか否かをセグメントごとに管理する。例えば、コピー管理ビットマップ２２には、プライマリボリューム４１からセカンダリボリューム４２へのコピーが完了した場合、該当するビットマップに「０」が格納される一方、プライマリボリューム４１からセカンダリボリューム４２へのコピーが完了していない場合、該当するビットマップに「１」が格納される。
【００３７】
図８は、オーナー権管理テーブル２４の構成の一例を示している。オーナー権管理テーブル２４は、ボリュームのオーナー権（ボリュームを管理する権限）をどちらのコントローラ部５が有しているかをボリュームごとに管理する。オーナー権管理テーブル２４は、ＬＵＮ欄２４Ａ及びオーナー権欄２４Ｂにより構成されている。
【００３８】
ＬＵＮ欄２４Ａは、ボリュームのＬＵＮを一意に識別するためのＬＵＮ番号を管理する。オーナー権欄２４Ｂは、オーナー権を有するコントローラ部５を一意に識別するためのオーナー権番号を管理する。例えば、ＬＵＮ番号が「０」のボリュームは、コントローラ番号が「０」のコントローラ部５により管理されていることとなる。
【００３９】
図９は、ペア管理テーブル３１の構成の一例を示している。ペア管理テーブル３１は、プライマリボリューム４１とセカンダリボリューム４２のペア状態を管理する。ペア管理テーブル３１は、コントローラ部５ごとに管理されており、コントローラ部５に故障等が発生した場合、他方のコントローラ部５のペア管理テーブル３１にペア状態がコピーされて処理を継続することができるようになされている。ペア管理テーブル３１は、Ｐ−ＶＯＬ欄３１Ａ、Ｓ−ＶＯＬ欄３１Ｂ及びペア状態欄３１Ｃにより構成されている。
【００４０】
Ｐ−ＶＯＬ欄３１Ａは、プライマリボリューム４１を一意に識別するためのＰ−ＶＯＬ番号を管理する。Ｓ−ＶＯＬ欄３１Ｂは、セカンダリボリューム４２を一意に識別するためのＳ−ＶＯＬ番号を管理する。ペア状態欄３１Ｃは、プライマリボリューム４１とセカンダリボリューム４２のペア状態を管理する。例えば、ペア状態欄３１Ｃには、プライマリボリューム４１からセカンダリボリューム４２にデータがコピーされている場合、「コピー状態」が格納される。また、ペア状態欄３１Ｃには、プライマリボリューム４１とセカンダリボリューム４２とが分割されている場合、「スプリット状態」が格納される。さらに、ペア状態欄３１Ｃには、プライマリボリューム４１とセカンダリボリューム４２とが分割されているが、バックグラウンドでコピー（後述）されている場合、「スプリット状態（コピー中）」が格納される。
【００４１】
図１０は、セグメント確保テーブル３２の構成の一例を示している。セグメント確保テーブル３２は、データのセグメントがどのジョブにより実行（確保）されているかをセグメントごとに管理する。セグメント確保テーブル３２は、セグメント番号欄３２Ａ及びジョブ番号欄３２Ｂにより構成されている。セグメント番号欄３２Ａは、データのセグメントを一意に識別するためのセグメント番号を管理する。ジョブ番号欄３２Ｂは、データのセグメントを実行（確保）しているジョブを一意に識別するためのジョブ番号を管理する。例えば、セグメント番号が「０」のセグメントは、ジョブ番号が「１」のジョブが実行されている。なお、ジョブ番号欄３２Ｂには、セグメントに対してジョブが実行されていない場合、例えば、「未使用」が格納される。
【００４２】
図１１は、ホストコマンド管理テーブル３３の構成の一例を示している。ホストコマンド管理テーブル３３は、ホスト装置２から送信されたコマンドについてのジョブが完了し、ホスト装置２に応答したか否かを示すステータスをコマンドごとに管理する。ホストコマンド管理テーブル３３は、コマンド番号欄３３Ａ、ジョブ番号欄３３Ｂ、コマンド種別欄３３Ｃ及びステータス欄３３Ｄにより構成されている。
【００４３】
コマンド番号欄３３Ａは、ホスト装置２から送信されたコマンドを一意に識別するためのコマンド番号を管理する。ジョブ番号欄３２Ｂは、当該コマンドのジョブを一意に識別するためのジョブ番号を管理する。コマンド種別欄３３Ｃは、当該コマンドのコマンド種別を管理する。例えば、コマンド種別欄３３Ｃには、当該コマンドがライトコマンドジョブである場合、「ライト」が格納され、リードコマンドジョブである場合、「リード」が格納される。ステータス欄３３Ｄは、当該コマンドについてのジョブが完了し、ホスト装置２に応答したか否かを管理する。例えば、ステータス欄３３Ｄには、ジョブが完了し、ホスト装置２への応答が完了した場合、「完了」が格納され、ジョブが実行中である場合、「ホスト応答待ち」が格納される。
【００４４】
図１２は、この記憶システム１におけるバックアップ処理に関する、ホスト装置２及びストレージ装置３の具体的な処理手順を示したシーケンスチャートの一例である。
【００４５】
ホスト装置２は、例えば、ホスト装置２のユーザの操作部（図示せず）の操作により、セカンダリボリューム４２のＬＵＮの登録指示を受信すると、ＶＳＳプログラムを実行することにより、図１２に示すバックアップ処理手順ＲＴ１に従って、当該ユーザから指示されたセカンダリボリューム４２のＬＵＮを登録し（ＳＰ１）、例えば、ホスト装置２の表示部（図示せず）に表示する等により、登録完了応答をユーザに対して通知する。
【００４６】
続いて、ホスト装置２は、例えば、ホスト装置２のユーザの操作部（図示せず）の操作により、プライマリボリューム４１を指定してバックアップ用ボリューム（セカンダリボリューム４２）の作成指示を受信すると、指示されたプライマリボリューム４１及びセカンダリボリューム４２をストレージ装置３に通知して、当該プライマリボリューム４１及びセカンダリボリューム４２のペアのスプリット指示をストレージ装置３に送信する（ＳＰ２）。
【００４７】
続いて、ストレージ装置３は、ホスト装置２からの通知及びスプリット指示を受信すると、制御プログラム３４を実行することにより、当該通知及びスプリット指示に基づいて、指示されたプライマリボリューム４１に対応するセカンダリボリューム４２を作成する（ＳＰ３）。続いて、ストレージ装置３は、当該セカンダリボリューム４２のフォーマット管理ビットマップ２２を作成して、セカンダリボリューム４２のフォーマット状態の管理を開始する（ＳＰ４）。
【００４８】
続いて、ストレージ装置３は、通知されたプライマリボリューム４１及びセカンダリボリューム４２にてペア作成を開始する（ＳＰ５）。続いて、ストレージ装置３は、当該プライマリボリューム４１及びセカンダリボリューム４２をペア管理テーブル３１に登録し、ペア状態を「コピー状態」に設定する（ＳＰ６）。
【００４９】
続いて、ストレージ装置３は、当該プライマリボリューム４１のコピー管理ビットマップ２３を作成して、プライマリボリューム４１のコピー状態の管理を開始する（ＳＰ７）。続いて、ストレージ装置３は、通知されたプライマリボリューム４１及びセカンダリボリューム４２に対してスプリット処理を実行する（ＳＰ８）。
【００５０】
続いて、ストレージ装置３は、ペア管理テーブル３１に登録したプライマリボリューム４１及びセカンダリボリューム４２のペア状態を「スプリット状態（コピー中）」に変更する（ＳＰ９）。続いて、ストレージ装置３は、スプリット指示の完了応答をホスト装置２に送信する。
【００５１】
やがて、ホスト装置２は、ストレージ装置３からスプリット指示に対する完了応答を受信すると、セカンダリボリューム４２の作成指示の完了応答をユーザに対して通知し、この後、図１２に示すバックアップ処理手順ＲＴ１を終了する。
【００５２】
この場合、ストレージシステム１では、セカンダリボリューム４２のフォーマットの開始時点から、ホスト装置２からのデータのライト（書込み）が可能となるが、ストレージ装置３のスプリット処理の実行までライトをすることができないように抑止される。すなわち、ストレージシステム１では、セカンダリボリューム４２のフォーマット前については、フォーマットがされていないため、データのライトをすることができない。その後、ストレージシステム１では、トレージ装置３のスプリット処理の実行後、データのライトの抑止が解除されて、ホスト装置２からのセカンダリボリューム４２へのデータのライトが可能となる。なお、当該データのライトの抑止については、セグメント管理テーブル２１の書込み抑止欄２１Ｃに格納される書込み抑止フラグとは異なるものである。
【００５３】
図１３は、このストレージシステム１におけるストレージ装置３のバックアップ処理に関する、ストレージ装置３のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。
【００５４】
本フローチャートでは、ホスト装置２がＶＳＳプログラムを実行してバックアップ指示を行なった場合における、ストレージ装置３でのバックアップに用いるスナップショットを作成する手順について説明している。
【００５５】
従来のバックアップ方法では、使用されているボリュームから直接データをテープ装置等のバックアップ先ボリュームにコピーしていたため、使用中のファイルやロック中のファイルについてバックアップすることができない。また、従来のバックアップ方法では、バックアップのデータコピーには多くの時間を要することから、データをコピーするタイミングが異なるため、ボリューム内部での整合性がとれないという問題がある。
【００５６】
ホスト装置２がＶＳＳプログラムを実行してバックアップ指示を行なった場合におけるバックアップ方法では、バックアップを採取したいボリュームから直接データをコピーせず、ある時点でのデータ（スナップショット）を採取し、そのスナップショットをテープ装置などのバックアップ先ボリュームにコピーする。ホスト装置２は、このスナップショットを採取する際に、ＶＳＳプログラム及びＯＳを連携して一時的にＩ／Ｏコマンドを停止させて、バックアップするデータを確定させる。
【００５７】
ＶＳＳプログラムでは、この一時的にＩ／Ｏコマンドを停止させる時間を３０秒以内に設定している。すなわち、ストレージ装置３では、ホスト装置２がスプリット指示を送信してからスプリット指示の完了応答を受信するまでの処理を３０秒以内に終わらせる必要がある。従って、当該バックアップ方法では、予めプライマリボリューム４１と同じサイズのセカンダリボリューム４２を作成して、ホスト装置２に通知しておき、ストレージ装置３側で常時プライマリボリューム４１とセカンダリボリューム４２のペア状態を維持しておき、スプリット指示があったときに、スプリット処理をすることで、３０秒以内にバックアップ処理を終了させていた。
【００５８】
しかしながら、当該バックアップ方法では、バックアップを採取するボリュームと同じサイズのボリュームを用意することから２倍のサイズの記憶容量が必要となり、予め、ユーザがバックアップ用のボリュームを作成、フォーマット、そして、ペア作成するといった煩雑な作業が必要となっていた。
【００５９】
本実施の形態のストレージシステム１では、ホスト装置２からのスプリット指示があった後に、セカンダリボリューム４２の作成、フォーマット、ペア作成及びスプリットを行なうようにする。すなわち、ストレージシステム１では、ホスト装置２に対して、予め、バックアップ採取時に使用可能なＬＵＮ番号を通知しておく。次に、ストレージシステム１では、ホスト装置２がＶＳＳプログラムを実行してバックアップを行う場合、ストレージ装置３に対して、プライマリボリューム４１のスプリット指示をストレージ装置３に送信する。このとき、ホスト装置２は、同時にプライマリボリューム４１のＬＵＮ番号等についてストレージ装置３に通知する。
【００６０】
次に、ストレージシステム１では、ストレージ装置３において、通知されたＬＵＮ番号のプライマリボリューム４１のサイズを取得し、セカンダリボリューム４２を作成し、フォーマットを実施する。この場合、ストレージシステム１では、フォーマットについてはバックグラウンドにて実施することとし、当該フォーマットの実施中にプライマリボリューム４１とセカンダリボリューム４２にてペア作成を実施する。
【００６１】
ここで、通常では、プライマリボリューム４１からセカンダリボリューム４２へのデータコピーが行なわれて、データが一致した時点でペア作成が完了するが、本実施の形態のストレージシステム１では、データコピー中にペア作成が完了したこととして、バックグラウンドにてコピーを実施する。
【００６２】
そして、ストレージシステム１では、この時点で、ホスト装置２からのスプリット指示に対して完了応答を送信することで、ホスト装置２に即座にバックアップ処理を完了したと判断させることができるようになされている。以下、フローチャートに従って説明する。
【００６３】
ＣＰＵ１２は、例えば、ホスト装置２から上述の通知及びスプリット指示を受信すると、制御プログラム３４を実行することにより、図１３に示すバックアップ処理手順ＲＴ２に従って、指示されたプライマリボリューム４１のサイズとＬＵＮ番号をもとに、セカンダリボリューム４２となるボリューム（ＬＵ）を作成する（ＳＰ１１）。なお、スプリット指示は、セカンダリボリューム４２の作成指示である。また、ホスト装置２に通知されたプライマリボリューム４１のＬＵＮ番号は、ストレージ装置３側で管理されるわけではなく、ホスト装置２において管理しておく。
【００６４】
続いて、ＣＰＵ１２は、セカンダリボリューム４２のフォーマットを開始する（ＳＰ１２）。すなわち、ＣＰＵ１２は、スプリット指示があったときに、キャッシュメモリ１３上にフォーマット管理ビットマップ２２を作成し、全ビットを「ＯＮ（１）」にしておき、フォーマットが完了すると、該当するビットを「ＯＦＦ（０）」に変更する。なお、ＣＰＵ１２は、セカンダリボリューム４２のフォーマットをバックグラウンドで実施するため、セカンダリボリューム４２のフォーマットを未完了のままで次のステップに進む。
【００６５】
続いて、ＣＰＵ１２は、セカンダリボリューム４２のフォーマットを未完了のままで、通知されたプライマリボリューム４１及びセカンダリボリューム４２にてペア作成を開始する（ＳＰ１３）。この場合、ＣＰＵ１２は、当該プライマリボリューム４１及びセカンダリボリューム４２をペア管理テーブル３１に登録し、ペア状態を「コピー状態」に設定する。
【００６６】
続いて、ＣＰＵ１２は、ペア状態を即座に「スプリット状態」に遷移する（ＳＰ１４）。
この場合、ＣＰＵ１２は、ペア管理テーブル３１に登録したプライマリボリューム４１及びセカンダリボリューム４２のペア状態を「スプリット状態（コピー中）」に変更し、ペア状態を「コピー状態」から「スプリット状態」に遷移させると共に、ストレージ装置３内部において、バックグラウンドにてプライマリボリューム４１からセカンダリボリューム４２へのデータのコピー処理を実施する。
【００６７】
この場合、ＣＰＵ１２は、コピー処理を開始するときに、キャッシュメモリ１３上にコピー管理ビットマップ２３を作成し、全ビットを「ＯＮ（１）」にしておき、コピーが完了すると、該当するビットを「ＯＦＦ（０）」に変更する。なお、ＣＰＵ１２は、プライマリボリューム４１からセカンダリボリューム４２へのデータのコピーをバックグラウンドで実施するため、プライマリボリューム４１からセカンダリボリューム４２へのデータのコピーを未完了のままで次のステップに進む。またなお、ＣＰＵ１２は、バックグラウンドのデータのコピー処理が完了すると、ペア管理テーブル３１に登録したプライマリボリューム４１及びセカンダリボリューム４２のペア状態を「スプリット状態」に変更する。
【００６８】
また、ＣＰＵ１２は、セカンダリボリューム４２にデータをコピーする際、コピー管理ビットマップ２３を参照する前に、フォーマット管理ビットマップ２２の該当するビットを参照し、未フォーマット（ビットが「ＯＮ」のまま）であれば、先に該当するビットのフォーマットを実施する。そして、ＣＰＵ１２は、フォーマットが完了すると、コピー管理ビットマップ２３を参照して、セカンダリボリューム４２の該当箇所にデータをコピーする。
【００６９】
続いて、ＣＰＵ１２は、セカンダリボリューム４２のフォーマット及びプライマリボリューム４１からセカンダリボリューム４２へのデータのコピーを未完了のままで、スプリット指示の完了応答をホスト装置２に送信する（ＳＰ１５）。
【００７０】
やがて、ＣＰＵ１２は、この後、図１３に示すバックアップ処理手順ＲＴ２を終了する（ＳＰ１６）。
【００７１】
図１４は、このストレージシステム１におけるストレージ装置３のセカンダリボリューム４２のフォーマット処理に関する、ストレージ装置３のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。
【００７２】
ＣＰＵ１２は、例えば、セカンダリボリューム４２となるボリュームを作成する（ＳＰ１１）と、制御プログラム３４を実行することにより、図１４に示すセカンダリボリューム４２のフォーマット処理手順ＲＴ３に従って、当該セカンダリボリューム４２のフォーマット管理ビットマップ２２をキャッシュメモリ１３上に作成する（ＳＰ２１）。
【００７３】
続いて、ＣＰＵ１２は、セカンダリボリューム４２のフォーマット管理ビットマップ２２のフラグ（ビット）をすべて「ＯＮ（１）」（フォーマット未完了）に設定する（ＳＰ２２）。続いて、ＣＰＵ１２は、フォーマット管理サイズ（ビット）の領域のフォーマットを実施する（ＳＰ２３）。
【００７４】
続いて、ＣＰＵ１２は、当該領域のフォーマットが完了するのを待機モードで待ち受ける（ＳＰ２４）。やがて、ＣＰＵ１２は、当該領域のフォーマットが完了すると、フォーマット管理ビットマップ２２のフォーマットが終了した領域のフラグを「ＯＦＦ（０）」（フォーマット完了）に変更する（ＳＰ２６）。
【００７５】
続いて、ＣＰＵ１２は、フォーマット管理ビットマップ２２のフラグがすべて「ＯＦＦ（０）」に変更されたか否かをチェックする（ＳＰ２６）。そして、ＣＰＵ１２は、フォーマット管理ビットマップ２２のフラグがすべて「ＯＦＦ（０）」に変更されていない場合（ＳＰ２６：ＮＯ）、ステップＳＰ２３に戻り、フォーマットされていないフォーマット管理サイズの領域のフォーマットを実施し（ＳＰ２３）、この後、上述の場合と同様の処理を繰り返す（ＳＰ２３〜ＳＰ２６）。これに対して、ＣＰＵ１２は、フォーマット管理ビットマップ２２のフラグがすべて「ＯＦＦ（０）」に変更された場合（ＳＰ２６：ＹＥＳ）、セカンダリボリューム４２のフォーマットが完了したため、フォーマット管理ビットマップ２２をキャッシュメモリ１３から削除する（ＳＰ２７）。
【００７６】
やがて、ＣＰＵ１２は、この後、図１４に示すセカンダリボリューム４２のフォーマット処理手順ＲＴ３を終了する（ＳＰ２８）。
【００７７】
なお、ＣＰＵ１２は、セカンダリボリューム４２の領域の中で未フォーマットの領域にプライマリボリューム４１からデータがコピーされる場合、未フォーマットの領域に対してディスク装置７へのライトを行なわないようにチェックしている。ＣＰＵ１２は、未フォーマットである場合、当該領域をフォーマットするためのフォーマットデータをキャッシュメモリ１３上に作成して、当該フォーマットデータをディスク装置７にライトする。その後、ＣＰＵ１２は、キャッシュメモリ１３上にあるプライマリボリューム４１からのセカンダリボリューム４２のディスク装置７に該当するデータをライトする。
【００７８】
図１５は、このストレージシステム１におけるストレージ装置３のプライマリボリューム４１からセカンダリボリューム４２へのデータコピー処理に関する、ストレージ装置３のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。
【００７９】
ＣＰＵ１２は、例えば、プライマリボリューム４１及びセカンダリボリューム４２にてペア作成を開始する（ＳＰ１３）と、制御プログラム３４を実行することにより、図１５に示すプライマリボリューム４１からセカンダリボリューム４２へのデータコピー処理手順ＲＴ４に従って、キャッシュメモリ１３上のペア管理テーブル３１の該当するプライマリボリューム４１及びセカンダリボリューム４２のペア状態を「コピー状態」から「スプリット状態（コピー中）」に変更する（ＳＰ３１）。この場合、ペア管理テーブル３１は、コントローラ部５ごとに存在し、ペア作成を行なう際に、プライマリボリューム４１及びセカンダリボリューム４２が登録されている。
【００８０】
続いて、ＣＰＵ１２は、プライマリボリューム４１のコピー管理ビットマップ２３をキャッシュメモリ１３上に作成する（ＳＰ３２）。この場合、ＣＰＵ１２は、プライマリボリューム４１のサイズに応じて、コピー管理ビットマップ２３を作成する。ＣＰＵ１２は、１回のコピーサイズ単位にコピー管理ビットマップ２３の１ビット分を割り当てる。続いて、ＣＰＵ１２は、プライマリボリューム４１のコピー管理ビットマップ２３のフラグ（ビット）をすべて「ＯＮ（１）」（コピー未完了）に設定する（ＳＰ３３）。
【００８１】
続いて、ＣＰＵ１２は、プライマリボリューム４１からセカンダリボリューム４２への１回のコピーサイズ分のデータのコピーを実施する（ＳＰ３４）。続いて、ＣＰＵ１２は、１回のコピーサイズ分のデータのコピーが完了するのを待機モードで待ち受ける（ＳＰ３５）。やがて、ＣＰＵ１２は、１回のコピーサイズ分のデータのコピーが完了すると、コピー管理ビットマップ２３のコピーが終了した領域のフラグを「ＯＦＦ（０）」（コピー完了）に変更する（ＳＰ３６）。
【００８２】
続いて、ＣＰＵ１２は、コピー管理ビットマップ２３のフラグがすべて「ＯＦＦ（０）」に変更されたか否かをチェックする（ＳＰ３７）。そして、ＣＰＵ１２は、コピー管理ビットマップ２３のフラグがすべて「ＯＦＦ（０）」に変更されていない場合（ＳＰ３７：ＮＯ）、ステップＳＰ３４に戻り、コピーされていないコピー管理サイズの領域の１回のコピーサイズ分のデータのコピーを実施し（ＳＰ３４）、この後、上述の場合と同様の処理を繰り返す（ＳＰ３４〜ＳＰ３７）。これに対して、ＣＰＵ１２は、コピー管理ビットマップ２３のフラグがすべて「ＯＦＦ（０）」に変更された場合（ＳＰ３７：ＹＥＳ）、プライマリボリューム４１からセカンダリボリューム４２へのデータコピーが完了したため、ペア管理テーブル３１の該当するプライマリボリューム４１及びセカンダリボリューム４２のペア状態を「スプリット状態（コピー中）」から「スプリット状態」に変更する（ＳＰ３８）。
【００８３】
やがて、ＣＰＵ１２は、この後、図１５に示すプライマリボリューム４１からセカンダリボリューム４２へのデータコピー処理手順ＲＴ４を終了する（ＳＰ３９）。
【００８４】
なお、プライマリボリューム４１からセカンダリボリューム４２へのデータコピー処理は、従来の処理の場合でも、本実施の形態に係る処理の場合でも、基本的には同一である。しかしながら、ＣＰＵ１２は、従来の処理の場合、プライマリボリューム４１からセカンダリボリューム４２へのデータコピー中であることをホスト装置２に対して提示するため、当該コピー中にホスト装置２からプライマリボリューム４１へのライトがあれば、ライトしたデータを反映してセカンダリボリューム４２にライトを行なう。
【００８５】
しかしながら、ＣＰＵ１２は、本実施の形態に係る処理の場合、プライマリボリューム４１からセカンダリボリューム４２へのデータコピーの完了応答をホスト装置２に送信するため、プライマリボリューム４１へのデータのライトがあったときに、当該データがセカンダリボリューム４２にコピーされていないのであれば、プライマリボリューム４１へのデータのライトを抑止してセカンダリボリューム４２にデータ（旧データ）をコピーする。
【００８６】
図１６は、このストレージシステム１におけるストレージ装置３のスプリット指示への応答後のプライマリボリューム４１へのライト処理に関する、ストレージ装置３のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。また、図１７は、ストレージ装置３における当該プライマリボリューム４１へのライト処理の流れを示す概念図の一例である。
【００８７】
本実施の形態におけるバックアップ方法では、ホスト装置２からのスプリット指示に対して、プライマリボリューム４１からセカンダリボリューム４２へのデータコピーが完了する前にスプリット指示の完了応答を行なうため、バックグラウンドにおいてプライマリボリューム４１からセカンダリボリューム４２へのデータコピーが行なわれており、セカンダリボリューム４２へのデータ反映が完全に完了していない。
【００８８】
このため、本実施の形態におけるバックアップ方法では、スプリット指示の完了応答後にホスト装置２からプライマリボリューム４１に対してライトコマンドが送信されたとき、ライトコマンドによってライトされる領域がすでにセカンダリボリューム４２にコピーされているか否かを確認する必要がある。また、本実施の形態におけるバックアップ方法では、セカンダリボリューム４２に関して、プライマリボリューム４１からのデータのライトを行なう場合に、ライトされる領域のフォーマットが完了しているか否かを確認する必要がある。
【００８９】
本実施の形態のストレージシステム１では、プライマリボリューム４１上のデータがセカンダリボリューム４２にコピーされていない領域に、ライトコマンドによるデータのライトが行なわれる場合、受信したライトコマンドのデータをキャッシュメモリ１３上からセカンダリボリューム４２のディスク装置７にライトをすることを抑止する。そして、本実施の形態のストレージシステム１では、セカンダリボリューム４２にプライマリボリューム４１のディスク装置７からキャッシュメモリ１３上にデータのリード（読出し）を行ない、セカンダリボリューム４２のディスク装置７にライトを行なった後に、プライマリボリューム４１のディスク装置７へのキャッシュメモリ１３上のデータのライトを許可する。
【００９０】
また、本実施の形態のストレージシステム１では、プライマリボリューム４１からセカンダリボリューム４２へのデータコピーの反映状態をコピー管理ビットマップ２３により管理し、セカンダリボリューム４２にデータコピーを行なった時点でコピー管理ビットマップ２３の該当するフラグを「ＯＦＦ」に変更する。また、本実施の形態のストレージシステム１では、キャッシュメモリ１３上のライトデータをプライマリボリューム４１のディスク装置７にライトしないようにするために、データのセグメントごとに存在するセグメント管理テーブル２１の書込み抑止欄２１Ｃのフラグを「ＯＮ（１）」にすることで、当該セグメントのプライマリボリューム４１のディスク装置７へのライトを未然かつ有効に防止し、キャッシュメモリ１３上に格納し続けさせる。以下、フローチャートに従って説明する。
【００９１】
ＣＰＵ１２は、例えば、ホスト装置２からプライマリボリューム４１へのライトコマンドを受信する（図１７（１））と、制御プログラム３４を実行することにより、図１６に示すストレージ装置３のスプリット指示への応答後のプライマリボリューム４１へのライト処理手順ＲＴ５に従って、受信したライトデータをキャッシュメモリ１３上に格納する（ＳＰ４１）（図１７（２））。
【００９２】
続いて、ＣＰＵ１２は、当該ライトコマンドの処理を未完了のままで当該ライトコマンドの完了応答をホスト装置２に送信する（ＳＰ４２）（図１７（３））。続いて、ＣＰＵ１２は、コピー管理ビットマップ２３を参照し、ライトデータを格納する領域のビットが「ＯＦＦ（０）」（コピー済み）であるか否かをチェックする（ＳＰ４３）。そして、ＣＰＵ１２は、ライトデータを格納する領域のビットが「ＯＦＦ（０）」である場合（ＳＰ４３：ＹＥＳ）、ステップＳＰ５２に進む。これに対して、ＣＰＵ１２は、ライトデータを格納する領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ４３：ＮＯ）、ライトデータを格納する領域に対応するセグメントの制御情報を管理しているセグメント管理テーブル２１の書込み禁止フラグを「ＯＮ（１）」に変更して、プライマリボリューム４１のディスク装置７への当該ライトデータのライトを抑止する（ＳＰ４４）。
【００９３】
続いて、ＣＰＵ１２は、プライマリボリューム４１のディスク装置７からの該当する領域のデータをキャッシュメモリ１３にリードし、セカンダリボリューム４２へのライト用のデータを作成する（ＳＰ４５）（図１７（４）（５））。続いて、ＣＰＵ１２は、コピー管理ビットマップ２３のライトデータを格納する領域のビットを「ＯＦＦ（０）」に変更する（ＳＰ４６）。続いて、ＣＰＵ１２は、ライトデータのセグメントを格納する領域のセグメント管理テーブル２１の書込み禁止フラグを「ＯＦＦ（０）」に変更する（ＳＰ４７）。
【００９４】
続いて、ＣＰＵ１２は、セカンダリボリューム４２のフォーマット管理ビットマップ２２を参照し、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」（フォーマット済み）であるか否かをチェックする（ＳＰ４８）。そして、ＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」である場合（ＳＰ４８：ＹＥＳ）、ステップＳＰ５１に進む。これに対して、ＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ４８：ＮＯ）、当該領域のフォーマットを実施する（ＳＰ４９）。
【００９５】
続いて、ＣＰＵ１２は、フォーマット管理ビットマップ２２のセカンダリボリューム４２へのライト用のデータを格納する領域のビットを「ＯＦＦ（０）」（フォーマット済み）に変更する（ＳＰ５０）。続いて、ＣＰＵ１２は、ライト用のデータをセカンダリボリューム４２のディスク装置７にライトする（ＳＰ５１）（図１７（６））。続いて、ＣＰＵ１２は、ライトデータをプライマリボリューム４１のディスク装置７に非同期にライトする（ＳＰ５２）。
【００９６】
やがて、ＣＰＵ１２は、この後、図１６に示すストレージ装置３のスプリット指示への応答後のプライマリボリューム４１へのライト処理手順ＲＴ５を終了する（ＳＰ５３）。
【００９７】
図１８は、このストレージシステム１におけるストレージ装置３のスプリット指示への応答後のセカンダリボリューム４２へのライト処理に関する、ストレージ装置３のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。また、図１９は、ストレージ装置３における当該セカンダリボリューム４２へのライト処理の流れを示す概念図の一例である。
【００９８】
ＣＰＵ１２は、例えば、ホスト装置２からセカンダリボリューム４２へのライトコマンドを受信する（図１９（１））と、制御プログラム３４を実行することにより、図１８に示すストレージ装置３のスプリット指示への応答後のセカンダリボリューム４２へのライト処理手順ＲＴ６に従って、受信したライトデータをキャッシュメモリ１３上に格納する（ＳＰ６１）（図１９（２））。
【００９９】
続いて、ＣＰＵ１２は、当該ライトコマンドの完了応答をホスト装置２に送信する（ＳＰ６２）（図１９（３））。続いて、ＣＰＵ１２は、コピー管理ビットマップ２３を参照し、ライトデータを格納するセカンダリボリューム４２の領域に対応する、プライマリボリューム４１の領域のビットが「ＯＦＦ（０）」（コピー済み）であるか否かをチェックする（ＳＰ６３）。そして、ＣＰＵ１２は、当該領域のビットが「ＯＦＦ（０）」である場合（ＳＰ６３：ＹＥＳ）、ステップＳＰ７２に進む。これに対して、ＣＰＵ１２は、当該領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ６３：ＮＯ）、ホスト装置２から受信したライトデータのセグメントごとに存在するセグメント管理テーブル２１の書込み禁止フラグを「ＯＮ（１）」に変更して、セカンダリボリューム４２のディスク装置７への当該ライトデータのライトを抑止する（ＳＰ６４）。
【０１００】
続いて、ＣＰＵ１２は、プライマリボリューム４１のディスク装置７の該当する領域のデータをキャッシュメモリ１３にリードし、セカンダリボリューム４２へのライト用のデータを作成する（ＳＰ６５）（図１９（４）（５））。続いて、ＣＰＵ１２は、コピー管理ビットマップ２３のライトデータを格納するセカンダリボリューム４２の領域に対応する、プライマリボリューム４１の領域のビットを「ＯＦＦ（０）」に変更する（ＳＰ６６）。
【０１０１】
続いて、ＣＰＵ１２は、セカンダリボリューム４２のフォーマット管理ビットマップ２２を参照し、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」（フォーマット済み）であるか否かをチェックする（ＳＰ６７）。そして、ＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」である場合（ＳＰ６７：ＹＥＳ）、ステップＳＰ７０に進む。これに対して、ＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ６７：ＮＯ）、当該領域のフォーマットを実施する（ＳＰ６８）。
【０１０２】
続いて、ＣＰＵ１２は、フォーマット管理ビットマップ２２のセカンダリボリューム４２へのライト用のデータを格納する領域のビットを「ＯＦＦ（０）」（フォーマット済み）に変更する（ＳＰ６９）。続いて、ＣＰＵ１２は、ライト用のデータをセカンダリボリューム４２のディスク装置７にライトする（ＳＰ７０）（図１９（６））。続いて、ＣＰＵ１２は、ライトデータのセグメントを格納する領域のセグメント管理テーブル２１の書込み禁止フラグを「ＯＦＦ（０）」に変更する（ＳＰ７１）。続いて、ＣＰＵ１２は、ライトデータをセカンダリボリューム４２のディスク装置７に非同期にライトする（ＳＰ７２）。
【０１０３】
やがて、ＣＰＵ１２は、この後、図１８に示すストレージ装置３のスプリット指示への応答後のセカンダリボリューム４２へのライト処理手順ＲＴ６を終了する（ＳＰ７３）。
【０１０４】
図２０は、このストレージシステム１におけるストレージ装置３のスプリット指示への応答後のプライマリボリューム４１のリード処理に関する、ストレージ装置３のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。また、図２１は、ストレージ装置３における当該プライマリボリューム４１のリード処理の流れを示す概念図の一例である。
【０１０５】
ＣＰＵ１２は、例えば、ホスト装置２からプライマリボリューム４１のリードコマンドを受信する（図２１（１））と、制御プログラム３４を実行することにより、図２０に示すストレージ装置３のスプリット指示への応答後のプライマリボリューム４１のリード処理手順ＲＴ７に従って、キャッシュメモリ１３上に当該リードコマンドに対応するデータが存在するか否かをチェックする（ＳＰ８１）。そして、ＣＰＵ１２は、キャッシュメモリ１３上に当該リードコマンドに対応するデータが存在する場合（ＳＰ８２：ＹＥＳ）、ステップＳＰ８３に進む。これに対して、ＣＰＵ１２は、キャッシュメモリ１３上に当該リードコマンドに対応するデータが存在しない場合（ＳＰ８２：ＮＯ）、当該リードコマンドに対応するデータをプライマリボリューム４１のディスク装置７からキャッシュメモリ１３にリードする（ＳＰ８２）（図２１（２））。
【０１０６】
続いて、ＣＰＵ１２は、キャッシュメモリ１３に格納された当該リードコマンドに対応するデータをホスト装置２に送信する（ＳＰ８３）（図２１（３））。
【０１０７】
やがて、ＣＰＵ１２は、この後、図２０に示すストレージ装置３のスプリット指示への応答後のプライマリボリューム４１のリード処理手順ＲＴ７を終了する（ＳＰ８４）。
【０１０８】
図２２は、このストレージシステム１におけるストレージ装置３のスプリット指示への応答後のセカンダリボリューム４２のリード処理に関する、ストレージ装置３のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。また、図２３は、ストレージ装置３における当該セカンダリボリューム４２のリード処理の流れを示す概念図の一例である。
【０１０９】
本実施の形態のストレージシステム１では、プライマリボリューム４１上のデータがセカンダリボリューム４２にコピーされていない領域について、リードコマンドに対応するデータをリードする場合、当該データをプライマリボリューム４１のディスク装置７からキャッシュメモリ１３上にリードする。そして、本実施の形態のストレージシステム１では、セカンダリボリューム４２へのライト用のデータを作成して、当該セカンダリボリューム４２へのライト用のデータをリードコマンドに対応するデータとしてホスト装置２に送信し、セカンダリボリューム４２へのライト用のデータをセカンダリボリューム４２のディスク装置７にライトする。
【０１１０】
また、本実施の形態のストレージシステム１では、プライマリボリューム４１からセカンダリボリューム４２へのデータコピーの反映状態をコピー管理ビットマップ２３により管理し、セカンダリボリューム４２にデータコピーを行なった時点でコピー管理ビットマップ２３の該当するフラグを「ＯＦＦ」に変更する。以下、フローチャートに従って説明する。
【０１１１】
ＣＰＵ１２は、例えば、ホスト装置２からセカンダリボリューム４２のリードコマンドを受信する（図２３（１））と、制御プログラム３４を実行することにより、図２２に示すストレージ装置３のスプリット指示への応答後のセカンダリボリューム４２のリード処理手順ＲＴ８に従って、当該リードコマンドに対応するセカンダリボリューム４２のディスク装置７上のデータがプライマリボリューム４１から反映済みであるか否かをチェックする（ＳＰ９１）。
【０１１２】
そして、ＣＰＵ１２は、当該データがプライマリボリューム４１から反映済みである場合（ＳＰ９１：ＹＥＳ）、当該データをホスト装置２に送信して（ＳＰ９２）、この後、図２２に示すストレージ装置３のスプリット指示への応答後のセカンダリボリューム４２のリード処理手順ＲＴ８を終了する（ＳＰ９８）。この場合、ＣＰＵ１２は、キャッシュメモリ１３上にデータが存在する場合、当該データを送信し、存在しなければセカンダリボリューム４２のディスク装置７から該当するデータをリードして、当該データを送信する。これに対して、ＣＰＵ１２は、当該データがプライマリボリューム４１から反映済みでない場合（ＳＰ９１：ＮＯ）、プライマリボリューム４１のディスク装置７の該当する領域のデータをキャッシュメモリ１３にリードし、セカンダリボリューム４２へのライト用のデータを作成する（ＳＰ９３）（図２３（２）（３））。
【０１１３】
続いて、ＣＰＵ１２は、当該セカンダリボリューム４２へのライト用のデータをリードコマンドに対応するデータとしてホスト装置２に送信する（ＳＰ９４）。
【０１１４】
続いて、ＣＰＵ１２は、セカンダリボリューム４２のフォーマット管理ビットマップ２２を参照し、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」（フォーマット済み）であるか否かをチェックする（ＳＰ９５）。そして、ＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」である場合（ＳＰ９５：ＹＥＳ）、ステップＳＰ９７に進む。これに対して、ＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ９５：ＮＯ）、当該領域のフォーマットを実施して、当該領域のビットを「ＯＦＦ（０）」（フォーマット済み）に変更する（ＳＰ９６）。続いて、ＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータをセカンダリボリューム４２のディスク装置７に非同期にライトする（ＳＰ９７）。
【０１１５】
やがて、ＣＰＵ１２は、この後、図２２に示すストレージ装置３のスプリット指示への応答後のセカンダリボリューム４２のリード処理手順ＲＴ８を終了する（ＳＰ９８）。
【０１１６】
図２４は、キャッシュメモリ１３の共有並びにプライマリボリューム４１及びセカンダリボリューム４２のオーナー権及びその引き継ぎの一例を示している。本実施の形態におけるストレージ装置３のキャッシュメモリ１３には、データ用の領域と管理用の領域が存在する。また、キャッシュメモリ１３は、ストレージ装置３に２つ存在するコントローラ部５のそれぞれに搭載されており、また、相互に他方のキャッシュメモリ１３上の情報を共有することができるようにするため、キャッシュメモリ１３上のデータや管理情報をライトする際には、ライトするコントローラ部５のキャッシュメモリ１３のみでなく、他方のコントローラ部５のキャッシュメモリ１３にもライトする。なお、以下においては、便宜のため、一方のコントローラ部５を、コントローラ０と呼び、他方のコントローラ部５をコントローラ１と呼ぶ。
【０１１７】
すなわち、ストレージシステム１では、ホスト装置２からライトコマンドをコントローラ０に受信した場合、コントローラ０のＣＰＵ１２の指示によりコントローラ０のキャッシュメモリ１３の領域にデータをライトし、データの二重書きを目的としてコントローラ１のキャッシュメモリ１３の対応する領域にライトする。
【０１１８】
一方、本実施の形態におけるストレージシステム１では、プライマリボリューム４１及びセカンダリボリューム４２が同一のコントローラ部５の配下に存在し、プライマリボリューム４１及びセカンダリボリューム４２を、ともに同一のコントローラ０により制御する。すなわち、ストレージシステム１では、ホスト装置２からのコマンドにより、オーナー権をコントローラ１に移動するときには、プライマリボリューム４１及びセカンダリボリューム４２を双方とも移動する必要がある。それに伴い、ストレージシステム１では、コントローラ０のキャッシュメモリ１３のプライマリボリューム４１及びセカンダリボリューム４２双方の管理データをコントローラ１に引き継ぐ。
【０１１９】
しかしながら、本実施の形態におけるストレージシステム１では、プライマリボリューム４１からセカンダリボリューム４２にバックグラウンドでデータコピーを行なっていることから、コントローラ１に引き継ぐ際には、コントローラ０において、ある領域が完了した時点で一旦データコピーを中断した後に、オーナー権を引き継ぐ。そして、ストレージシステム１では、コントローラ１において、フォーマット管理ビットマップ２２及びコピー管理ビットマップ２３を参照し、データコピーを再開する。
【０１２０】
また、本実施の形態におけるストレージシステム１では、ホスト装置２からのコマンドに関しても同様に、コマンドを受け取ったタイミングで対応が異なり、コマンド処理を行なっているものに関しては、当該コマンドの処理を終わらせるまで実施し、受信したが処理が行なわれていないものに関しては、当該コマンドの処理を行なわずに、引き継ぎが終わったタイミングで再開するようにする。
【０１２１】
図２５は、このストレージシステム１におけるストレージ装置３のプライマリボリューム４１及びセカンダリボリューム４２のオーナー権引き継ぎ処理に関する、ストレージ装置３のコントローラ１のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。
【０１２２】
本実施の形態におけるストレージシステム１では、コントローラ０上において、プライマリボリューム４１からセカンダリボリューム４２へのコピーを制御している場合、コントローラ０にオーナー権があり、コントローラ１は、何らの制御を行なわない。ストレージシステム１では、この状態で、コントローラ０が故障等により障害となった場合には、当該制御をコントローラ１に引き継ぐ。
【０１２３】
この場合、ストレージシステム１では、コントローラ０が障害発生したことを検出すると、コントローラ１において、例えば、コントローラ１のキャッシュメモリ１３のコントローラ０情報から入手し、プライマリボリューム４１及びセカンダリボリューム４２の状態を引き継ぐ。具体的には、ストレージシステム１では、コントローラ１において、フォーマット管理ビットマップ２２及びコピー管理ビットマップ２３をコントローラ０の管理からコントローラ１の管理に変更して、当該プライマリボリューム４１及びセカンダリボリューム４２の状態を引き継ぐ。
【０１２４】
なお、ストレージシステム１では、セカンダリボリューム４２のフォーマットやプライマリボリューム４１からセカンダリボリューム４２へのコピーを、シーケンシャルに先頭から行なうが、ホスト装置２からライトコマンドを受信した場合には、該当する領域のみ先行してフォーマット及びコピーを行なう。
【０１２５】
またなお、ストレージシステム１では、コントローラ０において、プライマリボリューム４１のディスク装置７からコントローラ０のキャッシュメモリ１３上にリードして、セカンダリボリューム４２にライトする予定のデータを、データの信頼性の観点から破棄する。そして、ストレージシステム１では、コントローラ１において、コピー管理ビットマップ２３の情報に従って、プライマリボリューム４１のディスク装置７から再度コントローラ１のキャッシュメモリ１３にリードするところから再開する。以下、フローチャートに従って説明する。
【０１２６】
まず、ストレージシステム１では、例えば、コントローラ０においてプライマリボリューム４１及びセカンダリボリューム４２が管理されていると共に、バックグラウンドでコピー実施中であり、所定のタイミングでコントローラ０に故障が発生したことを前提とする。
【０１２７】
コントローラ１のＣＰＵ１２は、例えば、コントローラ０に故障が発生したことを検出すると、制御プログラム３４を実行することにより、図２５に示すプライマリボリューム４１及びセカンダリボリューム４２のオーナー権引き継ぎ処理手順ＲＴ９に従って、コントローラ１のキャッシュメモリ１３上に格納されているコントローラ０のペア管理テーブル２１のペア情報を、コントローラ１が管理しているペア情報管理テーブル２１に追加する（ＳＰ１０１）。
【０１２８】
続いて、コントローラ１のＣＰＵ１２は、コントローラ１のキャッシュメモリ１３上に格納されているコントローラ０のプライマリボリューム４１のコピー管理ビットマップ２３をコントローラ１の管理に移動する（ＳＰ１０２）。続いて、コントローラ１のＣＰＵ１２は、コントローラ１のキャッシュメモリ１３上に格納されているコントローラ０のセカンダリボリューム４２のフォーマット管理ビットマップ２２をコントローラ１の管理に移動する（ＳＰ１０３）。
【０１２９】
続いて、コントローラ１のＣＰＵ１２は、オーナー権管理テープル２４のオーナー権がコントローラ０となっているボリュームを、すべてコントローラ１のオーナー権に変更する（ＳＰ１０４）。続いて、コントローラ１のＣＰＵ１２は、ペア管理テーブル２１を参照して、プライマリボリューム４１及びセカンダリボリューム４２のバックグラウンドにおけるコピーを再開する（ＳＰ１０５）。
【０１３０】
やがて、ＣＰＵ１２は、この後、図２５に示すプライマリボリューム４１及びセカンダリボリューム４２のオーナー権引き継ぎ処理手順ＲＴ９を終了する（ＳＰ１０６）。
【０１３１】
図２６は、このストレージシステム１におけるストレージ装置３のコントローラ０障害時のコントローラ１によるペア状態引き継ぎ処理に関する、ストレージ装置３のコントローラ１のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。また、図２７は、ペア管理テーブル２１のペア状態の追加を示す概念図の一例である。
【０１３２】
まず、ストレージシステム１では、例えば、コントローラ０及びコントローラ１のローカルメモリ１４に、図２７（１）に示すペア管理テーブル２１が格納されていることを前提とする。
【０１３３】
コントローラ１のＣＰＵ１２は、例えば、コントローラ０に故障が発生したことを検出すると（図２７（２））、制御プログラム３４を実行することにより、図２６に示すコントローラ０障害時のコントローラ１によるペア状態引き継ぎ処理手順ＲＴ１０に従って、コントローラ０のペア管理テーブル２１にコピー情報があるか否かをチェックする（ＳＰ１１１）。そして、コントローラ１のＣＰＵ１２は、コントローラ０のペア管理テーブル２１にコピー情報がない場合（ＳＰ１１１：ＮＯ）、この後、図２６に示すコントローラ０障害時のコントローラ１によるペア状態引き継ぎ処理手順ＲＴ１０を終了する（ＳＰ１０６）。これに対して、コントローラ１のＣＰＵ１２は、コントローラ０のペア管理テーブル２１にコピー情報がある場合（ＳＰ１１１：ＹＥＳ）、コントローラ０のペア管理テーブル２１の情報をコントローラ１のペア管理テーブル２１に追加する（ＳＰ１１２）（図２７（３））。
【０１３４】
この場合、ストレージシステム１では、ペア管理テーブル２１をコントローラ部５ごとに管理されており、コントローラ０に故障などが発生した場合、コントローラ１が、当該コントローラ１のペア管理テーブル２１にペア状態をコピーする。
【０１３５】
続いて、コントローラ１のＣＰＵ１２は、コントローラ１にてペア状態をチェックして、プライマリボリューム４１及びセカンダリボリューム４２の処理を継続する（ＳＰ１１３）。
【０１３６】
やがて、ＣＰＵ１２は、この後、図２６に示すコントローラ０障害時のコントローラ１によるペア状態引き継ぎ処理手順ＲＴ１０を終了する（ＳＰ１１４）。
【０１３７】
図２８は、このストレージシステム１におけるストレージ装置３のスプリット指示への応答後にコントローラ０に障害が発生した場合におけるプライマリボリューム４１へのライト処理に関する、ストレージ装置３のコントローラ１のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。
【０１３８】
本実施の形態におけるストレージシステム１では、スプリット指示への応答後にコントローラ０に障害が発生した場合に、ホスト装置２からのプライマリボリューム４１へのライトコマンドに関して、コントローラ０が、ホスト装置２に対して完了応答を送信したか否かによって、プライマリボリューム４１のディスク装置７へのライトを行なうか否かを判断する必要がある。この場合、ストレージシステム１では、コントローラ０が、既にホスト装置２に完了応答を送信した場合には、プライマリボリューム４１のディスク装置７にライトすることを保証しなければならない。
【０１３９】
本実施の形態におけるストレージシステム１では、コントローラ０に障害が発生した場合、コントローラ０のキャッシュメモリ１３のデータ等については、コントローラ１に引き継ぎ、コントローラ１のＣＰＵ１２が、データごとにホスト装置２への完了応答の送信が終了しているか否かをチェックして、当該データをディスク装置７にライトするか破棄するかの処理を実施する。以下、フローチャートに従って説明する。
【０１４０】
コントローラ１のＣＰＵ１２は、例えば、コントローラ０に故障が発生したことを検出すると、制御プログラム３４を実行することにより、図２８に示すスプリット指示への応答後にコントローラ０に障害が発生した場合におけるプライマリボリューム４１へのライト処理手順ＲＴ１１に従って、コントローラ０のキャッシュメモリ１３及びローカルメモリ１４に格納されている制御情報（例えば、フォーマット管理ビットマップ２２、コピー管理ビットマップ２３、ペア管理テーブル３１等）をコピー等により引き継いで、コントローラ１のキャッシュメモリ１３及びローカルメモリ１４に格納する（ＳＰ１２１）。
【０１４１】
続いて、コントローラ１のＣＰＵ１２は、コントローラ０のキャッシュメモリ１３に格納されているデータ（例えば、セグメント、セグメント管理テーブル２１等）をコピー等により引き継いで、コントローラ１のキャッシュメモリ１３に格納する（ＳＰ１２２）。
【０１４２】
続いて、コントローラ１のＣＰＵ１２は、コントローラ０から引き継いだデータのうちの１のセグメントを選択する（ＳＰ１２３）。
【０１４３】
続いて、コントローラ１のＣＰＵ１２は、選択したセグメントがホスト装置２に応答完了を送信したライトコマンドのデータであるか否かをチェックする（ＳＰ１２４）。この場合、コントローラ１のＣＰＵ１２は、セグメント確保テーブル３２を参照することで、当該セグメントがどのライトコマンドジョブに確保されていたかを判断し、そのライトコマンドジョブがどこまで処理していたかをステータス管理しているホストコマンド管理テーブル３３により、ホスト装置２に応答完了を送信したか否かを判断する。そして、コントローラ１のＣＰＵ１２は、選択したセグメントがホスト装置２に応答完了を送信したライトコマンドのデータでない場合（ＳＰ１２４：ＮＯ）、コントローラ１のキャッシュメモリ１３上から当該セグメントを削除する（ＳＰ１２５）。
【０１４４】
これに対して、コントローラ１のＣＰＵ１２は、選択したセグメントがホスト装置２に応答完了を送信したライトコマンドのデータである場合（ＳＰ１２４：ＹＥＳ）、コピー管理ビットマップ２３を参照し、選択したセグメントのライトデータを格納する領域のビットが「ＯＦＦ（０）」（コピー済み）であるか否かをチェックする（ＳＰ１２６）。そして、コントローラ１のＣＰＵ１２は、選択したセグメントのライトデータを格納する領域のビットが「ＯＦＦ（０）」である場合（ＳＰ１２６：ＹＥＳ）、ステップＳＰ１３５に進む。これに対して、コントローラ１のＣＰＵ１２は、選択したセグメントのライトデータを格納する領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ１２６：ＮＯ）、選択したセグメントの制御情報を管理しているセグメント管理テーブル２１の書込み禁止フラグを「ＯＮ（１）」に変更して、プライマリボリューム４１のディスク装置７への当該ライトデータのライトを抑止する（ＳＰ１２７）。
【０１４５】
続いて、コントローラ１のＣＰＵ１２は、プライマリボリューム４１のディスク装置７からの該当する領域のデータをキャッシュメモリ１３にリードし、セカンダリボリューム４２へのライト用のデータを作成する（ＳＰ１２８）。続いて、コントローラ１のＣＰＵ１２は、コピー管理ビットマップ２３のライトデータを格納する領域のビットを「ＯＦＦ（０）」に変更する（ＳＰ１２９）。続いて、コントローラ１のＣＰＵ１２は、ライトデータのセグメントを格納する領域のセグメント管理テーブル２１の書込み禁止フラグを「ＯＦＦ（０）」に変更する（ＳＰ１３０）。
【０１４６】
続いて、コントローラ１のＣＰＵ１２は、セカンダリボリューム４２のフォーマット管理ビットマップ２２を参照し、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」（フォーマット済み）であるか否かをチェックする（ＳＰ１３１）。そして、コントローラ１のＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」である場合（ＳＰ１３１：ＹＥＳ）、ステップＳＰ１３４に進む。これに対して、コントローラ１のＣＰＵ１２は、セカンダリボリューム４２へのライト用のデータを格納する領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ１３１：ＮＯ）、当該領域のフォーマットを実施する（ＳＰ１３２）。
【０１４７】
続いて、コントローラ１のＣＰＵ１２は、フォーマット管理ビットマップ２２のセカンダリボリューム４２へのライト用のデータを格納する領域のビットを「ＯＦＦ（０）」（フォーマット済み）に変更する（ＳＰ１３３）。続いて、コントローラ１のＣＰＵ１２は、ライト用のデータをセカンダリボリューム４２のディスク装置７にライトする（ＳＰ１３４）。続いて、コントローラ１のＣＰＵ１２は、ライトデータをプライマリボリューム４１のディスク装置７に非同期にライトする（ＳＰ１３５）。
【０１４８】
続いて、コントローラ１のＣＰＵ１２は、他にコントローラ０から引き継いだデータが存在するか否かをチェックする（ＳＰ１３６）。そして、コントローラ１のＣＰＵ１２は、他にコントローラ０から引き継いだデータが存在する場合（ＳＰ１３６：ＹＥＳ）、ステップＳＰ１２３に戻り、コントローラ０から引き継いだデータのうちの１のセグメントを選択し（ＳＰ１２３）、この後、上述の場合と同様の処理を繰り返す（ＳＰ１２３〜ＳＰ１３６）。これに対して、ＣＰＵ１２は、他にコントローラ０から引き継いだデータが存在しない場合（ＳＰ１３６：ＮＯ）、この後、図２８に示すスプリット指示への応答後にコントローラ０に障害が発生した場合におけるプライマリボリューム４１へのライト処理手順ＲＴ１１を終了する（ＳＰ１３７）。
【０１４９】
なお、ストレージシステム１では、コントローラ１に故障が発生した場合には、コントローラ０のＣＰＵ１２が同様の処理を行なうことは、言うまでもない。
【０１５０】
図２９は、このストレージシステム１におけるストレージ装置３のスプリット指示への応答後にコントローラ０に障害が発生した場合におけるセカンダリボリューム４２へのリード処理に関する、ストレージ装置３のコントローラ１のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。
【０１５１】
本実施の形態におけるストレージシステム１では、セカンダリボリューム４２からデータをリードする場合、ストレージ装置３内部でのプライマリボリューム４１からのデータリードやデータコピーについては、本来、プライマリボリューム４１からセカンダリボリューム４２にコピーしなければならないデータを先行してコピーするためのものである。このため、本実施の形態におけるストレージシステム１では、スプリット指示への応答後におけるセカンダリボリューム４２のリードの処理中に、コントローラ０に障害が発生した場合であっても、引き継がれたプライマリボリューム４１のコピー管理ビットマップ２３を元に、コピーを再開する。
【０１５２】
コントローラ１のＣＰＵ１２は、例えば、コントローラ０のキャッシュメモリ１３及びローカルメモリ１４に格納されている制御情報及びデータをコピー等により引き継いで、コントローラ１のキャッシュメモリ１３及びローカルメモリ１４に格納すると（ＳＰ１２１、ＳＰ１２２）、制御プログラム３４を実行することにより、図２９に示すスプリット指示への応答後にコントローラ０に障害が発生した場合におけるセカンダリボリューム４２のリード処理手順ＲＴ１２に従って、コントローラ０から引き継いだデータのうちの１のセグメントを選択する（ＳＰ１４１）。
【０１５３】
続いて、コントローラ１のＣＰＵ１２は、プライマリボリューム４１のコピー管理ビットマップ２３を参照し、選択したセグメントを格納するセカンダリボリューム４２の領域に対応する、プライマリボリューム４１の領域のビットが「ＯＦＦ（０）」（コピー済み）であるか否かをチェックする（ＳＰ１４２）。そして、ＣＰＵ１２は、当該領域のビットが「ＯＦＦ（０）」である場合（ＳＰ１４２：ＹＥＳ）、当該セグメントを破棄する（ＳＰ１４３）。これに対して、ＣＰＵ１２は、当該領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ１４２：ＮＯ）、セカンダリボリューム４２のフォーマット管理ビットマップ２２を参照し、選択したセグメントを格納する領域のビットが「ＯＦＦ（０）」（フォーマット済み）であるか否かをチェックする（ＳＰ１４４）。そして、コントローラ１のＣＰＵ１２は、当該領域のビットが「ＯＦＦ（０）」である場合（ＳＰ１４４：ＹＥＳ）、ステップＳＰ１４７に進む。これに対して、コントローラ１のＣＰＵ１２は、当該領域のビットが「ＯＦＦ（０）」でない場合（ＳＰ１４４：ＮＯ）、当該領域のフォーマットを実施する（ＳＰ１４５）。
【０１５４】
続いて、コントローラ１のＣＰＵ１２は、フォーマット管理ビットマップ２２の選択したセグメントを格納する領域のビットを「ＯＦＦ（０）」（フォーマット済み）に変更する（ＳＰ１４６）。続いて、コントローラ１のＣＰＵ１２は、選択したセグメントのデータをセカンダリボリューム４２のディスク装置７にライトする（ＳＰ１４７）。
【０１５５】
続いて、コントローラ１のＣＰＵ１２は、他にコントローラ０から引き継いだデータが存在するか否かをチェックする（ＳＰ１４８）。そして、コントローラ１のＣＰＵ１２は、他にコントローラ０から引き継いだデータが存在する場合（ＳＰ１４８：ＹＥＳ）、ステップＳＰ１４１に戻り、コントローラ０から引き継いだデータのうちの１のセグメントを選択し（ＳＰ１４１）、この後、上述の場合と同様の処理を繰り返す（ＳＰ１４１〜ＳＰ１４８）。これに対して、ＣＰＵ１２は、他にコントローラ０から引き継いだデータが存在しない場合（ＳＰ１４８：ＮＯ）、この後、図２９に示すスプリット指示への応答後にコントローラ０に障害が発生した場合におけるセカンダリボリューム４２のリード処理手順ＲＴ１２を終了する（ＳＰ１４９）。
【０１５６】
なお、ストレージシステム１では、コントローラ１に故障が発生した場合には、コントローラ０のＣＰＵ１２が同様の処理を行なうことは、言うまでもない。
【０１５７】
このようにして、本実施の形態におけるストレージシステム１では、ＣＰＵ１２が、ホスト装置２からスプリット指示を受信すると、プライマリボリューム４１のバックアップボリュームであるセカンダリボリューム４２を作成すると共に、セカンダリボリューム４２のフォーマット及びプライマリボリューム４１からセカンダリボリューム４２へのコピーが未完了のままでホスト装置２にスプリット指示の完了応答を送信する。
【０１５８】
従って、バックアップを実施しないボリュームを含めすべてのボリュームについてペア状態を維持することなく、バックアップ指示を受信したボリュームのみその都度バックアップボリュームを作成するため、初期設定の際にユーザに煩雑な作業をさせることを未然かつ有効に防止することができると共に、実際に使用する記憶領域以上の記憶領域を不要とすることができる。
【０１５９】
また、本実施の形態におけるストレージシステム１では、ＣＰＵ１２が、スプリット指示の完了応答を送信した後に、ホスト装置２からのコマンドを受信した場合、フォーマット管理ビットマップ２２及びコピー管理ビットマップ２３に基づいて、セカンダリボリューム４２のフォーマット及びプライマリボリューム４１からセカンダリボリューム４２へのコピーを実施することにより、当該フォーマット及びコピーが未完了のままでホスト装置２にスプリット指示の完了応答を送信した場合にも、ホスト装置２からのコマンドの処理を実施することができる。また、未コピーデータを退避領域に一時退避させることなく、バックグラウンドでコピーするため、バッファ領域を必要とせずに、ホスト装置２からのコマンドの処理を実施することができる。
【０１６０】
さらに、本実施の形態におけるストレージシステム１では、コントローラ０によりスプリット指示の完了応答を送信した後に、コントローラ０に障害が発生した場合、コントローラ０に格納されているデータ、コントローラ０のペア管理テーブル２１、フォーマット管理ビットマップ２２及びコピー管理ビットマップ２３を引き継いで、セカンダリボリューム４２のフォーマット及びプライマリボリューム４１からセカンダリボリューム４２へのコピーを再開することにより、当該フォーマット及びコピーが未完了のままでコントローラ０に障害が発生した場合にも、ホスト装置２からのコマンドの処理を実施することができる。
【０１６１】
図３０は、他実施の形態によるストレージシステム１の構成の一例を示している。他実施の形態によるストレージシステム１は、例えば、遠隔地にストレージ装置３と同一の構成の他のストレージ装置３を備えて構成される点を除いて、図１のストレージシステム１と同様に構成されている。なお、以下においては、便宜のため、一方のストレージ装置３を、ストレージ０と呼び、他方のストレージ装置３をストレージ１と呼ぶ。
【０１６２】
他実施の形態によるストレージシステム１は、プライマリボリューム４１及びセカンダリボリューム４２により図１２〜図２９の処理を行なうと共に、ストレージ１にセカンダリボリューム４３を有し、プライマリボリューム４１及びセカンダリボリューム４３により図１２〜図２９の処理を行なうようになされている。
【０１６３】
図３１は、他実施の形態によるストレージシステム１の構成の一例を示している。他実施の形態によるストレージシステム１は、例えば、遠隔地にストレージ装置３と同一の構成の他のストレージ装置３を備えて構成される点を除いて、図１のストレージシステム１と同様に構成されている。
【０１６４】
他実施の形態によるストレージシステム１は、ストレージ１にセカンダリボリューム４３を有し、プライマリボリューム４１及びセカンダリボリューム４３により図１２〜図２９の処理を行なうようになされていると共に、ストレージ１にセカンダリボリューム４４を有し、カンダリボリューム４３をプライマリボリュームとして、プライマリボリューム（セカンダリボリューム４３）及びセカンダリボリューム４４により図１２〜図２９の処理を行なうようになされている
【０１６５】
図３２は、このストレージシステム１におけるストレージ０のスプリット指示への応答後のセカンダリボリューム４３のリード処理に関する、ストレージ１のＣＰＵ１２の具体的な処理手順を示したフローチャートの一例である。
【０１６６】
ストレージ１のＣＰＵ１２は、例えば、ホスト装置２からセカンダリボリューム４３のリードコマンドを受信すると、制御プログラム３４を実行することにより、図３２に示すストレージ０のスプリット指示への応答後のセカンダリボリューム４３のリード処理手順ＲＴ１３に従って、該当するセカンダリボリューム４３のディスク装置７がフォーマット未完了であるか否かをチェックする（ＳＰ１５１）。そして、ストレージ１のＣＰＵ１２は、該当するセカンダリボリューム４３のディスク装置７がフォーマット未完了である場合（ＳＰ１５１：ＹＥＳ）、該当するセカンダリボリューム４３のディスク装置７のフォーマットを実施して（ＳＰ１５２）、ステップＳＰ１５３に進む。
【０１６７】
これに対して、ストレージ１のＣＰＵ１２は、該当するセカンダリボリューム４３のディスク装置７がフォーマット未完了でない場合（ＳＰ１５１：ＮＯ）、該当するセカンダリボリューム４４のディスク装置７がプライマリボリューム４１からのデータコピーを完了しているか否かをチェックする（ＳＰ１５３）。
【０１６８】
そして、ストレージ１のＣＰＵ１２は、該当するセカンダリボリューム４４のディスク装置７がプライマリボリューム４１からのデータコピーを完了している場合（ＳＰ１５３：ＹＥＳ）、当該リードコマンドに対応するセカンダリボリューム４２のディスク装置７上のデータをホスト装置２に送信して（ＳＰ１５４）、この後、図３２に示すストレージ０のスプリット指示への応答後のセカンダリボリューム４３のリード処理手順ＲＴ１３を終了する（ＳＰ１５９）。この場合、ストレージ１のＣＰＵ１２は、ストレージ１のキャッシュメモリ１３上にデータが存在する場合、当該データを送信し、存在しなければセカンダリボリューム４３のディスク装置７から該当するデータをリードして、当該データを送信する。
【０１６９】
これに対して、ストレージ１のＣＰＵ１２は、該当するセカンダリボリューム４４のディスク装置７がプライマリボリューム４１からのデータコピーを完了していない場合（ＳＰ１５３：ＮＯ）、プライマリボリューム４１のディスク装置７の該当する領域のデータをストレージ１のキャッシュメモリ１３にリードする（ＳＰ１５５）。続いて、ストレージ１のＣＰＵ１２は、当該データをストレージ１のキャッシュメモリ１３においてコピーして、セカンダリボリューム４３へのライト用のデータを作成する（ＳＰ１５６）。
【０１７０】
続いて、ストレージ１のＣＰＵ１２は、当該セカンダリボリューム４３へのライト用のデータをリードコマンドに対応するデータとしてホスト装置２に送信する（ＳＰ１５７）。続いて、ストレージ１のＣＰＵ１２は、セカンダリボリューム４３へのライト用のデータをセカンダリボリューム４３のディスク装置７に非同期にライトする（ＳＰ１５８）。
【０１７１】
やがて、ＣＰＵ１２は、この後、図３２に示すストレージ０のスプリット指示への応答後のセカンダリボリューム４３のリード処理手順ＲＴ１３を終了する（ＳＰ１５９）。
【０１７２】
このようにして、他実施の形態におけるストレージシステム１では、ストレージ０のＣＰＵ１２がスプリット指示の完了応答を送信した後に、ホスト装置２からのコマンドを受信した場合、フォーマット管理ビットマップ２２及びコピー管理ビットマップ２３に基づいて、セカンダリボリューム４３のフォーマット及びプライマリボリューム４１からセカンダリボリューム４３へのコピーを実施することにより、セカンダリボリューム４３が他のストレージ装置３内に存在する場合にも、ホスト装置２からのコマンドの処理を実施することができる。
【産業上の利用可能性】
【０１７３】
本発明は、データを格納するボリュームのバックアップを実施するストレージ装置に広く適用することができる。
【図面の簡単な説明】
【０１７４】
【図１】本実施の形態によるストレージシステムの構成を示すブロック図である。
【図２】キャッシュメモリに格納されている各種テーブルの説明に供する概念図である。
【図３】ローカルメモリに格納されている各種プログラム及び各種テーブルの説明に供する概念図である。
【図４】ストレージ装置がライトデータを受信して、ディスク装置に格納する仕組みの説明に供する概念図である。
【図５】セグメント管理テーブルの構成の説明に供する概念図である。
【図６】フォーマット管理ビットマップの構成の説明に供する概念図である。
【図７】コピー管理ビットマップの構成の説明に供する概念図である。
【図８】オーナー権管理テーブルの構成の説明に供する概念図である。
【図９】ペア管理テーブルの構成の説明に供する概念図である。
【図１０】セグメント確保テーブルの構成の説明に供する概念図である。
【図１１】ホストコマンド管理テーブルの構成の説明に供する概念図である。
【図１２】バックアップ処理手順を示すフローチャートである。
【図１３】バックアップ処理手順を示すフローチャートである。
【図１４】セカンダリボリュームのフォーマット処理を示すフローチャートである。
【図１５】プライマリボリュームからセカンダリボリュームへのデータコピー処理手順を示すフローチャートである。
【図１６】スプリット指示への応答後のプライマリボリュームへのライト処理手順を示すフローチャートである。
【図１７】スプリット指示への応答後のプライマリボリュームへのライト処理の流れの説明に供する概念図である。
【図１８】スプリット指示への応答後のセカンダリボリュームへのライト処理手順を示すフローチャートである。
【図１９】スプリット指示への応答後のセカンダリボリュームへのライト処理の流れの説明に供する概念図である。
【図２０】スプリット指示への応答後のプライマリボリュームのリード処理手順を示すフローチャートである。
【図２１】スプリット指示への応答後のプライマリボリュームのリード処理の流れの説明に供する概念図である。
【図２２】スプリット指示への応答後のセカンダリボリュームのリード処理手順を示すフローチャートである。
【図２３】スプリット指示への応答後のセカンダリボリュームのリード処理の流れの説明に供する概念図である。
【図２４】キャッシュメモリの共有並びにプライマリボリューム及びセカンダリボリュームのオーナー権及びその引き継ぎの説明に供する概念図である。
【図２５】プライマリボリューム及びセカンダリボリュームのオーナー権引き継ぎ処理手順を示すフローチャートである。
【図２６】ストレージ装置のコントローラ０障害時のコントローラ１によるペア状態引き継ぎ処理手順を示すフローチャートである。
【図２７】ペア管理テーブルのペア状態の追加の説明に供する概念図である。
【図２８】スプリット指示への応答後にコントローラ０に障害が発生した場合におけるプライマリボリュームへのライト処理手順を示すフローチャートである。
【図２９】スプリット指示への応答後にコントローラ０に障害が発生した場合におけるセカンダリボリュームへのリード処理手順を示すフローチャートである。
【図３０】他実施の形態によるストレージシステムの構成を示すブロック図である。
【図３１】本実施の形態によるストレージシステムの構成を示すブロック図である。
【図３２】プライマリボリューム及びセカンダリボリュームのオーナー権引き継ぎ処理手順を示すフローチャートである。
【符号の説明】
【０１７５】
１……ストレージシステム、２……ホスト装置、３……ストレージ装置、５……コントローラ部、６……記憶部、７……ディスク装置、１２……ＣＰＵ、１３……キャッシュメモリ、１４……ローカルメモリ、２１……セグメント管理テーブル、２２……フォーマット管理ビットマップ、２３……コピー管理ビットマップ、２４……オーナー権管理テーブル、３１……ペア管理テーブル、３２……セグメント確保テーブル、３３……ホストコマンド管理テーブル、３４……制御プログラム、４１……プライマリボリューム、４２、４３、４４……セカンダリボリューム
【図１】
2009211401.tif 000003
【図２】
2009211401.tif 000004
【図３】
2009211401.tif 000005
【図４】
2009211401.tif 000006
【図５】
2009211401.tif 000007
【図６】
2009211401.tif 000008
【図７】
2009211401.tif 000009
【図８】
2009211401.tif 000010
【図９】
2009211401.tif 000011
【図１０】
2009211401.tif 000012
【図１１】
2009211401.tif 000013
【図１２】
2009211401.tif 000014
【図１３】
2009211401.tif 000015
【図１４】
2009211401.tif 000016
【図１５】
2009211401.tif 000017
【図１６】
2009211401.tif 000018
【図１７】
2009211401.tif 000019
【図１８】
2009211401.tif 000020
【図１９】
2009211401.tif 000021
【図２０】
2009211401.tif 000022
【図２１】
2009211401.tif 000023
【図２２】
2009211401.tif 000024
【図２３】
2009211401.tif 000025
【図２４】
2009211401.tif 000026
【図２５】
2009211401.tif 000027
【図２６】
2009211401.tif 000028
【図２７】
2009211401.tif 000029
【図２８】
2009211401.tif 000030
【図２９】
2009211401.tif 000031
【図３０】
2009211401.tif 000032
【図３１】
2009211401.tif 000033
【図３２】
2009211401.tif 000034