(57)【要約】【課題】  ファイル全体を上書きする場合でも、書き込み速度が低下するのを防止すること。【解決手段】  NAS装置10は、アクセス要求元の計算機20aから、ファイル180に対するファイルサイズ変更要求を受けたときには、ファイル180の実体であるファイル181が存在するファイルシステム16bによりも、アクセス頻度の高いファイルシステム16aに、ファイル181に関連する新たなファイル182を作成し、新たなファイル182とファイル180との関連付けを実行し、この関連付けを実行したことを条件に、ファイル181を削除し、その後、アクセス要求元から、ファイル180に対するデータ書き込み要求を受けたことを条件に、新たなファイル182に対するデータの書き込み処理を実行する。【選択図】        図１
2010225024.tif 000002
【特許請求の範囲】
【請求項１】
データの論理的記憶領域として、処理性能によって相異なるグループに分かれて構成された複数のボリュームを有する記憶装置と、
前記複数のボリューム上に階層化されて構築されたファイル群を含む複数のファイルシステムを統合して仮想的に階層化された階層ファイルシステムを有し、前記階層ファイルシステムを、アクセス要求元に対するアクセス対象として管理するコントローラを備え、
前記コントローラは、前記アクセス要求元からファイルサイズ変更要求を受けたときに、前記階層ファイルシステムに属するファイル群の中から、前記ファイルサイズ変更要求で指定されたアクセス対象ファイルを抽出し、かつ、前記複数のファイルシステムの中から、前記抽出したアクセス対象ファイルの実体となる実ファイルが属する第一のファイルシステムを抽出するとともに、前記実ファイルの仮想の移動先となる第二のファイルシステムを抽出し、前記抽出した第二のファイルシステムに、前記実ファイルに関連する新たなファイルを作成し、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行し、その後、前記アクセス要求元から、前記アクセス対象ファイルに対するデータ書き込み要求を受けたときには、前記新たなファイルに対するデータの書き込み処理を実行する、ストレージ装置。
【請求項２】
前記コントローラは、前記ファイルサイズ変更要求を受けたときには、前記第二のファイルシステムとして、前記第一のファイルシステムによりも、処理性能の高いファイルシステムを抽出し、前記抽出した第二のファイルシステムに、前記実ファイルに関連する新たなファイルを作成し、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行し、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行したことを条件に、前記実ファイルを削除し、その後、前記アクセス要求元から、前記アクセス対象ファイルに対するデータ書き込み要求を受けたことを条件に、前記新たなファイルに対するデータの書き込み処理を実行する請求項１に記載のストレージ装置。
【請求項３】
前記コントローラは、前記ファイルサイズ変更要求を受けたときには、前記第二のファイルシステムとして、前記第一のファイルシステムによりも、処理性能の高いファイルシステムを抽出する、請求項１に記載のストレージ装置。
【請求項４】
前記コントローラは、前記ファイルサイズ変更要求を受けたときには、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行したことを条件に、前記実ファイルを削除する、請求項１に記載のストレージ装置。
【請求項５】
前記コントローラは、前記アクセス要求元からのファイル操作処理要求の中に、引数として、前記ファイルサイズ変更要求が存在するときにも、前記ファイルサイズ変更要求に対する処理を実行する、請求項１に記載のストレージ装置。
【請求項６】
前記コントローラは、前記ファイルサイズ変更要求として、前記アクセス対象ファイルのサイズを０とするファイルサイズ変更要求を受けたときには、前記新たなファイルを、そのサイズを０として作成する、請求項１に記載のストレージ装置。
【請求項７】
前記コントローラは、前記ファイルサイズ変更要求として、前記アクセス対象ファイルのサイズを規定のサイズ以下とするファイルサイズ変更要求を受けたときには、前記実ファイルの先頭から前記規定のサイズ以下分のデータを前記実ファイルから抽出し、前記抽出したデータを前記新たなファイルに対するデータの書き込み処理に用いる、請求項１に記載のストレージ装置。
【請求項８】
前記コントローラは、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行するときに、前記新たなファイルに、前記実ファイルのメタデータを書き込むための処理を実行する、請求項１に記載のストレージ装置。
【請求項９】
データの論理的記憶領域として、処理性能によって相異なるグループに分かれて構成された複数のボリュームを有する記憶装置と、
前記複数のボリューム上に階層化されて構築されたファイル群を含む複数のファイルシステムを統合して仮想的に階層化された階層ファイルシステムを有し、前記階層ファイルシステムを、アクセス要求元に対するアクセス対象として管理するコントローラを備え、
前記コントローラは、
前記アクセス要求元からファイルサイズ変更要求を受けたときに、前記階層ファイルシステムに属するファイル群の中から、前記ファイルサイズ変更要求で指定されたアクセス対象ファイルを抽出し、かつ、前記複数のファイルシステムの中から、前記抽出したアクセス対象ファイルの実体となる実ファイルが属する第一のファイルシステムを抽出するとともに、前記実ファイルの仮想の移動先となる第二のファイルシステムを抽出するステップと、
前記ステップで抽出した第二のファイルシステムに、前記実ファイルに関連する新たなファイルを作成するステップと、
前記ステップで作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行するステップと、
その後、前記アクセス要求元から、前記アクセス対象ファイルに対するデータ書き込み要求を受けたときには、前記新たなファイルに対するデータの書き込み処理を行うステップを実行する、ストレージ装置のファイル制御方法。
【請求項１０】
前記コントローラは、
前記ファイルサイズ変更要求を受けたときには、前記第二のファイルシステムとして、前記第一のファイルシステムによりも、処理性能の高いファイルシステムを抽出するステップと、
前記ステップで抽出した第二のファイルシステムに、前記実ファイルに関連する新たなファイルを作成するステップと、
前記ステップで作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行するステップと、
前記ステップで作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行したことを条件に、前記実ファイルを削除するステップと、
その後、前記アクセス要求元から、前記アクセス対象ファイルに対するデータ書き込み要求を受けたことを条件に、前記新たなファイルに対するデータの書き込み処理を行うステップを実行する、請求項９に記載のストレージ装置のファイル制御方法。
【請求項１１】
データの論理的記憶領域として、処理性能によって相異なるグループに分かれて構成された複数のボリュームを有する記憶装置と、
前記複数のボリューム上に階層化されて構築されたファイル群を含む複数のファイルシステムを統合して仮想的に階層化された階層ファイルシステムを有し、前記階層ファイルシステムを、アクセス要求元に対するアクセス対象として管理するファイルサーバと、
前記ファイルサーバと通信ネットワークを介して接続されて、前記階層ファイルシステムをアクセス対象として、前記ファイルサーバと情報の授受を行う計算機を備え、
前記ファイルサーバは、
前記アクセス要求元となる前記計算機からファイルサイズ変更要求を受けたときに、前記階層ファイルシステムに属するファイル群の中から、前記ファイルサイズ変更要求で指定されたアクセス対象ファイルを抽出し、かつ、前記複数のファイルシステムの中から、前記抽出したアクセス対象ファイルの実体となる実ファイルが属する第一のファイルシステムを抽出するとともに、前記実ファイルの仮想の移動先となる第二のファイルシステムを抽出し、前記抽出した第二のファイルシステムに、前記実ファイルに関連する新たなファイルを作成し、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行するファイル切り詰め処理部と、
前記計算機から前記ファイルサイズ変更要求の後、前記アクセス対象ファイルに対するデータ書き込み要求を受けたときに、前記新たなファイルに対するデータの書き込み処理を実行するデータ書き込み処理部と、
を有する、ストレージシステム。
【請求項１２】
前記ファイル切り詰め処理部は、
前記ファイルサイズ変更要求を受けたときには、前記第二のファイルシステムとして、前記第一のファイルシステムによりも、処理性能の高いファイルシステムを抽出し、前記抽出した第二のファイルシステムに、前記実ファイルに関連する新たなファイルを作成し、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行し、前記作成した新たなファイルと前記アクセス対象ファイルとの関連付けを実行したことを条件に、前記実ファイルを削除する、請求項１１に記載のストレージシステム。
【請求項１３】
前記ファイル切り詰め処理部は、
前記ファイルサイズ変更要求として、前記アクセス対象ファイルのサイズを０とするファイルサイズ変更要求を受けたときには、前記新たなファイルを、そのサイズを０として作成する、請求項１１に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、性能や価格が異なるストレージボリュームに構築されたファイルシステムを効率的に利用するためファイルの管理技術に関する。
【背景技術】
【０００２】
計算機システムにおいては様々な種類の記録メディアが使用されている。例えば、計算機システムのハードディスク装置では、SATA (Serial AT Attached)、SAS (Serial Attached SCSI)、FC(Fibre Channel)ドライブ等がある。
【０００３】
SAS、FCドライブは、SATAドライブと比較して、容量あたりの単価が高価であるが、データの書き込みや読み出しはより高速に処理できる。近年はSSD(Solid State Disk)がハードディスク装置より高速かつ高価な記録メディアとして利用されている。これらの高価・高速な記録メディアは、頻繁に更新されるデータの格納に適する。
【０００４】
一方、低価格・低速なドライブは、更新されることが少ないデータの格納に適する。
【０００５】
一般に、総データ量に対して、頻繁に更新されるデータの量は2割程度と言われており、データの更新頻度に応じて使用する記録メディアを使い分けることで、ストレージのコストを抑えることができる。このことに注目し、更新頻度に基づいてファイルを自動的に適したドライブへ移動する階層ファイル管理システムが知られている (特許文献1参照)。
【特許文献１】特開２００４−２９５４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ファイルへの書き込み処理の性能(スループット)は、そのファイルが配置されているドライブの性能に基くことが知られている。このため、従来の階層ファイル管理システムでは、ファイルのライフサイクルに応じて、ファイルを高速なドライブから低速なドライブへ移動することが行われている。しかし、低速なドライブに移動したファイル全体を上書きする処理は、移動前のファイルへの書き込み処理よりも遅くなる。この遅延は、サイズの大きなファイル全体を上書きする場合、データの量が多くなるので、特に顕著となる。
【０００７】
本発明は、ファイルに上書き処理を施す際に、ファイルが存在するファイルシステムよりも処理性能の高いファイルシステムでファイルに対する上書き処理を実行することができるストレージ装置とそのファイル制御方法およびストレージシステムを提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
前記目的を達成するため、本発明は、アクセス要求元から、ファイルサイズ変更要求を受けたときには、ファイルサイズ変更要求で指定されたアクセス対象ファイルを基にアクセス対象ファイルの実体である実ファイルを求め、この実ファイルが存在するファイルシステムとは異なるファイルシステムに、実ファイルに関連する新たなファイルを作成し、新たなファイルとアクセス対象ファイルとの関連付けを実行したことを条件に、実ファイルを削除し、その後、アクセス要求元から、アクセス対象ファイルに対するデータ書き込み要求を受けたことを条件に、新たなファイルに対するデータの書き込み処理（上書き処理）を実行することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ファイル全体を上書きする場合でもあっても、ファイルに対する上書き処理速度が低下するのを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施例に係るストレージシステムの概要を説明するための構成図である。
【図２】本発明の一実施例に係るNAS装置を説明するための構成図である。
【図３】本発明の一実施例に係る計算機を説明するための構成図である。
【図４】本発明の一実施例に係るNAS装置でのファイルシステムのマウントの概念を説明する構成図である。
【図５】本発明の一実施例に係る階層ファイルシステムとファイルシステムの構成および両者の関係を説明する構成図である。
【図６】本発明の一実施例に係るマウント管理テーブルを説明するための構成図である。
【図７】本発明の一実施例に係る階層管理テーブルを説明するための構成図である。
【図８】本発明の一実施例に係るファイル管理情報を説明するための構成図である。
【図９】本発明の一実施例に係る階層ファイルシステム管理情報を説明するための構成図である。
【図１０】本発明の一実施例に係るNAS装置のファイル一覧取得処理を説明するためのフローチャートである。
【図１１】本発明の一実施例に係るNAS装置のファイルリード処理を説明するためのフローチャートである。
【図１２】本発明の一実施例に係るファイル切り詰め処理を説明するためのフローチャートである。
【図１３】本発明の一実施例に係る階層ファイルシステム処理プログラムのファイル切り詰め処理を説明するためのフローチャートである。
【図１４】本発明の一実施例に係るファイル切り詰め処理完了後のファイル管理情報を説明する構成図である。
【図１５】本実施例におけるファイルライト処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明に係るストレージシステムの構成を図面に基づいて説明する。なお、以下に説明する実施例は、特許請求の範囲にかかる発明を限定するものではなく、また実施例の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
〈概要〉
まず、本発明に係るストレージシステムの概要を説明する。ストレージシステムは、計算機と、記憶装置と、計算機と記憶装置にそれぞれ通信ネットワークを介して接続されたファイルサーバを備え、ファイルサーバは、計算機からのファイルサイズ変更要求に応答して、ファイルサイズ変更要求で指定されたアクセス対象ファイルを基にアクセス対象ファイルの実体である実ファイルを求め、この実ファイルが存在するファイルシステムとは異なる、処理性能の高いファイルシステムに、実ファイルに関連する新たなファイルを作成し、新たなファイルとアクセス対象ファイルとの関連付けを実行したことを条件に、実ファイルを削除し、その後、アクセス要求元から、アクセス対象ファイルに対するデータ書き込み要求を受けたことを条件に、新たなファイルに対するデータの書き込み処理を実行する。
【００１３】
図１は、本発明に係るストレージシステムの概要を説明するための構成図である。
【００１４】
ストレージシステム１は、ファイルサーバとしてのNAS(Network Attached Storage)装置10、計算機20a、20b、記憶装置30a、30bからなる。また、ストレージシステム１を制御するための管理用計算機（図示せず）を有している。NAS装置10は、計算機20aおよび20bとは、通信ネットワーク、例えば、LAN(Local Area Network)41により接続し、記憶装置30aおよび30bとは、通信ネットワーク、例えば、SAN(Storage Area Network)42により接続する。
【００１５】
記憶装置30aは、ボリューム31aを有している。記憶装置30bは、ボリューム31bを有している。これらのボリューム31aおよび31bは、NAS装置10がデータを格納するための記憶領域として利用する。ボリューム31aは、ボリューム31bと比較して、データ読み出しおよびデータ書き込みが高速に処理できるボリュームとして構成されている。
【００１６】
例えば、データの論理的記憶領域として、処理性能、例えば、アクセス頻度の相異なるグループに分けて複数のボリュームを構成した場合、ボリューム31aは、記憶装置30aの記憶領域に構築されたボリュームであって、ボリューム31bよりもアクセス頻度が高く、処理速度が高速なグループ（高位のグループ）に属するボリュームとして構成され、ボリューム31bは、記憶装置30bの記憶領域に構築されたボリュームであって、ボリューム31aよりもアクセス頻度が低く、処理速度が低速なグループ（低位のグループ）に属するボリュームとして構成されている。
【００１７】
NAS装置10は、記憶装置30aおよび30bとともに、ストレージ装置を構成し、ボリューム31aおよび31b上に階層化されて構築されたファイル群やディレクトリ群を含むファイルシステム16aおよび16bを有する。これらのファイルシステム16aおよび16bは、それぞれボリューム31aおよびボリューム31b上に構築される。ファイルシステム16aおよび16bはそれぞれ統合されて仮想的に階層化された階層ファイルシステム160としてNAS装置10に配置されている。
【００１８】
階層ファイルシステム160は、例えば、計算機20aが階層ファイルシステム160にアクセスすることで、ファイルシステム16aと16bに格納されているファイルおよびディレクトリにアクセスできるように構成されている。
【００１９】
この際、階層ファイルシステム160が、計算機20aに存在するアプリケーションプログラム等のアクセス要求元に対して、ファイルシステム16aおよび16bに格納されているファイルおよびディレクトリをアクセスさせる場合のルールを以下に示す。
【００２０】
(1)    ファイルシステム16aまたは16bに格納されているファイルおよびディレクトリは、あたかも階層ファイルシステム160に格納されているファイルおよびディレクトリであるかのように現出する。
【００２１】
(2)    (1)のファイルおよびディレクトリのパス名は、階層ファイルシステム160においても変わらない。例えば、ファイルシステム16aにおいて、”dir/file.txt”のパス名を持つファイルは、階層ファイルシステム160においても同じく”dir/file.txt”のパス名でアクセスできる。
【００２２】
(3)    ファイルシステム16aおよび16bに同じパス名のディレクトリがある場合、階層ファイルシステム160におけるそのディレクトリには、ファイルシステム16aおよび16bの前記のディレクトリに含まれる全てのファイルが現出する。
【００２３】
(4)    階層ファイルシステム160において、ファイルに対するリードアクセスを行った場合、そのファイルが実際に格納されているファイルシステム16aまたは16bの同じパス名のファイルからデータが読み出される。ライトアクセスについても同様に処理される。
【００２４】
また、NAS装置10は、ファイル共有17を有している。ファイル共有17は、階層ファイルシステム160を、計算機20aおよび20bからアクセスできるようにする(公開する)機能である。ファイル共有17と計算機20aおよび20bの間の通信プロトコルとしては、例えば、NFS(Network File System)プロトコル、CIFS(Common Internet File System)プロトコル、HTTP(Hypertext Transfer Protocol)、FTP(File Transfer Protocol)等に代表されるファイル転送プロトコルを使用することができる。
【００２５】
計算機20aおよび20bがファイル共有17を介して階層ファイルシステム160にアクセスする場合、前述のルールに従う。
【００２６】
ここで、計算機20aで動作するアプリケーションプログラム241が、NAS装置10に格納されているS.mpgという名前のファイル180にアクセスする場合について説明する。ファイル180は、計算機20aのアクセス対象ファイルであって、計算機20aからは階層ファイルシステム160に格納されているかのように見えるが、実体は、ファイル181としてファイルシステム16bに格納されている。
【００２７】
計算機20aがファイル180に対してリード/ライト要求を行うと、その要求はファイルシステム16bのファイル181に対して処理される。ファイルシステム16bはボリューム31b上に構築されているので、このリード/ライト要求は、ボリューム31a上に構築されているファイルシステム16aに対する場合よりも低速に処理される。しかし、アプリケーションプログラム241がファイル180を上書き(新しいデータでの完全な書き換え)する場合には、本発明により、ファイル180の実体が、ファイル181としてファイルシステム31bに存在する場合であっても、処理速度の低下を回避できる。
【００２８】
具体的には、アプリケーションプログラム241がファイル180を上書きする場合に、NAS装置10に発行する要求を、上書き要求シーケンス26に示す。上書き要求シーケンス26は、TRUNCATEオペレーション要求261、WRITEオペレーション要求262を含む。TRUNCATEオペレーション要求261は、ファイルのサイズを変更する要求である。ファイルの上書きの場合は、ファイルを空にする(ファイルサイズを0にする)オペコードを含む。WRITEオペレーション要求262は、ファイルへデータを書き込む要求である。
【００２９】
上書き要求シーケンス261に対し、NAS装置10は以下のように動作する。これにより、ファイル180への上書き時の速度低下を防止する。
【００３０】
(1) TRUNCATEオペレーション要求261
(1-1) ファイル共有17は、ファイル180に対するTRUNCATEオペレーション要求261を受領する。
(1-2) ファイル共有17は、階層ファイルシステム160に対し、ファイル180のファイルサイズ切り詰めを要求する。
(1-3) 階層ファイルシステム160は、ファイルサイズ切り詰めの要求を受け、ファイルシステム16aにファイル180と同じパス名でサイズが0のファイル182を作成し、ファイル180の実体を、ファイル181からファイル182に変更する（ゼロコピー移動191）。そして、ファイル182とファイル180との関連付けとして、ファイル180の実体がファイル182であることの関連づけを行う。
(1-4) 階層ファイルシステム160は、ファイルシステム16aのファイル181を削除する。
【００３１】
この時点で、ファイル180の実体は、低速なファイルシステム16bから高速なファイルシステム16a上へ仮想的に移動したこととなる。しかし、ファイル180は、アプリケーションプログラム241のアクセス対象ファイルとして、依然階層ファイルシステム160に存在するため、アプリケーションプログラム241が、ファイル180の実体の移動を認識することはない。
【００３２】
(2) WRITEオペレーション要求262
(2-1) ファイル共有17は、ファイル180に対するWRITEオペレーション要求262を受領する。
(2-2) ファイル共有17は、階層ファイルシステム160に対し、ファイル180へのデータ書き込みを要求する。
(2-3) 階層ファイルシステム160は、ファイル180へデータ書き込み要求を受け、その実体であるファイル182へデータを書き込む（高速なWRITE処理192）。
【００３３】
この時点で、ファイル182はボリューム31a上に構築されたファイルシステム16aにあるため、データの書き込みの遅延は発生しない。
【００３４】
上述したように、NAS装置１０は、ファイルサーバとして、計算機20aからのファイルサイズ変更要求を受けたときに、階層ファイルシステム160に属するファイル群の中から、ファイルサイズ変更要求で指定されたアクセス対象ファイル180を抽出し、かつ、階層ファイルシステム160に属する複数のファイルシステムの中から、アクセス対象ファイル180の実体である実ファイル181が属する第一のファイルシステム16bと、実ファイル181の仮想の移動先となる、高速な第二のファイルシステム16aを抽出し、抽出したファイルシステム16aに、新たなファイル182を作成し、新たなファイル182とアクセス対象ファイル180との関連付けを実行したことを条件に、実ファイル181を削除し、その後、アクセス要求元から、アクセス対象ファイル180に対するデータ書き込み要求を受けたことを条件に、新たなファイル182に対するデータの書き込み処理を実行することとしている。
【００３５】
すなわち、アプリケーションプログラム241がファイル180を上書きする場合に、ファイル180の実体が、ファイル181としてファイルシステム31bに存在する場合であっても、上書き要求シーケンス26に応答して、ファイル180の実体を、低速なファイルシステム16bから高速なファイルシステム16aへ仮想的に移動し、その後、WRITEオペレーション要求262で、ファイル180へデータ書き込み要求を受けたときには、ファイル180の実体であるファイル182へデータを書き込むことで、ファイル180全体を上書きするときでも、書き込み速度が低下するのを防止することができる。
【実施例】
【００３６】
以下、本発明の一実施例を図面に基づいて説明する。
〈NAS装置〉
図2は、本発明の一実施例に係るNAS装置10を説明する図である。
【００３７】
ＮＡＳ装置10は、ネットワークインタフェースコントローラ11と、プロセッサ12と、ホストバスアダプタ13と、記憶装置114と、メモリ14とを有する。ネットワークインタフェースコントローラ11は、ＬＡＮ41を介して計算機2０a、20bとのデータのやり取りを仲介する。ホストバスアダプタ13は、ＳＡＮ42を介して記憶装置30a、30bとの間のデータのやり取りを仲介する。
【００３８】
プロセッサ12は、メモリ14に格納されたプログラムやデータを用いて各種処理、例えば、計算機20aなどのアクセス要求元からファイルサイズ変更要求を受けたときには、ファイルサイズ変更要求で指定されたアクセス対象ファイルをメモリ14から抽出するための処理などを実行するコントローラとして構成されている。
【００３９】
メモリ１４は、プログラムやデータを記憶する。本実施例では、メモリ１４は、ファイル共有17に関する処理を実行するためのファイル共有処理プログラム141と、入出力処理等を実行するためのオペレーティングシステム150とを記憶する。オペレーティングシステム150は、マウント管理テーブル142、階層管理テーブル143、ファイル管理情報144を内包し、プログラムとして、ファイルシステム16aおよび16bに関する処理を実行するAngelFS処理プログラム145およびBeastFS処理プログラム146、階層ファイルシステム処理プログラム147、ネットワーク処理プログラム148、ボリュームI/O処理プログラム149を内包する。
【００４０】
AngelFSは、ファイルシステム16aの種類の名称である。BeastFSは、ファイルシステム16bの種類の名称である。
【００４１】
オペレーティングシステム150はまた、階層ファイルシステム160に関する処理を実行する階層ファイルシステム処理プログラム147と、ネットワークに関する処理を実行するネットワーク処理プログラム148と、ボリューム31aおよび31bに対するI/O処理を実行するボリュームI/O処理プログラム149を内包している。
【００４２】
ファイル共有処理プログラム141は、ネットワーク処理プログラム148を利用して、計算機20aおよび20との通信を処理する。
【００４３】
AngelFS処理プログラム145とBeastFS処理プログラム146は、ボリュームI/O処理プログラム149を利用して、ファイルシステム16aまたは16bへのデータ格納および読み出し等の処理を行う。
【００４４】
記憶装置114は、ルートファイルシステム161を格納するルートファイルシステムボリューム1141と、階層ファイルシステム管理情報1143を格納する階層ファイルシステムボリューム1142を備えている。
【００４５】
ルートファイルシステム161は、NAS装置10で動作する各種プログラムを格納する。階層ファイルシステム管理情報1143については後に説明する。
【００４６】
階層ファイルシステム1143は、記憶装置30aや30b等、記憶装置114以外の記憶装置に格納されていてもよい。
【００４７】
〈計算機〉
図3は、本発明の一実施例に係る計算機20aを説明するため構成図である。本実施例では、計算機20bは計算機20aと同じ構成とし、計算機20bの説明は省略する。
【００４８】
計算機20aは、ネットワークインタフェースコントローラ21と、プロセッサ22と、メモリ24とを有する。
【００４９】
ネットワークインタフェースコントローラ21は、LAN41を介してNAS装置10とのデータのやり取りを仲介する。
【００５０】
プロセッサ22は、メモリ24に格納されたプログラムやデータを用いて各種処理を実行する。
【００５１】
メモリ24は、プログラムやデータを記憶する。本実施例では、メモリ24は、アプリケーションプログラム241と、ファイル共有クライアントプログラム242と、オペレーティングシステム250とを記憶する。オペレーティングシステム250は、さらにファイルシステム処理プログラム243と、ネットワーク処理プログラム244を内包する。
【００５２】
アプリケーションプログラム241は、NAS装置10に格納されたファイルのデータを用い、所定の処理を行う。ファイル共有クライアントプログラム242とファイルシステム処理プログラム243は相互に連携して、アプリケーションプログラム241からの要求に応じて、NAS装置10に格納されたファイルの読み書き等の処理を行う。ファイル共有クライアントプログラム242は、ネットワーク処理プログラム244を利用して、NAS装置10とのデータ通信を処理する。
【００５３】
〈マウント〉
図4は、本発明の一実施例に係るNAS装置10でのファイルシステムのマウントの概念を説明する図である。
【００５４】
ファイルシステムのマウントとは、ボリューム上に構成されているファイルシステムを計算機(ここではNAS装置10)において利用可能とする操作を言う。
NAS装置10は一つのディレクトリ構造(ディレクトリ間の包含関係と、ディレクトリとファイルの包含関係)を有している。マウント操作により、NAS装置10のディレクトリ構造に含まれるいずれかのディレクトリに、ファイルシステムを接続できる。ファイルシステムをディレクトリに接続すると、ファイルシステムに格納されているファイルおよびディレクトリは、接続先のディレクトリの配下に現出し、アクセス可能となる。
【００５５】
NAS装置10は、ディレクトリ構造の基底のディレクトリとして、ルートディレクトリ70を定義する。ルートディレクトリ70は、オペレーティングシステム150のファイルシステム管理プログラム（図示せず）が提供する仮想的なディレクトリである。
【００５６】
ルートディレクトリ70には、ルートファイルシステムl61がマウントされる。ルートファイルシステム161は、記憶装置114上に構築されている。ルートファイルシステム161は、ルートファイルシステムディレクトリ構造700を格納する。
【００５７】
以降の説明において、ディレクトリおよびファイルの文言に続く英数字は、そのディレクトリまたはファイルの名前を示す。
【００５８】
ルートディレクトリ７０のルートファイルシステムディレクトリ構造700は、トップレベルにディレクトリ（U）71、ディレクトリ（A）72、ディレクトリ（B）73のディレクトリを含む。ルートファイルシステムディレクトリ構造700は、他に図示しないディレクトリやファイルを含む。ディレクトリ（U）71、ディレクトリ（A）72、ディレクトリ（B）73の各ディレクトリは、ルートディレクトリ70の子ディレクトリとしてアクセスできる。
【００５９】
ディレクトリ（A）72には、ボリューム31a上に構成されるファイルシステム16aがマウントされている。ディレクトリ（B）73には、ボリューム31b上に構成されるファイルシステム16bがマウントされている。
【００６０】
ディレクトリ（U）71には、階層ファイルシステム160がマウントされている。階層ファイルシステム160は、後に説明するように、ファイルシステム16aおよび16bを統合するように設定されている。これにより、ディレクトリ（U）71から、ディレクトリ（A）72およびディレクトリ（B）73にマウントされているファイルシステム16aおよび16bに格納されたファイルに対して、前述のルールに従ってアクセスできる。
【００６１】
〈ファイルの見え方〉
図5は、本発明の一実施例に係る階層ファイルシステム160、ファイルシステム16a、ファイルシステム16bの構成および各ファイルの関係を説明するための構成図である。
【００６２】
ファイルシステム16aは、ディレクトリ構造720に関する情報を格納する。ディレクトリ構造720は、ディレクトリMとファイルM1を含む。ディレクトリMは、ファイルシステム16aのトップレベルのディレクトリである。ファイルシステム16aは、ルートファイルシステム161のディレクトリ（A）72にマウントされており、ディレクトリMはディレクトリ（A）72の直下のディレクトリとしてアクセスできる。ファイルM1は、ディレクトリMの直下のファイルである。
【００６３】
ファイルシステム16bは、ディレクトリ構造730に関する情報を格納する。ディレクトリ構造730は、ディレクトリL、ファイルL1、ディレクトリM、ファイルM2、ディレクトリN、ファイルN1、ディレクトリO、ファイルO1を含む。
【００６４】
ディレクトリLとディレクトリMは、低速ファイルシステム16bにおいてトップレベルのディレクトリである。ファイルシステム16bは、ルートファイルシステム161のディレクトリ（B）73にマウントされているため、ディレクトリLとディレクトリMはディレクトリ（B）73の直下のディレクトリとしてアクセスできる。
【００６５】
ディレクトリNはディレクトリMの直下のディレクトリである。ディレクトリOはディレクトリNの直下のディレクトリである。
【００６６】
ファイルL1はディレクトリL1の直下のファイルである。ファイルM2はディレクトリMの直下のファイルである。ファイルN1はディレクトリNの直下のファイルである。ファイルO1はディレクトリOの直下のファイルである。
【００６７】
階層ファイルシステム160は、ディレクトリ構造710に関する情報を仮想的に格納する。ディレクトリ構造710は、ディレクトリL、ディレクトリM、ディレクトリN、ディレクトリO、ファイルL1、ファイルM1、ファイルM2、ファイルN1、ファイルO1を含む。
【００６８】
これまでの説明のように、これらのファイルおよびディレクトリの実体はファイルシステム16aおよびファイルシステム16bに存在し、そのパス名を維持したまま階層ファイルシステム160に現出する。
【００６９】
ディレクトリMは、実体がファイルシステム16aとファイルシステム16bに存在する。このため、階層ファイルシステム160のディレクトリ構造710において、ディレクトリMにはファイルM1、ファイルM2、ディレクトリNを含む。
【００７０】
〈マウント管理テーブル〉
図6は、本発明の一実施例に係るマウント管理テーブル142を説明するための構成図である。
【００７１】
マウント管理テーブル142は、ファイルシステム毎のマウント先のディレクトリを管理するための情報である。
【００７２】
マウント管理テーブルは、FS IDフィールド1421と、ディレクトリフィールド1422と、ボリュームフィールド1423とファイルシステムタイプフィールド1424とを有するレコードを格納する。これらのレコードにより、ファイルシステムとそのマウント先ディレクトリを対応付ける。
【００７３】
FS IDフィールド1421には、ファイルシステムを識別するための情報(FS ID)を格納する。ディレクトリフィールド1422には、ファイルシステムをマウントするディレクトリのパス名を格納する。ボリュームフィールド1423には、ボリュームを識別する情報を格納する。ファイルシステムタイプフィールド1424には、ファイルシステムの種類を格納する。
【００７４】
例えば、図6に示すマウント管理テーブル142の第一レコードは、ファイルシステム16aに関する情報を記録している。このレコードは、FS IDフィールド1421が”0001”であり、ディレクトリフィールド1422が”/ディレクトリ（A）72”であり、ボリュームフィールドが”ボリューム31a”であり、ファイルシステムタイプフィールド1424が”AngelFS”である。
【００７５】
第三レコードは、階層ファイルシステム160に関する情報を記録する。このレコードにおいて、ボリュームフィールド1423には”階層ファイルシステム管理情報1143”が格納される。これは、階層ファイルシステム160のディレクトリ構造が、後述の階層ファイルシステム管理情報1143に格納されていることを示す。
【００７６】
〈階層管理テーブル〉
図7は、本発明の一実施例に係る階層管理テーブル143を説明する図である。
階層管理テーブル143を構成するに際して、
(ａ)処理性能の高いファイルシステム順に、階層番号を昇順で割り当てる。
（ｂ）階層番号の昇順に、高位のファイルシステムと定義する。
（ｃ）（ａ）の場合、以下のいずれかの方法により行う。
ｃ−１：NASの管理者がNASに入力する。
ｃ−２：NAS装置が各ファイルシステムの性能測定することで自動的に割  
り当てる。
ｃ−３：ｂ−１、ｂ−２を組み合わせる。
【００７７】
階層管理テーブル143は、階層ファイルシステム160と、その階層ファイルシステム16a、16bを形成するファイルシステムとの関係を記録する情報である。
【００７８】
階層管理テーブル143は、FS IDフィールド1431と、階層管理FS IDフィールド1432と、階層番号フィールド1433とを有するレコードを格納する。
【００７９】
例えば、図7に示す階層管理テーブル143の第一レコードは、ファイルシステム16aが階層ファイルシステム160の第一の階層であることを示している。このレコードは、FS IDフィールド1431が高速ファイルシステム16aのFS ID”0001”であり、階層管理FS IDフィールド1432が階層ファイルシステム160のFS ID”1000”であり、階層番号フィールド1433が”1”である。
【００８０】
〈ファイル管理情報〉
図8は、本発明の一実施例に係るファイル管理情報を説明するための構成図である。
【００８１】
ファイル管理情報144には、NAS装置10が管理する各ファイルの情報(ファイル管理構造体)が含まれるが、図8では特にファイル管理構造体80、82、83、84のみを図示している。
【００８２】
ファイル管理構造体80は、ファイルシステム16aに格納されているファイルM1に対応するファイル管理構造体である。
【００８３】
ファイル管理構造体82および83は、それぞれ階層ファイルシステム160に仮想的に格納されているファイルM1およびM2に対応するファイル管理構造体である。
【００８４】
ファイル管理構造体84は、ファイルシステム16bに格納されているファイルM2に対応するファイル管理構造体である。
【００８５】
各ファイル管理構造体には、ファイル名フィールド801、821、831、841と、属性情報フィールド802、822、832、842と、処理定義情報フィールド803、823、833、843がある。ファイル名フィールドは、対応するファイルのファイル名を格納する。属性フィールドは、対応するファイルの属性情報を格納する。属性情報とは、ファイルのアクセス権、最終アクセス時刻、ファイルのサイズ等のメタデータである。ファイル管理構造体80、82、83、84の各属性情報フィールド802、822、832、842は、対応する各ファイルのサイズが1GBであることを示す情報を含んでいる。
【００８６】
処理定義情報フィールド803、823、833、843は、ファイルに対する各種処理を行うプロシージャを定める情報を格納する。ファイル管理構造体82の処理定義情報フィールド823は、階層ファイルシステム160におけるファイルM1の各種処理を、AngelFS処理プログラム145のread処理部1453、write処理部1454、remove処理部1455、truncate処理部1456やその他の処理部(図示しない)を利用して実行することを定めている。
【００８７】
ファイル管理構造体83の処理定義情報フィールド833は、階層ファイルシステム160におけるファイルM2の各種処理を、BeastFS処理プログラム146のread処理部1463、write処理部1464、remove処理部1465やその他の処理部(図示しない)、および階層ファイルシステム処理プログラム147のtruncate処理部1473を利用して実行することを定めている。
【００８８】
ファイル管理構造体80の処理定義情報フィールド803は、ファイルシステム16aにおけるファイルM1の各種処理のために、AngelFS処理プログラム145の各種処理部を利用することを定めている(図の複雑さを避けるため図示しない)。
【００８９】
ファイル管理構造体84の処理定義情報フィールド843は、ファイルシステム16bにおけるファイルM2の各種処理のために、BeastFS処理プログラム146の各種処理部を利用することを定めている(図の複雑さを避けるため図示しない)。
【００９０】
ファイル管理構造体82の属性情報822はさらに、階層ファイルシステム160のファイルM1の実体が、ファイルシステム16aのファイルM1であることを示すためのリンク情報824を格納する。同様に、ファイル管理構造体83の属性情報832は、階層ファイルシステム160のファイルM2の実体が、ファイルシステム16bのファイルM2であることを示すためのリンク情報834を格納する。
【００９１】
〈ファイルシステムプログラムの処理部〉
ファイルシステムプログラムの各種処理部について説明する。
【００９２】
ファイルシステム16aの種類はAngelFSであり、ファイルシステム16aおよびそのファイルとディレクトリに関する各種処理は、AngelFS処理プログラム145の各種処理部が実行する。また、ファイルシステム16bの種類はBeastFSであり、ファイルシステム16bおよびそのファイルとディレクトリに関する各種処理は、BeastFS処理プログラム146の各種処理部が実行する。
【００９３】
read処理部1453、1463は、アクセス要求元からのファイルに格納されているデータの読み出し要求に応じて、アクセス要求元にデータを返却する処理を行う。アクセス要求元とは、本実施例においてはNAS装置10で動作するファイル共有処理プログラム141や他のプログラム(図示しない)である。以下の説明におけるアクセス要求元についても同様である。
【００９４】
write処理部1454、1464は、アクセス要求元からのファイルに対するデータの書き込み要求に応じて、ファイルにデータを書き込む処理を行う。アクセス要求元は、データ書き込み要求とともに書き込むべきデータをwrite処理部に渡す。
【００９５】
remove処理部1455、1456は、アクセス要求元からのファイル削除要求に応じて、ファイルを削除する処理を行う。
【００９６】
truncate処理部1456、1466、1473は、アクセス要求元からのファイル切り詰め要求に応じて、ファイルのサイズを変更する処理を行う。アクセス要求元は、ファイル切り詰め要求とともに所望のサイズを指定する。指定されたサイズがファイルのサイズよりも小さい場合は、ファイルの先頭から指定されたサイズよりも大きい部分のデータが破棄される。指定されたサイズがファイルのサイズよりも大きい場合は、増分のデータを0としてファイルが拡張される。このとき、増分データのためのストレージ領域を割り当てずに実装することもできる。
【００９７】
ただし、後述するように、階層ファイルシステム管理プログラム147のtruncate処理部1473は、さらに低速ファイルシステム16a上のファイルに対する特別の処理を行う。
【００９８】
lookup処理部1451、1461、1471は、アクセス要求元からのディレクトリ内容一覧取得要求に応じて、指定されたディレクトリに含まれるファイルおよびディレクトリの一覧を返却する処理を行う。
【００９９】
create処理部1452、1462、1472は、アクセス要求元からのファイル作成要求に応じて、指定されたファイルを作成する処理を行う。階層ファイルシステム160のcreate処理部1472の場合は、階層を成すいずれかのファイルシステム(ファイルシステム16aまたは16b)にファイルを作成する。ファイルを作成するファイルシステムは、事前にNAS装置10の利用者(管理者)により設定されたルールに従う。
【０１００】
〈階層ファイルシステム管理情報〉
図9は、本発明の一実施例に係る階層ファイルシステム管理情報1143を説明する図である。
【０１０１】
階層ファイルシステム管理情報1143は、階層ファイルシステム160に仮想的に含まれる全てのファイルに関する情報を記録する。図9は、階層ファイルシステム160に含まれるファイルおよびディレクトリの内、ディレクトリM、ファイルM1、ファイルM2、ディレクトリNに関するもののみを抜粋して示す。
【０１０２】
階層ファイルシステム管理情報1143は、第一管理領域85と、第二管理領域86からなる。
【０１０３】
第一管理領域85には、各ファイルおよびディレクトリに対応するデータ構造体を格納する。データ構造体851は、ディレクトリMに対応する。データ構造体852はファイルM1に対応する。データ構造体853はファイルM2に対応する。データ構造体854はディレクトリNに対応する。
【０１０４】
階層ファイルシステム160、ファイルシステム16a、ファイルシステム16bでは、全てのファイルおよびディレクトリに識別番号を割り当てる。第一管理領域85において、各データ構造体のサイズは同一とする。所望のファイルまたはディレクトリに対応するデータ構造体を取得するためには、ファイルおよびディレクトリに割り当てられた識別番号よりその格納アドレスを特定する。例えば、階層ファイルシステム160において、ディレクトリMには識別番号100が割り当てられており、その第一管理領域85におけるデータ構造体は、先頭から100番目の位置にあるデータ構造体851であることが特定できる。
【０１０５】
各データ構造体は、少なくとも属性情報フィールドとブロックアドレスフィールドを格納する。属性情報フィールドは、対応するファイルまたはディレクトリのメタデータを格納する。ブロックアドレスフィールドは、対応するファイルまたはディレクトリの付加情報を格納した第二管理領域86上のブロックアドレスを格納する。
【０１０６】
階層ファイルシステム160におけるディレクトリMについて、対応するデータ構造体851のブロックアドレスフィールド8512には、第二管理領域86のブロックアドレス1000が記録されている。第二管理領域86のブロックアドレス1000には、ディレクトリMの付加情報861が記録されている。
【０１０７】
ディレクトリMの付加情報861は、階層ファイルシステム160におけるディレクトリMに含まれるファイルおよびディレクトリの情報(ディレクトリエントリ)を格納する。付加情報861は三つのディレクトリエントリ862、863、864を含む。前述のように、階層ファイルシステム160において、ディレクトリMはファイルM1、ファイルM2、ディレクトリNを含んでおり、ディレクトリエントリ862は、ファイルM1、ディレクトリエントリ863はファイルM2、ディレクトリ864はディレクトリNにそれぞれ対応する。
【０１０８】
各ディレクトリエントリは、識別番号フィールドと名前フィールドを有する。識別番号フィールドは、対応するファイルまたはディレクトリの識別番号を格納する。名前フィールドは、対応するファイルまたはディレクトリの名前を格納する。
【０１０９】
例えば、ディレクトリエントリ862の名前フィールド8622にはファイルM1の名前が記録されており、識別番号フィールドには、階層ファイルシステム160における識別番号”200”が記録されている。
【０１１０】
第一管理領域85において、識別番号200に対応するデータ構造体852は、ファイルM1の情報を格納している。ファイルM1の付加情報865は、第二管理領域86のブロックアドレス1100に格納されている。第二管理領域86のブロックアドレス1100には、付加情報865を格納している。
【０１１１】
付加情報865は、ファイルM1の実体ファイルが格納されているファイルシステムのFS IDを格納するFS IDフィールド8651と、ファイルM1の実体ファイルの識別番号フィールド8652を有する。FS IDフィールド8651は、ファイルM1の実体が格納されているファイルシステム16aのFS IDである”0001”を格納する。識別番号フィールド8652は、ファイルM1のファイルシステム16aにおける識別番号である”10200”を格納する。
【０１１２】
同様に、ファイルM2に対応する第一管理領域85におけるデータ構造体は、データ構造体853であり、第二管理領域86における付加情報は付加情報866である。これらは、ファイルM2の実体がファイルシステム16bにあり、その識別番号が20210であることを情報として格納する。
【０１１３】
また、ディレクトリNの第一管理領域85におけるデータ構造体は、データ構造体854であり、第二管理領域86における付加情報は、付加情報866である。これらは、ディレクトリNが、ファイルN1を含み、ファイルN1の階層ファイルシステムにおける識別番号が300であることを情報として格納する。
【０１１４】
階層ファイルシステム160の第一管理領域85の先頭の領域には、図示しない階層ファイルシステム160の管理データが含まれており、ディレクトリMの識別情報は、この管理データを参照することにより特定できる。
【０１１５】
階層ファイルシステム管理情報1143は、階層ファイルシステム160を構成するファイルシステム16aおよび16bを走査することにより適宜構築される。また、階層ファイルシステム160に対するファイルおよびディレクトリの作成、削除、移動等の各種操作により適宜変更される。
【０１１６】
〈ファイル一覧取得処理〉
図10は、本発明の一実施例に係るNAS装置10のファイル一覧取得処理90を説明するフローチャートである。
【０１１７】
ファイル一覧取得処理90は、計算機20aまたは20bの要求に応じて、ファイル共有17が公開しているファイルシステムのディレクトリに関し、そのディレクトリに含まれるファイルおよびディレクトリの一覧を返却する処理である。計算機20aおよび20bは、所望のディレクトリについて、配下のディレクトリおよびファイルの一覧を取得できる。
【０１１８】
以降、計算機20aが階層ファイルシステム160のディレクトリMに対してその配下のファイルおよびディレクトリの一覧を要求する場合を例として、ファイル一覧取得処理の流れを図10を用いて説明する。
【０１１９】
処理ステップ9000から9020までの処理は、ファイル共有処理プログラム141が実行する処理である。処理ステップ9025から9055までの処理は、階層ファイルシステム処理プログラム147のlookup処理部1471が実行する処理である。
【０１２０】
ステップ9005において、ファイル共有処理プログラム141は、アクセス要求元である計算機20aよりディレクトリMのパス名またはパス名を特定できる識別情報を受領する。
【０１２１】
ステップ9010において、ファイル共有処理プログラム141は、要求されたディレクトリMが階層ファイルシステム160に存在すると判断し、階層ファイルシステム処理プログラム147に対して、ディレクトリMに含まれるファイルとディレクトリの一覧を要求する。
【０１２２】
階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141からの要求を受け、ステップ9025からの処理を開始する。
【０１２３】
ステップ9030において、階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141より、ディレクトリMのパス名またはパス名を特定できる識別情報を受領する。
【０１２４】
ステップ9035において、階層ファイルシステム処理プログラム147は、階層ファイルシステム管理情報1143を参照し、ディレクトリMにはファイルM1とファイルM2とディレクトリNが含まれることを特定する。
【０１２５】
ステップ9040において、階層ファイルシステム処理プログラム147は、階層ファイルシステム管理情報1143を参照して、ファイルM1の実体がファイルシステム16aの識別番号10200のファイルであり、ファイルM2の実体がファイルシステム16bの識別番号20210のファイルであることを特定する。
【０１２６】
ステップ9045において、階層ファイルシステム処理プログラム147は、ステップ9035およびステップ9040の処理結果に基づき、ファイル管理情報144のファイル管理構造体82および83を生成し、図8に説明した内容で値を設定する。なお、ファイル管理構造体80および84は、それぞれAngelFS処理プログラム145およびBeastFS処理プログラム146が、ファイルシステム16aおよびファイルシステム16bに格納されている情報に従って生成する。
【０１２７】
ステップ9050において、階層ファイルシステム処理プログラム147は、ファイルM1、ファイルM2、ディレクトリNの一覧を作成し、ファイル共有処理プログラム141に返却し、処理を終了する(ステップ9055)。
【０１２８】
ファイル共有処理プログラム141は、ステップ9015において、ファイル共有処理プログラム141より得たファイルおよびディレクトリの一覧を、アクセス要求元の計算機20aに返却し、処理を終了する(ステップ9020)。
【０１２９】
〈ファイルリード処理〉
図11は、本発明の一実施例に係るNAS装置10のファイルリード処理91を説明するためのフローチャートである。
【０１３０】
ファイルリード処理91は、計算機20aまたは20bの要求に応じて、ファイル共有17が公開しているファイルシステムのファイルに関し、ファイルに格納されているデータを返却する処理である。計算機20aおよび20bは、所望のファイルについて、そのデータを要求できる。
【０１３１】
以降、計算機20aが、階層ファイルシステム160のファイルM2のデータを要求する場合を例として、ファイルリード処理91の流れを説明する。計算機20aは、前述のファイル一覧取得処理により、ファイルM2の存在を確認する。
【０１３２】
処理ステップ9100から9120まではファイル共有処理プログラム141が実行する。処理ステップ9125から9150までは階層ファイルシステム処理プログラム147が実行する。
【０１３３】
ステップ9100において、ファイル共有処理プログラム141は計算機20aからの要求を受けて処理を開始する。
【０１３４】
ステップ9105において、ファイル共有処理プログラムは、計算機20aよりファイルMのリード要求を受領する。
【０１３５】
ステップ9110において、ファイル共有処理プログラム141は、ファイルM2が階層ファイルシステム160のファイルであることを認識し、階層ファイルシステム処理プログラム147に対してファイルM2の読み出しを要求する。
【０１３６】
階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141からの要求を受け、ステップ9125からの処理を開始する。
【０１３７】
ステップ9130において、階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141よりファイルM2のリード要求を受領する。
【０１３８】
ステップ9135において、階層ファイルシステム処理プログラム147は、ファイル管理情報144に含まれているファイルM2のファイル管理構造体83を処理対象として選択する。
【０１３９】
ステップ9140において、階層ファイルシステム処理プログラム147は、ファイルM2のファイル管理構造体83の処理定義情報833を参照し、この処理定義情報833に記録されているBeastFS処理プログラム146のread処理部1463を呼び出す。
【０１４０】
BeastFS処理プログラム146のread処理部1463は、ファイルシステム16bのファイルM2よりデータを読み出し返却する。
【０１４１】
ステップ9145において、階層ファイルシステム処理プログラム147は、前記のデータを返却し処理を終了する (ステップ9150)。
【０１４２】
ファイル共有処理プログラム141は、ステップ9115において、階層ファイルシステム処理プログラム147より返却されたデータを計算機20aに返却し、処理を終了する(ステップ9120)。
【０１４３】
〈ファイルサイズ切り詰め処理〉
図12は、本発明の一実施例に係るファイルサイズ切り詰め処理92を説明するためのフローチャートである。
【０１４４】
ファイル切り詰め処理92は、計算機20aまたは20bの要求に応じて、ファイル共有17が公開しているファイルシステムのファイル（アクセス対象ファイル）に関し、ファイルのサイズを変更する処理である。
【０１４５】
以降、計算機20aが、階層ファイルシステム160のファイル（アクセス対象ファイル）M2を上書きする場合に、その処理の一部としてファイルのサイズを0へ変更する場合を例として、ファイルサイズ切り詰め処理92の流れを説明する。
【０１４６】
処理ステップ9200から9115まではファイル共有処理プログラム141が実行する。処理ステップ9220から9140までは階層ファイルシステム処理プログラム147が実行する。
【０１４７】
ファイル共有処理プログラム141は、計算機20aからのファイル（アクセス対象ファイル）M2のサイズを0にする要求を受け、ステップ9200からの処理を開始する。
【０１４８】
ステップ9205において、ファイル共有処理プログラム141は、計算機20aよりファイル（アクセス対象ファイル）M2のサイズを0にする要求を受領する。
【０１４９】
ステップ9210において、ファイル共有処理プログラム141は、階層ファイルシステム処理プログラム147に対して、ファイル（アクセス対象ファイル）M2のサイズを0とすることを要求する。
【０１５０】
階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141からの要求を受け、ステップ9220からの処理を開始する。
【０１５１】
ステップ9225において、階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141よりファイル切り詰め要求を受領する。
【０１５２】
ステップ9230において、階層ファイルシステム処理プログラム147は、ファイル管理情報144のファイルM2に対応するファイル管理構造体83を処理対象として選択する。
【０１５３】
ステップ9235において、階層ファイルシステム処理プログラム147は、ファイルM2のファイル管理構造体83の処理定義情報833を参照し、この処理定義情報833に記録されている階層ファイルシステム処理プログラム147のtruncate処理部1473を呼び出す。その後処理を終了する(ステップ9240)。
【０１５４】
ファイル共有処理プログラム141は、階層ファイルシステム処理プログラム147の終了を受け、処理を終了する(ステップ9215)。
【０１５５】
階層ファイルシステム処理プログラム147のtruncate処理部1473の処理の流れについては、図13を参照して説明する。
【０１５６】
〈truncate処理部〉
図13は、本発明の一実施例に係る階層ファイルシステム処理プログラム147のtruncate処理部1473におけるファイルサイズ切り詰め処理93を説明するためのフローチャートである。前述のように、truncate処理部1473が呼び出されると、ステップ9300より処理を開始する。
【０１５７】
ここでは、前述のファイル（アクセス対象ファイル）M2に対する切り詰め処理が要求された場合の例において、ステップ9235からtruncate処理部1473が呼び出されたものとして説明する。
【０１５８】
ステップ9305において、truncate処理部1473は、変更するファイル（アクセス対象ファイル）のサイズとして0が指定されているかどうかを判定する。本例では、0が指定されている。この場合、ステップ9310へ進む。
【０１５９】
ステップ9310において、truncate処理部1473は、階層ファイルシステム160のうち、ファイルシステム16bよりも高位のファイルシステム（アクセス頻度が高く、高速なファイルシステム）であるファイルシステム16aに、パス名を変えずに、新たにファイルM2を作成する。新たに作成されたファイルM2のサイズは0とする。新たなファイルM2を作成するために、AngelFS処理プログラム145のcreate処理部1452を呼び出す。AngelFS処理プログラム1452は、高速ファイルシステム16aに、新たなファイルM2を作成し、対応するファイル管理構造体をファイル管理情報144に作成する。
【０１６０】
このとき、高速ファイルシステム16aに新たな作成されたファイルM2に、階層ファイルシステム160におけるファイル（アクセス対象ファイル）M2のファイル管理構造体83に記録されている属性情報を設定する。
【０１６１】
ステップ9315において、truncate処理部1473は、階層ファイルシステム160におけるファイル（アクセス対象ファイル）M2のファイル管理構造体83のリンク情報834を、ステップ9310において作成されたファイル管理構造体を指すように変更する。
【０１６２】
ステップ9320において、truncate処理部1473は、階層ファイルシステム160におけるファイル（アクセス対象ファイル）M2のファイル管理構造体83の処理定義情報833を、AngelFS処理プログラム145の各種処理部を指すように変更する。
【０１６３】
ステップ9325において、truncate処理部1473は、低速ファイルシステム16bに格納されているファイル（アクセス対象ファイルの実体となる実ファイル）M2を削除する。ファイル（実ファイル）M2を削除するために、BeastFS処理プログラム146のremove処理部1465を呼び出す。BeastFS処理プログラム146のremove処理部は、ファイルシステム16bより、ファイル（実ファイル）M2を削除し、対応するファイル管理構造体84をファイル管理情報144より消去する。
【０１６４】
以上の処理の後、truncate処理部1473は処理を終了する(ステップ9330)。
もし、サイズを0以外のとするファイルM2の切り詰めを要求された場合は、ステップ9305において、ステップ9335の処理へ進む。
【０１６５】
ステップ9335では、truncate処理部1473は、ファイルM2の実体を指定されたサイズとし、処理を終了する。ファイルM2の実体は、実ファイルとしてファイルシステム16bにある。このため、trucnate処理部1473は、BeastFS処理プログラム146のtrucnate処理部1466を呼び出し、ファイルのサイズを変更する。
【０１６６】
〈切り詰め後のファイル管理情報〉
図14は、上記で説明したファイルサイズ切り詰め処理完了後のファイル管理情報144の様子を説明するための構成図である。
【０１６７】
ファイル管理情報144には、高速ファイルシステム16aの新たなファイルM2に対応するファイル管理構造体81が作成されている。ファイル管理情報144の属性情報には、新たなファイルM2のサイズが0であることを示す情報が格納されている。
【０１６８】
階層ファイルシステム160上のファイルM2に対応するファイル管理構造体83は、そのリンク情報834が、ファイル管理構造体81を指すように変更されている。また、ファイル管理構造体83の処理定義情報833は、AngelFS処理プログラム145の各種処理を指すように変更されている。
【０１６９】
〈ファイルライト処理〉
図15は、本実施例におけるファイルライト処理94を説明するためのフローチャートである。
【０１７０】
ファイルライト処理94は、計算機20aまたは20bの要求に応じて、ファイル共有17が公開しているファイルシステムのファイルにデータを格納する処理である。
【０１７１】
以降、計算機20aが、階層ファイルシステム160のファイル（アクセス対象ファイル）M2に対する切り詰め処理を要求し、その処理が完了した後、ファイル（アクセス対象ファイル）M2に対するファイルライト処理を要求する場合を例として、ファイルライト処理94を説明する。
【０１７２】
処理ステップ9400から9415まではファイル共有処理プログラム141が実行する。処理ステップ9420から9440までは階層ファイルシステム処理プログラム147が実行する。
【０１７３】
ファイル共有処理プログラム141は、計算機20aよりファイル（アクセス対象ファイル）M2に対するファイルライト要求を受けると、ステップ9400からの処理を開始する。
【０１７４】
ステップ9405において、ファイル共有処理プログラム141は、計算機20aよりファイル（アクセス対象ファイル）M2に対するファイルライト要求を受領する。
【０１７５】
ステップ9410において、ファイル共有処理プログラム141は、ファイル（アクセス対象ファイル）M2が階層ファイルシステム160のファイルであることを認識し、階層ファイルシステム処理プログラム147に対してファイル（アクセス対象ファイル）M2へのデータの書き込みを要求する。
【０１７６】
階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141からの要求を受け、処理を開始する(ステップ9420)。
【０１７７】
ステップ9425において、階層ファイルシステム処理プログラム147は、ファイル共有処理プログラム141よりファイル（アクセス対象ファイル）M2のライト要求を受領する。
【０１７８】
ステップ9430において、階層ファイルシステム処理プログラム147は、ファイル管理情報144に含まれている、新たなファイルM2のファイル管理構造体83を処理対象として選択する。
【０１７９】
ステップ9435において、階層ファイルシステム処理プログラム147は、新たなファイルM2のファイル管理構造体83の処理定義情報833を参照し、この処理定義情報833に記録されているAngelFS処理プログラム145のwrite処理部1454を呼び出す。
【０１８０】
AngelFS処理プログラム145のwrite処理部1454は、ファイルシステム16aの新たなファイルM2にデータを書き込む。
【０１８１】
ステップ9440において、階層ファイルシステム処理プログラムは処理を終了する。
【０１８２】
ファイル共有処理プログラム141は、ステップ9415において処理を終了する。
【０１８３】
〈まとめ〉
以上、本発明を実施例に基づいて説明したが、本発明は上述した実施の形態に限られず、他の様々な態様に適用可能である。
【０１８４】
本実施例においては、プロセッサ12は、アクセス要求元から、ファイルサイズ変更要求（ファイルサイズ切り詰め要求）を受けたときには、階層ファイルシステム160に属するファイル群の中から、ファイルサイズ変更要求で指定されたアクセス対象ファイルM2を抽出し、かつ、階層ファイルシステム160に属する複数のファイルシステムの中から、アクセス対象ファイルM2の実体となる実ファイルM2が存在するファイルシステム16bよりも処理性能の高いファイルシステムとして、アクセス頻度の高いファイルシステム16aを抽出し、抽出したファイルシステム16aに、実ファイルM2に関連する新たなファイルM2を作成し、作成した新たなファイルM2とアクセス対象ファイルM2との関連付けを実行し、作成した新たなファイルM2とアクセス対象ファイルM2との関連付けを実行したことを条件に、実ファイルM2を削除し、その後、アクセス要求元から、アクセス対象ファイルM2に対するデータ書き込み要求を受けたことを条件に、新たなファイルM2に対するデータの書き込み処理を実行することとしている。
【０１８５】
従って、本実施例によれば、ファイルM2の実体が、ファイルシステム16bに存在するときに、ファイルM２全体を上書きする場合でも、データの書き込み速度（ファイルに対する上書き処理速度）が低下するのを防止することができる。
【０１８６】
本実施例では、ファイルシステム16aと16bを異なる種類のファイルシステムAngelFS、BeastFSとしたが、本発明はこれに限られず、ファイルシステム16aと16bが同じ種類のファイルシステムであってもよい。
【０１８７】
ファイルを上書きする場合、ファイルのサイズは、0でなくてもよい。すなわち、本実施例では、ファイル切り詰め処理において、ファイルのサイズを0とする要求に応じてファイルを仮想的に移動したが、本発明はこれに限られず、例えば、サイズが規定のサイズ以下の場合でも、規定以下のサイズのファイルを仮想的に移動することもできる。
【０１８８】
この場合、階層ファイルシステム処理プログラム147のtruncate処理部1473は、ステップ9035において、指定された新たなサイズが、既定のサイズよりも下回っている場合には、ステップ9310において、移動先となるファイルを作成した上で、移動元となるファイルの先頭から、規定のサイズ以下の分のデータを複製（コピー）し、以降の処理ステップを実行する。
【０１８９】
ファイルの実体を高位のファイルシステムから低位のファイルシステムに仮想的に移動することもできる。すなわち、上記実施例では、ファイル切り詰め処理において、ファイルの実体を、低位のファイルシステムから高位のファイルシステムへ仮想的に移動したが、本発明はこれに限られず、例えば、高位のファイルシステムから低位のファイルシステムへファイルの実体を仮想的に移動することもできる。
【０１９０】
ファイルシステムとしては、2個以上のファイルシステムを構成することができる。すなわち、上記実施例では、階層ファイルシステム160を構成するファイルシステムを2個としたが、本発明はこれに限られず、例えば3個以上のファイルシステムにより階層ファイルシステム160を構成し、階層ファイルシステム160に属するファイルシステム間でファイルを仮想的に移動させるようにすることもできる。
【０１９１】
階層ファイルシステム160に属する複数のファイルシステムを構成するに際しては、各ファイルシステムを一つの記憶装置に構築することもできる。すなわち、上記実施例では、階層ファイルシステム160に属する2個のファイルシステム16a、16bは、それぞれ異なる記憶装置30a、30bのボリューム31a、31bに構成されているが、本発明はこれに限られず、例えば、一台の記憶装置が2以上のファイルシステムを構成する2以上のボリュームをNAS装置10に提供する形態でもよい。
【０１９２】
また、上記実施例では、ファイル切り詰め要求が単体の要求である場合を示したが、本発明はこれに限られず、ファイル操作処理要求、例えば、ファイルオープン要求等の中に、引数（オプション）として、ファイル切り詰め要求が存在する場合でも、前述したファイル切り詰め要求に対する処理として、ファイルの実体を仮想的に移動するようにしてもよい。
【符号の説明】
【０１９３】
１  ストレージシステム、１０  ＮＡＳ装置、１１  ネットワークインタフェースコントローラ、１２  プロセッサ、１３  ホストバスアダプタ、１４  メモリ、160 階層ファイルシステム、161 ルートファイルシステム、16a ファイルシステム、16b ファイルシステム、17 ファイル共有、114 記憶装置、2０a  計算機、20b 計算機、241 アプリケーションプログラム、30a 記憶装置、30b 記憶装置、３１a ボリューム、31b ボリューム、41 LAN、42  SAN、700 ルートファイルシステムディレクトリ構造、710 階層ファイルシステムディレクトリ構造、720 ファイルシステム16aのディレクトリ構造、730 ファイルシステム16bのディレクトリ構造
【図１】
2010225024.tif 000003
【図２】
2010225024.tif 000004
【図３】
2010225024.tif 000005
【図４】
2010225024.tif 000006
【図５】
2010225024.tif 000007
【図６】
2010225024.tif 000008
【図７】
2010225024.tif 000009
【図８】
2010225024.tif 000010
【図９】
2010225024.tif 000011
【図１０】
2010225024.tif 000012
【図１１】
2010225024.tif 000013
【図１２】
2010225024.tif 000014
【図１３】
2010225024.tif 000015
【図１４】
2010225024.tif 000016
【図１５】
2010225024.tif 000017