(57)【要約】【課題】ストレージシステムの性能の向上を図ること。【解決手段】記憶要求された一群のデータを区別する識別情報を当該一群のデータに付与する識別情報付与手段と、上記一群のデータの一部である記憶対象データを複数に分割し、冗長化して、複数のフラグメントデータからなるデータセットを生成するデータセット生成手段と、上記データセットを構成する上記各フラグメントデータを分散して、上記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して上記記憶対象データを記憶する分散記憶制御手段と、を備えると共に、上記分散記憶制御手段は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する。【選択図】図１
2010176180.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶手段と、これら複数の記憶手段に対してデータを記憶すると共に当該記憶手段に記憶されているデータを読み出すデータ処理手段と、を備え、
前記データ処理手段は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与手段と、
前記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、前記分割データと前記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成手段と、
前記データセットを構成する前記各フラグメントデータを分散して、前記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して前記記憶対象データを記憶する分散記憶制御手段と、を備えると共に、
前記分散記憶制御手段は、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、前記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記分散記憶制御手段は、前記記憶手段に格納される前であって、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、バッファメモリ内の格納位置が連続するよう格納し、当該バッファメモリに格納された前記各フラグメントデータを前記各記憶手段に格納する、
ストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
前記分散記憶制御手段は、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、前記識別番号毎にそれぞれ異なる前記バッファメモリに格納し、当該識別番号毎にそれぞれ設けられた前記各バッファメモリに格納された前記各フラグメントデータを前記各記憶手段に格納する、
ストレージシステム。
【請求項４】
請求項２又は３記載のストレージシステムであって、
前記分散記憶制御手段は、前記バッファメモリの容量が所定容量に達したタイミングで、当該バッファメモリに格納された前記各フラグメントデータを前記各記憶手段に格納する、
ストレージシステム。
【請求項５】
請求項１乃至４記載のいずれか一項に記載のストレージシステムであって、
前記分散記憶制御手段は、前記各記憶手段に既に格納されている、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、前記各記憶領域内における格納位置が連続するよう当該各記憶領域に再格納する、
ストレージシステム。
【請求項６】
請求項１乃至５のいずれか一項に記載のストレージシステムであって、
前記データセット生成手段は、前記識別情報付与手段にて前記一群のデータに付与された前記識別情報を、当該一群のデータに含まれる複数の前記記憶対象データに対応する前記データセットを構成する前記各フラグメントデータに含める、
ストレージシステム。
【請求項７】
請求項１乃至６のいずれか一項に記載のストレージシステムであって、
前記データ処理手段は、前記分散記憶制御手段にて前記各記憶手段に格納した前記記憶対象データの格納位置を表す格納位置情報を生成して管理する格納位置情報管理手段を備え、
この格納位置情報管理手段は、データの読み出し要求時に特定された当該データの前記格納位置情報に基づいて、当該格納位置情報にて表される前記各記憶手段内の格納位置に格納されたデータを読み出す、
ストレージシステム。
【請求項８】
請求項７記載のストレージシステムであって、
前記データ処理手段は、前記記憶対象データの内容に固有の内容識別情報を生成すると共に、前記各記憶手段に既に格納されている記憶対象データの内容に固有の内容識別情報と比較して、前記各記憶手段に同一内容の前記記憶対象データが記憶されているか否かを調べる重複チェック手段を備え、
当該重複チェック手段は、前記記憶対象データと同一内容のデータが既に前記各記憶手段に記憶されている場合に、当該記憶対象データを前記各記憶手段に格納せず、当該記憶対象データの格納位置情報として前記同一内容のデータの格納位置情報を用いる、
ストレージシステム。
【請求項９】
複数の記憶手段を備えた情報処理装置に、
前記複数の記憶手段に対してデータを記憶すると共に当該記憶手段に記憶されているデータを読み出すデータ処理手段を実現させると共に、
前記データ処理手段は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与手段と、
前記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、前記分割データと前記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成手段と、
前記データセットを構成する前記各フラグメントデータを分散して、前記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して前記記憶対象データを記憶する分散記憶制御手段と、を備え、
前記分散記憶制御手段は、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、前記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
プログラム。
【請求項１０】
請求項９記載のプログラムであって、
前記分散記憶制御手段は、前記記憶手段に格納される前であって、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、バッファメモリ内の格納位置が連続するよう格納し、当該バッファメモリに格納された前記各フラグメントデータを前記各記憶手段に格納する、
プログラム。
【請求項１１】
請求項９又は１０記載のプログラムであって、
前記分散記憶制御手段は、前記各記憶手段に既に格納されている、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、前記各記憶領域内における格納位置が連続するよう当該各記憶領域に再格納する、
プログラム。
【請求項１２】
複数の記憶手段を備えた情報処理装置にて、
前記複数の記憶手段に対してデータを記憶するデータ記憶工程と、当該記憶手段に記憶されているデータを読み出すデータ読み出し工程と、を有すると共に、
前記データ記憶工程は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与工程と、
前記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、前記分割データと前記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成工程と、
前記データセットを構成する前記各フラグメントデータを分散して、前記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して前記記憶対象データを記憶する分散記憶制御工程と、を有し、
前記分散記憶制御工程は、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、前記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
データ処理方法。
【請求項１３】
請求項２記載のデータ処理方法であって、
前記分散記憶制御工程は、前記記憶手段に格納される前であって、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、バッファメモリ内の格納位置が連続するよう格納し、当該バッファメモリに格納された前記各フラグメントデータを前記各記憶手段に格納する、
データ処理方法。
【請求項１４】
請求項１２又は１３記載のデータ処理方法であって、
前記分散記憶制御工程は、前記各記憶手段に既に格納されている、同一の前記識別情報が付与された前記一群のデータに含まれる複数の前記記憶対象データに対応する複数の前記データセットをそれぞれ構成する前記各フラグメントデータを、前記各記憶領域内における格納位置が連続するよう当該各記憶領域に再格納する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、データを分散して複数の記憶装置に記憶するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。
【０００４】
具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納している。そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。
【０００５】
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、コンテンツアドレスストレージシステムでは、上述したように、所定のデータを複数のフラグメントに分割して、複数の記憶装置にそれぞれ格納している。そして、複数の上位ホストからデータの格納命令が出された場合であっても、データを受信した順に記憶装置に格納している。
【０００８】
このため、特定の上位ホストから受信したデータであっても、種々の上位ホストからのデータが、記憶装置内では交互に記憶される場合がある（図１０参照）。すると、仮に、特定の上位ホストから受信したひとまとまりのデータを読み出そうとした場合や、データを読み出すときに後続のデータも同時に読み出してキャッシュしておく場合であっても、関連するデータをまとめて読み出すことが困難となる。つまり、各記憶装置には、複数の上位ホストからのデータが、その順番がバラバラに格納されることがあるため、この場合には、関連するデータをまとめて読み出すことができず、効率的なデータの読み出しを実現することができない。その結果、読み出し速度の向上を図ることができず、ストレージシステムとしての性能の向上を図ることができない、という問題が生じる。
【０００９】
このため、本発明の目的は、上述した課題である、冗長性を維持しつつ、読み出し速度の向上を図り、性能の向上を図ることができるストレージシステムを提供する、ことにある。
【課題を解決するための手段】
【００１０】
かかる目的を達成するため本発明の一形態であるストレージシステムは、
複数の記憶手段と、これら複数の記憶手段に対してデータを記憶すると共に当該記憶手段に記憶されているデータを読み出すデータ処理手段と、を備え、
上記データ処理手段は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与手段と、
上記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、上記分割データと上記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成手段と、
上記データセットを構成する上記各フラグメントデータを分散して、上記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して上記記憶対象データを記憶する分散記憶制御手段と、を備えると共に、
上記分散記憶制御手段は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
という構成を有する。
【００１１】
また、本発明の他の形態であるプログラムは、
複数の記憶手段を備えた情報処理装置に、
上記複数の記憶手段に対してデータを記憶すると共に当該記憶手段に記憶されているデータを読み出すデータ処理手段を実現させるプログラムであり、
上記データ処理手段は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与手段と、
上記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、上記分割データと上記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成手段と、
上記データセットを構成する上記各フラグメントデータを分散して、上記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して上記記憶対象データを記憶する分散記憶制御手段と、を備え、
上記分散記憶制御手段は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
という構成を有する。
【００１２】
また、本発明の他の形態であるデータ処理方法は、
複数の記憶手段を備えた情報処理装置にて、
上記複数の記憶手段に対してデータを記憶するデータ記憶工程と、当該記憶手段に記憶されているデータを読み出すデータ読み出し工程を有する。
上記データ記憶工程は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与工程と、
上記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、上記分割データと上記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成工程と、
上記データセットを構成する上記各フラグメントデータを分散して、上記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して上記記憶対象データを記憶する分散記憶制御工程と、を有し、
上記分散記憶制御工程は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
という構成を有する。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、冗長性を維持しつつ、読み出し速度の向上を図り、ストレージシステムの性能の向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図２】本発明の実施形態２におけるストレージシステムを含むシステム全体の構成を示すブロック図である。
【図３】本発明の実施形態２におけるストレージシステムの構成の概略を示すブロック図である。
【図４】本発明の実施形態２におけるストレージシステムの構成を示す機能ブロック図である。
【図５】図４に開示したストレージシステムにおけるデータ記憶処理の様子を説明するための説明図である。
【図６】図４に開示したストレージシステムにおけるデータ記憶処理の様子を説明するための説明図である。
【図７】図４に開示したストレージシステムにおけるデータ読み出し処理の様子を説明するための説明図である。
【図８】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図９】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図１０】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図１１】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図１２】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図１３】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図１４】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図１５】図４に開示したストレージシステムにおける記憶装置に対するデータの格納の様子を示す図である。
【図１６】図４に開示したストレージシステムの動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
＜実施形態１＞
本発明の第１の実施形態を、図１を参照して説明する。図１は、ストレージシステムの構成を示す機能ブロック図である。なお、本実施形態では、ストレージシステムの概略を説明する。
【００１６】
図１に示すように、本実施形態におけるストレージシステム１は、
複数の記憶手段６と、これら複数の記憶手段６に対してデータを記憶すると共に当該記憶手段６に記憶されているデータを読み出すデータ処理手段２と、を備えている。
そして、上記データ処理手段２は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与手段３と、
上記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、上記分割データと上記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成手段４と、
上記データセットを構成する上記各フラグメントデータを分散して、上記各記憶手段６に形成された各記憶領域内の同一位置にそれぞれ格納して上記記憶対象データを記憶する分散記憶制御手段５と、を備える。
さらに、上記分散記憶制御手段５は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、という構成を採る。
【００１７】
上記発明によると、まず、ストレージシステムは、上位ホストからのデータ記憶要求により一群のデータを受け付け、この一群のデータを区別する識別情報を付与する。そして、一群のデータを複数の記憶対象データに分割し、１つの記憶対象データをさらに複数の分割データに分割すると共に、当該記憶対象データを復元するための冗長データを生成し、これら分割データと冗長データとである複数のフラグメントデータから成るデータセットを生成する。続いて、ストレージシステムは、１つのデータセットを構成する各フラグメントデータを各記憶手段に分散して記憶する。このとき、ストレージシステムは、一のデータセットを構成する各フラグメントデータを、各記憶手段に形成された各記憶領域内の同一位置に格納する。さらに、ストレージシステムは、上記記憶領域内へのフラグメントデータの格納時、あるいは、その後の任意のタイミングで、同一の識別情報が付与された一群のデータに含まれる複数の記憶対象データに対応する複数のデータセットをそれぞれ構成する各フラグメントデータを、各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する。
【００１８】
これにより、記憶手段には、一群のデータを構成する複数の記憶対象データが連続して記憶されるため、関連する内容のデータがまとまって記憶されることとなる。従って、ストレージシステムが記憶したデータを読み出す際に、関連するデータをまとめて読み出すことが可能となる。その結果、データ読み出し速度及び効率の向上を図ることができ、ストレージシステムの性能の向上を図ることができる。
【００１９】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記記憶手段に格納される前であって、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、バッファメモリ内の格納位置が連続するよう格納し、当該バッファメモリに格納された上記各フラグメントデータを上記各記憶手段に格納する、
という構成を採る。
【００２０】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記識別番号毎にそれぞれ異なる上記バッファメモリに格納し、当該識別番号毎にそれぞれ設けられた上記各バッファメモリに格納された上記各フラグメントデータを上記各記憶手段に格納する、
という構成を採る。
【００２１】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記バッファメモリの容量が所定容量に達したタイミングで、当該バッファメモリに格納された上記各フラグメントデータを上記各記憶手段に格納する、
という構成を採る。
【００２２】
これにより、ストレージシステムは、一旦、バッファメモリに、一群のデータが連続するよう格納し、その後、記憶手段に格納する。従って、関連する内容のデータをまとめて格納する処理が簡易となり、ストレージシステムの性能の向上を図ることができる。
【００２３】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記各記憶手段に既に格納されている、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に再格納する、
という構成を採る。
【００２４】
これにより、ストレージシステムは、すでに記憶手段に格納したデータであっても、後に、一群のデータを構成する記憶対象データが連続するよう再格納する。従って、その後のデータ読み出し速度及び効率の向上を図ることができる。
【００２５】
また、上記ストレージシステムでは、
上記データセット生成手段は、上記識別情報付与手段にて上記一群のデータに付与された上記識別情報を、当該一群のデータに含まれる複数の上記記憶対象データに対応する上記データセットを構成する上記各フラグメントデータに含める、
という構成を採る。
【００２６】
これにより、各記憶領域に格納する各フラグメントデータが、どの一群のデータに属しているものであるかを容易に把握することができる。従って、各フラグメントデータに含まれる識別情報に基づいて、一群のデータに含まれる記憶対象データを連続して格納する処理を容易に実行することができる。
【００２７】
また、上記ストレージシステムでは、
上記データ処理手段は、上記分散記憶制御手段にて上記各記憶手段に格納した上記記憶対象データの格納位置を表す格納位置情報を生成して管理する格納位置情報管理手段を備え、
この格納位置情報管理手段は、データの読み出し要求時に特定された当該データの上記格納位置情報に基づいて、当該格納位置情報にて表される上記各記憶手段内の格納位置に格納されたデータを読み出す、
という構成を採る。
【００２８】
また、上記ストレージシステムでは、
上記データ処理手段は、上記記憶対象データの内容に固有の内容識別情報を生成すると共に、上記各記憶手段に既に格納されている記憶対象データの内容に固有の内容識別情報と比較して、上記各記憶手段に同一内容の上記記憶対象データが記憶されているか否かを調べる重複チェック手段を備え、
当該重複チェック手段は、上記記憶対象データと同一内容のデータが既に上記各記憶手段に記憶されている場合に、当該記憶対象データを上記各記憶手段に格納せず、当該記憶対象データの格納位置情報として上記同一内容のデータの格納位置情報を用いる、
という構成を採る。
【００２９】
これにより、記憶対象データの内容に基づいて当該データの格納した位置を表す格納位置情報を特定するコンテンツアドレスストレージシステムに、上述した構成を適用することができる。従って、既に記憶されているデータと同一内容の記憶対象データを重複して記憶することを抑制することができ、データ記憶使用量を低減でき、システム自体の低コスト化を図ることができる。
【００３０】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記各記憶手段に生成された各ファイルのデータ格納領域の先頭を基準とした同一位置に、上記データセットを構成する上記各フラグメントデータをそれぞれ格納する、
という構成を採る。
【００３１】
これにより、ストレージシステムが記憶したデータを読み出す際には、当該データを構成するデータセットのうち１つのフラグメントデータの格納位置を特定することで、他のフラグメントデータの格納位置も容易に特定することができる。従って、データ読み出し時に、データセットを構成する全てのフラグメントの位置を特定する必要がなく、高速にデータを読み出すことができる。その結果、冗長性を維持しつつ、高速にデータを読み出すことが可能な高性能のストレージシステムを実現することができる。
【００３２】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記各記憶手段に生成された各ファイルに既に格納されているデータの次に空いている格納位置に、上記データセットを構成する上記各フラグメントデータをそれぞれ格納する、
という構成を採る。
【００３３】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記データセットを構成する上記各フラグメントデータを、同一のタイミングで上記各記憶手段にそれぞれ格納する、
という構成を採る。
【００３４】
上述したように、分散記憶制御手段にて各フラグメントデータを各記憶手段内にそれぞれ格納することで、簡易な処理にてデータセットを構成する各フラグメントデータを同一位置にそれぞれ格納することができる。従って、データ記憶処理も高速化することができる。
【００３５】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記データセットを構成する上記各フラグメントデータに、当該データセットを識別するための同一の識別情報をそれぞれ付与して、当該データセットを構成する上記各フラグメントデータを上記各記憶手段にそれぞれ格納する、
という構成を採る。
【００３６】
また、上記ストレージシステムでは、
上記分散記憶制御手段は、上記データセットを構成する上記各フラグメントデータが上記各記憶手段に形成された上記各記憶領域内のそれぞれ同一位置に格納されているか否かを、当該各フラグメントデータに付与された上記識別情報に基づいて調べ、当該各フラグメントデータが上記各記憶領域内の同一位置に格納されていない場合に、上記データセットを構成する上記各フラグメントデータが上記各記憶領域内の同一位置にそれぞれ格納されるよう当該各フラグメントデータの格納位置を変更する、
という構成を採る。
【００３７】
これにより、データセットを構成する各フラグメントデータには、同一の識別情報が付与されて複数の記憶手段に格納される。従って、既に記憶されているフラグメントデータに付与されている識別情報を調べることで、一のデータセットを構成する各フラグメントデータが各記憶手段の同一位置に格納されているか否かを判別できる。そして、各フラグメントデータに含まれる識別情報に基づいて、各記憶手段に格納された当該フラグメントデータの格納位置を変更することができる。その結果、上述同様に、一のデータセットを構成する各フラグメントデータを、各記憶手段内に形成された記憶領域内においてそれぞれ同一位置に格納することができ、高速にデータを読み出すことが可能となる。
【００３８】
また、上述したストレージシステムは、情報処理装置（システム）に、プログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、
複数の記憶手段を備えた情報処理装置に、
上記複数の記憶手段に対してデータを記憶すると共に当該記憶手段に記憶されているデータを読み出すデータ処理手段を実現させるプログラムである。
そして、上記データ処理手段は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与手段と、
上記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、上記分割データと上記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成手段と、
上記データセットを構成する上記各フラグメントデータを分散して、上記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して上記記憶対象データを記憶する分散記憶制御手段と、を備え、
上記分散記憶制御手段は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
という構成を採る。
【００３９】
そして、上記プログラムでは、
上記分散記憶制御手段は、上記記憶手段に格納される前であって、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、バッファメモリ内の格納位置が連続するよう格納し、当該バッファメモリに格納された上記各フラグメントデータを上記各記憶手段に格納する、
という構成を採る。
【００４０】
また、上記プログラムでは、
上記分散記憶制御手段は、上記各記憶手段に既に格納されている、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に再格納する、
という構成を採る。
【００４１】
また、上述したストレージシステムが作動することにより実行される、本発明の他の形態であるデータ処理方法は、
複数の記憶手段を備えた情報処理装置にて、
上記複数の記憶手段に対してデータを記憶するデータ記憶工程と、当該記憶手段に記憶されているデータを読み出すデータ読み出し工程を有する。
そして、上記データ記憶工程は、
記憶要求された一群のデータを区別する識別情報を、当該一群のデータに付与する識別情報付与工程と、
上記一群のデータの一部である記憶対象データを複数に分割して分割データを生成すると共に、この記憶対象データを復元するための冗長データを生成し、上記分割データと上記冗長データとである複数のフラグメントデータからなるデータセットを生成するデータセット生成工程と、
上記データセットを構成する上記各フラグメントデータを分散して、上記各記憶手段に形成された各記憶領域内の同一位置にそれぞれ格納して上記記憶対象データを記憶する分散記憶制御工程と、を有し、
上記分散記憶制御工程は、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に格納する、
という構成を採る。
【００４２】
また、上記データ処理方法では、
上記分散記憶制御工程は、上記記憶手段に格納される前であって、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、バッファメモリ内の格納位置が連続するよう格納し、当該バッファメモリに格納された上記各フラグメントデータを上記各記憶手段に格納する、
という構成を採る。
【００４３】
また、上記データ処理方法では、
上記分散記憶制御工程は、上記各記憶手段に既に格納されている、同一の上記識別情報が付与された上記一群のデータに含まれる複数の上記記憶対象データに対応する複数の上記データセットをそれぞれ構成する上記各フラグメントデータを、上記各記憶領域内における格納位置が連続するよう当該各記憶領域に再格納する、
という構成を採る。
【００４４】
上述した構成を有する、プログラム、又は、データ処理方法、の発明であっても、上記ストレージシステムと同様の作用を有するために、上述した本発明の目的を達成することができる。
【００４５】
＜実施形態２＞
本発明の第２の実施形態を、図２乃至図１６を参照して説明する。図２は、システム全体の構成を示すブロック図である。図３は、ストレージシステムの概略を示すブロック図であり、図４は、構成を示す機能ブロック図である。図５乃至図７は、ストレージシステムの動作を説明するための説明図である。図８乃至図１５は、ストレージシステムにおけるデータの格納状態を示す図である。図１６は、ストレージシステムの動作を示すフローチャートである。
【００４６】
ここで、本実施形態は、上述した実施形態１にて開示したストレージシステムの具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００４７】
［構成］
図２に示すように、本発明におけるストレージシステム１０は、ネットワークＮを介してバックアップ処理を制御するバックアップシステム１１に接続している。そして、バックアップシステム１１は、ネットワークＮを介して接続されたバックアップ対象装置１２に格納されているバックアップ対象データ（記憶対象データ）を取得し、ストレージシステム１０に対して記憶するよう要求する。これにより、ストレージシステム１０は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。
【００４８】
そして、図３に示すように、本実施形態におけるストレージシステム１０は、複数のサーバコンピュータが接続されて構成を採っている。具体的に、ストレージシステム１０は、ストレージシステム１０自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード１０Ａと、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード１０Ｂと、を備えている。なお、アクセラレータノード１０Ａの数とストレージノード１０Ｂの数は、図３に示したものに限定されず、さらに多くの各ノード１０Ａ，１０Ｂが接続されて構成されていてもよい。
【００４９】
さらに、本実施形態におけるストレージシステム１０は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
【００５０】
なお、以下では、ストレージシステム１０が１つのシステムであるとして、当該ストレージシステム１０が備えている構成及び機能を説明する。つまり、以下に説明するストレージシステム１０が有する構成及び機能は、アクセラレータノード１０Ａあるいはストレージノード１０Ｂのいずれに備えられていてもよい。なお、ストレージシステム１０は、図３に示すように、必ずしもアクセラレータノード１０Ａとストレージノード１０Ｂとを備えていることに限定されず、いかなる構成であってもよく、例えば、１台のコンピュータにて構成されていてもよい。さらには、ストレージシステム１０は、コンテンツアドレスストレージシステムであることにも限定されない。
【００５１】
図４に、ストレージシステム１０の構成を示す。この図に示すように、ストレージシステム１０は、データを記憶するデータ記憶装置３０と、当該データ記憶装置３０に対するデータの記憶及び読み出し動作を制御するデータ処理装置２０と、を備えている。なお、実際には、データ処理装置２０は、図３に示したアクセラレータノード１０Ａ及びストレージノード１０Ｂが備えているＣＰＵ（Central Processing Unit）などの複数の演算装置にて構成されている。また、記憶装置３０は、図３に示したアクセラレータノード１０Ａ及びストレージノード１０Ｂが備えているハードディスクなどの記憶装置にて構成されている。
【００５２】
そして、図４に示すように、上記データ処理装置２０は、プログラムが組み込まれることにより構築された、ストリームＩＤ付与部２１と、ブロック生成部２２と、重複チェック部２３と、フラグメント生成部２４と、分散記憶制御部２５と、格納位置管理部２６と、を備えている。また、データ記憶装置３０は、バックアップ対象データを格納する複数の記憶装置３１と、格納したデータの格納位置を記憶する格納位置情報記憶部３２と、を備えている。以下、各構成について詳述する。なお、同時に、上記各構成によるデータの処理の様子を、図５乃至図１５を参照して説明する。
【００５３】
まず、上記ストリームＩＤ付与部２１（識別情報付与手段）は、図６の矢印Ｙ１に示すようにバックアップ対象データＡの入力を受けると、一群のデータである当該バックアップ対象データＡを区別する識別情報であるストリームＩＤを付与する。例えば、バックアップ対象データＡに対してストリームＩＤ＝ＳＴ１を付与し、バックアップ対象データＢ（図示せず）に対してストリームＩＤ＝ＳＴ２を付与する。
【００５４】
なお、ストリームＩＤは、バックアップ対象データを区別するのみならず、当該バックアップ対象データＡの出力元であるバックアップ対象装置１２を区別する情報であってもよい。つまり、ストリームＩＤ付与部２１は、所定のルールによりまとめられたバックアップ対象データ毎に、異なるストリームＩＤを付与する。
【００５５】
また、上記ブロック生成部２２は、上記バックアップ対象データＡの入力を受けると、図５及び図６の矢印Ｙ２に示すように、当該バックアップ対象データＡを、所定容量（例えば、６４ＫＢ）のブロックデータＤに分割する。そして、このブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈ（内容識別情報）を算出する（矢印Ｙ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。なお、このブロック生成部２１による処理は、アクセラレータノード１０Ａにて実行される。
【００５６】
そして、上記ブロック生成部２２は、バックアップ対象データＡをブロックデータＤに分割する際に、上述したようにバックアップ対象データＡに付与したストリームＩＤを、各ブロックデータＤにも引き継いで付与する。なお、上記ストリームＩＤ付与部２１は、上述したように、バックアップ対象データＡに対してストリームＩＤを付与することに限定されない。例えば、ブロック生成部２２にてバックアップ対象データＡをブロックデータＤに分割する際に、当該ブロックデータＤ毎にバックアップ対象データＡを識別する同一のストリームＩＤを付与してもよい。
【００５７】
また、上記重複チェック部２３（重複チェック手段）は、バックアップ対象データＡのブロックデータＤのハッシュ値Ｈを用いて、当該ブロックデータＤが既に記憶装置３１に格納されているか否かを調べる。具体的には、まず、既に格納されているブロックデータＤは、そのハッシュ値Ｈと格納位置を表すコンテンツアドレスＣＡが、関連付けてＭＦＩ（Ｍａｉｎ  Ｆｒａｇｍｅｎｔ  Ｉｎｄｅｘ）ファイルに登録されている。従って、重複チェック部２３は、格納前に算出したブロックデータＤのハッシュ値ＨがＭＦＩファイル内に存在している場合には、既に同一内容のブロックデータＤが格納されていると判断できる（図６の矢印Ｙ４）。この場合には、格納前のブロックデータＤのハッシュ値Ｈと一致したＭＦＩ内のハッシュ値Ｈに関連付けられているコンテンツアドレスＣＡを、当該ＭＦＩファイルから取得する。そして、このコンテンツアドレスＣＡを、記憶要求にかかるブロックデータＤのコンテンツアドレスＣＡとして返却する。これにより、このコンテンツアドレスＣＡにて参照される既に格納されているデータが、記憶要求されたブロックデータＤとして使用されることとなり、当該記憶要求にかかるブロックデータＤは記憶する必要がなくなる。
【００５８】
なお、ストレージノード１０Ｂが複数存在する場合には、ブロックデータＤから上述したように算出したハッシュ値Ｈに基づいて、Write Initiator（WI）と呼ばれる、データ格納時の初期処理（後述する、圧縮処理やフラグメント化処理）を担当する１つのストレージノード１０Ｂが決定される。
【００５９】
また、上記フラグメント生成部２４（データセット生成手段）は、上述したように重複チェック部２３にてまだ記憶されていないと判断されたブロックデータＤを、圧縮して、図６の矢印Ｙ５に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図５の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータ（分割データ４１）に分割する。さらに、フラグメント生成部２４は、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ４１に追加する。例えば、図５の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ４２）を追加する。これにより、９つの分割データ４１と、３つの冗長データとにより構成される１２個のフラグメントデータからなるデータセット４０を生成する。なお、上記フラグメント生成部２４による処理は、上述したＷＩと呼ばれる１つのストレージノード１０Ｂによって実行される。
【００６０】
そして、上記フラグメント生成部２４は、生成した全てのフラグメントデータＤ１〜Ｄ１２に、当該フラグメントデータの元となるブロックデータＤ、つまり、フラグメントデータＤ１〜Ｄ１２から復元されるブロックデータＤに付与されたストリームＩＤを、それぞれ付与する。
【００６１】
次に、上記分散記憶制御部２５（分散記憶制御手段）の基本的な機能について説明する。分散記憶制御部２５は、上記フラグメント生成部２４にて生成されたデータセットを構成する各フラグメントデータを、記憶装置３１に形成された各記憶領域に、それぞれ分散して格納する。例えば、図５に示すように、１２個のフラグメントデータＤ１〜Ｄ１２を生成した場合には、１２個の記憶装置３１内にそれぞれ形成したデータ格納ファイルＦ１〜Ｆ１２（データ格納領域）に、各フラグメントデータＤ１〜Ｄ１２を１つずつそれぞれ格納する（図６の矢印Ｙ６参照）。
【００６２】
このとき、分散記憶制御部２５は、各データ格納ファイルＦ１〜Ｆ１２内における同一位置に、１つのデータセット４０を構成する各フラグメントデータＤ１〜Ｄ１２を格納する。例えば、図８に示すように、各データ格納ファイルＦ１〜Ｆ１２の先頭を基準とした同一位置に、全てのフラグメントデータＤ１〜Ｄ１２をそれぞれ格納する。なお、図８の例では、図の上端をファイルの先頭としている。
【００６３】
具体的に、分散記憶制御部２５は、各データ格納ファイルＦ１〜Ｆ１２に対する格納位置を予め設定することなく、当該各データ格納ファイルＦ１〜Ｆ１２に格納されているデータの次に空いている格納位置に、それぞれフラグメントデータＤ１〜Ｄ１２を格納する。例えば、図９に示す例では、すでに各データ格納ファイルＦ１〜Ｆ１２の網掛け部分までそれぞれデータが格納されているが、その次の領域に、各フラグメントデータＤ１〜Ｄ１２を格納して、１つのデータセット４０を構成する全てのフラグメントデータＤ１〜Ｄ１２の格納位置が揃うようにする。また、特に、分散記憶制御手段２５は、一のデータセット４０を構成する各フラグメントデータＤ１〜Ｄ１２を、同一のタイミングで各データ格納ファイルＦ１〜Ｆ１２に格納する。
【００６４】
但し、上述したように格納した場合には、同時に複数のバックアップ対象データの記憶要求があると、図１０に示すように、各データ格納ファイルＦ１〜Ｆ１２に、ストリームＩＤ（ＳＴ１，ＳＴ２，ＳＴ３）が異なる各データセットを構成する各フラグメントデータが交互に格納される事態が生じうる。なお、図１０では、ストリームＩＤが同一のデータセットを、同一の模様にて図示している。
【００６５】
このため、本実施形態における分散記憶制御部２５では、各データ格納ファイルＦ１〜Ｆ１２に格納する前に、各フラグメントデータＤ１〜Ｄ１２をストリームＩＤ毎に区別して異なるバッファメモリに一旦格納する。そして、その後、バッファメモリ内のフラグメントデータＤ１〜Ｄ１２を各データ格納ファイルＦ１〜Ｆ１２に格納する。その具体例を、図１１乃至図１４を参照して説明する。
【００６６】
まず、分散記憶制御部２５は、各データ格納ファイルＦ１〜Ｆ１２毎に、それぞれストリームＩＤ毎のバッファメモリを設定する。例えば、３つのストリームＩＤ（ＳＴ１，ＳＴ２，ＳＴ３）に対応するバッファメモリＢＦ１，ＢＦ２，ＢＦ３を設定する場合には、図１１に示すように、１つのデータ格納ファイルＦ１に対して３つのバッファメモリＢＦ１，ＢＦ２，ＢＦ３を設定し、これを１２セット設定する。
【００６７】
そして、分散記憶制御部２５は、フラグメントデータＤ１〜Ｄ１２に含まれているストリームＩＤに対応するバッファメモリＢＦ１，ＢＦ２，ＢＦ３に、当該各フラグメントデータＤ１〜Ｄ１２をそれぞれ格納する。例えば、図１１に示す例では、元となるブロックデータＤ（バックアップ対象データＡ）のデータセット４０がストリームＩＤ＝ＳＴ１であるとする。この場合には、データセット４０を構成する各フラグメントデータＤ１〜Ｄ１２を、それぞれ後に格納先となる各データ格納ファイルＦ１〜Ｆ１２にそれぞれ設定されたストリームＩＤ＝ＳＴ１の各バッファメモリＢＦ１に格納する。つまり、フラグメントデータＤ１をデータ格納ファイルＦ１のバッファメモリＢＦ１に格納し、フラグメントデータＤ２をデータ格納ファイルＦ２のバッファメモリＢＦ２に格納し、同様に、全てのデータ格納ファイルのバッファメモリに対してフラグメントデータを格納する。このとき、各フラグメントデータＤ１〜Ｄ１２を、各バッファメモリＢＦ１〜ＢＦ３内に既に格納されているデータの次に空いている格納領域に、全てを同時のタイミングで格納する。
【００６８】
これにより、各バッファメモリＢＦ１〜ＢＦ３内には、対応するストリームＩＤのフラグメントデータが連続して位置して格納される。また、このとき、同一のデータセットを構成する各フラグメントデータＤ１〜Ｄ１２は、各バッファメモリＢＦ１〜ＢＦ３内において同一の位置に格納される。例えば、図１１に示すように、データセット４０のフラグメントデータＤ１，Ｄ２を各バッファメモリＢＦ１に格納した場合には、図１２に示すように、当該バッファメモリＢＦ１のそれぞれ同一の位置である最後の格納位置に格納される。このように、各フラグメントデータをストリームＩＤ毎に振り分けて、当該ストリームＩＤに対応する各バッファメモリに格納していくことで、全てのデータ記憶ファイルＦ１〜Ｆ１２にそれぞれ対応する特定のストリームＩＤの各バッファメモリが、どのタイミングにおいても全て同一の容量となる。例えば、図１２の例では、各バッファメモリＢＦ１は全ての同じ容量であり、その他のバッファメモリＢＦ２，ＢＦ３も、対応するストリームＩＤ毎に、全て同じ容量である。
【００６９】
そして、分散記憶制御部２５は、上記各バッファメモリＢＦ１〜ＢＦ３の容量が所定容量、例えば、満杯となったタイミングで、そのバッファメモリＢＦ１〜ＢＦ３内の全てのフラグメントデータを、データ格納ファイルＦ１〜Ｆ１２に格納する。例えば、図１２の例では、ストリームＩＤ＝ＳＴ１の全てのバッファメモリＢＦ１が同時に満杯となるため、当該各バッファメモリＢＦ１内のフラグメントデータを同一のタイミングで各データ格納ファイルＦ１〜Ｆ１２に格納する。このとき、分散記憶制御部２５は、各データ格納ファイルＦ１〜Ｆ１２に格納されているデータの次に空いている格納位置に、それぞれフラグメントデータＤ１〜Ｄ１２を格納する。例えば、図１３に示す例では、各データ格納ファイルＦ１〜Ｆ１２が空の状態であり、当該各データ格納ファイルＦ１〜Ｆ１２の先頭から、フラグメントデータを格納する。
【００７０】
すると、図１３に示すように、各データ格納ファイルＦ１〜Ｆ１２では、同一のデータセット４０を構成する各フラグメントデータＤ１〜Ｄ１２の格納位置が揃うよう格納される。このとき、さらに、同じストリームＩＤが付与されたデータセットが連続して格納されることとなる。なお、図１４には、その後、さらに別のストリームＩＤ（ＳＴ２）に対応するバッファメモリＢＦ２が満杯となり、当該バッファメモリＢＦ２内のフラグメントデータが、データ格納ファイルＦ１〜Ｆ１２に格納されたときの様子を示している。
【００７１】
また、分散記憶制御部２５は、上述したように、フラグメントデータをデータ格納ファイルに格納する時のみならず、すでに格納されたフラグメントデータに対しても、同一のストリームＩＤのフラグメントデータが連続して配置されるよう、事後的に格納位置を変更する機能も有する。例えば、ストレージシステム１０自体のリソースが所定値以上空いているときに、各データ格納ファイルＦ１〜Ｆ１２に格納されているフラグメントデータを、ストリームＩＤが同一のものが連続するよう格納位置を移動する。具体的には、図１０に示すように、各データ格納ファイルＦ１〜Ｆ１２の同一の格納位置（横一列）に格納されている全てのフラグメントデータの格納位置を、当該各フラグメントデータにて構成されるデータセット４０ごと、変更することができる。これにより、図１０に示すように、ストリームＩＤが異なるデータセットが交互に格納された状態から、図１５に示すように、同一のストリームＩＤのものが連続する格納状態にすることができる。
【００７２】
なお、上記では、フラグメント生成部２４にて、ブロックデータＤを分割してデータセット４０を生成する際に、当該データセット４０を構成する各フラグメントデータＤ１〜Ｄ１２にそれぞれ同一のストリームＩＤを付与したが、必ずしも各フラグメントデータＤ１〜Ｄ１２に付与する必要はない。例えば、ブロックデータＤから生成したデータセット４０を構成する各フラグメントデータＦ１〜Ｆ１２を、当該ブロックデータＤに付与されたストリームＩＤに対応するデータバッファＢＦ１〜ＢＦ３に格納することで、ストリームＩＤ毎にフラグメントデータを連続させて格納することができる。そして、その後は、同じデータセット４０を構成する各フラグメントデータＤ１〜Ｄ１２は、各バッファメモリＢＦ１〜ＢＦ３内及びデータ格納ファイルＦ１〜Ｆ１２内で同一の格納位置に格納されているため、当該同一の格納位置にある全てのフラグメントデータの格納位置をまとめて変更することで、データセット毎の格納位置の変更が可能となる。
【００７３】
さらに、分散記憶制御部２５は、データセット４０を構成する各フラグメントデータＤ１〜Ｄ１２に、同一のデータセット４０を構成していることを識別するために、同一の識別情報（WriteRecordSeqNum）を付与して、各データ格納ファイルＦ１〜Ｆ１２にそれぞれ格納する。そして、分散記憶制御部２５は、ストレージシステム１０のリソースが空いているときなど任意のタイミングで、上記識別情報を調べることで、同一のデータセット４０を構成している各フラグメントデータが、各データ格納ファイルＦ１〜Ｆ１２内の同一の格納位置に格納されているか、ということを調べることができる。従って、分散記憶制御部２５は、各データ格納ファイルＦ１〜Ｆ１２内の同一の格納位置に格納されている各フラグメントデータが、全て同一の識別情報（WriteRecordSeqNum）を含んでいなければ、当該各フラグメントデータが同一の格納位置に格納されるよう当該格納位置を修正して、データを再格納する。
【００７４】
なお、上記では、分散記憶制御部２５が、データ格納ファイルＦ１〜Ｆ１２といった論理的な各記憶領域内における同一位置に、データセット４０を構成する各フラグメントデータＤ１〜Ｄ１２を格納することを説明したが、複数の各記憶装置３１内において物理的に同一位置に格納してもよい。
【００７５】
また、上記格納位置管理部２６（格納位置情報管理手段）は、上述したように記憶装置３１に格納したフラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるブロックデータＤの格納位置を表す、コンテンツアドレスＣＡを生成して管理する。具体的には、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスＣＡを生成する。そして、このコンテンツアドレスＣＡを、ストレージシステム１０内のファイルシステム、つまり、アクセラレータノード１０Ａに返却する（図６の矢印Ｙ７）。すると、アクセラレータノード１０Ａは、バックアップ対象データのファイル名などの識別情報と、コンテンツアドレスＣＡとを関連付けてファイルシステムで管理する。
【００７６】
また、上記格納位置管理部２６は、ブロックデータＤのコンテンツアドレスＣＡと、当該ブロックデータＤのハッシュ値Ｈと、を関連付けて、各ストレージノード１０ＢがＭＦＩファイルにて管理する。このように、上記コンテンツアドレスＣＡは、ファイルを特定する情報やハッシュ値Ｈなどと関連付けられて、アクセラレータノード１０Ａやストレージノード１０Ｂの記憶装置３０に格納される（格納位置情報記憶部３２）。
【００７７】
さらに、上記格納位置管理部２６は、上述したように格納したバックアップ対象データを読み出す制御を行う。例えば、ストレージシステム１０に対して、特定のファイルを指定して読み出し要求があると（図７の矢印Ｙ１１参照）、まず、ファイルシステムに基づいて、読み出し要求にかかるファイルに対応するハッシュ値の一部であるショートハッシュと論理位置の情報からなるコンテンツアドレスＣＡを指定する（図７の矢印Ｙ１２参照）。そして、格納位置管理部２６は、コンテンツアドレスＣＡがＭＦＩファイルに登録されているか否かを調べる（図７の矢印１３参照）。登録されていなければ、要求されたデータは格納されていないため、エラーを返却する。
【００７８】
一方、読み出し要求にかかるコンテンツアドレスＣＡが登録されている場合には、上記コンテンツアドレスＣＡにて指定される格納位置を特定し、この特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出す（図７の矢印Ｙ１４参照）。このとき、各フラグメントが格納されているデータ格納ファイルＦ１〜Ｆ１２と、当該データ格納ファイルのうち１つのフラグメントデータの格納位置が分かれば、同一の格納位置から他のフラグメントデータの格納位置を特定することができる。
【００７９】
そして、格納位置管理部２６は、読み出し要求に応じて読み出した各フラグメントデータからブロックデータＤを復元する（図７の矢印Ｙ１５参照）。さらに、格納位置管理部２５は、復元したブロックデータＤを複数連結し、ファイルＡなどの一群のデータに復元して、読み出し制御を行っているアクセラレータノード１０Ａに返却する（図１７の矢印Ｙ１６参照）。
【００８０】
［動作］
次に、上述したストレージシステムの動作を、図１０のフローチャートを参照して説明する。
【００８１】
はじめに、ストレージシステム１０が、所定のバックアップ対象装置１２からバックアップシステム１１を介してバックアップ対象データを受け、当該バックアップ対象データを記憶装置３１に記憶する動作（データ記憶工程）について説明する。
【００８２】
まず、ストレージシステム１０、つまり、アクセラレータノード１０Ａは、バックアップ対象データＡの入力を受けると、一群のデータである当該バックアップ対象データＡを区別する識別情報であるストリームＩＤを付与する（ステップＳ１、識別情報付与工程）。
【００８３】
そして、アクセラレータノード１０Ａは、バックアップ対象データＡを、所定容量（例えば、６４ＫＢ）のブロックデータＤに分割する（ステップＳ２）。そして、このブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈ（内容識別情報）を算出する（ステップＳ３）。そして、このハッシュ値Ｈが、ＭＦＩファイルに登録されているか否かを調べる。このとき、登録されている場合には、当該データブロックＤのハッシュ値ＨにＭＦＩファイル内で関連付けられているコンテンツアドレスＣＡを、このデータブロックＤの格納位置として、ファイルシステムに返却する。つまり、バックアップ対象データと同一のデータが記憶されているため、この既に記憶されている同一のデータを用いて、バックアップ対象データを記憶したこととする。従って、後にこのバックアップ対象データを読み出す際には、ファイルシステムが上記コンテンツアドレスＣＡが表す格納位置のデータを読み出すことで、同一のデータを読み出すことができる。
【００８４】
一方、ブロックデータＤのハッシュ値がＭＦＩファイルに登録されていなかった場合、つまり、ブロックデータＤと同一のデータが記憶されていなかった場合には、当該ブロックデータＤを記憶する処理を行う。このとき、まず、上述したように算出したハッシュ値の一部に基づいて、実際にデータを格納するストレージノード１０Ｂを特定し、また、そのうちの１つのストレージノード１０Ｂを、以下に説明するようブロックデータＤに対する記憶前処理を実行するWrite Initiator（WI）として決定する。
【００８５】
なお、上述したようにバックアップ対象データＡをブロックデータＤに分割する際には、上述したようにバックアップ対象データＡに付与したストリームＩＤを、各ブロックデータＤにも引き継いで付与する。
【００８６】
続いて、上述したようにＷＩとして決定されたストレージノード１０Ｂは、ブロックデータＤを圧縮した後に、例えば、９つのフラグメントデータに分割する（ステップＳ４）。また、この分割データがいくつかが欠けた場合であっても、上記ブロックデータＤを復元できるよう、上記フラグメントデータに冗長データを例えば３つ付加する。そして、９つの分割データと３つの冗長データとにより構成される１２個のフラグメントデータによるデータセットを生成する（ステップＳ５、データセット生成工程）。
【００８７】
続いて、ＷＩとして決定されたストレージノード１０Ｂは、上記各フラグメントにデータセットを識別するためのＩＤを付与する（ステップＳ６）。つまり、一のブロックデータＤから分割されて生成されたデータセットを構成する各フラグメントデータに、全て同一のＩＤを付与する。
【００８８】
そして、ストレージノード１０Ｂは、各データ格納ファイルＦ１〜Ｆ１２毎に、それぞれストリームＩＤ毎のバッファメモリを設定する。そして、フラグメントデータＤ１〜Ｄ１２に含まれているストリームＩＤに対応するバッファメモリＢＦ１，ＢＦ２，ＢＦ３に、当該各フラグメントデータＤ１〜Ｄ１２をそれぞれ格納する（ステップＳ７）。このとき、各フラグメントデータＤ１〜Ｄ１２を、各バッファメモリＢＦ１〜ＢＦ３内に既に格納されているデータの次に空いている格納領域に、全て同時のタイミングで格納する。
【００８９】
これにより、各バッファメモリＢＦ１〜ＢＦ３内には、対応するストリームＩＤのフラグメントデータが連続して位置して格納される。また、このとき、同一のデータセットを構成する各フラグメントデータＤ１〜Ｄ１２は、各バッファメモリＢＦ１〜ＢＦ３内において同一の格納位置に格納される。
【００９０】
その後、上記各バッファメモリＢＦ１〜ＢＦ３の容量が所定容量、例えば、満杯となったタイミングで（ステップＳ８でＹｅｓ）、そのバッファメモリＢＦ１〜ＢＦ３内のフラグメントデータを、データ格納ファイルＦ１〜Ｆ１２に格納する（ステップＳ９、分散記憶制御工程）。このとき、各データ格納ファイルＦ１〜Ｆ１２に格納されているデータの次に空いている格納位置に、それぞれフラグメントデータＤ１〜Ｄ１２を格納する。なお、バッファメモリからデータ格納ファイルにフラグメントデータを格納するタイミングは、必ずしも上記タイミングに限定されない。例えば、ある基準時間から設定された時間が経過したタイミングで実行してもよい。
【００９１】
これにより、ストレージノード１０Ｂは、各データ格納ファイルＦ１〜Ｆ１２内において同一位置に、１つのデータセット４０を構成する全てのフラグメントデータＤ１〜Ｄ１２を格納することができる。さらに、各データ格納ファイルＦ１〜Ｆ１２内には、同一のストリームＩＤのデータが連続して格納されることとなる。
【００９２】
そして、ストレージノード１０Ｂは、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（先頭８Ｂ）と、論理格納位置を表す情報と、を組み合わせて、記憶装置３１に格納したフラグメントデータＤ１〜Ｄ１２の格納位置を表す、コンテンツアドレスＣＡを生成する。そして、ストレージノード１０Ｂは、このコンテンツアドレスＣＡを、アクセラレータノード１０Ａに返却する。すると、アクセラレータノード１０Ａでは、返却されたコンテンツアドレスＣＡを、実際に記憶したバックアップ対象データのファイル名などと関連付けて、ファイルシステムにて管理する。
【００９３】
また、ストレージノード１０Ｂは、上記生成したブロックデータＤのコンテンツアドレスＣＡと、当該ブロックデータＤのハッシュ値Ｈと、を関連付けて、ＭＦＩファイルにて管理する。このハッシュ値ＨとコンテンツアドレスＣＡとを管理するＭＦＩファイルは、上述したように、新たにバックアップ対象データを格納する際に、すでに同一内容のデータが格納されているか否かを確認するために用いられる。
【００９４】
その後、例えば、ストレージシステム１０自体のリソースが所定値以上空いているときなどの任意のタイミングで（ステップＳ１０でＹｅｓ）、すでに格納されたフラグメントデータに対して、同一のストリームＩＤのフラグメントデータが連続して配置されるよう、事後的に格納位置を変更する処理を実行する（ステップＳ１１）。この処理は、各データ格納ファイルＦ１〜Ｆ１２の同一の格納位置に格納されている各フラグメントデータ内のストリームＩＤを調べ、なるべく多くの同じストリームＩＤのフラグメントデータつまりデータセットの格納位置が連続するよう、当該フラグメントデータの格納位置を変更する。
【００９５】
ここで、上述した各フラグメントデータＤ１〜Ｄ１２を各データ格納ファイルＦ１〜Ｆ１２に格納する際、つまり、ＷＩとして決定されたストレージノード１０Ｂから、他の各ストレージノード１０Ｂにフラグメントデータを格納する際には、当該ストレージノード１０Ｂ間で通信がダウンしたり、通信遅延が発生する場合が生じうる。その場合には、１つのデータセット４０の構成する全てのフラグメントデータＤ１〜Ｄ１２が、各データ格納ファイルＦ１〜Ｆ１２内の同一位置に格納されない事態が生じうる。このような事態を想定して、ストレージシステム１０では、リソースが空いているなど任意のタイミングで、すでに記憶されている各フラグメントデータＤ１〜Ｄ１２に含まれるデータセット毎の識別情報（WriteRecordSeqNum）を参照して、一つのデータセット４０の構成する全てのフラグメントデータＤ１〜Ｄ１２が、各データ格納ファイルＦ１〜Ｆ１２内の同一位置に格納されるよう、再格納処理を行う。
【００９６】
次に、ストレージシステム１０が、バックアップシステム１１を介してデータの読み出し要求を受け、記憶装置３１からデータを読み出す動作（データ読み出し工程）について説明する。
【００９７】
ストレージシステム１０に読み出し要求があると、まず、アクセラレータノード１０Ａが読み出し要求にかかるファイルに対応するショートハッシュと論理位置の情報からなるコンテンツアドレスＣＡを指定する。そして、このコンテンツアドレスＣＡを受けたストレージノード１０Ｂは、当該コンテンツアドレスＣＡがＭＦＩファイルに登録されているか否かを調べ、登録されていなければ、要求されたデータは格納されていないため、エラーを返却する。
【００９８】
一方、登録されている場合には、上記コンテンツアドレスＣＡに基づいて、読み出し要求にかかるデータを構成する各フラグメントデータの格納位置を特定する。このとき、各フラグメントが格納されているデータ格納ファイルＦ１〜Ｆ１２と、当該データ格納ファイルのうち１つのフラグメントデータの格納位置が分かれば、同一の格納位置から他のフラグメントデータの格納位置を特定することができる。
【００９９】
そして、ストレージノード１０Ｂは、読み出し要求に応じて読み出した各フラグメントデータからブロックデータＤを復元する。さらに、ストレージノード１０Ｂは、復元したブロックデータＤを複数連結し、ファイルＡなどの一群のデータに復元して、読み出し制御を行っているアクセラレータノード１０Ａに返却する。
【０１００】
なお、仮に、記憶装置３１の障害により、１つのデータセットを構成する１２個のフラグメントデータのうち３つのフラグメントデータを読み取ることができなかった場合であっても、上述した３つの冗長データを付加している場合であれば、元のブロックデータを復元することができる。特に、１２個のフラグメントデータをそれぞれ異なる記憶装置３１（ディスク）に格納した場合には、３つの記憶装置３１の同時障害までは対応可能である。
【０１０１】
そして、特に、本実施形態では、読み出し要求にかかるデータを読み出すと共に、そのデータの格納位置の前後などの近辺の格納位置に格納されているデータも事前に読み出す。このようにすることで、読み出し要求にかかるデータの近辺には、当該読み出し要求にかかるデータとストリームＩＤが同じ可能性が高いため、後に必要とされるデータを予測して読み出すことができる。従って、データの読み出し速度及び効率が向上する。
【０１０２】
以上により、本実施形態におけるストレージシステム１０によると、記憶したデータを読み出す際に、当該データを構成するデータセットのうち１つのフラグメントデータの格納位置を特定することで、他のフラグメントデータの格納位置も容易に特定することができる。また、一群のデータを構成する複数の記憶対象データが連続して記憶されるため、関連する内容のデータがまとまって記憶されることとなる。従って、ストレージシステムが記憶したデータを読み出す際に、関連するデータをまとめて読み出すことが可能となる。その結果、データ読み出し速度及び効率の向上を図ることができ、ストレージシステムの性能の向上を図ることができる。
【産業上の利用可能性】
【０１０３】
本発明は、複数のコンピュータを接続して構成されるストレージシステムに利用することができ、産業上の利用可能性を有する。
【符号の説明】
【０１０４】
１  ストレージシステム
２  データ処理手段
３  識別情報付与手段
４  データセット生成手段
５  分散記憶制御手段
６  記憶手段
１０  ストレージシステム
１０Ａ  アクセラレータノード
１０Ｂ  ストレージノード
１１  バックアップシステム
１２  バックアップ対象装置
２０  データ処理装置
２１  ストリームＩＤ付与部
２２  ブロック生成部
２３  重複チェック部
２４  フラグメント生成部
２５  分散記憶制御部
２６  格納位置管理部
３０  データ記憶装置
３１  記憶装置
３２  格納位置記憶部
４０  データセット
４１  分割データ
４２  冗長データ
Ａ  バックアップ対象データ
ＢＦ１，ＢＦ２，ＢＦ３  バッファメモリ
ＣＡ  コンテンツアドレス
Ｄ  ブロックデータ
Ｄ１〜Ｄ１２  フラグメントデータ
Ｆ１〜Ｆ１２  データ格納ファイル
Ｈ  ハッシュ値
【図１】
2010176180.tif 000003
【図２】
2010176180.tif 000004
【図３】
2010176180.tif 000005
【図４】
2010176180.tif 000006
【図５】
2010176180.tif 000007
【図６】
2010176180.tif 000008
【図７】
2010176180.tif 000009
【図８】
2010176180.tif 000010
【図９】
2010176180.tif 000011
【図１０】
2010176180.tif 000012
【図１１】
2010176180.tif 000013
【図１２】
2010176180.tif 000014
【図１３】
2010176180.tif 000015
【図１４】
2010176180.tif 000016
【図１５】
2010176180.tif 000017
【図１６】
2010176180.tif 000018