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

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

▶ 日立ヴァンタラ株式会社の特許一覧

<>
  • 特許-ストレージシステムおよび制御方法 図1
  • 特許-ストレージシステムおよび制御方法 図2
  • 特許-ストレージシステムおよび制御方法 図3
  • 特許-ストレージシステムおよび制御方法 図4
  • 特許-ストレージシステムおよび制御方法 図5
  • 特許-ストレージシステムおよび制御方法 図6
  • 特許-ストレージシステムおよび制御方法 図7
  • 特許-ストレージシステムおよび制御方法 図8
  • 特許-ストレージシステムおよび制御方法 図9
  • 特許-ストレージシステムおよび制御方法 図10
  • 特許-ストレージシステムおよび制御方法 図11
  • 特許-ストレージシステムおよび制御方法 図12
  • 特許-ストレージシステムおよび制御方法 図13
  • 特許-ストレージシステムおよび制御方法 図14
  • 特許-ストレージシステムおよび制御方法 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】ストレージシステムおよび制御方法
(51)【国際特許分類】
   G06F 3/06 20060101AFI20240910BHJP
【FI】
G06F3/06 301S
G06F3/06 301Z
【請求項の数】 6
(21)【出願番号】P 2022118839
(22)【出願日】2022-07-26
(65)【公開番号】P2024016596
(43)【公開日】2024-02-07
【審査請求日】2023-01-11
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】杉原 啓太
(72)【発明者】
【氏名】松元 計典
(72)【発明者】
【氏名】松田 元輝
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2020-095547(JP,A)
【文献】米国特許第11106371(US,B1)
【文献】特表2015-531091(JP,A)
【文献】特開2019-185328(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
複数のサイトの各々に設けられているノードであってコンテナを稼動可能なノードであるコンピュートノードを含んで構成されるクラスタを管理するストレージシステムであり、コンテナが利用可能なボリュームを提供するストレージ装置が前記複数のサイトの各々に設けられているストレージシステムであって、
2つ以上のサイトから指定された複数のストレージ装置の各々において作成され、同期された各ボリュームの情報をもとに、前記各ボリュームを仮想的に一つのボリュームとして関連付けた関連付けボリュームの情報を生成し、前記同期された各ボリュームの情報と前記関連付けボリュームの情報を一つのレコードとしてボリューム管理テーブルに格納する生成部と、
前記生成部により生成された関連付けボリュームの情報が指定されたコンテナの起動が要求されたことに基づいて、前記関連付けボリュームに関連付けられている各ボリュームと前記コンテナを稼動するコンピュートノードとを接続することを前記各ボリュームが作成された各ストレージ装置に指示する指示部と、
を備えるストレージシステム。
【請求項2】
前記生成部により生成された関連付けボリュームの情報が指定されたコンテナの起動が要求されたことに基づいて、前記関連付けボリュームに関連付けられている各ボリュームについて、ボリュームが作成されたストレージ装置と前記コンテナを稼動するコンピュートノードとが同じサイトに設けられているか否かを判定し、同じサイトに設けられていると判定したストレージ装置において作成されたボリュームが優先して利用されるための設定を行う設定部を備える、
請求項1に記載のストレージシステム。
【請求項3】
コンピュートノードの障害を検出する検出部を備え、
前記設定部は、前記検出部によりコンピュートノードに障害が検出された場合、前記コンピュートノードから他のコンピュートノードに再配置されるコンテナにおいて指定されている関連付けボリュームに関連付けられている各ボリュームについて、ボリュームが作成されたストレージ装置と前記他のコンピュートノードとが同じサイトに設けられているか否かを判定し、同じサイトに設けられていると判定したストレージ装置において作成されたボリュームが優先して利用されるための設定を行う、
請求項2に記載のストレージシステム。
【請求項4】
コンピュートノードは、
情報を管理する管理部と、
前記コンピュートノードと接続されているストレージ装置の障害を検出する検出部と、
前記管理部により管理されている情報と前記検出部により検出された結果とに基づいて情報を出力する出力部と、
を備え、
前記設定部は、同じサイトに設けられていると判定したストレージ装置において作成されたボリュームが優先して利用されるための設定を行った場合、前記サイトのコンピュートノードに、前記ボリュームの情報と前記ストレージ装置の情報と前記ボリュームが優先して利用されるための設定を行ったこととを示す情報とが対応付けられた管理情報を通知し、
前記コンピュートノードの管理部は、前記設定部より通知された管理情報を管理し、
前記コンピュートノードの出力部は、前記検出部によりストレージ装置の障害が検出された場合、前記管理部により管理されている管理情報に基づいて、前記コンピュートノードにおいて優先して利用される設定が行われているボリュームがあるか否かを判定することで当該ボリュームへの情報の入力および/または出力が可能であるか否かをチェックし、優先して利用される設定が行われているボリュームがあると判定したとき、前記コンピュータノードと同じサイトにあるストレージ装置に障害が起きていると判断し、前記コンピュートノードで稼動している前記ボリュームを利用するコンテナの再配置を指示する情報を出力する、
請求項2に記載のストレージシステム。
【請求項5】
2つ以上のサイトから指定された複数のストレージ装置の情報の入力を受け付け、前記複数のストレージ装置が指定されたボリュームの作成の要求を受け付ける受付部を備え、
前記指示部は、前記受付部により2つ以上のサイトから指定された複数のストレージ装置が指定されたボリュームの作成の要求が受け付けられた場合、前記複数のストレージ装置の各々にボリュームの作成を指示し、作成されたボリュームの情報を前記複数のストレージ装置の各々から受け取り、作成されたボリュームの同期処理を前記複数のストレージ装置の各々に指示する、
請求項1に記載のストレージシステム。
【請求項6】
複数のサイトの各々に設けられているノードであってコンテナを稼動可能なノードであるコンピュートノードを含んで構成されるクラスタを管理するストレージシステムであり、コンテナが利用可能なボリュームを提供するストレージ装置が前記複数のサイトの各々に設けられているストレージシステムにおける制御方法であって、
生成部が、2つ以上のサイトから指定された複数のストレージ装置の各々において作成され、同期された各ボリュームの情報をもとに、前記各ボリュームを仮想的に一つのボリュームとして関連付けた関連付けボリュームの情報を生成し、前記同期された各ボリュームの情報と前記関連付けボリュームの情報を一つのレコードとしてボリューム管理テーブルに格納することと、
指示部が、前記生成部により生成された関連付けボリュームの情報が指定されたコンテナの起動が要求されたことに基づいて、前記関連付けボリュームに関連付けられている各ボリュームと前記コンテナを稼動するコンピュートノードとを接続することを前記各ボリュームが作成された各ストレージ装置に指示することと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ストレージシステムの可用性を高める技術に関する。
【背景技術】
【0002】
コンテナを用いるストレージシステムにおいては、可用性を高める方法として、クラスタを構成するサーバ装置を、複数のサイトに分散させる方法がある。クラスタに複数のサイトが存在する場合、サイト毎にストレージ装置を配置し、ストレージ装置の可用性も高める必要がある。
【0003】
ストレージ装置自体の可用性は、サイト毎にストレージ装置を配置し、それぞれのストレージ装置から作成したボリュームを同期させることで冗長性を担保し、ストレージ装置の可用性を高めることができる。コンテナに関しては、コンテナの提供にかかる時間を短縮し得るコンテナ提供支援システムが開示されている(特許文献1参照)。
【0004】
特許文献1に記載のコンテナ提供支援システムでは、管理情報により、第1のサイトの第1のボリュームと、第2のサイトにおいてコンテナの起動に必要なコンテナイメージと、当該コンテナ上で実行されるアプリケーションプログラム(以下、APP)で用いられる第2のボリュームとが紐づけられている。したがって、第2のサイトにおいてコンテナの起動に必要なコンテナイメージとボリュームとを容易に特定でき、第2のサイトにおいてコンテナを短時間で起動することができる。
【先行技術文献】
【特許文献】
【0005】
【文献】特許第6759317号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記特許文献1に記載の技術では、現用系のサイトにおいて障害が発生した場合に、待機系のサイトに短時間で切り替えることができるが、現用系のサイトと待機系のサイトとの間でコンテナを自由に移動させることができないため、コンテナの可用性を高めることが困難である。
【0007】
ここで、コンテナ管理ソフトウェア(以下、コンテナ管理ソフト)では、1つのボリュームを1つのデータとして、コンテナ管理ソフトが持つ記憶領域に保存している。例えば、ユーザが複数のボリュームについて同期設定を実施した場合でも、コンテナ管理ソフトは、それぞれのボリュームを個別のボリュームとして認識したままである。つまり、コンテナ管理ソフトにより立ち上げられたコンテナは、1つのボリュームと接続されているので、例えば、コンテナの再配置を伴わない障害が当該ボリュームを提供するストレージ装置に発生した場合に、IOが切断されることになり、ユーザは、業務を継続できなくなってしまう。
【0008】
本発明は、以上の点を考慮してなされたもので、可用性の高いストレージシステム等を提案しようとするものである。
【課題を解決するための手段】
【0009】
かかる課題を解決するため本発明においては、複数のサイトの各々に設けられているノードであってコンテナを稼動可能なノードであるコンピュートノードを含んで構成されるクラスタを管理するストレージシステムであり、コンテナが利用可能なボリュームを提供するストレージ装置が前記複数のサイトの各々に設けられているストレージシステムであって、2つ以上のサイトから指定された複数のストレージ装置の各々において作成された各ボリュームの情報をもとに、前記各ボリュームを関連付けた関連付けボリュームの情報を生成する生成部と、前記生成部により生成された関連付けボリュームの情報が指定されたコンテナの起動が要求されたことに基づいて、前記関連付けボリュームに関連付けられている各ボリュームと前記コンテナを稼動するコンピュートノードとを接続することを前記各ボリュームが作成された各ストレージ装置に指示する指示部と、を設けるようにした。
【0010】
上記構成では、関連付けボリュームに関連付けられている2つのボリュームとコンテナを稼動するコンピュートノードとが接続されるので、例えば、コンテナは、2つのボリュームが同期されているときに一方のストレージ装置が障害により利用できなくなった場合でも、他方のストレージ装置のボリュームを利用することができる。上記構成によれば、ユーザは、IOが切断されることなく、業務を継続できる。
【発明の効果】
【0011】
本発明によれば、ストレージシステムの可用性を高めることができる。上記以外の課題、構成、および効果は、以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【0012】
図1】第1の実施の形態によるストレージシステムに係る構成の一例を示す図である。
図2】第1の実施の形態によるネットワーク構成の一例を示す図である。
図3】第1の実施の形態による関連付けボリュームの一例を示す図である。
図4】第1の実施の形態によるノード管理テーブルの一例を示す図である。
図5】第1の実施の形態によるストレージ管理テーブルの一例を示す図である。
図6】第1の実施の形態によるボリューム管理テーブルの一例を示す図である。
図7】第1の実施の形態による接続ボリューム管理テーブルの一例を示す図である。
図8】第1の実施の形態によるストレージ情報入力処理を示す処理フローの一例を示す図である。
図9】第1の実施の形態によるボリューム作成関連処理を示す処理フローの一例を示す図である。
図10】第1の実施の形態によるコンテナ起動処理を示す処理フローの一例を示す図である。
図11】第1の実施の形態によるボリューム作成処理の一例を示す図である。
図12】第1の実施の形態による接続処理の一例を示す図である。
図13】第1の実施の形態による接続解除処理の一例を示す図である。
図14】第1の実施の形態によるストレージ障害検出処理の一例を示す図である。
図15】第1の実施の形態によるノード障害関連処理の一例を示す図である。
【発明を実施するための形態】
【0013】
(I)第1の実施の形態
以下、本発明の一実施の形態を詳述する。ただし、本発明は、実施の形態に限定されるものではない。
【0014】
(A)
従前の技術では、コンテナ管理ソフトが、複数の同期されたボリュームを、それぞれ個別に(独立に)認識する。
【0015】
(A-1)
個別に認識されたボリュームが、それぞれ同時に、別々のAPPからIO(Input/Output)がかけられた場合、データが破壊されるおそれがある。
この点、本実施の形態では、複数の同期されたボリュームを単一のボリュームとして扱うことで、上記のようなデータ破壊の危険性を排除できる。
例えば、複数の同期されたボリュームを、仮想的に1つのボリューム(関連付けボリューム)としてコンテナ管理ソフトに認識させる。
これにより、コンテナ管理ソフトが、複数の同期されたボリュームを1つのボリュームとして認識するため、複数の異なるAPPから同時に接続されてしまう事態を回避することができる。
【0016】
(A-2)
個別に認識されたボリュームを、コンテナの配置サイトによって使い分けしようとした場合、コンテナの再配置が起きる度に、手動で接続するボリュームを、切り替える必要がある。しかしながら、コンテナの再配置は自動で発生する場合があるので、手動操作が伴うことは、望ましくない。
この点、本実施の形態では、関連付けボリュームを用いることで、手動で切り替える必要がなくなる。
例えば、コンテナは、他のサイトへの再配置が発生しても、自身に元々紐づいているボリュームを参照し続ける。
つまり、関連付けボリュームを紐づけておくことにより、コンテナがどのサイトにあったとしても、手動でのボリュームの切り替えは必要ではない。
【0017】
(B)
従前の技術では、ボリュームとコンテナ(コンピュートノード)との接続が複数存在する場合、使用されるIOの経路をOS(Operating System)が制御する。
【0018】
(B-1)
同期された複数のボリュームが、コンテナに接続された場合、コンテナと同じサイトにあるストレージ装置との接続経路またはコンテナと異なるサイトにあるストレージ装置との接続経路の両方が利用できるが、コンテナと異なるサイトにあるストレージ装置との接続経路が利用されてしまう可能性がある(IO性能が前者と比べると悪い)。
この点、本実施の形態では、サイト識別ラベルを、事前にコンピュートノードとストレージ装置との両方に付与しておくことで、コンテナが起動しようとしているノードのサイトに合致するストレージ装置の接続の優先度を上げることができる。
これにより、サイト識別ラベルが合致する(同じサイト内の)通信が優先されるため、IO性能の劣化を防ぐことができる。
【0019】
(C)
従前の技術では、コンテナ管理ソフトは、ストレージ装置の障害を検出しないため、ストレージ装置に障害が発生したときに、コンテナの再配置が行われない。
【0020】
(C-1)
コンテナが配置されたサイトにあるストレージ装置に障害が発生した場合、コンテナのIOが停止または性能劣化してしまう。
ここで、同期された複数のボリュームが存在する場合、障害が発生していないストレージ装置への接続を利用することができるが、障害が発生していないストレージ装置が配置されているサイトと、コンテナが配置されているサイトとが異なる場合、IOの性能が劣化してしまう。
この点、本実施の形態では、ノードで稼動しているプラグインにより、接続されているボリュームの状態を監視し、接続の優先度が上げられたボリューム(接続の優先設定がされたボリューム)へのIOが可能であるかをチェックする。当該プラグインは、IOできないボリューム(例えば、通信不可能なストレージ装置)があった場合、ノードと同じサイトにあるストレージ装置に障害が起きていると判断し、コンテナ管理ソフトに対してコンテナの再配置を促す。
コンテナ管理ソフトによりコンテナの再配置が行われることで、IOの性能が劣化してしまう事態を回避することができる。
【0021】
次に、本発明の実施の形態を図面に基づいて説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は、単数でも複数でも構わない。
【0022】
なお、以下の説明では、図面において同一要素については、同じ番号を付し、説明を適宜省略する。また、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、サイトを特に区別しないで説明する場合には、「サイト101」と記載し、個々のサイトを区別して説明する場合には、「サイトA101-1」、「サイトB101-2」のように記載することがある。
【0023】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は、文脈毎に用いられ、1つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【0024】
図1において、100は、全体として第1の実施の形態によるストレージシステムを示す。
【0025】
ストレージシステム100には、複数のサイト101と、クラスタ102とが設けられている。サイト101は、ユーザの業務に係るデータを扱うデータセンタ等であり、1つ以上のコンピュートノード110と、1つ以上のストレージ装置120とを含んで構成されている。本実施の形態では、サイト101として、第1のサイト101(サイトA101-1)と、第2のサイト101(サイトB101-2)とを例に挙げて説明するが、第3のサイト101等、その他のサイト101が設けられていてもよい。
【0026】
また、ストレージシステム100は、クラスタ102を管理するためのコントローラノード130(コントロールプレーン)と、ユーザが操作するためのユーザ端末140とを含んで構成されている。なお、ストレージシステム100には、ユーザ端末140が含まれていてもよいし、ユーザ端末140が含まれていなくてもよい。また、クラスタ102には、ユーザ端末140が含まれていてもよいし、ユーザ端末140が含まれていなくてもよい。
【0027】
ここで、「ノード」とは、ソフトウェアを実行するハードウェア、仮想マシン、コンテナ等に相当するものであり、典型的には、OSの動作単位に対応するものである。なお、以下では、コンピュートノード110とコントローラノード130とを区別しないときは、ノードと記すことがある。
【0028】
コンピュートノード110は、接続ボリューム管理テーブル111と、コンテナ112(ユーザAPP)と、プラグイン(コンピュート)113と、コンテナ管理ソフト(コンピュート)114と、OS115とを含んで構成されている。なお、コンピュートノード110は、物理的な装置であってもよく、例えば、サーバ装置であり、インターフェース部、記憶部、それらに接続されたプロセッサ部等を備える。
【0029】
コンピュートノード110の機能(コンテナ112、プラグイン(コンピュート)113、コンテナ管理ソフト(コンピュート)114、OS115等)は、例えば、プロセッサ部がプログラムを記憶部に読み出して実行すること(ソフトウェア)により実現されてもよいし、専用の回路等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。なお、コンピュートノード110の1つの機能は、複数の機能に分けられていてもよいし、複数の機能は、1つの機能にまとめられていてもよい。例えば、プラグイン(コンピュート)113は、後述の管理部と後述の検出部と後述の出力部とに分けられていてもよい。また、コンピュートノード110の機能の一部は、別の機能として設けられてもよいし、他の機能に含められていてもよい。また、コンピュートノード110の機能の一部は、コンピュートノード110と通信可能な他のノード、図示しないコンピュータ等により実現されてもよい。
【0030】
ストレージ装置120は、コンテナ112が利用可能なボリューム121と、当該ストレージ装置120が設けられているサイト101を識別可能なサイト識別ラベル122とを含んで構成されている。なお、ストレージ装置120は、PDEV部、PDEV部に接続されたストレージコントローラ等を備える。
【0031】
コントローラノード130は、ノード管理テーブル131と、ストレージ管理テーブル132と、ボリューム管理テーブル133と、プラグイン(コントローラ)134と、コンテナ管理ソフト(コントローラ)135と、OS136とを含んで構成されている。なお、コントローラノード130は、物理的な装置であってもよく、例えば、サーバ装置であり、インターフェース部、記憶部、それらに接続されたプロセッサ部等を備える。
【0032】
コントローラノード130の機能(プラグイン(コントローラ)134、コンテナ管理ソフト(コントローラ)135、OS136等)は、例えば、プロセッサ部がプログラムを記憶部に読み出して実行すること(ソフトウェア)により実現されてもよいし、専用の回路等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。なお、コントローラノード130の1つの機能は、複数の機能に分けられていてもよいし、複数の機能は、1つの機能にまとめられていてもよい。例えば、プラグイン(コントローラ)134は、後述の生成部と後述の指示部と後述の設定部とに分けられていてもよい。また、例えば、コンテナ管理ソフト(コントローラ)135は、後述の検出部と後述の受付部とに分けられていてもよい。また、コントローラノード130の機能の一部は、別の機能として設けられてもよいし、他の機能に含められていてもよい。また、コントローラノード130の機能の一部は、コントローラノード130と通信可能なコンピュートノード、図示しないコンピュータ等により実現されてもよい。
【0033】
なお、以下では、説明の便宜上、プラグイン(コンピュート)113をサイト側プラグイン113と記し、プラグイン(コントローラ)134をプラグイン134と記し、コンテナ管理ソフト(コンピュート)114をサイト側コンテナ管理ソフト114と記し、コンテナ管理ソフト(コントローラ)135をコンテナ管理ソフト135と記すことがある。
【0034】
図2は、ストレージシステム100に係るネットワーク構成の一例を示す図である。
【0035】
第1のネットワーク201(ネットワークA201-1)は、例えば、LAN(Local Area Network)であり、クラスタ102を構成するコンピュートノード110およびコントローラノード130間の通信用のネットワークである。コンピュートノード110とコントローラノード130とユーザ端末140とは、第1のネットワーク201を介して通信可能に接続されている。例えば、コントローラノード130は、第1のネットワーク201を介して、ユーザ端末140からの要求に応じて、各コンピュートノード110に指示を出す。
【0036】
第2のネットワーク201(ネットワークB201-2)は、FC(Fibre Channel)ネットワーク、SCSI(Small Computer System Interface)ネットワーク等であり、コンピュートノード110がストレージ装置120のボリューム121に対してデータのIOを行うための通信用のネットワークである。コンピュートノード110とストレージ装置120とは、第2のネットワーク201を介して通信可能に接続されている。通信には、FCまたはiSCSIというSCSIの通信の規格が用いられる。なお、何れのコンピュートノード110も全てのストレージ装置120にアクセスすることができる。
【0037】
第3のネットワーク201(ネットワークC201-3)は、例えば、LANであり、REST API(Representational State Transfer Application Programming Interface)を利用するための通信用のネットワークである。コントローラノード130とストレージ装置120とは、第3のネットワーク201を介して通信可能に接続されている。例えば、コントローラノード130のプラグイン134は、第3のネットワーク201を介して、ストレージ装置120に対して命令(各ストレージ装置120に対する操作を行うための指示)を出す。
【0038】
第4のネットワーク201(ネットワークD201-4)は、例えば、FCネットワークであり、ストレージ装置120同士を接続するネットワークである。ストレージ装置120間は、第4のネットワーク201を介して通信可能に接続されている。例えば、各ストレージ装置120は、第4のネットワーク201を介して、データの同期を行う。
【0039】
上述したネットワーク構成は、一例であり、他のネットワーク構成を採用してもよい。
【0040】
図3は、関連付けボリューム121の一例を示す図である。図3では、サイト側コンテナ管理ソフト114によって認識されるボリューム121が関連付けボリューム121である場合、実際には、複数のボリューム121が関連付けられていることを表している。
【0041】
ストレージシステム100では、同期状態のボリューム121は、ボリューム管理テーブル133により関連付けボリューム121として関連付けられる。例えば、サイト側コンテナ管理ソフト114は、同期状態のボリュームA121-A1およびボリュームA121-A2を、関連付けボリューム121-Aとして認識し、同期状態のボリュームB121-B1およびボリュームB121-B2を、関連付けボリューム121-Bとして認識する。
【0042】
なお、本実施の形態では、同期状態のボリューム121が2つである場合を例に挙げて説明するが、同期状態のボリューム121は、3つ以上であってもよい。
【0043】
図4は、ノード管理テーブル131の一例を示す図である。
【0044】
ノード管理テーブル131は、コンテナ管理ソフト135が管理するテーブルであり、クラスタ102を構成する各ノードの情報を管理(蓄積)するためのテーブルである。なお、ノードの情報には、コンピュートノード110およびコントローラノード130の両方の情報が含まれている。
【0045】
より具体的には、ノード管理テーブル131は、ノード識別ID401とサイト識別ラベル402とロール403とノード状態404との情報が対応付けられたレコードを記憶する。
【0046】
ノード識別ID401は、ノードを識別するためのID(一意の文字列)である。サイト識別ラベル402は、ノードが何れのサイト101に属するかを示すラベル情報(一意の文字列)である。ロール403は、ノードが持つ役割を示す情報(文字列)である。コンピュートノード110であるか否かは、このロール403の情報によって判別することができる。例えば、ロール403が「無し」である場合、コンピュートノード110であることを示す。ノード状態404は、ノードが利用可能であるか否かを示す情報である。例えば、障害が発生したノードは、ノード状態404が「利用不可」となる。
【0047】
図5は、ストレージ管理テーブル132の一例を示す図である。
【0048】
ストレージ管理テーブル132は、コンテナ管理ソフト135が管理するテーブルであり、ボリューム121の作成時に利用されるストレージ装置120の情報を管理するためのテーブルである。ストレージ管理テーブル132へのストレージ装置120の情報の格納は、例えば、ユーザ端末140を介してユーザにより行われる。
【0049】
より具体的には、ストレージ管理テーブル132は、ストレージ識別ID501とストレージシリアル502とストレージ認証情報503とストレージURL504との情報が対応付けられたレコードを記憶する。なお、従前の技術では、1つのレコードには1つのストレージ装置120の情報が格納されていたが、本実施の形態では、1つのレコードに同期対象の複数のボリューム121に係る複数のストレージ装置120の情報が格納されるように拡張されている。
【0050】
付言するならば、同期対象の複数のボリューム121の各々を提供するストレージ装置120の数に応じて、ストレージシリアル502とストレージ認証情報503とストレージURL504との情報がストレージ識別ID501に対応付けられる。例えば、サイトA101-1のストレージ装置120-1が提供するボリューム121-1とサイトB101-2のストレージ装置120-2が提供するボリューム121-2とが同期対象である場合、ストレージ管理テーブル132は、ストレージ識別ID501とストレージAシリアル502-1とストレージA認証情報503-1とストレージA URL504-1とストレージBシリアル502-2とストレージB認証情報503-2とストレージB URL504-2との情報が対応付けられたレコードを記憶する。
【0051】
ストレージ識別ID501は、同期対象の複数のボリューム121を提供する各ストレージ装置120を1つのストレージ装置120として識別するためのIDである。このID(文字列)は、ユーザがストレージ管理テーブル132に、ストレージ装置120の情報を登録する際に決めることができてもよい。なお、ユーザは、ボリューム121を作成する際は、ユーザ端末140を介して、ストレージ識別ID501を指定し、コンテナ管理ソフト135に対して要求を送信する。ストレージシリアル502は、ストレージ装置120のシリアル番号である。ストレージ認証情報503は、ストレージ装置120の認証情報(認証に用いられるID、パスワード等)である。ストレージURL504は、ストレージ装置120の場所を示すストレージ装置120のURL(Uniform Resource Locator)である。なお、ストレージ管理テーブル132に格納される情報は、後述のS802の処理によって生成される。
【0052】
図6は、ボリューム管理テーブル133の一例を示す図である。
【0053】
ボリューム管理テーブル133は、コンテナ管理ソフト135が管理するテーブルであり、ストレージ装置120において作成されたボリューム121の情報を管理するためのテーブルである。
【0054】
より具体的には、ボリューム管理テーブル133は、ボリューム識別ID601とストレージ識別ID602とNAA(Network Address Authority)603とストレージシリアル604とストレージボリュームID605との情報が対応付けられたレコードを記憶する。
【0055】
従前の技術では、1つのレコードには1つのボリューム121の情報が格納されていたが、本実施の形態では、1つのレコードに同期設定された複数のボリューム121の情報が格納されるように拡張されている。付言するならば、同期設定されたボリューム121の数に応じて、ストレージシリアル604とストレージボリュームID605との情報がボリューム識別ID601に対応付けられる。例えば、サイトA101-1のボリューム121―1とサイトB101-2のボリューム121-2とが同期設定された場合、ボリューム管理テーブル133は、ボリューム識別ID601とストレージ識別ID602とNAA603とストレージAシリアル604-1とストレージAボリュームID605-1とストレージBシリアル604-2とストレージBボリュームID605-2との情報が対応付けられたレコードを記憶する。
【0056】
ボリューム識別ID601は、ボリューム121を識別するためのID(一意の文字列)である。この文字列は、例えば、ボリューム121が作成された際にコンテナ管理ソフト135によって生成され、それ以降、当該ボリューム121を識別するためのユニークなIDとして利用される。なお、サイト側コンテナ管理ソフト114からは、ボリューム識別ID601により識別されるボリューム121が関連付けボリューム121であるかどうかはわからない。付言するならば、図示は省略するが、ボリューム管理テーブル133には、同期設定されていないボリューム121の情報が格納されていてもよい。
【0057】
ストレージ識別ID602は、ボリューム121の作成に使用されたストレージ装置120を識別するためのID(ストレージ管理テーブル132のストレージ識別ID501)である。NAA603は、OS115がストレージ装置120のボリューム121をデバイスとして認識する際に使用されるボリューム121の識別情報である。ストレージシリアル604は、ストレージ識別ID602(ストレージ識別ID501)により対応付けられているストレージ装置120のシリアル番号である。ストレージボリュームID605は、当該ストレージ装置120内部で作成されたボリューム121のIDである。なお、ボリューム管理テーブル133に格納される情報は、後述のS904の処理によって生成される。
【0058】
図7は、接続ボリューム管理テーブル111の一例を示す図である。
【0059】
接続ボリューム管理テーブル111は、コンピュートノード110毎に独立して設けられている。接続ボリューム管理テーブル111は、サイト側プラグイン113が管理するテーブルであり、コンピュートノード110に接続されたボリューム121の情報を管理するためのテーブルである。ボリューム121とコンテナ112が起動されようとしているコンピュートノード110とを接続する処理をプラグイン134が行う際に、当該コンピュートノード110上の接続ボリューム管理テーブル111に、当該ボリューム121に関する情報が書き込まれる。
【0060】
より具体的には、接続ボリューム管理テーブル111は、NAA701とストレージボリュームID702とストレージシリアル703と優先設定有無704との情報が対応付けられたレコードを記憶する。
【0061】
NAA701は、接続ボリューム管理テーブル111が設けられているコンピュートノード110のOS115がストレージ装置120のボリューム121をデバイスとして認識する際に使用されるボリューム121の識別情報である。ストレージボリュームID702は、当該ストレージ装置120内部で作成されたボリューム121のIDである。ストレージシリアル703は、当該ストレージ装置120のシリアル番号である。優先設定有無704は、当該ボリューム121と当該コンピュートノード110との接続の優先設定の有無である。なお、接続ボリューム管理テーブル111に格納される情報は、後述のS1004の処理によって生成される。付言するならば、従前の技術では、接続ボリューム管理テーブル111は、設けられていない。
【0062】
図8は、同期に係るストレージ装置120の情報を入力する際の処理(ストレージ情報入力処理)を示す処理フローの一例を示す図である。なお、ストレージ情報入力処理は、後述のボリューム作成関連処理の前処理である。
【0063】
S801では、ユーザ端末140は、同期に係るストレージ装置120の情報を入力する。当該情報は、ストレージ管理テーブル132に登録するレコードに必要な情報を含んで構成され、例えば、同期対象の複数のボリューム121を提供する各ストレージ装置120のストレージシリアル502とストレージ認証情報503とストレージURL504との情報を含む。
【0064】
S802では、コンテナ管理ソフト135は、ユーザ端末140を介して入力されたストレージ装置120の情報をストレージ管理テーブル132に格納する。
【0065】
図9は、同期対象のボリューム121を作成する際の処理(ボリューム作成関連処理)を示す処理フローの一例を示す図である。
【0066】
S901では、ユーザ端末140は、ボリューム121の作成を要求する。より具体的には、ユーザ端末140は、ユーザによる操作に応じて、ボリューム121の作成に必要な情報(例えば、ボリュームの容量)と、ストレージ管理テーブル132の1つのレコード(例えば、ストレージ識別ID501)とを指定して、ボリューム121の作成をコンテナ管理ソフト135に要求する。
【0067】
S902では、コンテナ管理ソフト135は、指定されたレコード(同期に係るストレージ装置120の情報)をストレージ管理テーブル132から取得する。
【0068】
S903では、コンテナ管理ソフト135は、ボリューム121の作成をプラグイン134に指示する。なお、S903では、S902において取得されたストレージ装置120の情報がプラグイン134に渡される。
【0069】
S904では、プラグイン134は、ボリューム作成処理を行う。ボリューム作成処理では、プラグイン134は、同期に係るストレージ装置120に対して、ボリューム121の作成を指示したり、作成したボリューム121の同期をとったりし、その際に得られた情報を関連付けボリューム121の情報としてボリューム管理テーブル133に追加する。なお、ボリューム作成処理の詳細については、図11を用いて後述する。
【0070】
S905では、コンテナ管理ソフト135は、ボリューム121の作成が完了したことを示す情報をユーザ端末140に送信(応答)する。
【0071】
図10は、コンテナ112を起動する際の処理(コンテナ起動処理)を示す処理フローの一例を示す図である。
【0072】
S1001では、ユーザ端末140は、コンテナ112(ユーザAPP)の起動を要求する。例えば、ユーザは、ユーザ端末140を介して、ボリューム121(例えば、ボリューム識別ID601)を指定してコマンドを入力する。
【0073】
S1002では、コンテナ管理ソフト135は、指定されたボリューム121の情報をボリューム管理テーブル133から取得し、当該ボリューム121を提供するストレージ装置120の情報をストレージ管理テーブル132から取得する。
【0074】
S1003では、コンテナ管理ソフト135は、コンテナ112を配置(起動)するコンピュートノード110を決定し、当該コンテナ112に設定するボリューム121と当該コンピュートノード110との接続をプラグイン134に指示する。なお、S1003では、S1002において取得されたボリューム121の情報とストレージ装置120の情報とコンテナ112が配置されるコンピュートノード110(コンテナ配置先ノード)の識別子とがプラグイン134に渡される。
【0075】
S1004では、プラグイン134は、接続処理を実行する。接続処理では、ボリューム121とコンテナ配置先ノードとが接続され、接続に係る情報が接続ボリューム管理テーブル111に追加される。なお、接続処理の詳細については、図12を用いて後述する。
【0076】
S1005では、コンテナ管理ソフト135は、コンテナ112を起動する。なお、コンテナ管理ソフト135は、適宜のタイミングで、コンテナ112にボリューム識別IDを設定する。
【0077】
図11は、ボリューム作成処理の一例を示す図である。
【0078】
S1101では、プラグイン134は、コンテナ管理ソフト135からボリューム121を作成する指示を受け取る。当該指示には、例えば、ボリューム121の容量、同期に係るストレージ装置120の情報等が含まれている。
【0079】
続いて、プラグイン134は、同期に係るストレージ装置120毎にS1102およびS1103の処理を実行する。
【0080】
S1102では、プラグイン134は、処理対象のストレージ装置120に対してボリューム121の作成を指示する。
【0081】
S1103では、プラグイン134は、処理対象のストレージ装置120からボリューム121の作成が完了したことを示す通知と、作成されたボリューム121のID(ストレージボリュームID)とを受け取る。
【0082】
S1104では、プラグイン134は、同期に係るストレージ装置120に対して、S1103において作成されたボリューム121の同期処理を指示する。
【0083】
S1105では、プラグイン134は、S1104において同期されたボリューム121の情報を関連付けてボリューム管理テーブル133に格納する。例えば、プラグイン134は、NAAを生成し、生成したNAAと、S1101において受け取ったストレージ識別IDおよびストレージシリアルと、S1103において受け取った複数のストレージボリュームIDとを1つのレコードとしてボリューム管理テーブル133に格納する。なお、NAAは、適宜のタイミングで生成されてよい。また、NAAは、他の構成要素により生成されてもよい。
【0084】
S1106では、プラグイン134は、ボリューム121の作成が完了したことを示す情報をコンテナ管理ソフト135に通知(応答)する。
【0085】
従前のコンテナ管理ソフトでは、ボリュームの作成時に1つのボリュームを作成し、それを1つのレコードとしてボリューム管理テーブルに格納していた。この点、本実施の形態では、複数のボリューム121を作成し、かつ、同期設定を行い、当該複数のボリューム121の情報を1つのレコードとしてボリューム管理テーブル133に格納する。
【0086】
図12は、接続処理の一例を示す図である。
【0087】
S1201では、プラグイン134は、ボリューム121と当該ボリューム121を利用するコンテナ112が配置されるコンピュートノード110とを接続する指示(接続指示)をコンテナ管理ソフト135から受け取る。例えば、接続指示には、ボリューム識別IDと、ボリューム識別IDに紐づく複数のボリューム121の情報と、コンテナ配置先ノードの識別子(例えば、ノード識別ID)とが含まれている。プラグイン134は、接続指示をもとに、同期設定されたボリューム121と当該ボリューム121を提供するストレージ装置120とを特定(指定)する。
【0088】
付言するならば、ユーザは、基本的には、コンテナ112をどのサイト101で起動するかを指定しない。コンテナ管理ソフト135がどのサイト101でコンテナ112を起動するかを決定し、その情報(コンテナ配置先ノードの識別子)が接続指示の際にプラグイン134に渡される。
【0089】
続いて、プラグイン134は、S1201において特定されたストレージ装置120およびボリューム121毎にS1202の処理を実行する。
【0090】
S1202では、プラグイン134は、処理対象のストレージ装置120に対する通信可否を記録する。例えば、プラグイン134は、処理対象のストレージ装置120との通信を確認するためのAPIをコールし(呼び出し)、処理対象のストレージ装置120と通信可能であるか否かを判定し、通信可能であると判定した場合、通信可能なストレージ装置120およびボリューム121として記録(通信可能数を計数)する。
【0091】
S1203では、プラグイン134は、通信可能数が「0(ゼロ)」であるか否かを判定する。プラグイン134は、通信可能数が「0」であると判定した場合、S1204に処理を移し、通信可能数が「0」でないと判定(通信可能数が「1」以上であると判定)した場合、S1205に処理を移す。
【0092】
S1204では、プラグイン134は、コンテナ管理ソフト135に処理の失敗を通知し、接続処理を終了する。
【0093】
S1205では、プラグイン134は、コンテナ配置先ノードの識別子を用いて、コンテナ配置先ノードのサイト識別ラベルをノード管理テーブル131から取得する。
【0094】
続いて、プラグイン134は、通信可能なストレージ装置120およびボリューム121毎にS1206~S1208の処理を実行する。
【0095】
S1206では、プラグイン134は、処理対象のストレージ装置120に対して、ボリューム121とコンテナ配置先ノードとの接続を指示する。例えば、プラグイン134は、ボリューム121とコンテナ配置先ノードとの接続をするためのAPIをコールする。これにより、ボリューム121とコンテナ配置先ノードとが接続された状態になる。
【0096】
本実施の形態では、コンピュートノード110にストレージ装置120のボリューム121が接続されると、OS115からはデバイスファイルとして自動的に認識される。付言するならば、ボリューム121を利用するために、OS115に認識されたデバイスファイルの中から接続したボリューム121が特定され、特定されたボリューム121は、OS115の持つファイルシステムにマウントされる。なお、ボリューム121の特定は、プラグイン134、コンテナ管理ソフト135、サイト側プラグイン113の順に渡されるNAA(ストレージ装置120のボリューム121をOS115が特定するための識別子)を用いて行われる。
【0097】
より具体的には、コンピュートノード110にストレージ装置120のボリューム121を接続すると、自動的に認識され、OS115からはデバイスファイルとして認識される。当該デバイスファイルは、コンピュートノード110とストレージ装置120との経路の数だけ作られる。例えば、接続されたボリューム121が関連付けボリューム121である場合、1つのボリューム121に対して、最小で2つのデバイスファイルがコンピュートノード110に認識されることになる。つまり、ストレージ装置120およびコンピュートノード110間の接続が冗長化されていた場合、冗長化されている分だけ認識されるデバイスファイルも多くなる。
【0098】
また、認識された複数のデバイスファイルは、OS115の持つマルチパスと呼ばれる機能によって、1つのマルチパス用デバイスファイルに束ねられる。OS115上のコンテナ112(ユーザAPP)からボリューム121を利用する際は、このマルチパス用デバイスファイルがマウントされる。コンテナ112としては、マウントは1つであるので(1つのマルチパス用デバイスファイルを、1つのマウントポイントにマウントしただけなので)、ボリューム121への物理的な経路を意識することなく、ボリューム121を利用することができる。
【0099】
S1207では、プラグイン134は、サイト識別ラベルに基づいて、接続の優先設定をストレージ装置120に指示する。例えば、プラグイン134は、処理対象のストレージ装置120に対してサイト識別ラベルの問い合わせを実施し、コンテナ配置先ノードのサイト識別ラベルと一致するか否かを判定する。プラグイン134は、一致すると判定したと場合、接続の優先設定をストレージ装置120に指示(接続の優先設定をするためのAPIをコール)する。
【0100】
本実施の形態では、ストレージ装置120とコンピュートノード110との間の最適化されたパスを特定するためのプロトコルの一例として、ストレージ装置120とコンピュートノード110との接続の優先設定が可能なALUA(Asymmetric Logical Unit Access)を採用し、S1207では、ALUAの優先設定が「優先する」に更新される。
【0101】
コンテナ112(ユーザAPP)からボリューム121にIOする際は、OS115の持つマルチパス機能が、自動的にIOの経路を選択する。ここで、マルチパス機能は、ALUAに対応しているため、マルチパス用デバイスファイルによって束ねられた複数の経路から、ALUAの優先設定がされた経路がある場合、これを検出し、優先度の高い経路をIOの経路として選択する。つまり、ストレージ装置120側でALUAの優先設定を行うことで、OS115側がこれを自動的に検出し、結果的には優先度の高いIOの経路が使用されることになる。付言するならば、プラグイン134は、ALUAの優先設定を行うことで、パスに対する優先度を上げることができる。
【0102】
S1208では、プラグイン134は、サイト側プラグイン113を介して、接続ボリューム管理テーブル111に、接続したボリューム121およびストレージ装置120の情報(NAA、ストレージボリュームID、ストレージシリアル、および優先設定有無)を書き込む。なお、サイト側プラグイン113は、プラグイン134より通知された情報を接続ボリューム管理テーブル111に記憶する。
【0103】
S1209では、プラグイン134は、コンテナ管理ソフト135に処理の成功を通知し、接続処理を終了する。
【0104】
ここで、例えば、同期されたボリュームAとボリュームBがあったとする。従前の技術では、ボリュームAとボリュームBは、それぞれ独立してコンテナ管理ソフトに認識される。コンテナからボリュームを利用したい場合は、コンテナの作成時に、利用したいボリュームを指定する。コンテナの作成時に指定したパラメータは、コンテナが削除されるまで、設定として残り続ける。そのため、ボリュームAを指定して作成されたコンテナが、サイトAからサイトBに移動したとしても、当該コンテナは、そのままボリュームAを継続して利用する。コンテナが参照しようとするボリュームを変更したい場合、ユーザは、手作業で、コンテナを再設定し、一度コンテナを再起動させる必要がある。コンテナの再配置は、自動で行われるものなので、ユーザの手作業を必要とするのは、望ましくない。
【0105】
なお、最初からボリュームAとボリュームBとの両方をコンテナ起動時に指定することも考えらえるが、コンテナ管理ソフトからは、それぞれ独立したボリュームとして認識されており、コンテナ(ユーザAPP)からも、別物として認識されてしまうので、冗長化のメリットが生かせない。
【0106】
この点、本実施の形態では、関連付けボリューム121を導入して使用することで、ボリュームAとボリュームBとの両方が、コンテナに最初から接続されることになるので、コンテナの再配置の際に、ユーザの手作業は必要なくなる。
【0107】
図13は、接続を解除する処理(接続解除処理)の一例を示す図である。接続解除処理では、例えば、接続ボリューム管理テーブル111に格納された情報が削除される。接続解除処理は、コンピュートノード110に障害が発生したとき、コンテナ112の再配置が行われるとき、ボリューム121を使い終わったとき等の適宜のタイミングで実行される。
【0108】
S1301では、プラグイン134は、コンテナ管理ソフト135からボリューム121とコンピュートノード110との接続解除指示を受け取る。例えば、接続解除指示には、ボリューム識別IDと、ボリューム識別IDに紐づく複数のボリューム121の情報とが含まれている。プラグイン134は、接続解除指示をもとに、同期状態のボリューム121と当該ボリューム121を提供するストレージ装置120とを特定(指定)する。
【0109】
続いて、プラグイン134は、S1301において特定されたストレージ装置120およびボリューム121毎にS1302の処理を実行する。
【0110】
S1302では、プラグイン134は、処理対象のストレージ装置120に対する通信可否を記録する。例えば、プラグイン134は、通信可能であると判定した場合、通信可能なストレージ装置120およびボリューム121として記録(通信可能数を計数)する。なお、通信可否の判定方法については、S1202と同じ方法であってもよく、その説明を省略する。
【0111】
S1303では、プラグイン134は、通信可能数が「0」であるか否かを判定する。プラグイン134は、通信可能数が「0」であると判定した場合、S1304に処理を移し、通信可能数が「0」でないと判定した場合、S1306に処理を移す。
【0112】
S1304では、プラグイン134は、サイト側プラグイン113を介して、接続ボリューム管理テーブル111から接続解除が指示されたボリューム121の情報を削除する。
【0113】
S1305では、プラグイン134は、プラグイン134は、コンテナ管理ソフト135に処理の失敗を通知し、接続解除処理を終了する。
【0114】
また、プラグイン134は、通信可能数が「0」でないと判定した場合、通信可能なストレージ装置120およびボリューム121毎にS1306の処理を実行する。
【0115】
S1306では、プラグイン134は、処理対象のストレージ装置120に対して、処理対象のボリューム121と、当該ボリューム121を利用しているコンテナ112が配置されているコンピュートノード110(コンテナ配置済ノード)との接続解除を指示する。例えば、プラグイン134は、ボリューム121とコンテナ配置済ノードとの接続を解除するためのAPIをコールする。これにより、ボリューム121とコンテナ配置済ノードとは、接続が解除された状態になる。
【0116】
S1307では、プラグイン134は、サイト側プラグイン113を介して、接続ボリューム管理テーブル111から接続解除が指示されたボリューム121の情報を削除する。
【0117】
S1308では、プラグイン134は、コンテナ管理ソフト135に処理の成功を通知し、接続解除処理を終了する。
【0118】
図14は、ストレージ装置120の障害の検出に係る処理(ストレージ障害検出処理)の一例を示す図である。ストレージ障害検出処理は、各コンピュートノード110において独立して定期的に行われる。
【0119】
S1401では、サイト側プラグイン113は、プラグイン134を介して、ノード管理テーブル131から全てのノードの情報を取得する。
【0120】
S1402では、サイト側プラグイン113は、自コンピュートノード110とサイト識別ラベルが異なる利用可能なコンピュートノード110があるか否かを判定する。サイト側プラグイン113は、利用可能なコンピュートノード110があると判定した場合、S1403に処理を移し、利用可能なコンピュートノード110がないと判定した場合、ストレージ障害検出処理を終了する。
【0121】
サイト側プラグイン113は、利用可能なコンピュートノード110があると判定した場合、OS115に認識されているボリューム121毎にS1403~S1407の処理を実行する。
【0122】
S1403では、サイト側プラグイン113は、SCSIコマンド(例えば、INQUIRYコマンド)により、処理対象のボリューム121を提供するストレージ装置120からの応答の有無を確認する。なお、処理対象のボリューム121が関連付けボリューム121である場合、サイト側プラグイン113は、自サイト101のストレージ装置120だけではなく、関連付けボリューム121により関連付けられているボリューム121を提供する他サイト101のストレージ装置120に対してもSCSIコマンドを発行する。
【0123】
S1404では、サイト側プラグイン113は、応答があったか否かを判定する。サイト側プラグイン113は、応答があった(ストレージ装置120に障害が発生していない)と判定した場合、処理対象を次のボリューム121に設定してS1403に処理を移し、応答がなかった(ストレージ装置120に障害が発生した)と判定した場合、S1405に処理を移す。
【0124】
S1405では、サイト側プラグイン113は、接続ボリューム管理テーブル111より、応答がなかったストレージ装置120が提供するボリューム121の優先設定の有無を確認する。例えば、サイト側プラグイン113は、応答がなかったストレージ装置120が提供するボリューム121に対応するレコードが接続ボリューム管理テーブル111に含まれ、当該レコードの優先設定有無704が「有り」であるか否かを判定する。
【0125】
S1406では、サイト側プラグイン113は、優先設定があると判定した場合、S1407に処理を移し、優先設定がないと判定した場合、処理対象を次のボリューム121に設定してS1403に処理を移す。
【0126】
S1407では、サイト側プラグイン113は、コンテナ管理ソフト135に対して、処理対象のボリューム121を利用する自コンピュートノード110で稼動しているコンテナ112の再配置を指示し、ループを抜けてストレージ障害検出処理を終了する。
【0127】
ストレージ障害検出処理では、サイト側プラグイン113は、SCSIコマンドに対する応答がないストレージ装置120(ボリューム121)については障害が発生していると判断し、かつ、接続ボリューム管理テーブル111の優先設定の有無より、当該ボリューム121が優先されているか(つまりコンピュートノード110と同じサイト101にあるボリューム121であるか)を判断する。サイト側プラグイン113は、同じサイト101にあるボリューム121を提供するストレージ装置120に障害が起きていると判断した場合、当該ボリューム121を利用するコンテナ112を別サイト101に再配置させることを示す情報をコンテナ管理ソフト135に通知する。
【0128】
図15は、コンピュートノード110に障害が発生した際の処理(ノード障害関連処理)の一例を示す図である。
【0129】
S1501では、コンテナ管理ソフト135は、クラスタ102に所属するコンピュートノード110の障害を検出する。
【0130】
S1502では、コンテナ管理ソフト135は、障害が発生したコンピュートノード110で稼動している全てのコンテナ112について、ボリューム121と、障害が発生したコンピュートノード110との接続解除をプラグイン134に指示する。なお、プラグイン134は、当該指示に基づいて上述の接続解除処理を実行する。
【0131】
S1503では、コンテナ管理ソフト135は、障害が発生したコンピュートノード110で稼動している全てのコンテナ112について、別の正常稼動しているコンピュートノード110を割り当て、ボリューム121と、割り当てたコンピュートノード110との接続をプラグイン134に指示する。なお、プラグイン134は、当該指示に基づいて上述の接続処理を実行する。
【0132】
当該接続処理によれば、障害が発生したコンピュートノード110から別の正常稼動している他のコンピュートノードに再配置されるコンテナ112において指定されている関連付けボリューム121に関連付けられている各ボリューム121について、ボリューム121が作成されたストレージ装置120と他のコンピュートノード110とが同じサイト101に設けられているか否かが判定され、同じサイト101に設けられていると判定されたストレージ装置120において作成されたボリューム121が優先して利用されるための設定が行われる。
【0133】
本実施の形態によれば、ストレージシステムの可用性を高めることができる。
【0134】
(II)付記
上述の実施の形態には、例えば、以下のような内容が含まれる。
【0135】
上述の実施の形態においては、本発明をストレージシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
【0136】
また、上述の実施の形態において、「インターフェース部」は、1以上のインターフェースでよい。当該1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば、1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えば、NICとHBA(Host Bus Adapter))であってもよい。
【0137】
また、上述の実施の形態において、「記憶部」は、メモリ部とPDEV部とのうちの少なくとも1つ(典型的には少なくともメモリ部)である。
【0138】
また、上述の実施の形態において、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
【0139】
また、上述の実施の形態において、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)である。
【0140】
また、上述の実施の形態において、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部または全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
【0141】
また、上述の実施の形態において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部(例えば、メモリ)および/またはインターフェース部(例えば、通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部または全部を行うハードウェア回路(例えば、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))を含んでもよい。
【0142】
また、上述の実施の形態において、プログラムの一部またはすべては、プログラムソースから、ノードを実現するコンピュータのような装置にインストールされてもよい。プログラムソースは、例えば、ネットワークで接続されたプログラム配布サーバまたはコンピュータが読み取り可能な記録媒体(例えば、非一時的な記録媒体)であってもよい。また、上述の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0143】
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
【0144】
また、上述の実施の形態において、説明の便宜上、ストレージシステムに係る情報を、テーブルを用いて説明したが、データ構造はテーブルに限定されるものではない。ストレージシステムに係る情報は、XML(Extensible Markup Language)、YAML(YAML Ain't a Markup Language)、ハッシュテーブル、木構造等、テーブル以外のデータ構造によって表現されてもよい。
【0145】
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0146】
上述した実施の形態は、例えば、以下の特徴的な構成を有する。
【0147】
(1)
複数のサイト(例えば、サイト101)の各々に設けられているノードであってコンテナ(例えば、コンテナ112)を稼動可能なノードであるコンピュートノード(例えば、コンピュートノード110)を含んで構成されるクラスタ(例えば、クラスタ102)を管理するストレージシステムであり、コンテナが利用可能なボリューム(例えば、ボリューム121)を提供するストレージ装置(例えば、ストレージ装置120)が上記複数のサイトの各々に設けられているストレージシステム(例えば、ストレージシステム100)は、2つ以上のサイトから指定された複数のストレージ装置の各々において作成された各ボリュームの情報をもとに、上記各ボリュームを関連付けた関連付けボリュームの情報(例えば、ボリューム管理テーブル133のレコード)を生成する生成部(例えば、コントローラノード130、プラグイン134、回路等)と、上記生成部により生成された関連付けボリュームの情報が指定されたコンテナの起動が要求されたことに基づいて、上記関連付けボリュームに関連付けられている各ボリュームと上記コンテナを稼動するコンピュートノードとを接続することを上記各ボリュームが作成された各ストレージ装置に指示する指示部(例えば、コントローラノード130、プラグイン134、回路等)と、を備える。
【0148】
上記構成では、関連付けボリュームに関連付けられている2つのボリュームとコンテナを稼動するコンピュートノードとが接続されるので、例えば、コンテナは、2つのボリュームが同期されているときに一方のストレージ装置が障害により利用できなくなった場合でも、他方のストレージ装置のボリュームを利用することができる。上記構成によれば、ユーザは、IOが切断されることなく、業務を継続できる。
【0149】
(2)
コンテナが第1のサイトから第2のサイトに移動した際、コンテナが利用するボリュームが第1のサイトのボリュームのままである場合、IO性能が劣化するおそれがある。
【0150】
この点、上記ストレージシステムは、上記生成部により生成された関連付けボリュームの情報が指定されたコンテナの起動が要求されたことに基づいて、上記関連付けボリュームに関連付けられている各ボリュームについて、ボリュームが作成されたストレージ装置と上記コンテナを稼動するコンピュートノードとが同じサイトに設けられているか否かを判定し、同じサイトに設けられていると判定したストレージ装置において作成されたボリュームが優先して利用されるための設定を行う設定部(例えば、コントローラノード130、プラグイン134、回路等)を備える。
【0151】
上記構成では、例えば、コンテナが起動されるたびに、同期されている複数のボリュームのうち、コンテナを稼動するコンピュートノードが配置されているサイトと同じサイトに配置されているストレージ装置において作成されたボリュームを当該コンテナが利用できるように設定が行われる。上記構成によれば、コンテナが第1のサイトから第2のサイトに移動したとしても、コンテナが起動されるときに当該コンテナが利用するボリュームが第2のサイトのボリュームに割り当てられるので、コンテナが利用するボリュームが第1のサイトのボリュームのままとなる事態を回避でき、IO性能の劣化を回避することができる。
【0152】
(3)
第1のサイトのコンピュートノードに障害が発生した際、コンテナは、コンテナ管理ソフトにより第2のサイトに自動で移動される。第2のサイトに移動したコンテナに対して、接続対象のボリュームを第2のサイトのストレージ装置のボリュームに切り替えるためには、ユーザの手作業を要する。コンテナの移動は、コンテナ管理ソフトが自動で行うものであり、ストレージ装置の切り替えも自動で行われることが期待される。
【0153】
この点、上記ストレージシステムは、コンピュートノードの障害を検出する検出部(例えば、コントローラノード130、コンテナ管理ソフト135、回路等)を備え、上記設定部は、上記検出部によりコンピュートノードに障害が検出された場合、上記コンピュートノードから他のコンピュートノードに再配置されるコンテナにおいて指定されている関連付けボリュームに関連付けられている各ボリュームについて、ボリュームが作成されたストレージ装置と上記他のコンピュートノードとが同じサイトに設けられているか否かを判定し、同じサイトに設けられていると判定したストレージ装置において作成されたボリュームが優先して利用されるための設定を行う(例えば、図15および図12参照)。
【0154】
上記構成では、例えば、稼動中のコンテナがある第1のサイトのコンピュートノードに障害が発生し、コンテナ管理ソフトにより当該コンテナが第2のサイトのコンピュートノードに再配置されたことが検出された場合、再配置されたコンテナのサイトと同じサイトにあるボリュームが利用されるように設定される。上記構成によれば、再配置されたコンテナと同じサイトにあるボリュームが利用されるようになるので、コンピュートノードの障害に対するコンテナの再配置に合わせてユーザが手作業でボリュームを切り替えることなく、IO性能の劣化を回避することができる。
【0155】
(4)
コンテナを稼動している第1のサイトにあるストレージ装置に障害が発生した際、稼動中のコンテナが利用する同期された複数のボリュームのうち障害が発生していない第2のサイトのストレージ装置のボリュームに接続対象が切り替えられた場合、コンテナは第1のサイトにあるため、IO性能が劣化するおそれがある。
【0156】
この点、コンピュートノードは、情報を管理する管理部(例えば、コンピュートノード110、サイト側プラグイン113、回路等)と、上記コンピュートノードと接続されているストレージ装置の障害を検出する検出部(例えば、コンピュートノード110、サイト側プラグイン113、回路等)と、上記管理部により管理されている情報と上記検出部により検出された結果とに基づいて情報を出力する出力部(例えば、コンピュートノード110、サイト側プラグイン113、回路等)と、を備え、上記設定部は、同じサイトに設けられていると判定したストレージ装置において作成されたボリュームが優先して利用されるための設定を行った場合、上記サイトのコンピュートノードに、上記ボリュームの情報(例えば、NAA)と上記ストレージ装置の情報(例えば、ストレージボリュームID、ストレージシリアル)と上記ボリュームが優先して利用されるための設定を行ったこととを示す情報(例えば、優先設定有無)とが対応付けられた管理情報(例えば、接続ボリューム管理テーブル111に記憶する情報)を通知し(例えば、S1208)、上記コンピュートノードの管理部は、上記設定部より通知された管理情報を管理し、上記コンピュートノードの出力部は、上記検出部によりストレージ装置の障害が検出された場合、上記管理部により管理されている管理情報に基づいて、上記コンピュートノードにおいて優先して利用される設定が行われているボリュームがあるか否かを判定し、優先して利用される設定が行われているボリュームがあると判定したとき、上記コンピュートノードで稼動している上記ボリュームを利用するコンテナの再配置を促す情報を出力する(例えば、S1407)。
【0157】
上記構成によれば、例えば、コンテナを稼動している第1のサイトにあるストレージ装置に障害が発生した際、障害の発生していないストレージ装置のボリュームに接続対象が切り替えられた場合、コンテナの移動を促す情報が出力される。かかる情報に従ってコンテナ管理ソフトによりコンテナの移動が行われることで、IO性能が劣化する事態を回避することができる。
【0158】
(5)
第1のサイトのストレージ装置の第1のボリュームと第2のサイトのストレージ装置の第2のボリュームとが、個別に管理される場合、第1のボリュームを第1のコンテナ、第2のボリュームを第2のコンテナというように、別々の用途で参照させることができる。しかしながら、第1のボリュームと第2のボリュームとが同期されている場合に、別々のコンテナから同時に接続されてしまうと、データが破壊されてしまう。
【0159】
この点、上記ストレージシステムは、2つ以上のサイトから指定された複数のストレージ装置の情報の入力を受け付け、上記複数のストレージ装置が指定されたボリュームの作成の要求を受け付ける受付部(例えば、コントローラノード130、コンテナ管理ソフト135、回路等)を備え、上記指示部は、上記受付部により2つ以上のサイトから指定された複数のストレージ装置が指定されたボリュームの作成の要求が受け付けられた場合、上記複数のストレージ装置の各々にボリュームの作成を指示し、作成されたボリュームの情報を上記複数のストレージ装置の各々から受け取り、作成されたボリュームの同期処理を上記複数のストレージ装置の各々に指示する(例えば、図11参照)。
【0160】
上記構成では、複数のストレージ装置において複数のボリュームの作成が行われ、作成されたボリュームの同期処理が行われ、同期されている複数のボリュームが関連付けられた関連付けボリュームがコンテナに割り当てられる。上記構成によれば、例えば、別々のコンテナから同期されているボリュームに同時にアクセスされることがなく、データが破壊される事態を回避することができる。
【0161】
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
【0162】
「A、B、およびCのうちの少なくとも1つ」という形式におけるリストに含まれる項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができると理解されたい。同様に、「A、B、またはCのうちの少なくとも1つ」の形式においてリストされた項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができる。
【符号の説明】
【0163】
100……ストレージシステム、110……コンピュートノード、120……ストレージ装置、130……コントローラノード。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15