(57)【要約】【課題】複数のノードの各ノードに分散して割り当てられた分散データを複数のノードおよび新たなノードに分散して割り当てて分散データを移動することにかかる時間を短縮すること。【解決手段】図１の（１）で示すように、複数のノードの各ノードは、各ノードとしてノード＃０、＃１に割り当てられた分散データを保持する。次に、図１の（２）で示すように、各ノードとしてノード＃０、＃１と、新たなノードとしてノード＃２とは、再分散する際に、分散データを記憶する記憶領域とは異なる空き記憶領域を確保する。そして、図１の（３）で示すように、各ノードとしてノード＃０、＃１は、保持した分散データを、移動先の記憶領域１１２に対して移動する移動処理を、各ノードそれぞれで独立して行う。【選択図】図１
2018181190.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとストレージとを有する複数のノードを有するストレージ装置であって、
前記複数のノードの各ノードは、前記各ノードに分散して割り当てられた分散データを保持し、
前記複数のノードに新たなノードが増設されて、前記分散データを前記複数のノードおよび前記新たなノードに分散して割り当てる際に、
前記各ノードおよび前記新たなノードは、
前記ストレージの記憶領域のうち、前記分散データを記憶する記憶領域とは異なる空き記憶領域を確保し、
前記各ノードは、
保持した前記分散データを、前記各ノードおよび前記新たなノードに確保した前記空き記憶領域に対して移動する移動処理を、前記各ノードそれぞれで独立して行う、
ことを特徴とするストレージ装置。
【請求項２】
前記各ノードは、
前記移動処理として、前記各ノードに割り当てられた前記分散データの部分データを、前記各ノードおよび前記新たなノードのうち、ノード増設後のノードに関する情報と前記部分データのアドレスと所定の割り当て規則とに基づき特定されるノードに送信し、
前記特定されるノードは、
受け付けた前記部分データを、前記特定されるノードが確保した前記空き記憶領域に書き込む、
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、書き込み対象アドレスに対する書き込み対象データの書き込み要求を受け付けた場合、自ノードが確保した前記空き記憶領域に前記書き込み対象データを書き込み、
前記移動処理によって前記部分データを受け付けた場合、前記空き記憶領域における前記部分データのアドレスにデータが書き込まれていなければ、自ノードが確保した前記空き記憶領域に前記部分データを書き込む、
ことを特徴とする請求項２に記載のストレージ装置。
【請求項４】
前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、読み込み対象アドレスに対する読み出し要求を受け付けた場合、自ノードが確保した前記空き記憶領域に前記読み出し対象アドレスに対する部分データが無ければ、ノード増設前のノードに関する情報と前記読み出し対象アドレスと前記所定の割り当て規則とに基づき特定されるノードに、前記読み出し対象アドレスを含む部分データの取得依頼を送信し、
当該特定されるノードは、
前記取得依頼を受け付けた場合、保持した前記分散データから、前記読み出し対象アドレスに対応する部分データを、前記取得依頼の送信元ノードに送信し、
前記取得依頼の送信元ノードは、
受け付けた前記部分データを前記読み出し要求の送信元に送信するとともに、受け付けた前記部分データを自ノードが確保した前記空き記憶領域に書き込む、
ことを特徴とする請求項２または３に記載のストレージ装置。
【請求項５】
前記複数のノードの各ノードに分散して割り当てられた分散データの部分データは、論理アドレスと、前記論理アドレスに対応するデータを格納した格納位置を示す物理アドレスとを有する第１のアドレス情報であって、
前記各ノードは、
前記第１のアドレス情報に対応して、前記第１のアドレス情報の格納位置を示す物理アドレスを有する第２のアドレス情報を有し、
連続した記憶領域における更新後の第２のアドレス情報に対応する第１のアドレス情報の論理アドレスに対応する位置に、前記更新後の第２のアドレス情報を格納するとともに、論理アドレスに対応するデータと前記第１のアドレス情報と前記第２のアドレス情報とを記憶する記憶領域とは異なる空き記憶領域に、論理アドレスに対応する更新後のデータ、または更新後の第１のアドレス情報を格納する、
ことを特徴とする請求項１〜４のいずれか一つに記載のストレージ装置。
【請求項６】
前記各ノードおよび前記新たなノードは、前記各ノードに割り当てられた前記第１のアドレス情報と、当該第１のアドレス情報の論理アドレスに対応するデータと、当該第１のアドレス情報に対応する第２のアドレス情報とを保持し、
前記ストレージの記憶領域のうち、前記第１のアドレス情報と当該第１のアドレス情報の論理アドレスに対応するデータと当該第１のアドレス情報とを記憶する記憶領域とは異なる、第１の空き記憶領域および連続した空き記憶領域である第２の空き記憶領域を確保し、
前記各ノードは、
前記移動処理として、前記各ノードに割り当てられた前記第１のアドレス情報を、前記各ノードおよび前記新たなノードのうち、ノード増設後のノードに関する情報と当該第１のアドレス情報の論理アドレスと前記所定の割り当て規則とに基づき特定されるノードに送信し、
当該特定されるノードは、
受け付けた前記第１のアドレス情報を、当該特定されるノードが確保した前記第１の空き記憶領域に書き込み、
受け付けた前記第１のアドレス情報を書き込んだ格納位置を示す物理アドレスを有する第２のアドレス情報を、当該特定されるノードが確保した前記第２の空き記憶領域に書き込む、
ことを特徴とする請求項５に記載のストレージ装置。
【請求項７】
前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、書き込み対象の論理アドレスに対する書き込み対象データの書き込み要求を受け付けた場合、自ノードが確保した前記第１の空き記憶領域に前記書き込み対象データを書き込み、
前記書き込み対象データの格納位置を示す物理アドレスと前記書き込み対象の論理アドレスとを有する第１のアドレス情報を、自ノードが確保した前記第１の空き記憶領域に書き込み、
前記第１の空き記憶領域に書き込んだ前記第１のアドレス情報の格納位置を示す物理アドレスを有する第２のアドレス情報を、自ノードが確保した前記第２の空き記憶領域に書き込み、
前記移動処理によって前記第１のアドレス情報を受け付けた場合、自ノードが確保した前記第１の空き記憶領域に書き込まれた前記第１のアドレス情報の論理アドレスと受け付けた前記第１のアドレス情報の論理アドレスとが異なれば、受け付けた前記第１のアドレス情報を、自ノードが確保した前記第１の空き記憶領域に書き込む、
ことを特徴とする請求項５または６に記載のストレージ装置。
【請求項８】
前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、読み込み対象の論理アドレスに対する読み出し要求を受け付けた場合、自ノードが確保した前記第１の空き記憶領域に前記読み出し対象の論理アドレスに対するデータが無ければ、ノード増設前のノードに関する情報と前記読み出し対象の論理アドレスと前記所定の割り当て規則とに基づき特定されるノードに、前記読み出し対象の論理アドレスを含む第１のアドレス情報の取得依頼を送信し、
前記取得依頼を受け付けた場合、保持した前記第１のアドレス情報から、前記読み出し対象の論理アドレスを含む第１のアドレス情報を、前記取得依頼の送信元ノードに送信し、
前記各ノードおよび前記新たなノードは、
前記第１のアドレス情報を受け付けた場合、受け付けた第１のアドレス情報の物理アドレスに格納されたデータを読み出す、
ことを特徴とする請求項５〜７のいずれか一つに記載のストレージ装置。
【請求項９】
プロセッサとストレージとを有し、各ノードに分散して割り当てられた分散データを保持する複数のノードの前記各ノードに、
前記複数のノードに新たなノードが増設されて、前記分散データを前記複数のノードおよび前記新たなノードに分散して割り当てる際に、前記ストレージの記憶領域のうち、前記分散データを記憶する記憶領域とは異なる空き記憶領域を確保し、
保持した前記分散データを、確保した前記空き記憶領域に対して移動する移動処理として、前記各ノードに割り当てられた前記分散データの部分データを、前記各ノードおよび前記新たなノードのうち、ノード増設後のノードに関する情報と前記部分データのアドレスと所定の割り当て規則とに基づき特定されるノードに送信する、
処理を実行させることを特徴とするストレージ制御プログラム。
【請求項１０】
プロセッサとストレージとを有し、各ノードに分散して割り当てられた分散データを保持する複数のノードの前記各ノードに、
前記複数のノードに新たなノードが増設されて、前記分散データを前記複数のノードおよび前記新たなノードに分散して割り当てる際に、前記ストレージの記憶領域のうち、前記分散データを記憶する記憶領域とは異なる空き記憶領域を確保し、
保持した前記分散データを、確保した前記空き記憶領域に対して移動する移動処理によって、前記複数のノードの他のノードから前記分散データの部分データを受け付けた場合、受け付けた前記部分データを、確保した前記空き記憶領域に書き込む、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
従来、データを複数のノードの各ノードに分散して割り当てることにより、前述のデータに対するＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）を各ノードで分散する技術がある。関連する先行技術として、例えば、第１のストレージと第２のストレージとにおける割り当て中の記憶領域の容量の間に生じた偏り度合いに応じて、第１および第２のストレージの記憶領域の割り当て状況を含む割り当て情報に基づき割り当て中の記憶領域の再配置を行うものがある。また、複数の第１記憶装置に第２記憶装置を増設する際、複数の第１ディスクの複数の管理単位に格納されたデータを複数の第１ディスクおよび第２ディスクの複数の管理単位に分散して格納する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１８２５０８号公報
【特許文献２】特開２００９−２３０３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、複数のノードの各ノードに分散して割り当てられた分散データを複数のノードおよび新たなノードに分散して割り当てる際、あるデータを移動させた後でないと次のデータを移動できないといった順序制約が発生することがある。そして、順序制約が発生すると、前述の次のデータを移動するノードは、あるデータの移動が終わるまで待機することになり、待機した分、分散データを複数のノードおよび新たなノードに分散して割り当てて、分散データを移動することに時間がかかることになる。
【０００５】
１つの側面では、本発明は、複数のノードの各ノードに分散して割り当てられた分散データを複数のノードおよび新たなノードに分散して割り当てて分散データを移動することにかかる時間を短縮することができるストレージ装置、およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの実施態様では、ストレージ装置、およびストレージ制御プログラムは、プロセッサと記憶装置とを有する複数のノードの各ノードが、各ノードに分散して割り当てられた分散データを保持し、複数のノードに新たなノードが増設されて、各ノードに分散して割り当てられた分散データを複数のノードおよび新たなノードに分散して割り当てる際に、各ノードおよび新たなノードは、前記記憶装置の記憶領域から分散データを記憶する記憶領域とは異なる空き記憶領域を確保し、各ノードは、保持した分散データを、各ノードおよび新たなノードに確保した空き記憶領域に対して移動する移動処理を、各ノードそれぞれで独立して行う。
【発明の効果】
【０００７】
一つの側面では、本発明は、複数のノードの各ノードに分散して割り当てられた分散データを複数のノードおよび新たなノードに分散して割り当てて分散データを移動することにかかる時間を短縮することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかるストレージ装置１０１の動作例を示す説明図である。
【図２】図２は、ストレージシステム２００の構成例を示す説明図である。
【図３】図３は、ノード＃０のハードウェア構成例を示す説明図である。
【図４】図４は、ノード＃０の機能構成例を示す説明図である。
【図５】図５は、Ｉ／Ｏの標準化方式の一例を示す説明図である。
【図６】図６は、メタアドレスデータと論物メタデータとユーザデータユニットとの関係を示す説明図である。
【図７】図７は、メタデータ管理部／データ処理管理部４０４の機能構成例を示す説明図である。
【図８】図８は、データ再分散処理手順の一例を示すフローチャートである。
【図９】図９は、データ再分散処理の動作例を示す説明図である。
【図１０】図１０は、データ再分散中のＷｒｉｔｅ発生時処理手順の一例を示すフローチャートである。
【図１１】図１１は、データ再分散中のＷｒｉｔｅ発生時の動作例を示す説明図である。
【図１２】図１２は、データ再分散中のＲｅａｄ発生時処理手順の一例を示すフローチャートである。
【図１３】図１３は、データ再分散中のＲｅａｄ発生時の動作例を示す説明図である。
【図１４】図１４は、メタデータ管理部によるデータ移動手順の動作例を示す説明図である。
【図１５】図１５は、ＲｅａｄＩ／Ｏ処理契機のメタデータ移動処理手順の一例を示すフローチャートである。
【図１６】図１６は、増設されたノード以外のバックグラウンド移動処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のストレージ装置、およびストレージ制御プログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかるストレージ装置１０１の動作例を示す説明図である。ストレージ装置１０１は、ストレージの記憶領域を提供するコンピュータである。より具体的には、ストレージ装置１０１は、複数のノードを有し、ノードが有するストレージの記憶領域を、ストレージ装置１０１の利用者に提供する。複数のノードの各ノードは、プロセッサとストレージとを有する。
【００１１】
ストレージ装置１０１は、複数のノードのストレージの記憶領域に対するＩ／Ｏの負荷分散を行うために、複数のノードの各ストレージの記憶領域が記憶するデータを、複数のノードの各ノードに分散して割り当てる。以下、各ノードに分散して割り当てたデータを「分散データ」と表記することがある。また、分散データの一部分のデータを、「部分データ」と表記することがある。
【００１２】
図１の上部の例では、ストレージ装置１０１は、ノード＃０、＃１を有し、ノード＃０には、分散データとしてデータ０、２、４、６が割り当てられており、ノード＃１には、分散データとしてデータ１、３、５、７が割り当てられている。データ０〜７のそれぞれが部分データとなる。データ０〜７は、割り当てられたノードのストレージに記憶される。データ０〜７は、例えば、１つの論理ボリュームに含まれるデータである。論理ボリュームを作成する技術としては、例えば、複数の記憶装置を組み合わせて仮想的な論理ボリュームとして運用するＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）技術がある。
【００１３】
また、ストレージ装置１０１に、新たなノードが追加されることがある。この場合、各ノードに分散して割り当てられた分散データを、複数のノードおよび新たなノードに分散して割り当てることになる。以下、複数のノードおよび新たなノードに分散することを、「再分散」すると表記することがある。再分散する際には、データの移動が発生することになる。
【００１４】
しかしながら、再分散する際に、分散データの部分データを移動させる順序制約が発生することがある。例えば、図１の上部で示す状態から、新たなノードとしてノード＃２が追加され、以下のようにデータを再分散するとする。
【００１５】
ノード＃０：データ０、３、６
ノード＃１：データ１、４、７
ノード＃２：データ２、５
【００１６】
この場合、例えば、データ３は、ノード＃１からノード＃０に移動することになるが、データ３の移動先には、データ２があるため、データ３の移動の前にデータ２を先に移動させることになる。また、例えば、データ４は、ノード＃０からノード＃１に移動することになるが、データ４の移動先には、データ３があるため、データ４の移動の前にデータ３を先に移動させることになる。このような、あるデータを移動させた後でないと次のデータを移動できないといった順序制約が発生すると、前述の次のデータを移動するノードは、あるデータの移動が終わるまで待機することになる。このように、順序制約が発生すると、待機した分、分散データを複数のノードおよび新たなノードに分散して割り当てて、分散データを移動することに時間がかかることになる。
【００１７】
また、再分散する間に、ストレージ装置１０１を利用する利用者等から、Ｉ／Ｏが発生することがある。例えば、書き込み要求が発生した際に、新規のデータで上書きされる場合、移動済であれば単に上書きすればよいが、移動がまだ済んでいない場合、移動を抑制しなければならない。そこで、分散データの部分データごとの移動済か否かを示す移動マップを作成して、状態を監視することになる。また、読み出し要求が発生した際に、読み出した部分データをそのまま移動することができれば効率的だが、前述したように、順序制約が発生する場合には移動することができず、読み出した部分データを有効活用することができない。
【００１８】
そこで、本実施の形態では、新たなノードを増設し分散データを再分散する際、複数のノードの各ノードが、該当の分散データを移動元として保持し、空の記憶領域を移動先として割り当てて移動処理を行うことについて説明する。
【００１９】
図１を用いて、ストレージ装置１０１の動作例について説明する。図１の（１）で示すように、複数のノードの各ノードは、各ノードとしてノード＃０、＃１に割り当てられた分散データを保持する。図１の例では、ノード＃０は、ノード＃０に割り当てられた分散データとなるデータ０、２、４、６が格納された記憶領域を、移動元の記憶領域１１１として保持する。同様に、ノード＃１は、ノード＃１に割り当てられた分散データとなるデータ１、３、５、７が格納された記憶領域を、移動元の記憶領域１１１として保持する。
【００２０】
次に、図１の（２）で示すように、各ノードとしてノード＃０、＃１と、新たなノードとしてノード＃２とは、再分散する際に、分散データを記憶する記憶領域とは異なる空き記憶領域を確保する。図１の例では、ノード＃０〜＃２は、移動元の記憶領域１１１とは異なる空き領域を、移動先の記憶領域１１２として確保する。
【００２１】
そして、図１の（３）で示すように、各ノードとしてノード＃０、＃１は、保持した分散データを、移動先の記憶領域１１２に対して移動する移動処理を、各ノードそれぞれで独立して行う。ここで、分散データの各部分データの移動先ノードの特定方法として、各ノードは、例えば、ノード増設後に関する情報と、部分データのアドレスと、所定の割り当て規則とから移動先ノードを特定する。ノード増設後に関する情報は、例えば、ノード増設後のノードの数でもよいし、ノード増設後のノードの識別情報でもよい。前述の特定方法では、例えば、各ノードは、部分データのアドレスを部分データのデータサイズで除算し、得られた商を、さらに、ノード増設後のノードの数で除算した余りに対応する識別情報となるノードを、移動先ノードとして特定する。
【００２２】
図１の例では、説明を単純化するため、各ノードは、データ０〜７について、データ０〜７における数値部分を、図１におけるノード増設後のノードの数である３で除算した余りに対応するノードを移動先ノードとして特定するものとする。具体的には、ノード＃０は、データ２の移動先ノードがノード＃２であると特定し、データ４の移動先ノードがノード＃１であると特定する。また、ノード＃１は、データ３の移動先ノードがノード＃０であると特定し、データ５の移動先ノードがノード＃２であると特定する。
【００２３】
そして、各ノードは、部分データを、該当の部分データに対応する移動先ノードに移動する移動処理を独立して行う。移動はどこからでも同時に移動ができるため、各ノードが自律的に多重で移動処理ができ、再分散にかかる時間を短縮することができる。
【００２４】
また、各ノードおよび新たなノードは、新たなノードが増設された後に、書き込み対象アドレスに対する書き込み対象データの書き込み要求を受け付けた場合、自ノードが確保した移動先の記憶領域１１２に書き込み対象データを書き込んでもよい。ここで、データに対するアドレスは、ストレージ装置１０１の利用者に、ストレージ装置１０１の物理アドレスを提供しているならば物理アドレスとなるし、物理アドレスに対応する論理アドレスを提供しているならば論理アドレスとなる。そして、各ノードおよび新たなノードは、部分データを受け付けた場合、移動先の記憶領域１１２における、受け付けた部分データのアドレスにデータが書き込まれていなければ、受け付けた部分データを、自ノードが確保した移動先の記憶領域１１２に書き込む。
【００２５】
例えば、図１の例では、説明を簡略化するため、データ０〜７の数値部分がアドレスであるとする。そして、ノード＃０によるデータ４の移動処理を行う前に、ノード＃１が、データ４の書き込み要求を受け付けたとする。この場合、ノード＃１は、データ４を移動先の記憶領域１１２に書き込む。そして、ノード＃０からデータ４を受け付けた場合、移動先の記憶領域１１２におけるデータ４のアドレスには、前述した書き込み要求により書き込んだデータがある。従って、ノード＃１は、受け付けた部分データをノード＃１が確保した移動先の記憶領域１１２に書き込まず、受け付けたデータ４を破棄する。また、図１では示していないが、ノード＃１が、ノード＃０からデータ４以外の他の部分データを受け付けたとする。この場合、ノード＃１は、移動先の記憶領域１１２における、他の部分データのアドレスにデータが無ければ、他の部分データをノード＃１が確保した移動先の記憶領域１１２に書き込む。
【００２６】
このように、移動先の部分データが有効であるかは、移動先の記憶領域１１２内の部分データの有無で判断できるため、各ノードおよび新たなノードは、移動マップでの監視を使用しなくてよくなる。
【００２７】
また、各ノードおよび新たなノードは、新たなノードが増設された後に、読み込み対象アドレスに対する読み出し要求を受け付けた場合、自ノードが確保した移動先の記憶領域１１２に読み出し対象アドレスに対する部分データがあるか無いか判断する。移動先の記憶領域１１２に読み出し対象アドレスに対する部分データが無ければ、各ノードおよび新たなノードは、移動元ノードの特定方法により特定されるノードに、読み出し対象アドレスを含む部分データの取得依頼を送信する。ここで、移動元ノードの特定方法は、前述した移動先ノードの特定方法におけるノード増設後のノードに関する情報が、ノード増設前のノードに関する情報に置き換わっただけである。そして、前述した特定されるノードは、取得依頼を受け付けた場合、各ノードに割り当てられた分散データから、移動元の記憶領域１１１内の読み出し対象アドレスに対応する部分データを、取得依頼の送信元ノードに送信する。取得依頼の送信元ノードは、受け付けた部分データを読み出し要求の送信元に送信するとともに、受け付けた部分データを、自ノードが確保した移動先の記憶領域１１２に書き込む。
【００２８】
例えば、ノード＃０によるデータ４の移動処理を行う前に、ノード＃１が、データ４の読み出し要求を受け付けたとする。この場合、ノード＃１は、自ノードが確保した移動先の記憶領域１１２に読み出し対象アドレスに対する部分データがあるか無いか判断する。この場合、移動先の記憶領域１１２にはデータ４は無いため、ノード＃１は、移動元ノードの特定方法によって特定されるノード＃０に、データ４の取得依頼を送信する。そして、ノード＃０は、移動元の記憶領域１１１内のデータ４を、取得依頼の送信元ノードとしてノード＃１に送信する。ノード＃１は、受け付けたデータ４を読み出し要求の送信元に送信するとともに、データ４を、自ノードが確保した移動先の記憶領域１１２に書き込む。
【００２９】
これにより、順序制約が発生しないため、各ノードおよび新たなノードは、読み出した部分データをそのまま移動することができる。次に、ストレージ装置１０１を、ストレージシステム２００に適用した例を、図２を用いて説明する。
【００３０】
図２は、ストレージシステム２００の構成例を示す説明図である。ストレージシステム２００は、ストレージ制御装置であるノード＃０、＃１と、業務サーバ２０１と、ストレージ（記憶装置）２０２とを含む。また、ストレージシステム２００は、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク２１０により、作業者端末２０３と接続する。
【００３１】
業務サーバ２０１は、ストレージ２０２の記憶領域を利用するコンピュータである。業務サーバ２０１は、例えば、Ｗｅｂサーバ、ＤＢ（ＤａｔａＢａｓｅ）サーバである。
【００３２】
記憶装置２０２は、データを記憶する不揮発性メモリである。例えば、記憶装置２０２は、半導体素子によって形成された半導体メモリを含むＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。また、記憶装置２０２は、ＲＡＩＤを形成するため、複数存在する。また、記憶装置２０２は、ノード＃０、＃１からアクセスされるため、図２では、ノード＃０、＃１から矢印により接続されているが、これに限らない。例えば、記憶装置２０２は、ノード＃０内にあってもよいし、ノード＃１内にあってもよいし、ノード＃０、＃１の外部にあってもよい。
【００３３】
作業者端末２０３は、ストレージシステム２００に対して作業を行う作業者ｏｐが操作するコンピュータである。次に、ノード＃０のハードウェア構成について、図３を用いて説明する。
【００３４】
なお、図２の例では、ストレージシステム２００は、２つのノードを有するが、３以上のノードがあってもよい。次に、ノードのハードウェア構成として、ノード＃０のハードウェア構成を、図３を用いて説明する。ノード＃１等の他のノードも、ノード＃０と同様なハードウェアを有するため、説明を省略する。
【００３５】
図３は、ノード＃０のハードウェア構成例を示す説明図である。図３において、ノード＃０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、記憶装置２０２と、通信インターフェース３０４と、を含む。また、ＣＰＵ３０１〜ＲＡＭ３０３、記憶装置２０２、通信インターフェース３０４はバス３０５によってそれぞれ接続される。
【００３６】
ＣＰＵ３０１は、ノード＃０の全体の制御を司る演算処理装置である。また、ＣＰＵ３０１は、複数のプロセッサコアを有してもよい。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００３７】
通信インターフェース３０４は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０４は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース３０４には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００３８】
また、作業者ｏｐが、ノード＃０を直接操作する場合、ノード＃０は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
【００３９】
また、業務サーバ２０１は、ＣＰＵと、ＲＯＭと、ＲＡＭと、ディスクドライブと、ディスクと、通信インターフェースとを有する。また、作業者端末２０３は、ＣＰＵと、ＲＯＭと、ＲＡＭと、ディスクドライブと、ディスクと、通信インターフェースと、ディスプレイ、キーボード、マウスとを有する。
【００４０】
次に、ノード＃０が有する機能について、図４を用いて説明する。また、ノード＃１等の他のノードも、ノード＃０と同様なハードウェアを有するため、説明を省略する。
【００４１】
図４は、ノード＃０の機能構成例を示す説明図である。ノード＃０は、制御部４００を有する。制御部４００は、上位接続部４０１と、ＣＡＣＨＥ（キャッシュ）管理部４０２と、Ｄｅｄｕｐｅ（重複）管理部４０３と、メタデータ管理部／データ処理管理部４０４と、デバイス管理部４０５とを有する。制御部４００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク部２０２などである。また、各部の処理結果は、ＲＡＭ３０３や、ＣＰＵ３０１のレジスタ、ＣＰＵ３０１のキャッシュメモリ等に格納される。
【００４２】
上位接続部４０１は、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）／ｉＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）などのプロトコルドライバと、ＣＡＣＨＥ管理部４０２〜ＲＡＩＤ管理部４０５との情報の受け渡しを行う。
【００４３】
ＣＡＣＨＥ管理部４０２は、ＲＡＭ３０３上のユーザデータを管理する。具体的には、ＣＡＣＨＥ管理部４０２は、Ｉ／Ｏに対するＨｉｔ／Ｍｉｓｓ判定、Ｓｔａｇｉｎｇ／ＷｒｉｔｅＢａｃｋなどのスケジュールを行う。
【００４４】
Ｄｅｄｕｐｅ管理部４０３は、データ重複排除／復元の制御を行うことで、記憶装置２０２内に格納されている固有のユーザデータを管理する。
【００４５】
ここで、メタデータ管理部／データ処理管理部４０４は、第１のアドレス情報と、第２のアドレス情報とを管理する。第１のアドレス情報は、図１で示した、複数のノードの各ノードに分散して割り当てられた分散データの部分データに相当する。そして、第１のアドレス情報は、論理アドレスと、前述の論理アドレスに対応するデータを格納した格納位置を示す物理アドレスとを有する情報である。また、第２のアドレス情報は、第１のアドレス情報に対応して、第１のアドレス情報の格納位置を示す物理アドレスを有する情報である。以下、論理アドレスに対応するデータを、「ユーザデータ」と表記し、第１のアドレス情報を、「論物メタデータ」と表記し、第２のアドレス情報を、「メタアドレスデータ」と表記する。
【００４６】
より具体的には、メタデータ管理部／データ処理管理部４０４は、メタデータ管理部として、メタアドレスデータ、および、論物メタデータを管理するとともに、データ処理管理部として、ユーザデータを格納する領域を示すユーザデータユニット（データログとも呼ばれる）を管理する。メタデータ管理部は、メタアドレスデータ、および、論物メタデータを使用して、仮想ボリュームの論理アドレスと物理領域の物理アドレス変換処理を行う。また、データ処理管理部は、ユーザデータを連続的なログ構造で管理し、ストレージ（記憶装置）２０２に追記書きを行う。データ処理管理部は、また、データの圧縮解凍、ドライブグループの物理スペースを管理し、データ配置を行う。
【００４７】
データ配置として、データ処理管理部は、メタアドレスデータを更新する際には、連続した記憶領域における更新後のメタアドレスデータに対応する論物メタデータの論理アドレスに対応する位置に、更新後のメタアドレスデータを格納する。ここで、論理アドレスに対応する位置は、例えば、論理アドレスを、メタアドレスデータのサイズで除算した商の値に位置するＲＵである。また、データ処理管理部は、ユーザデータユニットまたは論物メタデータを更新する際には、ユーザデータユニットと論物メタデータとを記憶する記憶領域とは異なる空き記憶領域に、更新後のユーザデータユニット、または更新後の論物メタデータを格納する。
【００４８】
シン・プロビジョニングの物理割当の単位は、一般に固定サイズのチャンク単位で行われ、１チャンクは１ＲＡＩＤユニットに該当する。以降の説明では、チャンクをＲＡＩＤユニットと呼称する。ＲＡＩＤ管理部４０５は、１チャンクのデータで１ＲＡＩＤユニットを形成し、ＲＡＩＤユニット単位でドライブグループへの配置を行う。メタアドレスデータ、論物メタデータ、ユーザデータユニット、ドライブグループについては、図５で説明する。
【００４９】
図５は、Ｉ／Ｏの標準化方式の一例を示す説明図である。ストレージシステム２００は、ノード間でＩ／Ｏを平準化するため、論理ボリュームのＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）番号と論理アドレスをキーにして、固定サイズでＩ／Ｏ先ノードを分割し、各ノードに均等に割り振る。論理アドレスは、例えば、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）により示される。また、固定サイズは、例えば、８［ＭＢ］である。固定サイズでＩ／Ｏ先ノードを分割し各ノードに均等に割り振ることにより、１論理ボリュームのメタデータ、およびユーザデータユニットが全ノードに分散して配置することになる。
【００５０】
例えば、図５の例では、ＬＵＮ：０の先頭の８［ＭＢ］のＩ／Ｏ先ノードは、ノード＃０であり、次の８［ＭＢ］のＩ／Ｏ先ノードは、ノード＃１である。図５の例では、ＬＵＮ：０〜２のＩ／Ｏ先ノードについて、ノード＃０は白抜きの矩形で示し、ノード＃１は、まばらな水玉模様の網掛けの矩形で示し、ノード＃２は、密な水玉模様の網掛けの矩形で示し、ノード＃３は、斜めの格子模様の網掛けの矩形で示す。例えば、図５で示すように、各ＬＵＮ：０〜２のＩ／Ｏ先ノードは、ノード＃０〜＃３に分散される。
【００５１】
各ノードは、複数のノードブロックのいずれかに含まれる。図５の例では、ノード＃０、＃１は、ノードブロック＃０に含まれており、ノード＃２、＃３は、ノードブロック＃１に含まれる。そして、１つのノードブロック内には、１つ以上のプールが必要となる。図５の例では、ノードブロック＃０、＃１内には、プールｐｌがある。
【００５２】
また、各ノードには、対応するドライブグループがある。ドライブグループは、複数の記憶装置２０２から形成されたＲＡＩＤ６のプールであり、ＲＡＩＤグループに相当する。図５では、ノード＃０〜＃３のそれぞれに対応するドライブグループｄｇ＃０〜＃３がある。
【００５３】
また、図５において、ドライブグループｄｇ内の実線の四角は、ＲＵ（ＲＡＩＤ  Ｕｎｉｔ）である。ＲＵは、プールから物理割り当てされる２４［ＭＢ］程度の連続した物理領域である。そして、図５の上部のＬＵＮ：０〜２のＩ／Ｏ先ノードと、図５の下部のＲＵとの対応関係について、例えば、ＬＵＮ：０の先頭の８［ＭＢ］は、ドライブグループｄｇ＃０の最上位の行における左から１番目のＲＵに対応する。また、ＬＵＮ：０の次の８［ＭＢ］は、ドライブグループｄｇ＃１の最上位の行における左から１番目のＲＵと、２番目のＲＵに対応する。また、ＲＵには、メタデータやユーザデータユニットが格納される。このように、平準化されたＩ／Ｏ依頼を、ノードを跨がずに受けるため、メタデータも各ノード間で均等に固定マッピングされ、分散される。
【００５４】
図５の例では、メタデータは、ドライブグループｄｇ＃０〜＃３内の破線で示すデータである。また、図５の例では、各メタデータは、ＲＵ２つ分のデータであるが、これに限らなく、ＲＵ１つ分のデータである場合もあるし、ＲＵ３つ以上のデータである場合もある。また、メタデータに対応するユーザデータユニットは、メタデータが格納されたドライブグループｄｇ内のいずれかのＲＵに格納される。例えば、ＬＵＮ：１の先頭の８［ＭＢ］のＩ／Ｏ先ノードは、ノード＃１であり、メタデータは、ドライブグループｄｇ＃１の最上位の行における左から３番目のＲＵと、４番目のＲＵとに格納される。そして、前述のメタデータに対応するユーザデータユニットは、ドライブグループｄｇ＃１のいずれかのＲＵに格納される。
【００５５】
メタデータは、論物メタデータとメタアドレスデータとの総称である。論物メタデータは、論理ボリュームのＬＢＡとユーザデータユニットが格納されている物理位置を管理する情報である。論物メタデータは、８［ｋＢ］単位で管理される。より具体的には、論物メタデータには、該当の論物メタデータに対応するユーザデータユニットが格納されたＲＵ番号と、該当の論物メタデータに対応するユーザデータユニットが格納されたＲＵ内における、前述のユーザデータユニットのオフセット位置とが含まれる。メタアドレスデータは、論物メタデータが格納されている物理位置を管理する情報である。メタアドレスデータは、論物メタデータ単位で管理される。より具体的には、メタアドレスデータには、該当のメタアドレスデータに対応する論物メタデータが格納されたＲＵ番号と、該当のメタアドレスデータに対応する論物メタデータが格納されたＲＵ内における、前述の論物メタデータのオフセット位置とが含まれる。
【００５６】
ユーザデータユニットは、データ圧縮されたユーザデータを格納する記憶領域を示すものであり、例えば、８ＫＢ単位に圧縮されたデータを格納するデータ部と、ヘッダ部（参照メタとも呼ばれる）とを有する。ヘッダ部には、圧縮データのハッシュ値や圧縮データをポイントするための論物メタの情報等が格納される。圧縮データのハッシュ値は、例えば、ＳＨＡ１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）により算出された値である。なお、ハッシュ値は重複を検索する際のキーワードとして利用される。
【００５７】
次に、メタアドレスデータと論物メタデータとユーザデータユニットとの関係を、図６を用いて説明する。
【００５８】
図６は、メタアドレスデータと論物メタデータとユーザデータユニットとの関係を示す説明図である。図６では、メタアドレスデータと論物メタデータとユーザデータユニットとの関係について、メモリ上とディスク上の構造を示す。さらに、図６では、ドライブグループｄｇ内におけるメタアドレスデータと論物メタデータとユーザデータユニットとの配置例を示す。
【００５９】
図６の例では、図６の左側が、ノード＃０、＃１等における、ＲＡＭ３０３等のメモリ上のデータ配置を示し、図６の中央、および右側が、記憶装置２０２上でのデータの配置例を示す。図６では、３つのメタアドレスデータ６０１〜６０３と、メタアドレスデータ６０１〜６０３のそれぞれに対応する論物メタデータとユーザデータユニットとを示す。ここで、図６では、メタアドレスデータ６０１と、メタアドレスデータ６０１に対応する論物メタデータとユーザデータユニットとについては、白抜きの矩形で示す。また、メタアドレスデータ６０２と、メタアドレスデータ６０２に対応する論物メタデータとユーザデータユニットとについては、まばらな水玉模様の網掛けの矩形で示す。また、メタアドレスデータ６０３と、メタアドレスデータ６０３に対応する論物メタデータとユーザデータユニットとについては、密な水玉模様の網掛けの矩形で示す。
【００６０】
そして、図６では、記憶装置２０２内には、ドライブグループｄｇがあり、ドライブグループｄｇの各ＲＵは、メタアドレスデータ、論物メタデータ、ユーザデータユニットのいずれかが格納されている。図６で示すドライブグループｄｇの各ＲＵは、メタアドレスが格納されている場合には白抜きの矩形で示し、論物メタデータが格納されている場合には塗りつぶした矩形で示し、ユーザデータユニットが格納されている場合には右上から左下への斜線を付与した矩形で示す。
【００６１】
メタアドレスデータは、図４でも説明したように、論理ユニット（ＬＵＮ単位）でドライブグループｄｇ内の連続したＲＵに配置される。メタアドレスデータは、更新の場合は上書き保存される。一方で、論物メタデータとユーザデータユニットとは、追記型で書き込まれるため、図６で示すドライブグループｄｇのように、論物メタデータやユーザデータユニットはＲＵ間で飛び飛びになる。例えば、図６の例では、論物メタデータが論物キャッシュ上で追記型で書き込まれていった結果、ある時点でデータ量が所定の閾値を超えた際に、ＲＵ：１７が割り当てられ、論物キャッシュから論物メタデータがドライブグループのＲＵ：１７に書き込まれる。そのため、論物メタデータＲＵ：１３とＲＵ：１７は、時間差で書き込まれ、その間の１４〜１６にユーザデータユニットのＲＵが書き込まれたために、飛び飛びになっている。
【００６２】
図６では、ＲＵ：０、１、１３、１４のデータの詳細を示す。ＲＵ：０は、ＬＵＮ＃０内のメタアドレスデータ６０１を含む。また、ＲＵ：１は、ＬＵＮ＃１内のメタアドレスデータ６０２、６０３を含む。また、ＲＵ：１３は、メタアドレスデータ６０１〜６０３に対応する論物メタデータ６１１〜６１３を含む。また、ＲＵ：１４は、メタアドレスデータ６０１に対応するユーザデータユニット６２１−０、６２１−１と、メタアドレスデータ６０２に対応するユーザデータユニット６２２−０、６２２−１と、メタアドレスデータ６０３に対応するユーザデータユニット６２３−０、６２３−１とを含む。ここで、ユーザデータユニットが２つに分かれている理由は、ユーザデータユニット６２ｘ−０が、ヘッダ部分を示し、ユーザデータユニット６２ｘ−１が、圧縮されたユーザデータを示すためである。
【００６３】
また、図６では、ノード＃０、＃１のメモリ上には、メタアドレスキャッシュ６００と、論物キャッシュ６１０とが確保されている。そして、メタアドレスキャッシュ６００は、メタアドレスデータの一部をキャッシュする。図６の例では、メタアドレスキャッシュ６００は、メタアドレスデータ６０１〜６０３をキャッシュする。また、論物キャッシュ６１０は、論物メタデータをキャッシュする。図６の例では、論物キャッシュ６１０は、論物メタデータ６１１〜６１３をキャッシュする。
【００６４】
図７は、メタデータ管理部／データ処理管理部４０４の機能構成例を示す説明図である。メタデータ管理部／データ処理管理部４０４は、保持部７０１と、確保部７０２と、移動処理実行部７０３と、書き込み部７０４と、読み出し部７０５とを有する。まず、図１で示した（１）〜（３）の処理、すなわち、新たなノードが増設された際の機能について説明する。
【００６５】
保持部７０１は、再分散する際に、論物メタデータを割り当てる際に、各ノードに割り当てられた論物メタデータと、該当の論物メタデータの論理アドレスに対応するユーザデータユニットと、該当の論物メタデータに対応するメタアドレスデータとを保持する。
【００６６】
確保部７０２は、論物メタデータを割り当てる際に、保持部７０１が保持したデータを記憶する記憶領域とは異なる、第１の空き記憶領域および連続した空き記憶領域である第２の空き記憶領域を確保する。ここで、保持部７０１が保持したデータとは、論物メタデータと該当の論物メタデータの論理アドレスに対応するデータと該当の論物メタデータである。
【００６７】
移動処理実行部７０３は、確保部７０２が確保した空き記憶領域に、論物メタデータを移動する移動処理を、各ノードそれぞれで独立して行う。具体的には、移動元となる各ノードにおける移動処理実行部７０３は、移動処理として、各ノードに割り当てられた論物メタデータを、各ノードおよび新たなノードのうち、図１で説明した移動先ノードの特定方法に基づき特定されるノードに送信する。そして、特定されるノードにおける移動処理実行部７０３は、受け付けた論物メタデータを、自ノードが確保した第１の空き記憶領域に書き込む。また、特定されるノードにおける移動処理実行部７０３は、受け付けた論物メタデータを書き込んだ格納位置を示す物理アドレスを有するメタアドレスデータを、第２の空き記憶領域に書き込む。
【００６８】
次に、新たなノードが増設された後に、書き込み対象アドレスに対する書き込み対象データの書き込み要求を受け付けた場合について説明する。この場合、各ノードおよび新たなノードのうち、書き込み要求を受け付けたノードの書き込み部７０４は、自ノードが確保した第１の空き記憶領域に書き込み対象データを書き込む。また、書き込み要求を受け付けたノードの書き込み部７０４は、書き込み対象データの格納位置を示す物理アドレスと書き込み対象の論理アドレスとを有する論物メタデータを、自ノードが確保した第１の空き記憶領域に書き込む。また、書き込み要求を受け付けたノードの書き込み部７０４は、第１の空き記憶領域に書き込んだ論物メタデータの格納位置を示す物理アドレスを有するメタアドレスデータを、自ノードが確保した第２の空き記憶領域に書き込む。
【００６９】
各ノードおよび新たなノードの移動処理実行部７０３は、移動処理により論物メタデータを受け付けた場合、受け付けた論物メタデータの論理アドレスと自ノードが確保した第１の空き記憶領域に書き込まれた論物メタデータの論理アドレスとが異なるか判断する。ここで、２つの論理アドレスが異なるかについて、前述の移動処理実行部７０３は、例えば、第２の空き領域における、受け付けた論物メタデータの論理アドレスに対応する位置に、メタアドレスデータが既にあるか否かにより判断してもよい。第２の空き領域における、受け付けた論物メタデータの論理アドレスに対応する位置にメタアドレスデータが既にある場合、２つの論理アドレスが一致すると判断し、該当の位置にメタアドレスデータがまだ無い場合、２つの論理アドレスが異なると判断してもよい。２つの論理アドレスが異なれば、前述の移動処理実行部７０３は、受け付けた論物メタデータを、自ノードが確保した第１の空き記憶領域に書き込む。
【００７０】
次に、新たなノードが増設された後に、読み出し対象アドレスに対する読み出し要求を受け付けた場合について説明する。この場合、各ノードおよび新たなノードのうち、読み出し要求を受け付けたノードの読み出し部７０５は、自ノードが確保した第１の空き記憶領域に読み出し対象の論理アドレスに対するデータがあるか無いかを判断する。そして、第１の空き記憶領域に読み出し対象の論理アドレスに対するデータが無ければ、前述の読み出し部７０５は、図１で説明した移動元ノードの特定方法に基づき特定されるノードに、読み出し対象の論理アドレスを含む論物メタデータの取得依頼を送信する。前述の特定されるノードにおける読み出し部７０５は、取得依頼を受け付けた場合、保持した論物メタデータから、読み出し対象の論理アドレスを含む論物メタデータを、取得依頼の送信元ノードに送信する。そして、各ノードおよび新たなノードにおける読み出し部７０５は、論物メタデータを受け付けた場合、受け付けた論物メタデータの物理アドレスに格納されたユーザデータユニットを読み出す。
【００７１】
（ノードの増設について）
次に、ストレージシステム２００にノードを増設する際の手順について説明する。作業者ｏｐは、ノード増設手段手順に従い、ハード的にノードを増設する。次に、作業者端末２０３は、作業者ｏｐにＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供し、作業者ｏｐの操作によって、既存プールに対して、増設ノードの記憶装置２０２を使ったドライブグループを追加することで、プールの拡張が行われる。
【００７２】
プールの拡張を契機に、メタデータ管理部は、論物メタデータ、メタアドレスデータを含むメタデータを移動する。具体的には、論物メタデータについて、メタデータ管理部は、旧担当ノードの記憶装置２０２に記録されている論物メタデータを新担当ノードのＤｉｓｋにコピーする。ここで、論物メタデータは追記書きされるため、記憶装置２０２内の配置はランダムである。一方、メタアドレスデータについて、メタデータ管理部は、論物メタデータの位置を確定させた後に移動する。この理由として、移動先のメタアドレスデータには、新担当ノードにおける論物メタデータの記録位置の情報を含むためである。従って、論物メタデータの移動後に、メタアドレスデータを確定させることができる。
【００７３】
また、メタデータの移動中にも、各ノードはＩ／Ｏを継続して受け付け、受け付けたＩ／Ｏに対応する処理を継続する。なお、ユーザデータユニットに関しては移動しない。プールの拡張を契機として、各ノードは、新しいＷｒｉｔｅによるユーザデータユニットを、新しいノード構成で平準化した後の担当ノードのディスクに書き込む。
【００７４】
また、ノードの増設に関して、ノード増設前に負荷分散していた負荷分散方法を、ノード増設後も運用を継続したまま適用する必要がある。このため、ノード増設前のノード構成で分散されたユーザデータ、およびストレージシステム２００の管理データを、ノード増設後のノード構成で再分散を行うことが求められる。また、各ノードは、データ再分散を実施中にも運用を継続することが求められる。そして、データ再分散を実施中にも運用を継続するためには、ノード増設前後に格納されたデータにアクセスでき、かつプール作成、削除、ボリューム作成、削除、新規Ｗｒｉｔｅが可能になることが求められる。
【００７５】
次に、データ再分散処理のフローチャートを図８で示し、データ再分散処理の動作例を図９で示す。また、データ再分散中のＷｒｉｔｅ発生時処理のフローチャートを図１０で示し、データ再分散中のＷｒｉｔｅ発生時処理の動作例を図１１で示す。また、データ再分散中のＲｅａｄ発生時処理のフローチャートを図１２で示し、データ再分散中のＲｅａｄ発生時処理の動作例を図１３で示す。なお、図８、図１２で示す破線の矢印は、ノード間でデータを送信することを示す。
【００７６】
図８は、データ再分散処理手順の一例を示すフローチャートである。また、図９は、データ再分散処理の動作例を示す説明図である。図８と図９とでは、ノード＃０、＃１でデータを分散していた状態で、追加ノードとして、ノード＃２が増設された例を示す。データ再分散処理では、元の分散をそのまま退避して移動元情報とする。また、データ再分散後となる新しい分散におけるデータの格納場所は、論理ボリューム作成時に予め確保してあるものとする。また、図９の上部で示すように、元の分散では、ノード＃０が、メタアドレスデータＡ、Ｃ、Ｅ、Ｇを有し、さらに、メタアドレスデータＡ、Ｃ、Ｅ、Ｇのそれぞれに対応する論物メタデータを有する。また、ノード＃１は、メタアドレスデータＢ、Ｄ、Ｆ、Ｈを有し、さらに、メタアドレスデータＢ、Ｄ、Ｆ、Ｈのそれぞれに対応する論物メタデータを有する。
【００７７】
ノード＃０は、データ分散前の各ノードにプールの拡張を通知する（ステップＳ８０１）。そして、ノード＃０、＃１は、メモリに展開しているメタアドレスデータをＲＵへ書き出す（ステップＳ８０２、Ｓ８０３）。
【００７８】
ステップＳ８０２、Ｓ８０３の処理終了後、各ノードは、退避した移動元情報のうち、自身のノード以外のノードが新担当ノードとなる論物メタデータを、該当のノードに送信する。図９の例では、ノード＃０では、メタアドレスデータＣが、自身のノード以外のノードが新担当ノードとなるデータである。また、ノード＃１では、メタアドレスデータＤ、Ｆが、自身のノード以外のノードが新担当ノードとなるデータである。
【００７９】
従って、ノード＃０は、ノード＃０が有する論物メタデータのうち、メタアドレスデータＣの論物メタデータをノード＃２に送信する（ステップＳ８０４）。ノード＃２は、メタアドレスデータＣの論物メタデータをノード＃２のＲＵに書き出す（ステップＳ８０５）。そして、ノード＃２は、書き出した論物メタデータのメタアドレスデータＣをノード＃２に作成し（ステップＳ８０６）、ノード＃０へメタアドレスデータＣの移動完了を通知する（ステップＳ８０７）。
【００８０】
なお、メタアドレスデータの論物メタデータを送信する場合、後述するデータ再分散中のＲｅａｄにより既に論物メタデータを送信済の場合がある。従って、旧担当ノードは、メタアドレスデータのステイタスが未移動であれば、メタアドレスデータの論物メタデータを送信する。また、メタアドレスデータの論物メタデータを受信した場合、後述するデータ再分散中のＷｒｉｔｅにより既に論物メタデータが存在する可能性がある。従って、新担当ノードは、受信したメタアドレスデータの論物メタデータが無い場合に、受信したメタアドレスデータの論物メタデータを自身のＲＵに書き出す。
【００８１】
同様に、ノード＃１は、ノード＃１が有する論物メタデータのうち、メタアドレスデータＤの論物メタデータをノード＃０に送信する（ステップＳ８０８）。ノード＃０は、メタアドレスデータＤの論物メタデータをノード＃０のＲＵに書き出す（ステップＳ８０９）。そして、ノード＃０は、書き出した論物メタデータのメタアドレスデータＤをノード＃０に作成し（ステップＳ８１０）、ノード＃１へメタアドレスデータＤの移動完了を通知する（ステップＳ８１１）。
【００８２】
ノード＃２から移動完了の通知を受けたノード＃０は、メタアドレスデータＣを移動済に設定する（ステップＳ８１２）。同様に、ノード＃０から移動完了の通知を受けたノード＃１は、メタアドレスデータＤを移動済に設定する（ステップＳ８１３）。以降の処理について、ノード＃０〜２は、メタアドレスデータＥ以降の移動処理を、上記の処理と同様に継続して実施し、データ再分散処理を終了する。
【００８３】
データの移動終了後、図９の下部で示すように、新しい分散では、ノード＃０が、メタアドレスデータＡ、Ｄ、Ｇを有し、さらに、メタアドレスデータＡ、Ｄ、Ｇのそれぞれに対応する論物メタデータを有する。また、ノード＃１は、メタアドレスデータＢ、Ｅ、Ｈを有し、さらに、メタアドレスデータＢ、Ｅ、Ｈのそれぞれに対応する論物メタデータを有する。また、ノード＃２は、メタアドレスデータＣ、Ｆを有し、さらに、メタアドレスデータＣ、Ｆのそれぞれに対応する論物メタデータを有する。
【００８４】
図１０は、データ再分散中のＷｒｉｔｅ発生時処理手順の一例を示すフローチャートである。また、図１１は、データ再分散中のＷｒｉｔｅ発生時の動作例を示す説明図である。図１０と図１１とでは、データ再分散中に、メタアドレスデータＢ、Ｅのユーザデータの書き込みが発生したとする。メタアドレスデータＢ、Ｅの新担当ノードは、ノード＃１である。
【００８５】
従って、ノード＃１は、ユーザデータをＲＵへ書き出す（ステップＳ１００１）。次に、ノード＃１は、書き出したユーザデータを指し示す論物メタデータを新規作成する（ステップＳ１００２）。そして、ノード＃１は、メタアドレスデータに新規の論物メタデータのアドレスを登録する（ステップＳ１００３）。ステップＳ１００３の処理終了後、ノード＃１は、データ再分散中のＷｒｉｔｅ発生時処理を終了する。このように、データ再分散中のＷｒｉｔｅは、空の領域への書き込みとなるため、新担当ノードは、データ再分散中であっても、通常のＷｒｉｔｅ処理を実行すればよい。
【００８６】
図１２は、データ再分散中のＲｅａｄ発生時処理手順の一例を示すフローチャートである。また、図１３は、データ再分散中のＲｅａｄ発生時の動作例を示す説明図である。図１２と図１３とでは、データ再分散中に、メタアドレスデータＥのユーザデータの読み出しが発生したとする。メタアドレスデータＥの新担当ノードは、ノード＃１である。
【００８７】
従って、ノード＃１は、メタアドレスデータＥのステイタスが未移動か否かを判断する（ステップＳ１２０１）。メタアドレスデータＥのステイタスが未移動である場合（ステップＳ１２０１：未移動）、ノード＃１は、メタアドレスデータＥの元ノード、すなわちノード＃０に論物メタデータの取得依頼を送信する（ステップＳ１２０２）。通知を受けたノード＃０は、メタアドレスデータＥの論物メタデータを退避したＲＵから取得する（ステップＳ１２０３）。そして、ノード＃０は、取得したメタアドレスデータＥの論物メタデータを、ノード＃１に送信する（ステップＳ１２０４）。
【００８８】
ノード＃１は、受信したメタアドレスデータＥの論物メタデータをノード＃１のＲＵへ追記書きする（ステップＳ１２０５）。次に、ノード＃１は、追記書きした論物メタデータのメタアドレスデータＥをノード＃１に作成する（ステップＳ１２０６）。そして、ノード＃１は、ノード＃０へメタアドレスデータＤの移動完了を通知する（ステップＳ１２０７）。ノード＃１から移動完了の通知を受けたノード＃０は、メタアドレスデータＤを移動済に設定する（ステップＳ１２０８）。ステップＳ１２０８の処理終了後、ノード＃０は、データ再分散中のＲｅａｄ発生時処理を終了する。
【００８９】
一方、メタアドレスデータＥのステイタスが移動済である場合（ステップＳ１２０１：移動済）、ノード＃１は、メタアドレスデータＥの論物メタデータを自ノードで取得する（ステップＳ１２０９）。ステップＳ１２０７またはステップＳ１２０９の処理終了後、ノード＃１は、メタアドレスデータＥのユーザデータをＲＵから読み出す（ステップＳ１２１０）。ステップＳ１２１０の処理終了後、ノード＃１は、データ再分散中のＲｅａｄ発生時処理を終了する。
【００９０】
次に、より具体的な例を用いて、プール容量拡張で開始するメタデータ管理部によるデータ移動手順を示す。まず、図１４を用いてメタデータ管理部によるデータ移動手順の具体例を示す。
【００９１】
図１４は、メタデータ管理部によるデータ移動手順の動作例を示す説明図である。図１４の例では、元の分散として、ノード＃０〜＃３により分散データが形成されており、新しい分散として、ノード＃０〜＃５により分散データが形成される例を示す。また、図１４では、ＬＵＮ＃０に０番目から１９番目のデータブロックがある。１つのデータブロックは、８［ＭＢ］単位である。
【００９２】
図１４では、メタデータに付与した網掛けにより、割り当て先のノードを区別している。具体的には、ノード＃０に割り当てられたメタデータを、白抜きを付与した矩形として示す。また、ノード＃１に割り当てられたメタデータを、格子状の網掛けを付与した矩形として示す。また、ノード＃２に割り当てられたメタデータを、斜めの格子状の網掛けを付与した矩形として示す。また、ノード＃３に割り当てられたメタデータを、水玉模様の網掛けを付与した矩形として示す。また、ノード＃４に割り当てられたメタデータを、左上から右下への斜線による網掛けを付与した矩形として示す。また、ノード＃５に割り当てられたメタデータを、右上から左下への斜線による網掛けを付与した矩形として示す。例えば、元の分散として、ノード＃０には、ＬＵＮ＃０の０、４、８、１２、１６番目のメタデータが割り当てられている。そして、新しい分散として、ＬＵＮ＃０の０、６、１２、１８番目のメタデータが割り当てられる。
【００９３】
プールの容量拡張処理時、各ノードのメタデータ管理部は、メタアドレスキャッシュ１６［ＧＢ］全てを記憶装置２０２に書き込み、論物メタキャッシュと共に一度クリアし、論理ボリューム領域と、メタアドレス領域とを２面化する。ここでの２面化とは、元の分散として使用していた論理ボリューム領域と、メタアドレス領域とをそのまま退避し移動元情報とし、新たに空きの領域を確保することである。また、増設されたノードのメタデータ管理部は、ボリューム作成と、メタアドレス領域を格納するＲＵの確保を行う。また、各ノードのメタデータ管理部は、新割り当て用のメタアドレスデータのステイタスを、「未移動」状態で初期化する。
【００９４】
図１４では、大きな矢印により、Ｉ／Ｏ時における処理を示しており、点線の矢印により、増設を契機としてバックグラウンドでのデータ移動処理を示す。なお、図１４で付与した点線の矢印は、表示の都合上、データ移動するメタデータの一部に付与しており、点線の矢印で示していないが、ＬＵＮ＃０の１６、１７、１８、７、１１、１９番目のメタデータは、バックグラウンド移動対象となる。次に、ＲｅａｄＩ／Ｏ処理契機のメタデータ移動処理のフローチャートについて、図１５を用いて説明し、増設されたノード以外のバックグラウンド移動処理のフローチャートについて、図１６を用いて説明する。
【００９５】
図１５は、ＲｅａｄＩ／Ｏ処理契機のメタデータ移動処理手順の一例を示すフローチャートである。図１５で示すフローチャートは、図１２で示すフローチャートに相当するものである。
【００９６】
図１５で示すフローチャートでは、ＬＵＮ＃０の６４［ＭＢ］〜７２［ＭＢ］の間にアドレスに対するＲｅａｄＩ／Ｏがあったとする。１つのブロックサイズが８［ＭＢ］であるため、ＬＵＮ＃０の９番目のデータブロックに対するＲｅａｄＩ／Ｏとなり、新しい分散において、９番目のデータブロックの割り当て先ノードは、ノード＃３となる。また、元の分散において、９番目のデータブロックの割り当て先ノードは、ノード＃１となる。
【００９７】
従って、ノード＃３は、元の分散のノード＃１へ、論物メタデータの取得依頼を送信する（ステップＳ１５０１）。取得依頼を受信したノード＃１は、取得依頼を受けた論物メタデータを退避したＲＵから取得する（ステップＳ１５０２）。そして、ノード＃１は、取得した論物メタデータをノード＃３に送信する（ステップＳ１５０３）。ステップＳ１５０３の処理終了後、ノード＃１は、ＲｅａｄＩ／Ｏ処理契機のメタデータ移動処理を終了する。
【００９８】
論物メタデータを受信したノード＃３は、論物メタデータをノード＃３のＲＵに追記書きする（ステップＳ１５０４）。そして、ノード＃３は、追記書きした論物メタデータのメタアドレスデータをノード＃３に作成する（ステップＳ１５０５）。ステップＳ１５０５の処理終了後、ノード＃３は、ＲｅａｄＩ／Ｏ処理契機のメタデータ移動処理を終了する。
【００９９】
図１６は、増設されたノード以外のバックグラウンド移動処理手順の一例を示すフローチャートである。図１６で示すフローチャートは、図８で示すフローチャートに相当する。また、図１４で示したように、バックグラウンド移動されるメタデータは、複数存在するが、図１６で示すフローチャートでは、ＬＵＮ＃０の８番目のメタデータのバックグラウンドについて示す。新しい分散において、８番目のメタデータの割り当て先ノードは、ノード＃２となる。また、元の分散において、８番目のメタデータの割り当て先ノードは、ノード＃０となる。
【０１００】
ノード＃０は、メタアドレスを退避したＲＵから８番目のデータブロックが入ったメタアドレスデータをＲＵ単位でＳｔａｇｉｎｇする（ステップＳ１６０１）。次に、ノード＃０は、メタアドレスデータから論物メタデータのアドレスを取得し、論物メタデータをＳｔａｇｉｎｇする（ステップＳ１６０２）。そして、ノード＃０は、論物メタデータをリストにしてノード＃２へ送信する（ステップＳ１６０３）。ここで、前述したリストとは、送信先のノードに送信する論物メタデータの一覧である。図１４の例では、ノード＃２に送信する論物メタデータは、ＬＵＮ＃０の８番目の論物メタデータ１つだけであるため、リストには、ＬＵＮ＃０の８番目の論物メタデータだけが含まれる。
【０１０１】
ノード＃２は、受信した論物メタデータをノード＃２でＲＵへ書き出す（ステップＳ１６０４）。次に、ノード＃２は、受信した論物メタデータで、メタアドレスデータの論物メタデータのアドレスを更新する（ステップＳ１６０５）。
【０１０２】
増設されたノード以外のノードは、他のメタデータについても図１６で示す処理を行う。
【０１０３】
以上説明したように、ストレージシステム２００は、更新後のメタアドレスデータを、連続した記憶領域における更新後のメタアドレスデータに対応する論物メタデータの論理アドレスに対応する位置に格納し、論物メタデータおよびユーザデータユニットを追記書きする。これにより、論物メタデータおよびユーザデータユニットについて、上書き更新することが無くなるため、ＳＳＤである記憶装置２０２の寿命を延ばすことができる。
【０１０４】
また、ストレージシステム２００は、移動処理として、各ノードに割り当てられた論物メタデータを、各ノードおよび新たなノードのうち、図１で説明した移動先ノードの特定方法に基づき特定されるノードに送信する。これにより、ストレージシステム２００は、メタアドレスデータ、論物メタデータ、ユーザデータユニットという管理方法であっても、各ノードが自律的に多重で移動処理ができ、再分散にかかる時間を短縮することができる。さらに、ユーザデータユニットは移動せず、ユーザデータユニットに対応する論物メタデータを移動することにより、各ノードは、ユーザデータユニットを移動しない分、移動処理にかかる時間を短縮することができる。
【０１０５】
また、新たなノードが増設された後に、書き込み要求を受け付けた場合、書き込み要求を受け付けたノードは、自ノードが割り当てた第１の空き記憶領域に書き込み対象データを書き込んでよい。そして、各ノードおよび新たなノードは、受け付けた論物メタデータの論理アドレスと第１の空き記憶領域に書き込まれた論物メタデータの論理アドレスとが異なれば、受け付けた論物メタデータを、第１の空き記憶領域に書き込む。これにより、ストレージシステム２００は、メタアドレスデータ、論物メタデータ、ユーザデータユニットという管理方法であっても、移動マップでの監視を使用しなくてよくなる。
【０１０６】
また、新たなノードが増設された後に、読み出し要求を受け付けたノードは、第１の空き記憶領域に読み出し対象の論理アドレスに対するデータが無ければ、移動元ノードの特定方法に基づき特定されるノードに、論物メタデータの取得依頼を送信してもよい。これにより、ストレージシステム２００は、メタアドレスデータ、論物メタデータ、ユーザデータユニットという管理方法であっても、読み出した部分データをそのまま移動することができる。
【０１０７】
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１０８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１０９】
（付記１）プロセッサとストレージとを有する複数のノードを有するストレージ装置であって、
前記複数のノードの各ノードは、前記各ノードに分散して割り当てられた分散データを保持し、
前記複数のノードに新たなノードが増設されて、前記分散データを前記複数のノードおよび前記新たなノードに分散して割り当てる際に、
前記各ノードおよび前記新たなノードは、
前記ストレージの記憶領域のうち、前記分散データを記憶する記憶領域とは異なる空き記憶領域を確保し、
前記各ノードは、
保持した前記分散データを、前記各ノードおよび前記新たなノードに確保した前記空き記憶領域に対して移動する移動処理を、前記各ノードそれぞれで独立して行う、
ことを特徴とするストレージ装置。
【０１１０】
（付記２）前記各ノードは、
前記移動処理として、前記各ノードに割り当てられた前記分散データの部分データを、前記各ノードおよび前記新たなノードのうち、ノード増設後のノードに関する情報と前記部分データのアドレスと所定の割り当て規則とに基づき特定されるノードに送信し、
前記特定されるノードは、
受け付けた前記部分データを、前記特定されるノードが確保した前記空き記憶領域に書き込む、
ことを特徴とする付記１に記載のストレージ装置。
【０１１１】
（付記３）前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、書き込み対象アドレスに対する書き込み対象データの書き込み要求を受け付けた場合、自ノードが確保した前記空き記憶領域に前記書き込み対象データを書き込み、
前記移動処理によって前記部分データを受け付けた場合、前記空き記憶領域における前記部分データのアドレスにデータが書き込まれていなければ、自ノードが確保した前記空き記憶領域に前記部分データを書き込む、
ことを特徴とする付記２に記載のストレージ装置。
【０１１２】
（付記４）前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、読み込み対象アドレスに対する読み出し要求を受け付けた場合、自ノードが確保した前記空き記憶領域に前記読み出し対象アドレスに対する部分データが無ければ、ノード増設前のノードに関する情報と前記読み出し対象アドレスと前記所定の割り当て規則とに基づき特定されるノードに、前記読み出し対象アドレスを含む部分データの取得依頼を送信し、
当該特定されるノードは、
前記取得依頼を受け付けた場合、保持した前記分散データから、前記読み出し対象アドレスに対応する部分データを、前記取得依頼の送信元ノードに送信し、
前記取得依頼の送信元ノードは、
受け付けた前記部分データを前記読み出し要求の送信元に送信するとともに、受け付けた前記部分データを自ノードが確保した前記空き記憶領域に書き込む、
ことを特徴とする付記２または３に記載のストレージ装置。
【０１１３】
（付記５）前記複数のノードの各ノードに分散して割り当てられた分散データの部分データは、論理アドレスと、前記論理アドレスに対応するデータを格納した格納位置を示す物理アドレスとを有する第１のアドレス情報であって、
前記各ノードは、
前記第１のアドレス情報に対応して、前記第１のアドレス情報の格納位置を示す物理アドレスを有する第２のアドレス情報を有し、
連続した記憶領域における更新後の第２のアドレス情報に対応する第１のアドレス情報の論理アドレスに対応する位置に、前記更新後の第２のアドレス情報を格納するとともに、論理アドレスに対応するデータと前記第１のアドレス情報と前記第２のアドレス情報とを記憶する記憶領域とは異なる空き記憶領域に、論理アドレスに対応する更新後のデータ、または更新後の第１のアドレス情報を格納する、
ことを特徴とする付記１〜４のいずれか一つに記載のストレージ装置。
【０１１４】
（付記６）前記各ノードおよび前記新たなノードは、前記各ノードに割り当てられた前記第１のアドレス情報と、当該第１のアドレス情報の論理アドレスに対応するデータと、当該第１のアドレス情報に対応する第２のアドレス情報とを保持し、
前記ストレージの記憶領域のうち、前記第１のアドレス情報と当該第１のアドレス情報の論理アドレスに対応するデータと当該第１のアドレス情報とを記憶する記憶領域とは異なる、第１の空き記憶領域および連続した空き記憶領域である第２の空き記憶領域を確保し、
前記各ノードは、
前記移動処理として、前記各ノードに割り当てられた前記第１のアドレス情報を、前記各ノードおよび前記新たなノードのうち、ノード増設後のノードに関する情報と当該第１のアドレス情報の論理アドレスと前記所定の割り当て規則とに基づき特定されるノードに送信し、
当該特定されるノードは、
受け付けた前記第１のアドレス情報を、当該特定されるノードが確保した前記第１の空き記憶領域に書き込み、
受け付けた前記第１のアドレス情報を書き込んだ格納位置を示す物理アドレスを有する第２のアドレス情報を、当該特定されるノードが確保した前記第２の空き記憶領域に書き込む、
ことを特徴とする付記５に記載のストレージ装置。
【０１１５】
（付記７）前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、書き込み対象の論理アドレスに対する書き込み対象データの書き込み要求を受け付けた場合、自ノードが確保した前記第１の空き記憶領域に前記書き込み対象データを書き込み、
前記書き込み対象データの格納位置を示す物理アドレスと前記書き込み対象の論理アドレスとを有する第１のアドレス情報を、自ノードが確保した前記第１の空き記憶領域に書き込み、
前記第１の空き記憶領域に書き込んだ前記第１のアドレス情報の格納位置を示す物理アドレスを有する第２のアドレス情報を、自ノードが確保した前記第２の空き記憶領域に書き込み、
前記移動処理によって前記第１のアドレス情報を受け付けた場合、自ノードが確保した前記第１の空き記憶領域に書き込まれた前記第１のアドレス情報の論理アドレスと受け付けた前記第１のアドレス情報の論理アドレスとが異なれば、受け付けた前記第１のアドレス情報を、自ノードが確保した前記第１の空き記憶領域に書き込む、
ことを特徴とする付記５または６に記載のストレージ装置。
【０１１６】
（付記８）前記各ノードおよび前記新たなノードは、
前記新たなノードが増設された後に、読み込み対象の論理アドレスに対する読み出し要求を受け付けた場合、自ノードが確保した前記第１の空き記憶領域に前記読み出し対象の論理アドレスに対するデータが無ければ、ノード増設前のノードに関する情報と前記読み出し対象の論理アドレスと前記所定の割り当て規則とに基づき特定されるノードに、前記読み出し対象の論理アドレスを含む第１のアドレス情報の取得依頼を送信し、
前記取得依頼を受け付けた場合、保持した前記第１のアドレス情報から、前記読み出し対象の論理アドレスを含む第１のアドレス情報を、前記取得依頼の送信元ノードに送信し、
前記各ノードおよび前記新たなノードは、
前記第１のアドレス情報を受け付けた場合、受け付けた第１のアドレス情報の物理アドレスに格納されたデータを読み出す、
ことを特徴とする付記５〜７のいずれか一つに記載のストレージ装置。
【０１１７】
（付記９）プロセッサとストレージとを有し、各ノードに分散して割り当てられた分散データを保持する複数のノードの前記各ノードに、
前記複数のノードに新たなノードが増設されて、前記分散データを前記複数のノードおよび前記新たなノードに分散して割り当てる際に、前記ストレージの記憶領域のうち、前記分散データを記憶する記憶領域とは異なる空き記憶領域を確保し、
保持した前記分散データを、確保した前記空き記憶領域に対して移動する移動処理として、前記各ノードに割り当てられた前記分散データの部分データを、前記各ノードおよび前記新たなノードのうち、ノード増設後のノードに関する情報と前記部分データのアドレスと所定の割り当て規則とに基づき特定されるノードに送信する、
処理を実行させることを特徴とするストレージ制御プログラム。
【０１１８】
（付記１０）プロセッサとストレージとを有し、各ノードに分散して割り当てられた分散データを保持する複数のノードの前記各ノードに、
前記複数のノードに新たなノードが増設されて、前記分散データを前記複数のノードおよび前記新たなノードに分散して割り当てる際に、前記ストレージの記憶領域のうち、前記分散データを記憶する記憶領域とは異なる空き記憶領域を確保し、
保持した前記分散データを、確保した前記空き記憶領域に対して移動する移動処理によって、前記複数のノードの他のノードから前記分散データの部分データを受け付けた場合、受け付けた前記部分データを、確保した前記空き記憶領域に書き込む、
処理を実行させることを特徴とするストレージ制御プログラム。
【０１１９】
（付記１１）プロセッサとストレージとを有し、各ノードに分散して割り当てられた分散データを保持する複数のノードの前記各ノードが、
前記複数のノードに新たなノードが増設されて、前記分散データを前記複数のノードおよび前記新たなノードに分散して割り当てる際に、前記ストレージの記憶領域のうち、前記分散データを記憶する記憶領域とは異なる空き記憶領域を割り当て、
保持した前記分散データを、確保した前記空き記憶領域に対して移動する移動処理として、前記いずれかのノードに割り当てられた前記分散データの部分データを、前記各ノードおよび前記新たなノードのうち、ノード増設後のノードに関する情報と前記部分データのアドレスと所定の割り当て規則とに基づき特定されるノードに送信し、
前記各ノードから前記部分データを受け付けたノードが、
受け付けた前記部分データを、自ノードが確保した前記空き記憶領域に書き込む、
処理を実行することを特徴とするストレージ制御方法。
【符号の説明】
【０１２０】
＃０、＃１、＃２、＃３  ノード
１０１  ストレージ装置
４００  制御部
７０１  保持部
７０２  確保部
７０３  移動処理実行部
７０４  書き込み部
７０５  読み出し部
【図１】
2018181190.tif 000003
【図２】
2018181190.tif 000004
【図３】
2018181190.tif 000005
【図４】
2018181190.tif 000006
【図５】
2018181190.tif 000007
【図６】
2018181190.tif 000008
【図７】
2018181190.tif 000009
【図８】
2018181190.tif 000010
【図９】
2018181190.tif 000011
【図１０】
2018181190.tif 000012
【図１１】
2018181190.tif 000013
【図１２】
2018181190.tif 000014
【図１３】
2018181190.tif 000015
【図１４】
2018181190.tif 000016
【図１５】
2018181190.tif 000017
【図１６】
2018181190.tif 000018