(57)【特許請求の範囲】
【請求項１】
複数の利用者端末と、利用者端末からの要求に応答して情報を提供する情報提供用計算機と、提供すべき情報を格納するオンラインストレージサービスと、を備える情報処理システムにおける情報管理方法であって、
前記複数の利用者端末のそれぞれと前記情報提供用計算機は、ＬＡＮを介して接続されており、前記情報提供用計算機と前記オンラインストレージサービスは、ＷＡＮを介して接続されており、
前記情報提供用計算機は、プロセッサと、複数のファイルのそれぞれを複数に分割した複数の構成ブロックの情報を管理する構成ブロックデータベースと、前記複数のファイルの前記複数の構成ブロックの構成情報を管理するファイル構成データベースと、前記複数のファイルのそれぞれのディレクトリ構成を含むメタ情報を管理するメタ情報データベースと、を有し、前記構成ブロックデータベースと、前記ファイル構成データベースと、前記メタ情報データベースはそれぞれ、格納情報を複数に分割して構成される複数の分割データベースで構成されており、
前記情報管理方法は、
前記情報提供用計算機のプロセッサが、前記構成ブロックデータベースに格納されている前記複数の構成ブロックにおける重複を排除し、重複排除された構成ブロック群を生成するステップと、
前記情報提供用計算機のプロセッサが、前記複数の構成ブロックのそれぞれが他のファイルで共通に用いられている度合いを示す重複度の情報を管理するステップと、
前記情報提供用計算機のプロセッサが、前記重複排除された構成ブロック群と、前記複数の構成ブロックの構成情報と、前記メタ情報と、を前記オンラインストレージサービスにアップロードするステップと、
を有することを特徴とする情報管理方法。
【請求項２】
請求項１において、
さらに、前記情報提供用計算機のプロセッサが、追加又は更新された構成ブロックが前記構成ブロックデータベース内の前記複数の構成ブロックと重複するか否か判断するステップと、
前記情報提供用計算機のプロセッサが、重複する構成ブロックについて、前記重複度の情報を更新するステップと、
前記情報提供用計算機のプロセッサが、前記更新された構成ブロックを格納する、前記構成ブロックデータベース内の前記分割データベースの情報を前記オンラインストレージサービスにアップロードするステップと、
を有することを特徴とする情報管理方法。
【請求項３】
請求項２において、
さらに、前記情報提供用計算機のプロセッサが、前記構成ブロックデータベースにおいて構成ブロックのデータに更新があった場合、更新された構成ブロックが属する前記分割データベースに変更が発生したこと示す変更発生情報を管理するステップを有し、
前記アップロードするステップにおいて、前記情報提供用計算機のプロセッサは、前記変更発生情報に従って、前記更新された構成ブロックが属する前記分割データベースを前記オンラインストレージサービスにアップロードすることを特徴とする情報管理方法。
【請求項４】
請求項２において、
さらに、前記追加された構成ブロックについて、前記構成ブロックデータベースにおいて重複する他の構成ブロックがないと判断した場合、前記情報提供用計算機のプロセッサが、前記追加された構成ブロックが属する前記分割データベースに変更が発生したことを示す変更発生情報を管理するステップを有し、
前記アップロードするステップにおいて、前記情報提供用計算機のプロセッサは、前記変更発生情報に従って、前記追加された構成ブロックが属する前記分割データベースを前記オンラインストレージサービスにアップロードすることを特徴とする情報管理方法。
【請求項５】
請求項２において、
前記重複度の情報は、構成ブロックが他のファイルで参照されている数を示すカウント値で構成されており、
前記重複度の情報を更新するステップにおいて、前記情報提供用計算機のプロセッサは、構成ブロックの削除要求に応答して、前記重複度のカウント値を減らし、
前記情報管理方法は、さらに、前記情報提供用計算機のプロセッサが、前記重複度のカウント値が０となった構成ブロックがある場合、前記カウント値が０となった構成ブロックが属する前記分割データベースに構成ブロックの削除が発生したこと示す変更発生情報を管理するステップを有し、
前記アップロードするステップにおいて、前記情報提供用計算機のプロセッサは、前記変更発生情報に従って、前記削除された構成ブロックが属する前記分割データベースを前記オンラインストレージサービスにアップロードすることを特徴とする情報管理方法。
【請求項６】
請求項１において、
さらに、前記情報提供用計算機のプロセッサが、ファイル読込み要求の対象となるファイルに対応する前記構成ブロックを、前記ファイル構成データベースに基づいて特定するステップと、
前記情報提供用計算機のプロセッサが、前記特定した構成ブロックについて、前記オンラインストレージサービス上の情報格納先を特定するステップと、
前記情報提供用計算機のプロセッサが、前記構成ブロックを前記オンラインストレージサービスからダウンロードするステップと、
前記情報提供用計算機のプロセッサが、前記情報提供用計算機内にキャッシュし、読込みデータを構成して前記ファイル読込み要求に応答するステップと、
を有することを特徴とする情報管理方法。
【請求項７】
複数の利用者端末の少なくとも１つからの要求に応答して、オンラインストレージサービスから情報を取得し、当該情報を前記利用者端末に提供する情報提供用計算機であって、
プロセッサと、
複数のファイルのそれぞれを複数に分割した複数の構成ブロックの情報を管理する構成ブロックデータベースと、
前記複数のファイルの前記複数の構成ブロックの構成情報を管理するファイル構成データベースと、
前記複数のファイルのそれぞれのディレクトリ構成を含むメタ情報を管理するメタ情報データベースと、を有し、
前記構成ブロックデータベースと、前記ファイル構成データベースと、前記メタ情報データベースはそれぞれ、格納情報を複数に分割して構成される複数の分割データベースで構成されており、
前記複数の利用者端末のそれぞれと前記情報提供用計算機は、ＬＡＮを介して接続されており、前記情報提供用計算機と前記オンラインストレージサービスは、ＷＡＮを介して接続されており、
前記プロセッサは、
前記構成ブロックデータベースに格納されている前記複数の構成ブロックにおける重複を排除して、重複排除された構成ブロック群を生成し、
前記複数の構成ブロックのそれぞれが他のファイルで共通に用いられている度合いを示す重複度の情報を管理し、
前記重複排除された構成ブロック群と、前記複数の構成ブロックの構成情報と、前記メタ情報と、を前記オンラインストレージサービスにアップロードすることを特徴とする情報提供用計算機。
【請求項８】
請求項７において、
前記プロセッサは、
追加又は更新された構成ブロックが前記構成ブロックデータベース内の前記複数の構成ブロックと重複するか否か判断し、
重複する構成ブロックについて、前記重複度の情報を更新して、前記更新された構成ブロックを格納する、前記構成ブロックデータベース内の前記分割データベースの情報を前記オンラインストレージサービスにアップロードすることを特徴とする情報提供用計算機。
【請求項９】
請求項８において、
前記プロセッサは、
前記構成ブロックデータベースにおいて構成ブロックのデータに更新があった場合、更新された構成ブロックが属する前記分割データベースに変更が発生したこと示す変更発生情報を管理し、
前記変更発生情報に従って、前記更新された構成ブロックが属する前記分割データベースを前記オンラインストレージサービスにアップロードすることを特徴とする情報提供用計算機。
【請求項１０】
請求項８において、
前記プロセッサは、
前記追加された構成ブロックについて、前記構成ブロックデータベースにおいて重複する他の構成ブロックがないと判断した場合、前記追加された構成ブロックが属する前記分割データベースに変更が発生したことを示す変更発生情報を管理し、
前記変更発生情報に従って、前記追加された構成ブロックが属する前記分割データベースを前記オンラインストレージサービスにアップロードすることを特徴とする情報提供用計算機。
【請求項１１】
請求項８において、
前記重複度の情報は、構成ブロックが他のファイルで参照されている数を示すカウント値で構成されており、
前記プロセッサは、
構成ブロックの削除要求に応答して、前記重複度のカウント値を減らし、
前記重複度のカウント値が０となった構成ブロックがある場合、前記カウント値が０となった構成ブロックが属する前記分割データベースに構成ブロックの削除が発生したこと示す変更発生情報を管理し、
前記変更発生情報に従って、前記削除された構成ブロックが属する前記分割データベースを前記オンラインストレージサービスにアップロードすることを特徴とする情報提供用計算機。
【請求項１２】
請求項７において、
前記プロセッサは、
ファイル読込み要求の対象となるファイルに対応する前記構成ブロックを、前記ファイル構成データベースに基づいて特定し、前記特定した構成ブロックについて、前記オンラインストレージサービス上の情報格納先を特定し、前記構成ブロックを前記オンラインストレージサービスからダウンロードし、前記情報提供用計算機内にキャッシュし、読込みデータを構成して前記ファイル読込み要求に応答することを特徴とする情報提供用計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報管理方法、及び情報提供用計算機に関し、例えば、オンラインストレージサービスを用いた情報提供サーバに関するものである。
【背景技術】
【０００２】
クラウドコンピューティングの興隆によって、企業ではITの所有から利用への推移が進んでいくと予想されているが、こうした背景の中、インターネット経由でストレージサービスを提供するベンダが増えてきている。こうしたオンラインストレージサービスの代表的なものとして、Amazon S3やWindows Azure Storage等がある。一般的に、このようなオンラインストレージサービスは、ＲＥＳＴやＳＯＡＰといったＷｅｂインタフェースを利用してアクセスを行い、リソースの利用量に応じて従量課金を行っている。セキュリティやコンプライアンスの問題は残っているが、コストメリットが大きいため、今後、大きく利用が拡大していくと考えられている。
【０００３】
そして、このような外部のオンラインストレージサービスを利用する上では、データ保存量が増大するにつれ、課金量が大きくなってしまうという問題がある。また、ＷＡＮ経由でデータ転送を行うため、転送効率が良くなく、大量データを保存する場合に時間がかかってしまう問題がある。更に、保存量だけでなく転送量に対しても課金されてしまうため、保存・転送するデータの圧縮が重要な技術となってくる。
【０００４】
ストレージ内のデータ圧縮方式として、ＧＺＩＰやＬＺＨ等のアルゴリズムが一般的であるが、近年、重複しているデータを統合化してデータ重複度を排除することで、圧縮を実現する方式が提案されている。例えば、特許文献１の発明では、ＳＡＮストレージに複数のＯＳイメージを格納する場合の、ＯＳイメージの共通部分の重複排除を行い、ストレージ容量削減を実現する方式が提案されている。本特許では、ストレージ内で共通ＬＵと個別ＬＵに分け、各ホストに共通するＯＳ・ＡＰデータを共通ＬＵに格納し、各ホスト個別データを個別ＬＵに格納することで、従来だと重複するＯＳ・ＡＰデータに関して重複排除を行い、ストレージ容量削減を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２３０６６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１によれば、ストレージ側で内部的に重複排除を行う方式を採用しており、通信量を削減することができず、一般の既存のオンラインストレージサービス利用に対して適用することは困難である。また、オンラインストレージサービスではWAN越しのアクセスが発生するが、ネットワーク上のデータ転送量が削減されないため、パフォーマンス改善に繋がらない点も課題である。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、クラウド環境において、ストレージサービス側でのデータ保存量の削減及び情報提供サーバからストレージサービス側へのデータ転送量の削減の双方を実現するための技術を提供するものである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明では、オンラインストレージサービス上に定義された論理記憶領域を、特定フォルダにマウントして、オンラインストレージサービスを透過的に利用する方式における、重複排除技術を利用したデータ保存量・転送量削減を実現する仕組みを提案する。クラウド環境における性能向上を実現するために、書込みデータについてはローカルキャッシュ機能であらかじめキャッシュを行い、非同期な遅延アップロード処理により、重複排除処理を実行しつつ、データをオンラインストレージサービスに格納する。また、管理用のデータベースについては分割して管理し、更新のあった部分のみ、適宜オンラインストレージサービス上にアップロードする仕組みを提供する。さらに、データ種別により、重複排除による圧縮効率は変わるため、データ種別に応じた重複排除の適用可否について管理する。これらの仕組みにより、効率的かつ課金量を節減したオンラインストレージサービス利用方式を実現する。
【０００９】
即ち、本発明による情報提供用計算機は、複数のファイルのそれぞれを複数に分割した複数の構成ブロックの情報を管理する構成ブロックデータベースと、複数のファイルの前記複数の構成ブロックの構成情報を管理するファイル構成データベースと、複数のファイルのそれぞれのディレクトリ構成を含むメタ情報を管理するメタ情報データベースと、を有する。そして、構成ブロックデータベースと、ファイル構成データベースと、メタ情報データベースはそれぞれ、格納情報を複数に分割して構成される複数の分割データベースで構成されている。このような情報提供用計算機において、構成ブロックデータベースに格納されている前記複数の構成ブロックにおける重複を排除して、重複排除された構成ブロック群が生成される。また、複数の構成ブロックのそれぞれが他のファイルで共通に用いられている度合いを示す重複度の情報が管理される。さらに、重複排除された構成ブロック群、複数の構成ブロックの構成情報、及びメタ情報は、オンラインストレージサービスにアップロードされる。
【発明の効果】
【００１０】
本発明によれば、クラウド環境において、ストレージサービス側でのデータ保存量の削減及び情報提供サーバからストレージサービス側へのデータ転送量の削減の双方を実現することができるようになる。
【００１１】
なお、上述した以外の課題、構成及び効果は、以下の本発明を実施するための形態および添付図面によって明らかになるものである。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態による情報処理システムの概略構成を示す図である。
【図２】メタ情報ＤＢテーブルの構成例を示す図である。
【図３】構成ブロックＤＢテーブルの構成例を示す図である。
【図４】ファイル構成ＤＢテーブルの構成例を示す図である。
【図５】分割ＤＢへのアクセス処理に係る概念を示す図である。
【図６】分割ＤＢ管理テーブルの構成例を示す図である。
【図７】マウントフォルダへのファイルオープン処理を説明するためのフローチャートである。
【図８】マウントフォルダへのファイル読込み処理を説明するためのフローチャートである。
【図９】マウントフォルダへのファイル書込み処理を説明するためのフローチャートである。
【図１０】マウントフォルダへのファイル削除処理を説明するためのフローチャートである。
【図１１】キャッシュデータのアップロード処理を説明するためのフローチャートである。
【図１２】キャッシュブロックファイルの重複排除処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
本発明は、ファイルを分割してデータ重複を排除し、外部ストレージサービスに保存することにより、保存量に対する課金量を節減するとともに、ＷＡＮ経由で送信されるデータ転送量を減らすことで、データ転送に対する課金量を低減しつつ、転送効率を向上する方式に関する。
【００１４】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１５】
なお、以後の説明ではＤＢを「テーブル」という表現にてＤＢ内の情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について「情報」と呼ぶことができるものとする。
【００１６】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００１７】
以後の説明では「モジュール」を主語として説明を行う。ただし、モジュールの機能は、プログラムによっても実現することができる。この場合、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うようすることができるため、プロセッサを主語とした説明としてもよい。
【００１８】
＜システムの構成＞
図１は、本発明の実施形態による情報提供システム（情報処理システムともいう）の概略構成を示す図である。情報提供システムは、ファイルサーバ１０３と、利用者端末１０１と、オンラインストレージサービス１０５と、を有している。
【００１９】
利用者端末１０１は、ＬＡＮ１０２経由でファイルサーバ１０３に接続可能となっており、ファイルサーバ１０３はＷＡＮ１０４経由でオンラインストレージサービス１０５に接続可能な構成となっている。なお、ファイルサーバ１０３は、情報提供するサーバの代表として記述しているだけであり、これに限られるものではない。よって、ファイルサーバは、Ｗｅｂサーバ等の情報提供サーバと読み替えることが可能である。
【００２０】
オンラインストレージサービス１０５は、ストレージアクセス用のＷｅｂインタフェースを公開・提供しており、ＷＡＮ１０４経由でアクセスすることが可能となっている。ここでは、一例としてファイルサーバ１０３を挙げているが、Ｗｅｂサーバや業務サーバ等、一般にオンラインストレージサービス１０５にデータを格納するニーズのあるサーバであれば何でも良い。
【００２１】
ファイルサーバ１０３内には、ＣＩＦＳ／ＮＦＳサービス１０６と容量拡張モジュール１０７が稼動しており、二次記憶装置１１１上には構成ブロックＤＢ群１０８、メタ情報ＤＢ群１０９、ファイル構成ＤＢ群１１０、キャッシュブロックファイル１１２が格納されている。図示されてはいないが、ファイルサーバ１０３は、各種プログラムを動作させるためのＣＰＵ（ＭＰＵ）やメモリを有している。
【００２２】
ＣＩＦＳ／ＮＦＳサービス１０６はＣＩＦＳ／ＮＦＳプロトコルを通じて、利用者端末からアクセスされた際に、リクエストに応じてローカルのファイル操作を行い、要求データを返すサービスであり、ファイルサーバの基本機能を提供している部分である。
【００２３】
また、容量拡張モジュール１０７は、オンラインストレージサービス１０５の指定された記憶領域を、ファイルサーバ１０３上の指定されたローカルフォルダにマウントして、フォルダに対するファイル操作リクエストを処理し、オンラインストレージサービス１０５上の記憶領域上のファイルデータの読出しや、ファイルサーバ１０３から記憶領域へのデータ同期処理を行う。このモジュールにより、ファイルサーバ１０３上のストレージ容量を、オンラインストレージサービス１０５上の記憶領域を利用してシームレスに拡張することができる。
【００２４】
オンラインストレージサービス１０５上の記憶領域がマウントされたフォルダに対して、書き込まれたファイルは、初回の場合はそのままキャッシュデータとして二次記憶装置１１１に保存され、容量拡張モジュール１０７のアップロード処理時に分割されて、重複排除処理が施され、オンラインストレージサービス１０５上の記憶領域にアップロードされる。また、ファイル読込み時は、ローカルのキャッシュブロックファイル１１２にデータがあれば、そのデータが返され、無ければオンラインストレージサービス１０５から対応する構成ブロックファイルがダウンロードされる。なお、以下では簡単のため分割されるブロック長は、ファイルの最後尾のブロック以外、固定長と仮定して議論を進めるが、可変長でも同様の議論になり、発明が限定されるものではない。
【００２５】
構成ブロックＤＢ（群）１０８は、重複排除処理後の、各ファイルを構成する構成ブロックファイルを管理する分割されたＤＢ（群）（図３参照）である。メタ情報ＤＢ（群）１０９は、各ファイルのメタ情報を格納した分割ＤＢ（図２参照）である。ファイル構成ＤＢ（群）１１０は、各ファイルがどの構成ブロックファイルで構成されているかを管理する分割ＤＢ（図４参照）である。ここで、分割ＤＢとは、１つのＤＢが複数に分割されて構成されたＤＢである（図５参照）。各ＤＢが分割ＤＢとして取り扱われている理由は、ＷＡＮ経由でオンラインストレージサービスにＤＢ情報をアップロードする際に、更新のあった部分のみアップロードすることで、データの転送効率を向上するためであり、更新された分割ＤＢを管理するために、容量拡張モジュール内で、それぞれの分割ＤＢ群に対して、分割ＤＢ管理テーブルを保持している。
【００２６】
一方、オンラインストレージサービス１０５の記憶領域内には、構成ブロックファイル群１１３と、メタ情報ＤＢファイル群１１４と、構成ブロックＤＢファイル群１１５と、ファイル構成ＤＢファイル群１１６が保存される。構成ブロックファイル群１１３は、重複排除後の構成ブロックファイルの集合である。メタ情報ＤＢファイル群１１４は、ファイルサーバ１０３上のメタ情報ＤＢ群１０９のＤＢファイル群である。同様に、構成ブロックＤＢファイル群１１５は、構成ブロックＤＢ群１０８のＤＢファイル群である。ファイル構成ＤＢファイル群１１６は、ファイル構成ＤＢ群１１０のＤＢファイル群である。
【００２７】
ここで、オンラインストレージサービス１０５として、例えばAmazon S3を想定した場合、記憶領域は「バケット」に相当する。また、容量拡張モジュール１０７の具体的な実装例として、バケットを特定のディレクトリにマウントするカーネルモジュール（例えば、FUSEベースのファイルシステムモジュール）が考えられる。以下、上記の実装を仮定して説明を進めるが、これにより発明が限定されるものではない。
【００２８】
＜メタ情報ＤＢ＞
図２は、メタ情報ＤＢ１０９の構成例を示す図である。メタ情報ＤＢ１０９は、ファイルやディレクトリの属性を管理するためのテーブルで構成される。メタ情報ＤＢ１０９により、各ファイルとディレクトリとの関係が分かる。
【００２９】
当該テーブルは、構成する属性として、例えば、ファイル・ディレクトリＩＤ２０１、親ディレクトリＩＤ２０２、ファイル・ディレクトリ名２０３、及びＳｔａｔ情報２０４を有している。
【００３０】
ファイル・ディレクトリＩＤ２０１は、ファイルやディレクトリを識別する固有のＩＤである。親ディレクトリＩＤ２０２は、マウントしたフォルダ内で構築されたディレクトリ構造における、当該ファイル・ディレクトリＩＤ２０１のファイル、またはディレクトリの親ディレクトリのファイル・ディレクトリＩＤ２０１である。ファイル・ディレクトリ名２０３は、当該ファイル・ディレクトリＩＤ２０１で指定されたファイル・ディレクトリの名前情報である。Ｓｔａｔ情報２０４は、更新日時、サイズ、モードといったＳｔａｔ構造体のデータを格納している。
【００３１】
＜構成ブロックＤＢ＞
図３は、構成ブロックＤＢ１０８の構成例を示す図である。構成ブロックＤＢ１０８は、ファイルを構成する各ブロック（チャンクとも言う）の属性を管理するためのテーブルで構成される。当該テーブルは、構成する属性として、構成ブロックファイルＩＤ３０１、ハッシュ値３０２、及び参照カウント３０３を有している。
【００３２】
構成ブロックファイルＩＤ３０１は、重複排除処理後のオンラインストレージサービスに保存対象となる構成ブロックファイルの識別ＩＤである。また、ハッシュ値３０２は、構成ブロックファイルのハッシュ値であり、ＭＤ５やＳＨＡ２５６といったハッシュアルゴリズムで計算された値が格納されている。また、参照カウント３０３は、当該構成ブロックファイルを構成要素としているファイルがあった場合の、参照数を示したものである。参照カウント３０３が０になった時点で、当該構成ブロックファイルがどのファイルの構成要素でも無くなったことを意味し、エントリが構成ブロックＤＢ１０８から削除される。
【００３３】
＜ファイル構成ＤＢ＞
図４は、ファイル構成ＤＢ１１０の構成例を示す図である。ファイル構成ＤＢ１１０は、各ファイルがどのようなブロック（チャンク）の集合で構成されるかを管理するためのテーブルである。当該テーブルは、属性として、ファイル・ディレクトリＩＤ４０１、構成リストポインタ４０２を有している。
【００３４】
構成リストポインタ４０２は、構成リスト４０３を指し示すポインタを格納している。構成リスト４０３は、構成ブロックファイルＩＤ４０４がリスト構造で格納されている。個々のファイルは、構成ブロックファイルの集まりで構成されるが、本テーブルはその構成情報を管理している。即ち、構成リスト４０３内の構成ブロックファイルＩＤ４０４のリストは、先頭から順番に、当該ファイル・ディレクトリＩＤ４０１のファイルを構成する構成ブロックファイルの順列を示している。当該テーブルからは、例えば、ファイル・ディレクトリＩＤ＝00・・・01で示されるファイルは、ｂ００、ｂ０１、・・・の構成ブロックファイルによって構成されることが分かる。
【００３５】
＜分割ＤＢへのアクセス処理＞
図５は、分割ＤＢへのアクセス処理の概念を説明するための図である。ファイルサーバ１０３内で取り扱うＤＢとして、構成ブロックＤＢ群１０８、メタ情報ＤＢ群１０９、ファイル構成ＤＢ群１１０の３つのＤＢは、いずれも分割ＤＢであり、図５は３つの分割ＤＢに関するアクセス処理の概要について示している。
【００３６】
図５において、分割ＤＢクエリモジュール５０１は、容量拡張モジュール１０７内にあるモジュールであり、分割ＤＢに対するクエリを発行するモジュールである。あるキー値でファイルを検索したい場合、分割ＤＢクエリモジュール５０１は、キー値のハッシュ値を計算し、分割ＤＢ管理テーブル５０５に問い合わせる。そして、分割ＤＢクエリモジュール５０１は、どの分割ＤＢに格納されているかを示す分割ＤＢ識別番号を取得し、対応する分割ＤＢに対してクエリを発行する。
【００３７】
また、分割ＤＢクエリモジュール５０１は、分割ＤＢに対する更新用のクエリの場合は、分割ＤＢ管理テーブル内の対応するエントリにあるＤｉｒｔｙフラグをＯＮにして、定期的な同期処理後に更新された分割ＤＢを管理する。
【００３８】
＜分割ＤＢ管理テーブル＞
図６は、分割ＤＢ管理テーブルの構成例を示す図である。分割ＤＢ管理テーブル５０５は、属性として、分割ＤＢ識別番号６０１、格納先分類用ハッシュ値６０２、及びＤｉｒｔｙフラグ６０３を有している。また、分割ＤＢ管理テーブル５０５は、構成ブロックＤＢ１０８、メタ情報ＤＢ１０９、及びファイル構成ＤＢ１１０のそれぞれについて存在する。
【００３９】
分割ＤＢ識別番号６０１は、個々の分割ＤＢに付されたＩＤであり、格納先分類用ハッシュ値６０２は、検索のキー値が与えられたときに、そのハッシュ値を計算してどの分割ＤＢにデータが格納されているかを示すためのハッシュ値である。また、Ｄｉｒｔｙフラグ６０３は、対応する分割ＤＢが、オンラインストレージサービスとの同期処理以降に更新されたかどうかを示すフラグであり、次回同期処理時のアップロード対象とするか否かを判定するのに使用される。
【００４０】
＜ファイルオープン処理＞
図７は、マウントフォルダへのファイルオープン処理について説明するためのフローチャート図である。
【００４１】
マウントフォルダ内のファイルに対してＯＰＥＮ要求が発行されると、容量拡張モジュール１０７は、ＯＰＥＮ要求を受信し（ステップ７０１）、ＯＰＥＮ要求されているファイルのキャッシュブロックファイルが二次記憶装置１１１内に存在するかどうかを確認する（ステップ７０２）。
【００４２】
キャッシュブロックファイルが二次記憶装置１１１内に存在する場合、容量拡張モジュール１０７は、キャッシュブロックファイル群を格納しているフォルダをオープンして、そのファイル識別子を上位に返す（ステップ７０３）。
【００４３】
キャッシュブロックファイルが二次記憶装置１１１内に存在しない場合、容量拡張モジュール１０７は、キャッシュブロックファイル群を格納するためのフォルダを二次記憶装置１１１上に生成し、そのファイル識別子を上位に返す（ステップ７０４）。
【００４４】
＜ファイル読込処理＞
図８は、マウントフォルダへのファイル読込み処理について説明するためのフローチャートである。
【００４５】
マウントフォルダ内のファイルに対してＲＥＡＤ要求が発行されると、容量拡張モジュール１０７は、ＲＥＡＤ要求を受信し（ステップ８０１）、オフセットとサイズから、ＲＥＡＤ要求されているファイルの、どのブロックファイルへの要求かを判別し、対応するキャッシュブロックファイルが二次記憶装置内に存在するか否かを確認する（ステップ８０２）。
【００４６】
キャッシュブロックが二次記憶装置１１１内に存在する場合、容量拡張モジュール１０７は、当該キャッシュブロックファイル群から必要なデータを読み込んで、ＲＥＡＤバッファに詰めて要求元に返す（ステップ８０８）。
【００４７】
キャッシュブロックが二次記憶装置１１１内に存在しない場合、容量拡張モジュール１０７は、ＲＥＡＤ要求の引数であるオフセット値とサイズから、ファイル構成ＤＢを検索して、ダウンロード対象となる構成ブロックファイルＩＤを取得する（ステップ８０３）。そして、容量拡張モジュール１０７は、取得した構成ブロックファイルＩＤからオンラインストレージサービス１０５上の格納先ＵＲＩを解決してダウンロードし、キャッシュに保存（ステップ８０４）すると共に、更に保存したキャッシュブロックファイル群１１２から、必要データを読み込んでＲＥＡＤバッファに詰めて要求元に返す（ステップ８０５）。
【００４８】
＜ファイル書き込み処理＞
図９は、マウントフォルダへのファイル書込み処理について説明するためのフローチャートである。
【００４９】
マウントフォルダ内のファイルに対してＷＲＩＴＥ要求が発行されると、容量拡張モジュール１０７は、ＷＲＩＴＥ要求を受信し（ステップ９０１）、オフセットとサイズから、ＷＲＩＴＥ要求されているファイルの、どのブロックファイルへの要求かを判別し、対応するキャッシュブロックファイルが二次記憶装置内に存在するか否かを確認する（ステップ９０２）。
【００５０】
キャッシュブロックファイルが二次記憶装置内に存在する場合、容量拡張モジュール１０７は、対応するキャッシュブロックファイル群にデータを上書きし、サイズ情報を要求元に返す（ステップ９０５）。
【００５１】
キャッシュブロックファイルが二次記憶装置内に存在しない場合、容量拡張モジュール１０７は、新規にキャッシュブロックファイル群の書込みを行い、サイズ情報を要求元に返す（ステップ９０３）と共に、書込み箇所に対応したブロックと更新した分割ＤＢ群のＤｉｒｔｙフラグをセットして、更新が発生したことを記録する（ステップ９０４）。
【００５２】
＜ファイル削除処理＞
図１０は、マウントフォルダへのファイル削除処理（削除予約処理）について説明するためのフローチャートである。
【００５３】
マウントフォルダ内のファイル・ディレクトリに対して削除要求が発行されると、容量拡張モジュール１０７は、削除要求を受信し（ステップ１００１）、メタ情報ＤＢ群から削除対象となるファイル、またはディレクトリのエントリを削除する（ステップ１００２）。
【００５４】
その後、容量拡張モジュール１０７は、削除対象のファイル・ディレクトリＩＤを、容量拡張モジュールが管理する削除ファイル・ディレクトリリスト（図示せず）に登録する（ステップ１００３）。ここでは、削除対象をリストに登録され、実際の削除は所定のタイミングで実行される。つまり、データを直ぐに削除するのではなく、所定のタイミングで消去するファイルである子をと認識するためにリストに登録される。
【００５５】
さらに、容量拡張モジュール１０７は、ローカルに削除対象となるファイルのキャッシュブロックファイル群が保存されている場合、それらのファイルを削除する（ステップ１００４）。キャッシュされているデータに関しては、重複排除処理されていない。よって、キャシュされているデータの削除は、ステップ１００２及び１００３で実行される処理とは連動する処理ではないため、削除要求を受けた後であれば、どのタイミングで実行するようにしても良い。
【００５６】
＜データアップロード処理＞
図１１は、キャッシュデータのアップロード処理を説明するためのフローチャートである。容量拡張モジュール１０７は、指定された時間間隔で、ファイルサーバ内の更新データをオンラインストレージサービスにアップロードして同期を取るためのアップロード処理スレッドを起動する。
【００５７】
本スレッドでは、容量拡張モジュール１０７は、まず、更新のあったキャッシュブロックファイル群に対して、個々に重複排除処理を適用し、当該キャッシュブロックファイルが既に登録済みの構成ブロックファイル群に含まれていないかどうかを調べる（ステップ１１０１）。重複排除処理の詳細については、図１２で後述する。図１２を見れば分かるように、ファイル更新の場合には、ステップ１１０１の処理が終了すると、ＤｉｒｔｙフラグがＯＮになった状態となっている。ステップ１２０６でＤｉｒｔｙフラグがＯＮにセットされるためである。
【００５８】
容量拡張モジュール１０７は、重複排除処理を行い、重複のない新規登録されたキャッシュブロックファイル群を順次、オンラインストレージサービス１０５にアップロードする（ステップ１１０２）。
【００５９】
次に、容量拡張モジュール１０７は、上述した削除ファイル・ディレクトリリストとファイル構成ＤＢ群１１０を参照し、削除されたファイルを構成する構成ブロックファイルについて、構成ブロックＤＢ群１０８の参照カウントを１ずつ減らし、ファイル構成ＤＢ群１１０内の対応するエントリを削除し、対応する分割ＤＢのＤｉｒｔｙフラグをＯＮにする（ステップ１１０３）。
【００６０】
そして、容量拡張モジュール１０７は、構成ブロックＤＢ群１０８の参照カウントが０になったエントリを削除し、対応する構成ブロックファイルをオンラインストレージサービス１０５から削除する（ステップ１１０４）。
【００６１】
その後、容量拡張モジュール１０７は、分割ＤＢに関して、それぞれの分割ＤＢ管理テーブル５０５（図６）を参照し、Ｄｉｒｔｙフラグのついた分割ＤＢファイルをアップロードする（ステップ１１０５）。
【００６２】
容量拡張モジュール１０７は、アップロードが完了した時点でアップロード処理スレッドを終了し、ファイルサーバとオンラインストレージサービス間のデータ同期処理を終了する。
【００６３】
＜重複排除処理＞
図１２は、キャッシュブロックファイルの重複排除処理について説明するためのフローチャートである。
【００６４】
チェック対象となるキャッシュブロックファイルが与えられると、容量拡張モジュール１０７は、まず、当該キャッシュブロックファイルのハッシュ値を取得する（ステップ１２０１）。
【００６５】
次に、容量拡張モジュール１０７は、構成ブロックＤＢ群１０８を検索し、同じハッシュ値のブロックがＤＢ群内に存在するかどうかを確認する（ステップ１２０２）。
【００６６】
同じハッシュ値のファイルの存在を検証した結果、存在しない場合（ステップ１２０３でＮｏの場合）、容量拡張モジュール１０７は、新規に構成ブロックＤＢにエントリを追加登録して（ステップ１２０７）、構成ブロックＤＢ群１０８の中の更新した分割ＤＢに対応する、分割ＤＢ管理テーブル５０５上のＤｉｒｔｙフラグをＯＮにする（ステップ１２０６）。
【００６７】
一方、同じハッシュ値のファイルが存在する場合（ステップ１２０３でＹｅｓの場合）、容量拡張モジュール１０７は、構成ブロックＤＢ群１０８内の同一ハッシュ値のエントリの参照カウントを１つ上げ（ステップ１２０４）、ファイル構成ＤＢ群１１０の当該キャッシュブロックファイルに対応する、構成リスト内の構成ブロックファイルＩＤを更新する（ステップ１２０５）。そして、容量拡張モジュール１０７は、更新された構成ブロックＤＢ群１０８、及びファイル構成ＤＢ群１１０の分割ＤＢに対応する、分割ＤＢ管理テーブル５０５上のＤｉｒｔｙフラグをＯＮにする（ステップ１２０６）。
【００６８】
以上の構成を採ることにより、オンラインストレージサービス１０５上にデータを保存する際に、ローカル側のファイルサーバ１０３内で重複排除によるデータ圧縮を行うことで、オンラインストレージサービス１０５に保管するデータ量や通信量を削減でき、課金量を節減することができる。また、通信量を削減することで、同期処理やダウンロード処理の高速化も実現することができる。更に、メタ情報ＤＢや構成ブロックＤＢ等のＤＢを分割して、更新部分を管理し、更新のあった部分のみオンラインストレージサービスにアップロードする仕組みを取り入れることで、同期処理の高速化を実現することができる。
【００６９】
＜まとめ＞
本実施形態では、構成ブロックＤＢと、ファイル構成ＤＢと、メタ情報ＤＢはそれぞれ、格納情報を複数に分割して構成される複数の分割データベースで構成されている。構成ブロックＤＢに格納されている複数の構成ブロックにおける重複を排除し、重複排除された構成ブロック群が生成される。また、構成ブロックＤＢでは、複数の構成ブロックのそれぞれが他のファイルで共通に用いられている度合いを示す重複度の情報（参照カウント）が管理される。そして、重複排除された構成ブロック群と、複数の構成ブロックの構成情報と、メタ情報は、オンラインストレージサービスにアップロードされる。このようにすることにより、データの重複を排除した状態で、オンラインストレージサービスに保存することができるようになり、利用容量や通信量に対する課金量を節減することができる。
【００７０】
さらに、本実施形態では、追加又は更新された構成ブロックが構成ブロックＤＢ内の複数の構成ブロックと重複するか否か判断される。そして、重複する構成ブロックについて、重複度の情報（参照カウント値）が更新される（参照カウント値がインクリメントされる）。また、更新された構成ブロックを格納する、構成ブロックＤＢ内の分割ＤＢの情報がオンラインストレージサービスにアップロードされる。このように、更新された部分である分割ＤＢのみオンラインストレージサービスにアップロードするので、ファイルサーバ（情報提供サーバ）とオンラインストレージサービス間の通信量を削減し、転送スピードを向上させることができる。
【００７１】
さらに、構成ブロックＤＢにおいて構成ブロックのデータに更新があった場合、更新された構成ブロックが属する分割ＤＢに変更が発生したこと示す変更発生情報（Ｄｉｒｔｙフラグ）を管理する。つまり、Ｄｉｒｔｙフラグが当該分割ＤＢを管理する情報に付与される。そして、更新発生情報に従って、更新された構成ブロックが属する分割ＤＢのみがオンラインストレージサービスにアップロードされる。また、構成ブロックが新たに追加された場合も同様であり、追加された構成ブロックについて、構成ブロックＤＢにおいて重複する他の構成ブロックがないと判断した場合には、追加された構成ブロックが属する分割ＤＢに変更が発生したことを示す変更発生情報（Ｄｉｒｔｙフラグ）が分割ＤＢを管理する情報に付与される。そして、変更発生情報に従って、追加された構成ブロックが属する分割ＤＢのみがオンラインストレージサービスにアップロードされる。このように、データベース上の情報が更新されたり、新たに情報が追加されたりしても、データベース上の全ての情報をオンラインストレージサービスにアップロードするのではなく、更新された情報を含む分割ＤＢのみをアップロードするので、アップロード時の通信量を削減しながら、更新データの同期処理を実行することができるようになる。
【００７２】
重複度の情報（参照カウント値）は、構成ブロックが他のファイルで参照されている数を示すカウント値で構成されている。構成ブロックの削除要求がなされると、それに応答して、参照カウント値が減らされる。このカウント値が０となった構成ブロックがある場合、カウント値が０となった構成ブロックが属する分割ＤＢに構成ブロックの削除が発生したこと示す変更発生情報（Ｄｉｒｔｙフラグ）が分割ＤＢを管理する情報に付与される。そして、変更発生情報に従って、削除された構成ブロックが属する分割ＤＢがオンラインストレージサービスにアップロードされる。
【００７３】
ファイル読込要求が利用者端末からなされると、ファイル読込み要求の対象となるファイルに対応する構成ブロックが、ファイル構成ＤＢに基づいて特定される。そして、特定した構成ブロックについて、オンラインストレージサービス上の情報格納先が特定される（格納先ＵＲＬが解決される）。次に、対象となる構成ブロックがオンラインストレージサービスからダウンロードされ、情報提供用計算機内にキャッシュされ、読込みデータを構成して利用者端末に提供される。このようにすることにより、オンラインストレージサービスとファイルサーバとの通信データを削減しながら、ＲＥＡＤ時のデータダウンロードにおける性能向上を実現することができる。
【００７４】
なお、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００７５】
また、実施形態で示された各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上記各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現しても良い。各機能等を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録或いは記憶装置、またはＩＣカード、ＳＤカード、ＤＶＤ等の記録或いは記憶媒体に格納することができる。
【００７６】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【符号の説明】
【００７７】
１０１…利用者端末
１０２…ＬＡＮ
１０３…ファイルサーバ
１０４…ＷＡＮ
１０５…オンラインストレージサービス
１０６…ＣＩＦＳ／ＮＦＳサービス
１０７…容量拡張モジュール
１０８…構成ブロックＤＢ群
１０９…メタ情報ＤＢ群
１１０…ファイル構成ＤＢ群
１１１…二次記憶装置
１１２…キャッシュブロックファイル群
１１３…構成ブロックファイル群
１１４…メタ情報ＤＢファイル群
１１５…構成ブロックＤＢファイル群
１１６…ファイル構成ＤＢファイル群
１１７…記憶領域
２０１…ファイル・ディレクトリＩＤ
２０２…親ディレクトリＩＤ
２０３…ファイル・ディレクトリ名
２０４…Ｓｔａｔ情報
３０１…構成ブロックファイルＩＤ
３０２…ハッシュ値
３０３…参照カウント
４０１…ファイル・ディレクトリＩＤ
４０２…構成リストポインタ
４０３…構成リスト
４０４…構成ブロックファイルＩＤ
５０１…分割ＤＢクエリモジュール
５０２…分割ＤＢ
５０５…分割ＤＢ管理テーブル
６０１…分割ＤＢ識別番号
６０２…格納先分類用ハッシュ値
６０３…Ｄｉｒｔｙフラグ
【図１】
0005485866.tif 000002
【図２】
0005485866.tif 000003
【図３】
0005485866.tif 000004
【図４】
0005485866.tif 000005
【図５】
0005485866.tif 000006
【図６】
0005485866.tif 000007
【図７】
0005485866.tif 000008
【図８】
0005485866.tif 000009
【図９】
0005485866.tif 000010
【図１０】
0005485866.tif 000011
【図１１】
0005485866.tif 000012
【図１２】
0005485866.tif 000013