(57)【要約】【課題】容量の異なるストレージノードを備えるストレージシステムにおいて、性能劣化を防ぎ、耐障害性を保つことができる情報処理装置等を提供する。【解決手段】情報処理装置４００は、受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノードに書き込むデータ書き込み部と、前記データ書き込み部により書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノードに割り当て、前記割り当てられたストレージノードに前記データを格納する再配置部と、前記複数のストレージノードに格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込むデータ読み込み部と、を備える。【選択図】      図１９
2014182737.tif 000002
【特許請求の範囲】
【請求項１】
受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノードに書き込むデータ書き込み部と、
前記データ書き込み部により書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノードに割り当て、前記割り当てられたストレージノードに前記データを格納する再配置部と、
前記複数のストレージノードに格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込むデータ読み込み部と、
を備える情報処理装置。
【請求項２】
前記再配置部は、前記複数のストレージノードの中で、容量の大きいストレージノードに対して、より多くのデータを格納するよう再配置位置を割り当てる請求項１に記載の情報処理装置。
【請求項３】
前記再配置部は、前記容量の大きいストレージノードに対してより多くの前記パリティデータを格納するよう再配置位置を割り当てる請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記再配置部は、前記複数のストレージノードに対して再配置位置を割り当てる際、前記書き込み部によって生成されたパリティデータと同じ数の前記分割データが、連続して同一のストレージノードに割り当てられた場合、他のストレージノードに対して前記分割データを格納するよう再配置位置を割り当てる請求項１乃至３の何れかに記載の情報処理装置。
【請求項５】
前記再配置部は、前記複数のストレージノードに対して再配置位置を割り当てる際、注目するデータを割り当てようとしているストレージノードよりも割り当て済の分割データが少ないストレージノードがある場合、前記注目するデータを割り当てようとしているストレージノードに対して前記パリティデータを格納するよう再配置位置を割り当てる請求項１乃至４の何れかに記載の情報処理装置。
【請求項６】
前記再配置部は、前記複数のストレージノードに対して再配置位置を割り当てる際、再配置位置を割り当てていないデータが前記分割データのみ又は前記パリティデータのみとなった場合、前記複数のストレージノードに対して残りのデータを格納するよう再配置位置を割り当てる請求項１乃至５の何れかに記載の情報処理装置。
【請求項７】
前記データ読み込み部は、前記複数のストレージノードに格納された前記分割データを読み込む際、前記分割データの中に読み込めない分割データが存在した場合、前記パリティデータを読み込む請求項１乃至６の何れかに記載の情報処理装置。
【請求項８】
請求項１乃至７の何れかに記載の前記情報処理装置と前記ストレージノードとがネットワークを介して接続されているストレージシステム。
【請求項９】
受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノードに送信し、
書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノードに割り当て、前記割り当てられたストレージノードに前記データを格納し、
前記複数のストレージノードに格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込む、
情報処理方法。
【請求項１０】
受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノードに書き込む処理と、
書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノードに割り当て、前記割り当てられたストレージノードに前記データを格納する処理と、
前記複数のストレージノードに格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込む処理と、
をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを分散して複数の記憶装置に記憶する技術分野に関する。
【背景技術】
【０００２】
近年、ストレージノードの追加及び交換を行うことにより、容量や性能を拡張可能なストレージシステム（グリッドストレージシステム）が提案されている。ストレージシステムは、データを複数のストレージノードに分散した状態で格納する。また、一般的にストレージシステムは、性能や耐障害性を考慮するために、データを複数のストレージノードに対して均等に格納するよう設計されていることが多い。
【０００３】
例えば、特許文献１は、複数のインタフェースプロセッサ及び複数のストレージデバイスによって構成される分散ストレージシステムに関する技術を開示する。具体的に、特許文献１は、インタフェースプロセッサ及びストレージデバイスが、少なくとも１つのストレージデバイスのＩＰアドレスが含まれるノードリストを格納しており、そのノードリストに基づいてインタフェースプロセッサがストレージデバイスを制御する技術を開示する。
【０００４】
特許文献２は、データ再配置処理装置を含む分散ファイルシステムに関する技術を開示する。具体的に、特許文献２は、データの再配置が未完了であるファイルのデータの再配置位置を計算し、計算結果に基づき各ストレージノード間においてデータを交換する技術を開示する。
【０００５】
尚、誤ったデータを検出するためのパリティに関する技術の一例として、特許文献３は、データ放送システムの受信機におけるデータ読み込み処理に関する技術を開示する。具体的に、特許文献３は、受信機が読み込んだデータに基づいて判定を行い、読み込んだデータが正常なデータであった場合、不要なパリティに関するデータを読み込まないようにする技術を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４６９６０８９号公報
【特許文献２】特開２０１０−２３８０３８号公報
【特許文献３】特開平１０−１０７７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１及び特許文献２に記載された技術は、ストレージデバイス（ストレージノード）が格納（記憶）可能な記憶容量（以下、「容量」と略称する）について考慮されていない。例えば、容量が異なるストレージデバイスを備えるストレージシステムの場合、特許文献１及び特許文献２に記載された技術では、容量が大きいストレージデバイスの記憶領域を十分利用できない。これにより、特許文献１及び特許文献２に記載された技術は、記憶領域を十分利用しようとすると性能劣化のおそれがある。その理由として、容量見合いでデータを書き込む場合、容量の大きなストレージノードがネックとなってしまうため、これらの技術は、各ストレージノードに均等にデータを書き込む場合と比較して書き込み性能が低下するおそれがある。また、各ストレージノードに均等にデータを書き込み、その後、容量見合いでデータを再配置する場合、データの多いストレージノードがネックとなってしまうため、これらの技術は、均等にデータが格納されている場合と比較して読み込み性能が低下するおそれがある。
【０００８】
さらに、上記特許文献１及び特許文献２に記載された技術は、ストレージデバイスの容量を考慮していないことから、パリティデータが、あるストレージノードに集中的に格納された場合、耐障害性を保つことができないおそれがある。
【０００９】
本発明は、上記課題を鑑み、容量の異なるストレージノードを備えるストレージシステムにおいて、性能劣化を防ぎ、耐障害性を保つことができる情報処理装置等を提供することを１つの目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係る情報処理装置は、受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノードに送信するデータ書き込み部と、前記データ書き込み部により書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノードに割り当て、前記割り当てられたストレージノードに前記データを格納する再配置部と、前記複数のストレージノードに格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込むデータ読み込み部と、を備える。
【００１１】
上記目的を達成するために、本発明に係る情報処理方法は、受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノードに送信し、書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノードに割り当て、前記割り当てられたストレージノードに前記データを格納し、前記複数のストレージノードに格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込む。
【００１２】
上記目的を達成するために、本発明に係るコンピュータプログラムは、受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノードに書き込む処理と、書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノードに割り当て、前記割り当てられたストレージノードに前記データを格納する処理と、前記複数のストレージノードに格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込む処理と、をコンピュータに実行させる。
【００１３】
尚、係る同目的は、当該コンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体によっても達成されうる。
【発明の効果】
【００１４】
本発明の情報処理装置によれば、容量の異なるストレージノードを備えるストレージシステムにおいて、性能劣化を防ぎ、耐障害性を保つことができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係るストレージシステム１の構成を例示するブロック図である。
【図２】本発明の第１の実施形態に係るストレージシステム１を構成するアクセスノード１００及びストレージノード２００を実現可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。
【図３】本発明の第１の実施形態に係るストレージシステム１を構成するアクセスノード１００の機能構成を概念的に例示するブロック図である。
【図４】本発明の第１の実施形態に係るストレージシステム１を構成するストレージノード２００の機能構成を概念的に例示するブロック図である。
【図５】第１の実施形態において、ストレージノード２００が備えるデータ格納部２５０の構成を例示した図である。
【図６】第１の実施形態における分割処理動作により分割されたデータを例示した図である。
【図７】第１の実施形態において、分散書き込み処理動作における各ストレージノード２００に対するフラグメントの割当手法を例示する図である。
【図８】第１の実施形態において、データ書き込み処理におけるアクセスノード１００の動作を示すフローチャートである。
【図９】第１の実施形態において、各容量単位ノード２５２に対するフラグメントの割当手法を例示する図である。
【図１０】第１の実施形態におけるフラグメントの格納位置情報を示すメタデータを例示する図である。
【図１１】第１の実施形態において、データ書き込み処理におけるストレージノード２００の動作を示すフローチャートである。
【図１２】第１の実施形態において、再配置処理における各ストレージノード２００に対するフラグメントの割当手法を例示する図である。
【図１３】第１の実施形態において、再配置処理における各ストレージノード２００に対するフラグメントの割当条件１を例示した図である。
【図１４】第１の実施形態において、再配置処理における各ストレージノード２００に対するフラグメントの割当条件２を例示した図である。
【図１５】第１の実施形態において、各ストレージノード２００における再配置前及び再配置後のフラグメントの格納位置を例示する図である。
【図１６】第１の実施形態において、再配置処理におけるアクセスノード１００の動作を示すフローチャートである。
【図１７】第１の実施形態において、データ読み込み処理におけるストレージノード２００からアクセスノード１００に対して、オリジナルフラグメントを送信する処理を例示した図である。
【図１８】第１の実施形態において、データ読み込み処理におけるアクセスノード１００の動作を示すフローチャートである。
【図１９】本発明の第２の実施形態に係る情報処理装置４００の機能構成を概念的に例示するブロック図である。
【発明を実施するための形態】
【００１６】
＜第１の実施形態＞
はじめに、本発明の第１の実施形態に係るストレージシステム１について説明する。図１は、本発明の第１の実施形態に係るストレージシステム１の構成を例示するブロック図である。図１に示すように、ストレージシステム１は、アクセスノード（ＡＮ）１００とストレージノード（ＳＮ）２００とが、ネットワーク３００を介して通信可能に接続されることにより構成される。ストレージシステム１は、ノードの追加及び交換を行うことにより容量や性能の拡張が可能なストレージシステムを想定している。アクセスノード１００は、主にストレージノード２００に記憶されるデータの管理や制御等を行う。アクセスノード１００についての詳細は後述する。また、本実施形態において、１つのアクセスノード１００について説明するが、ストレージシステム１００は、複数のアクセスノード１００が複数のストレージノード２００に接続されることにより構成されていてもよい。
【００１７】
図２は、本発明の第１の実施形態に係るストレージシステム１を構成するアクセスノード１００及びストレージノード２００を実現可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。図１に示すように、情報処理装置１は、ＣＰＵ（Central Processing Unit）１０、メモリ１２、ＨＤＤ（ハードディスクドライブ）１４、図示しないネットワークを介して通信を行う通信ＩＦ（インタフェース）１６、入力装置１８、出力装置２０、及びＣＤ（コンパクトディスク）等のコンピュータ読み取り可能な記憶媒体２４に記憶された情報を読み取り可能なリーダーライター２２を有する。これらの構成要素は、バス２６を通して互いに接続されており、互いにデータの入出力を行うことができる。
【００１８】
本実施形態に係るストレージシステム１を構成するアクセスノード１００及びストレージノード２００は、メモリ１２又はＨＤＤ１４に記憶されているコンピュータプログラム（以下、「プログラム」と称する）をＣＰＵ１０が実行することにより実現される。または、情報処理装置１は、ＣＰＵ１０が記憶媒体２４に記憶されているプログラムを実行することにより実現されてもよい。ＣＰＵ１０において実行するプログラムは、通信ＩＦ１６あるいはリーダーライター２２を介して外部から取得してもよい。図１に示す情報処理装置１のハードウェア構成例は、後述する実施形態及び実施例にも適用可能である。
【００１９】
次に、アクセスノード１００について説明する。図３は、本発明の第１の実施形態に係るストレージシステム１を構成するアクセスノード１００の機能構成を概念的に例示するブロック図である。但し、図３に示した機能構成は、説明の便宜上から表された構成であり、本願の実施形態を例に説明する本発明は、実装に際して係る構成には限定されない。図３に示すように、アクセスノード１００は、通信部１１０、データ処理部１２０、ノード情報処理部１３０及び記憶装置１４０を備える。
【００２０】
通信部１１０は、クライアントやストレージシステム１を構成する他のノードとのインタフェースである。
【００２１】
データ処理部１２０は、データの読み書き等の処理を行う。データ処理部１２０は、データ送受信部１２２、データ書き込み部１２４、再配置部１２６、データ読み込み部１２８を有する。
【００２２】
データ送受信部１２２は、クライアントや他のノードとデータを送受信する。例えば、データ送受信部１２２は、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）やＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等のファイル転送用プロトコルを用いることによって、クライアントとデータを送受信する処理を行う。
【００２３】
データ書き込み部１２４は、ストレージノード２００に対してデータを書き込む処理を行う。データ書き込み部１２４が行うデータ書き込み処理の詳細は後述する。
【００２４】
再配置部１２６は、データ書き込み部１２４によって、ストレージノード２００に書き込まれたデータの再配置を行う。再配置部１２６が行う再配置処理の詳細は後述する。
【００２５】
データ読み込み部１２８は、再配置部１２６によって、ストレージノード２００内で再配置されたデータを読み込む処理を行う。データ読み込み部１２８が行うデータ読み込み処理の詳細は後述する。
【００２６】
ノード情報処理部１３０は、他のノードの稼動状態や構成情報を管理する。ノード情報処理部１３０は、状態監視部１３２及び構成変更部１３４を有する。
【００２７】
構成変更部１３２は、ストレージシステム１において、ノードの追加や削除等を行うことにより、ノードの構成に変更があった場合に、後述する記憶装置１４０に記憶される構成情報を更新する。例えば、新しくノードが追加された場合、構成変更部１３２は、構成情報を更新することにより、更新後のデータ書き込み処理において、新しく追加したノードを利用可能にする。また、新しくノードが追加された場合、構成変更部１３２は、構成情報を更新した後、ノード間のデータの不均衡を減らすために再配置処理を行うようにしてもよい。
【００２８】
状態監視部１３４は、ストレージシステム１において、ディスク障害やノード障害等が発生した場合に記憶装置１４０に記憶される稼動情報を更新する。例えば、状態監視部１３４は、更新した自ノードの稼動情報を他のノードに送信するようしてもよい。また、状態監視部１３４は、他のノードの稼動情報を監視してもよい。
【００２９】
記憶装置１４０は、物理ノード及び仮想ノードの台数や容量等の情報である構成情報、ディスク障害やノード障害等の情報である稼動情報及び再配置処理に利用される再配置情報等を記憶可能である。具体的に、構成情報は、ノード台数等の物理的な情報である物理ノード情報、ストレージノードの容量に応じて定義する仮想ノードの情報である容量単位ノード情報及びデータロストの最小単位（例えばハードディスクやＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）等）を仮想ノードとして定義した故障単位ノード情報等が含まれる。また、稼動情報は、データ書き込み処理において、障害の発生したディスクやノードを用いないようするため利用されてもよい。稼動情報は、ディスク障害やノード障害により失われたデータを復旧するために利用されてもよい。
【００３０】
次に、ストレージノード２００について説明する。図４は、本発明の第１の実施形態に係るストレージシステム１を構成するストレージノード２００の機能構成を概念的に例示するブロック図である。但し、図４に示した機能構成は、説明の便宜上から表された構成であり、本願の実施形態を例に説明する本発明は、実装に際して係る構成には限定されない。図４に示すように、ストレージノード２００は、通信部２１０、データ処理部２２０、ノード情報処理部２３０、記憶装置２４０及びデータ格納部２５０を備える。尚、ストレージノード２００が備える通信部２１０、ノード情報処理部２３０及び記憶装置２４０と、アクセスノード１００が備える通信部１１０、ノード情報処理部１３０及び記憶装置１４０とは、同様の動作を行うため、説明は省略する。
【００３１】
データ処理部２２０は、データ送受信部２２２、データ書き込み部２２４、再配置部２２６、データ読み込み部２２８を有する。上述したアクセスノード１００が備えるデータ処理部１２０の処理と基本的に同様の処理を行うため、それぞれの動作について簡単に説明する。データ送受信部２２２は、アクセスノード１００とデータを送受信する処理を行う。データ書き込み部２２４は、データ格納部２５０に対して、アクセスノード１００から受信したデータを書き込む処理を行う。再配置部２２６は、データ格納部２５０に書き込まれたデータを他のストレージノード２００に移動させる再配置処理を行う。データ読み込み部１２８は、データ格納部２５０に書き込まれたデータを読み込む処理を行う。
【００３２】
データ格納部２５０は、データの格納位置の情報等を保持したメタデータと、アクセスノード１００から送信されたデータとを格納する。ここで、データ格納部２５０について、図５を参照して説明する。
【００３３】
図５は、ストレージノード２００が備えるデータ格納部２５０の構成を例示した図である。図５に示すように、データ格納部２５０は、少なくとも１つ以上のハードディスクを保持する。例えば、データ格納部２５０は、容量を優先してハードディスクを１台ずつのシンプルボリュームとして利用する状況が考えられる。また、データ格納部２５０は、冗長性を持たせるために複数のハードディスクを組み合わせることにより、ＲＡＩＤボリュームとして利用する状況が考えられる。上述したシンプルボリュームとして利用されるハードディスクやＲＡＩＤボリュームとして利用される複数のハードディスクを故障単位ノード２５４という仮想ノードとして定義する。
【００３４】
また、ストレージシステム１において特定の容量毎に、少なくとも１つ以上の故障単位ノード２５４から構成される容量単位ノード２５２という仮想ノードを定義する。例えば、ストレージノード２００Ａが備えるデータ格納部２５０Ａの容量（ストレージノードＡの容量）が、ストレージノード２００Ｂの容量と比較して、３倍の容量であるとする。この場合、ストレージノード２００Ａが備えるデータ格納部２５０Ａが有する容量単位ノード２５２Ａ（ストレージノード２００Ａが保持する容量単位ノード２５２）は、ストレージノード２００Ｂが保持する容量単位ノード２５２の３倍の個数の容量単位ノード２５２を保持していることになる。さらに、容量単位ノード２５４に読み書きすることにより、ハードディスクへの読み書きが可能なようにする。
【００３５】
次に、上述したデータ書き込み処理、再配置処理、データ読み込み処理について詳細を説明する。
【００３６】
＝データ書き込み処理＝
図６〜図８を参照して、アクセスノード１００におけるデータ書き込み処理について説明する。
【００３７】
図８は、データ書き込み処理におけるアクセスノード１００の動作を示すフローチャートである。
【００３８】
図８に示すように、ステップＳ１０２において、データ書き込み部１２４は、データ送受信部１２２によって受信したデータ５００を、固定長または可変長のデータブロック５１０に分割する。
【００３９】
ステップＳ１０４において、データ書き込み部１２４は、分割したデータブロック５１０を、さらにｍ個に分割する。ここで、ｍ個に分割したデータを分割データ（オリジナルフラグメント（ＯＦ））５２０と呼ぶ。また、後述する処理の説明のために、データブロック５１０に対して番号（データブロック番号）を付ける。ステップＳ１０２及びステップＳ１０４における動作を分割処理動作と呼ぶこととする。また、図６は、分割処理動作により分割されたデータを例示した図である。
【００４０】
ステップＳ１０６において、データ書き込み部１２４は、分割処理動作によって分割されたオリジナルフラグメント５２０に基づいて、誤り訂正符号を用いることにより誤り訂正用のｎ個のパリティのデータを生成する。ここで、生成したｎ個のパリティのデータをパリティデータ（パリティフラグメント（ＰＦ））５３０と呼ぶ。また、オリジナルフラグメント５２０とパリティフラグメント５３０のことを総称してフラグメント（Ｆ）５４０と呼ぶ。ステップＳ１０６における動作を符号化処理動作と呼ぶこととする。
【００４１】
ステップＳ１０８において、データ書き込み部１２４は、分割処理動作及び符号化処理動作により生成された（ｍ＋ｎ）個のフラグメント５４０の送信先を割り当てる。フラグメント５４０の送信先の割当手法について、図７を参照して、以下に説明する。
【００４２】
図７は、分散書き込み処理動作において、各ストレージノード２００に対するフラグメント５４０の割当手法を例示する図である。まず、データ書き込み部１２４は、各ストレージノード２００に、通し番号（ストレージノード番号）を予め付けておくとする。次に、データ書き込み部１２４は、分割処理動作により付けられたデータブロック番号を、ストレージノードの数により除算し、その余りを求める。そして、データ書き込み部１２４は、その余りと同じストレージ番号を持つストレージノード２００から順にフラグメント５４０を割り当てる。図７に示す例において、データブロック番号をストレージノード２００の数により除算した余りが１だったため、データ書き込み部１２４は、ストレージノード（ＳＮ１）２００からフラグメント５４０を割り当てる。尚、説明した各ストレージノード２００に対するフラグメント５４０の割当手法はあくまでも一例であるので、ラウンドロビン方式等のような他の手法により各ストレージノード２００に対してフラグメント５４０を割り当ててもよい。
【００４３】
ステップＳ１１０において、データ書き込み部１２４は、各フラグメント５４０を、割り当てられたストレージノード２００に対して送信する。ステップＳ１０８及びステップＳ１１０における動作を分散書き込み処理動作と呼ぶこととする。
【００４４】
ここで、本実施形態において、アクセスノード１００がデータ書き込み処理動作を実行すると説明したが、データ書き込み処理動作はクライアントが実行してもよい。具体的には、データ書き込み処理動作用のアプリケーションをクライアントにインストールすることにより、クライアントがデータ書き込み処理動作を実行し、クライアントが直接ストレージノード２００にフラグメント５４０を送信してもよい。
【００４５】
次に、図９〜図１１を参照して、ストレージノード２００におけるデータ書き込み処理について説明する。
【００４６】
図１１は、データ書き込み処理におけるストレージノード２００の動作を示すフローチャートである。
【００４７】
図１１に示すように、ステップＳ２０２において、データ書き込み部２２４は、アクセスノード１００から受信したフラグメント５４０を格納する容量単位ノード２５２を割り当てる。フラグメント５４０の格納先の割当手法について、図９を参照して、以下に説明する。
【００４８】
図９は、各容量単位ノード２５２に対するフラグメント５４０の割当手法を例示する図である。ここで、アクセスノード１００から受信したフラグメント５４０をＦａ、Ｆｂ、Ｆｃ等と呼ぶこととする。まず、データ書き込み部２２４は、ストレージノード２００が有する容量単位ノード２５２に、通し番号（容量単位ノード番号）を付けておくこととする。次に、データ書き込み部２２４は、データブロック番号を、容量単位ノード２５２の数により除算し、その余りを求める。そして、データ書き込み部２２４は、その余りと同じ容量単位ノード番号を持つ容量単位ノード２５２から順にフラグメント５４０を割り当てる。図９に示す例において、データブロック番号を容量単位ノードの数により除算した余りが１だったため、データ書き込み部１２４は、容量単位ノード（Ｎ１）２５２からフラグメント５４０（図９においてはＦａ）を割り当てる。尚、説明した各容量単位ノード２５２に対するフラグメント５４０の割当手法はあくまでも一例であるので、他の手法により各容量単位ノード２５２に対してフラグメント５４０を割り当ててもよい。
【００４９】
ステップＳ２０４において、データ書き込み部２２４は、フラグメント５４０を割り当てられた容量単位ノードに格納する。具体的に、データ書き込み部２２４は、フラグメント５４０を容量単位ノード２５２に書き込むことにより、ディスクに格納する。
【００５０】
ステップＳ２０６において、書き込んだフラグメント５４０の位置情報（フラグメント５４０が格納されるストレージノード２００及び容量単位ノード２５２を示す情報）を、他のストレージノード２００に通知する。
【００５１】
ステップＳ２０８において、フラグメント５４０の格納位置情報をメタデータとして全てのストレージノード２００が備えるデータ格納部２５０に格納する。即ち、全てのストレージノード２００が同様のメタデータを格納するということである。ここで、図１０を参照して、メタデータについて説明する。図１０は、フラグメント５４０の格納位置情報を表すメタデータを例示する図である。図１０に示すように、データブロックｋ（データブロック番号がｋ）のオリジナルフラグメント５２０が、ストレージノードｉ（ストレージノード番号がｉ）の容量単位ノードｊ（容量単位ノード番号がｊ）に格納され、その格納位置がｘｘｘｘの場合、格納位置情報は、ｉ−ｊ−ｘｘｘｘのように示される。例えば、図１０を参照すると、データブロックｋのオリジナルフラグメント２の格納位置は、２−１−ｘｘｘｘと示されている。よって、データブロックｋのオリジナルフラグメント２は、ストレージノード２における容量単位ノード１のｘｘｘｘに格納されていることがわかる。
【００５２】
ステップＳ２１０において、アクセスノード１００に対して書き込み処理が完了したことを通知する。また、書き込み処理の完了通知に加え、データブロックｋが再配置処理を実施していないデータブロックであることを表す情報（再配置情報）をアクセスノード１００に通知する。
【００５３】
＝再配置処理＝
図１２〜図１６を参照して、再配置処理について説明する。
【００５４】
図１６は、再配置処理におけるアクセスノード１００の動作を示すフローチャートである。
【００５５】
図１６に示すように、ステップＳ３０２において、再配置を行うデータブロック５１０を決定する。具体的には、再配置部１２６は、記憶装置１４０に記憶されている再配置情報を参照して、再配置を行うデータブロック５１０を決定する。
【００５６】
ステップＳ３０４において、各フラグメント５４０の格納位置を特定する。具体的には、再配置部１２６は、ストレージノード２００に格納されているメタデータを読み込むことにより、再配置処理の対象となるデータブロック５１０を構成するフラグメント５４０の格納位置を特定する。ここで、データ書き込み処理において説明した通り、全てのストレージノード２００に同様のメタデータが格納されているので、再配置部１２６は、どれか１つのストレージノード２００に格納されているメタデータを読み込めばよい。
【００５７】
ステップＳ３０６において、各フラグメント５４０の再配置後の格納位置を割り当てる。具体的に、再配置部１２６は、まずフラグメント５４０の新しい割り当て先のストレージノード２００を決定する。次に、再配置部１２６は、決定されたストレージノード２００において、どの容量単位ノード２５２にフラグメント５４０を割り当てるか決定する。フラグメント５４０の再配置後の割当手法について、図１２〜図１４を参照して、以下に説明する。
【００５８】
図１２は、再配置処理における、各ストレージノード２００に対するフラグメント５４０の割当手法を例示する図である。以下の説明において、ステップＳ３０２において決定されたデータブロック５１０を構成するフラグメント５４０をＦ１、Ｆ２、Ｆ３等と示すこととする。まず、再配置部１２６は、全てのストレージノード２００が備える容量単位ノード２５２に対して、ストレージシステム１全体の通し番号（システム番号）を付けておく。その際、再配置部１２６は、同じストレージノード２００内にシステム番号が固まりすぎないようにする。例えば、再配置部１２６は、ドント方式等を利用することにより、容量単位ノード２５２に対してシステム番号を付けてもよい。以下の説明においては、システム番号を付けた各容量単位ノード２５２を、Ｎ１、Ｎ２、Ｎ３等と呼ぶこととする。
【００５９】
次に、再配置部１２６は、データブロック番号をストレージノードの数により除算した余りを求め、求めた余りと同じストレージノード番号を持つストレージノード２００を特定する。再配置部１２６は、特定したストレージノード２００が備える容量単位ノード２５２において、システム番号が最小の容量単位ノード２５２を特定する。再配置部１２６は、特定した容量単位ノード２５２から、システム番号順にフラグメント５４０を割り当てる。再配置部１２６は、システム番号順にフラグメント５４０を割り当てるが、割り当て先は容量単位ノード２５２ではなく、ストレージノード２００に割り当てることとする。
【００６０】
再配置後のフラグメント５４０の格納先は、基本的に上述したように決定される。しかしながら、再配置部１２６は、以下の条件を追加してフラグメント５４０の格納先を決定してもよい。
【００６１】
＝＝条件１＝＝
図１３は、再配置処理における、各ストレージノード２００に対するフラグメント５４０の割当条件１を例示した図である。条件１において、再配置部１２６は、パリティフラグメント５３０の数に着目することにより、フラグメント５４０の割り当てを実行する。具体的には、再配置部１２６は、あるストレージノード２００に割り当てられたフラグメント５４０の数が、パリティフラグメント５３０の数と同じになった場合、該ストレージノード２００にフラグメント５４０を割り当てないようにする。この場合、再配置部１２６は、次のシステム番号を持つ容量単位ノード２５２を有するストレージノード２００に対して、フラグメント５４０の割り当てを実行する。
【００６２】
例えば、再配置処理の対象となるデータブロック５１０を構成するフラグメント５４０に含まれるパリティフラグメント５３０の数が３個だとする。図１３に示すように、あるストレージノードにＦ５、Ｆ６及びＦ７の３個のフラグメント５４０が割り当てられ、更に、該ストレージノード２００にフラグメント５４０（Ｆ８）が割り当てられようとしている状況を考える。その場合、再配置部１２６は、該ストレージノード２００には、Ｆ５、Ｆ６及びＦ７の３個のフラグメント５４０が割り当てられているため、該ストレージノード２００にはフラグメント５４０を割り当てずに、次のシステム番号を持つ容量単位ノード２５２を有するストレージノード２００に割り当てる。
【００６３】
即ち、再配置部１２６は、基本的な割当手法に基づいてフラグメント５４０（Ｆ８）の割り当てを実行した場合、容量単位ノード２５２（Ｎ１２）を有するストレージノード２００に割り当てられる（図１３における点線により表された箇所）。しかしながら、再配置部１２６は、条件１に従って、フラグメント５４０（Ｆ８）の割り当てを実行した場合、容量単位ノード２５２（Ｎ１３）を有するストレージノード２００にフラグメント５４０を割り当てる。
【００６４】
＝＝条件２＝＝
図１４は、再配置処理における、各ストレージノード２００に対するフラグメント５４０の割当条件２を例示した図である。条件２において、再配置部１２６は、各ストレージノード２００に割り当て済のオリジナルフラグメント５２０の数に着目することにより、フラグメント５４０の割り当てを実行する。具体的には、再配置部１２６は、次にフラグメント５４０を割り当てようとするストレージノード２００に割り当て済のオリジナルフラグメント５２０の数を、その他のストレージノード２００に割り当て済のオリジナルフラグメント５２０の数と比較する。
【００６５】
その結果、再配置部１２６は、次にフラグメント５４０を割り当てようとするストレージノード２００に割り当て済のオリジナルフラグメント５２０の数よりも、その他のストレージノード２００に割り当て済のオリジナルフラグメント５２０の数が多い、又は同じであった場合、該ストレージノード２００にオリジナルフラグメント５２０を割り当てる。一方、再配置部１２６は、次にフラグメント５４０を割り当てようとするストレージノード２００に割り当て済のオリジナルフラグメント５２０の数よりも、割り当て済みのオリジナルフラグメント５２０の数が少ないストレージノード２００が存在した場合、該ストレージノードにパリティフラグメント５３０を割り当てる。
【００６６】
例えば、図１４に示されるＦ１〜Ｆ４がオリジナルフラグメント５２０であり、ストレージノード２００に割り当て済であると考える。次に、図１４を参照すると、再配置部１２６は、Ｆ５を、Ｎ９を有するストレージノード２００に割り当てる際、Ｎ９を有するストレージノード２００に割り当て済のオリジナルフラグメント５２０の数を、その他の各ストレージノード２００に割り当て済のオリジナルフラグメント５２０の数と比較する。比較の結果、Ｎ９を有するストレージノード２００に割り当て済のオリジナルフラグメント５２０の数は０であり、その他の各ストレージノード２００に割り当て済のオリジナルフラグメント５２０の数は０か１である。これにより、再配置部１２６は、Ｎ９を有するストレージノード２００には、オリジナルフラグメント５２０を割り当てる。次に、図１４を参照すると、再配置部１２６は、Ｆ６を、Ｎ１０を有するストレージノード２００に割り当てる際、その他の各ストレージノード２００に割り当て済のオリジナルフラグメント５２０の数と比較する。比較の結果、Ｎ１０を有するストレージノード２００に割り当て済のオリジナルフラグメント５２０の数は１であり、割り当て済のオリジナルフラグメント５２０の数が０のストレージノード２００が存在することがわかる。これにより、再配置部１２６は、Ｎ１０を有するストレージノード２００には、パリティフラグメント５３０を割り当てる。
【００６７】
ここで、再配置部１２６は、割り当てられていないフラグメント５４０がオリジナルフラグメント５２０のみ、又はパリティフラグメント５３０のみになった場合、条件２は無視して残ったフラグメント５４０を割り当てる。
【００６８】
最後に、再配置部１２６は、各ストレージノード２００に割り当てられたフラグメント５４０を、各ストレージノード２００が有する容量単位ノード２５２に割り当てる。各容量単位ノード２５２に対するフラグメント５４０の割当手法は、図１１のステップＳ２０２における手法と同様である。
【００６９】
ステップＳ３０８において、再配置部１２６は、移動対象のフラグメント５４０を決定する。具体的に、再配置部１２６は、ステップＳ３０６において割り当てられたフラグメント５４０の格納位置と、再配置前のフラグメント５４０の格納位置と、を比較する。比較した結果、再配置部１２６は、実際に移動が必要なフラグメント５４０を決定する。
【００７０】
図１５は、各ストレージノード２００における再配置前及び再配置後のフラグメント５４０の格納位置を例示する図である。図１５の上部に示すのは、再配置前のフラグメント５４０の格納位置であり、図１５の下部に示すのは、再配置後のフラグメント５４０の格納位置である。図１５を参照すると、フラグメント５４０の格納位置に変更が生じたストレージノード２００は、ＳＮ０、ＳＮ３及びＳＮ５であることがわかる。従って、再配置部１２６は、ＳＮ０のオリジナルフラグメント５２０をＳＮ３に、ＳＮ３のパリティフラグメント５３０をＳＮ５に移動するよう決定する。
【００７１】
ステップＳ３１０において、再配置部１２６は、ストレージノード２００に対して、フラグメント５４０の移動命令を送信する。具体的に、再配置部１２６は、ストレージノード２００に対して、ステップＳ３０８において決定されたようにフラグメント５４０を移動する命令を送信する。
【００７２】
上述した再配置処理は、アクセスノード１００が、ストレージノード２００に対して命令を出すことにより実行するよう説明したが、アクセスノード１００からの命令を出す必要はない。そのため、再配置処理は、ストレージノード２００が備える記憶装置２４０において再配置情報を記憶しておくことにより、あるストレージノード２００から再配置処理の命令があった場合、アクセスノード１００と通信を行わずに再配置処理を実行することも可能である。
【００７３】
また、上述した再配置処理は、複数のストレージノード２００において１台の障害まで耐えることができるようにフラグメントの再配置処理を実行しているが、複数台のストレージノード２００の障害にも耐えることができるようにすることもできる。具体的には、ストレージノード２００の１台あたりのフラグメント５４０の最大数を減らすことにより、複数台のストレージノード２００の障害にも対応可能になる。このとき、何台のストレージノード２００の障害に対応可能かを設定によって変更可能な構成にしてもよい。
【００７４】
＝データ読み込み処理＝
次に、図１７及び図１８を参照して、データ読み込み処理について説明する。
【００７５】
図１８は、データ読み込み処理における、アクセスノード１００の動作を示すフローチャートである。
【００７６】
図１８に示すように、ステップＳ４０２において、データ送受信部１２２は、クライアントからのＲｅａｄ要求（読み込み要求）を受信する。
【００７７】
ステップＳ４０４において、データ読み込み部１２８は、読み込み対象となるデータブロック５１０を特定する。具体的に、データ読み込み部１２８は、ストレージノード２００が格納するメタデータを読み込み、クライアントが要求したデータに対応するデータブロック５１０を特定する。ここで、データ書き込み処理及び再配置処理において説明した通り、全てのストレージノード２００に同様のメタデータが格納されているので、データ読み込み部１２８は、どれか１つのストレージノード２００に格納されているメタデータを読み込めばよい。
【００７８】
ステップＳ４０６において、データ読み込み部１２８は、読み込み対象となるオリジナルフラグメント５２０を特定する。具体的に、データ読み込み部１２８は、ステップＳ４０４において特定されたデータブロック５１０を構成するオリジナルフラグメント５２０の格納位置を、メタデータに基づいて特定する。
【００７９】
ステップＳ４０８において、データ送受信部１２２は、読み込み対象となるオリジナルフラグメント５２０のＲｅａｄ要求をストレージノード２００に送信する。
【００８０】
ここで、ストレージノード２００からアクセスノード１００に対して、Ｒｅａｄ要求のあったオリジナルフラグメント５２０を送信する動作について説明する。図１７は、データ読み込み処理において、ストレージノード２００からアクセスノード１００に対して、オリジナルフラグメント５２０を送信する処理を例示した図である。図１７に示すように、ストレージノード２００は、オリジナルフラグメント５２０のみを読み込み、アクセスノード１００に対して送信する。例えば、読み込むことができなかったオリジナルフラグメント５２０が存在した場合は、読み込み対象のデータブロックを構成するフラグメント５４０（パリティフラグメント５３０を含む）を全て読み込むこととする。
【００８１】
ステップＳ４１０において、受信したオリジナルフラグメント５２０を用いてデータを復元する。
【００８２】
以上説明したように、本発明の第１の実施形態に係るストレージシステム１は、容量の異なるストレージノードを備えるストレージシステムにおいて、性能劣化を防ぎ、耐障害性を保つことができる。
【００８３】
具体的に、ストレージシステム１は、データ書き込みの性能劣化を防ぐことができる。その理由は、データ書き込み部１２４がデータ書き込み処理の際、ストレージノードに対して、データを均等に書き込むからである。また、データ書き込み部１２４によるデータ書き込み処理が完了した後に、再配置部１２６が再配置処理を行うからである。
【００８４】
具体的に、ストレージシステム１は、データ読み込みの性能劣化を防ぐことができる。その理由は、データ読み込み部１２８によるデータ読み込み処理の際、パリティフラグメント５３０は読み込まず、オリジナルフラグメント５２０のみ読み込むからである。また、容量の大きいストレージノード２００にパリティフラグメント５３０が多くなるよう再配置部１２６が再配置処理を行う（即ち、各ストレージノード２００におけるオリジナルフラグメント５２０の数が均等になるよう再配置処理を行う）ことにより、データ読み込み処理の際に容量の大きいストレージノード２００に負荷を集中させないからである。
【００８５】
具体的に、ストレージシステム１によれば、パリティフラグメント５３０の数がｎ個の場合にディスクのｎ重障害までデータロストが発生しない。さらに、ストレージシステム１によれば、ストレージノード１台の障害であったとしてもデータロストが発生しない。その理由は、再配置部１２６が、耐障害性が失われないよう所定の条件に従って再配置処理を行うからである。
【００８６】
また、ストレージシステム１は、ストレージノード２００の数が、フラグメント５４０の数に比べて多くなかったとしても本発明を適用することができる。その理由は、容量単位ノード２５２という仮想ノードを定義してデータを格納するからである。そのため、仮想ノードの数を増やすことにより、仮想的に格納するノードの数を調整することができる。
【００８７】
＜第２の実施形態＞
本発明の第２の実施形態に係る情報処理装置４００について説明する。図１９は、本発明の第２の実施形態に係る情報処理装置４００の機能構成を概念的に例示するブロック図である。本発明の第２の実施形態に係る情報処理装置４００は、上述した実施形態に共通する構成である。
【００８８】
データ書き込み部４２４は、受信したデータを複数の分割データに分割し、エラーが起きた前記受信データを再構築する際に利用可能な複数のパリティデータを生成し、前記分割データと前記パリティデータとを、複数のストレージノード２００に送信する。
【００８９】
再配置部４２６は、前記データ書き込み部により書き込まれた前記データの再配置位置を、所定の条件に基づいて前記複数のストレージノード２００に割り当て、前記割り当てられたストレージノードに前記データを格納する。
【００９０】
データ読み込み部４２８は、前記複数のストレージノード２００に格納されたパリティデータを識別することにより、該パリティデータを読み込まないよう前記分割データを読み込む。
【００９１】
以上説明したように、本発明の第２の実施形態に係る情報処理装置４００は、容量の異なるストレージノードを備えるストレージシステムにおいて、性能劣化を防ぎ、耐障害性を保つことができる。
【００９２】
＜産業上の利用可能性＞
本発明の活用例として、複数のストレージを仮想的な1つのストレージに統合するグリッドストレージシステムが考えられる。また、本発明は、重複排除機能を有するストレージについて利用可能であると考えられる。
【符号の説明】
【００９３】
１    ストレージシステム
１０    ＣＰＵ
１２    メモリ
１４    ＨＤＤ
１６    通信ＩＦ
１８    入力装置
２０    出力装置
２２    リーダーライター
２４    記憶媒体
２６    バス
１００    アクセスノード
２００    ストレージノード
３００    ネットワーク
１１０，２１０    通信部
１２０，２２０    データ処理部
１２２，２２２    データ送受信部
１２４，２２４，４２４    データ書き込み部
１２６，２２６，４２６    再配置部
１２８，２２８，４２８    データ読み込み部
１３０，２３０    ノード情報処理部
１３２，２３２    構成変更部
１３４，２３４    状態監視部
１４０，２４０    記憶装置
２５０    データ格納部
２５２    容量単位ノード
２５４    故障単位ノード
５００    データ
５１０    データブロック
５２０    分割データ（オリジナルフラグメント）
５３０    パリティデータ（パリティフラグメント）
５４０    フラグメント
【図１】
2014182737.tif 000003
【図２】
2014182737.tif 000004
【図３】
2014182737.tif 000005
【図４】
2014182737.tif 000006
【図５】
2014182737.tif 000007
【図６】
2014182737.tif 000008
【図７】
2014182737.tif 000009
【図８】
2014182737.tif 000010
【図９】
2014182737.tif 000011
【図１０】
2014182737.tif 000012
【図１１】
2014182737.tif 000013
【図１２】
2014182737.tif 000014
【図１３】
2014182737.tif 000015
【図１４】
2014182737.tif 000016
【図１５】
2014182737.tif 000017
【図１６】
2014182737.tif 000018
【図１７】
2014182737.tif 000019
【図１８】
2014182737.tif 000020
【図１９】
2014182737.tif 000021