JP2020135138A - ストレージシステム、ストレージシステムの回復方法 - Google Patents
ストレージシステム、ストレージシステムの回復方法 Download PDFInfo
- Publication number
- JP2020135138A JP2020135138A JP2019024773A JP2019024773A JP2020135138A JP 2020135138 A JP2020135138 A JP 2020135138A JP 2019024773 A JP2019024773 A JP 2019024773A JP 2019024773 A JP2019024773 A JP 2019024773A JP 2020135138 A JP2020135138 A JP 2020135138A
- Authority
- JP
- Japan
- Prior art keywords
- job
- volatile memory
- processing unit
- storage system
- 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.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】複数のノードを有するシステムのフェイルオーバ時、ジョブの情報の共有を高速に行い、フェイルオーバを高速化する。【解決手段】複数のノードを有するストレージシステムにおいて、複数のノードの構成情報を変更するジョブを実行するプライマリノード1aと、プライマリノードの障害時にジョブを引き継ぐセカンダリノード1bと、を有する。プライマリノードとセカンダリノードは、ジョブを格納する揮発メモリ14a、14bと不揮発メモリ15a、15bとを有し、ジョブのデータ項目が、情報が消失するとシステムの構成変更が失敗し内部状態が不正になるデータ項目か、情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるデータ項目か、情報が消失してもシステムの構成変更が成功し、不具合が生じないデータ項目かに応じて、ジョブの情報を揮発メモリと不揮発メモリに選択的に格納する。【選択図】図1
Description
本発明は、ストレージシステム、ストレージシステムの回復方法に関する。
Software Defined Storage (SDS)のように、複数ノードで構成されるシステムでは、ボリュームの作成や容量の増減などの構成情報変更処理(以下、ジョブ)を実行中に該当ノードに障害が発生すると、システムの構成情報に不整合が発生する。
そこで一般的なSDSでは、システムの構成情報の整合性を保ちながら障害から回復するために、ジョブの実行前にジョブに関する情報をスケールアウト可能なデータベース(SODB)に格納する。
ノード障害時のジョブの再構築に関する技術として、特許文献1がある。特許文献1では、ジョブDB1aの内容が失われた場合、ジョブDB再構築手段1dにより、ストレージデバイス2からジョブ投入情報2aとジョブ配置情報2bとが収集され、ジョブ被配置計算ノードから実行資源情報3aa,3abが収集され、ジョブDB1a内にジョブ情報が再構築される。
特許文献1では、ジョブ実行中のノードに障害が発生した場合、ストレージデバイス2からジョブ投入情報2aとジョブ配置情報2bを参照し、ジョブの再構築および再実行を行う。しかしながら、特許文献1の技術では、ジョブ投入情報2aとジョブ配置情報2b等のジョブに関する情報が、ハードディスク装置などの不揮発性の記憶媒体のストレージデバイスに格納されることを前提としている。
一般的に、ハードディスク等の不揮発性の記憶媒体は揮発性のインメモリと比較するとデータアクセス速度が非常に低速である。そのため、ジョブを実行中のノードに障害が発生した場合に、他のノードがジョブを引き継ぐフェイルオーバ処理のため、ジョブの読み出し等に時間を要し、フェイルオーバ後にジョブを再開するまでに時間がかかる。
また、ハードディスク等の不揮発性の記憶媒体にジョブの全ての情報を格納すると、ジョブの実行状況を格納するための時間もかかる。さらに、ハードディスク等の不揮発性の記憶媒体に実行状況の格納を確認するまで、ノードが次の処理を開始できないため、ジョブの処理に時間を要する。
そこで、本発明の目的は、複数のノードを有するシステムのフェイルオーバ時に参照されるジョブの情報を高速に格納することができるストレージシステム及びストレージシステムの回復方法を提供することにある。
また、ジョブのデータ項目に応じて、ハードディスク等の不揮発性の記憶媒体、或いは、インメモリ等の揮発メモリへの書き込みを制御することで、ジョブ処理の高速化とフェイルオーバの高速化、高信頼化を図るストレージシステム及びストレージシステムの回復方法を提供することにある。
上記目的を達成するため、本発明のストレージシステムの一態様は、複数のノードを有し、複数のノードの構成情報を変更するジョブを実行するプライマリノードと、プライマリノードの障害時に、ジョブを引き継ぐセカンダリノードとを有し、プライマリノードとセカンダリノードは、ジョブを格納する揮発メモリと不揮発メモリとを有し、プライマリノードとセカンダリノードの何れかは、ジョブのデータ項目が、(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるデータ項目と、(B)情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるデータ項目、(C)情報が消失してもシステムの構成変更が成功し、不具合が生じないデータ項目に応じて、ジョブの情報を揮発メモリと不揮発メモリに選択的に格納する。
本発明によれば、フェイルオーバ時にセカンダリノードによって参照される、ジョブの情報の共有を高速に行うことができる。
また、ジョブ処理の高速化とフェイルオーバの高速化、高信頼化を図ることができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
以下の説明では、「テーブル」、「リスト」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
同一あるいは同様な機能を有する構成要素が複数ある場合には、基本的に同一の符号を付して説明するが、機能が同じであっても機能を実現するための手段が異なる場合がある。
また、以下の説明では、プログラムを実行して行う処理を実行する場合がある。プログラムは、中央処理部であるプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
<用語の説明>
Job(ジョブ):複数のストレージノードにまたがったシステムの構成情報の設定を実現する処理単位。
Cluster Master Node (Primary):プライマリノードは、システム全体を管理するノードであって、システムにひとつ存在する。プライマリノードは、他ノードからのリクエストを受けてジョブを実行する。プライマリノードは、ジョブの開始時や終了時、エラー時またはジョブの状態が変わった時など、実行状態をJob Transaction Record(JTR)の形でSODBに保存する。
Cluster Master Node (Secondary):セカンダリノードは、Cluster Master Node(Primary)のスレーブノードの内の待機系ノードである。セカンダリノードは、Cluster Master Node(Primary)に障害が発生した場合、Cluster Master Node(Secondary)のうちのひとつがプライマリノードに昇格する。プライマリノードに昇格したノードはSODBからJTRを読み込んで、ジョブを再生成し、実行を再開する。
Cluster Slave: スレーブは、その他のスレーブノードである。本明細書では、スレーブノードと称する。
Job Transaction Record(JTR): ジョブの状態を表すSODB内に格納される情報。
Scale Out Data Base (SODB): 不揮発メモリに格納されるスケールアウトデータベース。
Job(ジョブ):複数のストレージノードにまたがったシステムの構成情報の設定を実現する処理単位。
Cluster Master Node (Primary):プライマリノードは、システム全体を管理するノードであって、システムにひとつ存在する。プライマリノードは、他ノードからのリクエストを受けてジョブを実行する。プライマリノードは、ジョブの開始時や終了時、エラー時またはジョブの状態が変わった時など、実行状態をJob Transaction Record(JTR)の形でSODBに保存する。
Cluster Master Node (Secondary):セカンダリノードは、Cluster Master Node(Primary)のスレーブノードの内の待機系ノードである。セカンダリノードは、Cluster Master Node(Primary)に障害が発生した場合、Cluster Master Node(Secondary)のうちのひとつがプライマリノードに昇格する。プライマリノードに昇格したノードはSODBからJTRを読み込んで、ジョブを再生成し、実行を再開する。
Cluster Slave: スレーブは、その他のスレーブノードである。本明細書では、スレーブノードと称する。
Job Transaction Record(JTR): ジョブの状態を表すSODB内に格納される情報。
Scale Out Data Base (SODB): 不揮発メモリに格納されるスケールアウトデータベース。
<システム構成>
まず、本発明の一実施形態に係るマルチノードストレージシステムについて説明する。
まず、本発明の一実施形態に係るマルチノードストレージシステムについて説明する。
図1は、一実施形態に係るシステム構成図である。
複数のノード1a、1b、1cは、ネットワーク3を介して相互に接続されている。ノード1aは、Cluster Master Node (Primary:以下、プライマリノード)であり、システム全体を管理する。プライマリノード1aは、システムにひとつ存在し、他ノード2からのリクエストを受けてジョブを実行する。ジョブの開始時や終了時、エラー時またはジョブの状態が変わった時など、実行状態をJob Transaction Record(JTR)の形でSODB13に保存する。
複数のノード1a、1b、1cは、ネットワーク3を介して相互に接続されている。ノード1aは、Cluster Master Node (Primary:以下、プライマリノード)であり、システム全体を管理する。プライマリノード1aは、システムにひとつ存在し、他ノード2からのリクエストを受けてジョブを実行する。ジョブの開始時や終了時、エラー時またはジョブの状態が変わった時など、実行状態をJob Transaction Record(JTR)の形でSODB13に保存する。
Cluster Master Node (Secondary:以下、セカンダリノード)1bは、プライマリノード1aのスレーブノードの内の待機系ノードであって、プライマリノード1aに障害が発生した場合、セカンダリノードのうちのひとつがプライマリノードに昇格する。プライマリノードに昇格すると、SODB13からJTRを読み込んで、ジョブを再生成し、ジョブの実行を再開する。
Cluster Slave(スレーブノード)1cは、プライマリノード1a、セカンダリノード1b以外のシステム中のノードである。
プライマリノード1aは、ジョブ発行元ノード2からのジョブリクエストを受信し、受信したジョブを処理するJob Controller Process(ジョブコントローラプロセス)11a、ジョブコントローラプロセス11aのジョブの実行状態をメモリ14aに保存するSOMQ プロセス12a、ジョブコントローラプロセス11aのジョブの実行状態をHDDやSSD等の不揮発メモリ15aに保存するSODB プロセス13aを含む。ここで、SOMQ は、Scale Out Message Que(スケールアウトメッセージキュー)であり、SODBは、Scale Out Data Base(スケールアウトDB)である。
プライマリノード1aのメモリ14aとセカンダリノード1bのメモリ14bは、DRAMやSRAMの揮発メモリで構成される。メモリ14には、各ノード上で動作するクラスタ制御プログラムにより、同じJTRがSOMQに保存されることで、プライマリノード1aとセカンダリノード1b間でジョブを共有する。また、プライマリノード1aの不揮発メモリ15aとセカンダリノード1bの不揮発メモリ15bには、各ノード上で動作するクラスタ制御プログラムにより、同じJTRがSODBに保存されることで、プライマリノード1aとセカンダリノード1b間でジョブを共有する。
プライマリノード1aでは、ジョブコントローラプロセス11aのジョブの情報は、SOMQプロセス12aとSODBプロセス13aに送られ、SOMQプロセス12aがメモリ14aに、SODBプロセス13aが不揮発メモリ15aに格納できるように構成されている。また、セカンダリノード1bでは、ジョブコントローラプロセス11aのジョブの情報は、SOMQプロセス12bがSOMQプロセス12aから受信し、SODBプロセス13bがSODBプロセス13aから受信して、SOMQプロセス12bがメモリ14bに、SODBプロセス13bが不揮発メモリ15bに格納できるように構成されている。
セカンダリノード1bも、プライマリノード1a同様の構成を有する。プライマリノード1aに障害が発生した場合、セカンダリノードはプライマリノードに昇格し、プライマリノード1aのジョブコントローラプロセス11aが処理したジョブの実行状態をメモリ14に格納されたSOMQ或いは、不揮発メモリ15に格納されたSODBを参照して、処理を引き継ぐ。
図1には、3台のノードで構成される例を示したが、ノードの数は、これに限らず、例えば4台以上であても良い。
次に、ノード(ストレージ装置)1のハードウェア構成について説明する。
図2は、一実施形態に係るノード1(ストレージ装置)のシステムブロック図である。
ストレージ装置1は、図1のノード1a、1b等に相当し、サーバ等の計算機からのI/O要求を処理し、ドライブ204にデータを格納、或いは、ドライブ204からデータを読み出し、計算機に送る処理を行う。ドライブ204としては、NVMeドライブ204a、SASドライブ204b、SATAドライブ204c等、各種ドライブで構成される。ドライブ204は、ドライブタイプは適宜選択されても良い。
ストレージ装置1は、図1のノード1a、1b等に相当し、サーバ等の計算機からのI/O要求を処理し、ドライブ204にデータを格納、或いは、ドライブ204からデータを読み出し、計算機に送る処理を行う。ドライブ204としては、NVMeドライブ204a、SASドライブ204b、SATAドライブ204c等、各種ドライブで構成される。ドライブ204は、ドライブタイプは適宜選択されても良い。
ノード1は、サーバ等の計算機と接続するネットワークI/F203と、一つ以上の中央処理部(CPU)201と、メモリ14と、これらを接続するバス205を有する。メモリ14は、SRAM、DRAMの揮発メモリである。
メモリ14には、ジョブ発行元ノード2からのジョブリクエストを実行するジョブコントローラプロセス11、ジョブコントローラプロセス11のジョブの情報(例えば実行状態)を、メモリ14に保存するSOMQ (Scale Out Message Que:スケールアウトメッセージキュー)プロセス12、ジョブコントローラプロセス11のジョブの情報(例えば、実行状態)をHDDやSSD等の不揮発メモリ15に保存するSODB (Scale Out Data Base:スケールアウトDB)プロセス13、ノード障害時の処理を実行する障害処理205等の各種プログラムが保存されている。CPU201がメモリ14に格納されたプログラムを実行することで、各種機能を実現する。
また、メモリ14には、ジョブの状態を表すJTR(Job Transaction Record)を格納する領域含む。
メモリ14には、図示したプログラムの他、ノード1がストレージ装置として機能する各種プログラムが格納され、計算機にボリューム等の記憶領域を提供し、計算機からのIOリクエストに応じてデータの読み出しや書き込みが行われる。また、メモリ14には、ノード1が計算機に提供するボリュームとドライブ204との関係を示すストレージ構成テーブルを格納する他、IOリクエストに関するデータを一時的に記憶するキャッシュメモリとなるキャッシュメモリを有する。
<フェイルオーバの動作概念>
図3は、一実施形態に係るフェイルオーバ時の動作のフローチャートを示したものである。図3の処理は、図2の障害処理206のプログラム(障害処理プログラムとも呼ぶ)によって実行される。
図3は、一実施形態に係るフェイルオーバ時の動作のフローチャートを示したものである。図3の処理は、図2の障害処理206のプログラム(障害処理プログラムとも呼ぶ)によって実行される。
システム内のプライマリノード1a以外のセカンダリノード1b内の障害処理プログラム206は、プライマリノード1aの障害を検出する(ステップS32)。
セカンダリノード1b内の障害処理プログラムがプライマリノードに昇格するよう制御する(ステップS33)。
セカンダリノード1bの障害処理プログラム206は、メモリ14に格納されているJTRからジョブを生成する(ステップS34)。ステップS35で、生成されたジョブの実行を再開する。
尚、図3に記載した各ステップは、障害処理プログラムはクラスタ制御プログラムの一部として実現することができる。
<JTR情報>
図4は、一実施形態に係るJTR(Job Transaction Record)の構成情報と分類を示す図である。JTRデータ項目41には、各ジョブに割り当てられ、ランダムで一意な値が設定されるJobID、ジョブの種別を示すジョブの種別、最後にジョブの状態が更新された時刻を示すジョブが更新された時刻、ジョブが操作したリソースのリストを示すジョブの操作対象リソースリスト、ジョブ実行中に発生したエラーの詳細情報を示すError情報、GUIに表示するジョブの状態を示すJobStatus、ジョブがどこまで実行したかを示す情報を示す実行位置を含む。これらのJTRデータ項目は、JTRの一部であって代表的な項目を例示しており、他のJTRデータ項目についても、本実施形態の考えを適用することができる。
図4は、一実施形態に係るJTR(Job Transaction Record)の構成情報と分類を示す図である。JTRデータ項目41には、各ジョブに割り当てられ、ランダムで一意な値が設定されるJobID、ジョブの種別を示すジョブの種別、最後にジョブの状態が更新された時刻を示すジョブが更新された時刻、ジョブが操作したリソースのリストを示すジョブの操作対象リソースリスト、ジョブ実行中に発生したエラーの詳細情報を示すError情報、GUIに表示するジョブの状態を示すJobStatus、ジョブがどこまで実行したかを示す情報を示す実行位置を含む。これらのJTRデータ項目は、JTRの一部であって代表的な項目を例示しており、他のJTRデータ項目についても、本実施形態の考えを適用することができる。
本実施の形態では、図4に例示されたJTRデータ項目41の内、ジョブの内容により、次の(A)−(C)の三つに分類する。
(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるもの。
この分類に属するJTRデータ項目は、SODBへ格納し、ジョブの実行状況を不揮発化するとともにSOMQでセカンダリノードと共有する。
この分類に属するJTRデータ項目は、SODBへ格納し、ジョブの実行状況を不揮発化するとともにSOMQでセカンダリノードと共有する。
(B)情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるもの。
この分類に属するJTRデータ項目は、SOMQでセカンダリノードと共有する。プライマリノードは共有が成功したらジョブの実行を続ける。この場合、SODBへの書き込みはセカンダリノードが行う。
この分類に属するJTRデータ項目は、SOMQでセカンダリノードと共有する。プライマリノードは共有が成功したらジョブの実行を続ける。この場合、SODBへの書き込みはセカンダリノードが行う。
(C)情報が消失してもシステムの構成変更が成功し、不具合が生じないもの。
この分類に属するJTRデータ項目は、SOMQでセカンダリノードと共有する。SODBには書き込まない。
この分類に属するJTRデータ項目は、SOMQでセカンダリノードと共有する。SODBには書き込まない。
上記(A)に該当するJTRデータ項目は、「JobID」「Jobの種別」等、図4の(1)実行開始時に書き込みが必要となる列42に「〇」が付された項目と、(2)消失するとジョブが異常終了する列44に「〇」が付された項目である。(A)に該当するデータの内、列42の(1)に該当するデータは、ジョブの実行開始時にSOMQとSODBの双方でジョブの状況を格納し、列44の(2)に該当するデータは、データの更新時にSOMQとSODBの双方でジョブの状況を格納することで、プライマリノード1aとセカンダリノード1bの間でデータ共有される。
プライマリノード1aでは、SOMQプロセス12aがメモリ14a、SODBプロセス13aが不揮発メモリ15aにJTRを格納する。セカンダリノード1bでは、SOMQプロセス12bがメモリ14b、SODBプロセス13bが不揮発メモリ15bにJTRを格納する。
上記(B)に該当するJTRデータ項目は、「Jobが更新された時刻」「JobStatus」等、(3)消失してもジョブは、正常終了する列45に「〇」が付された項目である。列45の(3)に該当するデータは、SOMQでプライマリノードとセカンダリノード間で共有し、セカンダリノードがSODBに格納する。
プライマリノード1aでは、SOMQプロセス12aがメモリ14aにJTRを格納する。セカンダリノード1bでは、SOMQプロセス12bがメモリ14b、SODBプロセス13bが不揮発メモリ15bにJTRを格納する。
プライマリノード1aのSODBプロセス13aは不揮発メモリ15aにJTRを格納しない。
プライマリノード1aでは、SOMQプロセス12aがメモリ14aにJTRを格納する。セカンダリノード1bでは、SOMQプロセス12bがメモリ14b、SODBプロセス13bが不揮発メモリ15bにJTRを格納する。
プライマリノード1aのSODBプロセス13aは不揮発メモリ15aにJTRを格納しない。
上記(C)に該当するJTRデータ項目は、「実行位置」等、(4)消失してもジョブの実行に影響がない列46に「〇」が付された項目である。列46の(4)に該当するデータSOMQでプライマリノードとセカンダリノード間で共有され、SODBには格納しない。
プライマリノード1aでは、SOMQプロセス12aがメモリ14aにJTRを格納する。セカンダリノード1bでは、SOMQプロセス12bがメモリ14bにJTRを格納する。プライマリノード1aのSODBプロセス13aとセカンダリノード1bのSODBプロセス13bは不揮発メモリ15bにJTRを格納しない。
プライマリノード1aでは、SOMQプロセス12aがメモリ14aにJTRを格納する。セカンダリノード1bでは、SOMQプロセス12bがメモリ14bにJTRを格納する。プライマリノード1aのSODBプロセス13aとセカンダリノード1bのSODBプロセス13bは不揮発メモリ15bにJTRを格納しない。
このように、データ項目に応じて、プライマリノードとセカンダリノードにおいて、揮発メモリに格納されるSOMQ、不揮発メモリに格納されるSODBに選択的に格納する。
<JTRの保存動作>
図5は、図4で説明した(A)に該当するJTRデータ項目に関して、プライマリノード1aがSOMQ52とSOMB55にJTRを保存する動作を示す図である。即ち、図4に示したJTRデータ項目の内、(A)に該当するデータである(1)実行開始時に書き込みが必要なデータ項目と、(2)消失するとジョブが異常終了するデータ項目、に関するJTRの保存動作が示されている。
図5は、図4で説明した(A)に該当するJTRデータ項目に関して、プライマリノード1aがSOMQ52とSOMB55にJTRを保存する動作を示す図である。即ち、図4に示したJTRデータ項目の内、(A)に該当するデータである(1)実行開始時に書き込みが必要なデータ項目と、(2)消失するとジョブが異常終了するデータ項目、に関するJTRの保存動作が示されている。
ジョブ発行元2からプライマリノード1aがジョブの実行通知を受領すると、SODB55を参照し、ジョブ51を生成する。生成したジョブは、処理1(511)、処理2(512)等、複数の処理を含む。プライマリノード1aのジョブコントローラプロセス11aは、これらのジョブ51の各処理を実行すると共に、処理の完了を含む情報をSOMQプロセス、SODBプロセスに送り、SOMQ52とSODB55にJTR54として格納する。これにより、ジョブの処理状況をプライマリノード1aとセカンダリノード1b間で、メモリ14と不揮発メモリ15を用いて共有する。セカンダリノード1bでのメモリ14b、不揮発メモリ15bへのJTRの格納は、図4で説明した通りである。
SOMQについては、プライマリノードの1aのSOMQプロセス12aによりプライマリノード1aのメモリ14aに、セカンダリノード1bのSOMQプロセス12aによりメモリ14bに、JTRがそれぞれ保存される。
SODBについては、プライマリノード1aのSODBプロセス13aにより不揮発メモリ15aに、セカンダリノード1bのSODBプロセス13bにより不揮発メモリ15bに、SODBとしてそれぞれ保存される。
このように、(1)実行開始時にJTRの保存が必要な全てのデータ項目と、(2)ジョブの状態が更新されたデータ項目は、SOMQ52とSODB55によってセカンダリノード1bと共有されることとなる。そのため、プライマリノード1aの障害を検知し、セカンダリノードからプライマリノードに昇格したノードのジョブコントローラプロセスは、SOMQ52に格納されたJTRを読み出すことにより、処理を引き継ぐことができる。SOMQ52は、揮発メモリ14に格納されているため、セカンダリノード1bは、不揮発メモリ15に格納されたSODB55からJTR54を読み出すよりも高速に読み出し、フェイルオーバを高速に実行することができる。
図6は、図4で説明した(B)に該当するJTRデータ項目に関して、SOMQ52とSODM55にJTRを保存する動作を示している。即ち、(3)消失してもジョブは、正常終了するJTRデータ項目については、SOMQとSODBは以下のように共有される。
SOMQについては、プライマリノードの1aのSOMQプロセス12aによりプライマリノード1aのメモリ14aに、セカンダリノード1bのSOMQプロセス12aによりメモリ14bに、JTRがそれぞれ保存される。
SODBについては、セカンダリノード1bのSODBプロセス13bにより不揮発メモリ15bに、SODBとして保存される。
SOMQ52にはプライマリノード1aもJTRを格納するが、SODB55にはセカンダリノード1bのみが格納するよう動作する。
不揮発メモリ15によって格納されるSODB55へのJTR54の書き込みは、揮発メモリ14によって格納されるSOMQ52へのJTR54の書き込みより時間を要するため、(3)消失しても正常終了するジョブのSODB55にJTR54の格納処理を、プライマリノード1aから解放し、セカンダリノード1bのみに行わせる。これにより、プライマリノード1aの処理負荷を減らすと共に、プライマリノード1aは、SODB55へのJTRの書き込み完了を待つことなく、ジョブ51に含まれる次の処理を行うことができ、ジョブ処理速度を向上させることができる。
図7は、図4で説明した(C)に該当するJTRデータ項目に関して、SOMQ52にJTRを保存する動作を示している。即ち、(4)消失してもジョブの実行に影響がないJTRデータ項目については、SOMQ52にJTRを格納し、SODB55にはJTRを格納しない。
ジョブの実行に影響がないJTRデータ項目は、仮に喪失しても、フェイルオーバ時にプライマリノードに昇格するノードが、ジョブ再開のため参照する必要がないためである。
この場合、SOMQ52によってのみデータ共有を図っているため、書き込み時間を要するSODB55へのJTRの書き込みを不要としている。
SOMQ52の格納は、プライマリノード1aのSOMQプロセス12aがメモリ14aに、セカンダリノード1bのSOMQプロセス12bがメモリ14bに、JTRをそれぞれ書き込むことによって、プライマリノード1aとセカンダリノード1b間でジョブに関する情報が共有される。
図5から図7に示したように、データ項目に応じて、プライマリノードとセカンダリノードにおいて、揮発メモリに格納されるSOMQ、不揮発メモリに格納されるSODBに選択的に格納する。
<フェイルオーバ時の動作シーケンス>
図8は、フェイルオーバ時の動作シーケンス図である。
図8の動作シーケンス図は、ジョブリクエスト元2、プライマリノード1aのジョブコントローラ11a、セカンダリノード1bのジョブコントローラ11b、SOMQ52、SODB55間のシーケンス図を示している。
図8は、フェイルオーバ時の動作シーケンス図である。
図8の動作シーケンス図は、ジョブリクエスト元2、プライマリノード1aのジョブコントローラ11a、セカンダリノード1bのジョブコントローラ11b、SOMQ52、SODB55間のシーケンス図を示している。
まず、ジョブリクエスト元2は、SODB55に対しJTRの保存を行う(S801)。その後、プライマリノードのジョブコントローラ11aはジョブリクエスト元2からジョブの実行通知を受領する(S802)。
ジョブの実行通知を受領したジョブコントローラ11aは、SODB55を参照し(S803)、ジョブの生成を行う(S804)。ジョブコントローラ11aはジョブを生成すると、SOMQ52、SODB55を通してJTRをセカンダリノード1bと共有する(S805)。SOMQ52、SODB55を用いたJTRの共有については、図5から図8で説明した通りであり、図4で説明したデータ項目の(A)、(B)、(c)に従って、格納先を選択する。
セカンダリノード1bと生成したジョブを共有すると、プライマリノードのジョブコントローラ11aは、ジョブに含まれる処理1を実行する(S806)。実行状況は、SOMQ52、SODB55を通してJTRをセカンダリノード1bと共有する(S805)。SOMQ52、SODB55を用いたJTRの共有については、図5から図8で説明した通りであり、図4で説明したデータ項目の(A)、(B)、(c)に従って、格納先を選択する。
同様に、処理2についてもプライマリノード1aのジョブコントローラ11aが実行する(S808)。図8では、処理2の実行中にプライマリノード1aの障害をセカンダリノード1bが検出したことを示している(S809)。
障害を検出すると、プライマリノードのジョブコントローラの処理をセカンダリノードのジョブコントローラが引き継ぐため、セカンダリノードがプライマリノードに昇格する(S810)。
プライマリノードに昇格したセカンダリノードのジョブコントローラ11bは、共有されているSOMQ52を参照することで、ジョブの再生成を行い(S811)。再生成されたジョブの処理2を実行する(S812)。ジョブの処理を繰り返し実行し、最後の処理Nを実行(S813)すると、JTRをSODB55に保存し(S814)、ジョブコントローラ11bはジョブリクエスト元2に対し、ジョブの実行完了を通知する(S815)。ジョブリクエスト元2は、SODB55を参照し、ジョブの完了を確認する(S816)。
図9は、全ノード障害時の動作シーケンス図である。図8では、プライマリノード1aに障害が発生し、セカンダリノード1bが処理を引き継ぐ動作シーケンスであったのに対し、図9は、プライマリノードとセカンダリノードの双方に障害が発生した場合の動作シーケンスを示している。
図9のステップS901からステップS908は、図8のステップS801からステップS808と同様である。その後、プライマリノードとセカンダリノードでそれぞれ障害が発生する(S909、S910)。プライマリノードとセカンダリノードはそれぞれノードの再起動を行う(S911、S912)。セカンダリノードも障害が発生しているため、プライマリノードに昇格することができず、SOMQ52の情報が利用できないため、再起動後にプライマリノード1aのジョブコントローラ11aは、SODB55に格納されたJTRを参照し(S913)、ジョブの再生成を行う(S914)。再生成されたジョブから処理1を実行する。尚、ステップS913では、プライマリノード1aの不揮発メモリ15aに格納されているSODB55からジョブの状態を読み出す。SODB55には、実行位置を書き込めば、処理済みの処理1に続く、処理2を実行することができる(S915)。
ジョブコントローラ11aは、ジョブの処理を繰り返し実行し、最後の処理Nを実行(S916)すると、JTRをSODB55に保存し(S917)、ジョブリクエスト元2に対し、ジョブの実行完了を通知する(S918)。ジョブリクエスト元2は、SODB55を参照し、ジョブの完了を確認する(S919)。
本実施の形態によれば、図4のJTRデータ項目の種別に応じて、(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるもの、(B)情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるもの、(C)情報が消失してもシステムの構成変更が成功し、不具合が生じないものと分類し、その分類に応じて、SOMQ52、SODB55を用いたプライマリノードセカンダリノード間でジョブの共有を図っている。
このため、データ項目によっては、SOMQ52のみを用いてジョブの共有を行うことで共有処理の高速化を図ることができる。
また、データ項目によっては、SODB55へのJTRの書き込みをセカンダリノードに行わせることで、プライマリノードの処理負荷軽減と、SODB55へのジョブの処理完了の書き込み完了前に、次の処理を実行可能とすることで、ジョブの処理実行の高速化を図ることができる。
さらに、JTRデータ項目中、(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるものについては、SODB55にJTRを書き込むため、全ノード障害時においても、システム再起動により、ジョブを再開することができる。
図10は、本実施例のシステムの各ノード構成とジョブ情報の一例を示した図である。
図10において、ジョブ情報(1)は、図4の(1)実行開始時に書き込みが必要なJTRデータ項目42に相当し、ジョブ情報(2)は、図4の(2)消失するとジョブが異常終了するJTRデータ項目44に相当し、ジョブ情報(3)は、図4の(3)消失してもジョブは正常終了するJTRデータ項目45に相当し、ジョブ情報(4)は、図4の(4)消失してもJobの実行に影響がないJTR項目データ46に相当する。図10は、本実施の形態により、それぞれのJTR項目がSOMQ52とSODB55で、プライマリノード1aとセカンダリノード1bとで共有されている状態を示している。
図10において、ジョブ情報(1)は、図4の(1)実行開始時に書き込みが必要なJTRデータ項目42に相当し、ジョブ情報(2)は、図4の(2)消失するとジョブが異常終了するJTRデータ項目44に相当し、ジョブ情報(3)は、図4の(3)消失してもジョブは正常終了するJTRデータ項目45に相当し、ジョブ情報(4)は、図4の(4)消失してもJobの実行に影響がないJTR項目データ46に相当する。図10は、本実施の形態により、それぞれのJTR項目がSOMQ52とSODB55で、プライマリノード1aとセカンダリノード1bとで共有されている状態を示している。
1a:クラスタマスタプライマリ(プライマリノード)、
1b:クラスタマスタセカンダリ(セカンダリノード)、
1c:クラスタマスタスレーブ、
2:ジョブ発行元、
3:ネットワーク、
11:ジョブコントローラ、
12:SOMQ、
13:SODB
14:揮発メモリ、
15:不揮発メモリ、
201:CPU、
203:ネットワークインタフェース、
204a:NVMeドライブ、
204b:SASドライブ、
204c:SATAドライブ、
205:バス。
1b:クラスタマスタセカンダリ(セカンダリノード)、
1c:クラスタマスタスレーブ、
2:ジョブ発行元、
3:ネットワーク、
11:ジョブコントローラ、
12:SOMQ、
13:SODB
14:揮発メモリ、
15:不揮発メモリ、
201:CPU、
203:ネットワークインタフェース、
204a:NVMeドライブ、
204b:SASドライブ、
204c:SATAドライブ、
205:バス。
Claims (14)
- 複数のノードを有するストレージシステムにおいて、
前記複数のノードの構成情報を変更するジョブを実行するプライマリノードと、
前記プライマリノードの障害時に、ジョブを引き継ぐセカンダリノードと、
前記プライマリノードと前記セカンダリノードは、ジョブを格納する揮発メモリと不揮発メモリとを有し、
前記プライマリノードと前記セカンダリノードは、前記ジョブのデータ項目が、(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるデータ項目と、(B)情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるデータ項目、(C)情報が消失してもシステムの構成変更が成功し、不具合が生じないデータ項目に応じて、前記ジョブの情報を前記揮発メモリと前記不揮発メモリに選択的に格納する、
ことを特徴とするストレージシステム。 - 請求項1に記載のストレージシステムにおいて、
前記プライマリノードは、第1の処理部と、第1の揮発メモリと第1の不揮発メモリとを有し、
前記セカンダリノードは、第2の処理部と、第2の揮発メモリと第2の不揮発メモリとを有し、
前記第1の処理部は、ジョブの状態を前記第1の揮発メモリに格納し、前記第2の処理部は、ジョブの状態を前記第2の揮発メモリに格納し、
前記第1の処理部は、前記データ項目に応じて、ジョブの状態を前記第1の不揮発メモリへの格納を制御し、前記第2の処理部は、前記データ項目に応じて、ジョブの状態を前記第2の不揮発メモリへの格納を制御する、
ことを特徴とするストレージシステム。 - 請求項2に記載のストレージシステムにおいて、
前記ジョブのデータ項目が、前記(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるデータ項目である場合、
前記第1の処理部はジョブの状態を前記第1の揮発メモリに、前記第2の処理部はジョブの状態を前記第2の揮発メモリに、それぞれ格納すると共に、
前記第1の処理部はジョブの状態を前記第2の不揮発メモリに、前記第2の処理部はジョブの状態を前記第2の不揮発メモリに、それぞれ格納する、
ことを特徴とするストレージシステム。 - 請求項2に記載のストレージシステムにおいて、
前記ジョブのデータ項目が、前記(B)情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるデータ項目である場合、
前記第1の処理部はジョブの状態を前記第1の揮発メモリに、前記第2の処理部はジョブの状態を前記第2の揮発メモリに、それぞれ格納すると共に、
前記第1の処理部はジョブの状態を前記第2の不揮発メモリに格納せず、前記第2の処理部はジョブの状態を前記第2の不揮発メモリに格納する、
ことを特徴とするストレージシステム。 - 請求項2に記載のストレージシステムにおいて、
前記ジョブのデータ項目が、前記(C)情報が消失してもシステムの構成変更が成功し、不具合が生じないデータ項目である場合、
前記第1の処理部はジョブの状態を前記第1の揮発メモリに、前記第2の処理部はジョブの状態を前記第2の揮発メモリに、それぞれ格納すると共に、
前記第1の処理部と前記第2の処理部は、ジョブの状態を前記第1の不揮発メモリと前記第2の不揮発メモリに格納しない、
ことを特徴とするストレージシステム。 - 請求項2に記載のストレージシステムにおいて、
前記プライマリノードの障害時に、前記セカンダリノードは、プライマリノードに昇格し、前記第2の揮発メモリからジョブの状態を読み出し、ジョブを再生することで前記プライマリノードから処理を引き継ぐ、
ことを特徴とするストレージシステム。 - 請求項2に記載のストレージシステムにおいて、
前記プライマリノードと前記セカンダリノードに障害が発生した場合、
前記プライマリノードと前記セカンダリノードは再起動を実施し、
前記プライマリノードが、前記第1の不揮発メモリからジョブの状態を読み出し、ジョブを再生することでジョブを再開する、
ことを特徴とするストレージシステム。 - 複数のノードを有するストレージシステムの回復方法において、
前記ストレージシステムは、前記複数のノードの構成情報を変更するジョブを実行するプライマリノードと、前記プライマリノードの障害時に、ジョブを引き継ぐセカンダリノードとを有し、
前記プライマリノードと前記セカンダリノードは、ジョブを格納する揮発メモリと不揮発メモリとを有し、
前記プライマリノードと前記セカンダリノードは、前記ジョブのデータ項目が、(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるデータ項目と、(B)情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるデータ項目、(C)情報が消失してもシステムの構成変更が成功し、不具合が生じないデータ項目に応じて、前記ジョブの情報を前記揮発メモリと前記不揮発メモリに選択的に格納する、
ことを特徴とするストレージシステムの回復方法。 - 請求項8に記載のストレージシステムの回復方法において、
前記プライマリノードは、第1の処理部と、第1の揮発メモリと第1の不揮発メモリとを有し、
前記セカンダリノードは、第2の処理部と、第2の揮発メモリと第2の不揮発メモリとを有し、
前記第1の処理部は、ジョブの状態を前記第1の揮発メモリに格納し、前記第2の処理部は、ジョブの状態を前記第2の揮発メモリに格納し、
前記第1の処理部は、前記データ項目に応じて、ジョブの状態を前記第1の不揮発メモリへの格納を制御し、前記第2の処理部は、前記データ項目に応じて、ジョブの状態を前記第2の不揮発メモリへの格納を制御する、
ことを特徴とするストレージシステムの回復方法。 - 請求項9に記載のストレージシステムの回復方法において、
前記ジョブのデータ項目が、前記(A)情報が消失するとシステムの構成変更が失敗し内部状態が不正になるデータ項目である場合、
前記第1の処理部はジョブの状態を前記第1の揮発メモリに、前記第2の処理部はジョブの状態を前記第2の揮発メモリに、それぞれ格納すると共に、
前記第1の処理部はジョブの状態を前記第2の不揮発メモリに、前記第2の処理部はジョブの状態を前記第2の不揮発メモリに、それぞれ格納する、
ことを特徴とするストレージシステムの回復方法。 - 請求項9に記載のストレージシステムの回復方法において、
前記ジョブのデータ項目が、前記(B)情報が消失してもシステムの構成変更は成功するが、GUIの表示が不正になるなど、許容できる不具合が生じるデータ項目である場合、
前記第1の処理部はジョブの状態を前記第1の揮発メモリに、前記第2の処理部はジョブの状態を前記第2の揮発メモリに、それぞれ格納すると共に、
前記第1の処理部はジョブの状態を前記第2の不揮発メモリに格納せず、前記第2の処理部はジョブの状態を前記第2の不揮発メモリに格納する、
ことを特徴とするストレージシステムの回復方法。 - 請求項9に記載のストレージシステムの回復方法において、
前記ジョブのデータ項目が、前記(C)情報が消失してもシステムの構成変更が成功し、不具合が生じないデータ項目である場合、
前記第1の処理部はジョブの状態を前記第1の揮発メモリに、前記第2の処理部はジョブの状態を前記第2の揮発メモリに、それぞれ格納すると共に、
前記第1の処理部と前記第2の処理部は、ジョブの状態を前記第1の不揮発メモリと前記第2の不揮発メモリに格納しない、
ことを特徴とするストレージシステムの回復方法。 - 請求項9に記載のストレージシステムの回復方法において、
前記プライマリノードの障害時に、前記セカンダリノードは、プライマリノードに昇格し、前記第2の揮発メモリからジョブの状態を読み出し、ジョブを再生することで前記プライマリノードから処理を引き継ぐ、
ことを特徴とするストレージシステムの回復方法。 - 請求項9に記載のストレージシステムの回復方法において、
前記プライマリノードと前記セカンダリノードに障害が発生した場合、
前記プライマリノードと前記セカンダリノードは再起動を実施し、
前記プライマリノードが、前記第1の不揮発メモリからジョブの状態を読み出し、ジョブを再生することでジョブを再開する、
ことを特徴とするストレージシステムの回復方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019024773A JP2020135138A (ja) | 2019-02-14 | 2019-02-14 | ストレージシステム、ストレージシステムの回復方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019024773A JP2020135138A (ja) | 2019-02-14 | 2019-02-14 | ストレージシステム、ストレージシステムの回復方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020135138A true JP2020135138A (ja) | 2020-08-31 |
Family
ID=72278566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019024773A Pending JP2020135138A (ja) | 2019-02-14 | 2019-02-14 | ストレージシステム、ストレージシステムの回復方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020135138A (ja) |
-
2019
- 2019-02-14 JP JP2019024773A patent/JP2020135138A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9798792B2 (en) | Replication for on-line hot-standby database | |
US10146646B1 (en) | Synchronizing RAID configuration changes across storage processors | |
US10140194B2 (en) | Storage system transactions | |
US20170161154A1 (en) | Efficient Mechanism to Replicate Data for Multiple Controllers | |
US8271968B2 (en) | System and method for transparent hard disk drive update | |
JP2019185371A (ja) | サーバ切り替えプログラム、サーバ切り替え方法、及びサーバ切り替えシステム | |
EP3147797B1 (en) | Data management method, node and system for database cluster | |
US9436554B2 (en) | Information processing apparatus and data repairing method | |
JP6123388B2 (ja) | フォールトトレラントサーバ | |
US20100205482A1 (en) | Mirroring controller, storage device, and mirroring control method | |
US20140122433A1 (en) | Storage device and data backup method | |
CN112119380A (zh) | 带有旁路的奇偶校验记录 | |
CN112748865B (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
US20160070491A1 (en) | Information processor, computer-readable recording medium in which input/output control program is recorded, and method for controlling input/output | |
JP2020135138A (ja) | ストレージシステム、ストレージシステムの回復方法 | |
JP2008242524A (ja) | ファイル管理装置、ファイル管理方法、プログラム、コンピュータ読み取り可能な記録媒体 | |
US10656867B2 (en) | Computer system, data management method, and data management program | |
CN107797885B (zh) | 电子设备及其控制方法 | |
KR101969799B1 (ko) | 전자 장치 및 제어 방법 | |
JP6160688B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
US7890798B1 (en) | Computer cluster with second-node instance of application having access to state snapshot of first-node instance of application | |
JP5703860B2 (ja) | フォールトトレラントシステム、メモリ制御方法、及びプログラム | |
JP6928148B1 (ja) | フォールトトレラントシステム、フォールトトレラント制御方法、及び、フォールトトレラント制御プログラム | |
JP2005316697A (ja) | ディスクアレイシステムおよびデータバックアップ方法 | |
JP2003330737A (ja) | 計算機システム |