(57)【要約】【課題】バックアップサーバを不要とし、バックアップ先及び／又はリストア元がテープであっても高速にバックアップ及び／又はリストアできるようにする。【解決手段】  第二ストレージシステム（ＳＳ２）が、複数のテープと、ランダムアクセスをテープよりも高速に行える第一記憶装置と、第一記憶装置をエミュレーションした仮想記憶装置とを備える。第一ストレージシステム（ＳＳ１）が、第二記憶装置と、仮想記憶装置がマッピングされた第三記憶装置とを備える。ＳＳ２が、第一記憶装置上に記憶領域を確保し、仮想記憶装置に対応したテープから記憶領域にデータを読出す。ＳＳ１は、第二記憶装置と第三記憶装置との間でコピーを行い、その際、第三記憶装置に生じるアクセスのためのコマンドを仮想記憶装置に対して送信する。ＳＳ２は、仮想記憶装置に対するアクセスコマンドに受信した場合、記憶領域に対してアクセスを行う。【選択図】図１
2007305076.tif 000002
【特許請求の範囲】
【請求項１】
計算機と、
前記計算機に接続された第一のストレージシステムと、
前記第一のストレージシステムに接続された第二のストレージシステムと
を備え、
前記第二のストレージシステムは、
データを記憶する複数のテープ装置と、
アクセス先がランダムに異なるアクセスであるランダムアクセスをテープ装置よりも高速に行うことのできる第一の記憶装置と、
前記第一の記憶装置をエミュレーションした仮想記憶装置と、
前記複数のテープ装置や前記第一の記憶装置へのアクセスを制御する第二のコントローラと
を備え、
前記計算機は、コピー指示を前記第一のストレージシステムに送信する計算機制御部を備え、
前記第一のストレージシステムは、
データを記憶する第二の記憶装置と、
前記仮想記憶装置がマッピングされた第三の記憶装置と、
前記第二の記憶装置や前記第三の記憶装置へのデータアクセスを制御する第一のコントローラと
を備え、
前記第一のコントローラは、前記計算機から前記コピー指示を受信し、該コピー指示に応答して、前記第二の記憶装置と前記第三の記憶装置との間でデータコピーを行い、その際、前記第三の記憶装置に生じるデータアクセスのための、前記仮想記憶装置を指定したデータアクセスコマンドを前記第二のストレージシステムに送信し、
前記第二のコントローラは、前記第一の記憶装置上に記憶領域を確保し、前記複数のテープ装置のうちの前記仮想記憶装置に対応したテープ装置である対象テープ装置から、前記記憶領域にデータを読出し、前記第一のストレージシステムから前記仮想記憶装置に対するデータアクセスコマンドを受信した場合、前記対象テープ装置に対してではなく、前記記憶領域に対してデータアクセスを行う、
計算機システム。
【請求項２】
前記コピー指示は、前記第二の記憶装置を前記第三の記憶装置にバックアップすることの指示であり、
前記第一のコントローラは、前記コピー指示に応答して、前記第二の記憶装置から前記第三の記憶装置へのデータコピーを行い、その際、前記第三の記憶装置に生じる書き込みのための、前記仮想記憶装置を指定したライトコマンドを前記第二のストレージシステムに送信し、
前記第二のコントローラは、前記第一のストレージシステムから前記仮想記憶装置に対するライトコマンドを受信し、前記対象テープ装置に対してではなく、前記記憶領域に対して書き込みを行い、該書き込みが完了した後、前記記憶領域上のデータを前記対象テープ装置に書き込む、
請求項１記載の計算機システム。
【請求項３】
前記計算機制御部は、前記第一のストレージシステムに分割指示を送信し、
前記第一のコントローラが、前記計算機から分割指示を受信した後、前記第二の記憶装置に更新があったならば、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理し、その後、前記コピー指示を受信した場合には、前記管理されている差分のみを前記第三の記憶装置に書き込むための前記ライトコマンドを前記第二のストレージシステムに送信する、
請求項２記載の計算機システム。
【請求項４】
前記計算機制御部は、前記第一のストレージシステムに解除指示を送信し、
前記第一のコントローラが、前記計算機から解除指示を受信した後、前記第二の記憶装置に更新があっても、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理せず、その後、前記コピー指示を受信した場合には、更新後の前記第二の記憶装置内の全データを前記第三の記憶装置に書き込むための前記ライトコマンドを前記第二のストレージシステムに送信する、
請求項２記載の計算機システム。
【請求項５】
前記コピー指示は、前記第三の記憶装置を前記第二の記憶装置にリストアすることの指示であり、
前記第一のコントローラは、前記コピー指示に応答して、前記第三の記憶装置から前記第二の記憶装置へのデータコピーを行い、その際、前記第三の記憶装置からの読み出しのための、前記仮想記憶装置を指定したリードコマンドを前記第二のストレージシステムに送信し、該リードコマンドに応答して読み出されたデータを前記第二の記憶装置に書き、
前記第二のコントローラは、前記第一のストレージシステムから前記仮想記憶装置に対するリードコマンドを受信し、前記対象テープ装置からではなく、前記記憶領域からデータを読み出し、読み出したデータを前記第一のストレージシステムに送信する、
請求項１記載の計算機システム。
【請求項６】
前記計算機制御部は、前記第一のストレージシステムに分割指示を送信し、
前記第一のコントローラが、前記計算機から分割指示を受信した後、前記第二の記憶装置に更新があったならば、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理し、その後、前記コピー指示を受信した場合には、前記管理されている差分のみを前記第二の記憶装置に読み出すための前記リードコマンドを前記第二のストレージシステムに送信する、
請求項５記載の計算機システム。
【請求項７】
前記計算機制御部は、前記第一のストレージシステムに解除指示を送信し、
前記第一のコントローラが、前記計算機から解除指示を受信した後、前記第二の記憶装置に更新があっても、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理せず、その後、前記コピー指示を受信した場合には、前記第三の記憶装置内の全データを前記第二の記憶装置に読み出すための前記リードコマンドを前記第二のストレージシステムに送信する、
請求項５記載の計算機システム。
【請求項８】
前記第一のストレージシステムは、前記第二の記憶装置と前記第三の記憶装置とを含んだ複数の記憶装置を備え、
前記複数の記憶装置のうちの一つと他の一つとが、ペアにされたり、そのペアが解除されたりし、
前記第一のコントローラが、各ペアに関するペア情報が記録されるペア管理テーブルを保持し、
前記ペア管理テーブルには、記録されるペア情報の数に上限があり、
前記計算機が、解除されたペアに関する解除ペア情報が記録される解除ペア管理テーブルを備える、
請求項１記載の計算機システム。
【請求項９】
前記第三の記憶装置と前記仮想記憶装置とのセットである第三／仮想セットが複数個備えられ、各第三／仮想セットは、セットが解除されることがあり、
前記第一のコントローラが、前記第三／仮想セットに関するセット情報が記録されるセット管理テーブルを保持し、
前記セット管理テーブルには、記録されるセット情報の数に上限があり、
前記計算機が、解除された第三／仮想セットに関する解除セット情報が記録される解除セット管理テーブルを備える、
請求項１記載の計算機システム。
【請求項１０】
前記仮想記憶装置が複数個備えられており、
前記複数の仮想記憶装置の各々に、論理的な記憶ユニットであるテープＬＵがマッピングされており、
前記第二のコントローラは、対象の仮想記憶装置にマッピングされている対象テープＬＵの後端のあるテープ装置にそれとは別のテープＬＵが存在する場合には、該対象テープＬＵ及び該別のテープＬＵを含んだ二以上のテープＬＵから前記記憶領域にデータを読み出し、
前記二以上のテープＬＵの終端のあるテープ装置には、その終端以降に、他のテープＬＵのデータが存在しない、
請求項１記載の計算機システム。
【請求項１１】
前記計算機が前記第二のストレージシステムに接続されており、
前記計算機制御部が、前記仮想記憶装置に対する所定の準備指示を前記第二のストレージシステムに送信し、
前記第二のコントローラが、前記計算機から前記準備指示を受信し、該準備指示に応答して、前記記憶領域を確保する、
請求項１記載の計算機システム。
【請求項１２】
前記第一のコントローラが、前記データコピーの前に、前記仮想記憶装置に対する所定の準備指示を前記第二のストレージシステムに送信し、
前記第二のコントローラが、前記第一のストレージシステムから前記準備指示を受信し、該準備指示に応答して、前記記憶領域を確保する、
請求項１記載の計算機システム。
【請求項１３】
前記計算機が前記第二のストレージシステムに接続されており、
前記計算機制御部が、前記仮想記憶装置に対する所定の完了指示を前記第二のストレージシステムに送信し、
前記第二のコントローラが、前記計算機から前記完了指示を受信し、該完了指示に応答して、前記記憶領域上のデータを前記対象テープ装置に書き込む、
請求項１記載の計算機システム。
【請求項１４】
前記第一のコントローラが、前記データコピーの後に、前記仮想記憶装置に対する所定の完了指示を前記第二のストレージシステムに送信し、
前記第二のコントローラが、前記第一のストレージシステムから前記完了指示を受信し、該完了指示に応答して、前記記憶領域上のデータを前記対象テープ装置に書き込む、
請求項１記載の計算機システム。
【請求項１５】
前記第二のコントローラは、解放されているディスク領域を確保し、所定のイベントが発生した場合に、前記確保したディスク領域を解放する、
請求項１記載のストレージシステム。
【請求項１６】
前記第二のコントローラは、前記確保したディスク領域に、前記対象テープ装置からの読出し対象のデータが既に存在する場合には、前記対象テープ装置から前記ディスク領域へのデータの読出しを行わない、
請求項１記載のストレージシステム。
【請求項１７】
前記第二のコントローラは、前記仮想記憶装置を指定したデータアクセスが初めての場合には、前記対象テープ装置から前記ディスク領域へのデータの読出しを行なわない、
請求項１記載のストレージシステム。
【請求項１８】
前記複数のテープ装置には、論理的な記憶ユニットであるテープＬＵが二つ以上用意されており、
前記仮想記憶装置が複数個備えられ、前記複数の仮想記憶装置の各々に、前記二以上のテープＬＵの各々がマッピングされており、
前記第一の記憶装置には、論理的な記憶ユニットである記憶ＬＵが二つ以上用意されており、
前記第二のコントローラは、前記計算機及び前記第一のストレージシステムの少なくとも一方である上位装置から、各仮想記憶装置に対する所定の準備指示を受け付け、該準備指示を受信した場合に、前記準備指示で指定されている指定仮想記憶装置にマッピングされている対象テープＬＵ以上の記憶容量分の、解放されている一以上の記憶ＬＵを確保し、前記確保した一以上の記憶ＬＵに前記対象テープＬＵからデータを読出し、前記上位装置から、前記指定仮想記憶装置に対する所定の完了指示を受け付け、該完了指示を受信した場合に、前記確保した一以上の記憶LＵ上のデータを前記対象テープＬＵに書込み、前記一以上の記憶ＬＵを解放する、
請求項１記載のストレージシステム。
【請求項１９】
計算機と、前記計算機に接続された第一のストレージシステムと、前記第一のストレージシステムに接続された第二のストレージシステムとを備えた計算機システムで実現される記憶制御方法において、
前記第二のストレージシステムが、
データを記憶する複数のテープ装置と、
アクセス先がランダムに異なるアクセスであるランダムアクセスをテープ装置よりも高速に行うことのできる第一の記憶装置と、
前記第一の記憶装置をエミュレーションした仮想記憶装置と、
前記複数のテープ装置や前記第一の記憶装置へのアクセスを制御する第二のコントローラと
を備え、
前記第一のストレージシステムは、
データを記憶する第二の記憶装置と、
前記仮想記憶装置がマッピングされた第三の記憶装置と、
前記第二の記憶装置や前記第三の記憶装置へのデータアクセスを制御する第一のコントローラと
を備え、
前記第二のコントローラは、前記第一の記憶装置上に記憶領域を確保し、前記複数のテープ装置のうちの前記仮想記憶装置に対応したテープ装置である対象テープ装置から、前記記憶領域にデータを読出し、
前記計算機が、コピー指示を前記第一のストレージシステムに送信し、
前記第一のコントローラが、前記計算機から前記コピー指示を受信し、該コピー指示に応答して、前記第二の記憶装置と前記第三の記憶装置との間でデータコピーを行い、その際、前記第三の記憶装置に生じるデータアクセスのための、前記仮想記憶装置を指定したデータアクセスコマンドを前記第二のストレージシステムに送信し、
前記第二のコントローラが、前記第一のストレージシステムから前記仮想記憶装置に対するデータアクセスコマンドを受信した場合、前記対象テープ装置に対してではなく、前記記憶領域に対してデータアクセスを行う、
記憶制御方法。
【請求項２０】
計算機と、
前記計算機に接続された第一のストレージシステムと、
前記第一のストレージシステムに接続された第二のストレージシステムと
を備え、
前記第二のストレージシステムは、
データを記憶する複数のテープ装置と、
アクセス先がランダムに異なるアクセスであるランダムアクセスをテープ装置よりも高速に行うことのできる第一の記憶装置と、
前記第一の記憶装置をエミュレーションした仮想記憶装置と、
前記複数のテープ装置や前記第一の記憶装置へのアクセスを制御する第二のコントローラと
を備え、
前記計算機は、コピー指示を前記第一のストレージシステムに送信する計算機制御部を備え、
前記第一のストレージシステムは、
データを記憶する第二の記憶装置と、
前記仮想記憶装置がマッピングされた第三の記憶装置と、
前記第二の記憶装置や前記第三の記憶装置へのデータアクセスを制御する第一のコントローラと
を備え、
前記仮想記憶装置が複数個備えられ、前記複数の仮想記憶装置の各々に、論理的な記憶ユニットであるテープＬＵがマッピングされており、
前記第一の記憶装置には、論理的な記憶ユニットである記憶ＬＵが二つ以上用意されており、
前記第一のコントローラは、前記計算機から前記コピー指示を受信し、該コピー指示に応答して、前記第二の記憶装置と前記第三の記憶装置との間でデータコピーを行い、その際、前記第三の記憶装置に生じるデータアクセスのための、前記仮想記憶装置を指定したデータアクセスコマンドを前記第二のストレージシステムに送信し、
前記第二のコントローラは、以下の（Ａ）乃至（Ｆ）、
（Ａ）前記計算機及び前記第一のストレージシステムの少なくとも一方である上位装置から、前記複数の仮想記憶装置の各々について所定の準備指示を受け付け、
（Ｂ）該準備指示を受信した場合、該準備指示で指定される指定仮想記憶装置にマッピングされている対象テープＬＵの後端のあるテープ装置にそれとは別のテープＬＵが存在する場合には、該対象テープＬＵ及び該別のテープＬＵを含んだ二以上のテープＬＵの各々を対象テープＬＵとし、全対象テープＬＵ以上の記憶容量分の、解放されている一以上の記憶ＬＵを確保し、一方、前記対象テープＬＵの後端のあるテープ装置にそれとは別のテープＬＵが存在しなければ、前記対象テープＬＵ以上の記憶容量分の、解放されている一以上の記憶ＬＵを確保し、
（Ｃ）前記確保した一以上の記憶ＬＵに前記対象テープＬＵからデータを読出し、
（Ｄ）前記第一のストレージシステムから前記指定仮想記憶装置に対するデータアクセスコマンドを受信した場合、前記対象テープＬＵに対してではなく、前記確保した一以上の記憶ＬＵに対してデータアクセスを行い、
（Ｅ）前記上位装置から、前記指定仮想記憶装置に対する所定の完了指示を受け付け、
（Ｆ）該完了指示を受信した場合に、前記一以上の記憶ＬＵ上のデータを、データの読出し元になった前記対象テープＬＵに書込み、前記一以上の記憶ＬＵを解放する、
を実行し、
前記（Ｂ）において、前記二以上のテープＬＵの終端のあるテープ装置には、その終端以降に、他のテープＬＵのデータが存在しない、
計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのバックアップ及び／又はリストアのための記憶制御技術に関する。
【背景技術】
【０００２】
例えば、特開２００２−４１３４５号公報には、計算機、ディスクストレージ及びテープライブラリ装置を、ＳＡＮ（Storage Area Network）と呼ばれる通信ネットワークに接続し、バックアップ処理用のサーバ（以下、バックアップサーバと称する）により、ディスクストレージに記憶されたデータをテープライブラリ装置へバックアップする記憶制御方法が開示されている。
【０００３】
【特許文献１】特開２００２−４１３４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した記憶制御方法によれば、バックアップ対象のデータがバックアップサーバを経由してバックアップが行われる。このため、バックアップ性能は、バックアップサーバに依存し、バックアップサーバの処理性能が低い場合には、バックアップに要する時間が長大化してしまうという課題がある。
【０００５】
また、データのバックアップ先として、テープ装置（以下、単に「テープ」と言う）が有効であると考えられる。一般的に、ビットコスト（１ビット当たりのコスト）がディスク装置（例えばハードディスク）に比べて低いためである。しかし、テープは、ディスク装置に比べて書き込みや読出しに時間がかかる場合がある。特に、いわゆるランダムアクセスが発生する場合には、時間がかかる。
【０００６】
これと同様の課題は、例えば、バックアップされたデータを、バックアップと逆の流れでリストアする場合、具体的には、テープライブラリ装置からバックアップサーバを経由してディスクストレージにデータをリストアする場合にも、存在し得る。
【０００７】
従って、本発明の目的は、バックアップサーバを不要とし、バックアップ先及び／又はリストア元がテープであっても高速にバックアップ及び／又はリストアすることができる、記憶制御技術を提供することにある。
【０００８】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本発明に従う計算機システムは、計算機と、前記計算機に接続された第一のストレージシステムと、前記第一のストレージシステムに接続された第二のストレージシステムと
を備える。前記第二のストレージシステムは、データを記憶する複数のテープ装置と、アクセス先がランダムに異なるアクセスであるランダムアクセスをテープ装置よりも高速に行うことのできる第一の記憶装置と、前記第一の記憶装置をエミュレーションした仮想記憶装置と、前記複数のテープ装置や前記第一の記憶装置へのアクセスを制御する第二のコントローラとを備える。前記計算機は、コピー指示を前記第一のストレージシステムに送信する計算機制御部を備える。前記第一のストレージシステムは、データを記憶する第二の記憶装置と、前記仮想記憶装置がマッピングされた第三の記憶装置と、前記第二の記憶装置や前記第三の記憶装置へのデータアクセスを制御する第一のコントローラとを備える。前記第一のコントローラは、前記計算機から前記コピー指示を受信し、該コピー指示に応答して、前記第二の記憶装置と前記第三の記憶装置との間でデータコピーを行い、その際、前記第三の記憶装置に生じるデータアクセスのための、前記仮想記憶装置を指定したデータアクセスコマンドを前記第二のストレージシステムに送信する。前記第二のコントローラは、前記第一の記憶装置上に記憶領域を確保し、前記複数のテープ装置のうちの前記仮想記憶装置に対応したテープ装置である対象テープ装置から、前記記憶領域にデータを読出し、前記第一のストレージシステムから前記仮想記憶装置に対するデータアクセスコマンドを受信した場合、前記対象テープ装置に対してではなく、前記記憶領域に対してデータアクセスを行う。
【００１０】
第一の実施態様では、前記コピー指示は、前記第二の記憶装置を前記第三の記憶装置にバックアップすることの指示とすることができる。前記第一のコントローラは、前記コピー指示に応答して、前記第二の記憶装置から前記第三の記憶装置へのデータコピーを行い、その際、前記第三の記憶装置に生じる書き込みのための、前記仮想記憶装置を指定したライトコマンドを前記第二のストレージシステムに送信することができる。前記第二のコントローラは、前記第一のストレージシステムから前記仮想記憶装置に対するライトコマンドを受信し、前記対象テープ装置に対してではなく、前記記憶領域に対して書き込みを行い、該書き込みが完了した後、前記記憶領域上のデータを前記対象テープ装置に書き込むことができる。
【００１１】
第二の実施態様では、前記第一の実施態様において、前記計算機制御部は、前記第一のストレージシステムに分割指示を送信することができる。前記第一のコントローラが、前記計算機から分割指示を受信した後、前記第二の記憶装置に更新があったならば、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理し、その後、前記コピー指示を受信した場合には、前記管理されている差分のみを前記第三の記憶装置に書き込むための前記ライトコマンドを前記第二のストレージシステムに送信することができる。
【００１２】
第三の実施態様では、前記第一の実施態様において、前記計算機制御部は、前記第一のストレージシステムに解除指示を送信することができる。前記第一のコントローラが、前記計算機から解除指示を受信した後、前記第二の記憶装置に更新があっても、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理せず、その後、前記コピー指示を受信した場合には、更新後の前記第二の記憶装置内の全データを前記第三の記憶装置に書き込むための前記ライトコマンドを前記第二のストレージシステムに送信することができる。
【００１３】
第四の実施態様では、前記コピー指示は、前記第三の記憶装置を前記第二の記憶装置にリストアすることの指示であるとすることができる。前記第一のコントローラは、前記コピー指示に応答して、前記第三の記憶装置から前記第二の記憶装置へのデータコピーを行い、その際、前記第三の記憶装置からの読み出しのための、前記仮想記憶装置を指定したリードコマンドを前記第二のストレージシステムに送信し、該リードコマンドに応答して読み出されたデータを前記第二の記憶装置に書くことができる。前記第二のコントローラは、前記第一のストレージシステムから前記仮想記憶装置に対するリードコマンドを受信し、前記対象テープ装置からではなく、前記記憶領域からデータを読み出し、読み出したデータを前記第一のストレージシステムに送信することができる。
【００１４】
第五の実施態様では、前記第四の実施態様において、前記計算機制御部は、前記第一のストレージシステムに分割指示を送信することができる。前記第一のコントローラが、前記計算機から分割指示を受信した後、前記第二の記憶装置に更新があったならば、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理し、その後、前記コピー指示を受信した場合には、前記管理されている差分のみを前記第二の記憶装置に読み出すための前記リードコマンドを前記第二のストレージシステムに送信することができる。
【００１５】
第六の実施態様では、前記第四の実施態様において、前記計算機制御部は、前記第一のストレージシステムに解除指示を送信することができる。前記第一のコントローラが、前記計算機から解除指示を受信した後、前記第二の記憶装置に更新があっても、該更新により生じた、前記第二の記憶装置と前記第三の記憶装置との差分を、管理せず、その後、前記コピー指示を受信した場合には、前記第三の記憶装置内の全データを前記第二の記憶装置に読み出すための前記リードコマンドを前記第二のストレージシステムに送信することができる。なお、このように、差分が管理されない場合には、後述するシーケンシャルリード（記憶領域を介さないテープからの直接読出し）及び／又はシーケンシャルライト（記憶領域を介さないテープに対する直接書込み）が行われても良い。
【００１６】
第七の実施態様では、前記第一のストレージシステムは、前記第二の記憶装置と前記第三の記憶装置とを含んだ複数の記憶装置を備えることができる。前記複数の記憶装置のうちの一つと他の一つとが、ペアにされたり、そのペアが解除されたりすることができる。前記第一のコントローラが、各ペアに関するペア情報が記録されるペア管理テーブルを保持することができる。前記ペア管理テーブルには、記録されるペア情報の数に上限がある。前記計算機が、解除されたペアに関する解除ペア情報が記録される解除ペア管理テーブルを備えることができる。
【００１７】
第八の実施態様では、前記第三の記憶装置と前記仮想記憶装置とのセットである第三／仮想セットが複数個備えられてもよい。各第三／仮想セットは、セットが解除されることがある。前記第一のコントローラが、前記第三／仮想セットに関するセット情報が記録されるセット管理テーブルを保持することができる。前記セット管理テーブルには、記録されるセット情報の数に上限がある。前記計算機が、解除された第三／仮想セットに関する解除セット情報が記録される解除セット管理テーブルを備えることができる。
【００１８】
第九の実施態様では、前記仮想記憶装置が複数個備えられる。前記複数の仮想記憶装置の各々に、論理的な記憶ユニットであるテープＬＵがマッピングされることがある。前記第二のコントローラは、対象の仮想記憶装置にマッピングされている対象テープＬＵの後端のあるテープ装置にそれとは別のテープＬＵが存在する場合には、該対象テープＬＵ及び該別のテープＬＵを含んだ二以上のテープＬＵから前記記憶領域にデータを読み出すことができる。前記二以上のテープＬＵの終端のあるテープ装置には、その終端以降に、他のテープＬＵのデータが存在しない。
【００１９】
第十の実施態様では、前記計算機が前記第二のストレージシステムに接続されてもよい。前記計算機制御部が、前記仮想記憶装置に対する所定の準備指示を前記第二のストレージシステムに送信することができる。前記第二のコントローラが、前記計算機から前記準備指示を受信し、該準備指示に応答して、前記記憶領域を確保することができる。
【００２０】
第十一の実施態様では、前記第一のコントローラが、前記データコピーの前に、前記仮想記憶装置に対する所定の準備指示を前記第二のストレージシステムに送信することができる。前記第二のコントローラが、前記第一のストレージシステムから前記準備指示を受信し、該準備指示に応答して、前記記憶領域を確保することができる。
【００２１】
第十二の実施態様では、前記計算機が前記第二のストレージシステムに接続されてもよい。前記計算機制御部が、前記仮想記憶装置に対する所定の完了指示を前記第二のストレージシステムに送信することができる。前記第二のコントローラが、前記計算機から前記完了指示を受信し、該完了指示に応答して、前記記憶領域上のデータを前記対象テープ装置に書き込むことができる。
【００２２】
第十三の実施態様では、前記第一のコントローラが、前記データコピーの後に、前記仮想記憶装置に対する所定の完了指示を前記第二のストレージシステムに送信することができる。前記第二のコントローラが、前記第一のストレージシステムから前記完了指示を受信し、該完了指示に応答して、前記記憶領域上のデータを前記対象テープ装置に書き込むことができる。
【００２３】
第十四の実施態様では、前記第二のコントローラは、解放されているディスク領域を確保し、所定のイベントが発生した場合に、前記確保したディスク領域を解放することができる。
【００２４】
第十五の実施態様では、前記第二のコントローラは、前記確保したディスク領域に、前記対象テープ装置からの読出し対象のデータが既に存在する場合には、前記対象テープ装置から前記ディスク領域へのデータの読出しを行わないようにすることができる。
【００２５】
第十六の実施態様では、前記第二のコントローラは、前記仮想記憶装置を指定したデータアクセスが初めての場合には、前記対象テープ装置から前記ディスク領域へのデータの読出しを行なわないようにすることができる。
【００２６】
第十七の実施態様では、前記複数のテープ装置には、論理的な記憶ユニットであるテープＬＵが二つ以上用意されてもよい。前記仮想記憶装置が複数個備えられ、前記複数の仮想記憶装置の各々に、前記二以上のテープＬＵの各々がマッピングされてもよい。前記第一の記憶装置には、論理的な記憶ユニットである記憶ＬＵが二つ以上されてもよい。前記第二のコントローラは、前記計算機及び前記第一のストレージシステムの少なくとも一方である上位装置から、各仮想記憶装置に対する所定の準備指示を受け付け、該準備指示を受信した場合に、前記準備指示で指定されている指定仮想記憶装置にマッピングされている対象テープＬＵ以上の記憶容量分の、解放されている一以上の記憶ＬＵを確保し、前記確保した一以上の記憶ＬＵに前記対象テープＬＵからデータを読出し、前記上位装置から、前記指定仮想記憶装置に対する所定の完了指示を受け付け、該完了指示を受信した場合に、前記確保した一以上の記憶LＵ上のデータを前記対象テープＬＵに書込み、前記一以上の記憶ＬＵを解放することができる。
【００２７】
第一及び第二のコントローラの各処理は、各部により実行することができる。各部は、各手段と言い換えることができる。上記各部は、ハードウェア（例えば回路）、コンピュータプログラム、或いはそれらの組み合わせ（例えば、コンピュータプログラムを読み込んで実行する一又は複数のＣＰＵ）によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源（例えばメモリ）から読み込むことができる。その記憶資源には、ＣＤ−ＲＯＭやＤＶＤ（Digital Versatile Disk）等の記録媒体を介してインストールすることもできるし、インターネットやＬＡＮ等の通信ネットワークを介してダウンロードすることもできる。
【００２８】
また、前述した第一の記憶装置及び第二の記憶装置のうちの少なくとも一方は、ディスクタイプの記憶装置であっても良いし、メモリタイプの記憶装置であっても良い。ディスクタイプの記憶装置としては、例えば、ハードディスク、光ディスク、光磁気ディスクなどの種々のディスクを採用することができる。メモリタイプの記憶装置としては、例えば、半導体メモリ、フラッシュメモリなどの種々のメモリを採用することができる。
【発明の効果】
【００２９】
本発明によれば、バックアップサーバを不要とし、バックアップ先及び／又はリストア元がテープであっても高速にバックアップ及び／又はリストアすることができる、記憶制御技術を提供することができる。
【発明を実施するための最良の形態】
【００３０】
以下、図面を参照して、本発明の幾つかの実施例を説明する。
【実施例１】
【００３１】
図１は、本発明の第一実施例に係る計算機システムの構成例を示す。
【００３２】
計算機１００、ストレージ仮想化装置１０２及び仮想ディスクライブラリ装置１０６が、ファイバチャネルスイッチ（以下、「スイッチ」と略記）１２２に接続されている。計算機１００は、ファイバチャネル１２０を用いてスイッチ１２２を経由しストレージ仮想化装置１０２と接続される。仮想ディスクライブラリ装置１０６は、ファイバチャネル１０２を用いて、スイッチ１２２を経由してストレージ仮想化装置１０２と接続される。計算機１００、ストレージ仮想化装置１０２及び仮想ディスクライブラリ装置１０６は、ＬＡＮ（Local Area Network）等の通信ネットワークに接続されても良いし、専用線などで接続されても良い。
【００３３】
計算機１００は、バックアップ及びリストア（以下、バックアップ／リストア）を制御するバックアップ／リストア制御プログラム１０１、バックアップ／リストア制御プログラム１０１を記憶するメモリ１２１と、バックアップ／リストア制御プログラム１０１を実行するためのＣＰＵ（Central Processing Unit）１２３を備える。バックアップ／リストア制御プログラム１０１を実行するＣＰＵ１２３は、Activate指示、InActivate指示、ペアステータス確認コマンド、ペア分割指示、ペア解除指示、仮想ディスクステータス確認コマンド、表示コマンド、削除コマンド及び仮想ディスクＩＤ表示コマンドなどの種々のコマンドを出す。以下、プログラムが主語になる場合は、実際にはそのプログラムを実行するＣＰＵによって処理が行われるものとする。
【００３４】
ストレージ仮想化装置１０２は、この装置１０２の外部に存在する別の装置１０６内の記憶資源を、自分の記憶資源として計算機１００に提供する機能を持ったストレージシステムである。ストレージ仮想化装置１０２は、ディスクアレイコントローラ１０３と、複数のディスク１０４ａ、１０４ｂ、１０４ｃとを備える。各ディスク１０４ａ、１０４ｂ、１０４ｃは、ディスク型の記憶装置であり、具体的には、例えば、ハードディスクである。ディスクアレイコントローラ１０３は、図示しない複数の論理ボリューム（論理ユニットとも言う。以下、「ＬＵ」と略記することもある）を提供する。複数のLUの中には、ディスク１０４ａ、１０４ｂ、１０４ｃのいずれかに対応付けられており外部のLUにマッピングされていないLUもあれば、外部のLUにマッピングされているLUもある。以下、前者のLUを、「通常LU」と言い、後者のLUを、「外部ディスク」と言う。外部ディスク１０５は、後述の仮想ディスク１０８にマッピングされており、外部ディスク１０５に対するデータアクセスが発生する場合には、その外部ディスク１０５にマッピングされた仮想ディスク１０８に対してデータアクセスが行われる。
【００３５】
仮想ディスクライブラリ装置１０６は、ディスクをエミュレーションした仮想ディスク１０８を提供する機能を有したストレージシステムである。仮想ディスクライブラリ装置１０６は、仮想ディスクアレイコントローラ１０７と、一以上のディスク１０４ｄ、１０４ｅと、テープライブラリ装置１０９とを備える。テープライブラリ装置１０９は、データを保存するための複数のテープ媒体（以下、テープ）１１２ａ、１１２ｂと、テープ１１２ａ、１１２ｂをテープドライブ１１１に装填したり、テープ１１２ａ、１１２ｂをテープドライブ１１１から取り出したりするためのロボット１１０と、装填されたテープ１１２ａ、１１２ｂに対してデータを読み書きするためのテープドライブ１１１とを備える。
【００３６】
図２は、ストレージ仮想化装置１０２のディスクアレイコントローラ１０３の構成例を示した図である。
【００３７】
ディスクアレイコントローラ１０３は、計算機１００と接続される計算機インターフェース（ＩＦ）部２０１と、仮想ディスクライブラリ装置１０６と接続される外部ＩＦ部２０３と、ディスク１０４と接続されるディスクＩＦ部２０２とを備える。さらに、ディスクアレイコントローラ１０３は、ディスク制御プログラム２０５、ディスク制御管理テーブル２０６及び外部ディスク対応テーブル２０９を記憶するローカルメモリ２０４と、ディスク制御プログラム２０５をローカルメモリ２０４から読み込んで実行するＣＰＵ２０７と、ディスク１０４に書かれるデータ或いはディスク１０４から読み出されたデータを一時的に保存しておくキャッシュメモリ２０８とを備える。
【００３８】
ディスク制御プログラム２０５は、ペアにされたLU間（例えば、通常LU間、通常LUと外部ディスク１０５との間、外部ディスク１０５間）のコピー処理を行う機能を有する。また、ディスク制御プログラム２０５は、ペアにされたLU間のコピー差分管理を行う機能も有する。また、ディスク制御プログラム２０５は、LUペアのステータスを計算機１００に提供する機能と、ストレージ仮想化装置１０２外のLUである外部LUを仮想化する外部ディスク仮想化機能とを有する。また、ディスク制御プログラム２０５は、LUペアに関するペア情報を削除する削除コマンドや、ディスク制御管理テーブル２０６が表す情報を表示する表示コマンドを提供する。なお、「外部ディスク仮想化機能」によれば、外部LUをストレージ仮想化装置１０６のLU（外部ディスク）１０５として、計算機１００に認識させることができる。
【００３９】
図３は、仮想ディスクアレイコントローラ１０７の構成例を示した図である。
【００４０】
仮想ディスクアレイコントローラ１０７は、スイッチ１２０を経由してストレージ仮想化装置１０２の外部ＩＦ部２０３とファイバチャネル１０２で接続されるＦＥ／ＩＦ部３０１と、ディスク１０４に接続されるディスクＩＦ部３０２と、テープライブラリ装置１０９にあるロボット１１０及びテープドライブ１１１に接続されているテープＩＦ部３１０とを備える。また、仮想ディスクアレイコントローラ１０７は、コンピュータプログラムなどを記憶するローカルメモリ３０３と、ローカルメモリ３０３からコンピュータプログラムを読み出して実行するＣＰＵ３０８と、ディスク１０４又はテープ１１２に書かれるデータ或いはディスク１０４又はテープ１１２から読み出されたデータを一時的に保存するためのキャッシュメモリ２０８とを備える。ローカルメモリ３０３は、例えば、Activateプログラム３０４と、InActivateプログラム３０５と、仮想ディスク制御プログラム３０６と、仮想ディスク制御管理テーブル３０７とを記憶している。
【００４１】
仮想ディスク制御プログラム３０６は、テープ１１２をディスクとして扱えるように前述した仮想ディスク１０８を提供する仮想ディスク機能や、仮想ディスク１０８のステータを返答する機能を有する。また、仮想ディスク制御プログラム３０６は、仮想ディスクLUNを提供する仮想ディスクLUN表示コマンドや、仮想ディスクステータスを提供する仮想ディスクステータス確認コマンドを提供する。
【００４２】
以下、この第一実施例に係る計算機システムにおける論理ボリュームの関係を説明する。
【００４３】
図３８は、論理ボリュームの割り当てを模式的に示した図である。
【００４４】
通常、ディスク領域は、論理ボリュームという単位で計算機１００から認識される。ストレージ仮想化装置１０２では、ディスク１０４ａ、１０４ｂにマッピングされている通常LU１８０ａ、１８０ｂと、仮想ディスク（外部のLUの一種）１０８にマッピングされている外部ディスク１０５とがある。図示の例では、外部ディスク１０５ａ、１０５ｂ及び１０５ｃが、仮想ディスク１０８ａ、１０８ｂ及び１０８ｃにそれぞれマッピングされている。この第一実施例において、通常LU１８０は、計算機１００にデータアクセスされるLUである。また、通常LU１８０は、バックアップやリストアの際に、外部ディスク１０５とペアにされる。
【００４５】
仮想ディスクライブラリ装置１０６は、仮想ディスク１０８の他に、物理的な格納先を表す論理ボリュームであるライブラリ内部LUを備える。ライブラリ内部ＬＵには、ディスク１０４に作成されるディスクLUと、テープ１１２に作成されるテープLUとがある。例えば、複数のディスク１０４からRAIDグループ（パリティグループ或いはアレイグループと呼ばれることもある）を形成し、１つのRAIDグループに複数のディスクLU１４１を定義することができる。同様に、複数のテープ１１２からテープグループを形成し、１つのテープグループから複数のテープLU１４２を定義することができる。ディスクLU１４１とテープLU１４２には、仮想ディスクライブラリ装置１０６内で管理するための固有IDであるディスクLUN（Logical Unit Number）とテープLUNがそれぞれ割り当てられる。
【００４６】
仮想ディスク１０８は、実際にデータを格納するための領域が必要な場合には、装置１０６内の物理的な格納先を表す内部LUとマッピングされる。複数の内部LUを統合し、１つの仮想ディスク１０８とマッピングすることもできる。具体的には、例えば、仮想ディスク１０８には、一又は複数のテープＬＵ１４２を固定的にマッピングし、ディスクＬＵ１４１を動的に（或いは固定的に）マッピングすることができる。仮想ディスク１０８の容量と、それにマッピングされたテープＬＵ１４２の記憶容量（複数のテープＬＵ１４２がマッピングされた場合には、それらのテープＬＵ１４２の総記憶容量）とを、同じにすることができる。また、仮想ディスク１０８に動的にマッピングされたディスクＬＵ１４１を、本実施形態で言うディスクキャッシュとして利用することができる。固定的ではなく動的にマッピングするようにすることで、複数の仮想ディスク１０８の総記憶容量よりも少ない総記憶容量のディスクＬＵで済み、以って、搭載するディスク１０４の総記憶容量（例えばディスク１０４の数）を抑えることができる。
【００４７】
また、データのマイグレーションなどにより、仮想ディスク１０８ａにマッピングされている内部LU１４２ａから内部LU１４２ｂにデータの格納先が変更された場合は、仮想ディスク１０８ａにマッピングする内部LUを内部ＬＵ１４２ａから内部ＬＵ１４２ｂに切替えることができる。それにより、仮想ディスク１０８ａに対してデータアクセス（リード或いはライト）が発生した場合には、マイグレーション先の内部ＬＵ１４２ｂへのアクセスが可能となる。
【００４８】
以下、図３８を例に採り、第一実施例の概要を説明する。なお、以下の説明では、通常LU１８０ａと外部ディスク１０５ａとがペアにされ、外部ディスク１０５ａが仮想ディスク１０８ａにマッピングされ、仮想ディスク１０８ａにテープＬＵ１４２ａがマッピングされているとする。
【００４９】
仮想ディスクライブラリ装置１０６では、リードコマンドやライトコマンドといったデータアクセス系のコマンドの他に、複数種類の制御コマンドがサポートされている。制御コマンドとしては、例えば、ディスクキャッシュにテープＬＵ内の全データを準備させるためのActivate指示と、ディスクキャッシュ内の全データをテープＬＵに反映させるためのInActivate指示とがある。
【００５０】
第一実施例では、バックアップ処理が行われる。バックアップ処理では、以下の（Ａ）乃至（Ｄ）の処理が行われる。
【００５１】
（Ａ）バックアップ／リストア制御プログラム１０１は、通常LU１８０ａのデータを外部ディスク１０５ａにバックアップする前に、仮想ディスク１０８ａを指定したActivate指示を、仮想ディスクライブラリ装置１０６に送信する。Activateプログラム３０４が、そのActivate指示に応答して、前処理を行う。具体的には、前処理において、Activateプログラム３０４は、未使用の（例えば、どの仮想ディスク１０８にも割り当てられていない）一以上のディスクＬＵ１４１を仮想ディスク１０８ａに割り当てる。割り当てられる一以上のディスクＬＵの記憶容量（複数のディスクＬＵであれば総記憶容量）は、仮想ディスク１０８ａの記憶容量以上であり、それら一以上のディスクＬＵ（以下、１４１ａ、１４１ｂとする）が、本実施形態で言うディスクキャッシュである。Activateプログラム３０４は、前処理において、テープＬＵ１４２ａ内の全データを読み出し、読み出された全データを、そのディスクキャッシュに書く。これにより、テープＬＵ１４２ａ内の全データがディスクキャッシュ１４１ａ、１４１ｂに準備される。Activateプログラム３０４は、前処理を開始した場合、仮想ディスク１０８ａのステータスを"Activate"とし、前処理が終了した場合、そのステータスを"Active"に変更する。
【００５２】
（Ｂ）バックアップ／リストア制御プログラム１０１は、仮想ディスク１０８ａのステータスを監視する。そのステータスが"Active"になったことを検出できた場合、バックアップ／リストア制御プログラム１０１は、通常LU１８０ａをプライマリのLUとし外部ディスク１０５ａをセカンダリのLUとするペア生成指示を、ストレージ仮想化装置１０２に送信する。ディスク制御プログラム２０５は、そのペア生成指示に応答して、通常LU１８０ａをプライマリLUとし外部ディスク１０５ａをセカンダリLUとしたペアを生成し、通常LU１８０ａが記憶するデータを外部ディスク１０５ａにコピーすることで、通常LU１８０ａの中身と外部ディスク１０５ａの中身とを同じにする。コピー対象のデータは、通常LU１８０ａの全データであっても良いし、通常LU１８０ａと外部ディスク１０５ａとの差分のデータであっても良い。外部ディスク１０５ａは仮想ディスク１０８ａにマッピングされているので、ディスク制御プログラム２０５は、仮想ディスク１０８ａを指定したライトコマンド（コピー対象のデータを仮想ディスク１０８ａに書くためのライトコマンド）を仮想ディスクライブラリ装置１０６に送信する。仮想ディスク制御プログラム３０６は、そのライトコマンドに従うデータを、仮想ディスク１０８ａにマッピングされたテープＬＵ１４２ａにではなく、ディスクキャッシュ１４１ａ、１４１ｂに書く。これにより、通常LU１８０ａがディスクキャッシュ１４１ａ、１４１ｂにバックアップされる。ディスク制御プログラム２０５は、そのバックアップが済んだ場合、ＬＵペアのステータスを"Duplex"とする。
【００５３】
（Ｃ）バックアップ／リストア制御プログラム１０１は、通常LU１８０ａと仮想ディスク１０８ａとのLUペアのステータスを監視する。そのステータスが"Duplex"になったことを検出できた場合、バックアップ／リストア制御プログラム１０１は、そのLUペアを解除するペア解除指示を、ストレージ仮想化装置１０２に送信する。ディスク制御プログラム２０５は、そのペア解除指示に応答して、通常LU１８０ａと仮想ディスク１０８ａとのペアを解除する。その場合、ディスク制御プログラム２０５は、ＬＵペアのステータスを、解除を意味する"Simplex"にする。
【００５４】
（Ｄ）バックアップ／リストア制御プログラム１０１は、通常LU１８０ａと仮想ディスク１０８ａとのLUペアのステータスを監視する。そのステータスが"Simplex"になったことを検出できた場合、バックアップ／リストア制御プログラム１０１は、仮想ディスク１０８ａを指定したInActivate指示を仮想ディスクライブラリ装置１０６に送信する。InActivateプログラム３０５が、そのInActivate指示に応答して、後処理を行う。具体的には、後処理において、InActivateプログラム３０５は、ディスクキャッシュ１４１ａ、１４１ｂ内の全データを、テープＬＵ１４２ａにシーケンシャルに書き、そのディスクキャッシュ１４１ａ、１４１ｂを構成していたディスクＬＵ１４１ａ、１４１ｂを解放する（換言すれば、割当てを解除する）。それにより、通常LU１８０ａがテープＬＵ１４２ａにバックアップされ、ディスクＬＵ１４１ａ、１４１ｂが未使用となる。InActivateプログラム３０５は、後処理を開始した場合、仮想ディスク１０８ａのステータスを"InActivate"とし、後処理が終了した場合、そのステータスを"Inactive"に変更する。
【００５５】
以上の（Ａ）乃至（Ｄ）の処理によれば、ストレージ仮想化装置１０２に設けた外部ディスク１０５と、仮想ディスクライブラリ装置１０６に設けた仮想ディスク１０８とをマッピングし、外部ディスク１０５ａに対してデータがバックアップされる場合には、仮想ディスク１０８ａに対してデータがバックアップされる。また、仮想ディスク１０８ａに、テープＬＵ１４２ａがマッピングされているが、バックアップの際には、仮想ディスク１０８ａに対して動的にディスクＬＵ１４１ａ、１４１ｂがマッピングされ、そのディスクＬＵ１４１ａ、１４１ｂに対して、データが一旦バックアップされ、最終的に、ディスクＬＵ１４１ａ、１４１ｂ上のデータがシーケンシャルにテープＬＵ１４２ａに書かれる。ストレージ仮想化装置１０２には、仮想ディスクライブラリ装置１０６の記憶資源がディスクとして提供されているので、仮想ディスク１０８ａに対して、書込み先アドレスがランダムになるライト（以下、ランダムライト）が発生し得るが、ランダムライトが発生しても、ディスクＬＵ１４１ａ、１４１ｂに対してそれが発生するのであって、テープＬＵ１４２ａにはそれが発生しない。テープＬＵ１４２ａからディスクＬＵ１４１ａ、１４１ｂへのデータの読み出しや、ディスクＬＵ１４１ａ、１４１ｂからテープＬＵ１４２ａへのデータの書き込みは、シーケンシャルに行われる。
【００５６】
以上のことから、バックアップ用のサーバを不要とし、且つ、バックアップ先がテープ１１２であっても高速にバックアップを済ますことができる。
【００５７】
ところで、この第一実施例では、リストア処理も行われる。リストア処理では、以下の（ａ）乃至（ｄ）の処理が行われる。以下、リストア処理について説明する。なお、その際、バックアップ処理で説明した事項については、説明を省略或いは簡略する。
【００５８】
（ａ）バックアップ／リストア制御プログラム１０１は、仮想ディスク１０８ａを指定したActivate指示を、仮想ディスクライブラリ装置１０６に送信する。Activateプログラム３０４が、そのActivate指示に応答して、前処理を行う。それにより、ディスクキャッシュ１４１ａ、１４１ｂに、テープＬＵ１４２ａ内の全データがディスクキャッシュ１４１ａ、１４１ｂに準備される。
【００５９】
（ｂ）バックアップ／リストア制御プログラム１０１は、仮想ディスク１０８ａのステータスが"Active"になったことを検出できた場合、通常LU１８０ａをセカンダリLUとし外部ディスク１０５ａをプライマリLUとするペア生成指示を、ストレージ仮想化装置１０２に送信する。ディスク制御プログラム２０５は、そのペア生成指示に応答して、通常LU１８０ａをセカンダリLUとし外部ディスク１０５ａをプライマリLUとしたペアを生成し、外部ディスク１０５ａが記憶するデータを通常LU１８０ａにコピーすることで、通常LU１８０ａの中身と外部ディスク１０５ａの中身とを同じにする。コピー対象のデータは、外部ディスク１０５ａ内の全データであっても良いし、通常LU１８０ａと外部ディスク１０５ａとの差分のデータであっても良い。ディスク制御プログラム２０５は、仮想ディスク１０８ａを指定したリードコマンド（コピー対象のデータを読み出すためのリードコマンド）を仮想ディスクライブラリ装置１０６に送信する。仮想ディスク制御プログラム３０６は、そのリードコマンドに従って、ディスクキャッシュ１４１ａ、１４１ｂからデータを読み出し、読み出したデータをストレージ仮想化装置１０２に送信する。ディスク制御プログラム２０５は、仮想ディスクライブラリ装置１０６からのデータを、通常LU１８０ａに書く。これにより、通常LU１８０ａに、仮想ディスク１０８ａのデータがリストアされる。
【００６０】
（ｃ）バックアップ／リストア制御プログラム１０１は、通常LU１８０ａと仮想ディスク１０８ａとのLUペアのステータスが"Duplex"になったことを検出できた場合、そのLUペアを解除することのペア解除指示を、ストレージ仮想化装置１０２に送信する。ディスク制御プログラム２０５は、そのペア解除指示に応答して、通常LU１８０ａと仮想ディスク１０８ａとのペアを解除する。
【００６１】
（ｄ）バックアップ／リストア制御プログラム１０１は、通常LU１８０ａと仮想ディスク１０８ａとのLUペアのステータスが"Simplex"になったことを検出できた場合、仮想ディスク１０８ａを指定したInActivate指示を仮想ディスクライブラリ装置１０６に送信する。InActivateプログラム３０５が、そのInActivate指示に応答して、後処理を行う。
【００６２】
以上の（ａ）乃至（ｄ）の処理によれば、外部ディスク１０５と仮想ディスク１０８とをマッピングし、外部ディスク１０５ａからデータがリストアされる場合には、仮想ディスク１０８ａからデータがリストアされる。また、仮想ディスク１０８ａに、テープＬＵ１４２ａがマッピングされているが、リストアの際には、仮想ディスク１０８ａに対して動的にディスクＬＵ１４１ａ、１４１ｂがマッピングされ、そのディスクＬＵ１４１ａ、１４１ｂに対して、データが一旦リストアされ、最終的に、ディスクＬＵ１４１ａ、１４１ｂから通常LU１８０にデータがリストアされる。ストレージ仮想化装置１０２には、仮想ディスクライブラリ装置１０６の記憶資源がディスクとして提供されているので、仮想ディスク１０８ａに対して、読出し元アドレスがランダムになるリード（以下、ランダムリード）が発生し得るが、ランダムリードが発生しても、ディスクＬＵ１４１ａ、１４１ｂに対してそれが発生するのであって、テープＬＵ１４２ａにはそれが発生しない。テープＬＵ１４２ａからディスクＬＵ１４１ａ、１４１ｂへのデータの読み出しや、ディスクＬＵ１４１ａ、１４１ｂからテープＬＵ１４２ａへのデータの書き込みは、シーケンシャルに行われる。
【００６３】
以上のことから、リストア用のサーバを不要とし、且つ、リストア元がテープ１１２であっても高速にリストアを済ますことができる。
【００６４】
なお、以上のバックアップ処理及び／又はリストア処理において、Activate指示及びInActivate指示のうちの少なくとも一方は、バックアップ／リストア制御プログラム１０１ではなく、ディスク制御プログラム２０５が発行しても良い。具体的には、例えば、ディスク制御プログラム２０５は、ペア生成指示に応答したデータコピーを行う前に、外部ディスク１０５ａにマッピングされている仮想ディスク１０８ａに対してActivate指示を発行しても良い。同様に、例えば、ディスク制御プログラム２０５は、ペア解除指示に応答してペアを解除した場合に、ペア解除された外部ディスク１０５ａにマッピングされている仮想ディスク１０８ａに対してInActivate指示を発行しても良い。
【００６５】
また、例えば、仮想ディスク制御プログラム３０６が、仮想ディスク１０８ａに対するデータアクセスコマンド（ライトコマンド又はリードコマンド）を受信した場合、テープＬＵ１４２ａ内の全データがディスクキャッシュ１４１ａ、１４１ｂに準備されていなければ、所定のエラーを、データアクセスコマンドの発行元に返すことにより、その発行元に、Activate指示を送信することを促すか、或いは、エラーをその発行元に報告することなく、テープＬＵ１４２ａ内のデータをディスクキャッシュ１４１ａ、１４１ｂにロードしても良い。
【００６６】
また、図３８の例では、３つのテープＬＵ１４２ａ〜１４２ｃにより一つのテープグループが構成され、そのテープグループにおいて、３つのテープＬＵ１４２ａ〜１４２ｃが連続している。一つのテープグループにおいて、同一テープ１１２上に、複数のテープＬＵが混在する可能性がある。具体的には、例えば、テープＬＵ１４２ｂの終端アドレスと、テープＬＵ１４２ｃの先端アドレスが、テープ１１２ｂの途中に位置し、以って、同一テープ１１２ｂ上に、テープＬＵ１４２ｂとテープＬＵ１４２ｃが存在する。つまり、この第一実施例において、「テープグループ」とは、一以上のテープ１１２で構成され、一以上のテープＬＵ１４２を有し、複数のテープＬＵを連続して格納している。Activateプログラム３０４は、テープＬＵ１４２ａを有するテープグループ内の全データをディスクキャッシュ１４１ａ、１４１ｂに読み出してもよい。Inactivateプログラム３０５が、ディスクキャッシュ１４１ａ、１４１ｂ内のデータをそのテープグループにシーケンシャルに書き込むことができる。そのため、制御プログラム１１１０は、ディスクキャッシュを構成するディスクＬＵの総記憶容量が、そのテープグループの記憶容量（テープＬＵ１４２ａ〜１４２ｃの総記憶容量）以上になるようにする。もし、テープＬＵ１４２ａ以外のテープＬＵのデータが存在しない状態であれば、Activateプログラム３０４は、そのテープＬＵ１４２ａのみから全データの読み出しを行えばよい。また、一つのテープグループに存在する複数のテープＬＵのうち、指定された仮想ディスクに対応するテープＬＵ（対象テープＬＵ）を含んだ二以上のテープＬＵとしても良い。その際、例えば、これら二以上のテープＬＵの後端を有するテープには、その後端以降に、同一のテープグループに存在する他のテープＬＵのデータが存在しない。そして、それら二以上のテープＬＵの先頭のテープＬＵは、対象テープＬＵとすることができる。
【００６７】
以下、第一実施例について詳細に説明する。
【００６８】
ディスク制御管理テーブル２０６（図２参照）には、例えば、図２２に例示するように、ペアＩＤが書かれるフィールド１１０１と、プライマリＬＵＮが書かれるフィールド１１０２と、セカンダリＬＵＮ１１０３が書かれるフィールドと、ペアステータスが書かれるフィールド１１０４とがある。一つのペアに、ペアＩＤ、プライマリＬＵＮ、セカンダリＬＵＮ及びペアステータスが対応付けられる。なお、プライマリＬＵＮとは、プライマリのＬＵ（コピー元）のＬＵＮである。セカンダリＬＵＮとは、セカンダリのＬＵ（コピー先）のＬＵＮである。
【００６９】
外部ディスク対応テーブル２０９（図２参照）は、外部ディスク１０５と仮想ディスク１０８との対応を管理するためのテーブルである。外部ディスク対応テーブル２０９は、外部ディスク１０５を設定するときに生成される。外部ディスク対応テーブル２０９には、例えば、図３４に例示するように、外部ディスクＬＵＮが書かれるフィールド２３０２と、仮想ディスクＬＵＮが書かれるフィールド４０１と、それらのＬＵＮの対応関係を一意に識別するための対応ＩＤが書かれるフィールド２３０１とがある。一つの外部ディスクＬＵＮに一又は複数の仮想ディスクＬＵＮがマッピングされても良いし、一つの仮想ディスクＬＵＮに複数の外部ディスクＬＵＮがマッピングされても良い。
【００７０】
仮想ディスク制御管理テーブル３０７（図３参照）には、例えば、ＬＵ関係テーブル、仮想ディスク管理テーブル、ＲＡＩＤグループ管理テーブル、ディスクＬＵ管理テーブル、テープグループ管理テーブル、テープＬＵ管理グループ及びIO管理テーブルが含まれている。以下、各種テーブルについて説明する。
【００７１】
図４は、ＬＵ関係テーブルの一例を示す。
【００７２】
ＬＵ関係テーブル1111は、論理ボリュームの対応関係が記述される。具体的には、例えば、ＬＵ関係テーブル１１１１には、仮想ディスクLUNが書かれるフィールド1111aと、ディスクLUNが書かれるフィールド1111bと、テープLUNがかかれるフィールド1111cとがある。一つの仮想ディスク１０８に対して、仮想ディスクＬＵＮ、ディスクＬＵＮ及びテープＬＵＮが対応付けられる。図４において、ディスクＬＵＮが記述されているということは、ディスクキャッシュが確保されていることを意味し、ディスクＬＵＮが記述されていないということは、ディスクキャッシュが確保されていないことを意味する。なお、LUNとは、Logical Unit Numberの略であり、LU（論理ボリューム）を一意に識別するためのIDである。
【００７３】
図５は、仮想ディスク管理テーブルの一例を示す。
【００７４】
仮想ディスク管理テーブル１５０は、仮想ディスクを管理するためのテーブルである。具体的には、例えば、仮想ディスク管理テーブル１５０には、仮想ディスクＬＵＮが書かれるフィールド１５０ａと、仮想ディスクのサイズ（記憶容量）が書かれるフィールド１５０ｂと、初回書込みフラグがセットされるフィールド１５０ｃとがある。一つの仮想ディスク１０８に対して、仮想ディスクＬＵＮ、サイズ及び初回書込みフラグが対応付けられる。なお、「初回書込みフラグ」とは、仮想ディスクに対する書込みが初めてか否かを表すフラグであり、初めての場合には"１"であり、初めてでは無い場合には"０"である。つまり、仮想ディスクが設定された場合、初回書込みフラグは全て"１"とされ、仮想ディスクに書込みが生じた場合には、その仮想ディスクに対応する初回書込みフラグは"０"にされる。仮想ディスクに対する書込みが初回であれば、テープLU１４２からディスクキャッシュへの読み出しを不要とすることができる。
【００７５】
図６は、ＲＡＩＤグループ管理テーブルの一例を示す。
【００７６】
ＲＡＩＤグループ管理テーブル１５１は、ＲＡＩＤグループを管理するためのテーブルである。具体的には、例えば、ＲＡＩＤグループ管理テーブル１５１には、ＲＡＩＤグループＩＤが書かれるフィールド１５１ａと、ディスクＬＵが書かれるフィールド１５１ｂと、ディスク装置のＩＤ（ディスクＩＤ）が書かれるフィールド１５１ｃとがある。一つのＲＡＩＤグループに対して、ＲＡＩＤグループＩＤと、そのＲＡＩＤグループ上にあるディスクＬＵのディスクＬＵＮと、そのＲＡＩＤグループを構成するディスク１０４のディスクＩＤとが対応付けられる。
【００７７】
図７は、ディスクＬＵ管理テーブルの一例を示す。
【００７８】
ディスクＬＵ管理テーブル１５４は、ディスクＬＵを管理するためのテーブルである。具体的には、例えば、ディスクＬＵ管理テーブル１５４には、ディスクＬＵＮが書かれるフィールド１５４ａと、ディスクＬＵのサイズ（記憶容量）が書かれるフィールド１５４ｂと、ディスクアドレスが書かれるフィールド１５４ｃと、ディスクＬＵステータスが書かれるフィールド１５４ｄと、直前使用テープＬＵＮアドレスが書かれるフィールド１５４ｅとがある。一つのディスクＬＵ１４１に対して、ディスクＬＵＮ、サイズ、ディスクアドレス、ディスクＬＵステータス及び直前使用テープＬＵＮアドレスが対応付けられる。なお、「ディスクアドレス」とは、ディスク１０４上でのディスクＬＵの場所を示す値であり、例えば、ディスクＩＤ（例えば０）と、ディスク１０４上でのアドレス（例えば１０００）とのセットを用いて表すことができる。「ディスクＬＵステータス」とは、ディスクＬＵ１４１のステータスであり、例えば、使用中（ディスクキャッシュとして割当て中）と、未使用（どのディスクキャッシュにも割り当てられておらず、割当て可能な状態）とがある。「直前使用テープＬＵＮアドレス」とは、ディスクＬＵが直前にはどのテープＬＵＮのどのアドレスとして使用されたかを表す。例えば、テープLU１４２ａのために確保されたディスクLUの直前使用テープＬＵＮアドレスが、そのテープLU１４２ａのＬＵＮである場合には、そのテープLU１４２ａの全データがそのディスクＬＵに存在するので、テープＬＵ１４２ａからディスクＬＵへの読み出しを不要とすることができる。Activateプログラム３０４は、ディスクキャッシュを確保する場合には、ディスクＬＵステータスが"未使用"のディスクＬＵを探し、探し出されたディスクＬＵを、確保するディスクキャッシュの構成要素とする。また、Activateプログラム３０４は、ディスクキャッシュにディスクＬＵを割り当てた場合、そのディスクキャッシュを使用するテープＬＵのＬＵＮとアドレスを、そのディスクＬＵに対応する「直前使用テープＬＵＮアドレス」の欄に記載する。図４にて、テープＬＵと仮想ディスクＬＵのアドレスの対応関係がわかるため、直前使用テープＬＵＮアドレスは仮想ディスクＬＵのアドレス（ＬＵＮとアドレス）を書込むようにしてもよい。
【００７９】
図８は、テープグループ管理テーブルの一例を示す。
【００８０】
テープグループ管理テーブル１５２は、テープグループを管理するためのテーブルである。具体的には、例えば、テープグループ管理テーブル１５２には、テープグループのＩＤが書かれるフィールド１５２ａと、そのテープグループ上にあるテープＬＵのＬＵＮが書かれるフィールド１５２ｂと、そのテープグループを構成するテープ１１２のＩＤが書かれるフィールド１５２ｃとがある。一つのテープグループに対して、テープグループＩＤ、テープＬＵＮ及びテープＩＤが対応付けられる。
【００８１】
図９は、テープＬＵ管理テーブルの一例を示す。
【００８２】
テープＬＵ管理テーブル１５３は、テープＬＵ１４２を管理するためのテーブルである。具体的には、例えば、テープＬＵ管理テーブル１５３には、テープＬＵＮが書かれるフィールド１５３ａと、テープＬＵのサイズ（記憶容量）が書かれるフィールド１５３ｂと、テープアドレスが書かれるフィールド１５３ｃとがある。一つのテープＬＵ１３２に対して、テープＬＵＮ、サイズ及びテープアドレスが対応付けられる。なお、「テープアドレス」とは、テープ１１２上でのテープＬＵ１４２の場所を示す値であり、例えば、テープＩＤ（例えば０）と、テープ１１２上でのアドレス（例えば１００）とのセットを用いて表すことができる。
【００８３】
図１０は、ステータス管理テーブル1112の一例を示した図である。
【００８４】
ステータス管理テーブル1112には、仮想ディスクのLUNが書かれるフィールド1111aと、その仮想ディスクのステータス（以下、仮想ディスクステータス）が書かれるフィールド1112bとがある。仮想ディスクステータスは、バックアップ／リストア制御プログラム１０１（及び／又はディスク制御プログラム２０５）から参照することができる。仮想ディスクステータスとしては、データアクセス可能な状態を意味する"Active"や、データアクセス不可の状態を意味する"Inactive"などがある。バックアップ／リストア制御プログラム１０１（及び／又はディスク制御プログラム２０５）は、各仮想ディスクの仮想ディスクステータスによって、対象仮想ディスクのアクセス可否や現在の処理状態を知ることができる。各仮想ディスクステータスにおける処理内容は、後述するIO管理テーブルによって管理される。
【００８５】
図１１は、IO管理テーブル1113の一例を示した図である。
【００８６】
IO管理テーブル1113には、仮想ディスクステータスが書かれるフィールド１１１３ａと、その仮想ディスクステータスにおける処理内容が書かれるフィールドとがある。処理内容が書かれるフィールドとして、リード／ライトコマンドの処理が可能か否かが書かれるフィールド１１１３ｂと、制御コマンドの処理が可能か否かが書かれるフィールド１１１３ｃとがある。フィールド１１１３ａには、仮想ディスクのとりうる全仮想ディスクステータスが書かれる。
【００８７】
以下、この第一実施例で行われる処理の流れを説明する。
【００８８】
図１２は、Activate処理の流れの一例を示すフローチャートである。
【００８９】
Activateプログラム３０４は、バックアップ／リストア制御プログラム１０１から、仮想ディスクLUNを含んだActivate指示（つまり、仮想ディスク１０８を指定したActivate指示）を受信する（ステップ５０１）。仮想ディスク制御プログラム３０５は、仮想ディスク１０８のLUNを出力する仮想ディスクＩＤ表示コマンドを提供する。バックアップ／リストア制御プログラム１０１は、仮想ディスクＩＤ表示コマンドを実行することで、仮想ディスクLUNを取得することができる。
【００９０】
Activateプログラム３０４は、指定された仮想ディスク（以下、指定仮想ディスク）１０８のステータスがInactiveかどうかを、ステータス管理テーブル1112を参照することで確認する（ステップ５０２）。
【００９１】
仮想ディスクステータスがInactiveではない場合は（ステップ５０２でN）、Activateプログラム３０４は、Activate処理を終了する。
【００９２】
一方、指定仮想ディスクのステータスがInactiveの場合は（ステップ５０２でＹ）、Activateプログラム３０４は、仮想ディスクライブラリ装置１０６の前処理を実行する（ステップ５０３）。前処理とは、指定仮想ディスク１０８へアクセス可能にする処理である。仮想ディスクライブラリ装置１０６は、データの保存媒体が、シーケンシャルでアクセスするテープ１１２であるため、仮想ディスク１０８にマッピングされたテープ１１２へ直接ランダムアクセスを許可すると、テープ１１２を巻き戻しや早送りしたり、テープ１１２を交換したりする場合があり、性能が低下してしまう。そこで、前処理として、仮想ディスクライブラリ装置１０６のランダムアクセス性能を向上させる処理を実行する。前処理については、後に詳述する。
【００９３】
前処理の実行が終了すると、Activateプログラム３０４は、仮想ディスクステータスをActiveへと変更する（ステップ５０４）。変更が終了することでActivate処理は完了する。
【００９４】
図１３は、前処理の流れの一例を示す。
【００９５】
Activateプログラム３０４は、指定仮想ディスク１０８に必要な容量のディスク領域（ディスクキャッシュ）を確保する（ステップ2801）。Activateプログラム３０４は、指定仮想ディスクの記憶容量以上の記憶容量のディスクキャッシュを確保し、そのディスクキャッシュを構成するディスクＬＵのＬＵＮを、ＬＵ関係テーブル１１１１（図４参照）に登録し、且つ、ディスクＬＵ管理テーブル１５４において、そのディスクＬＵのステータスを、"使用中"に変える。ディスクＬＵを確保する際には、ディスクＬＵ管理テーブル１５４の直前使用テープＬＵＮアドレスを参照し、指定仮想ディスクに対応するテープＬＵＮアドレスが存在すれば、そのディスクＬＵＮを割り当てる。また、ＬＵ関係テーブル１１１において、対象仮想ディスクに、既にディスクＬＵＮが割り当てられている場合は、そのままそのディスクＬＵＮを使用することができる。なお、Activateプログラム３０４は、ディスクキャッシュとして使用可能な（つまり、ディスクＬＵステータスが"未使用"の）一以上のディスクＬＵの総記憶容量が、指定仮想ディスクの記憶容量よりも小さい場合は、ディスクキャッシュの確保ができない旨を、Activate指示の発行元に通知する。
【００９６】
次に、Activateプログラム３０４は、テープからディスクへのコピー要否を判定する（ステップ２８０２）。
【００９７】
例えば、Activateプログラム３０４は、指定仮想ディスクへの書き込みが初めての場合には（例えば、指定仮想ディスクへの書込みが初めてであることが、仮想ディスク管理テーブル１５０から特定できた場合には）、コピー不要と判定する。指定仮想ディスクに対応したテープＬＵには、読み出すべきデータが存在しないためである。
【００９８】
また、例えば、Activateプログラム３０４は、確保したディスクキャッシュ上に既に有効データが存在する場合は、コピー不要と判定する。「有効データ」とは、指定仮想ディスクに対応したテープＬＵ内の全データと同じデータのことである。つまり、「有効データが存在する」とは、ディスクキャッシュ上に、指定仮想ディスクに対応するテープＬＵのデータが存在することを意味する。これは、ディスクキャッシュを構成する各ディスクＬＵのディスクＬＵＮに対応した直前使用テープＬＵＮアドレス（図７参照）を参照することにより、特定することができる。具体的には、指定仮想ディスクに対応するテープＬＵＮのデータと、ディスクキャッシュを構成する各ディスクＬＵのディスクＬＵＮに対応した直前使用テープＬＵＮアドレスとが全て一致した場合には、「有効データが存在する場合」となる。なお、有効データが存在する場合にコピー不要と判定されるのは、既にディスクキャッシュ上に、指定仮想ディスクに対応するテープＬＵ内の全データが存在するためである。
【００９９】
コピー不要と判定した場合、Activateプログラム３０４は、前処理を終了し、一方、コピー必要と判定した場合、指定仮想ディスクの仮想ディスクステータスを"Activate"に変更し、次のステップ２８０３へ進む。
【０１００】
テープからディスクへのコピーが必要と判定されると、Activateプログラム３０４は、対象テープ１１２をテープドライブ１１１に準備するようロボット１１０に指示を出す（ステップ2803）。ここでは、「対象テープ」とは、指定仮想ディスクに対応する（つまり読み出し対象の）テープＬＵＮを有するテープである。
【０１０１】
対象テープ１１２がテープドライブ１１１に準備され、対象テープ１１２からデータが読み出され、読み出されたデータが、仮想ディスクアレイコントローラ１０７のキャッシュメモリ３０９上に書かれる（ステップ2804）。
【０１０２】
キャッシュメモリ３０９に書かれたデータは、Activateプログラム３０４によって、確保済みのディスクキャッシュに書き込まれる（ステップ2805）。
【０１０３】
Activateプログラム３０４は、読み出すべきデータが対象テープ１１２に残っている場合は（ステップ２８０６でＮＯ）、対象テープ１１２の読み出しを継続し、ステップ2804からステップ2805を繰り返す。Activateプログラム３０４は、読み出すべきデータが残っていない場合には、対象テープ１１２の読み出しを終了する（ステップ2806）。
【０１０４】
対象テープ１１２の読み出しが終了すると、Activateプログラム３０４は、対象テープ１１２の巻き戻しやアンロードなどのテープ使用終了処理を実施する（ステップ2807）。
【０１０５】
指定仮想ディスクのデータが全てディスクキャッシュ上に準備できていれば、Activateプログラム３０４は、前処理を終了する。複数の対象テープ１１２に跨ってデータが格納されている場合は（ステップ2808でＮＯ）、ステップ2803に戻り、必要に応じて、対象テープ１１２を切替えて、コピーを継続する。
【０１０６】
以上が、前処理の流れの一例である。なお、図１３において、ステップ２８０２でＹＥＳからステップ２８０３にかけて、以下の対象テープ判定処理が行われてもよい。
【０１０７】
図１４は、対象テープ判定処理の一例を示す。
【０１０８】
Activateプログラム３０４は、指定仮想ディスク１０８に対応するテープＬＵ（以下、該当テープＬＵ）１４２を構成するテープ１１２に他のテープＬＵが存在しないことをテープグループ管理テーブル１５２及びテープＬＵ管理テーブル１５３（図９参照）から特定できた場合（ステップ２７０１でＮＯ）、該当テープＬＵ１４２を有するテープ１１２を、ステップ２８０６で言う対象テープ１１２とする（ステップ２７０２）。
【０１０９】
一方、Activateプログラム３０４は、該当テープＬＵ１４２を構成するテープ１１２に他のテープＬＵが存在することをテープグループ管理テーブル１５２及びテープＬＵ管理テーブル１５３から特定できた場合（ステップ２７０１でＹＥＳ）、該当テープＬＵ１４２を有するテープグループを構成する全テープ１１２を、それぞれ対象テープ１１２とする（ステップ２７０３）。
【０１１０】
つまり、Activateプログラム３０４は、テープ１１２に記録された全データを読み出すようにする。換言すれば、Activateプログラム３０４は、前述した後処理において、テープ１１２の一部分だけで書込み終了とならないようにする。なお、一つのディスクキャッシュ上に、複数のテープLUのデータが読み出された場合には、ディスクキャッシュ上でのアドレスと、テープLUとの対応を図示しないテーブルで管理することができ、以って、ディスクキャッシュ上のどこのデータをどのテープLUに書いたら良いかを特定することができる。
【０１１１】
ステップ２７０２又は２７０３の後、Activateプログラム３０４は、確保したディスクキャッシュを構成する各ディスクＬＵ１４１に対して、対象テープ１１２上のテープLUN（例えば、ステップ７０２でのテープLUN、或いは、ステップ７０３でのテープグループ上の全テープＬＵＮ）を直前使用テープＬＵＮアドレス（図７参照）として対応付けて、図１３のステップ２８０３へ移行する（ステップ２７０４）。
【０１１２】
図１５は、仮想ディスク制御プログラム３０６が行うデータアクセス制御処理の一例を示す。
【０１１３】
仮想ディスク制御プログラム３０６は、データアクセスコマンド（リードコマンド或いはライトコマンド）を受領した場合、ステータス管理テーブル１１１２を参照し、そのデータアクセスコマンドで指定されている仮想ディスク１０８のステータスが"Active"か否かを判定する。"Active"ではない場合には（ステップ２７５１でＮＯ）、仮想ディスク制御プログラム３０６は、エラーを返答する（ステップ２７５２）。一方、仮想ディスク制御プログラム３０６は、指定されている仮想ディスク１０８の仮想ディスクのステータスが"Active"の場合には（ステップ２７５１でＹＥＳ）、その仮想ディスク１０８のために確保されたディスクキャッシュに対してデータアクセス（データの読出し或いは書込み）を行う（ステップ２７５３）。
【０１１４】
次に、仮想ディスクの使用終了を行なう処理に関して説明する。指示プログラム２１又は管理プログラム３１は、指定仮想ディスク１０８へのデータアクセスが終了した場合、仮想ディスクライブラリ装置１０６に対して終了指示を行なう。この指示をInactivate指示と呼ぶ。ディスク装置１２の総記憶容量は、仮想ディスク１０８の総記憶容量に比べて小さいため、データアクセスが行なわれない仮想ディスク１０８からは、確保されたディスクキャッシュ（つまりディスク領域）を解放する必要がある。指示プログラム２１又は管理プログラム３１は、ユーザ或いは管理者による手動で、或いは、バックアップ或いはアーカイブ完了などを検出したときに自動で、Active状態の仮想ディスク（例えば、Activate指示が発行された上記指定仮想ディスク）に対して、Inactivate指示を発行する。
【０１１５】
図１６は、Inactivate処理の流れの一例を示すフローチャートである。
【０１１６】
Inactivateプログラム３０５は、バックアップ／リストア制御プログラム１０１から仮想ディスクLUNを含んだInactivate指示（仮想ディスクを指定したInactivate指示）を受信する（ステップ６０１）。
【０１１７】
Inactivateプログラム３０５は、指定仮想ディスクのステータスがActiveかどうかをステータス管理テーブル１１１２を参照することにより確認する（ステップ６０２）。指定仮想ディスクのステータスがActiveではない場合は（ステップ６０２でN）、Inactivateプログラム３０５は、Inactivate処理を終了する。
【０１１８】
一方、指定仮想ディスクのステータスがActiveの場合は、Inactivateプログラム３０５は、後処理を実行する（ステップ６０３）。後処理とは、Inactivate指示された仮想ディスク１０８へアクセス不可能にする処理である。後処理については後に詳述する。
【０１１９】
後処理の実行が終了すると、Inactivateプログラム３０５は、指定仮想ディスクのステータスをInactiveへと変更する（ステップ６０４）。変更が終了することでInactivate処理は完了する。
【０１２０】
図１７は、後処理の流れの一例を示す。
【０１２１】
Inactivateプログラム３０５は、ディスクキャッシュからテープ１１２へのコピー要否を判定する（ステップ２９０１）。例えば、Inactivateプログラム３０５は、Active中にそのディスクキャッシュに更新が無かった場合には、コピー不要と判定する。指定仮想ディスク１０８に対応するディスクキャッシュ上の全データと、指定仮想ディスク１０８に対応するテープLU（又は、指定仮想ディスクに対応するテープグループ上の全テープLU）１４２内の全データとの間に差分が無いためである。コピー不要と判定した場合、Inactivateプログラム３０５は、は、後処理を終了する。コピー必要と判定した場合、Inactivateプログラム３０５は、は、指定仮想ディスク１０８の仮想ディスクステータスを"Inactivate"に変更し、次のステップ902へ進む。
【０１２２】
ディスクキャッシュからテープ１１２へのコピーが必要と判定されると、Inactivateプログラム３０５は、対象テープ１１２をテープドライブ１１１に準備することをロボット１１０に実行させる（ステップ2902）。ここでの「対象テープ」とは、ディスクキャッシュに対応するテープLU１４２を有するテープ１１２である。このため、対象テープとは、例えば、図１４において、ステップ２７０２が実行された場合には、指定仮想ディスクに対応するテープLUを有したテープ１１２であり、ステップ２７０３が実行された場合には、指定仮想ディスクに対応するテープグループを構成する各テープ１１２である。
【０１２３】
対象テープ１１２がテープドライブ１３１に準備され、ディスクキャッシュ（ディスクLU）から仮想ディスクコントローラ１０７のキャッシュメモリ３０９上にデータが読み出される（ステップ2903）。キャッシュメモリ３０９に読み出されたデータは、対象テープ１１２に書き込まれる（ステップ904）
Inactivateプログラム３０５は、読み出すべきデータがディスクキャッシュに残っている場合は（ステップ２９０５でNO）、ディスクキャッシュからの読み出しを継続し、ステップ2903からステップ2904を繰り返す。Inactivateプログラム３０５は、読み出すべきデータが残っていない場合には（ステップ2905でYES）、読み出しを終了する。
【０１２４】
対象テープ１１２への書き込みが終了した場合、Inactivateプログラム３０５は、対象テープ１１２の巻き戻しやアンロードなどのテープ使用終了処理を実施する（ステップ2906）。
【０１２５】
ディスクキャッシュ上のデータが全て対象テープ１１２に格納できていれば（ステップ２９０７でYES）、Inactivateプログラム３０５は、後処理を終了する。一方、複数の対象テープ１１２に跨ってデータを格納する場合には、制御プログラム１１１０は、ステップ2902に戻り、必要に応じて、対象テープ１１２を切替えてコピーを継続する（ステップ2907）。なお、ディスクキャッシュから対象テープ１１２には、データをコピーしているので、コピー元のディスクキャッシュには、対象テープ１１２に書かれるデータが残る。このため、例えば、指定仮想ディスクのディスクキャッシュを構成するディスクLUが、一旦解放されて、そのディスクLU内のデータが更新されること無く再びその指定仮想ディスクにディスクキャッシュとして割り当てられた場合には、その指定仮想ディスクに対応するテープLU内の全データが、そのディスクLUに残っていることになる。後処理が完了した場合、ディスクキャッシュ上のデータは削除されてもよい。
【０１２６】
図１８は、バックアップ処理においてバックアップ／リストア制御プログラム１０１が行う処理の流れの一例を示すフローチャートである。
【０１２７】
例えば、図示していないジョブスケジューラや管理者によって、バックアップ／リストア制御プログラム１０１に対して、バックアップ処理が指示される。以下、通常LU１８０ａのデータを外部ディスク１０５ａへバックアップする場合を例に採り説明する。
【０１２８】
バックアップ処理を実行するときは、バックアップ対象となる通常LU１８０ａへの書き込みは行われないものとする。具体的には、例えば、バックアップ／リストア制御プログラム１０１は、通常LU１８０ａにデータを書き込む可能性のあるコンピュータプログラム（例えば計算機１００内の図示しないアプリケーションプログラム）に対して、データの書込みを禁止させてもよい。
【０１２９】
ステップ７０１において、バックアップ／リストア制御プログラム１０１は、Activateプログラム３０４へ、仮想ディスク１０８ａのＬＵＮを含んだActivate指示を出す。
【０１３０】
ステップ７０２において、バックアップ／リストア制御プログラム１０１は、仮想ディスク制御プログラム３０６へ、仮想ディスク１０８ａのＬＵＮを含んだステータス確認コマンドを出す。ステータス確認コマンドを受信した仮想ディスク制御プログラム３０６は、ステータス管理テーブル１１１２を参照し、仮想ディスク１０８ａのＬＵＮに対応した仮想ディスクステータスを返す。
【０１３１】
ステップ７０３において、バックアップ／リストア制御プログラム１０１は、ステータス確認コマンドの戻り値として受信した仮想ディスクステータスが"Active"かどうか判定を行う。"Active"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ７０２を実行する。"Active"であれば、バックアップ／リストア制御プログラム１０１は、ステップ７０４を実行する。
【０１３２】
ステップ７０４において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、通常LU１８０ａをプライマリLUとし外部ディスク１０５をセカンダリLUとするペアを生成するためのペア生成指示を出す。これにより、図２０に示すように、通常LU１８０ａと外部ディスク１０５ａのペアが生成される。
【０１３３】
ステップ７０５において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、上記ペアのＩＤを指定したペアステータス確認コマンドを出す。ペアステータス確認コマンドを受信したディスク制御プログラム２０５は、ディスク制御管理テーブル２０６から、指定されたペアＩＤに対応したペアステータスを取得し、取得したペアステータスを、バックアップ／リストア制御プログラム１０１に返す。また、ディスク制御プログラム２０５は、ディスク制御管理テーブル２０６の情報を出力する表示コマンドを提供しており、バックアップ／リストア制御プログラム１０１は、その表示コマンドを実行することにより、ディスク制御プログラム２０５からディスク制御管理テーブル２０６の情報を取得することができる。また、ディスク制御プログラム２０５は、ディスク制御管理テーブル２０６のペア情報を削除する削除コマンドを提供しており、削除するペアのペアＩＤを指定することで、そのペアＩＤに関連するペア情報を削除することができる。ペア情報とは、ディスク制御管理テーブル２０６におけるペアＩＤ、プライマリＬＵＮ、セカンダリＬＵＮ及びペアステータスの値である。
【０１３４】
ステップ７０６において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５から返されたペアステータスが"Duplex"かどうかの判定を行う。"Duplex"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ７０５を実行する。"Duplex"であれば、バックアップ／リストア制御プログラム１０１は、ステップ７０７を実行する。
【０１３５】
ステップ７０７において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、ペアＩＤを指定したペア分割指示を出す。
【０１３６】
ステップ７０８において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム１０１へ、そのペアＩＤを指定したペアステータス確認コマンドを出す。
【０１３７】
ステップ７０９において、バックアップ／リストア制御プラグラム１０１は、ペアステータスが"Semi-Simplex"かどうか判定する。"Semi-Simplex"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ７０８を実行する。"Semi-Simplex"であれば、バックアップ／リストア制御プログラム１０１は、ステップ７１０を実行する。
【０１３８】
ステップ７１０において、バックアップ／リストア制御プログラムは、Inactivateプログラム３０５へ、仮想ディスク１０８ａのＬＵＮを含んだInactivate指示を出す。
【０１３９】
ステップ７１１において、バックアップ／リストア制御プログラム１０１は、仮想ディスク制御プログラム３０６へ、仮想ディスク１０８ａのＬＵＮを含んだ仮想ディスクステータス確認コマンドを出す。
【０１４０】
ステップ７１２において、バックアップ／リストア制御プログラム１０１は、仮想ディスクステータス確認コマンドの戻り値として受信した仮想ディスクステータスが"Inactive"かどうか判定を行う。"Inactive"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ７１１を実行する。"Inactive"であれば、バックアップ／リストア制御プログラム１０１は、バックアップ処理を終了する。
【０１４１】
図１９は、ディスク制御プログラム２０５のＬＵペア生成処理の流れの一例を示すフローチャートである。
【０１４２】
ステップ８０１において、ディスク制御プログラム２０５は、バックアップ／リストア制御プログラム１０１からＬＵペア生成指示を受信後、指定されたプライマリLU（例えば通常LU１８０ａ）とセカンダリLU（例えば外部ディスク１０５ａ）のペアを生成する。まず、ディスク制御プログラム２０５は、指定されたプライマリLUとセカンダリLUのペアにペアＩＤを割り振り、ペアＩＤ、プライマリLUN及びセカンダリLUNをディスク制御管理テーブル２０６に設定する。プライマリLUN及びセカンダリLUNには、それぞれ、LUNの他に、ターゲットＩＤを付加することもできる。ディスク制御プログラム２０５は、ペアを生成した後、プライマリLUからセカンダリLUへデータのコピーを行う。コピー中のペアステータスは"COPY"とする。ディスク制御プログラム２０５は、ペア生成後、ペアステータス１１０４に"COPY"を設定する。プライマリLUとセカンダリLUの中身が一致したところで、一旦コピー処理は停止するが、もし、プライマリLUに書き込みがあった場合はすぐにセカンダリLUへコピー処理される状態となる。この状態をDuplex状態とする。
【０１４３】
ステップ８０２において、ディスク制御プログラム２０５は、ペアステータス１１０４に"Duplex"を設定する。ペアステータスの設定が終了すると、ペア生成処理は完了する。
【０１４４】
図２１は、ディスク制御プログラム２０５のペア分割処理の流れの一例を示すフローチャートである。
【０１４５】
ステップ１００１において、ディスク制御プログラム２０５は、バックアップ／リストア制御プログラム１０１からペア分割指示を受信後、指定されたペアの分割処理を実行する。ディスク制御プログラム２０５は、指定されたペアを分割状態とする。分割状態とは、プライマリLUに書き込みがあった場合でも、セカンダリLUへコピーされない状態である。この状態を、Semi-Simplex状態とする。Semi-Simplex状態では、ディスク制御プログラム２０５が、プライマリLUとセカンダリLUのデータの差分を管理している。ディスク制御プログラム２０５が差分を管理することで、再度ペア生成処理を実行するときに、すべてのデータをコピーする必要がなく、差分となっているデータのみをコピーするだけで、Duplex状態にすることが可能となる。
【０１４６】
ステップ９０２において、ディスク制御プログラム２０５は、ペアステータス１１０４に"Semi-Simplex"を設定する。ペアステータス１１０４の設定が終了すると、ペア分割処理を終了する。
【０１４７】
図２３は、リストア処理においてバックアップ／リストア制御プログラム１０１が行う処理の流れの一例を示すフローチャートである。
【０１４８】
例えば、図示していないジョブスケジューラや管理者によって、バックアップ／リストア制御プログラム１０１に対し、リストアが指示される。以下、外部ディスク１０５ａのデータを通常LU１８０ａへリストアする場合を例に採り説明する。
【０１４９】
リストア処理を実行するときは、外部ディスク１０５ａのリストア先となる通常LU１８０ａへの書き込みは行われないものとする。具体的には、例えば、バックアップ／リストア制御プログラム１０１は、通常LU１８０ａにデータを書き込む可能性のあるコンピュータプログラム（例えば計算機１００内の図示しないアプリケーションプログラム）に対して、データの書込みを禁止させてもよい。
【０１５０】
ステップ１２０１において、バックアップ／リストア制御プログラム１０１が、Activateプログラム３０４へ、仮想ディスク１０８ａのＬＵＮを含んだActivate指示を出す。
【０１５１】
ステップ１２０２において、バックアップ／リストア制御プログラム１０１は、仮想ディスク制御プログラム３０６へ、仮想ディスク１０８ａのＬＵＮを含んだステータス確認コマンドを出す。
【０１５２】
ステップ１２０３において、バックアップ／リストア制御プログラム１０１は、ステータス確認コマンドの戻り値として受信したステータスが"Active"かどうか判定を行う。"Active"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ１２０２を実行する。"Active"であれば、バックアップ／リストア制御プログラム１０１は、ステップ１２０４を実行する。
【０１５３】
ステップ１２０４において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、通常LU１８０ａをプライマリLUとし外部ディスク１０５ａをセカンダリＬＵとするペア再生成指示を出す。
【０１５４】
ステップ１２０５において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、再生成したペアを指定したペアステータス確認コマンドを出す。ペアステータス確認コマンドを受信したディスク制御プログラム２０５は、ディスク制御管理テーブル２０６から、指定されたペアのペアステータスを読み出し、バックアップ／リストア制御プログラム１０１に返す。
【０１５５】
ステップ１２０６において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５から返されたペアステータスが"Duplex"かどうかの判定を行う。"Duplex"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ１２０５を実行する。"Duplex"であれば、バックアップ／リストア制御プログラム１０１は、ステップ１２０７を実行する。
【０１５６】
ステップ１２０７において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、通常LU１８０ａと外部ディスク１０５ａのペアを指定したペア分割指示を出す。
【０１５７】
ステップ１２０８において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、上記ペアを指定したペアステータス確認コマンドを出す。
【０１５８】
ステップ１２０９において、バックアップ／リストア制御プログラム１０１は、戻り値として受けたペアステータスが"Semi-Simplex"かどうか判定する。"Semi-Simplex"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ１２０８を実行する。"Semi-Simplex"であれば、バックアップ／リストア制御プログラム１０１は、ステップ１２１０を実行する。
【０１５９】
ステップ１２１０において、バックアップ／リストア制御プログラム１０１は、Inactivateプログラム３０５へ、仮想ディスク１０８ａを指定したInactivate指示を出す。
【０１６０】
ステップ１２１１において、バックアップ／リストア制御プログラム１０１は、仮想ディスク制御プログラム３０６へ、仮想ディスク１０８ａを指定した仮想ディスクステータス確認コマンドを出す。
【０１６１】
ステップ１２１２において、バックアップ／リストア制御プログラム１０１は、仮想ディスクステータス確認コマンドの戻り値として受信したステータスが"Inactive"かどうか判定を行う。"Inactive"でなければ、バックアップ／リストア制御プログラム１０１は、ステップ１２１１を実行する。"Inactive"であれば、バックアップ／リストア制御プログラム１０１は、リストア処理を終了する。
【０１６２】
図２４は、ディスク制御プログラム２０５のペア再生成処理の一例を示すフローチャートである。
【０１６３】
ステップ２００１において、ディスク制御プログラム２０５は、バックアップ／リストア制御プログラム１０１からペア再生成指示を受信後、指定されたペアを再生成する。ディスク制御プログラム２０５は、ペアステータス１１０４に"COPY"を設定し、プライマリLUからセカンダリLUへ差分のみのデータのコピーを行う。
【０１６４】
ステップ２００２において、プライマリLUとセカンダリLUの中身が一致した場合、ディスク制御プログラム２０５は、ペアステータス１１０４に"Duplex"を設定する。ペアステータス１１０４の設定が終了すると、ペア再生成処理を終了する。
【０１６５】
以上が、第一実施例についての説明である。なお、この第一実施例では、例えば、３つ以上のLUがいわゆるカスケード構成にされても良い。具体的には、例えば、図２８に示すように、第一のペア（通常LU１８０ａをプライマリＬＵとし、通常LU１８０ｂをセカンダリＬＵとしたペア）のセカンダリＬＵを、第二のペア（通常LU１８０ｂをプライマリＬＵとし、外部ディスク１０５ａをセカンダリＬＵとしたペア）のプライマリＬＵとすることで、ＬＵのカスケードを構成しても良い。この場合のディスク制御管理テーブル２０６を図２９に例示する。このような場合には、例えば、外部ディスク１０５ａから通常LU１８０ａへリストアするときは、一旦通常LU１８０ｂへリストアし、通常LU１８０ｂから通常LU１８０ａへリストアする方法がある。或いは、通常LU１８０ｂと外部ディスク１０５ａのペア情報を削除し、プライマリＬＵを外部ディスク１０５ａとし、セカンダリＬＵを通常LU１８０ａとするペアを生成することで高速にリストアする方法もある。これらの方法は、バックアップ処理に応用することができる。
【０１６６】
また、この第一実施例では、図３０に例示するように、一つの通常LU１８０ａに、複数のＬＵがセカンダリＬＵとしてペアにされても良い。
【実施例２】
【０１６７】
以下、本発明の第二実施例について説明する。なお、以下の説明では、第一実施例との相違点を主に説明し、第一実施例との共通点については説明を省略或いは簡略する。
【０１６８】
この第二実施例では、プライマリLUとセカンダリLUとの差分の管理が行われない。このため、バックアップ処理では、通常LU１８０ａの全データが外部ディスク１０５ａにコピーされることになるし、リストア処理では、外部ディスク１０５ａの全データが通常LU１８０ａにコピーされることになる。差分管理が行われれば、差分管理が行われない場合に比して、バックアップやリストアに要する時間を短縮することができるが、差分管理が行われなければ、後述するシーケンシャルリード（ディスクＬＵを介さないテープからの直接読出し）及び／又はシーケンシャルライト（ディスクＬＵを介さないテープに対する直接書込み）を行うことが可能である。以下、詳述する。
【０１６９】
図２５は、第二実施例のバックアップ処理において、バックアップ／リストア制御プログラム１０１が実行する処理の流れの一例を示すフローチャートである。図２６は、第二実施例のリストア処理において、バックアップ／リストア制御プログラム１０１が実行する処理の流れの一例を示すフローチャートである。
【０１７０】
この図２５において、ステープ１３０１〜１３１２は、図１８のステップ７０１〜７１２にそれぞれ対応しており、相違点は、ステップ１３０７において、ペア分割指示ではなく、ペア解除指示が出される点である。このため、ステップ１３０９では、"Semi-Simplex"かどうかではなく、"Simplex"かどうかが判断される。
【０１７１】
同様に、図２６において、ステップ１４０１〜１４１２は、図２３のステップ１２０１〜１２１２にそれぞれ対応しており、相違点は、ステップ１４０７において、ペア分割指示ではなく、ペア解除指示が出される点である。このため、ステップ１４０９では、"Semi-Simplex"かどうかではなく、"Simplex"かどうかが判断される。
【０１７２】
図２７は、ディスク制御プログラム２０５のペア解除処理の流れの一例を示すフローチャートである。
【０１７３】
ステップ１５０１において、ディスク制御プログラム２０５は、バックアップ／リストア制御プログラム１０１からペア解除指示を受信後、指定されたペアを解除する。Duplex状態の後にペアが解除された場合には、プライマリLUに更新があっても、その更新が、セカンダリLUには反映されないし、更新により生じた差分も、管理されない。
【０１７４】
ステップ１５０２において、ディスク制御プログラム２０５は、ペアステータス１１０４に"Simplex"を設定する。ペアステータス１１０４の設定が終了すると、ペア解除処理を終了する。
【０１７５】
さて、本実施例では、プライマリLUとセカンダリLUとの差分の管理が行われないので、以下に説明するシーケンシャルリード及び／又はシーケンシャルライトを行うことができる。具体的には、例えば、計算機が、シーケンシャルリード及び／又はシーケンシャルライトのコマンドを発行することができる。ディスクアレイコントローラ１０３は、そのコマンドに応答して、仮想ディスクアレイコントローラ１０７に、シーケンシャルリード及び／又はシーケンシャルライトのコマンドを発行することができる。或いは、ディスクアレイコントローラ１０３は、計算機からのコマンドの有無に関わらず、プライマリLUとセカンダリLUとの差分の管理が行われていない場合に、仮想ディスクアレイコントローラ１０７に、シーケンシャルリード及び／又はシーケンシャルライトのコマンドを発行することができる。以下、シーケンシャルリードのコマンドを「SeqReadコマンド」と示し、シーケンシャルライトのコマンドを「SeqWriteコマンド」と示す。
【０１７６】
図３９は、仮想ディスクアレイコントローラ１０７がSeqReadコマンドを受領した場合に行われる処理の流れの一例を示すフローチャートである。
【０１７７】
仮想ディスクアレイコントローラ１０７は、SeqReadコマンドを受領した場合（ステップ21100）、そのSeqReadコマンドで指定されている仮想ディスク（以下、指定仮想ディスク）１０８の仮想ディスクステータスを"SR-prepare"に変更し、指定仮想ディスク１０８に対応するテープ（以下、対象テープ）１１２をテープドライブ１１１に準備する（ステップ21101）。
【０１７８】
対象テープ１１２がテープドライブ１１１に準備されたならば、仮想ディスクアレイコントローラ１０７は、指定仮想ディスク１０８の仮想ディスクステータスを"SeqRead"に変更し、準備された対象テープ１１２からキャッシュメモリ３０９にデータを読み出す（ステップ21102）。
【０１７９】
ディスクアレイコントローラ１０３は、SeqReadコマンドが発行された後、定期的に、指定仮想ディスク１０８の仮想ディスクステータスを監視し、その仮想ディスクステータスが"SeqRead"になったことを検出した場合、指定仮想ディスクに対するリードコマンドを発行する。仮想ディスクアレイコントローラ１０７は、そのリードコマンドに従って、キャッシュメモリ３０９上に読み出されたデータを、ディスクアレイコントローラ１０３へ転送する（ステップ21103）。
【０１８０】
仮想ディスクアレイコントローラ１０７は、読み出すべきデータが対象テープ１１２に残っている場合は（ステップ２１１０４でNO）、対象テープ１１２からの読み出しを継続し、読み出すべきデータが残っていない場合には（ステップ２１１０４でYES）、対象テープ１１２の読み出しを終了する。
【０１８１】
対象テープ１１２からの読み出しが終了した場合、仮想ディスクアレイコントローラ１０７は、テープの巻き戻しやアンロードなどのテープ使用終了処理を実施する（ステップ21105）。
【０１８２】
指定仮想ディスク１０８からのデータを全て読み出された場合に（ステップ２１１０６でYES）、処理が終了となる。複数の対象テープ１１２に跨ってデータが格納されている場合は、ステップ21101に戻り、必要に応じて、対象テープ１１２を切替えて読み出しを継続することができる。読み出したデータがキャッシュメモリ３０９からあふれないように、仮想ディスクアレイコントローラ１０７は、ディスクアレイコントローラからのリードコマンドに応じて、対象テープ１１２からの読み出し速度を変更することもできる。また、ディスクＬＵが割り当てられている場合には、ディスクアレイコントローラへの読出しと並行してディスクへの書き込みを行っても良い。また、仮想ディスクアレイコントローラ１０７は、ディスクアレイコントローラへのデータ転送速度が対象テープ１１２からの読み出し速度よりも早いためにキャッシュメモリ３０９にデータが準備できていない場合は、ディスクアレイコントローラ１０３に、データの準備中である旨を通知することができる。データ準備中の通知を受領したディスクアレイコントローラ１０３は、一定時間経過後に、リードコマンドをリトライすることができる。
【０１８３】
図４０は、仮想ディスクアレイコントローラ１０７がSeqWriteコマンドを受領した場合に行われる処理の流れの一例を示すフローチャートである。
【０１８４】
仮想ディスクアレイコントローラ１０７は、SeqWriteコマンドを受領した場合（ステップ21200）、そのSeqWriteコマンドで指定されている仮想ディスク（以下、指定仮想ディスク）１０８の仮想ディスクステータスを"SW-prepare"に変更し、指定仮想ディスク１０８に対応するテープ（以下、対象テープ）１１２をテープドライブ１１１に準備する（ステップ1101）。
【０１８５】
対象テープ１１２がテープドライブ１１１に準備されたならば、仮想ディスクアレイコントローラ１０７は、指定仮想ディスク１０８の仮想ディスクステータスを"SeqWrite"に変更する。ディスクアレイコントローラ１０３は、SeqWriteコマンドが発行された後、定期的に、指定仮想ディスク１０８の仮想ディスクステータスを監視し、その仮想ディスクステータスが"SeqWrite"になったことを検出した場合、指定仮想ディスクに対するライトコマンド及びデータを発行する。仮想ディスクアレイコントローラ１０７は、ディスクアレイコントローラ１０３からのライトコマンドに従って、ディスクアレイコントローラ１０３からのデータをキャッシュメモリ３０９に書く（ステップ21202）。仮想ディスクアレイコントローラ１０７は、キャッシュメモリ３０９に書かれたデータを、準備された対象テープ１１２に書込む（ステップ21203）。
【０１８６】
仮想ディスクアレイコントローラ１０７は、書込むデータがキャッシュメモリ３０９に残っている場合は（ステップ21204でNO）、対象テープ１１２への書き込みを継続し、書込むべきデータが残っていない場合には（ステップ21204でYES）、対象テープ１１２への書き込みを終了する。
【０１８７】
対象テープ１１２への書き込みが終了した場合、仮想ディスクアレイコントローラ１０７は、テープの巻き戻しやアンロードなどのテープ使用終了処理を実施する（ステップ21205）。
【０１８８】
指定仮想ディスク１０８に対してデータの書き込みが完了した場合に（ステップ２１２０６でYES）、処理が終了となる。複数の対象テープ１１２に跨ってデータを書込む場合は、ステップ21201に戻り、必要に応じて、対象テープ１１２を切替えて書き込みを継続することができる。SeqRead時と同様に、ディスクＬＵが割り当てられている場合には、テープへの書込みと並行してディスクへの書き込みを行っても良い。
【実施例３】
【０１８９】
以下、本発明の第三実施例を説明する。以下、第二実施例との相違点を主に説明する。
【０１９０】
図３１は、本発明の第三実施例に係る計算機システムの構成例を示す。
【０１９１】
ストレージ仮想化装置１０２では、ローカルメモリ２０４などの各種記憶資源が有限であるため、管理可能なペア数以上のペアを生成することは不可能である。そこで、この第三実施例では、ペア情報を削除する削除コマンドを提供し、保存可能なペア数以上のペアを生成する場合には、その削除コマンドを実行することで、保存領域を空けることができる。
【０１９２】
また、その際、例えば、リストアのために、削除したペアのプライマリＬＵのデータを保存しておく場合は、管理者がそのペア情報を管理する必要があるが、削除するペア数が多い場合には、管理者にとって管理が負担となり、どのＬＵとどのＬＵがどのようにペアを構成していたのか把握できなくなってしまう場合がある。
【０１９３】
そのため、この第三実施例では、削除ペア管理テーブル１２４が準備され、そのテーブル１２４で削除されたペアのペア情報（以下、削除ペア情報）を管理することができるようになっている。削除ペア管理テーブル１２４は、例えば、図３１に示すように、計算機１００のメモリ１２１に保存される。バックアップ／リストア制御プログラム１０１は、ペア削除指示を出す場合には、ペア情報を削除ペア管理テーブル１２４に格納する。バックアップ／リストア制御プログラム１０１は、削除ペア管理テーブル１２４の情報を、ディスプレイ（例えば計算機２の図示しないディスプレイ）へ出力する削除ペア表示コマンドを管理者へ提供する。管理者は、削除ペア表示コマンドを実行させることで、削除ペア情報を表示させることできる。
【０１９４】
図３２は、削除ペア管理テーブル１２４の構成例を示した図である。
【０１９５】
削除ペア管理テーブル１２４には、ペアＩＤが書かれるフィールド２１０２と、プライマリＬＵＮが書かれるフィールド２１０２と、セカンダリＬＵＮが書かれるフィールド２１０３と、削除された日時が書かれるフィールド２１０４とがある。すなわち、削除ペア管理テーブル１２４には、削除ペア情報として、削除されたペア情報中のプライマリＬＵＮ及びセカンダリＬＵＮと、ペアの削除を識別するための削除ペアＩＤと、ペア情報が削除された日時とが記録される。
【０１９６】
図３３は、第三実施例において、バックアップ処理の際に、バックアップ／リストア制御プログラム１０１によって行われる処理の流れの一例を示す。
【０１９７】
図３３によれば、図２５のフローに、削除ペア情報を削除ペア管理テーブル１２４に格納するステップ２２０７と、ペア情報の削除を指示するステップ２２１４とが追加されている。
【０１９８】
ステップ２２０７において、バックアップ／リストア制御プログラム１０１は、取得した日時と、削除するペアのプライマリＬＵＮ及びセカンダリＬＵＮと、新たに割り当てた削除ペアＩＤとを、削除ペア管理テーブル１２４へ格納する。
【０１９９】
ステップ２２１３において、ステータス確認コマンドの戻り値としてバックアップ／リストア制御プログラム１０１が受信したステータスが"Inactive"であれば、ステップ２２１４において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、ペア情報を削除するペアＩＤを指定して削除コマンドを出す。これにより、ディスク制御プログラム２０５によって、ディスク制御管理テーブル２０６からペア情報が削除される。ペア情報の削除が終了すると、バックアップ処理が完了する。
【０２００】
ペア情報の削除は、ペア解除処理で行っても良い。具体的には、ステップ２２１４を追加せず、図２７のステップ１５０１において"Simplex"を設定する代わりにペア情報を削除する。その場合、ペアステータス確認コマンドを受信したディスク制御プログラム２０５は、ペアステータス確認コマンドで指定されたペアIDがディスク制御管理テーブル２０６に存在しないときに"Simplex"をバックアップ／リストア制御プログラム１０１に返す。
【実施例４】
【０２０１】
以下、本発明の第四実施例について説明する。
【０２０２】
図３５は、本発明の第四実施例に係る計算機システムの構成例を示す。
【０２０３】
外部ディスク対応テーブル２０９には、管理可能な外部ディスク数以上の外部ディスク１０５を生成することは不可能である。ローカルメモリ２０４などの記憶資源が有限であるためである。
【０２０４】
そこで、この第四実施例では、管理可能な外部ディスク数以上の外部ディスクを生成する場合には、外部ディスク１０５の対応を解除する外部ディスク解除コマンドを実行することで、外部ディスク対応テーブル２０９の保存領域を空けることができる。
【０２０５】
その際、リストアのために、解除した外部ディスク１０５と仮想ディスク１０８の対応関係を保存しておく場合には、管理者がその対応関係を管理する必要があるであろうが、外部ディスク数が多い場合には、管理者にとって管理が負担となり、どの外部ディスク１０５とどの仮想ディスク１０８が対応していたのか把握できなくなってしまう場合がある。
【０２０６】
そのため、この第四実施例では、バックアップ／リストア制御プログラム１０１が、図３５に示した仮想ディスク対応テーブル１２５を用いて、削除した外部ディスク１０５と仮想ディスク１０８との対応関係を管理する。バックアップ／リストア制御プログラム１０１は、外部ディスク解除指示を出すときに、対応関係を仮想ディスク対応テーブル１２５に格納する。バックアップ／リストア制御プログラム１０１は、仮想ディスク対応テーブル１２５の情報を、ディスプレイ（例えば、計算機１００の図示しないディスプレイ）へ出力する仮想ディスク対応テーブル表示コマンドを管理者へ提供する。管理者は、仮想ディスク対応テーブル表示コマンドを実行させることで、仮想ディスクと外部ディスクとの対応関係を表示させることができる。
【０２０７】
図３６は、仮想ディスク対応テーブル１２５の構成例を示した図である。
【０２０８】
仮想ディスク対応テーブル１２５には、対応ＩＤが書かれるフィールド２５０１と、外部ディスクＬＵＮが書かれるフィールド２３０２と、仮想ディスクＬＵＮが書かれるフィールド４０１と、プライマリＬＵＮが書かれるフィールド１１０２と、セカンダリＬＵＮが書かれるフィールド１１０３と、日時が書かれるフィールド２５０２とがある。対応ＩＤとは、仮想ディスク１０８と外部ディスク１０５との対応関係を一意に識別するためのＩＤである。日時は、外部ディスク削除指示を出したときの日時である。
【０２０９】
図３７は、外部ディスク１０５の解除処理の流れの一例を示すフローチャートである。
【０２１０】
ステップ２６０１において、バックアップ／リストア制御プログラム１０１は、新たに割り当てた対応ＩＤと、解除する外部ディスク１０５のＬＵＮと、その外部ディスク１０５と対応関係にあった仮想ディスク１０８のＬＵＮと、その外部ディスク１０５が関連していたプライマリＬＵ及びセカンダリＬＵのそれぞれのＬＵＮと、計算機１００で取得した日時とを、仮想ディスク対応テーブル１２５へ格納する。
【０２１１】
ステップ２６０２において、バックアップ／リストア制御プログラム１０１は、ディスク制御プログラム２０５へ、外部ディスクＬＵＮを含んだ外部ディスク解除コマンドを送信する。外部ディスク解除コマンドを受信したディスク制御プログラム２０５は、そのコマンド中の外部ディスクＬＵＮに対応した情報（対応ＩＤ、外部ディスクＬＵＮ及び仮想ディスクＬＵＮ）を、外部ディスク対応テーブル２０９から削除する。外部ディスク１０５の解除が終了すると、外部ディスクの解除処理は完了する。
【０２１２】
以上、本発明の好適な幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０２１３】
例えば、仮想ディスク１０８は、テープＬＵ１４２にマッピングされず、ディスクＬＵ１２に固定的にマッピングされても良い。換言すれば、複数のディスクＬＵ１４１には、仮想ディスク１０８に固定的にマッピングされているディスクＬＵ１４１と、仮想ディスク１０８に動的にマッピングされるディスクＬＵ１４１とが含まれても良い。これにより、一つの仮想ディスクライブラリ装置１０６で、ディスクキャッシュを利用したテープアクセスと、テープアクセスの発生しないディスクアクセスとの両方を行うことができる。
【０２１４】
また、例えば、ディスクキャッシュに限らず、ランダムアクセスに対応できる種類の記憶領域、例えば、メモリ（例えばフラッシュメモリなど）上に確保された記憶領域が利用されても良い。
【図面の簡単な説明】
【０２１５】
【図１】図１は、本発明の第一実施例に係る計算機システムの構成例を示す。
【図２】図２は、ストレージ仮想化装置１０２のディスクアレイコントローラ１０３の構成例を示した図である。
【図３】図３は、仮想ディスクアレイコントローラ１０７の構成例を示した図である。
【図４】図４は、ＬＵ関係テーブルの一例を示す。
【図５】図５は、仮想ディスク管理テーブルの一例を示す。
【図６】図６は、ＲＡＩＤグループ管理テーブルの一例を示す。
【図７】図７は、ディスクＬＵ管理テーブルの一例を示す。
【図８】図８は、テープグループ管理テーブルの一例を示す。
【図９】図９は、テープＬＵ管理テーブルの一例を示す。
【図１０】図１０は、ステータス管理テーブル1112の一例を示した図である。
【図１１】図１１は、IO管理テーブル1113の一例を示した図である。
【図１２】図１２は、Activate処理の流れの一例を示すフローチャートである。
【図１３】図１３は、前処理の流れの一例を示す。
【図１４】図１４は、対象テープ判定処理の一例を示す。
【図１５】図１５は、仮想ディスク制御プログラム３０６が行うデータアクセス制御処理の一例を示す。
【図１６】図１６は、Inactivate処理の流れの一例を示すフローチャートである。
【図１７】図１７は、後処理の流れの一例を示す。
【図１８】図１８は、バックアップ処理においてバックアップ／リストア制御プログラム１０１が行う処理の流れの一例を示すフローチャートである。
【図１９】図１９は、ディスク制御プログラム２０５のＬＵペア生成処理の流れの一例を示すフローチャートである。
【図２０】図２０は、通常LU１８０ａと外部ディスク１０５ａのペアを示す。
【図２１】図２１は、ディスク制御プログラム２０５のペア分割処理の流れの一例を示すフローチャートである。
【図２２】図２２は、ディスク制御管理テーブル２０６の構成例を示す。
【図２３】図２３は、リストア処理においてバックアップ／リストア制御プログラム１０１が行う処理の流れの一例を示すフローチャートである。
【図２４】図２４は、ディスク制御プログラム２０５のペア再生成処理の一例を示すフローチャートである。
【図２５】図２５は、第二実施例のバックアップ処理において、バックアップ／リストア制御プログラム１０１が実行する処理の流れの一例を示すフローチャートである。
【図２６】図２６は、第二実施例のリストア処理において、バックアップ／リストア制御プログラム１０１が実行する処理の流れの一例を示すフローチャートである。
【図２７】図２７は、ディスク制御プログラム２０５のペア解除処理の流れの一例を示すフローチャートである。
【図２８】図２８は、三以上のＬＵのカスケードの一例を示す。
【図２９】図２９は、図２８のカスケードを表すディスク制御管理テーブル２０６の一例を示す。
【図３０】図３０は、プライマリＬＵが共通である複数のペアの一例を示す。
【図３１】図３１は、本発明の第三実施例に係る計算機システムの構成例を示す。
【図３２】図３２は、削除ペア管理テーブル１２４の構成例を示した図である。
【図３３】図３３は、第三実施例において、バックアップ処理の際に、バックアップ／リストア制御プログラム１０１によって行われる処理の流れの一例を示す。
【図３４】図３４は、外部ディスク対応テーブル２０９の構成例を示す。
【図３５】図３５は、本発明の第四実施例に係る計算機システムの構成例を示す。
【図３６】図３６は、仮想ディスク対応テーブル１２５の構成例を示した図である。
【図３７】図３７は、外部ディスク１０５の解除処理の流れの一例を示すフローチャートである。
【図３８】図３８は、論理ボリュームの割り当てを模式的に示した図である。
【図３９】図３９は、仮想ディスクアレイコントローラ１０７がSeqReadコマンドを受領した場合に行われる処理の流れの一例を示すフローチャートである。
【図４０】図４０は、仮想ディスクアレイコントローラ１０７がSeqWriteコマンドを受領した場合に行われる処理の流れの一例を示すフローチャートである。
【符号の説明】
【０２１６】
１０１…バックアップ／リストア制御プログラム、１０２…ストレージ仮想化装置、１０３…ディスクアレイコントローラ、１０５…外部ディスク、１０６…仮想ディスクライブラリ装置、１０７…仮想ディスクアレイコントローラ、１０８…仮想ディスク、２０５…ディスク制御プログラム、３０４…Activateプログラム、３０５…Inactivateプログラム、３０５…仮想ディスク制御プログラム、３０７…仮想ディスク制御管理テーブル
【図１】
2007305076.tif 000003
【図２】
2007305076.tif 000004
【図３】
2007305076.tif 000005
【図４】
2007305076.tif 000006
【図５】
2007305076.tif 000007
【図６】
2007305076.tif 000008
【図７】
2007305076.tif 000009
【図８】
2007305076.tif 000010
【図９】
2007305076.tif 000011
【図１０】
2007305076.tif 000012
【図１１】
2007305076.tif 000013
【図１２】
2007305076.tif 000014
【図１３】
2007305076.tif 000015
【図１４】
2007305076.tif 000016
【図１５】
2007305076.tif 000017
【図１６】
2007305076.tif 000018
【図１７】
2007305076.tif 000019
【図１８】
2007305076.tif 000020
【図１９】
2007305076.tif 000021
【図２０】
2007305076.tif 000022
【図２１】
2007305076.tif 000023
【図２２】
2007305076.tif 000024
【図２３】
2007305076.tif 000025
【図２４】
2007305076.tif 000026
【図２５】
2007305076.tif 000027
【図２６】
2007305076.tif 000028
【図２７】
2007305076.tif 000029
【図２８】
2007305076.tif 000030
【図２９】
2007305076.tif 000031
【図３０】
2007305076.tif 000032
【図３１】
2007305076.tif 000033
【図３２】
2007305076.tif 000034
【図３３】
2007305076.tif 000035
【図３４】
2007305076.tif 000036
【図３５】
2007305076.tif 000037
【図３６】
2007305076.tif 000038
【図３７】
2007305076.tif 000039
【図３８】
2007305076.tif 000040
【図３９】
2007305076.tif 000041
【図４０】
2007305076.tif 000042