(58)【調査した分野】(Int.Cl.,DB名)
1台以上のI/Oサーバを含み、作成されるファイルを分割し複数のI/Oサーバに分散させて保存し、各ファイルを読み取るために必要な各メタデータを複数のI/Oサーバに分散させて保存し、クォータを管理するクォータ管理機能付ファイルシステムであって、
前記I/Oサーバは、
クォータ管理機能付ファイルシステム全体のクォータである集計クォータを記憶する集計クォータ記憶部と、
I/Oサーバ内のクォータである部分クォータを記憶する部分クォータ記憶部と、
分割された実ファイルを保存し、前記集計クォータ記憶部に保存された集計クォータを参照して作成されたファイルが属するクォータのクォータIDを実ファイルに付与するクォータ管理部と、
実ファイルが更新された際に前記クォータIDを参考にして前記部分クォータ記憶部に保存されている部分クォータを更新するクォータ更新部と、
通信網を介して他のI/Oサーバと情報を交換する通信部と、
前記通信部を介してクォータ管理機能付ファイルシステム内の他の全てのI/Oサーバから部分クォータの更新部分を収集し、収集した前記更新部分が反映された集計クォータを作成し、前記通信部を介して作成した前記集計クォータを他の全てのI/Oサーバへ配信するクォータ集計部とを含む
ことを特徴とするクォータ管理機能付ファイルシステム。
I/Oサーバは、新規に作成されるファイルのI/Oサーバ内へのメタデータ作成の許可を要求された際に、集計クォータ記憶部に保存された集計クォータを参照して、ファイルが作成されるディレクトリが、ファイルが属するクォータの範囲内であればメタデータ作成を許可するクォータ判定部を含む
請求項1から請求項4のうちのいずれか1項に記載のクォータ管理機能付ファイルシステム。
1台以上のI/Oサーバを含み、作成されるファイルを分割し複数のI/Oサーバに分散させて保存し、各ファイルを読み取るために必要な各メタデータを複数のI/Oサーバに分散させて保存し、クォータを管理するクォータ管理機能付ファイルシステム内の前記I/Oサーバにおいて実行されるクォータ管理方法であって、
クォータ管理機能付ファイルシステム全体のクォータである集計クォータを記憶し、
I/Oサーバ内のクォータである部分クォータを記憶し、
分割された実ファイルを保存し、
前記集計クォータを参照して作成されたファイルが属するクォータのクォータIDを実ファイルに付与し、
実ファイルが更新された際に前記クォータIDを参考にして前記部分クォータを更新し、
通信網を介して他のI/Oサーバと情報を交換し、
クォータ管理機能付ファイルシステム内の他の全てのI/Oサーバから部分クォータの更新部分を収集し、
収集した前記更新部分が反映された集計クォータを作成し、
作成した前記集計クォータを他の全てのI/Oサーバへ配信する
ことを特徴とするクォータ管理方法。
1台以上のI/Oサーバを含み、作成されるファイルを分割し複数のI/Oサーバに分散させて保存し、各ファイルを読み取るために必要な各メタデータを複数のI/Oサーバに分散させて保存し、クォータを管理するクォータ管理機能付ファイルシステム内の前記I/Oサーバにおいて実行されるクォータ管理プログラムであって、
前記I/Oサーバに、
クォータ管理機能付ファイルシステム全体のクォータである集計クォータを記憶する集計クォータ記憶処理、
I/Oサーバ内のクォータである部分クォータを記憶する部分クォータ記憶処理、
分割された実ファイルを保存する保存処理、
前記集計クォータを参照して作成されたファイルが属するクォータのクォータIDを実ファイルに付与するクォータ管理処理、
実ファイルが更新された際に前記クォータIDを参考にして前記部分クォータを更新するクォータ更新処理、
通信網を介して他のI/Oサーバと情報を交換するための通信処理、
クォータ管理機能付ファイルシステム内の他の全てのI/Oサーバから部分クォータの更新部分を収集する収集処理、
収集した前記更新部分が反映された集計クォータを作成する作成処理、および
作成した前記集計クォータを他の全てのI/Oサーバへ配信する配信処理
を実行させるためのクォータ管理プログラム。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態を図面を参照して説明する。
図1は、本発明によるクォータ管理機能付ファイルシステムの一実施形態の構成例を示すシステム構成図である。
図1に示すクォータ管理機能付ファイルシステム10は、5台の計算ノード100〜104と、6台のI/Oサーバ200〜205とを備えている。
【0019】
図1には、計算ノード100〜104が、I/Oサーバ200〜205に通信網300を介して接続されている例が示されている。なお、
図1には、5台の計算ノードが示されているが、計算ノードの台数は5台でなくてもよい。また、
図1には、6台のI/Oサーバが示されているが、I/Oサーバの台数は6台でなくてもよい。
【0020】
計算ノード100〜104は、クォータ管理機能付ファイルシステム10のクライアントとして動作する。計算ノード100〜104は、I/Oサーバ200〜205に対して並列に入出力できる。
【0021】
I/Oサーバ200〜205は、クォータ管理機能付ファイルシステム10のサーバ(ストレージサーバ)として動作する。
【0022】
通信網300は、有線LAN(Local Area Network)、無線LAN、またはWAN(Wide Area Network)等である。計算ノード100〜104は、I/Oサーバ200〜205と通信可能な状態である。また、I/Oサーバ200〜205は、互いに通信可能な状態である。
【0023】
次に、I/Oサーバの詳細な構成を
図2を参照して説明する。
図2は、I/Oサーバ200の構成例を示すブロック図である。
【0024】
図2に示すI/Oサーバ200は、仮想ファイルメタデータ作成部210と、集計クォータ記憶部220と、クォータ判定部230と、通信部240と、クォータ集計部250と、部分クォータ260と、サーバ負荷監視部270と、サーバ内ローカルファイルシステム部280と、サーバ内クォータ更新部290とを含む。
【0025】
なお、他のI/Oサーバ201〜205も、I/Oサーバ200と同様の構成をしている。
【0026】
仮想ファイルメタデータ作成部210は、I/Oサーバ200内のサーバ内ローカルファイルシステム部280に、仮想ファイルメタデータを作成する機能を有する。
【0027】
集計クォータ記憶部220は、ファイルシステム全体のクォータである集計クォータを記憶する機能を有する。集計クォータは、定期的に他のI/Oサーバよりも負荷の低いI/Oサーバによって作成される情報である。作成されると、集計クォータは、作成したI/Oサーバにより配信される。
【0028】
クォータ判定部230は、あるクライアントがI/Oサーバ200内にファイルのメタデータを作成する際に、集計クォータ記憶部220を参照して、ファイルが作成されるディレクトリが、ファイルが属するクォータの範囲内であるか否か判定する機能を有する。
【0029】
クォータの範囲内である場合、クォータ判定部230は、クライアントにメタデータの作成を許可する。クォータの範囲内でない場合、クォータ判定部230は、クライアントにメタデータの作成を拒否する。
【0030】
通信部240は、通信網300を介して、各計算ノードまたは各I/Oサーバと情報を交換する機能を有する。
【0031】
クォータ集計部250は、定期的に部分クォータ260の更新部分を収集する機能を有する。なお、他のI/Oサーバよりも自身のサーバの負荷が低い場合、クォータ集計部250は、通信部240を介して、他のI/Oサーバの部分クォータ260の更新部分も収集する機能を有する。
【0032】
収集した後、クォータ集計部250は集計クォータを作成する。作成すると、クォータ集計部250は、通信部240を介して作成した集計クォータを各I/Oサーバへ配布する。
【0033】
また、クォータ集計部250は、タイマ部251を含む。タイマ部251は、クォータ管理機能付ファイルシステム10が集計クォータを作成する時間間隔を制御する機能を有する。
【0034】
クォータのディスク使用量がソフトリミットまでに余裕がある場合、タイマ部251は、集計クォータが作成される間隔を長くする。クォータのディスク使用量がソフトリミット間際の場合、タイマ部251は、集計クォータが作成される間隔を短くする。クォータのディスク使用量がソフトリミットを超えた場合、タイマ部251は、集計クォータが作成される間隔を更に短くし、集計クォータが更新される頻度を上げる。ここで、ソフトリミットは、クォータリミットよりも小さな値が設定された閾値を意味する。
【0035】
HPC向けの共有ファイルシステムでは、他のファイルシステムほどクォータが厳密に常時確認されていなくてもよい。すなわち、クォータのディスク使用量がクォータリミットを超えた時から入出力制限するまでに若干の時差があっても許される場合が多いので、I/Oサーバ内部の部分クォータは、更新後即時に集計されなくてもよい。本実施形態ではタイマ部251を設け、部分クォータが集計される時間間隔を調整できるようにしている。
【0036】
サーバ負荷監視部270は、I/Oサーバ200自身の負荷を監視する機能を有する。監視された負荷情報は、通信部240を介して各I/Oサーバ間で交換される。
【0037】
サーバ内ローカルファイルシステム部280には、クライアントが実ファイルをI/Oサーバに作成する際、実ファイルが作成される。サーバ内ローカルファイルシステム部280は、集計クォータ記憶部220を参照して、作成された実ファイルの実ファイルデータに、実ファイルの基となるファイルが属するクォータを判別できるクォータIDを付加して保存する。
【0038】
部分クォータ260は、サーバ内ローカルファイルシステム部280に保存されている実ファイルが消費しているディスク使用量を、クォータIDごとに集計した情報である。
【0039】
サーバ内クォータ更新部290は、サーバ内ローカルファイルシステム部280内に実ファイルが作成された際、またはサーバ内ローカルファイルシステム部280内の実ファイルが更新された際に、部分クォータ260を更新する機能を有する。
【0040】
なお、本実施形態における仮想ファイルメタデータ作成部210、クォータ判定部230、クォータ集計部250、サーバ負荷監視部270、サーバ内ローカルファイルシステム部280、およびサーバ内クォータ更新部290は、例えば、プログラムに従って動作するCPU(Central Processing Unit)によって実現される。
【0041】
また、部分クォータ260は、例えば、CPUが直接読み書きできるRAM(Random Access Memory)によって実現される。
【0042】
また、通信部240は、例えば、プログラムに従って動作するCPUと、ネットワークカード等の通信制御装置とによって実現される。
【0043】
また、集計クォータ記憶部220は、例えば、データベースシステムといった記憶装置によって実現される。
【0044】
以下、クォータ制御と部分クォータの作成を説明するために、本発明によるファイル作成処理の動作を
図3を参照して説明する。
図3は、クォータ管理機能付ファイルシステム10のファイル作成処理の動作を示すフローチャートである。
【0045】
最初に、クライアントが作成するファイルが属するファイルシステムのツリー構造を、
図4を参照して説明する。
図4は、クォータ管理機能付ファイルシステム10が実現するファイルシステムのツリー構造を示す説明図である。
【0046】
図4に示すツリー構造では、ルート配下にディレクトリhome、ディレクトリetcがある。また、ディレクトリhome配下にディレクトリdir01、ディレクトリdir02、ディレクトリdir03がある。また、ディレクトリdir01配下にファイルAがある。また、ディレクトリdir02配下にファイルBがある。
【0047】
図4に示すように、ファイルAは、クォータIDが0のクォータ(以下、クォータ0という。)に属するとする。ファイルBは、クォータIDが1のクォータ(以下、クォータ1という。)に属するとする。
【0048】
図5は、ファイルと実ファイルとの関係を示す説明図である。
図5に示すように、ファイルAは、実ファイルa〜fに分割される。また、ファイルBは、実ファイルg〜jに分割される。
【0049】
ここでは
図4に示すように、ディレクトリdir01にファイルAを、ディレクトリdir02にファイルBをそれぞれ作成する時のクォータ管理機能付ファイルシステム10のファイル作成処理の動作を、
図3に示すフローチャートを参照して説明する。
【0050】
クライアントがディレクトリdir01にファイルAを作成する時の動作を説明する。ファイルAを作成するとき、いずれかのI/OサーバにファイルAのメタデータ411が作成される。
【0051】
クライアントである計算ノードが、メタデータを作成するI/Oサーバを決定する(ステップS101)。ここでは、計算ノード100がI/Oサーバ200にメタデータを作成すると決定したとする。
【0052】
クライアントは、決定したI/Oサーバに対してメタデータ作成の許可を要求する(ステップS102)。要求を受信したI/Oサーバの通信部240は、クォータ判定部230に、ファイルが作成されるディレクトリが、ファイルが属するクォータの範囲内であるか否か問い合わせる(ステップS103)。
【0053】
クライアントからメタデータ作成の許可の要求を受けたI/Oサーバのクォータ判定部230は、判定のために集計クォータ記憶部220を参照する。そして、ファイルが作成されるディレクトリがクォータの範囲を超える場合(ステップS104のNo)、I/Oサーバは、クライアントに対してメタデータの作成を拒否する(ステップS110)。クォータ管理機能付ファイルシステム10は、ファイル作成処理を終了する。
【0054】
ファイルが作成されるディレクトリがクォータの範囲内である場合(ステップS104のYes)、I/Oサーバは、クライアントに対してメタデータの作成を許可する(ステップS105)。
【0055】
クライアントである計算ノード100からメタデータ作成の許可の要求を受けたI/Oサーバ200のクォータ判定部230は、判定のために集計クォータ記憶部220を参照する。
【0056】
クォータ判定部230は、ディレクトリdir01がファイルAの属するクォータであるクォータ0の範囲内であることから(ステップS104のYes)、計算ノード100に対してメタデータ作成の許可を通知する(ステップS105)。
【0057】
クライアントは、作成許可を通知したI/Oサーバにメタデータを作成する(ステップS106)。クライアントである計算ノード100は、I/Oサーバ200にファイルAのメタデータ411を作成する。
【0058】
本実施形態において、ファイルメタデータには、オブジェクトの種類(通常のファイル)、サイズ、作成日、最終更新日、ファイル所有者、アクセス権限など、一般的なファイルシステムのファイルメタデータ情報に加えて、分割された実ファイルへのリンク情報が含まれる。
【0059】
ファイルメタデータが作成されたI/Oサーバは、ファイルメタデータに含まれる情報を基に、実ファイルが分散配置される全てのI/Oサーバにファイルの実ファイル情報を作成する(ステップS107)。本実施形態において、ファイルの実ファイル情報には、分割された実ファイルの元のファイル内における位置を示すオフセット情報と、そのリンク情報が含まれる。
【0060】
図6は、クォータ管理機能付ファイルシステム10が実現するファイルシステムのファイルメタデータと実ファイルとの関係を示す説明図である。
図6に示すように、ファイルAのメタデータ411が作成されたI/Oサーバ200は、ファイルAの実ファイル情報421を、実ファイルを分散配置する自身のサーバ内に作成する。
【0061】
また、I/Oサーバ200は、ファイルAの実ファイル情報422を、実ファイルを分散配置するI/Oサーバ201に作成する。同様に、I/Oサーバ200は、ファイルAの実ファイル情報423を、実ファイルを分散配置するI/Oサーバ202に作成する(ステップS107)。
【0062】
図6に示すファイルAの実ファイル情報421〜423には、それぞれ異なる実ファイル情報が含まれている。例えば、ファイルAの実ファイル情報421には、実ファイルaおよび実ファイルdの情報が含まれている。また、ファイルの実ファイル情報は、ファイルのメタデータから参照される。
【0063】
クライアントは、分割した実ファイルをファイルの先頭に近い方から順番に各I/Oサーバへ保存する(ステップS108)。
【0064】
クライアントである計算ノード100は、ファイルAの実ファイルaと実ファイルdを、I/Oサーバ200に保存する。計算ノード100は、ファイルAの実ファイルbと実ファイルeを、I/Oサーバ201に保存する。計算ノード100は、ファイルAの実ファイルcと実ファイルfを、I/Oサーバ202に保存する(ステップS108)。
【0065】
各I/Oサーバは、保存された実ファイルを基に部分クォータを更新する(ステップS109)。ファイルが複数のクォータに関わる場合、クォータIDは複数付随される。
【0066】
ファイルに付随されたクォータIDの集計方法として、仮想ファイルメタデータ作成部210によって作成された、ローカルファイルシステムのメタデータ等を用いて高速に集計する方法等が考えられる。
【0067】
次に、クライアントがディレクトリdir02にファイルBを作成する時の動作を説明する。ファイルBを作成するとき、いずれかのI/OサーバにファイルBのメタデータ511が作成される。ここでは、クライアントである計算ノード101がI/Oサーバ201にファイルBのメタデータ511を作成すると決定したとする(ステップS101)。
【0068】
クライアントである計算ノード101は、I/Oサーバ201に対してメタデータ作成の許可を要求する(ステップS102)。I/Oサーバ201の通信部240は、クォータ判定部230に、ファイルが作成されるディレクトリが、ファイルが属するクォータの範囲内であるか否か問い合わせる(ステップS103)。
【0069】
クライアントである計算ノード101からメタデータ作成の許可の要求を受けたI/Oサーバ201のクォータ判定部230は、判定のために集計クォータ記憶部220を参照する。クォータ判定部230は、ディレクトリdir02がファイルBの属するクォータであるクォータ1の範囲内であることから(ステップS104のYes)、計算ノード101に対してメタデータ作成の許可を通知する(ステップS105)。
【0070】
クライアントである計算ノード101は、I/Oサーバ201にファイルBのメタデータ511を作成する(ステップS106)。
【0071】
図6に示すように、ファイルBのメタデータが作成されたI/Oサーバ201は、ファイルBの実ファイル情報522を、実ファイルを分散配置する自身のサーバ内に作成する。ファイルBの実ファイル情報522には、実ファイルhの情報が含まれている。
【0072】
また、I/Oサーバ201は、ファイルBの実ファイル情報521を、実ファイルを分散配置するI/Oサーバ200に作成する。同様に、I/Oサーバ201は、ファイルBの実ファイル情報523を、実ファイルを分散配置するI/Oサーバ202に作成する(ステップS107)。
【0073】
図6に示すように、クライアントである計算ノード101は、ファイルBの実ファイルgと実ファイルjを、I/Oサーバ200に保存する。計算ノード101は、ファイルBの実ファイルhを、I/Oサーバ201に保存する。計算ノード101は、ファイルBの実ファイルiを、I/Oサーバ202に保存する(ステップS108)。各I/Oサーバは、保存された実ファイルを基に部分クォータを更新する(ステップS109)。
【0074】
このようにして、クォータ管理機能付ファイルシステム10は、ファイルのメタデータ及び実ファイルを各I/Oサーバに分散して保存する。メタデータをファイルのオブジェクトが保存されるサーバに分散して保存することで、クォータ管理機能付ファイルシステム10は、メタデータが保存されるサーバに負荷が集中する課題を改善している。
【0075】
次に、
図6に示すように実ファイルが配置された状態で、クライアントが実ファイルを参照するときのクライアントの動作を説明する。
【0076】
図7を参照して、ディレクトリのメタデータを説明する。
図7は、クォータ管理機能付ファイルシステム10が実現するファイルシステムのディレクトリメタデータとファイルメタデータとの関係を示す説明図である。
図7に示すように、ここではクォータ管理機能付ファイルシステム10に備えられているI/Oサーバ203〜205を例に説明する。
【0077】
ここで、ディレクトリ1配下にディレクトリ2、ディレクトリ3、ファイル1、ファイル2があるとする。ディレクトリ1のメタデータ601は、I/Oサーバ203〜205のいずれかに保存される。同様に、ディレクトリ2のメタデータ631、ディレクトリ3のメタデータ632は、I/Oサーバ203〜205のいずれかに保存される。
【0078】
本実施形態において、ディレクトリのメタデータには、オブジェクトの種類(ディレクトリ)、サイズ、作成日、最終更新日、ディレクトリ所有者、アクセス権限などの、一般的なファイルシステムのディレクトリメタデータ情報に加えて、ディレクトリエントリ情報へのリンク情報が含まれている。
【0079】
ここでは、ディレクトリ1のメタデータ601がI/Oサーバ203に、ディレクトリ2のメタデータ631がI/Oサーバ204に、ディレクトリ3のメタデータ632がI/Oサーバ205にそれぞれ保存されるとする。
【0080】
I/Oサーバ203は、ディレクトリ1のメタデータ601の他に、ディレクトリ1のディレクトリエントリ情報611と、ディレクトリエントリ621と、ファイル1のメタデータ633とを含むとする。I/Oサーバ204は、ディレクトリ2のメタデータ631の他に、ファイル2のメタデータ634を含むとする。
【0081】
クライアントは、ディレクトリ1のメタデータ601からディレクトリ1のディレクトリエントリ情報611を経由して、ディレクトリエントリ621を参照できる。本実施形態において、ディレクトリエントリ情報には、ディレクトリエントリへのリンク情報が含まれている。
【0082】
ディレクトリエントリ621には、ファイル1のメタデータ633、ファイル2のメタデータ634、ディレクトリ2のメタデータ631、およびディレクトリ3のメタデータ632へのリンク情報が含まれる。このためクライアントは、ディレクトリエントリ621から、ファイル1のメタデータ633等のディレクトリ1直下のメタデータを参照できる。
【0083】
次に、クォータ管理機能付ファイルシステム10が実現するファイルシステムにおける実ファイルの参照方法を、
図8と
図9を参照して説明する。
図8は、クライアントのファイルのメタデータ取得処理の動作を示すフローチャートである。
図9は、クライアントのファイルの実ファイル参照処理の動作を示すフローチャートである。
【0084】
ここではクライアントである計算ノードが、ファイル“/mnt/home/file”の一部の実ファイルを参照するまでの動作を説明する。
【0085】
図8のフローチャートを参照し、クライアントがファイルのメタデータを取得するまでの動作を説明する。クライアントは、目的のファイルが格納されているディレクトリ(/mnt/home/)のメタデータをキャッシュ済みか否か確認する(ステップS201)。
【0086】
目的のファイルが格納されているディレクトリのメタデータをキャッシュ済みの場合(ステップS201のYes)、クライアントは、ファイルのメタデータを取得する(ステップS202)。
【0087】
目的のファイルが格納されているディレクトリのメタデータがキャッシュされていない場合(ステップS201のNo)、クライアントは、キャッシュ済みのメタデータから、下位ディレクトリのメタデータが格納されているI/Oサーバを特定する(ステップS203)。そして下位ディレクトリのメタデータを取得した後(ステップS204)、クライアントは、再び目的のファイルが格納されているディレクトリのメタデータをキャッシュ済みか否か確認する(ステップS201)。
【0088】
クライアントがファイルのメタデータを取得するまでの動作を、
図7に示すメタデータの関係を例に具体的に説明する。ここで、ディレクトリ(/mnt/home/)のメタデータがディレクトリ1のメタデータ601、ファイル(/mnt/home/file)のメタデータがファイル1のメタデータ633であるとする。
【0089】
クライアントは、メタデータ601をキャッシュ済みか否か確認する(ステップS201)。キャッシュ済みの場合(ステップS201のYes)、クライアントは、メタデータ601からディレクトリエントリ情報611を参照する。次いで、クライアントは、ディレクトリエントリ情報611からディレクトリエントリ621を参照する。ディレクトリエントリ621からメタデータ633を参照し、クライアントは、メタデータ633を取得する(ステップS202)。
【0090】
メタデータ601がキャッシュされていない場合(ステップS201のNo)、クライアントは、キャッシュ済みのディレクトリ(/mnt/)のメタデータから、下位ディレクトリ(/mnt/home/)のメタデータが格納されているI/Oサーバを特定する(ステップS203)。
【0091】
下位ディレクトリ(/mnt/home/)のメタデータ601が格納されているI/OサーバがI/Oサーバ203であることを特定すると、クライアントは、メタデータ601を取得する(ステップS204)。メタデータ601を取得すると、クライアントは、再びメタデータ601をキャッシュ済みか否か確認する(ステップS201)。
【0092】
次に、
図9のフローチャートを参照し、クライアントがファイル“/mnt/home/file”の一部の実ファイルを参照するまでの動作を説明する。クライアントは、fileのメタデータキャッシュを保存しているか確認する(ステップS301)。
【0093】
メタデータキャッシュを保存していない場合(ステップS301のNo)、クライアントは、
図8に示すようにfileのメタデータキャッシュを取得する(ステップS302)。
【0094】
メタデータキャッシュを保存している場合(ステップS301のYes)、またはメタデータを取得した場合(ステップS302)、クライアントは、ファイル(/mnt/home/file)のメタデータを開く(ステップS303)。
【0095】
クライアントは、開いたfileのメタデータと、fileを参照する位置から、実ファイルが格納されているI/Oサーバを特定する(ステップS304)。特定すると、クライアントは、I/Oサーバの実ファイルを参照する(ステップS305)。
【0096】
クライアントがファイルの一部の実ファイルを参照するまでの動作を、
図6に示すメタデータと実ファイルとの関係を例に具体的に説明する。ここで、ファイル(/mnt/home/file)のメタデータがファイルAのメタデータ411、また参照する実ファイルが実ファイルbであるとする。
【0097】
クライアントは、メタデータ411のキャッシュを保存しているか確認する(ステップS301)。メタデータ411のキャッシュを保存している場合(ステップS301のYes)、クライアントは、メタデータ411を開く(ステップS303)。クライアントは、メタデータ411と、fileを参照する位置から、実ファイルbの格納されているI/Oサーバを特定する(ステップS304)。
【0098】
実ファイルbの格納されているI/OサーバがI/Oサーバ201であることを特定すると、クライアントは、メタデータ411から、実ファイルbの情報を含む実ファイル情報422を参照する。クライアントは、実ファイル情報422から実ファイルbを参照する(ステップS305)。
【0099】
次に、本発明によるクォータ集計処理の動作を
図10を参照して説明する。
図10は、クォータ管理機能付ファイルシステム10のクォータ集計処理の動作を示すフローチャートである。
図10に示すクォータ集計処理は、ファイルシステム全体のクォータである集計クォータを得る処理である。
【0100】
クォータ管理機能付ファイルシステム10の各I/Oサーバは、タイマ部251のタイマを初期化する(ステップS401)。
【0101】
タイマ部251がタイムアウトしたとき(ステップS402のYes)、各I/Oサーバは、自身が集計クォータを作成するI/Oサーバであるか否か確認する(ステップS403)。
【0102】
ここで、集計クォータを作成するI/Oサーバには、クォータ管理機能付ファイルシステム10のI/Oサーバ内で一番負荷の低いI/Oサーバが選ばれる。I/Oサーバの負荷情報は、サーバ負荷監視部270で監視されている。CPU負荷等の監視された負荷情報は、各I/Oサーバ間で交換されている。
【0103】
集計クォータを作成するI/Oサーバでない場合(ステップS403のNo)、そのI/Oサーバは、タイマ部251が再びタイムアウトするまで待機する。
【0104】
集計クォータを作成するI/Oサーバの場合(ステップS403のYes)、そのI/Oサーバは、部分クォータ260の更新部分を各I/Oサーバから収集し、集計クォータを作成する(ステップS404)。I/Oサーバは、作成した集計クォータを他の全てのI/Oサーバへ配信する(ステップS405)。
【0105】
図11は、クォータ管理機能付ファイルシステム10のクォータの集計と配布の例を示す説明図である。
【0106】
図11に示すように、部分クォータ700と部分クォータ710は、それぞれクォータIDが0のクォータとクォータIDが1のクォータを持つ。そして、部分クォータ700内のクォータIDが0のクォータ701と、部分クォータ710内のクォータIDが0のクォータ711がそれぞれ更新された状態である。
【0107】
このとき、集計するI/Oサーバは、クォータ701とクォータ711を集計し、集計クォータ720内のクォータIDが0のクォータ721を更新する。集計するI/Oサーバは、更新部分を他の全てのI/Oサーバへ配信する集計クォータ730にも適用する。これより、集計クォータ730内のクォータIDが0のクォータ731は更新される。
【0108】
配信した後、I/Oサーバは、作成した集計クォータを参照してタイムアウト値を変更する(ステップS406)。
【0109】
本実施形態のクォータ管理機能付ファイルシステムを使用する場合、クォータの管理が低負荷で実現される。その理由は、メタデータと分割されたファイルが複数のサーバに分散しているファイルシステムにおいて、分割されたファイルにクォータIDを付与することで、各サーバ内でクォータを集計できるため、サーバ間通信を軽減できるからである。また、サーバが自身の負荷監視を行いサーバ間で負荷状況を交換しているため、低負荷なサーバにクォータを集計させることができるからである。
【0110】
本実施形態のクォータ管理機能付ファイルシステムを使用する場合、クォータのディスク使用量がクォータリミットを超えた時から、入出力制限がかかるまでの遅延時間を小さくすることができる。その理由は、ディスク使用量がクォータリミットに近づいてきたときに、ファイルシステムがクォータの更新頻度を上げるためである。
【0111】
次に、本発明の概要を説明する。
図12は、本発明によるクォータ管理機能付ファイルシステムの概要を示すブロック図である。本発明によるクォータ管理機能付ファイルシステム1は、通信網3(例えば、通信網300)を介して通信可能な1台以上のI/Oサーバ2
1〜2
n(I/Oサーバ200〜205に相当)を含み、作成されるファイルを分割し複数のI/Oサーバ2
1〜2
nに分散させて保存し、各ファイルを読み取るために必要な各メタデータを複数のI/Oサーバ2
1〜2
nに分散させて保存し、クォータを管理するファイルシステムである。
【0112】
I/Oサーバ2
1は、クォータ管理機能付ファイルシステム1全体のクォータである集計クォータを記憶する集計クォータ記憶部6(例えば、集計クォータ記憶部220)と、I/Oサーバ2
1内のクォータである部分クォータを記憶する部分クォータ記憶部7(例えば、部分クォータ260)と、分割された実ファイルを保存し、集計クォータ記憶部6に保存された集計クォータを参照して作成されたファイルが属するクォータのクォータIDを実ファイルに付与するクォータ管理部8(例えば、サーバ内ローカルファイルシステム部280)と、実ファイルが更新された際にクォータIDを参考にして部分クォータ記憶部7に保存されている部分クォータを更新するクォータ更新部9(例えば、サーバ内クォータ更新部290)と、通信網3を介して他のI/Oサーバ2
2〜2
nと情報を交換する通信部4(例えば、通信部240)と、通信部4を介してクォータ管理機能付ファイルシステム1内の他の全てのI/Oサーバ2
2〜2
nから部分クォータの更新部分を収集し、収集した更新部分が反映された集計クォータを作成し、通信部4を介して作成した集計クォータを他の全てのI/Oサーバ2
2〜2
nへ配信するクォータ集計部5(例えば、クォータ集計部250)とを含む。
【0113】
そのような構成により、このクォータ管理機能付ファイルシステムを使用する場合、使用するユーザは、比較的低負荷にクォータ管理ができる。
【0114】
また、クォータ集計部5は、作成した集計クォータを参照して、集計クォータを作成する時間間隔を変更してもよい。
【0115】
そのような構成により、このクォータ管理機能付ファイルシステムを使用する場合、使用するユーザは、クォータのディスク使用量がクォータリミットを超えた時から、入出力制限がかかるまでの遅延時間を小さくすることができる。
【0116】
また、I/Oサーバ2
1は、自身の負荷を監視する負荷監視部(例えば、サーバ負荷監視部270)を含み、通信部4を介して他のI/Oサーバ2
2〜2
nと負荷情報を交換してもよい。
【0117】
また、クォータ管理機能付ファイルシステム1は、最も負荷の低いI/Oサーバに集計クォータを作成させてもよい。
【0118】
そのような構成により、このクォータ管理機能付ファイルシステムを使用する場合、使用するユーザは、最も低負荷なサーバにクォータを集計させることができる。
【0119】
また、I/Oサーバ2
1は、新規に作成されるファイルのI/Oサーバ2
1内へのメタデータ作成の許可を要求された際に、集計クォータ記憶部6に保存された集計クォータを参照して、ファイルが作成されるディレクトリが、ファイルが属するクォータの範囲内であればメタデータ作成を許可するクォータ判定部(例えば、クォータ判定部230)を含んでもよい。
【0120】
そのような構成により、このクォータ管理機能付ファイルシステムを使用する場合、使用するユーザは、誤ったクォータにファイルを作成せずに済むことができる。
【0121】
また、I/Oサーバ2
1は、クォータ管理部8内に仮想ファイルメタデータを作成する仮想ファイルメタデータ作成部(例えば、仮想ファイルメタデータ作成部210)を含んでもよい。
【0122】
そのような構成により、このクォータ管理機能付ファイルシステムを使用する場合、使用するユーザは、仮想ファイルメタデータを用いて、実ファイルに付随されたクォータIDを高速に集計できる。