JP2022070769A - クラスタシステム、クラスタシステムのフェイルオーバー制御方法 - Google Patents

クラスタシステム、クラスタシステムのフェイルオーバー制御方法 Download PDF

Info

Publication number
JP2022070769A
JP2022070769A JP2020180031A JP2020180031A JP2022070769A JP 2022070769 A JP2022070769 A JP 2022070769A JP 2020180031 A JP2020180031 A JP 2020180031A JP 2020180031 A JP2020180031 A JP 2020180031A JP 2022070769 A JP2022070769 A JP 2022070769A
Authority
JP
Japan
Prior art keywords
node
volume
connection
storage device
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020180031A
Other languages
English (en)
Other versions
JP7179810B2 (ja
Inventor
啓太 杉原
Keita Sugihara
計典 松元
Keisuke Matsumoto
雄樹 黒田
Yuki Kuroda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020180031A priority Critical patent/JP7179810B2/ja
Priority to US17/404,469 priority patent/US11734133B2/en
Publication of JP2022070769A publication Critical patent/JP2022070769A/ja
Application granted granted Critical
Publication of JP7179810B2 publication Critical patent/JP7179810B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】コンテナ型仮想化環境において永続データを伴うフェイルオーバーを安全に行う。【解決手段】クラスタシステム10は、複数のノードを有する。複数のノードは、マスタノード100aと、第2のネットワークを介して複数のボリュームを有するストレージ装置150の第1のボリュームに対しIO要求を行う第1のノード100bと、第1のノードの障害時に第1のノードの処理を引き継ぐ第2のノード100cとを含む。第1のノードで第1のネットワーク障害が発生した場合、マスタノードは、ストレージ装置に対し、第1のノードと第1のボリュームとの接続を解除を指示する。ストレージ装置は、第1のノードと第1のボリュームとの接続を解除する。第1のノードは、第2のネットワーク経由でストレージ装置の接続状態管理情報を取得し、取得した接続状態に基づいて、接続解除指示に伴う第1のボリュームに関する後処理を実行する。【選択図】図1

Description

本発明は、クラスタシステムにおけるフェイルオーバーに関し、特に、コンテナ型仮想化環境におけるフェイルオーバーの技術に関する。
IT(Information Technology)サービスの可用性を向上させる方法として、実際にサービスを提供するアクティブノードと、アクティブノードに障害が発生した場合にサービスを引き継いで提供するスタンバイノードで構成されるクラスタシステムを構築する方法がある。スタンバイノードがアクティブノードからサービスを引き継ぐためには、アクティブノードで利用していたプログラムだけではなく、プログラムが利用していたデータも引き継ぐ必要がある。
クラスタシステムの運用コストを削減し、フェイルオーバーを実現するための技術が特許文献1に開示されている。
特許第6555353号
上記特許文献1のクラスタシステムは、第1の記憶部を有し、稼働系として動作する第1のノードと、第2の記憶部を有し、待機系として動作する第2のノードと、前記第2のノードの起動を制御する第1の制御装置と、前記第1のノード及び前記第2のノードとは別に設けられた第3の記憶部を備える。そして、前記第1のノードは、前記第1の記憶部の記憶内容が更新された場合に、前記第1の記憶部の記憶内容と前記第2の記憶部の記憶内容を同期させるための同期データを生成する同期データ生成手段と、前記同期データ生成手段により生成された前記同期データを前記第3の記憶部に送信して前記第3の記憶部に記憶させる同期データ送信手段と、前記同期データ送信手段により前記同期データを送信する場合に、前記第2のノードを停止状態から起動状態へと移行するよう指示する起動指示を前記第1の制御装置へ送信する第1の起動指示送信手段を有する。また、前記第1の制御装置は、前記起動指示を受信した場合に、前記第2のノードを起動する。また、前記第2のノードは、前記第3の記憶部に記憶された前記同期データを取得する同期データ取得手段と、前記同期データ取得手段により取得された前記同期データにより示される更新内容を前記第2の記憶部の記憶内容に反映させて、前記第2の記憶部の記憶内容を更新する更新手段を有し、前記同期データ取得手段は、前記第3の記憶部に記憶された前記同期データの取得に失敗した場合、前記第1のノードに前記同期データを要求し、前記同期データ送信手段は、前記同期データ取得手段からの要求に応じて、前記同期データを前記第2のノードに送信する、よう構成されている。
上記特許文献1では、待機系の第2のノードが常に起動状態でなくても、稼働系の第1のノードから待機系の第2のノードへのフェイルオーバーを行うことができるため、運用コストの抑制を可能としている。
また、1つのホストOS上に複数のコンテナと呼ばれる独立空間を形成するコンテナ型仮想化環境では、コンテナ管理アプリケーション(CO)が様々なノードの障害を検知し、コンテナを適切にフェイルオーバー(FO)させる必要がある。永続データを必要とするアプリケーションでは、ストレージのボリュームも適切にFOする必要がある。
特に、ネットワーク障害が発生したノード(FO元ノード)は、マスタノードや他のノード等の外部装置から孤立するため、マスタノードや他のノード等とネットワーク経由の通信を受信できなくなる。しかし、FO元ノード上では、アプリケーションは動き続けるため、マスタノードや他のノード等と接続されるネットワークとは異なる他のネットワーク(SAN等のSCSIネットワーク)で接続されるブロックストレージ装置へのライト処理が継続してしまう。その結果、FO元ノードとFO元ノードの処理を引き継ぐノードであるFO先ノードの双方から同一のストレージ装置の同一ボリュームに対してライト動作が発生し、ボリュームに格納されたデータを破壊してしまう。上記特許文献1は、この課題について言及されていない。
また、FO元ノードとストレージ装置のボリュームとの接続を解除する際、ストレージ装置側の操作だけでなく、FO元ノード側でも接続解除に伴うボリュームのデバイスファイルの削除等の適切な「後処理」を実行する必要がある。しかし、ネットワーク障害が発生した状態では、マスタノードからFO元ノードに後処理を促すことが出来ないため、ボリュームのデバイスファイルやマウントポイント情報がFO元ノードに残留し、FO元ノードが復旧した際に、正常にボリュームを認識できないといった問題が発生する。上記特許文献1では、この課題についても言及されていない。
そこで、本発明の目的は、コンテナ型仮想化環境において永続データを伴うフェイルオーバーを安全に行うことができるクラスタシステム、クラスタシステムのフェイルオーバー制御方法を提供することにある。
上記目的を達成するため、本発明のクラスタシステムの一態様は、第1のネットワークで接続される複数のノードを有し、複数のノードは、マスタノードと、第2のネットワークを介して複数のボリュームを有することができるストレージ装置の第1のボリュームに対しIO要求を行う第1のノードと、第1のノードの障害時に第1のノードの処理を引き継ぐ第2のノードとを含む。第1のノードで第1のネットワークの障害が発生した場合、マスタノードは、ストレージ装置に対し、第2のネットワークを介して第1のノードと第1のボリュームとの接続を解除する接続解除指示を送信し、ストレージ装置は、接続解除指示を受領すると、第1のノードと第1のボリュームとの接続を解除し、第1のノードと第1のボリュームとの接続状態を管理する接続状態管理情報を更新し、第1のノードは、第2のネットワークを経由でストレージ装置の接続状態管理情報で管理される接続状態を取得し、取得した接続状態に基づいて、接続解除指示に伴う第1のボリュームに関する後処理を実行する。
また、本発明のクラスタシステムのフェイルオーバー制御方法の一態様は、第1のネットワークで接続される複数のノードを有し、複数のノードは、マスタノードと、第2のネットワークを介して複数のボリュームを有することができるストレージ装置の第1のボリュームに対しIO要求を行う接続元ノードと、接続元ノードの障害時に接続元ノードの処理を引き継ぐ接続先ノードとを含むクラスタシステムのフェイルオーバー制御方法において、マスタノードは、接続元ノードの第1のネットワークの障害を検知すると、複数のノードの内、接続元ノードを除く他のノードを接続先ノードとして、第1のボリュームとの接続を要求する接続要求を発行する。さらに、マスタノードは、ストレージ装置に対し、第2のネットワークを介して接続要求に含まれる第1のボリュームとの接続状態を問い合わせる。マスタノードは、第1のボリュームが接続先ノード以外のノードに接続されている場合、ストレージ装置に対し、第2のネットワークを介して第1のボリュームと接続先ノード以外のノードの接続解除指示を発行する。ストレージ装置は、第2のネットワークを介して接続解除指示を受領すると、第1のボリュームの接続状態を接続解除待ちに設定して、接続元ノードと第1のボリュームとの接続を解除した後、第1のボリュームの接続状態を未接続に設定する。接続元ノードは、第2のネットワークを介してストレージ装置に対し、第1のボリュームの接続状態を問い合わせ、接続元ノードとの関係が接続解除待ちの場合に、第1のボリュームに関するデバイスファイルの削除を含む後処理を実行する。
本発明によれば、コンテナ型仮想化環境において永続データを伴うフェイルオーバーを安全に行うことができる。
実施の形態にかかる、クラスタシステムの構成の概要を示すブロック図である。 実施の形態にかかる、ノードのハードウェアブロック図の一例を示す図である。 実施の形態にかかる、マスタノードのハードウェアブロック図の一例を示す図である。 実施の形態にかかる、ストレージ装置のハードウェアブロック図の一例を示す図である。 実施の形態にかかる、マウントポイント情報の一例を示す図である。 実施の形態にかかる、ストレージ装置で管理されるボリューム接続状態管理情報の一例を示した図である。 実施の形態にかかる、コンテナ管理部が管理するノード情報の一例を示した図である。 実施の形態にかかる、コンテナ管理部が管理するボリューム情報の一例を示した図である。 実施の形態にかかる、デバイスファイルの一例を示したものである。 実施の形態にかかる、SCSI通信用情報の一例を示した図である。 実施の形態にかかる、ネットワーク障害発生等によるフェイルオーバー時のコンテナ管理部の処理を示したフローチャートである。 実施の形態にかかる、ネットワーク障害発生等によるフェイルオーバー時のプラグインの処理を示したフローチャートである。 実施の形態にかかる、ネットワーク障害発生等によるフェイルオーバー時のストレージ装置の処理を示したフローチャートである。 実施の形態にかかる、マスタノード以外のノードのプラグインの処理を示したフローチャートである。 実施の形態にかかる、マスタノード以外の障害が発生したノードのプラグインの処理を示したフローチャートである。 実施の形態にかかる、マスタノード以外の障害が発生したノードのプラグインの処理を示したフローチャートである。 実施の形態にかかる、マスタノード以外のノードのプラグインが行う処理を示したフローチャートである。 実施の形態にかかる、ストレージ装置で、ノードのプラグインから接続解除を受けた場合の処理の流れを示すフローチャートである。 実施の形態にかかる、ノードとボリュームとの接続を行う際の処理を示すシーケンス図である。 実施の形態にかかる、障害発生時にノードとボリュームの接続を解除するためのシーケンス図である。
以下、図面を参照しながら実施の形態を説明する。また、以下の説明では、「テーブル」等の表現にて各種情報を説明することがあるが、テーブル以外のデータ構造で表現されていてもよい。また、データ構造に依存しないことを示すために「テーブル」を「管理情報」と呼ぶことができる。
また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、処理部であるプロセッサ、例えば、MP(Micro Processor)やCPU(Central Processing Unit)によって実行され、定められた処理をするものである。尚、プロセッサは、適宜に記憶資源(例えばメモリ)及び通信インターフェース装置(例えば、通信ポート)を用いながら処理を行うため、処理の主語がプロセッサ、或いは処理部とされてもよい。プロセッサは、CPUの他に専用ハードウェアを有していてもよい。コンピュータプログラムは、プログラムソースから各コンピュータにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアなどで提供されるものであってもよい。
また、本実施例の図及び説明において同一部分には同一符号を付与しているが、本発明が本実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。
実施の形態の説明に先立って、本発明にかかる実施の形態の概要を説明する。
ノードとストレージ装置のボリュームとの接続を解除する際、ストレージ装置側の処理に加えて、ノード側でも接続解除に伴う「後処理」を行う必要がある。「後処理」は、ノードにおいて、接続解除に伴うボリュームに関するデバイスファイルの削除、ボリュームのマウントポイント情報の削除を行う処理である。
図1は、実施の形態にかかるクラスタシステム10の構成の概要を示すブロック図である。クラスタシステム10は、図1に示されるように、複数のノード100を有する。複数のノード100の内、ストレージ装置150のボリューム154にアクセスしているノードをFO元ノード100b、FO元ノード100bの障害時にその処理を引き継ぐ他の1台ノードをFO先ノード100cと呼ぶ。
ここで、「ノード」とは、ソフトウェアを実行するハードウェア、仮想マシン、又は、コンテナ等に相当するものであり、典型的には、OS(Operating System)の動作単位に対応するものである。例えば、各ノードは、それぞれ、オンプレミス環境で実現されてもよいし、仮想マシンを使用したクラウドコンピューティング基盤を用いた環境であるクラウドサービスにより実現されてもよい。なお、ノードは、情報処理装置と称されることもある。
クラスタシステムは、FO元ノードにより所定のサービスを提供し、FO元ノードに異常が発生した際に、フェイルオーバー(FO)を実施し、FO元ノードに代わりFO先ノードが所定のサービスを提供する。
クラスタシステム10は、複数のノード100とネットワークを介して接続される少なくとも一つのストレージ装置150とを含む。
複数のノード100は、マスタノード100a、FO元ノード100b、FO先ノード100cを含む。ネットワークは、LANスイッチ130を介して各ノード100とストレージ装置150を接続するLAN(Local Area Network、IPネットワーク)と、FCスイッチ131を介して各ノード100とストレージ装置150とを接続するSAN(Storage Area Network、SCSIネットワーク)を含む。
マスタノード100aは、システム全体を管理する。FO元ノード100bは、ストレージ装置内のボリューム154に対してI/O命令を行う。FO先ノード100cは、FO元ノード100bの障害時に、その処理を引継ぐ。本明細書において、フェイルオーバーを単にFOと記載し、フェイルオーバー元ノードをFO元ノード、フェイルオーバー先ノードをFO先ノードと記載することがある。
各ノード100は、オペレーティングシステム103上に、コンテナ管理ソフトウェア、プラグインソフトウェアが動作し、コンテナ管理部102、プラグイン101を構成する。FO元ノード100bには、ボリューム154に格納されたデータの読み出し要求、ボリューム154に対しデータの書き込む要求を行う、その他のアプリケーション104も動作する。各ノード100は、LANスイッチ130と接続されるNIC110と、FCスイッチ131と接続されるHBA111とを有する。
ストレージ装置150は、LANスイッチ130と接続されるNIC151と、FCスイッチ131と接続されるHBA152とを有する。ストレージ装置150は、FCネットワークにより、FO元ノード100b、FO先ノード100c等のノードと接続され、これらノードからSCSIプロトコルのI/O要求を受付け、ボリューム154に対してデータを書き込んだり、ボリューム154からデータを読み出したりするブロックストレージ装置である。
また、ストレージ装置150は、FO元ノード100bからのI/O要求先となる少なくとも一つのボリューム154と、ボリューム154と接続先ノードを特定する情報(接続先ノード情報)と、その状態を管理するボリューム接続状態管理情報153と、SCSIコマンド通信用ボリューム155とを有する。尚、接続先ノード情報は、ボリューム154と接続されるノードとそのHBAを特定する情報を含むが、以下、説明を容易にするため、単にノードIDとして説明することがある。
FO元ノード100bのOS103bは、ボリューム154に対するI/O命令を行うためのコマンドを一時的に格納するデバイスファイル122b、SCSIコマンド通信用ボリューム155に対するコマンドを一時的に格納するSCSI通信用デバイスファイル121bと、を参照する。SCSI通信用デバイスファイル121は、本実施例によるSCSIコマンドの送受信に用いられる。
図1では、FO元ノードにLANの障害が発生し、FO元ノードからFO先ノードにFOする場合を示している。そのため、FO先ノード上にストレージ装置150のボリューム154に対するI/O命令を行えるよう新しくSCSI通信用デバイスファイル121cが作成され、FO元ノードのデバイスファイルが古いデバイスファイル122bとして、記載されている。
本実施例では、接続解除に伴い、この古いデバイスファイル112bをFO元ノードから確実に削除(後処理)することにより、FO元ノードによるストレージ装置150のボリューム154のデータ破壊防止と、FO元ノードが障害から復旧した場合に、ストレージ装置のボリュームを正しく認識できるようにする。
図2は、FO元ノード100b、FO先ノード100cのハードウェアブロック図であり、SSDなど不揮発性記憶素子からなる記憶装置230、RAMなど揮発性記憶素子からなるメモリ220、記憶装置230に保持されるプログラムをメモリ220に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうCPUなどの処理部210、ユーザからのキー入力や音声入力を受け付ける入力装置(図示せず)、処理データの表示を行うディスプレイ等の出力装置(図示せず)、ネットワークと接続し、他の装置との通信処理を担う通信装置であるNIC(Network Interface Card)110やHBA111、処理部210、メモリ220、記憶装置230、入力装置、出力装置、NIC110等をそれぞれ接続するバス等の接続装置240と、を有する一般的な計算機である。
尚、アプリケーション、プラグインコンテナ管理ソフトウェアは、Operating Software(OS)103上で動作し、処理部210によって実行され、プラグイン101、コンテナ管理部(CO)102等の各機能を実現する。
アプリケーション104は、ボリューム154に格納されたデータを読み出し、ボリューム154にデータを書き込む要求を行う。
プラグイン101は、Container Storage Interfaceというコンテナ-ストレージ仮想装置間の標準的なインターフェースで定義された機能を有し、SANを介して接続されるストレージ装置のボリュームと複数のノードとの接続を管理する。例えば、日立製作所のHitachi Storage Plug-in for Containersを利用することができる。
コンテナ管理部102は、ノード100とストレージ装置150の接続関係を管理し、ノード100やストレージ装置150の障害を検出する機能を有する。例えば、OSSのKubernetesを利用することができる。
OS103は、アプリケーション104とハードウェアの中間に位置し、ユーザやアプリケーション104に対して標準的なインターフェースを提供すると同時に、ハードウェアなどの各リソースに対して効率的な管理を行なう。OS103は、アプリケーション104の要求をストレージ装置150のボリューム154に伝えるため、デバイスファイルを管理する。
図3は、マスタノード100aのハードウェアブロック図である。図2のFO元ノード100b及びFO先ノード100cと比較し、メモリ220上にアプリケーションがない点を除き、同様の構成である。
図4、ストレージ装置のハードウェアブロック図である。
ストレージ装置150は、ノードからSCSIプロトコルのI/O要求を受付け、ボリューム154に対してデータを書き込んだり、ボリューム154からデータを読み出したりするブロックストレージ装置であり、複数(又は1つ)の物理的記憶デバイスから構成されるボリューム403と、ボリューム403に接続されたストレージコントローラ401とを有する。ストレージコントローラ401は、プロセッサ402を含むコントローラの一例である。
ストレージコントローラ401は、SANに接続されるHBA404と、LANに接続されるNIC405と、IF406、メモリ407と、それらに接続されたプロセッサ402とを有する。
HBA404は、ノード100とストレージコントローラ401との間のデータのやり取りを仲介する通信インターフェースデバイスである。HBA404に、SCSIネットワーク(FCネットワークを含む)を介して、ノード100が接続される。
ノード100の内、FO元ノード100bは、ストレージコントローラ401に対して、I/O先(例えばLUN(Logical Unit Number)のような論理ボリューム番号や、LBA(Logical Block Address)のような論理アドレス)を指定したI/O要求(ライト要求又はリード要求)を送信する。
NIC405は、LANを介してノード100とストレージコントローラ401の間のデータのやり取りを仲介する通信インターフェースデバイスである。
I/F406は、複数のボリューム403とストレージコントローラ401の間のデータのやり取りを仲介する通信インターフェースデバイスである。複数のボリューム403のそれぞれは、図1のボリューム154やSCSIコマンド通信用ボリューム155に対応するとともに、ボリューム接続状態管理情報153を格納するボリュームに対応する。
メモリ407は、プロセッサ402が実行するプログラムと、プロセッサ402が使用するデータを記憶する。プロセッサ402は、メモリ407に格納されているプログラムを実行する。例えば、メモリ407及びプロセッサ402の組が二重化されている。
図5は、マウントポイント情報を示す図である。
マウントポイント情報500は、OS103によって管理され、マウント元501、マウント先502と、を対応付けて管理する。
マウント元501はOS103がストレージ装置150のボリューム154にアクセスするためのデバイスファイルのデバイスファイル名の情報を管理する。各デバイスファイルは、ノード100毎に、そのノードにマウントされているデバイスを管理する。マウント先502はマウントポイントを示している。
図6は、ストレージ装置150で管理されるボリューム接続状態管理情報を示した図である。
ボリューム接続状態管理情報600は、ストレージ装置150のストレージコントローラ401よって管理され、少なくともボリュームID601、接続元情報602、接続先情報603、接続状態604と、を対応付けて管理する。
ボリュームID601はストレージ装置150のボリューム154を識別するための情報である。
接続元情報(ストレージID)602はストレージ装置150を識別する情報である。
接続先情報(ノードID)603はボリュームIDによって特定されるボリュームが接続されるノードを識別する情報である。
接続状態604はボリュームIDによって特定されるボリュームと接続先情報603によって特定されるノードとの接続状態に関する情報である。接続状態は、ノードとボリュームが接続されている「接続中」、接続されていない「未接続」、接続解除指示を受け解除中で未接続になる前の「接続解除待ち」の3種類の状態を管理する。
例えば、ボリュームID601が「0」のボリュームは、接続元情報(ストレージID)602「001」に存在し、接続先情報603「1」で特定されるノードと、「接続中」の状態であることを示す。
尚、各ストレージ装置150にボリューム接続状態管理情報600を有する場合には、接続元情報(ストレージID)602は一意に特定できるため、省略してもかまわない。
図7は、コンテナ管理部102が管理するノード情報を示した図である。
ノード情報700は、コンテナ管理部102によって管理され、少なくともノード名701とノードID702とを対応して管理する。ノード名701はノードに付された名前であり、ノードID702はノードを識別する情報である。ノードID702は、例えばノード名とストレージ装置150が接続されるポートのwwnとを有することができる。
図8は、コンテナ管理部102が管理するボリューム情報を示した図である。
ボリューム情報800は、コンテナ管理部102によって管理され、少なくともボリューム名801、ストレージID802、ボリュームID803と、を対応付けて管理する。
ボリューム名801はボリュームの名前であり、ストレージID802はストレージ装置を識別する情報であり、図6のボリューム接続状態管理情報600の接続元情報(ストレージID)602に相当する情報である。ボリュームID803はストレージ装置150内のボリュームを識別する情報であり、図6のボリュームID601に対応する情報である。
例えば、ボリューム名801「pvcA」が、ストレージID「001」のボリュームID「1」と対応していることを示している。
図7と図8に示したように、各ノードのコンテナ管理部102は、ノード100、ストレージ装置150、ストレージ装置150内のボリューム154の情報を有し、各ノードとノードに接続されるストレージ装置のボリュームとの関係をノードボリューム対応関係として管理することができる。
図9は、デバイスファイルを示したものである。デバイスファイル900は、OS103によって参照され、少なくともデバイスファイル名901、ストレージID902、ボリュームID903を対応付けて管理する。
デバイスファイル名901は、図5のマウントポイント情報500のマウント元(デバイスファイル名)501に相当する情報である。ストレージID902は、ストレージ装置を識別する情報で図6のボリューム接続状態管理情報600の接続元情報(ストレージID)602、図8のボリューム情報800のストレージID802に相当する情報である。ボリュームID903はストレージ装置150内のボリュームを識別する情報であり、図6のボリュームID601、図8のボリュームID803に対応する情報である。
図10は、FO元ノード100b、FO先ノード100cで管理されるSCSI通信用情報1000を示した図である。
SCSI通信用情報1000は、OS103によって参照され、少なくともストレージID1001、ボリュームID1002、デバイスファイル名1003、SCSI通信用1004と、を対応付けて管理する。
ストレージID1001は、ストレージ装置の識別情報であり、図6のストレージID602、図8のストレージID802に相当する情報である。
ボリュームID1002は、ストレージ装置内のボリュームを識別するための情報である。
デバイスファイル名1003は、図5のマウントポイント情報500のマウント元(デバイスファイル名)501に相当する情報である。
SCSI通信用1004は、SCSI通信可能か否かを示す情報である。
尚、ストレージID1001、ボリュームID1002、デバイスファイル名1003、SCSI通信用1004は、NAAとして提供されても良い。
図11は、ネットワーク障害発生等によるフェイルオーバー時のマスタノード100aのコンテナ管理部102aの処理を示したフローチャートである。尚、以降の説明でネットワーク障害とは、LANスイッチで接続されるネットワークの障害を意図し、SAN側の障害を指すものではない。
コンテナ管理部102aは、ノードのネットワーク障害を検知し、プラグイン101aに対し、接続先ノードとボリュームとを接続する接続指示を送信する(S111)。
詳細には、ステップS111では、コンテナ管理部102aは、障害を検知すると、障害の発生したノードのコンテナ管理部102が使用しているボリュームを特定する。コンテナ管理部102aは、ノード情報700とボリューム情報800とにより、ノードとストレージ装置内のボリュームとの対応関係を把握している。そして、コンテナ管理部102aは、特定したボリュームのボリュームIDと対応する、ストレージID、及び障害が発生していないノード(接続先ノード)のノードIDを特定する。接続先ノードは、障害が発生していないノードをノード情報に基づいて特定する。これら特定したストレージID、ボリュームID、接続先ノードIDを指定して、プラグイン101aに対し接続指示を送信する。
コンテナ管理部102aは、プラグイン101aに接続指示を発行した後、プラグイン101aの処理を待ち、接続指示により接続される接続先ノード(FO先ノード)のコンテナ管理部102を起動する。
図12はネットワーク障害発生等によるフェイルオーバー時のマスタノード100aのプラグイン101aの処理を示したフローチャートである。
プラグイン101aは、コンテナ管理部102aから接続指示を受け取ると、接続指示の対象となるボリュームに関する接続状態をストレージ装置150に、SANを介して問い合わせて確認する(S121)。尚、接続指示には、接続されるノードとボリュームを特定するため、接続先ノードを特定するノードIDと、接続されるボリュームを有するストレージ装置を特定するストレージIDと、ボリュームを特定するボリュームIDと、が含まれる。尚、ストレージIDとボリュームIDは、FO元ノードが利用していたボリュームを特定する情報である。プラグイン101aは、接続指示で指定されたストレージ装置にボリュームの接続状態を問い合わせるコマンドを送信する。
ストレージ装置150に問い合わせた結果、接続指示されたボリュームが、接続指示により接続される接続先ノード以外に接続されているか判断する(S122)。この判断は、接続指示のノードIDと、ストレージ装置150から送信される接続状態に対応するノードIDとを比較して行う。ストレージ装置150からの接続状態に対応するノードIDは、接続指示に含まれるボリュームに接続され、ボリューム接続状態管理情報600によって管理されるノードIDである。
ステップS122で、NOの場合、ステップS125に進み、YESの場合ステップS123に進む。
ステップS123では、ストレージ装置150に対して、SCSIネットワーク(SAN)経由で接続解除指示を送信する。つまり、プラグイン101aは、接続指示されたボリュームが接続指示されたノード以外のノードに既に接続されている場合、既に接続されているノードの接続を解除する接続解除指示を、SCSIネットワーク経由でストレージ装置150(SCSI通信用ボリューム155)に送信する。接続解除指示は、接続が解除されるノードを特定するノードID(FO元ノード)と、ボリュームを特定するボリュームIDとが含まれる。ストレージIDは、接続解除指示の送信先のストレージ装置を特定するために参照される。
ステップS124で、プラグイン101aは、ストレージ装置150からSCSIネットワーク経由で接続解除完了通知を受領する。
ストレージ装置150から接続解除完了通知を受領すると、プラグイン101aは、再度、FO先ノードとなる接続先ノードIDとボリュームIDを含む接続指示をSCSIネットワーク経由でストレージ装置150に送信する(S125)。この際、接続指示には、ストレージIDを含まなくても良い。ストレージ装置を特定して接続指示を送信するためである。尚、図では示していないが、ステップS125で、プラグイン101aは、FO先ノードとなる接続先ノードIDによって特定されるノード100cのプラグイン101cに対し、FO先ノードとなる接続先ノードIDとボリュームIDを含む接続指示を送信する。FO先ノードとなる接続先ノード100cでは、接続指示に従って、接続対象であるボリュームに関するデバイスファイル122c及びSCSI通信用デバイスファイル121cの設定、SCSI通信用情報120cの更新を行う。接続指示を受領したプラグイン101cの処理は、既存のプラグインの処理と同じであるため、詳細な説明は省略する。
ストレージ装置150から接続指示を処理し、SCSIネットワーク経由で接続完了通知を受領すると(S126)、プラグイン101aは、コンテナ管理部102aに対して、接続の完了を通知する(S127)。
LANのネットワーク障害が発生したFO元ノードは、マスタノードやFO先ノード等の外部装置から孤立するため、FO元ノードとストレージ装置のボリュームとの接続や接続解除の処理を行うことができないが、図12に示した処理によれば、マスタノードからストレージ装置に対し、SCSIネットワーク経由でFO元ノードとボリュームとの接続解除を指示することができる。
図13は、ネットワーク障害発生等によるフェイルオーバー時のストレージ装置150の処理を示したフローチャートである。
ストレージ装置150は、プラグイン101aから接続解除指示を受信すると、ボリューム接続状態管理情報600の内容の更新処理を開始する(S131)。具体的には、ストレージ装置150はプラグイン101aから、接続中のノード(FO元ノード)とボリュームとをそれぞれ特定するノードIDとボリュームIDと、を含む接続解除指示を受領する。接続解除指示を受領すると、接続解除指示に含まれるボリュームIDの接続状態を「接続解除待ち」に設定する。接続状態が「接続解除待ち」となると、接続解除を実行し、接続が解除されたらボリューム接続状態管理情報600に「未接続」と設定する処理を実行する。基本的に、接続制御を行うソフトウェアと、ボリューム接続状態管理情報600を更新するソフトウェアが異なるため、接続解除を行うソフトウェアがボリューム接続状態管理情報の状態を確認した後、接続解除を実行する処理となる。このように、ストレージ装置では、ノードとボリュームとの接続状態を管理する。
ステップS132で、ボリューム接続状態管理情報600を確認し、接続解除指示を受けたボリュームの接続状態を調べ(S132)、当該ボリュームの接続状態が「未接続」か、を判定する(S134)。
未接続でない場合、ステップS131に戻り、未接続の場合はS135に進み、接続解除指示を受けたボリュームとノードとの接続を解除する(S135)。
このように、ストレージ装置150では、ノードとボリュームの接続状態をボリューム接続状態管理情報600で管理し、プラグイン101aからノードとボリュームとの接続解除指示を受領すると、ボリューム接続状態管理情報600で接続状態を更新する。これにより、プラグイン101aの接続解除指示を、SCSIネットワーク経由で、ストレージ装置150が管理し、障害の発生したノード(FO元ノード)に対して、伝えることができる。
この図で示した処理は、種々の変形が考えられ、ストレージ装置でボリュームとノードとの接続状態を管理し、接続状態を確認したうえで接続解除が実行できれば他の態様で実現されても良い。
図14は、マスタノード以外のノードのプラグイン101の処理を示したフローチャートであり、ネットワーク障害が発生する前の通常時の処理を示している。
各ノードのプラグイン101は、マスタノード100aのコンテナ管理部102aから、管理しているボリューム情報800を受け取り、各ノードのメモリ220に格納する。
接続先情報(ノードID)、接続元情報(ストレージID)、ボリュームIDはマスタノード100aのコンテナ管理部102aが管理しており、各ノードのプラグイン101はこれらの情報を有していない。そのため、ネットワーク障害発生に備えて、通常時に情報を取得するため、図14の処理は、定期的に実行されることが好ましい。
尚、図14では、ステップS141でボリューム情報800を受け取ると説明したが、ノード情報700や接続されているノード(ノードID)とボリューム(ストレージID、ボリュームID)との対応関係を受領し、メモリに格納しても良い。
図15は、障害が発生したノードのプラグイン101の処理を示したフローチャートであり、ネットワーク障害が発生し、フェイルオーバーを行う際の処理の流れを示している。
プラグイン101は、本処理を定期的に実行するものとする。図14のS141で取得したボリューム情報を利用し、ボリューム毎にS151からS158の処理を実行し、全てのボリュームに対して処理を実行したら、処理を終了する。
ステップS152で、プラグイン101は、ボリュームの接続状況を、SCSIネットワーク経由でストレージ装置150に問い合わせるSCSIコマンドを発行する。詳細には、プラグイン101は、処理対象のストレージ装置とボリュームを特定するストレージID、ボリュームIDに基づき、処理対象のボリュームを有するストレージ装置に対して、SCSIコマンドを送信する。
ステップS153で、プラグイン101はストレージ装置150からボリュームの接続状態をSCSIネットワーク経由で受領する。ストレージ装置150は、SCSIコマンドで問い合わせのあったボリュームIDに基づいて、ボリューム接続状態管理情報600を参照し、接続状態をプラグイン101に返す。
ステップS154で、ストレージ装置150から接続状態を受領したプラグイン101は、状態が「接続解除待ち」であるかを判断し、接続解除待ちであればステップS155に進み、接続解除待ちでなければ、ステップS151に戻り、違うボリュームの処理を行う。
ステップS155では、処理対象のボリュームのマウント状態を確認し、接続解除に伴うマウント状態を解除する。詳細には、プラグイン101は、ボリュームID、ストレージIDからOS103に対応するデバイスファイル名を問い合わせる。OS103はデバイスファイル900を参照し、ボリュームID、ストレージIDに対応するデバイスファイル名を特定する。この際OS103は、マウントポイント情報500を参照し、特定したデバイスファイル名からマウント元501を特定し、マウント先(マウントポイント)502との関係を削除する(マウントポイント情報を削除)。
ステップS156で、プラグイン101は、接続解除に伴い、処理対象のボリュームのデバイスファイルを削除する。ステップS155で、既に対象ボリュームのデバイスファイル名が特定されているので、この特定されたデバイスファイルを削除する。
ステップS157で、プラグイン101は、SCSI通信用情報1000からSCSIコマンド通信用ボリューム155を選択し、接続解除を通知するSCSIコマンドを、SCSIネットワーク経由で送信する。SCSI通信用情報1000には、ストレージID1001、ボリュームID1002、デバイスファイル名1003、SCSI通信用のボリュームかを示す情報1004が対応付けて管理されているため、SCSI通信用のボリュームを選択することができる。
ステップS158で、未処理のボリュームが存在する場合ステップS151に戻り、全てのボリュームについて処理を実行した場合処理を終了する。
図15の処理により、障害が発生したノード(FO元ノード)では、SCSIネットワーク経由で接続解除が指示されたことを知り、接続指示対象のボリュームに関するマウントポイント情報及びデバイスファイルを削除する後処理を実行するため、FO元ノードとFO先ノードによる同一ボリュームに対するライト動作の発生を防止することができる。
さらに、FO元ノードが復旧した際、既に、古いデバイスファイルやマウントポイント情報が削除されているため、復旧時にボリュームを新たに認識してデバイスファイルの設定等を行うので、ストレージ装置内のボリュームを正しく認識することができる。
通常、デバイスファイルはボリュームが新たに接続された際に、OSS(例えば、Linux(登録商標))により自動的に作られるが、古いデバイスファイルが残った状態だと、新たに接続されたことを認識できないことがある。例えば、新たな接続は、ノードのHBAやLUNなどを元に識別されるが、このLUNの値は古い接続と同じ値になることがある。より詳細には、ボリュームID「1」のボリュームがLUN「100」でノードと接続された状態で、デバイスファイルを削除せずに、ストレージ装置側だけで接続を解除すると、ストレージ装置側ではLUN「100」は空いた状態になるが、ノード側ではLUN「100」で認識したデバイスファイルが残留する。この時、ボリュームID「2」のボリュームをLUN「100」でノードと接続すると、ノードでは新たにデバイスファイルは削除されず、古いデバイスファイルが使い回される。図15の処理により、古いデバイスファイルが残らなくなり、Linuxは正常にデバイスファイルを認識することができるため、復旧時に特別な操作は必要ない。
このように、図15に示した処理により、障害の発生したノードでは、確実に後処理を行うことができる。
図16は、マスタノードのプラグイン101aの処理を示したフローチャートであり、SCSI通信用ボリュームを管理する処理の流れを示している。
ステップS161で、プラグイン101aは、最初にストレージ装置150のボリューム154とノード100との接続を行う際に、ストレージ装置150にSCSIコマンド通信用ボリューム155を作成し、SCSIコマンド通信用ボリューム155とFO元ノード100bとFO先ノード100cとの接続を行う。SCSI通信用ボリュームを作成し、ノードと接続したらOS103aに通知し、SCSI通信用情報1000に登録する。
ステップS162で、プラグイン101aは、FO元ノード100b、FO先ノード100cのプラグイン101b、プラグイン101cに対して、作成したSCSI通信用ボリュームの情報を送信する。つまり、SCSI通信用情報1000に登録した、SCSIコマンド通信用ボリューム155を有するストレージID、ボリュームID、デバイスファイル名等の情報を送信する。これにより、SCSIコマンド通信用ボリューム155に関するSCSI通信用デバイスファイル121b、121cの設定を行うことができる。
図17は、マスタノード以外のノードのプラグイン101が行う処理であって、SCSI通信用ボリュームの管理を行う処理を示したものである。
FO元ノード100bのプラグイン101b、あるいは、FO先ノード100cのプラグイン101cは、マスタノードのプラグイン101aから、SCSIコマンド通信用ボリューム155の情報を受けとったら、各ノードのSCSI通信用情報1000にその情報を格納する。これにより、FO先ノードとしてボリュームに関するSCSI通信用のデバイスファイルの設定を行うことができる。
図18は、ストレージ装置150で、ノードのプラグイン101から接続解除を受けた場合の処理の流れを示すフローチャートである。
ステップS181で、ストレージ装置150は、任意のノードのプラグインから受領した接続解除を指示する接続解除指示コマンド(SCSIコマンド)を受信する。
尚、このSCSIコマンドには、接続が解除されるノードとボリュームを、それぞれ特定するノードID、ボリュームIDの情報が含まれる。
ステップS182で、ストレージ装置150は、受信したSCSIコマンドから、ボリューム接続状態管理情報600の接続解除の対象となるボリュームとノードの接続状態を未接続にする。
以上の通り、各ノード100とストレージ装置150間でのSCSIコマンドは、SAN経由で、SCSI通信用ボリューム155を介して行われる。
図19は、ノードとストレージ装置150のボリューム154との接続を行う際の処理を示すシーケンス図である。この処理は、図11と図12の内容に対応する。
まず、マスタノード100aのコンテナ管理部102aは、マスタノードのプラグイン101aに対し、接続先ノードID、ストレージ装置ID、ボリュームIDを指定して、接続指示を行う(S191)。接続指示は、図11のステップS111で説明した通り、障害が発生したノードが使用していたボリュームのボリュームIDと対応する、ストレージID、及び障害が発生していないノード(接続先ノード)のノードIDを特定する。
接続指示を受けたプラグイン101aは、接続指示に含まれるストレージIDによって特定されるストレージ装置150に対し、接続指示に含まれるボリュームIDによって特定されるボリュームの接続状態を問い合わせる(S192)。
ストレージ装置150では、ボリューム接続状態管理情報600を参照して、問い合わせのあったボリュームに接続されているノードIDと、そのノードとの接続状態を接続先情報としてプラグイン101aに送信する(S193)。
プラグイン101aは、ステップS191で得た接続指示のノードIDと、ステップS193で得た接続先情報のノードIDとを比較し(S194)、異なる場合、接続解除指示をストレージ装置150に送信する(S195)。つまり、プラグイン101aは、接続指示されたボリュームが接続指示されたノード以外のノードに接続されている場合、既に接続されているノードの接続を解除する接続解除指示をストレージ装置150に送信する。
ストレージ装置150は、接続解除指示に従って、既に接続されているボリュームとノードの接続状態を未接続に変更し、接続が解除されると、プラグイン101aに対して、完了通知を行う(S196)。
ステップS197で、プラグイン101aは、ストレージ装置150に対し、ボリュームとノードを接続するためボリュームIDと接続先ノードIDを含む接続指示を送信する。この際のボリュームIDと接続先ノードIDは、ステップS191で接続指示されたボリュームIDとノードIDに対応する。
ストレージ装置150は、ステップS197で接続指示を受けたボリュームIDと接続先ノードIDとの接続を行い、ボリューム接続状態管理情報600の接続状態を「接続中」を登録し、プラグイン101aに完了報告を行う(S198)。
図20は、障害発生時にノードとボリュームの接続を解除するためのシーケンス図である。このシーケンス図により、FO元ノードでは、接続解除されたボリュームに関するマウントポイント情報とデバイスファイルを削除する。
ネットワーク障害等が発生する前の通常状態において、各プラグイン101は、マスタノード100aのコンテナ管理部102aからボリューム情報800を要求し(S201)、ボリュームID、ストレージIDとの対応関係等を受信する(S202)。
ステップS201、S202は、図14に示した処理である。
プラグイン101は、ステップS202で受け取ったボリューム情報に基づき、処理を開始する(S204)。プラグイン101は、ストレージ装置150に対し、ボリュームの接続状態を問い合わせる(S205)。
ストレージ装置150は、問い合わせのあったボリューム関する接続状態をプラグイン101に対して返す(S206)。
プラグイン101では、ストレージ装置150からの接続状態が「接続解除待ち」かを判定し、接続解除待ちの場合は、当該ボリュームに関するマウントポイント情報、デバイスファイル情報を削除する(S207)。
プラグイン101は、ストレージ装置150に対し、当該ボリュームを特定するボリュームIDと接続されていたノードのノードIDを指定した接続解除完了通知を、SCSI通信用ボリュームを介して送信する(S208)。ステップS205からS208は、図15に記載した処理に対応する。
本実施例によれば、1つのホストOS上に複数のコンテナと呼ばれる独立空間を形成するコンテナ型仮想化環境において、ストレージのボリュームも適切にFOすることができる。
また本実施例によれば、ネットワーク障害が発生したFO元ノードは、マスタノードやFO元ノード等の外部装置から孤立するため、マスタノードやFO先ノード等とネットワーク経由の通信を受信できなくなるが、マスタノードからストレージ装置に対し、SCSIネットワーク経由でFO元ノードとボリュームとの接続解除を指示し、FO元ノードでは、SCSIネットワークを経由して、ストレージ装置から接続解除指示を受け取ることができる。
また、本実施例によれば、障害が発生したノード(FO元ノード)では、SCSIネットワーク経由で接続解除指示を受けると、接続指示対象のボリュームに関するマウントポイント情報及びデバイスファイルを削除するため、FO元ノードとFO先ノードによる同一ボリュームに対するライト動作の発生を防止することができる。
さらに、本実施例によれば、FO元ノードが復旧した際、既に古いデバイスファイルやマウントポイント情報が削除されているため、ストレージ装置内のボリュームを正しく認識することができる。
以上の通り、本実施例によれば、コンテナ型仮想化環境において永続データを伴うフェイルオーバーを安全に行うことができる。
上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することにより、ソフトウェアを使用して実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
100:ノード
100a:マスタノード
100b:FO元ノード
100c:FO先ノード
101:プラグイン
102:コンテナ管理ソフトウェア
103:OS
110:NIC
111:HBA
120:SCSI通信用情報
121:SCSI通信用デバイスファイル
122:デバイスファイル
130:LANスイッチ
131:FCスイッチ
150:ストレージ装置
153:ボリューム接続状態管理情報
154:ボリューム
155:SCSIコマンド通信用ボリューム
210:CPU
220:メモリ
230:記憶装置
401:ストレージコントローラ
402:プロセッサ
403:ボリューム
407:メモリ

Claims (10)

  1. 第1のネットワークで接続される複数のノードを有し、複数のノードは、マスタノードと、第2のネットワークを介して複数のボリュームを有することができるストレージ装置の第1のボリュームに対しIO要求を行う第1のノードと、前記第1のノードの障害時に前記第1のノードの処理を引き継ぐ第2のノードとを含み、
    前記第1のノードで前記第1のネットワークの障害が発生した場合、前記マスタノードは、前記ストレージ装置に対し、前記第2のネットワークを介して前記第1のノードと前記第1のボリュームとの接続を解除する接続解除指示を送信し、
    前記ストレージ装置は、前記接続解除指示を受領すると、前記第1のノードと前記第1のボリュームとの接続を解除し、前記第1のノードと前記第1のボリュームとの接続状態を管理する接続状態管理情報を更新し、
    前記第1のノードは、前記第2のネットワークを経由で前記ストレージ装置の接続状態管理情報で管理される接続状態を取得し、取得した接続状態に基づいて、前記接続解除指示に伴う、前記第1のボリュームに関する後処理を実行する、ことを特徴とするクラスタシステム。
  2. 請求項1に記載のクラスタシステムにおいて、
    前記第2のネットワークは、SCSIプロトコルによるネットワークであり、
    前記第1のノードで実行される後処理は、前記第1のボリュームに関するデバイスファイルの削除を含む、ことを特徴とするクラスタシステム。
  3. 請求項2に記載のクラスタシステムにおいて、
    前記第1のノードで実行される後処理は、さらに、前記第1のボリュームに関するマウントポイント情報の削除を含む、ことを特徴とするクラスタシステム。
  4. 請求項3に記載のクラスタシステムにおいて、
    前記第1のノードは、前記ストレージ装置が管理する前記第1のノードと前記第1のボリュームとの接続状態が接続解除待ちの場合に後処理を実行する、ことを特徴とするクラスタシステム。
  5. 請求項4に記載のクラスタシステムにおいて、
    前記第1のノードは、前記ストレージ装置に送信する接続解除指示を格納するSCSI通信用デバイスファイルを有することを特徴とするクラスタシステム。
  6. 請求項4に記載のクラスタシステムにおいて、
    前記複数のノードのそれぞれには、前記複数のノードと前記ストレージ装置の接続関係を管理し、前記複数のノードの前記第1のネットワークの障害を検出するコンテナ管理部を有することを特徴とするクラスタシステム。
  7. 請求項4に記載のクラスタシステムにおいて、
    前記複数のノードは、仮想マシン、あるいはコンテナであることを特徴とするクラスタシステム。
  8. 第1のネットワークで接続される複数のノードを有し、複数のノードは、マスタノードと、第2のネットワークを介して複数のボリュームを有することができるストレージ装置の第1のボリュームに対しIO要求を行う接続元ノードと、前記接続元ノードの障害時に前記接続元ノードの処理を引き継ぐ接続先ノードとを含むクラスタシステムのフェイルオーバー制御方法において、
    前記マスタノードは、
    前記接続元ノードの前記第1のネットワークの障害を検知すると、前記複数のノードの内、前記接続元ノードを除く他のノードを接続先ノードとして、前記第1のボリュームとの接続を要求する接続要求を発行し、
    前記ストレージ装置に対し、前記第2のネットワークを介して接続要求に含まれる前記第1のボリュームとの接続状態を問い合わせ、
    前記第1のボリュームが前記接続先ノード以外のノードに接続されている場合、前記ストレージ装置に対し、前記第2のネットワークを介して前記第1のボリュームと前記接続先ノード以外のノードの接続解除指示を発行し、
    前記ストレージ装置は、前記第2のネットワークを介して前記接続解除指示を受領すると、前記第1のボリュームの接続状態を接続解除待ちに設定して、前記接続元ノードと前記第1のボリュームとの接続を解除した後、前記第1のボリュームの接続状態を未接続に設定し、
    前記接続元ノードは、前記第2のネットワークを介して前記ストレージ装置に対し、前記第1のボリュームの接続状態を問い合わせ、前記接続元ノードとの関係が接続解除待ちの場合に、前記第1のボリュームに関するデバイスファイルの削除を含む後処理を実行する、ことを特徴とするクラスタシステムのフェイルオーバー制御方法。
  9. 請求項8記載のクラスタシステムのフェイルオーバー制御方法において、
    前記第2のネットワークは、SCSIネットワークであり、
    前記第1のネットワークは、LANスイッチで接続されるIPネットワークである、ことを特徴とするクラスタシステムのフェイルオーバー制御方法。
  10. 請求項9記載のクラスタシステムのフェイルオーバー制御方法において、
    前記マスタノードを除く複数のノードは、前記マスタノードから前記ストレージ装置の前記複数のボリュームと前記複数のノードとの接続関係に関する情報を受け取る、ことを特徴とするクラスタシステムのフェイルオーバー制御方法。
JP2020180031A 2020-10-27 2020-10-27 クラスタシステム、クラスタシステムのフェイルオーバー制御方法 Active JP7179810B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020180031A JP7179810B2 (ja) 2020-10-27 2020-10-27 クラスタシステム、クラスタシステムのフェイルオーバー制御方法
US17/404,469 US11734133B2 (en) 2020-10-27 2021-08-17 Cluster system and fail-over control method of cluster system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020180031A JP7179810B2 (ja) 2020-10-27 2020-10-27 クラスタシステム、クラスタシステムのフェイルオーバー制御方法

Publications (2)

Publication Number Publication Date
JP2022070769A true JP2022070769A (ja) 2022-05-13
JP7179810B2 JP7179810B2 (ja) 2022-11-29

Family

ID=81258391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020180031A Active JP7179810B2 (ja) 2020-10-27 2020-10-27 クラスタシステム、クラスタシステムのフェイルオーバー制御方法

Country Status (2)

Country Link
US (1) US11734133B2 (ja)
JP (1) JP7179810B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2024016596A (ja) * 2022-07-26 2024-02-07 株式会社日立製作所 ストレージシステムおよび制御方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207855A (ja) * 1997-01-17 1998-08-07 Hitachi Ltd 共有ディスク型多重系システム
JP2004535012A (ja) * 2001-06-26 2004-11-18 イーエムシー コーポレイション 仮想ストレージエリアネットワークを構築するためのネットワークデータミラーリング
JP2007042001A (ja) * 2005-08-05 2007-02-15 Hitachi Ltd 計算機システム、同期化処理方法、およびプログラム
JP2007207219A (ja) * 2006-01-06 2007-08-16 Hitachi Ltd 計算機システムの管理方法、管理サーバ、計算機システム及びプログラム
JP2009140153A (ja) * 2007-12-05 2009-06-25 Fujitsu Ltd ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラムおよびストレージシステム
JP2015064648A (ja) * 2013-09-24 2015-04-09 株式会社日立製作所 計算機システム、計算機システムの制御方法及び接続モジュール

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050125557A1 (en) * 2003-12-08 2005-06-09 Dell Products L.P. Transaction transfer during a failover of a cluster controller
JP5080140B2 (ja) * 2007-06-13 2012-11-21 株式会社日立製作所 I/oデバイス切り替え方法
JP5598148B2 (ja) * 2010-08-05 2014-10-01 富士通株式会社 スイッチング装置、情報処理装置、及びスイッチング装置の制御方法
EP3089409A4 (en) * 2013-12-26 2017-11-01 Telefonica, S.A. Method and system for restoring qos deteriorations in mpls networks
US10642501B1 (en) * 2014-01-10 2020-05-05 MIPS Tech, LLC Hardware virtualized input output memory management unit
WO2017047065A1 (ja) 2015-09-17 2017-03-23 日本電気株式会社 クラスタシステム、情報処理装置、クラスタシステムの同期方法、及びプログラムを格納する記憶媒体
US10318320B1 (en) * 2015-12-07 2019-06-11 Amazon Technologies, Inc. Virtual desktop access using device-native user interfaces

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207855A (ja) * 1997-01-17 1998-08-07 Hitachi Ltd 共有ディスク型多重系システム
JP2004535012A (ja) * 2001-06-26 2004-11-18 イーエムシー コーポレイション 仮想ストレージエリアネットワークを構築するためのネットワークデータミラーリング
JP2007042001A (ja) * 2005-08-05 2007-02-15 Hitachi Ltd 計算機システム、同期化処理方法、およびプログラム
JP2007207219A (ja) * 2006-01-06 2007-08-16 Hitachi Ltd 計算機システムの管理方法、管理サーバ、計算機システム及びプログラム
JP2009140153A (ja) * 2007-12-05 2009-06-25 Fujitsu Ltd ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラムおよびストレージシステム
JP2015064648A (ja) * 2013-09-24 2015-04-09 株式会社日立製作所 計算機システム、計算機システムの制御方法及び接続モジュール

Also Published As

Publication number Publication date
US20220129357A1 (en) 2022-04-28
US11734133B2 (en) 2023-08-22
JP7179810B2 (ja) 2022-11-29

Similar Documents

Publication Publication Date Title
US11249857B2 (en) Methods for managing clusters of a storage system using a cloud resident orchestrator and devices thereof
US11640356B2 (en) Methods for managing storage operations for multiple hosts coupled to dual-port solid-state disks and devices thereof
US8312235B2 (en) Data migration in a storage system with dynamically expansible volumes
US8560747B1 (en) Associating heartbeat data with access to shared resources of a computer system
JP4575028B2 (ja) ディスクアレイ装置およびその制御方法
US9032170B2 (en) Method for replicating a logical data storage volume
US9229645B2 (en) Storage management method and storage system in virtual volume having data arranged astride storage devices
US7240116B2 (en) Dynamic RDF groups
US9083724B2 (en) System iteratively reducing I/O requests during migration of virtual storage system
JP4448878B2 (ja) 障害回復環境の設定方法
US8452923B2 (en) Storage system and management method thereof
US20090327568A1 (en) Data Replication method and apparatus
US20160077752A1 (en) Fibre Channel Storage Array Methods for Handling Cache-Consistency Among Controllers of an Array and Consistency Among Arrays of a Pool
JP2007226400A (ja) 計算機管理方法、計算機管理プログラム、実行サーバの構成を管理する待機サーバ及び計算機システム
US11573737B2 (en) Method and apparatus for performing disk management of all flash array server
US9158637B2 (en) Storage control grid and method of operating thereof
US10620843B2 (en) Methods for managing distributed snapshot for low latency storage and devices thereof
US10031682B1 (en) Methods for improved data store migrations and devices thereof
US20210089379A1 (en) Computer system
US9875059B2 (en) Storage system
CN109407975B (zh) 写数据方法与计算节点以及分布式存储系统
JP7179810B2 (ja) クラスタシステム、クラスタシステムのフェイルオーバー制御方法
US20210334025A1 (en) Methods for handling storage devices with different zone sizes and devices thereof
US8819481B2 (en) Managing storage providers in a clustered appliance environment
US8700832B1 (en) Automated addition of file based hardware and file based access services in a data storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210827

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221116

R150 Certificate of patent or registration of utility model

Ref document number: 7179810

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150