JP2022029976A - メタデータ管理プログラム及び情報処理装置 - Google Patents
メタデータ管理プログラム及び情報処理装置 Download PDFInfo
- Publication number
- JP2022029976A JP2022029976A JP2020133618A JP2020133618A JP2022029976A JP 2022029976 A JP2022029976 A JP 2022029976A JP 2020133618 A JP2020133618 A JP 2020133618A JP 2020133618 A JP2020133618 A JP 2020133618A JP 2022029976 A JP2022029976 A JP 2022029976A
- Authority
- JP
- Japan
- Prior art keywords
- directory
- metadata
- file
- parent directory
- mds
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
【課題】分散ファイルシステムの処理性能を向上させるメタデータ管理プログラム及び情報処理装置を提供する。【解決手段】ディレクトリ及びファイルのメタデータの分散ファイルシステムを制御するメタデータ管理プログラムであり、以下の処理をコンピュータに実行させる。第1ディレクトリのメタデータを第1メタデータ管理装置で管理する。第1ディレクトリの配下の第2ディレクトリまたは第1ファイルのメタデータを第2メタデータ管理装置が作成して管理する場合に、第1ディレクトリのメタデータを第1メタデータ管理装置から第2メタデータ管理装置へ複写する。【選択図】図16
Description
本発明は、メタデータ管理プログラム及び情報処理装置に関する。
現在は、大規模な計算を行う計算機システムであるHPC(High Performance Computing)システムは、ノードと呼ばれる同一構成計算機を多数使用することにより、高速に計算を行う構成をとることが一般的である。この種のHPCシステムでは、使用するファイルが巨大となり、高性能な処理能力が要求される。
通常のファイルシステムでは、ファイル名、ディレクトリ名、ファイルのパーミッションといったファイルに付属する情報とファイルの内容の情報とが、同一のハードウェア上に格納される。以下では、ファイルに付属する情報をメタデータと呼び、ファイルの内容の情報をファイルデータと呼ぶ。
この種のファイルシステムの場合、HPCシステムの分野では、メタデータとファイルデータとを分離してそれぞれ別の計算機に格納する分散ファイルシステムと呼ばれる構成が採用されている。
この分散ファイルシステムは、例えば、ファイルデータを格納する記憶装置(OST:Object Storage Target)、OSTを制御するサーバ(OSS:Object Storage Server)、メタデータを管理する記憶装置(MDT:Metadata Target)、及び、MDTを制御するサーバ(MDS:Metadata Server)を含む。また、分散ファイルシステムを利用する複数の計算ノードは、ネットワークを経由して、分散ファイルシステムに接続される。
大規模なHPCシステムでは、ファイルシステムへの同時アクセスも膨大になる。このような大量のファイルアクセスに対応するために、OST、OSS、MDT及びMDSもそれぞれ複数台配置されることが多い。
なお、分散ファイルシステムの従来技術として、メタデータをメモリ上にキャッシュし、閾値以上のメタデータのリクエストを受信した場合に、リクエストを1つにまとめて処理する従来技術がある。また、ファイルへのアクセスをハッシュ値で管理し、削除フラグを用いてファイルが削除されたか否かを管理する従来技術がある。さらに、ファイルディレクトリ構造及びファイルへの関連を含ませたハッシュ値を用いてメタデータを管理する従来技術がある。
しかしながら、複数のMDSを有するファイルシステムでは、特定のメタデータへのアクセス性能がスケールアウトされる一方で、複数のMDSを有する構成にしたことによって、1台構成の場合と比較して却って性能が低下する処理が存在する。例えば、分散ファイルシステムの中には、多数のアクセスをさばくために複数のMDSを有し、MDS間での整合性を取るために、ディレクトリ作成時に新たに作成されたディレクトリのメタデータをMDS間で複写しあうシステムがある。この場合、MDSの台数が増えると、ディレクトリ作成時の複写の時間が無視できない量になり、性能の大幅な低下が発生するおそれがある。また、ディレクトリ削除時には、逆に削除されたディレクトリのメタデータが存在する全てのMDSのメタデータを削除するため、MDSの台数の増加に伴い性能が低下するおそれがある。
この性能低下を解決する方法として、複数のMDS間で同期をとらず、ファイルへのフルパスを用いたハッシュを計算し、計算されたハッシュ値から求められた1つのMDSに対してのみメタデータを格納し、複写を行わない技術が存在する。この技術であれば、メタデータの複写が存在しないためディレクトリ作成時及び削除性能の性能低下の回避が可能となる。しかし、この技術では、ファイルの作成または削除を行うたびに権限チェックやメタデータ更新のための親ディレクトリのメタデータへのアクセスが生じる。親ディレクトリのメタデータは1つのMDSに格納されるため、親ディレクトリのメタデータを管理するMDSに対するアクセスが集中し、性能低下が生じるおそれがある。
開示の技術は、上記に鑑みてなされたものであって、分散ファイルシステムの処理性能を向上させるメタデータ管理プログラム及び情報処理装置を提供することを目的とする。
本願の開示するメタデータ管理プログラム及び情報処理装置の一つの態様において、ディレクトリ及びファイルのメタデータの分散ファイルシステムを制御するメタデータ管理プログラムはコンピュータに以下の処理を実行させる。第1ディレクトリのメタデータを第1メタデータ管理装置で管理する。前記第1ディレクトリの配下の第2ディレクトリまたは第1ファイルのメタデータを第2メタデータ管理装置が作成して管理する場合に、前記第1ディレクトリのメタデータを前記第1メタデータ管理装置から前記第2メタデータ管理装置へ複写する。
1つの側面では、本発明は、分散ファイルシステムの処理性能を向上させることができる。
以下に、本願の開示するメタデータ管理プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するメタデータ管理プログラム及び情報処理装置が限定されるものではない。
図1は、分散ファイルシステムのブロック図である。分散ファイルシステム10は、複数のMDS1、各MDS1に接続されたMDT2、複数のOSS3、各OSS3に接続されたOST4、複数の計算ノード5及びネットワーク7を有する。MDS1、OSS3、及び複数の計算ノード5は、ネットワーク7を介して相互に接続される。分散ファイルシステム10は、例えば、Lustre(登録商標)である。各装置は、例えば、POSIX(Portable Operating System Interface)の規格にしたがったインタフェースを有する。
OST4は、ファイルデータを格納する記憶装置である。OST4は、OSS3毎に1つまたは複数が接続される。
OSS3は、分散ファイルシステム10内に複数配置される。OSS3は、自装置に接続されたOST4を制御するサーバである。具体的には、OSS3は、計算ノード5からファイルデータの読み出しまたは書き込みの命令を受けて、命令に従い、自装置に接続されたOST4に対してファイルデータの読み出しまたは書き込みを行う。
MDT2は、OST4に格納されたファイルデータに対応するメタデータを格納する記憶装置である。メタデータは、例えば、対応するファイルデータのサイズ、作成時間及び格納位置などを含む。MDT2は、MDS1毎に1台または複数台ずつ接続される。
MDS1は、分散ファイルシステム10内に複数配置される。MDS1は、自装置に接続されたMDT2を制御するサーバである。MDS1は、MDT2に格納されたメタデータの管理を行う。
また、MDS1は、ネットワーク7を介して計算ノード5から送信されたリクエストを受信する。そして、MDS1は、受信したリクエストに応じてディレクトリの作成または削除やファイルの作成または削除を実行する。このMDS1及びそのMDS1に接続され管理されるMDT2が、「情報処理装置」の一例にあたる。
計算ノード5は、OST4に格納されたファイルデータを使用して計算を実行する。そして、計算ノード5は、ネットワーク7を介してOSS3に命令を送信し、命令で指定したファイルデータに対する読み出し及び書き込みを行う。また、計算ノード5は、例えば、分散ファイルシステム10に対して各種処理を指示する。例えば、計算ノード5は、ディレクトリの作成や削除、及び、ファイルの作成や削除をMDS1に指示して、各種処理を実行させる。
次に、図2を参照して、MDS1によるメタデータの管理の詳細について説明する。図2は、MDSのブロック図である。MDS1は、図2に示すように、リクエスト受信部11、テーブル管理部12、リクエスト処理部13、親ディレクトリ管理部14及び通信部15を有する。
テーブル管理部12は、図3に示すメタデータ管理テーブル100を保持する。図3は、メタデータ管理テーブルの一例の図である。メタデータ管理テーブル100は、ファイルまたはディレクトリのメタデータの削除命令を受信した場合に、そのファイルまたはディレクトリのメタデータの削除を行うか否かを判定するためのテーブルである。
メタデータ管理テーブル100は、図3に示すように、対象となるディレクトリまたはファイルのフルパスを表すパス名、そのディレクトリまたはファイルのハッシュ値、並びに、そのディレクトリに対応するビットマップを有する。ビットマップは、特定のディレクトリの担当MDSが管理するメタデータ管理テーブル100において、その特定のディレクトリに対して与えられる。一方、特定のディレクトリの担当MDS以外のMDS1が有するメタデータ管理テーブル100の場合には、その特定のディレクトリやファイルに対してビットマップは与えられない。ビットマップは、そのディレクトリの配下にファイルまたはディレクトリが存在するか否かを表す。ここで、本実施例では、ビットマップは2つのビットを有するが、このビットの数はMDS1の数に対応する。そして、各ビットがそれぞれのMDS1の情報を表す。
テーブル管理部12は、ファイルまたはディレクトリが作成された場合、以下の処理を行う。テーブル管理部12は、自装置が担当MDSとしてファイルまたはディレクトリの作成が行われた場合、作成対象のファイルまたはディレクトリの情報の追加の指示をリクエスト処理部13から受ける。そして、テーブル管理部12は、指定されたファイルまたはディレクトリのエントリをメタデータ管理テーブル100に作成して、そのフルパスを登録する。次に、テーブル管理部12は、フルパスからハッシュ値を算出してメタデータ管理テーブル100に登録する。さらに、テーブル管理部12は、作成対象がディレクトリであれば、ビットマップを作成し、作成時には配下にファイル及びディレクトリが存在しないため全ての値を0で初期化する。これに対して、作成対象がファイルの場合、テーブル管理部12は、ビットマップを作成しない。
さらに、テーブル管理部12は、作成対象の親ディレクトリのメタデータが管理するMDT2に存在しなければ、親ディレクトリのエントリの作成の指示を親ディレクトリ管理部14から受ける。そして、テーブル管理部12は、親ディレクトリのエントリをメタデータ管理テーブル100に登録する。この場合、自装置はその親ディレクトリの担当MDSではないので、テーブル管理部12は、ビットマップの登録を行わない。
また、ファイルまたはディレクトリが作成された場合に、そのファイルまたはディレクトリを作成したMDS1が親ディレクトリの担当MDSでない場合、親ディレクトリの担当MDSのテーブル管理部12は、以下の処理を行う。テーブル管理部12は、ファイルまたはディレクトリの作成を行った問い合わせ元のMDS1の情報とともに親ディレクトリのビットマップの更新の指示を親ディレクトリ管理部14から受ける。そして、テーブル管理部12は、指定された親ディレクトリのビットマップにおけるファイルまたはディレクトリを作成した問い合わせ元のMDS1に対応するビットの値を1に変更する。これにより、そのディレクトリの配下に配置されたファイルまたはディレクトリを他のMDS1が有することが示される。
また、ファイルまたはディレクトリが削除された場合、テーブル管理部12は、削除されたファイルまたはディレクトリのエントリの削除の指示をリクエスト処理部13から受ける。そして、テーブル管理部12は、指定されたファイルまたはディレクトリのエントリをメタデータ管理テーブル100から削除する。
また、ファイルまたはディレクトリが削除された場合に、そのファイルまたはディレクトリを作成したMDS1が親ディレクトリの担当MDSでない場合、作成を行ったMDS1のテーブル管理部12は、以下の処理を行う。ファイルまたはディレクトリの削除が行われ親ディレクトリの配下に自装置が管理するファイル及びディレクトリがなくなった場合、テーブル管理部12は、親ディレクトリのエントリの削除の指示を親ディレクトリ管理部14から受ける。そして、テーブル管理部12は、指定された親ディレクトリのエントリをメタデータ管理テーブル100から削除する。
また、ファイルまたはディレクトリが削除された場合に、自装置が親ディレクトリの担当MDSであり、且つ、親ディレクトリの配下にディレクトリ及びファイルが存在しない場合、テーブル管理部12は、以下の処理を行う。テーブル管理部12は、親ディレクトリが空ディレクトリである通知を親ディレクトリ管理部14から受ける。そして、テーブル管理部12は、親ディレクトリのビットマップにおける自装置に対応する値を0に更新する。これにより、親ディレクトリのビットマップは、自装置が管理するMDT2においてその親ディレクトリの配下のファイル及びディレクトリが存在しないことを表すようになる。ただし、担当MDSが管理するディレクトリのメタデータは、例えビットマップの値が全て0になっても、ディレクトリの削除命令が入力されるまで削除されない。
また、ファイルまたはディレクトリが削除された場合に、そのファイルまたはディレクトリを削除したMDS1が親ディレクトリの担当MDSでない場合、親ディレクトリの担当MDSのテーブル管理部12は、以下の処理を行う。テーブル管理部12は、削除を行ったMDS1の情報とともに、親ディレクトリのビットマップの更新依頼の入力を親ディレクトリ管理部14から受ける。そして、テーブル管理部12は、メタデータ管理テーブル100におけるその親ディレクトリのビットマップ上の更新依頼の送信元の値を0に変更する。これにより、その親ディレクトリのビットマップは、更新依頼の送信元においてその親ディレクトリの配下にファイル及びディレクトリを有さないことを表すようになる。
図2に戻って説明を続ける。リクエスト受信部11は、計算ノード5から送られたディレクトリの作成もしくは削除、または、ファイルの作成もしくは削除のリクエストを受信する。そして、リクエスト受信部11は、受信したリクエストをリクエスト処理部13へ出力する。
リクエスト処理部13は、リクエストの入力をリクエスト受信部11から受ける。取得したリクエストがファイルまたはディレクトリの作成である場合、リクエスト処理部13は、以下の処理を実施する。リクエスト処理部13は、親ディレクトリのメタデータの存在確認を親ディレクトリ管理部14に指示する。
作成対象の親ディレクトリが存在する場合、リクエスト処理部13は、親ディレクトリのメタデータの存在の応答を親ディレクトリ管理部14から受ける。作成対象の親ディレクトリが存在しない場合、親ディレクトリの担当MDSから取得した親ディレクトリのメタデータのMDT2への格納後に、リクエスト処理部13は、親ディレクトリのメタデータの存在の応答を親ディレクトリ管理部14から受ける。この親ディレクトリのメタデータの作成が、親ディレクトリのメタデータの複写にあたる。この親ディレクトリのメタデータの複写により、自装置のMDT2に親ディレクトリまでのメタデータが存在するようになる。
リクエスト処理部13は、親ディレクトリのメタデータの存在の応答を親ディレクトリ管理部14から受けると、MDT2に格納されたメタデータを参照して、親ディレクトリまでのアクセス権を確認する。親ディレクトリのアクセス権の確認後、リクエスト処理部13は、作成対象のメタデータをMDT2に作成する。さらに、リクエスト処理部13は、作成対象のファイルまたはディレクトリの情報の追加をテーブル管理部12に指示する。
その後、リクエスト処理部13は、MDT2における親ディレクトリのメタデータ内のディレクトリ更新時間を更新する。リクエスト処理部13は、ディレクトリの作成にも、このファイル作成時の処理と同様の処理を行う。
取得したリクエストがファイルの削除である場合、リクエスト処理部13は、以下の処理を実施する。自装置に接続されたMDT2にファイルが存在するということは、そのファイルの親ディレクトリがそのMDT2に存在することが保証される。そこで、リクエスト処理部13は、MDT2に格納された削除対象のファイルの親ディレクトリまでのアクセス権限を確認する。親ディレクトリまでのアクセス権が確認できると、リクエスト処理部13は、削除対象のファイルを削除する。そして、リクエスト処理部13は、削除したファイルのエントリの削除をテーブル管理部12に指示する。
次に、リクエスト処理部13は、削除時の親ディレクトリの更新処理を親ディレクトリ管理部14に指示する。その後、リクエスト処理部13は、MDT2における親ディレクトリのメタデータ内のディレクトリ更新時間を更新する。
取得したリクエストがディレクトリの削除である場合、リクエスト処理部13は、以下の処理を実施する。リクエスト処理部13は、テーブル管理部12が保持するメタデータ管理テーブル100を参照して、削除対象のディレクトリのビットマップの値が全て0か否かを判定する。ビットマップの値で0以外の値がある場合、リクエスト処理部13は、エラー終了を計算ノード5に通知する。
これに対して、ビットマップの値が全て0の場合、リクエスト処理部13は、削除対象のディレクトリの配下にファイル及びディレクトリが存在しないと判定する。そして、リクエスト処理部13は、MDT2に格納された削除対象のディレクトリの親ディレクトリまでのアクセス権限を確認する。親ディレクトリまでのアクセス権が確認できると、リクエスト処理部13は、MDT2における削除対象のディレクトリのメタデータを削除してディレクトリを削除する。さらに、リクエスト処理部13は、削除したディレクトリのエントリの削除をテーブル管理部12に指示する。
次に、リクエスト処理部13は、削除時の親ディレクトリの更新処理を親ディレクトリ管理部14に指示する。その後、リクエスト処理部13は、MDT2における親ディレクトリのメタデータ内のディレクトリ更新時間を更新する。
親ディレクトリ管理部14は、ディレクトリまたはファイルの作成時に以下の処理を行う。親ディレクトリ管理部14は、親ディレクトリのメタデータの存在確認の指示をリクエスト処理部13から受ける。親ディレクトリ管理部14は、テーブル管理部12が保持するメタデータ管理テーブル100を参照して親ディレクトリまでのメタデータが存在するか否かを判定する。具体的には、親ディレクトリ管理部14は、親ディレクトリまでのパス名に一致するエントリがメタデータ管理テーブル100に存在するか否かにより親ディレクトリまでのメタデータの存在の有無の確認を行う。親ディレクトリまでのメタデータが存在する場合、親ディレクトリ管理部14は、親ディレクトリのメタデータの存在の応答をリクエスト処理部13へ出力する。
これに対して、親ディレクトリまでのメタデータが存在しない場合、親ディレクトリ管理部14は、親ディレクトリが格納される上層のディレクトリのうちどこまでのディレクトリにメタデータが存在しないかを特定する。そして、メタデータが存在しないディレクトリが複数階層に亘る場合、親ディレクトリ管理部14は、メタデータが存在しないディレクトリのうちの最下層のディレクトリのハッシュ値を算出する。そして、親ディレクトリ管理部14は、算出したハッシュ値を用いて、メタデータが存在しないディレクトリのうちの最下層のディレクトリに対してのメタデータの問い合わせを通信部15に指示する。その後、親ディレクトリ管理部14は、親ディレクトリのメタデータの入力を通信部15から受ける。そして、親ディレクトリ管理部14は、取得したメタデータをMDT2に格納して親ディレクトリのメタデータの作成を行う。さらに、親ディレクトリ管理部14は、親ディレクトリのエントリの作成をテーブル管理部12に指示する。
親ディレクトリ管理部14は、作成対象の親ディレクトリが格納される上層の全てのディレクトリのメタデータの作成が完了するまで、メタデータの問い合わせを階層毎に順次繰り返す。作成対象の親ディレクトリが格納される上層の全てのディレクトリのメタデータの作成が完了すると、親ディレクトリ管理部14は、親ディレクトリのメタデータの存在の応答をリクエスト処理部13へ出力する。
一方、担当MDS以外で作成対象の親ディレクトリの担当MDSであるMDS1の親ディレクトリ管理部14は、ファイルまたはディレクトリが作成された場合、親ディレクトリのメタデータの問い合わせを通信部15から受ける。そして、親ディレクトリ管理部14は、自装置が管理するMDT2の中に親ディレクトリのメタデータが存在するか否かを判定する。
親ディレクトリのメタデータが存在しない場合、親ディレクトリ管理部14は、問い合わせの送信元のMDS1へのエラー終了の通知の送信を通信部15へ指示する。これに対して、親ディレクトリのメタデータが存在する場合、親ディレクトリ管理部14は、親ディレクトリのメタデータを自装置が管理するMDT2から取得する。そして、親ディレクトリ管理部14は、問い合わせの送信元のMDS1への、取得した親ディレクトリのメタデータの送信を通信部15に指示する。親ディレクトリ管理部14は、ファイルまたはディレクトリの作成を行った問い合わせ元のMDS1の情報とともに親ディレクトリのビットマップの更新をテーブル管理部12に指示する。
親ディレクトリ管理部14は、ディレクトリまたはファイルの削除時に以下の処理を行う。親ディレクトリ管理部14は、削除時の親ディレクトリの更新処理の指示をリクエスト処理部13から受ける。
そして、親ディレクトリ管理部14は、テーブル管理部12が保持するメタデータ管理テーブル100を参照して親ディレクトリの配下のファイルまたはディレクトリが管理するMDT2の中に存在するか否かを判定する。例えば、親ディレクトリ管理部14は、削除対象のフルパスの1つ上の階層までのフルパスに前方一致するフルパスを有する他のエントリがメタデータ管理テーブル100に存在するか否かによりこの判定を行う。
親ディレクトリ管理部14は、親ディレクトリの配下のファイルまたはディレクトリが管理するMDT2の中に存在する場合、親ディレクトリの情報を維持すると判定する。すなわち、親ディレクトリ管理部14は、親ディレクトリの配下のファイルまたはディレクトリが1つでも存在する場合、自装置が担当MDSであっても自装置に対応するビットマップの値を維持する。また、自装置が担当MDSでなくても、親ディレクトリ管理部14は、親ディレクトリの配下のファイルまたはディレクトリが1つでも存在する場合、親ディレクトリのメタデータを保持し続ける。
これに対して、親ディレクトリの配下のファイルまたはディレクトリが管理するMDT2の中に存在しない場合、親ディレクトリ管理部14は、親ディレクトリのハッシュ値をメタデータ管理テーブル100から取得する。そして、親ディレクトリ管理部14は、取得したハッシュ値を用いて、自装置が親ディレクトリの担当MDSであるか否かを判定する。
自装置が担当MDSの場合、親ディレクトリ管理部14は、メタデータ管理テーブル100における自装置に親ディレクトリが空ディレクトリである通知をテーブル管理部12に通知する。
これに対して、自装置が担当MDSでない場合、親ディレクトリ管理部14は、管理するMDT2から親ディレクトリのメタデータを削除する。また、親ディレクトリ管理部14は、親ディレクトリのハッシュ値をメタデータ管理テーブル100から取得する。さらに、親ディレクトリ管理部14は、親ディレクトリのエントリの削除をテーブル管理部12に指示する。
次に、親ディレクトリ管理部14は、取得したハッシュ値から親ディレクトリの担当MDSを特定する。そして、親ディレクトリ管理部14は、親ディレクトリの担当MDSへのビットマップの更新依頼の通知を通信部15に指示する。その後、親ディレクトリ管理部14は、親ディレクトリのビットマップの更新完了の通知を通信部15から受ける。そして、親ディレクトリ管理部14は、削除した親ディレクトリの親ディレクトリに対して、削除時の親ディレクトリの更新処理を行う。親ディレクトリ管理部14は、削除したディレクトリの親ディレクトリについて、自装置が担当MDSとなるか親ディレクトリが存在しなくなるまで、削除時の親ディレクトリの更新処理を再帰的に行う。
例えば、削除対象のファイルの担当MDSが管理するMDT2に、「/a」、「/a/b」、「/a/b/c」というメタデータが存在する場合について説明する。この場合、「/a/b/c」が削除対象のファイルでありそのファイルを削除すると、MDS1は、削除時の親ディレクトリの更新処理の1巡目で「/a/b」に対する処理を行う。そして、「/a/b」の担当MDSが別のMDS1の場合、削除対象のファイルの担当MDSが管理するMDT2から、「/a/b」のメタデータが削除される。この時、「/a」の下にファイル及びディレクトリが存在しなくなり、削除対象のファイルの担当MDSであるMDS1により、削除時の親ディレクトリの更新処理がもう一巡実行されることになる。
ファイルまたはディレクトリが削除された場合、削除対象のファイルまたはディレクトリの担当MDS以外で削除対象の親ディレクトリの担当MDSであるMDS1の親ディレクトリ管理部14は、親ディレクトリのビットマップ更新依頼の入力を自装置の通信部15から受ける。そして、親ディレクトリの担当MDSの親ディレクトリ管理部14は、削除対象のファイルまたはディレクトリの担当MDSの情報とともに、親ディレクトリのビットマップの更新依頼を自装置のテーブル管理部12に出力する。その後、親ディレクトリの担当MDSの親ディレクトリ管理部14は、親ディレクトリのビットマップの更新完了の通知を自装置の通信部15に指示する。
作成対象のファイルまたはディレクトリの担当MDSの通信部15は、ファイルまたはディレクトリを作成する場合、メタデータが存在しないディレクトリのうちの最下層のディレクトリに対してのメタデータの問い合わせの指示を親ディレクトリ管理部14から受ける。そして、作成対象のファイルまたはディレクトリの担当MDSの通信部15は、メタデータの問い合わせの対象となるディレクトリのハッシュ値で表される担当MDSへ、指定されたディレクトリのメタデータの問い合わせを行う。
その後、作成対象のファイルまたはディレクトリの担当MDSの通信部15は、問い合わせの応答として、エラー応答または親ディレクトリのメタデータを、親ディレクトリの担当MDSである問い合わせ先のMDS1から受信する。そして、作成対象のファイルまたはディレクトリの担当MDSの通信部15は、問い合わせに対してエラー応答または親ディレクトリのメタデータを自装置の親ディレクトリ管理部14へ出力する。
一方、親ディレクトリのメタデータの問い合わせの対象となるMDS1の通信部15は、親ディレクトリのメタデータの問い合わせをファイルまたはディレクトリの作成を行うMDS1から受ける。言い換えれば、親ディレクトリの担当MDSの通信部15が、親ディレクトリのメタデータの問い合わせを作成対象のファイルまたはディレクトリの担当MDSから受ける。そして、親ディレクトリの担当MDSの通信部15は、取得した親ディレクトリのメタデータの問い合わせを自装置の親ディレクトリ管理部14へ出力する。その後、親ディレクトリの担当MDSの通信部15は、問い合わせの応答として、エラー応答または親ディレクトリのメタデータの入力を自装置の親ディレクトリ管理部14から受ける。そして、親ディレクトリの担当MDSの通信部15は、取得した問い合わせの応答を問い合わせ元である作成対象のファイルまたはディレクトリの担当MDSへ送信する。
ファイルまたはディレクトリの削除の場合、削除対象のファイルまたはディレクトリの担当MDSの通信部15は、ビットマップの更新依頼の通知の指示を自装置の親ディレクトリ管理部14に指示する。そして、削除対象のファイルまたはディレクトリの担当MDSの通信部15は、ビットマップの更新依頼を削除対象の親ディレクトリの担当MDSに送信する。その後、削除対象のファイルまたはディレクトリの担当MDSの通信部15は、親ディレクトリのビットマップの更新完了の通知を親ディレクトリの担当MDSから受信する。そして、削除対象のファイルまたはディレクトリの担当MDSの通信部15は、受信した親ディレクトリのビットマップの更新完了の通知を自装置の親ディレクトリ管理部14へ出力する。
一方、ファイルまたはディレクトリの削除時に、削除対象の親ディレクトリの担当MDSの通信部15は、削除を実行した削除対象のファイルまたはディレクトリの担当MDSからビットマップの更新依頼の通知を受信する。その後、親ディレクトリの担当MDSの通信部15は、ビットマップの更新完了の通知を自装置の親ディレクトリ管理部14から受信する。そして、親ディレクトリの担当MDSの通信部15は、削除対象のファイルまたはディレクトリの担当MDSへビットマップの更新完了の通知を送信する。
以上の説明において、ファイルやディレクトリの作成を行ったMDS1が、「第2メタデータ管理装置」の一例にあたる。そして、ファイルやディレクトリの作成を行ったMDS1が作成対象の親ディレクトリの担当MDSでない場合の、親ディレクトリの担当MDSが、「第1メタデータ管理装置」の一例にあたる。また、ファイルやディレクトリの作成を行ったMDS1が作成対象の親ディレクトリの担当MDSでない場合の、親ディレクトリの担当MDSが管理する親ディレクトリが、「第1ディレクトリ」の一例にあたる。また、ファイルやディレクトリの作成を行ったMDS1が作成対象の親ディレクトリの担当MDSでない場合の、作成対象のディレクトリが「第2ディレクトリ」の一例にあたり、作成対象のファイルが「第1ファイル」の一例にあたる。
次に、ファイルの作成処理の一例を説明する。以下では、フルパスでディレクトリまたはファイルを表す。すなわち、「/a」は、「/a」をフルパスに持つディレクトリまたはファイルを表す。
ここでは、MDS1としてMDS#0及びMDS#1が存在し、MDS#0が管理するMDT2がMDT##0であり、MDS#1が管理するMDT2がMDT##1である場合で説明する。ここでは、ハッシュ値の下1桁が0のファイルまたはディレクトリの担当MDSがMDS#0であり、ハッシュ値の下1桁が1のファイルまたはディレクトリの担当MDSがMDS#1である。
図4は、第1のディレクトリ作成時の状態を表す図である。まず、ディレクトリである「/a」が作成される。ここでは、「/a」のハッシュ値は「0xabcd0」とする。すなわち、MDS#0が、「/a」の担当MDSである。そこで、MDS#0のリクエスト受信部11は、「/a」の作成のリクエストを受信する。「/a」は親ディレクトリが存在しないので、リクエスト処理部13は、「/a」を作成する。そして、テーブル管理部12は、図4に示すようにMDS#0が管理するメタデータを表すメタデータ管理テーブル100Aに「/a」のエントリ101を追加する。さらに、テーブル管理部12は、エントリ101のハッシュ値に、「0xabcd0」を登録する。さらに、「/a」がディレクトリであるので、テーブル管理部12は、エントリ101にビットマップを登録し、全ての値を0に初期化する。
図5は、第1のファイル作成時の状態を表す図である。次に、ファイルである「/a/b」が作成される。ここでは、「/a/b」のハッシュ値は「0x876d0」とする。すなわち、MDS#0が、「/a/b」の担当MDSである。そこで、MDS#0のリクエスト受信部11は、「/a/b」の作成のリクエストを受信する。リクエスト処理部13は、「/a/b」の親ディレクトリである「/a」の存在確認を親ディレクトリ管理部14に指示する。「/a」はメタデータ管理テーブル100Aのエントリ101に登録されているので、親ディレクトリ管理部14は、親ディレクトリのメタデータの存在の応答をリクエスト処理部13へ出力する。リクエスト処理部13は、親ディレクトリのメタデータの存在の応答の入力を受けて、「/a/b」を作成する。そして、テーブル管理部12は、図5に示すように「/a/b」のエントリ101をメタデータ管理テーブル100Aに追加する。さらに、テーブル管理部12は、エントリ101のハッシュ値に、「0x876d0」を登録する。ここで、「/a/b」がファイルであるので、テーブル管理部12は、エントリ102にはビットマップの登録を行わない。
図6は、第2のファイル作成時における親ディレクトリのメタデータ問い合わせ状態を表す図である。次に、ファイルである「/a/c」が作成される。ここでは、「/a/c」のハッシュ値は「0x876d1」とする。すなわち、MDS#1が、「/a/c」の担当MDSである。そこで、MDS#1のリクエスト受信部11は、「/a/c」の作成のリクエストを受信する。リクエスト処理部13は、「/a/c」の親ディレクトリである「/a」の存在確認を親ディレクトリ管理部14に指示する。親ディレクトリ管理部14は、MDS#1が管理するメタデータを表すメタデータ管理テーブル100Bに「/a」のエントリが存在しないため、MDT##1に「/a」のメタデータが存在しないと判定する。そして、親ディレクトリ管理部14は、図6に示すように「/a」のメタデータの問い合わせ103を実行する。
図7は、第2のファイル作成時における親ディレクトリのメタデータ問い合わせに対する応答状態を表す図である。MDS#0の親ディレクトリ管理部14は、MDS#1から「/a」のメタデータの問い合わせ103を受けると、メタデータ管理テーブル100Aを参照して、「/a」のメタデータが存在することを確認する。そして、親ディレクトリ管理部14は、MDT##0から「/a」のメタデータを取得する。その後、親ディレクトリ管理部14は、図7に示すように「/a」のメタデータを応答104としてMDS#1へ送信する。また、親ディレクトリ管理部14は、「/a/c」の作成を行った問い合わせ元のMDS#1の情報とともに「/a」のビットマップの更新をテーブル管理部12に指示する。テーブル管理部12は、「/a」のビットマップにおける「/a/c」の作成を行った問い合わせ元のMDS#1に対応するビットの値を1に変更する。
図8は、第2のファイル作成時の親ディレクトリのメタデータのコピー時の状態を表す図である。MDS#1の親ディレクトリ管理部14は、「/a」のメタデータを含む応答104を受信する。そして、親ディレクトリ管理部14は、取得した「/a」のメタデータをMDT##1に格納する。テーブル管理部12は、図8に示すように、「/a」のエントリ105をメタデータ管理テーブル100Bに追加する。さらに、テーブル管理部12は、エントリ106のハッシュ値に、「0xabcd0」を登録する。ここで、「/a」の担当MDSは自装置ではないので、テーブル管理部12は、エントリ105にはビットマップの登録を行わない。その後、親ディレクトリ管理部14は、「/a/c」の親ディレクトリのメタデータの存在の応答をリクエスト処理部13へ出力する。
図9は、第2のファイル作成時の状態を表す図である。MDS#1のリクエスト処理部13は、「/a/c」の親ディレクトリのメタデータの存在の応答の入力を親ディレクトリ管理部14から受ける。そして、リクエスト処理部13は、「/a/c」をMDT##1に作成する。その後、リクエスト処理部13は、「/a/c」のエントリの追加をテーブル管理部12に指示する。テーブル管理部12は、「/a/c」のエントリ106をメタデータ管理テーブル100Bに追加する。さらに、テーブル管理部12は、エントリ106のハッシュ値に、「0x876d1」を登録する。ここで、「/a/c」がファイルであるので、テーブル管理部12は、エントリ106にはビットマップの登録を行わない。
次に、ディレクトリ及びファイルの削除処理の一例を説明する。ここでは、図9に示した状態からのディレクトリ及びファイルの削除を行う場合について説明する。
図10は、配下にファイルが存在するディレクトリの削除時の状態を表す図である。ここでは、ディレクトリである「/a」の削除が指示される。「/a」の担当MDSであるMDS#0のリクエスト受信部11が、「/a」の削除のリクエスト107を受信する。リクエスト受信部11は、メタデータ管理テーブル100Aにおける「/a」のビットマップを参照する。この場合、「/a」のビットマップにおいて値が1のビットがあることから、リクエスト受信部11は、いずれかのMDS1において「/a」の配下に配置されたディレクトリまたはファイルが存在し、「/a」が空ではないと判定する。そこで、リクエスト受信部11は、「/a」が空ではないことを示すエラーを応答108でリクエストの送信元に通知する。
図11は、親ディレクトリの担当MDSにおけるファイルの削除時の状態を表す図である。ここでは、「/a/b」の削除が指示される。「/a/b」の担当MDSであるMDS#0のリクエスト受信部11が、「/a/b」の削除のリクエストを受信する。リクエスト処理部13は、MDT##0に格納された「/a/b」の親ディレクトリである「/a」までのアクセス権限を確認する。親ディレクトリまでのアクセス権が確認できると、リクエスト処理部13は、「/a/b」を削除する。テーブル管理部12は、「/a/b」のエントリ102をメタデータ管理テーブル100Aから削除する。ここでは、分かり易いように削除されたエントリ102に取り消し線を付加して表した。取り消し線が付加されたエントリ102は、実際には、メタデータ管理テーブル100Aに存在しない。
図12は、親ディレクトリの担当MDSにおける削除時の親ディレクトリの更新処理の状態を表す図である。図11の状態で、リクエスト処理部13は、削除時の親ディレクトリの更新処理を親ディレクトリ管理部14に指示する。親ディレクトリ管理部14は、「/a/b」の親ディレクトリである「/a」の担当MDSがMDS#0であるので、メタデータ管理テーブル100Bにおける「/a」のエントリ101のビットマップにおける自装置に対応するビットを0に設定する。ここでは、親ディレクトリ管理部14は、「11」を「10」に変更する。
図13は、親ディレクトリの担当MDSではないMDSにおけるファイル削除時の状態を表す図である。ここでは、図12の状態で「/a/c」の削除が指示される。「/a/c」の担当MDSであるMDS#1のリクエスト受信部11が、「/a/c」の削除のリクエストを受信する。リクエスト処理部13は、MDT##0に格納された「/a/c」の親ディレクトリである「/a」までのアクセス権限を確認する。親ディレクトリまでのアクセス権が確認できると、リクエスト処理部13は、「/a/c」を削除する。テーブル管理部12は、「/a/c」のエントリ106をメタデータ管理テーブル100から削除する。親ディレクトリ管理部14は、削除時の親ディレクトリの更新処理を実行する。この場合、「/a」の配下のファイルまたはディレクトリがMDT##1に存在せず、且つ、自装置が「/a」の担当MDSではないので、親ディレクトリ管理部14は、「/a」を削除する。テーブル管理部12は、「/a」のエントリ105をメタデータ管理テーブル100Bから削除する。この場合も、分かり易いように、削除されたエントリ105及び106に取り消し線を付加して表した。
図14は、親ディレクトリの担当MDSにおける親ディレクトリのビットマップ更新時の状態を表す図である。図13の状態で、「/a」の担当MDSであるMDS#0の親ディレクトリ管理部14は、親ディレクトリのビットマップの更新の通知を受ける。そして、親ディレクトリ管理部14は、MDS#1における親ディレクトリ削除をテーブル管理部12に通知する。テーブル管理部12は、メタデータ管理テーブル100Aにおける「/a」のエントリ101のビットマップにおけるMDS#1に対応する値を「0」に変更する。すなわち、テーブル管理部12は、エントリ101を「01」から「00」に変更する。このように、担当MDSは、担当するディレクトリが空ディレクトリになった場合にも、そのディレクトリの削除はその時点では行わない。
図15は、空ディレクトリの削除時の状態を表す図である。ここでは、図14の状態で「/a」の削除が指示される。「/a」の担当MDSであるMDS#0のリクエスト受信部11が、「/a」の削除のリクエスト110を受信する。リクエスト処理部13は、メタデータ管理テーブル100Aにおける「/a」のエントリ101のビットマップを参照して、「/a」が空ディレクトリであることを確認する。そして、リクエスト処理部13は、「/a」をMDT##0から削除する。その後、テーブル管理部12は、メタデータ管理テーブル100Aから「/a」のエントリ101を削除する。その後、リクエスト処理部13は、削除完了の応答111を「/a」の削除のリクエスト110を送信元へ送信する。
次に、図16を参照して、ファイルまたはディレクトリの作成処理の流れについて説明する。図16は、ファイルまたはディレクトリの作成処理のフローチャートである。図16において、紙面に向かって仕切り線の左側は作成するファイルまたはディレクトリの担当MDSによる処理を表し、右側は作成するファイルの親ディレクトリの担当MDSによる処理を表す。
作成ファイルまたは作成ディレクトリの担当MDSのリクエスト受信部11は、ファイルまたはディレクトリの作成コマンドを受信する(ステップS101)。リクエスト受信部11は、受信したファイルまたはディレクトリの作成コマンドにしたがったファイルまたはディレクトリの作成のリクエストをリクエスト処理部13へ出力する。
次に、リクエスト処理部13は、ファイルまたはディレクトリの作成の指示を受信して、親ディレクトリのメタデータの存在確認を親ディレクトリ管理部14に指示する。親ディレクトリ管理部14は、最上層のディレクトリから親ディレクトリまでのメタデータが存在するか否かを判定する(ステップS102)。
メタデータが存在しないディレクトリがある場合(ステップS102:否定)、親ディレクトリ管理部14は、メタデータが存在しないディレクトリの中で最下層のディレクトリのメタデータの問い合わせを通信部15に指示する(ステップS103)。通信部15は、指定されたディレクトリのメタデータの問い合わせを親ディレクトリの担当MDSに行う。
親ディレクトリの担当MDSの親ディレクトリ管理部14は、通信部15を介して、自装置が管理するディレクトリのメタデータの問い合わせを受信する(ステップS104)。問い合わせ対象のメタデータが自装置の管理するMDT2に存在しない場合(ステップS104:否定)、親ディレクトリ管理部14は、エラーを作成ファイルまたは作成ディレクトリの担当MDSに通知して、エラー終了する(ステップS105)。その後、処理はステップS111へ進む。問い合わせ対象のメタデータが自装置の管理するMDT2に存在する場合(ステップS104:肯定)、親ディレクトリ管理部14は、作成ファイルまたは作成ディレクトリの担当MDSによる問い合わせ対象のディレクトリの配下のファイルまたはディレクトリの作成をテーブル管理部12に通知する。テーブル管理部12は、通知を受けて、メタデータ管理テーブル100における問い合わせ対象のディレクトリのエントリを特定する。そして、テーブル管理部12は、特定したエントリのビットマップにおける作成ファイルまたは作成ディレクトリの担当MDSに対応する値を1に変更してビットマップを更新する(ステップS106)。その後、親ディレクトリ管理部14は、作成ファイルまたは作成ディレクトリの担当MDSへ親ディレクトリのメタデータを送信する。
作成ファイルまたは作成ディレクトリの担当MDSの親ディレクトリ管理部14は、親ディレクトリのメタデータの入力を受ける。そして、親ディレクトリ管理部14は、自装置が管理するMDT2に親ディレクトリのメタデータを格納して親ディレクトリのメタデータを作成する(ステップS107)。テーブル管理部12は、親ディレクトリのエントリをメタデータ管理テーブル100に作成する。その後、処理はステップS102に戻り、親ディレクトリまでの各ディレクトリのメタデータが全て存在するまで、ステップS103~S107が繰り返される。
親ディレクトリまでの各ディレクトリのメタデータが全て存在する場合(ステップS102:肯定)、リクエスト処理部13は、自装置が管理するMDT2に格納されたメタデータを用いて親ディレクトリまでのアクセス権限をチェックする(ステップS108)。
親ディレクトリまでのアクセス権限の確認後、リクエスト処理部13は、ファイルのメタデータを作成してMDT2に格納する(ステップS109)。
次に、リクエスト処理部13は、親ディレクトリのメタデータを更新する(ステップS110)。
その後、作成ファイルまたは作成ディレクトリの担当MDSは、シャットダウン命令などの有無により動作を終了するか否かを判定する(ステップS111)。動作を終了しない場合(ステップS111:否定)、処理はステップS101へ戻る。これに対して、動作を終了すると判定した場合(ステップS111:肯定)、作成ファイルまたは作成ディレクトリの担当MDSは、ファイル作成処理を終了して動作を終了する。
次に、図17を参照して、ファイルの削除処理の流れについて説明する。図17は、ファイルの削除処理のフローチャートである。図17において、紙面に向かって仕切り線の左側は削除するファイルの担当MDSによる処理を表し、右側は削除するファイルの親ディレクトリの担当MDSによる処理を表す。
リクエスト受信部11は、ファイルの削除コマンドを受信する(ステップS201)。そして、リクエスト受信部11は、ファイルの削除のリクエストをリクエスト処理部13へ出力する。
リクエスト処理部13は、自装置が管理するMDT2に格納されたメタデータを用いて親ディレクトリまでのアクセス権限をチェックする(ステップS202)。
アクセス権限を確認後、リクエスト処理部13は、自装置が管理するMDT2に格納された削除ファイルのメタデータを削除する(ステップS203)。
その後、リクエスト処理部13は、削除時の親ディレクトリの更新処理を親ディレクトリ管理部14に指示する。親ディレクトリ管理部14は、親ディレクトリの下のファイル及びディレクトリの数が0か否かを判定する(ステップS204)。
親ディレクトリの下のファイル数が0でない場合(ステップS204:否定)、ファイルの削除処理はステップS210へ進む。
これに対して、親ディレクトリの下のファイル数が0、すなわち、親ディレクトリが空ディレクトリの場合(ステップS204:肯定)、親ディレクトリ管理部14は、メタデータ管理テーブル100を参照する。そして、親ディレクトリ管理部14は、メタデータ管理テーブル100から親ディレクトリのハッシュ値を取得して、自装置が親ディレクトリの担当MDSか否かを判定する(ステップS205)。
自装置が親ディレクトリの担当MDSでない場合(ステップS205:否定)、親ディレクトリ管理部14は、自装置が管理するMDT2に格納された親ディレクトリのメタデータを削除する(ステップS206)。親ディレクトリ管理部14は、親ディレクトリのハッシュ値をメタデータ管理テーブル100から取得する。その後、テーブル管理部12は、親ディレクトリのエントリをメタデータ管理テーブル100から削除する。
次に、親ディレクトリ管理部14は、取得したハッシュ値から親ディレクトリの担当MDSを特定する。そして、親ディレクトリ管理部14は、ビットマップ更新を親ディレクトリの担当MDSに依頼する(ステップS207)。
親ディレクトリの担当MDSの親ディレクトリ管理部14は、親ディレクトリのビットマップの更新依頼を削除ファイルの担当MDSから受ける。そして、親ディレクトリ管理部14は、親ディレクトリのビットマップの更新依頼をテーブル管理部12に出力する。テーブル管理部12は、メタデータ管理テーブル100における指定された親ディレクトリのエントリを特定する。その後、テーブル管理部12は、親ディレクトリのエントリのビットマップにおける削除ファイルの担当MDSに対応する値を0に変更する(ステップS208)。その後、ファイルの削除処理はステップS204に戻る。削除ファイルの担当MDSの親ディレクトリ管理部14は、削除したディレクトリの親ディレクトリについて、ステップS204からステップS208までの処理を再帰的に繰り返す。すなわち、再帰的にステップS204からステップS208が行われる場合の親ディレクトリとは、前回の処理で削除されたディレクトリの親ディレクトリである。
これに対して、自装置が親ディレクトリの担当MDSである場合(ステップS205:肯定)、親ディレクトリ管理部14は、自装置における親ディレクトリの配下のファイルまたはディレクトリの不存在をテーブル管理部12に通知する。テーブル管理部12は、メタデータ管理テーブル100における親ディレクトリのエントリを特定する。そして、テーブル管理部12は、親ディレクトリのエントリのビットマップにおける自装置に対応する値を0に変更してビットマップを更新する(ステップS209)。
その後、親ディレクトリ管理部14は、親ディレクトリのメタデータを更新する(ステップS210)。ステップS209及びステップS210における親ディレクトリとは、ステップS204からステップS208の処理が再帰的に行われた場合、前回の処理で削除されたディレクトリの親ディレクトリである。
その後、削除ファイルの担当MDSは、シャットダウン命令などの有無により動作を終了するか否かを判定する(ステップS211)。動作を終了しない場合(ステップS211:否定)、処理はステップS201へ戻る。これに対して、動作を終了すると判定した場合(ステップS211:肯定)、削除ファイルの担当MDSは、ファイルの削除処理を終了して動作を終了する。
次に、図18を参照して、ディレクトリの削除処理の流れについて説明する。図18は、ディレクトリの削除処理のフローチャートである。
リクエスト受信部11は、ディレクトリの削除コマンドを受信する(ステップS301)。そして、リクエスト受信部11は、受信したファイル生成コマンドにしたがったファイル生成のリクエストをリクエスト処理部13へ出力する。
リクエスト処理部13は、メタデータ管理テーブル100における削除対象のディレクトリのビットマップが全て0か否かを判定する(ステップS302)。ビットマップが全て0の場合(ステップS302:肯定)、リクエスト処理部13は、自装置が管理するMDT2に格納されたメタデータを用いて親ディレクトリまでのアクセス権限をチェックする(ステップS303)。
親ディレクトリまでのアクセス権限の確認後、リクエスト処理部13は、自装置が管理するMDT2から親ディレクトリのメタデータを削除する(ステップS304)。テーブル管理部12は、削除された親ディレクトリのエントリをメタデータ管理テーブル100から削除する。
その後、リクエスト処理部13は、削除時の親ディレクトリの更新処理を親ディレクトリ管理部14へ送信する。親ディレクトリ管理部14は、削除時の親ディレクトリの更新処理を実行する(ステップS305)。ここで、削除時の親ディレクトリの更新処理とは、図17におけるステップS204からステップS209で実行される処理にあたる。
その後、親ディレクトリ管理部14は、親ディレクトリのメタデータを更新する(ステップS306)。
一方、ビットマップにおいて0以外の値が存在する場合(ステップS302:否定)、リクエスト処理部13は、エラー終了する(ステップS307)。その後、ディレクトリの削除処理はステップS308へ進む。
その後、削ディレクトリの担当MDSは、シャットダウン命令などの有無により動作を終了するか否かを判定する(ステップS308)。動作を終了しない場合(ステップS308:否定)、処理はステップS301へ戻る。これに対して、動作を終了すると判定した場合(ステップS308:肯定)、削除ディレクトリの担当MDSは、ディレクトリの削除処理を終了して動作を終了する。
(ハードウェア構成)
図19は、MDSのハードウェア構成の一例を表す図である。図19に示すように、MDS1は、CPU(Central Processing Unit)91、メモリ92、ネットワークインタフェース93及びHBA(Host Bus Adaptor)94を有する。CPU91は、バスを介して、メモリ92、ネットワークインタフェース93及びHBA94に接続される。
図19は、MDSのハードウェア構成の一例を表す図である。図19に示すように、MDS1は、CPU(Central Processing Unit)91、メモリ92、ネットワークインタフェース93及びHBA(Host Bus Adaptor)94を有する。CPU91は、バスを介して、メモリ92、ネットワークインタフェース93及びHBA94に接続される。
HBA94は、MDT2に接続される。HBA94は、CPU91とMDT2との間の通信のためのインフェースである。
ネットワークインタフェース93は、他のMDS1及びOSS3、並びに、ネットワーク7とCPU91との間の通信インタフェースである。ネットワークインタフェース93は、図1に例示した通信部15の機能を実現する。
メモリ92は、図2に例示した、リクエスト受信部11、テーブル管理部12、リクエスト処理部13、親ディレクトリ管理部14の機能を実現するプログラムを含む各種プログラムを格納する。
CPU91は、HBA94を介してMDT2と通信を行う。また、CPU91は、ネットワークインタフェース93を介して、他のMDS1及びOSS3や、ネットワーク7に接続された計算ノード5と通信を行う。
CPU91は、図2に例示した、リクエスト受信部11、テーブル管理部12、リクエスト処理部13、親ディレクトリ管理部14の機能を実現するプログラムを含む各種プログラムをメモリ92から読み出して展開して各種プロセスを形成する。そして、CPU91は、形成した各種プロセスを実行することで、図2に例示した、リクエスト受信部11、テーブル管理部12、リクエスト処理部13、親ディレクトリ管理部14の機能を実現する。
以上に説明したように、本実施例に係る分散ファイルシステムでは、ファイル及びディレクトリを担当するMDSはファイル及びディレクトリのハッシュ値により決定される。そして、本実施例に係る分散ファイルシステムでは、他のMDSに対するディレクトリのメタデータのコピーは、ファイルの作成時に選択されたMDSに、作成するファイルの親ディレクトリまでのメタデータが存在しない場合に実行する。すなわち、他のMDSへのメタデータの複写が遅延される。また、本実施例に係る分散ファイルシステムでは、ディレクトリの下に存在するファイル及びディレクトリが0になった場合に、そのディレクトリのメタデータの削除が許可される。さらに、本実施例に係る分散ファイルシステムでは、各ディレクトリのメタデータの有無の管理は、ディレクトリ作成時に担当として選択されたMDSが行う。
これにより、MDSの台数が増加した場合のメタデータの複写の数を低減することができ、MDSの台数の増加に伴うディレクトリ作成性能の低下を抑制することができる。また、複写されたディレクトリのメタデータの削除を、ディレクトリの削除命令を受ける前に行うことで、削除命令を受けたMDSに対する処理の集中を避けることができ、ディレクトリの削除性能の低下を抑制することができる。したがって、分散ファイルシステムの処理性能を向上させることができる。
1 MDS
2 MDT
3 OSS
4 OST
5 計算ノード
7 ネットワーク
10 分散ファイルシステム
11 リクエスト受信部
12 テーブル管理部
13 リクエスト処理部
14 親ディレクトリ管理部
15 通信部
2 MDT
3 OSS
4 OST
5 計算ノード
7 ネットワーク
10 分散ファイルシステム
11 リクエスト受信部
12 テーブル管理部
13 リクエスト処理部
14 親ディレクトリ管理部
15 通信部
Claims (6)
- ディレクトリ及びファイルのメタデータの分散ファイルシステムを制御するメタデータ管理プログラムであって、
第1ディレクトリのメタデータを第1メタデータ管理装置で管理し、
前記第1ディレクトリの配下の第2ディレクトリまたは第1ファイルのメタデータを第2メタデータ管理装置が作成して管理する場合に、前記第1ディレクトリのメタデータを前記第1メタデータ管理装置から前記第2メタデータ管理装置へ複写する
処理をコンピュータに実行させることを特徴とするメタデータ管理プログラム。 - 前記第2メタデータ管理装置が有する前記第1ディレクトリの配下に、前記第2ディレクトリ及び前記第1ファイルが存在しない場合、前記第2メタデータ管理装置が保持する前記第1ディレクトリのメタデータを削除する処理をコンピュータに実行させることを特徴とする請求項1に記載のメタデータ管理プログラム。
- 前記第2メタデータ管理装置が前記第1ディレクトリのメタデータを保持しない場合に、前記第1メタデータ管理装置が前記第1ディレクトリの配下に前記ディレクトリまたは前記ファイルを有避ければ、前記第1メタデータ管理装置が管理する前記第1ディレクトリのメタデータの削除を許可する処理をコンピュータに実行させることを特徴とする請求項1または2に記載のメタデータ管理プログラム。
- 前記第1メタデータ管理装置は、前記第1ディレクトリのメタデータの保持状態を示すビットマップを有し、
前記第1ディレクトリのメタデータが前記第2メタデータ管理装置に複写された場合に、前記ビットマップにおける前記第2メタデータ管理装置に対応する値を、保持を表す値に変更し、
前記第2メタデータ管理装置が保持する前記第1ディレクトリのメタデータが削除された場合に、前記ビットマップにおけるに前記第2メタデータ管理装置に対応する値を、不保持を表す値に変更し、
前記ビットマップを基に、前記第2メタデータ管理装置が前記第1ディレクトリのメタデータを保持しないか否かを判定する
処理をコンピュータに実行させることを特徴とする請求項3に記載のメタデータ管理プログラム。 - 前記第1ディレクトリ、前記第2ディレクトリ及び前記第1ファイルのそれぞれのハッシュ値を基に、それぞれを管理する装置が決定されることを特徴とする請求項1~4のいずれか一つに記載のメタデータ管理プログラム。
- ディレクトリ及びファイルのメタデータを管理する分散ファイルシステムに含まれる情報処理装置であって、
前記ディレクトリ及び前記ファイルを作成し管理するリクエスト処理部と、
第1ディレクトリのメタデータが前記分散ファイルシステムに含まれる他の情報処理装置により管理される場合に、前記第1ディレクトリの配下の第2ディレクトリまたはファイルのメタデータを前記リクエスト処理部が作成して管理する際に、前記第1ディレクトリのメタデータを前記他の情報処理装置から取得する親ディレクトリ管理部と
を備ええたことを特徴とする情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020133618A JP2022029976A (ja) | 2020-08-06 | 2020-08-06 | メタデータ管理プログラム及び情報処理装置 |
US17/348,795 US20220043776A1 (en) | 2020-08-06 | 2021-06-16 | Metadata management program and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020133618A JP2022029976A (ja) | 2020-08-06 | 2020-08-06 | メタデータ管理プログラム及び情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022029976A true JP2022029976A (ja) | 2022-02-18 |
Family
ID=80115071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020133618A Pending JP2022029976A (ja) | 2020-08-06 | 2020-08-06 | メタデータ管理プログラム及び情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220043776A1 (ja) |
JP (1) | JP2022029976A (ja) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937393B2 (en) * | 2005-11-28 | 2011-05-03 | Commvault Systems, Inc. | Systems and methods for classifying and transferring information in a storage network |
US7873601B1 (en) * | 2006-06-29 | 2011-01-18 | Emc Corporation | Backup of incremental metadata in block based backup systems |
US8296398B2 (en) * | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
US9934240B2 (en) * | 2008-09-30 | 2018-04-03 | Google Llc | On demand access to client cached files |
US20130218934A1 (en) * | 2012-02-17 | 2013-08-22 | Hitachi, Ltd. | Method for directory entries split and merge in distributed file system |
CN105607960B (zh) * | 2015-10-26 | 2018-12-07 | 成都华为技术有限公司 | 文件系统目录树修复方法和装置 |
-
2020
- 2020-08-06 JP JP2020133618A patent/JP2022029976A/ja active Pending
-
2021
- 2021-06-16 US US17/348,795 patent/US20220043776A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20220043776A1 (en) | 2022-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8307019B2 (en) | File management method and storage system | |
US9558205B2 (en) | Method for creating clone file, and file system adopting the same | |
JP4615337B2 (ja) | ストレージシステム | |
WO2017097059A1 (zh) | 分布式数据库系统及其自适应方法 | |
CN110914808B (zh) | 将文件复制和迁移到辅助存储站点 | |
US10956335B2 (en) | Non-volatile cache access using RDMA | |
US10318194B2 (en) | Method and an apparatus, and related computer-program products, for managing access request in multi-tenancy environments | |
JP2010026814A (ja) | 資源転送システム、資源転送方法、情報処理装置及びコンピュータプログラム | |
US9183212B2 (en) | Representing directory structure in content-addressable storage systems | |
JP4220174B2 (ja) | ストレージシステムのコンテンツ更新方法 | |
US20190339874A1 (en) | Point-in-time snap copy on asynchronous consistency group management | |
CN109302448B (zh) | 一种数据处理方法及装置 | |
US10901643B2 (en) | Using log objects in object storage for durability of file objects in volatile memory | |
JP4629342B2 (ja) | ストレージ装置およびその制御方法 | |
US11256419B2 (en) | Optimal object placement device and method | |
US10394484B2 (en) | Storage system | |
US8250176B2 (en) | File sharing method and file sharing system | |
TW201908987A (zh) | 用於物聯網設備於資料中心備份的分散式重複資料刪除儲存系統及其達成分散式重複資料刪除方法 | |
WO2015162674A1 (ja) | ストレージシステム | |
JP2009064159A (ja) | 計算機システム、管理計算機及びデータ管理方法 | |
WO2014064740A1 (en) | Computer system and file server migration method | |
US10324652B2 (en) | Methods for copy-free data migration across filesystems and devices thereof | |
JP6406027B2 (ja) | 情報処理システム、情報処理装置、メモリアクセス制御方法 | |
JP3848268B2 (ja) | 計算機システム、計算機装置、計算機システムにおけるデータアクセス方法及びプログラム | |
US11256434B2 (en) | Data de-duplication |