(57)【要約】【課題】レプリケーション中であっても整合性を保ちながらファイルのアクセスを可能にする【解決手段】分散配置された複数のストレージ装置間でレプリケーションを行い、ストレージ装置♯０、１に格納したファイルのＧＵＩＤとオリジナルのファイルを有するストレージ装置の装置ＩＤとの関連を格納するＧＵＩＤ管理データベース１３、２３と、クライアント装置♯１１からのファイルのアクセス要求に応じてファイルを検索し、要求されたファイルＣがストレージ装置♯１に無い場合には、ＧＵＩＤ管理データベースからファイルＣのＧＵＩＤに基づいてオリジナルのファイルを有するストレージ装置の装置ＩＤ（♯０）を検索し、このストレージ装置♯０から要求されたファイルＣにアクセスする。【選択図】図７
2005050165.tif 000002
【特許請求の範囲】
【請求項１】
分散配置された複数のストレージ装置と、
これらストレージ装置が格納するファイルの識別子及びストレージ装置を管理する管理サーバとを備え、
この管理サーバはストレージ装置からの要求に基づいて、一意の識別子としてのＧＵＩＤを前記ストレージ装置に割り当てる処理と、
前記ＧＵＩＤの割り当て状態を管理サーバのＧＵＩＤ割当データベースに記憶する処理と、
前記管理サーバから割り当てられたＧＵＩＤを、前記ストレージ装置が各ファイルに付加する処理と、
を含むことを特徴とする分散ストレージ装置のファイル管理方法。
【請求項２】
前記ストレージ装置は、新たにファイルを作成する度に前記ＧＵＩＤをこのファイルに付加する処理と、
前記ストレージ装置は、割り当てられたＧＵＩＤが不足した場合には、前記管理サーバにＧＵＩＤを要求する処理と、
前記管理サーバは、このストレージ装置からの前記要求に応じて未使用のＧＵＩＤをブロック単位でストレージ装置に割り当てる処理と、
を含むことを特徴とする請求項１に記載の分散ストレージ装置のファイル管理方法。
【請求項３】
前記管理サーバは、前記割り当てた未使用のＧＵＩＤ及びストレージ装置の装置ＩＤを、各ストレージ装置に送信する処理と、
各ストレージ装置は、それぞれに設けたローカルのＧＵＩＤ管理データベースに前記送信されたＧＵＩＤ及びストレージ装置の装置ＩＤを格納する処理と、
を含むことを特徴とする請求項２に記載の分散ストレージ装置のファイル管理方法。
【請求項４】
前記管理サーバは、一つまたは複数のグループと、これら各グループに所属するストレージ装置の装置ＩＤの対応関係を管理するグループ管理データベースを有し、
前記ストレージ装置を追加する際には、
このストレージ装置に装置ＩＤを設定する処理と、
この装置ＩＤにグループの識別子を関連付ける処理と、
前記グループ管理データベースに装置ＩＤとグループ識別子の対応関係を登録する処理と、
を含むことを特徴とする請求項２に記載の分散ストレージ装置のファイル管理方法。
【請求項５】
前記管理サーバは、前記割り当てた未使用のＧＵＩＤ及びストレージ装置の装置ＩＤを、前記割り当てを行ったストレージ装置が所属するグループのストレージ装置のみに送信する処理と、
前記グループに所属するストレージ装置は、それぞれに設けたローカルのＧＵＩＤ管理データベースに前記送信されたＧＵＩＤ及びストレージ装置の装置ＩＤを格納する処理と、
を含むことを特徴する請求項４に記載の分散ストレージ装置のファイル管理方法。
【請求項６】
前記ストレージ装置は、異なるグループＩＤのストレージ装置からのアクセスを拒否することを特徴とする請求項４に記載の分散ストレージ装置のファイル管理方法。
【請求項７】
前記ストレージ装置は各負荷を検出する手段を有し、検出した負荷が少ないときに各ストレージ装置間でレプリカを作成することを特徴とする請求項１または請求項４に記載の分散ストレージ装置のファイル管理方法。
【請求項８】
前記ストレージ装置は、ローカルに設けたＧＵＩＤ管理データベースのＧＵＩＤと装置ＩＤの関係から、オリジナルのファイルを選択する処理と、
前記オリジナルのファイルを他のストレージ装置へ複写する処理と、
を含むことを特徴とする請求項７に記載の分散ストレージ装置のファイル管理方法。
【請求項９】
前記ストレージ装置にアクセスするクライアント装置を有し、
前記クライアント装置がファイルの書き込みを要求したときには、ＧＵＩＤ管理データベースのＧＵＩＤと装置ＩＤの関係から、オリジナルのファイルを有するストレージ装置を選択する処理と、
この選択したストレージ装置に対して書き込む処理と、
を含むことを特徴とする請求項７に記載の分散ストレージ装置のファイル管理方法。
【請求項１０】
前記オリジナルのファイルを有するストレージ装置は、複数のクライアント装置から書き込み要求があった場合には、各書き込み要求を逐次処理し、各書き込み処理が終了するたびに前記クライアント装置へ応答を返すことを特徴とする請求項９に記載の分散ストレージ装置のファイル管理方法。
【請求項１１】
前記ストレージ装置にアクセスするクライアント装置を有し、
前記クライアント装置がストレージ装置に対してファイルの読み込みを要求したときに、このストレージ装置に前記要求されたファイルがない場合には、
前記ファイルに対応するＧＵＩＤに基づいて当該ストレージ装置のＧＵＩＤ管理データベースからオリジナルのファイルを有するストレージ装置を選択し、この選択したストレージ装置から前記要求されたファイルを読み込むことを特徴とする請求項２または請求項７に記載の分散ストレージ装置のファイル管理方法。
【請求項１２】
前記ストレージ装置にアクセスするクライアント装置を有し、
前記クライアント装置がストレージ装置に対してファイルの読み込みを要求したときに、このストレージ装置に前記要求されたファイルがない場合には、
このストレージ装置は、
前記ファイルに対応するＧＵＩＤに基づいて当該ストレージ装置のＧＵＩＤ管理データベースからオリジナルのファイルを有するストレージ装置を選択する処理と、
前記選択したストレージ装置に対して前記読み込み要求を転送し、要求されたファイルを読み込む処理と、
この読み込んだファイルを前記クライアントに送る処理と、
を含むことを特徴とする請求項２または請求項７に記載の分散ストレージ装置のファイル管理方法。
【請求項１３】
分散配置された複数のストレージ装置と、
各ストレージ装置間でファイルの複製を作成するレプリケーション手段とを備えた分散ストレージシステムにおいて、
前記ストレージ装置は、このストレージ装置で作成したファイルに分散ストレージシステム内で一意の識別子となるＧＵＩＤを付与するＧＵＩＤ付与手段と、
このストレージ装置に格納したファイルのＧＵＩＤとオリジナルのファイルを有するストレージ装置の装置ＩＤとの関連を格納するＧＵＩＤ管理データベースと、
クライアント装置からのファイルのアクセス要求に応じてファイルを検索するファイル検索手段と、
前記要求されたファイルが当該ストレージ装置に無い場合には、前記ＧＵＩＤ管理データベースから前記ファイルのＧＵＩＤに基づいてオリジナルのファイルを有するストレージ装置の装置ＩＤを検索する基準ストレージ装置検索手段と、
前記装置ＩＤのストレージ装置に前記ファイルのアクセスを要求し、このファイルにアクセスする手段と、
を備えたことを特徴とする分散ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して記憶装置を分散して配置し、各記憶装置に格納されたファイルを共有する分散ストレージシステムの改良に関する。
【背景技術】
【０００２】
クライアント／サーバ型の分散ストレージシステム（または装置）としては、Andrew File System（以下、ＡＦＳという）が知られている（非特許文献１）。
【０００３】
これは、各ファイルにロケーションフィールドを備えた識別子を付加し、このファイルの位置をロケーションフィールドの情報により取得して、目的とするファイルにアクセスするものである。このため、ロケーションフィールドを管理するロケーションデータベースを任意のネットワーク上に設置しておき、クライアントはファイルにアクセスする際に、まず、識別子に含まれたロケーションフィールドについてロケーションデータベースへ問い合わせを行い、ロケーションデータベースが回答した位置に対してアクセスを行っている。
【０００４】
そして、一回アクセスされたファイルは、ストレージ装置やキャッシュサーバなどにキャッシュされ、次回からのアクセス速度を向上させている。
【非特許文献１】「最前線UNIXのカーネル」  ユーレッシュ・ヴァハリア著、徳田英幸、中村明、戸部義人、津田悦幸  訳、株式会社ピアソン・エデュケーション、２０００年５月１５日発行、第３７１頁〜３７８頁、（原著  UNIX Internals:The New Frontiers by Uresh Vahalia pubkished by Prentice Hall,Inc. 1996）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来例では、ローカルのストレージ装置にファイルがある場合には、迅速にファイルの読み書きを行うことができるが、ローカルのストレージ装置にファイルがない場合には、ロケーションデータベースへ問い合わせを行い、ロケーションデータベースからの回答を待って、目的のストレージ装置にリモートアクセスすることになり、このリモートアクセスを迅速に行うことができないという問題があった。
【０００６】
また、リモートアクセスによりキャッシュへアクセスする場合には、データの整合性を確保するために排他制御を必要としているため、可用性が低下するという問題がある。例えば同一のファイルに対して複数の書き込み要求があったときには、最先のクライアントの書き込み要求を受け付けて、後の書き込み要求を拒否することになる。
【０００７】
さらに、基準となるストレージ装置のオリジナルのデータを、リモートにある他のストレージ装置に複写するレプリケーションを行う場合、レプリケーションの完了までには時間を要し、レプリケーションが完了する以前に複写先のストレージ装置にアクセスが発生すると、ファイルの複製（レプリカ）が完成していないため、アクセス要求がエラーとなってしまい、信頼性が低下するという問題があった。
【０００８】
そこで本発明は、上記問題点に鑑みてなされたもので、レプリケーション中であっても整合性を保ちながらファイルのアクセスを可能にすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、分散配置された複数のストレージ装置間でファイルの複製を作成するレプリケーション手段とを備え、前記ストレージ装置は、このストレージ装置で作成したファイルに分散ストレージシステム内で一意の識別子となるＧＵＩＤを付与するＧＵＩＤ付与手段と、このストレージ装置に格納したファイルのＧＵＩＤとオリジナルのファイルを有するストレージ装置の装置ＩＤとの関連を格納するＧＵＩＤ管理データベースと、クライアント装置からのファイルのアクセス要求に応じてファイルを検索するファイル検索手段と、前記要求されたファイルが当該ストレージ装置に無い場合には、前記ＧＵＩＤ管理データベースから前記ファイルのＧＵＩＤに基づいてオリジナルのファイルを有するストレージ装置の装置ＩＤを検索し、このストレージ装置から要求されたファイルにアクセスする。
【発明の効果】
【００１０】
したがって、本発明は、ストレージ装置間でレプリケーションが行われているとき、ストレージ装置に複製が作成される以前にクライアント装置からアクセスがあったときには、ファイルに付加される一意の識別子であるＧＵＩＤに基づいてオリジナルのファイルを有するストレージ装置を検索し、このストレージ装置のオリジナルのファイルにアクセスすることで、確実にクライアント装置からの要求に応えることができ、レプリケーションを行う分散ストレージシステムの信頼性を向上することができる。また、クライアント装置はオリジナルのファイルにアクセス可能となるので、ファイルの整合性を保証できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１２】
図１は、本発明を適用する分散ストレージシステムの構成図である。この図１では、２つのストレージ装置♯０、♯１とＮＩＳサーバ（Network Infomation Server）１がネットワーク１０を介して接続され、分散ストレージシステムを構築した例を示している。なお、ネットワーク１０はインターネット、ＷＡＮ、ＬＡＮなどを示す。
【００１３】
ストレージ装置♯０は、データとしてのファイルを格納するディスク１４と、ディスク１４に格納されるファイルに付与するＧＵＩＤ（Globally Unique IDentifier）の情報を管理するＧＵＩＤ管理データベース（以下、ＧＵＩＤ管理ＤＢという）１３を備える。ＧＵＩＤ管理ＤＢ１３はディスク１４に格納されても良いし、ストレージ装置♯０の他のディスク（図示省略）に格納されても良い。
【００１４】
なお、ファイルに付加されるＧＵＩＤは、この分散ストレージシステム上でファイルを一意に識別するための識別子であり、後述するように、例えば、番号などで構成される。
【００１５】
これら、ＧＵＩＤ管理ＤＢ１３、ディスク１４は、ＣＰＵ（図示省略）やメモリ、Ｉ／Ｏなどを含む制御部１２によって、ネットワーク１０やクライアント装置との間で読み書きの制御が行う。また、制御部１２には、後述する書き込み要求の際に使用するバッファ１６を備える。
【００１６】
さらに、制御部１２には、ディスク１４または制御部１２自身の処理負荷を測定する負荷検出装置１５が設けられ、レプリケーションを実行する際には負荷検出装置１５が検出した負荷を判定し、検出した負荷が所定値以下のときなどにレプリケーションを実行する。
【００１７】
また、ストレージ装置♯０にはＣＰＵやメモリ、コンソールなど（図示省略）を含むクライアント装置♯１０が接続され、クライアント装置♯１０からはストレージ装置♯０をローカルなストレージとして利用することができる。なお、図中ストレージ装置♯０がネットワーク１０に接続されている例を示したが、クライアント装置１０またはストレージ装置♯０の少なくとも一方がネットワーク１０に接続されていればよい。
【００１８】
ネットワーク１０に接続されたストレージ装置♯１も、上記ストレージ装置♯０と同様に構成され、ファイルを格納するストレージ２４、ファイルに付与するＧＵＩＤの情報を管理するＧＵＩＤ管理ＤＢ２３、制御部２２、バッファ２６、負荷検出装置２５から構成され、また、ストレージ装置♯１にはＣＰＵやメモリ、コンソールなど（図示省略）を含むクライアント装置♯１１が接続され、クライアント装置♯１１からはストレージ装置♯１をローカルなストレージとして利用することができる。
【００１９】
このストレージ装置♯１も、上記ストレージ装置♯０と同様に、ネットワーク１０またはクライアント装置♯１１からのアクセスに応じてストレージ２４やＧＵＩＤ管理ＤＢ２３との間で読み書きを行う。
【００２０】
そして、ストレージ装置♯０とストレージ装置♯１は、クライアント装置♯１０、♯１１からのローカルまたはネットワーク１０を介したリモートのアクセスに応じてディスク１４、２４の読み書きを行う。そして、ストレージ装置♯０または♯１の負荷が低いときには、各ストレージ装置♯０、♯１が格納しているオリジナルのファイルを他方のストレージ装置に複写するレプリケーションを実行する。
【００２１】
ネットワーク１０には、ＧＵＩＤとストレージ装置♯０、♯１を管理するＮＩＳサーバ１が接続される。なお、ＮＩＳサーバは必ずしもサーバとして独立している必要はなく、ストレージ装置内またはネットワーク装置内にその機能を持たせても良い。
【００２２】
ＮＩＳサーバ１は、ＣＰＵやメモリ、コンソールなど（図示省略）からなる構成された制御部２と、ＧＵＩＤの割当状況を管理するＧＵＩＤ割当データベース（以下、ＧＵＩＤ割当ＤＢという）３から構成される。
【００２３】
ＮＩＳサーバ１は、ネットワーク１０上に接続され、かつ、分散ストレージシステムを構成するストレージ装置の登録、管理を行うとともに、各ストレージ装置♯０、♯１が格納するファイルに付与するＧＵＩＤの割り当てを行うものである。
【００２４】
なお、図１においては、ストレージ装置♯０、♯１がシステム管理者などによって、ＮＩＳサーバ１に登録された状態を示している。
【００２５】
次に、図２、図３を参照しながらＧＵＩＤとファイル及びストレージ装置の関係を説明する。
【００２６】
図２は、ストレージ装置♯０のディスク１４に、ファイルＡ、Ｂが既に格納されており、新たにファイルＣを作成する状態を示している。また、ストレージ装置♯１のディスク２４にファイルＤ、Ｅ、Ｆを既に格納した状態を示している。
【００２７】
ストレージ装置♯０、♯１は、格納するファイルを分散ストレージシステム上で一意に特定するため、ＮＩＳサーバ１から割り当てられたＧＵＩＤを各ファイルに付加している。例えば、ストレージ装置♯０のファイルＡにはＧＵＩＤ＝１０００１が、ファイルＢにはＧＵＩＤ＝１０００２が付加され、同様にストレージ装置♯１のファイルＤ〜Ｆには、ＧＵＩＤ＝２０００１〜２０００３が付加されている。
【００２８】
これらＧＵＩＤは、ＮＩＳサーバ１が予め設定したブロック単位で各ストレージ装置に割り当てるもので、各ストレージ装置は、ローカルのＧＵＩＤ管理ＤＢ１３、２３に格納されたＧＵＩＤのうち未使用のＧＵＩＤが不足すると、ＮＩＳサーバ１に対してＧＵＩＤの割り当てを要求する。
【００２９】
要求を受けたＮＩＳサーバ１は、未使用のＧＵＩＤをブロック単位でストレージ装置に付与し、ＮＩＳサーバ１のＧＵＩＤ割当ＤＢ３を更新した後、分散ストレージシステムを構成するストレージ装置♯０、♯１に対して、ＧＵＩＤブロックを割り当てたストレージ装置番号（または装置ＩＤ）をブロードキャストする。なお、ＧＵＩＤのブロックは、予め設定した範囲で連続した識別子の一群を意味し、例えば、図示のように、連続した１００００の番号をひとつのブロックとして扱う。
【００３０】
各ストレージ装置♯０、♯１は、ＮＩＳサーバ１からブロードキャストされたＧＵＩＤブロックとストレージ装置番号を、各ＧＵＩＤ管理ＤＢ１３、２３に格納する。これにより、各ストレージ装置は、アクセス要求があったときに、ファイルに対応するＧＵＩＤから、どのストレージ装置にオリジナルのファイルがあるかを特定することができる。
【００３１】
今、図２において、ストレージ装置♯０が新たなファイルＣを作成し、既に割り当てられたＧＵＩＤブロック（１０００１〜２００００）を使用してしまった場合、ストレージ装置♯０はＧＵＩＤのブロック割当をＮＩＳサーバ１に要求する（図中Ｓ１）。
【００３２】
要求を受けた、ＮＩＳサーバ１は、ＧＵＩＤ割当ＤＢ３を調べ、一つ目のブロック１０００１〜２００００がストレージ装置♯０に、２つ目のブロック２０００１〜３００００がストレージ装置♯１に割り当てられているので、未使用である３つめのＧＵＩＤブロック３０００１〜４００００をストレージ装置♯０に割り当て、通知する（図中Ｓ２）。
【００３３】
通知を受けたストレージ装置♯０は、新たなファイルＣに対して未使用且つ最小のＧＵＩＤ＝３０００１を付加する。
【００３４】
なお、未使用ＧＵＩＤが枯渇する前に少なくなった時点で予め新しいＧＵＩＤブロックの割当てを要求してもよい。またファイルに付加するＧＵＩＤは未使用なものであれば、必ずしも最小でなくとも良い。
【００３５】
次に、ＮＩＳサーバ１は、図３に示すように、ＧＵＩＤ割当ＤＢ３に対して、新たに割り当てたＧＵＩＤブロック３０００１〜４００００に対応するストレージ装置番号に♯０を登録する（図中Ｓ３）。
【００３６】
次に、ＮＩＳサーバ１は、分散ストレージシステムに所属する全てのストレージ装置（ここでは♯０、♯１）に対して、更新したＧＵＩＤ割当ＤＢ３の情報（割り当てたＧＵＩＤブロックと要求したストレージ装置番号の組み）をブロードキャストする（図中Ｓ４）。
【００３７】
ＮＩＳサーバ１からＧＵＩＤ割当ＤＢの更新情報を受信した各ストレージ装置♯０、♯１は、ローカルのＧＵＩＤ管理ＤＢ１３、２３を更新し、ＧＵＩＤブロック３０００１〜４００００がストレージ装置♯０に割り当てられたことを登録する（図中Ｓ５）。
【００３８】
このＧＵＩＤブロックの割り当てを時系列で見ると、図４のようになり、ストレージ装置♯０がＧＵＩＤブロックを要求すると、ＮＩＳサーバ１はＳ２で通知を行うため、図中Ｓ６でストレージ装置♯０は新たなファイルＣにＧＵＩＤを付加することができる。
【００３９】
その後、ＮＩＳサーバ１は全てのストレージ装置に対して更新した情報をブロードキャストするので、図中Ｓ５以降では、全てのストレージ装置のＧＵＩＤ管理ＤＢ１３、２３は同一の内容となる。このため、クライアント装置♯１０または♯１１がストレージ装置に対してアクセス要求をすると、どのストレージ装置に対するアクセス要求も同一のストレージ装置の内容を伝えるため、データの整合性を確保できるのである。
【００４０】
以上のように、ＧＵＩＤ管理ＤＢ１３、２３とＧＵＩＤ割当ＤＢ３のＧＵＩＤブロックとストレージ装置番号（装置ＩＤ）により、ストレージ装置♯０、♯１内のファイルは、ＧＵＩＤによりオリジナルのファイルを格納しているストレージ装置番号を一意に特定することができ、どのストレージ装置からもファイルのロケーションを迅速に問い合わせることが可能となるのである。
【００４１】
そして、ファイルを作成したときに付与するＧＵＩＤは、管理サーバ１から各ストレージ装置♯０、♯１に対してブロードキャストされ、各ストレージ装置のＧＵＩＤ管理ＤＢ１３、２３に記録されるため、分散ストレージシステム内にはオリジナルファイルは一つであり、各ＧＵＩＤ管理ＤＢ１３、２３は、ＧＵＩＤに基づいてオリジナルのファイルを有するストレージ装置の装置ＩＤを示すものである。
【００４２】
なお、ＧＵＩＤブロックを要求したストレージ装置に対しては、割り当ての通知（Ｓ２）とブロードキャスト（Ｓ４）で、同一の内容の情報が２回（Ｓ２、Ｓ４）通知されることになるが、ＧＵＩＤ管理ＤＢの更新はどちらか一方の通知に基づいて行えばよい。
【００４３】
また、ＮＩＳサーバ１及びストレージ装置♯０、♯１のＧＵＩＤ割当ＤＢ３及びＧＵＩＤ管理ＤＢ１３、２３は、ストレージ装置番号とＧＵＩＤブロックを対応付けて管理する例を示したが、図５で示すように、ストレージ装置番号とネットワークアドレスなどの位置情報を示すストレージ識別子を併用しても良く、あるいは、ＧＵＩＤブロックとストレージ識別子で管理を行っても良い。
【００４４】
次に、分散ストレージシステムのレプリケーションについて図６を参照しながら説明する。
【００４５】
図６は、ストレージ装置♯０のオリジナルのファイルＡ、Ｂ、Ｃのレプリカ（複製）をストレージ装置♯１に作成する一例を示す。
【００４６】
ストレージ装置♯０は、負荷検出装置１５が検出した負荷が予め設定した値以下の低負荷時（例えば、深夜などアクセスの少ない状態）であれば、ディスク１４内のファイルのうちオリジナルのファイルＡ〜Ｃについて他のストレージ装置♯１にレプリカを作成するレプリケーションを実行し、耐障害性を向上させる。なお、レプリケーションの実行は、オリジナルファイルを持つ基準ストレージ装置と、レプリカを格納するストレージ装置♯１の負荷が共に低いことが望ましい。なお、負荷検出装置１５が検出する負荷は、例えば、制御部１２のＣＰＵの使用率、ディスク１４の稼働量（単位時間当たりのRead／Writeバイト数）等を検出すればよい。
【００４７】
ここで、基準ストレージ装置とは、オリジナルのファイルを格納しているストレージ装置を示し、ＧＵＩＤ管理ＤＢ１３、２３またはＧＵＩＤ割当ＤＢ３のＧＵＩＤブロックとストレージ装置番号の組みが基準ストレージ装置を示している。例えば、ＧＵＩＤが１０００１〜２００００のファイルであれば、ストレージ装置♯０が基準ストレージ装置であり、ＧＵＩＤが２０００１〜３００００のファイルであれば、ストレージ装置♯１が基準ストレージ装置となる。
【００４８】
レプリケーションは、ＧＵＩＤ管理ＤＢ１３を参照して、ストレージ装置番号が自らの番号と一致するＧＵＩＤを持つファイルを、他のストレージ装置に複製することで行われる。
【００４９】
したがって、ストレージ装置♯０のレプリケーションは、ＧＵＩＤブロック１０００１〜２００００の範囲にあるファイルＡ、Ｂと、ＧＵＩＤブロック３０００１〜４００００の範囲にあるファイルＣを、ストレージ装置♯１に複製することで行われる。
【００５０】
ストレージ装置♯１のディスク２４には、ファイルＡ〜Ｃの複製Ａ’〜Ｃ’が作成される。ストレージ装置♯１に複製されたファイルＡ’〜Ｃ’は説明のために「’」を付しただけであり、実際はファイルＡ〜Ｃと同一であって、ＧＵＩＤもストレージ装置♯０のファイルＡ〜Ｃと同一である。
【００５１】
次に、レプリケーションは開始から完了まで時間を要するため、図７のように、ストレージ装置♯０からストレージ装置♯１へレプリケーションを行っている期間で、図中波線で示すファイルＣのレプリカがまだ完了していないとき、クライアント装置♯１１がローカルのストレージ装置♯１に対してＧＵＩＤ＝３０００１のファイルＣに対して読み込み（READ）要求を行う場合がある。
【００５２】
この場合、ストレージ装置♯１は次のような制御を行う。
【００５３】
図７において、クライアント装置♯１１からのファイルＣへのアクセス要求から、ストレージ装置♯１は、ファイルＣ（図中波線）のレプリカがローカルのディスク２４にまだ作成されていないことが分かる。ストレージ装置♯１は、ＧＵＩＤ管理ＤＢ２３からＧＵＩＤ３０００１のファイルＣの基準ストレージ装置が何れであるかを検索し、ストレージ装置♯０であることを判定する。
【００５４】
ストレージ装置♯１は、基準ストレージ装置であるストレージ装置♯０に対してＧＵＩＤ＝３０００１のファイルＣの読み込みを要求する。ストレージ装置♯１は、ストレージ装置♯０からオリジナルのファイルＣを転送し、クライアント装置♯１１に送信する。
【００５５】
こうして、分散ストレージシステムのレプリケーションでは、ネットワーク１０等を介して位置的に異なるストレージ装置へレプリカを作成する際、全てのレプリカが完成するまでには遅延が発生するが、まだレプリカが作成されていないファイルにアクセス要求があったときには、オリジナルのファイルを格納した基準ストレージ装置へアクセス要求を転送し、基準ストレージ装置から読み出すことにより、レプリカの完成、未完成に係わらず、分散ストレージシステム上では必ず目的のファイルを読み出すことになって、データの整合性を確保できる。特に、頻繁にレプリケーションを行う場合であっても、クライアント装置♯１０やクライアント装置♯１１からアクセス要求があったとき、要求されたファイルが作成されていなければ、ＧＵＩＤにより一意で決まる基準ストレージ装置に対してアクセスが行われるので、レプリケーションによる遅延の影響を受けることなくファイルの読み出しを保証することができるのである。
【００５６】
上記図７で示した読み出し要求に対するストレージ装置♯１の制御の一例を図８に示す。この図８は、クライアント装置♯１０または♯１１からのコマンドを受けたときに、ストレージ装置♯１の制御部２２で実行されるフローチャートを示す。
【００５７】
まず、Ｓ１１では要求されたコマンドがＲＥＡＤ（読み出し）要求コマンドであるかを判定し、ＲＥＡＤコマンドであれば、Ｓ１２へ進んでＲＥＡＤコマンドで要求されたファイルがディスク２４にあるか否かを判定する。
【００５８】
要求されたファイルがディスク２４にある場合には、Ｓ２０に進んで、ディスク２４のファイルを要求先のクライアント装置に送信する。図７の例では、ファイルＣ以外の読み出し要求の場合、ファイルＡ’、Ｂ’、Ｄ〜Ｆが読み出される。
【００５９】
一方、上記Ｓ１２の判定で、ディスク２４には要求されたファイルがない場合、Ｓ１３に進んで、要求されたファイルのＧＵＩＤに基づいてＧＵＩＤ管理ＤＢ２３を検索し、基準ストレージ装置を読み込む。
【００６０】
Ｓ１４では、要求されたファイルの基準ストレージ装置の有無を判定し、基準ストレージ装置が見つからない場合には、Ｓ２１に進んで要求先のクライアント装置に対してエラーを通知する。一方、基準ストレージ装置が見つかった場合には、Ｓ１５に進んで、クライアント装置からのＲＥＡＤコマンドを基準ストレージ装置（図７の例ではストレージ装置♯０）へファイルＣの読み出し要求を転送する。
【００６１】
Ｓ１６では、ストレージ装置♯１は、基準ストレージ装置であるストレージ装置♯０から要求されたファイルＣをリモートで読み出し、要求先のクライアント装置（クライアント装置♯１１）に送信する。
【００６２】
以上の読み出し制御により、ストレージ装置♯１は、クライアント装置からファイルの読み出し要求があると、ローカルのディスク２４にファイルがあれば、このディスク２４のファイルをクライアント装置に送信するが、ディスク２４にファイルが無い、または作成途中の場合では、要求されたファイルのＧＵＩＤから、そのファイルの基準ストレージ装置を検索し、読み出し要求を基準ストレージ装置に送り、リモートアクセスにより要求されたファイルを読み出してクライアント装置へ送信する。
【００６３】
これにより、クライアント装置は、レプリケーション中の遅延の影響を受けることがなくなって、迅速にファイルを読むことができ、レプリケーションを行う分散ストレージシステムのデータのアクセスを保証することができ、システムの信頼性を向上させるのである。
【００６４】
さらに、クライアント装置♯１０、♯１１は、ストレージ装置♯０、♯１に対して読み出し要求を行うだけであって、オリジナルのファイルがどこにあるかを認識する必要がなく、常に任意のストレージ装置に対してアクセスするだけで、分散ストレージシステム上のデータを取得することができ、クライアント装置からのアクセス性を向上することができる。
【００６５】
なお、上記ではストレージ装置♯１に対してクライアント装置♯１１が読み出し要求を行った場合について説明したが、ストレージ装置♯０に対してクライアント装置♯１０や♯１１が読み出し要求を行った場合も上記と同様である。
【００６６】
また、上記ではクライアント装置♯１１からの読み出し要求を、ストレージ装置♯１がオリジナルのファイルを持つストレージ装置♯０に転送し、ストレージ装置♯１がこれを読み込んでクライアント装置♯１１に送信する例を示したが、ストレージ装置♯１がクライアント装置♯１１に基準ストレージ装置の位置を教え、クライアント装置♯１１が基準ストレージ装置にアクセスするようにしても良い。
【００６７】
次に、クライアント装置♯１０、♯１１が同時に同一のファイルに対してＷＲＩＴＥ（書き込み）要求を行った場合について、図９、図１０を参照しながら説明する。
【００６８】
クライアント装置♯１０とクライアント装置♯１１は、同時にファイルＡに対する書き込み要求を発生し、クライアント装置♯１０はローカルのストレージ装置♯０に、クライアント装置♯１１はローカルのストレージ装置♯１にそれぞれ要求する。
【００６９】
まず、ストレージ装置♯０では、クライアント装置♯１０からの書き込み要求（Ｓ１０１）からファイルＡの基準ストレージ装置をＧＵＩＤに基づいてＧＵＩＤ管理ＤＢ１３から検索する。ファイルＡの基準ストレージ装置はストレージ装置♯０であるため、ストレージ装置♯０はクライアント装置♯１０の要求を受け付け、制御部１２のバッファ１６にクライアント装置♯１０が送った新たなファイルＡの内容を書き込む（Ｓ１０２）。バッファ１６への書き込みが終了すると、ストレージ装置♯０はクライアント装置♯１０に書き込み完了の通知を送信する（Ｓ１０３）。
【００７０】
一方、クライアント装置♯１１がストレージ装置♯１に要求したファイルＡの書き込みは、ストレージ装置♯０に転送される。ストレージ装置♯１には、ファイルＡのレプリカＡ’が格納されているだけなので、レプリカに対する書き込みを禁止する。このため、ストレージ装置♯１は、要求されたファイルＡのＧＵＩＤに基づいて、ＧＵＩＤ管理ＤＢ２３からファイルＡのオリジナルを持つ基準ストレージ装置を検索する。検索の結果、基準ストレージ装置がストレージ装置♯０であることが解ると、ストレージ装置♯１はストレージ装置♯０に対してリモートアクセスによりファイルＡの書き込みを要求する（Ｓ２０２）。
【００７１】
ストレージ装置♯０は、クライアント装置♯１０からのバッファ１６への書き込みが終了すると、ストレージ装置♯１からの書き込み要求を受け付け、ストレージ装置♯１はクライアント装置♯１１が要求したファイルＡの内容をストレージ装置♯０のバッファ１６に書き込む（Ｓ２０３）。
【００７２】
ストレージ装置♯０は、クライアント装置♯１１からのリモートアクセスによる書き込みが終了すると、ストレージ装置♯１に対して、書き込み完了の応答を送信する（Ｓ２０４）。ストレージ装置♯１はこの応答を受信すると、クライアント装置♯１１に対して書き込み完了の通知を送信する（Ｓ２０５）。すなわち、クライアント装置に対しては、バッファ１６への書き込みが完了した時点で完了の通知が送信される。
【００７３】
次に、ストレージ装置♯０は、バッファ１６に書き込まれたファイルＡの内容で、逐次ディスク１４に書き込みを行う。つまり、最初に書き込み要求を受け付けたクライアント装置♯１０の内容をファイルＡに書き込んで更新し（Ｓ１０４）、次に要求を受け付けたクライアント装置♯１１の内容をファイルＡに書き込んで更新する（Ｓ２０６）。
【００７４】
こうして、書き込み要求に関しては、必ずオリジナルのファイルのファイルに対して処理を行うことで、分散して格納されたレプリカの整合性がとれなく無くなるのを防ぐことができ、ファイルの整合性を保証できる。
【００７５】
さらに、書き込み要求の処理は、要求を受け付けた順で、書き込むファイルＡの内容をバッファ１６に蓄積し、その後、バッファ１６の内容でディスク１４に書き込むようにしたため、書き込み順序の整合性を確保することができる。特に、ネットワーク１０がインターネットで構成される場合は、データ（パケット）の到着順が要求の順序と一致しない場合も生じる。このため、一旦、ストレージ装置♯０の制御部１２に設けたバッファ１６に要求の受け付け順で、書き込む内容を蓄積し、バッファ１６の書き込みが完了してからディスク１４への書き込みを逐次行うので、ファイルの書き込み順序の整合性を保証できるのである。
【００７６】
なお、リモートアクセスによる書き込みとなるクライアント装置♯１１では、完了の通知を受信するまでは、次の書き込み要求の送信を禁止するのが望ましい。つまり、上述のように、ネットワーク１０がインターネットで構成される場合では、後の要求のパケットが、先の要求のパケットよりも先にストレージ装置♯０に到着する場合があるので、書き込み完了まで待ってから次の書き込み要求を送信することで、書き込み順序の不整合を防止できるのである。
【００７７】
図１１は第２の実施形態を示し、前記第１実施形態のストレージ装置が、一つの分散ストレージシステムの中で一つのグループを構成していたのに対し、この第２実施形態では、一つの分散ストレージシステムの中に複数のグループを設け、各グループの中でアクセス及びレプリケーションを行うようにしたものである。
【００７８】
図１１は、前記第１実施形態の図２に、ディスク３４よＧＵＩＤ管理ＤＢ３３を備えたストレージ装置♯２を加えるとともに、ＮＩＳサーバ１にはＧＵＩＤ割当ＤＢ３に加えてグループ管理データベース（以下グループ管理ＤＢ）３０を加えたもので、その他の構成は前記第１実施形態に準ずる。
【００７９】
この分散ストレージシステムにおいては、ＮＩＳサーバ１が管理するストレージ装置を２つのグループＡとＢに分け、各グループの中で相互にアクセスするものであり、他のグループへのアクセスは禁止される。
【００８０】
このため、ＮＩＳサーバ１には、グループＡとグループＢに所属するストレージ装置を管理するためのグループ管理ＤＢ３０を備える。グループ管理ＤＢ３０は、システム管理者等によって予め各グループに所属するストレージ装置番号（またはストレージ識別子）が設定されており、例えば、グループＡにはストレージ装置♯０と♯１が属し、グループＢにはストレージ装置♯２が所属するように設定されている。
【００８１】
一方、ＧＵＩＤ割当ＤＢ３が各ストレージ装置に割り当てるＧＵＩＤは、分散ストレージシステム全体で一意の識別子となるよう、グループに関係なく、ストレージ装置毎にＧＵＩＤブロックが割り当てられている。ストレージ装置♯０、ストレージ装置♯２には前記第１実施形態と同様に、１０００１〜４００００のＧＵＩＤブロックが割り当てられ、ストレージ装置♯２には、４０００１〜６００００のＧＵＩＤブロックが割り当てられている。グループに拘わらず、ＧＵＩＤをシステム全体で一意の識別子とすることで、ストレージ装置のグループを変更した場合に、ＧＵＩＤが重複するのを防止することができる。
【００８２】
今、ストレージ装置♯０がＧＵＩＤブロックの割り当てをＮＩＳサーバ１に要求すると（Ｓ３０１）、ＮＩＳサーバ１は前記第１実施形態と同様に、未使用のＧＵＩＤブロックをストレージ装置♯０に割り当てる。
【００８３】
その後、ＮＩＳサーバ１は、新たなＧＵＩＤブロックに対応するストレージ装置番号をＧＵＩＤ割当ＤＢ３に登録して更新し、この更新の内容をストレージ装置♯０が所属するグループＡのみにブロードキャストする（Ｓ３０３）。
【００８４】
つまり、ＮＩＳサーバ１はグループ管理ＤＢ３０を参照し、ストレージ装置♯０が所属するグループＡのストレージ装置♯０、♯１のみに更新内容を通知し、グループＡの各ストレージ装置♯０、♯１は、ブロードキャストされた更新内容を各ＧＵＩＤ管理ＤＢ１３、２３に登録する。
【００８５】
これは、異なるグループ間でのアクセスは行わないため、グループＢのストレージ装置は、グループＡの基準ストレージ装置を指し示すＧＵＩＤを知る必要がないためである。
【００８６】
次に、アクセス制御について、図１２を参照しながら説明する。
【００８７】
まず、クライアント装置♯１０がストレージ装置♯１のファイルＦを読み込む場合は、まず、ローカルに接続されたストレージ装置♯０にファイルＦの読み出し（ＲＥＡＤ）要求を送信する。ストレージ装置♯０はディスク１４にファイルＦが無いため、読み出し要求に含まれるファイルＦのＧＵＩＤからＧＵＩＤ管理ＤＢ１３を検索し、ファイルＦの基準ストレージ装置であるストレージ装置♯１を見つける。
【００８８】
次に、ストレージ装置♯０は、ストレージ装置♯１に対してファイルＦの読み出し要求を転送する（Ｓ３１２）。ストレージ装置♯１はファイルＦを読み出してストレージ装置♯０にデータを転送する（Ｓ３１３）。最後にストレージ装置♯０は、ストレージ装置♯１から受信したファイルＦのデータをクライアント装置♯１０に送信して処理を終了する。
【００８９】
こうして、同一グループ内では、前記第１実施形態と同様にして、ストレージ装置のローカルのディスクにデータが無い場合には、ＧＵＩＤに基づいて検索した基準ストレージ装置に問い合わせ、目的のファイルを読み出すのである。
【００９０】
一方、異なるグループ間では、次のようになる。
【００９１】
図１２において、クライアント装置♯１１がローカルのストレージ装置♯２に対してグループＡのファイルＦ（ＧＵＩＤ＝２０００３）の読み出し要求を行った場合（Ｓ３２１）、ストレージ装置♯２はローカルのディスク３４にファイルＦがないので、ファイルＦのＧＵＩＤに基づいてＧＵＩＤ管理ＤＢ３３を検索する。
【００９２】
しかし、ＧＵＩＤ管理ＤＢ３３には、グループＡに関する情報はないため、基準ストレージ装置が見つからない。この結果、ストレージ装置♯２はクライアント装置♯１１に対してエラーが生じたことを通知する（Ｓ３２２）。
【００９３】
こうして、異なるグループ間では、各ストレージ装置のＧＵＩＤ管理ＤＢに情報が登録されていないため、どのストレージ装置にアクセスするべきかを決定できず、相互のアクセスは禁止されるのである。
【００９４】
これにより、同一の分散ストレージシステム内に、複数のグループを設けることで各グループ間のセキュリティを確保しながら、レプリケーションによって耐障害性を高めることが可能となる。
【００９５】
なお、ＮＩＳサーバ１のグループ管理ＤＢ３０は、グループ名（グループ識別子）とストレージ装置番号とを対応付けて管理する例を示したが、図１３で示すように、グループ名とストレージ装置のネットワークアドレスなどの位置情報を示すストレージＩＤによって管理しても良い。また、一つのストレージ装置を２つのグループに登録してもよく、例えば、ストレージ装置♯１をグループＡとグループＢに登録することで、２つのグループで一つのストレージ装置♯１を共有することもできる。
【００９６】
例えば、図１４で示すように、ＮＩＳサーバ１のコンソールで、ストレージ装置の識別子をＩＰアドレスとし、複数のグループに登録する場合は、図中Ｓ４０１の画面にてストレージ装置のＩＰアドレスを入力した後、Ｓ４０２で登録するグループ名（グループ識別子）に「Ａ」を入力し、Ｓ４０３では次に登録するグループ名として「Ｂ」を入力する。この結果、ＮＩＳサーバ１のグループ管理ＤＢ３０には、グループＡとＢにそれぞれこのストレージ装置を加えることができ、２つのグループでストレージ装置を共有することができる。
【００９７】
なお、レプリケーションは、各グループ内でそれぞれ実行され、前記第１実施形態と同様に負荷が低いときに行えばよい。グループＡでは、ストレージ装置♯０とストレージ装置♯１との間で、前記第１実施形態と同様に負荷が低いときに各オリジナルのファイルを他方へ複写する。図１１、図１２では説明を簡易にするためグループＢのストレージ装置を♯２のみとしたが、グループＢに複数のストレージ装置を設けて各ストレージ装置間でオリジナルのファイルを複写すればよい。
【００９８】
なお、上記実施形態では、ストレージ装置♯０、♯１とした例を示したが、各ストレージ装置を複数のストレージ装置で構成されたストレージノードやサイトに置き換えても良い。
【産業上の利用可能性】
【００９９】
以上のように、本発明に係る分散ストレージシステムでは、ローカルのストレージ装置にレプリケーションが完了していなくとも、ローカルのストレージ装置がオリジナルのファイルを有するストレージ装置からファイルを転送し、クライアント装置に読み出し可能とすることができるので、各ストレージ装置間のファイルの整合性を保証して可用性の高いサイトに適用することができる。
【図面の簡単な説明】
【０１００】
【図１】本発明の一実施形態を示すシステム構成図。
【図２】ＧＵＩＤの割り当ての様子を示す説明図。
【図３】ＧＵＩＤの更新をブロードキャストする様子を示す説明図。
【図４】同じくＧＵＩＤの割り当てと更新のブロードキャストの様子を示すタイムチャート。
【図５】ＧＵＩＤ割当データベースのデータの一例を示す説明図。
【図６】レプリケーションの様子を示す説明図。
【図７】レプリケーション中にクライアント装置から読み出し要求があった場合のデータの流れを示す説明図。
【図８】同じくストレージ装置で行われる読み出し処理の一例を示すフローチャート。
【図９】複数のクライアント装置から同時に書き込み要求があったときのデータの流れを示すタイムチャート。
【図１０】同じく、複数のクライアント装置から同時に書き込み要求があったときのデータの流れを示す説明図。
【図１１】第２の実施形態を示し、グループ単位でＧＵＩＤの割り当てと更新のブロードキャストを行う様子を示す説明図。
【図１２】グループ単位で読み出し処理を行う際の、データの流れを示す説明図。
【図１３】グループ管理データベースのデータの一例を示す説明図。
【図１４】ストレージ装置を複数のグループで共有する場合の登録の様子を示す説明図。
【符号の説明】
【０１０１】
１  ＮＩＳサーバ
３  ＧＵＩＤ割当データベース
１３、２３  ＧＵＩＤ管理データベース
３０  グループ管理データベース
♯０、♯１、♯２  ストレージ装置
♯１０、♯１１  クライアント装置
【図１】
2005050165.tif 000003
【図２】
2005050165.tif 000004
【図３】
2005050165.tif 000005
【図４】
2005050165.tif 000006
【図５】
2005050165.tif 000007
【図６】
2005050165.tif 000008
【図７】
2005050165.tif 000009
【図８】
2005050165.tif 000010
【図９】
2005050165.tif 000011
【図１０】
2005050165.tif 000012
【図１１】
2005050165.tif 000013
【図１２】
2005050165.tif 000014
【図１３】
2005050165.tif 000015
【図１４】
2005050165.tif 000016