(57)【特許請求の範囲】
【請求項１】
冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部と、
書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択する選択部と、
前記選択部によって選択されたデータブロックについて、前記要求値を満たす冗長度に基づく冗長処理を施して前記分散記憶部に記憶させる書き込み部と、
前記分散記憶部に記憶済みのデータブロックのうち、その冗長度が前記要求値を満たしていないデータブロックを、前記要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して、前記分散記憶部に記憶させる変換処理を、単位時間あたりに処理するデータブロックに上限値を設けることにより処理速度を抑制しながら実行する変換部と、
を備えたストレージシステム。
【請求項２】
前記選択部は、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度が前記要求値を満たしていないデータブロックの中から所定量のデータブロックを抽出し、前記書き込みの対象として選択することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記変換部は、前記変換処理を所定のタイミング毎に実行することにより、前記処理速度を抑制することを特徴とする請求項１または請求項２に記載のストレージシステム。
【請求項４】
前記分散記憶部に記憶された各データブロックについて、その冗長度およびその内容の同一性を判定するための情報を含むメタデータを格納したメタデータ格納部をさらに備え、
前記選択部は、前記メタデータ格納部を参照することにより、前記書き込みの対象のデータブロックを選択し、
前記変換部は、前記メタデータ格納部を参照することにより、前記分散記憶部から前記変換処理の対象となるデータブロックを抽出することを特徴とする請求項１から請求項３のいずれか１項に記載のストレージシステム。
【請求項５】
前記選択部と、前記書き込み部と、前記変換部とを有するアクセス装置と、
前記分散記憶部と、
を備えることを特徴とする請求項１から請求項４のいずれか１項に記載のストレージシステム。
【請求項６】
前記選択部を有するクライアント装置と、
前記書き込み部および前記変換部を有するアクセス装置と、
前記分散記憶部と、
を備えることを特徴とする請求項１から請求項４のいずれか１項に記載のストレージシステム。
【請求項７】
請求項５または請求項６に記載のアクセス装置。
【請求項８】
コンピュータ装置が、
冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部を用いて、
書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択し、
選択したデータブロックについて、前記要求値を満たす冗長度に基づく冗長処理を施して前記分散記憶部に記憶させ、
前記分散記憶部に記憶済みのデータブロックのうち、その冗長度が前記要求値を満たしていないデータブロックを、前記要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して、前記分散記憶部に記憶させる変換処理を、単位時間あたりに処理するデータブロックに上限値を設けることにより処理速度を抑制しながら実行する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同一内容のデータの重複を排除して記憶する機能を有するストレージシステムに関する。
【背景技術】
【０００２】
近年、同一内容のデータの重複を排除して記憶するストレージシステムが知られている。以降、同一内容のデータの重複を排除することを、重複排除とも記載する。特に、書き込みの対象となるデータを複数のデータブロックに分割し、異なるデータを構成するデータブロックであっても同一内容のデータブロックの重複排除を行うストレージシステムがある。このようなストレージシステムは、書き込みの対象となるデータを分割したデータブロックのうち、未だ記憶していないデータブロックを記憶する。そして、このようなストレージシステムは、書き込みの対象となるデータについて、そのデータを構成するデータブロックへの参照を記憶する。
【０００３】
例えば、特許文献１には、書き込みの対象となるデータを受信しながら、リアルタイムでデータブロックへ分割して重複排除を行う技術の一例が記載されている。この関連技術は、データバッファに入力されるデータを所定の基準によって分割する。また、この関連技術は、分割されずにデータバッファに残ったデータと、連続して入力されたデータとを連結して、所定の基準によって分割することを繰り返す。
【０００４】
また、このような重複排除の機能を有するストレージシステムでは、１つのデータブロックが複数のデータによって参照され得るため、データブロックの消失に対応する高い信頼性が求められる。そこで、このようなストレージシステムでは、データブロックに冗長性を持たせて分散して配置することが行われる。具体的には、ストレージシステムは、データブロックをさらにフラグメントに分割し、所定の冗長度に応じたパリティを付加する。そして、ストレージシステムは、フラグメントおよびパリティを複数の記憶装置に分散して格納する。
【０００５】
例えば、特許文献２には、データブロックの冗長度を、そのデータブロックを参照するデータの数に応じて設定する技術の一例が記載されている。あるデータブロックを参照するデータの数を、以降、参照数と記載する。具体的には、この関連技術は、参照数に対して適切な冗長度をあらかじめ設定しておく。そして、この関連技術は、所定のタイミング毎に、記憶している各データブロックについて、その参照数に対して定められた適切な冗長度と実際の冗長度との間の差異を検出し、適切な冗長度でそのデータブロックを書き込み直す。
【０００６】
また、例えば、特許文献３には、既存のデータブロックと同一内容であっても、異なる冗長度でのデータブロックの書き込みに対応する技術の一例が記載されている。この関連技術は、書き込み対象となるデータブロックに要求される冗長度が、記憶済みの同一内容のデータブロックの冗長度よりも高い場合には、新たな冗長度で新たにデータブロックを記憶する。また、この関連技術は、所定のタイミングで、同一内容のデータブロックのうち、冗長度がより高いデータブロックを残して、冗長度がより低いデータブロックを削除する。そして、この関連技術は、削除した方のデータブロックを参照していたデータからの参照を、残した方のデータブロックへの参照に変更する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−１７４６０４号公報
【特許文献２】特開２０１０−２２４８４５号公報
【特許文献３】特開２０１１−１５９１４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述の関連技術には、以下の課題がある。
【０００９】
上述のような重複排除の機能を有するストレージシステムでは、ストレージを構成するノードの数に応じて、望ましい冗長度は変化する。例えば、ノードの数が２である場合、１つのノードに障害が発生した場合でも格納済みのデータへのアクセスを可能とするためには、データ全体の５０％がパリティである必要がある。また、ノードの数が４である場合、データ全体の２５％がパリティである必要がある。
【００１０】
ここで、ストレージシステムでは、一般に、容量不足によるノードの追加や、古いハードウェアから新しいハードウェアへの入れ替えなどにより、ノード数が増減するため、望ましい冗長度が変わる可能性がある。そのため、このようなストレージシステムでは、記憶済みのデータの冗長度を変更したい場合がある。
【００１１】
ところが、特許文献１には、重複排除を行って格納するデータブロックの冗長度に関しては記載がない。
【００１２】
また、特許文献２に記載された関連技術は、上述したように、所定のタイミング毎に、各データブロックについて、適切な冗長度でない場合に適切な冗長度での書き込みをやり直す。適切な冗長度での書き込みのやり直しには、既存のデータブロックの読み出し処理が必要となる。したがって、ストレージシステム全体において冗長度を変更したい場合にこの関連技術を適用すると、全てのデータブロックについて、読み出しを行って新たな冗長度で書き込みをやり直すという冗長度の変換処理が一括して発生する。そのため、格納済みのデータ量が多い場合には、全てのデータブロックに対する一括での冗長度の変換処理により、長時間負荷が高い状況が生じる。そのような状況で、データにアクセスする性能への影響を抑えるために、仮に、運用でのアクセスを優先させ、冗長度の変換処理の速度を抑えたとする。その場合は、冗長度の変換処理が全てのデータブロックについて完了するまでの時間が長くなってしまい、変換処理の効率が悪い。
【００１３】
また、特許文献３に記載された関連技術は、上述したように、書き込みの対象となるデータブロックに要求される冗長度が、同一内容で記憶済みのデータブロックの冗長度より高い場合には、要求される冗長度で新たにデータブロックを記憶する。したがって、ストレージシステム全体において冗長度を変更したい場合にこの関連技術を適用すれば、データブロックの書き込み時に順次冗長度が変換されていく。そのため、冗長度の変換処理のために、変換前のデータブロックを読み出す処理は不要となる。また、全てのデータブロックに対する一括での冗長度の変換処理は発生しない。このため、この関連技術は、特許文献２に記載された関連技術に比べて、冗長度を効率的に変更することはできる。しかしながら、この関連技術は、冗長度の変更が要求された後にデータを書き込む際には、同一内容のデータブロックが既に記憶されている場合でも、要求される冗長度での書き込みを必要とする。つまり、この関連技術は、冗長度の変更が要求された後では、どのデータのどのデータブロックについても書き込みを行うことになる。その結果、この関連技術は、冗長度の変更により、通常の運用時に比べて、重複排除により向上するはずの書き込みの性能を低下させてしまう。
【００１４】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、重複排除の機能を有するストレージシステムにおいて、性能への影響を抑えながら、冗長度を効率的に変更する技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のストレージシステムは、冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部と、書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択する選択部と、前記選択部によって選択されたデータブロックについて、前記要求値を満たす冗長度に基づく冗長処理を施して前記分散記憶部に記憶させる書き込み部と、前記分散記憶部に記憶済みのデータブロックのうち、その冗長度が前記要求値を満たしていないデータブロックを、前記要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して、前記分散記憶部に記憶させる変換処理を、処理速度を抑制しながら実行する変換部と、を備える。
【００１６】
また、本発明のアクセス装置は、前記ストレージシステムにおいて、前記選択部と、前記書き込み部と、前記変換部とを有する。
【００１７】
また、本発明の他のアクセス装置は、前記ストレージシステムにおいて、前記書き込み部と、前記変換部とを有する。
【００１８】
また、本発明のクライアント装置は、前記ストレージシステムにおいて、前記選択部を有する。
【００１９】
また、本発明の方法は、コンピュータ装置が、冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部を用いて、書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択し、選択したデータブロックについて、前記要求値を満たす冗長度に基づく冗長処理を施して前記分散記憶部に記憶させ、前記分散記憶部に記憶済みのデータブロックのうち、その冗長度が前記要求値を満たしていないデータブロックを、前記要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して、前記分散記憶部に記憶させる変換処理を、処理速度を抑制しながら実行する。
【００２０】
また、本発明のプログラムは、冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部を用いて、書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択する選択ステップをコンピュータ装置に実行させる。
【発明の効果】
【００２１】
本発明は、重複排除の機能を有するストレージシステムにおいて、性能への影響を抑えながら、冗長度を効率的に変更する技術を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施の形態としてのストレージシステムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態としてのストレージシステムのハードウェア構成の一例を示す図である。
【図３】本発明の第１の実施の形態におけるデータブロックおよびフラグメントを説明する模式図である。
【図４】本発明の第１の実施の形態としてのストレージシステムが書き込みデータを受信した際の動作を説明するフローチャートである。
【図５】本発明の第１の実施の形態としてのストレージシステムが変換処理を実行する動作を説明するフローチャートである。
【図６】本発明の第２の実施の形態としてのストレージシステムの構成を示すブロック図である。
【図７】本発明の第２の実施の形態としてのストレージシステムのハードウェア構成の一例を示す図である。
【図８】本発明の第２の実施の形態におけるメタデータの一例を示す図である。
【図９】本発明の第２の実施の形態におけるメタデータの他の一例を示す図である。
【図１０】本発明の第２の実施の形態において選択部がデータブロックを選択する処理を模式的に説明する図である。
【図１１】本発明の第２の実施の形態におけるアクセス装置が書き込みデータを受信した際の動作を説明するフローチャートである。
【図１２】本発明の第２の実施の形態におけるストレージノードがフラグメントを受信した際の動作を説明するフローチャートである。
【図１３】本発明の第２の実施の形態におけるアクセス装置が変換処理を実行する動作を説明するフローチャートである。
【図１４】本発明の第３の実施の形態としてのストレージシステムの構成を示すブロック図である。
【図１５】本発明の第３の実施の形態としてのストレージシステムのハードウェア構成の一例を示す図である。
【図１６】本発明の第３の実施の形態におけるクライアント装置がデータブロックを選択する動作を説明するフローチャートである。
【図１７】本発明の第３の実施の形態におけるアクセス装置がデータブロックを受信した際の動作を説明するフローチャートである。
【発明を実施するための形態】
【００２３】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２４】
（第１の実施の形態）
本発明の第１の実施の形態としてのストレージシステム１の機能ブロック構成を図１に示す。図１において、ストレージシステム１は、選択部１１と、書き込み部１２と、変換部１３と、分散記憶部８０とを備える。
【００２５】
ここで、ストレージシステム１は、図２に示すようなハードウェア要素によって構成可能である。図２において、ストレージシステム１は、ＣＰＵ（Central Processing Unit）１００１、メモリ１００２、複数の記憶装置１００４、および、ネットワークインタフェース１００５を含む。メモリ１００２は、ＲＡＭ（Random Access Memory）およびＲＯＭ（Read Only Memory）等によって構成される。記憶装置１００４は、ハードディスクやフラッシュメモリ等の補助記憶装置によって構成される。この場合、選択部１１、書き込み部１２および変換部１３は、ネットワークインタフェース１００５と、メモリ１００２または記憶装置１００４に格納されるコンピュータ・プログラムを読み込んで実行するＣＰＵ１００１とによって構成される。また、分散記憶部８０は、複数の記憶装置１００４によって構成される。ただし、ストレージシステム１およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００２６】
なお、図２には、３つの記憶装置１００４が示されているが、本実施の形態に含まれる記憶装置１００４の数は限定されない。ストレージシステム１では、分散記憶部８０を構成する複数の記憶装置１００４の追加や交換により、容量や性能の拡張が可能となっている。
【００２７】
分散記憶部８０は、冗長処理が施されたデータを記憶する。冗長処理とは、例えば、データを複数の分割データに分割し、冗長情報を付加する処理である。冗長情報は、分割データの一部が消失しても元のデータが復元可能となるよう、誤り訂正符号の技術に基づき生成される情報である。この場合、つまり、冗長処理が施されたデータとは、分割データおよび冗長情報からなる。分散記憶部８０は、冗長処理が施されたデータ、すなわち、分割データおよび冗長情報を、複数の記憶装置１００４に分散させて記憶する。
【００２８】
選択部１１は、書き込みデータをデータブロックに分割する。分割されるデータブロックは、固定長であってもよいし、可変長であってもよい。また、書き込みデータは、外部の装置によって書き込みを要求されて受信されたデータである。例えば、書き込みデータは、ＮＦＳ（Network File System）やＣＩＦＳ（Common Internet File System）等のファイル転送用プロトコルを用いて、外部の装置から受信されたものであってもよい。なお、書き込みデータとは、新規に書き込まれるデータに限らず、更新のために書き込まれるデータも含む。
【００２９】
また、選択部１１は、分割したデータブロックの中から、分散記憶部８０に書き込むデータブロックを選択する。具体的には、選択部１１は、分割したデータブロックのうち、同一内容のデータブロックが分散記憶部８０に記憶されていないデータブロックを、まず、書き込みの対象として選択する。
【００３０】
さらに、選択部１１は、分割したデータブロックのうち、同一内容のデータブロックが分散記憶部８０に既に記憶されており、かつ、その冗長度が要求値を満たさないデータブロックの中から、分散記憶部８０に書き込むデータブロックを選択する。このとき、選択部１１は、同一内容のデータブロックが分散記憶部８０に既に記憶されており、かつ、その冗長度が要求値を満たさないデータブロックの全てではなく、一部を選択することが望ましい。
【００３１】
ここで、データブロックの冗長度とは、冗長処理が施されたデータブロックに占める冗長情報の量を表す情報である。例えば、冗長度とは、データブロックに占める冗長情報の割合であってもよい。あるいは、冗長度とは、データブロックに含まれる冗長情報の個数であってもよい。
【００３２】
また、要求値とは、書き込みデータの冗長度として要求される値である。例えば、要求値としては、ストレージシステム１上に実現されるファイルシステム毎に共通する値が設定されていてもよい。そのような要求値は、メモリ１００２または記憶装置１００４に記憶されていてもよい。また、要求値は、設定により変更可能であるものとする。また、冗長度が要求値を満たすとは、冗長度が要求値に一致することであってもよい。あるいは、冗長度が要求値を満たすとは、冗長度が要求値以上であることであってもよい。その他、冗長度が要求値を満たすとは、その冗長度により確保されるデータブロックの信頼性の高さが、要求値を満たす冗長度により確保されるデータブロックの信頼性の高さと同等またはそれ以上となることであればよい。
【００３３】
なお、もし、冗長度が要求値に一致する場合に要求値を満たすとみなす場合、冗長度が要求値を満たさないデータブロックとしては、冗長度が要求値より小さいデータブロックと、冗長度が要求値より大きく過剰となっているデータブロックとが該当する。これらのデータブロックは、後述の書き込み部１２または変換部１３により要求値が示す冗長度のデータブロックに変換されることになる。この場合、冗長度が要求値より大きく過剰となっているデータブロックが要求される冗長度に下げられることで、分散記憶部８０の使用容量が低減されることになる。
【００３４】
また、もし、冗長度が要求値以上である場合に要求値を満たすとみなす場合、冗長度が要求値を満たさないデータブロックとしては、冗長度が要求値より小さいデータブロックが該当し、冗長度が要求値より大きいデータブロックは該当しない。この場合、後述の書き込み部１２または変換部１３により処理の対象となるデータブロックの個数がより抑制されることになる。
【００３５】
書き込み部１２は、選択部１１によって選択されたデータブロックについて、要求値を満たす冗長度に基づく冗長処理を施して分散記憶部８０に記憶させる。具体的には、書き込み部１２は、データブロックを複数のフラグメントに分割する。分割されたフラグメントを、オリジナルフラグメントと呼ぶことにする。そして、書き込み部１２は、分割されたフラグメントに基づいて、１つ以上の冗長情報を生成する。冗長情報として生成されたフラグメントを、パリティフラグメントと呼ぶことにする。また、オリジナルフラグメントおよびパリティフラグメントを総称して、フラグメントとも記載する。このとき、冗長度に応じて、データブロックを分割するオリジナルフラグメントの個数および付加するパリティフラグメントの個数が決まるものとする。例えば、冗長度が、フラグメントの合計個数に対するパリティフラグメントの個数の割合を表している場合、冗長度（パリティフラグメントの個数の割合）が変更されると、オリジナルフラグメントおよびパリティフラグメントの個数がそれぞれ変更になる。また、例えば、冗長度が、パリティフラグメントの個数を表している場合で、フラグメントの合計個数があらかじめ定められているとする。この場合、冗長度（パリティフラグメントの個数）が変更されると、オリジナルフラグメントおよびパリティフラグメントの個数がそれぞれ変更になる。なお、このような冗長処理には、各種の誤り訂正符号の技術を適用すればよい。そして、書き込み部１２は、これらのフラグメントを、分散記憶部８０における複数の記憶装置１００４に分散して記憶させる。
【００３６】
ここで、書き込みデータを構成するデータブロック、および、データブロックを構成するフラグメントを模式的に図３に示す。図３において、書き込みデータは、ｋ個のデータブロック１〜データブロックｋに分割される。ｋは正の整数である。各データブロックは、固定長であっても可変長であってもよい。また、データブロック１は、ｍ個のオリジナルフラグメントＯＦ１〜ＯＦｍに分割される。ｍは正の整数である。また、データブロック１に対して、ｎ個のパリティフラグメントＰＦ１〜ＰＦｎが生成される。ｎは正の整数である。つまり、冗長処理が施されたデータブロック１は、ｍ個のオリジナルフラグメントおよびｎ個のパリティフラグメントからなる。冗長度をパリティフラグメントの個数で表す場合、このデータブロック１の冗長度はｎとなる。また、冗長度を、パリティフラグメントの割合で表す場合、ｎ／（ｎ＋ｍ）となる。なお、“／”は除算を表す。
【００３７】
変換部１３は、分散記憶部８０に記憶されたデータブロックのうちその冗長度が要求値を満たさないデータブロックについて冗長度の変換処理を、処理速度を抑制しながら行う。冗長度の変換処理とは、格納されているデータブロックを読み込んで、要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換した上で、分散記憶部８０に再度記憶させる処理をいう。具体的には、変換部１３は、該当するデータブロックを、オリジナルフラグメントおよびパリティフラグメントを読み込むことにより復元する。そして、変換部１３は、要求値を満たす冗長度に基づいて、復元したデータブロックを新たなオリジナルフラグメントに分割し、新たなパリティフラグメントを生成する。そして、変換部１３は、新たに生成したオリジナルフラグメントおよびパリティフラグメントを、分散記憶部８０における複数の記憶装置１００４に分散して記憶させる。
【００３８】
以上のように構成されたストレージシステム１の動作を、図面を参照して説明する。
【００３９】
まず、書き込みデータを外部から受信した際のストレージシステム１の動作を図４に示す。
【００４０】
図４では、まず、選択部１１は、冗長度の要求値を取得する（ステップＡ１）。
【００４１】
次に、選択部１１は、書き込みデータをデータブロックに分割する（ステップＡ２）。
【００４２】
次に、選択部１１は、分割したデータブロックのうち、同一内容のデータブロックが分散記憶部８０に記憶されていないデータブロックを、書き込みの対象として選択する（ステップＡ３）。
【００４３】
次に、選択部１１は、分割したデータブロックのうち、同一内容のデータブロックが分散記憶部８０に記憶済み且つその冗長度が要求値を満たさないデータブロックの中から、書き込みの対象とするデータブロックを選択する（ステップＡ４）。
【００４４】
次に、書き込み部１２は、ステップＡ３およびステップＡ４で選択されたデータブロックについて、要求値を満たす冗長度に基づく冗長処理を施す（ステップＡ５）。
【００４５】
次に、書き込み部１２は、冗長処理を施したデータブロックを、分散記憶部８０に記憶させる（ステップＡ６）。
【００４６】
以上で、ストレージシステム１が、書き込みデータを外部から受信した際の動作の説明を終了する。
【００４７】
次に、ストレージシステム１による冗長度の変換処理の動作を図５に示す。
【００４８】
図５では、まず、変換部１３は、分散記憶部８０に記憶されたデータブロックのうち、その冗長度が要求値を満たさないデータブロックを、変換対象として抽出する（ステップＢ１）。
【００４９】
次に、変換部１３は、変換対象のデータブロックを読み込む（ステップＢ２）。
【００５０】
次に、変換部１３は、読み込んだデータブロックに対して、要求値を満たす冗長度に基づく冗長処理を実施する（ステップＢ３）。
【００５１】
次に、変換部１３は、冗長処理を施したデータブロックを、分散記憶部８０に記憶させる（ステップＢ４）。
【００５２】
このようなステップＢ１〜Ｂ４の処理を、変換部１３は、処理速度を抑制しながら実行する。
【００５３】
以上で、ストレージシステム１の動作の説明を終了する。
【００５４】
次に、本発明の第１の実施の形態の効果について述べる。
【００５５】
本発明の第１の実施の形態としてのストレージシステムは、重複排除の機能を有するストレージシステムにおいて、性能への影響を抑えながら、冗長度を効率的に変更することができる。
【００５６】
その理由について説明する。本実施の形態では、分散記憶部が、冗長処理が施されたデータを記憶している。そして、選択部が、書き込みデータをデータブロックに分割し、分割したデータブロックの中から、書き込みの対象とするデータブロックを選択する。ここでは、同一内容のデータブロックが分散記憶部に記憶されていないデータブロックが、書き込みの対象として選択される。さらに、同一内容のデータブロックが分散記憶部に記憶済み且つその冗長度が要求値を満たさないデータブロックの中から抽出されたデータブロックが、書き込みの対象として選択される。そして、書き込み部が、選択部によって選択されたデータブロックについて、要求値を満たす冗長度に基づく冗長処理を施して分散記憶部に記憶させるからである。また、変換部が、分散記憶部に記憶されたデータブロックのうちその冗長度が要求値を満たさないデータブロックを、要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して記憶し直す変換処理を、処理速度を抑制しながら実行するからである。
【００５７】
このように構成されることにより、本実施の形態では、冗長度の要求値が変更された場合に、書き込みデータを構成するデータブロックのうち、新たな冗長度に基づく冗長処理が施されて書き込まれるデータブロックは、次のようなデータブロックのみとなる。すなわち、書き込まれるデータブロックは、分散記憶部に未だ記憶されていないデータブロックと、記憶済みのデータブロックと同一内容で冗長度が要求値を満たさないデータブロックから抽出されたデータブロックのみである。つまり、本実施の形態は、書き込み時に、同一内容のデータブロックが記憶済みでもその冗長度が新たな要求値を満たさないもの全てについて新たな冗長処理を施して記憶し直す場合と比べて、記憶し直すデータブロックの数を抑制することになる。その結果、本実施の形態は、冗長度の要求値が変更された後でも、書き込みの性能を著しく低下させることがない。
【００５８】
また、本実施の形態は、冗長度の要求値が変更された後、書き込み時に新たな冗長処理を施さず記憶し直さなかったデータブロックについては、別途実行する変換処理により、新たな冗長度に基づく冗長処理を施して記憶し直すことになる。このとき、本実施の形態は、このような変換処理を、処理速度を抑制しながら行う。これにより、本実施の形態は、書き込み時には冗長度の変更を行わずに記憶済みのデータブロックに対して一括して冗長度の変換処理を行う場合と比べて、運用でデータにアクセスする性能に影響が出ないようにすることができる。さらに、本実施の形態は、書き込み時にも一部のデータブロックについて冗長度の変更を行っているため、別途行う変換処理の処理速度を抑制しても、全てのデータブロックについて冗長度の変更が完了するまでの時間を短縮することができる。
【００５９】
つまり、本実施の形態は、情報の書き込み時に一部のデータブロックについては新たな冗長度での書き込みを行うことにより冗長度の変更の効率化を図るとともに、別途実行する変換処理により全てのデータブロックについての冗長度の変更を網羅する。その上、本実施の形態は、情報の書き込み時に新たな冗長度での書き込みを行うデータブロック数を抑えることで書き込みの性能を低下させず、別途実行する変換処理の速度を抑制することで読み込みの性能に影響を出さず、変換処理の完了までの時間を短縮する。
【００６０】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００６１】
本発明の第２の実施の形態としてのストレージシステム２の構成を図６に示す。図６において、ストレージシステム２は、アクセス装置２００と、複数のストレージノード９００とを含む。アクセス装置２００は、ストレージシステム２に対するデータの書き込みや読み込みの要求を受け付けるとともに、ストレージシステム２におけるデータを管理する装置である。ストレージノード９００は、ストレージシステム２において読み書きの対象となる書き込みデータを分散して記憶するノードである。複数のストレージノード９００によって、分散記憶部９０が構成される。ストレージシステム２は、ストレージノード９００の追加や交換により、容量や性能の拡張が可能となっている。
【００６２】
また、図６に示すように、アクセス装置２００は、選択部２１と、書き込み部２２と、変換部２３とを有する。また、ストレージノード９００は、データ格納部９１と、メタデータ格納部９２と、データ処理部９３とを有する。
【００６３】
ここで、ストレージシステム２を構成する各装置は、図７に示すようなハードウェア要素によって構成可能である。図７において、アクセス装置２００は、ＣＰＵ２００１、メモリ２００２、記憶装置２００４、および、ネットワークインタフェース２００５を含む。この場合、選択部２１、書き込み部２２および変換部２３は、ネットワークインタフェース２００５と、メモリ２００２または記憶装置２００４に格納されるコンピュータ・プログラムを読み込んで実行するＣＰＵ２００１とによって構成される。また、ストレージノード９００は、ＣＰＵ９００１、メモリ９００２、記憶装置９００４、および、ネットワークインタフェース９００５を含む。この場合、データ格納部９１およびメタデータ格納部９２は、記憶装置９００４によって構成される。また、データ処理部９３は、ネットワークインタフェース９００５と、メモリ９００２または記憶装置９００４に格納されるコンピュータ・プログラムを読み込んで実行するＣＰＵ９００１とによって構成される。なお、図７には、３つのストレージノード９００が示されているが、本実施の形態に含まれるストレージノード９００の数は、限定されない。また、図７には、１つのアクセス装置２００が示されているが、本実施の形態に含まれるアクセス装置２００の数は、限定されない。また、ストレージシステム２を構成する各装置およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００６４】
次に、ストレージノード９００に含まれる各機能ブロックについて説明する。
【００６５】
データ格納部９１は、冗長処理が施されたデータブロックを構成するフラグメントを格納する。フラグメントは、前述のように、オリジナルフラグメントおよびパリティフラグメントの総称である。複数のストレージノード９００のデータ格納部９１により、冗長処理が施されたデータブロックは、分散して記憶される。
【００６６】
メタデータ格納部９２は、分散記憶部９０によって記憶されるデータブロックに関するメタデータを記憶する。メタデータには、データブロックの冗長度およびその内容の同一性を判定するための情報が含まれる。これらの情報は、選択部２１または変換部２３によって参照される。
【００６７】
また、メタデータには、書き込みデータまたは書き込みデータのグループ毎に設定された冗長度の要求値が含まれていてもよい。本発明の第１の実施の形態では、冗長度の要求値は、ファイルシステム毎に共通する値が設定されているものとして説明していた。本実施の形態では、冗長度の要求値は、書き込みデータまたは書き込みデータのグループ毎に個別に設定され得るものとする。なお、該当する書き込みデータに適用される個別の要求値がなければ、共通して設定された要求値が適用されるものとする。また、共通して設定される要求値は、アクセス装置２００のメモリ２００２または記憶装置２００４に格納されていてもよい。
【００６８】
その他、メタデータには、書き込みデータの読み書きに必要となる各種の情報が含まれる。例えば、メタデータには、書き込みデータを構成する各データブロックの論理アドレスを表す情報が含まれていてもよい。また、メタデータには、そのデータブロックを構成するフラグメントの物理アドレスを表す情報が含まれていてもよい。また、メタデータには、各データブロックの参照数を表す情報が含まれていてもよい。参照数とは、そのデータブロックの参照元となっている書き込みデータの個数である。
【００６９】
メタデータ格納部９２に記憶されるメタデータの一例を図８および図９に示す。
【００７０】
図８は、書き込みデータを構成する各データブロックの論理アドレスを含むメタデータの一例である。この例では、書き込みデータは、ファイルまたはディレクトリとして表される。また、ファイルまたはディレクトリは階層的に管理されている。ディレクトリ「Root dir fid = 1」やディレクトリ「dirA fid = 3」についてのメタデータは、その配下にあるファイルまたはディレクトリの名称およびｆｉｄを含む。ｆｉｄは、ファイルまたはディレクトリを識別する情報である。また、ファイル「fileA fid = 2」についてのメタデータは、そのファイルを構成する各データブロックのオフセットおよび論理アドレスを含む。オフセットは、そのファイルにおけるそのデータブロックの開始位置を表す。
【００７１】
図９は、データブロックの冗長度および同一性を判定するための情報を含むメタデータの一例である。この例では、各データブロックの論理アドレスに関連付けてメタデータが記憶されている。ここでは、冗長度は、データブロックに対して付加されたパリティフラグメントの個数によって表されている。また、ハッシュ値は、データブロックの内容の同一性を判定するための情報の一例である。その場合、ハッシュ値は、ＭＤ５（Message Digest Algorithm 5）やＳＨＡ−２５６（Secure Hash Algorithm 256-bit）などのように、非可逆のハッシュ関数を用いて算出される値であることが望ましい。また、参照数は、前述したように、このデータブロックを参照する書き込みデータ（ファイル）の個数を表す。また、物理アドレスは、データブロックを構成する各フラグメントの物理アドレスを“，”で区切って表している。この例では、各フラグメントの物理アドレスは、ストレージノード９００を特定する情報およびそのデータ格納部９１上での物理的な格納位置を表す情報からなる。
【００７２】
なお、複数のストレージノード９００のメタデータ格納部９２は、ストレージシステム２に記憶される全てのデータブロックについてのメタデータをそれぞれが記憶していてもよい。あるいは、複数のストレージノード９００のいずれかのメタデータ格納部９２が、ストレージシステム２に記憶される全てのデータブロックについてのメタデータを一括して記憶していてもよい。ただし、この場合、他のストレージノード９００により、メタデータ格納部９２がバックアップされていることが望ましい。あるいは、複数のストレージノード９００のメタデータ格納部９２は、ストレージシステム２に記憶されるデータブロックについてのメタデータを分散して記憶していてもよい。
【００７３】
データ処理部９３は、データ格納部９１またはメタデータ格納部９２に格納される情報を、アクセス装置２００から受信して書き込む。また、データ処理部９３は、アクセス装置２００からの要求に基づき、データ格納部９１またはメタデータ格納部９２に格納済みの情報を読み出してアクセス装置２００に送信する。
【００７４】
次に、アクセス装置２００に含まれる各機能ブロックについて説明する。
【００７５】
選択部２１は、本発明の第１の実施の形態における選択部１１と略同様に構成されるが、書き込みの対象とするデータブロックを選択する処理の詳細が異なる。選択部２１は、同一内容のデータブロックが分散記憶部９０に記憶済みで且つその冗長度が要求値を満たしていないデータブロックの中から、所定量のデータブロックを抽出し、書き込みの対象として選択する。
【００７６】
例えば、選択部２１は、書き込みデータを構成するデータブロックを、記憶済みのデータブロックとの内容の同一性の検証および冗長度の検証を行うことにより、次の３種類に分類する。第１の種類は、同一内容のデータブロックが分散記憶部９０に記憶されていないデータブロックである。第２の種類は、同一内容のデータブロックが分散記憶部９０に記憶済みであり、かつ、その冗長度が要求値を満たすデータブロックである。第３の種類は、同一内容のデータブロックが分散記憶部９０に記憶済みであり、かつ、その冗長度が要求値を満たさないデータブロックである。
【００７７】
ここで、選択部２１は、各データブロックについての内容の同一性の検証を、次のようにして実行する。すなわち、選択部２１は、各データブロックについて同一性を判定するための情報を算出する。そして、選択部２１は、算出した同一性を判定するための情報が、メタデータ格納部９２に既に記憶されているか否かに基づいて、同一内容のデータブロックが分散記憶部９０に記憶済みであるか否かを判定する。
【００７８】
また、選択部２１は、各データブロックについての冗長度の検証を、次のようにして実行する。すなわち、選択部２１は、各データブロックについて、同一内容のデータブロックが記憶済みであれば、その冗長度を、メタデータ格納部９２から取得する。また、選択部２１は、そのデータブロックを含む書き込みデータに適用される冗長度の要求値を取得する。書き込みデータに適用される冗長度は、書き込みデータまたはその属するグループについて個別に設定された要求値、または、共通に設定された要求値である。そして、選択部２１は、同一内容のデータブロックの冗長度が要求値を満たすか否かを判定する。これにより、選択部２１は、書き込みデータを構成する各データブロックを、上述の３種類に分類することができる。例えば、選択部２１は、データブロックをこのように３種類に分類した情報を、メモリ１００２または記憶装置１００４に一時的に記憶することにより、以下の選択処理を行えばよい。
【００７９】
そして、選択部２１は、まず、第１の種類のデータブロックを、書き込みの対象として選択する。さらに、選択部２１は、第３の種類のデータブロックから、所定量のデータブロックを、書き込みの対象として選択する。所定量とは、データブロックの個数であってもよい。また、所定量とは、第３の種類のデータブロックの個数に対する割合であってもよい。また、所定量とは、書き込みデータを構成するデータブロックの個数に対する所定の割合であってもよい。また、所定量とは、データブロックの合計サイズであってもよい。また、所定量とは、第３の種類のデータブロックの合計サイズに対する所定の割合であってもよい。また、所定量とは、書き込みデータのサイズに対する所定の割合であってもよい。その他、所定量とは、選択されるデータブロックの量を表すものであれば、その他の量であってもよい。
【００８０】
また、選択部２１は、所定量のデータブロックを選択する基準として、様々な基準を適用可能である。例えば、選択部２１は、書き込みデータを構成する順に並べたデータブロックの先頭から順番に、第３の種類のデータブロックを所定量まで選択してもよい。
【００８１】
所定量のデータブロックの選択処理を模式的に図１０に示す。図１０において、矩形は、書き込みデータが分割されたデータブロックを表す。また、灰色に塗りつぶされた矩形は、選択されたデータブロックを表す。ｋ個のデータブロックは、書き込みデータの先頭から順に１番目からｋ番目まで並んでいる。また、矩形の中の数字は、上述の分類を表している。つまり、１を囲む矩形は、同一内容のデータブロックが記憶されていない第１の種類のデータブロックを表す。また、２を囲む矩形は、同一内容のデータブロックが記憶されており、且つ、その冗長度が要求値を満たしている第２の種類のデータブロックを表している。また、３を囲む矩形は、同一内容のデータブロックが記憶されており、且つ、その冗長度が要求値を満たしていない第３の種類のデータブロックを表している。このとき、第１の種類のデータブロックは、全て選択される。また、所定量および選択基準として「先頭からＭ個」が定められているとすると、第３の種類のデータブロックは、先頭からＭ個までが選択され、Ｍ＋１個目以降は選択されない。
【００８２】
なお、選択部２１は、書き込みデータを構成するデータブロックの全てについて内容の同一性および冗長度の検証を終えてから選択を行わなくてもよい。つまり、選択部２１は、書き込みデータを構成するデータブロックについて同一性および冗長度の検証を行いながら、任意のタイミングで上述した選択の基準により所定量のデータブロックの選択を行ってもよい。例えば、選択部２１は、書き込みデータを構成するデータブロックの先頭から順に、事前に定められた個数のデータブロックについて同一性および冗長度の検証を終える毎に、上述した選択基準によりデータブロックを選択してもよい。あるいは、選択部２１は、書き込みデータを構成するデータブロックの先頭から順に同一性および冗長度の検証を実行しながら所定期間が経過する毎に、上述した選択基準によりデータブロックを選択してもよい。そして、この場合、選択部２１は、選択処理を行う度に、選択したデータブロックを後述の書き込み部２２に通知してもよい。
【００８３】
書き込み部２２は、本発明の第１の実施の形態における書き込み部１２と略同様に構成される。ただし、本実施の形態では、書き込みデータに冗長処理を施して生成したオリジナルフラグメントおよびパリティフラグメントを分散して記憶させるために、ストレージノード９００に送信する点が異なる。いずれのフラグメントをいずれの、ストレージノード９００に送信するかについては、例えば、ラウンドロビンにより決定する手法が適用可能である。その他、いずれのフラグメントをいずれのストレージノード９００に送信するかについては、各種の公知の技術を適用すればよい。
【００８４】
なお、書き込み部２２は、選択部２１によって書き込みの対象となるデータブロックが選択される度に通知される場合、通知される度に、通知されたデータブロックに対して冗長処理を施して、ストレージノード９００に送信すればよい。
【００８５】
変換部２３は、本発明の第１の実施の形態における変換部１３と略同様に構成されるが、変換処理の速度を抑制するための手法の詳細が異なる。変換部２３は、該当するデータブロックそれぞれに対する変換処理を、所定のタイミング毎に実行することにより、処理速度を抑制する。
【００８６】
また、変換部２３は、分散記憶部９０に記憶されたデータブロックのうち、変換処理の対象となるデータブロックを抽出するために、ストレージノード９００のメタデータ格納部９２を参照する。具体的には、変換部２３は、メタデータ格納部９２に格納された各データブロックの冗長度と、そのデータブロックを参照する書き込みデータに適用される冗長度の要求値とを比較する。そして、変換部２３は、冗長度が要求値を満たさないデータブロックを、冗長度の変換処理の対象として抽出すればよい。
【００８７】
以上のように構成されたストレージシステム２の動作を、図面を参照して説明する。
【００８８】
まず、書き込みデータを外部から受信した際のストレージシステム２の動作を図１１に示す。なお、ここでは、同一性を判定するための情報として、ハッシュ値を採用している。また、所定量として「Ｍ個」が定められ、「先頭から」という選択基準が定められているものとする。
【００８９】
ここでは、まず、選択部２１は、書き込みデータについて適用される冗長度の要求値を取得する（ステップＡ１１）。
【００９０】
前述のように、選択部２１は、書き込みデータまたはそのグループについて個別に設定された要求値または共通に設定された要求値を取得する。
【００９１】
次に、選択部２１は、書き込みデータをデータブロックに分割する（ステップＡ１２）。
【００９２】
次に、選択部２１は、各データブロックについて、ハッシュ値を算出する（ステップＡ１３）。
【００９３】
次に、選択部２１は、各データブロックについて、内容の同一性の検証および冗長度の検証を行う（ステップＡ１４）。
【００９４】
具体的には、選択部２１は、各データブロックについて算出したハッシュ値と同一のハッシュ値が、メタデータ格納部９２に格納されているか否かを判断する。また、選択部２１は、同一のハッシュ値のデータブロックの冗長度を、メタデータ格納部９２から取得する。そして、選択部２１は、同一のハッシュ値が格納されていないデータブロックを、第１の種類に分類する。また、選択部２１は、同一のハッシュ値が格納されており、その冗長度が要求値を満たしているデータブロックを、第２の種類に分類する。また、選択部２１は、同一のハッシュ値が格納されており、その冗長度が要求値を満たさないデータブロックを、第３の種類に分類する。前述のように、冗長度が要求値を満たすとは、冗長度が要求値に一致することであってもよいし、冗長度が要求値以上であることであってもよい。
【００９５】
次に、選択部２１は、第１の種類に分類したデータブロックを選択する。つまり、選択部２１は、ストレージノード９００に記憶されていないデータブロックを全て選択する（ステップＡ１５）。
【００９６】
次に、選択部２１は、第３の種類に分類したデータブロックから、所定量のデータブロックを選択する（ステップＡ１６）。
【００９７】
ここでは、前述のように、選択部２１は、書き込みデータの先頭から順に、第３の種類のデータブロックを所定の個数まで選択する。
【００９８】
次に、書き込み部２２は、ステップＡ１５およびＡ１６で選択されたデータブロックについて、要求値を満たす冗長度に基づく冗長処理を施す。具体的には、書き込み部２２は、要求値を満たす冗長度に基づいて、各データブロックを分割してオリジナルフラグメントを生成し、パリティフラグメントを生成する（ステップＡ１７）。
【００９９】
そして、書き込み部２２は、オリジナルフラグメントおよびパリティフラグメントを含む情報を、複数のストレージノード９００に分散して送信する（ステップＡ１８）。また、このとき、書き込み部２２は、このデータブロックのハッシュ値および冗長度等を含むメタデータを、これらのフラグメントと共に送信する。
【０１００】
以上で、アクセス装置２００が、書き込みデータを外部から受信した際の動作の説明を終了する。
【０１０１】
次に、ストレージノード９００が、フラグメントを受信した際の動作を図１２に示す。
【０１０２】
図１２において、まず、データ処理部９３は、フラグメントをアクセス装置２００から受信する（ステップＣ１）。
【０１０３】
なお、受信されるフラグメントは、１つまたは複数である。また、受信されるフラグメントは、オリジナルフラグメントおよびパリティフラグメントのどちらか１種類で構成される場合もあるし、両方の種類で構成される場合もある。
【０１０４】
次に、データ処理部９３は、受信したフラグメントを、データ格納部９１に格納する（ステップＣ２）。
【０１０５】
次に、データ処理部９３は、受信したフラグメントを含むデータブロックのメタデータを更新する（ステップＣ３）。
【０１０６】
例えば、メタデータ格納部９２に、図８および図９に示した情報が格納されているとする。もし、受信したフラグメントを含むデータブロックが新規に書き込まれたものであれば、データ処理部９３は、新たなデータブロックに関するハッシュ値、冗長度および物理アドレスを含む情報を、図９に示したようなメタデータとして追加して記憶する。また、受信したフラグメントを含むデータブロックが、以前と同一内容で冗長度が変換されたものであれば、データ処理部９３は、該当するデータブロックの物理アドレスおよび冗長度を更新する。また、受信したフラグメントを含むデータブロックによって構成される書き込みデータが新規に書き込まれたものであれば、データ処理部９３は、新たな書き込みデータに関する情報を、図８に示したようなメタデータとして追加して記憶する。また、受信したフラグメントを含むデータブロックによって構成される書き込みデータが更新されたものであれば、データ処理部９３は、該当する書き込みデータのメタデータを更新する。
【０１０７】
以上で、ストレージノード９００は、フラグメントを受信した際の動作を終了する。
【０１０８】
次に、ストレージシステム２の冗長度の変換処理を図１３に示す。
【０１０９】
図１３では、まず、変換部２３は、分散記憶部９０に記憶されたデータブロックの１つについてその冗長度を、メタデータ格納部９２から取得する（ステップＢ１１）。
【０１１０】
次に、変換部２３は、そのデータブロックを含む書き込みデータについて適用される冗長度の要求値を取得する（ステップＢ１２）。
【０１１１】
次に、変換部２３は、そのデータブロックの冗長度が要求値を満たすか否かを判断する（ステップＢ１３）。
【０１１２】
ここで、冗長度が要求値を満たす場合、ストレージシステム２の動作は、ステップＢ１７に進む。
【０１１３】
一方、ステップＢ１３において、データブロックの冗長度が要求値を満たさない場合、変換部２３は、分散記憶部９０から該当するデータブロックを読み込む（ステップＢ１４）。
【０１１４】
具体的には、変換部２３は、複数のストレージノード９００からオリジナルフラグメントおよびパリティフラグメントを読み込み、読み込んだフラグメントに基づいて該当するデータブロックを復元する。
【０１１５】
次に、変換部２３は、読み込んだデータブロックに対して、要求値を満たす冗長度に基づく冗長処理を施し、オリジナルフラグメントおよびパリティフラグメントを生成する（ステップＢ１５）。
【０１１６】
次に、変換部２３は、オリジナルフラグメントおよびパリティフラグメントを、複数のストレージノード９００に分散して送信する（ステップＢ１６）。
【０１１７】
そして、変換部２３は、ステップＢ１１からの処理をまだ施していない他のデータブロックが分散記憶部９０に記憶されていれば（ステップＢ１７でＹｅｓ）、所定時間待機した後（ステップＢ１８）、ステップＢ１１からの処理を繰り返す。
【０１１８】
一方、ステップＢ１１からの処理を施していない他のデータブロックが分散記憶部９０に記憶されていなければ（ステップＢ１７でＮｏ）、ストレージシステム２は、冗長度の変換処理を終了する。
【０１１９】
次に、本発明の第２の実施の形態の効果について述べる。
【０１２０】
本発明の第２の実施の形態としてのストレージシステムは、重複排除の機能を有するストレージシステムにおいて、性能への影響を抑えながら、冗長度をさらに効率的に変更することができる。
【０１２１】
その理由について説明する。本実施の形態では、ストレージノードにおいて、データ格納部が、データブロックを分割した情報を格納する。また、メタデータ格納部が、記憶済みのデータブロックの冗長度および同一性を判定するための情報を記憶する。そして、アクセス装置の選択部が、書き込みデータを構成するデータブロックから書き込みの対象とするデータブロックを選択する際に、メタデータ格納部を参照することにより、内容の同一性の検証および冗長度の検証を行う。そして、選択部は、同一内容のデータブロックが未だ記憶されていないデータブロックを、書き込みの対象として選択する。加えて、選択部は、同一内容のデータブロックが記憶済みで且つその冗長度が要求値を満たさないデータブロックの中から、所定量のデータブロックを書き込みの対象として選択するからである。そして、アクセス装置の書き込み部が、書き込みの対象として選択したデータブロックを分散して複数のストレージノードに書き込む。このとき、ストレージノードは、メタデータ格納部の冗長度および同一性を判定するための情報を更新する。また、アクセス装置の変換部は、メタデータ格納部に格納された冗長度を参照することにより、冗長度の変換処理の対象となるデータブロックを抽出する。そして、変換部が、処理対象のデータブロックのそれぞれに対する冗長度の変換処理を、所定のタイミング毎に実行するからである。
【０１２２】
このように、本実施の形態は、冗長度の要求値が変更された場合に、書き込みデータを構成するデータブロックのうち、新たな要求値を満たす冗長度に基づく冗長処理が施されて書き込まれるデータブロックの個数を、より適切に抑制する。その結果、本実施の形態は、冗長度の要求値が変更された後でも、書き込みの性能をさらに効果的に低下させない。
【０１２３】
また、本実施の形態は、冗長度の要求値が変更された後、書き込み時に新たな冗長処理を施さず記憶し直さなかったデータブロックについて、別途実行する変換処理の処理速度を、より適切に抑制する。これにより、本実施の形態は、書き込み時に冗長度の変更を行わずに記憶済みのデータブロックに対して一括して冗長度の変換処理を行う場合と比べて、運用でのアクセスの性能に対する影響をさらに出ないようにすることができる。さらに、本実施の形態は、書き込み時に一部のデータブロックについて冗長度を変更しておくため、別途一括して行う変換処理の速度を抑制しても、全てのデータブロックについて冗長度の変更が完了するまでの時間を短縮することができる。
【０１２４】
なお、本実施の形態において、選択部が、第３の種類のデータブロックから所定量のデータブロックを選択する基準として、書き込みデータの先頭から順に第３の種類のデータブロックを所定の個数まで選択する例について説明した。これに限らず、選択部は、書き込みデータの末尾から順に第３の種類のデータブロックを所定量選択してもよい。あるいは、選択部は、第３の種類のデータブロックから、ランダムに所定量のデータブロックを選択してもよい。あるいは、選択部は、第３の種類のデータブロックから、アクセス頻度の高い順に所定量のデータブロックを選択してもよい。
【０１２５】
あるいは、選択部は、複数の所定量や選択基準を組み合わせて、データブロックの選択を行ってもよい。例えば、選択部は、まず、ある選択基準にしたがって（例えば、先頭から順に）、第３の種類のデータブロックを第１の所定量（例えば、所定の個数まで）選択したとする。さらに、選択部は、選択したデータブロックが第２の所定量（例えば、所定の割合）に達していない場合に、第３の種類のデータブロックを他の選択基準にしたがって（例えば、アクセス頻度の高い順に）追加して選択するようにしてもよい。ただし、このような場合であっても、選択部は、第３の種類のデータブロックの全てを選択しないようにすることが望ましい。
【０１２６】
また、本実施の形態において、変換部は、変換の対象となるデータブロックそれぞれに対する変換処理を所定のタイミング毎に実行することにより、変換処理の速度を抑制する例について説明した。これに限らず、変換部は、単位期間の間に変換処理を行うデータブロックの数に上限を設け、上限を超えた場合は、次の単位期間になるまで変換処理を一時的に停止することにより、処理速度を抑制してもよい。あるいは、変換部は、所定の間隔を開けて、所定数ずつのデータブロックに対して変換処理を実行するようにしてもよい。その他、変換部は、その他の手段により処理速度を抑制してもよい。
【０１２７】
また、本実施の形態において、メタデータ格納部が、ストレージノードに設けられる例について説明した。これに限らず、メタデータ格納部は、アクセス装置に設けられていてもよい。また、メタデータ格納部は、データの書き込みを要求するクライアント装置に設けられていてもよい。その場合、クライアント装置は、自装置がストレージノードに書き込んだ書き込みデータに関するメタデータをメタデータ格納部に格納するようにしても良い。また、その場合、クライアント装置は、他のクライアント装置とメタデータ格納部の情報を共有しないようにしてもよいし、共有するようにしてもよい。
【０１２８】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第２の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０１２９】
本発明の第３の実施の形態としてのストレージシステム３の構成を図１４に示す。図１４において、ストレージシステム３は、本発明の第２の実施の形態としてのストレージシステム２に対して、アクセス装置２００に替えてアクセス装置３００を含み、さらに、クライアント装置４００を含む点が異なる。クライアント装置４００は、ストレージノード９００に対して、書き込みデータの書き込みを、アクセス装置３００を介して要求する装置である。
【０１３０】
また、図１４に示すように、アクセス装置３００は、本発明の第２の実施の形態におけるアクセス装置２００に対して、書き込み部２２に替えて書き込み部３２を備える点と、選択部２１を含まない点とが異なる。クライアント装置４００は、選択部４１を備える。
【０１３１】
ここで、ストレージシステム３を構成する各装置は、図１５に示すようなハードウェア要素によって構成可能である。図１５において、クライアント装置４００は、ＣＰＵ４００１、メモリ４００２、記憶装置４００４、および、ネットワークインタフェース４００５を含む。この場合、選択部４１は、ネットワークインタフェース４００５と、メモリ４００２または記憶装置４００４に格納されるコンピュータ・プログラムを読み込んで実行するＣＰＵ４００１とによって構成される。アクセス装置３００は、本発明の第２の実施の形態におけるアクセス装置２００と同様のハードウェア要素により構成される。なお、ストレージシステム３を構成する各装置およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０１３２】
次に、まず、クライアント装置４００に含まれる機能ブロックについて説明する。
【０１３３】
選択部４１は、本発明の第２の実施の形態における選択部２１と略同様に構成される。ただし、選択部４１は、自装置で生じた書き込みデータについて動作する点が異なる。選択部４１は、自装置における図示しない他の機能ブロックから、書き込みデータを受信して動作する。また、選択部４１は、書き込みの対象として選択したデータブロックおよびその冗長度や同一性を判定するための情報を含むメタデータを、アクセス装置３００に送信する点も異なる。なお、選択部４１は、書き込みの対象となるデータブロックを選択するために、記憶済みのデータブロックに関するメタデータを参照する。このとき、選択部４１は、アクセス装置３００に対してメタデータの参照を要求することにより、メタデータを取得すればよい。また、選択部４１は、書き込みの対象となるデータブロックを選択するために、冗長度の要求値を参照する。このとき、選択部４１は、アクセス装置３００から、冗長度の要求値を取得すればよい。
【０１３４】
次に、アクセス装置３００に含まれる機能ブロックについて説明する。
【０１３５】
書き込み部３２は、本発明の第２の実施の形態における書き込み部２２と略同様に構成される。ただし、書き込み部３２は、クライアント装置４００から書き込みの対象として受信したデータブロックについて動作する点が異なる。
【０１３６】
その他、アクセス装置３００は、クライアント装置４００からの要求に応じて、ストレージノード９００のメタデータ格納部９２に格納されるメタデータを取得し、クライアント装置４００に返信する機能を有する。また、アクセス装置３００は、クライアント装置４００からの要求に応じて、冗長度の要求値を返信する機能を有する。このとき、アクセス装置３００は、各データブロックについて共通に設定された冗長度の要求値を自装置のメモリ２００２または記憶装置２００４等から取得して、クライアント装置４００に返信してもよい。また、アクセス装置３００は、該当するデータブロックについて個別に設定された冗長度の要求値をストレージノード９００のメタデータ格納部９２から取得して、クライアント装置４００に返信してもよい。
【０１３７】
以上のように構成されたストレージシステム３の動作について、図面を参照して説明する。
【０１３８】
まず、クライアント装置４００において書き込みデータが生じた際の動作を図１６に示す。
【０１３９】
図１６において、選択部４１は、ステップＡ１１〜Ａ１６まで、本発明の第２の実施の形態におけるアクセス装置２００の選択部２１と同様に動作する。これにより、書き込みデータが分割されたデータブロックの中から、書き込みの対象となるデータブロックが選択される。
【０１４０】
次に、選択部４１は、選択したデータブロックおよびメタデータを含む情報を、アクセス装置３００に送信する（ステップＡ２７）。
【０１４１】
以上で、クライアント装置４００は、書き込みデータが生じた際の動作を終了する。
【０１４２】
次に、アクセス装置３００において、クライアント装置４００からデータブロックを受信した際の動作を図１７に示す。
【０１４３】
図１７では、まず、書き込み部３２は、クライアント装置４００から、選択されたデータブロックを含む情報を受信する（ステップＡ２８）。
【０１４４】
以降、書き込み部３２は、ステップＡ１７〜Ａ１８まで、本発明の第２の実施の形態と同様に動作する。これにより、書き込み対象として選択された各データブロックは、要求値を満たす冗長度に基づく冗長処理が施されたオリジナルフラグメントおよびパリティフラグメントとして、複数のストレージノード９００に送信される。
【０１４５】
以上で、アクセス装置３００は、クライアント装置４００からデータブロックを受信した際の動作を終了する。
【０１４６】
なお、ストレージノード９００がフラグメントを受信した際の動作は、図１２を参照して説明した本発明の第２の実施の形態の動作と同様であるため、本実施の形態における説明を省略する。
【０１４７】
また、アクセス装置３００が所定のタイミング毎に行う変換処理の動作は、図１３を参照して説明した本発明の第２の実施の形態の動作と同様であるため、本実施の形態における説明を省略する。
【０１４８】
次に、本発明の第３の実施の形態の効果について述べる。
【０１４９】
本発明の第３の実施の形態としてのストレージシステムは、重複排除の機能を有し、性能への影響を抑えながら冗長度を効率的に変更するストレージシステムにおいて、クライアントからの通信量を低減することができる。
【０１５０】
その理由について説明する。本実施の形態では、クライアント装置において選択部が、自装置で生じた書き込みデータをデータブロックに分割し、その中から、書き込みの対象とするデータブロックを、本発明の第２の実施の形態と同様に選択する。そして、選択部が、選択したデータブロックをアクセス装置に送信する。そして、アクセス装置において書き込み部が、受信したデータブロックに冗長処理を施して、ストレージノードに送信するからである。
【０１５１】
これにより、本実施の形態は、書き込みデータの書き込みを要求するクライアント装置からアクセス装置への通信量を低減することができ、ネットワークおよびアクセス装置の負荷を低減することができる。
【０１５２】
なお、上述した本発明の各実施の形態において、冗長度は、パリティフラグメントの個数または個数の割合によって表される例を中心に説明した。これに限らず、冗長度は、例えば、パリティフラグメントの個数およびオリジナルフラグメントの個数の組み合わせによって表されていてもよい。その他、冗長度は、データブロックにおける冗長情報の量を表す情報であれば、他の情報で表されていてもよい。
【０１５３】
また、上述した本発明の各実施の形態において、ストレージシステムの各機能ブロックが、メモリまたは記憶装置に記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
【０１５４】
また、上述した本発明の各実施の形態において、ストレージシステムの各機能ブロックは、さらに複数の装置に分散されて実現されてもよい。
【０１５５】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明したストレージシステムの動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置のデータ格納部（記憶媒体）に格納しておく。そして、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【０１５６】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１５７】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０１５８】
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部と、
書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択する選択部と、
前記選択部によって選択されたデータブロックについて、前記要求値を満たす冗長度に基づく冗長処理を施して前記分散記憶部に記憶させる書き込み部と、
前記分散記憶部に記憶済みのデータブロックのうち、その冗長度が前記要求値を満たしていないデータブロックを、前記要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して、前記分散記憶部に記憶させる変換処理を、処理速度を抑制しながら実行する変換部と、
を備えたストレージシステム。
（付記２）
前記選択部は、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度が前記要求値を満たしていないデータブロックの中から所定量のデータブロックを抽出し、前記書き込みの対象として選択することを特徴とする付記１に記載のストレージシステム。
（付記３）
前記変換部は、前記変換処理を所定のタイミング毎に実行することにより、前記処理速度を抑制することを特徴とする付記１または付記２に記載のストレージシステム。
（付記４）
前記分散記憶部に記憶された各データブロックについて、その冗長度およびその内容の同一性を判定するための情報を含むメタデータを格納したメタデータ格納部をさらに備え、
前記選択部は、前記メタデータ格納部を参照することにより、前記データブロックについて、同一内容のデータブロックが前記分散記憶部に記憶済みであるか否か、および、その冗長度が前記要求値を満たすか否かを判断することを特徴とする付記１から付記３のいずれか１つに記載のストレージシステム。
（付記５）
前記選択部と、前記書き込み部と、前記変換部とを有するアクセス装置と、
前記分散記憶部と、
を備えることを特徴とする付記１から付記４のいずれか１つに記載のストレージシステム。
（付記６）
前記選択部を有するクライアント装置と、
前記書き込み部および前記変換部を有するアクセス装置と、
前記分散記憶部と、
を備えることを特徴とする付記１から付記４のいずれか１つに記載のストレージシステム。
（付記７）
付記５または付記６に記載のアクセス装置。
（付記８）
付記６に記載のクライアント装置。
（付記９）
コンピュータ装置が、
冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部を用いて、
書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択し、
選択したデータブロックについて、前記要求値を満たす冗長度に基づく冗長処理を施して前記分散記憶部に記憶させ、
前記分散記憶部に記憶済みのデータブロックのうち、その冗長度が前記要求値を満たしていないデータブロックを、前記要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して、前記分散記憶部に記憶させる変換処理を、処理速度を抑制しながら実行する方法。
（付記１０）
冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部を用いて、
書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択する選択ステップをコンピュータ装置に実行させるプログラム。
（付記１１）
冗長処理が施されたデータを複数の記憶装置に分散して記憶する分散記憶部を用いて、
書き込みを要求された書き込みデータをデータブロックに分割し、分割したデータブロックのうち、同一内容のデータブロックが前記分散記憶部に記憶されていないデータブロックと、同一内容のデータブロックが前記分散記憶部に記憶済みで且つその冗長度がその要求値を満たしていないデータブロックの中から抽出したデータブロックとを、書き込みの対象として選択する選択ステップと、
前記選択ステップにおいて選択されたデータブロックについて、前記要求値を満たす冗長度に基づく冗長処理を施して前記分散記憶部に記憶させる書き込みステップと、
前記分散記憶部に記憶済みのデータブロックのうち、その冗長度が前記要求値を満たしていないデータブロックを、前記要求値を満たす冗長度に基づく冗長処理を施したデータブロックに変換して、前記分散記憶部に記憶させる変換処理を、処理速度を抑制しながら実行する変換ステップと、
をコンピュータ装置に実行させるプログラム。
【符号の説明】
【０１５９】
１、２、３    ストレージシステム
１１、２１、４１    選択部
１２、２２、３２    書き込み部
１３、２３    変換部
８０、９０    分散記憶部
９１    データ格納部
９２    メタデータ格納部
９３    データ処理部
２００、３００    アクセス装置
４００    クライアント装置
９００    ストレージノード
１００１、２００１、４００１、９００１    ＣＰＵ
１００２、２００２、４００２、９００２    メモリ
１００４、２００４、４００４、９００４    記憶装置
１００５、２００５、４００５、９００５    ネットワークインタフェース
【図１】
0006330824.tif 000002
【図２】
0006330824.tif 000003
【図３】
0006330824.tif 000004
【図４】
0006330824.tif 000005
【図５】
0006330824.tif 000006
【図６】
0006330824.tif 000007
【図７】
0006330824.tif 000008
【図８】
0006330824.tif 000009
【図９】
0006330824.tif 000010
【図１０】
0006330824.tif 000011
【図１１】
0006330824.tif 000012
【図１２】
0006330824.tif 000013
【図１３】
0006330824.tif 000014
【図１４】
0006330824.tif 000015
【図１５】
0006330824.tif 000016
【図１６】
0006330824.tif 000017
【図１７】
0006330824.tif 000018