【実施例1】
【0012】
図1は、第一の実施例のストレージシステムを含む計算機システムの構成の一例を示すブロック図である。
同図に見るように、本実施例の計算機システムは、管理計算機101、サーバ計算機102A、102B、ディスク装置103Aおよび103Bから構成される。管理計算機101,サーバ計算機102A,および102Bはネットワーク104を用いて接続される。ネットワーク104としては、例えばLAN(Local Area Network)が考えられる。ただし、本実施例では、ネットワーク104の種類、接続形式はLANに限定されない。サーバ計算機102Aおよび102Bはネットワーク105を用いてディスク装置103Aおよび103Bに接続される。ネットワーク105は例えばSAN(Storage Area Network)である。ただし、上記と同様、ネットワーク105の接続形式等はそれに限定されない。以下、サーバ計算機102Aおよび102Bを区別しない場合、サーバ計算機102と記載する。
図1ではサーバ計算機およびディスク装置がそれぞれ2台であるが、サーバ計算機、ディスク装置とも3台以上あってもよい。なお、管理計算機101、サーバ計算機102とも、汎用の計算機構成を備えるものであり、図示を省略した、キーボード、マウス、表示デバイスの入出力部等を備えているものである。
【0013】
まず、
図1の管理計算機101のハードウェア構成について説明する。
管理計算機101は、メモリ110、ネットワークインタフェース111、プロセッサ112、ストレージ113を備える。プロセッサ112はメモリ110に格納されるプログラムを実行する。プロセッサ112がプログラムを実行することによって、管理計算機101の機能を実現できる。以下、プログラムを主語に管理計算機の処理を説明する場合、プロセッサ112によってプログラムが実行されていることを示す。メモリ110はプロセッサ112が実行するプログラムおよび当該プログラムを実行するために必要なデータを格納する。メモリ110は例えばDRAMのような半導体メモリが考えられる。メモリ110に格納されるプログラムおよびデータについては後述する。ネットワークインタフェース111はサーバ計算機102A、102Bと通信するための装置である。ストレージ113はオペレーティングシステム等の情報を格納する記憶装置である。
【0014】
次に、
図1のサーバ計算機102のハードウェア構成について説明する。
サーバ計算機102Aは、メモリ161A、ネットワークインタフェース162A、プロセッサ163A、ストレージインタフェース164Aを備える。プロセッサ163Aはメモリ161Aに格納されるプログラムを実行する。プロセッサ163Aがプログラムを実行することによって、サーバ計算機102の機能を実現できる。以下、プログラムを主語にサーバ計算機102Aの処理を説明する場合、プロセッサ163Aによってプログラムが実行されていることを示す。メモリ161Aはプロセッサ163Aが実行するプログラムおよび当該プログラムを実行するために必要なデータを格納する。メモリ161Aは例えばDRAMのような半導体メモリが考えられる。メモリ161Aに格納されるプログラムおよびデータについては後述する。ネットワークインタフェース162Aは管理計算機101、サーバ計算機102Bと通信するための装置である。
【0015】
ストレージインタフェース164Aはディスク装置103Aおよび103Bと通信を行うための装置である。図示されていないが、サーバ計算機102Aにはオペレーティングシステム等の情報を格納する記憶装置が備えられていてもよい。サーバ計算機102Bの構成はサーバ計算機102Aと同一であるため説明を省略する。
ディスク装置103Aおよび103Bには後に説明する検出記号190A、190Bおよび、属性情報191A、191Bが格納される。
【0016】
次に管理計算機110のソフトウェア構成について説明する。
管理計算機110はメモリ110内に、ディスク検出管理部120と基本ソフトウェア121を有する。ディスク検出管理部120は、サーバ計算機102が共有ディスクを自動検出する手順の実行を指示し、データを収集するため、検出指示部131、ディスク情報受信部132、ノード一覧情報141、ディスク属性情報142、ディスク管理マスターテーブル145を持つ。検出指示部131はサーバ計算機102A、102Bに対してディスクの検出の開始を指示する要求を出力するものであり、後に
図3を用いて詳しく説明する。ディスク情報受信部はサーバ計算機102A、102Bが検出したディスクの情報を収集し、共有ディスクの存在を検出するものであり、後に
図7を用いて詳しく説明する。なお、ディスク検出管理部120の検出指示部131やディスク情報受信部132は、メモリ110中に記憶され、処理部であるプロセッサ112で処理実行されるプログラムソフトウェアとして構成されるので、機能ブロックとして検出指示部131、ディスク情報受信部132は、処理部であるプロセッサ112の機能構成ブロックであるということもできる。
【0017】
ノード一覧情報141はユーザーから入力されるデータであり、ディスクを自動検出する対象となる計算機の一覧を保持する。ディスク属性情報142はユーザーから入力されるデータであり、検出対象となるディスクの属性を保持する。ディスク管理マスターテーブル145は各サーバ計算機が検出したディスクの一覧を管理するデータである。
基本ソフトウェア121は公知のオペレーティングシステムである。図示されていないが管理計算機101は他のソフトウェアを同時に実行していても良い。
【0018】
次にサーバ計算機102Aのソフトウェア構成について説明する。
サーバ計算機102Aはメモリ161A内に、共有ディスク検出部170Aと基本ソフトウェア189Aを有する。共有ディスク検出部170Aは、サーバ計算機102Aに接続されたディスクの中から共有ディスクを検出するための手順の一部を行うものであり、対象ディスク検出部171A、検出記号操作部172A、管理サーバ報告部173A、ディスク属性条件180A、ノード番号181A、全ディスク情報182A、ディスク管理テーブル183Aから成る。対象ディスク検出部171Aは自動検出の対象となるディスクを選び出すものであり、後に
図4を用いて詳しく説明する。検出記号操作部172Aは共有ディスクの検出のためのディスク入出力を行うものであり、後に
図5を用いて詳しく説明する。管理サーバ報告部173Aは検出記号操作部172Aの結果を管理計算機101である管理サーバに報告するものであり、後に
図6を用いて詳しく説明する。
【0019】
なお、共有ディスク検出部161A中の対象ディスク検出部171A、検出記号操作部172A、管理サーバ報告部173Aは、メモリ102Aに記憶され、処理部であるプロセッサ163Aで処理実行されるプログラムソフトウェアとして構成されるので、機能ブロックとして対象ディスク検出部171A、検出記号操作部172A、管理サーバ報告部173Aは、処理部であるプロセッサ163Aに含まれる機能構成ブロックであるということもできる。
【0020】
ディスク属性条件180Aは管理計算機101のディスク属性情報142の複製である。ノード番号181Aは管理計算機101より各サーバ計算機に通知される固有の番号を保存した情報である。全ディスク情報182Aは対象ディスク検出部171Aがその動作の途中で格納する一時的なデータである。ディスク管理テーブルは検出記号操作部172Aが作成し、管理サーバ報告部173Aが管理計算機101に報告するデータを格納したものであり、
図8にその一例を示した。基本ソフトウェア189Aは公知のオペレーティングシステムである。図示されていないがサーバ計算機102Aは他のソフトウェアを同時に実行していても良い。
なお、サーバ計算機102Bのソフトウェア構成はサーバ計算機102Aと同一であるため説明を省略する。
【0021】
以下、上述した第一の実施例の計算機システムの各構成ブロックの処理について
図2〜
図7を用いて説明する。
【0022】
図2は、第一の実施例のシステムを利用するユーザーの操作について説明したフローチャートである。
第一の実施例のシステムの利用者は、まず入出力部やネットワーク104を使って、管理計算機101において、ディスク検出管理部120のノード一覧情報141を入力する(ステップS201)。次にステップS202にて、管理計算機101において同様にディスク属性情報142を入力する。ステップS201およびS202は、例えばオペレーティングシステムが提供するファイルシステムにノード一覧を書いたファイルを準備するなどの方法で実現可能である。次にステップS203にて、検出指示部131を起動する。例えばステップS201およびS202が、ファイルを準備した場合、ステップS203にてこれら2つのファイルを入力として指定しながら検出指示部131を起動する。
【0023】
図3は、第一の実施例におけるディスク検出管理部120の検出指示部131が実行する処理を説明したフローチャートである。
検出指示部131はユーザー操作により、
図3のフロー処理を開始する(ステップS301)。このとき当該指示には上述のノード一覧情報141とディスク属性条件142が含まれる。
【0024】
検出指示部131はノード一覧情報141に未処理のノードが含まれるかどうかを確認する(ステップS302)。ここで未処理のノードとはこの後のステップS303からステップS305の対象として処理されていないサーバ計算機102のことを意味する。例えばノード一覧情報141がサーバ計算機の名前を各行に記したファイルである場合、検出指示部131はすでに処理した行数を記録し、ファイルの行数と比較することによりステップS302の条件判定が可能である。
【0025】
ステップS302の条件判定が真の場合、検出指示部131はノード一覧情報141から未処理のノードを1個選択する(ステップS303)。例えばノード一覧情報141がサーバ計算機の名前を各行に記したファイルであり、すでにN行の処理が終了している状況では、N+1行目に記されているサーバ計算機が選択されることになる。
【0026】
検出指示部131はステップS303で選択したサーバ計算機に、ディスク属性条件142とノード番号と検出命令を送信する(ステップS304)。ここでノード番号とはノード一覧情報141に記された各サーバ計算機に一意に与えられる整数である。例えばノード一覧情報141がサーバ計算機の名前を各行に記したファイルである場合、ノード番号はそのサーバ計算機の名前が記された行の番号とすれば一意の数字を与えることが可能である。
【0027】
検出指示部131はステップS302で選択したサーバ計算機を処理済として記憶する(ステップS305)。例えばノード一覧情報141がサーバ計算機の名前を各行に記したファイルである場合、処理済の行数を1加えることでこのステップは実現可能である。
検出指示部131はステップS302で選択したサーバ計算機からの書き込み完了通知を待つ(ステップS306)。
【0028】
以上、ステップS303からS306をノード一覧情報141に記述されたすべてのサーバ計算機に対して行うとステップS302の条件判定が偽となる。
それを受け、検出指示部131はノード一覧情報141に記述されたすべてのサーバ計算機に対してディスク情報報告命令を送出する(ステップS307)。これを受けたサーバ計算機の動作は
図5および
図6を用いて後述する。
検出指示部131はディスク情報受信部132を起動する(ステップS308)。ディスク情報受信部の動作は
図7を用いて後述する。
【0029】
ステップS307およびステップS308により、各サーバ計算機102からは、それぞれの計算機からアクセス可能なディスクについて、そのディスクの各サーバ計算機における名前と、ディスクのデータとして書き込まれた検出記号が報告される。この検出記号が等しいディスクが複数のサーバ計算機から報告された場合、そのディスクが共有ディスクであることが検出できる。なお、この検出信号の内容については後述する。
【0030】
図4は、第一の実施例におけるサーバ計算機102Aおよび103Bの共有ディスク検出部161Aおよび161B内の対象ディスク検出部171Aおよび171Bが実行する処理を説明したフローチャートである。対象ディスク検出部171Aおよび171Bの動作は同じであるため、まとめて対象ディスク検出部171と記す。以下、同様に
図1でAまたはBが付加されて記されており、本文中にAまたはBの表記がないものは、AもBも同じ処理を行っていることを示すものとする。
【0031】
対象ディスク検出部171は管理計算機101からの検出命令を受信したときに処理を開始する(ステップS401)。この検出命令にはディスク属性条件とノード番号が含まれる。
対象ディスク検出部171は受信したディスク属性条件をメモリ上の情報であるディスク属性条件180として保存する(ステップS402)。
対象ディスク検出部171は受信したノード番号をメモリ上の情報であるノード番号181として保存する(ステップS403)。
【0032】
次に、対象ディスク検出部171は基本ソフトウェア189の機能を用いて、計算機102からアクセス可能な全ディスクの一覧をとその属性を取得する。取得したディスクの一覧とその属性は全ディスク情報182に記録する(ステップS404)。ここでディスクの一覧とはソフトウェアからアクセスするときに使用するディスク装置ディスクのファイル名、属性とはディスク装置のディスクコントローラの名前等である。全ディスク情報182には検出された各ディスクについて、ステップS406からS409の処理を終えたか否かを記録するフラグ(0か1の値)を持つ。以下このフラグを「処理済フラグ」と呼ぶ。ステップS404終了時点ではいずれのディスクについてもこの処理済フラグは0の状態である。
【0033】
対象ディスク検出部171は全ディスク情報182に処理済フラグがゼロの状態のディスクが存在するか否かを判定する(ステップS405)。
ステップS405の判定が真の場合、対象ディスク検出部171は全ディスク情報から処理済フラグが0であるディスクを1個選択する(ステップS406)。
【0034】
対象ディスク検出部171はステップS406で選択したディスクの属性と属性条件180を比較し、条件を満たすか否かを判定する(ステップS407)。例えば属性条件180に「ディスクコントローラの製造者がA社」という条件が記されており、ステップS406で選択したディスクの属性(ステップS404で取得)がA社であればステップS407の判定は真、A社以外であれば偽となる。
【0035】
ステップS407の判定が真の場合、対象ディスク検出部171はディスク管理テーブル182にディスクの名前を追加する(ステップS408)。ステップS407の判定が真の場合、対象ディスク検出部171はこの処理をスキップする。
【0036】
対象ディスク検出部171はステップS406で選択したディスクの処理済フラグを1にセットしてステップS405に戻る(ステップS409)。ステップS405からS409の一連の処理は、サーバ計算機102に接続されるすべてのディスクの中からディスク属性条件180を満たすものをリストアップし、ディスク管理テーブル182に記録する処理である。すべてのディスクについて属性の調査が終了するとステップS405の判定が偽になる。
【0037】
対象ディスク検出部171はステップS405の判定が偽の場合、検出記号操作部172を起動する(ステップS410)。
対象ディスク検出部171の処理は以上で終了する(ステップS411)。
【0038】
図8に上述したディスク管理テーブル183の一構成例を示す。ディスク管理テーブル183はディスク名、書き込み検出記号、読み込み検出記号の3項目からなる行を、任意の個数、記録することのできる構造となっている。対象ディスク検出部171の処理フローが終了した時点ではディスク名のみが記録された行が記録されており、その行数は、ディスク属性条件180の条件を満たすディスクの個数と等しくなっている。書き込み検出記号、読み込み検出記号については後述する。
【0039】
図5は、第一の実施例におけるサーバ計算機102の共有ディスク検出部161中の検出記号操作部172が実行する処理を説明したフローチャートである。
検出記号操作部172は対象ディスク検出部のステップS410によって処理を開始する(ステップS501)。
【0040】
検出記号操作部172はディスク管理テーブル183に書き込み検出記号が未記入のディスクが存在するか否かの判定を行う(ステップS502)。ステップS502は、
図8で説明したディスク管理テーブル183に記入されたすべてのディスクに対し、それぞれのディスクに対して繰り返し、ステップS503からS507の処理を行うことを意味する。
検出記号操作部172は、ディスク管理テーブル183から書き込み検出記号が未記入のディスクを1個選択する(ステップS503)。
【0041】
検出記号操作部172は、ノード番号181と選択したディスクの名前を用いて検出記号を作成する(ステップS504)。検出記号は、ディスクの名前またはノード番号が異なれば、必ず検出記号も異なることが保証されている記号である。例えばノード番号を10進数の数字を示す文字列で表記し、ディスク名も文字列で表記した上で、これら2個の文字列を連結したものを検出記号とすれば、上記の検出記号は生成可能である。この例で、例えばノード番号が1番のサーバ計算機102に存在するディスク名がsdaのディスクの場合、検出記号はノード番号を3桁に揃えると仮定して、「001sda」となる。
【0042】
検出記号操作部172はステップS504で生成した検出記号をステップS504で選択したディスクの所定の領域に書き込む(ステップS506)。例えばステップS504で選択されたディスクが
図1のディスク装置103Aであり、サーバ計算機102Aにおいてこのディスクの名前がsda、サーバ計算機102Aのノード番号181Aが1であった場合、ディスク装置103Aに書き込まれる検出記号190Aが「001sda」となる。検出記号を書き込む所定の位置とは、システム全体で合意の取れた任意の場所であり、例えばディスクの先頭を利用することができる。
【0043】
検出記号操作部172はディスク管理テーブル183における、ステップS503で選択したディスクに対する書き込み検出記号欄に、ステップS504で生成した検出記号を書き込む(ステップS507)。
【0044】
検出記号操作部172はステップS502に戻り、ディスク管理テーブルのすべてのディスクについてステップS503からS507の処理を行う。
ステップS502の判定が偽となった場合、検出記号操作部172は管理計算機101に書き込み完了通知を送信する(ステップS508)。
【0045】
サーバ計算機102の共有ディスク検出部161の対象ディスク検出部171と検出記号操作部172のステップS501からS507は、管理計算機101のステップS304の指示を受けて動作しており、検出記号操作部172のステップS508の書き込み完了通知が、管理計算機101の検出指示部131におけるステップS306に対応している。
【0046】
管理計算機101がすべてのサーバ計算機102に対して、対象ディスク検出部171と検出記号操作部172のステップS501からS508の実行を指示した後、検出指示部131のステップS307は全サーバ計算機102にディスク報告命令を出す。検出記号操作部172は上記ステップS508の後、このディスク報告命令を受信するのを待つ(ステップS509)。
【0047】
検出記号操作部172はディスク管理テーブル183にあるすべてのディスクについて検出記号を読み取り、ディスク管理テーブル183の読み込み検出記号に記録する。例えば
図1において、サーバ計算機102Aから名前sdaでアクセスするディスクがディスク装置103Aであり、かつ、このディスクはサーバ計算機102Bとも共有されており、サーバ計算機102Bからは名前sdbでディスク装置103Aにアクセスできるようネットワーク105が構成されていたとする。
【0048】
この場合、管理計算機101の検出指示部からの命令を受け取ったサーバ計算機102Aは、ディスク装置103Aの検出記号190Aに検出記号である「001sda」を書き込む。その後、同じく管理計算機101の検出指示部からの命令を受け取ったサーバ計算機102Bは、同じディスク装置103Aの検出記号190Aに検出記号「002sdb」を上書きする。その結果、サーバ計算機102Aは、ステップS506でディスクsdaに対して書き込みを行った検出記号と異なる検出記号をステップS510で読み込む。
【0049】
図8の1行目801にこのような状況を例示した。なお、
図8の2行目802のように、自身の書き込んだ検出記号が上書きされず、書いた記号がそのまま読み込まれる可能性もある。
【0050】
サーバ計算機102において、検出記号操作部172は管理サーバ報告部173を起動する(ステップS511)。
以上でサーバ計算機102の検出記号操作部172の処理は終了する(ステップS512)。
【0051】
図6は、第一の実施例におけるサーバ計算機102の共有ディスク検出部161中の管理サーバ報告部173が実行する処理を説明したフローチャートである。
管理サーバ報告部173は検出記号操作部172のステップS511を契機に処理を開始する(ステップS601)。
【0052】
管理サーバ報告部173はノード番号181を管理計算機101に送信する(ステップS602)。
管理サーバ報告部173はディスク管理テーブル183にあるすべてのディスクについて、ディスク名と読み込み検出記号の組を送信する(ステップS603)。
これらステップS602とS603は、次に
図7を用いて説明する管理計算機101のディスク検出管理部120のディスク情報受信部132の処理のステップS703、S704に対応する。
【0053】
図7は、第一の実施例におけるディスク情報受信部132が実行する処理を説明したフローチャートである。
ディスク情報受信部132は検出指示部131のステップS308を契機に起動する。
【0054】
ディスク情報受信部132はノード一覧情報141にあるノード中に未受信のノードがあるか否かを判定する(ステップS702)。このステップはステップS703からステップ710の処理をすべてのサーバ計算機102について繰り返し行うことを意味する。
ディスク情報受信部132はサーバ計算機102からノード番号を受け取る(ステップS703)。これは先述の管理サーバ報告部173のステップS602にて送信されたものである。
【0055】
ディスク情報受信部132はサーバ計算機102からディスク名と検出記号のリストを受け取る(ステップS704)。これは先述の管理サーバ報告部173のステップS603にて送信されたものである。
ディスク情報受信部132はステップS704で受信したリストにエントリーが含まれるかどうかを判定する(ステップS705)。判定が偽の場合はステップS702に戻る。判定が真の場合はステップS706に進む。
【0056】
ディスク情報受信部132はステップS704で受信したリストからディスク名と検出記号の組を1個取り出し、リストから削除する(ステップS706)。
ディスク情報受信部132はディスク管理マスターテーブル145にステップS706で取得した検出記号が存在するか否かを判定する(ステップS707)。
【0057】
図9に一例を示すように、管理計算機101のディスク検出管理部120のディスク管理マスターテーブル145とは、検出記号をキーに、検出記号に対応するディスク名とそのディスク名でアクセスできるノードの組をまとめたテーブルである。
ディスク情報受信部132はステップS707の判定が真の場合、ステップS707で発見した行に対してステップS703で受信したノード名と、ステップS706で選択したディスク名の組を記録する(ステップS708)。
【0058】
ディスク情報受信部132はステップS707の判定が偽の場合、マスターディスク管理情報にS706で取得した検出記号の行を追加する(ステップS709)。
ディスク情報受信部132はS709で追加した行にS703で受信したノード名とS706で取得したディスク名の組を記録する(ステップS710)。
【0059】
ステップS706からステップS710の手順は、各サーバ計算機102から報告される読み込み検出記号をキーにディスク名を整理する役割を果たす。先に説明したように、共有されているディスクについては、それを共有するすべてのサーバ計算機102が、最後に書き込まれた検出記号を読み込む。つまり同じ検出記号を読み込んだディスクは共有されている同一のディスクである。したがって、ディスク管理マスターテーブル145は各サーバ計算機102から受信した検出記号を行の見出し列に書き込み、新たな検出記号を受信した場合は新規の行を追加、すでに存在する検出記号を受信した場合は表にノードとディスク名の組を追加する処理を行っている。
【0060】
以上説明した第一の実施例のシステムにおいて、管理計算機101のディスク検出管理部120のディスク情報受信部132の処理が終了したとき、ディスク管理マスターテーブル145がサーバ計算機群の中のディスク共有の状態を表している。例えば
図9の例ではノード番号1のサーバ計算機102のディスクsdaとノード番号2のサーバ計算機のディスクsdbは共有されている同じディスクであること、ノード番号1のサーバ計算機102のディスクsdcには共有している他のサーバ計算機が存在しないことが示されている。
【0061】
本実施例のストレージシステム、共有ディスク自動検出方法により、多数のサーバ計算機と共有ディスクを有する環境において、共有ディスクの存在を手作業で設定する必要がなくなり、共有ディスクを制御するプログラムなどに対する設定の煩雑さや設定ミスの可能性を軽減することができ、ディスクを利用するシステム内の構成要素が自動的に共有ディスクを発見できる計算機システムを実現できる。
【実施例2】
【0062】
図10は第二の実施例の計算機システムの一構成を示すブロック図である。本実施例は、第一の実施例の計算機システムで説明した共有ディスクの自動検出が終了し、管理計算機にディスク管理マスターテーブルが完成した後、ディスク管理マスターテーブルを用いて共有ファイルシステムを構築する実施例である。
【0063】
図10の計算機システムの管理計算機101、サーバ計算機102A、102Bは、
図1に示した第一の実施例の計算機システムと同じ構成要素をすべて備える。なお、
図10では
図1に記されていたディスク検出管理部120の構成要素である、検出指示部131、ディスク情報受信部132、ノード一覧情報141、ディスク属性情報142が描かれていないが、これらは第一の実施例の計算機とまったく同じ動作をするため、図示を省略したためであり、本実施例においては説明も省略する。同様に、サーバ計算機102中、共有ディスク検出部170の構成要素である対象ディスク検出部171、検出記号操作部172、管理サーバ報告部173、ディスク属性条件180、ノード番号181、全ディスク情報182、ディスク管理テーブル183についても
図2には描かれていないが、これらは実際には存在し、その動きは第一の実施例の計算機とまったく同じであるので説明を省略する。
【0064】
以下、
図10に示した第二の実施例の計算機システムを第一の実施例の計算機システムとの違いを中心に説明する。
同図において、サーバ計算機102のメモリ161中の共有ファイルシステム管理部1001は、サーバ計算機102、ディスク装置103を用いてファイルシステムを構築するためのソフトウェアである。
【0065】
管理計算機101のメモリ110内の共有ファイルシステム管理部1001はメタデータ管理部1002を有する。メタデータ管理部1002は後述するサーバ計算機102のファイルシステムクライアント部1011からの要求を受けつけ、ファイルの存在場所を示すデータを返答する役割を持つ。メタデータ管理部1002の処理内容は
図12を用いて後述する。
【0066】
管理計算機101のストレージ113中に保存されるメタデータ情報1003は、ファイルの存在場所等の情報が格納される。
図10の計算機システムの構成では、ストレージ113の中にメタデータ情報1003を配置したが、管理計算機101がストレージエリアネットワーク等で接続されたアクセス可能な外部ストレージを有する場合などは、その外部ストレージにメタデータ情報を配置しても構わない。
【0067】
サーバ計算機102のメモリ161に存在する共有ファイルシステム部1010はユーザーからの要求を受付、処理を行った後、結果をユーザーに返答するファイルシステムクライアント部1011、およびファイルデータの読み書きのため、ディスクへのアクセスを行う、ディスクアクセス部1012がある。ファイルシステムクライアント部1011の動作は
図11を用いて後述する。ディスクアクセス部1012は、一般的にファイルシステムと呼ばれる計算機プログラムが行う操作と同様であり、その処理は公知であるためここでは説明しない。
【0068】
図11に、第二の実施例の計算機システムにおけるファイルシステムクライアント部1011の処理を示すフローチャートである。
ファイルシステムクライアント部1011はユーザーからのファイルアクセス要求を契機に処理を開始する(ステップS1101)。
【0069】
ファイルシステムクライアント部1011はユーザーからアクセス要求のあったファイルについて、そのファイルが保存されている場所を管理計算機101の共有ファイルシステム管理部1001のメタデータ管理部1002に問い合わせを行う(ステップS1102)。
【0070】
ファイルシステムクライアント部1011はファイルが存在するサーバ計算機の名前と、その計算機における当該ファイルが格納されているディスクの名前の一覧を受信する(ステップS1103)。ここで、ディスクは複数のサーバ計算機に共有されている可能性があるため、同じデータでも複数のサーバ計算機からアクセス可能な場合があり、この場合は、サーバ計算機名とディスク名のペアが複数受信される。
【0071】
ファイルシステムクライアント部1011はステップS1103で受信した計算機名とディスク名のペアのリストの中に、自身のサーバ計算機名が含まれるかどうかを確認する(ステップS1104)。ステップS1104の判定は、サーバ計算機から直接アクセス可能なディスクにアクセス対象のファイルが存在するか否かを調査している。
【0072】
ステップS1104の判定が真の場合、当該サーバ計算機は直接ディスクを参照することでアクセス対象のファイルに到達できる。そこで、ファイルシステムクライアント部1011はディスクアクセス部1012にアクセス要求を送信し、ファイルの読み込みまたは書き込みを行う(ステップS1105)。
ファイルシステムクライアント部1011はステップS1105の結果(読み込まれたデータ、および成功、失敗を示す整数値)を受信する。
【0073】
ステップS1104の判定が偽の場合、ファイルシステムクライアント部1011は、一覧に含まれるサーバ計算機のうちのひとつにネットワーク104を経由してファイルアクセス要求を送信する(ステップS1107)。
ファイルシステムクライアント部1011は、ネットワークからその結果を受け取る(ステップS1108)。
【0074】
S1104の判定がいずれの場合も、ファイルシステムクライアント部1011は、ファイルアクセスの結果をS1106またはS1108で受け取る。ファイルシステムクライアント部1011は、ステップS1109にてこの結果をユーザーに返答し、処理を終了する。
【0075】
図12は、第二の実施例の計算機システムにおける、管理計算機中のメタデータ管理部の処理を示すフローチャートである。
管理計算機101のメタデータ管理部1002はファイルシステムクライアントからの要求を契機に処理を開始する(ステップS1201)。
【0076】
メタデータ管理部1002はファイルシステムクライアントからの要求が新規ファイルの作成か否かを判定する(ステップS1202)。
メタデータ管理部1002はステップS1202の判定が真の場合、ディスク管理マスターテーブル145の任意の行を選択する(ステップS1203)。これは新規に作成されるファイルの保存場所を選択する意味があり、単純にランダムに選択するほか、ノード名などから判断してクライアントに近いディスクに配置する等、様々な変形例があり得る。
【0077】
メタデータ管理部1002は、新規に作成するファイルに対応するメタデータ管理情報1003をストレージ113に作成する(ステップS1204)。
そして、メタデータ管理部1002は、ステップS1204で作成したメタデータ管理情報に対して、ステップS1203で選択したディスク管理マスターテーブルの行に記されている検出記号を書き込む(ステップS1206)。
【0078】
ステップS1202の判定が偽の場合、既存ファイルの読み込みまたは書き込みのリクエストである。この場合、メタデータ管理部1002は、要求対象ファイルのメタデータ情報を読み取る(ステップS1207)。
また、メタデータ管理部1002は、メタデータの中からデータを保持しているディスクの検出記号を読み取る(ステップS1208)。
【0079】
ステップS1202の判定結果にかかわらず、この時点でアクセス対象の検出記号が得られている。メタデータ管理部1002はディスク管理マスターテーブル145を参照し、当該ディスクにアクセスできるサーバ計算機とディスク名の組を得る(ステップS1208)。
【0080】
メタデータ管理部1002はサーバ計算機とディスク名の組の一覧をファイルシステムクライアント部1011に返信する。この返信メッセージは、
図11で説明したファイルシステムクライアント部1011のステップS1103に対応する。
【0081】
以上説明した第二の実施例の計算機システムは、第一の実施例の計算機システムの構成を用いて作成したディスク管理マスターテーブルを利用して、ストレージシステム、共有ファイルシステムを構築する計算機システムの例である。ディスク管理マスターテーブルに記されている検出記号をメタデータ情報に書き込むことにより、サーバ計算機やディスクの接続情報に変化があった場合でもメタデータを修正する必要がなく、ディスク管理マスターテーブルの情報を更新するのみで自動的に常に正しい構成でファイルシステムを管理できる。
【0082】
なお、本発明は前述した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、置換をすることが可能である。
【0083】
また、前述の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現する場合を例示して説明したが、それらの一部又は全部を、集積回路で設計する等によってハードウェアを用いて実現してもよい。また、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ストレージに格納する代わりに、他の記録媒体に格納することができる。また、共有されるストレージの例として、ディスクを例示したが、他の形式のストレージを利用してもよい。