(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024172345
(43)【公開日】2024-12-12
(54)【発明の名称】ストレージシステム
(51)【国際特許分類】
G06F 3/06 20060101AFI20241205BHJP
G06F 13/10 20060101ALI20241205BHJP
【FI】
G06F3/06 306Z
G06F3/06 301Y
G06F13/10 340A
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023090000
(22)【出願日】2023-05-31
(71)【出願人】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】井原 央翔
(72)【発明者】
【氏名】杉本 定広
(72)【発明者】
【氏名】吉原 朋宏
(57)【要約】
【課題】ストレージシステムの消費電力を削減する。
【解決手段】複数ストレージコントローラは、管理装置からの指示に応じて、通常運転モードから縮退運転モードへ変化する。通常運転モードにおいて、各ストレージコントローラは、通常動作状態において動作する。管理装置からの指示に応じた通常運転モードから縮退運転モードへの変化において、複数ストレージコントローラにおいて管理装置により指定されたストレージコントローラは通常動作状態から待機状態に遷移する。指定されたストレージコントローラ以外のストレージコントローラは、通常動作状態から縮退動作状態に遷移する。縮退運転モードにおける縮退動作状態のストレージコントローラの障害停止を契機として、待機状態のストレージコントローラは起動して縮退動作状態に遷移する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ストレージシステムであって、
複数ストレージコントローラを含み、
前記複数ストレージコントローラは、管理装置からの指示に応じて、通常運転モードから縮退運転モードへ変化し、
前記複数ストレージコントローラの各ストレージコントローラは、複数状態間を遷移し、
前記複数状態は、
前記通常運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う、通常動作状態と、
前記縮退運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う縮退動作状態と、
ホスト装置とストレージドライブとの間のデータ入出力を停止し、前記通常動作状態及び前記縮退動作状態より低消費電力の待機状態と、を含み、
前記通常運転モードにおいて、前記複数ストレージコントローラの各ストレージコントローラは、前記通常動作状態において動作し、
前記管理装置からの指示に応じた前記通常運転モードから前記縮退運転モードへの変化において、前記複数ストレージコントローラにおいて前記管理装置により指定されたストレージコントローラは前記通常動作状態から前記待機状態に遷移し、前記指定されたストレージコントローラ以外のストレージコントローラは前記通常動作状態から前記縮退動作状態に遷移し、
前記縮退運転モードにおける前記縮退動作状態のストレージコントローラの障害停止を契機として、前記待機状態のストレージコントローラは前記縮退動作状態に遷移する、ストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記複数ストレージコントローラは、モジュールに含まれ、
前記モジュールに含まれるストレージコントローラの数は4であり、
前記モジュールは第1ノード及び第2ノードを含み、
前記4つのストレージコントローラの内の2つのストレージコントローラは前記第1ノードに含まれ、前記4つのストレージコントローラの内の他の2つのストレージコントローラは前記第2ノードに含まれ、
前記4つのストレージコントローラは、前記通常動作状態及び前記縮退動作状態において、共通のホスト装置と共通のストレージドライブとの間のデータ入出力を実行可能である、ストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記縮退運転モードにおいて、
前記縮退動作状態のストレージコントローラと、前記通常運転モードにおいて前記複数ストレージコントローラとホストパスを介して通信する全てのホスト装置との間に、ホストパスが存在し、
前記縮退動作状態のストレージコントローラと、前記通常運転モードにおいて前記複数ストレージコントローラとドライブパスを介して通信する全てのストレージドライブとの間に、ドライブパスが存在する、ストレージシステム。
【請求項4】
請求項2に記載のストレージシステムであって、
前記第1ノード及び前記第2ノードの各ノードは、各ノードの前記2つのストレージコントローラに共有されたコンポーネントを含み、
前記待機状態は、電力供給が停止された停止状態であり、
前記第1ノード及び前記第2ノードの各ノードは、各ノードの前記2つのストレージコントローラが前記停止状態であるとき、前記コンポーネントを停止する、ストレージシステム。
【請求項5】
請求項2に記載のストレージシステムであって、
前記縮退運転モードは、第1縮退運転モード及び第2縮退運転モードの一方であり、
前記第1縮退運転モードは、
前記第1ノードの1つのストレージコントローラを前記待機状態にし、前記第1ノードの他の1つのストレージコントローラを前記縮退動作状態にし、
前記第2ノードの1つのストレージコントローラを前記待機状態にし、前記第2ノードの他の1つのストレージコントローラを前記縮退動作状態にし、
前記第2縮退運転モードは、前記第1ノードの2つのストレージコントローラを前記待機状態にし、前記第2ノードの2つのストレージコントローラを縮退動作状態にする、ストレージシステム。
【請求項6】
請求項2に記載のストレージシステムであって、
1以上の論理ボリュームが管理され、
前記1以上の論理ボリュームの各論理ボリュームの制御権は、前記複数ストレージコントローラの担当ストレージコントローラに付与されており、
前記1以上の論理ボリュームの各論理ボリュームのデータ入出力は、前記担当ストレージコントローラに排他的に制御され、
前記担当ストレージコントローラが前記縮退運転モードにおいて前記待機状態に遷移する場合、付与されている前記制御権は、前記縮退動作状態のストレージコントローラに移行される、ストレージシステム。
【請求項7】
請求項1に記載のストレージシステムであって、
前記通常運転モードにおいて、前記複数ストレージコントローラの一部のストレージコントローラは前記ストレージシステムの制御情報を保持及び管理し、前記複数ストレージコントローラの他のストレージコントローラは、前記制御情報を前記一部のストレージコントローラから取得し、
前記一部のストレージコントローラの1つのストレージコントローラが前記縮退運転モードにおいて前記待機状態に遷移する場合、前記1つのストレージコントローラの前記制御情報は、前記縮退動作状態のストレージコントローラに移行される、ストレージシステム。
【請求項8】
請求項7に記載のストレージシステムであって、
前記制御情報を移行されるストレージコントローラのメモリの空き領域が前記制御情報を格納するために不足している場合、前記メモリのクリーンキャッシュを放棄することで前記制御情報を格納するための領域が確保される、ストレージシステム。
【請求項9】
請求項1に記載のストレージシステムであって、
前記縮退運転モードにおいて前記待機状態に遷移するストレージコントローラが保持しているダーティキャッシュは、前記ストレージドライブにデステージされる又は前記縮退動作状態のストレージコントローラに移行される、ストレージシステム。
【請求項10】
ストレージシステムの制御方法であって、
前記ストレージシステムは、複数ストレージコントローラを含み、
前記複数ストレージコントローラは、管理装置からの指示に応じて、通常運転モードから縮退運転モードへ変化し、
前記複数ストレージコントローラの各ストレージコントローラは、複数状態間を遷移し、
前記複数状態は、
前記通常運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う、通常動作状態と、
前記縮退運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う縮退動作状態と、
ホスト装置とストレージドライブとの間のデータ入出力を停止し、前記通常動作状態及び前記縮退動作状態より低消費電力の待機状態と、を含み、
前記制御方法は、
前記通常運転モードにおいて、前記複数ストレージコントローラの各ストレージコントローラが、前記通常動作状態において動作し、
前記管理装置からの指示に応じた前記通常運転モードから前記縮退運転モードへの変化において、前記複数ストレージコントローラにおいて前記管理装置により指定されたストレージコントローラが前記通常動作状態から前記待機状態に遷移し、前記指定されたストレージコントローラ以外のストレージコントローラが前記通常動作状態から前記縮退動作状態に遷移し、
前記縮退運転モードにおける前記縮退動作状態のストレージコントローラの障害停止を契機として、前記待機状態のストレージコントローラが前記縮退動作状態に遷移する、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はストレージシステムに関する。
【背景技術】
【0002】
ストレージシステムの消費電力削減は、技術課題の一つである。特に、CPUを搭載したコントローラと、ストレージドライブを搭載したドライブボックスを含むエンタープライズストレージにおける消費電力削減は、特に強く解決が求められている。このようなストレージシステムでは、可用性が重要視されるため、実際のアプリケーション負荷より高い性能を発揮できる複数コントローラが搭載され、高い冗長性を有する。
【0003】
本開示の背景技術として、米国特許出願公開第2012/0137172号がある。米国特許出願公開第2012/0137172号は、デュアルコントローラのストレージシステムにおいて、信頼性の要求が低い場合に、信頼性を下げる代わりに消費電力を抑えるために、ストレージシステム内の一部コンポーネントを停止させることを開示する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2012/0137172号
【発明の概要】
【発明が解決しようとする課題】
【0005】
複数ストレージコントローラを搭載したストレージシステムにおいて、可用性を確保しつつ消費電力を削減できる技術が望まれる。
【課題を解決するための手段】
【0006】
本発明の一態様は、ストレージシステムであって、複数ストレージコントローラを含み、前記複数ストレージコントローラは、管理装置からの指示に応じて、通常運転モードから縮退運転モードへ変化し、前記複数ストレージコントローラの各ストレージコントローラは、複数状態間を遷移し、前記複数状態は、前記通常運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う、通常動作状態と、前記縮退運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う縮退動作状態と、停止状態と、を含み、前記通常運転モードにおいて、前記複数ストレージコントローラの各ストレージコントローラは、前記通常動作状態において動作し、前記管理装置からの指示に応じた前記通常運転モードから前記縮退運転モードへの変化において、前記複数ストレージコントローラにおいて前記管理装置により指定されたストレージコントローラは前記通常動作状態から前記停止状態に遷移し、前記指定されたストレージコントローラ以外のストレージコントローラは前記通常動作状態から前記縮退動作状態に遷移し、前記縮退運転モードにおける前記縮退動作状態のストレージコントローラの障害停止を契機として、前記停止状態のストレージコントローラは起動して前記縮退動作状態に遷移する。
【発明の効果】
【0007】
本発明の一態様によれば、複数ストレージコントローラを搭載したストレージシステムにおいて、可用性を確保しつつ消費電力を削減できる。
【図面の簡単な説明】
【0008】
【
図1】本明細書の一実施例の情報システムの構成を示す図である。
【
図2】複数のモジュールを含むストレージシステムの構成例を示す。
【
図3】
図2に示すストレージシステムの他の構成要素を示す。
【
図4】一つのモジュールの縮退運転モードを模式的に示す。
【
図5】異なる縮退運転モードにおける、ホスト装置とドライブボックスとの間の、モジュールを介したパスを示す。
【
図6】モジュールが、管理装置からの指示に応じて、一つのコントローラを通常動作状態から停止状態に変化させる例を示す。
【
図8】各コントローラが格納しているプログラムを示す。
【
図9】管理装置が管理しているモジュールの状態遷移を示す。
【
図10】管理装置の縮退動作移行制御プログラムによる処理例のフローチャートを示す。
【
図11】管理装置の縮退動作解除制御プログラムによる処理例のフローチャートを示す。
【
図12】管理装置の二重化回復制御プログラムによる処理例のフローチャートを示す。
【
図13】
図9を参照して説明したモジュール状態遷移での、コントローラの状態遷移を示す。
【
図14A】モジュールが縮退準備状態であるときの、コントローラ状態の組合せ例を示す。
【
図14B】モジュールが縮退準備状態であるときの、コントローラ状態の組合せ例を示す。
【
図15】コントローラの縮退準備制御プログラムAの処理例を示すフローチャートである。
【
図16】コントローラの縮退準備制御プログラムBの処理例を示すフローチャートである。
【
図17】コントローラの縮退移行制御プログラムの処理例を示すフローチャートである。
【
図18】コントローラの縮退完了確認プログラムの処理例を示すフローチャートである。
【
図19】コントローラの緊急起動制御プログラムの処理例を示すフローチャートである。
【
図20】コントローラの通常起動制御プログラムの処理例を示すフローチャートである。
【
図21】コントローラの縮退解除制御プログラムの処理例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、図面を用いて実施例を説明する。なお、実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではなく、また実施例の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0010】
以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。また、以下の説明では、要素の識別情報として番号が使用されるが、他種の識別情報(例えば名前、識別子)が使用されてよい。
【0011】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通符号(又は参照符号)を使用し、同種の要素を区別して説明する場合は、参照符号(又は要素のID)を使用することがある。
【0012】
プログラムは、ストレージコントローラに含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば主記憶)及び/又は通信インタフェース装置を用いながら行うため、処理の主語がストレージコントローラ或いはプロセッサとされてもよい。また、ストレージコントローラは、処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであってもよい。
【0013】
図1は、本明細書の一実施例の情報システムの構成を示す図である。情報システムは、ストレージシステム、ホスト装置10、管理装置31、及び管理端末32を含む。ストレージシステムは、モジュール20及びドライブボックス40を含む。モジュール20は、複数のノード21を含み、
図1に示す構成例において、一つのモジュール20に含まれるノード21の数は2である。
【0014】
各ノード21は、複数のコントローラ(ストレージコントローラとも呼ぶ)210を含み、
図1に示す構成例において、一つのノード21に含まれるコントローラ210の数は2である。
図1において、一つのノードが例として符号21で指示され、また、一つのコントローラが例として、符号210で指示されている。
【0015】
各ノード21は、さらに、1又は複数の電源ユニット(PSU)220及び1又は複数の冷却ファン230を含む。PSU及び冷却ファンは、ノード内のコントローラに共有された、停止可能なコンポーネントである。
図1は、例として、二つのPSU220と一つのファン230を示す。二つのPSU230は冗長構成を有し、各PSU230は、二つのコントローラ210に電力を供給する。
図1において、一つのPSUが例として符号230で指示されている。各ノード21の構成要素は、例えば、一つフレーム内に収容されている。
【0016】
コントローラ210は、ホスト装置10からのデータ入出力指令に応じて、ホスト装置10とドライブボックス40との間のホストデータの入出力処理を実行する。プロセッサであるCPU211、メモリ(主記憶)212、ホストインタフェース(I/F)213、管理インタフェース214、内部通信インタフェース215、及びドライブインタフェース216を含む。コントローラ210を構成する各種要素の数は、1以上でよい。
【0017】
CPU211は、コントローラ210全体を制御するものであり、メモリ212に格納されたプログラムに基づき稼働する。メモリ212は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等の半導体メモリで構成される。メモリは、揮発メモリとSCM(Storage Class Memory)などの不揮発メモリと組み合わせて構成してもよい。
【0018】
ホストインタフェース213は、CPU211により制御され、ストレージエリアネットワーク(SAN)11を介して、ホスト装置10とI/O要求やI/Oデータの送受信などを実施する。ホストインタフェース213は、複数ポートを含み、複数ポートを介して複数のホスト装置と通信してもよい。
【0019】
管理インタフェース214は、CPU211により制御され、管理ネットワーク(NW)34を介して、管理装置31から制御コマンドを受信し、制御コマンドに対する応答を送信する。ユーザ33は、管理端末32を介して管理装置31を操作する。管理端末32及び管理装置31は、例えば、プロセッサ、メモリ、通信インタフェース及び入出力装置を含む計算機構成を有することができる。内部通信インタフェース215は、CPU211により制御され、内部通信スイッチ(SW)23を介して、他のコントローラ210とのデータ通信を行う。
【0020】
ドライブインタフェース216は、CPU211により制御され、ドライブボックス40内のドライブ(記憶ドライブとも呼ぶ)41と、I/Oデータの送受信などを実施する。ドライブボックス40は、SSDやHDD等のドライブ(ストレージドライブ)41を複数、フレーム内に搭載し、それら複数ドライブ41とコントローラ210を接続するために、内部スイッチ、並びに、転送処理に利用するプロセッサ及びメモリを含む。ドライブ41は、ホスト装置10からのホストデータを、コントローラ210を介して受信し、格納、保持する。
【0021】
ドライブボックス40は、保持しているデータの可用性を確保するために、内蔵されているドライブ41間でRAIDを組んでもよいし、複数のドライブボックス40間でRAIDを組んでもよい。一つのドライブ41は、1又は複数のパリティグループに属し得る。
図1では、一つのドライブボックス40を示すが、各コントローラ210が複数のドライブボックスと通信可能でもよい。ドライブ41は、不揮発性半導体メモリを搭載したAFA(All Flash Array)で構成してもよく、それらの全部又は一部がハードディスクドライブ(HDD)と置き換えられていてもよい。
【0022】
なお、
図1はストレージシステムの構成例を示すものであって、モジュール内のノードの数、ノード内のコントローラの数は設計により設定され得る。また、ストレージシステムの全コントローラが、ノードやモジュールによって分割管理されていなくてもよい。
【0023】
図2は、複数のモジュール20を含むストレージシステムの構成例を示す。各モジュール20の構成は、
図1を参照して説明した通りである。
図2において、説明の容易化のため、
図1で示した構成要素の一部は省略されている。
図2の構成例において、ストレージシステムに含まれるモジュール20の数は2であり、各モジュール20のノード数は2である。全てのコントローラ210は、内部通信インタフェース215及び内部通信スイッチ23を介して、互いに通信することができる。また、管理装置31は、管理ネットワーク34を介して、全てのコントローラ210と通信可能である。
【0024】
図3は、
図2に示すストレージシステムの他の構成要素を示す。ホスト装置10は、全てのコントローラ210と、ストレージエリアネットワーク11を介して通信可能である。2つのモジュール20は、それぞれ異なるドライブボックス40に接続されている。本明細書の一実施例において、各ドライブボックス40は一つのみのモジュール20に接続され、対応する一つのみのモジュール20からアクセスされる。各モジュール20は複数のドライブボックス40と接続されていてよい。一つのモジュール20とそれに接続される1又は複数のドライブボックス40は、ストレージシステムの増減設の単位を構成する。
【0025】
以下において、本明細書の一実施例に係る、ストレージシステムに省電力処理を説明する。ストレージシステムでは可用性が重要視されるため、アプリケーションのI/O負荷要件で要求される数よりも多くのコントローラが搭載され得る。本明細書の一実施例は、全コントローラを常時運転するのではなく、一部コントローラを待機状態に設定し、障害発生契機で起動することで、消費電力の削減を可能とする。コントローラは、コントローラへの電力供給を停止する又は電力を供給された状態で一部機能のみ維持するなど、1又は複数種類の待機状態を有してよい。いずれの待機状態もホスト装置とドライブボックス(ドライブ)との間のデータ入出力を停止し、データ入出力を実行する状態より消費電力が少ない。以下に説明する例において、待機状態は、コントローラへの電力供給を停止する。
【0026】
図4は、一つのモジュール20の縮退運転モードを模式的に示す。本明細書の一実施例はモジュール単位で縮退運転モードを決定する。ここで説明する例において、各ドライブボックス40にアクセス可能であるモジュールは一つのみである。モジュール20毎に縮退運転モードを制御することで、ホストアクセスを適切に維持することができる。
【0027】
図4は、全てのコントローラがホストデータの入出力を実行している通常運転モード201A、一部のコントローラが待機状態にあり他のコントローラが入出力を実行している第1縮退運転モード202A、及び一部のコントローラが待機状態にあり他のコントローラが入出力を実行している第2縮退運転モード202Bを示す。
【0028】
上述のように、モジュール20が含むノードは、ノード21A及びノード21Bの二つのノードである。ノード21A及びノード21Bは、それぞれ、二つのコントローラ210A、210B、二つのPSU220及び一つのファン230を含む。一つのノードに含まれるコントローラの数は2である。
【0029】
通常運転モード201A(2N4Cモード)において、モジュール20における4つの全てのコントローラが入出力を実行している。同様に、全てのPSU222及びファン230は、動作している。
【0030】
第1縮退運転モード202A(2N2Cモード)において、一つのノード21Aにおける一つのコントローラ210Aは入出力を実行し、他方のコントローラ210Bは停止している(待機状態の例)。さらに、他のノード21Bにおける一つのコントローラ210Aは入出力を実行し、他方のコントローラ210Bは停止している。全てのPSU222及びファン230は、動作している。第1縮退運転モード202Aは、第2縮退運転モード202Bに比較して冗長性の観点から、耐障害性が高い。
【0031】
第2縮退運転モード202B(1N2Cモード)において、一つのノード21Aは入出力を実行している。つまり、ノード21Aにおいて、全てのコントローラ210A、210Bは入出力を実行し、さらに、全てのPSU222及びファン230は、動作している。一方、ノード21Bは停止している。つまり、ノード21Bにおいて、全てのコントローラ210A、210Bは停止し、さらに、全てのPSU222及びファン230は、停止している。第2縮退運転モード202Bは、消費電力の点で、第1縮退運転モード202Aより優れている。
【0032】
モジュール20は、管理装置31を介したユーザ33からの閉塞指示に従って、通常運転モード201Aから、第1縮退運転モード202A又は第2縮退運転モード202Bに移行する。ユーザは、複数の縮退運転モードから、移行先の縮退運転モードを指定又は予め設定できる。上述のように、第1縮退運転モード202Aは、第2縮退運転モード202Bと比較して、可用性の点で優れ、消費電力点で劣る。電力削減効果よりも可用性が重視される場合、ユーザ指示により、第1縮退運転モード202Aが選択される。
【0033】
図5は、異なる縮退運転モードにおける、ホスト装置10とドライブボックス40との間の、モジュール20を介したパスを示す。コントローラ210は、ホストパスを介してホスト装置10と通信し、ドライブパスを介してドライブ又はドライブボックスと通信する。ホストパス及びドライブパスは、論理的な通信経路である。
図5に示す例において、ホスト装置10は、論理ユニット101A、101B、101Cにアクセスして、ホストデータの書き込み及び読み出しを行う。
【0034】
論理ユニット101Aのデータは、物理的にはドライブボックス40Aに格納されている。モジュール20Aのみが、ホスト装置10からドライブボックス40AへのIOを制御する。モジュール20Aは、第1縮退運転モード202Aにあり、それぞれ異なるコントローラに属する二つのコントローラが動作している。このため、ホスト装置10は、論理ユニット101Aのアクセスが可能である。
【0035】
論理ユニット101Bのデータは、物理的にはドライブボックス40Bに格納されている。モジュール20Bのみが、ホスト装置10からドライブボックス40BへのIOを制御する。モジュール20Bは、第2縮退運転モード202Bにあり、共通のコントローラに属する二つのコントローラが動作している。このため、ホスト装置10は、論理ユニット101Bのアクセスが可能である。
【0036】
論理ユニット101Cのデータは、物理的にはドライブボックス40Cに格納されている。モジュール20Cのみが、ホスト装置10からドライブボックス40CへのIOを制御する。モジュール20Cは、他の縮退運転モード202Cにあり、三つのコントローラが動作している。このため、ホスト装置10は、論理ユニット101Cのアクセスが可能である。
【0037】
図5を参照して説明したように、モジュールの縮退運転モードにおいて、少なくとも一つのコントローラが動作している。これにより、ホスト装置10とボリュームのデータを物理的に格納するドライブボックスとのパスが確保される。このように、縮退運転モードにおいて、通常運転モードにおいてモジュールを介してドライブボックスにアクセスする全てのホスト装置とモジュール(動作状態のコントローラの組合せ)との間のホストパスが存在する。同様に、モジュールとドライブボックス(全ドライブ)との間にドライブパスが存在する。
【0038】
図6は、モジュール20が、管理装置31からの指示に応じて、一つのコントローラを通常動作状態から停止状態に変化させる例を示す。
図6の例において、ノード21Aのコントローラ210Aが、通常動作状態から停止状態に変化する。
図6は、管理装置31から一つのコントローラ210に対する閉塞指示を示すが、縮退モードへの移行の指示は、稼働中の全てのコントローラ210に送信される。
【0039】
モジュール20Aは、状態204から状態205に変化する。状態204において、ノード21Bの一つのコントローラ210Bが停止しており、それ以外の全てのコントローラは通常動作している。なお、ノード21Bのコントローラ210Bは、直前に停止状態に変化したものとする。変化後の状態205において、ノード21Aのコントローラ210Aが停止し、ノード21Bのコントローラ210Bが停止している。他の二つのコントローラは通常動作している。
【0040】
各コントローラ210のメモリ212は、制御情報領域510及びキャッシュ領域520を含む。制御情報領域510は、コントローラ210が処理を行うために参照する制御情報を格納するための領域である。キャッシュ領域520は、ホスト装置10からのホストデータ(ユーザデータ)を一時的に格納するための領域であり、キャッシュデータは、ライトデータを含み、リードデータを含んでもよい。
【0041】
キャッシュ領域520に格納されているキャッシュデータは、ダーティデータ(ダーティキャッシュ)521及びクリーンデータ522を含む。ダーティデータ521は、ドライブボックス40の同一アドレスのデータより新しいデータであり、ドライブボックス40の同一アドレスを更新すべきデータである。クリーンデータ522は、ドライブボックス40の同一アドレスのデータと同一のデータである。
【0042】
ストレージシステム内の論理ボリュームは、ボリューム制御権を割り当てられたコントローラ(担当コントローラ)のみが排他的にアクセス及び制御することができる。論理ボリュームは、ストレージシステム内の論路デバイスであって、ホストデータ又はストレージシステム内で使用されるデータを格納する。
図6の状態204において、ノード21Aのコントローラ210Aは、論理ボリューム25に対するボリューム制御権を有している。
【0043】
制御情報511は、ノード内の一方のコントローラが保持しており、他方のコントローラは、同一ノード内の他のコントローラが保持する制御情報511を常に参照する、又は、その制御情報511のキャッシュデータを保持し、参照する。なお、全てのコントローラが共通の制御情報を保持及び管理してもよい。
【0044】
図6に示す状態204において、ノード21A内のコントローラ210Aは、制御情報511を保持している。他のコントローラ210Bは、コントローラ210Aの制御情報511を参照する、又は、そのキャッシュデータを保持して参照する。なお、ノード21Bのコントローラ210Bが停止する前、ノード21Bのコントローラ210Bは、ノード21Bにおけるコントローラ210Aの制御情報511を参照していた、又は、そのキャッシュデータを保持して参照していた。
【0045】
制御情報511は、同一モジュール20内の異なるノード21間で冗長化されている(
図6において破線で表されている)。つまり、異なるノードのコントローラ210が、それぞれ共通の制御情報511を保持している。一方のコントローラ210における制御情報511の更新は、他方のコントローラ210の制御情報511に反映される。
図6の状態204において、ノード21Aのコントローラ210A及びノード21Bのコントローラは共通の制御情報511を格納している。
【0046】
キャッシュ領域520内のダーティデータ521は、同一モジュール20内の異なるノード21間で冗長化されている(
図6において破線で表されている)。つまり、異なるノードのコントローラ210が、それぞれ共通のダーティデータ521を保持している。一方のコントローラ210におけるダーティデータ521の更新は、他方のコントローラ210のダーティデータ521に反映される。
図6の状態204において、ノード21Aのコントローラ210A及びノード21Bのコントローラは共通のダーティデータ521を格納している。なお、ダーティデータが二重化されていなくてもよい。
【0047】
ノード21Aのコントローラ210Aは、管理装置31からの閉塞指示に応じて、停止する。このコントローラ210Aは、停止前に、制御情報511と論理ボリューム制御権とを、同一ノード21Aの他方のコントローラ210Bに渡す。ノード21Aのコントローラ210Aは、そのダーティデータ521を論理ボリューム25にデステージする又はノード21Aのコントローラ210Bに渡す。ノード21Aのコントローラ210Bは、コントローラ210Aからのデータをメモリ212に格納するため、必要であれば、クリーンデータ522の少なくとも一部を削除して空き領域を形成する。
【0048】
ノード21Aのコントローラ210Aからコントローラ210Bへの上記の必要なデータの移行が完了した後、ノード21Aのコントローラ210Aは停止する。ノード21Aのコントローラ210Bとノード21Bのコントローラ210Aとは、ノード21A及び21Bの二つコントローラ210Aと同様の関係を有するようになる。つまり、制御情報511及びダーティデータ521が二つのコントローラ間で共有される。また、ノード21Aのコントローラ210Bは、論理ボリューム25のボリューム制御権530を有し、論理ボリューム25にアクセスすることができる。
【0049】
上記処理による状態205は、第1縮退運転モード202A(2N2Cモード)の状態である。状態205は、運転中の二つのコントローラ間でダーティデータ521及び制御情報511が共有され、障害耐性を高めることができる。また、論理ボリューム25へのアクセスが維持される。なお、上記二つの情報の共有がされていなくてもよい。
【0050】
次に、
図6に示す状態204から、ノード21Aのコントローラ210Aに代えて、ノード21Aのコントローラ210Bを停止させる方法を説明する。コントローラ210Bは、同一ノードのコントローラ210Aと異なり、管理すべきオリジナルの制御情報511を保持していない。そのため、制御情報511の移動は不要である。
【0051】
コントローラ210Bが保持しているボリューム制御権530は、同一ノード21Aのコントローラ210Aに移動される。コントローラ210Bのダーティデータ521は同一ノード21Aのコントローラ210Aに移動される、又は、対応する論理ボリューム25にデステージされる。このように、管理すべき制御情報511を格納していないコントローラを停止することで、制御情報511の移動が不要となる。また、他方ノード21Bのコントローラ210Aとの関係も切り替えることが不要である。
【0052】
全ての四つのコントローラが動作している通常運転モードから、第1縮退運転モード202A(2N2Cモード)への移行は、例えば、ノード21A及び21Bそれぞれから、制御情報511を管理していないコントローラ210Bを選択して、停止させてもよい。これにより、制御情報511の移動や制御情報511及びダーティデータ521の同期のための追加処理を低減できる。
【0053】
全ての四つのコントローラが動作している通常運転モードから、第2縮退運転モード202B(1N2Cモード)への移行は、片方のノードを閉塞する。例えば、
図6において、ノード21Bを閉塞するものとする。ノード21Bのコントローラ210Aのボリューム制御権530は、例えば、ノード21Aのコントローラ210Aに移動される。ノード21Bのコントローラ210Aのダーティデータ521は、論理ボリューム25にデステージされる又は、ノード21Aのコントローラ210Aに移動される。ボリューム制御権530及びダーティデータ521は、それぞれ、ノード21Aのいずれのコントローラに移動されてもよい。
【0054】
ノード21Bのコントローラ210Bのボリューム制御権530は、例えば、ノード21Aのコントローラ210Bに移動される。ノード21Bのコントローラ210Bのダーティデータ521は、論理ボリューム25にデステージされる又は、ノード21Aのコントローラ210Bに移動される。ボリューム制御権530及びダーティデータ521は、それぞれ、ノード21Aのいずれのコントローラに移動されてもよい。
【0055】
上記処理により、動作し続けるノード21Aにおいて、ボリューム制御権530が維持され、制御情報511の共有も維持される。管理装置31は、閉塞するコントローラそれぞれに閉塞指示を送信し、指示を受けたコントローラは、それぞれ、上述のように閉塞処理(停止処理)を実行する。
【0056】
図7は、管理装置31が格納しているプログラムを示す。管理装置31のメモリ310はプログラム領域311内に、縮退動作移行制御プログラム313、縮退動作解除制御プログラム315、及び二重化回復制御プログラム317を格納している。これらプログラムの処理の詳細は後述する。
【0057】
図8は、各コントローラ210が格納しているプログラムを示す。コントローラ210のメモリ212はプログラム領域250内に、縮退準備制御プログラムA251、縮退準備制御プログラムB252、縮退移行制御プログラム253、縮退完了確認プログラム254、緊急起動制御プログラム255、通常起動制御プログラム256、縮退解除制御プログラム257を格納している。これらプログラムの処理の詳細は後述する。
【0058】
図9は、管理装置31が管理しているモジュール20の状態遷移を示す。通常動作状態ST11は、通常運転モードで動作している状態である。このとき、全てのコントローラが稼働している。管理装置31は、モジュール20に対して、通常運転モードから特定の縮退運転モードに移行することを指示する。モジュール20が、縮退運転モードに移行することができない場合、モジュール状態は、通常動作状態ST11から縮退失敗状態ST18に遷移する。
【0059】
モジュール20が、縮退運転モードに移行することができる場合、モジュール状態は、通常動作状態ST11から縮退準備状態ST12に変化し、さらに、縮退設定状態ST13を介して、縮退動作状態ST14に変化する。縮退動作状態ST14において、モジュール20は、指定された縮退運転モードにおいて動作している。
【0060】
縮退動作状態ST14において稼働中のあるコントローラ210において障害が発生すると、モジュール状態は二重化回復状態ST15に変化する。この状態において、二重化回復処理が実行される。つまり、停止していた一つのコントローラ210が起動されて、制御情報511とダーティキャッシュを、稼働している他方のコントローラ210と共有する。二重化が回復されると、モジュール状態は、二重化回復状態ST15から縮退動作状態ST14に戻る。
【0061】
縮退動作状態ST14のモジュール20に対して、管理装置31から、縮退解除の指示が発行されると、モジュール状態は、縮退動作状態ST14から縮退解除状態ST16に遷移する。その後、モジュール状態は、縮退解除状態ST16から、縮退後始末状態ST17を介して、通常動作状態ST11に遷移する。
【0062】
以下において、
図9に示すモジュール状態遷移における管理装置31の処理を説明する。上述のように、管理装置31は、縮退動作移行制御プログラム313、縮退動作解除制御プログラム315、及び二重化回復制御プログラム317を実行する。
【0063】
図10は、管理装置31の縮退動作移行制御プログラム313による処理例のフローチャートを示す。縮退動作移行制御プログラム313は、ユーザによる設定に従って、モジュール20の通常動作状態ST11から縮退動作状態ST14への移行を制御及び管理する。
【0064】
まず、縮退動作移行制御プログラム313は、ユーザ33からの縮退運転モードの指定を伴う縮退移行指示に応答して、対象モジュール20が縮退動作可能であるか判定する(S301)。例えば、モジュールとの通信が不可能な場合や、何れかのコントローラから縮退失敗の応答を受けた場合、縮退不可能と判定される。縮退不可能である場合(S301:NO)、縮退動作移行制御プログラム313は、保持している管理情報において、モジュール状態を通常動作状態ST11から縮退失敗状態ST18に遷移させる(S311)。
【0065】
縮退可能である場合(S301:YES)、縮退動作移行制御プログラム313は、縮退運転モードにおける停止対象のコントローラ210を決定する(S302)。縮退動作移行制御プログラム313は、ユーザに指定された縮退運転モードの情報を保持している。
図4から6を参照して説明したように、各縮退運転モードに対して、稼働状態を維持するコントローラ210の組合せが定義されている。
【0066】
次に、縮退動作移行制御プログラム313は、モジュール20の稼働中の全コントローラ210に縮退準備指令を発行し(S303)、その管理情報におけるモジュール状態を縮退準備状態ST12に遷移させる(S304)。縮退準備において、稼働し続ける(停止しない)コントローラ210は、制御情報511を含む、停止するコントローラ210から移動されるデータを格納するために、メモリ内空き領域を作成する。
【0067】
縮退準備において、停止するコントローラ210は、ダーティデータをドライブボックスにデステージする又は稼働し続けるコントローラ210に移動する。例えば、ダーティデータを格納する空き領域を移動先が有していない場合にデステージされ、空き領域が確保できる場合に移動先に移動されてもよい。一例において、縮退準備において、制御情報511の移動は実行されない。なお、モジュール状態遷移におけるコントローラ210の処理の詳細は後述する。
【0068】
縮退動作移行制御プログラム313は、縮退準備指令に対するコントローラ210からの状態遷移の通知に基づいて、稼働中の全コントローラ210が、縮退準備状態から縮退待機状態に遷移したか判定する(S305)。1以上のコントローラ210が縮退待機状態に遷移できない場合(S305:NOかつS306:YES)、モジュール状態を縮退失敗状態ST18に遷移させる(S311)。
【0069】
稼働中の全コントローラ210が縮退待機状態に遷移した場合(S305:YES)、縮退動作移行制御プログラム313は、稼働中の全コントローラ210に縮退移行指令を発行し(S307)、管理情報において、モジュール状態を縮退設定状態ST13に遷移させる(S308)。
【0070】
次に、縮退動作移行制御プログラム313は、稼働中の全コントローラからの状態遷移の通知に基づき、停止すべきコントローラが停止し、他の全稼働コントローラが縮退動作状態であるか判定する(S309)。全稼働コントローラが縮退動作状態になると(S309:YES)、管理情報内のモジュール状態を縮退動作状態ST14に遷移させる(S310)。なお、縮退動作移行制御プログラム313は、モジュール状態の変化を表示装置においてユーザ33に提示してもよい。
【0071】
図11は、管理装置31の縮退動作解除制御プログラム315による処理例のフローチャートを示す。縮退動作解除制御プログラム315は、ユーザからの縮退解除指示に応じて、モジュール20の縮退動作の解除を制御及び管理する。つまり、縮退動作解除制御プログラム315は、縮退動作状態ST14から通常動作状態ST11への遷移を制御及び管理する。
【0072】
縮退動作解除制御プログラム315は、稼働中の全コントローラが、縮退動作状態にあるか判定する(S401)。縮退動作解除制御プログラム315は、稼働コントローラ210から状態情報を取得してもよく、管理情報内に保持している直前のコントローラ状態情報を参照してもよい。
【0073】
次に、縮退動作解除制御プログラム315は、停止中コントローラ210に起動指令を発行する(S402)。次に、縮退動作解除制御プログラム315は、保持している管理情報のモジュール状態を、縮退動作状態ST14から縮退解除状態ST16に遷移させる。
【0074】
次に、縮退動作解除制御プログラム315は、全コントローラが稼働中であるか判定する(S404)。縮退動作解除制御プログラム315は、起動指令を発行した全こんとろーら210の起動を待つ(S404:NO)。全てのコントローラ210が稼働している場合(S404:YES)、縮退動作解除制御プログラム315は、全稼働コントローラ210に、縮退後始末指令を発行する(S405)。
【0075】
次に、縮退動作解除制御プログラム315は、管理情報におけるモジュール状態を、縮退解除状態ST16から縮退後始末状態ST17に遷移させる(S406)。次に、縮退動作解除制御プログラム315は、全稼働コントローラ210からの状態遷移の通知に基づき、全稼働コントローラ210が通常動作状態であるか判定する(S407)。縮退動作解除制御プログラム315は、全稼働コントローラ210が通常動作状態に変化するのを待つ(S407:NO)。全稼働コントローラ210が通常動作状態である場合(S407:YES)、縮退動作解除制御プログラム315は、保持している管理情報におけるモジュール状態を、縮退後始末状態ST17から通常動作状態ST11に遷移させる。
【0076】
図12は、管理装置31の二重化回復制御プログラム317による処理例のフローチャートを示す。二重化回復制御プログラム317は、縮退動作状態ST14と二重化回復状態ST15との間の遷移を制御及び管理する。縮退動作中に稼働コントローラ210で障害が発生すると、停止中のコントローラ210が起動され、障害停止してコントローラ210と交替し、二重化が回復される。
【0077】
縮退動作状態ST14のモジュール20において、障害が発生すると、二重化回復制御プログラム317は、起動対象のコントローラ210を選択する(S1201)。
【0078】
起動対象コントローラの選択は、例えば、以下のように実行される。第1縮退運転モード202A(2N2Cモード)において一つの稼働コントローラ210で障害が発生した場合、障害が発生したコントローラ210のノード21の停止中コントローラ210が選択される(2N2Cモード)。選択した停止中コントローラ210により二重化が回復できない場合、障害が発生したコントローラ210のノード21と異なるノード21の停止中コントローラ210がさらに選択される(1N2Cモード)。
【0079】
第2縮退運転モード202B(1N2Cモード)において一つのコントローラ210で障害が発生した場合、障害が発生したコントローラ210のノード21と異なるノード21のいずれかの停止中コントローラ210が選択される(2N2Cモード)。選択した停止中コントローラ210により二重化が回復できない場合、障害が発生したコントローラ210のノード21と異なるノード21の停止中コントローラ210がさらに選択される(2N2Cモード)。
【0080】
次に、二重化回復制御プログラム317は、起動対象コントローラに起動指令を発行する(S1202)。次に、二重化回復制御プログラム317は、保持している管理情報において、モジュール状態を、縮退動作状態ST14から二重化回復状態ST15に遷移させる。
【0081】
次に、二重化回復制御プログラム317は、対象コントローラが縮退動作状態であるか、対象コントローラからの状態遷移の通知に基づいて判定する(S1204)。二重化回復制御プログラム317は、対象コントローラが縮退動作状態に遷移するのを待つ(S1204:NO)。対象コントローラが縮退動作状態である場合(S1204:YES)、二重化回復制御プログラム317は、保持している管理情報において、モジュール状態を、二重化回復状態ST15から縮退動作状態ST14に遷移させる(S1205)。
【0082】
以下において、ノード21の状態遷移におけるコントローラ210の処理を説明する。
図13は、
図9を参照して説明したモジュール状態遷移での、コントローラの状態遷移を示す。
【0083】
モジュール状態が通常動作状態ST11であるとき、コントローラの状態は、通常動作状態ST21である。モジュール状態が縮退失敗状態ST18であるとき、何れかのコントローラの状態は、縮退失敗状態ST29である。
【0084】
モジュール状態の通常動作状態ST11から縮退動作状態ST14への遷移において、停止するコントローラ210の状態は、通常動作状態ST21、縮退準備状態ST22、縮退待機状態ST23、そして、停止状態ST25の順に変化する。稼働を維持するコントローラ210の状態は、通常動作状態ST21、縮退準備状態ST22、縮退待機状態ST23、そして、縮退動作状態ST24の順に変化する。
【0085】
モジュール状態の、縮退動作状態ST14と二重化回復状態ST15の間遷移において、起動指示されたコントローラ210のコントローラ状態は、停止状態ST25から縮退動作状態ST24に遷移する。
【0086】
モジュール20、管理装置31からの指示に応じて、縮退動作状態ST14から通常動作状態ST11への遷移するとき、稼働していたコントローラ210は、縮退動作状態ST24から、縮退後始末状態ST28を介して、通常動作状態ST21に遷移する。一方、停止していたコントローラ210は、停止状態ST25から、縮退解除待機状態ST27及び縮退後始末状態ST28を介して、通常動作状態ST21に遷移する。
【0087】
図14A、14Bは、モジュール20が縮退準備状態ST12であるときの、コントローラ状態の組合せ例を示す。
図14Aの状態において、ノード21Aの一方コントローラの状態は縮退準備状態ST22であり、他方コントローラの状態は、通常動作状態ST21である。ノード21Bの一方コントローラの状態は通常動作状態ST21であり、他方コントローラの状態は、縮退待機状態ST23である。
【0088】
図14Bの状態において、ノード21Aの一方コントローラの状態は通常動作状態ST21であり、他方コントローラの状態は、縮退準備状態ST22である。ノード21Bの一方コントローラの状態は縮退待機状態ST23であり、他方コントローラの状態は、通常動作状態ST21である。
【0089】
以下において、各コントローラ210の処理動作をフローチャートを参照して説明する。コントローラ210は、内部において自装置の状態を管理しており、管理装置31からの要求に応じて又は自発的に管理装置31に対して現在の状態を通知する。
【0090】
図15は、コントローラ210の縮退準備制御プログラムA251の処理例を示すフローチャートである。縮退準備制御プログラムA251は、縮退動作状態において停止しているコントローラ210により実行されるプログラムである。縮退準備制御プログラムA251は、コントローラ210を、通常動作状態ST21から縮退失敗状態ST29又は縮退準備状態ST22に遷移させる。
【0091】
まず、縮退準備制御プログラムA251は、予め設定された障害条件基づいて、当該コントローラ210が、縮退動作状態に遷移可能であるか判定する(S501)。遷移不可能と判定される障害条件の例は、コントローラ210が他のコントローラ210との通信に障害を有することである。縮退動作状態に遷移不可能である場合(S501:NO)、縮退準備制御プログラムA251は、当該コントローラ210の状態を縮退失敗状態に遷移させる(S507)。状態遷移は、管理装置31に通知される。
【0092】
いずれの障害条件も成立せず、縮退動作状態に遷移可能である場合(S501:YES)、縮退準備制御プログラムA251は、そのコントローラ状態を、縮退準備状態に遷移させる(S502)。状態遷移は、管理装置31に通知される。
【0093】
次に、縮退準備制御プログラムA251は、自コントローラ210が保持する論理ボリューム制御権の移行先を決定する(S503)。縮退準備制御プログラムA251は、管理装置31又は他のコントローラ210から稼働し続けるコントローラ210の情報を取得し、それらの中から論理ボリューム制御権の移行先を選択する。選択方法は任意であって、例えば、管理装置31を介したユーザ指定に従ってもよく、コントローラ210の負荷を平準化するように選択してもよい。
【0094】
次に、縮退準備制御プログラムA251は、決定した移行先コントローラ210に、論理ボリューム制御権を移行する(S504)。具体的には、制御情報511を更新することで、制御権を保持するコントローラ210が更新される。
【0095】
次に、縮退準備制御プログラムA251は、ダーティキャッシュを退避する(S505)。データ退避は、ダーティキャッシュをドライブボックス40にデステージ又は他の稼働し続けるコントローラ210にコピーする。デステージは、当該コントローラ210が制御権を有する論理ボリュームのデータのみが対象である。他のデータは、二重化ペアのもう一方のコントローラ210によりデステージされる。次に、縮退準備制御プログラムA251は、そのコントローラ状態を、縮退待機状態に遷移させる(S506)。状態遷移は、管理装置31に通知される。
【0096】
図16は、コントローラ210の縮退準備制御プログラムB252の処理例を示すフローチャートである。縮退準備制御プログラムB252は、縮退動作状態において稼働し続けるコントローラ210により実行されるプログラムである。縮退準備制御プログラムB252は、コントローラ210を、通常動作状態ST21から縮退失敗状態ST29又は縮退準備状態ST22に遷移させる。
【0097】
まず、縮退準備制御プログラムB252は、予め設定された障害条件基づいて、当該コントローラ210が、縮退動作状態に遷移可能であるか判定する(S601)。このステップは、
図15のステップS501と同様である。縮退動作状態に遷移不可能である場合(S601:NO)、縮退準備制御プログラムB252は、当該コントローラ210の状態を縮退失敗状態に遷移させる(S608)。状態遷移は、管理装置31に通知される。縮退動作状態に遷移可能である場合(S601:YES)、縮退準備制御プログラムB252は、そのコントローラ状態を、縮退準備状態に遷移させる(S602)。状態遷移は、管理装置31に通知される。
【0098】
次に、縮退準備制御プログラムB252は、ダーティキャッシュを退避する(S603)。二重化されたダーティキャッシュの他方を保持している対応コントローラ210が停止し、かつ、ダーティキャッシュをデステージする場合、縮退準備制御プログラムB252は、自コントローラ210が制御権を保持する論理ボリュームのデータをドライブボックス40にデステージする。また、縮退準備制御プログラムB252は、停止するコントローラ210からダーティキャッシュの必要なコピーを受信する。
【0099】
次に、縮退準備制御プログラムB252は、自コントローラ210が、停止するコントローラ210から制御情報511の移動先であるか判定する(S604)。制御情報511の移行先は、停止するコントローラ210と稼働維持するコントローラ210の組合せに対して、予め各コントローラ210又は管理装置31に設定されている。管理装置31に設定されている場合、管理装置31が移行先を指示する。
【0100】
自コントローラ210が、制御情報511の移動先ではない場合(S604:NO)、本フローは終了する。自コントローラ210が、制御情報511の移動先である場合(S604:YES)、縮退準備制御プログラムB252は、受信した制御情報511を格納するために必要なメモリ領域を計算し、不足するメモリ領域を確保するためのクリーンキャッシュ放棄量を計算する(S605)。
【0101】
なお、制御情報511に加えて、他のコントローラ210のダーティキャッシュを退避するためにクリーンキャッシュを放棄してもよいダーティキャッシュの格納を前提に、制御情報511に必要なメモリ領域を確保するためにクリーンキャッシュが放棄される。
【0102】
縮退準備制御プログラムB252は、必要な量のクリーンキャッシュを放棄(破棄)して、必要な空き領域を確保する(S606)。次に、縮退準備制御プログラムB252は、そのコントローラ状態を、縮退待機状態ST23に遷移させる(S607)。状態遷移は、管理装置31に通知される。
【0103】
図17は、コントローラ210の縮退移行制御プログラム253の処理例を示すフローチャートである。縮退移行制御プログラム253は、停止するコントローラ210により実行される。縮退移行制御プログラム253は、コントローラ210を、縮退待機状態ST23から停止状態ST25に遷移させる。状態遷移は、管理装置31に通知される。
【0104】
縮退移行制御プログラム253は、保持している管理情報において、そのコントローラ状態を停止状態に遷移させる(S701)。次に、縮退移行制御プログラム253は、制御情報511の移行が必要であるか判定する(S702)。当該コントローラ210がオリジナルの制御情報511を保持及び管理している場合、制御情報511の移行が必要である。
【0105】
制御情報511の移行が必要である場合(S702:YES)、縮退移行制御プログラム253は、制御情報511の移行先を決定する(S703)。縮退移行制御プログラム253は、移行先を管理装置31からの指定に応じて決定する又は縮退動作において稼働するコントローラ210の組合せに対して予め指定された移行先を選択する。縮退移行制御プログラム253は、移行先のコントローラ210に制御情報511を送信する(S704)。その後、縮退移行制御プログラム253は、そのコントローラ210の電源をOFFして、停止する(S705)。制御情報511の移行が不要の場合、ステップS703、S704はスキップされる。なお、ノード21の全コントローラ210が停止すると、ノード21の電源コントローラ(不図示)が、ファン230等の周辺装置を停止する。
【0106】
図18は、コントローラ210の縮退完了確認プログラム254の処理例を示すフローチャートである。縮退移行制御プログラム253は、稼働を維持するコントローラ210により実行される。縮退完了確認プログラム254は、コントローラ210を、縮退待機状態ST23から縮退動作状態ST24に遷移させる。
【0107】
縮退完了確認プログラム254は、そのコントローラ210が、制御情報移行先であるか判定する(S801)。移行先の判定は、ステップ703で説明した通りである。そのコントローラ210が、制御情報移行先である場合(S801:YES)、縮退完了確認プログラム254は、制御情報移行が完了したか判定する(S802)。縮退完了確認プログラム254は、移行完了を待つ(S802:NO)。
【0108】
移行が完了すると(S802:NO)、縮退完了確認プログラム254は、管理情報におけるコントローラ状態を、縮退動作状態に遷移させる(S803)。縮退完了確認プログラム254は、縮退動作状態への遷移を、管理装置31に通知する。なお、当該コントローラ210が制御情報移行先ではない場合(S801:NO)、ステップS802はスキップされる。
【0109】
図19は、コントローラ210の緊急起動制御プログラム255の処理例を示すフローチャートである。緊急起動制御プログラム255は、縮退動作中に、モジュール20内で稼働しているコントローラ210での停止に応じた管理装置31又は他のコントローラ210からの指示に応答して、起動する。緊急起動制御プログラム255は、そのコントローラ210を、停止状態ST25から縮退動作状態ST24に遷移させる。緊急起動制御プログラム255は、制御情報511等の二重化を回復するための処理を実行する。
【0110】
緊急起動制御プログラム255は、管理情報におけるそのコントローラ状態を停止状態ST25から起動状態に遷移させる(S901)。状態遷移は、管理装置31に通知される。次に、緊急起動制御プログラム255は、制御情報511の複製を行う(S902)。つまり、緊急起動制御プログラム255は、稼働している他のコントローラ210から、制御情報511をコピーする。制御情報511に加えて、ダーティキャッシュが複製されてよい。
【0111】
次に、緊急起動制御プログラム255は、そのコントローラ210に移行する、論理ボリューム制御権を決定する(S905)。論理ボリューム制御権の割当の決定情報は上述の通りである。緊急起動制御プログラム255は、決定した論理ボリュームの制御権を、そのコントローラ210に移行する(S906)。具体的には、制御情報511の制御権についての情報が更新される。次に、緊急起動制御プログラム255は、管理情報におけるそのコントローラ状態を縮退動作状態ST24に遷移させる(S907)。状態遷移は、管理装置31に通知される。
【0112】
図20は、コントローラ210の通常起動制御プログラム256の処理例を示すフローチャートである。通常起動制御プログラム256は、障害なく正常な状態において、管理装置31からの縮退解除指示に応じて起動する。通常起動制御プログラム256は、コントローラ210を、停止状態ST25から縮退解除待機状態ST27に遷移させる。
【0113】
通常起動制御プログラム256は、管理情報におけるそのコントローラ状態を、停止状態ST25から縮退解除待機状態ST27に遷移させる(S1001)。状態遷移は、管理装置31に通知される。
【0114】
図21は、コントローラ210の縮退解除制御プログラム257の処理例を示すフローチャートである。縮退解除制御プログラム257は、通常起動制御プログラム256の後に実行される。縮退解除制御プログラム257は、ノードの縮退状態を解除するための処理を実行する。ノード21は通常動作状態ST11に遷移し、4つのコントローラ210が稼働する。
【0115】
縮退解除制御プログラム257は、縮退動作状態ST24のコントローラ210、及び、通常起動制御プログラム256により停止状態ST25から縮退解除待機状態ST27に変化したコントローラ210それぞれにより実行される。
【0116】
縮退解除制御プログラム257は、管理装置31からの指示に応じて起動する。縮退解除制御プログラム257は、そのコントローラ210を、縮退動作状態ST24又は縮退解除待機状態ST27から、縮退後始末状態ST28を介して、通常動作状態ST21に遷移させる。
【0117】
縮退解除制御プログラム257は、管理情報のそのコントローラ状態を、縮退後始末状態に遷移させる(S1101)。状態遷移は、管理装置31に通知される。次に、縮退解除制御プログラム257は、制御情報移行、つまり、他のコントローラに制御情報511を送信することが必要であるかは判定する(S1102)。通常動作状態ST11において制御情報511を保持及び管理するコントローラ210は、予め指定されており、その情報は管理装置31から与えられる又は各コントローラ210が保持している。
【0118】
移行が必要であれば(S1102:YES)、縮退解除制御プログラム257は、上述のように制御情報移行先を決定する(S1103)。縮退解除制御プログラム257は、制御情報を移行する(S1104)。移行が不要であれば(S1102:NO)、ステップS1103、S1104はスキップされる。
【0119】
次に、縮退解除制御プログラム257は、保持している論理ボリューム制御権がある場合、その中において移行対象の論理ボリューム制御権を決定する(S1105)。論理ボリューム制御権を保持するコントローラ210の決定は上述の通りである。縮退解除制御プログラム257は、必要な論理ボリューム制御権の移行を実行する(S1106)。次に、縮退解除制御プログラム257は、保持する管理情報におけるそのコントローラ状態を、通常動作状態に遷移させる(S1107)。状態遷移は、管理装置31に通知される。
【0120】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0121】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
【0122】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0123】
10 ホスト装置
20 モジュール
21 ノード
32 管理端末
41 ドライブ
210 コントローラ
211 CPU
212 メモリ
213 ホストインタフェース
216 ドライブインタフェース
220 PSU
230 ファン
【手続補正書】
【提出日】2024-06-26
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0015
【補正方法】変更
【補正の内容】
【0015】
各ノード21は、さらに、1又は複数の電源ユニット(PSU)220及び1又は複数の冷却ファン230を含む。PSU及び冷却ファンは、ノード内のコントローラに共有された、停止可能なコンポーネントである。
図1は、例として、二つのPSU220と一つのファン230を示す。二つのPSU2
20は冗長構成を有し、各PSU2
20は、二つのコントローラ210に電力を供給する。
図1において、一つのPSUが例として符号2
20で指示されている。各ノード21の構成要素は、例えば、一つフレーム内に収容されている。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0029
【補正方法】変更
【補正の内容】
【0029】
通常運転モード201A(2N4Cモード)において、モジュール20における4つの全てのコントローラが入出力を実行している。同様に、全てのPSU220及びファン230は、動作している。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0030
【補正方法】変更
【補正の内容】
【0030】
第1縮退運転モード202A(2N2Cモード)において、一つのノード21Aにおける一つのコントローラ210Aは入出力を実行し、他方のコントローラ210Bは停止している(待機状態の例)。さらに、他のノード21Bにおける一つのコントローラ210Aは入出力を実行し、他方のコントローラ210Bは停止している。全てのPSU220及びファン230は、動作している。第1縮退運転モード202Aは、第2縮退運転モード202Bに比較して冗長性の観点から、耐障害性が高い。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0031
【補正方法】変更
【補正の内容】
【0031】
第2縮退運転モード202B(1N2Cモード)において、一つのノード21Aは入出力を実行している。つまり、ノード21Aにおいて、全てのコントローラ210A、210Bは入出力を実行し、さらに、全てのPSU220及びファン230は、動作している。一方、ノード21Bは停止している。つまり、ノード21Bにおいて、全てのコントローラ210A、210Bは停止し、さらに、全てのPSU220及びファン230は、停止している。第2縮退運転モード202Bは、消費電力の点で、第1縮退運転モード202Aより優れている。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0034
【補正方法】変更
【補正の内容】
【0034】
論理ユニット101Aのデータは、物理的にはドライブボックス40Aに格納されている。モジュール20Aのみが、ホスト装置10からドライブボックス40AへのIOを制御する。モジュール20Aは、第1縮退運転モード202Aにあり、それぞれ異なるノードに属する二つのコントローラが動作している。このため、ホスト装置10は、論理ユニット101Aのアクセスが可能である。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0035
【補正方法】変更
【補正の内容】
【0035】
論理ユニット101Bのデータは、物理的にはドライブボックス40Bに格納されている。モジュール20Bのみが、ホスト装置10からドライブボックス40BへのIOを制御する。モジュール20Bは、第2縮退運転モード202Bにあり、共通のノードに属する二つのコントローラが動作している。このため、ホスト装置10は、論理ユニット101Bのアクセスが可能である。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0039
【補正方法】変更
【補正の内容】
【0039】
モジュール20は、状態204から状態205に変化する。状態204において、ノード21Bの一つのコントローラ210Bが停止しており、それ以外の全てのコントローラは通常動作している。なお、ノード21Bのコントローラ210Bは、直前に停止状態に変化したものとする。変化後の状態205において、ノード21Aのコントローラ210Aが停止し、ノード21Bのコントローラ210Bが停止している。他の二つのコントローラは通常動作している。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0082
【補正方法】変更
【補正の内容】
【0082】
以下において、
モジュール20の状態遷移におけるコントローラ210の処理を説明する。
図13は、
図9を参照して説明したモジュール状態遷移での、コントローラの状態遷移を示す。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0106
【補正方法】変更
【補正の内容】
【0106】
図18は、コントローラ210の縮退完了確認プログラム254の処理例を示すフローチャートである。
縮退完了確認プログラム254は、稼働を維持するコントローラ210により実行される。縮退完了確認プログラム254は、コントローラ210を、縮退待機状態ST23から縮退動作状態ST24に遷移させる。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0108
【補正方法】変更
【補正の内容】
【0108】
移行が完了すると(S802:YES)、縮退完了確認プログラム254は、管理情報におけるコントローラ状態を、縮退動作状態に遷移させる(S803)。縮退完了確認プログラム254は、縮退動作状態への遷移を、管理装置31に通知する。なお、当該コントローラ210が制御情報移行先ではない場合(S801:NO)、ステップS802はスキップされる。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】0114
【補正方法】変更
【補正の内容】
【0114】
図21は、コントローラ210の縮退解除制御プログラム257の処理例を示すフローチャートである。縮退解除制御プログラム257は、通常起動制御プログラム256の後に実行される。縮退解除制御プログラム257は、ノード
20の縮退
動作状態を解除するための処理を実行する。ノード2
0は通常動作状態ST11に遷移し、4つのコントローラ210が稼働する。
【手続補正12】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ストレージシステムであって、
複数ストレージコントローラを含み、
前記複数ストレージコントローラは、管理装置からの指示に応じて、通常運転モードから縮退運転モードへ変化し、
前記複数ストレージコントローラの各ストレージコントローラは、複数状態間を遷移し、
前記複数状態は、
前記通常運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う、通常動作状態と、
前記縮退運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う縮退動作状態と、
ホスト装置とストレージドライブとの間のデータ入出力を停止し、前記通常動作状態及び前記縮退動作状態より低消費電力の待機状態と、を含み、
前記通常運転モードにおいて、前記複数ストレージコントローラの各ストレージコントローラは、前記通常動作状態において動作し、
前記管理装置からの指示に応じた前記通常運転モードから前記縮退運転モードへの変化において、前記複数ストレージコントローラにおいて前記管理装置により指定されたストレージコントローラは前記通常動作状態から前記待機状態に遷移し、前記指定されたストレージコントローラ以外のストレージコントローラは前記通常動作状態から前記縮退動作状態に遷移し、
前記縮退運転モードにおける前記縮退動作状態のストレージコントローラの障害停止を契機として、前記待機状態のストレージコントローラは前記縮退動作状態に遷移する、ストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記複数ストレージコントローラは、モジュールに含まれ、
前記モジュールに含まれるストレージコントローラの数は4であり、
前記モジュールは第1ノード及び第2ノードを含み、
前記4つのストレージコントローラの内の2つのストレージコントローラは前記第1ノードに含まれ、前記4つのストレージコントローラの内の他の2つのストレージコントローラは前記第2ノードに含まれ、
前記4つのストレージコントローラは、前記通常動作状態及び前記縮退動作状態において、共通のホスト装置と共通のストレージドライブとの間のデータ入出力を実行可能である、ストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記縮退運転モードにおいて、
前記縮退動作状態のストレージコントローラと、前記通常運転モードにおいて前記複数ストレージコントローラとホストパスを介して通信する全てのホスト装置との間に、ホストパスが存在し、
前記縮退動作状態のストレージコントローラと、前記通常運転モードにおいて前記複数ストレージコントローラとドライブパスを介して通信する全てのストレージドライブとの間に、ドライブパスが存在する、ストレージシステム。
【請求項4】
請求項2に記載のストレージシステムであって、
前記第1ノード及び前記第2ノードの各ノードは、各ノードの前記2つのストレージコントローラに共有されたコンポーネントを含み、
前記待機状態は、電力供給が停止された停止状態であり、
前記第1ノード及び前記第2ノードの各ノードは、各ノードの前記2つのストレージコントローラが前記停止状態であるとき、前記コンポーネントを停止する、ストレージシステム。
【請求項5】
請求項2に記載のストレージシステムであって、
前記縮退運転モードは、第1縮退運転モード及び第2縮退運転モードの一方であり、
前記第1縮退運転モードは、
前記第1ノードの1つのストレージコントローラを前記待機状態にし、前記第1ノードの他の1つのストレージコントローラを前記縮退動作状態にし、
前記第2ノードの1つのストレージコントローラを前記待機状態にし、前記第2ノードの他の1つのストレージコントローラを前記縮退動作状態にし、
前記第2縮退運転モードは、前記第1ノードの2つのストレージコントローラを前記待機状態にし、前記第2ノードの2つのストレージコントローラを前記縮退動作状態にする、ストレージシステム。
【請求項6】
請求項2に記載のストレージシステムであって、
1以上の論理ボリュームが管理され、
前記1以上の論理ボリュームの各論理ボリュームの制御権は、前記複数ストレージコントローラの担当ストレージコントローラに付与されており、
前記1以上の論理ボリュームの各論理ボリュームのデータ入出力は、前記担当ストレージコントローラに排他的に制御され、
前記担当ストレージコントローラが前記縮退運転モードにおいて前記待機状態に遷移する場合、付与されている前記制御権は、前記縮退動作状態のストレージコントローラに移行される、ストレージシステム。
【請求項7】
請求項1に記載のストレージシステムであって、
前記通常運転モードにおいて、前記複数ストレージコントローラの一部のストレージコントローラは前記ストレージシステムの制御情報を保持及び管理し、前記複数ストレージコントローラの他のストレージコントローラは、前記制御情報を前記一部のストレージコントローラから取得し、
前記一部のストレージコントローラの1つのストレージコントローラが前記縮退運転モードにおいて前記待機状態に遷移する場合、前記1つのストレージコントローラの前記制御情報は、前記縮退動作状態のストレージコントローラに移行される、ストレージシステム。
【請求項8】
請求項7に記載のストレージシステムであって、
前記制御情報を移行されるストレージコントローラのメモリの空き領域が前記制御情報を格納するために不足している場合、前記メモリのクリーンキャッシュを放棄することで前記制御情報を格納するための領域が確保される、ストレージシステム。
【請求項9】
請求項1に記載のストレージシステムであって、
前記縮退運転モードにおいて前記待機状態に遷移するストレージコントローラが保持しているダーティキャッシュは、前記ストレージドライブにデステージされる又は前記縮退動作状態のストレージコントローラに移行される、ストレージシステム。
【請求項10】
ストレージシステムの制御方法であって、
前記ストレージシステムは、複数ストレージコントローラを含み、
前記複数ストレージコントローラは、管理装置からの指示に応じて、通常運転モードから縮退運転モードへ変化し、
前記複数ストレージコントローラの各ストレージコントローラは、複数状態間を遷移し、
前記複数状態は、
前記通常運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う、通常動作状態と、
前記縮退運転モードにおいて1以上のホスト装置と1以上のストレージドライブとの間のデータ入出力を行う縮退動作状態と、
ホスト装置とストレージドライブとの間のデータ入出力を停止し、前記通常動作状態及び前記縮退動作状態より低消費電力の待機状態と、を含み、
前記制御方法は、
前記通常運転モードにおいて、前記複数ストレージコントローラの各ストレージコントローラが、前記通常動作状態において動作し、
前記管理装置からの指示に応じた前記通常運転モードから前記縮退運転モードへの変化において、前記複数ストレージコントローラにおいて前記管理装置により指定されたストレージコントローラが前記通常動作状態から前記待機状態に遷移し、前記指定されたストレージコントローラ以外のストレージコントローラが前記通常動作状態から前記縮退動作状態に遷移し、
前記縮退運転モードにおける前記縮退動作状態のストレージコントローラの障害停止を契機として、前記待機状態のストレージコントローラが前記縮退動作状態に遷移する、制御方法。