JP2022110245A - 仮想的なストレージシステムを提供するストレージクラスタを備えたストレージシステム - Google Patents
仮想的なストレージシステムを提供するストレージクラスタを備えたストレージシステム Download PDFInfo
- Publication number
- JP2022110245A JP2022110245A JP2021005516A JP2021005516A JP2022110245A JP 2022110245 A JP2022110245 A JP 2022110245A JP 2021005516 A JP2021005516 A JP 2021005516A JP 2021005516 A JP2021005516 A JP 2021005516A JP 2022110245 A JP2022110245 A JP 2022110245A
- Authority
- JP
- Japan
- Prior art keywords
- node
- volume
- new
- storage
- existing
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】ヘテロ構成になり得るストレージクラスタが提供するストレージサービスのサービス品質を維持することができる。【解決手段】ストレージクラスタに新規ノード(交換後又は新規追加のストレージノード)が追加される場合、ストレージシステムが、新規ノードのスペックと、新規ノード以外の少なくとも一つの既存ノードのスペックとを比較する。新規ノードのスペックが既存ノードのスペックよりも高い場合、ストレージシステムは、いずれかの既存ノードに第1ボリューム(第1の優先度よりも高い優先度が関連付けられているボリューム)があれば、当該第1ボリュームの移行先を、新規ノードに決定する。【選択図】図1
Description
本発明は、概して、仮想的なストレージシステムを提供するストレージクラスタにおけるボリューム配置を制御する技術に関する。
仮想的なストレージシステムを提供するストレージクラスタ(二つ以上のストレージノードで構成されたクラスタ)からユーザへ提供されるストレージサービスのサービス品質がユーザ所望のサービス品質に維持することが望まれる。サービス品質の維持のための機能として、QoS(Quality of Service)機能が知られている。
QoS機能が適用された技術は、例えば特許文献1に開示されている。特許文献1によれば、優先度がユーザVM(Virtual Machine)に付与され、ネットワークスケジューリングモジュールが、ユーザVMの優先度に応じた制御を行う。
ストレージクラスタにおける全ストレージノードのスペックが同一であることが、ストレージサービスのサービス品質の維持のための管理又は保守の点で好ましいと考えられる。しかし、ストレージノードの交換又は増設により新たにストレージクラスタのメンバとなるストレージノードを、ストレージクラスタにおける他のストレージノードのスペックと同じスペックのストレージノードとすることは、必ずしも容易ではない。その理由の一つとして、ストレージノードの交換又は増設の時点において、他のストレージノードと同じストレージノード(或いは、他のストレージノードのスペックと同じスペックのストレージノード)の製造販売が中止されていることがある。
このため、ストレージクラスタは、スペックの異なる複数のストレージノードで構成されたクラスタ、つまり、いわゆるヘテロ構成のストレージクラスタとなることがある。ストレージクラスタがヘテロ構成であると、サービス品質の維持が困難になる。例えば、下記のうちの少なくとも一つが考えられる。
・サービス品質の優先度(レベル)の高いボリュームが、高いスペックのストレージノードに配置されていても、このストレージノードのスペックが、経年劣化又は相対的に低下した場合、このストレージノードは、優先度の高いボリュームの配置先として不適切となる。
・サービス品質の優先度の異なる複数のボリュームがストレージノードに混在している場合、当該ストレージノードにアクセスが集中して、ストレージサービスの期待されるサービス品質が低下することがある。
・サービス品質の優先度(レベル)の高いボリュームが、高いスペックのストレージノードに配置されていても、このストレージノードのスペックが、経年劣化又は相対的に低下した場合、このストレージノードは、優先度の高いボリュームの配置先として不適切となる。
・サービス品質の優先度の異なる複数のボリュームがストレージノードに混在している場合、当該ストレージノードにアクセスが集中して、ストレージサービスの期待されるサービス品質が低下することがある。
ストレージシステムが、仮想的なストレージシステムを提供するストレージクラスタを構成する二つ以上のストレージノードを含んだ複数のストレージノードを備える。二つ以上のストレージノードに一つ又は複数のボリュームが配置されている。一つ又は複数のボリュームの各々には、当該ボリュームを利用したストレージサービスのサービス品質に従う優先度が関連付けられている。ストレージサービスのサービス品質が高い程、当該ストレージサービスに利用されるボリュームに関連付けられる優先度は高い傾向にある。ストレージクラスタにおけるいずれかのストレージノードが交換される又はストレージクラスタにストレージノードが増設されることにより交換後又は増設対象のストレージノードである新規ノードが追加される場合、処理ノード(複数のストレージノードにおけるいずれかのストレージノード)が、下記を行う。
・新規ノードのスペックを表す情報である新規スペック情報と、ストレージクラスタのうち新規ノード以外の少なくとも一つの既存ノードのスペックを表す情報である既存スペック情報とを取得する。
・新規スペック情報が表すスペックである新規スペックと、既存スペック情報が表すスペックである既存スペックとを比較する。
・新規スペックが既存スペックよりも高い場合、いずれかの既存ノードに第1ボリューム(第1の優先度以上に高い優先度が関連付けられているボリューム)があれば、当該第1ボリュームの移行先を、新規ノードに決定する。
・新規ノードのスペックを表す情報である新規スペック情報と、ストレージクラスタのうち新規ノード以外の少なくとも一つの既存ノードのスペックを表す情報である既存スペック情報とを取得する。
・新規スペック情報が表すスペックである新規スペックと、既存スペック情報が表すスペックである既存スペックとを比較する。
・新規スペックが既存スペックよりも高い場合、いずれかの既存ノードに第1ボリューム(第1の優先度以上に高い優先度が関連付けられているボリューム)があれば、当該第1ボリュームの移行先を、新規ノードに決定する。
本発明によれば、ヘテロ構成になり得るストレージクラスタが提供するストレージサービスのサービス品質を維持することができる。
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVNE(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
また、要素の識別番号は、要素の識別情報(ID)の一例であり、要素の識別情報は、要素を識別するための情報であれば、識別番号に限らず、他種の符号が用いられたどのような情報でもよい。
以下、本発明の実施の形態を図面に基づいて説明する。
図1は、本発明の実施の形態に係るシステム全体の構成例を示す。
複数(又は一つ)のホストコンピュータ10に、ネットワーク(例えば、一つ以上のスイッチ20)を介してストレージクラスタ30が接続される。ホストコンピュータ10は、ストレージクラスタ30に対してI/O(Input/Output)の要求を送信したり、I/O対象のデータを送受信したりする計算機である。
ストレージクラスタ30は、一つの仮想的なストレージシステムを提供する複数のストレージノード40を備える。ストレージノード(以下、単に「ノード」)40は、汎用的な計算機でよい。各ノードが所定のソフトウェアを実行することにより、複数のノード40がSDx(Software-Defined anything)を一つの仮想的なストレージシステムとして提供してよい。SDxとしては、例えば、SDS(Software-Defined Storage)又はSDDC(Software-defined Datacenter)を採用することができる。ホストコンピュータ10は無くてもよく、少なくとも一つのノードが、I/O要求に応答して論理ボリュームにI/O対象のデータを入出力するストレージ機能と、ストレージ機能に対してI/O要求を発行するホスト機能の両方を有していてもよい。
ノード40は、NIC(Network Interface Card)50と、メモリ60と、DKA(ディスクアダプタ)80と、それらに接続されたCPU70と、DKA80に接続されたドライブ群90とを有する。NIC50及びDKA80が、インターフェース装置の一例である。ドライブ群90が、永続記憶装置の一例である。MP70が、プロセッサの一例である。
NIC50は、スイッチ20を介してホストコンピュータ10と通信を行うインターフェースデバイスであり、フロントエンドのインターフェースデバイスの一例である。DKA80は、ドライブ群90に対するデータの入出力を制御するインターフェースデバイスであり、バックエンドのインターフェースデバイスの一例である。
ドライブ群90は、一つ以上のドライブである。ドライブは、永続記憶デバイスの一例であり、例えば、HDD又はSSDでよい。
メモリ60は、プログラムやデータを記憶する。MP70は、メモリ60に格納されたプログラムを実行することで、ボリュームに対するデータの入出力といったストレージサービスを提供する。
本実施形態に係るシステムは、レベニューシェア型契約が採用される環境に適用されてよい。すなわち、本実施形態では、ストレージクラスタ30を提供するストレージベンダと、ストレージクラスタ30に基づきストレージサービスを提供するサービスプロバイダと、ストレージサービスを利用するエンドユーザが存在してよい。サービスプロバイダは、エンドユーザからストレージサービスの利用金額を受け、サービス対価をストレージベンダに支払ってよい。サービス対価は、エンドユーザが満足するサービス品質の維持というサービスに対する対価を含んでよい。
ストレージサービスのサービス品質は、I/O性能に依存し、I/O性能は、ボリューム配置に依存する。
図2は、ボリューム配置の一例を示す。
ボリュームは、ホスト側に提供される論理的な記憶領域である。ボリュームは、実体的なボリューム(RVOL)であってもよいし、仮想的なボリューム(VVOL)であってもよい。「RVOL」は、ドライブ群90に基づくVOLでよく、「VVOL」は、容量仮想化技術(典型的にはThin Provisioning)に従うボリュームでよい。本実施形態では、各ノード40において、ボリュームは、VVOL200であり、VVOL200は、プール300に関連付けられる。プール300は、一つ以上のプールボリュームで構成される。プールボリュームは、RVOLでよい。ノード40は、ライト要求を受け付け、ライト要求で指定された仮想領域(VVOL200内の領域)に実領域(プール300内の領域)が関連付けられていない場合、当該仮想領域(例えば、仮想ページ)に、当該仮想領域を有するVVOL200が関連付けられているプール300から、空きの実領域(例えば、空き実ページ)を割り当て、当該実領域に、ライト対象のデータを書き込む。
サービス品質の優先度(例えば、SLA(Service Level Agreement))は、例えば、“High”、“Middle”及び“Low”の3段階である。VVOL200に、いずれかの優先度が関連付けられている。
なお、VVOL200に格納されたデータの冗長化は、任意の方法により実現されてよい。例えば、データの冗長化は、下記のうちのいずれかにより実現されてよい。
・ドライブ群90が、一つ以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループである。実領域(プールボリューム)が、RAIDグループに基づく記憶領域である。従って、実領域に格納されたデータは、当該実領域の基になっているRAIDグループのRAIDレベルに従い冗長化される。
・後述の複数の冗長化グループがある。冗長化グループは、アクティブのノードと一つ以上のスタンバイのノードで構成される。アクティブのノードが、VVOL200に対するライト要求を受け、ライト先の仮想領域に対して、当該アクティブのノードにおける実領域の他に、同一冗長化グループにおけるスタンバイのノードにおける実領域を割り当て、それらの実領域に、データを格納する。
・ドライブ群90が、一つ以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループである。実領域(プールボリューム)が、RAIDグループに基づく記憶領域である。従って、実領域に格納されたデータは、当該実領域の基になっているRAIDグループのRAIDレベルに従い冗長化される。
・後述の複数の冗長化グループがある。冗長化グループは、アクティブのノードと一つ以上のスタンバイのノードで構成される。アクティブのノードが、VVOL200に対するライト要求を受け、ライト先の仮想領域に対して、当該アクティブのノードにおける実領域の他に、同一冗長化グループにおけるスタンバイのノードにおける実領域を割り当て、それらの実領域に、データを格納する。
図3は、ノード40のメモリ60に格納される情報及びプログラムの一例を示す。
メモリ60は、管理情報61と、処理プログラム62とを格納する。
管理情報61は、ノード管理テーブル400と、ボリューム管理テーブル500と、クラスタ管理テーブル600と、ALUA管理テーブル700とを含む(ALUAは、Asymmetric Logical Unit Accessの略)。ノード管理テーブル400は、ノード40を管理するためのテーブルである。ボリューム管理テーブル500は、ボリュームを管理するためのテーブルである。クラスタ管理テーブル600は、ストレージクラスタ30を管理するためのテーブルである。ALUA管理テーブル700は、ノード40とホストコンピュータ10とを結ぶ最短パスのターゲットをボリューム毎に管理するためのテーブルである。
処理プログラム62は、クラスタ管理プログラム800と、ノード管理プログラム810と、ボリューム管理プログラム820と、リバランス処理プログラム830と、性能取得プログラム840と、QoS提供プログラム850とを含む。クラスタ管理プログラム800は、ストレージクラスタ30を管理するプログラムである。ノード管理プログラム810は、ノード40を管理するプログラムである。ボリューム管理プログラム820は、ボリュームを管理するプログラムである。リバランス処理プログラム830は、ボリュームを再配置するプログラムである。性能取得プログラム840は、各種の性能を取得するプログラムである。QoS提供プログラム850は、ボリュームの優先度に応じたサービス品質を維持するためのQoS制御を行うプログラムである。
本実施形態では、各ノード40が、処理プログラム62を有するため、各ノード40が、ボリュームを再配置する機能を有する。これに代えて又は加えて、ストレージクラスタ30の管理システム(例えば、ストレージクラスタ30における少なくとも一つのノード40に通信可能に接続された一つ以上の物理計算機又は当該一つ以上の物理計算機上で実現されるシステム)が、管理情報61の少なくとも一部を記憶し、処理プログラム62の少なくとも一部を実行してもよい。つまり、管理システムが、ボリュームの再配置を行ってもよい。
以下、幾つかのテーブルを説明する。なお、以下の説明において、識別番号が“n”の要素AAAを、「AAA#n」と表記することがある。例えば、識別番号“1”のノード40を「ノード#n」と表記することがある。
図4は、ノード管理テーブル400の構成例を示す。
ノード管理テーブル400は、ノード毎にエントリを有する。各エントリは、ノード番号401と、CPU世代402と、コア数403と、クロック周波数404と、ドライブ種別405と、DIMM規格406と、DIMM容量407と、NICリンク速度408といった情報を保持する。本実施形態では、ノード40のスペックは、CPU世代、コア数、クロック周波数、ドライブ種別、DIMM規格、DIMM容量及びNICリンク速度のうちの少なくとも一つに依存する。一つのノード40を例に取る(図4の説明において「対象ノード40」)。
ノード番号401は、対象ノード40の識別番号を表す。CPU世代402は、対象ノード40が有するCPU70の世代を表す。コア数403は、対象ノード40が有するCPU70のコアの数を表す。クロック周波数404は、対象ノード40が有するCPU70のクロック周波数を表す。ドライブ種別405は、対象ノード40が有するドライブ群90におけるドライブの種別を表す。DIMM規格406は、対象ノード40が有するメモリ60におけるDIMM(Dual Inline Memory Module)の規格を表す。DIMM容量407は、対象ノード40が有するメモリ60におけるDIMMの容量を表す。NICリンク速度408は、対象ノード40が有するNIC50のリンク速度を表す。
図5は、ボリューム管理テーブル500の構成例を示す。
ボリューム管理テーブル500は、ボリューム(VVOL200)毎にエントリを有する。各エントリは、ボリューム番号501と、QoS状態502と、アクティブノード番号503と、スタンバイノード番号504と、プール番号505といった情報を保持する。一つのボリュームを例に取る(図5の説明において「対象ボリューム」)。
ボリューム番号501は、対象ボリュームの識別番号を表す。QoS状態502は、対象ボリュームの優先度を表す。本実施形態では、ボリュームの優先度(サービス品質のレベル)は、“High”、“Middle”及び“Low”の3段階であるが、優先度の段階は、3段階よりも多くても少なくてもよい。優先度“High”が、最も高いサービス品質(例えば、最もレスポンス性能に優れていること)が求められる。優先度“Middle”が、次に高いサービス品質が求められる。
ストレージクラスタ30において、いずれかのノード40に障害が生じた場合、当該ノード40がアクティブのノード40であれば、当該ノード40から、当該ノード40にとっての一つ以上のスタンバイのノード40のいずれかに(例えば、フェイルオーバー先となる優先順位の最も高いノード40に)、フェイルオーバーが行われる。アクティブのノード40と一つ以上のスタンバイのノード40との組は、「冗長化グループ」と呼ばれてよい。冗長化グループは、任意の単位で用意されてよい。例えば、各ノード40が、複数の制御プログラム(例えば、処理プログラム62のうちの少なくとも一つの所定のプログラム)を有していて、異なる二つ以上のノード40がそれぞれ有する二つ以上の制御プログラムの組である制御プログラムグループが、冗長化グループに相当してよい。制御プログラムグループ毎に、アクセス可能な記憶領域が決まっていてよい。ここで言う「アクセス可能な記憶領域」は、ボリュームでもよいし、ボリュームを構成する複数の仮想領域のうちの一つ以上の仮想領域でもよい。本実施形態では、ボリューム(VVOL200)毎に冗長化グループが定められる。
すなわち、アクティブノード番号503は、対象ボリュームが配置されるアクティブのノード40の識別番号を表す。スタンバイノード番号504は、フェイルオーバーの際の対象ボリュームの移行先となるスタンバイのノード40の識別番号を表す。
プール番号505は、対象ボリュームが関連付けられるプール300の識別番号を表す。プール番号505は、アクティブノード番号503及びスタンバイノード番号504で共通であるが、これは、対象ボリュームが、フェイルオーバーにおいてスタンバイのノード40に移行された場合には、アクティブのノード40において関連付けられていたプール300と同じプール番号のプール300に関連付けられることを意味する。なお、フェイルオーバーにおいて対象ボリュームがスタンバイのノード40において関連付けられるプール300のプール番号は、必ずしもアクティブのノード40におけるプール300のプール番号と同じでなくてもよい。また、本実施形態において「ボリューム」は、VVOLであるが、本発明は、VVOL以外のタイプのボリュームの再配置にも適用できる。
図6は、クラスタ管理テーブル600の構成例を示す。
クラスタ管理テーブル600は、冗長化グループ毎にエントリを有する。各エントリは、アクティブノード番号601と、スタンバイノード番号602と、メイン/レプリカ603と、リバランス番号604といった情報を保持する。一つの冗長化グループを例に取る(図6の説明において「対象冗長化グループ」)。本実施形態では、一つの冗長化グループにつき、スタンバイのノード40は一つであるが、スタンバイのノード40は二つ以上存在してもよい。
アクティブノード番号601は、対象冗長化グループにおけるアクティブのノード40の識別番号を表す。スタンバイノード番号602は、対象冗長化グループにおけるスタンバイのノード40の識別番号を表す。
メイン/レプリカ603は、対象冗長化グループにおけるアクティブのノード40がメインノードであるかレプリカノードであるかを表す。メインノードは、ストレージクラスタ30におけるリソースの構成変更(例えば、ボリュームの作成)を指示できるノードである。いずれかのメインのノードが閉塞した場合に、いずれかのレプリカノードがメインノードとなる。図6が示す例によれば、例えば、以下の通りである。
・アクティブのノード#1からスタンバイのノード#3へのフェイルオーバーが行われると、ノード#3がアクティブとなる。
・その結果、メインノードの数が所定数未満となった場合、いずれかのレプリカノード(例えば、ノード#4)が、メインノードになる。
・アクティブのノード#1からスタンバイのノード#3へのフェイルオーバーが行われると、ノード#3がアクティブとなる。
・その結果、メインノードの数が所定数未満となった場合、いずれかのレプリカノード(例えば、ノード#4)が、メインノードになる。
リバランス番号604は、対象冗長化グループにおけるアクティブのノード40(この段落において「対象ノード40」)のリバランス番号(リバランス種別の識別番号)を表す。リバランス番号604の値として、“2”、“1”及び“0”の三つがある。それらは、下記の通りである。
・“2”は、対象ノード40が、移行対象ノードであること、すなわち、ボリュームの移行先となるノードであることを意味する。
・“1”は、対象ノード40が、移行許容ノードであること、すなわち、ボリュームの移行元となるノードであることを意味する。
・“0”は、対象ノード40が、デフォルトのノードであること、すなわち、ボリュームの移行先とも移行元ともならないノードであることを意味する。
・“2”は、対象ノード40が、移行対象ノードであること、すなわち、ボリュームの移行先となるノードであることを意味する。
・“1”は、対象ノード40が、移行許容ノードであること、すなわち、ボリュームの移行元となるノードであることを意味する。
・“0”は、対象ノード40が、デフォルトのノードであること、すなわち、ボリュームの移行先とも移行元ともならないノードであることを意味する。
図7は、ALUA管理テーブル700の構成例を示す。
ALUA管理テーブル700は、ボリューム(VVOL200)毎にエントリを有する。各エントリは、ボリューム番号701と、ノード番号702と、アクティブ最適ターゲット番号703、及びアクティブ非最適ターゲット番号704といった情報を保持する。一つのボリュームを例に取る(図7の説明において「対象ボリューム」)。
ボリューム番号701は、対象ボリュームの識別番号を表す。ノード番号702は、対象ボリュームが配置されているノード40(アクティブのノード40)の識別番号を表す。
アクティブ最適ターゲット番号703及びアクティブ非最適ターゲット番号704は、対象ボリュームへの最短パスの識別番号を表す。これらの識別番号は、対象ボリュームへのアクセス元(本実施形態ではホストコンピュータ10)に提供され、アクセス元により、対象ボリュームへのアクセスのために使用される。図7が示す例によれば、最短パスとして、メインのパス(アクティブ最適ターゲット番号703が表すパス)と交替パス(アクティブ非最適ターゲット番号704が表すパス)とが用意されていて、パスの負荷或いはその他の情報を基に、アクセス元によりいずれかの最短パスが選択されてよい。最短パスは、ボリュームに関連付けられるリソースであるため、ボリュームの再配置に付随して、最短パスの再配置が行われる。
図8A及び図8Bは、新規ノード追加処理の一例の概要を示す。なお、以下の説明において、用語の定義は、下記の通りである。
・「新規ノード」とは、交換後のノード40又は増設対象のノード40である。従って、「新規ノード追加」とは、ノード40の交換又は増設を意味する。
・「処理ノード」とは、ボリュームの再配置を行うノード(又は上述の管理システム)を意味する。例えば、処理ノードは、ストレージクラスタ30においてメインと定義されたノードであるメインノードでよい。メインノードが障害等により閉塞した場合、いずれかのレプリカのノードが新たにメインノードとなってよい。
・「新規ノード」とは、交換後のノード40又は増設対象のノード40である。従って、「新規ノード追加」とは、ノード40の交換又は増設を意味する。
・「処理ノード」とは、ボリュームの再配置を行うノード(又は上述の管理システム)を意味する。例えば、処理ノードは、ストレージクラスタ30においてメインと定義されたノードであるメインノードでよい。メインノードが障害等により閉塞した場合、いずれかのレプリカのノードが新たにメインノードとなってよい。
S1において、ストレージクラスタ30は、ノード#1~#5(以下、既存ノード#1~#5)で構成されており、各ノード40のQoS機能(QoS提供プログラム850)が有効化されている状態である。ノード#4に、優先度“Low”のボリュームが配置され、ノード#5に、優先度“Middle”のボリュームが配置されている。
S2において、既存ノード#4及び#5が、新規ノード#4及び#5に交換されたとする。この場合、処理ノードが、既存ノード#4及び#5に配置されていたボリュームがそれぞれ既存ノード#1~#3のいずれかに退避される。図8Aが示す例によれば、ノード#4に配置されていた優先度“Low”のボリュームがノード#1に退避され、ノード#5に配置されていた優先度“Middle”のボリュームがノード#2に退避される。処理ノードは、ボリューム管理テーブル500及びクラスタ管理テーブル600のうちの少なくとも一つを基に、退避対象ボリュームの優先度(QoS状態)と、各既存ノードにおけるボリュームの優先度とに基づいて、複数のメインの冗長化グループにおけるいずれかのアクティブのストレージノードを、退避先に選択してよい。
その後、S3の通り、既存ノード#4及び#5に代えて新規ノード#4及び#5が追加され、処理ノードが、既存ノード#3における優先度“High”のボリュームの再配置先に新規ノード#4又は#5が適合するか否かを判定する。例えば、処理ノードは、新規ノードスペック情報(例えば、図4を参照して説明した情報402~408を新規ノード#4又は#5について含んだ情報)と既存ノードスペック情報(既存ノード#3についてノード管理テーブル400に記録されている情報)とを比較する。情報402~408によれば、性能項目として、CPU性能、ドライブ性能、DIMM性能、及びNIC性能がある。つまり、ノードスペックに影響する性能項目(スペック項目)の数Nは、本実施形態では、N=4である。性能項目の数Nは、4よりも多くても少なくてもよい。処理ノードは、新規ノード#4又は#5のスペックが既存ノード#3のスペックよりも優れていると判断した場合(例えば、新規ノードの方が優れていると判断された性能項目の数がα(α≦N)を超えた場合)、新規ノード#4又は#5を、既存ノード#3における優先度“High”のボリュームの配置先とする。図8Bが示す例によれば、S4の通り、既存ノード#3における一つの優先度“High”のボリュームの再配置先が新規ノード#4とされ、既存ノード#3におけるもう一つの優先度“High”のボリュームの再配置先が新規ノード#5とされる。
なお、これにより、既存ノード#3にリソース(例えば、CPUリソースやドライブリソース)の余裕が生まれたので、処理ノードが、次に優先度の高い“Middle”のボリュームの再配置先を決定してよい。例えば、処理ノードは、既存ノード#3のスペックが既存ノード#2のスペックよりも優れていると判断した場合、優先度“Middle”のボリュームを既存ノード#2から既存ノード#3に再配置してよい。
図9は、新規ノード追加時の処理のフローを示す。なお、図9を参照した説明では、適宜、下記が例として採用される。
・ストレージクラスタ30が、既存ノード#1~#3で構成されている。既存ノード#1~#3のうち、既存ノード#3が最も高スペックであり、既存ノード#2が次に高スペックである。このため、既存ノード#3のリバランス番号604が“2”であり(つまり、既存ノード#3が移行対象ノードであり)、既存ノード#2のリバランス番号604が“1”であり(つまり、既存ノード#2が移行許容ノードであり)、既存ノード#1のリバランス番号604が“0”(つまり、既存ノード#1がデフォルトのノードである)。
・ここで新規ノード#4が追加される。なお、この時点では、クラスタ管理テーブル600には、新規ノード#4の情報は記録されず、図9が示す処理の中で、新規ノード#4の情報がクラスタ管理テーブル600に記録される。
・ストレージクラスタ30が、既存ノード#1~#3で構成されている。既存ノード#1~#3のうち、既存ノード#3が最も高スペックであり、既存ノード#2が次に高スペックである。このため、既存ノード#3のリバランス番号604が“2”であり(つまり、既存ノード#3が移行対象ノードであり)、既存ノード#2のリバランス番号604が“1”であり(つまり、既存ノード#2が移行許容ノードであり)、既存ノード#1のリバランス番号604が“0”(つまり、既存ノード#1がデフォルトのノードである)。
・ここで新規ノード#4が追加される。なお、この時点では、クラスタ管理テーブル600には、新規ノード#4の情報は記録されず、図9が示す処理の中で、新規ノード#4の情報がクラスタ管理テーブル600に記録される。
新規ノード#4の追加時に、処理ノードのノード管理プログラム810は、新規ノード#4の情報を、例えば、処理ノード及び新規ノード#4の性能取得プログラム840を通じて取得し、取得した情報を含んだエントリをノード管理テーブル400に追加する(S1)。
次に、処理ノードのクラスタ管理プログラム800は、ノード管理テーブル400に新規ノード#4の情報を追加したことに伴って、クラスタ管理テーブル600の情報を更新する(S2)。
次に、処理ノードのクラスタ管理プログラム800は、新規ノード#4のCPU性能と既存ノード#1~#3のCPU性能とを比較し(S3)、新規ノード#4のCPU性能が既存ノード#1~#3のCPU性能よりも高いか否かを判定する(S4)。
S4の判定結果が真の場合(S4:Yes)、処理ノードのクラスタ管理プログラム800は、新規ノード#4のドライブ種別を判別する(S5)。処理ノードのクラスタ管理プログラム800は、新規ノード#4のドライブ種別を基に、新規ノード#4のドライブ性能が既存ノード#1~#3のドライブ性能よりも高いか否かを判定する(S6)。
S6の判定結果が真の場合(S6:Yes)、処理ノードのクラスタ管理プログラム800は、新規ノード#4のDIMM性能と既存ノード#1~#3のDIMM性能とを比較し(S7)、新規ノード#4のDIMM性能が既存ノード#1~#3のDIMM性能よりも高いか否かを判定する(S8)。
S8の判定結果が真の場合(S8:Yes)、処理ノードのクラスタ管理プログラム800は、新規ノード#4のNIC性能と既存ノード#1~#3のNIC性能とを比較し(S9)、新規ノード#4のNIC性能が既存ノード#1~#3のNIC性能よりも高いか否かを判定する(S10)。
S10の判定結果が真の場合(S10:Yes)、処理ノードのクラスタ管理プログラム800は、新規ノード#4を移行対象ノードとした情報をクラスタ管理テーブル600に追加する(S11)。つまり、ここで追加された情報において、新規ノード#4に対応したリバランス番号604が“2”である。そして、新規ノード#4よりもスペックが劣る既存ノード#3のリバランス番号604は、“2”から“1”に格下げされ、更にスペックが劣る既存ノード#2のリバランス番号604が“1”から“0”に格下げされる。また、新規ノード#4はレプリカノードとして登録される。
S10又はS8の判定結果が偽の場合(S10:No、又は、S8:No)、処理ノードのクラスタ管理プログラム800は、新規ノード#4を移行許容ノードとした情報をクラスタ管理テーブル600に追加する(S12)。つまり、ここで追加された情報において、新規ノード#4に対応したリバランス番号604が“1”である。
S4又はS6の判定結果が偽の場合(S4:No、又は、6:No)、処理ノードのクラスタ管理プログラム800は、新規ノードをデフォルトノードとした情報をクラスタ管理テーブル600に追加する(S13)。つまり、ここで追加された情報において、新規ノード#4に対応したリバランス番号604が“0”である。
S11、S12又はS13の後、処理ノードのクラスタ管理プログラム800は、リバランス実施の可否を判定する(S14)。
図9が示す例によれば、CPU性能、ドライブ性能、DIMM性能、及びNIC性能の4つの判定項目の全てについて肯定的な判定結果が得られたことを条件に、新規ノード#4が移行対象ノードとして設定される。4つの判定項目のうちの一部の判定項目(DIMM性能及びNIC性能)のうちの少なくとも一つについて否定的な判定結果が得られたことを条件に、新規ノード#4が移行許容ノードとして設定される。つの判定項目のうちの残りの判定項目(CPU性能及びドライブ性能)の少なくとも一つについて否定的な判定結果が得られたことを条件に、新規ノード#4がデフォルトノードとして設定される。その後、新規ノード#4について、リバランス実施の可否が判定される。ノードのRead/Write性能に最も影響する判定項目として、CPU性能が最も高く次にドライブ性能が高いと考えられるため、本実施形態では、CPU性能が最も重視され次にドライブ性能が重視される。このような観点で新規ノードが移行対象ノード、移行許容ノード及びデフォルトノードのいずれの属性に該当するか決定されるため、新規ノードに最適な属性を関連付けることができ、以って、最適なボリューム再配置が期待される。
図10は、クラスタ管理テーブル更新処理(図9のS2)のフローを示す。
処理ノードのクラスタ管理プログラム800は、クラスタ管理テーブル600を取得し(S21)、取得したクラスタ管理テーブル600を参照し、移行対象ノードがあるか否か(リバランス番号604“2”があるか否か)を判定する(S22)。
S22の判定結果が真の場合(S22:Yes)、処理ノードのクラスタ管理プログラム800は、既存ノード#3のリバランス番号604“2”を“1”に変更する(S23)。また、処理ノードのクラスタ管理プログラム800は、既存ノード#2のリバランス番号604“1”を“0”に変更する(S25)。
S22の判定結果が否定の場合(S22:No)、処理ノードのクラスタ管理プログラム800は、移行許容ノードがあるか否か(リバランス番号604“1”があるか否か)を判定する(S24)。S22の判定結果が否定の場合(S22:No)、本処理が終了する。
S24の判定結果が真の場合(S24:Yes)、処理ノードのクラスタ管理プログラム800は、リバランス番号604“1”を“0”に変更する(S25)。
本処理により、移行対象ノードとしての既存ノード#3は、移行対象ノードから移行許容ノードに格下げされる。同様に、移行許容ノードとしての既存ノード#2は、移行許容ノードからデフォルトノードに格下げされる。このように、図10が示す例によれば、新規ノードが追加された場合、図9のS2(図10の処理)において、新規ノードのスペックが既存ノードのスペックよりも高いか否かに関わらず、移行対象ノード又は移行許容ノードに該当するノードがあれば、当該ノードが一つ格下げされる。その後、CPU性能、ドライブ性能、DIMM性能、及びNIC性能の4つの判定項目の少なくとも一つ(図9が示す例では少なくともCPU性能)について判定が行われる。新規ノードの情報を含んだエントリをノード管理テーブル400に追加した後にCPU性能等の判定を経て必要な情報(リバランス番号604)を更新する処理とすることで、プログラム的にトレースがし易いことが期待される。
図11は、CPU性能比較処理(図9のS3)のフローを示す。
処理ノードのクラスタ管理プログラム800は、新規ノード#4のCPU性能を表す情報(以下、新規CPU性能情報)を、例えば、新規ノード#4及び処理ノードの性能取得プログラム840を通じて特定する(S31)。
この後、クラスタ管理プログラム800は、S32~S34を各既存ノードについて行う。一つの既存ノードを例に取る。なお、クラスタ管理テーブル600に、リバランス番号604“1”がある場合(つまり、移行許容ノードがある場合)、比較される既存ノード(S32~S34が行われる既存ノード)は移行許容ノードのみでよい。移行許容ノードが、新規ノードを除きストレージクラスタ30において最もスペックが高いノードであるためである。
処理ノードのクラスタ管理プログラム800は、ノード管理テーブル400から既存ノードのCPU性能を表す情報(以下、既存CPU性能情報)を取得し(S32)、S31で取得した新規CPU性能情報とS32で取得した既存CPU性能情報とを比較し、新規CPU性能が既存CPU性能よりも高いか否かを判定する(S33)。例えば、新規CPU性能情報も既存CPU性能情報も、CPU世代402、コア数403、クロック周波数404を含む。CPUがより高性能であると判断する判断基準は、CPU世代402、コア数403及びクロック周波数404のうちのいずれがより優れているかでよい。情報402~404の優先度は、例えば、高い方から順に、CPU世代402、コア数403及びクロック周波数404でよい。このため、例えば、CPU世代402がより優れていれば、コア数403がより少なくても、CPU性能はより優れていると判定されてよい。
処理ノードのクラスタ管理プログラム800は、S33の判定結果が真の場合(S33:Yes)、すなわち、新規CPU性能が既存CPU性能よりも高い場合、当該既存ノードについての戻り値(本処理の戻り値)を更新する(S34)。S34により、戻り値は、新規CPU性能が高いことを表す値に更新される。言い換えれば、戻り値の初期値は、既存CPU性能が優れていることを表す値である。
本処理の後、各既存ノードについて戻り値が得られる。全既存ノードの戻り値が、新規CPU性能が高いことを表す値の場合、図9のS4の判定結果が真である。
図12は、ドライブ種別判別処理(図9のS5)のフローを示す。
処理ノードのクラスタ管理プログラム800は、新規ノード#4のドライブ種別を表す情報(以下、新規ドライブ種別情報)を、例えば、新規ノード#4及び処理ノードの性能取得プログラム840を通じて特定する(S41)。
処理ノードのクラスタ管理プログラム800は、S41で取得した新規ドライブ種別情報が表す新規ドライブ種別が“SSD”又は“NVMe”であるか否かを判定する(S42)。
処理ノードのクラスタ管理プログラム800は、S43の判定結果が真の場合(S43:Yes)、戻り値(本処理の戻り値)を更新する(S44)。S44により、戻り値は、新規ドライブ性能が高いことを表す値に更新される。
本処理の後、戻り値が得られる。戻り値が、新規ドライブ性能が高いことを表す値の場合、図9のS6の判定結果が真である。
図13は、DIMM性能比較処理(図9のS7)のフローを示す。
処理ノードのクラスタ管理プログラム800は、新規ノード#4のDIMM性能を表す情報(以下、新規DIMM性能情報)を、例えば、新規ノード#4及び処理ノードの性能取得プログラム840を通じて特定する(S51)。
この後、クラスタ管理プログラム800は、S52~S55を各既存ノードについて行う。一つの既存ノードを例に取る。なお、クラスタ管理テーブル600に、リバランス番号604“1”がある場合(つまり、移行許容ノードがある場合)、比較される既存ノード(S52~S55が行われる既存ノード)は移行許容ノードのみでよい。移行許容ノードが、新規ノードを除きストレージクラスタ30において最もスペックが高いノードであるためである。
処理ノードのクラスタ管理プログラム800は、ノード管理テーブル400から既存ノードのDIMM性能を表す情報(以下、既存DIMM性能情報)を取得する(S52)。新規DIMM性能情報も既存DIMM性能情報も、DIMM規格406及びDIMM容量407を含む。新規DIMM性能情報のうちの情報406及び407が表す規格及び容量を「新規DIMM規格」及び「新規DIMM容量」と言い、既存DIMM性能情報のうちの情報406及び407が表す規格及び容量を「既存DIMM規格」及び「既存DIMM容量」と言う。
処理ノードのクラスタ管理プログラム800は、新規DIMM規格が既存DIMM性能と同じ又はそれより高いか否かを判定する(S53)。S53の判定結果が真の場合(S53:Yes)、処理ノードのクラスタ管理プログラム800は、新規DIMM容量が既存DIMM容量より大きいか否かを判定する(S54)。
処理ノードのクラスタ管理プログラム800は、S54の判定結果が真の場合(S54:Yes)、すなわち、新規DIMM性能が既存DIMM性能よりも高い場合、当該既存ノードについての戻り値(本処理の戻り値)を更新する(S55)。S55により、戻り値は、新規DIMM性能が高いことを表す値に更新される。言い換えれば、戻り値の初期値は、既存DIMM性能が優れていることを表す値である。
本処理の後、各既存ノードについて戻り値が得られる。全既存ノードの戻り値が、新規DIMM性能が高いことを表す値の場合、図9のS8の判定結果が真である。
図14は、NIC性能比較処理(図9のS9)のフローを示す。
処理ノードのクラスタ管理プログラム800は、新規ノード#4のNIC性能を表す情報(以下、新規NIC性能情報)を、例えば、新規ノード#4及び処理ノードの性能取得プログラム840を通じて特定する(S61)。
この後、クラスタ管理プログラム800は、S62~S64を各既存ノードについて行う。一つの既存ノードを例に取る。なお、クラスタ管理テーブル600に、リバランス番号604“1”がある場合(つまり、移行許容ノードがある場合)、比較される既存ノード(S62~S64が行われる既存ノード)は移行許容ノードのみでよい。移行許容ノードが、新規ノードを除きストレージクラスタ30において最もスペックが高いノードであるためである。
処理ノードのクラスタ管理プログラム800は、ノード管理テーブル400から既存ノードのNIC性能を表す情報(以下、既存NIC性能情報)を取得し(S62)、S61で取得した新規NIC性能情報とS62で取得した既存NIC性能情報とを比較し、新規NIC性能が既存NIC性能よりも高いか否かを判定する(S63)。例えば、新規NIC性能情報も既存NIC性能情報も、NICリンク速度408を含む。NICリンク速度408がより早い速度であれば、NICリンク性能はより高い。
処理ノードのクラスタ管理プログラム800は、S63の判定結果が真の場合(S63:Yes)、すなわち、新規NIC性能が既存NIC性能よりも高い場合、当該既存ノードについての戻り値(本処理の戻り値)を更新する(S64)。S64により、戻り値は、新規NIC性能が高いことを表す値に更新される。言い換えれば、戻り値の初期値は、既存NIC性能が優れていることを表す値である。
本処理の後、各既存ノードについて戻り値が得られる。全既存ノードの戻り値が、新規NIC性能が高いことを表す値の場合、図9のS10の判定結果が真である。
図15は、リバランス実施可否判定処理(図9のS14)のフローを示す。
本処理は、図9のS11~S13のいずれかの後に実施される処理である。このため、クラスタ管理テーブル600は、新規ノード#4の情報(新規ノード#4のリバランス番号604を含んだ情報)を有している。
処理ノードのクラスタ管理プログラム800は、当該クラスタ管理テーブル600を取得する(S71)。この後、S72~S81までの処理が、取得されたクラスタ管理テーブル別に行われる。本実施形態では、一つのストレージクラスタが存在するため、クラスタ管理テーブルも一つであるが、一つのストレージシステムが、一つ以上のストレージクラスタを含んでいてもよい。
処理ノードのクラスタ管理プログラム800は、S71で取得したクラスタ管理テーブル600を参照し、移行対象ノード(リバランス番号604“2”)が存在するか否かを判定する(S72)。
S72の判定結果が真の場合(S72:Yes)、処理ノードのクラスタ管理プログラム800は、リバランス番号604“2”に対応したアクティブノード番号601を取得する(S73)。また、処理ノードのクラスタ管理プログラム800は、ボリューム管理テーブル500を参照し(S74)、QoS状態502“High”に対応したアクティブノード番号503を取得する(S75)。処理ノードのクラスタ管理プログラム800は、S73で特定したアクティブノード番号601(つまり、移行対象ノードのノード番号)と、S75で取得したアクティブノード番号503(つまり、優先度“High”のボリュームが配置されているノード40のノード番号)が一致しているか否かを判定する(S80)。S80の判定結果が偽の場合(S80:No)、処理ノードのクラスタ管理プログラム800は、移行元ノードとして、優先度“High”のボリュームが配置されているノード40のノード番号を設定し、移行対象ボリュームとして、優先度“High”のボリュームのボリューム番号を設定し、移行対象パスとして、当該ボリュームに関連付いている最短パスの番号(ALUA管理テーブル700から特定可能なアクティブ最適ターゲット番号)を設定し、移行先ノードとして、移行対象ノードのノード番号を設定する(S81)。これにより、処理ノード(又は、移行元ノード及び移行先ノード)のリバランス処理プログラム830が、移行対象ボリューム(及び、当該ボリュームに関連付いている最短パス)を移行元ノードから移行先ノードに再配置する。これにより、移行対象ノードとしての新規ノード#4に、優先度“High”のボリューム(及び、当該ボリュームに関連付いている最短パス)が再配置される。
S72の判定結果が偽の場合(S72:No)、処理ノードのクラスタ管理プログラム800は、S71で取得したクラスタ管理テーブル600を参照し、移行許容ノード(リバランス番号604“1”)が存在するか否かを判定する(S76)。
S76の判定結果が真の場合(S76:Yes)、処理ノードのクラスタ管理プログラム800は、リバランス番号604“1”に対応したアクティブノード番号601を取得する(S77)。また、処理ノードのクラスタ管理プログラム800は、ボリューム管理テーブル500を参照し(S78)、QoS状態502“Middle”に対応したアクティブノード番号503を取得する(S79)。処理ノードのクラスタ管理プログラム800は、S77で特定したアクティブノード番号601(つまり、移行許容ノードのノード番号)と、S79で取得したアクティブノード番号503(つまり、優先度“Middle”のボリュームが配置されているノード40のノード番号)が一致しているか否かを判定する(S80)。S80の判定結果が偽の場合(S80:No)、処理ノードのクラスタ管理プログラム800は、移行元ノードとして、優先度“Middle”のボリュームが配置されているノード40のノード番号を設定し、移行対象ボリュームとして、優先度“Middle”のボリュームのボリューム番号を設定し、移行対象パスとして、当該ボリュームに関連付いている最短パスの番号(ALUA管理テーブル700から特定可能なアクティブ最適ターゲット番号)を設定し、移行先ノードとして、移行許容ノードのノード番号を設定する(S81)。これにより、処理ノード(又は、移行元ノード及び移行先ノード)のリバランス処理プログラム830が、移行対象ボリューム(及び、当該ボリュームに関連付いている最短パス)を移行元ノードから移行先ノードに再配置する。これにより、移行許容ノードとしての既存ノード#3に、優先度“Middle”のボリューム(及び、当該ボリュームに関連付いている最短パス)が再配置される。
本実施形態によれば、新規ノードのスペックが最も高い場合には、優先度“High”のボリュームが既存ノードから新規ノードに配置されるため、優先度“High”のボリュームが利用されるストレージサービスのサービス品質を維持することが期待できる。
また、本実施形態によれば、新規ノードの追加の直前に最もスペックの高かった既存ノードである移行許容ノードが存在していれば、優先度“Middle”のボリュームが移行許容ノードに配置される。
以上のようなボリューム再配置を実現できるため、レベニューシェア型契約が採用される環境においてもストレージサービスのサービス品質を維持することが期待できる。例えば、エンドユーザのボリューム用途をストレージベンダ及びサービスプロバイダのいずれも知らなくても、エンドユーザ所望のサービス品質がわかれば、当該サービス品質に従う優先度をエンドユーザにより利用されるボリュームに関連付けておくことができる。結果として、当該サービス品質の維持に最適なノードにボリュームが再配置され、以って、サービスプロバイダからのストレージサービスのサービス品質の維持が期待できる。
なお、本発明は前述した実施の形態に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。
また、上述の説明を、例えば下記のように総括することができる。なお、下記の総括は、上述の説明の変形例を含んでもよい。
ストレージクラスタに新規ノードが追加される場合、処理ノード(又は上述の管理システム)が、新規ノードのスペックを表す情報である新規スペック情報と、新規ノード以外の少なくとも一つの既存ノードのスペックを表す情報である既存スペック情報とを取得し、新規スペック(新規スペック情報が表すスペック)と既存スペック(既存スペック情報が表すスペック)とを比較する。新規スペックが既存スペックよりも高い場合、処理ノード(又は管理システム)が、いずれかの既存ノードに第1ボリューム(一例が、優先度“High”のボリューム)があれば、当該第1ボリュームの移行先を、新規ノードに決定する。これにより、第1ボリュームの配置先を最も高スペックのノードに維持できるため、以って、ヘテロ構成になり得るストレージクラスタが提供するストレージサービスのサービス品質を維持することができる。
処理ノード(又は管理システム)は、新規ノードが追加された場合に、移行対象ノード(第1ボリュームの移行先ノード)として管理されている既存ノードがあれば、当該既存ノードを、移行許容ノード(第1ボリュームの移行元ノード)として管理してよい。処理ノード(又は管理システム)は、新規スペックが既存スペックよりも高い場合、新規ノードを、移行対象ノードとして管理し、移行許容ノードとして管理されている既存ノードから、新規ノードに、第1ボリュームを移行することを決定してよい。これにより、新規スペックが既存スペックよりも高い場合、新規ノードが追加される前まで最も高スペックであったために第1ボリュームが配置されていることが期待される既存ノードから新規ノードへ第1ボリュームが移行するといったボリューム再配置が可能である。また、新規ノードが追加された場合に移行対象ノードであったノードが移行許容ノードに変わることにより、新規ノードが移行対象ノードにならない限り移行対象ノードが存在しない。このため、第1ボリュームが配置されているノードよりも高スペックなノードが新たに追加されること無しに第1ボリュームの再配置が行われることを避けることができる。
処理ノード(又は管理システム)は、移行許容ノードとして管理されている既存ノード以外のいずれかの既存ノードに、第1の優先度よりも低く第2の優先度以上に高い優先度が関連付けられているボリュームである第2ボリューム(一例が、優先度“Middle”のボリューム)があれば、当該第2ボリュームの移行先を、移行許容ノードとして管理されている既存ノードに決定してよい。これにより、第1ボリュームが移行対象ノードに配置されることによりリソースに余裕が生じる移行許容ノードに第2ボリュームが移行するといったボリューム再配置が可能である。
30 ストレージクラスタ
40 ストレージノード
40 ストレージノード
Claims (8)
- 仮想的なストレージシステムを提供するストレージクラスタを構成する二つ以上のストレージノードを含んだ複数のストレージノードを備え、
前記二つ以上のストレージノードに一つ又は複数のボリュームが配置されており、
前記一つ又は複数のボリュームの各々には、当該ボリュームを利用したストレージサービスのサービス品質に従う優先度が関連付けられており、
ストレージサービスのサービス品質が高い程、当該ストレージサービスに利用されるボリュームに関連付けられる優先度は高い傾向にあり、
前記ストレージクラスタにおけるいずれかのストレージノードが交換される又は前記ストレージクラスタにストレージノードが増設されることにより交換後又は増設対象のストレージノードである新規ノードが追加される場合、前記複数のストレージノードにおけるいずれかのストレージノードである処理ノードが、
前記新規ノードのスペックを表す情報である新規スペック情報と、前記ストレージクラスタのうち前記新規ノード以外の少なくとも一つの既存ノードのスペックを表す情報である既存スペック情報とを取得し、
前記新規スペック情報が表すスペックである新規スペックと、前記既存スペック情報が表すスペックである既存スペックとを比較し、
前記新規スペックが前記既存スペックよりも高い場合、いずれかの既存ノードに第1ボリュームがあれば、当該第1ボリュームの移行先を、前記新規ノードに決定し、
第1ボリュームは、第1の優先度以上に高い優先度が関連付けられているボリュームである、
ストレージシステム。 - 前記処理ノードは、
前記新規ノードが追加された場合に、第1ボリュームの移行先ノードである移行対象ノードとして管理されている既存ノードがあれば、当該既存ノードを、第1ボリュームの移行元ノードである移行許容ノードとして管理し、
前記新規スペックが前記既存スペックよりも高い場合、前記新規ノードを、移行対象ノードとして管理し、前記移行許容ノードとして管理されている既存ノードから、前記新規ノードに、第1ボリュームを移行することを決定する、
請求項1に記載のストレージシステム。 - 前記処理ノードは、移行許容ノードとして管理されている既存ノード以外のいずれかの既存ノードに、第1の優先度よりも低く第2の優先度以上に高い優先度が関連付けられているボリュームである第2ボリュームがあれば、当該第2ボリュームの移行先を、移行許容ノードとして管理されている既存ノードに決定する、
請求項2に記載のストレージシステム。 - ストレージノードのスペックの高さは、Nの判定項目(Nは2以上の整数)に依存し、
前記処理ノードは、
Nの判定項目について新規スペックの方が高ければ、前記新規ノードを移行対象ノードと判定し、
Nの判定項目のうち所定の一部の判定項目の少なくとも一つについて新規スペックの方が低ければ、前記新規ノードを移行許容ノードと判定する、
請求項3に記載のストレージシステム。 - 仮想的なストレージシステムを提供し二つ以上のストレージノードで構成されたストレージクラスタにおけるいずれかのストレージノードが交換される又は前記ストレージクラスタにストレージノードが増設されることにより交換後又は増設対象のストレージノードである新規ノードが追加される場合、いずれかのストレージノードである処理ノード、又は、少なくとも一つのノードに接続されたシステムである管理システムが、下記の(a)乃至(c)を行う、
(a)前記新規ノードのスペックを表す情報である新規スペック情報と、前記ストレージクラスタのうち前記新規ノード以外の少なくとも一つの既存ノードのスペックを表す情報である既存スペック情報とを取得する、
前記二つ以上のストレージノードに一つ又は複数のボリュームが配置されている、
前記一つ又は複数のボリュームの各々には、当該ボリュームを利用したストレージサービスのサービス品質に従う優先度が関連付けられている、
ストレージサービスのサービス品質が高い程、当該ストレージサービスに利用されるボリュームに関連付けられる優先度は高い傾向にあり、
(b)前記新規スペック情報が表すスペックである新規スペックと、前記既存スペック情報が表すスペックである既存スペックとを比較する、
(c)前記新規スペックが前記既存スペックよりも高い場合、いずれかの既存ノードに第1ボリュームがあれば、当該第1ボリュームの移行先を、前記新規ノードに決定し、
第1ボリュームは、第1の優先度以上に高い優先度が関連付けられているボリュームである、
ボリューム配置制御方法。 - 前記処理ノード又は前記管理システムは、
前記新規ノードが追加された場合に、第1ボリュームの移行先ノードである移行対象ノードとして管理されている既存ノードがあれば、当該既存ノードを、第1ボリュームの移行元ノードである移行許容ノードとして管理し、
前記新規スペックが前記既存スペックよりも高い場合、前記新規ノードを、移行対象ノードとして管理し、前記移行許容ノードとして管理されている既存ノードから、前記新規ノードに、第1ボリュームを移行することを決定する、
請求項5に記載のボリューム配置制御方法。 - 前記処理ノード又は前記管理システムは、移行許容ノードとして管理されている既存ノード以外のいずれかの既存ノードに、第1の優先度よりも低く第2の優先度以上に高い優先度が関連付けられているボリュームである第2ボリュームがあれば、当該第2ボリュームの移行先を、移行許容ノードとして管理されている既存ノードに決定する、
請求項6に記載のボリューム配置制御方法。 - ストレージノードのスペックの高さは、Nの判定項目(Nは2以上の整数)に依存し、
前記処理ノード又は前記管理システムは、
Nの判定項目について新規スペックの方が高ければ、前記新規ノードを移行対象ノードと判定し、
Nの判定項目のうち所定の一部の判定項目の少なくとも一つについて新規スペックの方が低ければ、前記新規ノードを移行許容ノードと判定する、
請求項7に記載のボリューム配置制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021005516A JP2022110245A (ja) | 2021-01-18 | 2021-01-18 | 仮想的なストレージシステムを提供するストレージクラスタを備えたストレージシステム |
US17/469,043 US20220229598A1 (en) | 2021-01-18 | 2021-09-08 | Storage system with storage cluster for providing virtual storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021005516A JP2022110245A (ja) | 2021-01-18 | 2021-01-18 | 仮想的なストレージシステムを提供するストレージクラスタを備えたストレージシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022110245A true JP2022110245A (ja) | 2022-07-29 |
Family
ID=82406209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021005516A Pending JP2022110245A (ja) | 2021-01-18 | 2021-01-18 | 仮想的なストレージシステムを提供するストレージクラスタを備えたストレージシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220229598A1 (ja) |
JP (1) | JP2022110245A (ja) |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904569B1 (en) * | 1999-10-06 | 2011-03-08 | Gelvin David C | Method for remote access of vehicle components |
US8271336B2 (en) * | 1999-11-22 | 2012-09-18 | Accenture Global Services Gmbh | Increased visibility during order management in a network-based supply chain environment |
US6671818B1 (en) * | 1999-11-22 | 2003-12-30 | Accenture Llp | Problem isolation through translating and filtering events into a standard object format in a network based supply chain |
US7130807B1 (en) * | 1999-11-22 | 2006-10-31 | Accenture Llp | Technology sharing during demand and supply planning in a network-based supply chain environment |
US8032409B1 (en) * | 1999-11-22 | 2011-10-04 | Accenture Global Services Limited | Enhanced visibility during installation management in a network-based supply chain environment |
US7124101B1 (en) * | 1999-11-22 | 2006-10-17 | Accenture Llp | Asset tracking in a network-based supply chain environment |
US7716077B1 (en) * | 1999-11-22 | 2010-05-11 | Accenture Global Services Gmbh | Scheduling and planning maintenance and service in a network-based supply chain environment |
US6606744B1 (en) * | 1999-11-22 | 2003-08-12 | Accenture, Llp | Providing collaborative installation management in a network-based supply chain environment |
US7266556B1 (en) * | 2000-12-29 | 2007-09-04 | Intel Corporation | Failover architecture for a distributed storage system |
US20040004966A1 (en) * | 2001-04-27 | 2004-01-08 | Foster Michael S. | Using virtual identifiers to route transmitted data through a network |
US20030088620A1 (en) * | 2001-11-05 | 2003-05-08 | Microsoft Corporation | Scaleable message dissemination system and method |
US20050215265A1 (en) * | 2004-03-23 | 2005-09-29 | Sharma Sanjeev K | Method and system for load balancing in a wireless communication system |
US7975109B2 (en) * | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US8223669B2 (en) * | 2008-04-07 | 2012-07-17 | Futurewei Technologies, Inc. | Multi-protocol label switching multi-topology support |
US8243625B2 (en) * | 2008-04-29 | 2012-08-14 | Futurewei Technologies, Inc. | Systems and methods for implementing multi-topology support for label distribution protocol (LPD) of a multiprotocol label switching network |
WO2010127365A1 (en) * | 2009-05-01 | 2010-11-04 | Citrix Systems, Inc. | Systems and methods for establishing a cloud bridge between virtual storage resources |
USRE48680E1 (en) * | 2009-06-26 | 2021-08-10 | Turbonomic, Inc. | Managing resources in container systems |
US10191778B1 (en) * | 2015-11-16 | 2019-01-29 | Turbonomic, Inc. | Systems, apparatus and methods for management of software containers |
US9888067B1 (en) * | 2014-11-10 | 2018-02-06 | Turbonomic, Inc. | Managing resources in container systems |
US10552586B1 (en) * | 2015-11-16 | 2020-02-04 | Turbonomic, Inc. | Systems, apparatus and methods for management of computer-based software licenses |
US8527561B1 (en) * | 2011-05-17 | 2013-09-03 | Crossroads Systems, Inc. | System and method for implementing a networked file system utilizing a media library |
US9135269B2 (en) * | 2011-12-07 | 2015-09-15 | Egnyte, Inc. | System and method of implementing an object storage infrastructure for cloud-based services |
US8832365B1 (en) * | 2012-04-20 | 2014-09-09 | Kip Cr P1 Lp | System, method and computer program product for a self-describing tape that maintains metadata of a non-tape file system |
US20150081965A1 (en) * | 2012-04-27 | 2015-03-19 | Hitachi, Ltd. | Data management system and data management method |
US8977827B1 (en) * | 2012-05-31 | 2015-03-10 | Kip Cr P1 Lp | System, method and computer program product for recovering stub files |
CN102769829B (zh) * | 2012-06-20 | 2017-04-05 | 中兴通讯股份有限公司 | 信息发布和获取的方法及系统 |
US20150127631A1 (en) * | 2013-11-05 | 2015-05-07 | International Business Machines Corporation | Best available alternative dialog |
US10628353B2 (en) * | 2014-03-08 | 2020-04-21 | Diamanti, Inc. | Enabling use of non-volatile media-express (NVMe) over a network |
US9424059B1 (en) * | 2014-03-12 | 2016-08-23 | Nutanix, Inc. | System and methods for implementing quality of service in a networked virtualization environment for storage management |
JP2016024563A (ja) * | 2014-07-17 | 2016-02-08 | 富士通株式会社 | ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム |
US10402100B2 (en) * | 2016-03-23 | 2019-09-03 | Netapp Inc. | Techniques for path optimization in storage networks |
US10419985B2 (en) * | 2016-10-25 | 2019-09-17 | Lg Electronics Inc. | Method of supporting access network handover operation of user equipment in wireless communication system and apparatus for the same |
CN114900797A (zh) * | 2016-12-30 | 2022-08-12 | 英特尔公司 | 用于无线电通信的方法和设备 |
US11089113B2 (en) * | 2017-08-07 | 2021-08-10 | Citrix Systems, Inc. | Systems and methods to retain existing connections so that there is no connection loss when nodes are added to a cluster for capacity or when a node is taken out from the cluster for maintenance |
US10915573B2 (en) * | 2018-09-13 | 2021-02-09 | International Business Machines Corporation | Characterizing electronic designs via visual processing and data transformation |
US11388054B2 (en) * | 2019-04-30 | 2022-07-12 | Intel Corporation | Modular I/O configurations for edge computing using disaggregated chiplets |
US20210184943A1 (en) * | 2019-12-11 | 2021-06-17 | At&T Intellectual Property I, L.P. | Facilitating notification and corrective actions related to endpoint quality of service losses in fifth generation (5g) or other advanced networks |
JP2022038919A (ja) * | 2020-08-27 | 2022-03-10 | 株式会社日立製作所 | リソース構成見積もりシステムおよびリソース構成見積もり方法 |
AU2021353594A1 (en) * | 2020-10-04 | 2023-05-11 | Strong Force Iot Portfolio 2016, Llc | Industrial digital twin systems and methods with echelons of executive, advisory and operations messaging and visualization |
-
2021
- 2021-01-18 JP JP2021005516A patent/JP2022110245A/ja active Pending
- 2021-09-08 US US17/469,043 patent/US20220229598A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20220229598A1 (en) | 2022-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11663029B2 (en) | Virtual machine storage controller selection in hyperconverged infrastructure environment and storage system | |
US10191773B2 (en) | Methods, systems, and devices for adaptive data resource assignment and placement in distributed data storage systems | |
CN107430528B (zh) | 机会性资源迁移以优化资源放置 | |
US8756392B2 (en) | Storage control apparatus and storage system comprising multiple storage control apparatuses | |
US9201751B1 (en) | Data migration between multiple tiers in a storage system using policy based ILM for QOS | |
US9658779B2 (en) | Computer system and control method for computer system | |
JP5830599B2 (ja) | 計算機システム及びその管理システム | |
JP6392978B2 (ja) | 計算機システムの管理システム | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
US8489845B2 (en) | Storage system comprising multiple storage control apparatus | |
JP5080611B2 (ja) | ThinProvisioningが適用されたストレージ装置 | |
JP2005222539A (ja) | 複数のコントローラ間に仮想ストレージセグメントを割り当てる能力を有するストレージシステム | |
US10616134B1 (en) | Prioritizing resource hosts for resource placement | |
JP7003692B2 (ja) | 情報処理装置,情報処理システムおよび制御プログラム | |
JPWO2014155555A1 (ja) | 管理システム及び管理プログラム | |
CN111124250A (zh) | 用于管理存储空间的方法、设备和计算机程序产品 | |
CN113590019A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
JP7125964B2 (ja) | 計算機システムおよび管理方法 | |
JP2022110245A (ja) | 仮想的なストレージシステムを提供するストレージクラスタを備えたストレージシステム | |
JP2004021370A (ja) | ディスクアレイ制御装置 | |
JP7107981B2 (ja) | 計算機システム | |
US11237745B2 (en) | Computer system and volume arrangement method in computer system to reduce resource imbalance | |
Fazul et al. | PRBP: A prioritized replica balancing policy for HDFS balancer | |
CN113826079A (zh) | 为装置组标识符选择接口 | |
CN111124260A (zh) | 管理独立盘冗余阵列的方法、电子设备和计算机程序产品 |