(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023181818
(43)【公開日】2023-12-25
(54)【発明の名称】ストレージシステムおよびストレージシステムにおけるデータレイアウト変換方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20231218BHJP
【FI】
G06F3/06 540
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022095168
(22)【出願日】2022-06-13
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】田島 幸恵
(72)【発明者】
【氏名】斎藤 秀雄
(72)【発明者】
【氏名】中村 隆喜
(72)【発明者】
【氏名】伊藤 晋太郎
(72)【発明者】
【氏名】倉田 成己
(72)【発明者】
【氏名】山本 貴大
(57)【要約】
【課題】ストレージシステムにおいて、IOを継続しながら、ドライブデータレイアウト変更を伴う性能や品質向上および機能追加を実現する。
【解決手段】ストレージシステム1は、記憶ドライブ113に格納されるデータの冗長構成を構成する冗長化グループを作成し、冗長化グループのデータを複数の記憶ドライブ113に格納する。ストレージノード110のプロセッサは、単位記憶領域に格納されているデータを破棄し、破棄したデータを変更後のデータフォーマットに従って復元して記憶ドライブに再格納する。ストレージノード110のプロセッサは、データフォーマットを変更している間の破棄するデータに対するI/O処理を、データフォーマットの変更を行う単位記憶領域以外に格納された冗長化グループのデータに基づいて復元して行う。
【選択図】
図6A
【特許請求の範囲】
【請求項1】
複数のノードを有するストレージシステムであって、
前記ノードは、
記憶ドライブと、
ホストからのI/O要求に応じて前記記憶ドライブに格納するデータの処理を行うプロセッサと、
を有し、
前記ノードのプロセッサは、
前記記憶ドライブに格納されるデータの冗長構成を構成する冗長化グループを作成し、前記冗長化グループのデータを複数の前記記憶ドライブに格納し、
単位記憶領域のデータフォーマットを変更する場合に、
前記冗長化グループの一部のデータが格納されている前記単位記憶領域に格納されているデータを破棄し、
前記データフォーマットの変更を行う単位記憶領域以外に格納された前記冗長化グループのデータに基づいて、前記破棄したデータを変更後の前記データフォーマットに従って復元して前記記憶ドライブに再格納し、
前記データフォーマットを変更している間の前記破棄するデータに対するI/O処理を、前記データフォーマットの変更を行う単位記憶領域以外に格納された前記冗長化グループのデータに基づいて復元して行う
ことを特徴とするストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記データフォーマットの変更後に、前記単位記憶領域へ前記I/O処理の処理先を変更する
ことを特徴とするストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記ノードのプロセッサは、
前記データフォーマットの変更対象の前記単位記憶領域に格納されている前記データの破棄前に、前記冗長化グループの冗長度を上げる
ことを特徴とするストレージシステム。
【請求項4】
請求項3に記載のストレージシステムであって、
前記ノードのプロセッサは、
前記破棄するデータのコピーを作成することにより、前記冗長化グループの冗長度を上げ、
前記コピーしたデータに基づいて、変更後の前記データフォーマットのデータを復元して前記記憶ドライブに再格納し、
前記コピーしたデータに基づいて、前記データフォーマットを変更している間の前記破棄するデータに対する前記I/O処理を行う
ことを特徴とするストレージシステム。
【請求項5】
請求項3に記載のストレージシステムであって、
前記冗長化グループは、前記データと、前記データに基づいて作成された冗長データとが含まれており、
前記ノードのプロセッサは、
前記データに対する冗長データの数を増やすことで前記冗長化グループの冗長度を上げる
ことを特徴とするストレージシステム。
【請求項6】
請求項2に記載のストレージシステムであって、
前記ノードのプロセッサは、
前記データフォーマット変更前及び変更中のI/O処理を、変更前の前記データフォーマットに基づいてデータのI/O処理を行うプログラムを実行して行い、
前記データフォーマット変更後のI/O処理を、変更後の前記データフォーマットに基づいてデータのI/O処理を行うプログラムを実行して行う
ことを特徴とするストレージシステム。
【請求項7】
請求項1に記載のストレージシステムであって、
前記単位記憶領域は、前記記憶ドライブまたは前記ノードに対して設定され、
前記ノードのプロセッサは、
前記データフォーマットを変更する前に、該データフォーマットの変更対象の単位記憶領域にかかる前記記憶ドライブまたは前記ノードを前記ストレージシステムから切り離し、
前記データフォーマットの変更が完了すると、切り離した前記記憶ドライブまたは前記ノードを前記ストレージシステムに接続する
ことを特徴とするストレージシステム。
【請求項8】
請求項1に記載のストレージシステムであって、
前記単位記憶領域は、前記ノードまたは前記記憶ドライブに対して設定され、
前記ノードのプロセッサは、
前記データフォーマットを変更する際に、該データフォーマットの変更対象の前記ノードまたは前記記憶ドライブに対する前記I/O処理を停止し、
前記データフォーマットの変更が完了すると、前記I/O処理を再開する
ことを特徴とするストレージシステム。
【請求項9】
複数のノードを有するストレージシステムが実行するストレージシステムにおけるデータレイアウト変換方法であって、
前記ノードは、
記憶ドライブと、
ホストからのI/O要求に応じて前記記憶ドライブに格納するデータの処理を行うプロセッサと、
を有し、
前記ノードのプロセッサが、
前記記憶ドライブに格納されるデータの冗長構成を構成する冗長化グループを作成し、前記冗長化グループのデータを複数の前記記憶ドライブに格納し、
単位記憶領域のデータフォーマットを変更する場合に、
前記冗長化グループの一部のデータが格納されている前記単位記憶領域に格納されているデータを破棄し、
前記データフォーマットの変更を行う単位記憶領域以外に格納された前記冗長化グループのデータに基づいて、前記破棄したデータを変更した前記データフォーマットに従って復元して前記記憶ドライブに再格納し、
前記データフォーマットを変更している間の前記破棄するデータに対するI/O処理を、前記データフォーマットの変更を行う単位記憶領域以外に格納された前記冗長化グループのデータに基づいて復元して行う
ことを特徴とするデータレイアウト変換方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムおよびストレージシステムにおけるデータレイアウト変換方法に関する。
【背景技術】
【0002】
特許文献1に示すように、ストレージ装置であるSDS(Software Defined Storage)内で動作するストレージプログラムは、自身が認識するドライブ内にユーザデータを格納する際に用いるドライブ内のデータレイアウト情報を有している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ストレージプログラムが新規機能を使用する場合にドライブデータレイアウトのフォーマット変更を伴うことがある。一方、SDSにおいては、ユーザからの明示的な停止指示がない限り、IO機能を提供し続ける必要がある。そのため、ドライブデータレイアウトのフォーマット変換を伴う機能追加をした場合であっても、ユーザに対してIO機能を提供し続ける必要がある。
【0005】
ストレージプログラムがユーザデータ格納先のドライブを認識した時点でドライブデータレイアウトが決定する。その後ドライブデータレイアウトのフォーマット変更が発生した場合、旧フォーマットに基づいたレイアウトで格納済のユーザデータへのアクセスを維持しながら変更に追従することが求められる。
【0006】
本発明は以上の点を考慮してなされたもので、ストレージシステムにおいて、IOを継続しながら、ドライブデータレイアウト変更を伴う性能や品質向上および機能追加を実現することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決するため、本発明の一態様では、複数のノードを有するストレージシステムであって、前記ノードは、記憶ドライブと、ホストからのI/O要求に応じて前記記憶ドライブに格納するデータの処理を行うプロセッサと、を有し、前記ノードのプロセッサは、前記記憶ドライブに格納されるデータの冗長構成を構成する冗長化グループを作成し、前記冗長化グループのデータを複数の前記記憶ドライブに格納し、単位記憶領域のデータフォーマットを変更する場合に、前記冗長化グループの一部のデータが格納されている前記単位記憶領域に格納されているデータを破棄し、前記データフォーマットの変更を行う単位記憶領域以外に格納された前記冗長化グループのデータに基づいて、前記破棄したデータを変更後の前記データフォーマットに従って復元して前記記憶ドライブに再格納し、前記データフォーマットを変更している間の前記破棄するデータに対するI/O処理を、前記データフォーマットの変更を行う単位記憶領域以外に格納された前記冗長化グループのデータに基づいて復元して行うことを特徴とする。
【発明の効果】
【0008】
本発明によれば、例えば、ストレージシステムにおいて、IOを継続しながら、データレイアウト変更を伴う性能や品質向上および機能追加を実現できる。
【図面の簡単な説明】
【0009】
【
図1】実施形態1に係るストレージシステムを示す構成図。
【
図2】実施形態1に係るストレージノードのメモリに格納されているソフトウェア構成図。
【
図3A】実施形態1に係るストレージシステムのデータ格納を示す図。
【
図3B】実施形態1に係るマッピングテーブルを示す図。
【
図4】実施形態1に係るドライブデータレイアウト変換が必要となるフォーマット変換を示す図。
【
図5】実施形態1に係るチャンク状態管理テーブルを示す図。
【
図6A】実施形態1に係るチャンク単位でのドライブデータレイアウト変換を示す図。
【
図6B】実施形態1に係るチャンク単位でのドライブデータレイアウト変換の際のマッピングテーブルを示す図。
【
図7】実施形態1に係るチャンク単位でのドライブデータレイアウト変換処理フローを示す図。
【
図8A】実施形態2に係るドライブ単位でのドライブデータレイアウト変換を示す図。
【
図8B】実施形態2に係るドライブ単位でのドライブデータレイアウト変換の際のマッピングテーブルを示す図。
【
図8C】実施形態2に係るドライブ単位でのドライブデータレイアウト変換の際のチャンク状態管理テーブルを示す図。
【
図10】実施形態2に係るドライブ単位でのドライブデータレイアウト変換処理フローを示す図。
【
図11】実施形態3に係るストレージノード単位でのドライブデータレイアウト変換を示す図。
【
図13】実施形態3に係るストレージノード単位でのドライブデータレイアウト変換処理フローを示す図。
【発明を実施するための形態】
【0010】
以下、図面を参照して本願の実施形態を説明する。実施形態は、図面も含めて本願を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本願は、他の種々の実施形態でもよい。特に限定しない限り、実施形態の各構成要素は単数でも複数でもよい。
【0011】
同一あるいは同様の機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0012】
また、既出の実施形態もしくは変形例と同一または類似の構成要素には、説明を省略すし、差分を中心に説明する場合がある。また、既出の実施形態もしくは変形例と同一または類似の構成要素に同一の符号を付与して説明を省略する場合がある。
【0013】
実施形態において、プログラムを実行して行う処理について説明する場合がある。ここで、コンピュータは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))により、記憶資源(例えばメモリ)やインターフェースデバイス(例えば通信ポート)等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。ここで、専用回路とは、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)、CPLD(Complex Programmable Logic Device)等である。
【0014】
プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読取り可能な非一時的な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0015】
以下の実施形態で、テーブル形式で各種情報を説明するが、各種情報はテーブル以外の形式であってもよい。
【0016】
[実施形態1]
(ストレージシステム1の構成)
図1は、実施形態1のストレージシステム1を示す構成図である。ストレージシステム1は、3台以上のストレージノード110と、1台以上のコンピュートノード120と、1台のコントロールノード130とを有する。またストレージシステム1は、ストレージノード110同士を接続するバックエンドネットワーク140と、ストレージノード110とコンピュートノード120を接続するストレージサービスネットワーク150と、コントロールノード130とコンピュートノード120とストレージノード110を接続する管理ネットワーク160とを有する。
【0017】
ストレージノード110とコンピュートノード120とコントロールノード130は、一部またはすべてが同一のコンピュータ装置であってもよい。バックエンドネットワーク140とストレージサービスネットワーク150と管理ネットワーク160は、一部またはすべてが同一のネットワークであってもよい。
【0018】
ストレージノード110は、1つ以上のCPU111と、メモリ112と、1台以上のドライブ113とを有する。
【0019】
コントロールノード130は、システム管理者がストレージシステム1を管理するために使用するコンピュータ装置である。コントロールノード130は、複数のストレージノード110を束ねてクラスタと呼ぶグループとして管理することができる。
図1ではクラスタが1つ設けられた例を示しているが、ストレージシステム1内に複数のクラスタを設けてもよい。
【0020】
(ストレージノード110のメモリ112の構成)
図2は、ストレージノード110のメモリ112に格納されているソフトウェアの構成図である。ストレージノード110のメモリ112は、フロントエンドドライバ210と、バックエンドドライバ240と、ストレージ制御プログラム220と、容量制御プログラム230とを格納している。容量制御プログラム230は、旧フォーマット用制御機構231と、新フォーマット用制御機構232とを有する。以降、フォーマットをFMTと記載する。
【0021】
また、メモリ112は、マッピングテーブル250と、チャンク状態管理テーブル260とを有する。
【0022】
ストレージ制御プログラム220は、他のストレージノード110に配置された他のストレージ制御プログラム220と共に、冗長構成を構成する冗長化グループとして管理される。
【0023】
冗長化グループでは、1個のストレージ制御プログラム220がコンピュートノード120からのIOを受け付ける状態に設定され、残りのストレージ制御プログラム220がIOを受け付けない状態に設定される。以降、IOを受け付ける状態をアクティブ、受け付けない状態をスタンバイと記載する。また、アクティブに設定されたストレージ制御プログラム220をアクティブストレージ制御プログラム、スタンバイに設定されたストレージ制御プログラム220をスタンバイストレージ制御プログラムと記載する。
【0024】
冗長化グループでは、アクティブストレージ制御プログラムに障害が発生した場合に、アクティブストレージ制御プログラムの設定がスタンバイに切り替えられ、スタンバイストレージ制御プログラムの設定がアクティブに切り替えられる。この他、アクティブストレージ制御プログラムが配置されたストレージノード110に障害が発生した場合などでも、アクティブストレージ制御プログラムとスタンバイストレージ制御プログラムのアクティブとスタンバイの設定が切り替えられる。
【0025】
これにより、アクティブストレージ制御プログラムを有する冗長化グループにおいて、アクティブストレージ制御プログラムからスタンバイストレージ制御プログラムへのフェイルオーバが行われる。すなわち、障害が発生したアクティブストレージ制御プログラムが実行していたIO処理は、スタンバイからアクティブに設定変更されたストレージ制御プログラム220に引き継がれる。
【0026】
容量制御プログラム230は、ストレージノード110が有するドライブ113の物理的な記憶領域を冗長化グループに対して割り当てる。容量制御プログラム230は、ドライブ113の物理的な記憶領域を冗長化グループに対して割り当てると、冗長化グループに属する他のストレージノード110の他の容量制御プログラム230と、バックエンドネットワーク140を介してデータをやり取りする。アクティブストレージ制御プログラムは、容量制御プログラム230を介することで、IOコマンドに従って冗長化グループに属する記憶領域へのIOを実行する。
【0027】
(実施形態1のデータ格納とマッピングテーブル250)
図3Aは、実施形態1のストレージシステム1のデータ格納を示す図である。
図3Bは、実施形態1のストレージシステム1のマッピングテーブル250を示す図である。
【0028】
容量制御プログラム230は、ストレージノード110が有するドライブ113が提供する物理的な記憶領域を所定の大きさの物理記憶領域に分割して管理する。以降、所定の大きさの物理記憶領域を物理チャンク310と呼ぶ。
【0029】
例えば、
図3Aでは、各ストレージノード110(ストレージノードN1~N6)が有するドライブ113(ドライブD1~D6)のそれぞれが提供する記憶領域を3つに分割した物理記憶領域が物理チャンク310である。
【0030】
容量制御プログラム230は、冗長化グループ毎に容量プール320を作成する。容量プール320に、物理チャンク310と同じ大きさの論理的な記憶領域が割り当てられる。以降、論理的な記憶領域を論理チャンク330と呼ぶ。論理チャンク330に対して、冗長度に応じた物理チャンク310が対応付けられる。容量プール320に冗長化グループで使用可能なドライブ113を割り当てた際に、容量制御プログラム230によって物理チャンク310と論理チャンク330の紐付けが決定される。
【0031】
例えば、容量制御プログラム230は、冗長化グループ毎に紐付く容量プール320を作成する。容量プール320には、物理チャンク310と同じ大きさの論理チャンク330が割り当てられている。物理チャンク310と論理チャンク330の紐付けは、マッピングテーブル250で管理される。
【0032】
図3Bに示すように、マッピングテーブル250には、容量プール320に割り当てられたドライブ113を識別する情報350と、ドライブ113内の位置を識別する情報360とで識別される物理チャンク310が紐付けられる論理チャンク330の識別情報が格納される。
【0033】
以降、例えば「D1で識別されるドライブ113」を、「ドライブD1」のように記載する。また、例えば「L11で識別される論理チャンク330」を、「論理チャンクL11」のように記載する。また、例えば「ドライブ113内のP1で識別される位置に格納された物理チャンク310」を、「物理チャンクP1」のように記載する。
【0034】
例えば、マッピングテーブル250に格納された情報371から、論理チャンクL11は、ドライブD1内の物理チャンクP1に紐付くことがわかる。また、情報372から、論理チャンクL11は、ドライブD4内の物理チャンクP2にも紐付くことがわかる。
【0035】
容量プール320に対しては論理チャンク330を有する1個以上の仮想的な論理ボリューム(以降仮想ボリューム340と記載する)が定義される。この仮想ボリューム340がコンピュートノード120に提供される。
【0036】
コンピュートノード120から仮想ボリューム340にデータライトする処理フローを説明する。コンピュートノード120は、データのライト先の仮想ボリューム340の識別子と仮想ボリューム340におけるライト先を特定するアドレス情報を指定したライト要求とライトデータを、クラスタ内のストレージノード110の何れかに送信する。
【0037】
ライト要求とライトデータを受信したストレージノード110のフロントエンドドライバ210は、ライト要求で指定されたライト対象の仮想ボリューム340と対応付けられたアクティブストレージ制御プログラムが配置されているストレージノード110のフロントエンドドライバ210に対して、ライト要求とライトデータを転送する。
【0038】
転送されたライト要求とライトデータを受信したフロントエンドドライバ210は、ライト要求で指定されたライト対象の仮想ボリューム340と容量プール320を介して対応付けられたストレージ制御プログラム220に、ライト要求とライトデータを送信する。
【0039】
ライト要求とライトデータを受信したストレージ制御プログラム220のうちのアクティブストレージ制御プログラムは、ライト対象の仮想ボリューム340内のライト先領域に対して、仮想ボリューム340と対応付けられた容量プール320を構成する論理チャンク330の中から、必要に応じて論理チャンク330を割り当てる。
【0040】
また、アクティブストレージ制御プログラムは、ライト要求で指定されたライト対象の仮想ボリューム340内のライト先領域のアドレスを、ライト先領域に割り当てた論理チャンク330を識別するチャンク番号とオフセット位置とに変換する。アクティブストレージ制御プログラムは、変換した情報を用いてIOコマンドを生成し、生成したIOコマンドとライトデータを自ストレージノード110内の容量制御プログラム230に送信する。
【0041】
容量制御プログラム230は、IOコマンドとライトデータを受信すると、IOコマンドで指定された論理チャンク330に対応付けられた物理チャンク310と対応するドライブ113のオフセット位置にデータを格納する。
【0042】
ストレージシステム1では、コンピュートノード120からのライトデータは、対応する論理チャンク330に割り当てられた複数の物理チャンク310に冗長化されて格納される。論理チャンク330に割り当てる物理チャンク310の数は冗長化方式の設定内容によって決定される。冗長化方式にはミラーリング(ユーザデータの複製)やErasure-Coding(消失訂正符号)、MEC(Multi-stage Erasure Coding)等種々の方式があり、選択された冗長化方式を実現するために必要な数の物理チャンク310が一つの論理チャンク330に対応付けられる。
【0043】
なお、一つの論理チャンク330に複数の物理チャンク310が対応付けられると、これら複数の物理チャンク310にデータが多重化して格納される。この時、複数の物理チャンク310の中から一つの物理チャンク310がマスタとして設定され、それ以外の物理チャンク310はミラーに設定される。コンピュートノード120からリード要求が発行された場合は、マスタ設定された物理チャンク310からデータを読み込む。またErasure-CodingやMECを用いて冗長化する場合は、一つの論理チャンク330に複数の物理チャンク310が対応付けられ、複数の物理チャンク310にはマスタデータと所定パターンの冗長データが格納される。
【0044】
(ドライブデータレイアウト変換が必要となるフォーマット変換)
図4は、ドライブデータレイアウト変換が必要となるフォーマット変換を示す図である。ストレージシステム1では、ドライブ内の物理チャンク310のレイアウト変更を伴うドライブデータのフォーマットを変更することがある。レイアウト変更を伴うフォーマット変更の例として、保証コードの持ち方(格納形式)が変更される例を説明する。
【0045】
SDSでは、ドライブに格納されているユーザデータを保護するためにユーザデータから生成した保証コードをドライブ113に格納することがある。ユーザデータと保証コードは、物理チャンク310以上のサイズあるいは物理チャンク310以下のサイズにまとめた上で分離して格納する(
図4の(a))ことも、物理チャンク310毎に連続格納する(
図4の(b))ことも可能である。保証コードの有無や格納方法によりSDSのIO性能やデータ保全性の強度などの得失が異なる。ユーザの要求を契機として、使用中のSDSの保証コードの有無や格納方式を変更するとドライブ113内のデータフォーマットが変更されるため、この変更に伴ってドライブ内の物理チャンク310のレイアウトが変更される。
【0046】
あるいは、ストレージシステム1のアップデートにより新機能が提供されることや、システムの設定を変更することで使用していなかった機能を新規に利用することがある。当該新規使用の機能がSDS内のプログラムが使用するメタデータをドライブに格納することを必要とする場合、機能の使用を開始するためにドライブ内のデータフォーマットが変更される。例えば、機能の新規利用や拡張により、ユーザデータの書き込みログが新規に必要となったり格納形式(ログサイズ、ログフォーマット)が変更されたりした場合にもドライブ内のデータのフォーマットが変更される。
【0047】
あるいは、物理チャンクの大きさを変更することや、ドライブの一部領域を他のプログラムのために解放すること(システムファイルとユーザデータの共存/分離の切り替え)、メモリデータの退避領域の確保、サイズ変更および解放がある。この場合も、ドライブ内のデータのフォーマットは変更される。
【0048】
一方で、ストレージシステム1では、ストレージノード110の有するドライブ113を容量プール320に割り当てた時点で論理チャンク330と物理チャンク310の対応付けが決定している。本対応付けはマッピングテーブル250に格納されている。そこで、ドライブ113内の物理チャンク310のレイアウト変更する場合は、ユーザデータへのアクセスは維持しながらマッピングテーブル250を変更する。
【0049】
(実施形態1に係るチャンク状態管理テーブル260)
図5は、実施形態1に係るチャンク状態管理テーブル260を示す図である。
【0050】
チャンク状態管理テーブル260は、容量プール320に割り当てられたドライブ113のドライブ情報410と当該ドライブ113の物理チャンク310の位置を識別する位置情報420により識別される物理チャンク310の使用状態を格納する。
【0051】
設定可能な物理チャンク310の使用状態は、該当領域を使用していない「未使用」、旧フォーマットで使用している「旧」、新フォーマットで使用している「新」、旧フォーマットから新フォーマットに変換中の変換元の「旧・変換中」と変換先の「新・変換中」の5つの状態である。ドライブ情報410の列数は、マッピングテーブル250と連動する。マッピングテーブル250にマップ情報が追加された場合は同領域のマップ情報を追加し、マップ情報が削除された場合は同領域のマップ情報を削除する。
【0052】
例えば、
図5に示すように、ドライブD6内の物理チャンク310のレイアウト変換に伴うマップ変換中では、マッピングテーブル250とチャンク状態管理テーブル260は、旧レイアウトに基づく情報431と新レイアウトに基づく情報432を有する。
【0053】
(チャンク単位でのドライブデータレイアウト変換)
図6Aは、実施形態1に係るチャンク単位でのドライブデータレイアウト変換を示す図である。
図6Bは、実施形態1に係るチャンク単位でのドライブデータレイアウト変換の際のマッピングテーブル250を示す図である。
【0054】
図6Aに示すように、ドライブD6のレイアウトを変更する際に、チャンク状態管理テーブル260(
図5)のドライブD6の情報431を参照し、ドライブ内の使用済領域と未使用領域の情報を取得する。
図5の例の場合、ドライブD6では、物理チャンクP1が使用済領域であり、物理チャンクP2,P3が未使用領域である。
【0055】
ドライブD6に対して新フォーマットに基づく新レイアウト512を作成し、マッピングテーブル250(
図6B)に追加する。この時、ドライブD6によって論理チャンク330に提供される物理チャンク310は、ドライブD6全体では変更前後で同一であるが、使用済領域に対して割り当てられる領域は異なる。
【0056】
具体的には、マッピングテーブル250(
図6B)に示すように、旧フォーマットに基づく旧レイアウト511では、論理チャンクL31,L23,L32のそれぞれに物理チャンクP1,P2,P3が提供されている。新レイアウト512でも、旧レイアウト511と同様に、論理チャンクL31,L23,L33に物理チャンクP1,P2,P3が提供される。しかし、使用済領域である論理チャンクL31のマッピングは変更される。すなわち、論理チャンクL23,L31,L32のそれぞれに物理チャンクP1,P2,P3が提供される。
【0057】
そして、
図6Aに示すように、ドライブD6の旧レイアウト511の物理チャンクP1に格納されたデータが、新レイアウト512の未使用領域である物理チャンクP2にコピーされる(コピー処理520)。なお、コピー先の新レイアウト512の物理チャンク310に用いられる記憶領域が旧レイアウト511において使用済である場合は、コピー先の記憶領域のデータを他の記憶領域に移行して未使用にした上でコピー処理520が実施される。コピー処理520によって、データを他の領域にコピーすることで冗長化グループの冗長度を上げるので、ドライブD6の旧レイアウト511の物理チャンクP1に格納されたデータが破棄されても、元々の冗長データと共にデータの冗長度を維持できる。なお、冗長化グループの冗長度は、データのコピーによって上げることに限らず、データに基づく冗長データの数を増やすことで上げてもよい。
【0058】
コピー処理が開始されると、チャンク状態管理テーブル260(
図5)のコピー元領域を「旧・変換中」に更新し、コピー先領域を「新・変換中」に更新する。
【0059】
旧レイアウト511の物理チャンクP1に格納されたデータのコピー処理が完了すると、チャンク状態管理テーブル260のコピー元領域を「未使用」に変更し、コピー先領域を「新」に変更する。
【0060】
そして、ドライブD6の旧レイアウト511のすべての領域が未使用領域になると、マッピングテーブル250およびチャンク状態管理テーブル260から旧フォーマットに基づく旧レイアウト511を削除する。
【0061】
チャンク単位でのドライブデータレイアウト変換処理により、新レイアウトと旧レイアウトではストレージノード110内のドライブ113に格納されるデータは同じだが、格納位置が変更された状態となる。冗長データは別のストレージノード110内のドライブ113に格納される。
【0062】
例えば、
図6Aおよび
図6Bに示すように、新旧レイアウトでは、論理チャンクL31対応するデータFは、ストレージノードN3においてドライブD6の旧レイアウトの物理チャンクP1からドライブD6の新レイアウトの物理チャンクP2に移動されている。しかし、データFは、ストレージノードN3に障害が発生した際には、何れの物理チャンクに格納されていたとしても、ストレージノード110のドライブD2の物理チャンクP2からアクセスすることができる。
【0063】
(チャンク単位でのドライブデータレイアウト変換処理フロー)
図7は、チャンク単位でのドライブデータレイアウト変換処理フローを示す図である。チャンク単位でのドライブデータレイアウト変換処理は、同一の冗長グループに属する複数のストレージノード110に配置された複数のストレージ制御プログラム220(
図2)のうちの何れかによって実行される。ステップS101-S102の処理は、フォーマット変換指示を受信したストレージノード110のストレージ制御プログラム220によって実行される。ステップS103-S112の処理は、フォーマット更新指示を受信したストレージ制御プログラム220によって実行される。
【0064】
先ずステップS101では、ストレージ制御プログラム220は、フォーマット変換を実施する冗長グループに旧フォーマットを用いる物理チャンク310を有するストレージノード110が存在するかを確認する。ストレージ制御プログラム220は、該当のストレージノード110が存在する場合(ステップS101YES)にステップS102に処理を移し、存在しない場合(ステップS101NO)にチャンク単位でのドライブデータレイアウト変換処理を終了する。
【0065】
ステップS102では、ストレージ制御プログラム220は、旧フォーマットを用いる物理チャンク310を有するストレージノード110の1台に容量プールを指定してフォーマットの更新指示を送信する。更新指示の送信元と送信先のストレージノード110(ストレージ制御プログラム220)は、同一の場合も異なる場合もある。
【0066】
次にステップS103では、更新指示を受信したストレージ制御プログラム220は、旧フォーマットを用いるドライブ113が更新指示で指定される容量プールに存在するかを確認する。ストレージ制御プログラム220は、該当のドライブ113が存在する場合(ステップS103YES)にステップS104に処理を移し、存在しない場合(ステップS103NO)にステップS101に処理を戻す。
【0067】
ステップS104では、ストレージ制御プログラム220は、チャンク状態管理テーブル260を参照し、旧フォーマットを用いる該当のドライブ113のドライブ使用状況を確認する。次にステップS105では、ストレージ制御プログラム220は、旧フォーマットを用いるドライブ113を1台選択し、選択したドライブ113の新フォーマットに基づく新レイアウトをマッピングテーブル250に追加し、新フォーマットに基づく使用状況をチャンク状態管理テーブル260に追加する。
【0068】
ここで、マッピングテーブル250に追加される新レイアウトは、冗長度を維持すると共に、旧レイアウトで使用済の物理チャンクが対応する論理チャンクを、旧レイアウトにおいて未使用の記憶領域に対応する物理チャンクに割り当てるレイアウトである。
【0069】
次にステップS106では、ストレージ制御プログラム220は、ステップS103YESに該当のドライブ113に旧レイアウトの使用済の物理チャンクが存在するかを確認する。ストレージ制御プログラム220は、使用済みの物理チャンクが存在する場合に、旧レイアウトで該当の使用済みの物理チャンクと対応する論理チャンクを確認する。そして、ストレージ制御プログラム220は、新レイアウトで該当の論理チャンクと対応する物理チャンクを確認する。そして、ストレージ制御プログラム220は、該当の物理チャンクが旧レイアウトにおいて使用されているかを確認する。ストレージ制御プログラム220は、該当の物理チャンクが旧レイアウトにおいて使用されている場合(ステップS106YES)にステップS107に処理を移し、旧レイアウトにおいて使用されていない場合(ステップS106NO)にステップS112に処理を移す。
【0070】
ステップS107では、ストレージ制御プログラム220は、旧レイアウトにおいて使用されている物理チャンクのデータを他の領域に移動して空き領域を確保する。この際、ストレージ制御プログラム220は、物理チャンクと論理チャンクのマッピングも、データの移動に合わせて変更する。
【0071】
次にステップS108では、ストレージ制御プログラム220は、旧レイアウトの使用済の物理チャンクと対応する論理チャンクが新レイアウトで対応する物理チャンクへ、該当の使用済の物理チャンクのデータをコピー処理することを開始する。コピー処理の際、ストレージ制御プログラム220は、コピー先に新フォーマットでデータを書き込む。次にステップS109では、ストレージ制御プログラム220は、チャンク状態管理テーブル260のコピー元領域を「旧・変換中」に更新し、コピー先領域を「新・変換中」に更新する。
【0072】
次にステップS110では、ストレージ制御プログラム220は、データのコピー処理を完了する。
【0073】
次にステップS111では、ストレージ制御プログラム220は、チャンク状態管理テーブル260のコピー元領域を「未使用」に変更し、コピー先領域を「新」に変更する。チャンク状態管理テーブル260のコピー元領域を「未使用」に更新することが、コピー元領域に格納されているデータを破棄することに相当する。ストレージ制御プログラム220は、ステップS111が終了すると、ステップS106に処理を移し、前回のステップS106の実行で確認した使用済の物理チャンクとは別の使用済の物理チャンクが存在するかを確認する。
【0074】
ステップS112では、ストレージ制御プログラム220は、該当のドライブ113の旧フォーマットに基づくマッピングテーブル250とチャンク状態管理テーブル260の情報を削除する。ストレージ制御プログラム220は、ステップS112が終了すると、ステップS103に処理を移す。
【0075】
ここで、フォーマット変更中のIO処理について説明する。
【0076】
容量制御プログラム230(
図2)は、フォーマット変更中にIOを実施する際、チャンク状態管理テーブル260(
図5)を参照する。この際、チャンク状態管理テーブル260に、IO先のドライブ113に対して旧レイアウトの情報431と新レイアウトの情報432が存在する場合は、旧レイアウトの情報431を参照する。
【0077】
容量制御プログラム230は、IO実施先のドライブ113の物理チャンクの状態に応じて、旧フォーマット用制御機構231(
図2)と新フォーマット用制御機構232(
図2)を使い分ける。
【0078】
容量制御プログラム230は、IOを、IO実施先の物理チャンク310の状態が「未使用」または「旧」の場合には旧フォーマット用制御機構231を用い、「新」の場合には新フォーマット用制御機構232を用いて実施する。
【0079】
また、容量制御プログラム230は、コピー処理(ステップS108-S110(
図7))中では、ライトIOかリードIOかに応じて旧フォーマット用制御機構231と新フォーマット用制御機構232を使い分ける。
【0080】
すなわち、容量制御プログラム230は、IO実施先の物理チャンク310の状態が「旧・変換中」の場合のライトIOを、コピー元の物理チャンク310に対して、旧フォーマット用制御機構231を用いて実施する。また、容量制御プログラム230は、同様に、IO実施先の物理チャンク310の状態が「旧・変換中」の場合のライトIOを、コピー先の物理チャンク310に対して、新フォーマット用制御機構232を用いて実施する。
【0081】
一方、容量制御プログラム230は、IO実施先の物理チャンク310の状態が「旧・変換中」の場合のリードIOを、コピー元の物理チャンク310に対して旧フォーマット用制御機構231を用いて実施する。
【0082】
このように、マッピングテーブル250に旧フォーマットに基づく旧レイアウト情報と新フォーマットに基づく新レイアウト情報を持たせ、旧フォーマット用制御機構231と新フォーマット用制御機構232を使い分けることで、データフォーマットの変換中に、旧フォーマットと新フォーマットの領域が混在する場合でも、何れの領域にもアクセスすることができる。
【0083】
新レイアウトでコピー先となる記憶領域には、旧レイアウトにおける未使用領域が割り当てられている。フォーマット変更中に、旧レイアウトにおける未使用領域の物理チャンク310が対応する論理チャンク330が仮想ボリューム340に割り当てられてライトIOが発生する場合、該当の論理チャンク330に対応する物理チャンク310が変更される。すなわち、論理チャンク330に対応する物理チャンク310が、同一ストレージノード110内の別の未使用の物理チャンク310に変更される。そして、マッピングテーブル250とチャンク状態管理テーブル260における物理チャンク310に対する論理チャンク330のマップ情報が変更される。
【0084】
なお、フォーマット変更のために破棄されるデータに対するフォーマット変更中のI/O処理は、破棄データを他の物理チャンクへコピーする場合には、この破棄データのコピーに対して行なわれる。また、破棄データを他の物理チャンクへコピーしない場合には、フォーマット変更を行う物理チャンク以外に格納されている破棄データの冗長データに基づいて破棄データを復元したデータに対して行われる。
【0085】
(実施形態1の効果)
ドライブデータレイアウトのフォーマットを変更すると、ストレージ制御プログラム220は、旧フォーマットに基づくレイアウトに従って格納されているデータにアクセスできなくなる。そこで、旧フォーマットに基づくレイアウトで格納されているデータを別の領域(物理チャンク310、記憶ドライブ113など)に移行した上で新フォーマットに基づくレイアウトに変更し、新レイアウトに従ってデータを格納し直す。
【0086】
また、レイアウト変換中は、データ格納先のレイアウトの新旧情報(マッピングテーブル250)を管理する。I/O要求を受信した際、ストレージ制御プログラム220は、レイアウトの新旧情報を参照し、I/O要求のアクセス先のデータ格納領域のレイアウトに応じたIO処理によりI/O要求を実施する。
【0087】
よって、実施形態1によれば、ホストからのI/O処理を継続しながら、データレイアウト変更を伴うストレージシステム1の性能及び品質向上、機能追加のアップデートを実現できる。例えばDIF格納方式をセパレート方式から連続格納方式に変更することで、ランダムリード性能が向上する。
【0088】
[実施形態2]
実施形態2では、フォーマット変更対象のドライブ113を一時的にストレージシステム1から切り離し、フォーマット変換の上で再接続することで、ドライブ単位でのレイアウト変更を実現する。
【0089】
(ドライブ単位でのドライブデータレイアウト変換)
図8Aは、ドライブ単位でのドライブデータレイアウト変換を示す図である。
図8Bは、実施形態2に係るドライブ単位でのドライブデータレイアウト変換の際のマッピングテーブル250を示す図である。
図8Cは、実施形態2に係るドライブ単位でのドライブデータレイアウト変換の際のチャンク状態管理テーブル260を示す図である。
図8A、
図8B、および
図8Cでは、ドライブD5のレイアウト変換例を示す。
【0090】
変換対象であるドライブ113内の使用済の物理チャンク310のデータを、ドライブ113と同一のストレージノードN3内の別のドライブ113内の未使用の物理チャンク310に移動させる。移動先のドライブ113では、新フォーマットを用いても旧フォーマットを用いてもよい。また、移動先のドライブ113は、1台でも複数台でもよい。
【0091】
例えば
図8Aでは、実施形態2に係るストレージシステム1BにおけるドライブD5の物理チャンクP1に格納されているデータCが、ドライブD6の物理チャンクP2にコピー(コピー処理611)される。また、ドライブD5の物理チャンクP2に格納されているデータDが、ドライブD6の物理チャンクP3にコピー(コピー処理612)される。
【0092】
コピー処理611,622が完了すると、コピー元およびコピー先の物理チャンク310に関するマッピングテーブル250(
図8B)とチャンク状態管理テーブル260(
図8C)の情報を変更する。
【0093】
例えば、マッピングテーブル250(
図8B)において、コピー前はドライブD5の物理チャンクP1には論理チャンクL13が対応しており、ドライブD6の物理チャンクP2には論理チャンクL23が対応している。コピー完了後は、この対応を入れ替える。
【0094】
また、チャンク状態管理テーブル260(
図8C)において、ドライブD5の物理チャンクP1,P2の状態が「旧」から「未使用」に変更される。また、チャンク状態管理テーブル260において、ドライブD6の物理チャンクP2,P3の状態がドライブ113(ドライブD6)のフォーマットに基づき「未使用」から「旧」もしくは「新」に変更される。コピーする全ての物理チャンク310について、同様にマッピングテーブル250が変更される。
【0095】
ドライブD5に格納されていた全てのデータを同一のストレージノードN3内の他のドライブD6にコピーし終えると、ドライブD5に対して新フォーマットに基づく新レイアウトが生成され、マッピングテーブル250が変更される。
【0096】
そして、ストレージノード110(ストレージノードN3)内の全てのドライブ113が新フォーマットに基づく新レイアウトになるまで、ドライブ単位でのドライブデータレイアウト変換が継続される。
【0097】
ドライブ単位でのドライブデータレイアウト変換により、フォーマット変換前と比較して、データの格納領域が同一のストレージノード110内の別のドライブ113に変更される。格納領域が変更されたデータは、別のストレージノード110内のドライブ113に冗長データが格納されており、データの冗長性は維持されている。
【0098】
ドライブデータレイアウト変換中のIO処理は、実施形態1と同様に行われる。
【0099】
また、ドライブ113単位でフォーマットが変換されるため、チャンク状態管理テーブル260に代えて、
図9に変形例として示すような、チャンク単位ではなくドライブ単位を管理単位をとした状態管理テーブル260Bを採用してもよい。
【0100】
(ドライブ単位でのデータレイアウト変換のフローチャート)
図10は、実施形態2に係るドライブ単位でのデータレイアウト変換処理フローを示す図である。ドライブ単位でのデータレイアウト変換処理は、同一の冗長グループに属する複数のストレージノード110に配置された複数のストレージ制御プログラム220(
図2)のうちの何れかによって実行される。実施形態1と同一のステップS101-S102の処理は、フォーマット変換指示を受信したストレージ制御プログラム220によって実行される。ステップS203-S112の処理は、フォーマット更新指示を受信したストレージ制御プログラム220によって実行される。
【0101】
ステップS101-S102、S203は、実施形態1と同様である。
【0102】
ステップS204では、ストレージ制御プログラム220は、更新指示で指定された容量プールに属する旧フォーマットを使用するドライブ113内の物理チャンクが使用中かを確認する。ストレージ制御プログラム220は、該当の物理チャンクが使用中である場合(ステップS204YES)にステップS205に処理を移し、使用中でない場合(ステップS204NO)にステップS207に処理を移す。
【0103】
ステップS205では、ストレージ制御プログラム220は、ステップS204で使用中と判定された物理チャンクのデータを同一のストレージノード110内の別のドライブ113にコピー処理する。コピー処理の際、ストレージ制御プログラム220は、コピー先に新フォーマットでデータを書き込む。次にステップS206では、ストレージ制御プログラム220は、物理チャンクのコピーが完了すると、マッピングテーブル250とチャンク状態管理テーブル260をコピー後の構成に合わせて変更する。この際、チャンク状態管理テーブル260において、コピー後の構成に合せてコピー元領域が「未使用」に更新することが、コピー元領域に格納されているデータを破棄することに相当する。ストレージ制御プログラム220は、ステップS206が終了すると、ステップS204へ処理を戻す。
【0104】
ステップS207では、ストレージ制御プログラム220は、マッピングテーブル250とチャンク状態管理テーブル260を新フォーマットに基づいて変更する。ストレージ制御プログラム220は、ステップS207が終了すると、ステップS203に処理を戻す。
【0105】
(実施形態2の効果)
データフォーマットを変更する前に、データフォーマットの変更対象の記憶ドライブ113またはストレージノード110をストレージシステム1Bから切り離し、データフォーマットの変更が完了すると、切り離した記憶ドライブ113またはストレージノード110をストレージシステム1Bに接続する。よって、記憶ドライブ113やストレージノード110といったまとまった単位でデータフォーマット変換を効率よく実施できる。
【0106】
(実施形態2の変形例)
実施形態2の変形例では、ドライブではなくストレージノードを一時的にストレージシステム1から切り離し、フォーマット変換の上で再接続することで、レイアウト変更を実現する。この場合には、該当のストレージノードが有する指定された冗長度の容量プールに属する全てのドライブに格納されたデータをこの容量プールに属する別のストレージノードのドライブにコピーされた上でマッピングが変更される。
【0107】
[実施形態3]
実施形態3では、一時的にIOの受け付けを停止した上で、ストレージノード単位でフォーマット変換することで、ストレージノード単位でのレイアウト変更を実現する。
【0108】
図11は、実施形態3に係るストレージノード単位でのデータレイアウト変換例を示す図である。実施形態3のストレージシステム1Cでは、クラスタ内のストレージノード110が停止すると、このストレージノード110内のドライブ113と同じ冗長化グループに属する別のストレージノード110内のドライブ113内の物理チャンクに対してIO処理が行われる。
【0109】
例えば、停止したストレージノード110内のドライブ113に存在するマスタの物理チャンク310に対応する論理チャンク330にIOが発行された場合、停止していないストレージノード110内のドライブ113に存在するミラーの物理チャンク310に対してIOが実施される。停止していたストレージノード110がクラスタに復帰すると、IO先はマスタの物理チャンク310に切り替えられる。
【0110】
その際、マスタとミラーのそれぞれの物理チャンク310に格納されるデータを一致させるために、停止していたストレージノード110のマスタの物理チャンク310には、対応するミラーの物理チャンク310からデータをコピーする。一方で、停止していたストレージノード110のミラーの物理チャンクには対応する別のストレージノード110のマスタの物理チャンク310からデータをコピーする。本機能をリビルド機能と呼ぶ。
【0111】
あるいは、停止してから復帰するまでのデータ差分を、停止していたストレージノード110の物理チャンク310にコピーする。本機能を差分リビルド機能と呼ぶ。
【0112】
本実施形態では、ストレージノード110のIO受け付けを停止した上で、リビルド機能(もしくは差分リビルド機能)を用いることで、ストレージノード単位のレイアウト変換を行う。
【0113】
図11は、ストレージノードN3のレイアウト変換例を示す。
【0114】
先ず変換対象であるストレージノードN3のIO受け付けを停止する。レイアウト変換中にストレージノードN3内のドライブ113にマスタが存在する物理チャンク310へのIOが発行された場合は、ストレージノードN3の停止時の挙動に基づき、ミラーの物理チャンク310に対してIOが実施される。
【0115】
ストレージノードN3のIO受け付けを停止すると、対象の冗長グループに属するドライブ113が用いるフォーマットを変換し、マッピングテーブル250のレイアウトを更新する。マッピングテーブル250のレイアウト更新が完了すると、ストレージノードN3のIOを再開する。ストレージノードN3の再開時の挙動に基づき、IO先が新フォーマットであるストレージノードN3のマスタの物理チャンク310に切り替わる。
【0116】
また、IO再開時に、ミラーの物理チャンク310の全データを新レイアウトのストレージノードN3のマスタの物理チャンク310に反映する。
【0117】
例えば、IO停止前には、ストレージノードN3にマスタのデータC,D,Fが格納されていた(
図11の530参照)場合、IO再開時に、ミラーの物理チャンク310のデータC,D,Fをストレージノード110(ストレージノードN3)にコピーする(コピー処理711,712,713)。
【0118】
なお、本実施形態でも、チャンク状態管理テーブル260に代えて、チャンクではなくドライブを管理単位とする状態管理テーブル260B(
図9)を用いてもよい。また、チャンク状態管理テーブル260に代えて、ドライブではなくノードを管理単位とする状態管理テーブル260C(
図12)を用いてもよい。
【0119】
(ストレージノード単位でのデータレイアウト変換のフローチャート)
図13は、実施形態3に係るストレージノード単位でのデータレイアウト変換処理フローを示す図である。ストレージノード単位でのデータレイアウト変換処理は、同一の冗長グループに属する複数のストレージノード110に配置された複数のストレージ制御プログラム220(
図2)のうちの何れかによって実行される。実施形態1および2と同一のステップS101-S102の処理は、フォーマット変換指示を受信したストレージ制御プログラム220によって実行される。ステップS303-S308の処理は、フォーマット更新指示を受信したストレージ制御プログラム220によって実行される。
【0120】
ステップS101-S102は、実施形態1および2と同様である。
【0121】
ステップS303では、更新指示を受信したストレージ制御プログラム220は、フォーマット更新指示で指定された容量プールへのIO受け付けを停止する。次にステップS304では、ストレージ制御プログラム220は、フォーマット更新指示で指定された容量プールのマッピングテーブル250を変更する。例えば、ストレージノード110がドライブD5とドライブD6を有する場合、この2つのドライブ113のレイアウトが新フォーマットに基づく新レイアウトに変更される。
【0122】
次にステップS305では、ストレージ制御プログラム220は、更新指示で指定された容量プールのチャンク状態管理テーブル260を更新する。例えば、ストレージノード110がドライブD5とドライブD6を有する場合、この2つのドライブ113の物理チャンクの状態情報が「旧」から「新」に更新される。この際、チャンク状態管理テーブル260において、コピー後の構成に合せてコピー元領域が「新」に更新することが、コピー元領域に格納されている「旧」のデータを破棄することに相当する。
【0123】
次にステップS306では、ストレージ制御プログラム220は、マッピングテーブル250とチャンク状態管理テーブル260の更新内容を、更新指示で指定された容量プールと同一の冗長化グループに属する他のストレージノード110に通知する。次にステップS307では、ストレージ制御プログラム220は、ステップS303で停止したIO受け付けを再開する。
【0124】
次にステップS308では、ストレージ制御プログラム220は、リビルド処理を実施する。具体的には、他のストレージノード110内のミラーの物理チャンク310のデータが、フォーマット変更対象のストレージノード110内のマスタの物理チャンク310にコピー処理される。コピー処理の際、ストレージ制御プログラム220は、コピー先に新フォーマットでデータを書き込む。また、他のストレージノード110内のマスタの物理チャンク310が、フォーマット変更対象のストレージノード110内のミラーの物理チャンク310にコピーされる。ストレージ制御プログラム220は、ステップS308が終了すると、ステップS101に処理を戻す。
【0125】
(実施形態3の効果)
データフォーマットを変更する際に、データフォーマットの変更対象のストレージノード110または記憶ドライブ113に対するI/O要求の受け付けを停止し、変更後のデータフォーマットに従ってマッピングテーブル250を更新する。そして、マッピングテーブル250の更新が完了すると、I/O要求の受け付けを再開する。また、データフォーマットを変更のために、データフォーマット変更対象の記憶領域から破棄したデータを、データのリビルド機能を用いて復元する。よって、記憶ドライブ113やストレージノード110といったまとまった単位でフォーマット変換を行い、リビルド機能を用いて元々存在する冗長化データを利用してデータ復旧を行うので、簡易な構成で効率よくデータフォーマット変換を実施できる。
【0126】
(実施形態3の変形例)
実施形態3の変形例では、ノード単位ではなくドライブ単位でIO受け付けを停止し、ドライブ単位でレイアウトの変更をすることも可能である。この場合でも、ドライブの復帰後はリビルド機能もしくは差分リビルド機能によりデータが復旧される。
【0127】
本開示は上述の実施形態に限定されるものではなく、様々な変形例を含む。例えば、上記した実施形態は本開示を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、矛盾しない限りにおいて、ある実施形態の構成の一部を他の実施形態の構成で置き換え、ある実施形態の一部または全部の構成に他の実施形態の一部または全部の構成を加えることも可能である。また、各実施形態の構成の一部について、構成の追加、削除、置換、統合、または分散をすることが可能である。また、実施形態で示した構成および処理は、処理効率または実装効率に基づいて適宜分散、統合、または入れ替えることが可能である。
【符号の説明】
【0128】
1,1B,1C:ストレージシステム、110:ストレージノード、112:プロセッサ、113:記憶ドライブ、250:マッピングテーブル、260:チャンク状態管理テーブル、ストレージ制御プログラム、230:容量制御プログラム、231:旧FMT用制御機構、232:新FMT用制御機構、310:物理チャンク、330:論理チャンク