(57)【特許請求の範囲】
【請求項１】
ノード群を構成する複数のストレージノードにそれぞれ備えられる複数のストレージ制御部を備え、
前記複数のストレージノードに複数の記憶デバイスが接続され、
各記憶デバイスは、いずれかのストレージノードに接続され、二つ以上のストレージノードには接続されず、
前記複数のストレージノードの少なくとも一つのストレージノードにおけるストレージ制御部は、前記複数の記憶デバイスに基づく複数の論理記憶領域である複数のチャンクを管理し、
前記ノード群が、ボリュームにおけるライト先を指定したライト要求を受信した場合、いずれかのストレージ制御部が、前記ライト要求に付随するデータを冗長化し、前記ライト先が属するライト先領域に割り当てられたチャンクグループを構成する二つ以上のチャンクの基になっている二つ以上の記憶デバイスに、前記冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、前記ライト要求の完了を応答し、
前記チャンクグループは、二つ以上のストレージノードに接続された二つ以上の記憶デバイスに基づく二つ以上のチャンクで構成され、
前記複数のストレージノードの各々において、ストレージ制御部が、当該ストレージノードに接続された記憶デバイス毎に、当該ストレージノードと当該記憶デバイス間のリンク確立において決められた転送速度を表す情報を含み当該ストレージノードのＯＳ（Operating System）により取得されたデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
各チャンクには、当該チャンクの基になっている記憶デバイスが接続されたストレージノードにおけるストレージ制御部により特定された転送速度が関連付けられ、
前記少なくとも一つのストレージノードにおけるストレージ制御部が、各チャンクグループについて、当該チャンクグループを構成する二つ以上のチャンクを、同じ転送速度が関連付いた二つ以上のチャンクに維持する、
ストレージ制御システム。
【請求項２】
前記複数のストレージノードの各々において、当該ストレージノードにおけるストレージ制御部が、当該ストレージノードに接続された記憶デバイス毎に、周期的に、当該記憶デバイスのデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
前記少なくとも一つのストレージノードにおけるストレージ制御部が、転送速度が変わった記憶デバイスを検出した場合、当該記憶デバイスに基づくチャンク毎に、
当該記憶デバイスの最新の転送速度と同じ転送速度が関連付いたチャンクである対象チャンクを探し、
前記対象チャンクが見つかった場合、当該チャンクである元チャンク内のデータを、前記対象チャンクに移行し、
前記元チャンクを含むチャンクグループに、前記元チャンクに代えて前記対象チャンクを含める、
請求項１に記載のストレージ制御システム。
【請求項３】
前記見つかった対象チャンクは、空きのチャンクである、
請求項２に記載のストレージ制御システム。
【請求項４】
前記対象チャンクが見つからなかった場合、前記少なくとも一つのストレージノードにおけるストレージ制御部、又は、前記少なくとも一つのストレージノードと通信するシステムにおける管理部が、性能低下の可能性があることを表す情報を表示する、
請求項２に記載のストレージ制御システム。
【請求項５】
前記対象チャンクが見つからなかった場合、前記少なくとも一つのストレージノードにおけるストレージ制御部、又は、前記少なくとも一つのストレージノードと通信するシステムにおける管理部が、前記最新の転送速度と同じ転送速度の記憶デバイスの追加を提示する、
請求項２に記載のストレージ制御システム。
【請求項６】
前記少なくとも一つのストレージノードにおけるストレージ制御部、又は、前記少なくとも一つのストレージノードと通信するシステムにおける管理部が、前記最新の転送速度と同じ転送速度の記憶デバイスの増設と前記最新の転送速度が直前の転送速度より速いこととのうちのいずれかに従う転送速度向上を表す情報を表示する、
請求項２に記載のストレージ制御システム。
【請求項７】
ノード群を構成する複数のストレージノードの各々について、当該ストレージノードに接続された記憶デバイス毎に、当該ストレージノードと当該記憶デバイス間のリンク確立において決められた転送速度を表す情報を含み当該ストレージノードのＯＳ（Operating System）により取得されたデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
前記複数のストレージノードに複数の記憶デバイスが接続され、
各記憶デバイスは、いずれかのストレージノードに接続され、二つ以上のストレージノードには接続されず、
前記複数のストレージノードの少なくとも一つのストレージノードが、前記複数の記憶デバイスに基づく複数の論理記憶領域である複数のチャンクを管理し、
前記ノード群が、ボリュームにおけるライト先を指定したライト要求を受信した場合、いずれかのストレージノードが、前記ライト要求に付随するデータを冗長化し、前記ライト先が属するライト先領域に割り当てられたチャンクグループを構成する二つ以上のチャンクの基になっている二つ以上の記憶デバイスに、前記冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、前記ライト要求の完了を応答し、
前記チャンクグループは、二つ以上のストレージノードに接続された二つ以上の記憶デバイスに基づく二つ以上のチャンクで構成され、
各チャンクに、当該チャンクの基になっている記憶デバイスが接続されたストレージノードにより特定された転送速度を関連付け、
各チャンクグループについて、当該チャンクグループを構成する二つ以上のチャンクを、同じ転送速度が関連付いた二つ以上のチャンクに維持する、
ストレージ制御方法。
【請求項８】
前記複数のストレージノードの各々において、当該ストレージノードが、当該ストレージノードに接続された記憶デバイス毎に、周期的に、当該記憶デバイスのデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
前記少なくとも一つのストレージノードが、転送速度が変わった記憶デバイスを検出した場合、当該記憶デバイスに基づくチャンク毎に、
当該記憶デバイスの最新の転送速度と同じ転送速度が関連付いたチャンクである対象チャンクを探し、
前記対象チャンクが見つかった場合、当該チャンクである元チャンク内のデータを、前記対象チャンクに移行し、
前記元チャンクを含むチャンクグループに、前記元チャンクに代えて前記対象チャンクを含める、
請求項７に記載のストレージ制御方法。
【請求項９】
前記見つかった対象チャンクは、空きのチャンクである、
請求項８に記載のストレージ制御方法。
【請求項１０】
前記対象チャンクが見つからなかった場合、性能低下の可能性があることを表す情報を表示する、
請求項８に記載のストレージ制御方法。
【請求項１１】
前記対象チャンクが見つからなかった場合、前記最新の転送速度と同じ転送速度の記憶デバイスの追加を提示する、
請求項８に記載のストレージ制御方法。
【請求項１２】
前記最新の転送速度と同じ転送速度の記憶デバイスの増設と前記最新の転送速度が直前の転送速度より速いこととのうちのいずれかに従う転送速度向上を表す情報を表示する、
請求項８に記載のストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、複数のストレージノードで構成されるノード群のストレージ制御に関する。
【背景技術】
【０００２】
各汎用計算機が、ＳＤＳ（Software Defined Storage）ソフトウェアを実行することでストレージノードとなり、結果として、ノード群（別の言い方をすれば、マルチノードストレージシステム）の一例としてのＳＤＳシステムが構築されることがある。
【０００３】
ＳＤＳシステムは、ストレージシステムの一例である。ストレージシステムの書込み性能の低下を回避する技術として、例えば、特許文献１に開示の技術が知られている。特許文献１に開示のシステムは、ストライピングの単位であるチャンクについて、書き込みアクセス対象のチャンクの割り当て元の記憶媒体の書き込みデータ量を基に、書き込みアクセス対象のチャンクを、別の記憶媒体のチャンクに変更する。特許文献１によれば、書き込み先のチャンクを変更することで、書込み性能の低下の回避が図られる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１９９０４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＳＤＳシステムの構成は、例えば以下の通りである。なお、以下の説明において、「ストレージノード」を単に「ノード」と言う。
・複数のノードに複数の記憶デバイスが接続される。
・各記憶デバイスは、いずれかのノードに接続され、二つ以上のノードには接続されない。
・ＳＤＳシステムがライト要求を受信した場合、いずれかのノードが、ライト要求に付随するデータを冗長化し、異なる二つ以上のノードに接続されている二つ以上の記憶デバイスに、冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、ライト要求の完了を応答する。
【０００６】
このようなＳＤＳシステムでは、冗長化されたデータの書込み先である二つ以上の記憶デバイスの転送速度が異なっていると、ライト要求の完了の応答は、転送速度が最も遅い記憶デバイスに依存することになる。このため、当該二つ以上の記憶デバイスの転送速度が同じであることが望ましい。
【０００７】
しかし、ノードと記憶デバイス間の転送速度は、ノードと記憶デバイス間の接続状況に応じて決まることがあり、結果として、記憶デバイスの仕様上の転送速度と異なることがある。このため、書込み先の二つ以上の記憶デバイスの転送速度が同じであることを維持することは難しい。
【０００８】
このような問題は、ＳＤＳシステム以外のノード群（マルチノードストレージシステム）についてもあり得る。
【課題を解決するための手段】
【０００９】
少なくとも一つのノードは、複数のノードに接続された複数の記憶デバイスに基づく複数のチャンク（複数の論理記憶領域）を管理する。ライト要求を処理するノードは、ライト先が属するライト先領域に割り当てられたチャンクグループを構成する二つ以上のチャンクの基になっている二つ以上の記憶デバイスに、冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、ライト要求の完了を応答するようになっている。チャンクグループは、二つ以上のノードに接続された二つ以上の記憶デバイスに基づく二つ以上のチャンクで構成される。各ノードが、当該ノードに接続された記憶デバイス毎に、当該ノードと当該記憶デバイス間のリンク確立において決められた転送速度を表す情報を含み当該ノードのＯＳ（Operating System）により取得されたデバイス構成情報から、当該記憶デバイスの転送速度を特定する。各チャンクには、当該チャンクの基になっている記憶デバイスが接続されたノードにより特定された転送速度が関連付けられる。上記少なくとも一つのノードが、各チャンクグループについて、当該チャンクグループを構成する二つ以上のチャンクを、同じ転送速度が関連付いた二つ以上のチャンクに維持する。
【発明の効果】
【００１０】
ノード群の書込み性能の低下を避けることができる。
【００１１】
上記した以外の課題、構成及び効果は、発明を実施するための形態の以下の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係るシステム全体の構成を示す。
【図２】ドライブ接続処理の概要を示す。
【図３】プール拡張処理の概要を示す。
【図４】管理テーブル群の構成の一部を示す。
【図５】管理テーブル群の構成の残りを示す。
【図６】ライト処理の概要を示す。
【図７】チャンクとチャンクグループの関係の一例を示す。
【図８】ランクグループとチャンクとチャンクグループの関係の一例を示す。
【図９】ドライブ接続からチャンクグループ作成までの処理の流れを示す。
【図１０】チャンクグループの再構成処理の概要を示す。
【図１１】チャンクグループの再構成処理の流れを示す。
【図１２】管理者向け情報の表示の一例を示す。
【発明を実施するための形態】
【００１３】
以下の説明では、「インターフェース装置」は、一つ以上の通信インターフェースデバイスでよい。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス（例えば一つ以上のＮＩＣ（Network Interface Card））であってもよいし二つ以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１４】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【００１５】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）でよく、具体的には、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、ＮＶＭｅ（Non-Volatile Memory Express）ドライブ、又は、ＳＣＭ（Storage Class Memory）でよい。
【００１６】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【００１７】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサデバイスでよいが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサデバイスでもよい。
【００１８】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし（例えば、構造化データでもよいし非構造化データでもよいし）、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００１９】
また、以下の説明では、「ｋｋｋ部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路（例えばＦＰＧＡ又はＡＳＩＣ）によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び／又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【００２０】
また、以下の説明では、「ストレージシステム」は、それぞれが記憶装置を有する複数のストレージノードを備えたマルチノード構成のノード群（例えば分散システム）を含む。各ストレージノードは、一つ以上のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループを備えてもよいが、典型的には、汎用の計算機でよい。一つ以上の計算機の各々が所定のソフトウェアを実行することにより、当該一つ以上の計算機がＳＤｘ（Software-Defined anything）として構築されてよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）又はＳＤＤＣ（Software-defined Datacenter）を採用することができる。例えば、ストレージ機能を有するソフトウェアが一つ以上の汎用の計算機の各々で実行されることにより、ＳＤＳとしてのストレージシステムが構築されてよい。また、一つのストレージノードが、ホスト計算機としての仮想的な計算機と、ストレージシステムのコントローラとしての仮想的な計算機とを実行してもよい。
【００２１】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。例えば、ドライブを特に区別しないで説明する場合には、「ドライブ１０」と記載し、個々のドライブを区別して説明する場合には、「ドライブ１０Ａ１」、「ドライブ１０Ａ２」のように記載したり「ドライブ１０Ａ」、「ドライブ１０Ｂ」のように記載したりすることがある。
【００２２】
また、以下の説明では、ドライブとノード間の接続に関し、論理的な接続については「リンク」と呼ぶこととする。
【００２３】
以下、一実施形態を詳細に説明する。
【００２４】
図１は、本実施形態に係るシステム全体の構成を示す図である。
【００２５】
複数のノード２０（例えば、ノード２０Ａ〜２０Ｃ）で構成されたノード群（マルチノードストレージシステム）１００がある。各ノード（ストレージノード）２０には、一つ以上のドライブ１０が接続される。例えば、ノード２０Ａには、ドライブ１０Ａ１及び１０Ａ２が接続されており、ノード２０Ｂには、ドライブ１０Ｂ１及び１０Ｂ２が接続されており、ノード２０Ｃには、ドライブ１０Ｃ１及び１０Ｃ２が接続されている。ドライブ１０は、永続記憶デバイスの一例である。各ドライブ１０は、いずれかのノード２０に接続され、二つ以上のノード２０には接続されない。
【００２６】
複数のノード２０が、共通のプール３０を管理する。プール３０は、複数のノード２０に接続された複数のドライブ１０に基づく複数のチャンク（複数の論理記憶領域）の少なくとも一部のチャンクで構成されている。プール３０は、複数あってもよい。
【００２７】
複数のノード２０が、一つ以上のボリューム４０（例えば、ボリューム４０Ａ〜４０Ｃ）を提供する。ボリューム４０が、当該ボリューム４０を指定したＩ／Ｏ（Input/Output）要求の発行元の一例であるホストシステム５０に認識される。ホストシステム５０は、ネットワーク２９を介してノード群１００にライト要求を発行する。ライト要求では、ライト先（例えば、ボリュームＩＤ及びＬＢＡ（Logical Block Address））が指定される。ホストシステム５０は、一つ以上の物理的又は仮想的なホスト計算機でよい。ホストシステム５０は、ノード群１００の外に代えて、少なくとも一つのノード２０内で実行される仮想的な計算機でもよい。各ボリューム４０が、プール３０に関連付けられる。ボリューム４０は、例えば、複数の仮想領域（仮想的な記憶領域）で構成されており容量仮想化技術（典型的にはThin Provisioning）に従うボリュームでよい。
【００２８】
各ノード２０は、当該ノード２０以外の各ノード２０と、ネットワーク２８を介して通信可能である。例えば、各ノード２０は、受信したライト要求で指定されているライト先が属するボリューム４０のオーナ権を、当該ノード２０とは別のノード２０が有しいる場合、当該ライト要求を、当該別のノード２０に、ネットワーク２８を介して転送してもよい。ネットワーク２８は、各ノード２０とホストシステム５０が接続されるネットワーク（例えば、フロントエンドのネットワーク）２９でもよいが、図示のように、ホストシステム５０が接続されないネットワーク（例えば、バックエンドのネットワーク）でもよい。
【００２９】
各ノード２０が、ＦＥ−Ｉ／Ｆ（フロントエンドインターフェースデバイス）２１、ドライブＩ／Ｆ（ドライブインターフェースデバイス）２２、ＢＥ−Ｉ／Ｆ（バックエンドインターフェースデバイス）２５、メモリ２３及びそれらに接続されたプロセッサ２４を有する。ＦＥ−Ｉ／Ｆ２１、ドライブＩ／Ｆ２２及びＢＥ−Ｉ／Ｆ２５は、インターフェース装置の一例である。ＦＥ−Ｉ／Ｆ２１は、ネットワーク２９を介してホストシステム５０に接続される。ドライブＩ／Ｆ２２には、ドライブ１０が接続される。ＢＥ−Ｉ／Ｆ２２には、ネットワーク２８を介して当該ノード２０以外の各ノード２０が接続される。メモリ２３が、プログラム群２３１（複数のプログラム）と、管理テーブル群２３２（複数の管理テーブル）とを格納する。プログラム群２３１がプロセッサ２４により実行される。プログラム群２３１は、ＯＳ（Operating System）とストレージ制御プログラム（例えばＳＤＳソフトウェア）とを含む。ストレージ制御プログラムがプロセッサ２４により実行されることで、ストレージ制御部７０が実現される。管理テーブル群２３２の少なくとも一部は、ノード間２０で同期されてよい。
【００３０】
複数のノード２０でそれぞれ実現される複数のストレージ制御部７０（例えば、ストレージ制御部７０Ａ〜７０Ｃ）が、ストレージ制御システム１１０を構成する。ライト要求を受けたノード２０のストレージ制御部７０が、当該ライト要求を処理する。当該ノード２０は、ライト要求を、いずれのノード２０を介さずに受信してもよいし、当該ライト要求で指定されているライト先が属するボリューム４０のオーナ権を当該ノード２０が有しているが故にいずれかのノード２０から受信してもよい（ライト要求の転送を受けてもよい）。当該ストレージ制御部７０は、受信したライト要求で指定されているライト先が属するライト先領域（ライト先の仮想領域）に、プール３０からチャンクを割り当てる。チャンクの割当てを含むライト処理の詳細は後述する。
【００３１】
図１のノード群１００は、一つ以上のクラスタで構成されてよい。各クラスタが、二つ以上のノード２０で構成されてよい。各クラスタには、アクティブのノードと、アクティブのノードが停止する場合にアクティブのノードに代わって起動するスタンバイのノードとが含まれてよい。
【００３２】
また、ノード群１００における少なくとも一つのノード２０には、ネットワーク２７を介して管理システム８１が接続されてよい。管理システム８１は、一つ以上の計算機でよい。管理システム８１において所定のプログラムが実行されることで管理システム８１において管理部８８が実現されてよい。管理部８８が、ノード群１００を管理してよい。ネットワーク２７は、ネットワーク２９でもよい。管理部８８は、管理システム８１に代えて、いずれかのノード２０に備えられてもよい。
【００３３】
図２は、ドライブ接続処理の概要を示す。
【００３４】
ストレージ制御部７０は、Ｉ／Ｏ処理部７１と制御処理部７２とを含む。
【００３５】
Ｉ／Ｏ処理部７１は、Ｉ／Ｏ（Input/Output）要求に従うＩ／Ｏを行う。
【００３６】
制御処理部７２は、ノード２０間でプール管理を行う。制御処理部７２は、ＲＥＳＴ（Representational State Transfer）サーバ部７２１、クラスタ制御部７２２及びノード制御部７２３を含む。ＲＥＳＴサーバ部７２１は、ホストシステム５０又は管理システム８１からプール拡張の指示を受け付ける。クラスタ制御部７２２は、ノード間２０で共有されるプール３０を管理する。ノード制御部７２３は、ノード２０に接続されたドライブ１０を検知する。
【００３７】
ノード２０にドライブ１０が接続された場合に、以下のドライブ接続処理が行われる。
【００３８】
まず、ノード２０における図示しないドライバ（接続されたドライブ１０のドライバ）と、ノード２０に接続されたドライブ１０間で、リンク確立のための通信が行われる（ドライバはＯＳ９５に含まれてもよい）。その通信において、ドライバとドライブ１０間で、ドライブ１０の転送速度が決定される。例えば、選択可能な複数の転送速度のうち、ドライブ１０の状況等に応じた転送速度が選択される。リンク確立において決定された転送速度は、最大転送速度のような固定の転送速度である。例えば、リンク確立後は、決定された転送速度以下の速度で、ノード２０とドライブ１０間で通信が行われる。
【００３９】
決定された転送速度を表す情報が、ドライブ１０のドライブ構成情報に含まれる。ドライブ構成情報は、転送速度の他、ドライブ１０の種別（例えば規格）及び容量を表す情報を含む。ＯＳ９５が、ドライブ構成情報を含むファイルである構成ファイル１１を管理する。
【００４０】
ノード制御部７２３が、周期的に、ＯＳ９５が管理する領域のうちの所定の領域１２（例えば、接続されたドライブ１０の構成ファイル１１が格納される領域（例えばディレクトリ））をチェックする。新たな構成ファイル１１が検知された場合、ノード制御部７２３が、新たな構成ファイル１１をＯＳ９５（ＯＳ９５が管理する所定の領域１２）から取得し、取得した構成ファイル１１をクラスタ制御部７２２に渡す。
【００４１】
クラスタ制御部７２２が、ノード制御部７２３から渡された構成ファイル１１から、当該構成ファイル１１が含むドライブ構成情報の少なくとも一部を、管理テーブル群２３２に登録する。これにより、接続されたドライブ１０に基づく論理空間１３が、ノード２０間で共有される。
【００４２】
以上のようなドライブ接続処理が、接続されたドライブ１０毎に行われ、結果として、接続された各ドライブ１０と、ドライブ１０毎の転送速度が、ノード２０間で共有される。なお、図２において、ドライブ１０ａ、１０ｂ及び１０ｃは、構成ファイル１１ａ、１１ｂ及び１１ｃとそれぞれ対応し、構成ファイル１１ａ、１１ｂ及び１１ｃは、論理空間１３ａ、１３ｂ及び１３ｃとそれぞれ対応する。
【００４３】
図３は、プール拡張処理の概要を示す。
【００４４】
ＲＥＳＴサーバ部７２１が、ホストシステム５０又は管理システム８１からプール拡張の指示を受け付けた場合に、プール拡張をクラスタ制御部７２２に指示する。この指示に応答して、クラスタ制御部７２２により、以下のプール拡張処理が行われる。
【００４５】
すなわち、クラスタ制御部７２２は、管理テーブル群２３２を参照し、未分割の論理空間１３（二つ以上のチャンク１４に分割されていない論理空間１３）の有無を判断する。クラスタ制御部７２２は、未分割の論理空間１３があれば、当該論理空間１３を、一つ以上のチャンク１４に分割し、当該一つ以上のチャンク１４のうちの少なくとも一部をプール３０に追加する。チャンク１４の容量は、所定の容量である。チャンク１４の容量は可変でもよいが、本実施形態では固定である。チャンク１４の容量は、プール３０によって異なってもよい。プール３０に含まれないチャンク１４は、例えば、空きチャンク１４として管理されてよい。図３の例によれば、論理空間１３ａを構成するチャンク１４ａ１及び１４ａ２と、論理空間１３ｂを構成するチャンク１４ｂ１及び１４ｂ２と、論理空間１３ｃを構成するチャンク１４ｃ１及び１４ｃ２が、プール３０に含まれる。
【００４６】
なお、プール拡張処理は、ホストシステム５０又は管理システム８１からの指示無しに自動的に開始されてもよい。例えば、クラスタ制御部７２２が、ノード２０に新たにドライブ１０が接続されたことが検知した場合に（具体的には、新たな構成ファイル１１をノード制御部７２３から受けた場合に）、プール拡張処理を行ってよい。また、例えば、ホストシステム５０からのＩ／Ｏ要求が無い等、ノード２０の負荷が小さい場合に、プール拡張処理が行われてもよい。
【００４７】
図４及び図５は、管理テーブル群２３２の構成を示す。
【００４８】
管理テーブル群２３２は、ノード管理テーブル４０１、プール管理テーブル４０２、ランクグループ管理テーブル４０３、チャンクグループ管理テーブル４０４、チャンク管理テーブル４０５及びドライブ管理テーブル４０６を含む。
【００４９】
ノード管理テーブル４０１は、Ｎｏｄｅ＿ＩＤ５０１のリストである。Ｎｏｄｅ＿ＩＤ５０１は、ノード２０のＩＤを表す。
【００５０】
プール管理テーブル４０２は、Ｐｏｏｌ＿ＩＤ５１１のリストである。Ｐｏｏｌ＿ＩＤ５１１は、プール３０のＩＤを表す。
【００５１】
ランクグループ管理テーブル４０３は、ランクグループ毎にレコードを有する。各レコードは、ＲａｎｋＧｒｏｕｐ＿ＩＤ５２１、Ｐｏｏｌ＿ＩＤ５２２、Ｃｏｕｎｔ５２３といった情報を含む。一つのランクグループを例に取る（この段落で「対象ランクグループ」）。ＲａｎｋＧｒｏｕｐ＿ＩＤ５２１は、対象ランクグループのＩＤを表す。Ｐｏｏｌ＿ＩＤ５２２は、対象ランクグループが属するプール３０のＩＤを表す。Ｃｏｕｎｔ５２３は、対象ランクグループに属するチャンクグループ（又はチャンク１４）の数を表す。なお、「ランクグループ」とは、同一の転送速度が関連付けられたチャンク１４が属するグループである。つまり、チャンク１４に関連付く転送速度が違えば、当該チャンクが属するランクグループが違う。
【００５２】
チャンクグループ管理テーブル４０４は、チャンクグループ毎にレコードを有する。各レコードは、ＣｈｕｎｋＧｒｏｕｐ＿ＩＤ５３１、Ｃｈｕｎｋ１＿ＩＤ５３２、Ｃｈｕｎｋ５３３、Ｓｔａｔｕｓ５３４及びＡｌｌｏｃａｔｉｏｎ５３５といった情報を含む。一つのチャンクグループを例に取る（この段落で「対象チャンクグループ」）。ＣｈｕｎｋＧｒｏｕｐ＿ＩＤ５３１は、対象チャンクグループのＩＤを表す。Ｃｈｕｎｋ１＿ＩＤ５３２は、対象チャンクグループが属する二つのチャンク１４のうちの第１のチャンク１４のＩＤを表す。Ｃｈｕｎｋ２＿ＩＤ５３２は、対象チャンクグループが属する二つのチャンク１４のうちの第２のチャンク１４のＩＤを表す。Ｓｔａｔｕｓ５３４は、対象チャンクグループのステータス（例えば、対象チャンクグループ（或いは、対象チャンクグループのうちの第１のチャンク１４）がいずれかのボリューム４０に割り当て済であるか否か）を表す。Ａｌｌｏｃａｔｉｏｎ５３５は、対象チャンクグループがいずれかのボリューム４０に割り当てられている場合、対象チャンクグループの割当先（例えば、ボリュームＩＤとＬＢＡ）を表す。なお、「チャンクグループ」とは、異なる二つのノード２０に接続されている二つのドライブ１０に基づく二つのチャンク１４のグループである。本実施形態では、チャンクグループを構成するチャンク１４は二つであるが、異なる三つ以上のノード２０に接続されている三つ以上のドライブ１０に基づく三つ以上のチャンク１４（例えば、三つ以上のドライブ１０で構成されたＲＡＩＤグループのストライプを構成する三つ以上のチャンク１４）が一つのチャンクグループを構成してもよい。
【００５３】
チャンク管理テーブル４０５は、チャンク毎にレコードを有する。各レコードは、Ｃｈｕｎｋ＿ＩＤ５４１、Ｄｒｉｖｅ＿ＩＤ５４２、Ｎｏｄｅ＿ＩＤ５４３、ＲａｎｋＧｒｏｕｐ＿ＩＤ５４４及びＣａｐａｃｉｔｙ５４５といった情報を含む。一つのチャンク１４を例に取る（この段落で「対象チャンク１４」）。Ｃｈｕｎｋ＿ＩＤ５４１は、対象チャンク１４のＩＤを表す。Ｄｒｉｖｅ＿ＩＤ５４２は、対象チャンク１４の基になっているドライブ１０のＩＤを表す。Ｎｏｄｅ＿ＩＤ５４３は、対象チャンク１４の基になっているドライブ１０が接続されているノード２０のＩＤを表す。ＲａｎｋＧｒｏｕｐ＿ＩＤ５４４は、対象チャンク１４が属するランクグループのＩＤを表す。Ｃａｐａｃｉｔｙ５４５は、対象チャンク１４の容量を表す。
【００５４】
ドライブ管理テーブル４０６は、ドライブ１０毎にレコードを有する。各レコードは、Ｄｒｉｖｅ＿ＩＤ５５１、Ｎｏｄｅ＿ＩＤ５５２、Ｔｙｐｅ５５３、ＬｉｎｋＲａｔｅ５５４、Ｌａｎｅ５５５及びＳｔａｔｕｓ５５６といった情報を含む。一つのドライブ１０を例に取る（この段落で「対象ドライブ１０」）。Ｄｒｉｖｅ＿ＩＤ５５１は、対象ドライブ１０のＩＤを表す。Ｎｏｄｅ＿ＩＤ５５２は、対象ドライブ１０が接続されているノード２０のＩＤを表す。Ｔｙｐｅ５５３は、対象ドライブ１０の種別（規格）を表す。ＬｉｎｋＲａｔｅ５５４は、対象ドライブ１０の１レーンあたりのリンクレート（速度）を表す。Ｌａｎｅ５５５は、対象ドライブ１０とノード２０間のレーンの数を表す。Ｓｔａｔｕｓ５５６は、対象ドライブ１０のステータス（例えば、対象ドライブ１０に基づく論理空間１３が二つ以上のチャンク１４に分割済か否か）を表す。
【００５５】
対象ドライブ１０のリンクレートが、対象ドライブ１０とドライバ（ＯＳ９５）間のリンク確立のための通信において決定される。対象ドライブ１０の転送速度は、ＬｉｎｋＲａｔｅ５５４とＬａｎｅ５５５とに従う。Ｌａｎｅ５５５は、例えば、対象ドライブ１０がＮＶＭｅドライブの場合に有効である。
【００５６】
以上が、管理テーブル群２３２に含まれるテーブルの一例である。図示しないが、管理テーブル群２３２は、ボリューム管理テーブルを含んでよい。ボリューム管理テーブルは、ボリューム４０毎に、各仮想領域について、ＬＢＡ範囲と、チャンク１４が割り当て済か否かとを表す情報を含んでよい。
【００５７】
図６は、ライト処理の概要を示す。
【００５８】
ボリューム４０には、例えば当該ボリューム４０が作成されたときに、一つ以上のチャンクグループが割り当てられている。例えば、チャンク１４の容量が１００ＧＢである場合、二つのチャンク１４で構成されるチャンクグループの容量は２００ＧＢである。しかし、データが二重化されてチャンクグループに書き込まれるので、チャンクグループに書き込み可能なデータの容量は１００ＧＢである。このため、ボリューム４０の容量が２００ＧＢの場合、二つの未割当のチャンクグループ（例えば、Ａｌｌｏｃａｔｉｏｎ５３５の値が“−”のチャンクグループ）が割り当てられることになる。
【００５９】
ボリューム４０ＡにおけるＬＢＡが指定されたライト要求をホストシステム５０からノード２０Ａが受信したとする。また、ボリューム４０Ａのオーナ権をノード２０Ａが有しているとする。
【００６０】
ノード２０Ａのストレージ制御部７０Ａが、ライト要求に付随するデータを二重化する。ストレージ制御部７０Ａが、チャンクグループ管理テーブル４０４を参照して、ライト要求で指定されているＬＢＡが属するライト先領域に割り当てられているチャンクグループを特定する。
【００６１】
特定されたチャンクグループが、ドライブ１０Ａ１に基づくチャンク１４Ａ１と、ドライブ１０Ｂ１に基づくチャンク１４Ｂ１で構成されているとする。ストレージ制御部７０Ａは、二重化されたデータを、特定されたチャンクグループを構成するチャンク１４Ａ１及び１４Ｂ１に書き込む。すなわち、データが、ドライブ１０Ａ１及び１０Ｂ１にそれぞれ書き込まれる。
【００６２】
ストレージ制御部７０Ａは、チャンク１４Ａ１及び１４Ｂ１（ドライブ１０Ａ１及び１０Ｂ１）に対する書込みが完了した場合に、ライト要求の完了を、ライト要求の送信元であるホストシステム５０に応答する。
【００６３】
なお、ライト処理は、ストレージ制御部７０のうちのＩ／Ｏ処理部７１によって行われてもよい。
【００６４】
図７は、チャンクとチャンクグループの関係の一例を示す。
【００６５】
複数のチャンク１４のうちの少なくとも一部のチャンク１４は、複数のチャンクグループ７０１を構成する。各チャンクグループ７０１は、二つノード２０に接続された二つのドライブ１０に基づく二つのチャンク１４で構成される。チャンクグループ７０１が、同一のノード２０に接続されている二つチャンク１４で構成されると、当該ノード２０が障害等の理由で停止した場合（例えば、当該ノード２０がアクティブからスタンバイの状態になった場合）、いずれのチャンク１４に対してもＩ／Ｏが不可となってしまうためである。
【００６６】
また、一つのノード２０に接続された二つ以上のドライブ１０の転送速度は、同一とは限らない。たとえ、ノード２０に接続された全てのドライブ１０が、同一ベンダ、同一容量及び同一種類のドライブ１０であったとしても、すなわち、仕様上は転送速度（例えば、最大転送速度）が同一のドライブ１０であったとしても、ノード２０とドライブ１０間の転送速度は異なることがある。なぜなら、ノード２０とドライブ１０間のリンク確立のための通信において決定される転送速度は、ノード２０とドライブ１０間の通信状況等によって異なり得るからである。例えば、図７に例示の通り、ノード２０Ａには、転送速度が“１２Ｇｂｐｓ”であるドライブ１０Ａ１と、転送速度が“６Ｇｂｐｓ”であるドライブ１０Ａ２とが接続されることがある。同様に、ノード２０Ｂにも、転送速度が“１２Ｇｂｐｓ”であるドライブ１０Ｂ１と、転送速度が“６Ｇｂｐｓ”であるドライブ１０Ｂ２とが接続されることがある。より具体的には、下記の例がある。
・ドライブ１０が、ＳＡＳ（Serial Attached SCSI）ドライブの場合、ノード２０とドライブ１０間の転送速度として複数の転送速度のうちのいずれかの転送速度がリンク確立の通信において選択されるが、選択される転送速度は、ドライブ１０の種別（例えば、ＳＳＤであるかＨＤＤであるか）と状況（例えば、負荷状況や通信状況）とのうちの少なくとも一つによって異なる。
・ドライブ１０が、ＮＶＭｅドライブの場合、ノード２０とドライブ１０間の転送速度は、ノード２０とドライブ１０間のレーンの数と、１レーンあたりのリンクレートとによって決まる。レーン数は、ドライブ種別によって異なる。また、１レーンあたりのリンクレートは、ドライブ１０の種別と状況とのうちの少なくとも一つによって異なる。
【００６７】
このような環境において、二重化されたデータの書込み先となる二つのチャンク１４、異なる転送速度の二つのドライブ１０に基づくチャンクであると、書込みの性能は、転送速度が遅いドライブ１０に依存してしまう。
【００６８】
そこで、本実施形態では、上述したように、各ノード２０において、ストレージ制御部７０が、当該ノード２０に接続されたドライブ１０毎に、当該ノード２０と当該ドライブ１０間で決められた転送速度を表す情報を含みＯＳ９５により取得されたデバイス構成情報から、当該ドライブ１０の転送速度を特定し、当該ドライブ１０に基づくチャンク１４に、当該転送速度を関連付ける。そして、少なくとも一つのノード２０（例えばマスタのノード２０）におけるストレージ制御部７０が、同じ転送速度が関連付いた二つチャンク１４で一つのチャンクグループ７０１を構成する。一つのチャンク１４が、異なるチャンクグループ７０１に含まれることはない。図７の例によれば、結果として、下記の通りである。
・チャンクグループ７０１Ａは、転送速度が“１２Ｇｂｐｓ”のドライブ１０Ａ１及び１０Ｂ１に基づくチャンク１４Ａ１１及び１４Ｂ１１で構成される。同様に、チャンクグループ７０１Ｂは、転送速度が“１２Ｇｂｐｓ”のドライブ１０Ａ１及び１０Ｂ１に基づくチャンク１４Ａ１２及び１４Ｂ１２で構成される。
・チャンクグループ７０１Ｃは、転送速度が“６Ｇｂｐｓ”のドライブ１０Ａ２及び１０Ｂ２に基づくチャンク１４Ａ２１及び１４Ｂ２１で構成される。同様に、チャンクグループ７０１Ｄは、転送速度が“６Ｇｂｐｓ”のドライブ１０Ａ２及び１０Ｂ２に基づくチャンク１４Ａ２２及び１４Ｂ２２で構成される。
【００６９】
これにより、二重化されたデータの書込み先となる二つのチャンク１４の転送速度が同一であることが保証され、以って、転送速度の違いによるライト性能低下（ライト要求に対する応答の遅延）を避けることができる。なお、チャンクグループ７０１を構成する二つのチャンク１４は、転送速度が同じであることに加えて、基になる二つのドライブ１０のドライブ種別が同じであることであってもよい。また、全てのチャンクグループ７０１について、チャンク数が同じでなくてもよい。チャンクグループ７０１を構成するチャンク１４の数は、冗長化のレベルによって異なってもよい。例えば、ＲＡＩＤ５が適用されたチャンクグループ７０１は、三つ以上のＮＶＭｅドライブに基づく三つ以上のチャンクで構成されてもよい。
【００７０】
図８は、ランクグループ８６とチャンク１４とチャンクグループ７０１の関係の一例を示す。
【００７１】
プール３０を構成するチャンク１４の基になっているドライブ１０について決定された転送速度が、“１２Ｇｂｐｓ”と“６Ｇｂｐｓ”のいずれかであるとする。この場合、ランクグループ８６として、転送速度“１２Ｇｂｐｓ”のドライブ１０に基づくチャンク１４が属するランクグループ８６Ａと、転送速度“６Ｇｂｐｓ”のドライブ１０に基づくチャンク１４が属するランクグループ８６Ｂとがある。図７に例示の構成によれば、図８に例示の構成の通りである。すなわち、ランクグループ８６Ａには、ドライブ１０Ａ１に基づくチャンク１４Ａ１１及び１４Ａ１２と、ドライブ１０Ｂ１に基づくチャンク１４Ｂ１１及び１４Ｂ１２とが属する。ランクグループ８６Ｂには、ドライブ１０Ａ２に基づくチャンク１４Ａ２１及び１４Ａ２２と、ドライブ１０Ｂ２に基づくチャンク１４Ｂ２１及び１４Ｂ２２とが属する。更に、ノード２０Ｂにドライブ１０Ｂ３が接続され、ノード２０Ｂとドライブ１０Ｂ３間の転送速度が“１２Ｇｂｐｓ”と決定されたならば、ドライブ１０Ｂ３に基づくチャンク１４Ｂ３１が、ランクグループ８６Ａに追加される。なお、追加されたチャンク１４Ｂ３１は、いずれのチャンクグループ７０１を構成しない予備チャンクであるとする。予備チャンクは、いずれのボリューム４０にも割り当てられ得ないとする。チャンク１４Ｂ３１は、いずれかのチャンクグループ７０１の構成要素とされた場合に、ボリューム４０に割り当てられ得るチャンクになるとする。
【００７２】
図９は、ドライブ接続からチャンクグループ作成までの処理の流れを示す。
【００７３】
いずれかのノード２０に一つ以上のドライブ１０が接続されたとする（Ｓ１１）。ＯＳ９５が、接続された一つ以上のドライブ１０にそれぞれ対応した一つ以上の構成ファイル１１を、所定の領域１２に追加する（図２参照）。ノード制御部７２３が、所定の領域１２から、追加された一つ以上の構成ファイル１１を取得し、取得した一つ以上の構成ファイル１１をクラスタ制御部７２２に渡す。
【００７４】
クラスタ制御部７２２が、接続された一つ以上のドライブ１０（ノード制御部７２３から受けた一つ以上の構成ファイル１１）の各々について、構成ファイル１１からドライブ構成情報を取得し（Ｓ１２）、取得したドライブ構成情報を管理テーブル群２３２に登録する。これにより、ドライブ１０毎に、ドライブ管理テーブル４０６にレコードが追加される。レコードのうち、情報５５３〜５５５が、ドライブ構成情報に含まれている情報であり、情報５５１、５５２及び５５６は、クラスタ制御部７２２により決定された情報である。
【００７５】
その後、クラスタ制御部７２２が、プール拡張処理を行う（Ｓ１４）。具体的には、クラスタ制御部７２２は、上記接続された一つ以上のドライブ１０に基づく一つ以上の論理空間１３（図２及び図３参照）の各々を複数のチャンク１４に分割し（Ｓ２１）、各チャンク１４に関する情報を管理テーブル群２３２に登録する（Ｓ２２）。これにより、チャンク１４毎に、チャンク管理テーブル４０５にレコードが追加される。結果として、各チャンク１４に、当該チャンク１４の基になっているドライブ１０の転送速度が関連付く。具体的には、各チャンク１４について、Ｄｒｉｖｅ＿ＩＤ５４２が登録され、Ｄｒｉｖｅ＿ＩＤ５４２と一致するＤｒｉｖｅ＿ＩＤ５５１には、転送速度を表す情報５５４及び５５５が関連付いている。
【００７６】
最後に、クラスタ制御部７２２が、複数のチャンクグループ７０１を作成する（Ｓ１５）。各チャンクグループ７０１は、転送速度が同じ二つのチャンク１４で構成される。なお、チャンクグループ７０１の構成要素とされた各チャンク１４について、Ｓｔａｔｕｓ５３４が、チャンクグループ７０１の構成要素とされていることを表す値に更新される。チャンクグループ７０１の構成要素とされていないチャンク１４は、予備のチャンク１４として管理されてよい。
【００７７】
なお、「転送速度が同じ」とは、転送速度が完全一致することに限らず、転送速度が許容範囲（同じとみなせる範囲）で異なっていることを含んでよい。
【００７８】
図１０は、チャンクグループ７０１の再構成処理の概要を示す。
【００７９】
ドライブ１０のリンクが一旦切断されて再度確立することがある。リンクの再確立は、ホストシステム５０又は管理システム８１からの明示的な指示に応答して行われてもよいし、ドライブ１０へのデータ転送の失敗を契機に自動で行われてもよい。リンクの再確立においても、ドライブ１０とノード２０間でドライブ１０の転送速度が決定される。決定された転送速度は、当該ドライブ１０について直前回のリンク確立において決定された転送速度と異なること、つまり、ドライブ１０の転送速度が途中で変わることがある。
【００８０】
このため、結果として、少なくとも一つのチャンクグループ７０１において、二つのチャンク１４に関連付く転送速度が異なることがある。例えば、図８に例示の構成において、ドライブ１０Ａ２の転送速度が“６Ｇｂｐｓ”から“１２Ｇｂｐｓ”に変わった場合、ドライブ１０Ａ２に基づくチャンク１４Ａ２１及び１４Ａ２２の各々に関連付く転送速度も、“６Ｇｂｐｓ”から“１２Ｇｂｐｓ”に変わる。
【００８１】
図１０が示す例は、チャンク１４Ａ２２に着目した例である。チャンク１４Ａ２２に関連付く転送速度が“１２Ｇｂｐｓ”になったため、図１０に示す通り、チャンク１４Ａ２２が属するランクグループ８６は、ランクグループ８６Ｂからランクグループ８６Ａに変わる。
【００８２】
このままであると、チャンクグループ７０１Ｄにおいて、チャンク１４Ｂ２２の転送速度は、チャンク１４Ａ２２の転送速度と異なる。このため、チャンクグループ７０１Ｄに対する書込みの性能が低下する。
【００８３】
そこで、本実施形態では、ノード２０Ｂのストレージ制御部７０Ｂが、転送速度“１２Ｇｂｐｓ”の空きチャンク１４Ｂ３１を見つけ、そのチャンク１４Ｂ３１に、転送速度“６Ｇｂｐｓ”のチャンク１４Ｂ２２内のデータを移行する。そして、ストレージ制御部７０Ｂが、チャンクグループ７０１Ｄの構成要素を、移行元のチャンク１４Ｂ２２から移行先のチャンク１４Ｂ３１に変更する。このようにして、チャンクグループ７０１Ｄを構成する二つのチャンク１４Ａ２１及び１４Ｂ３１の転送速度が同じに維持される。結果として、チャンクグループ７０１Ｄに対する書込みの性能低下を避けることができる。
【００８４】
なお、図１０が示す例によれば、チャンク１４Ａ２２が着目されているが、チャンク１４Ａ２１についても同様の処理が行われる。
【００８５】
図１１は、チャンクグループ７０１の再構成処理の流れを示す。図１１が示す再構成処理は、ノード群１００における一つのノード２０（例えば、マスタのノード）が行ってもよいが、本実施形態では、各ノード２０が実行可能である。ノード２０Ａを例に取る。再構成処理は、周期的に行われる。
【００８６】
ノード２０Ａのノード制御部７２３が、ノード２０Ａの所定の領域（ドライブ１０Ａ２の構成ファイルが格納されている領域）における構成ファイル毎に、当該構成ファイル内のドライブ構成情報が表す転送速度が、ドライブ管理テーブル４０６内の転送速度と異なっているか否かをチェックする（Ｓ３１）。いずれのドライブ１０についても転送速度の変化が検出されなければ（Ｓ３２：Ｎｏ）、再構成処理は終了する。
【００８７】
以下、図１０に例示の通り、ノード２０Ａとドライブ１０Ａ２間でリンクの再確立が行われ、その結果として、ドライブ１０Ａ２の最新の転送速度（構成ファイル内のドライブ構成情報が表す転送速度）が、ドライブ１０Ａ２についてドライブ管理テーブル４０６に登録されている転送速度と異なっているとする。
【００８８】
ドライブ１０Ａ２の転送速度の変化が検出された場合（Ｓ３２：ＹＥＳ）、ノード２０Ａのクラスタ制御部７２２が、ドライブ１０Ａ２の転送速度（情報５５４及び５５５）を変更する（Ｓ３３）。以下、図１０と同様に、チャンク１４Ａ２２を例に取る。
【００８９】
ノード２０Ａのクラスタ制御部７２２が、変更後の転送速度と同じ転送速度が関連付いた空きチャンクがあるか否かを、ノード２０Ａの管理テーブル群２３２から判断する（Ｓ３５）。ここで言う空きチャンクは、変更後の転送速度と同じ転送速度に関連付いたＤｒｉｖｅ＿ＩＤ５５１と一致するＤｒｉｖｅ＿ＩＤ５４２に対応したＳｔａｔｕｓ５３４が空きを意味する値であるチャンクである。空きチャンクは、例えば、以下のようにして探されてよい。
・ノード２０Ａのクラスタ制御部７２２が、チャンク１４Ａ２２を含むチャンクグループ７０１Ｄ内のチャンク１４Ｂ２２を、チャンクグループ管理テーブル４０４から特定する。
・ノード２０Ａのクラスタ制御部７２２が、チャンク１４Ｂ２２を管理するノード２０Ｂを、チャンク管理テーブル４０５から特定する。
・ノード２０Ａのクラスタ制御部７２２が、ノード２０Ｂが管理するチャンク１４Ｂのうち、変更後の転送速度と同じ転送速度が関連付いている空きチャンク１４Ｂを、チャンク管理テーブル４０５及びドライブ管理テーブル４０６を基に探す。
・そのような空きチャンク１４Ｂが見つからなければ、ノード２０Ａのクラスタ制御部７２２が、ノード２０Ａ及び２０Ｂ以外のノードが管理するチャンクのうち、変更後の転送速度と同じ転送速度が関連付いている空きチャンク１４を、チャンク管理テーブル４０５及びドライブ管理テーブル４０６を基に探す。
【００９０】
空きチャンク１４Ｂ３１が見つかったとする。この場合（Ｓ３５：ＹＥＳ）、データ移行が行われる（Ｓ３６）。例えば、ノード２０Ａのクラスタ制御部７２２が、空きチャンク１４Ｂ３１を管理するノード２０Ｂのクラスタ制御部７２２に、チャンク１４Ｂ２２から空きチャンク１４Ｂ３１へデータを移行することを指示する。その指示に応答して、ノード２０Ｂのクラスタ制御部７２２が、チャンク１４Ｂ２２から空きチャンク１４Ｂ３１へデータを移行し、移行完了を、ノード２０Ａのクラスタ制御部７２２に返す。
【００９１】
Ｓ３６の後、ノード２０Ａのクラスタ制御部７２２が、チャンク１４Ａ２２を含むチャンクグループ７０１Ｄを再構成する（Ｓ３７）。具体的には、ノード２０Ａのクラスタ制御部７２２は、チャンクグループ７０１Ｄに、移行元のチャンク１４Ｂ２２に代えて、移行先のチャンク１４Ｂ３１を含める。より具体的には、ノード２０Ａのクラスタ制御部７２２は、チャンクグループ７０１ＤのＣｈｕｎｋ１＿ＩＤ５３２又はＣｈｕｎｋ２＿ＩＤ５３３を、移行元のチャンク１４Ｂ２２のＩＤから、移行先のチャンク１４Ｂ３１のＩＤに変更する。
【００９２】
変更後の転送速度と同じ転送速度が関連付いている空きチャンクが見つからなかったとする。この場合（Ｓ３５：ＮＯ）、チャンクグループ７０１Ｄを構成する二つのチャンクの転送速度が異なったままとなる。そこで、ノード２０Ａのクラスタ制御部７２２（又は、管理システム８１における管理部８８）が、ドライブの性能低下の可能性があることを意味するアラートを出す（Ｓ３８）。
【００９３】
以上の再構成処理によれば、ノード制御部７２３が、周期的に、ＯＳ９５により取得された各構成ファイルをチェックすることで、ドライバとドライブ１０間の転送速度が途中で変わっても、その転送速度の変更を検出することができる。そして、転送速度が変わったドライブ１０Ａ２に基づくチャンク１４Ａ２２を含むチャンクグループ７０１Ｄ内のチャンク１４Ｂ２２（転送速度に変化が無いドライブ１０Ｂ２に基づくチャンク１４Ｂ２２）について、チャンク１４Ａ２２の変更後の転送速度と同じ転送速度の空きチャンク１４Ｂ３１が探し出される。その空きチャンク１４Ｂ３１に、チャンク１４Ｂ２２からデータが移行される。その後、移行先のチャンク１４Ｂ３１が、チャンク１４Ｂ２２に代わって、チャンクグループ７０１Ｄの構成要素とされる。このようにして、ドライブ１０Ａ２の転送速度が途中で変わっても、チャンクグループ７０１Ｄを構成する二つのチャンクの転送速度を同じに維持することができる。
【００９４】
チャンクグループ７０１Ｄを構成する二つのチャンクの転送速度を同じとすることを維持する方法として、ドライブ１０Ａ２の転送速度が速くなっても、ノード２０Ａとドライブ１０Ａ２間のデータ転送を変更前の転送速度に従い行う方法も考えられるが、ノード２０Ａとドライブ１０Ａ２との間でのデータ転送の速度は、ＯＳ９５上のストレージ制御部７０からは制御できない。すなわち、ノード２０Ａとドライブ１０Ａ２間では、変更後の転送速度に従いデータ転送が行われることにある。このため、転送速度が変わっていない方のチャンク１４Ｂ２２内のデータを、変更後の転送速度と同じ転送速度のチャンクに移行して、チャンクグループの構成要素を、移行元のチャンクから移行先のチャンクに代えることで、チャンクグループ７０１Ｄを構成する二つのチャンクの転送速度を同じに維持することができる。
【００９５】
図１２は、管理者向け情報の表示の一例を示す。
【００９６】
管理者向け情報の一例としての情報１２０が、アラート情報１２５と通知情報１２６とを含む。情報１２０は、表示デバイスに表示される。表示デバイスは、ノード群１００に接続された計算機の一例である管理システム８１が有してもよいし、管理システム８１に接続された計算機が有してもよい。情報１２０は、対象ノード２０（少なくとも一つのノードの一例）におけるストレージ制御部７０、又は、管理システム８１（対象ノード２０と通信するシステムの一例）における管理部８８によって生成され表示される。図１２の説明において、「対象ノード」は、ノード群１００におけるマスタのノードであってもよいし、ノード群１００のうち、情報１２０が表す状況を検出したノードであってもよい。
【００９７】
アラート情報１２５は、変更後の転送速度と同じ転送速度が関連付いた空きチャンクが見つからなかった場合に、対象ノード２０におけるストレージ制御部７０、又は、管理システム８１における管理部８８によって生成される情報であり、性能低下の可能性があることを表す情報である。アラート情報１２５は、例えば、性能低下の可能性が生じた日時と、性能低下の可能性が生じたことを表すイベントの名前とを表す情報を含む。管理者（ユーザの一例）が、アラート情報１２５を見ることで、性能低下の可能性が生じていることを知ることができる。なお、ストレージ制御部７０又は管理部８８は、管理者による所定の操作に応答して、アラート情報１２５の詳細であるアラート詳細情報１２１を生成して表示してもよい。アラート詳細情報１２１は、変更後の転送速度と同じ転送速度のドライブ１０の追加の提示を含む。これにより、管理者は、性能低下の可能性を避けるために何をすべきかを知ることができる。
【００９８】
通知情報１２６は、検出された状況のうち所定の条件に該当する状況を表す情報である。管理者は、通知情報１２６を見ることで、所定の条件に該当する状況が生じたことを知ることができる。ストレージ制御部７０又は管理部８８は、管理者による所定の操作に応答して、通知情報１２６の詳細である通知詳細情報１２２を生成して表示してもよい。「所定の条件に該当する状況」の一例として、転送速度向上がある。転送速度が向上するケースの例として、例えば下記がある。
・変更後の転送速度と同じ転送速度のドライブ１０が増設されたこと。これにより、図１１のＳ３５：ＮＯのケースでも、変更後の転送速度と同じ転送速度の空きチャンクが増え、結果として、チャンク１４Ｂ１１の移行先の空きチャンクが見つかることとなる。
・ドライブ１０Ａ２の転送速度がより速い転送速度に変わり（言い換えれば、転送速度が改善し）、上述のＳ３６及びＳ３７が行われたこと。
【００９９】
以上、本発明の一実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１００】
例えば、ドライブ１０Ａ１の転送速度が遅い転送速度に変わる（言い換えれば、転送速度が悪化する）ことがある。そのような場合には、例えば、図１０を参照して言えば、ドライブ１０Ａ１に基づくチャンク１４Ａ１１を含むチャンクグループ７０１Ａ内のチャンク１４Ｂ１１内のデータが、同じ遅い転送速度に関連付いた空きチャンクに移行され、チャンクグループ７０１Ａ内のチャンク１４Ｂ１１が、当該空きチャンクに変更されることになる。
【０１０１】
また、一つ以上のチャンクグループが、ボリューム４０が作成されたときにボリューム４０の全域に割り当てられることに代えて、ライト要求の受信に応じて動的にチャンクグループが割り当てられてもよい。例えば、ボリューム４０におけるライト先を指定したライト要求をノード２０が受信し、当該ライト先にチャンクグループが割り当てられていない場合に、ノード２０が、当該ライト先が属するライト先領域に、未割当のチャンクグループを割り当ててもよい。
【符号の説明】
【０１０２】
１００：ノード群  １１０：ストレージ制御システム
【図１】
0006858812.tif 000002
【図２】
0006858812.tif 000003
【図３】
0006858812.tif 000004
【図４】
0006858812.tif 000005
【図５】
0006858812.tif 000006
【図６】
0006858812.tif 000007
【図７】
0006858812.tif 000008
【図８】
0006858812.tif 000009
【図９】
0006858812.tif 000010
【図１０】
0006858812.tif 000011
【図１１】
0006858812.tif 000012
【図１２】
0006858812.tif 000013