(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-19
(45)【発行日】2022-12-27
(54)【発明の名称】ストレージシステム及びストレージシステムの制御方法
(51)【国際特許分類】
G06F 13/14 20060101AFI20221220BHJP
G06F 3/06 20060101ALI20221220BHJP
G06F 13/10 20060101ALI20221220BHJP
G06F 11/20 20060101ALI20221220BHJP
【FI】
G06F13/14 310H
G06F3/06 301Z
G06F13/10 340A
G06F13/14 330E
G06F11/20 671
G06F11/20 689
(21)【出願番号】P 2020163134
(22)【出願日】2020-09-29
【審査請求日】2021-05-12
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】達見 良介
(72)【発明者】
【氏名】山本 彰
(72)【発明者】
【氏名】松上 一樹
【審査官】松平 英
(56)【参考文献】
【文献】特開2020-106999(JP,A)
【文献】国際公開第2016/075765(WO,A1)
【文献】国際公開第2015/068239(WO,A1)
【文献】特開2017-091355(JP,A)
【文献】特表2013-536478(JP,A)
【文献】特開2020-077137(JP,A)
【文献】特開2018-101440(JP,A)
【文献】特開2017-010390(JP,A)
【文献】特開2016-057872(JP,A)
【文献】特開2016-212530(JP,A)
【文献】特開2015-207277(JP,A)
【文献】国際公開第2011/135635(WO,A1)
【文献】特開平11-296313(JP,A)
【文献】米国特許出願公開第2017/0269838(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/00
3/06-3/08
3/18
11/16-11/20
12/08-12/128
13/10-13/14
13/20-13/42
16/00-16/958
(57)【特許請求の範囲】
【請求項1】
プロセッサとメモリとポートとを有する複数のストレージ制御部を有するノードと、データを格納する記憶媒体を有するストレージドライブと、を有するストレージシステムであって、
前記ストレージ制御部のプロセッサは、ホスト計算機がデータ入出力を行う論理ユニットを提供し、
前記論理ユニットは、同じノード内の異なる複数のストレージ制御部にかかる複数のポートに対応付けられており、
前記複数のストレージ制御部は、それぞれ、
その複数の前記ポートを介して、ホスト計算機とデータアクセス要求及びデータの送受信を行い、
その複数の前記プロセッサが、ホスト計算機が前記ストレージドライブに入出力するデータを処理し、
その複数の前記メモリが、前記ストレージドライブに格納されたデータへアクセスするために前記プロセッサが参照する制御情報を保持し、
前記ストレージシステムは、前記ストレージ制御部のメモリに記憶された制御情報を複数のストレージ制御部を有する他のノードに送信してそのストレージ制御部のメモリに格納し、前記他のノードが前記制御情報にかかるデータアクセスを実行可能にする場合に、
前記同じ論理ユニットに関係付けられた複数のポートを、前記他のノードの異なるストレージ制御部に関係つけるよう、前記ポートが担当する論理ユニットを決めることによって、前記ノードのストレージ制御部とポートとの関係を考慮しながら前記他のノードのポートの設定を行う
ことを特徴とするストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記異なる複数のストレージ制御部は、前記論理ユニットへのデータ入出力について、負荷分散処理または障害時の引き継ぎの少なくともいずれかが可能である
ことを特徴とするストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記ノードの異なるストレージ制御部に関係付けられ異なる論理ユニットに関係付けられた複数のポートを、前記他のノードの同じストレージ制御部に関係つけるポート設定が可能である
ことを特徴とするストレージシステム。
【請求項4】
請求項1に記載のストレージシステムであって、
前記ノードは、それぞれ複数のポートを有する第1のストレージ制御部及び第2のストレージ制御部を有し、
前記他のノードは、それぞれ複数のポートを有する第3のストレージ制御部及び第4のストレージ制御部を有し、
前記第1のストレージ制御部及び前記第2のストレージ制御部は、同じ制御情報を共有し、
前記第1のストレージ制御部及び前記第2のストレージ制御部が有する制御情報が前記他のノードへ送信されたら、前記第3のストレージ制御部及び前記第4のストレージ制御部は、前記制御情報をそれぞれのメモリに格納して同じ制御情報を共有し、前記第1のストレージ制御部のポートの情報を前記第3のストレージ制御部のポートが引き継ぎ、前記第2のストレージ制御部のポートの情報を前記第4のストレージ制御部のポートが引き継ぐ
ことを特徴とするストレージシステム。
【請求項5】
請求項1に記載のストレージシステムであって、
他のノードが前記ストレージシステムに追加された場合に、前記制御情報のメモリへの格納及び前記ポートの設定を行い、
データアクセス先の前記ポートを前記追加された他のノードのポートに変更することを、前記ポートを介してホスト計算機に通知する
ことを特徴とするストレージシステム。
【請求項6】
請求項1に記載のストレージシステムであって、
前記ストレージシステムは、前記ポートの設定を行う管理部を有する管理装置に接続されている
ことを特徴とするストレージシステム。
【請求項7】
プロセッサとメモリとポートとを有する複数のストレージ制御部を有するノードと、データを格納する記憶媒体を有するストレージドライブと、を有するストレージシステムであって、
前記複数のストレージ制御部は、それぞれ、
その複数の前記ポートを介して、ホスト計算機とデータアクセス要求及びデータの送受信を行い、
その複数の前記プロセッサが、ホスト計算機が前記ストレージドライブに入出力するデータを処理し、
その複数の前記メモリが、前記ストレージドライブに格納されたデータへアクセスするために前記プロセッサが参照する制御情報を保持し、
前記ストレージシステムは、前記ストレージ制御部のメモリに記憶された制御情報を複数のストレージ制御部を有する他のノードに送信してそのストレージ制御部のメモリに格納し、前記他のノードが前記制御情報にかかるデータアクセスを実行可能にする場合に、前記ノードのストレージ制御部とポートとの関係を考慮しながら前記他のノードのポートの設定を行い、
前記ノードのストレージ制御部は、前記メモリが保持する前記制御情報を、前記他のノードのストレージ制御部の前記プロセッサが実行するソフトウェアに適合する形式に変換して、前記形式が変換された制御情報を、前記他のノードのストレージ制御部に送信し、
前記他のノードのストレージ制御部は、前記形式が変換された制御情報をメモリに格納して、前記ストレージドライブ内のデータへのアクセスのために前記メモリ内の形式が変換された制御情報にアクセスし、
前記制御情報の形式の変換には、前記ソフトウェアを実行する前記プロセッサがアクセスしようとする前記制御情報のアドレスの変換が含まれており、
前記ノードのストレージ制御部は、前記ストレージドライブ内のデータへのアクセスのために、前記アドレスを変換して前記形式が変換された制御情報にアクセスしてストレージドライブ内のデータの格納先アドレスを取得する
ことを特徴とするストレージシステム。
【請求項8】
プロセッサとメモリとポートとを有する複数のストレージ制御部を有するノードと、データを格納する記憶媒体を有するストレージドライブと、を有するストレージシステムの制御方法であって、
前記ストレージ制御部のプロセッサは、ホスト計算機がデータ入出力を行う論理ユニットを提供し、
前記論理ユニットは、同じノード内の異なる複数のストレージ制御部にかかる複数のポートに対応付けられており、
前記複数のストレージ制御部は、それぞれ、
その複数の前記ポートを介して、ホスト計算機とデータアクセス要求及びデータの送受信を行い、
その複数の前記プロセッサが、ホスト計算機が前記ストレージドライブに入出力するデータを処理し、
その複数の前記メモリが、前記ストレージドライブに格納されたデータへアクセスするために前記プロセッサが参照する制御情報を保持し、
前記ストレージシステムは、前記ストレージ制御部のメモリに記憶された制御情報を複数のストレージ制御部を有する他のノードに送信してそのストレージ制御部のメモリに格納し、前記他のノードが前記制御情報にかかるデータアクセスを実行可能にする場合に、前記同じ論理ユニットに関係付けられた複数のポートを、前記他のノードの異なるストレージ制御部に関係つけるよう、前記ポートが担当する論理ユニットを決めることによって、前記ノードのストレージ制御部とポートと関係を考慮しながら前記他のノードのポートの設定を行う
ことを特徴とするストレージシステムの制御方法。
【請求項9】
プロセッサとメモリとポートとを有する複数のストレージ制御部を有するノードと、データを格納する記憶媒体を有するストレージドライブと、を有するストレージシステムの制御方法であって、
前記複数のストレージ制御部は、それぞれ、
その複数の前記ポートを介して、ホスト計算機とデータアクセス要求及びデータの送受信を行い、
その複数の前記プロセッサが、ホスト計算機が前記ストレージドライブに入出力するデータを処理し、
その複数の前記メモリが、前記ストレージドライブに格納されたデータへアクセスするために前記プロセッサが参照する制御情報を保持し、
前記ストレージシステムは、前記ストレージ制御部のメモリに記憶された制御情報を複数のストレージ制御部を有する他のノードに送信してそのストレージ制御部のメモリに格納し、前記他のノードが前記制御情報にかかるデータアクセスを実行可能にする場合に、前記ノードのストレージ制御部とポートとの関係を考慮しながら前記他のノードのポートの設定を行い、
前記ノードのストレージ制御部は、前記メモリが保持する前記制御情報を、前記他のノードのストレージ制御部の前記プロセッサが実行するソフトウェアに適合する形式に変換して、前記形式が変換された制御情報を、前記他のノードのストレージ制御部に送信し、
前記他のノードのストレージ制御部は、前記形式が変換された制御情報をメモリに格納して、前記ストレージドライブ内のデータへのアクセスのために前記メモリ内の形式が変換された制御情報にアクセスし、
前記制御情報の形式の変換には、前記ソフトウェアを実行する前記プロセッサがアクセスしようとする前記制御情報のアドレスの変換が含まれており、
前記ノードのストレージ制御部は、前記ストレージドライブ内のデータへのアクセスのために、前記アドレスを変換して前記形式が変換された制御情報にアクセスしてストレージドライブ内のデータの格納先アドレスを取得する
ことを特徴とするストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フラッシュメモリ又は磁気ディスクをストレージ(記憶媒体)装置として用いるストレージシステムのストレージコントローラリプレース及びアップグレードに関する。
【背景技術】
【0002】
近年、NAND型フラッシュメモリの大容量化によりストレージシステムには大量のデータが保存されている。また、ストレージシステムは上位アプリケーションへの業務影響なく、ハードウェア及びソフトウェアを最新のものに交換できることが求められる。通常、ストレージシステムの交換には、新ストレージシステム側の設定及びデータ移行プロセスに時間を要している。
【0003】
特許文献1は、ストレージシステムのソフトウェアを無停止でアップデートするための発明を示している。ソフトウェアアップデート後、新しいデータ形式と古いデータ形式が両方存在しており、新しいデータには、古いデータ形式のデータへの参照が含まれている。データが更新されたときに、新しいデータ形式で書き込むことで、データの読み書きを止めることなく、新しいデータ形式へアップデートすることができる。
【0004】
特許文献2は、複数ストレージシステム間における無停止データ移行を行うための発明を示している。ホストから単一のストレージシステムであることを認識させるために、複数ストレージに跨る仮想ストレージシステム、仮想ポート及び仮想ロジカルユニット(LUN)を構成する。移行元の物理ポートのポート名およびポートアドレスを移行先システムの仮想ポート名およびポートアドレスに対応付けることで、無停止で新しいストレージシステムへの移行を完了させることができる。
【0005】
デュアルコントローラのストレージシステムにおいて、ストレージシステムのハードウェアを無停止でアップデートするための方式がある。この方式によれば、接続されているドライブのデータを移動することなく新しいコントローラへアップデートすることができる。また、ストレージシステムの構成情報等は維持される。ストレージコントローラを片方ずつ順番に交換することで、新しいハードウェアへの交換を実現している。これは、ストレージシステムにおけるコントローラの交換手順として一般的な方法である。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許第9959043号明細書
【文献】米国特許第9098211号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1では、論理ボリューム内の各データに対して、データ形式が更新されている場合に、新データ形式から旧データへの参照を持つことで、旧データ形式を維持したまま、新しいソフトウェアでの新データ形式に対応している。ただし、一般的にストレージシステムはデータ格納先を示す制御情報の他にも、ハードウェア及びLUNの構成情報並びに内部状態の管理情報など様々な制御情報を持つ。特許文献1には、これらの制御情報について、無停止で新しいソフトウェアに対応した形式へ変換する方式については開示されていない。
【0008】
特許文献2では、移行元のコントローラの各物理ポートアドレスに対応した仮想ポートアドレスを用意し、移行先のコントローラの物理ポートに関連付けることで、無停止で、ホストコマンドを受け付けるポートを切り替えている。ただし、ストレージシステムは一般に、冗長化のために複数コントローラを持っており、各コントローラに物理ポートが存在する。特許文献2には、移行先ストレージ装置において、どの物理ポートをどの仮想ポートに対応させるかに関する技術は開示されていない。
【0009】
本発明では、ストレージシステムのハードウェア及びソフトウェアを無停止でアップデートする際の下記課題を解決する。
【0010】
アップデート後の物理ポートアドレスについて、各LUNがアップデート前に設定されていたマルチパス構成の冗長度に対応するように、関連づけられる仮想ポートアドレスを設定する必要があることである。具体的には、各LUNに対して、アップデート前に、2つのコントローラ以上に分かれてマルチパス構成が設定されていた場合には、アップデート後にそれらのマルチパスの仮想ポートが同じコントローラの物理ポートに関連付けられないようにしなければならない。
【課題を解決するための手段】
【0011】
上記の課題の少なくとも一つを解消するため、本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサとメモリとポートとを有する複数のストレージ制御部を有するノードと、データを格納する記憶媒体を有するストレージドライブと、を有するストレージシステムであって、前記ストレージ制御部のプロセッサは、ホスト計算機がデータ入出力を行う論理ユニットを提供し、前記論理ユニットは、同じノード内の異なる複数のストレージ制御部にかかる複数のポートに対応付けられており、前記複数のストレージ制御部は、それぞれ、その複数の前記ポートを介して、ホスト計算機とデータアクセス要求及びデータの送受信を行い、その複数の前記プロセッサが、ホスト計算機が前記ストレージドライブに入出力するデータを処理し、その複数の前記メモリが、前記ストレージドライブに格納されたデータへアクセスするために前記プロセッサが参照する制御情報を保持し、前記ストレージシステムは、前記ストレージ制御部のメモリに記憶された制御情報を複数のストレージ制御部を有する他のノードに送信してそのストレージ制御部のメモリに格納し、前記他のノードが前記制御情報にかかるデータアクセスを実行可能にする場合に、前記同じ論理ユニットに関係付けられた複数のポートを、前記他のノードの異なるストレージ制御部に関係つけるよう、前記ポートが担当する論理ユニットを決めることによって、前記ノードのストレージ制御部とポートとの関係を考慮しながら前記他のノードのポートの設定を行うことを特徴とする。
【発明の効果】
【0012】
本発明の一態様によれば、マルチコントローラストレージシステムにおいて、無停止かつ冗長性および性能を低下させることなく、新しいハードウェア及び新しいソフトウェアにアップデートすることができる。
【0013】
前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0014】
【
図1】本発明の実施例におけるストレージシステムの構成を示すブロック図である。
【
図2】本発明の実施例におけるストレージコントローラのアップグレードの手順の概要を示す説明図である。
【
図3】本発明の実施例におけるストレージコントローラの仮想ポートアドレス切り替えを示す説明図である。
【
図4】本発明の実施例におけるストレージコントローラが保持する制御情報の形式変換の手順を示す説明図である。
【
図5】本発明の実施例におけるストレージコントローラが有するメモリの構成を示す説明図である。
【
図6】本発明の実施例におけるストレージコントローラのメモリ内のプログラム領域の構成を示す説明図である。
【
図7】本発明の実施例におけるストレージコントローラのメモリ内のローカルメモリの構成を示す説明図である。
【
図8】本発明の実施例におけるストレージコントローラのメモリ内の共有メモリの構成を示す説明図である。
【
図9】本発明の実施例におけるストレージコントローラのメモリに保持される制御情報構成情報の構成を示す説明図である。
【
図10】本発明の実施例におけるストレージコントローラのメモリに保持される制御テーブル管理情報の構成を示す説明図である。
【
図11】本発明の実施例におけるストレージコントローラのメモリに保持される制御情報アドレス変換パラメータの構成を示す説明図である。
【
図12】本発明の実施例におけるストレージコントローラのメモリに保持されるソフトウェアバージョン構成情報の構成を示す説明図である。
【
図13】本発明の実施例におけるストレージコントローラのメモリに保持される実装コントローラ管理情報の構成を示す説明図である。
【
図14】本発明の実施例におけるストレージコントローラのメモリに保持されるハードウェア構成情報の構成を示す説明図である。
【
図15】本発明の実施例におけるストレージコントローラのメモリに保持されるFEポート構成情報の構成を示す説明図である。
【
図16】本発明の実施例におけるストレージコントローラのメモリに保持されるLUN構成情報の構成を示す説明図である。
【
図17】本発明の実施例におけるストレージコントローラが実行するコントローラアップデート処理の全体を示すフローチャートである。
【
図18】本発明の実施例におけるストレージコントローラが実行する制御情報形式変換処理を示すフローチャートである。
【
図19】本発明の実施例におけるストレージコントローラが実行する新コントローラ増設処理を示すフローチャートである。
【
図20】本発明の実施例におけるストレージコントローラが実行するCPU処理制御権切り替え処理を示すフローチャートである。
【
図21】本発明の実施例におけるストレージコントローラが実行するFEポート切り替え処理を示すフローチャートである。
【
図22】本発明の実施例におけるストレージコントローラが実行する旧コントローラ減設処理を示すフローチャートである。
【
図23】本発明の実施例におけるストレージコントローラが実行する制御情報アドレス変換処理を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、図面に基づいて、本発明の実施例を説明する。添付図面では、機能的に同じ要素を同じ番号で表示する場合がある。添付図面は、本発明の原理に則った具体的な実施形態と実施例とを示している。それらの実施形態及び実施例は、本発明の理解のためのものであり、本発明を限定的に解釈するために用いてはならない。
【0016】
さらに、本発明の実施形態は、後述するように、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェアで実装してもよいし、又はソフトウェアとハードウェアの組み合わせで実装してもよい。
【0017】
以下では「プログラム」を主語(動作主体)として本発明の実施形態における各処理について説明を行う場合がある。プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。プログラムの一部又は全ては専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【0018】
以下の説明では、「インターフェース部」は、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも1つを含んでよい。ユーザインターフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボード及びポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスを含んでよい。通信インターフェース部は、1以上の通信インターフェースデバイスを含んでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0019】
また、以下の説明では、「メモリ部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。メモリ部は、主に、プロセッサ部による処理の際に使用される。
【0020】
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的にはCPU(Central Processing Unit)である。
【0021】
また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
【0022】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号(又は要素のID(例えば識別番号)を使用することがある。例えば、複数のストレージコントローラを区別しない場合には、「ストレージコントローラ102」と記載し、各ストレージコントローラを区別する場合には、「ストレージコントローラ102A」、「ストレージコントローラ102B」のように記載する。他の要素(例えば後述するストレージノード101、フロントエンドネットワークポート103、CPU104、メモリ105、バックエンドネットワークポート106、インターコネクトネットワークポート107、ドライブボックス109、ホスト計算機110等)も同様である。
【0023】
また、以下の説明では、「ストレージシステム」は、1以上のストレージ装置を含む。少なくとも1つのストレージ装置は、汎用的な物理計算機であってもよい。また、少なくとも1つのストレージ装置が、仮想的なストレージ装置であってもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)又はSDDC(Software-defined Datacenter)を採用することができる。
【0024】
ここで、前述の3つの課題を解決するための本発明の実施例の概要を説明する。
【0025】
本発明の対象とするストレージシステムは、冗長性のために複数のストレージコントローラを持ち、互いにPCIe又はInfiniBandなどの広帯域、低遅延なネットワークで接続され、制御情報を互いに共有する密結合マルチコントローラシステムである。制御情報は、冗長化のため、2つ以上のコントローラに格納されている。
【0026】
本発明では、古いソフトウェアと新しいソフトウェアとの間で互換性を保ちながら、制御情報を共有することで、上記の課題を解決する。
【0027】
第1の課題を解決する方法を説明する。ソフトウェアがアップデートされる場合、一般に、新しい機能が追加されたり、管理できるリソース数が拡張されることが考えられる。すなわち、古いソフトウェアの制御情報の形式には、新しいソフトウェアで使用する制御情報用の領域が定義されていない。そこで、まず、新しいストレージコントローラを増設し、新しいソフトウェアが動作を開始する前に、古いソフトウェアはI/Oを継続したまま、古い形式の制御情報を新しい形式の制御情報に書き換えを行う。新しい形式の制御情報への変換が完了したら、新しいソフトウェアは、変換された新しい形式の制御情報へアクセスする。新しい形式の制御情報に書き換え後は、古いソフトウェアが、古い形式の制御情報にアクセスした場合、アドレス変換によって、対応する新しい形式の制御情報のアドレスを取得し、形式変換後の制御情報にアクセスする。
【0028】
第2の課題を解決する方法を説明する。処理を新しいストレージコントローラに切り替えた後、古いストレージコントローラの物理ポート名および物理ポートアドレスに対応する仮想ポート名および仮想ポートアドレスを新しいストレージの物理ポートに割当てる(切り替えが二回目以降の場合には、古いストレージコントローラの物理ポート名および物理ポートアドレスに代えて仮想ポート名および仮想ポートアドレスをさらに新しいストレージに割り当てる)。その際、古いストレージコントローラ間で冗長化のためにマルチパスが定義されているLUNについては、移行後も別々のストレージコントローラの物理ポートが対応付くように、仮想ポートとの関連を作成する。
【0029】
もっとも単純な方法は、古いストレージシステムにおいて、別々のストレージコントローラ上の物理ポートは、新しいストレージシステムにおいても、別々のストレージコントローラに関連付くように、仮想ポートと物理ポートの対応を決定することである。コントローラの数が移行前後で変わらない場合には、コントローラとポートとの関係を保って移行後のポートを設定し、コントローラの数が増加する場合には、移行前の複数のコントローラからポートを引き継ぐコントローラが発生しないように、ポートを設定する。同じLUNに紐づく仮想ポートではないことの確認をしていれば、移行前は異なるコントローラに関連付く仮想ポートを、移行後は同じコントローラに関連付けてもよい。これによって、第2の課題である移行後の冗長性を維持するポートの切り替え先を選択することができ、新しいストレージシステムにおいても、古いストレージシステムが有していた負荷分散や障害時のフェイルオーバーの機能を引き継ぐことができる。
【0030】
第3の課題を解決する方法を説明する。古いストレージシステムは、自分自身のストレージコントローラ同士を接続するインターコネクトの他に、新しいストレージコントローラと接続するための空きインターコネクトネットワークポートを持つ。アップデート時に、古いストレージコントローラを減設せずに、ネットワークポートを使用して、新しいストレージシステムのストレージコントローラを接続する。この時、ネットワークポートはストレージコントローラに直接つながっていてもよいし、ファブリックネットワークスイッチ上に存在してもよい。また、ストレージ装置を格納するストレージドライブボックスについても同様に、新しいストレージコントローラと接続するための空きバックエンドネットワークポートを持つ。ストレージコントローラと接続するときに、ドライブボックスと新しいストレージコントローラとの間も接続することで、古いストレージコントローラに接続されていたストレージ装置に対して、古いストレージコントローラを経由せずに、新しいストレージコントローラからアクセスすることができる。
【0031】
このために、例えば、古いストレージコントローラに、新しいストレージシステムを増設し、1つのマルチコントローラストレージシステムを形成する。その後、処理及び制御情報の移行が完了したら、古いストレージコントローラを停止し、古いストレージコントローラ減設する。これによって、第3の課題であるストレージコントローラ数及び物理ポート数を減らすことなく、ストレージのハードウェア及びソフトウェアのアップデートが完了する。
【0032】
新しいストレージシステム増設後の、マルチコントローラストレージシステム構成において、新しいストレージコントローラ内で動作する新しいストレージソフトウェアと古いストレージコントローラ内で動作する古いソフトウェアとは、ストレージコントローラ間ネットワークを介して、共通の制御情報に透過的にアクセスする。また、コントローラ間で通信して行う処理では、新しいソフトウェアは古いソフトウェアとの互換性を満たすように動作する。このようにすることで、ストレージシステムで実施される各処理について、古いコントローラ及び新しいコントローラのどちら側でも実施することができ、I/Oを停止することなく、各処理を新しいストレージコントローラで実施するように切り替えていくことができる。また、アップグレード中の保守を行うケース及び中断して元の状態に復帰させるケースなども、柔軟かつ迅速に対応できる。同時に、アップデート前に設定されていたLUN等の構成情報、レプリケーションなどの状態及びストレージメディアのティアリング等に使用するアクセス頻度情報などをそのまま新しいコントローラで実施される処理にも引き継ぐことができる。
【0033】
以下、上記の課題を解決するための本発明の実施例を図面に基づいて説明する。
【0034】
図1は、本発明の実施例におけるストレージシステムの構成を示すブロック図である。
【0035】
本実施例のストレージシステム100は、複数のストレージコントローラ102、1以上のインターコネクトスイッチ108及び1以上のドライブボックス109を有する。
図1には、複数のストレージコントローラ102の例として、ストレージコントローラ102A~102Dを示す。これらのうちストレージコントローラ102A及び102Bは、これから減設される旧ストレージコントローラであり、一つのストレージノード101Aを構成する。一方、ストレージコントローラ102C及び102Dは、増設された新ストレージコントローラであり、一つのストレージノード101Bを構成する。
【0036】
各ストレージコントローラ102は、CPU104、メモリ105、フロントエンドネットワークポート(以下、FEポートとも記載する)103、バックエンドネットワークポート(以下、BEポートとも記載する)106及びインターコネクトネットワークポート(以下、ICポートとも記載する)107を有する。
図1の例では一つのストレージコントローラ102が一つのCPU104、一つのメモリ105、二つのFEポート103、一つのBEポート106及び一つのICポート107を有するが、これらの数は一例であり、実際の数は任意である。
【0037】
FEポート103は、ネットワークスイッチ111に接続される。ネットワークスイッチ111は、1以上のホスト計算機110(
図1の例ではホスト計算機110A及び110B)に接続される。ストレージコントローラ102は、FEポート103及びネットワークスイッチ111を経由してホスト計算機110からユーザデータの書き込み及び読み出し等のコマンドを受けて、それらに対する応答を返す。
【0038】
BEポート106は、ドライブボックス109に接続される。ストレージコントローラ102は、BEポート106を経由してドライブボックス109へのユーザデータの書き込み及び読み出し等を行う。
【0039】
ドライブボックス109は、ホスト計算機110によって書き込まれたデータを格納する記憶媒体を含む。この記憶媒体は、例えば、磁気ディスク又はフラッシュメモリ等の、大容量の不揮発性記憶媒体であってもよい。
【0040】
ICポート107は、インターコネクトスイッチ108に接続される。インターコネクトスイッチ108は、各ストレージコントローラ102のICポート107に接続される。ストレージコントローラ102は、ICポート107及びインターコネクトスイッチ108を介して、ストレージシステム100内の他のストレージコントローラ102と通信し、例えば制御情報等を送受信することができる。
【0041】
CPU104は、メモリ105に格納されたプログラムを実行することによって、ストレージコントローラ102の種々の機能を実現する。CPUによって実現される機能の詳細については後述する。
【0042】
メモリ105は、CPU104によって実行されるプログラムを記憶する領域、ストレージコントローラ102の制御情報を記憶する領域、ホスト計算機110による書き込み又は読み出しの対象のデータを記憶する領域等を含む。それらの領域の詳細については後述する。
【0043】
さらに、各ストレージコントローラ102は、管理ネットワーク113を介して管理装置112に接続される。
【0044】
図2は、本発明の実施例におけるストレージコントローラ102のアップグレードの手順の概要を示す説明図である。
【0045】
図2(A)は、ストレージコントローラ102のアップグレードが開始される前のストレージシステム100を示す。このとき、ストレージシステム100は、旧ストレージコントローラ102A及び102Bを有し、新ストレージコントローラ102C及び102Dを有していない。このとき、二つのストレージコントローラ102A及び102Bによって冗長性が確保されている。
【0046】
図2(B)は、ストレージコントローラ102のアップグレードが実行されているときのストレージシステム100を示す。このとき、ストレージシステム100は、旧ストレージコントローラ102A及び102Bに加えて、増設された新ストレージコントローラ102C及び102Dを有する。このとき、四つのストレージコントローラ102A~102Dによって冗長性が確保されている。
【0047】
図2(C)は、ストレージコントローラ102のアップグレードが終了した後のストレージシステム100を示す。このとき、旧ストレージコントローラ102A及び102Bは既に減設されており、ストレージシステム100は、新ストレージコントローラ102C及び102Dを有する。このとき、二つのストレージコントローラ102C及び102Dによって冗長性が確保されている。
【0048】
上記の手順によって、アップグレードが実行されているときにも、アップグレード開始前及び終了後と少なくとも同等の冗長性が確保される。
【0049】
なお、本発明は、新ストレージコントローラ102C及び102Dが旧ストレージコントローラ102A及び102Bと同一の機種である場合など、アップグレード以外の目的でストレージコントローラをリプレースする場合にも適用できる。しかし、本実施例では、旧ストレージコントローラ102A及び102Bを、例えばそれらに新たな機能を追加した後継機種など、異なる品種の新ストレージコントローラ102C及び102Dにアップグレードするためのリプレースについて説明する。
【0050】
図3は、本発明の実施例におけるストレージコントローラ102の仮想ポートアドレス切り替えを示す説明図である。
【0051】
ホスト計算機110がアクセスするFEポート103のアドレス(例えばWorld Wide Name:WWN)は、リプレースによって、旧ストレージコントローラから新ストレージコントローラに引き継がれる。このとき、異なる旧ストレージコントローラのFEポート103のアドレスが異なる新ストレージコントローラのFEポート103に引き継がれるように(言い換えると同一の新ストレージコントローラのFEポート103に引き継がれないように)、引継ぎ先を選択する。
【0052】
図3の例では、旧ストレージコントローラ102Aの二つのFEポート103A及び103BのWWNである「AAAA」及び「BBBB」が、新ストレージコントローラ102Cの二つのFEポート103E及び103Fの仮想WWNとして引き継がれる。同様に、旧ストレージコントローラ102Bの二つのFEポート103C及び103DのWWNである「CCCC」及び「DDDD」が、新ストレージコントローラ102Dの二つのFEポート103G及び103Hの仮想WWNとして引き継がれる。これによって、リプレース後もリプレース前と少なくとも同等の冗長性が確保される。また、ホスト計算機110は、リプレース後もリプレース前と同様にストレージシステム100にアクセスすることができる。
【0053】
図4は、本発明の実施例におけるストレージコントローラ102が保持する制御情報の形式変換の手順を示す説明図である。
【0054】
旧ストレージノード101Aの旧ストレージコントローラ102Aのメモリ105Aは、旧形式の制御情報401Aを保持する。ここで、制御情報とは、後述する共有メモリ503(
図5参照)に格納された種々の情報のほか、ドライブボックス109の構成を示す情報、論理的なボリューム(論理ユニット)の状態を示す情報、レプリケーション又はスナップショット等の状態を示す情報等、ストレージコントローラ102がホスト計算機110からのコマンドに従ってドライブボックス109へのデータの入出力(I/O)を実行するために必要な情報の全般を指す。
【0055】
CPU104Aは、ストレージコントローラのリプレースが開始される前は、旧形式の制御情報401Aに基づいて種々の処理を実行する。ストレージコントローラのリプレースが開始されると、CPU104Aは、旧形式の制御情報401Aの形式変換を行い(ステップ402A)、新形式の制御情報403Aを生成する。ここで新形式とは、旧ストレージコントローラ(この例では旧ストレージコントローラ102A)をリプレースする新ストレージコントローラ(この例では新ストレージコントローラ102C)で動作するソフトウェアに適合する形式である。
【0056】
このとき、CPU104Aは、新形式の制御情報403Aの格納先アドレスを取得して、旧形式の制御情報401Aの形式変換を行って生成した新形式の制御情報403を順次格納先アドレスに格納する。旧形式の制御情報401Aのすべての領域について新形式の制御情報403Aへの変換と格納が終了した後、旧ストレージコントローラ102Aがホスト計算機110からの書き込み又は読み出し等のコマンドを受信した場合、CPU104Aは、旧ストレージコントローラ102Aに基づいて参照する旧形式の制御情報401Aのアドレスを、上記の格納先アドレスに基づいて変換することによって、新形式の制御情報403Aを参照して、当該コマンドを実行する。これらの処理の詳細は後述する(
図18参照)。
【0057】
ただし、全ての制御情報の形式を変更する必要はない。古いソフトウェアに適合する制御情報がそのまま新しいソフトウェアにも適合する場合には、制御情報の形式を変更せずにそのまま使用することができる。
【0058】
その後、格納先の切り替え(ステップ404A)が行われる。具体的には、CPU104AがICポート107A及びインターコネクトスイッチ108を介して新形式の制御情報403Aを新ストレージコントローラ102Cに転送する。新ストレージコントローラ102CのCPU104Cは、ICポート107Cを介して受信した制御情報を、新形式の制御情報405Aとして、メモリ105C内の変換されたアドレスに格納する。
【0059】
旧ストレージコントローラ102Bにおける制御情報の形式変換及び新ストレージコントローラ102Dへの制御情報の移行も上記と同様に行われる。すなわち、旧ストレージノード101Aの旧ストレージコントローラ102Bのメモリ105Bは、旧形式の制御情報401Bを保持する。ストレージコントローラのリプレースが開始されると、CPU104Bは、旧形式の制御情報401Bの形式変換を行い(ステップ402B)、新形式の制御情報403Bを生成する。その後、格納先の切り替え(ステップ404B)が行われる。具体的には、CPU104BがICポート107B及びインターコネクトスイッチ108を介して新形式の制御情報403Bを新ストレージコントローラ102Dに転送する。新ストレージコントローラ102DのCPU104Dは、ICポート107Dを介して受信した制御情報を、新形式の制御情報405Bとして、メモリ105D内の変換されたアドレスに格納する。
【0060】
上記
図3に示したように旧ストレージコントローラ102A等から新ストレージコントローラ102C等にFEポート103のアドレス及び制御情報が移行することによって、ホスト計算機110はストレージコントローラ102のリプレース後もリプレース前と同様にストレージシステム100へのユーザデータの書き込み及び読み出しを実行することができる。なお、以下の説明において、旧ストレージコントローラ102を移行元ストレージコントローラ102、新ストレージコントローラ102を移行先ストレージコントローラ102とも記載する。
【0061】
図5は、本発明の実施例におけるストレージコントローラ102が有するメモリ105の構成を示す説明図である。
【0062】
メモリ105は、記憶領域として、プログラム領域501、ローカルメモリ502及び共有メモリ503を含む。これらの詳細は後述する。
【0063】
図6は、本発明の実施例におけるストレージコントローラ102のメモリ105内のプログラム領域501の構成を示す説明図である。
【0064】
プログラム領域501には、無停止コントローラアップデートシーケンス制御部601、制御情報形式変換部602、制御情報アドレス変換部603、コントローラ増設部604、制御権移動部605、FEポート切り替え部606及びコントローラ減設部607が格納される。これらはいずれもメモリ105に格納され、CPU104によって実行されるプログラムである。以下の説明において上記の各部が実行する処理は、実際にはCPU104がプログラムに従って実行する。
【0065】
無停止コントローラアップデートシーケンス制御部601は、本実施例のストレージコントローラ102のリプレースのシーケンスを制御する。制御情報形式変換部602は、旧形式の制御情報から新形式の制御情報への形式変換(
図4のステップ402A、402B)を行う。制御情報アドレス変換部603は、メモリ105における、旧形式の制御情報が格納される領域のアドレスから新形式の制御情報が格納される領域のアドレスへの変換を行う。
【0066】
コントローラ増設部604は、新ストレージコントローラ102の増設時の処理を行う。制御権移動部605は、ストレージコントローラ102の制御権の移動に関する処理を行う。FEポート切り替え部606は、ホスト計算機110からのコマンドを受けるFEポート103の切り替えに関する処理を行う。コントローラ減設部607は、旧ストレージコントローラ102の減設時の処理を行う。
【0067】
図7は、本発明の実施例におけるストレージコントローラ102のメモリ105内のローカルメモリ502の構成を示す説明図である。
【0068】
ローカルメモリ502は、プログラム使用領域701及び共有メモリキャッシュ領域702を含む。プログラム使用領域701は、CPU104がプログラムを実行するときに使用される領域である。共有メモリキャッシュ領域702は、メモリアクセス高速化のために、共有メモリ503上のデータをローカルメモリ502上にキャッシュしておくための領域である。
【0069】
図8は、本発明の実施例におけるストレージコントローラ102のメモリ105内の共有メモリ503の構成を示す説明図である。
【0070】
共有メモリ503には、制御情報構成情報801、制御テーブル管理情報802、制御情報アドレス変換パラメータ803、ソフトウェアバージョン構成情報804、実装コントローラ管理情報805、ハードウェア構成情報806、FEポート構成情報807及びLUN構成情報808が格納される。これらの詳細は後述する(
図9~
図16参照)。
【0071】
図9は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持される制御情報構成情報801の構成を示す説明図である。
【0072】
制御情報構成情報801は、第1制御情報格納先コントローラID901、第1制御情報形式902、第1制御情報格納先先頭アドレス903、第2制御情報格納先コントローラID904、第2制御情報形式905、第2制御情報格納先先頭アドレス906、第3制御情報格納先コントローラID907、第3制御情報形式908及び第3制御情報格納先先頭アドレス909を含む。
【0073】
第1制御情報格納先コントローラID901、第1制御情報形式902及び第1制御情報格納先先頭アドレス903は、それぞれ、第1の制御情報が格納されるストレージコントローラの識別情報、第1の制御情報の形式及び第1の制御情報が格納されるメモリ105内の領域の先頭アドレスである。第2制御情報格納先コントローラID904から第3制御情報格納先先頭アドレス909には、第2の制御情報及び第3の制御情報に関して、上記と同様の情報が格納される。
【0074】
例えば、第1の制御情報が
図4に示す旧形式の制御情報401Aであり、第2の制御情報が旧形式の制御情報401Bであってもよい。この場合、第1制御情報格納先コントローラID901は制御情報401Aが格納されるストレージコントローラ102Aの識別情報であり、第1制御情報形式902は制御情報401Aの形式であり、第1制御情報格納先先頭アドレス903は制御情報401Aが格納されるメモリ105Aの領域の先頭アドレスである。同様に、第2制御情報格納先コントローラID904、第2制御情報形式905及び第2制御情報格納先先頭アドレス906は、旧形式の制御情報401Bに関する情報である。
【0075】
第3の制御情報は、形式変換及び格納先コントローラ切り替えのための一時的な格納先として使用される。形式変換及びコピー中は、第1から第3の制御情報への書き込みが行われる。切り替えが完了したら、第3の制御情報を切り替え対象の第1又は第2の制御情報にコピーして、第3の制御情報はクリアされる。
【0076】
図10は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持される制御テーブル管理情報802の構成を示す説明図である。
【0077】
制御テーブル管理情報802は、旧形式制御テーブル管理情報1000及び新形式制御テーブル管理情報1010を含む。
【0078】
旧形式制御テーブル管理情報1000は、制御テーブルID1001及び制御テーブル先頭アドレス1002を含む。例えば、ストレージコントローラ102Aが保持する制御テーブル管理情報802の場合、旧形式の制御情報401Aに含まれる制御テーブルの識別情報及び先頭アドレスが、制御テーブルID1001及び制御テーブル先頭アドレス1002として保持される。
【0079】
新形式制御テーブル管理情報1010は、制御テーブルID1011及び制御テーブル先頭アドレス1012を含む。例えば、ストレージコントローラ102Aが保持する制御テーブル管理情報802の場合、形式を変換された後の新形式の制御情報401Cに含まれる制御テーブルの識別情報及び先頭アドレスが、制御テーブルID1011及び制御テーブル先頭アドレス1012として保持される。
【0080】
実際には制御情報は種々の制御テーブルを含みうるため、それらの制御テーブルごとに上記の制御テーブルID及び制御テーブル先頭アドレスが保持される。
【0081】
図11は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持される制御情報アドレス変換パラメータ803の構成を示す説明図である。
【0082】
制御情報アドレス変換パラメータ803は、制御テーブルID1101、アドレス変換パラメータID1102、アドレス変換対象アドレス範囲1103及びアドレス変換用計算パラメータ1104を含む。
【0083】
制御テーブルID1101は、各制御テーブルの識別情報である。アドレス変換パラメータID1102は、各制御テーブルのアドレスを変換するための計算パラメータの識別情報である。アドレス変換対象アドレス範囲1103は、変換の対象のアドレスの範囲である。アドレス変換用計算パラメータ1104は、各制御テーブルのアドレスを変換するための計算パラメータである。
【0084】
図12は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持されるソフトウェアバージョン構成情報804の構成を示す説明図である。
【0085】
ソフトウェアバージョン構成情報804は、コントローラID1201、ソフトウェアバージョン1202及び制御情報形式1203を含む。
【0086】
コントローラID1201は、各ストレージコントローラ102の識別情報である。ソフトウェアバージョン1202は、各ストレージコントローラ102で使用されるソフトウェアのバージョンである。制御情報形式1203は、当該バージョンのソフトウェアによって使用される制御情報の形式である。
【0087】
図13は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持される実装コントローラ管理情報805の構成を示す説明図である。
【0088】
実装コントローラ管理情報805は、実装コントローラID1301を含む。実装コントローラID1301は、ストレージシステム100に実装され、データの入出力(I/O)等の処理を実行できる状態になっているストレージコントローラ102の識別情報である。
【0089】
例えば
図2(A)に示すように新ストレージコントローラ102C及び102Dが増設される前の状態では旧ストレージコントローラ102A及び102Bの識別情報が実装コントローラID1301として保持される。
図2(B)に示すように新ストレージコントローラ102C及び102Dが実装されてアップグレードの処理が実行されているときはストレージコントローラ102A~102Dの識別情報が実装コントローラID1301として保持される。
図2(C)に示すように旧ストレージコントローラ102A及び102Bが減設された後の状態では新ストレージコントローラ102C及び102Cの識別情報が実装コントローラID1301として保持される。
【0090】
図14は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持されるハードウェア構成情報806の構成を示す説明図である。
【0091】
ハードウェア構成情報806は、コントローラID1401、実装FEポートID1402、実装BEポートID1403、実装CPUID1404、実装インターコネクトポートID1405及び実装メモリID1406を含む。
【0092】
コントローラID1401は、各ストレージコントローラ102の識別情報である。実装FEポートID1402、実装BEポートID1403、実装CPUID1404、実装インターコネクトポートID1405及び実装メモリID1406は、それぞれ、各ストレージコントローラ102に実装されたFEポート103、BEポート106、CPU104、ICポート107及びメモリ105の識別情報である。
【0093】
図15は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持されるFEポート構成情報807の構成を示す説明図である。
【0094】
FEポート構成情報807は、各FEポート103の構成を示す情報である。各ストレージコントローラ102は、当該ストレージコントローラ102が有する全てのFEポートに関するFEポート構成情報807を保持する。FEポート構成情報807は、FEポートID1501、物理FEポート名1502、物理FEポートアドレス1503、LUNID1504、仮想FEポート名1505及び仮想FEポートアドレス1506を含む。
【0095】
FEポートID1501は、各FEポート103の識別情報である。物理FEポート名1502及び物理FEポートアドレス1503は、各FEポート103の物理的な識別情報であり、搭載スロット位置に従って決定される。
【0096】
LUNID1504は、各FEポートを介してホスト計算機110へのパスが設定されている論理ユニットを識別する情報である。一つのFEポート103に複数の論理ユニットへのパスが設定されていてもよく、その場合、LUNID1504として複数の値が保持される。
【0097】
仮想FEポート名1505及び仮想FEポートアドレス1506は、ホスト計算機110に対して提供される各FEポート103の識別情報であり、必要に応じて任意の値を設定することができる。
【0098】
例えば、
図3に示した旧ストレージノード101AのFEポート103A~103DのWWNは、物理FEポート名1502又は物理FEポートアドレス1503であってもよいし、仮想FEポート名1505又は仮想FEポートアドレス1506であってもよい。新ストレージノード101BのFEポート103E~103HのWWNは、仮想FEポート名1505又は仮想FEポートアドレス1506である。
【0099】
図16は、本発明の実施例におけるストレージコントローラ102のメモリ105に保持されるLUN構成情報808の構成を示す説明図である。
【0100】
LUN構成情報808は、各論理ユニットの構成を示す情報であり、一つの論理ユニットに関して一つのLUN構成情報808が保持される。LUN構成情報808は、LUNID1601、第1FEポートID1602、第2FEポートID1603、第nFEポートID1604及び制御権CPUID1605を含む。
【0101】
LUNID1601は、各論理ユニットの識別情報である。第1FEポートID1602~第nFEポートID1604は、各論理ユニットへのパスが設定されているFEポートの識別情報である。制御権CPUID1605は、I/O処理の高速化のために、各論理ユニットへのI/O処理に係る制御情報に排他的にアクセスするCPU104の識別情報である。
【0102】
各論理ユニットは、負荷分散や障害時のフェイルオーバーを目的として、複数の異なるストレージコントローラに属するFEポートに対応付けられている。
【0103】
次に、ストレージコントローラ102が実行する処理についてフローチャートを参照して説明する。以下の処理はストレージコントローラ102のCPU104がメモリ105内のプログラム領域501に格納されたプログラムを実行することによって実現される。
【0104】
図17は、本発明の実施例におけるストレージコントローラ102が実行するコントローラアップデート処理の全体を示すフローチャートである。
【0105】
最初に、ストレージコントローラ102は、制御情報形式変換処理を実行する(ステップ1701)。この処理の詳細は後述する(
図18参照)。
【0106】
次に、ストレージコントローラ102は、新コントローラ増設処理を実行する(ステップ1702)。この処理の詳細は後述する(
図19参照)。
【0107】
次に、ストレージコントローラ102は、CPU処理制御権切り替え処理を実行する(ステップ1703)。この処理の詳細は後述する(
図20参照)。
【0108】
次に、ストレージコントローラ102は、FEポート切り替え処理を実行する(ステップ1704)。この処理の詳細は後述する(
図21参照)。
【0109】
次に、ストレージコントローラ102は、制御情報格納先切り替え処理を実行する(ステップ1705)。これは、
図4の格納先切り替え(ステップ404A、404B)に相当するものであり、形式が変換された制御情報が新ストレージコントローラ102に格納される。
【0110】
次に、ストレージコントローラ102は、旧コントローラ減設処理を実行する(ステップ1706)。この処理の詳細は後述する(
図22参照)。
【0111】
図18は、本発明の実施例におけるストレージコントローラ102が実行する制御情報形式変換処理を示すフローチャートである。
【0112】
図18に示す制御情報形式変換処理は、移行元である旧ストレージコントローラ102(
図4の例ではストレージコントローラ102A及び102B)によって実行される。最初に、ストレージコントローラ102は、制御情報構成情報801及び制御テーブル管理情報802を参照して、形式変換後の制御情報の格納先アドレスを取得する(ステップ1801)。例えば、制御情報構成情報801の第3制御情報格納先先頭アドレスが、旧ストレージコントローラ102のメモリ105における形式変換後の制御情報(
図4の例では新形式の制御情報403A又は403B)の格納先先頭アドレスであれば、ストレージコントローラ102はそれを取得してもよい。
【0113】
次に、ストレージコントローラ102は、ステップ1801で取得したアドレスに従って、アドレスを変換しながら、制御情報の形式を変換してメモリ105内に格納する(ステップ1802)。これは、
図4のステップ402A及び402Bに相当する。
【0114】
ストレージコントローラ102は、制御情報の全領域について、形式を変換してメモリ105内に格納する処理が終了すると、制御情報のアクセス先及び制御情報の形式を切り替える(ステップ1803)。以後、旧ストレージコントローラ102がホスト計算機110から書き込み等のコマンドを受けた場合、それを実行するために、新形式の制御情報にアクセスする。そのときに実行される処理については後述する(
図23参照)。
【0115】
以上で制御情報形式変換処理が終了する。
【0116】
図19は、本発明の実施例におけるストレージコントローラ102が実行する新コントローラ増設処理を示すフローチャートである。
【0117】
最初に、ストレージコントローラ102は、自ストレージコントローラ102のハードウェア構成情報を取得する(ステップ1901)。具体的には、ストレージコントローラ102は、自ストレージコントローラ102内のFEポート103、CPU104、メモリ105、BEポート106及びICポート107等のハードウェア構成要素から、ハードウェア構成情報806の各項目に相当する情報を取得する。
【0118】
次に、ストレージコントローラ102は、ネットワーク接続チェックを行う(ステップ1902)。例えば、ストレージコントローラ102は、ネットワークスイッチ111、インターコネクトスイッチ108及びドライブボックス109等との接続を確認する。
【0119】
次に、ストレージコントローラ102は、ネットワーク接続チェックの結果が正常であったかを判定する(ステップ1903)。結果が正常でなかった場合、ストレージコントローラ102は、新コントローラ増設処理を中断する(ステップ1904)。
【0120】
ネットワーク接続チェックの結果が正常であった場合、ストレージコントローラ102は、ハードウェア構成情報を設定する(ステップ1905)。具体的には、ストレージコントローラ102は、ステップ1901で取得した情報をハードウェア構成情報806としてメモリ105に格納する。
【0121】
次に、ストレージコントローラ102は、増設側CPU処理可能を登録する(ステップ1906)。これによって、共有メモリ503上の実装コントローラ管理情報805の実装コントローラID1301に当該ストレージコントローラ102の識別情報が追加される。
【0122】
以上で新コントローラ増設処理が終了する。
【0123】
図20は、本発明の実施例におけるストレージコントローラ102が実行するCPU処理制御権切り替え処理を示すフローチャートである。
【0124】
最初に、移行元である旧ストレージコントローラ102(
図4の例ではストレージコントローラ102A及び102B)は、ホスト計算機110からの新規のI/O処理の受付を停止する(ステップ2001)。
【0125】
次に、旧ストレージコントローラ102は、既に受け付けて継続中のI/O処理が完了するのを待つ(ステップ2002)。
【0126】
継続中のI/O処理が完了すると、ストレージコントローラ102は、制御権CPUの移動を設定する(ステップ2003)。具体的には、ストレージコントローラ102が保持するLUN構成情報808のうち、移行元のストレージコントローラ102のCPU104が制御権を有していた論理ユニットに関するLUN構成情報808の制御権CPUID1605の値を、移行先のストレージコントローラ102のCPU104の識別情報に書き換える。例えば移行元がストレージコントローラ102A、移行先がストレージコントローラ102Cであれば、制御権CPUID1605の値がCPU104Aの識別情報からCPU104Cの識別情報に書き換えられる。
【0127】
以上でCPU処理制御権切り替え処理が終了する。
【0128】
図21は、本発明の実施例におけるストレージコントローラ102が実行するFEポート切り替え処理を示すフローチャートである。
【0129】
最初に、ストレージコントローラ102は、移行元及び移行先のストレージコントローラ102の識別情報を選択する(ステップ2101、2102)。例えば
図2~
図4に示したリプレースが行われる場合、移行元としてストレージコントローラ102A、移行先としてストレージコントローラ102Cを選択してもよいし、移行元としてストレージコントローラ102B、移行先としてストレージコントローラ102Dを選択してもよい。
【0130】
次に、ストレージコントローラ102は、移行元ストレージコントローラ102の各FEポート103に対応する移行先ストレージコントローラ102のFEポートを決定する(ステップ2103)。例えば上記のように
図2~
図4に示したリプレースが行われる場合、FEポート103A~103Dに対応するFEポート103E~103Hをそれぞれ決定してもよい。
【0131】
その場合、同一の移行元ストレージコントローラ102AのFEポート103A及び103Bは、同一の移行先ストレージコントローラ102CのFEポート103E及び103Fに対応付けられる。そして、移行元ストレージコントローラ102Aとは異なる移行元ストレージコントローラ102BのFEポート103C及び103Dは、移行先ストレージコントローラ102Cとは異なる移行先ストレージコントローラ102DのFEポート103G及び103Hに対応付けられる。
【0132】
このように、異なる移行元ストレージコントローラ102に実装されたFEポート103は、異なる移行先ストレージコントローラ102に実装されたFEポート103に対応付けられる。すなわち、異なる移行元ストレージコントローラ102に実装されたFEポート103が同一の移行先ストレージコントローラ102に実装されたFEポート103に対応付けられることはない。これによって、移行元と少なくとも同等の冗長性が移行先においても確保される。
【0133】
次に、ストレージコントローラ102は、各移行先FEポート103の仮想FEポート名1505及び仮想FEポートアドレス1506に、対応する移行元FEポート103の仮想FEポート名1505及び仮想FEポートアドレス1506を設定する(ステップ2104)。ポートを設定することによって各ポートが担当する論理ユニットが決定されるため、上記のようにポートの設定を引き継ぐことによって、移行元の各ポートが担当する論理ユニットがそれぞれ移行先の各ポートに引き継がれる。これによって、論理ユニットへのデータI/Oについて、負荷分散処理または障害時の引き継ぎの少なくともいずれかが可能となる。
【0134】
なお、各ストレージコントローラ102が保持するハードウェア構成情報806及びFEポート構成情報807は、各ストレージコントローラ102とそれに実装されたFEポート103の識別情報とを対応付ける情報を含んでいる。このため、これらの情報に基づいて、異なる移行元ストレージコントローラ102に実装されたFEポート103を異なる移行先ストレージコントローラ102に実装されたFEポート103に対応付けることができる。
【0135】
例えば、
図3に示すように、移行元FEポート103A~103DのWWNと同一の値がそれぞれ移行元FEポート103E~103Hにの仮想WWNとして設定される。これによって、ホスト計算機110は移行先FEポート103をそれに対応する移行元FEポート103と同一のものと認識することができる。なお、移行元FEポートにおいて仮想FEポート名1505及び仮想FEポートアドレス1506が設定され、ホスト計算機110がそれらを認識していた場合には、各移行先FEポート103の仮想FEポート名1505及び仮想FEポートアドレス1506に、対応する移行元FEポート103の仮想FEポート名1505及び仮想FEポートアドレス1506が設定される。
【0136】
次に、ストレージコントローラ102は、移行元ストレージコントローラ102のFEポート103のリンクダウン(ステップ2105)及びそれらに対応する移行先ストレージコントローラ102のFEポート103のリンクアップ(ステップ2106)を行い、移行先のFEポート103からホスト計算機110に構成変更通知を送信し(ステップ2107)、ホスト計算機110からinquiryを受領したかを判定する(ステップ2108)。
【0137】
ホスト計算機110からinquiryを受領しなかった場合、ホスト計算機110への接続が確認できないため、ストレージコントローラ102は、FEポート切り替え処理を中断して、処理が失敗したこと及び失敗したFEポート103の物理ポート名を管理ネットワーク113経由で管理装置112に送信する。
【0138】
ホスト計算機110からinquiryを受領した場合、FEポート切り替え処理が終了する。
【0139】
図22は、本発明の実施例におけるストレージコントローラ102が実行する旧コントローラ減設処理を示すフローチャートである。
【0140】
最初に、旧ストレージコントローラ102は、キャッシュメモリ上のデータの破棄又はデステージを行う(ステップ2201)。具体的には、旧ストレージコントローラ102は、キャッシュメモリ上のデータが既にドライブボックス109内の記憶領域に格納されていれば、そのデータをキャッシュメモリから削除し、ドライブボックス109内の記憶領域にまだ格納されていなければ、格納した上でそのデータをキャッシュメモリから削除する。
【0141】
次に、旧ストレージコントローラ102は、新規処理の受け付けを停止する(ステップ2202)。
【0142】
次に、旧ストレージコントローラ102は、既に受け付けていて起動中の処理が停止するのを待つ(ステップ2203)。
【0143】
次に、各ストレージコントローラ102は、旧ストレージコントローラ102の減設が反映されるように、ハードウェア構成情報806を更新する(ステップ2204)。
【0144】
以上で旧コントローラ減設処理が終了する。
【0145】
図23は、本発明の実施例におけるストレージコントローラ102が実行する制御情報アドレス変換処理を示すフローチャートである。
【0146】
最初に、ストレージコントローラ102は、ソフトウェア固有制御情報アドレスを取得する(ステップ2301)。ここで、ソフトウェア固有制御情報アドレスとは、当該ストレージコントローラのソフトウェアがアクセスしようとしている制御情報のアドレスである。
【0147】
次に、ストレージコントローラ102は、自制御情報の形式と格納先制御情報の形式とが一致するかを判定し(ステップ2302)、一致しない場合にはステップ2301で取得した制御情報のアドレスを格納先制御情報の形式に対応する値に変換する(ステップ2303)。
【0148】
次に、ストレージコントローラ102はアクセス先物理アドレスを取得する(ステップ2304)。具体的には、ストレージコントローラ102は、ステップ2302で形式が一致すると判定した場合にはステップ2301で取得されたアドレスに対応した物理アドレスを取得し、ステップ2302で形式が一致しないと判定した場合にはステップ2303で変換されたアドレスに対応した物理アドレスを取得する。
【0149】
以上で制御情報アドレス変換処理が終了する。
【0150】
例えば、
図4に示した旧ストレージコントローラ102Aにおいて、形式変換(ステップ402A)が行われ、新形式制御情報403Aが生成された後に、CPU104Aがメモリ105A内の制御プログラムに従って制御情報にアクセスしようとした場合、ステップ2301では旧形式の制御情報401Aのアドレスが取得される。この場合、ステップ2302において形式が一致しないと判定され、ステップ2302においてアクセス対象の旧形式の制御情報401Aのアドレスが新形式の制御情報403Aのアドレスに変換され、ステップ2304において当該変換後のアドレスが取得される。これによって、制御情報の形式が変換された後も、必要に応じて制御情報にアクセスすることが可能になる。
【0151】
また、本発明の実施形態のシステムは次のように構成されてもよい。
【0152】
(1)プロセッサ(例えばCPU104)とメモリ(例えばメモリ105)とポート(例えばFEポート103)とを有する複数のストレージ制御部(例えばストレージコントローラ102)を有するノード(例えばストレージノード101)と、データを格納する記憶媒体を有するストレージドライブ(例えばドライブボックス109に含まれるドライブ)と、を有するストレージシステム(例えばストレージシステム100)であって、複数のストレージ制御部は、それぞれ、その複数のポートを介して、ホスト計算機(例えばホスト計算機110)とデータアクセス要求及びデータの送受信を行い、その複数のプロセッサが、ホスト計算機がストレージドライブに入出力するデータを処理し、その複数のメモリが、ストレージドライブに格納されたデータへアクセスするためにプロセッサが参照する制御情報を保持し、ストレージシステムは、ストレージ制御部のメモリに記憶された制御情報を複数のストレージ制御部を有する他のノードに送信してそのストレージ制御部のメモリに格納し、他のノードが制御情報にかかるデータアクセスを実行可能にする場合に、ノードのストレージ制御部とポートとの関係を考慮しながら他のノードのポートの設定を行う。
【0153】
これによって、ストレージ制御部のリプレースを実行中にも、リプレースが実行される前後と比較してストレージ制御部及びポートの数を減らすことなく、少なくとも同等の冗長性を維持することができる。
【0154】
(2)上記(1)において、ストレージ制御部のプロセッサは、ホスト計算機がデータ入出力を行う論理ユニットを提供し、論理ユニットは、ポートに対応付けられており、ポートの設定は、ポートが担当する論理ユニットを決めることである。
【0155】
(3)上記(2)において、論理ユニットは、同じノード内の異なる複数のストレージ制御部にかかる複数のポートに対応付けられており、同じ論理ユニットに関係付けられた複数のポートを、他のノードの異なるストレージ制御部に関係つけるよう、ノードのストレージ制御部とポートと関係を考慮しながら他のノードのポートの設定を行う。
【0156】
(4)上記(3)において、異なる複数のストレージ制御部は、論理ユニットへのデータ入出力について、負荷分散処理または障害時の引き継ぎの少なくともいずれかが可能である。
【0157】
(5)上記(3)において、ノードの異なるストレージ制御部に関係付けられ異なる論理ユニットに関係付けられた複数のポートを、他のノードの同じストレージ制御部に関係つけるポート設定が可能である。
【0158】
(6)上記(1)において、ノードは、それぞれ複数のポートを有する第1のストレージ制御部及び第2のストレージ制御部を有し、他のノードは、それぞれ複数のポートを有する第3のストレージ制御部及び第4のストレージ制御部を有し、第1のストレージ制御部及び第2のストレージ制御部は、同じ制御情報を共有し、第1のストレージ制御部及び第2のストレージ制御部が有する制御情報が他のノードへ送信されたら、第3のストレージ制御部及び第4のストレージ制御部は、制御情報をそれぞれのメモリに格納して同じ制御情報を共有し、第1のストレージ制御部のポートの情報を第3のストレージ制御部のポートが引き継ぎ、第2のストレージ制御部のポートの情報を第4のストレージ制御部のポートが引き継ぐ。
【0159】
(7)上記(1)において、他のノードがストレージシステムに追加された場合に、制御情報のメモリへの格納及びポートの設定を行い、データアクセス先のポートを追加された他のノードのポートに変更することを、ポートを介してホスト計算機に通知する。
【0160】
(8)上記(1)において、ストレージシステムは、ポートの設定を行う管理部を有する管理装置(例えば管理装置112)に接続されている。
【0161】
(9)上記(1)において、ノードのストレージ制御部は、メモリが保持する制御情報を、他のノードのストレージ制御部のプロセッサが実行するソフトウェアに適合する形式に変換して、形式が変換された制御情報を、他のノードのストレージ制御部に送信し、他のノードのストレージ制御部は、形式が変換された制御情報をメモリに格納する。
【0162】
(10)上記(9)において、制御情報の変換には、格納先のアドレス変換が含まれており、ストレージ制御部は、制御情報の形式の変換が終了した後にホスト計算機からデータアクセス要求を受信した場合、変換後の格納先アドレスを参照してデータアクセスする。
【0163】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したものであり、必ずしも説明の全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0164】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【0165】
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0166】
100 ストレージシステム
101A、101B ストレージノード
102A~102D ストレージコントローラ
103A~103H フロントエンドネットワークポート(FEポート)
104A~104D CPU
105A~105D メモリ
106A~106D バックエンドネットワークポート(BEポート)
107A~107D インターコネクトネットワークポート(ICポート)
108 インターコネクトスイッチ
109A、109B ドライブボックス
110A、110B ホスト計算機
111 ネットワークスイッチ
112 管理装置
113 管理ネットワーク