(57)【特許請求の範囲】
【請求項１】
要求元が保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするアクセス処理部を備えたストレージであって、
ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てた前記アクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するアクセス許可子割り当て部と、
前記アクセス処理部が受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断するアクセス許可判断部とを備え、
前記アクセス処理部は、ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返却する
ことを特徴とするストレージ。
【請求項２】
アクセス許可判断部は、アクセス要求に含まれるファイルハンドルとアクセス許可子の組と、メタデータとして記憶されているファイルハンドルとアクセス許可子の組とが一致する場合に、前記アクセス要求の処理対象として指定されたファイルハンドルが有効であると判断し、そうでなければ無効であると判断する
請求項１に記載のストレージ。
【請求項３】
アクセス許可子割り当て部は、ファイルまたはディレクトリの新規世代を作成する際に、新規世代とされた該ファイルまたはディレクトリを一意に識別するアクセス許可子を割り当てて、新規世代の該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶する
請求項１または請求項２に記載のストレージ。
【請求項４】
アクセス許可子割り当て部は、新規世代のファイルまたはディレクトリのメタデータとして、旧世代の該ファイルまたはディレクトリに対して割り当てられていたアクセス許可子の履歴も併せて記憶する
請求項３に記載のストレージ。
【請求項５】
アクセス許可判断部は、アクセス要求で最新世代のファイルまたはディレクトリを処理対象とする旨が指定されていた場合には、アクセス要求に含まれるファイルハンドルとアクセス許可子の組に対し、メタデータとして記憶されているファイルハンドルと最新世代のアクセス許可子の組またはファイルハンドルと旧世代のアクセス許可子の組が一致する場合に、該アクセス要求の処理対象として指定されたファイルハンドルが有効であると判断するととともに、最新世代のファイルまたはディレクトリを処理対象にする
請求項４に記載のストレージ。
【請求項６】
メタデータを記憶するメタデータ記憶部と、メタデータに対するアクセス要求に応じてメタデータにアクセスする第１のアクセス処理部を有するメタサーバと、
ファイルデータを記憶するファイルデータ記憶部と、ファイルデータに対するアクセス要求に応じてファイルデータにアクセスする第２のアクセス処理部とを有するファイルサーバとによって構成されるストレージであって、
前記メタサーバが、アクセス許可子割り当て部と、アクセス許可判断部とを含む
請求項１から請求項５のうちのいずれか１項に記載のストレージ。
【請求項７】
第２のアクセス処理部は、ファイルデータに対するアクセス要求に対して、アクセス許可判断部に許否の判定をさせずに、受け付けたアクセス要求に応じてファイルデータにアクセスする
請求項６に記載のストレージ。
【請求項８】
ユーザプログラムに従って動作するホストコンピュータと、前記ホストコンピュータが保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするストレージとを備えた計算機システムであって、
前記ストレージは、
前記ホストコンピュータからアクセス要求を受け付けて、受け付けたアクセス要求に応じてデータにアクセスするアクセス処理部と、
ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てた前記アクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するアクセス許可子割り当て部と、
前記アクセス処理部が受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断するアクセス許可判断部とを含み、
前記アクセス処理部は、ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返信し、
前記ホストコンピュータは、
前記ストレージに対するファイルハンドル取得要求に応じて返信されるファイルハンドルとアクセス許可子とを対にして、ファイルハンドルのキャッシュとして記憶する記憶装置と、
処理対象とするファイルまたはフォルダを特定するための情報として、前記ファイルハンドルのキャッシュとして記憶されているファイルハンドルとアクセス許可子の対の情報を指定したアクセス要求を、前記ストレージに対して送信するストレージアクセス部とを含む
ことを特徴とする計算機システム。
【請求項９】
ストレージアクセス部は、アクセス要求に対して、ストレージから指定したファイルハンドルが無効である旨の応答を受信した場合に、指定したファイルハンドルとアクセス許可子とを対で記憶しているファイルハンドルのキャッシュを破棄する
請求項８に記載の計算機システム。
【請求項１０】
ストレージアクセス部は、アクセス要求に対して、ストレージから指定したファイルハンドルが無効である旨の応答を受信した場合に、指定したファイルハンドルに対応するファイルまたはフォルダに対するパス名解決処理を実行する
請求項９に記載の計算機システム。
【請求項１１】
要求元が保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするストレージに適用されるアクセス制御方法であって、
ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てた前記アクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するステップと、
ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返却するステップと、
受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断するステップと、
処理対象として指定されたファイルハンドルが有効であると判断された場合に、該アクセス要求に応じてデータにアクセスするステップとを含む
ことを特徴とするアクセス制御方法。
【請求項１２】
アクセス要求に含まれるファイルハンドルとアクセス許可子の組と、メタデータとして記憶されているファイルハンドルとアクセス許可子の組とが一致する場合に、前記アクセス要求の処理対象として指定されたファイルハンドルが有効であると判断し、そうでなければ無効であると判断する
請求項１１に記載のアクセス制御方法。
【請求項１３】
ファイルまたはディレクトリの新規世代を作成する際に、新規世代とされた該ファイルまたはディレクトリを一意に識別するアクセス許可子を割り当てて、新規世代の該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するステップを含む
請求項１１または請求項１２に記載のアクセス制御方法。
【請求項１４】
要求元が保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするストレージに適用される制御用プログラムであって、
コンピュータに、
ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てた前記アクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶する処理、
ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返却する処理、
受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断する処理、および
処理対象として指定されたファイルハンドルが有効であると判断された場合に、該アクセス要求に応じてデータにアクセスする処理を
を実行させるための制御用プログラム。
【請求項１５】
コンピュータに、
アクセス要求に含まれるファイルハンドルとアクセス許可子の組と、メタデータとして記憶されているファイルハンドルとアクセス許可子の組とが一致する場合に、前記アクセス要求の処理対象として指定されたファイルハンドルが有効であると判断させ、そうでなければ無効であると判断させる
請求項１４に記載の制御用プログラム。
【請求項１６】
コンピュータに、
ファイルまたはディレクトリの新規世代を作成する際に、新規世代とされた該ファイルまたはディレクトリを一意に識別するアクセス許可子を割り当てて、新規世代の該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶する処理を実行させる
請求項１４または請求項１５に記載の制御用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージを用いた計算機システム、およびそれに用いられるストレージ、アクセス制御方法並びにアクセス制御用プログラムに関し、特に、ホスト側でファイルハンドルをキャッシングする計算機システム、およびそれに用いられるストレージ、アクセス制御方法並びにアクセス制御用プログラムに関する。
【背景技術】
【０００２】
ＮＡＳ（Network Attached Storage）等のファイルベースのストレージにおいて、ファイル中のデータにアクセスするためにはパス名を解決し、ファイルにアクセスするための情報を取得する必要がある。
【０００３】
非特許文献1にあるように、パス名の解決の際にはパス名に含まれるディレクトリ単位で上位のものから順にディレクトリにアクセスするための情報を取得していき、ファイルにアクセスするための情報を取得する。なお、ファイルまたはディレクトリにアクセスするための情報は、一般にファイルハンドル（またはファイルハンドラ）と呼ばれている。パス名の解決の都度、ストレージと通信するのでは効率が悪いため、ホスト（アクセス要求元となる装置）では、ファイルハンドルをキャッシングすることが多い。なお、キャッシングとは、ハードディスクなどアクセスが低速な記憶装置に記憶されているデータの一部を高速な半導体メモリ等（以下、キャッシュメモリという。）に写し高速化する技術によって、キャッシュメモリに情報を記憶させることをいう。以下、ホストでキャッシングされたファイルハンドルを、ファイルハンドルキャッシュという。なお、”キャッシュ”という表現には、上記技術において使用されるキャッシュメモリ上の領域に記憶された情報を指す場合と、キャッシュメモリ上の領域そのものを指す場合とがある。
【０００４】
ファイルハンドルは、例えば、そのファイルまたはディレクトリの情報を記憶しているストレージにおいてそのファイルまたはディレクトリを識別するための識別子であって、そのファイルまたはディレクトリのパス名と対応づけられて記憶される。なお、ファイルまたはディレクトリを識別するための識別子は、例えば、そのファイルまたはディレクトリに直接つけられた識別子や、そのファイルまたはディレクトリのメタデータに直接つけられた識別子や、そのファイルまたはディレクトリを参照するための間接的な識別子や、そのファイルまたはディレクトリのメタデータを参照するための間接的な識別子である。ここで、”直接”とは、ｕｎｉｘ（登録商標）系のファイルシステムにおけるｉｎｏｄｅ番号や、ＯＳＤ（オブジェクトベースストレージデバイス）におけるオブジェクト番号等、ストレージ内の記憶装置に記憶されているファイルまたはディレクトリの情報に直接アクセスできる情報を示している。また、”間接”とは、メタデータを格納した配列のインデックス番号や記憶装置内のアドレス等、ストレージ内の記憶装置に記憶されているファイルまたはディレクトリの情報に直接にはアクセスできないがその情報（間接的な識別子）に基づけば該当するファイルまたはディレクトリの情報にアクセスできる情報を示している。
【０００５】
なお、ホストでは、ファイルハンドルキャッシュとして、ファイルハンドルだけでなく、そのファイルハンドルに対応するファイルまたはディレクトリに付随するメタデータを記憶しておく場合もある。
【０００６】
ファイルハンドルは、ファイルやディレクトリを作成する際に、そのファイルまたはディレクトリに対応する識別子の値が割り当てられ、そのファイルまたはディレクトリを削除する際にその値が開放される。従って、ファイルやディレクトリの削除および生成によって、ファイルハンドルの値やファイル名，ディレクトリ名は使いまわされるため、同じパス名やファイルハンドルの値であっても、異なるファイルまたはディレクトリを示している場合がある。
【０００７】
さらに、スナップショット等によりファイルシステムの状態が多世代化される場合には、同じパス名やファイルハンドルの値であっても、異なる状態のファイル・ディレクトリを示している場合がある。
【０００８】
ＮＦＳ（Network File System ）では、ファイルハンドルキャッシュ（ＤＮＬＣ：Directory Name Lookup Cache ）を時間経過により破棄する方法がとられている。これにより、次回アクセス時にファイルハンドルを再度取得することになり、ホスト側のファイルハンドルキャッシュとストレージ内の情報の整合性を保っている。
【０００９】
ホスト側のファイルハンドルキャッシュとストレージ内の情報との整合性に関し、特許文献１には、クラスタ構成のＮＡＳにおいて、ファイルシステムがサーバ間でマイグレーションされた場合であっても、再度名前解決をしなくてもすむようにするための方法が記載されている。
【００１０】
【特許文献１】特開２００６−１６４１６９号公報
【非特許文献１】Brent Callaghan，「ＮＦＳバイブル」，アスキー株式会社，２００１年１０月，ｐ．１０３−１０９
【発明の開示】
【発明が解決しようとする課題】
【００１１】
第１の問題点は、ファイルベースのストレージにおいて、目的以外のファイルあるいはディレクトリにアクセスしてしまう可能性があることである。その理由は、ファイルハンドルの値やファイル名・ディレクトリ名は以前に使用されたものが再度使用される場合があり、ファイルハンドルの値やでファイル名ディレクトリ名だけでは対象ファイルあるいはディレクトリの特定に不十分なためである。
【００１２】
第２の問題点は、ファイルハンドルキャッシュを使用した場合、目的のファイル・ディレクトリ以外のファイルおよびディレクトリにアクセスしてしまう可能性があることである。その理由は、ファイルハンドルキャッシュは時間により破棄されるため、破棄されるまでの間にファイル・ディレクトリの生成・削除により異なるファイル・ディレクトリに同じファイルハンドルの値が割り当てられる可能性があるためである。更に、スナップショット等により多世代化されたストレージにおいて、ファイルハンドルキャッシュは多世代化に対応していないため、適切な世代にアクセスできない可能性がある。
【００１３】
第３の問題点は、ファイルハンドルキャッシュとストレージ内の情報とのずれを少なくしようとすると、ファイルハンドルキャッシュの効率が低下することである。その理由は、ファイルハンドルキャッシュとストレージ内の情報とのずれの補正は時間経過によりファイルハンドルキャッシュを破棄することで行われるため、ずれを少なくしようとした場合破棄までの時間を短くすることになりキャッシュのヒット率が低下するためである。
【００１４】
なお、特許文献１に記載されている方法は、マルチバージョンを実現する方法ではあるが、パス名からバージョンを特定するものであり、ファイルハンドルの適切さは判定されない。従って、ファイル名が使いまわされた結果、同一パス名であっても異なるファイルを示す可能性がある状況において、ファイルハンドル取得時に対応づけられていたファイルに正しくアクセスできることを保証するものではない。
【００１５】
そこで、本発明は、ストレージのアクセス性能の向上を図ることを目的とする。具体的には、ファイルハンドルの値およびファイル名またはディレクトリ名を使いまわすストレージであっても、キャッシュのヒット率を低下させずに、目的のファイルまたはディレクトリに確実にアクセスできるようにすることを目的とする。
【課題を解決するための手段】
【００１６】
本発明によるストレージは、要求元が保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするアクセス処理部を備えたストレージであって、ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てたアクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するアクセス許可子割り当て部と、アクセス処理部が受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断するアクセス許可判断部とを備え、アクセス処理部は、ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返却することを特徴とする。
【００１７】
また、本発明による計算機システムは、ユーザプログラムに従って動作するホストコンピュータと、ホストコンピュータが保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするストレージとを備えた計算機システムであって、ストレージは、ホストコンピュータからアクセス要求を受け付けて、受け付けたアクセス要求に応じてデータにアクセスするアクセス処理部と、ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てたアクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するアクセス許可子割り当て部と、アクセス処理部が受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断するアクセス許可判断部とを含み、アクセス処理部は、ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返信し、ホストコンピュータは、ストレージに対するファイルハンドル取得要求に応じて返信されるファイルハンドルとアクセス許可子とを対にして、ファイルハンドルのキャッシュとして記憶する記憶装置と、処理対象とするファイルまたはフォルダを特定するための情報として、ファイルハンドルのキャッシュとして記憶されているファイルハンドルとアクセス許可子の対の情報を指定したアクセス要求を、ストレージに対して送信するストレージアクセス部とを含むことを特徴とする。
【００１８】
また、本発明によるアクセス制御方法は、要求元が保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするストレージに適用されるアクセス制御方法であって、ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てたアクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するステップと、ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返却するステップと、受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断するステップと、処理対象として指定されたファイルハンドルが有効であると判断された場合に、該アクセス要求に応じてデータにアクセスするステップとを含むことを特徴とする。
【００１９】
また、本発明による制御用プログラムは、要求元が保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするストレージに適用される制御用プログラムであって、コンピュータに、ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てたアクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶する処理、ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返却する処理、受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断する処理、および処理対象として指定されたファイルハンドルが有効であると判断された場合に、該アクセス要求に応じてデータにアクセスする処理をを実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ストレージのアクセス性能の向上を図ることができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態を図面を参照して説明する。図１は、本実施形態におけるストレージの構成例を示すブロック図である。図１に示すストレージ１は、ハードディスク（磁気ディスク）やフロッピー（登録商標）ディスク，ＭＯ，ＣＤ−Ｒ、磁気テープ等の外部記憶装置１１と、外部記憶装置１１を制御するための制御手段１０とを備える。なお、外部記憶装置１１が、ハードディスク（磁気ディスク）やフロッピー（登録商標）ディスク，ＭＯ，ＣＤ−Ｒ、磁気テープのアレイまたはライブラリ等の集合装置である場合も含む。また、制御手段１０は、例えば、プログラムに従って動作するＣＰＵや、計算機（サーバ装置）によって実現される。
【００２２】
アクセス許可子割り当て部１０１は、ファイルまたはディレクトリの作成を一意に識別できる識別子を割り当てる。以下、アクセス許可子割り当て部１０１が割り当てる識別子をアクセス許可子という。例えば、アクセス許可子割り当て部１０１は、ファイルまたはディレクトリが作成された際に、アクセス許可子を割り当てて、そのファイルまたはディレクトリのメタデータとして記憶しておく。ここで、そのファイルまたはディレクトリに対応するファイルハンドルの値やパス名が、以前にあったものと一致した場合でも以前のファイルまたはディレクトリに割り当てたアクセス許可子が割り当てられないようにする。なお、アクセス許可子割り当て部１０１におけるアクセス許可子割り当て処理の詳細は、後述する。
【００２３】
本実施形態では、このアクセス許可子をホスト側にも知らせて、ファイルハンドルキャッシュとしてファイルハンドルと対でキャッシングさせる。
【００２４】
アクセス許可判断部１０２は、ホストからのアクセス要求に対して、そのアクセス要求の対象となるファイルまたはディレクトリを指定するために付加されているファイルハンドルおよびアクセス許可子に基づいて、そのアクセス要求を許可するか否かを判断する。具体的には、ホストから指定されたファイルハンドルの値とアクセス許可子の値が、ストレージ内で保持しているファイルハンドルの値とアクセス許可子の値と一致していない場合には、ホストで保持しているファイルハンドルキャッシュが無効であると判断して、そのアクセス要求を許可しないようにする。なお、本実施形態において、「アクセス要求」は、ストレージ１に対するｒｅａｄやｗｒｉｔｅの要求に限らず、パス名解決（ファイルハンドル取得）やアクセス権の取得等、ホストからストレージ１に対する処理要求全般を示す表現として用いている。
【００２５】
アクセス処理部１０３は、ホストからのアクセス要求を実際に処理する。なお、本実施形態では、アクセス処理部１０３は、アクセス許可判断部１０２が許可したアクセス要求のみを処理する。なお、アクセス許可判断部１０２が許可しなかったアクセス要求に対しては、ファイルハンドルキャッシュが無効である旨を返すようにする。ホスト側は、ファイルハンドルキャッシュが無効である旨の通知を受け取った場合には、そのファイルハンドルキャッシュを削除するようにすればよい。
【００２６】
以下、より具体的な構成例を用いて説明する。図２は、本実施形態におけるストレージを備えた計算機システムのより具体的な構成例を示すブロック図である。図２に示す計算機システムは、ユーザのプログラムが動作するホスト２と、データが格納されたストレージ１とを備える。なお、ホスト２とストレージ１とは、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）等のネットワークで接続される。
【００２７】
ホスト２は、図に記載しないユーザプログラムによって動作する計算機であって、ストレージアクセス部２０を備える。ストレージアクセス部２０は、ストレージ１が保持しているファイルハンドルをキャッシングするファイルハンドルキャッシュ２０１を有している。なお、ユーザプログラムは、具体的には、ホスト２が備えるＣＰＵがユーザプログラムに従って動作することによって動作する。ユーザプログラムはストレージアクセス部２０を介してストレージ１が記憶しているファイルまたはディレクトリに対する各種処理を行う。ファイルハンドルキャッシュ２０１は、ファイルハンドルをキャッシングする記憶装置である。この記憶装置は揮発性でも不揮発性のいずれでもかまわない。
【００２８】
ストレージ１は、ファイルを記憶するＮＡＳ（Network Attached Storage）のような記憶装置（その記憶装置を制御する制御手段を含む）であって、メタデータ管理部１０ａと、アクセス処理部１０ｂと、メタデータ記憶部１１ａと、ファイルデータ記憶部１１ｂとを備える。また、メタデータ管理部１０ａは、アクセス許可子割り当て部１０１と、アクセス許可判断部１０２と、メタデータアクセス処理部１０３ａとを含む。
【００２９】
メタデータ管理部１０ａは、メタデータ記憶部１１ａに記憶されているメタデータに関する処理を行う。ここで、メタデータとは、ストレージ１で管理しているファイルまたはディレクトリの属性情報であって、例えば、ファイルまたはディレクトリのアクセス権や所有者に関する情報だけでなく、そのファイルまたはディレクトリにアクセスするためのファイルハンドルを含む。なお、本発明では、さらにアクセス許可判断部１０２によって割り当てられたアクセス許可子を含む。メタデータ記憶部１１ａは、メタデータを記憶する不揮発な記憶媒体である。
【００３０】
アクセス許可子割り当て部１０１およびアクセス許可判断部１０２は、上述の通りである。なお、本例では、アクセス許可子割り当て部１０１が割り当てたアクセス許可子は、ファイルハンドルと対にして、メタデータとしてメタデータ記憶部１１ａに記憶される。そして、アクセス許可判断部１０２は、ホストからのアクセス要求に対して、そのアクセス要求の対象となるファイルまたはディレクトリを指定するために付加されているファイルハンドルの値とアクセス許可子の値が一致するファイルまたはディレクトリの情報をメタデータ記憶部１１ａから検索し、一致するファイルまたはディレクトリの情報がなければ、ホストで保持しているファイルハンドルキャッシュが無効であると判断する。
【００３１】
メタデータアクセス処理部１０３ａは、メタデータに対するアクセス処理（例えば、ファイルハンドル取得処理、アクセス権の取得処理）を行う。なお、メタデータアクセス処理部１０３ａは、図１におけるアクセス処理部１０３が行う処理のうち、メタデータに対するアクセス要求を処理する処理部である。
【００３２】
また、ファイルデータアクセス処理部１０３ｂは、ファイルデータに対するアクセス処理（例えば、ｒｅａｄ／ｗｒｉｔｅ処理）を行う。なお、ファイルデータアクセス処理部１０３ｂは、図１におけるアクセス処理部１０３が行う処理のうち、ファイルデータに対するアクセス要求を処理する処理部である。ここで、ファイルデータとは、ファイルとして記憶された情報、すなわちファイルの内容となるデータをいう。ファイルデータ記憶部１１ｂは、ファイルデータを記憶する不揮発な記憶媒体である。なお、ファイルデータ記憶部１１ａとメタデータ記憶部１１ｂとは同一の記憶装置によって実現されていてもよい。
【００３３】
図３は、ファイルハンドルキャッシュ２０１に記憶される情報（以下、キャッシュエントリという。）の一例を示す説明図である。図３に示すように、ファイルハンドルキャッシュ２０１の各キャッシュエントリには、上位ディレクトリのファイルハンドルおよびアクセス許可子と、対象となるファイルまたはディレクトリ名、そのディレクトリまたはファイルのファイルハンドルとアクセス許可子、そのディレクトリまたはファイルのアクセス券・所有者等の情報からなる属性情報を記憶するようにしてもよい。なお、図４に示すように、ファイルハンドルキャッシュのエントリを、上位ディレクトリのファイルハンドルごとにまとめてもよい。なお、図１では、ホスト２は１台しか示されていないが、複数であってもよい。
【００３４】
また、図５は、ストレージ内で保持されるディレクトリのメタデータの一例を示す説明図である。図５に示すように、ディレクトリのメタデータは、そのディレクトリにアクセスするための情報（ファイルハンドル）と、そのディレクトリの属性情報と、アクセス許可子と、更に、下位の要素（ファイルまたはディレクトリ）群の個々の要素を参照するための情報とを含んでいてよい。下位の要素を参照するための情報として、例えば、下位のファイルまたはディレクトリのファイルハンドルとアクセス許可子とを組み合わせた情報を用いてもよい。なお、さらにファイルまたはディレクトリの名称を含んでいてもよい。
【００３５】
また、図６は、ストレージ内で保持されるファイルのメタデータの一例を示す説明図である。図６に示すように、ファイルのメタデータは、そのファイルデータにアクセスするための情報（ファイルハンドル）と、そのファイルの属性情報と、アクセス許可子と、そのファイルがブロック構成で記憶されている場合には、そのファイルの構成ブロックの情報（例えば、ブロック番号）とを含んでいてもよい。
【００３６】
次に本実施形態の動作について説明する。
【００３７】
まず、パス名解決について説明する。パス名解決は、ホスト側が、”/foo0/foo1/foo2/foo3”のような形式で表されるパス名の末端のファイルまたはディレクトリにアクセスするための情報を入手するための処理である。本発明では、少なくともファイルハンドルとアクセス許可子とを入手するための処理である。なお、本例では、パス名におけるディレクトリまたはファイルの区切りとして“/ ”を使用しているが、“\ ”等を使用する場合もある。なお、ｒｏｏｔと呼ばれる先頭のディレクトリに関しては、ファイルシステムを使用するための操作（ｍｏｕｎｔと呼ばれる）の際にそのファイルハンドル及びアクセス許可子を入手しているものとする。
【００３８】
図７は、本実施形態のストレージアクセス部２０におけるパス名解決処理の動作例を示すフローチャートである。図７に示すように、まず、ストレージアクセス部２０は、解決するパス名（すなわち検索対象）がｒｏｏｔ（”/ ”）か否かを判断し、ｒｏｏｔであればステップＳ１０１に移行し、そうでなければステップＳ１０２に移行する（ステップＳ１００）。
【００３９】
ステップＳ１０１では、ｒｏｏｔに対応するファイルハンドルとアクセス許可子等を返却し、終了する。
【００４０】
一方、ステップＳ１０２では、検索範囲ディレクトリをｒｏｏｔに設定する。次に、解決するパス名において検索範囲ディレクトリの下位の要素（ディレクトリまたはファイル）を検索対象とし（ステップＳ１０３）、ファイルハンドルキャッシュ中で、検索範囲ディレクトリを上位ディレクトリとし、かつ検索対象要素を下位のディレクトリまたはファイルとして登録しているエントリを検索する（ステップＳ１０４）。ファイルハンドルキャッシュ中に、該当するエントリが存在した場合には、ステップＳ１３０へ移行し、存在しなかった場合にはステップＳ１０６に移行する（ステップＳ１０５）。
【００４１】
ステップＳ１０６では、ストレージアクセス部２０は、ストレージ１に対して、検索範囲ディレクトリ内の検索対象ディレクトリまたはファイルのファイルハンドル取得要求（ｌｏｏｋｕｐ要求）を送出する。ここで、ファイルハンドル取得要求には、取得したいファイルハンドルを指定する情報として、上位ディレクトリのファイルハンドルおよびアクセス許可子と、取得対象のディレクトリ名またはファイル名が含まれる。なお、上位ディレクトリのファイルハンドルおよびアクセス許可子には、現在処理中の検索範囲ディレクトリのファイルハンドルおよびアクセス許可子を設定すればよい。また、取得対象のディレクトリ名またはファイル名には、現在処理中の検索対象のディレクトリ名またはファイル名を設定すればよい。
【００４２】
そして、ストレージ１からの応答を待ち（ステップＳ１０７）、ストレージ１からファイルハンドルが入手できた場合にはステップＳ１１２へ移行し、入手できなかった場合にはステップＳ１０９へ移行する（ステップＳ１０８）。
【００４３】
ステップＳ１０９では、ストレージアクセス部２０は、ストレージ１からファイルハンドルが入手できなかった理由に応じて、指定したファイルハンドルが無効であることが理由であった場合にはステップＳ１１１へ移行し、そうでなければエラーを返却し、終了する（ステップＳ１１０）。
【００４４】
指定したファイルハンドルが無効であることが理由であった場合、すなわちステップＳ１１１では、ストレージアクセス部２０は、ファイルハンドルキャッシュ中の検索範囲ディレクトリに関するエントリを無効化する。具体的には、検索範囲ディレクトリのファイルハンドルとアクセス許可子を上位ディレクトリの情報として登録しているエントリを無効化するとともに、検索範囲ディレクトリを下位のディレクトリとして登録しているエントリにおいて、検索範囲ディレクトリを下位のディレクトリとして示している情報を無効化する。そして、ステップＳ１０２に戻って再度検索範囲ディレクトリをｒｏｏｔに設定してやり直す。
【００４５】
また、ストレージ１からファイルハンドルが入手できた場合、すなわちステップＳ１１２では、ストレージアクセス部２０は、検索対象のディレクトリまたはファイルについてのキャッシュエントリとして、ストレージ１から取得した少なくともファイルハンドルとアクセス許可子とを、検索対象のディレクトリ名またはファイル名と対応づけてファイルハンドルキャッシュに登録する。なお、検索対象のディレクトリまたはファイルについてのキャッシュエントリを登録する際には、検索範囲ディレクトリのファイルハンドルおよびアクセス許可子を、上位ディレクトリの情報として含ませる。なお、ストレージ１から他の情報（例えば、属性情報）も取得する場合には、併せて登録するようにしてもよい。
【００４６】
そして、キャッシュエントリを登録した後、またはステップＳ１０５において検索対象のキャッシュエントリがヒットした場合、ステップＳ１１３では、ファイルハンドルを取得したディレクトリまたはファイル（すなわち、現在処理中の検索対象要素）が解決するパス名の終端であるか否かを確認し、終端であればステップＳ１１５へ、そうでなければステップＳ１１４へ移行する。
【００４７】
ステップＳ１１４では、ファイルハンドルを取得した検索対象のディレクトリ（ここでは、終端でないことから必然的にディレクトリとなる）を、新たな検索範囲ディレクトリに設定する。そして、ステップＳ１０３に戻り、新たに設定した検索範囲ディレクトリに基づき、解決するパス名において検索範囲ディレクトリの下位の要素を検索対象として、その検索対象要素のファイルハンドルの取得を試みる。
【００４８】
一方ステップＳ１１５では、解決するパス名の終端であるディレクトリまたはファイル（すなわち、現在処理中の検索対象要素）のファイルハンドルとアクセス許可子とを返却し、終了する。なお、ファイルハンドルとアクセス許可子と併せて、キャッシュエントリに登録されている他の情報（例えば、属性情報）を返却するようにしてもよい。
【００４９】
なお、上記動作では、ステップＳ１１１の後、指定したファイルハンドル（すなわち、検索範囲ディレクトリのファイルハンドル）が無効であることが理由であった場合に、ｒｏｏｔから処理を再度行っているが、過去の検索範囲ディレクトリに対するファイルハンドルキャッシュでの検索結果を記録してある場合には、一つ上位のディレクトリから再開することも可能である。そのような場合には、図８に示すように、検索範囲ディレクトリの上位のディレクトリを検索範囲ディレクトリに設定した上で、ステップＳ１０３に戻るようにすればよい（ステップＳ１３０）。
【００５０】
このようにすると、ファイルハンドルが無効であった場合の再度行う処理の処理量を減少することができ、応答性の向上並びにホスト２の負荷軽減が図れる。
【００５１】
また、ＮＦＳによっては、終端のディレクトリまたはファイルについては、ストレージ１に問い合わせるようにしている場合もある。そのような場合には、図９に示すように、ステップＳ１０３とＳ１０４の間に、検索対象が解決するパス名の終端か否かを判定し、終端であった場合には、ステップＳ１０６に移行するようにしてもよい。このようにすると、終端のディレクトリまたはファイルに関して、最新のファイルハンドルとアクセス許可子、および属性情報を入手することができる。
【００５２】
また、図１０は、ストレージ１におけるファイルハンドル取得要求（ｌｏｏｋｕｐ要求）受け付け時の動作例を示すフローチャートである。本実施形態において、ファイルハンドル取得要求には、取得したいファイルハンドルを指定する情報として、上位ディレクトリのファイルハンドルおよびアクセス許可子と、取得対象のディレクトリ名またはファイル名が含まれる。また、ファイルハンドル取得要求は、ストレージ１内では、メタデータ管理部１０ａのメタデータアクセス処理部１０３ａによって処理される。
【００５３】
図１０に示すように、メタデータアクセス処理部１０３ａが、ホスト２から上位ディレクトリのファイルハンドルおよびアクセス許可子と、取得対象のディレクトリ名またはファイル名が指定されたファイルハンドル取得要求を受け付けると、メタデータ記憶部１１ａから指定された上位ディレクトリのファイルハンドルと一致するディレクトリを検索する（ステップＳ２００）。
【００５４】
ここで、一致するものがなかった場合にはステップＳ２０２に移行し、一致するものがあった場合にはステップＳ２０３に移行する（ステップＳ２０１）。ステップＳ２０２では、ファイルハンドルが無効である旨を示す応答を返信（要求元のホスト２に送信）して、終了する。
【００５５】
一方、上位ディレクトリのファイルハンドルと一致するディレクトリの情報（メタデータ）がメタデータ記憶部１１ａに記憶されている場合、すなわちステップＳ２０３では、アクセス許可判断部１０２が、ステップＳ２００で取得したそのメタデータ記憶部１１ａ内のディレクトリのメタデータにおいて、そのディレクトリのファイルハンドルと対になっているアクセス許可子が、指定された上位ディレクトリのアクセス許可子と一致するか否かを判定する。ここで、一致した場合にはステップＳ２０６に移行し、一致しなかった場合にはステップＳ２０５に移行する（ステップＳ２０４）。
【００５６】
アクセス許可子が一致しなかった場合、すなわちステップＳ２０５では、当該ファイルハンドル取得要求は許可されないとして、メタデータアクセス処理部１０３ａは、ファイルハンドルが無効である旨を示す応答を返信して、終了する。例えば、メタデータアクセス処理部１０３ａは、上位ディレクトリのファイルハンドルがメタデータ記憶部１０ａ内で検索された場合に、そのファイルハンドルと指定された上位ディレクトリの情報とをアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにしてもよい。そして、アクセス許可判断部１０２からの問い合わせ結果に応じて、ファイルハンドルが無効である旨を示す応答を返信するようにしてもよい。
【００５７】
一方、アクセス許可子が一致した場合、すなわちステップＳ２０６では、当該ファイルハンドル取得要求は許可されるとして、メタデータアクセス処理部１０３ａは、ステップＳ２００で取得した上位ディレクトリの情報に基づき、その上位ディレクトリの下位の要素群（ディレクトリ・ファイル群）から、取得対象として指定されたファイル名またはディレクトリ名に一致するものを検索する。ここで、一致するものがなかった場合にはステップＳ２０８に移行し、一致するものがあった場合にはステップＳ２０９に移行する（ステップＳ２０７）。
【００５８】
上位ディレクトリの下位の要素群に取得対象として指定されたファイル名またはディレクトリ名に一致するものがなかった場合、すなわちステップＳ２０８では、ファイル・ディレクトリ名が無効である旨を示す応答を返信して、終了する。
【００５９】
一方、上位ディレクトリの下位の要素群に取得対象として指定されたファイル名またはディレクトリ名に一致するものがあった場合、すなわちステップＳ２０９では、ステップＳ２０６で検索した取得対象のファイル名またはディレクトリ名と一致する下位要素の情報に基づき、その要素のファイルハンドルおよびアクセス許可子と一致するディレクトリまたはファイル（すなわち、取得対象のディレクトリまたはファイル）のメタデータをメタデータ記憶部１０ａから検索して、そのディレクトリまたはファイルの属性情報を取得する。
【００６０】
ついで、ステップＳ２０６またはステップＳ２０９で検索した取得対象のディレクトリまたはファイルのファイルハンドルおよびアクセス許可子と、属性情報とを含む応答を返信し（ステップＳ２１０）、終了する。
【００６１】
なお、上記動作では、ファイルハンドルの値と、アクセス許可子の値とを別々に判定する例を示したが、まとめて判定することも可能である。例えば、図１１に示すように、上位ディレクトリのファイルハンドルとアクセス許可子の両方が一致するものをメタデータ記憶部１０ａから検索するようにしてもよい（ステップＳ２２０）。例えば、メタデータアクセス処理部１０３ａは、受け付けたファイルハンドル取得要求をアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにし、アクセス許可判断部１０２が、ステップＳ２２０の処理を行い、一致するものがあった場合に当該ファイルハンドル取得要求を許可する旨の問い合わせ結果を上位ディレクトリのファイルハンドルとともに返却するようにしてもよい。なお、ステップＳ２２１以降の動作は、図１０のステップＳ２０４以降の動作と同様であるため、説明省略する。
【００６２】
次に、パス名解決後のホスト２からストレージ１への他の要求について説明する。なお、ファイルハンドル取得要求以外の要求では、処理対象のディレクトリまたはファイルのファイルハンドルおよびアクセス許可子は、パス名解決動作により事前に入手しているものとする。
【００６３】
まず、ファイルの作成要求に係る動作について説明する。なお、本実施形態では、ホスト２のストレージアクセス部２０は、ファイルの作成を要求する場合には、上位ディレクトリのファイルハンドルとアクセス許可子と、作成したいファイル名等（ファイル名、属性等）を指定したファイル作成要求を、ストレージ１に送信する。
【００６４】
図１２は、ストレージ１におけるファイル作成要求受け付け時の動作例を示すフローチャートである。なお、ファイル作成要求は、本例では、メタデータ管理部１０ａのメタデータアクセス処理部１０３ａによって処理される。
【００６５】
図１２に示すように、メタデータアクセス処理部１０３ａが、ホスト２から上位ディレクトリのファイルハンドルおよびアクセス許可子と、作成したいファイル名等が指定されたファイル作成要求を受け付けると、メタデータ記憶部１１ａから指定された上位ディレクトリのファイルハンドルと一致するディレクトリを検索する（ステップＳ３００）。
【００６６】
ここで、一致するものがなかった場合にはステップＳ３０２に移行し、一致するものがあった場合にはステップＳ３０３に移行する（ステップＳ３０１）。ステップＳ３０２では、ファイルハンドルが無効である旨を示す応答を返信（要求元のホスト２に送信）して、終了する。
【００６７】
一方、上位ディレクトリのファイルハンドルと一致するディレクトリの情報（メタデータ）がメタデータ記憶部１１ａに記憶されている場合、すなわちステップＳ３０３では、アクセス許可判断部１０２が、ステップＳ３００で取得したそのメタデータ記憶部１１ａ内のディレクトリのメタデータにおいて、そのディレクトリのファイルハンドルと対になっているアクセス許可子が、指定された上位ディレクトリのアクセス許可子と一致するか否かを判定する。ここで、一致した場合にはステップＳ３０６に移行し、一致しなかった場合にはステップＳ３０５に移行する（ステップＳ３０４）。
【００６８】
アクセス許可子が一致しなかった場合、すなわちステップＳ３０５では、当該ファイル作成要求は許可されないとして、メタデータアクセス処理部１０３ａは、ファイルハンドルが無効である旨を示す応答を返信して、終了する。例えば、メタデータアクセス処理部１０３ａは、上位ディレクトリのファイルハンドルがメタデータ記憶部１０ａ内で検索された場合に、そのファイルハンドルと指定された上位ディレクトリの情報とをアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにしてもよい。そして、アクセス許可判断部１０２からの問い合わせ結果に応じて、ファイルハンドルが無効である旨を示す応答を返信するようにしてもよい。
【００６９】
一方、アクセス許可子が一致した場合、すなわちステップＳ３０６では、当該ファイル作成要求は許可されるとして、メタデータアクセス処理部１０３ａは、指定されたファイルを作成するための処理を開始する。具体的には、メタデータアクセス処理部１０３ａは、ファイルハンドルの割り当ておよびメタデータの初期化を行う。メタデータアクセス処理部１０３ａは、この時点（ファイル作成時点）において、当該ストレージ１において当該ファイルを一意に識別可能なファイルハンドルを割り当て、そのファイルハンドル等を格納しておくための当該ファイル用メタデータの格納領域をメタデータ記憶部１０ａに確保する（ステップ割り当てる）。そして、割り当てた当該ファイル用のメタデータ格納領域に対して、割り当てたファイルハンドルの値を登録したり、ファイル名を登録したり、上位ディレクトリのファイルハンドルおよびアクセス許可子を登録したり等の初期化を行えばよい。
【００７０】
次いで、アクセス許可子割り当て部１０１が、ステップＳ３０６で割り当てられたファイルハンドルと対になるアクセス許可子を割り当てる（ステップＳ３０７）。なお、ここで割り当てたアクセス許可子は、ステップＳ３０６で確保されたメタデータ記憶部１０ａの当該ファイル用メタデータに登録される。なお、アクセス許可子割り当て部１０１によってアクセス許可子が割り当てられると、メタデータアクセス処理部１０３ａは、作成したファイルの上位ディレクトリのメタデータに含まれる下位要素の情報として、当該ファイルの情報を登録する（ステップＳ３０８）。そして、割り当てたファイルハンドルおよびアクセス許可子を含む作成完了応答を返信し（ステップＳ３０９）、終了する。
【００７１】
なお、ホスト２のストレージアクセス部２０は、ストレージ１から作成完了応答以外の応答が返ってきた場合には、エラーとして（ファイルの作成が失敗した旨を返却して）処理を終了してもよい。なお、ストレージアクセス部２０は、ストレージ１から指定したファイルハンドルが無効である旨の応答が返ってきた場合には、パス名解決からやり直すようにしてもよい。
【００７２】
また、ファイル作成要求受け付け時の動作においても、ファイルハンドルの値とアクセス許可子の値とをまとめて判定することも可能である。例えば、図１３に示すように、上位ディレクトリのファイルハンドルとアクセス許可子の両方が一致するものをメタデータ記憶部１０ａから検索するようにしてもよい（ステップＳ３１０）。例えば、メタデータアクセス処理部１０３ａは、受け付けたファイル作成要求をアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにし、アクセス許可判断部１０２が、ステップＳ３１０の処理を行い、一致するものがあった場合に当該ファイル作成要求を許可する旨の問い合わせ結果を上位ディレクトリのファイルハンドルとともに返却するようにしてもよい。なお、ステップＳ３１１以降の動作は、図１２のステップＳ３０４以降の動作と同様であるため、説明省略する。
【００７３】
次に、ディレクトリの作成要求に係る動作について説明する。なお、本実施形態では、ホスト２のストレージアクセス部２０は、ディレクトリの作成を要求する場合には、上位ディレクトリのファイルハンドルとアクセス許可子と、作成したいディレクトリ名等（ディレクトリ名、属性等）を指定したディレクトリ作成要求を、ストレージ１に送信する。
【００７４】
図１４は、ストレージ１におけるディレクトリ作成要求受け付け時の動作例を示すフローチャートである。なお、ディレクトリ作成要求は、本例では、メタデータ管理部１０ａのメタデータアクセス処理部１０３ａによって処理される。
【００７５】
図１４に示すように、メタデータアクセス処理部１０３ａが、ホスト２から上位ディレクトリのファイルハンドルおよびアクセス許可子と、作成したいディレクトリ名等が指定されたディレクトリ作成要求を受け付けると、メタデータ記憶部１１ａから指定された上位ディレクトリのファイルハンドルと一致するディレクトリを検索する（ステップＳ４００）。
【００７６】
ここで、一致するものがなかった場合にはステップＳ４０２に移行し、一致するものがあった場合にはステップＳ４０３に移行する（ステップＳ４０１）。ステップＳ４０２では、ファイルハンドルが無効である旨を示す応答を返信（要求元のホスト２に送信）して、終了する。
【００７７】
一方、上位ディレクトリのファイルハンドルと一致するディレクトリの情報がメタデータ記憶部１１ａに記憶されている場合、すなわちステップＳ４０３では、アクセス許可判断部１０２が、ステップＳ４００で取得したそのメタデータ記憶部１１ａ内のディレクトリのメタデータにおいて、そのディレクトリのファイルハンドルと対になっているアクセス許可子が、指定された上位ディレクトリのアクセス許可子と一致するか否かを判定する。ここで、一致した場合にはステップＳ４０６に移行し、一致しなかった場合にはステップＳ４０５に移行する（ステップＳ４０４）。
【００７８】
アクセス許可子が一致しなかった場合、すなわちステップＳ４０５では、当該ディレクトリ作成要求は許可されないとして、メタデータアクセス処理部１０３ａは、ファイルハンドルが無効である旨を示す応答を返信して、終了する。例えば、メタデータアクセス処理部１０３ａは、上位ディレクトリのファイルハンドルがメタデータ記憶部１０ａ内で検索された場合に、そのファイルハンドルと指定された上位ディレクトリの情報とをアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにしてもよい。そして、アクセス許可判断部１０２からの問い合わせ結果に応じて、ファイルハンドルが無効である旨を示す応答を返信するようにしてもよい。
【００７９】
一方、アクセス許可子が一致した場合、すなわちステップＳ４０６では、当該ディレクトリ作成要求は許可されるとして、メタデータアクセス処理部１０３ａは、指定されたディレクトリを作成するための処理を開始する。具体的には、メタデータアクセス処理部１０３ａは、ファイルハンドルの割り当ておよびメタデータの初期化を行う。メタデータアクセス処理部１０３ａは、この時点（ディレクトリ作成時点）において、当該ストレージ１において当該フォルダを一意に識別可能なファイルハンドルを割り当て、そのファイルハンドル等を格納しておくための当該ディレクトリ用メタデータの格納領域をメタデータ記憶部１０ａに確保する（ステップ割り当てる）。そして、割り当てた当該フォルダ用のメタデータ格納領域に対して、割り当てたファイルハンドルの値を登録したり、ディレクトリ名を登録したり、上位ディレクトリのファイルハンドルおよびアクセス許可子を登録したり等の初期化を行えばよい。
【００８０】
次いで、アクセス許可子割り当て部１０１が、ステップＳ４０６で割り当てられたファイルハンドルと対になるアクセス許可子を割り当てる（ステップＳ４０７）。なお、ここで割り当てたアクセス許可子は、ステップＳ４０６で確保されたメタデータ記憶部１０ａの当該ディレクトリ用メタデータに登録される。アクセス許可子割り当て部１０１によってアクセス許可子が割り当てられると、メタデータアクセス処理部１０３ａは、作成したディレクトリの上位ディレクトリのメタデータに含まれる下位要素の情報として、当該ディレクトリの情報を登録する（ステップＳ４０８）。そして、割り当てたファイルハンドルおよびアクセス許可子を含む作成完了応答を返信し（ステップＳ４０９）、終了する。
【００８１】
なお、ホスト２のストレージアクセス部２０は、ストレージ１から作成完了応答以外の応答が返ってきた場合には、エラーとして（ディレクトリの作成が失敗した旨を返却して）処理を終了してもよい。なお、ストレージアクセス部２０は、ストレージ１から指定したファイルハンドルが無効である旨の応答が返ってきた場合には、パス名解決からやり直すようにしてもよい。
【００８２】
また、ディレクトリ作成要求受け付け時の動作においても、、ファイルハンドルの値とアクセス許可子の値とをまとめて判定することも可能である。例えば、図１５に示すように、上位ディレクトリのファイルハンドルとアクセス許可子の両方が一致するものをメタデータ記憶部１０ａから検索するようにしてもよい（ステップＳ４１０）。例えば、メタデータアクセス処理部１０３ａは、受け付けたディレクトリ作成要求をアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにし、アクセス許可判断部１０２が、ステップＳ４１０の処理を行い、一致するものがあった場合に当該ディレクトリ作成要求を許可する旨の問い合わせ結果を上位ディレクトリのファイルハンドルとともに返却するようにしてもよい。なお、ステップＳ４１１以降の動作は、図１４のステップＳ４０４以降の動作と同様であるため、説明省略する。
【００８３】
次に、ファイルまたはディレクトリのメタデータに関連する処理要求に係る動作について説明する。なお、本実施形態では、ホスト２のストレージアクセス部２０は、ファイルまたはディレクトリのメタデータに関連する処理を要求する場合には、対象とするファイルまたはディレクトリのファイルハンドルとアクセス許可子と、要求する処理内容を示すパラメータを指定したメタデータ処理要求を、ストレージ１に送信する。
【００８４】
図１６は、ストレージ１におけるメタデータ処理要求受け付け時の動作例を示すフローチャートである。なお、メタデータ処理要求は、本例では、メタデータ管理部１０ａのメタデータアクセス処理部１０３ａによって処理される。
【００８５】
図１６に示すように、メタデータアクセス処理部１０３ａが、ホスト２から処理対象のファイルまたはディレクトリのファイルハンドルとアクセス許可子と、処理内容を示すパラメータとが指定されたメタデータ処理要求を受け付けると、メタデータ記憶部１１ａから処理対象ファイルまたはディレクトリのファイルハンドルと一致するファイルまたはディレクトリを検索する（ステップＳ５００）。
【００８６】
ここで、一致するものがなかった場合にはステップＳ５０２に移行し、一致するものがあった場合にはステップＳ５０３に移行する（ステップＳ５０１）。ステップＳ５０２では、ファイルハンドルが無効である旨を示す応答を返信（要求元のホスト２に送信）して、終了する。
【００８７】
一方、処理対象ファイルまたはディレクトリのファイルハンドルと一致するファイルまたはディレクトリの情報（メタデータ）がメタデータ記憶部１１ａに記憶されている場合、すなわちステップＳ５０３では、アクセス許可判断部１０２が、ステップＳ５００で取得したそのメタデータ記憶部１１ａ内のファイルまたはディレクトリのメタデータにおいて、そのファイルまたはディレクトリのファイルハンドルと対になっているアクセス許可子が、指定された処理対象ファイルまたはディレクトリのアクセス許可子と一致するか否かを判定する。ここで、一致した場合にはステップＳ５０６に移行し、一致しなかった場合にはステップＳ５０５に移行する（ステップＳ５０４）。
【００８８】
アクセス許可子が一致しなかった場合、すなわちステップＳ５０５では、当該メタデータ処理要求は許可されないとして、メタデータアクセス処理部１０３ａは、ファイルハンドルが無効である旨を示す応答を返信して、終了する。例えば、メタデータアクセス処理部１０３ａは、処理対象ファイルまたはディレクトリのファイルハンドルがメタデータ記憶部１０ａ内で検索された場合に、そのファイルハンドルと指定された処理対象ファイルまたはディレクトリの情報とをアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにしてもよい。そして、アクセス許可判断部１０２からの問い合わせ結果に応じて、ファイルハンドルが無効である旨を示す応答を返信するようにしてもよい。
【００８９】
一方、アクセス許可子が一致した場合、すなわちステップＳ５０６では、当該メタデータ処理要求は許可されるとして、メタデータアクセス処理部１０３ａは、指定されたファイルまたはディレクトリのメタデータに対して、指定されたパラメータに従い要求された処理を行う。なお、要求された処理とは、例えば、アクセス権の変更等である。そして、完了応答を返信し（ステップＳ５０７）、終了する。
【００９０】
なお、ホスト２のストレージアクセス部２０は、ストレージ１から完了応答以外の応答が返ってきた場合には、エラーとして（メタデータに対する処理が失敗した旨を返却して）処理を終了してもよい。なお、ストレージアクセス部２０は、ストレージ１から指定したファイルハンドルが無効である旨の応答が返ってきた場合には、パス名解決からやり直すようにしてもよい。
【００９１】
また、メタデータ処理要求受け付け時の動作においても、ファイルハンドルの値とアクセス許可子の値とをまとめて判定することも可能である。例えば、図１７に示すように、上位ディレクトリのファイルハンドルとアクセス許可子の両方が一致するものをメタデータ記憶部１０ａから検索するようにしてもよい（ステップＳ５１０）。例えば、メタデータアクセス処理部１０３ａは、受け付けたメタデータ処理要求をアクセス許可判断部１０２に通知して、その要求を許可するか否かを問い合わせるようにし、アクセス許可判断部１０２が、ステップＳ５１０の処理を行い、一致するものがあった場合に当該メタデータ処理要求を許可する旨の問い合わせ結果を上位ディレクトリのファイルハンドルとともに返却するようにしてもよい。なお、ステップＳ５１１以降の動作は、図１６のステップＳ５０４以降の動作と同様であるため、説明省略する。
【００９２】
なお、上記動作はメタデータに対する処理要求の例を示したが、例えば、ファイルデータに対する処理要求（ｒｅａｄ／ｗｒｉｔｅ処理等）の場合には、メタデータアクセス処理部１０３ａではなく、ファイルデータアクセス処理部１０３ｂによって処理されるという点で異なるが、その要求を許可するか否かを判定する処理については、上記動作と同様でよい。
【００９３】
次に、アクセス許可子割り当て部１０１におけるアクセス許可子割り当て処理について説明する。アクセス許可子割り当て部１０１は、ファイルハンドルが指定され、アクセス許可子の割り当てが要求された際、以前あった同じ値のファイルハンドルとは区別できる値をアクセス許可子として割り当てる。
【００９４】
この方法として、ファイルハンドルごとに以前割り当てたアクセス許可子を記憶し、それらと異なる値を割り当てる方法がある。ファイルハンドルごとにそれまでに割り当てた最大のアクセス許可子を記憶し、それよりも大きな値を割り当ててもよい。また、ストレージ全体でそれまでに割り当てた最大のアクセス許可子を記憶し、それよりも大きな値をファイルハンドルにかかわらず割り当ててもよい。また、アクセス許可子割り当て部１０１にカレンダータイマーを持ち、割り当て時点での日付と時刻をアクセス許可子として割り当ててもよい。
【００９５】
このように、本実施形態によれば、ホストにファイルハンドルキャッシュをもつシステムにおいて、ホストが対象としたファイル・ディレクトリ以外のファイル・ディレクトリへの要求を避けることができる。その理由は、ファイル・ディレクトリの作成を一意に識別するアクセス許可子を割り当て、ファイルハンドルキャッシュでアクセス許可子を保持し、ストレージでファイルハンドルとアクセス許可子の両方が一致している要求しか処理しないためである。例えば、ファイル名やファイルハンドルの値が使い回されて同じ値となったとしても、アクセス許可子は異なる値となっているので、ホスト２が対象としたファイルまたはディレクトリ以外に対して処理を行うことを回避できる。
【００９６】
また、処理を行わないことにつき、ファイルハンドルが無効であることをホスト側に知らせることができるので、定期的なファイルハンドルキャッシュの無効化に頼らなくても、以降の要求で、無効なファイルハンドルに対してストレージに処理を要求することを避けることができる。すなわち、ファイルハンドルキャッシュの効率を改善することができる。
【００９７】
また、ストレージ側での判定処理により、ホスト２が対象としたファイルまたはディレクトリ以外に対して処理を行うことを回避できるので、ファイルハンドルキャッシュとストレージ内の情報とのずれを解消するために時間経過によりファイルハンドルキャッシュのエントリを無効化する必要がなくなり、ファイルハンドルキャッシュのヒット率が向上する。すなわち、ファイルハンドルキャッシュの効率をさらに改善することができる。
【００９８】
また、ストレージ側からファイルハンドルキャッシュが無効である旨の応答が返信された場合に、パス名解決を再実行することにより、パス名で指定されたファイルまたはディレクトリが新たに作成されていた場合にその処理を行うことが可能となる。すなわち、アクセス許可子により、目的外のファイル・ディレクトリに対して処理を行うことを避けることができるだけでなく、目的のファイル・ディレクトリへの処理も可能となる。
【００９９】
実施形態２．
なお、本発明の他の実施形態として、図１８に示すように、ストレージ１を、メタデータ管理部１０ａとメタデータ記憶部１１ａとを備えたメタデータサーバ１ａと、ファイルデータアクセス処理部１０３ｂとファイルデータ記憶部１１ｂとを備えたファイルサーバ１ｂとによって構成することも可能である。さらに、複数のメタサーバ１ａや、複数のファイルサーバ１ｂによって構成してもよい。
【０１００】
また、ファイルサーバ１ｂは、ＯＳＤ（Object Based Storage Device ）のオブジェクトを格納するデバイス（オブジェクトサーバあるいはオブジェクトデバイス）であってもよい。
【０１０１】
以下、本実施形態におけるファイルのメタデータについて説明する。ストレージ１が、メタサーバ１ａとファイルサーバ１ｂとに分かれて構成される場合、ファイルのメタデータは、そのファイルの属性情報と、アクセス許可子と、ファイルサーバ１ｂのファイルデータにアクセスするための情報（ファイルハンドルに相当する情報）とを含む。ファイルデータにアクセスするための情報は、例えば、ファイル中のデータブロック個々に関して、そのデータブロックを格納しているファイルサーバ１ｂにアクセスするための情報（ＩＰアドレス・ホスト名等）とそのファイルサーバ１ｂ内における該当データブロックのオフセッアドレスおよびサイズであってもよい。また、ファイルサーバ１ｂがＯＳＤであった場合には、ファイルを構成する個々のオブジェクトを格納しているオブジェクトサーバにアクセスするための情報と、オブジェクトサーバ内における該当オブジェクトの識別子であってもよい。
【０１０２】
なお、ファイルデータの読み込み・書き込み等、ファイルサーバ１ｂが処理を行う要求に関しては、アクセス許可子を使用しない形態もとり得る。このようにすることで、ファイルサーバ１ｂは要求を処理する際にメタサーバ１ａと通信する必要がなく、処理効率が上がる。
【０１０３】
実施形態３．
次に、本発明の第３の実施形態について説明する。本実施形態は、スナップショットやバックアップ機能によって多世代化されるストレージ１に対応させた実施形態である。ここでいう世代とは、スナップショットやバックアップ機能が実行されたポイント（時間軸におけるポイント）毎に、その時点での情報を一群の情報とみなすための区切りをいう。  
【０１０４】
まず、ファイルまたはディレクトリの新たな世代を作成する際の処理を説明する。図１９は、本実施形態において新たな世代を作成する際のストレージ１の動作例を示すフローチャートである。なお、本実施形態では、アクセス許可子割り当て部１０１が、新たな世代を作成する際のメタデータに関する処理を行う場合を例にして説明する。
【０１０５】
アクセス許可子割り当て部１０１は、あるファイルまたはディレクトリに対して、新たな世代が作成される際には、メタデータ記憶部１１ａに、新たに作成される世代のファイルまたはディレクトリ用のメタデータの記憶領域を確保する（ステップＳ６００）。
【０１０６】
次いで、旧世代のファイルまたはディレクトリのメタデータを、ステップＳ６００で確保した新世代のファイルまたはディレクトリ用のメタデータにコピーする（ステップＳ６０１）。そして、アクセス許可子割り当て部１０１は、新世代のファイルまたはディレクトリとなったファイルハンドルと対になるアクセス許可子を割り当てる（ステップＳ６０２）。なお、ここで割り当てるアクセス許可子は、当然旧世代のファイルハンドルと対になるよう割り当てられていたアクセス許可子とは異なる値となる。
【０１０７】
次いで、新世代のファイルまたはディレクトリとなったファイルハンドルと対になるよう割り当てたアクセス許可子を、ステップＳ６００で確保されたメタデータ記憶部１０ａの当該ファイルまたはディレクトリ用メタデータに上書き登録する。すなわち、旧世代のファイルまたはディレクトリのファイルハンドルと対で登録されていたアクセス許可子がコピーされた領域を、新たに割り当てた新世代用のアクセス許可子の値に変更する。
【０１０８】
次いで、上位のディレクトリのメタデータをメタデータ記憶部１０ａから検索し、上位ディレクトリのメタデータに含まれる下位要素として登録されている新世代を作成したファイルまたはディレクトリの情報についても、新たに割り当てたアクセス許可子に変更する（ステップＳ６０４）。
【０１０９】
このようにすることで、新たに世代を作成したファイルまたはディレクトリに関して、それまでとは異なるアクセス許可子が割り当てられ、上位のディレクトリからは新しい世代が参照可能となる。
【０１１０】
本実施形態において、ホスト２がストレージ１に処理要求を出した場合、ファイルハンドルが一致するファイルまたはディレクトリが複数メタデータ記憶部１０ａから見つかる場合もあるが、アクセス許可子が一致するものは一つしかないため、対象となるファイルまたはディレクトリ以外にアクセスされることはない。
【０１１１】
このようにすることで、多世代化されたストレージを使用するホストにファイルハンドルキャッシュをもつシステムにおいても、ホストが対象とした世代のファイル・ディレクトリ以外のファイル・ディレクトリへの要求を避けることができる。その理由は、世代ごとにアクセス許可子を変更し、ファイルハンドルキャッシュでアクセス許可子を保持し、ストレージでファイルハンドルと許可子の両方が一致している要求しか処理しないためである。
【０１１２】
また、ストレージが多世代化されている形態において、ホスト２からストレージ１に対してアクセスする対象を最新世代で指定する形態もとり得る。そのような場合には、ホスト２からストレージ１に対して要求を送る際、ファイルハンドルとアクセス許可子とともに、最新世代を示すフラグを付加するようにすればよい。そして、ストレージ１で管理するメタデータにおいて、図２０または図２１に示すように、新たな世代が作成される度に、旧世代のアクセス許可子を履歴情報として保持すればよい。例えば、メタデータアクセス処理部１０３ａは、世代が代わり、新しいアクセス許可子が割り当てられる毎に、それまでのアクセス許可子を記憶できるだけの記憶領域を確保するようにし、新しい世代のファイルまたはディレクトリ用のメタデータに、それまでのアクセス許可子をコピーした上で、それまで最新世代であったアクセス許可子を旧世代のアクセス許可子の履歴情報に追加し、新世代用に割り当てられたアクセス許可子を最新世代のアクセス許可子として登録するようにすればよい。
【０１１３】
このようにすることで、世代間の関連を記録することが可能となる。また、ファイルハンドルが使いまわされた場合には、過去のアクセス許可子を持たない状態でメタデータが作成されるため、ファイルハンドルの値が同一でも過去のアクセス許可子から関連があるかどうかが判断できる。
【０１１４】
また、メタデータにおいて、最新世代のアクセス許可子と過去のアクセス許可子とを分けて登録せずに、アクセス許可子割り当て部１０１が、アクセス許可子を単調増加する値あるいは日付（時刻含む）等の値からどれが最も新しいかが判断できる形で割り当てを行うようにしてもよい。また、メタデータにアクセス許可子が割り当てられた日付（時刻含む）を記録し、どの世代が最新かを判断可能としてもよい。
【０１１５】
次に、本実施形態においてホスト２から要求を受け付けた際のストレージ１の処理を説明する。図２２は、本実施形態においてホスト２からの要求を受け付けた際のストレージ１の動作例を示すフローチャートである。なお、本実施時形態では、ホスト２からは、対象とするファイルまたはフォルダのファイルハンドルとアクセス許可子とともに、最新世代を要求するか否かを示すフラグが指定されるものとする。なお、その他、要求する処理内容を示すパラメータ等が指定される。以下、メタデータに関する処理要求である場合を例にして説明する。なお、ホスト２からのメタデータ処理要求は、本例では、メタデータアクセス処理部１０３ａによって処理される。
【０１１６】
図２２に示すように、例えば、メタデータアクセス処理部１０３ａは、ホスト２から処理対象のファイルまたはディレクトリのファイルハンドルとアクセス許可子と最新世代を要求するか否かを示すフラグと、処理内容を示すパラメータとが指定された処理要求を受け付けると、メタデータ記憶部１１ａから処理対象ファイルまたはディレクトリのファイルハンドルと一致するファイルまたはディレクトリを検索する（ステップＳ７００）。
【０１１７】
ここで、一致するものがなかった場合にはステップＳ７０２に移行し、一致するものがあった場合にはステップＳ７０３に移行する（ステップＳ７０１）。ステップＳ７０２では、ファイルハンドルが無効である旨を示す応答を返信（要求元のホスト２に送信）して、終了する。
【０１１８】
一方、処理対象ファイルまたはディレクトリのファイルハンドルと一致するファイルまたはディレクトリの情報（メタデータ）がメタデータ記憶部１１ａに記憶されている場合、すなわちステップＳ７０３では、指定されたフラグが最新世代を要求する旨を示していればステップＳ７０９に移行し、そうでなければステップＳ７０４に移行する。ステップＳ７０４では、アクセス許可判断部１０２が、ステップＳ７００で取得したそのメタデータ記憶部１１ａ内のファイルまたはディレクトリのメタデータのうち、そのファイルまたはディレクトリのファイルハンドルと対になっているアクセス許可子が、指定された処理対象ファイルまたはディレクトリのアクセス許可子と一致するものを検索する。ここで、一致した場合にはステップＳ７０７に移行し、一致しなかった場合にはステップＳ７０６に移行する（ステップＳ７０５）。
【０１１９】
指定されたフラグが最新世代を要求する旨でない場合に、指定されたアクセス許可子が一致しない場合、すなわちステップＳ７０６では、当該メタデータ処理要求は許可されないとして、メタデータアクセス処理部１０３ａは、ファイルハンドルが無効である旨を示す応答を返信して、終了する。また、指定されたアクセス許可子が一致した場合、すなわちステップＳ７０７では、当該メタデータ処理要求は許可されるとして、メタデータアクセス処理部１０３ａは、指定されたファイルまたはディレクトリのメタデータに対して、指定されたパラメータに従い要求された処理を行えばよい。そして、完了応答を返信し（ステップＳ７０８）、終了する。
【０１２０】
一方、指定されたフラグが最新世代を要求する旨を示している場合、すなわちステップＳ７０９では、アクセス許可判断部１０２が、ステップＳ７００で取得したそのメタデータ記憶部１１ａ内のファイルまたはディレクトリのメタデータのうち、そのファイルまたはディレクトリのファイルハンドルと対になっているアクセス許可子または過去に対になっていたアクセス許可子が、指定された処理対象ファイルまたはディレクトリのアクセス許可子と一致するものを検索する。ここで、一致するものがあればステップＳ７１１に移行し、一致するものがなければステップＳ７０６に移行する（ステップＳ７１０）。
【０１２１】
なお、ステップＳ７０６では、当該メタデータ処理要求は許可されないとして、メタデータアクセス処理部１０３ａは、ファイルハンドルが無効である旨を示す応答を返信して、終了する。
【０１２２】
一方、指定されたフラグが最新世代を要求する旨を示している場合に、指定されたアクセス許可子と一致するものがあった場合、すなわちステップＳ７１１では、ステップＳ７０９で検索されたメタデータのうち、最も新しい世代用のメタデータを選択し、そのメタデータで示されるファイルハンドルを、処理対象のファイルまたはディレクトリのファイルハンドルとした上で、ステップＳ７０７へ移行する。なお、最も新しい世代用のメタデータは、例えば、アクセス許可子が単純増加する値を用いて割り当てられる場合には、最も大きい値が割り当てられているメタデータを選択すればよい。また、例えば、アクセス許可子が割り当てられた日付が記憶されている場合には、その日付に基づいて選択すればよい。また、例えば、処理対象のファイルまたはディレクトリの上位ディレクトリのメタデータにおいて、下位のファイルまたはディレクトリとして登録されているアクセス許可子を有しているメタデータを選択してもよい。
【０１２３】
なお、ホスト２のストレージアクセス部２０は、ストレージ１から完了応答以外の応答が返ってきた場合には、エラーとして（メタデータに対する処理が失敗した旨を返却して）処理を終了してもよい。なお、ストレージアクセス部２０は、ストレージ１から指定したファイルハンドルが無効である旨の応答が返ってきた場合には、パス名解決からやり直すようにしてもよい。
【０１２４】
なお、上記動作はメタデータに対する処理要求の例を示したが、例えば、ファイルデータに対する処理要求（ｒｅａｄ／ｗｒｉｔｅ処理等）の場合には、メタデータアクセス処理部１０３ａではなく、ファイルデータアクセス処理部１０３ｂによって処理されるという点で異なるが、その要求を許可するか否かを判定する処理および処理対象のファイルハンドルを取得する処理については、上記動作と同様でよい。
【０１２５】
このようにすることで、多世代化されたストレージに対して、目的のファイルまたはディレクトリの最新世代にアクセスすることが可能となる。
【０１２６】
なお、上記実施形態には、ファイルまたはディレクトリを作成する際に、該ファイルまたはディレクトリの作成を一意に識別する識別子であるアクセス許可子を割り当てて、割り当てたアクセス許可子を、該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するアクセス許可子割り当て部と、アクセス処理部が受け付けたアクセス要求に対し、ファイルハンドルとアクセス許可子との組み合わせに基づいて、該アクセス要求の処理対象として指定されたファイルハンドルが有効か無効かを判断するアクセス許可判断部とを備え、アクセス処理部は、ファイルハンドル取得要求に対しファイルハンドルとともに対となるアクセス許可子を返却するストレージの構成が示されている。上記実施形態において、アクセス許可子割り当て部は、アクセス許可子割り当て部１０１によって実現されている。また、アクセス許可判断部は、アクセス許可判断部１０２によって実現されている。なお、アクセス処理部は、アクセス処理部１０３によって実現されている。
【０１２７】
また、上記実施形態には、アクセス許可判断部が、アクセス要求に含まれるファイルハンドルとアクセス許可子の組と、メタデータとして記憶されているファイルハンドルとアクセス許可子の組とが一致する場合に、アクセス要求の処理対象として指定されたファイルハンドルが有効であると判断し、そうでなければ無効であると判断するストレージの構成が示されている（例えば、第１の実施形態におけるアクセス許可判断部１０２を参照。）。
【０１２８】
また、上記実施形態には、アクセス許可子割り当て部が、ファイルまたはディレクトリの新規世代を作成する際に、新規世代とされた該ファイルまたはディレクトリを一意に識別するアクセス許可子を割り当てて、新規世代の該ファイルまたはディレクトリのメタデータとして、該ファイルまたはディレクトリのファイルハンドルと対にして記憶するストレージの構成が示されている（例えば、第３の実施形態におけるアクセス許可判断部１０２，図１９を参照。）。
【０１２９】
また、上記実施形態には、アクセス許可子割り当て部が、新規世代のファイルまたはディレクトリのメタデータとして、旧世代の該ファイルまたはディレクトリに対して割り当てられていたアクセス許可子の履歴も併せて記憶するストレージの構成が示されている（例えば、第３の実施形態におけるアクセス許可子割り当て部１０１，図１９〜図２０を参照。）。
【０１３０】
また、上記実施形態には、アクセス許可判断部が、アクセス要求で最新世代のファイルまたはディレクトリを処理対象とする旨が指定されていた場合には、アクセス要求に含まれるファイルハンドルとアクセス許可子の組に対し、メタデータとして記憶されているファイルハンドルと最新世代のアクセス許可子の組またはファイルハンドルと旧世代のアクセス許可子の組が一致する場合に、該アクセス要求の処理対象として指定されたファイルハンドルが有効であると判断するととともに、最新世代のファイルまたはディレクトリを処理対象にするストレージの構成が示されている（例えば、第３の実施形態におけるアクセス許可判断部１０２，図２２を参照。）。
【０１３１】
また、上記実施形態には、メタデータを記憶するメタデータ記憶部と、メタデータに対するアクセス要求に応じてメタデータにアクセスする第１のアクセス処理部を有するメタサーバと、ファイルデータを記憶するファイルデータ記憶部と、ファイルデータに対するアクセス要求に応じてファイルデータにアクセスする第２のアクセス処理部とを有するファイルサーバとによって構成されるストレージであって、メタサーバが、アクセス許可子割り当て部と、アクセス許可判断部とを含むストレージの構成が示されている（例えば、第２の実施形態参照。）。また、第２のアクセス処理部が、ファイルデータに対するアクセス要求に対して、アクセス許可判断部に許否の判定をさせずに、受け付けたアクセス要求に応じてファイルデータにアクセスするストレージの構成が示されている。なお、上記実施形態では、第１のアクセス処理部は、メタデータアクセス処理部１０３ａによって実現されている。また、第２のアクセス処理部は、ファイルデータアクセス処理部１０３ｂによって実現されている。
【０１３２】
また、上記実施形態には、ユーザプログラムに従って動作するホストコンピュータと、ホストコンピュータが保持しているファイルハンドルのキャッシュの内容に従って処理対象とするファイルまたはディレクトリが指定されるアクセス要求に応じてデータにアクセスするストレージとを備えた計算機システムであって、ホストコンピュータは、ストレージに対するファイルハンドル取得要求に応じて返信されるファイルハンドルとアクセス許可子とを対にして、ファイルハンドルのキャッシュとして記憶する記憶装置と、処理対象とするファイルまたはフォルダを特定するための情報として、ファイルハンドルのキャッシュとして記憶されているファイルハンドルとアクセス許可子の対の情報を指定したアクセス要求を、ストレージに対して送信するストレージアクセス部とを含む計算機システムの構成が示されている。なお、上記実施形態では、ホストコンピュータの記憶装置は、ファイルハンドルキャッシュ２０１によって実現されている。また、ストレージアクセス部は、ストレージアクセス部２０によって実現されている。
【産業上の利用可能性】
【０１３３】
本発明は、ホスト側で保持されているファイルハンドルによって処理対象が指定されるアクセス要求に応じてデータにアクセスするストレージを用いたシステムであれば、どのようなシステムにも適用可能である。
【図面の簡単な説明】
【０１３４】
【図１】第１の実施形態におけるストレージの構成例を示すブロック図である。
【図２】第１の実施形態におけるストレージを備えた計算機システムのより具体的な構成例を示すブロック図である。
【図３】ファイルハンドルキャッシュ２０１に記憶される情報の一例を示す説明図である。
【図４】ファイルハンドルキャッシュ２０１に記憶される情報の他の例を示す説明図である。
【図５】ストレージ内で保持されるディレクトリのメタデータの一例を示す説明図である。
【図６】ストレージ内で保持されるファイルのメタデータの一例を示す説明図である。
【図７】第１の実施形態のストレージアクセス部２０におけるパス名解決処理の動作例を示すフローチャートである。
【図８】第１の実施形態のストレージアクセス部２０におけるパス名解決処理の他の動作例を示すフローチャートである。
【図９】第１の実施形態のストレージアクセス部２０におけるパス名解決処理の他の動作例を示すフローチャートである。
【図１０】ストレージ１におけるファイルハンドル取得要求受け付け時の動作例を示すフローチャートである。
【図１１】ストレージ１におけるファイルハンドル取得要求受け付け時の他の動作例を示すフローチャートである。
【図１２】ストレージ１におけるファイル作成要求受け付け時の動作例を示すフローチャートである。
【図１３】ストレージ１におけるファイル作成要求受け付け時の他の動作例を示すフローチャートである。
【図１４】ストレージ１におけるディレクトリ作成要求受け付け時の動作例を示すフローチャートである。
【図１５】ストレージ１におけるディレクトリ作成要求受け付け時の他の動作例を示すフローチャートである。
【図１６】ストレージ１におけるメタデータ処理要求受け付け時の動作例を示すフローチャートである。
【図１７】ストレージ１におけるメタデータ処理要求受け付け時の他の動作例を示すフローチャートである。
【図１８】第２の実施形態におけるストレージを備えた計算機システムの構成例を示すブロック図である。
【図１９】第３の実施形態において新たな世代を作成する際のストレージ１の動作例を示すフローチャートである。
【図２０】第３の実施形態におけるストレージ内で保持されるディレクトリのメタデータの一例を示す説明図である。
【図２１】第３の実施形態におけるストレージ内で保持されるファイルのメタデータの一例を示す説明図である。
【図２２】第３の実施形態においてホスト２からの要求を受け付けた際のストレージ１の動作例を示すフローチャートである。
【符号の説明】
【０１３５】
１  ストレージ
１０  制御手段
１０１  アクセス許可子割り当て部
１０２  アクセス許可判断部
１０３  アクセス処理部
１１  記憶手段
２  ホスト
２０  ストレージアクセス部
２０１  ファイルハンドルキャッシュ
１ａ  メタサーバ
１０ａ  メタデータ管理部
１０３ａ  メタデータアクセス処理部
１１ａ  メタデータ記憶部
１ｂ  ファイルサーバ
１０３ｂ  ファイルデータアクセス処理部
１１ｂ  ファイルデータ記憶部
【図１】
0005076736.tif 000002
【図２】
0005076736.tif 000003
【図３】
0005076736.tif 000004
【図４】
0005076736.tif 000005
【図５】
0005076736.tif 000006
【図６】
0005076736.tif 000007
【図７】
0005076736.tif 000008
【図８】
0005076736.tif 000009
【図９】
0005076736.tif 000010
【図１０】
0005076736.tif 000011
【図１１】
0005076736.tif 000012
【図１２】
0005076736.tif 000013
【図１３】
0005076736.tif 000014
【図１４】
0005076736.tif 000015
【図１５】
0005076736.tif 000016
【図１６】
0005076736.tif 000017
【図１７】
0005076736.tif 000018
【図１８】
0005076736.tif 000019
【図１９】
0005076736.tif 000020
【図２０】
0005076736.tif 000021
【図２１】
0005076736.tif 000022
【図２２】
0005076736.tif 000023