(57)【要約】【課題】ユーザがファイルへアクセスした際のアクセス性能の低下を抑制することができる階層管理ファイルシステムのファイル管理方法を提供する。【解決手段】階層管理ファイルシステムのファイル管理方法は、サーバが高速ボリュームと低速ボリュームへファイルシステム（例えば、ＦＳ１（１０１５）、ＦＳ２（１０１６））を作成し、ファイル共有サーバが、仮想ファイルシステム２００１として、そのファイルシステムを仮想的に１つに統合する。そして、ファイルアクセス時ではなく、低速ボリュームへ作成したファイルシステムへ事前に移動対象ファイルを移動する。その後、ユーザがファイルへアクセスした場合、そのファイルをコピーせずに直接移動先のファイルシステムにアクセスすることで、性能低下を抑えることができる。【選択図】図２
2010097359.tif 000002
【特許請求の範囲】
【請求項１】
第１のボリュームと第２のボリュームと第３のボリュームとを有するストレージシステムを備え、前記ストレージシステムとクライアントコンピュータに接続したファイルサーバのファイル管理方法であって、
前記第１のボリュームを第１のファイルシステムとして初期化するステップと、
前記第２のボリュームを第２のファイルシステムとして初期化するステップと、
前記第１のファイルシステムの所定のディレクトリ名に対応する第１のディレクトリに格納した第１のファイル群と、前記第２のファイルシステムの前記第１のディレクトリ名に対応する第２のディレクトリに格納した第２のファイル群とを元に、仮想的に、前記第１のディレクトリ名に対応するディレクトリに前記第１のファイル群と前記第２のファイル群とを含む階層ファイル群とを格納した仮想ファイルシステムを定義するステップと、
前記定義するステップに従って、前記階層ファイル群と前記第１のファイル群および前記第２のファイル群との対応情報を前記第３のボリュームに格納するステップと、
前記クライアントコンピュータから階層ファイル群の１つを指定したアクセス要求を受信した場合、前記対応情報を元に、前記第１のファイルシステムまたは前記第２のファイルシステムにアクセスするステップと、
移動対象ファイルを前記階層ファイル群から特定するステップと、
前記移動対象ファイルに対応する前記第１のファイル群の一部のファイルのデータを、前記第１のファイルシステムから前記第２のファイルシステムへコピーし、前記対応情報の前記移動対象ファイルに関する対応を変更するステップと、を有する
ことを特徴とするファイル管理方法。
【請求項２】
請求項１に記載のファイル管理方法であって、
前記対応情報は、前記階層ファイル群に含まれるファイル毎に、前記第１のファイルシステムに格納したか、前記第２のファイルシステムに格納したかを示す対応を有する
ことを特徴とするファイル管理方法。
【請求項３】
請求項２に記載のファイル管理方法であって、
再構築処理要求を受理した場合に、前記第１のボリュームと前記第２のボリュームにアクセスすることで、前記対応情報を再作成するステップを有する
ことを特徴とするファイル管理方法。
【請求項４】
請求項１に記載のファイル管理方法であって、
前記第２のボリュームの障害を検知するステップと、
前記クライアントコンピュータから受信した前記第１のディレクトリ名を指定したファイル名参照要求に対して、前記対応情報を参照することで、前記階層ファイル群の一部であって、前記第１のファイル群と前記第２のファイル群を仮想的に含む１つ以上のファイルに対応するファイル名を送信するステップと、
前記障害の検知に応じて、前記クライアントコンピュータから受信した前記階層ファイル群の１つを特定したファイルの読み込みまたは書き込み要求に対して、エラーを送信するステップと、を有する
ことを特徴とするファイル管理方法。
【請求項５】
請求項１に記載のファイル管理方法であって、
前記第２のファイルシステムを指定した解除要求に応じて、前記仮想ファイルシステムの前記階層ファイル群から前記第２のファイルシステムに格納した前記第２のファイル群に対応する１つ以上のファイルを特定するステップと、
前記特定した１つ以上のファイルに関する対応を前記対応情報から削除し、前記クライアントコンピュータからの前記仮想ファイルシステムと前記第１のディレクトリ名を指定したファイル名参照要求から前記特定した１つ以上のファイルに対応するファイル名の送信を抑止するステップと、を有する
ことを特徴とするファイル管理方法。
【請求項６】
請求項１に記載のファイル管理方法であって、
前記仮想ファイルシステムの定義を解除するステップと、
前記解除に従って、前記クライアントコンピューターから指定した前記第１のファイルシステムに格納した前記第１のファイル群の１つを指定したアクセス要求を受信した場合、前記第１のファイルシステムにアクセスするステップと、を有する
ことを特徴とするファイル管理方法。
【請求項７】
複数のボリュームを有する記憶装置と、前記ボリューム上に実際にファイルを格納する実ファイルシステムを管理するファイルサーバとを有する計算機システムにおいて、前記実ファイルシステムを階層的に統括管理する階層管理ファイルシステムであって、
前記記憶装置は、ファイルへのアクセス要求があるとアクセスする仮想ファイルシステムを、前記記憶装置内の前記実ファイルシステムが格納されているボリュームと異なるボリュームに記憶しており、
前記仮想ファイルシステムは、前記複数の実ファイルシステムがどの階層レベルにあるかというファイルシステム階層管理情報と、
クライアントが利用するファイルのファイル名がどの階層レベルのファイルシステムに格納されているかというファイル管理情報とを記憶しており、
前記ファイルサーバは、
ファイルが格納されている階層レベルの移動要求を受理すると、前記ファイル管理情報を検索して該ファイルに該当するレコードを書き換え、該ファイルを指定された階層レベルの実ファイルシステムへコピーし、該ファイルを元の階層レベルの実ファイルシステムから削除する階層移動処理部を有し、
ファイルへのアクセス要求を受理すると、前記仮想ファイルシステムにアクセスし、前記ファイル管理情報を参照して、該アクセス要求のファイル名のファイルが格納されている実ファイルシステムにアクセスする
ことを特徴とする階層管理ファイルシステム。
【請求項８】
前記ファイルシステム階層管理情報は、前記実ファイルシステムへのマウントパスと、実ファイルシステムの識別ＩＤと、階層レベルとを関連づけた情報であり、
前記ファイル管理情報は、ファイルのファイル名と、該ファイルが格納されている実ファイルシステムの識別ＩＤとを関連づけた情報である
ことを特徴とする請求項７に記載の階層管理ファイルシステム。
【請求項９】
前記ファイルサーバは、
前記実ファイルシステムの階層管理への参加要求を受理すると、前記ファイルシステム階層管理情報に、前記参加要求で指定された実ファイルシステムの識別ＩＤと、階層レベルとを追加し、仮想ファイルシステムおよび実ファイルシステムを含むファイルシステムの、該ファイルシステムのマウントパスと、該ファイルシステムの識別ＩＤと、ポインタで構成される階層データを作成し、複数の階層データで構成される階層データリストに挿入する階層管理参加処理部を有する
ことを特徴とする請求項７に記載の階層管理ファイルシステム。
【請求項１０】
前記ファイルサーバは、さらに、
前記実ファイルシステムの階層管理からの離脱要求を受理すると、前記階層データリストから、前記離脱要求で指定された実ファイルシステムの識別ＩＤがあるか否かを検索し、前記指定された実ファイルシステムの識別ＩＤがある場合には、前記階層データリストから前記指定された実ファイルシステムの階層データを外す階層管理離脱処理部を有する
ことを特徴とする請求項９に記載の階層管理ファイルシステム。
【請求項１１】
前記ファイルサーバは、
前記階層管理の再構築要求を受理すると、前記記憶装置に前記ファイルシステム階層管理情報があるか否かを判定し、前記ファイルシステム階層管理情報がある場合、該ファイルシステム階層管理情報に登録されている実ファイルシステムの中から階層レベルの一番低いものを選択し、前記選択した階層レベルの実ファイルシステムのファイルを走査して、前記ファイル管理情報を再作成し、前記記憶装置に記憶し、未処理の階層レベルのものがある場合は、次に階層レベルの高いものを選択する管理情報再構築処理部を有する
ことを特徴とする請求項７に記載の階層管理ファイルシステム。
【請求項１２】
前記ファイルサーバは、
前記クライアントからファイル名参照要求を受理すると、前記ファイル管理情報を参照して、該当するファイル名を前記クライアントに送信し、
前記クライアントからファイルの読み込みまたは書き込み要求を受理し、前記ファイル管理情報を参照して該当するファイルにアクセスできない場合、エラー情報を前記クライアントに送信する
ことを特徴とする請求項７に記載の階層管理ファイルシステム。
【請求項１３】
前記ファイル管理情報は、ファイルシステムがアクセス可否の管理に用いるｉｎｏｄｅ情報を保持する、
ことを特徴とする請求項８に記載の階層管理ファイルシステム。
【請求項１４】
前記階層管理ファイルシステムは、
前記ファイル名と、前記ｉｎｏｄｅ情報と、前記実ファイルシステムの識別ＩＤと、前記実ファイルシステムのｉｎｏｄｅ情報と、データリストを作成するポインタとを含んでなるデータ構造とし、前記データ構造をキャッシュから前記ｉｎｏｄｅ情報を検索できる
ことを特徴とする請求項１３に記載の階層管理ファイルシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルシステムの特性に応じたファイル最適配置を行うファイル管理方法および階層管理ファイルシステムに関する。
【背景技術】
【０００２】
現在、様々な性能のストレージ装置が開発されており、ストレージ装置を構成するボリュームには、性能に差がある。一般的には、性能が高いボリュームは高価で、容量を多く確保することが出来ない。一方、性能が低いボリュームは安価で、容量を多く確保することができる。
【０００３】
また、ボリュームに格納されるデータは、作成直後はユーザが頻繁に利用するが、しばらくすると利用されなくなる傾向がある。その利用されないデータが高性能なボリュームに格納され続ける場合、高価なボリュームが無駄に消費される問題がある。
【０００４】
これらの問題を解決する、階層ストレージ管理（ＨＳＭ(Hierarchical Storage Management）機能）と呼ぶデータ管理方法が知られている。ＨＳＭ機能では、ストレージ装置が、性能の異なるボリュームを複数持ち、ファイル共有サーバが、それらのボリュームにファイルシステムを作成する。そして、ファイル共有サーバは、性能が高いボリュームから性能が低いボリュームへ、ファイルの利用頻度にあわせて、移動させる。
【０００５】
このように、ＨＳＭ機能は頻繁に利用されるファイルを「高速・高価」なボリュームに保持し、あまり利用されていないファイルを「低速・安価」なボリュームに保持する。ＨＳＭ機能は、このようにファイルを制御することで、ストレージにかかるコストを削減することを目的としている。
【０００６】
特許文献１のＨＳＭ機能では、ファイルシステムが、利用されていないファイルを低速ボリュームへ移動させるように指示する。その後、アプリケーションがファイルへアクセスしたときにファイルを低速ボリュームへ移動する。その際、ファイルシステムが高速ボリュームのファイル管理情報を書き換えることが開示されている。
【特許文献１】ＵＳ２００４／０１９３７６０Ａ１
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のＨＳＭ機能では、高速ボリュームのファイルシステムが、高速ボリュームに保持しているスタブファイル（または管理情報）を参照してファイルの移動先情報を認識する。そして、ＨＳＭ機能を使用して高速ボリュームと低速ボリュームの間でファイルを移動する契機がユーザのファイルアクセスである。つまりユーザがファイルへアクセスするときに、ファイルシステムが移動対象ファイルを低速ボリュームから高速ボリュームにコピーするため、ファイル移動時のアクセス性能が低下する問題がある。また、高速ボリュームより早い超高速ボリュームを利用しようとしても、スタブファイルは高速ボリュームに格納されているため、超高速ボリュームの性能を生かしきれない問題がある。
【０００８】
本発明は、前記の課題を解決するための発明であって、ユーザがファイルへアクセスした際のアクセス性能の低下を抑制することができるファイル管理方法および階層管理ファイルシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記目的を達成するために、本発明の階層管理ファイルシステムは、ファイル共有サーバが高速ボリュームと低速ボリュームへファイルシステムを作成する。そして、ファイル共有サーバが、そのファイルシステムを仮想的に１つに統合する。階層管理ファイルシステムは、ファイルアクセス時ではなく、低速ボリュームへ作成したファイルシステムへ事前に移動対象ファイルを移動する。そして、ユーザがファイルへアクセスした場合、そのファイルをコピーせずに直接移動先にアクセスすることで、性能低下を抑制することができる。
【発明の効果】
【００１０】
本発明によれば、ユーザがファイルへアクセスした際のアクセス性能の低下を抑制することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明を実施するための最良の形態について、図面に基づいて詳細に説明する。なお、これにより本発明が限定されるものではない。
（実施形態１）
図１は、本発明が適用される階層管理ファイルシステムの構成例を示す図である。階層管理ファイルシステムは、サーバ１００１（ファイルサーバ）と、サーバ１００１に接続されたＲＡＩＤ（Redundant Arrays of Independent Disks）装置１０１４（記憶装置）、管理端末１０２０、クライアント１０３０（クライアントコンピュータ）を有する。サーバ１００１とＲＡＩＤ装置１０１４は、ＳＡＮ（Storage Area Network）で接続されている。また、管理端末１０２０、クライアント１０３０、およびサーバ１００１は、ＬＡＮ（Local Area Network）で接続されている。
【００１２】
サーバ１００１は、メモリ１００８に格納されたプログラムを実行するＣＰＵ１００２、ＲＡＩＤ装置１０１４との通信に使用するディスクアダプタ１００３、管理端末１０２０やクライアント１０３０との通信に利用するネットワークアダプタ１００４、プログラムやデータを格納するメモリ１００８を搭載し、それらは内部的な通信路（例えば、バス）によって接続されている計算機である。
【００１３】
サーバ１００１のメモリ１００８には、プログラムやデータが格納される。具体的には、メモリ１００８には、管理コマンド１００５、階層管理ファイルシステムプログラム１００６、実ファイルシステムプログラム１００７、ファイル要求受信プログラム３００１、オペレーティングシステム１００９、管理情報１０１０が格納される。
【００１４】
管理コマンド１００５は、サーバ１００１が提供するＨＳＭ機能を管理するコマンドである。階層管理ファイルシステムプログラム１００６は、サーバ１００１が提供するＨＳＭ機能の中心となるプログラムである。実ファイルシステムプログラム１００７は、ＲＡＩＤ装置１０１４のＦＣ（Fibre Channel）ディスクドライブ１０１２、ＳＡＴＡ（Serial Advanced Technology Attachment）ディスクドライブ１０１３のファイルシステムであるＦＳ１（１０１５）、ＦＳ２（１０１６）を管理するプログラムである。オペレーティングシステム１００９は、サーバ１００１全体を管理するプログラムである。オペレーティングシステム１００９は、後述するＶＦＳ３００２を内部に有する。
【００１５】
ファイル要求受信プログラム３００１は、管理端末１０２０から端末プログラムの接続を受け付けたり、クライアント１０３０のファイルアクセスプログラム１０３１からファイルアクセス要求を受け取るサーバプログラムである。管理情報１０１０は、ＨＳＭ機能を提供するための管理データである。これらのプログラムやデータの詳細は後述する。
【００１６】
階層管理ファイルシステムプログラム１００６は、階層管理参加処理部８０００（図８参照）と、階層管理離脱処理部９０００（図９参照）と、管理情報再構築処理部１００００（図１０参照）と、階層移動処理部１１０００（図１１参照）と、Ｌｏｏｋｕｐ処理部１２０００（図１２参照）と、Ｃｒｅａｔ処理部１３０００（図１３参照）と、Ｍｋｄｉｒ処理部１４０００（図１４参照）と、Ｒｅａｄｄｉｒ処理部１５０００（図１５参照）から構成される。
【００１７】
ＲＡＩＤ装置１０１４は、ＲＡＩＤ装置１０１４がサーバ１００１へ提供するボリュームを制御するディスク制御装置１０１１と、サーバ１００１へ提供するボリュームであるＦＣディスクドライブ１０１２ａ（１０１２），１０１２ｂ（１０１２）と、ＳＡＴＡディスクドライブ１０１３とを有する。ＦＣディスクドライブ１０１２ａには、後述する階層管理テーブル４０００（ファイルシステム階層管理情報）とファイル管理テーブル７０００（ファイル管理情報）を格納するＦＳＭファイルシステム１０１７を格納する。ディスク制御装置１０１１と、ＦＣディスクドライブ１０１２と、ＳＡＴＡディスクドライブ１０１３と、ＦＳＭファイルシステム１０１７とは、内部的な通信路で接続されている。なお、ＦＳＭは、File System Managementの略である。
【００１８】
なお、ＦＣディスクドライブ１０１２とＳＡＴＡディスクドライブ１０１３には、性能差がある。例えば、ＦＣディスクドライブ１０１２はＳＡＴＡディスクドライブ１０１３に比べて性能がよい。さらに、ＦＣディスクドライブ１０１２の代わりにＳＡＳ（Serial Attached SCSI）ドライブを用いてもよい。
【００１９】
このように複数種類のディスクドライブを使い分ける理由としては、日々の技術進歩によってより安価に大容量のディスクドライブ（例えばＳＡＴＡディスクドライブ）が流通し、またそれと同時に、高価であるが高性能なディスクドライブ（例えば、ＦＣディスクドライブや、ＳＡＳディスクドライブや、フラッシュメモリを用いたＳＳＤ（Solid State Disk））が流通しているため、コスト、容量、信頼性、性能などに関する項目から少なくとも二つ以上の条件を満たす必要がでてきたためである。
【００２０】
なお、ディスクドライブは、ＦＣディスクドライブ１０１２やＳＡＴＡディスクドライブ１０１３だけでなく、ＣＤ（Compact Disc）やＭＯ（Magneto-Optical）ディスク、ＤＶＤ（登録商標）などの光学メディアなどでも良く、ファイルシステムが作成できるストレージ装置であれば、本発明は適用できる。さらに、ディスクドライブだけでなく、ファイルシステムとして認識できれば適用することができ、ＮＦＳ（Network File System）やＣＩＦＳ（Common Internet File System）といったファイル共有プロトコルのファイルシステムも、本発明は適用できる。
【００２１】
なお、ディスクドライブに関する性能差として考えられるのは、最大転送速度や、最大ＩＯＰＳ（Input/Output operations Per Second）などが第一に考えられるが、これらの値を価格や消費電力の少なくともいずれかで割った値を考えてもよい。また、性能差以外の特徴値について差異（例えば、コスト、容量、信頼性）を考慮して複数種類のディスクドライブを使い分けてもよい。また、当該特徴値としてはディスクドライブを製造するベンダーが提供するカタログ値を元に判断することが考えられるが、個々のディスクドライブに実際にアクセスを行うことで特徴値を把握してもよい。以後、明細書では性能を例として説明を行うが、本発明は性能以外の特徴値を元としたディスクドライブの併用にも有効である。
【００２２】
ＦＳ１（１０１５）はＦＣディスクドライブ１０１２に作成される。また、ＦＳ２（１０１６）はＳＡＴＡディスクドライブ１０１３に作成される。ファイルシステムは、クライアント１０３０のユーザが作成したデータをファイル形式で保持する。以降、これらのファイルシステムを実ファイルシステムと呼ぶ場合がある。これは、後述するように、本発明が「仮想」ファイルシステムを作成するため、ボリューム上に作成される「本当の」ファイルシステムという意味である。
【００２３】
管理端末１０２０は、サーバ１００１を管理する管理者が使用する計算機である。管理者は、管理端末１０２０からネットワークを通して、サーバ１００１の管理コマンド１００５を使用する。クライアント１０３０は、サーバ１００１が提供するファイル共有サービスを利用する計算機である。クライアントを利用するユーザは、ファイルアクセスプログラム１０３１を通してサーバ１００１のファイル共有サービスを利用する。
【００２４】
なお、以後の説明で用いる用語の意味は、以下に示す。
（Ａ）「ファイル」：クライアント１０３０またはサーバ１００１が生成したデータを格納する論理的な存在。
（Ｂ）「ディレクトリ」：ファイルやディレクトリを集約して管理する論理的な単位。
（Ｃ）「ディレクトリ名」：ディレクトリに付与される名前。
（Ｄ）「パス」または「パス名」：ファイルまたはディレクトリを識別する識別情報。
（Ｅ）「ファイル名」：ファイルに付与される名前。なお、以後の説明ではファイル名にパス名が含まれることがある。
【００２５】
図２は、本実施形態に係るＨＳＭ機能を使用した場合のファイルシステムツリー構造を示す図である。ファイルシステムツリーは、サーバ１００１が構築し、クライアント１０３０へ提供しているファイルシステム名前空間である。
【００２６】
ファイルシステムツリー２０００は、「／（ルート）」と、ルートの下の「ＥＸＰＯＲＴ」と「Ｔｉｅｒ１」と「Ｔｉｅｒ２」で構成されている。ＦＳ１（１０１５）は、Ｔｉｅｒ１にマウントされ、ＦＳ２（１０１６）はＴｉｅｒ２にマウントされている。本実施形態のＨＳＭ機能は、Ｔｉｅｒ１とＴｉｅｒ２をＥＸＰＯＲＴディレクトリへ重ねる。このとき、ファイルシステムスタック構造２００２のように、ＦＳ１（１０１５）を上にＦＳ２（１０１６）を下に配置して、仮想ファイルシステム２００１を作成する。
【００２７】
本実施形態は、ＥＸＰＯＲＴ以下をクライアント１０３０が使用する。クライアント１０３０のユーザがファイルを作成すると、ＦＳ１（１０１５）にファイルが作成される。そして、そのファイルの利用頻度が低下すると、そのファイルをＦＳ２（１０１６）へ移動する。こうすることで、利用頻度の低いファイルが高速ボリュームから低速ボリュームへ移動する。なお、利用頻度が低下したファイルは、サーバ１００１の利用者が特定してもよく、サーバ１００１に予め設定された所定のルールに基づき特定してもよく、またその他の方法で特定してもよい。
【００２８】
ＨＳＭ機能が仮想ファイルシステム２００１を構成するときに、ＦＳ１（１０１５）とＦＳ２（１０１６）に同名のファイルがあった場合、ＦＳ１（１０１５）のファイルが仮想ファイルシステム２００１に登録される。その結果、ＦＳ２（１０１６）にある同名のファイルはクライアント１０３０へ提供されない。これは、ファイルシステムスタック構造２００２で示すように、ＦＳ１（１０１５）がＦＳ２（１０１６）を覆うように配置されるためである。
【００２９】
なお、ファイルシステム統合の対象となったＦＳ１（１０１５）とＦＳ２（１０１６）は、クライアント１０３０への提供を停止してもよい。以上に示した方法により、管理者は使用中のファイルシステムを自由に統合できる。
【００３０】
図３は、サーバのソフトウェア構成を示す図である。サーバ１００１のソフトウェア構成は、ファイル要求受信プログラム３００１、管理コマンド１００５、ＶＦＳ（Virtual File System）３００２、階層管理ファイルシステムプログラム１００６、実ファイルシステムプログラム１００７から構成される。管理コマンド１００５と、クライアント１０３０からのファイル要求を受信したファイル共有サーバプログラムなどのファイル要求受信プログラム３００１とは、オペレーティングシステム１００９の一部であるＶＦＳ３００２にアクセスを要求する。ＶＦＳ３００２は、実ファイルシステムプログラム１００７や階層管理ファイルシステムプログラム１００６のアクセスインタフェースを仮想化し、管理コマンド１００５やファイル要求受信プログラム３００１に提供する機能を持つプログラムである。なお、管理コマンド１００５および階層管理ファイルシステムプログラム１００６は、本実施形態で特徴となる部分であるので、図３において太線で記載している。
【００３１】
階層管理ファイルシステムプログラム１００６は、ＶＦＳ３００２を通してファイル要求受信プログラム３００１や管理コマンド１００５からアクセス要求を受け取る。また、階層管理ファイルシステムプログラム１００６は、実ファイルシステムプログラム１００７（例えば、ＦＳ１（１０１５）、ＦＳ２（１０１６））へアクセスを要求する。一方、実ファイルシステムプログラム１００７は、ＶＦＳ３００２から直接アクセス要求を受け取る場合もある。このように、ＶＦＳ３００２は、ファイル要求受信プログラム３００１とファイルシステムプログラム（階層管理ファイルシステムプログラム１００６および実ファイルシステムプログラム１００７）の仲介を行うオペレーティングシステムを構成するソフトウェアである。
【００３２】
なお、サーバ１００１にて動作するファイル要求受信プログラム３００１や管理コマンドはカーネルの一部として動作してもよく、カーネルとは別なより保護された実行環境である一般プログラムとして動作してもよい。
【００３３】
ファイル要求受信プログラム３００１が、クライアント１０３０から受信する要求には、例えば以下の種類がある。なお、下記説明ではＮＦＳとＣＩＦＳにおける例示をしているが、これ以外のコマンドが含まれてもよく、また他のコマンドで代替してもよい。
【００３４】
（Ａ）ファイルまたはディレクトリのパス名から、以下（Ｂ）〜（Ｈ）のファイルまたはディレクトリに対する参照および操作のために必要な識別子（以後、ファイルハンドル識別子と呼ぶ。）を取得するｌｏｏｋｕｐ要求。ＮＦＳプロトコルの場合は、例えば、パス名を指定するＬｏｏｋｕｐコマンドがある。
【００３５】
（Ｂ）指定したディレクトリに指定したファイル名でファイルを生成するｃｒｅａｔ要求。ＮＦＳプロトコルの場合は、例えば、ｌｏｏｋｕｐ要求で取得したディレクトリのファイルハンドル識別子と、ファイル名を引数とするＣｒｅａｔｅコマンドがある。ＣＩＦＳプロトコルの場合は、例えば、ディレクトリ名とファイル名を引数としたＳＭＢ＿ＣＯＭ＿ＣＲＥＡＴＥコマンドがある。
【００３６】
（Ｃ）指定したディレクトリ配下に新規ディレクトリを生成するｍｋｄｉｒ要求（新規ディレクトリのディレクトリ名も指定する）。ＮＦＳプロトコルの場合は、例えば、ｌｏｏｋｕｐ要求で取得したディレクトリのファイルハンドル識別子と、新規ディレクトリの名前を引数としたＭｋｄｉｒコマンドがある。ＣＩＦＳプロトコルの場合は、例えば、ディレクトリ名と新規ディレクトリ名を引数としたＳＭＢ＿ＣＯＭ＿ＣＲＥＡＴＥ＿ＤＩＲＥＣＴＯＲＹコマンドがある。
【００３７】
（Ｄ）指定したディレクトリ配下に存在する１つ以上のファイルまたはディレクトリについてのファイル名やディレクトリ名をクライアント１０３０へ送信するｒｅａｄｄｉｒ要求。ＮＦＳプロトコルの場合は、例えば、ｌｏｏｋｕｐ要求で取得したディレクトリのファイルハンドル識別子を引数とするＲｅａｄｄｉｒコマンドがある。ＣＩＦＳプロトコルの場合は、例えば、ディレクトリ名を引数としたＳＭＢ＿ＣＯＭ＿ＴＲＡＮＳＡＣＴＩＯＮ２：ＴＲＡＮＳ２＿ＱＵＥＲＹ＿ＰＡＴＨ＿ＩＮＦＯＲＭＡＴＩＯＮコマンドがある。
【００３８】
（Ｅ）指定したファイルを読み書きするための準備処理をサーバ１００１に依頼するｏｐｅｎ要求。ＮＦＳプロトコルの場合は、例えば、ｌｏｏｋｕｐ要求で取得したファイルのファイルハンドル識別子を引数とするｏｐｅｎコマンドがある。ＣＩＦＳプロトコルの場合は、例えば、ファイル名（パス名込み）を引数とするＳＭＢ＿ＣＯＭ＿ＯＰＥＮがある。なお、ＣＩＦＳプロトコルの場合は、ＳＭＢ＿ＣＯＭ＿ＯＰＥＮの応答情報としてファイルのｒｅａｄまたはｗｒｉｔｅ処理を行うための識別子（以後、ｏｐｅｎ識別子と呼ぶ。）をクライアント１０３０に送信する。
【００３９】
（Ｆ）ｏｐｅｎ要求で準備したファイルのデータを読み込むｒｅａｄ要求。ＮＦＳプロトコルの場合は、例えば、ｌｏｏｋｕｐ要求で取得したファイルのファイルハンドル識別子を引数とするｒｅａｄコマンドがある。ＣＩＦＳプロトコルの場合は、例えば、ｏｐｅｎ識別子を引数とするＳＭＢ＿ＣＯＭ＿ＲＥＡＤコマンドがある。
【００４０】
（Ｇ）ｏｐｅｎ要求で準備したファイルのデータを書き込むｗｒｉｔｅ要求。ＮＦＳプロトコルの場合は、例えば、ｌｏｏｋｕｐ要求で取得したファイルのファイルハンドル識別子を引数とするｗｒｉｔｅコマンドがある。ＣＩＦＳプロトコルの場合は、例えば、ｏｐｅｎ識別子を引数とするＳＭＢ＿ＣＯＭ＿ＷＲＩＴＥコマンドがある。
【００４１】
（Ｈ）ｏｐｅｎ要求で行った準備を終了するｃｌｏｓｅ要求。ＮＦＳプロトコルの場合は、例えば、ｌｏｏｋｕｐ要求で取得したファイルのファイルハンドル識別子を引数とするｃｌｏｓｅコマンドがある。ＣＩＦＳプロトコルの場合は、例えば、ｏｐｅｎ識別子を引数とするＳＭＢ＿ＣＯＭ＿ＣＬＯＳＥコマンドがある。
【００４２】
なお、各要求にディレクトリまたはファイルを指定する場合は、ディレクトリ名やファイル名を引数として各要求に付随させる以外に、サーバ１００１がディレクトリまたはファイルを特定することが可能な情報をサーバ１００１が受信さえ可能であれば、どのような形態の情報であってもよい。
【００４３】
また、サーバ１００１がボリュームに格納し管理するファイルには、サーバ１００１自体が用いるものやセキュリティの理由から複数のクライアント１０３０から特定のクライアントに対してのみ読み書きを許可したい場合もある。こうした要求に対応するため、サーバ１００１のファイル要求受信プログラム３００１は、エクスポートと呼ばれる機能を有する。エクスポート機能は、サーバ１００１が論理ボリュームに定義したファイルシステムの所定のディレクトリ（以後、エクスポートディレクトリ）配下のディレクトリおよびファイル（別な言い方では、ディレクトリ空間）を所定のクライアント１０３０（エクスポート先クライアント）にのみ提供する機能である。この場合、前述の所定のクライアント１０３０に対しては前述の所定のディレクトリ配下のディレクトリおよびファイルがトップディレクトリに存在するようディレクトリ空間を変換している。
【００４４】
例えば、配下に「ｈｏｍｅｗｏｒｋ．ｔｘｔ」ファイルを有する「ｗｏｒｋ」ディレクトリと「ｄｉａｒｙ．ｔｘｔ」ファイルとを有する「／ｈｏｍｅ／ｕｓｅｒ１」ディレクトリをサーバ１００１が管理している場合、「／ｈｏｍｅ／ｕｓｅｒ１」をエクスポートディレクトリと指定し、複数のクライアントからｆｏｏの名前を有するクライアントを指定した場合は、ｆｏｏクライアントからはサーバが提供するディレクトリ空間のルートディレクトリ直下に「ｗｏｒｋ」ディレクトリと「ｄｉａｒｙ．ｔｘｔ」が存在するように見える。
【００４５】
図４は、ファイルシステムの階層の管理情報である階層管理テーブルを示す図である。階層管理テーブル４０００は、管理情報１０１０の一部である。管理者が管理コマンド１００５を使用して仮想ファイルシステムを作成する際、階層管理ファイルシステムプログラム１００６が「仮想の」ファイルシステムと「実」ファイルシステムとの対応を管理するための情報である階層管理テーブル４０００を作成する。階層管理テーブル４０００は、ファイルシステム（例えば、ＦＳ１（１０１５）、ＦＳ２（１０１６））のマウント位置を示すマウントパス４００１と、ファイルシステムの管理ＩＤであるＦＳＩＤ（４００２）、ファイルシステムの階層を示す階層４００３が１つのレコードとして構成されている。
【００４６】
階層管理ファイルシステムプログラム１００６は、ファイルシステムがマウントされるパス情報を完全パス名でマウントパス４００１へ記録する。完全パス名とは、／（ルート）から始まるパスで、例えば、図４に示すように「／ＥＸＰＯＲＴ」などが該当する。
【００４７】
また、ＦＳＩＤ（４００２）は、管理者が実ファイルシステムをマウントするときに設定した値を記録する。以降に記述されるＦＳＩＤは管理者が設定した値を用いる。
【００４８】
また、階層管理ファイルシステムプログラム１００６は、階層４００３の特定の値を、階層以外の用途に使用する。例えば、階層４００３が０ｘ００に設定されている場合、管理コマンド１００５と階層管理ファイルシステムプログラム１００６は、その階層を仮想ファイルシステム２００１（図２参照）であると認識する。
【００４９】
さらに、管理コマンド１００５は、階層４００３を０ｘ０１（１０進数で１）から始めるのではなく、０ｘ０Ｆ（１０進数で１６）から２番おきに採番する。こうすることで、最高の階層の上に、さらに階層を追加することが容易になる。また、階層間に階層を追加することも容易となる。ただし、この採番方法については一例であり、本実施形態が採番方法について特に限定するものではない。
【００５０】
図５は、階層データリストの基本データ構造を示す図である。図６は、基本データ構造に基づく、利用中の仮想ファイルシステムを構成する実ファイルシステムをリストとして管理する階層データリストのデータ構造を示す図である。階層データリスト５０００は、管理情報１０１０の一部である。図５に示すように、階層データリスト５０００の基本データ構造は、マウント中のパスを示すマウントパス５００１と、ファイルシステムのＩＤを示すＦＳＩＤ（５００２）と、ポインタ５００３で構成される。なお、図４で示した階層管理テーブル４０００は、恒久的なものであるのに対して、図５および図６に示す階層データリスト５０００は、運用中（動作中）の一時的なものである点で異なっている。
【００５１】
具体的には、図６に示す階層データリスト５０００は、仮想ファイルシステム２００１（／ＥＸＰＯＲＴ）を先頭にした階層構造を示している。例えば、管理者の指示により、「／Ｔｉｅｒ１」が外される場合、階層管理テーブル４０００は変更されない。しかし、階層データリスト５０００は変更される。階層管理ファイルシステムプログラム１００６は、階層データリスト５０００のうち、「／ＥＸＰＯＲＴ」のポインタを書き換え、「／Ｔｉｅｒ２」を指すように変更する。そして、「／Ｔｉｅｒ１」のデータを破棄する。このようにすることで、階層管理ファイルシステムプログラム１００６は、恒久的な階層構成情報と一時的な階層構成情報を効率よく管理できる。
【００５２】
図７は、ファイルが格納されている実ファイルシステム情報を示すファイル管理テーブルのデータ構造を示す図である。ファイル管理テーブル７０００は、管理情報１０１０の一部である。ファイル管理テーブル７０００は、仮想ファイルシステム２００１のファイル名を示すファイル名７００１と、そのファイルのｉｎｏｄｅ番号７００２と、そのファイルが格納されているファイルシステムのＩＤである変換後ＦＳＩＤ（７００３）と、その変換後ファイルシステム内で一意にファイルを特定する変換後ｉｎｏｄｅ番号７００４で構成される。
【００５３】
ファイル管理テーブル７０００は、１レコードに１つのファイルを対応付けている。階層管理ファイルシステムプログラム１００６は、仮想ファイルシステム２００１の完全ファイルパスをファイル名７００１に記録する。ファイル名７００１に記録するファイル名は、階層管理するファイルシステム（実ファイルシステム、図２の場合ＦＳ１（１０１５）やＦＳ２（１０１６））が保持しているパスと同じである。例えば、図２のＦＳ１（１０１５）に「ＦＩＬＥ１」というファイルがある場合は、階層管理ファイルシステムプログラム１００６は、ファイル名７００１に「ＦＩＬＥ１」と記録する。一方、「／ＤＩＲ／ＦＩＬＥ２」というファイルがある場合は、階層管理ファイルシステムプログラム１００６は、ファイル名７００１に「／ＤＩＲ／ＦＩＬＥ２」と記録する。
【００５４】
クライアント１０３０を利用するユーザは、ファイル名７００１を指定して、ファイルへアクセスする。その際、階層管理ファイルシステムプログラム１００６が、ファイル名７００１に対応するレコードを特定し、実ファイルシステムプログラム１００７へアクセスを切り替える。動作の詳細は後述する。なお、本実施形態では、図１０に示す管理情報再構築処理により、ファイル管理テーブル７０００が失われても再構築することができるため、高い可用性を実現できる。
【００５５】
次に管理コマンドについて説明する。
（階層管理への参加コマンド）
（Ａ１）式および（Ｂ１）式は、管理者が実ファイルシステムを仮想ファイルシステム２００１へ統合する（実ファイルシステムを階層管理へ参加させる）際に入力するコマンドの一例を示す。（Ａ１）式は、ｍｏｕｎｔコマンドの書式であり、（Ｂ１）式は、具体例を示している。
mount -t hmfs -o T=<Tier>,D=<TARGET> <SRC> <SRC>           …（Ａ１）
mount -t hmfs -o T=1,D=/EXPORT /Tier1 /Tier1               …（Ｂ１）
【００５６】
管理者は、管理端末１０２０の端末プログラムを利用して、サーバ１００１のファイル要求受信プログラム（端末サーバプログラム）３００１へ接続し、サーバ１００１へログインする。そして、管理者は、実ファイルシステムを階層管理へ参加させるため、管理コマンド１００５を実行する。
【００５７】
（Ａ１）式において、管理者は、マウントコマンドの「−ｔ」オプションにより、階層管理ファイルシステムを利用することを指定する。そして、管理者は、「−ｏ」オプションにより、階層管理ファイルシステムプログラム１００６のオプションを指定する。階層管理ファイルシステムプログラム１００６のオプションのうち、階層管理への参加処理で使用するオプションは「Ｔ」と「Ｄ」である。Ｔオプションは、実ファイルシステムの階層を示し、Ｄオプションは、仮想ファイルシステム２００１のパスを示す。そして、「ＳＲＣ」に、実ファイルシステムがマウントされているファイルシステムのパスを指定する。具体的には、ＦＳ１（１０１５）が階層管理へ参加する場合（図２参照）、（Ｂ１）式に示すように、「／Ｔｉｅｒ１」を指定する。
【００５８】
（管理情報再構築コマンド）
（Ａ２）式および（Ｂ２）式は、ファイル管理テーブル７０００が壊れたときに再構築するためのコマンドの一例を示す。（Ａ２）式は、管理情報の再構築で使用するｍｏｕｎｔコマンドの書式であり、（Ｂ２）式は、具体例を示している。
mount -t hmfs -o I=<Tier DB>,D=<TARGET> hmfs hmfs          …（Ａ２）
mount -t hmfs -o I=/HMDB,D=/EXPORT hmfs hmfs               …（Ｂ２）
【００５９】
管理者は、管理端末１０２０の端末プログラムを利用して、サーバ１００１のファイル要求受信プログラム（端末サーバプログラム）３００１へ接続し、サーバ１００１へログインする。そして、管理者は、実ファイルシステムを階層管理へ参加させるため、管理コマンド１００５を実行する。
【００６０】
（Ａ２）式において、−ｔオプションは、階層管理への参加と同様に、階層管理ファイルシステムプログラム１００６を利用することを示す。管理情報の再構築では、−ｏオプションで指定する、階層管理ファイルシステムプログラム１００６のオプションが異なる。管理者は、Ｉオプションにファイル管理テーブル７０００が格納されているファイルシステムパスを指定する。また、管理者は、Ｄオプションに仮想ファイルシステム２００１のパスを指定する。図２を例にすると、具体的には、（Ｂ２）式に示すように、管理者は／に格納しているＨＭＤＢファイルを再構築することを指示している。
【００６１】
（階層管理からの離脱コマンド）
（Ａ３）式および（Ｂ３）式は、管理者が指定するファイルシステムを階層管理から外す際に入力するコマンドの一例を示す。（Ａ３）式は、階層管理から外す（階層管理から離脱）処理の書式であり、（Ｂ３）式は、具体例を示している。
umount <SRC>                                               …（Ａ３）
umount /Tier1                                              …（Ｂ３）
【００６２】
管理者は、管理端末１０２０の端末プログラムを利用して、サーバ１００１のファイル要求受信プログラム（端末サーバプログラム）３００１へ接続し、サーバ１００１へログインする。そして、管理者は、実ファイルシステムを階層管理へ参加させるため、管理コマンド１００５を実行する。
【００６３】
管理者は、ｕｍｏｕｎｔコマンドを使用して、階層管理からファイルシステムを外すことができる。（Ａ３）式において、ｕｍｏｕｎｔコマンドに、実ファイルシステムがマウントされたファイルシステムパスを指定する。図２を例にすると、具体的には、（Ｂ３）式に示すように、管理者は、／Ｔｉｅｒ１にマウントされたファイルシステムを階層管理から外すことを、階層管理ファイルシステムプログラム１００６へ指示している。
【００６４】
（階層の移動コマンド）
（Ａ４）式および（Ｂ４）式は、管理者やクライアント１０３０を利用するユーザが、ファイルの階層を移動させる際に入力するコマンドの一例を示す。（Ａ４）式は、階層の移動処理の書式であり、（Ｂ４）式は、具体例を示している。
mv_tier -t 2 <FILE>                                        …（Ａ４）
mv_tier -t 2 FILE1                                         …（Ｂ４）
【００６５】
管理者は、管理端末１０２０の端末プログラムを利用して、サーバ１００１のファイル要求受信プログラム（端末サーバプログラム）３００１へ接続し、サーバ１００１へログインする。そして、管理者は、実ファイルシステムを階層管理へ参加させるため、管理コマンド１００５を実行する。
【００６６】
（Ａ４）式において、−ｔオプションは、移動先の階層を指定する。図７を例にすると、具体的には、（Ｂ４）式に示すように、ＦＩＬＥ１は／Ｔｉｅｒ１に格納されており、本コマンドを実行することで、／Ｔｉｅｒ２へ移動することになる。
【００６７】
次に各部の処理について説明する。
（階層管理参加処理）
図８は、実ファイルシステムを階層管理へ参加させる処理を示すフローチャートである。実ファイルシステムを階層管理へ参加させる処理（階層管理参加処理）は、階層管理ファイルシステムプログラム１００６の階層管理参加処理部８０００（図１参照）により行う。まず、管理者は、（Ａ１）式に示すｍｏｕｎｔコマンドを用いて、階層管理対象ファイルシステム（図２の例では、／Ｔｉｅｒ１または／Ｔｉｅｒ２）の登録指令を行う。
【００６８】
ｍｏｕｎｔコマンドはオペレーティングシステム１００９のＶＦＳ３００２を通して、階層管理参加処理部８０００へファイルシステムの登録を要求する。そして、階層管理参加処理部８０００が階層管理参加処理要求を受理する（ステップＳ８００１）。
【００６９】
そして、階層管理参加処理部８０００は、ＶＦＳ３００２を通してファイルシステム登録要求、すなわち、階層管理対象ファイルシステムのパスと−ｏオプションで指定されたオプションを取得する（ステップＳ８００２）。
【００７０】
そして、階層管理参加処理部８０００は、階層管理対象ファイルシステムパスとマウントオプションを解析する（ステップＳ８００３）。ステップＳ８００３の解析の結果、階層管理参加処理部８０００は、Ｔオプションから階層管理対象ファイルシステムの配置する階層と、Ｄオプションから階層管理対象ファイルシステムの属する仮想ファイルシステム２００１の階層管理ディレクトリを取得する（ステップＳ８００４）。
【００７１】
階層管理参加処理部８０００は、対象としているファイルシステムが階層管理されているか否かを判定する（ステップＳ８００５）。判定処理は、階層データリスト５０００のリストの先頭から順に、マウントパス５００１と階層管理対象ファイルシステムのパスを比較することで行う。
【００７２】
ここで、比較の結果、一致するパスがすでに登録されている場合（ステップＳ８００５：Ｙｅｓ）、ＶＦＳ３００２を通してｍｏｕｎｔコマンドにエラーを返す。そして、管理者はｍｏｕｎｔコマンドのエラー表示により、問題が発生したことを確認する。
【００７３】
一方、階層管理されていない場合（ステップＳ８００５：Ｎｏ）、階層管理参加処理部８０００は、Ｔオプションが設定されているか否か、つまり、オプションに階層が指定されているか否かを判定する（ステップＳ８００６）。Ｔオプションが設定されていない場合（ステップＳ８００６：Ｎｏ）、階層管理ファイルシステムプログラム１００６の階層管理参加処理部８０００は、階層管理対象ファイルシステムパスが階層管理テーブル４０００に登録されているか否かを判定する（ステップＳ８００７）。ここで、登録されていない場合（ステップＳ８００７：Ｎｏ）、階層管理ファイルシステムプログラム１００６の階層管理参加処理部８０００はエラーを返して終了する。
【００７４】
一方、登録されている場合（ステップＳ８００７：Ｙｅｓ）、階層管理参加処理部８０００は、階層管理テーブル４０００の階層４００３に登録されている階層に登録することとして、ステップＳ８００９に進む。
【００７５】
また、オプションに階層が指定されている場合（ステップＳ８００６：Ｙｅｓ）、階層管理参加処理部８０００は、階層管理テーブル４０００を走査して、階層管理テーブル４０００の階層４００３（階層情報）を更新する。また、見つからない場合、階層管理参加処理部８０００は、新たなレコード（階層情報）を作成して階層管理テーブル４０００へ追加する（ステップＳ８００８）。
【００７６】
そして、階層管理参加処理部８０００は、階層データを作成し、階層データリスト５０００のリスト構造へ挿入する（ステップＳ８００９）。そして、階層管理ファイルシステムプログラム１００６の階層管理参加処理部８０００は、ファイル管理テーブル７０００があるか否かを判定する（ステップＳ８０１０）。
【００７７】
ファイル管理テーブル７０００がある場合（ステップＳ８０１０：Ｙｅｓ）、階層管理ファイルシステムプログラム１００６の階層管理参加処理部８０００は、階層管理対象ファイルシステムのＦＳＩＤと変換後ＦＳＩＤ（７００３）とが一致するレコードを取得する（ステップＳ８０１３）。
【００７８】
そして、階層管理参加処理部８０００は、ファイル管理テーブル７０００のレコードのファイル名７００１と一致するファイルを階層管理対象ファイルシステムの中から取り出し、変換後ｉｎｏｄｅ番号７００４を比較する（ステップＳ８０１４）。このとき、不一致レコードがあれば、削除して、エラーメッセージを出力する。階層管理参加処理部８０００は、ステップＳ８０１３とステップＳ８０１４の操作を全ての該当レコードに行う。
【００７９】
一方、ステップＳ８０１０において、ファイル管理テーブル７０００が見つからない場合（ステップＳ８０１０：Ｎｏ）、階層管理参加処理部８０００は階層管理対象ファイルシステムのファイルを全て走査し、ファイル管理テーブルを新たに作成する（ステップＳ８０１１）。
【００８０】
そして、最後に、階層管理参加処理部８０００は、ファイル管理テーブル７０００と階層管理テーブル４０００をＦＳＭファイルシステム１０１７へ保存し（ステップＳ８０１２）、一連の処理を終了する。
【００８１】
以上説明した階層管理参加処理により、新たな実ファイルシステムが階層管理対象のファイルシステムとして登録される。管理者が、この操作を複数の実ファイルシステムに対して行うことで、複数の実ファイルシステムを重ね合わせた仮想ファイルシステム２００１を作成できる。
【００８２】
また、新たな階層を追加する場合、本実施形態では、階層管理ファイルシステムプログラム１００６の階層管理参加処理部８０００が、階層管理テーブル４０００へ新規追加ファイルシステムを登録し、ファイル管理テーブル７０００へファイル情報を追加することで、新たな階層を追加できる。その結果、管理者がコマンドを用いて階層管理参加処理を新たなファイルシステムに対して実行することで、新たな階層を自由に追加できる。
【００８３】
具体的には、階層管理参加処理部８０００により、第１のボリューム（例えば、ＦＣディスクドライブ１０１２ｂ）と、第２のボリューム（例えば、ＳＡＴＡディスクドライブ１０１３）と、第３のボリューム（例えば、ＦＣディスクドライブ１０１２ａ）とを有するストレージシステム（例えば、ＲＡＩＤ装置１０１４）を備え、ストレージシステムとクライアント１０３０に接続したファイルサーバ（例えば、サーバ１００１）において、ファイルサーバは、第１のボリュームを第１のファイルシステム（例えば、ＦＳ１（１０１５））として初期化（フォーマット）し、第２のボリュームを第２のファイルシステム（例えば、ＦＣ２（１０１６））として初期化し、第１のファイルシステムの所定のディレクトリ名に対応する第１のディレクトリに格納した第１のファイル群と、第２のファイルシステムの第１のディレクトリ名に対応する第２のディレクトリに格納した第２のファイル群とを元に、仮想的に、第１のディレクトリ名に対応するディレクトリに第１のファイル群と第２のファイル群とを含む階層ファイル群とを格納した仮想ファイルシステム２００１を定義（例えば、ステップＳ８００８からステップＳ８０１２）することができる。前記定義は、階層ファイル群と記第１のファイル群および第２のファイル群との対応情報（例えば、ファイル管理テーブル７０００）として第３のボリュームに格納するとよい。なお、対応情報は、主としてファイル管理テーブル７０００としているが、階層管理テーブル４０００と統合した管理テーブルとしてもよい。
【００８４】
（階層管理離脱処理）
図９は、実ファイルシステムを階層管理から外す処理を示すフローチャートである。実ファイルシステムを階層管理から外す処理（階層管理離脱処理）は、階層管理ファイルシステムプログラム１００６の階層管理離脱処理部９０００（図１参照）により行う。まず、管理者は、（Ａ３）式に示すｕｍｏｕｎｔコマンドを用いて、離脱対象ファイルシステム（図２の例では、／Ｔｉｅｒ１または／Ｔｉｅｒ２）の離脱を階層管理ファイルシステムへ要求指令をする。
【００８５】
ｕｍｏｕｎｔコマンドは、オペレーティングシステム１００９のＶＦＳ３００２を通して、階層管理離脱処理部９０００へファイルシステムの離脱を要求する。そして、階層管理離脱処理部９０００が階層管理離脱処理要求を受理する（ステップＳ９００１）。
【００８６】
そして、階層管理離脱処理部９０００は、ＶＦＳ３００２を通して離脱対象ファイルシステム名（パス）を取得する（ステップＳ９００２）。そして、階層管理離脱処理部９０００は、階層データリスト５０００のリストから離脱対象ファイルシステムを検索し（ステップＳ９００３）、離脱対象ファイルシステムがあるか否かを判定する（ステップＳ９００４）。離脱対象ファイルシステムが無い場合（ステップＳ９００４：Ｎｏ）、ＶＦＳ３００２を通してｕｍｏｕｎｔコマンドにエラーを返し、ｕｍｏｕｎｔコマンドが管理者へエラーを返し（ステップＳ９００７）、階層管理離脱処理を終了する。
【００８７】
一方、離脱対象のファイルシステムがある場合（ステップＳ９００４：Ｙｅｓ）、階層管理離脱処理部９０００は、階層データリスト５０００のリストから離脱対象ファイルシステムのデータを検索し、そのデータを外す（ステップＳ９００５）。
【００８８】
最後に、階層管理ファイルシステムプログラム１００６の階層管理離脱処理部９０００は、ステップＳ９００５で階層データリスト５０００から外したデータ（階層管理データ）を解放し（ステップＳ９００６）、階層管理離脱処理を終了する。以上説明した階層管理離脱処理により、管理者が階層管理対象のファイルシステムのうち１つを階層管理対象から外すことができる。
【００８９】
なお、離脱対象のファイルシステムを指定した解除要求に応じて、仮想ファイルシステム２００１の階層ファイル群から離脱対象のファイルシステムに格納したファイル群に対応する１つ以上のファイルを特定し、特定した１つ以上のファイルに関する対応を、対応情報（例えば、ファイル管理テーブル７０００）から削除し、クライアント１０３０からの仮想ファイルシステム２００１とディレクトリ名を指定したファイル名参照要求（ｒｅａｄｄｉｒ要求）から特定した１つ以上のファイルに対応するファイル名の送信を抑止することが好ましい。
【００９０】
また、ステップＳ９００５は、仮想ファイルシステムの定義を解除することをいい、解除に従って、クライアント１０３０から指定した第１のファイルシステム（例えば、ＦＳ１（１０１５））に格納したファイル群の１つを指定したアクセス要求を受信した場合、第１のファイルシステムにアクセスするとよい。
【００９１】
（管理情報再構築処理）
図１０は、ファイル管理テーブルの再構築を行う処理を示すフローチャートである。ファイル管理テーブルの再構築を行う処理（管理情報再構築処理）は、階層管理ファイルシステムプログラム１００６の管理情報再構築処理部１００００により行う。
【００９２】
まず、管理者は、ログなどから仮想ファイルシステム２００１に障害が発生したことを認識すると、（Ａ２）式に示したｍｏｕｎｔコマンドを用いて、階層管理テーブル４０００と階層管理ディレクトリ（仮想ファイルシステム２００１のディレクトリ）を指定して、管理情報再構築処理の実行指令する。
【００９３】
ｍｏｕｎｔコマンドは、オペレーティングシステム１００９のＶＦＳ３００２を通して、管理情報再構築処理部１００００へ管理情報再構築処理を要求する。そして、管理情報再構築処理部１００００が管理情報再構築処理要求を受理する（ステップＳ１０００１）。管理情報再構築処理は、ｍｏｕｎｔコマンドのオプションから判定する。
【００９４】
そして、管理情報再構築処理部１００００は、ＶＦＳ３００２を通して階層管理テーブル４０００の情報を取得し、その階層管理テーブル４０００があるか否かを判定する（ステップＳ１０００２）。
【００９５】
ここで、階層管理テーブル４０００が無い場合（ステップＳ１０００２：Ｎｏ）、管理情報再構築処理部１００００は、、ＶＦＳ３００２を通してｍｏｕｎｔコマンドへエラーを返す。ｍｏｕｎｔコマンドは、管理者へ階層管理テーブル４０００の作成を要求して（ステップＳ１０００８）、終了する。この状態になると、管理者は、図８に示した階層管理参加処理を実行し、初めから仮想ファイルシステム２００１を構築しなければならない。
【００９６】
一方、階層管理テーブル４０００がある場合（ステップＳ１０００２：Ｙｅｓ）、管理情報再構築処理部１００００は、階層管理テーブル４０００から一番階層が低い実ファイルシステムを選択する（ステップＳ１０００３）。そして、管理情報再構築処理部１００００は、ステップＳ１０００３で選択したファイルシステムを走査し、ファイルシステム内にある全てのファイルに対して、ファイル管理テーブルを作成する（ステップＳ１０００４）。
【００９７】
そして、管理情報再構築処理部１００００は、ファイル管理テーブルをＦＳＭファイルシステム１０１７へ保存し（ステップＳ１０００５）、階層管理テーブル４０００を調べて未処理の階層があるか否かを判定する（ステップＳ１０００６）。
【００９８】
未処理の階層がある場合（ステップＳ１０００６：Ｙｅｓ）、管理情報再構築処理部１００００は、先に処理したファイルシステムの次に階層が高いファイルシステムを選択し（ステップＳ１０００７）、ステップＳ１０００４に戻る。ステップＳ１０００６の判定処理で、未処理の階層がない場合（ステップＳ１０００６：Ｎｏ）、管理情報再構築処理を終了する。
【００９９】
以上の操作により、ファイル管理テーブル７０００が壊れた場合でも、管理者が回復することが可能となる。なお、管理情報再構築処理を実行する契機については、上記で記した以外の事項であってもよい。また、管理情報再構築処理を実行するコマンドは階層参加処理を起動するためのｍｏｕｎｔコマンドとは別なコマンドを用いてもよい。
【０１００】
（階層移動処理）
図１１は、ファイルの階層移動を行う処理を示すフローチャートである。ファイルの階層移動を行う処理（階層移動処理）は、階層管理ファイルシステムプログラム１００６の階層移動処理部１１０００により行う。まず、管理者が、（Ａ４）式に示したｍｖ＿ｔｉｅｒコマンドを用いて、ファイルの階層移動処理を実行指令する。これにより、ｍｖ＿ｔｉｅｒコマンドは、オペレーティングシステム１００９のＶＦＳ３００２を通して、階層管理ファイルシステムプログラム１００６の階層移動処理部１１０００へ階層移動処理を要求する。これは、例えばｉｏｃｔｌと呼ぶＶＦＳ３００２のインタフェースを利用する。
【０１０１】
階層移動処理部１１０００は、ＶＦＳ３００２を通して階層移動処理要求を受理する（ステップＳ１１００２）。階層移動処理部１１０００は、ファイル管理テーブル７０００を参照して階層移動処理要求で受理したファイル名のファイルがあるか否かを判定する（ステップＳ１１００３）。ファイルが存在しない場合（ステップＳ１１００３：Ｎｏ）、ＶＦＳ３００２を通してファイルが存在しないというエラーをｍｖ＿ｔｉｅｒコマンドへ返し（ステップＳ１１００４）、処理を終了する。
【０１０２】
一方、ファイルが存在している場合（ステップＳ１１００３：Ｙｅｓ）、階層移動処理部１１０００は、管理者が指定したファイルが使用中（オープン）か否かを判定する（ステップＳ１１００５）。ファイルが使用中である場合（ステップＳ１１００５：Ｙｅｓ）、階層移動処理部１１０００は、ＶＦＳ３００２を通してファイルが使用中であるというエラーをｍｖ＿ｔｉｅｒコマンドへ返し（ステップＳ１１００９）、処理を終了する。
【０１０３】
また、ファイルが使用中ではない場合（ステップＳ１１００５：Ｎｏ）、階層移動処理部１１０００は、ファイル管理テーブル７０００のレコードの変換後ＦＳＩＤ（７００３）を移動先のＦＳＩＤに書き換え（ステップＳ１１００７）、最後に、移動するファイルを指定された階層へパスを維持しながらコピーし、ファイルを元の階層から削除し（ステップＳ１１００８）、一連の処理を終了する。
【０１０４】
例えば、図２のＦＳ１（１０１５）に「／ＤＩＲ／ＦＩＬＥ」というパスにファイルがあり、階層移動処理部１１０００がこのファイルを階層２のＦＳ２（１０１６）に移動する場合、ＦＳ２（１０１６）に「／ＤＩＲ」ディレクトリを作成した後、ＦＩＬＥをそのディレクトリへ移動させる。これにより、管理者は特定のファイルの階層を自由に移動させることができる。
【０１０５】
なお、ｍｖ＿ｔｉｅｒコマンドで指定するファイル名とパス名は、ＮＡＳ内部で提供するディレクトリ空間が考えられるが、クライアント１０３０からｍｖ＿ｔｉｅｒコマンドをサーバ１００１に送信してもよい。ただし、クライアント１０３０は、エクスポート機能によってサーバ１００１とは異なるディレクトリ空間によって対応するファイルに読み書きするよう設定されているため、ｍｖ＿ｔｉｅｒで指定するファイル名は、エクスポート機能によって提供されるディレクトリ空間におけるファイル名を指定してもよい。この場合、サーバ１００１（主に、ファイル要求受信プログラム３００１）は、ｍｖ＿ｔｉｅｒコマンドの引数をエクスポート機能の変換を用いてサーバ内部のディレクトリ空間におけるファイル名に変換することが必要である。
【０１０６】
（Ｌｏｏｋｕｐ処理）
図１２は、階層管理ファイルシステムプログラムのＬｏｏｋｕｐ処理を示すフローチャートである。階層管理ファイルシステムプログラム１００６のＬｏｏｋｕｐ処理は、ＶＦＳ３００２（図３参照）がＬｏｏｋｕｐ処理を実行し、階層管理ファイルシステムプログラム１００６のＬｏｏｋｕｐ処理部１２０００（図１参照）が、ＶＦＳ３００２へ結果を返す際の処理である。
【０１０７】
ファイル要求受信プログラム３００１が仮想ファイルシステム２００１のファイルへアクセスする時に、ＶＦＳ３００２を介して階層管理ファイルシステムプログラム１００６が実行するＬｏｏｋｕｐ処理を行う。なお、当該処理はファイル要求受信プログラム３００１がｌｏｏｋｕｐ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｌｏｏｋｕｐ要求に付随した情報を用いて、当該処理の対象となるファイルまたはディレクトリを特定する。まず、Ｌｏｏｋｕｐ処理の概要について説明する。
【０１０８】
Ｌｏｏｋｕｐ処理は、オペレーティングシステム１００９がファイルのアクセスパスを解析する処理である。Ｌｏｏｋｕｐ処理では、ＶＦＳ３００２が、パス名の「／」で区切られる名前（要素）毎にその要素の管理情報（ｉｎｏｄｅ）をファイルシステムから取得する。
【０１０９】
ここで、パス名「／ＤＩＲ／ＦＩＬＥ」のＬｏｏｋｕｐ処理の例を説明する。まず、ＶＦＳ３００２は、先頭の「／」を認識し、「／」（ルートディレクトリ）に格納されている要素（ファイルかディレクトリ）の中から「ＤＩＲ」のｉｎｏｄｅをファイルシステムへ問い合わせる。このとき、ＶＦＳ３００２は、「／」のｉｎｏｄｅと、「ＤＩＲ」という名前をファイルシステムへ渡す。ファイルシステムは、ＤＩＲのｉｎｏｄｅをＶＦＳ３００２へ返す。そして、ＶＦＳ３００２は、ＤＩＲに格納されている要素の中から「ＦＩＬＥ」のｉｎｏｄｅをファイルシステムへ問い合わせる。そして、ファイルシステムはＦＩＬＥのｉｎｏｄｅをＶＦＳ３００２へ返す。これにより、Ｌｏｏｋｕｐ処理の目的となるＦＩＬＥのｉｎｏｄｅが取得できる。
【０１１０】
図１２に戻り、まず、Ｌｏｏｋｕｐ処理部１２０００は、ＶＦＳ３００２から親ディレクトリ（ＤＩＲ／ＦＩＬＥの場合、「ＤＩＲ」）の管理情報（ｉｎｏｄｅ）と、Ｌｏｏｋｕｐ処理の対象の名前情報（ディレクトリエントリ）を受理する（ステップＳ１２００１）。そして、Ｌｏｏｋｕｐ処理部１２０００は、ディレクトリエントリからファイル名を特定する（ステップＳ１２００２）。すなわち、ファイルの名前情報を使用して完全パスを取得し、その完全パス（ファイル名）を元にファイル管理テーブル７０００を走査する（ステップＳ１２００３）。
【０１１１】
Ｌｏｏｋｕｐ処理部１２０００は、ファイルがあるか否かを判定する（ステップＳ１２００４）。ここで、ファイルが見つからない場合（ステップＳ１２００４：Ｎｏ）、Ｌｏｏｋｕｐ処理部１２０００は、戻り値に何も設定せず処理を終了する。
【０１１２】
一方、ファイルが見つかった場合（ステップＳ１２００４：Ｙｅｓ）、Ｌｏｏｋｕｐ処理部１２０００は、ファイル管理テーブル７０００の該当するレコードから、変換後ＦＳＩＤ（７００３）と変換後ｉｎｏｄｅ番号７００４を取得し（ステップＳ１２００５）、変換後ＦＳＩＤ（７００３）から実ファイルシステムの管理情報を取得し（ステップＳ１２００６）、その管理情報と変換後ｉｎｏｄｅ番号から、実ファイルの管理情報（ｉｎｏｄｅ情報）を取得する（ステップＳ１２００７）。
【０１１３】
そして、Ｌｏｏｋｕｐ処理部１２０００は、ファイルアクセス時に前処理が必要なファイル操作関数をｉｎｏｄｅから置き換える（ステップＳ１２００８）。ｉｎｏｄｅ情報には、ファイル書き込み処理などのファイル操作関数が登録されており、その処理を置き換える。これは、仮想ファイルシステム２００１のツリー構成に関する処理を対象として置き換える。これにより、Ｌｏｏｋｕｐ処理部１２０００は、実ファイルシステムより先に仮想ファイルシステム２００１のパス解析といった処理を受け取ることができる。
【０１１４】
最後に、Ｌｏｏｋｕｐ処理部１２０００は、ｌｏｏｋｕｐ処理対象の名前情報と、ｉｎｏｄｅ情報を関連付けて（ステップＳ１２００９）、処理を終了する。なお、ｉｎｏｄｅ情報には、例えば、読み書きの可否、アクセス時間、更新時間、生成時間、ファイルの実データを格納したボリュームの位置情報などが含まれている。
【０１１５】
（Ｃｒｅａｔ処理）
図１３は、階層管理ファイルシステムプログラムのＣｒｅａｔ処理を示すフローチャートである。階層管理ファイルシステムプログラム１００６のＣｒｅａｔ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１へファイルを作成する処理（Ｃｒｅａｔ処理）を実行する際に、ＶＦＳ３００２を介して、階層管理ファイルシステムプログラム１００６のＣｒｅａｔ処理部１３０００（図１参照）が行う処理である。
【０１１６】
なお、当該処理はファイル要求受信プログラム３００１がｃｒｅａｔ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｃｒｅａｔ要求、必要に応じてｌｏｏｋｕｐ要求に付随した情報を用いて当該処理の対象となるファイルを特定する。
【０１１７】
階層管理ファイルシステムプログラム１００６のＣｒｅａｔ処理部１３０００は、ファイル要求受信プログラム３００１からＶＦＳ３００２を通して、ファイル作成要求を受理する（ステップＳ１３００２）。そして、Ｃｒｅａｔ処理部１３０００は、ファイル管理テーブル７０００を調べ、作成要求ファイル名の指定ファイルを検索し、（ステップＳ１３００３）。指定ファイルがすでに作成済みか否か、つまり、存在しているか否かを判定する（ステップＳ１３００４）。
【０１１８】
指定ファイルがすでに存在している場合（ステップＳ１３００４：Ｙｅｓ）、Ｃｒｅａｔ処理部１３０００は、ＶＦＳ３００２を通して、ファイル要求受信プログラム３００１へエラーを返し（ステップＳ１３００５）、この処理を終了する。一方、指定ファイルが存在しない場合（ステップＳ１３００４：Ｎｏ）、Ｃｒｅａｔ処理部１３０００は、ファイル管理テーブル７０００のｉｎｏｄｅ番号７００２のうち、未使用の新しいｉｎｏｄｅ番号を採番する（ステップＳ１３００６）。そして、Ｃｒｅａｔ処理部１３０００は、ファイル要求受信プログラム３００１が要求したファイルパスで、階層が一番高い実ファイルシステム（例えば、図２ではＦＳ１）のファイル作成処理を実行する（ステップＳ１３００７）。
【０１１９】
そして、Ｃｒｅａｔ処理部１３０００は、実ファイルシステムが作成したファイルのｉｎｏｄｅ番号を取得し（ステップＳ１３００９）、ファイル管理テーブル７０００のレコードを作成して、情報として、ファイル名７００１とｉｎｏｄｅ番号７００２と変換後ＦＳＩＤ（７００３）と変換後ｉｎｏｄｅ番号７００４をＦＳＭファイルシステム１０１７へ保存する（ステップＳ１３０１０）。最後に、Ｃｒｅａｔ処理部１３０００は、ファイル要求受信プログラム３００１へ、ＶＦＳ３００２を通してファイル作成完了メッセージを返し（ステップＳ１３０１１）、処理を終了する。
【０１２０】
以上の処理により、ファイル管理テーブル７０００のファイル名７００１に記録されるファイルパスと同じファイルパスで、実ファイルシステムへファイルが作成される。
【０１２１】
（Ｍｋｄｉｒ処理）
図１４は、階層管理ファイルシステムプログラムのＭｋｄｉｒ処理を示すフローチャートである。階層管理ファイルシステムプログラム１００６のＭｋｄｉｒ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１へディレクトリを作成する処理（Ｍｋｄｉｒ処理）を実行する際に、ＶＦＳ３００２を介して、階層管理ファイルシステムプログラム１００６のＭｋｄｉｒ処理部１４０００（図１参照）が行う処理である。
【０１２２】
なお、当該処理はファイル要求受信プログラム３００１がｍｋｄｉｒ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｍｋｄｉｒ要求、必要に応じてｌｏｏｋｕｐ要求に付随した情報を用いて当該処理の対象となるディレクトリを特定する。
【０１２３】
Ｍｋｄｉｒ処理部１４０００は、ファイル要求受信プログラム３００１からＶＦＳ３００２を通して、ディレクトリ作成要求を受理する（ステップＳ１４００２）。そして、Ｍｋｄｉｒ処理部１４０００は、作成要求ディレクトリ名のファイルを、ファイル管理テーブル７０００を検索し（ステップＳ１４００３）、作成要求ディレクトリ名のファイルがすでに作成済みか否か、つまり存在しているか否かを判定する（ステップＳ１４００４）。
【０１２４】
ディレクトリがすでに存在している場合（ステップＳ１４００４：Ｙｅｓ）、Ｍｋｄｉｒ処理部１４０００は、ＶＦＳ３００２を通して、ファイル要求受信プログラム３００１へエラーを返し（ステップＳ１４００５）、処理を終了する。
【０１２５】
一方、ディレクトリが存在しない場合（ステップＳ１４００４：Ｎｏ）、Ｍｋｄｉｒ処理部１４０００は、ファイル管理テーブル７０００のｉｎｏｄｅ番号７００２のうち、未使用の新しいｉｎｏｄｅ番号を採番する（ステップＳ１４００６）。そして、Ｍｋｄｉｒ処理部１４０００は、ファイル要求受信プログラム３００１が要求したディレクトリパスで、階層が一番高い実ファイルシステム（例えば、図２ではＦＳ１（１０１５））のディレクトリ作成処理を実行する（ステップＳ１４００７）。
【０１２６】
そして、Ｍｋｄｉｒ処理部１４０００は、実ファイルシステムが作成したディレクトリのｉｎｏｄｅ番号を取得し（ステップＳ１４００８）、ファイル管理テーブル７０００のレコードを作成して、図７に示すファイル名７００１と、ｉｎｏｄｅ番号７００２と、変換後ＦＳＩＤ（７００３）と、および変換後ｉｎｏｄｅ番号７００４とを、ＦＳＭファイルシステム１０１７へ保存（設定）する（ステップＳ１４００９）。最後に、Ｍｋｄｉｒ処理部１４０００は、ファイル要求受信プログラム３００１へ、ＶＦＳ３００２を通してファイル作成完了メッセージを返し（ステップＳ１４０１０）、処理を終了する。
【０１２７】
以上の処理により、ファイル管理テーブル７０００のファイル名７００１に記録されるディレクトリパスと同じディレクトリパスで、実ファイルシステムへディレクトリが作成される。
【０１２８】
（Ｒｅａｄｄｉｒ処理）
図１５は、階層管理ファイルシステムプログラムのＲｅａｄｄｉｒ処理を示すフローチャートである。階層管理ファイルシステムプログラム１００６のＲｅａｄｄｉｒ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１のファイルリスト情報を取得する処理（Ｒｅａｄｄｉｒ処理）を実行する際に、ＶＦＳ３００２を介して階層管理ファイルシステムプログラム１００６のＲｅａｄｄｉｒ処理部１５０００（図１参照）が実行する処理である。
【０１２９】
なお、当該処理はファイル要求受信プログラム３００１がｒｅａｄｄｉｒ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｒｅａｄｄｉｒ要求、必要に応じてｌｏｏｋｕｐ要求に付随した情報を用いて当該処理の対象となるディレクトリを特定する。
【０１３０】
Ｒｅａｄｄｉｒ処理部１５０００は、ファイル要求受信プログラム３００１からＶＦＳ３００２を通して、ファイルリスト情報取得要求を受理する（ステップＳ１５００２）。そして、Ｒｅａｄｄｉｒ処理部１５０００は、ファイル管理テーブル７０００を調べ、ファイル名７００１と、ファイル要求受信プログラム３００１から受け取ったディレクトリパス名を前方一致で検索し（ステップＳ１５００３）、該当ディレクトリパス（パス）があるか否かを判定する（ステップＳ１５００４）。
【０１３１】
該当するディレクトリパスがある場合（ステップＳ１５００４：Ｙｅｓ）、Ｒｅａｄｄｉｒ処理部１５０００は、図７に示す該当するファイル名７００１（パス）を、結果返却用のバッファメモリ（返却用バッファ）へ格納し（ステップＳ１５００５）、ファイル管理テーブル７０００の次のエントリから検索を再開する（ステップＳ１５００７）。
【０１３２】
一方、該当するディレクトリパスが無い場合（ステップＳ１５００４：Ｎｏ）、Ｒｅａｄｄｉｒ処理部１５０００は、ステップＳ１５００５とステップＳ１５００７で結果返却用バッファメモリへ取得したファイルリスト情報（全エントリ）とエントリ数をファイル要求受信プログラム３００１へ、ＶＦＳ３００２を通して返し（ステップＳ１５００８）、処理を終了する。
【０１３３】
以上により、ファイル要求受信プログラム３００１は、仮想ファイルシステム２００１にある特定のディレクトリのファイルリスト情報を取得することができる。
【０１３４】
（Ｏｐｅｎ処理）
図１６は、Ｏｐｅｎ処理を示すフローチャートである。Ｏｐｅｎ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１のファイルをオープンする処理（Ｏｐｅｎ処理）を実行する際に、図３に示すＶＦＳ３００２と実ファイルシステムプログラム１００７とが実行する処理である。
【０１３５】
なお、当該処理はファイル要求受信プログラム３００１がｏｐｅｎ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｏｐｅｎ要求、必要に応じてｌｏｏｋｕｐ要求に付随した情報を用いて当該処理の対象となるファイルを特定する。
【０１３６】
ファイル要求受信プログラム３００１は、オープンインタフェース（ＯＰＥＮシステムコール）を用いて、ＶＦＳ３００２へファイルのオープンを要求する。その際、ＶＦＳ３００２は、ファイル要求受信プログラム３００１からオープン対象のファイル名と、オープンモードを受理する（ステップＳ１９００１）。
【０１３７】
そして、ＶＦＳ３００２は、オープン対象のファイルの管理情報であるｉｎｏｄｅと、名前管理情報であるディレクトリエントリをファイル名で検索する（ステップＳ１９００２）。これは、前述したＬｏｏｋｕｐ処理によって行う。
【０１３８】
Ｌｏｏｋｕｐ処理によって取得したｉｎｏｄｅには、実ファイルシステムプログラム１００７のファイル操作関数が設定されている。ＶＦＳ３００２は、ｉｎｏｄｅに設定されているオープン操作関数を実行する。その結果、実ファイルシステムプログラム１００７のオープン操作関数が実行される。そして、ＶＦＳ３００２は、実ファイルシステムプログラム１００７のオープン操作結果を取得する（ステップＳ１９００３）。
【０１３９】
ＶＦＳ３００２は、ファイル要求受信プログラム３００１がオープンしたファイルを一意に指定するときに使用するファイルディスクリプタを作成する（ステップＳ１９００４）。その際、ＶＦＳ３００２はファイルディスクリプタへファイル操作関数を設定する。最後に、ＶＦＳ３００２は、ファイルディスクリプタに番号を割り当てて、その番号をファイル要求受信プログラム３００１へ返す（ステップＳ１９００５）。なお、ファイルディスクリプタは、プログラムがアクセスするファイルや標準入出力などをＯＳ１００９が識別するために用いる識別子である。また、図中、ＶＦＳ処理とは、ＶＦＳ３００２が担当する処理を意味し、実ＦＳ処理とは、主に実ファイルシステムプログラム１００７が担当する処理（一部、ＶＦＳ３００２の担当する処理も含む。）を意味する。
【０１４０】
以上のように、階層管理ファイルシステムプログラム１００６は、ファイルオープン処理に関与しない。これによって、ファイルオープンにおけるＣＰＵ１００２の使用を削減でき、ファイルオープン処理を高速化することができる。
【０１４１】
（Ｒｅａｄ処理）
図１７は、Ｒｅａｄ処理を示すフローチャートである。Ｒｅａｄ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１のファイルを読み込む処理（Ｒｅａｄ処理）を実行する際に、図３に示すＶＦＳ３００２と実ファイルシステムプログラム１００７とが実行する処理である。
【０１４２】
なお、当該処理はファイル要求受信プログラム３００１がｒｅａｄ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｒｅａｄ要求、必要に応じてｌｏｏｋｕｐ要求またはｏｐｅｎ要求に付随した情報を用いて当該処理の対象となるファイルを特定する。
【０１４３】
ファイル要求受信プログラム３００１は、読み込みインタフェース（ＲＥＡＤシステムコール）を用いて、ＶＦＳ３００２へファイルの読み込みを要求する。その際、ＶＦＳ３００２は、アプリケーションであるファイル要求受信プログラム３００１から読み込み対象ファイルのファイルディスクリプタ番号を受理する（ステップＳ１６００１）。
【０１４４】
そして、ＶＦＳ３００２は、ファイルディスクリプタ番号から、ファイルディスクリプタデータを特定し（ステップＳ１６００２）、ファイルディスクリプタに登録されているファイル操作関数の中から、読み込み操作処理（Ｒｅａｄ処理）を実行する（ステップＳ１６００３）。これにより、実ファイルシステムプログラム１００７の読み込み操作処理が実行され、その結果として指定したファイルのデータとしてボリュームに格納されていたＲｅａｄ対象データを取得する。
【０１４５】
最後に、ＶＦＳ３００２は、実ファイルシステムプログラム１００７からファイル読み込み結果（すなわちＲｅａｄ処理の対象のデータ）を受け取り、ファイル要求受信プログラム３００１へ返す（ステップＳ１６００４）。当然ながら、ファイル要求受信プログラム３００１は、ｒｅａｄ要求を送信したクライアント１０３０に対して、Ｒｅａｄ処理の対象のデータを送信する。
【０１４６】
以上のように、階層管理ファイルシステムプログラム１００６は、ファイル読み込み処理に関与しない。これによって、ファイル読み込みにおけるＣＰＵ１００２の使用を削減でき、ファイル読み込み処理を高速化できる。
【０１４７】
（Ｗｒｉｔｅ処理）
図１８は、Ｗｒｉｔｅ処理を示すフローチャートである。Ｗｒｉｔｅ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１のファイルへデータを書き込む処理（Ｗｒｉｔｅ処理）を実行する際に、図３に示すＶＦＳ３００２と実ファイルシステムプログラム１００７とが実行する処理である。
【０１４８】
なお、当該処理はファイル要求受信プログラム３００１がｗｒｉｔｅ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｗｒｉｔｅ要求、必要に応じてｌｏｏｋｕｐ要求またはｏｐｅｎ要求に付随した情報を用いて当該処理の対象となるファイルを特定する。また、当然ながら当該処理ではｗｒｉｔｅ要求に付随するＷｒｉｔｅデータを用いる。
【０１４９】
ファイル要求受信プログラム３００１は、書き込みインタフェース（ＷＲＩＴＥシステムコール）を用いて、ＶＦＳ３００２へデータの書き込みを要求する。その際、ＶＦＳ３００２は、アプリケーションであるファイル要求受信プログラム３００１から書き込み対象ファイルのファイルディスクリプタ番号を受理する（ステップＳ１７００１）。
【０１５０】
そして、ＶＦＳ３００２は、ファイルディスクリプタ番号から、ファイルディスクリプタデータを特定し（ステップＳ１７００２）、ファイルディスクリプタに登録されているファイル操作関数の中から、書き込み操作処理（Ｗｒｉｔｅ処理）を実行する（ステップＳ１７００３）。これにより、実ファイルシステムプログラム１００７の書き込み操作処理が実行された結果、Ｗｒｉｔｅデータを指定したファイルのデータとしてボリュームに格納する。なお、ボリュームへ格納する処理の前にＷｒｉｔｅデータをサーバ１００１またはＲＡＩＤ装置１０１４が有するキャッシュメモリに一時保存し、本処理が完了した後にボリュームへの格納を行ってもよい。
【０１５１】
最後に、ＶＦＳ３００２は、実ファイルシステムプログラム１００７からファイル書き込み結果（Ｗｒｉｔｅ処理の結果）を受け取り、ファイル要求受信プログラム３００１へ返す（ステップＳ１７００４）。
【０１５２】
以上のように、階層管理ファイルシステムプログラム１００６は、ファイル書き込み処理に関与しない。これによって、ファイル書き込み処理におけるＣＰＵ１００２の使用を削減でき、ファイル書き込み処理を高速化できる。
【０１５３】
（Ｃｌｏｓｅ処理）
図１９は、Ｃｌｏｓｅ処理を示すフローチャートである。Ｃｌｏｓｅ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１のファイルをクローズする処理（Ｃｌｏｓｅ処理）を実行する際に、ＶＦＳ３００２と実ファイルシステムプログラム１００７とが実行する処理である。
【０１５４】
なお、当該処理はファイル要求受信プログラム３００１がｃｌｏｓｅ要求を受信した契機に実行することが考えられるが、これ以外の契機に実行してもよい。また、ｗｒｉｔｅ要求、必要に応じてｌｏｏｋｕｐ要求またはｏｐｅｎ要求に付随した情報を用いて当該処理の対象となるファイルを特定する。
【０１５５】
ファイル要求受信プログラム３００１は、クローズインタフェース（ＣＬＯＳＥシステムコール）を用いて、ＶＦＳ３００２へファイルのクローズを要求する。その際、ＶＦＳ３００２は、ファイル要求受信プログラム３００１からクローズ対象ファイルのファイルディスクリプタ番号を受理する（ステップＳ１８００１）。
【０１５６】
そして、ＶＦＳ３００２は、ファイルディスクリプタ番号から、ファイルディスクリプタデータを特定し（ステップＳ１８００２）、ファイルディスクリプタに登録されているファイル操作関数の中から、クローズ操作処理（Ｃｌｏｓｅ処理）を実行する（ステップＳ１８００３）。これにより、実ファイルシステムプログラム１００７のクローズ操作処理が実行される。
【０１５７】
最後に、ＶＦＳ３００２は、実ファイルシステムプログラム１００７からファイル書き込み結果を受け取り、ファイル要求受信プログラム３００１へ返す（ステップＳ１８００４）。
【０１５８】
以上のように、階層管理ファイルシステムプログラム１００６は、ファイルクローズ処理に関与しない。これによって、ファイルクローズ処理におけるＣＰＵ１００２の使用を削減でき、クローズ処理を高速化できる。
【０１５９】
なお、図１３から図１９で説明したファイル操作を全て階層管理ファイルシステムプログラム１００６が受け取り、そこでエラー処理を実施してもよい。
【０１６０】
例えば、図１３から図１９で説明したファイル操作の処理部を階層管理ファイルシステムプログラム１００６に用意する。そして、階層管理ファイルシステムプログラム１００６のＬｏｏｋｕｐ処理部１２０００のステップＳ１２００８において、図１３から図１９を含む全てのファイル操作処理を付け替える（置換する）。そして、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１へアクセスした際に、階層管理ファイルシステムプログラム１００６のファイル操作処理がエラーを検出する。通常、ファイルシステムにエラーが発生した場合、サーバは動作を停止（閉塞）する。しかし、この場合では、階層管理ファイルシステムプログラム１００６がエラーをファイル要求受信プログラム３００１へ返却して、処理を継続できる。なお、ファイル操作処理とは、図１３（Ｃｒｅａｔ処理）、図１４（Ｍｋｄｉｒ処理）、図１６（Ｏｐｅｎ処理）、図１７（Ｒｅａｄ処理）、図１８（Ｗｒｉｔｅ処理）、図１９（Ｃｌｏｓｅ処理）の処理を対象とする。
【０１６１】
上記処理を行うことで、サーバ１００１が提供するディレクトリ空間におけるディレクトリ名やファイル名を参照するためのｒｅａｄｄｉｒ要求（ファイル名参照要求）は、障害が発生していないファイル管理テーブルを格納したボリュームを参照して処理することで正常な結果を返すことができ、実際に障害が発生したボリュームへのアクセスが必要となるｒｅａｄｄｉｒ要求以外の処理を受信した時までユーザーの操作を継続させることができる。このような利点は、ファイル管理テーブルを格納したボリュームにアクセスするためのサーバ１００１からＲＡＩＤ装置１０１４への接続は正常であって、ファイルのデータを格納したボリュームにアクセスするためのサーバ１００１からＲＡＩＤ装置（ファイル管理テーブルを格納したボリュームを有するＲＡＩＤ装置とは他の装置の場合も考えうる）への接続に一時的な異常が発生した場合に特に有効であるが、このような状況以外でもファイルのデータを格納したボリュームにアクセスできない場合であれば、上記処理の利点を享受することができる。
【０１６２】
以上に説明したように、サーバ１００１は、高速ボリュームと低速ボリュームにそれぞれファイルシステムを作成する。階層管理ファイルシステムプログラム１００６は、そのファイルシステムを重ねるように配置する仮想ファイルシステム２００１を作成する。そして、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１へファイルを作成する場合は、高速ボリュームのファイルシステムへファイルを作成する。そして、管理者がコマンドを用いて、作成したファイルを低速ボリュームのファイルシステムへ移動する。その際、ファイルを管理しているテーブルを書き換え、次のファイルアクセスへ備える。一方、ファイルの読み書きといった仮想ファイルシステム２００１の名前空間に影響しない処理は、階層管理ファイルシステムプログラム１００６を経由せずに、実ファイルシステムプログラム１００７が処理する。
【０１６３】
これらの動作により、ファイル要求受信プログラム３００１が低速ボリュームへ移動されたファイルへのアクセスした場合のコピーを抑止でき、性能低下を防止できる。さらに、ファイルシステム（例えば、ＦＳ１（１０１５））を格納する同じ高速ボリュームに管理情報を格納しないため、高速ボリュームに障害が発生しても低速ボリュームは影響を受けない。さらに、管理情報が壊れても再構築できるため、障害復旧が容易である。そして、クライアント１０３０がファイルへアクセスする際にファイルシステムが壊れていた場合、そのファイルシステムを管理する実ファイルシステムプログラム１００７が障害へ対応する。これにより、階層管理ファイルシステムプログラム１００６の障害処理が簡素化される。
【０１６４】
また、実ファイルシステムを階層化して管理するため、新たなボリュームの追加が容易になる。ＨＳＭ機能により仮想ファイルシステム２００１を運用中に、ＲＡＩＤ装置１０１４が新たな高性能なボリュームをサポートした場合、そのボリュームを容易に追加できる。
【０１６５】
（実施形態２）
実施形態２では、ファイル管理テーブル７０００を変更し、ファイル管理テーブル７０００がｉｎｏｄｅ情報を有する。さらに、ファイル管理テーブル７０００のキャッシュを有することで、実施形態１と比較してファイルアクセス性能を向上させることができる。
【０１６６】
図２０は、実施形態２に係るファイル管理テーブルを示す図である。ファイル管理テーブル２００００は、管理情報１０１０の一部である。ファイル管理テーブル２００００はファイルが格納されている実ファイルシステム情報を管理するファイル管理テーブルである。
【０１６７】
実施形態１では、ファイル管理テーブル７０００（図７参照）は、階層管理ファイルシステムプログラム１００６が使用するｉｎｏｄｅ番号を保持していた。実施形態２では、ファイル管理テーブル２００００は、ｉｎｏｄｅ番号の代わりに、ｉｎｏｄｅ情報２０００１を保持する。このｉｎｏｄｅ情報は、例えば、ｉｎｏｄｅ番号を含む、ファイルアクセス日時、ファイルアクセスパーミッションなどの情報が記録されている。こうすることで、階層管理ファイルシステムプログラム１００６は、ｉｎｏｄｅ情報を実ファイルシステムではなく、ファイル管理テーブル２００００から取得できる。
【０１６８】
図２１は、実施形態２に係るファイル管理テーブルキャッシュの構造を示す図である。図２１に示すように、ファイル管理テーブルキャッシュ２１０００は、ファイル名２１００１、そのファイルに対応するｉｎｏｄｅ情報２１００２、変換後ＦＳＩＤ（２１００３）、変換後ｉｎｏｄｅ番号２１００４、リスト構造を構成する時に使用するポインタ２１００５で構成される。ファイル管理テーブルキャッシュ２１００のエントリは、メモリ１００８に作成される。
【０１６９】
図２２は、実施形態２に係るファイル管理テーブルキャッシュが使用されるときに構築するリスト構造を示す図である。まず一番先頭にヘッダがある。ヘッダのファイル名２１００１には「ＦＳ１」といった特殊なファイル名が記録される。これにより、階層管理ファイルシステムプログラム１００６は、リストが対応する実ファイルシステムを特定できる。最も新しいファイル管理テーブルキャッシュ２１０００のエントリがヘッダの次に接続される。一方、最後尾には最も古いファイル管理テーブルキャッシュ２１０００のエントリが接続される。ファイル管理テーブルキャッシュ２１０００のエントリは、固定数で管理されており、階層管理ファイルシステムプログラム１００６がキャッシュによってメモリ１００８が枯渇することが無いように制御する。
【０１７０】
図２２に示すように、キャッシュに接続するエントリ数は、実ファイルシステム毎に異なる。例えば、階層管理ファイルシステムプログラム１００６は、高速ボリュームのファイルシステム（図２のＦＳ１）のエントリ数を１０００に、低速ボリュームのファイルシステム（図２のＦＳ２）のエントリ数を１００に設定する。通常、ファイル要求受信プログラム３００１は、高速ボリュームのファイルシステムへ頻繁にアクセスするが、低速ボリュームのファイルシステムにはほとんどアクセスしない。従って、高速ボリュームのエントリ数を多く、低速ボリュームのエントリ数を少なく構成することで、階層管理ファイルシステムプログラム１００６はキャッシュを効率よく利用することができる。
【０１７１】
図２３は、実施形態２に係るファイルの階層移動を行う処理を示すフローチャートである。ファイルの階層移動を行う処理（階層移動処理）は、管理者が（Ａ４）式に示すｍｖ＿ｔｉｅｒコマンドを使用して、階層管理ファイルシステムプログラム１００６の階層移動処理部１１０００が行う。図２３の処理は、図１１の処理と同一処理について同一符号を付しており説明を省略する。
【０１７２】
図２３に示す処理では、図１１の示す処理と比較してステップＳ２２００１が追加されている。ステップＳ１１００５のＮｏの場合において、ファイルの階層を移動する際に、階層移動処理部１１０００は、ファイル管理テーブルキャッシュ２１０００を無効にする（ステップＳ２２００１）。ファイル管理テーブルキャッシュ２１０００は、実ファイルシステム毎に作成されるため、キャッシュを無効にしなければ誤った情報へアクセスするからである。従って、階層移動処理部１１０００がステップＳ２２００１を実施し、キャッシュを無効化する。
【０１７３】
図２４は、実施形態２に係るＬｏｏｋｕｐ処理を示すフローチャートである。実施形態２に係るＬｏｏｋｕｐ処理は、ファイル要求受信プログラム３００１が仮想ファイルシステム２００１のファイルへアクセスする際に、ＶＦＳ３００２を介して階層管理ファイルシステムプログラム１００６のＬｏｏｋｕｐ処理部１２０００が実行する処理である。図２４の処理は、図１２の処理と同一処理について同一符号を付しており説明を省略する。
【０１７４】
実施形態２の係るＬｏｏｋｕｐ処理部１２０００は、ファイル名からｉｎｏｄｅを取得する際に、まず、ファイル名を元にしてファイル管理テーブルキャッシュ２１０００（キャッシュ）を調査する（ステップＳ２３００１）。そして、Ｌｏｏｋｕｐ処理部１２０００は、ファイル名があるか否かを判定する（ステップＳ２３００２）。
【０１７５】
ここで、Ｌｏｏｋｕｐ処理部１２０００が、キャッシュからファイル名に該当するファイル情報を得た場合（ステップＳ２３００２：Ｙｅｓ）、ファイル管理テーブルキャッシュ２１０００（図２１参照）の変換後ＦＳＩＤ（２１００３）と変換後ｉｎｏｄｅ番号２１００４とを用いて、ステップＳ１２００５以降の処理を実行する。以降の処理は、図１２に示した実施形態１と同等のため説明を省略する。
【０１７６】
一方、ステップＳ２３００２において、ファイル名がなかった場合（ステップＳ２３００２：Ｎｏ）、Ｌｏｏｋｕｐ処理部１２０００は、ファイル管理テーブル７０００を調査し（ステップＳ１２００３）、ファイル名があるか否かを判定する（ステップＳ１２００４）。ファイル名があった場合（ステップＳ１２００４：Ｙｅｓ）、Ｌｏｏｋｕｐ処理部１２０００は、ファイル管理テーブル２００００からｉｎｏｄｅ情報２０００１を取得する（ステップＳ２３００３）。
【０１７７】
そして、Ｌｏｏｋｕｐ処理部１２０００は、ファイル管理テーブルキャッシュ２１０００のエントリ数、つまりキャッシュ数を調べ、キャッシュ数がオーバーするか否かを判定する（ステップＳ２３００４）。エントリ数がオーバーする場合（ステップＳ２３００４：Ｙｅｓ）、キャッシュから最も古いキャッシュエントリを外し、削除して（ステップＳ２３００５）以降の処理を継続する。一方、エントリ数がオーバーしない場合（ステップＳ２３００４：Ｎｏ）、Ｌｏｏｋｕｐ処理部１２０００は、ファイル管理テーブルキャッシュ２１０００のエントリを作成して全ての値を設定し、リストの先頭へ接続する（ステップＳ２３００６）。そして、図１２に示す実施形態１と同様の処理を以降続ける。
【０１７８】
実施形態１では、図８において、管理者が（Ａ１）式に示すｍｏｕｎｔコマンドを使用して、実ファイルシステムを階層管理へ参加させたときの動作（階層管理参加処理）を示した。実施形態１の階層管理参加処理は、階層管理参加処理部８０００がステップＳ８０１１で、実ファイルシステムを調査（走査）して、ファイル管理テーブル７０００を作成する。実施形態２では、この際、階層管理参加処理部８０００がｉｎｏｄｅ情報を取得し、ファイル管理テーブル２００００のｉｎｏｄｅ情報２０００１を設定する。
【０１７９】
また、実施形態２により、非常に低速なボリュームを階層管理に加えたときに、ファイル情報を取得する性能が向上することができる。
【０１８０】
以上、本願実施形態では以下の概要について説明した。ただし、下記概要以外の本実施形態の記載事項が当該概要に限定されるものではない。
【０１８１】
第１のボリュームと第２のボリュームと第３のボリュームとを有するストレージシステムを備え、前記ストレージシステムとクライアントコンピュータに接続したファイルサーバのファイル管理方法であって、前記第１のボリュームを第１のファイルシステムとして初期化するステップと、前記第２のボリュームを第２のファイルシステムとして初期化するステップと、前記第１のファイルシステムの所定のディレクトリ名に対応する第１のディレクトリに格納した第１のファイル群と、前記第２のファイルシステムの前記第１のディレクトリ名に対応する第２のディレクトリに格納した第２のファイル群とを元に、仮想的に、前記第１のディレクトリ名に対応するディレクトリに前記第１のファイル群と前記第２のファイル群とを含む階層ファイル群とを格納した仮想ファイルシステムを定義するステップと、前記定義するステップに従って、前記階層ファイル群と前記第１のファイル群および前記第２のファイル群との対応情報を前記第３のボリュームに格納するステップと、前記クライアントコンピュータから階層ファイル群の１つを指定したアクセス要求を受信した場合、前記対応情報を元に、前記第１のファイルシステムまたは前記第２のファイルシステムにアクセスするステップと、移動対象ファイルを前記階層ファイル群から特定するステップと、前記移動対象ファイルに対応する前記第１のファイル群の一部のファイルのデータを、前記第１のファイルシステムから前記第２のファイルシステムへコピーし、前記対応情報の前記移動対象ファイルに関する対応を変更するステップと、を有する。
【０１８２】
なお、前記対応情報は、前記階層ファイル群に含まれるファイル毎に、前記第１のファイルシステムに格納したか、前記第２のファイルシステムに格納したかを示す対応を有してもよい。また、再構築処理要求を受理した場合に、前記第１のボリュームと前記第２のボリュームにアクセスすることで、前記対応情報を再作成するステップと、を有してもよい。また、前記移動対象ファイルは、例えば、ファイルサーバが所定時間アクセスがない際に検知して特定されたファイルであってもよい。
【０１８３】
また、ファイルサーバは、前記第２のボリュームの障害を検知するステップと、前記クライアントコンピュータから受信した前記第１のディレクトリ名を指定したファイル名参照要求に対して、前記対応情報を参照することで、前記階層ファイル群の一部であって、前記第１のファイル群と前記第２のファイル群を仮想的に含む１つ以上のファイルに対応するファイル名を送信するステップと、前記障害の検知に応じて、前記クライアントコンピューターから受信した前記階層ファイル群の１つを特定したファイルの読み込みまたは書き込み要求に対して、エラーを送信するステップと、を有してもよく、前記第２のファイルシステムを指定した解除要求に応じて、前記仮想ファイルシステムの前記階層ファイル群から前記第２のファイルシステムに格納した前記第２のファイル群に対応する１つ以上のファイルを特定するステップと、前記特定した１つ以上のファイルに関する対応を前記対応情報から削除し、前記クライアントコンピューターからの前記仮想ファイルシステムと前記第１のディレクトリ名を指定したファイル名参照要求から前記特定した１つ以上のファイルに対応するファイル名の送信を抑止するステップと、を有してもよい。
【０１８４】
また、ファイルサーバは、前記仮想ファイルシステムの定義を解除するステップと、前記解除に従って、前記クライアントコンピューターから指定した前記第１のファイルシステムに格納した前記第１のファイル群の１つを指定したアクセス要求を受信した場合、前記第１のファイルシステムにアクセスするステップと、を有してもよい。
【０１８５】
本実施形態によれば、ユーザが低速ストレージに格納されたファイルへアクセスした際に、ファイル移動が無いためアクセス性能低下が抑えられることができる。また、高速ストレージが壊れた場合でも、低速ストレージは使用できる。さらに、運用中のＨＳＭ機能の構成の変更ができるため、構築済みのＨＳＭ機能の構成で、新たなファイルシステムを容易に追加できる。なお、本発明はファイル共有機能を提供するサーバに広く適用することができる。
【図面の簡単な説明】
【０１８６】
【図１】本発明が適用される階層管理ファイルシステムの構成例を示す図である。
【図２】本実施形態に係るＨＳＭ機能を使用した場合のファイルシステムツリー構造を示す図である。
【図３】サーバのソフトウェア構成を示す図である。
【図４】ファイルシステムの階層の管理情報である階層管理テーブルを示す図である。
【図５】階層データリストの基本データ構造を示す図である。
【図６】基本データ構造に基づく、利用中の仮想ファイルシステムを構成する実ファイルシステムをリストとして管理する階層データリストのデータ構造を示す図である。
【図７】ファイルが格納されている実ファイルシステム情報を示すファイル管理テーブルのデータ構造を示す図である。
【図８】実ファイルシステムを階層管理へ参加させる処理を示すフローチャートである。
【図９】実ファイルシステムを階層管理から外す処理を示すフローチャートである。
【図１０】ファイル管理テーブルの再構築を行う処理を示すフローチャートである。
【図１１】ファイルの階層移動を行う処理を示すフローチャートである。
【図１２】階層管理ファイルシステムプログラムのＬｏｏｋｕｐ処理を示すフローチャートである。
【図１３】階層管理ファイルシステムプログラムのＣｒｅａｔ処理を示すフローチャートである。
【図１４】階層管理ファイルシステムプログラムのＭｋｄｉｒ処理を示すフローチャートである。
【図１５】階層管理ファイルシステムプログラムのＲｅａｄｄｉｒ処理を示すフローチャートである。
【図１６】Ｏｐｅｎ処理を示すフローチャートである。
【図１７】Ｒｅａｄ処理を示すフローチャートである。
【図１８】Ｗｒｉｔｅ処理を示すフローチャートである。
【図１９】Ｃｌｏｓｅ処理を示すフローチャートである。
【図２０】実施形態２に係るファイル管理テーブルを示す図である。
【図２１】実施形態２に係るファイル管理テーブルキャッシュの構造を示す図である。
【図２２】実施形態２に係るファイル管理テーブルキャッシュが使用されるときに構築するリスト構造を示す図である。
【図２３】実施形態２に係るファイルの階層移動を行う処理を示すフローチャートである。
【図２４】実施形態２に係るＬｏｏｋｕｐ処理を示すフローチャートである。
【符号の説明】
【０１８７】
１００１    サーバ（ファイルサーバ）
１００２    ＣＰＵ
１００５    管理コマンド
１００６    階層管理ファイルシステムプログラム
１００７    実ファイルシステムプログラム
１００８    メモリ
１００９    オペレーティングシステム
１０１０    管理情報
１０１１    ディスク制御装置
１０１２    ＦＣディスクドライブ
１０１３    ＳＡＴＡディスクドライブ
１０１４    ＲＡＩＤ装置（記憶装置）
１０１５    ＦＳ１
１０１６    ＦＳ２
１０１７    ＦＳＭファイルシステム
１０２０    管理端末
１０３０    クライアント（クライアントコンピュータ）
１０３１    ファイルアクセスプログラム
３００１    ファイル要求受信プログラム
３００２    ＶＦＳ
４０００    階層管理テーブル（ファイルシステム階層管理情報）
５０００    階層データリスト
７０００    ファイル管理テーブル（ファイル管理情報）
８０００    階層管理参加処理部
９０００    階層管理離脱処理部
１００００    管理情報再構築処理部
１１０００    階層移動処理部
１２０００    Ｌｏｏｋｕｐ処理部
１３０００    Ｃｒｅａｔ処理部
１４０００    Ｍｋｄｉｒ処理部
１５０００    Ｒｅａｄｄｉｒ処理部
【図１】
2010097359.tif 000003
【図２】
2010097359.tif 000004
【図３】
2010097359.tif 000005
【図４】
2010097359.tif 000006
【図５】
2010097359.tif 000007
【図６】
2010097359.tif 000008
【図７】
2010097359.tif 000009
【図８】
2010097359.tif 000010
【図９】
2010097359.tif 000011
【図１０】
2010097359.tif 000012
【図１１】
2010097359.tif 000013
【図１２】
2010097359.tif 000014
【図１３】
2010097359.tif 000015
【図１４】
2010097359.tif 000016
【図１５】
2010097359.tif 000017
【図１６】
2010097359.tif 000018
【図１７】
2010097359.tif 000019
【図１８】
2010097359.tif 000020
【図１９】
2010097359.tif 000021
【図２０】
2010097359.tif 000022
【図２１】
2010097359.tif 000023
【図２２】
2010097359.tif 000024
【図２３】
2010097359.tif 000025
【図２４】
2010097359.tif 000026