(57)【特許請求の範囲】
【請求項１】
複数の記憶手段と、
データを複数に分割した分割データを前記複数の記憶手段に分散して記憶すると共に、前記複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段と、
前記記憶手段から読み出した分割データを一時的に格納するキャッシュメモリと、を備え、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該読み出した分割データのみを前記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いて、当該分割データの分割前のデータの復元を行う、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間が、設定された基準時間よりも長いもののみを前記キャッシュメモリに格納する、
ストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記基準時間は、読み出された分割データのうち所定の条件を満たす分割データ群の読み出し時間の平均時間に基づく値である、
ストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記基準時間は、読み出された分割データの読み出し時間のばらつきの度合いに応じて設定された条件を満たす分割データ群の読み出し時間の平均時間に基づく値である、
ストレージシステム。
【請求項５】
請求項１乃至４のいずれかに記載のストレージシステムであって、
前記データ処理手段は、分割前のデータを識別する識別情報を、当該データを分割した分割データに付加して格納すると共に、当該識別情報が同一の分割データを用いてデータの復元を行う、
ストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記識別情報は、前記データの更新時を特定する情報を含み、
前記データ処理手段は、復元するデータを構成する分割データのうち前記識別情報が他と異なる分割データを前記キャッシュメモリから削除する、
ストレージシステム。
【請求項７】
データを複数に分割した分割データを複数の記憶手段に分散して記憶すると共に、複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段と、
前記記憶手段から読み出した分割データを一時的に格納するキャッシュメモリと、を備え、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該読み出した分割データのみを前記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いて、当該分割データの分割前のデータの復元を行う、
ストレージ装置。
【請求項８】
キャッシュメモリを備えた情報処理装置に、
データを複数に分割した分割データを複数の記憶手段に分散して記憶すると共に、複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段を実現させると共に、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該読み出した分割データのみを前記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いて、当該分割データの分割前のデータの復元を行う、
プログラム。
【請求項９】
キャッシュメモリを備えた情報処理装置にて、
データ書き込み時に、データを複数に分割した分割データを複数の記憶手段に分散して記憶し、
データ読み出し時に、複数の記憶手段から分割データを読み出して分割前のデータを復元すると共に、
前記データ読み出し時に、前記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該読み出した分割データのみを前記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いて、当該分割データの分割前のデータの復元を行う、
データ記憶再生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、データを分割して複数の記憶装置に記憶するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ分散して格納している。
【０００４】
そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを複数の記憶装置から読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。
【０００５】
また、上述したコンテンツアドレスを用いたデータ格納方法を採用することがなくても、記憶しているデータの信頼性の向上を図るべく、複数の記憶装置にデータを分散して記憶することが行われている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したようにデータを分割して複数の記憶装置に分散配置するシステムにおいては、分割されたデータの一部の取得に遅延が生じた場合、データの全体の読み込みが遅延してしまう、という問題がある。特に、複数の記憶装置が広域ネットワーク上に分散して配置されている場合には、各分割データの読み込み速度に大きなばらつきが生じることがあり、データ全体の読み込み処理の遅延がますます顕著となる。
【０００８】
このため、本発明の目的は、上述した課題である、データを分割して複数の記憶装置に分散して格納するストレージシステムにおいて、読み込み速度が遅延することを解決することにある。
【課題を解決するための手段】
【０００９】
かかる目的を達成するため本発明の一形態であるストレージシステムは、
複数の記憶手段と、
データを複数に分割した分割データを上記複数の記憶手段に分散して記憶すると共に、上記複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段と、
上記記憶手段から読み出した分割データを一時的に格納するキャッシュメモリと、を備える。
そして、上記データ処理手段は、上記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを上記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いてデータの復元を行う、
という構成をとる。
【００１０】
また、本発明の他の形態であるストレージ装置は、
データを複数に分割した分割データを複数の記憶手段に分散して記憶すると共に、複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段と、
上記記憶手段から読み出した分割データを一時的に格納するキャッシュメモリと、を備える。
そして、上記データ処理手段は、上記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを上記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いてデータの復元を行う、
という構成をとる。
【００１１】
また、本発明の他の形態であるプログラムは、
キャッシュメモリを備えた情報処理装置に、
データを複数に分割した分割データを複数の記憶手段に分散して記憶すると共に、複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段を実現させるプログラムである。
そして、上記データ処理手段は、上記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを上記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いてデータの復元を行う、
という構成をとる。
【００１２】
また、本発明の他の形態であるデータ記憶再生方法は、
キャッシュメモリを備えた情報処理装置にて、
データ書き込み時に、データを複数に分割した分割データを複数の記憶手段に分散して記憶し、
データ読み出し時に、複数の記憶手段から分割データを読み出して分割前のデータを復元する、というデータ記憶再生方法である。
そして、上記データ読み出し時に、上記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを上記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いてデータの復元を行う、
という構成をとる。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、キャッシュメモリの容量を抑えてコストを抑制しつつ、データ読み取り時間の短縮化及び平準化を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図２】図１に開示したストレージシステムに書き込まれるデータの構造を示す図である。
【図３】図１に開示したストレージシステムにおけるデータ書き込み処理の動作を示すフローチャートである。
【図４】図１に開示したストレージシステムにおけるデータ読み込み処理の動作を示すフローチャートである。
【図５】図１に開示したストレージシステムにおけるキャッシュ処理の動作を示すフローチャートである。
【図６】本発明の実施形態２におけるストレージシステムの構成を示す機能ブロック図である。
【図７】図６に開示したストレージシステムに書き込まれるデータの構造を示す図である。
【図８】図６に開示したストレージシステムにおけるファイル書き込み処理の動作を示すフローチャートである。
【図９】図６に開示したストレージシステムにおけるファイル読み込み処理の動作を示すフローチャートである。
【図１０】本発明の付記１におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１５】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図５を参照して説明する。図１は、ストレージシステムの構成を示す機能ブロック図である。図２は、ストレージシステムに書き込まれるデータの構造を示す図である。図３乃至図５は、ストレージシステムの動作を示すフローチャートである。
【００１６】
ここで、本実施形態は、後述する付記に記載のストレージシステム等の具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００１７】
［構成］
図１に示すように、本実施形態におけるストレージシステムは、ネットワークＮを介して接続された複数のストレージ装置１，２，３を備えている。なお、以下では、各ストレージ装置を「サイト」と呼ぶこととし、ｎ個のサイトがネットワークＮを介して接続されていることとする。そして、各サイト間の距離は問わず、サイトが世界各地に点在しているシステムであってもよい。
【００１８】
各サイト１，２，・・・，ｎは、演算装置と記憶装置とを備えたコンピュータにて構成されている。そして、特に、各サイト１，２，・・・，ｎはディスク装置１７，２４，３４を備えており、後述するように、データを所定容量に分割したチャンクをさらに分割したブロック（分割データ）を、分散して格納する記憶装置として機能している。なお、本実施形態では、後述するように、サイト１がデータを書き込む指示を行う役割を担っており、サイト２からサイトｎは、サイト１による指示により分割されたブロックを書き込む役割を担っている。このため、サイト２からサイトｎは同一の構造を有しており、サイト１は異なる構造を有しているが、いずれのサイトがサイト１の役割を担ってもよい。なお、各サイトの構成は、後述する構成であることに限定されない。以下、各サイトの構成について詳述する。
【００１９】
まず、サイト１は、装備された演算装置にプログラムが組み込まれることで構築された、アプリケーション１１と、分散制御部１３と、統計情報解析部１４と、ディスクアクセス部１５と、ネットワークアクセス部１６と、を備える。また、サイト１は、ディスク装置１７から読み出したデータであるブロックを一時的に格納するフラッシュメモリなどで構成されたキャッシュ１２（キャッシュメモリ）を備えている。また、データを分割したブロックを格納するハードディスクドライブなどのディスク装置１７（記憶手段）を備えている。なお、上記キャッシュ１２は、ディスク装置１７よりもデータの書き込み／読み出しに要する時間が高速な記憶装置である。
【００２０】
上記アプリケーション１１は、データを書き込む指令や、読み出す指令を発する。これを受けて、分散制御部１３（データ処理手段）は、各サイト１，２，・・・，ｎのディスク装置１７，２４，３４に、データを分散して記憶する。
【００２１】
具体的に、分散制御部１３は、データ書き込み時には、まず、図２に示すように、書き込み対象となるデータを、所定容量のチャンクＡ，Ｂ，Ｃ，・・・という部分に分割する。そして、さらに、各チャンクＡ，Ｂ，Ｃ，・・・を、それぞれ所定容量のｎ個の分割データ部分（分割されたチャンク）に分割する。このとき、各分割データ部分である分割されたチャンクには、図２に示すように、当該分割されたチャンクが属していた分割前のデータやチャンクを識別できる識別子が付加されて、ブロックを構成している。なお、識別子は、さらには、分割前のデータの更新時刻や世代など、データ更新時を特定できる情報を含んでいる。
【００２２】
そして、分散制御部１３は、各ブロックを各サイト１，２，・・・，ｎに分散して記憶する。例えば、サイト１の分散制御部１３は、ブロックの１つを自サイト１のディスクアクセス部１５を介してディスク装置１７に格納し、残りのｎ−１個のブロックをネットワークアクセス部１６を介してｎ−１箇所の各サイト２，・・・，ｎに送る。すると、各サイト２，・・・，は、それぞれ受け取ったブロックを、それぞれが装備しているディスク装置２４，３４に保存する。
【００２３】
なお、上述したチャンクはデータの一部であり、単体で意味を持つが、ブロック（分割されたチャンク）は、上記チャンクを任意の方法で分割したものであり、一般にブロック単体は、意味を持つ情報（解釈可能な情報）ではない。
【００２４】
また、分散制御部１３は、アプリケーション１１の指令に応じてデータ読み込む時には、まず、読み出すデータに必要なチャンクを割り出すと共に、この必要なチャンクを構成するブロックを割り出す。例えば、データとチャンクの対応、チャンクとブロックの対応を記録するデータベースを持つ方法や、ハッシュ値を利用して割り出し方法があるが、いかなる方法で行われてもよい。そして、分散制御部１３は、自サイトを含む各サイト１，２，・・・，ｎからブロックを取得し、当該取得した複数のブロックからチャンクを復元し、チャンクからデータを復元する。このとき、分散制御部１３は、キャッシュに格納されているブロックも利用して、チャンクを復元する。換言すると、分散制御部１３は、キャッシュに存在しないブロックを各サイトから取得してチャンクを復元する。
【００２５】
具体的に、分散制御部１３は、各サイトから取得したブロックの識別子と、キャッシュ１２に格納されているブロックの識別子とから、各ブロックが同一のチャンクから分割されたブロックであるかどうかを確認する。仮に、識別子が異なり、同一のチャンク、例えば、同一世代のデータから分割されたブロックではないものがあった場合は、キャッシュ１２に格納されている当該ブロックのキャッシュを無効化し（削除し）、ディスクアクセス部１５やネットワークアクセス部１６を介して、各サイトから他のブロックを取得する。そしれ、再度、識別子が全て一致するかどうか調べ、一致した場合には、取得したからチャンク、そして、チャンクからデータを復元し、アプリケーション１１に返却する。
【００２６】
また、統計情報解析部１４は、分散制御部１３にて各サイトから取得した各ブロックの取得コスト、本実施形態では、各ブロックを各サイトのディスク装置から読み出すときにかかった時間、を計測する。そして、計測した読み出し時間に応じて、各ブロックをキャッシュ１２に格納するか否かを判断する。
【００２７】
このとき、特に、設定された基準時間よりもサイトからの取得時間が長いブロックのみを、キャッシュ１２に格納すると判断する。つまり、基準時間以内に取得されたブロックは、キャッシュ１２に格納しない。ここで、上記基準時間を、例えば、「所定の条件を満たすブロック群（母集団）に属する各ブロックの取得時間の平均の１．２倍」に設定したり、「所定の条件を満たすブロック群（母集団）に属する各ブロックの取得時間の平均と当該各ブロックの取得時間の標準偏差との和」に設定してもよい。なお、上記基準時間は、統計情報解析部１４で算出されて設定されてもよいが、オペレータによって手動により設定されてもよい。
【００２８】
そして、取得時間の平均や標準偏差を算出する対象となるブロック群（母集団）は、例えば、（１）直近の一定期間に読み出されたブロック群、（２）キャッシュするか否か判断する対象となるブロックが読み出されたサイトから直近の一定時間に読み出されたブロック群、（３）キャッシュするか否か判断対象となるブロックが属していた分割前のデータやチャンクから分割されたブロック群、などが、統計情報解析部１４にて設定される。そして、設定されたブロック群（母集団）に属する各ブロックの取得時間の平均等から、統計情報解析部１４が基準時間を算出して設定する。このため、統計情報解析部１４は、直近の一定期間に読み出されたブロック群における取得時間や、各サイトから読み出されたブロック群における取得時間、分割前のデータ毎のブロック群における取得時間、を常に計測して、各ブロック群の取得時間の平均や標準偏差を常に算出している。但し、上述した統計情報解析部１４によるブロック群の取得時間の平均や標準偏差の算出は、オペレータによって手動で行われてもよい。
【００２９】
さらに、統計情報解析部１４は、読み出されたブロックの取得時間のばらつきの度合いに応じて、取得時間の平均や標準偏差を算出する対象となるブロック群を変更するよう作動する。例えば、一定時間に読み出された各ブロックの取得時間の最小値と最大値の差や標準偏差にて表されるばらつきを計測して、当該ばらつきの値が、設定された基準値未満である場合には、ばらつきがないと判断し、上記（１）の直近の一定時間に読み出されたブロック群を母集団として用いるよう設定する。また、サイト毎に取得したブロックの取得時間のばらつきが、設定された基準値を超えている場合には、上記（２）のサイト毎のブロック群を用いるよう設定する。さらに、全体的にブロックの取得時間のばらつきが設定された基準値よりも大きい場合には、ばらつきが非常に大きいと判断し、上記（３）のデータ毎のブロック群を用いるよう設定する。但し、上述したブロック群の変更は、オペレータによって手動で行われてもよい。
【００３０】
以上のようにして統計情報解析部１４にてキャッシュ１２に格納すべきと判断されたブロックは、分散制御部１３にてキャッシュ１２に格納される。
【００３１】
なお、上記ディスクアクセス部１５は、自サイトに装備されたディスク装置１７にアクセスして、ブロックの書き込み、ブロックの読み出しを制御する。また、ネットワークアクセス部１６は、ネットワークＮを介して各サイトと通信を行う。
【００３２】
次に、ストレージ装置２、つまり、サイト２の構成について説明する。サイト２は、装備された演算装置にプログラムが組み込まれることで構築された、ネットワークアクセス部２１と、分散制御部２２と、ディスクアクセス部２３と、を備える。また、サイト２は、データを分割したブロックを格納するハードディスクドライブなどのディスク装置２４（記憶手段）を備えている。
【００３３】
そして、上記サイト２は、他のサイトからのブロック入出力要求に対して、ネットワークアクセス部２１が受信した要求を、分散制御部２２が解釈して、ディスクアクセス部２３を介してディスク装置２４への入出力を行う。つまり、本実施形態では、サイト２は、サイト１からのブロックの書き込み要求に応じて、当該ブロックをディスク装置２４に記憶したり、読み込み要求に応じて、ディスク装置２４に記憶されているブロックを読み込んでサイト１に渡す処理を行う。
【００３４】
なお、サイトｎはサイト２と同様の構成をとっており、ネットワークアクセス部３１と、分散制御部３２と、ディスクアクセス部３３と、ディスク装置３４と、を備える。そして、各部の構成は上述したサイト２と同様であるため、これらの詳細な説明は省略する。
【００３５】
［動作］
次に、上述したストレージシステムの動作を、図３乃至図５を参照して説明する。まず、図３を参照してサイト１のアプリケーション１１からデータを書き込む場合の動作を説明する。
【００３６】
アプリケーション１１がデータ書き込みを分散制御部１３に要求する（ステップＳ１）。すると、分散制御部１３は、データを複数のチャンクに分割し（ステップＳ２）、当該各チャンクをブロックに分割する（ステップＳ３）。このとき、分散制御部１３は、ブロックが属しているデータやチャンクを識別できる識別子を付与する（ステップＳ３）。
【００３７】
続いて、分散制御部１３は、自サイト１のディスクアクセス部１５とネットワークアクセス部１６に対してブロックの保存を要求する。すると、自サイト１のネットワークアクセス部１６は、他サイト２，・・・，ｎのネットワークアクセス部２１，３１等と通信し、他サイト２，・・・，ｎにブロック保存要求を送る。他サイト２，・・・，ｎは、ネットワークアクセス部２１，３１等が受信したブロック保存要求を分散制御部２２，３２等が解釈し、ディスクアクセス部２３，３３等を介してディスク装置２４，３４等に保存する（ステップＳ４）。これにより、データを分割したチャンクをさらに分割したブロックが、複数のディスク装置に分散して記憶される。
【００３８】
次に、図４を参照して、サイト１のアプリケーション１１がデータを読み込む場合の動作を説明する。アプリケーションがデータ読み込みを分散制御部１３に要求する（ステップＳ１１）。すると、分散制御部１３は、読み込み要求にかかるデータの復元に必要なチャンクを割り出す（ステップＳ１２）。例えば、データとチャンクの対応を記録するデータベースから割り出す。
【００３９】
続いて、分散制御部１３は、必要なチャンクを構成するブロックを割り出す（ステップＳ１３）。例えば、チャンクとブロックの対応を記録するデータベースから割り出す。そして、分散制御部１３は、キャッシュ１２に格納されていないブロックを、自サイトのディスクアクセス部１５を介してディスク装置１７と、ネットワークアクセス部１６を介して他ホスト２，・・・，ｎとから、それぞれ取得する（ステップＳ１４）。
【００４０】
続いて、分散制御部１３は、各サイト１，２，・・・，ｎから取得したブロックと、キャッシュ１２に格納されているブロックの識別子から、これらブロックが同一のチャンクから分割されたブロックであるかどうかを確認する（ステップＳ１５）。このとき、仮に、同一のチャンクではないものがあった場合は、分散制御部１３は、異なる識別子のブロックのキャッシュを無効化し、ディスクアクセス部１５やネットワークアクセス部１６を介して、各サイトから他のブロックを取得する（ステップＳ１６）。
【００４１】
例えば、チャンクがブロック１からブロックｎに分割されているとする。ブロック１がキャッシュに格納されている場合、各サイトからブロック２からブロックｎを取得し、ブロック１はキャッシュされているものを使用する。ブロック１からブロックｎが揃ったところで、識別子を確認し、これらが同一のチャンクから分割されたものかを確認する。当該チャンクが更新されていて、かつ、キャッシュされていたブロック１が古い場合には、識別子からブロック１が異なるチャンクから分割されたものであることが分かる。この場合、ブロック１のキャッシュを無効にし、ブロック１が存在するサイトから最新のブロック１を取得する。
【００４２】
その後、集めたブロックからチャンクを復元すると共に（ステップＳ１７）、当該チャンクからデータを復元し、かかるデータをアプリケーション１１に返却する（ステップＳ１８）。
【００４３】
次に、図５を参照して取得したブロックをキャッシュ１２に格納するか否かを決定する動作を説明する。
【００４４】
各サイトから読み込んだブロックをキャッシュ１２に格納するか否かは、該当するブロックの読み込みコスト、つまり、サイトから該当するブロックを取得する際に要した時間である取得時間によって決定する。
【００４５】
具体的に、統計情報解析部１４は、後述する母集団を形成するブロック群に属する各ブロックの取得時間の平均と標準偏差を計算する（ステップＳ２１）。そして、取得したブロックについて、当該ブロックの取得時間が、上記計算された平均の１．２倍（基準時間）未満ならば（ステップＳ２２：Ｎｏ）、当該ブロックはキャッシュしない（ステップＳ２５）。また、取得したブロックの取得時間が、上記平均の１．２倍以上であっても（ステップＳ２２：Ｙｅｓ）、当該ブロックの取得時間が、上記計算された平均＋標準偏差（基準時間）未満ならば（ステップＳ２３：Ｎｏ）、当該ブロックはキャッシュしない（ステップＳ２５）。これらの条件に当てはまらないブロック、言い換えると、取得したブロックの取得時間が、母集団を形成するブロック群の取得時間の平均の１．２倍以上であり（ステップＳ２２：Ｙｅｓ）、平均＋標準偏差以上である場合には（ステップＳ２３：Ｙｅｓ）、そのブロックをキャッシュ１２に格納する（ステップＳ２４）。
【００４６】
なお、上述したように、取得したブロックをキャッシュ１２に格納するか否かを判断する基準となる取得時間の平均や標準偏差を算出するために用いられるブロック群が属する母集団は、随時、変更設定可能である。例えば、上述したように、ブロックの取得時間にばらつきが少ないと判断された場合には、読み込まれた全ブロックの内、直近のある一定期間に読み込まれたブロック群を母集団とする。また、サイトごとにブロックの取得時間にばらつきがあると判断された場合には、サイト毎に、当該各サイトから取得したブロック群を母集団とする。例えば、サイトｎから取得したブロックをキャッシュするか否かを判断する場合には、母集団はサイトｎから取得した直近のある一定期間のブロックとする。また、ブロックの取得時間のばらつきが非常に大きい場合、１つのチャンクを母集団とする。例えば、あるチャンクを構成するブロック１からブロックｎを母集団として、各ブロックについてキャッシュ１２に格納するか否かを判断する。
【００４７】
上述した母集団選択は、統計情報解析部１４にて、ブロック取得時間のばらつきを自動で計算して自動で切り替えてもよく、手動のシステムチューニングにより選択することも可能である。
【００４８】
以上のように、本発明では、データを分割して複数の記憶装置に分散配置するストレージシステムにおいて、分割データであるブロックの読み込みコストつまり取得時間が長いものをキャッシュに格納している。このため、データの一部の取得に遅延が生じた場合であっても、かかる一部をキャッシュすることで、次回取得時に遅延が発生することを抑制し、データ取得を高速化することができる。従って、ブロックから復元して得られるデータの読み取り時間の高速化を図ることができると共に、全体としてデータの取得時間の平準化を図ることができる。
【００４９】
また、取得時間の長いブロックのみをキャッシュに格納するため、当該キャッシュの容量がデータ全体をキャッシュする場合と比較して大幅に少ない容量で済む。このため、低コストにて、上述したようにデータ取得時間の高速化及び平準化を図ることができる。
【００５０】
さらに、データが更新されている場合であっても、各ブロックに付与された識別子を比較することで、容易かつ正確にデータを復元することができると共に、不要となったブロックのキャッシュを無効化することができる。従って、よりキャッシュの容量を抑制できると共に、簡易な構成で信頼性の高いストレージシステムを実現することができる。
【００５１】
＜実施形態２＞
次に、本発明の第２の実施形態を、図６乃至図９を参照して説明する。図６は、ストレージシステムの構成を示す機能ブロック図である。図７は、ストレージシステムに書き込まれるデータの構造を示す図である。図８乃至図９は、ストレージシステムの動作を示すフローチャートである。
【００５２】
本実施形態におけるストレージシステムは、データを分割及び分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
【００５３】
［構成］
図６に示すように、本実施形態におけるストレージシステムは、上述した実施形態１と同様に、ネットワークＮを介して接続された複数のストレージ装置１０１，１０２，１０３を備えている。なお、以下では、各ストレージ装置を「サイト」と呼ぶこととし、ｎ個のサイトがネットワークＮを介して接続されていることとする。
【００５４】
各サイト１，２，・・・，ｎは、演算装置と記憶装置とを備えたコンピュータにて構成されている。そして、特に、各サイト１，２，・・・，ｎは、ディスク装置１１７，１２４，１３４を備えており、後述するように、ファイルを所定容量に分割したチャンクをさらに分割したブロック（分割データ）を、分散して格納するストレージ装置として機能している。
【００５５】
まず、サイト１は、装備された演算装置にプログラムが組み込まれることで構築された、アプリケーション１１１と、分散制御部１１３と、統計情報解析部１１４と、ディスクアクセス部１１５と、ネットワークアクセス部１１６と、を備える。また、サイト１は、ディスク装置１１７から読み出したデータであるブロックを一時的に格納するフラッシュメモリなどで構成されたキャッシュ１１２（キャッシュメモリ）を備えている。また、データを分割したブロックを格納するハードディスクドライブなどのディスク装置１１７（記憶手段）を備えている。
【００５６】
そして、さらに、サイト１は、ストレージシステム自体がコンテンツアドレスストレージシステムとして作動すべく、ファイルシステム制御部１１８を備えている。具体的に、ファイルシステム制御部１１８は、アプリケーション１１１からファイルの書き込み指令を受けると、図７に示すように、ファイルをチャンクＡ，Ｂ，Ｃに分割し、当該チャンクをさらにｎ個の分割データ部分に分割したブロックを生成する。そして、ブロック単位にハッシュ値が計算され、当該ブロックの重複排除を行う。つまり、同じ内容のブロックは１つだけ保存される。このため、既に保存されているブロックを新たにディスクに保存することはなく、ファイルシステムは既に保存されているブロックの格納場所を参照するようリンクを張るだけである。なお、ブロックはチャンクを重複排除や分散配置しやすい任意の方法で分割したものであり、一般にブロック単体は意味を持つ（解釈可能な）情報ではない。
【００５７】
そして、上記分散制御部１１３は、上述した実施形態１とほぼ同様に作動し、各ブロックを各サイトのディスク装置に分散して記憶すると共に、読み出し時には、複数のディスク装置から読み出したブロックから、チャンクさらにはファイルを復元する。
【００５８】
また、上述した実施形態１と同様に、統計情報解析部１１４は、分散制御部１１３にて各サイトから取得した各ブロックの取得コスト、つまり、本実施形態では、各ブロックを各サイトのディスク装置から読み出すときにかかった時間、を計測する。そして、計測した読み出し時間に応じて、各ブロックをキャッシュ１１２に格納するか否かを判断する。このとき、特に、設定された基準時間よりもサイトからの取得時間が長いブロックのみを、キャッシュ１２に格納すると判断する。なお、ブロックをキャッシュ１１２に格納するか否かを判断する基準時間の変更設定については、上述した実施形態１の場合と同様であるため、詳細な説明は省略する。
【００５９】
また、サイト２，ｎは、実施形態１のものとほぼ同様の構成をとっており、ネットワークアクセス部１２１，１３１と、分散制御部１２２，１３２と、ディスクアクセス部１２３，１３３と、ディスク装置１２４，１３４と、を備えている。これらの構成の詳細についても説明は省略する。
【００６０】
［動作］
次に、上述したストレージシステムの動作を、図８乃至図９を参照して説明する。まず、図８を参照してサイト１のアプリケーション１１からデータを書き込む場合の動作を説明する。
【００６１】
アプリケーション１１がデータ書き込みをファイルシステム制御部１１８に要求する（ステップＳ３１）。すると、ファイルシステム制御部１１８は、データを複数のチャンクに分割し（ステップＳ３２）、当該各チャンクをブロックに分割する（ステップＳ３３）。そして、ファイルシステム制御部１１８は、ブロックのハッシュ値を計算して、ブロックの重複排除を行う（ステップＳ３４）。つまり、同一のハッシュ値が存在している場合には、そのブロックと同一のブロックが既に記憶されていると判断できるため、新たに記憶しようとしたブロック自体は記憶せず、既に記憶されているブロックの格納位置を参照することで、新たに記憶しようとしたブロックを格納したこととする。
【００６２】
そして、ファイルシステム制御部１１８は、分散制御部１１３に対して、重複排除されなかったブロックの保存を要求する。すると、分散制御部１１３は、ディスクアクセス部１１５を介して自サイトのディスク装置１１７と、ネットワークアクセス部１１６を介して他サイトのディスク装置１２３，１３４等とに、ブロックを分散して保存する（ステップＳ３５）。
【００６３】
次に、図９を参照して、サイト１のアプリケーション１１１がデータを読み込む場合の動作を説明する。アプリケーションがデータ読み込みをファイルシステム制御部１１８に要求する（ステップＳ４１）。すると、ファイルシステム制御部１１８は、読み込み要求にかかるデータの復元に必要なチャンクを割り出し（ステップＳ４２）、さらに、必要なチャンクを構成するブロックを割り出す（ステップＳ４３）。
【００６４】
そして、ファイルシステム制御部１１８が、必要なブロックを分散制御部１１３に要求すると、当該分散制御部１１３はネットワークアクセス部１１６を介してキャッシュされていないブロックを各サイトから取得する（ステップＳ４４）。その後、分散制御部１１３は、各サイトから取得したブロックと、キャッシュ１２に格納されていたブロックを合わせて、ファイルシステム制御部１１８に渡す。
【００６５】
ファイルシステム制御部１１８は、取得したブロックからチャンクを復元し（ステップＳ４５）、当該チャンクからファイルを復元する（ステップＳ４６）。そして、ファイルシステム制御部１１８は、アプリケーション１１１にファイルを返却する（ステップＳ４７）。
【００６６】
なお、ブロックをキャッシュ１１２に格納するか否かを決定する方法は、上述した実施形態１と同様であるため、その説明は省略する。また、コンテンツアドレスストレージシステムでは、ハッシュ値に対してデータは一意に決まる。このため、ハッシュ値をキーにしたブロックについて、内容が変わることはなく、キャッシュの更新や無効化は不要である。
【００６７】
以上のように、本発明は、データを分割して複数の記憶装置に分散して記憶するコンテンツアドレスストレージシステムなどのストレージシステムに利用することで、キャッシュメモリの容量を抑えてコストを抑制しつつ、データ読み取り時間の短縮化及び平準化を図ることができる。
【００６８】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージシステム及びストレージ装置２０１の構成の概略について図１０を参照して説明する。また、本発明における、プログラム、データ記憶再生方法の構成について説明する。但し、本発明は、以下の構成に限定されない。
【００６９】
（付記１）
複数の記憶手段２１０と、
データを複数に分割した分割データを前記複数の記憶手段２１０に分散して記憶すると共に、前記複数の記憶手段２１０から分割データを読み出して分割前のデータを復元するデータ処理手段２１１と、
前記記憶手段２１０から読み出した分割データを一時的に格納するキャッシュメモリと２１２、を備え、
前記データ処理手段２１１は、前記記憶手段２１０から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを前記キャッシュメモリ２１２に格納すると共に、当該キャッシュメモリ２１２に格納された分割データを用いてデータの復元を行う、
ストレージシステム。
【００７０】
（付記２）
付記１に記載のストレージシステムであって、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間が、設定された基準時間よりも長いもののみを前記キャッシュメモリに格納する、
ストレージシステム。
【００７１】
（付記３）
付記２に記載のストレージシステムであって、
前記基準時間は、読み出された分割データのうち所定の条件を満たす分割データ群の読み出し時間の平均時間に基づく値である、
ストレージシステム。
【００７２】
（付記４）
付記３に記載のストレージシステムであって、
前記基準時間は、読み出された分割データの読み出し時間のばらつきの度合いに応じて設定された条件を満たす分割データ群の読み出し時間の平均時間に基づく値である、
ストレージシステム。
【００７３】
（付記５）
付記３又は４に記載のストレージシステムであって、
前記基準時間は、直近の一定期間に読み出された分割データ群の読み出し時間の平均時間に基づく値である、
ストレージシステム。
【００７４】
（付記６）
付記３又は４に記載のストレージシステムであって、
前記基準時間は、前記記憶手段毎に対応して設定された、当該記憶手段から読み出された分割データ群の読み出し時間の平均時間に基づく値であり、
前記データ処理手段は、特定の前記記憶手段から読み出した分割データの読み出しにかかった時間が、当該特定の記憶手段に対応して設定された前記基準時間よりも長いもののみを前記キャッシュメモリに格納する、
ストレージシステム。
【００７５】
（付記７）
付記３又は４に記載のストレージシステムであって、
前記基準時間は、分割前のデータ毎に対応して設定された、当該データから分割された分割データ群の読み出し時間の平均時間に基づく値であり、
前記データ処理手段は、特定のデータから分割された分割データの読み出しにかかった時間が、当該特定のデータに対応して設定された前記基準時間よりも長いもののみを前記キャッシュメモリに格納する、
ストレージシステム。
【００７６】
（付記８）
付記１乃至７のいずれかに記載のストレージシステムであって、
前記データ処理手段は、分割前のデータを識別する識別情報を、当該データを分割した分割データに付加して格納すると共に、当該識別情報が同一の分割データを用いてデータの復元を行う、
ストレージシステム。
【００７７】
（付記９）
付記８に記載のストレージシステムであって、
前記識別情報は、前記データの更新時を特定する情報を含み、
前記データ処理手段は、復元するデータを構成する分割データのうち前記識別情報が他と異なる分割データを前記キャッシュメモリから削除する、
ストレージシステム。
【００７８】
（付記１０）
データを複数に分割した分割データを複数の記憶手段に分散して記憶すると共に、複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段と、
前記記憶手段から読み出した分割データを一時的に格納するキャッシュメモリと、を備え、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを前記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いてデータの復元を行う、
ストレージ装置。
【００７９】
（付記１１）
付記１０に記載のストレージ装置であって、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間が、設定された基準時間よりも長いもののみを前記キャッシュメモリに格納する、
ストレージ装置。
【００８０】
（付記１２）
キャッシュメモリを備えた情報処理装置に、
データを複数に分割した分割データを複数の記憶手段に分散して記憶すると共に、複数の記憶手段から分割データを読み出して分割前のデータを復元するデータ処理手段を実現させると共に、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを前記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いてデータの復元を行う、
プログラム。
【００８１】
（付記１３）
付記１２に記載のプログラムであって、
前記データ処理手段は、前記記憶手段から読み出した分割データの読み出しにかかった時間が、設定された基準時間よりも長いもののみを前記キャッシュメモリに格納する、
プログラム。
【００８２】
（付記１４）
キャッシュメモリを備えた情報処理装置にて、
データ書き込み時に、データを複数に分割した分割データを複数の記憶手段に分散して記憶し、
データ読み出し時に、複数の記憶手段から分割データを読み出して分割前のデータを復元すると共に、
前記データ読み出し時に、前記記憶手段から読み出した分割データの読み出しにかかった時間に応じて、当該分割データを前記キャッシュメモリに格納すると共に、当該キャッシュメモリに格納された分割データを用いてデータの復元を行う、
データ記憶再生方法。
【００８３】
（付記１５）
付記１４に記載のデータ記憶再生方法であって、
前記データ読み出し時に、前記記憶手段から読み出した分割データの読み出しにかかった時間が、設定された基準時間よりも長いもののみを前記キャッシュメモリに格納する、
データ記憶再生方法。
【符号の説明】
【００８４】
１，２，３  ストレージ装置
１１    アプリケーション
１２    キャッシュ
１３，２２，３２    分散制御部
１４    統計情報解析部
１５，２３，３３    ディスクアクセス部
１６，２１，３１    ネットワークアクセス部
１７，２４，３４  ディスク装置
１０１，１０２，１０３  ストレージ装置
１１１  アプリケーション
１１２  キャッシュ
１１３，１２２，１３２  分散制御部
１１４  統計情報解析部
１１５，１２３，１３３  ディスクアクセス部
１１６，１２１，１３１  ネットワークアクセス部
１１７，１２４，１３４  ディスク装置
１１８  ファイルシステム制御部
２０１  ストレージ装置
２１０  記憶手段
２１１  データ処理手段
２１２  キャッシュメモリ
Ｎ      ネットワーク
【図１】
0005569074.tif 000002
【図２】
0005569074.tif 000003
【図３】
0005569074.tif 000004
【図４】
0005569074.tif 000005
【図５】
0005569074.tif 000006
【図６】
0005569074.tif 000007
【図７】
0005569074.tif 000008
【図８】
0005569074.tif 000009
【図９】
0005569074.tif 000010
【図１０】
0005569074.tif 000011