(57)【特許請求の範囲】
【請求項１】
所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶するストレージシステムにおける前記複数のストレージ装置を管理するストレージ管理装置であって、
前記複数のストレージ装置が正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理部と、
前記複数のストレージ装置の間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理部と、
前記複数のストレージ装置に障害が発生した場合に、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理部と、
前記複数のストレージ装置のいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理を所定のユーザアクセス処理速度で行うユーザアクセス処理部と、
前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が所定の値となるように前記パトロール処理部、前記再配置処理部、および前記リカバリ処理部における動作を指示する処理速度制御部と、
を含み、
前記ユーザアクセス処理部は、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さくないときには前記ユーザアクセス処理を実行し、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さいときには前記ユーザアクセス処理を実行しない、
ストレージ管理装置。
【請求項２】
前記処理速度制御部は、前記パトロール処理部が前記複数のストレージ装置が正常に動作していると判定したときには前記再配置処理および／または前記パトロール処理を行い、正常に動作していないと判定したときには前記リカバリ処理を行う、請求項１に記載のストレージ管理装置。
【請求項３】
さらに、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度で定義されるメンテナンス速度を決定するメンテナンス処理速度決定部を含む、請求項１または２に記載のストレージ管理装置。
【請求項４】
所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶するストレージシステムにおける前記複数のストレージ装置を管理するストレージ管理方法であって、
前記複数のストレージ装置が正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理ステップと、
前記複数のストレージ装置の間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理ステップと、
前記複数のストレージ装置に障害が発生した場合に、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理ステップと、
前記複数のストレージ装置のいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理を所定のユーザアクセス処理速度で行うユーザアクセス処理ステップと、
前記ユーザアクセス処理速度と前記パトロール速度と前記再配置処理速度と前記リカバリ処理速度の和が所定の値となるように調整する処理速度制御ステップと、
を含み、
前記ユーザアクセス処理ステップでは、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さくないときには前記ユーザアクセス処理を実行し、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さいときには前記ユーザアクセス処理を実行しない、
ストレージ管理方法。
【請求項５】
所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶するストレージシステムであって、
前記複数のストレージ装置が正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理部と、
前記複数のストレージ装置の間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理部と、
前記複数のストレージ装置に障害が発生した場合に、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理部と、
前記複数のストレージ装置のいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理を所定のユーザアクセス処理速度で行うユーザアクセス処理部と、
前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が所定の値となるように前記パトロール処理部、前記再配置処理部、および前記リカバリ処理部における動作を指示する処理速度制御部と、
前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度で定義されるメンテナンス速度を事前に決定するメンテナンス処理速度決定部と、
を含み、
前記ユーザアクセス処理部は、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さくないときには前記ユーザアクセス処理を実行し、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さいときには前記ユーザアクセス処理を実行しない、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムのノード装置およびストレージシステムの管理方法、特にデータを複数のストレージノードで分散管理するマルチノードストレージシステムのノード装置および処理速度管理方法に関する。
【背景技術】
【０００２】
ストレージシステムは、コンピュータの処理で用いられるデータを保存するために用いられる。近年では、大量のデータ保存や信頼性を高めるために、複数のストレージノードでデータを分散管理するマルチノードストレージシステム（分散ストレージシステム）が使われる。
【０００３】
マルチノードストレージシステムでは、複数のストレージノードおよび各ストレージノードに接続されたストレージ装置を含んでいる。複数のストレージノードはネットワークを介して接続されている。各ストレージノードは、ネットワークを介して送られてくる命令に応答して、内部に備えた、または外部に接続されたデータを記憶するストレージ装置を管理する。一般に、マルチノードストレージシステムでは、仮想ストレージ装置が定義される。また、マルチノードストレージシステムでは一般に、冗長構成が取られる。冗長構成では、データの安全性等を改善するために、複数の論理デバイスに同一のデータをそれぞれ記憶させる冗長化が行われる。たとえば、２つの論理デバイスに同一のデータを記憶させることで、データは二重化される。このとき、冗長度は２である。
【０００４】
このようなマルチノードストレージシステムにより、ユーザは、複数のストレージノードに接続されたストレージ装置を、ローカルストレージと同様に使うことができる。
【０００５】
このようなマルチノードストレージシステムにおいて、あるストレージ装置に障害が発生すると、そのストレージ装置へのアクセスができなくなり、一部のデータの二重化状態が壊れてしまう。この場合、データの二重化状態を回復するために、リカバリ処理が行われる。リカバリ処理では、二重化状態が壊れたデータ、すなわちリカバリ対象のデータに対して、新たな論理デバイスの部分を割り当てる。そして、リカバリ対象のデータに割り当てられている既存の論理デバイスの部分から、新たな論理デバイスの部分にデータをコピーする。このようにして、データの二重化状態が回復する。
【０００６】
また、マルチノードストレージシステムにおいて、システムのストレージ装置が正常であるか否かを診断する必要がある。この診断のためには、一般にはストレージ装置が稼動しているか否かを診断する生存確認が行われる。生存確認による診断は、比較的短時間で行うことができ、処理の負荷も重くないのが一般的である。したがって、生存確認による診断は、システムの通常の処理に対する影響も大きくない。
【０００７】
冗長構成をとっている各ストレージノードのデータが正しく冗長構成を保持できているか等の診断を行う必要がある。たとえば、ストレージ装置間で冗長構成がとられている場合には、一つの領域の障害が見付かれば、リカバリ処理によって復旧することは可能である。しかし、冗長構成によって対応付けられている二つの領域について同時に障害が発生した場合には、データの復旧は不可能である。よって、ストレージ装置の生存確認だけではなく、ストレージ装置の全領域について、障害が発生しているか否かの診断を行う必要がある。この処理をパトロール処理と呼ぶ。診断を行う方法としては、データを読み出してエラーにならないか調べる、読み出したデータを書き込んで再び読み出し、内容が一致するか調べる、ノード間でデータを読み出し、内容が同一かどうか確認するなどの方法がある。
【０００８】
また、このようなマルチノードストレージシステムでは、データをどのようにストレージ装置に配置するのか、がシステム全体の性能に影響を及ぼす。たとえば、特定のストレージ装置に対するアクセスの集中は、データアクセスの遅延といった性能の劣化を引き起こす。よって、データアクセスの性能が劣化しないように、各ストレージノードのリソース量や負荷によって、適切なデータの配置となるようにデータの再配置の処理を行う技術が知られている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−１５１５１９号
【特許文献２】特開平０５−１５８６２５号
【特許文献３】特開２００５−０５０００７号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
複数のストレージノードを含み、データが多重化されて記憶されているマルチノードストレージシステムでは、ストレージノードに障害が発生したときには、リカバリ処理を行って、冗長度を回復する。たとえば、ＲＡＩＤ  ５によって構成されているマルチノードストレージシステムでは、１台のストレージノードが故障すると、故障したストレージノードのストレージ装置に記憶されていたデータと同一のデータを記憶する、正常な別のストレージノードから、新たなストレージノードのストレージ装置にデータをコピーするというリカバリ処理を行う。このようにしてシステムは冗長度を回復する。しかしながら、リカバリ処理中は、通常の処理と冗長度の回復のための処理が並行して行われるため、ユーザからの要求による処理のスピード等の外から見えるシステムの処理速度等が低下する。
【００１１】
また、マルチノードストレージシステムでは、設計段階でリカバリ処理時のシステム全体の負荷を予測するのが難しい。それゆえ、障害が発生してもマルチノードストレージシステムの性能が低下しないようにシステムを設計するのは難しく、このように正常時と故障発生時で外から見えるシステムの性能が異なる。
【００１２】
これらの要因によって、マルチノードストレージシステムである一連の処理を行うために必要な時間を見積るのが難しいという問題がある。
【００１３】
よって、マルチノードストレージシステムのノード装置であって、通常のユーザから入力される命令のほかに再配置処理およびパトロール処理を行う正常時と、通常のユーザから入力される命令のほかにリカバリ処理を行う障害発生時で外から見えるシステムの処理速度が変わらないシステムが要求されている。
【課題を解決するための手段】
【００１４】
所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶するストレージシステムにおける前記複数のストレージ装置を管理するストレージ管理装置は、前記複数のストレージ装置が正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理部と、前記複数のストレージ装置の間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理部と、前記複数のストレージ装置に障害が発生した場合に、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理部と、前記複数のストレージ装置のいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理を所定のユーザアクセス処理速度で行うユーザアクセス処理部と、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が所定の値となるように前記パトロール処理部、前記再配置処理部、および前記リカバリ処理部における動作を指示する処理速度制御部と、を含み、前記ユーザアクセス処理部は、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さくないときには前記ユーザアクセス処理を実行し、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が前記所定の値より小さいときには前記ユーザアクセス処理を実行しない、ことを特徴とする。
【発明の効果】
【００１５】
正常時に再配置処理およびパトロール処理を、障害発生時にはリカバリ処理を所定の処理速度で行うことによって、正常時と障害発生時で外から見えるシステムの処理速度が変わらないので、ある一連の処理を行うために必要な時間を見積ることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態のマルチノードストレージシステムの例を示す図である。である。
【図２】本発明の実施形態のマルチノードストレージシステムの例の一部を示す図である。
【図３】本発明の実施形態のマルチノードストレージシステムの例のストレージノードの機能ブロック図である。
【図４】本発明の実施形態のマルチノードストレージシステムの例のストレージノードのハードウェア構成例を示す図である。
【図５】本発明の実施形態のマルチノードストレージシステムの例のストレージノードのユーザアクセス処理部の処理を示すフローチャートである。
【図６】本発明の実施形態のマルチノードストレージシステムの例のストレージノードのデータ管理部の処理を示すフローチャートである。
【図７】本発明の実施形態のマルチノードストレージシステムの例のストレージノードのディスクＩ／Ｏ部のフローチャートである。
【図８】本発明の実施形態のマルチノードストレージシステムの別の例におけるストレージノードとストレージ装置の接続を示す図である。
【図９】本発明の実施形態のマルチノードストレージシステムの別の例におけるストレージノードの機能ブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について、図面を参照しながら説明をする。尚、図中で類似の部分または類似の機能を果たす部分については、同一または類似の参照符号を付与して重複した説明を省略する。
【００１８】
＜システムの構成＞
以下では、まず図１〜４を参照して、本発明の実施形態のマルチノードストレージシステム１０の例の構成について説明する。マルチノードストレージシステム１０は、所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶する。また、マルチノードストレージシステム１０は、通常のユーザから入力される命令を処理するユーザアクセス処理のほかに再配置処理およびパトロール処理を行う正常時と、ユーザアクセス処理のほかにリカバリ処理を行う障害発生時で外から見えるシステムの処理速度が変わらないシステムの例を提供する。
【００１９】
以下では「処理速度」なる用語は、単位時間あたりに処理されるＩ／Ｏトランザクション数、即ちスループットまたは１秒あたりのＩ／Ｏ（読み出し／書き込みの処理）の回数（ＩＯＰＳ）で定義される。２つの処理速度の和とは、２つの処理において単位時間あたりに処理されるＩ／Ｏトランザクションの数の和を意味する。即ち、単位時間当たりにｘ１個のトランザクションを処理する処理Ａと、単位時間当たりにｘ２個のトランザクションを処理する処理Ｂとがあったとき、処理Ａの処理速度と処理Ｂの処理速度の和とは、単位時間当たりに（ｘ１＋ｘ２）個のトランザクションを処理する速度である。すなわち、処理速度の和を取る演算は、処理としては並列処理を行うことに相当する。
【００２０】
また、以下では「障害」なる用語には、データの一部へのアクセスが出来なくなり、データの一部について冗長化された状態が壊れてしまうことが含まれる。
【００２１】
以下で説明されるマルチノードストレージシステム１０では、正常時の再配置処理およびパトロール処理を行う速度と、障害発生時のリカバリ処理を行う速度は同一である。実際の運用においては、正常時の再配置処理および／またはパトロール処理、または故障発生時のリカバリ処理を行う速度には若干の変動がある。以下に開示されるマルチノードストレージシステム１０では、正常時の再配置処理および／またはパトロール処理、または故障発生時のリカバリ処理を行う速度が所定の速度以下であっても、ユーザから入力された命令の処理であるユーザアクセス処理に余剰なリソースを転用せず、外から見えるシステムの処理速度が変わらないようにしている。また、正常時の再配置処理およびパトロール処理、または故障発生時のリカバリ処理の負荷が重ければ、再配置処理および／もしくはパトロール処理またはリカバリ処理をせずに、ユーザアクセス処理速度となるようにユーザアクセス処理を行う。このような構成を採用することによって、ユーザアクセス処理の処理速度を、常に一定に保つことができる。
【００２２】
図１は、本発明の実施形態のマルチノードストレージシステム１０の例を示す図である。図２は、図１に示されているマルチノードストレージシステム１０の例の一部を示す図である。本例のマルチノードストレージシステム１０では、ネットワーク５００に繋がるネットワークスイッチ１００を介して、複数のストレージノード装置（以下では、ノード装置を単にノードとして参照することがある。）２００ａ、２００ｂ、２００ｃ（以下では、代表的なストレージノード装置を２００として参照することがある。）が接続されている。ストレージノード装置２００ａ、２００ｂ、２００ｃのそれぞれには、ストレージ装置（単にディスクと呼ぶこともある）３００ａ、３００ｂ、３００ｃ（以下では、代表的なストレージ装置を３００として参照することがある。）が接続されている。本例では、図２に示されているように、ネットワークスイッチ１００に複数のストレージノード２００ａ、２００ｂ、２００ｃが接続される。
【００２３】
ストレージ装置３００ａ、３００ｂ、３００ｃのそれぞれは、データを格納するためのハードディスク装置（ＨＤＤ）を含んでいる。本例では、データを格納する媒体としてハードディスク装置を用いているが、データを格納する媒体であればハードディスク装置に限定されない。ＨＤ−ＤＶＤなどの光ディスクでも良い。
【００２４】
マルチノードストレージシステム１０のストレージ装置３００ａ、３００ｂ、３００ｃは、データを実際に格納する。ストレージ装置３００ａ、３００ｂ、３００ｃに格納されたデータを管理し、管理しているデータをネットワークスイッチ１００に送る。ストレージ装置３００ａ、３００ｂ、３００ｃに格納されているデータは冗長化されている。冗長構成では、データの安全性等を改善するために、複数の論理デバイスに同一のデータをそれぞれ記憶させる冗長化が行われる。
【００２５】
マルチノードシステム１０では、仮想ストレージ装置を介してデータへのアクセスが行われる。このとき、仮想ストレージ装置内の記憶領域とストレージ装置３００ａ、３００ｂ、３００ｃ内の記憶領域との割り当てはメタデータによって管理される。仮想ストレージ装置は、セグメントという単位で構成される。セグメントの記憶容量は、ストレージ装置３００ａ、３００ｂ、３００ｃにおける管理単位であるスライスの記憶容量と同じ意である。たとえば、スライスの記憶容量が１ギガバイトであれば、スライスの記憶容量も１ギガバイトである。仮想ストレージ装置の記憶容量は、セグメントの記憶容量の整数倍である。
【００２６】
ストレージ装置３００ａ、３００ｂ、３００ｃのそれぞれに格納される情報は、デバイスに関する情報と、スライスに関する情報を格納するメタデータと、セグメントに対応付けられるスライスのデータとを含む。スライスは、１つのセグメントに対し、プライマリスライスとセカンダリスライスの２つが割り当てられ、冗長度２となるように冗長化がされている。プライマリスライスは、ストレージノード２００ａ、２００ｂ、２００ｃからのアクセス先に指定され、セグメントのデータを格納する。セカンダリスライスは、プライマリスライスのデータと同一のデータを格納する、すなわちミラーリングされる。ネットワークスイッチ１００は、スライスをどのセグメントに対応させるか、プライマリスライスまたはセカンダリスライスのどちらにするか等を動的に設定することができる。冗長化されたストレージ装置では、読み出し要求に対しては、プライマリスライスのデータを読み出す。書き込み要求に対しては、ミラーリングを行ってセカンダリスライスにデータを書き込んだ後、プライマリスライスにデータが書き込まれる。
【００２７】
ネットワークスイッチ１００はネットワーク４００および複数のストレージノード２００ａ、２００ｂ、２００ｃと接続されている。ネットワークスイッチ１００は、ストレージノード２００ａ、２００ｂ、２００ｃを管理するノード管理処理を行う。たとえば、ネットワークスイッチ１００は、ストレージノード２００ａ、２００ｂ、２００ｃからノードに新たなストレージ装置が接続された旨の通知を受け取ると、新たな仮想ストレージ装置を定義し、新たに接続されたストレージ装置にデータを収納したり、収納されているデータにアクセスすることを可能にする。
【００２８】
また、ネットワークスイッチ１００には、ネットワーク４００を介して複数の端末装置５００、６００、７００が接続されている。ネットワークスイッチ１００は、端末装置５００、６００、７００に入力されたユーザの仮想ストレージ装置へのアクセスの要求に応答して、ストレージ装置３００ａ、３００ｂ、３００ｃに収納された対応するデータにアクセスをする。
【００２９】
図３に示されているように、ネットワークスイッチ１００は、メンテナンス処理速度決定部１００２を含んでいる。メンテナンス処理とは、複数のストレージ装置３００ａ、３００ｂ、３００ｃが正常に動作していることを確認するパトロール処理と、複数のストレージ装置３００ａ、３００ｂ、３００ｃの間で前記データを移動する再配置処理と、複数のストレージ装置３００ａ、３００ｂ、３００ｃに障害が発生して、前記データの一部へのアクセスが出来なくなり、前記データの一部について冗長化された状態が壊れてしまったときに、前記データの前記冗長度を回復するリカバリ処理の総称である。
【００３０】
メンテナンス処理速度決定部１００２は、後述するリカバリ処理時の性能を見積もるため、想定される典型的なアクセスパターンとリカバリ相当のアクセスを同時にかけ、性能を調べる。例えば、1つの入出力（Ｉ／Ｏ）サイズを４ＫｉＢとしてランダム読み出し、ランダム書き込みの混合パターンで読み出し、書き込みを行ったときの１秒あたりの読み出し／書き込みの処理の回数（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｐｅｒ  Ｓｅｃｏｎｄ、ＩＯＰＳ）を調査する。一般に、ケビバイトは、計算機の容量や記憶装置の大きさを表す単位で、１ＫｉＢは１０２４Ｂ、１ＭｉＢは１，０４８，５７６Ｂである。または、スループットを変えながらシーケンシャルに読み出し、書き込みを行ったときの１秒あたりの読み出し／書き込みの処理の回数（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｐｅｒ  Ｓｅｃｏｎｄ、ＩＯＰＳ）を調査する。１秒あたりのＩ／Ｏ（読み出し／書き込みの処理）の回数（ＩＯＰＳ）は、処理速度として用いられる。この処理速度の測定は、システム１０の稼動前に行われることが好ましい。しかしながら、システム１０の稼働中に、ストレージ装置が増えたり減ったりすることがある。そのような場合には、マルチノードストレージシステム１０の構成に変更があった場合に、処理速度の測定が行われても良い。
【００３１】
また、メンテナンス処理速度決定部１００２は、事前準備における処理速度の測定結果と機器の信頼性情報をもとに、メンテナンス処理速度を決定する。例えば、データが２以上の冗長度を有して保持されているとき、システム規模におけるストレージノード２００ａ、２００ｂ、２００ｃの平均故障間隔がＸ１秒、ノードの容量がＳメビバイトのとき、リカバリ速度をＳ／Ｔ［ＭｉＢ／秒］以上にする。このスループットでメンテナンス処理速度決定部１００２からストレージ装置３００ａ、３００ｂ、３００ｃに対して、シーケンシャルＩ／Ｏを行ったときのランダムＩ／ＯのＩＯＰＳが許容範囲内であれば、これをメンテナンス処理速度とする。
【００３２】
または、事前準備での測定結果だけをもとに、ユーザに見えるＩＯＰＳが所定の数値となるようにメンテナンス処理速度を設定しても良い。この場合、ランダムＩ／ＯのＩＯＰＳがＹ１だったときのシーケンシャルＩ／Ｏのスループットをメンテナンス処理速度とする。
【００３３】
または、ユーザアクセスのＩ／Ｏサイズ分布が事前に分かる場合、シーケンシャルI/Oの回数を測定した結果と組み合わせて、メンテナンス処理速度を決定しても良い。
【００３４】
また、メンテナンス処理速度を決定する方法として、保証されている修理期間を使うことも考えられる。例えば修理期間がＴ[秒]以内に行われることが保証されているおり、ノードの容量がＳメビバイトのとき、メンテナンス処理速度をリカバリ速度をＳ／Ｔ［ＭｉＢ／秒］以上にしても良い。
【００３５】
端末装置５００、６００、７００のいずれかが管理ノードであっても良い。管理ノードは、マルチノードストレージシステム１０の全体を管理するために管理者が使用する端末である。たとえば、管理ノードでは、ストレージ装置３００ａ、３００ｂ、３００ｃの使用状況や動作状況などの情報を収集し、管理者に表示をする。管理者は、表示された情報を参照し、たとえば、リカバリ処理が必要なストレージ装置を見つけた場合には、そのストレージ装置のリカバリ処理を行うように管理ノードに入力をする。管理ノードからは、ネットワークスイッチ１００を介して、そのストレージ装置にリカバリ処理を行う要求が送信される。
【００３６】
図３は、本発明の実施形態のマルチノードストレージシステムの例のストレージノード２００の機能ブロック図である。ストレージノード２００は、ネットワーク入出力（Ｉ／Ｏ）部２００２、ユーザアクセス処理部２００４、データ管理部２００６、ディスク入出力（Ｉ／Ｏ）部２０１６を含んでいる。データ管理部２００６は、さらに、リカバリ部２００８と、パトロール部２０１０、再配置部２０１２を含んでいる。また、ディスク入出力（Ｉ／Ｏ）部２０１６は、処理速度制御部２０１４を含んでいる。
【００３７】
ネットワーク入出力（Ｉ／Ｏ）部２００２は、ネットワークスイッチ１００に接続されている。ネットワーク入出力（Ｉ／Ｏ）部２００２は、ネットワークスイッチ１００を介して、他のストレージノードまたはネットワーク４００に接続されているコンピュータとの間でデータの送受信を行う。
【００３８】
ユーザアクセス処理部２００４は、ネットワーク入出力（Ｉ／Ｏ）部２００２が受信した、端末５００、６００、７００からユーザによって入力された、データにアクセスをする要求を処理する。データへのアクセス要求には、データの読み出しの要求、データを書き込む要求が含まれる。
【００３９】
また、ユーザアクセス処理部２００４は、ユーザからのデータへのアクセス要求に伴う処理の速さをユーザアクセス処理速度として測定する。さらに測定されたデータをデータ管理部２００６に送信する。ユーザアクセス処理速度は、スループットであっても良い。ユーザアクセス処理速度は、応答時間に基づいて決定しても良い。応答時間は一般には、ＩＯＰＳの逆数として定義される。応答時間を測定するには、ユーザからのデータへのアクセス要求に応答して、ユーザアクセス処理部２００４は、ディスクＩ／Ｏ部２０１６に読み出しコマンド／書き込みコマンド（Ｉ／Ｏ）を発行する。発行した読み出しコマンド／書き込みコマンドに対する応答が返ってくるまでの時間を応答時間として測定する。通常、応答時間は、平均シークタイム、平均回転待ち時間およびデータ転送時間の和として定義される。
【００４０】
データ管理部２００６では、システムの平常時に、ユーザからストレージ装置３００に収納されているデータへのアクセスの要求があるかどうかに関わらず、所定の速度でディスク３００のメンテナンスのためのメンテナンス処理を行う。ここで、メンテナンス処理とは、再配置処理、パトロール処理、リカバリ処理を含む。データ管理部２００６は、再配置処理を行うための再配置処理部２００８、パトロール処理を行うためのパトロール処理部２０１０、およびリカバリ処理を行うためのリカバリ処理部２０１２を含む。
【００４１】
再配置処理とは、ストレージ装置３００ａ、３００ｂ、３００ｃに収納されているデータを分散して、ストレージノード２００ａ、２００ｂ、２００ｃの負荷を分散させたり、ストレージ装置３００ａ、３００ｂ、３００ｃの使用量を均等化させるために、ストレージ装置３００ａ、３００ｂ、３００ｃの間でデータを移動する処理を指す。
【００４２】
再配置処理を行うためには、データへのアクセスの統計に関する情報が必要である。この処理はネットワークスイッチ１００によって行われる。ネットワークスイッチ１００は、所定のタイミングになると、各ストレージノード２００ａ、２００ｂ、２００ｃからアクセスの統計に関するアクセス統計情報を収集する。アクセス統計情報は、ストレージノード２００ａ、２００ｂ、２００ｃのそれぞれが管理するストレージ装置３００ａ、３００ｂ、３００ｃに対する所定の時間あたりのアクセス数である。
【００４３】
ネットワークスイッチ１００は、収集したアクセス統計情報に基づいて、適切なデータ配置を決定する。データの再配置は、処理効率を向上させるために行われる場合と、省電力化ために行われる場合がある。処理効率の向上のための再配置処理では、ネットワークスイッチ１００は、各ストレージ装置３００ａ、３００ｂ、３００ｃへのアクセスが均等になるように、データを再配置する。すなわち、ネットワークスイッチ１００は、所定の時間あたりの各ストレージ装置３００ａ、３００ｂ、３００ｃへのアクセス数が均等となるようにデータの再配置を行うように、ストレージノード２００ａ、２００ｂ、２００ｃに指示する。
【００４４】
省電力化のための再配置処理では、ネットワークスイッチ１００は、収集したアクセス統計情報に基づいて、データの再配置を行ったときに各ストレージ装置３００ａ、３００ｂ、３００ｃに対して、所定の時間にわたりアクセスがない確率を計算する。そして、ネットワークスイッチ１００は、考え得るデータの配置パターンのうち、所定の時間内にいずれかのストレージ装置３００ａ、３００ｂ、３００ｃにアクセスが発生しない期待値が最も大きくなる配置パターンを決定する。そして、ネットワークスイッチ１００は、決定した配置パターンでデータが配置されるように、ストレージノード２００ａ、２００ｂ、２００ｃにデータの再配置を指示する。
【００４５】
パトロール処理とは、データの保全性を確認するために、ストレージ装置３００ａ、３００ｂ、３００ｃが正常に動作していることを確認するための処理である。具体的には、仮想ストレージ装置を介して、ストレージ装置３００ａ、３００ｂ、３００ｃのある領域に記憶されているデータを一旦読み出した後、読み出したデータを、このデータが記憶されていた領域に対して書き込む。パトロール処理には、書き込み後に、エラーが生じていないかをチェックするための突き合わせ処理も含まれる。また、データは冗長化されているので、同一のデータを持っているストレージ装置３００ａ、３００ｂ、３００ｃ同士でデータを読み出し、突き合わせを行う処理も含まれる。このパトロール処理では、ストレージ装置３００ａ、３００ｂ、３００ｃへのアクセスが発生する。また、エラーの有無を判定するチェックのための突き合わせ処理は、自体はハッシュ値を使えば行うことができ、よって、ネットワーク負荷は低い。
【００４６】
リカバリ処理とは、ストレージ装置３００ａ、３００ｂ、３００ｃに障害が発生して、装置に格納されているデータの一部へのアクセスが出来なくなり、データの一部について冗長化された状態が壊れてしまったときに実行される、データの冗長度を回復するための処理である。リカバリ処理では、ネットワークスイッチ１００によって、所定の冗長度を有する状態ではなくなったデータの部分に対して、新たなストレージ装置の部分を割り当てる。そして、障害によってアクセスが出来なくなったストレージ装置の部分に収納されていたデータと同一のデータを、新たに割り当てられたストレージ装置の部分にコピーをして、冗長度を回復する。
【００４７】
リカバリ処理では、ネットワークスイッチ１００は、まずストレージ装置３００ａ、３００ｂ、３００ｃに障害が発生していないかどうかを判定する。
【００４８】
障害が発生しているか否かを判定する手段としては、たとえば、ネットワークスイッチ１００から障害検出のための検査コマンドを送信し、それに対するストレージ装置からの応答が返ってくるまでの時間に基づいて判定する方法がある。この方法では、ネットワークスイッチ１００は、あるストレージ装置３００ａ、３００ｂ、３００ｃに検査コマンドを送信し、それに対する応答を受けるまでの応答時間Ｔを計測する。そして、この時間Ｔが、予め設定された時間Ｔ１より長いか否かを判定し、応答時間Ｔが時間Ｔ１より長ければ、そのストレージ装置には障害が発生したと判定する。送信された検査コマンドに対する応答が返ってくるまでの時間の大きさの基準となる時間Ｔ１はたとえば、１秒、５秒、３０秒、１分などである。本例では、障害が発生したか否かの判定は、１つの検査コマンドに対する応答を受けるまでの応答時間に基づいて行っているが、検査コマンドを複数回送り、複数の応答時間を測定し、それに基づいて判定をしても良い。このような判定が有効であるのは、たとえば、次のような理由による。すなわち、データの再配置処理中に検査コマンドがストレージ装置に入力されると、応答に通常より長い時間が掛かることがあるからである。このような場合には、ネットワークスイッチ１００は、所定の時間間隔で複数回、検査コマンドをストレージ装置に送信し、それらの応答時間がいずれも予め設定された時間Ｔ１より長い場合に、そのストレージ装置には障害が発生したと判定しても良い。
【００４９】
検査コマンドとしては、ストレージ装置３００ａ、３００ｂ、３００ｃがｔｅｓｔ  ｕｎｉｔ  ｒｅａｄｙコマンドをサポートしていれば、このコマンドを検査コマンドとして用いても良い。
【００５０】
ストレージ装置３００ａ、３００ｂ、３００ｃに障害が発生したと判定された場合、ネットワークスイッチ１００は、障害が発生したストレージ装置に読み出し要求を送信する。このとき、ストレージ装置には障害が発生しているので、ストレージ装置へのアクセスはエラーとなる。読み出し要求の場合には、プライマリスライスを有するストレージ装置に障害（故障または過負荷）がある場合にエラーとなる。ネットワークスイッチ１００からの読み出し要求に対してエラーとなったセグメント（エラーセグメント）に関する情報を取得する。そして、ネットワークスイッチ１００は、そのエラーセグメントへのスライスの再割り当てをする。つまり、ネットワークスイッチ１００は、障害があるセグメントに割り当てられたスライス（プライマリスライスとセカンダリスライス）のメタデータを参照する。そのスライスを有するストレージ装置が障害が生じた装置である場合には、エラーセグメントのリカバリ処理が開始される。
【００５１】
リカバリ処理では、まず、エラーセグメントへの再割り当てを行う。たとえば、エラーセグメントのプライマリスライスを有するストレージ装置に障害が生じていれば、プライマリスライスの再割り当てが行われる。この場合、プライマリスライスは、エラーセグメントのセカンダリスライスが割り当てられているストレージ装置３００ａ、３００ｂ、３００ｃ以外のストレージ装置で管理されるスライスのうち、空いているスライスに再割り当てされる。空いているスライスが決定すると、それまでセカンダリスライスであったスライスをプライマリスライスに、空いているスライスをセカンダリスライスにメタデータを変更する。そして、エラーセグメントに対する二重化状態回復のためのデータコピーが行われる。
【００５２】
リカバリ処理部２００８は、ストレージ装置３００ａ、３００ｂ、３００ｃのいずれかに障害が発生した際に、ユーザからのアクセスがあるかどうかに関わらず、ネットワークスイッチ１００のメンテナンス処理速度決定部１００２で決定したメンテナンス処理速度で、リカバリ処理を行う。障害が発生したか否かは、パトロール処理部２０１０によって判定される。
【００５３】
メンテナンス処理速度制御部２０１４は、平常時、ユーザからのアクセスがあるかどうかに関わらず、ネットワークスイッチ１００のメンテナンス処理速度決定部１００２で決定したメンテナンス処理速度で再配置処理および／またはパトロール処理を行う。具体的には、再配置処理および／またはパトロール処理に関わるストレージ装置のＩ／Ｏ、ネットワークＩ／Ｏを含むＩ／Ｏ処理の処理速度がメンテナンス処理速度決定部１００２で決定したメンテナンス処理速度となるように、帯域を制限しつつ再配置処理とパトロール処理を行う。ここで、または以下で用いられる場合の「帯域」とは、単に処理速度であっても良い。
【００５４】
また、メンテナンス処理速度制御部２０１４は、パトロール処理部２０１０が障害を検出すると、リカバリ処理が必要なストレージ装置３００ａ、３００ｂ、３００ｃは平常時に行っていた再配置処理および／またはパトロール処理を停止して、設定されたメンテナンス処理速度に帯域を制限した状態でリカバリ処理を行う。
【００５５】
平常時は、例えば、ストレージ装置３００ａ、３００ｂ、３００ｃにデータが書き込まれてから一定以上の時間が経過したものがある場合にはパトロール処理を行い、そうでなければ再配置処理を行っても良い。または、ストレージ装置３００ａ、３００ｂ、３００ｃの使用率または、負荷、たとえば単位時間あたりのストレージ装置３００ａ、３００ｂ、３００ｃへのアクセス数が一定の基準以上である場合には再配置処理を行い、そうでなければパトロール処理を行っても良い。
【００５６】
メンテナンス処理速度制御部２０１４は、パトロール処理部２０１０が複数のストレージ装置３００ａ、３００ｂ、３００ｃが正常に動作していると判定したときには再配置処理および／またはパトロール処理を行うように再配置処理部２０１２および／またはパトロール処理部２０１０に、正常に動作していないと判定したときにはリカバリ処理を行うようにリカバリ処理部２００８に指示をする。
【００５７】
パトロール処理において、たとえば二重化されたデータの整合性をチェックする際には、二重化されたそれぞれのデータを保持するストレージノード２００ａ、２００ｂ、２００ｃがネットワークスイッチ１００を介して互いに通信する。二重化されたデータを保持する一方のストレージノードで管理されているデータで不具合が検出されれば、他方のストレージノードの対応するデータを用いてリカバリ処理が行われる。
【００５８】
ディスク入出力（Ｉ／Ｏ）部２０１６は、ストレージ装置３００ａ、３００ｂ、３００ｃに接続されている。ディスク入出力（Ｉ／Ｏ）部２０１６は、ストレージ装置３００ａ、３００ｂ、３００ｃに内蔵された入出力インターフェイスと通信し、ストレージ装置３００ａ、３００ｂ、３００ｃに対するデータの入出力を行う。
【００５９】
また、ディスクＩ／Ｏ部２０１６では、常時、障害時に関わらず、ユーザアクセス処理とメンテナンス処理を並行して行う。その際、外から見えるシステムの処理速度が一定となるように、帯域を調整しながら処理を行う。
【００６０】
ストレージ装置３００ａ、３００ｂ、３００ｃが複数のＨＤＤを含み、ＲＡＩＤ  ０〜５を用いて構成されていている、またはＲＡＩＤ以外の技術を用いてディスクアレイが構成されている場合、ディスク入出力（Ｉ／Ｏ）部２０１６は、複数のＨＤＤをまとめて１台のＨＤＤとして管理する。
【００６１】
また、ディスク入出力（Ｉ／Ｏ）部２０１６は、メンテナンス処理速度制御部２０１４と連動して、メンテナンス処理速度の変動に応じて、メンテナンス処理の負荷を調整し、外から見えるシステムの処理速度が一定となるようにする。
【００６２】
つまり、ディスクＩ／Ｏ部２０１６は、ユーザアクセス処理速度とパトロール速度と再配置処理速度とリカバリ処理速度の和が所定の値となるように調整する処理速度制御部として動作する。すなわち、メンテナンス処理のスループット（メンテナンス処理速度）が所定の値より小さいときには、メンテナンス処理を実行し、ユーザアクセス処理は実行されない。また、メンテナンス処理のスループット（メンテナンス処理速度）が所定の値より小さくないときには、メンテナンス処理を一時的に中断する、または処理速度を落として、所定のユーザアクセス処理速度で、ユーザアクセス処理を行う。
【００６３】
図４は、本発明の実施形態のマルチノードストレージシステムの例のストレージノードのハードウェア構成例を示す図である。
【００６４】
ストレージノード２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０２によって全体が制御される。ＣＰＵ２０２には、バス２１４を介してメモリ２０４、ディスクＩ／Ｏ部２０６、グラフィック処理装置２０８、入力インターフェイス２１０、およびネットワークＩ／Ｏ部２１２が接続されている。
【００６５】
メモリ２０４には、ＣＰＵ２０２に実行させるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のプログラムやアプリケーションプログラムの少なくとも一部が格納される。また、メモリ２０４には、ＣＰＵ２０２による処理に必要な各種データが収納される。
【００６６】
ディスクＩ／Ｏ部２０６には、ストレージ装置３００が接続されている。ディスクＩ／Ｏ部２０６は、図３に示されているディスク入出力（Ｉ／Ｏ）部２０１６と同一または同様の機能を有する。
【００６７】
グラフィック処理装置２０８は、ストレージノード２００に直接的に外部モニタが接続されるときに用いられる。本実施例では、外部モニタは接続されていないが、システム１０の保守、管理などで一時的にストレージノード２００に接続されることがある。グラフィック処理装置２０８は、ＣＰＵ２０２からの命令にしたがって、画像を外部モニタに表示させる。
【００６８】
入出力インターフェイス２１０は、ストレージノード２００に直接的にキーボード、マウス等の入力デバイスが接続されるときに用いられる。入出力インターフェイス２１０は、入力デバイスから送られてくるユーザによる入力に関する情報を、ＣＰＵに転送する。
【００６９】
ネットワークＩ／Ｏ部２１２には、ネットワークスイッチ１００が接続されている。ネットワークＩ／Ｏ部２１２は、図３に示されているネットワークＩ／Ｏ部２００２と同一または同様の機能を有する。
【００７０】
ユーザアクセス処理部２００４とディスクＩ／Ｏ部２０１６は、複数のストレージ装置３００ａ、３００ｂ、３００ｃのいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理をユーザアクセス処理速度で行うユーザアクセス処理部を構成する。
【００７１】
データ管理部２００６のパトロール処理部２０１０とメンテナンス速度制御部２０１４、それにディスクＩ／Ｏ部２０１６は、複数のストレージ装置３００ａ、３００ｂ、３００ｃが正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理部を構成する。
【００７２】
データ管理部２００６の再配置処理部２０１２とメンテナンス速度制御部２０１４、それにディスクＩ／Ｏ部２０１６は、複数のストレージ装置３００ａ、３００ｂ、３００ｃの間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理部を構成する。
【００７３】
データ管理部２００６のリカバリ処理部２００８とメンテナンス速度制御部２０１４、それにディスクＩ／Ｏ部２０１６は、複数のストレージ装置３００ａ、３００ｂ、３００ｃのいずれかに障害が発生した場合に、データの冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理部を構成する。
【００７４】
以上のようなハードウェア構成によって、マルチノードストレージシステムのノード装置であって、通常のユーザから入力される命令のほかに再配置処理およびパトロール処理を行う正常時と、通常のユーザから入力される命令のほかにリカバリ処理を行う障害発生時で外から見えるシステムの処理速度が変わらないシステムを実現することができる。
【００７５】
＜ストレージノードにおける処理＞
次に、図５〜７を参照して、ストレージノード（ノード装置）２００の処理について説明する。
【００７６】
以下ではユーザからのアクセスを処理するスレッドと再配置処理、パトロール処理、またはリカバリ処理を行うスレッドが並行して動作している場合の処理について説明する。つまり、図３に示されているストレージノード２００のユーザアクセス処理部２００４とデータ管理部２００６は並行して動作する。図５は、マルチノードストレージシステム１０のストレージノード２００のユーザアクセス処理部２００４の処理を示すフローチャートである。図６は、マルチノードストレージシステム１０のストレージノード２００のデータ管理部２００６の処理を示すフローチャートである。図５および図６のフローチャートでは開始と終了があるが、実際には、図５および図６に示されている処理は、繰り返し行われる。
【００７７】
図５を参照しながら、ユーザアクセス処理部２００４の処理について説明する。
Ｓ１０２では、端末５００、６００、７００で受けたユーザによるデータへのアクセス要求を、ネットワーク４００、ネットワークスイッチ１００を介して受け付ける。データへのアクセス要求は、データの読み出しの要求またはデータの書き込みの要求を含む。
【００７８】
Ｓ１０２の次のＳ１０４では、Ｓ１０２で受けたデータへのアクセス要求に反応して、仮想ストレージ装置を構成するストレージ装置３００ａ、３００ｂ、３００ｃに格納されているデータへのアクセス要求をディスクＩ／Ｏ部２０１６に発行する。
【００７９】
次に、Ｓ１０６では、Ｓ１０４で発行したアクセス要求に対するストレージ装置３００ａ、３００ｂ、３００ｃからの応答を、ストレージノード２００ａ、２００ｂ、２００ｃおよびディスクＩ／Ｏ部２０１６を介して取得する。
【００８０】
Ｓ１０６では、発行したアクセス要求に対する応答が返ってくるまでの時間を応答時間として測定しても良い。この応答時間を用いてユーザアクセス処理速度を得ることができる。
【００８１】
Ｓ１０８では、Ｓ１０６で取得した、ストレージ装置３００ａ、３００ｂ、３００ｃに格納されているデータへのアクセス要求に対する応答を、ネットワークＩ／Ｏ部２００２、ネットワークスイッチ１００、ネットワーク４００を介して、端末５００、６００、７００に送る。
【００８２】
上記Ｓ１００〜Ｓ１０６は、複数のストレージ装置３００ａ、３００ｂ、３００ｃのいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理をユーザアクセス処理速度で行うユーザアクセスステップを構成する。
【００８３】
次に、図６を参照しながら、データ管理部２００６の処理を説明する。データ管理部２００６では、メンテナンス処理が行われる。
【００８４】
Ｓ２００では、リカバリ処理が必要であるかどうかを判定する。メンテナンス処理速度制御部２０１４は、パトロール処理部２０１０が障害を検出すると、設定されたメンテナンス処理速度に帯域を制限した状態でリカバリ処理を行うようにリカバリ処理部２００８に指示をする。もし、Ｓ２００での判定がＹｅｓ、すなわちリカバリ処理が必要であれば、Ｓ２０２に進む。もし、Ｓ２００での判定がＮｏ、すなわちリカバリ処理が必要でなければ、Ｓ２０４に進む。
【００８５】
即ち、メンテナンス処理速度制御部２０１４は、前記パトロール処理部が前記複数のストレージ装置３００ａ、３００ｂ、３００ｃが正常に動作していると判定したときには再配置処理および／またはパトロール処理を行い、正常に動作していないと判定したときにはリカバリ処理を行うように指示をする。
【００８６】
Ｓ２０２では、リカバリ処理が行われる。この処理はリカバリ処理部２００８によって行われる。リカバリ処理部２００８は、設定されたメンテナンス処理速度に帯域を制限した状態でリカバリ処理を行う。Ｓ２０２は、複数のストレージ装置３００ａ、３００ｂ、３００ｃに障害が発生して、前記データの一部へのアクセスが出来なくなり、前記データの一部について冗長化された状態が壊れてしまったときに、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理ステップを構成する。
【００８７】
Ｓ２０４では、再配置またはパトロール処理が行われる。前述のように、メンテナンス処理速度制御部２０１４は、平常時、ユーザからのアクセスがあるかどうかに関わらず、ネットワークスイッチ１００のメンテナンス処理速度決定部１００２で決定されたメンテナンス処理速度で再配置処理および／またはパトロール処理を行うように再配置処理部２０１２および／またはパトロール処理部２０１０に指示を出す。具体的には、再配置処理および／またはパトロール処理に関わるストレージ装置のＩ／Ｏ、ネットワークＩ／Ｏを含むＩ／Ｏ処理の処理速度がメンテナンス処理速度決定部１００２で決定したメンテナンス処理速度となるように、帯域を制限しつつ再配置処理とパトロール処理を行う。
【００８８】
Ｓ２０４は、複数のストレージ装置３００ａ、３００ｂ、３００ｃが正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理ステップ、および複数のストレージ装置３００ａ、３００ｂ、３００ｃの間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理ステップを構成する。
【００８９】
データ管理部２００６では、システムの平常時に、ユーザからストレージ装置３００に収納されているデータへのアクセスの要求があるかどうかに関わらず、所定の速度でディスク３００のメンテナンスのためのメンテナンス処理を行う。
【００９０】
次に、図７を参照して、ディスクＩ／Ｏ部２０１６の処理を説明する。ディスクＩ／Ｏ部２０１６では、常時、障害時に関わらず、ユーザアクセス処理とメンテナンス処理が、メンテナンス処理速度決定部１００２で決定されたメンテナンス処理速度で処理されるように、帯域を調整する。
【００９１】
図７に示されているのは、メンテナンス処理に関わる部分である。図７に示されている処理と並行して、ユーザアクセス処理が行われる。
本例では、スループットを処理速度として用いている。
【００９２】
Ｓ３００では、過去の一定期間のメンテナンス処理速度（メンテナンス処理のスループット）の統計を取得する。さらに、Ｓ３００では、取得した統計から過去の一定期間におけるメンテナンス処理速度を決定する。このときのメンテナンス処理速度は、過去の一定期間におけるメンテナンス処理速度の平均値であっても良い。そして、Ｓ３０２に進む。
【００９３】
Ｓ３０２では、Ｓ３００で計測されたメンテナンス処理速度の値が所定の値を下回っているかどうかを判定する。もし、この判定の結果がＹｅｓ、すなわちメンテナンス処理速度が所定の値を下回っていればＳ３０４に進む。判定の結果がＹｅｓの場合の例は、すなわち、メンテナンス処理に係るスループットが所定の値より小さい場合である。また、この判定の結果がＮｏ、すなわちメンテナンス処理速度が所定の値を下回っていなければＳ３０６に進む。判定の結果がＮｏの場合の例は、すなわち、メンテナンス処理に係るスループットが所定の値より大きい場合である。このときは、ユーザアクセス処理速度が、所定の値より低下している可能性がある。
【００９４】
Ｓ３０４では、図６に示されているメンテナンス処理を行う。具体的には、図６に示されていように、リカバリ処理、再配置処理、またはパトロール処理を行う。つまり、この場合では、メンテナンス処理速度が所定の値を下回っているので、メンテナンス処理を実行しても、その処理の実行が、ユーザアクセス処理速度に対して影響を与えることがない。
【００９５】
Ｓ３０６では、ユーザアクセスがあるかどうかを判定する。もし、この判定の結果がＹｅｓ、すなわちユーザアクセスがあればＳ３０８に進む。また、この判定の結果がＮｏ、すなわちユーザアクセスがなければ処理を終了する。
【００９６】
Ｓ３０８では、ユーザアクセス処理を行い、ユーザに見える性能が変わらないようにする。
【００９７】
Ｓ３００〜Ｓ３０８は、パトロール処理速度と再配置処理速度の和またはリカバリ処理速度が所定の値となるように調整する処理速度制御ステップを構成する。このような処理を行うことによって、通常のユーザから入力される命令を処理を行うユーザアクセス処理のほかに再配置処理およびパトロール処理を行う正常時と、ユーザアクセス処理のほかにリカバリ処理を行う障害発生時で、ユーザアクセス速度を同一の値に保つことができる。
【００９８】
上記の処理では、メンテナンス処理のスループット（メンテナンス処理速度）が所定の値より小さいときには、メンテナンス処理が実行され、ユーザアクセス処理は実行されない。
【００９９】
また、上記の処理では、メンテナンス処理のスループット（メンテナンス処理速度）が所定の値より小さくないときには、ユーザアクセス処理を行い、ユーザに見える性能が変わらないようにしている。
【０１００】
このように、本実施形態では、過去の一定期間のメンテナンス処理のスループットを計測し、そのスループットの値が所定の値を下回った場合であっても、ユーザアクセス処理は行わず、ユーザに見える性能が変わらないようにしている。
【０１０１】
このような構成によって、通常のユーザから入力される命令の処理を行うユーザアクセス処理のほかに再配置処理およびパトロール処理を行う正常時と、ユーザアクセス処理のほかにリカバリ処理を行う障害発生時で外から見えるシステムの処理速度が変わらないシステムを実現することができる。これによって、障害が発生した際に、ユーザアクセス性能の低下を防ぐことができる。また、障害時、すなわちメンテナンス処理時にもユーザに見える性能低下がなく、ユーザのシステム設計が容易になる。
【０１０２】
＜変形例＞
図８を参照して、上記実施形態の変形例について説明する。
【０１０３】
図８はマルチノードストレージシステムのストレージノードの別の例とストレージ装置の接続を示す図である。
本例においては、先の例のネットワークスイッチ１００が存在せず、ノード装置８００ａ、８００ｂ、８００ｃ（以下では、代表的なノード装置を８００として参照することがある）は隣接ノード装置同士が直接的に接続されている。
【０１０４】
以下では、ノード装置を単にノードとして参照することがある。
図９は、本発明の実施形態のマルチノードストレージシステムの別の例におけるストレージノード８００の機能ブロック図である。
【０１０５】
すなわち、ノード装置８００ａ、８００ｂ、８００ｃは、ネットワークＩ／Ｏ部８００２と、ユーザアクセス処理部２００４と、データ管理部２００６と、メンテナンス処理速度決定部８００４と、ディスクＩ／Ｏ部２０１６を含む。
【０１０６】
ネットワークＩ／Ｏ部８００２は、ネットワークＩ／Ｏ部２００２の機能に加えて、ネットワークスイッチ１００のメンテナンス処理速度決定部以外の機能を有する。
【０１０７】
ネットワークＩ／Ｏ部８００２は、たとえば、別のストレージノードからノードに新たなストレージ装置が接続された旨の通知を受け取ると、新たな仮想ストレージ装置を定義し、新たに接続されたストレージ装置にデータを収納したり、収納されているデータにアクセスすることを可能にする。
【０１０８】
メンテナンス処理速度決定部８００４では、他のノードのメンテナンス処理速度決定部と通信して、各ノードで決定された速度の最大値としてメンテナンス処理速度を決定する。そのようにして決定されたメンテナンス処理速度は、各ノード８００ａ、８００ｂ、８００ｃで共有される。
【０１０９】
データ管理部２００６は、リカバリ処理部２００８と、パトロール処理部２０１０と、再配置処理部２０１２と、メンテナンス処理速度制御部２０１４を含む。これら各部の処理は上記実施形態のものと同一である。
【０１１０】
各ストレージノードのメンテナンス処理速度決定部８００４は、接続されている他のストレージノードのメンテナンス処理速度決定部８００４から、各ストレージノードで決定されたメンテナンス処理速度を受け、それらの和の値を基に決定されたメンテナンス処理速度を共有する。
【０１１１】
図９では、メンテナンス処理速度決定部８００２は、ユーザアクセス処理部２００４とデータ管理部２００６に接続されているが、必ずしもこのような配置に限定されない。
【０１１２】
このような構成でも、正常時の再配置処理およびパトロール処理を行う速度と、障害発生時のリカバリ処理を行う速度を同一とすることができる。これによって、障害が発生した際に、ユーザアクセス性能の低下を防ぐことができる。また、障害時、すなわちメンテナンス処理時にもユーザに見える性能低下がなく、ユーザのシステム設計が容易になる。
【０１１３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶するストレージシステムにおける前記複数のストレージ装置を管理するストレージ管理装置であって、
前記複数のストレージ装置が正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理部と、
前記複数のストレージ装置の間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理部と、
前記複数のストレージ装置に障害が発生した場合に、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理部と、
前記パトロール処理速度と前記再配置処理速度の和または前記リカバリ処理速度が所定の値となるように前記パトロール処理部、前記再配置処理部、および前記リカバリ処理部における動作を指示する処理速度制御部（２０１４）と、
を含む装置。
（付記２）
さらに、前記複数のストレージ装置のいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理を所定のユーザアクセス処理速度で行うユーザアクセス処理部と、
を含む、付記１に記載の装置。
（付記３）
前記処理速度制御部は、前記パトロール処理部が前記複数のストレージ装置が正常に動作していると判定したときには前記再配置処理および／またはパトロール処理を行い、正常に動作していないと判定したときには前記リカバリ処理を行うように指示をする、付記１または２に記載の装置。
（付記４）
前記処理速度制御部は、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が閾値より低ければ、前記ユーザアクセス処理と並行して、前記パトロール処理および／もしくは前記再配置処理または前記リカバリ処理を行う、付記２または３に記載の装置。
（付記５）
前記処理速度制御部は、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が閾値より低くなければ、前記ユーザアクセス処理を行う、付記２または３に記載の装置。
（付記６）
さらに、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度で定義されるメンテナンス速度を決定するメンテナンス処理速度決定部を含む、付記１乃至５のいずれか一項に記載の装置。
（付記７）
所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶するストレージシステムにおける前記複数のストレージ装置を管理するストレージ管理方法であって、
前記複数のストレージ装置が正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理ステップと、
前記複数のストレージ装置の間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理ステップと、
前記複数のストレージ装置に障害が発生した場合に、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理ステップと、
前記パトロール処理速度と前記再配置処理速度の和または前記リカバリ処理速度が所定の値となるように調整する処理速度制御ステップと、
を含む方法。
（付記８）
さらに、前記複数のストレージ装置のいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理を所定のユーザアクセス処理速度で行うユーザアクセスステップを含む、付記７に記載の方法。
（付記９）
処理速度制御ステップでは、前記パトロール処理部が前記複数のストレージ装置が正常に動作していると判定したときには前記再配置処理および／またはパトロール処理を行い、正常に動作していないと判定したときには前記リカバリ処理を行うように指示を出す、付記７または８に記載の方法。
（付記１０）
前記処理速度制御ステップは、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が閾値より低ければ、前記ユーザアクセス処理と並行して、前記パトロール処理および／もしくは前記再配置処理またはリカバリ処理を行う、付記８または９に記載の方法。
（付記１１）
前記処理速度制御ステップは、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が閾値より低くなければ、前記ユーザアクセス処理を行う、付記８または９に記載の方法。
（付記１２）
さらに、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度で定義されるメンテナンス速度を決定するメンテナンス処理速度決定ステップを含む、付記７乃至１１のいずれか一項に記載の方法。
（付記１３）
所定の冗長度を有するように冗長化させたデータを複数のストレージ装置に分散して記憶するストレージシステムであって、
前記複数のストレージ装置が正常に動作していることを確認するパトロール処理をパトロール速度で行うパトロール処理部と、
前記複数のストレージ装置の間で前記データを移動する再配置処理を再配置処理速度で行う再配置処理部と、
前記複数のストレージ装置に障害が発生した場合に、前記データの前記冗長度を回復するリカバリ処理をリカバリ処理速度で行うリカバリ処理部と、
前記パトロール処理速度と前記再配置処理速度の和または前記リカバリ処理速度が所定の値となるように前記パトロール処理部、前記再配置処理部、および前記リカバリ処理部における動作を指示する処理速度制御部（２０１４）と、
前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度で定義されるメンテナンス速度を事前に決定するメンテナンス処理速度決定部と、
を含むシステム。
（付記１４）
前記複数のストレージ装置のいずれかに記憶されているデータへのアクセスを要求するアクセス要求に応答して、前記データへのアクセスをするユーザアクセス処理をユーザアクセス処理速度で行うユーザアクセス処理部と、
を含む、付記１３に記載のシステム。
（付記１５）
前記処理速度制御部は、前記パトロール処理部が前記複数のストレージ装置が正常に動作していると判定したときには前記再配置処理および／またはパトロール処理を行い、正常に動作していないと判定したときには前記リカバリ処理を行う、付記１３または１４に記載の装置。
（付記１６）
前記処理速度制御部は、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が閾値より低ければ、前記ユーザアクセス処理と並行して、前記パトロール処理および／もしくは前記再配置処理またはリカバリ処理を行う、付記１４または１５に記載のシステム。
（付記１７）
前記処理速度制御部は、前記パトロール速度と前記再配置処理速度の和または前記リカバリ処理速度が閾値より低くなければ、前記ユーザアクセス処理を行う、付記１４乃至１７のいずれか一項に記載のシステム。
（付記１８）
前記メンテナンス処理速度決定部は、想定される典型的な外部からのアクセスパターンと前記リカバリ処理に相当するアクセスを同時にかけて、前記メンテナンス速度を事前に決定する、付記１３乃至１７のいずれか一項に記載のシステム。
（付記１９）
前記メンテナンス処理速度決定部は、あるスループットにおいて、ランダム書き込みの混合パターンで読み出し、書き込みを行ったときの１秒あたりの読み出し／書き込みの処理の回数に基づいて前記メンテナンス速度を事前に決定する、付記１３乃至１７のいずれか一項に記載のシステム。
（付記２０）
前記メンテナンス処理速度決定部は、平均故障間隔を含む機器の信頼性情報を考慮して前記メンテナンス速度を事前に決定する、付記１３乃至１９のいずれか一項に記載のシステム。
【符号の説明】
【０１１４】
１００  ネットワークスイッチ
２００ａ、２００ｂ、２００ｃ（２００）  ストレージノード
３００ａ、３００ｂ、３００ｃ（３００）  ストレージ装置
４００  ネットワーク
５００、６００、７００  端末
８００ａ、８００ｂ、８００ｃ  ストレージノード
【図２】
0005938965.tif 000002
【図３】
0005938965.tif 000003
【図４】
0005938965.tif 000004
【図５】
0005938965.tif 000005
【図６】
0005938965.tif 000006
【図７】
0005938965.tif 000007
【図８】
0005938965.tif 000008
【図９】
0005938965.tif 000009
【図１】
0005938965.tif 000010