JP2023045641A - ストレージシステム及び制御方法 - Google Patents

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

Info

Publication number
JP2023045641A
JP2023045641A JP2021154178A JP2021154178A JP2023045641A JP 2023045641 A JP2023045641 A JP 2023045641A JP 2021154178 A JP2021154178 A JP 2021154178A JP 2021154178 A JP2021154178 A JP 2021154178A JP 2023045641 A JP2023045641 A JP 2023045641A
Authority
JP
Japan
Prior art keywords
storage
value
timeout
processing
information
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
Application number
JP2021154178A
Other languages
English (en)
Inventor
美里 吉田
Misato Yoshida
隆喜 中村
Takayoshi Nakamura
貴大 山本
Takahiro Yamamoto
匡邦 揚妻
Masakuni Agetsuma
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 JP2021154178A priority Critical patent/JP2023045641A/ja
Priority to US17/690,302 priority patent/US11989105B2/en
Publication of JP2023045641A publication Critical patent/JP2023045641A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • 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]
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Hardware Redundancy (AREA)

Abstract

Figure 2023045641000001
【課題】
ネットワーク品質に応じて、ノード障害の誤検出を避けながらも、フェイルオーバー時間を短縮する。
【解決手段】
データを記憶する記憶装置と、記憶装置に入出力するデータを処理するプロセッサを有する複数のストレージノードと、複数のストレージノードを接続するネットワークと、を備えるストレージシステムにおいて、上記複数のストレージノードは、互いの稼働状況を監視して、タイムアウト値に基づいてストレージノードの障害発生を判断するノード障害検出を行い、ストレージノードに障害が発生した場合にそのストレージノードの処理を他のストレージが引き継ぐフェイルオーバー処理を行い、ストレージノード間のネットワークの状況に基づいて、タイムアウト値を調整する。
【選択図】図14

Description

本発明は、ストレージシステム及び制御方法に関し、例えば、それぞれ1または複数のSDS(Software Defined Storage)が実装された複数のストレージノードを備えるストレージシステムに適用して好適なものである。なお、以下において、SDSとは、ストレージ機能を有するソフトウェアが実装された複数の汎用サーバをクラスタ化して構築されるストレージ装置を指す。
近年、ストレージをソフトウェア化して任意のインフラ環境で動作させるSDS(Software Defined Storage)の市場が成長している。SDSは複数の汎用サーバをクラスタ化した構成になっており、その障害時には、待機システムに切り替えるフェイルオーバーが行われる。
例えば、特許文献1には、SDS障害時のフェイルオーバーの方法が開示されている。特許文献1に開示された情報処理システムは、情報処理システムに含まれる各ストレージノードに、冗長化グループを構成する制御ソフトを分散して配置し、ストレージノードの障害発生によって何れかの制御ソフトが稼働できなくなった場合には、フェイルオーバーを行って、代替となる制御ソフト及び当該制御ソフトが利用する構成情報を適切なストレージノード上に再現することにより、稼働を継続する。
また例えば、非特許文献1には、Apache ZooKeeper(登録商標)ソフトウェアの開発者向けのドキュメントが開示されている。非特許文献1によれば、Apache ZooKeeperにおいては、固定値のタイムアウト時間を設定し、通信断時間がタイムアウト時間を超えた場合に、障害とみなす方式が開示されている。
特開2019-101703号公報
ZooKeeper プログラマーズガイド、[online]、[令和3年5月31日検索]、インターネット〈URL:http://oss.infoscience.co.jp/hadoop/zookeeper/docs/current/zookeeperProgrammers.html〉
ところで、フェイルオーバー中はホスト(上位装置)からストレージノードに対するIO(Input/Output)が停止されるため、ストレージノード障害時は短時間でフェイルオーバーを完了することが求められる。一方で、ストレージシステムには高い信頼性も求められるため、ノード障害の誤検出を避けることも重要となる。また、ノード障害の発生からフェイルオーバーの完了までに掛かるフェイルオーバー時間は、ノード障害の有無を検出するために設定されたノード障害検出時間と、フェイルオーバー処理の実行に要するフェイルオーバー処理時間との合計値となる。
しかし、上述した従来技術では、ノード障害検出のタイムアウト時間(タイムアウト値)が固定値で設定されるため、フェイルオーバーにおいて以下のような問題が想定される。まず、ノード障害検出のタイムアウト時間が長すぎると、フェイルオーバー時間が長期化し、ホストからのIO停止時間が長くなってしまう。一方、ノード障害検出のタイムアウト時間が短すぎると、ネットワーク負荷が高いときにノード障害が誤検出される可能性があり、システムの信頼性が低下してしまう。
すなわち、ストレージシステムにおいてノード障害検出の最適なタイムアウト時間は、ネットワーク負荷、パブリッククラウドやオンプレミスといったシステムの運用環境、ハードウェア構成、及びスイッチ構成等、様々なシステム環境によって変化するものであり、従来技術では、このような最適なタイムアウト時間(タイムアウト値)を決定することが困難であった。
本発明は以上の点を考慮してなされたもので、ネットワーク品質に応じて、ノード障害の誤検出を避けながらも、フェイルオーバー時間を短縮することが可能なストレージシステム及び制御方法を提案しようとするものである。
かかる課題を解決するため本発明においては、データを記憶する記憶装置と、前記記憶装置に入出力するデータを処理するプロセッサを有する複数のストレージノードと、前記複数のストレージノードを接続するネットワークと、を備えるストレージシステムにおいて、前記複数のストレージノードは、互いの稼働状況を監視して、タイムアウト値に基づいて前記ストレージノードの障害発生を判断するノード障害検出を行い、前記ストレージノードに障害が発生した場合にそのストレージノードの処理を他のストレージが引き継ぐフェイルオーバー処理を行い、前記ストレージノード間のネットワークの状況に基づいて、前記タイムアウト値を調整する、ストレージシステムが提供される。
また、かかる課題を解決するため本発明においては、ストレージシステムによる制御方法であって、前記ストレージシステムは、データを記憶する記憶装置と、前記記憶装置に入出力するデータを処理するプロセッサを有する複数のストレージノードと、前記複数のストレージノードを接続するネットワークと、を有し、前記複数のストレージノードが、互いの稼働状況を監視して、タイムアウト値に基づいて前記ストレージノードの障害発生を判断するノード障害検出を行い、前記ストレージノードに障害が発生した場合にそのストレージノードの処理を他のストレージが引き継ぐフェイルオーバー処理を行い、前記ストレージノード間のネットワークの状況に基づいて、前記タイムアウト値を調整する、制御方法が提供される。
本発明によれば、ネットワーク品質に応じて、ノード障害の誤検出を避けながらも、フェイルオーバー時間を短縮することができる。
本発明の一実施形態によるストレージシステム1の構成例を示すブロック図である。 ストレージノード10のハードウェア構成例を示すブロック図である。 メモリ12に格納されるプログラム及び情報の一例を示すブロック図である。 タイムアウト管理用情報140の内訳を説明する図である。 ネットワーク遅延情報141の一例を示す図である。 システム統計情報143の一例を示す図である。 ストレージ処理情報144の一例を示す図である。 インストール時タイムアウト値147の一例を示す図である。 運用時タイムアウト値148の一例を示す図である。 IOホストタイムアウト情報149の一例を示す図である。 タイムアウト初期設定処理の処理手順例を示すフローチャートである。 ネットワーク遅延確認処理の処理手順例を示すフローチャートである。 インストール時タイムアウト値更新処理の処理手順例を示すフローチャートである。 運用時タイムアウト値更新処理の処理手順例を示すフローチャートである。 IOホストタイムアウト要件判定処理の処理手順例を示すフローチャートである。 タイムアウト更新処理の処理手順例を示すフローチャートである。 ストレージ稼働状況確認処理の処理手順例を示すフローチャートである。 タイムアウト値の稼働環境適合値を決定する方法を説明するイメージ図である。
以下、図面を参照して、本発明の一実施形態を詳述する。以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施形態の中で説明されている特徴の組み合わせの全てが、発明の解決手段に必須であるとは限らない。本発明が実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、または、ホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部または全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、または圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
(1)システムの構成
図1は、本発明の一実施形態によるストレージシステム1の構成例を示すブロック図である。このストレージシステム1は、1以上のストレージノード10と1以上のIOホスト20(上位装置)とを備えて構成される。ストレージシステム1は、オンプレミスで運用されてもよいし、パブリッククラウドで運用されてもよい。なお、以降の説明において、ストレージノード10を、単に「ノード」と称する場合がある。
各ストレージノード10及び各IOホスト20との間は、ストレージサービスネットワーク31を介して接続される。ストレージサービスネットワーク31は、具体的には例えば、ファイバーチャネル(Fibre Channel)、Ethernet(登録商標)、InfiniBand、または無線LAN(Local Area Network)等である。また、各ストレージノード10の間は、バックエンドネットワーク32を介して接続される。バックエンドネットワーク32は、具体的には例えば、LAN、Ethernet、InfiniBand、または無線LAN等である。なお、ストレージサービスネットワーク31及びバックエンドネットワーク32は同一のネットワークによって構成されていてもよく、また、各ストレージノード10及び各IOホスト20は、ストレージサービスネットワーク31及びバックエンドネットワーク32とは別に管理用ネットワークに接続されていてもよい。またさらに、上記の各ネットワークは、冗長化されていてもよい。
なお、以降の説明において、単に「ネットワーク」と称する場合、主としてバックエンドネットワーク32のことを指すが、本実施形態は必ずしもこれに限定されず、ストレージサービスネットワーク31を「ネットワーク」として捉えてもよく、あるいは、ストレージサービスネットワーク31及びバックエンドネットワーク32をまとめて「ネットワーク」と捉えてもよい。具体的には例えば、後述する「ネットワーク遅延値」は、バックエンドネットワーク32における通信の遅延時間(レイテンシ)であるとしてもよいし、ストレージサービスネットワーク31及びバックエンドネットワーク32の各ネットワークにおける通信の遅延時間を所定の方法で統合した時間(値)である等としてもよい。
IOホスト20は、ストレージノード10に対してホスト(上位装置)として機能する汎用のコンピュータ装置であり、コンピュートノードとも表記される。なお、IOホスト20は仮想マシンのような仮想的なコンピュータ装置であってもよい。IOホスト20は、ユーザ操作や実装されたアプリケーションプログラムからの要求に応じて、ストレージサービスネットワーク31を介してストレージノード10にデータを読み書きする。
ストレージノード10は、IOホスト20に対してデータを読み書きするための記憶領域を提供するサーバ装置であって、一般的な汎用サーバでも専用機でもよい。ストレージノード10は、仮想マシンであってもよい。また、ストレージノード10がIOホスト20と同一の物理ノードに同居する構成であってもよい。本実施形態では、各ストレージノード10は、他の1または複数のストレージノード10とともにクラスタと呼ぶグループにまとめられて管理される(図1のクラスタ40を参照)。図1では、1つのクラスタ40が設定された構成が例示されているが、ストレージシステム1内に複数のクラスタ40の数が設けられてもよい。
図2は、ストレージノード10のハードウェア構成例を示すブロック図である。ストレージノード10は、図2に示すように、1以上のCPU(Central Processing Unit)11、1以上のメモリ12、1以上の記憶装置13、及びそれぞれ1以上の通信装置14,15が、内部ネットワーク16を介して接続されて構成される。
CPU11は、ストレージノード10全体の動作制御を司るプロセッサである。IOホスト20より受信したライト要求のデータをストレージ機能により処理して記憶装置13に格納したり、IOホスト20より受信したリード要求に応じて、ストレージ機能を用いて記憶装置13よりデータを読み出して処理してIOホスト20に応答したりする。またメモリ12は、SRAM(Static RAM(Random Access Memory))やDRAM(Dynamic RAM)等の揮発性の半導体メモリや、不揮発性の半導体メモリから構成され、CPU11のワークメモリとして各種プログラムや必要なデータを一時的に保持するために利用される。ストレージノード10は、少なくとも1以上のCPU11がメモリ12に格納されたプログラムを実行することにより、ストレージノード10の各種処理を実現する。
記憶装置13は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、またはSCM(Storage Class Memory)等の大容量の不揮発性の記憶装置から構成され、NVMe(Non-Volatile Memory Express)、SAS(Serial Attached SCSI(Small Computer System Interface))、またはSATA(Serial ATA(Advanced Technology Attachment))等のインタフェースで接続され、IOホスト20からのリード要求やライト要求に応じてデータを読み書きするための記憶領域を提供する。
通信装置14は、ストレージノード10がストレージサービスネットワーク31を介してIOホスト20と通信を行うためのインタフェースであり、例えばファイバーチャネルカードやEthernetカード、InfiniBandカード、無線LANカードなどから構成される。通信装置14は、IOホスト20との通信時におけるプロトコル制御を行う。
通信装置15は、ストレージノード10がバックエンドネットワーク32を介して他のストレージノード10と通信を行うためのインタフェースであり、例えばファイバーチャネルカードやEthernetカード、InfiniBandカード、無線LANカードなどから構成される。通信装置15は、他のストレージノード10との通信時におけるプロトコル制御を行う。
図3は、メモリ12に格納されるプログラム及び情報の一例を示すブロック図である。各ストレージノード10のメモリ12には、図3に示すように、インストール処理部110、クラスタ制御部120、IO制御部130、及びタイムアウト管理用情報140が格納される。
インストール処理部110は、システムの初期設定(インストール)のためのインストール処理を行う。インストール処理部110は、インストール処理の最初に、インストール時処理用のタイムアウト値及び運用時処理用のタイムアウト値を設定するタイムアウト初期設定処理(図11)を実行する。
図3には、インストール処理部110の各部として、ネットワーク遅延確認部111、タイムアウト初期設定部112、及びIOホストタイムアウト判定部113が示されている。ネットワーク遅延確認部111は、タイムアウト初期設定処理において、ネットワークの遅延状況を確認するネットワーク遅延確認処理(図12)を実行する。タイムアウト初期設定部112は、タイムアウト初期設定処理において、インストール処理開始時のネットワーク遅延状況に基づいて、ストレージノード10における各種のインストール時処理のタイムアウト値を設定するインストール時タイムアウト値更新処理(図13)を実行する。また、タイムアウト初期設定部112は、タイムアウト初期設定処理において、インストール処理開始時のネットワーク遅延状況に基づいて、ストレージノード10における各種の運用時処理(例えばノード障害検出)のタイムアウト値を設定する運用時タイムアウト値更新処理(図14)を実行する。IOホストタイムアウト判定部113は、タイムアウト初期設定処理において、初期設定した運用時タイムアウト値がIOホストタイムアウト要件に該当していないかを判定するIOホストタイムアウト要件判定処理(図15)を実行する。IOホストタイムアウト要件は、IOホスト20からのIOの受け入れを停止するIOエラー(入出力エラー)の判定基準であり、要件に規定された時間を超えてIOホスト20との間でIOが停止した場合にIOエラーと判定される。
クラスタ制御部120は、クラスタ40全体を管理する。クラスタ制御部120は、運用中に、例えば定期的に、運用時処理用のタイムアウト値を更新するタイムアウト更新処理(図16)を実行する。
図3には、クラスタ制御部120の各部として、ネットワーク遅延確認部121、タイムアウト更新部122、及びノード監視部123が示されている。ネットワーク遅延確認部121は、タイムアウト更新処理において、ネットワークの遅延状況を確認するネットワーク遅延確認処理(図12)を実行する。タイムアウト更新部122は、タイムアウト更新処理において、運用中のストレージ稼働状況を確認するストレージ稼働状況確認処理(図17)を実行する。また、タイムアウト更新部122は、タイムアウト更新処理において、運用中のネットワーク遅延状況とストレージ稼働状況に基づいて、ストレージノード10における各種の運用時処理(例えばノード障害検出)のタイムアウト値を更新する運用時タイムアウト値更新処理(図14)を実行する。ノード監視部123は、タイムアウト更新処理とは別に、恒常的にノードの状態を監視するノード監視処理を実行する。ノード障害検出はノード監視処理に含まれる。また、上記の各処理の他にも、クラスタ制御部120は、IO制御部130がIOホスト20から受け取ったIO要求を、バックエンドネットワーク32を介して、対応するストレージノード10のクラスタ制御部120に転送したり、他のストレージノード10のクラスタ制御部120から転送されたIO要求を、IO制御部130に引き渡したりする処理も行う。
IO制御部130は、データのIO(入出力)を制御する。詳しくは、IO制御部130は、コンピュートノード(IOホスト20)からのデータのリード/ライトに関するリクエスト(IO要求)を受け付けると、当該リクエストに応じたIO処理を行うことにより、記憶装置13に対してデータのリード/ライトを行い、その応答をコンピュートノードに返す。
タイムアウト管理用情報140は、ストレージノード10における所定の各種処理(例えばノード障害検出)のタイムアウト値を決定または管理するための情報である。後述する図4に示すように、タイムアウト管理用情報140には複数の情報が含まれる。
また、クラスタ制御部120は、インストール処理部110のIOホストタイムアウト判定部113と同様に、IOホストタイムアウト要件判定処理を実行するIOホストタイムアウト判定部を備えるとしてもよい。
なお、図3では図示を省略したが、メモリ12には、シンプロビジョニング、階層制御、スナップショット、圧縮、重複排除、あるいはリモートコピー等、ストレージシステム1(またはストレージノード10)における各種のストレージ制御に必要な管理情報(例えば論物変換テーブル等)も保持される。
(2)タイムアウト管理用情報140
以下、メモリ12に保持されるタイムアウト管理用情報140について、詳しく説明する。
図4は、タイムアウト管理用情報140の内訳を説明する図である。タイムアウト管理用情報140は、図3に示した各部が処理を実行する際に、参照、更新または登録される情報である。図4に示すように、タイムアウト管理用情報140は、ネットワーク遅延情報141と、システム統計情報143及びストレージ処理情報144を含むストレージ稼働情報142と、負荷影響算出式145と、タイムアウト値算出式146と、インストール時タイムアウト値147と、運用時タイムアウト値148と、IOホストタイムアウト情報149と、を有する。
ネットワーク遅延情報141、システム統計情報143、ストレージ処理情報144、インストール時タイムアウト値147、運用時タイムアウト値148、及びIOホストタイムアウト情報149の詳細は、図5~図10に示す具体例を参照しながら後述する。
負荷影響算出式145及びタイムアウト値算出式146は、稼働中のシステムにおける測定値(現在値)に基づいて、現在の稼働環境に適合したタイムアウト値(後述する稼働環境適合値)を算出するために用いられる算出式である。
詳しく説明すると、負荷影響算出式145は、ネットワーク品質に影響を与える要素ごとに、当該要素の現在値がネットワーク品質(負荷)に与える影響の度合いを表すパラメータの値(基礎係数、基礎加算値)を算出する式である。本実施形態においてインストール処理部110及びクラスタ制御部120は、このような負荷影響算出式145を用いて各要素の現在値による負荷影響(基礎係数、基礎加算値)を算出することにより、現在のネットワーク品質を判断する。そして、負荷影響算出式145から算出されたパラメータ値は、タイムアウト値算出式146の入力となる。具体的な算出式の例示は省略するが、負荷影響算出式145は、システム設計時やインストール時の負荷テストによって予め決定されるとし、上記要素ごとに異なる算出式であってもよい。
なお、以下の説明において、負荷影響算出式145によって算出される基礎係数及び基礎加算値は、「基礎係数c」、「基礎加算値a」と表記されることがあり、さらに、算出に用いられた「要素」のID(後述する図5~図7で説明するID1411,1431,1441に相当)を付して表記されることで、どの要素に対する基礎係数及び基礎加算値であるかを区別できるようにしている。具体的には例えば、ID「1」が付与されるネットワーク遅延情報141の現在値について負荷影響算出式145による算出を行った場合、基礎係数c1と基礎加算値a1が得られる。
タイムアウト値算出式146は、タイムアウト値のデフォルト値からどのような稼働環境適合値に更新すればよいかを決定するための式であり、負荷影響算出式145で算出された情報(基礎係数c、基礎加算値a)を用いて、処理P(Pは任意)ごとに、現在の稼働環境に適合したタイムアウト値(後述する稼働環境適合値)を算出する式である。一例として、タイムアウト値算出式146は、以下の式1で表される。
Figure 2023045641000002
上記の式1において、「タイムアウトデフォルト値」は、デフォルト値として規定されるタイムアウト値であり、算出される「タイムアウト値」は、稼働環境適合値である。また、式1は一例であり、タイムアウト値算出式146には別の算出式が用いられてもよい。具体的には例えば、式1において「max(c1,…,c4)」となっているところを「c1×c2×c3×c4」としてもよいし、また例えば、式1において「max(a1,…,a4)」となっているところを「a1+a2+a3+a4」としてもよい。また、処理Pごとに、基礎係数及び基礎加算値を用意しても良いし、処理Pごとに、異なる算出式が用意されてもよい。
なお、本実施形態に係るストレージノード10において、タイムアウト管理用情報140は、メモリ12だけでなく記憶装置13内にも格納されるようにしてもよい。このような場合、例えば運用時タイムアウト値148が記憶装置13に格納されることで、クラスタ40が停止した場合でも、次回の起動時に運用時タイムアウト値148を記憶装置13から参照して利用することが可能となる。
図5は、ネットワーク遅延情報141の一例を示す図である。ネットワーク遅延情報141は、ネットワークの遅延の度合いを示すネットワーク遅延値に関する情報を格納する。図5に例示したネットワーク遅延情報141は、ID1411、値1412、及び現在値の負荷影響1413から構成される。
ID1411は、ネットワーク遅延情報141を識別するための識別子であって、本実施形態ではID「1」が付与されるとしている。
値1412は、ネットワーク遅延値のベース値と現在値とを示す情報である。値1412のベース値には、システム設計時に前提とされたネットワークにおける遅延値が固定値で設定される。また、値1412の現在値は、ネットワーク遅延確認部111,121がインストール時及び運用時に実行するネットワーク遅延確認処理において更新される。
現在値の負荷影響1413は、ネットワーク遅延値の現在値(値1412の現在値)による負荷影響を示すパラメータ値(基礎係数c1、基礎加算値a1)を保持する。上記各パラメータ値は、インストール時タイムアウト値147または運用時タイムアウト値148を算出する際に、負荷影響算出式145を用いて算出され、負荷影響1413に格納される。
図6は、システム統計情報143の一例を示す図である。システム統計情報143は、稼働中のストレージノード10における動的な稼働情報を格納するストレージ稼働情報142の1つであって、IO性能やパケット量といったシステムの統計情報を格納する。図6に例示したシステム統計情報143は、ID1431、値1432、及び現在値の負荷影響1433から構成される。なお、図6は一例であって、システム統計情報143は、IO性能及びパケット量以外の統計要素の情報を保持してもよい。IO性能は、IOホスト20から要求されたIOを処理する性能を表す指標であって、パケット量は、ストレージノード10におけるデータ通信量を表す指標である。
ID1431は、システム統計情報143が保持する各統計要素(IO性能、パケット量)の情報を識別するための識別子であって、本実施形態では、IO性能にID「2」が付与され、パケット量にID「3」が付与されるとしている。
値1432は、各統計要素のベース値と現在値とを示す情報である。値1432のベース値には、システム設計時に前提とされたIO性能及びパケット量が固定値で設定される。また、値1432の現在値は、クラスタ制御部120及びIO制御部130によって、システムの運用中に更新される。
現在値の負荷影響1433は、各統計要素の現在値(値1432の現在値)による負荷影響を示すパラメータ値(IO性能については基礎係数c2及び基礎加算値a2、パケット量については基礎係数c3及び基礎加算値c3)を保持する。上記各パラメータ値は、運用時タイムアウト値148を算出する際に、負荷影響算出式145を用いて算出され、負荷影響1433に格納される。
図7は、ストレージ処理情報144の一例を示す図である。ストレージ処理情報144は、ネットワーク負荷の増加が推定される所定のストレージ処理(以後、ネットワーク負荷が高いストレージ処理とも呼ぶ)の実行状況に関する情報を格納する。図7に例示したストレージ処理情報144は、ID1441、値1442、及び現在値の負荷影響1443から構成される。
ID1441は、ストレージ処理情報144を識別するための識別子であって、本実施形態ではID「4」が付与されるとしている。
値1442は、ストレージノード10で実行中のネットワーク負荷が比較的高いストレージ処理について、ベース値及び現在値を示す情報である。値1442のベース値には、初期の既定値として「処理なし」が設定される。また、値1442の現在値は、クラスタ制御部120によって、システムの運用中に適宜更新される。値1442の現在値に設定されるストレージ処理は、予め用意された複数の格納値のなかから、該当する処理が選択される。図7のストレージ処理情報144では、ネットワーク負荷が比較的高いストレージ処理として、「リビルド中」、「リバランス中」、「ログ回収中」、及び「アップデートファイル配布中」が格納値に用意され、さらに、上記ストレージ処理の何れも実行中ではない場合に選択される格納値として「処理なし」が用意されている。なお、図7に示した格納値は一例であり、図示した以外のストレージ処理が格納値に保持されてもよい。
現在値の負荷影響1443は、現在実行中のネットワーク負荷が高いストレージ処理(値1442の現在値)による負荷影響を示すパラメータ値(基礎係数c4、基礎加算値a4)を保持する。上記各パラメータ値は、運用時タイムアウト値148を算出する際に、負荷影響算出式145を用いて算出され、負荷影響1443に格納される。
図8は、インストール時タイムアウト値147の一例を示す図である。インストール時タイムアウト値147は、インストール時に実行される各種のインストール時処理のタイムアウト値を格納する。インストール時処理は、前述したインストール処理に含まれる処理と捉えてよく、具体的には例えば、各ストレージノードにファイルを配布する処理等が挙げられる。
インストール時タイムアウト値147は、格納対象とされるインストール時処理ごとに、デフォルト値と稼働環境適合値とを保持する。デフォルト値は、システム設計の段階で決定される、既定値としてのタイムアウト値であり、例えばネットワーク遅延情報141の値1412のベース値をネットワーク負荷の前提として決定される。なお、デフォルト値は、システムのアップデートやコマンド実行などに応じて、システムの運用途中で更新されてもよい。稼働環境適合値は、実際のシステム稼働環境に適合させたタイムアウト値である。稼働環境適合値は、ネットワーク遅延情報141及びストレージ稼働情報142に基づいて、タイムアウト初期設定部112によって決定される。したがって、すなわち、インストール時タイムアウト値147は、初期はデフォルト値が使用されるが、稼働環境適合値が算出された後はその最新の値が使用される。図8では、一例として、インストール時処理Aとインストール時処理Bにおけるタイムアウト値が示されているが、インストール時タイムアウト値147には、その他のインストール時処理について、それぞれのタイムアウト値が格納されてもよい。
図9は、運用時タイムアウト値148の一例を示す図である。運用時タイムアウト値148は、システム運用中に実行される各種の運用時処理のタイムアウト値を格納する。運用時処理は、図示した処理の他に、例えば、ストレージノード間で問い合わせを行う処理等が挙げられる。
運用時タイムアウト値148は、図8に示したインストール時タイムアウト値147と同様に、格納対象とする処理ごとに、デフォルト値と稼働環境適合値とを保持する。デフォルト値及び稼働環境適合値の詳細は、大部分が図8の説明の繰り返しとなるため省略する。但し、インストール時タイムアウト値147との相違点として、運用時タイムアウト値148の稼働環境適合値は、タイムアウト更新部122によって決定される。図9では、一例として、ノード障害検出、FO処理、及び運用時処理Cにおけるタイムアウト値が示されているが、運用時タイムアウト値148には、その他の運用時処理について、それぞれのタイムアウト値が格納されてもよい。なお、図9の「ノード障害検出」は、ノード障害を検出する処理であり、「FO処理」は、稼働系のシステムの稼働継続が困難となるノード障害等の障害が発生した場合に待機システムに切り替えるフェイルオーバー(FO)を行う処理である。本実施形態では、ノード障害が発生した場合、クラスタ40内の別のストレージノードが処理を引き継ぎ、フェイルオーバーを行う。
図10は、IOホストタイムアウト情報149の一例を示す図である。IOホストタイムアウト情報149は、IOホスト20からストレージノード10に対するIOの受け入れを停止するIOエラーの判定基準とする、IOのタイムアウト要件(本実施形態ではこれをIOホストタイムアウト要件と称する)の情報を格納する。IOホストタイムアウト要件は、例えば、インストール処理の開始時にユーザ(例えばストレージシステム1の管理者)がタイムアウトとする時間を入力し、インストール処理部110が、入力値をIOホストタイムアウト情報149に格納する。また、IOホストタイムアウト情報149は、運用途中でユーザからの入力に応じて変更されてもよい。
(3)処理
以下、本実施形態に係るストレージシステム1(ストレージノード10)において実行される、タイムアウト値の設定に関する処理について、インストール処理の最初に実行されるタイムアウト初期設定処理と、システムの運用中に定期的に実行されるタイムアウト更新処理とを詳しく説明する。
(3-1)タイムアウト初期設定処理
図11は、タイムアウト初期設定処理の処理手順例を示すフローチャートである。タイムアウト初期設定処理は、ストレージシステム1におけるシステムの初期設定(インストール)のために実行されるインストール処理において最初に実行される処理であって、図3に示したインストール処理部110の各部によって実行される。
図11によればまず、ネットワーク遅延確認部111が、稼働環境におけるネットワークの遅延状況を確認するネットワーク遅延確認処理を実行する(ステップS101)。詳細は図12を参照しながら後述するが、ネットワーク遅延確認処理においてネットワーク遅延確認部111は、ネットワーク遅延値の現在値を計測し、計測した現在値による負荷影響を算出し、これらの現在値及び負荷影響をネットワーク遅延情報141に格納する。
次に、タイムアウト初期設定部112が、インストール時タイムアウト値147を更新するインストール時タイムアウト値更新処理を実行する(ステップS102)。詳細は図13を参照しながら後述するが、インストール時タイムアウト値更新処理においてタイムアウト初期設定部112は、ステップS101で更新したネットワーク遅延情報141に格納された現在値の負荷影響に基づいて、システム稼働環境に適合させたインストール時タイムアウト値(稼働環境適合値)を算出し、算出結果でインストール時タイムアウト値147を更新する。
次に、タイムアウト初期設定部112が、運用時タイムアウト値148を更新する運用時タイムアウト値更新処理を実行する(ステップS103)。詳細は図14を参照しながら後述するが、運用時タイムアウト値更新処理においてタイムアウト初期設定部112は、ステップS101で更新したネットワーク遅延情報141、及びストレージ稼働情報142に格納された現在値の負荷影響に基づいて、システム稼働環境に適合させた運用時タイムアウト値(稼働環境適合値)を算出し、算出結果で運用時タイムアウト値148を更新する。
そして最後に、IOホストタイムアウト判定部113が、IOホストタイムアウト要件判定処理を実行し(ステップS104)、タイムアウト初期設定処理を終了する。詳細は図15を参照しながら後述するが、IOホストタイムアウト要件判定処理においてIOホストタイムアウト判定部113は、ステップS103で設定した稼働環境適合値を適用した場合のフェイルオーバー全体の処理時間(FO時間)とIOホストタイムアウト情報149に設定されたIOホストタイムアウト要件を比較判定することにより、ノード障害検出の誤検出に起因してIOエラーが発生し得る設定になっていないか、インストール処理時に事前に判定する。例えば、IOホストタイムアウトを短く設定し過ぎると、IOエラーが発生しやすくなる。
なお、上記のタイムアウト初期設定処理では、ステップS101で更新されたネットワーク遅延情報141(ネットワーク遅延値の現在値)に基づいて、ステップS102及びステップS103においてインストール時タイムアウト値及び運用時タイムアウト値が決定及び設定されるが、本実施形態では、タイムアウト初期設定処理の変形例として、ネットワーク遅延値の現在値だけでなく、記憶装置13におけるディスクアクセス性能等の他の確認要素を追加して、これらの確認要素に基づいてインストール時タイムアウト値及び運用時タイムアウト値を決定し設定するようにしてもよい。
図12は、ネットワーク遅延確認処理の処理手順例を示すフローチャートである。図12に示すネットワーク遅延確認処理は、図11のステップS101に相当する他、図16に後述するタイムアウト更新処理のステップS602の処理にも相当する。図11のステップS101の場合はネットワーク遅延確認部111によって実行され、図16のステップS602の場合はネットワーク遅延確認部121によって実行される。以下では、ネットワーク遅延確認部111を処理主体として、ネットワーク遅延確認処理の処理手順を説明する。
図12によればまず、ネットワーク遅延確認部111は、ネットワークの遅延の度合いを示すネットワーク遅延値を計測し(ステップS201)、計測されたネットワーク遅延値によってネットワーク遅延情報141の値1412の「現在値」を更新する。ネットワーク遅延値は、例えば、pingコマンドを対象のネットワークに送信したときに計測される遅延時間から得ることが出来る。図5のネットワーク遅延情報141の場合、「20ms」のネットワーク遅延値が計測されて、この値が値1412の「現在値」に格納されている。
次に、ネットワーク遅延確認部111は、ステップS202で更新したネットワーク遅延情報141におけるID1411「1」及び値1412の現在値「20」を、負荷影響算出式145に入力し、基礎係数及び基礎加算値を算出する(ステップS203)。そして、ネットワーク遅延確認部111は、ステップS203の算出結果によってネットワーク遅延情報141の現在値の負荷影響1413を更新し(ステップS204)、ネットワーク遅延確認処理を終了する。図5のネットワーク遅延情報141の場合、負荷影響算出式145から基礎係数c1「2」及び基礎加算値a1「0」の算出結果が得られ、これらの各値が現在値の負荷影響1413に格納されている。
図13は、インストール時タイムアウト値更新処理の処理手順例を示すフローチャートである。図13に示すインストール時タイムアウト値更新処理は、図11のステップS102の処理に相当し、タイムアウト初期設定部112によって実行される。
図13によればまず、タイムアウト初期設定部112は、ネットワーク遅延確認処理で更新されたネットワーク遅延情報141から、現在値の負荷影響1413の値(基礎係数c1「2」、基礎加算値a1「0」)を取得する(ステップS301)。
次に、タイムアウト初期設定部112は、インストール時タイムアウト値147の各列(すなわち、各インストール時処理)について、ステップS303~S304のループ処理を開始する(ステップS302)。
ステップS303では、タイムアウト初期設定部112は、ステップS301で取得した現在値の負荷影響1413の値を、ステップS302で選択した列に対応する処理のタイムアウト値算出式146に入力し、稼働環境適合値のタイムアウト値を算出する。そして、ステップS304では、タイムアウト初期設定部112は、ステップS303の算出結果をインストール時タイムアウト値147の稼働環境適合値に格納する。
ここで、前述した式1のタイムアウト値算出式146を用いて、図8のインストール時タイムアウト値147に示された「インストール時処理A」についてステップS303~S304の処理を具体的に説明する。
インストール時処理Aのデフォルト値は「5」であり、ステップS301で取得した基礎係数c1は「2」、基礎加算値a1は「0」である。したがって、ステップS303において、これらの値を式1のタイムアウト値算出式146に入力すると、「インストール時処理Aのタイムアウト値=インストール時処理Aのタイムアウトデフォルト値×max(2)+max(0)=5×2+0=10」と計算される。上記計算を補足すると、インストール時タイムアウト値更新処理が行われる時点では、他の基礎係数c2,c3,c4及び基礎加算値a2,a3,a4は、稼働前のため値を持っていない。また、デフォルト値を持っているとしても、インストール時タイムアウト値更新処理では、これらのパラメータ値は使用されない。
したがって、ステップS303における上記計算の結果、ステップS304では、インストール時タイムアウト値147のインストール時処理Aの稼働環境適合値に「10」が格納される。
なお、派生例として、ストレージノード10では、処理ごとの稼働環境適合値(タイムアウト値)について、値の許容範囲が予め定められるとしてもよい。この場合、許容範囲の最大値及び最小値を予め設定するようにし、例えば、図8のインストール時タイムアウト値147や図9の運用時タイムアウト値148の各列に、デフォルト値とは別に、最大値及び最小値を格納するようにしてもよい。そして、稼働環境適合値の許容範囲が定められているときに、ステップS303の算出結果が当該許容範囲に収まらない値であった場合には、ステップS304においてタイムアウト初期設定部112は、最大値または最小値のうち当該算出結果に近いほうの値を採用して、稼働環境適合値に格納する。このような派生例は、後述する図14のステップS405でも同様に適用可能であるが、そちらでは詳細な説明を省略する。
上記ステップS304の処理後は、タイムアウト初期設定部112は、インストール時処理Bについて同様に、ステップS303~S304の処理を行う。このように、インストール時タイムアウト値147の各列の全てについてステップS303~S304のループ処理を実行することにより、対象とする全てのインストール時処理について、稼働環境適合値のタイムアウト値を算出し、インストール時タイムアウト値147を更新することができる。そして、全ての列についてループ処理が完了すると、タイムアウト初期設定部112はインストール時タイムアウト値更新処理を終了する。
図14は、運用時タイムアウト値更新処理の処理手順例を示すフローチャートである。図14に示す運用時タイムアウト値更新処理は、図11のステップS103の処理に相当する他、図16に後述するタイムアウト更新処理のステップS604の処理にも相当する。図11のステップS103の場合はタイムアウト初期設定部112によって実行され、図16のステップS604の場合はタイムアウト更新部122によって実行される。以下では、タイムアウト初期設定部112を処理主体として、運用時タイムアウト値更新処理の処理手順を説明する。
図14によればまず、タイムアウト初期設定部112は、ネットワーク遅延情報141及びストレージ稼働情報142(システム統計情報143、ストレージ処理情報144)を参照し(ステップS401)、それぞれの情報に格納された現在値の負荷影響1413,1433,1443の値を取得する(ステップS402)。但し、タイムアウト初期設定部112によって実行される運用時タイムアウト値更新処理では、システムが稼働前であることから、ストレージ稼働情報142には現在値、及びその負荷影響に値が格納されておらず、値は取得されない(もしくはデフォルト値が設定されていても取得されない)。したがって、具体的には、図5のネットワーク遅延情報141の場合、ネットワーク遅延値について基礎係数c1「2」及び基礎加算値a1「0」が取得される。
次に、タイムアウト初期設定部112は、運用時タイムアウト値148の各列(すなわち、ノード障害検出やFO処理を含む各運用時処理)について、ステップS404~S405のループ処理を開始する(ステップS403)。
ステップS404では、タイムアウト初期設定部112は、ステップS402で取得した現在値の負荷影響1413,1433,1443の値を、ステップS403で選択した列に対応する処理のタイムアウト値算出式146に入力し、稼働環境適合値のタイムアウト値を算出する。そして、ステップS405では、タイムアウト初期設定部112は、ステップS403の算出結果を運用時タイムアウト値148の稼働環境適合値に格納する。なお、ステップS402で前述した通り、タイムアウト初期設定部112によって実行される運用時タイムアウト値更新処理では、ストレージ稼働情報142の現在値の負荷影響は取得されないため、ステップS404において実際は、現在値の負荷影響1413の値だけがタイムアウト値算出式146に入力される。つまり、タイムアウト初期設定の段階では、ネットワーク遅延情報を元に運用時タイムアウト値を算出する。
ここで、前述した式1のタイムアウト値算出式146を用いて、図9の運用時タイムアウト値148に示された「ノード障害検出」についてステップS404~S405の処理を具体的に説明する。まず、ノード障害検出のデフォルト値は「4」であり、ステップS402で取得した現在値の負荷影響1413の値は、基礎係数c1が「2」、基礎加算値a1が「0」である(図5の現在値の負荷影響1413の場合)。したがって、ステップS404において、これらの値を式1のタイムアウト値算出式146に入力すると、「ノード障害検出のタイムアウト値=ノード障害検出のタイムアウトデフォルト値×max(2)+max(0)=4×2+0=8」と計算される。上記計算を補足すると、タイムアウト初期設定処理のなかで運用時タイムアウト値更新処理が行われる時点では、他の基礎係数c2,c3,c4及び基礎加算値a2,a3,a4は、稼働前のため値を持っていない。また、デフォルト値を持っているとしても、この段階における運用時タイムアウト値更新処理では、これらのパラメータ値は使用されない。
したがって、ステップS404における上記計算の結果、ステップS405では、運用時タイムアウト値148のノード障害検出の稼働環境適合値に「8」が格納される。つまり、稼働環境では、ノード障害検出のタイムアウト値として「8」が利用される。なお、図13のステップS304の説明で述べた派生例と同様に、ステップS405においても、処理ごとの稼働環境適合値(タイムアウト値)に許容範囲が予め定められているとしてもよく、その場合、ステップS404の算出結果が当該許容範囲に収まらない場合は、最大値または最小値のうち当該算出結果に近いほうの値を採用して稼働環境適合値に格納すればよい。
そして、上記ステップS405の処理後、タイムアウト初期設定部112は、運用時タイムアウト値148で対象とされるその他の処理(例えばFO処理や運用時処理C)についても同様に、ステップS404~S405の処理を行うことにより、運用時タイムアウト値148で対象とする全ての運用時処理について、稼働環境適合値のタイムアウト値を算出し、運用時タイムアウト値148を更新することができる。そして、全ての列についてループ処理が完了すると、タイムアウト初期設定部112は運用時タイムアウト値更新処理を終了する。
図15は、IOホストタイムアウト要件判定処理の処理手順例を示すフローチャートである。図15に示すIOホストタイムアウト要件判定処理は、図11のステップS104の処理に相当し、IOホストタイムアウト判定部113によって実行される。
前述した通り、IOホストタイムアウト要件判定処理は、ノード障害検出の誤検出によってIOエラーが発生し得る設定になっていないかを、インストール処理時に事前に判定する処理である。ここでまず、ストレージシステム1におけるノード障害とIOエラーの関係について説明する。
ストレージシステム1において何れかのノード(ストレージノード10)でノード障害が発生してIOホスト20から当該ノードへのIOが停止すると、正常なストレージノード10のノード監視部123によって、ノード障害が検出される。ノード障害とみなすまでの時間を、ノード障害検出のタイムアウト値と称する。稼働系のノード障害が検出された場合、正常なストレージノード10のノード監視部123がフェイルオーバー処理(FO処理)を行うことにより、ノード障害が発生していないノードを使用する待機系への切り替えを行う。したがって、ノード障害の発生からフェイルオーバーの完了までに掛かるフェイルオーバー時間(FO時間)の最大時間は、ノード障害検出に設定されたタイムアウト値と、FO処理に設定されたタイムアウト値の合計値となる。なお、上記の一連のフェイルオーバーが完了するまで、言い換えればノード障害検出からFO処理が完了するまでの間、IOホスト20からのIOは停止したままである。
一方、ストレージシステム1には、一般的なストレージシステムの機能として、IOホスト20からのIOが停止した状態が所定要件を満たした場合にIOエラーと判定する機能が搭載されている。IOエラーを判定する要件は、IOホストタイムアウト情報149に設定されており、図9のIOホストタイムアウト情報149の場合は「30秒」と設定されている。したがって前段落の説明を考慮すると、あるストレージノード10においてノード障害が発生した場合、30秒以内に、ノード障害検出及びFO処理が完了しなければ、IOエラーと判定される。
ネットワーク負荷が高い環境の場合には、フェイルオーバー時間(FO時間)の最大時間が現在のIOホストタイムアウト要件を超えてしまうおそれがある。そこで、本実施形態では、IOホストタイムアウト要件判定処理を実行することにより、ストレージノード10の稼働環境に基づいて決定された、一連のフェイルオーバーに掛かるフェイルオーバー時間(FO時間)に許容される最大時間と、IOホストタイムアウト情報149とを比較し、現在のIOホストタイムアウト要件が適切であるかを判定する。
図15によればまず、IOホストタイムアウト判定部113は、運用時タイムアウト値148における「ノード障害検出」及び「FO処理」のタイムアウト値(稼働環境適合値)の合計が、IOホストタイムアウト情報149に格納されたIOホストタイムアウト要件を超えるか否かを判定する(ステップS501)。ステップS501においてノード障害検出及びFO処理の合計がIOホストタイムアウト要件を超えない場合は(ステップS501のNO)、特段の処理が必要ないため、IOホストタイムアウト判定部113はIOホストタイムアウト要件判定処理を終了する。一方、ステップS501においてノード障害検出及びFO処理の合計がIOホストタイムアウト要件を超える場合は(ステップS501のYES)、ステップS502に進む。
ステップS501の処理は、言い換えれば、稼働環境のタイムアウト値とIOホストタイムアウト要件とを比較する処理である。なお、本例では、稼働環境のタイムアウト値として、ノード障害検出及びFO処理を挙げているが、これは一例に過ぎず、これらの処理の他にもフェイルオーバーに関する一連の処理のなかでIOを停止させる要素を有する処理が存在する場合には、適宜、当該処理のタイムアウト値も稼働環境のタイムアウト値に追加して、ステップS501の比較判定を行うことが好ましい。
具体値を用いてステップS501の処理を確認すると、図9の運用時タイムアウト値148において、ノード障害検出の稼働環境適合値は「8秒」であり、FO処理の稼働環境適合値は「30秒」であるから、その合計時間は38秒となる。一方、図10のIOホストタイムアウト情報149において、IOホストタイムアウト要件は「30秒」である。したがってこの場合、「ノード障害検出」及び「FO処理」のタイムアウト値の合計はIOホストタイムアウト要件を超えるため、ステップS502の処理に進む。
ステップS502では、IOホストタイムアウト判定部113は、IOホストタイムアウト要件の変更、またはストレージシステム1における機器構成の変更を推奨する通知を、管理画面に表示する等によってユーザに提示する。
IOホストタイムアウト要件の変更を推奨する場合には、例えば、ステップS501の比較結果を考慮して、IOホストタイムアウト要件のタイムアウト値を現在の「30秒」から「40秒」に延ばすことを提案する。そして、ユーザからIOホストタイムアウト要件のタイムアウト値を変更する入力が行われた場合には、IOホストタイムアウト判定部113は、IOホストタイムアウト情報149の設定値を更新する。また、ユーザはIOホスト20内部で保持するタイムアウト値も同様に更新する。
以上のようにタイムアウト初期設定処理を実行することにより、インストール処理部110は、各種のインストール処理におけるタイムアウト値を、現在のネットワーク品質に応じて、現在のシステムの稼働環境に適合する値に変更することができ、インストール処理が失敗することを防ぐことができる。また、タイムアウト初期設定処理を実行することにより、インストール処理部110は、各種の運用時処理におけるタイムアウト値を、現在のネットワーク品質に応じて、現在のシステムの稼働環境に適合する値に変更することができる。その結果、ストレージシステム1は、ノード障害検出のタイムアウト値が短すぎることによるノード障害の誤検出や、IOホストタイムアウト値が短すぎることによるIOエラー発生を防ぐことができる。
(3-2)タイムアウト更新処理
図16は、タイムアウト更新処理の処理手順例を示すフローチャートである。タイムアウト更新処理は、ストレージシステム1のシステム運用時に定期的に実行される処理であって、図3に示したクラスタ制御部120の各部によって実行される。なお、本実施形態の変形例として、タイムアウト更新処理は、ストレージシステム1のシステム運用中に、所定の実行契機が満たされた場合に実行されるとしてもよい。所定の実行契機とは例えば、ストレージ稼働情報142に格納される情報の大きな変化が想定される状況であり、具体的には例えば、リビルドやリバランスのようなネットワーク負荷が高い処理の実行が開始されたとき、及びその終了後を所定の実行契機とすることが考えられる。他の例として、例えば、処理エラーが発生した時を所定の実行契機とすることも考えられる。
図16によれば、クラスタ制御部120が、所定の一定時間のスリープを挟んで、ステップS602~S604の処理を以下の各部に繰り返し実行させる(ステップS601)。
ステップS602では、ネットワーク遅延確認部121が、稼働環境におけるネットワークの遅延状況を確認するネットワーク遅延確認処理を実行する。ステップS602のネットワーク遅延確認処理は、タイムアウト初期設定処理のネットワーク遅延確認処理(図11のステップS101)と同様であり、その詳細については図12を参照して説明済みであるため、説明を省略する。
次のステップS603では、タイムアウト更新部122が、ストレージノード10の現在の稼働状況を確認するストレージ稼働状況確認処理を実行する。詳細は図17を参照しながら後述するが、ストレージ稼働状況確認処理においてタイムアウト更新部122は、システム統計情報及び実行中のストレージ処理の現在値を取得し、それぞれの現在値による負荷影響を算出し、これらの現在値及び負荷影響をシステム統計情報143及びストレージ処理情報144に格納する。
次のステップS604では、タイムアウト更新部122が、運用時タイムアウト値148を更新する運用時タイムアウト値更新処理を実行する。ステップS604の運用時タイムアウト値更新処理は、タイムアウト初期設定処理の運用時タイムアウト値更新処理(図11のステップS103)と同様であり、その詳細については図14を参照して説明済みであるため、説明を省略する。但し、タイムアウト初期設定処理の運用時タイムアウト値更新処理とは異なる点として、運用時には、ストレージ稼働情報142に現在値及びその負荷影響が格納済みであるため、ステップS401~S402の処理において、ネットワーク遅延情報141及びストレージ稼働情報142(システム統計情報143、ストレージ処理情報144)が参照され、各情報から現在値の負荷影響1413,1433,1443の値が取得される。
以上のようにして、クラスタ制御部120の各部は、ステップS602~S604の処理を定期的に繰り返し実行することで、各種の運用時処理のタイムアウト値をシステムの稼働環境に応じた稼働環境適合値に更新することができる。この結果、例えばネットワーク負荷が低いときには、ノード障害検出などの各種処理のタイムアウト値が短縮されることで、ノード障害の誤検出等を避けながら、フェイルオーバー時間を短縮するように調整できる。また例えば、ネットワーク負荷が高いときには、ノード障害検出などの各種処理のタイムアウト値が増加されることで、ノード障害の誤検出等を避けながら、適切なフェイルオーバー時間に調整することができる。
図17は、ストレージ稼働状況確認処理の処理手順例を示すフローチャートである。図17に示すストレージ稼働状況確認処理は、図16のステップS603の処理に相当し、タイムアウト更新部122によって実行される。
図17によれば、タイムアウト更新部122は、ストレージ稼働情報142が保持する複数の情報(具体的には、システム統計情報143が保持する「IO性能」や「パケット量」等の統計要素、及びストレージ処理情報144が保持する「ストレージ処理情報」)のうちから1つを選択し、ステップS702~S704の処理を開始する(ステップS701)。ステップS701における選択対象は、IDで識別可能な情報であり、例えば図6,図7を参照した場合、ID「2」が付与された「IO性能」、ID「3」が付与された「パケット量」、及びID「4」が付与された「ストレージ処理情報」に相当する。
ステップS702では、タイムアウト更新部122は、システム統計情報143またはストレージ処理情報144を参照し、ステップS701で選択した対象の現在値を取得する。例えば、ステップS701においてID「2」の「IO性能」を選択した場合、タイムアウト更新部122は、ステップS702においてシステム統計情報143の値1432からIO性能の現在値を取得する。また例えば、ステップS701においてID「4」の「ストレージ処理情報」を選択した場合、タイムアウト更新部122は、ステップS702においてストレージ処理情報144の値1442からストレージ処理情報の現在値を取得する。
次いで、ステップS703では、タイムアウト更新部122は、ステップS702で取得したIDと現在値を負荷影響算出式145に入力し、基礎係数及び基礎加算値を算出する。例えば、ステップS701においてID「2」の「IO性能」を選択した場合、タイムアウト更新部122は、ステップS703において負荷影響算出式145を用いて、基礎係数c2及び基礎加算値a2を算出する。また例えば、ステップS701においてID「4」の「ストレージ処理情報」を選択した場合、タイムアウト更新部122は、ステップS703において負荷影響算出式145を用いて、基礎係数c4及び基礎加算値a4を算出する。
次いで、ステップS704では、タイムアウト更新部122は、ステップS701で選択した対象のIDを保持する情報(システム統計情報143またはストレージ処理情報144)の現在値の負荷影響を、ステップS703の算出結果で更新する。例えば、ステップS701においてID「2」の「IO性能」を選択した場合、ステップS704において、タイムアウト更新部122は、システム統計情報143の現在値の負荷影響1433におけるIO性能の基礎係数及び基礎加算値を、ステップS703で算出した基礎係数c2及び基礎加算値a2で更新する。また例えば、ステップS701においてID「4」の「ストレージ処理情報」を選択した場合、ステップS704において、タイムアウト更新部122は、ストレージ処理情報144の現在値の負荷影響1443におけるIO性能の基礎係数及び基礎加算値を、ステップS703で算出した基礎係数c4及び基礎加算値a4で更新する。
ステップS704の終了後、タイムアウト更新部122は、ステップS701に戻り、次の対象を1つ選択してステップS702~S704の処理を繰り返す。そして、全ての対象に対してステップS702~S704の処理が完了すると、タイムアウト更新部122は、ストレージ稼働状況確認処理を終了する。
図18は、タイムアウト値の稼働環境適合値を決定する方法を説明するイメージ図である。上述したように、本実施形態では、インストール時に実行されるタイムアウト初期設定処理においてインストール時タイムアウト値及び運用時タイムアウト値を決定し、運用時に定期的に実行されるタイムアウト更新処理において運用時タイムアウト値を更新する。そして、これらの各タイムアウト値は、システムの稼働環境を示す情報の現在値に基づいて、稼働環境に応じた稼働環境適合値として算出される。図18には、このようなタイムアウト値の稼働環境適合値の決定方法が図式化されている。なお、図示された各段階の詳細は、図13や図14で説明済みであるため、繰り返しの説明を省略する。
図18に示したように、本実施形態でタイムアウト値を算出する場合には、まず、ネットワーク遅延確認部111,121が、ネットワーク遅延情報141のIDと現在値を入力として負荷影響算出式145から基礎係数c1及び基礎加算値a1を算出する。また、タイムアウト更新部122は、ストレージシステムの稼働状況を示す情報(システム統計情報143、ストレージ処理情報144)ごとに、各情報のIDと現在値を入力として負荷影響算出式145から基礎係数ci及び基礎加算値aiを算出する(iはID値)。次に、タイムアウト初期設定部112またはタイムアウト更新部122が、負荷影響算出式145から算出された基礎係数ci及び基礎加算値aiを入力として、処理ごとのタイムアウト値算出式146から、当該処理のタイムアウト値の稼働環境適合値を算出することができる。
(3-3)運用時タイムアウト値の具体的な更新例
以下では、運用時のタイムアウト更新処理によってタイムアウト値がどのように更新されるかを、運用中の具体的な状況例(第1のケース、第2のケース)に沿って確認する。
(3-3-1)第1のケース
第1のケースは、運用中にIO性能(応答時間)が、ベース値の1倍から2倍に延び、その後1倍に変化したとする。第1のケースは、例えば、運用中にネットワーク負荷の増加やアクセスの集中などによって一時的にIO性能が悪化し、その後、通常値に戻ったという状況を表している。なお、第1のケースでは、実行中のネットワーク負荷が高いストレージ処理は存在せず、ストレージ処理情報144の現在値には「処理なし」が格納されているとする。また、ストレージ処理情報144の現在値が「処理なし」である場合、その現在値から算出される負荷影響は、基礎係数c4「1」及び基礎加算値a4「0」であるとする。
第1のケースにおいて、まず、IO性能がベース値の1倍から2倍になったときに図16のタイムアウト更新処理が実行されたとする。なお、本説明では、IO性能がベース値の1倍から2倍になったときのタイムアウト値の変化を明確にするために、IO性能だけが変化し、その他のメトリック(測定値)には変化がないとするが、実際には、IO性能が変化した場合には、他のメトリックにも変化が生じ得ると考えてよい。
このとき、ステップS602のネットワーク遅延確認処理(詳細は図12参照)は、以下のように進行する。
ステップS201において、pingコマンドを用いて「10ms」のネットワーク遅延値が計測されたとすると、ステップS202では、ネットワーク遅延情報141の現在値が「10」に更新される。次に、ステップS203において、ネットワーク遅延情報141のID「1」と現在値「10」が、ネットワーク遅延情報の負荷影響算出式145に入力されて、基礎係数c1「1」、基礎加算値a1「0」が算出される。そしてステップS204では、ステップS203の算出結果がネットワーク遅延情報141の現在値の負荷影響1413に格納される。
次に、ステップS603のストレージ稼働状況確認処理(詳細は図17参照)は、以下のように進行する。
ステップS701において「IO性能」が選択された場合、ステップS702では、システム統計情報143からIO性能のID「2」と現在値「10(ベース値の2倍の値)」が取得される。ステップS703ではこれらの値を負荷影響算出式145に入力して、基礎係数c2「1.5」及び基礎加算値a2「1」が算出される。そしてステップS704では、ステップS703の算出結果がシステム統計情報143のIO性能の現在値の負荷影響1433に格納される。
同様に、ステップS701において「パケット量」が選択された場合は、システム統計情報143から取得されたID「3」とパケット量の現在値「1000」を入力として、負荷影響算出式145から基礎係数c3「1」及び基礎加算値a3「0」が算出され(ステップS703)、これらの算出結果がシステム統計情報143のパケット量の現在の負荷影響1433に格納される(ステップS704)。
また同様に、ステップS701において「ストレージ処理情報」が選択された場合は、ストレージ処理情報144から取得されたID「4」とストレージ処理情報の現在値「処理なし」を入力として、負荷影響算出式145から基礎係数c4「1」及び基礎加算値a4「0」が算出され(ステップS703)、これらの算出結果がストレージ処理情報144の現在の負荷影響1443に格納される(ステップS704)。
次に、ステップS604の運用時タイムアウト値更新処理(詳細は図14参照)は、以下のように進行する。
ステップS401~S402では、ネットワーク遅延情報141及びストレージ稼働情報142(システム統計情報143、ストレージ処理情報144)から、現在値の負荷影響を取得する。各情報から取得される負荷影響の具体値は、(基礎係数,基礎加算値)の形式で表すと、ネットワーク遅延情報は(1,0)、IO性能は(1.5,1)、パケット量は(1,0)、ストレージ処理情報は(1,0)となる。
そしてステップS403~S405では、運用時タイムアウト値148でタイムアウト値を保持する各処理(図9の例では、ノード障害検出、FO処理、運用時処理C)について、ステップS402で取得した負荷影響を各処理のタイムアウト値算出式146に入力することにより、各処理のタイムアウト値を算出し、運用時タイムアウト値148の稼働環境適合値を更新する。具体的には、ノード障害検出のタイムアウト値は、「ノード障害検出のタイムアウト値=ノード障害検出のタイムアウトデフォルト値×max(1, 1.5, 1, 1)+max(0, 1, 0, 0)=4×1.5+1=7」と計算されることから、ノード障害検出の稼働環境適合値には「7」が格納される。同様にして、FO処理についてタイムアウト値を計算した結果は「15×1.5+1=23.5」となり、FO処理の稼働環境適合値には「23.5」が格納される。また運用時処理Cについてタイムアウト値を計算した結果は「10×1.5+1=16」となり、運用時処理Cの稼働環境適合値には「16」が格納される。なお、上記の算出結果は、全て予め設定された稼働環境適合値の許容範囲に収まっているとする。
以上のように、第1のケースにおいてIO性能(応答時間)がベース値の1倍から2倍になったとき、クラスタ制御部120は、運用時タイムアウト値148で保持される各種の運用時処理(ノード障害検出、FO処理、運用時処理C)の稼働環境適合値を、何れもデフォルト値より大きい値に決定することができる。すなわち、運用中にネットワーク負荷の増加やアクセスの集中などによって一時的にIO性能が悪化したときには、クラスタ制御部120は、各種の運用時処理のタイムアウト値を延長することができる。これにより、タイムアウト値が短いことに起因する各種障害の誤検出を防ぐことができる。
次に、第1のケースにおいて、IO性能がベース値の2倍から1倍になったときにタイムアウト更新処理が実行されたとする。なお、本説明では、IO性能がベース値の2倍から1倍になったときのタイムアウト値の変化を明確にするために、IO性能だけが変化し、その他のメトリック(測定値)には変化がないとするが、実際には、IO性能が変化した場合には、他のメトリックにも変化が生じ得ると考えてよい。
このとき、図16に示したように、まずはステップS602でネットワーク遅延確認処理(詳細は図12参照)が実行される。この詳細は、IO性能がベース値の1倍から2倍になったときと同様であることから省略するが、ネットワーク遅延値が変わっていないとすると、ネットワーク遅延情報141において、現在値は「10」となり、現在値の負荷影響1413は、基礎係数c1が「1」、基礎加算値a1が「0」となる。
次に、ステップS603でストレージ稼働状況確認処理(詳細は図17参照)が実行される。ストレージ稼働状況確認処理は、具体的には以下のように進行する。
ステップS701において「IO性能」が選択された場合、ステップS702では、システム統計情報143からIO性能のID「2」と現在値「5(ベース値の1倍の値)」が取得される。ステップS703ではこれらの値を負荷影響算出式145に入力して、基礎係数c2「1」及び基礎加算値a2「0」が算出される。そしてステップS704では、ステップS703の算出結果がシステム統計情報143のIO性能の現在値の負荷影響1433に格納される。
なお、「パケット量」及び「ストレージ処理情報」については稼働環境の変化がないと仮定すれば、これらに対するストレージ稼働状況確認処理の処理結果は、前述したIO性能がベース値の1倍から2倍になったときと同じとなる。すなわち、ステップS701において「パケット量」が選択された場合には、システム統計情報143のパケット量の現在値の負荷影響1433に基礎係数c3「1」及び基礎加算値a3「0」が格納され、ステップS701において「ストレージ処理情報」が選択された場合には、ストレージ処理情報144の現在の負荷影響1443に基礎係数c4「1」及び基礎加算値a4「0」が格納される。
次に、ステップS604で運用時タイムアウト値更新処理(詳細は図14参照)が実行される。運用時タイムアウト値更新処理は、具体的には以下のように進行する。
ステップS401~S402では、ネットワーク遅延情報141及びストレージ稼働情報142(システム統計情報143、ストレージ処理情報144)から、現在値の負荷影響を取得する。各情報から取得される負荷影響の具体値は、(基礎係数,基礎加算値)の形式で表すと、ネットワーク遅延情報は(1,0)、IO性能は(1,0)、パケット量は(1,0)、ストレージ処理情報は(1,0)となる。前述したIO性能がベース値の1倍から2倍になったときと比較すると、IO性能が(1.5,1)から(1,0)になっている点が異なる。
そしてステップS403~S405では、運用時タイムアウト値148でタイムアウト値を保持する各処理(図9の例では、ノード障害検出、FO処理、運用時処理C)について、ステップS402で取得した負荷影響を各処理のタイムアウト値算出式146に入力することにより、各処理のタイムアウト値を算出し、運用時タイムアウト値148の稼働環境適合値を更新する。具体的には、ノード障害検出のタイムアウト値は、「ノード障害検出のタイムアウト値=ノード障害検出のタイムアウトデフォルト値×max(1, 1, 1, 1)+max(0, 0, 0, 0)=4×1+0=4」と計算されることから、ノード障害検出の稼働環境適合値には「4」が格納される。同様にして、FO処理についてタイムアウト値を計算した結果は「15×1+0=15」となり、FO処理の稼働環境適合値には「15」が格納される。また運用時処理Cについてタイムアウト値を計算した結果は「10×1+0=10」となり、運用時処理Cの稼働環境適合値には「10」が格納される。なお、上記の算出結果は、全て予め設定された稼働環境適合値の許容範囲に収まっているとする。
以上のように、第1のケースにおいてIO性能(応答時間)がベース値の2倍から1倍に戻ったとき、クラスタ制御部120は、運用時タイムアウト値148で保持される各種の運用時処理(ノード障害検出、FO処理、運用時処理C)の稼働環境適合値を、何れもデフォルト値と同じ値に決定することができる。すなわち、運用中にネットワーク負荷の増加やアクセスの集中などが解消してIO性能が向上したときには、クラスタ制御部120は、各種の運用時処理のタイムアウト値を短縮することができる。これにより、タイムアウト値が長いことに起因する障害検出の遅延を防ぐことができる。したがって、ノード障害検出が遅延しないため、フェイルオーバー時間の長期化を防ぐことができる。
(3-3-2)第2のケース
第2のケースは、運用中に、実行中のネットワーク負荷が高いストレージ処理が、「処理なし」から「リビルド中」になり、その後「処理なし」に変化したとする。第2のケースは、運用中にリビルドが実行され、その後終了したという状況を表している。
なお、本説明では、ストレージ処理の変化がタイムアウト値に与える影響を明確にするために、実行中のストレージ処理が「リビルド中」に遷移したときには「パケット量」が「1500KB/s」に増加するとし、これ以外にはネットワーク遅延情報141及びストレージ稼働情報142におけるメトリック(測定値)には変化がないとするが、実際には、実行中のストレージ処理が変化した場合には、他のメトリックにも変化が生じ得ると考えてよい。また、「パケット量」の現在値が「1500」の場合、負荷影響算出式145からは、基礎係数c3「1.5」及び基礎加算値a3「1」が算出されるとし、「ストレージ処理情報」の現在値が「リビルド中」の場合、負荷影響算出式145からは、基礎係数c4「1.5」及び基礎加算値a4「2」が算出されるとする。
第2のケースにおいては、実行中のストレージ処理が「リビルド中」に遷移したときと、その後に「処理なし」に遷移したときに、それぞれ図16のタイムアウト更新処理が実行されたとする。なお、タイムアウト更新処理における処理進行の概要は、第1のケースで説明したことの繰り返しになるため、これを省略し、第1のケースとは相違する具体値を中心に説明する。
以上を踏まえると、第2のケースにおいて実行中のストレージ処理が「リビルド中」であるときのタイムアウト更新処理は、以下のように進行する。
まず、ステップS602のネットワーク遅延確認処理(詳細は図12参照)では、ネットワーク遅延情報141に対して、現在値に「10」が格納され、現在値の負荷影響1413に基礎係数c1「1」及び基礎加算値a1が「0」が格納される。
次に、ステップS603のストレージ稼働状況確認処理(詳細は図17参照)は、以下のように進行する。
ステップS701において「IO性能」が選択された場合、システム統計情報143からIO性能のID「2」と現在値「5」が取得されることから、負荷影響算出式145から基礎係数c2「1」及び基礎加算値a2「0」が算出され、システム統計情報143のIO性能の現在値の負荷影響1433に格納される。また、ステップS701において「パケット量」が選択された場合、システム統計情報143からパケット量のID「3」と現在値「1500」が取得されることから、負荷影響算出式145から基礎係数c3「1.5」及び基礎加算値a3「1」が算出され、システム統計情報143のパケット量の現在値の負荷影響1433に格納される。前述したように、本説明では、リビルド中のパケット量は1500KB/sに増加していると仮定している。また、ステップS701において「ストレージ処理情報」が選択された場合、ストレージ処理情報144からストレージ処理情報のID「4」と現在値「リビルド中」が取得されることから、負荷影響算出式145から基礎係数c4「1.5」及び基礎加算値a4「2」が算出され、ストレージ処理情報144の現在の負荷影響1443に格納される。
次に、ステップS604の運用時タイムアウト値更新処理(詳細は図14参照)は、以下のように進行する。
ステップS401~S402では、ネットワーク遅延情報141及びストレージ稼働情報142(システム統計情報143、ストレージ処理情報144)から、現在値の負荷影響を取得する。各情報から取得される負荷影響の具体値は、(基礎係数,基礎加算値)の形式で表すと、ネットワーク遅延情報は(1,0)、IO性能は(1,0)、パケット量は(1.5,1)、ストレージ処理情報は(1.5,2)となる。
そしてステップS403~S405では、運用時タイムアウト値148でタイムアウト値を保持する各処理(図9の例では、ノード障害検出、FO処理、運用時処理C)について、各処理のタイムアウト値算出式146からタイムアウト値を算出し、運用時タイムアウト値148の稼働環境適合値を更新する。具体的には、ノード障害検出のタイムアウト値は、「ノード障害検出のタイムアウト値=ノード障害検出のタイムアウトデフォルト値×max(1, 1, 1.5, 1)+max(0, 0, 1, 2)=4×1.5+2=8」と計算されることから、ノード障害検出の稼働環境適合値には「8」が格納される。同様にして、FO処理についてタイムアウト値を計算した結果は「15×1.5+2=24.5」となり、FO処理の稼働環境適合値には「24.5」が格納される。また運用時処理Cについてタイムアウト値を計算した結果は「10×1.5+2=17」となり、運用時処理Cの稼働環境適合値には「17」が格納される。なお、上記の算出結果は、全て予め設定された稼働環境適合値の許容範囲に収まっているとする。
以上のように、第2のケースにおいてリビルドが実行中となったとき、クラスタ制御部120は、運用時タイムアウト値148で保持される各種の運用時処理(ノード障害検出、FO処理、運用時処理C)の稼働環境適合値を、何れもデフォルト値より大きい値に決定することができる。すなわち、運用中に、ネットワーク負荷が高いストレージ処理が実行されてネットワーク品質が悪化しているときは、クラスタ制御部120は、各種の運用時処理のタイムアウト値を延長することができる。これにより、タイムアウト値が短いことに起因する各種障害の誤検出を防ぐことができる。
次に、第2のケースにおいて実行中のストレージ処理が「リビルド中」から「処理なし」に遷移した後のタイムアウト更新処理は、以下のように進行する。
まず、ステップS602のネットワーク遅延確認処理(詳細は図12参照)では、ネットワーク遅延情報141に対して、現在値に「10」が格納され、現在値の負荷影響1413に基礎係数c1「1」及び基礎加算値a1が「0」が格納される。
次に、ステップS603のストレージ稼働状況確認処理(詳細は図17参照)は、以下のように進行する。
ステップS701において「IO性能」が選択された場合、システム統計情報143からIO性能のID「2」と現在値「5」が取得されることから、負荷影響算出式145から基礎係数c2「1」及び基礎加算値a2「0」が算出され、システム統計情報143のIO性能の現在値の負荷影響1433に格納される。また、ステップS701において「パケット量」が選択された場合、システム統計情報143からパケット量のID「3」と現在値「1000」が取得されることから、負荷影響算出式145から基礎係数c3「1」及び基礎加算値a3「0」が算出され、システム統計情報143のパケット量の現在値の負荷影響1433に格納される。また、ステップS701において「ストレージ処理情報」が選択された場合、ストレージ処理情報144からストレージ処理情報のID「4」と現在値「処理なし」が取得されることから、負荷影響算出式145から基礎係数c4「1」及び基礎加算値a4「0」が算出され、ストレージ処理情報144の現在の負荷影響1443に格納される。
次に、ステップS604の運用時タイムアウト値更新処理(詳細は図14参照)は、以下のように進行する。
ステップS401~S402では、ネットワーク遅延情報141及びストレージ稼働情報142(システム統計情報143、ストレージ処理情報144)から、現在値の負荷影響を取得する。各情報から取得される負荷影響の具体値は、(基礎係数,基礎加算値)の形式で表すと、ネットワーク遅延情報は(1,0)、IO性能は(1,0)、パケット量は(1,0)、ストレージ処理情報は(1,0)となる。
そしてステップS403~S405では、運用時タイムアウト値148でタイムアウト値を保持する各処理(図9の例では、ノード障害検出、FO処理、運用時処理C)について、各処理のタイムアウト値算出式146からタイムアウト値を算出し、運用時タイムアウト値148の稼働環境適合値を更新する。具体的には、ノード障害検出のタイムアウト値は、「ノード障害検出のタイムアウト値=ノード障害検出のタイムアウトデフォルト値×max(1, 1, 1, 1)+max(0, 0, 0, 0)=4×1+0=4」と計算されることから、ノード障害検出の稼働環境適合値には「4」が格納される。同様にして、FO処理についてタイムアウト値を計算した結果は「15×1+0=15」となり、FO処理の稼働環境適合値には「15」が格納される。また運用時処理Cについてタイムアウト値を計算した結果は「10×1+0=10」となり、運用時処理Cの稼働環境適合値には「10」が格納される。なお、上記の算出結果は、全て予め設定された稼働環境適合値の許容範囲に収まっているとする。
以上のように、第2のケースにおいてリビルドが完了しネットワーク負荷が高いストレージ処理が実行されていないとなったときには、クラスタ制御部120は、運用時タイムアウト値148で保持される各種の運用時処理(ノード障害検出、FO処理、運用時処理C)の稼働環境適合値を、何れもデフォルト値と同じ値に決定することができる。すなわち、運用中に、ネットワーク負荷が高いストレージ処理の処理が完了してネットワーク品質が改善したときは、クラスタ制御部120は、各種の運用時処理のタイムアウト値を短縮することができる。これにより、タイムアウト値が長いことに起因する障害検出の遅延を防ぐことができる。したがって、ノード障害検出が遅延しないため、フェイルオーバー時間の長期化を防ぐことができる。
以上、第1のケース及び第2のケースにおけるタイムアウト値の変化からも分かるように、本実施形態に係るストレージシステム1において、クラスタ制御部120は、ネットワーク遅延情報141及びストレージ稼働情報142から直接的あるいは間接的に負荷状況を判断し、ネットワーク品質に応じて運用時の各種処理(例えばノード障害検出)のタイムアウト値を延長したり短縮したりすることができる。
かくして、本実施形態に係るストレージシステム1によれば、インストール時処理または運用時処理に含まれる所定の各種処理におけるタイムアウト値を、ネットワーク品質に応じて稼働環境に適合する値に更新して設定することにより、ネットワーク負荷が高いときにタイムアウト値が十分でないことでノード障害が誤検出されることを防止できるとともに、ノード障害発生時のフェイルオーバー完了までのIO停止時間(FO時間)が過剰に長期化することを防止し、ネットワーク負荷が低いときには上記FO時間を短縮することができる。
本実施形態に係るストレージシステム1は、以上のような効果が得られることから、特に、下記のようなストレージシステムに適用して好適なものである。
例えば、パブリッククラウド環境では、リソースの選択肢が多く、ネットワーク品質が多様であるという特徴や、他の稼働システムの影響を受けるためにネットワーク品質が安定しないという特徴がある。本発明は、ネットワーク品質の変化に応じて柔軟に、各処理のタイムアウト値を稼働環境に適合する値に更新することができるため、上記の特徴を有するパブリッククラウド環境で運用されるストレージシステムに適用する場合に、より効果的である。
また例えば、オンプレミス環境とパブリッククラウド環境とでは、ネットワーク品質が異なるため、両者の間で環境を移行する際に、本発明は特に有効である。
また、上記例以外にも、ネットワーク負荷が途中で変動するような環境で運用されるストレージシステムに適用する場合に、本発明は特に有効である。また、SDSに関わらずストレージ専用機等、ストレージ装置の種類によらず、本発明は有効である。
1 ストレージシステム
10 ストレージノード
11 CPU
12 メモリ
13 記憶装置
14,15 通信装置
16 内部ネットワーク
20 IOホスト
31 ストレージサービスネットワーク
32 バックエンドネットワーク
40 クラスタ
110 インストール処理部
111 ネットワーク遅延確認部
112 タイムアウト初期設定部
113 IOホストタイムアウト判定部
120 クラスタ制御部
121 ネットワーク遅延確認部
122 タイムアウト更新部
123 ノード監視部
130 IO制御部
140 タイムアウト管理用情報
141 ネットワーク遅延情報
142 ストレージ稼働情報
143 システム統計情報
144 ストレージ処理情報
145 負荷影響算出式
146 タイムアウト値算出式
147 インストール時タイムアウト値
148 運用時タイムアウト値
149 IOホストタイムアウト情報

Claims (9)

  1. データを記憶する記憶装置と、
    前記記憶装置に入出力するデータを処理するプロセッサを有する複数のストレージノードと、
    前記複数のストレージノードを接続するネットワークと、
    を備えるストレージシステムにおいて、
    前記複数のストレージノードは、
    互いの稼働状況を監視して、タイムアウト値に基づいて前記ストレージノードの障害発生を判断するノード障害検出を行い、前記ストレージノードに障害が発生した場合にそのストレージノードの処理を他のストレージが引き継ぐフェイルオーバー処理を行い、前記ストレージノード間のネットワークの状況に基づいて、前記タイムアウト値を調整する
    ことを特徴とするストレージシステム。
  2. 前記複数のストレージノードは、
    前記ストレージノード間のネットワークの遅延に関するネットワーク遅延情報を有し、
    前記ネットワーク遅延情報に基づいて前記タイムアウト値を調整し、
    前記ネットワーク遅延情報におけるネットワークの遅延が大きい場合に前記タイムアウト値を大きくする
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記複数のストレージノードは、
    前記ストレージノードの処理情報を有するストレージ稼働情報を有し、
    前記ストレージ稼働情報に基づいて前記タイムアウト値を調整し、
    前記ストレージ稼働情報には、前記ストレージノードが行う処理が含まれており、
    前記ストレージノードが行う処理のネットワークへの負荷が大きい場合に前記タイムアウト値を大きくする
    ことを特徴とする請求項1に記載のストレージシステム。
  4. 前記複数のストレージノードは、
    前記ストレージシステムの負荷を示すシステム統計情報を有し、
    システム統計情報に基づくシステムの負荷が大きい場合に前記タイムアウト値を大きくする
    ことを特徴とする請求項1に記載のストレージシステム。
  5. 前記プロセッサによるプログラムの実行により、前記ストレージシステムの初期設定のためのインストール処理を実行するインストール処理部を備え、
    前記インストール処理部は、前記インストール処理の開始時に、
    現在のネットワークの遅延状況を確認し、その確認結果に基づいて前記ネットワーク遅延情報を更新し、
    前記更新したネットワーク遅延情報に基づいて、前記インストール処理で実行されるインストール時処理のタイムアウト値を設定し、
    前記更新したネットワーク遅延情報に基づいて、前記ノード障害検出及び前記フェイルオーバー処理を含む、システム運用時に実行され得る運用時処理のタイムアウト値を決定し設定する
    ことを特徴とする請求項2に記載のストレージシステム。
  6. 前記ノード障害検出のタイムアウト値に基づいて、ノード障害発生時のフェイルオーバー処理完了までの時間を算出し、フェイルオーバー処理完了までの時間と、前記ストレージシステムにデータ入出力を行う上位装置の入出力タイムアウトの判定要件と、を比較し、
    前記ノード障害発生時のフェイルオーバー処理完了までのタイムアウト値が前記入出力タイムアウトの判定要件を超えていた場合は、その対処を行う
    ことを特徴とする請求項1に記載のストレージシステム。
  7. 前記対処は、前記入出力タイムアウトの判定要件の変更、または前記ストレージシステムの機器構成の変更をユーザに提示することである
    ことを特徴とする請求項6に記載のストレージシステム。
  8. 前記システム統計情報に格納される情報の統計要素には、上位装置から要求されたIOを処理する性能を表すIO性能、または前記ストレージノードにおけるデータ通信量を表すパケット量の少なくとも何れかが含まれる
    ことを特徴とする請求項4に記載のストレージシステム。
  9. ストレージシステムによる制御方法であって、
    前記ストレージシステムは、
    データを記憶する記憶装置と、
    前記記憶装置に入出力するデータを処理するプロセッサを有する複数のストレージノードと、
    前記複数のストレージノードを接続するネットワークと、を有し、
    前記複数のストレージノードが、互いの稼働状況を監視して、タイムアウト値に基づいて前記ストレージノードの障害発生を判断するノード障害検出を行い、前記ストレージノードに障害が発生した場合にそのストレージノードの処理を他のストレージが引き継ぐフェイルオーバー処理を行い、前記ストレージノード間のネットワークの状況に基づいて、前記タイムアウト値を調整する
    ことを特徴とする制御方法。
JP2021154178A 2021-09-22 2021-09-22 ストレージシステム及び制御方法 Pending JP2023045641A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021154178A JP2023045641A (ja) 2021-09-22 2021-09-22 ストレージシステム及び制御方法
US17/690,302 US11989105B2 (en) 2021-09-22 2022-03-09 Storage system and control method for adjusting timeout based on network conditions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021154178A JP2023045641A (ja) 2021-09-22 2021-09-22 ストレージシステム及び制御方法

Publications (1)

Publication Number Publication Date
JP2023045641A true JP2023045641A (ja) 2023-04-03

Family

ID=85573543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021154178A Pending JP2023045641A (ja) 2021-09-22 2021-09-22 ストレージシステム及び制御方法

Country Status (2)

Country Link
US (1) US11989105B2 (ja)
JP (1) JP2023045641A (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526433B1 (en) * 1999-12-15 2003-02-25 International Business Machines Corporation Adaptive timeout value setting for distributed computing environment (DCE) applications
US6782496B2 (en) * 2001-04-13 2004-08-24 Hewlett-Packard Development Company, L.P. Adaptive heartbeats
US7421695B2 (en) * 2003-11-12 2008-09-02 Cisco Tech Inc System and methodology for adaptive load balancing with behavior modification hints
US7493394B2 (en) * 2003-12-31 2009-02-17 Cisco Technology, Inc. Dynamic timeout in a client-server system
US20120124431A1 (en) * 2010-11-17 2012-05-17 Alcatel-Lucent Usa Inc. Method and system for client recovery strategy in a redundant server configuration
US8578022B2 (en) * 2011-01-19 2013-11-05 Cisco Technology, Inc. Adaptive idle timeout for TCP connections in ESTAB state
US9244796B2 (en) * 2011-11-15 2016-01-26 International Business Machines Corporation Diagnostic heartbeat throttling
US9292371B1 (en) * 2013-12-11 2016-03-22 Symantec Corporation Systems and methods for preventing failures of nodes in clusters
US9842013B2 (en) * 2014-10-27 2017-12-12 Aruba Networks, Inc. Dynamic adaptive approach for failure detection of node in a cluster
US10911295B2 (en) * 2016-10-20 2021-02-02 Nec Corporation Server apparatus, cluster system, cluster control method and program
US10547516B2 (en) * 2017-06-30 2020-01-28 Microsoft Technology Licensing, Llc Determining for an optimal timeout value to minimize downtime for nodes in a network-accessible server set
JP6791834B2 (ja) 2017-11-30 2020-11-25 株式会社日立製作所 記憶システム及び制御ソフトウェア配置方法
CN112988433B (zh) * 2019-12-12 2024-04-16 伊姆西Ip控股有限责任公司 用于故障管理的方法、设备和计算机程序产品

Also Published As

Publication number Publication date
US11989105B2 (en) 2024-05-21
US20230090032A1 (en) 2023-03-23

Similar Documents

Publication Publication Date Title
US8498967B1 (en) Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US8117487B1 (en) Method and apparatus for proactively monitoring application health data to achieve workload management and high availability
CN108984107B (zh) 提高存储系统的可用性
US7409586B1 (en) System and method for handling a storage resource error condition based on priority information
US10108517B1 (en) Techniques for data storage systems using virtualized environments
US8707085B2 (en) High availability data storage systems and methods
JP5938965B2 (ja) マルチノードストレージシステムのノード装置および処理速度管理方法
US10942835B2 (en) Processing a health condition message on a health condition to determine whether to perform a swap operation
US8234447B2 (en) Storage control device for storage system provided with storage device coupled to switch network
US11188243B2 (en) Storage management apparatus, information system, and storage management method
WO2015063889A1 (ja) 管理システム、プラン生成方法、およびプラン生成プログラム
US10795587B2 (en) Storage system and cluster configuration control method
EP3648405B1 (en) System and method to create a highly available quorum for clustered solutions
CN110413694A (zh) 元数据管理方法及相关装置
US20200183800A1 (en) Dynamic data restoration from multiple recovery sites implementing synchronous remote mirroring
US11128708B2 (en) Managing remote replication in storage systems
US10860411B2 (en) Automatically detecting time-of-fault bugs in cloud systems
US11016863B2 (en) Self-contained disaster detection for replicated multi-controller systems
US9559862B1 (en) Determining connectivity of various elements of distributed storage systems
JP2023045641A (ja) ストレージシステム及び制御方法
US10203890B1 (en) Multi-tier mechanism to achieve high availability in a multi-controller system
US11513684B1 (en) Data storage system management techniques and metrics
TW202134863A (zh) 用以進行全快閃記憶體陣列伺服器的高可用性管理的方法與設備
US8930762B1 (en) Optimal tracking of cluster-wide shared storage connectivity for graceful error handling
US10346437B1 (en) Event triggered data collection