(57)【要約】非構造化データソースに含まれている非構造化データには、第１種メタデータが関連付けられている。データ処理システムが、抽出処理を実行する。抽出処理は、非構造化データソース内の該当する非構造化データ毎に、（ａ）その非構造化データの１以上のコンテンツ属性を表すコンテンツ情報を含んだメタデータである第２種メタデータを作成することと、（ｂ）その作成された第２種メタデータを、その非構造化データの第１種メタデータに関連付けることと、を含む。
2017168499.tif 000002
【特許請求の範囲】
【請求項１】
第１種メタデータが関連付けられている非構造化データを含んだ非構造化データソースへのアクセスのためのインターフェースを含んだ１以上のインターフェースであるインターフェース部と、
前記インターフェース部に接続された１以上のプロセッサであり抽出処理を実行するプロセッサ部と
を有し、
前記抽出処理は、前記非構造化データソース内の該当する非構造化データ毎に、
その非構造化データの１以上のコンテンツ属性を表すコンテンツ情報を含んだメタデータである第２種メタデータを作成することと、
前記作成された第２種メタデータを、その非構造化データの第１種メタデータに関連付けることと
を含む、
データ処理システム。
【請求項２】
１又は複数の第２種メタデータが、ユーザから指定された検索条件を含む検索要求に応答した検索の対象であり、
前記プロセッサ部は、前記検索条件に適合した１以上の第２種メタデータがそれぞれ関連付けられている１以上の第１種メタデータを特定する、
請求項１記載のデータ処理システム。
【請求項３】
前記特定した１以上の第１種メタデータの各々は、非構造化データのオリジナルのメタデータである第１の第１種メタデータであり、
前記プロセッサ部は、
前記特定した１以上の第１種メタデータである１以上の第１の第１種メタデータの各々について、その第１種メタデータの複製に基づくメタデータである第２の第１種メタデータを作成し、
作成された１以上の第２の第１種メタデータが属し前記ユーザに対して提供される仮想ボリュームを生成する、
請求項２記載のデータ処理システム。
【請求項４】
前記プロセッサ部は、前記検索要求に応答して前記仮想ボリュームを生成する、
請求項３記載のデータ処理システム。
【請求項５】
前記仮想ボリュームに対するライト対象の非構造化データが、前記仮想ボリュームに属する第１種メタデータ複製が参照する非構造化データを含んだ非構造化データソースと異なる領域に格納される、
請求項３記載のデータ処理システム。
【請求項６】
前記ユーザに提供される前記仮想ボリュームは、スナップショットボリュームであり、
前記スナップショットボリュームは、前記非構造化データソースにおける１又は複数の非構造化データのうちの、前記１以上の第２の第１種メタデータにより参照される１以上の非構造化データのデータ集合である、
請求項３記載のデータ処理システム。
【請求項７】
前記抽出処理は、前記検索要求に応答した処理とは非同期の処理である、
請求項２記載のデータ処理システム。
【請求項８】
前記抽出処理において抽出される非構造化データと前記抽出処理において作成される第２種メタデータとのうちの少なくとも１つが、前記ユーザにより定義され前記プロセッサ部により実行されるコンピュータプログラムであるユーザプログラムと、前記ユーザにより定義され前記プロセッサ部により参照されるルールとのうちの少なくとも１つに従う、
請求項２記載のデータ処理システム。
【請求項９】
前記非構造化データソースに格納された１又は複数の非構造化データは、１以上のオブジェクトに含まれており、
オブジェクト毎に第１種メタデータが存在し、
前記第１種メタデータ複製は、その第１種メタデータ複製に対応した第１種メタデータが参照する１以上の非構造化データのうち、前記検索条件に適合した第２種メタデータが関連付いた非構造化データのみ参照する、
請求項３記載のデータ処理システム。
【請求項１０】
前記プロセッサ部は、同一の第１の第１種メタデータから複数の第２の第１種メタデータを作成する、
請求項３記載のデータ処理システム。
【請求項１１】
前記非構造化データソースを提供する第１装置と別の装置である第２装置から前記仮想ボリュームが提供される、
請求項３記載のデータ処理システム。
【請求項１２】
前記インターフェース部及び前記プロセッサ部を含んだ複数のストレージ装置を有し、
前記第１装置及び前記第２装置の各々は、前記複数のストレージ装置のうちのいずれかのストレージ装置である、
請求項１１記載のデータ処理システム。
【請求項１３】
前記インターフェース部及び前記プロセッサ部を含んだ複数の装置を有し、
前記複数の装置が、
それぞれ第１の非構造化データソースを有する１以上の第１装置と、
前記１以上の第１装置に接続され第２の非構造化データソースを有する第２装置と
を含み、
前記１以上の第１装置の各々が、
複数のデバイスから収集された情報を含んだ１又は複数の非構造化データを、その第１装置が有する第１の非構造化データソースに格納し、
前記抽出処理を実行し、
前記抽出処理により得られた第２種メタデータとその第２種メタデータに対応した非構造化データとを前記第２装置に送信し、
前記第２装置が、
第２種メタデータとその第２種メタデータに対応した非構造化データとを前記１以上の第１装置の各々から受信し、
受信した第２種メタデータを格納し、且つ、その第２種メタデータに対応した非構造化データを前記第２の非構造化データソースに格納する、
請求項１記載のデータ処理システム。
【請求項１４】
第１種メタデータが関連付けられている非構造化データを含んだ非構造化データソース内の該当する非構造化データ毎に、
その非構造化データの１以上のコンテンツ属性を表すコンテンツ情報を含んだメタデータである第２種メタデータを作成し、
前記作成された第２種メタデータを、その非構造化データの第１種メタデータに関連付ける、
データ処理方法。
【請求項１５】
第１種メタデータが関連付けられている非構造化データを含んだ非構造化データソース内の該当する非構造化データ毎に、
その非構造化データの１以上のコンテンツ属性を表すコンテンツ情報を含んだメタデータである第２種メタデータを作成し、
前記作成された第２種メタデータを、その非構造化データの第１種メタデータに関連付ける、
ことをコンピュータに実行させるコンピュータプログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データ処理に関する。
【背景技術】
【０００２】
ストレージシステムにより管理されているデータは、検索及び分析等の様々な用途に使用し得る。【０００３】
例えば、ビックデータ分析では、特に、ファイルなど保存構造が定まっていない非構造化データに対する分析が、業務における新たな知見や気づきを得る有用な方法として期待されている。このビックデータ分析では、大量のデータを対象に分析を行うことで検索に時間がかかり、分析完了までに多大な時間を要してしまうことを防ぐため、大量のデータから分析に必要なデータのみの集合を作成することがある。必要なデータのみの集合を「データマート」（以下、ＤＭ）と呼び、当該データ集合の作成を「ＤＭ作成処理」という。【０００４】
ビッグデータ分析では、一般に、ＤＭ作成処理に多大な時間を要する。これは、大量のデータからデータ分析に必要なデータを複製（抽出）しＤＭに格納する処理に時間を要するためである。特許文献１は、ソースデータを仮想的に複製されたスナップショットデータとしてホスト計算機に示すことで短時間にデータの複製を可能とする技術を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】US5819292
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に開示の技術では、スナップショットデータをホスト計算機に示すために、ソースボリュームのようなデータソースのアドレスを指定する必要がある。このようなアドレス指定を必要とするスナップショット作成技術を、非構造化データソース（例えば大量の非構造化データを格納したソース）からＤＭを作成する処理に適用することは困難である。【０００７】
このような課題は、非構造化データソースから分析を目的としてＤＭを作成する処理に限らず、分析以外の用途のために非構造化データソースからデータ集合（部分集合）を作成する処理についてもあり得る。
【課題を解決するための手段】
【０００８】
非構造化データソースに含まれている非構造化データには、第１種メタデータが関連付けられている。データ処理システムが、抽出処理を実行する。抽出処理は、非構造化データソース内の該当する非構造化データ毎に、（ａ）その非構造化データの１以上のコンテンツ属性を表すコンテンツ情報を含んだメタデータである第２種メタデータを作成することと、（ｂ）その作成された第２種メタデータを、その非構造化データの第１種メタデータに関連付けることと、を含む。
【発明の効果】
【０００９】
複数の非構造化データの複数の第１種メタデータに関連付けられた複数の第２種メタデータのうち条件に適合する第２種メタデータに関連付いた第１種メタデータにより参照される非構造化データで構成された仮想的なデータ集合を作成できる。このため、短時間でデータ集合を作成できることが期待される。
【図面の簡単な説明】
【００１０】
【図１】実施例１の概要を示す。
【図２】Ｃスナップ処理とその前後の処理とを含んだ一連の処理の一例の概要を示す。
【図３】実施例１に係る計算機システムのブロック図である。
【図４】スナップショット処理の一例を示す。
【図５】ストレージ管理テーブルの構成を示す。
【図６】１つのＳメタに含まれるＳメタ管理情報及びＳメタ属性情報の構成を示す。
【図７】１つのＣメタに含まれるＣメタ管理情報の構成を示す。
【図８】コピーペア管理テーブルの構成を示す。
【図９】実施例４の概要を示す。
【図１０】データリード処理のフローチャートである。
【図１１】データライト処理のフローチャートである。
【図１２】抽出処理のフローチャートである。
【図１３】Ｃスナップ（選別）のフローチャートである。
【図１４】Ｃスナップ（スナップ取得）のフローチャートである。
【図１５】１つのデータＶＯＬと複数のスナップショットＶＯＬ（仮想ＤＭ）との関係の一例を示す。
【図１６】実施例２の概要を示す。
【図１７】スケールアウト処理の概要を示す。
【図１８】実施例３の概要を示す。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、幾つかの実施例を説明する。
【００１２】
なお、以下の説明では、「インターフェース部」は、１以上のインターフェースを含む。１以上のインターフェースは、１以上の同種のインターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種のインターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「記憶部」は、１以上のメモリを含む。少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、１以上のメモリに加えて、１以上のＰＤＥＶを含んでもよい。「ＰＤＥＶ」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）でよい。ＰＤＥＶは、例えば、ＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive)でよい。
【００１４】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１５】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも１つを用いながら行うため、処理の主語が、プロセッサ部（或いは、プロセッサ部を有する計算機又は計算機システム）とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記録媒体であってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１６】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１７】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号（又は参照符号における共通部分）を使用し、同種の要素を区別して説明する場合は、要素のＩＤ（又は要素の参照符号）を使用することがある。
【００１８】
また、以下の説明では、「ホストシステム」は、１以上の物理的なホスト計算機（例えばホスト計算機のクラスタ）であってもよいし、少なくとも１つの仮想的なホスト計算機（例えばＶＭ（Virtual Machine））を含んでもよい。
【００１９】
また、以下の説明では、「管理システム」は、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が表示デバイスを有していて管理計算機が自分の表示デバイスに情報を表示する場合、管理計算機が管理システムでよい。また、例えば、管理計算機（例えばサーバ）が表示用情報を遠隔の表示用計算機（例えばクライアント）に送信し表示用計算機がその情報を表示する場合（管理計算機が表示用計算機に情報を表示する場合）、管理計算機と表示用計算機とのうちの少なくとも管理計算機を含んだシステムが管理システムでよい。
【００２０】
また、以下の説明では、「ストレージシステム」は、１以上の物理的なストレージ装置であってもよいし、少なくとも１つの仮想的なストレージ装置（例えばＬＰＡＲ（Logical Partition）又はＳＤＳ（Software Defined Storage））を含んでもよい。
【００２１】
また、以下の説明では、「ＲＡＩＤ」は、Redundant Array of Independent (or Inexpensive) Disksの略である。ＲＡＩＤグループは、複数のＰＤＥＶ（典型的には同種のＰＤＥＶ）で構成され、そのＲＡＩＤグループに関連付けられたＲＡＩＤレベルに従いデータを記憶する。ＲＡＩＤグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するＲＡＩＤグループのことでよい。
【００２２】
また、以下の説明では、「ＶＯＬ」は、論理ボリュームの略であり、論理的な記憶デバイスでよい。ＶＯＬは、実体的なＶＯＬ（ＲＶＯＬ）であってもよいし、仮想的なＶＯＬ（ＶＶＯＬ）であってもよい。「ＲＶＯＬ」は、そのＲＶＯＬを提供するストレージシステムが有する物理的な記憶資源（例えば、１以上のＲＡＩＤグループ）に基づくＶＯＬでよい。「ＶＶＯＬ」は、外部接続ＶＯＬ（ＥＶＯＬ）と、容量拡張ＶＯＬ（ＴＰＶＯＬ）と、スナップショットＶＯＬとのうちのいずれでもよい。ＥＶＯＬは、外部のストレージシステムの記憶空間（例えばＶＯＬ）に基づいておりストレージ仮想化技術に従うＶＯＬでよい。ＴＰＶＯＬは、複数の仮想領域（仮想的な記憶領域）で構成されており容量仮想化技術（典型的にはThin Provisioning）に従うＶＯＬでよい。スナップショットＶＯＬは、オリジナルのＶＯＬのスナップショットとして提供されるＶＯＬでよい。スナップショットＶＯＬは、ＲＶＯＬであってもよい。「プール」は、論理的な記憶領域（例えば複数のプールＶＯＬの集合）でよい。例えば、プールとして、ＴＰプールと、スナップショットプールとのうちの少なくとも１種類があってよい。ＴＰプールは、複数の実領域（実体的な記憶領域）で構成された記憶領域でよい。ストレージシステム（例えば後述のストレージコントローラ）が、ホストシステムから受信したライト要求が指定するアドレスが属する仮想領域（ＴＰＶＯＬの仮想領域）に実領域が割り当てられていない場合、その仮想領域（ライト先仮想領域）にＴＰプールから実領域を割り当ててよい（ライト先仮想領域に他の実領域が割り当て済であっても実領域が新たにライト先仮想領域に割り当てられてもよい）。ストレージシステムは、割り当てられた実領域に、そのライト要求に付随するライト対象データを書き込んでよい。スナップショットプールは、オリジナルのＶＯＬから退避されたデータが格納される記憶領域でよい。１つのプールが、ＴＰプールとしてもスナップショットプールとしても使用されてもよい。「プールＶＯＬ」は、プールの構成要素となるＶＯＬでよい。プールＶＯＬは、ＲＶＯＬであってもよいしＥＶＯＬであってもよい。
【実施例１】
【００２３】
図１は、実施例１の概要を示す。【００２４】
実施例１に係る計算機システムは、１以上のホスト計算機２００、管理計算機１００、及び、ストレージ装置３００を含む。ホスト計算機２００はネットワーク５００を介しストレージ装置３００に接続される。管理計算機１００はネットワーク５５０を介しストレージ装置３００に接続される。【００２５】
ホスト計算機２００は、アプリケーションプログラム（以下、アプリ）２１１を実行する。例えば、ホスト計算機２００Ｐは、業務アプリ２１１Ｂを実行し、ホスト計算機２００Ａは、分析アプリ２１１Ａを実行する。管理計算機１００は、管理プログラム１１２を実行する。【００２６】
ストレージ装置３００は、オブジェクトストレージ装置であり、ストレージコントローラ３２９を有する。ストレージコントローラ３２９は、ローカルメモリ１２００を有し、ＶＯＬ２６を提供する。ＶＯＬ２６として、少なくとも、データＶＯＬ２６Ｄがある。データＶＯＬ２６Ｄは、ネームスペース又はＤＷＨ（Data Ware House）のようなデータソース（典型的には非構造化データソース）の一例である。データＶＯＬ２６Ｄには、データチャンク８１が格納される。本実施例において、「データチャンク」は、有意な単位のデータ（例えば、静止画、動画、Ｅメール）である。データチャンクは、例えば、センサからのデータを含んだ時系列データのうちの一部分（例えば或る時間毎のデータ）であってもよい。所定のデータ属性が共通する１以上のデータチャンク８１が同一のオブジェクトに含まれる。本実施例において、「オブジェクト」は、１以上のデータチャンク８１と、その１以上のデータチャンク８１に対応した１つのＳメタ８２とを含むデータセットである。例えば、データチャンク８１が、データ発行元（例えば、カメラ等のセンサ）からのデータの場合、同一のデータ発行元からの各データが「データチャンク」であり、同一のデータ発行元からの複数のデータチャンク（データ属性「発行元」が共通する複数のデータチャンク）が同一の「オブジェクト」に含まれる。本実施例では、「非構造化データ」は、オブジェクト内の少なくとも１つを含んだデータでよい。なお、「非構造化データ」は、いわゆる半構造化データを含む概念であってもよい。以下、１つのオブジェクトに含まれる１以上のデータチャンクを「データチャンクユニット」又は「オブジェクトデータ」と呼んでもよい。「非構造化データ」は、オブジェクト内の各データチャンクであってもよいし、一部のデータチャンクであってもよいし、データチャンクユニット（オブジェクトデータ）であってもよい。【００２７】
本実施例では、２種類のメタデータが存在する。２種類のメタデータの少なくとも一部がローカルメモリ１２００に格納される。２種類のメタデータを、本実施例では、「Ｓメタ」及び「Ｃメタ」と呼ぶ。Ｓメタ８２（又は、１つのデータチャンクに対応した後述のＳメタ属性情報１２２０）が、第１種メタデータの一例であり、Ｃメタ８３が、第２種メタデータの一例である。本実施例では、Ｓメタ８２とオブジェクトが１：１で対応する。故に、Ｓメタ８２とデータチャンク８１が１：１又は１：多で対応する。一方、Ｃメタ８３とデータチャンク８１は、１：１又は多：１で対応する。ユーザ毎に後述の抽出プログラムが存在することがあり、その場合、抽出プログラムによって同一のデータチャンク８１であっても作成するＣメタ８３が異なるためである。故に、Ｓメタ８２とＣメタ８３が１：１又は１：多で対応する。Ｓメタ８２は、オブジェクトに含まれるデータチャンクユニット（全てのデータチャンク８１）に紐付いているメタデータであり、例えば、ＳメタＩＤ（オブジェクトＩＤ）と、対応するオブジェクトに含まれる各データチャンク８１の格納場所を表す情報とを含む。一方、Ｃメタ８３は、データＶＯＬ２６Ｄから抽出されたデータチャンク８１（データコンテンツ）から特定された１以上のコンテンツ属性を表すコンテンツ情報を含んだメタデータである。「コンテンツ属性」とは、データのコンテンツに関する属性であり、例えば、データ種別（例えば画像、Ｅメール）、時刻（例えば、取得時刻又は更新時刻）等である。コンテンツ情報は、テキスト（例えば文字列）で表現された情報であるが、テキストに代えて加えて他種の情報（例えば特徴量等を表す数値）を含んでもよい。Ｓメタ８２とＣメタ８３には、相互にその関係性を示すための情報も保持される。具体的には、Ｃメタ８３は、そのＣメタ８３に対応したデータチャンク８１を参照するＳメタ８２を参照し、そのＣメタ８３により参照されるＳメタ８２は、そのＣメタ８３を参照する。つまり、同一のデータチャンク８１に対応したＣメタ８３及びＳメタ８２が互いに参照し合う。なお、このような双方向の参照（リンク）に代えて、Ｃメタ８３からＳメタ８２への単方向の参照が採用されてもよい。Ｃメタ８３は、データチャンク８１のメタデータの一種であるため、データチャンク８１よりもデータ量が小さい。また、Ｓメタ８２とオブジェクトは、１：１に限らない（例えば、多：多又は１：多でもよい）。【００２８】
ホスト計算機２００は、Ｉ／Ｏ（Input/Output）要求をストレージ装置３００に発行する。Ｉ／Ｏ要求は、ライト要求又はリード要求である。Ｉ／Ｏ要求がリード要求の場合、リード対象のデータチャンク８１に対応したオブジェクトＩＤが指定されるようになっている。ストレージコントローラ３２９は、例えばホスト計算機２００Ａからリード要求を受信した場合、そのリード要求が指定するオブジェクトＩＤが記述されたＳメタ８２を特定し、特定したＳメタ８２が指すデータチャンク８１をデータＶＯＬ２６Ｄから読み出し、そのデータチャンク８１をホスト計算機２００Ａに返信する。【００２９】
ストレージコントローラ３２９は、ＤＭ作成処理を実行する。ＤＭ作成処理は、ユーザからの特定種類の要求であるユーザ要求に応答して開始される。ユーザ要求は、ＤＭ作成の明示的な要求であってもよいし、検索要求のようにＤＭ作成要求の１つとして定義された要求であってもよい。本実施例では、ストレージコントローラ３２９は、ホスト計算機２００のユーザ（例えば分析者）から検索要求を受け付け、管理計算機１００のユーザ（例えば管理者）からＤＭ作成要求を受け付ける。ユーザ要求では、分析観点等に従う検索条件（ＤＭに含まれるべきデータに関する条件）が指定される。検索条件としては、例えば、データ種別（例えば、写真、Ｅメール）、データ発行元（例えば、センサ型番）、位置（例えば、撮影位置のようなデータ取得位置）、時間帯（例えば、撮影時刻のような時間帯）及びデータ値範囲（例えば、データに含まれるメトリック値の上限と下限）のうちの少なくとも１つについての条件を採用し得る。【００３０】
検索条件として、通常は、データチャンク８１が実際に格納されている領域（例えばＶＯＬ領域）のアドレスは指定されない。通常、そのようなアドレスをユーザは知らないためである。【００３１】
しかし、本実施例に係るＤＭ作成処理は、以下の（理由１）〜（理由３）のうちの少なくとも（理由３）から、短時間で終了することが期待される。
（理由１）ＤＭ作成処理では、Ｃメタ８３が参照され、データＶＯＬ２６Ｄ内のデータチャンク８１は参照されない。
（理由２）ＤＭ作成処理において参照されるＣメタ８３は、ＤＭ作成処理と非同期に作成されたＣメタ８３（例えば、ＤＭ作成処理の開始前に作成されたＣメタ８３）である。言い換えれば、Ｃメタ８３は、ＤＭ作成処理の開始の契機であるユーザ要求とは異なる契機で作成される。例えば、データチャンク８１がデータＶＯＬ２６Ｄに格納されたときにそのデータチャンク８１のＣメタ８３が作成される。
（理由３）ＤＭ作成のためにデータチャンク８１を複製することは不要である。すなわち、作成されるＤＭは、データＶＯＬ２６Ｄ内のデータチャンク８１の複製が格納される実体的なＤＭではなく、データＶＯＬ２６Ｄ内のデータチャンク８１を参照する仮想的なＤＭ（以下、ＶＤＭ）である。ＶＤＭは、本実施例ではＳＳＶＯＬ（スナップショットＶＯＬ）２６Ｓである。ＳＳＶＯＬ２６Ｓの作成のためには、第１Ｓメタ８２Ｓを複製すればよく、データチャンク８１それ自体の複製は不要である。なお、ＶＤＭに含まれるデータチャンク８１がＳメタ８２の全ての参照先データチャンク８１とは限らないため、第１Ｓメタ８２Ｓの複製に基づくメタデータである第２Ｓメタ８２Ｔは、第１Ｓメタ８２と完全には一致しないこともある。第１Ｓメタ８２Ｓは、オブジェクトに含まれるオリジナルのメタデータであり、第２Ｓメタ８２Ｔは、上述したように、第１Ｓメタ８２Ｓの複製に基づくメタデータである。第１Ｓメタ８２Ｓが、第１の第１種メタデータの一例であり、第２Ｓメタ８２Ｔが、第２の第２種メタデータの一例である。つまり、本実施例では、Ｓメタ８２として、第１Ｓメタ８２Ｓと第２Ｓメタ８２Ｔとがある。なお、第２Ｓメタ８２Ｔは、ＳＳＶＯＬ２６Ｓを通じて参照可能なデータチャンクであるスナップショットデータチャンク（実体は、データＶＯＬ２６Ｄ内のデータチャンク）に関する情報を保持するデータなので、必ずしもメタデータといった便宜的なデータ名を使用しなくてもよく、例えば、スナップショット管理データのように別の名称で呼ばれてもよい（この場合、混同が生じないので、第１Ｓメタは、単に「Ｓメタ」又は「メタデータ」と呼ばれてもよい）。【００３２】
以上の理由を基に、以下、本実施例に係るＤＭ作成を、「Ｃスナップ」と呼び、ＤＭ作成処理を「Ｃスナップ処理」と呼ぶ。なお、ＤＭは、データ集合の一例であり、ＶＤＭは、仮想的なデータ集合の一例である。【００３３】
図１の例によれば、例えば、分析アプリ２１１Ａ（ホスト計算機２００Ａ）からの検索要求４２とは非同期に（例えば、検索要求４２に応答してＣスナップが開始される前に）、ストレージコントローラ３２９が、データＶＯＬ２６Ｄ内のデータチャンク＃１及び＃２にそれぞれ対応したＣメタ＃１及び＃２を作成してローカルメモリ１２００に格納する。Ｃメタ＃１は、データチャンク＃１を参照する第１Ｓメタ＃１を参照し、Ｃメタ＃２は、データチャンク＃２を参照する第１Ｓメタ＃２を参照する。【００３４】
図１の例によれば、ストレージコントローラ３２９は、検索要求４２に応答して、Ｃスナップを開始する。Ｃスナップ処理は、「Ｃスナップ（選別）」と、「Ｃスナップ（スナップ取得）」の２つに大別される。Ｃスナップ（選別）では、ストレージコントローラ３２９は、存在するＣメタ＃１及び＃２から、検索要求４２で指定されている検索条件に適合するＣメタ８３を探す。つまり、検索範囲が、データチャンク８１ではなくＣメタ８３である。検索条件に適合した少なくとも１つのＣメタ８３が見つかった場合、Ｃスナップ（スナップ取得）が実行される。Ｃメタ＃１が見つかったとする。Ｃスナップ（スナップ取得）では、ストレージコントローラ３２９は、Ｃメタ＃１が参照する第１Ｓメタ＃１の複製に基づく第２Ｓメタ＃１´を作成し、第２Ｓメタ＃１´が属するＳＳＶＯＬ２６Ｓ（ＶＤＭ）を作成する。ストレージコントローラ３９２は、ＳＳＶＯＬ２６Ｓを、１以上のホスト計算機２００のうちの少なくともホスト計算機２００Ａ（検索要求４２の送信元）に提供する。分析アプリ２１１Ａ（ホスト計算機２００Ａ）は、ＳＳＶＯＬ２６Ｓに属する第２Ｓメタ＃１´が参照するデータチャンク８１を用いて分析を実行できる。なお、ＳＳＶＯＬ２６Ｓが参照するデータチャンク８１のアクセス状態（アクセス制限）として、例えば、“Ｒ／Ｗ可”（リード及びライトのいずれも可）、“ＲＯ”（リードオンリー（リードのみ可））、及び、“Ｒ／Ｗ不可”（リード及びライトのいずれも不可）のいずれが採用されてもよい。例えば下記のうちの少なくとも１つが採用されてよい。
（Ｖ１）ＳＳＶＯＬ２６Ｓの提供先が複数のホスト計算機２００の場合、ＳＳＶＯＬ２６Ｓのアクセス状態は“ＲＯ”とされてよい。これにより、複数のホスト計算機２００間でデータの整合性を維持できる。
（Ｖ２）ＳＳＶＯＬ２６Ｓの提供先がホスト計算機２００Ａのみの場合、ＳＳＶＯＬ２６Ｓのアクセス状態は“Ｒ／Ｗ”とされてよい。これにより、ホスト計算機２００ＡがＳＳＶＯＬ２６Ｓをカスタマイズできる。例えば、ストレージコントローラ３９２は、ＳＳＶＯＬ２６Ｓを指定したライト要求を受けた場合、そのライト要求に付随するデータチャンクを、プールに格納してよい。【００３５】
以上の通り、Ｃスナップ処理は、データチャンク８１の複製が不要のため、短時間で終了することが期待できる。【００３６】
以下、本実施例を詳細に説明する。【００３７】
図２は、Ｃスナップ処理とその前後の処理とを含んだ一連の処理の一例の概要を示す。【００３８】
図２の例によれば、Ｃスナップ処理の前は、「（０）通常状態」及び「（１）抽出処理」である。「（０）通常状態」は、Ｃメタ８３が作成される前の状態である。「（１）抽出処理」では、Ｃメタ８３が作成される。Ｃメタ８３は、第１Ｓメタ８２Ｓを参照する。【００３９】
Ｃスナップ処理は、２つの処理に大別され、具体的には、「（２−１）Ｃスナップ（選別）」と、「（２−２）Ｃスナップ（スナップ取得）」である。【００４０】
Ｃスナップ処理の後は、上述したように、「（３）分析」が行われる。【００４１】
図２の詳細な説明は後述する。【００４２】
図３は、実施例１に係る計算機システムのブロック図である。【００４３】
上述したように、計算機システムは、管理計算機１００、ホスト計算機２００及びストレージ装置３００を備える。管理計算機１００、ホスト計算機２００及びストレージ装置３００のうちのいずれも、１台以上備わっていてよい。管理計算機１００は、管理システムの一例である。ホスト計算機２００は、ホストシステムの一例である。ストレージ装置３００は、ストレージシステムの一例である。【００４４】
管理計算機１００、ホスト計算機２００及びストレージ装置３００は、ネットワーク（例えばＬＡＮ（Local Area Network））５００を介して相互に接続される。また、管理計算機１００は、ホスト計算機２００及びストレージ装置３００は、ネットワーク（例えばＳＡＮ（Storage Area Network））５５０を介して接続される。ネットワーク５００及び５５０は一体でもよい。【００４５】
管理計算機１００は、Ｉ／Ｆ（インターフェース）１３１、Ｉ／Ｆ１３０、メモリ１１０及びそれらに接続されたプロセッサ１２０を有する。Ｉ／Ｆ１３１及びＩ／Ｆ１３０は、インターフェース部の一例である。Ｉ／Ｆ１３１は、ネットワーク５５０に接続される。Ｉ／Ｆ１３０は、ネットワーク５００に接続される。メモリ１１０が、管理プログラム１１２を記憶する。プロセッサ１２０は、管理プログラム１１２を実行することで、ストレージ装置３００に要求を発行できる。なお、要求は、ライト要求、リード要求、又はコピー制御要求等でよい。【００４６】
ホスト計算機２００は、Ｉ／Ｆ２３１、Ｉ／Ｆ２３０、メモリ２１０及びそれらに接続されたプロセッサ２２０を有する。Ｉ／Ｆ２３１及びＩ／Ｆ２３０は、インターフェース部の一例である。Ｉ／Ｆ２３１は、ネットワーク５５０に接続される。Ｉ／Ｆ２３０は、ネットワーク５００に接続される。メモリ２１０が、ＯＳ（Operating System）２１２、アプリ２１１及びエージェントプログラム２１３等のプログラムを記憶する。プロセッサ２２０は、メモリ２１０内のプログラムを実行する。例えば、プロセッサ２２０は、プログラムを実行することによりストレージ装置３００にＩ／Ｏ要求を送信する。それにより、ストレージ装置３００によって提供されるＶＯＬ２６にアクセスできる。【００４７】
アプリ２１１は、例えば分析アプリである。例えば、分析アプリは、相関分析などの分析処理を実施する。ＯＳ２１２は、ホスト計算機２００の処理の全体を制御する。エージェントプログラム２１３は、管理計算機１００に指示を送信し、管理計算機１００は、その指示をストレージ装置３００に転送できる。分析アプリ２１１は、ストレージ機能を利用したい場合、エージェントプログラム２１３を利用することで、管理プログラム１１２を経由して、分析処理と連動したストレージ制御が可能となる。例えば、分析アプリがＤＭ作成機能を有する場合、ユーザによるＤＭ作成操作に応答してエージェントプログラム２１３が管理プログラム１１２にその操作内容を送信し、管理プログラム１１２がその操作内容を、コピー制御要求に変換し、そのコピー制御要求をストレージ装置３００に送信する。【００４８】
ストレージ装置３００は、１以上のＰＤＥＶ１５００と、それに接続されたストレージコントローラ３２９とを有する。【００４９】
１以上のＰＤＥＶ１５００は、１以上のＲＡＩＤグループを構成してもよい。ＰＤＥＶ１５００は、例えば、ＨＤＤ又はＳＳＤである。１以上のＰＤＥＶ１５００に、データＶＯＬ２６Ｄに格納されたデータチャンク８１等が格納される。１以上のＰＤＥＶ１５００に、複数のＣメタ８３と複数のＳメタ８２のうちの少なくとも一部が格納されてもよい。【００５０】
ストレージコントローラ３２９は、Ｉ／Ｆ１３２１、Ｉ／Ｆ１３２０、Ｉ／Ｆ１４００、キャッシュメモリ１１００、ローカルメモリ１２００、及びそれらに接続されたプロセッサ１３１０を有する。ローカルメモリ１２００が、情報及びプログラムを記憶する。プロセッサ１３１０が、ローカルメモリ１２００内のプログラムを実行することにより、ローカルメモリ１２００内の情報を参照又は更新したり、ＶＯＬに対するＩ／Ｏを行ったり、Ｃメタ８３を作成したり、Ｃスナップを実行したりする。【００５１】
Ｉ／Ｆ１３２１、Ｉ／Ｆ１３２０及びＩ／Ｆ１４００は、インターフェース部の一例である。Ｉ／Ｆ１３２１は、ネットワーク５５０に接続される。Ｉ／Ｆ１３２０は、ネットワーク５００に接続される。Ｉ／Ｆ１４００は、１以上のＰＤＥＶ１５００に接続される。【００５２】
キャッシュメモリ１１００及びローカルメモリ１２００は、記憶部の一例である。キャッシュメモリ１１００及びローカルメモリ１２００は１つのメモリであって、そのメモリに、キャッシュメモリとしてのキャッシュ領域と、ローカルメモリとしてのローカルメモリ領域とが設けられていてもよい。【００５３】
キャッシュメモリ１１００は、１以上のＰＤＥＶ１５００に入出力されるデータ（例えば、ホスト計算機２００からのＩ／Ｏ要求に従うデータ（ライト対象データ又はリード対象データ））を一時的に格納するためのメモリである。【００５４】
ローカルメモリ１２００は、情報及びプログラムを記憶する。具体的には、例えば、ローカルメモリ１２００は、Ｓメタ管理情報１２１０、Ｓメタ属性情報１２２０、Ｃメタ管理情報１２３０、ストレージ管理テーブル１２５０及びコピーペア管理テーブル１２６０を記憶する。また、例えば、ローカルメモリ１２００は、Ｉ／Ｏプログラム６１、オブジェクトプログラム６２、データ処理プログラム６３、スナップショットプログラム６４、抽出プログラム１２９０及びＣスナッププログラム１２９１を記憶する。【００５５】
Ｓメタ８２毎に、Ｓメタ管理情報１２１０及びＳメタ属性情報１２２０が存在する。Ｓメタ管理情報１２１０は、オブジェクトを管理するため情報である。Ｓメタ属性情報１２２０は、データチャンク８１を管理するための情報である。【００５６】
Ｃメタ８３毎に、Ｃメタ管理情報１２３０が存在する。Ｃメタ８３は、データチャンク８１から特定された１以上のコンテンツ属性を表すコンテンツ情報を含む。Ｃメタ管理情報１２３０は、Ｃメタ８３の少なくとも一部である。【００５７】
ストレージ管理テーブル１２５０は、ストレージ装置３００によって提供されるＶＯＬ２６に関する情報を保持するテーブルである。コピーペア管理テーブル１２６０は、ＳＳＶＯＬ２６Ｓが属するコピー構成に関する情報を保持するテーブルである。【００５８】
Ｉ／Ｏプログラム６１は、Ｉ／Ｏ要求を処理するためのプログラムである。オブジェクトプログラム６２は、オブジェクトを処理するためのプログラムである。データ処理プログラム６３は、ＶＯＬ２６にアクセスするプログラムである。スナップショットプログラム６４は、ＳＳＶＯＬ２６Ｓを作成するプログラムである。【００５９】
抽出プログラム１２９０は、データチャンク８１を抽出し抽出したデータチャンク８１を基にＣメタ８３を作成するプログラムである。Ｃスナッププログラム１２９１は、Ｃスナップ処理を実行するプログラムである。抽出プログラム１２９０及びＣスナッププログラム１２９１のうちの少なくとも１つが、ユーザにより作成されたプログラムであるユーザプログラムでよい。つまり、抽出プログラム１２９０及びＣスナッププログラム１２９１のうちの少なくとも１つが、ユーザ毎に存在し、ホスト計算機２００のユーザに対応した抽出プログラム１２９０及びＣスナッププログラム１２９１のうちの少なくとも１つが実行されてよい。抽出プログラム１２９０及びＣスナッププログラム１２９１のうちの少なくとも１つがユーザプログラムであることにより、ユーザ（例えば分析者）により望ましい分析結果が得られるようなＣメタ８３及びＳＳＶＯＬ２６Ｓ（ＶＤＭ）のうちの少なくとも１つが期待できる。【００６０】
図４は、スナップショット処理の一例を示す。【００６１】
スナップショット処理は、ＳＳＶＯＬ２６Ｓに対するライト時の処理である。ストレージコントローラ３２９は、１以上のプールＶＯＬ２６Ｐ（プールＶＯＬ＃１〜＃４）で構成されたプール９１を管理している。【００６２】
ストレージコントローラ３２９は、ＳＳＶＯＬ２６Ｓを指定したライト要求をホスト計算機２００から受信する。そのライト要求は、例えば、ＳＳＶＯＬ２６に属するＳメタ（Ｓメタ複製）の参照先のデータチャンクを含んだオブジェクトのオブジェクトＩＤを指定したライト要求である。ストレージコントローラ３２９は、そのライト要求に従うデータチャンク８１（例えば＃１）を、ＳＳＶＯＬ２６（Ｓメタ）の参照先ではなく、プール９１に格納する。すなわち、ライト対象データチャンク８１が、ＳＳＶＯＬ２６（Ｓメタ）の参照先のＶＯＬとは異なるＶＯＬの一例であるプールＶＯＬ２６Ｐに格納される。ストレージコントローラ３２９は、データチャンクの仮想アドレス（ＳＳＶＯＬ２６Ｓの領域のアドレス）と、データチャンク８１の実アドレス（プールＶＯＬ２６Ｐの領域のアドレス）との対応付けを管理する。このように、スナップショット処理として、Ｒｉｄｉｒｅｃｔ−ｏｎ−ｗｒｉｔｅ方式の処理が採用されてよい。すなわち、ＳＳＶＯＬ２６Ｓ（又はデータＶＯＬ２６Ｄ）内のデータチャンクに対して書き込みが発生すると、その書き込みは新たな領域に対して行われ、第１Ｓメタ８２Ｓ及び第２Ｓメタ８２Ｔが指し示す領域（アドレス）が書き換わる。このように、Ｒｉｄｉｒｅｃｔ−ｏｎ−ｗｒｉｔｅ方式のスナップショット処理が採用されてよいが、Ｃｏｐｙ−ｏｎ−ｗｒｉｔｅ方式など他の方式のスナップショット処理が採用されてもよい。【００６３】
図５は、ストレージ管理テーブル１２５０の構成を示す。【００６４】
ストレージ管理テーブル１２５０は、ストレージＩＤ１２５２を含む。ストレージＩＤ１２５２毎に、１以上のルートＩＤ１２５１を含む。【００６５】
ストレージＩＤ１２５２は、ストレージ装置３００の識別子（ストレージＩＤ）を表す情報である。【００６６】
ルートＩＤ１２５１は、ルートの識別子（ルートＩＤ）を表す情報である。ストレージ装置３００が有するルートのルートＩＤ１２５１が、そのストレージ装置３００のストレージＩＤ１２５２に関連付けられている。本実施例において、「ルート」とは、１以上のＳメタ８２のグループである。ルート毎にＶＯＬ２６が存在する。このため、例えば、ルートＩＤは、ＶＯＬの識別子（ＶＯＬ_ＩＤ）と言うこともできる。ルートに属するＳメタ８２のＳメタポインタ１２５４が、そのルートのルートＩＤ１２５１に関連付けられている。Ｓメタポインタ１２５４は、Ｓメタ８２のローカルメモリ１２００における在り処を指す情報（ポインタ）である。【００６７】
図６は、１つのＳメタ８２に含まれるＳメタ管理情報１２１０及びＳメタ属性情報１２２０の構成を示す。【００６８】
Ｓメタ８２は、Ｓメタ管理情報１２１０及びＳメタ属性情報１２２０で構成される。上述したように、Ｓメタ管理情報１２１０は、オブジェクトを管理し、Ｓメタ属性情報１２２０は、データチャンク８１を管理する。Ｓメタ管理情報１２１０には、そのＳメタ管理情報１２１０に対応したオブジェクト内の各データチャンク８１についてＳメタ属性情報１２２０が関連付けられる。【００６９】
Ｓメタ管理情報１２１０は、ＳメタＩＤ１２１００１を含む。ＳメタＩＤ１２１００１は、Ｓメタの識別子（ＳメタＩＤ）を表す情報である。ＳメタＩＤは、言い換えれば、オブジェクトＩＤである。【００７０】
また、Ｓメタ管理情報１２１０は、対応したオブジェクト内のデータチャンク８１毎に、Ｓメタ属性ＩＤ１２１００２及びＳ属性ポインタ１２１０３を含む。Ｓメタ属性ＩＤ１２１００２は、Ｓメタ属性情報１２２０の識別子（Ｓメタ属性ＩＤ）を表す情報である。Ｓ属性ポインタ１２１００３は、Ｓメタ属性情報１２２０のローカルメモリ１２００の在り処を指す情報（ポインタ）である。これにより、Ｓメタ８２の参照先としてのＣメタ８３を特定可能である。【００７１】
また、Ｓメタ管理情報１２１０は、このＳメタ管理情報１２１０を含むＳメタ８２を参照するＣメタ８３毎に、ユーザＩＤ１２０１１及びユーザポインタ１２１０１２を含む。ユーザＩＤ１２１０１１は、Ｃメタ８３の識別子（ＣメタＩＤ）を表す情報であり、具体的には、例えば、ユーザプログラム（例えば抽出プログラム１２９０）により当該Ｓメタ管理情報１２１０に付与された付加情報（つまりＣメタ８３）を管理する際に使用する情報であり付加情報の識別子である。ユーザポインタ１２１０１２は、そのＣメタ８３が含むＣメタ管理情報１２３０のローカルメモリ１２００の在り処を指す情報（ポインタ）である。【００７２】
Ｓメタ属性情報１２２０は、Ｓメタ属性ＩＤ１２２００１、アクセス状態１２２００２、コピー状態１２２００３、ストレージＩＤ１２２００４、開始アドレス１２２００５、終了アドレス１２２００６及びデータ有効性１２２００７を含む。【００７３】
Ｓメタ属性ＩＤ１２２００１は、Ｓメタ属性ＩＤを表す情報である。Ｓメタ属性ＩＤは、データチャンクの識別子（データチャンクＩＤ）でよい。Ｉ／Ｏ要求では、オブジェクトＩＤとデータチャンクＩＤのうちのいずれかが指定されてよい。【００７４】
アクセス状態１２２００２は、データチャンク８１へのアクセス方法及びアクセス制限を表す情報である。アクセス方法としては、例えば、オブジェクト単位のアクセスであるオブジェクトアクセス（“Object”）、ブロック単位のアクセスであるブロックアクセス、及び、ファイル単位のアクセスであるファイルアクセスがある。アクセス制限としては、例えば、“Ｒ／Ｗ可”、“ＲＯ”及び“Ｒ／Ｗ不可”がある。アクセス状態１２２００２は、更に、どのユーザがアクセス可能であるかといった情報を含んでもよい。【００７５】
コピー状態１２２００３は、データチャンクについてのコピー状態を表す情報である。例えば、コピー状態１２２００３としては、“ＳＶＯＬ”（ＳＳＶＯＬ２６Ｓから参照されたデータチャンクである）、“ＮＵＬＬ”（データチャンク８１がコピー対象ではない）等がある。【００７６】
ストレージＩＤ１２２００４は、データチャンク８１が格納されるストレージ装置の識別子（ストレージＩＤ）を表す情報である。後述する別実施例のように、Ｓメタ８２が参照するデータチャンク８１が、そのＳメタ８２が存在するストレージ装置３００とは別のストレージ装置３００に配置される場合がある。プロセッサ１３１０は、ストレージＩＤ１２２００４を参照することで、対応するデータチャンク８１を格納したストレージ装置３００を特定できる。【００７７】
開始アドレス１２２００５は、データチャンク８１が存在する領域の開始アドレスを表す情報である。終了アドレス１２２００６は、データチャンク８１が存在する領域の終了アドレスを表す情報である。データ有効性１２２００７は、データチャンク８１自身が有効か否かを表す情報（例えばフラグ）である。“ＹＥＳ”は有効を意味し、“ＮＯ”は無効を意味する。例えば、データＶＯＬ２６Ｄ内のデータチャンク＃Ａ及び＃Ｂを参照するＳメタ＃Ｘがあり、Ｓメタ＃Ｘ´（Ｓメタ＃Ｘの複製）がデータチャンク＃Ａ及び＃Ｂのうちのデータチャンク＃Ａのみを参照する場合、Ｓメタ＃Ｘ´において、データチャンク＃Ａに対応したデータ有効性１２００７は“ＹＥＳ”であるが、データチャンク＃Ｂに対応したデータ有効性１２００７は“ＮＯ”とされる。【００７８】
図７は、１つのＣメタ８３に含まれるＣメタ管理情報１２３０の構成を示す。【００７９】
Ｃメタ管理情報１２３０は、Ｃメタ８３の少なくとも一部である。Ｃメタ管理情報１２３０は、ＣメタＩＤ１２３００１、種別１２３００２、開始アドレス１２３００３、終了アドレス１２３００４、Ｓメタ属性ＩＤ１２３００５及びユーザ拡張１２３００６を含む。【００８０】
ＣメタＩＤ１２３００１は、Ｃメタ８３の識別子（ＣメタＩＤ）を表す情報である。ＣメタＩＤ１２３００１から、Ｃメタ８３の参照先のＳメタ８２（同一のＣメタＩＤをユーザＩＤ１２１０１１として含んだＳメタ８２）がわかる。【００８１】
種別１２３００２は、Ｃメタ８３の種別を表す情報である。種別１２３００２は、例えば、Ｃスナッププログラム１２９１がメタデータ種別を観点に検索する場合に参照される。【００８２】
開始アドレス１２３００３は、Ｃメタ管理情報１２３０に関連付いた情報（例えばコンテンツ情報の一部（Ｃメタ８３の一部））が格納された領域（例えばＶＯＬ２６の領域）の開始アドレスを表す情報である。終了アドレス１２３００４は、Ｃメタ管理情報１２３０に関連付いた情報が格納された領域の終了アドレスを表す情報である。Ｃメタ８３の全部がローカルメモリ１２００に存在する場合、開始アドレス１２３００３及び終了アドレス１２３００４の各々は、“ＮＵＬＬ”となる。【００８３】
Ｓメタ属性ＩＤ１２３００５は、Ｃメタ８３に対応するデータチャンクを指すＳメタ属性情報１２２０のＳメタ属性ＩＤを表す情報である。Ｓメタ属性ＩＤ１２３００５から、Ｃメタ８３に対応したデータチャンク８１を指すＳメタ属性情報１２２０を特定可能である。【００８４】
ユーザ拡張１２３００６は、ユーザプログラムにより付加された拡張情報であり、コンテンツ情報の少なくとも一部である。例えば、抽出されたデータチャンク８１が、撮影画像の場合、その画像の撮影位置の情報が、ユーザ拡張１２３００６としてＣメタ管理情報１２３０に含められる。【００８５】
図８は、コピーペア管理テーブル１２６０の構成を示す。【００８６】
コピーペア管理テーブル１２６０は、コピーペアの構成に関する情報を保持するテーブルである。コピーペア管理テーブル１２６０は、ルートＩＤ１２６０１、コピー状態１２６０２、コピー対象ストレージＩＤ１２６０３、コピー対象ルートＩＤ１２６０４及びグループＩＤ１２６０５を保持する。【００８７】
ルートＩＤ１２６０１は、ルートの識別子（ルートＩＤ）を表す情報である。コピー状態１２６０２は、ルートＩＤ１２６０１から識別されるルート（例えばＶＯＬ）についてのコピーの現在の状態を表す情報である。コピー対象ルートＩＤ１２６０４は、ルートＩＤ１２６０１が表すルートとペアを構成するルートであるコピー対象ルートの識別子を表す情報である。コピー対象ルートは、コピー元及びコピー先のいずれでもよい。ルートＩＤ１２６０１及びコピー対象ルートＩＤ１２６０４のうちの少なくとも１つは、当該情報に対応するルートがコピー元及びコピー先のいずれであるかを表す情報（例えば記号）を含んでもよい。グループＩＤ１２６０５は、当該コピーペアを含んだコピーグループの識別子（グループＩＤ）を表す情報である。【００８８】
以下、実施例１で行われる幾つかの処理を説明する。【００８９】
図１０は、データリード処理のフローチャートである。【００９０】
ストレージ装置３００がホスト計算機２００からＩ／Ｏ要求を受信した場合、Ｉ／Ｏプログラム６１は、そのＩ／Ｏ要求がリード要求か否かを判断する（Ｓ５０１０）。Ｓ５０１０の判断結果が偽の場合（Ｓ５０１０：Ｎｏ）、図１１のＳ５５１０に進む。【００９１】
Ｓ５０１０の判断結果が真の場合（Ｓ５０１０：Ｙｅｓ）、Ｉ／Ｏプログラム６１は、リード要求を共通のリード要求に変換し、変換後のリード要求をオブジェクトプログラム６２に処理を渡す（Ｓ５０２０）。リード要求のようなＩ／Ｏ要求を共通のＩ／Ｏ要求に変換する理由は、Ｉ／Ｏ要求のプロトコルとして多様なプロトコル（アクセス方法）を利用できるようにするためである。例えば、ブロック、ファイル、オブジェクトといったプロトコルがあり、いずれのプロトコルであっても共通のＩ／Ｏ要求に変換することで、変換以降の処理を共通に実施することができる。例えば、オブジェクトアクセスプロトコルとは、オブジェクトを基本単位としたデータアクセスを行う入出力プロトコルで、操作形式はＲＥＳＴ（Representational State Transfer）プロトコル等のＷｅｂインターフェースを使って操作することができる。具体的には、例えば、以下のような形式
ＰＵＴ ＜オブジェクトＩＤ＞ ＜書込み|読み出し｜コピー制御＞ [＜オプション＞]
で操作することができ、Ｓ５０２０により、Ｉ／Ｏ要求を以下の共通形式の共通要求
ＷＲＩＴＥ｜ＲＥＡＤ｜ＣＯＰＹ  ＜オブジェクトＩＤ＞  [<オプション>]
に変換することができる。【００９２】
次に、Ｓ５０５０が行われる。すなわち、オブジェクトプログラム６２は、共通リード要求に従うリード元アドレスをＶＯＬのアドレスに変換する。その変換では、Ｓメタ管理情報１２１０及びＳメタ属性情報１２２０が使用される。具体的には、オブジェクトプログラム６２は、共通要求中のオブジェクトＩＤに一致するＳメタＩＤ１２１００１を含んだＳメタ管理情報１２１０を参照し、そのＳメタ管理情報１２１０のＳ属性ポインタ１２１００３からＳメタ属性情報１２２０を参照する。次に、オブジェクトプログラム６２は、そのＳメタ属性情報１２２０に含まれる開始アドレス１２２００５及び終了アドレス１２２００６を取得する。オブジェクトプログラム６２は、上記共通要求中のオブジェクトＩＤを、取得されたアドレス１２２００５及び１２２００６が表す開始アドレス及び終了アドレスに変換し、変換後の共通要求を、データ処理プログラム６３に渡す。【００９３】
データ処理プログラム６３は、共通要求から特定されるデータがキャッシュメモリ１１００に存在するか否かを判断する（Ｓ５０９０）。Ｓ５０９０の判断結果が偽の場合（Ｓ５０９０：Ｎｏ）、データ処理プログラム６３は、当該データをキャッシュメモリ１１００に書き込み、処理をオブジェクトプログラム６２に渡す（Ｓ５１００）。【００９４】
５０９０の判断結果が真の場合（Ｓ５０９０：Ｙｅｓ）、又は、Ｓ５１００の後、オブジェクトプログラム６２は、キャッシュメモリ１１００から当該データを読み出す（Ｓ５０６０）。Ｉ／Ｏプログラム６１が、当該データを、リード要求の送信元のホスト計算機２００に返す（Ｓ５０３０）。【００９５】
以上のように、ストレージ装置３００におけるデータアクセス処理は、３つのプログラム６１〜６３が並列に動作し、必要に応じ連携することで、リード要求に従うデータをＶＯＬ２６から読み出してホスト計算機２００に返すことができる。リード元のＶＯＬは、データＶＯＬ２６ＤでもよいしＳＳＶＯＬ２６Ｓでもよい。データリード処理において、リード対象のデータチャンク８１に対応したアクセス状態１２２００２を基に、読み出しが許可されているか否かの判断が行われてよい。【００９６】
図１１は、データライト処理のフローチャートである。【００９７】
Ｉ／Ｏプログラム６１は、Ｉ／Ｏ要求がライト要求か否かを判断する（Ｓ５５１０）。Ｓ５５１０の判断結果が偽の場合（Ｓ５５１０：Ｎｏ）、その要求に従う処理が行われる。【００９８】
Ｓ５５１０の判断結果が真の場合（Ｓ５５１０：Ｙｅｓ）、Ｉ／Ｏプログラム６１は、ライト要求をストレージ装置３００の共通要求に変換する（Ｓ５５２０）。【００９９】
次に、オブジェクトプログラム６２が、その共通要求に従うライト対象のデータ（オブジェクト）のコピー状態１２２００３が“ＳＶＯＬ”か否かを判断する（Ｓ５５４０）。具体的には、オブジェクトプログラム６２は、共通要求中のオブジェクトＩＤと同一のＳメタＩＤ１２１００１のＳメタ管理情報１２１０を特定し、さらに、そのＳメタ管理情報１２１０のＳ属性ポインタ１２１００３からＳメタ属性情報１２２０を特定し、その特定されたＳメタ属性情報１２２０のコピー状態１２２００３を参照する。【０１００】
コピー状態１２２００３が“ＳＶＯＬ”の場合（Ｓ５５４０：Ｙｅｓ）、スナップショットプログラム６４が、ライト先ＶＯＬを別ＶＯＬ（プールＶＯＬ）に変更する（Ｓ５５５０）。具体的には、スナップショットプログラム６４が、共通要求中のオブジェクトＩＤに一致するＳメタＩＤ１２１００１を含んだＳメタ管理情報１２１０を参照し、当該Ｓメタ管理情報１２１０のＳ属性ポインタ１２１００３からＳメタ属性情報１２２０を参照する。次に、スナップショットプログラム６４は、そのＳメタ属性情報１２２０の開始アドレス１２２００５及び終了アドレス１２２００６を取得し、これらのアドレス１２２００５及び１２２００６が表すＶＯＬ＿ＩＤをプールＶＯＬのＩＤに変更する。これにより、ＳＳＶＯＬ２６Ｓにより参照されるデータチャンク８１がＳＳＶＯＬ２６Ｓに対するライトによって更新されることを回避できる。【０１０１】
コピー状態１２２００３が“ＳＶＯＬ”ではない場合（Ｓ５５４０：Ｎｏ）、Ｓ５５６０が行われる。すなわち、オブジェクトプログラム６２は、共通要求中のオブジェクトＩＤからＶＯＬのアドレスに変換する。具体的には、オブジェクトプログラム６２は、そのオブジェクトＩＤと一致するＳメタＩＤ１２１００１を含んだＳメタ管理情報１２１０を参照し、当該Ｓメタ管理情報１２１０のＳ属性ポインタ１２１００３からＳメタ属性情報１２２０を参照する。次に、オブジェクトプログラム６２は、そのＳメタ属性情報１２２０の開始アドレス１２２００５及び終了アドレス１２２００６を取得し、共通要求中のオブジェクトＩＤを、当該取得したアドレス１２２００５及び１２２００６に置き換える。【０１０２】
Ｓ５５５０又はＳ５５６０の後、オブジェクトプログラム６２は、キャッシュメモリ１１１０から領域を確保する（Ｓ５５７０）。そして、オブジェクトプログラム６２は、確保された領域に、共通要求に従うデータを書き込む（Ｓ５５３０）。Ｓ５５３０が完了したときに、Ｉ／Ｏプログラム６１が、ライト要求の送信元のホスト計算機２００に、ライト完了を返してもよい。キャッシュメモリ１１１０に書かれたデータは、データ処理プログラム６３により、そのデータのライト先のアドレスが示す領域に対応したＰＤＥＶ１５００に書き込まれる。【０１０３】
以上のように、ストレージ装置３００におけるデータアクセス処理は、３つのプログラム６１〜６３が並列に動作し、必要に応じ連携することで、ライト対象のデータをキャッシュメモリ１１００に書き出し、ホスト計算機２００に完了を通知することができる。データライト処理において、ライト対象のデータチャンク８１に対応したアクセス状態１２２００２を基に、書き込みが許可されているか否かの判断が行われてよい。【０１０４】
ここからは、図２及び図１２〜図１４を参照して、Ｃスナップ処理を含んだ一連の処理を説明する。【０１０５】
図２によれば、Ｃスナップ処理の前に「（０）通常状態」及び「（１）抽出処理」があり、Ｃスナップ処理として、「（２−１）Ｃスナップ（選別）」及び「（２−２）Ｃスナップ（スナップ取得）」があり、Ｃスナップ処理の後に「（３）分析」がある。【０１０６】
＜（０） 通常状態＞【０１０７】
データチャンク８１がストレージ装置３００に格納され、データチャンク８１を含んだオブジェクトに対して第１Ｓメタ８２Ｓが関連付けられる。データチャンク８１は、例えば、監視カメラから生成された画像データであってもよいし、工場の製造機器が出力するログ情報であってもよい。【０１０８】
図２によれば、データチャンク＃１及び＃２が格納され、且つ、それらをそれぞれ参照する第１Ｓメタ＃１及び＃２がある。【０１０９】
＜（１）抽出処理＞【０１１０】
少なくとも１つのデータチャンク８１がストレージ装置３００のデータＶＯＬ２６Ｄに格納された時点、一定の時間間隔、又は、プロセッサ１３１０の処理負荷が一定時間以上低い状態が続いた時点等で、抽出プログラム１２９０Ｒがプロセッサ１３１０上で動作する。【０１１１】
図１２は、抽出処理のフローチャートである。【０１１２】
抽出処理は、抽出プログラム１２９０とオブジェクトプログラム６２により実施される。抽出処理は、ユーザにより指定されたルートＩＤが対象とされてよい。ルートＩＤ（例えばＶＯＬ＿ＩＤ）は、予め指定されていてもよい。抽出プログラム１２９０は、ストレージ装置３００に格納されるデータ（オブジェクト）から分析観点となり得るコンテンツ情報を取得し、当該コンテンツ情報を含んだＣメタ８３をデータのＳメタ８２に関連付けてストレージ装置３００に保存するプログラムである。本実施例では、抽出プログラム１２９０は、ストレージ装置３００内で動作するが、ホスト計算機２００及び管理計算機１００のうちのいずれで動作しても構わない。【０１１３】
抽出プログラム１２９０は、指定されたルート（ＶＯＬ）にデータチャンク８１が格納された時刻と、直前回の抽出処理の時刻とを比較することで、直前回の抽出処理の時刻よりも格納時刻が新しいデータチャンク（以下、更新データチャンク）８１があるか否かを判断する（Ｓ５６１０）。Ｓ５６１０の判断結果が偽の場合（Ｓ５６１０：Ｎｏ）、処理が終了する。なお、「直前回の抽出処理の時刻」は、直前回の抽出処理のときに抽出プログラム１２９０によりローカルメモリ１２００に保存された時刻である。【０１１４】
Ｓ５６１０の判断結果が真の場合（Ｓ５６１０：Ｙｅｓ）、抽出プログラム１２９０は、更新データチャンク８１を抽出し、抽出された更新データチャンク８１が、定められた抽出ルールに適合したデータチャンクであるか否かを判断する（Ｓ５６２０）。例えば、抽出ルールには、抽出されるべきデータチャンクのデータ条件（抽出のための検索条件）が指定されている。データ条件は、例えば、データ種別（例えば、写真、Ｅメール）でよい。抽出プログラム１２９０がユーザ毎に用意されることに代えて又は加えて、抽出ルールが、ユーザ毎に用意されていてもよい。【０１１５】
Ｓ５６２０の判断結果が偽の場合（Ｓ５６２０：Ｎｏ）、Ｓ５６７０に進む（処理が終了してもよい）。【０１１６】
Ｓ５６２０の判断結果が真の場合（Ｓ５６２０：Ｙｅｓ）、抽出プログラム１２９０は、更新データチャンク８１から、そのデータ形式に基づき、更新データチャンク８１が表す１以上のコンテンツ属性を表すコンテンツ情報を抽出する（Ｓ５６３０）。更新データチャンク８１からコンテンツ情報を取得するには、データ種別に応じアプローチを変える必要がある。例えば、画像から位置情報を取得する場合、画像ファイルの属性情報を参照し、当該属性情報に含まれる位置情報を読み取ることで、コンテンツ情報の少なくとも一部を取得できる。【０１１７】
次に、抽出プログラム１２９０は、抽出したコンテンツ情報を基にＣメタ８３を作成する（Ｓ５６４０）。コンテンツ情報は、ローカルメモリ１２００及びＶＯＬ２６のうちの少なくとも１つに格納されてよい。ローカルメモリ１２００の空き容量よりもコンテンツ情報の容量の方が十分に小さければ、コンテンツ情報全体がローカルメモリ１２００に格納されてよい。抽出プログラム１２９０は、コンテンツ情報の格納場所に基づくＣメタ管理情報１２３０を作成する。ＣメタＩＤ１２３０は、任意の値でよい。開始アドレス１２３００３及び終了アドレス１２３００４は、ローカルメモリ１２００にコンテンツ情報が格納された場合、“ＮＵＬＬ”でよい。Ｓメタ属性ＩＤ１２３００５は、更新データチャンクの識別子でよい。ユーザ拡張１２３００６は、コンテンツ情報の少なくとも一部でよい。このように、コンテンツ情報の少なくとも一部が、Ｃメタ管理情報１２３０に登録され得るため、結果として、コンテンツ情報全体が、ローカルメモリ１２００に格納されることがある。一方、コンテンツ情報の少なくとも一部がＶＯＬ２６に格納されることもある。その場合、コンテンツ情報の格納場所のアドレスは、例えば、オブジェクトプログラム６２に問い合わせることで入手可能である。また、コンテンツ情報全体がＶＯＬに登録される場合、ユーザ拡張１２３００６は“ＮＵＬＬ”でよい。【０１１８】
次に、抽出プログラム１２９０は、オブジェクトプログラム６２に、Ｓ５６４０で作成したＣメタ管理情報１２３０を含むＣメタ８３の登録を依頼する（Ｓ５６５０）。オブジェクトプログラム６２は、その依頼に応答して、そのＣメタ８３を、抽出された更新データチャンク８１を参照するＳメタ８２に関連付ける（Ｓ５６６０）。具体的には、オブジェクトプログラム６２は、抽出された更新データチャンク８１を参照するＳメタ８２内のＳメタ管理情報１２１０に、ＣメタＩＤ１２３０と同じ値をユーザＩＤ１２１０１１として追加し、且つ、Ｃメタ管理情報１２３０へのポインタをユーザポインタ１２１０１２として追加する。【０１１９】
抽出プログラム１２９０は、Ｓ５６１０と同様の判断を行う（Ｓ５６７０）。Ｓ５６７０の判断結果が真の場合（Ｓ５６７０：Ｙｅｓ）、別の更新データチャンクについて、Ｓ５６２０に進む。Ｓ５６７０の判断結果が偽の場合（Ｓ５６７０：Ｎｏ）、処理が終了する。【０１２０】
図２によれば、抽出処理により、データチャンク＃１及び＃２にそれぞれ対応したＣメタ＃１及び＃２が作成される。Ｃメタ＃１は第１Ｓメタ＃１を参照し、Ｃメタ＃２は第１Ｓメタ＃２を参照する。なお、Ｃメタ＃１及び＃２のいずれも、コンテンツ属性として、上述したデータ種別等に代えて又は加えて、指定された検索条件（データ条件（例えば時間帯））とその検索条件をキーにした検索の検索結果（例えば検索ヒット又はミス）とを含んでよい。【０１２１】
＜（２-１）Ｃスナップ（選別）＞【０１２２】
Ｃスナップ（選別）は、抽出処理でＳメタ８２に関連付けられたＣメタ８３を参照して、指定されたルート（ＶＯＬ）に指定された検索条件に適合するデータを選別する処理である。Ｃスナッププログラム１２９１は、本実施例では、ストレージ装置３００で動作するが、管理計算機１００及びホスト計算機２００のいずれで動作しても構わない。【０１２３】
Ｃスナップ処理の開始が、ユーザにより指示される。その指示を、Ｃスナッププログラム１２９１が受ける。指示形式は、例えば以下の通りである。
ＣＳＮＡＰ  ＜検索鍵＞  ＜対象ルートＩＤ＞  ＜コピー先ルートＩＤ＞  ＜オプション＞【０１２４】
上記指示形式の場合、＜対象ルートＩＤ＞で指定されたルート内のデータチャンク８１が、＜検索鍵＞で指定された検索鍵（検索条件）に適合するデータチャンク８１に絞り込まれる。絞り込んだ１以上のデータチャンク８１を参照する１以上のＳメタ８２が、それぞれ、＜コピー先ルートＩＤ＞で指定されたルート以下に複製されることになる。【０１２５】
図１３は、Ｃスナップ（選別）のフローチャートである。【０１２６】
Ｓ５７１０が行われる。すなわち、Ｃスナッププログラム１２９１は、ユーザからの指示で指定されたルートＩＤに対応したＳメタポインタ１２５４をストレージ管理テーブル１２５０から特定する。次に、Ｃスナッププログラム１２９１は、特定したＳメタポインタ１２５４からＳメタ管理情報１２１０を参照し、さらに当該Ｓメタ管理情報１２１０のユーザＩＤ１２１０１１及びユーザポインタ１２１０１１から、当該Ｓメタに関連付くＣメタ８３を特定する。【０１２７】
次に、Ｃスナッププログラム１２９１は、ユーザに指定された検索鍵に、当該Ｃメタ８３（Ｃメタ８３が含むコンテンツ情報）が適合するか否かを判断する（Ｓ５７２０）。【０１２８】
Ｓ５７２０の判断結果が真の場合（Ｓ５７２０：Ｙｅｓ）、Ｃスナッププログラム１２９１は、当該Ｃメタ８３に関連付く第１Ｓメタ８２Ｓ（Ｓメタ管理情報１２１０及びＳメタ属性情報１２２０）の複製をオブジェクトプログラム６２に依頼する（Ｓ５７３０）。その依頼に応答して、オブジェクトプログラム６２は、指定された第１Ｓメタ８２Ｓの複製を行う（Ｓ５７４０）。なお、複製において、第１Ｓメタ８２Ｓの複製に基づく第２Ｓメタ８２ＴのＳメタＩＤとして、オリジナルの第１Ｓメタ８２ＳのＳメタＩＤと異なるＳメタＩＤが付与されてよい。また、複製において、Ｃスナッププログラム１２９１及びオブジェクトプログラム６２のうちのいずれかが、下記の（ａ）及び（ｂ）のうちのいずれかである複製絞込み処理を実行してよい。
（ａ）分析に必要ないデータチャンクを参照するＳメタ属性情報１２２０（検索鍵に適合しないＣメタ８３の参照先のＳメタ属性情報１２２０）の複製をスキップする。
（ｂ）そのＳメタ属性情報１２２０のデータ有効性１２２００７を“ＮＯ”に変更する。【０１２９】
このような複製絞込み処理を実行するか否かは、ユーザからの指示（Ｃスナッププログラム１２９１に対する開始指示）に記述されていてよい。複製絞込み処理により、ＳＳＶＯＬ２６Ｓ（ＶＤＭ）に含まれるデータチャンク８１を絞り込むことが可能となる。【０１３０】
次に、Ｃスナッププログラム１２９１は、ユーザから指定されたルートＩＤに対応した全てのＳメタ８２に対してＳ５７１０を実施したか否かを判断する（Ｓ５７５０）。Ｓ５７５０の判断結果が偽の場合（Ｓ５７５０：Ｎｏ）、未処理のＳメタ８２についてＳ５７１０が行われる。Ｓ５７５０の判断結果が真の場合（Ｓ５７５０：Ｙｅｓ）、処理が終了する。少なくとも１つのＳメタ８２についてＳ５７４０が行われた場合、Ｃスナップ（スナップ取得）が実施される。【０１３１】
＜（２-２）Ｃスナップ（スナップ取得）＞【０１３２】
Ｃスナップ（選別）において得られたＳメタ８２の複製に基づき、ＳＳＶＯＬ２６Ｓが作成される。このＳＳＶＯＬ２６Ｓがホスト計算機２００に提供されることで、ホスト計算機２００からはＳＳＶＯＬ２６ＳをＤＭとして利用可能となる。【０１３３】
図１４は、Ｃスナップ（スナップ取得）のフローチャートである。【０１３４】
Ｃスナッププログラム１２９１は、スナップショット作成をスナップショットプログラム６４に依頼する（Ｓ５７７０）。ここで、スナップショット作成にあたり、Ｃスナッププログラム１２９１は、Ｃスナップ（選別）で作成された第２Ｓメタ８２ＴにおけるＳメタＩＤをスナップショットプログラム６４に渡す。【０１３５】
その依頼に応答して、スナップショットプログラム６４は、Ｃスナッププログラム１２９１から渡されたＳメタＩＤに合致するＳメタ管理情報１２１０を特定し、当該Ｓメタ管理情報１２１０に関連付いたＳメタ属性情報１２２０のコピー状態１２２００３を“ＳＶＯＬ”にする（Ｓ５６８０）。コピー状態１２２００３が“ＳＶＯＬ”にされることで、当該オブジェクトへのライトの際にスナップショット対象データと判定され、必要なスナップショット処理（図４参照）が実施される。【０１３６】
次に、スナップショットプログラム６４は、ストレージ管理テーブル１２５０に、ユーザに指定されたコピー先ルートＩＤ（ＳＳＶＯＬ２６ＳのＩＤ）をルートＩＤ１２５１として追加し、且つ、そのルートＩＤ１２５１に、Ｓメタ８２の複製へのポインタ１２５４を関連付ける（Ｓ５６９０）。スナップショットプログラム６４は、そのコピー先ルートＩＤ（ＳＳＶＯＬ２６Ｓ）を、Ｃスナップの開始指示を出したユーザ（検索要求元のユーザ）のホスト計算機２００に提供してよい。【０１３７】
以上のように、ストレージ装置３００におけるＣスナップ処理では、Ｃスナップ（選別）において、ユーザから与えられた検索鍵に基づきスナップショット対象のデータチャンク（ＶＤＭに含められるデータチャンク）が選別され、Ｃスナップ（スナップ取得）において、選別されたデータチャンクを含んだＳＳＶＯＬ２６Ｓ（ＶＤＭ）が作成される。【０１３８】
また、原理的に、１つのルートＩＤ（データＶＯＬ２６Ｄ）について複数のコピー先ルートＩＤ（ＳＳＶＯＬ２６Ｓ）を作成することが可能である。具体的には、例えば、図１５に例示するように、１つのデータＶＯＬ２６Ｄについて、複数のＳＳＶＯＬ＃１−１〜＃１−３を作成できる。【０１３９】
また、Ｃスナップ処理後に、ホスト計算機２００から、Ｃスナップ作成時に指定したコピー先ルートＩＤにアクセスすると、そのホスト計算機２００からは、ＤＭ（ＳＳＶＯＬ２６Ｓ）が存在しているように見えるようになる。複数のＳＳＶＯＬ２６Ｓが作成された場合は、例えば、観点の異なるＤＭ（データマート）が作成されたように見える。
【実施例２】
【０１４０】
実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。これは、他の実施例についても同様である。【０１４１】
図１６は、実施例２の概要を示す。【０１４２】
実施例２に係るストレージシステムは、複数のストレージ装置３００Ｘ、３００Ａ〜３００Ｃから構成される。例えば、ストレージ装置３００Ｘ、３００Ａ〜３００Ｃにより１つの仮想ストレージシステムが構成されている。つまり、本実施例に係るストレージシステムは、仮想ストレージシステムでよい。ストレージ装置３００の数は図１６に示す例に限られない。【０１４３】
ストレージ装置３００Ｘが、データソースとしてのデータＶＯＬ２６Ｄを有する。ストレージ装置３００Ａ〜３００Ｃに、それぞれ、データＶＯＬ２６Ｄ内の少なくとも１つのデータチャンクを参照するＳＳＶＯＬ２６Ｓ（＃１−１〜＃１−３）が生成される。つまり、Ｃスナップ処理が、複数のストレージ装置３００に跨がって実施される。具体的には、例えば、ストレージ装置３００Ａが、データＶＯＬ２６Ｄのルートが指定された検索要求を受けた場合、その検索要求で指定されている検索鍵に適合するＣメタ８３をストレージ装置３００Ｘから探し、見つかったＣメタ８３に紐付いた第１Ｓメタ＃１をストレージ装置３００Ａに複製する。ストレージ装置３００Ａは、第１Ｓメタ＃１の複製に基づく第２Ｓメタ＃１−１が属するルートに対応したＳＳＶＯＬ＃１−１を、ホスト計算機２００Ａに提供する。【０１４４】
ストレージ装置３００間でＣスナップ処理を行うためには、スケールアウト処理が必要となる。図１７が、スケールアウト処理の概要を示す。図１７には、ストレージ装置３００Ｘ及び３００Ａが例示されている。ストレージ装置３００Ｘ及び３００Ａには、それぞれ、スケールアウトプログラム７４Ｘ及び７４Ａが追加されている。例えば、スケールアウトプログラム７４Ｘ（７４Ａ）は、Ｉ／Ｏプログラム６１Ｘ（６１Ａ）とオブジェクトプログラム６２Ｘ（６２Ａ）間の連携を中継してよい。ストレージ装置３００Ｘ及び３００Ａには、キャッシュメモリ１１００Ｘ及び１００Ａがそれぞれ存在する。【０１４５】
ここで、ストレージ装置３００Ａがホスト計算機２００Ａからリード要求を受けると、ストレージ装置３００Ａのスケールアウトプログラム７４Ａが、当該リード要求の宛先が自ストレージ装置３００Ａか否かを判断する。その判断結果が偽の場合、スケールアウトプログラム７４Ａが、リード要求の宛先となるストレージ装置３００Ｘに当該リード要求を転送する。転送されたリード要求を受けたストレージ装置３００Ｘは、当該リード要求に基づきデータチャンク８１をキャッシュメモリ１１００Ｘに読み出す。【０１４６】
例えば、図１０のフローチャートは、Ｓ５０２０後の処理が実施例１と異なる。具体的には、例えば、スケールアウトプログラム７４Ａが共通要求を取得し、当該共通要求のアクセス先が自ストレージ装置３００Ａか否かを判断する。その判断結果が偽の場合、スケールアウトプログラム７４Ａが、当該共通要求のアクセス先となるストレージ装置３００Ｘのスケールアウトプログラム７４Ｘに当該共通要求を転送する。スケールアウトプログラム７４Ｘは、当該共通要求をオブジェクトプログラム６２Ｘに渡す。一方、当該共通要求のアクセス先が自ストレージ装置３００Ａである場合、スケールアウトプログラム７４Ａは、自ストレージ装置３００Ａのオブジェクトプログラム６２Ａに当該共通要求を渡す。【０１４７】
また、例えば、図１１のフローチャートは、Ｓ５５２０後の処理が異なる。具体的には、例えば、スケールアウトプログラム７４Ａが共通要求を取得し、当該共通要求のアクセス先が自ストレージ装置３００Ａか否かを判断する。その判断結果が偽の場合、スケールアウトプログラム７４Ａが、当該共通要求のアクセス先となるストレージ装置３００Ｘのスケールアウトプログラム７４Ｘに当該共通要求を転送する。スケールアウトプログラム７４Ｘが当該共通要求をオブジェクトプログラム６２Ｘに渡す。一方、当該共通要求のアクセス先が自ストレージ装置３００Ａである場合、スケールアウトプログラム７４Ａは、自ストレージ装置３００Ａのオブジェクトプログラム６２Ａに当該共通要求を渡す。【０１４８】
以上、実施例２によれば、複数のストレージ装置３００を跨いでＣスナップ処理が実施される。これにより、例えば、ストレージ装置３００ＸはデータＶＯＬ２６Ｄ（データチャンク）の格納のみ、ストレージ装置３００ＡはＳＳＶＯＬ２６Ｓ（スナップショットデータ）のみを格納し、用途を分けることが可能となる。ストレージ装置３００ＢのＤＭ（ＳＳＶＯＬ＃１−２）を使用した分析による性能の影響を別ストレージ装置３００Ｃに与えないようにすることが可能となる。
【実施例３】
【０１４９】
図１８は、実施例３の概要を示す。【０１５０】
実施例３に係るストレージシステムは、複数の拠点Ａ及びＢにそれぞれ存在するストレージ装置３００Ａ及び３００Ｂと、中央データセンタに存在するストレージ装置３００Ｘとで構成されている。拠点の数及びストレージ装置３００の数は図１８に示す例に限られない。本実施例では、ストレージ装置３００Ａ及び３００Ｂの各々が抽出処理を実行し、ストレージ装置３００ＸがＣスナップ処理を実行する。【０１５１】
拠点Ａ及びＢには、それぞれ、１以上のＩｏＴデバイス８６Ａ及び８２Ｂが存在する（ＩｏＴ：Internet of Things）。ここで、「ＩｏＴデバイス」とは、当該デバイスが具備するセンサやデバイス自身の状態や制御をネットワーク経由でやりとりできるデバイスを意味する。【０１５２】
中央データセンタのストレージ装置３００Ｘには、ホスト計算機２００Ｘ及びＹがアクセス可能である。【０１５３】
本実施例では、例えば拠点Ａにおいて、ＩｏＴデバイス８６Ａのセンサ情報やデバイスの状態情報等を、ストレージ装置３００Ａがネットワーク経由で受信する。情報を受信したストレージ装置３００Ａが、その情報を含んだ１以上のデータチャンクを、図示しないデータＶＯＬ（第１の非構造化データソースの一例）に格納する。ストレージ装置３００Ａが、１以上のデータチャンクから１以上のＣメタを作成する処理を含んだ抽出処理を実行する。抽出処理では、ストレージ装置３００Ａは、分析時に必要とならないデータ（例えば、取得に失敗した情報、十分に無視できる程との小さい値を含んだセンサ情報、安定的なデバイスの状態など）は削除し、後述のリモートコピーの対象から外しても良い。【０１５４】
抽出処理後、ストレージ装置３００Ａは、１以上のデータチャンクとそれに対応した１以上のＣメタとを中央データセンタのストレージ装置３００Ｘに転送する（リモートコピー）。【０１５５】
データチャンク及びＣメタを受信したストレージ装置３００Ｘは、データチャンクをデータＶＯＬ２６Ｄ（第２の非構造化データソースの一例）に格納し、Ｃメタをローカルメモリに格納する。ストレージ装置３００Ｘは、データＶＯＬ２６Ｄを指定した検索要求をホスト計算機２００Ｘ及び２００Ｙから受けた場合、Ｃスナップ処理を実行する。すなわち、ストレージ装置３００Ｘは、検索鍵に適合したＣメタが紐付いている第１Ｓメタ＃１を複製することで第２Ｓメタ＃１−１及び＃１−２を生成し、第２Ｓメタ＃１−１及び＃１−２がそれぞれ属するＳＳＶＯＬ＃１−１及び＃１−２をホスト計算機２００Ｘ及び２００Ｙにそれぞれ提供する。【０１５６】
以上、実施例３によれば、例えば拠点Ａにおいて、ＩｏＴデバイス８６Ａのセンサなどの情報をストレージ装置３００Ａが受信し、ストレージ装置３００Ａが、コンテンツ情報を抽出することでＣメタを作成し、データチャンクと共にＣメタを中央データセンタのストレージ装置３００Ｘに転送する。これにより、中央データセンタにあるストレージ装置３００Ｘでは抽出処理を回避することが可能となる。つまり、ストレージ装置３００Ｘでは、ＩｏＴデバイス８６から発生する情報を含んだ大量のデータチャンクを対象とした抽出処理の負荷を削減できる。また、拠点のストレージ装置３００Ａが分析の対象になり得ないデータを間引いてデータチャンク及びＣメタを中央データセンタのストレージ装置３００Ｘに転送する。これにより、ストレージ装置３００ＸのＣスナップ処理の負荷と、ストレージ装置３００Ｘが格納するデータの総量とを削減できる。
【実施例４】
【０１５７】
図９は、実施例４の概要を示す。【０１５８】
ＳＣＭ（Storage Class Memory）９４３が採用される。ホスト計算機２００及びストレージ装置３００の各々は、ホスト計算機２００のメモリ領域とストレージ装置３００のメモリ領域とが割り当てられたＳＣＭ９４３を、自身のメモリであるかのように使用可能である。このため、例えば、ホスト計算機２００でＣスナッププログラム１２９１が実行され、Ｃスナッププログラム１２９１は、ＳＣＭ９４３にあるＣメタから、検索鍵に適合するＣメタを探すことができる。【０１５９】
以上、幾つかの実施例を説明したが、本発明は、それらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。【０１６０】
例えば、実施例１〜４のうちの任意の２以上の実施例を組み合わせることが可能である。【０１６１】
また、実施例１〜４では、データ処理システムの一例がストレージシステムであるが、データ処理システムは、ストレージシステム、ホストシステム及び管理システムのうちの少なくとも１つに該当してもよい。例えば、ホストシステムがデータ処理システムに該当する場合、ホストシステムに対して検索鍵を指定した検索要求を送信する要求元はクライアントシステム（１以上のクライアント計算機）であってもよい。【０１６２】
また、実施例１〜４では、Ｓメタ８２だけでなくＣメタ８３もストレージシステムに存在するが、Ｃメタ８３は、ストレージシステムに代えて又は加えてホストシステム又は管理システムに存在してもよい。具体的には、例えば、同一オブジェクト（同一データチャンク８１）について、ユーザ毎に（例えばホストシステム毎に又は管理システム毎に）、Ｃメタ８３が作成され、Ｃメタ８３は、そのＣメタ８３に対応したユーザのホストシステム又は管理システムに提供されてよい。ホストシステム又は管理システムがユーザから検索条件の指定を受けた場合、ホストシステム又は管理システム内のプロセッサ部が、そのユーザに対応するＣメタ８３のうちその検索条件に適合するＣメタ８３をホストシステム又は管理システムから探してよい。ホストシステム又は管理システムは、Ｃメタ８３が見つかった場合、そのＣメタ８３が参照するＳメタ８２が属するＳＳＶＯＬの作成をストレージシステムに要求してもよい。その要求に応答して、ストレージシステムが、Ｃスナップ処理を実行してもよい。【０１６３】
また、Ｃメタ８３は、ユーザ毎に存在してもよい。例えば、同一のデータチャンク８１について、ユーザＡの抽出プログラム１２９０により作成されたＣメタ８３は、ユーザＡ用のＣメタ８３として保存され、ユーザＢの抽出プログラム１２９０により作成されたＣメタ８３は、ユーザＢ用のＣメタ８３として保存されてよい。ユーザＡから検索要求を受けた場合、ストレージコントローラ３２９（Ｃスナッププログラム１２９１）は、検索要求で指定された検索鍵と要求元のユーザＡとに適合するＣメタ８３を探してよい。また、Ｃスナッププログラム１２９１として、ユーザＡのＣスナッププログラム１２９１が存在する場合、ユーザＡのＣスナッププログラム１２９１が、ユーザＡからの検索要求で指定された検索鍵とユーザＡとに適合するＣメタ８３を探してよい。【０１６４】
また、Ｃスナップ処理は、Ｃスナップ処理を開始すると定義付けられた所定のイベントであるＣスナップイベントが検出されたときに開始されてよい。Ｃスナップイベントは、ユーザ要求（例えば、Ｃスナップ処理の明示的な要求、又は、Ｃスナップ処理の実行が定義づけられた要求）を受信したこと、予め定義された時刻になったこと（例えば定期的にＣスナップ処理の実行が開始される）、及び、Ｃスナッププログラム１２９１を実行するプロセッサの負荷が所定値未満になった等の所定の性能状況（性能に関する状況）のいずれであってもよい。例えば、ストレージコントローラ３２９が、管理計算機１００及びホスト計算機２００のうちの少なくとも１つからユーザ要求を受信し、そのユーザ要求に応答してＣスナップ処理を実行してよい。【０１６５】
また、ユーザプログラム（例えば、抽出プログラム１２９０及びＣスナッププログラム１２９１のうちの少なくとも１つ）は、管理計算機１００、ホスト計算機２００、及びストレージコントローラ３２９のうちのいずれで実行されてもよい。【０１６６】
また、ＳＳＶＯＬ２６Ｓ（ＶＤＭ）は、定期的に又は不定期的に更新されてよい。例えば、Ｃスナッププログラム１２９１が、既存のＳＳＶＯＬ２６Ｓに属する第２Ｓメタ８２Ｔに関連付いたＣメタ８３が表すコンテンツ属性と同じコンテンツ属性を表すＣメタ８３を特定し、そのＣメタ８３が参照する第１Ｓメタ８２Ｓを複製することにより新たに第２Ｓメタ８２Ｔを作成し、その新たな第２Ｓメタ８２Ｔを既存のＳＳＶＯＬ２６Ｓに新たに関連付けてもよい。【０１６７】
また、オブジェクトの一例として、ファイルが採用されてよい。ファイルのデータが、オブジェクト内のデータチャンクの一例でよく、ファイルのメタデータが、オブジェクトのＳメタの一例でよい。【０１６８】
また、データＶＯＬは、データ領域の一例でよく、ＳＳＶＯＬは、データ領域内の一部の非構造データを参照するスナップショットの一例でよい。【０１６９】
また、抽出処理では、非構造化データソースからのデータ抽出に代えて又は加えて、第１Ｓメタ８２Ｓを参照して検索条件に適合するか否かが判断されてもよい。その判断結果が真の場合、第１Ｓメタ８２Ｓに基づき上述のＣメタ８３が作成され、そのＣメタ８３が、検索条件に適合した第１Ｓメタ８２Ｓに関連付けられてもよい。また、この場合、検索条件に適合した第１Ｓメタ８２Ｓから参照される１以上のデータチャンク８１が、該当する非構造化データの一例でよい。
【符号の説明】
【０１７０】
３００：ストレージ装置
【図１】
2017168499.tif 000003
【図２】
2017168499.tif 000004
【図３】
2017168499.tif 000005
【図４】
2017168499.tif 000006
【図５】
2017168499.tif 000007
【図６】
2017168499.tif 000008
【図７】
2017168499.tif 000009
【図８】
2017168499.tif 000010
【図９】
2017168499.tif 000011
【図１０】
2017168499.tif 000012
【図１１】
2017168499.tif 000013
【図１２】
2017168499.tif 000014
【図１３】
2017168499.tif 000015
【図１４】
2017168499.tif 000016
【図１５】
2017168499.tif 000017
【図１６】
2017168499.tif 000018
【図１７】
2017168499.tif 000019
【図１８】
2017168499.tif 000020
【国際調査報告】
2017168499.tif 000021
2017168499.tif 000022
2017168499.tif 000023
2017168499.tif 000024