(57)【特許請求の範囲】
【請求項１】
共通データを保存する共通ボリュームとの差分データを保存する差分ボリュームへの書き込み前の旧データを保存するための第１の複製ボリュームに、前記差分ボリュームへの書き込み前の旧データが保存されていない場合、前記書き込みされる前記差分ボリューム、または、前記共通ボリュームとの差分データを保持する他の差分ボリュームの旧データを保存するための第２の複製ボリュームを、読み出しボリュームに決定する決定手段と、
前記決定手段により決定された読み出しボリュームから前記旧データを読み出して、前記第１の複製ボリュームに保存すると共に、前記差分ボリュームへの前記書き込みを行う書き込み手段と
を備えたボリューム管理装置。
【請求項２】
前記決定手段は、前記書き込みされる前記差分ボリュームが、該書き込み前の旧データを保存している場合、該差分ボリュームを、前記読み出しボリュームに決定する
請求項１記載のボリューム管理装置。
【請求項３】
前記決定手段は、前記書き込みされる前記差分ボリュームが、該書き込み前の旧データを保存していない場合、前記他の差分ボリュームの旧データを保存するための前記第２の複製ボリュームのうち、前記差分ボリュームへの書き込み前の旧データを保存している前記第２の複製ボリュームを、前記読み出しボリュームに決定する
請求項１または２記載のボリューム管理装置。
【請求項４】
前記決定手段は、前記書き込みされる前記差分ボリュームおよび前記他の差分ボリュームの旧データを保存するための前記第２の複製ボリュームのいずれにも前記書き込み前の旧データが保存されていない場合、前記共通ボリュームを、前記読み出しボリュームに決定する
請求項２または３記載のボリューム管理装置。
【請求項５】
前記書き込み手段は、前記読み出しボリュームから読み出した前記旧データを前記第１の複製ボリュームに保存すると、当該第１の複製ボリュームにおける、前記共通ボリュームに保存される前記共通データの有無状況を示す管理情報を、データ有りに設定する
請求項１ないし請求項４のいずれか１項記載のボリューム管理装置。
【請求項６】
前記決定手段は、前記管理情報にデータ有りと設定されている前記第２の複製ボリュームを、前記読み出しボリュームに決定する
請求項５記載のボリューム管理装置。
【請求項７】
共通データを保存する共通ボリュームとの差分データを保存する差分ボリュームへの書き込み前の旧データを保存するための第１の複製ボリュームに、前記差分ボリュームへの書き込み前の旧データが保存されていない場合、前記書き込みされる前記差分ボリューム、または、前記共通ボリュームとの差分データを保持する他の差分ボリュームの旧データを保存するための第２の複製ボリュームを、読み出しボリュームに決定し、
前記決定された読み出しボリュームから前記旧データを読み出して、前記第１の複製ボリュームに保存すると共に、前記差分ボリュームへの前記書き込みを行う
ボリューム管理方法。
【請求項８】
前記読み出しボリュームの決定に際し、前記書き込みされる前記差分ボリュームが、該書き込み前の旧データを保存している場合、該差分ボリュームを、前記読み出しボリュームに決定する
請求項７記載のボリューム管理方法。
【請求項９】
共通データを保存する共通ボリュームとの差分データを保存する差分ボリュームへの書き込み前の旧データを保存するための第１の複製ボリュームに、前記差分ボリュームへの書き込み前の旧データが保存されていない場合、前記書き込みされる前記差分ボリューム、または、前記共通ボリュームとの差分データを保持する他の差分ボリュームの旧データを保存するための第２の複製ボリュームを、読み出しボリュームに決定する処理と、
前記決定された読み出しボリュームから前記旧データを読み出して、前記第１の複製ボリュームに保存すると共に、前記差分ボリュームへの前記書き込みを行う処理とを
コンピュータに実行させるボリューム管理プログラム。
【請求項１０】
前記読み出しボリュームの決定に際し、前記書き込みされる前記差分ボリュームが、該書き込み前の旧データを保存している場合、該差分ボリュームを、前記読み出しボリュームに決定する処理を
コンピュータに実行させる請求項９記載のボリューム管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スナップショット技術を利用した仮想マシンにおけるデータアクセスに関する。
【背景技術】
【０００２】
近年、コスト削減や運用管理の容易化の観点から、仮想マシンを作成する仮想化技術が普及している。仮想化技術では、例えばＶＭＷａｒｅ（登録商標）社のＬｉｎｋｅｄ  Ｃｌｏｎｅ技術を用いた製品がリリースされている。Ｌｉｎｋｅｄ  Ｃｌｏｎｅ技術は、例えば、特許文献１に開示されるように、共有するマシンのディスクイメージ（マシンイメージ）のスナップショットをとり、共有するマシンイメージとの差分データのみを管理することにより、ディスク容量を削減する技術である。
【０００３】
また、例えば特許文献２に開示されるように、マスタとなる仮想マシンのボリューム（マスタボリューム）の複製を世代管理する技術としても、スナップショット技術が知られている。この場合も、スナップショット作成時点からのマスタボリュームに更新があったアドレスのみスナップショットボリュームに更新前データを保持するので、ディスク容量を削減することができる。
【０００４】
ここで、スナップショットとは、指定された時点における所定のボリュームの状態を保持するための技術またはその状態をキャプチャした結果である。また、以下の説明において、上記のようなＬｉｎｋｅｄ  Ｃｌｏｎｅ技術を利用して仮想マシンに作成されてユーザごとに提供されるユーザボリュームを「クローンボリューム」、クローンボリュームの共通イメージを「エンティティボリューム」、クローンボリュームの更新前データを保持するために定義された複製データ記憶領域となるボリュームを「スナップショットボリューム」と称する。
【０００５】
図１２は、エンティティボリューム、クローンボリュームおよびスナップショットボリュームの関連を模式的に説明する図である。図１２に示すように、エンティティボリュームの配下にクローンボリュームが作成され、クローンボリュームの配下にスナップショットボリュームが作成される。クローンボリュームは、エンティティボリュームとの差分データのみを保持する。スナップショットボリュームは、クローンボリュームとの差分データのみを保持する。また、スナップショットボリュームは、クローンボリュームが更新される毎に、その更新前のデータを世代毎にバックアップする。
【０００６】
他の関連技術として、特許文献３には、クローンボリュームから作成されたスナップショットに基づく、クローンボリュームへのリストアにおいて、クローンボリュームの容量効率の悪化を軽減するボリューム管理装置が開示される。
【０００７】
また、特許文献４には、スナップショット方式によりバックアップを行うに際して、マスタ・ボリュームの負荷を抑えて複製ボリュームへのデータ更新を直接円滑に行うデータ複製システムが開示される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−２４８７４２号公報
【特許文献２】特開２００５−２０８９５０号公報
【特許文献３】特開２０１３−２１０７０４号公報
【特許文献４】特開２０１５−０４５９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記のようなＬｉｎｋｅｄ  Ｃｌｏｎｅ技術を利用した仮想マシンにおけるデータ複製において、クローンボリュームは、上述のように、エンティティボリュームとの差分データのみを保持する。したがって、クローンボリュームへのアクセスに対して、そのクローンボリュームに対象データがない場合は、エンティティボリュームからのリードが発生する。
【００１０】
したがって、同じエンティティボリュームの配下に複数のクローンボリュームが存在する場合は、エンティティボリュームからのリードが更に集中するので、クローンボリュームへのアクセス時間が遅延するという課題がある。また、クローンボリュームへのアクセス時間の遅延を回避するためには、エンティティボリュームの配下に作成するクローンボリュームの数が制限されるという問題が存在する。
【００１１】
特許文献１乃至特許文献４には、このようなクローンボリュームへのアクセス時間の遅延を防ぐ技術は開示されていない。
【００１２】
本願発明は、上記課題を鑑みてなされたものであり、共通データを保存する共通ボリュームとの差分データを保存するボリュームへのアクセス時間を短縮することができるボリューム管理装置等を提供することを主要な目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１のボリューム管理装置は、共通データを保存する共通ボリュームとの差分データを保存する差分ボリュームへの書き込み前の旧データを保存するための第１の複製ボリュームに、前記差分ボリュームへの書き込み前の旧データが保存されていない場合、前記書き込みされる前記差分ボリューム、または、前記共通ボリュームとの差分データを保持する他の差分ボリュームの旧データを保存するための第２の複製ボリュームを、読み出しボリュームに決定する決定手段と、決定手段により決定された読み出しボリュームから前記旧データを読み出して、前記第１の複製ボリュームに保存すると共に、前記差分ボリュームへの前記書き込みを行う書き込み手段とを備える。
【００１４】
本発明の第１のボリューム管理方法は、共通データを保存する共通ボリュームとの差分データを保存する差分ボリュームへの書き込み前の旧データを保存するための第１の複製ボリュームに、前記差分ボリュームへの書き込み前の旧データが保存されていない場合、前記書き込みされる前記差分ボリューム、または、前記共通ボリュームとの差分データを保持する他の差分ボリュームの旧データを保存するための第２の複製ボリュームを、読み出しボリュームに決定し、前記決定された読み出しボリュームから前記旧データを読み出して、前記第１の複製ボリュームに保存すると共に、前記差分ボリュームへの前記書き込みを行う。
【００１５】
なお同目的は、上記の各構成を有するボリューム管理方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１６】
本願発明によれば、共通データを保存する共通ボリュームとの差分データを保存するボリュームへのアクセス時間を短縮することができるという効果が得られる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態に係るディスクアレイサブシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るディスクアレイサブシステムのボリューム対応テーブルの一例を示す図である。
【図３】本発明の第１の実施形態に係るディスクアレイサブシステムのクローンボリューム差分管理テーブルの一例を示す図である。
【図４】本発明の第１の実施形態に係るディスクアレイサブシステムのスナップショット差分管理テーブルの一例を示す図である。
【図５】本発明の第１の実施形態に係るディスクアレイサブシステムのエンティティボリュームデータ管理テーブルの一例を示す図である。
【図６】本発明の第１の実施形態に係るディスクアレイサブシステムのボリューム管理処理について説明するフローチャートである。
【図７Ａ】本発明の第１の実施形態に係るディスクアレイサブシステムのクローンボリュームへのリード処理について主に説明するフローチャートである。
【図７Ｂ】本発明の第１の実施形態に係るディスクアレイサブシステムのクローンボリュームへのライト処理について主に説明するフローチャートである。
【図８】通常の技術におけるクローンボリュームへのリード／ライト処理の動作について説明する図である。
【図９】本発明の第１の実施形態に係るディスクアレイサブシステムのクローンボリュームへのリード／ライト処理の動作を説明する図である。
【図１０】本発明の第２の実施形態に係るボリューム管理装置の構成を示すブロック図である。
【図１１】本発明の各実施形態に係る装置を実現するハードウエア構成の一例を示す図である。
【図１２】ボリュームの関連を模式的に説明する図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００１９】
第１の実施形態
図１は、本発明の第１の実施形態に係るディスクアレイサブシステム１００の構成を示すブロック図である。図１に示すように、ディスクアレイサブシステム１００は、１または複数のホスト２００−１乃至２００−ｎと通信可能である。
【００２０】
ホスト２００−１乃至２００−ｎは、データ管理を行うボリューム群を備えたディスクアレイサブシステム１００に対して、ボリュームへの書き込み、ボリュームからの読み出し、スナップショットの作成等の命令（コマンド）を送る。以降、１または複数のホスト２００−１乃至２００−ｎを総称して「ホスト２００」と称する。また、ディスクアレイサブシステム１００を、「ボリューム管理装置」とも称する。
【００２１】
図１に示すように、ディスクアレイサブシステム１００は、ボリューム管理部１１０、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）処理部１３０、ボリューム群１５０およびテーブル記憶部１７０を備える。
【００２２】
ボリューム管理部１１０は、ホスト２００からのボリューム管理コマンドに応じて、ボリューム作成等の処理を実行すると共に、処理が完了すると、ホスト２００にレスポンスを返却する。ボリューム管理部１１０は、ボリューム管理コマンド取得部１１１、クローン作成実行部１１２およびスナップショット作成実行部１１３を備える。
【００２３】
Ｉ／Ｏ処理部１３０は、ホスト２００からのＩ／Ｏコマンドに応じて、ボリューム群１５０に含まれるボリュームにリード処理またはライト処理を実行し、処理が完了すると、ホスト２００にレスポンスを返却する。Ｉ／Ｏ処理部１３０は、Ｉ／Ｏコマンド取得部１３１、ライト命令実行部（書き込み手段）１３２、リード命令実行部１３３および読み出しボリューム決定部（決定手段）１３４を備える。
【００２４】
ボリューム群１５０は、複数のボリュームを含む。具体的には、ボリューム群１５０は、エンティティボリューム（共通ボリューム）１５１、エンティティボリューム１５１から作成されたクローンボリューム（差分ボリューム）１５２、クローンボリューム１５２から作成されたスナップショットボリューム（第１の複製ボリューム、第２の複製ボリューム）１５３およびクローンボリューム１５２とスナップショットボリューム１５３の実データを保存するプールボリューム１５４を備える。
【００２５】
テーブル記憶部１７０は、ボリューム群１５０に含まれるボリュームを管理するテーブルを含む。具体的には、テーブル記憶部１７０は、ボリューム対応テーブル１７１、クローンボリューム差分管理テーブル１７２、スナップショット差分管理テーブル１７３、およびエンティティボリュームデータ管理テーブル（管理情報）１７４を備える。
【００２６】
ディスクアレイサブシステム１００の各構成要素の概要を説明する。
【００２７】
ボリューム管理部１１０のボリューム管理コマンド取得部１１１は、ホスト２００からボリューム管理コマンドを受けとり、そのコマンドに応じてクローン作成実行部１１２またはスナップショット作成実行部１１３にコマンドを渡す。
【００２８】
クローン作成実行部１１２は、ボリューム管理コマンド取得部１１１からエンティティボリューム１５１に対するクローンボリューム作成命令（コマンド）を受けると、該命令にて指定されたエンティティボリューム１５１のクローンボリュームを作成する。そして、クローン作成実行部１１２は、作成したクローンボリュームの情報をボリューム対応テーブル１７１に追加すると共に、クローンボリューム差分管理テーブル１７２を更新する。
【００２９】
スナップショット作成実行部１１３は、ボリューム管理コマンド取得部１１１からクローンボリューム１５２に対するスナップショット作成命令を受けとると、該命令にて指定されたクローンボリューム１５２のスナップショットボリュームを作成する。そして、スナップショット作成実行部１１３は、作成したスナップショットボリュームの情報をボリューム対応テーブル１７１に追加すると共に、スナップショット差分管理テーブル１７３を更新する。
【００３０】
次に、Ｉ／Ｏ処理部１３０の動作の概略を説明する。
【００３１】
Ｉ／Ｏ処理部１３０は、ホスト２００から、リード命令またはライト命令を受信し、各命令に基づく処理が完了するとレスポンスを返却する。
【００３２】
具体的には、Ｉ／Ｏコマンド取得部１３１は、ホスト２００からリード命令またはライト命令を受け取ると、ライト命令をライト命令実行部１３２に、リード命令をリード命令実行部１３３に渡す。
【００３３】
ライト命令実行部１３２は、Ｉ／Ｏコマンド取得部１３１から、スナップショットによりバックアップしているクローンボリューム１５２へのライト命令を受け取ると、読み出しボリューム決定部１３４が決定したボリュームからクローンボリューム１５２の旧データを読み出し、スナップショットボリューム１５３へ追い出しコピーを行う。ここで、ボリュームへの書き込みの際に、書き込み（更新）前のデータを「旧データ」、書き込み前の旧データをページ単位でスナップショットボリュームに複製する動作を「追い出しコピー」とそれぞれ称する。
【００３４】
ライト命令実行部１３２は、上記追い出しコピーの後、ライトするデータをクローンボリューム１５２へ書き込み、ホスト２００にレスポンスを送る。
【００３５】
リード命令実行部１３３は、Ｉ／Ｏコマンド取得部１３１から、スナップショットによりバックアップしているクローンボリューム１５２へのリード命令を受け取ると、クローンボリューム１５２のデータを保持するボリュームを調べる。そして、リード命令実行部１３３は、データを保持するボリュームからデータを読み出し、ホスト２００に読み出したデータを送る。
【００３６】
読み出しボリューム決定部１３４は、クローンボリューム１５２へのライトにおいて旧データをスナップショットボリューム１５３へ追い出しコピーする際に、旧データが他のクローンボリューム配下のスナップショットボリュームに存在するか調べ、旧データを保持するボリュームを、読み出し元のボリュームに決定する。他のスナップショットボリュームに旧データが存在しない場合、読み出しボリューム決定部１３４は、エンティティボリューム１５１を、読み出し元のボリュームに決定する。
【００３７】
次に、テーブル記憶部１７０の概略を説明する。
【００３８】
ボリューム対応テーブル１７１は、共通イメージであるエンティティボリューム１５１とユーザボリュームであるクローンボリューム１５２の対応関係、およびスナップショットによりバックアップされたクローンボリューム１５２とスナップショットボリューム１５３の対応関係を管理するテーブルである。
【００３９】
図２は、ボリューム対応テーブル１７１の一例を示す図である。図２に示すように、ボリューム対応テーブル１７１は、エンティティボリューム番号、クローンボリューム番号、およびスナップショットボリューム番号を含む。図２では、例えば、番号「ＥＶ０」のエンティティボリュームから番号「ＣＶ０」、「ＣＶ１」、「ＣＶ２」、・・・、「ＣＶｎ」のクローンボリュームが作成されたことを示す。また、番号「ＣＶ０」のクローンボリュームから、番号「ＳＶ００」の第一世代スナップショットボリュームと、番号「ＳＶ０１」の第二世代スナップショットボリュームが作成されたことを示す。このように、スナップショットは、マスタとなるクローンボリュームの更新に伴って連続した世代として保持される。
【００４０】
クローンボリューム差分管理テーブル１７２は、クローンボリュームにデータが存在するか否かをクローンボリュームＩ／Ｏ処理単位（以下、ページ単位と称する）にフラグで管理するテーブルである。図３は、クローンボリューム差分管理テーブル１７２の一例を示す図である。例えば、図３において、番号「ＣＶ０」のクローンボリュームの「ｐａｇｅ２」のフラグは「１」であるので、番号「ＣＶ０」のクローンボリュームの「ｐａｇｅ２」には実データが存在することを示す。
【００４１】
一方、番号「ＣＶ０」のクローンボリュームの「ｐａｇｅ３」のフラグは「０」であるので、番号「ＣＶ０」のクローンボリュームにはデータが存在せず、エンティティボリュームの「ｐａｇｅ３」を参照することになる。
【００４２】
スナップショット差分管理テーブル１７３は、スナップショットボリュームにデータが存在するか否かをページ単位にフラグで管理するテーブルである。図４は、スナップショット差分管理テーブル１７３の一例を示す図である。例えば、図４において、番号「ＳＶ０１」のスナップショットボリュームの「ｐａｇｅ２」のフラグは「１」であるので、番号「ＳＶ０１」のスナップショットボリュームの「ｐａｇｅ２」には実データが存在することを示す。
【００４３】
エンティティボリュームデータ管理テーブル１７４は、スナップショットボリュームにエンティティボリュームのデータが存在するか否か（有無状況）をページ単位にフラグで管理するテーブルである。図５は、エンティティボリュームデータ管理テーブル１７４の一例を示す図である。例えば、図５において、番号「ＳＶ２０」のスナップショットボリュームの「ｐａｇｅ０」のフラグは「１」であるので、番号「ＳＶ２０」のスナップショットボリュームの「ｐａｇｅ０」には、エンティティボリュームの同アドレスのデータが存在することを示す。
【００４４】
次に、ボリューム群１５０の概略を説明する。
【００４５】
ボリューム群１５０におけるエンティティボリューム１５１は、クローンボリューム１５２の共通イメージ（共通データ）を保存するボリュームである。
【００４６】
クローンボリューム１５２は、ユーザごとに提供される仮想ボリュームであり、実体はプールボリューム１５４に存在し、エンティティボリューム１５１との差分のみ実体が割り当てられている。１つのエンティティボリュームに対してクローンボリュームは複数存在してもよい。
【００４７】
スナップショットボリューム１５３は、クローンボリューム１５２のスナップショット複製ボリュームであり、スナップショット複製開始以降のクローンボリューム１５２の更新前データを保存する。スナップショットボリューム１５３は、仮想ボリュームであり実体はプールボリューム１５４に存在する。
【００４８】
プールボリューム１５４は、クローンボリューム１５２とスナップショットボリューム１５３の実データを保存する。
【００４９】
次に、ディスクアレイサブシステム１００の動作について説明する。
【００５０】
まず、ディスクアレイサブシステム１００のボリューム管理処理について説明する。図６は、ボリューム管理処理について説明するフローチャートである。図６を参照して、ボリューム管理処理について説明する。なお、ディスクアレイサブシステム１００は、ボリューム管理に関するコマンドとして、ホスト２００からクローンボリューム作成命令またはスナップショット作成命令を受信すると仮定する。
【００５１】
ボリューム管理部１１０のボリューム管理コマンド取得部１１１は、ホスト２００からコマンドを受信すると、そのコマンドの種別を判定する（Ｓ１０１）。ボリューム管理コマンド取得部１１１は、判定の結果、クローンボリューム作成命令の受信を検出すると（Ｓ１０２においてＹｅｓ）、クローン作成実行部１１２にコマンドを通知する。
【００５２】
クローン作成実行部１１２は、上記コマンドを受け取ると、コマンドにて指定されたエンティティボリュームをマスタとしたクローンボリュームを作成する（Ｓ１０３）。そして、クローン作成実行部１１２は、ボリューム対応テーブル１７１に、マスタとしたエンティティボリュームの番号と、作成したクローンボリュームの番号との対応関係を追加する（Ｓ１０４）。
【００５３】
続いてクローン作成実行部１１２は、クローンボリューム差分管理テーブル１７２を更新する（Ｓ１０５）。すなわち、クローン作成実行部１１２は、クローンボリューム差分管理テーブル１７２に、作成したクローンボリュームの情報を追加すると共に、各ページ単位のフラグの初期値を「０」とする。
【００５４】
一方、処理Ｓ１０２において、ボリューム管理コマンド取得部１１１は、スナップショット作成命令の受信を検出すると（Ｓ１０２においてＮｏ）、スナップショット作成実行部１１３にコマンドを通知する。
【００５５】
スナップショット作成実行部１１３は、コマンドにて指定されたクローンボリュームをマスタとしたスナップショットボリュームを作成する（Ｓ１０７）。そして、スナップショット作成実行部１１３は、ボリューム対応テーブル１７１に、マスタとしたクローンボリュームの番号と、作成したスナップショットボリュームの番号との対応関係を追加する（Ｓ１０８）。
【００５６】
続いてスナップショット作成実行部１１３は、スナップショット差分管理テーブル１７３を更新する（Ｓ１０９）。すなわち、スナップショット作成実行部１１３は、作成したスナップショットボリュームの情報を追加し、各ページ単位のフラグの初期値を「０」とする。
【００５７】
さらにスナップショット作成実行部１１３は、エンティティボリュームデータ管理テーブル１７４は、作成したスナップショットボリュームの情報を追加し、各ページ単位のフラグの初期値を「０」とする（Ｓ１１０）。
【００５８】
上記のように、コマンドに応じた処理が終了すると、ボリューム管理コマンド取得部１１１は、処理が終了した旨を含むレスポンスをホスト２００に返却する（Ｓ１０６）。以上の手順により、ボリューム管理部１１０は、ボリューム管理コマンドに応じた処理を行う。
【００５９】
次に、ディスクアレイサブシステム１００のクローンボリューム１５２へのリード／ライト処理（Ｉ／Ｏ処理）について説明する。図７Ａは、クローンボリューム１５２へのリード／ライト処理のうちリード処理について主に説明するフローチャートである。図７Ｂは、クローンボリューム１５２へのリード／ライト処理のうちライト処理について主に説明するフローチャートである。図７Ａ、図７Ｂを参照して、クローンボリューム１５２へのリード／ライト処理について説明する。
【００６０】
図７Ａに示すように、Ｉ／Ｏコマンド取得部１３１は、ホスト２００からクローンボリューム１５２へのリード／ライト命令を受信する（Ｓ２０１）。Ｉ／Ｏコマンド取得部１３１は、ライト命令の受信を検出すると（Ｓ２０２においてＮｏ（「Ａ」を介して図７Ｂへ））、そのライト命令をライト命令実行部１３２に渡す。
【００６１】
ライト命令実行部１３２は、ライト命令に応じて書き込みをする前に、必要に応じて追い出しコピーを行い、そののちに書き込みを行う。すなわち、ライト命令実行部１３２は、受け取ったライト命令に含まれる、第一世代のスナップショット差分管理テーブル１７３におけるライトアドレス（ページ）を調べ、データが存在する場合は（Ｓ２０７においてＹｅｓ）、クローンボリュームにライトデータを書き込む（Ｓ２１５）。続いて、ライト命令実行部１３２は、クローンボリューム差分管理テーブル１７２の、ライトデータを書き込んだページのフラグを「１」にセットし（Ｓ２１６）、書き込みが終了した旨を含むレスポンスをホスト２００に返却する（Ｓ２１７）。
【００６２】
一方、第一世代のスナップショットボリュームにデータが存在しない場合（Ｓ２０７においてＮｏ）、ライト命令実行部１３２は、読み出しボリューム決定部１３４に対して、第一世代スナップショットボリュームへ追い出しコピーするデータ（旧データ）の読み出し元のボリューム（読み出しボリューム）の検索を指示する。
【００６３】
読み出しボリューム決定部１３４は、上記指示に応じて、クローンボリューム差分管理テーブル１７２における上記ライトアドレスを調べる（Ｓ２０８）。クローンボリューム差分管理テーブル１７２の上記ライトアドレスに差分データが存在することが示されている場合（Ｓ２０８においてＹｅｓ）、読み出しボリューム決定部１３４は、追い出しコピーするデータの読み出しボリュームを、クローンボリュームに決定する（Ｓ２１０）。
【００６４】
一方、クローンボリューム差分管理テーブル１７２の上記ライトアドレスに差分データが存在しないことが示されている場合（Ｓ２０８においてＮｏ）、読み出しボリューム決定部１３４は、同じエンティティボリューム配下の他のクローンボリュームをマスタとしたスナップショットボリュームのエンティティボリュームデータ管理テーブル１７４の該当アドレスを順に調べる。これにより、読み出しボリューム決定部１３４は、エンティティボリュームのデータが存在するスナップショットボリュームを検索する（Ｓ２０９）。
【００６５】
読み出しボリューム決定部１３４は、エンティティボリュームのデータを保持するスナップショットボリュームを発見できた場合、追い出しコピーするデータの読み出し元のボリュームを、その発見したスナップショットボリュームに決定する（Ｓ２１１）。一方、エンティティボリュームのデータを保持するスナップショットボリュームを発見できなかった場合（Ｓ２０９においてＮｏ）、読み出しボリューム決定部１３４は、追い出しコピーするデータの読み出し元をエンティティボリュームに決定する（Ｓ２１８）。
【００６６】
読み出しボリューム決定部１３４は、上記のように決定した読み出しボリュームの情報を、ライト命令実行部１３２に通知する。
【００６７】
ライト命令実行部１３２は、追い出しコピー先である第一世代のスナップショットボリュームのエンティティボリュームデータ管理テーブル１７４の該当アドレスを、データ有り（フラグ「１」）に設定する（Ｓ２１２）。
【００６８】
そして、ライト命令実行部１３２は、上記のように読み出しボリューム決定部１３４から通知された読み出しボリュームから追い出しコピーするデータを読み出し、第一世代スナップショットボリュームへ追い出しコピーする（Ｓ２１３）。そして、ライト命令実行部１３２は、第一世代スナップショットボリュームのスナップショット差分管理テーブル１７３の該当アドレスを差分あり（フラグ「１」）に設定する（Ｓ２１４）。
【００６９】
ライト命令実行部１３２は、追い出しコピーを完了すると、クローンボリューム１５２にライトデータを書き込み（Ｓ２１５）、クローンボリューム１５２のクローンボリューム差分管理テーブル１７２におけるデータを書き込んだアドレスに、差分データあり（フラグ「１」）を設定する（Ｓ２１６）。そして、ライト命令実行部１３２は、ライト完了の旨を含むレスポンスをホスト２００に返却する（Ｓ２１７（「Ｂ」を介して図７Ａへ））。以上の手順により、Ｉ／Ｏ処理部１３０は、ライト命令に応じた処理を行う。
【００７０】
一方で、図７Ａに示す処理Ｓ２０２において、Ｉ／Ｏコマンド取得部１３１は、クローンボリュームへのリード命令を検出すると（Ｓ２０２においてＹｅｓ）、そのリード命令をリード命令実行部１３３に渡す。リード命令実行部１３３は、リード命令に含まれる、クローンボリューム１５２のクローンボリューム差分管理テーブル１７２におけるリードアドレスに、差分データがあると示されているか否かを調べる。
【００７１】
リード命令実行部１３３は、差分データがある場合は（Ｓ２０３においてＹｅｓ）、読み出し元をクローンボリュームに決定し（Ｓ２０４）、差分データがない場合は（Ｓ２０３においてＮｏ）、読み出し元をクローンボリュームのマスタであるエンティティボリュームに決定する（Ｓ２０５）。
【００７２】
リード命令実行部１３３は、上記のように決定したボリュームの該当アドレスからデータを読み出す（Ｓ２０６）。そして、リード命令実行部１３３は、読み出したデータをホスト２００に返却する（Ｓ２１８）。以上の手順により、Ｉ／Ｏ処理部１３０は、リード命令に応じた処理を行う。
【００７３】
以上の手順で読み出しボリュームを決定した場の効果について、以下に、通常の技術と比較して説明する。
【００７４】
図８は、通常の技術におけるクローンボリュームへのリード／ライト処理の動作について説明する図である。図８および後述する図９において、「（Ａ０）」、「（Ｂ０）」等の括弧で括られたデータは、そのボリュームにはデータが存在しないが、上位世代またはマスタの該当するページからデータ「Ａ０」、「Ｂ０」が読み出せることを意味する。
【００７５】
図８では、データ「Ａ０」、「Ｂ０」、「Ｃ０」および「Ｄ０」を保持するエンティティボリュームＥＶ０から、Ｌｉｎｋｅｄ  Ｃｌｏｎｅ技術を利用してクローンボリュームＣＶ０、ＣＶ１が作成されたことを示す。クローンボリュームＣＶ０には、データ「Ｃ１」が書き込まれ、クローンボリュームＣＶ１には、データ「Ａ２」、「Ｂ１」、「Ｃ１」が書き込まれていることを示す。さらに、クローンボリュームＣＶ０からスナップショットボリュームが作成され、データ「Ｃ０」が書き込まれたスナップショットボリュームを第二世代ＳＶ０１、その後定義された記憶領域を第一世代ＳＶ００とする。
【００７６】
同様に、クローンボリュームＣＶ１から作成され、データ「Ａ０」、「Ｃ０」が書き込まれたスナップショットボリュームを第二世代ＳＶ１１、その後データ「Ａ１」、「Ｂ０」が書き込まれたスナップショットボリュームを第一世代ＳＶ１０とする。
【００７７】
また、図８において、各データに関連付けられた、「１７２」で示される「０」または「１」は、クローンボリューム差分管理テーブル１７２における、該データが格納されるページのフラグを示す。
【００７８】
まず、クローンボリュームＣＶ０のデータ「Ａ０」に対応するページにデータ「Ａ１」のライト命令を受けたとする。通常の技術では、第一世代スナップショットボリュームＳＶ００のスナップショット差分管理テーブル１７３の「Ａ０」に対応するページのフラグを調べる。このとき、該ページのフラグは「０」であるので、ライトに先だってクローンボリュームＣＶ０の旧データである「Ａ０」の追い出しコピーが必要となる。
【００７９】
クローンボリュームＣＶ０のクローンボリューム差分管理テーブル１７２の「Ａ０」に対応するページのフラグを調べると、「０」である。よって、旧データを保有するエンティティボリュームＥＶ０から「Ａ０」を読み出し、スナップショットボリュームＳＶ００に追い出しコピー（Ｗ１）したあとに、クローンボリュームＣＶ０に「Ａ１」が書き込まれる（Ｗ２）。
【００８０】
一方、クローンボリュームＣＶ１のデータ「Ｄ０」へのリード命令を受けたとする。クローンボリュームＣＶ１のクローンボリューム差分管理テーブル１７２のデータ「Ｄ０」に対応するフラグは「０」であるので、データを保持するエンティティボリュームＥＶ０からデータ「Ｄ０」が読み出される（Ｒ１）。
【００８１】
このように、通常の技術では、クローンボリュームに対するライト命令に対してもリード命令に対しても、エンティティボリュームへのアクセスが発生している。クローンボリュームの数が増えると更にアクセスが集中するため、クローンボリュームへのアクセス（リード／ライト処理）はさらに遅延する。
【００８２】
そこで、本第１の実施形態に係るディスクアレイサブシステム１００では、上述した構成により、クローンボリュームへのアクセス時間の短縮を可能とする。
【００８３】
図９は、上述した本第１の実施形態に係るディスクアレイサブシステム１００によるクローンボリュームへのリード／ライト処理の動作を説明する図である。
【００８４】
図９において、エンティティボリュームＥＶ０、クローンボリュームＣＶ０、ＣＶ１の構成は図８と同様である。また、図９において、スナップショットボリュームＳＶ００、ＳＶ０１、ＳＶ１０、ＳＶ１１の各データに関連付けられた、「１７４」で示される「０」または「１」は、エンティティボリュームデータ管理テーブル１７４における、該データが格納されるページのフラグを示す。
【００８５】
Ｉ／Ｏコマンド取得部１３１は、ホスト２００から、クローンボリュームＣＶ０のデータ「Ａ０」に対応するページにデータ「Ａ１」のライト命令を受けたとする。ライト命令実行部１３２は、第一世代スナップショットボリュームＳＶ００のスナップショット差分管理テーブル１７３の「Ａ０」に対応するページのフラグを調べる。このとき、そのページのフラグは「０」であるので、ライトに先だってクローンボリュームの旧データである「Ａ０」の追い出しコピーが必要となる。
【００８６】
ライト命令実行部１３２は、クローンボリュームＣＶ０のクローンボリューム差分管理テーブル１７２の「Ａ０」に対応するページのフラグを調べると、「０」である。そこで、ライト命令実行部１３２は、読み出しボリューム決定部１３４に読み出しボリュームの検索を指示する。読み出しボリューム決定部１３４は、エンティティボリュームＥＶ０のデータ「Ａ０」を保持するボリュームを、クローンボリューム「ＣＶ１」をマスタとするスナップショットボリュームＳＶ１０、ＳＶ１１から検索する。
【００８７】
図９では、スナップショットボリュームＳＶ１１がデータ「Ａ０」を保持するので、ライト命令実行部１３２は、ＳＶ１１から「Ａ０」を読み出してスナップショットボリュームＳＶ００に追い出しコピー（Ｗ１)したあとに、クローンボリュームＣＶ０にライトデータ「Ａ１」を書き込む（Ｗ２）。
【００８８】
なお、Ｉ／Ｏコマンド取得部１３１が、ホスト２００から、クローンボリュームＣＶ１のデータ「Ｄ０」へのリード命令を受けた際の動作は、図８を参照して説明した動作と同様である。
【００８９】
以上のように、本第１の実施形態によれば、ホスト２００からのクローンボリューム１５２へのライト命令に応じて、Ｉ／Ｏ処理部１３０の読み出しボリューム決定部１３４は、追い出しコピーするデータの読み出し元を、クローンボリューム１５２、または他のスナップショットボリューム１５３に旧データがある場合は、それらのいずれかに決定する。
【００９０】
上記構成を採用することにより、本第１の実施形態によれば、クローンボリューム１５２へのライト処理においてエンティティボリューム１５１からのリードが他のボリュームへ分散される。これにより、エンティティボリューム１５１へのアクセス集中に起因する遅延の発生を防ぐことができ、クローンボリューム１５２へのリード／ライト処理時間を短縮することができるという効果が得られる。また、本第１の実施形態によれば、クローンボリューム１５２が増加したとしてもエンティティボリューム１５１へのアクセスが集中しないので、１つのエンティティボリューム１５１に対して作成可能なクローンボリュームの数を増やすことができるという効果が得られる。
【００９１】
第２の実施形態
図１０は、本発明の第２の実施形態に係るボリューム管理装置３００の構成を示すブロック図である。図１０に示すように、ボリューム管理装置３００は、決定部３１０および書き込み部３２０を備える。
【００９２】
決定部３１０は、共通データを保存する共通ボリュームとの差分データを保存する差分ボリュームへの書き込み前の旧データを保存するための第１の複製ボリュームに、差分ボリュームへの書き込み前の旧データが保存されていない場合、書き込みされる差分ボリューム、または、共通ボリュームとの差分データを保存する他の差分ボリュームの旧データを保存するための第２の複製ボリュームを、読み出しボリュームに決定する。
【００９３】
書き込み部３２０は、決定部３１０により決定された読み出しボリュームから旧データを読み出して、第１の複製ボリュームに保存すると共に、差分ボリュームへの書き込みを行う。
【００９４】
上記構成を採用することにより、本第２の実施形態によれば、共通ボリュームへのアクセス集中を防ぐことができるので、差分ボリュームへのアクセス時間を短縮することができるという効果が得られる。
【００９５】
なお、図１に示したディスクアレイサブシステム１００の各部は、図１１に例示するハードウエア資源において実現される。すなわち、図１１に示す構成は、プロセッサ１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス１３、ストレージ１４および各構成要素を接続するバス１５を備える。
【００９６】
上述した各実施形態では、図１１に示すプロセッサ１０が実行する一例として、ディスクアレイサブシステム１００に対して、上述した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、プロセッサ１０がＲＡＭ１１に読み出して実行することによって実現する場合について説明した。しかしながら、図１に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
【００９７】
係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【符号の説明】
【００９８】
１０  プロセッサ
１１  ＲＡＭ
１２  ＲＯＭ
１３  Ｉ／Ｏデバイス
１４  ストレージ
１５  バス
１００  ディスクアレイサブシステム
１１０  ボリューム管理部
１１１  ボリューム管理コマンド取得部
１１２  クローン作成実行部
１１３  スナップショット作成実行部
１３０  Ｉ／Ｏ処理部
１３１  Ｉ／Ｏコマンド取得部
１３２  ライト命令実行部
１３３  リード命令実行部
１３４  読み出しボリューム決定部
１７０  テーブル記憶部
１７１  ボリューム対応テーブル
１７２  クローンボリューム差分管理テーブル
１７３  スナップショット差分管理テーブル
１７４  エンティティボリュームデータ管理テーブル
１５０  ボリューム群
１５１  エンティティボリューム
１５２  クローンボリューム
１５３  スナップショットボリューム
１５４  プールボリューム
２００  ホスト
３００  ボリューム管理装置
３１０  決定部
３２０  書き込み部
【図１】
0006627541.tif 000002
【図２】
0006627541.tif 000003
【図３】
0006627541.tif 000004
【図４】
0006627541.tif 000005
【図５】
0006627541.tif 000006
【図６】
0006627541.tif 000007
【図７Ａ】
0006627541.tif 000008
【図７Ｂ】
0006627541.tif 000009
【図８】
0006627541.tif 000010
【図９】
0006627541.tif 000011
【図１０】
0006627541.tif 000012
【図１１】
0006627541.tif 000013
【図１２】
0006627541.tif 000014