(57)【特許請求の範囲】
【請求項１】
１つのデータファイルのメタ情報を格納したメタデータファイルを、複数に分割して格納する複数のメタデータファイル格納手段と、
前記データファイルの識別情報と、ハッシュ関数の数式との対応情報を格納する、ハッシュ関数設定情報格納手段と、
前記対応情報を構成するレコードの中から、前記データファイルの識別情報が、前記データファイルへのアクセス命令における当該データファイルの識別情報と一致するレコードを参照して、当該レコードに格納された前記ハッシュ関数の数式に対して、前記データファイルへのアクセス命令において指定された当該データファイルの識別情報と、当該データファイルにおけるアクセスアドレスの情報とを入力し、前記ハッシュ関数の出力値から、当該データファイルの当該アクセスアドレスに対応する前記メタデータファイルを格納する前記メタデータファイル格納手段の識別情報を一意に決定するメタデータファイル格納領域決定手段と、
前記メタデータファイル格納領域決定手段が決定した前記メタデータファイル格納手段へアクセスするメタデータファイルアクセス手段と、
を備える分散ファイルアクセス装置。
【請求項２】
前記メタデータファイル格納手段は、１つの前記データファイルを構成する複数のブロック領域単位で、前記ブロック領域に対応する前記メタデータファイルを格納し、
前記メタデータファイル格納領域決定手段は、前記アクセス命令において指定された当該データファイルにおける前記アクセスアドレスを、前記ブロック領域単位で、当該データファイルの識別情報とともに前記ハッシュ関数に入力して、当該ブロック領域に対応する前記メタデータファイルを格納する前記メタデータファイル格納手段の識別情報を一意に決定する
請求項１の分散ファイルアクセス装置。
【請求項３】
請求項１または２に記載の分散ファイルアクセス装置と、
前記データファイルへのアクセス命令を発行して前記データファイルへアクセスするプロセス実行装置と、
前記データファイルを格納するデータファイル格納装置と、
を包含する分散ファイルアクセスシステム。
【請求項４】
１つのデータファイルのメタ情報を格納したメタデータファイルが、複数に分割して複数のメタデータファイル格納手段に格納され、
前記データファイルの識別情報と、ハッシュ関数の数式との対応情報が、ハッシュ関数設定情報格納手段に格納され、
前記対応情報を構成するレコードの中から、前記データファイルの識別情報が、前記データファイルへのアクセス命令における当該データファイルの識別情報と一致するレコードを参照して、当該レコードに格納された前記ハッシュ関数の数式に対して、前記データファイルへのアクセス命令において指定された当該データファイルの識別情報と、当該データファイルにおけるアクセスアドレスの情報とを入力し、前記ハッシュ関数の出力値から、当該データファイルの当該アクセスアドレスに対応する前記メタデータファイルを格納する前記メタデータファイル格納手段の識別情報を一意に決定し、
決定した前記メタデータファイル格納手段へアクセスする
分散ファイルアクセス方法。
【請求項５】
前記メタデータファイル格納手段には、１つの前記データファイルを構成する複数のブロック領域単位で、前記ブロック領域に対応する前記メタデータファイルが格納され、
前記アクセス命令において指定された当該データファイルにおける前記アクセスアドレ
スを、前記ブロック領域単位で、当該データファイルの識別情報とともに前記ハッシュ関
数に入力して、当該ブロック領域に対応する前記メタデータファイルが格納された前記メ
タデータファイルを格納する前記メタデータファイル格納手段の識別情報を一意に決定する
請求項４の分散ファイルアクセス方法
【請求項６】
１つのデータファイルのメタ情報を格納したメタデータファイルを、複数に分割して格納する複数のメタデータファイル格納手段と、
前記データファイルの識別情報と、ハッシュ関数の数式との対応情報を格納する、ハッシュ関数設定情報格納手段と、
にアクセス可能なコンピュータに、
前記対応情報を構成するレコードの中から、前記データファイルの識別情報が、前記データファイルへのアクセス命令における当該データファイルの識別情報と一致するレコードを参照して、当該レコードに格納された前記ハッシュ関数の数式に対して、前記データファイルへのアクセス命令において指定された当該データファイルの識別情報と、当該データファイルにおけるアクセスアドレスの情報とを入力し、前記ハッシュ関数の出力値から、当該データファイルの当該アクセスアドレスに対応する前記メタデータファイルを格納する前記メタデータファイル格納手段の識別情報を一意に決定するメタデータファイル格納領域決定処理と、
前記メタデータファイル格納領域決定処理が決定した前記メタデータファイル格納手段へアクセスするメタデータファイルアクセス処理と、
を実行させる分散ファイルアクセスプログラム。
【請求項７】
前記メタデータファイル格納手段には、１つの前記データファイルを構成する複数のブロック領域単位で、前記ブロック領域に対応する前記メタデータファイルが格納され、
前記メタデータファイル格納領域決定処理は、前記アクセス命令において指定された当該データファイルにおける前記アクセスアドレスを、前記ブロック領域単位で、当該データファイルの識別情報とともに前記ハッシュ関数に入力して、当該ブロック領域に対応する前記メタデータファイルを格納する前記メタデータファイル格納手段の識別情報を一意に決定する
請求項６の分散ファイルアクセスプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、分散ファイルシステムを持つコンピュータシステムで、ファイルへのアクセス性能を向上させるための分散ファイルアクセス装置、分散ファイルアクセスシステム、分散ファイルアクセス方法、及び、分散ファイルアクセスプログラムに関する。
【背景技術】
【０００２】
高速な科学技術計算性能が要求されるＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）の領域では高並列化の技術が発達し、最近では実行するプログラムの並列数が数千から数万に達することも珍しくなくなってきている。プログラムの並列数が増すに従い使用するファイル数も増加するため、ファイルの取り扱いが困難になる。このため、並列Ｉ／Ｏ処理機能であるＭＰＩ−ＩＯを使用し、複数のプロセスが、１つのファイルにおける他のプロセスと重ならないブロックに対して同時にアクセスするような方式も出てきている。
【０００３】
このような高並列コンピュータシステムでは、プログラムの並列数が増加すればするほど１つのファイルへアクセスするプログラムの数が増加する。このため、そのファイルを格納したサーバの処理負荷が増大してシステム全体のボトルネックとなり、システム性能が低下する原因の一つとなっている。
【０００４】
このようなシステム性能の低下を回避するための技術として、特許文献１には、論理ファイルを複数ディスク装置に分割して保存することで、並行して複数ディスク装置のファイルブロックにアクセスできるようにしたストライピングファイル機構による論理ファイルの分散管理方法に関するものが公開されている。ここで公開されている技術は、ファイル読み出し時のディスク装置へ並列での読み出しの効率化を図り、大容量ファイルの読み出し時間を短縮化するための方法である。
【０００５】
また、特許文献２には、仮想ファイルサーバが設定された複数の装置によって構成されるクラスタ内で仮想ファイルサーバを動的に移動させることにより、仮想ファイルサーバ単位の負荷分散を行い、特定のファイルサーバへの負荷の集中を回避するシステムが公開されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2002-182953
【特許文献２】特開2005-267327
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のような分散ファイルシステムを持つコンピュータシステムにおいては、ファイルへのアクセス時にファイルの存在場所等の情報を入手する必要があるため、まずファイルのメタ情報を格納したメタデータファイルへアクセスすることになる。高並列コンピュータシステムでは、このメタデータファイルへのアクセスが集中することによるメタデータファイルを格納したサーバの処理負荷が増大することがあるが、前述の特許文献１や特許文献２に記載された技術は、このメタデータファイルを格納したサーバの負荷を軽減するものではない。したがって、高並列化コンピュータシステムにおいては、メタデータファイルへのアクセスの集中がボトルネックとなり、システムの性能低下が生じる恐れがあるという問題がある。
【０００８】
本願発明の目的は、これらの問題点を解決した分散ファイルアクセス装置、分散ファイルアクセスシステム、分散ファイルアクセス方法、及び、分散ファイルアクセスプログラムを提供することである。
【課題を解決するための手段】
【０００９】
本願発明の一実施形態の分散ファイルアクセス装置は、１つのデータファイルのメタ情報を格納したメタデータファイルを、複数に分割して格納する複数のメタデータファイル格納手段と、前記データファイルへのアクセス命令において指定された当該データファイルの識別情報と、当該データファイルにおけるアクセスアドレスの情報とをハッシュ関数に入力し、前記ハッシュ関数の出力値から、当該データファイルの当該アクセスアドレスに対応する前記メタデータファイルを格納する前記メタデータファイル格納手段の識別情報を一意に決定するメタデータファイル格納領域決定手段と、前記メタデータファイル格納領域決定手段が決定した前記メタデータファイル格納手段へアクセスするメタデータファイルアクセス手段と、を備える。
【００１０】
本願発明の一実施形態の分散ファイルアクセス方法は、１つのデータファイルのメタ情報を格納したメタデータファイルを、複数に分割して複数の記憶域に格納し、前記データファイルへのアクセス命令において指定された当該データファイルの識別情報と、当該データファイルにおけるアクセスアドレスの情報とをハッシュ関数に入力し、前記ハッシュ関数の出力値から、当該データファイルの当該アクセスアドレスに対応する前記メタデータファイルを格納する前記記憶域の識別情報を一意に決定し、決定した前記識別情報が示す前記記憶域へアクセスする。
【００１１】
本願発明の一実施形態の分散ファイルアクセスプログラムは、１つのデータファイルのメタ情報を格納したメタデータファイルを、複数に分割して複数の記憶域に格納するメタデータファイル格納処理と、前記データファイルへのアクセス命令において指定された当該データファイルの識別情報と、当該データファイルにおけるアクセスアドレスの情報とをハッシュ関数に入力し、前記ハッシュ関数の出力値から、当該データファイルの当該アクセスアドレスに対応する前記メタデータファイルを格納する前記記憶域の識別情報を一意に決定するメタデータファイル格納領域決定処理と、前記メタデータファイル格納領域決定処理が決定した前記記憶域へアクセスするメタデータファイルアクセス処理と、をコンピュータに実行させる。
【発明の効果】
【００１２】
本願発明は、メタデータファイルへのアクセスにおいて負荷分散を実現する。
【図面の簡単な説明】
【００１３】
【図１】本願発明の第１の実施形態の構成を示すブロック図である。
【図２】本願発明の第１の実施形態の動作を示すフローチャートである。
【図３】本願発明の第１の実施形態におけるメタデータの分散格納の構成例である。
【図４】本願発明の第１の実施形態におけるプロセス実行部からのファイルアクセス命令の構成例である。
【図５】本願発明の第１の実施形態におけるメタデータファイルの構成例である。
【図６】本願発明の第２の実施形態の構成を示すブロック図である。
【図７】本願発明の第２の実施形態におけるハッシュ関数設定情報の構成例である。
【図８】本願発明の第３の実施形態の構成を示すブロック図である。
【図９】本願発明の第３の実施形態におけるメタデータの分散格納の構成例である。
【発明を実施するための形態】
【００１４】
本願発明の第一の実施の形態について図面を参照して詳細に説明する。
【００１５】
図１は本願発明の第一の実施形態の構成を示すブロック図である。
【００１６】
本実施形態の分散ファイルアクセスシステムは、８個のプロセス実行部１０−０乃至１０−７と、４個のデータファイル格納部１１−０乃至１１−３と、３個のメタデータファイル格納部１２−０乃至１２−２と、メタデータファイルアクセス部１３と、メタデータファイル格納領域決定部１４と、データファイルアクセス部１５とを包含している。
【００１７】
プロセス実行部１０−０乃至１０−７は並列化されたプロセスを実行している。プロセスがファイルアクセスを行う場合、ファイルアクセス命令を発行してメタデータファイルアクセス部１３へ送付する。
【００１８】
各プロセスが、データファイル１００「／ｄｉｒ＿１／ｆｉｌｅ＿Ａ」にアクセスするときのメタデータの分散格納の構成例を図３に示す。プロセス実行部１０−０乃至１０−７が実行しているプロセス０乃至プロセス７は、それぞれデータファイル１００における他のプロセスとは重ならない２Ｇバイトの領域（ブロック０乃至ブロック７）をアクセスする。例えば、プロセス０はブロック０（０乃至２Ｇバイト領域）、プロセス１はブロック１（２乃至４Ｇバイト領域）、プロセス７はブロック７（１４乃至１６Ｇバイト領域）をアクセスする。
【００１９】
各プロセスが発行するファイルアクセス命令１１０の構成例を図４に示す。例えばプロセス実行部１０−２におけるプロセス２が発行するデータファイル１００へのリードアクセス命令の場合、Ｒｅａｄ／Ｗｒｉｔｅ区分はＲｅａｄ、データファイル名称は／ｄｉｒ＿１／ｆｉｌｅ＿Ａ、開始オフセットは４Ｇバイト以上６Ｇバイト未満の値、アクセスサイズは０バイト以上２Ｇバイト以下の値となる。
【００２０】
データファイル格納部１１−０乃至１１−３は、データファイル１００を分割して格納しており、それぞれのシステム管理上の名称はＳＳ０乃至ＳＳ３である。
【００２１】
メタデータファイル格納部１２−０乃至１２−２は、データファイル１００のメタデータを記録したメタデータファイルを分割して格納しており、それぞれのシステム管理上の名称はＭＤＳ０乃至ＭＤＳ３である。
【００２２】
メタデータファイルの構成例を図５に示す。メタデータファイルは、メタデータファイル属性情報部１２０とメタデータファイル対応表部１３０を包含している。メタデータファイル属性情報部１２０は、データファイル１００の属性情報を記録したものであり、データファイル名称、アクセス権、所有者、サイズ、メタデータブロックサイズを包含している。メタデータファイル属性情報部１２０の格納データは、ライトアクセスのファイルアクセス命令１１０が発行されたときに、メタデータファイル格納部１２−０乃至１２−２により、ファイルアクセス命令１１０が包含する情報やシステム情報に基づいて書き込まれたものである。
【００２３】
メタデータファイル対応表部１３０は、データファイル１００の格納先の情報を記録したものである。メタデータファイル対応表部１３０の格納データは、ライトアクセスのファイルアクセス命令１１０が発行されたときに、メタデータファイル格納部１２−０乃至１２−２により、ファイルアクセス命令１１０が包含するデータファイル名称、開始オフセット、アクセスサイズの情報を基にして書き込まれたものである。
【００２４】
本実施形態の分散ファイルアクセスシステムは、メタデータファイル対応表部１３０をメタデータファイル格納部１２−０乃至１２−２に分散格納する。メタデータファイル属性情報部１２０については分散格納を行わずに、メタデータファイル対応表部１３０の先頭部分のデータを格納するメタデータファイル格納部に格納する。
【００２５】
図５に示すとおり、本実施形態では、メタデータファイル格納部１２−０乃至１２−２は、データファイル１００を５３６８７０９１２バイト（５１２Ｍバイト）単位のブロックに分割し、各ブロックをデータファイル格納部１１−０（ＳＳ０）乃至１１−３（ＳＳ３）にラウンドロビンで順番に格納している。尚、これは一例であり、メタデータファイル格納部１２−０乃至１２−２は、データファイル100を他のサイズのブロックで分割する場合もあれば、分割しない場合もある。
【００２６】
メタデータファイル格納部１２−０乃至１２−２は、各ブロックのシステム管理上の実ファイル名を、データファイル１００の名称と、上述した５１２Ｍバイトブロックの開始オフセットと終了オフセットを基に、一意になるように付与している。例えば最初の５１２Ｍバイトブロックの場合は、ｄｉｒ＿１＿ｆｉｌｅ＿Ａ：０＿５３６８７０９１１となる。
【００２７】
図３、図５に示すとおり、メタデータファイル格納部１２−０（ＭＤＳ０）乃至１２−２（ＭＤＳ２）は、データファイル１００のメタデータファイルを、データファイル１００の３Ｇバイト領域単位に対応したメタデータに分割して分散格納している。例えば、メタデータファイル格納部１２−１（ＭＤＳ１）は、データファイル１００の０乃至３Ｇ−１バイト領域に対応するメタデータを格納する。メタデータファイル格納部１２−２（ＭＤＳ２）は、データファイル100の３Ｇ乃至６Ｇ−１バイト領域に対応するメタデータを格納する。
【００２８】
メタデータファイルアクセス部１３は、プロセス実行部１０−０乃至１０−７から受信した、ファイルアクセス命令１１０におけるデータファイル名称と開始オフセットとアクセスサイズの情報を、メタデータファイル格納領域決定部１４に送付する。
【００２９】
メタデータファイル格納領域決定部１４は、データファイル名称と開始オフセットとアクセスサイズの情報を基に、ハッシュ関数１４０を用いて、データファイル１００のメタデータを格納したメタデータファイル格納部を決定する。ハッシュ関数１４０の具体例ＭＤＳｎｕｍ（ｘ，ｂ）を以下に示す。
【００３０】
ＭＤＳｎｕｍ（ｘ，ｂ）＝（ｆｌｏｏｒ（ｘ／３ＧＢ）＋ａｓｃｉｉ（ｂ））  ｍｏｄ  ３
このハッシュ関数において、ｘはデータファイル１００における位置を示すオフセット、ｂはデータファイル１００の名称、ｆｌｏｏｒ（ｚ）はｚ以下の最大の整数を出力する関数、ａｓｃｉｉ（ｂ）は文字列ｂの各文字のアスキーコードの和を出力する関数である。データファイル１００「／ｄｉｒ＿１／ｆｉｌｅ＿Ａ」へのアクセスの場合、ａｓｃｉｉ（／ｄｉｒ＿１／ｆｉｌｅ＿Ａ）の値は１１３８となる。ハッシュ関数１４０がｆｌｏｏｒ（ｘ／３ＧＢ）を使用するのは、データファイル１００の３Ｇバイト領域単位でメタデータを分割して、メタデータファイル格納部１２−０乃至１２−２を割り当てるためである。ハッシュ関数１４０がｍｏｄ  ３を使用するのは、メタデータファイル格納部１２−０乃至１２−２の数が３個であるためである。
【００３１】
例えば、プロセス実行部１０−１が実行しているプロセス１が、データファイル１００における開始オフセット２Ｇバイトから２Ｇバイトサイズの領域へのファイルアクセス命令１１０を発行した場合、メタデータファイル格納領域決定部１４は、ＭＤＳｎｕｍ（２ＧＢ，／ｄｉｒ＿１／ｆｉｌｅ＿Ａ）＝１、ＭＤＳｎｕｍ（３ＧＢ，／ｄｉｒ＿１／ｆｉｌｅ＿Ａ）＝２、ＭＤＳｎｕｍ（４Ｇ−１Ｂ，／ｄｉｒ＿１／ｆｉｌｅ＿Ａ）＝２を算出する。その結果、メタデータファイル格納領域決定部１４は、メタデータファイルアクセス部１３に対して、「／ｄｉｒ＿１／ｆｉｌｅ＿Ａのオフセット２Ｇバイト乃至３Ｇ−１バイトの領域に対するメタデータファイル格納部はＭＤＳ１」であることと、「／ｄｉｒ＿１／ｆｉｌｅ＿Ａのオフセット３Ｇバイト乃至４Ｇ−１バイトの領域に対するメタデータファイル格納部はＭＤＳ２」であることを通知する。
【００３２】
前記の例で、ＭＤＳｎｕｍ（３ＧＢ，／ｄｉｒ＿１／ｆｉｌｅ＿Ａ）＝２を算出するのは、データファイル１００の３Ｇバイト領域単位でメタデータを分割して、メタデータファイル格納部１２−０乃至１２−２を割り当てるためである。すなわち、３Ｇバイト境界を境に格納先のメタデータファイル格納部１２−０乃至１２−２が変わるからである。メタデータファイル格納領域決定部１４は、データファイル１００のアクセス領域の開始オフセットと終了オフセットの間に３Ｇバイト境界が存在する場合は、境界部分についてハッシュ関数１４０の値を算出する。
【００３３】
メタデータファイルアクセス部１３は、メタデータ格納領域決定部１４から受信したメタデータファイル格納先の情報に従い、メタデータファイル格納部１２−０乃至１２−２の何れかにアクセスする。プロセス実行部１０−１のプロセス１が、データファイル１００における開始オフセット２Ｇバイトから２Ｇバイトサイズの領域へのファイルアクセス命令１１０を発行した場合の例では、メタデータファイルアクセス部１３は、上述の通りメタデータファイル格納部１２−１（ＭＤＳ１）、１２−２（ＭＤＳ２）へアクセスする。
【００３４】
メタデータファイルアクセス部１３は、図５におけるメタデータファイル対応表部１３０に記載のとおり、メタデータファイル格納部１２−１（ＭＤＳ１）から、データファイル１００のオフセット２Ｇバイト乃至３Ｇ−１バイトの領域のデータの格納先がデータファイル格納部１１−０（ＳＳ０）と１１−１（ＳＳ１）（５１２Ｍバイトブロック単位で分割格納）であることを、その実ファイル名とともに読み出す。続いてメタデータファイルアクセス部１３は、メタデータファイル格納部１２−２（ＭＤＳ２）から、データファイル１００のオフセット３Ｇバイト乃至４Ｇ−１バイトの領域のデータの格納先がデータファイル格納部１１−２（ＳＳ２）と１１−３（ＳＳ３）（５１２Ｍバイトブロック単位で分割格納）であることを、その実ファイル名とともに読み出す。メタデータファイルアクセス部１３は、読み出したデータファイル格納先と実ファイル名の情報を、データファイルアクセス部１５へ送付する。
【００３５】
データファイルアクセス部１５は、メタデータファイルアクセス部１３から受信したテータファイル格納先と実ファイル名の情報に基づき、データファイル格納部１１−０乃至１１−３へアクセスする。
【００３６】
次に図２のフローチャートを参照して、本実施形態の動作について詳細に説明する。
【００３７】
プロセス実行部１０−０乃至１０−７が実行しているプロセスは、データファイル１００へのファイルアクセス命令１１０を発行し、メタデータファイルアクセス部１３へ送付する（Ｓ１０１）。
【００３８】
メタデータファイルアクセス部１３は、ファイルアクセス命令１１０をメタデータファイル格納領域決定部１４へ送付する（Ｓ１０２）。
【００３９】
メタデータファイル格納領域決定部１４は、ファイルアクセス命令１１０におけるデータファイル名称と開始オフセットとアクセスサイズの情報から、ハッシュ関数１４０を使用してデータファイル１００に対応するメタデータファイルの格納先となるメタデータファイル格納部を決定し、メタデータファイル格納先の情報をメタデータファイルアクセス部１３へ送付する（Ｓ１０３）。
【００４０】
メタデータファイルアクセス部１３は、受信したメタデータファイル格納先の情報が示す何れかのメタデータファイル格納部１２−ｎ（ｎ＝０乃至２の何れか）に、ファイルアクセス命令１１０を送付する（Ｓ１０４）。
【００４１】
ファイルアクセス命令１１０がＷｒｉｔｅリクエストである場合（Ｓ１０５でＹｅｓ）、メタデータファイル格納部１２−ｎは、ファイルアクセス命令１１０の情報から、データファイル１１０のメタデータを作成し、メタデータファイル属性情報部１２０とメタデータファイル対応表部１３０に、メタデータを書き込む（Ｓ１０６）。
【００４２】
メタデータファイル格納部１２−ｎは、作成したデータファイル１１０のメタデータをメタデータファイルアクセス部１３へ送付する（Ｓ１０７）。
【００４３】
ファイルアクセス命令１１０がＷｒｉｔｅリクエストでない場合（Ｓ１０５でＮｏ）、ファイルアクセス命令１１０はＲｅａｄリクエストであり、メタデータファイル格納部１２−ｎは、メタデータファイル対応表部１３０から、ファイルアクセス命令１１０が包含する情報から決定するレコードに格納されたメタデータを読み込む（Ｓ１０８）。
【００４４】
メタデータファイル格納部１２−ｎは、読み込んだデータファイル１１０のメタデータを、メタデータファイルアクセス部１３へ送付する（Ｓ１０９）。
【００４５】
メタデータファイルアクセス部1３は、データファイル１１０のメタデータを、データファイルアクセス部１５へ送付する（Ｓ１１０）。
【００４６】
データファイルアクセス部１５は、データファイル１１０のメタデータが示す何れかのデータファイル格納部１１−０乃至１１−３に対して、データファイル１１０のメタデータが示す実ファイル名でアクセスする（Ｓ１１１）。
【００４７】
本実施形態には、データファイルのメタデータを格納したメタデータファイルを分散配置させることで、メタデータファイルを格納したある特定のサーバへの負荷の集中を回避する効果がある。なぜなら、メタデータファイル格納領域決定部１４が、プロセス実行部１０−０〜１０−７で実行されるプロセスが発行する、データファイル１００へのファイルアクセス命令１１０におけるデータファイル名称とオフセット情報を基に、ハッシュ関数１４０を用いて、データファイル１００のメタデータファイルを分散配置させるからである。
【００４８】
メタデータファイルの分散配置により、複数のメタデータファイル格納サーバに負荷を分散させることで、メタデータ格納ファイルサーバの処理のボトルネックによるシステム性能の低下を回避することが可能となる。
【００４９】
また本実施形態は、１つのデータファイルにおけるブロック領域単位に対応したメタデータを分散配置しているため、１つのデータファイルについてブロック領域単位でデータを並列処理するような大きな配列変数の演算を行うＨＰＣ領域のアプリケーションにおいて、大きな効果がある。
＜第二の実施形態＞
次に、本願発明の第二の実施形態について図面を参照して詳細に説明する。
【００５０】
図６は本願発明の第二の実施形態の構成を示すブロック図である。
【００５１】
本実施形態は、第一の実施形態の構成に加えて、ハッシュ関数数式設定部１４１とハッシュ関数設定情報格納部１６とを備えている。ハッシュ関数数式設定部１４１とハッシュ関数設定情報格納部１６を除く各構成要素の機能は第一の実施形態と同様である。
【００５２】
ハッシュ関数数式設定入力部１４１は、メタデータファイルアクセス部１３から受信した、ファイルアクセス命令１１０におけるデータファイル名称を、ハッシュ関数設定情報格納部１６に送付する。
【００５３】
ハッシュ関数設定情報格納部１６は、ハッシュ関数設定情報１６０を格納している。ハッシュ関数設定情報１６０の構成例を図７に示す。ハッシュ関数設定情報１６０はデータファイル１００とハッシュ関数１４０との対応関係を格納している。例えば、データファイル１００が「／ｄｉｒ＿１／ｆｉｌｅ＿Ａ」の場合は、メタデータファイル格納領域決定部１４０は、ハッシュ関数として、
ＭＤＳｎｕｍ（ｘ，ｂ）＝（ｆｌｏｏｒ（ｘ／３ＧＢ）＋ａｓｃｉｉ（ｂ））  ｍｏｄ  ３
を使用し、データファイル１００が「／ｄｉｒ＿１／ｆｉｌｅ＿Ｂ」の場合は、メタデータファイル格納領域決定部１４０は、ハッシュ関数として、
ＭＤＳｎｕｍ（ｘ，ｂ）＝（ｆｌｏｏｒ（ｘ／６ＧＢ）＋ａｓｃｉｉ（ｂ））  ｍｏｄ  ３
を使用することを示している。
【００５４】
ハッシュ関数設定情報１６０は、実行するアプリケーションのデータファイルへのアクセスの特性を熟知した担当者が設定する。
【００５５】
ハッシュ関数設定情報格納部１６は、ハッシュ関数数式設定入力部１４１から受信したデータファイル名称と、データファイル名称が一致するレコードをハッシュ関数設定情報１６０から読み出して、読み出したレコードにおけるハッシュ関数数式の情報をハッシュ関数数式設定入力部１４１へ送付する。
【００５６】
ハッシュ関数数式設定入力部１４１は、受信したハッシュ関数数式をハッシュ関数１４０に設定する。
【００５７】
本実施形態には、メタデータファイルの分散配置を決定するハッシュ関数の数式をデータファイルにより可変としたことで、データファイル毎にメタデータファイルの分散配置の仕方を変更できる効果がある。なぜなら、ハッシュ関数数式設定部１４１が、アクセスするデータファイルに対応したハッシュ関数の数式をハッシュ関数設定情格納部１６から取得し、その数式をメタデータファイル格納領域決定部１４で使用するハッシュ関数１４０として設定するからである。
【００５８】
メタデータファイルの分散配置の仕方をデータファイルにより可変とすることで、実行するプログラムのデータファイルへのアクセスの仕方の特徴をふまえたメタデータファイルの分散配置の仕方を設定し、チューニングを行うことが可能となる。
＜第三の実施形態＞
次に、本願発明の第三の実施形態について図面を参照して詳細に説明する。
【００５９】
図８は本願発明の第三の実施形態の構成を示すブロック図である。
【００６０】
本実施形態の分散ファイルアクセス装置は、複数、例えば３個のメタデータファイル格納部２２−０乃至２２−２と、メタデータファイルアクセス部２３と、メタデータファイル格納領域決定部２４とを包含している。
【００６１】
メタデータファイル格納部２２−０乃至２２−２は、データファイル２００のメタデータを記録したメタデータファイルを分割して格納しており、それぞれのシステム管理上の名称はＭＤＳ０乃至ＭＤＳ２である。
【００６２】
メタデータファイル格納領域決定部２４は、データファイル２００へのアクセス命令におけるデータファイル２００の識別情報とアクセスアドレスの情報を基に、ハッシュ関数２４０を用いて、データファイル２００のメタデータが格納されたメタデータファイル格納部２２−０（ＭＤＳ０）乃至２２−２（ＭＤＳ２）の何れかを一意に決定する。
【００６３】
データファイル２００へのアクセス命令の構成は、第一の実施例と同様、図４に示すとおりである。したがって、データファイル２００の識別情報としてファイルアクセス命令１１０におけるデータファイル名称を使用し、前記のアクセスアドレスの情報として、ファイルアクセス命令１１０における開始オフセットとアクセスサイズを使用する。
【００６４】
メタデータファイルアクセス部２３は、メタデータファイル格納領域決定部２４が決定したメタデータファイル格納部２２−０（ＭＤＳ０）乃至２２−２（ＭＤＳ２）の何れかに格納されたメタデータファイルにアクセスする。
【００６５】
本実施形態におけるデータファイル２００のメタデータの分散格納の構成例を図９に示す。本実施形態では、メタデータファイル格納部２２−０乃至２２−２が、第一の実施形態の様にデータファイル１００のブロック領域単位に対応するメタデータを格納するのではなく、データファイル２００のアドレス単位に対応するメタデータを格納する。
【００６６】
本実施形態には、第一の実施形態と同様に、データファイルのメタデータを格納したメタデータファイルを分散配置させることで、メタデータファイルを格納したある特定のサーバへの負荷の集中を回避する効果がある。
【００６７】
また本実施形態は、１つデータファイルにおけるアドレス単位に対応したメタデータを分散配置しているため、１つのデータファイル内のデータを不規則に同時に参照して処理するような一般的なアプリケーションにおいて効果がある。
【００６８】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６９】
１０−０乃至１０−７    プロセス実行部
１１−０乃至１１−３    データファイル格納部
１２−０乃至１２−２    メタデータファイル格納部
１３    メタデータファイルアクセス部
１４    メタデータファイル格納領域決定部
１４０    ハッシュ関数
１５    データファイルアクセス部
１００    データファイル
１１０    ファイルアクセス命令
１２０    メタデータファイル属性情報部
１３０    メタデータファイル対応表部
１４１    ハッシュ関数数式設定部
１６    ハッシュ関数設定情報格納部
１６０    ハッシュ関数設定情報
２２−０乃至２２−２    メタデータファイル格納部
２３    メタデータファイルアクセス部
２４    メタデータファイル格納領域決定部
２４０    ハッシュ関数
２００    データファイル
【図１】
0005966404.tif 000002
【図２】
0005966404.tif 000003
【図３】
0005966404.tif 000004
【図４】
0005966404.tif 000005
【図５】
0005966404.tif 000006
【図６】
0005966404.tif 000007
【図７】
0005966404.tif 000008
【図８】
0005966404.tif 000009
【図９】
0005966404.tif 000010