以下、本発明の実施の形態を図面を参照して説明する。
図1は、実施の形態の概要を示す図である。アップデート制御装置1は、複数のディスクノード3a,3b,3c,・・・,3m,3n,3oのソフトウェアアップデート処理を制御する。なお、複数のディスクノード3a,3b,3c,・・・,3m,3n,3oは、複数のストレージ装置2a,2b,・・・,2m,2nよりも多い台数である。図1の例では、ストレージ装置2a,2b,・・・,2m,2nがN台(Nは、自然数)であり、ディスクノード3a,3b,3c,・・・,3m,3n,3oは、N+1台である。
ストレージ装置2a,2b,・・・,2m,2nは、それぞれ少なくとも2台のディスクノードに接続されている。その接続のうち、一つの接続のみがストレージ装置内のデータの入出力に使用される有効な接続関係と定義されている。図1の例では、ディスクノード3a,3b,3c,・・・,3m,3n,3oとストレージ装置2a,2b,・・・,2m,2nとの接続関係は、有効な接続関係が実線で示され、無効な接続関係が破線で示されている。
ディスクノード3a,3b,3c,・・・,3m,3n,3oには1台または2台のストレージ装置が接続されている。図1の例では、図中の左右両端のディスクノード3a,3oにはそれぞれ1台のストレージ装置が接続されている。それ以外のディスクノード3b,3c,・・・,3m,3nには、2台のストレージ装置が接続されている。
アップデート制御装置1は、接続情報記憶手段1a、アップデート対象選択手段1b、アップデート指示手段1c、接続切り替え指示手段1d、および接続情報更新手段1eを有している。
接続情報記憶手段1aは、複数のストレージ装置2a,2b,・・・,2m,2nと複数のディスクノード3a,3b,3c,・・・,3m,3n,3oとの接続関係、および有効な接続関係を記憶する。
アップデート対象選択手段1bは、複数のストレージ装置2a,2b,・・・,2m,2nと複数のディスクノードとの接続関係、および有効な接続関係を記憶する接続情報記憶手段を参照し、有効な接続関係を有していないディスクノードをアップデート対象ディスクノードとして選択する。また、アップデート対象選択手段1bは、アップデート対象ディスクノードのソフトウェアのアップデートが完了した場合、アップデート対象ディスクノードと同じストレージ装置に接続されたディスクノードのうち、アップデートが未処理のディスクノードを次選択ディスクノードとして決定する。そして、アップデート対象選択手段1bは、次選択ディスクノードの接続関係が無効化された後、次選択ディスクノードをアップデート対象ディスクノードとして選択する。
アップデート指示手段1cは、アップデート対象選択手段1bでアップデート対象ディスクノードが選択されるごとに、選択されたアップデート対象ディスクノードに対してソフトウェアのアップデートを指示する。
接続切り替え指示手段1dは、次選択ディスクノードが決定されると、次選択ディスクノードに有効に接続されたストレージ装置の有効な接続を、次選択ディスクノードからアップデート対象ディスクノードに切り替える指示を、次選択ディスクノードとアップデート対象ディスクノードとに出力する。
接続情報更新手段1eは、接続切り替え指示手段1dの指示に応じて有効化または無効化された接続関係に従って、接続情報記憶手段1aにおける有効な接続の情報を更新する。
このようなアップデート制御装置1によれば、アップデート対象選択手段1bにより、最初に有効な接続を有していないディスクノード3oがアップデート対象ディスクノードとして選択される。そして、アップデート指示手段1cからの指示に基づいて、ディスクノード3oのソフトウェアがアップデートされる。
ディスクノード3oのソフトウェアのアップデートが完了すると、アップデート対象選択手段1bにより、ディスクノード3oと同じストレージ装置2nに接続され、アップデートが未処理のディスクノード3nが次選択ディスクノードに決定される。すると、接続切り替え指示手段1dの指示に基づいて、ストレージ装置2nの有効な接続が、ディスクノード3nからディスクノード3oに切り替えられる。その結果、ディスクノード3nは、有効な接続が無くなる。そこで、アップデート対象選択手段1bによりディスクノード3nがアップデート対象ディスクノードに選択され、ディスクノード3nのソフトウェアがアップデートされる。以後同様に、図1中のディスクノードの並びの右から左方向に順次ディスクノードが選択され、ソフトウェアがアップデートされる。
このようにアップデート処理を実行することで、ストレージ装置内のデータを移動させることなく、ディスクノードのソフトウェアのアップデートが可能となる。しかも、ストレージ装置に対してアクセスができなくなるのは、接続の切り替えを行う間のみであり、実質的にサービスを停止させずにソフトウェアのアップデートが可能である。
ところで、複数のストレージ装置を複数のディスクノードで管理するシステムとしてマルチノードストレージシステムがある。マルチノードストレージシステムでは、データを異なるストレージ装置に2重化して格納することで信頼性を高めることができる。そこで、データの2重化を伴うマルチストレージシステムに図1に示した機能を適用した場合を例に採り、本実施の形態の詳細を説明する。
なお、ソフトウェアのアップデートは、古いバージョンのソフトウェアを最新のバージョンにアップグレードする場合と、不安定な最新バージョンのソフトウェアを旧版のバージョンにダウングレードする場合とがある。本実施の形態では、アップグレードとダウングレードとを含めソフトウェアのバージョンを変更する処理をアップデートと呼ぶ。また、説明を分かりやすくするために、アップデート前のバージョンを旧バージョン、アップデート後のソフトウェアのバージョンを新のバージョンと呼ぶこととする。
図2は、本実施の形態のマルチノードストレージシステムの構成例を示す図である。本実施の形態では、ネットワーク10を介して、複数のディスクノード100,200,300,400、制御ノード500、管理ノード600、およびアクセスノード700が接続されている。また、ディスクノード100,200,300,400より1台少ない台数のストレージ装置810,820,830が設けられている。各ディスクノード100,200,300,400は、2台のストレージ装置を接続することができる。また、各ストレージ装置810,820,830は、2台のディスクノードに接続することができる。図2の例では、ストレージ装置810は、ディスクノード100とディスクノード200とに接続されている。ストレージ装置820は、ディスクノード200とディスクノード300とに接続されている。ストレージ装置830は、ディスクノード300とディスクノード400とに接続されている。
各ストレージ装置810,820,830には、複数のハードディスク装置(HDD)が実装されている。各ストレージ装置810,820,830は、内蔵するHDDを用いたRAIDシステムである。本実施の形態では、各ストレージ装置810,820,830は、RAID5のディスク管理サービスを提供する。
ディスクノード100,200,300,400は、例えば、IA(Intel Architecture)と呼ばれるアーキテクチャのコンピュータである。ディスクノード100,200,300,400は2台のストレージ装置が接続されている場合、一つの接続のみを有効とする。各ディスクノード100,200,300,400は、有効に接続されたストレージ装置に格納されたデータを管理し、管理しているデータをネットワーク10経由でアクセスノード700に提供する。また、ディスクノード100,200,300,400は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも二つのディスクノードで管理されている。
制御ノード500は、ディスクノード100,200,300,400を管理する。例えば、制御ノード500は、ディスクノード100,200,300,400から新たなストレージ装置の接続通知を受け取ると、新たな仮想ディスクを定義し、その仮想ディスクを介して接続されたストレージ装置に格納されていたデータにアクセスできるようにする。
アクセスノード700は、仮想ディスクが定義されている。そして、アクセスノード700は、仮想ディスクに割り当てられたディスクノード100,200,300,400内の対応するデータへアクセスする。
管理ノード600は、管理者がマルチノードストレージシステムの運用を管理するために使用するコンピュータである。例えば、管理ノード600では、ディスクノード100,200,300,400に実装されているソフトウェアの版数情報(バージョン情報)を管理している。そして、管理ノード600は、管理者からのソフトウェアのアップデート指示に応答して、各ディスクノード100,200,300,400に対して順番にソフトウェアのアップデート指示を送信する。その際、管理ノード600は、マルチノードストレージシステムにおけるサービスが停止しないように、各ディスクノード100,200,300,400とストレージ装置810,820,830との有効な接続関係を制御する。
このような構成のマルチノードストレージシステムでは、ストレージ装置810,820,830内のデータに対するアクセスノード700からのアクセス環境は、3台のディスクノードを用いて提供できる。すると、4台あるうちの1台のディスクノードは、いずれのストレージ装置との間にも有効な接続関係を持たない状態となる。このような非使用ディスクノードに対するOSなどのソフトウェアのアップデート処理は、マルチノードストレージシステムのサービスに影響を与えずに実行可能である。そこで、ディスクノード100,200,300,400とストレージ装置810,820,830との間の接続関係の有効・無効を制御して、ディスクノード100,200,300,400を順番に非使用状態に移行させる。そして、非使用状態となったディスクノードに対して順次ソフトウェアアップデート処理を実行させるようにする。これにより、OSのリスタートを伴うようなアップデート処理を、マルチノードストレージシステムによるサービスに影響を与えずに、すべてのディスクノード100,200,300,400に対して実行可能となる。
図3は、本実施の形態に用いる管理ノードのハードウェア構成例を示す図である。管理ノード600は、CPU(Central Processing Unit)601によって装置全体が制御されている。CPU601には、バス607を介してRAM(Random Access Memory)602、ハードディスクドライブ(HDD:Hard Disk Drive)603、グラフィック処理装置604、入力インタフェース605、および通信インタフェース606が接続されている。
RAM602は、管理ノード600の主記憶装置として使用される。RAM602には、CPU601に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM602には、CPU601による処理に必要な各種データが格納される。HDD603は、管理ノード600の二次記憶装置として使用される。HDD603には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置604には、モニタ11が接続されている。グラフィック処理装置604は、CPU601からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置がある。
入力インタフェース605には、キーボード12とマウス13とが接続されている。入力インタフェース605は、キーボード12やマウス13から送られてくる信号を、バス607を介してCPU601に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
通信インタフェース606は、ネットワーク10に接続されている。通信インタフェース606は、ネットワーク10を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、管理ノード600のハードウェア構成を示しているが、ディスクノード100,200,300,400、制御ノード500、およびアクセスノード700も同様のハードウェア構成で実現することができる。なお、ディスクノード100,200,300,400は図3に示した構成以外に、2台のストレージ装置を接続するため、外部機器接続用のインタフェースを二つ有している。
次に、マルチノードストレージシステムにおけるディスクノード100,200,300,400内のソフトウェアのアップデート処理の概略を説明する。
図4は、ソフトウェアアップデート処理における状態遷移を示す第1の図である。図4の例では、各ディスクノード100,200,300,400の上に、そのディスクノードにおけるアップデート対象のソフトウェアのバージョンを示している。また、各ディスクノード100,200,300,400とストレージ装置810,820,830との間を接続する線が実線であれば有効な接続であることを示し、破線であれば無効な接続であることを示す。
第1の状態(ST1)は、アップデート処理開始時の接続関係を示している。この状態では、各ディスクノード100,200,300,400のソフトウェアのバージョンは「V1」である。また、ディスクノード100とストレージ装置810との接続、ディスクノード200とストレージ装置820との接続、およびディスクノード300とストレージ装置830との接続がそれぞれ有効な接続である。
第1の状態では、ディスクノード400が非使用となっている。そこで、まずディスクノード400のソフトウェアのアップデート処理が行われる。
第2の状態(ST2)は、1台目のディスクノードに対するアップデート処理完了後の状態を示している。ディスクノード400のアップデート対象のソフトウェアは、アップデート処理によりバージョンが「V2」となっている。
ディスクノード400のアップデート処理が完了すると、ストレージ装置830の管理をディスクノード300からディスクノード400に移行する。そのために、ディスクノード300とストレージ装置830との接続を無効とし、ディスクノード400とストレージ装置830との接続を有効とする。
第3の状態(ST3)は、ストレージ装置830に対する接続の切り替え後の状態を示している。ディスクノード300とストレージ装置830との接続を無効としたことにより、ディスクノード300は非使用状態となっている。他方、ディスクノード400とストレージ装置830との接続を有効にしたことにより、以後、ディスクノード400によってストレージ装置830のデータが管理される。
第3の状態ではディスクノード300が非使用となっているため、ディスクノード300のソフトウェアのアップデート処理が行われる。
第4の状態(ST4)は、2台目のディスクノードに対するアップデート処理完了後の状態を示している。ディスクノード300のアップデート対象のソフトウェアは、アップデート処理によりバージョンが「V2」となっている。
ディスクノード300のアップデート処理が完了すると、ストレージ装置820の管理をディスクノード200からディスクノード300に移行する。そのために、ディスクノード200とストレージ装置820との接続を無効とし、ディスクノード300とストレージ装置820との接続を有効とする。
図5は、ソフトウェアアップデート処理における状態遷移を示す第2の図である。第5の状態(ST5)は、ストレージ装置820に対する接続の切り替え後の状態を示している。ディスクノード200とストレージ装置820との接続を無効としたことにより、ディスクノード200は非使用状態となっている。他方、ディスクノード300とストレージ装置820との接続を有効にしたことにより、以後、ディスクノード300によってストレージ装置820のデータが管理される。
第5の状態ではディスクノード200が非使用となっているため、ディスクノード200のソフトウェアのアップデート処理が行われる。
第6の状態(ST6)は、3台目のディスクノードに対するアップデート処理完了後の状態を示している。ディスクノード200のアップデート対象のソフトウェアは、アップデート処理によりバージョンが「V2」となっている。
ディスクノード200のアップデート処理が完了すると、ストレージ装置810の管理をディスクノード100からディスクノード200に移行する。そのために、ディスクノード100とストレージ装置810との接続を無効とし、ディスクノード200とストレージ装置810との接続を有効とする。
第7の状態(ST7)は、ストレージ装置810に対する接続の切り替え後の状態を示している。ディスクノード100とストレージ装置810との接続を無効としたことにより、ディスクノード100は非使用状態となっている。他方、ディスクノード200とストレージ装置810との接続を有効にしたことにより、以後、ディスクノード200によってストレージ装置810のデータが管理される。
第7の状態ではディスクノード100が非使用となっているため、ディスクノード100のソフトウェアのアップデート処理が行われる。
第8の状態(ST8)は、4台目のディスクノードに対するアップデート処理完了後の状態を示している。ディスクノード100のアップデート対象のソフトウェアは、アップデート処理によりバージョンが「V2」となっている。
このようにして、ストレージ装置への有効な接続を順次切り替えることで、サービスを停止せずにすべてのディスクノード100,200,300,400のソフトウェアのアップデートが可能となる。なお、ディスクノードとストレージ装置との接続の有効化・無効化、および各ディスクノード100,200,300,400におけるアップデート処理のタイミングは、管理ノード600で制御される。そして、各ディスクノード100,200,300,400は、管理ノード600からの指示に従っての有効化・無効化、およびソフトウェアのアップデート処理を実行する。
なお、図5の第8の状態(ST8)で運用中に、ソフトウェアのバージョンを「V3」にアップデートする場合には、ソフトウェアのアップデート処理は、ディスクノード100、ディスクノード200、ディスクノード300、ディスクノード400の順で実行される。その際の各ディスクノード100,200,300,400とストレージ装置810,820,830との接続の関係は、図4、図5に示した状態遷移を逆に辿ることとなる。
ところで、図4、図5に示したようなアップデート処理を実行すると、各ストレージ装置を管理するディスクノードが、アップデート処理前と後とで異なってくる。そのため、マルチノードストレージシステムの運用を継続させるには、アクセスノード700に対して、データアクセスのためのアクセス先となるディスクノードが変更されたことを適宜通知する必要がある。そこで、ソフトウェアのアップデート処理に伴ってアクセスノード700へのアクセス先が変更したことを通知する処理を含め、アップデート処理の機能および処理手順を詳細に説明する。
まずアクセスノード700からストレージ装置内のデータにアクセスを行うための原理について説明する。本実施の形態では、アクセスノード700に仮想ディスクが定義されている。仮想ディスクはセグメントと呼ばれるデータ単位に記憶領域が分割されており、各セグメントに対していずれかのストレージ装置内の記憶領域が対応付けられている。そして、アクセスノード700では、仮想ディスクを介してアクセス対象のデータを管理しているディスクノードを判断し、ストレージ装置810,820,830内のデータにアクセスする。
図6は、仮想ディスクのデータ構造を示す図である。本実施の形態では、仮想ディスク60には仮想ディスク識別子「LVOL−X」が付与されている。ネットワーク経由で接続されたストレージ装置810,820,830には、個々の装置の識別のためにそれぞれ「DS−A」、「DS−B」、「DS−C」というストレージIDが付与されている。
各ストレージ装置810,820,830は、それぞれにおいてRAID5のストレージシステムが構成されている。各ストレージ装置810,820,830で提供される記憶機能は、複数のスライス811a〜811e,821a〜821e,831a〜831eに分割されて管理されている。
仮想ディスク60は、セグメント61〜64という単位で構成される。セグメント61〜64の記憶容量は、ストレージ装置810,820,830における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が1ギガバイトとするとセグメントの記憶容量も1ギガバイトである。仮想ディスク60の記憶容量はセグメント一つ当たりの記憶容量の整数倍である。セグメント61〜64は、それぞれプライマリスライス61a,62a,63a,64aとセカンダリスライス61b,62b,63b,64bとの組(スライスペア)で構成される。
同一セグメントに属する二つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には仮想ディスク識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
図6の例では、仮想ディスク60内のスライスの識別子を、「P」または「S」のアルファベットと数字との組合せで示している。「P」はプライマリスライスであることを示している。「S」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、1番目のセグメント61のプライマリスライスが「P1」で示され、セカンダリスライスが「S1」で示される。
このような仮想ディスク60が定義されていることにより、ストレージ装置を管理するディスクノードが変更された場合に、各セグメントに割り当てられたスライスを管理しているディスクノードの指定を変更するだけですむ。
次に、仮想ディスクを用いたデータアクセスを行うマルチノードストレージシステムにおいて、ディスクノードのソフトウェアのアップデートするために必要な機能について説明する。
図7は、各ノードの機能を示すブロック図である。制御ノード500は、仮想ディスク管理部510と仮想ディスクメタデータ記憶部520とを有している。
仮想ディスク管理部510は、ストレージ装置810,820,830内のスライスを管理する。例えば、仮想ディスク管理部510は、システム起動時に、ディスクノード100,200,300,400に対してメタデータ取得要求を送信する。そして、仮想ディスク管理部510は、メタデータ取得要求に対して返信されたメタデータから仮想ディスクメタデータを生成し、仮想ディスクメタデータ記憶部520に格納する。
仮想ディスクメタデータ記憶部520は、ディスクノード100,200,300,400から収集されたメタデータに基づいて生成された仮想ディスクメタデータを記憶する記憶装置である。例えば、制御ノード500内のRAMの記憶領域の一部が仮想ディスクメタデータ記憶部520として使用される。
管理ノード600は、アップデート制御部610を有している。アップデート制御部610は、ディスクノード100,200,300,400に実行させるソフトウェアのアップデート処理を制御する。なお、アップデート制御部610の機能の詳細は後述する。
アクセスノード700は、仮想ディスクアクセス制御部710を有している。仮想ディスクアクセス制御部710は、ユーザからの仮想ディスク60内のデータを指定したアクセス要求に応じて、指定されたデータを管理するディスクノードに対してデータアクセスを行う。具体的には、仮想ディスクアクセス制御部710は、アクセス対象のデータが記憶された仮想ディスク60内のブロックを特定する。次に、仮想ディスクアクセス制御部710は、特定したブロックに対応するセグメントを特定する。さらに、仮想ディスクアクセス制御部710は、セグメントを構成するプライマリスライスに対応するディスクノードおよびそのディスクノード内のスライスを特定する。そして、仮想ディスクアクセス制御部710は、特定したディスクノードに対して、特定したスライスへのアクセス要求を出力する。
ディスクノード200は、通信部210、データアクセス部220、データ管理部230、ソフトウェア(SW)アップデート部240、メタデータ記憶部250、および接続ストレージ管理部260を有している。
通信部210は、ネットワーク10を介して、他のディスクノード100,300,400、制御ノード500、管理ノード600、およびアクセスノード700とのデータ通信を行う。データアクセス部220は、アクセスノード700からアクセス要求に応答して、ストレージ装置810,820のうち、有効な接続関係を有するストレージ装置内のデータにアクセスする。データ管理部230は、有効な接続関係を有するストレージ装置内のデータを管理する。SWアップデート部240は、ディスクノード200で実行されるソフトウェアのアップデートを行う。メタデータ記憶部250は、有効な接続関係を有するストレージ装置内のスライスそれぞれについて、そのスライスが割り当てられているセグメントに関する情報(メタデータ)を記憶する。接続ストレージ管理部260は、二つのストレージ装置810,820の接続の有効・無効を管理する。なお、ディスクノード200の機能の詳細は後述する。
他のディスクノード100,300,400もディスクノード200と同様に、通信部110,310,410、データアクセス部120,320,420、データ管理部130,330,430、SWアップデート部140,340,440、メタデータ記憶部150,350,450、接続ストレージ管理部160,360,460を有している。ディスクノード100,300,400の構成要素は、ディスクノード200の同名の構成要素と同じ機能を有している。
図8は、ストレージ装置のデータ構造例を示す図である。ストレージ装置810には、スライス812a,812b,812c,・・・とは別に、複数のメタデータ813a,813b,813c,・・・が格納されている。ストレージ装置810に格納されたメタデータ813a,813b,813c,・・・は、接続が有効となっているディスクノードの起動時に、そのディスクノードのデータ管理部によって読み出され、メタデータ記憶部に格納される。
例えば、ディスクノード200においてストレージ装置810との接続関係が有効になっている場合、ストレージ装置810のメタデータ813a,813b,813c,・・・はデータ管理部230によって読み出され、メタデータ記憶部250に格納される。以下に、ストレージ装置810内のメタデータ813a,813b,813c,・・・を格納したメタデータ記憶部250のデータ構造について説明する。
図9は、メタデータ記憶部のデータ構造例を示す図である。メタデータ記憶部250には、メタデータテーブル251が格納されている。メタデータテーブル251には、ストレージID、スライスID、状態、仮想ディスクID、セグメントID、ペアのストレージID、およびペアのスライスIDの欄が設けられている。メタデータテーブル251内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す一つのレコードを構成している。
ストレージIDの欄は、ストレージ装置810の識別情報(ストレージID)が設定される。
スライスIDの欄には、メタデータに対応するスライスのストレージ装置810内での識別情報(スライスID)が設定される。
状態の欄には、スライスの状態を示す状態フラグが設定される。スライスが仮想ディスクのセグメントに割り当てられていない場合、状態フラグ「F」が設定される。仮想ディスクのセグメントのプライマリストレージに割り当てられている場合、状態フラグ「P」が設定される。仮想ディスクのセグメントのセカンダリストレージに割り当てられている場合、状態フラグ「S」が設定される。
仮想ディスクIDの欄には、スライスに対応するセグメントが属する仮想ディスクを識別するための識別情報(仮想ディスクID)が設定される。
セグメントIDの欄には、スライスが割り当てられたセグメントの識別情報(セグメントID)が設定される。
ペアのストレージIDの欄には、ペアのスライス(同じセグメントに属する別のスライス)を有するストレージ装置の識別情報(ストレージID)が設定される。
ペアのスライスIDの欄には、ペアのスライスを、そのスライスが属するストレージ装置内で識別するための識別情報(スライスID)が設定される。
各ディスクノード100,200,300,400のメタデータ記憶部150,250,350,450に格納されたメタデータは、制御ノード500からの要求に応じて制御ノード500に送信される。制御ノード500では、ディスクノード100,200,300,400から収集したメタデータに基づいて、仮想ディスク60へのスライスの割当を定義した仮想ディスクメタデータを作成する。具体的には、制御ノード500の仮想ディスク管理部510が、収集したメタデータを仮想ディスクIDによって分類する。そして、仮想ディスク管理部510は、仮想ディスクIDが同じメタデータの集合を、その稼動ディスクIDで示される仮想ディスクに対応する仮想ディスクメタデータとする。作成された仮想ディスクメタデータは、仮想ディスクメタデータ記憶部520に格納される。
図10は、仮想ディスクメタデータ記憶部のデータ構造例を示す図である。仮想ディスクメタデータ記憶部520には、仮想ディスクメタデータテーブル521が格納されている。仮想ディスクメタデータテーブル521には、ストレージID、ディスクノードIPアドレス、スライスID、状態、仮想ディスクID、セグメントID、ペアのストレージID、およびペアのスライスIDの欄が設けられている。仮想ディスクメタデータテーブル521内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す一つのレコードを構成している。仮想ディスクメタデータテーブル521のディスクノードIPアドレス以外の各欄に設定される情報は、メタデータテーブル251の同名の欄と同種の情報である。
ディスクノードIPアドレスの欄には、ストレージIDで示されるストレージ装置を管理しているディスクノードのIPアドレスが設定される。すなわち、各ストレージ装置は2台のディスクノードと接続できるが、有効な接続関係は一方のみである。そのため、ディスクノードIPアドレスの欄には、各ストレージ装置と有効な接続関係を有するディスクノードのIPアドレスが設定される。
仮想ディスクメタデータテーブル521の内容は、アクセスノード700からのメタデータ要求に応答して、仮想ディスク管理部510によってアクセスノード700に送信される。アクセスノード700では、仮想ディスクアクセス制御部710が、図10に示した仮想ディスクメタデータテーブル521と同様のメタデータを保持する。仮想ディスクアクセス制御部710は、ユーザからの仮想ディスクへのデータアクセスがあると、保持しているメタデータに基づいて、アクセス対象のデータを管理するディスクノードのIPアドレス、およびそのデータが格納されているスライスのスライスIDを判断できる。
次に、以上のような構成のシステムにおけるソフトウェアのアップデート処理の手順を説明する。
図11は、ソフトウェアアップデート処理の手順を示すシーケンス図である。図11に示した処理は、図4に示した第1の状態(ST1)から第2の状態(ST2)に移行する間の処理である。図11の例では、アップデート処理中にもアクセスノード700からのデータアクセスが発生している。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS11]管理ノード600のアップデート制御部610は、システムの管理者からの操作入力に応答して、ソフトウェアのアップデート指示をディスクノード400に送信する。これにより、ディスクノード400のSWアップデート部440によって、ソフトウェアのアップデート処理が開始される。
[ステップS12]アクセスノード700の仮想ディスクアクセス制御部710は、ユーザからのデータアクセス要求に応答して、アクセス対象のデータを管理するディスクノードのIPアドレスを判断する。図11の例では、ストレージ装置830に格納されているデータへのデータアクセスが発生している。この場合、仮想ディスクアクセス制御部710は、ディスクノード300に対してアクセス要求を送信する。
[ステップS13]ディスクノード300のデータアクセス部320は、アクセスノード700からのアクセス要求に応じて、ストレージ装置830に対するI/Oアクセスを行う。例えば、データ書き込みのアクセス要求であれば、データアクセス部320は、ストレージ装置830にデータの書き込みを行う。また、データ読み出しのアクセス要求であれば、データアクセス部320は、ストレージ装置830からデータの読み出しを行う。
[ステップS14]ストレージ装置830は、ディスクノード300からのI/Oアクセスに応じて、データの入出力を行う。データ書き込みが行われた場合、ストレージ装置830においてデータの書き込みが行われた後、書き込み完了の応答がディスクノード300に返される。また、データ読み出しが行われた場合、ストレージ装置830においてデータが読み出され、読み出したデータと共に読み出し完了の応答がディスクノード300に返される。
[ステップS15]ディスクノード300のデータアクセス部320は、アクセス要求に対応する完了の応答を返す。データ読み出しのアクセスであれば、応答内容にデータが含められる。
[ステップS16]その後、ディスクノード400におけるソフトウェアのアップデート処理が完了したものとする。すると、ディスクノード400のSWアップデート部440は、管理ノード600に対してアップデート完了の応答を送信する。
[ステップS17]管理ノード600のアップデート制御部610は、ストレージ装置830との間の接続の無効化要求をディスクノード300に対して送信する。
[ステップS18]ディスクノード300の接続ストレージ管理部360は、ストレージ装置830に接続された接続ポートの状態を無効に設定する。すると、ディスクノード300からストレージ装置830に接続断を示す情報が送信される。
[ステップS19]ストレージ装置830は、ディスクノード300との間の接続を遮断する処理を行い、最後に完了の応答をディスクノード300に送信する。
[ステップS20]ディスクノード300の接続ストレージ管理部360は、管理ノード600に対して接続の無効化完了の応答を送信する。
[ステップS21]管理ノード600のアップデート制御部610は、ソフトウェアのアップデート処理が完了したディスクノード400に対して、ストレージ装置830との間の接続の有効化要求を送信する。
[ステップS22]ディスクノード400の接続ストレージ管理部460は、ストレージ装置830に接続された接続ポートの状態を有効に設定する。すると、ディスクノード300からストレージ装置830に接続要求が送信される。
[ステップS23]ストレージ装置830は、ディスクノード400との間の接続を確立し、最後の完了の応答をディスクノード400に送信する。
[ステップS24]ディスクノード400の接続ストレージ管理部460は、管理ノード600に対して接続の有効化完了の応答を送信する。
[ステップS25]管理ノード600のアップデート制御部610は、ストレージ装置830を管理するディスクノードのIPアドレスを、ディスクノード400のIPアドレスに変更することを示すIPアドレス変更通知を制御ノード500に送信する。
[ステップS26]制御ノード500の仮想ディスク管理部510は、IPアドレス変更通知に応じて、仮想ディスクメタデータ記憶部520内の仮想ディスクメタデータテーブル521から、ストレージ装置830のストレージID「DP−C」でメタデータを検索する。そして、仮想ディスク管理部510は、該当するするメタデータのディスクノードIPアドレスに、ディスクノード400のIPアドレスを設定する。その後、仮想ディスク管理部510は、IPアドレス変更処理の完了応答を管理ノード600に送信する。
[ステップS27]その後、アクセスノード700に対して、ストレージ装置830に格納されているデータへのデータアクセス要求が入力されたものとする。この時点では、アクセスノード700は、ストレージ装置830をディスクノード300が管理しているものと認識している。そこで、アクセスノード700の仮想ディスクアクセス制御部710は、ディスクノード300に対してアクセス要求を送信する。
[ステップS28]ディスクノード300のデータアクセス部320は、ストレージ装置830が管理対象ではないため、アクセスノード700に対してエラーを応答する。
[ステップS29]アクセスノード700の仮想ディスクアクセス制御部710は、メタデータ要求を制御ノード500に送信する。
[ステップS30]制御ノード500の仮想ディスク管理部510は、仮想ディスクメタデータ記憶部520に格納されているメタデータをアクセスノード700に応答する。
[ステップS31]アクセスノード700の仮想ディスクアクセス制御部710は、制御ノード500から取得したメタデータを格納する。また、仮想ディスクアクセス制御部710は、取得したメタデータにより、仮想ディスク60のセグメントへのスライス割当の最新の状態を認識する。そして、仮想ディスクアクセス制御部710は、取得したメタデータに基づいてストレージ装置830を管理しているディスクノード400のIPアドレスを認識し、ディスクノード400に対してアクセス要求を送信する。
[ステップS32]ディスクノード400のデータアクセス部420は、アクセスノード700からのアクセス要求に応じて、ストレージ装置830に対するI/Oアクセスを行う。
[ステップS33]ストレージ装置830は、ディスクノード400からのI/Oアクセスに応じて、データの入出力を行い、その結果をディスクノード400に応答する。
[ステップS34]ディスクノード400のデータアクセス部420は、アクセス要求に対応する完了の応答を返す。データ読み出しのアクセスであれば、応答内容にデータが含められる。
このように、ソフトウェアのアップデート処理とストレージ装置への接続の有効化・無効化処理が連動して実行される。これにより、マルチノードストレージシステムにおけるサービスを継続しながら、各ディスクノードを順に非使用状態として、ソフトウェアのアップデート処理を実行させることができる。
次に、ソフトウェアのアップデート指示とストレージ装置への接続の有効化・無効化指示を行うためのアップデート制御部610の機能を詳細に説明する。
図12は、アップデート制御部の詳細機能を示すブロック図である。アップデート制御部610は、バージョン情報記憶部611、接続情報記憶部612、ディスクノードIPアドレス記憶部613、複写元ソフトウェア記憶部614、通信部615、アップデート対象判別部616、接続切り替え指示部617、アップデート指示部618、および接続ディスクノード変更通知部619を有する。
バージョン情報記憶部611は、ディスクノード100,200,300,400に実装されているソフトウェアのバージョンを記憶する記憶機能である。例えば、HDD603の記憶領域の一部がバージョン情報記憶部611として使用される。
接続情報記憶部612は、各ディスクノード100,200,300,400とストレージ装置810,820,830との間の接続関係、および有効な接続に関する情報を記憶する記憶機能である。例えば、HDD603の記憶領域の一部が、接続情報記憶部612として使用される。
複写元ソフトウェア記憶部614は、ディスクノード100,200,300,400で実行されているソフトウェアの新しいバージョンのソフトウェア(プログラムやデータ)を記憶する記憶機能である。例えば、HDD603の記憶領域の一部が、複写元ソフトウェア記憶部614として使用される。
通信部615は、ネットワーク10を介して、所定の通信プロトコルによるデータ通信を行う。本実施の形態では、通信部615はTCP/IP(Transmission Control Protocol/Internet Protocol)による通信を行うものとする。
アップデート対象判別部616は、ディスクノード100,200,300,400で実行されているソフトウェアのバージョンアップを指示する操作入力に応答し、ソフトウェアのアップデート対象のディスクノードを判断する。具体的には、アップデート対象判別部616は、バージョン情報記憶部611を参照して、各ディスクノード100,200,300,400に現在実装されているソフトウェアのバージョンを認識する。また、アップデート対象判別部616は、接続情報記憶部612を参照して、各ストレージ装置810,820,830がどのディスクノードに有効に接続されているのかを判断する。そして、アップデート対象判別部616は、いずれのストレージ装置も有効に接続されていないディスクノードであり、かつ旧バージョンのソフトウェアが実装されているディスクノードをアップデート対象とする。
また、アップデート対象判別部616は、アップデート対象のソフトウェアアップデート要求をアップデート指示部618に通知する。アップデート指示部618からアップデート完了の応答を受け取ると、アップデート対象判別部616は、すべてのディスクノードが新バージョンになるまで、順次アップデート対象とするディスクノードを判断する。
なお、アップデート対象判別部616は、アップデートするディスクノードにストレージ装置が有効に接続されていれば、その接続の無効化を接続切り替え指示部617に要求する。また、アップデート対象判別部616は、接続の無効化によりディスクノードとの有効な接続関係を失ったストレージ装置がある場合、そのストレージ装置とアップデート済のディスクノードとの接続関係の有効化を、接続切り替え指示部617に対して要求する。
さらに、アップデート対象判別部616は、接続切り替え指示部617から接続切り替え完了の応答を受け取ると、バージョン情報記憶部611内のバージョン情報、接続情報記憶部612内の接続情報を更新する。そして、アップデート対象判別部616は、変更された接続関係を接続ディスクノード変更通知部619に通知する。
接続切り替え指示部617は、アップデート対象判別部616からストレージ装置とディスクノードとの接続関係の有効化、または無効化の要求に応じて、該当するディスクノードに対して接続切り替え指示を送信する。
アップデート指示部618は、アップデート対象判別部616からのディスクノードのソフトウェアアップデート要求に応じて、ディスクノードにアップデート指示を送信する。その際、アップデート指示部618は、アップデート対象のディスクノードに新バージョンのアップデートソフトウェアが格納されていなければ、複写元ソフトウェア記憶部614から新バージョンのソフトウェアを読み出し、ディスクノードに送信する。
接続ディスクノード変更通知部619は、変更された接続関係をアップデート対象判別部616から受け取ると、新たな接続関係に沿って、ストレージ装置を管理するディスクノードのIPアドレス変更通知を制御ノード500に送信する。
なお、図1に示したアップデート制御装置1の機能は、図12のアップデート制御部610に含まれている。機能間の対応関係は以下の通りである。
アップデート制御装置1の接続情報記憶手段1aの機能は、アップデート制御部610の接続情報記憶部612に含まれる。アップデート制御装置1のアップデート対象選択手段1bと接続情報更新手段1eとの機能は、アップデート制御部610のアップデート対象判別部616に含まれる。アップデート制御装置1のアップデート指示手段1cの機能は、アップデート制御部610のアップデート指示部618に含まれる。アップデート制御装置1の接続切り替え指示手段1dの機能は、アップデート制御部610の接続切り替え指示部617に含まれる。
次に、アップデート制御部610内に保持される情報について詳細に説明する。
図13は、バージョン情報記憶部のデータ構造例を示す図である。バージョン情報記憶部611は、バージョン情報テーブル611aを有している。バージョン情報テーブル611aには、ディスクノードIDとバージョンとの欄が設けられている。ディスクノードIDの欄には、ディスクノードの識別情報(ディスクノードID)が設定される。バージョンの欄には、ディスクノードに実装されているソフトウェアのバージョンが設定される。なお、バージョン情報テーブル611aは、アップデート制御部610による管理対象のソフトウェアごとに設けられる。
図14は、接続情報記憶部のデータ構造例を示す図である。接続情報記憶部612は、接続情報テーブル612aを有している。接続情報テーブル612aには、ディスクノードID、第1の接続先デバイスID、第2の接続先デバイスID、および有効な接続の欄が設けられている。
ディスクノードIDの欄には、ディスクノードの識別情報(ディスクノードID)が設定される。第1の接続先デバイスIDの欄には、ディスクノードのポート番号が「1」である接続ポートに接続されたストレージ装置の識別情報(ストレージID)が設定される。第2の接続先デバイスIDの欄には、ディスクノードのポート番号が「2」である接続ポートに接続されたストレージ装置の識別情報(ストレージID)が設定される。有効な接続の欄には、接続関係が有効となっている接続ポートのポート番号が設定される。
図15は、ディスクノードIPアドレス記憶部のデータ構造例を示す図である。ディスクノードIPアドレス記憶部613は、IPアドレステーブル613aを有している。
IPアドレステーブル613aには、ディスクノードIDとIPアドレスとの欄が設けられている。ディスクノードIDの欄には、ディスクノードの識別情報(ディスクノードID)が設定される。IPアドレスの欄には、対応するディスクノードIDで示されるディスクノードのIPアドレスが設定される。
次に、管理ノード600のアップデート制御部610で実行されるシステムアップデート処理の手順について詳細に説明する。
図16は、システムアップデート処理の手順を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。この処理は、システムアップデートを指示する操作入力が行われた場合に開始される。
[ステップS41]アップデート対象判別部616は、システムアップデートが完了したか否かを判断する。システムアップデートが完了した場合とは、バージョン情報記憶部611で示される各ディスクノード100,200,300,400のソフトウェアのバージョンが、すべて複写元ソフトウェア記憶部614に格納されているソフトウェアのバージョンと同一となった場合である。システムアップデートが完了した場合、処理が終了する。システムアップデートが完了していなければ、処理がステップS42に進められる。
[ステップS42]アップデート対象判別部616は、ストレージ装置と接続が切れている非使用状態のディスクノードを検索する。具体的には、アップデート対象判別部616は、接続情報記憶部612内の接続情報テーブル612aを参照する。そして、アップデート対象判別部616は、有効な接続が空欄となっているディスクノードを検索し、該当するディスクノードが非使用であると判断する。
[ステップS43]アップデート対象判別部616は、非使用のディスクノードに対してバージョンアップの必要があるか否かを判断する。具体的には、アップデート対象判別部616は、バージョン情報記憶部611内のバージョン情報テーブル611aを参照し、非使用ディスクノードのソフトウェアのバージョンを判断する。そして、アップデート対象判別部616は、非使用ディスクノードのソフトウェアのバージョンが新バージョンでなければ、バージョンアップが必要と判断する。他方、アップデート対象判別部616は、非使用ディスクノードのソフトウェアのバージョンが新バージョンであれば、バージョンアップが不要と判断する。バージョンアップが必要であれば、処理がステップS44に進められる。バージョンアップが不要であれば、処理がステップS47に進められる。
[ステップS44]アップデート指示部618は、非使用ディスクノードへアップデート指示を送信する。具体的には、アップデート対象判別部616は、バージョンアップが必要と判断されたディスクノードのIPアドレスをディスクノードIPアドレス記憶部613内のIPアドレステーブル613aから取得する。そして、アップデート対象判別部616は、取得したIPアドレスを含むソフトウェアアップデート要求を、アップデート指示部618に渡す。アップデート指示部618は、アップデート対象判別部616から取得したIPアドレスを宛先としたアップデート指示を出力する。
これにより、非使用のディスクノードにおいてソフトウェアのアップデート処理が実行される。アップデート処理が完了すると、ディスクノードからアップデート完了の応答が返される。
[ステップS45]アップデート指示部618は、非使用のディスクノードからアップデート完了の応答を受信する。そして、アップデート指示部618は、非使用のディスクノードのソフトウェアのアップデート処理が完了したことをアップデート対象判別部616に通知する。
[ステップS46]アップデート対象判別部616は、バージョン情報記憶部611内のバージョン情報テーブル611aを更新する。すなわち、アップデート対象判別部616は、アップデート処理が完了したディスクノードのソフトウェアのバージョンを最バージョンに更新する。
[ステップS47]アップデート対象判別部616は、次にアップデートするディスクノードを検索する。具体的には、アップデート対象判別部616は、接続情報記憶部612内の接続情報テーブル612aを参照し、アップデート処理が完了したディスクノードと同じストレージ装置に接続されている他のディスクノードを抽出する。そして、アップデート対象判別部616は、抽出したディスクノードのうち、ステップS42で検出されていない未処理のディスクノードを、次にアップデートするディスクノードとする。
[ステップS48]接続切り替え指示部617は、次にアップデートするディスクノードに対して、接続の無効化を指示する。具体的には、アップデート対象判別部616は、次にアップデートするディスクノードのIPアドレスをディスクノードIPアドレス記憶部613内のIPアドレステーブル613aから取得する。そして、アップデート対象判別部616は、取得したIPアドレスを含む接続関係の無効化要求を、接続切り替え指示部617に渡す。接続切り替え指示部617は、アップデート対象判別部616から取得したIPアドレスを宛先とした接続無効化指示を出力する。
これにより、次にアップデートを行うディスクノードにおいて、現在有効となっている接続が無効状態に変更される。無効化処理が完了すると、ディスクノードから無効化完了の応答が返される。
[ステップS49]接続切り替え指示部617は、次にアップデートするディスクノードからの無効化完了の応答を受信する。そして、接続切り替え指示部617は、次にアップデートするディスクノードの接続の無効化処理が完了したことをアップデート対象判別部616に通知する。
[ステップS50]アップデート対象判別部616は、接続情報記憶部612内の接続情報テーブル612aを更新する。具体的には、アップデート対象判別部616は、接続の無効化処理をしたディスクノードに対応する有効な接続を空欄(有効な接続なし)にする。
[ステップS51]接続切り替え指示部617は、非使用のディスクノードに対して、接続の有効化を指示する。具体的には、アップデート対象判別部616は、未接続のディスクノードのIPアドレスをディスクノードIPアドレス記憶部613内のIPアドレステーブル613aから取得する。また、アップデート対象判別部616は、接続情報記憶部612の接続情報テーブル612aを参照し、非使用のディスクノードと次にアップデートするディスクノードとの双方に接続されたストレージ装置を判断する。
さらに、アップデート対象判別部616は、非使用のディスクノードにおいて、双方に接続されたストレージ装置に接続された接続ポートのポート番号を、有効化対象ポート番号として取得する。そして、アップデート対象判別部616は、取得したIPアドレスと有効化対象ポート番号とを含む接続関係の有効化要求を、接続切り替え指示部617に渡す。接続切り替え指示部617は、アップデート対象判別部616から取得したIPアドレスを宛先とし、有効化対象ポート番号をデータとして含む接続有効化指示を出力する。
これにより、非使用のディスクノードにおいて、現在無効となっている接続が有効状態に変更される。有効化処理が完了すると、ディスクノードから有効化完了の応答が返される。
[ステップS52]接続切り替え指示部617は、非使用だったディスクノードからの有効化完了の応答を受信する。そして、接続切り替え指示部617は、非使用だったディスクノードの接続の有効化処理が完了したことをアップデート対象判別部616に通知する。
[ステップS53]アップデート対象判別部616は、接続情報記憶部612内の接続情報テーブル612aを更新する。具体的には、アップデート対象判別部616は、接続の有効化処理をしたディスクノードに対応する有効な接続の欄に、有効化対象接続ポートのポート番号を設定する。その後、処理がステップS41に進められる。
次に、管理ノード600からの指示に従ってソフトウェアのアップデート処理および接続の有効化・無効化処理を行うためのディスクノードの機能を詳細に説明する。
図17は、ディスクノードの詳細機能を示すブロック図である。図17には、SWアップデート部240と接続ストレージ管理部260と機能をより詳細に示している。
SWアップデート部240は、アップデートソフトウェア記憶部241、アップデート実行部242、およびアップデート完了通知部243を有している。
アップデートソフトウェア記憶部241は、アップデート対象のソフトウェアを記憶する記憶機能である。例えば、ディスクノード200に内蔵されたHDDの記憶領域の一部がアップデートソフトウェア記憶部241として使用される。
アップデート実行部242は、管理ノード600からアップデート指示を受け取ると、アップデート対象のソフトウェアをアップデートソフトウェア記憶部241から取得し、OSなどのアップデート処理を行う。具体的には、アップデート実行部242は、アップデート指示を受け取ると、管理ノード600の複写元ソフトウェア記憶部614に格納されている新バージョンのソフトウェアが、アップデートソフトウェア記憶部241に格納されているか否かを判断する。未格納の場合、アップデート実行部242は、管理ノード600の複写元ソフトウェア記憶部614から新バージョンのソフトウェアを取得し、アップデートソフトウェア記憶部241に格納する。その後、アップデート実行部242は、アップデート処理を実行する。
なお、アップデート実行部242がアップデート処理を実行すると、ディスクノード200におけるデータ提供サービスが一時的に停止する。例えば、アップデート処理中にOSの再起動が行われる。OSの停止期間中は、データアクセス部220によるストレージ装置内のデータ提供が停止する。
アップデート完了通知部243は、アップデート実行部242によるアップデート処理が完了すると、アップデート完了通知を管理ノード600に対して送信する。
接続ストレージ管理部260は、二つのデバイス接続部261,262、接続切り替え部263、および切り替え完了通知部264を有している。
デバイス接続部261は、ストレージ装置810に設けられた二つのホスト接続部814,815のうちの一方のホスト接続部815に接続されている。また、デバイス接続部262は、ストレージ装置820に設けられた二つのホスト接続部824,825のうちの一方のホスト接続部824に接続されている。各ストレージ装置810,820のホスト接続部814,815,824,825は、ストレージ装置810,820をコンピュータと接続するためのインタフェースである。デバイス接続部261,262には、それぞれ接続ポート番号が割り振られている。図17の例では、デバイス接続部261の接続ポート番号は「1」であり、デバイス接続部262の接続ポート番号は「2」である。
デバイス接続部261,262は、接続関係の有効・無効を示す接続フラグを有している。接続フラグの値は、接続切り替え部263によって設定される。接続関係が有効であれば、デバイス接続部261,262は、データアクセス部220からのアクセス要求などに応答して、接続されたストレージ装置内のデータアクセスを行う。接続関係が無効であれば、デバイス接続部261,262はストレージ装置へのアクセスは行わず、データアクセス部220からのアクセス要求などに対してはエラーを返す。
接続切り替え部263は、管理ノード600の接続切り替え指示部617からの指示に応じて有効に接続するストレージ装置の切り替えを行う。具体的には、接続切り替え部263は、接続切り替え指示部617から、接続ポートを指定した有効化要求を受け取ると、該当する接続ポートのデバイス接続部における接続フラグを「有効」に設定する。また、接続切り替え部263は、接続切り替え指示部617から、接続ポートを指定した無効化要求を受け取ると、該当する接続ポートのデバイス接続部における接続フラグを「無効」に設定する。
切り替え完了通知部264は、接続切り替え部263による接続の有効化、または無効化処理が完了すると、切り替え完了通知を管理ノード600に対して送信する。
データアクセス部220は、接続が有効となっているデバイス接続部を介してストレージ装置内のデータにアクセスすることができる。また、データ管理部230は、接続が有効となっているデバイス接続部を介してストレージ装置内のデータを管理する。例えば、データ管理部230は、一方のデバイス接続部が無効化され他方のデバイス接続部が有効化された場合、有効化されたデバイス接続部に接続されたストレージ装置からメタデータを読み出し、メタデータ記憶部250に格納する。
次に、ディスクノード200におけるソフトウェアアップデート処理と接続切り替え処理とについて詳細に説明する。
図18は、ソフトウェアアップデート処理の手順を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS61]SWアップデート部240のアップデート実行部242は、管理ノード600からのソフトウェアのアップデート指示を受信する。
[ステップS62]アップデート実行部242は、アップデート指示で示された新バージョンのソフトウェアがアップデートソフトウェア記憶部241に格納されているか否かを判断する。新バージョンのソフトウェアが格納されていなければ、アップデート実行部242は、管理ノード600に新バージョンのソフトウェアを要求し、複写元ソフトウェア記憶部614に格納されている新バージョンのソフトウェアを取得する。そして、アップデート実行部242は、取得した新バージョンのソフトウェアをアップデートソフトウェア記憶部241に格納する。
[ステップS63]アップデート実行部242は、アップデートソフトウェア記憶部241に格納されたソフトウェアを用いて、ディスクノード200内のソフトウェアのアップデート処理を行う。なお、アップデート処理実行過程でシステムの再起動が必要になると、OSによってディスクノード200内のすべての機能が停止される。そのため、データアクセス部220によるアクセスノード700へのデータ提供サービスも停止する。OSが先起動されると、図17に示したディスクノード200内の各機能もOSによって再起動される。
[ステップS64]アップデート完了通知部243は、アップデート実行部242によるソフトウェアのアップデートが完了すると、管理ノード600に対してアップデート完了応答を送信する。その後、ソフトウェアアップデート処理が終了する。
図19は、接続切り替え処理の手順を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS71]接続切り替え部263は、管理ノード600から、接続の無効化または有効化を指示する接続切り替え指示を受信する。
[ステップS72]接続切り替え部263は、接続切り替え指示が、無効化指示か否かを判断する。無効化指示であれば、処理がステップS73に進められる。有効化指示であれば、処理がステップS76に進められる。
[ステップS73]無効化指示の場合、接続切り替え部263は、現在有効に接続されている接続ポートの状態を無効に設定する。これにより、無効とされた接続ポートに対応するデバイス接続部とストレージ装置との間の接続が遮断される。
[ステップS74]データ管理部230は、接続が無効化されたことにより、管理対象となるストレージ装置が無くなったことを認識し、メタデータ記憶部250内のメタデータを破棄する。
[ステップS75]切り替え完了通知部264は、無効化完了応答を管理ノード600に対して送信する。その後、処理が終了する。
[ステップS76]有効化指示の場合、接続切り替え部263は、有効化指示に含まれるポート番号に対応する接続ポートの状態を有効に設定する。これにより、有効とされた接続ポートに対応するデバイス接続部とストレージ装置との間の接続が確立される。
[ステップS77]データ管理部230は、接続が有効化されたことにより、新たにストレージ装置が管理対象になったことを認識し、有効な接続関係を有するストレージ装置からメタデータを読み出す。そして、データ管理部230は、読み出したメタデータをメタデータ記憶部250に格納する。
[ステップS78]切り替え完了通知部264は、有効化完了応答を管理ノード600に対して送信する。その後、処理が終了する。
以上のようにして、マルチノードストレージシステムのサービスを継続しながら、各ディスクノード100,200,300,400のソフトウェアをアップデートすることができる。しかも、ストレージ装置への接続の切り替えを行ったとき、メタデータにおけるIPアドレスの変更のみによって、アクセス要求を出力すべきディスクノードの変更が可能である。そのため、接続の切り替えによってストレージ装置へのアクセスができなくなる期間は短時間ですむ。
ところで、マルチノードストレージシステムでは、制御ノード500は、各ディスクノード100,200,300,400の状態を監視し、状態が変化した場合に仮想ディスクへのスライスの割当を変更する機能を有する。例えば、ディスクノード100,200,300,400の1台において何らかの障害が発生すると、制御ノード500はリカバリ処理を行う。リカバリ処理は、障害によりアクセスできないストレージ装置が発生したことで、2重化状態が崩れたセグメントに新たなスライスを割り当て、2重化状態を回復する処理である。このような監視処理の一貫として、制御ノード500は、運用中のディスクノード100,200,300,400からメタデータを収集する機能を有している。このメタデータの収集機能を用いれば、IPアドレスの変更処理を行わなくても、接続切り替えを行った際のデータアクセス先の変更をアクセスノード700に認識させることができる。
図20は、ソフトウェアアップデート処理の手順を示すシーケンス図である。なお、図20に示すステップS81〜S90の各処理は、それぞれ図11に示したステップS11〜S20の処理と同じである。図20に示すステップS93〜S96の各処理は、それぞれ図11に示したステップS21〜S24の処理と同じである。図20に示すステップS101〜S108の各処理は、それぞれ図11に示したステップS27〜S34の処理と同じである。そこで、以下、図20に示す処理のうち図11の処理と異なる処理について説明する。
まず、ステップS91〜S92の処理をステップ番号に沿って説明する。
[ステップS91]接続の無効化を完了したディスクノード300のデータ管理部330は、制御ノード500に対してストレージ装置830の接続断通知を送信する。
[ステップS92]接続断通知を受け取ると、制御ノード500の仮想ディスク管理部510は、接続断となったストレージ装置に対応するメタデータを、仮想ディスクメタデータ記憶部520内の仮想ディスクメタデータテーブル521から削除する。そして、仮想ディスク管理部510は、接続断通知の確認応答をディスクノード300に送信する。
次に、ステップS97〜ステップS100の処理をステップ番号に沿って説明する。
[ステップS97]接続の有効化を完了したディスクノード400のデータ管理部430は、有効化通知を制御ノード500に送信する。
[ステップS98]制御ノード500の仮想ディスク管理部510は、有効化通知に対する確認応答をディスクノード400に送信する。
[ステップS99]ディスクノード400のデータ管理部430は、ストレージ装置830からメタデータを読み出し、制御ノード500に送信する。
[ステップS100]制御ノード500の仮想ディスク管理部510は、ディスクノード400から送られたメタデータを、ディスクノード400の識別情報(例えばIPアドレス)に対応付けて、仮想ディスクメタデータ記憶部520内の仮想ディスクメタデータテーブル521に登録する。そして、仮想ディスク管理部510は、メタデータを受信したことを示す確認応答をディスクノード400に送信する。
このように制御ノード500の仮想ディスクメタデータテーブル521を再構成することで、以後、アクセスノード700からのメタデータ要求に対して、接続切り替え後の接続関係を示すメタデータをアクセスノード700に応答することができる。すなわち、制御ノード500におけるメタデータの収集機能を用いて接続の切り替え結果をアクセスノード700に認識させることができる。制御ノード500におけるメタデータの収集機能は、新たなディスクノードの追加処理やディスクノードの障害発生時のリカバリ処理などに利用されており、確実に実行される(例えば、ディスクノードや制御ノードでの処理の優先度が高く設定される)。そのため、メタデータの収集機能を利用することで、ストレージ装置を管理するディスクノードの切り替えを安全かつ確実に行うことができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御ノード500、管理ノード600、およびディスクノード100,200,300,400が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) 複数のストレージ装置と、前記ストレージ装置よりも多い台数の複数のディスクノードとが設けられ、前記ストレージ装置それぞれが少なくとも2台の前記ディスクノードに接続され、一つの接続のみが前記ストレージ装置内のデータの入出力に使用される有効な接続関係と定義されており、前記ディスクノードには1台または2台の前記ストレージ装置が接続されており、複数の前記ディスクノードに接続されたコンピュータに、複数の前記ディスクノードのソフトウェアアップデート処理を制御させるためのアップデート制御プログラムであって、
前記コンピュータを、
複数の前記ストレージ装置と複数の前記ディスクノードとの接続関係、および前記有効な接続関係を記憶する接続情報記憶手段を参照し、前記有効な接続関係を有していない前記ディスクノードをアップデート対象ディスクノードとして選択し、前記アップデート対象ディスクノードの前記ソフトウェアのアップデートが完了した場合、前記アップデート対象ディスクノードと同じ前記ストレージ装置に接続された前記ディスクノードのうち、アップデートが未処理の前記ディスクノードを次選択ディスクノードとして決定し、前記次選択ディスクノードの接続関係が無効化された後、前記次選択ディスクノードを前記アップデート対象ディスクノードとして選択するアップデート対象選択手段、
前記アップデート対象選択手段で前記アップデート対象ディスクノードが選択されるごとに、選択された前記アップデート対象ディスクノードに対して前記ソフトウェアのアップデートを指示するアップデート指示手段、
前記次選択ディスクノードが決定されると、前記次選択ディスクノードに有効に接続された前記ストレージ装置の有効な接続を、前記次選択ディスクノードから前記アップデート対象ディスクノードに切り替える指示を、前記次選択ディスクノードと前記アップデート対象ディスクノードとに出力する接続切り替え指示手段、
前記接続切り替え指示手段の指示に応じて有効化または無効化された接続関係に従って、前記接続情報記憶手段における有効な接続の情報を更新する接続情報更新手段、
として機能させるアップデート制御プログラム。
(付記2) 前記コンピュータを、さらに、
前記接続切り替え指示手段の指示に応じて前記アップデート対象ディスクノードと前記ストレージ装置との接続関係が有効化されると、有効化された接続関係によって接続されている前記ストレージ装置にアクセスするためのアクセス要求の送信先が、有効化された接続関係によって接続されている前記アップデート対象ディスクノードに変更されたことを、前記ストレージ装置にアクセスするアクセスノードに通知する接続ディスクノード変更通知手段として機能させることを特徴とする付記1記載のアップデート制御プログラム。
(付記3) 前記接続切り替え指示手段は、前記ディスクノードそれぞれをネットワーク上で一意に識別するためのアドレス情報を記憶するアドレス記憶手段を参照し、有効化された接続関係によって接続されている前記ストレージ装置にアクセスするためのアクセス要求の送信先として、有効化された接続関係によって接続されている前記アップデート対象ディスクノードのアドレスを前記アクセスノードに通知することを特徴とする付記2記載のアップデート制御プログラム。
(付記4) 前記接続切り替え指示手段は、前記ストレージ装置に有効に接続された前記ディスクノードのアドレスの情報を前記アクセスノードに提供する制御ノード経由で、有効化された接続関係によって接続されている前記アップデート対象ディスクノードのアドレスを前記アクセスノードに通知することを特徴とする付記3記載のアップデート制御プログラム。
(付記5) 前記アップデート対象選択手段は、前記アップデート対象ディスクノードを選択後、複数の前記ディスクノードに実装されているアップデート対象の前記ソフトウェアのバージョンを記憶するバージョン情報記憶手段を参照し、前記アップデート対象ディスクノードに実装されている前記ソフトウェアのバージョンがアップデート処理後のバージョンと同一の場合、前記アップデート対象ディスクノードの前記ソフトウェアのアップデートの完了を待たずに、前記次選択ディスクノードを決定し、
前記アップデート指示手段は、前記アップデート対象ディスクノードに実装されている前記ソフトウェアのバージョンがアップデート処理後のバージョンと異なる場合にのみ、前記アップデート対象ディスクノードに前記ソフトウェアのアップデートを指示することを特徴とする付記1記載のアップデート制御プログラム。
(付記6) 前記接続切り替え指示手段は、前記次選択ディスクノードに対して、有効な接続の無効化指示を送信し、前記アップデート対象ディスクノードに対して、前記次選択ディスクノードとの接続関係が無効化された前記ストレージ装置との接続関係の有効化指示を送信することを特徴とする付記1記載のアップデート制御プログラム。
(付記7) 複数のストレージ装置と、前記ストレージ装置よりも多い台数の複数のディスクノードとが設けられ、前記ストレージ装置それぞれが少なくとも2台の前記ディスクノードに接続され、一つの接続のみが前記ストレージ装置内のデータの入出力に使用される有効な接続関係と定義されており、前記ディスクノードには1台または2台の前記ストレージ装置が接続されており、複数の前記ディスクノードのソフトウェアアップデート処理を制御するアップデート制御装置であって、
複数の前記ストレージ装置と複数の前記ディスクノードとの接続関係、および前記有効な接続関係を記憶する接続情報記憶手段を参照し、前記有効な接続関係を有していない前記ディスクノードをアップデート対象ディスクノードとして選択し、前記アップデート対象ディスクノードの前記ソフトウェアのアップデートが完了した場合、前記アップデート対象ディスクノードと同じ前記ストレージ装置に接続された前記ディスクノードのうち、アップデートが未処理の前記ディスクノードを次選択ディスクノードとして決定し、前記次選択ディスクノードの接続関係が無効化された後、前記次選択ディスクノードを前記アップデート対象ディスクノードとして選択するアップデート対象選択手段と、
前記アップデート対象選択手段で前記アップデート対象ディスクノードが選択されるごとに、選択された前記アップデート対象ディスクノードに対して前記ソフトウェアのアップデートを指示するアップデート指示手段と、
前記次選択ディスクノードが決定されると、前記次選択ディスクノードに有効に接続された前記ストレージ装置の有効な接続を、前記次選択ディスクノードから前記アップデート対象ディスクノードに切り替える指示を、前記次選択ディスクノードと前記アップデート対象ディスクノードとに出力する接続切り替え指示手段と、
前記接続切り替え指示手段の指示に応じて有効化または無効化された接続関係に従って、前記接続情報記憶手段における有効な接続の情報を更新する接続情報更新手段と、
を有するアップデート制御装置。
(付記8) 複数のストレージ装置と、前記ストレージ装置よりも多い台数の複数のディスクノードとが設けられ、前記ストレージ装置それぞれが少なくとも2台の前記ディスクノードに接続され、一つの接続のみが前記ストレージ装置内のデータの入出力に使用される有効な接続関係と定義されており、前記ディスクノードには1台または2台の前記ストレージ装置が接続されており、複数の前記ディスクノードに接続されたコンピュータに、複数の前記ディスクノードのソフトウェアアップデート処理を制御させるためのアップデート制御方法であって、
前記コンピュータが、
複数の前記ストレージ装置と複数の前記ディスクノードとの接続関係、および前記有効な接続関係を記憶する接続情報記憶手段を参照し、前記有効な接続関係を有していない前記ディスクノードをアップデート対象ディスクノードとして選択し、
前記アップデート対象ディスクノードが選択されるごとに、選択された前記アップデート対象ディスクノードに対して前記ソフトウェアのアップデートを指示し、
前記アップデート対象ディスクノードの前記ソフトウェアのアップデートが完了した場合、前記アップデート対象ディスクノードと同じ前記ストレージ装置に接続された前記ディスクノードのうち、アップデートが未処理の前記ディスクノードを次選択ディスクノードとして決定し、
前記次選択ディスクノードが決定されると、前記次選択ディスクノードに有効に接続された前記ストレージ装置の有効な接続を、前記次選択ディスクノードから前記アップデート対象ディスクノードに切り替える指示を、前記次選択ディスクノードと前記アップデート対象ディスクノードとに出力し、
有効化または無効化された接続関係に従って、前記接続情報記憶手段における有効な接続の情報を更新し、
前記次選択ディスクノードの接続関係が無効化された後、前記次選択ディスクノードを前記アップデート対象ディスクノードとして選択する、
ことを特徴とするアップデート制御方法。