(57)【要約】【課題】特定の記憶装置に格納された重複データを別の記憶装置が参照するシステムにおいて当該重複データに対する更新が発生した場合に、更新処理に伴いシステム性能が低下することを回避することを可能とする。【解決手段】データ記憶制御装置３０は、複数の記憶装置が重複して記憶すべき重複データを記憶する重複データ記憶部３３と、重複データ記憶部３３の重複データに関する第一識別子と、記憶装置に対する重複データに関するアクセス要求における重複データに関する第二識別子と、を関連付けた参照先情報３２０を記憶する参照先情報記憶部３２と、特定の記憶装置に対する重複データ更新アクセスが発生した場合に、係る記憶装置における重複データに関する第一及び第二の識別子を関連付けた情報を、参照先情報３２０から削除して、更新データを特定の記憶装置に格納する管理部３１と、を備える。【選択図】      図１１
2015141508.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置が重複して記憶すべき重複データを、それら記憶装置が各々記憶する代わりに、記憶可能な重複データ記憶手段と、
前記重複データ記憶手段に記憶された前記重複データを識別可能な第一の識別子と、前記記憶装置に対する前記重複データに関するアクセス要求において前記重複データを識別可能な第二の識別子と、を関連付けたレコードを包含する参照先情報を記憶する参照先情報記憶手段と、
前記複数の記憶装置のうち、特定の記憶装置に対して、前記重複データに関する更新アクセスが発生した場合に、前記特定の記憶装置における前記重複データに関する前記第一及び第二の識別子を関連付けた情報を、前記参照先情報から削除するとともに、前記重複データを更新する更新データを、前記特定の記憶装置に格納する管理手段と、
を備えるデータ記憶制御装置。
【請求項２】
前記管理手段は、前記特定の記憶装置へ格納する格納データが何れかの前記記憶装置である既存データ格納記憶装置に格納されている何れかの既存データと一致することを判定した場合に、
前記格納データを前記重複データとして前記重複データ記憶手段に格納するとともに、前記既存データ格納記憶装置から前記既存データを削除し、
前記特定の記憶装置における前記格納データを識別可能な識別子、及び、前記既存データ格納記憶装置における前記既存データを識別可能な識別子を、前記第二の識別子として、それぞれ前記第一の識別子と関連付けることにより、前記参照先情報を更新する、
請求項１に記載のデータ記憶制御装置。
【請求項３】
前記管理手段は、前記参照先情報において、前記第一の識別子を包含する前記レコードが存在しなくなった場合に、前記第一の識別子により識別された前記重複データを、前記重複データ記憶手段から削除する、
請求項１または２に記載のデータ記憶制御装置。
【請求項４】
前記複数の記憶装置をさらに備える、
請求項１乃至３のいずれかに記載のデータ記憶制御装置。
【請求項５】
情報処理装置によって、
複数の記憶装置が重複して記憶すべき重複データを、それら記憶装置が各々記憶する代わりに、重複データ記憶手段に記憶可能であり、
前記重複データ記憶手段に記憶された前記重複データを識別可能な第一の識別子と、前記記憶装置に対する前記重複データに関するアクセス要求において前記重複データを識別可能な第二の識別子と、を関連付けたレコードを包含する参照先情報を参照先情報記憶手段に記憶し、
前記複数の記憶装置のうち、特定の記憶装置に対して、前記重複データに関する更新アクセスが発生した場合に、前記特定の記憶装置における前記重複データに関する前記第一及び第二の識別子を関連付けた情報を、前記参照先情報から削除するとともに、前記重複データを更新する更新データを、前記特定の記憶装置に格納する、
データ記憶制御方法。
【請求項６】
前記特定の記憶装置へ格納する格納データが何れかの前記記憶装置である既存データ格納記憶装置に格納されている何れかの既存データと一致することを判定した場合に、
前記格納データを前記重複データとして前記重複データ記憶手段に格納するとともに、前記既存データ格納記憶装置から前記既存データを削除し、
前記特定の記憶装置における前記格納データを識別可能な識別子、及び、前記既存データ格納記憶装置における前記既存データを識別可能な識別子を、前記第二の識別子として、それぞれ前記第一の識別子と関連付けることにより、前記参照先情報を更新する、
請求項５に記載のデータ記憶制御方法。
【請求項７】
前記参照先情報において、前記第一の識別子を包含する前記レコードが存在しなくなった場合に、前記第一の識別子により識別された前記重複データを、前記重複データ記憶手段から削除する、
請求項５または６に記載のデータ記憶制御方法。
【請求項８】
複数の記憶装置が重複して記憶すべき重複データを、それら記憶装置が各々記憶する代わりに、重複データ記憶手段に記憶する重複データ記憶処理と、
前記重複データ記憶手段に記憶された前記重複データを識別可能な第一の識別子と、前記記憶装置に対する前記重複データに関するアクセス要求において前記重複データを識別可能な第二の識別子と、を関連付けたレコードを包含する参照先情報を参照先情報記憶手段に記憶する参照先情報記憶処理と、
前記複数の記憶装置のうち、特定の記憶装置に対して、前記重複データに関する更新アクセスが発生した場合に、前記特定の記憶装置における前記重複データに関する前記第一及び第二の識別子を関連付けた情報を、前記参照先情報から削除するとともに、前記重複データを更新する更新データを、前記特定の記憶装置に格納する管理処理と、
をコンピュータに実行させる、データ記憶制御プログラム。
【請求項９】
前記特定の記憶装置へ格納する格納データが何れかの前記記憶装置である既存データ格納記憶装置に格納されている何れかの既存データと一致することを判定した場合に、
前記格納データを前記重複データとして前記重複データ記憶手段に格納するとともに、前記既存データ格納記憶装置から前記既存データを削除し、
前記特定の記憶装置における前記格納データを識別可能な識別子、及び、前記既存データ格納記憶装置における前記既存データを識別可能な識別子を、前記第二の識別子として、それぞれ前記第一の識別子と関連付けることにより、前記参照先情報を更新する前記管理処理
をコンピュータに実行させる、請求項８に記載のデータ記憶制御プログラム。
【請求項１０】
前記参照先情報において、前記第一の識別子を包含する前記レコードが存在しなくなった場合に、前記第一の識別子により識別された前記重複データを、前記重複データ記憶手段から削除する前記管理処理
をコンピュータに実行させる、請求項８または９に記載のデータ記憶制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、複数の記憶装置が重複して記憶する必要がある重複データに関する記憶を制御するデータ記憶制御装置等に関する。
【背景技術】
【０００２】
近年、大規模コンピュータシステムを効率的に運用管理するために、仮想化技術を使用した仮想マシン環境をベースとしたシステムが普及している。仮想マシン環境において、各仮想マシンが使用するボリュームはクローンボリュームと呼ばれている。このクローンボリュームは、マスタとなるボリューム（以降、マスタボリュームと称する）のコピーとして生成される。
【０００３】
この際、マスタボリュームとクローンボリュームとの間でデータが重複することになり、データを記憶する領域の容量が増加するため、効率的であるとは言えない。したがって、仮想化技術においては、係るマスタボリュームとクローンボリュームとの間におけるデータの重複を排除する技術が求められている。
【０００４】
係る技術の１つとして、リンクドクローン（Ｌｉｎｋｅｄ  Ｃｌｏｎｅ）と呼ばれる技術がある。このリンクドクローン技術において、仮想マシンが使用するボリュームは、リンクドクローンボリュームと呼ばれている。このリンクドクローンボリュームは、マスタボリュームに対して差分があるデータのみを格納し、差分が無いデータについては、マスタボリュームに記憶された当該データを参照する。リンクドクローン技術におけるマスタボリュームとリンクドクローンボリュームの関係を図１３に例示する。
【０００５】
図１３（ａ）に示すとおり、マスタボリューム１００は、論理ディスクであるＬＤ（Ｌｏｄｉｃａｌ  Ｄｉｓｋ）１１０を包含している。尚、本願では、以降、論理ディスクをＬＤと称する。図１３（ｂ）に示す通り、リンクドクローンボリューム３００は、ＬＤ３１０−１乃至３等のＬＤを包含している。ＬＤ３１０−１乃至３は、例えば、仮想マシンを用いたシンクライアント環境における、ユーザがそれぞれ使用するＬＤである。シンクライアント環境においては、一般的に、マスタボリュームにはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）イメージが格納され、リンクドクローンボリュームにはユーザ固有情報であるログイン情報及びＩＰアドレス情報等が格納される。
【０００６】
ＬＤ１１０における“Ａ０”及び“Ｂ０”は、ＬＤに格納されたデータである。図１３に示す例では、ＬＤ３１０−１は、ＬＤ１１０に格納されたデータＡ０及びＢ０を参照している。ＬＤ３１０−２は、データＢ０がデータＢ１に更新された状態であるため、ＬＤ１１０に格納されたデータＡ０のみを参照し、データＢ１を記憶している。ＬＤ３１０−３は、データＡ０がデータＡ１に更新された状態であるため、ＬＤ１１０に格納されたデータＢ０のみを参照し、データＡ１を記憶している。
【０００７】
このようなリンクドクローン技術に関連する技術として、特許文献１には、マスタのディスクイメージに対する差分データのみを格納したデルタディスク（リンクドクローンボリュームと同義）を使用して仮想マシンを稼働するシステムが開示されている。このシステムは、マスタのディスクイメージに対して差分が無い領域に関しては、マスタのディスクイメージを参照する。
【０００８】
さらに特許文献２には、リンクドクローンボリュームにおいて重複データが存在するかどうかを確認し、重複データが存在する場合は、当該重複データを記憶するリンクドクローンの何れか１つのみに当該重複データを格納する技術が開示されている。この技術は、当該重複データを記憶する必要がある他のリンクドクローンに対しては、当該重複データを格納したリンクドクローンを参照先に設定する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開2011-248742号公報
【特許文献２】特開2010-026790号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ここで、リンクドクローンボリュームにおけるＬＤが他のＬＤに格納されたデータを参照している環境において、参照先のデータに対する更新が発生した場合を考える。係る場合における参照先のデータに対する更新動作を図１４に例示する。
【００１１】
図１４（ａ）に示す通り、ＬＤ３１０−２乃至３は、ＬＤ３１０−１に格納されたデータＢ１を参照している。ここで、ＬＤ３１０−１に格納されたデータＢ１がデータＢ２に更新され、ＬＤ３１０−２乃至３が引き続きデータＢ１を記憶する必要がある場合、ＬＤ３１０−１に格納されたデータＢ１がデータＢ２に更新される前に、データＢ１を退避する必要がある。図１４（ｂ）に示す例では、データＢ１はＬＤ３１０−２に退避され、ＬＤ３１０−１がデータＢ１を参照する参照先が、ＬＤ３１０−１からＬＤ３１０−２に変更される。
【００１２】
このように、リンクドクローンボリュームにおけるＬＤが他のＬＤに格納されたデータを参照している環境において、参照先のデータに対する更新が発生した場合、当該データを退避し、係るデータに関する参照先を示す情報を更新する処理が発生する。例えば大規模なシンクライアントシステム等においては、係る処理によりシステム性能が大きく低下する虞がある。特許文献１乃至２が開示した技術は、この問題を解決することはできない。
【００１３】
本願発明の主たる目的は、この問題を解決した、データ記憶制御装置、データ記憶制御方法、及び、データ記憶制御プログラムを提供することである。
【課題を解決するための手段】
【００１４】
本願発明に係るデータ記憶制御装置は、複数の記憶装置が重複して記憶すべき重複データを、それら記憶装置が各々記憶する代わりに記憶可能な重複データ記憶手段と、前記重複データ記憶手段に記憶された前記重複データを識別可能な第一の識別子と、前記記憶装置に対する前記重複データに関するアクセス要求において前記重複データを識別可能な第二の識別子と、を関連付けたレコードを包含する参照先情報を記憶する参照先情報記憶手段と、前記複数の記憶装置のうち、特定の記憶装置に対して、前記重複データに関する更新アクセスが発生した場合に、前記特定の記憶装置における前記重複データに関する前記第一及び第二の識別子を関連付けた情報を、前記参照先情報から削除するとともに、前記重複データを更新する更新データを、前記特定の記憶装置に格納する管理手段と、を備えることを特徴とする。
【００１５】
上記目的を達成する他の見地において、本願発明のデータ記憶制御方法は、情報処理装置によって、複数の記憶装置が重複して記憶すべき重複データを、それら記憶装置が各々記憶する代わりに、重複データ記憶手段に記憶可能であり、前記重複データ記憶手段に記憶された前記重複データを識別可能な第一の識別子と、前記記憶装置に対する前記重複データに関するアクセス要求において前記重複データを識別可能な第二の識別子と、を関連付けたレコードを包含する参照先情報を参照先情報記憶手段に記憶し、前記複数の記憶装置のうち、特定の記憶装置に対して、前記重複データに関する更新アクセスが発生した場合に、前記特定の記憶装置における前記重複データに関する前記第一及び第二の識別子を関連付けた情報を、前記参照先情報から削除するとともに、前記重複データを更新する更新データを、前記特定の記憶装置に格納することを特徴とする。
【００１６】
また、上記目的を達成する更なる見地において、本願発明に係るデータ記憶制御プログラムは、複数の記憶装置が重複して記憶すべき重複データを、それら記憶装置が各々記憶する代わりに、重複データ記憶手段に記憶する重複データ記憶処理と、前記重複データ記憶手段に記憶された前記重複データを識別可能な第一の識別子と、前記記憶装置に対する前記重複データに関するアクセス要求において前記重複データを識別可能な第二の識別子と、を関連付けたレコードを包含する参照先情報を参照先情報記憶手段に記憶する参照先情報記憶処理と、前記複数の記憶装置のうち、特定の記憶装置に対して、前記重複データに関する更新アクセスが発生した場合に、前記特定の記憶装置における前記重複データに関する前記第一及び第二の識別子を関連付けた情報を、前記参照先情報から削除するとともに、前記重複データを更新する更新データを、前記特定の記憶装置に格納する管理処理と、をコンピュータに実行させることを特徴とする。
【００１７】
更に、本発明は、係るデータ記憶制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記憶媒体によっても実現可能である。
【発明の効果】
【００１８】
本願発明は、特定の記憶装置に格納された重複データを別の記憶装置が参照するシステムにおいて当該重複データに対する更新が発生した場合に、更新処理に伴いシステム性能が低下することを回避することを可能とする。
【図面の簡単な説明】
【００１９】
【図１】本願発明の第１の実施形態に係るデータ記憶制御システムの構成を示すブロック図である。
【図２Ａ】本願発明の第１の実施形態に係るデータ記憶制御システムがリンクドクローンボリュームに格納されたデータを更新する動作を示すフローチャート（１／２）である。
【図２Ｂ】本願発明の第１の実施形態に係るデータ記憶制御システムがリンクドクローンボリュームに格納されたデータを更新する動作を示すフローチャート（２／２）である。
【図３】本願発明の第１の実施形態に係るデータ記憶制御システムが重複データ記憶ボリュームに格納された未使用の重複データを削除する動作を示すフローチャートである。
【図４】本願発明の第１の実施形態に係る参照先情報の構成例（初期状態）を示す図である。
【図５】本願発明の第１の実施形態に係る参照先情報の構成例（更新後状態１）を示す図である。
【図６】本願発明の第１の実施形態に係る参照先情報の構成例（更新後状態２）を示す図である。
【図７】本願発明の第１の実施形態に係る参照先情報の構成例（更新後状態３）を示す図である。
【図８Ａ】本願発明の第１の実施形態の変形例に係るデータ記憶制御システムが重複データの存在を確認した結果を基に各ボリュームの内容を更新する動作を示すフローチャート（１／３）である。
【図８Ｂ】本願発明の第１の実施形態の変形例に係るデータ記憶制御システムが重複データの存在を確認した結果を基に各ボリュームの内容を更新する動作を示すフローチャート（２／３）である。
【図８Ｃ】本願発明の第１の実施形態の変形例に係るデータ記憶制御システムが重複データの存在を確認した結果を基に各ボリュームの内容を更新する動作を示すフローチャート（３／３）である。
【図９】本願発明の第１の実施形態の変形例に係る参照先情報の構成例（初期状態）を示す図である。
【図１０】本願発明の第１の実施形態の変形例に係る参照先情報の構成例（更新後状態）を示す図である。
【図１１】本願発明の第２の実施形態に係るデータ記憶制御装置の構成を示すブロック図である。
【図１２】本願発明の各実施形態のデータ記憶制御装置を実行可能な情報処理装置の構成を示すブロック図である。
【図１３】リンクドクローン技術におけるマスタボリュームとリンクドクローンボリュームの関係を例示する図である。
【図１４】リンクドクローンボリュームにおけるＬＤが他のＬＤに格納されたデータを参照している場合における参照先のデータに対する更新動作を例示する図である。
【発明を実施するための形態】
【００２０】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００２１】
＜第１の実施形態＞
図１は、第１の実施形態に係るデータ記憶制御システム１の構成を概念的に示すブロック図である。本実施形態に係るデータ記憶制御システム１は、データ記憶制御装置１０、及び、ｎ個（ｎは１以上の整数）のホスト装置２０−１乃至ｎを有する。
【００２２】
ホスト装置２０−１乃至ｎは、仮想マシン環境に構築された仮想マシンであり、データ記憶制御装置１０にアクセスすることにより、データの読み込み及び書き込みを行う。
【００２３】
データ記憶制御装置１０は、管理部１１、参照先情報記憶部１２、ホスト制御部１３、ディスク制御部１４、及び、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）１５を備えている。管理部１１は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。参照先情報記憶部１２、及び、ＲＡＩＤ１５は、電子回路あるいはコンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによってアクセス制御が行われる記憶装置である。
【００２４】
ホスト制御部１３は、データ記憶制御装置１０とホスト装置２０−１乃至ｎとの間で行われるデータの送受信を制御する。ホスト制御部１３は、ホスト装置２０−１乃至ｎの何れかからデータアクセスリクエストを受信した際、データアクセスリクエストを管理部１１、及びディスク制御部１４へ入力する。ホスト制御部１３は、また、ディスク制御部１４から受信した読み込みアクセスにおける読み込みデータを、係る読み込みアクセスを要求したホスト装置へ送信する。
【００２５】
ディスク制御部１４は、管理部１１から入力されたアクセスアドレス情報に基づき、ＲＡＩＤ１５へアクセスする。ディスク制御部１４は、ホスト制御部１３から入力されたデータアクセスリクエストが包含する、書き込みアクセスにおける書き込みデータを、ＲＡＩＤ１５へ書き込み、ＲＡＩＤ１５から入手した読み込みアクセスにおける読み込みデータを、ホスト制御部１３へ入力する。
【００２６】
ＲＡＩＤ１５は、ｍ個（ｍは１以上の整数）のＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１５０−１乃至ｍを備えている。ＲＡＩＤ１５は、ＨＤＤの代わりに、例えばＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）等の記憶装置を備えてもよい。ＲＡＩＤ１５は、仮想マシン環境におけるデータを記憶する領域である、マスタボリューム１００、重複データ記憶ボリューム２００、及び、リンクドクローンボリューム３００を構築している。マスタボリューム１００は、ＬＤ１１０を有している。尚、マスタボリューム１００は、複数のＬＤを有してもよい。重複データ記憶ボリューム２００は、ＬＤ２１０を有している。尚、重複データ記憶ボリューム２００は、複数のＬＤを有してもよい。
【００２７】
リンクドクローンボリューム３００は、ｎ個のＬＤ３１０−１乃至ｎを有している。ＬＤ３１０−１乃至ｎは、それぞれ、ホスト装置２０−１乃至ｎがデータを格納する領域として使用するＬＤである。尚、本実施形態では、便宜上、ホスト装置２０−ｉ（ｉは１乃至ｎのいずれかの整数）は、ＬＤ３１０−ｉへアクセスするものとするが、これは一例にすぎない。例えば、データ記憶制御システム１における、ホスト装置の数とリンクドクローンボリュームにおけるＬＤの数が異なり、１つのホスト装置からリンクドクローンボリュームにおける複数のＬＤにアクセスしてもよい。
【００２８】
参照先情報記憶部１２は、参照先情報１２０を記憶している。参照先情報１２０の構成例を図４に示す。参照先情報１２０は、リンクドクローンＬＤ１２１と、リンクドクローンＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）アドレス１２２と、参照先ＬＤ番号１２３と、参照先ＬＢＡアドレス１２４と、を関連付けたレコードを包含している。
【００２９】
リンクドクローンＬＤ１２１は、リンクドクローンボリューム３００におけるＬＤ３１０−１乃至ｎを識別可能なＬＤ番号である。本実施形態では、ＬＤ３１０−１乃至ｎに対して、ぞれぞれ、ＬＤ＃１乃至＃ｎのＬＤ番号が付与されているものとする。リンクドクローンＬＢＡアドレス１２２は、ＬＤ３１０−１乃至ｎにおけるＬＢＡのベースアドレスを示している。本実施形態では、マスタボリューム１００、重複データ記憶ボリューム２００、及び、リンクドクローンボリューム３００は、“８０００ｈ”（ｈは１６進数を示す）であるＬＢＡアドレスごとに管理されている。すなわち、ＬＤ１１０、ＬＤ２１０、及び、ＬＤ３１０−１乃至ｎにおける１つの論理ブロックの大きさは、３２ＫＢ（キロバイト）である。
【００３０】
参照先ＬＤ番号１２３は、ＬＤ３１０−１乃至ｎにおける、リンクドクローンＬＢＡアドレス１２２が示す論理ブロックが、他のＬＤにおける論理ブロックに格納されたデータを参照する場合において、参照先の論理ブロックが存在するＬＤを示すＬＤ番号を示している。本実施形態では、マスタボリューム１００におけるＬＤ１１０、及び、重複データボリューム２００におけるＬＤ２１０に対して、それぞれ、“１１０ｈ”、及び、“２１０ｈ”であるＬＤ番号が付与されているものとする。参照先ＬＢＡアドレス１２４は、係る参照先の論理ブロックを示すＬＢＡアドレスを示している。
【００３１】
尚、ＬＤ３１０−１乃至ｎにおける、リンクドクローンＬＢＡアドレス１２２が示す各論理ブロックが、他のＬＤにおける論理ブロックに格納されたデータを参照しない場合には、参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４が示す値は、それぞれ、無効値であることを示す“ＦＦＦＦｈ”及び“ＦＦＦＦＦＦＦＦｈ”となる。無効値であることを示す値は、“ＦＦＦＦｈ”及び“ＦＦＦＦＦＦＦＦｈ”以外の値であってもよい。この場合、ＬＤ３１０−１乃至ｎは、係る論理ブロックに関するデータを、リンクドクローンＬＢＡアドレス１２２が示すデータ記憶領域に格納している。
【００３２】
例えば、図４が示す参照先情報１２０における１番目のレコードは、ＬＤ３１０−１におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロックが、ＬＤ２１０におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロックに格納されたデータを参照していることを示している。また、図４が示す参照先情報１２０は、ＬＤ３１０−２におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロックが、他の論理ブロックに格納されたデータを参照せずに、当該論理ブロックに関するデータ記憶領域にデータを格納していることを示している。
【００３３】
管理部１１は、ホスト制御部１３を経由して入手した、ホスト装置２０−１乃至ｎの何れかから発行されたデータ書き込みリクエストが包含する書き込みデータと重複する重複するデータが、重複データ記憶ボリューム２００、あるいは、リンクドクローンボリューム３００に存在するか否かを論理ブロックごとに確認する。管理部１１は、係る重複データの存在の有無を確認する際に、例えば、書き込みデータに関して３２ＫＢブロック単位にハッシュ値を算出し、ハッシュ値が一致する論理ブロックが既存である場合に、書き込みデータにおける３２ＫＢブロックが示す値と、係る既存の論理ブロックが示す値が一致するか否かを確認してもよい。あるいは、管理部１１は、上述した方法とは別の方法により、係る重複データの存在の有無を確認してもよい。
【００３４】
管理部１１は、係る重複データが、重複データ記憶ボリューム２００、及び、リンクドクローンボリューム３００のいずれにも存在しない場合、書き込み先であるＬＤ３１０−ｉにおける指定されたＬＢＡアドレスに、ディスク制御部１４を介して書き込みデータを書き込む。この際、管理部１１は、参照先情報１２０における、書き込み先の論理ブロックに関するリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４に有効な値が設定されているか否かを確認する。管理部１１は、係る確認の結果、有効な値が設定されている場合、書き込み先の論理ブロックに関する参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４に設定された値を無効値に設定する。
【００３５】
参照先情報１２０の状態が図４に示す状態である場合において、重複データが、重複データ記憶ボリューム２００、及び、リンクドクローンボリューム３００のいずれにも存在しない書き込みアクセスが発生した際に、管理部１１が参照先情報１２０を更新した結果を図５に例示する。図５に示す例においては、ＬＤ３１０−１におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロックに対して、重複データが、重複データ記憶ボリューム２００、及び、リンクドクローンボリューム３００のいずれにも存在しない書き込みアクセスが発生している。管理部１１は、参照先情報１２０における、リンクドクローンＬＤ１２１が示す値が“ＬＤ＃１”であり、かつ、リンクドクローンＬＢＡアドレス１２２が示す値が“００００００００ｈ”であるレコードにおける、参照先ＬＤ番号１２３が示す値を“２１０ｈ”から“ＦＦＦＦｈ”に更新し、参照先ＬＢＡアドレス１２４が示す値を“００００００００ｈ”から“ＦＦＦＦＦＦＦＦｈ”に更新する。そして、管理部１１は、ディスク制御部１４を介して、ＬＤ３１０−１におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロックに、書き込みデータを書き込む。
【００３６】
管理部１１は、係る重複データが、リンクドクローンボリューム３００に存在する場合、ＬＤ２１０における何れかのＬＢＡアドレスに、ディスク制御部１４を介して書き込みデータを書き込む。管理部１１は、ＬＤ２１０に対して書き込むＬＢＡアドレスを、未使用である論理ブロックに関するＬＢＡアドレスの中から所定の基準に従って決定する。管理部１１は、参照先情報１２０における、書き込み先に関するリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４が示す値を、ＬＤ２１０を示すＬＤ番号及び当該重複データを書き込んだＬＢＡアドレスが示す値に更新する。管理部１１は、参照先情報１２０において、当該重複データを記憶していることを示すレコードにおける参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該重複データを書き込んだＬＢＡアドレスに更新する。管理部１１は、リンクドクローンボリューム３００に記憶されていた当該重複データを、ディスク制御部１４を介して削除する。
【００３７】
参照先情報１２０の状態が図５に示す状態である場合において、重複データが、リンクドクローンボリューム３００に存在する書き込みアクセスが発生した際に、管理部１１が参照先情報１２０を更新した結果を図６に例示する。図６に示す例においては、ＬＤ３１０−１におけるＬＢＡアドレスが“００００８０００ｈ”である論理ブロックに対して、重複データが、ＬＤ３１０−２におけるＬＢＡアドレスが“００００８０００ｈ”である論理ブロックに存在する書き込みアクセスが発生している。管理部１１は、ＬＤ２１０における、ＬＢＡアドレスが“０００１８０００”である未使用の論理ブロックを所定の基準に従って選択し、当該論理ブロックに、書き込みデータを書き込む。管理部１１は、参照先情報１２０における、リンクドクローンＬＤ１２１が示す値が“ＬＤ＃１”であり、かつ、リンクドクローンＬＢＡアドレス１２２が示す値が“００００８０００ｈ”であるレコードにおける、参照先ＬＤ番号１２３が示す値を“１１０ｈ”から“２１０ｈ”に更新し、参照先ＬＢＡアドレス１２４が示す値を“００００８０００ｈ”から“００００１８００ｈ”に更新する。管理部１１は、同様に、参照先情報１２０における、リンクドクローンＬＤ１２１が示す値が“ＬＤ＃２”であり、かつ、リンクドクローンＬＢＡアドレス１２２が示す値が“００００８０００ｈ”であるレコードにおける、参照先ＬＤ番号１２３が示す値を“ＦＦＦＦｈ”から“２１０ｈ”に更新し、参照先ＬＢＡアドレス１２４が示す値を“ＦＦＦＦＦＦＦＦｈ”から“００００１８００ｈ”に更新する。そして、管理部１１は、ＬＤ３１０−２に格納されていた当該重複データを、ディスク制御部１４を介して削除する。
【００３８】
管理部１１は、係る重複データが、重複データ記憶ボリューム２００に存在する場合、参照先情報１２０における、書き込み先に関するリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該重複データが格納されたＬＢＡアドレスに更新する。
【００３９】
参照先情報１２０の状態が図６に示す状態である場合において、重複データが、重複データ記憶ボリューム２００に存在する書き込みアクセスが発生した際に、管理部１１が参照先情報１２０を更新した結果を図７に例示する。図７に示す例においては、ＬＤ３１０−３におけるＬＢＡアドレスが“００００８０００ｈ”である論理ブロックに対して、重複データが、ＬＤ２１０におけるＬＢＡアドレスが“０００１８０００ｈ”である論理ブロックに存在する書き込みアクセスが発生している。管理部１１は、参照先情報１２０における、リンクドクローンＬＤ１２１が示す値が“ＬＤ＃３”であり、かつ、リンクドクローンＬＢＡアドレス１２２が示す値が“００００８０００ｈ”であるレコードにおける、参照先ＬＤ番号１２３が示す値を“１１０ｈ”から“２１０ｈ”に更新し、参照先ＬＢＡアドレス１２４が示す値を“００００８０００ｈ”から“００００１８００ｈ”に更新する。この場合、管理部１１が行う処理は、参照先情報１２０を更新する処理のみであり、管理部１１は、書き込みデータを書き込む処理、及び、重複データを削除する処理を行わない。
【００４０】
管理部１１は、また、重複データ記憶ボリューム２００におけるＬＤ２１０に格納されている重複データが、リンクドクローンボリューム３００から参照されている状態であるいか否かを所定の時間に確認する。管理部１１は、係る確認を、所定の時間間隔で行ってもよいし、システム管理者によるコマンド入力等を契機として行ってもよい。
【００４１】
管理部１１は、この際、まず、ＬＤ２１０における論理ブロックごとに、重複データが格納されているか否かを確認する。管理部１１は、重複データが格納されているか否かの判定について、例えば、論理ブロックごとに設けられた有効フラグを確認することにより、あるいは、無効であることを示す無効データが格納されているか否かを確認することなどにより行う。
【００４２】
管理部１１は、ＬＤ２１０における論理ブロックに重複データが格納されている場合、参照先情報１２０において、参照先ＬＤ番号１２３としてＬＤ２１０を示すＬＤ番号が設定され、参照先ＬＢＡアドレス１２４として当該論理ブロックを示すＬＢＡアドレスが設定されたレコードが存在するか否かを確認する。管理部１１は、係るレコードが存在しない場合、当該重複データが既に未使用の状態にあると判定して、当該重複データを、ディスク制御部１４を介して削除する。
【００４３】
次に図２Ａ乃至２Ｂのフローチャートを参照して、本実施形態に係るデータ記憶制御システム１がリンクドクローンボリューム３００に格納されたデータを更新する動作（処理）について詳細に説明する。
【００４４】
ホスト制御部１３は、ホスト装置２０からリンクドクローンボリューム３００に対する書き込みリクエストを受信し、管理部１１へ入力する（ステップＳ１０１）。管理部１１は、書き込みデータと重複する重複データが、重複データ記憶ボリューム２００、あるいは、リンクドクローンボリューム３００に存在するか否かを確認する（ステップＳ１０２）。
【００４５】
重複データが、重複データ記憶ボリューム２００に存在する場合（ステップＳ１０３でＹｅｓ）、管理部１１は、参照先情報１２０における、書き込み先に関するリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該重複データが格納されたＬＢＡアドレスに更新し（ステップＳ１０４）、全体の処理は終了する。
【００４６】
重複データが、重複データ記憶ボリューム２００に存在せず（ステップＳ１０３でＮｏ）、かつ、重複データが、リンクドクローンボリューム３００に存在する場合（ステップＳ１０５でＹｅｓ）、管理部１１は、ＬＤ２１０における何れかのＬＢＡアドレスに、ディスク制御部１４を介して書き込みデータを書き込む（ステップＳ１０６）。管理部１１は、参照先情報１２０における、書き込み先に関するリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該重複データを書き込んだＬＢＡアドレスに更新する（ステップＳ１０７）。
【００４７】
管理部１１は、参照先情報１２０において、当該重複データを記憶していることを示すレコードにおける参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該重複データを書き込んだＬＢＡアドレスに更新する（ステップＳ１０８）。管理部１１は、リンクドクローンボリューム３００に格納されていた当該重複データを、ディスク制御部１４を介して削除し（ステップＳ１０９）、全体の処理は終了する。
【００４８】
重複データが、重複データ記憶ボリューム２００に存在せず（ステップＳ１０３でＮｏ）、かつ、重複データが、リンクドクローンボリューム３００に存在しない場合（ステップＳ１０５でＮｏ）、管理部１１は、参照先情報１２０における、書き込み先に関するリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４に有効な値が設定されているか否かを確認する（ステップＳ１１０）。
【００４９】
参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４に有効な値が設定されている場合（ステップＳ１１１でＹｅｓ）、管理部１１は、参照先情報１２０における、書き込み先に関する参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４に設定された値を無効値に設定する（ステップＳ１１２）。参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４に有効な値が設定されていない場合（ステップＳ１１１でＮｏ）、処理はステップＳ１１３へ進む。管理部１１は、書き込み先のＬＤ３１０−ｉにおける指定されたＬＢＡアドレスに、ディスク制御部１４を介して書き込みデータを書き込み（ステップＳ１１３）、全体の処理は終了する。
【００５０】
次に図３のフローチャートを参照して、本実施形態に係るデータ記憶制御システム１が重複データ記憶ボリューム２００に格納された未使用の重複データを削除する動作（処理）について詳細に説明する。
【００５１】
データ記憶制御システム１は、ＬＤ２１０におけるＬＢＡアドレスが０から最上位アドレスになるまで、ステップＳ２０１からステップＳ２０７までのループ処理を行う（ステップＳ２０１）。
【００５２】
管理部１１は、当該ＬＢＡアドレスに重複データが格納されているか否かを確認する（ステップＳ２０２）。当該ＬＢＡアドレスに重複データが格納されていない場合（ステップＳ２０３でＮｏ）、処理はステップＳ２０７へ進む。当該ＬＢＡアドレスに重複データが格納されている場合（ステップＳ２０３でＹｅｓ）、管理部１１は、参照先情報１２０において、参照先ＬＤ番号１２３としてＬＤ２１０を示すＬＤ番号が設定され、参照先ＬＢＡアドレス１２４として当該ＬＢＡアドレスが設定されたレコードが存在するか否かを確認する（ステップＳ２０４）。
【００５３】
条件を満たすレコードが存在する場合（ステップＳ２０５でＹｅｓ）、処理はステップＳ２０７へ進む。条件を満たすレコードが存在しない場合（ステップＳ２０５でＮｏ）、管理部１１は、ＬＤ２１０における当該ＬＢＡアドレスに格納されていた重複データを、ディスク制御部１４を介して削除する（ステップＳ２０６）。ＬＤ２１０におけるＬＢＡアドレスが最上位アドレスでない場合は、データ記憶制御システム１は、ＬＢＡアドレスに８０００ｈを加算したＬＢＡアドレスについて、ステップＳ２０２からの処理を行い、ＬＢＡアドレスが最上位アドレスである場合、全体の処理は終了する（ステップＳ２０７）。
【００５４】
本実施形態に係るデータ記憶制御システム１は、特定の記憶装置に格納された重複データを別の記憶装置が参照するシステムにおいて、当該重複データに対する更新が発生した場合に、更新処理に伴いシステム性能が低下することを回避することができる。その理由は、管理部１１が重複データを重複データ記憶ボリューム２００に格納するようにすることにより、何れかの記憶装置に関する重複データを更新する際に、データ記憶制御装置１０が、当該重複データを退避する処理、及び、係る退避に伴う当該重複データを参照先として指定する情報を更新する処理を行う必要がないからである。
【００５５】
例えば、複数のユーザが同一のシステム環境を使用するシステムにおいて、各ユーザが使用するＯＳイメージ等のデータは共通である。この場合、各ユーザが使用するマシンごとにＯＳイメージ等の重複データを格納したのではデータを格納する効率が低下する。したがって、リンクドクローンのように、係る重複データを何れかのマシンにのみ格納し、他のマシンから重複データを参照するような技術が一般的に用いられる。
【００５６】
しかしながらこのような技術を用いたシステムにおいて、重複データを格納したマシンに関して、当該重複データを更新するイベントが発生し、その他のマシンが更新前の重複データを使用し続ける必要があるケースでは、図１４において示したように、更新前の重複データを別のマシンに退避したのち、重複データを参照先として指定する情報を更新する処理を行う必要がある。大規模なコンピュータシステムにおいて、このような処理を行うと、システム性能が大きく低下する虞がある。
【００５７】
これに対して、本実施形態に係るデータ記憶制御システム１は、各ユーザがデータを格納する領域であるリンクドクローンボリューム３００とは別に、重複データを格納する領域として、重複データ記憶ボリューム２００を備えている。そして、管理部１１は、係る重複データをリンクドクローンボリューム３００ではなく重複データ記憶ボリューム２００に格納し、各ユーザが係る重複データを参照できるように、参照先情報１２０を更新する。したがって、本実施形態に係るデータ記憶制御システム１は、重複データを更新するイベントが発生した場合に、当該重複データを退避する処理、及び、係る退避に伴う当該重複データを参照先として指定する情報を更新する処理を行う必要がない。これにより、本実施形態に係るデータ記憶制御システム１は、重複データに対する更新が発生した場合に、更新処理に伴いシステム性能が低下することを回避することができる。
【００５８】
また、本実施形態に係るデータ記憶制御システム１において、管理部１１は、参照先情報１２０の中に、重複データ記憶ボリューム２００に格納された重複データを参照先として指定しているレコードがあるか否かを確認する。管理部１１は、係るレコードが存在しない場合は、当該重複データが未使用であると判定して、当該重複データを削除する。したがって、本実施形態に係るデータ記憶制御システム１は、重複データ記憶ボリューム２００から未使用であるデータを削除することにより、重複データ記憶ボリューム２００を効率的に使用することができる。
【００５９】
尚、本実施形態は、仮想マシン環境を使用しているが、仮想マシン環境に限定されるわけではない。マスタボリューム１００、重複データ記憶ボリューム２００、リンクドクローンボリューム３００、及び、ホスト装置２０−１乃至ｎは、それぞれ、実マシン環境における装置である場合もある。
【００６０】
（第１の実施形態の変形例）
上述した本実施形態に係るデータ記憶制御システム１は、以下に説明する変形例として、
重複データが存在するか否かの確認を、ホスト装置２０−１乃至ｎのいずれかから書き込みリクエストを受信したときでなく、データを更新したのちに行う場合がある。この場合、データ記憶制御システム１の構成は、図１に示す通りである。本変形例に係るデータ記憶制御システム１が重複データの存在を確認した結果を基に各ボリュームの内容を更新する動作（処理）について、図８Ａ乃至８Ｃのフローチャートを参照して詳細に説明する。
【００６１】
管理部１１は、重複データ記憶ボリューム２００及びリンクドクローンボリューム３００における全てのＬＤについて、格納されたデータに関する重複データが存在するかどうかの確認を開始する（ステップＳ３０１）。確認対象がＬＤ２１０である場合（ステップＳ３０２でＹｅｓ）、データ記憶制御システム１は、ＬＤ２１０におけるＬＢＡアドレスが０から最上位アドレスになるまで、ステップＳ３０３からステップＳ３０９までのループ処理を行う（ステップＳ３０３）。
【００６２】
当該ＬＢＡアドレスにデータが格納されていない場合（ステップＳ３０４でＮｏ）、処理はステップＳ３０９へ進む。当該ＬＢＡアドレスにデータが格納されている場合（ステップＳ３０４でＹｅｓ）、管理部１１は、リンクドクローンボリューム３００において、当該データと重複する重複データが存在するか否かを確認する（ステップＳ３０５）。
【００６３】
重複データが存在しない場合（ステップＳ３０６でＮｏ）、処理はステップＳ３０９へ進む。重複データが存在する場合（ステップＳ３０６でＹｅｓ）、管理部１１は、参照先情報１２０における、当該重複データの記憶場所を示すリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該ＬＢＡアドレスに更新する（ステップＳ３０７）。管理部１１は、リンクドクローンボリューム３００に格納されていた当該重複データを、ディスク制御部１４を介して削除する（ステップＳ３０８）。
【００６４】
ＬＤ２１０におけるＬＢＡアドレスが最上位アドレスでない場合は、データ記憶制御システム１は、ＬＢＡアドレスに８０００ｈを加算したＬＢＡアドレスについて、ステップＳ３０３からの処理を行い、ＬＢＡアドレスが最上位アドレスである場合、処理はステップＳ３１０へ進む（ステップＳ３０９）。確認対象が最後のＬＤでない場合（ステップＳ３１０でＮｏ）、管理部１１は、確認対象として次のＬＤを選択し（ステップＳ３１１）、処理はステップＳ３０２へ戻る。確認対象が最後のＬＤである場合（ステップＳ３１０でＹｅｓ）、全体の処理は終了する。
【００６５】
確認対象がＬＤ２１０でない場合（ステップＳ３０２でＮｏ）、データ記憶制御システム１は、ＬＤ３１０−ｉにおけるＬＢＡアドレスが０から最上位アドレスになるまで、ステップＳ３１２からステップＳ３１８までのループ処理を行う（ステップＳ３１２）。
【００６６】
当該ＬＢＡアドレスにデータが格納されていない場合（ステップＳ３１３でＮｏ）、処理はステップＳ３１８へ進む。当該ＬＢＡアドレスにデータが格納されている場合（ステップＳ３１３でＹｅｓ）、管理部１１は、重複データ記憶ボリューム２００において、当該データと重複する重複データが存在するか否かを確認する（ステップＳ３１４）。
【００６７】
重複データが存在する場合（ステップＳ３１５でＹｅｓ）、管理部１１は、参照先情報１２０における、当該データの記憶場所を示すリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該重複データが格納されたＬＢＡアドレスに更新する（ステップＳ３１６）。管理部１１は、リンクドクローンボリューム３００に格納されていた当該データを、ディスク制御部１４を介して削除する（ステップＳ３１７）。
【００６８】
ＬＤ３１０−ｉにおけるＬＢＡアドレスが最上位アドレスでない場合は、データ記憶制御システム１は、ＬＢＡアドレスに８０００ｈを加算したＬＢＡアドレスについて、ステップＳ３１２からの処理を行い、ＬＢＡアドレスが最上位アドレスである場合、処理はステップＳ３１０へ進む（ステップＳ３１８）。
【００６９】
重複データが存在しない場合（ステップＳ３１５でＮｏ）、管理部１１は、リンクドクローンボリューム３００において、当該データと重複する重複データが存在するか否かを確認する（ステップＳ３１９）。重複データが存在しない場合（ステップＳ３２０でＮｏ）、処理はステップＳ３１８へ進む。
【００７０】
重複データが存在する場合（ステップＳ３１５でＹｅｓ）、管理部１１は、ＬＤ２１０における何れかのＬＢＡアドレスに、ディスク制御部１４を介して当該重複データを書き込む（ステップＳ３２１）。管理部１１は、参照先情報１２０における、当該データ及び当該重複データの記憶場所を示すリンクドクローンＬＤ１２１及びリンクドクローンＬＢＡアドレス１２２に関連付けられた参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４を、ＬＤ２１０を示すＬＤ番号及び当該重複データを書き込んだＬＢＡアドレスに更新する（ステップＳ３２２）。管理部１１は、リンクドクローンボリューム３００に格納されていた当該データ及び当該重複データを、ディスク制御部１４を介して削除し（ステップＳ３２３）、処理は、ステップＳ３１８へ進む。
【００７１】
管理部１１が重複データの存在を確認した結果を基に、参照先情報１２０を、図９に示す状態から更新した結果を図１０に例示する。参照先情報１２０が図９に示す状態である場合、ＬＤ３１０−１におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロック、ＬＤ３１０−２におけるＬＢＡアドレスが“００００８０００ｈ”である論理ブロック、及び、ＬＤ３１０−２におけるＬＢＡアドレスが“００００８０００ｈ”である論理ブロックは、他の論理ブロックに格納されたデータを参照せずに、データを格納している。
【００７２】
ＬＤ３１０−１におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロックに格納されたデータと重複する重複データが、ＬＤ２１０におけるＬＢＡアドレスが“００００００００ｈ”である論理ブロックに存在したとする。この場合、管理部１１は、上述したステップＳ３０７の処理行う。この結果、参照先情報１２０における、ＬＤ３１０−１関するリンクドクローンＬＢＡアドレス１２２が“００００００００ｈ”であるレコードにおける参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４が示す値は、図１０に示す値に更新される。
【００７３】
また、ＬＤ３１０−２におけるＬＢＡアドレスが“００００８０００ｈ”である論理ブロックに格納されたデータと、ＬＤ３１０−３におけるＬＢＡアドレスが“００００８０００ｈ”である論理ブロックに格納されたデータとが、同一のデータ、すなわち、重複データであるとする。この場合、管理部１１は、上述したステップＳ３２１の処理を行い、当該重複データを、ＬＤ２１０におけるＬＢＡアドレスが“０００２８０００ｈ”である論理ブロックに書き込む。そして、管理部１１は、上述したステップＳ３２２の処理行う。この結果、参照先情報１２０における、ＬＤ３１０−２乃至３関するリンクドクローンＬＢＡアドレス１２２が“００００８０００ｈ”であるレコードにおける参照先ＬＤ番号１２３及び参照先ＬＢＡアドレス１２４が示す値は、図１０に示す値に更新される。
【００７４】
本変形例に係るデータ記憶制御システム１は、特定の記憶装置に格納された重複データを別の記憶装置が参照するシステムにおいて当該重複データに対する更新が発生した場合に、更新処理に伴いシステム性能が低下することを回避することができる。その理由は、管理部１１が重複データを重複データ記憶ボリューム２００に格納するようにすることにより、何れかの記憶装置に関する重複データを更新する際に、データ記憶制御装置１０が、当該重複データを退避する処理、及び、係る退避に伴う当該重複データを参照先として指定する情報を更新する処理を行う必要がないからである。
【００７５】
＜第２の実施形態＞
図１１は第２の実施形態のデータ記憶制御装置３０の構成を概念的に示すブロック図である。
【００７６】
本実施形態のデータ記憶制御装置３０は、管理部３１、参照先情報記憶部３２、及び、重複データ記憶部３３を備えている。
【００７７】
重複データ記憶部３３は、複数、例えばｎ個の記憶装置４０−１乃至ｎが重複して記憶すべき重複データを、記憶装置４０−１乃至ｎが各々記憶する代わりに記憶する。
【００７８】
参照先情報記憶部３２は、重複データ記憶部３３に記憶された係る重複データを識別可能な第一の識別子と、記憶装置４０−１乃至ｎに対する重複データに関するアクセス要求において重複データを識別可能な第二の識別子と、を関連付けたレコードを包含する参照先情報３２０を記憶する。
【００７９】
管理部３１は、記憶装置４０−１乃至ｎにおける特定の記憶装置に対して、重複データに関する更新アクセスが発生した場合に、係る特定の記憶装置における重複データに関する係る第一及び第二の識別子を関連付けた情報を、参照先情報３２０から削除するとともに、重複データを更新する更新データを、係る特定の記憶装置に格納する。
【００８０】
本実施形態に係るデータ記憶制御装置３０は、特定の記憶装置に格納された重複データを別の記憶装置が参照するシステムにおいて、当該重複データに対する更新が発生した場合に、更新処理に伴いシステム性能が低下することを回避することができる。その理由は、管理部３１が重複データを重複データ記憶部３３に格納するようにすることにより、記憶装置４０−１乃至ｎにおける何れかの記憶装置に関する重複データを更新する際に、データ記憶制御装置３０が、当該重複データを退避する処理、及び、係る退避に伴う当該重複データを参照先として指定する情報を更新する処理を行う必要がないからである。
【００８１】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図１１に示した各部は、専用のＨＷ（電子回路）によって実現することができる。また、少なくとも管理部１１及び３１、参照先情報記憶部１２及び３２に関する記憶制御機能、及び、重複データ記憶ボリューム部２００及び重複データ記憶部３３に関する記憶制御機能は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図１２を参照して説明する。
【００８２】
図１２は、本発明の模範的な実施形態に係るデータ記憶制御装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図１２は、図１、及び、図１１に示したデータ記憶制御装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００８３】
図１２に示した情報処理装置９００は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）、ＲＯＭ９０２（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）、ＲＡＭ９０３（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）、ハードディスク９０４（記憶装置）、外部装置との通信インタフェース９０５（Ｉｎｔｅｒｆａｃｅ：以降、「Ｉ／Ｆ」と称する）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記憶媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、及び、入出力インタフェース９０９を備え、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【００８４】
そして、上述した実施形態を例に説明した本発明は、図１２に示した情報処理装置９００に対して、その実施形態の説明において参照したブロック構成図（図１、及び、図１１）における管理部１１及び３１、参照先情報記憶部１２及び３２に関する記憶制御機能、及び、重複データ記憶ボリューム部２００及び重複データ記憶部３３に関する記憶制御機能、或いはフローチャート（図２Ａ乃至２Ｂ、及び、図８Ａ乃至８Ｃ）の機能を実現可能なコンピュータプログラムを供給した後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００８５】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記憶媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記憶媒体９０７によって構成されると捉えることができる。
【００８６】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００８７】
１    データ記憶制御システム
１０    データ記憶制御装置
１１    管理部
１２    参照先情報記憶部
１２０    参照先情報
１２１    リンクドクローンＬＤ
１２２    リンクドクローンＬＢＡアドレス
１２３    参照先ＬＤ番号
１２４    参照先ＬＢＡアドレス
１３    ホスト制御部
１４    ディスク制御部
１５    ＲＡＩＤ
１５０−１乃至ｍ    ＨＤＤ
１００    マスタボリューム
１１０    ＬＤ
２００    重複データ記憶ボリューム
２１０    ＬＤ
３００    リンクドクローンボリューム
３１０−１乃至ｎ    ＬＤ
２０−１乃至ｎ    ホスト装置
３０    データ記憶制御装置
３１    管理部
３２    参照先情報記憶部
３２０    参照先情報
４０−１乃至ｎ    記憶装置
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク
９０５    通信インタフェース
９０６    バス
９０７    記憶媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2015141508.tif 000003
【図２Ａ】
2015141508.tif 000004
【図２Ｂ】
2015141508.tif 000005
【図３】
2015141508.tif 000006
【図４】
2015141508.tif 000007
【図５】
2015141508.tif 000008
【図６】
2015141508.tif 000009
【図７】
2015141508.tif 000010
【図８Ａ】
2015141508.tif 000011
【図８Ｂ】
2015141508.tif 000012
【図８Ｃ】
2015141508.tif 000013
【図９】
2015141508.tif 000014
【図１０】
2015141508.tif 000015
【図１１】
2015141508.tif 000016
【図１２】
2015141508.tif 000017
【図１３】
2015141508.tif 000018
【図１４】
2015141508.tif 000019