(57)【要約】【課題】スナップショットファイルからのデータの読み出し時間を短縮する。【解決手段】情報処理装置１０は、元ファイル１１ａと複数のスナップショットファイル１１ｂ，１１ｃとデータ位置管理情報１１ｄとを記憶する。データ位置管理情報１１ｄには、特定スナップショットファイル作成時に元ファイル１１ａに格納されていたデータを有している、スナップショットファイルまたは元ファイル１１ａのファイル識別情報が設定されている。情報処理装置１０は、特定スナップショットファイルからのデータのリード要求に応じて、データ位置管理情報１１ｄから、リード要求で読み出すデータを有するブロックに設定されたファイル識別情報を取得する。そして情報処理装置１０は、取得したファイル識別情報で示されたスナップショットファイルまたは元ファイル１１ａからデータを読み出し、読み出したデータを出力する。【選択図】図１
2019185148.tif 000002
【特許請求の範囲】
【請求項１】
元ファイルと、異なる複数の時期に前記元ファイルに格納されていたデータのコピーを、ブロック単位でのコピーオンライトにより格納するための複数のスナップショットファイルと、特定スナップショットファイル作成時に前記元ファイルに格納されていたデータを有している、スナップショットファイルまたは前記元ファイルのファイル識別情報が、前記特定スナップショットファイル内のブロックごとに設定されたデータ位置管理情報と、を記憶する記憶部と、
前記特定スナップショットファイルからのデータのリード要求に応じて、前記データ位置管理情報から、前記リード要求で読み出すデータを有するブロックに設定された前記ファイル識別情報を取得し、取得した前記ファイル識別情報で示されたスナップショットファイルまたは前記元ファイルから、前記リード要求で指定されたデータを読み出し、読み出したデータを出力する処理部と、
を有する情報処理装置。
【請求項２】
前記処理部は、前記特定スナップショットファイルより前に作成された旧世代スナップショットファイル内のブロックからのデータの読み出しを要求する旧世代データリード要求に応じて、前記旧世代スナップショットファイルおよび前記旧世代スナップショットファイルより後に作成されたスナップショットファイルについて、作成が古い方から順に前記旧世代データリード要求で指定されたデータを有しているか否かを判断し、前記旧世代データリード要求で指定されたデータを有しているスナップショットファイルを、データ読み出し元ファイルとして特定し、前記データ読み出し元ファイルが特定できずに判断対象が前記特定スナップショットファイルに到達すると、前記データ位置管理情報に基づいて前記データ読み出し元ファイルを特定し、特定した前記データ読み出し元ファイルから、前記旧世代データリード要求で指定されたデータを読み出し、読み出したデータを出力する、
請求項１記載の情報処理装置。
【請求項３】
前記処理部は、前記特定スナップショットファイル内のブロックごとに、前記複数のスナップショットファイルおよび前記元ファイルのうち、前記特定スナップショットファイル作成時に前記元ファイルに格納されていたデータを有しているファイルを特定し、ブロックごとに、特定したファイルの前記ファイル識別情報を前記データ位置管理情報に設定する、
請求項１または２記載の情報処理装置。
【請求項４】
前記処理部は、前記特定スナップショットファイルが複数あり、第１の特定スナップショットファイルの第１のデータ位置管理情報に、ブロックごとの前記ファイル識別情報が設定済みの場合、前記第１の特定スナップショットファイルより前に作成された第２の特定スナップショットファイルの第２のデータ位置管理情報へのブロックごとの前記ファイル識別情報の設定時には、前記第２の特定スナップショットファイル、および前記第２の特定スナップショットの作成後、かつ前記第１の特定スナップショットファイルの作成前に作成されたスナップショットファイルのうち、前記第２の特定スナップショットファイル作成時に前記元ファイルに格納されていたデータを有しているファイルを、前記第２の特定スナップショットファイル内のブロックごとに特定し、ブロックごとに特定したファイルの前記ファイル識別情報を前記第２のデータ位置管理情報に設定する、
請求項３記載の情報処理装置。
【請求項５】
前記処理部は、コピーオンライトにより最新のスナップショットファイルに前記元ファイル内のデータをコピーしたとき、前記データ位置管理情報において、コピーされたデータを含むブロックに対応付けて前記元ファイルの前記ファイル識別情報が設定されていた場合、コピーされたデータを含むブロックに対応する前記ファイル識別情報を、最新のスナップショットファイルの前記ファイル識別情報に変更する、
請求項１ないし３のいずれかに記載の情報処理装置。
【請求項６】
前記処理部は、前記特定スナップショットファイル内の第１ブロックからのデータのリード要求を受信したときに、前記特定スナップショットファイル内のブロックの配列において、前記第１ブロックに続く所定数の第２ブロックについて、前記複数のスナップショットファイルおよび前記元ファイルのうち、前記特定スナップショットファイル作成時に前記元ファイルに格納されていたデータを有しているファイルを特定し、前記第２ブロックごとに特定したファイルの前記ファイル識別情報を前記データ位置管理情報に設定する、
請求項１記載の情報処理装置。
【請求項７】
前記処理部は、前記リード要求で要求されるデータ量に基づいて、前記第２ブロックの数を決定する、
請求項６記載の情報処理装置。
【請求項８】
コンピュータが、
元ファイルと、異なる複数の時期に前記元ファイルに格納されていたデータのコピーを、ブロック単位でのコピーオンライトにより格納するための複数のスナップショットファイルと、特定スナップショットファイル作成時に前記元ファイルに格納されていたデータを有している、スナップショットファイルまたは前記元ファイルのファイル識別情報が、前記特定スナップショットファイル内のブロックごとに設定されたデータ位置管理情報と、を記憶部に格納し、
前記特定スナップショットファイルからのデータのリード要求に応じて、前記データ位置管理情報から、前記リード要求で読み出すデータを有するブロックに設定された前記ファイル識別情報を取得し、
取得した前記ファイル識別情報で示されたスナップショットファイルまたは前記元ファイルから、前記リード要求で指定されたデータを読み出し、
読み出したデータを出力する、
ファイル管理方法。
【請求項９】
コンピュータに、
元ファイルと、異なる複数の時期に前記元ファイルに格納されていたデータのコピーを、ブロック単位でのコピーオンライトにより格納するための複数のスナップショットファイルと、特定スナップショットファイル作成時に前記元ファイルに格納されていたデータを有している、スナップショットファイルまたは前記元ファイルのファイル識別情報が、前記特定スナップショットファイル内のブロックごとに設定されたデータ位置管理情報と、を記憶部に格納し、
前記特定スナップショットファイルからのデータのリード要求に応じて、前記データ位置管理情報から、前記リード要求で読み出すデータを有するブロックに設定された前記ファイル識別情報を取得し、
取得した前記ファイル識別情報で示されたスナップショットファイルまたは前記元ファイルから、前記リード要求で指定されたデータを読み出し、
読み出したデータを出力する、
処理を実行させるファイル管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ファイル管理方法、およびファイル管理プログラムに関する。
【背景技術】
【０００２】
コンピュータでは、信頼性確保のため、スナップショットファイルを作成することがある。スナップショットファイルは、過去のある時点におけるファイルのデータを記録したファイルである。なおスナップショットファイルは、単にスナップショットと呼ぶことも
ある。
【０００３】
コンピュータは、例えば、あるファイル（元ファイル）のスナップショットファイルの作成要求を受け取ると、スナップショットファイルとして、データブロックを持たない空データファイル（スパースファイル）を作成する。データブロックは、ストレージ装置における単位記憶領域である。そしてコンピュータは、コピーオンライト（ＣＯＷ：Copy-On-Write）と呼ばれる書き込み方式により、スナップショットファイルへのデータの書き込みを行う。ＣＯＷでは、例えばコンピュータは、元ファイル内のあるデータブロック内のデータを書き換えるときに、スナップショットファイルに新たなデータブロックを割り当て、割り当てたデータブロックに、書き換え対象のデータブロック内のデータをコピーする。
【０００４】
このようにしてスナップショットファイルの生成、更新を行う場合、例えば、コンピュータがスパースファイルに対して、通常のファイルと同様にリード処理を行うと、すべて「０」のデータが読み出される。そのためコンピュータは、スナップショットファイルに対するリード処理は、通常のファイルに対するリード処理とは異なる手順で行う。
【０００５】
例えばスナップショットファイル内のデータのリード処理時、スナップショットファイルに該当データを含むデータブロックが存在しない場合、目的のデータブロックは、元ファイルまたはより新しい世代のスナップショットファイル内に存在する。そこでコンピュータは、読み出し対象のスナップショットファイルから順に、１世代ずつ新しいスナップショットに向かって、読み出し対象のデータを含むデータブロックの存在の有無を調べる。そしてコンピュータは、該当データブロックを有するスナップショットファイルまたは元ファイルから、目的のデータを読み出す。
【０００６】
スナップショットファイルの作成に関する技術としては、例えば、サービス復旧後のサービスレベルが長時間に渡って低下する問題の防止と、運用ボリューム復旧のディスク容量不足による失敗を防止するための、スナップショットのリストア方法がある。また世代数の増加に伴うアクセス性能の低下を抑制するためのスナップショットの取得技術も考えられている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−１３３４７１号公報
【特許文献２】特開２０１６−１６２２４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述のように、複数の世代のスナップショットファイルが作成されている場合、コンピュータは、古い世代のスナップショット内のデータを読み出す際に、そのデータを含むデータブロックが、どの世代のスナップショットファイルに含まれるのかを調査する。このとき、コンピュータは、データの読み出し対象のスナップショットファイル以降の各世代のスナップショットファイルと元ファイルとのそれぞれから、該当データブロックの有無を探索することとなり、データの読み出しに時間がかかる。そして、スナップショットファイルの世代が増えるごとに検索対象が増加し、データの読み出し時間が長期化する。
【０００９】
１つの側面では、本件は、スナップショットファイルからのデータの読み出し時間を短縮することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、以下に示す記憶部と処理部とを有する情報処理装置が提供される。
記憶部は、元ファイルと、異なる複数の時期に元ファイルに格納されていたデータのコピーを、ブロック単位でのコピーオンライトにより格納するための複数のスナップショットファイルと、データ位置管理情報とを記憶する。データ位置管理情報には、特定スナップショットファイル作成時に元ファイルに格納されていたデータを有している、スナップショットファイルまたは元ファイルのファイル識別情報が、特定スナップショットファイル内のブロックごとに設定されている。
【００１１】
処理部は、特定スナップショットファイルからのデータのリード要求に応じて、データ位置管理情報から、リード要求で読み出すデータを有するブロックに設定されたファイル識別情報を取得する。次に処理部は、取得したファイル識別情報で示されたスナップショットファイルまたは元ファイルから、リード要求で指定されたデータを読み出す。そして処理部は、読み出したデータを出力する。
【発明の効果】
【００１２】
１態様によれば、スナップショットファイルからのデータの読み出し時間を短縮できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係るファイル管理方法によるファイル管理の一例を示す図である。
【図２】第２の実施の形態のシステム構成の一例を示す図である。
【図３】メタデータサーバのハードウェアの一構成例を示す図である。
【図４】スナップショットファイルの管理機能を示すブロック図である。
【図５】メタデータの一例を示す図である。
【図６】スナップショットファイルの世代間のリンク情報の一例を示す図である。
【図７】データ位置管理テーブルの一例を示す図である。
【図８】スナップショットファイル作成時のデータブロックの割り当て状況の一例を示す図である。
【図９】データ更新後のデータブロックの割り当て状況の一例を示す図である。
【図１０】データ位置管理テーブルを参照せずに読み出し対象のデータを含むデータブロックを探索する場合の例を示す図である。
【図１１】データ位置管理テーブル作成の第１の例を示す図である。
【図１２】データ位置管理テーブル作成の第２の例を示す図である。
【図１３】データ位置管理テーブル作成処理の手順の一例を示すフローチャートである。
【図１４】データ位置管理テーブルの更新例を示す図である。
【図１５】データ位置管理テーブル更新処理の手順の一例を示すフローチャートである。
【図１６】データ読み出しの第１の例を示す図である。
【図１７】データ読み出しの第２の例を示す図である。
【図１８】データ読み出しの第３の例を示す図である。
【図１９】データの読み出し手順を示すシーケンス図である。
【図２０】データ位置情報取得処理の手順の一例を示すフローチャートである。
【図２１】第３の実施の形態におけるデータ位置管理テーブルの作成例を示す図である。
【図２２】後続探索ブロック数の決定処理の手順の一例を示すフローチャートである。
【図２３】データ位置管理テーブル作成処理の手順の一例を示すフローチャートである。
【図２４】リード要求時のデータ位置管理テーブルの作成例を示す第１の図である。
【図２５】リード要求時のデータ位置管理テーブルの作成例を示す第２の図である。
【図２６】リード要求時のデータ位置管理テーブルの作成例を示す第３の図である。
【図２７】リード要求時のデータ位置管理テーブルの作成例を示す第４の図である。
【図２８】リード要求時のデータ位置管理テーブルの作成例を示す第５の図である。
【図２９】リード要求時のデータ位置管理テーブルの作成例を示す第６の図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。
【００１５】
図１は、第１の実施の形態に係るファイル管理方法によるファイル管理の一例を示す図である。図１の例では、第１の実施の形態に係るファイル管理方法が、情報処理装置１０で実現されている。情報処理装置１０は、記憶部１１と処理部１２とを有する。記憶部１１は、例えば情報処理装置１０が有するメモリ、またはストレージ装置である。処理部１２は、例えば情報処理装置１０が有するプロセッサ、または演算回路である。例えば情報処理装置１０に、第１の実施の形態に係るファイル管理方法の処理手順を記述したファイル管理プログラムを実行させることで、情報処理装置１０により第１の実施の形態に係るファイル管理方法が実現される。
【００１６】
記憶部１１は、元ファイル１１ａと複数のスナップショットファイル１１ｂ，１１ｃとデータ位置管理情報１１ｄとを記憶する。元ファイル１１ａには、ブロック単位でデータが格納されている。複数のスナップショットファイル１１ｂ，１１ｃは、異なる複数の時期に元ファイル１１ａに格納されていたデータのコピーを、ブロック単位でのコピーオンライトにより格納するためのファイルである。スナップショットファイル１１ｂが第１世代（最古）のスナップショットファイルであり、スナップショットファイル１１ｃが第２世代（現時点で最新）のスナップショットファイルである。
【００１７】
コピーオンライトであるため、複数のスナップショットファイル１１ｂ，１１ｃそれぞれには、スナップショットファイル作成後、次の世代のスナップショットファイル作成前に、元ファイル１１ａにおいて更新されたデータの、更新前のデータが格納されている。
【００１８】
図１の例では、元ファイル１１ａのブロック番号「１」のブロック内のデータは、複数のスナップショットファイル１１ｂの作成後に更新されていない。そのためスナップショットファイル１１ｂ，１１ｃは、ブロック番号「１」のブロックのデータを有していない。
【００１９】
元ファイル１１ａのブロック番号「２」のブロック内のデータは、スナップショットファイル１１ｂ作成後に更新されている。そのためスナップショットファイル１１ｂには、スナップショットファイル１１ｂ作成時に元ファイル１１ａのブロック番号「２」のブロックに格納されていたデータ「Ｂ」のコピーが格納されている。他方、スナップショットファイル１１ｃは、ブロック番号「２」のブロックのデータを有していない。
【００２０】
元ファイル１１ａのブロック番号「３」のブロック内のデータは、スナップショットファイル１１ｃの作成後、スナップショットファイル１１ｂの作成前に更新されている。そのためスナップショットファイル１１ｃには、スナップショットファイル１１ｃ作成時に元ファイル１１ａのブロック番号「３」のブロックに格納されていたデータ「Ｃ」のコピーが格納されている。他方、スナップショットファイル１１ｂは、ブロック番号「３」のブロックのデータを有していない。
【００２１】
元ファイル１１ａのブロック番号「４」のブロック内のデータは、スナップショットファイル１１ｃの作成後、スナップショットファイル１１ｂの作成前に更新され、さらにスナップショットファイル１１ｂの作成後にも更新されている。そのためスナップショットファイル１１ｂには、スナップショットファイル１１ｂ作成時に元ファイル１１ａのブロック番号「４」のブロックに格納されていたデータ「Ｆ」のコピーが格納されている。またスナップショットファイル１１ｃには、スナップショットファイル１１ｃ作成時に元ファイル１１ａのブロック番号「４」のブロックに格納されていたデータ「Ｄ」のコピーが格納されている。
【００２２】
データ位置管理情報１１ｄは、特定スナップショットファイル作成時に元ファイル１１ａに格納されていたデータを有しているファイルのファイル識別情報が、特定スナップショットファイル内のブロックごとに設定されている。図１の例では、スナップショットファイル１１ｃが特定スナップショットファイルである。この場合、特定スナップショットファイル作成時に元ファイルに格納されていたデータを有しているファイルは、複数のスナップショットファイル１１ｂ，１１ｃのいずれか、または元ファイル１１ａである。
【００２３】
図１の例では、スナップショットファイル１１ｃ作成時に元ファイル１１ａのブロック番号「１」のブロックに格納されていたデータを有しているのは、元ファイル１１ａである。そのためデータ位置管理情報１１ｄには、ブロック番号「１」に対応付けて、元ファイルのファイル識別情報（例えばファイル名またはｉｎｏｄｅ番号）が設定されている。
【００２４】
スナップショットファイル１１ｃ作成時に元ファイル１１ａのブロック番号「２」のブロックに格納されていたデータを有しているのは、スナップショットファイル１１ｂである。そのためデータ位置管理情報１１ｄには、ブロック番号「２」に対応付けて、スナップショットファイル１１ｂのファイル識別情報（例えばファイル名、ｉｎｏｄｅ番号、またはスナップショットファイルの識別番号）が設定されている。
【００２５】
スナップショットファイル１１ｃ作成時に元ファイル１１ａのブロック番号「３」，「４」の各ブロックに格納されていたデータを有しているのは、スナップショットファイル１１ｃである。そのためデータ位置管理情報１１ｄには、ブロック番号「３」、「４」それぞれに対応付けて、スナップショットファイル１１ｃのファイル識別情報（例えばファイル名、ｉｎｏｄｅ番号、またはスナップショットファイルの識別番号）が設定されている。
【００２６】
処理部１２は、特定スナップショットファイルからのデータのリード要求に応じて、データ位置管理情報１１ｄから、リード要求で読み出すデータを有するブロックに設定されたファイル識別情報を取得する。次に処理部１２は、取得したファイル識別情報で示されたスナップショットファイルまたは元ファイル１１ａから、リード要求で指定されたデータを読み出す。そして処理部１２は、読み出したデータを出力データ１〜４として出力する。
【００２７】
例えば処理部１２が、特定スナップショットファイルであるスナップショットファイル１１ｃ内のすべてのデータの読み出しを示すリード要求を受信したものとする。この場合、処理部１２は、データ位置管理情報１１ｄから、ブロック番号「１」〜「４」それぞれに設定されたファイル識別情報を取得する。そして処理部１２は、ブロック番号「１」のブロックのデータ「Ａ」を元ファイル１１ａから取得する。また処理部１２は、ブロック番号「２」のブロックのデータ「Ｂ」を、スナップショットファイル１１ｂから取得する。さらに処理部１２は、ブロック番号「３」、「４」のブロックそれぞれのデータ「Ｃ」、「Ｄ」を、スナップショットファイル１１ｃから取得する。そして処理部１２は、取得したデータを、例えば出力データ１〜４としてリード要求の送信元に送信する。
【００２８】
このように、第１の実施の形態では、スナップショットファイル１１ｃのデータ位置管理情報１１ｄを有しているため、スナップショットファイル１１ｃ内のデータの読み出しを短時間で行うことができる。すなわち、データ位置管理情報１１ｄがない場合、処理部１２は、リード要求受信後に、スナップショットファイル１１ｃ作成時に元ファイル１１ａに格納されていたデータがどのファイルに格納されているのかを、ブロックごとに探索することとなる。具体的には、処理部１２は、スナップショットファイル１１ｃから新しい世代のスナップショットへと順に、各ブロックのデータを有しているか否かを探索することとなる。このような探索処理は、各ファイルがデータを有しているか否かを、メタデータに基づいて判断することとなり、時間がかかる。しかも、スナップショットファイルの世代数が多数になると、探索対象のファイル数も多くなり、データ読み出しの時間がさらに長期化する。それに対して、第１の実施の形態では、データ位置管理情報１１ｄを参照すれば、各データをどのファイルから読み出すことができるのかがすぐに判明するため、データの読み出しを短時間で行うことができる。さらに、スナップショットファイルの世代数の増加によるデータの読み出し時間の長期化も抑止されている。
【００２９】
さらに第１の実施の形態によれば、スナップショットファイル１１ｃ内のすべてのブロックに、予めデータをコピーしておく場合に比べて、少ない記憶容量で済む。そのため、記憶部１１の記憶領域の消費量を抑止することができる。
【００３０】
なお図１の例では、記憶部１１には、最古の世代のスナップショットファイル１１ｃに対応するデータ位置管理情報１１ｄを記憶しているが、さらにスナップショットファイル１１ｂに対応するデータ位置管理情報を、記憶部１１に格納しておくこともできる。
【００３１】
なお処理部１２は、対応するデータ位置管理情報が設けられていないスナップショットファイルからのデータのリード要求を受信した場合、対応するデータ位置管理情報１１ｄを有するスナップショットファイルに達するまでは、ファイルごとにデータの有無を探索する。例えば、処理部１２が、特定スナップショットファイルより前に作成された旧世代スナップショットファイル内のブロックからのデータの読み出しを要求する旧世代データリード要求を受信したものとする。この場合、処理部１２は、旧世代データリード要求に応じて、旧世代スナップショットファイルおよび旧世代スナップショットファイルより後に作成されたスナップショットファイルについて、作成が古い方から順に探索対象とする。そして処理部１２は、探索対象のファイルについて、旧世代データリード要求で指定されたデータを有しているか否かを判断する。次に処理部１２は、旧世代データリード要求で指定されたデータを有しているスナップショットファイルを、データ読み出し元ファイルとして特定する。また、処理部１２は、データ読み出し元ファイルが特定できずに判断対象が特定スナップショットファイルに到達すると、データ位置管理情報１１ｄに基づいてデータ読み出し元ファイルを特定する。そして処理部１２は、特定したデータ読み出し元ファイルから、旧世代データリード要求で指定されたデータを読み出し、読み出したデータを出力する。
【００３２】
このようにして、特定スナップショットファイル以外のスナップショットファイルからのデータの読み出しも、効率的に行うことができる。すなわち、対応するデータ位置管理情報が設けられていないスナップショットファイルからデータを読み出す場合、処理部１２は、世代の古いスナップショットファイルから順に、データの有無を探索することとなる。ただし、この探索は、特定スナップショットファイルまでとなる。処理部１２は、探索の対象が特定スナップショットファイルになると、特定スナップショットファイルに対応するデータ位置管理情報１１ｄに基づいて、目的のデータを有しているファイルを特定することができる。これにより、データの読み出しを迅速に行うことができる。
【００３３】
さらに処理部１２は、元ファイル１１ａと複数のスナップショットファイル１１ｂ，１１ｃとに基づいて、データ位置管理情報１１ｄを自動生成することもできる。例えば処理部１２は、特定スナップショットファイル内のブロックごとに、特定スナップショットファイル作成時に元ファイル１１ａに格納されていたデータを有しているファイルを特定する。データの有無の探索対象となるのは、複数のスナップショットファイル１１ｂ，１１ｃおよび元ファイル１１ａである。そして処理部１２は、ブロックごとに特定したファイルの識別情報をデータ位置管理情報１１ｄに設定する。このようにして、処理部１２は、データ位置管理情報１１ｄを自動生成することができる。
【００３４】
また処理部１２は、特定スナップショットファイルを複数設けることもできる。この場合、処理部１２は、複数の特定スナップショットファイルそれぞれのデータ位置管理情報を作成する。例えば処理部１２が、第１の特定スナップショットファイルの第１のデータ位置管理情報と、第１の特定スナップショットファイルより前に作成された（古い世代の）第２の特定スナップショットファイルの第２のデータ位置管理情報とを作成する場合を想定する。まず処理部１２は、第１の特定スナップショットファイルの第１のデータ位置管理テーブルに、ブロックごとのファイル識別情報を設定する。次に、処理部１２は、第２の特定スナップショットファイルの第２のデータ位置管理テーブルに、ブロックごとのファイル識別情報を設定する。この際、処理部１２は、第２の特定スナップショットファイル、および第２の特定スナップショットの作成後かつ第１の特定スナップショットファイルの作成前に作成されたスナップショットファイルを探索先のファイルとする。そして処理部１２は、探索先のファイルのうち、第２の特定スナップショットファイル作成時に元ファイル１１ａに格納されていたデータを有しているファイルを、第２の特定スナップショットファイル内のブロックごとに特定する。処理部１２は、ブロックごとに特定したファイルの識別情報を第２のデータ位置管理情報に設定する。
【００３５】
このように、新しい世代の特定スナップショットファイルのデータ位置管理情報へのファイル識別情報の設定が完了している場合、より古い世代の特定スナップショットファイルについては、新しい世代の特定スナップショットファイルまでを探索先とすればよい。古い世代の特定スナップショットファイル内のデータを読み出す際には、処理部１２は、その特定スナップショットファイルのデータ位置管理情報に加え、新しい世代の特定スナップショットファイルのデータ位置管理情報も参照する。これにより、古い世代の特定スナップショットファイル内のデータについても、短時間で読み出すことができる。
【００３６】
処理部１２は、元ファイル１１ａ内のデータを更新した際には、データ位置管理情報１１ｄ内のファイル識別情報を更新する。例えば処理部１２が、コピーオンライトにより最新のスナップショットファイル１１ｂに元ファイル１１ａ内のデータをコピーしたものとする。このときデータ位置管理情報１１ｄにおいて、コピーされたデータを含むブロックに対応付けて元ファイル１１ａのファイル識別情報が設定されている場合があり得る。この場合、処理部１２は、コピーされたデータを含むブロックに対応するファイル識別情報を、最新のスナップショットファイルのファイル識別情報に変更する。これにより、データ位置管理情報１１ｄの内容を最新の状態に維持することができる。なお、特定スナップショットファイルが複数ある場合には、処理部１２は、その中で最も世代が新しいスナップショットファイルのデータ位置管理情報１１ｄを更新する。
【００３７】
処理部１２は、データ位置管理情報１１ｄへのファイル識別情報の登録を、データのリード要求受信時に動的に行うこともできる。例えば処理部１２が、特定スナップショットファイル内の第１ブロックからのデータのリード要求を受信したものとする。このとき、処理部１２は、特定スナップショットファイル内のブロックの配列において、第１ブロックに続く所定数の第２ブロックについてのファイル識別情報を、データ位置管理情報１１ｄに設定する。ブロックの配列は、例えばブロック番号が昇順となるように並べられたブロックの並びである。例えば処理部１２は、第２ブロックについて、複数のスナップショットファイルおよび元ファイルのうち、特定スナップショットファイル作成時に元ファイルに格納されていたデータを有しているファイルを特定する。そして処理部１２は、第２ブロックごとに特定したファイルのファイル識別情報をデータ位置管理テーブルに設定する。
【００３８】
このように処理部１２は、リード要求を受信したときに、読み出し対象データを含むブロックの後続のブロックについて、先読み的に、対応するデータを有するファイルのファイル識別情報を、データ位置管理情報１１ｄに設定する。これにより、データ位置管理情報１１ｄのデータ量を削減することができる。
【００３９】
なお、処理部１２は、例えば、リード要求で要求されるデータ量に基づいて、第２ブロックの数を決定する。例えば３ブロック分でのデータのリード要求の場合、処理部１２は、第２ブロックの数を２とする。この場合、処理部１２は、先頭のブロックのデータを有しているファイルの探索時に、同時に、後続の２ブロックそれぞれのデータを有しているファイルの探索も行う。これにより、リード要求に応じたデータの読み出しを、データ位置管理情報１１ｄを用いて効率的に行うことができる。
【００４０】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、ファイルおよびディレクトリの管理情報（メタデータ）と、ファイル内のデータとを分けて管理するシステムにおいて、スナップショットファイル内のデータの読み出し時間を短縮するものである。
【００４１】
図２は、第２の実施の形態のシステム構成の一例を示す図である。図２の例では、メタデータ管理システム１００によって、データ管理システム２００が保持するファイルのメタデータが管理される。
【００４２】
メタデータ管理システム１００は、複数のメタデータサーバ１００ａ，１００ｂ，・・・を有している。複数のメタデータサーバ１００ａ，１００ｂ，・・・それぞれは、ネットワーク２０に接続されている。データ管理システム２００は、複数のデータサーバ２００ａ，２００ｂ，・・・を有する。複数のデータサーバ２００ａ，２００ｂ，・・・それぞれは、ネットワーク２０に接続されている。
【００４３】
ネットワーク２０には、さらに複数の端末装置３１，３２，・・・が接続されている。端末装置３１，３２，・・・は、データ管理システム２００内のファイルに含まれるデータにアクセスするとき、メタデータ管理システム１００から、アクセスするデータの格納場所（位置情報）を取得する。そして端末装置３１，３２，・・・は、取得した位置情報に基づいて、データ管理システム２００内のデータにアクセスする。
【００４４】
図３は、メタデータサーバのハードウェアの一構成例を示す図である。メタデータサーバ１００ａは、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００４５】
メモリ１０２は、メタデータサーバ１００ａの主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に利用する各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００４６】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００４７】
ストレージ装置１０３は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００４８】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、有機ＥＬ（Electro Luminescence）を用いた表示装置や液晶表示装置などがある。
【００４９】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００５０】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００５１】
機器接続インタフェース１０７は、メタデータサーバ１００ａに周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００５２】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００５３】
メタデータサーバ１００ａは、以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。他のメタデータサーバ１００ｂ，・・・も、メタデータサーバ１００ａと同様のハードウェアにより、第２の実施の形態の処理機能を実現することができる。データサーバ２００ａ，２００ｂ，・・・も、メタデータサーバ１００ａと同様のハードウェアにより、第２の実施の形態の処理機能を実現することができる。端末装置３１，３２，・・・も、メタデータサーバ１００ａと同様のハードウェアにより、第２の実施の形態の処理機能を実現することができる。さらに第１の実施の形態に示した情報処理装置１０も、図３に示したメタデータサーバ１００ａと同様のハードウェアにより実現することができる。
【００５４】
メタデータサーバ１００ａは、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。メタデータサーバ１００ａに実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、メタデータサーバ１００ａに実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またメタデータサーバ１００ａに実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５５】
図４は、スナップショットファイルの管理機能を示すブロック図である。メタデータ管理システム１００は、記憶部１１０、メタデータ管理部１２０、およびスナップショット管理部１３０を有する。メタデータ管理システム１００内の各要素は、複数のメタデータサーバ１００ａ，１００ｂ，・・・が連係動作することで実現される。
【００５６】
記憶部１１０は、メタデータ１１１ａ，１１１ｂ，・・・とデータ位置管理テーブル１１２ａ，１１２ｂ，・・・とを記憶する。記憶部１１０は、例えばメタデータサーバ１００ａ，１００ｂ，・・・が有するメモリまたはストレージ装置の記憶領域の一部である。
【００５７】
メタデータ１１１ａ，１１１ｂ，・・・は、データ管理システム２００にデータが格納されているファイルの管理情報である。メタデータ１１１ａ，１１１ｂ，・・・には、例えばファイルのデータを格納したデータブロック（物理ブロック）のストレージ装置内での位置（ブロック位置）が設定されている。メタデータ１１１ａ，１１１ｂ，・・・は、例えばｉｎｏｄｅと呼ばれるデータ構造で記述される。メタデータ１１１ａ，１１１ｂ，・・・の詳細は後述する（図５、図６参照）。
【００５８】
データ位置管理テーブル１１２ａ，１１２ｂ，・・・は、複数のスナップショットファイルのうち、１以上のスナップショットファイルそれぞれに対応付けて設けられている。データ位置管理テーブル１１２ａ，１１２ｂ，・・・には、対応するスナップショットファイル内のデータを格納するデータブロックが現在割り当てられているファイルの識別情報が設定される。データ位置管理テーブル１１２ａ，１１２ｂ，・・・の詳細は後述する（図７参照）。
【００５９】
メタデータ管理部１２０は、メタデータ１１１ａ，１１１ｂ，・・・を管理する。例えばメタデータ管理部１２０は、端末装置３１からファイルの作成要求を受け取ると、そのファイルのメタデータを生成し、記憶部１１０に格納する。またメタデータ管理部１２０は、端末装置３１からファイル内のデータへのアクセス要求を受け取ると、そのファイルのメタデータに基づいて、該当データを含むデータブロックの位置情報を特定し、その位置情報を端末装置３１に送信する。
【００６０】
またメタデータ管理部１２０は、例えば端末装置３１からスナップショットファイルの作成要求を受信すると、スナップショットファイルに対応するメタデータを生成する。なお、スナップショットファイルのメタデータには、スナップショットファイルであることを示す属性情報が含まれる。なおメタデータ管理部１２０は、スナップショットファイルとして、スパースファイルを作成する。そしてメタデータ管理部１２０は、スナップショットファイルの作成元である元ファイルのデータが更新されると、ＣＯＷにより、スナップショットファイルに、更新されたデータを含むデータブロックの内容のコピー処理を行う。
【００６１】
なおＣＯＷを採用しているため、メタデータ管理部１２０がスナップショットファイル内のデータのリード要求を受信したとき、そのスナップショットファイルのメタデータを参照しても、読み出し対象のデータを含むデータブロックの位置情報が分からないときがある。その場合、メタデータ管理部１２０は、読み出し対象のデータを含むデータブロックの探索先とするファイルを、スナップショット管理部１３０に問い合わせる。そしてメタデータ管理部１２０は、探索先として指定されたファイルのメタデータを参照して、読み出し対象のデータを含むデータブロックの位置情報を取得する。
【００６２】
スナップショット管理部１３０は、スナップショットファイル内のデータが、どのファイルに割り当てられたデータブロックに格納されているのかを管理する。例えばスナップショット管理部１３０は、スナップショットファイルからのデータの読み出し時間の短縮のために、データ位置管理テーブル１１２ａ，１１２ｂ，・・・を生成する。スナップショット管理部１３０は、生成したデータ位置管理テーブル１１２ａ，１１２ｂ，・・・を、記憶部１１０に格納する。スナップショット管理部１３０は、例えばメタデータ管理部１２０から、読み出し対象のデータを含むデータブロックの探索対象とするファイルの問い合わせを受け取る。するとスナップショット管理部１３０は、その問い合わせに応じて、データ位置管理テーブル１１２ａ，１１２ｂ，・・・に基づいて、次に探索対象とするファイルを特定する。そしてスナップショット管理部１３０は、メタデータ管理部１２０に対して、次に探索するファイルの識別情報を送信する。
【００６３】
データ管理システム２００は、記憶部２１０と実データ入出力部２２０とを有する。データ管理システム２００内の各要素は、複数のデータサーバ２００ａ，２００ｂ，・・・が連係動作することで実現される。
【００６４】
記憶部２１０は、ファイルのデータを格納するデータブロック２１１，２１２，・・・を有する。記憶部２１０は、例えばデータサーバ２００ａ，２００ｂ，・・・が有するストレージ装置の記憶領域である。
【００６５】
実データ入出力部２２０は、端末装置３１，３２，・・・からのデータのリード要求またはライト要求に応じて、記憶部２１０へのデータの入出力を行う。例えば実データ入出力部２２０は、端末装置３１から、取得対象のデータブロックの位置情報を指定したライト要求を受信すると、該当するデータブロックにデータを書き込む。また端末装置３１から、取得対象のデータブロックの位置情報を指定したリード要求を受信すると、該当するデータブロックからデータを読み出し、読み出したデータを端末装置３１に送信する。
【００６６】
端末装置３１は、ファイル管理部３１ａを有する。ファイル管理部３１ａは、端末装置３１が使用するファイルを管理する。例えばファイル管理部３１ａは、ユーザからファイルの作成を示す入力を受け付けると、ファイルの作成要求をメタデータ管理システム１００に送信する。またファイル管理部３１ａは、ユーザから、ファイル内のデータへのアクセス時に、メタデータ管理システム１００に対して、データを含むデータブロックの位置情報の問い合わせるためのアクセス要求（リード要求またはライト要求）を送信する。このアクセス要求には、例えば、読み出し元のファイルと、ファイル内でのデータの位置とが指定される。ファイル管理部３１ａは、メタデータ管理システム１００から、読み出し対象のデータを含むブロックの位置情報を受信すると、データ管理システム２００に対して、位置情報によりデータブロックを指定したデータのアクセス要求（リード要求またはライト要求）を送信する。このように、ファイル管理部３１ａは、データアクセスを、２段階のアクセス要求によって実現する。
【００６７】
また、ファイル管理部３１ａは、ユーザから、ファイルを指定して、そのファイルのスナップファイル作成を指示する入力を受け付けると、メタデータ管理システム１００に対して、スナップショットファイルの作成要求を送信する。
【００６８】
なお、他の端末装置３２，・・・も、端末装置３１と同様の機能を有する。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００６９】
図５は、メタデータの一例を示す図である。図５の例では、メタデータ１１１ａ，１１１ｂ，・・・としてｉｎｏｄｅが用いられている。メタデータ１１１ａ，１１１ｂ，・・・それぞれには、ｉｎｏｄｅ番号、ファイル種別、複数のエクステント、および拡張属性が含まれる。ｉｎｏｄｅ番号は、メタデータの識別番号である。ファイル種別は、メタデータに対応するファイルの種別である。例えばスナップショットファイルに対応するメタデータには、ファイル種別としてスナップショットファイルであることを示す情報が設定される。
【００７０】
エクステントは、ファイルの論理ブロックと物理的なデータブロックのブロック位置との対応関係を示す情報である。エクステントでは、連続する複数のブロックについて、対応関係を纏めて定義することができる。
【００７１】
拡張属性は、ファイルに対して付加的に設定する属性である。例えばスナップショットファイルの場合、スナップショットファイルの世代間のリンク情報が、拡張属性として設定される。
【００７２】
図６は、スナップショットファイルの世代間のリンク情報の一例を示す図である。図６の例では、元ファイルのメタデータ１１１ａと、第１世代のスナップショットファイルのメタデータ１１１ｂと、第２世代のスナップショットファイルのメタデータ１１１ｃとが示されている。メタデータ１１１ａのｉｎｏｄｅ番号は「１００」、メタデータ１１１ｂのｉｎｏｄｅ番号は「１０１」、メタデータ１１１ｃのｉｎｏｄｅ番号は「１０２」である。各メタデータ１１１ａ，１１１ｂ，１１１ｃには、拡張属性として、旧ｉｎｏｄｅ番号、新ｉｎｏｄｅ番号、および元ｉｎｏｄｅ番号が設定されている。
【００７３】
旧ｉｎｏｄｅ番号は、１世代前のスナップショットファイルのｉｎｏｄｅ番号である。元ファイルのメタデータ１１１ａの旧ｉｎｏｄｅ番号には、最新（図６の例では第２世代）のスナップショットファイルに対応するｉｎｏｄｅ番号が設定される。最古（図６の例では第１世代）のスナップショットファイルのメタデータ１１１ｂの旧ｉｎｏｄｅ番号には、そのスナップショットが最古であることを示す値「０」が設定される。
【００７４】
新ｉｎｏｄｅ番号は、１世代後のスナップショットファイルのｉｎｏｄｅ番号である。元ファイルのメタデータ１１１ａの新ｎｏｄｅ番号には、そのファイルがスナップショットの元ファイルであることを示す値「０」が設定される。最新（図６の例では第２世代）のスナップショットファイルのメタデータ１１１ｃの新ｉｎｏｄｅ番号には、元ファイルに対応するｉｎｏｄｅ番号が設定される。
【００７５】
元ｉｎｏｄｅ番号は、スナップショットファイルのデータのコピー元である元ファイルのｉｎｏｄｅ番号である。元ファイルのメタデータ１１１ａの元ｉｎｏｄｅ番号には、元ファイル自身のｉｎｏｄｅ番号が設定される。
【００７６】
次に、データ位置管理テーブル１１２ａ，１１２ｂ，・・・について詳細に説明する。
図７は、データ位置管理テーブルの一例を示す図である。データ位置管理テーブル１１２ａ，１１２ｂ，・・・には、スナップショットファイルのデータを格納する論理ブロックのブロック番号に対応付けて、その論理ブロックに対応するデータブロックが割り当てられているファイルの識別情報が設定されている。図７の例では、ブロック番号「１」の論理ブロックに対応するデータブロックは、元ファイルに割り当てられていることが示されている。ブロック番号「３」の論理ブロックに対応するデータブロックは、スナップ番号「１」のスナップショットファイルに割り当てられていることが示されている。
【００７７】
このようなデータ位置管理テーブル１１２ａ，１１２ｂ，・・・を参照することで、スナップショット管理部１３０は、効率的にデータを読み出すための探索先のファイルを特定することができる。すなわち、ＣＯＷを採用することで、スナップショットファイル作成時には、データのコピーは行われず、スナップショットファイルはスパースファイルである。そして、その後、更新されたデータのデータブロックのみが、スナップショットファイルにコピーされる。そのためメタデータ管理部１２０は、スナップショットファイル内のデータをリードする場合、すでにコピーされたデータであれば、スナップショットファイルのメタデータから、そのデータを含むデータブロックの位置情報を取得できる。他方、コピーされていないデータ（更新されていないデータ）の場合、メタデータ管理部１２０は、元ファイル、または世代の新しい他のスナップショットファイルから読み出すこととなる。この際、スナップショット管理部１３０は、そのデータ位置管理テーブルに基づいて、読み出し対象のデータを含むデータブロックの探索先とするファイル（元ファイル、またはスナップショットファイル）を特定し、メタデータ管理部１２０に通知する。
【００７８】
図８は、スナップショットファイル作成時のデータブロックの割り当て状況の一例を示す図である。図８の例では、エクステントを白抜きの矩形で表し、記憶部２１０内のデータブロックを、網掛けの矩形で表している。
【００７９】
元ファイルのメタデータ１１１ａに含まれるエクステントには、元ファイルの論理ブロックに対応する物理的なデータブロックの位置情報が含まれる。そして元ファイルの各論理ブロックに書き込まれたデータは、その論理ブロックに対応するデータブロックに格納される。
【００８０】
スナップショットファイルが作成されると、そのスナップショットファイルに対応するメタデータ１１１ｂが生成される。スナップショットファイルはスパースファイルとして作成されるため、生成直後のメタデータ１１１ｂには、対応するデータブロックの位置情報が設定されていない。
【００８１】
図９は、データ更新後のデータブロックの割り当て状況の一例を示す図である。メタデータ管理部１２０は、元ファイルの論理ブロックに対するデータを更新する場合、データブロックの上書きを行う前に、最新のスナップショットファイルに、変更前のデータブロックを割り当てる。そしてメタデータ管理部１２０は、元ファイルの更新対象の論理ブロックに対して、新たなデータブロックを割り当て、そのデータブロックを、更新後のデータの書き込み先として、ライト要求の出力元の端末装置に通知する。すると、端末装置が、新たに割り当てられたデータブロックに更新後のデータを書き込む。
【００８２】
なお、図９の例では、実際にはデータのコピーは行われていないが、コピー対象のデータが格納されたデータブロックを、スナップショットファイルに割り当てることで、ファイル管理上はデータをコピーしたこととなる。
【００８３】
図８、図９の例では、スナップショットファイルが１世代しか作成されていないが、スナップショットファイルが複数の世代分作成される場合がある。スナップショットファイルが多段で作成された場合は、メタデータ管理部１２０は、データのリード要求を受信すると、読み出し対象のスナップショットファイルに、読み出し対象のデータを含むデータブロックが存在するか否かを確認する。メタデータ管理部１２０は、該当データブロックが存在すればその、データブロックの位置情報をリード要求の送信元の端末装置に送信する。他方、メタデータ管理部１２０は、該当データブロックが存在しない場合は、より新しい世代のスナップショットファイルまたは元ファイルを探索対象として、読み出し対象のデータを含むデータブロックの有無を探索する。
【００８４】
ここで、読み出し対象のデータを含むデータブロックを探索する際、データ位置管理テーブル１１２ａ，１１２ｂ，・・・を参照しないと、より新しい世代のスナップショットファイルを１世代ずつ辿って探索することとなり、探索に時間がかかる。
【００８５】
図１０は、データ位置管理テーブルを参照せずに読み出し対象のデータを含むデータブロックを探索する場合の例を示す図である。図１０の例では、３世代のスナップショットファイルが作成されている。ここでメタデータ管理部１２０に、最古のスナップショットファイル（スナップ番号「２」）のすべてのブロックのリード要求が、端末装置３１から入力されたものとする。スナップ番号「３」のスナップショットファイルは、すべての論理ブロックについて、データブロックが割り当てられていない。そのためメタデータ管理部１２０は、すべての論理ブロックに対して、新しい世代のスナップショットを辿って、対応するデータブロックを探索する。そしてメタデータ管理部１２０は、最初に見つかったデータブロックを、読み出し対象のデータブロックとする。
【００８６】
例えばメタデータ管理部１２０は、ブロック番号「１」のデータを読み出す場合、スナップ番号「２」→スナップ番号「１」→スナップ番号「０」→元ファイルと辿り、元ファイルに割り当てられているデータブロックを検出する。メタデータ管理部１２０は、元ファイルのメタデータから、検出したデータブロックの位置情報を取得し、そのブロックの位置情報を端末装置３１に送信する。端末装置３１は、データ管理システム２００内の取得した位置情報に対応するデータブロックから、データ「Ａ」を読み出す。
【００８７】
またメタデータ管理部１２０は、ブロック番号「３」のデータを読み出す場合、スナップ番号「２」→スナップ番号「１」と辿り、スナップ番号「１」のスナップショットファイルに割り当てられているデータブロックを検出する。メタデータ管理部１２０は、スナップ番号「１」のスナップショットファイルのメタデータから、検出したデータブロックの位置情報を取得し、そのブロックの位置情報を端末装置３１に送信する。端末装置３１は、データ管理システム２００内の取得した位置情報に対応するデータブロックから、データ「Ｃ」を読み出す。
【００８８】
このようにして、スナップ番号「２」のスナップショットファイル内の各論理ブロックのデータを読み出すことができる。しかし、このようなデータ読み出しでは、指定された世代のスナップショットファイルのデータの読み出しに時間がかかる。例えば、各スナップショットファイルにおいて、論理ブロックにデータブロックが割り当てられているか否かは、メタデータ内のエクステントに示されているが、メタデータは、メモリ中にない場合もある。その場合、メタデータ管理部１２０は、メタデータをストレージ装置から読み出すこととなる。ストレージ装置は、メモリに比べアクセスに時間がかかるため、論理ブロックにデータブロックが割り当てられているか否かの判断にも時間がかかる。
【００８９】
しかも、世代が増えるごとに、検索対象となるスナップショットファイルが増加し、性能は劣化する。例えば、スナップショットファイルが１世代しかなければ、メタデータ管理部１２０は、各論理ブロックのデータが格納されているデータブロックの割り当ての有無の探索は、最大でも１世代だけ遡ればよい。しかし、図１０に示すように３世代中の最古のスナップショットファイル内のデータを読み出す場合、メタデータ管理部１２０は、最大で３世代分のスナップショットファイルを遡ってデータブロックの割り当ての有無の調査することになる。
【００９０】
ここで、スナップショットファイルを辿る処理を省くために、一部の世代のスナップショットファイルを予め復元して（すべてのデータを予めコピーしておくこと）、データを保持しておくことが考えられる。これにより、予め復元されたスナップショットファイルを参照することで、そのスナップショットより前の世代のスナップショットファイル内のデータの読み出しを高速化することができる。しかし、スナップショットファイルのすべてのデータを復元して保持しておくと、ストレージ容量が余分に消費されてしまう。そこで第２の実施の形態に係るメタデータ管理システム１００では、データ位置管理テーブル１１２ａ，１１２ｂ，・・・を利用することで、ストレージ使用量の増加を抑止しながら、高速なデータの読み出しを可能とする。
【００９１】
第２の実施の形態では、スナップショット管理部１３０は、例えばすべてのスナップショットファイルではなく、一部のスナップショットファイルに対応するデータ位置管理テーブル１１２ａ，１１２ｂ，・・・を作成する。これにより、データ位置管理テーブル１１２ａ，１１２ｂ，・・・のデータ量を抑止することができる。例えばスナップショット管理部１３０は、システムの起動時に、その時点で作成済みのスナップショットファイルのうちの一部のスナップショットファイルについて、データ位置管理テーブル１１２ａ，１１２ｂ，・・・を作成する。例えば、スナップショット管理部１３０は、４世代のスナップショットファイルが作成されているとき、第１世代（最古）と第３世代とのスナップショットファイルに対応するデータ位置管理テーブルを作成する。なお、データの読み出しの高速化を優先する場合、スナップショット管理部１３０がすべてのスナップショットファイルに対応するデータ位置管理テーブル１１２ａ，１１２ｂ，・・・を作成するようにしてもよい。
【００９２】
図１１は、データ位置管理テーブル作成の第１の例を示す図である。図１１では、第３世代である、スナップ番号「１」のスナップショットファイルに対応するデータ位置管理テーブル１１２ａが作成されている。
【００９３】
例えばスナップショット管理部１３０は、スナップ番号「１」のスナップショットファイルのメタデータを参照し、ブロック番号「１」〜「８」の各論理ブロックそれぞれについて、物理的なデータブロックが割り当てられているか否かを判断する。データブロックが割り当てられている場合、スナップショット管理部１３０は、データ位置管理テーブル１１２ａに対して、その論理ブロックのブロック番号に対応付けて、スナップ番号「１」を設定する。スナップ番号「１」のスナップショットファイルにおいてデータブロックが割り当てられていない論理ブロックについては、スナップショット管理部１３０は、スナップショットファイルの世代を、新しい方に１世代辿る。
【００９４】
スナップショット管理部１３０は、次の世代であるスナップ番号「０」のスナップショットファイルを探索先として、データブロックが割り当てられているか否かを判断する。データブロックが割り当てられている場合、スナップショット管理部１３０は、データ位置管理テーブル１１２ａに対して、その論理ブロックのブロック番号に対応付けて、スナップ番号「０」を設定する。スナップ番号「０」、「１」のスナップショットファイルにおいてデータブロックが割り当てられていない論理ブロックについては、スナップショット管理部１３０は、スナップショットファイルの世代を、新しい方に１世代辿る。
【００９５】
スナップ番号「０」のスナップショットファイルから新しい方に１世代辿った先は元ファイルである。元ファイルには、すべての論理ブロックに対してデータブロックが割り当てられている。そこでスナップショット管理部１３０は、データ位置管理テーブル１１２ａ内のスナップ番号が設定されていない論理ブロックのブロック番号に対応付けて、元ファイルを示す情報を設定する。
【００９６】
このようにして作成されたデータ位置管理テーブル１１２ａでは、ブロック番号「３」、「４」、「６」、「７」の論理ブロックには、スナップ番号「１」が対応付けられている。またデータ位置管理テーブル１１２ａにおいて、ブロック番号「１」、「２」、「５」、「８」の論理ブロックには、元ファイルを示す情報が対応付けられている。
【００９７】
次にスナップショット管理部１３０は、スナップ番号「３」のスナップショットファイルに対応するデータ位置管理テーブル１１２ｂを作成する。この場合、スナップショット管理部１３０は、論理ブロックに割り当てられているデータブロックの探索を、すでにデータ位置管理テーブル１１２ａが作成されている世代のスナップショットファイルまで行う。
【００９８】
図１２は、データ位置管理テーブル作成の第２の例を示す図である。図１２では、第１世代（最古の世代）である、スナップ番号「３」のスナップショットファイルに対応するデータ位置管理テーブル１１２ｂが作成されている。
【００９９】
例えばスナップショット管理部１３０は、スナップ番号「３」のスナップショットファイルのメタデータを参照し、ブロック番号「１」〜「８」の各論理ブロックそれぞれについて、物理的なデータブロックが割り当てられているか否かを判断する。データブロックが割り当てられている場合、スナップショット管理部１３０は、データ位置管理テーブル１１２ｂに対して、その論理ブロックのブロック番号に対応付けて、スナップ番号「３」を設定する。スナップ番号「３」のスナップショットファイルにおいてデータブロックが割り当てられていない論理ブロックについては、スナップショット管理部１３０は、スナップショットファイルの世代を、新しい方に１世代辿る。
【０１００】
スナップショット管理部１３０は、次の世代であるスナップ番号「２」のスナップショットファイルを探索先として、データブロックが割り当てられているか否かを判断する。データブロックが割り当てられている場合、スナップショット管理部１３０は、データ位置管理テーブル１１２ｂに対して、その論理ブロックのブロック番号に対応付けて、スナップ番号「２」を設定する。スナップ番号「２」、「３」のスナップショットファイルにおいてデータブロックが割り当てられていない論理ブロックについては、スナップショット管理部１３０は、スナップショットファイルの世代を、新しい方に１世代辿る。
【０１０１】
スナップショット管理部１３０は、次の世代であるスナップ番号「１」のスナップショットファイルを探索先として、データブロックが割り当てられているか否かを判断する。データブロックが割り当てられている場合、スナップショット管理部１３０は、データ位置管理テーブル１１２ｂに対して、その論理ブロックのブロック番号に対応付けて、スナップ番号「１」を設定する。スナップ番号「１」、「２」、「３」のスナップショットファイルにおいてデータブロックが割り当てられていない論理ブロックについては、これ以上、データブロックの割り当ての有無の探索を行わない。
【０１０２】
このようにして作成されたデータ位置管理テーブル１１２ｂでは、ブロック番号「３」、「６」の論理ブロックには、スナップ番号「２」が対応付けられている。またデータ位置管理テーブル１１２ｂにおいて、ブロック番号「４」、「７」の論理ブロックには、スナップ番号「１」が対応付けられている。データ位置管理テーブル１１２ｂにおいて、ブロック番号「１」、「２」、「５」、「８」の論理ブロックには、対応するデータブロックを有するファイルを示す情報は設定されていない。ブロック番号「１」、「２」、「５」、「８」の論理ブロックに対応するデータブロックを有するファイルは、先に作成したデータ位置管理テーブル１１２ａを参照することで、判断できる。
【０１０３】
これにより、データ位置管理テーブル１１２ｂを効率的に作成できると共に、データ位置管理テーブル１１２ｂのデータ容量を削減することもできる。
次に、データ位置管理テーブル作成処理の手順について詳細に説明する。
【０１０４】
図１３は、データ位置管理テーブル作成処理の手順の一例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］スナップショット管理部１３０は、データ位置管理テーブルを作成するスナップショットファイルを選択する。
【０１０５】
［ステップＳ１０２］スナップショット管理部１３０は、データブロックが割り当てられたファイルがどのファイルであるかの探索を行う、探索対象の論理ブロックを１つ選択する。
【０１０６】
［ステップＳ１０３］スナップショット管理部１３０は、ステップＳ１０１で選択したスナップショットファイルを、探索先とする。
［ステップＳ１０４］スナップショット管理部１３０は、探索先のファイル（スナップショットファイルまたは元ファイル）において、探索対象の論理ブロックに対応するデータブロックが存在するか否かを判断する。例えばスナップショット管理部１３０は、メタデータ管理部１２０に、探索先のファイルに探索対象の論理ブロックに対応するデータブロックが存在するか否かを問い合わせる。メタデータ管理部１２０は、選択したファイルのメタデータのエクステントに、探索対象の論理ブロックのデータの格納先であるデータブロックの位置情報が設定されているか否かを判断し、判断結果をスナップショット管理部１３０に応答する。スナップショット管理部１３０は、データブロックの位置情報が設定されているとの応答を受け取った場合、探索先のファイルに探索対象の論理ブロックに対応するデータブロックが存在すると判断し、処理をステップＳ１０５に進める。またスナップショット管理部１３０は、データブロックが存在しない場合、処理をステップＳ１０６に進める。
【０１０７】
［ステップＳ１０５］スナップショット管理部１３０は、探索先のスナップショットファイルのスナップ番号を、探索対象の論理ブロックに対応付けて、データ位置管理テーブルに設定する。スナップショット管理部１３０は、その後、処理をステップＳ１０８に進める。
【０１０８】
［ステップＳ１０６］スナップショット管理部１３０は、探索先のスナップショットファイルに対して、データ位置管理テーブルが作成済みか否かを判断する。スナップショット管理部１３０は、データ位置管理テーブルが作成済みであれば、探索先のスナップショットファイルの世代を遡るのを停止し、探索対象の論理ブロックに対応するファイルの識別情報は空欄「−」のまま、処理をステップＳ１０８に進める。スナップショット管理部１３０は、データ位置管理テーブルが作成済みでなければ、処理をステップＳ１０７に進める。
【０１０９】
［ステップＳ１０７］スナップショット管理部１３０は、探索先を、現在のスナップショットファイルより１世代新しい世代のスナップショットファイルに切り換える。その後、スナップショット管理部１３０は、処理をステップＳ１０４に進める。
【０１１０】
［ステップＳ１０８］スナップショット管理部１３０は、選択したスナップショットファイルのすべての論理ブロックを、探索対象として選択したか否かを判断する。スナップショット管理部１３０は、未選択の論理ブロックがある場合、処理をステップＳ１０２に進める。またスナップショット管理部１３０は、すべての論理ブロックが選択済みであれば、処理をステップＳ１０９に進める。
【０１１１】
［ステップＳ１０９］スナップショット管理部１３０は、データ位置管理テーブルを作成する他のスナップショットファイルがあるか否かを判断する。例えば、所定数の世代に１つのスナップショットファイルに対してデータ位置管理テーブルを作成する場合、スナップショット管理部１３０は、現在選択しているスナップショットファイルの所定数世代前のスナップショットファイルの有無を判断する。スナップショット管理部１３０は、該当するスナップショットファイルがある場合、データ行き管理テーブルを作成する他のスナップショットファイルがあると判断する。スナップショット管理部１３０は、データ位置管理テーブルを作成する他のスナップショットファイルがある場合、処理をステップＳ１０１に進める。またスナップショット管理部１３０は、データ位置管理テーブルを作成する他のスナップショットファイルがない場合、データ位置管理テーブル作成処理を終了する。
【０１１２】
このようにして、複数の世代のスナップショットファイルのうちの一部のスナップショットファイルについて、データ位置管理テーブルが作成される。作成されたデータ位置管理テーブルのうち、最も新しい世代のスナップショットファイルのデータ位置管理テーブルは、元ファイル内のデータが更新されたときに更新される。
【０１１３】
図１４は、データ位置管理テーブルの更新例を示す図である。図１４は、元ファイルのブロック番号「１」の論理ブロック内のデータが、更新された場合の例である。データが更新されるとＣＯＷにより、スナップ番号「０」のスナップショットファイルのブロック番号「１」の論理ブロックに物理的なデータブロックが割り当てられる。そして割り当てられたデータブロックには、更新前のデータ「Ａ」が格納される。
【０１１４】
この場合、スナップショット管理部１３０は、スナップ番号「１」のスナップショットファイルに基づいて生成されたデータ位置管理テーブル１１２ａを更新する。例えばスナップショット管理部１３０は、データ位置管理テーブル１１２ａのブロック番号「１」に対応付けたファイルの識別情報を、元ファイルからスナップ番号「０」に変更する。なお、スナップ番号「３」のスナップショットファイルに対応するデータ位置管理テーブル１１２ｂは、更新不要である。
【０１１５】
図１５は、データ位置管理テーブル更新処理の手順の一例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ１２１］スナップショット管理部１３０は、元ファイルにおいてデータが更新された論理ブロックのブロック番号を取得する。
【０１１６】
［ステップＳ１２２］スナップショット管理部１３０は、作成されているデータ位置管理テーブルのうち、最も新しい世代のスナップショットファイルに基づいて作成されたデータ位置管理テーブルを特定する。
【０１１７】
［ステップＳ１２３］スナップショット管理部１３０は、ステップＳ１２２で特定したデータ位置管理テーブルにおいて、ステップＳ１２１で取得したブロック番号の論理ブロックに対応付けて、元ファイルの識別情報が設定されているか否かを判断する。スナップショット管理部１３０は、元ファイルの識別情報が設定されている場合、処理をステップＳ１２４に進める。またスナップショット管理部１３０は、元ファイル以外のスナップショットファイルの識別情報が設定されている場合、データ位置管理テーブル更新処理を終了する。
【０１１８】
［ステップＳ１２４］スナップショット管理部１３０は、ステップＳ１２２で特定したデータ位置管理テーブルにおける、更新された論理データに対応するデータブロックを有するファイルの識別情報を、最新のスナップショットファイルのスナップ番号に更新する。
【０１１９】
このようにして、元ファイルのデータが更新されるごとに、作成されているデータ位置管理テーブルのうち、最も新しい世代のスナップショットファイルのデータ位置管理テーブルが更新される。
【０１２０】
以上のようにして作成および更新されたデータ位置管理テーブル１１２ａ，１１２ｂを参照することで、スナップショット管理部１３０は、スナップショットファイル内のデータの読み出し時に、そのデータの含むデータブロックの位置情報を短時間で特定できる。
【０１２１】
図１６は、データ読み出しの第１の例を示す図である。図１６には、スナップ番号「１」のスナップショットファイル全体のリード要求を、端末装置３１から受信した場合のデータ読み出し処理が示されている。
【０１２２】
メタデータ管理部１２０は、指定されたスナップショットファイルのメタデータを参照することで、ブロック番号「３」、「４」、「６」、「７」の論理ブロックに対応するデータブロックの位置情報を取得する。またメタデータ管理部１２０は、ブロック番号「１」、「２」、「５」、「８」の論理ブロックについては、対応するデータブロックの探索先のファイルをスナップショット管理部１３０に問い合わせる。
【０１２３】
スナップショット管理部１３０は、データ位置管理テーブル１１２ａを参照して、スナップショットファイル内の各論理ブロック（ブロック番号「１」、「２」、「５」、「８」）に対応するデータブロックを有しているファイルを判断する。そしてスナップショット管理部１３０は、データブロックを有しているファイルの識別情報を、メタデータ管理部１２０に通知する。
【０１２４】
メタデータ管理部１２０は、通知されたファイルのメタデータを参照し、ブロック番号「１」、「２」、「５」、「８」の各論理ブロックに対応するデータブロックの位置情報を取得する。そしてメタデータ管理部１２０は、ブロック番号「１」〜「８」の論理ブロックに対応するデータブロックの位置情報を、端末装置３１に送信する。端末装置３１は、受信した位置情報を指定して、データ管理システム２００からデータを取得する。
【０１２５】
このように、データ位置管理テーブル１１２ａに対応するスナップショットファイル内のデータを読み出す際には、各論理ブロックに対応するデータブロックを有するファイルを容易に特定することができる。その結果、データの読み出しを高速に行うことができる。
【０１２６】
図１７は、データ読み出しの第２の例を示す図である。図１７には、スナップ番号「２」のスナップショットファイル全体のリード要求を、端末装置３１から受信した場合のデータ読み出し処理が示されている。
【０１２７】
メタデータ管理部１２０は、指定されたスナップショットファイルのメタデータを参照することで、ブロック番号「３」、「６」の論理ブロックに対応するデータブロックの位置情報を取得する。またメタデータ管理部１２０は、ブロック番号「１」、「２」、「４」、「５」、「７」、「８」の論理ブロックについては、対応するデータブロックの探索先のファイルをスナップショット管理部１３０に問い合わせる。
【０１２８】
図１７の例では、スナップ番号「２」のスナップショットファイルに対応するデータ位置管理テーブルが存在しない。そのためスナップショット管理部１３０は、次の世代のスナップショットファイルの識別情報（スナップ番号「１」）を、探索先のファイルとしてメタデータ管理部１２０に通知する。
【０１２９】
メタデータ管理部１２０は、スナップ番号「１」のスナップショットファイルのメタデータを参照することで、ブロック番号「４」、「６」の論理ブロックに対応するデータブロックの位置情報を取得する。またメタデータ管理部１２０は、ブロック番号「１」、「２」、「５」、「８」の論理ブロックについては、対応するデータブロックの探索先のファイルをスナップショット管理部１３０に問い合わせる。
【０１３０】
スナップショット管理部１３０は、データ位置管理テーブル１１２ａを参照して、スナップショットファイル内の各論理ブロック（ブロック番号「１」、「２」、「５」、「８」）に対応するデータブロックを有しているファイルを判断する。そしてスナップショット管理部１３０は、データブロックを有しているファイルの識別情報を、メタデータ管理部１２０に通知する。
【０１３１】
メタデータ管理部１２０は、通知されたファイルのメタデータを参照し、ブロック番号「１」、「２」、「５」、「８」の各論理ブロックに対応するデータブロックの位置情報を取得する。そしてメタデータ管理部１２０は、ブロック番号「１」〜「８」の論理ブロックに対応するデータブロックの位置情報を、端末装置３１に送信する。端末装置３１は、受信した位置情報を指定して、データ管理システム２００からデータを取得する。
【０１３２】
このように、スナップ番号「２」のスナップショットファイルが保持していないデータについては、スナップ番号「１」のスナップショットファイルが次の探索先とされる。そして、スナップ番号「１」のスナップショットファイルも保持していないデータについては、データ位置管理テーブル１１２ａに示されたファイルを探索先として、当該データを含むデータブロックが探索される。これにより、スナップショットファイルを１世代ずつ順番に探索先とする場合に比べ、効率的に各データを含むデータブロックを探索できる。
【０１３３】
図１８は、データ読み出しの第３の例を示す図である。図１８には、スナップ番号「３」のスナップショットファイル全体のリード要求を、端末装置３１から受信した場合のデータ読み出し処理が示されている。
【０１３４】
メタデータ管理部１２０は、指定されたスナップショットファイルのメタデータを参照して、スナップ番号「３」のスナップショットファイルがスパースファイルのままであることを認識する。そこで、メタデータ管理部１２０は、ブロック番号「１」〜「８」の論理ブロックについて、対応するデータブロックの探索先のファイルをスナップショット管理部１３０に問い合わせる。
【０１３５】
スナップショット管理部１３０は、データ位置管理テーブル１１２ａ，１１２ｂを参照して、スナップショットファイル内の各論理ブロック（ブロック番号「１」〜「８」）に対応するデータブロックを有しているファイルを判断する。なお、ブロック番号「３」、「６」については、２つのデータ位置管理テーブル１１２ａ，１１２ｂに異なるファイルの識別情報が登録されている。この場合、スナップショット管理部１３０は、古い世代のスナップショットファイルのデータ位置管理テーブル１１２ｂに設定されているファイルの識別情報を、データブロックの探索先のファイルとする。そしてスナップショット管理部１３０は、データブロックを有しているファイルの識別情報を、メタデータ管理部１２０に通知する。
【０１３６】
メタデータ管理部１２０は、通知されたファイルのメタデータを参照し、ブロック番号「１」〜「８」の各論理ブロックに対応するデータブロックの位置情報を取得する。そしてメタデータ管理部１２０は、ブロック番号「１」〜「８」の論理ブロックに対応するデータブロックの位置情報を、端末装置３１に送信する。端末装置３１は、受信した位置情報を指定して、データ管理システム２００からデータを取得する。
【０１３７】
このように、複数のデータ位置管理テーブル１１２ａ，１１２ｂを作成しておくことで、複数の世代のうちの最古のスナップショットファイルのデータを読み出す場合であっても、短時間でデータを読み出すことが可能となる。
【０１３８】
次に、データの読み出し処理の手順について詳細に説明する。
図１９は、データの読み出し手順を示すシーケンス図である。端末装置３１は、スナップショットを指定して、データの位置情報を問い合わせるためのリード要求を、メタデータ管理システム１００に送信する（ステップＳ２０１）。メタデータ管理システム１００は、データ位置情報取得処理を行う（ステップＳ２０２）。データ位置情報取得処理により、読み出し対象のデータを含むデータブロックの位置情報が取得される。メタデータ管理システム１００は、データの位置情報を端末装置３１に送信する（ステップＳ２０３）。端末装置３１は、取得した位置情報を指定して、データ管理システム２００に対して、位置情報で指定したデータブロックからのデータの取得を示すリード要求を送信する（ステップＳ２０４）。データ管理システム２００は、位置情報で指定された位置のデータブロックからデータを読み出す（ステップＳ２０５）。そしてデータ管理システム２００は、読み出したデータを端末装置３１に送信する（ステップＳ２０６）。
【０１３９】
図２０は、データ位置情報取得処理の手順の一例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
［ステップＳ２１１］メタデータ管理部１２０は、データ位置情報の問い合わせの対象となるデータを含む論理ブロック（探索対象の論理ブロック）のうちの、未処理のブロックの１つを選択する。例えばスナップショットファイル全体の読み出しが行われる場合、そのスナップショットファイル内のすべての論理ブロックが、データ位置情報の問い合わせの対象である。
【０１４０】
［ステップＳ２１２］メタデータ管理部１２０は、データ位置情報の問い合わせで指定されたスナップショットファイルを探索先のファイルとする。
［ステップＳ２１３］メタデータ管理部１２０は、探索先のファイルが、選択した論理ブロック内のデータを有しているか否かを判断する。例えばメタデータ管理部１２０は、探索先のファイルのメタデータのエクステントに、選択した論理ブロックのデータの格納先であるデータブロックの位置情報が設定されているか否かを判断する。メタデータ管理部１２０は、データブロックの位置情報が設定されていれば、探索先のファイルにデータがあると判断する。メタデータ管理部１２０は、探索先のファイルにデータがある場合、処理をステップＳ２１７に進める。またメタデータ管理部１２０は、探索先のファイルにデータがない場合、次の探索先のファイルをスナップショット管理部１３０に問い合わせて、処理をステップＳ２１４に進める。
【０１４１】
［ステップＳ２１４］スナップショット管理部１３０は、現在の探索先のファイルに対応するデータ位置管理テーブルがあるか否かを判断する。スナップショット管理部１３０は、対応するデータ位置管理テーブルがある場合、処理をステップＳ２１５に進める。またスナップショット管理部１３０は、対応するデータ位置管理テーブルがない場合、処理をステップＳ２１６に進める。
【０１４２】
［ステップＳ２１５］スナップショット管理部１３０は、問い合わせで指定されたスナップショットファイル以降の世代のスナップショットファイルのデータ位置管理テーブルに基づいて、探索先のファイルを切り換える。例えばスナップショット管理部１３０は、データ位置管理テーブルから、選択した論理ブロックに対応付けてファイルの識別情報を取得する。なお複数のデータ位置管理テーブルにおいて、選択した論理ブロックに対応付けてファイルの識別情報が設定されている場合がある。この場合、スナップショット管理部１３０は、問い合わせで指定されたスナップショットファイルに最も近い世代のスナップショットファイルから、ファイルの識別情報を取得する。スナップショット管理部１３０は、取得したファイルの識別情報を、次の探索先のファイルとしてメタデータ管理部１２０に通知する。その後、スナップショット管理部１３０は、処理をステップＳ２１３に進める。
【０１４３】
［ステップＳ２１６］スナップショット管理部１３０は、探索先のファイルを、１つ新しい世代のファイルに切り換える。例えばスナップショット管理部１３０は、現在の探索先のファイルが、最新以外のスナップショットファイルであれば、次の世代のスナップショットファイルの識別情報を、次の探索先のファイルとしてメタデータ管理部１２０に通知する。またスナップショット管理部１３０は、現在の探索先のファイルが、最新のスナップショットファイルであれば、元ファイルの識別情報を、次の探索先のファイルとしてメタデータ管理部１２０に通知する。その後、スナップショット管理部１３０は、処理をステップＳ２１３に進める。
【０１４４】
［ステップＳ２１７］メタデータ管理部１２０は、探索先のファイルのメタデータに含まれるエクステントから、選択した論理ブロックに対応するデータブロックの位置情報を取得する。
【０１４５】
［ステップＳ２１８］メタデータ管理部１２０は、他に探索対象の論理ブロックがあるか否かを判断する。メタデータ管理部１２０は、対応するデータブロックの位置情報を取得していない探索対象の論理ブロックがある場合、処理をステップＳ２１１に進める。またメタデータ管理部１２０は、探索対象の論理ブロックすべてについて、対応するデータブロックの位置情報を取得した場合、データ位置情報取得処理を終了する。
【０１４６】
このようにして、データ位置管理テーブルを参照することで、スナップショットファイルの各論理ブロック内のデータが、どのファイルに割り当てられたデータブロックから読み出すことができるのかを、迅速に判断することができる。その結果、スナップショットファイルのデータの読み出しが高速化する。
【０１４７】
第２の実施の形態では、一部のスナップショットファイルに対してのみ、データ位置管理テーブルを作成しているが、読み出し速度の高速化を優先する場合、すべてのスナップショットファイルに対応するデータ位置管理テーブルを作成してもよい。これにより、データの読み出し速度が、さらに高速化される。
【０１４８】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、データ位置管理テーブルのデータ量を抑制するものである。
【０１４９】
大規模なファイルシステムの場合、スナップショットファイル内のすべての論理ブロックについて、データブロックを有するファイルの識別情報をデータ位置管理テーブルに登録すると、データ位置管理テーブルのデータ量が膨大になってしまう。データ位置管理テーブルが大規模になると、データ位置管理テーブルの作成に所要する時間が長期化すると共に、データ位置管理テーブルを格納するために大量の記憶領域が消費されてしまう。
【０１５０】
そこで、第３の実施の形態では、スナップショットファイル内のデータの読み出し時に、続けて読み出される可能性の高い論理ブロックについてのみ、データブロックを有するファイルの識別情報をデータ位置管理テーブルに登録する。続けて読み出される可能性の高い論理ブロックは、例えば、リード要求で示される先頭の論理ブロックに続く、所定数の論理ブロックである。そこでスナップショット管理部１３０は、後続探索ブロック数Ｔ（Ｔは１以上の整数）を設定し、Ｔブロック先までの論理ブロックについて、対応するデータブロックの位置情報を、先読みで取得する。
【０１５１】
Ｔの値が大きくなるほど、データブロックを有するファイルの識別情報が設定された論理ブロック数が多くなる。すると、スナップショットファイルを辿らずに済む確率が大きくなるが、その一方、作成に所要する時間やデータ位置管理テーブルを格納する記憶領域が大きくなる。
【０１５２】
Ｔは予め設定した値でもよいし、メタデータサーバ１００ａ，１００ｂ，・・・の負荷状況に応じて、スナップショット管理部１３０がＴの値を定期的に変更してもよい。例えばスナップショット管理部１３０、メタデータサーバ１００ａ，１００ｂ，・・・の処理能力と実際のリソース使用量（ＣＰＵ使用率、メモリ使用率など）から負荷状況を判断する。またスナップショット管理部１３０は、リード要求のＩＯサイズ分の値を、Ｔとして動的に設定してもよい。以下の例では、リード要求のＩＯサイズ分の値をＴとする場合を例に採り、第３の実施の形態について詳細に説明する。
【０１５３】
図２１は、第３の実施の形態におけるデータ位置管理テーブルの作成例を示す図である。スナップショット管理部１３０は、データ位置管理テーブル１１３をスナップショットファイル内のデータの読み出し時に作成する。例えばメタデータ管理部１２０は、スナップショットファイル内のデータの読み出し時に、読み出し対象のデータを含む先頭の論理ブロックについて、対応するデータブロックを有するスナップショットを探索する。この際、スナップショット管理部１３０は、より新しい世代のスナップショットファイルへとファイルを順に辿るように、探索先とするファイルをメタデータ管理部１２０に通知する。さらにスナップショット管理部１３０は、先頭の論理ブロックと、ブロック番号で昇順にＴブロック先までの論理ブロックについて、対応するデータブロックを有するか否かを判断する。そしてスナップショット管理部１３０は、論理ブロックに対応するデータブロックを有するスナップショットファイルを見つけると、ブロック番号とスナップ番号との組をデータ位置管理テーブル１１３に追加する。スナップショット管理部１３０は、後続の論理ブロック内のデータのリード時に、作成したデータ位置管理テーブル１１３を参照する。そしてスナップショット管理部１３０は、後続の論理ブロックのブロック番号に対応するファイルの識別情報がデータ位置管理テーブル１１３に登録されていれば、そのファイルの識別情報を、探索先としてメタデータ管理部１２０に通知する。これによりメタデータ管理部１２０は、後続の論理ブロックについては、新しい世代のスナップショットファイルを順に探索することなく、目的のデータを含むデータブロックを保持するファイルの識別情報を取得することができる。
【０１５４】
図２１の例では、後続探索ブロック数が「２」のときに、スナップ番号「３」のスナップショットファイル内のデータを、ブロック番号「１」の論理ブロックから順に読み出すものとする。
【０１５５】
スナップ番号「３」のスナップショットファイルには、データブロックが割り当てられていない。そのため、メタデータ管理部１２０は、ブロック番号「１」の論理ブロックに対応するデータブロックがスナップ番号「３」のスナップショットファイル内にないと判断し、スナップショット管理部１３０に、次の探索先のファイルを問い合わせる。スナップショット管理部１３０は、問い合わせに応じて、スナップ番号「２」→「１」→元ファイルの順に、論理ブロックに対応するデータブロックの有無の探索先とするように、メタデータ管理部１２０に通知する。この際、スナップショット管理部１３０は、後続の２つの論理ブロック（ブロック番号「２」、「３」）について、予め、対応するデータブロックを有するファイルを探索し、探索結果を、データ位置管理テーブル１１３に登録する。
【０１５６】
その後、メタデータ管理部１２０が、スナップショット管理部１３０に、ブロック番号「２」に対応するデータブロックを有するファイルの次の探索先を問い合わせたものとする。この場合、スナップショット管理部１３０は、データ位置管理テーブル１１３を参照し、ブロック番号「２」に対応付けて登録されているファイルの識別情報を、次の探索先としてメタデータ管理部１２０に通知する。ブロック番号「２」に対応するデータブロックを有するファイルの次の探索先の問い合わせがあったときも同様に、スナップショット管理部１３０は、ブロック番号「３」に対応付けて登録されているファイルの識別情報を通知する。
【０１５７】
その後、スナップショット管理部１３０は、メタデータ管理部１２０からブロック番号「４」に対応するデータブロックを有するファイルの次の探索先の問い合わせを受けると、スナップ番号「２」→「１」の順にデータブロックの有無の探索先を通知する。そしてスナップショット管理部１３０は、後続の２つの論理ブロック（ブロック番号「５」、「６」）について、予め対応するデータブロックを有するファイルを探索し、探索結果を、データ位置管理テーブル１１３に登録する。
【０１５８】
次に、リード要求に基づいて後続探索ブロック数を決定する場合における、スナップショット管理部１３０による後続探索ブロック数の決定処理の手順について説明する。
図２２は、後続探索ブロック数の決定処理の手順の一例を示すフローチャートである。以下、図２２に示す処理をステップ番号に沿って説明する。
【０１５９】
［ステップＳ３０１］スナップショット管理部１３０は、例えば端末装置３１から、リード要求を受信すると、リード要求から、ＩＯサイズ（読み出すデータのデータ長）を取得する。
【０１６０】
［ステップＳ３０２］スナップショット管理部１３０は、取得したＩＯサイズに基づいて、後続探索ブロック数を決定する。例えばスナップショット管理部１３０は、取得したＩＯサイズが、論理ブロックの何ブロック分に相当するのか（読み出し論理ブロック数）を算出する。そしてスナップショット管理部１３０は、読み出し論理ブロック数から１を減算した値を、後続探索ブロック数Ｔに設定する。
【０１６１】
このようにして、後続探索ブロック数Ｔが、リード要求に応じた適切な値に設定される。
次に、リード要求に応じたデータ位置管理テーブル作成処理の手順について詳細に説明する。
【０１６２】
図２３は、データ位置管理テーブル作成処理の手順の一例を示すフローチャートである。以下、図２３に示す処理をステップ番号に沿って説明する。
［ステップＳ３１１］メタデータ管理部１２０は、リード要求で指定された論理ブロックを、探索対象として選択する。
【０１６３】
［ステップＳ３１２］メタデータ管理部１２０は、リード要求において、データの読み出し元として指定されているスナップショットファイルを、探索先のファイルとする。そして、メタデータ管理部１２０は、探索先のスナップショットファイルのファイル番号と探索対象の論理ブロックとを、スナップショット管理部１３０に通知する。
【０１６４】
［ステップＳ３１３］スナップショット管理部１３０は、探索対象の論理ブロックに対応するデータブロックを有するファイルの識別情報が取得済みか否かを判断する。例えばスナップショット管理部１３０は、データ位置管理テーブル１１３に、探索対象の論理ブロックに対応するデータブロックを有するファイルの識別情報が設定されていれば、取得済みであると判断する。スナップショット管理部１３０は、対応するデータブロックを有するファイルの識別情報を取得済みであれば、処理をステップＳ３１４に進める。またスナップショット管理部１３０は、対応するデータブロックを有するファイルの識別情報を取得していなければ、処理をステップＳ３１５に進める。
【０１６５】
［ステップＳ３１４］スナップショット管理部１３０は、探索先のファイルを、探索対象の論理ブロックに対応するデータブロックを有するファイルに切り換える。例えばスナップショット管理部１３０は、データ位置管理テーブル１１３において、探索対象の論理ブロックに対応付けて設定されているファイルの識別情報を、探索先のファイルとしてメタデータ管理部１２０に通知する。その後、スナップショット管理部１３０は、処理をステップＳ３１９に進める。
【０１６６】
［ステップＳ３１５］スナップショット管理部１３０は、探索先のファイルが、Ｔブロック先までのいずれかの論理ブロックに対応するデータブロックを有しているか否かを判断する。例えばスナップショット管理部１３０は、探索先のファイルのメタデータを参照する。そしてスナップショット管理部１３０は、探索対象の論理ブロックの次の論理ブロックからＴ個の論理ブロックのいずれかについて、データブロックの位置情報が設定されている場合、データブロックを有していると判断する。スナップショット管理部１３０は、いずれかの論理ブロックのデータブロックを有している場合、処理をステップＳ３１６に進める。またスナップショット管理部１３０は、いずれの論理ブロックについてもデータブロックを有していない場合、処理をステップＳ３１７に進める。
【０１６７】
［ステップＳ３１６］スナップショット管理部１３０は、データ位置管理テーブル１１３から、Ｔブロック先までの論理ブロックのうち、探索先のファイルに、対応するデータブロックがある論理ブロックのブロック番号のレコードを特定する。スナップショット管理部１３０は、特定したレコードに、ファイルの識別情報が未登録の場合、そのレコードに探索先のファイルの識別情報を設定する。
【０１６８】
［ステップＳ３１７］スナップショット管理部１３０は、探索先のファイルのメタデータを参照し、探索先のファイルに、探索対象の論理ブロックに対応するデータブロックがあるか否かを判断する。スナップショット管理部１３０は、該当するデータブロックがある場合、探索先のファイルを切り換えずに、処理をステップＳ３１９に進める。またスナップショット管理部１３０は、該当するデータブロックがない場合、処理をステップＳ３１８に進める。
【０１６９】
［ステップＳ３１８］スナップショット管理部１３０は、探索先のファイルを、１つ新しい世代のファイルに切り換える。その後、スナップショット管理部１３０は、処理をステップＳ３１３に進める。
【０１７０】
［ステップＳ３１９］メタデータ管理部１２０は、探索先のファイルのメタデータから、探索対象の論理ブロックの位置情報を取得し、リード要求の送信元の端末装置３１に送信する。
【０１７１】
このようにして、リード要求に応じてデータ位置管理テーブルが作成される。以下、図２４〜図２９を参照し、リード要求時のデータ位置管理テーブルの作成例について、具体的に説明する。
【０１７２】
図２４は、リード要求時のデータ位置管理テーブルの作成例を示す第１の図である。図２４には、リード要求受信時に作成されているスナップショットファイルと、各スナップショットファイルへのデータブロックの割り当て状況を示している。図２４の例では、元ファイルに対して、スナップ番号「０」〜「２」の３世代のスナップショットファイルが作成されている。このとき、最古の世代であるスナップ番号「２」のスナップショットファイルのブロック番号「１」〜「３」の３ブロック分のデータのリード要求が、端末装置３１からメタデータ管理システム１００に入力されたものとする。
【０１７３】
リード要求を受信したメタデータ管理システム１００では、メタデータ管理部１２０が、リード要求に基づいて、後続探索ブロック数Ｔ（先読みの範囲）を決定する。図２４の例では、後続探索ブロック数Ｔに「２」が設定されている。その後、メタデータ管理システム１００は、読み出し対象の論理ブロックのデータを含むデータブロックの位置情報を取得すると共に、データ位置管理テーブル１１３の作成処理を行う。
【０１７４】
図２５は、リード要求時のデータ位置管理テーブルの作成例を示す第２の図である。スナップショット管理部１３０は、まず、スナップ番号「２」のスナップショットファイルのデータ位置管理テーブル１１３に、ブロック番号「１」に対応するデータブロックを有するファイルの識別情報が設定されているか否かを判断する。図２５の例では、設定されていないため、スナップショット管理部１３０は、スナップ番号「２」のスナップショットファイルが、Ｔブロック先までの論理ブロック（ブロック番号「２」、「３」）に対応するデータブロックを有しているか否かを判断する。図２５の例では、該当データブロックを有していないため、スナップショット管理部１３０は、スナップ番号「２」のスナップショットファイルが、ブロック番号「１」の論理ブロックに対応するデータブロックを有しているか否かを判断する。図２５の例では、該当データブロックを有していないため、スナップショット管理部１３０は、探索先をスナップ番号「１」のスナップショットファイルに切り換える。
【０１７５】
図２６は、リード要求時のデータ位置管理テーブルの作成例を示す第３の図である。スナップショット管理部１３０は、スナップ番号「２」のスナップショットファイルのデータ位置管理テーブル１１３に、ブロック番号「１」に対応するデータブロックを有するファイルの識別情報が設定されているか否かを判断する。図２６の例では、設定されていないため、スナップショット管理部１３０は、スナップ番号「１」のスナップショットファイルが、Ｔブロック先までの論理ブロック（ブロック番号「２」、「３」）に対応するデータブロックを有しているか否かを判断する。図２６の例では、ブロック番号「３」に対応するデータブロックを有している。そのため、スナップショット管理部１３０は、データ位置管理テーブル１１３に、ブロック番号「３」に対応付けて、スナップ番号「１」を設定する。その後、スナップショット管理部１３０は、スナップ番号「１」のスナップショットファイルが、ブロック番号「１」の論理ブロックに対応するデータブロックを有しているか否かを判断する。図２６の例では、該当データブロックを有していないため、スナップショット管理部１３０は、探索先をスナップ番号「０」のスナップショットファイルに切り換える。
【０１７６】
図２７は、リード要求時のデータ位置管理テーブルの作成例を示す第４の図である。スナップショット管理部１３０は、スナップ番号「２」のスナップショットファイルのデータ位置管理テーブル１１３に、ブロック番号「１」に対応するデータブロックを有するファイルの識別情報が設定されているか否かを判断する。図２７の例では、設定されていないため、スナップショット管理部１３０は、スナップ番号「０」のスナップショットファイルが、Ｔブロック先までの論理ブロック（ブロック番号「２」、「３」）に対応するデータブロックを有しているか否かを判断する。図２７の例では、ブロック番号「３」に対応するデータブロックを有している。しかし、ブロック番号「３」に対応するファイルの識別情報はすでにデータ位置管理テーブル１１３に設定されている。そこでスナップショット管理部１３０は、データ位置管理テーブル１１３の更新を行わずに、スナップ番号「０」のスナップショットファイルが、ブロック番号「１」の論理ブロックに対応するデータブロックを有しているか否かを判断する。図２７の例では、該当データブロックを有していないため、スナップショット管理部１３０は、探索先を元ファイルに切り換える。
【０１７７】
図２８は、リード要求時のデータ位置管理テーブルの作成例を示す第５の図である。スナップショット管理部１３０は、スナップ番号「２」のスナップショットファイルのデータ位置管理テーブル１１３に、ブロック番号「１」に対応するデータブロックを有するファイルの識別情報が設定されているか否かを判断する。図２８の例では、設定されていないため、スナップショット管理部１３０は、元ファイルが、Ｔブロック先までの論理ブロック（ブロック番号「２」、「３」）に対応するデータブロックを有しているか否かを判断する。元ファイルは、すべての論理ブロックに対応するデータブロックを有しているため、ブロック番号「２」、「３」に対応するデータブロックを有している。ただし、ブロック番号「３」に対応するファイルの識別情報はすでにデータ位置管理テーブル１１３に設定されている。そこでスナップショット管理部１３０は、データ位置管理テーブル１１３に、ブロック番号「２」に対応付けて、元ファイルを示す識別情報を設定する。その後、スナップショット管理部１３０は、元ファイルが、ブロック番号「１」の論理ブロックに対応するデータブロックを有しているか否かを判断する。元ファイルは該当データブロックを有しているため、スナップショット管理部１３０は、探索先を元ファイルとして、メタデータ管理部１２０に伝える。
【０１７８】
メタデータ管理部１２０は、元ファイルのメタデータから、ブロック番号「１」の論理ブロックに対応するデータブロックの位置情報を取得し、その位置情報を端末装置３１に送信する。端末装置３１は、受信した位置情報に基づいて、データ管理システム２００から、スナップ番号「２」のスナップショットファイルのブロック番号「１」の論理ブロック内のデータ「Ａ」を取得する。
【０１７９】
次に、メタデータ管理システム１００において、ブロック番号「２」の論理ブロックに対応するデータブロックを有するファイルが探索される。
図２９は、リード要求時のデータ位置管理テーブルの作成例を示す第６の図である。スナップショット管理部１３０は、スナップ番号「２」のスナップショットファイルのデータ位置管理テーブル１１３に、ブロック番号「２」に対応するデータブロックを有するファイルの識別情報が設定されているか否かを判断する。図２９の例では、ブロック番号「２」に対応付けて、元ファイルを示す識別情報が設定されている。そこで、スナップショット管理部１３０は、探索先を元ファイルとして、メタデータ管理部１２０に伝える。
【０１８０】
メタデータ管理部１２０は、元ファイルのメタデータから、ブロック番号「２」の論理ブロックに対応するデータブロックの位置情報を取得し、その位置情報を端末装置３１に送信する。端末装置３１は、受信した位置情報に基づいて、データ管理システム２００から、スナップ番号「２」のスナップショットファイルのブロック番号「２」の論理ブロック内のデータ「Ｂ」を取得する。
【０１８１】
このようにして、第３の実施の形態によれば、データ位置管理テーブル１１３のサイズを抑止しながらも、効率的なデータの読み出しが可能となる。
〔その他の実施の形態〕
第２・第３の実施の形態では、メタデータ管理システム１００は、端末装置３１，３２，・・・からのリード要求に対して、データの位置情報を応答しているが、対応するデータを応答するようにしてもよい。その場合、メタデータ管理システム１００は、リード要求に応じたデータの位置情報を指定して、データ管理システム２００からデータを取得し、取得したデータを端末装置３１，３２，・・・に送信する。
【０１８２】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１８３】
１〜４  出力データ
１０  情報処理装置
１１  記憶部
１１ａ  元ファイル
１１ｂ，１１ｃ  スナップショットファイル
１１ｄ  データ位置管理情報
１２  処理部  
【図１】
2019185148.tif 000003
【図２】
2019185148.tif 000004
【図３】
2019185148.tif 000005
【図４】
2019185148.tif 000006
【図５】
2019185148.tif 000007
【図６】
2019185148.tif 000008
【図７】
2019185148.tif 000009
【図８】
2019185148.tif 000010
【図９】
2019185148.tif 000011
【図１０】
2019185148.tif 000012
【図１１】
2019185148.tif 000013
【図１２】
2019185148.tif 000014
【図１３】
2019185148.tif 000015
【図１４】
2019185148.tif 000016
【図１５】
2019185148.tif 000017
【図１６】
2019185148.tif 000018
【図１７】
2019185148.tif 000019
【図１８】
2019185148.tif 000020
【図１９】
2019185148.tif 000021
【図２０】
2019185148.tif 000022
【図２１】
2019185148.tif 000023
【図２２】
2019185148.tif 000024
【図２３】
2019185148.tif 000025
【図２４】
2019185148.tif 000026
【図２５】
2019185148.tif 000027
【図２６】
2019185148.tif 000028
【図２７】
2019185148.tif 000029
【図２８】
2019185148.tif 000030
【図２９】
2019185148.tif 000031