この発明は、構成するディスク装置の台数を動的に変更可能な分散ストレージ管理プログラム、分散ストレージ管理装置、および分散ストレージ管理方法に関する。
複数のディスク装置から構成される分散ストレージシステムでは、ディスク装置の性能を最大限に活かすため、それぞれのディスク装置に保持されるファイル数が十分に均等であることが求められている。また、要求されるストレージ容量は大きく変化する可能性があるため、ディスク装置の台数を動的に変更可能であることが求められている。
これらの要求を満たすためには、ディスク装置の台数変更時にファイルの移動(再配置)が必要となる。従来、大量のデータを複数の記憶装置に分配して管理する手法として、マネージャ・ベースとアルゴリズム・ベースの技術が知られている(例えば、下記非特許文献1参照。)。
マネージャ・ベースの技術では、マネージャとなるコンピュータ装置が1個のファイルごとに対応するディスク装置を管理する。これによれば、ファイル群に対して柔軟にディスク装置を割り当てることが可能であり、ディスク装置ごとのファイル数を均等にして、かつ、ディスク装置の台数変更時にファイルの再配置を最小にすることができる。
また、アルゴリズム・ベースの技術では、ファイル名などのキーワードから算出されるハッシュ値に基づいて、各ファイルを対応するディスク装置に割り当てる。これによれば、ファイルの追加・参照・変更・削除時にファイルごとのマッピングを並列におこなうことができる。
具体的には、例えば、ファイル名から十分大きな整数を生成し、その整数をディスク装置で割った余りによるマッピングをおこなう。これによれば、ディスク装置をa台からb台、または、b台からa台に変更する場合(ただし、a<b)、必要となる再配置のファイル数は、aとbとの最大公約数をNとすると、全ファイル数の(b−N)/bとなる。
しかしながら、上述したマネージャ・ベースの技術によれば、マネージャがファイル単位の管理を一元的におこなうため、ファイルの追加・参照・変更・削除に関する全ての問い合わせがマネージャに集中してしまう。この結果、通信トラフィックや排他制御によるボトルネックが生じてしまうという問題があった。
また、上述したアルゴリズム・ベースの技術によれば、ディスク装置ごとのファイル数を十分均等にするためにはランダムな値を生成するハッシュ関数をディスク装置の台数で割るなどの手法がとられる。このため、ディスク装置の増減にともなうファイルの再配置を最小にすることができない場合があるという問題があった。
具体的には、ファイルの再配置先となるディスク装置が、そのときの全ディスク装置の台数によって大きく変わってしまうため、ディスク装置の台数変更時におけるファイルの再配置が大量に発生してしまうという問題があった。
この発明は、上述した従来技術による問題点を解消するため、ディスク装置の台数を変更するときのファイルの再配置を最小化することにより、ストレージシステムの性能を向上させることを目的とする。
上述した課題を解決し、目的を達成するため、この開示技術は、再構成を予定している記憶装置の台数の公倍数Mを取得し、所定のアルゴリズムに従って、前記記憶装置に記憶されているファイル群を、取得された公倍数M個分のクラスに割り当て、現在の台数から成る前記記憶装置を現在の台数とは異なる他の台数から成る記憶装置に変更する場合、前記クラスと割り当てられる記憶装置との対応関係を有する割当テーブルに従って、割り当てられたファイル群を、前記クラス単位で前記他の台数から成る記憶装置に割り当てる。
この開示技術によれば、記憶装置の台数変更時におけるファイルの再配置をクラス単位でおこなうことができる。
この開示技術によれば、ディスク装置の台数を変更するときのファイルの再配置を最小化することにより、ストレージシステムの性能を向上させることができるという効果を奏する。
以下に添付図面を参照して、この分散ストレージ管理プログラム、分散ストレージ管理装置、および分散ストレージ管理方法の好適な実施の形態を詳細に説明する。
(ストレージシステムのシステム構成)
まず、本実施の形態にかかるストレージシステムのシステム構成について説明する。図1は、本実施の形態にかかるストレージシステムのシステム構成図である。図1において、ストレージシステム100は、分散ストレージ管理装置101と、複数のサーバ102−1〜102−nとがインターネット、LAN、WANなどのネットワーク110を介して相互に交信可能に接続されている。
ストレージシステム100は、ウェブサーバなどの外部装置103−1〜103−nに対してストレージサービスを提供するシステムである。ストレージサービスとは、任意のファイル群を、サーバ102−1〜102−nのディスク装置D1〜Dnに保持し、管理するサービスである。なお、D1〜Dnは、各ディスク装置に付与されているディスク番号である。
ストレージシステム100では、要求されるストレージ容量やアクセス数などに応じて、ファイル群を保持するためのディスク装置D1〜Dnの台数を動的に変更することができる。例えば、要求されるストレージ容量が少ないときには、2台のディスク装置D1,D2でストレージサービスを運用する(図1中X1)。
このあと、例えば、要求されるストレージ容量が増えると、ディスク装置D1〜Dnの台数を2台(ディスク装置D1,D2)から4台(ディスク装置D1〜D4)に変更する(図1中X2)。このとき、サーバ102−1〜102−nにかかる負荷を分散するために、ディスク装置D1,D2に記憶されているデータの再配置をおこなうことで、ファイル群をディスク装置D1〜D4に均等に振り分ける。
ここで、分散ストレージ管理装置101は、ディスク装置D1〜Dnの台数変更時に、ファイル群の再配置を管理するコンピュータ装置である。また、サーバ102−1〜102−nは、ディスク装置D1〜Dnを備え、各ディスク装置D1〜Dnに対するファイルのリード/ライトを制御するコンピュータ装置である。
(コンピュータ装置のハードウェア構成)
つぎに、図1に示した分散ストレージ管理装置101、サーバ102−1〜102−nおよび外部装置103−1〜103−n(ここでは、単に「コンピュータ装置」という)のハードウェア構成について説明する。図2は、本実施の形態にかかるコンピュータ装置のハードウェア構成を示す説明図である。
図2において、コンピュータ装置は、コンピュータ本体210と、入力装置220と、出力装置230と、から構成されており、不図示のルータやモデムを介してLAN,WANやインターネットなどのネットワーク110に接続可能である。
コンピュータ本体210は、CPU,記憶部,インターフェースを有する。CPUは、コンピュータ装置の全体の制御を司る。記憶部は、ROM,RAM,HD,光ディスク211,フラッシュメモリから構成される。記憶部はCPUのワークエリアとして使用される。
また、記憶部には各種プログラムが格納されており、CPUからの命令に応じてロードされる。HDおよび光ディスク211はディスクドライブによりデータのリード/ライトが制御される。また、光ディスク211およびフラッシュメモリはコンピュータ本体210に対し着脱自在である。インターフェースは、入力装置220からの入力、出力装置230への出力、ネットワーク110に対する送受信の制御をおこなう。
また、入力装置220としては、キーボード221、マウス222、スキャナ223などがある。キーボード221は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス222は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ223は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体210内の記憶部に格納される。なお、スキャナ223にOCR機能を持たせてもよい。
また、出力装置230としては、ディスプレイ231、スピーカ232、プリンタ233などがある。ディスプレイ231は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ232は、効果音や読み上げ音などの音声を出力する。また、プリンタ233は、画像データや文書データを印刷する。
(実施の形態1)
(分散ストレージ管理装置101の機能的構成)
つぎに、実施の形態1にかかる分散ストレージ管理装置101の機能的構成について説明する。図3は、分散ストレージ管理装置の機能的構成を示すブロック図である。図3において、分散ストレージ管理装置101は、取得部301と、ファイル割当部302と、クラス割当部303と、作成部304と、配信部305と、を含む構成である。
この制御部となる機能(取得部301〜配信部305)は、メモリに格納された当該機能に関するプログラムをCPUに実行させることにより、当該機能を実現することができる。また、各機能からの出力データはメモリに保持される。また、図3中矢印で示した接続先の機能的構成は、接続元の機能からの出力データをメモリから読み込んで、当該機能に関するプログラムをCPUに実行させる。
まず、取得部301は、任意のファイル群を割り当てるクラスのクラス数Mを取得する機能を有する。記憶装置は、ハードディスク、光ディスク211、フラッシュメモリなどの記憶媒体(例えば、図1に示したディスク装置D1〜Dn)であってもよく、また、これら記憶媒体を備えるコンピュータ装置(例えば、図1に示したサーバ102−1〜102−n)であってもよい。
ここでは、クラス数Mとして、再構成を予定している記憶装置の台数の公倍数Mを取得する。再構成を予定している記憶装置の台数とは、要求されるストレージ容量などに応じて動的に再構成可能な記憶装置の複数通りの台数の集合{m1,m2,…,mk}である(k:自然数)。運用例としては、要求されるストレージ容量が増大すると記憶装置の台数を増やし、要求されるストレージ容量が減少すると記憶装置の台数を減らすこととなる。
この複数通りの台数は、図2に示したキーボード221やマウス222などの入力装置220をユーザ(ストレージシステム100の管理者など)が操作することで予め任意に設定される。例えば、複数通りの台数として{2,4,6}が設定されたとする。この場合、取得部301は、例えば、{2,4,6}の公倍数を算出し、複数の公倍数『12,24,36,…』のうちいずれかの数を公倍数Mとして取得する。
このとき、複数の公倍数の中から最小公倍数を公倍数Mとして取得することとしてもよい。なお、図2に示したキーボード221やマウス222などの入力装置220をユーザが操作することで分散ストレージ管理装置101に直接入力された公倍数Mを取得することとしてもよい。
ファイル割当部302は、所定のアルゴリズムに従って、任意のファイル群を、取得部301によって取得された公倍数M個分のクラスに割り当てる機能を有する。ここで、ファイル群とは、例えば、現在使用されている記憶装置に記憶されているファイル群であってもよく、また、新たに追加するファイル(どの記憶装置にも割り当てられていないファイル)を含むものであってもよい。
具体的には、例えば、ファイル割当部302は、公倍数M個分のクラスを定義し、所定のアルゴリズムを用いてファイル群をクラス単位で均等になるようにグループ化する。ここで、所定のアルゴリズムとは、ファイル群を公倍数M個分のクラス{C1,C2,…,CM}に均等になるように配分するための関数である。
このアルゴリズムは、ユーザによって任意に設定可能である。具体的には、例えば、各ファイルのファイル名を表わす文字列から1つの整数が定まる十分一様なハッシュ関数h()を1つ決定し、公倍数Mを法とした合同(mod M)により、M個のクラスに分類することとしてもよい。
より具体的には、例えば、ハッシュ関数の一つである「SHA1(Secure Hash Algorithm 1)」を用いることとしてもよい。この場合、ファイル群をM個のクラス{C1,C2,…,CM}に均等に配分する関数C()を「C(ファイル名)=SHA1(ファイル名)mod M」のように定める。なお、「SHA1」は公知技術のため詳細な説明を省略する。
クラス割当部303は、ファイル割当部302によってクラス数M個分のクラスにそれぞれ割り当てられたファイル群を、クラス単位で任意の台数から成る記憶装置に割り当てる機能を有する。このとき、所定のアルゴリズムに従って、各記憶装置に割り当てられるクラス数が均等になるようにファイル群をクラス単位で割り当てる。
ここで、初期状態の記憶装置の台数としてa台が与えられたとする。この場合、クラス割当部303は、公倍数Mを台数aで割ったM/a個のクラスを各記憶装置にそれぞれ割り当てる。なお、初期状態の台数は、例えば、図2に示した入力装置220をユーザが操作することで分散ストレージ管理装置101に直接入力することとしてもよく、また、ストレージシステム100の設計時に予め設定されていてもよい。
また、クラス割当部303は、ファイル群を記憶させる記憶装置の使用台数を現在の台数(例えば、初期状態の台数)から他の台数に変更する場合、ファイル割当部302によってクラス数M個分のクラスにそれぞれ割り当てられたファイル群を、クラス単位で他の台数から成る記憶装置に割り当てる機能を有する。
具体的には、たとえば、記憶装置の台数を、再構成を予定している複数通りの台数{m1,m2,…,mk}のうち現在の台数m1から他の台数m2に変更する場合、ファイル群をm2台の記憶装置にクラス単位で十分均等に割り当てる。このとき、すべてのファイル群が変更前のm1台の記憶装置に記憶されている場合、クラスと変更前のm1台の各記憶装置との対応関係を有する割当テーブルを参照して割り当てをおこなう。
また、ファイル群に新たに追加する新規ファイルが含まれている場合には、ファイル割当部302により、新規ファイルを含むファイル群を公倍数M個分のクラスに再度割り当て、そのあと、クラス割当部303により、クラス数M個分のクラスにそれぞれ割り当てられたファイル群を、クラス単位で他の台数から成る記憶装置に割り当てることとしてもよい。
ここで、割当テーブルとは、クラス割当部303による割当結果を示すものである(後述する図4参照)。この割当テーブルを参照することにより、各クラスの割当先の記憶装置を認識することができる。なお、詳細は後述するが、クラス割当部303による割当処理が完了すると、任意の手法によりファイルの転送処理が実行され、ファイル群がクラス単位で割当先の記憶装置に記憶されることとなる。
また、台数の変更の要否は、例えば、要求されるストレージ容量に基づいて自動判断することとしてもよい。具体的には、現在の台数に対して、要求されるストレージ容量が所定の閾値以上となった場合、台数を増やす変更指示を出力することとしてもよい。また、現在の台数に対して、要求されるストレージ容量が所定の閾値未満となった場合、台数を減らす変更指示を出力することとしてもよい。
さらに、ユーザが、要求されるストレージ容量を判断し、図2に示したキーボード221やマウス222などの入力装置220を操作することで台数の変更指示(変更後の記憶装置の台数を含む)を入力することとしてもよい。この場合、クラス割当部303は、上記変更指示に基づいて、台数の変更および変更内容を判断することとなる。
なお、変更対象となる記憶装置は、ユーザが任意に選択することとしてもよく、また、外部の要件から選択することとしてもよい。例えば、記憶装置の台数を減らすときに、割り当てられているクラス数が少ない記憶装置を優先して選択する。また、他の用途に必要となった記憶装置や故障した記憶装置が存在する場合には、その記憶装置を選択する。
ここで、クラス割当部303による割当処理の具体例について説明する。ここでは、変更前の記憶装置の台数をa台とする。また、ファイル割当部302によってファイル群が割り当てられた公倍数M個分のクラス群が、a台の各記憶装置に均等になるように割り当てられている。具体的には、M/a個のクラスが各記憶装置に割り当てられている。
まず、記憶装置の使用台数をa台からb台(ただし、a<b)に変更する場合について説明する。クラス割当部303は、記憶装置の使用台数をa台からb台(ただし、a<b)に変更する場合、a台の各記憶装置に割り当てられているM/a個のクラスのうち、(M/a−M/b)個のクラスを、変更対象となる(b−a)台の記憶装置にそれぞれ割り当てる。このとき、Mはa,bの公倍数のため、上記(M/a)および(M/a−M/b)は必ず割り切れる。
要するに、変更前のa台の記憶装置に割り当てられているクラスの一部を、台数変更により増設される(b−a)台の記憶装置に割り当てることで、変更後のb台の記憶装置に均等にクラスが割り当てられた状態にする。これにより、a台からb台に変更する場合のファイルの再配置を最小化することができる。なお、記憶装置の台数をa台からb台(ただし、a<b)に変更する場合の具体例は、後述する実施例1において説明する。
つぎに、記憶装置の台数をb台からa台(ただし、a<b)に変更する場合について説明する。クラス割当部303は、記憶装置の台数をb台からa台(ただし、a<b)に変更する場合、変更対象(縮退対象)となる(b−a)台の記憶装置に割り当てられている(M×(1−a/b))個のクラスを、a台の記憶装置に(M/a−M/b)個のクラスずつそれぞれ割り当てる。
要するに、変更により減らされる(b−a)台の記憶装置に割り当てられているクラスを、残余のa台の記憶装置に均等に割り当てることにより、変更後のa台の記憶装置に均等にクラスが割り当てられた状態にする。これにより、b台からa台に減らす場合のファイルの再配置を最小化することができる。なお、記憶装置の台数をb台からa台(ただし、a<b)に変更する場合の具体例は、後述する実施例2において説明する。
作成部304は、クラス割当部303によって割り当てられた割当結果に基づいて、ファイル群が十分均等に割り当てられたクラスと、該各クラスが割り当てられている記憶装置との対応関係を有する割当テーブルを作成する機能を有する。ここで、割当テーブルの具体例について説明する。
図4は、割当テーブルの具体例を示す説明図(その1)である。図4において、割当テーブル400は、12個のクラスC1〜C12を、2台のディスク装置D1,D2(図1参照)に均等に割り当てた割当結果を表わしている。これは、公倍数Mが12、現在の記憶装置の使用台数が2台の場合の例である。
具体的には、各クラスC1〜C12と、該各クラスC1〜C12が割り当てられているディスク装置との対応関係が表わされている。より具体的には、クラスC1〜C6はディスク装置D1に割り当てられており、クラスC7〜C12はディスク装置D2に割り当てられていることを表わしている。なお、図示は省略するが、各クラスC1〜C12には、ファイル群が十分均等に割り当てられている。
配信部305は、作成部304によって作成された割当テーブルを、記憶装置に対するファイルのリード/ライトを制御する情報処理装置に配信する機能を有する。この情報処理装置は、記憶装置を備えたコンピュータ装置であり、ネットワーク110を介して分散ストレージ管理装置101と接続されている。具体的には、例えば、情報処理装置は、図1に示したサーバ102−1〜102−nである。
ここで、情報処理装置は、分散ストレージ管理装置101から配信される割当テーブルを受信するコンピュータ装置である。また、情報処理装置は、この割当テーブルを参照することにより、記憶装置に対するファイルのリード/ライトを制御する。なお、割当テーブルを参照した記憶装置に対するファイルのリード/ライトについては、後述する実施例3において説明する。
ここで、ファイルの転送処理の具体例について説明する。まず、クラスの割当先が変更される場合について説明する。この場合、配信部305により、変更前の割当先の記憶装置を制御する情報処理装置(転送元)に、転送対象のファイルおよび転送先の情報処理装置を特定する転送要求を送信する。
このあと、転送元の情報処理装置は、転送要求を受信し、その転送要求から転送対象のファイルおよび転送先の情報処理装置を特定する。そして、転送対象のファイルを転送先の情報処理装置に転送する。これにより、転送対象のファイルが、転送元の情報処理装置から転送先の情報処理装置に転送される。
つぎに、新規ファイルが追加される場合について説明する。この場合、配信部305により、新規ファイルの割当先の記憶装置を制御する情報処理装置(要求先)に、新規ファイルおよび新規ファイルの保持要求を送信する。このあと、要求先の情報処理装置は、保持要求を受信し、新規ファイルを記憶装置に記憶する。
他の例として、配信部305により、任意の情報処理装置(要求先)に、新規ファイルおよび新規ファイルの保持要求を送信することとしてもよい。この場合、要求先の情報処理装置において、所定のアルゴリズムから新規ファイルが属するクラスを特定し、そのクラスと割当テーブルとを照らし合わせることで、そのクラスが属する記憶装置を特定することとなる(後述する実施例3を参照。)。
また、作成部304は、再構成を予定している記憶装置の複数通りの台数ごとに、公倍数M個分のクラス群を各記憶装置に均等になるように割り当てた割当結果を表わす割当テーブルを作成することとしてもよい。つまり、複数通りの台数ごとに、記憶装置が再構成された場合の各クラスと各記憶装置との対応関係を有するテーブル表を予め作成する。
そして、この割当テーブルを各情報処理装置に配信することにより、記憶装置が再構成されたときに、その都度、そのときの記憶装置の台数に応じた割当テーブルを作成・配信する必要がなくなる。なお、複数通りの台数ごとの割当結果を表わす割当テーブルの具体例については、図12を用いて後述する。
ここで、複数通りの台数ごとの割当結果を表わす割当テーブルを作成する具体的な処理手順について説明する。ここでは、複数通りの台数{m1,m2,…,mk}は、昇順(または、降順)に並べられてあることとする。まず、取得部301により、複数通りの台数{m1,m2,…,mk}の公倍数Mを取得する。このあと、ファイル割当部302により、ファイル群を公倍数M個分のクラスに十分均等に割り当てる。
そして、クラス割当部303により、a=mi、b=mi+1として、i=1からi=k−1まで、記憶装置の台数をa台からb台(ただし、a<b)に変更する割当処理を繰り返し実行する。最後に、作成部304により、クラス割当部303による複数の割当結果に基づいて、複数通りの台数ごとの割当結果を表わす割当テーブルを作成する。
(分散ストレージ管理装置の分散ストレージ処理手順)
つぎに、実施の形態1にかかる分散ストレージ管理装置101の分散ストレージ処理手順について説明する。図5は、実施の形態1にかかる分散ストレージ管理装置の分散ストレージ処理手順を示すフローチャートである。図5のフローチャートにおいて、まず、取得部301により、再構成を予定している記憶装置の台数の公倍数Mを取得したか否かを判断する(ステップS501)。
ここで、公倍数Mを取得するのを待って(ステップS501:No)、取得した場合(ステップS501:Yes)、ファイル割当部302により、所定のアルゴリズムに従って、記憶装置に記憶されているファイル群を、取得部301によって取得された公倍数M個分のクラスに割り当てる(ステップS502)。そして、クラス割当部303により、公倍数M個分のクラスを、現在の使用台数の記憶装置に均等になるように割り当てる(ステップS503)。
つぎに、ステップS503において割り当てられた割当結果に基づいて、ファイルの転送処理を実行する(ステップS504)。このあと、複数通りの台数のうち現在の台数とは異なる他の台数に変更する記憶装置の台数の変更指示を待つ(ステップS505:No)。
ここで、変更指示があった場合(ステップS505:Yes)、クラス割当部303により、ファイル割当部302によってクラス数M個分のクラスにそれぞれ割り当てられたファイル群を、クラス単位で他の台数から成る記憶装置に割り当てる(ステップS506)。最後に、ステップS506において割り当てられた割当結果に基づいて、ファイルの転送処理を実行して(ステップS507)、本フローチャートによる一連の処理を終了する。
以上説明した実施の形態1によれば、ファイル群を公倍数M個分のクラスに十分均等に割り当てることにより、ファイルの転送処理をクラス単位でおこなうことができる。具体的には、クラスを論理ディスクに割り当てることで、記憶装置の台数変更時に、クラスに属するファイルを一括して移動させることができる。これにより、記憶装置の使用台数を変更するときのファイルの再配置を少なくすることができる。
また、クラス群の割当結果を表わす割当テーブルを、記憶装置を制御する情報処理装置に配信することができる。これにより、情報処理装置は、割当テーブルを参照して、記憶装置に対するファイルのリード/ライトを制御することができる。すなわち、新規ファイルの追加やファイル参照などの運用を実施する際に、分散ストレージ管理装置101に対する割当結果の問い合わせが不要となりボトルネックを防ぐことができる。
さらに、再構成を予定している記憶装置の複数通りの台数ごとに、クラス群の割当結果を表わす割当テーブルを作成し、その割当テーブルを情報処理装置に配信することができる。これにより、記憶装置の台数を変更するときに、その都度、そのときの記憶装置の台数に応じた割当テーブルを作成・配信する必要がなくなる。
また、記憶装置の台数の変化に関わらず、クラスとファイルとの関係は変化しない。このため、台数変更時のファイル群のクラス割り当てに変更が不要となり、クラスとファイルとの対応関係を効率的に管理することができる。また、記憶装置の台数変更時におけるファイルごとのハッシュ値の再計算が不要となるため、再構成にかかる処理を削減することができる。
なお、実施の形態1では、ファイル数に基づいて、ファイル群を公倍数M個分のクラスに十分均等に割り当てることとしたが、個々のファイルのデータ量に基づいて、ファイル群を公倍数M個分のクラスに均等に割り当てることとしてもよい。具体的には、各クラスに割り当てられたファイルの総データ量が十分均等になるように、ファイル群を公倍数M個分のクラスに割り当てることとしてもよい。
つぎに、上述した実施の形態1の実施例1について説明する。実施例1では、図1に示したストレージシステム100において、ディスク装置D1〜Dnの台数を2台(a=2)から4台(b=4)に変更する場合を例に挙げて説明する。つまり、要求されるストレージ容量の増大に応じて、ディスク装置D1〜Dnの台数を増やす。
(稼働前準備)
まず、ストレージサービスの運用を開始する前の稼働前準備について説明する。稼働前準備として、ストレージシステム100の管理者により、再構成を予定しているディスク装置D1〜Dnの複数通りの台数を設定する。ここでは、複数通りの台数{2,4,6}が設定されている。この結果、取得部301により、これら複数通りの台数{2,4,6}の最小公倍数M(M=12)が取得される。
つぎに、最小公倍数M個分、すなわち、12個分のクラスC1〜C12を定義し、ファイル割当部302により、ファイル群を各クラスC1〜C12に十分均等に割り当てる。ここでは、ファイル群を24個のファイルf1〜f24とする。具体的には、ファイル割当部302は、各クラスC1〜C12に2個ずつのファイルを割り当てることとなる。
ここで、f1〜f24は、各ファイルに付与されているファイル番号である。また、C1〜C12は、各クラスに付与されているクラス番号である。このあと、初期状態でのディスク装置D1〜Dnの台数aを設定する。具体的には、例えば、複数通りの台数{2,4,6}の中からユーザが任意に選択する。ここでは、2台(a=2)のディスク装置D1,D2が設定されている。
(分散ストレージ処理の概要)
以下、図6を用いて実施例1における分散ストレージ処理の概要について説明する。図6は、実施の形態1の実施例1における分散ストレージ処理の概要を示す説明図である。図6において、サーバ102−1,102−2に備えられたディスク装置D1,D2にファイルf1〜f24が記憶されている。
ここでは、2台のディスク装置D1,D2にファイルf1〜f24がクラスC1〜C12単位で均等に記憶されている。具体的には、例えば、所定のアルゴリズムに従って、クラス番号の小さいものから6クラスずつ、ディスク番号の小さいディスク装置D1,D2へ順に割り当てる。これにより、ディスク装置D1にはクラスC1〜C6が、ディスク装置D2にはクラスC7〜C12が割り当てられる。この結果、ディスク装置D1,D2に、ファイルf1〜f24が12個ずつ均等に記憶されることとなる。
このあと、ディスク装置D1,D2の台数を、現在の2台から4台に変更する。ここでは、サーバ102−3,102−4に備えられたディスク装置D3,D4を追加する。このとき、クラス割当部303により、2台のディスク装置D1,D2にそれぞれ割り当てられている6個のクラスのうち、3個のクラスを、変更対象となる2台のディスク装置D3,D4にそれぞれ割り当てる。
具体的には、例えば、ディスク装置D1,D2にそれぞれ割り当てられている6個(M/a)のクラスのうち、クラス番号の大きいものから3個(M/a−M/b)のクラスを再配置対象として選択する。すなわち、ディスク装置D1に割り当てられているクラスC4,C5,C6、およびディスク装置D2に割り当てられているクラスC10,C11,C12を再配置対象として選択する。
このあと、再配置対象として選択された6個(M×(1−a/b))のクラスを、クラス番号の小さいものから順に3クラスずつ(M/b)、ディスク番号が小さいものから順にディスク装置D3,D4に割り当てる。ここでは、クラスC4,C5,C6がディスク装置D3に、クラスC10,C11,C12がディスク装置D4に割り当てられる。
最後に、クラス割当部303による割当結果に基づいて、各クラスに属するファイルを対応するディスク装置に転送する。この結果、各ディスク装置においてファイルが記憶される。具体的には、例えば、クラスC4がディスク装置D3に割り当てられた結果、クラスC4に属するファイルf4,f16がディスク装置D3に転送される。
(実施例1における分散ストレージ処理手順)
つぎに、実施例1における分散ストレージ処理手順について説明する。図7は、実施の形態1の実施例1における分散ストレージ処理手順を示すフローチャートである。図7のフローチャートにおいて、まず、再構成を予定しているディスク装置D1〜Dnの複数通りの台数の入力を受け付けたか否かを判断する(ステップS701)。
ここで、複数通りの台数の入力を待って(ステップS701:No)、入力を受け付けた場合(ステップS701:Yes)、取得部301により、ステップS701において入力された複数通りの台数{2,4,6}の最小公倍数を算出することにより、最小公倍数M(M=12)を取得する(ステップS702)。
このあと、ファイル割当部302により、a台(a=2)のディスク装置D1,D2に記憶されているファイルf1〜f24を、ステップS702において取得された最小公倍数M個分、すなわち、12個のクラスC1〜C12に十分均等に割り当てる(ステップS703)。そして、クラス割当部303により、クラスC1〜C12を、a台(a=2)のディスク装置D1,D2に均等になるように割り当てる(ステップS704)。
そして、ステップS704におけるクラス割当部303による割当結果(割当テーブル)に基づいて、ファイルf1〜f24をクラス単位でa台(a=2)のディスク装置D1,D2に転送する(ステップS705)。
このあと、使用台数の変更指示を待って(ステップS706:No)、a台(a=2)からb台(b=4)に変更する変更指示を受け付けた場合(ステップS706:Yes)、クラス割当部303により、a台のディスク装置D1,D2にそれぞれ割り当てられているM/a個のクラスのうち、(M/a−M/b)個のクラスを、変更対象となる(b−a)台のディスク装置D3,D4にそれぞれ割り当てる(ステップS707)。
最後に、ステップS707におけるクラス割当部303による割当結果(割当テーブル)に基づいて、再配置対象として選択されたファイルf4〜f6,f16〜f18,f10〜f12,f22〜f24をクラス単位で(b−a)台のディスク装置D3,D4に転送して(ステップS708)、本フローチャートによる一連の処理を終了する。
実施例1によれば、ディスク装置D1〜Dnの台数をa台からb台(ただし、a<b)に変更するときのファイルの再配置を最小化することができる。具体的には、ファイルの再配置を、(M/a−M/b)個のクラス単位でおこなうことにより、再配置が必要となるファイル数を最小にすることができる。
例えば、ディスク装置D1〜Dnの台数を9台から10台に変更する場合、[背景技術]で説明したアルゴリズム・ベースの技術によれば、全ファイル数の90%のファイルの再配置が必要となるが、実施例1で説明した手法によれば、ファイルの再配置が必要になるのは、理論上の最小値である10%となる。
つぎに、上述した実施の形態1の実施例2について説明する。実施例2では、図1に示したストレージシステム100において、ディスク装置D1〜Dnの台数を4台(b=4)から2台(a=2)に変更する場合を例に挙げて説明する。つまり、要求されるストレージ容量の減少に応じて、ディスク装置D1〜Dnの台数を減らす。なお、実施例1において説明した箇所と同一箇所については、図示および説明を省略する。
(分散ストレージ処理の概要)
以下、図8を用いて実施例2における分散ストレージ処理の概要について説明する。図8は、実施の形態1の実施例2における分散ストレージ処理の概要を示す説明図である。図8において、4台のディスク装置D1〜D4にファイルf1〜f24がクラスC1〜C12単位で均等に記憶されている。
このあと、ディスク装置D1〜D4の台数を、現在の4台から2台に変更する。ここでは、4台のディスク装置D1〜D4のうち、ディスク番号の大きいディスク装置D3,D4を変更対象とする。このとき、クラス割当部303により、変更対象となる2台のディスク装置D3,D4に割り当てられている6個のクラスを、2台のディスク装置D1,D2に均等になるように割り当てる。
具体的には、例えば、変更対象となるディスク装置D3,D4にそれぞれ割り当てられている3個(M×(1/a−1/b))のクラスを再配置対象として選択する。すなわち、ディスク装置D3に割り当てられているクラスC4,C5,C6、およびディスク装置D4に割り当てられているクラスC10,C11,C12を再配置対象として選択する。
このあと、再配置対象として選択された6個(M×(1−a/b))のクラスC4〜C6およびC10〜C12を、クラス番号の小さいものから順に3クラス(M/a−M/b)ずつ、残余のディスク装置D1,D2にディスク番号が小さいものから順にそれぞれ割り当てる。ここでは、クラスC4,C5,C6がディスク装置D1に、クラスC10,C11,C12がディスク装置D2に割り当てられる。
最後に、クラス割当部303による割当結果に基づいて、各クラスに属するファイルを対応するディスク装置に転送する。この結果、各ディスク装置においてファイルが記憶される。具体的には、例えば、クラスC4がディスク装置D1に割り当てられた結果、クラスC4に属するファイルf4,f16がディスク装置D1に転送される。
(実施例2における分散ストレージ処理手順)
つぎに、実施例2における分散ストレージ処理手順について説明する。ここでは、ディスク装置D1〜Dnの台数を減らす変更指示があった場合における、それ以降の処理手順について説明する。図9は、実施の形態1の実施例2における分散ストレージ処理手順を示すフローチャートである。
図9のフローチャートにおいて、まず、使用台数の変更指示を待って(ステップS901:No)、b台(b=4)からa台(a=2)に変更する変更指示を受け付けた場合(ステップS901:Yes)、クラス割当部303により、変更対象となる(b−a)台のディスク装置D3,D4に割り当てられている(M×(1−a/b))個のクラスを、a台のディスク装置D1,D2に(M/a−M/b)個のクラスずつそれぞれ割り当てる(ステップS902)。
最後に、ステップS902におけるクラス割当部303による割当結果に基づいて、再配置対象として選択されたファイルf4〜f6,f16〜f18,f10〜f12,f22〜f24をクラス単位でa台のディスク装置D1,D2に転送して(ステップS903)、本フローチャートによる一連の処理を終了する。
実施例2によれば、ディスク装置D1〜Dnの台数をb台からa台(ただし、a<b)に変更するときのファイルの再配置を最小化することができる。具体的には、ファイルの再配置を、(M/a−M/b)個のクラス単位でおこなうことにより、再配置が必要となるファイル数を最小にすることができる。
つぎに、上述した実施の形態1の実施例3について説明する。実施例3では、作成部304によって作成された割当テーブルを利用した、サーバ102−1〜102−nの運用例について説明する。図10は、サーバの運用例の概要を示す説明図である。
図10において、サーバ102−1,102−2に備えられたディスク装置D1,D2にクラスC1〜C12が均等に割り当てられている。サーバ102−1,102−2は、図4に示した割当テーブル400を参照することにより、ディスク装置D1,D2に対するファイルのリード/ライトを制御する。
ここで、新規ファイルfiの書込(ライト)要求があった場合におけるサーバ102−1〜102−nの処理手順について説明する。ここでは、外部のコンピュータ装置(例えば、図1に示した外部装置103−1〜103−n)からサーバ102−1に新規ファイルfnの書込要求があった場合について説明する。なお、割当テーブル400には、新規ファイルfiの割当先のクラスを示す情報が含まれている。
まず、サーバ102−1は、外部のコンピュータ装置から新規ファイルfiの書込要求を受信した場合(1)、予め決めてあるハッシュ関数により、新規ファイルfiの割当先のクラスC1〜C12を判断する(2)。さらに、割当テーブル400を参照することにより、新規ファイルfiが割り当てられているクラスの割当先のディスク装置D1,D2を判断する(3)。
このとき、そのクラス(例えば、クラスC1)の割当先がディスク装置D1であった場合には、新規ファイルfiをディスク装置D1に書き込む(4)。一方、そのクラス(例えば、クラスC12)の割当先がディスク装置D2であった場合には、書込要求とともに新規ファイルfiをサーバ102−2に転送する(5)。
つぎに、ファイルfjの参照(リード)要求があった場合におけるサーバ102−1〜102−nの処理手順について説明する。ここでは、外部のコンピュータ装置からサーバ102−1にファイルfjの参照要求があった場合について説明する。なお、割当テーブル400には、新規ファイルfjの割当先のクラスを示す情報が含まれている。
まず、サーバ102−1は、外部のコンピュータ装置からファイルfjの参照要求を受信した場合(6)、予め決めてあるハッシュ関数により、ファイルfjの割当先のクラスC1〜C12を判断する(7)。さらに、割当テーブル400を参照することにより、ファイルfjが割り当てられているクラスの割当先のディスク装置D1,D2を判断する(8)。
このとき、そのクラス(例えば、クラスC1)の割当先がディスク装置D1であった場合には、ファイルfjをディスク装置D1から読み出す(9)。一方、そのクラス(例えば、クラスC12)の割当先がディスク装置D2であった場合には、ファイルfjの参照要求をサーバ102−2に転送する(10)。
(サーバの情報処理手順)
つぎに、サーバ102−1〜102−nの情報処理手順について説明する。ここでは、新規ファイルfiの書込要求があった場合における書込処理手順を例に挙げて説明する。図11は、サーバの書込処理手順を示すフローチャートである。
図11のフローチャートにおいて、まず、インターフェースにより、外部のコンピュータ装置から新規ファイルfiの書込要求を受信したか否かを判断する(ステップS1101)。ここで、書込要求を受信するのを待って(ステップS1101:No)、受信した場合(ステップS1101:Yes)、割当テーブル400を参照して、新規ファイルfiの割当先のクラスC1〜C12を判断する(ステップS1102)。
このあと、ステップS1102において判断されたクラスの割当先のディスク装置D1,D2を判断する(ステップS1103)。ここで、割当先のディスク装置D1,D2が自装置のディスク装置D1であった場合(ステップS1104:Yes)、ディスクドライブにより、新規ファイルfiをディスク装置D1に書き込んで(ステップS1105)、本フローチャートによる一連の処理を終了する。
また、ステップS1104において、自装置のディスク装置D1ではなかった場合(ステップS1104:No)、インターフェースにより、書込要求とともに新規ファイルfiをサーバ102−2に転送して(ステップS1106)、本フローチャートによる一連の処理を終了する。
実施例3によれば、サーバ102−1〜102−nは、分散ストレージ管理装置101から配信される割当テーブル400を参照して、ディスク装置D1〜Dnに対するファイルのリード/ライトを制御することができる。これにより、通常の運用時に、分散ストレージ管理装置101に対する割当結果の問い合わせが不要となりボトルネックを防ぐことができる。
また、参照する割当テーブルとして、再構成を予定しているディスク装置の複数通りの台数ごとに、公倍数M個分のクラス群を各ディスク装置に均等になるように割り当てた割当結果を表わす割当テーブルを用いることとしてもよい。
図12は、割当テーブルの具体例を示す説明図(その2)である。図12において、割当テーブル1200は、再構成を予定しているディスク装置D1〜Dnの複数通りの台数{2,4,6}ごとに、最小公倍数M個分の12個のクラスをディスク装置D1〜D6に均等に割り当てた割当結果を表している。
具体的には、例えば、ディスク装置D1〜Dnの台数が2台のときには、クラスC1〜C6がディスク装置D1、クラスC7〜C12がディスク装置D2に割り当てられている。また、ディスク装置D1〜Dnの台数が4台のときには、クラスC1〜C3がディスク装置D1、クラスC4〜C6がディスク装置D3、クラスC7〜C9がディスク装置D2、クラスC10〜C12がディスク装置D4に割り当てられている。
これにより、サーバ102−1〜102−nは、ディスク装置D1〜Dnの台数に応じて、割当テーブル1200を参照することにより、ディスク装置D1〜Dnに対するファイルのリード/ライトを制御することができる。また、分散ストレージ管理装置101は、ディスク装置D1〜Dnの台数変更時に、その都度、ディスク装置D1〜Dnの台数に応じた割当テーブルを作成・配信する必要がなくなる。
(実施の形態2)
つぎに、実施の形態2にかかる分散ストレージ管理装置101について説明する。実施の形態1では、再構成を予定している記憶装置の台数を予め決めておく必要があったが、実施の形態2では、再構成を予定している記憶装置の台数を決めることなくファイルの再配置を最小化する手法を提案する。
実施の形態1で説明した手法では、再構成を予定している記憶装置の台数を決めることが難しい状況や、予定外の台数で再構成をおこなわなければならない状況には対応できない。例えば、再構成を予定している記憶装置の台数が{2,4,6}の3通りで、その公倍数Mとして「12」が選ばれているとする。
このような場合、以降において変更可能な記憶装置の台数は「12」の約数に限られ、それ以外の台数(例えば、5台)の記憶装置により再構成することはできない。そこで、実施の形態2では、再構成を予定している記憶装置の台数を予め指定することなく、記憶装置の台数変更時に、再配置が必要となるファイル数を少なくする手法を提案する。
以下、実施の形態2にかかる分散ストレージ管理装置101の制御部(取得部301〜配信部305)の具体的な処理内容について説明する。なお、実施の形態1において説明した箇所と同一箇所については、同一符号を付して説明を省略する。
まず、取得部301は、任意のファイル群を割り当てるクラスのクラス数Mを取得する。このクラス数Mは、任意の固定値である。具体的には、例えば、ストレージシステム100の運用開始時の使用可能な記憶装置の最大台数の一定倍(例えば、8倍、10倍など)の数を用いることとしてもよい。
ここで、取得されるクラス数Mが大きいほど各記憶装置に割り当てるクラス数のばらつきが小さくなり、クラス数Mが小さいほど各記憶装置に割り当てるクラス数のばらつきが大きくなる。なお、クラス数Mは、例えば、図2に示した入力装置220をユーザが操作することで分散ストレージ管理装置101に直接入力することとしてもよく、また、不図示の外部装置から取得することとしてもよい。
ファイル割当部302は、所定のアルゴリズムに従って、任意のファイル群を、取得部301によって取得されたクラス数M個分のクラスに十分均等に割り当てる。具体的には、例えば、各ファイルのファイル名を表わす文字列から1つの整数が定まる十分一様なハッシュ関数h()を1つ決定し、クラス数Mを法とした合同(mod M)により、M個のクラスに分類する。
クラス割当部303は、ファイル割当部302によってファイル群がそれぞれ割り当てられたクラス数M個分のクラスを、現在使用されている複数台の記憶装置に均等になるように割り当てる。具体的には、まず、各記憶装置に割り当てられる最大クラス数と最小クラス数との差は「高々1」である条件を満たすアルゴリズムを用いて、各記憶装置に割り当てるクラス数を決定する。
より具体的には、例えば、上記条件を満たす以下のアルゴリズムA(A−1,A−2)を用いて、各記憶装置に割り当てるクラス数を決定することができる。ここで、現在使用されている記憶装置の台数をa台とする。
(A−1)クラス数Mを記憶装置の台数aで割ったときの商を「q」、余りを「r」とする。
(A−2)各記憶装置に付与されているディスク番号(例えば、D1〜Dn)の小さいものからr台の記憶装置に割り当てるクラス数を(q+1)個、残余の記憶装置に割り当てるクラス数をq個に決定する。
このあと、任意のアルゴリズムを用いて、a台の記憶装置に上記決定されたクラス数のクラスをそれぞれ割り当てる。具体的には、例えば、クラス番号の小さいクラスから順に、ディスク番号の小さい記憶装置に割り当てることとしてもよい。
また、クラス割当部303は、記憶装置の使用台数をa台からb台に変更する場合(ただし、a<b)、まず、以下の条件(1)〜(3)を満たすアルゴリズムを用いて、各記憶装置に割り当てるクラス数を決定する。
(1)各記憶装置に割り当てられる最大クラス数と最小クラス数との差は「高々1」である。
(2)変更後(増設後)において、増設対象の記憶装置に割り当てるクラス数は、既存の記憶装置のクラス数以下である。
(3)既存の記憶装置のクラス数は、変更前(増設前)に比べて増加しない。
より具体的には、例えば、上記条件(1)〜(3)を満たす以下のアルゴリズムB(B−1,B−2,B−3)を用いて、各記憶装置に割り当てるクラス数を決定することができる。
(B−1)クラス数Mを変更後(増設後)の記憶装置の台数bで割ったときの商を「q1」、余りを「r1」とする。
(B−2)増設対象となる(b−a)台の記憶装置に割り当てられているクラス数を0個として、b台の記憶装置を割り当てられているクラス数が降順となるようにソートする。
(B−3)ソートされたb台の記憶装置の先頭からr1台の記憶装置に割り当てるクラス数を(q1+1)個、残余の記憶装置に割り当てるクラス数をq1個に決定する。
つぎに、上記アルゴリズムBに従って各記憶装置のクラス数を決定した結果、増設後においてクラス数が減る記憶装置に割り当てられているクラスの中から再配置対象クラスを選択する。具体的には、例えば、クラス数が減る記憶装置に割り当てられているクラスのうち、クラス番号が大きいものから順に再配置対象クラスとして選択することとしてもよい。
最後に、任意のアルゴリズムに従って、再配置対象クラスを、上記アルゴリズムBに従って決定されたクラス数分だけ増設対象の記憶装置に割り当てる。具体的には、たとえば、再配置対象クラスのうちクラス番号の小さいクラスから順に、増設対象の記憶装置のうちディスク番号の小さい記憶装置に順に割り当てることとしてもよい。
これにより、記憶装置の使用台数をa台からb台に増やす場合におけるファイルの再配置を最小化することができる。なお、記憶装置の台数をa台からb台(ただし、a<b)に変更する場合の具体例は、後述する実施の形態2の実施例1において説明する。
また、クラス割当部303は、記憶装置の使用台数をb台からa台に変更する場合(ただし、a<b)、まず、以下の条件(4)および(5)を満たすアルゴリズムを用いて、各記憶装置に割り当てるクラス数を決定する。
(4)各記憶装置に割り当てられる最大クラス数と最小クラス数との差は「高々1」である。
(5)既存の記憶装置のうち、縮退対象の記憶装置以外の記憶装置のクラス数は、変更前(縮退前)に比べて減少しない。
より具体的には、例えば、上記条件(4)および(5)を満たす以下のアルゴリズムC(C−1,C−2,C−3)を用いて、各記憶装置に割り当てるクラス数を決定することができる。
(C−1)クラス数Mを変更後(縮退後)の記憶装置の台数aで割ったときの商を「q2」、余りを「r2」とする。
(C−2)変更後(縮退後)のa台の記憶装置を、変更前(縮退前)の時点で割り当てられているクラス数が降順となるようにソートする。
(C−3)ソートされたa台の記憶装置の先頭からr2台の記憶装置に割り当てるクラス数を(q2+1)個、残余の記憶装置に割り当てるクラス数をq2個に決定する。
つぎに、縮退対象の記憶装置に割り当てられているクラスを再配置対象クラスとして選択する。最後に、任意のアルゴリズムに従って、再配置対象クラスを、上記アルゴリズムCに従って決定されたクラス数分だけ変更後(縮退後)の記憶装置に割り当てる。具体的には、例えば、再配置対象クラスのうちクラス番号の小さいクラスから順に、変更後(縮退後)の記憶装置のうちディスク番号の小さい記憶装置に順に割り当てることとしてもよい。
これにより、記憶装置の使用台数をb台からa台に減らす場合におけるファイルの再配置を最小化することができる。なお、記憶装置の台数をb台からa台(ただし、a<b)に変更する場合の具体例は、後述する実施の形態2の実施例2において説明する。
以上説明した実施の形態2によれば、再構成を予定している記憶装置の台数を予め指定することなく、記憶装置の台数変更時におけるファイルの再配置を最小化することができる。この結果、再構成を予定している記憶装置の台数を決めることが難しい状況や、予定外の台数で再構成をおこなわなければならない状況に柔軟に対応することができる。
なお、実施の形態2の手法では、各記憶装置に割り当てるクラス数に最大1のばらつきが生じることとなるが、クラス数Mを十分大きくすることで、このばらつきは相対的に小さくなる。
つぎに、上述した実施の形態2の実施例4について説明する。実施例4では、図1に示したストレージシステム100において、ディスク装置D1〜Dnの台数を5台(a=5)から7台(b=7)に変更する場合を例に挙げて説明する。
(稼働前準備)
まず、ストレージサービスの運用を開始する前の稼働前準備について説明する。稼働前準備として、ストレージシステム100の管理者により、ファイル群を割り当てる任意のクラス数Mを設定する。ここでは、クラス数Mとして「17」が設定されている。この結果、取得部301により、クラス数M(M=17)が取得される。
つぎに、M個分、すなわち、17個分のクラスC1〜C17を定義し、ファイル割当部302により、任意のファイル群を各クラスC1〜C17に十分均等に割り当てる。このあと、初期状態でのディスク装置D1〜Dnの台数aを設定する。ここでは、5台(a=5)のディスク装置D1〜D5が設定されている。
(分散ストレージ処理の概要)
以下、図13を用いて実施の形態2の実施例4における分散ストレージ処理の概要について説明する。図13は、実施の形態2の実施例4における分散ストレージ処理の概要を示す説明図である。
図13において、サーバ102−1〜102−5に備えられたディスク装置D1〜D5にクラスC1〜C17が割り当てられている。具体的には、上述したアルゴリズムAに従って、ディスク装置D1,D2には4個、ディスク装置D3〜D5には3個のクラスがそれぞれ割り当てられている。そして、クラスC1〜C17が割り当てられた結果、各クラスC1〜C17に属するファイルがディスク装置D1〜D5に記憶されている。
ここで、ディスク装置D1〜D5の台数を、現在の5台から7台に変更する。ここでは、サーバ102−6,102−7に備えられたディスク装置D6,D7を追加する。このとき、上述したアルゴリズムBに従って、変更後の各ディスク装置D1〜D7にそれぞれ割り当てるクラス数を決定する。
ここでは、ディスク装置D1〜D3のクラス数は3個、ディスク装置D4〜D7のクラス数は2個となる。つぎに、クラス数が減るディスク装置D1,D2,D4,D5に割り当てられているクラスの中から再配置対象クラスを選択する。そして、再配置対象クラスをディスク装置D6,D7に割り当てる。
ここでは、クラス割当部303により、ディスク装置D1,D2にそれぞれ割り当てられている1個のクラスと、ディスク装置D4,D5にそれぞれ割り当てられている1個のクラスとを、追加された2台のディスク装置D6,D7にそれぞれ割り当てる。
具体的には、ディスク装置D1,D2にそれぞれ割り当てられている4個のクラスのうち、クラス番号の大きいものから1個のクラス(C4,C8)を再配置対象として選択する。また、ディスク装置D4,D5にそれぞれ割り当てられている3個のクラスのうち、クラス番号の大きいものから1個のクラス(C14,C17)を再配置対象として選択する。
そして、再配置対象として選択されたクラス(C4,C8,C14,C17)を、クラス番号の小さいものから順に、追加された2台のディスク装置D6,D7に割り当てる。このとき、ディスク番号が小さいディスク装置D6,D7から順に割り当てる。ここでは、クラスC4,C8がディスク装置D6に、クラスC14,C17がディスク装置D7に割り当てられる。
最後に、任意の手法を用いて、クラス割当部303による割当結果に基づいて、各クラスC4,C8,C14,C17に属するファイルを、割当先のディスク装置D6,D7にクラス単位で転送する。この結果、ディスク装置D6,D7においてファイルが記憶される。例えば、クラスC4がディスク装置D6に割り当てられた結果、クラスC4に属するファイルがディスク装置D1からディスク装置D6に転送される。
(実施の形態2の実施例4における分散ストレージ処理手順)
つぎに、実施の形態2の実施例4における分散ストレージ処理手順について説明する。まず、稼働前準備処理の具体的な処理手順について説明する。なお、クラス数Mを初期状態のディスク装置D1〜D5の台数a(a=5)で割ったときの商を「q」、余りを「r」とする。
図14は、稼働前準備処理の具体的な処理手順を示すフローチャート(その1)である。図14のフローチャートにおいて、まず、任意のクラス数Mの入力を受け付けたか否かを判断する(ステップS1401)。ここで、クラス数Mの入力を待って(ステップS1401:No)、入力を受け付けた場合(ステップS1401:Yes)、取得部301により、ステップS1401において入力されたクラス数M(M=17)を取得する(ステップS1402)。
このあと、ファイル割当部302により、ストレージシステム100で保持するファイル群を、ステップS1402において取得されたクラス数M個分、すなわち、17個のクラスC1〜C17に十分均等に割り当てる(ステップS1403)。
そして、クラス割当部303により、各ディスク装置D1〜D5に付与されているディスク番号D1〜Dnの小さいものからr台の記憶装置に割り当てるクラス数を(q+1)個、残余の記憶装置に割り当てるクラス数をq個に決定する(ステップS1404)。このあと、ステップS1404において決定されたクラス数に基づいて、クラスC1〜C17を、初期状態のa台(a=5)のディスク装置D1〜D5に割り当てる(ステップS1405)。
最後に、ステップS1405におけるクラス割当部303による割当結果(割当テーブル)に基づいて、ファイル群をクラス単位でディスク装置D1〜D5に転送する転送処理を実行して(ステップS1406)、本フローチャートによる一連の処理を終了する。
つぎに、現在使用されている5台のディスク装置D1〜D5を7台のディスク装置D1〜D7に増設する場合の分散ストレージ処理手順について説明する。なお、クラス数Mを増設後のディスク装置D1〜D7の台数b(b=7)で割ったときの商を「q1」、余りを「r1」とする。
図15は、増設時の分散ストレージ処理手順を示すフローチャート(その1)である。図15のフローチャートにおいて、まず、使用台数の増設指示の入力を受け付けたか否かを判断する(ステップS1501)。
ここで、使用台数の増設指示を待って(ステップS1501:No)、a台(a=5)からb台(b=7)に変更する増設指示を受け付けた場合(ステップS1501:Yes)、クラス割当部303により、増設対象のディスク装置D6,D7に割り当てられているクラス数を0個として、ディスク装置D1〜D7を、割り当てられているクラス数が降順となるようにソートする(ステップS1502)。
そして、クラス割当部303により、ソートされたb台のディスク装置D1〜D7の先頭からr1台(3台)のディスク装置D1〜D3に割り当てるクラス数を(q1+1)個(3個)、残余のディスク装置D4〜D7に割り当てるクラス数をq1個(2個)に決定する(ステップS1503)。
このあと、クラス割当部303により、ステップS1503において決定されたクラス数に基づいて、クラス数が減るディスク装置D1,D2,D4,D5に割り当てられているクラスC1〜C17の中から再配置対象クラスC4,C8,C14,C17を選択し(ステップS1504)、選択された再配置対象クラスC4,C8,C14,C17を、ステップS1503において決定されたクラス数分だけ増設対象のディスク装置D6,D7に割り当てる(ステップS1505)。
最後に、ステップS1505におけるクラス割当部303による割当結果(割当テーブル)に基づいて、再配置対象クラスC4,C8,C14,C17に属するファイル群をクラス単位でディスク装置D6,D7に転送する転送処理を実行して(ステップS1506)、本フローチャートによる一連の処理を終了する。
実施例4によれば、ディスク装置D1〜Dnの台数をa台(a=5)からb台(b=7)に変更するときのファイルの再配置を最小化することができる。具体的には、アルゴリズムBに従ってクラス数を決定し、クラスの移動が最小となる再配置対象クラスを選択することにより、結果的にファイルの再配置を最小化することができる。
図13に示した例では、アルゴリズムBに従って決定されたディスク装置D6,D7のクラス数分(4個)だけのクラスC4,C8,C14,C17の移動しかおこなわれていないため、台数変更時におけるファイルの再配置は最小化されているといえる。
つぎに、上述した実施の形態2の実施例5について説明する。実施例5では、図1に示したストレージシステム100において、ディスク装置D1〜Dnの台数を5台(b=5)から3台(a=3)に変更する場合を例に挙げて説明する。なお、実施例1において説明した箇所と同一箇所については、図示および説明を省略する。
(分散ストレージ処理の概要)
以下、図16を用いて実施の形態2の実施例5における分散ストレージ処理の概要について説明する。図16は、実施の形態2の実施例5における分散ストレージ処理の概要を示す説明図である。
図16において、サーバ102−1〜102−5に備えられたディスク装置D1〜D5にクラスC1〜C17が割り当てられている。具体的には、上述したアルゴリズムAに従って、ディスク装置D1、ディスク装置D2には4個、ディスク装置D3〜D5には3個のクラスがそれぞれ割り当てられている。
ここで、ディスク装置D1〜D5の台数を、現在の5台から3台に変更する。ここでは、5台のディスク装置D1〜D5のうち、ディスク番号の大きいディスク装置D4,D5を縮退対象とする。このとき、上述したアルゴリズムCに従って、変更後の各ディスク装置D1〜D3にそれぞれ割り当てるクラス数を決定する。
ここでは、ディスク装置D1,D2のクラス数は6個、ディスク装置D3のクラス数は5個となる。つぎに、縮退対象であるディスク装置D4,D5に割り当てられているクラスC12〜C17を再配置対象クラスとして選択する。そして、再配置対象クラスをディスク装置D1〜D3に割り当てる。
ここでは、クラス割当部303により、再配置対象クラスを、クラス番号の小さいものから順に、ディスク番号の小さいディスク装置D1〜D3へ割り当てている。具体的には、ディスク装置D4に割り当てられているC12,C13がディスク装置D1に割り当てられる。また、ディスク装置D4に割り当てられているC14とディスク装置D5に割り当てられているC15とがディスク装置D2に割り当てられる。さらに、ディスク装置D5に割り当てられているC16,C17がディスク装置D3に割り当てられる。
最後に、任意の手法を用いて、クラス割当部303による割当結果に基づいて、各クラスC12〜C17に属するファイルを、割当先のディスク装置D1〜D3にクラス単位で転送する。この結果、ディスク装置D1〜D3においてファイルが記憶される。例えば、クラスC12がディスク装置D1に割り当てられた結果、クラスC12に属するファイルがディスク装置D4からディスク装置D1に転送される。
(実施の形態2の実施例5における分散ストレージ処理手順)
つぎに、実施の形態2の実施例5における分散ストレージ処理手順について説明する。なお、稼働前準備処理の具体的な処理手順については実施例4と同様のため説明を省略する。
ここでは、現在使用されているb台(5台)のディスク装置D1〜D5をa台(3台)のディスク装置D1〜D3に縮退する場合の分散ストレージ処理手順について説明する。なお、クラス数Mを縮退後のディスク装置D1〜D3の台数a(a=3)で割ったときの商を「q2」、余りを「r2」とする。
図17は、縮退時の分散ストレージ処理手順を示すフローチャートである。図17のフローチャートにおいて、まず、使用台数の縮退指示の入力を受け付けたか否かを判断する(ステップS1701)。
ここで、使用台数の縮退指示を待って(ステップS1701:No)、b台(b=5)からa台(a=3)に変更する縮退指示を受け付けた場合(ステップS1701:Yes)、クラス割当部303により、縮退後のa台のディスク装置D1〜D3を、縮退前の時点で割り当てられているクラス数が降順となるようにソートする(ステップS1702)。
そして、クラス割当部303により、ソートされたa台のディスク装置D1〜D3の先頭からr2台(2台)のディスク装置D1,D2に割り当てるクラス数を(q2+1)個(6個)、残余のディスク装置D3に割り当てるクラス数をq2個(5個)に決定する(ステップS1703)。
このあと、クラス割当部303により、縮退対象のディスク装置D4,D5に割り当てられているクラスC12〜C17を再配置対象クラスとして選択する(ステップS1704)。そして、選択された再配置対象クラスC12〜C17を、ステップS1703において決定されたクラス数分だけディスク装置D1〜D3に割り当てる(ステップS1705)。
最後に、ステップS1705におけるクラス割当部303による割当結果(割当テーブル)に基づいて、再配置対象クラスC12〜C17に属するファイル群をクラス単位でディスク装置D1〜D3に転送する転送処理を実行して(ステップS1706)、本フローチャートによる一連の処理を終了する。
実施例5によれば、ディスク装置D1〜Dnの台数をb台(b=5)からa台(a=3)に変更するときのファイルの再配置を最小化することができる。具体的には、アルゴリズムCに従ってクラス数を決定し、クラスの移動が最小となる再配置対象クラスを選択することにより、結果的にファイルの再配置を最小化することができる。
図15に示した例では、縮退対象となるディスク装置D4,D5のクラス数分(6個)だけのクラスC12〜C17の移動しかおこなわれていないため、台数変更時におけるファイルの再配置は最小化されているといえる。
(実施の形態3)
つぎに、実施の形態3にかかる分散ストレージ管理装置101について説明する。実施の形態1,2では、クラス数Mとして運用開始前に何らかの固定値を決める必要があったが、実施の形態3では、実際に使用する記憶装置の台数に応じてクラス数Mを動的に変更する手法を提案する。
実施の形態1,2のようにクラス数Mを固定値とした場合、クラス数Mを小さい値に決めてしまうと、記憶装置の台数が多くなったときに負荷分散の均等さが損なわれてしまう。一方で、クラス数を大きい値に決めてしまうと、割当テーブルのデータサイズが大きくなったり、割当処理にかかる負荷が大きくなるなどのオーバーヘッドが大きくなる。
そこで、実施の形態3では、記憶装置の台数が少ないときにはクラス数Mを小さくし、記憶装置の台数が多くなったときにクラス数Mを大きくすることにより、実施の形態1,2と同様に記憶装置の台数変更時におけるファイルの再配置を最小化するとともに、上述したトレードオフの関係を解消する。
以下、実施の形態3にかかる分散ストレージ管理装置101の制御部(取得部301〜配信部305)の具体的な処理内容について説明する。なお、実施の形態1,2において説明した箇所と同一箇所については、同一符号を付して説明を省略する。
まず、取得部301は、任意のファイル群を割り当てるクラスの複数のクラス数{M1,M2,…,Mn}と、記憶装置に割り当てられるクラス数の均等性を表わす係数X(後述する実施例の「均等性係数X」に相当)とを取得する。
ここで、複数のクラス数{M1,M2,…,Mn}は、『M(i+1)はMiの倍数(ただし、i=1,2,…,n)』を満たす任意の数字列である。具体的には、例えば、複数のクラス数として{256(=28),65536(=216),1677216(=224),…}などの固定値を用いてもよい。
また、係数X(1以上の実数)は、各記憶装置に割り当てられるクラス数に要求される均等性により任意に設定可能な値である。また、任意のアルゴリズムを用いて、1以上の実数である係数Xを決定することとしてもよい。詳細は後述するが、この係数Xが大きいほど、各記憶装置に割り当てるクラス数の均等性を高めることができる。
なお、複数のクラス数{M1,M2,…,Mn}および係数Xは、例えば、図2に示した入力装置220をユーザが操作することで分散ストレージ管理装置101に直接入力することとしてもよく、また、不図示の外部装置から取得することとしてもよい。
ファイル割当部302は、初期状態のクラス数Miとして、取得部301によって取得された複数のクラス数{M1,M2,…,Mn}の中から下記式(1)を満たす最小のMiを選択する。ただし、aは初期状態の記憶装置の台数である。
a*X<Mi ・・・(1)
上記式(1)は、係数Xが大きければ『a*X』の値が大きくなり選択されるクラス数Miが大きくなるため、結果的に各記憶装置に割り当てるクラス数の均等性が高まることを意味している。一方、係数Xが小さければ『a*X』の値が小さくなり選択されるクラス数Miが小さくなるため、結果的に各記憶装置に割り当てるクラス数の均等性が低くなることを意味している。なお、複数のクラス数{M1,M2,…,Mn}のうち上記式(1)を満たすMiが存在しない場合には、クラス数の最大値Mnを選択することとしてもよい。
また、ファイル割当部302は、所定のアルゴリズムに従って、任意のファイル群を、複数のクラス数{M1,M2,…,Mn}の中から選択されたクラス数Mi個分のクラスにそれぞれ割り当てる。ここで、所定のアルゴリズムとは、以下の条件(6)および(7)を満たすアルゴリズムである。ただし、クラス数Miに対応するアルゴリズムを「Ci()」と表記する。
(6)ファイル群をクラス数Mi個分のクラス{C0,C1,…,C(Mi−1)}に十分均等に配分する。
(7)2つのファイルがC(i+1)()で同じクラスに割り当てられるなら、その2つのファイルはC(i)()でも同じクラスに割り当てられる。
具体的には、例えば、クラス数の最大値Mnを用いて、つぎのようにCn()を決めることができる。まず、ファイル名の文字列から1つの整数が定まる十分一様なハッシュ関数を1つ決めh()とする。つぎに、Mnを法とした合同(mod Mn)によりMn個のクラスに分類する。そして、このCn()をもとに、C1からC(n−1)()を以下のように決める。
『Ci(ファイル)=Cn(ファイル)をMn/Miで割ったときの商とする』
なお、各記憶装置は、クラスの階層構造を有しており、すべてのファイルは、階層構造の最下層のクラスのいずれかに属することとなる。
また、ファイル割当部302は、記憶装置の使用台数をa台からb台(ただし、a<b)に変更する場合、新たなクラス数Miとして、複数のクラス数{M1,M2,…,Mn}の中から下記式(2)を満たす最小のMiを選択する。なお、複数のクラス数{M1,M2,…,Mn}のうち下記式(2)を満たすMiが存在しない場合には、クラス数の最大値Mnを選択することとしてもよい。
b*X<Mi ・・・(2)
この場合、ファイル割当部302は、上記条件(6)および(7)を満たすアルゴリズムを用いて、ファイル群を新たなクラス数Mi個分のクラスにそれぞれ割り当てることとなる。このとき、上記条件(7)を満たすことにより、ファイル群の割り当てにかかる処理負荷を軽減させることができる。
なお、ファイル割当部302は、記憶装置の使用台数をb台からa台(ただし、a<b)に変更する場合、新たなクラス数Miとして、複数のクラス数{M1,M2,…,Mn}の中から『a*X<Mi』となる最小のMiを選択することとしてもよい。この場合も上記同様に、ファイル群を新たなクラス数Mi個分のクラスにそれぞれ割り当てることとなる。
なお、クラス割当部303、作成部304および配信部305の具体的な処理内容は、実施の形態2で説明した処理内容と同様のため説明を省略する。
以上説明した実施の形態3によれば、記憶装置の使用台数に応じてクラス数Mを動的に変更することができる。これにより、クラス数Mの大小にともなうトレードオフを解消するとともに、記憶装置の台数変更時におけるファイルの再配置を最小化することができる。
つぎに、上述した実施の形態3の実施例6について説明する。実施例6では、図1に示したストレージシステム100において、ディスク装置D1〜Dnの台数を20台(a=20)から30台(b=30)に変更する場合を例に挙げて説明する。
(稼働前準備)
まず、ストレージサービスの運用を開始する前の稼働前準備について説明する。稼働前準備として、まず、クラス数の均等性を表わす均等性係数Xを決定する。ここでは、均等性係数Xとして「10」が決定されている。この結果、取得部301により、均等性係数X(X=10)が取得される。
また、任意のファイル群を割り当てるクラスの複数のクラス数{M1,M2,…,Mn}を選択する。ここでは、複数のクラス数として{256,65536,1677216}を選択する。この結果、取得部301により、複数のクラス数{256,65536,1677216}が取得される。
つぎに、ファイル割当部302により、上記条件(6)および(7)に従って、クラス数Miに対応するアルゴリズムCi()を決める。ここでは、複数のクラス数{256,65536,1677216}それぞれに対応するアルゴリズムC1(),C2(),C3()として以下のアルゴリズムが決められている。
C1(ファイル)=SHA1(ファイル名)の上位1バイトの値
C2(ファイル)=SHA1(ファイル名)の上位2バイトの値
C3(ファイル)=SHA1(ファイル名)の上位3バイトの値
つぎに、初期状態のディスク装置D1〜Dnの台数aを決める。ここでは、初期状態の台数としてディスク装置D1〜D20の20台(a=20)が決められている。このあと、ファイル割当部302により、初期状態のクラス数Miとして、複数のクラス数{256,65536,1677216}の中から上記式(1)を満たす最小のMiを選択する。ここでは、『a*X=200<Mi』となるクラス数M1(=256)が選択される。
つぎに、M1個分、すなわち、256個分のクラスC1〜C256を定義し、ファイル割当部302により、任意のファイル群を各クラスC1〜C256に十分均等に割り当てる。そして、クラス割当部303により、実施の形態2で説明したアルゴリズムAに従って、ディスク装置D1〜D20に割り当てるクラス数を決定する。
ここでは、ディスク装置D1〜D17に割り当てるクラス数は13個、ディスク装置D18〜D20に割り当てるクラス数は12個となる。つぎに、クラス割当部303により、クラスC1〜C256を、ディスク装置D1〜D20に決定されたクラス数分だけ割り当てる。ここでは、クラス番号の小さいものからディスク番号の小さいものに順に割り当てる。
(分散ストレージ処理の概要)
以下、図18を用いて実施の形態3の実施例6における分散ストレージ処理の概要について説明する。図18は、実施の形態3の実施例6における分散ストレージ処理の概要を示す説明図である。
図18において、サーバ102−1〜102−20に備えられたディスク装置D1〜D20にクラスC1〜C256が均等になるようにそれぞれ割り当てられている。ここで、ディスク装置D1〜D20の台数を、現在の20台から30台に変更する。ここでは、サーバ102−21〜102−30に備えられたディスク装置D21〜D30を追加する。
つぎに、上記式(2)を用いて、新たなクラス数Miを複数のクラス数{256,65536,1677216}の中から選択する。ここでは、『b*X=300<Mi』となるクラス数M2(=65536)が選択される。このあと、クラス割当部303により、ディスク装置D1〜D20の使用台数の変更にともなってクラス数Miが変更されたか否かを判断する。ここでは、クラス数Miがクラス数M1からクラス数M2に変更されている。
この場合、まず、既存のクラスC1〜C256を新たなクラス分けに従って分割する。このとき、新たなクラス分けに従って、クラスとディスク装置D1〜D20との対応関係を有する割当テーブルを置き換える。具体的には、割当テーブルのサイズを256行から65536行に変更する。そして、変更前のC0に対応するディスク装置D1〜D20をC0〜C255に対応させる。以降同様に、変更前のC1〜C255に対応するディスク装置D1〜D20を「C256〜C511」〜「C65024〜C65535」に対応させる。
さらに、ファイル群の割当先を決定するアルゴリズムを新しいものに置き換える。ここでは、ファイル群の割当先を決定するアルゴリズムをC1()からC2()に置き換える。なお、各ディスク装置D1〜D20が有するクラス階層構造において、現在1段目でクラス分けをおこなっているものを、2段目を用いてクラス分けをおこなうものとする。
次いで、クラス割当部303により、実施の形態2で説明したアルゴリズムBに従って、変更後の各ディスク装置D1〜D30にそれぞれ割り当てるクラス数を決定する。ここでは、ディスク装置D1〜D16のクラス数は2185個、ディスク装置D17〜D30のクラス数は2184個となる。
そして、クラス数が減るディスク装置D1〜D20に割り当てられているクラスの中から再配置対象クラスを選択して、その再配置対象クラスをディスク装置D21〜D30に割り当てる。なお、クラス割当部303による処理内容については実施の形態2で説明した処理内容と同様のため、ここでは図示および説明を省略する。
(実施の形態3の実施例6における分散ストレージ処理手順)
つぎに、実施の形態3の実施例6における分散ストレージ処理手順について説明する。まず、稼働前準備処理の具体的な処理手順について説明する。なお、初期状態のディスク装置D1〜Dnを、ディスク装置D1〜D20の20台(a=20)とする。
図19は、稼働前準備処理の具体的な処理手順を示すフローチャート(その2)である。図19のフローチャートにおいて、まず、複数のクラス数{256,65536,1677216}および均等性係数X(X=10)の入力を受け付けたか否かを判断する(ステップS1901)。
ここで、複数のクラス数{256,65536,1677216}および均等性係数Xの入力を待って(ステップS1901:No)、入力を受け付けた場合(ステップS1901:Yes)、ファイル割当部302により、上記式(1)を用いて、複数のクラス数{256,65536,1677216}の中から初期状態のクラス数Mi(=M1=256)を選択する(ステップS1902)。
このあと、ファイル割当部302により、ストレージシステム100で保持するファイル群を、ステップS1902において取得されたクラス数Mi個分、すなわち、256個のクラスC1〜C256に十分均等に割り当てる(ステップS1903)。
そして、クラス割当部303により、ファイル割当部302によってファイル群が割り当てられたクラスC1〜C256を、各ディスク装置D1〜D20に割り当てる割当処理を実行する(ステップS1904)。
最後に、ステップS1904におけるクラス割当部303による割当結果(割当テーブル)に基づいて、ファイル群をクラス単位でディスク装置D1〜D20に転送する転送処理を実行して(ステップS1905)、本フローチャートによる一連の処理を終了する。
つぎに、現在使用されている20台のディスク装置D1〜D20を30台のディスク装置D1〜D30に増設する場合の分散ストレージ処理手順について説明する。
図20は、増設時の分散ストレージ処理手順を示すフローチャート(その2)である。図20のフローチャートにおいて、まず、使用台数の増設指示の入力を受け付けたか否かを判断する(ステップS2001)。
ここで、使用台数の増設指示を待って(ステップS2001:No)、a台(a=20)からb台(b=30)に変更する増設指示を受け付けた場合(ステップS2001:Yes)、ファイル割当部302により、上記式(2)を用いて、複数のクラス数{256,65536,1677216}の中から新たなクラス数Mi(=M2=65536)を選択する(ステップS2002)。
そして、ステップS2002において選択されたクラス数Miが変更されたか否かを判断し(ステップS2003)、変更された場合(ステップS2003:Yes)、ファイル割当部302により、既存のクラスC1〜C256を新たなクラス分けに従って分割する(ステップS2004)。
そして、クラス割当部303により、ファイル割当部302によって分割されたクラスC1〜C65536を、変更後の各ディスク装置D1〜D30に割り当てる割当処理を実行する(ステップS2005)。
最後に、ステップS2005におけるクラス割当部303による割当結果(割当テーブル)に基づいて、ファイル群をクラス単位でディスク装置D1〜D30に転送する転送処理を実行して(ステップS2006)、本フローチャートによる一連の処理を終了する。
なお、ステップS2003において、選択されたクラス数Miが変更されていない場合(ステップS2003:No)、ステップS2005に移行して、クラス割当部303により、ファイル群が割り当てられたクラスC1〜C256を、変更後の各ディスク装置D1〜D30に割り当てることとなる。
実施例6によれば、ディスク装置D1〜Dnの台数変更(20台→30台)にともなって、ファイル群を割り当てるクラス数Mを動的に変更(256→65536)することができる。これにより、ディスク装置D1〜Dnの台数変更時における負荷分散の均等性を適切に維持することができる。
以上説明したように、分散ストレージ管理プログラム、分散ストレージ管理装置、および分散ストレージ管理方法によれば、ディスク装置の台数を変更するときのファイルの再配置を最小化することにより、ストレージシステムの性能を向上させることができる。
なお、実施の形態1〜3で説明した分散ストレージ管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータを、
再構成を予定している記憶装置の台数の公倍数Mを取得する取得手段、
所定のアルゴリズムに従って、前記記憶装置に記憶されているファイル群を、前記取得手段によって取得された公倍数M個分のクラスに割り当てるファイル割当手段、
現在の台数から成る前記記憶装置を現在の台数とは異なる他の台数から成る記憶装置に変更する場合、前記クラスと割り当てられる記憶装置との対応関係を有する割当テーブルに従って、前記ファイル割当手段で割り当てられたファイル群を、前記クラス単位で前記他の台数から成る記憶装置に割り当てるクラス割当手段、
として機能させることを特徴とする分散ストレージ管理プログラム。
(付記2)コンピュータを、
ファイル群を割り当てるクラスのクラス数Mを取得する取得手段、
所定のアルゴリズムに従って、前記ファイル群を前記取得手段によって取得されたクラス数M個分のクラスに割り当てるファイル割当手段、
前記ファイル群を記憶させる記憶装置の使用台数を現在の台数から他の台数に変更する場合、前記ファイル割当手段によって前記クラス数M個分のクラスにそれぞれ割り当てられたファイル群を、前記クラス単位で前記他の台数から成る記憶装置に割り当てるクラス割当手段、
として機能させることを特徴とする分散ストレージ管理プログラム。
(付記3)前記クラス割当手段は、
前記ファイル群が現在の台数から成る記憶装置に記憶されている場合、前記クラスと現在使用されている記憶装置との対応関係を有する割当テーブルを参照して、前記クラス数M個分のクラスにそれぞれ割り当てられたファイル群を、前記クラス単位で前記他の台数からなる記憶装置に割り当てることを特徴とする付記2に記載の分散ストレージ管理プログラム。
(付記4)前記取得手段は、
再構成を予定している記憶装置の台数の公倍数Mを取得し、
前記ファイル割当手段は、
所定のアルゴリズムに従って、前記ファイル群を前記取得手段によって取得された公倍数M個分のクラスに割り当て、
前記クラス割当手段は、
前記記憶装置の使用台数をa台からb台(ただし、a<b)に変更する場合、a台の記憶装置にそれぞれ割り当てられているM/a個のクラスのうち、(M/a−M/b)個のクラスを、変更対象となる(b−a)台の記憶装置にそれぞれ割り当てることを特徴とする付記2または3に記載の分散ストレージ管理プログラム。
(付記5)前記クラス割当手段は、
前記記憶装置の使用台数をb台からa台(ただし、a<b)に変更する場合、変更対象となる(b−a)台の記憶装置に割り当てられている(M×(1−a/b))個のクラスを、a台の記憶装置に(M/a−M/b)個のクラスずつそれぞれ割り当てることを特徴とする付記4に記載の分散ストレージ管理プログラム。
(付記6)前記コンピュータを、
前記クラス割当手段によって割り当てられた割当結果に基づいて、前記クラスと当該クラスが割り当てられた記憶装置との対応関係を有する割当テーブルを作成する作成手段、
前記作成手段によって作成された割当テーブルを、前記記憶装置に対するファイルのリード/ライトを制御する情報処理装置に配信する配信手段として機能させることを特徴とする付記2〜5のいずれか一つに記載の分散ストレージ管理プログラム。
(付記7)前記作成手段は、
再構成を予定している記憶装置の複数通りの台数ごとに、前記クラスと当該クラスが割り当てられる記憶装置との対応関係を有する割当テーブルを作成することを特徴とする付記6に記載の分散ストレージ管理プログラム。
(付記8)前記クラス割当手段は、
前記記憶装置の使用台数をa台からb台(ただし、a<b)に変更する場合、変更対象となる(b−a)台の記憶装置に割り当てられているクラス数を0個として、前記b台の記憶装置に割り当てられているクラス数が降順となるようにソートした結果、前記b台の記憶装置のうち、先頭からr台(ただし、rは、Mをaで割った余り)の記憶装置に(q+1)個(ただし、qは、Mをaで割った商)のクラスを割り当てるとともに、残余の記憶装置にq個のクラスを割り当てることを特徴とする付記2に記載の分散ストレージ管理プログラム。
(付記9)前記クラス割当手段は、
前記記憶装置の使用台数をb台からa台(ただし、a<b)に変更する場合、前記a台の記憶装置を変更前の時点で割り当てられているクラス数が降順となるようにソートした結果、前記a台の記憶装置のうち、先頭からr台(ただし、rは、Mをaで割った余り)の記憶装置に(q+1)個(ただし、qは、Mをaで割った商)のクラスを割り当てるとともに、残余の記憶装置にq個のクラスを割り当てることを特徴とする付記8に記載の分散ストレージ管理プログラム。
(付記10)前記コンピュータを、
前記クラス割当手段によって割り当てられた割当結果に基づいて、前記クラスと当該クラスが割り当てられる記憶装置との対応関係を有する割当テーブルを作成する作成手段、
前記作成手段によって作成された割当テーブルを、前記記憶装置に対するファイルのリード/ライトを制御する情報処理装置に配信する配信手段として機能させることを特徴とする付記8または9に記載の分散ストレージ管理プログラム。
(付記11)前記取得手段は、
前記ファイル群を割り当てるクラスの複数のクラス数{M1,M2,…,Mn}を取得し、
前記ファイル割当手段は、
前記取得手段によって取得された複数のクラス数{M1,M2,…,Mn}の中から、前記ファイル群を記憶させる記憶装置の使用台数に応じて選択されたクラス数M個分のクラスに割り当てることを特徴とする付記8〜10のいずれか一つに記載の分散ストレージ管理プログラム。
(付記12)前記複数のクラス数{M1,M2,…,Mn}は、M(i+1)がMiの倍数となる任意の数字列であり(ただし、i=1,2,…,n−1)、
前記ファイル割当手段は、
前記複数のクラス数{M1,M2,…,Mn}の中から、前記記憶装置に割り当てられるクラス数の均等性を表わす係数Xと、前記ファイル群を記憶させる記憶装置の使用台数とを掛け合わせた値よりも大きくなる最小のクラス数Mを選択することを特徴とする付記11に記載の分散ストレージ管理プログラム。
(付記13)付記1〜12のいずれか一つに記載の分散ストレージ管理プログラムを記録したコンピュータに読み取り可能な記録媒体。
(付記14)ファイル群を割り当てるクラスのクラス数Mを取得する取得手段と、
所定のアルゴリズムに従って、前記ファイル群を前記取得手段によって取得されたクラス数M個分のクラスに割り当てるファイル割当手段と、
前記ファイル群を記憶させる記憶装置の使用台数を現在の台数から他の台数に変更する場合、前記ファイル割当手段によって前記クラス数M個分のクラスにそれぞれ割り当てられたファイル群を、前記クラス単位で前記他の台数から成る記憶装置に割り当てるクラス割当手段と、
を備えることを特徴とする分散ストレージ管理装置。
(付記15)制御手段および記憶手段を備えるコンピュータが、
前記制御手段により、ファイル群を割り当てるクラスのクラス数Mを取得する取得工程と、
前記制御手段により、所定のアルゴリズムに従って、前記ファイル群を前記取得工程によって取得されたクラス数M個分のクラスに割り当てるファイル割当工程と、
前記制御手段により、前記ファイル群を記憶させる記憶装置の使用台数を現在の台数から他の台数に変更する場合、前記ファイル割当工程によって前記クラス数M個分のクラスにそれぞれ割り当てられたファイル群を、前記クラス単位で前記他の台数から成る記憶装置に割り当てるクラス割当工程と、
を実行することを特徴とする分散ストレージ管理方法。
本実施の形態にかかるストレージシステムのシステム構成図である。
本実施の形態にかかるコンピュータ装置のハードウェア構成を示す説明図である。
分散ストレージ管理装置の機能的構成を示すブロック図である。
割当テーブルの具体例を示す説明図(その1)である。
実施の形態1にかかる分散ストレージ管理装置の分散ストレージ処理手順を示すフローチャートである。
実施の形態1の実施例1における分散ストレージ処理の概要を示す説明図である。
実施の形態1の実施例1における分散ストレージ処理手順を示すフローチャートである。
実施の形態1の実施例2における分散ストレージ処理の概要を示す説明図である。
実施の形態1の実施例2における分散ストレージ処理手順を示すフローチャートである。
サーバの運用例の概要を示す説明図である。
サーバの書込処理手順を示すフローチャートである。
割当テーブルの具体例を示す説明図(その2)である。
実施の形態2の実施例4における分散ストレージ処理の概要を示す説明図である。
稼働前準備処理の具体的な処理手順を示すフローチャート(その1)である。
増設時の分散ストレージ処理手順を示すフローチャート(その1)である。
実施の形態2の実施例5における分散ストレージ処理の概要を示す説明図である。
縮退時の分散ストレージ処理手順を示すフローチャートである。
実施の形態3の実施例6における分散ストレージ処理の概要を示す説明図である。
稼働前準備処理の具体的な処理手順を示すフローチャート(その2)である。
増設時の分散ストレージ処理手順を示すフローチャート(その2)である。
符号の説明
100 ストレージシステム
101 分散ストレージ管理装置
102−1〜102−n サーバ
103−1〜103−n 外部装置
301 取得部
302 ファイル割当部
303 クラス割当部
304 作成部
305 配信部
400,1200 割当テーブル
C1〜C12 クラス
D1〜Dn ディスク装置
f1〜f24,fi,fj ファイル