(58)【調査した分野】(Int.Cl.,DB名)
前記計算機システムに含まれる前記1以上の計算機の少なくとも1つが、前記複数の記憶デバイスに対応した複数の物理容量を監視する機能とその複数の物理容量を表す情報を含んだ容量情報を通知する機能とを含んだストレージ制御機能を実行し、
前記プロセッサ部は、リバランス制御機能を実行し、
前記リバランス制御機能は、
前記ストレージ制御機能から通知された容量情報を受信し、
前記受信した容量情報を(A)で格納し、
(B)及び(C)を実行する、
請求項1記載のデータリバランス制御システム。
前記少なくとも1つのエンティティが複数のリバランス機能を有している場合、(B)で決定される指示内容は、前記複数のリバランス機能のうちの優先度が最も高いリバランス機能に対する指示内容である、
請求項3記載のデータリバランス制御システム。
【発明を実施するための形態】
【0016】
以下の説明では、「アプリ」とは、アプリケーションプログラムの略である。
【0017】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別する場合は、要素のIDを使用することがある。例えば、アプリを区別しない場合には、「アプリ212」と言い、アプリを区別する場合には、「アプリa1」、「アプリa2」、「アプリa3」のように言う。
【0018】
また、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0019】
また、以下の説明では、「記憶部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
【0020】
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【0021】
また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
【0022】
また、以下の説明では、「計算機システム」は、1以上の物理的な計算機を含む。少なくとも1つの物理的な計算機が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)またはSDDC(Software-defined Datacenter)を採用することができる。
【0023】
また、以下の説明では、「管理システム」は、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が表示デバイスを有していて管理計算機が自分の表示デバイスに情報を表示する場合、管理計算機が管理システムでよい。また、例えば、管理計算機(例えばサーバ)が表示用情報を遠隔の表示用計算機(例えばクライアント)に送信し表示用計算機がその情報を表示する場合(管理計算機が表示用計算機に情報を表示する場合)、管理計算機と表示用計算機とのうちの少なくとも管理計算機を含んだシステムが管理システムでよい。管理システムは、インターフェース部、記憶部およびそれらに接続されたプロセッサ部を有してよい。インターフェース部は、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも1つを含んでよい。ユーザインターフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボードおよびポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスを含んでよい。通信インターフェース部は、1以上の通信インターフェースデバイスを含んでよい。管理システムにおける計算機が「表示用情報を表示する」ことは、計算機が有する表示デバイスに表示用情報を表示することであってもよいし、計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。
【0024】
また、以下の説明では、「kkk部」の表現にて処理部(機能)を説明することがあるが、処理部は、1以上のコンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、1以上のハードウェア回路(例えばFPGAまたはASIC(Application Specific Integrated Circuit))によって実現されてもよい。プログラムがプロセッサ部によって処理部が実現される場合、定められた処理が、適宜に記憶資源(例えばメモリ)および/または通信インターフェイスデバイス(例えば通信ポート)等を用いながら行われるため、処理部はプロセッサ部の少なくとも一部とされてもよい。処理部を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースからプロセッサにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各処理部の説明は一例であり、複数の処理部が1つの処理部にまとめられたり、1つの処理部が複数の処理部に分割されたりしてもよい。
【0025】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部およびインターフェース部のうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ部(或いは、プロセッサ部を有する計算機)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0026】
また、以下の説明では、管理システムと計算機(計算機システムにおける少なくとも1つの計算機)とのうちの少なくとも1つが、データリバランス制御システムの一例である。データリバランス制御システムは、管理システムと、計算機システムにおける少なくとも1つの計算機とのうちの少なくとも1つとを含んでよい。
【0027】
また、以下の説明では、「物理容量」は、典型的には物理残容量を意味し、「論理容量」は、典型的には論理残容量を意味するものとする。
【0028】
以下、図面を参照して、本発明の幾つかの実施例を説明する。
【実施例1】
【0029】
図1は、第一の実施例に係る情報システムの全体構成を示す。
【0030】
情報システムは、管理システム161、ホストシステム162、計算機システム、および、複数の記憶デバイス101を含む。管理システム161、ホストシステム162および計算機システムが、ネットワーク104を介して通信することができる。ネットワーク104は、例えばIP(Internet Protocol)ネットワークである。
【0031】
管理システム161は、マネージャ103を実行する。
【0032】
ホストシステム162は、1以上のホスト計算機であり、1以上のアプリ212(例えばアプリa2)を実行する。
【0033】
計算機システムは、1以上の計算機102(例えば計算機AおよびB)を含む。1以上の計算機102には、1以上の記憶デバイス101(例えば記憶デバイスA〜C)が接続される。1以上の計算機102は、記憶デバイス101と同数のノード111(例えばノードn1〜n3)を有する。ノード111は、計算機102において実行されるコンピュータプログラムの一例でよい。ノード111と記憶デバイス101は、一対一で対応するものとする。すなわち、ノードn1〜n3は、それぞれ、記憶デバイスA〜Cに対応するものとする。
【0034】
また、1以上の計算機102のうちの少なくとも1つにおいて、アプリ212が実行される。例えば、計算機Aにおいて、アプリa1が実行され、計算機Bにおいて、アプリa3が実行されるとする。アプリ212は、Webアプリケーションでもよいし、ミドルウェアでもよいし、OS(Operating System)でもよい。少なくとも1つの計算機102において、ノード111以外のコンピュータプログラムのうちの少なくとも1つが、アプリ212に該当し得る。本実施例では、アプリa1〜a3のうちの少なくともアプリa1またはa3が、分散アプリケーションでよい。具体的には、例えば、記憶デバイスA〜Cがそれぞれ提供する論理記憶空間を、アプリa1およびa3のうちの少なくとも1つが認識していてよく、アプリa1およびa3の少なくとも1つが、複数の論理記憶空間の間において論理容量(当該アプリが認識する論理容量)の配分が決められた配分となるようにデータをリバランスするリバランス機能を有していてよい。
【0035】
図2は、記憶デバイス101と計算機102の構成を示す。
【0036】
1以上の記憶デバイス101のうちの少なくとも1つが圧縮機能を有するが、本実施例では、各記憶デバイス101が、圧縮機能289を有する。
【0037】
記憶デバイス101は、記憶媒体201と、記憶媒体201に対するデータのI/O(Input/Output)を制御するコントローラであるデバイスコントローラ282とを有する。
【0038】
各記憶デバイス101は、典型的には、物理的な不揮発性の記憶デバイスであり、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)である。このため、記憶媒体201は、例えば、ハードディスクまたはフラッシュメモリ(1以上のフラッシュメモリチップ)である。本実施例では、各記憶デバイス101は、SSDであるとする。
【0039】
デバイスコントローラ282は、記憶媒体201に接続されている。また、デバイスコントローラ282は、計算機102に接続される。デバイスコントローラ282は、例えば、プロセッサやメモリといった計算機リソースを有してよい。デバイスコントローラ282は、計算機102からI/Oコマンドを受け付け、そのI/Oコマンドに従い、記憶媒体201に対するデータのライトまたはリードを実行する。デバイスコントローラ282は、記憶媒体201の物理記憶容量、物理使用容量および物理残容量を管理できる。デバイスコントローラ282は、記憶媒体201に基づく論理記憶空間を計算機102に提供できる。デバイスコントローラ282は、圧縮機能289を有する。また、圧縮機能289は、コンピュータプログラムがプロセッサにより実行されることによって実現されてもよいし、ハードウェア回路(例えばASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array))として実現されてもよい。
【0040】
計算機102は、FE I/F(フロントエンドインターフェースデバイス)256、BE I/F(バックエンドインターフェースデバイス)258、メモリ252、およびそれらに接続されたプロセッサ251を有する。
【0041】
FE I/F256は、ネットワーク104に接続される。BE I/F258は、記憶デバイス101のデバイスコントローラ282に接続される。FE I/F256およびBE I/F258が、インターフェース部の一例である。
【0042】
メモリ252は、記憶部の一例であり、ノード111と1以上のアプリ212を格納する。ノード111およびアプリ212が、プロセッサ251によって実行される。
【0043】
ノード111は、そのノード111に対応した記憶デバイス101の論理記憶空間を、そのノード111を実行する計算機102内のアプリ212に提供する。ノード111は、そのノード111に対応した記憶デバイス101の論理記憶空間を、そのノード111を実行する計算機102外のアプリ212に提供してもよい。ノード111は、論理記憶空間に対するI/O要求を受け付け、そのI/O要求に従い、そのノード111に対応する記憶デバイス101に対してデータのライトまたはリードを実行する(I/Oコマンドを記憶デバイス101に送信する)。ノード111は、その対応する記憶デバイス101に対するライト対象のデータ(ライト対象データのI/O要求)を、例えばデータの冗長性維持のために、他記憶デバイス101に接続されているノード111(例えば、他計算機102内のノード111)に転送することができる。転送されたライト対象データは他記憶デバイス101に格納されてよい。ノード111は、例えばSDS(Software Defined Storage)でよい。ノード111は、ストレージサービス221を有する。
【0044】
ストレージサービス221は、I/O要求を受け付けそのI/O要求に従い記憶デバイス101に対してデータのライトまたはリードを実行する仮想的なコントローラである仮想的なストレージコントローラに相当する。つまり、ストレージサービス221、または、ストレージサービス221を含んだノード111が、ストレージ制御機能の一例である。ストレージサービス221は、容量監視機能231、容量通知機能232、およびリバランス機能233を有する。容量監視機能231は、この機能231を含んだノード111に対応する記憶デバイス101の論理容量および物理容量を監視する(例えば定期的にチェックする)。容量通知機能232は、容量監視機能231により特定された論理容量および物理容量をマネージャ103に通知する。リバランス機能233は、データをリバランスする。
【0045】
アプリ212は、リバランス機能241を有する。リバランス機能241は、データをリバランスする。
【0046】
リバランス機能233および241は、同一の機能であっても異なる機能であってもよい。後者の場合、リバランス機能233は、第1のリバランス方法に従うリバランスを実行し、リバランス機能241は、第2のリバランス方法に従うリバランスを実行してもよい。リバランス機能233および241のうちの少なくともリバランス機能241(アプリ212が有するリバランス機能241)は、アプリ212が物理容量を把握することは通常できないため、そのリバランス機能241に定義されている論理容量配分通りに(例えば論理容量が平準化するように)データをリバランスするようになっている。
【0047】
図3は、管理システム161の構成を示す。
【0048】
管理システム161は、入力デバイス355、出力デバイス356、I/F(インターフェースデバイス)358、メモリ352、およびそれらに接続されたプロセッサ351を有する。
【0049】
入力デバイス355、例えばキーボードおよびポインティングデバイスである。出力デバイス356は、例えば液晶ディスプレイのような表示デバイスである。入力デバイス355および出力デバイス356が、例えばタッチパネルのように一体であってもよい。
【0050】
I/F358は、ネットワーク104に接続される。I/F358が、インターフェース部の一例である。
【0051】
メモリ352は、記憶部の一例であり、マネージャ103を格納する。マネージャ103が、プロセッサ351によって実行される。
【0052】
マネージャ103は、リバランス機能(例えばアプリのようなエンティティ)とストレージ制御機能(本実施例ではストレージサービス221)とを連携するリバランス制御機能の一例である。ここで言う「連携」とは、容量(論理容量および物理容量)を表す情報を含んだ容量情報をストレージ制御機能から受信することと、受信した容量に基づきリバランス指示をリバランス機能に対して送信することを意味する。これにより、物理容量を把握できないエンティティが行うリバランスを物理容量に基づいて制御することができる。マネージャ103は、テーブル設定機能301、容量受信機能302、枯渇検知機能303、リバランス選択機能304およびリバランス指示機能305を有する。また、マネージャ103は、リバランス優先度テーブル306、枯渇条件テーブル307およびノード容量テーブル308を管理する。
【0053】
テーブル設定機能301は、テーブル306〜308の設定および更新を行う。容量受信機能302は、記憶デバイス101の論理容量および物理容量を表す情報である容量情報をノード111から受信する。枯渇検知機能303は、容量枯渇を検知する。リバランス選択機能304は、リバランス機能を選択する。リバランス指示機能305は、選択されたリバランス機能に対するリバランス実施を指示する。
【0054】
以下、リバランス優先度テーブル306、枯渇条件テーブル307およびノード容量テーブル308を説明する。
【0055】
図4Aは、リバランス優先度テーブル306の一例を示す。
【0056】
リバランス優先度テーブル306は、リバランス機能に関する情報を保持する。リバランス優先度テーブル306は、リバランス機能毎に、リバランス機能を識別するIDであるリバランスID421と、当該リバランス機能を持つアプリを識別するIDであるアプリID422と、当該リバランス機能の優先度を示す優先度423といった情報を保持する。本実施例では、優先度423の値が小さいほど、高い優先度となる。また、リバランス機能を有する対象がストレージサービス221の場合、ストレージサービス221のIDがアプリIDとして登録されてもよい。
【0057】
例えば、1番目の行によれば、リバランス機能r1(リバランスID“r1”で識別されるリバランス機能)の優先度が“2”であり、アプリa2およびa3(アプリID“a2”および“a3”でそれぞれ識別されるアプリ212)の各々がリバランス機能r1を有している。また、1番目の行と2番目の行によれば、アプリa1とアプリa3が動作しているノードでリバランスを実施する場合、アプリa3が有するリバランス機能r1の優先度が“2”であり、アプリa1が有するリバランス機能r2の優先度が“1”であることから、優先度が“1”であるアプリa1のリバランス機能r2を優先的に実施する。
【0058】
図4Bは、枯渇条件テーブル307の一例を示す。
【0059】
枯渇条件テーブル307は、枯渇条件に関する情報を保持する。枯渇条件テーブル307は、ノード111毎に、ノード111を識別するIDであるノードID431と、当該ノード111に対応する記憶デバイス101にデータを格納するアプリ212と当該アプリ212がデータを格納する記憶デバイス101に対応するノード111の一覧を示すアプリ稼働432と、当該ノード111に対応する記憶デバイス101の容量枯渇の定義である枯渇条件を示す枯渇条件433といった情報を保持する。アプリ稼働432は、アプリIDと、当該アプリIDに対応したアプリのデータ格納先である記憶デバイス101に対応するノード111を識別するノードIDとの組合せである。
【0060】
例えば、1番目の行によれば、ノードn1(ノード識別子“n1”で識別されるノード111)に対応する記憶デバイス101には、アプリa1およびアプリa3がデータを格納するようになっている。当該記憶デバイス101にデータを格納するアプリa1は、ノードn1、ノードn2、ノードn3に対応する記憶デバイス101にもデータを格納する。また、当該記憶デバイス101にデータを格納するアプリa2は、ノードn1、ノードn2、ノードn3に対応する記憶デバイス101にもデータを格納する。ノードn1に対応する記憶デバイス101は、当該記憶デバイス101の物理残容量が10GB未満であり、かつ、物理残容量が論理残容量未満である場合に、容量枯渇と判断される。
【0061】
なお、「論理容量」とは、論理使用容量又は論理残容量であり、アプリ212が認識する容量である。「物理容量」とは、物理使用容量又は物理残容量であり、記憶デバイス101が認識する容量である。アプリ212が記憶デバイス101に格納するデータは、記憶デバイス101の圧縮機能289により圧縮された後、その記憶デバイス101の記憶媒体201に格納される。つまり、論理使用容量は圧縮前の容量、物理使用容量は圧縮後の容量と言うこともできる。
【0062】
枯渇条件は、複数の記憶デバイス101(複数のノード111)のうちの2以上の記憶デバイス101(2以上のノード111)について異なっていてもよい。つまり、記憶デバイス101によって異なる枯渇条件が採用されてもよい。枯渇条件は、リバランス実行要の条件の一例である。記憶デバイス101によって異なる枯渇条件が採用されることで、柔軟なデータリバランス、例えば、記憶デバイス101(ノード111)にとってより適切なタイミングでデータをリバランスすることが期待できる。
【0063】
図4Cは、ノード容量テーブル308の一例を示す。
【0064】
ノード容量テーブル308は、ノード111が管理する容量に関する情報を保持する。ノード容量テーブル308は、ノード111毎に、ノード111を識別するIDであるノードID441と、当該ノード111に対応する記憶デバイス101の論理記憶容量のうちの論理使用容量を示す論理使用容量442と、当該ノード111に対応する記憶デバイス101の論理記憶容量のうちの論理残容量を示す論理残容量443と、当該ノード111に対応する記憶デバイス101の物理記憶容量のうちの物理使用容量を示す物理使用容量444と、当該ノード111に対応する記憶デバイス101の物理記憶容量のうちの物理残容量を示す物理残容量445といった情報を保持する。
【0065】
例えば、1番目の行によれば、ノードn1に対応する記憶デバイス101の論理記憶容量のうち、400GBが論理使用容量であり、200GBが論理残容量である。当該記憶デバイス101の物理記憶容量のうち、60GBが物理使用容量であり、140GBが物理残容量である。
【0066】
図4Cのノード容量テーブル308によれば、全ての記憶デバイス101の物理記憶容量は同じ(200GB)であるが、物理記憶容量の異なる記憶デバイス101が混在していてもよい。
【0067】
図5は、マネージャ103により実施されるテーブル設定処理のフローチャートである。本処理は、ユーザ(例えば管理者)により設定が更新される際に実施される。
【0068】
テーブル設定機能301は、ユーザから、入力デバイス355経由で、アプリ212に関する情報(例えばアプリID)と、当該アプリ212が用いる記憶デバイス101に対応したノード111に関する情報(例えばノードID)との入力を受ける(ステップ501)。
【0069】
テーブル設定機能301は、ユーザから、入力デバイス355経由で、ノード111について、そのノード111に対応した記憶デバイス101の枯渇条件に関する情報の入力を受ける(ステップ502)。
【0070】
テーブル設定機能301は、ステップ501とステップ502で受けた情報を枯渇条件テーブル307に登録する、すなわち、枯渇条件テーブル307を更新する(ステップ503)。この際、記憶デバイス101とノード111は一対一で対応しているため、テーブル設定機能301は、記憶デバイス101に関する情報からノード111を一意に決定することができる。なお、枯渇条件433として初期値が予め登録されていてもよい(ステップ502がスキップされてもよい)。
【0071】
テーブル設定機能301は、ユーザから、入力デバイス355経由で、アプリ212が有するリバランス機能241に関する情報(例えば、リバランスIDおよびアプリID)を受ける(ステップ504)。
【0072】
テーブル設定機能301は、ユーザから、入力デバイス355経由で、リバランス機能241の優先度に関する情報(例えば優先度としての値)を受ける(ステップ505)。
【0073】
テーブル設定機能301は、ステップ504とステップ505で受けた情報をリバランス優先度テーブル306に登録する、つまり、リバランス優先度テーブル306を更新する(ステップ506)。なお、アプリIDおよびリバランスIDは予めテーブル306に登録されていてもよい(ステップ504がスキップされてもよい)。
【0074】
図6は、ストレージサービス221により実施される容量監視処理のフローチャートである。本処理は、例えば定期的に実施される。また、
図6の説明において、ストレージサービス221を含んだノード111を「対象ノード111」と言う。
【0075】
容量監視機能231は、対象ノード111に対応する記憶デバイス101に容量情報を要求する(ステップ601)。容量監視機能231は、記憶デバイス101から容量情報として、当該記憶デバイス101の論理使用容量、論理残容量、物理使用容量および物理残容量を示す情報を受信する(ステップ602)。
【0076】
容量通知機能232は、ステップ602で容量監視機能231が受信した容量情報をマネージャ103に通知する(ステップ603)。
【0077】
マネージャ103は、容量情報を受信する度に、次のような容量情報更新処理を実施する。すなわち、容量受信機能302は、受信した容量情報(論理使用容量、論理残容量、物理使用容量および物理残容量を示す情報)を、ノード容量テーブル308に登録する。
【0078】
図7は、マネージャ103により実施されるリバランス制御処理のフローチャートである。本処理は例えば定期的に実施される。
【0079】
枯渇検知処理を実施していないノードである未実施ノードがある場合(ステップ701:YES)、枯渇検知機能303は、当該未実施ノードに対応した記憶デバイスが容量枯渇しているか否かを、枯渇条件テーブル307とノード容量テーブル308を参照して判断する(ステップ702)。
【0080】
例えば、
図4Bの枯渇条件テーブル307において、ノードn1の枯渇条件から、当該ノードn1では、物理残容量が10GB未満、かつ、物理残容量が論理残容量未満の時に枯渇と判断される。ノード容量テーブル308において、ノードn1の論理残容量は200GBであり、物理残容量は140GBである。ノードn1の枯渇条件が満たされていないため、ノードn1については枯渇は検知されない。
【0081】
ステップ702において、枯渇が検知されない場合(ステップ702:NO)、ステップ701に戻る。ステップ701において、全てのノードで枯渇検知処理が実施済みの場合(ステップ701:NO)、本リバランス制御処理が終了する。
【0082】
また、例えば、枯渇条件テーブル307において、ノードn2の枯渇条件から、当該ノードn2では物理残容量が10GB未満、かつ、物理残容量が論理残容量未満の時に枯渇と判断される。ノード容量テーブル308において、ノードn2の論理残容量は200GBであり、物理残容量は8GBである。ノードn2の枯渇条件が満たされているため、ノードn2については枯渇が検知される。
【0083】
ステップ702で、枯渇が検知される場合(ステップ702:YES)、リバランス選択機能304は、枯渇条件テーブル307とリバランス優先度テーブル306を参照してリバランス方法を検索する(ステップ703)。例えば、ステップ702でノードn2における枯渇が検知されている場合、リバランス選択機能304は、枯渇条件テーブル307のアプリ稼働432から、当該ノードn2に対応する記憶デバイス101にはアプリa1とアプリa3がデータを格納していることがわかる。また、リバランス優先度テーブル306から、アプリa1はリバランス機能r2が実施可能なこと、アプリa3はリバランス機能r1とリバランス機能r3が実施可能とわかる。なお、当該リバランス制御処理において、当該ノードn2において当該アプリに対して実施済のリバランス機能は、本ステップにおける検索対象から除外する。このように枯渇が検知された場合にリバランス機能の検索へと進むので、枯渇が検知されないといったリバランス不要状況のときにまでリバランス機能を走らせることを避けることができる。
【0084】
ステップ703で実施可能なリバランス機能が見つからない場合(ステップ703:NO)、リバランス選択機能304は、容量不足である警告をユーザに通知し(例えば警告を出力デバイス356に表示し)(ステップ704)、ステップ701に戻る。
【0085】
ステップ703で実施可能なリバランス機能が見つかった場合(ステップ703:YES)、リバランス選択機能304は、リバランス優先度テーブル306を参照して、実施するリバランス機能を選択する(ステップ705)。例えば、ステップ703についての上述の例によれば、アプリa3に対してリバランス機能r1、アプリa1に対してリバランス機能r2、アプリa3に対してリバランス機能r3を実施することが可能である。リバランス優先度テーブル306の優先度423を参照すると、リバランス機能r1の優先度は“2”、リバランス機能r2の優先度は“1”、リバランス機能r3の優先度は“3”であることがわかる。つまり、リバランス機能r2の優先度が最も高いことがわかる。このため、リバランス選択機能304は、アプリa1の有するリバランス機能r2を選択する。このように、複数のリバランス機能を実施することが可能な場合には優先度の最も高いリバランス機能を優先することができる。
【0086】
例えば、ステップ705で選択されたリバランス機能(例えば、当該リバランス機能を有するアプリ)は、典型的には、各ノード111(記憶デバイス101)に、そのノード111に対応した格納割合に従う量のデータを格納するようになっている。格納されるデータは、圧縮されていないデータである。つまり、ステップ705で選択されたリバランス機能は、典型的には、各ノード111に対応した論理容量が、そのリバランス機能に対して定義されている格納割合通りの論理容量となるように、データをリバランスするようになっている。
【0087】
そこで、リバランス指示機能305は、ノード容量テーブル308を参照し、ステップ705で選択されたリバランス機能に対するリバランス指示の指示内容として、物理容量が平準化するような指示内容を決定する(ステップ706)。例えば、リバランス指示機能305は、ノード容量テーブル308を参照し、ステップ705で選択されたリバランス機能を実施するアプリがデータを格納しているノードに対応する記憶デバイスの圧縮率を、例えば当該ノードに対応した論理使用容量及び物理使用容量を基に算出し、現在各ノードへのデータを格納割合に、これら圧縮率の逆数を掛けあわせ、このようにして決定された格納割合の配分に関する定義を含んだ指示内容を決定してよい。あるいは、リバランス指示機能305は、最も圧縮率の低いノードへ(あるいは、例えば、最も物理残容量の少ないノード)の格納割合を一定数減らし、最も圧縮率の高いノード(あるいは、例えば、最も物理残容量の多いノード)への格納割合を一定数増やすことを意味する格納割合配分の定義を含んだ指示内容を決定してもよい。このように、リバランス指示に含まれる指示内容は、複数の物理容量が平準化するための論理容量配分に関する定義を含む。なお、「物理容量の平準化」は、複数の記憶デバイス101のうちの少なくとも1つの記憶デバイスの物理残容量が枯渇する(例えばゼロになる)ことを防ぐことの一例である。
【0088】
リバランス指示機能305は、ステップ705で選択されたリバランス機能を持つアプリ212に、ステップ706で決定した指示内容に従いデータをリバランスすることの指示であるリバランス指示を送信する(ステップ707)。このリバランス指示に応答して、その指示を受けたアプリ212内のリバランス機能241が、そのリバランス指示に含まれる指示内容に従ってデータのリバランスを実施する。
【0089】
なお、データのリバランスとは、典型的には、リバランス機能(リバランス指示を受けた機能)が、リバランス指示に従う変更後の配分(格納割合の比率)になるよう、ノード111間(記憶デバイス101間)でデータを移動することを含む。そのデータ移動に伴い、ノード111間で、論理容量の比率が、変更後の配分に近づき、結果として、物理容量が平準化していく。
【0090】
リバランス機能241は、リバランスが終了した場合(例えば、指示内容に従う変更後の格納割合の比率と論理容量の比率との差が所定値以下になった場合)、リバランス終了をマネージャ103に返す。
【0091】
リバランス指示機能709は、アプリ212(リバランス機能241)からリバランス終了の通知を受信する(ステップ708)。通知受信後、ステップ702に戻り、枯渇検知機能303は、当該ノードが容量枯渇のままか否かを判断する。この判断結果が偽の場合(ステップ702:NO)、つまり、当該ノードの容量枯渇が解消された場合、ステップ701に戻る。
【0092】
以上が、第一の実施例についての説明である。本実施例によれば、マネージャ103が、記憶デバイス101の物理容量を監視するノード111と、定義された配分(格納割合)通りにデータをリバランスする(論理容量を制御する)リバランス機能(アプリ212)とを連携するようになっている。マネージャ103は、全てのノード111から物理容量を表す情報を取得し、全てのノード111の物理容量が平準化するように、リバランス機能が実施するリバランス(データ量の配分)を制御する。これにより、いずれのリバランス機能がそのリバランス機能に定義されている配分(格納割合)通りにデータをリバランスしても、物理容量の平準化を維持すること(言い換えれば、物理残容量の不足を避けること)が期待できる。
【0093】
なお、
図7のステップ706で決定される指示内容は、選択されたリバランス機能によって異なってよい。例えば、第1のリバランス機能については、指示内容は、物理残容量が不足し論理残容量に余裕のあるノードから一部の論理容量を確保すること、および、確保した論理容量を、物理残容量に余裕があり論理残容量が不足したノードに加えることを、含んでもよい。また、例えば、第2のリバランス機能については、指示内容は、物理残容量と比較して過剰に大きい論理残容量を有するノード以外のノードにその論理残容量を配分することを含んでもよいし、物理残容量が小さいノードの論理残容量を物理残容量が大きいノードの論理残容量に追加することを含んでもよい。
【実施例2】
【0094】
第二の実施例を説明する。その際、第一の実施例との相違点を主に説明し、第一の実施例との共通点については説明を省略又は簡略する。
【0095】
図8は、第二の実施例に係る情報システムの全体構成を示す。
【0096】
情報システムは、複数の記憶デバイス101と、複数の記憶デバイス101が接続される1以上の計算機802を含んだ計算機システムとを有する。なお、計算機802が1台の場合は、ネットワーク104は使用されないでよい。
【0097】
1以上の計算機802は、複数の記憶デバイス101(例えば記憶デバイスA〜C)にそれぞれ対応した複数のノード111(例えばノードn11、n12およびn13)を有する。
【0098】
第二の実施例は、マネージャが情報システムの構成に含まれない点、および、アプリが後述のアプリ別マネージャを有する点が、第一の実施例とは異なる。
【0099】
図9は、第二の実施例に係る計算機802の構成を示す。
【0100】
計算機802のメモリ252には、ノード911の他に、アプリ912が格納される。ノード911およびアプリ912が、プロセッサ251により実行される。
【0101】
アプリ912は、リバランス機能241の他に、アプリ別マネージャ901を有する。
【0102】
アプリ別マネージャ901は、テーブル設定機能301、リバランス指示機能305、枯渇検知機能303、容量受信機能302、リバランス宣言機能921、および、アプリ別リバランス選択機能925を有する。アプリ別マネージャ901は、ノード容量テーブル308、動作フラグ922、アプリ別リバランス優先度テーブル923、および、アプリ別枯渇条件テーブル924を管理する。
【0103】
リバランス宣言機能921は、アプリ別マネージャ901を含んだアプリ912がリバランスを実施するか否かの宣言を実施する。
【0104】
動作フラグ922は、例えば二値で示される。動作フラグ922は、当該アプリ別マネージャ901が動作するか否かを示す。つまり、アプリ912毎に、リバランス制御するか否かを制御することができる。
【0105】
ノード911は、ストレージサービス999を有する。
【0106】
ストレージサービス999は、容量監視機能231、容量通知機能232、リバランス機能233、および、アプリ別マネージャ981を有する。ストレージサービス999は、リバランスアプリ情報982を管理する。
【0107】
アプリ別マネージャ981は、アプリ別マネージャ901と同様の機能を有する。
【0108】
リバランスアプリ情報982は、アプリ別マネージャ901を含んだアプリ912のIDを含む。
【0109】
計算機システムが複数の計算機802を有し、アプリ912が複数の計算機802で分散動作する場合がある。この時、アプリ別マネージャ901は、特定の計算機802上の代表アプリ912のみが有してもよいし、各アプリ912が有してアプリ912間で協調して動作してもよい。
【0110】
本実施例では、代表アプリ912がアプリ別マネージャ901を有するとする。アプリ別マネージャ901が、アプリ別リバランス優先度テーブル923およびアプリ別枯渇条件テーブル924を管理する。
【0111】
図10Aは、アプリ別リバランス優先度テーブル923の一例を示す。
【0112】
アプリ別リバランス優先度テーブル923は、当該アプリ912の持つリバランス機能241毎に、当該リバランス機能241のIDであるリバランスID1011と、当該リバランス機能の優先度を示す優先度1012といった情報を保持する。
【0113】
例えば、1番目の行によれば、リバランス機能r11の優先度が“1”である。故に、当該アプリ912のデータを格納しているノードで枯渇が発生した場合、リバランス機能r11が優先的に実施される。
【0114】
図10Bは、アプリ別枯渇条件テーブル924の一例を示す。
【0115】
アプリ別枯渇条件テーブル924は、当該アプリ912のデータを格納している記憶デバイスに対応するノード毎に、当該ノードを識別するIDであるノードID1021と、当該ノードに対応した枯渇条件を示す枯渇条件1022といった情報を保持する。
【0116】
例えば、1番目の行によれば、ノードn11に対応する記憶デバイス101は、当該記憶デバイス101の物理残容量が10GB未満であり、かつ、物理残容量が論理残容量未満である場合に、容量枯渇と判断される。
【0117】
アプリ別マネージャ901は、テーブル設定処理を実施する。第二の実施例に係るテーブル設定処理は、
図5に示したステップ501〜506に加えて(例えばステップ506実施後)、ユーザから当該アプリのリバランス機能の“動作”又は“非動作”を示す情報を受けて、その情報を動作フラグ922として登録(更新)することを含む。
【0118】
図11は、アプリ別マネージャ901により実施されるリバランス宣言処理のフローチャートである。本処理は、動作フラグ922の値が変更された際に実施される。
【0119】
動作フラグ922が“1”(“動作”)に変更された場合(ステップ1101:“1”)、リバランス宣言機能921は、リバランスの実施の宣言、すなわち、ストレージサービス999のリバランスアプリ情報982に、当該アプリ912のアプリIDを登録する(ステップ1102)。
【0120】
動作フラグ922が“0”(“非動作”)に変更された場合(ステップ1101:“0”)、リバランス宣言機能921は、リバランスの非実施の宣言、すなわち、ストレージサービス999のリバランスアプリ情報982から、当該アプリ912のアプリIDを削除する(ステップ1103)。
【0121】
ストレージサービス999は、定期的に容量監視処理を実施する。第二の実施例に係る容量監視処理は、
図6に示したステップ601およびステップ602を含む。ストレージサービス999は、ステップ602の実施により得られた容量情報を、リバランスアプリ情報982から識別されるアプリ212の有するアプリ別マネージャ901に通知する。
【0122】
第二の実施例に係る容量情報更新処理は、第一の実施例と同様である。
【0123】
アプリ別マネージャ901は、定期的にリバランス制御処理を実施する。第二の実施例に係るリバランス制御処理は、
図7に示したステップ701、ステップ704、ステップ706、ステップ708、および、ステップ709を含む。
【0124】
すなわち、ステップ701で、リバランス処理を未実施のノードを検知した場合、枯渇検知機能303は、その未実施のノードについて、アプリ別枯渇条件テーブル924とノード容量テーブル308を参照して、枯渇が生じているか否かを判断する。その判断結果が真の場合、アプリ別リバランス選択機能925は、アプリ別枯渇条件テーブル924とアプリ別リバランス優先度テーブル923を参照してリバランス機能を検索する。リバランス機能が見つかった場合、アプリ別リバランス選択機能925は、アプリ別リバランス優先度テーブル923を参照して、実施するリバランス機能を選択する。
【0125】
リバランス機能選択後、ステップ706が実施される。ステップ706実施後、リバランス指示機能305は、選択したリバランス機能に、ステップ706で決定した指示内容を含んだリバランス指示を出す。
【0126】
第二の実施例では、アプリ別マネージャ901が、記憶デバイス101の物理容量を監視するノード911と、定義された配分(格納割合)通りにデータをリバランスする(論理容量を制御する)リバランス機能とを連携するようになっている。アプリ別マネージャ901は、全てのノード911から物理容量を表す情報を取得し、全てのノード911の物理容量が平準化するように、リバランス機能が実施するリバランス(データ量の配分)を制御する。これにより、いずれのリバランス機能がそのリバランス機能に定義されている配分(格納割合)通りにデータをリバランスしても、物理容量の平準化を維持すること(言い換えれば、物理残容量の不足を避けること)が期待できる。
【実施例3】
【0127】
第三の実施例を説明する。その際、第一および第二の実施例のうちの少なくとも1つとの相違点を主に説明し、第一および第二の実施例のうちの少なくとも1つとの共通点については説明を省略又は簡略する。
【0128】
第三の実施例は、マネージャが構成に含まれない点、アプリがアプリ別マネージャを有さない点、および、ストレージサービスが後述のストレージサービス別マネージャを有する点が、第一および第二の実施例と異なる。
【0129】
図12は、第三の実施例に係る計算機1202の構成を示す。
【0130】
計算機1202のメモリ252には、アプリ212とノード1211が格納される。
【0131】
ノード1211は、ストレージサービス1221を有する。
【0132】
ストレージサービス1221は、容量監視機能231、容量通知機能232、リバランス機能233、および、ストレージサービス別マネージャ1201を有する。
【0133】
ストレージサービス別マネージャ1201は、テーブル設定機能301、容量受信機能302、枯渇検知機能303、リバランス選択機能304、および、リバランス指示機能305を有する。ストレージサービス別マネージャ1201は、リバランス優先度テーブル306、枯渇条件テーブル307、および、ノード容量テーブル308を管理する。
【0134】
計算機システムは、複数のノード1211を有するため、計算機システムは、複数のストレージサービス1221を有する。ストレージサービス別マネージャ1201は、代表ストレージサービス1221のみが有してもよいし、各ストレージサービス1221が有しストレージサービス1221間で協調して動作してもよい。本実施例では、代表ストレージサービス1221がストレージサービス別マネージャ1201を有するものとする。
【0135】
第三の実施例に係るテーブル設定処理、容量情報更新処理、および、リバランス制御処理は、第一の実施例に係る処理と同様である。ただし、これらの処理はマネージャ103ではなく、ストレージサービス別マネージャ1201によって実施される。
【0136】
ストレージサービス1221は、定期的に容量監視処理を実施する。第三の実施例に係る容量監視処理は、
図6に示したステップ601およびステップ602を含む。第三の実施例に係る容量監視処理では、ステップ602により得られた容量情報を、ストレージサービス1221は、ストレージサービス別マネージャ1201に通知する。
【0137】
第三の実施例では、ストレージサービス別マネージャ1201が、記憶デバイス101の物理容量を監視するノード1211と、定義された配分(格納割合)通りにデータをリバランスする(論理容量を制御する)リバランス機能とを連携するようになっている。ストレージサービス別マネージャ1201は、全てのノード1211から物理容量を表す情報を取得し、全てのノード1211の物理容量が平準化するように、リバランス機能が実施するリバランス(データ量の配分)を制御する。これにより、いずれのリバランス機能がそのリバランス機能に定義されている配分(格納割合)通りにデータをリバランスしても、物理容量の平準化を維持すること(言い換えれば、物理残容量の不足を避けること)が期待できる。
【実施例4】
【0138】
第四の実施例を説明する。その際、第一〜第三の実施例のうちの少なくとも1つとの相違点を主に説明し、第一〜第三の実施例のうちの少なくとも1つとの共通点については説明を省略又は簡略する。
【0139】
第四の実施例は、マネージャが構成に含まれない点、アプリがアプリ別マネージャを有さない点、ストレージサービスがストレージサービス別マネージャを有さない点、および、計算機が計算機別マネージャを有する点が、第一〜第三の実施例と異なる。
【0140】
図13は、第四の実施例に係る計算機1302の構成を示す。
【0141】
計算機1302のメモリ252には、アプリ212とノード111の他に計算機別マネージャ1301が格納される。計算機別マネージャ1301は、代表計算機1302のみが有してもよいし、各計算機1302が有し計算機1302間で協調して動作してもよい。本実施例では、代表計算機1302が計算機別マネージャ1301を有するものとする。
【0142】
第四の実施例に係るテーブル設定処理、容量情報更新処理、および、リバランス制御処理は、第一の実施例に係る処理と同様である。ただし、これらの処理はマネージャ103ではなく、計算機別マネージャ1301によって実施される。
【0143】
ストレージサービス221は、定期的に容量監視処理を実施する。第四の実施例に係る容量監視処理は、
図6に示したステップ601およびステップ602を含む。第四の実施例に係る容量監視処理では、ステップ602の実施により得られた容量情報を、ストレージサービス221は、計算機別マネージャ1301に通知する。
【0144】
第四の実施例では、計算機別マネージャ1301が、記憶デバイス101の物理容量を監視するノード111と、定義された配分(格納割合)通りにデータをリバランスする(論理容量を制御する)リバランス機能とを連携するようになっている。計算機別マネージャ1301は、全てのノード111から物理容量を表す情報を取得し、全てのノード1211の物理容量が平準化するように、リバランス機能が実施するリバランス(データ量の配分)を制御する。これにより、いずれのリバランス機能がそのリバランス機能に定義されている配分(格納割合)通りにデータをリバランスしても、物理容量の平準化を維持すること(言い換えれば、物理残容量の不足を避けること)が期待できる。
【実施例5】
【0145】
第五の実施例を説明する。その際、第一〜第四の実施例のうちの少なくとも1つとの相違点を主に説明し、第一〜第四の実施例のうちの少なくとも1つとの共通点については説明を省略又は簡略する。
【0146】
図14は、第五の実施例に係る情報システムの全体構成を示す。
【0147】
少なくとも1つの計算機1402(例えば計算機A)が、複数のVM(Virtual Machine)1401を実行する。複数のVMは、ストレージVM1401Sと、ゲストVM1401Gとを含む。ストレージVM1401Sは、仮想的なストレージ装置でよく、ゲストVM1401Gは、仮想的なホスト計算機でよい。
【0148】
ゲストVM1401Gは、ストレージVM1401SにI/O要求を発行するアプリ1412を実行する。
【0149】
ストレージVM1401は、複数の記憶デバイス101(例えば記憶デバイスAおよびB)にそれぞれ対応した複数のノード1411(例えばノードn31およびn32)を実行する。例えば、代表ノード1411(例えばノードn31)が、ストレージサービス221を有する。
【0150】
第五の実施例でも、実施例1と同様の効果を奏することが期待できる。
【0151】
以上、幾つかの実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【0152】
例えば、ノード111と記憶デバイス101は、1:N(Nは1以上の整数)でもよい。
【0153】
また、リバランス機能を有するエンティティの一例は、アプリに代えて又は加えて、ストレージサービスでもよい。ストレージサービスのリバランス機能は、複数の記憶デバイスに対応しストレージサービスが認識する複数の論理容量の配分を決められた配分となるようデータをリバランスする機能でよい。