説明

計算機システム及びデータ管理方法

【課題】ファイルアクセスI/Fを用いてキー・バリュー型データのデータ管理方法を提供する。
【解決手段】データを格納する複数の計算機と、各計算機上に格納されるデータを管理する管理計算機とを備える計算機システムであって、計算機システムは、複数の計算機が備える記憶領域を統合して生成されたストレージを備え、管理計算機は、ストレージに格納される分割データの配置に関する情報を含むファイル管理情報、及び配置定義情報を含むファイルシステム管理情報を格納し、ファイルデータ単位のデータを処理するアプリケーションから任意のファイルのファイル識別情報を含むファイル生成要求を受け付けた場合に、任意のファイルの格納先であるファイルシステムを特定し、対応するファイルシステム管理情報を参照してストレージを構成する記憶領域への分割データの配置方法を決定し、ファイル管理情報を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを分散して配置するストレージを備える計算機及びデータ管理方法に関する。
【背景技術】
【0002】
近年、計算システムにおいてアプリケーションが処理するデータ量が爆発的に増大している。計算機システムが扱うデータ量の増大に伴う処理時間の増加によって、バッチジョブなどの処理が、所定の時間内に完了できないという問題が生じている。したがって、処理の高速化を実現するために、複数のサーバが大量のデータを並列処理することが要求されている。
【0003】
従来のアプリケーションは、ファイルアクセスI/Fを用いて、データをファイル形式で処理する。アプリケーション毎に様々なファイルの扱い方が存在する。例えば、メインフレームを用いる基幹業務処理を実行するアプリケーションは、COBOL等のプログラム言語を用いて記述される。
【0004】
図25は、従来のファイルの構成例を示す説明図である。
【0005】
ファイル2500は複数のレコードから構成される。図25に示す例では、ファイル2500は、レコード2501、レコード2502、レコード2503及びレコード2504を含む。
【0006】
アプリケーションは、ファイルをレコードの集合として扱い、レコード単位にデータを入出力する。すなわち、レコードはアプリケーションが処理するデータの基本単位となる。
【0007】
また、一つのレコードは、フィールドと呼ばれる項目から構成される。フィールドには対応するデータが格納される。図25に示す例では、各レコードには、フィールド2511、フィールド2512、及びフィールド2513が含まれる。
【0008】
並列処理を実現するためには、データ(ファイル)を複数に分割して、分割されたデータを各サーバのアプリケーションに実行させる方法が考えられる。例えば、ファイルをレコード単位に分割して、各サーバのアプリケーションに実行させる方法が考えられる。
【0009】
前述した分割方法としては、キーに基づいてデータベースに格納されるデータを分割する分散データベース技術がある(例えば、特許文献1参照)。特許文献1には、キーレンジ(キーの範囲)によってデータベースに格納されるデータをレコード毎に分割し、処理の並列化を実現することが記載されている。
【0010】
また、メッシュ状又は所定の規則にしたがって大量のデータを分割して、各計算機で並列処理を実行させる技術も知られている(例えば、特許文献2参照)。
【0011】
一方、処理の高速化を実現するために、複数のサーバが備えるメモリを統合して一以上のメモリ空間を構成し、当該メモリ空間上でデータを処理する分散メモリ技術が知られている(例えば、非特許文献1参照)。
【0012】
分散メモリ技術では、各サーバにデータを分散して配置することによって並列処理を実現し、さらに、各サーバのメモリ上でデータの入出力が行われるため、処理の高速化が可能となる。
【0013】
分散メモリ技術では、キー・バリュー型データ形式が採用される。キー・バリュー型データは、データの識別子であるキーと、データの内容を表すバリューとを対応づけたデータ構造であり、[キー、バリュー]の形式でデータが管理される。
【0014】
分散メモリ技術では、キーレンジ(キーの範囲)に応じてキー・バリュー型データが複数のサーバに配置される。各サーバ上のアプリケーションは、当該サーバに配置されたキー・バリュー型データを処理することによって計算機ステム全体として並列処理を実現し、処理の高速化が図られている。
【0015】
キー・バリュー型データの実体はオブジェクト指向におけるオブジェクトであるため、キー・バリュー型データに用いられるアプリケーションはオブジェクト指向言語で記述される。例えば、分散メモリ技術において用いられるAPIはGet/Putが一般的であり、キーを指定してバリューを獲得し、また、[キー、バリュー]の組を指定してデータを追加する。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開平5−334165号公報
【特許文献2】特開平7−219905号公報
【非特許文献】
【0017】
【非特許文献1】GemStone、"GemFire Enterprise"、[online]、平成19年6月、[平成22年11月20日検索]、インターネット<http://download.gemstone.com/pdf/GemFireEnterprise_Technicalwhitepaper.pdf>
【非特許文献2】S.R.Klieman、"Vnode:An Architecture for Multiple File System Types in Sun UNIX"、昭和61年、USENIX Summer 1986 Technical Conference, p.238−247
【発明の概要】
【発明が解決しようとする課題】
【0018】
前述した分散メモリ技術を適用するためには、ファイルをキー・バリュー型データに分割する必要がある。この場合、レコードに含まれる1つのフィールドをキーとし、レコードに含まれる他のフィールドをバリューとすればよい。
【0019】
しかし、キー・バリュー型データを用いた分散メモリ技術では、前述したようにファイル形式のデータを処理する従来のアプリケーションをそのまま用いることができない。したがって、キー・バリュー型データ(オブジェクト)に対応したアプリケーションを新規に開発する必要がある。
【0020】
また、分散メモリ技術では、指定されたフィールドをキーとしてレコードがソートされ、所定のキーレンジでファイルが分割される。このとき、別のフィールドをキーとするアプリケーションがある場合、ソート処理及びファイルの分割処理を改めて実行する必要があり、処理が煩雑化する。
【0021】
本発明では、前述した問題点を鑑みてなされたものである。すなわち、キー・バリュー型データをファイルシステムの名前空間上で扱えるように対応づけて、さらに、ファイルアクセスI/Fを用いてキー・バリュー型データの分散配置を行える分散データのデータ管理方法を提供することである。
【課題を解決するための手段】
【0022】
本発明の代表的な一例を示せば以下の通りである。すなわち、第1のプロセッサ、前記第1のプロセッサに接続される第1のメモリ、及び前記第1のプロセッサに接続される第1のネットワークインタフェースを備え、データを格納する複数の計算機と、第2のプロセッサ、前記第2のプロセッサに接続される第2のメモリ、及び前記第2のプロセッサに接続される第2のネットワークインタフェースを備え、前記各計算機上に格納されるデータを管理する管理計算機と、を備える計算機システムであって、前記計算機システムは、前記複数の計算機が備える記憶領域を統合して生成されたストレージを備え、前記ストレージは、複数のファイルデータを含むファイルを分割して、検索キー及び前記ファイルデータから構成される分割データを、当該ストレージを構成する前記記憶領域に分散して格納し、前記管理計算機は、前記ストレージに対するアクセスを制御するアクセス管理部、及び、前記ストレージを管理するストレージ管理部を備え、前記ストレージを構成する記憶領域の情報を含むストレージ構成情報、及び、前記ストレージに格納される前記分割データの配置に関する情報を含むファイル管理情報を格納し、前記ストレージ管理部は、前記ストレージに格納される前記分割データに対応する前記ファイル及び前記ファイルが格納されるファイルシステムを識別するための情報を含むファイル識別情報、並びに、前記ファイルシステムが構築される前記ストレージにおける前記分割データの配置方法を定義する配置定義情報を含むファイルシステム管理情報を格納し、前記各計算機は、ファイルデータ単位のデータを処理するアプリケーション前記ストレージにアクセスするデータアクセス管理部を備え、前記管理計算機は、少なくとも一つの前記アプリケーションから任意のファイルの前記ファイル識別情報を含むファイル生成要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて、前記任意のファイルの格納先である前記ファイルシステムを特定し、前記特定されたファイルシステムに対応する前記ファイルシステム管理情報を検索し、前記検索されたファイルシステム管理情報に、前記任意のファイルのファイル識別情報を登録し、前記ストレージ構成情報、及び、前記検索されたファイルシステム管理情報を参照して、前記ストレージを構成する記憶領域への前記任意のファイルの前記ファイルデータから生成される前記分割データの配置方法を決定し、前記決定された配置方法に基づいて、前記ファイル管理情報を生成し、少なくとも一つの前記アプリケーションから前記任意のファイルのファイル識別情報を含むアクセス要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて前記ファイル管理情報を参照して、前記任意のファイルの前記分割データを格納する前記複数の計算機を特定し、前記特定された複数の計算機に格納された前記任意のファイルの分割データへアクセスするためのポインタを設定することを特徴とする。
【発明の効果】
【0023】
アプリケーションは、ファイル識別情報を含むアクセス要求に基づいて、各計算機に分散配置されるファイルデータにアクセスすることができる。
【図面の簡単な説明】
【0024】
【図1】本発明の実施形態における計算機システムの構成例を示す説明図である。
【図2】本発明の実施形態におけるAPのソースプログラムの一例を示す説明図である。
【図3】本発明の実施形態の分散メモリストレージの論理的構成例を示す説明図である。
【図4】本発明の実施形態の分散メモリストレージ管理部及びキー・バリュー型データ管理部の詳細を示す説明図である。
【図5】本発明の実施形態の分散メモリストレージ構成情報の詳細を示す説明図である。
【図6】本発明の実施形態の分散メモリストレージ管理情報の詳細を示す説明図である。
【図7】本発明の実施形態のグローバルファイル管理情報の詳細を示す説明図である。
【図8】本発明の実施形態の管理属性情報の詳細を示す説明図である。
【図9】本発明の実施形態のローカルファイル管理情報の詳細を示す説明図である。
【図10】本発明の実施形態におけるエントリの論理的な構成例を示す説明図である。
【図11】本発明の実施形態のディレクトリ管理情報の詳細を示す説明図である。
【図12】本発明の実施形態の配置属性情報の詳細を示す説明図である。
【図13】本発明の実施形態のマウント情報の詳細を示す説明図である。
【図14】本発明の実施形態のオープンファイル情報の詳細を示す説明図である。
【図15】本発明の実施形態におけるマウント処理を説明するフローチャートである。
【図16】本発明の実施形態におけるアンマウント処理を説明するフローチャートである。
【図17A】本発明の実施形態におけるオープン処理を説明するフローチャートである。
【図17B】本発明の実施形態におけるオープン処理を説明するフローチャートである。
【図18】本発明の実施形態における分散メモリストレージに対する読み出し処理を説明するフローチャートである。
【図19】本発明の実施形態における分散メモリストレージに対する書き込み処理を説明するフローチャートである。
【図20】本発明の実施形態におけるディレクトリ構造の一例を表す説明図である。
【図21】本発明の実施形態におけるディレクトリ間のファイルのデータをコピーした場合のキー・バリュー型データの配置例を示す説明図である。
【図22A】本発明の実施形態のおけるサーバの入力と、管理サーバからの応答との対応を表した説明図である。
【図22B】本発明の実施形態のおけるサーバの入力と、管理サーバからの応答との対応を表した説明図である。
【図22C】本発明の実施形態のおけるサーバの入力と、管理サーバからの応答との対応を表した説明図である。
【図23】本発明の実施形態におけるレコード定義情報の詳細を示す説明図である。
【図24】本発明の実施形態におけるファイル状態情報の一例を示す説明図である。
【図25】従来のファイルの構成例を示す説明図である。
【発明を実施するための形態】
【0025】
以下に図面を参照しながら本発明の実施形態を説明する。
【0026】
図1は、本発明の実施形態における計算機システムの構成例を示す説明図である。
【0027】
本実施形態の計算機システムは、管理サーバ101及び複数のサーバ102から構成される。
【0028】
管理サーバ101は、ネットワーク104を介して複数のサーバ102と接続され、接続される全サーバ102を管理する。ネットワーク104は、WAN、LAN、及びIPネットワークなどが考えられる。なお、管理サーバ101と各サーバ102とが直接接続されてもよい。
【0029】
本実施形態では、各サーバ102のメモリ領域を統合して生成された記憶領域から分散メモリストレージが生成される。分散メモリストレージの詳細については図3を用いて後述する。本実施形態の分散メモリストレージには、ファイルのデータが格納される。なお、分散メモリストレージには、キー・バリュー型データとしてファイルのデータが格納される。
【0030】
また、管理サーバ101は、記憶装置103と接続される。記憶装置103には、処理対象となるファイルが格納される。記憶装置103は、ファイルを永続的に保持できるものであればどのようなものでもよい。例えば、HDD等の記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置、光ディスク装置等が考えられる。
【0031】
なお、本実施形態におけるファイルは複数のレコードから構成される。また、レコードは、一以上のフィールドから構成される。
【0032】
管理サーバ101は、プロセッサ111、メモリ112、及びインタフェース113−1、113−2を備える。プロセッサ111、メモリ112、及びインタフェース113−1、113−2は、内部バス等を用いて接続される。なお、管理サーバ101は、情報を入出力するための入出力部等の他の構成を備えてもよい。
【0033】
プロセッサ111は、メモリ112上に読み出されたプログラムを実行することによって、管理サーバ101が備える機能を実現する。
【0034】
メモリ112は、プロセッサ111によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ112は、分散メモリストレージ管理部121、及びファイルシステム管理部122を実現するためのプログラムを格納する。
【0035】
分散メモリストレージ管理部121は、分散メモリストレージを管理する。分散メモリストレージ管理部121は、少なくとも、キー・バリュー型データ管理部131及びグローバルファイル管理情報132を含む。
【0036】
キー・バリュー型データ管理部131は、分散メモリストレージ上に格納されるキー・バリュー型データを管理する。
【0037】
グローバルファイル管理情報132は、ファイルを分割したキー・バリュー型データの分散メモリストレージ301上の配置位置の管理情報、すなわち、ローカルファイル管理情報126との対応関係に関する情報を格納する。
【0038】
なお、分散メモリストレージ管理部121及びキー・バリュー型データ管理部131の詳細な構成については図3を用いて後述する。
【0039】
ファイルシステム管理部122は、記憶装置103及び分散メモリストレージ301(図3参照)に格納されるファイルと、当該ファイルが格納されるファイルシステムとを管理する。ファイルシステム管理部122は、ファイルの名称等のファイルの識別情報に基づいて、ファイルの入出力処理を実行する。
【0040】
また、ファイルシステム管理部122は、マウント情報151及びファイル状態情報152を含む。
【0041】
マウント情報151は、マウントされるファイルシステム、ディレクトリ及びファイル等の管理情報を格納する。マウント情報151の詳細については、図13を用いて後述する。
【0042】
ファイル状態情報152は、記憶装置103及び分散メモリストレージ301(図3参照)に格納されたファイルの状態情報を管理する。ファイル状態情報152の詳細については、図24を用いて後述する。
【0043】
サーバ102は、プロセッサ114、メモリ115、及びインタフェース116を備える。プロセッサ114、メモリ115、及びインタフェース116は、内部バス等を用いて接続される。なお、サーバ102は、情報を入出力するための入出力部等の他の構成を備えてもよい。
【0044】
プロセッサ114は、メモリ115上に読み出されたプログラムを実行することによって、サーバ102が備える機能を実現する。
【0045】
メモリ115は、プロセッサ114によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ115は、AP123、分散メモリストレージアクセス部124、及びファイルシステムアクセス部125を実現するためのプログラム格納し、また、ローカルファイル管理情報126を格納する。
【0046】
AP123は、記憶装置103及び分散メモリストレージ301(図3参照)に格納されるファイルにアクセスするためのアプリケーションである。本実施形態のアプリケーションは、COBOL言語を用いて記述される。なお、本発明のCOBOL言語を用いて記述されたアプリケーションに限定されない。すなわち、通常の入出力を要求するプログラムであればどのようなものであってもよい。
【0047】
図2は、本発明の実施形態におけるAP123のソースプログラムの一例を示す説明図である。
【0048】
図2では、COBOL言語を用いたソースプログラム201を示す。ソースプログラム201に含まれるDATA DIVISIONのFILE SECTION202には、ファイル構造の定義が記述される。具体的には、アプリケーションが処理するファイルは、一つのファイルは記述項(FD)と、一つ以上のレコード記述項とによって定義される。
【0049】
図1の説明に戻る。
【0050】
分散メモリストレージアクセス部124は、分散メモリストレージ301(図3参照)に対するアクセスを制御する。ファイルシステムアクセス部125は、ファイルシステムに対するアクセスを制御し、また、オープンファイル情報161を含む。
【0051】
オープンファイル情報161は、記憶装置103及び分散メモリストレージ301(図3参照)に格納されたファイルのうち、オープン処理が実行されたファイルに関する情報を格納する。サーバ102は、オープンファイル情報161を参照することによって、アクセス可能なファイルを特定できる。オープンファイル情報127の詳細については、図14を用いて後述する。
【0052】
本実施形態では、AP123は、ファイルシステムアクセス部125を介して記憶装置103又は分散メモリストレージに格納されるファイルにアクセスする。
【0053】
ローカルファイル管理情報126は、分散メモリストレージ301(図3参照)を構成する記憶領域に格納されるキー・バリュー型データに関する情報を格納する。すなわち、サーバ102自身が保持するキー・バリュー型データの管理情報が格納される。
【0054】
なお、プログラムによって実現された構成は、ハードウェアを用いて実現してもよい。
【0055】
図3は、本発明の実施形態の分散メモリストレージの論理的構成例を示す説明図である。
【0056】
図3では、サーバ1(102A)、サーバ2(102B)及びサーバ3(102C)のメモリ領域を統合した分散メモリストレージ301を示す。
【0057】
分散メモリストレージ301は、複数のキー・バリュー型データ302を格納する。キー・バリュー型データ302は、キーとバリューとを一つの組としたデータ構造のデータである。なお、以下では、一つのキー・バリュー型データ302をエントリとも記載する。
【0058】
なお、サーバ1(102A)、サーバ2(102B)及びサーバ3(102C)のメモリ領域を統合して、複数の分散メモリストレージ301を生成してもよい。この場合、それぞれの分散メモリストレージ301には、異なるキー・バリュー型データを格納することができる。
【0059】
また、サーバ1(102A)及びサーバ2(102B)のメモリ領域、又は、サーバ2(102B)及びサーバ3(102C)のメモリ領域を統合して、それぞれのメモリ領域に分散メモリストレージ301を生成してもよい。
【0060】
本実施形態では、分散メモリストレージ301を用いて例を説明するが、他の記憶装置を複数使用して同様のストレージを構成してもよい。
【0061】
図4は、本発明の実施形態の分散メモリストレージ管理部121及びキー・バリュー型データ管理部131の詳細を示す説明図である。
【0062】
キー・バリュー型データ管理部131は、ファイルシステム名前空間アクセス部141、ファイルアクセス部142、及びディレクトリ属性管理部143を含む。
【0063】
ファイルシステム名前空間アクセス部141は、ファイルシステムのマウント処理及びアンマウント処理を実行する。マウント処理及びアンマウント処理の詳細については、図15及び図16を用いて後述する。
【0064】
ファイルアクセス部142は、分散メモリストレージ301上に格納されるキー・バリュー型データ302に対して、ファイル単位のアクセスを実行する。
【0065】
ディレクトリ属性管理部143は、ディレクトリ及びファイルの属性に関する処理を実行する。
【0066】
分散メモリストレージ管理部121は、分散メモリストレージ301の管理情報として、グローバルファイル管理情報132、分散メモリストレージ構成情報133、分散メモリストレージ管理情報134、及びディレクトリ管理情報135を格納する。
【0067】
分散メモリストレージ構成情報133は、分散メモリストレージ301と各サーバ102のメモリ領域との対応関係を表す情報を格納する。分散メモリストレージ構成情報133の詳細については図5を用いて後述する。
【0068】
分散メモリストレージ管理情報134は、分散メモリストレージ301の使用状態に関する情報を格納する。分散メモリストレージ管理情報134の詳細については、図6を用いて後述する。
【0069】
グローバルファイル管理情報132は、ローカルファイル管理情報126との対応関係に関する情報を格納する。グローバルファイル管理情報132の詳細については、図7を用いて後述する。
【0070】
キー・バリュー型データを用いて分散メモリ技術では、分散メモリストレージ301を構成する各サーバ102のメモリ領域にキー・バリュー型データが配置される。そのため、管理サーバ101は、グローバルファイル管理情報132に基づいて、キー・バリュー型データがどのメモリ領域に、すなわち、どのサーバ102に配置されているかを把握できる。
【0071】
なお、グローバルファイル管理情報132の詳細については、図7を用いて後述する。
【0072】
ディレクトリ管理情報135は、所定のディレクトリ配下に格納するレコードの分散方法等の定義情報を格納する。ディレクトリ管理情報135の詳細については、図11を用いて後述する。
【0073】
以下、各情報について説明する。
【0074】
図5は、本発明の実施形態の分散メモリストレージ構成情報133の詳細を示す説明図である。
【0075】
分散メモリストレージ構成情報133は、分散メモリストレージID501、領域数502、及び複数の物理メモリ領域構成情報503を含む。
【0076】
分散メモリストレージID501は、計算機システムにおける分散メモリストレージ301を識別するための識別子を格納する。
【0077】
領域数502は、分散メモリストレージID501に対応する分散メモリストレージ301を構成するメモリ領域の数を格納する。
【0078】
物理メモリ領域構成情報503は、分散メモリストレージ301を構成するメモリ領域の構成情報を格納する。具体的には、物理メモリ領域構成情報503は、サーバID511、領域ID512、及びメモリサイズ513を含む。
【0079】
サーバID511は、分散メモリストレージ301を構成するメモリ領域を提供するサーバ102を識別するための識別子を格納する。サーバID511は、サーバ102が識別できる情報であればよく、例えば、ホスト名、IPアドレス等が考えられる。
【0080】
領域ID512は、サーバ102が複数のメモリ領域を保持する場合に、当該サーバ102内のメモリ領域を識別するための識別子を格納する。領域ID512は、メモリ領域を識別できる情報であればよく、例えば、メモリ115の物理的なアドレス等が考えられる。なお、メモリ115の物理的なアドレスには、メモリ領域の先頭のアドレスを用いる方法が考えられる。
【0081】
メモリサイズ513は、分散メモリストレージ301に提供されるメモリ領域の大きさを表す情報を格納する。
【0082】
図6は、本発明の実施形態の分散メモリストレージ管理情報134の詳細を示す説明図である。
【0083】
分散メモリストレージ管理情報134は、分散メモリストレージID601、領域数602、及び複数の物理メモリ稼動情報603を含む。
【0084】
分散メモリストレージID601は、計算機システム上の分散メモリストレージ301を識別するための識別子を格納する。分散メモリストレージID601は、分散メモリストレージID501と同一の情報である。
【0085】
領域数602は、分散メモリストレージID501に対応する分散メモリストレージ301を構成するメモリ領域の数を格納する。領域数602は、領域数502と同一の情報である。
【0086】
物理メモリ稼動情報603は、分散メモリストレージ301を構成するメモリ領域の稼動状態を表す情報を格納する。具体的には、物理メモリ稼動情報603は、メモリサイズ611及び使用メモリサイズ612を含む。
【0087】
メモリサイズ611は、分散メモリストレージ301に提供されるメモリ領域の大きさを表す情報を格納する。メモリサイズ611は、メモリサイズ513と同一の情報である。
【0088】
使用メモリサイズ612は、分散メモリストレージ301に提供されるメモリ領域のうち、実際に使用されているメモリ領域の大きさを表す情報を格納する。
【0089】
図7は、本発明の実施形態のグローバルファイル管理情報132の詳細を示す説明図である。
【0090】
グローバルファイル管理情報132は、ファイル識別情報701、管理属性情報702、ローカルファイル管理情報ポインタ(開始)703、及びローカルファイル管理情報ポインタ(終了)704を含む。
【0091】
ファイル識別情報701は、ファイルを識別するための識別情報を格納する。ファイル識別情報701は、ファイルを識別できる情報であればよく、例えば、ファイル名、iノード番号等が考えられる。
【0092】
管理属性情報702は、ファイル識別情報701に対応するファイルの管理情報を格納する。管理属性情報702の詳細については、図8を用いて後述する。
【0093】
ローカルファイル管理情報ポインタ(開始)703及びローカルファイル管理情報ポインタ(終了)704は、ファイル識別情報701に対応するファイルを分割して生成されたキー・バリュー型データが格納されるサーバ102が保持するローカルファイル管理情報126へのポインタを格納する。
【0094】
本実施形態では、キー・バリュー型データが配置されるときに、配置関係を示すローカルファイル管理情報リスト711が生成される。ローカルファイル管理情報ポインタ(開始)703は、ローカルファイル管理情報リスト711の最初のローカルファイル管理情報126のアドレスを格納する。また、ローカルファイル管理情報ポインタ(終了)704は、ローカルファイル管理情報リスト711の最後のローカルファイル管理情報126をアドレスが格納する。
【0095】
一方、ローカルファイル管理情報126は、他のローカルファイル管理情報126へのポインタであるローカルファイル管理情報ポインタ905(図9参照)を含む。図7に示すように、ローカルファイル管理情報ポインタ905(図9参照)にはローカルファイル管理情報リスト順にローカルファイル管理情報126が読み出せるようにポインタが格納される。これによって、エントリ(キー・バリュー型データ)が配置されるサーバ102を把握することが可能となる。
【0096】
なお、ローカルファイル管理情報リスト711の最後のローカルファイル管理情報126のローカルファイル管理情報ポインタ905(図9参照)にはNullが格納される。
【0097】
また、ローカルファイル管理情報126は、グローバルファイル管理情報ポインタ906(図9参照)を含む。
【0098】
これによって、グローバルファイル管理情報132とローカルファイル管理情報126との対応関係を把握することができる。
【0099】
なお、ローカルファイル管理情報126の詳細については図9を用いて後述する。
【0100】
本実施形態では、ファイル識別情報701が含まれるファイルI/Oが入力された場合、管理サーバ101は、グローバルファイル管理情報132を参照することによって、キー・バリュー型データが配置される分散メモリストレージ301を把握できる。すなわち、ファイルとキー・バリュー型データとの対応づけが可能となる。
【0101】
図8は、本発明の実施形態の管理属性情報702の詳細を示す説明図である。
【0102】
管理属性情報702は、パーミション情報811、オーナー情報812、及びサイズ813を含む。なお、他の情報が含まれてもよい。
【0103】
パーミション情報811は、ファイル識別情報701に対応するファイルのアクセス権限の情報を格納する。
【0104】
オーナー情報812は、ファイル識別情報701に対応するファイルの所有者の情報を格納する。
【0105】
サイズ813は、ファイル識別情報701に対応するファイルの大きさを表す情報を格納する。
【0106】
図9は、本発明の実施形態のローカルファイル管理情報126の詳細を示す説明図である。
【0107】
ローカルファイル管理情報126は、ファイル識別情報901、管理属性情報902、エントリリストポインタ(開始)903、エントリリストポインタ(終了)904、ローカルファイル管理情報ポインタ905、及びグローバルファイル管理情報ポインタ906を含む。
【0108】
ファイル識別情報901は、ファイルを識別するための識別情報を格納する。ファイル識別情報901は、ファイルを識別できる情報であればよく、例えば、ファイル名、iノード番号等が考えられる。ファイル識別情報901は、ファイル識別情報701と同一の情報である。
【0109】
管理属性情報902は、ファイル識別情報901に対応するファイルの管理情報を格納する。管理属性情報902は、管理属性情報702と同一の情報である。
【0110】
エントリリストポインタ(開始)903は、及びエントリリストポインタ(終了)904は、エントリ921へのポインタを格納する。ここで、エントリ921は、一つのキー・バリュー型データを表す。
【0111】
本実施形態では、各サーバ102にキー・バリュー型データを配置するときに、エントリリスト911が作成される。エントリリスト911は、キー情報のソート順にエントリ921が並んでいる。
【0112】
エントリリストポインタ(開始)903は、エントリリスト911に含まれる最初のエントリ921へのポインタを格納する。
【0113】
エントリリストポインタ(終了)904は、エントリリスト912に含まれる最後のエントリ921へのポインタを格納する。
【0114】
ローカルファイル管理情報ポインタ905は、他のローカルファイル管理情報126へのポインタである。これによって、管理サーバ101は、最初のローカルファイル管理情報126にアクセスすることによって、ファイル識別情報901に対応するファイルが分割されたキー・バリュー型データを格納するローカルファイル管理情報126を把握することができる。
【0115】
グローバルファイル管理情報ポインタ906は、ローカルファイル管理情報126を管理するグローバルファイル管理情報132へのポインタを格納する。
【0116】
次に、エントリ921について説明する。
【0117】
エントリ921は、ファイル識別情報931、バリュー識別情報932、所属ローカルファイル管理情報ポインタ933、エントリポインタ934、及びバリューポインタ935を含む。
【0118】
ファイル識別情報931は、ファイルの識別情報を格納する。ファイル識別情報931は、ファイルを識別できる情報であればよく、ファイル名、iノード番号等が考えられる。ファイル識別情報931は、ファイル識別情報701と同一の情報である。
【0119】
バリュー識別情報932は、ファイルを構成するレコードに含まれるフィールドの識別情報を格納する。バリュー識別情報932は、フィールドを識別できる情報であればよく、例えば、フィールドの名称等が考えられる。
【0120】
所属ローカルファイル管理情報ポインタ933は、エントリ921が所属するローカルファイル管理情報126へのポインタを格納する。
【0121】
エントリポインタ934は、他のエントリ921へのポインタを格納する。図9に示すように、エントリポインタ934には、エントリリスト911順にエントリ921が読み出せるようにポインタが格納される。
【0122】
なお、エントリリスト911の最後のエントリ921のエントリポインタ934にはNullが格納される。これによって、エントリリスト911の最後のエントリ921であることが分かる。
【0123】
バリューポインタ935は、実際のデータ内容に対応するバリュー941が格納されたメモリ領域へポインタを格納する。
【0124】
図10は、本発明の実施形態におけるエントリ921の論理的な構成例を示す説明図である。
【0125】
図10に示すように、エントリ921は、キー1001とバリュー941との組として認識される。
【0126】
本実施形態では、キー1001は、ファイル識別情報931とバリュー識別情報932とから構成される。
【0127】
図11は、本発明の実施形態のディレクトリ管理情報135の詳細を示す説明図である。
【0128】
ディレクトリ管理情報135は、管理属性情報1101、配置属性情報1102、及びディレクトリエントリ情報1103を含む。
【0129】
管理属性情報1101は、ディレクトリの管理情報を格納する。管理属性情報1101は、管理属性情報702と同一の情報を含む。
【0130】
配置属性情報1102は、ディレクトリ配下に格納するキー・バリュー型データの配置方法に関する情報を格納する。配置属性情報1102の詳細については、図12を用いて後述する。
【0131】
ディレクトリエントリ情報1103は、ディレクトリ配下に格納されるファイルのファイル名等の識別情報を格納する。
【0132】
図12は、本発明の実施形態の配置属性情報1102の詳細を示す説明図である。
【0133】
配置属性情報1102は、レコード定義情報1201、フィールド指定情報1202、配置方針1203、及びキーレンジ指定情報1204を含む。
【0134】
レコード定義情報1201は、ファイルを構成するレコードの構造に関する情報を格納する。レコード定義情報1201の詳細については、図23を用いて後述する。
【0135】
フィールド指定情報1202は、キー1001を構成するバリュー識別情報932に対応するフィールドの情報を格納する。本実施形態では、フィールド指定情報1202によって指定されたフィールドにしたがって、キー・バリュー型データが生成される。
【0136】
配置方針1203は、分散メモリストレージ301を構成するサーバ102へのキー・バリュー型データの配置方法に関する情報を格納する。
【0137】
キー・バリュー型データの配置方法には、キー・バリュー型データを各サーバ102に均等に配置する方法(平準化)、及び、指定されたキーレンジ毎にキー・バリュー型データを配置する方法が考えられる。なお、配置属性情報1102は、前述した方法に限定されず、本発明ではどのような配置方法を用いても同様の効果を奏する。
【0138】
キーレンジ指定情報1204は、各サーバ102にキー・バリュー型データを配置するためのキーレンジに関する情報を格納する。なお、配置方針1203が平準化を表す情報が格納されている場合には、キーレンジ指定情報1204は用いられない。
【0139】
キーレンジ指定情報1204は、さらに、キーレンジ情報1211を含む。
【0140】
キーレンジ情報1211は、キー・バリュー型データを各サーバ102に配置するためのキーの範囲に関する情報を格納する。具体的には、キーレンジ情報1211は、始端1231、終端1232、及び領域ID1233を含む。
【0141】
始端1231は、キーレンジの開始点となるキー1001の情報を格納する。終端1232は、キーレンジの終了点となるキー1001の情報を格納する。
【0142】
領域ID1233は、サーバ102が複数のメモリ領域を保持する場合に、当該サーバ102内のメモリ領域を識別するための識別子を格納する。領域ID1233は、領域ID512と同一の情報である。
【0143】
図23は、本発明の実施形態におけるレコード定義情報1201の詳細を示す説明図である。
【0144】
レコード定義情報1201は、管理サーバ101がファイルのレコードを認識し、レコード単位にファイルを分割する場合に利用される情報である。レコード定義情報1201は、レコード構成2301、及びフィールド構成2302を含む。なお、本実施形態において、レコード定義情報1201は、分散メモリストレージ301に格納されるファイル、又は、ディレクトリごとに設定される。
【0145】
レコード構成2301は、ファイル内のレコード構成を識別するための情報であり、レコードデリミタ2311、レコード種別2312、及びレコード長2313を含む。
【0146】
レコードデリミタ2311は、レコードとレコードとを区切る文字コードを示す情報を格納する。レコードデリミタ2311には、例えば、改行を表す文字コードなどを用いることが考えられる。
【0147】
レコード種別2312は、ファイル内のレコードが固定長レコード又は可変長レコードのいずれであるかを示す情報を格納する。
【0148】
例えば、レコード種別2312に固定長レコードを示す情報が格納される場合、ファイルを構成するレコードは、全て同一の長さのレコードとなる。一方、レコード種別2312に可変長レコードを示す情報が格納される場合、ファイルを構成するレコードは、それぞれ長さが異なるレコードとなる。
【0149】
レコード長2313は、レコード種別2312が固定長レコードを示す場合に、1つのレコードの長さを示す情報を格納する。
【0150】
なお、レコード構成2301にはレコードの構成を識別可能な情報が含まれていればよく、レコードデリミタ2311、レコード種別2312、及びレコード長2313のすべての情報を含む必要はない。例えば、固定長のレコードである場合、レコードデリミタ2311はレコード構成2301に含まれてなくてもよい。
【0151】
フィールド構成2302は、レコード内のフィールドを識別するための情報であり、フィールドデリミタ2321、フィールド数2322、及びフィールド情報2323を含む。
【0152】
フィールドデリミタ2321は、フィールドとフィールドとを区切る文字コードを示す情報を格納する。フィールドデリミタ2321には、例えば、空白を表す文字コードなどを用いることが考えられる。
【0153】
フィールド情報2323は、対応するフィールドに記録されるデータに関する情報であり、フィールド種別2331、フィールド長2332、及び記述形式2333を含む。なお、1つのフィールドに対して1つフィールド情報2323が存在する。
【0154】
フィールド種別2331は、レコード種別2311に可変長レコードを示す情報が格納される場合、対応するフィールドが可変長フィールド又は固定長フィールドのいずれであるかを示す情報を格納する。
【0155】
フィールド長2332は、フィールド種別2331に固定長フィールドを示す情報が格納される場合、対応するフィールドのフィールド長の大きさを格納し、また、フィールド種別2331に可変長フィールドを示す情報が格納される場合、対応するフィールドの"フィールド長"を示す情報を格納する領域のサイズを格納する。
【0156】
記述形式2333は、ASCII、バイナリ等、対応するフィールドに記録されたデータの記述形式を示す情報を格納する。
【0157】
なお、フィールド構成2302は、レコード内のフィールドを識別できればよいため、フィールドデリミタ2321、フィールド数2322、フィールド情報2323のすべての情報を含む必要はない。例えば、フィールド情報2323のフィールド長2332が指定されていれば、フィールドデリミタ2321はフィールド構成2302に含まれなくてもよい。
【0158】
ファイルが固定長レコードから構成される場合、レコード長2312に設定された値によって個々のレコードを認識することができる。一方、ファイルが可変長レコードから構成される場合、各レコードの先頭には当該レコードの大きさを記録するフィールドが設定されており、管理サーバ101は、当該フィールドの情報によってレコードの区切りを認識することができる。
【0159】
ファイルが可変長レコードから構成される場合、管理サーバ101は、フィールド構成2302に設定される情報から最初のフィールドを識別し、レコードサイズを求めることができる。管理サーバ101は、レコードを認識した後、フィールド構成2302のフィールド数2321、及びフィールドサイズ2322を参照してフィールドを識別する。
【0160】
なお、レコード定義情報1201は、ファイルのレコード、及びフィールドが定義できる形式であれば、どのような形式であってもよい。例えば、図2で説明した、ソースプログラム201に含まれるDATA DIVISIONのFILE SECTION202のファイル構造の定義を用いてもよい。
【0161】
図13は、本発明の実施形態のマウント情報151の詳細を示す説明図である。
【0162】
本実施形態では、アプリケーションのファイルに対する抽象化された操作(読み出し、書き込みなど)を、個別のファイルシステムに依存する操作に変換するために仮想ファイルシステム(VFS)が用いられる。これによって、アプリケーションは、ファイルシステムの異なる記憶媒体に対して同一の操作でアクセス可能となる。なお、仮想ファイルシステムについては、例えば、非特許文献2に記載されている。
【0163】
仮想ファイルシステムでは、仮想ファイルシステム情報1301のリストが存在し、マウント情報151は、当該リストを格納する。
【0164】
仮想ファイルシステム情報1301は、Next1311、仮想ノードポインタ1312、及びファイルシステム依存情報ポインタ1313を含む。なお、仮想ファイルシステム情報1301は他の情報も含むが、公知の技術であるため省略する。
【0165】
Next1311は、他の仮想ファイルシステム情報1301へのポインタを格納する。これによって、リストに含まれる全ての仮想ファイルシステム情報1301をたどることができる。
【0166】
仮想ノードポインタ1312は、マウントされる仮想ノード情報1303(マウントポイントの仮想ノード)へのポインタを格納する。
【0167】
ファイルシステム依存情報ポインタ1313は、ファイルシステム依存情報1302又は分散メモリストレージ管理情報134へのポインタを格納する。
【0168】
本実施形態では、少なくとも一つの仮想ファイルシステム情報1301が分散メモリストレージ管理情報134と対応づけられる。
【0169】
仮想ノード情報1303は、ファイル又はディレクトリの管理情報を格納する。仮想ノード情報1303は、所属VFSポインタ1331、マウントVFSポインタ1332、及びオブジェクト管理情報ポインタ1333を含む。なお、仮想ノード情報1303は他の情報も含むが、公知の技術であるため省略する。
【0170】
所属VFSポインタ1331は、仮想ノードが所属する仮想ファイルシステムに対応する仮想ファイルシステム情報1301へのポインタを格納する。
【0171】
マウントVFSポインタ1332は、マウントポイントとなる仮想ノード情報1303へのポインタを格納する。
【0172】
オブジェクト管理情報ポインタ1333は、オブジェクト管理情報1304へのポインタを格納する。
【0173】
ここで、オブジェクト管理情報1304は、所定のファイルシステムに依存するファイル又はディレクトリの管理情報である。本実施形態では、分散メモリストレージ301に依存するオブジェクト管理情報1304として、ローカルファイル管理情報126、グローバルファイル管理情報132及びディレクトリ管理情報144が含まれる。
【0174】
図13に示す例では、マウント情報151から仮想ファイルシステム情報1(1301−1)へポイントされており、これがルートファイルシステムである。仮想ファイルシステム情報1(1301−1)のNext1311には、仮想ファイルシステム2(1301−2)へのポインタが格納される。また、仮想ファイルシステム情報1(1301−1)のファイルシステム依存情報ポインタ1313には、ファイルシステム依存情報1302へのポインタが格納される。なお、仮想ファイルシステム情報1(1301−1)は、ルートファイルシステムであり、マウントされる仮想ノードがないため、仮想ノードポインタ1312にはNullへのポインタが格納される。
【0175】
図13に示す例では、仮想ファイルシステム情報2(1301−2)の他に仮想ファイルシステム情報1301が存在しないため、Next1311にはNullへのポインタが格納される。また、仮想ファイルシステム情報2(1301−2)のファイルシステム依存情報ポインタ1313には、分散メモリストレージ管理情報134へのポインタが格納される。また、仮想ファイルシステム情報2(1301−2)は、仮想ノード情報2(1303−2)にマウントされているため、仮想ノードポインタ1312には、仮想ノード情報2(1303−2)へのポインタが格納される。
【0176】
図13に示す例では、仮想ノード情報1(1303−1)は仮想ファイルシステム情報1(1301−1)に所属するため、所属VFSポインタ1331には仮想ファイルシステム情報1(1301−1)へのポインタが格納される。また、仮想ノード情報1(1303−1)のオブジェクト管理情報ポインタ1333には、所定のファイルシステムに関するオブジェクト管理情報1304へのポインタが格納される。なお、仮想ノード情報1(1303−1)は、いずれの仮想ファイルシステム情報1301もマウントされていないため、マウントVFSポインタ1332にはNullへのポインタが格納される。
【0177】
図13に示す例では、仮想ノード情報2(1303−2)は、仮想ファイルシステム情報1(1301−1)に所属するため、所属VFSポインタ1331には仮想ファイルシステム情報1(1301−1)へのポインタが格納される。また、仮想ノード情報2(1303−2)はマウントポイントとなるディレクトリであるため、マウントVFSポインタ1332には仮想ファイルシステム情報2(1301−2)へのポインタが格納される。また、仮想ノード情報2(1303−2)のオブジェクト管理情報ポインタ1333には、所定のファイルシステムに関するオブジェクト管理情報1304へのポインタが格納される。
【0178】
図13に示す例では、仮想ノード情報3(1303−3)は、仮想ファイルシステム情報2(1301−2)に所属するため、所属VFSポインタ1331には仮想ファイルシステム情報2(1301−2)へのポインタが格納される。また、仮想ノード情報1(1303−1)のオブジェクト管理情報ポインタ1333には、分散メモリストレージ301に関するオブジェクト管理情報1305へのポインタが格納される。なお、仮想ノード情報3(1303−3)は、いずれの仮想ファイルシステム情報1301もマウントされていないため、マウントVFSポインタ1332にはNullへのポインタが格納される。
【0179】
図14は、本発明の実施形態のオープンファイル情報161の詳細を示す説明図である。
【0180】
オープンファイル情報161は、所属VFSポインタ1401、仮想ノードポインタ1402、及びファイルポインタ1403を含む。
【0181】
所属VFSポインタ1401は、オープン処理が実行されたファイルを管理するファイルシステムが所属する仮想ファイルシステム情報1301へのポインタを格納する。
【0182】
仮想ノードポインタ1402は、オープン処理が実行されたファイルの管理情報を格納する仮想ノード情報1303へのポインタを格納する。
【0183】
ここで、仮想ノード情報1303は、図13に示す仮想ノード情報と同一のものであり、当該仮想ノード情報1303のオブジェクト管理情報ポインタ1333には、ローカルファイル管理情報126へのポインタ又はグローバルファイル管理情報132へのポインタのいずれかがオブジェクト管理情報1305として格納される。
【0184】
ファイルポインタ1403は、読み出し処理又は書き込み処理の対象となるファイルのデータの処理位置を格納する。
【0185】
図24は、本発明の実施形態におけるファイル状態情報152の一例を示す説明図である。
【0186】
ファイル状態情報152は、ファイル識別情報2401及び状態2402を含む。
【0187】
ファイル識別情報2401は、ファイルを識別するための識別情報を格納する。ファイル識別情報2401は、ファイル識別情報701と同一のものである。
【0188】
状態2402は、ファイルの処理状態等を格納する。例えば、ファイルに対する読み出し処理が実行されている場合には「読み出し中」、ファイルの書き込み処理が実行されている場合には「書き込み中」などの情報が格納される。また、アクセス元のサーバ102の識別情報等を含んでいてもよい。
【0189】
図15は、本発明の実施形態におけるマウント処理を説明するフローチャートである。
【0190】
管理サーバ101は、当該管理サーバ101の操作者からマウントコマンドを受け付けると、ファイルシステム名前空間アクセス部141を読み出して以下の処理を開始する。なお、処理契機はこれに限定されず、例えば、サーバ102のAP123からマウントコマンドを受け付けた場合に処理が開始されてもよい。
【0191】
ファイルシステム名前空間アクセス部141は、受け付けたマウントコマンドを参照して、マウント先が分散メモリストレージ301であるか否かを判定する(ステップ1501)。
【0192】
マウント先が分散メモリストレージ301でないと判定された場合、すなわち、記憶装置103がマウント先であると判定された場合、ファイルシステム名前空間アクセス部141は、通常のマウント操作を実行し(ステップ1507)、処理を終了する。なお、ステップ1507のマウント処理は公知の技術であるため説明を省略する。
【0193】
マウント先が分散メモリストレージ301であると判定された場合、ファイルシステム名前空間アクセス部141は、仮想ファイルシステム情報1301及び分散メモリストレージ管理情報134を生成する(ステップ1502)。
【0194】
このとき、生成された仮想ファイルシステム情報1301には、生成された分散メモリストレージ管理情報134へのポインタが設定される。具体的には、生成された仮想ファイルシステム情報1301のファイルシステム依存情報ポインタ1313に、生成された分散メモリストレージ管理情報134へのポインタが格納される。
【0195】
次に、ファイルシステム名前空間アクセス部141は、仮想ノード情報1303及びオブジェクト管理情報1304を生成する(ステップ1503)。
【0196】
このとき、生成された仮想ノード情報1303には、生成されたオブジェクト管理情報1304へのポインタが設定される。具体的には、生成された仮想ノード情報1303のオブジェクト管理情報ポインタ1333に、生成されたオブジェクト管理情報1304へのポインタが格納される。
【0197】
ファイルシステム名前空間アクセス部141は、生成された仮想ノード情報1303に、生成された仮想ファイルシステム情報1301へのポインタを設定する(ステップ1504)。具体的には、生成された仮想ノード情報1303の所属VFSポインタ1331に、生成された仮想ファイルシステム情報1301へのポインタが格納される。
【0198】
ファイルシステム名前空間アクセス部141は、マウント情報151に、生成された仮想ファイルシステム情報1301を追加する(ステップ1505)。
【0199】
具体的には、マウント情報151におけるリストの最後の仮想ファイルシステム情報1301のNext1311に、生成された仮想ファイルシステム情報1301へのポインタが格納される。また、生成された仮想ファイルシステム情報1301のNext1311にはNullが格納される。
【0200】
ステップ1502〜ステップ1505の処理によって、マウントするファイルシステムの情報が生成される。
【0201】
ファイルシステム名前空間アクセス部141は、生成された仮想ファイルシステム情報1301と、マウントポイントとなる仮想ノード情報1303とを対応づけて(ステップ1506)、処理を終了する。
【0202】
具体的には、生成された仮想ファイルシステム情報1301の仮想ノードポインタ1312に、マウントポイントとなる仮想ノード情報1303へのポインタが格納される。また、マウントポイントとなる仮想ノード情報1303のマウントVFSポインタ1332に、生成された仮想ファイルシステム情報1301へのポインタが格納される。
【0203】
図16は、本発明の実施形態におけるアンマウント処理を説明するフローチャートである。
【0204】
管理サーバ101は、当該管理サーバ101の操作者からアンマウントコマンドを受け付けると、ファイルシステム名前空間アクセス部141を読み出して以下の処理を開始する。なお、処理契機はこれに限定されず、例えば、サーバ102のAP123からアンマウントコマンドを受け付けた場合に処理が開始されてもよい。
【0205】
ファイルシステム名前空間アクセス部141は、受け付けたアンマウントコマンドを参照して、アンマウント処理の対象となる仮想ファイルシステム情報1301のマウント先が分散メモリストレージ301であるか否かを判定する(ステップ1601)。
【0206】
以下、アンマウント処理の対象となる仮想ファイルシステム情報1301を対象仮想ファイルシステム情報1301とも記載する。
【0207】
このとき、ファイルシステム名前空間アクセス部141は、受け付けたアンマウントコマンドに基づいて、対象仮想ファイルシステム情報1301のマウントポイントを特定する。これによって、マウントポイントとなる仮想ノード情報1303を特定できる。
【0208】
対象仮想ファイルシステム情報1301のマウント先が分散メモリストレージ301でないと判定された場合、すなわち、記憶装置103上の記憶領域が対象仮想ファイルシステム情報1301のマウント先であると判定された場合、ファイルシステム名前空間アクセス部141は、通常のアンマウント操作を実行し(ステップ1607)、処理を終了する。なお、ステップ1607のアンマウント処理は公知の技術であるため説明を省略する。
【0209】
対象仮想ファイルシステム情報1301のマウント先が分散メモリストレージ301であると判定された場合、ファイルシステム名前空間アクセス部141は、マウントポイントとなる仮想ノード情報1303と、対象仮想ファイルシステム情報1301との対応づけを削除する(ステップ1602)。
【0210】
具体的には、対象仮想ファイルシステム情報1301の仮想ノードポインタ1312から、マウントポイントとなる仮想ノード情報1303へのポインタが削除される。また、マウントポイントとなる仮想ノード情報1303のマウントVFSポインタ1332から、対象仮想ファイルシステム情報1301へのポインタが削除される。
【0211】
ファイルシステム名前空間アクセス部141は、マウント情報151から、対象仮想ファイルシステム情報1301を削除する(ステップ1603)。具体的には、以下のような処理が実行される。
【0212】
まず、ファイルシステム名前空間アクセス部141は、マウント情報151におけるリストに含まれる仮想ファイルシステム情報1301の中から、対象仮想ファイルシステム情報1301へのポインタが格納される仮想ファイルシステム情報1301を特定する。さらに、ファイルシステム名前空間アクセス部141は、特定された仮想ファイルシステム情報1301のNext1311から対象仮想ファイルシステム情報1301へのポインタを削除する。
【0213】
次に、ファイルシステム名前空間アクセス部141は、対象仮想ファイルシステム情報1301へのポインタを格納する仮想ノード情報1303から、対象仮想ファイルシステム情報1301へのポインタを削除する(ステップ1604)。具体的には仮想ノード情報1303の所属VFSポインタ1331から、対象仮想ファイルシステム情報1301へのポインタが削除される。
【0214】
ファイルシステム名前空間アクセス部141は、対象仮想ファイルシステム情報1301へのポインタが削除された仮想ノード情報1303から、オブジェクト管理情報1304へのポインタを削除する(ステップ1605)。具体的には、仮想ノード情報1303のオブジェクト管理情報ポインタ1333から、オブジェクト管理情報1304へのポインタが削除される。
【0215】
なお、ファイルシステム名前空間アクセス部141は、仮想ノード情報1303及びオブジェクト管理情報1304を削除してもよいし、再度利用するためそのまま残しておいてもよい。
【0216】
ファイルシステム名前空間アクセス部141は、対象仮想ファイルシステム情報1301から、分散メモリストレージ管理情報134へのポインタを削除する(ステップ1606)。具体的には、対象仮想ファイルシステム情報1301のファイルシステム依存情報ポインタ1313から、分散メモリストレージ管理情報134へのポインタが削除される。
【0217】
なお、ファイルシステム名前空間アクセス部141は、対象仮想ファイルシステム情報1301及び分散メモリストレージ管理情報134を削除してもよいし、再度利用するためそのまま残しておいてもよい。
【0218】
図17A及び図17Bは、本発明の実施形態におけるオープン処理を説明するフローチャートである。
【0219】
ファイルシステムアクセス部125は、AP123からのアクセス要求(読み出し要求、書き込み要求等)を受け付けるとオープン処理を開始する。また、このとき、ファイルシステムアクセス部125は、管理サーバ101に対してオープン処理の実行要求を送信する。当該実行要求には、少なくとも処理対象のファイルのファイル名が含まれる。
【0220】
当該オープン処理の実行要求を送信したファイルシステムアクセス部125は、通常のオープン処理を実行する。具体的には、オープンファイル情報161を初期化し、オープンファイル情報161に必要なポインタを設定する。
【0221】
初期化処理では、オープンファイル情報161の所属VFSポインタ1401に、対象ファイルが存在するディレクトリにマウントされるファイルシステムの仮想ファイルシステム情報1301へのポインタが格納される。また、仮想ノードポインタ1402には、対象ファイルの管理情報を格納する仮想ノード情報1303へのポインタが格納される。
【0222】
また、オープン処理では、オープンファイル情報161におけるオブジェクト管理情報ポインタ1333に、ローカルファイル管理情報126又はグローバルファイル管理情報132のいずれかのポインタが設定される。
【0223】
前述した情報は、管理サーバ101によって取得され、ファイルシステムアクセス部125に送信されたものである。以下、オープン処理の実行要求を受け付けた管理サーバ101の処理について説明する。
【0224】
管理サーバ101は、処理対象のファイルのファイル名を含むオープン処理の実行要求を受け付けると、ファイルシステム管理部122を呼び出して以下の処理を開始する。以下、ファイル名が指定されたファイルを対象ファイルとも記載する。
【0225】
なお、オープン処理の実行要求に含まれるファイル名は、絶対パス又は相対パスの何れを用いてもよい。
【0226】
管理サーバ101は、オープン処理の実行要求に含まれるファイル名に基づいて、対象ファイルが分散メモリストレージ301に格納されるか否かを判定する(ステップ1701)。
【0227】
具体的には、管理サーバ101は、ファイル名が相対パス名の場合、当該相対パス名を絶対パスに変換する。次に、管理サーバ101は、絶対パス名に基づいてマウント情報151を参照して、対象ファイルが格納されるディレクトリに分散メモリストレージ301がマウントされているか否かを判定する。より詳細には、以下の処理が実行される。
【0228】
まず、管理サーバ101は、絶対パス名を参照し、当該絶対パス名に含まれるディレクトリ名に基づいて、マウント情報151が格納される仮想ファイルシステム情報1301のリストをたどり、仮想ノード情報1303へのマウントポイントがあるか否かを判定する。
【0229】
仮想ノード情報1303へのマウントポイントがあると判定された場合、管理サーバ101は、当該マウントポイントが示す仮想ノード情報1303のマウントVFSポインタ1332を参照し、マウント先の仮想ファイルシステム情報1301を特定する。また、管理サーバ101は、当該マウントポイントが示す仮想ノード情報1303に対応するオブジェクト管理情報1304を参照し、対象ファイルが格納されるディレクトリにマウントされる仮想ノード情報1303を特定する。
【0230】
次に、管理サーバ101は、特定された仮想ノード情報1303の所属VFSポインタ1331を参照して、所属する仮想ファイルシステム情報1301を特定する。
【0231】
さらに、管理サーバ101は、特定された仮想ファイルシステム情報1301のファイルシステム依存情報ポインタ1313を参照し、分散メモリストレージ管理情報134へポインタが格納されているか否かを判定する。
【0232】
ファイルシステム依存情報ポインタ1313に分散メモリストレージ管理情報134へのポインタが格納される場合には、対象ファイルが分散メモリストレージ301に格納されると判定される。
【0233】
以上が、ステップ1701における処理である。
【0234】
対象ファイルが分散メモリストレージ301に格納されない場合、すなわち、対象ファイルが記憶装置103に格納されると判定された場合、管理サーバ101は、通常のオープン処理を実行し(ステップ1731)、処理を終了する。なお、ステップ1731のオープン処理は公知の技術であるため説明を省略する。
【0235】
対象ファイルが分散メモリストレージ301に格納されると判定された場合、管理サーバ101は、分散メモリストレージ管理部121を読み出して以下の処理を実行する。
【0236】
対象ファイルが分散メモリストレージ301に格納されていると判定された場合、管理サーバ101は、絶対パス名を分散メモリストレージ301内のファイル識別情報に変換する(ステップ1702)。
【0237】
ファイル識別情報としては、iノード番号を用いることが考えられる。ただし、ファイルシステムが異なるとiノード番号が重複することがあり得る。そのため、ファイルシステム(分散メモリストレージを含む)を識別する情報、又は、デバイスを識別する情報とともに用いてもよい。
【0238】
例えば、分散メモリストレージの場合、分散メモリストレージ管理情報134の分散メモリストレージID601を用いることが考えられる。また、ファイル識別情報としては、ファイルが特定できることが目的であるため、絶対パス名をそのまま用いてもよい。
【0239】
管理サーバ101は、ステップ1701において特定されたディレクトリに対応するディレクトリ管理情報135を参照して、対象ファイルが分散メモリストレージ301上に存在するか否かを判定する(ステップ1703)。
【0240】
具体的には、管理サーバ101は、ディレクトリ管理情報135のディレクトリエントリ情報1103を参照して、分散メモリストレージ301において規定されるフォーマットに従って対象ファイルを格納するディレクトリを特定し、対象ファイルのファイル名を検索する。ディレクトリエントリ情報1103に対象ファイルのファイル名が格納される場合に、対象ファイルが分散メモリストレージ301上に存在すると判定される。
【0241】
以上の処理によって、オープンファイル情報161の所属VFSポインタ1401に格納する仮想ファイルシステム情報1301へのポインタ、及び、仮想ノードポインタ1402に格納する仮想ノード情報1303へのポインタが特定される。管理サーバ1010は、前述した各ポインタの情報をファイルシステムアクセス部125に送信する。当該ポインタの情報を受けたファイルシステムアクセス部125は、オープンファイル情報161にポインタを設定する。
【0242】
次に、管理サーバ101は、オープン処理の実行要求に含まれるファイル名を参照して、ローカルアクセスが指定されているか否かを判定する(ステップ1705)。
【0243】
ここで、ローカルアクセスとは、対象ファイルに対応するローカルファイル管理情報126にのみアクセスすることを表す。例えば、ファイルAを分割したキー・バリュー型データがサーバA及びサーバBのそれぞれに配置されている場合に、サーバAがローカルアクセスを指定してファイルAへのアクセスを要求すると、サーバAに格納されるファイルAのキー・バリュー型データ(ローカルファイル管理情報126)にのみアクセスされる。
【0244】
ローカルアクセスを指定する方法としては、ファイル名にローカルアクセスを指定する識別情報を含める方法が考えられる。例えば、ファイル名が「/X/A」のファイルに対してローカルアクセスを指定する場合には、「/X/A.local」がオープン処理の実行要求に含まれる。なお、本発明はこれに限定されず、ファイル名とは別にローカルアクセスを指定する識別情報を付与する方法を用いてもよい。
【0245】
管理サーバ101は、前述したようなローカルアクセスを指定する識別情報の有無を判定することによって、ローカルアクセスが指定されているか否かを判定できる。
【0246】
ローカルアクセスが指定されていると判定された場合、管理サーバ101は、オープンファイル情報161へのポインタを格納する仮想ノード情報1303のオブジェクト管理情報ポインタ1333に、ローカルファイル管理情報126へのポインタを設定する(ステップ1706)。
【0247】
具体的には、管理サーバ101は、ローカルファイル管理情報126へのポインタを含む応答を分散メモリストレージアクセス部124に送信する。これによって、分散メモリストレージアクセス部124は、対象ファイルのうち、ローカルファイル管理情報126に格納されるキー・バリュー型データにのみアクセスすることが可能となる。
【0248】
ローカルアクセスが指定されていないと判定された場合、管理サーバ101は、オープンファイル情報161における仮想ノード情報1303のオブジェクト管理情報ポインタ1333に、グローバルファイル管理情報132へのポインタを設定する(ステップ1707)。
【0249】
具体的には、管理サーバ101は、グローバルファイル管理情報132へのポインタを含む応答を分散メモリストレージアクセス部124に送信する。受信した情報は、分散メモリストレージアクセス部124からファイルシステムアクセス部125へ通知され、当該ポインタがオープンファイル情報161に設定される。
【0250】
ステップ1704〜ステップ1707の処理によってオープンファイル情報161に必要な情報が設定される。
【0251】
その後、管理サーバ101は、オープン処理の実行要求を送信したサーバ102に処理が完了した旨を通知し(ステップ1708)、処理を終了する。
【0252】
当該通知を受信したファイルシステムアクセス部125は、オープン処理が実行されたファイルに対してファイル記述子を付与する。また、管理サーバ101は、ファイル記述子とオープン処理が実行されたファイルに対応するオープンファイル情報161へのポインタとを対応づけた管理情報(図示省略)を生成する。ファイルシステムアクセス部125は、以後、ファイル記述子を用いてファイルアクセスを実行する。
【0253】
一方、ステップ1703において、対象ファイルが分散メモリストレージ301に存在しないと判定された場合、管理サーバ101は、オープン処理の実行要求にファイル作成指示が含まれるか否かを判定する(ステップ1711)。
【0254】
オープン処理の実行要求にファイル作成指示が含まれないと判定された場合、管理サーバ101は、オープン処理の実行要求を送信したサーバ102に対してオープンエラーを通知して(ステップ1721)、処理を終了する。
【0255】
オープン処理の実行要求にファイル作成指示が含まれると判定された場合、管理サーバ101は、ディレクトリ管理情報135のディレクトリエントリ情報1103に、オープン処理の実行要求に含まれるファイル名を格納する(ステップ1712)。
【0256】
具体的には、ファイル名を変換した識別情報が格納される。なお、ディレクトリ管理情報135は、ファイル作成指示に含まれるファイル名に基づいて特定可能である。例えば、ファイル作成指示に含まれるファイル名が「/W/X/A」である場合、管理サーバ101は、ディレクトリ「/W/X」配下に格納されるファイルであることが分かり、当該ディレクトに対応するディレクトリ管理情報135を特定できる。
【0257】
次に、管理サーバ101は、ディレクトリ管理情報135の配置属性情報1102に基づいて、グローバルファイル管理情報132及びローカルファイル管理情報126を生成する(ステップ1713)。
【0258】
具体的には、以下のような処理が実行される。
【0259】
まず、管理サーバ101は、ファイル名が変換された識別情報をグローバルファイル管理情報132のファイル識別情報701に格納し、また、グローバルファイル管理情報132の管理属性情報702に必要な情報を設定する。
【0260】
次に、管理サーバ101は、配置方針1203及びキーレンジ指定情報1204に基づいて、分散メモリストレージ301を構成する各サーバ102へのローカルファイル管理情報126の配置を決定し、ローカルファイル管理情報126を生成する。このとき、ローカルファイル管理情報リスト711も生成される。なお、ローカルファイル管理情報126の配置を決定する場合には、分散メモリストレージ構成情報133が参照される。これによって、分散メモリストレージ301を構成するサーバ102を把握でき、各サーバ102への配置方法が決定できる。
【0261】
管理サーバ101は、生成されたローカルファイル管理情報リスト711に基づいて、ローカル管理情報ポインタ(開始)703、及び、ローカル管理情報ポインタ(終了)704にポインタを格納する。
【0262】
さらに、管理サーバ101は、ローカルファイル管理情報126のファイル識別情報901にファイル識別情報701と同一の識別情報を格納し、管理属性情報902には管理属性情報702と同一の情報を格納し、また、グローバルファイル管理情報ポインタ906には所属するグローバルファイル管理情報132へのポインタを格納する。また、管理サーバ101は、生成されたローカルファイル管理情報リスト711に基づいて、ローカルファイル管理情報ポインタ905に対応するポインタを格納する。
【0263】
その後、管理サーバ101は、決定された配置にしたがって各サーバ102に、生成されたローカルファイル管理情報126を送信する。
【0264】
以上の処理によって、管理サーバ101は、ファイル名等のファイル識別情報と、キー・バリュー型データとの対応関係を把握できる。
【0265】
なお、本発明は前述した処理に限定されない。例えば、サーバ102が、ステップ1701及びステップ1702等の処理を実行してもよい。本発明では、管理サーバ101及びサーバ102が連携して、オープンファイル情報161を生成することができれば、どのような処理であってもよい。
【0266】
以下、AP123からのアクセス要求の処理について説明する。
【0267】
オープン処理が完了した後、まず、ファイルシステムアクセス部125によってアクセス要求が処理される。
【0268】
まず、ファイルシステムアクセス部125は、分散メモリストレージ301に対するアクセスか否かを判定する。
【0269】
例えば、オブジェクト管理情報ポインタ1333に、ローカルファイル管理情報126又はグローバルファイル管理情報132へのポインタが格納される場合に、分散メモリストレージ301に対するアクセスであると判定される。
【0270】
分散メモリストレージ301に対するアクセスであると判定された場合、ファイルシステムアクセス部125は、分散メモリストレージアクセス部124を呼び出し、当該分散メモリストレージアクセス部124が以下の処理を実行する。
【0271】
ここでは、分散メモリストレージ301に対するアクセスについて説明する。
【0272】
アクセス要求が読み出し要求である場合、分散メモリストレージアクセス部124は、自身のローカルファイル管理情報126に対する読み出しであるか否かを判定する。
【0273】
具体的には、分散メモリストレージアクセス部124は、オープンファイル情報161におけるオブジェクト管理情報ポインタ1333に、ローカルファイル管理情報126へのポインタが格納されているか否かを判定する。オブジェクト管理情報ポインタ1333にローカルファイル管理情報126へのポインタが格納されている場合には、自身のローカルファイル管理情報126に対する読み出しであると判定される。
【0274】
自身のローカルファイル管理情報126に対する読み出しであると判定された場合、分散メモリストレージアクセス部124は、自身のローカルファイル管理情報126に基づいてファイルのデータを読み出し、処理を終了する。
【0275】
自身のローカルファイル管理情報126に対する読み出しでないと判定された場合、分散メモリストレージアクセス部124は、管理サーバ101に読み出し処理を依頼する。当該依頼を受け付けた管理サーバ101は、図18に示す処理を実行する。
【0276】
アクセス要求が書き込み要求である場合、分散メモリストレージアクセス部124は、自身のローカルファイル管理情報126に対する書き込みであるか否かを判定する。
【0277】
具体的には、分散メモリストレージアクセス部124は、オープンファイル情報161におけるオブジェクト管理情報ポインタ1333に、ローカルファイル管理情報126へのポインタが格納されているか否かを判定する。
【0278】
自身のローカルファイル管理情報126に対する書き込みであると判定された場合、分散メモリストレージアクセス部124は、自身のローカルファイル管理情報126に基づいてファイルのデータを書き込み、処理を終了する。
【0279】
データを書き込み処理では、例えば、以下のような処理が実行される。分散メモリストレージアクセス部124は、ローカルファイル管理情報126のファイル識別情報901に基づいて、キー・バリュー型データを作成する。さらに、分散メモリストレージアクセス部124は、作成されたキー・バリュー型データに対応するエントリをエントリリスト911に追加し、さらに、ローカルファイル管理情報126を更新する。その後、分散メモリストレージアクセス部124は、更新されたローカルファイル管理情報126を管理サーバ101に送信する。
【0280】
なお、本発明は、データの書き込み処理に限定されない。キー・バリュー型データが作成できればどのような方法であってもよい。
【0281】
自身のローカルファイル管理情報126に対する書き込みでないと判定された場合、分散メモリストレージアクセス部124は、管理サーバ101に書き込み処理を依頼する。当該依頼を受け付けた管理サーバ101は、図19に示す処理を実行する。
【0282】
次に、図18及び図19を用いて分散メモリストレージ301に対する読み出し処理及び書き込み処理について説明する。
【0283】
以下では、オープン処理後に、サーバ102から分散メモリストレージ301へのアクセス要求を受け付けた場合の管理サーバ101の処理について説明する。
【0284】
図18は、本発明の実施形態における分散メモリストレージ301に対する読み出し処理を説明するフローチャートである。
【0285】
管理サーバ101は、サーバ102から分散メモリストレージ301へのアクセス要求を受け付けると、当該アクセス要求が読み出し要求か否かを判定する(ステップ1801)。
【0286】
具体的には、管理サーバ101は、アクセス要求に含まれる関数を参照して、アクセス要求が読み出し要求であるか否かを判定する。
【0287】
なお、当該判定処理は、サーバ102のファイルシステムアクセス部125等が実行してもよい。この場合、管理サーバ101は、サーバ102の判定結果を受信することとなる。
【0288】
アクセス要求が読み出し要求でないと判定された場合、すなわち、アクセス要求が書き込み要求であると判定された場合、管理サーバ101は、書き込み処理を実行する(ステップ1811)。書き込み処理については図19を用いて後述する。
【0289】
アクセス要求が読み出し要求であると判定された場合、管理サーバ101は、読み出し処理の対象となるファイルを特定する(ステップ1802)。
【0290】
具体的には、管理サーバ101は、サーバ102が指定したグローバルファイル管理情報132へのポインタに基づいてファイルを特定する。なお、サーバ102は以下のような処理によってグローバルファイル管理情報132へのポインタを特定する。
【0291】
サーバ102は、ファイル記述子に基づいてオープンファイル情報161を特定する。次に、サーバ102は、特定されたオープンファイル情報161に基づいて、仮想ノード情報1303を特定する。さらに、サーバ102は、当該仮想ノード情報1303におけるオブジェクト管理情報ポインタ1333を参照して、グローバルファイル管理情報132へのポインタを特定する。
【0292】
このとき、管理サーバ101は、ファイル状態情報152を更新する。具体的には、処理対象であるファイルの識別情報をファイル識別情報2501に格納し、また、状態2502に読み出し処理が実行されていることを示す情報を格納する。
【0293】
次に、管理サーバ101は、レコード単位の読み出し処理であるか否かを判定する(ステップ1803)。
【0294】
レコード単位の読み出しを指定する方法としては、例えば、レコード単位の情報を読み出すための関数を用いる方法、レコード単位の読み出しを指定するフラグ等をアクセス要求に含める方法が考えられる。
【0295】
管理サーバ101は、アクセス要求に用いられる関数、又はアクセス要求に含まれるフラグ等を参照することによって、レコード単位の読み出し処理であるか否かを判定できる。なお、当該判定処理は、サーバ102のファイルシステムアクセス部125等が実行してもよい。この場合、管理サーバ101は、サーバ102の判定結果を受信することとなる。
【0296】
レコード単位の読み出し要求であると判定された場合、管理サーバ101は、グローバルファイル管理情報132又はローカルファイル管理情報126に基づいて、読み出し対象となるファイルのデータ(バリュー)をレコード単位に読み出す(ステップ1804)。
【0297】
具体的には、管理サーバ101は、エントリ921を保持するサーバ102にバリュー941の読み出しを指示する。当該指示を受けたサーバ102は、指定されたエントリ921からバリュー941を読み出し、読み出されたバリュー941を要求元のサーバ102に送信する。
【0298】
当該データを受信したサーバ102は、オープンファイル情報161のファイルポインタ1403を更新する。具体的には、読み出したバリュー941に対応するポインタがファイルポインタ1403に格納される。これによって、読み出し対象となるファイルのデータがどこまで読み出されたかを把握できる。
【0299】
管理サーバ101は、読み出し対象となるファイルのデータ(バリュー)が全て読み出されるまで同様の処理を実行する。
【0300】
ステップ1803において、レコード単位の読み出し要求でないと判定された場合、管理サーバ101は、グローバルファイル管理情報132に基づいて、読み出し対象となるファイルのデータ(バリュー)をバッファ(図示省略)に格納する(ステップ1821)。
【0301】
なお、レコード単位の読み出し要求でない場合には、読み出すデータの要求サイズがアクセス要求に含まれる。
【0302】
このとき、要求サイズを超えない範囲内で、ファイルポインタ1403に示された位置からバリュー941を読み出され、読み出されたバリュー941がバッファ(図示省略)に格納される。
【0303】
管理サーバ101は、一定以上のデータサイズになったか否かを判定する(ステップ1823)。
【0304】
具体的には、要求サイズ分のデータ(バリュー)が読み出された、又は、バッファに所定の閾値以上のデータ(バリュー)が読み出されたか、のいずれかに該当するか否かが判定される。いずれかに該当する場合には、一定以上のデータサイズになったと判定される。
【0305】
一定のデータサイズになっていないと判定された場合、管理サーバ101は、ステップ1821に戻り、同様の処理(ステップ1821〜ステップ1823)を実行する。
【0306】
一定のデータサイズになっていると判定された場合、管理サーバ101は、バッファに格納されるデータ(バリュー)をサーバ102に送信する。
【0307】
なお、当該データを受信したサーバ102は、オープンファイル情報161のファイルポインタ1403を更新する。
【0308】
図19は、本発明の実施形態における分散メモリストレージ301に対する書き込み処理を説明するフローチャートである。
【0309】
図18のステップ1801において、アクセス要求が書き込み要求であった場合に、管理サーバ101は、以下の処理を実行する。なお、書き込み要求には、ファイル名が含まれる。
【0310】
管理サーバ101は、書き込み対象のファイル名に基づいてデータの書き込み先のディレクトリを決定する(ステップ1901)。
【0311】
具体的には、以下のような処理が実行される。
【0312】
まず、管理サーバ101は、アクセス要求に含まれる管理サーバ101は、絶対パス名を参照し、当該絶対パス名に含まれるディレクトリ名に基づいて、マウント情報151が格納される仮想ファイルシステム情報1301のリストをたどり、ファイルが配置されるディレクトリを特定する。これによって、当該ディレクトリに対応するディレクトリ管理情報135を特定できる。
【0313】
また、管理サーバ101は、仮想ノード情報1303のオブジェクト管理情報ポインタ1333を参照して、グローバルファイル管理情報132へのポインタを取得する。
【0314】
管理サーバ101は、ディレクトリ管理情報135の配置属性情報1102、及び、グローバルファイル管理情報132に基づいて、エントリ921を追加するローカルファイル管理情報126を配置するサーバ102を決定する。
【0315】
以上の処理によってデータの書き込み先が決定される。
【0316】
次に、管理サーバ101は、ディレクトリ管理情報135に基づいて、書き込み対象となるデータからキー・バリュー型データを生成する(ステップ1902)。
【0317】
具体的には、管理サーバ101は、配置属性情報1102のレコード定義情報1201及びフィールド指定情報1202に基づいて、キー・バリュー型データを生成し、生成されたキー・バリュー型のデータをソートする。
【0318】
管理サーバ101は、書き込み先のサーバ102に対して、ローカルファイル管理情報126に生成されたキー・バリュー型データを追加するように指示する(ステップ1903)。
【0319】
当該指示を受信した各サーバ102は、追加するキー・バリュー型データの数だけエントリを生成し、エントリ921のファイル識別情報931、バリュー識別情報932、及び所属ローカルファイル管理情報ポインタ933に必要な情報を設定する。次に、各サーバ102は、バリューポインタ935に生成されたキー・バリュー型データ(バリュー941)へのポインタを格納する。
【0320】
さらに、サーバ102は、ソート順位に、エントリリスト911にエントリ921を追加する。このとき、エントリリストポインタ904が更新される。なお、ファイルが初めて生成される場合には、エントリリストポインタ903にもポインタが格納される。
【0321】
なお、書き込み時にレコード単位の書き込みが指定されていない場合には、以下のような処理を実行してもよい。
【0322】
まず、管理サーバ101は、配置属性情報1102のレコード定義情報1201に基づいて、バッファからレコード単位のデータを取得する。
【0323】
管理サーバ101は、配置属性情報1102のフィールド指定情報1202に基づいてキーとバリューとを生成し、レコード定義情報1201に基づいてキー・バリュー型のデータをソートする。
【0324】
管理サーバ101は、生成されたキー・バリュー型データに基づいてエントリ921を生成し、生成されたエントリ921をソート順にエントリリスト911に追加する。このとき、管理サーバ101は、どこまで書き込まれたかをサーバ102に通知する。
【0325】
当該通知を受けたサーバ102は、オープンファイル情報161のファイルポインタ1403を更新する。具体的には、書き込まれたデータに対応するポインタがファイルポインタ1403に格納される。これによって、書き込み対象となるファイルのデータがどこまで書き込まれたかを把握できる。
【0326】
管理サーバ101は、一定以上のデータサイズになったか否かを判定する。
【0327】
具体的には、要求サイズ分のデータ(バリュー)が書き込まれた、又は、バッファに所定の閾値以上のデータ(バリュー)が書き込まれたか、のいずれかに該当するか否かが判定される。いずれかに該当する場合には、一定以上のデータサイズになったと判定される。
【0328】
一定のデータサイズになっていないと判定された場合、管理サーバ101は、前述した処理と同様の処理を実行する。
【0329】
一定のデータサイズになっていると判定された場合、管理サーバ101は、バッファに格納されるデータを分散メモリストレージ301に書き込む。
【0330】
なお、レコード単位の書き込みを指定する方法としては、例えば、レコード単位の情報を書き込みための関数を用いる方法、レコード単位の書き込みを指定するフラグ等をアクセス要求に含める方法が考えられる。管理サーバ101は、アクセス要求に用いられる関数、又はアクセス要求に含まれるフラグ等を参照することによって、レコード単位の書き込み処理であるか否かを判定できる。
【0331】
次に、本発明の適用例について図20及び図21を用いて説明する。
【0332】
図20は、本発明の実施形態におけるディレクトリ構造の一例を表す説明図である。
【0333】
図20に示すようにルートディレクトリ「/」以下に階層状に各ディレクトリが配置されている。図20に示すように、記憶装置103に配置されたディレクトリと分散メモリストレージ301に配置されたディレクトリとが含まれる。分散メモリストレージ301上には、ディレクトリ「/W」配下のディレクトリ及びファイルが配置される。
【0334】
サーバ102から、記憶装置103に格納されるファイルを分散メモリストレージ301にコピーするためのコピー要求を受け付けた場合の処理について説明する。なお、コピー要求には、コピー元のファイル名及びコピー先のファイル名が含まれる。また、ローカルアクセスは指定されていないものとする。また、記憶装置103のファイルについてはオープン処理が実行済みであるとする。
【0335】
このとき、管理サーバ101は、サーバ102からコピー要求を受け付けると、分散メモリストレージ301におけるオープン処理(図17A、図17B参照)を実行する。
【0336】
この時点では、分散メモリストレージ301上にファイル名「/W/X/A」のファイルは存在しないため、管理サーバ101は、ディレクトリ「/W/X」配下にファイルを作成するための処理(ステップ1712〜ステップ1713)を実行する。このとき、管理サーバ101は、ディレクトリ「/W/X」に対応するディレクトリ管理情報135に基づいて、エントリの配置方法等を決定する。
【0337】
これによって、サーバ102は、ディレクトリ毎に異なる配置方法、及びキー・バリュー型データの構造を意識する必要はなく、ファイル名を入力することによって自動的にキー・バリュー型データの構造、及びキー・バリュー型データの配置方法等が決定される。
【0338】
さらに、管理サーバ101は、グローバルファイル管理情報132へのポインタを設定し、サーバ102にファイル記述子を返信する(ステップ1707、ステップ1708)。
【0339】
次に、管理サーバ101は、記憶装置103に格納されたファイルのデータを分散メモリストレージ301上に格納するために、書き込み処理を実行する(図19参照)。
【0340】
このとき、管理サーバ101は、ディレクトリ「/W/X」に対応するディレクトリ管理情報135に基づいて、記憶装置103に格納されるファイルのデータからキー・バリュー型データを生成し、決定された配置方法にしたがって各サーバ102に生成されたキー・バリュー型データを送信する。当該キー・バリュー型データを受信したサーバ102は、エントリ921に必要なデータを設定する。
【0341】
図20に示す例では、ディレクトリ「/W/X」の配置方針はメモリ使用量平準化であり、キーにはフィールド1が用いられる。また、キーレンジの指定はされていない。
【0342】
以上の処理によって、記憶装置103から分散メモリストレージ301にファイルがコピーされる。
【0343】
次に、サーバ102からファイル名が「/W/X/A」であるファイルを「/W/Y/Z」配下にコピーためのコピー要求又は移動するための移動要求を受け付けた場合の処理について説明する。なお、コピー要求又は移動要求の何れにも、コピー元のファイル名及びコピー先のファイル名が含まれる。また、「/W/X/A」に対してローカルアクセスは指定されていないものとする。
【0344】
管理サーバ101は、ファイルデータを読み出すためにファイル名が「/W/X/A」のファイルに対してオープン処理を実行する(図17A、図17B参照)。このとき、分散メモリストレージ301にはファイル名が「/W/X/A」であるファイルは存在するため、ステップ1707及びステップ1708の処理が実行される。
【0345】
また、管理サーバ101は、読み出されたエントリ921を書き込むためにファイル名が「/W/Y/Z/B」のファイルに対するオープン処理を実行する(図17A、図17B参照)。この時点では、分散メモリストレージ301上にファイル名「/W/Y/Z」のファイルは存在しないため、管理サーバ101は、ディレクトリ「/W/Y/Z」配下にファイルを作成するための処理(ステップ1712〜ステップ1714)を実行する。このとき、管理サーバ101は、ディレクトリ「/W/Y/Z」に対応するディレクトリ管理情報135に基づいて、エントリの配置方法等を決定する。
【0346】
図20に示す例では、ディレクトリ「/W/Y/Z」の配置方針はキーレンジ指定であり、キーにはフィールド2が用いられる。また、キーレンジは0−40、41−70、71−99が指定されている。図3に示すような分散メモリストレージ301の場合、フィールド2の値が「0−40」のキー・バリュー型データがサーバ1(102A)に格納され、フィールド2の値が「41−70」のキー・バリュー型データがサーバ2(102B)に格納され、フィールド2の値が「71−99」のキー・バリュー型データがサーバ3(102C)に格納される。
【0347】
これによって、AP123は、ディレクトリ毎に異なる配置方法及びキー・バリュー型データの構造を意識する必要はなく、ファイル名を入力することによって自動的にキー・バリュー型データの構造、及びキー・バリュー型データの配置方法等が決定される。
【0348】
管理サーバ101は、オープン処理が終了すると、次に、ファイル名が「/W/X/A」であるファイルのファイルデータを読み出すために読み出し処理を実行する(図18参照)。さらに、管理サーバ101は、読み出されたデータをファイル名が「/W/Y/Z/B」のファイルに書き込むための書き込み処理を実行する(図19参照)。
【0349】
このとき、ステップ1903において、ディレクトリ「/W/Y/Z」に対応するディレクトリ管理情報135に基づいて、ディレクトリ「/W/X/A」配下のキー・バリュー型データからディレクトリ「/W/Y/Z」配下のキー・バリュー型データ(エントリ921)が生成される。さらに、ディレクトリ「/W/Y/Z」に対応するディレクトリ管理情報135に基づいて、生成されたキー・バリュー型データ(エントリ921)が分散メモリストレージ301上に配置される。
【0350】
図21は、本発明の実施形態におけるディレクトリ間のファイルのデータをコピーした場合のキー・バリュー型データの配置例を示す説明図である。
【0351】
ファイル2001−1は、図20のファイル名が「/W/X/A」のファイルを表す。
【0352】
ディレクトリ「/W/X/」の配置方針はメモリ使用量平準化であるため、ファイル2001−1を構成するキー・バリュー型データ2011−1〜2011−6は、各サーバ102に均等に配置される。
【0353】
ファイル2001−2は、図20のファイル名が「/W/Y/Z/B」のファイルを表す。
【0354】
ディレクトリ「/W/Y/Z」の配置方針はキーレンジ指定であるため、ファイル2001−2を構成するキー・バリュー型データ2021−1〜2021−6は、キーレンジに基づいて各サーバ102に配置される。
【0355】
ここで、ディレクトリ「/W/X」におけるキー・バリュー型データ2011−1は、「/W/X/A」及び「101」からキーが構成され、「101」、「11」及び「abc」がバリューである。また、ディレクトリ「/W/Y/Z」におけるキー・バリュー型データ2021−1は、「/W/Y/Z/B」及び「11」からキーが構成され、「101」、「11」及び「abc」がバリューである。
【0356】
図21に示すように、ファイルをディレクト「/W/X」からディレクトリ「/W/Y/Z」へコピー又は移動させた場合、矢印に示すような関係になる。
【0357】
キー・バリュー型データ2011−1はキー・バリュー型データ2021−1、キー・バリュー型データ2011−2はキー・バリュー型データ2021−5、キー・バリュー型データ2011−3はキー・バリュー型データ2021−4、キー・バリュー型データ2011−4はキー・バリュー型データ2021−6、キー・バリュー型データ2011−5はキー・バリュー型データ2021−3、キー・バリュー型データ2011−6はキー・バリュー型データ2021−2に対応する。
【0358】
以上の処理によって、分散メモリストレージ301上のディレクトリ間においてファイルのコピー又は移動が可能となる。
【0359】
前述のように、サーバ102は、ディレクトリ毎に異なるキー、及びキー・バリュー型データの配置方法等を指定する必要がなくファイル名のみを指定すればよい。すなわち、AP123は、通常のファイルI/Fを用いて分散メモリストレージ301上のファイル操作を実行できる。したがって、キー・バリュー型データの構造に対応したAP123を用いることなく分散メモリストレージ301のデータを操作できる。すなわち、キー・バリュー型データ毎にAP123を作り込む必要がない。
【0360】
図22A、図22B及び図22Cは、本発明の実施形態のおけるサーバ102の入力と、管理サーバ101からの応答との対応を表した説明図である。
【0361】
図22Aは、AP123がファイル名を指定した場合における管理サーバ101の応答を示す図である。
【0362】
図22Aに示すように、AP123から、ファイル名を含む読み出し要求が入力されると、管理サーバ101は、分散メモリストレージ301上の対応する全てのキー・バリュー型データからバリューを読み出して、読み出されたバリューを応答としてサーバ102に送信する。
【0363】
図22Bは、AP123がファイル名と、ローカルアクセスとを指定した場合における管理サーバ101の応答を示す図である。
【0364】
図22Bに示すように、AP123から、ファイル名とローカルアクセス指定とを含む読み出し要求が入力されると、管理サーバ101は、当該サーバ102上のキー・バリュー型データからバリューを読み出し、読み出されたバリューを応答としてサーバ102に送信する。
【0365】
図22Cは、AP123がキーを指定した場合における管理サーバ101の応答を示す図である。
【0366】
図22Cに示すように、AP123から、キーを含む読み出し要求が入力されると、管理サーバ101は、当該キーに対応するバリューを読み出し、読み出されたバリューを応答としてサーバ102に送信する。なお図22Cの処理は、通常のキー・バリュー型データのデータ読み出しと同一の処理である。
【0367】
本発明の一形態によれば、サーバ102のAP123は、ファイルI/Fを用いてキー・バリュー型データ形式のデータベースにアクセスすることができる。したがって、キー毎に異なるアプリケーションを作成する必要がない。また、ローカル指定をすることによって、ファイルデータうち必要なデータのみにアクセスすることが可能となる。
【0368】
なお、本実施形態では、管理サーバ101とサーバ102とはそれぞれが異なる処理を行う装置として説明してきたが、管理サーバ101のメモリ112の一部を分散メモリストレージ301に用いる等、管理サーバ101が、サーバ102が有する機能も含むような構成としてもよい。
【0369】
[変形例1]
本発明は、管理サーバ101が、オープンファイル情報161を備える形態にも適用可能である。この場合、管理サーバ101が、オープンファイル情報161に基づいて、ローカルファイル管理情報132、又は、グローバルファイル管理情報132へのアクセスか否かを判定する。
【0370】
以下、読み出し処理(図18)及び書き込み処理(図19)の差異について説明する。
【0371】
読み出し処理ではステップ1802の処理が異なる。
【0372】
管理サーバ101は、オープンファイル情報161を特定し、特定されたオープンファイル情報161に基づいて、仮想ノード情報1303を特定する。
【0373】
さらに、管理サーバ101は、当該仮想ノード情報1303におけるオブジェクト管理情報ポインタ1333を参照して、ローカルファイル管理情報132、又は、グローバルファイル管理情報132のいずれが読み出されるか判定する。
【0374】
オブジェクト管理情報ポインタ1333に、グローバルファイル管理情報132へのポインタが格納される場合、分散メモリストレージ301に格納される全てのローカルファイル管理情報126が読み出し対象となる。一方、オブジェクト管理情報ポインタ1333に、ローカルファイル管理情報126へのポインタが格納される場合、分散メモリストレージ301を構成する一つのサーバ102のローカルファイル管理情報126が読み出し対象となる。
【0375】
オブジェクト管理情報ポインタ1333に、グローバルファイル管理情報132へのポインタが格納される場合は図18と同一の処理となる。
【0376】
一方、オブジェクト管理情報ポインタ1333に、ローカルファイル管理情報126へのポインタが格納される場合、管理サーバ101は、読み出し要求を送信したサーバ102自身のローカルファイル管理情報126を読み出し対象とする。
【0377】
他の処理は同一である。
【0378】
読み出し処理ではステップ1901の処理が異なる。
【0379】
管理サーバ101は、オープンファイル情報161を特定し、特定されたオープンファイル情報161に基づいて、仮想ノード情報1303を特定する。
【0380】
次に、管理サーバ101は、特定されたに基づいて、仮想ノード情報1303を特定する。さらに、管理サーバ101は、特定された仮想ノード情報1303の所属VFSポインタ1331を参照して、図13に示すような関係をたどることによってファイルが配置されるディレクトリを特定する。これによって、当該ディレクトリに対応するディレクトリ管理情報135を特定できる。
【0381】
さらに、管理サーバ101は、特定された仮想ノード情報1303のオブジェクト管理情報ポインタ1333を参照して、書き込み先を特定する。
【0382】
オブジェクト管理情報ポインタ1333にグローバルファイル管理情報132へのポインタが格納される場合は、図19と同一の処理となる。
【0383】
一方、オブジェクト管理情報ポインタ1333にローカルファイル管理情報126へのポインタが格納される場合、管理サーバ101は、書き込み要求を送信したサーバ102に自身のローカルファイル管理情報132にエントリを生成するように指示する。
【0384】
なお、管理サーバ101は、図19と同一の処理によって取得されたエントリ生成に必要な情報を当該指示と共に送信する。
【0385】
当該指示を受信したサーバ102は、受信した情報にしたがってデータを書き込む。
【0386】
[変形例2]
他の実施形態としては、オープン処理、読み出し処理、及び書き込み処理などのファイルに対する処理を専用のライブラリで行う方法が考えられる。すなわち、オープン処理、読み出し処理、書き込み処理などのファイルに対する処理を実行する関数として、専用のライブラリ関数を用いる。
【0387】
AP123が専用のライブラリ関数を使用した場合、ライブラリでは、まず、分散メモリストレージ301上のファイルに対する操作か否かを判定する。この判定は、例えば、ファイル名として、特定のディレクトリ名を含むように指定されているか否かを判定する方法が考えられる。
【0388】
つまり、第一の実施形態の図17に示したオープン処理において、ステップ1701の判定では、管理サーバ101は、対象ファイルが特定のディレクトリ名を含む場合、分散メモリストレージ301上のファイルであると判定し、ライブラリの中でステップ1702以下の処理を実行する。一方、対象ファイルが特定のディレクトリ名を含まない場合、管理サーバ101は、通常のファイル操作として、従来のオープン関数を実行する。
【0389】
分散メモリストレージ301上のファイルであると判定された場合、管理サーバ101は、オープン関数の戻り値として、前述の通常のオープン関数が返すファイル記述子に相当する値をライブラリ内のファイル記述子として返す。この後のAP123からの読み出し、及び、書き込み要求では、当該ライブラリ内のファイル記述子を指定することによって、図18及び図19と同様の処理が可能になる。
【0390】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【0391】
102 サーバ
103 記憶装置
104 ネットワーク
121 分散メモリストレージ管理部
122 ファイルシステム管理部
123 AP
124 分散メモリストレージアクセス部
125 ファイルシステムアクセス部
126 ローカルファイル管理情報
130 対象仮想ファイルシステム情報
131 キー・バリュー型データ管理部
132 グローバルファイル管理情報
133 分散メモリストレージ構成情報
134 分散メモリストレージ管理情報
135 ディレクトリ管理情報
141 ファイルシステム名前空間アクセス部
142 ファイルアクセス部
143 ディレクトリ属性管理部
144 ディレクトリ管理情報
151 マウント情報
152 オープンファイル情報
301 分散メモリストレージ
302 キー・バリュー型データ

【特許請求の範囲】
【請求項1】
第1のプロセッサ、前記第1のプロセッサに接続される第1のメモリ、及び前記第1のプロセッサに接続される第1のネットワークインタフェースを備え、データを格納する複数の計算機と、第2のプロセッサ、前記第2のプロセッサに接続される第2のメモリ、及び前記第2のプロセッサに接続される第2のネットワークインタフェースを備え、前記各計算機上に格納されるデータを管理する管理計算機と、を備える計算機システムであって、
前記計算機システムは、前記複数の計算機が備える記憶領域を統合して生成されたストレージを備え、
前記ストレージは、複数のファイルデータを含むファイルを分割して、検索キー及び前記ファイルデータから構成される分割データを、当該ストレージを構成する前記記憶領域に分散して格納し、
前記管理計算機は、
前記ストレージに対するアクセスを制御するアクセス管理部、及び、前記ストレージを管理するストレージ管理部を備え、
前記ストレージを構成する記憶領域の情報を含むストレージ構成情報、及び、前記ストレージに格納される前記分割データの配置に関する情報を含むファイル管理情報を格納し、
前記ストレージ管理部は、
前記ストレージに格納される前記分割データに対応する前記ファイル及び前記ファイルが格納されるファイルシステムを識別するための情報を含むファイル識別情報、並びに、前記ファイルシステムが構築される前記ストレージにおける前記分割データの配置方法を定義する配置定義情報を含むファイルシステム管理情報を格納し、
前記各計算機は、
ファイルデータ単位のデータを処理するアプリケーション前記ストレージにアクセスするデータアクセス管理部を備え、
前記管理計算機は、
少なくとも一つの前記アプリケーションから任意のファイルの前記ファイル識別情報を含むファイル生成要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて、前記任意のファイルの格納先である前記ファイルシステムを特定し、前記特定されたファイルシステムに対応する前記ファイルシステム管理情報を検索し、
前記検索されたファイルシステム管理情報に、前記任意のファイルのファイル識別情報を登録し、
前記ストレージ構成情報、及び、前記検索されたファイルシステム管理情報を参照して、前記ストレージを構成する記憶領域への前記任意のファイルの前記ファイルデータから生成される前記分割データの配置方法を決定し、
前記決定された配置方法に基づいて、前記ファイル管理情報を生成し、
少なくとも一つの前記アプリケーションから前記任意のファイルのファイル識別情報を含むアクセス要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて前記ファイル管理情報を参照して、前記任意のファイルの前記分割データを格納する前記複数の計算機を特定し、
前記特定された複数の計算機に格納された前記任意のファイルの分割データへアクセスするためのポインタを設定することを特徴とする計算機システム。
【請求項2】
前記各計算機は、当該計算機が備え、前記ストレージを構成する記憶領域に格納される前記分割データを管理する分割データ管理情報を格納し、
前記管理計算機は、
前記ストレージを構成する記憶領域への前記任意のファイルの分割データの配置方法を決定した後に、前記決定された配置方法に基づいて前記分割データ管理情報を生成し、
前記ファイルシステム管理情報に、前記生成された分割データ管理情報へアクセスするためのポインタを格納し、
前記決定された配置方法に基づいて、前記生成された分割データ管理情報を前記各計算機に送信することを特徴とする請求項1に記載の計算機システム。
【請求項3】
前記ストレージ上には階層的なディレクトリ構造のファイルシステムが構築され、前記管理計算機は、前記ディレクトリ毎の前記ファイルシステム管理情報を格納し、
前記ファイルシステム管理情報は、さらに、前記ファイルシステムに格納される前記分割データにおける前記検索キー及び前記ファイルデータの構造を定義する分割データ定義情報を含み、
前記分割データ定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データにおける、前記検索キー及び前記ファイルデータの構造を定義する情報を含み、
前記配置定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データの配置方法に関する情報を含むことを特徴とする請求項2に記載の計算機システム。
【請求項4】
前記管理計算機は、
少なくとも一つの前記アプリケーションから第1ファイルの前記ファイル識別情報を含むファイルデータの書き込み要求を受信した場合に、前記第1ファイルのファイル識別情報に基づいて前記第1ファイルの前記ファイルデータが書き込まれる前記ディレクトリを特定し、
前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記第1ファイルのファイルデータから生成される第1分割データを配置する前記複数の計算機を決定し、
前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記特定されたディレクトリ配下に書き込まれる前記第1ファイルのファイルデータから前記第1分割データを生成し、
前記決定された複数の計算機に、前記生成された第1分割データを送信し、
前記各計算機は、前記第1分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第1分割データを格納し、前記分割データ管理情報に前記格納された第1分割データへアクセスするためのポインタを格納することを特徴とする請求項3に記載の計算機システム。
【請求項5】
少なくとも一つの前記アプリケーションから送信される前記第1ファイルのファイル識別情報を含むファイルデータの書き込み要求には、特定の前記分割データ管理情報への書き込みを指定する情報が含まれ、
前記管理計算機は、
前記特定の分割データ管理情報への書き込みを指定する情報が含まれる前記ファイルデータの書き込み要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定し、
前記特定された計算機に対して前記生成された第1分割データを送信することを特徴とする請求項4に記載の計算機システム。
【請求項6】
前記管理計算機は、
少なくとも一つの前記アプリケーションから第1ファイルの前記ファイル識別情報を含むファイルデータの読み出し要求を受信した場合に、前記第1ファイルのファイル識別情報に基づいて前記第1ファイルの前記ファイルデータを読み出す前記一以上の計算機を特定し、
前記特定された一以上の計算機に、前記第1ファイルのファイルデータから生成された第1分割データの読み出し要求を送信し、
前記各計算機は、
前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記第1分割データを検索し、
検索された前記第1分割データから取得された前記第1ファイルのファイルデータを前記管理計算機に送信し、
前記管理計算機は、前記一以上の計算機から受信した前記第1ファイルのファイルデータを前記ファイルデータの読み出し要求を送信した前記アプリケーションに送信することを特徴とする請求項3に記載の計算機システム。
【請求項7】
少なくとも一つの前記アプリケーションから送信される前記第1ファイルのファイル識別情報を含むファイルデータの読み出し要求には、特定の前記分割データ管理情報への読み出しを指定する情報が含まれ、
前記管理計算機は、
前記特定の分割データ管理情報への読み出しを指定する情報が含まれる前記ファイルデータの読み出し要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定し、
前記特定された計算機に対して前記第1ファイルの前記第1分割データの読み出し要求を送信することを特徴とする請求項6に記載の計算機システム。
【請求項8】
前記ファイルシステムは、第1ディレクトリと第2ディレクトリとを含み、
前記第1ディレクトリには第2ファイルが格納され、
前記ストレージには前記第2ファイルから生成された第2分割データが格納され、
前記管理計算機は、
少なくとも一つの前記アプリケーションから前記第2ファイルの前記ファイル識別情報を含み、前記第2ファイルを前記第2ディレクトリにコピーするためのコピー要求を受信した場合に、前記第2ファイルのファイル識別情報に基づいて、前記第2ファイルの前記ファイルデータを読み出す前記複数の計算機を特定し、
前記特定された複数の計算機に、前記第2ファイルの前記第2分割データの読み出し要求を送信し、
前記各計算機は、
前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記検索キーに基づいて前記第2分割データを検索し、
検索された前記第2分割データから取得された前記第2ファイルのファイルデータを前記管理計算機に送信し、
前記管理計算機は、
前記第2ファイルのファイルデータが読み出された後に、前記第2ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記第2ファイルのファイルデータから第3分割データを生成し、
前記第2ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記生成された第3分割データを配置する前記複数の計算機を決定し、
前記決定された複数の計算機に、前記生成された第3分割データを送信し、
前記各計算機は、前記第3分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第3分割データを格納し、前記分割データ管理情報に前記格納された第3分割データへアクセスするためのポインタを格納することを特徴とする請求項3に記載の計算機システム。
【請求項9】
第1のプロセッサ、前記第1のプロセッサに接続される第1のメモリ、及び前記第1のプロセッサに接続される第1のネットワークインタフェースを備え、データを格納する複数の計算機と、第2のプロセッサ、前記第2のプロセッサに接続される第2のメモリ、及び前記第2のプロセッサに接続される第2のネットワークインタフェースを備え、前記各計算機上に格納されるデータを管理する管理計算機と、を備える計算機システムにおけるデータ管理方法であって、
前記計算機システムは、前記複数の計算機が備える記憶領域を統合して生成されたストレージを備え、
前記ストレージは、複数のファイルデータを含むファイルを分割して、検索キー及び前記ファイルデータから構成される分割データを、当該ストレージを構成する前記記憶領域に分散して格納し、
前記管理計算機は、
前記ストレージに対するアクセスを制御するアクセス管理部、及び、前記ストレージを管理するストレージ管理部を備え、
前記ストレージを構成する記憶領域の情報を含むストレージ構成情報、及び、前記ストレージに格納される前記分割データの配置に関する情報を含むファイル管理情報を格納し、
前記ストレージ管理部は、
前記ストレージに格納される前記分割データに対応する前記ファイル及び前記ファイルが格納されるファイルシステムを識別するための情報を含むファイル識別情報、並びに、前記ファイルシステムが構築される前記ストレージにおける前記分割データの配置方法を定義する配置定義情報を含むファイルシステム管理情報を格納し、
前記各計算機は、
ファイルデータ単位のデータを処理するアプリケーション、及び、前記ストレージにアクセスするデータアクセス管理部を備え、
前記方法は、
前記管理計算機が、少なくとも一つの前記アプリケーションから任意のファイルの前記ファイル識別情報を含むファイル生成要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて、前記任意のファイルの格納先である前記ファイルシステムを特定し、前記特定されたファイルシステムに対応する前記ファイルシステム管理情報を検索する第1のステップと、
前記管理計算機が、前記検索されたファイルシステム管理情報に、前記任意のファイルのファイル識別情報を登録する第2のステップと、
前記管理計算機が、前記ストレージ構成情報、及び、前記検索されたファイルシステム管理情報を参照して、前記ストレージを構成する記憶領域への前記任意のファイルの前記ファイルデータから生成される前記分割データの配置方法を決定する第3のステップと、
前記管理計算機が、前記決定された配置方法に基づいて、前記ファイル管理情報を生成する第4のステップと、
前記管理計算機が、少なくとも一つの前記アプリケーションから前記任意のファイルのファイル識別情報を含むアクセス要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて前記ファイル管理情報を参照して、前記任意のファイルの前記分割データを格納する前記複数の計算機を特定する第5のステップと、
前記管理計算機が、前記特定された複数の計算機に格納された前記任意ファイルに対応する分割データへアクセスするためのポインタを設定する第6のステップと、を含むことを特徴とするデータ管理方法。
【請求項10】
前記各計算機は、当該計算機が備え、前記ストレージを構成する記憶領域に格納される前記分割データを管理する分割データ管理情報を格納し、
前記第4のステップは、前記決定された配置方法に基づいて前記分割データ管理情報を生成するステップと、
前記ファイルシステム管理情報に、前記生成された分割データ管理情報へアクセスするためのポインタを格納するステップと、
前記決定された配置方法に基づいて、前記生成された分割データ管理情報を前記各計算機に送信するステップと、を含むことを特手様とする請求項9に記載のデータ管理方法。
【請求項11】
前記ストレージ上には階層的なディレクトリ構造のファイルシステムが構築され、前記管理計算機は、前記ディレクトリ毎の前記ファイルシステム管理情報を格納し、
前記ファイルシステム管理情報は、さらに、前記ファイルシステムに格納される前記分割データにおける前記検索キー及び前記ファイルデータの構造を定義する分割データ定義情報を含み、
前記分割データ定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データにおける、前記検索キー及び前記ファイルデータの構造を定義する情報を含み、
前記配置定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データの配置方法に関する情報を含むことを特徴とする請求項10に記載のデータ管理方法。
【請求項12】
前記方法は、さらに、
前記管理計算機が、少なくとも一つの前記アプリケーションから第1ファイルの前記ファイル識別情報を含むファイルデータの書き込み要求を受信した場合に、前記第1ファイルのファイル識別情報に基づいて前記第1ファイルデータの前記ファイルデータが書き込まれる前記ディレクトリを特定する第7のステップと、
前記管理計算機が、前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記第1のファイルのファイルデータから生成される第1分割データを配置する前記複数の計算機を決定する第8のステップと、
前記管理計算機が、前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記特定されたディレクトリ配下に書き込まれる前記第1ファイルのファイルデータから前記第1分割データを生成する第9のステップと、
前記管理計算機が、前記決定された複数の計算機に、前記生成された第1分割データを送信する第10のステップと、
前記各計算機が、前記第1分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第1分割データを格納し、前記分割データ管理情報に前記格納された第1分割データへアクセスするためのポインタを格納する第11のステップと、を含むことを特徴とする請求項11に記載のデータ管理方法。
【請求項13】
少なくとも一つの前記アプリケーションから送信される前記第1ファイルのファイル識別情報を含むファイルデータの書き込み要求には、特定の前記分割データ管理情報への書き込みを指定する情報が含まれ、
前記第8のステップは、前記特定の分割データ管理情報への書き込みを指定する情報が含まれる前記ファイルデータの書き込み要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定するステップを含み、
前記第10のステップは、前記特定された計算機に対して前記生成された第1分割データを送信するステップを含むことを特徴とする請求項12に記載のデータ管理方法。
【請求項14】
前記方法は、さらに、
前記管理計算機が、少なくとも一つの前記アプリケーションから第1ファイルの前記ファイル識別情報を含むファイルデータの読み出し要求を受信した場合に、前記第1ファイルのファイル識別情報に基づいて前記第1ファイルの前記ファイルデータを読み出す前記一以上の計算機を特定する第12のステップと、
前記管理計算機が、前記特定された一以上の計算機に、前記第1ファイルのファイルデータから生成された第1分割データの読み出し要求を送信する第13のステップと、
前記各計算機が、前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記第1分割データを検索する第14のステップと、
前記各計算機が、検索された前記第1分割データから取得された前記第1ファイルのファイルデータを前記管理計算機に送信する第15のステップと、
前記管理計算機が、前記一以上の計算機から受信した前記第1ファイルのファイルデータを前記ファイルデータの読み出し要求を送信した前記アプリケーションに送信する第16のステップと、を含むことを特徴とする請求項11に記載のデータ管理方法。
【請求項15】
少なくとも一つの前記アプリケーションから送信される前記第1ファイルのファイル識別情報を含むファイルデータの読み出し要求には、特定の前記分割データ管理情報への読み出しを指定する情報が含まれ、
前記第15のステップは、前記特定の分割データ管理情報への読み出しを指定する情報が含まれる前記ファイルデータの読み出し要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定するステップと、
前記特定された計算機に対して前記第1ファイルの前記第1分割データの読み出し要求を送信するステップと、を含むことを特徴とする請求項14に記載のデータ管理方法。
【請求項16】
前記ファイルシステムは、第1ディレクトリと第2ディレクトリとを含み、
前記第1ディレクトリには第2ファイルが格納され、
前記ストレージには前記第2ファイルから生成された第2分割データが格納され、
前記方法は、さらに、
前記管理計算機が、少なくとも一つの前記アプリケーションから前記第2ファイルの前記ファイル識別情報を含み、前記第2ファイルを前記第2ディレクトリにコピーするためのコピー要求を受信した場合に、前記第2ファイルのファイル識別情報に基づいて、前記第2ファイルの前記ファイルデータを読み出す前記複数の計算機を特定する第17のステップと、
前記管理計算機が、前記特定された複数の計算機に、前記第2ファイルの前記第2分割データの読み出し要求を送信する第18のステップと、
前記各計算機が、前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記検索キーに基づいて前記第2分割データを検索する第19のステップと、
前記各計算機が、検索された前記第2分割データから取得された前記第2ファイルのファイルデータを前記管理計算機に送信する第20のステップと、
前記管理計算機が、前記第2ファイルのファイルデータが読み出された後に、前記第2ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記第2ファイルのファイルデータから第3分割データを生成する第21のステップと、
前記管理計算機が、前記第2ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記生成された第3分割データを配置する前記複数の計算機を決定する第22のステップと、
前記管理計算機が、前記決定された複数の計算機に、前記生成された第3分割データを送信する第23のステップと、
前記各計算機が、前記第3分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第3分割データを格納し、前記分割データ管理情報に前記格納された第3分割データへアクセスするためのポインタを格納する第24のステップと、を含むことを特徴とする請求項11に記載のデータ管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17A】
image rotate

【図17B】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22A】
image rotate

【図22B】
image rotate

【図22C】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2012−174096(P2012−174096A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−36880(P2011−36880)
【出願日】平成23年2月23日(2011.2.23)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】