(57)【要約】      （修正有）【課題】重複記憶を排除する機能を有するストレージ装置において、読み出し性能の低下を抑制する。【解決手段】複数世代のデータを重複排除して記憶するデータ記憶部と、データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、データ記憶部が記憶するデータを読み出して一時データ記憶部に記憶させるとともに、一時データ記憶部からデータを読み出すデータ読出制御部と、を有する。データ読出制御部は、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する。【選択図】図６
2018142175.tif 000002
【特許請求の範囲】
【請求項１】
複数世代のデータを重複排除して記憶するデータ記憶部と、
前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出すデータ読出制御部と、
を有し、
前記データ読出制御部は、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
ストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記データ読出制御部は、前記一時データ記憶部に世代ごとのデータ格納領域を確保して、確保したデータ格納領域に対応する世代のデータを格納するよう構成され、前記読み出し要求に応じて読み出すデータの属する世代が変わる際に、変わった後の世代用の前記データ格納領域を確保するとともに、前記読み出し要求に応じて読み出したデータのうち変わる前の世代のデータが占める割合に基づいて、当該変わる前の世代用の前記データ格納領域を破棄するか否かを決定する
ストレージ装置。
【請求項３】
請求項２に記載のストレージ装置であって、
前記データ読出制御部は、前記変わる前の世代のデータのサイズを前記読み出し要求に応じて読み出したデータのサイズで除した値が予め定められた基準値より低い場合に、前記変わる前の世代用の前記データ格納領域を破棄する
ストレージ装置。
【請求項４】
請求項１乃至３のいずれかに記載のストレージ装置であって、
前記データ読出制御部は、前記一時データ記憶部に確保されている前記データ格納領域の数が予め定められた所定数を超えた場合に、前記読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記データ格納領域を破棄する
ストレージ装置。
【請求項５】
請求項４に記載のストレージ装置であって、
前記データ読出制御部は、前記一時データ記憶部に確保されている前記データ格納領域の数が予め定められた所定数を超えた場合、前記一時データ記憶部に確保されている前記データ格納領域のうち、読み出したデータに含まれる割合が最も低い世代の前記データ格納領域を破棄する
ストレージ装置。
【請求項６】
請求項１乃至５のいずれかに記載のストレージ装置であって、
前記データ読出制御部は、前記読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記データ記憶部が記憶するデータを読み出す際に、読み出す対象のデータを読み出すとともに、当該読み出す対象のデータに続く所定範囲のデータを読み出すか否か判断する
ストレージ装置。
【請求項７】
請求項６に記載のストレージ装置であって、
前記データ読出制御部は、前記読み出し要求に応じて読み出したデータのうち読み出す対象のデータが属する世代の割合が予め定められた基準値以上である場合、前記データ記憶部が記憶する前記データを読み出す際に、読み出す対象のデータを読み出すとともに、当該読み出す対象のデータに続く所定範囲のデータを読み出す
ストレージ装置。
【請求項８】
請求項６又は７に記載のストレージ装置であって、
前記データ読出制御部は、前記読み出す対象のデータに続く所定範囲のデータを読み出すと、当該読み出した所定範囲のデータを前記一時データ記憶部に記憶させる
ストレージ装置。
【請求項９】
複数世代のデータを重複排除して記憶するデータ記憶部と、前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、を有するストレージ装置に、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出すデータ読出制御手段を実現させ、
前記データ読出制御手段は、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
プログラム。
【請求項１０】
複数世代のデータを重複排除して記憶するデータ記憶部と、前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、を有する情報処理装置が、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出し、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、プログラム、情報処理方法に関し、特に、同一内容のデータの重複記憶を排除するストレージ装置、プログラム、情報処理方法に関する。
【背景技術】
【０００２】
莫大なデータを効率的に取り扱うための技術として、重複記憶を排除する機能を有するストレージ装置が知られている。
【０００３】
上記のような重複排除を行うストレージシステムの場合、新規のデータは、例えば、格納する領域の最後に追加されていくことになる。そのため、後にデータを読み出す際には、記憶装置全体に拡散したデータを読み出すべく、膨大な数のディスク操作をしなければならない場合があった。
【０００４】
上記問題に対処するための技術として、例えば、特許文献１がある。特許文献１には、データ分割手段と、ブロック検出手段と、データ書き込み手段と、を有するストレージ装置が記載されている。特許文献１によると、上記ブロック検出手段は、分割したデータブロックのうち書き込み対象データ中の所定範囲を構成する連続する複数のデータブロックと、記憶装置に既に連続して記憶されている所定範囲の複数のデータブロックと、の共通部分の割合を表す共通割合を検出する。また、データ書き込み手段は、ブロック検出手段にて検出した共通割合に応じて、分割したデータブロックを、新たに記憶装置に記憶する。特許文献１によると、このような構成により、共通割合が例えば所定の閾値より小さい場合にのみ、記憶装置に新たにデータブロックを書き込むよう制御することが出来る。その結果、特許文献１によると、重複排除を行いつつ、記憶装置内の記憶領域全体に対するデータブロックの拡散を抑制することが出来る。これにより、読出し性能が低下することを抑制することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１３−５４１０５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データを高速に読み出すため、特許文献１に記載されているような重複記憶を排除する機能を有するストレージ装置などにおいては、ハードディスクなどから先読みしたデータをバッファなどの記憶装置に格納しておき、バッファに格納されたデータを利用することがある。しかしながら、バッファに格納可能なデータの容量は限られている。そのため、例えば、読み込み対象のデータが属する世代が変化するタイミングなどにおいて、バッファに格納されたデータを破棄することが行われていた。その結果、一度バッファに読み出したデータを再度必要とする際に、当該データがバッファから既に追い出されており、再度ディスクから読み出す必要が生じるおそれがある、という問題が生じていた。
【０００７】
このように、重複記憶を排除する機能を有するストレージ装置においては、効率的に必要なデータを取得することが難しく、読み出し性能の低下を抑制することが難しい、という問題が生じていた。
【０００８】
そこで、本発明の目的は、上述した課題である、重複記憶を排除する機能を有するストレージ装置においては、効率的に必要なデータを取得することが難しく、読み出し性能の低下を抑制することが難しい、という問題を解決することの出来るストレージ装置、プログラム、情報処理方法を提供することにある。
【課題を解決するための手段】
【０００９】
かかる目的を達成するため本発明の一形態であるストレージ装置は、
複数世代のデータを重複排除して記憶するデータ記憶部と、
前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出すデータ読出制御部と、
を有し、
前記データ読出制御部は、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
という構成を採る。
【００１０】
また、本発明の他の形態であるプログラムは、
複数世代のデータを重複排除して記憶するデータ記憶部と、前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、を有するストレージ装置に、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出すデータ読出制御手段を実現させ、
前記データ読出制御手段は、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
処理を実現させるためのプログラムである。
【００１１】
また、本発明の他の形態である情報処理方法は、
複数世代のデータを重複排除して記憶するデータ記憶部と、前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、を有する情報処理装置が、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出し、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
という構成を採る。
【発明の効果】
【００１２】
本発明は、以上のように構成されることにより、重複記憶を排除する機能を有するストレージ装置において、読み出し性能の低下を抑制することが難しい、という問題を解決することの出来るストレージ装置、プログラム、情報処理方法を提供することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】システム全体の構成の一例を示すブロック図である。
【図２】図１で示すストレージシステムの構成の概略を示すブロック図である。
【図３】図１で示すストレージシステムの構成の一例を示す機能ブロック図である。
【図４】図１で示すストレージシステムにおけるデータ書き込み処理の一例を説明するための図である。
【図５】図１で示すストレージシステムにおけるデータ書き込み処理の一例を説明するための図である。
【図６】図３で示すデータ読み出し手段が先読みする様子の一例を示す図である。
【図７】本発明の第１の実施形態におけるストレージシステムによるデータ読み出し処理の一例を示すフローチャートである。
【図８】図７で示すフラグメントを読み込む処理の詳細な一例を示すフローチャートである。
【図９】本発明の第２の実施形態に係るストレージ装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１４】
［第１の実施形態］
本発明の第１の実施形態を、図１乃至図８を参照して説明する。図１は、システム全体の構成の一例を示すブロック図である。図２は、ストレージシステム１の構成の概略を示すブロック図である。図３は、ストレージシステム１の構成の一例を示す機能ブロック図である。図４、図５は、ストレージシステム１におけるデータの書き込み処理の一例を説明するための図である。図６は、データ読み出し手段が先読みする様子の一例を示す図である。図７、図８は、ストレージシステム１によるデータ読み出し処理の一例を示すフローチャートである。
【００１５】
第１の実施形態では、プリフェッチバッファ１６を効率的に利用することで読み出し性能が低下することを抑制する、重複排除機能を有するストレージシステム１について説明する。本実施形態におけるストレージシステム１は、読み出し要求を受信すると、一連のデータブロックを復元するとともに、復元したデータブロックを連結して対象のファイルを復元する。この際、ストレージシステム１は、ディスク装置１５からデータブロックに基づいて生成された複数のフラグメントデータを取得して、取得したフラグメントデータに基づいてデータブロックを復元する。本実施形態におけるストレージシステム１は、ディスク装置１５からフラグメントデータを取得する際に、予めディスク装置１５から先読みしてプリフェッチバッファ１６に格納されているフラグメントデータも活用して、必要なフラグメントデータを取得する。また、後述するように、ストレージシステム１は、読み出し要求に応じて読み出した（読み出し済みの）データに対する世代ごとのデータの割合に基づいて、プリフェッチバッファ１６に格納する情報や格納されている情報の制御を行う。このように、読み出し要求に応じて読み出したデータに対する世代ごとのデータの割合に基づいてプリフェッチバッファ１６に格納する情報や格納されている情報の制御を行うことで、先読みしたデータを有効的に活用することが可能となる。その結果、重複記憶を排除する機能を有するストレージ装置において、読み出し性能の低下を抑制することが可能となる。
【００１６】
図１を参照すると、本実施形態におけるストレージシステム１は、ネットワークＮを介してバックアップ処理を制御するバックアップシステム４に接続している。そして、バックアップシステム４は、ネットワークＮを介して接続されたバックアップ対象装置５に格納されているバックアップ対象データ（書き込み対象となるデータ）を取得し、ストレージシステム１に対して記憶するよう要求する。これにより、ストレージシステム１は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。
【００１７】
図２に示すように、本実施形態におけるストレージシステム１は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１は、ストレージシステム１自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード２と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３と、を備えている。なお、アクセラレータノード２の数とストレージノード３の数は、図２に示したものに限定されない。アクセラレータノード２やストレージノード３の数は、１つであっても構わないし、２つ以上の任意の数であっても構わない。
【００１８】
さらに、本実施形態におけるストレージシステム１は、データを分割及び冗長化し、分散して複数の記憶装置に記憶する。ストレージシステム１がデータを記憶する際の処理については、後述する。
【００１９】
なお、以下では、ストレージシステム１が１つのシステムであるとして、当該ストレージシステム１が備えている構成及び機能を説明する。つまり、以下に説明するストレージシステム１が有する構成及び機能は、アクセラレータノード２あるいはストレージノード３のいずれに備えられていてもよい。なお、ストレージシステム１は、図２に示すように、必ずしもアクセラレータノード２とストレージノード３とを備えていることに限定されず、いかなる構成であってもよく、例えば、１台のコンピュータにて構成されていてもよい。
【００２０】
図３に、本実施形態におけるストレージシステム１の構成の一例を示す。図３を参照すると、ストレージシステム１は、データ書き込み手段１１と、データ読み出し手段１２（データ読出制御部の一部）と、重複率算出手段１３（データ読出制御部の一部）と、データ格納領域制御手段１４（データ読出制御部の一部）と、ディスク装置１５（データ記憶部）と、プリフェッチバッファ１６（一時データ記憶部）と、を有している。ストレージシステム１は、例えば、所定の演算処理を行う図示しない演算装置と図示しない記憶装置とを有しており、記憶装置に格納されたプログラムを演算装置が実行することで上記各手段を実現する。
【００２１】
なお、実際には、上述したストレージシステム１が備える構成は、図２に示したアクセラレータノード２及びストレージノード３がそれぞれ備えているＣＰＵ（Central Processing Unit）などの演算装置やハードディスクなどの記憶装置にて構成されている。
【００２２】
データ書き込み手段１１は、ファイルの書き込み要求に応じて、重複排除したデータをディスク装置１５に格納する。
【００２３】
例えば、図４を参照すると、ストレージシステム１は、書き込み要求されたファイルＡの入力を受ける。すると、データ書き込み手段１１は、ファイルＡを所定容量（例えば、６４ＫＢ）のデータブロックＤに分割する。このようにファイルＡをデータブロックＤに分割することで、重複排除がしやすくなる。
【００２４】
続いて、データ書き込み手段１１は、分割したデータブロックＤが既にストレージシステム１（ディスク装置１５）に書き込まれているか否か確認する。例えば、データ書き込み手段１１は、予め設定されたハッシュ関数を用いて、データブロックＤのデータ内容に基づき、当該データ内容を代表する固有のハッシュ値を算出する。その後、データ書き込み手段１１は、算出されたハッシュ値を用いて、当該ハッシュ値を有するデータブロックがディスク装置１５に既に記憶されているか否かを調べる。例えば、このように、データ書き込み手段１１は、データブロックＤのデータ内容に基づくハッシュ値が既にストレージシステム１に登録されているか否かで重複の有無を確認する。
【００２５】
ストレージシステム１が算出したハッシュ値を既に有している場合、既に同一内容のデータブロックＤが格納されていると判断できる。この場合には、データ書き込み手段１１は、書き込み要求されたデータブロックＤの格納先として、既に格納されている同一内容のデータブロックＤの領域を指定することで、当該書き込み要求されたデータブロックＤを記憶したこととする。これにより、書き込み要求にかかるデータブロックＤを、実際に記憶装置２０内に記憶する必要がなくなる。換言すると、既に同一内容のデータブロックＤが書き込まれている場合、データ書き込み手段１１は後述するフラグメントデータの書き込みを行わないことになる。
【００２６】
一方、書き込み要求にかかるデータブロックＤがまだ記憶されていないと判断された場合、データ書き込み手段１１は、書き込み要求にかかるデータブロックＤを圧縮して、複数の所定の容量のフラグメントデータに分割する。例えば、データ書き込み手段１１は、図４の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータに分割する。さらに、データ書き込み手段１１は、分割したフラグメントデータのうちいくつかが欠けた場合であっても元となるデータブロックを復元可能なよう、冗長データを生成する。そして、データ書き込み手段１１は、生成した冗長データを上記分割したフラグメントデータに追加する。例えば、データ書き込み手段１１は、図４の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ）を追加する。これにより、データ書き込み手段１１は、９つのフラグメントデータと、３つの冗長データとにより構成される１２個のフラグメントデータからなるデータセットを生成する。
【００２７】
続いて、データ書き込み手段１１は、上述したように生成されたデータセットを構成する各フラグメントデータを、記憶装置（ディスク装置１５）に形成された各記憶領域に、それぞれ分散して格納する。例えば、データ書き込み手段１１は、上記フラグメントデータに基づいて、フラグメントデータが所属するコンポーネントを算出し、算出したコンポーネントにフラグメントデータを格納する。なお、コンポーネントとは、各ストレージノード３（記憶装置）が有する論理概念のことをいい、フラグメントデータはコンポーネントに格納されることになる。また、本実施形態においては、フラグメントデータが所属するコンポーネントの算出方法については、特に限定しない。データ書き込み手段１１は、既知の様々な手段を用いてフラグメントデータが所属するコンポーネントを算出することが出来る。
【００２８】
また、データ書き込み手段１１は、上記フラグメントデータの書き込みを行うとともに、コンポーネントの構成やフラグメントデータの保存ファイル（世代）や位置を示す情報、冗長情報などの制御情報を含む管理情報を取得する。そして、データ書き込み手段１１は、フラグメントデータをコンポーネントに格納する際に、コンポーネントが配置されているディスク装置１５に管理情報も格納する。
【００２９】
データ書き込み手段１１は、例えば、上記のようにして、重複排除したデータをディスク装置１５に格納する。その結果、例えば、図５で示すように、新たな世代のファイルを保存しようとする場合、当該新たな世代で追加・更新されたデータ（差分データ）のみが記憶装置であるディスク装置１５に格納されることになる。
【００３０】
データ読み出し手段１２は、外部装置であるバックアップシステム４などから受信した読み出し要求に応じて、データ書き込み手段１１により重複排除した状態で格納されたデータを読み出す。
【００３１】
例えば、データ読み出し手段１２は、読み出し要求を受信すると、管理情報を参照して、ディスク装置１５又はプリフェッチバッファ１６から必要なフラグメントデータを読み出してデータブロックＤを復元する。そして、データ読み出し手段１２は、上記手段の繰り返しにより複数復元したデータブロックＤを連結し、ファイルなどの一群のデータを復元する。
【００３２】
例えば、データ読み出し手段１２は、後述する先読みによりプリフェッチバッファ１６に読み出す対象のフラグメントデータが格納されている場合、プリフェッチバッファ１６からフラグメントデータを読み出す。一方、プリフェッチバッファ１６に読み出す対象のフラグメントデータが格納されていない場合、データ読み出し手段１２は、ディスク装置１５からフラグメントデータを読み出す。このように、データ読み出し手段１２は、ディスク装置１５又はプリフェッチバッファ１６から必要なフラグメントデータを読み出す。そして、データ読み出し手段１２は、読み出し要求に応じて読み出した各フラグメントデータからデータブロックＤを復元する。さらに、データ読み出し手段１２は、上記手段の繰り返しにより複数復元したデータブロックＤを連結し、ファイルなどの一群のデータを復元する。
【００３３】
また、本実施形態におけるデータ読み出し手段１２は、ディスク装置１５からフラグメントデータを読み出す際に、後述する重複率算出手段１３が算出する重複率に基づいて、フラグメントデータの先読みを行うか否か判断する（図６参照）。例えば、データ読み出し手段１２は、読み出す対象のフラグメントデータが属する世代の重複率が予め定められた基準値（任意の値で構わない。例えば、０．３など）（先読み基準値）よりも低い場合、先読みを行わない。一方、データ読み出し手段１２は、読み出す対象のフラグメントデータが属する世代の重複率が先読み基準値以上である場合、読み出す対象のフラグメントデータにディスク装置１５上で連続する所定の数（任意の数で構わない。例えば、４つなど）の後続フラグメントデータを、例えばバックグラウンドで先読みする。例えば、図６で示す場合、データ読み出し手段１２は、読み出し対象のフラグメントデータＡをディスク装置１５から読み出すとともに、後続するフラグメントデータＢ、Ｃ、Ｄ、Ｅをバックグラウンドで先読みする。このように、データ読み出し手段１２は、重複率に基づいて、ディスク装置１５から読み出す対象のフラグメントデータを取得するとともに、読み出す対象に後続する所定の数（所定範囲）のフラグメントデータを先読みする。そして、データ読み出し手段１２は、先読みした所定の数の後続フラグメントデータをプリフェッチバッファ１６の対応する世代のデータ格納領域１６１に格納する。
【００３４】
このように、データ読み出し手段１２は、読み出し要求に応じて、データ書き込み手段１１により格納されたデータを読み出す。
【００３５】
重複率算出手段１３は、例えば、データ読み出し手段１２からの指示などに応じて、読み出し要求に応じて読み出した（読み出し済の）データのうち各世代のデータが占める割合である重複率を算出する。そして、重複率算出手段１３は、算出した重複率を図示しないメモリなどの記憶装置に格納する。
【００３６】
例えば、重複率算出手段１３は、読み出し要求に応じて読み出した世代ｎのデータサイズを、読み出し要求に応じて読み出した全データサイズで除算する。これにより、重複率算出手段１３は、世代ｎの重複率を算出する。なお、ｎは任意の値で構わない。
【００３７】
なお、重複率算出手段１３は、例えば、データ読み出し手段１２が読み出すフラグメントデータの世代が変わるタイミング（フラグメントデータの属する世代は、例えば、フラグメントデータの格納位置に応じて定まる）や、後述するプリフェッチバッファ１６に確保されるデータ格納領域１６１の数が予め定められた所定数を超えたタイミングなどで、必要な世代の重複率を算出する。例えば、重複率算出手段１３は、データ読み出し手段１２が読み出すフラグメントデータの世代が変わるタイミングで、変わる前（変更前）の世代（世代が変わるフラグメントの一つ前のフラグメントが属する世代）の重複率を算出する。また、重複率算出手段１３は、プリフェッチバッファ１６に確保されるデータ格納領域１６１の数が所定数を超えたタイミングで、データ格納領域１６１が確保されている各世代の重複率を算出する。さらに、重複率算出手段１３は、ディスク装置１５からフラグメントデータを読み出すタイミングで、読み出す対象のフラグメントデータが属する世代の重複率を算出する。なお、重複率算出手段１３は、上記タイミング以外（例えば、定期的に）で重複率を算出するよう構成しても構わない。
【００３８】
データ格納領域制御手段１４は、データ読み出し手段１２からの指示や重複率算出手段１３が算出した重複率に基づいて、プリフェッチバッファ１６を制御する。
【００３９】
例えば、データ格納領域制御手段１４は、データ読み出し手段１２が読み出すフラグメントデータの世代が変わる際に、データ読み出し手段１２からの指示に基づいて、変わった後（変更後）の世代（世代が変わるフラグメントが属する世代）用のデータ格納領域１６１をプリフェッチバッファ１６に確保する。なお、該当する世代用のデータ格納領域１６１がプリフェッチバッファ１６に既に確保されている場合には、データ格納領域制御手段１４は、当該世代用のデータ格納領域１６１を確保しなくて構わない。また、データ格納領域制御手段１４は、重複率算出手段１３が算出した変わる前の世代（世代が変わるフラグメントの一つ前のフラグメントが属する世代）の重複率に基づいて、変わる前の世代用のデータ格納領域１６１を破棄するか否か決定する。例えば、データ格納領域制御手段１４は、変わる前の世代の重複率が予め定められた基準値（任意で構わない。例えば、０．３など）（破棄基準値）より低い場合、変わる前の世代用のデータ格納領域１６１を破棄する。データ格納領域制御手段１４がデータ格納領域１６１を破棄することで、当該データ格納領域１６１に格納されたフラグメントデータ（破棄するデータ格納領域１６１に対応する世代のフラグメントデータ）も破棄されることになる。
【００４０】
また、データ格納領域制御手段１４は、プリフェッチバッファ１６に確保されているデータ格納領域１６１の数が予め定められた所定数（任意で構わない。例えば、４つ）を超えた場合、重複率算出手段１３に対して、データ格納領域１６１が確保されている各世代の重複率を算出するよう指示する。そして、データ格納領域制御手段１４は、算出結果に基づいて、データ格納領域１６１を破棄する。例えば、データ格納領域制御手段１４は、プリフェッチバッファ１６に確保されているデータ格納領域１６１のうち、読み出し要求に応じて読み出したデータに含まれる割合が最も低い世代用のデータ格納領域１６１を破棄する。データ格納領域制御手段１４は、直近で確保した（最も新しい）データ確保領域１６１を上記破棄する対象から外すよう構成しても構わない。
【００４１】
なお、データ格納領域制御手段１４は、事前に重複率算出手段１３により算出された図示しないメモリに格納されている各世代の重複率に基づいて、破棄するデータ格納領域１６１を決定しても構わない。また、データ格納領域制御手段１４は、例えば、プリフェッチバッファ１６の容量に対する使用されている割合が予め設定された基準（例えば、予め定められている基準閾値。任意の値で構わない）を超えたタイミングなどで、データ格納領域１６１の破棄を行うよう構成しても構わない。
【００４２】
このように、データ格納領域制御手段１４は、データ読み出し手段１２からの指示や重複率算出手段１３が算出した重複率に基づいて、プリフェッチバッファ１６にデータ格納領域１６１を新たに確保したり、確保されているデータ格納領域１６１を破棄したりする。
【００４３】
以上のように、データ読み出し手段１２と重複率算出手段１３とデータ格納領域制御手段１４とは、互いに連携して、プリフェッチバッファ１６にデータ格納領域１６１を新たに確保したり、確保されているデータ格納領域１６１を破棄したり、確保されたデータ格納領域１６１に先読みしたフラグメントデータを格納したりする。換言すると、データ読み出し手段１２と重複率算出手段１３とデータ格納領域制御手段１４とから構成されるデータ読出制御手段（データ読出制御部）は、重複率算出手段１３が算出した重複率に基づいて、プリフェッチバッファ１６に記憶する世代ごとのフラグメントデータの記憶状況を制御する、ということも出来る。
【００４４】
ディスク装置１５は、ハードディスクなどの記憶装置である。ディスク装置１５には、データブロック単位で重複排除した状態で、フラグメントデータが格納されている。なお、図３では１つのディスク装置１５のみが記載されているが、上述したように、実際には、ディスク装置１５は、ストレージノード３などがそれぞれ備えているハードディスクなどの記憶装置から構成されている。
【００４５】
プリフェッチバッファ１６は、メモリなどの記憶装置である。プリフェッチバッファ１６には、世代ごとにデータ格納領域１６１を確保することが出来る。データ読み出し手段１２により先読みされたフラグメントデータは、当該フラグメントデータが属する世代に応じたデータ格納領域１６１に格納されることになる。このように、プリフェッチバッファ１６は、ディスク装置１５から読み出されたフラグメントデータを一時的に記憶する。
【００４６】
以上が、ストレージシステム１の構成の一例である。続いて、図７、図８を参照して、ストレージシステム１がディスク装置１５からフラグメントデータを読み出す際の流れの一例について説明する。まず、図７を参照して、ストレージシステム１がディスク装置１５からフラグメントデータを読み出す際の全体的な流れの一例について説明する。
【００４７】
例えば、ストレージシステム１は、読み出し要求されたバックアップイメージファイルの入力を受ける。すると、データ読み出し手段１２は、上記バックアップイメージファイルの開始から順番にデータを読み出す処理を開始する。
【００４８】
例えば、データ読み出し手段１２は、ファイルの先頭からデータブロックの復元を試みる。データブロックは複数のフラグメントデータに分割して保存されているため、データ読み出し手段１２は、順番にフラグメントデータを読み出すことになる。例えば、データ読み出し手段１２は、ディスク装置１５から管理情報を取得する。そして、データ読み出し手段１２は、取得した管理情報を参照して、当該データブロックに基づいて生成されたフラグメントデータの保存ファイルと位置を特定する（ステップＳ１０１）。
【００４９】
続いて、データ読み出し手段１２は、上記フラグメントデータを読み出す。まず、データ読み出し手段１２は、読み出す対象のフラグメントデータが既に先読みされてプリフェッチバッファ１６に格納されているか否か確認する（ステップＳ１０２）。
【００５０】
読み出す対象のフラグメントデータがプリフェッチバッファ１６に格納されている場合（ステップＳ１０２、Ｙｅｓ）、データ読み出し手段１２は、当該プリフェッチバッファ１６から対象のフラグメントデータを取得する（ステップＳ１０３）。換言すると、読み出す対象のフラグメントデータがデータ格納領域１６１内に保存されている場合、データ読み出し手段１２は、ディスク装置１５からの読み出しを行わない。
【００５１】
一方、読み出す対象のフラグメントデータがプリフェッチバッファ１６に格納されていない場合（ステップＳ１０２、Ｎｏ）、データ読み出し手段１２は、読み出す対象のフラグメントデータの属する世代が、一つ前に読み出したフラグメントデータの属する世代と同一であるか否か確認する（ステップＳ１０５）。なお、データ読み出し手段１２は、例えば、管理情報に含まれるフラグメントデータの保存ファイルと位置を示す情報に基づいて、フラグメントデータの世代を判断する。
【００５２】
読み出す対象のフラグメントデータの属する世代が１つ前に読み出したフラグメントデータの属する世代と同一でない場合（ステップＳ１０５、Ｎｏ）、つまり、新たな世代のフラグメントを読み出す場合、データ読み出し手段１２は、重複率算出手段１３に対して変更前の世代の重複率を算出するよう指示する。また、データ読み出し手段１２は、データ格納領域制御手段１４に対して、変更後の世代用のデータ格納領域１６１を確保するよう指示する。これにより、重複率算出手段１３が変更前の世代の重複率を算出するとともに、データ格納領域制御手段１４が変更後の世代用のデータ格納領域を確保することになる（ステップＳ１０６）。
【００５３】
データ格納領域制御手段１４は、重複率算出手段１３が算出した変更前の世代の重複率が予め定められた破棄基準値より低いか否か確認する（ステップＳ１０７）。そして、重複率算出手段１３が算出した変更前の世代の重複率が破棄基準値より低い場合（ステップＳ１０７、Ｙｅｓ）、データ格納領域制御手段１４は、変更前の世代用のデータ格納領域１６１を破棄する（ステップＳ１０８）。一方、重複率算出手段１３が算出した変更前の世代の重複率が破棄基準値以上である場合（ステップＳ１０７、Ｎｏ）、データ格納領域制御手段１４は、変更前の世代用のデータ格納領域１６１を破棄しない。
【００５４】
また、データ格納領域制御手段１４は、プリフェッチバッファ１６に確保されているデータ格納領域１６１の数が予め定められた所定数を超えたか否か確認する（ステップＳ１０９）。データ格納領域１６１の数が所定数を超えている場合（ステップＳ１０９、Ｙｅｓ）、データ格納領域制御手段１４は、重複率が最も低い世代のデータ格納領域１６１を破棄する（ステップＳ１１０）。
【００５５】
読み出す対象のフラグメントデータの属する世代が１つ前に読み出したフラグメントデータの属する世代と同一である場合（ステップＳ１０５、Ｙｅｓ）や、ステップＳ１１０の処理の後、データ格納領域の数が所定数以下である場合（ステップＳ１０９、Ｎｏ）、データ読み出し手段１２は、ディスク装置１５からフラグメントを読み込む（ステップＳ１１１）。なお、ステップＳ１１１の処理は、例えば、ステップＳ１０７の処理と並行して行われても構わない。ステップＳ１１１の処理の詳細は後述する。
【００５６】
ステップＳ１１１の処理の後、又は、ステップＳ１０３の処理の後、データ読み出し手段１２は、読み出す対象のフラグメントデータを全て読み出したか否か確認する。読み出す対象のフラグメントデータを全て読み出した場合（ステップＳ１０４、Ｙｅｓ）、データ読み出し手段１２は、処理を終了する。一方、読み出す対象のフラグメントデータがまだ残っている場合、データ読み出し手段１２は、次のフラグメントデータの読み出しに進む。
【００５７】
以上が、ストレージシステム１がディスク装置１５からフラグメントデータを読み出す際の全体的な流れの一例である。続いて、図８を参照して、ステップＳ１１１の処理についてより詳細に説明する。
【００５８】
図８を参照すると、データ読み出し手段１２は、ディスク装置１５から読み出す対象のフラグメントデータを読み出す（ステップＳ２０１）。
【００５９】
また、データ読み出し手段１２は、上記ステップＳ２０１で読み出したフラグメントデータが属する世代の重複率が先読み基準値よりも低いか否か確認する（ステップＳ２０２）。そして、データ読み出し手段１２は、上記ステップＳ２０１で読み出したフラグメントデータが属する世代の重複率が先読み基準値よりも低い場合（ステップＳ２０２、Ｙｅｓ）、先読みを行わない。一方、データ読み出し手段１２は、上記ステップＳ２０１で読み出したフラグメントデータが属する世代の重複率が先読み基準値以上である場合（ステップＳ２０２、Ｎｏ）、読み出す対象のフラグメントデータにディスク装置１５上で連続する所定の数の後続フラグメントデータを、例えばバックグラウンドで先読みする。そして、データ読み出し手段１２は、先読みした所定の数の後続フラグメントデータをプリフェッチバッファ１６の対応する世代のデータ格納領域１６１に格納する（ステップＳ２０３）。
【００６０】
以上が、図７のステップＳ１１１の詳細な一例である。
【００６１】
このように、本実施形態におけるストレージシステム１は、重複率算出手段１３とデータ格納領域制御手段１４とを有している。このような構成により、データ格納領域制御手段１４は、読み出すフラグメントデータの世代が変わる際に、重複率算出手段１３が算出した変更前の世代の重複率に基づいて、変更前の世代用のデータ格納領域１６１を破棄するか否か決定することが出来る。その結果、読み込んだデータに基づいてデータが多く格納されている可能性が高いと判断される世代の先読みデータを保持し続けることが可能となる。これにより、重複記憶を排除する機能を有するストレージシステム１において、効率的な読み出しを行うことが可能となり、読み出し性能の低下を抑制することが可能となる。
【００６２】
また、ストレージシステム１は、重複率算出手段１３が算出した重複率に基づいて、先読みするか否か判断するデータ読み出し手段１２を有している。これにより、より必要性の高い世代のデータを先読みすることが可能となり、効率的な先読みを行うことが可能となる。その結果、重複記憶を排除する機能を有するストレージシステム１において、効率的な読み出しを行うことが可能となり、読み出し性能の低下を抑制することが可能となる。
【００６３】
なお、データ読み出し手段１２が先読みを行うか否か判断する際に用いる予め定められた先読み基準値と、データ格納領域制御手段１４が変更前の世代用のデータ格納領域１６１を破棄するか否か判断する際に用いる破棄基準値と、は、同じ値であっても構わないし、異なる値であっても構わない。
【００６４】
［第２の実施形態］
次に、図９を参照して、本発明の第２の実施形態について説明する。第２の実施形態では、ストレージ装置６の構成の概要について説明する。
【００６５】
図９を参照すると、ストレージ装置６は、データ記憶部６１と、一時データ記憶部６２と、データ読出制御部６３と、を有している。例えば、ストレージ装置６は、図示しない演算装置と図示しない記憶装置と有しており、記憶装置に格納されたプログラムを演算装置が実行することで、上記データ読出制御部６３を実現する。
【００６６】
データ記憶部６１は、ハードディスクなどの記憶装置である。データ記憶部６１は、複数世代のデータを重複排除して記憶している。
【００６７】
一時データ記憶部６２は、メモリなどの記憶装置である。一時データ記憶部６２は、データ記憶部６１から読み出されたデータを一時的に記憶する。
【００６８】
データ読出制御部６３は、データ記憶部６１が記憶するデータを読み出して一時データ記憶部６２に記憶させる。また、データ読出制御部６３は、一時データ記憶部６２からデータを読み出す。このように、データ読出制御部６３は、データ記憶部６１が記憶するデータを読み出して一時データ記憶部６２に記憶させるとともに、一時データ記憶部６２からデータを読み出すよう構成されている。
【００６９】
さらに、データ読出制御部６３は、外部装置から受信した読み出し要求に応じて読み出したデータに対する世代ごとのデータの割合に基づいて、一時データ記憶部６２に記憶するデータを制御する。
【００７０】
このように、本実施形態におけるストレージ装置６は、データ読出制御部６３を有している。このような構成により、データ読出制御部６３は、読み出し要求に応じて読み出したデータに対する世代ごとのデータの割合に基づいて、一時データ記憶部６２に記憶するデータを制御することが出来る。その結果、一時データ記憶部６２を効率的に活用することが可能となる。これにより、重複記憶を排除する機能を有するストレージシステム１において、効率的な読み出しを行うことが可能となり、読み出し性能の低下を抑制することが可能となる。
【００７１】
また、上述したストレージ装置６は、当該ストレージ装置６に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、複数世代のデータを重複排除して記憶するデータ記憶部６１と、データ記憶部６１から読み出されたデータを一時的に記憶する一時データ記憶部６２と、を有するストレージ装置６に、データ記憶部６１が記憶するデータを読み出して一時データ記憶部６２に記憶させるとともに、一時データ記憶部６２からデータを読み出すデータ読出制御手段（データ読出制御部６３）を実現させ、データ読出制御手段は、外部装置から受信した読み出し要求に応じて読み出したデータに対する世代ごとのデータの割合に基づいて、一時データ記憶部６２に記憶するデータを制御する、プログラムである。
【００７２】
また、上述したストレージ装置６により実行される情報処理方法は、複数世代のデータを重複排除して記憶するデータ記憶部６１と、データ記憶部６１から読み出されたデータを一時的に記憶する一時データ記憶部６２と、を有する情報処理装置（ストレージ装置６）が、データ記憶部６１が記憶するデータを読み出して一時データ記憶部６２に記憶させるとともに、一時データ記憶部６２からデータを読み出し、外部装置から受信した読み出し要求に応じて読み出したデータに対する世代ごとのデータの割合に基づいて、一時データ記憶部６２に記憶するデータを制御する、という方法である。
【００７３】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記ストレージ装置６と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【００７４】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージ装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【００７５】
（付記１）
複数世代のデータを重複排除して記憶するデータ記憶部と、
前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出すデータ読出制御部と、
を有し、
前記データ読出制御部は、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
ストレージ装置。
（付記２）
付記１に記載のストレージ装置であって、
前記データ読出制御部は、前記一時データ記憶部に世代ごとのデータ格納領域を確保して、確保したデータ格納領域に対応する世代のデータを格納するよう構成され、前記読み出し要求に応じて読み出すデータの属する世代が変わる際に、変わった後の世代用の前記データ格納領域を確保するとともに、前記読み出し要求に応じて読み出したデータのうち変わる前の世代のデータが占める割合に基づいて、変わる前の世代用の前記データ格納領域を破棄するか否かを決定する
ストレージ装置。
（付記３）
付記２に記載のストレージ装置であって、
前記データ読出制御部は、前記変わる前の世代のデータのサイズを前記読み出し要求に応じて読み出したデータのサイズで除した値が予め定められた基準値より低い場合に、前記変わる前の世代用の前記データ格納領域を破棄する
ストレージ装置。
（付記４）
付記１乃至３のいずれかに記載のストレージ装置であって、
前記データ読出制御部は、前記一時データ記憶部に確保されている前記データ格納領域の数が予め定められた所定数を超えた場合に、前記読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記データ格納領域を破棄する
ストレージ装置。
（付記５）
付記４に記載のストレージ装置であって、
前記データ読出制御部は、前記一時データ記憶部に確保されている前記データ格納領域の数が予め定められた所定数を超えた場合、前記一時データ記憶部に確保されている前記データ格納領域のうち、読み出したデータに含まれる割合が最も低い世代の前記データ格納領域を破棄する
ストレージ装置。
（付記６）
付記１乃至５のいずれかに記載のストレージ装置であって、
前記データ読出制御部は、前記読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記データ記憶部が記憶するデータを読み出す際に、読み出す対象のデータを読み出すとともに、当該読み出す対象のデータに続く所定範囲のデータを読み出すか否か判断する
ストレージ装置。
（付記７）
付記６に記載のストレージ装置であって、
前記データ読出制御部は、前記読み出し要求に応じて読み出したデータのうち読み出す対象のデータが属する世代の割合が予め定められた基準値以上である場合、前記データ記憶部が記憶する前記データを読み出す際に、読み出す対象のデータを読み出すとともに、当該読み出す対象のデータに続く所定範囲のデータを読み出す
ストレージ装置。
（付記８）
付記６又は７に記載のストレージ装置であって、
前記データ読出制御部は、前記読み出す対象のデータに続く所定範囲のデータを読み出すと、当該読み出した所定範囲のデータを前記一時データ記憶部に記憶させる
ストレージ装置。
（付記９）
複数世代のデータを重複排除して記憶するデータ記憶部と、前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、を有するストレージ装置に、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出すデータ読出制御手段を実現させ、
前記データ読出制御手段は、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
プログラム。
（付記９−１）
付記９に記載のプログラムであって、
前記データ読出制御手段は、前記一時データ記憶部に世代ごとのデータ格納領域を確保して、確保したデータ格納領域に対応する世代のデータを格納するよう構成され、前記読み出し要求に応じて読み出すデータの属する世代が変わる際に、変わった後の世代用の前記データ格納領域を確保するとともに、前記読み出し要求に応じて読み出したデータのうち変わる前の世代のデータが占める割合に基づいて、変わる前の世代用の前記データ格納領域を破棄するか否かを決定する
プログラム。
（付記９−２）
付記９−１に記載のプログラムであって、
前記データ読出制御手段は、前記変わる前の世代のデータのサイズを前記読み出し要求に応じて読み出したデータのサイズで除した値が予め定められた基準値より低い場合に、変わる前の世代用の前記データ格納領域を破棄する
プログラム。
（付記１０）
複数世代のデータを重複排除して記憶するデータ記憶部と、前記データ記憶部から読み出されたデータを一時的に記憶する一時データ記憶部と、を有する情報処理装置が、
前記データ記憶部が記憶するデータを読み出して前記一時データ記憶部に記憶させるとともに、前記一時データ記憶部からデータを読み出し、外部装置から受信した読み出し要求に応じて読み出したデータのうち各世代のデータが占める割合に基づいて、前記一時データ記憶部に記憶する世代ごとのデータの記憶状況を制御する
情報処理方法。
（付記１０−１）
付記１０に記載の情報処理方法であって、
前記一時データ記憶部に世代ごとのデータ格納領域を確保して、確保したデータ格納領域に対応する世代のデータを格納し、前記読み出し要求に応じて読み出すデータの属する世代が変わる際に、変わった後の世代用の前記データ格納領域を確保するとともに、前記読み出し要求に応じて読み出したデータのうち変わる前の世代のデータが占める割合に基づいて、変わる前の世代用の前記データ格納領域を破棄するか否かを決定する
情報処理方法。
（付記１０−２）
付記１０−１に記載の情報処理方法であって、
前記変わる前の世代のデータのサイズを前記読み出し要求に応じて読み出したデータのサイズで除した値が予め定められた基準値より低い場合に、変わる前の世代用の前記データ格納領域を破棄する
情報処理方法。
【００７６】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００７７】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【００７８】
１  ストレージシステム
１１  データ書き込み手段
１２  データ読み出し手段
１３  重複率算出手段
１４  データ格納領域制御手段
１５  ディスク装置
１６  プリフェッチバッファ
１６１  データ格納領域
２  アクセラレータノード
３  ストレージノード
４  バックアップシステム
５  バックアップ対象装置
６  ストレージ装置
６１  データ記憶部
６２  一時データ記憶部
６３  データ読出制御部
【図１】
2018142175.tif 000003
【図２】
2018142175.tif 000004
【図３】
2018142175.tif 000005
【図４】
2018142175.tif 000006
【図５】
2018142175.tif 000007
【図６】
2018142175.tif 000008
【図７】
2018142175.tif 000009
【図８】
2018142175.tif 000010
【図９】
2018142175.tif 000011