(57)【特許請求の範囲】
【請求項１】
第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、及び前記第１のプロセッサに接続される第１のネットワークインタフェースを備え、データを格納する複数の計算機と、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、及び前記第２のプロセッサに接続される第２のネットワークインタフェースを備え、前記各計算機上に格納されるデータを管理する管理計算機と、を備える計算機システムであって、
前記計算機システムは、前記複数の計算機が備える記憶領域を統合して生成されたストレージを備え、
前記ストレージは、複数のファイルデータを含むファイルを分割して、検索キー及び前記ファイルデータから構成される分割データを、当該ストレージを構成する前記記憶領域に分散して格納し、
前記管理計算機は、
前記ファイルの識別子に基づく前記ファイルに対するアクセスを制御するアクセス管理部、及び、前記検索キーに基づく前記分割データに対するアクセスを制御するストレージ管理部を備え、
前記ストレージを構成する記憶領域の情報を含むストレージ構成情報、及び、前記ストレージに格納される前記分割データの配置に関する情報を含むファイル管理情報を格納し、
前記ストレージ管理部は、
前記ストレージに格納される前記分割データに対応する前記ファイル及び前記ファイルが格納されるファイルシステムを識別するための情報を含むファイル識別情報、並びに、前記ファイルシステムが構築される前記ストレージにおける前記分割データの配置方法を定義する配置定義情報を含むファイルシステム管理情報を格納し、
前記各計算機は、
ファイルデータ単位のデータを処理するアプリケーション、及び前記ストレージにアクセスするデータアクセス管理部を備え、
当該計算機が備え、前記ストレージを構成する記憶領域に格納される前記分割データを管理する分割データ管理情報を格納し、
前記管理計算機は、
少なくとも一つの前記アプリケーションから、任意のファイルの前記ファイル識別情報を含み、前記ストレージ上に前記任意のファイルの生成を指示するファイル生成要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて、前記任意のファイルの格納先である前記ファイルシステムを特定し、前記特定されたファイルシステムに対応する前記ファイルシステム管理情報を検索し、
前記検索されたファイルシステム管理情報に、前記任意のファイルのファイル識別情報を登録し、
前記ストレージ構成情報、及び、前記検索されたファイルシステム管理情報を参照して、前記ストレージを構成する記憶領域への前記任意のファイルの前記ファイルデータから生成される前記分割データの配置方法を決定し、
前記決定された配置方法に基づいて、前記分割データ管理情報、及び、前記生成された分割データ管理情報へアクセスするためのポインタが格納される前記ファイル管理情報を生成し、
前記決定された配置方法に基づいて、前記生成された分割データ管理情報を前記各計算機に送信し、
少なくとも一つの前記アプリケーションから前記任意のファイルのファイル識別情報を含むアクセス要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて前記ファイルシステム管理情報を参照して、前記ストレージに前記任意のファイルの前記分割データが格納されるか否かを判定し、
前記ストレージに前記任意のファイルの分割データが格納される場合に、前記任意のファイルの分割データへのアクセス時に参照する前記ファイル管理情報へアクセスするためのポインタを取得することを特徴とする計算機システム。
【請求項２】
前記ストレージ上には階層的なディレクトリ構造のファイルシステムが構築され、前記管理計算機は、前記ディレクトリ毎の前記ファイルシステム管理情報を格納し、
前記ファイルシステム管理情報は、さらに、前記ファイルシステムに格納される前記分割データにおける前記検索キー及び前記ファイルデータの構造を定義する分割データ定義情報を含み、
前記分割データ定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データにおける、前記検索キー及び前記ファイルデータの構造を定義する情報を含み、
前記配置定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データの配置方法に関する情報を含むことを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記管理計算機は、
少なくとも一つの前記アプリケーションから第１ファイルの前記ファイル識別情報を含むファイルデータの書き込み要求を受信した場合に、前記第１ファイルのファイル識別情報に基づいて前記第１ファイルの前記ファイルデータが書き込まれる前記ディレクトリを特定し、
前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記第１ファイルのファイルデータから生成される第１分割データを配置する前記複数の計算機を決定し、
前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記特定されたディレクトリ配下に書き込まれる前記第１ファイルのファイルデータから前記第１分割データを生成し、
前記決定された複数の計算機に、前記生成された第１分割データを送信し、
前記各計算機は、前記第１分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第１分割データを格納し、前記分割データ管理情報に前記格納された第１分割データへアクセスするためのポインタを格納することを特徴とする請求項２に記載の計算機システム。
【請求項４】
少なくとも一つの前記アプリケーションから送信される前記第１ファイルのファイル識別情報を含むファイルデータの書き込み要求には、特定の前記分割データ管理情報への書き込みを指定する情報が含まれ、
前記管理計算機は、
前記特定の分割データ管理情報への書き込みを指定する情報が含まれる前記ファイルデータの書き込み要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定し、
前記特定された計算機に対して前記生成された第１分割データを送信することを特徴とする請求項３に記載の計算機システム。
【請求項５】
前記管理計算機は、
少なくとも一つの前記アプリケーションから第１ファイルの前記ファイル識別情報を含むファイルデータの読み出し要求を受信した場合に、前記第１ファイルのファイル識別情報に基づいて前記第１ファイルの前記ファイルデータを読み出す前記一以上の計算機を特定し、
前記特定された一以上の計算機に、前記第１ファイルのファイルデータから生成された第１分割データの読み出し要求を送信し、
前記各計算機は、
前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記第１分割データを検索し、
検索された前記第１分割データから取得された前記第１ファイルのファイルデータを前記管理計算機に送信し、
前記管理計算機は、前記一以上の計算機から受信した前記第１ファイルのファイルデータを前記ファイルデータの読み出し要求を送信した前記アプリケーションに送信することを特徴とする請求項２に記載の計算機システム。
【請求項６】
少なくとも一つの前記アプリケーションから送信される前記第１ファイルのファイル識別情報を含むファイルデータの読み出し要求には、特定の前記分割データ管理情報への読み出しを指定する情報が含まれ、
前記管理計算機は、
前記特定の分割データ管理情報への読み出しを指定する情報が含まれる前記ファイルデータの読み出し要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定し、
前記特定された計算機に対して前記第１ファイルの前記第１分割データの読み出し要求を送信することを特徴とする請求項５に記載の計算機システム。
【請求項７】
前記ファイルシステムは、第１ディレクトリと第２ディレクトリとを含み、
前記第１ディレクトリには第２ファイルが格納され、
前記ストレージには前記第２ファイルから生成された第２分割データが格納され、
前記管理計算機は、
少なくとも一つの前記アプリケーションから前記第２ファイルの前記ファイル識別情報を含み、前記第２ファイルを前記第２ディレクトリにコピーするためのコピー要求を受信した場合に、前記第２ファイルのファイル識別情報に基づいて、前記第２ファイルの前記ファイルデータを読み出す前記複数の計算機を特定し、
前記特定された複数の計算機に、前記第２ファイルの前記第２分割データの読み出し要求を送信し、
前記各計算機は、
前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記検索キーに基づいて前記第２分割データを検索し、
検索された前記第２分割データから取得された前記第２ファイルのファイルデータを前記管理計算機に送信し、
前記管理計算機は、
前記第２ファイルのファイルデータが読み出された後に、前記第２ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記第２ファイルのファイルデータから第３分割データを生成し、
前記第２ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記生成された第３分割データを配置する前記複数の計算機を決定し、
前記決定された複数の計算機に、前記生成された第３分割データを送信し、
前記各計算機は、前記第３分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第３分割データを格納し、前記分割データ管理情報に前記格納された第３分割データへアクセスするためのポインタを格納することを特徴とする請求項２に記載の計算機システム。
【請求項８】
第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、及び前記第１のプロセッサに接続される第１のネットワークインタフェースを備え、データを格納する複数の計算機と、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、及び前記第２のプロセッサに接続される第２のネットワークインタフェースを備え、前記各計算機上に格納されるデータを管理する管理計算機と、を備える計算機システムにおけるデータ管理方法であって、
前記計算機システムは、前記複数の計算機が備える記憶領域を統合して生成されたストレージを備え、
前記ストレージは、複数のファイルデータを含むファイルを分割して、検索キー及び前記ファイルデータから構成される分割データを、当該ストレージを構成する前記記憶領域に分散して格納し、
前記管理計算機は、
前記ファイルの識別子に基づく前記ファイルに対するアクセスを制御するアクセス管理部、及び、前記検索キーに基づく前記分割データに対するアクセスを制御するストレージ管理部を備え、
前記ストレージを構成する記憶領域の情報を含むストレージ構成情報、及び、前記ストレージに格納される前記分割データの配置に関する情報を含むファイル管理情報を格納し、
前記ストレージ管理部は、
前記ストレージに格納される前記分割データに対応する前記ファイル及び前記ファイルが格納されるファイルシステムを識別するための情報を含むファイル識別情報、並びに、前記ファイルシステムが構築される前記ストレージにおける前記分割データの配置方法を定義する配置定義情報を含むファイルシステム管理情報を格納し、
前記各計算機は、
ファイルデータ単位のデータを処理するアプリケーション、及び、前記ストレージにアクセスするデータアクセス管理部を備え、
当該計算機が備え、前記ストレージを構成する記憶領域に格納される前記分割データを管理する分割データ管理情報を格納し、
前記方法は、
前記管理計算機が、少なくとも一つの前記アプリケーションから任意のファイルの前記ファイル識別情報を含み、前記ストレージ上に前記任意のファイルの生成を指示するファイル生成要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて、前記任意のファイルの格納先である前記ファイルシステムを特定し、前記特定されたファイルシステムに対応する前記ファイルシステム管理情報を検索する第１のステップと、
前記管理計算機が、前記検索されたファイルシステム管理情報に、前記任意のファイルのファイル識別情報を登録する第２のステップと、
前記管理計算機が、前記ストレージ構成情報、及び、前記検索されたファイルシステム管理情報を参照して、前記ストレージを構成する記憶領域への前記任意のファイルの前記ファイルデータから生成される前記分割データの配置方法を決定する第３のステップと、
前記管理計算機が、前記決定された配置方法に基づいて、前記分割データ管理情報、及び前記生成された分割データ管理情報へアクセスするためのポインタが格納される前記ファイル管理情報を生成する第４のステップと、
前記管理計算機が、前記決定された配置方法に基づいて、前記生成された分割データ管理情報を前記各計算機に送信する第５のステップと、
前記管理計算機が、少なくとも一つの前記アプリケーションから前記任意のファイルのファイル識別情報を含むアクセス要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて前記ファイル管理情報を参照して、前記ストレージに前記任意のファイルの前記分割データが格納されるか否かを判定する第６のステップと、
前記管理計算機が、前記ストレージに前記任意のファイルの前記分割データが格納されると判定された場合、前記任意のファイルの分割データへのアクセス時に参照する前記ファイル管理情報へアクセスするためのポインタを取得する第７のステップと、を含むことを特徴とするデータ管理方法。
【請求項９】
前記ストレージ上には階層的なディレクトリ構造のファイルシステムが構築され、前記管理計算機は、前記ディレクトリ毎の前記ファイルシステム管理情報を格納し、
前記ファイルシステム管理情報は、さらに、前記ファイルシステムに格納される前記分割データにおける前記検索キー及び前記ファイルデータの構造を定義する分割データ定義情報を含み、
前記分割データ定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データにおける、前記検索キー及び前記ファイルデータの構造を定義する情報を含み、
前記配置定義情報は、前記ディレクトリの配下に格納される前記ファイルの前記分割データの配置方法に関する情報を含むことを特徴とする請求項８に記載のデータ管理方法。
【請求項１０】
前記方法は、さらに、
前記管理計算機が、少なくとも一つの前記アプリケーションから第１ファイルの前記ファイル識別情報を含むファイルデータの書き込み要求を受信した場合に、前記第１ファイルのファイル識別情報に基づいて前記第１ファイルの前記ファイルデータが書き込まれる前記ディレクトリを特定する第８のステップと、
前記管理計算機が、前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記第１のファイルのファイルデータから生成される第１分割データを配置する前記複数の計算機を決定する第９のステップと、
前記管理計算機が、前記特定されたディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記特定されたディレクトリ配下に書き込まれる前記第１ファイルのファイルデータから前記第１分割データを生成する第１０のステップと、
前記管理計算機が、前記決定された複数の計算機に、前記生成された第１分割データを送信する第１１のステップと、
前記各計算機が、前記第１分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第１分割データを格納し、前記分割データ管理情報に前記格納された第１分割データへアクセスするためのポインタを格納する第１２のステップと、を含むことを特徴とする請求項９に記載のデータ管理方法。
【請求項１１】
少なくとも一つの前記アプリケーションから送信される前記第１ファイルのファイル識別情報を含むファイルデータの書き込み要求には、特定の前記分割データ管理情報への書き込みを指定する情報が含まれ、
前記第９のステップは、前記特定の分割データ管理情報への書き込みを指定する情報が含まれる前記ファイルデータの書き込み要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定するステップを含み、
前記第１１のステップは、前記特定された計算機に対して前記生成された第１分割データを送信するステップを含むことを特徴とする請求項１０に記載のデータ管理方法。
【請求項１２】
前記方法は、さらに、
前記管理計算機が、少なくとも一つの前記アプリケーションから第１ファイルの前記ファイル識別情報を含むファイルデータの読み出し要求を受信した場合に、前記第１ファイルのファイル識別情報に基づいて前記第１ファイルの前記ファイルデータを読み出す前記一以上の計算機を特定する第１３のステップと、
前記管理計算機が、前記特定された一以上の計算機に、前記第１ファイルのファイルデータから生成された第１分割データの読み出し要求を送信する第１４のステップと、
前記各計算機が、前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記第１分割データを検索する第１５のステップと、
前記各計算機が、検索された前記第１分割データから取得された前記第１ファイルのファイルデータを前記管理計算機に送信する第１６のステップと、
前記管理計算機が、前記一以上の計算機から受信した前記第１ファイルのファイルデータを前記ファイルデータの読み出し要求を送信した前記アプリケーションに送信する第１７のステップと、を含むことを特徴とする請求項９に記載のデータ管理方法。
【請求項１３】
少なくとも一つの前記アプリケーションから送信される前記第１ファイルのファイル識別情報を含むファイルデータの読み出し要求には、特定の前記分割データ管理情報への読み出しを指定する情報が含まれ、
前記第１６のステップは、前記特定の分割データ管理情報への読み出しを指定する情報が含まれる前記ファイルデータの読み出し要求を受信した場合に、前記ファイル管理情報を参照して、前記特定の分割データ管理情報を格納する前記計算機を特定するステップと、
前記特定された計算機に対して前記第１ファイルの前記第１分割データの読み出し要求を送信するステップと、を含むことを特徴とする請求項１２に記載のデータ管理方法。
【請求項１４】
前記ファイルシステムは、第１ディレクトリと第２ディレクトリとを含み、
前記第１ディレクトリには第２ファイルが格納され、
前記ストレージには前記第２ファイルから生成された第２分割データが格納され、
前記方法は、さらに、
前記管理計算機が、少なくとも一つの前記アプリケーションから前記第２ファイルの前記ファイル識別情報を含み、前記第２ファイルを前記第２ディレクトリにコピーするためのコピー要求を受信した場合に、前記第２ファイルのファイル識別情報に基づいて、前記第２ファイルの前記ファイルデータを読み出す前記複数の計算機を特定する第１８のステップと、
前記管理計算機が、前記特定された複数の計算機に、前記第２ファイルの前記第２分割データの読み出し要求を送信する第１９のステップと、
前記各計算機が、前記読み出し要求を受信した場合に、前記分割データ管理情報を参照して、前記検索キーに基づいて前記第２分割データを検索する第２０のステップと、
前記各計算機が、検索された前記第２分割データから取得された前記第２ファイルのファイルデータを前記管理計算機に送信する第２１のステップと、
前記管理計算機が、前記第２ファイルのファイルデータが読み出された後に、前記第２ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記分割データ定義情報を参照して、前記第２ファイルのファイルデータから第３分割データを生成する第２２のステップと、
前記管理計算機が、前記第２ディレクトリに対応する前記ファイルシステム管理情報に含まれる前記配置定義情報を参照して、前記生成された第３分割データを配置する前記複数の計算機を決定する第２３のステップと、
前記管理計算機が、前記決定された複数の計算機に、前記生成された第３分割データを送信する第２４のステップと、
前記各計算機が、前記第３分割データを受信した場合に、当該計算機が備え、前記ストレージを構成する記憶領域に前記受信した第３分割データを格納し、前記分割データ管理情報に前記格納された第３分割データへアクセスするためのポインタを格納する第２５のステップと、を含むことを特徴とする請求項９に記載のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを分散して配置するストレージを備える計算機及びデータ管理方法に関する。
【背景技術】
【０００２】
近年、計算システムにおいてアプリケーションが処理するデータ量が爆発的に増大している。計算機システムが扱うデータ量の増大に伴う処理時間の増加によって、バッチジョブなどの処理が、所定の時間内に完了できないという問題が生じている。したがって、処理の高速化を実現するために、複数のサーバが大量のデータを並列処理することが要求されている。
【０００３】
従来のアプリケーションは、ファイルアクセスＩ／Ｆを用いて、データをファイル形式で処理する。アプリケーション毎に様々なファイルの扱い方が存在する。例えば、メインフレームを用いる基幹業務処理を実行するアプリケーションは、ＣＯＢＯＬ等のプログラム言語を用いて記述される。
【０００４】
図２５は、従来のファイルの構成例を示す説明図である。
【０００５】
ファイル２５００は複数のレコードから構成される。図２５に示す例では、ファイル２５００は、レコード２５０１、レコード２５０２、レコード２５０３及びレコード２５０４を含む。
【０００６】
アプリケーションは、ファイルをレコードの集合として扱い、レコード単位にデータを入出力する。すなわち、レコードはアプリケーションが処理するデータの基本単位となる。
【０００７】
また、一つのレコードは、フィールドと呼ばれる項目から構成される。フィールドには対応するデータが格納される。図２５に示す例では、各レコードには、フィールド２５１１、フィールド２５１２、及びフィールド２５１３が含まれる。
【０００８】
並列処理を実現するためには、データ（ファイル）を複数に分割して、分割されたデータを各サーバのアプリケーションに実行させる方法が考えられる。例えば、ファイルをレコード単位に分割して、各サーバのアプリケーションに実行させる方法が考えられる。
【０００９】
前述した分割方法としては、キーに基づいてデータベースに格納されるデータを分割する分散データベース技術がある（例えば、特許文献１参照）。特許文献１には、キーレンジ（キーの範囲）によってデータベースに格納されるデータをレコード毎に分割し、処理の並列化を実現することが記載されている。
【００１０】
また、メッシュ状又は所定の規則にしたがって大量のデータを分割して、各計算機で並列処理を実行させる技術も知られている（例えば、特許文献２参照）。
【００１１】
一方、処理の高速化を実現するために、複数のサーバが備えるメモリを統合して一以上のメモリ空間を構成し、当該メモリ空間上でデータを処理する分散メモリ技術が知られている（例えば、非特許文献１参照）。
【００１２】
分散メモリ技術では、各サーバにデータを分散して配置することによって並列処理を実現し、さらに、各サーバのメモリ上でデータの入出力が行われるため、処理の高速化が可能となる。
【００１３】
分散メモリ技術では、キー・バリュー型データ形式が採用される。キー・バリュー型データは、データの識別子であるキーと、データの内容を表すバリューとを対応づけたデータ構造であり、［キー、バリュー］の形式でデータが管理される。
【００１４】
分散メモリ技術では、キーレンジ（キーの範囲）に応じてキー・バリュー型データが複数のサーバに配置される。各サーバ上のアプリケーションは、当該サーバに配置されたキー・バリュー型データを処理することによって計算機ステム全体として並列処理を実現し、処理の高速化が図られている。
【００１５】
キー・バリュー型データの実体はオブジェクト指向におけるオブジェクトであるため、キー・バリュー型データに用いられるアプリケーションはオブジェクト指向言語で記述される。例えば、分散メモリ技術において用いられるＡＰＩはＧｅｔ／Ｐｕｔが一般的であり、キーを指定してバリューを獲得し、また、［キー、バリュー］の組を指定してデータを追加する。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開平５−３３４１６５号公報
【特許文献２】特開平７−２１９９０５号公報
【非特許文献】
【００１７】
【非特許文献１】ＧｅｍＳｔｏｎｅ、"ＧｅｍＦｉｒｅ  Ｅｎｔｅｒｐｒｉｓｅ"、［ｏｎｌｉｎｅ］、平成１９年６月、［平成２２年１１月２０日検索］、インターネット＜http://download.gemstone.com/pdf/GemFireEnterprise_Technicalwhitepaper.pdf＞
【非特許文献２】Ｓ．Ｒ．Ｋｌｉｅｍａｎ、"Ｖｎｏｄｅ：Ａｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｍｕｌｔｉｐｌｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ  Ｔｙｐｅｓ  ｉｎ  Ｓｕｎ  ＵＮＩＸ"、昭和６１年、ＵＳＥＮＩＸ  Ｓｕｍｍｅｒ  １９８６  Ｔｅｃｈｎｉｃａｌ  Ｃｏｎｆｅｒｅｎｃｅ, ｐ.２３８−２４７
【発明の概要】
【発明が解決しようとする課題】
【００１８】
前述した分散メモリ技術を適用するためには、ファイルをキー・バリュー型データに分割する必要がある。この場合、レコードに含まれる１つのフィールドをキーとし、レコードに含まれる他のフィールドをバリューとすればよい。
【００１９】
しかし、キー・バリュー型データを用いた分散メモリ技術では、前述したようにファイル形式のデータを処理する従来のアプリケーションをそのまま用いることができない。したがって、キー・バリュー型データ（オブジェクト）に対応したアプリケーションを新規に開発する必要がある。
【００２０】
また、分散メモリ技術では、指定されたフィールドをキーとしてレコードがソートされ、所定のキーレンジでファイルが分割される。このとき、別のフィールドをキーとするアプリケーションがある場合、ソート処理及びファイルの分割処理を改めて実行する必要があり、処理が煩雑化する。
【００２１】
本発明では、前述した問題点を鑑みてなされたものである。すなわち、キー・バリュー型データをファイルシステムの名前空間上で扱えるように対応づけて、さらに、ファイルアクセスＩ／Ｆを用いてキー・バリュー型データの分散配置を行える分散データのデータ管理方法を提供することである。
【課題を解決するための手段】
【００２２】
本発明の代表的な一例を示せば以下の通りである。すなわち、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、及び前記第１のプロセッサに接続される第１のネットワークインタフェースを備え、データを格納する複数の計算機と、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、及び前記第２のプロセッサに接続される第２のネットワークインタフェースを備え、前記各計算機上に格納されるデータを管理する管理計算機と、を備える計算機システムであって、前記計算機システムは、前記複数の計算機が備える記憶領域を統合して生成されたストレージを備え、前記ストレージは、複数のファイルデータを含むファイルを分割して、検索キー及び前記ファイルデータから構成される分割データを、当該ストレージを構成する前記記憶領域に分散して格納し、前記管理計算機は、前記ファイルの識別子に基づく前記ファイルに対するアクセスを制御するアクセス管理部、及び、前記検索キーに基づく前記分割データに対するアクセスを制御するストレージ管理部を備え、前記ストレージを構成する記憶領域の情報を含むストレージ構成情報、及び、前記ストレージに格納される前記分割データの配置に関する情報を含むファイル管理情報を格納し、前記ストレージ管理部は、前記ストレージに格納される前記分割データに対応する前記ファイル及び前記ファイルが格納されるファイルシステムを識別するための情報を含むファイル識別情報、並びに、前記ファイルシステムが構築される前記ストレージにおける前記分割データの配置方法を定義する配置定義情報を含むファイルシステム管理情報を格納し、前記各計算機は、ファイルデータ単位のデータを処理するアプリケーション、及び前記ストレージにアクセスするデータアクセス管理部を備え、当該計算機が備え、前記ストレージを構成する記憶領域に格納される前記分割データを管理する分割データ管理情報を格納し、前記管理計算機は、少なくとも一つの前記アプリケーションから、任意のファイルの前記ファイル識別情報を含み、前記ストレージ上に前記任意のファイルの生成を指示するファイル生成要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて、前記任意のファイルの格納先である前記ファイルシステムを特定し、前記特定されたファイルシステムに対応する前記ファイルシステム管理情報を検索し、前記検索されたファイルシステム管理情報に、前記任意のファイルのファイル識別情報を登録し、前記ストレージ構成情報、及び、前記検索されたファイルシステム管理情報を参照して、前記ストレージを構成する記憶領域への前記任意のファイルの前記ファイルデータから生成される前記分割データの配置方法を決定し、前記決定された配置方法に基づいて、前記分割データ管理情報、及び、前記生成された分割データ管理情報へアクセスするためのポインタが格納される前記ファイル管理情報を生成し、前記決定された配置方法に基づいて、前記生成された分割データ管理情報を前記各計算機に送信し、少なくとも一つの前記アプリケーションから前記任意のファイルのファイル識別情報を含むアクセス要求を受け付けた場合に、前記任意のファイルのファイル識別情報に基づいて前記ファイルシステム管理情報を参照して、前記ストレージに前記任意のファイルの前記分割データが格納されるか否かを判定し、前記ストレージに前記任意のファイルの分割データが格納される場合に、前記任意のファイルの分割データへのアクセス時に参照する前記ファイル管理情報へアクセスするためのポインタを取得することを特徴とする。
【発明の効果】
【００２３】
アプリケーションは、ファイル識別情報を含むアクセス要求に基づいて、各計算機に分散配置されるファイルデータにアクセスすることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態における計算機システムの構成例を示す説明図である。
【図２】本発明の実施形態におけるＡＰのソースプログラムの一例を示す説明図である。
【図３】本発明の実施形態の分散メモリストレージの論理的構成例を示す説明図である。
【図４】本発明の実施形態の分散メモリストレージ管理部及びキー・バリュー型データ管理部の詳細を示す説明図である。
【図５】本発明の実施形態の分散メモリストレージ構成情報の詳細を示す説明図である。
【図６】本発明の実施形態の分散メモリストレージ管理情報の詳細を示す説明図である。
【図７】本発明の実施形態のグローバルファイル管理情報の詳細を示す説明図である。
【図８】本発明の実施形態の管理属性情報の詳細を示す説明図である。
【図９】本発明の実施形態のローカルファイル管理情報の詳細を示す説明図である。
【図１０】本発明の実施形態におけるエントリの論理的な構成例を示す説明図である。
【図１１】本発明の実施形態のディレクトリ管理情報の詳細を示す説明図である。
【図１２】本発明の実施形態の配置属性情報の詳細を示す説明図である。
【図１３】本発明の実施形態のマウント情報の詳細を示す説明図である。
【図１４】本発明の実施形態のオープンファイル情報の詳細を示す説明図である。
【図１５】本発明の実施形態におけるマウント処理を説明するフローチャートである。
【図１６】本発明の実施形態におけるアンマウント処理を説明するフローチャートである。
【図１７Ａ】本発明の実施形態におけるオープン処理を説明するフローチャートである。
【図１７Ｂ】本発明の実施形態におけるオープン処理を説明するフローチャートである。
【図１８】本発明の実施形態における分散メモリストレージに対する読み出し処理を説明するフローチャートである。
【図１９】本発明の実施形態における分散メモリストレージに対する書き込み処理を説明するフローチャートである。
【図２０】本発明の実施形態におけるディレクトリ構造の一例を表す説明図である。
【図２１】本発明の実施形態におけるディレクトリ間のファイルのデータをコピーした場合のキー・バリュー型データの配置例を示す説明図である。
【図２２Ａ】本発明の実施形態のおけるサーバの入力と、管理サーバからの応答との対応を表した説明図である。
【図２２Ｂ】本発明の実施形態のおけるサーバの入力と、管理サーバからの応答との対応を表した説明図である。
【図２２Ｃ】本発明の実施形態のおけるサーバの入力と、管理サーバからの応答との対応を表した説明図である。
【図２３】本発明の実施形態におけるレコード定義情報の詳細を示す説明図である。
【図２４】本発明の実施形態におけるファイル状態情報の一例を示す説明図である。
【図２５】従来のファイルの構成例を示す説明図である。
【発明を実施するための形態】
【００２５】
以下に図面を参照しながら本発明の実施形態を説明する。
【００２６】
図１は、本発明の実施形態における計算機システムの構成例を示す説明図である。
【００２７】
本実施形態の計算機システムは、管理サーバ１０１及び複数のサーバ１０２から構成される。
【００２８】
管理サーバ１０１は、ネットワーク１０４を介して複数のサーバ１０２と接続され、接続される全サーバ１０２を管理する。ネットワーク１０４は、ＷＡＮ、ＬＡＮ、及びＩＰネットワークなどが考えられる。なお、管理サーバ１０１と各サーバ１０２とが直接接続されてもよい。
【００２９】
本実施形態では、各サーバ１０２のメモリ領域を統合して生成された記憶領域から分散メモリストレージが生成される。分散メモリストレージの詳細については図３を用いて後述する。本実施形態の分散メモリストレージには、ファイルのデータが格納される。なお、分散メモリストレージには、キー・バリュー型データとしてファイルのデータが格納される。
【００３０】
また、管理サーバ１０１は、記憶装置１０３と接続される。記憶装置１０３には、処理対象となるファイルが格納される。記憶装置１０３は、ファイルを永続的に保持できるものであればどのようなものでもよい。例えば、ＨＤＤ等の記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置、光ディスク装置等が考えられる。
【００３１】
なお、本実施形態におけるファイルは複数のレコードから構成される。また、レコードは、一以上のフィールドから構成される。
【００３２】
管理サーバ１０１は、プロセッサ１１１、メモリ１１２、及びインタフェース１１３−１、１１３−２を備える。プロセッサ１１１、メモリ１１２、及びインタフェース１１３−１、１１３−２は、内部バス等を用いて接続される。なお、管理サーバ１０１は、情報を入出力するための入出力部等の他の構成を備えてもよい。
【００３３】
プロセッサ１１１は、メモリ１１２上に読み出されたプログラムを実行することによって、管理サーバ１０１が備える機能を実現する。
【００３４】
メモリ１１２は、プロセッサ１１１によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ１１２は、分散メモリストレージ管理部１２１、及びファイルシステム管理部１２２を実現するためのプログラムを格納する。
【００３５】
分散メモリストレージ管理部１２１は、分散メモリストレージを管理する。分散メモリストレージ管理部１２１は、少なくとも、キー・バリュー型データ管理部１３１及びグローバルファイル管理情報１３２を含む。
【００３６】
キー・バリュー型データ管理部１３１は、分散メモリストレージ上に格納されるキー・バリュー型データを管理する。
【００３７】
グローバルファイル管理情報１３２は、ファイルを分割したキー・バリュー型データの分散メモリストレージ３０１上の配置位置の管理情報、すなわち、ローカルファイル管理情報１２６との対応関係に関する情報を格納する。
【００３８】
なお、分散メモリストレージ管理部１２１及びキー・バリュー型データ管理部１３１の詳細な構成については図３を用いて後述する。
【００３９】
ファイルシステム管理部１２２は、記憶装置１０３及び分散メモリストレージ３０１（図３参照）に格納されるファイルと、当該ファイルが格納されるファイルシステムとを管理する。ファイルシステム管理部１２２は、ファイルの名称等のファイルの識別情報に基づいて、ファイルの入出力処理を実行する。
【００４０】
また、ファイルシステム管理部１２２は、マウント情報１５１及びファイル状態情報１５２を含む。
【００４１】
マウント情報１５１は、マウントされるファイルシステム、ディレクトリ及びファイル等の管理情報を格納する。マウント情報１５１の詳細については、図１３を用いて後述する。
【００４２】
ファイル状態情報１５２は、記憶装置１０３及び分散メモリストレージ３０１（図３参照）に格納されたファイルの状態情報を管理する。ファイル状態情報１５２の詳細については、図２４を用いて後述する。
【００４３】
サーバ１０２は、プロセッサ１１４、メモリ１１５、及びインタフェース１１６を備える。プロセッサ１１４、メモリ１１５、及びインタフェース１１６は、内部バス等を用いて接続される。なお、サーバ１０２は、情報を入出力するための入出力部等の他の構成を備えてもよい。
【００４４】
プロセッサ１１４は、メモリ１１５上に読み出されたプログラムを実行することによって、サーバ１０２が備える機能を実現する。
【００４５】
メモリ１１５は、プロセッサ１１４によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ１１５は、ＡＰ１２３、分散メモリストレージアクセス部１２４、及びファイルシステムアクセス部１２５を実現するためのプログラム格納し、また、ローカルファイル管理情報１２６を格納する。
【００４６】
ＡＰ１２３は、記憶装置１０３及び分散メモリストレージ３０１（図３参照）に格納されるファイルにアクセスするためのアプリケーションである。本実施形態のアプリケーションは、ＣＯＢＯＬ言語を用いて記述される。なお、本発明のＣＯＢＯＬ言語を用いて記述されたアプリケーションに限定されない。すなわち、通常の入出力を要求するプログラムであればどのようなものであってもよい。
【００４７】
図２は、本発明の実施形態におけるＡＰ１２３のソースプログラムの一例を示す説明図である。
【００４８】
図２では、ＣＯＢＯＬ言語を用いたソースプログラム２０１を示す。ソースプログラム２０１に含まれるＤＡＴＡ  ＤＩＶＩＳＩＯＮのＦＩＬＥ  ＳＥＣＴＩＯＮ２０２には、ファイル構造の定義が記述される。具体的には、アプリケーションが処理するファイルは、一つのファイルは記述項（ＦＤ）と、一つ以上のレコード記述項とによって定義される。
【００４９】
図１の説明に戻る。
【００５０】
分散メモリストレージアクセス部１２４は、分散メモリストレージ３０１（図３参照）に対するアクセスを制御する。ファイルシステムアクセス部１２５は、ファイルシステムに対するアクセスを制御し、また、オープンファイル情報１６１を含む。
【００５１】
オープンファイル情報１６１は、記憶装置１０３及び分散メモリストレージ３０１（図３参照）に格納されたファイルのうち、オープン処理が実行されたファイルに関する情報を格納する。サーバ１０２は、オープンファイル情報１６１を参照することによって、アクセス可能なファイルを特定できる。オープンファイル情報１６１の詳細については、図１４を用いて後述する。
【００５２】
本実施形態では、ＡＰ１２３は、ファイルシステムアクセス部１２５を介して記憶装置１０３又は分散メモリストレージに格納されるファイルにアクセスする。
【００５３】
ローカルファイル管理情報１２６は、分散メモリストレージ３０１（図３参照）を構成する記憶領域に格納されるキー・バリュー型データに関する情報を格納する。すなわち、サーバ１０２自身が保持するキー・バリュー型データの管理情報が格納される。
【００５４】
なお、プログラムによって実現された構成は、ハードウェアを用いて実現してもよい。
【００５５】
図３は、本発明の実施形態の分散メモリストレージの論理的構成例を示す説明図である。
【００５６】
図３では、サーバ１（１０２Ａ）、サーバ２（１０２Ｂ）及びサーバ３（１０２Ｃ）のメモリ領域を統合した分散メモリストレージ３０１を示す。
【００５７】
分散メモリストレージ３０１は、複数のキー・バリュー型データ３０２を格納する。キー・バリュー型データ３０２は、キーとバリューとを一つの組としたデータ構造のデータである。なお、以下では、一つのキー・バリュー型データ３０２をエントリとも記載する。
【００５８】
なお、サーバ１（１０２Ａ）、サーバ２（１０２Ｂ）及びサーバ３（１０２Ｃ）のメモリ領域を統合して、複数の分散メモリストレージ３０１を生成してもよい。この場合、それぞれの分散メモリストレージ３０１には、異なるキー・バリュー型データを格納することができる。
【００５９】
また、サーバ１（１０２Ａ）及びサーバ２（１０２Ｂ）のメモリ領域、又は、サーバ２（１０２Ｂ）及びサーバ３（１０２Ｃ）のメモリ領域を統合して、それぞれのメモリ領域に分散メモリストレージ３０１を生成してもよい。
【００６０】
本実施形態では、分散メモリストレージ３０１を用いて例を説明するが、他の記憶装置を複数使用して同様のストレージを構成してもよい。
【００６１】
図４は、本発明の実施形態の分散メモリストレージ管理部１２１及びキー・バリュー型データ管理部１３１の詳細を示す説明図である。
【００６２】
キー・バリュー型データ管理部１３１は、ファイルシステム名前空間アクセス部１４１、ファイルアクセス部１４２、及びディレクトリ属性管理部１４３を含む。
【００６３】
ファイルシステム名前空間アクセス部１４１は、ファイルシステムのマウント処理及びアンマウント処理を実行する。マウント処理及びアンマウント処理の詳細については、図１５及び図１６を用いて後述する。
【００６４】
ファイルアクセス部１４２は、分散メモリストレージ３０１上に格納されるキー・バリュー型データ３０２に対して、ファイル単位のアクセスを実行する。
【００６５】
ディレクトリ属性管理部１４３は、ディレクトリ及びファイルの属性に関する処理を実行する。
【００６６】
分散メモリストレージ管理部１２１は、分散メモリストレージ３０１の管理情報として、グローバルファイル管理情報１３２、分散メモリストレージ構成情報１３３、分散メモリストレージ管理情報１３４、及びディレクトリ管理情報１３５を格納する。
【００６７】
分散メモリストレージ構成情報１３３は、分散メモリストレージ３０１と各サーバ１０２のメモリ領域との対応関係を表す情報を格納する。分散メモリストレージ構成情報１３３の詳細については図５を用いて後述する。
【００６８】
分散メモリストレージ管理情報１３４は、分散メモリストレージ３０１の使用状態に関する情報を格納する。分散メモリストレージ管理情報１３４の詳細については、図６を用いて後述する。
【００６９】
グローバルファイル管理情報１３２は、ローカルファイル管理情報１２６との対応関係に関する情報を格納する。グローバルファイル管理情報１３２の詳細については、図７を用いて後述する。
【００７０】
キー・バリュー型データを用いて分散メモリ技術では、分散メモリストレージ３０１を構成する各サーバ１０２のメモリ領域にキー・バリュー型データが配置される。そのため、管理サーバ１０１は、グローバルファイル管理情報１３２に基づいて、キー・バリュー型データがどのメモリ領域に、すなわち、どのサーバ１０２に配置されているかを把握できる。
【００７１】
なお、グローバルファイル管理情報１３２の詳細については、図７を用いて後述する。
【００７２】
ディレクトリ管理情報１３５は、所定のディレクトリ配下に格納するレコードの分散方法等の定義情報を格納する。ディレクトリ管理情報１３５の詳細については、図１１を用いて後述する。
【００７３】
以下、各情報について説明する。
【００７４】
図５は、本発明の実施形態の分散メモリストレージ構成情報１３３の詳細を示す説明図である。
【００７５】
分散メモリストレージ構成情報１３３は、分散メモリストレージＩＤ５０１、領域数５０２、及び複数の物理メモリ領域構成情報５０３を含む。
【００７６】
分散メモリストレージＩＤ５０１は、計算機システムにおける分散メモリストレージ３０１を識別するための識別子を格納する。
【００７７】
領域数５０２は、分散メモリストレージＩＤ５０１に対応する分散メモリストレージ３０１を構成するメモリ領域の数を格納する。
【００７８】
物理メモリ領域構成情報５０３は、分散メモリストレージ３０１を構成するメモリ領域の構成情報を格納する。具体的には、物理メモリ領域構成情報５０３は、サーバＩＤ５１１、領域ＩＤ５１２、及びメモリサイズ５１３を含む。
【００７９】
サーバＩＤ５１１は、分散メモリストレージ３０１を構成するメモリ領域を提供するサーバ１０２を識別するための識別子を格納する。サーバＩＤ５１１は、サーバ１０２が識別できる情報であればよく、例えば、ホスト名、ＩＰアドレス等が考えられる。
【００８０】
領域ＩＤ５１２は、サーバ１０２が複数のメモリ領域を保持する場合に、当該サーバ１０２内のメモリ領域を識別するための識別子を格納する。領域ＩＤ５１２は、メモリ領域を識別できる情報であればよく、例えば、メモリ１１５の物理的なアドレス等が考えられる。なお、メモリ１１５の物理的なアドレスには、メモリ領域の先頭のアドレスを用いる方法が考えられる。
【００８１】
メモリサイズ５１３は、分散メモリストレージ３０１に提供されるメモリ領域の大きさを表す情報を格納する。
【００８２】
図６は、本発明の実施形態の分散メモリストレージ管理情報１３４の詳細を示す説明図である。
【００８３】
分散メモリストレージ管理情報１３４は、分散メモリストレージＩＤ６０１、領域数６０２、及び複数の物理メモリ稼動情報６０３を含む。
【００８４】
分散メモリストレージＩＤ６０１は、計算機システム上の分散メモリストレージ３０１を識別するための識別子を格納する。分散メモリストレージＩＤ６０１は、分散メモリストレージＩＤ５０１と同一の情報である。
【００８５】
領域数６０２は、分散メモリストレージＩＤ５０１に対応する分散メモリストレージ３０１を構成するメモリ領域の数を格納する。領域数６０２は、領域数５０２と同一の情報である。
【００８６】
物理メモリ稼動情報６０３は、分散メモリストレージ３０１を構成するメモリ領域の稼動状態を表す情報を格納する。具体的には、物理メモリ稼動情報６０３は、メモリサイズ６１１及び使用メモリサイズ６１２を含む。
【００８７】
メモリサイズ６１１は、分散メモリストレージ３０１に提供されるメモリ領域の大きさを表す情報を格納する。メモリサイズ６１１は、メモリサイズ５１３と同一の情報である。
【００８８】
使用メモリサイズ６１２は、分散メモリストレージ３０１に提供されるメモリ領域のうち、実際に使用されているメモリ領域の大きさを表す情報を格納する。
【００８９】
図７は、本発明の実施形態のグローバルファイル管理情報１３２の詳細を示す説明図である。
【００９０】
グローバルファイル管理情報１３２は、ファイル識別情報７０１、管理属性情報７０２、ローカルファイル管理情報ポインタ（開始）７０３、及びローカルファイル管理情報ポインタ（終了）７０４を含む。
【００９１】
ファイル識別情報７０１は、ファイルを識別するための識別情報を格納する。ファイル識別情報７０１は、ファイルを識別できる情報であればよく、例えば、ファイル名、ｉノード番号等が考えられる。
【００９２】
管理属性情報７０２は、ファイル識別情報７０１に対応するファイルの管理情報を格納する。管理属性情報７０２の詳細については、図８を用いて後述する。
【００９３】
ローカルファイル管理情報ポインタ（開始）７０３及びローカルファイル管理情報ポインタ（終了）７０４は、ファイル識別情報７０１に対応するファイルを分割して生成されたキー・バリュー型データが格納されるサーバ１０２が保持するローカルファイル管理情報１２６へのポインタを格納する。
【００９４】
本実施形態では、キー・バリュー型データが配置されるときに、配置関係を示すローカルファイル管理情報リスト７１１が生成される。ローカルファイル管理情報ポインタ（開始）７０３は、ローカルファイル管理情報リスト７１１の最初のローカルファイル管理情報１２６のアドレスを格納する。また、ローカルファイル管理情報ポインタ（終了）７０４は、ローカルファイル管理情報リスト７１１の最後のローカルファイル管理情報１２６をアドレスが格納する。
【００９５】
一方、ローカルファイル管理情報１２６は、他のローカルファイル管理情報１２６へのポインタであるローカルファイル管理情報ポインタ９０５（図９参照）を含む。図７に示すように、ローカルファイル管理情報ポインタ９０５（図９参照）にはローカルファイル管理情報リスト順にローカルファイル管理情報１２６が読み出せるようにポインタが格納される。これによって、エントリ（キー・バリュー型データ）が配置されるサーバ１０２を把握することが可能となる。
【００９６】
なお、ローカルファイル管理情報リスト７１１の最後のローカルファイル管理情報１２６のローカルファイル管理情報ポインタ９０５（図９参照）にはＮｕｌｌが格納される。
【００９７】
また、ローカルファイル管理情報１２６は、グローバルファイル管理情報ポインタ９０６（図９参照）を含む。
【００９８】
これによって、グローバルファイル管理情報１３２とローカルファイル管理情報１２６との対応関係を把握することができる。
【００９９】
なお、ローカルファイル管理情報１２６の詳細については図９を用いて後述する。
【０１００】
本実施形態では、ファイル識別情報７０１が含まれるファイルＩ／Ｏが入力された場合、管理サーバ１０１は、グローバルファイル管理情報１３２を参照することによって、キー・バリュー型データが配置される分散メモリストレージ３０１を把握できる。すなわち、ファイルとキー・バリュー型データとの対応づけが可能となる。
【０１０１】
図８は、本発明の実施形態の管理属性情報７０２の詳細を示す説明図である。
【０１０２】
管理属性情報７０２は、パーミション情報８１１、オーナー情報８１２、及びサイズ８１３を含む。なお、他の情報が含まれてもよい。
【０１０３】
パーミション情報８１１は、ファイル識別情報７０１に対応するファイルのアクセス権限の情報を格納する。
【０１０４】
オーナー情報８１２は、ファイル識別情報７０１に対応するファイルの所有者の情報を格納する。
【０１０５】
サイズ８１３は、ファイル識別情報７０１に対応するファイルの大きさを表す情報を格納する。
【０１０６】
図９は、本発明の実施形態のローカルファイル管理情報１２６の詳細を示す説明図である。
【０１０７】
ローカルファイル管理情報１２６は、ファイル識別情報９０１、管理属性情報９０２、エントリリストポインタ（開始）９０３、エントリリストポインタ（終了）９０４、ローカルファイル管理情報ポインタ９０５、及びグローバルファイル管理情報ポインタ９０６を含む。
【０１０８】
ファイル識別情報９０１は、ファイルを識別するための識別情報を格納する。ファイル識別情報９０１は、ファイルを識別できる情報であればよく、例えば、ファイル名、ｉノード番号等が考えられる。ファイル識別情報９０１は、ファイル識別情報７０１と同一の情報である。
【０１０９】
管理属性情報９０２は、ファイル識別情報９０１に対応するファイルの管理情報を格納する。管理属性情報９０２は、管理属性情報７０２と同一の情報である。
【０１１０】
エントリリストポインタ（開始）９０３及びエントリリストポインタ（終了）９０４は、エントリ９２１へのポインタを格納する。ここで、エントリ９２１は、一つのキー・バリュー型データを表す。
【０１１１】
本実施形態では、各サーバ１０２にキー・バリュー型データを配置するときに、エントリリスト９１１が作成される。エントリリスト９１１は、キー情報のソート順にエントリ９２１が並んでいる。
【０１１２】
エントリリストポインタ（開始）９０３は、エントリリスト９１１に含まれる最初のエントリ９２１へのポインタを格納する。
【０１１３】
エントリリストポインタ（終了）９０４は、エントリリスト９１１に含まれる最後のエントリ９２１へのポインタを格納する。
【０１１４】
ローカルファイル管理情報ポインタ９０５は、他のローカルファイル管理情報１２６へのポインタである。これによって、管理サーバ１０１は、最初のローカルファイル管理情報１２６にアクセスすることによって、ファイル識別情報９０１に対応するファイルが分割されたキー・バリュー型データを格納するローカルファイル管理情報１２６を把握することができる。
【０１１５】
グローバルファイル管理情報ポインタ９０６は、ローカルファイル管理情報１２６を管理するグローバルファイル管理情報１３２へのポインタを格納する。
【０１１６】
次に、エントリ９２１について説明する。
【０１１７】
エントリ９２１は、ファイル識別情報９３１、バリュー識別情報９３２、所属ローカルファイル管理情報ポインタ９３３、エントリポインタ９３４、及びバリューポインタ９３５を含む。
【０１１８】
ファイル識別情報９３１は、ファイルの識別情報を格納する。ファイル識別情報９３１は、ファイルを識別できる情報であればよく、ファイル名、ｉノード番号等が考えられる。ファイル識別情報９３１は、ファイル識別情報７０１と同一の情報である。
【０１１９】
バリュー識別情報９３２は、ファイルを構成するレコードに含まれるフィールドの識別情報を格納する。バリュー識別情報９３２は、フィールドを識別できる情報であればよく、例えば、フィールドの名称等が考えられる。
【０１２０】
所属ローカルファイル管理情報ポインタ９３３は、エントリ９２１が所属するローカルファイル管理情報１２６へのポインタを格納する。
【０１２１】
エントリポインタ９３４は、他のエントリ９２１へのポインタを格納する。図９に示すように、エントリポインタ９３４には、エントリリスト９１１順にエントリ９２１が読み出せるようにポインタが格納される。
【０１２２】
なお、エントリリスト９１１の最後のエントリ９２１のエントリポインタ９３４にはＮｕｌｌが格納される。これによって、エントリリスト９１１の最後のエントリ９２１であることが分かる。
【０１２３】
バリューポインタ９３５は、実際のデータ内容に対応するバリュー９４１が格納されたメモリ領域へポインタを格納する。
【０１２４】
図１０は、本発明の実施形態におけるエントリ９２１の論理的な構成例を示す説明図である。
【０１２５】
図１０に示すように、エントリ９２１は、キー１００１とバリュー９４１との組として認識される。
【０１２６】
本実施形態では、キー１００１は、ファイル識別情報９３１とバリュー識別情報９３２とから構成される。
【０１２７】
図１１は、本発明の実施形態のディレクトリ管理情報１３５の詳細を示す説明図である。
【０１２８】
ディレクトリ管理情報１３５は、管理属性情報１１０１、配置属性情報１１０２、及びディレクトリエントリ情報１１０３を含む。
【０１２９】
管理属性情報１１０１は、ディレクトリの管理情報を格納する。管理属性情報１１０１は、管理属性情報７０２と同一の情報を含む。
【０１３０】
配置属性情報１１０２は、ディレクトリ配下に格納するキー・バリュー型データの配置方法に関する情報を格納する。配置属性情報１１０２の詳細については、図１２を用いて後述する。
【０１３１】
ディレクトリエントリ情報１１０３は、ディレクトリ配下に格納されるファイルのファイル名等の識別情報を格納する。
【０１３２】
図１２は、本発明の実施形態の配置属性情報１１０２の詳細を示す説明図である。
【０１３３】
配置属性情報１１０２は、レコード定義情報１２０１、フィールド指定情報１２０２、配置方針１２０３、及びキーレンジ指定情報１２０４を含む。
【０１３４】
レコード定義情報１２０１は、ファイルを構成するレコードの構造に関する情報を格納する。レコード定義情報１２０１の詳細については、図２３を用いて後述する。
【０１３５】
フィールド指定情報１２０２は、キー１００１を構成するバリュー識別情報９３２に対応するフィールドの情報を格納する。本実施形態では、フィールド指定情報１２０２によって指定されたフィールドにしたがって、キー・バリュー型データが生成される。
【０１３６】
配置方針１２０３は、分散メモリストレージ３０１を構成するサーバ１０２へのキー・バリュー型データの配置方法に関する情報を格納する。
【０１３７】
キー・バリュー型データの配置方法には、キー・バリュー型データを各サーバ１０２に均等に配置する方法（平準化）、及び、指定されたキーレンジ毎にキー・バリュー型データを配置する方法が考えられる。なお、配置属性情報１１０２は、前述した方法に限定されず、本発明ではどのような配置方法を用いても同様の効果を奏する。
【０１３８】
キーレンジ指定情報１２０４は、各サーバ１０２にキー・バリュー型データを配置するためのキーレンジに関する情報を格納する。なお、配置方針１２０３が平準化を表す情報が格納されている場合には、キーレンジ指定情報１２０４は用いられない。
【０１３９】
キーレンジ指定情報１２０４は、さらに、キーレンジ情報１２１１を含む。
【０１４０】
キーレンジ情報１２１１は、キー・バリュー型データを各サーバ１０２に配置するためのキーの範囲に関する情報を格納する。具体的には、キーレンジ情報１２１１は、始端１２３１、終端１２３２、及び領域ＩＤ１２３３を含む。
【０１４１】
始端１２３１は、キーレンジの開始点となるキー１００１の情報を格納する。終端１２３２は、キーレンジの終了点となるキー１００１の情報を格納する。
【０１４２】
領域ＩＤ１２３３は、サーバ１０２が複数のメモリ領域を保持する場合に、当該サーバ１０２内のメモリ領域を識別するための識別子を格納する。領域ＩＤ１２３３は、領域ＩＤ５１２と同一の情報である。
【０１４３】
図２３は、本発明の実施形態におけるレコード定義情報１２０１の詳細を示す説明図である。
【０１４４】
レコード定義情報１２０１は、管理サーバ１０１がファイルのレコードを認識し、レコード単位にファイルを分割する場合に利用される情報である。レコード定義情報１２０１は、レコード構成２３０１、及びフィールド構成２３０２を含む。なお、本実施形態において、レコード定義情報１２０１は、分散メモリストレージ３０１に格納されるファイル、又は、ディレクトリごとに設定される。
【０１４５】
レコード構成２３０１は、ファイル内のレコード構成を識別するための情報であり、レコードデリミタ２３１１、レコード種別２３１２、及びレコード長２３１３を含む。
【０１４６】
レコードデリミタ２３１１は、レコードとレコードとを区切る文字コードを示す情報を格納する。レコードデリミタ２３１１には、例えば、改行を表す文字コードなどを用いることが考えられる。
【０１４７】
レコード種別２３１２は、ファイル内のレコードが固定長レコード又は可変長レコードのいずれであるかを示す情報を格納する。
【０１４８】
例えば、レコード種別２３１２に固定長レコードを示す情報が格納される場合、ファイルを構成するレコードは、全て同一の長さのレコードとなる。一方、レコード種別２３１２に可変長レコードを示す情報が格納される場合、ファイルを構成するレコードは、それぞれ長さが異なるレコードとなる。
【０１４９】
レコード長２３１３は、レコード種別２３１２が固定長レコードを示す場合に、１つのレコードの長さを示す情報を格納する。
【０１５０】
なお、レコード構成２３０１にはレコードの構成を識別可能な情報が含まれていればよく、レコードデリミタ２３１１、レコード種別２３１２、及びレコード長２３１３のすべての情報を含む必要はない。例えば、固定長のレコードである場合、レコードデリミタ２３１１はレコード構成２３０１に含まれてなくてもよい。
【０１５１】
フィールド構成２３０２は、レコード内のフィールドを識別するための情報であり、フィールドデリミタ２３２１、フィールド数２３２２、及びフィールド情報２３２３を含む。
【０１５２】
フィールドデリミタ２３２１は、フィールドとフィールドとを区切る文字コードを示す情報を格納する。フィールドデリミタ２３２１には、例えば、空白を表す文字コードなどを用いることが考えられる。
【０１５３】
フィールド情報２３２３は、対応するフィールドに記録されるデータに関する情報であり、フィールド種別２３３１、フィールド長２３３２、及び記述形式２３３３を含む。なお、１つのフィールドに対して１つフィールド情報２３２３が存在する。
【０１５４】
フィールド種別２３３１は、レコード種別２３１２に可変長レコードを示す情報が格納される場合、対応するフィールドが可変長フィールド又は固定長フィールドのいずれであるかを示す情報を格納する。
【０１５５】
フィールド長２３３２は、フィールド種別２３３１に固定長フィールドを示す情報が格納される場合、対応するフィールドのフィールド長の大きさを格納し、また、フィールド種別２３３１に可変長フィールドを示す情報が格納される場合、対応するフィールドの"フィールド長"を示す情報を格納する領域のサイズを格納する。
【０１５６】
記述形式２３３３は、ＡＳＣＩＩ、バイナリ等、対応するフィールドに記録されたデータの記述形式を示す情報を格納する。
【０１５７】
なお、フィールド構成２３０２は、レコード内のフィールドを識別できればよいため、フィールドデリミタ２３２１、フィールド数２３２２、フィールド情報２３２３のすべての情報を含む必要はない。例えば、フィールド情報２３２３のフィールド長２３３２が指定されていれば、フィールドデリミタ２３２１はフィールド構成２３０２に含まれなくてもよい。
【０１５８】
ファイルが固定長レコードから構成される場合、レコード長２３１２に設定された値によって個々のレコードを認識することができる。一方、ファイルが可変長レコードから構成される場合、各レコードの先頭には当該レコードの大きさを記録するフィールドが設定されており、管理サーバ１０１は、当該フィールドの情報によってレコードの区切りを認識することができる。
【０１５９】
ファイルが可変長レコードから構成される場合、管理サーバ１０１は、フィールド構成２３０２に設定される情報から最初のフィールドを識別し、レコードサイズを求めることができる。管理サーバ１０１は、レコードを認識した後、フィールド構成２３０２のフィールド数２３２２、及びフィールド情報２３２３を参照してフィールドを識別する。
【０１６０】
なお、レコード定義情報１２０１は、ファイルのレコード、及びフィールドが定義できる形式であれば、どのような形式であってもよい。例えば、図２で説明した、ソースプログラム２０１に含まれるＤＡＴＡ  ＤＩＶＩＳＩＯＮのＦＩＬＥ  ＳＥＣＴＩＯＮ２０２のファイル構造の定義を用いてもよい。
【０１６１】
図１３は、本発明の実施形態のマウント情報１５１の詳細を示す説明図である。
【０１６２】
本実施形態では、アプリケーションのファイルに対する抽象化された操作（読み出し、書き込みなど）を、個別のファイルシステムに依存する操作に変換するために仮想ファイルシステム（ＶＦＳ）が用いられる。これによって、アプリケーションは、ファイルシステムの異なる記憶媒体に対して同一の操作でアクセス可能となる。なお、仮想ファイルシステムについては、例えば、非特許文献２に記載されている。
【０１６３】
仮想ファイルシステムでは、仮想ファイルシステム情報１３０１のリストが存在し、マウント情報１５１は、当該リストを格納する。
【０１６４】
仮想ファイルシステム情報１３０１は、Ｎｅｘｔ１３１１、仮想ノードポインタ１３１２、及びファイルシステム依存情報ポインタ１３１３を含む。なお、仮想ファイルシステム情報１３０１は他の情報も含むが、公知の技術であるため省略する。
【０１６５】
Ｎｅｘｔ１３１１は、他の仮想ファイルシステム情報１３０１へのポインタを格納する。これによって、リストに含まれる全ての仮想ファイルシステム情報１３０１をたどることができる。
【０１６６】
仮想ノードポインタ１３１２は、マウントされる仮想ノード情報１３０３（マウントポイントの仮想ノード）へのポインタを格納する。
【０１６７】
ファイルシステム依存情報ポインタ１３１３は、ファイルシステム依存情報１３０２又は分散メモリストレージ管理情報１３４へのポインタを格納する。
【０１６８】
本実施形態では、少なくとも一つの仮想ファイルシステム情報１３０１が分散メモリストレージ管理情報１３４と対応づけられる。
【０１６９】
仮想ノード情報１３０３は、ファイル又はディレクトリの管理情報を格納する。仮想ノード情報１３０３は、所属ＶＦＳポインタ１３３１、マウントＶＦＳポインタ１３３２、及びオブジェクト管理情報ポインタ１３３３を含む。なお、仮想ノード情報１３０３は他の情報も含むが、公知の技術であるため省略する。
【０１７０】
所属ＶＦＳポインタ１３３１は、仮想ノードが所属する仮想ファイルシステムに対応する仮想ファイルシステム情報１３０１へのポインタを格納する。
【０１７１】
マウントＶＦＳポインタ１３３２は、マウントポイントとなる仮想ノード情報１３０３へのポインタを格納する。
【０１７２】
オブジェクト管理情報ポインタ１３３３は、オブジェクト管理情報１３０４へのポインタを格納する。
【０１７３】
ここで、オブジェクト管理情報１３０４は、所定のファイルシステムに依存するファイル又はディレクトリの管理情報である。本実施形態では、分散メモリストレージ３０１に依存するオブジェクト管理情報１３０４として、ローカルファイル管理情報１２６、グローバルファイル管理情報１３２及びディレクトリ管理情報１３５が含まれる。
【０１７４】
図１３に示す例では、マウント情報１５１から仮想ファイルシステム情報１（１３０１−１）へポイントされており、これがルートファイルシステムである。仮想ファイルシステム情報１（１３０１−１）のＮｅｘｔ１３１１には、仮想ファイルシステム情報２（１３０１−２）へのポインタが格納される。また、仮想ファイルシステム情報１（１３０１−１）のファイルシステム依存情報ポインタ１３１３には、ファイルシステム依存情報１３０２へのポインタが格納される。なお、仮想ファイルシステム情報１（１３０１−１）は、ルートファイルシステムであり、マウントされる仮想ノードがないため、仮想ノードポインタ１３１２にはＮｕｌｌへのポインタが格納される。
【０１７５】
図１３に示す例では、仮想ファイルシステム情報２（１３０１−２）の他に仮想ファイルシステム情報１３０１が存在しないため、Ｎｅｘｔ１３１１にはＮｕｌｌへのポインタが格納される。また、仮想ファイルシステム情報２（１３０１−２）のファイルシステム依存情報ポインタ１３１３には、分散メモリストレージ管理情報１３４へのポインタが格納される。また、仮想ファイルシステム情報２（１３０１−２）は、仮想ノード情報２（１３０３−２）にマウントされているため、仮想ノードポインタ１３１２には、仮想ノード情報２（１３０３−２）へのポインタが格納される。
【０１７６】
図１３に示す例では、仮想ノード情報１（１３０３−１）は仮想ファイルシステム情報１（１３０１−１）に所属するため、所属ＶＦＳポインタ１３３１には仮想ファイルシステム情報１（１３０１−１）へのポインタが格納される。また、仮想ノード情報１（１３０３−１）のオブジェクト管理情報ポインタ１３３３には、所定のファイルシステムに関するオブジェクト管理情報１３０４へのポインタが格納される。なお、仮想ノード情報１（１３０３−１）は、いずれの仮想ファイルシステム情報１３０１もマウントされていないため、マウントＶＦＳポインタ１３３２にはＮｕｌｌへのポインタが格納される。
【０１７７】
図１３に示す例では、仮想ノード情報２（１３０３−２）は、仮想ファイルシステム情報１（１３０１−１）に所属するため、所属ＶＦＳポインタ１３３１には仮想ファイルシステム情報１（１３０１−１）へのポインタが格納される。また、仮想ノード情報２（１３０３−２）はマウントポイントとなるディレクトリであるため、マウントＶＦＳポインタ１３３２には仮想ファイルシステム情報２（１３０１−２）へのポインタが格納される。また、仮想ノード情報２（１３０３−２）のオブジェクト管理情報ポインタ１３３３には、所定のファイルシステムに関するオブジェクト管理情報１３０４へのポインタが格納される。
【０１７８】
図１３に示す例では、仮想ノード情報３（１３０３−３）は、仮想ファイルシステム情報２（１３０１−２）に所属するため、所属ＶＦＳポインタ１３３１には仮想ファイルシステム情報２（１３０１−２）へのポインタが格納される。また、仮想ノード情報１（１３０３−１）のオブジェクト管理情報ポインタ１３３３には、分散メモリストレージ３０１に関するオブジェクト管理情報１３０５へのポインタが格納される。なお、仮想ノード情報３（１３０３−３）は、いずれの仮想ファイルシステム情報１３０１もマウントされていないため、マウントＶＦＳポインタ１３３２にはＮｕｌｌへのポインタが格納される。
【０１７９】
図１４は、本発明の実施形態のオープンファイル情報１６１の詳細を示す説明図である。
【０１８０】
オープンファイル情報１６１は、所属ＶＦＳポインタ１４０１、仮想ノードポインタ１４０２、及びファイルポインタ１４０３を含む。
【０１８１】
所属ＶＦＳポインタ１４０１は、オープン処理が実行されたファイルを管理するファイルシステムが所属する仮想ファイルシステム情報１３０１へのポインタを格納する。
【０１８２】
仮想ノードポインタ１４０２は、オープン処理が実行されたファイルの管理情報を格納する仮想ノード情報１３０３へのポインタを格納する。
【０１８３】
ここで、仮想ノード情報１３０３は、図１３に示す仮想ノード情報と同一のものであり、当該仮想ノード情報１３０３のオブジェクト管理情報ポインタ１３３３には、ローカルファイル管理情報１２６へのポインタ又はグローバルファイル管理情報１３２へのポインタのいずれかがオブジェクト管理情報１３０５として格納される。
【０１８４】
ファイルポインタ１４０３は、読み出し処理又は書き込み処理の対象となるファイルのデータの処理位置を格納する。
【０１８５】
図２４は、本発明の実施形態におけるファイル状態情報１５２の一例を示す説明図である。
【０１８６】
ファイル状態情報１５２は、ファイル識別情報２４０１及び状態２４０２を含む。
【０１８７】
ファイル識別情報２４０１は、ファイルを識別するための識別情報を格納する。ファイル識別情報２４０１は、ファイル識別情報７０１と同一のものである。
【０１８８】
状態２４０２は、ファイルの処理状態等を格納する。例えば、ファイルに対する読み出し処理が実行されている場合には「読み出し中」、ファイルの書き込み処理が実行されている場合には「書き込み中」などの情報が格納される。また、アクセス元のサーバ１０２の識別情報等を含んでいてもよい。
【０１８９】
図１５は、本発明の実施形態におけるマウント処理を説明するフローチャートである。
【０１９０】
管理サーバ１０１は、当該管理サーバ１０１の操作者からマウントコマンドを受け付けると、ファイルシステム名前空間アクセス部１４１を読み出して以下の処理を開始する。なお、処理契機はこれに限定されず、例えば、サーバ１０２のＡＰ１２３からマウントコマンドを受け付けた場合に処理が開始されてもよい。
【０１９１】
ファイルシステム名前空間アクセス部１４１は、受け付けたマウントコマンドを参照して、マウント先が分散メモリストレージ３０１であるか否かを判定する（ステップ１５０１）。
【０１９２】
マウント先が分散メモリストレージ３０１でないと判定された場合、すなわち、記憶装置１０３がマウント先であると判定された場合、ファイルシステム名前空間アクセス部１４１は、通常のマウント操作を実行し（ステップ１５０７）、処理を終了する。なお、ステップ１５０７のマウント処理は公知の技術であるため説明を省略する。
【０１９３】
マウント先が分散メモリストレージ３０１であると判定された場合、ファイルシステム名前空間アクセス部１４１は、仮想ファイルシステム情報１３０１及び分散メモリストレージ管理情報１３４を生成する（ステップ１５０２）。
【０１９４】
このとき、生成された仮想ファイルシステム情報１３０１には、生成された分散メモリストレージ管理情報１３４へのポインタが設定される。具体的には、生成された仮想ファイルシステム情報１３０１のファイルシステム依存情報ポインタ１３１３に、生成された分散メモリストレージ管理情報１３４へのポインタが格納される。
【０１９５】
次に、ファイルシステム名前空間アクセス部１４１は、仮想ノード情報１３０３及びオブジェクト管理情報１３０４を生成する（ステップ１５０３）。
【０１９６】
このとき、生成された仮想ノード情報１３０３には、生成されたオブジェクト管理情報１３０４へのポインタが設定される。具体的には、生成された仮想ノード情報１３０３のオブジェクト管理情報ポインタ１３３３に、生成されたオブジェクト管理情報１３０４へのポインタが格納される。
【０１９７】
ファイルシステム名前空間アクセス部１４１は、生成された仮想ノード情報１３０３に、生成された仮想ファイルシステム情報１３０１へのポインタを設定する（ステップ１５０４）。具体的には、生成された仮想ノード情報１３０３の所属ＶＦＳポインタ１３３１に、生成された仮想ファイルシステム情報１３０１へのポインタが格納される。
【０１９８】
ファイルシステム名前空間アクセス部１４１は、マウント情報１５１に、生成された仮想ファイルシステム情報１３０１を追加する（ステップ１５０５）。
【０１９９】
具体的には、マウント情報１５１におけるリストの最後の仮想ファイルシステム情報１３０１のＮｅｘｔ１３１１に、生成された仮想ファイルシステム情報１３０１へのポインタが格納される。また、生成された仮想ファイルシステム情報１３０１のＮｅｘｔ１３１１にはＮｕｌｌが格納される。
【０２００】
ステップ１５０２〜ステップ１５０５の処理によって、マウントするファイルシステムの情報が生成される。
【０２０１】
ファイルシステム名前空間アクセス部１４１は、生成された仮想ファイルシステム情報１３０１と、マウントポイントとなる仮想ノード情報１３０３とを対応づけて（ステップ１５０６）、処理を終了する。
【０２０２】
具体的には、生成された仮想ファイルシステム情報１３０１の仮想ノードポインタ１３１２に、マウントポイントとなる仮想ノード情報１３０３へのポインタが格納される。また、マウントポイントとなる仮想ノード情報１３０３のマウントＶＦＳポインタ１３３２に、生成された仮想ファイルシステム情報１３０１へのポインタが格納される。
【０２０３】
図１６は、本発明の実施形態におけるアンマウント処理を説明するフローチャートである。
【０２０４】
管理サーバ１０１は、当該管理サーバ１０１の操作者からアンマウントコマンドを受け付けると、ファイルシステム名前空間アクセス部１４１を読み出して以下の処理を開始する。なお、処理契機はこれに限定されず、例えば、サーバ１０２のＡＰ１２３からアンマウントコマンドを受け付けた場合に処理が開始されてもよい。
【０２０５】
ファイルシステム名前空間アクセス部１４１は、受け付けたアンマウントコマンドを参照して、アンマウント処理の対象となる仮想ファイルシステム情報１３０１のマウント先が分散メモリストレージ３０１であるか否かを判定する（ステップ１６０１）。
【０２０６】
以下、アンマウント処理の対象となる仮想ファイルシステム情報１３０１を対象仮想ファイルシステム情報１３０１とも記載する。
【０２０７】
このとき、ファイルシステム名前空間アクセス部１４１は、受け付けたアンマウントコマンドに基づいて、対象仮想ファイルシステム情報１３０１のマウントポイントを特定する。これによって、マウントポイントとなる仮想ノード情報１３０３を特定できる。
【０２０８】
対象仮想ファイルシステム情報１３０１のマウント先が分散メモリストレージ３０１でないと判定された場合、すなわち、記憶装置１０３上の記憶領域が対象仮想ファイルシステム情報１３０１のマウント先であると判定された場合、ファイルシステム名前空間アクセス部１４１は、通常のアンマウント操作を実行し（ステップ１６０７）、処理を終了する。なお、ステップ１６０７のアンマウント処理は公知の技術であるため説明を省略する。
【０２０９】
対象仮想ファイルシステム情報１３０１のマウント先が分散メモリストレージ３０１であると判定された場合、ファイルシステム名前空間アクセス部１４１は、マウントポイントとなる仮想ノード情報１３０３と、対象仮想ファイルシステム情報１３０１との対応づけを削除する（ステップ１６０２）。
【０２１０】
具体的には、対象仮想ファイルシステム情報１３０１の仮想ノードポインタ１３１２から、マウントポイントとなる仮想ノード情報１３０３へのポインタが削除される。また、マウントポイントとなる仮想ノード情報１３０３のマウントＶＦＳポインタ１３３２から、対象仮想ファイルシステム情報１３０１へのポインタが削除される。
【０２１１】
ファイルシステム名前空間アクセス部１４１は、マウント情報１５１から、対象仮想ファイルシステム情報１３０１を削除する（ステップ１６０３）。具体的には、以下のような処理が実行される。
【０２１２】
まず、ファイルシステム名前空間アクセス部１４１は、マウント情報１５１におけるリストに含まれる仮想ファイルシステム情報１３０１の中から、対象仮想ファイルシステム情報１３０１へのポインタが格納される仮想ファイルシステム情報１３０１を特定する。さらに、ファイルシステム名前空間アクセス部１４１は、特定された仮想ファイルシステム情報１３０１のＮｅｘｔ１３１１から対象仮想ファイルシステム情報１３０１へのポインタを削除する。
【０２１３】
次に、ファイルシステム名前空間アクセス部１４１は、対象仮想ファイルシステム情報１３０１へのポインタを格納する仮想ノード情報１３０３から、対象仮想ファイルシステム情報１３０１へのポインタを削除する（ステップ１６０４）。具体的には仮想ノード情報１３０３の所属ＶＦＳポインタ１３３１から、対象仮想ファイルシステム情報１３０１へのポインタが削除される。
【０２１４】
ファイルシステム名前空間アクセス部１４１は、対象仮想ファイルシステム情報１３０１へのポインタが削除された仮想ノード情報１３０３から、オブジェクト管理情報１３０４へのポインタを削除する（ステップ１６０５）。具体的には、仮想ノード情報１３０３のオブジェクト管理情報ポインタ１３３３から、オブジェクト管理情報１３０４へのポインタが削除される。
【０２１５】
なお、ファイルシステム名前空間アクセス部１４１は、仮想ノード情報１３０３及びオブジェクト管理情報１３０４を削除してもよいし、再度利用するためそのまま残しておいてもよい。
【０２１６】
ファイルシステム名前空間アクセス部１４１は、対象仮想ファイルシステム情報１３０１から、分散メモリストレージ管理情報１３４へのポインタを削除する（ステップ１６０６）。具体的には、対象仮想ファイルシステム情報１３０１のファイルシステム依存情報ポインタ１３１３から、分散メモリストレージ管理情報１３４へのポインタが削除される。
【０２１７】
なお、ファイルシステム名前空間アクセス部１４１は、対象仮想ファイルシステム情報１３０１及び分散メモリストレージ管理情報１３４を削除してもよいし、再度利用するためそのまま残しておいてもよい。
【０２１８】
図１７Ａ及び図１７Ｂは、本発明の実施形態におけるオープン処理を説明するフローチャートである。
【０２１９】
ファイルシステムアクセス部１２５は、ＡＰ１２３からのアクセス要求（読み出し要求、書き込み要求等）を受け付けるとオープン処理を開始する。また、このとき、ファイルシステムアクセス部１２５は、管理サーバ１０１に対してオープン処理の実行要求を送信する。当該実行要求には、少なくとも処理対象のファイルのファイル名が含まれる。
【０２２０】
当該オープン処理の実行要求を送信したファイルシステムアクセス部１２５は、通常のオープン処理を実行する。具体的には、オープンファイル情報１６１を初期化し、オープンファイル情報１６１に必要なポインタを設定する。
【０２２１】
初期化処理では、オープンファイル情報１６１の所属ＶＦＳポインタ１４０１に、対象ファイルが存在するディレクトリにマウントされるファイルシステムの仮想ファイルシステム情報１３０１へのポインタが格納される。また、仮想ノードポインタ１４０２には、対象ファイルの管理情報を格納する仮想ノード情報１３０３へのポインタが格納される。
【０２２２】
また、オープン処理では、オープンファイル情報１６１におけるオブジェクト管理情報ポインタ１３３３に、ローカルファイル管理情報１２６又はグローバルファイル管理情報１３２のいずれかのポインタが設定される。
【０２２３】
前述した情報は、管理サーバ１０１によって取得され、ファイルシステムアクセス部１２５に送信されたものである。以下、オープン処理の実行要求を受け付けた管理サーバ１０１の処理について説明する。
【０２２４】
管理サーバ１０１は、処理対象のファイルのファイル名を含むオープン処理の実行要求を受け付けると、ファイルシステム管理部１２２を呼び出して以下の処理を開始する。以下、ファイル名が指定されたファイルを対象ファイルとも記載する。
【０２２５】
なお、オープン処理の実行要求に含まれるファイル名は、絶対パス又は相対パスの何れを用いてもよい。
【０２２６】
管理サーバ１０１は、オープン処理の実行要求に含まれるファイル名に基づいて、対象ファイルが分散メモリストレージ３０１に格納されるか否かを判定する（ステップ１７０１）。
【０２２７】
具体的には、管理サーバ１０１は、ファイル名が相対パス名の場合、当該相対パス名を絶対パスに変換する。次に、管理サーバ１０１は、絶対パス名に基づいてマウント情報１５１を参照して、対象ファイルが格納されるディレクトリに分散メモリストレージ３０１がマウントされているか否かを判定する。より詳細には、以下の処理が実行される。
【０２２８】
まず、管理サーバ１０１は、絶対パス名を参照し、当該絶対パス名に含まれるディレクトリ名に基づいて、マウント情報１５１が格納される仮想ファイルシステム情報１３０１のリストをたどり、仮想ノード情報１３０３へのマウントポイントがあるか否かを判定する。
【０２２９】
仮想ノード情報１３０３へのマウントポイントがあると判定された場合、管理サーバ１０１は、当該マウントポイントが示す仮想ノード情報１３０３のマウントＶＦＳポインタ１３３２を参照し、マウント先の仮想ファイルシステム情報１３０１を特定する。また、管理サーバ１０１は、当該マウントポイントが示す仮想ノード情報１３０３に対応するオブジェクト管理情報１３０４を参照し、対象ファイルが格納されるディレクトリにマウントされる仮想ノード情報１３０３を特定する。
【０２３０】
次に、管理サーバ１０１は、特定された仮想ノード情報１３０３の所属ＶＦＳポインタ１３３１を参照して、所属する仮想ファイルシステム情報１３０１を特定する。
【０２３１】
さらに、管理サーバ１０１は、特定された仮想ファイルシステム情報１３０１のファイルシステム依存情報ポインタ１３１３を参照し、分散メモリストレージ管理情報１３４へポインタが格納されているか否かを判定する。
【０２３２】
ファイルシステム依存情報ポインタ１３１３に分散メモリストレージ管理情報１３４へのポインタが格納される場合には、対象ファイルが分散メモリストレージ３０１に格納されると判定される。
【０２３３】
以上が、ステップ１７０１における処理である。
【０２３４】
対象ファイルが分散メモリストレージ３０１に格納されない場合、すなわち、対象ファイルが記憶装置１０３に格納されると判定された場合、管理サーバ１０１は、通常のオープン処理を実行し（ステップ１７３１）、処理を終了する。なお、ステップ１７３１のオープン処理は公知の技術であるため説明を省略する。
【０２３５】
対象ファイルが分散メモリストレージ３０１に格納されると判定された場合、管理サーバ１０１は、分散メモリストレージ管理部１２１を読み出して以下の処理を実行する。
【０２３６】
対象ファイルが分散メモリストレージ３０１に格納されていると判定された場合、管理サーバ１０１は、絶対パス名を分散メモリストレージ３０１内のファイル識別情報に変換する（ステップ１７０２）。
【０２３７】
ファイル識別情報としては、ｉノード番号を用いることが考えられる。ただし、ファイルシステムが異なるとｉノード番号が重複することがあり得る。そのため、ファイルシステム（分散メモリストレージを含む）を識別する情報、又は、デバイスを識別する情報とともに用いてもよい。
【０２３８】
例えば、分散メモリストレージの場合、分散メモリストレージ管理情報１３４の分散メモリストレージＩＤ６０１を用いることが考えられる。また、ファイル識別情報としては、ファイルが特定できることが目的であるため、絶対パス名をそのまま用いてもよい。
【０２３９】
管理サーバ１０１は、ステップ１７０１において特定されたディレクトリに対応するディレクトリ管理情報１３５を参照して、対象ファイルが分散メモリストレージ３０１上に存在するか否かを判定する（ステップ１７０３）。
【０２４０】
具体的には、管理サーバ１０１は、ディレクトリ管理情報１３５のディレクトリエントリ情報１１０３を参照して、分散メモリストレージ３０１において規定されるフォーマットに従って対象ファイルを格納するディレクトリを特定し、対象ファイルのファイル名を検索する。ディレクトリエントリ情報１１０３に対象ファイルのファイル名が格納される場合に、対象ファイルが分散メモリストレージ３０１上に存在すると判定される。
【０２４１】
以上の処理によって、オープンファイル情報１６１の所属ＶＦＳポインタ１４０１に格納する仮想ファイルシステム情報１３０１へのポインタ、及び、仮想ノードポインタ１４０２に格納する仮想ノード情報１３０３へのポインタが特定される。管理サーバ１０１は、前述した各ポインタの情報をファイルシステムアクセス部１２５に送信する。当該ポインタの情報を受けたファイルシステムアクセス部１２５は、オープンファイル情報１６１にポインタを設定する。
【０２４２】
次に、管理サーバ１０１は、オープン処理の実行要求に含まれるファイル名を参照して、ローカルアクセスが指定されているか否かを判定する（ステップ１７０５）。
【０２４３】
ここで、ローカルアクセスとは、対象ファイルに対応するローカルファイル管理情報１２６にのみアクセスすることを表す。例えば、ファイルＡを分割したキー・バリュー型データがサーバＡ及びサーバＢのそれぞれに配置されている場合に、サーバＡがローカルアクセスを指定してファイルＡへのアクセスを要求すると、サーバＡに格納されるファイルＡのキー・バリュー型データ（ローカルファイル管理情報１２６）にのみアクセスされる。
【０２４４】
ローカルアクセスを指定する方法としては、ファイル名にローカルアクセスを指定する識別情報を含める方法が考えられる。例えば、ファイル名が「／Ｘ／Ａ」のファイルに対してローカルアクセスを指定する場合には、「／Ｘ／Ａ．ｌｏｃａｌ」がオープン処理の実行要求に含まれる。なお、本発明はこれに限定されず、ファイル名とは別にローカルアクセスを指定する識別情報を付与する方法を用いてもよい。
【０２４５】
管理サーバ１０１は、前述したようなローカルアクセスを指定する識別情報の有無を判定することによって、ローカルアクセスが指定されているか否かを判定できる。
【０２４６】
ローカルアクセスが指定されていると判定された場合、管理サーバ１０１は、オープンファイル情報１６１へのポインタを格納する仮想ノード情報１３０３のオブジェクト管理情報ポインタ１３３３に、ローカルファイル管理情報１２６へのポインタを設定する（ステップ１７０６）。
【０２４７】
具体的には、管理サーバ１０１は、ローカルファイル管理情報１２６へのポインタを含む応答を分散メモリストレージアクセス部１２４に送信する。これによって、分散メモリストレージアクセス部１２４は、対象ファイルのうち、ローカルファイル管理情報１２６に格納されるキー・バリュー型データにのみアクセスすることが可能となる。
【０２４８】
ローカルアクセスが指定されていないと判定された場合、管理サーバ１０１は、オープンファイル情報１６１における仮想ノード情報１３０３のオブジェクト管理情報ポインタ１３３３に、グローバルファイル管理情報１３２へのポインタを設定する（ステップ１７０７）。
【０２４９】
具体的には、管理サーバ１０１は、グローバルファイル管理情報１３２へのポインタを含む応答を分散メモリストレージアクセス部１２４に送信する。受信した情報は、分散メモリストレージアクセス部１２４からファイルシステムアクセス部１２５へ通知され、当該ポインタがオープンファイル情報１６１に設定される。
【０２５０】
ステップ１７０５〜ステップ１７０７の処理によってオープンファイル情報１６１に必要な情報が設定される。
【０２５１】
その後、管理サーバ１０１は、オープン処理の実行要求を送信したサーバ１０２に処理が完了した旨を通知し（ステップ１７０８）、処理を終了する。
【０２５２】
当該通知を受信したファイルシステムアクセス部１２５は、オープン処理が実行されたファイルに対してファイル記述子を付与する。また、管理サーバ１０１は、ファイル記述子とオープン処理が実行されたファイルに対応するオープンファイル情報１６１へのポインタとを対応づけた管理情報（図示省略）を生成する。ファイルシステムアクセス部１２５は、以後、ファイル記述子を用いてファイルアクセスを実行する。
【０２５３】
一方、ステップ１７０３において、対象ファイルが分散メモリストレージ３０１に存在しないと判定された場合、管理サーバ１０１は、オープン処理の実行要求にファイル作成指示が含まれるか否かを判定する（ステップ１７１１）。
【０２５４】
オープン処理の実行要求にファイル作成指示が含まれないと判定された場合、管理サーバ１０１は、オープン処理の実行要求を送信したサーバ１０２に対してオープンエラーを通知して（ステップ１７２１）、処理を終了する。
【０２５５】
オープン処理の実行要求にファイル作成指示が含まれると判定された場合、管理サーバ１０１は、ディレクトリ管理情報１３５のディレクトリエントリ情報１１０３に、オープン処理の実行要求に含まれるファイル名を格納する（ステップ１７１２）。
【０２５６】
具体的には、ファイル名を変換した識別情報が格納される。なお、ディレクトリ管理情報１３５は、ファイル作成指示に含まれるファイル名に基づいて特定可能である。例えば、ファイル作成指示に含まれるファイル名が「／Ｗ／Ｘ／Ａ」である場合、管理サーバ１０１は、ディレクトリ「／Ｗ／Ｘ」配下に格納されるファイルであることが分かり、当該ディレクトリに対応するディレクトリ管理情報１３５を特定できる。
【０２５７】
次に、管理サーバ１０１は、ディレクトリ管理情報１３５の配置属性情報１１０２に基づいて、グローバルファイル管理情報１３２及びローカルファイル管理情報１２６を生成する（ステップ１７１３）。
【０２５８】
具体的には、以下のような処理が実行される。
【０２５９】
まず、管理サーバ１０１は、ファイル名が変換された識別情報をグローバルファイル管理情報１３２のファイル識別情報７０１に格納し、また、グローバルファイル管理情報１３２の管理属性情報７０２に必要な情報を設定する。
【０２６０】
次に、管理サーバ１０１は、配置方針１２０３及びキーレンジ指定情報１２０４に基づいて、分散メモリストレージ３０１を構成する各サーバ１０２へのローカルファイル管理情報１２６の配置を決定し、ローカルファイル管理情報１２６を生成する。このとき、ローカルファイル管理情報リスト７１１も生成される。なお、ローカルファイル管理情報１２６の配置を決定する場合には、分散メモリストレージ構成情報１３３が参照される。これによって、分散メモリストレージ３０１を構成するサーバ１０２を把握でき、各サーバ１０２への配置方法が決定できる。
【０２６１】
管理サーバ１０１は、生成されたローカルファイル管理情報リスト７１１に基づいて、ローカルファイル管理情報ポインタ（開始）７０３、及び、ローカルファイル管理情報ポインタ（終了）７０４にポインタを格納する。
【０２６２】
さらに、管理サーバ１０１は、ローカルファイル管理情報１２６のファイル識別情報９０１にファイル識別情報７０１と同一の識別情報を格納し、管理属性情報９０２には管理属性情報７０２と同一の情報を格納し、また、グローバルファイル管理情報ポインタ９０６には所属するグローバルファイル管理情報１３２へのポインタを格納する。また、管理サーバ１０１は、生成されたローカルファイル管理情報リスト７１１に基づいて、ローカルファイル管理情報ポインタ９０５に対応するポインタを格納する。
【０２６３】
その後、管理サーバ１０１は、決定された配置にしたがって各サーバ１０２に、生成されたローカルファイル管理情報１２６を送信する。
【０２６４】
以上の処理によって、管理サーバ１０１は、ファイル名等のファイル識別情報と、キー・バリュー型データとの対応関係を把握できる。
【０２６５】
なお、本発明は前述した処理に限定されない。例えば、サーバ１０２が、ステップ１７０１及びステップ１７０２等の処理を実行してもよい。本発明では、管理サーバ１０１及びサーバ１０２が連携して、オープンファイル情報１６１を生成することができれば、どのような処理であってもよい。
【０２６６】
以下、ＡＰ１２３からのアクセス要求の処理について説明する。
【０２６７】
オープン処理が完了した後、まず、ファイルシステムアクセス部１２５によってアクセス要求が処理される。
【０２６８】
まず、ファイルシステムアクセス部１２５は、分散メモリストレージ３０１に対するアクセスか否かを判定する。
【０２６９】
例えば、オブジェクト管理情報ポインタ１３３３に、ローカルファイル管理情報１２６又はグローバルファイル管理情報１３２へのポインタが格納される場合に、分散メモリストレージ３０１に対するアクセスであると判定される。
【０２７０】
分散メモリストレージ３０１に対するアクセスであると判定された場合、ファイルシステムアクセス部１２５は、分散メモリストレージアクセス部１２４を呼び出し、当該分散メモリストレージアクセス部１２４が以下の処理を実行する。
【０２７１】
ここでは、分散メモリストレージ３０１に対するアクセスについて説明する。
【０２７２】
アクセス要求が読み出し要求である場合、分散メモリストレージアクセス部１２４は、自身のローカルファイル管理情報１２６に対する読み出しであるか否かを判定する。
【０２７３】
具体的には、分散メモリストレージアクセス部１２４は、オープンファイル情報１６１におけるオブジェクト管理情報ポインタ１３３３に、ローカルファイル管理情報１２６へのポインタが格納されているか否かを判定する。オブジェクト管理情報ポインタ１３３３にローカルファイル管理情報１２６へのポインタが格納されている場合には、自身のローカルファイル管理情報１２６に対する読み出しであると判定される。
【０２７４】
自身のローカルファイル管理情報１２６に対する読み出しであると判定された場合、分散メモリストレージアクセス部１２４は、自身のローカルファイル管理情報１２６に基づいてファイルのデータを読み出し、処理を終了する。
【０２７５】
自身のローカルファイル管理情報１２６に対する読み出しでないと判定された場合、分散メモリストレージアクセス部１２４は、管理サーバ１０１に読み出し処理を依頼する。当該依頼を受け付けた管理サーバ１０１は、図１８に示す処理を実行する。
【０２７６】
アクセス要求が書き込み要求である場合、分散メモリストレージアクセス部１２４は、自身のローカルファイル管理情報１２６に対する書き込みであるか否かを判定する。
【０２７７】
具体的には、分散メモリストレージアクセス部１２４は、オープンファイル情報１６１におけるオブジェクト管理情報ポインタ１３３３に、ローカルファイル管理情報１２６へのポインタが格納されているか否かを判定する。
【０２７８】
自身のローカルファイル管理情報１２６に対する書き込みであると判定された場合、分散メモリストレージアクセス部１２４は、自身のローカルファイル管理情報１２６に基づいてファイルのデータを書き込み、処理を終了する。
【０２７９】
データを書き込み処理では、例えば、以下のような処理が実行される。分散メモリストレージアクセス部１２４は、ローカルファイル管理情報１２６のファイル識別情報９０１に基づいて、キー・バリュー型データを作成する。さらに、分散メモリストレージアクセス部１２４は、作成されたキー・バリュー型データに対応するエントリをエントリリスト９１１に追加し、さらに、ローカルファイル管理情報１２６を更新する。その後、分散メモリストレージアクセス部１２４は、更新されたローカルファイル管理情報１２６を管理サーバ１０１に送信する。
【０２８０】
なお、本発明は、データの書き込み処理に限定されない。キー・バリュー型データが作成できればどのような方法であってもよい。
【０２８１】
自身のローカルファイル管理情報１２６に対する書き込みでないと判定された場合、分散メモリストレージアクセス部１２４は、管理サーバ１０１に書き込み処理を依頼する。当該依頼を受け付けた管理サーバ１０１は、図１９に示す処理を実行する。
【０２８２】
次に、図１８及び図１９を用いて分散メモリストレージ３０１に対する読み出し処理及び書き込み処理について説明する。
【０２８３】
以下では、オープン処理後に、サーバ１０２から分散メモリストレージ３０１へのアクセス要求を受け付けた場合の管理サーバ１０１の処理について説明する。
【０２８４】
図１８は、本発明の実施形態における分散メモリストレージ３０１に対する読み出し処理を説明するフローチャートである。
【０２８５】
管理サーバ１０１は、サーバ１０２から分散メモリストレージ３０１へのアクセス要求を受け付けると、当該アクセス要求が読み出し要求か否かを判定する（ステップ１８０１）。
【０２８６】
具体的には、管理サーバ１０１は、アクセス要求に含まれる関数を参照して、アクセス要求が読み出し要求であるか否かを判定する。
【０２８７】
なお、当該判定処理は、サーバ１０２のファイルシステムアクセス部１２５等が実行してもよい。この場合、管理サーバ１０１は、サーバ１０２の判定結果を受信することとなる。
【０２８８】
アクセス要求が読み出し要求でないと判定された場合、すなわち、アクセス要求が書き込み要求であると判定された場合、管理サーバ１０１は、書き込み処理を実行する（ステップ１８１１）。書き込み処理については図１９を用いて後述する。
【０２８９】
アクセス要求が読み出し要求であると判定された場合、管理サーバ１０１は、読み出し処理の対象となるファイルを特定する（ステップ１８０２）。
【０２９０】
具体的には、管理サーバ１０１は、サーバ１０２が指定したグローバルファイル管理情報１３２へのポインタに基づいてファイルを特定する。なお、サーバ１０２は以下のような処理によってグローバルファイル管理情報１３２へのポインタを特定する。
【０２９１】
サーバ１０２は、ファイル記述子に基づいてオープンファイル情報１６１を特定する。次に、サーバ１０２は、特定されたオープンファイル情報１６１に基づいて、仮想ノード情報１３０３を特定する。さらに、サーバ１０２は、当該仮想ノード情報１３０３におけるオブジェクト管理情報ポインタ１３３３を参照して、グローバルファイル管理情報１３２へのポインタを特定する。
【０２９２】
このとき、管理サーバ１０１は、ファイル状態情報１５２を更新する。具体的には、処理対象であるファイルの識別情報をファイル識別情報２４０１に格納し、また、状態２４０２に読み出し処理が実行されていることを示す情報を格納する。
【０２９３】
次に、管理サーバ１０１は、レコード単位の読み出し処理であるか否かを判定する（ステップ１８０３）。
【０２９４】
レコード単位の読み出しを指定する方法としては、例えば、レコード単位の情報を読み出すための関数を用いる方法、レコード単位の読み出しを指定するフラグ等をアクセス要求に含める方法が考えられる。
【０２９５】
管理サーバ１０１は、アクセス要求に用いられる関数、又はアクセス要求に含まれるフラグ等を参照することによって、レコード単位の読み出し処理であるか否かを判定できる。なお、当該判定処理は、サーバ１０２のファイルシステムアクセス部１２５等が実行してもよい。この場合、管理サーバ１０１は、サーバ１０２の判定結果を受信することとなる。
【０２９６】
レコード単位の読み出し要求であると判定された場合、管理サーバ１０１は、グローバルファイル管理情報１３２又はローカルファイル管理情報１２６に基づいて、読み出し対象となるファイルのデータ（バリュー）をレコード単位に読み出す（ステップ１８０４）。
【０２９７】
具体的には、管理サーバ１０１は、エントリ９２１を保持するサーバ１０２にバリュー９４１の読み出しを指示する。当該指示を受けたサーバ１０２は、指定されたエントリ９２１からバリュー９４１を読み出し、読み出されたバリュー９４１を要求元のサーバ１０２に送信する。
【０２９８】
当該データを受信したサーバ１０２は、オープンファイル情報１６１のファイルポインタ１４０３を更新する。具体的には、読み出したバリュー９４１に対応するポインタがファイルポインタ１４０３に格納される。これによって、読み出し対象となるファイルのデータがどこまで読み出されたかを把握できる。
【０２９９】
管理サーバ１０１は、読み出し対象となるファイルのデータ（バリュー）が全て読み出されるまで同様の処理を実行する。
【０３００】
ステップ１８０３において、レコード単位の読み出し要求でないと判定された場合、管理サーバ１０１は、グローバルファイル管理情報１３２に基づいて、読み出し対象となるファイルのデータ（バリュー）をバッファ（図示省略）に格納する（ステップ１８２１）。
【０３０１】
なお、レコード単位の読み出し要求でない場合には、読み出すデータの要求サイズがアクセス要求に含まれる。
【０３０２】
このとき、要求サイズを超えない範囲内で、ファイルポインタ１４０３に示された位置からバリュー９４１を読み出され、読み出されたバリュー９４１がバッファ（図示省略）に格納される。
【０３０３】
管理サーバ１０１は、一定以上のデータサイズになったか否かを判定する（ステップ１８２３）。
【０３０４】
具体的には、要求サイズ分のデータ（バリュー）が読み出された、又は、バッファに所定の閾値以上のデータ（バリュー）が読み出されたか、のいずれかに該当するか否かが判定される。いずれかに該当する場合には、一定以上のデータサイズになったと判定される。
【０３０５】
一定のデータサイズになっていないと判定された場合、管理サーバ１０１は、ステップ１８２１に戻り、同様の処理（ステップ１８２１〜ステップ１８２３）を実行する。
【０３０６】
一定のデータサイズになっていると判定された場合、管理サーバ１０１は、バッファに格納されるデータ（バリュー）をサーバ１０２に送信する。
【０３０７】
なお、当該データを受信したサーバ１０２は、オープンファイル情報１６１のファイルポインタ１４０３を更新する。
【０３０８】
図１９は、本発明の実施形態における分散メモリストレージ３０１に対する書き込み処理を説明するフローチャートである。
【０３０９】
図１８のステップ１８０１において、アクセス要求が書き込み要求であった場合に、管理サーバ１０１は、以下の処理を実行する。なお、書き込み要求には、ファイル名が含まれる。
【０３１０】
管理サーバ１０１は、書き込み対象のファイル名に基づいてデータの書き込み先のディレクトリを決定する（ステップ１９０１）。
【０３１１】
具体的には、以下のような処理が実行される。
【０３１２】
まず、管理サーバ１０１は、アクセス要求に含まれる絶対パス名を参照し、当該絶対パス名に含まれるディレクトリ名に基づいて、マウント情報１５１が格納される仮想ファイルシステム情報１３０１のリストをたどり、ファイルが配置されるディレクトリを特定する。これによって、当該ディレクトリに対応するディレクトリ管理情報１３５を特定できる。
【０３１３】
また、管理サーバ１０１は、仮想ノード情報１３０３のオブジェクト管理情報ポインタ１３３３を参照して、グローバルファイル管理情報１３２へのポインタを取得する。
【０３１４】
管理サーバ１０１は、ディレクトリ管理情報１３５の配置属性情報１１０２、及び、グローバルファイル管理情報１３２に基づいて、エントリ９２１を追加するローカルファイル管理情報１２６を配置するサーバ１０２を決定する。
【０３１５】
以上の処理によってデータの書き込み先が決定される。
【０３１６】
次に、管理サーバ１０１は、ディレクトリ管理情報１３５に基づいて、書き込み対象となるデータからキー・バリュー型データを生成する（ステップ１９０２）。
【０３１７】
具体的には、管理サーバ１０１は、配置属性情報１１０２のレコード定義情報１２０１及びフィールド指定情報１２０２に基づいて、キー・バリュー型データを生成し、生成されたキー・バリュー型のデータをソートする。
【０３１８】
管理サーバ１０１は、書き込み先のサーバ１０２に対して、ローカルファイル管理情報１２６に生成されたキー・バリュー型データを追加するように指示する（ステップ１９０３）。
【０３１９】
当該指示を受信した各サーバ１０２は、追加するキー・バリュー型データの数だけエントリを生成し、エントリ９２１のファイル識別情報９３１、バリュー識別情報９３２、及び所属ローカルファイル管理情報ポインタ９３３に必要な情報を設定する。次に、各サーバ１０２は、バリューポインタ９３５に生成されたキー・バリュー型データ（バリュー９４１）へのポインタを格納する。
【０３２０】
さらに、サーバ１０２は、ソート順位に、エントリリスト９１１にエントリ９２１を追加する。このとき、エントリリストポインタ（終了）９０４が更新される。なお、ファイルが初めて生成される場合には、エントリリストポインタ９０３（開始）にもポインタが格納される。
【０３２１】
なお、書き込み時にレコード単位の書き込みが指定されていない場合には、以下のような処理を実行してもよい。
【０３２２】
まず、管理サーバ１０１は、配置属性情報１１０２のレコード定義情報１２０１に基づいて、バッファからレコード単位のデータを取得する。
【０３２３】
管理サーバ１０１は、配置属性情報１１０２のフィールド指定情報１２０２に基づいてキーとバリューとを生成し、レコード定義情報１２０１に基づいてキー・バリュー型のデータをソートする。
【０３２４】
管理サーバ１０１は、生成されたキー・バリュー型データに基づいてエントリ９２１を生成し、生成されたエントリ９２１をソート順にエントリリスト９１１に追加する。このとき、管理サーバ１０１は、どこまで書き込まれたかをサーバ１０２に通知する。
【０３２５】
当該通知を受けたサーバ１０２は、オープンファイル情報１６１のファイルポインタ１４０３を更新する。具体的には、書き込まれたデータに対応するポインタがファイルポインタ１４０３に格納される。これによって、書き込み対象となるファイルのデータがどこまで書き込まれたかを把握できる。
【０３２６】
管理サーバ１０１は、一定以上のデータサイズになったか否かを判定する。
【０３２７】
具体的には、要求サイズ分のデータ（バリュー）が書き込まれた、又は、バッファに所定の閾値以上のデータ（バリュー）が書き込まれたか、のいずれかに該当するか否かが判定される。いずれかに該当する場合には、一定以上のデータサイズになったと判定される。
【０３２８】
一定のデータサイズになっていないと判定された場合、管理サーバ１０１は、前述した処理と同様の処理を実行する。
【０３２９】
一定のデータサイズになっていると判定された場合、管理サーバ１０１は、バッファに格納されるデータを分散メモリストレージ３０１に書き込む。
【０３３０】
なお、レコード単位の書き込みを指定する方法としては、例えば、レコード単位の情報を書き込みための関数を用いる方法、レコード単位の書き込みを指定するフラグ等をアクセス要求に含める方法が考えられる。管理サーバ１０１は、アクセス要求に用いられる関数、又はアクセス要求に含まれるフラグ等を参照することによって、レコード単位の書き込み処理であるか否かを判定できる。
【０３３１】
次に、本発明の適用例について図２０及び図２１を用いて説明する。
【０３３２】
図２０は、本発明の実施形態におけるディレクトリ構造の一例を表す説明図である。
【０３３３】
図２０に示すようにルートディレクトリ「／」以下に階層状に各ディレクトリが配置されている。図２０に示すように、記憶装置１０３に配置されたディレクトリと分散メモリストレージ３０１に配置されたディレクトリとが含まれる。分散メモリストレージ３０１上には、ディレクトリ「／Ｗ」配下のディレクトリ及びファイルが配置される。
【０３３４】
サーバ１０２から、記憶装置１０３に格納されるファイルを分散メモリストレージ３０１にコピーするためのコピー要求を受け付けた場合の処理について説明する。なお、コピー要求には、コピー元のファイル名及びコピー先のファイル名が含まれる。また、ローカルアクセスは指定されていないものとする。また、記憶装置１０３のファイルについてはオープン処理が実行済みであるとする。
【０３３５】
このとき、管理サーバ１０１は、サーバ１０２からコピー要求を受け付けると、分散メモリストレージ３０１におけるオープン処理（図１７Ａ、図１７Ｂ参照）を実行する。
【０３３６】
この時点では、分散メモリストレージ３０１上にファイル名「／Ｗ／Ｘ／Ａ」のファイルは存在しないため、管理サーバ１０１は、ディレクトリ「／Ｗ／Ｘ」配下にファイルを作成するための処理（ステップ１７１２〜ステップ１７１３）を実行する。このとき、管理サーバ１０１は、ディレクトリ「／Ｗ／Ｘ」に対応するディレクトリ管理情報１３５に基づいて、エントリの配置方法等を決定する。
【０３３７】
これによって、サーバ１０２は、ディレクトリ毎に異なる配置方法、及びキー・バリュー型データの構造を意識する必要はなく、ファイル名を入力することによって自動的にキー・バリュー型データの構造、及びキー・バリュー型データの配置方法等が決定される。
【０３３８】
さらに、管理サーバ１０１は、グローバルファイル管理情報１３２へのポインタを設定し、サーバ１０２にファイル記述子を返信する（ステップ１７０７、ステップ１７０８）。
【０３３９】
次に、管理サーバ１０１は、記憶装置１０３に格納されたファイルのデータを分散メモリストレージ３０１上に格納するために、書き込み処理を実行する（図１９参照）。
【０３４０】
このとき、管理サーバ１０１は、ディレクトリ「／Ｗ／Ｘ」に対応するディレクトリ管理情報１３５に基づいて、記憶装置１０３に格納されるファイルのデータからキー・バリュー型データを生成し、決定された配置方法にしたがって各サーバ１０２に生成されたキー・バリュー型データを送信する。当該キー・バリュー型データを受信したサーバ１０２は、エントリ９２１に必要なデータを設定する。
【０３４１】
図２０に示す例では、ディレクトリ「／Ｗ／Ｘ」の配置方針はメモリ使用量平準化であり、キーにはフィールド１が用いられる。また、キーレンジの指定はされていない。
【０３４２】
以上の処理によって、記憶装置１０３から分散メモリストレージ３０１にファイルがコピーされる。
【０３４３】
次に、サーバ１０２からファイル名が「／Ｗ／Ｘ／Ａ」であるファイルを「／Ｗ／Ｙ／Ｚ」配下にコピーためのコピー要求又は移動するための移動要求を受け付けた場合の処理について説明する。なお、コピー要求又は移動要求の何れにも、コピー元のファイル名及びコピー先のファイル名が含まれる。また、「／Ｗ／Ｘ／Ａ」に対してローカルアクセスは指定されていないものとする。
【０３４４】
管理サーバ１０１は、ファイルデータを読み出すためにファイル名が「／Ｗ／Ｘ／Ａ」のファイルに対してオープン処理を実行する（図１７Ａ、図１７Ｂ参照）。このとき、分散メモリストレージ３０１にはファイル名が「／Ｗ／Ｘ／Ａ」であるファイルは存在するため、ステップ１７０７及びステップ１７０８の処理が実行される。
【０３４５】
また、管理サーバ１０１は、読み出されたエントリ９２１を書き込むためにファイル名が「／Ｗ／Ｙ／Ｚ／Ｂ」のファイルに対するオープン処理を実行する（図１７Ａ、図１７Ｂ参照）。この時点では、分散メモリストレージ３０１上にファイル名「／Ｗ／Ｙ／Ｚ」のファイルは存在しないため、管理サーバ１０１は、ディレクトリ「／Ｗ／Ｙ／Ｚ」配下にファイルを作成するための処理（ステップ１７１２〜ステップ１７１３）を実行する。このとき、管理サーバ１０１は、ディレクトリ「／Ｗ／Ｙ／Ｚ」に対応するディレクトリ管理情報１３５に基づいて、エントリの配置方法等を決定する。
【０３４６】
図２０に示す例では、ディレクトリ「／Ｗ／Ｙ／Ｚ」の配置方針はキーレンジ指定であり、キーにはフィールド２が用いられる。また、キーレンジは０−４０、４１−７０、７１−９９が指定されている。図３に示すような分散メモリストレージ３０１の場合、フィールド２の値が「０−４０」のキー・バリュー型データがサーバ１（１０２Ａ）に格納され、フィールド２の値が「４１−７０」のキー・バリュー型データがサーバ２（１０２Ｂ）に格納され、フィールド２の値が「７１−９９」のキー・バリュー型データがサーバ３（１０２Ｃ）に格納される。
【０３４７】
これによって、ＡＰ１２３は、ディレクトリ毎に異なる配置方法及びキー・バリュー型データの構造を意識する必要はなく、ファイル名を入力することによって自動的にキー・バリュー型データの構造、及びキー・バリュー型データの配置方法等が決定される。
【０３４８】
管理サーバ１０１は、オープン処理が終了すると、次に、ファイル名が「／Ｗ／Ｘ／Ａ」であるファイルのファイルデータを読み出すために読み出し処理を実行する（図１８参照）。さらに、管理サーバ１０１は、読み出されたデータをファイル名が「／Ｗ／Ｙ／Ｚ／Ｂ」のファイルに書き込むための書き込み処理を実行する（図１９参照）。
【０３４９】
このとき、ステップ１９０３において、ディレクトリ「／Ｗ／Ｙ／Ｚ」に対応するディレクトリ管理情報１３５に基づいて、ディレクトリ「／Ｗ／Ｘ／Ａ」配下のキー・バリュー型データからディレクトリ「／Ｗ／Ｙ／Ｚ」配下のキー・バリュー型データ（エントリ９２１）が生成される。さらに、ディレクトリ「／Ｗ／Ｙ／Ｚ」に対応するディレクトリ管理情報１３５に基づいて、生成されたキー・バリュー型データ（エントリ９２１）が分散メモリストレージ３０１上に配置される。
【０３５０】
図２１は、本発明の実施形態におけるディレクトリ間のファイルのデータをコピーした場合のキー・バリュー型データの配置例を示す説明図である。
【０３５１】
ファイル２００１−１は、図２０のファイル名が「／Ｗ／Ｘ／Ａ」のファイルを表す。
【０３５２】
ディレクトリ「／Ｗ／Ｘ／」の配置方針はメモリ使用量平準化であるため、ファイル２００１−１を構成するキー・バリュー型データ２０１１−１〜２０１１−６は、各サーバ１０２に均等に配置される。
【０３５３】
ファイル２００１−２は、図２０のファイル名が「／Ｗ／Ｙ／Ｚ／Ｂ」のファイルを表す。
【０３５４】
ディレクトリ「／Ｗ／Ｙ／Ｚ」の配置方針はキーレンジ指定であるため、ファイル２００１−２を構成するキー・バリュー型データ２０２１−１〜２０２１−６は、キーレンジに基づいて各サーバ１０２に配置される。
【０３５５】
ここで、ディレクトリ「／Ｗ／Ｘ」におけるキー・バリュー型データ２０１１−１は、「／Ｗ／Ｘ／Ａ」及び「１０１」からキーが構成され、「１０１」、「１１」及び「ａｂｃ」がバリューである。また、ディレクトリ「／Ｗ／Ｙ／Ｚ」におけるキー・バリュー型データ２０２１−１は、「／Ｗ／Ｙ／Ｚ／Ｂ」及び「１１」からキーが構成され、「１０１」、「１１」及び「ａｂｃ」がバリューである。
【０３５６】
図２１に示すように、ファイルをディレクトリ「／Ｗ／Ｘ」からディレクトリ「／Ｗ／Ｙ／Ｚ」へコピー又は移動させた場合、矢印に示すような関係になる。
【０３５７】
キー・バリュー型データ２０１１−１はキー・バリュー型データ２０２１−１、キー・バリュー型データ２０１１−２はキー・バリュー型データ２０２１−５、キー・バリュー型データ２０１１−３はキー・バリュー型データ２０２１−４、キー・バリュー型データ２０１１−４はキー・バリュー型データ２０２１−６、キー・バリュー型データ２０１１−５はキー・バリュー型データ２０２１−３、キー・バリュー型データ２０１１−６はキー・バリュー型データ２０２１−２に対応する。
【０３５８】
以上の処理によって、分散メモリストレージ３０１上のディレクトリ間においてファイルのコピー又は移動が可能となる。
【０３５９】
前述のように、サーバ１０２は、ディレクトリ毎に異なるキー、及びキー・バリュー型データの配置方法等を指定する必要がなくファイル名のみを指定すればよい。すなわち、ＡＰ１２３は、通常のファイルＩ／Ｆを用いて分散メモリストレージ３０１上のファイル操作を実行できる。したがって、キー・バリュー型データの構造に対応したＡＰ１２３を用いることなく分散メモリストレージ３０１のデータを操作できる。すなわち、キー・バリュー型データ毎にＡＰ１２３を作り込む必要がない。
【０３６０】
図２２Ａ、図２２Ｂ及び図２２Ｃは、本発明の実施形態のおけるサーバ１０２の入力と、管理サーバ１０１からの応答との対応を表した説明図である。
【０３６１】
図２２Ａは、ＡＰ１２３がファイル名を指定した場合における管理サーバ１０１の応答を示す図である。
【０３６２】
図２２Ａに示すように、ＡＰ１２３から、ファイル名を含む読み出し要求が入力されると、管理サーバ１０１は、分散メモリストレージ３０１上の対応する全てのキー・バリュー型データからバリューを読み出して、読み出されたバリューを応答としてサーバ１０２に送信する。
【０３６３】
図２２Ｂは、ＡＰ１２３がファイル名と、ローカルアクセスとを指定した場合における管理サーバ１０１の応答を示す図である。
【０３６４】
図２２Ｂに示すように、ＡＰ１２３から、ファイル名とローカルアクセス指定とを含む読み出し要求が入力されると、管理サーバ１０１は、当該サーバ１０２上のキー・バリュー型データからバリューを読み出し、読み出されたバリューを応答としてサーバ１０２に送信する。
【０３６５】
図２２Ｃは、ＡＰ１２３がキーを指定した場合における管理サーバ１０１の応答を示す図である。
【０３６６】
図２２Ｃに示すように、ＡＰ１２３から、キーを含む読み出し要求が入力されると、管理サーバ１０１は、当該キーに対応するバリューを読み出し、読み出されたバリューを応答としてサーバ１０２に送信する。なお図２２Ｃの処理は、通常のキー・バリュー型データのデータ読み出しと同一の処理である。
【０３６７】
本発明の一形態によれば、サーバ１０２のＡＰ１２３は、ファイルＩ／Ｆを用いてキー・バリュー型データ形式のデータベースにアクセスすることができる。したがって、キー毎に異なるアプリケーションを作成する必要がない。また、ローカル指定をすることによって、ファイルデータうち必要なデータのみにアクセスすることが可能となる。
【０３６８】
なお、本実施形態では、管理サーバ１０１とサーバ１０２とはそれぞれが異なる処理を行う装置として説明してきたが、管理サーバ１０１のメモリ１１２の一部を分散メモリストレージ３０１に用いる等、管理サーバ１０１が、サーバ１０２が有する機能も含むような構成としてもよい。
【０３６９】
［変形例１］
本発明は、管理サーバ１０１が、オープンファイル情報１６１を備える形態にも適用可能である。この場合、管理サーバ１０１が、オープンファイル情報１６１に基づいて、ローカルファイル管理情報１３２、又は、グローバルファイル管理情報１３２へのアクセスか否かを判定する。
【０３７０】
以下、読み出し処理（図１８）及び書き込み処理（図１９）の差異について説明する。
【０３７１】
読み出し処理ではステップ１８０２の処理が異なる。
【０３７２】
管理サーバ１０１は、オープンファイル情報１６１を特定し、特定されたオープンファイル情報１６１に基づいて、仮想ノード情報１３０３を特定する。
【０３７３】
さらに、管理サーバ１０１は、当該仮想ノード情報１３０３におけるオブジェクト管理情報ポインタ１３３３を参照して、ローカルファイル管理情報１２６、又は、グローバルファイル管理情報１３２のいずれが読み出されるか判定する。
【０３７４】
オブジェクト管理情報ポインタ１３３３に、グローバルファイル管理情報１３２へのポインタが格納される場合、分散メモリストレージ３０１に格納される全てのローカルファイル管理情報１２６が読み出し対象となる。一方、オブジェクト管理情報ポインタ１３３３に、ローカルファイル管理情報１２６へのポインタが格納される場合、分散メモリストレージ３０１を構成する一つのサーバ１０２のローカルファイル管理情報１２６が読み出し対象となる。
【０３７５】
オブジェクト管理情報ポインタ１３３３に、グローバルファイル管理情報１３２へのポインタが格納される場合は図１８と同一の処理となる。
【０３７６】
一方、オブジェクト管理情報ポインタ１３３３に、ローカルファイル管理情報１２６へのポインタが格納される場合、管理サーバ１０１は、読み出し要求を送信したサーバ１０２自身のローカルファイル管理情報１２６を読み出し対象とする。
【０３７７】
他の処理は同一である。
【０３７８】
書き込み処理ではステップ１９０１の処理が異なる。
【０３７９】
管理サーバ１０１は、オープンファイル情報１６１を特定し、特定されたオープンファイル情報１６１に基づいて、仮想ノード情報１３０３を特定する。
【０３８０】
次に、管理サーバ１０１は、特定されたに基づいて、仮想ノード情報１３０３を特定する。さらに、管理サーバ１０１は、特定された仮想ノード情報１３０３の所属ＶＦＳポインタ１３３１を参照して、図１３に示すような関係をたどることによってファイルが配置されるディレクトリを特定する。これによって、当該ディレクトリに対応するディレクトリ管理情報１３５を特定できる。
【０３８１】
さらに、管理サーバ１０１は、特定された仮想ノード情報１３０３のオブジェクト管理情報ポインタ１３３３を参照して、書き込み先を特定する。
【０３８２】
オブジェクト管理情報ポインタ１３３３にグローバルファイル管理情報１３２へのポインタが格納される場合は、図１９と同一の処理となる。
【０３８３】
一方、オブジェクト管理情報ポインタ１３３３にローカルファイル管理情報１２６へのポインタが格納される場合、管理サーバ１０１は、書き込み要求を送信したサーバ１０２に自身のローカルファイル管理情報１３２にエントリを生成するように指示する。
【０３８４】
なお、管理サーバ１０１は、図１９と同一の処理によって取得されたエントリ生成に必要な情報を当該指示と共に送信する。
【０３８５】
当該指示を受信したサーバ１０２は、受信した情報にしたがってデータを書き込む。
【０３８６】
［変形例２］
他の実施形態としては、オープン処理、読み出し処理、及び書き込み処理などのファイルに対する処理を専用のライブラリで行う方法が考えられる。すなわち、オープン処理、読み出し処理、書き込み処理などのファイルに対する処理を実行する関数として、専用のライブラリ関数を用いる。
【０３８７】
ＡＰ１２３が専用のライブラリ関数を使用した場合、ライブラリでは、まず、分散メモリストレージ３０１上のファイルに対する操作か否かを判定する。この判定は、例えば、ファイル名として、特定のディレクトリ名を含むように指定されているか否かを判定する方法が考えられる。
【０３８８】
つまり、第一の実施形態の図１７に示したオープン処理において、ステップ１７０１の判定では、管理サーバ１０１は、対象ファイルが特定のディレクトリ名を含む場合、分散メモリストレージ３０１上のファイルであると判定し、ライブラリの中でステップ１７０２以下の処理を実行する。一方、対象ファイルが特定のディレクトリ名を含まない場合、管理サーバ１０１は、通常のファイル操作として、従来のオープン関数を実行する。
【０３８９】
分散メモリストレージ３０１上のファイルであると判定された場合、管理サーバ１０１は、オープン関数の戻り値として、前述の通常のオープン関数が返すファイル記述子に相当する値をライブラリ内のファイル記述子として返す。この後のＡＰ１２３からの読み出し、及び、書き込み要求では、当該ライブラリ内のファイル記述子を指定することによって、図１８及び図１９と同様の処理が可能になる。
【０３９０】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０３９１】
１０２  サーバ
１０３  記憶装置
１０４  ネットワーク
１２１  分散メモリストレージ管理部
１２２  ファイルシステム管理部
１２３  ＡＰ
１２４  分散メモリストレージアクセス部
１２５  ファイルシステムアクセス部
１２６  ローカルファイル管理情報
１３０  対象仮想ファイルシステム情報
１３１  キー・バリュー型データ管理部
１３２  グローバルファイル管理情報
１３３  分散メモリストレージ構成情報
１３４  分散メモリストレージ管理情報
１３５  ディレクトリ管理情報
１４１  ファイルシステム名前空間アクセス部
１４２  ファイルアクセス部
１４３  ディレクトリ属性管理部
１４４  ディレクトリ管理情報
１５１  マウント情報
１５２  オープンファイル情報
３０１  分散メモリストレージ
３０２  キー・バリュー型データ
【図１】
0005589205.tif 000002
【図２】
0005589205.tif 000003
【図３】
0005589205.tif 000004
【図４】
0005589205.tif 000005
【図５】
0005589205.tif 000006
【図６】
0005589205.tif 000007
【図７】
0005589205.tif 000008
【図８】
0005589205.tif 000009
【図９】
0005589205.tif 000010
【図１０】
0005589205.tif 000011
【図１１】
0005589205.tif 000012
【図１２】
0005589205.tif 000013
【図１３】
0005589205.tif 000014
【図１４】
0005589205.tif 000015
【図１５】
0005589205.tif 000016
【図１６】
0005589205.tif 000017
【図１７Ａ】
0005589205.tif 000018
【図１７Ｂ】
0005589205.tif 000019
【図１８】
0005589205.tif 000020
【図１９】
0005589205.tif 000021
【図２０】
0005589205.tif 000022
【図２１】
0005589205.tif 000023
【図２２Ａ】
0005589205.tif 000024
【図２２Ｂ】
0005589205.tif 000025
【図２２Ｃ】
0005589205.tif 000026
【図２３】
0005589205.tif 000027
【図２４】
0005589205.tif 000028
【図２５】
0005589205.tif 000029