(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6572574
(24)【登録日】2019年8月23日
(45)【発行日】2019年9月11日
(54)【発明の名称】ストレージ制御システム、ストレージ制御システムのノード、およびストレージ制御方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20190902BHJP
G06F 16/182 20190101ALI20190902BHJP
G06F 16/11 20190101ALI20190902BHJP
G06F 16/188 20190101ALI20190902BHJP
【FI】
G06F3/06 305G
G06F3/06 540
G06F16/182
G06F16/11
G06F16/188
【請求項の数】7
【全頁数】10
(21)【出願番号】特願2015-58847(P2015-58847)
(22)【出願日】2015年3月23日
(65)【公開番号】特開2016-177714(P2016-177714A)
(43)【公開日】2016年10月6日
【審査請求日】2018年2月15日
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】高橋 健吾
【審査官】
田名網 忠雄
(56)【参考文献】
【文献】
特開2010−176180(JP,A)
【文献】
特開2013−206072(JP,A)
【文献】
特開2009−193502(JP,A)
【文献】
特開2012−088955(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06−3/08
G06F 13/10−13/14
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
対象データの書き込みを要求するための書き込み要求を受け付けた場合に、
前記対象データを所定容量のフラグメントに分割し、
分割された前記フラグメントの書き込みの要求を複数の分配先ノードへ送信し、
前記フラグメントの書き込みの要求に対して前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードから受信する
要求処理手段を備え、
前記要求処理手段は、前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードのうち第1の分配先ノードから受信しない場合に、前記第1の分配先ノードに対して、前記第1の分配先ノードへ送信された前記フラグメントが格納されているか否かを確認し、格納されていなければ、書き込みが成功するまで、該フラグメントの書き込みを試みる要求を、前記フラグメントの書き込みが成功したことを表す結果を送信した複数の前記分配先ノードのうち第2の分配先ノードへ送信する
ノード。
【請求項2】
前記要求処理手段は、複数の前記分配先ノードのうち、書き込まれた前記フラグメントの処理数がより少ない第3の分配先ノードを前記第2の分配先ノードとして選択する
請求項1に記載のノード。
【請求項3】
前記要求処理手段は、前記第2の分配先ノードへ送信した前記フラグメントの書き込みの要求について、前記第1の分配先ノードへの該要求の送信を前記第2の分配先ノードへ委託する
請求項1または2に記載のノード。
【請求項4】
複数の前記分配先ノードのうち第4の分配先ノードとの間で通信障害が発生した場合に、前記第4の分配先ノードとの間における通信制御方式を第1の通信制御方式から第2の通信制御方式へ切り替える通信制御手段を更に備える
請求項1から3のうち1項に記載のノード。
【請求項5】
前記第1の通信制御方式はTCP(Transmission Control Protocol)であり、前記第2の通信制御方式はUDP(User Datagram Protocol)である
請求項4に記載のノード。
【請求項6】
対象データの書き込みを要求するための書き込み要求を受け付けた場合に、
前記対象データを所定容量のフラグメントに分割し、
分割された前記フラグメントの書き込みの要求を複数の分配先ノードへ送信し、
前記フラグメントの書き込みの要求に対して前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードから受信する
要求処理手順を含むストレージ制御方法であって、
前記要求処理手順において、前記フラグメントの書き込みが成功したことを表す結果を複数の前記分配先ノードのうち第1の分配先ノードから受信しない場合に、前記第1の分配先ノードに対して、前記第1の分配先ノードへ送信された前記フラグメントが格納されているか否かを確認し、格納されていなければ、書き込みが成功するまで、該フラグメントの書き込みを試みる要求を、前記フラグメントの書き込みが成功したことを表す結果を送信した複数の前記分配先ノードのうち第2の分配先ノードへ送信する
ストレージ制御方法。
【請求項7】
請求項1乃至5の何れか1項に記載のノードと、
複数の前記分配先ノードと
を備えるストレージ制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御システムおよびストレージ制御方法に係り、特に通信性能劣化を防止するストレージ制御システムおよびストレージ制御方法に関する。
【背景技術】
【0002】
CAS(Content Addressable Storage)は、コンテンツオブジェクトでアクセスするストレージである。例えば、画像データと画像データの属性(撮影日時、フォーマット、画像サイズ)などをパッケージ化したものに、ファイル名の代わりに、固有のコンテンツID(Identification)を付与することで、コンテンツの物理的な格納場所を管理する。コンテンツは、コンテンツIDからアクセスされることで、簡単な管理で、コンテンツの長期間に渡る安全な保存、容易な参照を実現することができる。
【0003】
ノード(サーバ)単位の拡張性および冗長性を持つCASにおけるデータの格納方式は、データをフラグメントと呼ばれる小さい単位に分割し、データに対してパリティを付加した上で、各ノードに分散格納する手段が一般的である。しかし、この手段の課題として、一部のノードの性能劣化が、システム全体の性能に直接影響を与えてしまう事が挙げられる。このような場合の解決策として、性能劣化を引き起こしたノードをシステムから切り離す方式が採用されている。しかし、一部のノードと他のノードの間で通信性能の不安定な劣化が発生する場合においては、ノードが完全に使用できなくなっているわけではないため、システムの機能性を損なう事なく、ノードを切り離さずに使い続けたいというニーズがある。
【0004】
上記に関連する技術として、特許文献1には、ストレージシステムにおいて、フラグメントデータのデータ配置状況を記憶するデータ配置監視手段と、記憶手段がダウンした場合にフラグメントデータを、他の記憶手段に記憶されている他のフラグメントデータに基づいて再生成して当該他の記憶手段に記憶するデータ復元手段とを備える技術が開示されている。さらに、ダウンした記憶手段が復旧した場合に、データ配置監視手段にて記憶されたデータ配置情報にて表わされたデータ配置状況となるよう、復旧した記憶手段に記憶されているフラグメントデータを用いて当該フラグメントデータのデータ配置を復帰させるデータ配置復帰手段を備える技術が開示されている。
【0005】
さらに、特許文献2には、先読みしたWEB情報を転送する際に、TCPプロトコルとUDPプロトコルを適宜選択して伝送効率を高める技術が開示されている。すなわち、定期的に情報蓄積サーバとの間で伝送遅延時間を測定し、測定された伝送遅延時間が一定時間以下の場合にTCPプロトコルを用い、一定時間を超えている場合にUDPプロトコルを用いて先読みされたWEB情報を情報蓄積サーバへ送信する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2010−191558号公報
【特許文献2】特開2013−127719号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1は、予めストレージシステムがダウンした時に備えて、データ配置を記憶しておく必要があるため、データ監視手段、データ記憶手段、データ復元手段という構成要素が必要になるという課題があった。
【0008】
また、特許文献2は、TCPプロトコルとUDPプロトコルを使い分けているが、UDPプロトコルを使用する場合は、データ受信の順序の逆転に対しては、受信順序制御処理が必要となるという課題があった。
【0009】
本発明の目的は、この点を鑑みたものであり、データ配置を記憶する手段やデータ受信順序制御処理手段を必要とせずに、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムを提供することにある。
【課題を解決するための手段】
【0010】
本発明では、上記課題を解決するために、外部から書込み要求を受取った要求元ノードが対象データを所定容量に分割して記憶装置に格納するストレージ制御システムにおいて、要求元ノードは、対象データを分配先ノードに分配後、分配先ノードの一部から結果が連絡されない場合でも書込みの成功情報を外部に連絡し、所定の分配先ノードに対し、結果が連絡されなかったデータの後処理を委託する要求処理部を有することを特徴としている。
【0011】
また、本発明では、上記課題を解決するために、外部から書込み要求を受取った要求元ノードが対象データを所定容量に分割して記憶装置に格納するストレージ制御方法において、要求元ノードは、対象データを分配先ノードに分配後、分配先ノードの一部から結果が連絡されない場合でも書込みの成功情報を外部に連絡し、所定の分配先ノードに対し、結果が連絡されなかったデータの後処理を委託するステップを有することを特徴としている。
【発明の効果】
【0012】
本発明によれば、データ配置を記憶する手段やデータ受信順序制御処理手段を必要とせずに、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムを提供することができる。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施の形態におけるストレージ制御システムの構成を示すブロック図である。
【
図2】本発明の実施の形態における通信制御部の動作を示すフローチャートである。
【
図3】本発明の実施の形態におけるノード100の要求処理部が利用者から書き込み要求を受け取ったときの各ノードの動作を表すイメージ図である。
【
図4】本発明の実施の形態におけるノード100の要求処理部が利用者から読み込み要求を受け取ったときの各ノードの動作を表すイメージ図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
(実施の形態)
図1は、本発明の実施の形態におけるストレージ制御システムの構成を示すブロック図である。
【0015】
図1において、CAS1000は、複数のノードを有し、ノード単位の拡張性および冗長性を持つCASである。
【0016】
ノード100は、要求処理部1、通信制御部2、主記憶装置3、補助記憶装置4、TCP(Transmission Control Protocol)制御部5、UDP(User Datagram Protocol)制御部6、通信装置7を有している。他のノードも、すべて同じ構成を有している。
【0017】
要求処理部1は、CAS1000の外部の利用者2000からの要求(データの書き込み要求および読み込み要求)を受け付け、通信装置7を経由して他のノードに要求を送る。要求を受け取った各ノードの要求処理部1は、要求に応じた処理を行う。例えば、書き込み処理の場合、データを分割したフラグメントを補助記憶装置4に書き込み、要求元に書き込みの完了通知を送る。また、読込処理の場合、フラグメントを補助記憶装置4から読み込み、要求元にフラグメントを送る。要求元のノード100の要求処理部1は、利用者2000に要求に対する応答(書き込み要求の場合は完了通知、読み込み要求の場合はフラグメントから復元したデータ)を返却する。
【0018】
通信制御部2は、各ノード間の通信状況を監視し、TCP制御部5とUDP制御部6のどちらを通信に使用するかを選択する。要求処理部1からの通信要求に応じて、TCP制御部5またはUDP制御部6を経由して通信装置7にアクセスし、ノード間の通信を実現する。主記憶装置3は、要求に伴うデータ、フラグメント、パリティを一時的に記憶するために使用される。補助記憶装置4は、フラグメント、パリティの恒久的な記憶に使用される。TCP制御部5およびUDP制御部6は、TCPによる通信およびUDPによる通信を動的に切り替えるため、通信制御部2によって制御される。
【0020】
図2は、本実施形態における通信制御部の動作を示すフローチャートである。
図3は、ノード100の要求処理部1が、CAS1000の外部の利用者2000から書き込み要求を受け取ったときの各ノードの動作を表すイメージ図である。
図4は、ノード100の要求処理部1が利用者2000から読み込み要求を受け取ったときの各ノードの動作を表すイメージ図である。
【0021】
図2において、通信制御部2は、通信装置7から通信性能(帯域および平均応答時間)を示す統計情報を定期的に受け取る(S101)。通信制御部2は、通信装置7から受け取った帯域および平均応答時間を元に、通信性能の劣化状況を判断する(S102)。通信制御部2は、帯域に対して平均応答時間が正常値であるかを判断するための閾値Aを持ち、帯域に対して平均応答時間が閾値Aを上回った場合、通信障害が発生していると判断するものとする。通信制御部2は、要求処理部1が他のノード100と通信する際に使用するプロトコル(TCPまたはUDP)を選択する。TCP制御部5は、他のノード100とTCP通信を行う機能を有し、UDP制御部6は、他のノード100とUDP通信を行う機能を有する。
【0022】
通信制御部2は、通信障害が発生していないと判断している場合(S102のYes)、要求処理部1とTCP制御部5をリンクする。その結果、要求処理部1はTCPを用いて他のノード100と通信を行う(S103)。
【0023】
通信制御部2が、通信障害が発生していると判断している場合は(S102のNo)、通信障害が発生している間、要求処理部1のリンク先をTCP制御部5からUDP制御部6に切り替える。その結果、要求処理部1はUDPを用いて他のノード100と通信を行う(S104)。また、UDPを使用しても、なおシステムが使用に耐えない状況であれば、障害のあるノードをシステムから切り離す。
【0024】
CASは、データのハッシュ値によってデータの格納先が決まるという特性上、データの順序性が重要ではない。また、応答確認や再送制御が無い事による信頼性の低下は、冗長性によってカバーされる。以上より、CASとUDPを組み合わせた場合に、TCPと同等の機能を補完する必要は無い。
【0025】
上記の手法を最大限に生かすため、要求処理部1は、利用者2000から受け取った要求を各ノードに分配したあと、要求を分配した全てのノードからノードでのフラグメントに対する処理の結果を受け取るのを待たない。データを分割したフラグメントの数をN、1つのデータに対して付与されたパリティの数をMとすると、ノードの数が十分に多いCASの場合、要求を分配するノードの数は、最大で、N+M−1となる(−1は要求元のノード100が自分で処理する分となる)(MとNは無関係で、MとNは2以上の整数)。これは、分割されたフラグメントと付与されたパリティを個別にノードに分配することを意味している。要求元のノード100は、要求を分配したノードから、N−1個の結果を受け取った時点で、利用者2000に結果を返す。
【0026】
図3を用いて、ノード100の要求処理部1が、利用者2000から書き込み要求を受け取ったときの各ノードの動作について説明する。
図3において、101〜105は、ノード100から分配を受けるノードである。
【0027】
S201:利用者2000からの書き込み要求の受諾
利用者2000から書き込み要求を受け取った要求処理部1は、主記憶装置3上でデータをフラグメントに分割し、パリティを作成する。
【0028】
S202:要求元のノード100から各ノードへの要求分配
利用者2000から書き込み要求を受け取った要求処理部1は、TCP制御部5またはUDP制御部6を経由して、他のノード101〜105に要求を分配する。この時、一部のノード(ノード105)に対する通信は、通信障害のため失敗する可能性があるとする。
【0029】
S203:ノード101〜105における処理
要求元のノード100および要求分配先のノード101〜105において、主記憶装置3上に記憶されたフラグメントとパリティを、補助記憶装置4に格納する。補助記憶装置4への格納が完了した要求分配先のノード101〜105は、要求元のノード100に、TCP制御部5またはUDP制御部6を経由して、結果(成功または失敗)を返却する。
【0030】
S204:利用者2000への結果返却
要求元のノード100は、必要数のノード(要求元のノード100を含んで、フラグメント数N個分)から成功を受け取った時点で、利用者2000に結果(成功)を返却する。逆に、パリティ数Mを超えた数の失敗を受け取った場合は、利用者2000に結果(失敗)を返却するか、結果(失敗)を返却せずにリトライを行う。失敗が、パリティ数を超えるとデータ復旧ができなくなるためである。通信障害のため、一定時間を経過しても利用者2000に結果を返却できない状況の場合も、リトライを行う。これは、要求分配先のノード101〜105の一部から結果が返却されなかったとしても、それがパリティ数Mを超えなければ、書き込み要求に対して遅延なく結果を利用者2000に渡せることを意味する。なお、利用者に結果を返却した時点で、要求元のノード100の主記憶装置3からは、結果(成功)を受け取ったフラグメントとパリティを削除する。
【0031】
S205:遅延した書き込み処理の後処理の委託
要求元のノード100は、要求分配先のノード101〜105から結果(成功)を受け取らなかったフラグメントとパリティにおいて、後処理を行うためのノードを選択する。後処理を行うためのノードは、結果(成功)を受け取ったノードの中で、現在処理しているフラグメントやパリティが少ないものの中から任意に選ばれる(例えばノード102)。要求元のノード100は、選択されたノード102に対して、対象となるフラグメント・パリティを送り、後処理の委託を行う。
【0032】
要求元のノード100は、要求分配先のノード101〜105から、すべて成功の結果を受け取った場合は、後処理の委託は行わない。
【0033】
S206:後処理の委託に対する応答
後処理を委託されたノード102は、要求元のノード100に対して、応答(受理または拒否)を返却する。受理された場合、要求元のノード100の主記憶装置3は、後処理を委託したフラグメントとパリティを削除する。
【0034】
S207:後処理
後処理を委託されたノード102は、対象となるフラグメントとパリティが本来格納されているべきノード105に対して、定期的にTCP制御部5またはUDP制御部6を経由して通信を行う。まず最初に、対象となるフラグメントとパリティが本来格納されているべきノード105に対して、対象となるフラグメントとパリティが格納されているか否かを確認する。
【0035】
格納されていることを確認した場合、後処理は不要となるため、後処理を委託されたノード102の主記憶装置3は、対象となるフラグメントとパリティを削除する。その後、ノード105からフラグメントの処理結果が来るのを待つ。
【0036】
一方格納されていないことを確認した場合、後処理を委託されたノード102は、対象となるフラグメントとパリティが本来格納されているべきノード105に対して、書き込みを試みる。書き込みに失敗した場合は、定期的にリトライを行う。これらの通信は、利用者2000からの他の要求を遅延させすぎないよう、帯域を抑えて行われる。
【0037】
次に
図4を用いて、ノード100の要求処理部1が、利用者2000から読み込み要求を受け取ったときの各ノードの動作について説明する。
図4において、101〜105は、ノード100から分配を受けるノードである。
【0038】
S208:要求元のノード100からノード101〜105への要求分配
利用者2000から読み込み要求を受け取った要求処理部1は、TCP制御部5またはUDP制御部6を経由して、他のノード101〜105に要求を分配する。この時、一部のノードに対する通信は、通信障害のため失敗する可能性があるとする(例えば、105)。
【0039】
S209:ノード101〜105における処理
要求元のノード100および要求分配先のノード101〜105において、補助記憶装置4上に記憶されたフラグメントとパリティを、主記憶装置3に読み出す。主記憶装置3への読み出しが完了した要求分配先のノード101〜105は、要求元のノード100に、TCP制御部5またはUDP制御部6を経由して、読み出したフラグメントとパリティを送信する。
【0040】
S210:利用者2000への結果返却
要求元のノード100は、必要数のノード(要求元のノード100を含んで、フラグメント数N個分)から成功を受け取った時点で、受け取ったフラグメントとパリティからデータを復元し、利用者2000に返却する。
【0041】
逆に、失敗をパリティ数Mを超えて受け取った場合は、利用者2000に結果(失敗)を返却するか、リトライを行う。一定時間を経過しても利用者2000に結果を返却できない状況の場合も、リトライを行う。これは、要求分配先のノード101〜105の一部から結果が返却されなかったとしても、それがパリティ数Mを超えなければ、読み込み要求に対して遅延なく結果を利用者2000に渡せることを意味する。なお、利用者に結果を返却した後、要求元のノード100の主記憶装置3上にある復元されたデータ、および各ノード100の主記憶装置3上にある、読み出されたフラグメントとパリティは、任意のタイミングで削除される。
【0042】
以上のように本実施形態は、書込み要求を受取った要求元ノードは、書込み要求に対するデータを分割し要求分配先のノードに分配し、要求元ノードは、要求分配先のノードの一部から結果が返却されない場合でも書込みの成功を返却し、選択されたノードに対し、結果が返却されなかったデータの後処理を委託する。また、後処理を委託されたノードは、対象となるデータが本来格納されているべきノードに対し、書込み処理を行うことにより、通信性能が不安定になるような通信障害の場合、通信制御方式を切り替えて通信する。
【0043】
このように本実施形態によれば、データ配置を記憶する手段やデータ受信順序制御処理手段を必要とせずに、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムを提供できる。
【0044】
尚、本願発明は、上述の実施の形態に限定されるものではなく、本願発明の要旨を逸脱しない範囲で種々変更、変形して実施することが出来る。例えば、通信制御部は、TCP制御部とUDP制御部のどちらを使用するかを判断するのに、別の情報を使用してもよい。ある一つのノードの通信制御部が、全てのノードの通信装置から統計情報を収集し、CAS全体の通信状況を元に判断を行うということも可能である。
【産業上の利用可能性】
【0045】
本発明は、通信障害が発生しても通信性能の劣化を最小限に抑えられるストレージ制御システムとして利用できる。
【符号の説明】
【0046】
1 要求処理部
2 通信制御部
3 主記憶装置
4 補助記憶装置
5 TCP制御部
6 UDP制御部
7 通信装置
100 ノード
101 ノード
102 ノード
103 ノード
104 ノード
105 ノード
1000 CAS
2000 利用者