JP6720250B2 - ストレージシステム及び構成情報制御方法 - Google Patents

ストレージシステム及び構成情報制御方法 Download PDF

Info

Publication number
JP6720250B2
JP6720250B2 JP2018131897A JP2018131897A JP6720250B2 JP 6720250 B2 JP6720250 B2 JP 6720250B2 JP 2018131897 A JP2018131897 A JP 2018131897A JP 2018131897 A JP2018131897 A JP 2018131897A JP 6720250 B2 JP6720250 B2 JP 6720250B2
Authority
JP
Japan
Prior art keywords
configuration information
cluster
sub
node
local
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.)
Active
Application number
JP2018131897A
Other languages
English (en)
Other versions
JP2020009336A (ja
Inventor
裕章 宮田
裕章 宮田
洋司 中谷
洋司 中谷
正樹 村岡
正樹 村岡
敦史 宮垣
敦史 宮垣
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 JP2018131897A priority Critical patent/JP6720250B2/ja
Priority to US16/296,973 priority patent/US10884881B2/en
Publication of JP2020009336A publication Critical patent/JP2020009336A/ja
Application granted granted Critical
Publication of JP6720250B2 publication Critical patent/JP6720250B2/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/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/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
    • 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/2097Error 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 maintaining the standby controller/processing unit updated
    • 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/0617Improving the reliability of storage systems in relation to availability
    • 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/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージシステム及び構成情報制御方法に関し、複数のノードがクラスタ化されて構成されたスケールアウト型のストレージシステムにおいてその構成情報を制御するストレージシステム及び構成情報制御方法に適用して好適なものである。
近年、複数のノードを連結してクラスタを構築したスケールアウト型のストレージシステムが注目されている。スケールアウト型のストレージシステムは、複数のノードを連結して1つのファイルシステムとして管理可能にしたものであり、システムを停止することなくノードを追加可能なことから、高い拡張性や管理性を有している。また、スケールアウト型のストレージシステムは、複数のノード間でI/Oを処理するプロセスをクラスタ化することによって、あるノードが障害等で停止しても、待機系のプロセスで処理を引き継ぐことが可能となり、I/Oの継続(フェイルオーバー)を実現することができることから、従来のストレージシステムに比べて可用性も高い。
例えば特許文献1には、スケールアウト型のストレージシステムにおけるノードの管理方法が開示されている。詳しくは、特許文献1のノード管理方法では、スケールアウト型のストレージシステムにおいて、クラスタ内の2ノード間でHAペアを構築し、HAペアとクラスタ間を冗長化した構成とし、ストレージノードの障害または異常終了が発生した際は、HA間でフェイルオーバーすることによって、可用性の高いフェイルオーバーを実現しようとしている。
特表2018−500648号公報
しかし、上述した従来のスケールアウト型のストレージシステムでは、フェイルオーバーの実行時のようにノードの構成情報を取得する必要がある場合に、不揮発なデータストアにアクセスしなければならなかった。具体的には例えば、上記の特許文献1に開示されたノードの管理方法では、各ノードの構成情報はストレージアレイのディスク(メールボックスルートディスク)に格納されており、HAペアを構築したノードAとノードBとの間でノードAからノードBにフェイルオーバーする場合、ノードBは、自身のストレージアレイの物理ディスクにアクセスして構成情報を取得していた。
ここで、構成情報を不揮発なデータストアに保存することはデータロストの防止の観点において重要である。しかし、不揮発なデータストアに用いられる物理ディスク(例えば、HDDやSSD等)は揮発性のインメモリに比べてデータアクセス速度が非常に低速であることが広く知られている。したがって、従来技術では、ノードの構成情報の取得が必要な際に、低速な不揮発なデータストアにアクセスすることによって処理時間が長くなってしまい、例えば、即時のフェイルオーバーを実現できないおそれがあった。
本発明は以上の点を考慮してなされたもので、スケールアウト型のストレージシステムにおいて、高い可用性を有し、高速なフェイルオーバーを実現することが可能なストレージシステム及び構成情報制御方法を提案しようとするものである。
かかる課題を解決するため本発明においては、複数のノードを連結してクラスタを構築したスケールアウト型のストレージシステムであって、前記複数のノードのうち少なくとも2以上のノードはそれぞれ、前記クラスタの全体に跨る処理を制御するクラスタコントローラと、自ノードに閉じた処理を制御するノードコントローラと、自ノード内のI/O処理を実施するプロセスであって、自ノード内のプロセス間でサブクラスタを構成するとともに、他の前記ノードにおける稼働系/待機系の対応プロセスと同期する、複数のサブクラスタプロセスと、前記クラスタの全体で共有される不揮発なデータストアと、を備えるストレージシステムが提供される。このストレージシステムは、前記データストアが、前記ストレージシステムの構成情報のうち、前記クラスタの全体で共有が必要な情報を含む構成情報をグローバル構成情報として保持し、前記サブクラスタプロセスが、前記ストレージシステムの構成情報のうち、自サブクラスタプロセスが動作するために必要な構成情報をローカル構成情報として保持し、稼働系の前記サブクラスタプロセスが、前記データストアにアクセスすることなく前記I/O処理を実施可能であり、前記I/O処理を実施中の稼働系の前記サブクラスタプロセスを備える前記ノードが停止または稼働不可状態になった場合に、他の前記ノードの1つにおいて当該サブクラスタプロセスに対応する待機系の前記サブクラスタプロセスを稼働系に切り替え、前記稼働系に切り替えられた前記サブクラスタプロセスは、自身が保持する前記ローカル構成情報を用いて前記I/O処理の実施を引き継ぐ
また、かかる課題を解決するため本発明においては、複数のノードを連結してクラスタが構築されたスケールアウト型のストレージシステムの構成情報を制御する以下の構成情報制御方法が提供される。ここで、前記ストレージシステムにおいて前記複数のノードのうち少なくとも2以上のノードはそれぞれ、前記クラスタの全体に跨る処理を制御するクラスタコントローラと、自ノードに閉じた処理を制御するノードコントローラと、自ノード内のI/O処理を実施するプロセスであって、自ノード内のプロセス間でサブクラスタを構成するとともに、他の前記ノードにおける稼働系/待機系の対応プロセスと同期する、複数のサブクラスタプロセスと、前記クラスタの全体で共有される不揮発なデータストアと、を備える。そして、本構成情報制御方法では、前記データストアが、前記ストレージシステムの構成情報のうち、前記クラスタの全体で共有が必要な情報を含む構成情報をグローバル構成情報として保持し、前記サブクラスタプロセスが、前記ストレージシステムの構成情報のうち、自サブクラスタプロセスが動作するために必要な構成情報をローカル構成情報として保持し、稼働系の前記サブクラスタプロセスが、前記データストアにアクセスすることなく前記I/O処理を実施可能とし、前記I/O処理を実施中の稼働系の前記サブクラスタプロセスを備える前記ノードが停止または稼働不可状態になった場合に、他の前記ノードの1つにおいて当該サブクラスタプロセスに対応する待機系の前記サブクラスタプロセスを稼働系に切り替える切替ステップと、前記切替ステップで前記稼働系に切り替えられた前記サブクラスタプロセスが、自身が保持する前記ローカル構成情報を用いて前記I/O処理の実施を引き継ぐ引継ステップと、を備える
本発明によれば、スケールアウト型のストレージシステムにおいて、高い可用性を有し、高速なフェイルオーバーを実現することができる。
本発明の一実施の形態に係るストレージシステムの構成例を示すブロック図である。 図1に示したストレージシステムを構成する各ノードのハードウェア構成の一例を示すブロック図である。 構成情報に関するノードの機能ブロックを示す図である。 グローバル構成情報及びローカル構成情報の構成例を示すオブジェクト図である。 グローバル構成情報及びローカル構成情報の具体例を示す図である。 構成情報更新処理の処理手順例を示すフローチャートである。 サブクラスタ選択処理の詳細な処理手順例を示すフローチャートである。 ノード選択処理の詳細な処理手順例を示すフローチャートである。 構成情報更新処理の具体的な流れを説明するための図である。 従来技術によるスケールアウト型のストレージシステムにおけるI/O処理の動作を説明するための図である。 本実施の形態におけるI/O処理の動作を説明するための図である。
以下、図面を参照しながら、本発明の一実施の形態を詳述する。なお、各図面において、同様の機能・構成を有する複数の要素に対して、それぞれを区別するために、同一番号の後に「A」,「B」等の添字を付することがあるが、これらの区別を必要としない場合は、添字を省略して表記する。
また、本明細書においては、コントローラ、サービス、プロセス等の運用状況について、稼働状態にあるものを「活性化」あるいは「Active」と表記するが、これらは、当業者において一般に用いられている「稼働系」、「運用系」、「アクティブ系」等と同義である。同様に、待機状態にあるものを「非活性化」あるいは「Passive」と表記するが、これらは、「待機系」、「スタンバイ系」等と同義である。
(1)スケールアウト型のストレージシステムの構成
図1は、本発明の一実施の形態に係るストレージシステムの構成例を示すブロック図である。図1に示したストレージシステム100は、複数のノードを連結してクラスタを構築したスケールアウト型のストレージシステムである。ストレージシステム100を構成する各ノードは、役割に応じて、コントローラノード(Controller Node)110、コンピュートノード(Compute Node)120、またはストレージノード(Storage Node)130と呼ぶ。
なお、図1には、本実施の形態に係るスケールアウト型のストレージシステム100のうち、本発明の特徴に関する要部の構成を示している。したがって、本実施の形態に係るストレージシステム100は、図1に示した以外の構成を備えることができる。具体的には例えば、図示した以上の複数のストレージノード130を備えて構成することができ、また、各ノードにおいて不図示のサーバ(Server)やサービス(Service)等を含む構成とすることができる。また、図1において破線で示されたコントローラやサービスは、非活性化(または、不存在と置き換えてもよい)を意味している。
コントローラノード110は、マネジメントネットワーク(Management Network)210を介して複数のストレージノード130に接続され、ストレージの管理操作(例えば、後述する構成設定リクエスト等)を発行するノードである。コントローラノード110が発行するストレージの管理操作は、複数のストレージノード130のうち、プライマリのクラスタマスタ(後述)にのみ送られる。
コンピュートノード120は、コンピュートネットワーク(Compute Network)220を介して複数のストレージノード130に接続され、ユーザデータの処理(I/O)を発行するノードである。コンピュートノード120が発行するI/Oは、全てのストレージノード130に分散して送られる。
ストレージノード130(個別には、ストレージノード130A,130B)は、不図示のノード間ネットワーク(Inter-Node Network)を介して複数のストレージノード130が連結されて1つのファイルシステムとして管理可能なストレージ空間を提供するノードである。複数のストレージノード130は、クラスタ構成における役割に応じて、ストレージ全体の監視及び協調動作を制御するクラスタマスタ(Cluster Master)と、クラスタマスタによって制御されるクラスタスレイブ(Cluster Slave)とに分類される。例えば、後に説明する図3では、ストレージノード130Aをクラスタマスタとし、ストレージノード130Bをクラスタスレイブとしている。クラスタスレイブは、クラスタマスタからの構成設定処理要求を受け付けた場合、ノード内のプロセスに対して構成設定処理を行う。
さらに詳しくは、クラスタマスタは、現行サービスとして動作するプライマリ(Primary)と、クラスタマスタの待機系サービスとしてプライマリに障害があった場合にプライマリに昇格するセカンダリ(Secondary)に分類することができる。セカンダリのクラスタマスタは、冗長化のために2以上が存在することが好ましい。また、クラスタスレイブの個数は0以上である(すなわち、存在しなくてもよい)。
図2は、図1に示したストレージシステムを構成する各ノードのハードウェア構成の一例を示すブロック図である。図2に示すように、ノードは例えば、一般的な物理サーバ10によって構成され、ハードウェア(Hardware)20の構成として、CPU(Central Processing Unit)21、メモリ22、iSCSI(Internet Small Computer System Interface)やFC(Fibre Channel)やLAN(Local Area Network)等の各種物理ポート23、及びSSD(Solid State Drive)やHDD(Hard Disk Drive)による物理ディスク24,25等を備える。そしてこれらのハードウェア20によって、SDS OS(Software-Defined Storage Operating System)31、OSS(Open Source Software)32、仮想マシン33、ハイパーバイザ(Hypervisor)34、及びLinuxカーネル(Linux Kernel)35(Linux:登録商標)等といった、ミドルウェア・ソフトウェア(Middleware/Software)30が実現される。
なお、図2には、ノードのハードウェア構成の一般的な例を示したが、本発明は図示した構成に限定されるものではなく、同様の機能を実現可能な様々な構成を採用してよい。具体的には例えば、物理ディスクは、SSD24またはHDD25の何れかのみで構成されてもよいし、その他の物理ディスクを含むものであってもよい。また、ハードウェアの各構成の個数にも、特段の限定はない。
図1に戻り、ストレージノード130の内部構成について詳しく説明する。前述したように、図1に示したストレージノード130の内部構成は、本発明の特徴に関する要部の構成に限られている。なお、以降の説明では、異なる分類のノードを併記する場合を除き、ストレージノード130等を「ノード130」等と表記することがあり、個別のストレージノード130A,130Bを指す場合には、ノード130Aやノード130Bと表記する。
図1に示したように、ストレージノード(Storage Node)130は、クラスタコントローラ(Cluster Controller)131、ノードコントローラ(Node Controller)132、複数のサブクラスタ(SubCluster)133,134、及び、スケールアウトデータベース(SODB:Scale-out DB)135を備えて構成される。
クラスタコントローラ131(個別には、クラスタコントローラ131A,131B)は、グローバル構成情報138の更新等、クラスタ全体にまたがる制御処理を行うコントローラである。また、クラスタコントローラ131は、ノードコントローラ132に処理リクエストを送る。なお、クラスタコントローラ131は、プライマリのクラスタマスタのノード130内でのみ活性化(Active)し、セカンダリのクラスタマスタのノード130内では非活性化(Passive)する。但し、プライマリが停止してセカンダリの何れかがプライマリに昇格した場合は、当該セカンダリのクラスタマスタにおいてクラスタコントローラ131が活性化する。
ノードコントローラ132(個別には、ノードコントローラ132A,132B)は、ローカル構成情報136,137の更新等、ノード130に閉じた制御処理を行う。また、ノードコントローラ132は、クラスタコントローラ131から指示を受けて動作する。
クラスタコントローラ131及びノードコントローラ132は、コントロールプレーンであり、マネジメントネットワーク210を介してコントローラノード110と接続する。なお、ストレージノード130におけるコントロールプレーンは、図1に示した構成に限られるものではなく、例えばウェブサーバ等も含まれる。
サブクラスタ133,134(個別には、サブクラスタ133A,133B,134A,134B)は、ノード内のプロセス間でサブクラスタ構成をとるI/Oプロセスのサービスであり、ノード130のなかに不特定数存在する。図1にも示したように、サブクラスタ133,134は、活性化しているプロセス(Active Process)と非活性化しているプロセス(Passive Process)とがある。具体的には例えば、サブクラスタ133Aは活性化しているプロセスであり、サブクラスタ134Aは非活性化しているプロセスである。
これら複数のサブクラスタ133,134は、データプレーンであり、コンピュートネットワーク220を介してコンピュートノード120に接続する。各サブクラスタ133,134は、ローカル構成情報(Local Config. Data)136,137を格納している。本実施の形態では、ノード間のクラスタ構成によって、クラスタマスタとクラスタスレイブの関係が構築されたノード間では、それぞれ対応するサブクラスタ同士でローカル構成情報が同期される。具体的には例えば、ノード130Aのサブクラスタ133Aとノード130Bのサブクラスタ133Bとの間で、ローカル構成情報136Aとローカル構成情報136Bとが同期される。なお、ストレージノード130におけるデータプレーンは、図1に示した構成に限られるものではなく、他のI/Oプロセス、例えばフロントエンドサービスやバックエンドサービス等も含まれる。なお、これら他のI/Oプロセスは、プロセスごとにクラスタ内での構成が異なる。
なお、以降の説明では、サブクラスタ133とサブクラスタ134とを区別する必要がない場合、すなわち、サブクラスタ全般を指す場合には、記載を省略して、「サブクラスタ133」と表記することがある。同様に、ローカル構成情報136とローカル構成情報137とを区別する必要がない場合、すなわち、ローカル構成情報全般を指す場合には、記載を省略して、「ローカル構成情報136」と表記することがある。
SODB135(個別には、SODB135A,135B)は、コントロールプレーン及びデータプレーンの双方に接続される不揮発なデータストアであり、グローバル構成情報(Global Config. Data)138を格納している。そして、SODB135は、他ノード130のSODB135同士でデータを同期し、グローバル構成情報138を複製する。なお、SODB135は、クラスタマスタのノード内でのみ活性化し、クラスタスレイブのノードは、クラスタマスタのノード内のSODB135を参照する。例えば、ノード130AのSODB135Aが活性化しており、ノード130BのSODB135Bが非活性化している場合(後述するように、SODB135Bが存在しない場合でもよい)、ノード130Bはノード130AのSODB135Aを参照する。
なお、本実施の形態に係るストレージシステム100においては、基本的には全てのストレージノード(ノード)130がSODB135を持っている。このなかには、非活性化(Passive)されたSODB135を含む。但し、全てのノード130でSODB135を持つようにすると、SODB135同士の情報の同期に時間が掛かりやすいことから、性能向上のためにSODB135を持つノード130を限定する構成にしてもよい。このとき、SODB135を持たないノード130は、SODB135を持つノード130に対して構成情報の参照を行うようにすればよい。
以上が、ストレージノード130の内部構成である。上記の内部構成のうち、コントロールプレーン及びデータプレーンは、ハードウェア的には、図2に示したCPU21やメモリ(インメモリ)22によって実現され、SODB135は、SSDやHDD等の物理ディスク24,25によって構成される。すなわち、サブクラスタ133が保持するローカル構成情報136は、データアクセス速度が高速なインメモリ22に格納されるのに対し、SODB135が保持するグローバル構成情報138は、データアクセス速度が低速な物理ディスク24,25に格納される。
ここで、上述した説明で用いた語句のいくつかについて説明を補足する。
まず、本説明において、クラスタ(メインクラスタ)とは、ストレージシステム100が備える複数のノードによって構成されるクラスタを意味する。これに対して、サブクラスタとは、個々のストレージノード130内のプロセスやサービス間で構成されるクラスタを意味し、メインクラスタに対して内的なクラスタである。サブクラスタ133,134は、このようなサブクラスタのプロセスである。
次に、本説明において、グローバル構成情報138及びローカル構成情報136は、何れも、ストレージシステム100の構成を示すメタデータ(構成情報)を意味する。本実施の形態に係るスケールアウト型のストレージシステム100では、この構成情報をグローバルとローカルとに分割保持することを特徴の1つとしている。
ストレージシステム100に保持される上記構成情報のうち、グローバル構成情報138には、メインクラスタ全体で共有が必要な構成情報が含まれる。例えば、メインクラスタ全体の構成に関する情報や、ノード130の障害発生時に他のノード130に引き継ぐ必要がある、ノード130ごとの情報等が相当する。
一方、ローカル構成情報136には、サブクラスタ133のプロセスでしか利用しない構成情報(言い換えれば、サブクラスタ133が動作するために必要な構成情報)が含まれる。例えば、当該サブクラスタ133がI/O処理をするために必要な情報等が相当する。
但し、グローバル構成情報138とローカル構成情報136は、完全に独立した情報ではなく、ローカル構成情報136のなかには、グローバル構成情報138と紐付いた情報も含まれる。したがって、互いの構成情報で整合性を保つために、ローカル構成情報136に変更があった場合には、グローバル構成情報138も変更する必要がある。また、グローバル構成情報138に変更があった場合には、変更内容の構成情報を保持するローカル構成情報136を変更する必要がある。構成情報の変更については、構成情報更新処理として後に詳述する。
(2)ノードの機能構成と構成情報
次に、ノード(ストレージノード)130が保持する構成情報と、構成情報に関する機能構成について、より詳しく説明する。
図3は、構成情報に関するノードの機能ブロックを示す図である。図3に示すストレージノード(クラスタマスタ)130A及びストレージノード(クラスタスレイブ)130Bは、図1に示したストレージノード130A,130Bにそれぞれ対応している。また、図3には、管理操作者111の操作によって構成設定リクエストが発行された場合の処理(構成情報更新処理)の流れが、矢印付きの実線あるいは破線によって記載されているが、これは、図6等を参照しながら後述する構成情報更新処理の説明に対応するものである。
クラスタマスタ130Aとクラスタスレイブ130Bとの関係においては、クラスタマスタ130Aのクラスタコントローラ131Aが、コントローラノード110からの指示(例えば、管理操作者111の操作による構成設定リクエスト)を受け付ける。図3では図示が省略されているが、クラスタスレイブ130BのクラスタコントローラはPassiveである。
同様に、クラスタマスタ130Aとクラスタスレイブ130Bとの関係において、グローバル構成情報は、クラスタマスタのSODBに格納されたグローバル構成情報138Aが参照される。なお、図3では図示は省略されているが、例えばクラスタスレイブ130BがPassiveなSODBを備えている場合、当該SODBにはグローバル構成情報(例えば、図1に示したグローバル構成情報138B)が格納されており、クラスタスレイブのグローバル構成情報はクラスタマスタのグローバル構成情報と同期される(図1参照)。
また、クラスタマスタ130A及びクラスタスレイブ130Bは、同様のサブクラスタ構成を備え、対応関係にある複数のサブクラスタ133A,133B(134A,134B)のうちの何れか1つが活性化(Active)となり、残りが非活性化(Passive)となる。そして、対応関係にあるサブクラスタ間では、保持するローカル構成情報は同期される仕組みとなっている。具体的には例えば、図3において、クラスタマスタ130AのActiveなサブクラスタ133Aはクラスタスレイブ130BのPassiveなサブクラスタ133Bと対応関係にあり、サブクラスタ133Aが保持するローカル構成情報136Aは、サブクラスタ133Bが保持するローカル構成情報136Bと同期される。同様に、クラスタマスタ130AのPassiveなサブクラスタ134Aはクラスタスレイブ130BのActiveなサブクラスタ134Bと対応関係にあり、サブクラスタ134Aが保持するローカル構成情報137Aは、サブクラスタ134Bが保持するローカル構成情報137Bと同期される。
クラスタコントローラ131Aは、自ノードのSODB(図示省略)に格納されたグローバル構成情報138Aを更新する機能(グローバル構成情報更新)と、グローバル構成情報更新に応じてローカル構成情報を更新するために、対象となるローカル構成情報を有するサブクラスタのプロセスを特定する機能(サブクラスタプロセス特定)とを有する。グローバル構成情報更新は、後述する図6のステップS102の処理に相当する。また、サブクラスタプロセス特定は、後述する図6のステップS103〜S104(図7及び図8)の処理に相当する。
また、ノードコントローラ132A,132Bは、自ノード内のサブクラスタ133に当該サブクラスタ133が有するローカル構成情報136の更新を要求する機能(ローカル構成情報更新)を有する。ローカル構成情報更新は、後述する図6のステップS106〜S107の処理に相当する。
図4は、グローバル構成情報及びローカル構成情報の構成例を示すオブジェクト図である。図4では、図1や図3に示したグローバル構成情報138に対応する一例として、グローバル構成情報300を示し、図1や図3に示したローカル構成情報136,137に対応する一例として、ローカル構成情報400を示している。
図4に破線で示すように、サブクラスタの構成情報を示すグローバル構成情報300は、サブクラスタ内に保持されるローカル構成情報400と紐付けされている。また、グローバル構成情報300に含まれる個々の構成情報(図中の「object_A」や「object_B」)はそれぞれ、ローカル構成情報400に含まれる個々の構成情報(図中の「object_A'」や「object_B'」)と関連付けられている。具体的には、メインクラスタ内で一意な識別子(ID)を用いて、グローバル構成情報300及びローカル構成情報400を管理することによって、これらの関連付けを行うことができる。
図5は、グローバル構成情報及びローカル構成情報の具体例を示す図である。図5は、図4に示したグローバル構成情報300及びローカル構成情報400に含まれるオブジェクト(構成情報)の一部についてその具体的なテーブル(構成情報テーブル)を例示したものである。なお、図4に示した「object_A」及び「object_A'」は、図5においては「volume」及び「volume'」という具体例に置き換え、それぞれの構成情報テーブル(Volumeテーブル310,Volume'テーブル410)を示している。
図5に示すVolumeテーブル310は、ストレージシステム100において仮想的なデータストアとしてユーザに提供される複数のボリューム(Volume)について、各ボリュームの構成を示すグローバル構成情報「Volume」の構成情報テーブルである。図5の場合、Volumeテーブル310は、ボリュームの識別子(id)311と、当該識別子によって特定されるボリュームの容量(size)312と、を備えて構成される。
なお、Volumeテーブル310における「ボリュームの識別子(id)311」は、メインクラスタ内の各ボリュームを一意に特定可能な識別子(ID)であり、後述するConnectionObjectテーブル320の「ボリュームの識別子(id_volume)322」、及びVolume'テーブル410の「ボリュームの識別子(id)411」においても、共通する識別子が用いられる。
ConnectionObjectテーブル320は、オブジェクト間の接続関係を示す情報である。図5の場合、ConnectionObjectテーブル320は、当該テーブルにおけるレコードの識別子(id)321と、ボリュームの識別子(id_volume)322と、サブクラスタの識別子(id_subCluster)323と、を備えて構成される。サブクラスタの識別子(id_subCluster)323は、メインクラスタ内のサブクラスタ133,134を識別するための識別子であり、同期関係にあるサブクラスタ(例えば、サブクラスタ133Aとサブクラスタ133B)には共通する識別子が付与される。
SubClusterテーブル330は、サブクラスタのプロセスがどのノードにおいて活性化(Active)または非活性化(Passive)となっているかを示す情報である。図5の場合、SubClusterテーブル330は、サブクラスタの識別子(id)331と、識別子331で特定されるサブクラスタがActiveなノードの識別子(activeNodeId)332と、識別子331で特定されるサブクラスタがPassiveなノードの識別子(passiveNodeId)333と、を備えて構成される。SubClusterテーブル330の「サブクラスタの識別子(id)331」には、ConnectionObjectテーブル320の「サブクラスタの識別子(id_subCluster)323」と共通する識別子が用いられる。
Volume'テーブル410は、グローバル構成情報のオブジェクト「Volume」と関連付けられるローカル構成情報のオブジェクト「Volume'」の構成情報テーブルである。図5の場合、Volume'テーブル410は、ボリュームの識別子(id)411と、当該識別子によって特定されるボリュームの容量(size)412と、を備えて構成される。Volume'テーブル410には、Volumeテーブル310で管理される構成情報のうち、Volume'テーブル410を保持するサブクラスタにおけるI/O処理に必要な構成情報が管理される。
以上、図3〜図5を参照しながら説明したように、本実施の形態に係るストレージシステム100では、サブクラスタ構造を持つスケールアウト型のストレージシステムにおいて、システムの構成情報をグローバルなSODBに持たせる(グローバル構成情報300)だけでなく、一部をローカルなサブクラスタにも持たせる(ローカル構成情報400)ようにしている。そして、グローバル構成情報300とローカル構成情報400とにおいて共通の識別子を用いることによって、互いの構成情報を関連付けられるようにしている。なお、このように構成情報が分割保持されている場合、一方の構成情報が更新されたときには、整合性を保つために、他方の構成情報も同様に更新する必要がある。
なお、本実施の形態において、グローバル構成情報300とローカル構成情報400との間に共通の識別子を用いて管理する方法は、図5に例示した構成情報テーブルの形式に限定されるものではない。例えば、図4に示した「object_B」と「object_B'」との関係をみると、グローバル構成情報の「object_B」が、サブクラスタのActive/Passiveなノードに関する構造情報「SubCluster」に対する識別子(id_SubCluster)を有することによって、オブジェクト間の接続関係を示す構成情報「ConnectionObject」を介することなく、対応するローカル構成情報「object_B'」と関連付けることができる。
(3)構成情報の更新
以下では、本実施の形態に係るストレージシステム100において分割保持された構成情報を更新する際の処理について詳しく説明する。構成情報の更新は、様々なタイミングで発生し得る。具体的には例えば、通常稼働時のI/O実施や、ノード故障等に伴うフェイルオーバー等の際に、構成情報の更新が発生する。
まず、あるノード130Aのサブクラスタ133Aに格納されているローカル構成情報136Aを更新する場合は、当該サブクラスタ133Aにおいてローカル構成情報136Aを更新後、当該ノード130AのSODB135Aに格納されているグローバル構成情報138A(または、クラスタマスタのノードのSODBに格納されているグローバル構成情報)を同様に更新すればよい。SODB135A,135Bはノード間で同期されるため、何れかのグローバル構成情報を更新すればよい。このようにすることで、ローカル構成情報の更新に応じてグローバル構成情報も更新し、分割保持された構成情報の整合性を維持することができる。
一方、グローバル構成情報138Aを更新する場合は、更新内容の構成情報を有する「特定のローカル構成情報」を更新する必要がある。ここで、本実施の形態では、ノード内のプロセス間でサブクラスタ構成をとっているため、システム内に不特定多数のサブクラスタが存在する。さらに、これらのサブクラスタは、システムの状況によってActive/Passiveが動的に変化する。したがって、グローバル構成情報138Aを更新する場合は、ローカル構成情報を保持する不特定多数のサブクラスタのうちから、「特定のローカル構成情報」を保持するActiveなサブクラスタのプロセスを特定する必要がある。
図3の構成を用いて具体的に説明する。例えば、ノード130Aにおいてクラスタコントローラ131Aがグローバル構成情報138Aを更新した際、この更新内容に対応する構成情報は、ローカル構成情報137A,137Bに格納されているとする(同期関係にあるため、両者のローカル構成情報は同じ)。しかし、ローカル構成情報137Aを保持するサブクラスタ134AはPassiveであるため、クラスタコントローラ131Aは、サブクラスタ134Aのローカル構成情報137Aを更新させることはできず、この場合は、ローカル構成情報137Bを保持するActiveなサブクラスタ134Bを、更新すべき「特定のローカル構成情報」を保持するプロセスとして特定できる必要がある。
そこで、本実施の形態に係るストレージシステム100では、動的に変化するサブクラスタを特定するための制御情報(具体的には、図4や図5に示した「SubCluster」や「ConnectionObject」)を持つことによって、上記の問題を解決し、グローバル構成情報を更新する場合に、対応する「特定のローカル構成情報」を保持するサブクラスタを特定し、ローカル構成情報を更新できるようにしている。これらの制御情報(オブジェクト)は、サブクラスタと関連があるグローバル構成情報を作成する際に作成することによって(図4の「object_A」と「object_A'」のような管理方法)、またはサブクラスタのIDをグローバル構成情報に持たせることによって(図4の「object_B」と「object_B'」のような管理方法)、サブクラスタを特定できるようにしている。補足すると、サブクラスタが特定できれば、サブクラスタ構成情報(SubCluster)が持つ「activeNodeId」から、構成設定を要求するべきノードを特定することができる。
以下では、上記のように本実施の形態に係るストレージシステム100において、グローバル構成情報を更新し、さらに、対応するローカル構成情報を更新するまでの処理を、構成情報更新処理として詳しく説明する。
図6は、構成情報更新処理の処理手順例を示すフローチャートである。図6には、構成情報更新処理として、グローバル構成情報の構成設定を変更するリクエスト(構成設定リクエスト)が発行された場合に、当該リクエストに対応するローカル構成情報が更新されるまでの一連の処理の手順例が示されている。
また、図7は、図6のステップS103におけるサブクラスタ選択処理の詳細な処理手順例を示すフローチャートであり、図8は、図6のステップS104におけるノード選択処理の詳細な処理手順例を示すフローチャートである。
これら図6〜図8に示した構成情報更新処理の処理手順について、図3〜図5に示した機能構成や構成情報例を用いて、詳しく説明する。
図6によればまず、ステップS101において、コントローラノード110から構成設定リクエストが発行される。ここで、構成設定とは、ストレージの構成を変更する処理の総称を指す。具体的には例えば、ボリューム(Volume)やプールを拡張・作成する処理、並びにストレージデバイスを削除する処理等が相当する。発行された構成設定リクエストは、クラスタマスタ130Aのクラスタコントローラ131Aが受け取る(図3参照)。
なお、本実施の形態において、構成設定リクエストの発行方法は特に限定されない。例えば、管理操作者111がコマンドの入力操作を行うことによって、構成設定の対象や内容を直接指定するようにしてもよい。具体的には例えば、後述する図9に示したVolume拡張リクエスト510を発行しようとする場合には、「volume expand --id 0000 --size 0200」といったコマンド入力が考えられる。また、ストレージシステム100において所定の状況が生じた場合(例えば、ノードの障害によってフェイルオーバーを実行する場合等)に、内部処理によって、構成情報の変更対象や変更内容を決定して指示する等であってもよい。
次のステップS102では、ステップS101で発行されたリクエストを受け取ったクラスタマスタ130Aのクラスタコントローラ131Aが、当該リクエストに従ってグローバル構成情報138Aを更新する。
次にステップS103では、クラスタコントローラ131Aが、ステップS102で更新したグローバル構成情報と関連するローカル構成情報を持つサブクラスタを特定する(サブクラスタ選択処理)。
ここで、図7に示されたサブクラスタ選択処理の詳細な処理手順について、図4のオブジェクト図を参照しながら説明する。
まず、ステップS111において、クラスタコントローラ131Aは、ステップS101で発行された構成設定リクエストから、構成設定の対象オブジェクトの識別子(例えば「object_A」の「id」)を取得する。
次のステップS112では、クラスタコントローラ131Aは、ステップS111で取得した識別子(「object_A」の「id」)と同じ識別子「id_object_A」を持つオブジェクト「ConnectionObject」を取得する。
次のステップS113では、クラスタコントローラ131Aは、ステップS112で取得したオブジェクト「ConnectionObject」が有する「id_SubCluster」を参照し、サブクラスタのプロセスを特定する。
ステップS111〜S113のサブクラスタ選択処理が行われることによって、クラスタコントローラ131Aは、グローバル構成情報更新で更新した構成情報「object_A」と関連するローカルな構成情報「object_A'」を持つサブクラスタを特定することができる。
なお、図7に示したサブクラスタ選択処理の処理手順は、図4に示した「object_A」と「object_A'」のオブジェクト関係に沿った処理方法である。図4の説明でも前述したように、本実施の形態において、対応関係にあるグローバル構成情報とローカル構成情報をどのように関連付けて管理するかは、上記例に限定されない。したがって、サブクラスタ選択処理の詳細な処理手順も関連付けの方法に応じて変更することができる。具体的には例えば、図4に示した「object_B」と「object_B'」のオブジェクト関係のように、対応関係にあるグローバル構成情報とローカル構成情報を「SubCluster」に対する識別子(id_SubCluster)だけで関連付けられるようにしている場合には、サブクラスタ選択処理において、図7の処理のように「ConnectionObject」を介することなく、id_SubClusterをキーとして「SubCluster」を参照することによって、グローバル構成情報更新で更新した構成情報「object_B」と関連するローカルな構成情報「object_B'」を持つサブクラスタを特定するようにしてもよい。
図6に戻る。ステップS104において、クラスタコントローラ131Aは、ステップS103で特定されたサブクラスタの構成情報を用いて、Activeなサブクラスタが存在するノードを特定する(ノード選択処理)。
ここで、図8に示されたノード選択処理の詳細な処理手順について、図4のオブジェクト図を参照しながら説明する。
まず、ステップS121において、クラスタコントローラ131Aは、サブクラスタ選択処理で特定したサブクラスタの構成情報「SubCluster」を取得する。
そしてステップS122では、クラスタコントローラ131Aは、ステップS121で取得したオブジェクト「SubCluster」が有する「activeNodeId」を参照し、サブクラスタプロセスがActiveであるノードを特定する。
ステップS121〜S122のノード選択処理が行われることによって、クラスタコントローラ131Aは、構成設定の対象オブジェクト「object_A」と関連するローカルな構成情報「object_A'」を持つサブクラスタのうちから、サブクラスタがActiveなノード(例えば、図3に示す処理の流れの場合、ノード130B)を特定することができる。
したがって、図6に戻り、ステップS105において、クラスタコントローラ131Aは、ステップS104のノード選択処理で特定されたノード130Bのノードコントローラ132Bに、ローカル構成情報の更新処理を要求する。
次いで、ステップS106では、ノードコントローラ132Bが、特定されたActiveなサブクラスタ(図3の場合、サブクラスタ134B)に対して、ローカル構成情報の更新を要求する。
そして、次のステップS107では、ステップS106の要求に基づいて、サブクラスタ134Bが、自身が持つローカル構成情報137Bを更新する。なお、Activeなサブクラスタ134BとPassiveなサブクラスタ134Aとの間で同期がとられることにより、ステップS107におけるローカル構成情報137Bの更新内容は、ローカル構成情報137Aにも反映される。
以上、図6のステップS101〜S107の処理が行われることにより、ストレージシステム100は、構成設定リクエストが発行された場合に、グローバル構成情報を更新するとともに、対応するローカル構成情報も更新することができる。
図9は、構成情報更新処理の具体的な流れを説明するための図である。図9は、図5に例示したグローバル構成情報300及びローカル構成情報400の具体的な構成情報テーブルを流用しているため、流用部分の説明は省略する。
図9の例では、グローバル構成情報「volume」が存在するときに、「volume」の容量を拡張する構成設定リクエスト(Volume拡張リクエスト510)が発行されたとする(図6のステップS101に相当)。Volume拡張リクエスト510は、拡張対象のボリュームの識別子(id)511と、拡張後のボリュームの容量(size)512とを備えて構成され、本例では、「0000」のidを有するボリュームに対して容量を「200」に拡張するリクエストが発行されている。
なお、ボリュームの識別子(id,id_volume)は、当該ボリュームの作成時に戻り値として取得することができる。構成設定リクエストにおける対象ボリュームの指定においては、ボリュームの識別子(id)によって指定することに限定されず、例えば、ボリュームの作成時に設定するボリューム名(name)でボリュームを指定するようにしてもよい。
上記のVolume拡張リクエスト510を受け取ったクラスタコントローラ131Aは、Volume拡張リクエスト510のリクエスト内容に沿って、Volumeテーブル310において、識別子(id)311が「0000」のボリュームの容量(size)312を、それまでの「100」から「200」に更新する(図6のステップS102に相当)。この結果、グローバル構成情報が更新される。
次に、クラスタコントローラ131Aは、Volumeテーブル310において容量を更新したボリュームのID「0000」を取得し、ConnectionObjectテーブル320を参照し、ボリュームの識別子(id_volume)322に同じID「0000」を有するデータを取得する(図7のステップS111,S112に相当)。本例では、ConnectionObjectテーブル320のデータ行の3行目が取得される。
そして、クラスタコントローラ131Aは、取得したConnectionObjectテーブル320のデータから、サブクラスタの識別子(id_subCluster)323を特定する(図7のステップS113に相当)。本例では、「0001」が特定され、この「0001」の識別子を有するサブクラスタが、Volume拡張リクエスト510によって更新されたグローバル構成情報に対応するローカル構成情報を保持しているサブクラスタとして特定される。
次に、クラスタコントローラ131Aは、SubClusterテーブル330を参照し、特定されたサブクラスタと同じの識別子「0001」をサブクラスタの識別子(id)331に有するデータを取得する(図8のステップS121に相当)。本例では、SubClusterテーブル330のデータ行の2行目が取得される。
そして、クラスタコントローラ131Aは、取得したSubClusterテーブル330のデータから、Activeなノードの識別子(activeNodeId)332を特定する(図8のステップS122に相当)。本例では、「0002」が特定され、この「0002」の識別子を有するノード(例えばノード130B)が、グローバル構成情報の更新に対応して更新すべきローカル構成情報を保持している、Activeなサブクラスタが存在するノードとして特定される。
その後は、クラスタコントローラ131Aが、先に特定した「0002」の識別子を有するノード130Bのノードコントローラ132Bに、ローカル構成情報の更新処理を要求する(図6のステップS105に相当)。具体的には、図9に示したようにVolume拡張リクエスト520が送信される。Volume拡張リクエスト520は、Volume拡張リクエスト510と同様に、拡張対象のボリュームの識別子(id)521と、拡張後のボリュームの容量(size)522とを備えて構成され、本例では、「0000」のidを有するボリュームに対して容量を「200」に拡張するリクエストが発行されている。
このVolume拡張リクエスト520を受け取ったノードコントローラ132Bは、Volume拡張リクエスト520のリクエスト内容に沿って、Activeなサブクラスタ134Bに指示を出し、当該サブクラスタ134Bに格納されているローカル構成情報400(137B)のVolume'テーブル410において、識別子(id)411が「0000」のボリュームの容量(size)412を、それまでの「100」から「200」に更新する(図6のステップS106,S107に相当)。この結果、対応するローカル構成情報が更新される。
以上、図9を参照しながら確認したように、本実施の形態におけるストレージシステム100では、構成設定リクエストによるグローバル構成情報300の更新に伴って、対応するローカル構成情報400の場所を特定したうえで、当該ローカル構成情報400を更新することができる。その結果、ストレージシステム100の通常動作を停止することなく、グローバル構成情報300とローカル構成情報400とに分割保持された構成情報の整合性を保つことができる。
(4)I/O処理やフェイルオーバーにおける利点
これまでに説明したように、本実施の形態に係るストレージシステム100は、スケールアウト型のストレージシステムの個々のストレージノードにおいてI/O処理を行うプロセスをサブクラスタ構成とし、さらに、システムの構成情報のうち、メインクラスタ全体で共有が必要な構成情報(グローバル構成情報)を全ノードの共通領域(例えばSODB)に、サブクラスタが動作するために必要な構成情報(ローカル構成情報)をローカルなサブクラスタに、分割保持するよう構成している。さらに、構成情報更新処理で詳述したように、構成情報を更新した場合に、グローバル構成情報とローカル構成情報との整合性を維持できるようにしている。
このようなストレージシステム100によれば、通常稼働時、SODBにアクセスしなくてもI/O処理を実施できるため、I/Oの性能向上に期待できる。さらに、通常稼働時だけでなく、障害発生等によってあるノードが使用できなくなった場合のフェイルオーバー時にも、SODBにアクセスせずに、I/Oの構成情報を取得することができるため、I/O性能の向上及び即時フェイルオーバーの実現が可能となる。このような本実施の形態に係るストレージシステム100の特徴について、以下に、従来技術と比較しながら詳しく説明する。
まず、従来技術について説明する。図10は、従来技術によるスケールアウト型のストレージシステムにおけるI/O処理の動作を説明するための図である。図10(A)は、通常稼働時における動作を説明する図であり、図10(B)は、フェイルオーバー時の動作を説明する図である。
図10(A),図10(B)に示したストレージシステム900は、複数のストレージノード(Storage Node)930A,930Bを連結してクラスタを構築した、従来技術によるスケールアウト型のストレージシステムの一例である。図10(A),(B)には、ストレージシステム900のうちI/O処理に関連する概略構成が示されている。本実施の形態に係るストレージシステム100におけるサブクラスタ133,134と同様、I/Oプロセス(I/O Process)933A,934BはI/O処理を行うプロセスであるが、本実施の形態のようにサブクラスタ化されてはいない。また、本実施の形態と違って、ストレージシステム900では構成情報の分割保持は行われず、I/Oプロセス933A,934Bに構成情報は保持されない。構成情報は、スケールアウトデータベース(SODB:Scale-out DB)935A,935B等の、全ノードの共通領域に保持される。全ノードの共通領域は、不揮発なデータストアであり、一般には物理ディスクによって提供されることから、インストアメモリに比べて、データアクセス速度が非常に遅い(メモリアクセス性能が低い)。他の構成要素の説明は省略する。
図10(A)では、通常稼働時におけるデータ処理(I/O処理)として、コンピュートノード(Compute Node)920からのI/Oを受けて、ストレージノード930AのI/Oプロセス933AがI/O処理を実施している(図中の「data I/O」と記載されたステップS901)。データ処理中、I/O処理に必要な情報(構成情報の1つ)は、全ノードの共通領域(例えばSODB935A)に保存される(ステップS902)。また、SODB935Aに保存されたデータは、任意のタイミングでノード間で同期され、本例では、SODB935BにもSODB935Aと同じデータが保存される(ステップS903)。
図10(B)では、障害によってストレージノード930Aが停止または稼働不可状態に陥っており、フェイルオーバーによって、ストレージノード930Aが実施していたI/O処理は、ストレージノード930Bに引き継がれる。このとき、ストレージノード930BのI/Oプロセス934Bは、ストレージノード930AにおけるI/Oの処理状況を知らないため、一度、SODB935Bにアクセスし、ストレージノード930AにおけるI/Oのプロセス状況を確認し、I/O処理のために必要な情報があれば取得する(ステップS904)。その後、ストレージノード930BのI/Oプロセス934Bが、引き継いだI/O処理を実施する(ステップS905)。
以上のように、従来技術によるストレージシステム900では、構成情報がグローバル(不揮発なデータストア)に保持されることから、I/O中やフェイルオーバー時に、データアクセス速度が低速なSODB935A,935Bにアクセスする必要がある(ステップS902やステップS904)。したがって、データアクセスに時間が掛かるため、I/O性能の低下や即時フェイルオーバーができないといった問題が生じてしまう。
次に、本実施の形態に係るストレージシステム100について説明する。図11は、本実施の形態におけるI/O処理の動作を説明するための図である。図11(A)は、通常稼働時における動作を説明する図であり、図11(B)は、フェイルオーバー時の動作を説明する図である。図11(A),図11(B)には、図1に示したストレージシステム100の構成のうちI/O処理に関連する構成が示されている。各構成要素の説明は省略する。
図11(A)では、通常稼働時におけるデータ処理(I/O処理)として、コンピュートノード(Compute Node)120からのI/Oを受けて、ストレージノード130AのActiveなサブクラスタ133AがI/O処理を実施している(図中の「data I/O」と記載されたステップS201)。データ処理中、I/O処理に必要な情報は、ローカル構成情報136Aとして更新され、ストレージノード130Bにおいて待機系として存在するPassiveなサブクラスタ133Bのローカル構成情報136Bと同期される(ステップS202)。前述したように、各ローカル構成情報は、データアクセス速度が高速なローカルメモリ(インメモリ)に格納されている。
なお、図11(A)には、ローカル構成情報(サブクラスタ133Aのローカル構成情報136A等)とグローバル構成情報(SODB135Aのグローバル構成情報138A等)との間でデータ送受が行われることが示されている(ステップS203)。これは、ローカル構成情報とグローバル構成情報との整合性を維持するための処理であって、その実行タイミングは特に限定されるものではない。つまり、本実施の形態では、ステップS203の処理タイミングに拘わらず、サブクラスタ133AがI/O処理を進めることができる。そして、SODB135Aに保存されたグローバル構成情報138Aは、任意のタイミングでノード間で同期され、本例では、SODB135Bにおいて同じグローバル構成情報(グローバル構成情報138B)が保存される(ステップS204)。
図11(B)では、障害によってストレージノード130Aが停止または稼働不可状態に陥っており、フェイルオーバーによって、ストレージノード130Aが実施していたI/O処理は、ストレージノード130Bに引き継がれる。このとき、ストレージノード130AにおいてI/O処理を実施していたActiveなサブクラスタ133Aの代わりに、ストレージノード130Bのサブクラスタ133BがPassiveからActiveに切り替わる。
ここで、先のステップS202で説明した同期によって、サブクラスタ133Bが保持するローカル構成情報136Bには、ストレージノード130Aにおいてサブクラスタ133Aによって処理されていたI/Oに関する情報が保持されている。したがって、Activeに切り替わったサブクラスタ133Bは、自身が保持するローカル構成情報136Bを参照することにより(ステップS205)、即座にI/O処理を継続して実施することができる(ステップS206)。
以上のように、本実施の形態に係るストレージシステム100によれば、I/Oに必要な構成情報がローカル構成情報としてローカル(インメモリ)に保持され、かつローカル構成情報がノード間で同期されることから、I/O中やフェイルオーバー時に、データアクセス速度が低速なSODB138A,138Bにアクセスすることなく、データアクセス速度が高速なローカルメモリ(インメモリ)へのアクセスのみで処理を進行することができる。したがって、従来技術に比してデータアクセスに要する時間が短縮できるため、I/O性能の向上や即時フェイルオーバーの実現が可能となる。言い換えれば、本実施の形態に係るストレージシステム100は、高い可用性を有し、高速なフェイルオーバーを実現することができる。
なお、本発明は上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、実施の形態で示した各構成や機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、各図面において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
10 物理サーバ
20 ハードウェア(Hardware)
21 CPU
22 メモリ(インメモリ)
23 各種物理ポート
24 物理ディスク(SSD)
25 物理ディスク(HHD)
30 ミドルウェア・ソフトウェア(Middleware/Software)
31 SDS OS
32 OSS
33 仮想マシン
34 ハイパーバイザ(Hypervisor)
35 Linuxカーネル(Linux Kernel)
100 ストレージシステム
110 コントローラノード(Controller Node)
111 管理操作者
120 コンピュートノード(Compute Node)
130(130A,130B) ストレージノード(Storage Node)
131(131A,131B) クラスタコントローラ(Cluster Controller)
132(132A,132B) ノードコントローラ(Node Controller)
133(133A,133B) サブクラスタ(SubCluster)
134(134A,134B) サブクラスタ(SubCluster)
135(135A,135B) スケールアウトデータベース(SODB:Scale-out DB)
136(136A,136B) ローカル構成情報(Local Config. Data)
137(137A,137B) ローカル構成情報(Local Config. Data)
138(138A,138B) グローバル構成情報(Global Config. Data)
210 マネジメントネットワーク(Management Network)
220 コンピュートネットワーク(Compute Network)

Claims (6)

  1. 複数のノードを連結してクラスタを構築したスケールアウト型のストレージシステムであって、
    前記複数のノードのうち少なくとも2以上のノードはそれぞれ、
    前記クラスタの全体に跨る処理を制御するクラスタコントローラと、
    自ノードに閉じた処理を制御するノードコントローラと、
    自ノード内のI/O処理を実施するプロセスであって、自ノード内のプロセス間でサブクラスタを構成するとともに、他の前記ノードにおける稼働系/待機系の対応プロセスと同期する、複数のサブクラスタプロセスと、
    前記クラスタの全体で共有される不揮発なデータストアと、
    を備え、
    前記データストアが、前記ストレージシステムの構成情報のうち、前記クラスタの全体で共有が必要な情報を含む構成情報をグローバル構成情報として保持し、
    前記サブクラスタプロセスが、前記ストレージシステムの構成情報のうち、自サブクラスタプロセスが動作するために必要な構成情報をローカル構成情報として保持し、
    稼働系の前記サブクラスタプロセスが、前記データストアにアクセスすることなく前記I/O処理を実施可能であり、
    前記I/O処理を実施中の稼働系の前記サブクラスタプロセスを備える前記ノードが停止または稼働不可状態になった場合に、他の前記ノードの1つにおいて当該サブクラスタプロセスに対応する待機系の前記サブクラスタプロセスを稼働系に切り替え、
    前記稼働系に切り替えられた前記サブクラスタプロセスは、自身が保持する前記ローカル構成情報を用いて前記I/O処理の実施を引き継ぐ
    ことを特徴とするストレージシステム。
  2. 前記グローバル構成情報を更新する場合には、当該グローバル構成情報の更新とあわせて、複数の前記ローカル構成情報のうち、当該更新の内容に対応する情報を含む特定のローカル構成情報を更新する
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記グローバル構成情報には、前記複数のサブクラスタプロセスのそれぞれが稼働系であるか待機系であるかを識別可能な制御情報が含まれ、
    前記グローバル構成情報の更新が要求された場合に、
    前記クラスタコントローラが、前記グローバル構成情報を更新し、さらに、前記制御情報に基づいて、前記特定のローカル構成情報を保持する稼働系の前記サブクラスタプロセスを特定し、
    前記特定されたサブクラスタプロセスを備える前記ノードの前記ノードコントローラが、前記特定のローカル構成情報を前記グローバル構成情報の更新内容で更新する
    ことを特徴とする請求項に記載のストレージシステム。
  4. 複数のノードを連結してクラスタが構築されたスケールアウト型のストレージシステムの構成情報を制御する構成情報制御方法であって、
    前記ストレージシステムにおいて前記複数のノードのうち少なくとも2以上のノードはそれぞれ、
    前記クラスタの全体に跨る処理を制御するクラスタコントローラと、
    自ノードに閉じた処理を制御するノードコントローラと、
    自ノード内のI/O処理を実施するプロセスであって、自ノード内のプロセス間でサブクラスタを構成するとともに、他の前記ノードにおける稼働系/待機系の対応プロセスと同期する、複数のサブクラスタプロセスと、
    前記クラスタの全体で共有される不揮発なデータストアと、
    を備え、
    前記データストアが、前記ストレージシステムの構成情報のうち、前記クラスタの全体で共有が必要な情報を含む構成情報をグローバル構成情報として保持し、
    前記サブクラスタプロセスが、前記ストレージシステムの構成情報のうち、自サブクラスタプロセスが動作するために必要な構成情報をローカル構成情報として保持し、
    稼働系の前記サブクラスタプロセスが、前記データストアにアクセスすることなく前記I/O処理を実施可能とし、
    前記I/O処理を実施中の稼働系の前記サブクラスタプロセスを備える前記ノードが停止または稼働不可状態になった場合に、他の前記ノードの1つにおいて当該サブクラスタプロセスに対応する待機系の前記サブクラスタプロセスを稼働系に切り替える切替ステップと、
    前記切替ステップで前記稼働系に切り替えられた前記サブクラスタプロセスが、自身が保持する前記ローカル構成情報を用いて前記I/O処理の実施を引き継ぐ引継ステップと、を備える
    ことを特徴とする構成情報制御方法。
  5. 前記グローバル構成情報を更新する場合には、当該グローバル構成情報の更新とあわせて、複数の前記ローカル構成情報のうち、当該更新の内容に対応する情報を含む特定のローカル構成情報を更新する
    ことを特徴とする請求項に記載の構成情報制御方法。
  6. 前記グローバル構成情報には、前記複数のサブクラスタプロセスのそれぞれが稼働系であるか待機系であるかを識別可能な制御情報が含まれ、
    前記グローバル構成情報の更新が要求された場合に、
    前記クラスタコントローラが、前記グローバル構成情報を更新するグローバル構成情報更新ステップと、
    前記グローバル構成情報更新ステップとともに、前記クラスタコントローラが、前記制御情報に基づいて、前記特定のローカル構成情報を保持する稼働系の前記サブクラスタプロセスを特定するサブクラスタプロセス特定ステップと、
    前記サブクラスタプロセス特定ステップによって特定されたサブクラスタプロセスを備える前記ノードの前記ノードコントローラが、前記特定のローカル構成情報を前記グローバル構成情報の更新内容で更新するグローバル構成情報更新ステップと、
    をさらに備える
    ことを特徴とする請求項に記載の構成情報制御方法。
JP2018131897A 2018-07-11 2018-07-11 ストレージシステム及び構成情報制御方法 Active JP6720250B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018131897A JP6720250B2 (ja) 2018-07-11 2018-07-11 ストレージシステム及び構成情報制御方法
US16/296,973 US10884881B2 (en) 2018-07-11 2019-03-08 Scale-out storage system and configuration information control method for implementing high-availability, high-speed failover

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018131897A JP6720250B2 (ja) 2018-07-11 2018-07-11 ストレージシステム及び構成情報制御方法

Publications (2)

Publication Number Publication Date
JP2020009336A JP2020009336A (ja) 2020-01-16
JP6720250B2 true JP6720250B2 (ja) 2020-07-08

Family

ID=69139459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018131897A Active JP6720250B2 (ja) 2018-07-11 2018-07-11 ストレージシステム及び構成情報制御方法

Country Status (2)

Country Link
US (1) US10884881B2 (ja)
JP (1) JP6720250B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7380363B2 (ja) * 2020-03-19 2023-11-15 富士通株式会社 構築管理装置、情報処理システム及び構築管理プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316113B2 (en) * 2008-12-19 2012-11-20 Watchguard Technologies, Inc. Cluster architecture and configuration for network security devices
US9009121B2 (en) * 2009-10-30 2015-04-14 Oracle International Corporation Bootstrapping server using configuration file stored in server-managed storage
US8688642B2 (en) * 2010-02-26 2014-04-01 Symantec Corporation Systems and methods for managing application availability
US8539087B2 (en) * 2010-03-12 2013-09-17 Symantec Corporation System and method to define, visualize and manage a composite service group in a high-availability disaster recovery environment
US9448966B2 (en) * 2013-04-26 2016-09-20 Futurewei Technologies, Inc. System and method for creating highly scalable high availability cluster in a massively parallel processing cluster of machines in a network
US9507678B2 (en) 2014-11-13 2016-11-29 Netapp, Inc. Non-disruptive controller replacement in a cross-cluster redundancy configuration
US10067843B1 (en) * 2016-12-01 2018-09-04 Infinidat Ltd. Synchronizing control nodes and a recovery from a failure of a primary control node of a storage system

Also Published As

Publication number Publication date
JP2020009336A (ja) 2020-01-16
US20200019478A1 (en) 2020-01-16
US10884881B2 (en) 2021-01-05

Similar Documents

Publication Publication Date Title
CN109729129B (zh) 存储集群系统的配置修改方法、存储集群及计算机系统
CN109857445B (zh) 存储系统和控制软件配置方法
US10725878B2 (en) Storage apparatus, storage system, and control method of storage system for dynamically securing free space when a storage apparatus is disused
US20190310925A1 (en) Information processing system and path management method
US8875134B1 (en) Active/active storage and virtual machine mobility over asynchronous distances
US11068367B2 (en) Storage system and storage system control method
US9454417B1 (en) Increased distance of virtual machine mobility over asynchronous distances
US20060047926A1 (en) Managing multiple snapshot copies of data
JP5718533B1 (ja) ストレージシステムのデータ移行方法
US8726083B1 (en) Synchronized taking of snapshot memory images of virtual machines and storage snapshots
US20100036896A1 (en) Computer System and Method of Managing Backup of Data
WO2019164942A1 (en) Autonomous cell-based control plane for scalable virtualized computing
JP6663478B2 (ja) データ移行方法及び計算機システム
US9875059B2 (en) Storage system
CN111400285A (zh) mySQL数据分片处理方法、装置、计算机设备和可读存储介质
JP2020047215A (ja) ストレージシステム及びストレージ制御方法
US20220038526A1 (en) Storage system, coordination method and program
JP6720250B2 (ja) ストレージシステム及び構成情報制御方法
US20190065064A1 (en) Computer system and method for controlling storage apparatus
JP6227771B2 (ja) 論理ボリュームを管理するためのシステム及び方法
US8726067B1 (en) Utilizing both application and storage networks for distributed storage over asynchronous distances
JP2021026375A (ja) ストレージシステム
US11593034B2 (en) Simulating stretched volume remote instance using a shadow volume on a local system
US11449398B2 (en) Embedded container-based control plane for clustered environment
JP7179810B2 (ja) クラスタシステム、クラスタシステムのフェイルオーバー制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200525

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: 20200609

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200617

R150 Certificate of patent or registration of utility model

Ref document number: 6720250

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150