(57)【要約】【課題】データへのアクセス速度を向上させる技術を提供する。【解決手段】格納処理部１１３は，ストレージ１１にキャッシュデータを格納する。格納位置記録部１０４は，ストレージ１１に格納されたキャッシュデータの物理的な格納位置を，管理情報記憶部１５０の管理情報に記録する。削除処理部１０３は，ストレージ１１に格納されたキャッシュデータを削除する。復元可能性算出部１０９は，削除されたキャッシュデータの復元可能性を求める。復元データ取得部１１１は，取得が要求されたデータが削除されたキャッシュデータである場合に，該削除されたデータの復元可能性の高さが所定以上であれば，管理情報から該削除されたデータの格納位置を取得し，ストレージ１１の該取得した格納位置からデータを取得する。【選択図】図３
2014203280.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに，
記憶装置にデータを格納し，
前記記憶装置に格納されたデータの格納位置を，記憶部に記憶された管理情報に記録し，
前記記憶装置に格納されたデータを削除し，
削除されたデータの復元可能性を求め，
取得が要求されたデータが削除されたデータである場合に，該削除されたデータの復元可能性の高さが所定以上であれば，前記管理情報から該削除されたデータの格納位置を取得し，前記記憶装置の該取得した格納位置からデータを取得する
処理を実行させるためのデータ管理プログラム。
【請求項２】
前記コンピュータに，さらに，
取得が要求されたデータが削除されたデータである場合に，該削除されたデータの復元可能性の高さが所定以下であれば，前記コンピュータの外部からネットワークを介してデータを取得する
処理を実行させるための請求項１に記載のデータ管理プログラム。
【請求項３】
前記コンピュータに，さらに，
データを複数の部分データに分割し，
部分データを前記記憶装置に格納し，
前記記憶装置に格納された部分データの格納位置を，記憶部に記憶された管理情報に記録し，
前記記憶装置に格納された部分データを削除し，
削除された部分データの復元可能性を求め，
取得が要求されたデータが削除された部分データを含むデータである場合に，該削除された部分データの復元可能性の高さが所定以上であれば，前記管理情報から該削除された部分データの格納位置を取得し，前記記憶装置の該取得した格納位置からデータを取得する
処理を実行させるための請求項１または２に記載のデータ管理プログラム。
【請求項４】
前記コンピュータに，さらに，
取得が要求されたデータが削除された部分データを含むデータである場合に，該削除された部分データの復元可能性の高さが所定以下であれば，前記コンピュータの外部からネットワークを介してデータを取得する
処理を実行させるための請求項３に記載のデータ管理プログラム。
【請求項５】
前記復元可能性を求める処理では，データが削除されたときからの前記記憶装置の使用領域の変化量，データが削除されたときからの前記記憶装置の使用領域の正の変化量の和，削除されたデータのサイズ，または前記記憶装置の空き領域の量の少なくともいずれかを用いて，削除されたデータの復元可能性を求める
ことを特徴とする請求項１から請求項４までのいずれかに記載のデータ管理プログラム。
【請求項６】
データの管理情報を記憶する管理情報記憶部と，
記憶装置にデータを格納する格納処理部と，
前記記憶装置に格納されたデータの格納位置を，前記管理情報に記録する格納位置記録部と，
前記記憶装置に格納されたデータを削除する削除処理部と
削除されたデータの復元可能性を求める復元可能性算出部と，
取得が要求されたデータが削除されたデータである場合に，該削除されたデータの復元可能性の高さが所定以上であれば，前記管理情報から該削除されたデータの格納位置を取得し，前記記憶装置の該取得した格納位置からデータを取得する復元データ取得部とを備える
ことを特徴とするデータ管理装置。
【請求項７】
コンピュータが，
記憶装置にデータを格納し，
前記記憶装置に格納されたデータの格納位置を，記憶部に記憶された管理情報に記録し，
前記記憶装置に格納されたデータを削除し，
削除されたデータの復元可能性を求め，
取得が要求されたデータが削除されたデータである場合に，該削除されたデータの復元可能性の高さが所定以上であれば，前記管理情報から該削除されたデータの格納位置を取得し，前記記憶装置の該取得した格納位置からデータを取得する処理を実行する
ことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，記憶装置に格納されたデータの管理を行うデータ管理プログラム，データ管理装置およびデータ管理方法に関するものである。
【背景技術】
【０００２】
例えば，ユーザ装置からウェブ上に存在する様々なリソースやコンテンツにアクセスする場合，遠く離れたウェブ上のサーバへのアクセスとなるため，データの取得に時間がかかる。その待ち時間を短縮するために，ウェブ上のデータをユーザ装置のローカルの記憶装置に一時的に保存しておく，いわゆるキャッシュの技術が広く用いられている。
【０００３】
なお，キャッシュデータを未使用領域に格納してその格納位置を管理し，キャッシュデータを取得する際には，格納位置から取得したキャッシュデータが，オペレーティングシステムが該格納位置を使用したことにより破壊されたかを判断し，破壊されていない場合に該キャッシュデータを出力する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１２２６０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば，ウェブなどのユーザ装置の外部にあるデータへの高速なアクセスを図るためには，ユーザ装置において，データをキャッシュしておくキャッシュ領域に記憶装置の領域の多くを割り当て，多くのデータを保存しておくことが望ましい。しかし，記憶装置の領域の多くをキャッシュ領域に割り当ててしまうと，他のプロセスが記憶装置のリソースを使えなくなるという問題がある。そのため，キャッシュ領域として割り当てできる記憶装置の領域は限られ，外部データへのアクセスの速度向上も限られてしまう。
【０００６】
一側面では，本発明は，データへのアクセス速度を向上させる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１態様では，開示するプログラムは，コンピュータを次のように機能させる。すなわち，前記プログラムは，前記プログラムがインストールされて実行されるコンピュータに，記憶装置にデータを格納し，記憶装置に格納されたデータの格納位置を，記憶部に記憶された管理情報に記録し，記憶装置に格納されたデータを削除し，削除されたデータの復元可能性を求め，取得が要求されたデータが削除されたデータである場合に，該削除されたデータの復元可能性の高さが所定以上であれば，管理情報から該削除されたデータの格納位置を取得し，記憶装置の該取得した格納位置からデータを取得する処理を実行させる。
【発明の効果】
【０００８】
１態様では，データへのアクセス速度が向上する。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態によるデータ管理の技術を利用する対象のシステムの例を示す図である。
【図２】キャッシュデータの管理の例を説明する図である。
【図３】本実施の形態１によるユーザ装置が備えるデータ管理部の構成例を示す。
【図４】本実施の形態によるデータ管理部を備えるユーザ装置のハードウェア構成例を示す図である。
【図５】本実施の形態１によるファイル管理テーブルの例を示す図である。
【図６】本実施の形態によるストレージログ管理テーブルの例を示す図である。
【図７】本実施の形態によるデータ管理を説明する図である。
【図８】ストレージの使用領域の時間変化の例を示す図である。
【図９】本実施の形態のデータ管理部によるタイマ処理フローチャートである。
【図１０】本実施の形態１のデータ管理部によるキャッシュ制御処理フローチャートである。
【図１１】本実施の形態１のデータ管理部によるデータ取得処理フローチャートである。
【図１２】本実施の形態１のデータ管理部による外部データ取得処理フローチャートである。
【図１３】本実施の形態１のデータ管理部によるキャッシュデータ取得処理フローチャートである。
【図１４】本実施の形態１のデータ管理部によるデータ復元処理フローチャートである。
【図１５】本実施の形態２によるキャッシュデータのチャンク化について説明する図である。
【図１６】本実施の形態２によるユーザ装置が備えるデータ管理部の構成例を示す。
【図１７】本実施の形態２によるファイル管理テーブルの例を示す図である。
【図１８】本実施の形態２によるチャンク管理テーブルの例を示す図である。
【図１９】本実施の形態２のデータ管理部によるキャッシュ制御処理フローチャートである。
【図２０】本実施の形態２のデータ管理部によるチャンクデータ削除処理フローチャートである。
【図２１】本実施の形態２のデータ管理部によるデータ取得処理フローチャートである。
【図２２】本実施の形態２のデータ管理部によるチャンクデータ復元処理フローチャートである。
【図２３】本実施の形態２のデータ管理部によるチャンクデータ復元処理フローチャートである。
【発明を実施するための形態】
【００１０】
以下，本実施の形態について，図を用いて説明する。
【００１１】
図１は，本実施の形態によるデータ管理の技術を利用する対象のシステムの例を示す図である。
【００１２】
図１に示すシステムにおいて，ユーザ装置１０は，例えばＰＣ（Personal Computer ）やスマート端末などのユーザが操作するコンピュータである。ユーザ装置１０は，ローカルのストレージ１１を備える。ストレージ１１は，例えばＨＤＤ（Hard Disk Drive ）やＳＤＤ（Solid State Drive ）などの記憶装置の一例である。図１に示す例において，ユーザ装置１０は，操作するユーザの指示に従って，インターネットなどのネットワーク６０を介したウェブ５０上のコンテンツやリソースにアクセスする。
【００１３】
例えば，ユーザ装置１０は，ウェブ５０上のサーバ５１にアクセスし，サーバ５１のストレージ５２にあるデータをダウンロードする。このとき，ユーザ装置１０は，ローカルのストレージ１１にダウンロードしたデータを一時保存しておく。このように，外部から取得したデータをローカルの記憶装置に一時保存する技術はキャッシュと呼ばれ，一時保存されるデータはキャッシュデータなどと呼ばれる。ユーザが同じデータの利用を再び要求した場合には，ユーザ装置１０は，ウェブ５０からデータを取得するのではなく，ローカルのストレージ１１に格納されたキャッシュデータを取得する。このようなキャッシュの技術により，目的とするデータへのアクセス速度が向上し，データ取得の待ち時間を短くすることができる。
【００１４】
図２は，キャッシュデータの管理の例を説明する図である。
【００１５】
図２には，ストレージ１１の全領域を使用領域と空き領域とに分けたイメージが示されている。図２に示すストレージ１１のイメージにおいて，全領域は，データの格納が可能なすべての領域を示す。使用領域は，ファイルシステムの管理下で，すでに何らかのデータが格納されている領域を示す。空き領域は，ファイルシステムによるファイル管理下で，データが格納されていない未使用の領域を示す。図２に示すストレージ１１のイメージにおいて，キャッシュ領域は，使用領域中で特にキャッシュデータが格納された領域を示す。
【００１６】
なお，図２に示すイメージでは，便宜上，使用領域，空き領域，キャッシュ領域がそれぞれ連続する領域で示されているが，実際のストレージ１１上では，様々なデータの格納や削除が繰り返される状況で，各領域がばらばらに入り混じった状態となる。
【００１７】
データのキャッシュを行う場合に，キャッシュするデータの量を無制限とすると，ストレージ１１のリソースを，蓄積されたキャッシュデータで消費してしまう可能性がある。そのため，空き領域の容量や全領域に対する割合などに応じてキャッシュ領域を制限したり，あらかじめ決められた容量にキャッシュ領域を制限するなどの制御が行われる。
【００１８】
キャッシュ領域を制限する制御を行う一例として，最近使用したデータを優先的にキャッシュし，長く使用していない古いキャッシュデータを削除する方法がある。例えば，図２の例に示すように，データａ，データｂ，データｃの３つのデータがキャッシュデータとしてストレージ１１に格納されている状況で，データｄがウェブ５０からダウンロードされ，使用されたものとする。データｄをキャッシュするとキャッシュ領域が制限を超えてしまう場合，最も長く使用していないデータａが削除され，最新のデータｄがキャッシュデータとしてストレージ１１に格納される。
【００１９】
このようなキャッシュの技術の運用において，ウェブ５０から取得するデータへの高速なアクセスのためには，ストレージ１１の領域の多くをキャッシュ領域として使用できるようにすることが望ましい。しかし，キャッシュ領域として多くの領域を使用してしまうと，他のプロセスが利用できる空き領域が少なくなってしまい，ストレージ１１のリソースを有効に活用できないという問題が発生する。
【００２０】
以下では，ウェブ５０から取得するデータへの高速なアクセスとストレージ１１のリソースの有効活用を可能とする，本実施の形態によるデータ管理の技術の例を説明する。
【００２１】
なお，以下で説明する本実施の形態によるデータ管理の例は，ユーザ装置１０でウェブ５０上のオンラインストレージを利用する場合の例である。オンラインストレージは，ユーザが外部のストレージリソースを借りて利用できるようにしたサービスである。このサービスでは，例えば，ユーザは，自身が操作する複数のユーザ装置１０から，ネットワーク６０を介して自身が借りたストレージリソースにアクセスし，データの読み書きができる。例えば，図１に示すシステムにおいて，サーバ５１は，オンラインストレージのサービスを提供するサーバである。サーバ５１のストレージ５２には，ユーザがユーザ装置１０でダウンロードして利用可能なデータが保存されている。
【００２２】
〔実施の形態１〕
図３は，本実施の形態１によるユーザ装置が備えるデータ管理部の構成例を示す。
【００２３】
本実施の形態１のユーザ装置１０は，図３に示すデータ管理部１００を備える。図３に示すデータ管理部１００は，オンラインストレージを利用するアプリケーションによって実現されるデータ管理を行う機能部の一例を示す。
【００２４】
ファイルシステム１２は，ユーザ装置１０のＯＳ（Operating System）により提供される，ユーザ装置１０のリソースを操作する機能である。データ管理部１００は，ファイルシステム１２を介して，ストレージ１１へのデータの格納や，ストレージ１１からのデータの取得などを行う。
【００２５】
データ管理部１００は，インデックス取得部１０１，ストレージ監視部１０２，削除処理部１０３，格納位置記録部１０４，データ取得検出部１０５，データ取得判断部１０６，キャッシュデータ取得部１０７，外部データ取得部１０８，復元可能性算出部１０９，復元可能性判断部１１０，復元データ取得部１１１，データチェック部１１２，格納処理部１１３を備える。また，データ管理部１００は，管理情報記憶部１５０，ストレージ情報記憶部１６０の記憶部を備える。
【００２６】
管理情報記憶部１５０は，データの管理情報を記憶する記憶部である。データの管理情報には，例えば，ストレージ１１に格納されている状態，格納位置，サイズなど，管理対象のデータに関する様々な情報が記録されている。
【００２７】
ストレージ情報記憶部１６０は，ストレージログ情報を記憶する記憶部である。ストレージログ情報には，例えば，ストレージ１１の全領域，使用領域，空き領域の量などの，ストレージ１１に関する情報のログが記録されている。
【００２８】
インデックス取得部１０１は，ウェブ５０上のサーバ５１から，ユーザ装置１０で利用できるデータのリスト情報であるインデックス情報を取得する。ここで取得されるインデックス情報には，例えば，ユーザ装置１０で利用できるデータごとのファイル名，ファイルサイズ，データのチェックに使用するハッシュ値などの情報が含まれる。
【００２９】
ストレージ監視部１０２は，所定のタイミングでストレージ１１の情報を取得する。ここで取得するストレージ１１の情報は，例えば，ストレージ１１の全領域，使用領域，空き領域の量などである。ストレージ監視部１０２は，得られたストレージ１１の情報のログを，ストレージ情報記憶部１６０のストレージログ情報に記録する。
【００３０】
削除処理部１０３は，ストレージ１１に格納されたデータを削除する。より具体的には，削除処理部１０３は，ストレージ１１に格納されたキャッシュデータの削除をファイルシステム１２に依頼する。削除処理部１０３によるデータの削除は，ファイルシステム１２によるファイル管理上の削除であり，ストレージ１１に格納されている物理的なデータの消去ではない。
【００３１】
格納位置記録部１０４は，ストレージ１１に格納されたデータの格納位置を，管理情報記憶部１５０の管理情報に記録する。より具体的には，格納位置記録部１０４は，ストレージ１１に格納されたキャッシュデータの物理的な格納位置の情報を，ファイルシステム１２から取得し，管理情報記憶部１５０の管理情報に記録する。
【００３２】
データ取得検出部１０５は，データの取得要求を検出する。例えば，ユーザは，ユーザ装置１０を操作し，ユーザ装置１０で利用したいデータを指定する。このとき，データ取得検出部１０５は，ユーザに指定されたデータの取得要求を検出する。
【００３３】
データ取得判断部１０６は，管理情報記憶部１５０の管理情報を参照し，取得が要求されたデータをどのように取得するかを判断する。例えば，ユーザ装置１０のローカルなストレージ１１に取得が要求されたデータが存在しない場合，データ取得判断部１０６は，データを外部のウェブ５０から取得すると判断する。また，例えば，取得が要求されたデータがユーザ装置１０のローカルなストレージ１１にキャッシュデータとして格納されている場合，データ取得判断部１０６は，そのキャッシュデータをストレージ１１から取得すると判断する。また，例えば，取得が要求されたデータがユーザ装置１０のローカルなストレージ１１から削除されたデータである場合，データ取得判断部１０６は，ストレージ１１の空き領域からのデータの復元を試みると判断する。
【００３４】
キャッシュデータ取得部１０７は，ストレージ１１からキャッシュデータを取得する。外部データ取得部１０８は，ネットワークを介して，ユーザ装置１０の外部からデータを取得する。本実施の形態１では，外部データ取得部１０８は，ウェブ５０からデータを取得する。
【００３５】
復元可能性算出部１０９は，ストレージ１１から削除されたデータの復元可能性を求める。ファイルシステム１２によるファイル管理上のデータの削除では，ストレージ１１に格納されている物理的なデータは消去されない。ただし，ファイルシステム１２によるファイル管理上，データが削除された領域は空き領域となり，ファイルシステム１２によって別のデータが書き込まれる可能性がある。そのため，削除されたデータがストレージ１１上に復元可能な状態で存在するとは限らない。復元可能性算出部１０９は，削除されたデータを復元できる可能性を示す値を算出する。
【００３６】
復元可能性判断部１１０は，取得が要求されたデータがストレージ１１から削除されたデータである場合に，その削除されたデータの復元可能性の高さが所定以上であるかを判断する。データの復元可能性の高さが所定以上であれば，復元可能性判断部１１０は，ストレージ１１からデータの復元を行うと判断する。データの復元可能性の高さが所定以上でなければ，復元可能性判断部１１０は，ユーザ装置１０の外部からデータを取得すると判断する。
【００３７】
復元データ取得部１１１は，取得が要求されたデータがストレージ１１から削除されたデータである場合に，その削除されたデータの復元可能性の高さが所定以上であれば，管理情報記憶部１５０の管理情報から，その削除されたデータの格納位置を取得する。復元データ取得部１１１は，ストレージ１１上の該格納位置からデータを取得する。
【００３８】
データチェック部１１２は，取得されたデータの正常性をチェックする。より具体的には，データチェック部１１２は，所定のハッシュ関数を用いて，取得されたデータのハッシュ値を算出する。データチェック部１１２は，算出されたハッシュ値と，管理情報記憶部１５０の管理情報に記録された該当データのハッシュ値とを比較する。管理情報記憶部１５０の管理情報には，あらかじめ正常なデータから算出されたハッシュ値が記録されている。データチェック部１１２は，双方のハッシュ値が一致する場合には，取得されたデータが正常であると判断し，双方のハッシュ値が一致しない場合には，取得されたデータが正常でないと判断する。
【００３９】
格納処理部１１３は，ユーザ装置１０の外部から取得したデータや，ストレージ１１から復元したデータを，ストレージ１１に格納する。格納されたデータがキャッシュデータとなる。
【００４０】
図４は，本実施の形態によるデータ管理部を備えるユーザ装置のハードウェア構成例を示す図である。
【００４１】
データ管理部１００を実現するユーザ装置１０のコンピュータ１は，例えば，ＣＰＵ（Central Processing Unit ）２，主記憶となるメモリ３，記憶装置４，通信装置５，媒体読取・書込装置６，入力装置７，出力装置８等を備える。記憶装置４は，例えばＨＤＤ，ＳＳＤ等の外部記憶装置や補助記憶装置などである。媒体読取・書込装置６は，例えばＣＤ−Ｒ（Compact Disc Recordable ）ドライブやＤＶＤ−Ｒ（Digital Versatile Disc Recordable ）ドライブなどである。入力装置７は，例えばキーボード・マウス等の入力機器などである。出力装置８は，例えばディスプレイ等の表示装置などである。
【００４２】
図３に示すデータ管理部１００およびデータ管理部１００が備える各機能部は，コンピュータ１が備えるＣＰＵ２，メモリ３等のハードウェアと，ソフトウェアプログラムとによって実現することが可能である。コンピュータ１が実行可能なプログラムは，記憶装置４に記憶され，その実行時にメモリ３に読み出され，ＣＰＵ２により実行される。
【００４３】
コンピュータ１は，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。また，コンピュータ１は，サーバコンピュータからプログラムが転送されるごとに，逐次，受け取ったプログラムに従った処理を実行することもできる。さらに，このプログラムは，コンピュータ１で読み取り可能な記録媒体に記録しておくことができる。
【００４４】
図５は，本実施の形態１によるファイル管理テーブルの例を示す図である。
【００４５】
図５に示すファイル管理テーブル１５１は，管理情報記憶部１５０に記憶された管理情報の一例を示す。ファイル管理テーブル１５１は，管理対象のデータごとに，ファイルＩＤ，ファイル名，キャッシュフラグ，ΔＳ，ΔＳ+ ，ファイルサイズ，削除日時，アクセス日時，ハッシュ値，物理アドレス等の情報を持つ。
【００４６】
ファイルＩＤは，データを一意に識別する識別情報である。ファイル名は，データのファイルに付けられた名称である。キャッシュフラグは，データのキャッシュ状況を示す。キャッシュフラグ“０”は，ウェブ５０からのデータ取得が行われておらず，データがストレージ１１にキャッシュされていない状況を示す。キャッシュフラグ“１”は，データがウェブ５０から取得され，ストレージ１１にキャッシュされている状況を示す。キャッシュフラグ“２”は，データがストレージ１１に一度キャッシュされた後で，ファイル管理上の削除が行われた状況を示す。
【００４７】
ΔＳは，データがストレージ１１から削除されたときから最後にストレージ１１の情報が取得されたときまでのストレージ１１の使用領域の変化量を示す。ΔＳ+ は，データがストレージ１１から削除されたときから最後にストレージ１１の情報が取得されたときまでの使用領域の正の変化量の和を示す。ファイルサイズは，データのサイズを示す。削除日時は，データがストレージ１１から削除されている場合，その削除された日時を示す。アクセス日時は，データにアクセスした最新の日時を示す。ハッシュ値は，データが正常な状態であるときに所定のハッシュ関数を用いて算出されたハッシュ値である。物理アドレスは，ストレージ１１上のデータの物理的な格納位置を示す。
【００４８】
図６は，本実施の形態によるストレージログ管理テーブルの例を示す図である。
【００４９】
図６に示すストレージログ管理テーブル１６１は，ストレージ情報記憶部１６０に記憶されたストレージログ情報の一例を示す。ストレージログ管理テーブル１６１は，ストレージ１１から情報を取得したタイミングごとに，ストレージログ管理ＩＤ，全領域，使用領域，空き領域，日時等の情報を持つ。
【００５０】
ストレージログ管理ＩＤは，ストレージ１１から取得した情報のログを一意に識別する識別情報である。全領域は，ストレージ１１の全領域の量を示す。使用領域は，ストレージ１１の使用領域の量を示す。空き領域は，ストレージ１１の空き領域の量を示す。日時は，ストレージ１１の情報を取得した日時を示す。
【００５１】
図７は，本実施の形態によるデータ管理を説明する図である。
【００５２】
本実施の形態において，ウェブ５０から取得されたデータは，キャッシュデータとしてストレージ１１に格納される。このとき，新たなデータのキャッシュによりキャッシュ領域が制限を超えてしまう場合，図２で説明した例と同様に，キャッシュデータの削除が行われる。ここで行われるキャッシュデータの削除は，ファイルシステム１２によるファイル管理上の削除であり，削除されたキャッシュデータの実データは，ファイル管理上の空き領域に残った状態となる。
【００５３】
一般に，ファイルシステム１２は，データのファイルとストレージ１１上の物理的な格納位置との対応を管理している。例えば，アプリケーションからファイルを指定したデータの読み込みが要求されると，ファイルシステム１２は，指定されたファイルに対応するストレージ１１上の格納位置からデータを読み出し，アプリケーションに渡す。アプリケーションからファイルを指定したデータ削除が要求されると，ファイルシステム１２は，指定されたファイルとストレージ１１上の物理的な格納位置との対応を解消する。これにより，削除されたデータの格納領域はファイル管理上の空き領域となるが，ストレージ１１上の物理的な格納位置には，ファイル管理上では削除されたデータが実データとして存在する状態となる。
【００５４】
すなわち，ファイル管理上では削除されたデータのストレージ１１上の物理的な格納位置が分かれば，その格納位置からバイナリデータを取得して，削除されたデータを復元することが可能である。本実施の形態では，削除されたキャッシュデータのストレージ１１上の物理的な格納位置をファイル管理テーブル１５１で管理し，削除されたキャッシュデータを復元可能な状況にしておく。
【００５５】
例えば，図７に示す例において，当初は，データａ，データｂ，データｃの３つのデータが，キャッシュデータとしてストレージ１１に格納されていたものとする。その後，ウェブ５０からデータｄ，データｅ，データｆが順に取得され，キャッシュデータとしてストレージ１１に格納されるにつれて，古いキャッシュデータであるデータａ，データｂ，データｃがストレージ１１から削除される。このとき，データａ，データｂ，データｃは，ファイルシステム１２によるファイル管理上では削除されたことになっているが，図７の破線枠に示すように，ストレージ１１の空き領域に実データが残っている状態となる。本実施の形態では，図７に示すように，ファイル管理上の空き領域に存在するデータａ，データｂ，データｃの格納位置をファイル管理テーブル１５１で管理しておくことで，データの復元をできるようにしておく。
【００５６】
このように，本実施の形態のデータ管理では，擬似的にキャッシュ領域を増やすことができるため，ウェブ５０から取得するデータへのアクセスの高速化が図れ，同時に他のプロセスでも利用可能な空き領域が確保されるため，ストレージ１１のリソースを有効活用できる。
【００５７】
ただし，削除されたキャッシュデータの格納領域はファイル管理上の空き領域とされているため，その空き領域に残っているデータは，その後にユーザ装置１０で発生する別のファイルの書き込み処理により，破壊されてしまう可能性がある。そのため，取得が要求されたデータが削除されたキャッシュデータであるときに，その格納位置からバイナリデータを取得しても，そのバイナリデータから元の正しいデータを復元できない場合もある。この場合，ユーザ装置１０は，要求されたデータのウェブ５０からの取得を，あらためて行うことになる。
【００５８】
このように，まずストレージ１１の空き領域からのデータの取得を行い，そのデータが破壊されていたときにはあらためてウェブ５０からデータの取得を行うという場合のデータ取得の平均レイテンシＴL は，例えば次の式（１）で表すことができる。
【００５９】
ＴL ＝Ｐ・Ｔｖ＋（１−Ｐ）・（Ｔｖ＋Ｔｗ）        ・・・（１）
式（１）において，Ｐは，ストレージ１１の空き領域上でのデータの生存率を示す。本実施の形態の例では，削除されたキャッシュデータの復元可能性を示す値の例として，ストレージ１１の空き領域上での該データの生存確率，すなわち該データがストレージ１１の空き領域上で破壊されていない確率を示す，生存率Ｐ（０≦Ｐ≦１）を用いるものとする。また，式（１）において，Ｔｖは，ストレージ１１の空き領域からデータを取得する際の待ち時間を示す。Ｔｗは，ウェブ５０からデータを取得する際の待ち時間を示す。
【００６０】
Ｔｖについては，例えば，実際にストレージ１１の空き領域からデータを取得した際に掛かった時間のデータを集めて，統計的に見込み時間を求めることができる。また，Ｔｗについては，例えば，実際にウェブ５０からデータを取得した際に掛かった時間のデータを集めて，統計的に見込み時間を求めることができる。
【００６１】
また，本実施の形態によるデータ管理部１００の運用中でも，随時，ストレージ１１の空き領域からのデータ取得やウェブ５０からのデータ取得が行われるので，そのときに時間の計測を行って計測時間のデータを蓄積し，統計的にＴｖ，Ｔｗを求めることもできる。データ管理部１００の運用によって求められるＴｖ，Ｔｗは，データ管理部１００の運用環境に応じた適切な値となる。
【００６２】
ここで，ストレージ１１の空き領域からデータを取得することでデータ取得の高速化を図るためには，平均レイテンシＴL が，ウェブ５０からデータを取得する際の待ち時間Ｔｗを下回る必要がある。平均レイテンシＴL がウェブ５０からデータを取得する際の待ち時間Ｔｗを下回る条件の式ＴL ≦Ｔｗと，上記の式（１）とから，次の式（２）が得られる。
【００６３】
Ｐ≧Ｔｖ／Ｔｗ        ・・・（２）
式（２）は，ストレージ１１の空き領域からデータを取得することでデータ取得の高速化を図るために，生存率Ｐが満たすべき条件を示している。すなわち，生存率Ｐが式（２）の条件を満たす場合，ストレージ１１の空き領域からデータを取得することによるデータ取得の高速化の効果が期待できる。
【００６４】
例えば，Ｔｖ／Ｔｗの値を閾値Ｐthとして，データの生存率Ｐとの比較判定を行うことで，ストレージ１１の空き領域からデータを取得することを試みた方が効率がよいのか，最初からウェブ５０からデータを取得した方が効率がよいのかを判断できる。なお，閾値Ｐthとしては，必ずしもＴｖ／Ｔｗの値を用いる必要はなく，例えば，Ｔｖ／Ｔｗにある係数を掛けた値を用いる，経験的に適切と考えられる値を用いるなどの，任意の設計が可能である。
【００６５】
次に，生存率Ｐの算出の一例を説明する。ここでは，時刻ｔ0に削除されたデータの，任意時刻Ｔにおける生存率Ｐを求めるものとする。このとき，生存率Ｐは，例えば次の式（３）で求められる。
【００６６】
Ｐ＝ｋ・（１−ＦSIZE／ＳFｔ0 ）（（１−ΔＳ／ＳFｔ0 ）／ΔＳ+ ）  ・・・（３）
式（３）において，ｋは係数である。ＦSIZEは，データのファイルサイズを示す。ＳFｔ0は，データが削除された時刻ｔ0 におけるストレージ１１の空き領域の量を示す。ΔＳは，データが削除された時刻ｔ0 から任意時刻Ｔまでのストレージ１１の使用領域の変化量を示す。ΔＳ+ は，データが削除された時刻ｔ0 から任意時刻Ｔまでのストレージ１１の使用領域の正の変化量の和を示す。
【００６７】
式（３）では，ＦSIZEの値が大きいほど，すなわちデータのファイルサイズが大きいほど，生存率Ｐが低くなる。これは，ストレージ１１の空き領域上に残された削除データのサイズが大きいほど，他のデータの書き込みが削除データの領域に重なってしまうことで，削除データが破壊される可能性が高いという状況を反映したものである。
【００６８】
式（３）では，ＳFｔ0 の値が大きいほど，すなわちデータが削除された時刻ｔ0 におけるストレージ１１の空き領域の量が多いほど，生存率Ｐが高くなる。これは，ストレージ１１の空き領域の量が多いほど，他のデータの書き込みが削除データの領域に重なる可能性が低く，削除データが破壊される可能性が低いという状況を反映したものである。
【００６９】
図８は，ストレージの使用領域の時間変化の例を示す図である。
【００７０】
図８に示すように，データが削除された時刻ｔ0におけるストレージ１１の使用領域の量と，任意時刻Ｔにおけるストレージ１１の使用領域の量との差が，ΔＳとなる。式（３）では，ΔＳの値が大きいほど，すなわちデータ削除後のストレージ１１の使用領域の変化量が大きいほど，生存率Ｐが低くなる。これは，データを削除した後のストレージ１１の使用領域の変化量が大きいほど，空き領域上に残された削除データが破壊されている可能性が高いという状況を反映したものである。
【００７１】
図８に示すグラフにおいて，ストレージ１１の使用領域は，時刻ｔ0 から時刻ｔ1 では正の変化すなわち増加しており，時刻ｔ1  から時刻ｔ2 では負の変化すなわち減少しており，時刻ｔ2 から時刻Ｔでは正の変化をしている。このとき，ΔＳ+ は，時刻ｔ0 から時刻ｔ1  までのストレージ１１の使用領域の変化量と，時刻ｔ2 から時刻Ｔまでのストレージ１１の使用領域の変化量との和となる。式（３）では，ΔＳ+ の値が大きいほど，すなわちデータ削除後のストレージ１１の使用領域の正の変化量の和が大きいほど，生存率Ｐが低くなる。これは，データを削除した後のストレージ１１の使用領域の正の変化量が大きいほど，多くの量のデータの書き込みが行われており，空き領域上に残された削除データが破壊されている可能性が高いという状況を反映したものである。なお，ストレージ１１の使用領域の負の変化は，ストレージ１１から多くの量のデータが削除されている状況を示している。データの削除では，空き領域上に残された削除データは破壊されない。
【００７２】
係数ｋについては，例えば，実験的にまたは本実施の形態によるデータ管理部１００の運用によって，ＦSIZE，ΔＳ，ΔＳ+ ，ＳFｔ0 等の各特徴量の値と，実際に空き領域上の削除データが破壊されていたか否かの結果との関係を示すデータを集め，統計的に求めることができる。
【００７３】
なお，削除されたデータの復元可能性を求める式が，必ずしも式（３）の削除されたデータの生存率Ｐを求める式である必要はない。例えば，ＦSIZE，ΔＳ，ΔＳ+ ，ＳFｔ0 等の特徴量のいずれか１つを用いて削除されたデータの復元可能性を求めるようにしてもよいし，他の特徴量を用いて削除されたデータの復元可能性を求めるようにしてもよい。
【００７４】
以下，図９〜図１４のフローチャートを用いて，本実施の形態１のデータ管理部１００による処理の流れの一例を説明する。
【００７５】
図９は，本実施の形態のデータ管理部によるタイマ処理フローチャートである。
【００７６】
図９に示すフローチャートの処理は，本実施の形態によるデータ管理において，定期的に実行される処理となる。
【００７７】
データ管理部１００において，インデックス取得部１０１は，ウェブ５０からインデックス情報を取得する（ステップＳ１０）。ここで取得されるインデックス情報には，該当ユーザのオンラインストレージで保管されており，該当ユーザのユーザ装置１０で利用可能なデータのリスト情報となる。
【００７８】
インデックス取得部１０１は，取得したインデックス情報の内容で，ファイル管理テーブル１５１を更新する（ステップＳ１１）。例えば，ファイル管理テーブル１５１にないデータの情報がインデックス情報にある場合，インデックス取得部１０１は，ファイル管理テーブル１５１に新たなデータのレコードを追加する。また，例えば，ファイル管理テーブル１５１にあるデータの情報がインデックス情報にない場合，インデックス取得部１０１は，ファイル管理テーブル１５１から該当データのレコードを削除する。また，例えば，インデックス情報でファイルサイズやハッシュ値などの情報が更新されたデータがある場合，インデックス取得部１０１は，該当データの情報を更新する。
【００７９】
ストレージ監視部１０２は，ストレージ１１の使用領域や空き領域などの情報を取得する（ステップＳ１２）。ストレージ監視部１０２は，ストレージログ管理テーブル１６１に，取得したストレージ１１の情報のログを記録する（ステップＳ１３）。
【００８０】
ストレージ監視部１０２は，前回のログから今回のログまでのストレージ１１の使用領域の変化量を算出する（ステップＳ１４）。ストレージ監視部１０２は，算出された使用領域の変化量を用いて，ファイル管理テーブル１５１のキャッシュフラグが“２”である各データのΔＳ，ΔＳ+ を更新する（ステップＳ１５）。ΔＳについては，算出された使用領域の変化量がもとのΔＳに加えられる。ΔＳ+ については，算出された使用領域の変化量が正の値である場合にのみ，算出された使用領域の変化量がもとのΔＳ+ に加えられる。
【００８１】
データ管理部１００は，キャッシュ制御処理を行う（ステップＳ１６）。キャッシュ制御処理では，定められたキャッシュ領域の制限に応じて，ストレージ１１に格納されたキャッシュデータの削除が行われる。キャッシュ制御処理の詳細については，後述する。
【００８２】
図１０は，本実施の形態１のデータ管理部によるキャッシュ制御処理フローチャートである。
【００８３】
データ管理部１００において，削除処理部１０３は，ストレージログ管理テーブル１６１の最新のログを参照し，ストレージ１１の空き領域が，ストレージ１１の全領域の１割を下回っているかを判定する（ステップＳ２０）。ここでは，ストレージ１１の空き領域がストレージ１１の全領域の１割以上となるように，キャッシュ領域のサイズが制御されるものとする。ストレージ１１の空き領域が全領域の１割を下回っていなければ（ステップＳ２０のＮＯ），データ管理部１００は，処理を終了する。
【００８４】
ストレージ１１の空き領域が全領域の１割を下回っていれば（ステップＳ２０のＹＥＳ），削除処理部１０３は，ファイル管理テーブル１５１を参照し，キャッシュデータがあるかを判定する（ステップＳ２１）。ファイル管理テーブル１５１において，キャッシュフラグが“１”のデータが，キャッシュデータである。キャッシュデータがなければ（ステップＳ２１のＮＯ），データ管理部１００は，処理を終了する。
【００８５】
キャッシュデータがあれば（ステップＳ２１のＹＥＳ），削除処理部１０３は，削除対象のキャッシュデータを１つ選択する（ステップＳ２２）。例えば，削除処理部１０３は，ファイル管理テーブル１５１を参照し，アクセス時刻が最も古いキャッシュデータを削除対象のキャッシュデータとする。
【００８６】
格納位置記録部１０４は，選択したキャッシュデータの物理アドレスを，ファイルシステム１２から取得する（ステップＳ２３）。例えば，ＯＳには，データの物理アドレスを取得するＡＰＩ（Application Programming Interface ）が用意されている。格納位置記録部１０４は，取得した物理アドレスを，ファイル管理テーブル１５１の，選択したキャッシュデータのレコードに記録する（ステップＳ２４）。
【００８７】
削除処理部１０３は，ファイルシステム１２に依頼し，選択したキャッシュデータを削除する（ステップＳ２５）。削除処理部１０３は，ファイル管理テーブル１５１を更新する（ステップＳ２６）。ここでは，削除したキャッシュデータについて，ファイル管理テーブル１５１のキャッシュフラグを“２”にする，削除日時を記録するなどの更新を行う。データ管理部１００は，ステップＳ２０の処理に戻る。キャッシュデータがなくなるか，キャッシュ領域の制限が満たされるまでキャッシュ制御処理が繰り返される。
【００８８】
図１１は，本実施の形態１のデータ管理部によるデータ取得処理フローチャートである。
【００８９】
データ管理部１００において，データ取得検出部１０５は，データの取得要求を検出する（ステップＳ３０）。例えば，データ取得検出部１０５は，ユーザ装置１０へのユーザの操作指定によるデータの取得要求を検出する。データ取得判断部１０６は，ファイル管理テーブル１５１を参照し，取得が要求されたデータのキャッシュフラグを判定する（ステップＳ３１）。
【００９０】
キャッシュフラグが“０”である場合（ステップＳ３１の“０”），データ管理部１００は，外部データ取得処理を実行する（ステップＳ３２）。外部データ取得処理は，ユーザ装置１０の外部，ここではウェブ５０から，ネットワーク６０を介してデータを取得する処理である。外部データ取得処理の詳細については，後述する。
【００９１】
キャッシュフラグが“１”である場合（ステップＳ３１の“１”），データ管理部１００は，キャッシュデータ取得処理を実行する（ステップＳ３３）。キャッシュデータ取得処理は，ストレージ１１に格納されたキャッシュデータを取得する処理である。キャッシュデータ取得処理の詳細については，後述する。
【００９２】
キャッシュフラグが“２”である場合（ステップＳ３１の“２”），データ管理部１００は，復元データ取得処理を実行する（ステップＳ３４）。復元データ取得処理は，削除されたキャッシュデータをストレージ１１の空き領域から取得する処理である。復元データ取得処理の詳細については，後述する。
【００９３】
図１２は，本実施の形態１のデータ管理部による外部データ取得処理フローチャートである。
【００９４】
データ管理部１００において，外部データ取得部１０８は，取得が要求されたデータをウェブ５０から取得する（ステップＳ４０）。データチェック部１１２は，所定の関数を用いて，取得したデータのハッシュ値を算出する（ステップＳ４１）。データチェック部１１２は，算出したハッシュ値が，ファイル管理テーブル１５１の該当データのハッシュ値と一致するかを判定する（ステップＳ４２）。
【００９５】
ハッシュ値が一致しない場合（ステップＳ４２のＮＯ），データ管理部１００は，ステップＳ４０の処理に戻って再度データの取得を行う。なお，所定回数データの取得を行ってもハッシュ値が一致しない場合，例えば，その旨を示す警告をユーザに提示する。
【００９６】
ハッシュ値が一致する場合（ステップＳ４２のＹＥＳ），格納処理部１１３は，取得したデータをストレージ１１に格納する（ステップＳ４３）。格納処理部１１３は，ファイル管理テーブル１５１を更新する（ステップＳ４４）。ここでは，格納処理部１１３は，ファイル管理テーブル１５１における該当データのキャッシュフラグを“１”に更新する。また，格納処理部１１３は，ファイル管理テーブル１５１における該当データのアクセス日時を更新する。
【００９７】
図１３は，本実施の形態１のデータ管理部によるキャッシュデータ取得処理フローチャートである。
【００９８】
データ管理部１００において，キャッシュデータ取得部１０７は，ストレージ１１に格納されている，取得が要求されたデータのキャッシュデータを取得する（ステップＳ５０）。データチェック部１１２は，所定の関数を用いて，取得したキャッシュデータのハッシュ値を算出する（ステップＳ５１）。データチェック部１１２は，算出したハッシュ値が，ファイル管理テーブル１５１の該当データのハッシュ値と一致するかを判定する（ステップＳ５２）。
【００９９】
ハッシュ値が一致しない場合（ステップＳ５２のＮＯ），データ管理部１００は，外部データ取得処理を実行する（ステップＳ５３）。外部データ取得処理は，例えば図１２の例に示す通りである。キャッシュデータから算出されたハッシュ値がファイル管理テーブル１５１のハッシュ値と一致しない場合は，例えばキャッシュデータが壊れている場合や，オンラインストレージ上の該当データが更新されている場合などが考えられる。
【０１００】
ハッシュ値が一致する場合（ステップＳ５２のＹＥＳ），キャッシュデータ取得部１０７は，ファイル管理テーブル１５１を更新する（ステップＳ５４）。ここでは，キャッシュデータ取得部１０７は，ファイル管理テーブル１５１における該当データのアクセス日時を更新する。
【０１０１】
図１４は，本実施の形態１のデータ管理部によるデータ復元処理フローチャートである。
【０１０２】
データ管理部１００において，復元可能性算出部１０９は，取得が要求されたデータの生存率Ｐを算出する（ステップＳ６０）。例えば，復元可能性算出部１０９は，ファイル管理テーブル１５１やストレージログ管理テーブル１６１を参照し，上記の式（３）を用いて，生存率Ｐを算出する。
【０１０３】
復元可能性判断部１１０は，生存率Ｐが所定の閾値Ｐth以上であるかを判定する（ステップＳ６１）。生存率Ｐが所定の閾値Ｐth以上でない場合（ステップＳ６１のＮＯ），復元可能性判断部１１０は，該当データがストレージ１１の空き領域上で破壊されている可能性が高いと判断する。外部データ取得部１０８は，外部データ取得処理を実行する（ステップＳ６８）。外部データ取得処理は，例えば図１２の例に示す通りである。
【０１０４】
生存率Ｐが所定の閾値Ｐth以上である場合（ステップＳ６１のＹＥＳ），復元データ取得部１１１は，ファイル管理テーブル１５１から，取得が要求されたデータの物理アドレスを取得する（ステップＳ６２）。復元データ取得部１１１は，ストレージ１１の取得した物理アドレスにアクセスし，バイナリのデータを取得する（ステップＳ６３）。例えば，ＯＳには，物理アドレスを指定してデータ取得するＡＰＩが用意されている。ここで取得するデータのサイズは，ファイル管理テーブル１５１の該当データのファイルサイズである。
【０１０５】
データチェック部１１２は，所定の関数を用いて，取得したデータのハッシュ値を算出する（ステップＳ６４）。データチェック部１１２は，算出したハッシュ値が，ファイル管理テーブル１５１の該当データのハッシュ値と一致するかを判定する（ステップＳ６５）。
【０１０６】
ハッシュ値が一致しない場合（ステップＳ６５のＮＯ），データ管理部１００は，外部データ取得処理を実行する（ステップＳ６８）。ここで取得されたデータから算出されたハッシュ値がファイル管理テーブル１５１のハッシュ値と一致しない場合には，例えば，ファイルの書き込みなどにより，データが壊れてしまった可能性が考えられる。外部データ取得処理は，例えば図１２の例に示す通りである。
【０１０７】
ハッシュ値が一致する場合（ステップＳ６５のＹＥＳ），格納処理部１１３は，取得したデータをストレージ１１に格納する（ステップＳ６６）。格納処理部１１３は，ファイル管理テーブル１５１を更新する（ステップＳ６７）。ここでは，格納処理部１１３は，ファイル管理テーブル１５１における該当データのキャッシュフラグを“１”に更新する。また，格納処理部１１３は，ファイル管理テーブル１５１における該当データのアクセス日時を更新する。
【０１０８】
以上説明した本実施の形態１によるデータ管理の技術では，擬似的にキャッシュ領域を増やすことができるため，ウェブ５０から取得するデータへのアクセスの高速化が図れる。さらに，本実施の形態１によるデータ管理の技術では，同時に他のプロセスでも利用可能な空き領域が確保されるため，ストレージ１１のリソースを有効活用できる。また，本実施の形態１によるデータ管理の技術では，ストレージ１１の空き領域からのデータの復元を実行する前に，該データの復元可能性の高さを判断するので，データ取得のレイテンシが向上する。
【０１０９】
〔実施の形態２〕
本実施の形態２によるデータ管理の処理では，前述の実施の形態１によるデータ管理の処理に加えて，削除するキャッシュデータを複数の部分データに分割して管理する処理が行われる。以下では，本実施の形態２によるデータ管理の技術について，主に前述の実施の形態１によるデータ管理の技術と異なる部分を中心に説明を行う。
【０１１０】
図１５は，本実施の形態２によるキャッシュデータのチャンク化について説明する図である。
【０１１１】
ストレージ１１の空き領域に残っている削除データは，その一部でも破壊されれば，データの復元が困難となる。そのため，ファイルサイズが大きいキャッシュデータが削除されて，ストレージ１１の空き領域に残っている場合，そのデータは，サイズが大きい分だけ，他のファイルの書き込み処理によって部分的にデータが破壊される可能性が高くなってしまう。
【０１１２】
このような問題に対処するために，本実施の形態２では，図１５に示すように，キャッシュデータに対して，データ複数の部分データに分割するチャンク化を行う。本実施の形態２の例では，チャンク化によってキャッシュデータを分割することにより得られる部分データを，チャンクデータと呼ぶ。
【０１１３】
本実施の形態２では，キャッシュデータから生成されたチャンクデータをストレージ１１に格納する。ストレージ１１に格納されたチャンクデータは，個々に削除され，ストレージ１１の空き領域にバラバラのデータとして残る。そのため，他のファイルの書き込みによって一部のチャンクデータが破壊されても，破壊されなかったチャンクデータは復元可能な状態でストレージ１１の空き領域に残る。この場合，破壊されなかったチャンクデータに対応するデータのみを，ウェブ５０等の外部から取得し，残りは削除されたチャンクデータの復元と，削除されずにストレージ１１に格納されたチャンクデータの取得とで，キャッシュデータを復元できる。このような本実施の形態２によるデータ管理の技術によって，目的とするデータへのアクセス速度を向上させることが可能となる。
【０１１４】
図１６は，本実施の形態２によるユーザ装置が備えるデータ管理部の構成例を示す。
【０１１５】
本実施の形態２のユーザ装置１０は，図１６に示すデータ管理部２００を備える。データ管理部２００は，インデックス取得部２０１，ストレージ監視部２０２，削除処理部２０３，格納位置記録部２０４，データ取得検出部２０５，データ取得判断部２０６，キャッシュデータ取得部２０７，外部データ取得部２０８，復元可能性算出部２０９，復元可能性判断部２１０，復元データ取得部２１１，データチェック部２１２，格納処理部２１３，分割部２１４，結合部２１５を備える。また，データ管理部２００は，管理情報記憶部２５０，ストレージ情報記憶部２６０の記憶部を備える。
【０１１６】
管理情報記憶部２５０は，データの管理情報を記憶する記憶部である。本実施の形態２によるデータの管理情報には，前述の実施の形態１によるデータの管理情報に記録される情報に加えて，チャンクデータがストレージに格納されている状態，サイズなどのチャンク化されたデータに関する様々な情報が記録されている。
【０１１７】
ストレージ情報記憶部２６０，インデックス取得部２０１，ストレージ監視部２０２については，前述の実施の形態１と同様であるので説明を省略する。
【０１１８】
分割部２１４は，データを複数の部分データに分割する。より具体的には，分割部２１４は，ストレージ１１に格納されるキャッシュデータを，複数のチャンクデータに分割する。分割部２１４は，得られたチャンクデータをストレージ１１に格納する。また，分割部２１４は，所定のハッシュ関数を用いて，得られた各チャンクデータのハッシュ値を算出する。算出されたハッシュ値は，例えば，チャンクデータの管理情報で管理される。
【０１１９】
削除処理部２０３は，ストレージ１１に格納されたデータを削除する。より具体的には，削除処理部２０３は，ストレージ１１に格納されたキャッシュデータの削除や，ストレージに格納されたチャンクデータの削除をファイルシステム１２に依頼する。削除処理部２０３によるデータの削除は，ファイルシステム１２によるファイル管理上の削除であり，ストレージ１１に格納されている物理的なデータの消去ではない。
【０１２０】
格納位置記録部２０４は，ストレージ１１に格納されたデータの格納位置を，管理情報記憶部２５０の管理情報に記録する。より具体的には，格納位置記録部２０４は，ストレージ１１に格納されたキャッシュデータやチャンクデータの物理的な格納位置の情報を，ファイルシステム１２から取得し，管理情報記憶部２５０の管理情報に記録する。
【０１２１】
データ取得検出部２０５については，前述の実施の形態１と同様であるので，説明を省略する。
【０１２２】
データ取得判断部２０６は，管理情報記憶部２５０の管理情報を参照し，取得が要求されたデータをどのように取得するかを判断する。例えば，ユーザ装置１０のローカルなストレージ１１に取得が要求されたデータが存在しない場合，データ取得判断部２０６は，データを外部のウェブ５０から取得すると判断する。また，例えば，取得が要求されたデータがユーザ装置１０のローカルなストレージ１１にキャッシュデータとして格納されている場合，データ取得判断部２０６は，そのキャッシュデータをストレージ１１から取得すると判断する。また，例えば，取得が要求されたデータがユーザ装置１０のローカルなストレージ１１から削除されたデータであり，該データがチャンク化されていない場合，データ取得判断部２０６は，ストレージ１１からのデータの復元を試みると判断する。また，例えば，取得が要求されたデータがユーザ装置１０のローカルなストレージ１１から削除されたデータであり，該データがチャンク化されている場合，データ取得判断部２０６は，チャンクデータごとにストレージ１１からのデータの復元を試みると判断する。
【０１２３】
キャッシュデータ取得部２０７，外部データ取得部２０８については，前述の実施の形態１と同様であるので，説明を省略する。
【０１２４】
復元可能性算出部２０９は，ストレージ１１から削除されたキャッシュデータや，チャンクデータの復元可能性を求める。
【０１２５】
復元可能性判断部２１０は，取得が要求されたデータがストレージ１１から削除されたキャッシュデータである場合に，その削除されたキャッシュデータの復元可能性の高さが所定以上であるかを判断する。また，復元可能性判断部２１０は，取得が要求されたデータがストレージ１１から削除されたチャンクデータを含むデータである場合に，その削除されたチャンクデータの復元可能性の高さが所定以上であるかを判断する。データの復元可能性の高さが所定以上であれば，復元可能性判断部２１０は，ストレージ１１からデータの復元を行うと判断する。データの復元可能性の高さが所定以上でなければ，復元可能性判断部２１０は，ユーザ装置１０の外部からデータを取得すると判断する。
【０１２６】
復元データ取得部２１１は，取得が要求されたデータがストレージ１１から削除されたキャッシュデータである場合に，その削除されたキャッシュデータの復元可能性の高さが所定以上であれば，管理情報記憶部２５０の管理情報から，その削除されたキャッシュデータの格納位置を取得する。また，復元データ取得部２１１は，取得が要求されたデータがストレージ１１から削除されたチャンクデータを含むデータである場合に，その削除されたチャンクデータの復元可能性の高さが所定以上であれば，管理情報記憶部２５０の管理情報から，その削除されたチャンクデータの格納位置を取得する。復元データ取得部２１１は，ストレージ１１上の該格納位置からデータを取得する。
【０１２７】
結合部２１５は，取得が要求されたデータを構成する複数のチャンクデータを結合する。
【０１２８】
データチェック部２１２，格納処理部２１３については，前述の実施の形態１と同様であるので，説明を省略する。
【０１２９】
図１７は，本実施の形態２によるファイル管理テーブルの例を示す図である。
【０１３０】
図１７に示すファイル管理テーブル２５１は，管理情報記憶部２５０に記憶された第一の管理情報の一例を示す。ファイル管理テーブル２５１は，管理対象のデータごとに，ファイルＩＤ，ファイル名，キャッシュフラグ，チャンクフラグ，チャンク数，ΔＳ，ΔＳ+ ，ファイルサイズ，削除日時，アクセス日時，ハッシュ値，物理アドレス等の情報を持つ。
【０１３１】
ファイルＩＤ，ファイル名，キャッシュフラグ，ΔＳ，ΔＳ+ ，ファイルサイズ，削除日時，アクセス日時，ハッシュ値，物理アドレスについては，図５に示す前述の実施の形態１によるファイル管理テーブル１５１と同様であるので，説明を省略する。チャンクフラグは，データがチャンク化されているかを示す。チャンクフラグ“０”は，データがチャンク化されていないことを示す。チャンクフラグ“１”は，データがチャンク化されていることを示す。チャンク数は，データがチャンク化されることで生成されたチャンクデータの数を示す。
【０１３２】
図１８は，本実施の形態２によるチャンク管理テーブルの例を示す図である。
【０１３３】
図１８に示すチャンク管理テーブル２５２は，管理情報記憶部２５０に記憶された第二の管理情報の一例を示す。チャンク管理テーブル２５２は，管理対象のデータごとに，チャンクＩＤ，ファイルＩＤ，チャンクキャッシュフラグ，ΔＳ，ΔＳ+ ，ファイルサイズ，削除日時，ハッシュ値，物理アドレス等の情報を持つ。
【０１３４】
チャンクＩＤは，チャンクデータを一意に識別する識別情報である。ファイルＩＤは，チャンクデータが生成されるもととなったデータのファイルＩＤである。チャンクキャッシュフラグは，チャンクデータのキャッシュ状況を示す。チャンクキャッシュフラグ“１”は，チャンクデータがストレージ１１にキャッシュされている状況を示す。チャンクキャッシュフラグ“２”は，チャンクデータがストレージ１１に一度キャッシュされた後で，ファイル管理上の削除が行われた状況を示す。
【０１３５】
ΔＳは，チャンクデータがストレージ１１から削除されたときから最後にストレージ１１の情報が取得されたときまでのストレージ１１の使用領域の変化量を示す。ΔＳ+ は，チャンクデータがストレージ１１から削除されたときから最後にストレージ１１の情報が取得されたときまでの使用領域の正の変化量の和を示す。ファイルサイズは，チャンクデータのサイズを示す。削除日時は，チャンクデータがストレージ１１から削除されている場合，その削除された日時を示す。ハッシュ値は，削除が行われる前のチャンクデータに対して所定のハッシュ関数を用いて算出されたハッシュ値である。物理アドレスは，ストレージ１１上のデータの物理的な格納位置を示す。
【０１３６】
なお，ストレージ情報記憶部２６０に記憶されたストレージログ情報の一例は，前述の実施の形態１と同様に，例えば図６に示すストレージログ管理テーブル１６１となる。
【０１３７】
以下，図１９〜図２３のフローチャートを用いて，本実施の形態２のデータ管理部２００による処理の流れの一例を説明する。
【０１３８】
タイマ処理のフローチャートは，前述の実施の形態１の図９に示すタイマ処理フローチャートと，ほぼ同様である。図９のステップＳ１６に示すキャッシュ制御処理の詳細が異なる。
【０１３９】
図１９は，本実施の形態２のデータ管理部によるキャッシュ制御処理フローチャートである。
【０１４０】
データ管理部２００において，削除処理部２０３は，ストレージログ管理テーブル１６１の最新のログを参照し，ストレージ１１の空き領域が，ストレージ１１の全領域の１割を下回っているかを判定する（ステップＳ７０）。ストレージ１１の空き領域が全領域の１割を下回っていなければ（ステップＳ７０のＮＯ），データ管理部２００は，処理を終了する。
【０１４１】
ストレージ１１の空き領域が全領域の１割を下回っていれば（ステップＳ７０のＹＥＳ），削除処理部２０３は，チャンク管理テーブル２５２を参照し，未削除のチャンクデータがあるかを判定する（ステップＳ７１）。チャンク管理テーブル２５２において，チャンクキャッシュフラグが“１”のデータが，未削除のチャンクデータである。未削除のチャンクデータがあれば（ステップＳ７１のＹＥＳ），データ管理部２００は，チャンクデータ削除処理を行う（ステップＳ８２）。チャンクデータ削除処理は，ファイル管理上，チャンクデータを削除する処理である。チャンクデータ削除処理の詳細については，後述する。
【０１４２】
未削除のチャンクデータがなければ（ステップＳ７１のＮＯ），削除処理部２０３は，ファイル管理テーブル２５１を参照し，キャッシュデータがあるかを判定する（ステップＳ７２）。ファイル管理テーブル２５１において，キャッシュフラグが“１”のデータが，キャッシュデータである。キャッシュデータがなければ（ステップＳ７２のＮＯ），データ管理部２００は，処理を終了する。
【０１４３】
キャッシュデータがあれば（ステップＳ７２のＹＥＳ），削除処理部２０３は，削除対象のキャッシュデータを１つ選択する（ステップＳ７３）。例えば，削除処理部２０３は，ファイル管理テーブル２５１を参照し，アクセス時刻が最も古いキャッシュデータを削除対象のキャッシュデータとする。
【０１４４】
分割部２１４は，ファイル管理テーブル２５１を参照し，選択されたキャッシュデータのファイルサイズが１００［ＭＢｙｔｅ］より大きいかを判定する（ステップＳ７４）。ここの例では，ファイルサイズが１００［ＭＢｙｔｅ］を超える大きさのキャッシュファイルについてはチャンクを行い，ファイルサイズが１００［ＭＢｙｔｅ］以下のキャッシュファイルについてはチャンクを行わないものとする。
【０１４５】
選択されたキャッシュデータのファイルサイズが１００［ＭＢｙｔｅ］より大きくなければ（ステップＳ７４のＮＯ），格納位置記録部２０４は，選択したキャッシュデータの物理アドレスを，ファイルシステム１２から取得する（ステップＳ７５）。格納位置記録部２０４は，取得した物理アドレスを，ファイル管理テーブル２５１の，選択したキャッシュデータのレコードに記録する（ステップＳ７６）。削除処理部２０３は，ファイルシステム１２に依頼し，選択したキャッシュデータを削除する（ステップＳ７７）。削除処理部２０３は，ファイル管理テーブル２５１を更新する（ステップＳ７８）。ここでは，削除したキャッシュデータについて，ファイル管理テーブル２５１のキャッシュフラグを“２”にする，削除日時を記録するなどの更新を行う。データ管理部２００は，ステップＳ７０の処理に戻る。キャッシュデータやチャンクがなくなるか，キャッシュ領域の制限が満たされるまでキャッシュ制御処理が繰り返される。
【０１４６】
選択されたキャッシュデータのファイルサイズが１００［ＭＢｙｔｅ］より大きければ（ステップＳ７４のＹＥＳ），分割部２１４は，選択されたキャッシュデータから複数のチャンクデータを生成する（ステップＳ７９）。例えば，キャッシュデータの先頭から１００［ＭＢｙｔｅ］ずつの大きさで，チャンクデータを生成していく。分割部２１４は，ファイルシステム１２を介して，ストレージ１１にチャンクデータを格納する（ステップＳ８０）。このとき，分割部２１４は，所定のハッシュ関数を用いて各チャンクデータのハッシュ値を算出し，チャンク管理テーブル２５２に記録しておく。分割部２１４は，ファイル管理テーブル２５１を更新する（ステップＳ７８）。ここでは，チャンク化したキャッシュデータについて，ファイル管理テーブル２５１のキャッシュフラグを“２”にする，チャンクフラグを“１”にする，チャンク数を記録するなどの更新を行う。データ管理部２００は，チャンクデータ削除処理を実行し（ステップＳ８２），ステップＳ７０の処理に戻る。キャッシュデータやチャンクがなくなるか，キャッシュ領域の制限が満たされるまでキャッシュ制御処理が繰り返される。
【０１４７】
図２０は，本実施の形態２のデータ管理部によるチャンクデータ削除処理フローチャートである。
【０１４８】
削除処理部２０３は，チャンク管理テーブル２５２を参照し，削除対象のチャンクデータを１つ選択する（ステップＳ９０）。格納位置記録部２０４は，選択したチャンクデータの物理アドレスを，ファイルシステム１２から取得する（ステップＳ９１）。格納位置記録部２０４は，取得した物理アドレスを，チャンク管理テーブル２５２の，選択したチャンクデータのレコードに記録する（ステップＳ９２）。
【０１４９】
削除処理部２０３は，ファイルシステム１２に依頼し，選択したチャンクデータを削除する（ステップＳ９３）。削除処理部２０３は，チャンク管理テーブル２５２を更新する（ステップＳ９４）。ここでは，削除したチャンクデータについて，チャンク管理テーブル２５２のチャンクキャッシュフラグを“２”にする，削除日時を記録するなどの更新を行う。
【０１５０】
図２１は，本実施の形態２のデータ管理部によるデータ取得処理フローチャートである。
【０１５１】
データ管理部２００において，データ取得検出部２０５は，データの取得要求を検出する（ステップＳ１００）。例えば，データ取得検出部２０５は，ユーザ装置１０へのユーザの操作指定によるデータの取得要求を検出する。データ取得判断部２０６は，ファイル管理テーブル２５１を参照し，取得が要求されたデータのキャッシュフラグを判定する（ステップＳ１０１）。
【０１５２】
キャッシュフラグが“０”である場合（ステップＳ１０１の“０”），データ管理部２００は，外部データ取得処理を実行する（ステップＳ１０２）。外部データ取得処理は，例えば，図１２に示す前述の実施の形態１の外部データ取得処理と同様である。
【０１５３】
キャッシュフラグが“１”である場合（ステップＳ１０１の“１”），データ管理部２００は，キャッシュデータ取得処理を実行する（ステップＳ１０３）。キャッシュデータ取得処理は，例えば，図１３に示す前述の実施の形態１のキャッシュデータ取得処理と同様である。
【０１５４】
キャッシュフラグが“２”である場合（ステップＳ１０１の“２”），データ管理部２００は，取得が要求されたデータのチャンクフラグが“１”であるかを判定する（ステップＳ１０４）。
【０１５５】
取得が要求されたデータのチャンクフラグが“１”でなければ（ステップＳ１０４のＮＯ），データ管理部２００は，復元データ取得処理を実行する（ステップＳ１０５）。復元データ取得処理は，例えば，図１４に示す前述の実施の形態１の復元データ取得処理と同様である。
【０１５６】
取得が要求されたデータのチャンクフラグが“１”であれば（ステップＳ１０４のＹＥＳ），データ管理部２００は，チャンクデータ復元処理を実行する（ステップＳ１０６）。チャンクデータ復元処理は，チャンクデータからもとのデータを復元する処理である。チャンクデータ復元処理の詳細については，後述する。
【０１５７】
図２２，図２３は，本実施の形態２のデータ管理部によるチャンクデータ復元処理フローチャートである。
【０１５８】
データ管理部２００は，チャンク管理テーブル２５２を参照し，取得が要求されたデータのチャンクデータを順に１つ選択する（ステップＳ１１０）。データ管理部２００は，選択されたチャンクデータが，削除されたチャンクデータであるかを判定する（ステップＳ１１１）。
【０１５９】
選択されたチャンクデータが削除されたチャンクデータでなければ（ステップＳ１１１のＮＯ），データ管理部２００は，選択されたチャンクデータを，ファイルシステム１２を介してストレージ１１から取得する（ステップＳ１１２）。データ管理部２００は，ステップＳ１２０の処理に進む。
【０１６０】
選択されたチャンクデータが削除されたチャンクデータであれば（ステップＳ１１１のＹＥＳ），復元可能性算出部２０９は，選択されたチャンクデータの生存率Ｐを算出する（ステップＳ１１３）。例えば，復元可能性算出部２０９は，チャンク管理テーブル２５２やストレージログ管理テーブル１６１を参照し，上記の式（３）を用いて，生存率Ｐを算出する。
【０１６１】
復元可能性判断部２１０は，生存率Ｐが所定の閾値Ｐth以上であるかを判定する（ステップＳ１１４）。生存率Ｐが所定の閾値Ｐth以上でない場合（ステップＳ１１４のＮＯ），復元可能性判断部２１０は，該当チャンクデータがストレージ１１の空き領域上で破壊されている可能性が高いと判断する。外部データ取得部２０８は，該当チャンクデータをウェブ５０から取得する（ステップＳ１１９）。例えば，サイズが大きい映像などの分野で，要求された部分データをダウンロードするなどが行われている。データ管理部２００は，ステップＳ１２０の処理に進む。
【０１６２】
生存率Ｐが所定の閾値Ｐth以上である場合（ステップＳ１１４のＹＥＳ），復元データ取得部２１１は，チャンク管理テーブル２５２から，選択されたチャンクデータの物理アドレスを取得する（ステップＳ１１５）。復元データ取得部２１１は，ストレージ１１の取得した物理アドレスにアクセスし，バイナリのデータを取得する（ステップＳ１１６）。ここで取得するデータのサイズは，チャンク管理テーブル２５２の該当チャンクデータのファイルサイズである。
【０１６３】
データチェック部２１２は，所定の関数を用いて，取得したデータのハッシュ値を算出する（ステップＳ１１７）。データチェック部２１２は，算出したハッシュ値が，チャンク管理テーブル２５２の該当チャンクデータのハッシュ値と一致するかを判定する（ステップＳ１１８）。
【０１６４】
ハッシュ値が一致する場合（ステップＳ１１８のＹＥＳ），データチェック部２１２は取得したデータが壊れていないと判断し，データ管理部２００は，ステップＳ１２０の処理に進む。
【０１６５】
ハッシュ値が一致しない場合（ステップＳ１１８のＮＯ），外部データ取得部２０８は，該当チャンクデータをウェブ５０から取得する（ステップＳ１１９）。ここで取得されたデータから算出されたハッシュ値がチャンク管理テーブル２５２のハッシュ値と一致しない場合は，例えば，ファイルの書き込みなどにより，データが壊れてしまった可能性が考えられる。
【０１６６】
データ管理部２００は，取得が要求されたデータを構成するすべてのチャンクデータについて処理が終了したかを判定する（ステップＳ１２０）。すべてのチャンクデータについてまだ処理が終了していなければ（ステップＳ１２０のＮＯ），ステップＳ１１０の処理に戻り，次のチャンクデータの処理に移る。
【０１６７】
すべてのチャンクデータについて処理が終了していれば（ステップＳ１２０のＹＥＳ），結合部２１５は，取得されたチャンクデータを結合する（ステップＳ１２１）。結合部２１５は，チャンク管理テーブル２５２を更新する（ステップＳ１２２）。ここでは，結合部２１５は，チャンク管理テーブル２５２から，結合したチャンクデータのレコードを削除する。
【０１６８】
データチェック部２１２は，所定の関数を用いて，結合されたデータのハッシュ値を算出する（ステップＳ１２３）。データチェック部２１２は，算出したハッシュ値が，ファイル管理テーブル２５１における，取得が要求されたデータのハッシュ値と一致するかを判定する（ステップＳ１２４）。
【０１６９】
ハッシュ値が一致しない場合（ステップＳ１２４のＮＯ），データ管理部２００は，外部データ取得処理を実行する（ステップＳ１２５）。外部データ取得処理は，例えば図１２の例に示す通りである。
【０１７０】
ハッシュ値が一致する場合（ステップＳ１２４のＹＥＳ），格納処理部２１３は，結合したデータをストレージ１１に格納する（ステップＳ１２６）。格納処理部２１３は，ファイル管理テーブル２５１を更新する（ステップＳ１２７）。ここでは，格納処理部２１３は，ファイル管理テーブル２５１における該当データのキャッシュフラグを“１”に更新する。また，格納処理部２１３は，ファイル管理テーブル２５１における該当データのアクセス日時を更新する。
【０１７１】
以上，本実施の形態について説明したが，本発明はその主旨の範囲において種々の変形が可能であることは当然である。
【０１７２】
例えば，本実施の形態では，オンラインストレージを利用した場合のデータ管理の例を説明したが，これに限るものではない。例えば，ブラウザでインターネットのサイトを閲覧する場合などのインタネットキャッシュや，動画共有サービスでダウンロードしたデータの管理などにも，本実施の形態によるデータ管理の技術を適用可能である。
【０１７３】
また，例えば，本実施の形態では，ＨＤＤやＳＳＤのストレージ１１を格納先としたデータ管理の例を説明したが，管理するデータの格納先がメモリ３であってもよい。
【符号の説明】
【０１７４】
１０  ユーザ装置
１１  ストレージ
１２  ファイルシステム
１００，２００  データ管理部
１０１，２０１  インデックス取得部
１０２，２０２  ストレージ監視部
１０３，２０３  削除処理部
１０４，２０４  格納位置記録部
１０５，２０５  データ取得検出部
１０６，２０６  データ取得判断部
１０７，２０７  キャッシュデータ取得部
１０８，２０８  外部データ取得部
１０９，２０９  復元可能性算出部
１１０，２１０  復元可能性判断部
１１１，２１１  復元データ取得部
１１２，２１２  データチェック部
１１３，２１３  格納処理部
２１４  分割部
２１５  結合部
１５０，２５０  管理情報記憶部
１６０，２６０  ストレージ情報記憶部
５０  ウェブ
５１  サーバ
５２  ストレージ
６０  ネットワーク
【図１】
2014203280.tif 000003
【図２】
2014203280.tif 000004
【図３】
2014203280.tif 000005
【図４】
2014203280.tif 000006
【図５】
2014203280.tif 000007
【図６】
2014203280.tif 000008
【図７】
2014203280.tif 000009
【図８】
2014203280.tif 000010
【図９】
2014203280.tif 000011
【図１０】
2014203280.tif 000012
【図１１】
2014203280.tif 000013
【図１２】
2014203280.tif 000014
【図１３】
2014203280.tif 000015
【図１４】
2014203280.tif 000016
【図１５】
2014203280.tif 000017
【図１６】
2014203280.tif 000018
【図１７】
2014203280.tif 000019
【図１８】
2014203280.tif 000020
【図１９】
2014203280.tif 000021
【図２０】
2014203280.tif 000022
【図２１】
2014203280.tif 000023
【図２２】
2014203280.tif 000024
【図２３】
2014203280.tif 000025