JP6714037B2 - 記憶システム、及び、クラスタ構成制御方法 - Google Patents

記憶システム、及び、クラスタ構成制御方法 Download PDF

Info

Publication number
JP6714037B2
JP6714037B2 JP2018085691A JP2018085691A JP6714037B2 JP 6714037 B2 JP6714037 B2 JP 6714037B2 JP 2018085691 A JP2018085691 A JP 2018085691A JP 2018085691 A JP2018085691 A JP 2018085691A JP 6714037 B2 JP6714037 B2 JP 6714037B2
Authority
JP
Japan
Prior art keywords
storage
cluster
storage node
control program
node
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
JP2018085691A
Other languages
English (en)
Other versions
JP2019192032A (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 JP2018085691A priority Critical patent/JP6714037B2/ja
Priority to US16/296,961 priority patent/US10795587B2/en
Publication of JP2019192032A publication Critical patent/JP2019192032A/ja
Application granted granted Critical
Publication of JP6714037B2 publication Critical patent/JP6714037B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • 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]
    • 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/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • 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/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • 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/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • 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/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、概して、複数台のストレージノードで構成されたストレージクラスタの制御に関する。
複数台の計算ノードで構成されたスケールアウト型の分散計算システムが知られている(例えば特許文献1)。
特開2014−075027号公報
障害(例えば、予期せぬリブート)が発生した計算ノードを分散計算システムから離脱させることで分散計算システムを維持することが考えられる。
しかし、複数台のノードで構成されたクラスタが、複数台のストレージノードで構成されたストレージクラスタである場合、障害が発生したストレージノードのような対象ノードをストレージクラスタから離脱させたままとすることは好ましくない。なぜなら、各ストレージノードには、ストレージクラスタのホストシステムからのI/Oの対象となるデータセットであるユーザデータセットが格納されており、対象ノードがストレージクラスタから離脱したままとなると、対象ノード内のユーザデータセットの冗長度が低下し得るからである。例えば、対象ノードにしかないユーザデータセットがある場合、ホストシステムは、当該ユーザデータセットにアクセスできなくなる。
このような問題を避けるために、対象ノードをストレージクラスタから離脱させて再びストレージクラスタのメンバとすることである再組込みを行うことが考えられる。
対象ノードの再組込みを、ストレージクラスタの管理者からの操作の下で行われるとすると、管理者による管理の負担が大きい。
そこで、一律に対象ノードの再組込みを行うこと、つまり、自動で再組込みを行うことが考えられる。しかし、これは、ストレージクラスタの安定性を低下させるおそれがある。例えば、対象ノードに発生した障害が発生頻度の高い障害であると、対象ノードの再組込みが頻発することになってしまう。
クラスタ構成制御装置(例えば、第1のストレージノード)が、ストレージクラスタのメンバであるN台(Nは3以上の整数)のストレージノードのうち対象とされたストレージノードである対象ストレージノード(例えば、第2のストレージノード)の重要度が所定の重要度以上であって、対象ストレージノードの信頼度が所定の信頼度以上であるか否かを判定する。クラスタ構成制御装置は、判定の結果が真の場合に、対象ストレージノードの再組込み(対象ストレージノードをストレージクラスタから離脱させ再び対象ストレージノードをストレージクラスタのメンバとすること)を行う。対象ストレージノードの重要度は、対象ストレージノードがストレージクラスタから離脱したと仮定した場合の可用性の高さに依存する。対象ストレージノードの信頼度は、対象ストレージノードの稼働の傾向に依存する。
クラスタ構成制御装置は、ストレージクラスタにおけるいずれかのストレージノード(例えば、後述するプライマリのマスターストレージノード)でもよいし、ストレージクラスタ(記憶システム)の管理システムであってもよい。
本発明によれば、対象ストレージノードの再組込みが自動化されてもストレージクラスタの安定性が低下してしまうことを避けることができる。
一実施形態に係る記憶システムを含むシステム全体の構成を示す。 記憶システムにおけるプログラム及びデータセットの配置の一例を示す。 ストレージノードの物理的な構成を示す。 ノード管理テーブルの構成を示す。 データ配置管理テーブルの構成を示す。 I/O配置管理テーブルの構成を示す。 クラスタ配置管理テーブルの構成を示す。 ノード障害管理テーブルの構成を示す。 再組込み判定テーブルの構成を示す。 データ重要度の判定の一例を説明する模式図である。 図10に記載のデータ配置を示すデータ配置管理テーブルを示す。 I/O重要度の判定の一例を説明する模式図である。 図12に記載のプログラム配置を示すI/O配置管理テーブルを示す。 クラスタ重要度の判定の一例を説明する模式図である。 図14に記載のプログラム配置を示すクラスタ配置管理テーブルを示す。 重要度更新処理のフロー図である。 構成制御処理のフロー図である。 構成制御処理のシーケンス図である。
以下の説明では、「インターフェース部」は、1個以上のインターフェースでよい。当該1個以上のインターフェースは、1個以上の同種の通信インターフェースデバイス(例えば1個以上のNIC(Network Interface Card))であってもよいし2個以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1個以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明では、「PDEV部」は、1個以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。つまり、PDEV部は、記憶デバイス部の一例である。
また、以下の説明では、「記憶部」は、メモリ部及びPDEV部のうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、以下の説明では、「プロセッサ部」は、1個以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、この種の情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2個以上のテーブルに分割されてもよいし、2個以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部等を用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2個以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2個以上のプログラムとして実現されてもよい。
また、以下の説明では、「記憶システム」は、複数台のストレージノードで構成されたストレージクラスタを含んだシステムである。記憶システムは、ストレージクラスタそれ自体でもよいし、ストレージクラスタに属するストレージノード以外のストレージノードを含んでいてもよい。記憶システムは、典型的には、スケールアウト型の記憶システム、或いは、分散記憶システムと呼ばれてよい。「ストレージノード」は、記憶システム(特にストレージクラスタ)のメンバとしての装置であり、汎用計算機でもよいし、専用計算機(例えば、複数個のPDEVを有するいわゆるディスクアレイ装置のようなストレージ装置)でもよい。記憶システムは、冗長構成グループを有してよい。冗長構成は、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数台のストレージノードでの構成でもよいし、PDEV部の少なくとも一部としての1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一の計算機(例えばストレージノード)での構成でもよい。
また、以下の説明では、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。データセットのうち、特に、記憶システムのホストシステムからのI/O(Input/Output)要求に応答して入出力されるデータセットを「ユーザデータセット」と言う。
また、「プログラムクラスタ」は、1個以上のアクティブのI/O制御プログラムと、1個以上のスタンバイのI/O制御プログラムを含む。各プログラムクラスタにおいて、アクティブのI/O制御プログラムとスタンバイのI/O制御プログラムは、1:1、1:多、多:1及び多:多のいずれでもよい。以下、説明を簡潔にするために、アクティブのI/O制御プログラムとスタンバイのI/O制御プログラムは1:1であるとし、それに伴い、プログラムクラスタを「プログラムペア」と呼ぶことにする。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別して説明する場合に、参照符号を使用することがある。例えば、ストレージノードを特に区別しないで説明する場合には、「ストレージノード101」と記載し、個々のノードを区別して説明する場合には、「ストレージノード101―S0」、「ストレージノード101―S1」のように記載することがある。なお、要素の参照符号のうち、ハイフンに続く番号は、当該要素のID、又は、当該要素を有する要素のIDを示す。
以下、本発明の一実施形態を説明する。
図1は、一実施形態に係る記憶システムを含むシステム全体の構成を示す。
フロントエンドネットワーク61に、1台以上のホストノード(ホストシステムの一例)51と、記憶システム100を構成する複数台のストレージノード101とが接続される。バックエンドネットワーク62に、複数台のストレージノード101が接続される。フロントエンドネットワーク61とバックエンドネットワーク62のいずれも、ファイバチャネル(Fibre Channel)、イーサネット(登録商標)、InfiniBand又はLAN(Local Area Network)などから構成される通信ネットワークでよい。フロントエンドネットワーク61とバックエンドネットワーク62は一体でもよい。
ホストノード51は、記憶システム100に対してリード要求又はライト要求(これらをまとめてI/O要求と呼ぶことができる)を送信する計算機(例えば汎用計算機)である。少なくとも1つの物理計算機で実行される仮想マシン(VM)がホストノード51として機能してもよい。なお、ホストノードの参照符号は、「51−Hn」(n=0、1、2、…といった整数)という構成であるが、「Hn」は、当該ホストノードのIDである。
記憶システム100は、N台(Nの値については後述)のストレージノード101で構成されるが、当該記憶システム100は、各汎用計算機がストレージ機能を有するソフトウェアを実行することにより構築されたSDS180の基である。SDS180は、個々のストレージノード101に構築されてもよいが、本実施形態では、複数台のストレージノード101に跨っている。なお、ストレージノードの参照符号は、「101−Sn」(n=0、1、2、…といった整数)という構成であるが、「Sn」は、当該ストレージノードのIDである。
また、記憶システム100は、SDS180に加えて、ソフトウェアディファインドのホストノード51の基になってもよいし、或いは、ホストノード51としての1台以上の仮想マシンを実行してもよい。つまり、同一のシステム基盤上に、仮想的に、記憶システムとホストノードとが存在してもよい。
フロントエンドネットワーク61及びバックエンドネットワーク62のうちの少なくとも1つに、管理システム(図示せず)が接続されてよい。管理システムは、記憶システム100(又は、記憶システム100とホストノード51とを含んだ計算機システム)を管理する計算機システムである。管理システムは、例えば、記憶システム100の性能を監視したり、種々の指示を送信したりできる。少なくとも1つの物理計算機で実行される仮想マシンが管理システムとして機能してもよい。
図2は、記憶システム100におけるプログラム及びデータセットの配置の一例を示す。
複数台のストレージノード101の各々が、論理記憶空間71を有する。ストレージノード101における論理記憶空間71は、典型的には、当該ストレージノード101が有するPDEV部(例えば内蔵ディスク)に基づく記憶空間である。論理記憶空間71の少なくとも一部が、図示しない外部のストレージが提供する記憶空間に紐づけられた記憶空間でもよい。なお、論理記憶空間の参照符号は、「71−Sn」(n=0、1、2、…といった整数)という構成であるが、「Sn」は、当該論理記憶空間を有するストレージノード101のIDである。すなわち、論理記憶空間の参照符号中の「Sn」から、当該論理記憶空間がいずれのストレージノード101に存在するかがわかる。
論理記憶空間71に、ユーザデータセット4が格納される。各ユーザデータセット4の冗長度は、0以上である。(冗長度+1)が、ユーザデータセット4の数である。なお、ユーザデータセットの参照符号は、「4−Gn」(n=0、1、2、…といった整数)という構成であるが、「Gn」は、同一のユーザデータセットのグループのIDである。すなわち、ユーザデータセットの参照符号中の「Gn」から、当該ユーザデータセットが属するグループがわかる。
複数台のストレージノード101には、複数個のI/O制御プログラム6で構成された2個以上のプログラムペア(プログラムクラスタの一例)が配置される。いずれのI/O制御プログラム6も、当該I/O制御プログラムに関連付けられた論理チャンク(論理記憶領域の一例)に対してI/O(Input/Output)を行うためのプログラムである。以下、I/O制御プログラム6に関し、状態がアクティブであるI/O制御プログラム6を、「アクティブI/O制御プログラム6A」と言い、状態がスタンバイであるI/O制御プログラム6を、「スタンバイ制御プログラム6S」と言うことがある。
各プログラムペアは、アクティブI/O制御プログラム6AとスタンバイI/O制御プログラム6S(当該アクティブI/O制御プログラム6Aが停止した場合に当該アクティブI/O制御プログラム6Aに代わってアクティブとなるI/O制御プログラム6S)とのペアである。以下、プログラムペアPn(IDがPnであるプログラムペア)に属するアクティブI/O制御プログラム6Aを、「アクティブI/O制御プログラム6A−Pn」と言い、プログラムペアPnに属するスタンバイI/O制御プログラム6Sを、「スタンバイI/O制御プログラム6S−Pn」と言う(n=0、1、2、…といった整数)。
1つのストレージノード101に、異なるプログラムペアのアクティブI/O制御プログラム6AとスタンバイI/O制御プログラム6Sが混在していてもよいし、複数のプログラムペアのうちの複数のスタンバイI/O制御プログラム6Sが一部のストレージノード101に集約されてもよい(言い換えれば、スタンバイI/O制御プログラム6Sが配置されているストレージノード101にはいずれのアクティブI/O制御プログラム6Aが配置されないでもよい)。
アクティブI/O制御プログラム6Aは、当該I/O制御プログラム6Aが配置されているストレージノード101におけるCPU301(図3参照)によって実行されることで、1以上のストレージノード101(例えば、当該I/O制御プログラムを有するストレージノード101を含む1以上のストレージノード101)がそれぞれ有する1以上の論理記憶空間71に対して、データセットを書き込む。典型的には、データセットは、RAIDやErasure Codingのような冗長化技術に従い書き込まれる。
記憶システム100における複数台のストレージノードにそれぞれ複数個のクラスタ制御プログラム5が配置される。なお、クラスタ制御プログラムの参照符号は、「5−Cn」(n=0、1、2、…といった整数)という構成であるが、「Cn」は、当該クラスタ制御プログラムのIDである。
複数個のクラスタ制御プログラム5の各々は、ストレージクラスタの管理を行ったり、ホストノード51(又は図示しない管理システム)から要求(例えば、I/O要求や他の要求)を受け付け当該要求に応答してI/O制御プログラム6のようなプログラムを呼び出したりする。ストレージクラスタの管理の一例として、リソース配置の制御がある。リソース配置とは、ストレージクラスタにおける物理的又は論理的なリソースの配置であり、例えば、ユーザデータセットの配置やI/O制御プログラムの配置等である。
複数個のクラスタ制御プログラム5は、Q個のマスタークラスタ制御プログラム5と、マスタークラスタ制御プログラム5以外の1以上のクラスタ制御プログラム5である1以上のワーカークラスタ制御プログラム5である。Q個のマスタークラスタ制御プログラム5間で通信し合う。マスタークラスタ制御プログラム5が配置されているストレージノード101を「マスターストレージノード101」と言い、ワーカークラスタ制御プログラム5が配置されているストレージノード101を「ワーカーストレージノード101」と言うことができる。マスターストレージノード101間の通信経路障害等によりマスタークラスタ制御プログラム5が分断されてもスプリットブレインシンドロームが生じることを防ぐため、Qは3以上の整数であり、結果として、Q以上であるNも、3以上の整数である。
各マスタークラスタ制御プログラム5は、重要度判定機能211、信頼度判定機能212、及び、再組込み判定機能213を有する。Q個のマスタークラスタ制御プログラム5は、1個のプライマリのマスタークラスタ制御プログラム5(例えば5−C0)と、プライマリのマスタークラスタ制御プログラム5以外の1以上のマスタークラスタ制御プログラム5である1以上のセカンダリのマスタークラスタ制御プログラム5であるが、各マスタークラスタ制御プログラム5の機能211〜213は、当該マスタークラスタ制御プログラム5がプライマリとなることで発揮される。重要度判定機能211は、重要度を判定するための機能である。信頼度判定機能212は、信頼度を判定するための機能である。再組込み判定機能213は、再組込み判定を行うための機能である。1以上のセカンダリのマスタークラスタ制御プログラム5のいずれかが、プライマリのマスタークラスタ制御プログラム5が停止した場合に当該クラスタ制御プログラム5に代わってプライマリとなる。
各マスタークラスタ制御プログラム5は、ノード管理テーブル221、データ配置管理テーブル222、I/O配置管理テーブル223、クラスタ配置管理テーブル224、ノード障害管理テーブル225、及び、再組込み判定テーブル226を管理する。これらのテーブル221〜226の各々の参照符号は、論理記憶空間の参照符号は、「−Sn」(n=0、1、2、…といった整数)を含むが、「Sn」は、当該テーブルを有するストレージノード101のIDである。すなわち、テーブルの参照符号中の「Sn」から、当該テーブルがいずれのストレージノード101に存在するかがわかる。これらのテーブル221〜226は、マスターストレージノード101間で同期する。各テーブルの構成は、後に説明する。
以上が、記憶システム100におけるプログラム及びデータセットの配置の一例である。なお、クラスタ制御プログラム5(例えば、マスタークラスタ制御プログラム5)が、当該プログラム5を有するストレージノード101における論理記憶空間71を提供又は管理してよい。論理記憶空間71は、1個以上の論理チャンク(論理記憶領域の一例)に区切られていてよい。論理チャンクにユーザデータセットが格納されてよい。1個の論理チャンクに1個以上のユーザデータセットが格納されてもよいし、2以上の論理チャンクに跨って1個のユーザデータセットが格納されてもよい。ストレージノード101内のPDEV部は、複数個の物理チャンク(物理記憶領域の一例)を有してよい。各ストレージノード101において、各論理チャンクには、異なる2台以上のストレージノード101における2個以上の物理チャンクが関連付けられてよい。同一のプログラムペアについて、アクティブI/O制御プログラム6Aに関連付けられる論理チャンクと、スタンバイI/O制御プログラム6Sに関連付けられる論理チャンクは、それぞれ、同一の2個以上の物理チャンクに関連付けられてよい。論理チャンクと物理チャンクの対応関係は、クラスタ制御プログラム5(又は、他のプログラム)によって管理されてよい。
図3は、ストレージノード101の物理的な構成を示す。
ストレージノード101は、汎用計算機でよい。ストレージノード101は、NIC(Network Interface Card)304、PDEV12、メモリ302及びそれらに接続されたCPU301を有する。NIC304、PDEV12、メモリ302及びCPU301のいずれも、複数存在してよい。NIC304は、インターフェース部の一例である。PDEV12は、PDEV部の一例である。メモリ302は、メモリ部の一例である。PDEV12及びメモリ302は、記憶部の一例である。CPU301は、プロセッサ部の一例である。
フロントエンドネットワーク61に接続されるNIC304と、バックエンドネットワーク62に接続されるNIC304があってよい。NIC304は、ストレージノード101の外部の装置と通信するためのインターフェースデバイスである。NIC304は、ファイバチャネル(Fibre Channel)カードやイーサネット(登録商標)カード、InfiniBandカード、無線LANカード、PCIeホストアダプタのいずれでもよい。
PDEV12は、上述したように、HDD及びSSDのいずれでもよく、また、SCM(Storage Class Memory)でもよい。PDEV12は、NVMe(Non-Volatile Memory Express)、SAS(Serial Attached SCSI(Small Computer System Interface))及びSATA(Serial ATA(Advanced Technology Attachment))のいずれのインターフェースで接続されてもよい。また、複数個のPDEV12として、異なる種類のPDEVが混在してもよい。
メモリ302は、SRAM(Static RAM(Random Access Memory))やDRAM(Dynamic RAM)などの揮発性の半導体メモリから構成されてよい。メモリ302は、各種プログラムや必要なデータを一時的に保持するために利用される。
CPU301は、メモリ302内のプログラム(例えば上述のプログラム5及び6)を実行することでストレージノード101全体の動作制御を司る。
図4は、ノード管理テーブル221の構成を示す。
ノード管理テーブル221は、ストレージノード101に関する情報を保持する。例えば、ノード管理テーブル221は、ストレージノード101毎にエントリを有する。各エントリは、ノードID401、状態402、重要度403、信頼度404、データ重要度405、I/O重要度406及びクラスタ重要度407といった情報を格納する。以下、1つのストレージノード101を例に取る(図4の説明において「対象ノード101」)。
ノードID401は、対象ノード101のIDを示す。状態402は、対象ノード101が稼働中(「Active」)か否かを示す。重要度403は、信頼度404、データ重要度405、I/O重要度406に基づいて重要度判定機能211により判定された重要度を示す。信頼度404は、後述の処理によって信頼度判定機能212により判定された信頼度を示す。データ重要度405は、ユーザデータセットの冗長度に基づく重要度であるデータ重要度を示す。I/O重要度406は、I/O制御プログラム6の冗長度に基づき判定された重要度であるI/O重要度を示す。クラスタ重要度407は、マスタークラスタ制御プログラム5の冗長度に基づき判定された重要度であるクラスタ重要度を示す。データ重要度、I/O重要度及びクラスタ重要度のいずれも、重要度判定機能211により判定される。
本実施形態では、重要度403、信頼度404、データ重要度405、I/O重要度406及びクラスタ重要度407のいずれも、「高」と「低」の2段階であるが、3段階以上であってもよい。また、本実施形態では、重要度403は、データ重要度405、I/O重要度406及びクラスタ重要度407の全てに基づき判定されるが、データ重要度405、I/O重要度406及びクラスタ重要度407の一部に基づき判定されてもよい。
図5は、データ配置管理テーブル222の構成を示す。
データ配置管理テーブル222は、ユーザデータセットの配置に関する情報を保持する。データ配置管理テーブル222は、ユーザデータセットの配置の変化に応じてクラスタ制御プログラム5により更新される。データ配置管理テーブル222は、例えば、データ配置管理テーブル222は、同一のユーザデータセットの(冗長度0以上のユーザデータセットから成る)グループ毎にエントリを有する。各エントリは、グループID501、ノードID(Master dataset)502、及び、ノードID(Mirror dataset)503といった情報を格納する。以下、1つのグループを例に取る(図5の説明において「対象グループ」)。
グループID501は、対象グループのIDを示す。ノードID(Master dataset)502は、対象グループのうちマスター(オリジナル)のユーザデータセットが配置されているストレージノード101のIDを示す。ノードID(Mirror dataset)503は、対象グループのうち1以上のミラー(複製)のユーザデータセットがそれぞれ配置されている1以上のストレージノード101のIDを示す。
図6は、I/O配置管理テーブル223の構成を示す。
I/O配置管理テーブル223は、I/O制御プログラム6の配置に関する情報を保持する。I/O配置管理テーブル223は、I/O制御プログラム6の配置や状態(アクティブ又はスタンバイ)の変化に応じてクラスタ制御プログラム5により更新される。例えば、I/O配置管理テーブル223は、プログラムペア毎にエントリを有する。各エントリは、ペアID601、ノードID(Active)602、及び、ノードID(Standby)603といった情報を格納する。以下、1つのプログラムペアを例に取る(図6の説明において「対象ペア」)。
ペアID601は、対象ペアのIDを示す。ノードID(Active)602は、対象ペアのうちのアクティブI/O制御プログラム6Aが配置されているストレージノード101のIDを示す。ノードID(Standby)603は、対象ペアのうちのスタンバイI/O制御プログラム6Sが配置されているストレージノード101のIDを示す。
図7は、クラスタ配置管理テーブル224の構成を示す。
クラスタ配置管理テーブル224は、マスタークラスタ制御プログラム5の配置に関する情報を保持する。クラスタ配置管理テーブル224は、マスタークラスタ制御プログラム5の配置や状態(プライマリやセカンダリ)の変化に応じて、クラスタ制御プログラム5により更新される。例えば、クラスタ配置管理テーブル224は、プライマリのマスタークラスタ制御プログラム5が配置されているストレージノード101のIDと、1以上のセカンダリのマスタークラスタ制御プログラム5がそれぞれ配置されている1以上のストレージノード101のIDとを保持する。
図8は、ノード障害管理テーブル225の構成を示す。
ノード障害管理テーブル225は、ストレージノード101に障害が発生した時刻(障害発生時刻)を示す情報である時刻801と、当該障害が発生した場所としてのストレージノード101のIDを示すノードID802とを保持する。ノード障害管理テーブル225は、障害発生が検出さえる都度にクラスタ制御プログラム5により更新される。
図9は、再組込み判定テーブル226の構成を示す。
再組込み判定テーブル226は、重要度403と信頼度404(図4参照)との組合せと、再組込みを行うか否かとの関係(ルール)を示す。
本実施形態によれば、マスタークラスタ制御プログラム5が、ストレージクラスタ内のリソース配置(ユーザデータセット、I/O制御プログラム6及びマスタークラスタ制御プログラム5の配置と冗長度)を管理する。マスタークラスタ制御プログラム(例えば、プライマリのプログラム)5が、ストレージクラスタの構成変更(例えば、ストレージクラスタにおけるリソース配置の変更)に応じて、重要度403の更新の必要性を判定し、必要性があれば重要度403を更新する。また、マスタークラスタ制御プログラム5は、ストレージノード101の障害(例えば、予期せぬリブート等)の発生を検出し、ノード障害管理テーブル225に、障害発生時刻とノードID(障害が発生したストレージノード101のID)を記録する。マスタークラスタ制御プログラム5は、対象とされたストレージノード101についてノード障害管理テーブル225を参照し、当該ストレージノード101の障害発生傾向から信頼度を判定し、判定した信頼度404をノード管理テーブル221に記録する。ノード管理テーブル221に記録された重要度403と信頼度404をストレージノード101が自律的に管理することにより、ストレージノード101の再組込みの自律制御が可能となっている。
上述したように、本実施形態では、対象とされたストレージノード101について、当該ストレージノード101の重要度と信頼度の両方の観点から、当該ストレージノード101の再組込みを行うか否かが判定される。重要度は、当該ストレージノード101がストレージクラスタから離脱したと仮定した場合の可用性の高さに依存し、当該ストレージノード101を再組込み対象とするか否かに関わる。信頼度は、当該ストレージノード101の稼働の傾向(例えば障害発生の傾向)に依存し、再組込みを行うか否かに関わる。重要度が高く(例えば所定の重要度以上であり)、信頼度も高い場合に(例えば所定の信頼度以上の場合に)、当該ストレージノード101の再組込みがされる。言い換えれば、重要度が低ければ、当該ストレージノード101は、再組込みの対象とされず、信頼度が低ければ、当該ストレージノード101が再組込みの対象とされても、当該ストレージノード101の再組込みはされない。これにより、ストレージノードの再組込みが自動化されてもストレージクラスタの安定性が低下してしまうことを避けることができる。
図10〜図15を参照して、重要度を説明する。具体的には、重要度の基になるデータ重要度、I/O重要度及びクラスタ重要度を説明する。データ重要度、I/O重要度及びクラスタ重要度のうちの特にI/O重要度及びクラスタ重要度は、本実施形態に係る記憶システム100の特徴的な構成に従う観点に沿った重要度である。具体的には、複数のストレージノード101に基づき実現されるSDS180(図1参照)には、コントロールプレーンとデータプレーンが共存し、コントロールプレーンは、分散配置されたクラスタ制御プログラム5に相当し、データプレーンは、分散配置されたI/O制御プログラム6に相当する。
図10は、データ重要度の判定の一例を説明する模式図である。図11は、図10に記載のデータ配置を示すデータ配置管理テーブル222を示す。
対象ストレージノード101(例えば、障害が発生したストレージノード101)のデータ重要度は、対象ストレージノード101に格納されている少なくとも1つのユーザデータセット4についての当該ユーザデータセット4の冗長度に依存する。
重要度判定機能211は、対象ストレージノード101(例えば、障害が発生したストレージノード101)について、対象ストレージノード101内のユーザデータセット毎に、ユーザデータセット4の冗長度を、データ配置管理テーブル222を基に特定する。重要度判定機能211は、冗長度が所定値(例えば0)以下のユーザセットの数が所定数(例えば1)以上か否かの判定であるデータ重要度判定を行う。データ重要度判定の結果が真の場合、重要度判定機能211は、対象ストレージノード101のデータ重要度を「高」とする。データ重要度判定の結果が偽の場合、重要度判定機能211は、対象ストレージノード101のデータ重要度を「低」とする。データ重要度が3段階以上の場合、データ重要度としての値は、冗長度毎のユーザデータセット4の数等に応じて決定されてよい。
データ重要度が「高」であると、重要度が「高」となる可能性が高まる(データ重要度「高」=重要度「高」とされてもよい)。これにより、冗長度が低いユーザデータセット4を持つストレージノード101を再組込みの対象とする可能性を高めることができる。
図10及び図11の例によれば、下記の通りである。
・ストレージノード101−S0又は101−S3が対象ストレージノードの場合、データ重要度は「高」である。なぜなら、ストレージノード101−S0内のユーザデータセット4−G0、及び、ストレージノード101−S3内のユーザデータセット4−G2は、いずれも、冗長度が、所定値0のためである(データ配置管理テーブル222において、グループG0及びG2のいずれについても、ノードID502及び503の一方が無効な値(又はブランク)だからである)。すなわち、ストレージノード101−S0又は101−S3がストレージクラスタから離脱すると、ホストノード51から、ユーザデータセット4−G0又は4−G2にアクセスできなくなるためである。
・ストレージノード101−S1又は101−S2が対象ストレージノードの場合、データ重要度は「低」である。なぜなら、ストレージノード101−S1内のユーザデータセット4−G1及び4−G3、及び、ストレージノード101−S2内のユーザデータセット4−G0及び4−G4のいずれも、冗長度が、所定値0を超えているためである。
図12は、I/O重要度の判定の一例を説明する模式図である。図13は、図12に記載のプログラム配置を示すI/O配置管理テーブル223を示す。
対象ストレージノード101(例えば、障害が発生したストレージノード101)のI/O重要度は、対象ストレージノード101に配置されている少なくとも1個のI/O制御プログラム6についてのプログラムペアにおけるI/O制御プログラム6の冗長度に依存する。
重要度判定機能211は、対象ストレージノード101について、対象ストレージノード101内のI/O制御プログラム6毎に、I/O制御プログラム6の冗長度を、I/O配置管理テーブル223を基に特定する。重要度判定機能211は、冗長度が所定値(例えば0)以下のI/O制御プログラム6の数が所定数(例えば1)以上であるか否かの判定であるI/O重要度判定を行う。I/O重要度判定の結果が真の場合、重要度判定機能211は、対象ストレージノード101のI/O重要度を「高」とする。I/O重要度判定の結果が偽の場合、重要度判定機能211は、対象ストレージノード101のI/O重要度を「低」とする。I/O重要度が3段階以上の場合、I/O重要度としての値は、冗長度毎のI/O制御プログラム6の数等に応じて決定されてよい。
I/O重要度が「高」であると、重要度が「高」となる可能性が高まる(I/O重要度「高」=重要度「高」とされてもよい)。これにより、冗長度が低いI/O制御プログラム6を持つストレージノード101を再組込みの対象とする可能性を高めることができる。
図12及び図13の例によれば、下記の通りである。
・ストレージノード101−S0又は101−S3が対象ストレージノードの場合、I/O重要度は「高」である。なぜなら、ストレージノード101−S0内のアクティブI/O制御プログラム6A−P3が停止しフェールオーバーが行われストレージノード101−S3内のスタンバイのI/O制御プログラム6S−P3がアクティブのI/O制御プログラム6A−P3に切り替わり、結果として、プログラムペアP3について、I/O制御プログラム6の冗長度が0になったからである(I/O配置管理テーブル223において、プログラムペアP2について、ノードID(Standby)603が無効な値(又はブランク)だからである)。
・ストレージノード101−S1又は101−S2が対象ストレージノードの場合、I/O重要度は「低」である。なぜなら、ストレージノード101−S1及び101−S2のいずれも、冗長度が0のI/O制御プログラム6が存在しないからである。
図14は、クラスタ重要度の判定の一例を説明する模式図である。図15は、図14に記載のプログラム配置を示すクラスタ配置管理テーブルを示す。
対象ストレージノード101(例えば、障害が発生したストレージノード101)のクラスタ重要度は、ストレージクラスタの残存マスターノード数(残存ノード数の一例)に依存する。残存マスターノード数は、正常のマスタークラスタ制御プログラム5(停止していないマスタークラスタ制御プログラム5)を有するマスターストレージノード101の数である。従って、Q個のマスタークラスタ制御プログラム5がそれぞれ配置されているQ台のマスターストレージノード101に対象ストレージノード101が含まれていなければ、残存マスターノード数=Qである。一方、Q台のマスターストレージノード101に対象ストレージノード101が含まれていれば、残存マスターノード数=Q−(対象ストレージノードの数)である。
重要度判定機能211は、クラスタ配置管理テーブル224を参照し、ストレージクラスタの残存マスターノード数(例えば、クラスタ配置管理テーブル224における有効なノードIDの数)をカウントする。重要度判定機能211は、残存マスターノード数が残存マスターノード数の閾値以下か否かの判定であるクラスタ重要度判定を行う。クラスタ重要度判定の結果が真の場合、重要度判定機能211は、対象ストレージノード101のクラスタ重要度を「高」とする。クラスタ重要度判定の結果が偽の場合、重要度判定機能211は、対象ストレージノード101のクラスタ重要度を「低」とする。クラスタ重要度が3段階以上の場合、クラスタ重要度としての値は、残存マスターノード数とそれの閾値との差に応じて決定されてよい。
クラスタ重要度が「高」であると、重要度が「高」となる可能性が高まる(クラスタ重要度「高」=重要度「高」とされてもよい)。これにより、残存マスターノード数が少ない場合、マスタークラスタ制御プログラム5を持つストレージノード101を再組込みの対象とする可能性を高めることができる。
ここで、残存マスターノード数の閾値は、Qの過半数に、同時に再組込みの対象となり得るストレージノード101の数を加えた値である。
具体的には、例えば、本実施形態では、残存マスターノード数の閾値=Ceil((Q+1)/2)+1、である。
「Ceil((Q+1)/2)」は、Qの過半数を意味する(Ceilは小数点切上げを意味する)。Qの過半数が必要とされる理由は、マスターストレージノード101間の通信経路障害等によりマスタークラスタ制御プログラム5が分断されてもスプリットブレインシンドロームが生じることを防ぐためである。
「+1」は、同時に再組込みの対象となり得る(言い換えれば、同時にストレージクラスタから離脱し得る)ストレージノード101の数の一例である。
同時に再組込みの対象となり得るストレージノード101の数が1の場合において、残存マスターノード数が、Ceil((Q+1)/2)+1に一致すると、予期せぬリブートといった障害が別のマスターストレージノード101で発生すると、マスターストレージノード101の数がCeil((Q+1)/2)を下回ることになる。そこで、本実施形態では、残存マスターノード数がそれの閾値以下の場合、クラスタ重要度は「高」とされる。
図14及び15の例によれば、マスタークラスタ制御プログラム群1400のうち、正常のマスタークラスタ制御プログラム5−C0〜5−C3は、4台のストレージノード101−S0〜101−S3に存在するため、残存マスターノード数=4である。残存マスターノード数の閾値は、Ceil((5+1)/2)+1=4である。結果として、残存マスターノード数はそれの閾値以下であるため、クラスタ重要度=「高」とされる。
図16は、重要度更新処理の流れを示す。重要度更新処理は、重要度判定機能211により行われる。
重要度判定機能211は、ストレージクラスタのリソース配置に変化があった場合(ステップ1600:Yes)、ストレージノード101の数分、ループ(A)(ステップ1601〜1615)を行う。以下、1つのストレージノード101を例に取る(図16の説明において「対象ノード101」)。
重要度判定機能211は、対象ノード101におけるユーザデータセット4の冗長度Xを、データ配置管理テーブル222を参照することにより取得する(ステップ1601)。重要度判定機能211は、取得した少なくとも1つの冗長度Xがそれの閾値TH以下か否かを判定する(ステップ1602)。ステップ1602の判定結果が真の場合(ステップ1602:Yes)、重要度判定機能211は、対象ノード101のデータ重要度405「高」をノード管理テーブル221に記録する(ステップ1603)。ステップ1602の判定結果が偽の場合(ステップ1602:No)、重要度判定機能211は、対象ノード101のデータ重要度405「低」をノード管理テーブル221に記録する(ステップ1604)。
重要度判定機能211は、対象ノード101におけるI/O制御プログラム6の冗長度Yを、I/O配置管理テーブル223を参照することにより取得する(ステップ1605)。重要度判定機能211は、取得した少なくとも1つの冗長度Yがそれの閾値TH以下か否かを判定する(ステップ1606)。ステップ1606の判定結果が真の場合(ステップ1606:Yes)、重要度判定機能211は、対象ノード101のI/O重要度406「高」をノード管理テーブル221に記録する(ステップ1607)。ステップ1606の判定結果が偽の場合(ステップ1606:No)、重要度判定機能211は、対象ノード101のI/O重要度406「低」をノード管理テーブル221に記録する(ステップ1608)。
重要度判定機能211は、クラスタ配置管理テーブル224を参照することにより、残存マスターノード数Zを取得する(ステップ1609)。重要度判定機能211は、取得した残存マスターノード数Zがそれの閾値TH以下か否かを判定する(ステップ1610)。ステップ1610の判定結果が真の場合(ステップ1610:Yes)、重要度判定機能211は、対象ノード101のクラスタ重要度407「高」をノード管理テーブル221に記録する(ステップ1611)。ステップ1610の判定結果が偽の場合(ステップ1610:No)、重要度判定機能211は、対象ノード101のクラスタ重要度407「低」をノード管理テーブル221に記録する(ステップ1612)。
重要度判定機能211は、ノード管理テーブル221を参照し、対象ノード101に対応したデータ重要度405、I/O重要度406及びクラスタ重要度407のうちのj個以上(jは自然数、例えばj=1)が「高」か否かを判定する(ステップ1613)。ステップ1613の判定結果が真の場合(ステップ1613:Yes)、重要度判定機能211は、対象ノード101の重要度403「高」をノード管理テーブル221に記録する(ステップ1614)。ステップ1613の判定結果が偽の場合(ステップ1613:No)、重要度判定機能211は、対象ノード101の重要度403「低」をノード管理テーブル221に記録する(ステップ1615)。
なお、ループ(A)では、第1の処理(ステップ1601〜1604)、第2の処理(ステップ1605〜1608)、及び、第3の処理(ステップ1609〜1612)のうち、配置が変化したリソースの種類に応じた処理が選択され、選択された処理が行われた後に、ステップ1613が行われてもよい。
図17は、構成制御処理の流れを示す。構成制御処理は、信頼度判定機能212及び再組込み判定機能213により行われる。
いずれかのストレージノード101での障害発生が検出された場合(ステップ1701:Yes)、ステップ1702以降が行われる。以下、図17の説明において、障害が発生したノード101を「障害ノード101」と言う。障害ノード101が、対象ストレージノードの一例である。
信頼度判定機能212が、障害が発生した時刻と、障害が発生したノードのノードIDとを、ノード障害管理テーブル225に記録する(ステップ1702)。
信頼度判定機能212が、ノード障害管理テーブル225を参照し、障害ノード101の最近の障害長期傾向(長期間における障害発生の傾向)を取得する(ステップ1703)。信頼度判定機能212が、ノード障害管理テーブル225を参照し、障害ノード101の最近の障害短期傾向(短期間における障害発生の傾向)を取得する(ステップ1704)。「最近の障害長期傾向」は、現時点から過去にさかのぼった比較的長い期間(例えば1年間)における障害発生の傾向である。「最近の障害短期傾向」は、現時点から過去にさかのぼった比較的短い期間(例えば3か月)における障害発生の傾向である。従って、比較的長い期間の一部が比較的短い期間でよい。
信頼度判定機能212が、最近の障害長期傾向が第1条件に合致することと最近の障害短期傾向が第2条件に合致することとの両方が満たされているか否かを判定する(ステップ1705)。「最近の障害長期傾向が第1条件に合致する」とは、比較的長い期間における障害発生回数が第1の回数閾値未満であることであってよい。「最近の障害短期傾向が第2条件に合致する」とは、比較的短い期間における障害発生回数が第2の回数閾値未満であることであってよい。障害発生の傾向に関し、比較的長い期間と比較的短い期間の両方について取得されることは、信頼度の精度向上に有用である。すなわち、半導体メモリのセル障害のように1度生じた後は比較的長い期間において断続的に発生するような障害があるが、このような種類の障害を、「最近の障害長期傾向が第1条件に合致する」によりカバーできる。また、HDD障害のように1度生じると比較的短い期間において頻発する障害があるが、このような種類の障害を、「最近の障害短期傾向が第2条件に合致する」によりカバーできる。なお、障害長期傾向と障害短期傾向が、障害発生の傾向の一例である。障害発生の傾向に応じて信頼度が算出されるため、信頼度の精度の高さに期待でき、以って、重要度と信頼度の両方を基に再組込みを行うか否かの判定の精度の高さに期待できる。
ステップ1705の判定の結果が真の場合(ステップ1705:Yes)、信頼度判定機能212は、障害ノード101の信頼度404「高」をノード管理テーブル221に記録する(ステップ1706)。ステップ1705の判定の結果が偽の場合(ステップ1705:No)、信頼度判定機能212は、障害ノード101の信頼度404「低」をノード管理テーブル221に記録する(ステップ1707)。
再組込み判定機能213が、ノード管理テーブル221と、再組込み判定テーブル226とを参照する(ステップ1708)。
再組込み判定機能213が、障害ノード101の重要度403と信頼度404の両方が「高」か否か(すなわち、再組込みを行う条件を障害ノード101の重要度403と信頼度404の両方が満たしているか否か)を判定する(ステップ1709)。
ステップ1709の判定の結果が真の場合(ステップ1709:Yes)、再組込み判定機能213は、障害ノード101の再組込みを行う(ステップ1710)。ステップ1709の判定の結果が偽の場合(ステップ1709:No)、再組込み判定機能213は、障害ノード101を保守状態とする(例えば、保守のために障害ノード101をストレージクラスタから離脱(ここでは閉塞)させる)(ステップ1711)。
図16の重要度更新処理や図17の構成制御処理は、プライマリのマスタークラスタ制御プログラム5によって行われてよい。プライマリのマスタークラスタ制御プログラム5が停止した場合には、セカンダリのマスタークラスタ制御プログラム5間のやり取りの結果に従いいずれかのセカンダリのマスタークラスタ制御プログラム5がプライマリになり、当該プライマリになったマスタークラスタ制御プログラム5が、図16の重要度更新処理や図17の構成制御処理を行ってよい。
また、障害ノード101の障害発生の傾向は、障害ノード101の稼働の傾向の一例である。すなわち、障害ノード101の信頼度は、障害発生の傾向に代えて又は加えて、障害ノード101の他の稼働傾向(例えば、障害ノード101の通信帯域、メモリ使用量、及び、CPU負荷(例えば、使用率、使用CPUコア数)の傾向)を基に判定されてもよい。
図18は、構成制御処理のシーケンス図である。なお、図18において、「Pri.」は、プライマリの略であり、「Act.」は、アクティブの略であり、「Sec.」は、セカンダリの略であり、「Sta.」は、スタンバイの略である。図18の説明では、プライアンリのマスタークラスタ制御プログラムを、「プライマリプログラム」と言い、セカンダリのマスタークラスタ制御プログラムを、「セカンダリプログラム」と言う。セカンダリプログラムとして、プログラム5−C1を例に取る。
ストレージクラスタにおけるクラスタ制御プログラム5間で、ノード定期監視が行われる。例えば、プライマリプログラム5−C0が、当該プログラム5−C0を有するストレージノード101−S0内のリソース(例えば、I/O制御プログラム6A−P0やOS(オペレーティングシステム)3−S0)の障害監視(障害発生有無の監視)を行う(ステップ1801)。なお、OSの参照符号における「Sn」は、当該OSを有するストレージノードのIDである(n=0、1、2、…といった整数)。また、プライマリプログラム5−C0が、セカンダリプログラム5−C1を有するストレージノード101−S1に関して、障害監視を行う(ステップ1802)。例えば、プライマリプログラム5−C0が、セカンダリプログラム5−C1に、障害監視を依頼する。その依頼に応答して、セカンダリプログラム5−C1が、ストレージノード101−S1内のリソース(例えば、I/O制御プログラム6S−P0やOS3−S1)の障害監視を行い、結果をプライマリプログラム5−C0に応答する。
ストレージノード101−S1において、OS3−S1のエラーが生じ(ステップ1803)、結果として、予期せぬリブートという障害が発生したとする(ステップ1804)。この場合、プライマリプログラム5−C0が、ストレージノード101−S1の障害監視(ステップ1805)において、当該障害の発生を検出し、障害の発生時刻と、障害が発生したノード101のID「S1」とを、ノード障害管理テーブル225に記録する(ステップ1806)。ストレージノード101−S1を、以下、図18の説明において、「障害ノード101−S1」と言う。
障害ノード101−S1において、ステップ1804の後、OS3−S1によりセカンダリプログラム5−C1が起動する(ステップ1807)。セカンダリプログラム5−C1は、診断処理を行う(ステップ1808)。診断パスの結果が得られた場合(ステップ1809)、セカンダリプログラム5−C1は、再組込み判定待ちとなる(ステップ1810)。
プライマリプログラム5−C0が、構成制御処理、具体的には、信頼度計算及び再組込み判定を行う。
信頼度計算では、プライマリプログラム5−C0が、ノード障害管理テーブル225−S0を参照して、障害ノード101−S1の障害長期傾向を取得する(ステップ1811)。また、プライマリプログラム5−C0が、ノード障害管理テーブル225−S0を参照して、障害ノード101−S1の障害短期傾向を取得する(ステップ1812)。プライマリプログラム5−C0が、取得した障害長期傾向及び障害短期傾向を基に、障害ノード101−S1の信頼度を計算する(ステップ1813)。プライマリプログラム5−C0が、算出された信頼度をノード管理テーブル221−S0に記録する(ステップ1814)。
再組込み判定では、プライマリプログラム5−C0が、ノード管理テーブル221−S0及び再組込み判定テーブル226−S0を参照し(ステップ1821)、障害ノード101−S1の重要度403及び信頼度404を基に、障害ノード101−S1の再組込みを行うか否かを判定する。ここでは、プライマリプログラム5−C0が、障害ノード101−S1を再組込みすると判定したとする(ステップ1822)。この場合、再組込み処理(ステップ1831〜1834)が行われる。
すなわち、プライマリプログラム5−C0が、障害ノード101−S1の障害監視(ステップ1831)において、障害ノード101−S1におけるセカンダリプログラム5−C1からの応答から、障害ノード101−S1が再組込み判定待ちであることを特定する。この場合、プライマリプログラム5−C0が、再組込み判定結果(障害ノード101−S1の再組込みをするとの判定結果)をセカンダリプログラム5−C1に通知する(ステップ1832)。この通知に応答して、セカンダリプログラム5−C1は、起動処理を行い(ステップ1833)、且つ、スタンバイI/O制御プログラム6S−P0を起動する(ステップ1834)。そして、セカンダリプログラム5−C1は、起動完了をプライマリプログラム5−C0に応答する(ステップ1835)。
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
101…ストレージノード

Claims (9)

  1. ストレージクラスタのメンバであるN台(Nは3以上の整数)のストレージノードを備え、
    前記N台のストレージノードのうちのいずれかである第1のストレージノードが、
    前記第1のストレージノード以外のストレージノードのうち対象とされたストレージノードである第2のストレージノードの重要度が所定の重要度以上であって、前記第2のストレージノードの信頼度が所定の信頼度以上であるか否かを判定し、
    当該判定の結果が真の場合に、前記第2のストレージノードを前記ストレージクラスタから離脱させ再び前記第2のストレージノードを前記ストレージクラスタのメンバとすることである再組込みを行い、
    前記第2のストレージノードの重要度は、前記第2のストレージノードが前記ストレージクラスタから離脱したと仮定した場合の記憶システムの可用性の高さに依存し、
    前記第2のストレージノードの信頼度は、前記第2のストレージノードの障害発生の傾向に依存する、
    記憶システム。
  2. 前記N台のストレージノードの各々は、プロセッサ部を有し、
    前記N台のストレージノードが、
    P個(Pは自然数)のプログラムクラスタと、
    Q個(Qは2以上N以下の整数)のクラスタ制御プログラムと
    を有し、
    前記P個のプログラムクラスタの各々は、
    アクティブのI/O(Input/Output)制御プログラムと、
    当該アクティブのI/O制御プログラム以外のI/O制御プログラムであり当該アクティブのI/O制御プログラムが配置されているストレージノードとは別の1以上のストレージノードにそれぞれ配置されている1以上のスタンバイのI/O制御プログラムと
    を含み、
    前記アクティブのI/O制御プログラムは、当該I/O制御プログラムが配置されているストレージノードにおけるプロセッサ部によって実行されることで、1以上のストレージノードに対して、データセットを書き込み、
    前記1以上のスタンバイのI/O制御プログラムのいずれかが、前記アクティブのI/O制御プログラムが停止した場合に当該I/O制御プログラムに代わってアクティブとなり、
    前記Q個のクラスタ制御プログラムは、
    プライマリのクラスタ制御プログラムと、
    当該プライマリの制御プログラム以外のクラスタ制御プログラムであり当該プライマリのクラスタ制御プログラムが配置されているストレージノードとは別の1以上のストレージノードにそれぞれ配置されている1以上のセカンダリのクラスタ制御プログラムと
    を含み、
    前記プライマリのクラスタ制御プログラムは、当該クラスタ制御プログラムが配置されているストレージノードにおけるプロセッサ部によって実行されることで、前記ストレージクラスタを管理し、
    前記1以上のセカンダリのクラスタ制御プログラムのいずれかが、前記プライマリのクラスタ制御プログラムが停止した場合に当該クラスタ制御プログラムに代わってプライマリとなり、
    前記第2のストレージノードの重要度は、
    前記第2のストレージノードに格納されている少なくとも1つのデータセットについての当該データセットの冗長度と、
    前記第2のストレージノードに配置されている少なくとも1個のI/O制御プログラムについてのプログラムクラスタにおけるI/O制御プログラムの冗長度と、
    前記Q個のクラスタ制御プログラムがそれぞれ配置されているQ台のストレージノードに前記第2のストレージノードが含まれていなければQであり、前記Q台のストレージノードに前記第2のストレージノードが含まれていればQから前記第2のストレージノードの数を引いた値である残存ノード数と
    に依存する、
    請求項1に記載の記憶システム。
  3. 前記第2のストレージノードの重要度は、前記第2のストレージノードに格納されている少なくとも1つのデータセットについての当該データセットの冗長度に依存する、
    請求項1に記載の記憶システム。
  4. 前記N台のストレージノードの各々は、プロセッサ部を有し、
    前記N台のストレージノードが、P個(Pは自然数)のプログラムクラスタを有し、
    前記P個のプログラムクラスタの各々は、
    アクティブのI/O(Input/Output)制御プログラムと、
    当該アクティブのI/O制御プログラム以外のI/O制御プログラムであり当該アクティブのI/O制御プログラムが配置されているストレージノードとは別の1以上のストレージノードにそれぞれ配置されている1以上のスタンバイのI/O制御プログラムと
    を含み、
    前記アクティブのI/O制御プログラムは、当該I/O制御プログラムが配置されているストレージノードにおけるプロセッサ部によって実行されることで、1以上のストレージノードに対して、データセットを書き込み、
    前記1以上のスタンバイのI/O制御プログラムのいずれかが、前記アクティブのI/O制御プログラムが停止した場合に当該I/O制御プログラムに代わってアクティブとなり、
    前記第2のストレージノードの重要度は、前記第2のストレージノードに配置されている少なくとも1個のI/O制御プログラムについてのプログラムクラスタにおけるI/O制御プログラムの冗長度に依存する、
    請求項1に記載の記憶システム。
  5. 前記N台のストレージノードの各々は、プロセッサ部を有し、
    前記N台のストレージノードが、Q個(Qは2以上N以下の整数)のクラスタ制御プログラムを有し、
    前記Q個のクラスタ制御プログラムは、Q台のストレージノードにそれぞれ配置されており、
    前記Q個のクラスタ制御プログラムは、
    プライマリのクラスタ制御プログラムと、
    当該プライマリの制御プログラム以外のクラスタ制御プログラムであり当該プライマリのクラスタ制御プログラムが配置されているストレージノードとは別の1以上のストレージノードにそれぞれ配置されている1以上のセカンダリのクラスタ制御プログラムと
    を含み、
    前記プライマリのクラスタ制御プログラムは、当該クラスタ制御プログラムが配置されているストレージノードにおけるプロセッサ部によって実行されることで、前記記憶システムとしてのクラスタを管理し、
    前記1以上のセカンダリのクラスタ制御プログラムのいずれかが、前記プライマリのクラスタ制御プログラムが停止した場合に当該クラスタ制御プログラムに代わってプライマリとなり、
    前記第2のストレージノードの重要度は、前記Q個のクラスタ制御プログラムがそれぞれ配置されているQ台のストレージノードに前記第2のストレージノードが含まれていなければQであり、前記Q台のストレージノードに前記第2のストレージノードが含まれていればQから前記第2のストレージノードの数を引いた値である残存ノード数に依存する、
    請求項1に記載の記憶システム。
  6. 前記第2のストレージノードの重要度は、前記残存ノード数が前記残存ノード数の閾値以下か否かに依存し、
    前記残存ノード数の閾値は、Qの過半数に、同時に再組込みの対象となり得るストレージノードの数を加えた値である、
    請求項5に記載の記憶システム。
  7. 前記第2のストレージノードの障害発生の傾向は、前記第2のストレージノードの最近の長期間における障害発生の傾向と、前記第2のストレージノードの最近の短期間における障害発生の傾向とを含む、
    請求項に記載の記憶システム。
  8. ストレージクラスタのメンバであるN台(Nは3以上の整数)のストレージノードのうち対象とされたストレージノードである対象ストレージノードの重要度が所定の重要度以上であって、前記対象ストレージノードの信頼度が所定の信頼度以上であるか否かを判定し、
    当該判定の結果が真の場合に、前記対象ストレージノードを前記ストレージクラスタから離脱させ再び前記対象ストレージノードを前記ストレージクラスタのメンバとすることである再組込みを行い、
    前記対象のストレージノードの重要度は、前記対象ストレージノードが前記ストレージクラスタから離脱したと仮定した場合の記憶システムの可用性の高さに依存し、
    前記対象ストレージノードの信頼度は、前記対象ストレージノードの障害発生の傾向に依存する、
    クラスタ構成制御方法。
  9. ストレージクラスタのメンバであるN台(Nは3以上の整数)のストレージノードのうち対象とされたストレージノードである対象ストレージノードの重要度が所定の重要度以上であって、前記対象ストレージノードの信頼度が所定の信頼度以上であるか否かを判定し、
    当該判定の結果が真の場合に、前記対象ストレージノードを前記ストレージクラスタから離脱させ再び前記対象ストレージノードを前記ストレージクラスタのメンバとすることである再組込みを行う、
    ことを計算機に実行させ、
    前記対象のストレージノードの重要度は、前記対象ストレージノードが前記ストレージクラスタから離脱したと仮定した場合の記憶システムの可用性の高さに依存し、
    前記対象ストレージノードの信頼度は、前記対象ストレージノードの障害発生の傾向に依存する、
    コンピュータプログラム。
JP2018085691A 2018-04-26 2018-04-26 記憶システム、及び、クラスタ構成制御方法 Active JP6714037B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018085691A JP6714037B2 (ja) 2018-04-26 2018-04-26 記憶システム、及び、クラスタ構成制御方法
US16/296,961 US10795587B2 (en) 2018-04-26 2019-03-08 Storage system and cluster configuration control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018085691A JP6714037B2 (ja) 2018-04-26 2018-04-26 記憶システム、及び、クラスタ構成制御方法

Publications (2)

Publication Number Publication Date
JP2019192032A JP2019192032A (ja) 2019-10-31
JP6714037B2 true JP6714037B2 (ja) 2020-06-24

Family

ID=68292485

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018085691A Active JP6714037B2 (ja) 2018-04-26 2018-04-26 記憶システム、及び、クラスタ構成制御方法

Country Status (2)

Country Link
US (1) US10795587B2 (ja)
JP (1) JP6714037B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491616B (zh) * 2018-11-14 2022-05-24 三星(中国)半导体有限公司 数据的存储方法和设备
US11456917B2 (en) * 2020-06-01 2022-09-27 Cisco Technology, Inc. Analyzing deployed networks with respect to network solutions
CN113656242B (zh) * 2021-07-29 2023-12-22 济南浪潮数据技术有限公司 一种服务器集群的监控方法及系统
JP2023082560A (ja) * 2021-12-02 2023-06-14 株式会社日立製作所 ストレージシステム及びストレージプログラム更新方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999712A (en) * 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US8112593B2 (en) * 2007-03-29 2012-02-07 Netapp, Inc. System and method for improving cluster performance
US8352692B1 (en) * 2007-03-30 2013-01-08 Symantec Corporation Utilizing peer-to-peer services with single instance storage techniques
JP5872433B2 (ja) 2012-10-04 2016-03-01 日本電信電話株式会社 仮想マシン配置装置および仮想マシン配置方法
US10158743B2 (en) * 2016-06-12 2018-12-18 International Business Machines Corporation Compute node cluster management

Also Published As

Publication number Publication date
JP2019192032A (ja) 2019-10-31
US10795587B2 (en) 2020-10-06
US20190332282A1 (en) 2019-10-31

Similar Documents

Publication Publication Date Title
JP6714037B2 (ja) 記憶システム、及び、クラスタ構成制御方法
US8365023B2 (en) Runtime dynamic performance skew elimination
US9547552B2 (en) Data tracking for efficient recovery of a storage array
US11221935B2 (en) Information processing system, information processing system management method, and program thereof
US9317381B2 (en) Storage system and data management method
US11169707B2 (en) Garbage collection pacing in a storage system
CN111124264B (zh) 用于重建数据的方法、设备和计算机程序产品
US10782898B2 (en) Data storage system, load rebalancing method thereof and access control method thereof
US9063854B1 (en) Systems and methods for cluster raid data consistency
US20170220249A1 (en) Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks
US20150089171A1 (en) Storage control apparatus, control method, and computer product
US10664193B2 (en) Storage system for improved efficiency of parity generation and minimized processor load
US20210294497A1 (en) Storage system and method for analyzing storage system
US10552342B1 (en) Application level coordination for automated multi-tiering system in a federated environment
US10691564B2 (en) Storage system and storage control method
US20160259695A1 (en) Storage and control method of the same
US10990313B2 (en) Multi-storage node system and capacity management method of multi-storage node system
US10365836B1 (en) Electronic system with declustered data protection by parity based on reliability and method of operation thereof
WO2023143039A1 (zh) 一种数据处理方法及装置
US11586466B2 (en) Centralized high-availability flows execution framework
US11586516B2 (en) Storage system, storage device, and storage device management method
JP2018077775A (ja) 制御装置および制御プログラム
JP2023045641A (ja) ストレージシステム及び制御方法
JP2022055102A (ja) 記憶システム及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200521

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200604

R150 Certificate of patent or registration of utility model

Ref document number: 6714037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150