(57)【特許請求の範囲】
【請求項１】
マスタ・データを記憶するマスタ・ボリュームと、
前記マスタ・データの複製データを記憶する共有プール・ボリュームと、
前記マスタ・ボリューム及び前記共有プール・ボリュームへの書き込みを制御する書込制御手段と、
上位装置からライト・コマンドを受信した場合に、前記マスタ・ボリュームの前記ライト・コマンドで指定されたアドレスに記憶されているデータが予め定められた特定データと一致するか否かをチェックするデータチェック手段とを備え、
前記書込制御手段は、前記データチェック手段が前記特定データと一致すると判断した場合、前記ライト・コマンドに関して前記マスタ・データの複製データを前記共有プール・ボリュームに書き込まないように構成され、
前記特定データは、前記マスタ・ボリュームに記憶されているデータの中から使用頻度に基づいて動的に設定されることを特徴とするデータ複製システム。
【請求項２】
前記マスタ・データの複製データを仮想的に記憶するスナップショット・ボリュームと、
前記マスタ・データの複製データが仮想的に記憶される前記スナップショット・ボリュームのアドレスと、前記マスタ・データの複製データが記憶される前記共有プール・ボリュームのアドレスとの対応関係を格納するディレクトリと、
前記データチェック手段が前記特定データと一致すると判断した場合、前記ディレクトリに、前記スナップショット・ボリュームの前記ライト・コマンドで指定されたアドレスに対応づけて、前記共有プール・ボリュームのアドレスとして認識されない特殊データを登録する手段と、
を更に備える請求項１記載のデータ複製システム。
【請求項３】
マスタ・データを記憶するマスタ・ボリュームと、
前記マスタ・データの複製データを仮想的に記憶するスナップショット・ボリュームと、
前記マスタ・データの複製データを記憶する共有プール・ボリュームと、
前記マスタ・データの複製データが仮想的に記憶される前記スナップショット・ボリュームのアドレスと、前記マスタ・データの複製データが記憶される前記共有プール・ボリュームのアドレスとの対応関係を格納するディレクトリと、
前記ディレクトリに基づいて前記共有プール・ボリュームからの読み出しを制御する読出制御手段とを備え、
前記読出制御手段は、上位装置から前記スナップショット・ボリュームへのリード・コマンドを受信した場合、前記ディレクトリにおいて、前記スナップショット・ボリュームの前記リード・コマンドで指定されたアドレスに、前記マスタ・データの複製データが予め定められた特定データであることを示す特殊データが対応づけられていると、前記特定データを前記上位装置に転送されるように構成され、
前記特定データは、前記マスタ・ボリュームに記憶されているデータの中から使用頻度に基づいて動的に設定されることを特徴とするデータ複製システム。
【請求項４】
データ複製システムのデータ処理方法であって、
前記データ複製システムは、
マスタ・データを記憶するマスタ・ボリュームと、
前記マスタ・データの複製データを記憶する共有プール・ボリュームと、
前記マスタ・ボリューム及び前記共有プール・ボリュームへの書き込みを制御する書込制御手段と、
上位装置からライト・コマンドを受信した場合に、前記マスタ・ボリュームの前記ライト・コマンドで指定されたアドレスに記憶されているデータが予め定められた特定データと一致するか否かをチェックするデータチェック手段とを備えるものであり、
前記データチェック手段が前記特定データと一致すると判断した場合、前記書込制御手段が前記ライト・コマンドに関して前記マスタ・データの複製データを前記共有プール・ボリュームに書き込まないように構成され、
前記特定データは、前記マスタ・ボリュームに記憶されているデータの中から使用頻度に基づいて動的に設定されることを特徴とするデータ処理方法。
【請求項５】
データ複製システムのデータ処理方法であって、
前記データ複製システムは、
マスタ・データを記憶するマスタ・ボリュームと、
前記マスタ・データの複製データを仮想的に記憶するスナップショット・ボリュームと、
前記マスタ・データの複製データを記憶する共有プール・ボリュームと、
前記マスタ・データの複製データが仮想的に記憶される前記スナップショット・ボリュームのアドレスと、前記マスタ・データの複製データが記憶される前記共有プール・ボリュームのアドレスとの対応関係を格納するディレクトリと、
前記ディレクトリに基づいて前記共有プール・ボリュームからの読み出しを制御する読出制御手段とを備えるものであり、
前記読出制御手段は、上位装置から前記スナップショット・ボリュームへのリード・コマンドを受信した場合、前記ディレクトリにおいて、前記スナップショット・ボリュームの前記リード・コマンドで指定されたアドレスに、前記マスタ・データの複製データが予め定められた特定データであることを示す特殊データが対応づけられていると、前記特定データを前記上位装置に転送されるように構成され、
前記特定データは、前記マスタ・ボリュームに記憶されているデータの中から使用頻度に基づいて動的に設定されることを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ・サブシステム等を使用したデータ複製システム及びデータ処理方法に係わり、特に、スナップショット技術を使用してデータの複製を行なうデータ複製システム及びデータ処理方法に関する。
【背景技術】
【０００２】
近年、社会基盤がＩＴ（Information Technology）化されるにつれ、企業、或いは個人が保有するデータ量は急激に増加している。また、電子商取引の普及や査証用データ保管の法制化等により、データ自体の質や価値が高まってきている。このような中で、データ損失という事態が及ぼす影響に関して、広く一般に認識されるようになるとともに、データ損失を未然に防ぐ手段として、データのバックアップ技術に大きな関心が寄せられてきている。
【０００３】
ここで、ディスクアレイ・サブシステムにおいて、データのバックアップ技術として採用されている、ミラーリング方式のバックアップ手順について説明する。先ず、バックアップの対象となるボリューム（マスタ・ボリューム）の静止点を確保するために、マスタ・ボリュームに対してアクセスしている、データベース管理システムなどのアプリケーションを停止する。次に、マスタ・ボリュームと同一容量のボリューム（バックアップ・ボリューム）を作成し、マスタ・ボリュームの全データをバックアップ・ボリュームへコピーする。コピーが完了すると、停止していたアプリケーションを再開する一方、バックアップ・ボリュームからデータを読み出し、テープなどのバックアップ用装置にデータを保存する。
【０００４】
なお、前述の手順では、アプリケーションを停止してから、バックアップ・ボリュームの作成と、マスタ・ボリュームからバックアップ・ボリュームへのデータ・コピーとを実行したが、アプリケーションが動作している最中に、バックアップ・ボリュームを作成し、マスタ・ボリュームからバックアップ・ボリュームへのデータ・コピーを起動しておくことにより、静止点を確保してから、マスタ・ボリュームとバックアップ・ボリュームとの同期を取るまでの時間を短縮する方式も実現されている。
【０００５】
しかし、何れの方式においても、静止点を確保してから、マスタ・ボリュームのデータをバックアップ・ボリュームへ完全にコピーし終えるまでに、データのコピー量に応じた時間を要することになる。また、バックアップ用途以外の、例えばデータ・マイニングなどのために、同一マスタ・ボリュームに対して複数のバックアップ・ボリュームを作成することがよくあるが、その場合、マスタ・ボリュームの数倍のデータ容量を消費することになる。
【０００６】
このようなミラーリング方式の問題を回避するために、最近は、スナップショット方式を採用したデータのバックアップが頻繁に使われるようになってきている（例えば特許文献１参照）。ここで、スナップショット方式を採用した従来のデータ複製システムの構成について、図１、図２、図３を参照して、その一例を説明する。
【０００７】
スナップショット方式を採用したデータ複製システムは、マスタ・ボリューム（図１の１０１）と、マスタ・ボリュームと同一容量で、実際には物理的な容量を持たない仮想的なボリューム（図１の１０２、以下、単にスナップショット・ボリュームと称する。）と、前記スナップショット・ボリュームのデータを格納するボリューム（図１の１０３、以下、単に共有プール・ボリュームと称する。）と、スナップショット・ボリュームへのデータ・アクセスを管理するデータ複製制御手段（図１の１０４）と、複製データの実際の格納先を管理するアドレス変換手段（図１の１０５）を有する。データ複製制御手段（図２の２００）は、“マスタ”や“スナップショット”等の、ボリュームの属性を管理する属性管理テーブル（図２の２０１）と、ボリューム間のスナップショット関係を保持するボリューム対応管理テーブル（図２の２０２）と、マスタ・ボリュームとスナップショット・ボリュームとの差分を管理する差分管理テーブル（図２の２０３）とを有する。差分管理テーブルでは、スナップショット・ボリュームがデータを保持していない場合には値“０”をとり、データを保持している場合には値“１”をとる。アドレス変換手段（図３の３００）は、スナップショット・ボリュームの実際の格納アドレスを保持するディレクトリ（図３の３０１）と、共有プール・ボリュームの使用状況を管理する割当管理テーブル（図３の３０２）とを有する。
【０００８】
次に、図４、図５、図６を参照して、従来のデータ複製システムの動作について説明する。ここでは、ＬＶ（ロジカル・ボリューム）０をマスタ・ボリューム、ＬＶ１をスナップショット・ボリューム、ＬＶ２を共有プール・ボリュームとして使用し、スナップショット・コマンド受信前において、マスタ・ボリュームには（ＡＡ、ＢＢ、ＣＣ、ＤＤ、・・・、ＮＮ）というデータが格納されているものとする。
【０００９】
ボリュームを複製する手順として、先ず、図４に示されるように、ステップ４００でディスクアレイ・サブシステム内に、共有プール・ボリュームが作製され、属性管理テーブル２０１と割当管理テーブル３０２とが初期化される。すなわち、属性管理テーブル２０１においてＬＶ２に共有属性を設定し、割当管理テーブル３０２において共有プール・ボリュームが未使用状態であることを示す値“０”を設定する。次のステップ４０１で、マスタ・ボリュームと、このマスタ・ボリュームと同じ記憶容量のスナップショット・ボリュームとを作製する。
【００１０】
次のステップ４０２で、スナップショット・コマンドをディスクアレイ・サブシステムが受信すると、ステップ４０３で属性管理テーブル２０１と、ボリューム対応管理テーブル２０２と、差分管理テーブル２０３とが初期化される。すなわち、属性管理テーブル２０１においてＬＶ０にマスタ属性を、ＬＶ１にスナップショット属性を設定し、ボリューム対応管理テーブル２０２においてＬＶ０とＬＶ１とがスナップショット関係にあることを示すようにスナップショットのＬＶ０にＬＶ１を設定し、スナップショットのＬＶ１にＬＶ０を設定し、差分管理テーブル２０３のスナップショット・ボリューム、つまりこの場合はＬＶ１に、該スナップショット・ボリュームがデータを保持していないことを示す値“０”を設定し、ディレクトリ３０１において、スナップショット・ボリュームに共有プール・ボリュームの記憶空間が割り当てられていないことを示す値“ｎｕｌｌ”を設定する。
【００１１】
次に、前述のボリューム複製手順で説明したディスクアレイ・サブシステム１００が、ライト・コマンドとリード・コマンドを受信したときの処理手順について説明する。
【００１２】
先ず、ライト・コマンドを受信したときの処理手順について説明する。ディスクアレイ・サブシステム１００のマイクロプロセッサ（以下、単にＣＰＵと称する）は、図５に示されるステップ５００で属性管理テーブル２０１を参照し、受信したコマンドがマスタ・ボリュームへのコマンドであるのか、それともスナップショット・ボリュームへのコマンドであるのかを判断する。ステップ５０１でスナップショット・ボリュームへのライト・コマンドと判断した場合にはデータを書き込まずに処理を終了しているが、これはスナップショット・ボリュームがスナップショット・コマンドを受信した時点でのマスタ・ボリュームの複製を維持するという運用に従った場合の処理、例えば、バックアップ等の場合の処理であり、その他の運用形態においては、ライト・コマンドの要求通りにスナップショット・ボリュームへデータを書き込んでも良い。
【００１３】
一方、ステップ５０１でマスタ・ボリュームへのライト・コマンドと判断した場合は、ＣＰＵは、ステップ５０２でボリューム対応管理テーブル２０２を参照し、このマスタ・ボリュームと対になるスナップショット・ボリュームを特定する。そして、特定したスナップショット・ボリュームの書き込み要求アドレスにデータがあるかどうかをステップ５０３で差分管理テーブル２０３から判断し、スナップショット・ボリュームにデータがあると判断されたときは、ステップ５０９でマスタ・ボリュームへデータを書き込み、処理を終了する。
【００１４】
スナップショット・ボリュームにデータが無いと判断されたときは、ステップ５０５で割当管理テーブル３０２を探索し、共有プール・ボリュームの未使用領域の中から今回使用する領域を決定する。そして、ステップ５０６でマスタ・ボリュームの書き込み要求アドレスにある既存データを、前記共有プール・ボリュームの未使用領域にコピーしてから、ステップ５０７で割当管理テーブル３０２の当該箇所が使用済みであることを示す値“１”を設定し、ディレクトリ３０１の当該箇所に前記未使用領域のアドレスを設定する。そして、ステップ５０８で差分管理テーブル２０３の当該箇所にデータがあることを示す値“１”を設定し、ステップ５０９でマスタ・ボリュームへデータを書き込み、処理を終了する。
【００１５】
スナップショット・コマンド受信後に、マスタ・ボリュームＬＶ１のｐａｇｅ２に対して（ＺＣ）のライト・コマンドが発行された後の各テーブルの状態を、図１、図２、図３に示している。
【００１６】
次にリード・コマンドを受信したときの処理手順について説明する。ＣＰＵは、図６に示されるステップ６００で属性管理テーブル２０１を参照し、受信したコマンドがマスタ・ボリュームへのコマンドであるのか、それともスナップショット・ボリュームへのコマンドであるのかを判断する。ステップ６０１でマスタ・ボリュームへのコマンドと判断した場合、ステップ６０６でマスタ・ボリュームからデータを読み出し、処理を終了する。
【００１７】
一方、ステップ６０１でスナップショット・ボリュームへのコマンドと判断した場合、ステップ６０２で差分管理テーブル２０３を参照し、スナップショット・ボリュームの読み出し要求アドレスにデータがあるかどうかをステップ６０３で判断する。スナップショット・ボリュームにデータがあると判断されたときは、ステップ６０５でディレクトリを参照し、データが格納されている共有プール・ボリューム上のアドレスを取得する。そして、ステップ６０６で共有プール・ボリュームからデータを読み出し、処理を終了する。スナップショット・ボリュームにデータが無いと判断されたときは、ステップ６０４でボリューム対応管理テーブル２０２を参照し、ステップ６０６でスナップショット・ボリュームと対となるマスタ・ボリュームからデータを読み出し、ステップ６０７で読み出したデータをホストに転送して処理を終了する。
【００１８】
また、データのバックアップを行なう際に、ターゲットコンピューティング装置のボリュームのシグネチャと、バックエンドコンピューティング装置のバックアップデータベースに格納されている同じファイルのシグネチャとを比較して、バックアップを行なうか否かの判断を行なうシステムも知られている（例えば特許文献２参照。）。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開２００５−２０８９５０号公報
【特許文献２】特開２００６−２６８８４６号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
前述したように、スナップショット方式のバックアップではマスタ・ボリュームのスナップショットイメージを保持するために、マスタ・ボリュームへの更新に伴って共有プール・ボリュームの空き領域にデータのコピーを行っている。しかし、この時スナップショット方式のバックアップでは、バックアップを行うマスタ・ボリュームの元のデータがどのような値であるかに関係なく共有プール・ボリュームにバックアップを行っている。そのため、マスタ・ボリュームの同じデータを持つ複数の領域に対してデータ更新が発生した場合は、それぞれは同じデータであっても別々のデータとして共有プール・ボリュームにコピーされるため、共有プール・ボリュームの使用効率が低下していた。
【００２１】
本発明の目的は、スナップショット方式を用いてデータのバックアップを行なっているデータ複製システムにおいて、共有プール・ボリュームの使用効率を向上させることにある。
【００２２】
また、本発明の別の目的は、マスタ・ボリュームへのライト・コマンドや、スナップショット・ボリュームへのリード・コマンドの性能改善を行うことにある。
【課題を解決するための手段】
【００２３】
本発明のデータ複製システムは、マスタ・データを記憶するマスタ・ボリュームと、マスタ・データの複製データを記憶する共有プール・ボリュームと、マスタ・ボリューム及び共有プール・ボリュームへの書き込みを制御する書込制御手段と、上位装置からライト・コマンドを受信した場合に、マスタ・ボリュームのライト・コマンドで指定されたアドレスに記憶されているデータが予め定められた特定データと一致するか否かをチェックするデータチェック手段とを備え、書込制御手段は、データチェック手段が特定データと一致すると判断した場合、ライト・コマンドに関してマスタ・データの複製データを共有プール・ボリュームに書き込まないことを特徴とするものである。
【００２４】
また、別の本発明のデータ複製システムは、マスタ・データを記憶するマスタ・ボリュームと、マスタ・データの複製データを仮想的に記憶するスナップショット・ボリュームと、マスタ・データの複製データを記憶する共有プール・ボリュームと、マスタ・データの複製データが仮想的に記憶されるスナップショット・ボリュームのアドレスとマスタ・データの複製データが記憶される共有プール・ボリュームのアドレスとの対応関係を格納するディレクトリと、このディレクトリに基づいて共有プール・ボリュームからの読み出しを制御する読出制御手段とを備え、読出制御手段は、上位装置からスナップショット・ボリュームへのリード・コマンドを受信した場合、ディレクトリにおいて、スナップショット・ボリュームのリード・コマンドで指定されたアドレスに、マスタ・データの複製データが予め定められた特定データであることを示す特殊データが対応づけられていると、特定データを上位装置に転送することを特徴とするものである。
【発明の効果】
【００２５】
本発明は、スナップショット方式を用いてバックアップを行なっているデータ複製システムにおいて、共有プール・ボリュームの使用効率を向上させることができる。
【００２６】
また、別の本発明は、マスタ・ボリュームへのライト・コマンドや、スナップショット・ボリュームへのリード・コマンドの性能改善を行うことができる。
【図面の簡単な説明】
【００２７】
【図１】従来のスナップショット動作の具体例を示す機能ブロック図である。
【図２】従来のデータ複製制御手段を示す機能ブロック図である。
【図３】従来のアドレス変換手段を示す機能ブロック図である。
【図４】従来の複製準備動作を示すフローチャートである。
【図５】従来のライト・コマンド動作を示すフローチャートである。
【図６】従来のリード・コマンド動作を示すフローチャートである。
【図７】本発明の実施の形態におけるディスクアレイ・サブシステムの構成の概略を示す機能ブロック図である。
【図８】本発明の実施の形態におけるスナップショット動作の具体例を示す機能ブロック図である。
【図９】同実施の形態におけるデータ複製制御手段を示すブロック図である。
【図１０】同実施の形態におけるアドレス変換手段を示すブロック図である。
【図１１】同実施の形態における複製準備動作を示すフローチャートである。
【図１２】同実施の形態におけるライト・コマンド動作を示すフローチャートである。
【図１３】同実施の形態におけるリード・コマンド動作を示すフローチャートである。
【発明を実施するための形態】
【００２８】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２９】
以下の実施の形態では、本発明のデータ複製システムを記憶装置としてのディスクアレイ・サブシステムに適用した場合について、図７から図１３を参照して詳細に説明する。図７はディスクアレイ・サブシステム７００のハードウェア構成の概略について示した機能ブロック図である。
【００３０】
図７に示されるように、ディスクアレイ・サブシステム７００は、上位装置としての管理端末７０７及びホストコンピュータ（ホスト）７０６等に対して、複数の磁気ディスク装置７０５ａ〜７０５ｆを割り当ててデータのバックアップ等を始めとする処理を行うためのものであり、上位装置との間の接続に用いられるインタフェース制御部７０２と各磁気ディスク装置７０５ａ〜７０５ｆとを接続するためのＲＡＩＤ制御部７０４を備えている。
【００３１】
また、インタフェース制御部７０２とＲＡＩＤ制御部７０４は、制御用メモリ７０３に格納された制御プログラムに基づいて作動するマイクロプロセッサ（以下、ＣＰＵ７０１と称する。）によってデータの入出力を制御されるようになっている。
【００３２】
制御用メモリ７０３に書き込む制御用プログラムを書き換えることでＣＰＵ７０１を様々な機能実現手段として利用することが可能であり、ここでは、このＣＰＵ７０１を、データの複製や、複製したデータへのアクセスを制御するデータ複製制御手段、複製したデータの格納先を制御するアドレス変換手段、および本発明の特徴となる追い出しデータチェック手段、データ生成手段（図８において図示。）などに利用する。
【００３３】
なお、図７では６台の磁気ディスク装置７０５ａ〜７０５ｆがＲＡＩＤ制御部７０４に接続されている例について示しているが、実際には其の各々が論理的に独立したボリューム、例えば、マスタ・ボリューム、スナップショット・ボリューム、或いは共有プール・ボリューム等といったものを構成するとは限らず、ＲＡＩＤ制御部７０４の制御のもとに、磁気ディスク装置７０５ａ〜７０５ｆのうちの複数の磁気ディスク装置に跨って見かけ上単一のボリュームを設けることも、また、１つの磁気ディスク装置にパーティションを設定して、見かけ上複数のボリュームを１つの磁気ディスク装置内に設けることもできる。
【００３４】
上記追い出しデータチェック手段及びデータ生成手段の詳細は後述するが、これら追い出しデータチェック手段及びデータ生成手段で用いる、共有プール・ボリュームに追い出しを行わないための特定のデータパターン（以後、特定データと称する。）を“００”とし、また、このときにはスナップショット・ボリュームのディレクトリ（後述する。）に共有プール・ボリュームのアドレスではなく、特殊データ“ＦＦＦＦＦＦＦＦ”を書き込むこととする場合で以下の実施の形態を説明する。
【００３５】
図８はディスクアレイ・サブシステム７００の機能的な側面を簡略化して示した機能ブロック図である。
【００３６】
ディスクアレイ・サブシステム８００は、複製元データ（マスタ・データ）を記憶するマスタ・ボリューム８０１及び８０７と、このマスタ・ボリューム８０１及び８０７のそれぞれ複製ボリュームとなり、複製元データを仮想的に記憶するスナップショット・ボリューム８０２及び８０８と、複製データを記憶する共有プール・ボリューム８０３と、マスタ・ボリューム８０１及び８０７からスナップショット・ボリューム８０２及び８０８へのデータ複製を制御するとともに、複製したデータへのアクセスを制御するデータ複製制御手段８０４と、スナップショット・ボリューム８０２及び８０８から共有プール・ボリューム８０３へのデータ記憶のアドレスを管理するアドレス変換手段８０５と、マスタ・ボリューム８０１及び８０７からスナップショット・ボリューム８０２及び８０８へそれぞれデータをコピーする際に当該データをチェックする追い出しデータチェック手段８０６と、特殊データに基づいて特定データを生成するデータ生成手段８０９とを有する。
【００３７】
また、データ複製制御手段８０４は、更に具体的には、書込制御手段及び読出制御手段として機能する。例えば、書込制御手段はマスタ・ボリューム８０１（又は８０７）及び共有プール・ボリュームへ８０３への書き込みを制御し、上位装置からライト・コマンドを受信した場合に、追い出しデータチェック手段８０６がライト・コマンドで指定されたアドレスに記憶されたデータが特定データ“００”と一致すると判断した場合、そのライト・コマンドに関してマスタ・データ８０１（又は８０７）の複製データを共有プール・ボリューム８０３に書き込まないように制御するものである（制御の詳細は図１２参照）。
【００３８】
なお、追い出しデータチェック手段８０６は、具体的には、上位装置からマスタ・ボリューム８０１（又は８０７）にライト・コマンドを受信した場合に、当該マスタ・ボリュームのライト・コマンドで指定されたアドレスに記憶されるデータが予め定められた特定データと一致するか否かをチェックするものである。また、アドレス変換手段８０５は、例えば、マスタ・データの複製データが仮想的に記憶されるスナップショット・ボリューム８０２（又は８０８）のアドレスとマスタ・データの複製データが記憶される共有プール・ボリュームのアドレス８０３との対応関係を格納するディレクトリ１００１（後述する。）に、追い出しデータチェック手段８０６が既述のように、特定データと一致すると判断した場合、スナップショット・ボリューム８０２（又は８０８）のライト・コマンドで指定されたアドレスに対応づけて、共有プール・ボリューム８０３のアドレスとして認識されない特殊データ“ＦＦＦＦＦＦＦＦ”を登録する。
【００３９】
また、読出制御手段は、例えば、ディレクトリ１００１に基づいて共有プール・ボリューム８０３からの読み出しを制御し、上位装置からスナップショット・ボリューム８０２（又は８０８）へのリード・コマンドを受信した場合、ディレクトリ１００１において、スナップショット・ボリューム８０２（又は８０８）のリード・コマンドで指定されたアドレスに、マスタ・データの複製データが予め定められた特定データであることを示す特殊データが対応付けられていると、特定データを上位装置に転送する制御を行なうものである（制御の詳細は図１３参照。）。
【００４０】
なお、マスタ・ボリューム、スナップショット・ボリューム、および共有プール・ボリュームの個数に関して特に制限は無く、この図８において、マスタ・ボリュームおよびスナップショット・ボリュームの数をそれぞれ２つ、共有プール・ボリュームの数を１つとしているのは一例に過ぎない。
【００４１】
また、この図８において、マスタ・ボリューム８０１内のＬＶ（ロジカル・ボリューム）０は“Ｐａｇｅ０”から順に“ＡＡ、ＡＢ、ＡＣ、００、・・・、ＡＮ”というデータを保持している状態、ＬＶ３は“Ｐａｇｅ０”から順に“００、ＢＢ、ＢＧ、ＢＤ、・・・、ＢＮ”のデータを保持している状態でスナップショットを作成し、その後ＬＶ０のｐａｇｅ０に“ＡＥ”、ＬＶ３のｐａｇｅ１に“ＢＥ”、ｐａｇｅ２に“ＢＦ”のデータ更新を行い、さらにその後にＬＶ０のｐａｇｅ３に“ＡＦ”、ＬＶ３のｐａｇｅ０に“ＢＧ”のデータを更新したときの状態を示している。
【００４２】
データ複製制御手段９００は、図９に示されるように、属性管理テーブル９０１と、ボリューム対応管理テーブル９０２と、差分管理テーブル９０３とを有する。
【００４３】
属性管理テーブル９０１は、ボリュームの属性を管理するテーブルであり、ＬＶ番号とそのＬＶの属性を対応させて記憶する。属性の値として、マスタ・ボリュームであることを示す値“マスタ”、スナップショット・ボリュームであることを示す値“スナップショット”、共有プール・ボリュームであることを示す値“共有”のいずれかが設定される。図９に示されるように、例えば、ＬＶ番号“ＬＶ０”には、属性の値として“マスタ”が記憶される。なお、属性が設定されていないＬＶは未使用のＬＶである。
【００４４】
ボリューム対応管理テーブル９０２は、ボリューム間のスナップショット関係を保持するテーブルであり、ＬＶ番号と、そのＬＶとスナップショット関係にあるＬＶを対応させて記憶する。例えば、図９に示されるように、ＬＶ番号“ＬＶ０”には、スナップショット関係にあるＬＶとして“ＬＶ１”が保持される。
【００４５】
差分管理テーブル９０３は、マスタ・ボリュームとスナップショット・ボリュームとの差分を管理するテーブルであり、ページ番号と各ＬＶ番号とから構成されるフィールドが形成されている。差分管理テーブル９０３の各フィールドには、スナップショット・ボリュームのもつデータのイメージが、スナップショット関係にあるマスタ・ボリュームと同じデータであることを示す値“０”、同じデータでないことを示す値“１”、又はスナップショット関係がない場合は“−”が設定される。例えば、図９に示されるように、ページ番号ｐａｇｅ０とＬＶ１で特定されるフィールドには、“１”が設定される。つまり、当該スナップショット・ボリュームは、マスタ・ボリュームとデータのイメージが同じでないことを示している。また、ページ番号ｐａｇｅ１とＬＶ１で特定されるフィールドには、“０”が設定されている。つまり、当該スナップショット・ボリュームは、マスタ・ボリュームとデータのイメージが同じであることを示している。
【００４６】
アドレス変換手段１０００は、図１０に示されるように、ディレクトリ１００１と、割当管理テーブル１００２とを有する。ここで、ディレクトリ１００１はアドレス変換手段１０００に含まれているが、ディレクトリ１００１はＬＶ（ロジカル・ボリューム）のなかにデータとして記録されていても良い。
【００４７】
ディレクトリ１００１は、スナップショット・ボリュームの実データの格納先のアドレス等を保持するものであり、ページ番号と各ＬＶ番号とから構成されるフィールドが形成されている。ディレクトリ１００１の各フィールドには、スナップショット・ボリュームの実データの格納先のアドレスの値、共有プール・ボリューム８０３の割り当てが無いことを示す値“ｎｕｌｌ”、又は、既述の特殊データ“ＦＦＦＦＦＦＦＦ”が設定される。図１０に示されるように、例えば、ＬＶ１のページ番号ｐａｇｅ０には対応する実アドレスとして“ＬＶ２，ｐａｇｅ０”が設定され、ＬＶ４のページ番号ｐａｇｅ０には特殊データ“ＦＦＦＦＦＦＦＦ”が設定されている。
【００４８】
割当て管理テーブル１００２は、共有プール・ボリューム８０３の使用状況を管理するテーブルであり、ページ番号と対応するＬＶが使用状態であるか未使用状態であるかが記憶される。ＬＶが使用状態にある場合には値“１”、未使用状態にあるときは値“０”がページ番号毎に記憶される。図１０に示されるように、例えば、ページ番号ｐａｇｅ０には“１”が設定される。これは、ＬＶ２のｐａｇｅ０の領域は、使用状態にあることを示している。また、ページ番号ｐａｇｅ３には“０”が設定される。これは、ＬＶ２のｐａｇｅ３の領域は、未使用状態にあることを示している。
【００４９】
次に、ディスクアレイ・サブシステム８００の動作について、図１１から図１３のフローチャートを参照しながら詳細に説明する。ここでは、特にＬＶ０とＬＶ１とにスナップショット関係を持たせる場合で説明する。なお、ＬＶ３とＬＶ４との間のスナップショット関係を持たせる場合については、ＬＶ０とＬＶ１の場合と実質的に同様であるため説明を省略する。
【００５０】
先ず、スナップショット動作の事前準備として、図１１に示されるように、ステップ１１００においてディスクアレイ・サブシステム８００内に、共有プール・ボリューム８０３が作製され、属性管理テーブル９０１と割当管理テーブル１００２とが初期化される。すなわち、データ複製制御手段８０４は属性管理テーブル９０１において、ＬＶ２に属性として“共有”を設定し、アドレス変換手段８０５は割当管理テーブル１００２において共有プール・ボリューム８０３が未使用状態であることを示す値“０”をＬＶ２の各ページに設定する。なお、共有プール・ボリューム８０３の記憶容量は任意に決めてよいが、複数のスナップショット・ボリュームのデータ格納先になることを考慮し、当面必要となるデータ量を見積もった上で共有プール・ボリューム８０３を作製することが望ましい。
【００５１】
次のステップ１１０１で、データ複製制御手段８０４はマスタ・ボリューム８０１と、このマスタ・ボリューム８０１と同じ記憶容量のスナップショット・ボリューム８０２とを作製する。複製データ記憶領域として機能するスナップショット・ボリューム８０２は、見かけ上マスタ・ボリューム８０２と同じ記憶容量を持っているが、スナップショット・ボリューム８０２の実際のデータ格納先は共有プール・ボリューム８０３になるので、スナップショット・ボリューム８０２自身が記憶領域を消費することはない。つまり、スナップショット・ボリューム８０２はディスクアレイ・サブシステム８００内に仮想的に構築されたボリュームに過ぎず、実質的な記憶容量を持たない。また、マスタ・ボリューム８０１はこの段階で作製しても良いし、既に存在するボリュームを指定しても良い。既に存在するＬＶを指定するときは、スナップショット関係を持たないＬＶを指定しても良いし、既にスナップショット関係にあるマスタ・ボリュームに対して、さらにスナップショット・ボリュームを関連付けても良い。
【００５２】
次のステップ１１０２でスナップショット・コマンドを受信すると、次のステップ１１０３において、属性管理テーブル９０１、ボリューム対応管理テーブル９０２、差分管理テーブル９０３及びディレクトリ１００１が初期化される。すなわち、データ複製制御手段８０４は属性管理テーブル９０１において、ＬＶ０に属性“マスタ”、ＬＶ１に属性“スナップショット”を設定し、ボリューム対応管理テーブル９０２において、ＬＶ０とＬＶ１とがスナップショットの関係にあることを示すように、ＬＶ０に“ＬＶ１”を設定し、ＬＶ１に“ＬＶ０”を設定する。さらにデータ複製制御手段８０４は、差分管理テーブル９０３において、スナップショット・ボリューム８０２のもつデータのイメージが、マスタ・ボリューム８０１と同じであることを示す値“０”を各ページに設定する。そして、アドレス変換手段８０５は、ディレクトリ１００１において、スナップショット・ボリューム８０２（ＬＶ１）の各フィールドを共有プール・ボリューム８０３の割り当てが無いことを示す値“ｎｕｌｌ”で初期化する。
【００５３】
これ以降、スナップショット・ボリューム８０２及び８０８は、スナップショット・コマンドを受信した時点におけるマスタ・ボリューム８０１及び８０７のボリューム・イメージを保持する。
【００５４】
次に、スナップショット・コマンドを受信した後に発生したマスタ・ボリューム８０１又は８０７へのライト・コマンド処理について、図１２に示すフローチャートを参照しながら説明する。なお、いずれのマスタ・ボリュームに対する処理も実質的に同様な処理であるため、以下ではマスタ・ボリューム８０１へのライト・コマンド処理の場合で説明する。
【００５５】
先ず、データ複製制御手段８０４はステップ１２００において、属性管理テーブル９０１を参照し、ステップ１２０１において、マスタ・ボリューム８０１へのライト・コマンドであるかを判断する。
【００５６】
マスタ・ボリューム８０１へのライト・コマンドであると判断した場合は（ステップ１２０１：ＹＥＳ）、データ複製制御手段８０４はステップ１２０２においてボリューム対応管理テーブル１００２を参照し、マスタ・ボリューム８０１と対をなすスナップショット・ボリュームを特定する。
【００５７】
次に、データ複製制御手段８０４はステップ１２０３において、差分管理テーブル９０３を参照し、ステップ１２０４において、前記特定したスナップショット・ボリュームがデータを保持しているか判断する。データ複製制御手段８０４は当該スナップショット・ボリュームがデータを保持していると判断した場合は（ステップ１２０４：ＹＥＳ）、ライト・コマンド発行時のマスタ・ボリュームのデータはスナップショット・ボリュームが保持しているボリューム・イメージとは無関係のデータであり、共有プール・ボリューム８０３への複製は不要なので、ステップ１２１０において、マスタ・ボリューム８０１の当該ページにデータを書き込み、ライト・コマンドを終了する。
【００５８】
一方、ステップ１２０４においてデータ複製制御手段８０４がスナップショット・ボリュームはデータを保持していないと判断した場合は（ステップ１２０４：ＮＯ）、ライト・コマンドを受信したマスタ・ボリューム８０１のデータを共有プール・ボリューム８０３にコピーすることになるが、それに先立ちステップ１２０５で当該マスタ・ボリューム８０１のデータが特定データである“００”であるか調べる。このデータが“００”であるか否かの確認は、追い出しデータチェック手段８０６により行なわれる。
【００５９】
ここで追い出しデータチェック手段８０６がマスタ・ボリューム８０１のデータが“００”で無いと判断した場合（ステップ１２０５：ＮＯ）、データ複製制御手段８０４は、前記特定したスナップショット・ボリュームのボリューム・イメージを維持するために、前記ライト・コマンドを受信したマスタ・ボリューム８０１のデータを共有プール・ボリューム８０３にコピーする処理を行う。
【００６０】
ステップ１２０６において、アドレス変換手段８０５は割当管理テーブル１００２を探索し、共有プール・ボリューム８０３の未使用領域の中から今回使用する領域を決定する。そして、ステップ１２０７において、データ複製制御手段８０４は当該マスタ・ボリューム８０１の当該ページにある既存データを、共有プール・ボリューム８０３の未使用領域にコピーを行い、ステップ１２０８において、アドレス変換手段８０５は割当管理テーブル１００２の当該領域が使用済みであることを示す値“１”を設定する。
【００６１】
ステップ１２０９において、アドレス変換手段８０５はディレクトリ１００１の当該箇所に今回割り当てた共有プール・ボリューム８０３のアドレスを設定し、データ複製制御手段８０４は差分管理テーブル９０３の当該箇所にデータがあることを示す値“１”を設定する。当該マスタ・ボリューム８０１のデータを共有プール・ボリューム８０３に退避した後に、ステップ１２１０において、当該マスタ・ボリューム８０１にデータを書き込み、処理を終える。
【００６２】
なお、ステップ１２０５において、追い出しデータチェック手段８０６がマスタ・ボリューム８０１のデータが特定データ“００”であると判断した場合は（ステップ１２０５：ＹＥＳ）、データ複製制御手段８０４は、当該マスタ・ボリューム８０１のデータを共有プール・ボリューム８０３にコピーせずに、ステップ１２０９においてアドレス変換手段８０５は特殊データであることを示す値“ＦＦＦＦＦＦＦＦ”をディレクトリ１００１に書き込むと共に、データ複製制御手段８０４は差分管理テーブル９０３の当該領域にデータがあることを示す値“１”を設定する。そして、データ複製制御手段８０４は、ステップ１２１０において、マスタ・ボリューム８０１にデータを書き込み、処理を終える。
【００６３】
次に、スナップショット・コマンドを受信した後に発生したリード・コマンド処理について、図１３に示すフローチャートを参照しながら説明する。なお、マスタ・ボリューム８０１とスナップショット関係にあるスナップショット・ボリューム８０２に対するリード・コマンドの場合で説明する。
【００６４】
まず、ステップ１３００において、データ複製制御手段８０４は属性管理テーブル９０１を参照し、ステップ１３０１において、受信したコマンドがマスタ・ボリューム８０１へのリード・コマンドであるのか、それともスナップショット・ボリューム８０２へのリード・コマンドであるのかを判断する。
【００６５】
ステップ１３０１において、データ複製制御手段８０４はスナップショット・ボリューム８０２へのコマンドでないと判断した場合は（ステップ１３０１：ＮＯ）、ステップ１３０７において、マスタ・ボリューム８０１の対応するＬＶからデータを読み出し、ステップ１３０９において、読み出したデータをホスト７０６に転送して処理を終了する。
【００６６】
一方、ステップ１３０１において、スナップショット・ボリューム８０２へのコマンドであると判断した場合（ステップ１３０１：ＹＥＳ）、ステップ１３０３において、データ複製制御手段８０４はステップ１３０２において、差分管理テーブル９０３を参照し、当該スナップショット・ボリューム８０２の読み出し要求アドレス（ページ番号）に共有プール・ボリューム８０３に追い出されたデータがあるかどうかを判断する。この判断は、具体的には、差分管理テーブル９０３のアドレス（ページ番号）に、“１”が設定されているか否かにより判断される。
【００６７】
ステップ１３０３において、当該スナップショット・ボリューム８０２に追い出されたデータがあると判断した場合は（ステップ１３０３：ＹＥＳ）、ステップ１３０５において、アドレス変換手段８０５はディレクトリ１００１を参照し、読み出し要求アドレスに対応する共有プール・ボリューム８０３のアドレスを取得する。なお、この取得されたアドレスは、データ生成手段８０９で用いられる。ステップ１３０５において、データ生成手段８０９はディレクトリ１００１の上記取得したアドレスを参照し、ステップ１３０６において、その参照したアドレスのデータが、特定データ“００”であることを示す値である特殊データ“ＦＦＦＦＦＦＦＦ”になっているかを確認する。
【００６８】
ここで参照したディレクトリ１００１の値が“ＦＦＦＦＦＦＦＦ”であれば（ステップ１３０６：ＹＥＳ）、データ生成手段８０９は、ステップ１３０８に進みリードデータとして扱うための特定データ“００”を生成する。そして、ステップ１３０９において、データ複製制御手段８０４は当該生成したデータをホスト７０５に転送して処理を終了する。
【００６９】
ステップ１３０６において、参照したディレクトリ１００１の値が“ＦＦＦＦＦＦＦＦ”でなければ（ステップ１３０６：ＮＯ）、ディレクトリ１００１にはデータの実際の格納先である共有プール・ボリューム８０３のボリューム番号とページ番号が登録されているので、ステップ１３０７において、当該ページのデータが読み出され、ステップ１３０９において、データ複製制御手段８０４は読み出したデータをホスト７０５に転送して処理を終了する。
【００７０】
ステップ１３０３において、当該スナップショット・ボリュームにデータが無いと判断したときは（ステップ１３０３：ＮＯ）、ステップ１３０４において、データ複製制御手段８０４はボリューム対応管理テーブル９０２を参照し、ステップ１３０７において、当該スナップショット・ボリューム８０２と対になるマスタ・ボリューム８０１からデータを読み出し、ステップ１３０９において、データ複製制御手段８０４は読み出したデータをホスト７０６に転送して処理を終了する。
【００７１】
以上の実施の形態によると、ディスクアレイ・サブシステム８００は、スナップショット方式のデータのバックアップを実行中にマスタ・ボリューム８０１（８０７の場合も同様である。）へのデータ更新が発生した際に、マスタ・ボリューム８０１から共有プール・ボリューム８０３にコピーすべきデータを追い出しデータチェック手段８０６が特定データ“００”であると認識した場合、アドレス変換手段８０５のディレクトリ１００１を更新した段階でデータ更新処理を終了できる。この場合、マスタ・ボリューム８０１から共有プール・ボリューム８０３のへのデータのコピーを行わないため、共有プール・ボリューム８０３のデータ割当量（使用効率）を減らすとともに、マスタ・ボリューム８０１へのライト・コマンド時の処理時間を減らすことができる。
【００７２】
また、スナップショット・ボリューム８０２へのリード処理時に該当するデータが事前に決められた特殊データである“ＦＦＦＦＦＦＦＦ”と判定された場合、該当するデータをＬＶから読み出すこと無くデータ生成手段８０９によりデータを生成し、その生成したデータを転送することができるので、スナップショット・ボリューム８０２へのリード処理の遅延を抑えることができる。
【００７３】
また、データ複製システム８００は、追い出しデータチェック手段８０６とデータ生成手段８０９とを有する。追い出しデータチェック手段８０６は、マスタ・ボリューム８０１（又は８０７）のデータを共有プール・ボリューム８０３にコピーを行う際に、マスタ・ボリューム８０１のコピー対象のデータが事前に決められた特定データ“００”であった場合、データのコピーを行わずに差分管理を行う。データ生成手段８０９は、スナップショット・ボリューム８０２（又は８０８）へのリード処理時に該当するデータが事前に決められた特殊データ“ＦＦＦＦＦＦＦＦ”と判定された場合、該当するデータをＬＶから読み出すこと無く特定データを生成する。したがって、ディスクアレイ・サブシステム８００のスナップショット動作において、共有プール・ボリューム８０３の使用量を減らすと共に、マスタ・ボリューム８０１又は８０７へのライト処理及びスナップショット・ボリューム８０２又は８０８へのリード・処理の遅延を抑えることができる。
【００７４】
また、特許文献２記載のシステムでは、ターゲットコンピューティング装置のボリュームのシグネチャと、バックエンドコンピューティング装置のバックアップデータベースに格納されている同じファイルのシグネチャとを比較して、バックアップを行なうか否かの判断を行なっているが、上記実施の形態のディスクアレイ・サブシステム８００の追い出しデータチェック手段８０６は、ライト・コマンドを受信したマスタ・ボリューム８０１内のデータが特定データ“００”であるか否かにより、上記ステップ１２０５の判断を行なっている。したがって、追い出しデータチェック手段８０６は、スナップショット・ボリューム８０２にどのようなデータが格納されているか否かを問わずに、当該判断を行なうことができる。
【００７５】
また、ディスクアレイ・サブシステム８００によると、マスタ・ボリューム８０１（又は８０７）へのデータ更新が発生した際に、マスタ・ボリューム８０１（又は８０７）内にどのようなデータが共有プール・ボリューム８０３にコピーするかを特定することができる。
【００７６】
（他の実施の形態）
上記実施の形態では、ディレクトリ１００１を含む各種テーブル情報は制御用メモリ７０３上にある前提で述べているが、これらの各種テーブル情報は、例えば共有プール・ボリューム８０３上の空き領域など、磁気ディスク装置７０５ａ〜７０５ｆのいずれかの領域に格納されていてもよい。
【００７７】
また、上記実施の形態で使用した磁気ディスク装置７０５ａ〜７０５ｆの変わりにフラッシュメモリを使用した記憶装置を使用しても良いし、又は制御用メモリ７０３上に作成した仮想ディスク装置を使用してもよい。
【００７８】
さらに、上記実施の形態では、マスタ・ボリューム８０１及び８０７から共有プール・ボリューム８０３にコピーを行わないように制御するために確認する特定データを“００”、その特定データがあった時にディレクトリ１００１に格納する特殊データを“ＦＦＦＦＦＦＦＦ”として説明をしているが、これはあくまで一例である。コピーを行わないように制御するために確認する特定データは“００”でなくともよいし、特定データがあった時にディレクトリ１００１に格納する特殊データは“ＦＦＦＦＦＦＦＦ”でなくてもよい。また、マスタ・ボリューム８０１又は８０７に格納されているデータの中で、最も使用頻度の高いデータを特定データとして設定することで、既述の効果を得やすくなる。さらに、特定データは、ディスクアレイ・システム８００内で動的に設定されるようにしても良い。
【００７９】
さらに、上記特定データと、それに対応するディレクトリ１００１に格納する特殊データの組み合わせパターンは１つではなく、複数の組み合わせパターンがあってもよい。
【産業上の利用可能性】
【００８０】
本発明は、データ複製システムおけるデータのバックアップ等の用途に利用できる。
【符号の説明】
【００８１】
１００  ディスクアレイ・サブシステム
１０１  マスタ・ボリューム
１０２  スナップショット・ボリューム
１０３  共有プール・ボリューム
１０４  データ複製制御手段
１０５  アドレス変換手段
２００  データ複製制御手段
２０１  属性管理テーブル
２０２  ボリューム対応管理テーブル
２０３  差分管理テーブル
３００  アドレス変換手段
３０１  ディレクトリ
３０２  割当管理テーブル
７００  ディスクアレイ・サブシステム
７０１  マイクロプロセッサ
７０２  インタフェース制御部
７０３  制御用メモリ
７０４  ＲＡＩＤ制御部
７０５ａ〜７０５ｆ  磁気ディスク装置
７０６  ホストコンピュータ
７０７  管理端末
８００  ディスクアレイ・サブシステム
８０１  マスタ・ボリューム
８０２  スナップショット・ボリューム
８０３  共有プール・ボリューム
８０４  データ複製制御手段
８０５  アドレス変換手段
８０６  追い出しデータチェック手段
８０７  マスタ・ボリューム
８０８  スナップショット・ボリューム
８０９  データ生成手段
９００  データ複製制御手段
９０１  属性管理テーブル
９０２  ボリューム対応管理テーブル
９０３  差分管理テーブル
１０００  アドレス変換手段
１００１  ディレクトリ
１００２  割当管理テーブル
【図１】
0005459589.tif 000002
【図２】
0005459589.tif 000003
【図３】
0005459589.tif 000004
【図４】
0005459589.tif 000005
【図５】
0005459589.tif 000006
【図６】
0005459589.tif 000007
【図７】
0005459589.tif 000008
【図８】
0005459589.tif 000009
【図９】
0005459589.tif 000010
【図１０】
0005459589.tif 000011
【図１１】
0005459589.tif 000012
【図１２】
0005459589.tif 000013
【図１３】
0005459589.tif 000014