IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2024-172391ストレージコントローラ及びストレージコントローラの制御方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024172391
(43)【公開日】2024-12-12
(54)【発明の名称】ストレージコントローラ及びストレージコントローラの制御方法
(51)【国際特許分類】
   G06F 3/06 20060101AFI20241205BHJP
   G06F 11/20 20060101ALI20241205BHJP
   G06F 13/10 20060101ALI20241205BHJP
【FI】
G06F3/06 306Z
G06F11/20 617
G06F13/10 340B
G06F3/06 301J
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023090084
(22)【出願日】2023-05-31
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】室谷 智也
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034CC06
(57)【要約】
【課題】ホストを停止することなく、またホストからのIO処理に係るデータを消失させることなくストレージコントローラの交換を可能にする。
【解決手段】ストレージコントローラ1は、ポート管理テーブル171に、コントローラ部15bにおける第2アドレス情報とホストとの第2ホストパス定義に加えて、コントローラ部15aにおける第1アドレス情報とホストとの第1ホストパス定義を設定する。ストレージコントローラ1は、ルート管理テーブル131に、入力ポートと第2アドレス情報のポート19が接続される第2出力ポートとの間の第2接続ルートに加えて、入力ポートと第1アドレス情報のポート19が接続される第1出力ポートとの間の第1接続ルートを設定する。そしてストレージコントローラ1は、ポート管理テーブル171及びルート管理テーブル131に基づいてIOをコントローラ部15a又はコントローラ部15bに転送する。
【選択図】図7
【特許請求の範囲】
【請求項1】
ホストからのIOを受付けるスイッチ部と、該スイッチ部によって受付けられた該IOを処理してディスク装置に対してデータの入出力を実行する第1ストレージ制御装置及び第2ストレージ制御装置と、を有するストレージコントローラであって、
前記スイッチ部は、
前記ホストからの前記IOが入力される入力ポートと、前記第1ストレージ制御装置及び前記第2ストレージ制御装置のそれぞれが有するポートに対して該IOを出力する出力ポートと、を有し、
前記ストレージコントローラが有する記憶部は、
前記ホストが前記IOを送信する送信先の前記ポートが持つアドレス情報と、該ホストと、の対応関係を示すホストパス定義情報を、前記第1ストレージ制御装置及び前記第2ストレージ制御装置毎に管理するポート管理情報と、
前記スイッチ部内で前記入力ポートと、前記アドレス情報を持つ前記ポートと接続される前記出力ポートと、を接続して前記IOを転送する接続ルートを管理するルート管理情報と、を記憶し、
前記ストレージコントローラが有するプロセッサは、
前記第2ストレージ制御装置の停止指示を受付け、
前記第2ストレージ制御装置が有する前記ポートが持つ前記アドレス情報を示す第2アドレス情報を、前記第1ストレージ制御装置が有する前記ポートが持つ前記アドレス情報を示す第1アドレス情報に変換し、
前記ポート管理情報に、前記第2ストレージ制御装置における前記第2アドレス情報と前記ホストとの前記ホストパス定義情報を示す第2ホストパス定義に加えて、前記第1ストレージ制御装置における前記第1アドレス情報と該ホストとの前記ホストパス定義情報を示す第1ホストパス定義を設定し、
前記ルート管理情報に、前記入力ポートと前記第2アドレス情報を持つ前記ポートが接続される前記出力ポートである第2出力ポートとの間の前記接続ルートを示す第2接続ルートに加えて、該入力ポートと前記第1アドレス情報を持つ前記ポートが接続される前記出力ポートである第1出力ポートとの間の前記接続ルートを示す第1接続ルートを設定し、
前記ルート管理情報に基づいて前記スイッチ部を制御し、前記ポート管理情報に基づいて前記第1ストレージ制御装置及び前記第2ストレージ制御装置を制御して、前記IOを前記第1ストレージ制御装置又は前記第2ストレージ制御装置に転送する
ことを特徴とするストレージコントローラ。
【請求項2】
請求項1に記載のストレージコントローラであって、
前記プロセッサは、
前記第1ストレージ制御装置が有する前記ポートの中から負荷が最小の第1ポートと負荷が2番目に小さい第2ポートの2個の前記ポートを選択し、
前記第1ポートに入力される前記IOと、前記第2ポートに入力される前記IOと、を共に該第2ポートに入力されるように集約し、
前記第2アドレス情報を、前記第1アドレス情報として前記第1ポートに係る前記アドレス情報に変換し、
前記第1ポートに係る前記アドレス情報に基づいて前記ポート管理情報に前記第1ホストパス定義を設定し、
前記第1ポートに係る前記アドレス情報に基づいて前記ルート管理情報に前記第1接続ルートを設定する
ことを特徴とするストレージコントローラ。
【請求項3】
請求項1又は2に記載のストレージコントローラであって、
前記プロセッサは、
前記第1ホストパス定義と前記第1接続ルートが設定される以前から前記入力ポートに入力されて前記第2ストレージ制御装置での処理が未完の前記IOの識別情報を管理テーブルに記録し、
前記IO毎に該IOの識別情報が前記管理テーブルに記録されているか否かを判定し、
前記IOの識別情報が前記管理テーブルに記録されている場合に、該IOを前記第2接続ルートを経由して前記第2ストレージ制御装置に出力し、
前記IOの識別情報が前記管理テーブルに記録されていない場合に、該IOを前記第1接続ルートを経由して前記第1ストレージ制御装置に出力する
ことを特徴とするストレージコントローラ。
【請求項4】
請求項3に記載のストレージコントローラであって、
前記プロセッサは、
前記管理テーブルに前記識別情報が記録されている前記IOが存在しなくなると、
前記ポート管理情報から前記第2ホストパス定義を削除し、
前記ルート管理情報から前記第2接続ルートを削除する
ことを特徴とするストレージコントローラ。
【請求項5】
請求項4に記載のストレージコントローラであって、
前記プロセッサは、
前記第2ストレージ制御装置の起動指示を受付け、
前記ポート管理情報において、前記第2アドレス情報と前記第1アドレス情報との変換情報に基づいて、前記第1ホストパス定義から前記第2アドレス情報を復原し、
前記ルート管理情報において、前記第2アドレス情報と前記第1アドレス情報との変換情報に基づいて、前記第1接続ルートから前記第2接続ルートを復原し、
前記ポート管理情報及び前記ルート管理情報に従って、前記IOを前記第1ストレージ制御装置又は前記第2ストレージ制御装置に転送する
ことを特徴とするストレージコントローラ。
【請求項6】
請求項5に記載のストレージコントローラであって、
前記プロセッサは、
前記第2ホストパス定義と前記第2接続ルートが復原される以前から前記入力ポートに入力されて前記第1ストレージ制御装置での処理が未完の前記IOの識別情報を管理テーブルに記録し、
前記IO毎に該IOの識別情報が前記管理テーブルに記録されているか否かを判定し、
前記IOの識別情報が前記管理テーブルに記録されている場合に、該IOを前記第1接続ルートを経由して前記第1ストレージ制御装置に出力し、
前記IOの識別情報が前記管理テーブルに記録されていない場合に、該IOを前記第2接続ルートを経由して前記第2ストレージ制御装置に出力する
ことを特徴とするストレージコントローラ。
【請求項7】
請求項6に記載のストレージコントローラであって、
前記プロセッサは、
前記管理テーブルに前記識別情報が記録されている前記IOが存在しなくなると、
前記ポート管理情報から前記第1ホストパス定義を削除し、
前記ルート管理情報から前記第1接続ルートを削除する
ことを特徴とするストレージコントローラ。
【請求項8】
ホストからのIOを受付けるスイッチ部と、該スイッチ部によって受付けられた該IOを処理してディスク装置に対してデータの入出力を実行する第1ストレージ制御装置及び第2ストレージ制御装置と、を有するストレージコントローラが実行するストレージコントローラの制御方法であって、
前記スイッチ部は、
前記ホストからの前記IOが入力される入力ポートと、前記第1ストレージ制御装置及び前記第2ストレージ制御装置のそれぞれが有するポートに対して該IOを出力する出力ポートと、を有し、
前記ストレージコントローラが有する記憶部は、
前記ホストが前記IOを送信する送信先の前記ポートが持つアドレス情報と、該ホストと、の対応関係を示すホストパス定義情報を、前記第1ストレージ制御装置及び前記第2ストレージ制御装置毎に管理するポート管理情報と、
前記スイッチ部内で前記入力ポートと、前記アドレス情報を持つ前記ポートと接続される前記出力ポートと、を接続して前記IOを転送する接続ルートを管理するルート管理情報と、を記憶し、
前記ストレージコントローラが有するプロセッサが、
前記第2ストレージ制御装置の停止指示を受付け、
前記第2ストレージ制御装置が有する前記ポートが持つ前記アドレス情報を示す第2アドレス情報を、前記第1ストレージ制御装置が有する前記ポートが持つ前記アドレス情報を示す第1アドレス情報に変換し、
前記ポート管理情報に、前記第2ストレージ制御装置における前記第2アドレス情報と前記ホストとの前記ホストパス定義情報を示す第2ホストパス定義に加えて、前記第1ストレージ制御装置における前記第1アドレス情報と該ホストとの前記ホストパス定義情報を示す第1ホストパス定義を設定し、
前記ルート管理情報に、前記入力ポートと前記第2アドレス情報を持つ前記ポートが接続される前記出力ポートである第2出力ポートとの間の前記接続ルートを示す第2接続ルートに加えて、該入力ポートと前記第1アドレス情報を持つ前記ポートが接続される前記出力ポートである第1出力ポートとの間の前記接続ルートを示す第1接続ルートを設定し、
前記ルート管理情報に基づいて前記スイッチ部を制御し、前記ポート管理情報に基づいて前記第1ストレージ制御装置及び前記第2ストレージ制御装置を制御して、前記IOを前記第1ストレージ制御装置又は前記第2ストレージ制御装置に転送する
各処理を有することを特徴とするストレージコントローラの制御方法。
【請求項9】
請求項8に記載のストレージコントローラの制御方法であって、
前記プロセッサが、
前記第1ストレージ制御装置が有する前記ポートの中から負荷が最小のポートと2番目に小さいポートの2個のポートを選択し、
前記2個のポートのうちの前記最小のポートに入力される前記IOと、前記2番目に小さいポートに入力される前記IOと、を該2番目に小さいポートに集約し、
前記第2アドレス情報を、前記第1アドレス情報として前記最小のポートに係る前記アドレス情報に変換し、
前記最小のポートに係る前記アドレス情報に基づいて前記ポート管理情報に前記第1ホストパス定義を設定し、
前記最小のポートに係る前記アドレス情報に基づいて前記ルート管理情報に前記第1接続ルートを設定する
各処理を有することを特徴とするストレージコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージコントローラ及びストレージコントローラの制御方法に関する。
【背景技術】
【0002】
従来から、ストレージ装置において、ホストからのIO(Input Output)を処理するストレージコントローラを冗長に構成することが行われている。ホストとストレージコントローラの接続を冗長構成とすることで、一方のストレージコントローラに異常が発生した場合に他方のストレージコントローラでIO処理を継続することができる。
【0003】
例えば特許文献1には、サーバ装置に対して冗長に接続されたストレージ制御装置の一方が故障した際、サーバ装置と故障したストレージ制御装置の接続パスを、サーバ装置と故障していないストレージ制御装置の新たな接続パスへ切り替える技術が開示されている。このように接続パスを切り替えることで、故障したストレージ制御装置を再起動により復帰させる際の接続パスの切断の影響を限定的とすることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2017-010390号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ストレージコントローラは、性能向上や故障交換のために抜去されて新たなストレージコントローラで置換えられることがある。ストレージコントローラが冗長に接続されたストレージシステムでは、上述の特許文献1に開示の技術を適用することで、故障していない一方のストレージコントローラに故障した他方のストレージコントローラへのIOを集約できる。このようにした上で、故障した他方のストレージコントローラを交換することで、ホストからのIO処理を継続しつつストレージコントローラを交換できる。
【0006】
しかし、特許文献1に開示の技術では、ホストからのIO処理を継続しつつストレージコントローラを交換できるものの、ホストと交換対象のストレージコントローラの接続パスの切替えの際に接続断が生じ、IO処理に係るデータが消失するおそれがあった。
【0007】
また顧客のホストがストレージコントローラとの接続を冗長構成にできない場合には、そもそも特許文献1に開示の技術を適用してストレージコントローラの交換を行うことはできない。すなわちホストを停止させた上でストレージコントローラの交換を行うことになる。
【0008】
本発明は、上記を考慮してなされたものであり、ホストを停止することなく、またホストからのIOに係るデータを消失させることなくストレージコントローラの交換を可能にすることを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決する一態様として、ホストからのIOを受付けるスイッチ部と、該スイッチ部によって受付けられた該IOを処理してディスク装置に対してデータの入出力を実行する第1ストレージ制御装置及び第2ストレージ制御装置と、を有するストレージコントローラであって、前記スイッチ部は、前記ホストからの前記IOが入力される入力ポートと、前記第1ストレージ制御装置及び前記第2ストレージ制御装置のそれぞれが有するポートに対して該IOを出力する出力ポートと、を有し、前記ストレージコントローラが有する記憶部は、前記ホストが前記IOを送信する送信先の前記ポートが持つアドレス情報と、該ホストと、の対応関係を示すホストパス定義情報を、前記第1ストレージ制御装置及び前記第2ストレージ制御装置毎に管理するポート管理情報と、前記スイッチ部内で前記入力ポートと、前記アドレス情報を持つ前記ポートと接続される前記出力ポートと、を接続して前記IOを転送する接続ルートを管理するルート管理情報と、を記憶し、前記ストレージコントローラが有するプロセッサは、前記第2ストレージ制御装置の停止指示を受付け、前記第2ストレージ制御装置が有する前記ポートが持つ前記アドレス情報を示す第2アドレス情報を、前記第1ストレージ制御装置が有する前記ポートが持つ前記アドレス情報を示す第1アドレス情報に変換し、前記ポート管理情報に、前記第2ストレージ制御装置における前記第2アドレス情報と前記ホストとの前記ホストパス定義情報を示す第2ホストパス定義に加えて、前記第1ストレージ制御装置における前記第1アドレス情報と該ホストとの前記ホストパス定義情報を示す第1ホストパス定義を設定し、前記ルート管理情報に、前記入力ポートと前記第2アドレス情報を持つ前記ポートが接続される前記出力ポートである第2出力ポートとの間の前記接続ルートを示す第2接続ルートに加えて、該入力ポートと前記第1アドレス情報を持つ前記ポートが接続される前記出力ポートである第1出力ポートとの間の前記接続ルートを示す第1接続ルートを設定し、前記ルート管理情報に基づいて前記スイッチ部を制御し、前記ポート管理情報に基づいて前記第1ストレージ制御装置及び前記第2ストレージ制御装置を制御して、前記IOを前記第1ストレージ制御装置又は前記第2ストレージ制御装置に転送することを特徴とする。
【発明の効果】
【0010】
本発明によれば、ホストを停止することなく、またホストからのIOに係るデータを消失させることなくストレージコントローラの交換ができる。
【図面の簡単な説明】
【0011】
図1】実施形態1に係るストレージシステムの構成を示す図。
図2A】実施形態1に係るポート管理テーブルの構成を示す図。
図2B】実施形態1に係るルート管理テーブルの構成を示す図。
図2C】実施形態1に係るOX_ID管理テーブルの構成を示す図。
図3A】実施形態1に係るコントローラ部への接続ルートの切替前のストレージコントローラを示す図。
図3B】実施形態1に係るポート管理テーブルの状態を示す図。
図3C】実施形態1に係るルート管理テーブルの状態を示す図。
図4A】実施形態1に係るコントローラ部への接続ルートの切替動作中(前半)のストレージコントローラを示す図。
図4B】実施形態1に係るポート管理テーブルの状態を示す図。
図4C】実施形態1に係るルート管理テーブルの状態を示す図。
図5】実施形態1に係るコントローラ部への接続ルートの切替動作中(後半)のストレージコントローラを示す図。
図6A】実施形態1に係るコントローラ部への接続ルートの切替動作完了後のストレージコントローラを示す図。
図6B】実施形態1に係るポート管理テーブルの状態を示す図。
図6C】実施形態1に係るルート管理テーブルの状態を示す図。
図7】実施形態1に係る旧コントローラの停止処理を示すシーケンス図。
図8】実施形態1に係る切替え処理を示すフローチャート。
図9】実施形態1に係る新コントローラの起動処理を示すシーケンス図。
図10A】実施形態2に係るコントローラ部の接続ルートの切替前のストレージコントローラを示す図。
図10B】実施形態2に係るポート管理テーブルの状態を示す図。
図10C】実施形態2に係るルート管理テーブルの状態を示す図。
図11A】実施形態2に係るコントローラ部内での接続ルートの切替動作中(前半)のストレージコントローラを示す図。
図11B】実施形態2に係るポート管理テーブルの状態を示す図。
図11C】実施形態2に係るルート管理テーブルの状態を示す図。
図12】実施形態2に係るコントローラ部内での接続ルートの切替動作中(後半)のストレージコントローラを示す図。
図13A】実施形態2に係るコントローラ部内での接続ルートの切替動作後のストレージコントローラ1を示す図。
図13B】実施形態2に係るポート管理テーブルの状態を示す図。
図13C】実施形態2に係るルート管理テーブルの状態を示す図。
図14】実施形態2に係る旧ストレージコントローラの停止処理を示すシーケンス図。
図15】実施形態2に係る低負荷判定・パス選択処理を示すフローチャート。
図16】実施形態2に係る新ストレージコントローラの起動処理を示すシーケンス図。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。本実施形態における各構成要素の数は、注記がない限り、限定されない。
【0013】
以下の説明では、同一の構成要素を、区別して説明する場合には添え字を含んだ符号を用い、区別せず説明する場合には添え字を除外した符号を用いる。例えばコントローラ部15a,15bを区別して説明する場合には、添え字a,bを含んだ符号15a,15bを用い、区別せず説明する場合には添え字を除外した符号15を用いる。
【0014】
以下の説明では、プログラムが行う処理について説明する場合がある。コンピュータは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))により、主記憶装置のメモリ等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。プロセッサがプログラムを実行することで、処理を行う機能部が実現される。
【0015】
同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。専用回路は、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)等である。
【0016】
以下の説明では、プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読取り可能な非一時的な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源(ストレージ)を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0017】
以下の説明では、テーブル形式で各種データを説明する。しかしデータ形式はテーブル形式に限られず、キュー、リスト、CSV(Comma Separated Value)といった他のデータ形式であってもよい。各種データは、データ形式に依存しないため、「~テーブル」は、「~情報」と表現できる。
【0018】
[実施形態1]
実施形態1では、2つのコントローラのうちのアップグレード(旧世代のコントローラを抜去し、新世代のコントローラを挿入する)の対象のコントローラへのIOを他方のコントローラの最も負荷が軽いポートへ片寄せする。その上で、アップグレード対象のコントローラを停止し、アップグレード対象のコントローラを抜去してアップグレード後のコントローラを起動する。
【0019】
本実施形態では、“IO”とは、ホストからストレージ装置へのデータの入出力のためのリクエスト及びコマンドの送信、及びリクエスト又はコマンドに応じたホストとストレージ装置の間のデータの送受信をいう。
【0020】
(ストレージシステムSの構成)
図1は、実施形態1に係るストレージシステムSの構成を示す図である。ストレージシステムSは、ストレージ装置100及びホスト3を含んで構成される。ストレージ装置100及びホスト3は、ネットワークNを介して接続される。ネットワークNは、1又は複数のスイッチを含んだSAN(Storage Area Network)あるいはネットワーク装置を介さず接続ケーブルのみで構成される通信ネットワークである。
【0021】
ストレージ装置100は、ストレージコントローラ1及びディスク装置2a,2bを含んで構成される。図1では、ストレージ装置100にディスク装置2aが接続され、ディスク装置2aにディスク装置2bが接続される階層構造を示す。しかしこれに限らず、ストレージ装置100内のディスク装置2は、他の接続構成でもよい。
【0022】
ストレージコントローラ1は、スイッチ部11及び2つ以上のコントローラ部15a,15bを含んで構成される。コントローラ部15aは、第1ストレージ制御装置の一例である。コントローラ部15bは、第2ストレージ制御装置の一例である。
【0023】
スイッチ部11は、CPU12、キャッシュメモリ13、及び複数のポート14を含んで構成される。CPU12は、切替プログラム121を実行する。キャッシュメモリ13は、揮発性又は不揮発性の記憶部であり、ルート管理テーブル131を格納する。
【0024】
複数のポート14は、ネットワークNとコントローラ部15を接続するための通信ポートである。ポート14には、ネットワークNと接続される入力ポート14A(ポート#1~#8)と、コントローラ部15と接続される出力ポート14B(ポート#9~#16)がある。
【0025】
切替プログラム121は、入力ポート14A(ポート#1~#8)と出力ポート14B(ポート#9~#16)の接続を切り替える。切替プログラム121は、入力ポート14A(ポート#1~#8)と出力ポート14B(ポート#9~#16)の接続ルートを示す接続情報をルート管理テーブル131で管理する。
【0026】
コントローラ部15は、MPB16、キャッシュメモリ17、接続部18、複数のポート19、及びディスクアダプタ20を含んで構成される。本実施形態では、ストレージコントローラ1は、2つのコントローラ部15a,15bを有する。
【0027】
MPB(Micro Processor Package Board)16は、CPU等のプロセッサ及びメモリを搭載したボードで構成され、ポート19とディスクアダプタ20の制御、及びキャッシュメモリ17の制御を行う。またMPB16のCPUは、制御プログラム161を実行する。
【0028】
キャッシュメモリ17は、揮発性又は不揮発性の記憶部であり、ホスト3から受信したデータや、ディスク装置2から読み出されたデータを記憶する。またキャッシュメモリ17は、ポート管理テーブル171を格納する。コントローラ部15a,15bは、ポート管理テーブル171を共有する。
【0029】
なおスイッチ部11のキャッシュメモリ13及びコントローラ部15のキャッシュメモリ17は、ストレージコントローラ1が有する記憶部の一例であり、ルート管理テーブル131とポート管理テーブル171は、何れのキャッシュメモリに配置されてもよい。
【0030】
接続部18は、MPB16、キャッシュメモリ17、ポート19及びディスクアダプタ20を相互に接続させる。また接続部18は、自身が配置されるコントローラ部15以外の他のコントローラ部15の接続部18と通信を行い、自身が配置されるコントローラ部15に他のコントローラ部15の各構成要素に対してアクセスさせる。接続部18は、例えば高速スイッチング動作によってデータ伝送を行うクロスバースイッチのような高速バスとして構成することができる。
【0031】
複数のポート19は、スイッチ部11と接続するための通信ポートである。コントローラ部15は、ポート19を介して外部の装置とデータ通信を行う。各ポート19には、ネットワークN内で各ポート19を識別するためのアドレス情報(例えばWWN)が割り当てられている。ポート19のアドレス情報は、ネットワークNがFibre Channel、SAS(Serial Attached SCSI)、iSCSI等のSANである場合には、WWN(World Wide Name)である。しかしこれに限らず、アドレス情報は、ネットワークN内でポート19を識別可能な情報であれば何れでもよい。
【0032】
ディスクアダプタ20は、通信ポート(不図示)を介してディスク装置2と通信する。ディスクアダプタ20は、CPUやメモリ等を有するマイクロコンピュータとして構成されている。ディスクアダプタ20は、複数のポート19を介してキャッシュメモリ17に書き込まれたデータをディスク装置2のディスク21に書込んだり、ディスク21から読み出したデータをキャッシュメモリ17に書込んだりする。
【0033】
またディスクアダプタ20は、データ入出力を行う際に、データの論理的なアドレスを物理的なアドレスに変換する。
【0034】
ディスク装置2は、アレイ状に配列されたHHD(Hard Disk Drive)やSSD(Solid State Drive)、フレキシブルディスク、光ディスク等の複数のディスク21、及びI/Oインターフェース22を有する。ディスク21として、磁気テープ、半導体メモリ(例えばフラッシュメモリ)を用いることもできる。
【0035】
I/Oインターフェース22は、コントローラ部15又は他のディスク装置2と通信を行うためのインターフェースである。
【0036】
ホスト3は、CPUやメモリ等の情報処理資源と、ホストバスアダプタ33を有するコンピュータ装置である。ホスト3は、CPUで稼働するOS(Operating System)32上で動作するアプリケーション31によって、ストレージ装置100に対してホストバスアダプタを介してデータのIOを発行する。
【0037】
なおストレージコントローラ1内において、スイッチ部11のCPU12、コントローラ部15のMPB16に搭載されるCPUは、何れも相互に通信可能であり、また必要に応じてルート管理テーブル131、及びポート管理テーブル171を参照できる。
【0038】
なおスイッチ部11のCPU12及びコントローラ部15のMPB16に搭載されるCPUは、ストレージコントローラ1が有するプロセッサの一例である。本実施形態で説明するCPU12とMPB16に搭載されるCPUの各処理機能は、何れのCPUも行うことができるように適宜設計変更可能である。
【0039】
(ポート管理テーブル171の構成)
図2Aは、実施形態1に係るポート管理テーブル171の構成を示す図である。ポート管理テーブル171は、「CTL#」「Port」「Address」「負荷」「ホスト定義」「LU定義」の列を有する。
【0040】
「CTL#」は、コントローラ部15の識別情報である。「Port」は、該当レコードのポート19と接続されるスイッチ部11のコントローラ部15側のポート14(ポート#9~#16)の識別情報である。「Address」は、「CTL#」及び「Port」で識別されるポート19のWWNを示す。
【0041】
「負荷」は、「CTL#」及び「Port」で識別されるポート19の負荷を示す。「ホスト定義」は、「CTL#」及び「Port」で識別されるポート19を介してコントローラ部15と接続されるホスト3の識別情報である。「LU定義」は、「CTL#」及び「Port」で識別されるポート19を介して接続されるディスク装置2の論理的な記憶領域の識別情報である。
【0042】
すなわちポート管理テーブル171は、ホスト3がIOを送信する送信先のポート19が持つアドレス情報(WWN)と、ホスト3と、の対応関係を示すホストパス定義情報を、コントローラ部15a及びコントローラ部15b毎に管理する。
【0043】
(ルート管理テーブル131の構成)
図2Bは、実施形態1に係るルート管理テーブル131の構成を示す図である。ルート管理テーブル131は、「Port」「ストレージターゲットWWN」「接続ルート」「変換の有無」の列を有する。
【0044】
「Port」は、出力ポート14B(ポート#9~#16)の識別情報である。「ストレージターゲットWWN」は、「Port」で識別される出力ポート14Bが接続されるポート19のWWNを示す。「ストレージターゲットWWN」は、「Port」で識別される出力ポート14Bとポート19の接続が定義されていない場合には、空欄となる。
【0045】
「接続ルート」は、入力ポート14A(ポート#1~#8)と出力ポート14B(ポート#9~#16)の接続ルートが定義されている場合に、接続ルートを示す接続情報が格納される。「接続ルート」は、接続ルートが定義されていない場合には、空欄となる。
【0046】
「変換の有無」は、該当のレコードが、スイッチ部11内での「ストレージターゲットWWN」の変換後の接続ルートを示す場合に“変換あり”が格納され、変換前の接続ルートを示す場合に空欄となる。
【0047】
すなわちルート管理テーブル131は、スイッチ部11内で入力ポート14Aと、アドレス情報(WWN)を持つポート19と接続される出力ポート14Bと、を接続してIOを転送する接続ルートを管理する。
【0048】
(OX_ID管理テーブル132の構成)
図2Cは、実施形態1に係るOX_ID管理テーブル132の構成を示す図である。OX_ID管理テーブル132は、スイッチ部11のキャッシュメモリ13に格納され、未完了のホスト3からのIOを管理する。OX_ID管理テーブル132は、「Port」「未完了IOのOX_ID」「完了フラグ」「削除可能」の列を有する。
【0049】
「Port」は、ホスト3から入力されたIOの処理中に、コントローラ部15側のポート14(ポート#9~#16)との接続ルートが切り替えられたネットワークN側のポート14(ポート#1~#8)の識別情報を示す。
【0050】
「未完了IOのOX_ID(Originator eXchange_Identifier)」は、該当の未完了のIOの識別情報である。「完了フラグ」は、該当の未完了のIOが完了した場合に“完了”が入力され、完了していない場合には“未完了”が入力される。「削除可能」は、OX_ID管理テーブル132における該当のレコードの削除可否を示す。
【0051】
(実施形態1に係るストレージコントローラ1の動作概要)
図3A図6Cは、実施形態1に係るストレージコントローラ1の動作概要及び各動作時のポート管理テーブル171とルート管理テーブル131の状態を示す図である。実施形態1では、コントローラ部15a,15bのうちのコントローラ部15bをアップグレードの対象とする。すなわちコントローラ部15bへのIOをコントローラ部15aへ片寄せしてコントローラ部15bを停止し、コントローラ部15bをコントローラ部15b1へアップグレード後、コントローラ部15b1を起動する。
【0052】
(コントローラ部15aへの接続ルートの切替前)
図3Aは、コントローラ部15aへの接続ルートの切替前のストレージコントローラ1を示す図である。接続ルートの切替前のポート管理テーブル171は、図3Bに示すようになっている。また接続ルートの切替前のルート管理テーブル131は、図3Cに示すようになっている。
【0053】
図3Aに示す状態で、コントローラ部15aには、ホストパス定義162a,162b,162c,162dが定義されている。またコントローラ部15bには、ホストパス定義163が定義されている。ホストパス定義162a,162b,162c,162d,163は、ポート管理テーブル171(図3B)のレコード1711,1712,1713,1714,1715にそれぞれ該当する。
【0054】
(実施形態1に係るコントローラ部15aへの接続ルートの切替動作中(前半))
図4Aは、実施形態1に係るコントローラ部15aへの接続ルートの切替動作中(前半)のストレージコントローラ1を示す図である。接続ルートの切替動作中(前半)のポート管理テーブル171は、図4Bに示すようになっている。また接続ルートの切替動作中(前半)のルート管理テーブル131は、図4Cに示すようになっている。
【0055】
コントローラ部15bの制御プログラム161は、コントローラ部15aに対して、ホストパス定義163をコントローラ部15aに設定する更新指示を出力する。コントローラ部15aの制御プログラム161は、各ポート19の負荷の上限を超過しない範囲で、コントローラ部15aの複数のポート19のうちの1つに、ホストパス定義163を設定する。図4Aの例では、コントローラ部15aの制御プログラム161は、コントローラ部15aの複数のポート19のうちの最もポート負荷が小さいポート19(WWN#4)にホストパス定義163を設定する。
【0056】
コントローラ部15aの制御プログラム161は、コントローラ部15aに追加設定したホストパス定義163を、ポート管理テーブル171に反映する。ホストパス定義163が追加設定されたポート19(WWN#4)に係るホストパス定義は、ポート管理テーブル171(図4B)のレコード1716が該当する。
【0057】
レコード1716,1717の「負荷」は、レコード1715(図3B図4B)に係るホストパス定義163が“WWN#4”に追加設定されたことで、“100MB/s”となっている。“100MB/s”は、“WWN#4”の「負荷」“20MB/s”と“WWN#6”の「負荷」“80MB/s”の合計である。図4Bに示すポート管理テーブル171では、レコード1715は、図3Bと同様に維持されている。
【0058】
またコントローラ部15bの制御プログラム161は、スイッチ部11の切替プログラム121に対して、接続ルートの切替指示を出力する。切替プログラム121は、切替指示に従って、コントローラ部15a側の出力ポート14B(ポート#9~#12)に、ホストパス定義163の設定に応じた接続ルート(入力ポート14A(ポート#6)-出力ポート14B(ポート#12))を追加設定する。スイッチ部11は、追加設定された接続ルートとWWNの変換(WWN#6→WWN#4)によって、入力ポート14A(ポート#6)を介して入力されたホストIOをコントローラ部15aに転送するようになる。
【0059】
切替プログラム121は、接続ルートの切替完了後に、接続ルートの切替をルート管理テーブル131に反映する。ホストパス定義163が追加設定されたポート19(WWN#4)に係る接続ルートは、ルート管理テーブル131(図4C)のレコード1312に該当する。
【0060】
レコード1312は、レコード1311(図3C図4C)に係る接続ルートが、WWNの変換(WWN#6→WWN#4)によって、入力ポート14A(ポート#6)-出力ポート14B(ポート#12)の接続ルートとして追加されたことを示す。レコード1312は、WWNの変換を伴うため、「変換の有無」が“変換あり”となる。図4Cに示すルート管理テーブル131では、レコード1311は、図3Cと同様に維持されている。
【0061】
(実施形態1に係るコントローラ部15aへの接続ルートの切替動作中(後半))
図5は、実施形態1に係るコントローラ部15aへの接続ルートの切替動作中(後半)のストレージコントローラ1を示す図である。
【0062】
図5は、図4Aに示すコントローラ部15aへの接続ルートの切替動作の開始以降に入力ポート14A(ポート#6)から新規に入力されるIO(新規IO)をコントローラ部15aに割り振って処理することを示す。コントローラ部15aに割り振る際の接続ルートは、入力ポート14A(ポート#6)-出力ポート14B(ポート#12)である。
【0063】
また図5は、図4Aに示すコントローラ部15aへの接続ルートの切替動作の開始以前に入力ポート14A(ポート#6)から入力された処理が未完のIO(仕掛中IO)をコントローラ部15bに割り振って処理することを示す。コントローラ部15bに割り振る際の接続ルートは、入力ポート14A(ポート#6)-出力ポート14B(ポート#14)である。
【0064】
(実施形態1に係るコントローラ部15aへの接続ルートの切替動作完了後)
図6Aは、実施形態1に係るコントローラ部15aへの接続ルートの切替動作完了後のストレージコントローラ1を示す図である。図5は、仕掛中IOが全てコントローラ部15bに割り振られ処理が完了した状態のストレージコントローラ1を示す。
【0065】
接続ルートの切替動作完了後のポート管理テーブル171は、図6Bに示すようになっている。また接続ルートの切替動作完了後のルート管理テーブル131は、図6Cに示すようになっている。
【0066】
図6Aに示す状態では、コントローラ部15bの制御プログラム161は、コントローラ部15b内のホストパス定義163を削除する定義削除を実行し、ポート管理テーブル171に反映する。ホストパス定義163が削除されたポート19(WWN#6)に係るホストパス定義は、ポート管理テーブル171(図6B)のレコード1718に該当する。レコード1718に示すように、レコード1715(図3B図4B)に係るホストパス定義163は「負荷」“0”、「ホスト定義」及び「LU定義」“未定義”としてクリアされている。その後コントローラ部15bの制御プログラム161は、コントローラ部15bを閉塞(シャットダウン)する。
【0067】
またコントローラ部15bの制御プログラム161は、スイッチ部11の切替プログラム121に対して、接続ルートの解除指示を出力する。切替プログラム121は、解除指示に従って、ホストパス定義163の削除に応じて接続ルート(入力ポート14A(ポート#6)-出力ポート14B(ポート#14))を削除する。スイッチ部11は、以降は、入力ポート14A(ポート#6)を介して入力されたホストIOを、接続ルート(入力ポート14A(ポート#6)-出力ポート14B(ポート#12))でコントローラ部15aのみに転送する。
【0068】
また制御プログラム161は、接続ルートの解除を、ルート管理テーブル131に反映する。解除された接続ルートは、ルート管理テーブル131(図6C)のレコード1313に該当する。レコード1313に示すように、レコード1311(図3C図4C)に係る接続ルートは「接続ルート」及び「変換の有無」を空欄としてクリアされている。
【0069】
(実施形態1に係る旧コントローラの停止処理シーケンス)
図7は、実施形態1に係る旧コントローラの停止処理を示すシーケンス図である。
【0070】
先ずステップS101では、ネットワークNを介してストレージコントローラ1と通信可能な端末t1は、オペレータによる旧コントローラの停止指示を受け付ける。本実施形態では、アップグレード対象の旧コントローラは、コントローラ部15bである。次にステップS102では、端末t1は、受け付けた旧コントローラの停止指示を、旧コントローラに対する相手側のコントローラ部15aの制御プログラム161に送信する。
【0071】
次にステップS103では、相手側のコントローラ部15aの制御プログラム161は、旧コントローラの停止を開始する。次にステップS104では、コントローラ部15aの制御プログラム161は、旧コントローラの停止指示を、コントローラ部15bの制御プログラム161に送信する。
【0072】
次にステップS105では、コントローラ部15bの制御プログラム161は、ホストパス定義163の切替を開始する。次にステップS106では、コントローラ部15bの制御プログラム161は、コントローラ部15aの制御プログラム161に対して、ホストパス定義163の更新指示を送信する。
【0073】
次にステップS107では、コントローラ部15aの制御プログラム161は、ホストパス定義163の更新指示に応じて、ポート管理テーブル171においてホストパス定義163をコントローラ部15aに設定する。具体的には、図4Bに例示するように、コントローラ部15aの最も負荷が軽いポート19(WWN#4)を選択する。そして選択したポート19にホストパス定義163を設定するように、レコード1714(図3B)にレコード1715(図3B)のホストパス定義163を設定したレコード1716を生成し、レコード1717の「負荷」を更新する。
【0074】
次にステップS108では、コントローラ部15aの制御プログラム161は、ステップS107のテーブル更新の完了を、コントローラ部15bの制御プログラム161に通知する。
【0075】
次にステップS109では、コントローラ部15bの制御プログラム161は、スイッチ部11内の接続ルート切替を実行する。次にステップS110では、コントローラ部15bの制御プログラム161は、スイッチ部11内の接続ルートの切替指示をスイッチ部11に送信する。
【0076】
次にステップS111では、スイッチ部11の切替プログラム121は、接続ルートの切替指示に応じて、新規の接続ルートを設定する。次にステップS112では、スイッチ部11の切替プログラム121は、ルート管理テーブル131において新規の接続ルートの情報を反映する。具体的には、図4Cに例示するように、ルート管理テーブル131においてレコード1312を生成する。
【0077】
次にステップS113では、スイッチ部11の切替プログラム121は、切替処理を実行する。切替処理の詳細は、図8を参照して後述する。
【0078】
次にステップS114では、スイッチ部11の切替プログラム121は、ステップS111で新規設定された接続ルートとIO元のホスト3が重複する既存の接続ルートを削除する。具体的には、ルート管理テーブル131において、図4Cに例示する「変換の有無」“変換あり”のレコード1312の変換前のWWNが同一のレコード1311の「接続ルート」及び「変換の有無」を、図6Cに例示するレコード1313のようにクリアする。
【0079】
次にステップS115では、スイッチ部11の切替プログラム121は、接続ルートの切替完了通知を、コントローラ部15bの制御プログラム161に送信する。
【0080】
次にステップS116では、コントローラ部15bの制御プログラム161は、コントローラ部15bの閉塞処理を実行する。次にステップS117では、コントローラ部15bの制御プログラム161は、コントローラ部15bの閉塞完了を、コントローラ部15aの制御プログラム161に通知する。
【0081】
次にステップS118では、コントローラ部15aの制御プログラム161は、コントローラ部15bの制御プログラム161から、コントローラ部15bの閉塞完了を受信する。次にステップS119では、コントローラ部15aの制御プログラム161は、コントローラ部15bの閉塞完了を端末t1に通知する。
【0082】
次にステップS120では、端末t1は、コントローラ部15bの閉塞完了を表示画面等に出力して、旧コントローラ停止処理を終了する。
【0083】
(実施形態1に係る切替処理)
図8は、実施形態1に係る切替処理(ステップS113(図7))を示すフローチャートである。
【0084】
先ずステップS113aでは、スイッチ部11の切替プログラム121は、現在処理中の未完了IOのOX_IDをOX_ID管理テーブル132(図2C)に追加する。次にステップS113bでは、切替プログラム121は、入力IOが新規IOかを判定する。切替プログラム121は、入力IOが、新規IOである場合(ステップS113bYES)にステップS113gに処理を移し、未完了IOである場合(ステップS113bNO)にステップS113cに処理を移す。
【0085】
ステップS113cでは、切替プログラム121は、切替前の現コントローラで未完了IOを処理する。現コントローラは、図7の旧コントローラの停止処理で切替処理が実施される場合には、コントローラ部15bである。
【0086】
次にステップS113dでは、切替プログラム121は、現コントローラから未完了IOのIO完了通知を受領すると、該当の未完了IOのOX_IDをOX_ID管理テーブル132から消去する。
【0087】
次にステップS113eでは、切替プログラム121は、OX_ID管理テーブル132に未完了IOのOX_IDがあるかをチェックする。次にステップS113fでは、切替プログラム121は、OX_ID管理テーブル132に未完了IOのOX_IDがある場合(ステップS113fYES)にステップS113bに処理を戻す。一方、未完了IOのOX_IDがない場合(ステップS113fNO)に本切替処理を終了し、ステップS114(図7)に処理を移す。
【0088】
一方ステップS113gでは、切替プログラム121は、切替先コントローラで未完了IOを処理する。切替先コントローラは、図7の旧コントローラの停止処理で切替処理が実施される場合には、コントローラ部15aである。
【0089】
次にステップS113hでは、切替プログラム121は、IO完了通知を受領する。切替プログラム121は、ステップS113hが終了すると、ステップS113fに処理を移す。
【0090】
(実施形態1に係る新コントローラの起動処理シーケンス)
図9は、実施形態1に係る新コントローラの起動処理を示すシーケンス図である。新コントローラの起動処理は、旧コントローラの停止処理(図7)の終了後に、旧コントローラがコントローラ部15b1にアップグレードされた後に実行される。
【0091】
先ずステップS121では、端末t1は、オペレータによる新コントローラの起動指示を受け付ける。本実施形態では、新コントローラは、コントローラ部15b1である。次にステップS122では、端末t1は、受け付けた新コントローラの起動指示を、新コントローラに対する相手側のコントローラ部15aの制御プログラム161に送信する。
【0092】
次にステップS123では、相手側のコントローラ部15aの制御プログラム161は、新コントローラの起動を開始する。次にステップS124では、コントローラ部15aの制御プログラム161は、新コントローラの起動指示を、コントローラ部15b1の制御プログラム161に送信する。
【0093】
次にステップS125では、コントローラ部15b1の制御プログラム161は、新コントローラであるコントローラ部15b1を起動する。次にステップS126では、コントローラ部15b1の制御プログラム161は、ホストパス定義163の切替を開始する。ここで切替対象となるホストパス定義163は、図6Aに示すように、コントローラ部15bからコントローラ部15aへ移動された状態のホストパス定義163である。
【0094】
次にステップS127では、コントローラ部15b1の制御プログラム161は、ポート管理テーブル171からホストパス定義163を取得する。次にステップS128では、コントローラ部15b1の制御プログラム161は、コントローラ部15aの制御プログラム161に対して、ホストパス定義163の更新指示を送信する。
【0095】
次にステップS129では、コントローラ部15aの制御プログラム161は、ホストパス定義163の更新指示に応じて、ポート管理テーブル171においてホストパス定義163をコントローラ部15b1に設定する。すなわち図7の旧コントローラの停止処理におけるステップS107でコントローラ部15bからコントローラ部15aに移動されたホストパス定義163を、コントローラ部15aからコントローラ部15b1に戻すべくポート管理テーブル171を更新する。具体的には、ポート管理テーブル171を、図6Bの状態から図4Bのレコード1715が復原された状態に更新する。
【0096】
次にステップS130では、コントローラ部15aの制御プログラム161は、ステップS129のテーブル更新の完了を、コントローラ部15b1の制御プログラム161に通知する。
【0097】
次にステップS131では、コントローラ部15b1の制御プログラム161は、スイッチ部11内の接続ルート切替を実行する。次にステップS132では、コントローラ部15b1の制御プログラム161は、スイッチ部11からルート管理テーブル131の「変換の有無」“変換あり”の該当レコードをルート情報として取得する。
【0098】
次にステップS133では、コントローラ部15b1の制御プログラム161は、ステップS132で取得したルート情報に基づくスイッチ部11内の接続ルートの切替指示をスイッチ部11に送信する。
【0099】
次にステップS134では、スイッチ部11の切替プログラム121は、接続ルートの切替指示に応じて、新規の接続ルートを設定する。ここで設定される新規の接続ルートは、例えば、図6Cに示すルート管理テーブル131のレコード1313を切替処理前の状態に復原した図4Cに示すルート管理テーブル131のレコード1311が示す接続ルートである。
【0100】
次にステップS135では、スイッチ部11の切替プログラム121は、ルート管理テーブル131において、ステップS134で設定した新規の接続ルートの情報を反映する。具体的には、図4Cに示すルート管理テーブル131において、レコード1311を生成する。
【0101】
次にステップS136では、スイッチ部11の切替プログラム121は、切替処理を実行する。ステップS136の切替処理の詳細は、ステップS113と同様である。ステップS136の切替処理では、現コントローラはコントローラ部15aであり、切替先コントローラはコントローラ部15b1である。
【0102】
次にステップS137では、スイッチ部11の切替プログラム121は、ルート管理テーブル131において、ステップS134で新規設定された接続ルートとIO元のホスト3が重複する既存の接続ルートを削除する。具体的には、図4Cに示すルート管理テーブル131においてレコード1312を削除する。
【0103】
次にステップS138では、スイッチ部11の切替プログラム121は、接続ルートの切替完了通知を、コントローラ部15bの制御プログラム161に送信する。
【0104】
次にステップS139では、コントローラ部15b1の制御プログラム161は、スイッチ部11の切替プログラム121から切替完了通知を受信し、コントローラ部15bの起動を完了する。次にステップS140では、コントローラ部15b1の制御プログラム161は、コントローラ部15b1の起動完了を、コントローラ部15aの制御プログラム161に通知する。
【0105】
次にステップS141では、コントローラ部15aの制御プログラム161は、コントローラ部15b1の制御プログラム161から、コントローラ部15b1の起動完了を受信する。次にステップS142では、コントローラ部15aの制御プログラム161は、コントローラ部15b1の閉塞完了を端末t1に通知する。
【0106】
次にステップS143では、端末t1は、コントローラ部15b1の起動完了を表示画面等に出力して、新コントローラ起動処理を終了する。
【0107】
(実施形態1の効果)
上述の実施形態1では、ポート管理テーブル171に、アップデート対象のコントローラ部15bにおける第2アドレス情報とホスト3との第2ホストパス定義を設定する。さらに加えて、ポート管理テーブル171に、コントローラ部15aにおける第1アドレス情報とこのホスト3との第1ホストパス定義を設定する。またルート管理テーブル131に、入力ポート14Aと第2アドレス情報のポート19が接続される出力ポート14Bである第2出力ポートとの間の第2接続ルートを設定する。さらに加えて、ルート管理テーブル131に、この入力ポート14Aと第1アドレス情報のポート19が接続される出力ポート14Bである第1出力ポートとの間の第1接続ルートを設定する。このようにWWNアドレスを変換して、一方のコントローラ部15へのIOを両方のコントローラ部15に転送されるように接続ルートとホストパス定義情報を二重設定する。そしてポート管理テーブル171及びルート管理テーブル131に従って、IOをコントローラ部15a又はコントローラ部15bに転送する。
【0108】
よって実施形態1によれば、ストレージ装置100のストレージコントローラ1内に接続ルートを切替可能なインターフェースと冗長構成のコントローラ部15を有する。そしてインターフェースによる接続ルートの切替によってホスト3から見えるストレージターゲット情報(WWN)を維持する。よってホスト3を停止することなく、またホスト3からのIOに係るデータを消失させることなくコントローラ部15のアップグレードができる。
【0109】
また上述の実施形態1では、仕掛中IOの識別情報をOX_ID管理テーブル132に記録し、IO毎にIOの識別情報がOX_ID管理テーブル132に記録されているか否かを判定する。そしてIOの識別情報がOX_ID管理テーブル132に記録されている場合に、仕掛中IOを第2接続ルートを経由してコントローラ部15bに出力し、記録されていない場合に、新規IOを第1接続ルートを経由してコントローラ部15aに出力する。
【0110】
よって実施形態1によれば、新規IOと仕掛中IOを判別して転送先のコントローラ部15を切替えることで、IOの瞬断の発生を回避できる。
【0111】
[実施形態2]
実施形態2では、アップグレード対象のコントローラへのIOを他方のコントローラへ片寄せする前に、この他方のコントローラ内で予めIOを集約して空きリソースを作っておく。このようにして確保した空きリソースへアップグレード対象のコントローラへのIOを移動させることで、移行負荷が過大にならないようにする。
【0112】
実施形態2の説明では、実施形態1との重複説明を省略し、実施形態1との差分を中心に説明する。
【0113】
(実施形態2に係るストレージコントローラ1Bの動作概要)
図10A図13Cは、実施形態2に係るストレージコントローラ1の動作概要及び各動作時のポート管理テーブル171とルート管理テーブル131の状態を示す図である。実施形態2では、アップグレード対象のコントローラ部15bの相手側のコントローラ部15aにおいてIOの接続パスを集約してポート19の空きリソースを作っておく。そしてコントローラ部15bへのIOをコントローラ部15aの秋リソースへ片寄せしてコントローラ部15bを停止し、コントローラ部15bをコントローラ部15b1へアップグレード後、コントローラ部15b1を起動する。
【0114】
図10Aは、コントローラ部15の接続ルートの切替前のストレージコントローラ1を示す図である。接続ルートの切替前のポート管理テーブル171は、図10Bに示すようになっている。また接続ルートの切替前のルート管理テーブル131は、図10Cに示すようになっている。
【0115】
図10Aに示す状態で、コントローラ部15bの制御プログラム161は、スイッチ部11の切替プログラム121に対して、相手側のコントローラ部15aの軽負荷ポートを探索する軽負荷ポート探索指示を出力する。コントローラ部15aの制御プログラム161は、コントローラ部15aの複数のポート19のうちで最も負荷が小さい複数(例えば2つ)のポートを特定する。図10Aの例では、コントローラ部15aの制御プログラム161は、最も負荷が軽い軽負荷ポートとして、コントローラ部15aのポート19(WWN#4)が特定されたとする。また2番目に負荷が軽い軽負荷ポートとして、コントローラ部15aのポート19(WWN#3)が特定されたとする。
【0116】
(実施形態2に係るコントローラ部15a内での接続ルートの切替動作中(前半))
図11Aは、実施形態2に係るコントローラ部15a内での接続ルートの切替動作中(前半)である。コントローラ部15aの接続ルートの集約時のポート管理テーブル171は、図11Bに示すようになっている。またコントローラ部15aの接続ルートの集約時のルート管理テーブル131は、図11Cに示すようになっている。
【0117】
図11Aに示すように、コントローラ部15aの制御プログラム161は、コントローラ部15aの2番目に負荷が軽いポート19(WWN#3)に、最も負荷が軽いポート19(WWN#4)に係るホストパス定義162dを追加設定する。
【0118】
コントローラ部15aの制御プログラム161は、コントローラ部15aに追加設定したホストパス定義162dを、ポート管理テーブル171に反映する。ホストパス定義162dが追加設定されたポート19(WWN#3)に係るホストパス定義は、ポート管理テーブル171(図11B)のレコード1722に該当する。
【0119】
レコード1719,1722の「負荷」は、レコード1720(図10B図11B)に係るホストパス定義162dが“WWN#3”に追加設定されたことで、“35MB/s”となっている。“35MB/s”は、“WWN#3”の「負荷」“20MB/s”と“WWN#4”の「負荷」“15MB/s”の合計である。図10Bに示すポート管理テーブル171では、レコード1719は、図10Bと同様に維持されている。
【0120】
またコントローラ部15bの制御プログラム161は、スイッチ部11の切替プログラム121に対して、接続ルートの切替指示を出力する。切替プログラム121は、切替指示に従って、コントローラ部15a側の出力ポート14B(ポート#11)に、ホストパス定義162dの設定に応じた接続ルート(入力ポート14A(ポート#4)-出力ポート14B(ポート#11))を追加設定する。スイッチ部11は、追加設定された接続ルートとWWNの変換(WWN#4→WWN#3)によって、入力ポート14A(ポート#4)を介して入力された出力ポート14B(ポート#11)を介してコントローラ部15aのポート19(WWN#3)に出力する。
【0121】
切替プログラム121は、接続ルートの切替完了後に、接続ルートの切替をルート管理テーブル131に反映する。ホストパス定義162dが追加設定されたポート19(WWN#3)に係る接続ルートは、ルート管理テーブル131(図11C)のレコード1315に該当する。
【0122】
レコード1315は、レコード1314(図10C)に係る接続ルートが、スイッチ部11内でのWWNの変換(WWN#4→WWN#3)によって、入力ポート14A(ポート#4)-出力ポート14B(ポート#11)の接続ルートとして追加されたことを示す。レコード1315は、WWNの変換を伴うため、「変換の有無」が“変換あり”となる。図11Cに示すルート管理テーブル131では、レコード1314は、図10Cと同様に維持されている。
【0123】
(実施形態2に係るコントローラ部15a内での接続ルートの切替動作中(後半))
図12は、実施形態2に係るコントローラ部15a内での接続ルートの切替動作中(後半)のストレージコントローラ1を示す図である。
【0124】
図12は、図11Aに示すコントローラ部15aでの接続ルートの集約処理の開始以降に入力ポート14A(ポート#4)から新規に入力されるコマンド及びIOをコントローラ部15aに入力して処理することを示す。コントローラ部15aに入力する際の接続ルートは、入力ポート14A(ポート#4)-出力ポート14B(ポート#11)である。
【0125】
また図12は、図11Aに示すコントローラ部15aでの接続ルートの集約処理の開始以前に入力ポート14A(ポート#4)から入力された処理が未完の仕掛中のコマンド及びIOをコントローラ部15aに入力して処理することを示す。コントローラ部15aに入力する際の接続ルートは、入力ポート14A(ポート#4)-出力ポート14B(ポート#12)である。
【0126】
(実施形態2に係る接続ルートの切替動作後のストレージコントローラ1)
図13Aは、実施形態2に係る接続ルートの切替動作後のストレージコントローラ1を示す図である。図13Aは、入力ポート14A(ポート#4)を介して入力された仕掛中IOが全てコントローラ部15bに割り振られ処理が完了した状態のストレージコントローラ1を示す。
【0127】
コントローラ部15aの接続ルートの切替動作後のポート管理テーブル171は、図13Bに示すようになっている。
【0128】
図13Aに示す状態では、コントローラ部15bの制御プログラム161は、コントローラ部15a内でポート19(WWN#4)に接続するホストパス定義162dを削除する定義削除を実行し、ポート管理テーブル171に反映する。ポート19(WWN#4)に接続するホストパス定義162dが削除されたポート19(WWN#4)に係るホストパス定義は、ポート管理テーブル171(図13B)のレコード1723に該当する。レコード1723に示すように、レコード1720(図10B図11B)に係るホストパス定義162dは「負荷」“0”、「ホスト定義」及び「LU定義」“未定義”としてクリアされている。
【0129】
またコントローラ部15aの接続ルートの集約後のルート管理テーブル131は、図13Cに示すようになっている。
【0130】
制御プログラム161は、入力ポート14A(ポート#4)-出力ポート14B(ポート#12)の接続ルートの解除を、ルート管理テーブル131に反映する。解除された接続ルートは、ルート管理テーブル131(図13C)のレコード1316に該当する。レコード1316に示すように、レコード1316(図13C)に係る接続ルートは「接続ルート」及び「変換の有無」を空欄としてクリアされている。
【0131】
コントローラ部15bの制御プログラム161は、コントローラ部15aに対して、ホストパス定義163をコントローラ部15aに設定する(図4A)処理以降は、実施形態1と同様である。すなわちアップグレードの対象のコントローラへのIOを他方のコントローラへ片寄せしてアップグレード対象の旧コントローラをアップグレード後、新コントローラを再起動する。
【0132】
(実施形態2に係る旧ストレージコントローラの停止処理)
図14は、実施形態2に係る旧ストレージコントローラの停止処理を示すシーケンス図である。
【0133】
実施形態2に係る旧ストレージコントローラの停止処理は、図7に示す実施形態1に係る旧ストレージコントローラの停止処理と比較して、ステップS102とステップS103の間に、ステップS102a~S102gが実行される点が異なる。この差異以外は、実施形態2に係る旧ストレージコントローラの停止処理は、実施形態1に係る旧ストレージコントローラの停止処理と同様である。
【0134】
ステップS102aでは、コントローラ部15aの制御プログラム161は、接続ルート切替処理を開始する。次にステップS102bでは、コントローラ部15aの制御プログラム161は、スイッチ部11の切替プログラム121に対して、接続ルートの切替指示を送信する。
【0135】
次にステップS102cでは、スイッチ部11の切替プログラム121は、低負荷判定・接続ルート選択処理を実行する。低負荷判定・ルート選択処理の詳細は、図15を参照して後述する。
【0136】
次にステップS102dでは、スイッチ部11の切替プログラム121は、ステップS102cで選択された接続ルートをルート管理テーブル131に反映して更新する。次にステップS102eでは、スイッチ部11の切替プログラム121は、コントローラ部15aの制御プログラム161に対して、接続ルートの完了更新通知を送信する。この接続ルートの更新完了通知は、ステップS102cで選択されたポート情報を含む。
【0137】
次にステップS102fでは、コントローラ部15aの制御プログラム161は、ステップS102eで通知された接続ルートの更新完了通知に基づいてホストパス定義を切替え、ポート管理テーブル171を更新する。
【0138】
(実施形態2に係る低負荷判定・接続ルート選択処理)
図15は、図14のステップS102cで示す実施形態2に係る低負荷判定・接続ルート選択処理を示すフローチャートである。
【0139】
先ずステップS102c1では、スイッチ部11の切替プログラム121は、相手側のコントローラ部15aと接続される出力ポート14B(ポート#9~#12)(コントローラポート)の負荷の性能値を取得する。切替プログラム121は、例えばスイッチ部11が常時取得及び蓄積している各コントローラポートの単位時間当たりの通信量を負荷の性能値として取得する。
【0140】
次にステップS102c2では、スイッチ部11の切替プログラム121は、ステップS102c1で取得したコントローラポートの負荷の性能値で、コントローラ部15a,15bが共有するポート管理テーブル171の「負荷」の列を更新する。
【0141】
次にステップS102c3では、スイッチ部11の切替プログラム121は、ポート管理テーブル171を参照し、相手側コントローラ(コントローラ部15a)の複数のポート19のうち、最も負荷が小さい2つのポートを選択する。
【0142】
次にステップS102c4では、スイッチ部11の切替プログラム121は、ステップS102c3で選択された2つのポート19について、図8に示す切替処理を実行する。ステップS102c4が終了すると、スイッチ部11の切替プログラム121は、ステップS102d(図14)に処理を移す。
【0143】
(実施形態2に係る新ストレージコントローラの起動処理)
図16は、実施形態2に係る新ストレージコントローラの起動処理を示すシーケンス図である。
【0144】
実施形態2に係る新ストレージコントローラの起動処理は、図9に示す実施形態1に係る新ストレージコントローラの起動処理と比較して、ステップS140とステップS141の間に、ステップS140a~S140gが実行される点が異なる。この差異以外は、実施形態2に係る新ストレージコントローラの停止処理は、実施形態1に係る新ストレージコントローラの停止処理と同様である。
【0145】
ステップS140aでは、コントローラ部15aの制御プログラム161は、接続ルート切替処理を開始する。次にステップS140bでは、コントローラ部15aの制御プログラム161は、スイッチ部11の切替プログラム121に対して、接続ルートの切替指示を送信する。
【0146】
次にステップS140cでは、スイッチ部11の切替プログラム121は、低負荷判定・接続ルート選択処理を実行する。低負荷判定・ルート選択処理は、ステップS102c(図14)と同様であり、図15に示したとおりである。
【0147】
なおステップS140cでは、最も低負荷の2のポート19を選択する代わりに、ルート管理テーブル131において「変換の有無」“変換あり”の接続ルートに係る2つのポート19を選択してもよい。ステップS140cでルート管理テーブル131において「変換の有無」“変換あり”の接続ルートに係る2つのポート19を選択して以降の処理が実行されることで、ステップS102dで更新された接続ルートを更新前の接続ルートに戻すことができる。例えば図13A図13Cに示すように、WWN#4→WWN#3のポート変換によって、入力ポート14A(ポート#4)-出力ポート14B(ポート#11)の接続ルートが設定されている。この接続ルートをWWN#4→WWN#3の変換情報をもとに、入力ポート14A(ポート#4)-出力ポート14B(ポート#12)の接続ルートを復原することができる。
【0148】
次にステップS140dでは、スイッチ部11の切替プログラム121は、ステップS140cで選択された接続ルートをルート管理テーブル131に反映して更新する。次にステップS140eでは、スイッチ部11の切替プログラム121は、コントローラ部15aの制御プログラム161に対して、接続ルートの完了更新通知を送信する。この接続ルートの更新完了通知は、ステップS140cで選択されたポート情報を含む。
【0149】
次にステップS140fでは、コントローラ部15aの制御プログラム161は、ステップS140eで通知された接続ルートの更新完了通知に基づいてホストパス定義を切替え、ポート管理テーブル171を更新する。
【0150】
(実施形態2の効果)
上述の実施形態2では、コントローラ部15aが有するポート19の中から負荷が最小のポートと2番目に小さいポートの2個のポートを選択する。そして2個のポートのうちの負荷が最小の第1ポートに入力されるIOと、負荷が2番目に小さい第2ポートに入力されるIOと、を共に第2ポートに入力されるように集約する。すなわち一方のコントローラ部15内で空きポートを作る。そして第2アドレス情報を、第1アドレス情報として第1ポートに係るアドレス情報に変換する。そして第1ポートに係るアドレス情報に基づいてポート管理テーブル171において第1ホストパス定義を空きポートに対して設定し、第1ポートに係るアドレス情報に基づいてルート管理テーブル131に第1接続ルートを設定する。
【0151】
よって実施形態2によれば、ポートのIO負荷の確認結果に基づいて、コントローラ部15内の負荷を調整して空きポートを作り、スイッチ部11の空きポートを選択して接続ルートを切替えることで、転送負荷を平準化することができる。また転送負荷の平準化により、コントローラ部15のアップグレードに伴うコントローラ部15の転送及び停止の時間を短縮し、作業を迅速に行うことができる。
【0152】
以上、本願開示に係る実施形態について詳述したが、本願開示は上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、上述の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また上述の実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0153】
また上述の各構成、機能部や処理部等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また上述の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやHDD、SSD等の記録装置、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0154】
また上述の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【0155】
また上述した各システムや各装置の各機能及びデータの配置形態は一例に過ぎない。各機能及びデータの配置形態は、ハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
【符号の説明】
【0156】
1:ストレージコントローラ、2,2a,2b:ディスク装置、3:ホスト、11:スイッチ部、12:CPU、13,17:キャッシュメモリ、14:ポート、14A:入力ポート、14B:出力ポート、15,15a,15b,15b1:コントローラ部、19:ポート、100:ストレージ装置、121:切替プログラム、131:ルート管理テーブル、132:OX_ID管理テーブル、161:制御プログラム、162a,162b,162c,162d,163:ホストパス定義、171:ポート管理テーブル。
図1
図2A
図2B
図2C
図3A
図3B
図3C
図4A
図4B
図4C
図5
図6A
図6B
図6C
図7
図8
図9
図10A
図10B
図10C
図11A
図11B
図11C
図12
図13A
図13B
図13C
図14
図15
図16