(57)【要約】【課題】  ディスクアレイ・サブシステムにおけるスナップショット動作において、更新データのみを保持するデータ格納システムを提供する。【解決手段】  複製データ記憶領域となるスナップショット複製ボリューム７０２，７０４に対する書き込み要求が発生すると、ディスクアレイ・サブシステム７００内で実データ格納領域として共有される共有ロジカル・ボリューム７０５から、当該要求分の未使用ページを探索し、ページのアドレス変換を行う。アドレス変換結果は、スナップショット複製ボリューム毎に有するディレクトリに保持され、以後当該ページに対するアクセスを行うときは、常に前記ディレクトリを参照し、スナップショット複製ボリューム７０２，７０４のページから共有ロジカル・ボリューム７０５の対応ページへアドレスの変換を行う。【選択図】図１２
2005208950.tif 000002
【特許請求の範囲】
【請求項１】
元データの更新に伴って前記元データを複製データ記憶領域に格納する記憶装置の複製データ格納システムであって、
記憶装置内に仮想的に構築された複製データ記憶領域に書き込むべきデータを格納する実データ格納領域と、前記実データ格納領域において次に使用する記憶領域を連続的な配列で決定するデータ格納先決定手段と、前記複製データ記憶領域のデータが前記実データ格納領域のどこに格納されているかを管理するデータ格納先管理手段とを備えたことを特徴とする記憶装置の複製データ格納システム。
【請求項２】
前記実データ格納領域の使用状況を管理する保持データ管理手段と、前記実データ格納領域の記憶容量を増大させる実データ格納領域増長手段とを備えたことを特徴とする請求項１記載の記憶装置の複製データ格納システム。
【請求項３】
前記実データ格納領域増長手段は、前記実データ格納領域を拡張することによって該実データ格納領域の記憶容量を増大させるように構成されていることを特徴とする請求項２記載の記憶装置の複製データ格納システム。
【請求項４】
前記実データ格納領域増長手段は、前記実データ格納領域に加えて新たな実データ格納領域を前記記憶装置内に生成することによって実データ格納領域の記憶容量を増大させるように構成されていることを特徴とする請求項２記載の記憶装置の複製データ格納システム。
【請求項５】
前記記憶装置内に１以上の前記実データ格納領域を有し、該記憶装置内のすべての複製データ記憶領域のデータを前記１以上の実データ格納領域に格納することを特徴とする請求項１，請求項２，請求項３または請求項４記載の記憶装置の複製データ格納システム。
【請求項６】
記憶装置内にある前記複製データ記憶領域を複数のグループに分け、前記グループ毎に１以上の前記実データ格納領域を設け、さらに前記グループ毎に該グループに属する複製データ記憶領域と前記実データ格納領域との一覧を保持する手段を配備して、該グループ内の複製データ記憶領域のデータを該グループ内の前記１以上の実データ格納領域に格納することを特徴とする請求項１，請求項２，請求項３または請求項４記載の記憶装置の複製データ格納システム。
【請求項７】
前記実データ格納領域に対してアラーム生成閾値を設定し、該実データ格納領域の使用記憶容量がアラーム生成閾値を越えたときに前記実データ格納領域の増大を促すアラームを生成するアラーム生成手段を備えることを特徴とする請求項２，請求項３または請求項４記載の記憶装置の複製データ格納システム。
【請求項８】
前記実データ格納領域にアラーム生成閾値を設定し、該実データ格納領域の使用記憶容量が、該アラーム生成閾値を越えたときに、前記実データ格納領域の増大を促すアラームを生成し、該アラームを検知すると、前記実データ格納領域増長手段を作動することを特徴とする請求項２，請求項３または請求項４記載の記憶装置の複製データ格納システム。
【請求項９】
前記実データ格納領域の使用状況を管理する前記保持データ管理手段が、該実データ格納領域の記憶領域を記憶単位に分割し、前記記憶単位毎にデータの有無を表現するテーブルを含むことを特徴とする請求項２，請求項３，請求項４，請求項５，請求項６，請求項７または請求項８記載の記憶装置の複製データ格納システム。
【請求項１０】
前記実データ格納領域の使用状況を管理する前記保持データ管理手段が、該実データ格納領域の記憶領域を記憶単位に分割し、前記記憶単位毎にデータの有無を表現するテーブルと、複数の前記記憶単位をまとめた記憶単位グループ毎にデータの有無を表現するテーブルと、複数の前記記憶単位グループをまとめて夫々がデータの有無を表現する複数の階層からなるテーブルとを含むことを特徴とする請求項２，請求項３，請求項４，請求項５，請求項６，請求項７または請求項８記載の記憶装置の複製データ格納システム。
【請求項１１】
前記データ格納先管理手段が、複製データ記憶領域の側に実データ格納領域の記憶領域をマッピングすることを特徴とする請求項１，請求項２，請求項３，請求項４，請求項５，請求項６，請求項７，請求項８，請求項９または請求項１０記載の記憶装置の複製データ格納システム。
【請求項１２】
前記データ格納先管理手段が、複製データ記憶領域の側に実データ格納領域の記憶領域をマッピングするテーブルを含み、該テーブルのエントリから、実データ格納領域へのアドレス変換情報を取得することを特徴とする請求項１１記載の記憶装置における複製データ記憶領域のデータ格納システム。
【請求項１３】
前記データ格納先管理手段が、実データ格納領域の側に複製データ記憶領域の記憶領域をマッピングすることを特徴とする請求項１，請求項２，請求項３，請求項４，請求項５，請求項６，請求項７，請求項８，請求項９または請求項１０記載の記憶装置の複製データ格納システム。
【請求項１４】
前記データ格納先管理手段が、実データ格納領域の側に複製データ記憶領域の記憶領域をマッピングするテーブルを含み、該テーブルのエントリから、実データ格納領域へのアドレス変換情報を取得することを特徴とする請求項１３記載の記憶装置の複製データ格納システム。
【請求項１５】
前記実データ格納領域に設定した記憶単位を管理する記憶単位管理手段を設けると共に、前記データ格納先決定手段には、複製データ記憶領域が保持するデータ箇所を取得する対応格納領域管理テーブルとの通信手段と、該複製データ記憶領域に対するリード・コマンド或いはライト・コマンドのＩＯサイズを取得するＩＯ監視手段との通信手段と、前記保持データ管理手段を探索し、実データ格納領域の使用可能な記憶単位を検出する未使用領域探索手段とを備えていることを特徴とする請求項２，請求項３，請求項４，請求項５，請求項６，請求項７，請求項８，請求項９，請求項１０，請求項１１，請求項１２，請求項１３または請求項１４記載の記憶装置の複製データ格納システム。
【請求項１６】
前記未使用領域探索手段は、複製データ記憶領域に対するコマンドのＩＯサイズに応じて実データ格納領域を選択して使用可能な記憶領域を検出するように構成されていることを特徴とする請求項１５記載の記憶装置の複製データ格納システム。
【請求項１７】
前記記憶単位管理手段は、前記実データ格納領域毎に設定した記憶単位を管理するように構成されている請求項１５または請求項１６記載の記憶装置の複製データ格納システム。
【請求項１８】
前記記憶単位管理手段は、前記実データ格納領域を分割した領域毎に設定した記憶単位を管理するように構成されている請求項１５または請求項１６記載の記憶装置の複製データ格納システム。
【請求項１９】
前記実データ格納領域毎にデータを整列し直すデータ整列手段を備えたことを特徴とす
る請求項１，請求項２，請求項３，請求項４，請求項５，請求項６，請求項７，請求項８，請求項９，請求項１０，請求項１１，請求項１２，請求項１３，請求項１４，請求項１５，請求項１６，請求項１７または請求項１８記載の記憶装置の複製データ格納システム。
【請求項２０】
前記データ整列手段は、前記実データ格納領域が保持するデータ箇所が不連続であることを検出するとデータを整列し直すように構成されていることを特徴とする請求項１９記載の記憶装置の複製データ格納システム。
【請求項２１】
記憶装置内に仮想的に構築された複製データ記憶領域のデータを格納するための実データ格納領域を記憶装置内に設け、前記複製データ記憶領域から前記実データ格納領域へデータを複製する際に、前記実データ格納領域において次に使用する記憶領域を連続的な配列で決定すると共に、前記複製データ記憶領域のデータが前記実データ格納領域のどこに格納されているかの対応関係を前記記憶装置内に記憶させて管理することを特徴とする記憶装置の複製データ格納方法。
【請求項２２】
前記実データ格納領域の使用記憶容量を監視して、該使用記憶容量が閾値を越えると前記実データ格納領域の記憶容量を増大させることを特徴とする請求項２１記載の記憶装置の複製データ格納方法。
【請求項２３】
前記実データ格納領域が保持するデータ箇所が不連続であることを検出して前記実データ格納領域内でデータを整列し直すことを特徴とする請求項２１または請求項２２記載の記憶装置の複製データ格納方法。
【請求項２４】
記憶装置内に仮想的に構築された複製データ記憶領域のデータを記憶装置内の実データ格納領域に記憶させる複製データ格納プログラムであって、前記記憶装置内に配備されたマイクロプロセッサを、前記実データ格納領域において次に使用する記憶領域を連続的な配列で決定して前記データを前記実データ格納領域に記憶させるデータ格納先決定手段、および、前記複製データ記憶領域のデータが前記実データ格納領域のどこに格納されているかを管理するためのデータ格納先管理手段として機能させるための複製データ格納プログラム。
【請求項２５】
前記マイクロプロセッサを、更に、前記実データ格納領域の使用記憶容量を監視して該使用記憶容量が閾値を越えると前記実データ格納領域の記憶容量を増大させる実データ格納領域増長手段として機能させることを特徴とする請求項２４記載の複製データ格納プログラム。
【請求項２６】
前記マイクロプロセッサを、更に、前記実データ格納領域が保持するデータ箇所が不連続であることを検出して前記実データ格納領域内でデータを整列し直すデータ整列手段として機能させることを特徴とする請求項２４または請求項２５記載の複製データ格納プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ・サブシステム等の記憶装置におけるデータの格納に関し、特に、スナップショット技術を使用したときの複製データ記憶領域において、記憶容量の有効利用率を向上させ、且つディスク・アクセス性能を維持する複製データ格納システムと複製データ格納方法および複製データ格納プログラムに関する。
【背景技術】
【０００２】
ディスクアレイ・サブシステム等の記憶装置において複製データ記憶領域を構成するボリュームのバックアップを取る場合、ディスクアレイ・サブシステムの内部にバックアップ対象ボリュームを複製し、バックアップ・サーバは複製ボリュームとなる複製データ記憶領域から読み出したデータをテープ・ドライブなどのバックアップ・メディアへ保存する。
ボリュームの複製方法として、古くからバックアップ対象ボリュームの完全な複製を作製する方法が使われているが、この場合ボリュームを複製し終えるまでに、当然、バックアップ対象ボリュームの記憶容量に比例した時間を要することになる。
【０００３】
バックアップ対象ボリュームの利用効率を高める技術としては、複数のボリュームを使い回すことによってバックアップ対象ボリュームの容量に適した複製ボリュームを選択するようにしたものが特許文献１として開示されているが、このものは、ボリュームの複製時間自体を短縮できるものではなく、また、予め複製データ記憶領域として機能する複数の複製ボリュームをバックアップ用として予約しておく必要があり、必要とされる記憶容量が冗長となる欠点があった。
【０００４】
近年、バックアップ・ウィンドウ（バックアップ処理のためのシステム停止時間）の減少傾向がますます顕著になるにつれて、ボリュームの複製にスナップショットあるいはシャドウ・コピーと呼ばれる技術が使われるようになってきた。
【０００５】
ここでいうスナップショットとは、指定された時点におけるスナップショット対象ボリュームの状態を保持するための技術のことであり、例えば、図２８（ａ）に示されるようなデータを記憶したスナップショット対象ボリュームのスナップショットを取ったとすれば、まず、このスナップショット対象ボリュームと同等の記憶容量を有するスナップショット複製ボリュームが図２８（ａ）に示されるようにして記憶装置内に生成される。
そして、スナップショット対象ボリュームにおけるデータ“ＢＢ”の記憶領域にデータ“ＥＥ”を書き込むうとした段階で、更新前のデータ“ＢＢ”が図２８（ｂ）に示されるようにしてスナップショット複製ボリュームの同一アドレスに格納され、このスナップショット複製ボリュームが第１世代のスナップショットとして機能することになる。
ここで、改めてスナップショット対象ボリュームのスナップショットを取ったとすれば、このスナップショット対象ボリュームと同等の記憶容量を有するスナップショット複製ボリュームが図２８（ｂ）に示されるようにして新たに記憶装置内に生成され、このスナップショット複製ボリュームが第２世代のスナップショットとなる。
ここで更にスナップショット対象ボリュームにおけるデータ“ＣＣ”の記憶領域にデータ“ＦＦ”を書き込むうとすれば、第１世代のスナップショットとして機能するスナップショット複製ボリュームの内容を図２８（ｂ）あるいは図２８（ｃ）に示されるようにして保持したまま、更新前のデータ“ＣＣ”が図２８（ｃ）に示されるようにして、第２世代のスナップショットとして機能するスナップショット複製ボリュームの同一アドレスに格納されることになる。
ここでは図２８（ａ）〜図２８（ｃ）を参照して直列方式のスナップショットについて簡単に説明したが、並列方式のスナップショットを適用した場合では、図２８（ｃ）のようにしてスナップショット対象ボリュームにおけるデータ“ＣＣ”の記憶領域にデータ“ＦＦ”を書き込むうとした際に、第２世代のスナップショットに加え第１世代のスナップショットにもデータ“ＣＣ”が格納される。
【０００６】
スナップショット技術を利用したボリューム複製方法では、ディスクアレイ・サブシステムがスナップショット・コマンドを受信した直後に、バックアップ対象ボリュームに対する更新データだけを保持するボリュームを定義するだけでよいので、見かけ上バックアップ対象ボリュームを瞬時に複製することができる。以下、スナップショット技術を使用したボリュームのバックアップにおいて、バックアップ対象となる元データを記憶するボリュームをスナップショット対象ボリューム、バックアップ対象ボリュームの更新データを保持する複製データ記憶領域となるボリュームをスナップショット複製ボリュームと呼ぶことにする。
【０００７】
なお、バックアップ処理におけるスナップショット技術の利用はほんの一例であり、このスナップショット技術は、ディスクアレイ・サブシステムの運用において、その他にも様々な場面で利用されている。
【０００８】
ここで、スナップショット技術を使用した従来のスナップショット複製ボリュームのデータ格納システムについて、その一例を図２９〜図３６を参照して具体的に説明する。
【０００９】
従来のディスクアレイ・サブシステム１００は、ロジカル・ボリューム毎にそのロジカル・ボリュームがスナップショット対象ボリュームなのか、スナップショット複製ボリュームなのか、或いはそれ以外の何らかの属性なのかを判断する手段（ロジカル・ボリューム属性管理テーブル，図３０の２０１）と、ホストがロジカル・ボリュームを指定して発行するリード・コマンドやライト・コマンドを内部的に別のロジカル・ボリュームにアドレス変換する手段（ロジカル・ボリューム変換テーブル，図３０の２０２）と、スナップショット複製ボリュームが前記リード・コマンド或いはライト・コマンドで要求されたデータを保持しているかどうかを判断する手段（保持データ管理テーブル，図３０の２０３）とを有する。
【００１０】
スナップショット複製ボリュームが保持するデータは、ディスクアレイ・サブシステム１００に固有のサイズで管理されているので、ホストからのリード・コマンド或いはライト・コマンドは、ＩＯ監視手段（図３４の４００）によって前述した固有の管理単位に分割され、管理単位毎に処理されることになる。
【００１１】
このようなデータ格納システムを採用するディスクアレイ・サブシステム１００において、ボリュームの複製を作り、そのボリュームに対してリード或いはライトするときの手順を図３１，図３２，図３３に示す。
【００１２】
ボリュームを複製する手順として、先ず最初に、図３１に示されるように、ステップ３ａ００でディスクアレイ・サブシステム内に、スナップショット対象ボリュームと、このスナップショット対象ボリュームと少なくとも同じ記憶容量のスナップショット複製ボリュームとを作製する。
このときの様子を図２９に示す。この例では、ディスクアレイ・サブシステム１００内に、ロジカル・ボリュームＬＶ０とロジカル・ボリュームＬＶ１の二つのロジカル・ボリュームを作製している。
【００１３】
次のステップ３ａ０１で、ロジカル・ボリュームＬＶ０をスナップショット対象ボリュームとし、ロジカル・ボリュームＬＶ１をスナップショット複製ボリュームとするパラメータを持ったスナップショット・コマンドをディスクアレイ・サブシステムが受信すると、ステップ３ａ０２でロジカル・ボリューム属性管理テーブル２０１と、ロジカル・ボリューム変換テーブル２０２と、保持データ管理テーブル２０３とが初期化される。
すなわち、ロジカル・ボリューム属性管理テーブル２０１においてロジカル・ボリュームＬＶ０にスナップショット対象属性を、ロジカル・ボリュームＬＶ１にスナップショット複製属性を設定し、ロジカル・ボリューム変換テーブル２０２においてロジカル・ボリュームＬＶ０に対応する変換後のロジカル・ボリューム番号としてＬＶ１を設定し、ロジカル・ボリュームＬＶ１に対応する変換後のロジカル・ボリューム番号としてＬＶ０を設定し、保持データ管理テーブル２０３のスナップショット複製ボリューム、つまりこの場合はロジカル・ボリュームＬＶ１に、該スナップショット複製ボリュームがデータを保持していないことを示す値０を設定する。このときの各テーブルの状態を図３０に示す。
【００１４】
次に、前述のボリューム複製手順で説明したスナップショット対象ボリュームＬＶ０とスナップショット複製ボリュームＬＶ１とを有するディスクアレイ・サブシステム１００が、ライト・コマンドとリード・コマンドを受信したときの処理手順について説明する。
【００１５】
先ず、ライト・コマンド（図３５の５０５）を受信したときの処理手順について説明する。
ディスクアレイ・サブシステム１００のマイクロプロセッサ（以下、単にＣＰＵと称する）は、図３２に示されるステップ３ｂ００でロジカル・ボリューム属性管理テーブル２０１を参照し、受信したコマンドがスナップショット対象ボリュームへのコマンドであるのか、それともスナップショット複製ボリュームへのコマンドであるのかを判断する。
ステップ３ｂ０１でスナップショット複製ボリュームへのライト・コマンドと判断した場合にはデータを書き込まずに処理を終了しているが、これはスナップショット複製ボリュームがスナップショット・コマンドを受信した時点でのスナップショット対象ボリュームの複製を維持するという運用に従った場合の処理、例えば、バックアップ等の場合の処理であり、その他の運用形態においては、ライト・コマンドの要求通りにスナップショット複製ボリュームへデータを書き込んでも良い。
【００１６】
一方、ステップ３ｂ０１でスナップショット対象ボリュームへのライト・コマンドと判断した場合は、ＣＰＵは、ステップ３ｂ０２でロジカル・ボリューム変換テーブル２０２を参照し、このスナップショット対象ボリュームと対になるスナップショット複製ボリュームを特定する。そして、特定したスナップショット複製ボリュームの書き込み要求アドレスにデータがあるかどうかをステップ３ｂ０３で保持データ管理テーブル２０３から判断し、スナップショット複製ボリュームＬＶ１にデータがあると判断されたときは、ステップ３ｂ０７でスナップショット対象ボリュームＬＶ０へデータを書き込み、処理を終了する。スナップショット対象ボリュームＬＶ１にデータが無いと判断されたときは、ステップ３ｂ０５でスナップショット対象ボリュームＬＶ０の書き込み要求アドレスにある既存データを、スナップショット複製ボリュームＬＶ１の同一アドレスにコピーしてから、ステップ３ｂ０６で保持データ管理テーブル２０３の当該箇所にデータがあることを示す値１を設定し、ステップ３ｂ０７でスナップショット対象ボリュームＬＶ０へデータを書き込み、処理を終了する。
【００１７】
次にリード・コマンド（図３５の５０６）を受信したときの処理手順について説明する。ＣＰＵは、図３３に示されるステップ３ｃ００でロジカル・ボリューム属性管理テーブル２０１を参照し、受信したコマンドがスナップショット対象ボリュームＬＶ０へのコマンドであるのか、それともスナップショット複製ボリュームＬＶ１へのコマンドであるのかを判断する。
ステップ３ｃ０１でスナップショット対象ボリュームＬＶ０へのコマンドと判断した場合、スナップショット対象ボリュームＬＶ０からデータを読み出し、処理を終了する。
【００１８】
一方、ステップ３ｃ０１でスナップショット複製ボリュームＬＶ１へのコマンドと判断した場合、ステップ３ｃ０２で保持データ管理テーブル２０３を参照し、スナップショット複製ボリュームＬＶ１の読み出し要求アドレスにデータがあるかどうかをステップ３ｃ０３で判断する。
スナップショット複製ボリュームＬＶ１にデータがあると判断されたときは、スナップショット複製ボリュームＬＶ１からデータを読み出し、処理を終了する。スナップショット複製ボリュームＬＶ１にデータが無いと判断されたときは、ステップ３ｃ０４でロジカル・ボリューム変換テーブル２０２を参照し、スナップショット複製ボリュームＬＶ１と対となるのがスナップショット対象ボリュームＬＶ０であることを認識する。そして特定したスナップショット対象ボリュームＬＶ０からデータを読み出し、処理を終了する。
【００１９】
【特許文献１】特開２００１−３１８８３３号公報（段落番号００１３〜００１８）
【発明の開示】
【発明が解決しようとする課題】
【００２０】
上述した従来技術における第一の問題点は、記憶容量の利用効率が悪いということである。
その理由は、従来のディスクアレイ・サブシステムにおけるスナップショット複製ボリュームのデータ格納システムは、スナップショット・コマンドを受信した後に発生するスナップショット対象ボリュームに対する更新データのみがスナップショット複製ボリュームにコピーされるにも関わらず、スナップショット対象ボリュームと少なくとも同じ記憶容量のスナップショット複製ボリュームを作製しなければならないためである。
つまり、上述した従来技術では、スナップショット対象ボリュームからスナップショット複製ボリュームへのデータ・コピーは同一アドレスで行われなければならず、従って、スナップショット複製ボリュームは論理的にスナップショット対象ボリュームと同一の構成でなければならないという制限がある。
【００２１】
第二の問題点は、スナップショット複製ボリュームからのデータの読み出し効率が悪いということである。
その理由は、従来のディスクアレイ・サブシステムにおけるスナップショット複製ボリュームのデータ格納システムでは、スナップショット対象ボリュームからスナップショット複製ボリュームへのデータ・コピーが、論理的に同一の構成を有するボリューム間で同一のアドレスをパラメータとして対称的に行われるからである。
従って、スナップショット対象ボリュームからスナップショット複製ボリュームへのデータ・コピーが離散的なアドレスで発生した場合、当然、スナップショット複製ボリュームが保持するデータも離散したものとなり、物理ディスクからのプリフェッチの効果が全く期待できない。
【００２２】
そこで、本発明の目的は、ディスクアレイ・サブシステム等の記憶装置において、スナップショット・コマンドを受信した後のスナップショット対象ボリュームに対する更新データ量に比例した記憶容量を消費する複製ボリュームを作製することができる複製データ格納システム，複製データ格納方法，複製データ格納プログラムを提供することにある。
【課題を解決するための手段】
【００２３】
本発明による記憶装置の複製データ格納システムは、記憶装置内に仮想的に構築された複製データ記憶領域に書き込むべきデータを格納する実データ格納領域と、前記実データ格納領域において次に使用する記憶領域を連続的な配列で決定するデータ格納先決定手段と、前記複製データ記憶領域のデータが前記実データ格納領域のどこに格納されているかを管理するデータ格納先管理手段とを備えたことを特徴とする構成により前記目的を達成した。
【００２４】
以上の構成によれば、元データの更新に際して記憶装置内の複製データ記憶領域に書き込まれるべきデータは、全て、実データ格納領域に格納される。この実データ格納領域に必要とされる記憶容量は、実際に更新されるデータ量に相当する分量であり、元データを記憶するボリュームの記憶容量と同等の記憶容量を必要としていた従来の複製ボリュームに比べ、実質的な複製ボリュームとして機能する実データ格納領域の記憶容量を大幅に軽減することができる。
つまり、本発明における複製データ記憶領域は、記憶装置内に仮想的に構築されるに過ぎず、その実態は、複製データ記憶領域に書き込まれるべきデータが実データ格納領域のどこに格納されているかを管理するデータ格納先管理手段によって構成されており、このデータ格納先管理手段は一種のインデックステーブルであるから、データ格納先管理手段の構築に必要とされる記憶容量は極めて僅かである。
更に、実データ格納領域にデータが書き込まれる際には、次に使用する記憶領域をデータ格納先決定手段が連続的な配列で決定してデータを順次格納していくので、実データ格納領域に不用意な空き領域ができることはなく、実データ格納領域の記憶容量が節約され、プリフェッチによる複製ボリュームからのデータの読み出し効率も改善される。
【００２５】
前記構成に加え、実データ格納領域の使用状況を管理する保持データ管理手段と、実データ格納領域の記憶容量を増大させる実データ格納領域増長手段とを併設することができる。
【００２６】
保持データ管理手段によって実データ格納領域の使用状況を管理し、必要に応じて実データ格納領域増長手段で実データ格納領域の記憶容量を増大させることができるので、実データ格納領域の初期容量を小さめに設定しても、データを確実に実データ格納領域に格納することができるようになる。
【００２７】
より具体的には、この実データ格納領域増長手段として、実データ格納領域それ自体を拡張して記憶容量を増大させる構成を適用することができる。
【００２８】
このような構成は、記憶装置内に実データ格納領域に連続する未使用記憶領域が存在する場合に有効である。
【００２９】
また、実データ格納領域増長手段は、既に存在する実データ格納領域に加えて新たな実データ格納領域を記憶装置内に生成するものであってもよい。
【００３０】
このような構成を適用した場合、実データ格納領域に連続する未使用記憶領域が十分に存在しない場合であっても、記憶装置内に適当な未使用記憶領域さえあれば、この未使用記憶領域に新たな実データ格納領域を追加的に生成して実データ格納領域の記憶容量を増大させることができる。
【００３１】
ここで、記憶装置内に１以上の実データ格納領域を設け、記憶装置内のすべての複製データ記憶領域のデータを１以上の実データ格納領域に格納するようにしてもよい。
【００３２】
前述した通り、複製データ記憶領域に書き込まれるべきデータが実データ格納領域のどこに格納されているかは、データ格納先管理手段によって対応関係を明確に特定されるので、記憶装置内に複数の複製データ記憶領域や実データ格納領域が共存した場合であっても、データの格納や格納領域の特定に問題を生じることはなく、様々なボリューム構成を有するシステムに的確に対処することができる。
【００３３】
例えば、記憶装置内にある複製データ記憶領域を複数のグループに分け、前記グループ毎に１以上の実データ格納領域を設け、さらに前記グループ毎に該グループに属する複製データ記憶領域と実データ格納領域との一覧を保持する手段を配備して、該グループ内の複製データ記憶領域のデータを該グループ内の前記１以上の実データ格納領域に格納するといったことが可能である。
【００３４】
このような構成を適用した場合、複製データ記憶領域と実データ格納領域との一覧を保持する手段は、前述したデータ格納先管理手段の一部として機能し、複数の複製データ記憶領域と複数の実データ格納領域との関連において、複製データ記憶領域に書き込まれるべきデータがどの実データ格納領域のどこに格納されているかを的確に管理することができる。グループ化された複製データ記憶領域全体として必要とされる実データ格納領域の容量は予め想定することが可能であるので、実データ格納領域を配備した物理的な記憶媒体に記憶容量の上限があるような場合において、１グループとする複製データ記憶領域の組み合わせや、このグループに対応する実データ格納領域あるいは其の物理的な記憶媒体の個数や組み合わせを最適化することにより、ハードディスク等を始めとする物理的な記憶媒体を有効に利用することができるようになる。
【００３５】
また、実データ格納領域に対してアラーム生成閾値を設定し、実データ格納領域の使用記憶容量がアラーム生成閾値を越えたときに実データ格納領域の増大を促すアラームを生成するアラーム生成手段を備えるようにしてもよい。
【００３６】
このような構成を適用した場合、実データ格納領域が容量不足を生じる前にアラームが出力されるので、この時点で実データ格納領域増長手段を作動させることにより、実データ格納領域の容量不足を未然に防止することができる。
【００３７】
より具体的には、記憶装置の内部処理で、アラーム生成手段からのアラームを検知して実データ格納領域増長手段を作動させるように構成することが望ましい。
【００３８】
このような構成を適用すれば、実データ格納領域の使用記憶容量がアラーム生成閾値を越えたときに実データ格納領域増長手段が作動して実データ格納領域が自動的に増大されるので、実データ格納領域の容量不足を確実に防止することができる。また、実データ格納領域にデータを格納する段階では、常に、実データ格納領域が十分な記憶容量を保証された状態となっているので、実データ格納領域に直ちにデータを書き込むことが可能となり、実データ格納領域の拡張や生成に伴う待ち時間によって処理速度が遅延する等の問題も解消される。
【００３９】
前述の保持データ管理手段は、具体的には、実データ格納領域の記憶領域を分割した記憶単位毎にデータの有無を表現するテーブルによって其の主要部を構成することができる。
【００４０】
保持データ管理手段はデータの有無のみを表現すればよいので、必要とされる最小の記憶単位は例えば１ビットで済み、保持データ管理手段を配備することによって記憶容量の浪費等の問題が生じることはない。また、保持データ管理手段の参照に必要とされる所要時間も僅かであるので、このテーブルを参照することによって内部処理に遅れが生じる等の弊害も殆どない。
【００４１】
また、保持データ管理手段は、実データ格納領域の記憶領域を分割した記憶単位毎にデータの有無を表現するテーブルと、複数の記憶単位をまとめた記憶単位グループ毎にデータの有無を表現するテーブルと、複数の記憶単位グループをまとめて夫々がデータの有無を表現する複数の階層からなるテーブルによって構成することもできる。
【００４２】
実データ格納領域に格納されるデータのサイズは様々であり、これを実データ格納領域に格納するためには、様々な状況でデータを分割する必要が生じる場合がある。具体的には、例えば、実データ格納領域を設置する物理的な記憶媒体の構造やフォーマット等によって決まる最小の記憶単位（ページ），複数の記憶単位をまとめた記憶単位グループ（セグメント）といった概念があり、このような記憶領域の構成に応じて作成された階層型のテーブルを保持データ管理手段として利用することにより、実データ格納領域における記憶領域のデータの有無の確認、更には、リード，ライトに必要とされる所要時間が大幅に短縮される。例えば、複数のページに跨って１連続のデータが記憶されている場合では、各ページ毎にデータの有無を確認する必要はなく、これらをグループ化したセグメントに対してデータの有無を確認すれば済むし、データのリード，ライトについても１回のアクセスで達成され得る。
【００４３】
前述のデータ格納先管理手段は、複製データ記憶領域の側に実データ格納領域の記憶領域をマッピングすることによって構成され得る。
【００４４】
既に述べたように、実データ格納領域と複製データ記憶領域との関係に物理的な制限はないが、実データ格納領域へのデータの格納に際しては、まず、複製データ記憶領域に対してホスト側からのアクセスが行われることになるので、この際に参照されるデータ格納先管理手段を複製データ記憶領域の側にマッピングしておくことで、処理速度の向上を図れる可能性が高い。
【００４５】
具体的には、データ格納先管理手段は、複製データ記憶領域の側に実データ格納領域の記憶領域をマッピングするテーブルを含み、該テーブルのエントリから、実データ格納領域へのアドレス変換情報を取得するように構成する。
【００４６】
このテーブルは実データを記憶するものではなく、アドレス変換情報のみを記憶するものであるから、前述の保持データ管理手段と同様、記憶容量の浪費等の問題が生じる心配がない。
【００４７】
また、前記とは逆に、実データ格納領域の側に複製データ記憶領域の記憶領域をマッピングしてデータ格納先管理手段を構成することも可能である。
【００４８】
この場合は、データ格納先管理手段は、実データ格納領域の側に複製データ記憶領域の記憶領域をマッピングするテーブルを含み、該テーブルのエントリから、実データ格納領域へのアドレス変換情報を取得するように構成する。
【００４９】
更に、実データ格納領域に設定した記憶単位を管理する記憶単位管理手段を設け、前記データ格納先決定手段に、複製データ記憶領域が保持するデータ箇所を取得する対応格納領域管理テーブルとの通信手段と、該複製データ記憶領域に対するリード・コマンド或いはライト・コマンドのＩＯサイズを取得するＩＯ監視手段との通信手段と、前記保持データ管理手段を探索し、実データ格納領域の使用可能な記憶単位を検出する未使用領域探索手段とを備えた構成を採ることが可能である。
【００５０】
このような構成を適用すれば、データ格納先決定手段は、通信手段を介してＩＯ監視手段からライト・コマンドのＩＯサイズを取得することができ、また、記憶単位管理手段に設定された記憶単位を確認することができるので、データのライトの単位となるＩＯサイズや実データ格納領域における記憶領域の記憶単位に基いて、実データ格納領域において使用可能な記憶領域を未使用領域探索手段を用いて的確に検出してデータを格納することができる。これと同様、データのリードに際しては、通信手段を介してＩＯ監視手段からリード・コマンドのＩＯサイズを取得することができるので、データのリードの単位となるＩＯサイズや記憶単位に基き、対応格納領域管理テーブルを参照して、複製データ記憶領域からリードの対象となるデータを的確に読み出すことができる。
【００５１】
ここで、未使用領域探索手段は、複製データ記憶領域に対するコマンドのＩＯサイズに応じて実データ格納領域を選択して使用可能な記憶単位を検出するように構成することが望ましい。
【００５２】
記憶単位の異なる複数の実データ格納領域を併用した場合、ＩＯサイズに応じた実データ格納領域を選択して使用可能な記憶領域が検出されることとなり、実データ格納領域の記憶容量を最大限に有効に活用できるようになる。
【００５３】
また、前述の記憶単位管理手段は、実データ格納領域毎に設定した記憶単位を管理するように構成することが可能である。
【００５４】
このような構成を適用した場合、記憶単位管理手段には、各々の実データ格納領域で固定的に使用される記憶単位が、実データ格納領域の個数分だけ記憶されることになる。従って、データ格納先決定手段は、データのライトの単位となるＩＯサイズや各実データ格納領域の記憶単位に基いて、ＩＯサイズに適合する実データ格納領域を選択した上で、当該実データ格納領域において使用可能な記憶領域を未使用領域探索手段によって的確に検出してデータを格納することができ、実データ格納領域の記憶容量の有効活用が実現される。
【００５５】
或いは、前述の記憶単位管理手段を、実データ格納領域を分割した領域毎に設定した記憶単位を管理するように構成するようにすることも可能である。
【００５６】
このような構成を適用した場合、記憶単位管理手段には、１つの実データ格納領域で使用可能な記憶単位が何種類か記憶されることになる。従って、データ格納先決定手段は、データのライトの単位となるＩＯサイズに応じた記憶単位を有する記憶領域を未使用領域探索手段により実データ格納領域から的確に検出してデータを格納することができる。この場合、実データ格納領域における記憶領域の大きさは固定的なものではなく、何種類かの大きさのものが混在することになるが、データの格納に際しては、常にＩＯサイズに応じた記憶単位を有する記憶領域が選択されることになるので、実データ格納領域の記憶容量の有効活用が実現される。
【００５７】
更に、前記各構成要素に加え、実データ格納領域毎にデータを整列し直すデータ整列手段を併設することができる。
【００５８】
このような構成を適用すれば、データの削除等で生じるフラグメンテーションを除去して実データ格納領域の記憶容量の一層の有効利用が可能となる。
【００５９】
また、データ整列手段は、実データ格納領域が保持するデータ箇所が不連続であることを検出した時点で自動的にデータを整列し直すように構成することが望ましい。
【００６０】
強度のフラグメンテーションが発生する前にデータを整列し直すことによりデータの再整列に必要とされる所要時間を短縮することができる。
【００６１】
本発明による記憶装置の複製データ格納方法は、記憶装置内に仮想的に構築された複製データ記憶領域のデータを格納するための実データ格納領域を記憶装置内に設け、複製データ記憶領域から実データ格納領域へデータを複製する際に、実データ格納領域において次に使用する記憶領域を連続的な配列で決定すると共に、複製データ記憶領域のデータが実データ格納領域のどこに格納されているかの対応関係を記憶装置内に記憶させて管理することを特徴とする構成により前記と同様の目的を達成した。
【００６２】
以上の構成により、元データの更新に際して記憶装置内の複製データ記憶領域に書き込まれるべきデータは、全て、実データ格納領域に格納される。この実データ格納領域に必要とされる記憶容量は、実際に更新されるデータ量に相当する分量であり、元データを記憶するボリュームの記憶容量と同等の記憶容量を有する複製ボリュームを必要とする従来の複製データ格納方法に比べ、実質的な複製ボリュームとして機能する実データ格納領域の記憶容量を大幅に軽減することができる。
複製データ記憶領域には実データが記憶されないので、仮想的な複製データ記憶領域と実データを記憶する実データ格納領域との対応関係を記憶装置内に記憶させて管理する必要があるが、これに必要とされる記憶容量は極めて僅かであり、記憶容量の浪費の問題は生じない。
また、実データ格納領域にデータを複製する際には、実データ格納領域において次に使用する記憶領域を連続的な配列で決定するようにしているので、実データ格納領域に不用意な空き領域ができることはなく、実データ格納領域の記憶容量が節約され、プリフェッチによる複製ボリュームからのデータの読み出し効率も改善される。
【００６３】
更に、実データ格納領域の使用記憶容量を監視し、この使用記憶容量が閾値を越えた段階で実データ格納領域の記憶容量を増大させる方法としてもよい。
【００６４】
実データ格納領域の使用状況を監視し、必要に応じて実データ格納領域の記憶容量を増大させることができるので、実データ格納領域の初期容量を小さめに設定しても、データを確実に実データ格納領域に格納することができる。
【００６５】
また、実データ格納領域が保持するデータ箇所が不連続であることを検出して実データ格納領域内でデータを整列し直すように構成してもよい。
【００６６】
データの削除等で生じるフラグメンテーションを除去して実データ格納領域の記憶容量の一層の有効利用が可能となる。
【００６７】
本発明による複製データ格納プログラムは、記憶装置内に仮想的に構築された複製データ記憶領域のデータを記憶装置内の実データ格納領域に記憶させる複製データ格納プログラムであり、記憶装置内に配備されたマイクロプロセッサを、実データ格納領域において次に使用する記憶領域を連続的な配列で決定して前記データを実データ格納領域に記憶させるデータ格納先決定手段、および、前記複製データ記憶領域のデータが実データ格納領域のどこに格納されているかを管理するためのデータ格納先管理手段として機能させることを特徴とする構成により前記と同様の目的を達成した。
【００６８】
記憶装置内に配備されたマイクロプロセッサがデータ格納先決定手段として機能し、記憶装置内に仮想的に構築された複製データ記憶領域のデータを記憶装置内の実データ格納領域に記憶させる際に、次に使用すべき記憶領域を連続的な配列で決定してデータを順次格納していく。
このため、実データ格納領域に不用意な空き領域ができることはなく、実データ格納領域の記憶容量が節約され、プリフェッチによる複製ボリュームからのデータの読み出し効率が改善される。実データ格納領域に必要とされる記憶容量は、実際に更新されるデータ量に相当する分量であり、元データを記憶するボリュームの記憶容量と同等の記憶容量を必要としていた従来の複製ボリュームに比べ、実質的な複製ボリュームとして機能する実データ格納領域の記憶容量を大幅に軽減することができる。
また、記憶装置内に配備されたマイクロプロセッサは、データ格納先管理手段としても機能し、複製データ記憶領域に書き込まれるべきデータが実データ格納領域のどこに格納されているかを管理する。管理の必要上、データ格納先管理手段の主要部を構成する一種のインデックステーブルが記憶装置内に生成されるが、このテーブルの構築に必要とされる記憶容量は極めて僅かであり、記憶容量の有効利用を阻害する要因とはならない。
【００６９】
更に、この複製データ格納プログラムによって記憶装置内のマイクロプロセッサを実データ格納領域増長手段として機能させるように構成することもできる。
【００７０】
実データ格納領域の使用状況を監視し、使用記憶容量が閾値を越えた段階で実データ格納領域の記憶容量を増大させることができるので、実データ格納領域の初期容量を小さめに設定しても、データを確実に実データ格納領域に格納することができるようになる。
【００７１】
また、複製データ格納プログラムによって記憶装置内のマイクロプロセッサをデータ整列手段として機能させることができる。
【００７２】
データ格納領域が保持するデータ箇所が不連続であることが検出された段階で実データ格納領域内のデータが整列し直されるので、データの削除等で生じるフラグメンテーションを除去して実データ格納領域の記憶容量の一層の有効利用が可能となる。
【発明の効果】
【００７３】
本発明は、元データを記憶するボリュームで更新されるデータのみをスナップショット複製ボリュームに代わる実データ格納領域に格納するようにしているので、元データを記憶するボリュームの記憶容量と同等の記憶容量を有する複製ボリュームを利用してデータを格納するようにしていた従来の複製データ格納システムや複製データ格納方法に比べ、実質的な複製ボリュームとして機能する実データ格納領域の記憶容量を大幅に軽減することができる。
更に、実データ格納領域にデータが書き込まれる際には、データ格納先決定手段が、次に使用する記憶領域を連続的な配列で決定してデータを順次格納していくので、実データ格納領域に不用意な空き領域ができることはなく、実データ格納領域の記憶容量が節約され、プリフェッチによる複製ボリュームからのデータの読み出し効率も改善される。
また、複製データ記憶領域に書き込まれるべきデータが実データ格納領域のどこに格納されているかは、データ格納先管理手段によって対応関係を明確に特定されるので、記憶装置内に複数の複製データ記憶領域や実データ格納領域が共存した場合であっても、データの格納や格納領域の特定に問題が生じることがなく、様々なボリューム構成を有するシステムに的確に対処することができる。
【発明を実施するための最良の形態】
【００７４】
次に、本発明の複製データ格納システム，複製データ格納方法，複製データ格納プログラムを記憶装置としてのディスクアレイ・サブシステムに適用した場合の実施の形態について図面を参照して詳細に説明する。
【００７５】
図１はディスクアレイ・サブシステム７００のハードウェア上の構成の概略について示した機能ブロック図である。
このディスクアレイ・サブシステム７００は、上位装置としての管理端末１２００やホストコンピュータ１３００等に対して複数の磁気ディスク装置１１００を割り当ててデータのバックアップ等を始めとする処理を行うためのもので、上位装置との間の接続に用いられるインターフェイス制御部１００１と各磁気ディスク装置１１００を接続するためのＲＡＩＤ制御部１００２を備え、インターフェイス制御部１００１とＲＡＩＤ制御部１００２は、制御用メモリ１００３に格納された制御プログラムに基いて作動するマイクロプロセッサ１００４（以下、単にＣＰＵと称する）によってデータの入出力を制御されるようになっている。
【００７６】
制御用メモリ１００３に書き込む制御用プログラムを書き換えることでＣＰＵ１００４を様々な機能実現手段として利用することが可能であり、ここでは、このＣＰＵ１００４を、磁気ディスク装置１１００に生成された実データ格納領域にデータを書き込む際に次に使用する記憶領域を決定するデータ格納先決定手段，実データ格納領域の記憶容量を拡張もしくは追加によって増大させる実データ格納領域増長手段，実データ格納領域の使用記憶容量がアラーム生成閾値を越えたときにアラームを生成するアラーム生成手段，実データ格納領域の使用可能な記憶単位を検出する未使用領域探索手段，実データ格納領域毎にデータを整列し直すデータ整列手段等として利用するよにしている。
また、インターフェイス制御部１００１は、管理端末１２００やホストコンピュータ１３００から磁気ディスク装置１１００に宛てられたリード・コマンドやライト・コマンドのＩＯサイズを取得するＩＯ監視手段を備える。
【００７７】
図１では６台の磁気ディスク装置１１００が接続されている例について示しているが、実際には其の各々が論理的に独立したボリューム、例えば、スナップショット対象ボリュームやスナップショット複製ボリュームあるいは実データ格納領域としての共有ロジカル・ボリューム等といったものを構成するわけではなく、複数の磁気ディスク装置１１００に跨って見かけ上単一のボリュームを設けることも、また、１つの磁気ディスク装置１１００にパーティションを設定して見かけ上複数のボリュームを１つの磁気ディスク装置１１００内に設けることもできる。
ここでは、この種の見かけ上のボリュームのことをロジカル・ボリュームと呼ぶことにする。
【実施例１】
【００７８】
図２は一実施例のディスクアレイ・サブシステム７００を機能的な側面から簡略化して示した機能ブロック図である。
ディスクアレイ・サブシステム７００は、図２に示されるように、概略において、元データを記憶したスナップショット対象ボリューム７０１，７０３と、複製データ記憶領域として機能するスナップショット複製ボリューム７０２，７０４と、スナップショット対象ボリューム７０１，７０３およびスナップショット複製ボリューム７０２，７０４の状態を管理する対応格納領域管理テーブル７０８と、複製データの実際の格納先である実データ格納領域として機能する共有ロジカル・ボリューム７０５と、ディスクアレイ・サブシステム７００に対する入出力データを監視して各部を制御するＩＯ監視手段７０７と、スナップショット複製ボリューム７０２，７０４から共有ロジカル・ボリューム７０５へのデータのマッピングを管理するアドレス変換手段７０６とから構成されている。
ただし、スナップショット対象ボリュームやスナップショット複製ボリュームおよび共有ロジカル・ボリュームの個数に関しては格別な制限はなく、ここでスナップショット対象ボリュームおよびスナップショット複製ボリュームの数を各２、共有ロジカル・ボリュームの数を１としているのは一例に過ぎない。
【００７９】
このうち、対応格納領域管理テーブル７０８の構造については実質的には図３０に示される対応格納領域管理テーブル２００と同様であり、ロジカル・ボリューム属性管理テーブル２０１と、ロジカル・ボリューム変換テーブル２０２と、保持データ管理テーブル２０３とを備える。この対応格納領域管理テーブル７０８は制御用メモリ１００３に収められている。
【００８０】
また、インタフェース制御部１００１のＩＯ監視手段７０７は、図３４に示される従来のＩＯ監視手段４００と同様、ホスト・コマンド採取手段４０１およびホスト・コマンド分割手段４０２と、対応格納領域管理テーブル７０８を初期化するための初期化手段４０３とを含む。
【００８１】
アドレス変換手段７０６は本実施例に固有のもので、図３に示されるように、複数のスナップショット複製ボリュームのデータ、例えば、スナップショット複製ボリューム７０２，７０４のデータがどの共有ロジカル・ボリュームのどのブロックに存在するかを示すテーブル８０１（以下、ディレクトリと称する）と、共有ロジカル・ボリューム保持データ管理テーブル８０２と、データ格納先決定手段８０３とを備える。
アドレス変換手段７０６とデータ格納先決定手段８０３はＣＰＵ１００４によって実現される機能であり、ディレクトリ８０１と共有ロジカル・ボリューム保持データ管理テーブル８０２は制御用メモリ１００３に収められている。
【００８２】
データ格納先決定手段８０３は、図４に示されるように、未使用領域探索手段９０１と、探索する未使用領域の大きさを記憶する記憶部９０２と、アラーム生成閾値を記憶する記憶部９０３と、アラーム生成手段９０４とを含む。
未使用領域探索手段９０１とアラーム生成手段９０４はＣＰＵ１００４を機能実現手段として達成されるもので、記憶部９０２，９０３は制御用メモリ１００３の一部の記憶領域を利用して構成されている。
【００８３】
次に、本実施例のディスクアレイ・サブシステム７００に配備されたＣＰＵ１００４が実施する処理の概略を示した図５〜図８のフローチャートを参照して、本実施例の全体の動作について詳細に説明する。
【００８４】
スナップショット動作を開始するにあたり、ディスクアレイ・サブシステム７００のＣＰＵ１００４は、事前準備として、スナップショット複製ボリュームが保持するデータの実際の格納先となる共有ロジカル・ボリュームを図５の処理に従って作製する。
【００８５】
具体的には、ＣＰＵ１００４は、先ず、ステップ１０ａ００で共有ロジカル・ボリューム７０５を作製する。
共有ロジカル・ボリューム７０５の記憶容量は任意に決めて良いが、複製されるデータ量を予測して、当面必要となる記憶容量とすることが望ましい。
また、複製されたデータ量の増加により共有ロジカル・ボリューム７０５の未使用の領域が規定値を下回ったときには、実データ格納領域増長手段９０５として機能するＣＰＵ１００４の自動処理によって共有ロジカル・ボリュームを拡張もしくは新たに生成することになるが、共有ロジカル・ボリュームの記憶容量の管理を容易にするために、追加する共有ロジカル・ボリュームの記憶容量をディスクアレイ・サブシステム７００内で統一しておくことが望ましい。
【００８６】
ステップ１０ａ００での処理で作製したばかりの共有ロジカル・ボリューム７０５の各ページにはデータが無いので、ＩＯ監視手段７０７の初期化手段４０３により、保持データ管理手段として機能する共有ロジカル・ボリューム保持データ管理テーブル８０２における当該共有ロジカル・ボリュームのボリューム番号の欄を有効データが無いことを示すように初期化する（ステップ１０ａ０１）。
【００８７】
次に、ディスクアレイ・サブシステム７００のＣＰＵ１００４は、図６の処理に従ってスナップショット動作の開始処理を行う。
【００８８】
ＣＰＵ１００４は、先ず、図６におけるステップ１０ｂ００でスナップショット対象ボリュームと少なくとも同じ記憶容量を持つスナップショット複製ボリュームを作製する。
スナップショット対象ボリュームは、この段階で作製しても良いし、既に存在するロジカル・ボリューム、例えば、ロジカル・ボリューム７０１，７０３等をスナップショット対象ボリュームとして指定しても良い。
ここで特徴的なことは、複製データ記憶領域として機能するスナップショット複製ボリュームは見かけ上スナップショット対象ボリュームと同じ記憶容量以上を持っているが、スナップショットのデータの格納先は全て共有ロジカル・ボリューム７０５となるので、実際にはスナップショット複製ボリュームが記憶容量を消費することはない。
つまり、スナップショット複製ボリュームはディスクアレイ・サブシステム７００内に仮想的に構築されたボリュームに過ぎず、実質的な記憶容量を持たない。
【００８９】
次に、ステップ１０ｂ０１でディスクアレイ・サブシステム７００がホストからのコマンドを受信する。ここで、このコマンドがスナップショット・コマンドであるとＩＯ監視手段７０７が判断した場合には、対応格納領域管理テーブル７０８と、データ格納先管理手段の一部であるディレクトリ８０１とが、ＩＯ監視手段７０７の初期化手段４０３によって初期化される。
【００９０】
そして、ステップ１０ｂ０２で、ロジカル・ボリューム属性管理テーブル２０１の当該ロジカル・ボリュームのボリューム番号の欄に、スナップショット対象ボリューム或いはスナップショット複製ボリュームの属性を設定し、ロジカル・ボリューム変換テーブル２０２の当該ボリューム番号の欄に、それぞれペアとなる相手のロジカル・ボリュームのボリューム番号を設定し、保持データ管理テーブル２０３のスナップショット複製ボリュームの欄を、有効データが無いことを示すように初期化し、ディレクトリ８０１の当該スナップショット複製ボリュームの欄を、共有ロジカル・ボリュームのデータが割り当てられていないことを示すように初期化する。
保持データ管理テーブル２０３とディレクトリ８０１とは、データ形式は異なるものの、どちらもスナップショット複製ボリュームの有効データの位置を示しているという点では共通しているので、一つに統合することも可能である。
【００９１】
これ以降、スナップショット複製ボリュームは、スナップショット・コマンドを受信した時点におけるスナップショット対象ボリュームのボリューム・イメージ（いわゆるスナップショットあるいはシャドウ・コピー）を保持する。
【００９２】
次に、ライト・コマンド処理について説明する。ディスクアレイ・サブシステム７００がライト・コマンドを受信し、ここで、ＩＯ監視手段７０７が、スナップショット設定されたボリュームに対するライト・コマンドであると判断すると、図７の処理に従ってライト処理が実行される。
【００９３】
具体的には、先ず、ディスクアレイ・サブシステム７００のＣＰＵ１００４が、ステップ１０ｃ００でロジカル・ボリューム属性管理テーブル２０１を参照し、スナップショット対象ボリュームへのコマンドであるか否かを判断する（ステップ１０ｃ０１）。ここで、スナップショット対象ボリュームへのコマンドであると判断されると、ステップ１０ｃ０２でロジカル・ボリューム変換テーブル２０２を参照し、当該スナップショット対象ボリュームとペアをなすスナップショット複製ボリュームが特定される。
スナップショット複製ボリュームへのコマンドであると判断したときの処理は、バックアップ用途等の通常の運用を考えたときにはスナップショット複製ボリュームへの書き込みは禁止されるので、ボリュームへの書き込みをせずに終了するが、スナップショット複製ボリュームへの書き込みが許可されている場合は、ステップ１０ｃ０６以降の処理へ進む。
【００９４】
スナップショット複製ボリュームが保持するデータは、ディスクアレイ・サブシステム７００に固有の記憶単位で管理されているので、この固有の管理単位毎に受信データを処理できるように、ステップ１０ｃ０３でホスト・コマンド分割手段４０２により、前述のライト・コマンドを分割し、以後の処理を分割した数だけ繰り返し実行することになる。
ここではディスクアレイ・サブシステム７００毎に固有の管理単位をページと呼ぶこととする。
対応格納領域管理テーブル７０８における保持データ管理テーブル２０３やアドレス変換手段７０６におけるディレクトリ８０１および共有ロジカル・ボリューム保持データ管理テーブル８０２は、このページ毎にデータの有無や共有ロジカル・ボリュームへの割り当て状態を管理している。
つまり、保持データ管理手段として機能する共有ロジカル・ボリューム保持データ管理テーブル８０２は、記憶単位となるページ毎にデータの有無を表現するテーブルである。
【００９５】
次いで、ＣＰＵ１００４は、ステップ１０ｃ０４で保持データ管理テーブル２０３を参照し、スナップショット対象ボリューム上の今書き込もうとしているページ位置に対応するスナップショット複製ボリュームの位置にデータの保持を示す値が設定されているかどうかを判断する（ステップ１０ｃ０５）。
スナップショット複製ボリュームにデータが保持されていると判断した場合、つまり、このページのバックアップが既に行われている場合には、スナップショット対象ボリュームにデータを書き込んで処理を終了する。
【００９６】
一方、スナップショット複製ボリュームがデータを保持していないと判断した場合には、未使用領域探索手段９０１が、共有ロジカル・ボリューム保持データ管理テーブル８０２を探索し、記憶部９０２に設定されている探索対象未使用領域の大きさと照らし合わせた上で、現時点でスナップショット対象ボリュームの書き込み対応位置に記憶されているデータの格納先を検索し、共有ロジカル・ボリューム７０５において次に使用する記憶領域を先頭アドレスの側から連続的な配列となるように選択し、この記憶領域に当該データを格納する（ステップ１０ｃ０６）。
【００９７】
ここで、共有ロジカル・ボリューム保持データ管理テーブル８０２を階層構造とすることにより、探索効率をあげ、探索時間を短縮することも可能である。例えば、記憶単位となるページ毎のデータの有無の表現に加え、複数の記憶単位をまとめた記憶単位グループ毎にデータの有無の表現したり、更には、複数の記憶単位グループをまとめてデータの有無を表現したりするテーブルを設けることが可能である。
【００９８】
その後、ＣＰＵ１００４は、ステップ１０ｃ０６で決定した共有ロジカル・ボリューム７０５上のデータ格納位置へ前述したスナップショット対象ボリュームの書き込み対応位置のページをコピーし、保持データ管理手段として機能する共有ロジカル・ボリューム保持データ管理テーブル８０２に当該ページが使用中であることを示す値を設定し、データ格納先管理手段の一部として機能するディレクトリ８０１の当該スナップショット複製ボリュームの当該ページに、データを格納した共有ロジカル・ボリュームのボリューム番号とページ番号を設定し、更に、保持データ管理テーブル２０３における当該スナップショット複製ボリュームの当該ページに、保持データがあることを示す値を設定する（ステップ１０ｃ０７，ステップ１０ｃ０８，ステップ１０ｃ０９）。
【００９９】
本実施例においては、スナップショット複製ボリュームのある側の記憶領域に共有ロジカル・ボリューム番号とページ・アドレスとをマッピングする構成によってディレクトリ８０１を構築しているが、これとは逆に、共有ロジカル・ボリュームのある側の記憶領域にスナップショット複製ボリューム番号とページ・アドレスとをマッピングしてディレクトリ８０１を形成する構造であってもよい。
【０１００】
次いで、ＣＰＵ１００４は、今回の共有ロジカル・ボリュームの使用によって該共有ロジカル・ボリュームの未使用領域が記憶部９０３に設定されているアラーム生成閾値を下回ったかどうかを判定する。
そして、下回った場合には、アラーム生成手段９０４として機能するＣＰＵ１００４が、共有ロジカル・ボリュームの拡張または生成を促すアラームを生成する（ステップ１０ｃ１０，ステップ１０ｃ１１）。
【０１０１】
共有ロジカル・ボリュームの拡張または生成に関わる処理は、ホスト・コマンドからの指令により起動しても良いし、或いは、アラームの生成を検出した時点で、ディスクアレイ・サブシステム７００の内部処理として自動的に起動しても良い。
【０１０２】
この実施例では拡張または生成の何れか一方を選択して共有ロジカル・ボリュームの全体的な記憶領域を増大ざせることができるようになっており、拡張が選択された場合には、実データ格納領域増長手段９０５として機能するＣＰＵ１００４が、対象となる共有ロジカル・ボリュームに連続する記憶領域を当該共有ロジカル・ボリュームの記憶領域として再定義し、また、生成が選択された場合には、実データ格納領域増長手段９０５として機能するＣＰＵ１００４が、設定値以上の大きさを有するディスクの空き領域を検出し、この空き領域に新たに共有ロジカル・ボリュームとして機能する記憶領域を設定することになる。
【０１０３】
このように、共有ロジカル・ボリューム保持データ管理テーブル８０２によって実データ格納領域となる共有ロジカル・ボリュームの使用状況を管理し、必要に応じて実データ格納領域増長手段９０５で共有ロジカル・ボリュームの実質的な記憶容量を増大させることができるので、共有ロジカル・ボリュームの初期容量を小さめに設定しても、データを確実に共有ロジカル・ボリュームに格納することができる。
【０１０４】
そして、最後に、ＣＰＵ１００４は、スナップショット対象ボリュームへホストからの入力データを書き込んで処理を終了する（ステップ１０ｃ１２）。
【０１０５】
前述した通り、コマンドが分割されている場合では、上述の処理が繰り返し実行され、分割された最後のデータの書き込みが終了した時点で処理が終了することになる。
【０１０６】
次に、リード・コマンド処理について説明する。
このリード・コマンド処理は、ディスクアレイ・サブシステム７００がリード・コマンドを受信し、ＩＯ監視手段７０７が、スナップショット設定されたボリュームに対するリード・コマンドであると判断した場合に図８の処理に従って実行される。
【０１０７】
ＣＰＵ１００４は、先ず、ステップ１０ｄ００で、ロジカル・ボリューム属性管理テーブル２０１を参照し、このリード・コマンドがスナップショット対象ボリュームへのコマンドであるかを判断する（ステップ１０ｄ０１）。ここで、スナップショット対象ボリュームへのコマンドである場合には、スナップショット対象ボリュームからデータを読み出して処理を終了する（ステップ１０ｄ０７）。
【０１０８】
一方、スナップショット複製ボリュームへのコマンドであると判断した場合には（ステップ１０ｄ０１）、ライト・コマンドのときと同様にコマンドをページ単位に分割し（ステップ１０ｄ０２）、以後の処理を分割したコマンドの分だけ繰り返し実行する。
【０１０９】
この場合、ＣＰＵ１００４は、先ず、ステップ１０ｄ０３で保持データ管理テーブル２０３を参照し、スナップショット複製ボリューム上の今読み出そうとしているページ位置にデータを保持していることを示す値が設定されているかどうか判断する（ステップ１０ｄ０４）。スナップショット複製ボリュームがデータを保持していると判断した場合は、ディレクトリ８０１の当該スナップショット複製ボリュームの当該ページに設定してある共有ロジカル・ボリュームのボリューム番号とページ番号からデータを読み出す（ステップ１０ｄ０６，ステップ１０ｄ０７）。
【０１１０】
また、スナップショット複製ボリュームがデータを保持していないと判断した場合は、ロジカル・ボリューム変換テーブル２０２を参照し、当該スナップショット複製ボリュームに対応するスナップショット対象ボリュームを特定する（ステップ１０ｄ０５）。そして、スナップショット対象ボリューム上の対応ページからデータを読み出す（ステップ１０ｄ０７）。
【０１１１】
以上に述べた通り、複製データ記憶領域として機能するスナップショット複製ボリュームは実体を持たず、実際には実データ格納領域となる共有ロジカル・ボリュームにすべてのスナップショット複製ボリュームのデータが格納されるように構成されているため、多数のボリュームを複製する場合においても、消費する記憶容量は、スナップショット対象ボリュームとスナップショット複製ボリュームとの差分、つまり、スナップショット・コマンドを受信した後のスナップショット対象ボリュームに対する更新データ量に相当する記憶容量だけで済む。
【０１１２】
次に、具体例を用いて、実施例の動作を説明する。
【０１１３】
ここでは、一例として、第一のスナップショット対象ボリューム７０１と、スナップショット対象ボリューム７０１と同じ記憶容量を持った第一のスナップショット複製ボリューム７０２と、第二のスナップショット対象ボリューム７０３と、スナップショット対象ボリューム７０３と同じ記憶容量を持った第二のスナップショット複製ボリューム７０４と、スナップショット複製ボリューム７０２，７０４のデータを実際に格納する共有ロジカル・ボリューム７０５とを有するディスクアレイ・サブシステム７００において、スナップショット・コマンドを受信した直後の状態を、図９，図１０，図１１に示す。
【０１１４】
先ず、ＣＰＵ１００４は、スナップショット動作を開始するにあたり、実データ格納領域となる共有ロジカル・ボリューム７０５を作製し、共有ロジカル・ボリューム保持データ管理テーブル（図１１の８０２）において、共有ロジカル・ボリューム７０５に対応して割り当てられたボリューム番号ＬＶ０の欄をデータなしを示す値０にクリアする。
ただし、実施例の特徴を際だたせるために、ページ１はすでに使用中であるものと仮定し、１を設定しておく。
【０１１５】
次いで、ＣＰＵ１００４はスナップショット動作を開始して、第一のスナップショット対象ボリューム７０１と同じ容量を持つ第一のスナップショット複製ボリューム７０２、第二のスナップショット対象ボリューム７０３と同じ容量を持つ第二のスナップショット複製ボリューム７０４を作製し、これらのロジカル・ボリュームの番号を各々ＬＶ０，ＬＶ１，ＬＶ２，ＬＶ３と規定する。
【０１１６】
ここで、スナップショット複製ボリュームＬＶ１をスナップショット対象ボリュームＬＶ０のスナップショットとし、且つ、スナップショット複製ボリュームＬＶ３をスナップショット対象ボリュームＬＶ２のスナップショットとするスナップショット実行コマンドを受信すると、ＣＰＵ１００４は、ロジカル・ボリューム属性管理テーブル（図１０の２０１）の各ボリューム番号の欄にそれぞれの属性を設定し、ロジカル・ボリューム変換テーブル（図１０の２０２）の各ボリューム番号の欄にスナップショット動作のペアとなる相手側のボリューム番号を設定し、保持データ管理テーブル（図１０の２０３）のボリューム番号ＬＶ１とボリューム番号ＬＶ３の欄を未使用を示す値０でクリアし、ディレクトリ（図１１の８０１）のボリューム番号ＬＶ１とボリューム番号ＬＶ３の欄に、共有ロジカル・ボリュームが割り当てられていないことを意味するｎｕｌｌを設定する。以上がスナップショットの事前準備である。
【０１１７】
次にスナップショット複製ボリュームへのデータの格納手順について説明する。
【０１１８】
スナップショット複製ボリュームに対するライト・コマンドおよびリード・コマンドは、従来と同様にホスト・コマンド分割手段（図３４の４０２）によってページと呼ぶ記憶単位に分割される。ページ・サイズは、数十から数百ＫＢ程度が望ましく、ここでは仮に３２ＫＢとする。
【０１１９】
今、スナップショット対象ボリュームＬＶ０に対するライト・コマンド（図１２の１４０９）を受信したとすると、ＣＰＵ１００４は、ロジカル・ボリューム属性管理テーブル（図１０の２０１）のボリューム番号ＬＶ０を参照することによって、第一のスナップショット対象ボリュームＬＶ０へのライト・コマンドであることを認識する。
【０１２０】
次に、アドレス変換手段７０６は、ロジカル・ボリューム変換テーブル（図１０の２０２）を参照し、スナップショット対象ボリュームＬＶ０のスナップショット複製ボリュームがスナップショット複製ボリュームＬＶ１であることを認識し、該コマンドの宛先をスナップショット複製ボリュームＬＶ１に変換する。
【０１２１】
ＣＰＵ１００４は、次に、保持データ管理テーブル（図１０の２０３）を参照し、スナップショット複製ボリュームＬＶ１の当該ページに以前に書き込みが発生しているかどうかを判定し、既にデータが書き込まれている場合は、スナップショット対象ボリュームＬＶ０のページ０に、ライト・コマンド（図１２の１４０９）のデータのうち最初の３２ＫＢに相当する“ＡＦ”を書き込み、次のページ１に残りの３２ＫＢに相当する“ＢＧ”を書き込んで、２つに分割されたコマンドに対応する処理を終了する。
【０１２２】
一方、スナップショット複製ボリュームＬＶ１の当該ページにデータが書き込まれていない場合には、データ格納先決定手段（図１１の８０３）によって決定されたデータ格納先に該コマンドの宛先を変換する。この場合、未使用領域探索手段（図４の９０１）は、探索する未使用領域の大きさ（図４の９０２）が示す連続する空き領域を共有ロジカル・ボリュームＬＶ０から探すことになるが、最初に見つけた探索する未使用領域の大きさ（図４の９０２）以上の空き領域であっても良いし、その他のアルゴリズムによって決定される空き領域であっても良い。
【０１２３】
この例では、スナップショット複製ボリュームＬＶ１のページ０が共有ロジカル・ボリュームＬＶ０の最初の空きページであるページ０に変換され、スナップショット複製ボリュームＬＶ１のページ１が共有ロジカル・ボリュームＬＶ０の次の空きページであるページ２に変換され、それぞれのページにスナップショット対象ボリュームＬＶ０のページ０の値“ＡＡ”とスナップショット対象ボリュームＬＶ０のページ１の値“ＢＢ”がコピーされる。
そして、ディレクトリ（図１１の８０１）のボリューム番号ＬＶ１の欄におけるページ０に“共有ロジカル・ボリュームのボリューム番号ＬＶ０とページ０”が設定され、また、同ページ１には“共有ロジカル・ボリュームのボリューム番号ＬＶ０とページ２”が設定されると共に、共有ロジカル・ボリューム保持データ管理テーブル（図１１の８０２）における共有ロジカル・ボリュームのボリューム番号ＬＶ０の欄において、ページ０とページ２の位置に、使用されていることを示す値として１が設定されることになる。
【０１２４】
次に保持データ管理テーブル（図１０の２０３）におけるボリューム番号ＬＶ１の欄において、同様にページ０とページ１に、データを保持していることを示す値１が設定される。
【０１２５】
次いで、ＣＰＵ１００４は、未使用領域探索手段（図４の９０１）が共有ロジカル・ボリュームＬＶ０のページ０とページ２にデータを書き込んだことによって、共有ロジカル・ボリュームＬＶ０の空き領域がアラーム生成閾値を越えたかどうかを判断し、越えていると判断した場合には、アラーム生成手段（図４の９０４）が共有ロジカル・ボリュームの増設を促すアラームを生成する。
【０１２６】
最後にスナップショット対象ボリュームＬＶ０のページ０にデータ“ＡＦ”を書き込み、ページ１にデータ“ＢＧ”を書き込んで、２つに分割されたコマンドに対応する処理を終了する。
【０１２７】
次に、スナップショット対象ボリュームＬＶ２に対するライト・コマンド（図１２の１４１０）を受信したとすると、前述したスナップショット対象ボリュームＬＶ０へのライト・コマンドと同様の処理を経て、スナップショット対象ボリュームＬＶ２のページ１のデータを共有ロジカル・ボリュームＬＶ０の最初の空きページであるページ３にコピーした後、スナップショット対象ボリュームＬＶ２のページ１にデータ“ｂｋ”を書き込む。
前記二つのライト・コマンド（図１２の１４０９と図１２の１４１０）を実行した後の状態を図１２，図１３，図１４に示す。
【０１２８】
このように、複数のスナップショット複製ボリュームＬＶ１，ＬＶ３，・・・に格納すべきデータの全てを共有ロジカル・ボリュームＬＶ０にて統一的に管理する。
【実施例２】
【０１２９】
次に、共有ロジカル・ボリュームに設定した記憶単位を管理するための記憶単位管理手段をアドレス変換手段７０６に併設した実施例について説明する。
【０１３０】
この実施例のアドレス変換手段７０６は、図１５に示されるように、ディレクトリ８０１と、共有ロジカル・ボリューム保持データ管理テーブル８０２と、データ格納先決定手段８０３と、記憶単位管理手段として機能する共有ロジカル・ボリューム・チャンク管理テーブル１７０３とを備える。共有ロジカル・ボリューム・チャンク管理テーブル１７０３は制御用メモリ１００３に収められている。
【０１３１】
また、ＩＯ監視手段７０７は、図１６に示されるように、ホスト・コマンド採取手段４０１と、ＩＯサイズ通知手段１８０２と、対応格納領域管理テーブルの初期化手段４０３と、ホスト・コマンド分割手段４０３とを含む。
【０１３２】
そして、データ格納先決定手段８０３は、図１７に示されるように、未使用領域探索手段９０１と、探索する未使用領域の大きさ決定手段１９０２と、アラーム生成手段９０４と、アラーム生成閾値を記憶する記憶部９０３と、ＩＯ監視手段７０７との通信手段１９０５と、対応格納領域管理テーブル７０８との通信手段１９０６とを含む。
【０１３３】
共有ロジカル・ボリューム・チャンク管理テーブル１７０３やＩＯサイズ通知手段１８０２および通信手段１９０５，１９０６を備える点を除き、実質的な構成に関しては、前述した実施例１のディスクアレイ・サブシステム７００の場合と同等である。
【０１３４】
本実施例では、スナップショット複製ボリュームへの書き込みをディスクアレイ・サブシステム７００に固有の記憶単位では行わず、ライト・コマンドで指定されるＩＯサイズに従って動的に決定される大きさで行うようになっており、この点が、前述の実施例１と相違する。ここでは、動的に決定される書き込みサイズをチャンクと呼ぶこととする。
【０１３５】
また、共有ロジカル・ボリュームはセグメントと呼ぶ管理単位に分割し、セグメント毎に、該セグメントに格納できるチャンク・サイズを設定することによって、ひとつのセグメントに異なるチャンク・サイズの書き込みが行われないようにしている。
【０１３６】
この場合、ホストからのライト・コマンドを受信すると、ＩＯ監視手段７０７が該コマンドのＩＯサイズをＩＯサイズ通知手段（図１６の１８０２）を介してデータ格納先決定手段８０３に通知し、未使用領域の大きさ決定手段（図１７の１９０２）が、通知されたＩＯサイズとディスクアレイ・サブシステム７００に固有の記憶単位（ページサイズ）とからチャンク・サイズを決定し、更に、未使用領域探索手段（図１７の９０１）が、該チャンク・サイズを元に共有ロジカル・ボリュームチャンク管理テーブル（図１５の１７０３）を参照し、適合するセグメントを決定して共有ロジカル・ボリュームの空き領域を検索してデータを格納することになる。
【０１３７】
また、適合するセグメントが見つからない場合は、チャンク・サイズが未設定となっているセグメントに対して、データ格納先管理手段として機能するＣＰＵ１００４が、改めて前述のチャンク・サイズ（決定されたチャンク・サイズ）を設定し、このセグメントにデータを格納する。以後の処理は、前述した実施例１の場合と同様である。
【０１３８】
この実施例では、共有ロジカル・ボリュームをセグメントという単位に分割し、セグメント毎にチャンク・サイズを設定し、ライト・コマンドのＩＯサイズと一致するセグメントにデータを書き込むように構成しているため、ひとつのコマンドで指定されたライト・データが複数のセグメントを跨ぐようにして共有ロジカル・ボリューム上に分散することはなく、不用意なデータの削除さえ行われなければ、アクセス性能の低下を確実に防止することができる。
【０１３９】
次に、具体例を用いて、この実施例の動作を説明する。
【０１４０】
スナップショットの事前準備に関しては前述した実施例１の場合と同様であるので、ここでは、スナップショット複製ボリュームへのデータの格納手順についてのみ説明する。
【０１４１】
本実施例では、スナップショット複製ボリュームへの書き込みサイズを、ライト・コマンドのＩＯサイズに従って動的に決定することになるが、チャンク・サイズ管理を容易にするために、チャンク・サイズは、ディスクアレイ・サブシステム７００に固有の管理単位（ページ）の整数倍とすることが望ましい。
【０１４２】
今、第一のスナップショット対象ボリュームＬＶ０に対するライト・コマンド（図１８の２００９）を受信したとすると、ＩＯ監視手段（図１６の７０７）からデータ格納先決定手段（図１７の８０３）にＩＯサイズが通知され、未使用領域の大きさ決定手段（図１７の１９０２）により、データ“ＡＦ”，“ＢＧ”のチャンク・サイズは２ページ（６４ＫＢ）であると決定される。
【０１４３】
ただし、ロジカル・ボリューム属性管理テーブル（図１０の２０１）のボリューム番号ＬＶ０を参照することによってスナップショット対象ボリュームＬＶ０へのライト・コマンドであることが認識され、ロジカル・ボリューム変換テーブル（図１０の２０２）を参照することによって該コマンドの宛先を第一のスナップショット複製ボリュームＬＶ１に変換し、保持データ管理テーブル（図１０の２０３）を参照することによってスナップショット複製ボリュームＬＶ１の当該ページに以前に書き込みが発生していたかどうかを判定した際に、スナップショット複製ボリュームＬＶ１のページ０に既にデータが書き込まれていた場合においては、チャンク・サイズを１ページ（３２ＫＢ）に調整する。
次に、未使用領域探索手段（図１７の９０１）が共有ロジカル・ボリュームチャンク管理テーブル（図１９の１７０３）を参照することにより、該チャンク・サイズに適合するセグメントを決定あるいは選択する。セグメント・サイズは、管理テーブルの大きさや検索効率を考慮すると、数ＭＢから数ＧＢ程度の大きさとすることが望ましい。
初期状態においては全てのセグメントにおいてチャンク・サイズが未設定であるので、データ格納先管理手段として機能するＣＰＵ１００４が、共有ロジカル・ボリュームＬＶ０の最初のセグメントであるセグメント０をチャンク・サイズが６４ＫＢのデータを書き込むセグメントとして設定する。以後の動作は、前述した実施例１の場合と同様である。
【０１４４】
次に、第二のスナップショット対象ボリュームＬＶ２に対するライト・コマンド（図１８の２０１０）を受信したとすると、前述した第一のスナップショット対象ボリュームＬＶ０へのライト・コマンドと同様の処理を経て、“ｂｋ”のチャンク・サイズが１ページと決定され、共有ロジカル・ボリュームチャンク管理テーブル（図１９の１７０３）の未使用セグメント１を３２ＫＢに設定する。そして、第二のスナップショット対象ボリュームＬＶ２のページ１のデータを共有ロジカル・ボリュームＬＶ０のセグメント１にコピーした後、第二のスナップショット対象ボリュームＬＶ２のページ１に前述のライト・コマンドで受け取ったデータを書き込む。前記二つのライト・コマンド（図１８の２００９と図１８の２０１０）を実行した後の状態を図１８，図１９に示す。
【０１４５】
このように、データ格納先管理手段として機能するＣＰＵ１００４が、ホストが要求するＩＯサイズに応じて共有ロジカル・ボリュームをセグメントという単位に分割し、セグメント毎にチャンク・サイズを設定するので、ホストが要求するＩＯサイズを分割することなく、適合するセグメントにデータを格納することができる。
【０１４６】
この場合、共有ロジカル・ボリューム保持データ管理テーブル８０２において、記憶単位となるページ毎のデータの有無の表現に加え、複数の記憶単位をまとめた記憶単位グループ毎、つまり、セグメント毎にデータの有無を表現することで、検索効率やアクセス速度等の一層の改善が図られる。例えば、セグメントの先頭に位置するページのアドレスをセグメントを代表するアドレスとして利用することが可能である。
【実施例３】
【０１４７】
次に、実データ格納領域毎にデータを整列し直すデータ整列手段を併設した実施例について説明する。
【０１４８】
この実施例のアドレス変換手段７０６は、図２０に示されるように、ディレクトリ８０１と、共有ロジカル・ボリューム保持データ管理テーブル８０２と、データ格納先決定手段８０３と、データ整列手段２２０４とを備える。
【０１４９】
本実施例においては、スナップショット複製ボリュームへの書き込みをディスクアレイ・サブシステム７００に固有の記憶単位では行わず、ライト・コマンドで指定されるＩＯサイズに従って動的に決定されるチャンク単位で行う。
ホストからのライト・コマンドを受信すると、ＩＯ監視手段７０７が該コマンドのＩＯサイズを、ＩＯサイズ通知手段（図１６の１８０２）を介してデータ格納先決定手段８０３に通知する。未使用領域の大きさ決定手段（図２１の１９０２）は、通知されたＩＯサイズとディスクアレイ・サブシステム７００に固有の記憶単位とからチャンク・サイズを決定し、未使用領域探索手段（図２１の９０１）が、該チャンク・サイズを元に共有ロジカル・ボリューム保持データ管理テーブル（図２０の８０２）を参照し、データを格納する共有ロジカル・ボリュームとページを決定する。
【０１５０】
そして、スナップショット複製ボリュームに対するデータの書き込みと、スナップショット複製ボリュームの削除とを繰り返した結果、共有ロジカル・ボリュームの未使用領域が散在することになった場合には、データ整列手段（図２０の２２０４）が、未使用領域が連続するページ・アドレスに配置されるように、共有ロジカル・ボリューム内でデータを整列し直す。以後の処理は、実施例１の場合と同様である。
【０１５１】
この実施例では、コマンド毎に動的に決定されるチャンク単位で共有ロジカル・ボリュームにデータを格納するように構成されているため、ひとつのコマンドで指定されたライト・データが共有ロジカル・ボリューム上に分散することがなく、アクセス性能の低下を防止することができる。
【０１５２】
さらに、スナップショット複製ボリュームの削除等によって共有ロジカル・ボリューム上に未使用領域が散在する状態となった場合には、未使用領域が連続ページ・アドレスに配置されるようにデータを整列し直すように構成されているため、チャンク・サイズ毎にセグメントを用意する必要が無く、共有ロジカル・ボリューム・チャンク管理テーブルを削減することが可能であり、また、記憶容量の利用効率を向上させることができる。
【０１５３】
次に、具体例を用いて、実施例の動作を説明する。
【０１５４】
スナップショットの事前準備に関しては前述した実施例１の場合と同様であるので、ここでは、スナップショット複製ボリュームへのデータの格納手順についてのみ説明する。
【０１５５】
本実施例では、スナップショット複製ボリュームへの書き込みサイズを、ライト・コマンドのＩＯサイズに従って動的に決定することになるが、チャンク・サイズ管理を容易にするために、チャンク・サイズは、ディスクアレイ・サブシステム７００に固有の管理単位の整数倍とすることが望ましい。
【０１５６】
今、第一のスナップショット対象ボリュームＬＶ０に対するライト・コマンド（図２２の２４０９）を受信したとすると、ＩＯ監視手段（図２１の７０７）からデータ格納先決定手段（図２１の８０３）にＩＯサイズが通知され、未使用領域の大きさ決定手段（図２１の１９０２）により、データ“ＡＦ”，“ＢＧ”のチャンク・サイズは２ページ（６４ＫＢ）と決定される。
【０１５７】
ただし、ロジカル・ボリューム属性管理テーブル（図１０の２０１）のボリューム番号ＬＶ０を参照することによってスナップショット対象ボリュームＬＶ０へのライト・コマンドであることが認識され、ロジカル・ボリューム変換テーブル（図１０の２０２）を参照することによって該コマンドの宛先を第一のスナップショット複製ボリュームＬＶ１に変換し、保持データ管理テーブル（図１０の２０３）を参照することによってスナップショット複製ボリュームＬＶ１の当該ページに以前に書き込みが発生していたかどうかを判定した際に、スナップショット複製ボリュームＬＶ１のページ０に既にデータが書き込まれていた場合には、チャンク・サイズを１ページ（３２ＫＢ）に調整する。
【０１５８】
次に、未使用領域探索手段（図２１の９０１）は、共有ロジカル・ボリュームを先頭から検索して最初に見つけたチャンク・サイズ以上の未使用ページ、或いは、チャンク・サイズにもっとも適合する未使用ページ、或いは、その他のアルゴリズムによって決定される未使用ページを、次に使用する共有ロジカル・ボリュームのページ・アドレスとして決定する。
以後の動作は、前述した実施例１の場合と同様であり、スナップショット対象ボリュームＬＶ０のページ０とページ１のデータを共有ロジカル・ボリュームＬＶ０において連続する６４ＫＢ以上の空き領域を有するページ２とページ３にコピーした後、スナップショット対象ボリュームＬＶ０のページ０にデータ“ＡＦ”を、ページ１にデータ“ＢＧ”を書き込む。
【０１５９】
次に、第二のスナップショット対象ボリュームＬＶ２に対するライト・コマンド（図２２の２４１０）を受信したとすると、前述した第一のスナップショット対象ボリュームＬＶ０へのライト・コマンドと同様の処理を経て、“ｂｋ”のチャンク・サイズが１ページ（３２ＫＢ）と決定され、未使用領域探索手段（図２１の９０１）によって共有ロジカル・ボリュームＬＶ０から最初に検索された３２ＫＢの空き領域、つまり、共有ロジカル・ボリュームＬＶ０のページ０へスナップショット対象ボリュームＬＶ２のページ１のデータをコピーした後、スナップショット対象ボリュームＬＶ２のページ１にデータ“ｂｋ”を書き込む。
【０１６０】
次に、データ整列手順２２０４について説明する。スナップショット複製ボリュームの作製と、スナップショット複製ボリュームへの書き込みと、スナップショット複製ボリュームの削除とを繰り返し実行すると、スナップショット複製ボリュームへの書き込みサイズをライト・コマンドのＩＯサイズに従って動的に決定している関係上、共有ロジカル・ボリュームＬＶ０の中に様々な大きさの未使用ページが散在することになり、場合によっては、未使用ページが大量にあるにも関わらず、それらすべてがチャンク・サイズに満たないために、スナップショット複製ボリュームに対する書き込みができないという事態が発生する可能性がある。
【０１６１】
データ整列手段（図２３の２２０４）は、共有ロジカル・ボリューム保持データ管理テーブル（図２３の８０２）を定期的にサーチし、これらの未使用ページが共有ロジカル・ボリューム中に散在しないように、ページの再配置を行う。そして、ページを再配置した場合には、共有ロジカル・ボリューム保持データ管理テーブル（図２３の８０２）の再配置前のページに０を設定し、再配置後のページに１を設定し、ディレクトリ（図２３の８０１）の当該箇所を再配置後の共有ロジカル・ボリューム上のデータを示すページ・アドレスに書き換える。
【０１６２】
ここで、データ整列手段２２０４の具体的な処理動作の一例を図２４〜図２７を参照して具体的に説明する。
【０１６３】
図２４はスナップショット対象ボリューム７０３のスナップショットであるスナップショット複製ボリューム７０４を削除する前後のディスクアレイ・サブシステムの状態を示した概念図である。
この実施例では、既に述べた通り、複製データ記憶領域として機能するスナップショット複製ボリューム７０４に格納すべきデータは最終的に実データ格納領域である共有ロジカル・ボリューム７０５に格納されるようになっているので、スナップショット複製ボリューム７０４を削除するということは、このボリューム７０４のデータを実際に格納している共有ロジカル・ボリューム７０５の対応データが削除されることを意味する。
この例では、図２５のディレクトリ８０１に示されるように、ボリューム番号ＬＶ３を有するスナップショット複製ボリューム７０４のページ１に格納すべきデータは、ボリューム番号ＬＶ０を有する共有ロジカル・ボリューム７０５のページ１に格納されているので、スナップショット複製ボリューム７０４に対する削除指令が出された場合、ＣＰＵ１００４は、図２５のディレクトリ８０１を参照し、共有ロジカル・ボリューム７０５のページ１のデータ“ｂｂ”を削除すると共に、図２５の共有ロジカル・ボリューム保持データ管理テーブル８０２において、共有ロジカル・ボリューム７０５に相当するボリューム番号ＬＶ０のページ１の欄に未使用を示す値０を設定することになる。
【０１６４】
このようして共有ロジカル・ボリューム７０５のページ１のデータ“ｂｂ”か削除されることにより、共有ロジカル・ボリューム７０５のページ１が未使用ページとなる。
ここでデータ整列手段２２０４を起動すると、スナップショット複製ボリューム７０４のページ２以降のデータが１ページ分ずつ先頭側のページにシフトして再配置され、例えば、図２４において共有ロジカル・ボリューム７０５のページ２のデータである“ＢＢ”が図２６に示されるようにして共有ロジカル・ボリューム７０５のページ１に再配置される。
【０１６５】
また、この再配置処理の実行にあわせて、図２７に示される共有ロジカル・ボリューム保持データ管理テーブル８０２において、共有ロジカル・ボリューム７０５に相当するボリューム番号ＬＶ０のページ１の欄に使用中を示す値１が改めて設定され、共有ロジカル・ボリューム７０５内で再配置されたデータに対応する格納先の設定も、図２７のディレクトリ８０１に示されるようにして更新して書き換えられる。
この例では、図２４に示される共有ロジカル・ボリューム７０５のページ２のデータ、つまり、図２５に示されるディレクトリ８０１においてボリューム番号ＬＶ１に相当するスナップショット複製ボリューム７０２のページ１のデータが、共有ロジカル・ボリューム７０５内で１ページ分だけ先頭よりに移動しているので、図２７のディレクトリ８０１において、スナップショット複製ボリューム７０２に相当するボリューム番号ＬＶ１のページ１のデータの格納先が図２５の“ボリューム番号ＬＶ０，ページ２”から図２７の“ボリューム番号ＬＶ０，ページ１”に書き換えられることになる。
【０１６６】
なお、図２７の共有ロジカル・ボリューム保持データ管理テーブル８０２において共有ロジカル・ボリューム７０５に相当するボリューム番号ＬＶ０のページ２の欄に未使用を示す値０が設定されるのは、図２４に示されるように共有ロジカル・ボリューム７０５のページ３が初めから未使用であってボリューム番号ＬＶ０のページ２に配置すべきデータが存在しないからであり、共有ロジカル・ボリューム７０５のページ３以降に予めデータが格納されている場合では、当然、図２７の共有ロジカル・ボリューム保持データ管理テーブル８０２におけるボリューム番号ＬＶ０のページ２の欄には使用中を示す値１が其のまま保持されることになる。
【０１６７】
以上、データ整列手段２２０４によるデータの再配置処理について、最も簡単な例として、実データ格納領域である共有ロジカル・ボリューム７０５内の１ページ分のデータが削除された場合の動作について説明したが、共有ロジカル・ボリューム７０５から複数ページのデータが削除された場合であっても、共有ロジカル・ボリューム７０５のページを先頭からサーチし、空きページが検出される度に上記と全く同様の処理を繰り返し実行して空きページ以降のページをデータの有無に関わりなく全て１ページずつシフトする再配置処理を繰り返せば、共有ロジカル・ボリューム７０５内の全てのデータを再配置して先頭ページ側にデータを纏め、後方側のページを解放して連続する記憶領域を生成することが可能である。
また、実際には、データの再配置に必要とされる処理時間を考慮し、共有ロジカル・ボリューム７０５のページを先頭からサーチして未使用となっているページを一括して検出し、使用中の各ページ毎に当該ページよりも先頭側に位置する空きページの数を求め、先頭側のデータから順に対応する空きページ数の分だけデータをシフトすることができる。
この場合、例えば、ページ０，ページ１，ページ２，ページ３，ページ４，ページ５，・・・の各々が未使用，未使用，使用中，未使用，使用中，使用中，・・・となっていたとすると、使用中のページ２に対応する空きページ数が２，使用中のページ４に対応する空きページ数が３，使用中のページ５に対応する空きページ数が３，・・・となるから、まず、使用中のページ２のデータが２ページ分上位にシフトしてページ０に書き込まれ、その後、使用中のページ４のデータが３ページ分上位にシフトしてページ１に書き込まれ、更に、使用中のページ５のデータが３ページ分上位にシフトしてページ２に書き込まれるといった処理が行われることになる。
【０１６８】
データ整列手段２２０４による整列処理は、ホストからのＩＯ処理を妨げないように、バックグラウンドで実行するようにしてもよい。
バックグラウンドで整列処理を行う場合においては、未使用ページの散在を検出する処理を任意の設定スケジュールで実行し、未使用ページの散在（断片化）が設定限度を超えた段階で、自動的に整列処理を開始させるようにすることもできる。
【産業上の利用可能性】
【０１６９】
本発明は、ディスクアレイ・サブシステムにおけるボリューム・レベルのバックアップ等の用途に利用できる。
【図面の簡単な説明】
【０１７０】
【図１】ディスクアレイ・サブシステムの構成の概略について示した機能ブロック図である。（実施例１）
【図２】本発明を適用した一実施例のディスクアレイ・サブシステムの具体例を示す機能ブロック図である。（実施例１）
【図３】同実施例のアドレス変換手段を示す機能ブロック図である。（実施例１）
【図４】同実施例のデータ格納手段を示す機能ブロック図である。（実施例１）
【図５】同実施例の共有ロジカル・ボリューム作製処理を示すフローチャートである。（実施例１）
【図６】同実施例の事前準備動作を示すフローチャートである。（実施例１）
【図７】同実施例のライト・コマンド処理を示すフローチャートである。（実施例１）
【図８】同実施例のリード・コマンド処理を示すフローチャートである。（実施例１）
【図９】同実施例のスナップショット・コマンド受信直後のディスクアレイ・サブシステムの状態を示す概念図である。（実施例１）
【図１０】同実施例のスナップショット・コマンド受信直後の対応格納領域管理テーブルを示す概念図である。（実施例１）
【図１１】同実施例のスナップショット・コマンド受信直後のアドレス変換手段を示す概念図である。（実施例１）
【図１２】同実施例のスナップショット複製ボリュームへの書き込み後のディスクアレイ・サブシステムの状態を示す概念図である。（実施例１）
【図１３】同実施例のスナップショット複製ボリュームへの書き込み後の対応格納領域管理テーブルを示す概念図である。（実施例１）
【図１４】同実施例のスナップショット複製ボリュームへの書き込み後のアドレス変換手段を示す概念図である。（実施例１）
【図１５】本発明を適用した他の一実施例のアドレス変換手段を示す概念図である。（実施例２）
【図１６】同実施例のＩＯ監視手段を示す機能ブロック図である。（実施例２）
【図１７】同実施例のデータ格納先決定手段を示す機能ブロック図である。（実施例２）
【図１８】同実施例のスナップショット複製ボリュームへの書き込み後のディスクアレイ・サブシステムの状態を示す概念図である。（実施例２）
【図１９】同実施例のスナップショット複製ボリュームへの書き込み後のアドレス変換手段の状態を示す概念図である。（実施例２）
【図２０】本発明を適用した更に別の一実施例のアドレス変換手段を示す機能ブロック図である。（実施例３）
【図２１】同実施例のデータ格納先決定手段を示す機能ブロック図である。（実施例３）
【図２２】同実施例のスナップショット複製ボリュームへの書き込み後のディスクアレイ・サブシステムの状態を示す概念図である。（実施例３）
【図２３】同実施例のスナップショット複製ボリュームへの書き込み後のアドレス変換手段の状態を示す概念図である。（実施例３）
【図２４】共有ロジカル・ボリュームに未使用記憶領域が発生した際のディスクアレイ・サブシステムの状態を示す概念図である。（実施例３）
【図２５】共有ロジカル・ボリュームに未使用記憶領域が発生した際のディレクトリの状態を示す概念図である。（実施例３）
【図２６】共有ロジカル・ボリューム発生した未使用記憶領域を埋めるように共有ロジカル・ボリュームのデータを再配置した際のディスクアレイ・サブシステムの状態を示す概念図である。（実施例３）
【図２７】共有ロジカル・ボリューム発生した未使用記憶領域を埋めるように共有ロジカル・ボリュームのデータを再配置した際のディレクトリの状態を示す概念図である。（実施例３）
【図２８】スナップショットの作用原理について示した概念図である。
【図２９】従来のスナップショット動作の具体例を示す図である（スナップショット複製ボリュームへの書き込み発生前の状態）。
【図３０】従来例におけるスナップショット・コマンド受信直後の対応格納領域管理テーブルの状態を示す概念図である。
【図３１】従来のスナップショット動作の事前準備動作を示すフローチャートである。
【図３２】従来のスナップショット動作のライト・コマンド処理を示すフローチャートである。
【図３３】従来のスナップショット動作のリード・コマンド処理を示すフローチャートである。
【図３４】ＩＯ監視手段の構成の概略を示した機能ブロック図である。
【図３５】従来のスナップショット動作の具体例を示す概念図である（スナップショット複製ボリュームへの書き込み発生後の状態）。
【図３６】従来例におけるスナップショット複製ボリュームへの書き込み発生後の対応格納領域管理テーブルを示す概念図である。
【符号の説明】
【０１７１】
１００  ディスクアレイ・サブシステム（従来例）
２００  対応格納領域管理テーブル
２０１  ロジカル・ボリューム属性管理テーブル
２０２  ロジカル・ボリューム変換テーブル
２０３  保持データ管理テーブル
４００  ＩＯ監視手段
４０１  ホスト・コマンド採取手段
４０２  ホスト・コマンド分割手段
４０３  対応格納領域管理テーブルを初期化するための初期化手段
７００  ディスクアレイ・サブシステム
７０１  スナップショット対象ボリューム
７０２  スナップショット複製ボリューム
７０３  スナップショット対象ボリューム
７０４  スナップショット複製ボリューム
７０５  共有ロジカル・ボリューム（実データ格納領域）
７０６  アドレス変換手段
７０７  ＩＯ監視手段
７０８  対応格納領域管理テーブル
８０１  ディレクトリ（データ格納先管理手段の一部）
８０２  共有ロジカル・ボリューム保持データ管理テーブル（保持データ管理手段）
８０３  データ格納先決定手段
９０１  未使用領域探索手段
９０２  未使用領域の大きさを記憶する記憶部
９０３  アラーム生成閾値を記憶する記憶部
９０４  アラーム生成手段
９０５  実データ格納領域増長手段
１００１  インターフェイス制御部
１００２  ＲＡＩＤ制御部
１００３  制御用メモリ
１００４  マイクロプロセッサ
１１００  磁気ディスク装置
１２００  管理端末
１３００  ホストコンピュータ
１７０３  共有ロジカル・ボリューム・チャンク管理テーブル（記憶単位管理手段）
１８０２  ＩＯサイズ通知手段
１９０２  未使用領域の大きさ決定手段
１９０５  ＩＯ監視手段との通信手段
１９０６  対応格納領域管理テーブルとの通信手段
２２０４  データ整列手段
【図１】
2005208950.tif 000003
【図２】
2005208950.tif 000004
【図３】
2005208950.tif 000005
【図４】
2005208950.tif 000006
【図５】
2005208950.tif 000007
【図６】
2005208950.tif 000008
【図７】
2005208950.tif 000009
【図８】
2005208950.tif 000010
【図９】
2005208950.tif 000011
【図１０】
2005208950.tif 000012
【図１１】
2005208950.tif 000013
【図１２】
2005208950.tif 000014
【図１３】
2005208950.tif 000015
【図１４】
2005208950.tif 000016
【図１５】
2005208950.tif 000017
【図１６】
2005208950.tif 000018
【図１７】
2005208950.tif 000019
【図１８】
2005208950.tif 000020
【図１９】
2005208950.tif 000021
【図２０】
2005208950.tif 000022
【図２１】
2005208950.tif 000023
【図２２】
2005208950.tif 000024
【図２３】
2005208950.tif 000025
【図２４】
2005208950.tif 000026
【図２５】
2005208950.tif 000027
【図２６】
2005208950.tif 000028
【図２７】
2005208950.tif 000029
【図２９】
2005208950.tif 000030
【図３０】
2005208950.tif 000031
【図３１】
2005208950.tif 000032
【図３２】
2005208950.tif 000033
【図３３】
2005208950.tif 000034
【図３４】
2005208950.tif 000035
【図３５】
2005208950.tif 000036
【図３６】
2005208950.tif 000037
【図２８】
2005208950.tif 000038