JP2021026659A - ストレージシステム及びリソース割当て制御方法 - Google Patents
ストレージシステム及びリソース割当て制御方法 Download PDFInfo
- Publication number
- JP2021026659A JP2021026659A JP2019146229A JP2019146229A JP2021026659A JP 2021026659 A JP2021026659 A JP 2021026659A JP 2019146229 A JP2019146229 A JP 2019146229A JP 2019146229 A JP2019146229 A JP 2019146229A JP 2021026659 A JP2021026659 A JP 2021026659A
- Authority
- JP
- Japan
- Prior art keywords
- storage
- storage nodes
- cluster
- node
- control unit
- 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
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/061—Improving I/O performance
-
- 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/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0653—Monitoring storage devices or 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/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)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】マルチノードストレージシステムの性能を向上する適切なリソース割当てを自動で決定する。【解決手段】ノード群を構成する複数のノードの各々が、当該ノードのリソース群の一つ以上のドライバを含むハードウェア制御部と、当該ノードがI/O(Input/Output)コマンドを受信した場合、当該I/Oコマンドに従うI/Oのための処理においてハードウェア制御部を制御するコマンド制御部とを備えている。少なくとも一つのノードが、割当て決定部を備える。割当て決定部が、当該ノードを含む一つ以上のノードのI/O特性に基づき、当該一つ以上のノードについて、ハードウェア制御部及びコマンド制御部に対するリソース割当てを決定する。当該一つ以上のストレージノードの各々では、当該ストレージノードのリソース群のリソース量のうち、ハードウェア制御部及びコマンド制御部の各々に割り当てられるリソース量は、上記決定されたリソース割当てに従う。【選択図】図1
Description
本発明は、概して、ストレージシステムにおける計算リソースの割当てに関する。
各汎用計算機が、SDS(Software Defined Storage)ソフトウェアを実行することでストレージノードとなり、結果として、マルチノードストレージシステムの一例としてのSDSシステムが構築されることがある。
SDSシステムでは、CPU(Central Processing Unit)、記憶デバイス及びポートといった複数の計算リソースであるリソース群のリソース量が、リソース群を制御するドライバ群(一つ以上のドライバ)や当該ドライバ群を制御してI/Oコマンドを処理するI/O処理ソフトウェアといった複数の機能に配分される。
計算リソースの割り当てに関して、例えば、特許文献1に開示の技術がある。
SDSシステムの性能は、リソース配分の適切さに依存する。
しかし、ユーザが、ユースケースによる構成やワークロードの変化等を考慮して適切なリソース配分を決定することは難しい。
例えば、SDSシステムの少なくとも一部の構成として、分離構成又は統合構成が採用され得る。分離構成は、I/Oコマンドを発行するアプリケーションを実行するサーバ機能がストレージノードとは別の計算機に備えられた構成である。結合構成は、サーバ機能がストレージノードに備えられた構成である。分離構成では、ネットワークを介してストレージ機能にI/Oコマンドが発行されるため、通信インターフェースデバイスの制御のためのCPU負荷が、統合構成に比べて大きい。
また、例えば、I/Oサイズ(例えば、I/Oコマンド一つあたりのI/O対象データのサイズ)やI/Oパターン(例えば、リード又はライト、及び、ランダム又はシーケンシャル)が異なると、リソース群を制御する一つ以上のドライバと、当該一つ以上のドライバを制御してI/Oコマンドを処理するI/O処理ソフトウェアとに割り当てるべきCPU時間は異なる。
以上のように、SDSシステムの性能を向上する適切なリソース割当て(例えばリソース配分)をユーザが決定することは難しい。
また、このような問題は、SDSシステム以外のマルチノードストレージシステムについてもあり得る。
ノード群を構成する複数のノードの各々が、当該ノードのリソース群の一つ以上のドライバを含むハードウェア制御部と、当該ノードが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)、NVMe(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
また、以下の説明では、「ストレージシステム」は、それぞれが記憶装置を有する複数のストレージノードを備えたマルチノード構成のノード群(例えば分散システム)を含む。各ストレージノードは、一つ以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループを備えてもよいが、典型的には、汎用のコンピュータでよい。一つ以上のコンピュータの各々が所定のソフトウェアを実行することにより、当該一つ以上のコンピュータがSDx(Software-Defined anything)として構築されてよい。SDxとしては、例えば、SDS(Software Defined Storage)又はSDDC(Software-defined Datacenter)を採用することができる。例えば、ストレージ機能を有するソフトウェアが一つ以上の汎用のコンピュータの各々で実行されることにより、SDSとしてのストレージシステムが構築されてよい。また、一つのストレージノードが、ホストコンピュータとしての仮想的なコンピュータと、ストレージシステムの記憶制御装置(典型的には、I/O要求に応答してデータを記憶デバイス部に対して入出力する装置)としての仮想的なコンピュータとを実行してもよい。
また、以下の説明では、「ボリューム」を「VOL」と表記することがある。「VOL」は、論理ボリュームの略であり、論理的な記憶デバイスでよい。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。「RVOL」は、そのRVOLを提供するストレージシステムが有する物理的な記憶資源(例えば、一つ以上のRAIDグループ)に基づくVOLでよい。「VVOL」は、例えば、容量拡張VOL(TPVOL)でよい。TPVOLは、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。「プール」は、一つ以上の永続記憶デバイス(例えば、当該プールを管理するストレージノード内の永続記憶デバイス、又は、当該ストレージノードと通信可能なストレージノード内の永続記憶デバイス)に基づく複数の実領域(実体的な記憶領域)で構成された記憶領域でよい。ストレージシステムが、受信したライト要求が指定するアドレスが属する仮想領域(TPVOLの仮想領域)に実領域が割り当てられていない場合、その仮想領域(ライト先仮想領域)にプールから実領域を割り当ててよい(ライト先仮想領域に他の実領域が割り当て済であっても実領域が新たにライト先仮想領域に割り当てられてもよい)。ストレージシステムは、割り当てられた実領域に、そのライト要求に付随するライト対象データを書き込んでよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。例えば、ストレージノードを特に区別しないで説明する場合には、「ストレージノード150」と記載し、個々のストレージノードを区別して説明する場合には、「ストレージノード150A1」、「ストレージノード150B1」のように記載することがある。
また、以下の説明では、ストレージノードの「I/O量」は、当該ストレージノードが一つ以上のI/Oコマンドを受信したことに伴い生じたI/Oの量でよい。「I/O量」として、「I/O数」及び「I/Oサイズ」の少なくとも一つが採用されてよい。「I/O数」は、ストレージノードが受信したI/Oコマンドの数でもよいし、受信した一つ以上のI/Oコマンドに基づき発行したI/Oコマンドの数でもよい。発行されたI/Oコマンドの宛先は、ストレージノード内の記憶デバイスであってもよいし、別のストレージノードであってもよい。「I/Oサイズ」は、ストレージノードが一つ以上のI/Oコマンドを受信したことに伴いI/Oされたデータの総サイズでよい。「I/O量」は、ライト量、リード量、又は、ライト量及びリード量の両方に従う量(例えば、ライト量とリード量の合計)でよい。「ライト量」の説明は、本段落における「I/O量」の説明中の「I/O」を「ライト」と読み替えた説明でよい。同様に、「リード量」の説明は、本段落における「I/O量」の説明中の「I/O」を「リード」と読み替えた説明でよい。
また、以下の説明では、「クラスタ」とは、二つ以上のストレージノードである。或るクラスタにおいて生じたライトの対象のデータは、冗長化されて(例えば二重化されて)、当該クラスタにおける二つ以上のストレージノードに格納される。クラスタには、アクティブのストレージノード150と、アクティブのストレージノード150が停止する場合にアクティブのストレージノード150に代わって起動するスタンバイのストレージノード150とが含まれてよい。
以下、一実施形態を詳細に説明する。
図1は、本実施形態に係るシステム全体の構成を示す図である。
計算ノード100と、管理ノード120と、それらと通信可能に接続されたストレージシステム95がある。
計算ノード100は、アプリケーション110(アプリケーションプログラム)を実行する計算機である。計算ノード100は、物理的な計算機でもよいし、仮想的な計算機(例えば、仮想マシン(Virtual Machine)やコンテナのような実行環境)でもよい。
管理ノード120は、管理ソフトウェア130を実行する計算機である。管理ノード120は、物理的な計算機でもよいし、仮想的な計算機でもよい。管理ソフトウェア130が、管理者からの指示に応答して又は自動的に、アプリケーション情報(例えば、アプリケーションの種類と数)が関連付けられた構成変更要求や、ボリューム情報(例えば、マイグレーション対象のボリュームのID)が関連付けられたマイグレーション要求を、後述の割当て決定プログラム82に出すことができる。
ストレージシステム95は、複数のストレージノード150を含むノード群である。ストレージノード150は、例えば、所定のソフトウェア(例えば、SDSソフトウェア)を実行する計算機(例えば汎用計算機)である。
図1の例では、計算ノード100、管理ノード120及びストレージノード150はそれぞれ異なるノードであるが、それらのノードのうちの二つ以上のノードを一つのノードが兼ねてもよい。例えば、計算ノード100及び管理ノード120の少なくとも一つは、少なくとも一つのストレージノード150に含まれてもよい。
各ストレージノード150は、インターフェース装置、記憶装置及びそれらに接続されたプロセッサ70といった複数の計算リソースであるリソース群を有する。
インターフェース装置の少なくとも一部の一例として、複数のポート161がある。ポート161が、通信インターフェースデバイスの一例である。
記憶装置の少なくとも一部の一例として、一つ以上のディスク60であるディスク群65がある。ディスク60が、記憶デバイス(特に、永続記憶デバイス)の一例である。
プロセッサ70の少なくとも一部の一例が、一つ以上のCPUでよく、一つ以上のCPUが、一つ以上のCPUコア(以下、コア)71を有する。CPU及びコア71のいずれも、プロセッサデバイスの一例である。
プロセッサ70が、ストレージ制御プログラム80を実行する。ストレージ制御プログラム80が実行されることにより実現される機能が、ストレージ機能でよい。ストレージ制御プログラム80は、ハードウェア制御プログラム84、コマンド制御プログラム81、割当て決定プログラム82、監視プログラム85及びマイグレーションプログラム86を含む複数のプログラムの集合でよい。
ハードウェア制御プログラム84は、リソース群を制御する一つ以上のドライバ、例えば、ポート161のドライバ、及び、ディスク60のドライバを含む。
コマンド制御プログラム81は、当該プログラム81を実行するストレージノード150がI/Oコマンドを受信した場合、当該I/Oコマンドに従うI/Oのための処理においてハードウェア制御プログラム84を制御する。シーケンシャル又はランダムのライト又はリードが、ストレージノード150が提供するボリュームに対して生じる。本実施形態では、ストレージノード150は、ボリュームを有し、ボリュームに、1以上のディスク60が関連付けられる。ボリュームに対し、ディスク60は、直接的に又は間接的に(例えばプール経由で)割り当てられてよい。例えば、ストレージ150は、当該ストレージノード150が有するディスク60を含む一つ以上のディスク60に基づくプールと、当該プールに関連付けられたボリュームとを有してよい。ボリュームに対するI/Oは、I/O先領域の基になっているディスク60に対して生じる。すなわち、リード処理は、ボリュームに割り当てられたディスク60からデータをリードする処理を含む。ライト処理は、ボリュームに割り当てられたディスク60にデータをライトする処理を含む。各ストレージノード150について、ライト処理は、ライト対象のデータを二重化し、一方のデータをストレージノード150内のディスク60にライトし、他方のデータをストレージノード150とは別のストレージノード150(例えば、同一クラスタ内の別のストレージノード150)にポート161を介してライトしてよい。
割当て決定プログラム82は、各ストレージノード150に備えられてもよいし、クラスタ毎に少なくとも一つのストレージノード150(例えば、マスタのストレージノード150)に備えられてもよい。割当て決定プログラム82は、当該プログラム82を実行するストレージノード150を含む一つのストレージノードの一例である対象クラスタのI/O特性に基づき、対象クラスタについて、ハードウェア制御プログラム84及びコマンド制御プログラム81を含む複数のプログラムに対するリソース割当て(例えば、複数のコア71の配分)を決定する。例えば、割当て決定プログラム82は、管理ソフトウェア130からアプリケーション情報が関連付けられた構成変更要求を受信し、当該構成変更要求に応答して、当該アプリケーション情報から推定されるI/O特性に基づき、リソース割当てを決定する。また、例えば、割当て決定プログラム82は、対象クラスタのI/O統計に従うI/O特性に基づき、リソース割当てを決定する。対象クラスタのI/O統計は、対象クラスタを構成する各ストレージノード150のI/O統計に従う。割当て決定プログラム82が実行されることにより実現される機能の一例が、割当て決定部でよい。本実施形態では、割当て決定プログラム82は、複数のリソース割当てがそれぞれ関連付けられた複数の動作モードから、対象クラスタのI/O特性に適合する動作モードを選択する。本実施形態では、動作モードの選択が、リソース割当ての決定の一例である。
監視プログラム85は、当該プログラム85を実行するストレージノード150のライト量とリード量に基づくI/O統計を監視する。I/O統計は、一定時間毎に取得されてよい。I/O統計は、例えば、シーケンシャルライトのライト量、ランダムライトのライト量、シーケンシャルリードのリード量、及び、ランダムリードのリード量でよい。
マイグレーションプログラム86は、ボリュームをクラスタ間でマイグレーションする。ボリュームのマイグレーションは、管理ソフトウェア130からのマイグレーション要求に応答して行われてもよいし、I/O統計の監視結果に応じて管理ソフトウェア130からの要求無しに行われてもよい。
なお、図1は、ストレージシステム95に関し、少なくとも一つのクラスタに適用された分離構成(アプリケーションを実行するサーバ機能がストレージノードとは別の計算機に備えられた構成)のうちの論理構成の一例を示す。
図2は、分離構成のうちの物理構成の一例を示す図である。
ストレージシステム95は、複数のクラスタ200で構成される。各クラスタ200は、二つ以上のストレージノード150で構成される。例えば、クラスタ200Aは、ストレージノード150A1〜150A3で構成され、クラスタ200Bは、ストレージノード150B1〜150B3で構成される。各ストレージノード150は、図1を参照して説明した計算リソースの他に、メモリ90を有する。メモリ90は、プロセッサ70に接続されている。
各クラスタ200において、各ストレージノード150は、ネットワークを介して、管理ノード120、計算ノード100、及び、別のストレージノード150と通信する。ネットワークは、一つ以上のネットワーク、例えば、第1のネットワーク51、第2のネットワーク52、及び、第3のネットワーク53を含む。第1のネットワーク51は、ストレージノード150と管理ノード120間の通信に使用されるネットワークである。第2のネットワーク52は、ストレージノード150と計算ノード100(及び別のクラスタ200内のストレージノード150)間の通信に使用されるネットワークである。第3のネットワーク53は、同一クラスタ200内のストレージノード150間の通信に使用されるいわゆる内部ネットワークである。第3のネットワーク53は、クラスタ200毎に存在する。例えば、ストレージノード150A間の通信に使用されるネットワーク53Aと、ストレージノード150B間の通信に使用されるネットワーク53Bがある。
図2に例示の構成において、例えば、第2のネットワーク52は、WAN(Wide Area Network)又はLAN(Local Area Network)でよく、第1のネットワーク51及び第3のネットワーク53の各々は、LANでよい。第1のネットワーク51、第2のネットワーク52、及び、第3のネットワーク53の少なくとも一つは、冗長化されていてもよい。例えば、第1のネットワーク51と第2のネットワーク52は、互いに分離せず共通のネットワークでもよい。ネットワーク51〜53のいずれについても、接続規格は、Ethernet(登録商標)、Infiniband(登録商標)又は無線でよい。
以上の図1及び図2には、分離構成の一例が示されている。分離構成によれば、ストレージノード150は、第2のネットワーク52を介してアプリケーション110からI/Oコマンドを受信する。
一方、少なくとも一つのクラスタ200に、統合構成(サーバ機能がストレージノードに備えられた構成)を適用することが考えられる。
図3は、統合構成のうちの論理構成の一例を示す図である。図4は、統合構成のうちの物理構成の一例を示す図である。
統合構成によれば、ストレージノード150内で、アプリケーション110からI/Oコマンドを受信すること(つまりネットワークを介さないでI/Oコマンドを受信すること)が生じる。
すなわち、ストレージノード150内で、アプリケーション110が実行される。具体的には、例えば、図3に示すように、ストレージノード150において、一つ以上の計算VM1801と、一つ以上のストレージVM1802が、プロセッサ70によって実行される。計算VM1801は、アプリケーション110を実行するVM(Virtual Machine)であり、アプリケーション110の実行環境の一例である。ストレージVM1802は、ストレージ制御プログラム80を実行するVMであり、ストレージ制御プログラム80の実行環境の一例である。実行環境は、VM以外の環境、例えばコンテナでもよい。
このような論理構成によれば、ストレージノード150では、計算VM1801内のアプリケーション110から発行されたI/OコマンドをストレージVM1802が受信する。すなわち、上述したように、ネットワークを介さずにI/Oコマンドの送受信がアプリケーション110とストレージ制御プログラム80間で行われる。このため、図4に例示するように、統合構成によれば、第2のネットワーク52に接続された計算ノードは存在しない。
ストレージシステム95には、分離構成が適用されたクラスタ200と、統合構成が適用されたクラスタ200とが混在してもよい。一つのクラスタ200に、分離構成と結合構成の両方が同時には適用されない。
図5は、メモリ90に格納されるプログラム及びテーブルの一例を示す図である。
メモリ90は、ストレージ制御プログラム80(すなわち、コマンド制御プログラム81、ハードウェア制御プログラム84、マイグレーションプログラム86、監視プログラム85及び割当て決定プログラム82)を格納する。また、メモリ90は、ストレージシステム95(又は、当該メモリ90を有するストレージノード150が属するクラスタ200)の構成を表す構成管理テーブル301、動作モードとリソース割当との関係を表す動作モード管理テーブル302、計算リソースの割当ての状況を表す割当て管理テーブル303、取得されたI/O統計を表すI/O統計管理テーブル304、及び、アプリケーションと動作モードとの関係を表すアプリモード管理テーブル305を格納する。これらのプログラム及びテーブルの少なくとも一部は、少なくともディスク60に格納されてもよい。
図5に例示のメモリ90は、各ストレージノード150のメモリ90でもよいし、クラスタ200毎のマスタのストレージノード150のメモリ90でもよいし、いずれかの特定のストレージノード150でもよい。また、図5に例示のメモリ90に格納される少なくとも一つのテーブルが、管理ノード120に保存されてもよい。
図6は、管理ノード140が保持するプログラム及びテーブルの一例を示す図である。
管理ノード140が、管理ソフトウェア130の他に、アプリケーションとコア数との関係を表すアプリVM管理テーブル402を保持する。アプリVM管理テーブル402は、例えば、ストレージシステム95の少なくとも一部に第2の構成例が採用されている場合に存在する。アプリVM管理テーブル402は、アプリケーション110に適した統合構成を構築するための情報として、VMに割り当てられるコア71の数を表す情報を持つ。管理ソフトウェア130からアプリケーションが指定されると、計算VM1801とストレージVM1802にそれぞれ適切な数のコア71が割り当てられる。
以下、各種テーブルを説明する。なお、以下の説明では、ランダムリードを「RR」と表記し、ランダムライトを「RW」と表記し、シーケンシャルリードを「SR」と表記し、シーケンシャルライトを「SW」と表記することがある。
図7は、構成管理テーブル301の構成例を示す図である。
構成管理テーブル301は、クラスタ管理テーブル501、ノード管理テーブル502及びボリューム管理テーブル503を含む。構成管理テーブル301は、少なくとも一つのストレージノード150が保持する。
クラスタ管理テーブル501は、各クラスタ200の構成を表す。クラスタ管理テーブル501は、例えば、クラスタ200毎にレコードを有する。各クラスタ200について、レコードは、例えば、当該クラスタ200のIDを表すクラスタID511と、当該クラスタ200に属する各ストレージノード150のIDを表すノードID512といった情報を含む。クラスタ管理テーブル501は、各クラスタ200について、当該クラスタ200に適用されているクラスタ構成種類を区別可能な情報を含んでもよい。例えば、クラスタID511は、適用されているクラスタ構成種類(例えば、分離構成と統合構成のいずれであるか)に応じた値でもよいし、各レコードが、適用されているクラスタ構成種類を表す情報を含んでもよい。
ノード管理テーブル502は、各ストレージノード150の構成を表す。ノード管理テーブル502は、例えば、ストレージノード150毎にレコードを有する。各ストレージノード150について、レコードは、例えば、当該ストレージノード150のIDを表すノードID521と、当該ストレージノード150が有する各ボリュームのIDを表すボリュームID522といった情報を含む。
ボリューム管理テーブル503は、各ボリュームの構成を表す。ボリューム管理テーブル503は、例えば、ボリューム毎にレコードを有する。各ボリュームについて、レコードは、例えば、当該ボリュームのIDを表すボリュームID531と、当該ボリュームのサイズを表すサイズ532といった情報を含む。サイズ532は、例えば、ボリュームを構成するブロック(単位領域の一例)の数で表現されてよい。
図8は、動作モード管理テーブル302の構成例を示す図である。
動作モード管理テーブル302は、クラスタモード管理テーブル601、コア数テーブル602、ディスク数テーブル603及びポート数テーブル604を含む。動作モード管理テーブル302は、少なくとも一つのストレージノード150が保持する。
クラスタモード管理テーブル601は、クラスタ200と動作モードとの関係を表す。クラスタモード管理テーブル601は、例えば、クラスタ200毎にレコードを有する。各クラスタ200について、レコードは、例えば、当該クラスタ200のIDを表すクラスタID611と、当該クラスタ200について選択された動作モードのIDを表すモードID612と、当該選択された動作モードの名称(ラベルの一例)を表すモード名613といった情報を含む。動作モードとして、例えば、“リード優先”(リードを最も優先すること)、“ライト優先”(ライトを最も優先すること)、“RR優先”(ランダムリードを最も優先すること)、“RW優先”(ランダムライトを最も優先すること)、“SR優先”(シーケンシャルリードを最も優先すること)、及び、“SW優先”(シーケンシャルライトを最も優先すること)がある。
コア数テーブル602は、動作モードとコア数(リソース割当てのうちコア71の割当て)との関係を表す。コア数テーブル602は、例えば、動作モード毎にレコードを有する。各動作モードについて、レコードは、例えば、当該動作モードのIDを表すモードID621と、コマンド制御プログラム81に割り当てられるコア71の数を表すCMD制御622と、ハードウェア制御プログラム84に割り当てられるコア71の数を表すHW制御623と、コマンド制御プログラム81に割り当てられるコア71の数を表すCMD制御622と、割当て決定プログラム82に割り当てられるコア71の数を表す割当て624と、監視プログラム85に割り当てられるコア71の数を表す監視625といった情報を含む。
ディスク数テーブル603は、動作モードとディスク数(リソース割当てのうちディスク60の割当て)との関係を表す。ディスク数テーブル603は、例えば、動作モード毎にレコードを有する。各動作モードについて、レコードは、例えば、当該動作モードのIDを表すモードID631と、割り当てられるディスク60の数を表すディスク数632といった情報を含む。なお、本実施形態において、割り当てられるディスク60の数は、プールからボリュームに割り当てられる領域の基になるディスク60の数でよい。当該領域の基になっているディスク60の数が多いほど、I/Oが並行するため、I/Oが高速であることが期待される。
ポート数テーブル604は、動作モードとポート数(リソース割当てのうちポート161の割当て)との関係を表す。ポート数テーブル604は、例えば、動作モード毎にレコードを有する。各動作モードについて、レコードは、例えば、当該動作モードのIDを表すモードID641と、割り当てられるポート161の数を表すポート数642といった情報を含む。なお、本実施形態において、割り当てられるポート161の数は、データのI/O(例えば、特にライト)に際して別のストレージノード150との通信に使用可能なポート161の数でよい。ポート161の数が多いほど、I/Oが並行するため、I/Oが高速であることが期待される。
なお、動作モード管理テーブル302において、コア数テーブル602において、情報622〜625は、計算リソースの数として解釈されてもよいし、計算リソースの割合として解釈されてもよい。例えば、モードID621“0x0”に対応した情報622“2”は、コマンド制御プログラム81に割り当てられるコア71の数が“2”であることを意味してもよいし、ストレージノード150が持つコア総数のうちの2/12(“12”は、情報622〜625の和)であることを意味してもよい。
図9は、割当て管理テーブル303の構成例を示す図である。
割当て管理テーブル303は、プログラムテーブル701、ノードコア割当てテーブル702、ポート割当てテーブル703及びディスク割当てテーブル704を含む。割当て管理テーブル303は、各ストレージノード150が保持する。以下、一つのストレージノード150を例に取る(図9の説明において「対象ノード150」)。
プログラムテーブル701は、対象ノード150が有するプログラム毎の名称を表す。プログラムテーブル701は、例えば、プログラム毎にレコードを有する。各プログラムについて、レコードは、例えば、当該プログラムのIDを表すプログラムID711と、当該プログラムの名称を表すプログラム名712といった情報を含む。
コア割当てテーブル702は、対象ノード150が有するコア71と対象ノード150が有するプログラムとの関係を表す。コア割当てテーブル702は、例えば、コア71毎にレコードを有する。各コア71について、レコードは、例えば、当該コア71のIDを表すコアID721と、当該コア71の割当先のプログラムのIDを表すプログラムID722といった情報を含む。
ポート割当てテーブル703は、対象ノード150が有するポート161の使用状況を表す。ポート割当てテーブル703は、例えば、ポート161毎にレコードを有する。各ポート161について、レコードは、例えば、当該ポート161のIDを表すポートID731と、当該ポート161の使用状態を表す使用状態732といった情報を含む。使用状態732“1”は、使用中を意味し、“0”は、未使用を意味する。
ディスク割当てテーブル704は、対象ノード150が有するディスク60の使用状況を表す。ディスク割当てテーブル704は、例えば、ディスク60毎にレコードを有する。各ディスク60について、レコードは、例えば、当該ディスク60のIDを表すディスクID741と、当該ディスク60の使用状態を表す使用状態742といった情報を含む。使用状態742“1”は、使用中を意味し、“0”は、未使用を意味する。
図10は、I/O統計管理テーブル304の構成例を示す図である。
I/O統計管理テーブル304は、ノードI/O統計テーブル801及びボリュームI/O統計テーブル802を含む。I/O統計管理テーブル304は、少なくとも一つのストレージノード150が保持する。なお、本実施形態では、「I/O統計」とは、リード又はライトとシーケンシャル又はランダムの組で構成されるようなI/Oパターン毎のI/O量である。
ノードI/O統計テーブル801は、各ストレージノード150のI/O統計を表す。
ノードI/O統計テーブル801は、例えば、ストレージノード150毎にレコードを有する。各ストレージノード150について、レコードは、例えば、当該ストレージノード150のIDを表すノードID811と、当該ストレージノード150が行ったランダムリードの数を表すRR数812と、当該ストレージノード150が行ったランダムライトの数を表すRW数813と、当該ストレージノード150が行ったシーケンシャルリードの数を表すSR数814と、当該ストレージノード150が行ったシーケンシャルライトの数を表すSW数815といった情報を含む。ランダムリードの数とシーケンシャルリードの数が、リード量の一例である。ランダムライトの数とシーケンシャルライトの数が、ライト量の一例である。情報812〜815が、ストレージノード150のI/O統計の一例である。
ノードI/O統計テーブル801は、例えば、ストレージノード150毎にレコードを有する。各ストレージノード150について、レコードは、例えば、当該ストレージノード150のIDを表すノードID811と、当該ストレージノード150が行ったランダムリードの数を表すRR数812と、当該ストレージノード150が行ったランダムライトの数を表すRW数813と、当該ストレージノード150が行ったシーケンシャルリードの数を表すSR数814と、当該ストレージノード150が行ったシーケンシャルライトの数を表すSW数815といった情報を含む。ランダムリードの数とシーケンシャルリードの数が、リード量の一例である。ランダムライトの数とシーケンシャルライトの数が、ライト量の一例である。情報812〜815が、ストレージノード150のI/O統計の一例である。
ボリュームI/O統計テーブル802は、各ボリュームのI/O統計を表す。ボリュームI/O統計テーブル802は、例えば、ボリューム毎にレコードを有する。各ボリュームについて、レコードは、例えば、当該ボリュームのIDを表すボリュームID821と、当該ボリュームに対して行われたランダムリードの数を表すRR数822と、当該ボリュームに対して行われたランダムライトの数を表すRW数823と、当該ボリュームに対して行われたシーケンシャルリードの数を表すSR数824と、当該ボリュームに対して行われたシーケンシャルライトの数を表すSW数825といった情報を含む。情報822〜825が、ボリュームのI/O統計の一例である。なお、I/O特性の一例がI/O統計である。
図11は、アプリモード管理テーブル305の構成例を示す図である。
アプリモード管理テーブル305は、アプリケーション110と動作モードとの関係を表す。アプリモード管理テーブル305は、例えば、アプリケーション110毎にレコードを有する。各アプリケーション110について、レコードは、例えば、当該アプリケーション110のIDを表すアプリケーションID911と、当該アプリケーション110の名称を表すアプリケーション名912と、当該アプリケーション110に適した動作モードのIDを表すモードID913と、当該アプリケーション110に適した動作モードの名称を表すモード名914といった情報を含む。
図12は、アプリVM管理テーブル402の構成例を示す図である。
アプリVM管理テーブル402は、アプリケーション110とVMに割り当てられるコア71の数との関係を表す。アプリVM管理テーブル402は、例えば、アプリケーション110毎にレコードを有する。各アプリケーション110について、レコードは、例えば、当該アプリケーション110のIDを表すアプリケーションID1011と、当該アプリケーション110の名称を表すアプリケーション名1012と、当該アプリケーション110を実行する計算VM1801に割り当てられるコア71の数を表す計算コア数1013と、当該アプリケーション110を実行する計算VM1801を含むストレージノード150内のストレージVM1802に割り当てられるコア71の数を表すストレージコア数1014といった情報を含む。
以下、本実施形態で行われる処理の一例を説明する。
図13は、アプリケーション情報が関連付けられ分離構成が指定された構成変更要求を割当て決定プログラム82が管理ソフトウェア130から受信した場合に行われる処理の流れを示す図である。
割当て決定プログラム82が、受信した構成変更要求に関連付けられているアプリケーション情報が表すアプリケーション名を特定し、特定したアプリケーション名に対応する動作モードを選択する(S1301)。具体的には、割当て決定プログラム82が、特定したアプリケーション名に対応するモードID913をアプリモード管理テーブル305から特定する。
そして、割当て決定プログラム82が、モード設定処理(図15)を行う(S1302)。モード設定処理は、選択された動作モードを上記構成変更要求に従う構成変更対象のクラスタに設定する処理である。
その後、割当て決定プログラム82は、注目クラスタ200(受信した構成変更要求に従うクラスタ200)に属する全てのストレージノード150についてS1302が行われたか否かを判断する(S1303)。注目クラスタ200は、構成変更要求に応答して新たに作成されたクラスタ200でもよいし、指定されたアプリケーション110が稼働しているクラスタ200でもよい。また、構成変更要求には、注目クラスタの要件(例えば、ストレージノード150の数、ボリュームの総サイズ等)が関連付けられていて、その要件を満たす新たに作成されたクラスタが注目クラスタでもよい。
S1303の判断結果が偽の場合(S1303:No)、未処理のストレージノード150についてS1302が行われる。
S1303の判断結果が真の場合(S1303:Yes)、処理が終了する、或いは、別の所定の処理が開始される。
例えば、管理者は、アプリケーション及びクラスタ構成種類の指定を、図14に示すアプリケーション指定UI1400に対して行う。アプリケーション指定UI1400は、例えがGUI(Graphical User Interface)であり、アプリケーション名の指定を受け付ける一つ以上のUIであるアプリ指定UI1411と、クラスタ構成種類の指定を受け付ける一つ以上のUIである構成UI1412と、構成作成の指示を受け付けるUIの一例であるボタン1413とを含む。アプリケーション指定UI1400における種々のUIは、例えばGUI部品である。構成UI1412に対して分離構成が指定されると、アプリ指定UI1411は図14に例示の構成となる。アプリ指定UI1411に対してアプリケーション名が指定されて、ボタン1413が押されると、管理ソフトウェア130が、構成変更要求をストレージノード150に送信する。当該構成変更要求には、アプリ指定UI1411に対して指定されたアプリケーション名を表すアプリケーション情報が関連付けられており、且つ、構成UI1412に対して指定された分離構成が指定されている。
図15は、モード設定処理の流れを示す図である。モード設定処理は、注目クラスタに属する各ストレージノード150について行われる。
割当て決定プログラム82は、注目クラスタのクラスタIDに対応する動作モード(モードID612及びモード名613)をクラスタモード管理テーブル601から特定する(S1501)。なお、クラスタモード管理テーブル601に注目クラスタに対応するレコードが無い場合には、当該レコードがクラスタモード管理テーブル601に追加されてもよい。
割当て決定プログラム82は、最近選択された動作モードが、S1501で特定された動作モードと異なるか否かを判断する(S1502)。
S1502の判断結果が真の場合(S1502:Yes)、割当て決定プログラム82は、コアモード変更処理(図16)を行う(S1503)。
S1503の後、又は、S1502の判断結果が偽の場合(S1502:No)、割当て決定プログラム82は、ポートモード変更処理を行う(S1504)。S1504では、割当て決定プログラム82は、S1502の判断結果が真の場合、例えば、下記を行う。S1502の判断結果が偽の場合、S1504がスキップされてよい。
・割当て決定プログラム82は、最近選択された動作モードに対応したポート数642(新ポート数)をポート数テーブル604から特定する。
・割当て決定プログラム82は、S1501で特定された動作モードに対応したポート数642(旧ポート数)をポート数テーブル604から特定する。
・割当て決定プログラム82は、新ポート数と旧ポート数とを比較する。
・新ポート数=旧ポート数であれば、S1504が終了する。
・新ポート数>旧ポート数であれば、割当て決定プログラム82は、新ポート数から旧ポート数を減じた数の未使用ポート(使用状態732“0”のポート)をポート割当てテーブル703から探し、見つかった未使用ポートの使用状態732を“1”に更新する。
・新ポート数<旧ポート数であれば、割当て決定プログラム82は、旧ポート数から新ポート数を減じた数の使用中ポート(使用状態732“1”のポート)をポート割当てテーブル703から探し、見つかった使用中ポートの使用状態732を“0”に更新する。
・割当て決定プログラム82は、最近選択された動作モードに対応したポート数642(新ポート数)をポート数テーブル604から特定する。
・割当て決定プログラム82は、S1501で特定された動作モードに対応したポート数642(旧ポート数)をポート数テーブル604から特定する。
・割当て決定プログラム82は、新ポート数と旧ポート数とを比較する。
・新ポート数=旧ポート数であれば、S1504が終了する。
・新ポート数>旧ポート数であれば、割当て決定プログラム82は、新ポート数から旧ポート数を減じた数の未使用ポート(使用状態732“0”のポート)をポート割当てテーブル703から探し、見つかった未使用ポートの使用状態732を“1”に更新する。
・新ポート数<旧ポート数であれば、割当て決定プログラム82は、旧ポート数から新ポート数を減じた数の使用中ポート(使用状態732“1”のポート)をポート割当てテーブル703から探し、見つかった使用中ポートの使用状態732を“0”に更新する。
また、割当て決定プログラム82は、ディスクモード変更処理を行う(S1505)。S1505では、割当て決定プログラム82は、S1502の判断結果が真の場合、例えば、下記を行う。S1502の判断結果が偽の場合、S1505がスキップされてよい。
・割当て決定プログラム82は、最近選択された動作モードに対応したディスク数632(新ディスク数)をディスク数テーブル603から特定する。
・割当て決定プログラム82は、S1501で特定された動作モードに対応したディスク数632(旧ディスク数)をディスク数テーブル603から特定する。
・割当て決定プログラム82は、新ディスク数と旧ディスク数とを比較する。
・新ディスク数=旧ディスク数であれば、S1505が終了する。
・新ディスク数>旧ディスク数であれば、割当て決定プログラム82は、新ディスク数から旧ディスク数を減じた数の未使用ディスク(使用状態742“0”のディスク)をディスク割当てテーブル704から探し、見つかった未使用ディスクの使用状態742を“1”に更新する。
・新ディスク数<旧ディスク数であれば、割当て決定プログラム82は、旧ディスク数から新ディスク数を減じた数の使用中ディスク(使用状態742“1”のディスク)をディスク割当てテーブル704から探し、見つかった使用中ディスクの使用状態742を“0”に更新する。
・割当て決定プログラム82は、最近選択された動作モードに対応したディスク数632(新ディスク数)をディスク数テーブル603から特定する。
・割当て決定プログラム82は、S1501で特定された動作モードに対応したディスク数632(旧ディスク数)をディスク数テーブル603から特定する。
・割当て決定プログラム82は、新ディスク数と旧ディスク数とを比較する。
・新ディスク数=旧ディスク数であれば、S1505が終了する。
・新ディスク数>旧ディスク数であれば、割当て決定プログラム82は、新ディスク数から旧ディスク数を減じた数の未使用ディスク(使用状態742“0”のディスク)をディスク割当てテーブル704から探し、見つかった未使用ディスクの使用状態742を“1”に更新する。
・新ディスク数<旧ディスク数であれば、割当て決定プログラム82は、旧ディスク数から新ディスク数を減じた数の使用中ディスク(使用状態742“1”のディスク)をディスク割当てテーブル704から探し、見つかった使用中ディスクの使用状態742を“0”に更新する。
図16は、コアモード変更処理の流れを示す図である。
割当て決定プログラム82は、変更対象コアを選択する(S1601)。S1601では、例えば、割当て決定プログラム82は、下記を行う。
・割当て決定プログラム82は、最近選択された動作モードに対応した情報622〜625であるコア数622〜625(図16の説明において「新コア数622〜625」)をコア数テーブル602から特定する。
・割当て決定プログラム82は、S1501で特定された動作モードに対応した情報622〜625であるコア数622〜625(図16の説明において「旧コア数622〜625」)をコア数テーブル602から特定する。
・割当て決定プログラム82は、プログラム毎に、新コア数と旧コア数とを比較する。
・新コア数=旧コア数のプログラムについては、変更対象コアはゼロである。
・新コア数>旧コア数のプログラムについては、又は、新コア数<旧コア数のプログラムについては、新コア数と旧コア数との差に相当する数のコアが、変更対象コアである。例えば、コマンド制御プログラムについて、旧コア数が“3”で、新コア数が“2”の場合、変更対象コアの数は“1”である。
・割当て決定プログラム82は、最近選択された動作モードに対応した情報622〜625であるコア数622〜625(図16の説明において「新コア数622〜625」)をコア数テーブル602から特定する。
・割当て決定プログラム82は、S1501で特定された動作モードに対応した情報622〜625であるコア数622〜625(図16の説明において「旧コア数622〜625」)をコア数テーブル602から特定する。
・割当て決定プログラム82は、プログラム毎に、新コア数と旧コア数とを比較する。
・新コア数=旧コア数のプログラムについては、変更対象コアはゼロである。
・新コア数>旧コア数のプログラムについては、又は、新コア数<旧コア数のプログラムについては、新コア数と旧コア数との差に相当する数のコアが、変更対象コアである。例えば、コマンド制御プログラムについて、旧コア数が“3”で、新コア数が“2”の場合、変更対象コアの数は“1”である。
S1602〜S1606が、各変更対象コアについて行われる。以下、一つのコアを例に取る(図16の説明において「注目コア」)。注目コアは、注目コアに対応したプログラムにとっては、コア余剰のため不要であるが、別のプログラムにとってコア不足のため必要とされるコアである。言い換えれば、コアモード変更処理では、プログラム間でコアがマイグレーションされる。これにより、アプリケーションの指定、クラスタ構成の指定や、I/O統計の変化、のうちのいずれによってI/O特性が変化しても、変化後のI/O特性に最適な動作モードが自動で選択され、選択された動作モードに最適なリソース配分(コア数622〜625)が維持される。
割当て決定プログラム82は、注目コア上で動作しているプログラムである旧プログラム(具体的には、注目コアに対応したプログラムID722と一致するプログラム711に対応したプログラム名から同定されるプログラム)に未完了の処理が存在するか否かを判断する(S1602)。S1602の判断結果が真の場合(S1602:Yes)、割当て決定プログラム82は、当該未完了の処理が終了するのを待つ(S1603)。
S1603の後、又は、S1602の判断結果が偽の場合(S1602:No)、割当て決定プログラム82は、注目コアに対し、旧プログラムに代えて新プログラムを割当て、注目コア上で新プログラムを実行させる(S1604)。なお、「新プログラム」とは、コア不足が生じているいずれかのプログラムである。
その後、割当て決定プログラム82は、注目コアに対応したプログラムID722を、旧プログラムのIDから新プログラムのIDに更新する(S1605)。
割当て決定プログラム82は、S1601で選択した変更対象コアに未だS1602以降の処理がされていない変更対象コアがあるか否かを判断する(S1606)。
S1606の判断結果が真の場合(S1606:Yes)、処理がS1602に戻る。S1606の判断結果が偽の場合(S1606:No)、コアモード変更処理が終了する。
図17は、I/O統計取得処理の流れを示す図である。
例えば、各ストレージノード150において、監視プログラム85が、定期的に、ボリューム毎のI/O統計(例えば、RR数、RW数、SR数、SW数)と、当該ストレージノード150のI/O統計とを取得する。ストレージノード150のI/O統計は、例えば、RR数、RW数、SR数及びSW数といった複数種類のI/O量を含み、各種のI/O量は、当該ストレージノード150が有する全ボリュームのI/O量の合計、平均、最大値又は最小値等でよい。
例えば、クラスタ200毎に、マスタのストレージノード150(以下、マスタノード150)が存在し、I/O統計取得処理は、マスタノード150の監視プログラム85(以下、マスタ監視プログラム85)により実行される。以下、一つのクラスタ200を例に取る(図17の説明において「注目クラスタ200」)。
マスタ監視プログラム85が、注目クラスタ200に属するストレージノード150から、ボリューム毎のI/O統計と当該ストレージノード150のI/O統計とを表すI/O統計情報を取得する(S1701)。マスタ監視プログラム85が、当該ストレージノード150のI/O統計情報を基に、当該ストレージノード150に対応した情報812〜815(ノードI/O統計テーブル801におけるレコード)を登録する(S1702)。
マスタ監視プログラム85が、クラスタ管理テーブル501を参照して、注目クラスタ200の中に、一定期間内にS1701及びS1702が行われてないストレージノード150がいるか否かを判断する(S1703)。
S1703の判断結果が真の場合(S1703:Yes)、処理がS1701に戻る。S1703の判断結果が偽の場合(S1703:No)、注目クラスタの当該一定期間についてのI/O統計の取得が終了する。
図18は、分離型スケジューラ処理の流れを示す図である。
分離型スケジューラ処理とは、分離構成が適用されているクラスタについての処理である。分離型スケジューラ処理は、クラスタのI/O統計に適した動作モードを選択することと、当該動作モードに対応したリソース割当てを行うこととを含む。分離型スケジューラ処理は、例えば、定期的に又は不定期的に、マスタノード150の割当て決定プログラム82によって行われる。以下、一つのクラスタ200を例に取る(図18の説明において「注目クラスタ200」)。
割当て決定プログラム82は、ノードI/O統計テーブル801を参照し、注目クラスタ200に属する各ストレージノード150のI/O統計から、注目クラスタ200のI/O統計を特定する(S1801)。注目クラスタ200のI/O統計は、例えば、RR数、RW数、SR数及びSW数といった複数種類のI/O量を含み、各種のI/O量は、注目クラスタ200が有する全ストレージノード150のI/O量の合計、平均、最大値又は最小値等でよい。
割当て決定プログラム82は、注目クラスタ200のI/O統計に適合する動作モードを複数の動作モードから選択する(S1802)。例えば、割当て決定プログラム82は、注目クラスタ200のI/O統計から、リードとライトのいずれが多いかや、RR、RW、SR及びSWのいずれが最も多いかを判定する。リードが多ければ“リード優先”、ライトが多ければ“ライト優先”、RRが最も多ければ“RR優先”といった判定結果が得られる。割当て決定プログラム82は、そのような判定結果に最も近い動作モードを、アプリモード管理テーブル305から特定する。
割当て決定プログラム82は、モード設定処理(図15)を行う。モード設定処理において、最近選択された動作モードは、S1802で選択された動作モードである。
割当て決定プログラム82は、注目クラスタ200に属する全てのストレージノード150についてS1803が行われたか否かを判断する(S1804)。
S1804の判断結果が偽の場合(S1804:No)、未処理のストレージノード150についてS1803が行われる。S1804の判断結果が真の場合(S1804:Yes)、分離型スケジューラ処理が終了する。
図19は、マイグレーション処理の流れを示す図である。
マイグレーション処理は、マイグレーションプログラム86により行われる。図19の説明では、当該マイグレーションプログラム86を実行するストレージノード150を「注目ノード150」と言い、注目ノード150が属するクラスタ200を「注目クラスタ200」と言う。また、図19の説明では、クラスタ200(クラスタ200に属する各ストレージノード150)に設定されている動作モードを「クラスタ動作モード」と言う。
マイグレーションプログラム86が、注目ノード150から未処理ボリュームを一つ選択し、選択した未処理ボリュームのI/O統計を、ボリュームI/O統計テーブル802から特定する(S1901)。「未処理ボリューム」とは、未だS1901以降の処理の対象になっていないボリュームである。S1901で選択された未処理ボリュームを、図19の説明において、「選択ボリューム」と言う。
マイグレーションプログラム86が、S1901で特定されたI/O統計に適合する動作モードを、例えば図18のS1802と同様の方法で選択し、選択した動作モード(以下、ボリューム動作モード)が、注目クラスタ200の現在のクラスタ動作モードに一致するか否かを判断する(S1902)。S1902の判断結果が真の場合(S1902:Yes)、処理がS1905に進む。
S1902の判断結果が偽の場合(S1902:No)、マイグレーションプログラム86が、注目ノード150(又は、注目クラスタ200のマスタノード150)におけるクラスタモード管理テーブル601を基に、ボリューム動作モードと一致するクラスタ動作モードが設定されているクラスタ200である適合クラスタ200が存在するか否かを判断する(S1903)。S1903の判断結果が偽の場合(S1903:No)、処理がS1905に進む。
S1903の判断結果が真の場合(S1903:Yes)、マイグレーションプログラム86が、選択ボリュームを適合クラスタ200内のストレージノード150にマイグレーションする(S1904)。選択ボリュームのマイグレーション先のストレージノード150は、選択ボリュームと同サイズのボリュームを作成可能な空き容量があることが特定されたストレージノード150でよい。そのようなストレージノード150は、例えば、各ストレージノード150について、空き容量が管理されている図示しない情報を基に特定されてよい。
マイグレーションプログラム86は、注目ノード150内に未処理ボリュームが存在するか否かを判断する(S1905)。
S1905の判断結果が真の場合(S1905:Yes)、未処理のストレージノード150についてS1905が行われる。S1905の判断結果が偽の場合(S1905:No)、マイグレーション処理が終了する。
図19の説明によれば、マイグレーション処理は、注目ノード150内のボリュームI/O統計テーブル802を基に定期的に又は不定期的に行われてよい。それに代えて又は加えて、マイグレーション処理は、注目クラスタ200のマスタノード150におけるマイグレーションプログラム86により行われてもよいし、管理ソフトウェア130により行われてもよい。後者の場合、例えば、管理ソフトウェア130が、ストレージシステム95における各ストレージノード150のテーブル301〜305のうち少なくともI/O統計管理テーブル304を収集するようになっていてよい。そして、管理ソフトウェア130が、S1901〜S1903を行ってよい。S1903の判断結果が真の場合、管理ソフトウェア130が、マイグレーション元のストレージノード150のマイグレーションプログラム86とマイグレーション先のストレージノード150のマイグレーションプログラム86とのうちの少なくとも一つに、マイグレーション元のストレージノード150からマイグレーション先のストレージノード150に選択ボリュームをマイグレーションすることのマイグレーション要求を送信してよい。
図20は、アプリケーションと統合構成が管理ソフトウェア130に対して指定された場合に行われる処理の流れを示す図である。
管理ソフトウェア130が、指定されたアプリケーションに対応した計算コア数及びストレージコア数を、アプリVM管理テーブル402から特定する(S2001)。
なお、アプリケーション及び統合構成の指定は、例えば次のように行われる。すなわち、アプリケーション指定UI1400の構成UI1412(図21参照)に対して統合構成が指定される。すると、アプリ指定UI1411は図21に例示の構成となる。すなわち、一つ以上のアプリケーションについて一つ以上の実行数の指定を受け付ける一つ以上のUIが展開される。例えば、アプリケーション追加ボタンが押されると、アプリケーションの指定を受け付けるUIと当該アプリケーションの実行数を受け付けるUIとの組がアプリ指定UI1411に追加される。管理者は、アプリ指定UI1411に対して、アプリケーション及び実行数を指定する。
このように、統合構成が指定される場合、一つのアプリケーションについて一つ以上のインスタンスが指定されることもあれば、複数のアプリケーションが指定されることもある。一つのアプリケーションについてNのインスタンス(Nは自然数)が指定された場合、S2001において特定される計算コア数は、当該アプリケーションに対応した計算コア数とNとの積でよく、特定されるストレージコア数は、当該アプリケーションに対応したストレージコア数とNとの積でよい。複数のアプリケーションが指定された場合、特定される計算コア数は、当該複数のアプリケーションにそれぞれ対応した複数の計算コア数1013の和でよく、特定されるストレージコア数は、当該複数のアプリケーションにそれぞれ対応した複数のストレージコア数1014の和でよい。
以下、図20の説明において、S2001で特定されたコア数(計算コア数及びストレージコア数)のコア71を持つクラスタ200を、「注目クラスタ200」と言う。注目クラスタ200は、S2001とS2002の間に管理ソフトウェア130により新規に作成されたクラスタ200(例えば、いずれのクラスタ200にも属していない二つ以上のストレージノード150で構成されたクラスタ200)でもよいし、未使用のコアの数がS2001で特定されたコア数以上である、統合構成が適用されている既存のクラスタ200でもよい。クラスタ200に適用されているクラスタ構成種類は、例えば、クラスタ管理テーブル501から特定されてよい。
管理ソフトウェア130が、注目クラスタ200(例えば、注目クラスタ200のマスタノード150)に対して、S2001で特定された計算コア数が割り当てられた計算VM1801の作成と起動を指示する(S2002)。この指示には、例えば、アプリケーション情報(例えば、指定されたアプリケーションと実行数)が関連付けられていてよい。この指示に応答して、注目クラスタ200に属する少なくとも一つのストレージノード150内に、例えば割当て決定プログラム82により、一つ以上の計算VM1801が作成され起動される。作成される計算VM1801の数は、指定されたアプリケーションの数に依存してよい。例えば、一つの計算VM1801において、同一のアプリケーションの一つ以上のインスタンスは実行されてよいが、異なるアプリケーションは実行されないでよい。アプリケーション毎に計算VM1801が作成されてもよい。
管理ソフトウェア130が、注目クラスタ200(例えば、注目クラスタ200のマスタノード150)に対して、S2001で特定されたストレージコア数が割り当てられたストレージVM1802の作成と起動を指示する(S2003)。この指示に応答して、注目クラスタ200に属する少なくとも一つのストレージノード150内に、例えば割当て決定プログラム82により、一つ以上のストレージVM1802が作成され起動される。
S2002及びS2003のいずれかにおいて、割当て決定プログラム82が、指定されたアプリケーションに適合した動作モードを選択する。図20の説明では、注目クラスタ200は一つとする。このため、適合する動作モードが異なる複数のアプリケーションが指定された場合、下記のうちの少なくとも一つに基づいて、注目クラスタ200に設定されるべき動作モードが選択されてよい。
・指定された一つ以上のアプリケーションの各々の優先度。
・指定された一つ以上のアプリケーションの各々について、指定された実行数。
・適合する動作モードが同じであるアプリケーションの数。
・指定された一つ以上のアプリケーションの各々の優先度。
・指定された一つ以上のアプリケーションの各々について、指定された実行数。
・適合する動作モードが同じであるアプリケーションの数。
動作モードが選択された後、割当て決定プログラム82が、モード設定処理(図15)を行う(S2004)。
割当て決定プログラム82は、注目クラスタ200に属する全てのストレージノード150についてS2004が行われたか否かを判断する(S2005)。
S2005の判断結果が偽の場合(S2005:No)、未処理のストレージノード150についてS2004が行われる。
S2005の判断結果が真の場合(S2005:Yes)、処理が終了する、或いは、別の所定の処理が開始される。
なお、注目クラスタ200は複数あってもよい。例えば、動作モード毎にクラスタ200が用意され、指定された一つ以上のアプリケーションの各々は、当該アプリケーションに適した動作モードに応じたクラスタで実行されてよい。
また、統合構成が指定された場合におけるモード設定処理では、ストレージVM1802で実行されるストレージ制御プログラム80における各プログラムに割り当てられるコア71の数は、選択された動作モードをキーにコア数テーブル602から特定されたコア数に一致しないことがある。なぜなら、ストレージVM1802に割り当てられたコア数がベースとなるためである。言い換えれば、ストレージVM1802で実行されるストレージ制御プログラム80における各プログラムには、ストレージVM1802に割り当てられたコア数と、選択された動作モードに対応したコア数622〜625とに基づき、コア数が配分される。例えば、ストレージVM1802に割り当てられたコア数が60であり、選択された動作モードに対応したコア数622〜625の合計が12であり、選択された動作モードに対応したコア数622が“2”の場合、コマンド制御プログラム81に割り当てられるコア71の数は、10(=60×2/12)でもよいし、選択された動作モードに対応したコア数622〜625が表すリソース配分に従う、10未満の数でもよい。
図22は、統合型スケジューラ処理の流れを示す図である。
統合型スケジューラ処理とは、統合構成が適用されているクラスタについての処理である。統合型スケジューラ処理は、クラスタのI/O統計に適した動作モードを選択することと、当該動作モードに対応したリソース割当てを行うこととを含む。統合型スケジューラ処理は、例えば、定期的に又は不定期的に、マスタノード150の割当て決定プログラム82によって行われる。以下、一つのクラスタ200を例に取る(図22の説明において「注目クラスタ200」)。
割当て決定プログラム82は、注目クラスタ200のI/O統計を特定し(S2201)、当該I/O統計に適合した動作モードを選択する(S2202)。S2201は、S1801と同様でよく、S2202は、S1802と同様でよい。
計算VM1801とストレージVM1802のコア数変更処理が行われる(S2203)。具体的には、S2202で選択された動作モードが、注目クラスタ200の現在の動作モードと異なっている場合、例えば次の処理が行われる。割当て決定プログラム82は、S2202で選択された動作モードに対応したアプリケーションIDをアプリモード管理テーブル305から特定し、特定したアプリケーションIDを管理ソフトウェア130に通知する。管理ソフトウェア130が、通知されたアプリケーションIDに対応したコア数(計算コア数及びストレージコア数)をアプリVM管理テーブル402から特定し、特定したコア数を指定した変更指示を注目クラスタ200(例えば、アプリケーションIDの通知元の割当て決定プログラム82)に送信する。この変更指示に応答して、例えば割当て決定プログラム82により、下記が行われる。
・既存の計算VM1801に割り当てられているコア数が、変更指示で指定されている計算コア数と異なっている場合、既存の計算VM1801に割り当てられているコア71の数が、当該指定されている計算コア数に変更される。
・既存のストレージVM1802に割り当てられているコア数が、変更指示で指定されているストレージコア数と異なっている場合、既存のストレージVM1802に割り当てられているコア71の数が、当該指定されているストレージコア数に変更される。
・既存の計算VM1801に割り当てられているコア数が、変更指示で指定されている計算コア数と異なっている場合、既存の計算VM1801に割り当てられているコア71の数が、当該指定されている計算コア数に変更される。
・既存のストレージVM1802に割り当てられているコア数が、変更指示で指定されているストレージコア数と異なっている場合、既存のストレージVM1802に割り当てられているコア71の数が、当該指定されているストレージコア数に変更される。
割当て決定プログラム82が、モード設定処理(図15)を行う。モード設定処理において、最近選択された動作モードは、S2202で選択された動作モードである。
割当て決定プログラム82は、注目クラスタ200に属する全てのストレージノード150についてS2203及びS2204が行われたか否かを判断する(S2205)。
S2205の判断結果が偽の場合(S2205:No)、未処理のストレージノード150についてS2203が行われる。
S2205の判断結果が真の場合(S2205:Yes)、統合型スケジューラ処理が終了する。
以上が、本実施形態についての説明である。なお、アプリモード管理テーブル305に代えて又は加えて、少なくとも一つのストレージノード150のメモリ90に、図23に例示のモード選択支援テーブル2300が格納されてよい。モード選択支援テーブル2300は、例えば、動作モード毎に、レコードを有してよい。レコードが、動作モードのIDを表すモードID2311と、当該動作モードに適合するアプリケーションID及びアプリケーション名を表すアプリ情報2312と、当該動作モードに適合するI/O特性サマリを表すI/Oサマリ2313と、当該動作モードに適合するクラスタ構成種類を表す構成種類2314といった情報を含んでよい。割当て決定プログラム82が、指定されたアプリケーションと、指定されたクラスタ構成種類と、クラスタについて取得されたI/O統計とに対応する動作モードを、モード選択支援テーブル2300から選択できる。
以上の説明を、例えば以下のように総括することができる。
例えばSDSソフトウェアを各計算機が実行することで構築されるマルチノードストレージシステムの一例としてのストレージシステム95において、ハードウェア制御プログラム84(ハードウェア制御部の一例)は、リソース群の一つ以上のドライバを含む。ハードウェア制御プログラム84は、ストレージノード150のOS(Operating System)における一部のプログラムを含むこともあり得る。このようなハードウェア制御プログラム84は、一般に、コマンド制御プログラム81(コマンド制御部の一例)のベンダとは異なるベンダにより提供される。ストレージノード150において、コマンド制御プログラム81と、コマンド制御プログラム81により制御されるハードウェア制御プログラム84といった複数のプログラムの各々に適したリソース量は、ストレージノード150の状況次第である。
そこで、ストレージシステム95のうちの少なくとも一つのストレージノード150(例えば、マスタノード150)が、割当て決定プログラム82(割当て決定部の一例)を有する。割当て決定プログラム82が、当該ストレージノード150を含む一つ以上のストレージノード150のI/O特性に基づき、当該一つ以上のストレージノード150について、ハードウェア制御プログラム84及びコマンド制御プログラム81を含む複数のプログラムに対するリソース割当てを決定する。当該一つ以上のストレージノード150の各々では、当該ストレージノード150のリソース群のリソース量のうち、ハードウェア制御プログラム84及びコマンド制御プログラム81を含む複数のプログラムの各々に割り当てられるリソース量は、上記決定されたリソース割当てに従う。これにより、ストレージシステム95の性能を向上する適切なリソース割当てを自動で決定できる。なお、各ノード150について、少なくとも一種類の計算リソースに関し、「リソース量」は、計算リソースの数と、計算リソースを使用可能な時間長とのうちの少なくとも一つでよい。また、「リソース割当て」は、基準としてのリソース量の配分であってよい。
複数のストレージノード150の各々は、複数のクラスタ200のうちのいずれかの構成要素でよい。各クラスタ200は、二つ以上のストレージノード150で構成されてよい。そして、直前の段落の「一つ以上のストレージノード150」は、複数のクラスタ200のいずれかである対象クラスタ200でよい。これにより、クラスタ単位でのリソース割当てを実現でき、以って、クラスタ200毎に、クラスタのI/O特性に適した性能が期待される。
対象クラスタ200のI/O特性は、アプリケーション指定UI1400(ユーザインターフェースの一例)を介して入力された情報であるアプリケーション情報に基づいてよい。アプリケーション情報は、対象クラスタ200にI/Oコマンドを発行する一つ以上のアプリケーションを表す情報でよい。これにより、対象クラスタ200の起動前に対象クラスタ200について期待されるI/O特性に適したリソース割当てが実現される。このため、対象クラスタ200の性能向上が期待される。
各ストレージノード150が、当該ストレージノード150のライト量とリード量に基づく統計であるI/O統計を監視する監視プログラム85(監視部の一例)を備えてよい。対象クラスタ200のI/O特性は、対象クラスタ200を構成する二つ以上のストレージノード150の各々のI/O統計から特定される、対象クラスタ200のI/O統計を含んでよい。対象クラスタ200のI/O特性に基づきリソース割当てが決定される都度に、対象クラスタ200に属する二つ以上のストレージノードの各々では、当該決定されたリソース割当てが対象クラスタ200の最近のリソース割当てと異なっていれば、当該決定されたリソース割当てに従い、ハードウェア制御プログラム84及びコマンド制御プログラム81を含む複数のプログラムの各々に割り当てられるリソース量が変更されてよい。これにより、対象クラスタ200のI/O統計に適したリソース割当てが維持され、以って、対象クラスタ200の性能が維持されることが期待される。
対象クラスタ200のI/O特性は、対象クラスタ200がアプリケーションから発行されるI/Oコマンドをネットワーク経由で受信するか否かに従うクラスタ構成種類を含んでよい。これにより、クラスタ構成種類にも適したリソース割当てが期待される。
複数のクラスタ200の各々が、一つ以上のボリュームを有してよい。対象クラスタ200に、対象クラスタ200のI/O特性に適合しないI/O特性のボリュームである対象ボリュームがある場合、当該対象ボリュームが、対象クラスタ200から、当該対象ボリュームのI/O特性に適合するI/O特性を持つクラスタ200にマイグレーションされてよい。これにより、各クラスタ200には、当該クラスタ200のI/O特性に適合するI/O特性のボリュームが相対的に多くなり、結果として、各クラスタ200の性能向上が期待される。
リソース割当ての決定とは、I/Oに関わる複数の動作モードから、一つ以上のストレージノードのI/O特性に適合する動作モードを選択することでよい。複数の動作モードの各々について、当該動作モードには、当該動作モードに従うリソース割当てが関連付けられていてよい。一つ以上のストレージノード150の各々について(例えば、各クラスタ200について)、決定されたリソース割当ては、選択された動作モードに関連付けられているリソース割当てでよい。このように、動作モード経由でリソース割当てが決まるので、最適なリソース割当てを決定し易いことが期待される。
以上、本発明の一実施例を説明したが、本発明は、この実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、ストレージシステム95は、必ずしもクラスタ200を有さなくてもよい。
95:ストレージシステム
Claims (12)
- 複数のストレージノードを含むノード群を備え、
前記複数のストレージノードの各々が、
一つ以上のプロセッサデバイスと、一つ以上の記憶デバイスと、一つ以上の通信インターフェースデバイスとを含む複数の計算リソースであるリソース群と、
前記一つ以上の永続記憶デバイスと前記一つ以上の通信インターフェースデバイスとを制御する一つ以上のドライバを含むハードウェア制御部と、
当該ストレージノードがI/O(Input/Output)コマンドを受信した場合、当該I/Oコマンドに従うI/Oのための処理において前記ハードウェア制御部を制御するコマンド制御部と
を備え、
前記ノード群のうちの少なくとも一つのストレージノードが、当該ストレージノードを含む一つ以上のストレージノードのI/O特性に基づき、当該一つ以上のストレージノードについて、ハードウェア制御部及びコマンド制御部に対するリソース割当てを決定する割当て決定部を備え、
前記一つ以上のストレージノードの各々では、当該ストレージノードのリソース群のリソース量のうち、ハードウェア制御部及びコマンド制御部の各々に割り当てられるリソース量は、前記決定されたリソース割当てに従う、
ストレージシステム。 - 前記複数のストレージノードの各々は、複数のクラスタのうちのいずれかの構成要素であり、
前記複数のクラスタの各々は、二つ以上のストレージノードで構成されており、
前記一つ以上のストレージノードは、前記複数のクラスタのいずれかである対象クラスタである、
請求項1に記載のストレージシステム。 - 前記対象クラスタのI/O特性は、ユーザインターフェースを介して入力された情報であるアプリケーション情報に基づき、
前記アプリケーション情報は、前記対象クラスタにI/Oコマンドを発行する一つ以上のアプリケーションを表す情報である、
請求項2に記載のストレージシステム。 - 前記複数のストレージノードの各々が、当該ストレージノードのライト量とリード量に基づく統計であるI/O統計を監視する監視部を備え、
前記対象クラスタのI/O特性は、前記対象クラスタを構成する二つ以上のストレージノードの各々のI/O統計から特定される、前記対象クラスタのI/O統計を含み、
前記対象クラスタのI/O特性に基づきリソース割当てが決定される都度に、前記二つ以上のストレージノードの各々では、当該決定されたリソース割当てが前記対象クラスタの最近のリソース割当てと異なっていれば、当該決定されたリソース割当てに従い、ハードウェア制御部及びコマンド制御部の各々に割り当てられるリソース量が変更される、
請求項3に記載のストレージシステム。 - 前記対象クラスタのI/O特性は、前記対象クラスタがアプリケーションから発行されるI/Oコマンドをネットワーク経由で受信するか否かに従うクラスタ構成種類を含む、
請求項4に記載のストレージシステム。 - 前記複数のクラスタの各々が、一つ以上のボリュームを有し、
前記対象クラスタに、前記対象クラスタのI/O特性に適合しないI/O特性のボリュームである対象ボリュームがある場合、当該対象ボリュームが、前記対象クラスタから、当該対象ボリュームのI/O特性に適合するI/O特性を持つクラスタにマイグレーションされる、
請求項5に記載のストレージシステム。 - 前記一つ以上のストレージノードのI/O特性は、ユーザインターフェースを介して入力された情報が表すアプリケーション定義に基づき、
前記アプリケーション定義は、前記一つ以上のストレージノードにI/Oコマンドを発行する一つ以上のアプリケーションに関する定義であり、当該一つ以上のアプリケーションのうちの少なくとも一つのアプリケーションの種別を含む、
請求項1に記載のストレージシステム。 - 前記複数のストレージノードの各々が、当該ストレージノードのライト量とリード量に基づく統計であるI/O統計を監視する監視部を備え、
前記一つ以上のストレージノードのI/O特性は、当該一つ以上のストレージノードの各々のI/O統計から特定される、当該一つ以上のストレージノードのI/O統計を含み、
当該一つ以上のストレージノードのI/O特性に基づきリソース割当てが決定される都度に、当該一つ以上のストレージノードの各々では、当該決定されたリソース割当てが当該一つ以上のストレージノードの最近のリソース割当てと異なっていれば、当該決定されたリソース割当てに従い、ハードウェア制御部及びコマンド制御部の各々に割り当てられるリソース量が変更される、
請求項1に記載のストレージシステム。 - 前記一つ以上のストレージノードのI/O特性は、当該一つ以上のストレージノードがアプリケーションから発行されるI/Oコマンドをネットワーク経由で受信するか否かに従う構成種別を含む、
請求項1に記載のストレージシステム。 - 前記複数のストレージノードの各々が、一つ以上のボリュームを有し、
前記一つ以上のストレージノードに、当該一つ以上のストレージノードのI/O特性に適合しないI/O特性のボリュームである対象ボリュームがある場合、当該対象ボリュームが、前記一つ以上のストレージノードから、当該対象ボリュームのI/O特性に適合するI/O特性を持つ一つ以上のストレージノードにマイグレーションされる、
請求項1に記載のストレージシステム。 - リソース割当ての決定とは、I/Oに関わる複数の動作モードから、前記一つ以上のストレージノードのI/O特性に適合する動作モードを選択することであり、
前記複数の動作モードの各々について、当該動作モードには、当該動作モードに従うリソース割当てが関連付けられており、
前記一つ以上のストレージノードの各々について、前記決定されたリソース割当ては、前記選択された動作モードに関連付けられているリソース割当てである、
請求項1に記載のストレージシステム。 - 複数のストレージノードを含むノード群のうちの一つ以上のストレージノードのI/O特性を特定し、
前記複数のストレージノードの各々が、
一つ以上のプロセッサデバイスと、一つ以上の記憶デバイスと、一つ以上の通信インターフェースデバイスとを含む複数の計算リソースであるリソース群と、
前記一つ以上の永続記憶デバイスと前記一つ以上の通信インターフェースデバイスとを制御する一つ以上のドライバを含むハードウェア制御部と、
当該ストレージノードがI/O(Input/Output)コマンドを受信した場合、当該I/Oコマンドに従うI/Oのための処理において前記ハードウェア制御部を制御するコマンド制御部と
を備え、
前記特定されたI/O特性に基づき、当該一つ以上のストレージノードについて、当該一つ以上のストレージノードの各々におけるハードウェア制御部及びコマンド制御部に対するリソース割当てを決定し、
前記一つ以上のストレージノードの各々では、当該ストレージノードのリソース群のリソース量のうち、ハードウェア制御部及びコマンド制御部の各々に割り当てられるリソース量は、前記決定されたリソース割当てに従う、
リソース割当て制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019146229A JP2021026659A (ja) | 2019-08-08 | 2019-08-08 | ストレージシステム及びリソース割当て制御方法 |
US16/808,092 US20210042045A1 (en) | 2019-08-08 | 2020-03-03 | Storage system and resource allocation control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019146229A JP2021026659A (ja) | 2019-08-08 | 2019-08-08 | ストレージシステム及びリソース割当て制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021026659A true JP2021026659A (ja) | 2021-02-22 |
Family
ID=74499275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019146229A Pending JP2021026659A (ja) | 2019-08-08 | 2019-08-08 | ストレージシステム及びリソース割当て制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210042045A1 (ja) |
JP (1) | JP2021026659A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11853175B2 (en) | 2022-01-17 | 2023-12-26 | Hitachi, Ltd. | Cluster system and restoration method that performs failover control |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11516291B2 (en) * | 2020-09-29 | 2022-11-29 | Cohesity, Inc. | Secure communications of storage tenants that share a storage cluster system |
US11275666B1 (en) * | 2020-10-01 | 2022-03-15 | Dell Products, L.P. | Method and apparatus for identifying high importance devices of a consistency group |
DE102020133585A1 (de) * | 2020-12-15 | 2022-06-15 | Infineon Technologies Ag | Vorrichtungen und systeme für bestimmte speicherinterne verarbeitungen |
US11966631B2 (en) * | 2021-04-16 | 2024-04-23 | Western Digital Technologies, Inc. | Command queue order adjustment in a data storage device |
US11461031B1 (en) * | 2021-06-22 | 2022-10-04 | International Business Machines Corporation | Non-disruptive storage volume migration between storage controllers |
-
2019
- 2019-08-08 JP JP2019146229A patent/JP2021026659A/ja active Pending
-
2020
- 2020-03-03 US US16/808,092 patent/US20210042045A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11853175B2 (en) | 2022-01-17 | 2023-12-26 | Hitachi, Ltd. | Cluster system and restoration method that performs failover control |
Also Published As
Publication number | Publication date |
---|---|
US20210042045A1 (en) | 2021-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6957431B2 (ja) | Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム | |
US9977689B2 (en) | Dynamic scaling of management infrastructure in virtual environments | |
JP2021026659A (ja) | ストレージシステム及びリソース割当て制御方法 | |
US10129333B2 (en) | Optimization of computer system logical partition migrations in a multiple computer system environment | |
US10108460B2 (en) | Method and system for integrated deployment planning for virtual appliances | |
JP6054522B2 (ja) | 統合型ストレージ/vdiプロビジョニング方法 | |
JP5577412B2 (ja) | 計算機システム、マイグレーション方法及び管理サーバ | |
US11544226B2 (en) | Metadata control in a load-balanced distributed storage system | |
US20140059310A1 (en) | Virtualization-Aware Data Locality in Distributed Data Processing | |
US20080294872A1 (en) | Defragmenting blocks in a clustered or distributed computing system | |
US10248460B2 (en) | Storage management computer | |
JP2016526735A (ja) | 仮想ハドゥープマネジャ | |
JP7003692B2 (ja) | 情報処理装置,情報処理システムおよび制御プログラム | |
US20130185531A1 (en) | Method and apparatus to improve efficiency in the use of high performance storage resources in data center | |
US11726684B1 (en) | Cluster rebalance using user defined rules | |
US20230155958A1 (en) | Method for optimal resource selection based on available gpu resource analysis in large-scale container platform | |
US11550613B2 (en) | Computer system | |
US11336519B1 (en) | Evaluating placement configurations for distributed resource placement | |
US20230205439A1 (en) | Information processing system and configuration management method | |
US20240160487A1 (en) | Flexible gpu resource scheduling method in large-scale container operation environment |