(57)【特許請求の範囲】
【請求項１】
ファイルシステムにおけるデータアクセス方法であって、
データアクセス要求を受信する段階であって、前記データアクセス要求はアクセス対象ノードの識別子を含む、段階と、
前記アクセス対象ノードの前記識別子に基づいて、前記アクセス対象ノードに対するアクセスパーミッションを取得する段階であって、前記アクセス対象ノードのパーミッションバージョン番号が、前記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、前記アクセス対象ノードに対する前記アクセスパーミッションは、前記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、段階と、
前記アクセス対象ノードに対する前記アクセスパーミッションに基づいて認証を行い、前記認証に成功した後に前記アクセス対象ノードのデータにアクセスする段階と
を備える、方法。
【請求項２】
前記アクセス対象ノードの前記識別子に基づいて、前記アクセス対象ノードに対するアクセスパーミッションを取得する前記段階は、ディレクトリツリーのルートノードのメタデータに格納されたグローバルアクセス制御リストから、前記アクセス対象ノードに対する前記アクセスパーミッションを取得する段階を含む、請求項１に記載の方法。
【請求項３】
前記グローバルアクセス制御リストには、ノードの識別子と、ノードのパス情報と、パーミッションバージョン番号と、パーミッションレコードとの対応関係が、最新のパーミッションバージョン番号を示すグローバルバージョンパラメータに対応付けて格納されている、請求項２に記載の方法。
【請求項４】
前記アクセスパーミッションが設定されるノードの前記パーミッションバージョン番号は、更新された前記グローバルバージョンパラメータの値である、請求項３に記載の方法。
【請求項５】
前記アクセス対象ノードの前記パーミッションバージョン番号が、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号の中で最新である場合、前記アクセス対象ノードに対する前記アクセスパーミッションは、前記アクセス対象ノードの登録されているパーミッションレコードである、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記アクセス対象ノードの前記識別子に基づいて前記アクセス対象ノードに対するアクセスパーミッションを取得する前記段階は、
グローバルアクセス制御リストに照会し、前記アクセス対象ノードの前記識別子に基づいて前記アクセス対象ノードの前記パス情報を判定する段階であって、前記アクセス対象ノードの前記パス情報は、前記アクセス対象ノード及び前記アクセス対象ノードの全ての親ノードを示すのに用いられる、段階と、
前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号に照会し、前記最新のパーミッションバージョン番号を有するノードを判定する段階と、
前記最新のパーミッションバージョン番号を有する前記ノードのパーミッションレコードを取得する段階であって、前記最新のパーミッションバージョン番号を有する前記ノードの前記パーミッションレコードは、前記アクセス対象ノードに対する前記アクセスパーミッションである、段階と
を有する、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号に照会して、前記最新のパーミッションバージョン番号を有するノードを判定する前記段階は、
事前設定されたトラバーサルルールに従って、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号を比較して、前記最新のパーミッションバージョン番号を有する前記ノードを判定する段階を有する、請求項６に記載の方法。
【請求項８】
前記方法はさらに、
ノード作成要求を受信する段階であって、前記ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、前記新たに追加されたノードの前記パス情報は、ルートノードから前記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す、段階と、
前記ディレクトリーツリーの前記新たに追加されたノードの前記識別子と前記パス情報との間の対応関係をグローバルアクセス制御リストに格納する段階と、
前記新たに追加されたノードに初期パーミッションバージョン番号を設定する段階であって、前記新たに追加されたノードに設定される前記初期パーミッションバージョン番号は、初期グローバルバージョンパラメータより小さい又はこれと等しい、段階と
を備える、請求項１から７のいずれか一項に記載の方法。
【請求項９】
ファイルシステム用のデータアクセス装置であって、
データアクセス要求を受信するように構成された受信モジュールであって、前記データアクセス要求はアクセス対象ノードの識別子を含む、受信モジュールと、
前記アクセス対象ノードの前記識別子に基づいて、前記アクセス対象ノードに対するアクセスパーミッションを取得するように構成された取得モジュールであって、前記アクセス対象ノードのパーミッションバージョン番号が、前記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、前記アクセス対象ノードに対する前記アクセスパーミッションは、前記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、取得モジュールと、
前記アクセス対象ノードに対する前記アクセスパーミッションに基づいて認証を行い、前記認証に成功した後に前記アクセス対象ノードのデータにアクセスするように構成された処理モジュールと
を備える、装置。
【請求項１０】
前記アクセス対象ノードの前記パーミッションバージョン番号が、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号の中で最新である場合、前記アクセス対象ノードに対する前記アクセスパーミッションは、前記アクセス対象ノードの登録されているパーミッションレコードである、請求項９に記載の装置。
【請求項１１】
前記取得モジュールはさらに、グローバルアクセス制御リストに照会し、前記アクセス対象ノードの前記識別子に基づいて前記アクセス対象ノードの前記パス情報を判定し、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号に照会して、前記最新のパーミッションバージョン番号を有するノードを判定し、前記最新のパーミッションバージョン番号を有する前記ノードのパーミッションレコードを取得するように構成され、前記アクセス対象ノードの前記パス情報は、前記アクセス対象ノード及び前記アクセス対象ノードの全ての親ノードを示すのに用いられ、前記最新のパーミッションバージョン番号を有する前記ノードの前記パーミッションレコードは、前記アクセス対象ノードに対する前記アクセスパーミッションである、請求項１０に記載の装置。
【請求項１２】
前記取得モジュールはさらに、事前設定されたトラバーサルルールに従って、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号を比較して、前記最新のパーミッションバージョン番号を有する前記ノードを判定するように構成される、請求項１１に記載の装置。
【請求項１３】
前記受信モジュールはさらに、ノード作成要求を受信するように構成され、前記ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、前記新たに追加されたノードの前記パス情報は、ルートノードから前記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
前記処理モジュールはさらに、前記ディレクトリーツリーの前記新たに追加されたノードの前記識別子と前記パス情報との間の対応関係をグローバルアクセス制御リストに格納することと、前記新たに追加されたノードのパーミッションバージョン番号を前記グローバルアクセス制御リストに格納することであって、前記新たに追加されたノードの前記パーミッションバージョン番号の初期値が、作成されたグローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、前記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、前記新たに追加されたノードに設定される前記初期パーミッションバージョン番号は初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、請求項９から１２のいずれか一項に記載の装置。
【請求項１４】
ファイルシステム用のデータアクセス装置であって、
データアクセス要求を受信するように構成されたインタフェースであって、前記データアクセス要求はアクセス対象ノードの識別子を含む、インタフェースと、
前記インタフェースに結合されたプロセッサであって、前記プロセッサは、
前記アクセス対象ノードの前記識別子に基づいて前記アクセス対象ノードに対するアクセスパーミッションを取得し、前記アクセス対象ノードに対する前記アクセスパーミッションに基づいて認証を行い、前記認証に成功した後に前記アクセス対象ノードのデータにアクセスするように構成され、前記アクセス対象ノードのパーミッションバージョン番号が、前記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、前記アクセス対象ノードに対する前記アクセスパーミッションは、前記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、プロセッサと
を備える、装置。
【請求項１５】
前記アクセス対象ノードの前記パーミッションバージョン番号が、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号の中で最新である場合、前記アクセス対象ノードに対する前記アクセスパーミッションは前記アクセス対象ノードの登録されたパーミッションレコードである、請求項１４に記載の装置。
【請求項１６】
前記プロセッサはさらに、グローバルアクセス制御リストに照会し、前記アクセス対象ノードの前記識別子に基づいて前記アクセス対象ノードの前記パス情報を判定し、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号に照会して、前記最新のパーミッションバージョン番号を有するノードを判定し、前記最新のパーミッションバージョン番号を有する前記ノードのパーミッションレコードを取得するように構成され、前記最新のパーミッションバージョン番号を有する前記ノードの前記パーミッションレコードは、前記アクセス対象ノードに対する前記アクセスパーミッションであり、前記アクセス対象ノードの前記パス情報は、前記アクセス対象ノード及び前記アクセス対象ノードの全ての親ノードを示すのに用いられる、請求項１５に記載の装置。
【請求項１７】
前記プロセッサはさらに、事前設定されたトラバーサルルールに従って、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号を比較して、前記最新のパーミッションバージョン番号を有する前記ノードを判定するように構成される、請求項１６に記載の装置。
【請求項１８】
前記インタフェースはさらに、ノード作成要求を受信するように構成され、前記ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、前記新たに追加されたノードの前記パス情報は、ルートノードから前記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
前記プロセッサはさらに、前記ディレクトリーツリーの前記新たに追加されたノードの前記識別子と前記パス情報との間の対応関係を前記グローバルアクセス制御リストに格納することと、前記新たに追加されたノードのパーミッションバージョン番号を前記グローバルアクセス制御リストに格納することであって、前記新たに追加されたノードの前記パーミッションバージョン番号の初期値が、作成されたグローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、前記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、前記新たに追加されたノードに設定される前記初期パーミッションバージョン番号は初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、請求項１７に記載の装置。
【請求項１９】
記録されたプログラムを有するコンピュータ可読記憶媒体であって、前記プログラムは、請求項１から８の何れか一項に記載の方法をコンピュータに実行させる、コンピュータ可読記憶媒体。
【請求項２０】
請求項１から８の何れか一項に記載の方法をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はファイルシステムの分野に関し、具体的には、ファイルシステムパーミッション設定方法及び装置に関する。
【背景技術】
【０００２】
ファイルシステムとは、構造化されたデータストレージ及び組織形態のことである。ファイルシステムを利用できるのは、それが使用可能な状態になってからだけである。ファイルシステムの組織構造は、ツリー状のディレクトリーツリーとして表される。ディレクトリーツリーは、ルートディレクトリー、サブディレクトリー、及びサブディレクトリーの下にあるファイルを含む。サブディレクトリーは、ファイルだけでなく、下位レベルのサブディレクトリーも含み得る。類推によって、マルチレベルディレクトリー構造のディレクトリーツリーが形成される。ツリー状構造のルートが、マウントポイントである。ディレクトリーツリーにおいて、ルートディレクトリーはディレクトリーツリーのルートノードに位置し、ファイルはディレクトリーツリーのリーフノードに位置し、サブディレクトリーはディレクトリーツリーの中間ノードに位置している。ファイル及びディレクトリーのそれぞれが、アクセス対象オブジェクトである。端末デバイス又はアプリケーションプログラムがアクセスする必要があるノードにアクセスする前に、アクセス対象ノードのアクセス制御リスト（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔｓ、ＡＣＬ）が照会され、アクセスパーミッションが取得された後に、アクセス対象ノードのデータがアクセスされる。異なるノードに対する異なるアクセスデバイスのアクセスパーミッションを制御するために、１つのアクセス制御リストがノードごとに構成され、アクセスパーミッションがノードごとに個別に設定される。具体的には、各ノードのＡＣＬが、いくつかのアクセス制御エントリ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｅｎｔｒｙ、ＡＣＥ）を含む。アクセス制御エントリは、ノードのアクセスパーミッションタイプを登録するのに用いられ、またノードにアクセスするアクセスデバイスなどのコンテンツと、ノードに対するアクセスデバイスのアクセスパーミッションとを登録するのに用いられる。
【０００３】
ディレクトリーツリーのノードにＡＣＬを設定する既存の方式は以下のとおりである。ディレクトリーツリーの任意のノードにＡＣＬが設定された後に、当該ノードと同じアクセスパーミッションを有するディレクトリーツリーの全ノードに当該ＡＣＬが設定される。このようにして、ディレクトリーツリーのノードごとにＡＣＬが繰り返し設定されるので、アクセスパーミッションをノードに設定する効率が比較的低い。
【発明の概要】
【０００４】
本発明は、ファイルシステムパーミッション設定方法及び装置を開示する。このファイルシステムパーミッション設定方法によれば、ノードのＡＣＬ設定オーバーヘッド及びストレージオーバーヘッドが減少する。
【０００５】
第１の態様によれば、ファイルシステムパーミッション設定方法が提供される。本方法は、ストレージシステムに適用され、ストレージシステムがパーミッション設定要求を受信する段階であって、パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、段階と、ストレージシステムがパーミッション設定要求を受信した後に、ストレージシステムが、現在登録されているグローバルバージョンパラメータを取得し、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得する段階と、ストレージシステムが、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として最新のグローバルバージョンパラメータを用いる段階とを含む。グローバルバージョンパラメータが漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表す。パーミッションを受けて設定されるノードの子ノードが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。
【０００６】
本発明において提供されるファイルシステムパーミッション設定方法によれば、ディレクトリーツリーのノードに対するアクセスパーミッションのパーミッションレコードが迅速に設定される。更新されたグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表すのに用いられる。この方法では、パーミッションを受けて設定されるノードの子ノードのパーミッションレコードは、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。したがって、ディレクトリーツリーの親ノードのパーミッションレコードだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードのパーミッションレコードを引き継ぐので、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にある各サブディレクトリー又は各ファイルのパーミッションレコードを個別に設定する必要はない。その結果、ディレクトリーツリーにアクセスパーミッションを設定する効率が向上する。パーミッションレコードは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにパーミッションレコードを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【０００７】
第１の態様に基づいて、第１の実装例では、現在登録されているグローバルバージョンパラメータを取得する段階は、グローバルアクセス制御リストに照会して、現在登録されているグローバルバージョンパラメータを取得する段階であって、グローバルアクセス制御リストは、ディレクトリーツリーのルートノードのメタデータに格納されており、グローバルアクセス制御リストはグローバルバージョンパラメータを格納する、段階を含む。
【０００８】
第１の態様の第１の実装例に基づいて、第２の実装例では、パーミッション設定要求を受信する前に、本方法はさらに、ストレージシステムがグローバルアクセス制御リストを作成し、新たに作成したグローバルアクセス制御リストに初期グローバルバージョンパラメータを設定する段階を含む。
【０００９】
第１の態様の第１又は第２の実装例に基づいて、第３の実装例では、パーミッション設定要求がさらに、パーミッションを受けて設定されるノードのパス情報を含み、パーミッションを受けて設定されるノードのパス情報は、ルートノードからパーミッションを受けて設定されるノードまでのアクセスブランチ上にある全ノードを示し、本方法はさらに、ストレージシステムが、パーミッションを受けて設定されるノードのパス情報をグローバルアクセス制御リストに格納する段階であって、パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは対応関係を形成する、段階を含む。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは対応関係を形成し、当該対応関係はグローバルアクセス制御リストに格納されているので、ディレクトリーツリー内の、パーミッションを受けて設定されるノードの、識別子、パス情報、及びパーミッションレコードは、ディレクトリーツリーのルートノードのメタデータに索引を付けるだけで取得することができる。これにより、ディレクトリーツリーのノードのパーミッションレコード及びパス情報を取得するための、扱いやすいアクセスチャネルが提供される。
【００１０】
第１の態様又は第１の態様の第１から第３の実装例のうちのいずれか１つに基づいて、第４の実装例では、本方法はさらに、ストレージシステムがデータアクセス要求を受信する段階であって、データアクセス要求はアクセス対象ノードの識別子を含む、段階と、ストレージシステムが、アクセス対象ノードの識別子に基づいてアクセス対象ノードに対するアクセスパーミッションを取得する段階であって、アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、段階と、ストレージシステムがアクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、認証に成功した後にアクセス対象ノードのデータにアクセスする段階とを含む。
【００１１】
第１の態様の第４の実装例に基づいて、第５の実装例では、アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新である場合、アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードの登録されたパーミッションレコードである。
【００１２】
第１の態様の第５の実装例に基づいて、第６の実装例では、アクセス対象ノードの識別子に基づいてアクセス対象ノードに対するアクセスパーミッションを取得する段階は、ストレージシステムがグローバルアクセス制御リストに照会する段階と、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する段階であって、アクセス対象ノードのパス情報は、アクセス対象ノード及びアクセス対象ノードの全ての親ノードを示すのに用いられる、段階と、ストレージシステムが、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する段階と、ストレージシステムが、最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得する段階であって、最新のパーミッションバージョン番号を有するノードのパーミッションレコードは、アクセス対象ノードに対するアクセスパーミッションである、段階とを含む。
【００１３】
第１の態様の第６の実装例に基づいて、第７の実装例では、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する段階は、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する段階を含む。事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する段階は、ディレクトリーツリー内のノードについてのアクセスパーミッション配分ルールに基づいてトラバーサルルールを事前設定し、事前設定された適切なトラバーサルルールに従って、アクセス対象ノードのパスにある全ノードのパーミッションバージョン番号を比較することにより、最新のパーミッションバージョン番号を有するノードを判定して、トラバース及び比較の効率を向上させる段階であってよい。
【００１４】
第１の態様の第７の実装例に基づいて、第８の実装例では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが異なるディレクトリーレベルに属し、ディレクトリーツリー内の各ノードのパス情報で示される全ノードのうち、親ノードのディレクトリーレベルが親ノードに属する子ノードのディレクトリーレベルより高く、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。また、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する段階は、ストレージシステムがルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから２つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定する段階と、ディレクトリーレベルの降順でトラバースすることによってアクセス対象ノードが比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する段階とを含む。
【００１５】
第１の態様の第７の実装例に基づいて、第９の実装例では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが異なるディレクトリーレベルに属し、ディレクトリーツリー内の各ノードのパス情報で示される全ノードのうち、親ノードのディレクトリーレベルが親ノードに属する子ノードのディレクトリーレベルより高く、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。また、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する段階は、ストレージシステムがアクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから２つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定する段階と、ディレクトリーレベルの昇順でトラバースすることによってルートノードが比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであるとストレージシステムが判定する段階とを含む。
【００１６】
第１の態様の第１から第９の実装例のうちのいずれか１つに基づいて、第１０の実装例では、本方法はさらに、ストレージシステムがノード作成要求を受信する段階であって、ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、新たに追加されたノードのパス情報は、ルートノードから新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す、段階と、ストレージシステムが、ディレクトリーツリーの新たに追加されたノードの識別子とパス情報との間の対応関係をグローバルアクセス制御リストに格納する段階と、ストレージシステムが、新たに追加されたノードのパーミッションバージョン番号をグローバルアクセス制御リストに格納する段階であって、新たに追加されたノードのパーミッションバージョン番号の初期値が、作成されたグローバルバージョンパラメータの初期値より小さい又はこれと等しい、段階と、新たに追加されたノードに初期パーミッションバージョン番号を設定する段階であって、新たに追加されたノードに設定される初期パーミッションバージョン番号は、初期グローバルバージョンパラメータより小さい又はこれと等しい、段階とを含む。新たに追加されたノードのパーミッションバージョン番号はグローバルバージョンパラメータの初期値より小さい又はこれと等しいので、新たに追加されたノードのパス情報で示される全ノードのうち、アクセスパーミッションを受けて設定されるノードのパーミッションバージョン番号は、新たに追加されたノードのパーミッションバージョン番号より新しい。したがって、新たに追加されたノードは、新たに追加されたノードのパス情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションを引き継ぐ。したがって、新たに追加されたノードにアクセスパーミッションが設定される場合、新たに追加されたノードに対するアクセスパーミッションのアクセスレコードを格納する必要はないので、新たに追加されたノードにアクセスパーミッションを設定する効率が向上し、新たに追加されたノードに対するアクセスパーミッションを格納するオーバーヘッドが減少する。
【００１７】
第２の態様によれば、ファイルシステムパーミッション設定装置が提供される。本装置は、第１の態様又は第１の態様の実行可能な各実装例のうちのいずれか１つによるファイルシステムパーミッション設定方法を実行するように構成されたモジュール類を含む。これらのモジュールはハードウェアで実装されてもよく、対応するソフトウェアをハードウェアで実行することで実装されてもよい。ハードウェア又はソフトウェアは、前述の機能に対応する１つ又は複数のモジュールを含む。
【００１８】
第３の態様によれば、ファイルシステムパーミッション設定装置が提供される。本装置は、プロセッサ及びインタフェースを含む。インタフェースは、要求メッセージを受信するように構成される。プロセッサは、第１の態様又は第１の態様の実行可能な各実装例のうちのいずれか１つによる方法を実行するように構成される。
【００１９】
本発明は、ファイルシステムパーミッション設定方法及び装置を提供する。本方法は、ストレージシステムにより実行され、本方法は具体的には、ストレージシステムに適用される。本方法は、ストレージシステムがパーミッション設定要求を受信する段階であって、パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、段階と、ストレージシステムがパーミッション設定要求を受信した後に、ストレージシステムが、現在登録されているグローバルバージョンパラメータを取得し、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得する段階と、ストレージシステムが、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として最新のグローバルバージョンパラメータを用いる段階とを含む。グローバルバージョンパラメータが漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表す。パーミッションを受けて設定されるノードの子ノードが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。本発明において提供されるファイルシステムパーミッション設定方法によれば、ディレクトリーツリーのノードに対するアクセスパーミッションのパーミッションレコードが迅速に設定される。更新されたグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表すのに用いられる。この方法では、パーミッションを受けて設定されるノードの子ノードのパーミッションレコードは、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。したがって、ディレクトリーツリーの親ノードのパーミッションレコードだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードのパーミッションレコードを引き継ぐので、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にある各サブディレクトリー又は各ファイルのパーミッションレコードを個別に設定する必要はない。その結果、ディレクトリーツリーにアクセスパーミッションを設定する効率が向上する。パーミッションレコードは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにパーミッションレコードを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【図面の簡単な説明】
【００２０】
本発明の実施形態における技術的解決手段をより明確に説明するために、以下では、これらの実施形態を説明するのに必要な添付図面を簡潔に説明する。
【００２１】
【図１】本発明の一実施形態によるストレージシステムの概略アーキテクチャ図である。
【００２２】
【図２】本発明の一実施形態によるＮＡＳストレージシステム１００の概略構造図である。
【００２３】
【図３】本発明の一実施形態によるディレクトリーツリーの組織形態についての概略図である。
【００２４】
【図４】本発明の一実施形態によるデータアクセス方法のフローチャートである。
【００２５】
【図５】本発明の一実施形態による、新たに追加されたノードにアクセスパーミッションを設定する方法のフローチャートである。
【００２６】
【図６】本発明の一実施形態によるファイルシステムパーミッション設定装置の構造図である。
【発明を実施するための形態】
【００２７】
以下では、添付図面を参照して、本発明の実施形態における技術的解決手段を説明する。
【００２８】
図１は、本発明の一実施形態によるストレージシステムの概略アーキテクチャ図である。ストレージシステムは、ネットワーク接続型ストレージ（ｎｅｔｗｏｒｋ−ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ、ＮＡＳ）のストレージシステムであっても、ストレージエリアネットワーク（ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、ＳＡＮ）のストレージシステムであってもよい。ＮＡＳストレージシステムは、本発明を説明するための一例として用いられる。図１に示すように、ユーザがクライアントを用いてＮＡＳストレージシステム１００と通信する。クライアントは、端末デバイスであっても、様々なタイプのサーバであってもよい。ＮＡＳストレージシステムは、ネットワーク及びファイル共有プロトコルを用いたアクセス用に、データをクライアントに提供する。用いられるプロトコルは、データ伝送用の伝送制御プロトコル（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ、ＴＣＰ）、インターネットプロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、ＩＰ）、並びにネットワークファイルサービスに用いられる共通インターネットファイル（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、ＣＩＦＳ）プロトコル及びネットワークファイルシステム（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、ＮＦＳ）プロトコルを含む。
【００２９】
本発明の本実施形態における端末デバイスは、タブレットコンピュータ、ノートブックコンピュータ、モバイルインターネットデバイス、パームトップコンピュータ、デスクトップコンピュータ、携帯電話、又は別の製品形態の端末デバイスを含む。
【００３０】
本発明の本実施形態におけるＮＡＳストレージシステム１００は、ファイルサーバであってもよく、コンピュータ又はデスクトップコンピュータなどのストレージデバイスであってもよい。
【００３１】
ファイルシステムに基づいて実装されるディレクトリーツリーが、ルートディレクトリー、サブディレクトリー、及びサブディレクトリーの下にあるファイルを含み、ルートディレクトリー又はサブディレクトリーは、ファイルを含むだけでなく、下位レベルのサブディレクトリーも含んでよい。類推によって、マルチレベルディレクトリー構造のディレクトリーツリーが形成される。
【００３２】
ノードの機能に基づいて、ディレクトリーツリー内のノードが、マウンティングノード、ディレクトリーノード、及びファイルノードを含む。ノードの構造に基づいて、ディレクトリーツリーは、ルートノード、中間ノード、及びリーフノードを含む。マウンティングノードはディレクトリーツリーのルートノードであり、ディレクトリーノードはディレクトリーツリーの中間ノードであり、ファイルノードはディレクトリーツリーのリーフノードである。ルートノードを除く各ノードが子ノードとしての機能を果たす場合、子ノードはそれ自体の親ノードを有する。リーフノードを除く各ノードが親ノードとしての機能を果たす場合、親ノードはそれ自体の子ノードを有する。ディレクトリーツリーでは、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルの各レベルが属するノードが全て、親ノードの子ノードである。
【００３３】
ディレクトリーツリー内の各ノードのパス情報が、ディレクトリーツリーのルートノードからノードまでのアクセスブランチ上にある全ノードを示すのに用いられる。ルートノードからノードまでのアクセスブランチは、ルートノードからノードまでのパスである。ディレクトリーツリー内のノードの位置と、ディレクトリーツリー内のパスにある全ノードの位置とが、ルートノードからノードまでのパスに基づいて識別されてよい。パス内の各ノードに対応するディレクトリーの下にある全てのサブディレクトリー及びファイルは、異なるディレクトリーレベルに個別に属している。ディレクトリーツリー内の各ノードのパスでは、親ノードに対応するディレクトリーのディレクトリーレベルが、親ノードに属する全ての子ノードに個別に対応するディレクトリーのディレクトリーレベルより高い。アクセス対象ノードのパスでは、アクセス対象ノードに対応するディレクトリーが最下位のディレクトリーレベルを有し、ルートノードに対応するディレクトリーが最上位のディレクトリーレベルを有する。
【００３４】
図２は、本発明の一実施形態によるＮＡＳストレージシステム１００の概略構造図である。ＮＡＳストレージシステム１００は、ストレージに用いられ、制御装置２１０及びストレージアレイ２２０を含む。
【００３５】
制御装置２１０は、クライアントからデータアクセス要求を受信し、受信したアクセス要求に基づいて認証を行い、認証に成功した後にストレージアレイ２２０内のアクセス対象データの位置情報を判定し、ストレージアレイ２２０内のデータへのアクセスを開始するように構成される。
【００３６】
制御装置２１０はさらに、ディレクトリーツリー内のノードにアクセスパーミッションを設定するように構成される。アクセスパーミッションが設定されている場合、パーミッションレコードが格納され、パーミッションレコードは、ノードに対するクライアントのアクセスパーミッションを表す。パーミッションレコードはアクセス制御エントリ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｅｎｔｒｙ、ＡＣＥ）を含み、アクセス制御エントリは、ノードのアクセスパーミッションタイプ、ノードにアクセスできるオブジェクト、及びノードにアクセスできるオブジェクトの、ノードに対するアクセスパーミッションなどのコンテンツを登録する。
【００３７】
ストレージアレイ２２０は、データを格納するように構成される。制御装置２１０は、アクセス対象要求に対して認証を行う。認証に成功した後に、制御装置２１０はアクセス対象ノードのデータにアクセスする。
【００３８】
ストレージアレイ２２０はさらに、データのメタデータを格納するように構成される。メタデータは、格納したデータを表し、標準属性データ、拡張属性データ、及びレイアウト属性データを含む。標準属性データは、データのサイズ及び修正時間などの標準的な属性を表すのに用いられる。レイアウト属性データは、データの格納位置を表すのに用いられる。拡張属性データは、ノードに対するアクセスパーミッションを表すデータを含む。
【００３９】
既存の解決手段ではディレクトリーツリーに含まれる全ノードをトラバースすることで、ＡＣＬパーミッションが設定される。このパーミッション設定方式は長い時間がかかるので、サービス処理効率に影響を与える。さらに、ディレクトリーツリーに含まれるルートディレクトリー、サブディレクトリー、及びファイルが同一のＡＣＬを登録することによって、記憶領域が浪費される。本発明の一実施形態では、先行技術の短所について、ディレクトリーツリーに含まれるファイル及びサブディレクトリーが同一のＡＣＬパーミッションを有する場合、以下に挙げる解決手段が提案されている。
【００４０】
本発明は、ディレクトリーツリーにＡＣＬパーミッションを迅速に設定する方法を提供する。この方法では、ディレクトリーツリーの親ノードに対するＡＣＬパーミッションだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードに対するＡＣＬパーミッションを引き継ぐ。親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するＡＣＬパーミッションを引き継ぐので、親ノードに対するＡＣＬパーミッションだけを設定すればよく、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にあるサブディレクトリー又はファイルごとにＡＣＬパーミッションを個別に設定する必要はない。その結果、ディレクトリーツリーにＡＣＬパーミッションを設定する効率が向上する。ＡＣＬパーミッションは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにＡＣＬパーミッションを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【００４１】
本発明において提供される、ディレクトリーツリーにＡＣＬパーミッションを迅速に設定する方法によれば、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するＡＣＬパーミッションを引き継ぐ。したがって、親ノードに対応するディレクトリーの下にある任意のファイル又はサブディレクトリーがアクセスされている場合、最新のＡＣＬパーミッションを有する親ノードを検索するには、アクセス対象ファイル又はサブディレクトリーからルートノードまでのパス内にある全ノードに照会するだけでよい。アクセス対象ファイル又はサブディレクトリーに対するＡＣＬパーミッションが、最新のＡＣＬパーミッションを有する親ノードに対するＡＣＬパーミッションを引き継ぐので、最新のＡＣＬパーミッションを有する親ノードに対する最新のＡＣＬパーミッションは、アクセス対象ファイル又はサブディレクトリーのＡＣＬパーミッションとして用いられてよい。
【００４２】
本発明において提供される、ディレクトリーツリーにＡＣＬパーミッションを迅速に設定する方法によれば、グローバルアクセス制御リスト（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔｓ、ＡＣＬ）が設定される。グローバルＡＣＬは、ディレクトリーツリーのルートノードのメタデータに格納されてよい。グローバルＡＣＬは、各ノードのパーミッション情報をディレクトリーツリーに格納するのに用いられる。具体的には、ディレクトリーツリー内の任意のノードのパーミッションレコードが、ノード自体のメタデータに個別に格納されることはないが、グローバルＡＣＬに一括して格納される。さらに、グローバルＡＣＬはグローバルバージョンパラメータを格納し、グローバルＡＣＬでは、更新されたグローバルバージョンパラメータの値が、パーミッションを受けて設定されるノードのパーミッションバージョン番号を示すのに用いられる。本発明において提供される、ディレクトリーツリーにＡＣＬパーミッションを迅速に設定する方法によれば、パーミッション設定要求を受信した後に、ＮＡＳストレージシステム１００は、制御装置２１０を用いてグローバルＡＣＬに照会してグローバルバージョンパラメータを取得し、グローバルバージョンパラメータを更新して現在のグローバルバージョンパラメータを取得し、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として現在のグローバルバージョンパラメータを用いる。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。
【００４３】
図２に示すように、制御装置２１０は、インタフェース２１１及びインタフェース２１２を含み、インタフェース２１１はクライアントと通信するように構成される。インタフェース２１２は、ストレージアレイ２２０と通信するように構成される。制御装置２１０はさらに制御モジュール２３０を含む。制御モジュール２３０は、ディレクトリーツリー内のノードにアクセスパーミッションを設定するように構成され、またアクセス対象ノードのパーミッションレコードに対して認証を行うように構成される。制御モジュール２３０は、アクセス対象ノードのパーミッションレコードに対して認証を行う。認証に成功した後に、制御モジュール２３０はアクセス対象ノードのデータにアクセスする。
【００４４】
図２に示すように、制御モジュール２３０はプロセッサ２１３及びメモリ２１４を含む。プロセッサ２１３は、ディレクトリーツリー内のノードにアクセスパーミッションを設定するように構成され、またアクセス対象ノードのパーミッションレコードに対して認証を行うように構成される。プロセッサ２１３は、アクセス対象ノードのパーミッションレコードに対して認証を行う。認証に成功した後に、プロセッサ２１３はアクセス対象ノードのデータにアクセスする。
【００４５】
メモリ２１４は高速ＲＡＭを含み、さらに、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ、ＮＶＭ）、例えば、少なくとも１つのディスクメモリを含んでよい。メモリ２１４は、プログラムコードを格納できる機械可読媒体、例えば、ランダムアクセスメモリ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）、磁気ディスク、ハードディスク、ソリッドステートディスク（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋ、ＳＳＤ）、又は不揮発性メモリであってよいことが理解されるであろう。
【００４６】
メモリ２１４は、クライアントから送信される情報を一時的に格納するように構成される。
【００４７】
プロセッサ２１３は、任意のコンピュータ処理デバイスであってよく、汎用の中央演算処理装置（ＣＰＵ）、マイクロプロセッサ、プログラム可能型制御装置、特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、ＡＳＩＣ）、又は前述の解決手段のプログラムの実行を制御する１つ若しくは複数の集積回路であってよい。
【００４８】
以下では、本発明のＮＡＳストレージシステム１００の各部分の機能を、図２に示すＮＡＳストレージシステム１００の構造を用いて詳細に説明する。
【００４９】
本発明では、インタフェース２１１は、クライアントにより送信されるパーミッション設定要求を受信するように構成される。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内の、アクセスパーミッションを受けて設定されるノードにアクセスパーミッションを設定するよう要求するのに用いられる。
【００５０】
パーミッション設定要求は、ディレクトリーツリー内の、アクセスパーミッションを受けて設定されるノードの、識別子及びパーミッションレコードを含む。パーミッション設定要求は、現在登録されているグローバルバージョンパラメータを更新して最新のグローバルバージョンパラメータを取得するよう、プロセッサ２１３に命令するのに用いられる。
【００５１】
本発明では、プロセッサ２１３は、パーミッション設定要求に基づいて、パーミッションを受けて設定されるノードにアクセスパーミッションを設定するように構成される。プロセッサ２１３は、現在登録されているグローバルバージョンパラメータを取得し、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得するように構成される。グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表す。プロセッサ２１３はさらに、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として、最新のグローバルバージョンパラメータを用いるように構成される。パーミッションを受けて設定されるノードの全ての子ノードのパーミッションレコードが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。
【００５２】
パーミッションを受けて設定されるノードが親ノードとしての機能を果たす場合、パーミッションを受けて設定されるノードにアクセスパーミッションが設定された後に、パーミッションを受けて設定されるノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、パーミッションを受けて設定されるノードに対するアクセスパーミッションを引き継ぐ。親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーは親ノードに対するＡＣＬパーミッションを引き継ぐので、パーミッションを受けて設定されるノードに対するＡＣＬパーミッションだけを設定すればよく、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にあるサブディレクトリー又はファイルごとにＡＣＬパーミッションを個別に設定する必要はない。その結果、パーミッションを受けて設定されるノードと同じアクセスパーミッションを有する全ての他の子ノードにアクセスパーミッションを繰り返し設定することが回避されるので、ＡＣＬパーミッションをディレクトリーツリーに設定する効率が向上する。本実装例では、ある値がグローバルバージョンパラメータの値を表すのに用いられる場合、値が大きくなるほど、アクセスパーミッションが新しいことを示す。
【００５３】
さらに、本発明では、親ノードの下にある、親ノードと同じアクセスパーミッションを有する、全ての子ノードにアクセスパーミッションを繰り返し設定する必要はないので、アクセスパーミッションデータを格納するオーバーヘッドが減少する。
【００５４】
本発明では、パーミッション設定要求はさらに、パーミッションを受けて設定されるノードのパス情報を含んでよく、パーミッションを受けて設定されるノードのパス情報は、ルートノードから、パーミッションを受けて設定されるノードまでの、アクセスブランチ上にある全ノードを示す。本発明では、グローバルＡＣＬが、アクセスパーミッションを受けて設定されるノードの識別子と、パス情報と、パーミッションレコードとの間の対応関係を格納するように設定される。グローバルＡＣＬはさらに、グローバルバージョンパラメータを含む。グローバルＡＣＬは、ディレクトリーツリーのルートノードのメタデータに格納される。アクセスパーミッションがノードに設定された後に、最新のグローバルバージョンパラメータが、パーミッションを受けて設定されるノードのパーミッションバージョン番号として用いられる。したがって、グローバルＡＣＬは、アクセスパーミッションを受けて設定されるノードのパーミッションバージョン番号も格納してよい。
【００５５】
本発明では、インタフェース２１１はさらに、クライアントにより送信されるグローバルＡＣＬ作成要求を受信するように構成される。グローバルＡＣＬ作成要求は、グローバルＡＣＬを作成し、新たに作成されたグローバルＡＣＬに初期グローバルバージョンパラメータを設定するようプロセッサ２１３に命令するのに用いられる。
【００５６】
プロセッサ２１３は、グローバルＡＣＬ作成要求に基づいてグローバルＡＣＬを作成するように構成される。作成されたグローバルＡＣＬは、グローバルバージョンパラメータを格納する。作成されたグローバルＡＣＬ内のグローバルバージョンパラメータの値が初期値であり、グローバルバージョンパラメータの初期値は０であるか、又は別の値若しくは文字であっても、別のシンボル識別子であってもよい。
【００５７】
図３は、本発明の一実施形態によるディレクトリーツリーの組織形態についての概略図である。図３に示すように、ディレクトリーツリーは、ルートノード３１０、中間ノード３１１、中間ノード３１２、リーフノードｆ１、リーフノードｆ２、及びリーフノードｆ３を含む。
【００５８】
グローバルＡＣＬが作成された後、且つパーミッションを受けて設定されるノードにアクセスパーミッションが設定される前に、作成されたグローバルＡＣＬは表１に示されているであろう。表１に示すグローバルＡＣＬはグローバルバージョンパラメータを含み、新たに作成されたグローバルＡＣＬに設定される初期グローバルバージョンパラメータの値は、表１に示されている０である。表１に示すグローバルＡＣＬはさらに、ファイルシステムのディレクトリーツリーの各ノードの識別子と各ノードのパス情報とを格納するのに用いられる。
【００５９】
あるノードのパスが当該ノードのパス内の全ノードの識別子を用いて判定される場合、当該ノードのパス情報には、ファイルシステム内の各ノードの識別子が含まれる。例えば、各ノードは数字を用いて識別され、表１に示すルートノードの識別子は数字の３１０である。したがって、ルートノード３１０のパス情報は、数字の３１０をルートノードの識別子に含む。具体的には、作成されたグローバルＡＣＬ内のグローバルバージョンパラメータと、ファイルシステム内の各ノードの識別子と、各ノードのパス情報との間の対応関係が表１に示されている。表１に示すように、グローバルＡＣＬはさらに、ＡＣＬパーミッションを受けて設定されるノードのパーミッションレコード及びパーミッションバージョン番号を格納するのに用いられてよい。グローバルＡＣＬが作成された後に、ＡＣＬパーミッションがディレクトリーツリーのノードに何も設定されていない場合、グローバルＡＣＬに格納されるパーミッションレコード及びパーミッションバージョン番号には何も入っていない。
【表１】
0006965370.tif 000002
【００６０】
各ノードのパスが一意である場合、ノードはノードのパス情報を用いて識別されてよい。したがって、グローバルバージョンパラメータと、ファイルシステム内の各ノードの識別子と、各ノードのパス情報との間の対応関係は、表２に示されているであろう。
【表２】
0006965370.tif 000003
【００６１】
グローバルＡＣＬが作成された後に、ユーザは、クライアントを用いて、ディレクトリーツリー内のあるノードにアクセスパーミッションを設定する。
【００６２】
プロセッサ２１３はさらに、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードをグローバルＡＣＬに格納するように構成される。パーミッションを受けて設定されるノードのパーミッションバージョン番号は、更新されたグローバルバージョンパラメータの値である。
【００６３】
プロセッサ２１３はさらに、アクセス対象ノードのデータにアクセスする前に、アクセス対象ノードに対するアクセスパーミッションを取得するように構成される。アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードからルートノードまでのパスに関する情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションである。最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションは、最新のパーミッションバージョン番号を有するノードのパーミッションレコードで示される。アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードのパス情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対応するパーミッションレコードで表される。
【００６４】
本発明では、ストレージシステムは、グローバルＡＣＬを用いて、ディレクトリーツリーの全ノードのアクセスパーミッションデータを整理する。ストレージアレイ２２０に格納されたグローバルＡＣＬは、パーミッションを受けて設定されるノードに対するアクセスパーミッションを説明するのに用いられる。具体的には、グローバルＡＣＬは、更新されたグローバルバージョンパラメータの値を格納するのに用いられ、またパーミッションを受けて設定されるノードの識別子とパス情報とパーミッションレコードとの間の対応関係を格納するのに用いられる。パーミッションを受けて設定されるノードのパーミッションバージョン番号は、更新されたグローバルバージョンパラメータの値である。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは対応関係を形成し、当該対応関係はグローバルＡＣＬに格納されているので、ディレクトリーツリー内の、パーミッションを受けて設定されるノードの、識別子、パス情報、及びパーミッションレコードは、ディレクトリーツリーのルートノードのメタデータに索引を付けるだけで取得することができる。これにより、ディレクトリーツリーのノードのパーミッションレコード及びパス情報を取得するための、扱いやすいアクセスチャネルが提供される。
【００６５】
図４は、本発明の一実施形態によるデータアクセス方法のフローチャートである。図４に示すように、本実施形態において提供されるデータアクセス方法は、図２に示すＮＡＳストレージシステム１００によって実行され、具体的には、図２に示すＮＡＳストレージシステム１００の制御モジュール２３０又は制御モジュール２３０のプロセッサ２１３によって実行されてよい。ディレクトリーツリーが作成された後に、作成されたディレクトリーツリーにアクセスパーミッションを設定し、次いで、作成されたディレクトリーツリー内のアクセス対象ノードのデータにアクセスする方法が、詳細に説明されており、具体的には以下に挙げる段階を含む。
【００６６】
Ｓ４０１：ＮＡＳストレージシステム１００が、クライアントにより送信されるグローバルＡＣＬ作成要求を受信する。
【００６７】
本発明では、グローバルＡＣＬ作成要求は、グローバルＡＣＬを作成するようＮＡＳストレージシステム１００に命令するのに用いられる。
【００６８】
ユーザが、クライアントを用いて、グローバルＡＣＬ作成要求をＮＡＳストレージシステム１００に送信してよい。グローバルＡＣＬ作成要求は、ディレクトリーツリーのルートノードの識別子を含む。
【００６９】
グローバルＡＣＬ作成要求の前述の実装例に基づいて、別の実装例では、グローバルＡＣＬ作成要求は、ディレクトリーツリーの各ノードのパス情報と、各ノードの識別子とを含んでよい。各ノードのパス情報は、ルートノードからノードまでのアクセスブランチ上にある全ノードを示す、すなわち、ルートノードからノードまでのパスを示すのに用いられる。このパスに従って、ディレクトリーツリー内のノードの位置と、ディレクトリーツリー内のパスにある中間ノードの位置とを見つけることができる。パス内のルートノードを除く各ノードは１つの親ノードに属し、パス内のリーフノードを除く各ノードはノード自体の子ノードを有し、リーフノードを除く各ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルが、異なるディレクトリーレベルに属する。
【００７０】
パス内の各ノードの識別子がノードのパス情報を表すのに用いられる場合、グローバルＡＣＬ作成要求は、ディレクトリーツリーの各ノードのパス情報だけを含んでよい。
【００７１】
Ｓ４０２：ＮＡＳストレージシステム１００はグローバルＡＣＬを作成する。具体的には、ＮＡＳストレージシステム１００は、グローバルバージョンパラメータを作成し、当該グローバルバージョンパラメータをグローバルＡＣＬに格納し、当該グローバルバージョンパラメータの値が初期値である。
【００７２】
任意選択の一実装例では、段階Ｓ４０１で説明される、グローバルＡＣＬ作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含み得る実装例に基づいて、ＮＡＳストレージシステム１００は、ディレクトリーツリーの各ノードのパス情報とノードの識別子との間の対応関係をグローバルＡＣＬに格納する。表３に示すグローバルＡＣＬが、ディレクトリーツリーの各ノードのパス情報とノードの識別子との対応関係を含む。表３に示すグローバルＡＣＬはさらに、グローバルバージョンパラメータを含む。図３に示すディレクトリーツリーに基づいて、この段階で作成されるグローバルＡＣＬのコンテンツが、表３に示すように実行される。
【表３】
0006965370.tif 000004
【００７３】
パス内の各ノードの識別子がノードのパス情報を表すのに用いられる場合、グローバルＡＣＬは、各ノードのグローバルバージョンパラメータ及びパス情報を含む。
【００７４】
Ｓ４０３：ＮＡＳストレージシステム１００は、パーミッション設定要求を受信する。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。
【００７５】
具体的には、ユーザは、クライアントを用いてパーミッション設定要求を送信する。
【００７６】
パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。図３に示すディレクトリーツリーに基づいて、例えば、中間ノード３１１は、パーミッションを受けて設定されるノードである。図３に示すように、パーミッションレコードはいくつかのＡＣＥを含み、各ＡＣＥは、制御タイプ（ｔｙｐｅ）、パーミッション（ｍａｓｋ）、及びユーザ識別子（ｕｓｅｒ  ｉｄ）などのコンテンツを含む。制御タイプは、許可（ａｌｌｏｗｅｄ）及び拒否（ｄｅｎｉｅｄ）などを含む。ユーザ識別子（ｕｓｅｒ  ｉｄ）は、ユーザ又はユーザのタイプを示す。パーミッション（ｍａｓｋ）は、対応するユーザのアクセスパーミッションを示し、通常、マスク方式で表される。
【００７７】
段階Ｓ４０１の実装例に基づいて、新たに作成されたグローバルＡＣＬは、ＮＡＳストレージシステム１００により受信されたグローバルＡＣＬ作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含む場合、ディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含む。したがって、パーミッション設定要求を受信した後に、ＮＡＳストレージシステム１００は、パーミッションを受けて設定されるノードのパーミッションレコードをグローバルＡＣＬに格納する。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは、対応関係を形成する。
【００７８】
段階Ｓ４０１の実装例に基づいて、新たに作成されたグローバルＡＣＬは、ＮＡＳストレージシステム１００により受信されたグローバルＡＣＬ作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない場合、ディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない。したがって、本発明の段階Ｓ４０３でのパーミッション設定要求についての任意選択の一実装例が、パーミッション設定要求がパーミッションを受けて設定されるノードの識別子及びパーミッションレコードだけでなく、パーミッションを受けて設定されるノードのパス情報も含むということであり、パーミッションを受けて設定されるノードのパス情報は、ルートノードから、パーミッションを受けて設定されるノードまでの、アクセスブランチ上にある全ノードを示す。したがって、パーミッション設定要求を受信した後に、ＮＡＳストレージシステム１００は、パーミッションを受けて設定されるノードのパス情報をグローバルＡＣＬに格納する。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは、対応関係を形成する。
【００７９】
段階Ｓ４０１の実装例に基づいて、新たに作成されたグローバルＡＣＬは、ＮＡＳストレージシステム１００により受信されたグローバルＡＣＬ作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない場合、ディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない。したがって、任意選択の一実装例では、パーミッションを受けて設定されるノードの識別子と、パス情報と、パーミッションレコードとの間の対応関係は、パーミッションを受けて設定されるノードのメタデータに格納される。
【００８０】
Ｓ４０４：ＮＡＳストレージシステム１００は、グローバルバージョンパラメータを取得する。
【００８１】
具体的には、ＮＡＳストレージシステム１００は、グローバルＡＣＬに照会して、現在登録されているグローバルバージョンパラメータを取得してよい。
【００８２】
グローバルアクセス制御リストは、ディレクトリーツリーのルートノードのメタデータに格納されており、グローバルアクセス制御リストはグローバルバージョンパラメータを格納する。表３に示すディレクトリーツリーのグローバルＡＣＬのコンテンツに基づいて、作成されたグローバルバージョンパラメータの値が０であることが、段階Ｓ４０２でＮＡＳストレージシステム１００により作成されたグローバルＡＣＬのコンテンツに基づいて判定される。
【００８３】
Ｓ４０５：ＮＡＳストレージシステム１００は、現在登録されているグローバルバージョンパラメータの値を更新して、最新のグローバルバージョンパラメータを取得する。最新のグローバルバージョンパラメータは、パーミッションを受けて設定されるノードのパーミッションバージョン番号として用いられる。
【００８４】
本発明では、パーミッションを受けて設定されるノードのパーミッションバージョン番号は、グローバルＡＣＬに格納されてよい。別の実装例では、パーミッションを受けて設定されるノードのパーミッションバージョン番号は代替的に、パーミッションを受けて設定されるノードのメタデータに格納されてもよい。
【００８５】
グローバルバージョンパラメータが漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表す。ＮＡＳストレージシステム１００は、グローバルバージョンパラメータの値を更新する。具体的には、ＮＡＳストレージシステム１００は、事前設定された粒度に基づいて、グローバルバージョンパラメータの値を増やしても減らしてもよい。事前設定された粒度は１であってもよく、０より大きい別の値であってもよい。具体的には、本実装例では、ＮＡＳストレージシステム１００がグローバルバージョンパラメータの値を２だけ増やした後に、取得されるグローバルバージョンパラメータの値は２である。
【００８６】
Ｓ４０６：ＮＡＳストレージシステム１００は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納する。パーミッションを受けて設定されるノードのパーミッションバージョン番号は、更新された最新のグローバルバージョンパラメータの値である。パーミッションを受けて設定されるノードの子ノードが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。
【００８７】
パーミッションを受けて設定されるノードの識別子及びパーミッションレコードは、グローバルＡＣＬに格納される。別の実装例では、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードは代替的に、パーミッションを受けて設定されるノードのメタデータに格納されてもよい。
【００８８】
パーミッションを受けて設定されるノードのパーミッションバージョン番号は、グローバルＡＣＬに格納される。別の実装例では、パーミッションを受けて設定されるノードのパーミッションバージョン番号は代替的に、パーミッションを受けて設定されるノードのメタデータに格納されてもよい。
【００８９】
本実装例では、指定されたグローバルＡＣＬは、更新されたグローバルバージョンパラメータの値、並びにパーミッションを受けて設定されるノードの識別子、パーミッションバージョン番号、及びパーミッションレコードを含む。例えば、グローバルＡＣＬが設定された後に、グローバルＡＣＬのコンテンツが表４に示されている。指定されたグローバルＡＣＬは、更新されたグローバルバージョンパラメータの値（２）と、パーミッションを受けて設定されるノードのパーミッションバージョン番号（２）及びパーミッションレコード（ＡＣＥ１、ＡＣＥ２、…、及びＡＣＥｎ）とを含む。
【表４】
0006965370.tif 000005
【００９０】
本発明は、ディレクトリーツリーにＡＣＬパーミッションを迅速に設定する方法を提供する。この方法では、ディレクトリーツリーの親ノードに対するＡＣＬパーミッションだけが設定される。例えば、表４の中間ノード３１１に対するＡＣＬパーミッションが設定される。したがって、表４に示す中間ノード３１１などの親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリー、例えば、表４に示す中間ノード３１２に対応するサブディレクトリーと、リーフノードｆ１、リーフノードｆ２、及びリーフノードｆ３に対応するファイルとが、親ノード（表４に示す中間ノード３１１）に対するＡＣＬパーミッションを引き継ぐ。親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するＡＣＬパーミッションを引き継ぐので、親ノードに対するＡＣＬパーミッションだけを設定すればよく、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にあるサブディレクトリー又はファイルごとにＡＣＬパーミッションを個別に設定する必要はない。その結果、ディレクトリーツリーにＡＣＬパーミッションを設定する効率が向上する。ＡＣＬパーミッションは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにＡＣＬパーミッションを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【００９１】
Ｓ４０７：ＮＡＳストレージシステム１００は、データアクセス要求を受信する。
【００９２】
ユーザは、クライアントを用いてデータアクセス要求を送信する。データアクセス要求は、ディレクトリーツリー内のアクセス対象ノードのデータにアクセスするよう命令するのに用いられ、データアクセス要求は、ディレクトリーツリー内のアクセス対象ノードの識別子を含む。アクセスを要求されたデータはアクセス対象ノードに属し、アクセス対象ノードは、作成されたディレクトリーツリーの任意のノードである。パーミッションレコードが、ディレクトリーツリー内の全て又は一部のノードに設定される。本発明では、パーミッションレコードで設定されていないノードのパーミッションバージョン番号が、デフォルトによる最小バージョン番号とみなされる。
【００９３】
Ｓ４０８：ＮＡＳストレージシステム１００は、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する。
【００９４】
具体的には、ＮＡＳストレージシステム１００は、アクセス対象ノードのグローバルＡＣＬ又はメタデータに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する。アクセス対象ノードのパス情報は、アクセス対象ノード及びアクセス対象ノードの全ての親ノードを示すのに用いられる。
【００９５】
ユーザがデータにアクセスする前に、グローバルＡＣＬは照会を受ける必要があり、その結果、当該データが属するアクセス対象ノードに対するアクセスパーミッションが取得される。
【００９６】
Ｓ４０９：ＮＡＳストレージシステム１００は、パス情報で示される全ノードのパーミッションバージョン番号に照会し、最新のパーミッションバージョン番号を有するノードを判定し、最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得し、パーミッションレコードをアクセス対象ノードに対するアクセスパーミッションとして用いる。
【００９７】
ＮＡＳストレージシステム１００により取得される、最新のパーミッションバージョン番号を有するノードのパーミッションレコードは、アクセス対象ノードに対するアクセスパーミッションである。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新である場合、アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードの登録されたパーミッションレコードである。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新ではない場合、アクセス対象ノードに対するアクセスパーミッションは、最新のパーミッションバージョン番号を有するアクセス対象ノードの親ノードに対応するパーミッションレコードを引き継ぐ。
【００９８】
具体的には、本発明において、パーミッションバージョン番号が数字で表される場合、ＮＡＳストレージシステム１００は、パス内の全ノードのパーミッションバージョン番号に照会して、最大のパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する。
【００９９】
ユーザがデータにアクセスする前に、ユーザは、データが属するノードに対するアクセスパーミッションを取得して、当該データに対するアクセスパーミッションを取得する必要がある。
【０１００】
本発明では、アクセスパーミッションがディレクトリーツリー内の全て又は一部のノードに設定され、ノードに対するアクセスパーミッションが、パーミッションレコードを用いて説明される。
【０１０１】
この段階では、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する段階は、具体的には、ＮＡＳストレージシステム１００が、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する段階を含む。
【０１０２】
本発明では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが、異なるディレクトリーレベルに属している。ディレクトリーツリー内の各ノードのパス情報で示される全ノードのうち、親ノードのディレクトリーレベルが親ノードに属する子ノードのディレクトリーレベルより高い。アクセス対象ノードのパス情報で示される全ノードにおいて、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。
【０１０３】
ＮＡＳストレージシステム１００が、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する１つの事例は、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから２つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定すること、及びアクセス対象ノードのパス情報で示される全ノードのうち、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定することである。
【０１０４】
ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから２つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定することは具体的には、ルートノードから開始してディレクトリーレベルの降順で、アクセス対象ノードのパス情報で示される全ノードから現在のノードを１つ選択し、アクセス対象ノードのパス情報で示される全ノードから毎回、現在のノードのディレクトリーレベルより１つ低いレベルの比較対象ノードを１つ選択し、現在のノードのパーミッションバージョン番号と比較対象ノードのパーミッションバージョン番号とを比較して、より新しいパーミッションバージョン番号を有するノードを判定することである。アクセス対象ノードのパス情報で示される全ノードのうち、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードがより新しいパーミッションバージョン番号を有するノードであると判定することは具体的には、現在のノードのパーミッションバージョン番号が最新のパーミッションバージョン番号である場合、現在のノードを現在のノードとして引き続き用い、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして、現在のノードのディレクトリーレベルより１つ低いレベルのノードを１つ選択し、現在のノードのパーミッションバージョン番号と新しい比較対象ノードのパーミッションバージョン番号とを比較することである。比較対象ノードのパーミッションバージョン番号が最新のパーミッションバージョン番号である場合、比較対象ノードが新しい現在のノードとして選択され、新しい現在のノードのディレクトリーレベルより１つ低いレベルのノードが１つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、これらのパーミッションバージョン番号が比較され、ディレクトリーツリーのアクセス対象ノードのパーミッションバージョン番号が比較されるまで、判定される現在のノードが最新のパーミッションバージョン番号を有するノードである。
【０１０５】
現在のノードのパーミッションバージョン番号が比較対象ノードのパーミッションバージョン番号と同じである場合、現在のノードは、現在のノード及び比較対象ノードの中でより新しいパーミッションバージョン番号を有するノードとして用いられ、現在のノードは現在のノードとして引き続き用いられ、現在のノードのディレクトリーレベルより１つ低いレベルのノードが１つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、現在のノードのパーミッションバージョン番号は新しい比較対象ノードのパーミッションバージョン番号と比較され、判定される現在のノードが、ディレクトリーツリーのアクセス対象ノードのパーミッションバージョン番号が比較されるまで、最新のパーミッションバージョン番号を有するノードである。
【０１０６】
ＮＡＳストレージシステム１００が、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する別の事例は、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回２つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードのパス情報で示される全ノードのうち、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定することである。
【０１０７】
アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから２つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定することは具体的には、アクセス対象ノードから開始してディレクトリーレベルの昇順で、アクセス対象ノードのパス情報で示される全ノードから現在のノードを１つ選択し、アクセス対象ノードのパス情報で示される全ノードから毎回、現在のノードのディレクトリーレベルより１つ高いレベルの比較対象ノードを１つ選択し、現在のノードのパーミッションバージョン番号と比較対象ノードのパーミッションバージョン番号とを比較して、より新しいパーミッションバージョン番号を有するノードを判定することである。アクセス対象ノードのパス情報で示される全ノードのうち、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定することは具体的には、現在のノードのパーミッションバージョン番号が最新のパーミッションバージョン番号である場合、現在のノードを現在のノードとして引き続き用い、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして、比較対象ノードのディレクトリーレベルより１つ高いレベルのノードを１つ選択し、現在のノードのパーミッションバージョン番号と新しい比較対象ノードのパーミッションバージョン番号とを比較することである。比較対象ノードのパーミッションバージョン番号がより新しいパーミッションバージョン番号を有するノードである場合、比較対象ノードは新しい現在のノードとして選択され、新しい現在のノードのディレクトリーレベルより１つ高いレベルのノードが１つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、これらのパーミッションバージョン番号が比較され、判定される現在のノードが、ディレクトリーツリーのルートノードのパーミッションバージョン番号が比較されるまで、最新のパーミッションバージョン番号を有するノードである。
【０１０８】
現在のノードのパーミッションバージョン番号が比較対象ノードのパーミッションバージョン番号と同じである場合、現在のノードは、現在のノード及び比較対象ノードの中でより新しいパーミッションバージョン番号を有するノードとして用いられ、現在のノードは現在のノードとして引き続き用いられ、現在のノードのディレクトリーレベルより１つ高いレベルのノードが１つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、現在のノードのパーミッションバージョン番号は新しい比較対象ノードのパーミッションバージョン番号と比較され、判定される現在のノードが、ディレクトリーツリーのルートノードのパーミッションバージョン番号が比較されるまで、最新のパーミッションバージョン番号を有するノードである。
【０１０９】
Ｓ４１０：ＮＡＳストレージシステム１００は、アクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、クライアントは、認証に成功した後にアクセス対象ノードのデータにアクセスする。アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードからルートノードまでのパスに関する情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションである。
【０１１０】
本実装例では、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するＡＣＬパーミッションを引き継ぐので、親ノードに対応するディレクトリーの下にある任意のファイル又はサブディレクトリーがアクセスされているときに、最新のＡＣＬパーミッションを有する親ノードを検索するのに、アクセス対象のファイル又はサブディレクトリーからルートノードまでのパス内の全ノードに照会するだけでよい。例えば、表４に示す中間ノード３１２がアクセスされている場合、中間ノード３１２に対応するサブディレクトリーに対するＡＣＬパーミッションが、最新のＡＣＬパーミッションを有する親ノードに対するＡＣＬパーミッションを引き継ぐので、すなわち、中間ノード３１１が中間ノード３１２の親ノードとしての機能を果たすので、中間ノード３１２は最新のＡＣＬパーミッションを有し、したがって、最新のＡＣＬパーミッションを有する親ノードに対する最新のＡＣＬパーミッションは、アクセス対象のファイル又はサブディレクトリーのＡＣＬパーミッションとして用いられてよい。
【０１１１】
任意選択の一実装例では、図４に示す前述の実装例において、段階Ｓ４０９の後に、すなわち、ＮＡＳストレージシステム１００がパス情報で示される全ノードのパーミッションバージョン番号に照会し、最新のパーミッションバージョン番号を有するノードと最新のパーミッションバージョン番号を有するノードのパーミッションレコードを判定した後に、ＮＡＳストレージシステム１００は、アクセス対象ノードのパーミッションバージョン番号及びパーミッションレコードをグローバルＡＣＬに格納してよい。アクセス対象ノードのパーミッションバージョン番号が、段階Ｓ４０９で判定される最新のパーミッションバージョン番号であり、アクセス対象ノードのパーミッションレコードは、段階Ｓ４０９で判定される最新のパーミッションバージョン番号を有するノードのパーミッションレコードである。
【０１１２】
本発明では、ＮＡＳストレージシステム１００は、異なるルートノードを含む複数のディレクトリーツリーに対するグローバルＡＣＬ識別子を個別に構成する。グローバルＡＣＬ識別子はディレクトリーツリーのルートノードの識別子を含み、異なるルートノードを含む複数のディレクトリーツリーは、異なるルートノードの識別子を用いて区別される。したがって、異なるルートノードを含む複数のディレクトリーツリーに対応する異なるグローバルＡＣＬが、これらのディレクトリーツリーのルートノードの識別子を用いて区別されてよい。
【０１１３】
グローバルＡＣＬ識別子を構成する別の実装例では、グローバルＡＣＬ識別子は代替的に、ディレクトリーツリーのルートノードの識別子とグローバルＡＣＬバージョン情報との組み合わせであってもよい。グローバルＡＣＬバージョン情報は、ルートノードを含むディレクトリーツリーの複数のグローバルＡＣＬバージョンを識別するのに用いられる。子ノードがディレクトリーツリーに追加された後、又はディレクトリーツリーから削除された後に、ＮＡＳストレージシステム１００は、この変更の前に存在したディレクトリーツリーのグローバルＡＣＬをバックアップする。したがって、ファイルシステムは、同じルートノードを含む複数のディレクトリーツリーに対応する複数のバージョンを有し、同じルートノードを含む複数のディレクトリーツリーに対応する複数のバージョンは、ノードがディレクトリーツリーに追加される前に存在したグローバルＡＣＬバージョン、又はノードがディレクトリーツリーに追加された後に存在する更新されたグローバルＡＣＬバージョン、又はノードがディレクトリーツリーから削除される前に存在したグローバルＡＣＬバージョン、又はノードがディレクトリーツリーから削除された後に存在する更新されたグローバルＡＣＬバージョン、又は異なる時間に同じディレクトリーツリーに対してバックアップされる少なくとも１つのグローバルＡＣＬバージョンを含む。本発明では、複数のグローバルＡＣＬバージョンが、グローバルＡＣＬのこの後の復元を容易にするためにバックアップされる。
【０１１４】
図４に示す実施形態に基づいて、段階Ｓ４０２の後に、すなわち、グローバルＡＣＬが作成された後、又はディレクトリーツリーが作成された後に、ユーザが、作成されたＡＣＬを有するディレクトリーツリー、又は作成されたグローバルＡＣＬを有していないディレクトリーツリーを変更する必要がある場合、例えば、新しいディレクトリーノード又はファイルノードをディレクトリーツリーに追加する必要がある場合、本発明は、アクセスパーミッションを設定する方法を提供して、新たに追加されたディレクトリーノード又はファイルノードにアクセスパーミッションを設定する。以下では、既存のディレクトリーツリーに新たに追加されたノードにアクセスパーミッションを設定する方法を詳細に説明する。図５は、本発明の一実施形態による、新たに追加されたノードにアクセスパーミッションを設定する方法のフローチャートである。図５に示すように、本実施形態において提供される、新たに追加されたノードにアクセスパーミッションを設定する方法は、図２に示すＮＡＳストレージシステム１００により実行され、具体的には、図２に示すＮＡＳストレージシステム１００の制御モジュール２３０又は制御モジュール２３０のプロセッサ２１３により実行されてよく、また具体的には以下に挙げる段階を含む。
【０１１５】
Ｓ５１０：ＮＡＳストレージシステム１００はノード作成要求を受信する。
【０１１６】
ユーザが、クライアントを用いて、ノード作成要求をＮＡＳストレージシステム１００に送信してよい。
【０１１７】
ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、新たに追加されたノードのパス情報は、ルートノードから新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す。新たに追加されたノードは、ディレクトリーノードであってもよく、又はファイルノードであってもよい。例えば、図３に示すディレクトリーツリーに基づいて、新たに追加されたノードの識別子は３１３であり、新たに追加されたノードのパスが、
【数１】
0006965370.tif 000006
である。新たに追加されたノードのパスに基づいて、新たに追加されたノードが中間ノード３１１の下に新たに追加された子ノード３１３であると判定される。
【０１１８】
新たに追加されたノードがルートノードである場合、ディレクトリーツリーのグローバルＡＣＬ識別子が、新たに追加されたルートノードの識別子を含む識別子に更新される。ディレクトリーツリーの新たに追加されたルートノードの前に存在したルートノードが、新たに追加されたルートノードの子ノードに変更される。
【０１１９】
別の実装例では、パス内にある各ノードの識別子がノードのパスを表すのに用いられる場合、ノード作成要求は、新たに追加されたノードのパスがパス内の各ノードの識別子を含むので、新たに追加されたノードのパスだけを含んでよい。新たに追加されたノードの識別子は、新たに追加されたノードのパスに基づいて判定されてよい。
【０１２０】
ＮＡＳストレージシステム１００がクライアントにより送信されるノード作成要求を受信した後に、ＮＡＳストレージシステム１００は現在のグローバルＡＣＬをバックアップしてよく、その結果、ユーザは、異なるグローバルＡＣＬバージョンに基づいて、ディレクトリーツリーに対するアクセスパーミッションを復元できる。
【０１２１】
Ｓ５２０：ＮＡＳストレージシステム１００は、新たに追加されたノードの識別子とパス情報との間の対応関係を格納する。
【０１２２】
具体的には、ＮＡＳストレージシステム１００は、新たに追加されたノードの識別子とパス情報との間の対応関係をグローバルＡＣＬに格納する。
【０１２３】
任意選択で、ＮＡＳストレージシステム１００は、新たに追加されたノードの識別子とパス情報との間の対応関係を、新たに追加されたノードのメタデータに格納する。
【０１２４】
別の実装例では、各ノードの識別子がノードのパス情報を表すのに用いられる場合、ＮＡＳストレージシステム１００は、新たに追加されたノードのパス情報を、グローバルＡＣＬ、又は新たに追加されたノードのメタデータに格納する。したがって、各ノードの識別子がノードのパス情報を表すのに用いられる実装例では、ノードがパスで識別されてよく、その結果、グローバルＡＣＬの記憶領域が節約される。
【０１２５】
Ｓ５３０：ＮＡＳストレージシステム１００は、新たに追加されたノードのパーミッションバージョン番号をグローバルＡＣＬに格納する。新たに追加されたノードのパーミッションバージョン番号の値が、事前設定されたパーミッションバージョン番号の初期値である。
【０１２６】
具体的には、ＮＡＳストレージシステム１００は、新たに追加されたノードのパーミッションバージョン番号をグローバルＡＣＬに格納する。
【０１２７】
任意選択で、ＮＡＳストレージシステム１００は、新たに追加されたノードのパーミッションバージョン番号を、新たに追加されたノードのメタデータに格納する。
【０１２８】
本発明では、事前設定されたパーミッションバージョン番号の初期値は０に設定されている。新たに追加されたノードの事前設定されたパーミッションバージョン番号の初期値は、グローバルバージョンパラメータの初期値より小さい又はこれと等しい。新たに追加されたノードのパーミッションバージョン番号はグローバルバージョンパラメータの初期値より小さい又はこれと等しいので、新たに追加されたノードのパス情報で示される全ノードのうち、アクセスパーミッションを受けて設定されるノードのパーミッションバージョン番号は、新たに追加されたノードのパーミッションバージョン番号より新しい。したがって、新たに追加されたノードは、新たに追加されたノードのパス情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションを引き継ぐ。したがって、新たに追加されたノードにアクセスパーミッションが設定される場合、新たに追加されたノードに対するアクセスパーミッションのアクセスレコードを格納する必要はないので、新たに追加されたノードにアクセスパーミッションを設定する効率が向上し、新たに追加されたノードに対するアクセスパーミッションを格納するオーバーヘッドが減少する。
【０１２９】
新しいノードが追加された後に、新たに追加されたノードのディレクトリーツリーのグローバルＡＣＬのコンテンツが、段階Ｓ５２０及びＳ５３０で更新される。グローバルＡＣＬの更新後のコンテンツが表５に示されている。
【表５】
0006965370.tif 000007
【０１３０】
図４に示す実施形態に基づいて、段階Ｓ４０６の後に、ノードがディレクトリーツリーに追加される場合には、図５に示す各段階を実行することによって、新たに追加されたノードにアクセスパーミッションが設定された後に、グローバルＡＣＬのコンテンツが表６に示されている。
【表６】
0006965370.tif 000008
【０１３１】
図５に示す実施形態に基づいて、ノード作成要求はさらに、新たに追加されたノードに含まれるデータを含む。段階Ｓ５１０の後に、ＮＡＳストレージシステム１００は、データをストレージアレイ２２０に格納する。
【０１３２】
図６は、本発明の一実施形態によるファイルシステムパーミッション設定装置の構造図である。本発明の本実施形態において提供されるファイルシステムパーミッション設定装置は、ストレージシステムに適用され、例えば、ＮＡＳストレージシステム１００に適用されてよい。図６に示すように、本実施形態において提供されるファイルシステムパーミッション設定装置６０が、受信モジュール６１と、取得モジュール６２と、処理モジュール６３とを含む。受信モジュール６１と取得モジュール６２とは接続され、処理モジュール６３は、取得モジュール６２と受信モジュール６１とに個別に接続される。
【０１３３】
本発明では、受信モジュール６１は、パーミッション設定要求を受信するように構成される。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。
【０１３４】
本実装例では、受信モジュール６１がクライアントにより送信されるパーミッション設定要求を受信する機能が、ＮＡＳストレージシステム１００のインタフェース２１１を用いて実装されてよい。パーミッション設定要求の具体的な実装詳細については、図４に示す段階Ｓ４０３の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１３５】
本発明では、取得モジュール６２は、現在登録されているグローバルバージョンパラメータを取得するように構成される。
【０１３６】
本実装例では、取得モジュール６２が現在登録されているグローバルバージョンパラメータを取得する機能が、ＮＡＳストレージシステム１００のインタフェース２１２を用いて実装されてもよく、又はＮＡＳストレージシステム１００のプロセッサ２１３若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２が現在登録されているグローバルバージョンパラメータを取得する具体的な実装詳細については、図４に示す段階Ｓ４０４の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１３７】
本発明では、処理モジュール６３は、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得し、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納するように構成される。最新のグローバルバージョンパラメータは、パーミッションを受けて設定されるノードのパーミッションバージョン番号として用いられる。グローバルバージョンパラメータが漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表し、パーミッションを受けて設定されるノードの子ノードが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。
【０１３８】
本実装例では、処理モジュール６３が現在登録されているグローバルバージョンパラメータを更新して最新のグローバルバージョンパラメータを取得する機能が、ＮＡＳストレージシステム１００のプロセッサ２１３又は制御モジュール２３０を用いて実装されてよい。処理モジュール６３が現在登録されているグローバルバージョンパラメータを更新して最新のグローバルバージョンパラメータを取得する具体的な実装詳細については、図４に示す段階Ｓ４０５の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１３９】
本実装例では、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを処理モジュール６３が格納する機能が、ＮＡＳストレージシステム１００のプロセッサ２１３又は制御モジュール２３０を用いて実装されてよい。処理モジュール６３が、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として最新のグローバルバージョンパラメータを用いる具体的な実装詳細については、図４に示す段階Ｓ４０６の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１４０】
本発明において提供されるファイルシステムパーミッション設定装置によれば、ディレクトリーツリーのノードに対するアクセスパーミッションのパーミッションレコードが迅速に設定される。更新されたグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表すのに用いられる。パーミッションを受けて設定されるノードの子ノードのパーミッションレコードは、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。したがって、ディレクトリーツリーの親ノードのパーミッションレコードだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードのパーミッションレコードを引き継ぐので、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にある各サブディレクトリー又は各ファイルのパーミッションレコードを個別に設定する必要はない。その結果、ディレクトリーツリーにアクセスパーミッションを設定する効率が向上する。パーミッションレコードは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにパーミッションレコードを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【０１４１】
任意選択の一実装例では、取得モジュール６２はさらに、グローバルアクセス制御リストに照会して、現在登録されているグローバルバージョンパラメータを取得するように構成される。グローバルアクセス制御リストは、ディレクトリーツリーのルートノードのメタデータに格納されており、グローバルアクセス制御リストはグローバルバージョンパラメータを格納する。本実装例では、取得モジュール６２がグローバルアクセス制御リストに照会して現在登録されているグローバルバージョンパラメータを取得する機能が、ＮＡＳストレージシステム１００のインタフェース２１２を用いて実装されてもよく、又はＮＡＳストレージシステム１００のプロセッサ２１３若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２がグローバルアクセス制御リストに照会して現在登録されているグローバルバージョンパラメータを取得する具体的な実装詳細については、図４に示す段階Ｓ４０４の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１４２】
任意選択の一実装例では、処理モジュール６３はさらに、グローバルアクセス制御リストを作成し、新たに作成されたグローバルアクセス制御リストに初期グローバルバージョンパラメータを設定するように構成される。本実装例では、処理モジュール６３がグローバルアクセス制御リストを作成し、新たに作成されたグローバルアクセス制御リストに初期グローバルバージョンパラメータを設定する機能が、ＮＡＳストレージシステム１００のプロセッサ２１３又は制御モジュール２３０を用いて実装されてよい。処理モジュール６３がグローバルアクセス制御リストを作成し、新たに作成されたグローバルアクセス制御リストに初期グローバルバージョンパラメータを設定する具体的な実装詳細については、図４に示す段階Ｓ４０１及びＳ４０２の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１４３】
任意選択の一実装例では、パーミッション設定要求はさらに、パーミッションを受けて設定されるノードのパス情報を含み、パーミッションを受けて設定されるノードのパス情報は、ルートノードから、パーミッションを受けて設定されるノードまでの、アクセスブランチ上にある全ノードを示す。処理モジュール６３はさらに、パーミッションを受けて設定されるノードのパス情報をグローバルアクセス制御リストに格納するように構成される。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは、対応関係を形成する。
【０１４４】
本実装例では、処理モジュール６３が、パーミッションを受けて設定されるノードのパス情報をグローバルアクセス制御リストに格納する機能が、ＮＡＳストレージシステム１００のプロセッサ２１３又は制御モジュール２３０を用いて実装されてよい。処理モジュール６３が、パーミッションを受けて設定されるノードのパス情報をグローバルアクセス制御リストに格納する具体的な実装詳細については、図４に示す段階Ｓ４０３において、ディレクトリーツリーのノードのパス情報を格納する具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１４５】
パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは対応関係を形成し、当該対応関係はグローバルアクセス制御リストに格納されているので、ディレクトリーツリー内の、パーミッションを受けて設定されるノードの、識別子、パス情報、及びパーミッションレコードは、ディレクトリーツリーのルートノードのメタデータに索引を付けるだけで取得することができる。これにより、ディレクトリーツリーのノードのパーミッションレコード及びパス情報を取得するための、扱いやすいアクセスチャネルが提供される。
【０１４６】
任意選択の一実装例では、受信モジュール６１はさらに、データアクセス要求を受信するように構成される。データアクセス要求は、アクセス対象ノードの識別子を含む。
【０１４７】
本実装例では、受信モジュール６１がクライアントにより送信されるデータアクセス要求を受信する機能が、ＮＡＳストレージシステム１００のインタフェース２１１を用いて実装されてよい。データアクセス要求の具体的な実装詳細については、図４に示す段階Ｓ４０７の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１４８】
取得モジュール６２はさらに、アクセス対象ノードの識別子に基づいて、アクセス対象ノードに対するアクセスパーミッションを取得するように構成される。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新である場合、アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードの登録されたパーミッションレコードである。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新ではない場合、アクセス対象ノードに対するアクセスパーミッションは、最新のパーミッションバージョン番号を有するアクセス対象ノードの親ノードに対応するパーミッションレコードを引き継ぐ。
【０１４９】
本実装例では、取得モジュール６２がアクセス対象ノードの識別子に基づいて、アクセス対象ノードに対するアクセスパーミッションを取得する機能が、ＮＡＳストレージシステム１００のインタフェース２１２を用いて実装されてもよく、又はＮＡＳストレージシステム１００のプロセッサ２１３若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２がアクセス対象ノードの識別子に基づいて、アクセス対象ノードに対するアクセスパーミッションを取得する具体的な実装詳細については、図４に示す段階Ｓ４０８及びＳ４０９の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１５０】
処理モジュール６３はさらに、アクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、認証に成功した後にアクセス対象ノードのデータにアクセスするように構成される。
【０１５１】
本実装例では、処理モジュール６３がアクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、認証に成功した後にアクセス対象ノードのデータにアクセスする機能が、ＮＡＳストレージシステム１００のプロセッサ２１３又は制御モジュール２３０を用いて実装されてよい。処理モジュール６３がアクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、認証に成功した後にアクセス対象ノードのデータにアクセスする具体的な実装詳細については、図４に示す段階Ｓ４１０の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１５２】
任意選択の一実装例では、取得モジュール６２はさらに、グローバルアクセス制御リストに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定し、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会し、最新のパーミッションバージョン番号を有するノードを判定し、最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得するように構成される。アクセス対象ノードのパス情報は、アクセス対象ノード及びアクセス対象ノードの全ての親ノードを示すのに用いられ、最新のパーミッションバージョン番号を有するノードのパーミッションレコードは、アクセス対象ノードに対するアクセスパーミッションである。
【０１５３】
本実装例では、取得モジュール６２がグローバルアクセス制御リストに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する機能が、ＮＡＳストレージシステム１００のストレージアレイ２２０を用いて実装されてもよく、又はＮＡＳストレージシステム１００の制御装置２１０、プロセッサ２１３、若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２がグローバルアクセス制御リストに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する具体的な実装詳細については、図４に示す段階Ｓ４０８の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１５４】
本実装例では、取得モジュール６２がアクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する機能が、ＮＡＳストレージシステム１００のストレージアレイ２２０を用いて実装されてもよく、又はＮＡＳストレージシステム１００の制御装置２１０、プロセッサ２１３、若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２がアクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する具体的な実装詳細については、図４に示す段階Ｓ４０９の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１５５】
本実装例では、取得モジュール６２が最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得する機能が、ＮＡＳストレージシステム１００のインタフェース２１２を用いて実装されてもよく、又はＮＡＳストレージシステム１００のプロセッサ２１３若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２が最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得する具体的な実装詳細については、図４に示す段階Ｓ４０９の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１５６】
任意選択で、本発明のモジュール及び構成要素が一緒に統合されてもよく、又は個別に配置されてもよい。
【０１５７】
任意選択の一実装例では、取得モジュール６２はさらに、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定するように構成される。事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定することは、ディレクトリーツリー内のノードについてのアクセスパーミッション配分ルールに基づいてトラバーサルルールを事前設定し、事前設定された適切なトラバーサルルールに従って、アクセス対象ノードのパスにある全ノードのパーミッションバージョン番号を比較することにより、最新のパーミッションバージョン番号を有するノードを判定して、トラバース及び比較の効率を向上させることであってよい。
【０１５８】
本実装例では、取得モジュール６２が事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する機能が、ＮＡＳストレージシステム１００のストレージアレイ２２０を用いて実装されてもよく、又はＮＡＳストレージシステム１００の制御装置２１０、プロセッサ２１３、若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２が事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する具体的な実装詳細については、図４に示す段階Ｓ４０９の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１５９】
任意選択の一実装例では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが異なるディレクトリーレベルに属し、ディレクトリーツリー内の各ノードのパス情報で示される全ノードの親ノードのディレクトリーレベルが、親ノードに属する子ノードのディレクトリーレベルより高く、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。取得モジュール６２はさらに、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回２つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定するように構成される。
【０１６０】
本実装例では、取得モジュール６２が、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回２つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する機能が、ＮＡＳストレージシステム１００のストレージアレイ２２０を用いて実装されてもよく、又はＮＡＳストレージシステム１００の制御装置２１０、プロセッサ２１３、若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２が、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回２つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する具体的な実装詳細については、図４に示す段階Ｓ４０９の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１６１】
任意選択の一実装例では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが異なるディレクトリーレベルに属し、ディレクトリーツリー内の各ノードのパス情報で示される全ノードの親ノードのディレクトリーレベルが、親ノードに属する子ノードのディレクトリーレベルより高く、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。取得モジュール６２はさらに、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回２つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定するように構成される。
【０１６２】
本実装例では、取得モジュール６２が、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回２つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する機能が、ＮＡＳストレージシステム１００のストレージアレイ２２０を用いて実装されてもよく、又はＮＡＳストレージシステム１００の制御装置２１０、プロセッサ２１３、若しくは制御モジュール２３０を用いて実装されてもよい。取得モジュール６２が、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回２つのノードのパーミッションバージョン番号を選択して比較し、新しいパーミッションバージョン番号を有するノードを判定し、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する具体的な実装詳細については、図４に示す段階Ｓ４０９の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１６３】
任意選択の一実装例では、受信モジュール６１はさらに、ノード作成要求を受信するように構成される。ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、新たに追加されたノードのパス情報は、ルートノードから新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す。
【０１６４】
本実装例では、受信モジュール６１がクライアントにより送信されるノード作成要求を受信する機能が、ＮＡＳストレージシステム１００のインタフェース２１１を用いて実装されてよい。ノード作成要求の具体的な実装詳細については、図５に示す段階Ｓ５１０の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１６５】
処理モジュール６３はさらに、識別子と、ディレクトリーツリーの新たに追加されたノードのパス情報との間の対応関係をグローバルアクセス制御リストに格納し、新たに追加されたノードのパーミッションバージョン番号をグローバルアクセス制御リストに格納するように構成される。新たに追加されたノードのパーミッションバージョン番号の初期値が、作成されたグローバルバージョンパラメータの初期値より小さい又はこれと等しく、新たに追加されたノードに初期パーミッションバージョン番号が設定され、新たに追加されたノードに設定された初期パーミッションバージョン番号は、初期グローバルバージョンパラメータより小さい又はこれと等しい。
【０１６６】
本実装例では、処理モジュール６３がディレクトリーツリーの新たに追加されたノードの識別子とパス情報との間の対応関係をグローバルアクセス制御リストに格納する機能が、ＮＡＳストレージシステム１００のプロセッサ２１３又は制御モジュール２３０を用いて実装されてよい。処理モジュール６３が識別子とディレクトリーツリーの新たに追加されたノードのパス情報との間の対応関係をグローバルアクセス制御リストに格納する具体的な実装詳細については、図５に示す段階Ｓ５２０の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１６７】
本実装例では、処理モジュール６３が新たに追加されたノードのパーミッションバージョン番号をグローバルアクセス制御リストに格納する機能が、ＮＡＳストレージシステム１００のプロセッサ２１３又は制御モジュール２３０を用いて実装されてよい。処理モジュール６３が新たに追加されたノードのパーミッションバージョン番号をグローバルアクセス制御リストに格納する具体的な実装詳細については、図５に示す段階Ｓ５３０の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【０１６８】
本発明は、ファイルシステムパーミッション設定方法及び装置を提供する。本方法は、ストレージシステムにより実行され、本方法は具体的には、ストレージシステムに適用される。本方法は、ストレージシステムがパーミッション設定要求を受信する段階であって、パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、段階を含む。ストレージシステムがパーミッション設定要求を受信した後に、ストレージシステムは、現在登録されているグローバルバージョンパラメータを取得し、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得する。ストレージシステムは、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として最新のグローバルバージョンパラメータを用いる。グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表す。パーミッションを受けて設定されるノードの子ノードが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。本発明において提供されるファイルシステムパーミッション設定方法によれば、ディレクトリーツリーのノードに対するアクセスパーミッションのパーミッションレコードが迅速に設定される。更新されたグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表すのに用いられる。この方法では、パーミッションを受けて設定されるノードの子ノードのパーミッションレコードは、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。したがって、ディレクトリーツリーの親ノードのパーミッションレコードだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードのパーミッションレコードを引き継ぐので、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にある各サブディレクトリー又は各ファイルのパーミッションレコードを個別に設定する必要はない。その結果、ディレクトリーツリーにアクセスパーミッションを設定する効率が向上する。パーミッションレコードは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにパーミッションレコードを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【０１６９】
簡便且つ簡潔な説明のために、前述のシステム、装置、及びユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスを参照できることは、当業者が明確に理解するであろう。詳細は再度ここで説明しない。
【０１７０】
本願において提供された、いくつかの実施形態では、開示されたシステム、装置、及び方法が他の方式で実装されてよいことを理解されたい。例えば、説明された装置の実施形態は、単なる一例にすぎない。例えば、ユニットの分割は単なる論理的機能の分割にすぎず、実際の実装では他の分割であってもよい。例えば、複数のユニット又は構成要素が結合されても別のシステムに統合されてもよく、一部の特徴が無視されても実行されなくてもよい。さらに、表示又は論じられた相互連結又は直接的連結又は通信接続は、一部のインタフェースを用いて実装されてよい。装置間又はユニット間の間接的連結又は通信接続は、電子的形態、機械的形態、又は他の形態で実装されてよい。
【０１７１】
別個の部分として説明されたユニットは、物理的に離れていてもいなくてもよく、またユニットとして示された部分が物理的ユニットであってもなくてもよく、１か所に位置してもよく、又は複数のネットワークユニットに分散されてもよい。これらのユニットの一部又は全てが、実際の要件に基づいて選択され、これらの実施形態の解決手段の目的を達成してよい。
【０１７２】
さらに、本発明の実施形態の複数の機能ユニットが、１つの処理ユニットに統合されてもよく、又はこれらのユニットのそれぞれが物理的に単独で存在してもよく、又は２つ若しくはそれより多くのユニットが１つのユニットに統合される。統合されたユニットは、ハードウェアの形態で実装されてもよく、ソフトウェア機能ユニットの形態で実装されてもよい。
【０１７３】
統合されたユニットがソフトウェア機能ユニットの形態で実装され、個別の製品として販売されるか又は用いられる場合、統合されたユニットは、コンピュータ可読記憶媒体に格納されてよい。そのような理解に基づいて、本質的には本発明の技術的解決手段、又は先行技術に寄与する部分、又は技術的解決手段の全て若しくは一部が、ソフトウェア製品の形態で実装されてよい。コンピュータソフトウェア製品は、記憶媒体に格納され、本発明の実施形態において説明された方法の段階の全て又は一部を実行するようコンピュータデバイス（これは、パーソナルコンピュータ、サーバ、又はネットワークデバイスであってよい）に指示するためのいくつかの命令を含む。前述の記憶媒体は、ＵＳＢフラッシュドライブ、取り外し可能型ハードディスク、リードオンリメモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク、又は光ディスクなどの、プログラムコードを格納できる任意の媒体を含む。
【０１７４】
前述の実施形態は、本発明の技術的解決手段を説明することだけを意図しており、本発明を限定する意図はない。本発明は、前述の実施形態を参照して詳細に説明されているが、当業者であれば依然として、本発明の実施形態の技術的解決手段の意図及び範囲から逸脱することなく、前述の実施形態において説明された技術的解決手段に対して修正を施してもよく、又は前述の実施形態の一部の技術的特徴に対して均等物による置き換えを行ってもよいことを理解しているはずである。
（項目１）
ファイルシステムパーミッション設定方法であって、
パーミッション設定要求を受信する段階であって、上記パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、上記パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、段階と、
現在登録されているグローバルバージョンパラメータを取得する段階と、
上記現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得する段階であって、グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは上記ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表す、段階と、
パーミッションを受けて設定される上記ノードの上記識別子及び上記パーミッションレコードを格納し、パーミッションを受けて設定される上記ノードのパーミッションバージョン番号として、上記最新のグローバルバージョンパラメータを用いる段階であって、パーミッションを受けて設定される上記ノードの子ノードのパーミッションレコードが、パーミッションを受けて設定される上記ノードに対する現在のパーミッション設定オペレーション後に取得されるパーミッションレコードを引き継ぐ、段階と
を備える、方法。
（項目２）
現在登録されているグローバルバージョンパラメータを取得する上記段階は、
グローバルアクセス制御リストに照会して、上記現在登録されているグローバルバージョンパラメータを取得する段階であって、上記グローバルアクセス制御リストは、上記ディレクトリーツリーのルートノードのメタデータに格納されており、上記グローバルアクセス制御リストは上記グローバルバージョンパラメータを格納する、段階を有する、項目１に記載の方法。
（項目３）
パーミッション設定要求を受信する上記段階の前に、上記方法はさらに、
上記グローバルアクセス制御リストを作成し、新たに作成された上記グローバルアクセス制御リストに初期グローバルバージョンパラメータを設定する段階を備える、項目２に記載の方法。
（項目４）
上記パーミッション設定要求はさらに、パーミッションを受けて設定される上記ノードのパス情報を含み、パーミッションを受けて設定される上記ノードの上記パス情報は、上記ルートノードから、パーミッションを受けて設定される上記ノードまでの、アクセスブランチ上にある全ノードを示し、
上記方法はさらに、
パーミッションを受けて設定される上記ノードの上記パス情報を上記グローバルアクセス制御リストに格納する段階であって、パーミッションを受けて設定される上記ノードの上記識別子、上記パス情報、及び上記パーミッションレコードは対応関係を形成する、段階を備える、項目２又は３に記載の方法。
（項目５）
上記方法はさらに、
データアクセス要求を受信する段階であって、上記データアクセス要求はアクセス対象ノードの識別子を含む、段階と、
上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得する段階であって、上記アクセス対象ノードのパーミッションバージョン番号が上記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、段階と、
上記アクセス対象ノードに対する上記アクセスパーミッションに基づいて認証を行い、上記認証に成功した後に上記アクセス対象ノードのデータにアクセスする段階と
を備える、項目１から４のいずれか一項に記載の方法。
（項目６）
上記アクセス対象ノードの上記パーミッションバージョン番号が、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号の中で最新である場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの登録されているパーミッションレコードである、項目５に記載の方法。
（項目７）
上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得する上記段階は、
上記グローバルアクセス制御リストに照会し、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードの上記パス情報を判定する段階であって、上記アクセス対象ノードの上記パス情報は、上記アクセス対象ノード及び上記アクセス対象ノードの全ての親ノードを示すのに用いられる、段階と、
上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会し、上記最新のパーミッションバージョン番号を有するノードを判定する段階と、
上記最新のパーミッションバージョン番号を有する上記ノードのパーミッションレコードを取得する段階であって、上記最新のパーミッションバージョン番号を有する上記ノードの上記パーミッションレコードは、上記アクセス対象ノードに対する上記アクセスパーミッションである、段階と
を有する、項目６に記載の方法。
（項目８）
上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会して、上記最新のパーミッションバージョン番号を有するノードを判定する上記段階は、
事前設定されたトラバーサルルールに従って、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号を比較して、上記最新のパーミッションバージョン番号を有する上記ノードを判定する段階を有する、項目７に記載の方法。
（項目９）
上記方法はさらに、
ノード作成要求を受信する段階であって、上記ノード作成要求は、上記ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、上記新たに追加されたノードの上記パス情報は、上記ルートノードから上記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す、段階と、
上記ディレクトリーツリーの上記新たに追加されたノードの上記識別子と上記パス情報との間の対応関係を上記グローバルアクセス制御リストに格納する段階と、
上記新たに追加されたノードに初期パーミッションバージョン番号を設定する段階であって、上記新たに追加されたノードに設定される上記初期パーミッションバージョン番号は、上記初期グローバルバージョンパラメータより小さい又はこれと等しい、段階と
を備える、項目２から８のいずれか一項に記載の方法。
（項目１０）
ファイルシステムパーミッション設定装置であって、
パーミッション設定要求を受信するように構成されたインタフェースであって、上記パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、上記パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、インタフェースと、
現在登録されているグローバルバージョンパラメータを取得し、上記現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得し、パーミッションを受けて設定される上記ノードの上記識別子及び上記パーミッションレコードを格納し、パーミッションを受けて設定される上記ノードのパーミッションバージョン番号として上記最新のグローバルバージョンパラメータを用いるように構成されたプロセッサであって、グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、上記ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表し、パーミッションを受けて設定される上記ノードの子ノードのパーミッションレコードが、パーミッションを受けて設定される上記ノードに対する現在のパーミッション設定オペレーション後に取得されるパーミッションレコードを引き継ぐ、プロセッサと
を備える、装置。
（項目１１）
上記プロセッサはさらに、グローバルアクセス制御リストに照会して、上記現在登録されているグローバルバージョンパラメータを取得するように構成され、上記グローバルアクセス制御リストは、上記ディレクトリーツリーのルートノードのメタデータに格納されており、上記グローバルアクセス制御リストは上記グローバルバージョンパラメータを格納する、項目１０に記載の装置。
（項目１２）
上記プロセッサはさらに、上記グローバルアクセス制御リストを作成し、新たに作成された上記グローバルアクセス制御リストに初期グローバルバージョンパラメータを設定するように構成される、項目１１に記載の装置。
（項目１３）
上記パーミッション設定要求はさらに、パーミッションを受けて設定される上記ノードのパス情報を含み、パーミッションを受けて設定される上記ノードの上記パス情報は、上記ルートノードから、パーミッションを受けて設定される上記ノードまでの、アクセスブランチ上にある全ノードを示し、上記プロセッサはさらに、パーミッションを受けて設定される上記ノードの上記パス情報を上記グローバルアクセス制御リストに格納するように構成され、パーミッションを受けて設定される上記ノードの上記識別子、上記パス情報、及び上記パーミッションレコードは対応関係を形成する、項目１１又は１２に記載の装置。
（項目１４）
上記インタフェースはさらに、データアクセス要求を受信するように構成され、上記データアクセス要求はアクセス対象ノードの識別子を含み、
上記プロセッサはさらに、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得し、上記アクセス対象ノードに対する上記アクセスパーミッションに基づいて認証を行い、上記認証に成功した後に上記アクセス対象ノードのデータにアクセスするように構成され、上記アクセス対象ノードのパーミッションバージョン番号が、上記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、項目１０から１３のいずれか一項に記載の装置。
（項目１５）
上記アクセス対象ノードの上記パーミッションバージョン番号が、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号の中で最新である場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの登録されているパーミッションレコードである、項目１４に記載の装置。
（項目１６）
上記プロセッサはさらに、上記グローバルアクセス制御リストに照会し、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードの上記パス情報を判定し、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会して、上記最新のパーミッションバージョン番号を有するノードを判定し、上記最新のパーミッションバージョン番号を有する上記ノードのパーミッションレコードを取得するように構成され、上記最新のパーミッションバージョン番号を有する上記ノードの上記パーミッションレコードは上記アクセス対象ノードに対する上記アクセスパーミッションであり、上記アクセス対象ノードの上記パス情報は、上記アクセス対象ノード及び上記アクセス対象ノードの全ての親ノードを示すのに用いられる、項目１５に記載の装置。
（項目１７）
上記プロセッサはさらに、事前設定されたトラバーサルルールに従って、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号を比較して、上記最新のパーミッションバージョン番号を有する上記ノードを判定するように構成される、項目１６に記載の装置。
（項目１８）
上記インタフェースはさらに、ノード作成要求を受信するように構成され、上記ノード作成要求は、上記ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、上記新たに追加されたノードの上記パス情報は、上記ルートノードから上記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
上記プロセッサはさらに、上記ディレクトリーツリーの上記新たに追加されたノードの上記識別子と上記パス情報との間の対応関係を上記グローバルアクセス制御リストに格納することと、上記新たに追加されたノードのパーミッションバージョン番号を上記グローバルアクセス制御リストに格納することであって、上記新たに追加されたノードの上記パーミッションバージョン番号の初期値が、作成された上記グローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、上記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、上記新たに追加されたノードに設定される上記初期パーミッションバージョン番号は上記初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、項目１１から１７のいずれか一項に記載の装置。
（項目１９）
ファイルシステムパーミッション設定装置であって、
パーミッション設定要求を受信するように構成された受信モジュールであって、上記パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、上記パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、インタフェースと、
現在登録されているグローバルバージョンパラメータを取得するように構成された取得モジュールと、
上記現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得し、パーミッションを受けて設定される上記ノードの上記識別子及び上記パーミッションレコードを格納し、パーミッションを受けて設定される上記ノードのパーミッションバージョン番号として上記最新のグローバルバージョンパラメータを用いるように構成された処理モジュールであって、グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、上記ディレクトリーツリーの任意のノードに対する１つのパーミッション設定オペレーションを表し、パーミッションを受けて設定される上記ノードの子ノードのパーミッションレコードが、パーミッションを受けて設定される上記ノードに対する現在のパーミッション設定オペレーション後に取得されるパーミッションレコードを引き継ぐ、処理モジュールと
を備える、装置。
（項目２０）
上記取得モジュールはさらに、グローバルアクセス制御リストに照会して、上記現在登録されているグローバルバージョンパラメータを取得するように構成され、上記グローバルアクセス制御リストは、上記ディレクトリーツリーのルートノードのメタデータに格納されており、上記グローバルアクセス制御リストは上記グローバルバージョンパラメータを格納する、項目１９に記載の装置。
（項目２１）
上記処理モジュールはさらに、上記グローバルアクセス制御リストを作成し、新たに作成された上記グローバルアクセス制御リストに初期グローバルバージョンパラメータを設定するように構成される、項目２０に記載の装置。
（項目２２）
上記パーミッション設定要求はさらに、パーミッションを受けて設定される上記ノードのパス情報を含み、パーミッションを受けて設定される上記ノードの上記パス情報は、上記ルートノードから、パーミッションを受けて設定される上記ノードまでの、アクセスブランチ上にある全ノードを示し、上記処理モジュールはさらに、パーミッションを受けて設定される上記ノードの上記パス情報を上記グローバルアクセス制御リストに格納するように構成され、パーミッションを受けて設定される上記ノードの上記識別子、上記パス情報、及び上記パーミッションレコードは対応関係を形成する、項目２０又は２１に記載の装置。
（項目２３）
上記受信モジュールはさらに、データアクセス要求を受信するように構成され、上記データアクセス要求はアクセス対象ノードの識別子を含み、
上記取得モジュールはさらに、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得するように構成され、上記アクセス対象ノードのパーミッションバージョン番号が、上記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぎ、
上記処理モジュールはさらに、上記アクセス対象ノードに対する上記アクセスパーミッションに基づいて認証を行い、上記認証に成功した後に上記アクセス対象ノードのデータにアクセスするように構成される、項目１９から２２のいずれか一項に記載の装置。
（項目２４）
上記アクセス対象ノードの上記パーミッションバージョン番号が、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号の中で最新である場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの登録されているパーミッションレコードである、項目２３に記載の装置。
（項目２５）
上記取得モジュールはさらに、上記グローバルアクセス制御リストに照会し、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードの上記パス情報を判定し、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会して、上記最新のパーミッションバージョン番号を有するノードを判定し、上記最新のパーミッションバージョン番号を有する上記ノードのパーミッションレコードを取得するように構成され、上記アクセス対象ノードの上記パス情報は、上記アクセス対象ノード及び上記アクセス対象ノードの全ての親ノードを示すのに用いられ、上記最新のパーミッションバージョン番号を有する上記ノードの上記パーミッションレコードは、上記アクセス対象ノードに対する上記アクセスパーミッションである、項目２４に記載の装置。
（項目２６）
上記取得モジュールはさらに、事前設定されたトラバーサルルールに従って、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号を比較して、上記最新のパーミッションバージョン番号を有する上記ノードを判定するように構成される、項目２５に記載の装置。
（項目２７）
上記受信モジュールはさらに、ノード作成要求を受信するように構成され、上記ノード作成要求は、上記ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、上記新たに追加されたノードの上記パス情報は、上記ルートノードから上記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
上記処理モジュールはさらに、上記ディレクトリーツリーの上記新たに追加されたノードの上記識別子と上記パス情報との間の対応関係を上記グローバルアクセス制御リストに格納することと、上記新たに追加されたノードのパーミッションバージョン番号を上記グローバルアクセス制御リストに格納することであって、上記新たに追加されたノードの上記パーミッションバージョン番号の初期値が、作成された上記グローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、上記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、上記新たに追加されたノードに設定される上記初期パーミッションバージョン番号は上記初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、項目２０から２６のいずれか一項に記載の装置。
【図１】
0006965370.tif 000009
【図２】
0006965370.tif 000010
【図３】
0006965370.tif 000011
【図４】
0006965370.tif 000012
【図５】
0006965370.tif 000013
【図６】
0006965370.tif 000014