(57)【要約】【課題】高コスト、及び、性能の低下を解決するストレージシステムを提供する。【解決手段】第一記憶装置と、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置と、を備える。そして、記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、上記記憶対象データを格納すると共にその格納位置を記憶対象データから算出した上記特徴データに基づいて管理するデータ管理部と、上記記憶対象データから算出した上記特徴データに基づいて、新たに記憶する上記記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定する重複判定部と、を備える。また、上記データ管理部は、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する。【選択図】図８
2010218194.tif 000002
【特許請求の範囲】
【請求項１】
第一記憶装置と、格納されたデータの読み出し速度が前記第一記憶装置よりも高速な第二記憶装置と、を備えると共に、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
前記記憶対象データを前記第一記憶装置あるいは前記第二記憶装置に格納すると共に、前記記憶対象データの格納位置を当該記憶対象データから算出した前記特徴データに基づいて管理するデータ管理部と、
前記記憶対象データから算出した前記特徴データに基づいて、新たに記憶する前記記憶対象データと同一の前記記憶対象データが既に前記第一記憶装置に格納されているか否かを判定する重複判定部と、を備え、
前記データ管理部は、前記新たに記憶する記憶対象データと同一の前記記憶対象データが前記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている前記記憶対象データを前記第二記憶装置に格納する、
ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記データ管理部は、前記第一記憶装置に既に格納されている前記記憶対象データ毎の前記重複判定部による判定回数に基づいて、前記第一記憶装置に記憶されている記憶対象データを前記第二記憶装置に格納する、
ストレージシステム。
【請求項３】
請求項１又は２記載のストレージシステムであって、
前記第一記憶装置に既に格納されている前記記憶対象データ毎に、前記重複判定部にて前記新たに記憶する記憶対象データと同一であると判定された回数である重複数をカウントする重複数カウント部を備え、
前記データ管理部は、前記重複数が予め設定された数を超えた前記第一記憶装置に既に格納されている前記記憶対象データを、前記第二記憶装置に格納する、
ストレージシステム。
【請求項４】
請求項１乃至３のいずれか一項に記載のストレージシステムであって、
前記データ管理部は、前記第二記憶装置に格納した前記第一記憶装置に記憶されている前記記憶対象データを無効化する、
ストレージシステム。
【請求項５】
請求項１乃至４のいずれか一項に記載のストレージシステムであって、
前記データ管理部は、新たに記憶する前記記憶対象データのサイズが予め設定された値よりも小さい場合に、当該記憶対象データを前記第二記憶装置に格納する、
ストレージシステム。
【請求項６】
請求項１乃至５のいずれか一項に記載のストレージシステムであって、
前記データ管理部は、新たに同時に記憶する前記記憶対象データが予め設定された数以上存在する場合、当該同時に記憶する前記記憶対象データのうちの一部あるいは全部を前記第二記憶装置に格納する、
ストレージシステム。
【請求項７】
請求項１乃至６のいずれか一項に記載のストレージシステムであって、
前記記憶対象データは、所定のファイルデータを複数に分割したブロックデータである、
ストレージシステム。
【請求項８】
請求項１乃至７のいずれか一項に記載のストレージシステムであって、
前記第一記憶装置は、ハードディスクドライブであり、前記第二記憶装置は、ＳＳＤ（Solid State Drive）である、
ストレージシステム。
【請求項９】
第一記憶装置と、格納されたデータの読み出し速度が前記第一記憶装置よりも高速な第二記憶装置と、を接続し、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
前記記憶対象データを前記第一記憶装置あるいは前記第二記憶装置に格納すると共に、前記記憶対象データの格納位置を当該記憶対象データから算出した前記特徴データに基づいて管理するデータ管理部と、
前記記憶対象データから算出した前記特徴データに基づいて、新たに記憶する前記記憶対象データと同一の前記記憶対象データが既に前記第一記憶装置に格納されているか否かを判定する重複判定部と、を備え、
前記データ管理部は、前記新たに記憶する記憶対象データと同一の前記記憶対象データが前記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている前記記憶対象データを前記第二記憶装置に格納する、
ストレージ装置。
【請求項１０】
請求項９記載のストレージ装置であって、
前記データ管理部は、前記第一記憶装置に既に格納されている前記記憶対象データ毎の前記重複判定部による判定回数に基づいて、前記第一記憶装置に記憶されている記憶対象データを前記第二記憶装置に格納する、
ストレージ装置。
【請求項１１】
第一記憶装置と、格納されたデータの読み出し速度が前記第一記憶装置よりも高速な第二記憶装置と、を接続した情報処理装置に、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
前記記憶対象データを前記第一記憶装置あるいは前記第二記憶装置に格納すると共に、前記記憶対象データの格納位置を当該記憶対象データから算出した前記特徴データに基づいて管理するデータ管理部と、
前記記憶対象データから算出した前記特徴データに基づいて、新たに記憶する前記記憶対象データと同一の前記記憶対象データが既に前記第一記憶装置に格納されているか否かを判定する重複判定部と、を実現させると共に、
前記データ管理部は、前記新たに記憶する記憶対象データと同一の前記記憶対象データが前記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている前記記憶対象データを前記第二記憶装置に格納する、
プログラム。
【請求項１２】
請求項１１記載のプログラムであって、
前記データ管理部は、前記第一記憶装置に既に格納されている前記記憶対象データ毎の前記重複判定部による判定回数に基づいて、前記第一記憶装置に記憶されている記憶対象データを前記第二記憶装置に格納する、
プログラム。
【請求項１３】
記憶対象データのデータ内容に基づいた特徴データを算出し、
前記記憶対象データを、第一記憶装置、あるいは、格納されたデータの読み出し速度が前記第一記憶装置よりも高速な第二記憶装置、に格納して、前記記憶対象データの格納位置を当該記憶対象データから算出した前記特徴データに基づいて管理すると共に、
新たに前記記憶対象データを格納する場合に、当該新たな記憶対象データのデータ内容に基づいた特徴データを算出して、この特徴データに基づいて、前記新たに記憶する記憶対象データと同一の前記記憶対象データが既に前記第一記憶装置に格納されているか否かを判定し、前記新たに記憶する記憶対象データと同一の前記記憶対象データが前記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている前記記憶対象データを前記第二記憶装置に格納する、
データ管理方法。
【請求項１４】
請求項１３記載のデータ管理方法であって、
前記第一記憶装置に既に格納されている前記記憶対象データ毎における、前記新たに記憶する記憶対象データと同一であるか否かの判定回数に基づいて、前記第一記憶装置に記憶されている記憶対象データを前記第二記憶装置に格納する、
データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、格納したデータの内容に応じて格納位置を管理するコンテンツアドレス型のストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
そして、近年で主流のストレージシステムでは、ファイルをシーケンシャルに書き込んだ場合に、実際にデータを格納するハードディスク上においても、可能な限り順番に配置される。すると、書き込み時及び読み込み時におけるハードディスクのシーク回数を減らすことができ、高速な記録再生処理を実現できる。また、同一ファイルあるいは関連するデータを順番に書き込むことで、格納されたデータ間に未記憶領域が生じず、記憶領域を有効に活用することができる。
【０００４】
一方で、近年では、さらなる記憶領域の有効活用を図るべく、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、ファイルを複数のブロックに分割して、ハードディクス上に記録するが、このとき、データブロックのハードディスク上の配置位置を、当該データブロックのデータ内容によって特定している。具体的には、データブロックのデータ内容に応じて特定されるハッシュ値を生成して、このハッシュ値にて格納位置を管理している。従って、ファイルを構成するハッシュ値の並びを使用することで、ファイルの一連のデータを読み出すことができる。
【０００５】
そして、コンテンツアドレスストレージシステムでは、上述したように、データ内容に応じたハッシュ値を用いてデータを管理していることで、同一内容のデータブロックを重複して格納する必要がなく、記憶容量を削減することができる。ここで、例えば、内容の似た複数のファイルを考えた場合、それらのファイルの中には同じ内容のデータブロックが含まれている可能性が高い。このとき、これらのファイルをコンテンツアドレスストレージシステムに格納する場合には、格納するデータブロックのハッシュ値と、すでに格納されているデータブロックのハッシュ値を比較することで、同一のハッシュ値が存在する場合には、すでに同一内容のデータブロックが格納されていることが分かる。このような場合には、そのデータブロックの格納位置を特定するコンテンツアドレスを、格納する予定のデータブロックとして参照して管理することで、当該データブロックの重複記憶を抑制することができる。そして、さらに同一のデータブロックが格納される場合にも、同様に既に記憶されているデータブロックのコンテンツアドレスを参照することで、さらなる重複記憶を抑制することができ、記憶領域の効率的な利用を実現できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３５１７１号公報
【特許文献２】特許第４１４６３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したコンテンツアドレスストレージシステムでは、格納するデータブロックが重複している場合には、かかるデータブロックを格納しないため、ファイル内のデータブロックが並んで配置されない場合が生じる。特に、データサイズの小さなデータブロックが、すでに格納されている他のファイルとの間でランダムな位置に発生している場合には、さらにファイル内の各データブロック間でフラグメント化が生じうる。すると、書き込み時及び読み込み時に、ハードディスクに対する多数のシーク待ちが生じ、高速なデータの記録再生を実現できず、性能が低下する、という問題が生じる。
【０００８】
また、上述したデータの記録再生性能の改善のため、格納されているデータの並び替えなどを定期的に実施することも考えられる。例えば、特許文献２には、ディスクアレイ装置にてデータの再配置を行うことが開示されている。ところが、このようなデータの再配置を行う場合には、ストレージシステムにかかる処理負担が増加することとなり、依然としてシステムの性能が低下する、という問題がある。
【０００９】
一方で、近年では、記憶媒体として、ＳＳＤ（Solid State Drive）も用いられている。このＳＳＤは、シーク時間がなく、ランダムな読み出し性能に優れている。このため、記憶媒体をハードディスクからＳＳＤに替えることで、上述した性能低下の問題を解決できる可能性はある。ところが、ＳＳＤはハードディスクと比較して記憶容量単価が非常に高価である。このため、記憶容量に対するコストが増大する、という問題が生じる。
【００１０】
このため、本発明の目的は、上述した課題である、高コスト化、及び、性能の低下を解決することができるストレージシステムを提供する、ことにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態であるストレージシステムは、
第一記憶装置と、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置と、を備えると共に、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
上記記憶対象データを上記第一記憶装置あるいは上記第二記憶装置に格納すると共に、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理するデータ管理部と、
上記記憶対象データから算出した上記特徴データに基づいて、新たに記憶する上記記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定する重複判定部と、を備え、
上記データ管理部は、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００１２】
また、本発明の他の形態であるストレージ装置は、
第一記憶装置と、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置と、を接続し、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
上記記憶対象データを上記第一記憶装置あるいは上記第二記憶装置に格納すると共に、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理するデータ管理部と、
上記記憶対象データから算出した上記特徴データに基づいて、新たに記憶する上記記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定する重複判定部と、を備え、
上記データ管理部は、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００１３】
また、本発明の他の形態であるプログラムは、
第一記憶装置と、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置と、を接続した情報処理装置に、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
上記記憶対象データを上記第一記憶装置あるいは上記第二記憶装置に格納すると共に、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理するデータ管理部と、
上記記憶対象データから算出した上記特徴データに基づいて、新たに記憶する上記記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定する重複判定部と、を実現させると共に、
上記データ管理部は、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００１４】
また、本発明の他の形態であるデータ管理方法は、
記憶対象データのデータ内容に基づいた特徴データを算出し、
上記記憶対象データを、第一記憶装置、あるいは、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置、に格納して、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理すると共に、
新たに上記記憶対象データを格納する場合に、当該新たな記憶対象データのデータ内容に基づいた特徴データを算出して、この特徴データに基づいて、上記新たに記憶する記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定し、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【発明の効果】
【００１５】
本発明は、以上のように構成されることにより、低コストであり、性能の向上を図ることができるストレージシステムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図２】図１に開示したストレージシステムに格納されるデータの一例を示す図である。
【図３】図１に開示したストレージシステムにおけるデータ格納処理の様子を示す説明図である。
【図４】図１に開示したストレージシステムにおけるデータ格納処理の様子を示す説明図である。
【図５】図１に開示したストレージシステムの動作を示すフローチャートである。
【図６】図１に開示したストレージシステムの動作を示すフローチャートである。
【図７】図１に開示したストレージシステムの動作を示すフローチャートである。
【図８】実施形態２におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１７】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図７を参照して説明する。図１は、ストレージシステムの構成を示す機能ブロック図である。図２（Ａ）は、格納位置記憶部に記憶されたデータの一例を示す図であり、図２（Ｂ）は、重複数記憶部に記憶されたデータの一例を示す図である。図３乃至図４は、ストレージシステムにおけるデータ格納処理の様子を示す図である。図５乃至図７は、ストレージシステムの動作を示すフローチャートである。
【００１８】
［構成］
本実施形態におけるストレージシステムは、ネットワークＮを介してクライアント４のコンピュータと接続されたストレージ装置１と、このストレージ装置１に接続された複数の記憶装置２１，２２，２３，３１，３２と、を備えている。そして、上記クライアント４は、一般的な情報処理装置であり、ネットワークＮを介してストレージ装置１にファイルを書き込んだり、読み出したりする。
【００１９】
上記複数の記憶装置２１，２２，２３，３１，３２は、第一記憶装置としてのハードディスクドライブ（ＨＤＤ）２１，２２，２３と、第二記憶装置としてのフラッシュメモリを用いたドライブ装置であるＳＳＤ（Solid State Drive）３１，３２である。このＳＳＤは、ＨＤＤとは異なりディスクを有しないため、格納されたデータの読出し速度がＨＤＤよりも高速である。なお、図１では、３台のＨＤＤ２１，２２，２３と、２台のＳＳＤ３１，３２とを備えている場合を例示しているが、それぞれの台数は、上述した台数に限定されない。また、ＨＤＤとＳＳＤとは、それぞれ他の記憶装置でもよい。
【００２０】
上記ストレージ装置１は、一般的な情報処理装置であり、上述したクライアント４からの要求に応じて、ファイルをＨＤＤやＳＳＤに書き込んだり、ＨＤＤやＳＳＤから読み出すよう作動する。そして、ストレージ装置１は、装備された演算装置にプログラムが組み込まれることによって構築された、ファイル分割部１１と、Ｈａｓｈ計算部１２と、重複判定部１３と、重複数管理部１４と、記憶再生部１５と、を備えている。また、ストレージ装置１は、フラッシュメモリや他のハードディスクといった記憶装置を装備しており、重複数記憶部１６と、格納位置記憶部１７と、を備えている。以下、各構成について詳述する。
【００２１】
上記ファイル分割部１１は、記憶対象であるファイルを、実際にＨＤＤ２１等やＳＳＤ３１等に格納する対象となるブロックデータ（記憶対象データ）に分割する。例えば、図３（Ａ）に示すように、ファイルＡを複数のブロックデータａ１，ａ２等に分割する。このとき、所定のデータサイズ、あるいは、他の格納されているデータに応じて任意のデータサイズのブロックデータに分割する。なお、はじめからデータサイズの小さいファイルは、分割しないこともあり、ファイル自体が記憶対象データであるブロックデータとなりうる。
【００２２】
上記Ｈａｓｈ計算部１２（特徴算出部）は、上記分割されたブロックデータのＨａｓｈ値を計算する。ここで、Ｈａｓｈ値とは、上記ブロックデータのデータ自体を、所定のＨａｓｈ関数にて一定の長さのデータに要約・変換した値である。従って、Ｈａｓｈ値は、ブロックデータのデータ内容に基づく特徴データとなり、当該ブロックデータに固有の値となる可能性が高い。このＨａｓｈ値は、後述するように、既に格納されているブロックデータとの重複判定に用いられ、また、ブロックデータの格納位置を参照するアドレスデータとしても用いられる。
【００２３】
上記重複判定部１３は、上述したＨａｓｈ値を用いて、そのブロックデータと同一のデータ内容のデータがＨＤＤ２１等やＳＳＤ３１等に記憶されているか否かを判定する。具体的には、新たに記憶するブロックデータのＨａｓｈ値が、後述する格納位置記憶部１７のコンテンツアドレスなど、ストレージシステム内に既に記憶されているか否かを調べる。そして、同一のＨａｓｈ値が既に記憶されている場合には、同一内容のブロックデータが既にＨＤＤ２１等やＳＳＤ３１等に記憶されていると判定する。一方、同一のＨａｓｈ値が記憶されていなければ、同一内容のブロックデータがまだＨＤＤ２１等やＳＳＤ３１等に記憶されていないと判定する。そして、その判定結果を、重複数管理部１４や記録再生部１５に通知する。
【００２４】
上記記録再生部１５（データ管理部）は、ストレージシステムにおけるＨＤＤ２１等やＳＳＤ３１等に対するブロックデータの書き込み、あるいは、読み出しを制御する。基本的な機能としては、まず、重複判定部１３が新たな記憶対象であるブロックデータのＨａｓｈ値が記憶されていないと判定した場合には、当該ブロックデータを圧縮して、ＨＤＤ２１等あるいはＳＳＤ３１等に格納する。そして、ブロックデータを格納した位置を、当該ブロックデータのＨａｓｈ値を用いたコンテンツアドレスにて参照して管理する。
【００２５】
一例を挙げると、図３（Ａ）に示すように、ブロックデータａ１を圧縮した圧縮ブロックデータａ１’をＨＤＤに格納すると、この格納位置をブロックデータａ１のＨａｓｈ値を用いたコンテンツアドレスＣＡにて参照するよう設定する。つまり、ブロックデータａ１に対応するコンテンツアドレスＣＡを設定する。そして、この圧縮ブロックデータａ１’の格納位置を特定するデータを、図２（Ａ）に示すように、これを参照するコンテンツアドレスＣＡと関連付けて、格納位置記憶部１７に記憶しておく。このようにすることで、後にブロックデータａ１を読み出すときには、当該ブロックデータａ１を特定するコンテンツアドレスＣＡに関連付けて記憶された格納位置を参照することで、当該ブロックデータａ１（圧縮ブロックデータａ１’）を読み出すことができる。
【００２６】
また、記録再生部１５の基本的な機能として、重複判定部１３が新たな記憶対象であるブロックデータのＨａｓｈ値が記憶されている判定した場合には、当該ブロックデータを新たに記憶せず、既にＨＤＤ２１等あるいはＳＳＤ３１等に記憶されている同一内容のブロックデータを参照する処理を行う。つまり、既に記憶されている同一内容のブロックデータを同じ値のコンテンツアドレスにて参照することで、この既に記憶されているブロックデータを、新たに記憶するブロックデータとして扱う。
【００２７】
一例を挙げると、図３（Ｂ）に示すように、新たに記憶するファイルＢのブロックデータｂ１が既に記憶されているブロックデータａ１と同一であるとする。この場合には、ブロックデータｂ１（ａ１）のＨａｓｈ値は、既に記憶されているブロックデータａ１のＨａｓｈ値と同一となるため、ブロックデータｂ１を新たに記憶することなく、既に記憶されているブロックデータａ１を圧縮した圧縮ブロックデータａ１’の格納位置を同一のコンテンツアドレスＣＡにて参照する。そして、後にファイルＢのブロックデータｂ１つまりブロックデータａ１を読み出すときには、コンテンツアドレスＣＡに関連付けて記憶された格納位置を参照することで、当該ブロックデータａ１（圧縮ブロックデータａ１’）をブロックデータｂ１として読み出すことができる。
【００２８】
また、上記重複数管理部１４（重複数カウント部）は、上述した重複判定部１３にて、既に格納されている所定のファイルのブロックデータが、新たに記憶する他のファイルのブロックデータと同一であると判定された回数を、重複数としてカウントする。そして、その既に記憶されているブロックデータを参照するコンテンツアドレス毎に、カウントした重複数を関連付けて、重複数記憶部１６に記憶する。つまり、重複数管理部１４は、既に記憶されている所定のファイルのブロックデータが、他のファイルのブロックデータとして参照されている数を、重複数としてカウントして記憶する。
【００２９】
例えば、図３（Ｂ）に示すブロックデータａ１（圧縮ブロックデータａ１’）は、ファイルＢのブロックデータｂ１として参照されているため、重複数は「１」となり、当該ブロックデータａ１（ａ１’）を参照するコンテンツアドレスＣＡに関連付けられて記憶される。なお、重複数のカウントの仕方は上記方法に限定されず、例えば、ブロックデータが参照されている数としてもよい。一例として、図３（Ｂ）に示すブロックデータａ１（ａ１’）の場合には、ファイルＡとファイルＢとにより参照されているため、重複数を「２」としてもよい。
【００３０】
ここで、上述した記録再生部１５（データ管理部）がさらに有する機能について説明する。記録再生部１５は、上述した重複数に基づいて、既にＨＤＤ２１〜２３に記憶されているブロックデータを、ＳＳＤ３１，３２に記憶する機能を有する。
【００３１】
具体的には、まず、図４（Ａ）に示すように、ファイルＡ，Ｂ，・・・，Ｎに含まれるブロックデータ（圧縮ブロックデータａ１’）が同一のコンテンツアドレスにて参照されて、ＨＤＤに格納されている場合を考える。このとき、重複数管理部１４にて管理されている上記ブロックデータ（ａ１’）のコンテンツアドレスの参照数が、予め設定された数（閾値）を超えると、このコンテンツアドレスにて参照される格納位置のブロックデータ（圧縮ブロックデータａ１’）を取得する。そして、このブロックデータが格納されている記憶装置がＨＤＤ２１〜２３であるか、ＳＳＤ３１，３２であるかを判定する。このとき、図４（Ａ）に示すように、ＨＤＤ２１〜２３に格納されている場合には、図４（Ｂ）の×印に示すように、当該ＨＤＤ２１〜２３内に格納されているブロックデータ（ａ１’）を、例えば読み取り不可となるよう無効化する。そして、無効化する前に読み出した重複数が閾値を超えたブロックデータを圧縮して、図４（Ｂ）の符号ａ１’に示すように、ＳＳＤ３１，３２に格納する。
【００３２】
このとき、ＳＳＤ３１，３２に格納したブロックデータの格納位置を参照するコンテンツアドレスは変更せず、図２（Ａ）に示すように、そのコンテンツアドレスに関連付けられた格納位置を表すデータのみを変更して、格納位置記憶部１７に記憶する。これにより、同じコンテンツアドレスにて特定される格納位置を参照することで、ＳＳＤ３１，３２内に記憶されたブロックデータ（ａ１’）を読み出すことができる。
【００３３】
また、上記記録再生部１５（データ管理部）は、初めて記憶するブロックデータを、そのデータサイズや同時に記憶するデータ数に応じて、ＨＤＤ２１〜２３かＳＳＤ３１，３２に振り分けて格納する機能も有する。具体的には、まず、上述した重複判定部１３にて、新たに記憶するブロックデータと同一のブロックデータが、まだ記憶されていないと判断したとする。この場合には、新たに記憶するブロックデータを圧縮して、そのデータサイズを調べる。このとき、ブロックデータのデータサイズが、予め設定された値である基準サイズよりも小さい場合には、ＳＳＤ３１，３２に格納する。
【００３４】
一方、圧縮ブロックデータのデータサイズが基準サイズ以上であっても、そのときに同時に記憶されるブロックデータの数を調べる。このとき、同時に記憶されるブロックデータの数が、予め設定された数である基準数を超えている場合には、これら同時に記憶されるブロックデータの全部、あるいは、一部を、ＳＳＤ３１，３２に格納する。そして、それ以外、つまり、圧縮ブロックデータのデータサイズが基準サイズ以上であり、同時に記憶されるブロックデータの数が基準数以下の場合には、新たに記憶するブロックデータをＨＤＤ２１〜２３に記憶する。
【００３５】
［動作］
次に、上述したストレージシステムの動作を、図５乃至図７のフローチャートを参照して説明する。
【００３６】
まず、クライアント４からファイルの書込み要求があると（ステップＳ１）、当該ファイルを複数のブロックデータに分割する（ステップＳ２）。そして、ブロックデータ毎にＨａｓｈ値を計算し（ステップＳ３）、このＨａｓｈ値と同じデータが既に記憶されているか判定する。例えば、格納位置記憶部１７に記憶されているＨａｓｈ値を含むコンテンツアドレスを調べて、その一部であるＨａｓｈ値に相当する部分に、同一のデータが記憶されているかを調べる。そして、同一のＨａｓｈ値が存在する場合には、同一のデータ内容のブロックデータが既に記憶されていると判定する（ステップＳ４、ステップＳ５でＹｅｓ）。
【００３７】
一方、同一のＨａｓｈ値が存在しない場合には、同一のブロックデータがまだ記憶されていないと判定する（ステップＳ４、ステップＳ５でＮｏ）。この上述した判定は、例えば、ストレージシステムが、既に格納したブロックデータのＨａｓｈ値を他の方法で記憶保持しており、この記憶保持しているＨａｓｈ値と、新たに記憶するブロックデータから算出したＨａｓｈ値とを比較して行ってもよい。
【００３８】
続いて、新たに記憶するブロックデータと同一データが記憶されていないと判定された場合には（ステップＳ５でＮｏ）、この新たに記憶するブロックデータを圧縮する（ステップＳ６）。そして、この圧縮したブロックデータを格納する適切な記憶装置（ＨＤＤ又はＳＳＤ）を選択し（ステップＳ７）、当該圧縮したブロックデータを選択した記憶装置に書き込む（ステップＳ８）。ここで、圧縮したブロックデータを記憶する適切な記憶装置を選択する処理（ステップＳ７）、及び、その後の書き込む処理（ステップＳ８）の詳細について、図７のフローチャートを参照して説明する。
【００３９】
まず、圧縮されたブロックデータのデータサイズが、基準サイズの値よりも小さい場合には（ステップＳ２１でＹｅｓ）、この圧縮したブロックデータをＳＳＤ３１，３２に書き込む（ステップＳ２５）。一方、圧縮後のブロックデータのデータサイズが、基準サイズの値以上の場合には（ステップＳ２１でＮｏ）、その時点で同時に書き込み処理が行われているブロックデータの数を取得する（ステップＳ２２）。そして、同時書込み数が基準数より多い場合には（ステップＳ２３でＹｅｓ）、ＳＳＤ３１，３２に書き込む。また、同時書込み数が基準数以下である場合には（ステップＳ２３でＮｏ）、ＨＤＤに書き込む。
【００４０】
以上のように、本実施形態では、既に記憶されているブロックデータと重複していない新たに記憶するブロックデータについては、そのデータサイズが設定値よりも小さい場合には、ＳＳＤに書き込む。これは、データサイズが小さいブロックデータは、特に、１つのファイルにて形成されていることが多く、読み出す際には、他のデータと合わせて読み出されることが生じうるため、このような場合には、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）のＴＡＴ（Turn Around Time）性能が優れていることが望ましいという理由による。このように、ブロックデータのデータサイズが小さいものをＴＡＴ性能の優れているＳＳＤに書き込むことで、ストレージシステムの性能の向上を図ることができる。
【００４１】
また、同時書き込み数が多い場合つまり複数のファイルが同時に書き込まれる場合には、ブロックデータが書き込まれた順に記憶装置に配置されるため、複数のファイルのブロックが交互に配置されることになり、同一ファイルの複数のブロックデータがフラグメント化しうる。このような場合に、ＨＤＤに書き込むと、後の読み出し処理時に、読み出し速度の低下が生じる。従って、上述したように、ＳＳＤに書き込むことで、読み出し速度の向上を図り、ストレージシステムの性能の向上を図ることができる。
【００４２】
次に、新たに記憶するブロックデータと同一データが記憶されていると判定された場合（図５のステップＳ５でＹｅｓ）の動作について、図６を参照して説明する。まず、新たに記憶するブロックデータが既に記憶されており、重複する場合には、新たなブロックデータを記憶せず、既に記憶されているブロックデータを参照する処理を行う（ステップＳ１１）。そして、この既に記憶されているブロックデータが参照されている数、つまり、このデータブロックの重複数を増やして、当該データブロックの格納位置を参照するコンテンツアドレスに関連付けて重複数記憶部１６に記憶して更新する（ステップＳ１２）。
【００４３】
続いて、更新後の重複数を重複数記憶部１６から取得して（ステップＳ１３）、重複数が予め設定された閾値以上であるか否かを調べる（ステップＳ１４）。このとき、例えば、重複数が更新された場合だけ調べる。そして、重複数が閾値より小さい場合には（ステップＳ１４でＮｏ）、そのまま処理を終了する。
【００４４】
一方で、重複数が閾値以上である場合には（ステップＳ１４でＹｅｓ）、この重複数に関連付けられているコンテンツアドレスの参照先、つまり、このコンテンツアドレスにて参照されているブロックデータが、ＨＤＤ２１〜２３あるいはＳＳＤ３１，３２のどちらに格納されているかを調べる（ステップＳ１５）。例えば、格納位置記憶部１７に記憶されているコンテンツアドレスに関連付けられている格納位置データを取得して、ブロックデータが配置されている記憶装置を調べる。
【００４５】
そして、上述したように、重複数が閾値以上であるブロックデータのうち、ＨＤＤ２１〜２３に配置されているブロックデータについては（ステップＳ１６でＹｅｓ）、このブロックデータをＳＳＤ３１，３２に格納する。具体的には、まず、ＨＤＤ２１〜２３に記憶されている該当するブロックデータを無効化する（ステップＳ１７）。続いて、事前に読み出しており該当するブロックデータを圧縮し（ステップＳ１８）、当該圧縮したブロックデータをＳＳＤ３１，３２に書き込む（ステップＳ１９）。なお、上述したＨＤＤ２１〜２３内におけるブロックデータの無効化処理と、ＳＳＤ３１，３２へのブロックデータの書込み処理は、逆の順序、あるいは、同時に実行されるなど、任意の順序で実行されてもよい。
【００４６】
以上により、本実施形態では、複数のファイルから参照されるブロックデータＳＳＤ３１，３２に格納するため、当該ブロックデータを読み出す速度が、ＨＤＤ２１〜２３に記憶されているときと比較して高速となる。そして、複数のファイルから参照されるブロックデータは、特に読み出し回数が多く、また、フラグメント化が生じるため、読み出し速度が高速なＳＳＤに格納することで、ストレージシステム全体の読み出し性能の向上を図ることができる。同時に、記憶コストの低廉なＨＤＤとＳＳＤとを併用することで、システム全体のコストの増加を抑制できる。その結果、低コストであり、性能の向上を図ることができるストレージシステムを提供することができる。
【００４７】
なお、上記では、第一記憶装置としてＨＤＤ、第二記憶装置としてＳＳＤを一例に挙げて説明したが、第一記憶装置、第二記憶装置は、それぞれ他の記憶装置であってもよい。この場合には、第二記憶装置として用いる記憶装置が、第一記憶装置と比較して、単位記憶容量当たりの単価が低く、また、読み出し速度が高速であるものであると望ましい。
【００４８】
＜実施形態２＞
本発明の第２の実施形態を、図８を参照して説明する。図８は、ストレージシステムの構成を示す機能ブロック図である。なお、本実施形態では、ストレージシステムの概略を説明する。
【００４９】
図８に示すように、本実施形態におけるストレージシステム１００は、
第一記憶装置１１１と、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置１１２と、を備えている。
【００５０】
そして、記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部１０１と、
上記記憶対象データを上記第一記憶装置あるいは上記第二記憶装置に格納すると共に、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理するデータ管理部１０２と、
上記記憶対象データから算出した上記特徴データに基づいて、新たに記憶する上記記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定する重複判定部１０３と、を備えている。
【００５１】
さらに、上記データ管理部１０３は、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００５２】
また、上記ストレージシステムでは、
上記データ管理部は、上記第一記憶装置に既に格納されている上記記憶対象データ毎の上記重複判定部による判定回数に基づいて、上記第一記憶装置に記憶されている記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００５３】
また、上記ストレージシステムでは、
上記データ管理部は、上記第二記憶装置に格納した上記第一記憶装置に記憶されている上記記憶対象データを無効化する、
という構成を採る。
【００５４】
上記発明によると、まず、ストレージシステムは、新たに記憶する記憶対象データがあると、当該記憶対象データのデータ内容に基づいて特徴データを算出する。そして、記憶対象データを第一記憶装置あるいは第二記憶装置に記憶すると共に、その格納位置を、特徴データを用いて特定して管理する。従って、特徴データに基づく格納位置を参照することで、格納した記憶対象データを読み出すことができる。
【００５５】
また、ストレージシステムは、新たに記憶対象データを記憶する際には、当該記憶対象データに基づいて算出した特徴データを用いて、この記憶対象データと同一のデータが既に第一記憶装置に記憶されているかどうか判定する。そして、算出した特徴データと同一の特徴データが既に存在している場合には、新たに記憶する記憶対象データと同一のデータが既に格納されていると判断できるため、特徴データにて参照される格納位置に格納されている記憶対象データを、新たに記憶する記憶対象データとして扱う。つまり、新たに記憶する記憶対象データを格納せず、既に記憶されている記憶対象データを参照する。これにより、上記新たに記憶する記憶対象データを読み出す際には、この特徴データにて参照している記憶対象データを読み出すことで、同一内容のデータを読み出すことができる。
【００５６】
そして、さらに、ストレージシステムでは、第一記憶装置に既に記憶されている記憶対象データが、新たに記憶する記憶対象データと同一であると判断されると、この第一記憶装置に記憶されている記憶対象データを第二記憶装置に記憶する。特に、第一記憶装置に既に記憶されている記憶対象データが、新たに記憶する記憶対象データと同一であると判断された回数である重複数をカウントして、この重複数が設定された値を超えている場合に、第一記憶装置に記憶されている記憶対象データを第二記憶装置に記憶する。このとき、第一記憶装置に記憶されている記憶対象データを無効化する。
【００５７】
以上により、新たに記憶される記憶対象データと同一内容の記憶対象データが第二記憶装置に記憶されるため、この新たな記憶対象データを後に読み出す際には、第二記憶装置に記憶されたデータを読み出すこととなる。従って、読み出し速度の高速化を図ることができる。特に、新たに記憶される記憶対象データと重複数が多い記憶対象データは読み出される回数が多くなるが、上述したように第二記憶装置に記憶することで、その読み出し速度が高速となり、システム全体の性能の向上を図ることができる。また、この場合であっても、記憶対象データを全て第二記憶装置に記憶するわけではないため、読み出し速度が高速な第二記憶装置を多く装備する必要がなく、装置コストの増加を抑制できる。その結果、低コストであり、性能の向上を図ることができるストレージシステムを提供することができる。
【００５８】
また、上記ストレージシステムでは、
上記データ管理部は、新たに記憶する上記記憶対象データのサイズが予め設定された値よりも小さい場合に、当該記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００５９】
また、上記ストレージシステムでは、
上記データ管理部は、新たに同時に記憶する上記記憶対象データが予め設定された数以上存在する場合、当該同時に記憶する上記記憶対象データのうちの一部あるいは全部を上記第二記憶装置に格納する、
という構成を採る。
【００６０】
上述した記憶対象データのサイズが小さい場合や、同時に記憶する記憶対象データが多数存在する場合には、相互に関連する記憶対象データ同士は格納位置が離れて格納されうる。すると、仮に第二記憶装置と比較して読み出し速度が遅い第一記憶装置に格納されると、その後の読み出し速度が低下しうる。従って、上述したように、第二記憶装置に記憶することで、読み出し速度の向上を図ることができ、さらなる性能の向上を図ることができる。
【００６１】
また、上記ストレージシステムでは、
上記記憶対象データは、所定のファイルデータを複数に分割したブロックデータである、という構成を採る。
【００６２】
また、上記ストレージシステムでは、
上記第一記憶装置は、ハードディスクドライブであり、上記第二記憶装置は、ＳＳＤ（Solid State Drive）である、
という構成を採る。
【００６３】
また、上記ストレージシステムは、第一記憶装置と第二記憶装置を備えているが、これら記憶装置は、他の装置にて構成されていてもよい。つまり、本発明の他の形態であるストレージ装置は、
第一記憶装置と、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置と、を接続し、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
上記記憶対象データを上記第一記憶装置あるいは上記第二記憶装置に格納すると共に、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理するデータ管理部と、
上記記憶対象データから算出した上記特徴データに基づいて、新たに記憶する上記記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定する重複判定部と、を備え、
上記データ管理部は、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００６４】
また、上記ストレージ装置では、
上記データ管理部は、上記第一記憶装置に既に格納されている上記記憶対象データ毎の上記重複判定部による判定回数に基づいて、上記第一記憶装置に記憶されている記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００６５】
また、上述したストレージ装置は、情報処理装置にプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、
第一記憶装置と、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置と、を接続した情報処理装置に、
記憶対象データのデータ内容に基づいた特徴データを算出する特徴算出部と、
上記記憶対象データを上記第一記憶装置あるいは上記第二記憶装置に格納すると共に、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理するデータ管理部と、
上記記憶対象データから算出した上記特徴データに基づいて、新たに記憶する上記記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定する重複判定部と、を実現させるプログラムである。
【００６６】
そして、上記データ管理部は、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００６７】
また、上記プログラムでは、
上記データ管理部は、上記第一記憶装置に既に格納されている上記記憶対象データ毎の上記重複判定部による判定回数に基づいて、上記第一記憶装置に記憶されている記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００６８】
また、上述したストレージシステムあるいはストレージ装置が作動することにより実行される、本発明の他の形態であるデータ管理方法は、
記憶対象データのデータ内容に基づいた特徴データを算出し、
上記記憶対象データを、第一記憶装置、あるいは、格納されたデータの読み出し速度が上記第一記憶装置よりも高速な第二記憶装置、に格納して、上記記憶対象データの格納位置を当該記憶対象データから算出した上記特徴データに基づいて管理すると共に、
新たに上記記憶対象データを格納する場合に、当該新たな記憶対象データのデータ内容に基づいた特徴データを算出して、この特徴データに基づいて、上記新たに記憶する記憶対象データと同一の上記記憶対象データが既に上記第一記憶装置に格納されているか否かを判定し、上記新たに記憶する記憶対象データと同一の上記記憶対象データが上記第一記憶装置に既に格納されている場合に、当該第一記憶装置に既に格納されている上記記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００６９】
また、上記データ管理方法では、
上記第一記憶装置に既に格納されている上記記憶対象データ毎における、上記新たに記憶する記憶対象データと同一であるか否かの判定回数に基づいて、上記第一記憶装置に記憶されている記憶対象データを上記第二記憶装置に格納する、
という構成を採る。
【００７０】
上述した構成を有する、ストレージ装置、プログラム、又は、データ管理方法、の発明であっても、上記ストレージシステムと同様の作用を有するために、上述した本発明の目的を達成することができる。
【産業上の利用可能性】
【００７１】
本発明は、コンテンツアドレス型のストレージシステムなど、複数の記憶装置を備えたストレージシステムに適用でき、産業上の利用可能性を有する。
【符号の説明】
【００７２】
１  ストレージ装置
４  クライアント
１１  ファイル分割部
１２  Ｈａｓｈ計算部
１３  重複判定部
１４  重複数管理部
１５  記録再生部
１６  重複数記憶部
１７  格納位置記憶部
２１，２２，２３  ＨＤＤ
３１，３２  ＳＳＤ
１００  ストレージシステム
１０１  特徴算出部
１０２  重複判定部
１０３  データ管理部
１１１  第一記憶装置
１１２  第二記憶装置
【図１】
2010218194.tif 000003
【図２】
2010218194.tif 000004
【図３】
2010218194.tif 000005
【図４】
2010218194.tif 000006
【図５】
2010218194.tif 000007
【図６】
2010218194.tif 000008
【図７】
2010218194.tif 000009
【図８】
2010218194.tif 000010