(57)【要約】  ストレージシステムは、ホストからの第１の更新データを格納する揮発性メモリ、およびホストからの他ノードへの第２の更新データの第２の複製データを格納する第１の不揮発性メモリを有し、第１の更新データの第１の複製データを他ノードの第２の不揮発性メモリに格納する複製管理処理部、および複製管理処理部による第１の更新データの第１の複製データの、他ノードの第２の不揮発性メモリへの格納に応答して、第１の更新データの更新要求に対する応答をホストへ送信するストレージサービス処理部を有するノードを、他ノードと接続したクラスタ構成である。
2016117129.tif 000002
【特許請求の範囲】
【請求項１】
ノードと、前記ノードと接続された他ノードとを備えるストレージシステムであって、
前記ノードは、
ホストからの第１の更新データを格納する揮発性メモリ、および前記ホストからの前記他ノードへの第２の更新データの第２の複製データを格納する第１の不揮発性メモリを有し、
前記第１の更新データの第１の複製データを前記他ノードの第２の不揮発性メモリに格納する複製管理処理部と、前記第１の複製データの、前記他ノードの前記第２の不揮発性メモリへの格納に応答して、前記第１の更新データの更新要求に対する応答を前記ホストへ送信するストレージサービス処理部と、を有することを特徴とするストレージシステム。
【請求項２】
前記他ノードの前記第２の不揮発性メモリに格納している前記第１の複製データのデータ量が予め定めた所定量を超えた場合、前記第１の複製データの格納時刻から予め定めた所定時間が経過した場合、および、前記ホストから強制書き出し要求を受けた場合のいずれかの場合に、前記複製管理処理部は、前記第１の更新データをストレージ装置へ書き出し、書き出した前記第１の更新データに対応する、前記第２の不揮発性メモリに格納されている前記第１の複製データを削除することを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記他ノードの障害の検知に応答して、前記ノードは前記揮発性メモリの所定の領域をバッテリバックアップして第３の不揮発性メモリとし、前記揮発性メモリに格納した前記第１の更新データを前記第３の不揮発性メモリに格納することを特徴とする請求項２記載のストレージシステム。
【請求項４】
前記ノードは、前記第１の不揮発性メモリに格納している前記第２の複製データと前記第３の不揮発性メモリに格納している前記第１の更新データとを、前記ストレージ装置の予め定めた退避領域に退避する冗長化処理部を有することを特徴とする請求項３記載のストレージシステム。
【請求項５】
前記他ノードの障害からの復旧に応答して、前記ノードは前記退避領域から、前記第２の複製データを前記第１の不揮発性メモリに、前記第１の更新データを前記揮発性メモリに復元することを特徴とする請求項４記載のストレージシステム。
【請求項６】
前記ノードの前記第１の不揮発性メモリと、前記他ノードの前記第２の不揮発性メモリとの少なくともいずれか一方は、バッテリバックアップされた揮発性メモリであることを特徴とする請求項１記載のストレージシステム。
【請求項７】
ノードと他ノードを接続したクラスタ構成のストレージシステムの制御方法であって、
前記ノードは、ホストからの第１の更新データを格納する揮発性メモリ、および前記ホストからの前記他ノードへの第２の更新データの第２の複製データを格納する第１の不揮発性メモリを有し、
前記第１の更新データの第１の複製データを前記他ノードの第２の不揮発性メモリに格納し、
前記他ノードの前記第２の不揮発性メモリへの前記第１の複製データの格納に応答して、前記第１の更新データの更新要求に対する応答を前記ホストへ送信することを特徴とするストレージシステムの制御方法。
【請求項８】
前記ノードは、前記第１の不揮発性メモリに格納している前記第２の複製データを、前記ストレージ装置の予め定めた退避領域に退避することを特徴とする請求項７記載のストレージシステムの制御方法。
【請求項９】
前記他ノードの障害からの復旧に応答して、前記ノードは前記退避領域から、前記第２の複製データを前記第１の不揮発性メモリに復元することを特徴とする請求項８記載のストレージシステムの制御方法。
【請求項１０】
前記ノードの前記第１の不揮発性メモリと、前記他ノードの前記第２の不揮発性メモリとの少なくともいずれか一方は、バッテリバックアップされた揮発性メモリであることを特徴とする請求項７記載のストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置を含むストレージシステムおよびその制御方法に関する。
【背景技術】
【０００２】
ストレージ制御装置（以下、ノード）における性能向上を実現する技術として、ホストからの更新データをノードの不揮発性メモリ領域に格納後、ストレージ装置のデータ更新に係らず、すぐに処理完了とする技術が特許文献１に記載されている。この技術は、２ノードクラスタによるＨＡ（High Availability）構成のストレージシステムを対象としている。各ノードは、不揮発性メモリを有し、不揮発性メモリ上に自ノードのデータを格納する領域と、他ノードのデータを格納する領域の２領域を持つ。ホスト（ホストコンピュータ）からの更新データを受け付けたノードは、自ノードの不揮発性メモリ上の自ノードデータ格納領域に更新データを格納し、他ノードの不揮発性メモリ上の他ノードデータ格納領域に更新データを複製する。複製が終わると、更新データを受け付けたノードは、処理完了をホストへ通知する。【０００３】
このように、特許文献１の技術は、 不揮発性メモリへの更新データの格納により、更新データをストレージ装置に書き出す前に、処理完了をホストへ通知できる。また、複製に伴う更新データの２重化により、一方のノードに障害が起きても、他方のノードが処理を引き継ぐことが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＵＳ７７３０１５３
【発明の概要】
【発明が解決しようとする課題】
【０００５】
不揮発性メモリは、揮発性メモリに比べてコストが高いので、費用対効果が低い。そこで、揮発性メモリの特定領域をバッテリでバックアップして不揮発性メモリと同等に用いる技術がある。この技術によってもバッテリもコストが高く、費用対効果が低いので、バッテリ容量を最小限にする必要がある。特にクラスタ構成のストレージシステムでは、ノード数に応じて不揮発性メモリの容量を多くする必要があるので、バッテリバックアップしたとしても、その容量を少なく抑えることが要求される。
【課題を解決するための手段】
【０００６】
開示するストレージシステムは、ホストからの第１の更新データを格納する揮発性メモリ、およびホストからの他ノードへの第２の更新データの第２の複製データを格納する第１の不揮発性メモリを有し、第１の更新データの第１の複製データを他ノードの第２の不揮発性メモリに格納する複製管理処理部、および複製管理処理部による第１の更新データの第１の複製データの、他ノードの第２の不揮発性メモリへの格納に応答して、第１の更新データの更新要求に対する応答をホストへ送信するストレージサービス処理部を有するノードを、他ノードと接続したクラスタ構成である。
【発明の効果】
【０００７】
開示するストレージシステムによれば、バッテリバックアップする揮発性メモリの容量、不揮発性メモリの容量を少なく抑えることができる。
【図面の簡単な説明】
【０００８】
【図１】ストレージシステムの揮発性メモリをバッテリバックアップする構成を示す図である。
【図２】スイッチの状態を示す表である。
【図３】スイッチの状態遷移図である。
【図４】実施例１のストレージシステムの概略構成図である。
【図５】ストレージシステムのハードウェア構成図である。
【図６Ａ】自ノード静止点管理テーブルの例である。
【図６Ｂ】自ノードオペレーション管理テーブルの例である。
【図６Ｃ】他ノード静止点管理テーブルの例である。
【図６Ｄ】他ノードオペレーション管理テーブルの例である。
【図７Ａ】データ退避場所管理テーブルの例である。
【図７Ｂ】ノード状態管理テーブルの例である。
【図８】各ノードの揮発性メモリおよび不揮発性メモリのデータの持ち方の例である。
【図９】他ノードに障害が発生し、１ノードで処理する場合の構成例である。
【図１０】他ノードの障害を検知した後の、自ノードの複製管理処理部の処理フローチャートである。
【図１１】更新要求を受信したときの処理フローチャートである。
【図１２Ａ】非同期に更新データをボリュームに書き出す複製管理処理部の処理フローチャートである。
【図１２Ｂ】冗長化処理部の処理フローチャートである。
【図１３】ボリュームに退避されたデータの復帰処理のフローチャートである。
【図１４】ボリュームに退避されたデータの他の復帰処理のフローチャートである。
【図１５】ボリュームに退避されたデータのさらに他の復帰処理のフローチャートである。
【図１６】実施例２のストレージシステムの概略構成図である。
【図１７】不揮発性メモリ上に格納する他ノードのデータの格納方法について示した図である。
【図１８】不揮発性メモリ上に格納する他ノードのデータの他の格納方法について示した図である。
【図１９】一部のノードが停止した場合の複製管理処理部の処理フローチャートである。
【図２０】実施例３のファイルサーバとブロックストレージとの多段構成のノードによるストレージシステムの概略構成図である。
【図２１】ストレージシステムのハードウェア構成図である。
【発明を実施するための形態】
【０００９】
幾つかの実施例を、図面を参照して説明する。
【００１０】
以下の説明では、「ＸＸテーブル」と表現して各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「ＸＸテーブル」を「ＸＸ情報」と呼ぶことがある。
【００１１】
また、以下の説明では、プログラムを主語として処理を説明する場合があるが、プログラムをハードウェア自体、またはハードウェアが有するプロセッサ（例えば、ＭＰ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｏｒ））によって実行することで、定められた処理を、適宜に記憶資源（例えばメモリ）および／または通信インターフェースデバイス（例えばポート）を用いながら行うため、処理の主語がハードウェアとされても良い。また、プログラムソースは、例えば、プログラム配布サーバまたは記憶メディアであっても良い。
【００１２】
さらに、以下の説明では、アプリケーションまたはファイルシステムの整合性が取れている状態を静止点と呼ぶ。静止点は、１つまたは２つ以上存在し、それぞれに静止点番号を付与して管理する。
【実施例１】
【００１３】
図１は、ストレージシステムの揮発性メモリをバッテリバックアップする構成を示す図である。図１では、揮発性メモリのバッテリバックアップを説明するために、バッテリバックアップ以外のための構成の図示を省略する。【００１４】
ストレージシステムは、ノードＡ２００とノードＢ４００とによる２ノードクラスタ構成である。ノードＡ２００は揮発性メモリ２０５を有し、ノードＢ４００は揮発性メモリ４０５を有する。揮発性メモリ２０５は、バッテリバックアップ不可能な領域２９０とバッテリバックアップが可能な領域３００を有する。揮発性メモリ４０５は、バッテリバックアップ不可能な領域４９０とバッテリバックアップが可能な領域５００を有する。領域３００は自ノード用領域３２０および他ノード用領域３１０を含む。同様に、領域５００は、自ノード用領域５２０および他ノード用領域５１０を含む。これらのバッテリバックアップ可能な各領域は、電源断等の障害時にも、障害検知部７１０に制御されるスイッチ８００を介してバッテリ７００に接続されることによって、バッテリ７００から電源（電力・電気）が供給され、データ（情報）を保持できる。すなわち、バッテリバックアップ可能な各領域は、電源断等の障害時にもデータ（情報）を保持できるので、不揮発性メモリとして動作する。バッテリバックアップ可能な各領域の具体例として、バッテリバックアップ式のＮＶＲＡＭ（Non-Volatile Random Access Memory）等がある。なお、障害検知部７１０への入力の図示を省略する。【００１５】
スイッチ８００は、ＳＷ１、ＳＷ２、ＳＷ３、およびＳＷ４を含む。ＳＷ１がＯＮ（導通）のとき、自ノード用領域３２０がバッテリバックアップにより不揮発性メモリとして動作する。ＳＷ２がＯＮのとき、他ノード用領域３１０がバッテリバックアップにより不揮発性メモリとして動作する。ＳＷ３がＯＮのとき、自ノード用領域５２０がバッテリバックアップにより不揮発性メモリとして動作する。ＳＷ４がＯＮのとき、他ノード用領域５２０がバッテリバックアップにより不揮発性メモリとして動作する。【００１６】
図２は、スイッチ８００の状態（ＳＷ１、ＳＷ２、ＳＷ３、およびＳＷ４の組み合わせによる状態）を示す表である。図３は、スイッチ８００の状態遷移図である。スイッチ８００は状態１〜５を有する。ＳＷ１、ＳＷ２、ＳＷ３、およびＳＷ４の組み合わせにより、状態１〜５以外の他の状態もあり得るが、障害検知部７１０により他の状態に遷移しないように制御されても良い。図２において「−」は、ＳＷがＯＮおよびＯＦＦのいずれでもよいことを表す。バッテリ７００の電力消費を考慮するとＯＦＦが望ましい。【００１７】
状態１は、ノードＡ２００およびノードＢ４００が正常のときのスイッチ８００の状態である。状態２は、ノードＢ４００の障害（電源断など）の検知に応答して、状態１から遷移するスイッチ８００の状態であり、ＳＷ１およびＳＷ２がＯＮまたはＯＦＦである。スイッチ８００の状態は、状態２におけるノードＡ２００の障害（電源断など）の検知に応答して、状態３に遷移する。状態３は、ＳＷ１およびＳＷ２がＯＮである。状態４は、ノードＡ２００の障害（電源断など）の検知に応答して、状態１から遷移するスイッチ８００の状態であり、ＳＷ３およびＳＷ４がＯＮまたはＯＦＦである。スイッチ８００の状態は、状態４におけるノードＢ４００の障害（電源断など）の検知に応答して、状態５に遷移する。状態５は、ＳＷ３およびＳＷ４がＯＮである。状態３と状態５は共に、ノードＡ２００およびノードＢ４００が障害の状態であるが、障害検知部７１０は、いずれのノードの障害を先に検知したかに依存して異なる状態として制御する。【００１８】
ノードＡ２００およびノードＢ４００の電源は、一般に異なる系統が用意されるので一方のノードの障害の一つである電源断などの障害が検知されることが多いが、異なる系統であっても同じ原因（たとえば、広域またはストレージシステムが設置されているセンタ全体の電源の異常）でノードＡ２００およびノードＢ４００の電源の障害が検知されることもある。このような障害の発生に備えて、図２における「−」は、ＳＷはバッテリ７００の電力消費を考慮するとＯＦＦが望ましいと前述したが、他の観点ではＯＮにしておくことが望ましい。なぜならば、電源の障害の検知からバッテリバックアップが完了するまでの時間に、バッテリバックアップ可能な領域３００または領域５００に格納されているデータが消失する可能性があるからである。【００１９】
ただし、ノードＡ２００およびノードＢ４００の電源が正常なとき（状態１）には、バッテリバックアップ可能な領域３００および領域５００の他ノード用領域３１０、５１０をバッテリバックアップしておけばよい。【００２０】
以降では、他ノード用領域３１０、５１０をバッテリバックアップしておくことを前提に、バッテリバックアップにより不揮発性メモリとして動作する領域３００および領域５００を、不揮発性メモリと呼んで説明する。【００２１】
図４は、ストレージシステムの概略構成図である。ストレージシステムは、前述したようにノードＡ（ファイルストレージ装置Ａ）２００およびノードＢ（ファイルストレージ装置Ｂ）４００を含み、さらにストレージ装置（一般に、ブロックストレージ装置）６００を含んでクラスタ１００を構成する。【００２２】
ノードＡ２００は、不揮発性メモリ３２０上に、ストレージサービス処理部Ａ２１０および複製管理処理部Ａ２２０の処理部を有する。同様に、ノードＢ４００は、不揮発性メモリ５２０上に、ストレージサービス処理部Ｂ４１０および複製管理処理部Ｂ４２０の処理部を有する。以下、ノードＡ２００の処理部を代表させて説明する。【００２３】
ノードＡ２００のストレージサービス処理部Ａ２１０は、ホスト１１０からの更新データＡ１０を含むデータ更新要求を受け付ける。ここで、「更新」は、新規に「格納」する場合を含む。ストレージサービス処理部Ａ２１０は、揮発性メモリ２９０上の自ノード（ノードＡ）データ保存領域２９１に更新データＡ１０を格納する。複製管理処理部Ａ２２０は、ノードＡ−Ｂ間の通信路８００を介して、複製管理処理部Ｂ４２０を制御して、ノードＢ４００の不揮発性メモリ５１０上の他ノード（ノードＡ）データ保存領域５０１に更新データＡ１０を複製し、他ノードオペレーション管理テーブル４６０に、受け付けたデータ更新要求に含まれる、更新データＡ１０に関するオペレーション（ＷＲＩＴＥ）を登録する。複製管理処理部Ａ２２０は、自ノードオペレーション管理テーブル２４０に更新データＡ１０に関するオペレーション（ＷＲＩＴＥ）を登録し、ホスト１１０からのデータ更新要求に対する応答をホスト１１０へ送信して、処理を完了する。【００２４】
複製管理処理部Ａ２２０は、自ノードオペレーション管理テーブル２４０を参照し、ノードＢ４００の不揮発性メモリ５１０の他ノードデータ保存領域５０１に格納しているデータの、データ量が予め定めた所定量を超えた場合、格納時刻から予め定めた所定時間が経過した場合、または、ホスト１１０から強制書き出し要求を受けた場合、揮発性メモリ２９０に記憶される自ノード静止点管理テーブル２３０の未書込最古の静止点番号（後述）に対応する自ノードオペレーション管理テーブル２４０のオペレーションを実行し、ブロックストレージ装置６００のボリュームＡ６１０へデータを書き出す。これにより、揮発性メモリ２９０上の自ノードデータ保存領域２９１に格納したデータ（本例では更新データＡ１０）は、ボリュームＡ６１０に書き出される。複製管理処理部Ａ２２０は、書き出しが完了すると、自ノード静止点管理テーブル２３０の未書込最古の静止点番号を更新し、複製管理処理部Ｂ４２０を制御して、他ノード４００の不揮発性メモリ５１０に記憶される他ノード静止点管理テーブル４５０の未書込最古の静止点番号を更新する。【００２５】
１ノードに障害が発生すると，障害発生ノードの処理部を他方のノードで実行し，サービスを引き継ぐ。これをフェイルオーバーという。例えば、ノードＡ２００のみで障害が発生すると、ノードＡ２００で稼働していたストレージサービス処理部Ａ２１０および複製管理処理部Ａ２２０は、ノードＢ４００の不揮発性メモリ５２０上で実行する。その際、不揮発性メモリ５１０上の他ノード静止点管理テーブル４５０、他ノードオペレーション管理テーブル４６０及び他ノード（ノードＡ）データ保存領域５０１を参照し，サービスを引き継ぐ。【００２６】
揮発性メモリ２９０上の自ノードデータ保存領域２９１のデータをボリュームＡ６１０に書き出す前に、電源断などの全ノード障害が発生した場合には、ノードＡ２００の複製管理処理部Ａ２２０は、不揮発性メモリ３１０上の他ノードデータ保存領域３０１に格納しているデータをボリューム６３０の不揮発性メモリデータ退避領域６３１へ、データ保護処理を実行した上で、書き出す。データ保護処理は、同一データのミラーリングやＰａｒｉｔｙ付書き出しなどである。不揮発性メモリ退避領域６３１は、各ノードがアクセスできれば、どこに存在しても良い（図４では、ストレージ装置内のボリューム６３０にある）。【００２７】
ノードＡ２００のストレージサービス処理部Ａ２１０は、ホスト１１０からのデータ参照要求を受け付けると、揮発性メモリ２０９上の自ノード（ノードＡ）データ保存領域２９１に参照データが存在すれば、そのデータをホスト１１０へ送信し、参照データが存在しなければボリュームＡ６１０からデータを取得（ＲＥＡＤ）して、そのデータをホスト１１０へ送信して、処理を完了する。【００２８】
本実施例により、データの保護を実行しながら、ホスト１１０からのデータ更新要求に対する応答性能を向上できる。更に、揮発性メモリ２９０、４９０と不揮発性メモリ３１０、５１０、不揮発性メモリ退避領域６３１を用いることにより、不揮発性メモリ３００、５００の容量を削減することができる。換言すると、揮発性メモリを用いない場合に比べて、揮発性メモリ２９０、４９０に相当する容量を、不揮発性メモリ３１０、５１０の容量として確保しなくてよい。これは、２ノードクラスタによるＨＡ構成のストレージシステムにおいて、各ノード２００、４００は、２ノード分（自他ノードのデータ保存領域の容量）の不揮発性メモリを確保しなくても良く、互いに他ノードのデータ保存領域３０１、５０１の容量の不揮発性メモリを確保すればよいことを示している。したがって、バッテリ７００の容量を削減でき、バッテリ７００のコストを低減可能である。【００２９】
図５は、ストレージシステムのハードウェア構成図である。クラスタ１００は、ホスト１１０がネットワーク１３１を介して接続したノードＡ２００およびノードＢ４００で構成される、２ノードのストレージシステムである。また、各ノードは、専用ネットワーク１６１を介して管理端末１６０に接続される。ネットワーク１３１および１６１は、例えばＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、公衆回線または専用回線などであってもよい。クラスタ内スイッチ１５０は、ホスト１１０との間で転送するデータをノードＡ２００およびノードＢ４００に振り分ける。【００３０】
ノードＡ２００は、ホスト１１０からデータ更新要求を受け取り、更新要求されたデータをブロックストレージ装置６００に書き出すストレージ制御装置である。ＣＰＵ１２１０は、不揮発性メモリ３２０に格納された処理部の処理を実行する。【００３１】
監視部１２３０は、自ノード（ノードＡ２００）および他ノード（ノードＢ４００）の状態（稼働中、停止中）を検知し、ノード状態管理テーブル２８０を書き換え、バッテリバックアップが必要な場合に監視結果を障害検知部７１０に通知すると共に、ノードの状態に対応する各処理部の実行を管理する。ノードＡ２００の監視部１２３０とノードＢ４００の監視部１４３０は、ハートビート検知などを用いて、互いのノード状態を検知し、各々が有するノード状態管理テーブル２８０、４８０の更新や、障害検出時には複製管理処理部２２０、４２０の実行を制御する。監視部１２３０から通知を受けた障害検知部７１０は、前述のように、スイッチ８００を制御する。【００３２】
揮発性メモリ２９０に格納するテーブルは、自ノード静止点管理テーブル２３０、自ノードオペレーション管理テーブル２４０、データ退避場所管理テーブル２７０、およびノード状態管理テーブル２８０である。不揮発性メモリ３００は、図１に示すように、自ノード用領域３２０および他ノード用領域３１０を含む。これらの領域も不揮発性メモリと呼ぶ。不揮発性メモリ３１０に格納するテーブルは、他ノード静止点管理テーブル２５０および他ノードオペレーション管理テーブル２６０である。ここでは、データ退避場所管理テーブル２７０やノード状態管理テーブル２８０は、揮発性メモリ２９０上にあるものとして、図示、説明するが、不揮発性メモリ３２０やボリューム６１０、６２０、６３０のいずれかにあってもよい。さらに、揮発性メモリ２９０や不揮発性メモリ３００は、各処理部の実行に必要な領域（例えば、ワークエリア）を有する。【００３３】
ノードＢ４００は、自ノードがノードＢとなり、他ノードがノードＡとなる点を除いて、ノードＡと同様であるので、説明を省略する。【００３４】
管理端末１６０は、ノードＡ２００やノードＢ４００の管理情報を必要に応じて取得し、ノードＡ２００やノードＢ４００を操作するための、入出力装置を有する端末である。【００３５】
ブロックストレージ装置６００は、ノードＡ２００、ノードＢ４００、ホスト１１０や管理端末１６０からの制御に従いデータを格納する。このため、ブロックストレージ装置６００は、データを格納するためのボリュームＡ６１０、ボリュームＢ６２０を有する。また、ブロックストレージ装置６００は、障害時に不揮発性メモリ３００、５００のテーブルを含む各種データを退避するためのボリューム６３０を有し、ボリューム６３０は、不揮発性メモリデータ退避領域６３１を有する。【００３６】
図６Ａは、自ノード静止点管理テーブル２３０、４３０の例である。自ノード静止点管理テーブル２３０を代表させて説明する。自ノード静止点管理テーブル２３０は、自ノードの最新の静止点番号２３１と未書込最古の静止点番号２３２を格納する。【００３７】
最新の静止点番号２３１は、オペレーション世代（ボリュームＡ６１０のデータを更新する纏まりを世代と呼ぶ。）を管理するための番号である。複製管理処理部Ａ２２０が、自ノードオペレーション管理テーブル２４０に、ホスト１１０から受けたデータ更新のオペレーションを登録する際に、オペレーションに紐づけて最新の静止点番号２３１を付与する。したがって、自ノードが受け付けたオペレーション数が所定数を超えた場合、またはオペレーションを登録してから所定時間が経過した場合、複製管理処理部２２０が最新静止点番号２３１を加算（更新）する。【００３８】
未書込最古の静止点番号２３２は、オペレーション（ボリュームＡ６１０のデータの更新）を終えていない静止点の最も古い番号を示す。一つの静止点番号（世代）に複数のオペレーション（前述の世代としての纏まり）がある場合は、同じ静止点番号の全てのオペレーションの実行を終了した段階で、複製管理処理部Ａ２２０が未書込最古の静止点番号２３２を更新する。【００３９】
図６Ｂは、自ノードオペレーション管理テーブル２４０、４４０の例である。自ノードオペレーション管理テーブル２４０を代表させて説明する。自ノードオペレーション管理テーブル２４０は、自ノードへのホスト１１０からのオペレーション２４２とオペレーションに対応する静止点番号２４１を格納する。静止点番号２４１は、各オペレーション２４２を受け付けた時点の最新の静止点番号２３１である。オペレーション２４２は、自ノードが受け付けたホスト１１０からのオペレーション（の種別）である。【００４０】
たとえば、図６Ａの自ノード静止点管理テーブル２３０を参照すると、最新の静止点番号２３１が「３」、未書込最古の静止点番号２３３が「２」であり、自ノードオペレーション管理テーブル２４０に登録されているエントリの中では、静止点番号１に対応するオペレーション（Write(DataA)）はすでに処理（ここでは、ブロックストレージ装置６００のボリューム６１０への書き込み）を終えたものである。静止点番号「２」に対応するオペレーション（Write(DataC)及びWrite(DataE)）は、まだ処理を終えていない最古のオペレーションであり、次に処理されるオペレーションの候補である。静止点番号「３」に対応するオペレーションは、最新のオペレーションである。【００４１】
図６Ｃは、他ノード静止点管理テーブル２５０、４５０の例である。他ノード静止点管理テーブル２５０を代表させて説明する。他ノード静止点管理テーブル２５０は、他ノードの最新の静止点番号２５１と未書込最古の静止点番号２５２を格納する。最新の静止点番号２５１と未書込最古の静止点番号２５２は、他ノードに関する点を除いて、自ノード静止点管理テーブル２３０の最新の静止点番号２３１と未書込最古の静止点番号２３２と同様であるので、説明を省略する。【００４２】
図６Ｄは、他ノードオペレーション管理テーブル２６０、４６０の例である。他ノードオペレーション管理テーブル２６０を代表させて説明する。他ノードオペレーション管理テーブル２６０は、他ノードが受け付けた各オペレーション２６２と各オペレーションに対応する静止点番号２６１を格納する。他ノードオペレーション管理テーブル２６０は、他ノードに関する点を除いて、自ノードオペレーション管理テーブル２４０と同様であるので、説明を省略する。なお、他ノードオペレーション管理テーブル２６０は、他ノード（たとえば、ノードＢ）が管理する自ノードオペレーション管理テーブル４４０の内容と同期（データ同期）している。【００４３】
図７Ａは、データ退避場所管理テーブル２７０、４７０の例である。データ退避場所管理テーブル２７０を代表させて説明する。データ退避場所管理テーブル２７０は、他ノードの障害時に、さらに自ノードの障害発生に備えて、ノードＡの複製管理処理部Ａ２２０によって自ノードＡの不揮発性メモリ３１０に格納されているデータをボリューム６３０の不揮発性メモリデータ退避領域６３１に退避する際の、退避先を格納する。データ退避場所管理テーブル２７０は、管理端末１６０により設定される。ノード名２７１は、各ノードを区別するための識別子である。退避データ格納ボリューム２７２は、各ノードの不揮発性メモリ３１０、５１０に格納されているデータを退避するボリュームである。退避データ格納パス２７３は、各ノードの不揮発性メモリ３１０、５１０に格納されているデータをボリュームへ退避するためのパスである。【００４４】
図７Ｂは、ノード状態管理テーブル２８０、４８０の例である。ノード状態管理テーブル２８０を代表させて説明する。ノード状態管理テーブル２８０は、監視部１２３０が自ノードおよび他ノードの状態を記録するためのテーブルである。ノード名２８１は、各ノードを区別するための識別子である。状態２８２は、各ノードの現在の状態（稼働中または停止中）である。引継中ノード２８３は、停止中のノードがある場合（図中：ノードＣ停止中）、停止中のノードが稼働中に実行していたオペレーションを引き継いでいるノード（図中：ノードＡ）である。直接書き込みモード２８４は、不揮発性メモリ５１０、３１０への格納を介さず、揮発性メモリ２９０、４９０からブロックストレージ装置６００へ直接書き込む場合にオン（図中はオフ）が設定される。【００４５】
障害復帰時モード２８５は、障害発生に伴い不揮発性メモリ退避領域６３１に各ノードの不揮発性メモリのデータを退避した後、障害から復帰した場合の復帰モードである。復帰モードとして、通常復帰モード（図１３）、他ノード用の退避領域マウント復帰モード（図１４）およびフェイルオーバー復帰モード（図１５）について後述するが、復帰モードはこの限りではない。管理端末１６０は、直接書き込みモード２８４や障害復帰時モード２８５は、管理端末１６０から設定される。【００４６】
図８は、各ノードの揮発性メモリおよび不揮発性メモリのデータの持ち方の例である。ノードＡ２００は、ノードＡ２００の揮発性メモリ２９０のデータ（図では、更新データＡ１、Ａ２、・・・）をノードＢ４００の不揮発性メモリ５１０（図では、他ノード（ノードＡ）データ保存領域５０１）に複製し、ノードＡ２００の不揮発性メモリ３００には複製しない。ノードＢ４００も、ノードＡ２００と同様に、揮発性メモリ４９０のデータ（図では、更新データＢ１、Ｂ２、・・・）をノードＡ２００の不揮発性メモリ３１０（図では、他ノード（ノードＢ）データ保存領域３０１）に複製し、ノードＢ４００の不揮発性メモリ５００には複製しない。【００４７】
図９は、ノードＢ４００が障害により停止した時のクラスタ１００（稼働中部分）の例である。ノードＢ４００の障害に伴い、スイッチ８００のＳＷ１及びＳＷ２がＯＮし、ＳＷ３及びＳＷ４がＯＦＦしている。【００４８】
ノード状態管理テーブル２８０（図示略）の直接書き込みモード２８４がオンのときは、自ノードデータ保存領域２９１に格納した更新データを、不揮発性メモリ３００の自ノード領域３２０に格納せずに、ボリューム６１０へ書き出す。【００４９】
図９は、他ノード（ノードＢ）に障害が発生し、１ノード（ノードＡ）で処理する場合の構成例である。直接書き込みモード２８４がオフの場合を説明する。複製管理処理部Ａ２２０は、不揮発性メモリ３００の自ノード用領域３２０上に自ノードデータ保存領域３０２を確保する。複製管理処理部Ａ２２０は、自ノードデータ保存領域２９１に格納している自ノードデータの複製先を、ノードＢ４００の不揮発性メモリ５００の他ノード用領域５１０から、ノードＡ２００の不揮発性メモリ３２０に確保した自ノードデータ保存領域３０２に変更する。【００５０】
さらに、ノードＡ２００の複製管理処理部Ａ２２０は、ノードＡ２００の揮発性メモリ２９０上に他ノードデータ保存領域２９２を作成し、ノードＡ２００の不揮発性メモリ３００上にある他ノードデータ保存領域３０１のデータをノードＡ２００の揮発性メモリ２９０の他ノードデータ保存領域２９２に複製する。これにより、バッテリ７００の容量を最大利用して、性能向上を図る。【００５１】
図１０は、他ノード（ノードＢ４００）の障害を検知後の、自ノード（ノードＡ２００）の複製管理処理部Ａ２２０の処理フローチャートである。【００５２】
複製管理処理部Ａ２２０は、自ノード（ノードＡ２００）の不揮発性メモリ３００の自ノード用領域３２０上に自ノードデータ保存領域３０２を確保する（Ｓ１０）。複製管理処理部Ａ２２０は、揮発性メモリ２９０上の自ノードデータ保存領域２９１の更新データを、確保した自ノードデータ保存領域３０２に複製する（Ｓ１１）。【００５３】
複製管理処理部２２０は、他ノードデータ保存領域２９２を自ノード（ノードＡ２００）の揮発性メモリ２９０上に確保する（Ｓ１２）。複製管理処理部２２０は、確保した他ノードデータ保存領域２９２に、自ノード（ノードＡ２００）の不揮発性メモリ３００の他ノード用領域３１０上の他ノードデータ保存領域３０１のデータを複製する（Ｓ１３）。【００５４】
複製管理処理部Ａ２２０は、ストレージサービス処理部Ａ２１０を実行させ、揮発性メモリ２９０上の自ノードデータ保存領域２９１および他ノードデータ保存領域２９２の更新データをボリューム６１０および６２０に各々書き出す（Ｓ１４）。【００５５】
また、Ｓ１１、Ｓ１３において、自ノード（ノードＡ２００）は、自ノード（ノードＡ２００）の更新データおよび他ノード（ノードＢ４００）が処理していた更新データを管理するためのテーブル（自ノード（他ノード（ノードＢ４００））静止点管理テーブル４３０、自ノード（ノードＢ）オペレーション管理テーブル４４０、他ノード（自ノード（ノードＡ２００））静止点管理テーブル４５０、他ノード（自ノード（ノードＡ２００））オペレーション管理テーブル４６０）を複製し、他ノード（ノードＢ４００）の処理を引き継ぐ。【００５６】
図１１は、自ノードがホスト１１０からデータの更新要求を受け取り、ホスト１１０に更新要求の処理完了を通知するまでの、ストレージサービス処理部Ａ２１０及び複製管理処理部Ａ２２０の処理フローチャートの例である。ここでは、自ノード（ノードＡ２００）が更新要求を受け取った場合を説明する。【００５７】
ストレージサービス処理部Ａ２１０は、受信した更新データを揮発性メモリ２９０上の自ノードデータ保存領域２９１に保存する（Ｓ２０）。ストレージサービス処理部Ａ２１０は複製管理処理部Ａ２２０を実行させる。複製管理処理部Ａ２２０は、ノード状態管理テーブル２８０のノード名２８１と状態２８２を参照し、他ノード（ノードＢ４００）が稼働しているかを確認する（Ｓ２１）。【００５８】
他ノード（ノードＢ４００）の状態が稼働中であれば、複製管理処理部Ａ２２０は、他ノード（ノードＢ４００）の不揮発性メモリ５００上の他ノードデータ保存領域５０１に更新データを複製する（Ｓ２２）。複製管理処理部Ａ２２０による複製終了に応じて、ストレージサービス処理部Ａ２１０はホスト１１０に処理完了を通知する（Ｓ２３）。【００５９】
他ノード（ノードＢ４００）の状態が停止中であれば、複製管理処理部Ａ２２０は、ストレージサービス処理部Ａ２１０を実行する。ストレージサービス処理部Ａ２１０は、ノード状態管理テーブル２８０の直接書き込みモード２８４を参照し、直接書き込みモードであるかを確認する（Ｓ２４）。【００６０】
ストレージサービス処理部Ａ２１０は、直接書き込みモードが無効（オフ）の場合は、自ノード（ノードＡ２００）の不揮発性メモリ３００の自ノード用領域３２０上の自ノードデータ保存領域３０２に更新データを複製し（Ｓ２５）、ホスト１１０に処理完了を通知する（Ｓ２３）。【００６１】
ストレージサービス処理部Ａ２１０は、直接書き込みモードが有効（オン）の場合は、自ノード（ノードＡ２００）の揮発性メモリ２９０上の自ノードデータ保存領域２９１にある更新データ（オペレーション）をボリューム６１０へ書き出し（Ｓ２６）、ホスト１１０に処理完了を通知する（Ｓ２３）。【００６２】
図１２Ａは、ストレージサービス処理部Ａ２１０によるホスト１１０への処理完了の通知に至る処理とは、非同期に揮発性メモリ上の更新データをボリューム６１０に書き出す、複製管理処理部Ａ２２０の処理フローチャートである。【００６３】
複製管理処理部Ａ２２０は、自ノードオペレーション管理テーブル２４０を参照し、オペレーションの総データ量が予め定めた所定量に達した場合、更新データを格納してから所定時間が経過した場合またはホスト１１０および管理端末１６０から強制書き出し要求が来た場合には、自ノード静止点管理テーブル２３０の未書込最古の静止点番号２３２を参照し、自ノードオペレーション管理テーブル２４０の静止点番号２４１と未書込最古の静止点番号２３２とが一致するオペレーションを実行し、ボリューム６１０に更新データを書き出す（Ｓ３１）。ボリューム６１０に書き出した更新データに対応する、他ノード（ノードＢ４００）の不揮発性メモリ５１０の他ノードデータ保存領域５０１に格納されている更新データ（複製データ）を削除しても良い。【００６４】
複製管理処理部Ａ２２０は、ノードＡ２００の自ノード静止点管理テーブル２３０の未書込最古の静止点番号２３２を参照し、自ノードオペレーション管理テーブル２４０の未書込最古の静止点番号２４１の全てのオペレーションを実行したか確認する（Ｓ３２）。未書込最古の静止点番号２３２の全てのオペレーションを処理していなければＳ３１に戻る。【００６５】
未書込最古の静止点番号２３２の全てのオペレーションを処理していれば、複製管理処理部Ａ２２０は、ノードＡ２００が管理する自ノード静止点管理テーブル２３０の未書込番号２３２に１を加算し（Ｓ３３）、ノードＢ４００が管理する他ノード静止点管理テーブル４５０の未書込最古の静止点番号に１を加算する（Ｓ３４）。【００６６】
図１２Ｂは、ノードの停止により揮発性メモリ上の更新データが消失するので、不揮発性メモリ上の更新データを冗長化するために、ボリュームへ退避する、冗長化処理部（図４では図示略）の処理フローチャートの例である。更新データの冗長化は、不揮発性メモリはバッテリバックアップされているので、バッテリ容量の限界を超える（放電してしまう）時間の電源断が発生する可能性があるためである。ノードＡ２００の冗長化処理部は、データ退避場所管理テーブル２７０を参照し、不揮発性メモリ３００上の更新データをボリューム６３０の不揮発性メモリデータ退避領域６３１に退避する（Ｓ４０）。【００６７】
図１３〜１５は、電源喪失等の障害により全ノードが停止し、各ノードの不揮発性メモリ上のデータがボリューム６３０に退避された後の復帰処理のフローチャートである。自ノードをノードＡ２００、他ノードをノードＢ４００として説明する。【００６８】
図１３は、復帰モードが通常復帰モードの場合の複製管理処理部２２０Ａの処理フローチャートの例である。複製管理処理部２２０Ａは、自ノード（ノードＡ２００）が退避した更新（退避）データを自ノード（ノードＡ２００）の不揮発性メモリ３００上に復元し、他ノード（ノードＢ４００）の不揮発性メモリ５００上にある更新（退避）データを自ノード（ノードＡ２００）の揮発性メモリ２９０上に複製した後にオペレーションを実行する。【００６９】
複製管理処理部Ａ２２０は、ノードＡ２００がボリューム６３０上の不揮発性メモリ退避領域６３１に退避したデータ（ノードＢ４００の更新データ）を、ノードＡ２００の不揮発性メモリ３００の他ノードデータ保存領域３０１に復元する。このとき、複製管理処理部Ｂ４２０が、ノードＢ４００でも同様に、退避データ（ノードＡ２００の更新データ）を不揮発性メモリ５００の他ノードデータ保存領域５０１上に復元する（Ｓ５０）。【００７０】
複製管理処理部Ａ２２０は、ノードＢ４００の不揮発性メモリ５００上にある他ノードデータ保存領域５０１からデータ（ノードＡ２００の更新データ）を読み出し、ノードＡ２００の揮発性メモリ２９０の自ノードデータ保存領域２９１に複製する（Ｓ５１）。複製管理処理部Ａ２２０は、揮発性メモリ２９０上の自ノードデータ保存領域２９１の更新（退避）データのオペレーションを実行し、ボリュームＡ６１０に書き出す（Ｓ５２）。【００７１】
複製管理処理部Ａ２２０は、ノードＡ２００にある自ノード静止点管理テーブル２３０の未書込最古の静止点番号２３２と、ノードＢ４００にある他ノード静止点管理テーブル４５０の未書込最古の静止点番号を更新する（Ｓ５３）。複製管理処理部Ａ２２０は、ボリュームＡ６１０に書き出したデータに対応するデータであって、ボリューム６３０の不揮発性メモリデータ退避領域６３１に退避したデータ（冗長化データ）を削除する（Ｓ５４）。【００７２】
複製管理処理部Ａ２２０は、全ての更新データを処理したかを確認する（Ｓ５５）。全ての更新（退避）データの処理を完了していれば、複製管理処理部Ａ２２０は復帰処理を終了する。全ての更新データを処理していなければ、Ｓ５２に戻る。【００７３】
図１４は、復帰モードが他ノード用の退避領域マウント復帰モードの場合の複製管理処理部２２０Ａの処理フローチャートの例である。複製管理処理部２２０Ａは、他ノード（ノードＢ４００）が退避した更新（退避）データを自ノード（ノードＡ２００）の不揮発性メモリ３００上に復元し、自ノード（ノードＡ２００）の不揮発性メモリ３００上にある更新（退避）データを自ノード（ノードＡ２００）の揮発性メモリ２９０上に複製した後にオペレーションを実行する。【００７４】
ノードＡ２００の複製管理処理部Ａ２２０は、ノードＢ４００がボリューム６３０上の不揮発性メモリデータ退避領域６３１に退避したデータ（ノードＡ２００の更新データ）を、ノードＡ２００の不揮発性メモリ３００の他ノードデータ保存領域３０１に復元する。このとき、ノードＢ４００でも同様に退避データ（ノードＢ４００の更新データ）を不揮発性メモリ５００上に復元する（Ｓ６０）。複製管理処理部Ａ２２０は、ノードＡ２００の不揮発性メモリ３００上にある他ノードデータ保存領域３０１から、データ（ノードＡ２００の更新データ）を読み出し、ノードＡ２００の揮発性メモリ２９０の自ノードデータ保存領域２９１に複製する（Ｓ６１）。以降のＳ６２〜Ｓ６５の処理は、図１３の複製管理処理部Ａ２２０のＳ５２〜Ｓ５５の処理と同様であるので、説明を省略する。【００７５】
図１５は、復帰モードがフェイルオーバー復帰モードの場合の複製管理処理部２２０Ａの処理フローチャートの例である。複製管理処理部２２０Ａは、自ノード（ノードＡ２００）が退避した更新（退避）データを自ノード（ノードＡ２００）の不揮発性メモリ３００に復元した後、他ノードへフェイルオーバーし、オペレーションを実行する。【００７６】
ノードＡ２００の複製管理処理部Ａ２２０は、ノードＡ２００がボリューム６３０上の不揮発性メモリデータ退避領域６３１に退避したデータ（ノードＢ４００の更新データ）を、ノードＡ２００の不揮発性メモリ３００の他ノードデータ保存領域３０１に復元する。このとき、ノードＢ４００でも同様に退避データ（ノードＡ２００の更新データ）を不揮発性メモリ５００上の他ノードデータ保存領域５０１に復元する（Ｓ７０）。【００７７】
自ノード（ノードＡ２００）から他ノード（ノードＢ４００）へフェイルオーバーする（Ｓ７１）。また、他ノード（ノードＢ４００）から、自ノード（ノードＡ２００）へフェイルオーバーする。【００７８】
複製管理処理部Ａ２２０は、ノードＡ２００の不揮発性メモリ３００上にある他ノードデータ保存領域３０１から退避データ（ノードＢ４００の更新データ）を読み出し、ノードＡ２００の揮発性メモリ２９０の自ノードデータ保存領域２９１に複製する（Ｓ７２）。【００７９】
複製管理処理部Ａ２２０は、揮発性メモリ２９０上の自ノードデータ保存領域２９１の退避データ（ノードＢ４００の更新データ）のオペレーションを実行し、ボリュームＢ６２０に書き出す（Ｓ７３）。複製管理処理部Ａ２２０は、ノードＢ４００にある自ノード静止点管理テーブル４３０の未書込最古の静止点番号と、ノードＡ２００にある他ノード静止点管理テーブル２５０の未書込最古の静止点番号２５２を更新する（Ｓ７４）。【００８０】
ボリュームＢ６２０に書き出したデータに対応するデータであって、ボリューム６３０の不揮発性メモリデータ退避領域６３１に退避したデータを削除する（Ｓ７５）。このとき、ノードＢ４００でも同様の処理が行われ、ボリュームＡ６２０に退避データ（ノードＡ４００の更新データ）が書きだされて、ボリューム６３０の不揮発性メモリデータ退避領域６３１の退避データを削除する。【００８１】
全ての更新（退避）データを削除したか確認する（Ｓ７７）。全ての退避データを処理していなければ、Ｓ７３に戻る。全ての更新（退避）データの処理を完了していれば、自ノード（ノードＡ２００）から他ノード（ノードＢ４００）へフェイルバックし（Ｓ７８）、復帰処理を終了する。また、他ノード（ノードＢ４００）から自ノード（ノードＡ２００）へフェイルバックも行われる。
【実施例２】
【００８２】
図１６は、クラスタが３ノード以上のストレージシステムの概略構成図である。基本的な動作は、実施例１と同様であるので、実施例１との相違点を中心に説明する。【００８３】
クラスタ構成のストレージシステムは、ノードＡ２０４、ノードＢ４０４、ノードＡおよびノードＢ以外のノード４０５により構成され、各ノードの構成は同様である。【００８４】
図１７及び図１８は、各ノードが不揮発性メモリ上に格納する他ノードのデータの格納方法について示した図である。図１７は、自ノード以外の全てのノードの揮発性メモリ上のデータを、自ノードの不揮発性メモリ上に複製して格納する場合を示している。図１８は、各ノードが一つのノードの揮発性メモリのデータを複製して格納するリング状の格納方法を示している。【００８５】
図１９は、一部のノードが停止した場合の複製管理処理部の処理フローチャートの例である。実施例１の２ノード構成のストレージシステムでは、他ノードの停止に応答して、自ノードが処理を継続する必要があった。本実施例の構成のストレージシステムでは、全ての他ノードが停止した場合にのみ自ノードが単独で処理を継続する必要がある。一部の他ノードが停止した場合が、実施例１と本実施例とで相違する。自ノードをノードＡ２０４として説明する。【００８６】
ノードＡ２０４の監視部１２３１は、他ノードの障害を検知する。他ノードの障害の検知に応答して、ノードＡ２０４の複製管理処理部は、ノード状態管理テーブル２８０を参照し、稼働中の他ノードがあるか判定する（Ｓ１５）。稼働中の他ノードがなければ、複製管理処理部は、実施例１の他ノード障害発生検知後の自ノード処理（図１０のＳ１０〜Ｓ１４）を実行する。稼働中の他ノードが存在する場合は、稼働中のノードが停止中のノードの処理を引き継ぐ（Ｓ１６）。引き継ぎ方は、実施例１の他ノード障害発生検知後の自ノード処理（図１０のＳ１０〜Ｓ１４）と同様である。
【実施例３】
【００８７】
図２０は、ファイルサーバとブロックストレージとの多段構成のノードによるストレージシステムの概略構成図である。ここでは、実施例１と同様に２ノード構成のストレージシステムを説明するが、実施例２のように、３ノード以上のストレージシステムであっても同様に動作する。基本的な動作は、実施例１や実施例２と同様であるので、これらとの相違点を中心に説明する。【００８８】
図２０は、実施例１におけるノードがファイルサーバとブロックストレージを接続した構成のストレージシステムである。ファイルサーバＡ２０１とファイルサーバＢ４０１の組み合わせは、実施例１のノードＡ２００とノードＢ４００の組み合わせと同様に動作する。また、ブロックストレージＡ２０２とブロックストレージＢ４０２は、ファイルサーバからのデータの更新要求を、揮発性メモリに保存後、他ノードの不揮発性メモリ上の他ノードデータ保存領域へ保存する。更新要求に含まれる更新データは、実施例１と同様に非同期にストレージ装置に書き出される。以上のように、ブロックストレージにおいても、ファイルサーバと同様に、動作する。【００８９】
図２１は、ストレージシステムのハードウェア構成図である。実施例１のハードウェア構成との差異を中心に説明する。ファイルストレージＡ２０１は、ホスト１１０からデータの更新要求を受け取り、ブロックストレージＡ２０２またはブロックストレージＢ４０２に書き出す計算機である。ＣＰＵ２０１０は、揮発性メモリ２０１３または不揮発性メモリ２０１４に格納された処理部を実行する。Ｉ／Ｆ２０１１は、ホスト１１０、クラスタ内スイッチ１５０、ファイルサーバＢ４０１、ブロックストレージＡ２０２、ブロックストレージＢ４０２やストレージ装置６００などの各計算機の間でデータを送受信する。監視部２０１２は、ファイルサーバＡ２０１およびファイルサーバＢ４０２、ブロックストレージＡ２０２やブロックストレージＢ４０２の状態（稼働中、停止中）を検知し、検知した状態をノード状態管理テーブル２８０に格納する。ファイルサーバＡ２０２の監視部２０１２とファイルサーバＢ４０１の監視部４０１２は、互いの状態を管理し、各々が有するノード状態管理テーブル２８０、４８０を用いて管理する。揮発性メモリ２０１３または不揮発性メモリ２０１４は、ストレージサービスを提供するための処理部やテーブル類を格納する。格納する処理部やテーブル類は、実施例と同じである。【００９０】
ファイルサーバＢ４０１は、ファイルサーバＡ２０１と対の構成となる。ブロックストレージＡ２０２とブロックストレージＢ４０２も、ファイルサーバＡ２０１とファイルサーバＢ２０２と同様の対の構成となる。【００９１】
管理端末１６０は、ファイルサーバＡ２０１、ファイルサーバＢ４０１、ブロックストレージＡ２０２やブロックストレージＢ４０２の管理情報を必要に応じて取得し、操作するための端末であって、ネットワークに接続するためのＩ／Ｆと操作するための入出力装置を有する計算機である。【００９２】
ストレージ装置６００は、ファイルサーバＡ２０１、ファイルサーバＢ４０１、ブロックストレージＡ２０２、ブロックストレージＢ４０２、ホスト１１０や管理端末１６０からの指示に従いデータを格納する。このため、ストレージ装置６００は、データを格納するための単体／複数のボリューム６４０を有する。また、電源断などの障害発生時に、ファイルサーバＡ２０１、ファイルサーバＢ４０１、ブロックストレージＡ２０２やブロックストレージＢ４０２の不揮発性メモリ上のテーブルを含む各種データを退避するためのボリューム６３０、および不揮発性メモリデータ退避領域６３１を有する。
【実施例４】
【００９３】
本実施例は、実施例１〜３の構成において、不揮発性メモリが、バッテリバックアップした揮発性メモリではない場合を示す。基本動作は、実施例１〜３と同様であるため割愛し、相違点のみ説明する。本実施例では、不揮発性メモリ上に更新データが残り続けるため、図４の障害発生時の不揮発性メモリデータ退避領域６３１への退避処理を不要とする。更に、片ノード障害時は、図９や図１０のように、バッテリ保護領域増加による不揮発性メモリ増加ができない。そのため，ノード障害により、他ノードへフェイルオーバーが起きると，そのストレージサービス処理部Ｂ４１０や複製管理処理部Ｂ４２０は，常に直接書き込みモードで動作する。  以上の実施形態によれば、クラスタを構成する各ノードは、他ノードのデータを格納する不揮発性メモリを持てばよい。また、不揮発性メモリが揮発性メモリをバッテリバックアップしている場合には、バッテリ容量を低減可能となる。
【符号の説明】
【００９４】
１００：クラスタ、２００：ノードＡ、２９０：揮発性メモリ、３００：不揮発性メモリ、４００：ノードＢ、４９０：揮発性メモリ、５００：不揮発性メモリ、６００：ストレージ装置、７００：バッテリ、７１０：障害検知部。
【図１】
2016117129.tif 000003
【図２】
2016117129.tif 000004
【図３】
2016117129.tif 000005
【図４】
2016117129.tif 000006
【図５】
2016117129.tif 000007
【図６Ａ】
2016117129.tif 000008
【図６Ｂ】
2016117129.tif 000009
【図６Ｃ】
2016117129.tif 000010
【図６Ｄ】
2016117129.tif 000011
【図７Ａ】
2016117129.tif 000012
【図７Ｂ】
2016117129.tif 000013
【図８】
2016117129.tif 000014
【図９】
2016117129.tif 000015
【図１０】
2016117129.tif 000016
【図１１】
2016117129.tif 000017
【図１２Ａ】
2016117129.tif 000018
【図１２Ｂ】
2016117129.tif 000019
【図１３】
2016117129.tif 000020
【図１４】
2016117129.tif 000021
【図１５】
2016117129.tif 000022
【図１６】
2016117129.tif 000023
【図１７】
2016117129.tif 000024
【図１８】
2016117129.tif 000025
【図１９】
2016117129.tif 000026
【図２０】
2016117129.tif 000027
【図２１】
2016117129.tif 000028
【手続補正書】
【提出日】平成29年6月14日(2017.6.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ノードと、前記ノードと接続された他ノードとを備えるストレージシステムであって、
前記ノードは、
ホストからの第１の更新データを格納する揮発性メモリ、および前記ホストからの前記他ノードへの第２の更新データの第２の複製データを格納する第１の不揮発性メモリを有し、
前記第１の更新データの第１の複製データを前記他ノードの第２の不揮発性メモリに格納する複製管理処理部と、前記第１の複製データの、前記他ノードの前記第２の不揮発性メモリへの格納に応答して、前記第１の更新データの更新要求に対する応答を前記ホストへ送信するストレージサービス処理部と、を有することを特徴とするストレージシステム。
【請求項２】
前記他ノードの前記第２の不揮発性メモリに格納している前記第１の複製データのデータ量が予め定めた所定量を超えた場合、前記第１の複製データの格納時刻から予め定めた所定時間が経過した場合、および、前記ホストから強制書き出し要求を受けた場合のいずれかの場合に、前記複製管理処理部は、前記第１の更新データをストレージ装置へ書き出し、書き出した前記第１の更新データに対応する、前記第２の不揮発性メモリに格納されている前記第１の複製データを削除することを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記他ノードの障害の検知に応答して、前記ノードは前記揮発性メモリの所定の領域をバッテリバックアップして第３の不揮発性メモリとし、前記揮発性メモリに格納した前記第１の更新データを前記第３の不揮発性メモリに格納することを特徴とする請求項２記載のストレージシステム。
【請求項４】
前記ノードは、前記第１の不揮発性メモリに格納している前記第２の複製データと前記第３の不揮発性メモリに格納している前記第１の更新データとを、前記ストレージ装置の予め定めた退避領域に退避する冗長化処理部を有することを特徴とする請求項３記載のストレージシステム。
【請求項５】
前記他ノードの障害からの復旧に応答して、前記ノードは前記退避領域から、前記第２の複製データを前記第１の不揮発性メモリに、前記第１の更新データを前記揮発性メモリに復元することを特徴とする請求項４記載のストレージシステム。
【請求項６】
前記ノードの前記第１の不揮発性メモリと、前記他ノードの前記第２の不揮発性メモリとの少なくともいずれか一方は、バッテリバックアップされた揮発性メモリであることを特徴とする請求項１記載のストレージシステム。
【請求項７】
ノードと他ノードを接続したクラスタ構成のストレージシステムの制御方法であって、
前記ノードは、ホストからの第１の更新データを格納する揮発性メモリ、および前記ホストからの前記他ノードへの第２の更新データの第２の複製データを格納する第１の不揮発性メモリを有し、
前記第１の更新データの第１の複製データを前記他ノードの第２の不揮発性メモリに格納し、
前記他ノードの前記第２の不揮発性メモリへの前記第１の複製データの格納に応答して、前記第１の更新データの更新要求に対する応答を前記ホストへ送信することを特徴とするストレージシステムの制御方法。
【請求項８】
前記ノードは、前記第１の不揮発性メモリに格納している前記第２の複製データを、ストレージ装置の予め定めた退避領域に退避することを特徴とする請求項７記載のストレージシステムの制御方法。
【請求項９】
前記他ノードの障害からの復旧に応答して、前記ノードは前記退避領域から、前記第２の複製データを前記第１の不揮発性メモリに復元することを特徴とする請求項８記載のストレージシステムの制御方法。
【請求項１０】
前記ノードの前記第１の不揮発性メモリと、前記他ノードの前記第２の不揮発性メモリとの少なくともいずれか一方は、バッテリバックアップされた揮発性メモリであることを特徴とする請求項７記載のストレージシステムの制御方法。
【国際調査報告】
2016117129.tif 000029
2016117129.tif 000030