(57)【特許請求の範囲】
【請求項１】
対象データの書き込みを要求するための書き込み要求を受け付けた場合に、
前記対象データを所定容量のフラグメントに分割し、
分割された前記フラグメントの書き込みの要求を複数の分配先ノードへ送信し、
前記フラグメントの書き込みの要求に対して前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードから受信する
要求処理手段を備え、
前記要求処理手段は、前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードのうち第１の分配先ノードから受信しない場合に、前記第１の分配先ノードに対して、前記第１の分配先ノードへ送信された前記フラグメントが格納されているか否かを確認し、格納されていなければ、書き込みが成功するまで、該フラグメントの書き込みを試みる要求を、前記フラグメントの書き込みが成功したことを表す結果を送信した複数の前記分配先ノードのうち第２の分配先ノードへ送信する
ノード。
【請求項２】
前記要求処理手段は、複数の前記分配先ノードのうち、書き込まれた前記フラグメントの処理数がより少ない第３の分配先ノードを前記第２の分配先ノードとして選択する
請求項１に記載のノード。
【請求項３】
前記要求処理手段は、前記第２の分配先ノードへ送信した前記フラグメントの書き込みの要求について、前記第１の分配先ノードへの該要求の送信を前記第２の分配先ノードへ委託する
請求項１または２に記載のノード。
【請求項４】
複数の前記分配先ノードのうち第４の分配先ノードとの間で通信障害が発生した場合に、前記第４の分配先ノードとの間における通信制御方式を第１の通信制御方式から第２の通信制御方式へ切り替える通信制御手段を更に備える
請求項１から３のうち１項に記載のノード。
【請求項５】
前記第１の通信制御方式はＴＣＰ（Transmission Control Protocol）であり、前記第２の通信制御方式はＵＤＰ（User Datagram Protocol）である
請求項４に記載のノード。
【請求項６】
対象データの書き込みを要求するための書き込み要求を受け付けた場合に、
前記対象データを所定容量のフラグメントに分割し、
分割された前記フラグメントの書き込みの要求を複数の分配先ノードへ送信し、
前記フラグメントの書き込みの要求に対して前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードから受信する
要求処理手順を含むストレージ制御方法であって、
前記要求処理手順において、前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードのうち第１の分配先ノードから受信しない場合に、前記第１の分配先ノードに対して、前記第１の分配先ノードへ送信された前記フラグメントが格納されているか否かを確認し、格納されていなければ、書き込みが成功するまで、該フラグメントの書き込みを試みる要求を、前記フラグメントの書き込みが成功したことを表す結果を送信した複数の前記分配先ノードのうち第２の分配先ノードへ送信する
ストレージ制御方法。
【請求項７】
請求項１乃至５の何れか１項に記載のノードと、
複数の前記分配先ノードと
を備えるストレージ制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御システムおよびストレージ制御方法に係り、特に通信性能劣化を防止するストレージ制御システムおよびストレージ制御方法に関する。
【背景技術】
【０００２】
ＣＡＳ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｓｔｏｒａｇｅ）は、コンテンツオブジェクトでアクセスするストレージである。例えば、画像データと画像データの属性（撮影日時、フォーマット、画像サイズ）などをパッケージ化したものに、ファイル名の代わりに、固有のコンテンツＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）を付与することで、コンテンツの物理的な格納場所を管理する。コンテンツは、コンテンツＩＤからアクセスされることで、簡単な管理で、コンテンツの長期間に渡る安全な保存、容易な参照を実現することができる。
【０００３】
ノード（サーバ）単位の拡張性および冗長性を持つＣＡＳにおけるデータの格納方式は、データをフラグメントと呼ばれる小さい単位に分割し、データに対してパリティを付加した上で、各ノードに分散格納する手段が一般的である。しかし、この手段の課題として、一部のノードの性能劣化が、システム全体の性能に直接影響を与えてしまう事が挙げられる。このような場合の解決策として、性能劣化を引き起こしたノードをシステムから切り離す方式が採用されている。しかし、一部のノードと他のノードの間で通信性能の不安定な劣化が発生する場合においては、ノードが完全に使用できなくなっているわけではないため、システムの機能性を損なう事なく、ノードを切り離さずに使い続けたいというニーズがある。
【０００４】
上記に関連する技術として、特許文献１には、ストレージシステムにおいて、フラグメントデータのデータ配置状況を記憶するデータ配置監視手段と、記憶手段がダウンした場合にフラグメントデータを、他の記憶手段に記憶されている他のフラグメントデータに基づいて再生成して当該他の記憶手段に記憶するデータ復元手段とを備える技術が開示されている。さらに、ダウンした記憶手段が復旧した場合に、データ配置監視手段にて記憶されたデータ配置情報にて表わされたデータ配置状況となるよう、復旧した記憶手段に記憶されているフラグメントデータを用いて当該フラグメントデータのデータ配置を復帰させるデータ配置復帰手段を備える技術が開示されている。
【０００５】
さらに、特許文献２には、先読みしたＷＥＢ情報を転送する際に、ＴＣＰプロトコルとＵＤＰプロトコルを適宜選択して伝送効率を高める技術が開示されている。すなわち、定期的に情報蓄積サーバとの間で伝送遅延時間を測定し、測定された伝送遅延時間が一定時間以下の場合にＴＣＰプロトコルを用い、一定時間を超えている場合にＵＤＰプロトコルを用いて先読みされたＷＥＢ情報を情報蓄積サーバへ送信する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１９１５５８号公報
【特許文献２】特開２０１３−１２７７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１は、予めストレージシステムがダウンした時に備えて、データ配置を記憶しておく必要があるため、データ監視手段、データ記憶手段、データ復元手段という構成要素が必要になるという課題があった。
【０００８】
また、特許文献２は、ＴＣＰプロトコルとＵＤＰプロトコルを使い分けているが、ＵＤＰプロトコルを使用する場合は、データ受信の順序の逆転に対しては、受信順序制御処理が必要となるという課題があった。
【０００９】
本発明の目的は、この点を鑑みたものであり、データ配置を記憶する手段やデータ受信順序制御処理手段を必要とせずに、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明では、上記課題を解決するために、外部から書込み要求を受取った要求元ノードが対象データを所定容量に分割して記憶装置に格納するストレージ制御システムにおいて、要求元ノードは、対象データを分配先ノードに分配後、分配先ノードの一部から結果が連絡されない場合でも書込みの成功情報を外部に連絡し、所定の分配先ノードに対し、結果が連絡されなかったデータの後処理を委託する要求処理部を有することを特徴としている。
【００１１】
また、本発明では、上記課題を解決するために、外部から書込み要求を受取った要求元ノードが対象データを所定容量に分割して記憶装置に格納するストレージ制御方法において、要求元ノードは、対象データを分配先ノードに分配後、分配先ノードの一部から結果が連絡されない場合でも書込みの成功情報を外部に連絡し、所定の分配先ノードに対し、結果が連絡されなかったデータの後処理を委託するステップを有することを特徴としている。
【発明の効果】
【００１２】
本発明によれば、データ配置を記憶する手段やデータ受信順序制御処理手段を必要とせずに、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態におけるストレージ制御システムの構成を示すブロック図である。
【図２】本発明の実施の形態における通信制御部の動作を示すフローチャートである。
【図３】本発明の実施の形態におけるノード１００の要求処理部が利用者から書き込み要求を受け取ったときの各ノードの動作を表すイメージ図である。
【図４】本発明の実施の形態におけるノード１００の要求処理部が利用者から読み込み要求を受け取ったときの各ノードの動作を表すイメージ図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
（実施の形態）
図１は、本発明の実施の形態におけるストレージ制御システムの構成を示すブロック図である。
【００１５】
図１において、ＣＡＳ１０００は、複数のノードを有し、ノード単位の拡張性および冗長性を持つＣＡＳである。
【００１６】
ノード１００は、要求処理部１、通信制御部２、主記憶装置３、補助記憶装置４、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）制御部５、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）制御部６、通信装置７を有している。他のノードも、すべて同じ構成を有している。
【００１７】
要求処理部１は、ＣＡＳ１０００の外部の利用者２０００からの要求（データの書き込み要求および読み込み要求）を受け付け、通信装置７を経由して他のノードに要求を送る。要求を受け取った各ノードの要求処理部１は、要求に応じた処理を行う。例えば、書き込み処理の場合、データを分割したフラグメントを補助記憶装置４に書き込み、要求元に書き込みの完了通知を送る。また、読込処理の場合、フラグメントを補助記憶装置４から読み込み、要求元にフラグメントを送る。要求元のノード１００の要求処理部１は、利用者２０００に要求に対する応答（書き込み要求の場合は完了通知、読み込み要求の場合はフラグメントから復元したデータ）を返却する。
【００１８】
通信制御部２は、各ノード間の通信状況を監視し、ＴＣＰ制御部５とＵＤＰ制御部６のどちらを通信に使用するかを選択する。要求処理部１からの通信要求に応じて、ＴＣＰ制御部５またはＵＤＰ制御部６を経由して通信装置７にアクセスし、ノード間の通信を実現する。主記憶装置３は、要求に伴うデータ、フラグメント、パリティを一時的に記憶するために使用される。補助記憶装置４は、フラグメント、パリティの恒久的な記憶に使用される。ＴＣＰ制御部５およびＵＤＰ制御部６は、ＴＣＰによる通信およびＵＤＰによる通信を動的に切り替えるため、通信制御部２によって制御される。
【００１９】
図１、図２、図３、図４を用いて、本実施形態の動作を説明する。
【００２０】
図２は、本実施形態における通信制御部の動作を示すフローチャートである。図３は、ノード１００の要求処理部１が、ＣＡＳ１０００の外部の利用者２０００から書き込み要求を受け取ったときの各ノードの動作を表すイメージ図である。図４は、ノード１００の要求処理部１が利用者２０００から読み込み要求を受け取ったときの各ノードの動作を表すイメージ図である。
【００２１】
図２において、通信制御部２は、通信装置７から通信性能（帯域および平均応答時間）を示す統計情報を定期的に受け取る（Ｓ１０１）。通信制御部２は、通信装置７から受け取った帯域および平均応答時間を元に、通信性能の劣化状況を判断する（Ｓ１０２）。通信制御部２は、帯域に対して平均応答時間が正常値であるかを判断するための閾値Ａを持ち、帯域に対して平均応答時間が閾値Ａを上回った場合、通信障害が発生していると判断するものとする。通信制御部２は、要求処理部１が他のノード１００と通信する際に使用するプロトコル（ＴＣＰまたはＵＤＰ）を選択する。ＴＣＰ制御部５は、他のノード１００とＴＣＰ通信を行う機能を有し、ＵＤＰ制御部６は、他のノード１００とＵＤＰ通信を行う機能を有する。
【００２２】
通信制御部２は、通信障害が発生していないと判断している場合（Ｓ１０２のＹｅｓ）、要求処理部１とＴＣＰ制御部５をリンクする。その結果、要求処理部１はＴＣＰを用いて他のノード１００と通信を行う（Ｓ１０３）。
【００２３】
通信制御部２が、通信障害が発生していると判断している場合は（Ｓ１０２のＮｏ）、通信障害が発生している間、要求処理部１のリンク先をＴＣＰ制御部５からＵＤＰ制御部６に切り替える。その結果、要求処理部１はＵＤＰを用いて他のノード１００と通信を行う（Ｓ１０４）。また、ＵＤＰを使用しても、なおシステムが使用に耐えない状況であれば、障害のあるノードをシステムから切り離す。
【００２４】
ＣＡＳは、データのハッシュ値によってデータの格納先が決まるという特性上、データの順序性が重要ではない。また、応答確認や再送制御が無い事による信頼性の低下は、冗長性によってカバーされる。以上より、ＣＡＳとＵＤＰを組み合わせた場合に、ＴＣＰと同等の機能を補完する必要は無い。
【００２５】
上記の手法を最大限に生かすため、要求処理部１は、利用者２０００から受け取った要求を各ノードに分配したあと、要求を分配した全てのノードからノードでのフラグメントに対する処理の結果を受け取るのを待たない。データを分割したフラグメントの数をＮ、１つのデータに対して付与されたパリティの数をＭとすると、ノードの数が十分に多いＣＡＳの場合、要求を分配するノードの数は、最大で、Ｎ＋Ｍ−１となる（−１は要求元のノード１００が自分で処理する分となる）（ＭとＮは無関係で、ＭとＮは２以上の整数）。これは、分割されたフラグメントと付与されたパリティを個別にノードに分配することを意味している。要求元のノード１００は、要求を分配したノードから、Ｎ−１個の結果を受け取った時点で、利用者２０００に結果を返す。
【００２６】
図３を用いて、ノード１００の要求処理部１が、利用者２０００から書き込み要求を受け取ったときの各ノードの動作について説明する。図３において、１０１〜１０５は、ノード１００から分配を受けるノードである。
【００２７】
Ｓ２０１：利用者２０００からの書き込み要求の受諾
利用者２０００から書き込み要求を受け取った要求処理部１は、主記憶装置３上でデータをフラグメントに分割し、パリティを作成する。
【００２８】
Ｓ２０２：要求元のノード１００から各ノードへの要求分配
利用者２０００から書き込み要求を受け取った要求処理部１は、ＴＣＰ制御部５またはＵＤＰ制御部６を経由して、他のノード１０１〜１０５に要求を分配する。この時、一部のノード（ノード１０５）に対する通信は、通信障害のため失敗する可能性があるとする。
【００２９】
Ｓ２０３：ノード１０１〜１０５における処理
要求元のノード１００および要求分配先のノード１０１〜１０５において、主記憶装置３上に記憶されたフラグメントとパリティを、補助記憶装置４に格納する。補助記憶装置４への格納が完了した要求分配先のノード１０１〜１０５は、要求元のノード１００に、ＴＣＰ制御部５またはＵＤＰ制御部６を経由して、結果（成功または失敗）を返却する。
【００３０】
Ｓ２０４：利用者２０００への結果返却
要求元のノード１００は、必要数のノード（要求元のノード１００を含んで、フラグメント数Ｎ個分）から成功を受け取った時点で、利用者２０００に結果（成功）を返却する。逆に、パリティ数Ｍを超えた数の失敗を受け取った場合は、利用者２０００に結果（失敗）を返却するか、結果（失敗）を返却せずにリトライを行う。失敗が、パリティ数を超えるとデータ復旧ができなくなるためである。通信障害のため、一定時間を経過しても利用者２０００に結果を返却できない状況の場合も、リトライを行う。これは、要求分配先のノード１０１〜１０５の一部から結果が返却されなかったとしても、それがパリティ数Ｍを超えなければ、書き込み要求に対して遅延なく結果を利用者２０００に渡せることを意味する。なお、利用者に結果を返却した時点で、要求元のノード１００の主記憶装置３からは、結果（成功）を受け取ったフラグメントとパリティを削除する。
【００３１】
Ｓ２０５：遅延した書き込み処理の後処理の委託
要求元のノード１００は、要求分配先のノード１０１〜１０５から結果（成功）を受け取らなかったフラグメントとパリティにおいて、後処理を行うためのノードを選択する。後処理を行うためのノードは、結果（成功）を受け取ったノードの中で、現在処理しているフラグメントやパリティが少ないものの中から任意に選ばれる（例えばノード１０２）。要求元のノード１００は、選択されたノード１０２に対して、対象となるフラグメント・パリティを送り、後処理の委託を行う。
【００３２】
要求元のノード１００は、要求分配先のノード１０１〜１０５から、すべて成功の結果を受け取った場合は、後処理の委託は行わない。
【００３３】
Ｓ２０６：後処理の委託に対する応答
後処理を委託されたノード１０２は、要求元のノード１００に対して、応答（受理または拒否）を返却する。受理された場合、要求元のノード１００の主記憶装置３は、後処理を委託したフラグメントとパリティを削除する。
【００３４】
Ｓ２０７：後処理
後処理を委託されたノード１０２は、対象となるフラグメントとパリティが本来格納されているべきノード１０５に対して、定期的にＴＣＰ制御部５またはＵＤＰ制御部６を経由して通信を行う。まず最初に、対象となるフラグメントとパリティが本来格納されているべきノード１０５に対して、対象となるフラグメントとパリティが格納されているか否かを確認する。
【００３５】
格納されていることを確認した場合、後処理は不要となるため、後処理を委託されたノード１０２の主記憶装置３は、対象となるフラグメントとパリティを削除する。その後、ノード１０５からフラグメントの処理結果が来るのを待つ。
【００３６】
一方格納されていないことを確認した場合、後処理を委託されたノード１０２は、対象となるフラグメントとパリティが本来格納されているべきノード１０５に対して、書き込みを試みる。書き込みに失敗した場合は、定期的にリトライを行う。これらの通信は、利用者２０００からの他の要求を遅延させすぎないよう、帯域を抑えて行われる。
【００３７】
次に図４を用いて、ノード１００の要求処理部１が、利用者２０００から読み込み要求を受け取ったときの各ノードの動作について説明する。図４において、１０１〜１０５は、ノード１００から分配を受けるノードである。
【００３８】
Ｓ２０８：要求元のノード１００からノード１０１〜１０５への要求分配
利用者２０００から読み込み要求を受け取った要求処理部１は、ＴＣＰ制御部５またはＵＤＰ制御部６を経由して、他のノード１０１〜１０５に要求を分配する。この時、一部のノードに対する通信は、通信障害のため失敗する可能性があるとする（例えば、１０５）。
【００３９】
Ｓ２０９：ノード１０１〜１０５における処理
要求元のノード１００および要求分配先のノード１０１〜１０５において、補助記憶装置４上に記憶されたフラグメントとパリティを、主記憶装置３に読み出す。主記憶装置３への読み出しが完了した要求分配先のノード１０１〜１０５は、要求元のノード１００に、ＴＣＰ制御部５またはＵＤＰ制御部６を経由して、読み出したフラグメントとパリティを送信する。
【００４０】
Ｓ２１０：利用者２０００への結果返却
要求元のノード１００は、必要数のノード（要求元のノード１００を含んで、フラグメント数Ｎ個分）から成功を受け取った時点で、受け取ったフラグメントとパリティからデータを復元し、利用者２０００に返却する。
【００４１】
逆に、失敗をパリティ数Ｍを超えて受け取った場合は、利用者２０００に結果（失敗）を返却するか、リトライを行う。一定時間を経過しても利用者２０００に結果を返却できない状況の場合も、リトライを行う。これは、要求分配先のノード１０１〜１０５の一部から結果が返却されなかったとしても、それがパリティ数Ｍを超えなければ、読み込み要求に対して遅延なく結果を利用者２０００に渡せることを意味する。なお、利用者に結果を返却した後、要求元のノード１００の主記憶装置３上にある復元されたデータ、および各ノード１００の主記憶装置３上にある、読み出されたフラグメントとパリティは、任意のタイミングで削除される。
【００４２】
以上のように本実施形態は、書込み要求を受取った要求元ノードは、書込み要求に対するデータを分割し要求分配先のノードに分配し、要求元ノードは、要求分配先のノードの一部から結果が返却されない場合でも書込みの成功を返却し、選択されたノードに対し、結果が返却されなかったデータの後処理を委託する。また、後処理を委託されたノードは、対象となるデータが本来格納されているべきノードに対し、書込み処理を行うことにより、通信性能が不安定になるような通信障害の場合、通信制御方式を切り替えて通信する。
【００４３】
このように本実施形態によれば、データ配置を記憶する手段やデータ受信順序制御処理手段を必要とせずに、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムを提供できる。
【００４４】
尚、本願発明は、上述の実施の形態に限定されるものではなく、本願発明の要旨を逸脱しない範囲で種々変更、変形して実施することが出来る。例えば、通信制御部は、ＴＣＰ制御部とＵＤＰ制御部のどちらを使用するかを判断するのに、別の情報を使用してもよい。ある一つのノードの通信制御部が、全てのノードの通信装置から統計情報を収集し、ＣＡＳ全体の通信状況を元に判断を行うということも可能である。
【産業上の利用可能性】
【００４５】
本発明は、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムとして利用できる。
【符号の説明】
【００４６】
１    要求処理部
２    通信制御部
３    主記憶装置
４    補助記憶装置
５    ＴＣＰ制御部
６    ＵＤＰ制御部
７    通信装置
１００    ノード
１０１    ノード
１０２    ノード
１０３    ノード
１０４    ノード
１０５    ノード
１０００    ＣＡＳ
２０００    利用者
【図１】
0006572574.tif 000002
【図２】
0006572574.tif 000003
【図３】
0006572574.tif 000004
【図４】
0006572574.tif 000005