(57)【特許請求の範囲】
【請求項１】
ネットワーク経由で接続されたオンラインストレージサービスからファイルを取得して利用者端末に前記ファイルを提供するファイルサーバ装置であって、
前記オンラインストレージサービスが格納するオリジナルファイルを分割することにより生成されたＮ（正整数）個の分割ファイルのうちＫ（Ｋ＜Ｎの正整数）個の分割ファイルを格納するローカルキャッシュと、
前記オンラインストレージサービス及び前記ローカルキャッシュからデータを取得するマウントモジュールと、を有し、
前記ローカルキャッシュは、さらに、前記オリジナルファイルのメタデータであって、前記オリジナルファイルを更新したか否かを示すファイル更新情報と、前記Ｎ個の分割ファイルの状態を示すビットマップ情報とを含むメタデータを格納し、
前記マウントモジュールは、Ｉ／Ｏ要求に対応するデータを提供するために必要な分割ブロックの全てが前記ローカルキャッシュに存在するか判断し、前記必要な分割ブロックが存在する場合には該当する分割ブロックから前記ファイルＩ／Ｏ要求に対応するデータを取得し、
前記マウントモジュールは、前記Ｉ／Ｏ要求が書き込み要求であって、前記ローカルキャッシュに格納された前記Ｋ個の分割ファイルの少なくとも１つが更新された場合、前記ファイル更新情報及び前記更新された分割ファイルに対応する前記ビットマップ情報の両方を、更新したことを示す情報に設定することを特徴とするファイルサーバ装置。
【請求項２】
請求項１において、
前記マウントモジュールは、前記必要な分割ブロックの全てが前記ローカルキャッシュに存在しない場合には、前記オンラインストレージサービスにアクセスし、不足分の分割ブロックを取得して、前記ローカルキャッシュに格納することを特徴とするファイルサーバ装置。
【請求項３】
請求項１において、
前記メタデータは、さらに、前記メタデータを更新したか否かを示すメタデータ更新情報と、ファイルサイズを示すファイルサイズ情報を含み、
前記マウントモジュールは、前記Ｉ／Ｏ要求がファイルサイズ変更要求である場合、当該ファイルサイズ変更要求が対象ファイルの拡張要求か否か判断し、当該判断結果に基づいて前記ビットマップ情報を拡張処理或いは縮小処理し、前記ファイルサイズ情報を更新すると共に、前記メタデータ更新情報を、更新したことを示す情報に設定することを特徴とするファイルサーバ装置。
【請求項４】
請求項１において、
前記マウントモジュールは、前記ローカルキャッシュに格納された前記分割ファイルが更新された場合、更新処理のタイミングを定めたポリシ情報に従って、前記オンラインサービス上の前記オリジナルファイルと前記メタデータを更新することを特徴とするファイルサーバ装置。
【請求項５】
請求項４において、
前記メタデータは、メタ情報更新フラグ、ファイル更新フラグ、及び削除フラグを含み、
前記マウントモジュールは、前記ポリシ情報に従って、前記メタデータを参照し、前記オンラインストレージサービスにおける前記オリジナルファイルの削除、前記オリジナルファイルの内容の更新、前記メタデータの更新をすることを特徴とするファイルサーバ装置。
【請求項６】
請求項１において、
前記マウントモジュールは、更新処理のタイミングを定めたポリシ情報に従って、前記メタデータを参照し、前記更新された分割ファイルのみ前記オンラインストレージサービスにアップロードして、前記オリジナルファイルを更新することを特徴とするファイルサーバ装置。
【請求項７】
オリジナルファイルを格納するオンラインストレージサービスと、ネットワークを介して前記オンラインストレージサービスに接続され、前記オンラインストレージサービスからファイルを取得して利用者端末に提供するファイルサーバ装置と、を含むストレージシステムを管理する方法であって、
前記ファイルサーバ装置は、前記オリジナルファイルを分割することにより生成されたＮ（正整数）個の分割ファイルのうちＫ（Ｋ＜Ｎの正整数）個の分割ファイルを格納するローカルキャッシュと、前記オンラインストレージサービス及び前記ローカルキャッシュからデータを取得するマウントモジュールと、を有し、
前記ローカルキャッシュは、さらに、前記オリジナルファイルのメタデータであって、前記オリジナルファイルを更新したか否かを示すファイル更新情報と、前記Ｎ個の分割ファイルの状態を示すビットマップ情報とを含むメタデータを格納し、
前記方法は、
前記マウントモジュールが、Ｉ／Ｏ要求に対応するデータを提供するために必要な分割ブロックの全てが前記ローカルキャッシュに存在するか判断し、前記必要な分割ブロックが存在する場合には該当する分割ブロックから前記ファイルＩ／Ｏ要求に対応するデータを取得するステップと、
前記マウントモジュールが、前記必要な分割ブロックの全てが前記ローカルキャッシュに存在しない場合には、前記オンラインストレージサービスにアクセスし、不足分の分割ブロックを取得して、前記ローカルキャッシュに格納するステップと、
前記マウントモジュールが、前記Ｉ／Ｏ要求が書き込み要求であって、前記ローカルキャッシュに格納された前記Ｋ個の分割ファイルの少なくとも１つが更新された場合、前記ファイル更新情報及び前記更新された分割ファイルに対応する前記ビットマップ情報の両方を、更新したことを示す情報に設定するステップと、
を含むことを特徴とする方法。
【請求項８】
請求項７において、
前記メタデータは、さらに、前記メタデータを更新したか否かを示すメタデータ更新情報と、ファイルサイズを示すファイルサイズ情報を含み、
前記方法は、さらに、前記マウントモジュールが、前記Ｉ／Ｏ要求がファイルサイズ変更要求である場合、当該ファイルサイズ変更要求が対象ファイルの拡張要求か否か判断し、当該判断結果に基づいて前記ビットマップ情報を拡張処理或いは縮小処理し、前記ファイルサイズ情報を更新すると共に、前記メタデータ更新情報を、更新したことを示す情報に設定するステップを含むことを特徴とする方法。
【請求項９】
請求項７において、
前記方法は、さらに、前記マウントモジュールが、前記ローカルキャッシュに格納された前記分割ファイルが更新された場合、更新処理のタイミングを定めたポリシ情報に従って、前記オンラインサービス上の前記オリジナルファイルと前記メタデータを更新するステップを含むことを特徴とする方法。
【請求項１０】
請求項９において、
前記メタデータは、メタ情報更新フラグ、ファイル更新フラグ、及び削除フラグを含み、
前記方法は、さらに、前記マウントモジュールが、前記ポリシ情報に従って、前記メタデータを参照し、前記オンラインストレージサービスにおける前記オリジナルファイルの削除、前記オリジナルファイルの内容の更新、前記メタデータの更新をするステップを含むことを特徴とする方法。
【請求項１１】
請求項７において、
さらに、前記マウントモジュールが、更新処理のタイミングを定めたポリシ情報に従って、前記メタデータを参照し、前記更新された分割ファイルのみ前記オンラインストレージサービスにアップロードして、前記オリジナルファイルを更新するステップを含むことを特徴とする方法。
【請求項１２】
コンピュータを請求項１に記載のファイルサーバ装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルサーバ装置、及びストレージシステムの管理方法、並びにプログラムに関し、例えば、外部ストレージサービスに格納するファイルを取得して利用者端末に提供するための技術に関するものである。
【背景技術】
【０００２】
近年のＩＴ潮流の大きな流れとして、クラウドコンピューティングと呼ばれる新しいＩＴ活用形態に注目が集まっている。その一つとして、インターネット経由でストレージサービスを提供するSTaaS（Storage as a service）の普及が進んでいる。STaaSでは、論理的なストレージ容量を低価格で提供するサービスであり、一般的に、ストレージサービスを利用するための外部インタフェースをRESTやSOAPといったWebインタフェース形式で提供している。STaaSについては、セキュリティやコンプライアンス等の問題は残っているものの、コストメリットが優先し、今後、個人や企業における利用が拡大していくと考えられる。【０００３】
通常、こうしたオンラインストレージサービスでは、非常に大きなスケーラビリティを特長としているが、格納可能なファイルサイズについては上限が存在する。例えば、Amazon（登録商標） S3の場合、バケット内に格納できるファイルオブジェクト数に制限はないが、ファイルオブジェクトの最大サイズは５ＧＢであり、５ＧＢ以上のサイズの単一ファイルをそのまま格納することはできない（制約条件１）。また、ファイルの読み込みについては、部分的な読込み処理を行うことは可能だが、書込みについては、部分的書込みを行うことはできず、バケット内に格納されたファイルの置き換えしかできない（制約条件２）。例えば、５ＧＢのファイルに対して、１ＭＢ分のブロックの書き換えを行う場合、５ＧＢのファイルをすべてダウンロードして、１ＭＢ分のブロックを書き換え、最後に５ＧＢのファイル全体をアップロードする必要があり、通信コストが大きくなる問題がある。したがって、Random READ・WRITE処理に対して、不必要な部分のデータ通信が発生してしまい、通信コストがかかってしまう問題がある。また、ＷＡＮ経由でデータアクセスを行うため、ローカルディスク等へのデータ通信速度に比べて、通信速度が圧倒的に遅く、同期的な通信を行った場合、ファイルのリストアップやREAD/WRITEのオーバヘッドが大きくなる問題がある。【０００４】
ところで、オンラインストレージサービスをファイルサーバのバックアップ用外部ストレージ、もしくは容量拡張用の外部ストレージとして利用する場合、クライアントからは透過的に単一のファイルサーバに見え、かつファイルサーバよりオンラインストレージサービスに接続して、データをコピー・移動する仕組みが必要になる。例えば、特許文献１には、クライアントから透過的に単一サーバに見せ、データコピー・移動を隠蔽する既存技術が開示されている。また、特許文献２には、データコピー・移動に関連する既存技術が開示されている。【０００５】
特許文献１では、１次ストレージを有する第１サーバと、２次ストレージを有する第２サーバ、およびクライアントの間に中間装置を設けている。そして、クライアントから１次ストレージへのファイルアクセスがあった場合、そのアクセス対象のファイルがスタブファイル（アクセス先にリンクさせるためのファイル）のとき、対応する２次ストレージ上のファイルにアクセス要求を変更することで、スタブファイルをあたかも実体であるかのように見せ、１次ストレージから２次ストレージへのデータ移動をクライアントに対し隠蔽するようにしている。【０００６】
また、特許文献２では、高速ディスクボリュームの更新を監視して更新ビットマップを作成し、各更新ビットマップのＯＲを演算して所定時間更新されていないセグメントを検出し、検出されたセグメント情報を元に、高速ディスクボリュームから低速ディスクボリュームにデータ移動（ストレージ階層間移動）を行うようにしている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１６４２１１号公報
【特許文献２】特開２００７−２２６５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１及び特許文献２では、前述のオンラインストレージサービスの制約条件（１及び２）を回避しつつ、オンラインストレージサービスをファイルサーバのバックアップ用外部ストレージ、または容量拡張用外部ストレージとして利用することはできない。いずれも、オンラインストレージ上のファイルサイズに関する制約を回避する方策を提案しておらず、ＷＡＮ経由の通信コストを最適化する方策についても提案していない。【０００９】
本発明はこのような状況に鑑みてなされたものであり、オンラインストレージサービス利用時における通信コストを最適化すると共に、アクセスの高速化を実現するための技術を提供するものである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明では、オンラインストレージサービス内にファイルを格納する際に、ファイルデータを分割したブロックファイル群とメタ情報を格納し、利用者端末からのファイル読込み要求に対して、読込みに必要なブロックファイルをオンラインストレージサービスよりダウンロードしてキャッシュする。そして、利用者端末からの書込み要求に対しては、書込み対象となるブロックファイルをオンラインストレージサービスよりダウンロードしてキャッシュし、当該キャッシュされた書込みデータに対して上書きする。また、キャッシュされ変更されたブロックファイルとメタ情報を、非同期にオンラインストレージサービス上に反映する。【００１１】
また、オンラインストレージマウントモジュールは、メタ情報に記録されたメタ情報更新フラグ、ファイル更新フラグ、及び削除フラグを参照し、オンラインストレージサービスにおけるフ元ファイルの削除、ファイル内容、及びメタ情報を、ファイルサーバの処理とは同期させず（非同期）に、ポリシ情報に従って順次実行する。【００１２】
さらに、オンラインストレージマウントモジュールは、利用者端末からの書込み要求を処理する場合、メタ情報内に記録されたビットマップ情報に更新したブロックファイルの識別情報を反映し、当該ビットマップ情報を利用して、オンラインストレージサービスにアップロードが必要なブロックファイルのみ、ポリシ情報に従って非同期に更新する。【００１３】
さらなる本発明の特徴は、以下本発明を実施するための形態および添付図面によって明らかになるものである。
【発明の効果】
【００１４】
本発明によれば、オンラインストレージサービス利用時における通信コストを最適化すると共に、アクセスの高速化を実現することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態によるストレージシステムの概略構成を示す図である。
【図２】ファイル分割管理・分割キャッシュの概念を説明するための図である。
【図３】メタ情報が格納するファイル属性テーブルの例を示す図である。
【図４】管理用デーモンが提供する設定用ＧＵＩを示す図である。
【図５】設定用ＧＵＩにおける、新規・編集ボタン押下時のＧＵＩを示す図である。
【図６】ファイルオープン時のオンラインストレージマウントモジュールの処理を説明するためのフローチャートである。
【図７】READ時のオンラインストレージマウントモジュールの処理を説明するためのフローチャートである。
【図８】WRITE時のオンラインストレージマウントモジュールの処理を説明するためのフローチャートである。
【図９】TRUNCATE時のオンラインストレージマウントモジュールの処理を説明するためのフローチャートである。
【図１０】非同期更新時の全体処理を説明するためのフローチャートである。
【図１１】非同期更新時のファイル更新処理の詳細を説明するためのフローチャートである。
【発明を実施するための最良の形態】
【００１６】
本発明は、例えば、外部ストレージサービスに格納するファイルサイズの上限制約を解消し、また、通信コストを低減する方式に関するものである。本発明では、オンラインストレージサービス上の個々のファイルを分割して管理し、ファイルのREAD/WRITE操作に応じて必要部分のみダウンロード・アップロードして、オンラインストレージサービスのファイルサイズ制約を解消し、通信コストを最適化する仕組みを提案する。更に、分割されたファイルブロックをローカルでキャッシュし、ファイルアクセスを高速化するとともに、オンラインストレージサービス上のファイルのメタ情報もファイルサーバ上に格納し、ファイルリストアップやファイル名・ディレクトリ構成等のメタ情報変更、及びREAD/WRITEの高速化を実現する仕組みを提供する。【００１７】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。【００１８】
＜ストレージシステムの構成＞
図１は、本発明の実施形態によるストレージシステムの概略構成を示す図である。当該ストレージシステムは、企業・組織１００内に設置された、ファイルサーバ１０６、少なくとも１つの利用者端末１０１、及びゲートウェイサーバ１０３と、外部のオンラインストレージサービス１０５と、を有し、利用者端末１０１とファイルサーバ１０６とゲートウェイサーバ１０３は、例えばイントラネット１０２で接続され、ゲートウェイサーバ１０３とオンラインストレージサービス１０５はＷＡＮ１０４で接続されている。【００１９】
ファイルサーバ１０６に対しては、同じく接続された利用者端末１０１よりファイルアクセスが発生する。また、イントラネット１０２は、ゲートウェイサーバ１０３を経由して、ＷＡＮ１０４に接続し、その先にオンラインストレージサービス１０５が稼動している。ここで、オンラインストレージサービス１０５とは、ＷＡＮ上にWebインタフェースによるストレージサービスを公開・提供しているサイトであり、実際のサービス例として、Amazon（登録商標） S3やWindows（登録商標） Azure Storageなどが挙げられる。【００２０】
ファイルサーバ１０６は、例えばＮＡＳ（Network Attached Storage）のようなファイルサーバであり、NFS/CIFSサービスモジュール１０７と、管理用デーモン１０８と、ファイルシステム１０９と、オンラインストレージマウントモジュール１１０と、ローカルキャッシュ１１２を含む二次記憶装置１１１と、を有している。なお、NFS/CIFSサービスモジュール１０７、管理用デーモン１０８、ファイルシステム１０９、及びオンラインストレージマウントモジュール１１０は、モジュールとして実現しても良いし、プログラムで構成され、ファイルサーバ１０６内にあるプロセッサが各プログラムに従って各機能を実現するようにしても良い。また、ローカルキャッシュ１１２は、二次記憶装置１１１内にキャッシュ用の領域として設けられているが、この形態に限られるものではなく、二次記憶装置１１１とは別にキャッシュ用メモリが用意されていても良い。【００２１】
NFS/CIFSサービスモジュール１０７は、利用者端末１０１よりNFSやCIFSプロトコルでアクセスを受け、ファイルサーバとして動作するための基本モジュールであり、Sambaがその一例である。また、ユーザの認証が必要な場合は、NFS/CIFSサービスモジュール１０７が認証を処理する。【００２２】
オンラインストレージマウントモジュール１１０は、オンラインストレージサービス上の論理ドライブをファイルサーバ１０６内にマウントする機能を提供するモジュールである。ここで、論理ドライブとはオンラインストレージサービス上の論理的な記憶ボリュームに対応するもので、例えばAmazon（登録商標） S3では「バケット」に相当する。以下、Amazon（登録商標） S3を仮定して、ファイルサーバのＯＳはLinux、更に、オンラインストレージマウントモジュール１１０はバケットをマウントするカーネルモジュール（例えば、FUSEベースのファイルシステムモジュール）として説明を進めるが、これにより発明が限定されるものではない。【００２３】
管理用デーモン１０８は、オンラインストレージマウントモジュール１１０が、どのバケットを誰のアカウントで、ファイルサーバ内のどこにマウントするかを設定するモジュールであり、設定用のＧＵＩ（例えば、図４及び５参照）を提供する。管理者は、図示しない管理者用端末に表示画面に表示された設定用ＧＵＩを利用してオンラインストレージマウントモジュール１１０を管理することができる。【００２４】
ファイルサーバ１０６内の二次記憶装置１１１にはローカルキャッシュ１１２が保存される。このローカルキャッシュ１１２は、オンラインストレージマウントモジュール１１０が、生成・管理するファイルであり、オンラインストレージサービス１０５上のファイルへのアクセスを高速化するためのキャッシュである。【００２５】
ファイルアクセスの動作概要を説明すると次のようになる。例えば、利用者端末１０１からあるファイルに対してＩ／Ｏ要求が出されると、NFS/CIFSサービスモジュール１０７がその要求をファイルシステム１０９に提供する。Ｉ／Ｏ要求の対象ファイルが二次記憶装置１１１に格納されたファイルであれば、ファイルシステム１０９は、二次記憶装置１１１から対象ファイルを取得し、NFS/CIFSサービスモジュール１０７を介して利用者端末１０１に当該ファイルを提供する。一方、対象ファイルがローカルキャッシュ１１２にある場合（Amazon（登録商標） S3に関連づけられたファイルであって、キャッシュされている場合）には、ファイルシステム１０９は、オンラインストレージマウントモジュール１１０を介して対象ファイルを取得し、NFS/CIFSサービスモジュール１０７を介して利用者端末１０１に当該ファイルを提供する。また、対象ファイル（Amazon（登録商標） S3に関連づけられたファイル）がローカルキャッシュ１１２にも無い場合（オンラインストレージサービス１０５にある場合）には、オンラインストレージマウントモジュール１１０が、オンラインストレージサービス１０５から対象ファイルを取得（マウント）し、ローカルキャッシュ１１２に格納して、ファイルシステム１０９に提供する。そして、ファイルシステム１０９が、NFS/CIFSサービスモジュール１０７を介して利用者端末１０１に当該ファイルを提供する。【００２６】
＜ファイル分割管理・分割キャッシュの概念＞
図２は、本発明の実施形態によるファイル分割管理・分割キャッシュの概念を示す図である。オンラインストレージサービス１０５上のファイルデータ２０４は、単一ファイルを構成する分割ブロックファイル（サブファイル）の集合であり、メタ情報２００と分割ブロックファイル群２０３で構成される。【００２７】
メタ情報２００は、各ファイルに付随する属性情報であり、例えばファイル名や更新日時等の情報を含んでいる（詳細について図３を参照）。また、分割ブロックファイル群２０３は、ファイル本体を固定長サイズで分割したブロックファイルの集合である。【００２８】
一方、ファイルサーバ内のローカルキャッシュ１１２は、単一ファイルのキャッシュファイルの集合に相当する、キャッシュファイルデータ２０２を有している。キャッシュファイルデータ２０２は、メタ情報２００とキャッシュブロックファイル群２０１で構成され、キャッシュブロックファイル群２０１は、分割ブロックファイル群２０３のうち、オンラインストレージマウントモジュール１１０が高速化処理のためにダウンロードしたファイルであり、ファイル更新処理が起こっていない状況では、分割ブロックファイル群２０３の部分集合になる。また、ファイル更新処理が発生した場合、対応する更新ブロックが格納され、定期的に実行される更新処理時（図１０及び１１参照）に、オンラインストレージマウントモジュール１１０は、分割ブロックファイル群２０３のうち、対応するファイルを上書き更新する。【００２９】
実際のファイルサーバ１０６内におけるキャッシュデータ格納方法については、ファイルサーバ１０６内のキャッシュ領域に、各キャッシュファイルデータ２０２につき、１つのディレクトリが用意され、その中にメタ情報２００とキャッシュブロックファイル群２０１が格納される。オンラインストレージサービス１０５上に関しても、同様の構成（１つのファイルにつき１つのディレクトリが用意される）でデータ保存される。【００３０】
＜ファイル属性テーブル＞
図３は、本実施形態において、メタ情報２００が格納するファイル属性テーブルの構成例を示す図である。メタ情報２００は、構成項目として、例えば、識別番号３００と、ファイル名３０１と、親ノード識別番号３０２と、メタ情報更新フラグ３０３と、ファイル更新フラグ３０４と、削除フラグ３０５と、ビットマップ情報３０６と、オンラインストレージ上サイズ３０７と、Stat情報３０８と、を含んでいる。【００３１】
識別番号３００は、ファイル（ファイルデータ２０４に相当）をユニークに識別するための番号情報であり、ファイル名やファイルパス等のメタ情報が変わっても変わらない唯一のデータである。親ノード識別番号３０２は、ディレクトリ構成を採る場合に、当該ファイルの親ディレクトリに対応するファイルの識別番号を格納している。【００３２】
メタ情報更新フラグ３０３・ファイル更新フラグ３０４は、各ファイルのメタ情報・ファイルデータが更新された場合に設定されるフラグであり、定期的な更新処理時に参照される。当該フラグは、更新されたか否かを示すのであり、例えば１又は０が格納される。ローカルキャッシュで書き込み処理が実行されると、ローカルキャッシュ１１２上のデータと、オンラインストレージサービス１０５上のデータとの間にズレが生じる。この更新によるズレをオンラインストレージ１０５上のデータに後で反映させるために、当該フラグが用いられる。【００３３】
削除フラグ３０５は、当該ファイル（ファイルデータ２０４に相当）の削除処理が発生した際に設定されるフラグであり、これも更新処理時に参照される。【００３４】
ビットマップ情報３０６は、ローカルにキャッシュされているブロックファイルのうち、更新処理の発生したブロックを記録するためのデータであり、ファイル更新処理時に利用される。【００３５】
オンラインストレージ上サイズ３０７は、当該データがオンラインストレージよりダウンロードされた場合、その元ファイルのデータサイズを格納した属性であり、更新処理時の余分ファイルの削除に利用される。【００３６】
最後に、Stat情報３０８は、当該ファイルのファイルサイズやブロックサイズ、ACL等のファイル統計情報を格納している。【００３７】
＜オンラインストレージサービス設定・管理用ＧＵＩ＞
図４は、管理用デーモンが提供する設定・管理用ＧＵＩ（Graphical User Interface）を示す図である。当該ＧＵＩは、管理者が図示しない管理者用端末から管理用デーモン１０８に対して、オンラインストレージサービスの設定及び／又は管理を要求したときに管理者用端末の常時画面上に表示される。【００３８】
設定・管理画面はリストコントロールとボタンで構成され、リストコントロールは設定されたバケット４００と、バケットに対応づけてマウントされる、ファイルサーバ１０６上のファイルパス４０１と、アカウント４０２の組データのリストを表示している。【００３９】
当該組データは、Amazon（登録商標） S3の指定バケット名とファイルサーバ内のマウント先フォルダのファイルパス、及びマウントに利用するAmazon（登録商標） S3のユーザアカウント名の組を示しており、マウントされたフォルダに対してファイルの読み書きを実行した場合、マウントに利用したAmazon（登録商標） S3のユーザアカウントに対して、利用料金が発生する設定になる。【００４０】
設定ＧＵＩには、新規ボタン４０３、編集ボタン４０４、削除ボタン４０５が配置され、エントリの新規生成、編集、削除を実行することができるようになっている。また、設定内容を確定する場合はＯＫボタン４０６、キャンセルする場合はキャンセルボタン４０７を押す。アカウントについては、予めAmazon（登録商標） S3に契約・作成したものを利用する必要があり、各アカウントに対して発行された、Amazon（登録商標） S3サービスへのアクセスに必要なAccess ID KeyとSecret Access Keyは、ファイルサーバ内に暗号化されて保存されている。【００４１】
図５は、設定・管理用ＧＵＩ（図４）で新規・編集ボタン押下時のＧＵＩを示す図である。バケット名、ファイルパス、アカウントを設定できるエディットボックスが配置され、ＯＫボタン５０３で確定、キャンセルボタン５０４でキャンセルを行うことができる。【００４２】
＜ファイルオープン時の処理＞
図６は、本実施形態において、ファイルオープン時のオンラインストレージマウントモジュール１１０が実行する処理を説明するためのフローチャートである。当該処理は、ファイルオープン要求に対して、ファイルを使用するときに必要なリソースを確保する処理であると言える。【００４３】
まず始めに、オンラインストレージマウントモジュール１１０は、ファイルオープン要求を受信すると（ステップ６００）、当該オープン要求対象であるファイルのキャッシュブロックファイル群が、ファイルサーバ１０６内のキャッシュ領域に存在するか否かをチェックする（ステップ６０１）。【００４４】
該当するキャッシュ領域が存在する場合（ステップ６０１でＹｅｓ）、オンラインストレージマウントモジュール１１０は、キャッシュブロックファイル群を格納するフォルダをオープンして、そのファイル識別子を返す（ステップ６０２）。【００４５】
一方、該当するキャッシュ領域が存在しない場合（ステップ６０１でＮｏ）、メタ情報、及びキャッシュブロックファイル群を格納するフォルダを生成し、そのファイル識別子を返す。【００４６】
＜ファイルREAD時の処理＞
図７は、本実施形態において、READ要求時に、オンラインストレージマウントモジュール１１０が実行する処理を説明するためのフローチャートである。【００４７】
オンラインストレージマウントモジュール１１０は、READ要求を受信する（ステップ７００）と、READ要求内で指定されたファイルのオフセット情報とサイズ情報を基に、アクセス先となる必要な分割ブロックを計算する（ステップ７０１）。【００４８】
そして、オンラインストレージマウントモジュール１１０は、ファイル提供に必要となる分割ブロックファイルが全てローカルキャッシュ１１２に格納されているかどうかを判定する（ステップ７０２）。【００４９】
必要な分割ブロックファイルが全てキャッシュされている場合（ステップ７０２でＹｅｓ）、オンラインストレージマウントモジュール１１０は、キャッシュされたブロックファイルから、必要領域分のデータを読み取り、READ要求で返すバッファを生成する（ステップ７０３）。【００５０】
一方、必要な分割ブロックファイルのうち一部でもキャッシュされていない場合（ステップ７０２でＮｏ）、オンラインストレージマウントモジュール１１０は、オンラインストレージサービス１０５からキャッシュされていない分割ブロックファイルをダウンロードしてローカルキャッシュ１１２に格納し（ステップ７０５）、キャッシュされている場合のときと同様にREAD要求で返す読込みバッファを構成する（ステップ７０３）。【００５１】
最後に、オンラインストレージマウントモジュール１１０は、構成した読込みバッファを上位制御（ファイルシステム１０９）に返して処理を終了する（ステップ７０４）。【００５２】
＜ファイルWRITE時の処理＞
図８は、本実施形態において、WRITE要求時に、オンラインストレージマウントモジュール１１０が実行する処理を説明するためのフローチャートである。【００５３】
オンラインストレージマウントモジュール１１０は、WRITE要求を受信する（ステップ８００）と、WRITE要求で指定されたオフセット情報とサイズ情報から、必要な分割ブロックを算出する（ステップ８０１）。【００５４】
その後、オンラインストレージマウントモジュール１１０は、書込み領域をカバーする必要な分割ブロックファイルがすべてローカルキャッシュ１１２に格納されているか否かを判別する（ステップ８０２）。【００５５】
一部キャッシュされていないブロックファイルが存在した場合（ステップ８０２でＮｏ）、オンラインストレージマウントモジュール１１０は、そのファイルをオンラインストレージサービス１０５からダウンロードしてローカルキャッシュ１１２に格納する（ステップ８０６）。【００５６】
必要ブロックファイルが全てキャッシュされている場合（ステップ８０２でＹｅｓ）、或いは、ステップ８０６の処理によって必要なブロックファイルがすべてキャッシュされた状態にした後、オンラインストレージマウントモジュール１１０は、キャッシュされたブロックファイルに対して、必要な書込み領域分にWRITE要求内の書込みバッファを上書きする（ステップ８０３）。【００５７】
そして、オンラインストレージマウントモジュール１１０は、更新したブロックファイルに対応して、ビットマップ情報３０６内の対応ビットを１にし、ビットマップ情報３０６を更新する（ステップ８０４）。【００５８】
最後に、オンラインストレージマウントモジュール１１０は、ファイル更新フラグ３０４をＯＮに設定して処理を終了する（ステップ８０５）。【００５９】
＜ファイルTRUNCATE時の処理＞
図９は、本実施形態において、TRUNCATE時に、オンラインストレージマウントモジュール１１０が実行する処理を説明するためのフローチャートである。ここで、TRUNCATE処理とは、対象ファイルを伸縮する処理を行うファイルシステムの処理である。【００６０】
オンラインストレージマウントモジュール１１０は、TRUNCATE要求を受信する（ステップ９００）と、ファイルの拡張要求か縮小要求かを、指定サイズ情報を基に判定する（ステップ９０１）。【００６１】
拡張要求の場合（ステップ９０１でＹｅｓ）、オンラインストレージマウントモジュール１１０は、当該ファイルの拡張後のサイズに対して必要な分、ビットマップ情報データを拡張し（ステップ９０２）、ファイルサイズ情報の更新を行う（ステップ９０３）。【００６２】
一方、縮小要求の場合（ステップ９０１でＮｏ）、オンラインストレージマウントモジュール１１０は、当該ファイルの縮小後のサイズに相当するサイズに、ビットマップ情報データを縮小し（ステップ９０５）、ファイルサイズ情報の更新を行う（ステップ９０３）。【００６３】
最後に、オンラインストレージマウントモジュール１１０は、メタ情報更新フラグ・ファイル更新フラグをＯＮに設定して処理を終了する（ステップ９０４）。【００６４】
なお、ファイルサイズを縮小した場合、縮小処理に対して不要となる分割ブロックファイルが出てくるが、そのファイルを削除する処理は行わない。なぜなら縮小した後に拡大処理が発生した場合、再度分割ブロックファイルを生成するオーバヘッドを回避するためである。【００６５】
＜非同期ファイル更新処理＞
図１０は、本実施形態による、非同期更新時の処理の全体概要を説明するためのフローチャートである。非同期更新処理は、別スレッドで定期的に実行されるものであり、その周期はポリシにより設定できる仕組みとなっている。【００６６】
まず、オンラインストレージマウントモジュール１１０は、非同期更新用スレッドを用いて、各ファイルのメタ情報にアクセスし、削除フラグがＯＮであるかをチェックする（ステップ１０００）。削除フラグがＯＮの場合（ステップ１０００でＹｅｓ）、オンラインストレージマウントモジュール１１０は、当該識別子に対応するオンラインストレージ上の対象ファイルを削除し（ステップ１００５）、処理を終了する。【００６７】
削除フラグがＯＦＦの場合（ステップ１０００でＮｏ）、オンラインストレージマウントモジュール１１０は、ファイル更新フラグがＯＮか否かを判定する（ステップ１００１）。【００６８】
ファイル更新フラグがＯＮの場合（ステップ１００１でＹｅｓ）、オンラインストレージマウントモジュール１１０は、ファイル更新処理（詳細は図１１参照）を実行し（ステップ１００２）、ＯＦＦの場合はファイル更新処理をスキップして、メタ情報更新フラグの判定処理に処理を移行させる（ステップ１００３）。【００６９】
メタ情報更新フラグがＯＮの場合（ステップ１００３でＹｅｓ）、オンラインストレージマウントモジュール１１０は、オンラインストレージ上の対応ファイルのメタ情報を更新し（ステップ１００４）、ＯＦＦの場合（ステップ１００３でＮｏ）、何もせずに処理を終了する。【００７０】
図１１は、非同期更新時のファイル更新処理（ステップ１００２）の詳細を説明するためのフローチャートである。【００７１】
まず、オンラインストレージマウントモジュール１１０は、現在のファイルサイズと、ファイルのメタ情報属性に格納された、オンラインストレージサービス１０５上の元ファイルのサイズとを比較する（ステップ１１００）。【００７２】
そして、オンラインストレージマウントモジュール１１０は、元ファイルに対して、現時点でのファイルサイズが縮小しているか否かを判別する（ステップ１１０１）。ファイルサイズが縮小していない場合（ステップ１１０１でＮｏ）、余分ファイルは存在しないため、処理はステップ１１０３に移行する。【００７３】
縮小している場合（ステップ１１０１でＹｅｓ）、余分な分割ブロックファイルがオンラインストレージサービス１０５上に存在することになるため、オンラインストレージマウントモジュール１１０は、まずそれらのファイルをオンラインストレージサービス１０５から削除する（ステップ１１０２）。【００７４】
そして、オンラインストレージマウントモジュール１１０は、更新ブロックファイルの有無について判別する（ステップ１１０３）。【００７５】
更新ブロックファイルが存在しない場合（ステップ１１０３でＮｏ）、オンラインストレージマウントモジュール１１０は、ファイル更新処理を終了する。一方、更新ブロックファイルが存在する場合（ステップ１１０３でＹｅｓ）、オンラインストレージマウントモジュール１１０は、ビットマップ情報より更新ブロックファイルを判別し、それらをオンラインストレージサービス１０５にアップロードして（ステップ１１０４）から、処理を終了する。【００７６】
なお、本実施形態では、ステップ１００４、１００５、１１０２、１１０４等において、オンラインストレージマウントモジュール１１０が直接オンラインストレージ上のファイル削除、情報更新等を行う構成としたが、それに代えて、オンラインストレージマウントモジュール１１０が、前述したWebインタフェースを介してオンラインストレージサービス１０５のプロセッサ（図示せず）にファイル更新等の指示を行い、実際のファイル更新等は、オンラインストレージサービス１０５のプロセッサが行うような構成としても良い。【００７７】
＜まとめ＞
本発明の実施形態では、ファイルサーバのローカルキャッシュにおいて、オンラインストレージサービスが格納するオリジナルファイルを分割することにより生成されたＮ（正整数）個の分割ファイルのうちＫ（Ｋ＜Ｎの正整数）個の分割ファイルを格納している。また、オンラインストレージマウントモジュール（以下、「マウントモジュール」という）が、オンラインストレージサービス及びローカルキャッシュからデータを取得するようになっている。そして、マウントモジュールは、Ｉ／Ｏ要求に対応するデータを提供するために必要な分割ブロックの全てがローカルキャッシュに存在するか判断し、必要な分割ブロックが存在する場合には該当する分割ブロックからファイルＩ／Ｏ要求に対応するデータを取得する。このようにすることにより、ファイルサイズの上限制約について解消することができる。つまり、通常、オンラインストレージサービスでは、通信量に応じた課金を行っているが、ファイルを分割管理し、オンデマンドに必要な部分のみダウンロード・キャッシュする仕組みを提供することで、通信コストを低減することができる。【００７８】
また、必要な分割ブロックの全てがローカルキャッシュに存在しない場合には、マウントモジュールは、オンラインストレージサービスにアクセスし、不足分の分割ブロックを取得して、ローカルキャッシュに格納するようにしている。このように、クライアントからの要求に応じ、オンデマンドで必要な分割ブロックファイルのみダウンロードして処理するため、通信コストを低減することができる。【００７９】
ローカルキャッシュは、さらに、オリジナルファイルのメタ情報を分割ファイルと共に格納している。このメタ情報は、オリジナルファイルを更新したか否かを示すファイル更新フラグと、Ｎ個の分割ファイルの状態を示すビットマップ情報とを含んでいる。そして、マウントモジュールは、利用者端末から書き込み要求があって、ローカルキャッシュに格納されたＫ個の分割ファイルの少なくとも１つが更新された場合、ファイル更新フラグをＯＮに設定し、更新された分割ファイルに対応するビットマップ情報を更新する。また、メタ情報は、さらに、メタ情報を更新したか否かを示すメタ情報更新フラグと、ファイルサイズを示すファイルサイズ情報を含んでいる。そして、マウントモジュールは、ファイルサイズ変更要求（TRUNCATE要求）であって、当該ファイルサイズ変更要求によって、対象ファイルが拡張或いは縮小された場合、ビットマップ情報を拡張処理或いは縮小処理する。そして、ファイルサイズ情報を更新すると共に、メタ情報更新フラグをＯＮとする。このようにすることにより、オンラインサービス上のオリジナルファイル及びそのメタ情報を適宜（ファイルサーバ内の処理とは非同期に）更新することができる。ファイルサーバ上にメタ情報とファイルをキャッシュし、定期的に非同期で、それらのキャッシュデータをオンラインストレージ側にアップロードする仕組みにすることで、ＷＡＮ経由のオンラインストレージサービスに対するアクセスについても、ファイルのメタ情報アクセスやファイルアクセスの高速化を実現することができる。【００８０】
以上のように、ファイル・メタ情報アクセス高速化のために、オンラインストレージサービス上のファイル・メタ情報をファイルサーバにキャッシュする仕組みを提供し、また、非同期でファイルサーバ内のキャッシュされたメタ情報とファイルをオンラインストレージにアップロードすることで、ファイルサーバへの負荷を低減した形での、更新内容のオンラインストレージサービスへの確定処理も実現している。【００８１】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。【００８２】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。【００８３】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【符号の説明】
【００８４】
１００…企業・組織
１０１…利用者端末
１０２…イントラネット
１０３…ゲートウェイサーバ
１０４…ＷＡＮ
１０５…オンラインストレージサービス
１０６…ファイルサーバ
１０７…NFS/CIFSサービスモジュール
１０８…管理用デーモン
１０９…ファイルシステム
１１０…オンラインストレージマウントモジュール
１１１…二次記憶装置
１１２…ローカルキャッシュ
２００…メタ情報
２０１…キャッシュブロックファイル群
２０２…キャッシュファイルデータ
２０３…分割ブロックファイル群
２０４…ファイルデータ
３００…識別番号
３０１…ファイル名
３０２…親ノード識別番号
３０３…メタ情報更新フラグ
３０４…ファイル更新フラグ
３０５…削除フラグ
３０６…ビットマップ情報
３０７…オンラインストレージ上サイズ
３０８…Stat情報
【図１】
0005400889.tif 000002
【図２】
0005400889.tif 000003
【図３】
0005400889.tif 000004
【図４】
0005400889.tif 000005
【図５】
0005400889.tif 000006
【図６】
0005400889.tif 000007
【図７】
0005400889.tif 000008
【図８】
0005400889.tif 000009
【図９】
0005400889.tif 000010
【図１０】
0005400889.tif 000011
【図１１】
0005400889.tif 000012