【文献】
LENSING PAUL HERMANN et al.,File System Scalability with Highly Decentralized Metadata on Independent Storage Devices,IEEE/ACM International Symposium on Cluster Computing and the Grid(CCGRID),IEEE,2016年07月21日,p.366-375,https://ieeexplore.ieee.org/document/7515711
(58)【調査した分野】(Int.Cl.,DB名)
前記アクセス対象ノードの前記パーミッションバージョン番号が、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号の中で最新である場合、前記アクセス対象ノードに対する前記アクセスパーミッションは、前記アクセス対象ノードの登録されているパーミッションレコードである、請求項1から4のいずれか一項に記載の方法。
前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号に照会して、前記最新のパーミッションバージョン番号を有するノードを判定する前記段階は、
事前設定されたトラバーサルルールに従って、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号を比較して、前記最新のパーミッションバージョン番号を有する前記ノードを判定する段階を有する、請求項6に記載の方法。
前記アクセス対象ノードの前記パーミッションバージョン番号が、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号の中で最新である場合、前記アクセス対象ノードに対する前記アクセスパーミッションは、前記アクセス対象ノードの登録されているパーミッションレコードである、請求項9に記載の装置。
前記取得モジュールはさらに、グローバルアクセス制御リストに照会し、前記アクセス対象ノードの前記識別子に基づいて前記アクセス対象ノードの前記パス情報を判定し、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号に照会して、前記最新のパーミッションバージョン番号を有するノードを判定し、前記最新のパーミッションバージョン番号を有する前記ノードのパーミッションレコードを取得するように構成され、前記アクセス対象ノードの前記パス情報は、前記アクセス対象ノード及び前記アクセス対象ノードの全ての親ノードを示すのに用いられ、前記最新のパーミッションバージョン番号を有する前記ノードの前記パーミッションレコードは、前記アクセス対象ノードに対する前記アクセスパーミッションである、請求項10に記載の装置。
前記取得モジュールはさらに、事前設定されたトラバーサルルールに従って、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号を比較して、前記最新のパーミッションバージョン番号を有する前記ノードを判定するように構成される、請求項11に記載の装置。
前記受信モジュールはさらに、ノード作成要求を受信するように構成され、前記ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、前記新たに追加されたノードの前記パス情報は、ルートノードから前記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
前記処理モジュールはさらに、前記ディレクトリーツリーの前記新たに追加されたノードの前記識別子と前記パス情報との間の対応関係をグローバルアクセス制御リストに格納することと、前記新たに追加されたノードのパーミッションバージョン番号を前記グローバルアクセス制御リストに格納することであって、前記新たに追加されたノードの前記パーミッションバージョン番号の初期値が、作成されたグローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、前記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、前記新たに追加されたノードに設定される前記初期パーミッションバージョン番号は初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、請求項9から12のいずれか一項に記載の装置。
前記アクセス対象ノードの前記パーミッションバージョン番号が、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号の中で最新である場合、前記アクセス対象ノードに対する前記アクセスパーミッションは前記アクセス対象ノードの登録されたパーミッションレコードである、請求項14に記載の装置。
前記プロセッサはさらに、グローバルアクセス制御リストに照会し、前記アクセス対象ノードの前記識別子に基づいて前記アクセス対象ノードの前記パス情報を判定し、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号に照会して、前記最新のパーミッションバージョン番号を有するノードを判定し、前記最新のパーミッションバージョン番号を有する前記ノードのパーミッションレコードを取得するように構成され、前記最新のパーミッションバージョン番号を有する前記ノードの前記パーミッションレコードは、前記アクセス対象ノードに対する前記アクセスパーミッションであり、前記アクセス対象ノードの前記パス情報は、前記アクセス対象ノード及び前記アクセス対象ノードの全ての親ノードを示すのに用いられる、請求項15に記載の装置。
前記プロセッサはさらに、事前設定されたトラバーサルルールに従って、前記アクセス対象ノードの前記パス情報で示される前記全ノードの前記パーミッションバージョン番号を比較して、前記最新のパーミッションバージョン番号を有する前記ノードを判定するように構成される、請求項16に記載の装置。
前記インタフェースはさらに、ノード作成要求を受信するように構成され、前記ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、前記新たに追加されたノードの前記パス情報は、ルートノードから前記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
前記プロセッサはさらに、前記ディレクトリーツリーの前記新たに追加されたノードの前記識別子と前記パス情報との間の対応関係を前記グローバルアクセス制御リストに格納することと、前記新たに追加されたノードのパーミッションバージョン番号を前記グローバルアクセス制御リストに格納することであって、前記新たに追加されたノードの前記パーミッションバージョン番号の初期値が、作成されたグローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、前記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、前記新たに追加されたノードに設定される前記初期パーミッションバージョン番号は初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、請求項17に記載の装置。
【発明を実施するための形態】
【0027】
以下では、添付図面を参照して、本発明の実施形態における技術的解決手段を説明する。
【0028】
図1は、本発明の一実施形態によるストレージシステムの概略アーキテクチャ図である。ストレージシステムは、ネットワーク接続型ストレージ(network−attached storage、NAS)のストレージシステムであっても、ストレージエリアネットワーク(storage Area Network、SAN)のストレージシステムであってもよい。NASストレージシステムは、本発明を説明するための一例として用いられる。
図1に示すように、ユーザがクライアントを用いてNASストレージシステム100と通信する。クライアントは、端末デバイスであっても、様々なタイプのサーバであってもよい。NASストレージシステムは、ネットワーク及びファイル共有プロトコルを用いたアクセス用に、データをクライアントに提供する。用いられるプロトコルは、データ伝送用の伝送制御プロトコル(Transmission Control Protocol、TCP)、インターネットプロトコル(Internet Protocol、IP)、並びにネットワークファイルサービスに用いられる共通インターネットファイル(Common Internet File
System、CIFS)プロトコル及びネットワークファイルシステム(Network File System、NFS)プロトコルを含む。
【0029】
本発明の本実施形態における端末デバイスは、タブレットコンピュータ、ノートブックコンピュータ、モバイルインターネットデバイス、パームトップコンピュータ、デスクトップコンピュータ、携帯電話、又は別の製品形態の端末デバイスを含む。
【0030】
本発明の本実施形態におけるNASストレージシステム100は、ファイルサーバであってもよく、コンピュータ又はデスクトップコンピュータなどのストレージデバイスであってもよい。
【0031】
ファイルシステムに基づいて実装されるディレクトリーツリーが、ルートディレクトリー、サブディレクトリー、及びサブディレクトリーの下にあるファイルを含み、ルートディレクトリー又はサブディレクトリーは、ファイルを含むだけでなく、下位レベルのサブディレクトリーも含んでよい。類推によって、マルチレベルディレクトリー構造のディレクトリーツリーが形成される。
【0032】
ノードの機能に基づいて、ディレクトリーツリー内のノードが、マウンティングノード、ディレクトリーノード、及びファイルノードを含む。ノードの構造に基づいて、ディレクトリーツリーは、ルートノード、中間ノード、及びリーフノードを含む。マウンティングノードはディレクトリーツリーのルートノードであり、ディレクトリーノードはディレクトリーツリーの中間ノードであり、ファイルノードはディレクトリーツリーのリーフノードである。ルートノードを除く各ノードが子ノードとしての機能を果たす場合、子ノードはそれ自体の親ノードを有する。リーフノードを除く各ノードが親ノードとしての機能を果たす場合、親ノードはそれ自体の子ノードを有する。ディレクトリーツリーでは、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルの各レベルが属するノードが全て、親ノードの子ノードである。
【0033】
ディレクトリーツリー内の各ノードのパス情報が、ディレクトリーツリーのルートノードからノードまでのアクセスブランチ上にある全ノードを示すのに用いられる。ルートノードからノードまでのアクセスブランチは、ルートノードからノードまでのパスである。ディレクトリーツリー内のノードの位置と、ディレクトリーツリー内のパスにある全ノードの位置とが、ルートノードからノードまでのパスに基づいて識別されてよい。パス内の各ノードに対応するディレクトリーの下にある全てのサブディレクトリー及びファイルは、異なるディレクトリーレベルに個別に属している。ディレクトリーツリー内の各ノードのパスでは、親ノードに対応するディレクトリーのディレクトリーレベルが、親ノードに属する全ての子ノードに個別に対応するディレクトリーのディレクトリーレベルより高い。アクセス対象ノードのパスでは、アクセス対象ノードに対応するディレクトリーが最下位のディレクトリーレベルを有し、ルートノードに対応するディレクトリーが最上位のディレクトリーレベルを有する。
【0034】
図2は、本発明の一実施形態によるNASストレージシステム100の概略構造図である。NASストレージシステム100は、ストレージに用いられ、制御装置210及びストレージアレイ220を含む。
【0035】
制御装置210は、クライアントからデータアクセス要求を受信し、受信したアクセス要求に基づいて認証を行い、認証に成功した後にストレージアレイ220内のアクセス対象データの位置情報を判定し、ストレージアレイ220内のデータへのアクセスを開始するように構成される。
【0036】
制御装置210はさらに、ディレクトリーツリー内のノードにアクセスパーミッションを設定するように構成される。アクセスパーミッションが設定されている場合、パーミッションレコードが格納され、パーミッションレコードは、ノードに対するクライアントのアクセスパーミッションを表す。パーミッションレコードはアクセス制御エントリ(Access Control Entry、ACE)を含み、アクセス制御エントリは、ノードのアクセスパーミッションタイプ、ノードにアクセスできるオブジェクト、及びノードにアクセスできるオブジェクトの、ノードに対するアクセスパーミッションなどのコンテンツを登録する。
【0037】
ストレージアレイ220は、データを格納するように構成される。制御装置210は、アクセス対象要求に対して認証を行う。認証に成功した後に、制御装置210はアクセス対象ノードのデータにアクセスする。
【0038】
ストレージアレイ220はさらに、データのメタデータを格納するように構成される。メタデータは、格納したデータを表し、標準属性データ、拡張属性データ、及びレイアウト属性データを含む。標準属性データは、データのサイズ及び修正時間などの標準的な属性を表すのに用いられる。レイアウト属性データは、データの格納位置を表すのに用いられる。拡張属性データは、ノードに対するアクセスパーミッションを表すデータを含む。
【0039】
既存の解決手段ではディレクトリーツリーに含まれる全ノードをトラバースすることで、ACLパーミッションが設定される。このパーミッション設定方式は長い時間がかかるので、サービス処理効率に影響を与える。さらに、ディレクトリーツリーに含まれるルートディレクトリー、サブディレクトリー、及びファイルが同一のACLを登録することによって、記憶領域が浪費される。本発明の一実施形態では、先行技術の短所について、ディレクトリーツリーに含まれるファイル及びサブディレクトリーが同一のACLパーミッションを有する場合、以下に挙げる解決手段が提案されている。
【0040】
本発明は、ディレクトリーツリーにACLパーミッションを迅速に設定する方法を提供する。この方法では、ディレクトリーツリーの親ノードに対するACLパーミッションだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードに対するACLパーミッションを引き継ぐ。親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するACLパーミッションを引き継ぐので、親ノードに対するACLパーミッションだけを設定すればよく、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にあるサブディレクトリー又はファイルごとにACLパーミッションを個別に設定する必要はない。その結果、ディレクトリーツリーにACLパーミッションを設定する効率が向上する。ACLパーミッションは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにACLパーミッションを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【0041】
本発明において提供される、ディレクトリーツリーにACLパーミッションを迅速に設定する方法によれば、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するACLパーミッションを引き継ぐ。したがって、親ノードに対応するディレクトリーの下にある任意のファイル又はサブディレクトリーがアクセスされている場合、最新のACLパーミッションを有する親ノードを検索するには、アクセス対象ファイル又はサブディレクトリーからルートノードまでのパス内にある全ノードに照会するだけでよい。アクセス対象ファイル又はサブディレクトリーに対するACLパーミッションが、最新のACLパーミッションを有する親ノードに対するACLパーミッションを引き継ぐので、最新のACLパーミッションを有する親ノードに対する最新のACLパーミッションは、アクセス対象ファイル又はサブディレクトリーのACL
パーミッションとして用いられてよい。
【0042】
本発明において提供される、ディレクトリーツリーにACLパーミッションを迅速に設定する方法によれば、グローバルアクセス制御リスト(Access Control Lists、ACL)が設定される。グローバルACLは、ディレクトリーツリーのルートノードのメタデータに格納されてよい。グローバルACLは、各ノードのパーミッション情報をディレクトリーツリーに格納するのに用いられる。具体的には、ディレクトリーツリー内の任意のノードのパーミッションレコードが、ノード自体のメタデータに個別に格納されることはないが、グローバルACLに一括して格納される。さらに、グローバルACLはグローバルバージョンパラメータを格納し、グローバルACLでは、更新されたグローバルバージョンパラメータの値が、パーミッションを受けて設定されるノードのパーミッションバージョン番号を示すのに用いられる。本発明において提供される、ディレクトリーツリーにACLパーミッションを迅速に設定する方法によれば、パーミッション設定要求を受信した後に、NASストレージシステム100は、制御装置210を用いてグローバルACLに照会してグローバルバージョンパラメータを取得し、グローバルバージョンパラメータを更新して現在のグローバルバージョンパラメータを取得し、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として現在のグローバルバージョンパラメータを用いる。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。
【0043】
図2に示すように、制御装置210は、インタフェース211及びインタフェース212を含み、インタフェース211はクライアントと通信するように構成される。インタフェース212は、ストレージアレイ220と通信するように構成される。制御装置210はさらに制御モジュール230を含む。制御モジュール230は、ディレクトリーツリー内のノードにアクセスパーミッションを設定するように構成され、またアクセス対象ノードのパーミッションレコードに対して認証を行うように構成される。制御モジュール230は、アクセス対象ノードのパーミッションレコードに対して認証を行う。認証に成功した後に、制御モジュール230はアクセス対象ノードのデータにアクセスする。
【0044】
図2に示すように、制御モジュール230はプロセッサ213及びメモリ214を含む。プロセッサ213は、ディレクトリーツリー内のノードにアクセスパーミッションを設定するように構成され、またアクセス対象ノードのパーミッションレコードに対して認証を行うように構成される。プロセッサ213は、アクセス対象ノードのパーミッションレコードに対して認証を行う。認証に成功した後に、プロセッサ213はアクセス対象ノードのデータにアクセスする。
【0045】
メモリ214は高速RA
Mを含み、さらに、不揮発性メモリ(non−volatile memory、NVM)、例えば、少なくとも1つのディスクメモリを含んでよい。メモリ214は、プログラムコードを格納できる機械可読媒体、例えば、ランダムアクセスメモリ(Random−Access Memory、RAM)、磁気ディスク、ハードディスク、ソリッドステートディスク(solid state disk、SSD)、又は不揮発性メモリであってよいことが理解されるであろう。
【0046】
メモリ214は、クライアントから送信される情報を一時的に格納するように構成される。
【0047】
プロセッサ213は、任意のコンピュータ処理デバイスであってよく、汎用の中央演算処理装置(CPU)、マイクロプロセッサ、プログラム可能型制御装置、特定用途向け集積回路(application−specific integrated circuit、ASIC)、又は前述の解決手段のプログラムの実行を制御する1つ若しくは複数の集積回路であってよい。
【0048】
以下では、本発明のNASストレージシステム100の各部分の機能を、
図2に示すNASストレージシステム100の構造を用いて詳細に説明する。
【0049】
本発明では、インタフェース211は、クライアントにより送信されるパーミッション設定要求を受信するように構成される。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内の、アクセスパーミッションを受けて設定されるノードにアクセスパーミッションを設定するよう要求するのに用いられる。
【0050】
パーミッション設定要求は、ディレクトリーツリー内の、アクセスパーミッションを受けて設定されるノードの、識別子及びパーミッションレコードを含む。パーミッション設定要求は、現在登録されているグローバルバージョンパラメータを更新して最新のグローバルバージョンパラメータを取得するよう、プロセッサ213に命令するのに用いられる。
【0051】
本発明では、プロセッサ213は、パーミッション設定要求に基づいて、パーミッションを受けて設定されるノードにアクセスパーミッションを設定するように構成される。プロセッサ213は、現在登録されているグローバルバージョンパラメータを取得し、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得するように構成される。グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表す。プロセッサ213はさらに、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として、最新のグローバルバージョンパラメータを用いるように構成される。パーミッションを受けて設定されるノードの全ての子ノードのパーミッションレコードが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。
【0052】
パーミッションを受けて設定されるノードが親ノードとしての機能を果たす場合、パーミッションを受けて設定されるノードにアクセスパーミッションが設定された後に、パーミッションを受けて設定されるノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、パーミッションを受けて設定されるノードに対するアクセスパーミッションを引き継ぐ。親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーは親ノードに対するACLパーミッションを引き継ぐので、パーミッションを受けて設定されるノードに対するACLパーミッションだけを設定すればよく、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にあるサブディレクトリー又はファイルごとにACLパーミッションを個別に設定する必要はない。その結果、パーミッションを受けて設定されるノードと同じアクセスパーミッションを有する全ての他の子ノードにアクセスパーミッションを繰り返し設定することが回避されるので、ACLパーミッションをディレクトリーツリーに設定する効率が向上する。本実装例では、ある値がグローバルバージョンパラメータの値を表すのに用いられる場合、値が大きくなるほど、アクセスパーミッションが新しいことを示す。
【0053】
さらに、本発明では、親ノードの下にある、親ノードと同じアクセスパーミッションを有する、全ての子ノードにアクセスパーミッションを繰り返し設定する必要はないので、アクセスパーミッションデータを格納するオーバーヘッドが減少する。
【0054】
本発明では、パーミッション設定要求はさらに、パーミッションを受けて設定されるノードのパス情報を含んでよく、パーミッションを受けて設定されるノードのパス情報は、ルートノードから、パーミッションを受けて設定されるノードまでの、アクセスブランチ上にある全ノードを示す。本発明では、グローバルACLが、アクセスパーミッションを受けて設定されるノードの識別子と、パス情報と、パーミッションレコードとの間の対応関係を格納するように設定される。グローバルACLはさらに、グローバルバージョンパラメータを含む。グローバルACLは、ディレクトリーツリーのルートノードのメタデータに格納される。アクセスパーミッションがノードに設定された後に、最新のグローバルバージョンパラメータが、パーミッションを受けて設定されるノードのパーミッションバージョン番号として用いられる。したがって、グローバルACLは、アクセスパーミッションを受けて設定されるノードのパーミッションバージョン番号も格納してよい。
【0055】
本発明では、インタフェース211はさらに、クライアントにより送信されるグローバルACL作成要求を受信するように構成される。グローバルACL作成要求は、グローバルACLを作成し、新たに作成されたグローバルACLに初期グローバルバージョンパラメータを設定するようプロセッサ213に命令するのに用いられる。
【0056】
プロセッサ213は、グローバルACL作成要求に基づいてグローバルACLを作成するように構成される。作成されたグローバルACLは、グローバルバージョンパラメータを格納する。作成されたグローバルACL内のグローバルバージョンパラメータの値が初期値であり、グローバルバージョンパラメータの初期値は0であるか、又は別の値若しくは文字であっても、別のシンボル識別子であってもよい。
【0057】
図3は、本発明の一実施形態によるディレクトリーツリーの組織形態についての概略図である。
図3に示すように、ディレクトリーツリーは、ルートノード310、中間ノード311、中間ノード312、リーフノードf1、リーフノードf2、及びリーフノードf3を含む。
【0058】
グローバルACLが作成された後、且つパーミッションを受けて設定されるノードにアクセスパーミッションが設定される前に、作成されたグローバルACLは表1に示されているであろう。表1に示すグローバルACLはグローバルバージョンパラメータを含み、新たに作成されたグローバルACLに設定される初期グローバルバージョンパラメータの値は、表1に示されている0である。表1に示すグローバルACLはさらに、ファイルシステムのディレクトリーツリーの各ノードの識別子と各ノードのパス情報とを格納するのに用いられる。
【0059】
あるノードのパスが当該ノードのパス内の全ノードの識別子を用いて判定される場合、当該ノードのパス情報には、ファイ
ルシステム内の各ノードの識別子が含まれる。例えば、各ノードは数字を用いて識別され、表1に示すルートノードの識別子は数字の310である。したがって、ルートノード310のパス情報は、数字の310をルートノードの識別子に含む。具体的には、作成されたグローバルACL内のグローバルバージョンパラメータと、ファイルシステム内の各ノードの識別子と、各ノードのパス情報との間の対応関係が表1に示されている。表1に示すように、グローバルACLはさらに、ACLパーミッションを受けて設定されるノードのパーミッションレコード及びパーミッションバージョン番号を格納するのに用いられてよい。グローバルACLが作成された後に、ACLパーミッションがディレクトリーツリーのノードに何も設定されていない場合、グローバルACLに格納されるパーミッションレコード及びパーミッションバージョン番号には何も入っていない。
【表1】
【0060】
各ノードのパスが一意である場合、ノードはノードのパス情報を用いて識別されてよい。したがって、グローバルバージョンパラメータと、ファイルシステム内の各ノードの識別子と、各ノードのパス情報との間の対応関係は、表2に示されているであろう。
【表2】
【0061】
グローバルACLが作成された後に、ユーザは、クライアントを用いて、ディレクトリーツリー内のあるノードにアクセスパーミッションを設定する。
【0062】
プロセッサ213はさらに、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードをグローバルACLに格納するように構成される。パーミッションを受けて設定されるノードのパーミッションバージョン番号は、更新されたグローバルバージョンパラメータの値である。
【0063】
プロセッサ213はさらに、アクセス対象ノードのデータにアクセスする前に、アクセス対象ノードに対するアクセスパーミッションを取得するように構成される。アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードからルートノードまでのパスに関する情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションである。最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションは、最新のパーミッションバージョン番号を有するノードのパーミッションレコードで示される。アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードのパス情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対応するパーミッションレコードで表される。
【0064】
本発明では、ストレージシステムは、グローバルACLを用いて、ディレクトリーツリーの全ノードのアクセスパーミッションデータを整理する。ストレージアレイ220に格納されたグローバルACLは、パーミッションを受けて設定されるノードに対するアクセスパーミッションを説明するのに用いられる。具体的には、グローバルACLは、更新されたグローバルバージョンパラメータの値を格納するのに用いられ、またパーミッションを受けて設定されるノードの識別子とパス情報とパーミッションレコードとの間の対応関係を格納するのに用いられる。パーミッションを受けて設定されるノードのパーミッションバージョン番号は、更新されたグローバルバージョンパラメータの値である。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは対応関係を形成し、当該対応関係はグローバルACLに格納されているので、ディレクトリーツリー内の、パーミッションを受けて設定されるノードの、識別子、パス情報、及びパーミッションレコードは、ディレクトリーツリーのルートノードのメタデータに索引を付けるだけで取得することができる。これにより、ディレクトリーツリーのノードのパーミッションレコード及びパス情報を取得するための、扱いやすいアクセスチャネルが提供される。
【0065】
図4は、本発明の一実施形態によるデータアクセス方法のフローチャートである。
図4に示すように、本実施形態において提供される
データアクセス方法は、
図2に示すNASストレージシステム100によって実行され、具体的には、
図2に示すNASストレージシステム100の制御モジュール230又は制御モジュール230のプロセッサ213によって実行されてよい。ディレクトリーツリーが作成された後に、作成されたディレクトリーツリーにアクセスパーミッションを設定し、次いで、作成されたディレクトリーツリー内のアクセス対象ノードのデータにアクセスする方法が、詳細に説明されており、具体的には以下に挙げる段階を含む。
【0066】
S401:NASストレージシステム100が、クライアントにより送信されるグローバルACL作成要求を受信する。
【0067】
本発明では、グローバルACL作成要求は、グローバルACLを作成するようNASストレージシステム100に命令するのに用いられる。
【0068】
ユーザが、クライアントを用いて、グローバルACL作成要求をNASストレージシステム100に送信してよい。グローバルACL作成要求は、ディレクトリーツリーのルートノードの識別子を含む。
【0069】
グローバルACL作成要求の前述の実装例に基づいて、別の実装例では、グローバルACL作成要求は、ディレクトリーツリーの各ノードのパス情報と、各ノードの識別子とを含んでよい。各ノードのパス情報は、ルートノードからノードまでのアクセスブランチ上にある全ノードを示す、すなわち、ルートノードからノードまでのパスを示すのに用いられる。このパスに従って、ディレクトリーツリー内のノードの位置と、ディレクトリーツリー内のパスにある中間ノードの位置とを見つけることができる。パス内のルートノードを除く各ノードは1つの親ノードに属し、パス内のリーフノードを除く各ノードはノード自体の子ノードを有し、リーフノードを除く各ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルが、異なるディレクトリーレベルに属する。
【0070】
パス内の各ノードの識別子がノードのパス情報を表すのに用いられる場合、グローバルACL作成要求は、ディレクトリーツリーの各ノードのパス情報だけを含んでよい。
【0071】
S402:NASストレージシステム100はグローバルACLを作成する。具体的には、NASストレージシステム100は、グローバルバージョンパラメータを作成し、当該グローバルバージョンパラメータをグローバルACLに格納し、当該グローバルバージョンパラメータの値が初期値である。
【0072】
任意選択の一実装例では、段階S401で説明される、グローバルACL作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含み得る実装例に基づいて、NASストレージシステム100は、ディレクトリーツリーの各ノードのパス情報とノードの識別子との間の対応関係をグローバルACLに格納する。表3に示すグローバルACLが、ディレクトリーツリーの各ノードのパス情報とノードの識別子との対応関係を含む。表3に示すグローバルACLはさらに、グローバルバージョンパラメータを含む。
図3に示すディレクトリーツリーに基づいて、この段階で作成されるグローバルACLのコンテンツが、表3に示すように実行される。
【表3】
【0073】
パス内の各ノードの識別子がノードのパス情報を表すのに用いられる場合、グローバルACLは、各ノードのグローバルバージョンパラメータ及びパス情報を含む。
【0074】
S403:NASストレージシステム100は、パーミッション設定要求を受信する。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。
【0075】
具体的には、ユーザは、クライアントを用いてパーミッション設定要求を送信する。
【0076】
パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。
図3に示すディレクトリーツリーに基づいて、例えば、中間ノード311は、パーミッションを受けて設定されるノードである。
図3に示すように、パーミッションレコードはいくつかのACEを含み、各ACEは、制御タイプ(type)、パーミッション(mask)、及びユーザ識別子(user id)などのコンテンツを含む。制御タイプは、許可(allowed)及び拒否(denied)などを含む。ユーザ識別子(user id)は、ユーザ又はユーザのタイプを示す。パーミッション(mask)は、対応するユーザのアクセスパーミッションを示し、通常、マスク方式で表される。
【0077】
段階S401の実装例に基づいて、新たに作成されたグローバルACLは、NASストレージシステム100により受信されたグローバルACL作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含む場合、ディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含む。したがって、パーミッション設定要求を受信した後に、NASストレージシステム100は、パーミッションを受けて設定されるノードのパーミッションレコードをグローバルACLに格納する。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは、対応関係を形成する。
【0078】
段階S401の実装例に基づいて、新たに作成されたグローバルACLは、NASストレージシステム100により受信されたグローバルACL作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない場合、ディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない。したがって、本発明の段階S403でのパーミッション設定要求についての任意選択の一実装例が、パーミッション設定要求がパーミッションを受けて設定されるノードの識別子及びパーミッションレコードだけでなく、パーミッションを受けて設定されるノードのパス情報も含むということであり、パーミッションを受けて設定されるノードのパス情報は、ルートノードから、パーミッションを受けて設定されるノードまでの、アクセスブランチ上にある全ノードを示す。したがって、パーミッション設定要求を受信した後に、NASストレージシステム100は、パーミッションを受けて設定されるノードのパス情報をグローバルACLに格納する。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは、対応関係を形成する。
【0079】
段階S401の実装例に基づいて、新たに作成されたグローバルACLは、NASストレージシステム100により受信されたグローバルACL作成要求がディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない場合、ディレクトリーツリーの各ノードのパス情報と各ノードの識別子とを含まない。したがって、任意選択の一実装例では、パーミッションを受けて設定されるノードの識別子と、パス情報と、パーミッションレコードとの間の対応関係は、パーミッションを受けて設定されるノードのメタデータに格納される。
【0080】
S404:NASストレージシステム100は、グローバルバージョンパラメータを取得する。
【0081】
具体的には、NASストレージシステム100は、グローバルACLに照会して、現在登録されているグローバルバージョンパラメータを取得してよい。
【0082】
グローバルアクセス制御リストは、ディレクトリーツリーのルートノードのメタデータに格納されており、グローバルアクセス制御リストはグローバルバージョンパラメータを格納する。表3に示すディレクトリーツリーのグローバルACLのコンテンツに基づいて、作成されたグローバルバージョンパラメータの値が0であることが、段階S402でNASストレージシステム100により作成されたグローバルACLのコンテンツに基づいて判定される。
【0083】
S405:NASストレージシステム100は、現在登録されているグローバルバージョンパラメータの値を更新して、最新のグローバルバージョンパラメータを取得する。最新のグローバルバージョンパラメータは、パーミッションを受けて設定されるノードのパーミッションバージョン番号として用いられる。
【0084】
本発明では、パーミッションを受けて設定されるノードのパーミッションバージョン番号は、グローバルACLに格納されてよい。別の実装例では、パーミッションを受けて設定されるノードのパーミッションバージョン番号は代替的に、パーミッションを受けて設定されるノードのメタデータに格納されてもよい。
【0085】
グローバルバージョンパラメータが漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表す。NASストレージシステム100は、グローバルバージョンパラメータの値を更新する。具体的には、NASストレージシステム100は、事前設定された粒度に基づいて、グローバルバージョンパラメータの値を増やしても減らしてもよい。事前設定された粒度は1であってもよく、0より大きい別の値であってもよい。具体的には、本実装例では、NASストレージシステム100がグローバルバージョンパラメータの値を2だけ増やした後に、取得されるグローバルバージョンパラメータの値は2である。
【0086】
S406:NASストレージシステム100は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納する。パーミッションを受けて設定されるノードのパーミッションバージョン番号は、更新された最新のグローバルバージョンパラメータの値である。パーミッションを受けて設定されるノードの子ノー
ドが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。
【0087】
パーミッションを受けて設定されるノードの識別子及びパーミッションレコードは、グローバルACLに格納される。別の実装例では、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードは代替的に、パーミッションを受けて設定されるノードのメタデータに格納されてもよい。
【0088】
パーミッションを受けて設定されるノードのパーミッションバージョン番号は、グローバルACLに格納される。別の実装例では、パーミッションを受けて設定されるノードのパーミッションバージョン番号は代替的に、パーミッションを受けて設定されるノードのメタデータに格納されてもよい。
【0089】
本実装例では、指定されたグローバルACLは、更新されたグローバルバージョンパラメータの値、並びにパーミッションを受けて設定されるノードの識別子、パーミッションバージョン番号、及びパーミッションレコードを含む。例えば、グローバルACLが設定された後に、グローバルACLのコンテンツが表4に示されている。指定されたグローバルACLは、更新されたグローバルバージョンパラメータの値(2)と、パーミッションを受けて設定されるノードのパーミッションバージョン番号(2)及びパーミッションレコード(ACE1、ACE2、…、及びACEn)とを含む。
【表4】
【0090】
本発明は、ディレクトリーツリーにACLパーミッションを迅速に設定する方法を提供する。この方法では、ディレクトリーツリーの親ノードに対するACLパーミッションだけが設定される。例えば、表4の中間ノード311に対するACLパーミッションが設定される。したがって、表4に示す中間ノード311などの親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリー、例えば、表4に示す中間ノード312に対応するサブディレクトリーと、リーフノードf1、リーフノードf2、及びリーフノードf3に対応するファイルとが、親ノード(表4に示す中間ノード311)に対するACLパーミッションを引き継ぐ。親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するACLパーミッションを引き継ぐので、親ノードに対するACLパーミッションだけを設定すればよく、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にあるサブディレクトリー又はファイルごとにACLパーミッションを個別に設定する必要はない。その結果、ディレクトリーツリーにACLパーミッションを設定する効率が向上する。ACLパーミッションは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにACLパーミッションを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【0091】
S407:NASストレージシステム100は、データアクセス要求を受信する。
【0092】
ユーザは、クライアントを用いてデータアクセス要求を送信する。データアクセス要求は、ディレクトリーツリー内のアクセス対象ノードのデータにアクセスするよう命令するのに用いられ、データアクセス要求は、ディレクトリーツリー内のアクセス対象ノードの識別子を含む。アクセスを要求されたデータはアクセス対象ノードに属し、アクセス対象ノードは、作成されたディレクトリーツリーの任意のノードである。パーミッションレコードが、ディレクトリーツリー内の全て又は一部のノードに設定される。本発明では、パーミッションレコードで設定されていないノードのパーミッションバージョン番号が、デフォルトによる最小バージョン番号とみなされる。
【0093】
S408:NASストレージシステム100は、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する。
【0094】
具体的には、NASストレージシステム100は、アクセス対象ノードのグローバルACL又はメタデータに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する。アクセス対象ノードのパス情報は、アクセス対象ノード及びアクセス対象ノードの全ての親ノードを示すのに用いられる。
【0095】
ユーザがデータにアクセスする前に、グローバルACLは照会を受ける必要があり、その結果、当該データが属するアクセス対象ノードに対するアクセスパーミッションが取得される。
【0096】
S409:NASストレージシステム100は、パス情報で示される全ノードのパーミッションバージョン番号に照会し、最新のパーミッションバージョン番号を有するノードを判定し、最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得し、パーミッションレコードをアクセス対象ノードに対するアクセスパーミッションとして用いる。
【0097】
NASストレージシステム100により取得される、最新のパーミッションバージョン番号を有するノードのパーミッションレコードは、アクセス対象ノードに対するアクセスパーミッションである。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新である場合、アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードの登録されたパーミッションレコードである。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新ではない場合、アクセス対象ノードに対するアクセスパーミッションは、最新のパーミッションバージョン番号を有するアクセス対象ノードの親ノードに対応するパーミッションレコードを引き継ぐ。
【0098】
具体的には、本発明において、パーミッションバージョン番号が数字で表される場合、NASストレージシステム100は、パス内の全ノードのパーミッションバージョン番号に照会して、最大のパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する。
【0099】
ユーザがデータにアクセスする前に、ユーザは、データが属するノードに対するアクセスパーミッションを取得して、当該データに対するアクセスパーミッションを取得する必要がある。
【0100】
本発明では、アクセスパーミッションがディレクトリーツリー内の全て又は一部のノードに設定され、ノードに対するアクセスパーミッションが、パーミッションレコードを用いて説明される。
【0101】
この段階では、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する段階は、具体的には、NASストレージシステム100が、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する段階を含む。
【0102】
本発明では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが、異なるディレクトリーレベルに属している。ディレクトリーツリー内の各ノードのパス情報で示される全ノードのうち、親ノードのディレクトリーレベルが親ノードに属する子ノードのディレクトリーレベルより高い。アクセス対象ノードのパス情報で示される全ノードにおいて、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。
【0103】
NASストレージシステム100が、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する1つの事例は、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから2つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定すること、及びアクセス対象ノードのパス情報で示される全ノードのうち、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定することである。
【0104】
ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから2つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定することは具体的には、ルートノードから開始してディレクトリーレベルの降順で、アクセス対象ノードのパス情報で示される全ノードから現在のノードを1つ選択し、アクセス対象ノードのパス情報で示される全ノードから毎回、現在のノードのディレクトリーレベルより1つ低いレベルの比較対象ノードを1つ選択し、現在のノードのパーミッションバージョン番号と比較対象ノードのパーミッションバージョン番号とを比較して、より新しいパーミッションバージョン番号を有するノードを判定することである。アクセス対象ノードのパス情報で示される全ノードのうち、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードがより新しいパーミッションバージョン番号を有するノードであると判定することは具体的には、現在のノードのパーミッションバージョン番号が
最新のパーミッションバージョン番
号である場合、現在のノードを現在のノードとして引き続き用い、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして、
現在のノードのディレクトリーレベルより1つ低いレベルのノードを1つ選択し、現在のノードのパーミッションバージョン番号と新しい比較対象ノードのパーミッションバージョン番号とを比較することである。比較対象ノードのパーミッションバージョン番号が
最新のパーミッションバージョン番
号である場合、比較対象ノードが新しい現在のノードとして選択され、新しい現在のノードのディレクトリーレベルより1つ低いレベルのノードが1つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、これらのパーミッションバージョン番号が比較され、ディレクトリーツリーのアクセス対象ノードのパーミッションバージョン番号が比較されるまで、判定される現在のノードが最新のパーミッションバージョン番号を有するノードである。
【0105】
現在のノードのパーミッションバージョン番号が比較対象ノードのパーミッションバージョン番号と同じである場合、現在のノードは、現在のノード及び比較対象ノードの中でより新しいパーミッションバージョン番号を有するノードとして用いられ、現在のノードは現在のノードとして引き続き用いられ、
現在のノードのディレクトリーレベルより1つ低いレベルのノードが1つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、現在のノードのパーミッションバージョン番号は新しい比較対象ノードのパーミッションバージョン番号と比較され、判定される現在のノードが、ディレクトリーツリーのアクセス対象ノードのパーミッションバージョン番号が比較されるまで、最新のパーミッションバージョン番号を有するノードである。
【0106】
NASストレージシステム100が、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する別の事例は、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回2つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードのパス情報で示される全ノードのうち、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定することである。
【0107】
アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから2つのノードのパーミッションバージョン番号を毎回選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定することは具体的には、アクセス対象ノードから開始してディレクトリーレベルの昇順で、アクセス対象ノードのパス情報で示される全ノードから現在のノードを1つ選択し、アクセス対象ノードのパス情報で示される全ノードから毎回、現在のノードのディレクトリーレベルより1つ高いレベルの比較対象ノードを1つ選択し、現在のノードのパーミッションバージョン番号と比較対象ノードのパーミッションバージョン番号とを比較して、より新しいパーミッションバージョン番号を有するノードを判定することである。アクセス対象ノードのパス情報で示される全ノードのうち、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定することは具体的には、現在のノードのパーミッションバージョン番号が
最新のパーミッションバージョン番
号である場合、現在のノードを現在のノードとして引き続き用い、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして、比較対象ノードのディレクトリーレベルより1つ高いレベルのノードを1つ選択し、現在のノードのパーミッションバージョン番号と新しい比較対象ノードのパーミッションバージョン番号とを比較することである。比較対象ノードのパーミッションバージョン番号がより新しいパーミッションバージョン番号を有するノードである場合、比較対象ノードは新しい現在のノードとして選択され、新しい現在のノードのディレクトリーレベルより1つ高いレベルのノードが1つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、これらのパーミッションバージョン番号が比較され、判定される現在のノードが、ディレクトリーツリーのルートノードのパーミッションバージョン番号が比較されるまで、最新のパーミッションバージョン番号を有するノードである。
【0108】
現在のノードのパーミッションバージョン番号が比較対象ノードのパーミッションバージョン番号と同じである場合、現在のノードは、現在のノード及び比較対象ノードの中でより新しいパーミッションバージョン番号を有するノードとして用いられ、現在のノードは現在のノードとして引き続き用いられ、
現在のノードのディレクトリーレベルより1つ高いレベルのノードが1つ、アクセス対象ノードのパス情報で示される全ノードから新しい比較対象ノードとして選択され、現在のノードのパーミッションバージョン番号は新しい比較対象ノードのパーミッションバージョン番号と比較され、判定される現在のノードが、ディレクトリーツリーのルートノードのパーミッションバージョン番号が比較されるまで、最新のパーミッションバージョン番号を有するノードである。
【0109】
S410:NASストレージシステム100は、アクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、クライアントは、認証に成功した後にアクセス対象ノードのデータにアクセスする。アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードからルートノードまでのパスに関する情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションである。
【0110】
本実装例では、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが親ノードに対するACLパーミッションを引き継ぐので、親ノードに対応するディレクトリーの下にある任意のファイル又はサブディレクトリーがアクセスされているときに、最新のACLパーミッションを有する親ノードを検索するのに、アクセス対象のファイル又はサブディレクトリーからルートノードまでのパス内の全ノードに照会するだけでよい。例えば、表4に示す中間ノード312がアクセスされている場合、中間ノード312に対応するサブディレクトリーに対するACLパーミッションが、最新のACLパーミッションを有する親ノードに対するACLパーミッションを引き継ぐので、すなわち、中間ノード311が中間ノード312の親ノードとしての機能を果たすので、中間ノード312は最新のACLパーミッションを有し、したがって、最新のACLパーミッションを有する親ノードに対する最新のACLパーミッションは、アクセス対象のファイル又はサブディレクトリーのACL
パーミッションとして用いられてよい。
【0111】
任意選択の一実装例では、
図4に示す前述の実装例において、段階S409の後に、すなわち、NASストレージシステム100がパス情報で示される全ノードのパーミッションバージョン番号に照会し、最新のパーミッションバージョン番号を有するノードと最新のパーミッションバージョン番号を有するノードのパーミッションレコードを判定した後に、NASストレージシステム100は、アクセス対象ノードの
パーミッションバージョン番号及びパーミッションレコードをグローバルACLに格納してよい。アクセス対象ノード
のパーミッションバージョン番号が、段階S409で判定される最新のパーミッションバージョン番号であり、アクセス対象ノードのパーミッションレコードは、段階S409で判定される最新のパーミッションバージョン番号を有するノードのパーミッションレコードである。
【0112】
本発明では、NASストレージシステム100は、異なるルートノードを含む複数のディレクトリーツリーに対するグローバルACL識別子を個別に構成する。グローバルACL識別子はディレクトリーツリーのルートノードの識別子を含み、異なるルートノードを含む複数のディレクトリーツリーは、異なるルートノードの識別子を用いて区別される。したがって、異なるルートノードを含む複数のディレクトリーツリーに対応する異なるグローバルACLが、これらのディレクトリーツリーのルートノードの識別子を用いて区別されてよい。
【0113】
グローバルACL識別子を構成する別の実装例では、グローバルACL識別子は代替的に、ディレクトリーツリーのルートノードの識別子とグローバルACLバージョン情報との組み合わせであってもよい。グローバルACLバージョン情報は、ルートノードを含むディレクトリーツリーの複数のグローバルACLバージョンを識別するのに用いられる。子ノードがディレクトリーツリーに追加された後、又はディレクトリーツリーから削除された後に、NASストレージシステム100は、この変更の前に存在したディレクトリーツリーのグローバルACLをバックアップする。したがって、ファイルシステムは、同じルートノードを含む複数のディレクトリーツリーに対応する複数のバージョンを有し、同じルートノードを含む複数のディレクトリーツリーに対応する複数のバージョンは、ノードがディレクトリーツリーに追加される前に存在したグローバルACLバージョン、又はノードがディレクトリーツリーに追加された後に存在する更新されたグローバルACLバージョン、又はノードがディレクトリーツリーから削除される前に存在したグローバルACLバージョン、又はノードがディレクトリーツリーから削除された後に存在する更新されたグローバルACLバージョン、又は異なる時間に同じディレクトリーツリーに対してバックアップされる少なくとも1つのグローバルACLバージョンを含む。本発明では、複数のグローバルACLバージョンが、グローバルACLのこの後の復元を容易にするためにバックアップされる。
【0114】
図4に示す実施形態に基づいて、段階S402の後に、すなわち、グローバルACLが作成された後、又はディレクトリーツリーが作成された後に、ユーザが、作成されたACLを有するディレクトリーツリー、又は作成されたグローバルACLを有していないディレクトリーツリーを変更する必要がある場合、例えば、新しいディレクトリーノード又はファイルノードをディレクトリーツリーに追加する必要がある場合、本発明は、アクセスパーミッションを設定する方法を提供して、新たに追加されたディレクトリーノード又はファイルノードにアクセスパーミッションを設定する。以下では、既存のディレクトリーツリーに新たに追加されたノードにアクセスパーミッションを設定する方法を詳細に説明する。
図5は、本発明の一実施形態による、新たに追加されたノードにアクセスパーミッションを設定する方法のフローチャートである。
図5に示すように、本実施形態において提供される、新たに追加されたノードにアクセスパーミッションを設定する方法は、
図2に示すNASストレージシステム100により実行され、具体的には、
図2に示すNASストレージシステム100の制御モジュール230又は制御モジュール230のプロセッサ213により実行されてよく、また具体的には以下に挙げる段階を含む。
【0115】
S510:NASストレージシステム100はノード作成要求を受信する。
【0116】
ユーザが、クライアントを用いて、ノード作成要求をNASストレージシステム100に送信してよい。
【0117】
ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、新たに追加されたノードのパス情報は、ルートノードから新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す。新たに追加されたノードは、ディレクトリーノードであってもよく、又はファイルノードであってもよい。例えば、
図3に示すディレクトリーツリーに基づいて、新たに追加されたノードの識別子は313であり、新たに追加されたノードのパスが、
【数1】
である。新たに追加されたノードのパスに基づいて、新たに追加されたノードが中間ノード311の下に新たに追加された子ノード313であると判定される。
【0118】
新たに追加されたノードがルートノードである場合、ディレクトリーツリーのグローバルACL識別子が、新たに追加されたルートノードの識別子を含む識別子に更新される。ディレクトリーツリーの新たに追加されたルートノードの前に存在したルートノードが、新たに追加されたルートノードの子ノードに変更される。
【0119】
別の実装例では、パス内にある各ノードの識別子がノードのパスを表すのに用いられる場合、ノード作成要求は、新たに追加されたノードのパスがパス内の各ノードの識別子を含むので、新たに追加されたノードのパスだけを含んでよい。新たに追加されたノードの識別子は、新たに追加されたノードのパスに基づいて判定されてよい。
【0120】
NASストレージシステム100がクライアントにより送信されるノード作成要求を受信した後に、NASストレージシステム100は現在のグローバルACLをバックアップしてよく、その結果、ユーザは、異なるグローバルACLバージョンに基づいて、ディレクトリーツリーに対するアクセスパーミッションを復元できる。
【0121】
S520:NASストレージシステム100は、新たに追加されたノードの識別子とパス情報との間の対応関係を格納する。
【0122】
具体的には、NASストレージシステム100は、新たに追加されたノードの識別子とパス情報との間の対応関係をグローバルACLに格納する。
【0123】
任意選択で、NASストレージシステム100は、新たに追加されたノードの識別子とパス情報との間の対応関係を、新たに追加されたノードのメタデータに格納する。
【0124】
別の実装例では、各ノードの識別子がノードのパス情報を表すのに用いられる場合、NASストレージシステム100は、新たに追加されたノードのパス情報を、グローバルACL、又は新たに追加されたノードのメタデータに格納する。したがって、各ノードの識別子がノードのパス情報を表すのに用いられる実装例では、ノードがパスで識別されてよく、その結果、グローバルACLの記憶領域が節約される。
【0125】
S530:NASストレージシステム100は、新たに追加されたノードのパーミッションバージョン番号をグローバルACLに格納する。新たに追加されたノードのパーミッションバージョン番号の値が、事前設定されたパーミッションバージョン番号の初期値である。
【0126】
具体的には、NASストレージシステム100は、新たに追加されたノードのパーミッションバージョン番号をグローバルACLに格納する。
【0127】
任意選択で、NASストレージシステム100は、新たに追加されたノードのパーミッションバージョン番号を、新たに追加されたノードのメタデータに格納する。
【0128】
本発明では、事前設定されたパーミッションバージョン番号の初期値は0に設定されている。新たに追加されたノードの事前設定されたパーミッションバージョン番号の初期値は、グローバルバージョンパラメータの初期値より小さい又はこれと等しい。新たに追加されたノードのパーミッションバージョン番号はグローバルバージョンパラメータの初期値より小さい又はこれと等しいので、新たに追加されたノードのパス情報で示される全ノードのうち、アクセスパーミッションを受けて設定されるノードのパーミッションバージョン番号は、新たに追加されたノードのパーミッションバージョン番号より新しい。したがって、新たに追加されたノードは、新たに追加されたノードのパス情報で示される全ノードの中で最新のパーミッションバージョン番号を有するノードに対するアクセスパーミッションを引き継ぐ。したがって、新たに追加されたノードにアクセスパーミッションが設定される場合、新たに追加されたノードに対するアクセスパーミッションのアクセスレコードを格納する必要はないので、新たに追加されたノードにアクセスパーミッションを設定する効率が向上し、新たに追加されたノードに対するアクセスパーミッションを格納するオーバーヘッドが減少する。
【0129】
新しいノードが追加された後に、新たに追加されたノードのディレクトリーツリーのグローバルACLのコンテンツが、段階S520及びS530で更新される。グローバルACLの更新後のコンテンツが表5に示されている。
【表5】
【0130】
図4に示す実施形態に基づいて、段階S406の後に、ノードがディレクトリーツリーに追加される場合には、
図5に示す各段階を実行することによって、新たに追加されたノードにアクセスパーミッションが設定された後に、グローバルACLのコンテンツが表6に示されている。
【表6】
【0131】
図5に示す実施形態に基づいて、ノード作成要求はさらに、新たに追加されたノードに含まれるデータを含む。段階S510の後に、NASストレージシステム100は、データをストレージアレイ220に格納する。
【0132】
図6は、本発明の一実施形態によるファイルシステムパーミッション設定装置の構造図である。本発明の本実施形態において提供されるファイルシステムパーミッション設定装置は、ストレージシステムに適用され、例えば、NASストレージシステム100に適用されてよい。
図6に示すように、本実施形態において提供されるファイルシステムパーミッション設定装置60が、受信モジュール61と、取得モジュール62と、処理モジュール63とを含む。受信モジュール61と取得モジュール62とは接続され、処理モジュール63は、取得モジュール62と受信モジュール61とに個別に接続される。
【0133】
本発明では、受信モジュール61は、パーミッション設定要求を受信するように構成される。パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む。
【0134】
本実装例では、受信モジュール61がクライアントにより送信されるパーミッション設定要求を受信する機能が、NASストレージシステム100のインタフェース211を用いて実装されてよい。パーミッション設定要求の具体的な実装詳細については、
図4に示す段階S403の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0135】
本発明では、取得モジュール62は、現在登録されているグローバルバージョンパラメータを取得するように構成される。
【0136】
本実装例では、取得モジュール62が現在登録されているグローバルバージョンパラメータを取得する機能が、NASストレージシステム100のインタフェース212を用いて実装されてもよく、又はNASストレージシステム100のプロセッサ213若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62が現在登録されているグローバルバージョンパラメータを取得する具体的な実装詳細については、
図4に示す段階S404の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0137】
本発明では、処理モジュール63は、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得し、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納するように構成される。最新のグローバルバージョンパラメータは、パーミッションを受けて設定されるノードのパーミッションバージョン番号として用いられる。グローバルバージョンパラメータが漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表し、パーミッションを受けて設定されるノードの子ノー
ドが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。
【0138】
本実装例では、処理モジュール63が現在登録されているグローバルバージョンパラメータを更新して最新のグローバルバージョンパラメータを取得する機能が、NASストレージシステム100のプロセッサ213又は制御モジュール230を用いて実装されてよい。処理モジュール63が現在登録されているグローバルバージョンパラメータを更新して最新のグローバルバージョンパラメータを取得する具体的な実装詳細については、
図4に示す段階S405の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0139】
本実装例では、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを処理モジュール63が格納する機能が、NASストレージシステム100のプロセッサ213又は制御モジュール230を用いて実装されてよい。処理モジュール63が、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として最新のグローバルバージョンパラメータを用いる具体的な実装詳細については、
図4に示す段階S406の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0140】
本発明において提供されるファイルシステムパーミッション設定装置によれば、ディレクトリーツリーのノードに対するアクセスパーミッションのパーミッションレコードが迅速に設定される。更新されたグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表すのに用いられる。パーミッションを受けて設定されるノードの子ノードのパーミッションレコードは、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。したがって、ディレクトリーツリーの親ノードのパーミッションレコードだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードのパーミッションレコードを引き継ぐので、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にある各サブディレクトリー又は各ファイルのパーミッションレコードを個別に設定する必要はない。その結果、ディレクトリーツリーにアクセスパーミッションを設定する効率が向上する。パーミッションレコードは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにパーミッションレコードを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【0141】
任意選択の一実装例では、取得モジュール62はさらに、グローバルアクセス制御リストに照会して、現在登録されているグローバルバージョンパラメータを取得するように構成される。グローバルアクセス制御リストは、ディレクトリーツリーのルートノードのメタデータに格納されており、グローバルアクセス制御リストはグローバルバージョンパラメータを格納する。本実装例では、取得モジュール62がグローバルアクセス制御リストに照会して現在登録されているグローバルバージョンパラメータを取得する機能が、NASストレージシステム100のインタフェース212を用いて実装されてもよく、又はNASストレージシステム100のプロセッサ213若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62がグローバルアクセス制御リストに照会して現在登録されているグローバルバージョンパラメータを取得する具体的な実装詳細については、
図4に示す段階S404の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0142】
任意選択の一実装例では、処理モジュール63はさらに、グローバルアクセス制御リストを作成し、新たに作成されたグローバルアクセス制御リストに初期グローバルバージョンパラメータを設定するように構成される。本実装例では、処理モジュール63がグローバルアクセス制御リストを作成し、新たに作成されたグローバルアクセス制御リストに初期グローバルバージョンパラメータを設定する機能が、NASストレージシステム100のプロセッサ213又は制御モジュール230を用いて実装されてよい。処理モジュール63がグローバルアクセス制御リストを作成し、新たに作成されたグローバルアクセス制御リストに初期グローバルバージョンパラメータを設定する具体的な実装詳細については、
図4に示す段階S401及びS402の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0143】
任意選択の一実装例では、パーミッション設定要求はさらに、パーミッションを受けて設定されるノードのパス情報を含み、パーミッションを受けて設定されるノードのパス情報は、ルートノードから、パーミッションを受けて設定されるノードまでの、アクセスブランチ上にある全ノードを示す。処理モジュール63はさらに、パーミッションを受けて設定されるノードのパス情報をグローバルアクセス制御リストに格納するように構成される。パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは、対応関係を形成する。
【0144】
本実装例では、処理モジュール63が、パーミッションを受けて設定されるノードのパス情報をグローバルアクセス制御リストに格納する機能が、NASストレージシステム100のプロセッサ213又は制御モジュール230を用いて実装されてよい。処理モジュール63が、パーミッションを受けて設定されるノードのパス情報をグローバルアクセス制御リストに格納する具体的な実装詳細については、
図4に示す段階S403において、ディレクトリーツリーのノードのパス情報を格納する具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0145】
パーミッションを受けて設定されるノードの識別子、パス情報、及びパーミッションレコードは対応関係を形成し、当該対応関係はグローバルアクセス制御リストに格納されているので、ディレクトリーツリー内の、パーミッションを受けて設定されるノードの、識別子、パス情報、及びパーミッションレコードは、ディレクトリーツリーのルートノードのメタデータに索引を付けるだけで取得することができる。これにより、ディレクトリーツリーのノードのパーミッションレコード及びパス情報を取得するための、扱いやすいアクセスチャネルが提供される。
【0146】
任意選択の一実装例では、受信モジュール61はさらに、データアクセス要求を受信するように構成される。データアクセス要求は、アクセス対象ノードの識別子を含む。
【0147】
本実装例では、受信モジュール61がクライアントにより送信されるデータアクセス要求を受信する機能が、NASストレージシステム100のインタフェース211を用いて実装されてよい。データアクセス要求の具体的な実装詳細については、
図4に示す段階S407の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0148】
取得モジュール62はさらに、アクセス対象ノードの識別子に基づいて、アクセス対象ノードに対するアクセスパーミッションを取得するように構成される。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新である場合、アクセス対象ノードに対するアクセスパーミッションは、アクセス対象ノードの登録されたパーミッションレコードである。アクセス対象ノードのパーミッションバージョン番号が、アクセス対象ノード及びアクセス対象ノードの全ての親ノードのパーミッションバージョン番号の中で最新ではない場合、アクセス対象ノードに対するアクセスパーミッションは、最新のパーミッションバージョン番号を有するアクセス対象ノードの親ノードに対応するパーミッションレコードを引き継ぐ。
【0149】
本実装例では、取得モジュール62がアクセス対象ノードの識別子に基づいて、アクセス対象ノードに対するアクセスパーミッションを取得する機能が、NASストレージシステム100のインタフェース212を用いて実装されてもよく、又はNASストレージシステム100のプロセッサ213若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62がアクセス対象ノードの識別子に基づいて、アクセス対象ノードに対するアクセスパーミッションを取得する具体的な実装詳細については、
図4に示す段階S408及びS409の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0150】
処理モジュール63はさらに、アクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、認証に成功した後にアクセス対象ノードのデータにアクセスするように構成される。
【0151】
本実装例では、処理モジュール63がアクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、認証に成功した後にアクセス対象ノードのデータにアクセスする機能が、NASストレージシステム100のプロセッサ213又は制御モジュール230を用いて実装されてよい。処理モジュール63がアクセス対象ノードに対するアクセスパーミッションに基づいて認証を行い、認証に成功した後にアクセス対象ノードのデータにアクセスする具体的な実装詳細については、
図4に示す段階S410の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0152】
任意選択の一実装例では、取得モジュール62はさらに、グローバルアクセス制御リストに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定し、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会し、最新のパーミッションバージョン番号を有するノードを判定し、最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得するように構成される。アクセス対象ノードのパス情報は、アクセス対象ノード及びアクセス対象ノードの全ての親ノードを示すのに用いられ、最新のパーミッションバージョン番号を有するノードのパーミッションレコードは、アクセス対象ノードに対するアクセスパーミッションである。
【0153】
本実装例では、取得モジュール62がグローバルアクセス制御リストに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する機能が、NASストレージシステム100のストレージアレイ220を用いて実装されてもよく、又はNASストレージシステム100の制御装置210、プロセッサ213、若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62がグローバルアクセス制御リストに照会し、アクセス対象ノードの識別子に基づいてアクセス対象ノードのパス情報を判定する具体的な実装詳細については、
図4に示す段階S408の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0154】
本実装例では、取得モジュール62がアクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する機能が、NASストレージシステム100のストレージアレイ220を用いて実装されてもよく、又はNASストレージシステム100の制御装置210、プロセッサ213、若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62がアクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号に照会して、最新のパーミッションバージョン番号を有するノードを判定する具体的な実装詳細については、
図4に示す段階S409の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0155】
本実装例では、取得モジュール62が最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得する機能が、NASストレージシステム100のインタフェース212を用いて実装されてもよく、又はNASストレージシステム100のプロセッサ213若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62が最新のパーミッションバージョン番号を有するノードのパーミッションレコードを取得する具体的な実装詳細については、
図4に示す段階S409の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0156】
任意選択で、本発明のモジュール及び構成要素が一緒に統合されてもよく、又は個別に配置されてもよい。
【0157】
任意選択の一実装例では、取得モジュール62はさらに、事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定するように構成される。事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定することは、ディレクトリーツリー内のノードについてのアクセスパーミッション配分ルールに基づいてトラバーサルルールを事前設定し、事前設定された適切なトラバーサルルールに従って、アクセス対象ノードのパスにある全ノードのパーミッションバージョン番号を比較することにより、最新のパーミッションバージョン番号を有するノードを判定して、トラバース及び比較の効率を向上させることであってよい。
【0158】
本実装例では、取得モジュール62が事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する機能が、NASストレージシステム100のストレージアレイ220を用いて実装されてもよく、又はNASストレージシステム100の制御装置210、プロセッサ213、若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62が事前設定されたトラバーサルルールに従って、アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号を比較して、最新のパーミッションバージョン番号を有するノードを判定する具体的な実装詳細については、
図4に示す段階S409の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0159】
任意選択の一実装例では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが異なるディレクトリーレベルに属し、ディレクトリーツリー内の各ノードのパス情報で示される全ノードの親ノードのディレクトリーレベルが、親ノードに属する子ノードのディレクトリーレベルより高く、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。取得モジュール62はさらに、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回2つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定するように構成される。
【0160】
本実装例では、取得モジュール62が、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回2つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する機能が、NASストレージシステム100のストレージアレイ220を用いて実装されてもよく、又はNASストレージシステム100の制御装置210、プロセッサ213、若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62が、ルートノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回2つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、アクセス対象ノードがディレクトリーレベルの降順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する具体的な実装詳細については、
図4に示す段階S409の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0161】
任意選択の一実装例では、ディレクトリーツリー内の各ノードのパス情報で示される全ノードが異なるディレクトリーレベルに属し、ディレクトリーツリー内の各ノードのパス情報で示される全ノードの親ノードのディレクトリーレベルが、親ノードに属する子ノードのディレクトリーレベルより高く、アクセス対象ノードは最下位のディレクトリーレベルを有し、ルートノードは最上位のディレクトリーレベルを有する。取得モジュール62はさらに、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回2つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定するように構成される。
【0162】
本実装例では、取得モジュール62が、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回2つのノードのパーミッションバージョン番号を選択して比較し、より新しいパーミッションバージョン番号を有するノードを判定し、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する機能が、NASストレージシステム100のストレージアレイ220を用いて実装されてもよく、又はNASストレージシステム100の制御装置210、プロセッサ213、若しくは制御モジュール230を用いて実装されてもよい。取得モジュール62が、アクセス対象ノードから開始して、アクセス対象ノードのパス情報で示される全ノードから毎回2つのノードのパーミッションバージョン番号を選択して比較し、新しいパーミッションバージョン番号を有するノードを判定し、ルートノードがディレクトリーレベルの昇順でのトラバースによって比較されるまで、より新しいパーミッションバージョン番号を有するノードが最新のパーミッションバージョン番号を有するノードであると判定する具体的な実装詳細については、
図4に示す段階S409の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0163】
任意選択の一実装例では、受信モジュール61はさらに、ノード作成要求を受信するように構成される。ノード作成要求は、ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、新たに追加されたノードのパス情報は、ルートノードから新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す。
【0164】
本実装例では、受信モジュール61がクライアントにより送信されるノード作成要求を受信する機能が、NASストレージシステム100のインタフェース211を用いて実装されてよい。ノード作成要求の具体的な実装詳細については、
図5に示す段階S510の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0165】
処理モジュール63はさらに、識別子と、ディレクトリーツリーの新たに追加されたノードのパス情報との間の対応関係をグローバルアクセス制御リストに格納し、新たに追加されたノードのパーミッションバージョン番号をグローバルアクセス制御リストに格納するように構成される。新たに追加されたノードのパーミッションバージョン番号の初期値が、作成されたグローバルバージョンパラメータの初期値より小さい又はこれと等しく、新たに追加されたノードに初期パーミッションバージョン番号が設定され、新たに追加されたノードに設定された初期パーミッションバージョン番号は、初期グローバルバージョンパラメータより小さい又はこれと等しい。
【0166】
本実装例では、処理モジュール63がディレクトリーツリーの新たに追加されたノードの識別子とパス情報との間の対応関係をグローバルアクセス制御リストに格納する機能が、NASストレージシステム100のプロセッサ213又は制御モジュール230を用いて実装されてよい。処理モジュール63が識別子とディレクトリーツリーの新たに追加されたノードのパス情報との間の対応関係をグローバルアクセス制御リストに格納する具体的な実装詳細については、
図5に示す段階S520の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0167】
本実装例では、処理モジュール63が新たに追加されたノードのパーミッションバージョン番号をグローバルアクセス制御リストに格納する機能が、NASストレージシステム100のプロセッサ213又は制御モジュール230を用いて実装されてよい。処理モジュール63が新たに追加されたノードのパーミッションバージョン番号をグローバルアクセス制御リストに格納する具体的な実装詳細については、
図5に示す段階S530の具体的な詳細を参照されたい。詳細は再度ここで説明しない。
【0168】
本発明は、ファイルシステムパーミッション設定方法及び装置を提供する。本方法は、ストレージシステムにより実行され、本方法は具体的には、ストレージシステムに適用される。本方法は、ストレージシステムがパーミッション設定要求を受信する段階であって、パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、段階を含む。ストレージシステムがパーミッション設定要求を受信した後に、ストレージシステムは、現在登録されているグローバルバージョンパラメータを取得し、現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得する。ストレージシステムは、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを格納し、パーミッションを受けて設定されるノードのパーミッションバージョン番号として最新のグローバルバージョンパラメータを用いる。グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表す。パーミッションを受けて設定されるノードの子ノー
ドが、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。本発明において提供されるファイルシステムパーミッション設定方法によれば、ディレクトリーツリーのノードに対するアクセスパーミッションのパーミッションレコードが迅速に設定される。更新されたグローバルバージョンパラメータは、ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表すのに用いられる。この方法では、パーミッションを受けて設定されるノードの子ノードのパーミッションレコードは、パーミッションを受けて設定されるノードに対する現在のパーミッション設定オペレーションの後に取得されるパーミッションレコードを引き継ぐ。したがって、ディレクトリーツリーの親ノードのパーミッションレコードだけが設定され、親ノードに対応するディレクトリーの下にある全てのファイル及び全てのサブディレクトリーが、親ノードのパーミッションレコードを引き継ぐので、親ノードの下にある全てのサブディレクトリー又はファイルをトラバースして、親ノードの下にある各サブディレクトリー又は各ファイルのパーミッションレコードを個別に設定する必要はない。その結果、ディレクトリーツリーにアクセスパーミッションを設定する効率が向上する。パーミッションレコードは親ノードに設定され、親ノードに対応するディレクトリーの下にあるサブディレクトリー及びファイルにパーミッションレコードを繰り返し設定する必要はないので、記憶領域のオーバーヘッドが減少する。
【0169】
簡便且つ簡潔な説明のために、前述のシステム、装置、及びユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスを参照できることは、当業者が明確に理解するであろう。詳細は再度ここで説明しない。
【0170】
本願において提供された、いくつかの実施形態では、開示されたシステム、装置、及び方法が他の方式で実装されてよいことを理解されたい。例えば、説明された装置の実施形態は、単なる一例にすぎない。例えば、ユニットの分割は単なる論理的機能の分割にすぎず、実際の実装では他の分割であってもよい。例えば、複数のユニット又は構成要素が結合されても別のシステムに統合されてもよく、一部の特徴が無視されても実行されなくてもよい。さらに、表示又は論じられた相互連結又は直接的連結又は通信接続は、一部のインタフェースを用いて実装されてよい。装置間又はユニット間の間接的連結又は通信接続は、電子的形態、機械的形態、又は他の形態で実装されてよい。
【0171】
別個の部分として説明されたユニットは、物理的に離れていてもいなくてもよく、またユニットとして示された部分が物理的ユニットであってもなくてもよく、1か所に位置してもよく、又は複数のネットワークユニットに分散されてもよい。これらのユニットの一部又は全てが、実際の要件に基づいて選択され、これらの実施形態の解決手段の目的を達成してよい。
【0172】
さらに、本発明の実施形態の複数の機能ユニットが、1つの処理ユニットに統合されてもよく、又はこれらのユニットのそれぞれが物理的に単独で存在してもよく、又は2つ若しくはそれより多くのユニットが1つのユニットに統合される。統合されたユニットは、ハードウェアの形態で実装されてもよく、ソフトウェア機能ユニットの形態で実装されてもよい。
【0173】
統合されたユニットがソフトウェア機能ユニットの形態で実装され、個別の製品として販売されるか又は用いられる場合、統合されたユニットは、コンピュータ可読記憶媒体に格納されてよい。そのような理解に基づいて、本質的には本発明の技術的解決手段、又は先行技術に寄与する部分、又は技術的解決手段の全て若しくは一部が、ソフトウェア製品の形態で実装されてよい。コンピュータソフトウェア製品は、記憶媒体に格納され、本発明の実施形態において説明された方法の段階の全て又は一部を実行するようコンピュータデバイス(これは、パーソナルコンピュータ、サーバ、又はネットワークデバイスであってよい)に指示するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能型ハードディスク、リードオンリメモリ(ROM、Read−Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、又は光ディスクなどの、プログラムコードを格納できる任意の媒体を含む。
【0174】
前述の実施形態は、本発明の技術的解決手段を説明することだけを意図しており、本発明を限定する意図はない。本発明は、前述の実施形態を参照して詳細に説明されているが、当業者であれば依然として、本発明の実施形態の技術的解決手段の意図及び範囲から逸脱することなく、前述の実施形態において説明された技術的解決手段に対して修正を施してもよく、又は前述の実施形態の一部の技術的特徴に対して均等物による置き換えを行ってもよいことを理解しているはずである。
(項目1)
ファイルシステムパーミッション設定方法であって、
パーミッション設定要求を受信する段階であって、上記パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、上記パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、段階と、
現在登録されているグローバルバージョンパラメータを取得する段階と、
上記現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得する段階であって、グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは上記ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表す、段階と、
パーミッションを受けて設定される上記ノードの上記識別子及び上記パーミッションレコードを格納し、パーミッションを受けて設定される上記ノードのパーミッションバージョン番号として、上記最新のグローバルバージョンパラメータを用いる段階であって、パーミッションを受けて設定される上記ノードの子ノードのパーミッションレコードが、パーミッションを受けて設定される上記ノードに対する現在のパーミッション設定オペレーション後に取得されるパーミッションレコードを引き継ぐ、段階と
を備える、方法。
(項目2)
現在登録されているグローバルバージョンパラメータを取得する上記段階は、
グローバルアクセス制御リストに照会して、上記現在登録されているグローバルバージョンパラメータを取得する段階であって、上記グローバルアクセス制御リストは、上記ディレクトリーツリーのルートノードのメタデータに格納されており、上記グローバルアクセス制御リストは上記グローバルバージョンパラメータを格納する、段階を有する、項目1に記載の方法。
(項目3)
パーミッション設定要求を受信する上記段階の前に、上記方法はさらに、
上記グローバルアクセス制御リストを作成し、新たに作成された上記グローバルアクセス制御リストに初期グローバルバージョンパラメータを設定する段階を備える、項目2に記載の方法。
(項目4)
上記パーミッション設定要求はさらに、パーミッションを受けて設定される上記ノードのパス情報を含み、パーミッションを受けて設定される上記ノードの上記パス情報は、上記ルートノードから、パーミッションを受けて設定される上記ノードまでの、アクセスブランチ上にある全ノードを示し、
上記方法はさらに、
パーミッションを受けて設定される上記ノードの上記パス情報を上記グローバルアクセス制御リストに格納する段階であって、パーミッションを受けて設定される上記ノードの上記識別子、上記パス情報、及び上記パーミッションレコードは対応関係を形成する、段階を備える、項目2又は3に記載の方法。
(項目5)
上記方法はさらに、
データアクセス要求を受信する段階であって、上記データアクセス要求はアクセス対象ノードの識別子を含む、段階と、
上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得する段階であって、上記アクセス対象ノードのパーミッションバージョン番号が上記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、段階と、
上記アクセス対象ノードに対する上記アクセスパーミッションに基づいて認証を行い、上記認証に成功した後に上記アクセス対象ノードのデータにアクセスする段階と
を備える、項目1から4のいずれか一項に記載の方法。
(項目6)
上記アクセス対象ノードの上記パーミッションバージョン番号が、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号の中で最新である場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの登録されているパーミッションレコードである、項目5に記載の方法。
(項目7)
上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得する上記段階は、
上記グローバルアクセス制御リストに照会し、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードの上記パス情報を判定する段階であって、上記アクセス対象ノードの上記パス情報は、上記アクセス対象ノード及び上記アクセス対象ノードの全ての親ノードを示すのに用いられる、段階と、
上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会し、上記最新のパーミッションバージョン番号を有するノードを判定する段階と、
上記最新のパーミッションバージョン番号を有する上記ノードのパーミッションレコードを取得する段階であって、上記最新のパーミッションバージョン番号を有する上記ノードの上記パーミッションレコードは、上記アクセス対象ノードに対する上記アクセスパーミッションである、段階と
を有する、項目6に記載の方法。
(項目8)
上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会して、上記最新のパーミッションバージョン番号を有するノードを判定する上記段階は、
事前設定されたトラバーサルルールに従って、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号を比較して、上記最新のパーミッションバージョン番号を有する上記ノードを判定する段階を有する、項目7に記載の方法。
(項目9)
上記方法はさらに、
ノード作成要求を受信する段階であって、上記ノード作成要求は、上記ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、上記新たに追加されたノードの上記パス情報は、上記ルートノードから上記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示す、段階と、
上記ディレクトリーツリーの上記新たに追加されたノードの上記識別子と上記パス情報との間の対応関係を上記グローバルアクセス制御リストに格納する段階と、
上記新たに追加されたノードに初期パーミッションバージョン番号を設定する段階であって、上記新たに追加されたノードに設定される上記初期パーミッションバージョン番号は、上記初期グローバルバージョンパラメータより小さい又はこれと等しい、段階と
を備える、項目2から8のいずれか一項に記載の方法。
(項目10)
ファイルシステムパーミッション設定装置であって、
パーミッション設定要求を受信するように構成されたインタフェースであって、上記パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、上記パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、インタフェースと、
現在登録されているグローバルバージョンパラメータを取得し、上記現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得し、パーミッションを受けて設定される上記ノードの上記識別子及び上記パーミッションレコードを格納し、パーミッションを受けて設定される上記ノードのパーミッションバージョン番号として上記最新のグローバルバージョンパラメータを用いるように構成されたプロセッサであって、グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、上記ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表し、パーミッションを受けて設定される上記ノードの子ノードのパーミッションレコードが、パーミッションを受けて設定される上記ノードに対する現在のパーミッション設定オペレーション後に取得されるパーミッションレコードを引き継ぐ、プロセッサと
を備える、装置。
(項目11)
上記プロセッサはさらに、グローバルアクセス制御リストに照会して、上記現在登録されているグローバルバージョンパラメータを取得するように構成され、上記グローバルアクセス制御リストは、上記ディレクトリーツリーのルートノードのメタデータに格納されており、上記グローバルアクセス制御リストは上記グローバルバージョンパラメータを格納する、項目10に記載の装置。
(項目12)
上記プロセッサはさらに、上記グローバルアクセス制御リストを作成し、新たに作成された上記グローバルアクセス制御リストに初期グローバルバージョンパラメータを設定するように構成される、項目11に記載の装置。
(項目13)
上記パーミッション設定要求はさらに、パーミッションを受けて設定される上記ノードのパス情報を含み、パーミッションを受けて設定される上記ノードの上記パス情報は、上記ルートノードから、パーミッションを受けて設定される上記ノードまでの、アクセスブランチ上にある全ノードを示し、上記プロセッサはさらに、パーミッションを受けて設定される上記ノードの上記パス情報を上記グローバルアクセス制御リストに格納するように構成され、パーミッションを受けて設定される上記ノードの上記識別子、上記パス情報、及び上記パーミッションレコードは対応関係を形成する、項目11又は12に記載の装置。
(項目14)
上記インタフェースはさらに、データアクセス要求を受信するように構成され、上記データアクセス要求はアクセス対象ノードの識別子を含み、
上記プロセッサはさらに、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得し、上記アクセス対象ノードに対する上記アクセスパーミッションに基づいて認証を行い、上記認証に成功した後に上記アクセス対象ノードのデータにアクセスするように構成され、上記アクセス対象ノードのパーミッションバージョン番号が、上記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぐ、項目10から13のいずれか一項に記載の装置。
(項目15)
上記アクセス対象ノードの上記パーミッションバージョン番号が、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号の中で最新である場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの登録されているパーミッションレコードである、項目14に記載の装置。
(項目16)
上記プロセッサはさらに、上記グローバルアクセス制御リストに照会し、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードの上記パス情報を判定し、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会して、上記最新のパーミッションバージョン番号を有するノードを判定し、上記最新のパーミッションバージョン番号を有する上記ノードのパーミッションレコードを取得するように構成され、上記最新のパーミッションバージョン番号を有する上記ノードの上記パーミッションレコードは上記アクセス対象ノードに対する上記アクセスパーミッションであり、上記アクセス対象ノードの上記パス情報は、上記アクセス対象ノード及び上記アクセス対象ノードの全ての親ノードを示すのに用いられる、項目15に記載の装置。
(項目17)
上記プロセッサはさらに、事前設定されたトラバーサルルールに従って、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号を比較して、上記最新のパーミッションバージョン番号を有する上記ノードを判定するように構成される、項目16に記載の装置。
(項目18)
上記インタフェースはさらに、ノード作成要求を受信するように構成され、上記ノード作成要求は、上記ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、上記新たに追加されたノードの上記パス情報は、上記ルートノードから上記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
上記プロセッサはさらに、上記ディレクトリーツリーの上記新たに追加されたノードの上記識別子と上記パス情報との間の対応関係を上記グローバルアクセス制御リストに格納することと、上記新たに追加されたノードのパーミッションバージョン番号を上記グローバルアクセス制御リストに格納することであって、上記新たに追加されたノードの上記パーミッションバージョン番号の初期値が、作成された上記グローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、上記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、上記新たに追加されたノードに設定される上記初期パーミッションバージョン番号は上記初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、項目11から17のいずれか一項に記載の装置。
(項目19)
ファイルシステムパーミッション設定装置であって、
パーミッション設定要求を受信するように構成された受信モジュールであって、上記パーミッション設定要求は、ファイルシステムのディレクトリーツリー内のノードにアクセスパーミッションを設定するよう要求するのに用いられ、上記パーミッション設定要求は、パーミッションを受けて設定されるノードの識別子及びパーミッションレコードを含む、インタフェースと、
現在登録されているグローバルバージョンパラメータを取得するように構成された取得モジュールと、
上記現在登録されているグローバルバージョンパラメータを更新して、最新のグローバルバージョンパラメータを取得し、パーミッションを受けて設定される上記ノードの上記識別子及び上記パーミッションレコードを格納し、パーミッションを受けて設定される上記ノードのパーミッションバージョン番号として上記最新のグローバルバージョンパラメータを用いるように構成された処理モジュールであって、グローバルバージョンパラメータは漸増的に又は漸減的に設定され、それぞれのグローバルバージョンパラメータは、上記ディレクトリーツリーの任意のノードに対する1つのパーミッション設定オペレーションを表し、パーミッションを受けて設定される上記ノードの子ノードのパーミッションレコードが、パーミッションを受けて設定される上記ノードに対する現在のパーミッション設定オペレーション後に取得されるパーミッションレコードを引き継ぐ、処理モジュールと
を備える、装置。
(項目20)
上記取得モジュールはさらに、グローバルアクセス制御リストに照会して、上記現在登録されているグローバルバージョンパラメータを取得するように構成され、上記グローバルアクセス制御リストは、上記ディレクトリーツリーのルートノードのメタデータに格納されており、上記グローバルアクセス制御リストは上記グローバルバージョンパラメータを格納する、項目19に記載の装置。
(項目21)
上記処理モジュールはさらに、上記グローバルアクセス制御リストを作成し、新たに作成された上記グローバルアクセス制御リストに初期グローバルバージョンパラメータを設定するように構成される、項目20に記載の装置。
(項目22)
上記パーミッション設定要求はさらに、パーミッションを受けて設定される上記ノードのパス情報を含み、パーミッションを受けて設定される上記ノードの上記パス情報は、上記ルートノードから、パーミッションを受けて設定される上記ノードまでの、アクセスブランチ上にある全ノードを示し、上記処理モジュールはさらに、パーミッションを受けて設定される上記ノードの上記パス情報を上記グローバルアクセス制御リストに格納するように構成され、パーミッションを受けて設定される上記ノードの上記識別子、上記パス情報、及び上記パーミッションレコードは対応関係を形成する、項目20又は21に記載の装置。
(項目23)
上記受信モジュールはさらに、データアクセス要求を受信するように構成され、上記データアクセス要求はアクセス対象ノードの識別子を含み、
上記取得モジュールはさらに、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードに対するアクセスパーミッションを取得するように構成され、上記アクセス対象ノードのパーミッションバージョン番号が、上記アクセス対象ノードのパス情報で示される全ノードのパーミッションバージョン番号の中で最新ではない場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの、最新のパーミッションバージョン番号を有する、親ノードに対応するパーミッションレコードを引き継ぎ、
上記処理モジュールはさらに、上記アクセス対象ノードに対する上記アクセスパーミッションに基づいて認証を行い、上記認証に成功した後に上記アクセス対象ノードのデータにアクセスするように構成される、項目19から22のいずれか一項に記載の装置。
(項目24)
上記アクセス対象ノードの上記パーミッションバージョン番号が、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号の中で最新である場合、上記アクセス対象ノードに対する上記アクセスパーミッションは、上記アクセス対象ノードの登録されているパーミッションレコードである、項目23に記載の装置。
(項目25)
上記取得モジュールはさらに、上記グローバルアクセス制御リストに照会し、上記アクセス対象ノードの上記識別子に基づいて上記アクセス対象ノードの上記パス情報を判定し、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号に照会して、上記最新のパーミッションバージョン番号を有するノードを判定し、上記最新のパーミッションバージョン番号を有する上記ノードのパーミッションレコードを取得するように構成され、上記アクセス対象ノードの上記パス情報は、上記アクセス対象ノード及び上記アクセス対象ノードの全ての親ノードを示すのに用いられ、上記最新のパーミッションバージョン番号を有する上記ノードの上記パーミッションレコードは、上記アクセス対象ノードに対する上記アクセスパーミッションである、項目24に記載の装置。
(項目26)
上記取得モジュールはさらに、事前設定されたトラバーサルルールに従って、上記アクセス対象ノードの上記パス情報で示される上記全ノードの上記パーミッションバージョン番号を比較して、上記最新のパーミッションバージョン番号を有する上記ノードを判定するように構成される、項目25に記載の装置。
(項目27)
上記受信モジュールはさらに、ノード作成要求を受信するように構成され、上記ノード作成要求は、上記ディレクトリーツリーの新たに追加されたノードの識別子及びパス情報を含み、上記新たに追加されたノードの上記パス情報は、上記ルートノードから上記新たに追加されたノードまでのアクセスブランチ上にある全ノードを示し、
上記処理モジュールはさらに、上記ディレクトリーツリーの上記新たに追加されたノードの上記識別子と上記パス情報との間の対応関係を上記グローバルアクセス制御リストに格納することと、上記新たに追加されたノードのパーミッションバージョン番号を上記グローバルアクセス制御リストに格納することであって、上記新たに追加されたノードの上記パーミッションバージョン番号の初期値が、作成された上記グローバルバージョンパラメータの初期値より小さい又はこれと等しい、格納することと、上記新たに追加されたノードに初期パーミッションバージョン番号を設定することであって、上記新たに追加されたノードに設定される上記初期パーミッションバージョン番号は上記初期グローバルバージョンパラメータより小さい又はこれと等しい、設定することとを行うように構成される、項目20から26のいずれか一項に記載の装置。