実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAAテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、以下の説明では、「ネットワークI/F」は、1以上の通信インターフェースデバイスを含んでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、記憶装置は、物理的な不揮発性の記憶デバイス(例えば補助記憶デバイス)、例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)、SCM(Storage Class Memory)であってもよい。
また、以下の説明では、「メモリ」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。メモリは、主に、プロセッサによる処理の際に使用される。
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えば、CPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェース(例えばポート)を用いながら行うため、処理の動作の主体がプログラムとされてもよい。プログラムを動作の主体として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機(例えば、サーバ)が行う処理としてもよい。また、コントローラ(ストレージコントローラ)は、プロセッサそれ自体であってもよいし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又はコンピュータ読取可能な(例えば非一時的な)記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用することがある。
また、以下の説明では、分散ストレージシステムは、1以上の物理的な計算機(サーバ、ノード)およびストレージアレイを含む。1以上の物理的な計算機は、物理的なノードと物理的なストレージアレイとのうちの少なくとも1つを含んでよい。少なくとも1つの物理的な計算機が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)またはSDDC(Software-defined Datacenter)を採用することができる。
<第1実施形態>
まず、第1実施形態に係る分散ストレージシステム0の概要について説明する。
図1は、第1実施形態に係る分散ストレージシステムの処理の概要を示す図である。図1は、分散ストレージシステム0におけるサーバ増設時のリバランス処理の概要を示す。
分散ストレージシステム0は、複数の分散ファイルシステム(FS)サーバ2(2A,2B,2C,2D等)と、一台以上のストレージアレイ6と、を備える。分散ストレージシステム0は、ユーザデータを格納するための分散ボリューム100(共有領域の一例)をクライアントサーバ1に対して提供する。ストレージアレイ6は、分散FSサーバ2に対してユーザデータ用のLU200(論理単位領域の一例)を提供する。分散ボリューム100は、複数の分散FSサーバ2に提供されている複数のLU200をたばねて構成されている。図1の例では、分散ボリューム100は、分散FSサーバ10A(分散FSサーバA)を含む一台以上の分散FSサーバ2に提供されているLU200から構成される。本実施形態では、ストレージアレイ6は、LU200を、ストレージアレイ6内でRAID(Redundant Array of Inexpensive Disks)構成を組むことでデータを冗長化しており、分散FSサーバ2間でのデータの冗長化を行っていない。なお、分散FSサーバ2にRAID制御を行う機能を備えるようにし、分散FSサーバ側でLU200を冗長化するようにしてもよい。
分散ストレージシステム0は、分散ボリューム100に格納するユーザデータを、例えば、ファイル単位で格納する。分散ストレージシステム0は、ファイル識別子からハッシュ値を計算し、ハッシュ値に従ってファイルを、分散FSサーバ2間で均等化するように分散(均等分散という)する。ここで、ファイルとは、論理的なデータの管理単位(データ単位の一例)を示し、ファイルパスにより参照可能なデータのまとまりのことを示す。また、ファイルパスとは、ファイルの格納位置を示し、例えば、ファイルとファイルをグループ化したディレクトリとにより構成される木構造のノードを表す文字列である。分散ストレージシステム0においては、LU200ごとに、均等に分割されたハッシュ値の範囲が割り当てられている。なお、分散ボリューム100への格納単位は、ファイル単位に限られず、例えば、ファイルを分割したチャンクを単位としてもよい。この場合には、チャックごとのハッシュ値を計算し、チャンクを分散FSサーバ2間で均等化するように分散させればよい。チャンクについては、例えば、チャンクが含まれるファイル識別子と、チャンクの識別子とに基づいてハッシュ値を算出するようにしてもよい。
分散FSサーバ2は、ユーザデータを、ストレージアレイ6内に作成された細粒度のLU200に格納する。管理サーバ5は、リバランス時にLU200を割り当てる分散FSサーバ2を変更する。この際、管理サーバ5は、分散ボリューム100を構成するLU200の構成情報(LU割当管理テーブルT7(図13参照))において、LU200を担当するサーバ(担当サーバ)を変更することで、リバランス前後の各LU200のハッシュ値の範囲が変わらないようにする。この結果、ネットワーク経由のデータ移行は不要となり、高速データリバランスを実現できる。
図1は、分散FSサーバ2A~2Dにより構成されている分散ストレージシステム0に対して、分散FSサーバ2E(分散FSサーバE)を増設した場合において、分散FSサーバ2A~2Dが管理しているLU200(LU1~LU20)によって構成する分散ボリューム100のデータをリバランスするリバランス処理の概要を示している。
分散ストレージシステム0は、分散FSサーバ2Eが増設された場合、分散FSサーバ2A~2Dに割り当てられたLU200(LU1~LU20)の一部のLU200(LU5,LU10,LU15,LU20)を、分散FSサーバ2Eに再割り当てする。この際、分散ボリューム100におけるLUの構成を変更せず、各LU200のハッシュ値の範囲が変わらないようにする。分散ストレージシステム0は、分散FSサーバ2Eに再割り当て後、分散FS制御プログラムP1は、クライアントサーバ1に再割り当て後のデータ配置を通知し、クライアントサーバ1からのデータアクセスをリバランス後のデータ配置に対応する分散FSサーバ2に切り替える。このようにすることで、分散ストレージシステム0は、分散FSサーバ2間のデータ移行についてのネットワーク転送を伴うことなく、増設した分散FSサーバ2Eへのデータリバランスを実現することができる。
以上説明したように、第1実施形態に係る分散ストレージシステム0では、分散ボリューム100を、ストレージアレイ6内における多数(例えば、分散FSサーバ2の数より多い数)のLU200で作成しておき、分散FSサーバ2の構成が変わった際に、LU200を分散FSサーバ2間で再割り当てすることで、ネットワーク経由のデータ移行処理を不要とする。この結果、データリバランスの処理に要する時間を大幅に減らすことができる。
図2は、第1実施形態に係る分散ストレージシステムの構成図である。
分散ストレージシステム0は、1つ以上のクライアントサーバ1、管理装置の一例としての管理サーバ5、複数の分散サーバの一例としての分散FSサーバ2、1つ以上のストレージアレイ6、フロントエンド(FE)ネットワーク7、バックエンド(BE)ネットワーク8、及びSAN(Storage Area Network)9を備える。
クライアントサーバ1は、分散FSサーバ2のクライアントである。クライアントサーバ1は、ネットワークI/F13を介してFEネットワーク7に接続され、分散FSサーバ2に対してユーザデータのファイルに対するI/O(ファイルI/O)を発行する。クライアントサーバ1は、NFS(Network File System)、SMB(Server Message Block)、AFP(Apple Filing Protocol)などのプロトコルに従って、ファイルI/Oを行う。また、クライアントサーバ1は、様々な目的のために他の装置と通信することができる。
管理サーバ5は、分散ストレージシステム0の管理者が、分散FSサーバ2及びストレージアレイ6を管理するためのサーバである。管理サーバ5は、管理ネットワークI/F54を介してFEネットワーク7に接続され、分散FSサーバ2とストレージアレイ6とに対して管理要求を発行する。管理サーバ5は、管理要求の通信形態として、SSH(Secure Shell)を介したコマンド実行や、REST API(Representational State Transfer Application Program Interface)などを使用する。管理サーバ5は、管理者に対し、CLI(Command Line Interface)、GUI(Graphical User Interface)、REST APIなどの管理インターフェースを提供する。
分散FSサーバ2は、クライアントサーバ1に対して論理的な記憶領域である分散ボリューム100を提供する分散ファイルシステムを構成する。分散FSサーバ2は、FEネットワークI/F(図2では、FE I/Fと省略記載)24を介してFEネットワーク7に接続され、クライアントサーバ1からのファイルI/Oと、管理サーバ5からの管理要求を受信し、処理する。分散FSサーバ2は、HBA26を介してSAN9に接続され、ストレージアレイ6にユーザデータと制御情報を格納する。分散FSサーバ2は、BEネットワークI/F(図2では、BE I/Fと省略記載)25を介してBEネットワーク8に接続され、他の分散FSサーバ2との間で通信する。分散FSサーバ2は、BEネットワーク8を介して、他の分散FSサーバ2とメタデータを交換したり、他の情報を交換したりする。分散FSサーバ2は、BMC(Baseboard Management Controller)27を有し、常時(障害発生時も含む)、外部(例えば、管理サーバ5、分散FSサーバ2)からの電源操作を受け付け、受け付けた電源操作を処理する。BMC27は、通信プロトコルとしてIPMI(Intelligent Platform Management Interface)を使用できる。
SAN9は、通信プロトコルとして、SCSI(Small Computer System Interface)、iSCSI、Non-Volatile Memory Express(NVMe)などを使用することが使用でき、また通信媒体としてFC(ファイバチャネル)やEthernet(登録商標)を使用できる。
ストレージアレイ6は、複数の記憶装置を備えている。ストレージアレイ6は、SAN9に接続され、分散FSサーバ2が管理するユーザデータおよび制御情報を格納するための論理的な記憶領域としてLU200を分散FSサーバ2に提供する。
図2に示す分散ストレージシステム0においては、FEネットワーク7、BEネットワーク8、及びSAN9を分離したネットワークとしているが、この構成に限られず、FEネットワーク7、BEネットワーク8、及びSAN9の少なくとも2つを同一のネットワークとして構成してもよい。
また、図2に示す分散ストレージシステム0においては、クライアントサーバ1と、管理サーバ5と、分散FSサーバ2とを物理的に別のサーバとした例を示しているが、この構成に限られず、例えば、クライアントサーバ1と分散FSサーバ2とを同じサーバで構成してもよく、管理サーバ5と分散FSサーバ2とを同じサーバで構成してもよい。
次に、分散FSサーバ2の構成について説明する。
図3は、第1実施形態に係る分散FSサーバの構成図である。
分散FSサーバ2は、CPU21、メモリ22、記憶装置23、FEネットワークI/F24、BEネットワークI/F25、HBA26、及びBMC27を有する。
CPU21は、メモリ22上のプログラムに従って処理することによって、所定の機能を提供する。
メモリ22は、例えば、RAM(RANDOM ACCESS MEMORY)であり、CPU21で実行されるプログラムや、必要な情報を記憶する。メモリ22は、分散FS制御プログラムP1、プロトコル処理プログラムP3、ストレージ接続プログラムP5、統計情報採取プログラムP7、分散ボリューム構成管理テーブルT0、及びサーバ統計情報テーブルT1を記憶する。
分散FS制御プログラムP1は、CPU21に実行されることにより、他の分散FSサーバ2の分散FS制御プログラムP1と協調し、分散ファイルシステム(分散FS)を構成する。分散FS制御プログラムP1は、CPU21に実行されることにより、クライアントサーバ1に対して分散ボリューム100を提供する。分散FS制御プログラムP1は、クライアントサーバ1が分散ボリューム100に格納するファイルを、ストレージアレイ6内のLU200に格納する処理を行う。
プロトコル処理プログラムP3は、CPU21に実行されることにより、NFS、SMBなどのネットワーク通信プロトコルに従う要求を受信し、分散FSへのファイルI/Oへと変換し、分散FS制御プログラムP1に渡す。
ストレージ接続プログラムP5は、CPU21に実行されることにより、ストレージアレイ6のLU200に格納されたデータを読み取る。ストレージ接続プログラムP5は、CPU21に実行されることにより、分散FS制御プログラムP1(分散FSサーバ2)に割り当てられたLU200に対して、ストレージアクセス用のプロトコルを介してストレージアレイ6と通信する制御を行う。
統計情報採取プログラムP7は、CPU21に実行されることにより、分散FSサーバ2の負荷を定期的に監視し、負荷の情報をサーバ統計情報テーブルT1に格納する処理を行う。
分散ボリューム構成管理テーブルT0は、分散ボリューム100の構成を管理するためのテーブルである。分散ボリューム構成管理テーブルT0の詳細については、図4を用いて後述する。
サーバ統計情報テーブルT1は、分散FSサーバ2の負荷の情報を格納する。サーバ統計情報テーブルT1の詳細については、図5を用いて後述する。
FEネットワークI/F24は、FEネットワーク7に接続するための通信インターフェースデバイスである。BEネットワークI/F25は、BEネットワーク8に接続するための通信インターフェースデバイスである。HBA26は、SAN9に接続するための通信インターフェースデバイスである。
BMC27は、分散FSサーバ2の電源制御インターフェースを提供するデバイスである。BMC27は、CPU21及びメモリ22と独立して動作し、CPU21又はメモリ22に障害が発生した場合でも、外部からの電源制御要求を受け付けて電源制御を処理することができる。
記憶装置23は、分散FSサーバ2で使用する各種プログラムを格納した不揮発性記憶媒体である。記憶装置23は、HDD、SSD、SCMであってもよい。
次に、分散ボリューム構成管理テーブルT0の構成について詳細に説明する。
図4は、第1実施形態に係る分散ボリューム構成管理テーブルの構成図である。
分散ボリューム構成管理テーブルT0は、分散ボリューム100を構成するための構成情報を格納する。分散ボリューム構成管理テーブルT0は、分散FS制御プログラムP1によって利用される。分散FS制御プログラムP1は、他の分散FSサーバ2の分散FS制御プログラムP1と協働することにより、全ての分散FSサーバ2の分散ボリューム構成管理テーブルT0が同期して、常に同一内容となるように同期処理を行う。
分散ボリューム構成管理テーブルT0は、分散ボリューム100毎のエントリを格納する。分散ボリューム構成管理テーブルT0のエントリは、分散VolID C1と、対応する分散ボリューム100の各LUに対応するサーバID C2及びマウントポイントC3とのフィールドを含む。
分散ボリュームID C1には、エントリに対応する分散ボリューム100の識別子(分散ボリュームID)が格納される。サーバID C2には、エントリに対応する分散ボリューム100のLU200を構成する分散FSサーバ2の識別子(サーバID)が格納される。マウントポイントC3には、エントリに対応する分散ボリューム100を構成するLU200をマウントした分散FSサーバ2におけるマウントポイントが格納される。ここで、マウントポイントとは、マウントしたLU200に対してアクセスする際の仮想的なディレクトリのことをいう。この分散ボリューム管理テーブルT0によると、分散ボリュームを構成する各LUの管理する分散FSサーバ2及びマウントポイントを特定することができる。
次に、サーバ統計情報テーブルT1の構成について詳細に説明する。
図5は、第1実施形態に係るサーバ統計情報テーブルの構成図である。
サーバ統計情報テーブルT1は、分散FSサーバ2のハードウェアの負荷に関する統計情報を格納する。サーバ統計情報テーブルT1には、統計情報採取プログラムP7により、監視された分散FSファイル2のハードウェアの負荷の情報が格納される。
サーバ統計情報テーブルT1は、CPU使用率C101と、NW使用量C102と、HBA使用量C103とのフィールドを含む。
CPU使用率C101には、このサーバ統計情報テーブルT1を格納する分散FSサーバ2(自分散FSサーバ)のCPU使用率が格納される。NW使用量C102には、自分散FSサーバのネットワーク流量が格納される。HBA使用量C103には、自分散FSサーバのHBA使用量が格納される。
なお、本実施形態では、サーバ統計情報テーブルT1は、統計情報として、CPU使用率、ネットワーク流量、HBA使用量を格納するようにしているが、これに限られず、統計情報にネットワークパケット数や、ディスクアクセス回数、メモリ使用量等を含めるようにしてもよい。
次に、ストレージアレイ6の構成について説明する。
図6は、第1実施形態に係るストレージアレイの構成図である。
ストレージアレイ6は、CPU61、メモリ62、ストレージI/F(StorageI/F)63、記憶装置64、HBA65、及びFEネットワークI/F66を有する。
CPU61は、メモリ62上のプログラムに従って処理することによって、所定の機能を提供する。
メモリ62は、例えば、RAMであり、CPU61で実行されるプログラムや、必要な情報を記憶する。メモリ62は、IO制御プログラムP11、アレイ管理プログラムP13、LU制御テーブルT2、及びLU統計情報テーブルT3を記憶する。
IO制御プログラムP11は、CPU61に実行されることにより、HBA65経由で受信したLU200に対するI/O要求を処理し、記憶装置64に対するデータの読み書きを行う。アレイ管理プログラムP13は、CPU61に実行されることにより、管理サーバ5から受信したLU管理要求に従い、ストレージアレイ6内のLU200の作成、拡張、縮小、削除を行う。
LU制御テーブルT2は、LU200の制御情報を管理するためのテーブルである。LU制御テーブルT2の詳細については、図7を用いて後述する。
LU統計情報テーブルT3は、LU200の負荷の情報を格納する。LU統計情報テーブルT3の詳細については、図8を用いて後述する。
ストレージI/F63は、CPU61による記憶装置64へのデータの読み書きを仲介するインターフェースであり、CPU61とストレージI/F63との間の通信には、FC(ファイバチャネル)、SATA(Serial Attached Technology Attachment)、SAS(Serial Attached SCSI)、IDE(Integrated Device Electronics)などのインターフェースが用いられる。
記憶装置64は、ストレージアレイ6で使用する各種プログラムや、分散FSサーバ2によるユーザデータや制御情報を記録する記憶媒体である。記憶装置64の記憶媒体としては、HDD、SSD、SCM、フラッシュメモリ、光ディスク、磁気テープなどのような多くの種類の記憶媒体を使用することができる。
FEネットワークI/F66は、FEネットワーク7に接続するための通信インターフェースデバイスである。HBA65は、SAN9に接続するための通信インターフェースデバイスである。
次に、LU制御テーブルT2の構成について詳細に説明する。
図7は、第1実施形態に係るLU制御テーブルの構成図である。
LU制御テーブルT2は、ストレージアレイ6が提供するLU200の制御情報を格納する。LU制御テーブルT2は、LU200毎のエントリを格納する。LU制御テーブルT2のエントリは、LUN C201と、WWN(World Wide Name)C202と、論理容量C203と、RAID Group ID C204と、RAID種別C205と、Disk ID C206と、Disk種別C207と、物理容量C208とのフィールドを含む。
LUN C201には、エントリに対応するLU200のストレージアレイ6内での識別子(LUN)が格納される。WWN C202には、エントリに対応するLUのLUNをSAN9で一意に識別するための識別子(WWN)が格納される。WWNは、分散FSサーバ2がLU200にアクセスする際に使用する。論理容量C203には、エントリに対応するLU200の論理的な容量(論理容量)が格納される。
RAID Group ID C204には、エントリに対応するLU200を構成するRAIDグループの識別子が格納される。ここで、RAIDグループとは、1台以上の記憶媒体(例えば、ディスク)から構成されるデータの読み書きが可能な論理的な記憶領域を示す。なお、1つのRAIDグループにより複数のLU200を構成してもよい。RAID種別C205には、エントリに対応するRAIDグループIDのRAIDグループの種別(RAID種別:RAIDレベル)が格納される。RAID種別としては、例えば、RAID1(nD+mD)やRAID5(nD+1P)、RAID6(nD+2P)などがある。なお、nとmは、それぞれでRAIDグループ内のデータ数に対する冗長データ数をあらわす。
Disk ID C206には、エントリに対応するRAIDグループを構成するディスクの識別子(Disk ID)が格納される。Disk IDとしては、ディスクのシリアル番号などを用いてもよい。Disk種別C207には、エントリに対応するディスクの種別(Disk種別)が格納される。Disk種別としては、NVMe SSD、SSD、HDDなどがある。物理容量C208には、エントリに対応するディスクの物理的な記憶容量が格納される。
次に、LU統計情報テーブルT3の構成について詳細に説明する。
図8は、第1実施形態に係るLU統計情報テーブルの構成図である。
LU統計情報テーブルT3は、ストレージアレイ6のLU200についての負荷情報を格納する。LU統計情報テーブルT3には、IO制御プログラムP11により、監視されたストレージアレイ6の負荷が定期的に格納される。LU統計情報テーブルT3は、LU毎のエントリを格納する。LU統計情報テーブルT3のエントリは、LUN C301と、リードIOPS C302と、リード流量C303と、ライトIOPS C304と、ライト流量C305とのフィールドを含む。
LUN C301には、エントリに対応するLUのLUNが格納される。リードIOPS C302には、エントリに対応するLUにおけるリードのIOPS(Input/Output Per Second)が格納される。リード流量C303には、エントリに対応するLUに対する単位時間当たりのリードのデータ量(リード流量)が格納される。ライトIOPS C304には、エントリに対応するLUに対するライトのIOPSが格納される。ライト流量C305には、エントリに対応するLUに対する単位時間当たりのライトのデータ量(ライト流量)が格納される。
次に、管理サーバ5の構成について説明する。
図9は、第1実施形態に係る管理サーバの構成図である。
管理サーバ5は、プロセッサの一例としてのCPU51、メモリ52、記憶装置53、及びFEネットワークI/F54を有する。管理サーバ5には、ディスプレイ55や入力装置56が接続されている。
CPU51は、メモリ52上のプログラムに従って処理することによって、所定の機能を提供する。
メモリ52は、例えば、RAMであり、CPU51で実行されるプログラムや、必要な情報を記憶する。メモリ52は、管理プログラムP21、リバランス制御プログラムP22、分散ボリューム管理テーブルT4、サーバ管理テーブルT5、アレイ管理テーブルT6、及びLU割当管理テーブルT7を記憶する。なお、特許請求の範囲の管理プログラムは、管理プログラムP21及びリバランス制御プログラムP22に対応する。
管理プログラムP21は、CPU51に実行されることにより、管理者から入力装置56を介して受け付けた管理要求に従って、分散FSサーバ2及びストレージアレイ6に対して構成変更要求を発行する。ここで、管理者からの管理要求は、分散ボリューム100の作成・削除、分散FSサーバ2の増設、減設などの要求を含む。また、構成変更要求は、LU作成・削除・拡張・縮小、LUパスの追加、削除、変更の要求を含む。
リバランス制御プログラムP22は、CPU51に実行されることにより、分散FSサーバ2、ストレージアレイ6と協調して、データのリバランス処理を行う。
分散ボリューム管理テーブルT4は、分散ボリューム100を管理するためのテーブルである。分散ボリューム管理テーブルT4の詳細については、図10を用いて後述する。
サーバ管理テーブルT5は、分散FSサーバ2を管理するためのテーブルである。サーバ管理テーブルT5の詳細については、図11を用いて後述する。
アレイ管理テーブルT6は、ストレージアレイ6を管理するためのテーブルである。アレイ管理テーブルT6の詳細については、図12を用いて後述する。
LU割当管理テーブルT7は、LU200の割り当てを管理するためのテーブルである。LU割当管理テーブルT7の詳細については、図13を用いて後述する。
FEネットワークI/F54は、FEネットワーク7に接続するための通信インターフェースデバイスである。
記憶装置53は、管理サーバ5で使用する各種プログラムを格納した不揮発性記憶媒体である。記憶装置53は、HDD、SSD、SCMであってもよい。
入力装置56は、キーボードやマウスやタッチパネル等であり、利用者(あるいは管理者)の操作を受け付ける。ディスプレイ55は、各種情報を表示する装置であり、分散ストレージシステム0を管理するための管理インターフェースの画面(例えば、分散ボリューム構成変更画面、図20参照)を表示する。
次に、分散ボリューム管理テーブルT4の構成について詳細に説明する。
図10は、第1実施形態に係る分散ボリューム管理テーブルの構成図である。
分散ボリューム管理テーブルT4は、管理プログラムP21が分散ボリューム100を管理するための管理情報を格納する。分散ボリューム管理テーブルT4は、分散ボリューム100毎のエントリを格納する。分散ボリューム管理テーブルT4のエントリは、分散Vol ID C401と、LU ID C402と、WWN C403と、ストレージアレイID C404と、LUN C405とのフィールドを含む。
分散Vol ID C401には、エントリに対応する分散ボリューム100の識別子(分散ボリュームID)が格納される。LU ID C402には、エントリに対応する分散ボリューム100を構成する1以上のLU200を分散ストレージシステム0で一意に識別する識別子(LU ID)が格納される。WWN C403には、エントリに対応するLU IDのLU200のWWNが格納される。ストレージアレイID C404には、エントリに対応するLU200を格納するストレージアレイ6の識別子(ストレージアレイID)が格納される。LUN405には、エントリに対応するLU200のLUNが格納される。
次に、サーバ管理テーブルT5の構成について詳細に説明する。
図11は、第1実施形態に係るサーバ管理テーブルの構成図である。
サーバ管理テーブルT5は、管理プログラムP21が分散FSサーバ2を管理するための管理情報を格納する。サーバ管理テーブルT5は、分散FSサーバ2毎のエントリを格納する。サーバ管理テーブルT5のエントリは、サーバID C501と、接続ストレージアレイC502と、IPアドレスC503と、BMCアドレスC504と、MTTF C505と、起動時間C506とのフィールドを含む。
サーバID C501には、エントリに対応する分散FSサーバ2を分散ストレージシステム0内で一意に識別可能な分散FSサーバ2の識別子(サーバID)が格納される。接続ストレージアレイC502には、エントリに対応する分散FSサーバ2からアクセス可能なストレージアレイ6の識別子(ストレージアレイID)が格納される。IPアドレスC503には、エントリに対応する分散FSサーバ2のIPアドレスが格納される。
BMCアドレスC504には、エントリに対応する分散FSサーバ2のBMC27のIPアドレスが格納される。MTTF C505には、エントリに対応する分散FSサーバ2の平均故障時間(MTTF:Mean Time To Failure)が格納される。MTTFとしては、エントリに対応する分散FSサーバ又はサーバ種別についてのカタログ値を使用してもよい。起動時間C506には、エントリに対応する分散FSサーバ2の正常状態における起動時間が格納される。この起動時間は、管理プログラムP21がフェールオーバ時間を見積もるために使用される。
なお、図11に示すサーバ管理テーブルT5においては、分散FSサーバ2、BMC27へのアクセスのための情報としてIPアドレスを格納するようにしているが、これに代えてホスト名を格納するようにしてもよい。
次に、アレイ管理テーブルT6の構成について詳細に説明する。
図12は、第1実施形態に係るアレイ管理テーブルの構成図である。
アレイ管理テーブルT6は、管理プログラムP21がストレージアレイ6と通信するため、及びLU200の割り当てを決定するために使用するストレージアレイ6の構成情報を格納する。アレイ管理テーブルT6は、ストレージアレイ6毎のエントリを格納する。アレイ管理テーブルT6のエントリは、ストレージアレイID C601と、管理IPアドレスC602と、LU ID C603とのフィールドを含む。
ストレージアレイID C601には、エントリに対応するアウトレージアレイ6を分散ストレージシステム0内で一意に識別可能な識別子(ストレージアレイID)が格納される。管理IPアドレスC602には、エントリに対応するストレージアレイ6の管理用のIPアドレスが格納される。なお、IPアドレスに代えて、ホスト名としてもよい。LU ID C603には、エントリに対応するストレージアレイ6が提供するLU200のLU IDが格納される。
次に、LU割当管理テーブルT7の構成について詳細に説明する。
図13は、第1実施形態に係るLU割当管理テーブルの構成図である。
LU割当管理テーブルT7は、管理プログラムP21が分散FSサーバ2に対して割り当てるLU200を管理するための管理情報を格納する。LU割当管理テーブルT7は、分散ボリューム100のLU200毎のエントリを格納する。LU割当管理テーブルT7のエントリは、分散ボリュームID C701と、LU ID C702と、サーバID C703と、マウントポイントC704とのフィールドを含む。
分散ボリュームID C701には、エントリに対応する分散ボリューム100の識別子(分散ボリュームID)が格納される。LU ID C702には、エントリに対応する分散ボリューム100のLU200の識別子(LU ID)が格納される。サーバID C703には、エントリに対応するLU200が割当てられている分散FSサーバ2のサーバIDが格納される。マウントポイントC704には、エントリに対応するLU200の分散FSサーバ2でのマウントポイントが格納される。
次に、クライアントサーバ1の構成について説明する。
図14は、第1実施形態に係るクライアントサーバの構成図である。
クライアントサーバ1は、CPU11、メモリ12、記憶装置14、及びFEネットワークI/F13を有する。
CPU11は、メモリ12上のプログラムに従って処理することによって、所定の機能を提供する。
メモリ12は、例えば、RAMであり、CPU11で実行されるプログラムや、必要な情報を記憶する。メモリ12は、アプリケーションプログラムP31、分散FSクライアントプログラムP32、及びハッシュ管理テーブルT8を記憶する。
アプリケーションプログラムP31は、CPU11に実行されることにより、分散ボリューム100を利用してデータ処理を行う。アプリケーションプログラムP31は、例えば、RDBMS(Relational Database Management System)や、VM Hypervisorなどのプログラムであってもよい。
分散FSクライアントプログラムP32は、CPU11に実行されることにより、分散FSサーバ2に対してファイルI/Oを発行して分散ボリューム100に対するデータの読み書きを行う。分散FSクライアントプログラムP32は、ネットワーク通信プロトコルにおいて、クライアント側の制御を実行する。分散FSクライアントプログラムP32は、新規ディレクトリ作成時に該当ディレクトリと対応する物理ディレクトリを全LU200に対して作成する。この際、分散FSクライアントプログラムP32は、LU200内のディレクトリのメタデータに、そのLU200に割り当てるハッシュ値を記録する。分散FSクライアントプログラムP32は、ディレクトリにアクセスした際に、全LU200の物理ディレクトリのメタデータを読み取り、ハッシュ管理テーブルT8に記録する。分散FSクライアントプログラムP32は、ファイルアクセス時にファイル識別子のハッシュ値を計算し、ハッシュ管理テーブルT8を参照し、ハッシュ値に基づいて格納先となるLU200を特定する。
ハッシュ管理テーブルT8は、LU200に格納されるファイルのハッシュ情報を管理するためのテーブルである。ハッシュ管理テーブルT8の詳細については、図15を用いて後述する。
FEネットワークI/F13は、FEネットワーク7に接続するための通信インターフェースデバイスである。
記憶装置14は、クライアントサーバ1で使用する各種プログラムを格納した不揮発性記憶媒体である。記憶装置14は、HDD、SSD、SCMであってもよい。
次に、ハッシュ管理テーブルT8の構成について詳細に説明する。
図15は、第1実施形態に係るハッシュ管理テーブルの構成図である。
ハッシュ管理テーブルT8は、クライアントサーバ1上の分散FSクライアントプログラムP32が分散FSサーバ2で管理されているファイルにアクセスするためのハッシュ情報を格納する。ハッシュ管理テーブルT8は、ディレクトリパスC801と、サーバID C802と、LU ID C803と、ハッシュ範囲C804とのフィールドを含む。
ディレクトリパスC801には、ハッシュ値を持つディレクトリのパス(ディレクトリパス)が格納される。分散ボリューム100内の全ディレクトリは、LU200ごとにハッシュ値の範囲が対応付けられている。サーバID C802には、エントリに対応するディレクトリ以下のファイルを格納する分散FSサーバ2の識別子(サーバID)が格納される。サーバID C802には、エントリに対応するディレクトリパスにおける全サーバのサーバIDが格納される。
LU ID C803には、エントリに対応するディレクトリパスの分散FSサーバ2に管理されているLU200の識別子(LU ID)が格納される。LU ID C803には、エントリに対応する分散FSサーバ2が管理する全LU200のLU IDが格納される。ハッシュ範囲C804には、エントリに対応するLU IDのLU200に格納されるファイルについてのハッシュ値の範囲が格納される。
次に、第1実施形態に係る分散ストレージシステム0におけるデータ格納処理の概要を説明する。
図16は、第1実施形態に係る分散ストレージシステムにおけるデータ格納処理の概要を示す図である。
図16は、クライアントサーバ1が、分散FSサーバ2A~2Cにより構成された分散ボリューム100にディレクトリD1A~D1C(DirA)と、ファイルF1~F3(FileA~FileC)を格納する場合の処理の概要を示している。
分散ボリューム100内のディレクトリは、分散ボリューム100を構成する全ての分散FSサーバ2内のLU200に、同じディレクトリパスとして作成される。ここで、ディレクトリパスとは、ディレクトリにアクセスするための文字列のことを示す。分散ボリューム100内の複数のファイルは、ファイル識別子のハッシュ値に基づいて分散FSサーバ2間で分散して格納される。ここで、ファイル識別子として、ファイルパスやファイル生成時に割り当てた乱数を使用してもよい。この結果、DirAが分散FSサーバ2の全てのLU200に存在し、FileA~FileCがそれぞれ異なるLU200に存在するようになる。
各分散FSサーバ2のLU200内のディレクトリD1(D1A~D1C)には、メタデータとしてそのLU200に割り当てられたハッシュ値の範囲H1(H1A~H1C)が管理される。
クライアントサーバ1上の分散FSクライアントプログラムP32は、新規ディレクトリ作成時に各LU200のハッシュ値の範囲H1を決定し、各LU200のディレクトリD1のメタデータに格納する。また、分散FSクライアントプログラムP32は、ディレクトリに対するアクセス時に全分散FSサーバ2から、全LU200分のハッシュ値の範囲H1(H1A~H1C)を取得し、ハッシュ管理テーブルT8に記録する。
分散FSクライアントプログラムP32は、ファイルアクセス時に、ファイル識別子に基づいてハッシュ値を計算し、ハッシュ管理テーブルT8を参照し、計算したハッシュ値に対応するLU200を管理するサーバを特定する。
次に、第1実施形態に係る分散ストレージシステム0の処理動作について説明する。
図17は、第1実施形態に係るボリューム作成処理のフローチャートである。
ボリューム作成処理は、管理サーバ5によって実行される処理であり、管理プログラムP21(厳密には、管理プログラムP21を実行する管理サーバ5のCPU51)は、管理者から分散ボリュームの作成要求(分散ボリューム作成要求)を受け付けた際、例えば、入力装置56から、又は管理者が使用する端末から受け付けた際に、分散ボリューム作成要求に基づいて、ストレージアレイ6に細粒度の共有のLU200を作成する処理である。
ステップS110:管理プログラムP21は、管理者から新規ボリューム名、ボリュームサイズ、稼働率要件等を含んだ分散ボリューム作成要求を受け付ける。
ステップS120:管理プログラムP21は,分散ボリュームに加えることのできる最大のサーバ数に基づいて、新規ボリュームを構成するLU数(作成LU数)を決定する。
具体的には、例えば、管理プログラムP21は、サーバ管理テーブルT5を参照し、分散ストレージシステム0を構成する分散FSサーバ2のMTTFの平均値を算出し、分散FSサーバの台数を変化させた場合における、それぞれの台数における稼働率見積りを式(1)に基づいて算出し、その結果に基づいて、分散ボリューム作成要求の稼働率要件を満たすような最大のサーバの台数(最大サーバ数)を計算する。管理プログラムP21は、最大サーバ数と同数を、分散ボリュームを構成する細粒度のLU200の個数に決定する。なお、LU200の個数は、分散ストレージシステム0の現在の分散FSサーバの台数よりも大きく最大サーバ数以下の数としてもよい。
稼働率見積り=Π((MTTFserver-F.o.Timeserver)/(MTTFserver)) ・・・(1)
ここで、Πは、総乗を示す関数であり、本実施形態では、対象とするサーバの台数分の総乗をすることを表し、MTTFserverは、分散FSサーバ2のMTTFを表し、F.O.Timeserverは、分散FSサーバ2をフェイルオーバ(Fail Over)する際に要する時間(F.O.Time)を表す。本実施形態では、MTTFとしては、サーバ管理テーブルT5における分散FSサーバのMTTF C505の平均値を用い、F.O.Timeserverとしては、例えば、サーバ管理テーブルT5の起動時間C506の値に所定の時間(例えば、1分)を加算した値を用いている。なお、MTTF、F.O.Timeの見積もり方法は、これに限られず、他の方法を用いてもいい。
このようにLU200の数を最大サーバ数と同数とすることで、分散ボリューム100に含まれる最大のサーバ数(限界のサーバ数)まで、分散FSサーバ2間でLU200をリバランスすることが可能となる。また、分散FSサーバの稼働率に基づいて、LU数を決定しているので、分散ストレージシステム0で使用する分散FSサーバによる、使用するサーバの台数の信頼性に応じて最適なLU数を動的に計算することができる。なお、稼働率に基づいて最大サーバ数を決定するようにしていたが、これに限られず、例えば、予め設定された固定の最大サーバ数を使用してもよい。
ステップS130:管理プログラムP21は、分散ボリューム作成要求のボリュームサイズを作成LU数で除算することにより、1LU当たりのデータ容量を算出する。次いで、管理プログラムP21は、算出されたデータ容量のLUを、作成LU数分だけ作成するようにストレージアレイ6に指示して、LU200を作成する。次いで、管理プログラムP21は、作成した複数のLU200を稼働中の分散FSサーバ2に均等となるように割当て、割り当てた情報に対応するように、分散ボリューム管理テーブルT4とLU割当管理テーブルT7を更新する。
ステップS140:管理プログラムP21は、分散FSサーバ2上のストレージ接続プログラムP5に対し、ステップS130で割り当てたLU200に接続するよう指示する。指示を受けたストレージ接続プログラムP5は、管理プログラムP21から指示された、ストレージアレイ6のLUNに対応するLU200を、指定されたマウントポイントにマウントする。
ステップS150:管理プログラムP21は、分散FSサーバ2の分散FS制御プログラムP1に分散ボリューム100を作成するように指示する。この結果、分散FS制御プログラムP1は、分散ボリューム100に対応する構成を、分散ボリューム構成管理テーブルT0を更新することにより、分散ボリューム100を作成する。
ステップS160:管理プログラムP21は、分散FSサーバ2の分散FS制御プログラムP1に作成した分散ボリューム100のサービスを開始するように指示する。この結果、分散FS制御プログラムP1は、作成された分散ボリューム100のサービスを開始する。
上記したボリューム作成処理によると、ストレージアレイ6に適切な数のLU200を有する分散ボリューム100を作成することができ、後述する処理により、リバランス処理を適切に行うことができる。
次に、管理サーバ5によるリバランス処理について説明する。
図18は、第1実施形態に係るリバランス処理のフローチャートである。
リバランス処理においては、リバランス制御プログラムP22(厳密には、リバランス制御プログラムP22を実行する管理サーバ5のCPU51)は、分散FSサーバの増設や減設に伴って、分散FSサーバ2間でLU200を再割り当てすることで分散FSサーバ2間の負荷のリバランスを実現する。LU再割り当て時には、分散ボリューム100のLU200の構成を引き継ぎ、LU200に対して既に割り当てられたハッシュ値の範囲を引き継ぐことで、分散FSサーバ2間でネットワークを介したLU200のデータを移行することを不要とすることができる。
リバランス処理では、リバランス制御プログラムP22は、分散ボリューム100を構成するLU200が分散FSサーバ2間で均等となるように分散し、かつ分散FSサーバ2間での負荷が均等となるようにLU200の再割り当てを行う。この際、リバランス制御プログラムP22は、負荷分散に加え、分散FSサーバ2間のLU200の再割り当て時間を最小化するように、移行するLU数が少なくなるように再割り当てするLU200を決定する。
ステップS210:リバランス制御プログラムP22は、管理者または管理プログラムP21から、リバランスの対象とする分散ボリューム名(対象ボリューム名)を含んだ分散ボリュームリバランス要求を受け付ける。
ステップS220:リバランス制御プログラムP22は、データリバランスを実現するために必要な、LU200を再割り当てするプラン(LU再割り当てプラン)を作成するLU再割り当てプラン作成処理を実行する。LU再割り当てプランは、分散ボリューム100を構成するLU200を管理する分散FSサーバ2間で、LU200の数が均等となるように、かつ分散FSサーバ2間の負荷が均等となるように決定される。なお、リバランス制御プログラムP22は、リバランスするLU200の指定が要求に含まれている場合は、要求の内容をそのまま再割り当てプランに使用する。LU再割り当てプラン作成処理の詳細は、図19を用いて後述する。
ステップS230:リバランス制御プログラムP22は、分散FSサーバ2の分散FS制御プログラムP1に、リバランス対象の分散ボリューム100のサービス(分散ボリューム100のデータに対するアクセス)を一時的に停止するように指示する。この結果、分散FSサーバ2の分散FS制御プログラムP1は、リバランス対象の分散ボリューム100のサービスを一時的に停止する。
ステップS240:リバランス制御プログラムP22は、ステップS220で作成されたLU再割り当てプランに基づいて、分散FSサーバ2に対するLU200の再割り当てを行う。具体的には、リバランス制御プログラムP22は、LU再割り当てプランにおいて、LU200の移行元となっている分散FSサーバ2のストレージ接続プログラムP5に対して、該当するLU200との接続を解除する指示を行う。この結果、ストレージ接続プログラムP5は、該当するLU200との接続を解除する。その後、リバランス制御プログラムP22は、LUの移行先となっている分散FSサーバ2のストレージ接続プログラムP5に、該当するLU200と接続し、そのLU200を指定されたパスにマウントする指示を行う。指示を受けたストレージ接続プログラムP5は、該当するLU200を接続し、指定されたパスにマウントする。次いで、リバランス制御プログラムP22は、分散FSサーバ2の分散FS制御プログラムP1に、分散ボリューム構成管理テーブルT0のLUのパスに対応するサーバID C2の値を移行先のサーバIDに更新するように指示する。分散FS制御プログラムP1は、分散ボリューム構成管理テーブルT0のLUのパスに対応するサーバID C2の値を移行先のサーバIDに更新する。これにより、LU200と、管理する分散FSサーバ2との対応関係が反映される。次いで、リバランス制御プログラムP22は、LU割当管理テーブルT7のサーバID C703を移行先のサーバIDに更新する。
ステップS250:リバランス制御プログラムP22は、分散FSサーバ2の分散FS制御プログラムP1に、分散ボリューム100のサービスを再開するように指示する。分散FS制御プログラムP1は、分散ボリューム100のサービスを再開する。この後、クライアントサーバ1は、分散ボリューム100に再接続する時に、分散FSサーバ2の分散FS制御プログラムP1から送信される、LU200と分散FSサーバ2との対応関係を受け取り、その対応関係に基づいて、ハッシュ管理テーブルT8を更新する。
次に、ステップS220におけるLU再割り当てプラン作成処理について説明する。
図19は、第1実施形態に係るLU再割り当てプラン作成処理のフローチャートである。図19のLU再割り当てプラン作成処理は、分散FSサーバ2の増設時におけるLU再割り当てプラン作成処理である。
リバランス制御プログラムP22は、分散FSサーバの増設時に分散ボリューム100内、および分散FSサーバ間の負荷の均等化を考慮し、LU再割り当てプランを作成する。この際、リバランス時間を短縮するために、できるだけ少ないLU200を移行するようにしている。
ステップS310:リバランス制御プログラムP22は、以下の式(2)を用いて、各分散ボリュームについて、増設した分散FSサーバに移行するLU数を決定する。
増設サーバへ移行するLU数=floor(対象の分散ボリュームの全LU数/増設後のサーバ数)・・・(2)
ここで、floorは、整数以下の切り下げを意味する。
ステップS320:リバランス制御プログラムP22は、ストレージアレイ6からLU統計情報テーブルT3を取得し、LU統計情報テーブルT3に基づいて、各分散FSサーバ2の負荷を計算する。次いで、リバランス制御プログラムP22は、複数の分散FSサーバ2を負荷の高い順にソートする。次いで、リバランス制御プログラムP22は、それぞれのボリュームについて、ステップS310で求めた移行するLU数のLU200を、負荷の高い分散FSサーバ2から順番にラウンドロビンでそのボリュームのLUを選択して再割り当てLUとし、再割り当てLUと、再割り当てLUの移行元の分散FSサーバ2と、移行先(割り当て先)の分散FSサーバ2との情報を含むLU再割り当てプランを作成する。このLU再割り当てプランに従うLU再割り当てを行うことにより、各分散FSサーバ2の負荷を均等化するようにすることができる。
なお、図19では、分散FSサーバ2の増設時のLU再割り当てプラン作成処理を示したが、分散FSサーバ2の減設時には、ステップS310の処理を省略し、リバランス制御プログラムP22は、減設する分散FSサーバ2のLU200の移行先の分散FSサーバ2を決定する。この場合、リバランス制御プログラムP22は、ストレージアレイ6からLU統計情報テーブルT3を取得し、LU統計情報テーブルT3に基づいて各分散FSサーバ2の負荷を計算し、各分散FSサーバ2を負荷の低い順にソートする。次いで、リバランス制御プログラムP22は、減設する分散FSサーバ2の再割り当てするLU200の移行先として、負荷の低い分散FSサーバ2から順番に割り当て、再割り当てLUと、再割り当てLUの移行元の分散FSサーバ2と、移行先の分散FSサーバ2との情報を含むLU再割り当てプランを作成する。このLU再割り当てプランに従うLU再割り当てを行うことにより、各分散FSサーバ2の負荷を均等化するようにすることができる。
また、上記した分散FSサーバ2の増設時又は減設時のLU再割り当てプラン作成処理を行った後、リバランス制御プログラムP22は、LU統計情報テーブルT3に基づいて、作成したLU再割り当てプラン作成処理を行った場合に想定される分散FSサーバ2の負荷を計算し、各分散FSサーバ2の負荷を均一化するようにLUの再割り当てを行うLU再割り当てプランを更新するようにしてもよい。
次に、管理プログラムP21が提供する分散ボリューム作成管理用の管理インターフェースの画面について説明する。
図20は、第1実施形態に係る分散ボリューム構成変更画面の一例である。分散ボリューム構成変更画面I1は、例えば、管理サーバ5に接続されたディスプレイ55に表示される。
管理者は、分散ボリューム構成変更画面I1を通して、分散ボリューム100のデータリバランスを実行させることができる。
分散ボリューム構成変更画面I1は、構成変更表示領域I10と、現在負荷表示領域I60と、変更後負荷表示領域I70と、決定ボタンI80と、キャンセルボタンI90と、を含む。
構成変更表示領域I10は、分散ボリューム100のLUの移行先を表示、選択するための領域であり、分散ボリューム表示領域I11と、サーバ表示領域I12と、ストレージアレイ表示領域I13と、LUN表示領域I14と、移行先サーバ選択表示領域I15と、を有する。分散ボリューム表示領域I11には、分散ボリュームIDが表示される。サーバ表示領域I12には、分散ボリュームを構成するLU200を管理する分散FSサーバ2のサーバIDが表示される。ストレージアレイ表示領域I13には、LU200を格納するストレージアレイ6のストレージアレイIDが表示される。LUN表示領域I14には、LU200のLU IDが表示される。移行先サーバ選択表示領域I15には、移行先の分散FSサーバ2のサーバIDが表示される。ここで、表示される移行先の分散FSサーバ2のサーバIDは、例えば、リストボックスにより管理者により選択されたサーバIDである。
現在負荷表示領域I60には、現在(構成変更前)の分散FSサーバ2の負荷が表示される。表示される負荷は、例えば、リバランス制御プログラムP22により算出される。変更後負荷表示領域I70には、構成変更表示領域I10に示される構成に変更した場合における各分散FSサーバ2の負荷の見積もりが表示される。表示される負荷の見積もりは、例えば、リバランス制御プログラムP22により算出される。この変更後負荷表示領域I70によると、管理者は、構成変更後の各分散FSサーバ2の負荷の状況を容易且つ適切に把握することができる。
決定ボタンI80は、構成変更表示領域I10に設定された構成変更(リバランス)を実行させる指示を受け付ける。決定ボタンI80が押下されると、リバランス制御プログラムP22は、構成変更表示領域I10に示される構成となるように、図18に示すリバランス処理を行う。キャンセルボタンI90は、構成変更(リバランス)の実行をキャンセルする指示を受け付ける。キャンセルボタンI90が押下されると、リバランス制御プログラムP22は、リバランスの実行をキャンセルする。
<第2実施形態>
次に、第2実施形態に係る計算機システムの一例としての分散ストレージシステム0Aの概要について説明する。
分散ストレージシステム0Aは、疑似乱数データ配置アルゴリズムを用いた分散オブジェクトストレージである。ここで、疑似乱数データ配置アルゴリズムとは、データのハッシュ値を用いデータを偏りがないように配置するためのアルゴリズムであり、このようなアルゴリズムとしてはCRUSH(Controlled Replication Under Scalable-Hashing)等がある。また、疑似乱数データ配置アルゴリズムを用いたオブジェクトストレージの例としてCRUSHを用いたCephがある。
分散ストレージシステム0Aにおいては、複数のオブジェクトストレージサーバ101によって分散オブジェクトストレージを構成し、各オブジェクトストレージサーバ101は、共有ストレージ(ストレージアレイ6)を使用している。分散ストレージシステム0Aでは、細粒度のLU200(本実施形態では、ストレージデバイスともいう。論理単位領域の一例)を複数作成し、複数のLU200により、オブジェクトプール300(図21参照:共有領域の一例)を構成する。分散ストレージシステム0Aは、第1実施形態と同様に、分散サーバ(オブジェクトストレージサーバ101)の増減設に伴って、分散サーバ間でLU200を移行することで、ネットワーク経由のデータ転送がない、高速なリバランスを実現する。
図21は、第2実施形態に係る分散ストレージシステムの処理の概要を示す図である。なお、第1実施形態に係る分散ストレージシステムと同様な構成部分については、同一の符号を付し、重複する説明を省略する。図21は、分散ストレージシステム0Aにおけるサーバ増設時のリバランス処理の概要を示す。
分散ストレージシステム0Aは、分散ストレージシステム0における分散FSサーバ2に代えて、オブジェクトストレージサーバ101(101A~101E)を備え、分散ボリューム100に代えてオブジェクトプール300を備える。分散ストレージシステム0Aは、ユーザデータを格納するためのオブジェクトプール300をクライアントサーバ1Aに対して提供する。オブジェクトプール300は、複数のオブジェクトストレージサーバ110に提供されている複数のLU200をたばねて構成されている。図21の例では、オブジェクトプール300は、オブジェクトストレージサーバ101A(サーバA)を含む一台以上のオブジェクトストレージサーバ101に提供されているLU200から構成される。
分散ストレージシステム0A、オブジェクトプール300に格納するユーザデータを、例えば、オブジェクト(データ単位の一例)を単位として格納する。分散ストレージシステム0Aは、疑似乱数データ配置アルゴリズムを用いて、オブジェクトを、オブジェクトストレージサーバ101間で均等化するように分散(均等分散という)する。
オブジェクトストレージサーバ101は、ユーザデータを、ストレージアレイ6内に作成された細粒度のLU200に格納する。管理サーバ5は、リバランス時にLU200を割り当てるオブジェクトストレージサーバ101を変更する。この際、管理サーバ5は、オブジェクトプール300を構成するLUの構成情報(LU割当管理テーブルT7(図13参照))において、LUを担当するサーバ(担当サーバ)を変更することで、リバランス前後の各LUが変わらないようにする。この結果、ネットワーク経由のデータ移行は不要となり、高速データリバランスを実現できる。
図21は、オブジェクトストレージサーバ101A~101Dにより構成されている分散ストレージシステム0Aに対して、オブジェクトストレージサーバ101E(オブジェクトストレージサーバE)を増設した場合において、オブジェクトストレージサーバ101A~101Dが管理しているLU200(LU1~LU20)によって構成するオブジェクトプール300のデータをリバランスするリバランス処理の概要を示している。
分散ストレージシステム0Aは、オブジェクトストレージサーバ101Eが増設された場合、オブジェクトストレージサーバ101A~101Dに割り当てられたLU200(LU1~LU20)の一部のLU200(LU5,LU10,LU15,LU20)を、オブジェクトストレージサーバ101Eに再割り当てする。この際、オブジェクトプール300におけるLUの構成を変更せず、各LU200が変わらないようにする。分散ストレージシステム0Aは、オブジェクトストレージサーバ101Eに再割り当て後、分散オブジェクトストレージ制御プログラムP41は、クライアントサーバ1Aに再割り当て後のデータ配置を通知し、クライアントサーバ1Aからのデータアクセスをリバランス後のデータ配置に対応するオブジェクトストレージサーバ101に切り替える。このようにすることで、分散ストレージシステム0A、オブジェクトストレージサーバ101間のデータ移行についてのネットワーク転送を伴うことなく、増設したオブジェクトストレージサーバ101Eへのデータリバランスを実現することができる。
以上説明したように、第2実施形態に係る分散ストレージシステム0Aでは、オブジェクトプール300を、ストレージアレイ6内における多数(例えば、オブジェクトストレージサーバ101の数より多い数)のLU200で作成しておき、オブジェクトストレージサーバ101の構成が変わった際に、LU200をオブジェクトストレージサーバ101間で再割り当てすることで、ネットワーク経由のデータ移行処理を不要とする。この結果、データリバランスの処理に要する時間を大幅に減らすことができる。クライアントサーバ1Aに対して論理的な記憶領域である分散ボリューム100を提供する分散ファイルシステムを構成する。
管理サーバ5の構成は、基本的には、図9に示す管理サーバ5の構成と同様である。また、ストレージアレイ6の構成は、基本的には、図6のストレージアレイ6の構成と同様である。なお、管理サーバ5及びストレージアレイ6のテーブルのLU IDのフィールドは、ストレージデバイスのID(ストレージデバイスID)が格納されるフィールドとなる。
次に、オブジェクトストレージサーバ101の構成について説明する。
図22は、第2実施形態に係るオブジェクトストレージサーバ101の構成図である。なお、図3の分散FSサーバ2と同様な構成については、同一の符号を付し、重複する説明を省略する場合がある。
オブジェクトストレージサーバ101は、他のオブジェクトストレージサーバ101と共に、クライアントサーバ1Aに対して論理的な記憶領域であるオブジェクトプール300を提供するオブジェクトストレージを構成する。
オブジェクトストレージサーバ101のメモリ22は、分散FS制御プログラムP1に代えてオブジェクトストレージ制御プログラムP41を記憶し、分散ボリューム構成管理テーブルT0に代えてオブジェクトストレージ制御テーブルT9を記憶する。
オブジェクトストレージ制御プログラムP41は、他のオブジェクトストレージサーバ101と協調し、オブジェクトプール300をクライアントサーバ1Aに提供する。
オブジェクトストレージ制御テーブルT9は、オブジェクトストレージの制御情報を格納する。オブジェクトストレージ制御テーブルT9のエントリは、図4に示す分散ボリューム構成管理テーブルT0のエントリにおける分散ボリュームID C1に代えてストレージプールIDのフィールドを有する。ストレージプールIDのフィールドには、ストレージプール300を識別する識別子(ストレージプールID)が格納される。
次に、第2実施形態に係るクライアントサーバ1Aの構成について説明する。なお、図14に示すクライアントサーバ1と同様な構成には同一の符号を付し、重複する説明を省略する場合がある。
クライアントサーバ1Aのメモリ12は、分散FSクライアントプログラムP32に代えて、オブジェクトストレージクライアントプログラムP52を格納する。また、メモリ12は、ハッシュ管理テーブルT8に代えて、ストレージデバイスID管理テーブルT10を格納する。
オブジェクトストレージクライアントプログラムP52は、オブジェクトプール300に接続するための制御を行う。ストレージデバイスID管理テーブルT10は、オブジェクトプール300へのアクセスに必要なストレージデバイス(LU200)のID(ストレージデバイスID)を管理するためのテーブルである。ストレージデバイスID管理テーブルT10の詳細については、図24を用いて後述する。
次に、ストレージデバイスID管理テーブルT10の構成について詳細に説明する。
図24は、第2実施形態に係るストレージデバイスID管理テーブルの構成図である。
ストレージデバイスID管理テーブルT10は、クライアントサーバ1A上のオブジェクトストレージクライアントプログラムP52がオブジェクトストレージサーバ101で管理されているオブジェクトにアクセスするためのストレージデバイスIDを管理する。ストレージデバイスID管理テーブルT10は、オブジェクトプールID C1001と、サーバID C1002と、ストレージデバイス ID C1003とのフィールドを含む。
オブジェクトプールID C1001には、オブジェクトプール300のID(オブジェクトプールID)が格納される。サーバID C1002には、エントリに対応するデオブジェクトプール300のオブジェクトを格納するオブジェクトストレージサーバ101の識別子(サーバID)が格納される。サーバID C1002には、オブジェクトプール300のデータを管理する全てのオブジェクトストレージサーバ101に対応するサーバIDが格納される。ストレージデバイスID C1003には、オブジェクトプール300を構成するストレージデバイスのID(ストレージデバイスID)が格納される。ストレージデバイスID C1003には、エントリに対応するオブジェクトプール300を構成する全てのストレージデバイスのストレージデバイスIDが格納される。
第2実施形態に係る分散ストレージシステム0Aにおけるデータ格納処理の概要を説明する。
図25は、第2実施形態に係る分散ストレージシステム0Aにおけるデータ格納処理の概要を示す図である。
図25は、クライアントサーバ1Aが、オブジェクトストレージサーバ101A~101Cにより構成されたオブジェクトプール300にオブジェクトO1~O3(ObjA~ObjC)を格納する場合の処理の概要を示している。
クライアントサーバ1において、格納対象のオブジェクトをオブジェクトプール300に格納する際には、クライアントサーバ1のオブジェクトストレージクライアントプログラムP52が、以下の式(3)により、各ストレージデバイスに対するスコアを計算する。
スコア=HASH(オブジェクトID,ストレージデバイスID)・・・(3)
ここで、HASHは、2値を引数とするハッシュ関数であり、疑似乱数データ配置アルゴリズムに使用可能な関数である。
次いで、オブジェクトストレージクライアントプログラムP52は、ストレージデバイスの中で算出されたスコアが最も高いストレージデバイス(LU200に対応)に対して、格納対象のオブジェクトを格納する。ここで、HASHは、引数に対して確率的に均等に分散された値を算出することができるため、ストレージデバイス間で均等となるように負荷と容量とを分散することができる。
第2実施形態に係る分散ストレージシステム0Aにおいては、上記した第1実施形態に係る分散処理システム0と同様な処理(図17~図19)を実行する。なお、各処理において、分散FS制御プログラムP1はオブジェクトストレージ制御プログラムP41と、分散ボリューム構成管理テーブルT0はオブジェクトストレージ制御テーブルT9と、分散FSクライアントプログラムP32は、オブジェクトストレージクライアントプログラムP52と、ハッシュ管理テーブルT8はストレージデバイスID管理テーブルT10と、分散FSサーバ2はオブジェクトストレージサーバ101と、分散ボリューム100はオブジェクトプール300と、LU-IDはストレージデバイスIDと、それぞれ読み替えればよい。
以上、本発明の実施形態を説明したが、以上の実施形態は、本発明を分かりやすく説明するために詳細に説明したものであり、本発明は、必ずしも説明した全ての構成を備えるものに限定されるものではない。ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。図の構成は説明上必要と考えられるものを示しており、製品上必ずしも全ての構成を示しているとは限らない。
また、実施形態では、各サーバとして物理サーバを使用した構成にて説明したが、これに限られず、仮想マシンを用いたクラウドコンピューティング環境においても本発明は適用可能である。クラウドコンピューティング環境は、クラウド提供者により抽象化されたシステム・ハードウェア構成上において、仮想マシン/コンテナを運用する構成となる。この場合、実施形態で示したサーバは仮想マシン/コンテナにより実現でき、ストレージアレイ6はクラウド提供者が提供するブロックストレージサービスにより実現できる。