(57)【要約】【課題】ファイル管理情報を持つことなく、クライアントからのファイルアクセス要求に対して高速に応答可能としながらも、故障などからの復旧処理が迅速に行なえるファイル管理手段を備えたファイル格納システムを提供する。【解決手段】ファイル管理手段は、ファイルの識別子を引数とするハッシュ値とストレージ数に基づくモデュロ演算により選択したストレージと、当該ストレージの番号を引数とする可逆平準化関数により選択したストレージにファイルを冗長格納する冗長格納管理手段と、復旧対象ストレージの番号と前記可逆平準化関数に基づいて、復旧対象ファイルが冗長格納されている複数の関連ストレージを選択し、選択した関連ストレージに格納されているファイルの識別子と冗長化数に基づいて修復ファイルを特定して復旧対象ストレージを修復するストレージ修復管理手段を備えている。【選択図】図１
2008181358.tif 000002
【特許請求の範囲】
【請求項１】
単一または複数のストレージを個別に管理する複数のストレージ管理手段と、クライアントからの要求に基づいて前記ストレージの何れかに対してファイルを読み書き制御するファイル管理手段がネットワーク接続されたファイル格納システムであって、
前記ファイル管理手段は、クライアントからのファイル格納要求に応答して、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージと、当該ストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージとを冗長格納する特定ストレージとして選択し、当該特定ストレージを管理するストレージ管理手段夫々に対してファイル単位で格納処理を実行させる冗長格納管理手段と、任意のストレージの復旧時に、復旧対象ストレージのストレージ番号と前記可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージに関連する複数の関連ストレージ番号を算出し、算出した関連ストレージ番号で識別される複数のストレージに格納されているファイルの識別子に基づいて修復ファイルを特定して復旧対象ストレージを修復するストレージ修復管理手段を備えているファイル格納システム。
【請求項２】
前記ストレージ修復管理手段は、前記関連ストレージ番号で識別される何れかのストレージに格納されているファイルの識別子と冗長化数に基づいて修復ファイルを特定する請求項１記載のファイル格納システム。
【請求項３】
前記ストレージ修復管理手段は、前記関連ストレージ番号で識別される何れかのストレージに格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージ、または、当該ストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージの何れかが復旧対象ストレージに該当するときに、当該ファイルを修復ファイルとして特定する請求項１記載のファイル格納システム。
【請求項４】
前記可逆平準化関数は、モデュロ演算により選択されるストレージを管理するストレージ管理手段以外のストレージ管理手段により管理されるストレージを選択するように設定されている請求項１から３の何れかに記載のファイル格納システム。
【請求項５】
前記ファイル管理手段は、ストレージの増設時に、前記ハッシュ値と増設後のストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージと、前記可逆平準化関数により求まるストレージ番号で識別されるストレージを新たな特定ストレージとして選択し、対応するファイルをコピーして冗長格納するとともに、増設前に格納されたファイルを削除する平準化処理手段を備えている請求項１から４の何れかに記載のファイル格納システム。
【請求項６】
単一または複数のストレージを個別に管理する複数のストレージ管理手段と、クライアントからの要求に基づいて前記ストレージの何れかに対してファイルを読み書き制御するファイル管理手段がネットワーク接続されたファイル格納システムであって、
前記ファイル管理手段は、クライアントからのファイル格納要求に応答して、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段と、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段とを冗長格納する特定ストレージ管理手段として選択するとともに、前記特定ストレージ管理手段の夫々に対して前記ハッシュ値と当該特定ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージを冗長格納する特定ストレージとして選択し、当該特定ストレージを管理する特定ストレージ管理手段夫々に対してファイル単位で格納処理を実行させる冗長格納管理手段と、任意のストレージの復旧時に、復旧対象ストレージを管理するストレージ管理手段のストレージ群番号と前記可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージを管理するストレージ管理手段に関連する複数の関連ストレージ群番号を算出し、算出した関連ストレージ群番号で識別される複数のストレージ管理手段に管理されるストレージに格納されているファイルの識別子に基づいて修復ファイルを特定して復旧対象ストレージを修復するストレージ修復管理手段を備えているファイル格納システム。
【請求項７】
前記ストレージ修復管理手段は、前記関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子及び冗長化数に基づいて修復ファイルを特定する請求項６記載のファイル格納システム。
【請求項８】
前記ストレージ修復管理手段は、前記関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段、または、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段の何れかが復旧対象ストレージを管理するストレージ管理手段に該当するときに、当該ファイルを修復ファイルの候補として選択する請求項６または７記載のファイル格納システム。
【請求項９】
前記ストレージ修復管理手段は、前記関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段、または、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段の何れかが復旧対象ストレージを管理するストレージ管理手段に該当し、前記ハッシュ値と当該ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージが復旧対象ストレージに該当するときに、当該ファイルを修復ファイルとして特定する請求項６記載のファイル格納システム。
【請求項１０】
前記ファイル管理手段は、ストレージ管理手段の増設時に、前記ハッシュ値と増設後のストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段と、前記可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段を新たな特定ストレージ管理手段として選択するとともに、前記特定ストレージ管理手段の夫々に対して前記ハッシュ値と当該特定ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージを冗長格納する特定ストレージとして選択し、対応するファイルをコピーして冗長格納するとともに、増設前に格納されたファイルを削除する平準化処理手段を備えている請求項６から９の何れかに記載のファイル格納システム。
【請求項１１】
前記平準化処理手段は、ファイルの識別子を管理してファイル単位で平準化処理する請求項５または１０記載のファイル格納システム。
【請求項１２】
前記冗長格納管理手段は、前記平準化処理手段による平準化処理が終了するまでの間、クライアントからのファイル読出し要求に応答して、増設前のストレージ数に基づく冗長格納処理で選択される特定ストレージと、増設後のストレージ数に基づく冗長格納処理で選択される特定ストレージの何れかを当該ファイルが格納されたストレージとして特定するように構成されている請求項５または１０記載のファイル格納システム。
【請求項１３】
前記ストレージ管理手段は、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値に基づいて複数のディレクトリを生成するとともに、個別のハッシュ値に基づいて対応するファイルを何れかのディレクトリの配下に格納する請求項１から１２の何れかに記載のファイル格納システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一または複数のストレージを個別に管理する複数のストレージ管理手段と、クライアントからの要求に基づいて前記ストレージの何れかに対してファイルを読み書き制御するファイル管理手段がネットワーク接続されたファイル格納システムに関する。
【背景技術】
【０００２】
近年、計算機システムと情報を格納するストレージシステムを分離し、ストレージをネットワークに接続して複数の計算機システムで共有するネットワークストレージが提案されている。このようなネットワークストレージの例として、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）で接続されてブロックアクセスを提供するＳＡＮストレージや、ＩＰネットワークで接続されてファイルアクセスを提供するＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ)、ＨＴＴＰプロトコルでのアクセス形態を提供するＷｅｂストレージなど、種々のネットワークストレージが実現されている。
【０００３】
特許文献１には、複数台のＮＡＳを用いる構成において、ある情報データへのアクセスが集中するようなネットワーク負荷の増大時でも性能を維持し、障害発生時の可用性を確保できるネットワーク型記憶装置として、ネットワークと、該ネットワークに接続され磁気ディスクを用いた複数のストレージ装置と、ネットワークに接続されたクライアントシステムと、該クライアントシステムに対して提供するファイルデータとそれを制御するための管理データを上記ストレージ装置に格納し、該管理データを用いて前記クライアントシステムにファイルアクセス機能を提供する手段を有し、前記管理データと上記ファイルデータが異なった冗長性をもって前記複数のストレージ装置に分散格納されていることを特徴とするネットワーク型記憶装置が提案されている。
【０００４】
しかし、特許文献１に記載されたネットワーク型記憶装置では、取り扱うファイルデータの増加に伴い必然的に管理データも増加し、該ネットワーク型記憶装置のストレージ等の記憶資源が消費されることになり、さらに、ファイルアクセス時に参照する管理データの容量が増加すれば、ファイルアクセス時の処理速度にも悪影響を与え、処理速度の低下を招くこととなる。
【０００５】
そこで、特許文献２には、システム管理コストを抑制するために、複数のネットワークストレージを計算機システムからは仮想的に一つに見せ、新たな装置の追加を行なってもシステム全体に影響が及ばないようにするストレージの仮想化技術として、複数のネットワークストレージ装置を備え、該複数のネットワークストレージ装置の少なくとも一つにネットワーク経由で結合するクライアントからのアクセス要求を処理するネットワークストレージシステムにおいて、前記複数のネットワークストレージ装置は、前記アクセス要求の対象であるオブジェクトの論理的な識別子を引数とするハッシュ関数で決定される特定のネットワークストレージ装置に個々のオブジェクトを分散して格納することを特徴とするネットワークストレージシステムが提案されている。
【０００６】
当該ネットワークストレージシステムでは、ファイルの冗長格納を行なう場合には、ハッシュ関数あるいは格納関数を複数種類用意して、それぞれの値に応じた格納場所へ対象となるファイルを格納するように構成されている。
【０００７】
特許文献２に記載されたネットワークストレージシステムでは、アクセス対象のオブジェクトの論理的識別子、例えばファイルの識別子、と該オブジェクトを物理的に格納しているネットワークストレージとの対応表を管理する必要がなくなり、管理サーバを必要としない複数ネットワークストレージの仮想化方法が可能となる。
【特許文献１】特開２００３−２０８３４５号公報
【特許文献２】特開特開２００３−２１６４７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献２に記載された技術によれば、各ファイルはファイルのパス名のハッシュ値と分散格納するネットワークストレージの台数を引数とする格納位置決定関数ｆをｆ＝mod（ハッシュ値、ネットワークストレージ台数）によって一意に決定されるネットワークストレージに格納されるものであり、ファイルを冗長格納する場合に、ハッシュ関数あるいは格納関数を複数種類用意して、それぞれの値に応じた格納場所へ対象となるファイルを格納するように構成されていたために、破損したストレージを修復する場合、全てのストレージを検索した結果に基づいて修復すべきファイルを特定しなければならず、膨大な処理時間を要するという問題があった。
【０００９】
ハッシュ関数あるいは格納関数が不可逆関数であるため、破損したストレージの管理番号から元のハッシュ値またはファイル識別子を算出することが不可能だからである。
【００１０】
本発明の目的は、ファイルとファイルが格納されるストレージの記憶エリアを対照する管理情報を持つことなく、クライアントからのファイルアクセス要求に対して高速に応答可能としながらも、故障などからの復旧処理が迅速に行なえるファイル格納システムを提供することにある。
【課題を解決するための手段】
【００１１】
上述の目的を達成するため、本発明によるファイル格納システムの第一の特徴構成は、特許請求の範囲の書類の請求項１に記載した通り、単一または複数のストレージを個別に管理する複数のストレージ管理手段と、クライアントからの要求に基づいて前記ストレージの何れかに対してファイルを読み書き制御するファイル管理手段がネットワーク接続されたファイル格納システムであって、前記ファイル管理手段は、クライアントからのファイル格納要求に応答して、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージと、当該ストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージとを冗長格納する特定ストレージとして選択し、当該特定ストレージを管理するストレージ管理手段夫々に対してファイル単位で格納処理を実行させる冗長格納管理手段と、任意のストレージの復旧時に、復旧対象ストレージのストレージ番号と前記可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージに関連する複数の関連ストレージ番号を算出し、算出した関連ストレージ番号で識別される複数のストレージに格納されているファイルの識別子に基づいて修復ファイルを特定して復旧対象ストレージを修復するストレージ修復管理手段を備えている点にある。
【００１２】
上述の構成によれば、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値は、ほぼランダムな値として生成されるため、そのようなハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージにファイルが格納されることにより、特定のストレージに集中することなく複数のストレージに分散して複数のファイルが格納されるようになる。そして、当該ストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージに冗長格納されるため、各ストレージにかかる負荷も同様に分散される。しかも、ファイルとファイルが格納されるストレージの関係を規定する管理データも必要がないため、システムへの格納ファイル数が増加しても、信頼性を確保しながらもクライアントからのファイル読み書きの要求に対して高速に応答することができるのである。さらに、例えば故障が発生したストレージを修復する等の場合には、復旧対象ストレージのストレージ番号と前記可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されている複数のストレージ番号が算出されるため、算出されたストレージ番号で識別される複数のストレージに格納されているファイルの識別子に基づいて修復ファイルが容易に特定されるようになる。従って、全てのストレージを検索した結果に基づいて修復ファイルを特定する場合に比較して極めて迅速に復旧対象ストレージを修復することができるようになる。
【００１３】
同第二の特徴構成は、同請求項２に記載した通り、上述の第一特徴構成に加えて、前記ストレージ修復管理手段は、前記関連ストレージ番号で識別される何れかのストレージに格納されているファイルの識別子と冗長化数に基づいて修復ファイルを特定する点にある。
【００１４】
上述の構成によれば、復旧対象ストレージに格納されていた可能性のあるファイルであって、関連ストレージ番号で識別されるストレージに格納されている識別子の等しいファイルの数が冗長化数無ければ、当該ファイルが修復対象ファイルであると特定することができるのである。
【００１５】
同第三の特徴構成は、同請求項３に記載した通り、上述の第一特徴構成に加えて、前記ストレージ修復管理手段は、前記関連ストレージ番号で識別される何れかのストレージに格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージ、または、当該ストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージの何れかが復旧対象ストレージに該当するときに、当該ファイルを修復ファイルとして特定する点にある。
【００１６】
上述の構成によれば、復旧対象ストレージに格納されるべきファイルが冗長格納されている関連ストレージに格納されているファイルの識別子から冗長格納されるべきストレージが特定でき、そのような特定ストレージが復旧対象ストレージに該当するときに、当該ファイルが復旧対象ストレージに格納されるべきファイルであると特定することができるようになる。
【００１７】
同第四の特徴構成は、同請求項４に記載した通り、上述の第一から第三の何れかの特徴構成に加えて、前記可逆平準化関数は、モデュロ演算により選択されるストレージを管理するストレージ管理手段以外のストレージ管理手段により管理されるストレージを選択するように設定されている点にある。
【００１８】
ストレージ管理手段が故障すると、当該ストレージ管理手段により管理されるストレージの全てがアクセスできなくなるが、上述の構成により、異なるストレージ管理手段に管理されるストレージにファイルが冗長格納されるようになり、ストレージ管理手段の故障に対して信頼性の高いファイルの冗長格納が行なえるようになる。
【００１９】
同第五の特徴構成は、同請求項５に記載した通り、上述の第一から第四の何れかの特徴構成に加えて、前記ファイル管理手段は、ストレージの増設時に、前記ハッシュ値と増設後のストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージと、前記可逆平準化関数により求まるストレージ番号で識別されるストレージを新たな特定ストレージとして選択し、対応するファイルをコピーして冗長格納するとともに、増設前に格納されたファイルを削除する平準化処理手段を備えている点にある。
【００２０】
上述の構成によれば、ストレージが増設されると、既存のストレージに冗長格納された複数のファイルを改めて分散して再格納する必要が生じるが、その場合であっても、ファイルとファイルが格納されるストレージの記憶エリアを対照する管理情報を生成する必要が無く、任意のストレージに格納されているファイルが、その識別子を引数として算出されるハッシュ値と増設後のストレージ数に基づくモデュロ演算及び前記可逆平準化関数により選択されるストレージにファイルをコピーして、その後、元のファイルを削除すればよく、極めて簡単な処理の繰り返しで済む。
【００２１】
同第六の特徴構成は、同請求項６に記載した通り、単一または複数のストレージを個別に管理する複数のストレージ管理手段と、クライアントからの要求に基づいて前記ストレージの何れかに対してファイルを読み書き制御するファイル管理手段がネットワーク接続されたファイル格納システムであって、前記ファイル管理手段は、クライアントからのファイル格納要求に応答して、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段と、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段とを冗長格納する特定ストレージ管理手段として選択するとともに、前記特定ストレージ管理手段の夫々に対して前記ハッシュ値と当該特定ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージを冗長格納する特定ストレージとして選択し、当該特定ストレージを管理する特定ストレージ管理手段夫々に対してファイル単位で格納処理を実行させる冗長格納管理手段と、任意のストレージの復旧時に、復旧対象ストレージを管理するストレージ管理手段のストレージ群番号と前記可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージを管理するストレージ管理手段に関連する複数の関連ストレージ群番号を算出し、算出した関連ストレージ群番号で識別される複数のストレージ管理手段に管理されるストレージに格納されているファイルの識別子に基づいて修復ファイルを特定して復旧ストレージを修復するストレージ修復管理手段を備えている点にある。
【００２２】
例えば、複数のストレージ管理手段に管理されるストレージの台数が夫々異なるような場合には、可逆平準化関数の設定が困難になり、異なるストレージ管理手段に管理されるストレージに冗長格納することが困難となる場合も生じる。上述の構成によれば、そのような場合であっても、先ず冗長格納されるストレージ管理手段が平準化して選択され、その後、各ストレージ管理手段に管理されるストレージが平準化して選択されるようになるので、確実に異なるストレージ管理手段のストレージにファイルを冗長格納することができるようになる。
【００２３】
同第七の特徴構成は、同請求項７に記載した通り、上述の第六特徴構成に加えて、前記ストレージ修復管理手段は、前記関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子及び冗長化数に基づいて修復ファイルを特定する点にある。
【００２４】
上述の構成によれば、復旧対象ストレージに格納されていた可能性のあるファイルであって、関連ストレージ群番号で識別されるストレージ管理手段に管理されるストレージに格納されている識別子の等しいファイルの数が冗長化数無ければ、当該ファイルが修復対象ファイルであると特定することができるのである。
【００２５】
同第八の特徴構成は、同請求項８に記載した通り、上述の第六または第七特徴構成に加えて、前記ストレージ修復管理手段は、前記関連ストレージ群番号で識別される何れかのストレージ管理手段に格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段、または、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段の何れかが復旧対象ストレージを管理するストレージ管理手段に該当するときに、当該ファイルを修復ファイルの候補として選択する点にある。
【００２６】
上述の構成によれば、復旧対象ストレージに格納されるべきファイルが冗長格納されている関連ストレージに格納されているファイルの識別子から冗長格納されるべきストレージが特定でき、そのような特定ストレージが復旧対象ストレージに該当するときに、当該ファイルが復旧対象ストレージに格納されるべきファイルの候補であると選択することができるようになる。
【００２７】
同第九の特徴構成は、同請求項９に記載した通り、上述の第六特徴構成に加えて、前記ストレージ修復管理手段は、前記関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段、または、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段の何れかが復旧対象ストレージを管理するストレージ管理手段に該当し、前記ハッシュ値と当該ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージが復旧対象ストレージに該当するときに、当該ファイルを修復ファイルとして特定する点にある。
【００２８】
上述の構成によれば、復旧対象ストレージに格納されるべきファイルが冗長格納されている関連ストレージ群に管理されるストレージに格納されているファイルの識別子から冗長格納されるべきストレージが特定でき、そのような特定ストレージが復旧対象ストレージに該当するときに、当該ファイルが復旧対象ストレージに格納されるべきファイルであると特定することができるようになる。
【００２９】
同第十の特徴構成は、同請求項１０に記載した通り、上述の第六から第九の何れかの特徴構成に加えて、前記ファイル管理手段は、ストレージ管理手段の増設時に、前記ハッシュ値と増設後のストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段と、前記可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段を新たな特定ストレージ管理手段として選択するとともに、前記特定ストレージ管理手段の夫々に対して前記ハッシュ値と当該特定ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージを冗長格納する特定ストレージとして選択し、対応するファイルをコピーして冗長格納するとともに、増設前に格納されたファイルを削除する平準化処理手段を備えている点にある。
【００３０】
第五の特徴構成と同様に、ストレージが増設されると、既存のストレージに冗長格納された複数のファイルを改めて分散して再格納する必要が生じるが、その場合であっても、ファイルとファイルが格納されるストレージの記憶エリアを対照する管理情報を生成する必要が無く、確実に異なるストレージ管理手段のストレージに分散してファイルを再度冗長格納することができるようになる。
【００３１】
同第十一の特徴構成は、同請求項１１に記載した通り、上述の第五または第十特徴構成に加えて、前記平準化処理手段は、ファイルの識別子を管理してファイル単位で平準化処理する点にある。
【００３２】
ストレージ単位で平準化処理を実行する場合には、あるストレージに格納されたファイルに対する平準化処理により他のストレージに移動したファイルが、当該移動先のストレージに対する平準化処理により再度平準化処理の対象となる虞があるが、上述の構成によれば、ファイル単位で平準化処理が管理されるので、異常な平準化処理を防ぎ、迅速に処理することができるようになる。
【００３３】
同第十二の特徴構成は、同請求項１２に記載した通り、上述の第五または第十特徴構成に加えて、前記冗長格納管理手段は、前記平準化処理手段による平準化処理が終了するまでの間、クライアントからのファイル読出し要求に応答して、増設前のストレージ数に基づく冗長格納処理で選択される特定ストレージと、増設後のストレージ数に基づく冗長格納処理で選択される特定ストレージの何れかを当該ファイルが格納されたストレージとして特定するように構成されている点にある。
【００３４】
平準化処理手段による平準化処理が終了するまでの間は、増設前に冗長格納処理されたファイルと増設後に冗長格納処理されたファイルが並存する状態となる。上述の構成によれば、そのようなときにクライアントからのファイル読出し要求があっても、冗長格納管理手段により増設前と増設後の何れにも対応して当該ファイルが格納されたストレージを特定することができるようになるので、外部からの要求を受け付けながら平準化処理を行なうことができるようになるのである。
【００３５】
同第十三の特徴構成は、同請求項１３に記載した通り、上述の第一から第十二の何れかの特徴構成に加えて、前記ストレージ管理手段は、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値に基づいて複数のディレクトリを生成するとともに、個別のハッシュ値に基づいて対応するファイルを何れかのディレクトリの配下に格納する点にある。
【００３６】
上述の構成によれば、格納すべきファイルがハッシュ値に基づいて生成された複数のディレクトリに何れかの配下に格納されるので、クライアントからのファイル読出し要求に対してハッシュ値を生成することにより、対応するファイルが格納されているディレクトリを特定することができ、ファイルの検索が迅速に行なえるようになる。
【発明の効果】
【００３７】
以上説明した通り、本発明によれば、ファイルとファイルが格納されるストレージの記憶エリアを対照する管理情報を持つことなく、クライアントからのファイルアクセス要求に対して高速に応答可能としながらも、故障などからの復旧処理が迅速に行なえるファイル格納システムを提供することができるようになった。
【発明を実施するための最良の形態】
【００３８】
以下に、本発明によるファイル格納システムについて説明する。本発明によるファイル格納システム１は、図１に示すように、単一または複数のストレージ２を個別に管理する複数のストレージ管理手段３と、クライアントからの要求に基づいてストレージ２の何れかに対してファイルを読み書き制御するファイル管理手段５がローカルネットワーク６で接続され、ファイル管理手段５と複数のクライアント４が外部ネットワーク７を介して接続されて構成されている。
【００３９】
ファイル管理手段５は、各ストレージ管理手段３を統括して管理するとともに、クライアントからの読み書き要求に応答して各ストレージ管理手段３との間でデータを遣り取りする装置で、バッファメモリ５６を介してクライアント４からのファイル読み書きの要求を処理するクライアント用ファイル受渡し手段５０と、クライアント４から格納要求のあったファイルをファイル単位で冗長格納するとともに、読出し要求にあったファイルの格納のために格納先ストレージ２を選択する冗長格納管理手段５１と、冗長格納管理手段５１により選択された格納先ストレージ２を管理するストレージ管理手段３との間でバッファメモリ５６を介してファイルを遣り取りするストレージ用ファイル受渡し手段５４と、管理者に報知するために各ストレージ２の残容量や故障等の稼動状況を管理する稼動状況管理手段５５と、ストレージ２の増設時に格納済みのファイルを平準化して再格納する平準化処理手段５３と、任意のストレージの復旧時に、復旧対象ストレージを修復するストレージ修復管理手段５２を備えて構成されている。
【００４０】
ファイル管理手段５は所定のＯＳプログラムの管理下で動作するパーソナルユースの電子計算機により構成され、上述の冗長格納管理手段５１等の各機能ブロックは、ＯＳプログラムまたはＯＳプログラムの管理下で動作するアプリケーションプログラム及び当該電子計算機のハードウェアリソースで構成されている。尚、ファイル管理手段５はサーバ機器や専用端末等で構成することも可能であり、上述のストレージ管理手段３の何れかに構築することも可能である。
【００４１】
ストレージ管理手段３の夫々は、管理対象となる複数のストレージ２に対してファイルの格納先ストレージ２に対するディレクトリを生成管理するとともに、ファイルの読み書きを管理するファイルシステム３０と、各ストレージ２の稼動状態を検査するとともに、各ストレージ２に格納されたファイルの破損を検出する異常検出手段３１と、破損したファイルを修復するファイル修復手段３２等を備えて構成されている。
【００４２】
夫々のストレージ管理手段３はＵＳＢやＳＣＳＩ等の汎用のインタフェースを介して磁気ディスク装置でなる単一または複数のストレージ２が接続されたパーソナルユースの電子計算機により構成され、上述のファイルシステム３０等の各機能ブロックはＯＳプログラムまたはＯＳプログラムの管理下で動作するアプリケーションプログラム及び当該電子計算機のハードウェアリソースで構成されている。尚、ストレージ管理手段３はファイルシステム機能を備えたサーバ機器や専用端末等で構成することも可能である。
【００４３】
クライアント用ファイル受渡し手段５０は、例えば、マイクロソフト社から提供されるＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等のファイル共有プロトコルに基づいて動作するように構成され、クライアント４からのファイル書込み要求に際して、クライアント４から受信したファイルをバッファメモリ５６に記憶し、冗長格納管理手段５１を作動させてファイルを格納すべきストレージ２を特定し、特定されたストレージ２への格納処理が完了するとクライアント４との通信を終了し、クライアント４からのファイル読出し要求に際して、冗長格納管理手段５１を作動させてファイル格納先のストレージ２を特定し、ストレージ用ファイル受渡し手段５４によりストレージ２から読み出されバッファメモリ５６に記憶されたファイルをクライアント４へ送信して通信を終了する。
【００４４】
クライアント用ファイル受渡し手段５０は、先ずファイルの読み書きの要求を行なうクライアント４との間でネゴシエーションを行ない、次にクライアント４の接続の認証を実行し、認証を確認するとクライアント４から該ファイル格納システム１の公開リソースであるストレージ２への接続を許容し、クライアント４からのストレージ２へのファイルの読み書き処理が可能となる。クライアント用ファイル受渡し手段５０は、クライアント４から送信されたファイル操作コマンドを受信し、当該コマンドに対する結果をクライアント４に送信して作業が完了すると通信を終了する。
【００４５】
公開リソースは、当該ファイル格納システム１の全てのストレージ管理手段３が管理する個々のストレージ２が対象となり、個々のストレージ２の何れかにファイルが格納されるのであるが、クライアント用ファイル受渡し手段５０は複数のストレージ２を仮想的に１つのストレージとしてクライアント４に公開するように構成されているため、クライアント４からは仮想的に大容量の一つのネットワークストレージ装置が外部ネットワークに接続されているように認識される。
【００４６】
当該ファイルシステム１は仮想的な１つのネットワークストレージに対して全てのファイルが仮想的に同一のディレクトリに格納されることになるため、クライアント４はファイルを格納するストレージ２やディレクトリを意識することなく該ファイル格納システム１を使用することができる。従って、ＣＩＦＳのコマンドには、ディレクトリ作成や削除のコマンドは許可されておらず、格納されるファイルの識別子にはユニークなファイルの識別子が設定される必要がある。
【００４７】
クライアント用ファイル受渡し手段５０は、クライアント４から既に記憶されたファイルと同一識別子を持つファイルの書込み要求があると、当該クライアント４にファイルの識別子を変更するように警告し、読み出したファイルに変更を加えた後に上書き保存することも禁止するように構成され、格納されたファイルの信頼性及び安全性が確保されたファイル格納システムが実現される。
【００４８】
尚、このようなファイル格納システムにファイルを格納する場合には、格納されたファイルの識別子を各クライアント４側で管理しておく必要があり、例えばＣＴやＭＲＩ等のモダリティ装置で取得された医療用画像を管理するファイルサーバのバックアップ用ファイル格納システムとして好適に使用することができる。
【００４９】
以下に、Ｎ（Ｎは正整数値）台のストレージ管理手段３の夫々にＭ（Ｍは正整数値）台のストレージ２が接続されている場合、つまり、Ｍ×Ｎのマトリクス状に配列されたストレージ２が接続されている場合を例にファイル格納システム１の具体的な構成及び動作について詳述する。
【００５０】
図２に示すように、稼動状況管理手段５５は、各ストレージ管理手段３に「０」から始まる昇順の整数値であるストレージ群番号、各ストレージ管理手段３の配下にあるＭ台のストレージ２の夫々に「０」から始まる昇順の整数値であるローカルストレージ番号、さらに、ストレージ群番号の昇順に沿って対応するストレージ管理手段３により管理されるストレージ２の夫々に「０」から始まる昇順の整数値であるストレージ番号を割り振り、ストレージ管理手段３及びストレージ２夫々の故障の有無を示す故障フラグや残容量等の稼動状態を管理する稼動状況テーブル５７を生成して管理している。
【００５１】
つまり、稼動状況管理手段５５は、ストレージ管理手段３夫々を個別に識別するためにユニークなストレージ群番号を付し、ストレージ２夫々を個別に識別するためにユニークなストレージ番号を付した稼動状況テーブル５７を生成して管理している。そして、稼動状況テーブル５７のこれらの値は対応するストレージ管理手段３と共有されている。例えば、システムの構築時に管理者により各ストレージ管理手段及びストレージにストレージ群番号及びローカルストレージ番号が付与され、夫々が自己を認識可能に設定されていればよく、稼動状況管理手段５５がこれらの管理番号を吸い上げて稼動状況テーブル５７を生成するように構成すればよい。
【００５２】
図３に示すように、稼動状況管理手段５５は、システムの起動時（ＳＡ１）、または起動後の所定時間間隔で（ＳＡ２）、さらには管理者の操作時（ＳＡ３）に、接続されている全てのストレージ管理手段３に対して、夫々が管理するストレージ数及び稼動状況を報告するよう要求し（ＳＡ４）、報告に基づいて上述の稼動状況テーブルを生成する（ＳＡ５）。システムの起動前に保持していた従前の稼動状況テーブル５７と今回生成した稼動状況テーブル５７を比較して、相違が生じていると（ＳＡ６）、今回作成した稼動状況テーブル５７を更新稼動状況テーブル５７として従前の稼動状況テーブル５７とは別に保持し（ＳＡ７）、相違が無ければ（ＳＡ６）、今回生成した稼動状況テーブル５７を削除する（ＳＡ８）。
【００５３】
システムに接続されているストレージ管理手段の数またはストレージ数に変動が生じたときに、必要な処理を行なうために従前の更新稼動状況テーブル５７と更新稼動状況テーブルを備えるのであり、稼動状況管理手段５５は、例えば、システムに新たなストレージ管理手段３またはストレージ２が増設されたときには平準化処理手段５３を起動させ、故障またはシステムから一時切り離されていた任意のストレージが再接続された復旧時にはストレージ修復管理手段５２を起動させ、定常処理では冗長格納管理手段５１による故障中のストレージへのアクセスを回避する。
【００５４】
定常処理において、冗長格納管理手段５１は、クライアント４からのファイル格納要求に応答してクライアント用ファイル受渡し手段５０から起動されると、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージ２と、当該ストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージ２とを冗長格納する特定ストレージとして選択した後に、ストレージ用ファイル受渡し手段５４を起動して、当該特定ストレージ２を管理するストレージ管理手段３夫々に対してファイル単位で格納処理を実行させる。
【００５５】
稼動状況テーブル５７に基づいて特定ストレージの何れかが故障等により停止していると判断されるときには、正常稼動している特定ストレージ２を管理するストレージ管理手段３夫々に対してファイル単位で格納処理を実行させる。
【００５６】
また、冗長格納管理手段５１は、クライアント４からのファイル読出し要求に応答してクライアント用ファイル受渡し手段５０から起動されると、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージ２を特定ストレージとして選択した後に、ストレージ用ファイル受渡し手段５４を起動して、当該特定ストレージ２を管理するストレージ管理手段３からファイルの読出し処理を実行させる。
【００５７】
当該特定ストレージが稼動状況テーブル５７に基づいて故障等により停止していると判断されるときには、当該特定ストレージのストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージ、つまり、冗長格納されている特定ストレージを選択した後に、ストレージ用ファイル受渡し手段５４を起動して、当該特定ストレージ２を管理するストレージ管理手段３からファイルの読出し処理を実行させる。
【００５８】
本実施形態では、所定のハッシュ関数としてＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）が採用され、図４に示すように、冗長格納管理手段５１はクライアント４から格納要求のあったファイルの識別子であるファイルネームを引数として１２８ｂｉｔのハッシュ値を算出し（ＳＢ１）、その下位８バイトの値を当該ファイル格納システム１に備える全てのストレージ数で除した余りを算出するモデュロ演算ｆ＝ｍｏｄ（ハッシュ値、ストレージ台数（最大ストレージ番号＋１））を行ない（ＳＢ２）、得られた値に相当するストレージ番号が割り振られたストレージ２をファイル格納するための１台目の特定ストレージ２として選択する（ＳＢ３）。尚、１２８ｂｉｔのハッシュ値に対してモデュロ演算ｆを実行するものであってもよく、モデュロ演算のためのハッシュ値の桁数は適宜設定すればよい。
【００５９】
次にファイルの二重冗長格納を行うために、１台目の特定ストレージ２を管理するストレージ管理手段３に割り振られたストレージ群番号に所定の整数値を加算または減算した値に相当するストレージ群番号が割り振られたストレージ管理手段３を特定し、そのストレージ管理手段３によって管理されるストレージ２のうち１台目の特定ストレージ２に割り振られたローカルストレージ番号と同じ値のローカルストレージ番号が割り振られたストレージ２を２台目の特定ストレージとして選択する（ＳＢ４）。
【００６０】
つまり、モデュロ演算により求まるストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージ２を冗長格納する特定ストレージとして選択するのである。ここで、可逆平準化関数とは、ストレージ番号を引数（変数）として算出される値が引数とは異なる値として出力され、ファイルを格納するストレージ２が分散化されるような可逆関数をいう。
【００６１】
上述のように、ストレージ管理手段３の台数がＭ、各ストレージ管理手段３により管理されるストレージ２の台数がＮとなるマトリクス状に構成されたストレージの場合には、モデュロ演算により求まるストレージ番号をＰとして、可逆平準化関数ｇ（Ｐ）を（数１）に示すように設定することができる。また、他の例として可逆平準化関数ｑ（Ｐ）を（数２）に示すように設定することができる。
【数１】
2008181358.tif 000003
ここに、Ｋは冗長格納数−１の整数値である。
【００６２】
【数２】
2008181358.tif 000004
ここに、Ｋは冗長格納数−１の整数値である。
【００６３】
従って、二重冗長の場合にはＫ＝１とするｇ（Ｐ）の値をストレージ番号とする１台のストレージが２台目の特定ストレージとして選択され、三重冗長の場合にはＫ＝１，２とするｇ（Ｐ）の値をストレージ番号とする２台目及び３台目のストレージが特定ストレージとして選択される。
【００６４】
具体的に、図９（ａ）に示すように、ストレージ管理手段３の台数Ｍ＝４、各ストレージ管理手段３により管理されるストレージ２の台数Ｎ＝３、合計１２台のストレージ２に対して二重冗長される場合、モデュロ演算により求まるストレージ番号Ｐ＝３とすると、ｇ（３）＝３＋３×１＝６となり、ストレージ番号３，６の２台のストレージ２（図中、ハッチングで示すストレージ）が選択される。また、図９（ｂ）に示すように、ストレージ管理手段３の台数Ｍ＝４、各ストレージ管理手段３により管理されるストレージ２の台数Ｎ＝３、合計１２台のストレージ２に対して三重冗長される場合、モデュロ演算により求まるストレージ番号Ｐ＝２とすると、ｇ（２）＝２＋３×１＝５（Ｋ＝１）、ｇ（２）＝２＋３×２＝８（Ｋ＝２）となり、ストレージ番号２，５，８の３台のストレージ２（図中、ハッチングで示すストレージ）が選択される。
【００６５】
（数１）や(数２)に示す可逆平準化関数ｇ、ｑは、モデュロ演算ｆにより選択されるストレージ２を管理するストレージ管理手段３以外のストレージ管理手段３により管理されるストレージ２を特定ストレージとして選択するように設定されているため、必ず異なるストレージ管理手段３に管理されるストレージ２にファイルが冗長格納されるようになり、ストレージ管理手段３の故障に対して信頼性の高いファイルの冗長格納が行なえるのであるが、可逆平準化関数はこれに限るものではない。つまり、同一のストレージ管理手段３に管理される異なるストレージ２が冗長格納のためのストレージ２として選択されるように可逆平準化関数を設定するものであってもよい。
【００６６】
また、（数１）や(数２)に示す可逆平準化関数ｇ、ｑは例示に過ぎず、このような関数に限定されるものでもなく、また、冗長格納数に応じて複数の異なる可逆平準化関数が設定されるものであってもよい。
【００６７】
冗長格納するべき特定ストレージを選択すると、冗長格納管理手段５１は稼動状況テーブル５７に基づいて正常稼動している特定ストレージを選択して（ＳＢ５）、ストレージ用ファイル受渡し手段５４を起動し（ＳＢ６）、当該特定ストレージ２を管理するストレージ管理手段３夫々に対してファイル単位で格納処理を実行させる（ＳＢ７）。
【００６８】
ストレージ用ファイル受渡し手段５４は、バッファメモリ５６に蓄積されているファイルを各特定ストレージに冗長格納する際に、ストレージ単位で格納処理を順次実行してもよいし、複数のストレージに並行して格納処理を実行してもよい。このようにしてファイルの格納処理が終了すると（ＳＢ８）、クライアント用ファイル受渡し手段５０によりクライアント４との通信が終了される（ＳＢ８）。
【００６９】
本システムでは、選択された全ての特定ストレージが同時に故障しているときには、クライアント４からの要求が拒絶されるが、そのような場合は極めて少なく実稼動に問題は生じない。また、何れかのストレージ２が故障しているときには、後述のストレージ修復管理手段５２により修復されるように構成されている。
【００７０】
クライアント４からのファイル読出し要求に対しても同様の処理により特定ストレージが選択され、その後起動されるストレージ用ファイル受渡し手段５４により該当するファイルが読み出されてバッファメモリ５６に格納され、クライアント用ファイル受渡し手段５０を介してクライアント４に出力される。
【００７１】
具体的に、図１０に示すように、ストレージ管理手段３の台数Ｍ＝４、各ストレージ管理手段３により管理されるストレージ２の台数Ｎ＝３、合計１２台のストレージ２に対して二重冗長されている場合、冗長格納管理手段５１は、モデュロ演算を実行してストレージ番号を算出する。今、ストレージ番号Ｐ＝２と算出されると、ストレージ番号Ｐ＝２で識別されるストレージを特定ストレージとして選択し、ストレージ用ファイル受渡し手段５４を起動して当該特定ストレージから該当するファイルが読み出されるように制御するのである。ここで、稼動状況テーブル５７に基づいてストレージ番号Ｐ＝３で識別されるストレージが故障等により停止していると判断されるときには、可逆平準化関数により冗長格納ストレージを選択してストレージ用ファイル受渡し手段５４を起動する。この場合、ｇ（３）＝２＋３×１＝５となり、ストレージ番号５のストレージ２が選択される。
【００７２】
ストレージ管理手段３に設けられたファイルシステム３０は、ストレージ用ファイル受渡し手段５４からのファイル格納要求に対して、ファイル管理手段５からファイルの識別子に対するハッシュ値を取得し、当該ハッシュ値に基づいて複数のディレクトリを生成するディレクトリ生成手段３３を備え、個別ファイルに対するハッシュ値に基づいて対応するファイルを何れかのディレクトリの配下に格納するように構成されている。
【００７３】
例えば、各ファイルシステム３０は、１２８ビットのハッシュ値の上位８バイトの値に基づいて上位のディレクトリを生成し、その配下に次の下位４バイトの値に基づいて下位のディレクトリを生成する等、ハッシュ値に基づいて階層化されたディレクトリを生成し、格納要求のあったファイルのハッシュ値が属するディレクトリに当該ファイルを格納する。ディレクトリの名称は夫々のハッシュ値の対応するバイトで構成される数値そのものであってもよいし、その数値を変換テーブルにより文字コードに変換したものでもよい。
【００７４】
このように階層化されたディレクトリに対応するファイルを格納することにより、ファイルのアクセス速度を向上させることが可能になる。つまり、ファイルの読出し要求に対応して当該ファイルのハッシュ値に基づいて検索対象となるディレクトリを一意に特定することができるようになるのである。尚、ファイルシステム３０で取り扱われるハッシュ値は、ファイル管理手段５から取得するものとしたが、ファイルシステム３０内でファイルの識別子を引数とするハッシュ値を算出するものであってもよい。後者の場合には、ファイル管理手段５で採用されるハッシュ関数と異なる別のハッシュ関数を採用することも可能である。
【００７５】
さらに、ストレージ管理手段３に設けられた異常検出手段３１は、ファイルの格納時に、当該ファイルのファイルデータを引数とするハッシュ関数によりファイルデータのハッシュ値を算出し、当該ハッシュ値をファイルの識別子と関連付けた照合用データとしてストレージ２に格納するように構成され、深夜等の所定時間またはファイル管理手段５からの指示に基づいて個々のファイルデータを読み出してファイルデータのハッシュ値を算出し、前記照合用データと比較することによりファイルの破損を検出するように構成されている。照合用データと算出されたハッシュ値が一致するときには正常と判断し、不一致のときにはファイル破損または改竄と判断するものである。
【００７６】
異常検出手段３１は、定期的に各ストレージに対して接続確認し、任意の検証データを所定領域に書き込み、ベリファイしてハードディスクの状態を管理するとともに、残容量を確認して、ストレージの接続状態、故障状態、残容量等の稼動状況データを管理する。当該稼動状況データを受信したファイル管理手段５により上述の稼動状況テーブル５７が生成されるのである。
【００７７】
異常検出手段３１によりファイルの破損が検出されると、ファイル修復手段３２が起動され、ファイルの修復処理が実行される。具体的には、当該破損ファイルのファイル識別子がファイル管理手段５の冗長格納管理手段５１に送られて、冗長格納管理手段５１によりファイル識別子に基づいて冗長格納された他のストレージ管理手段３が割り出され、当該他のストレージ管理手段３に対して同一ファイルを修復ファイルとして転送するように指令するのである。当該他のストレージ管理手段３から転送された修復ファイルを受信したファイル修復手段３２は、破損ファイルに代えて修復ファイルを格納することによりファイルの修復を終了する。
【００７８】
尚、複数回の修復処理で修復されないときには、同一ストレージ内で格納領域を変更して格納することにより、ハードディスクの部分的破損に対処することも可能であり、初回の修復時に同一ストレージ内で格納領域を変更して格納するものでもよい。
【００７９】
図５に示すように、稼動状況管理手段５５は上述した稼動状況テーブル５７を更新したとき、またはシステムの負荷が低い所定時間に、従前の稼動状況テーブル５７と比較して故障中のストレージ２が正常に戻り、またはシステムから切り離されていたストレージ２が再度接続されたことを検出すると（ＳＣ１）、ストレージ修復管理手段５２を起動する（ＳＣ２）。
【００８０】
ストレージ修復管理手段５２は、任意のストレージ２の復旧時に、復旧対象ストレージ２のストレージ番号と上述した可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されている複数の関連ストレージ番号を算出し、算出した関連ストレージ番号で識別される複数のストレージに格納されているファイルの識別子に基づいて修復ファイルを特定して復旧対象ストレージを修復するように構成されている。
【００８１】
ストレージ修復管理手段５２は、稼動状況管理手段５５から復旧したストレージのストレージ番号を受け取り（ＳＣ３）、当該ストレージ番号が、上述のモデュロ演算により求められたストレージ番号であった場合、または、可逆平準化関数により求められたストレージ番号であった場合の何れかを想定して、（数１）の可逆平準化関数に基づいて、冗長格納された他の関連ストレージ番号を算出する（ＳＣ４）。
【００８２】
具体的に、図１１（ａ）に示すように、ストレージ管理手段の台数Ｍ＝４、各ストレージ管理手段により管理されるストレージの台数Ｎ＝３、合計１２台のストレージに対してあるファイルが二重冗長されるとき、モデュロ演算により求まるストレージ番号Ｐ＝１とすると、可逆平準化関数ｇ（１）＝１＋３×１＝４となり、ストレージ番号１，４の２台のストレージが特定ストレージとして冗長格納管理手段５１により選択されているような場合を考える。
【００８３】
復旧対象ストレージのストレージ番号が１の場合を想定すると、ストレージ番号が１のストレージには可逆平準化関数によりストレージ番号１０または４の何れかのストレージに冗長格納された同一のファイルが存在し、復旧対象ストレージのストレージ番号が４の場合を想定すると、ストレージ番号が４のストレージにはストレージ番号１または７の何れかのストレージに冗長格納された同一のファイルが存在していることになる。
【００８４】
つまり、図１１（ｂ）に示すように、復旧対象ストレージのストレージ番号が１の場合には、ストレージ番号１０または４に格納されているファイルの何れかが復旧対象ファイルとなるが、さらにストレージ番号１０のストレージにはストレージ番号７または１のストレージに冗長格納された同一のファイルが存在し、ストレージ番号４のストレージにはストレージ番号１または７のストレージに冗長格納された同一のファイルが存在する。
【００８５】
従って、ストレージ番号１０のストレージに格納されているファイルの中でストレージ番号７のストレージに格納されているファイルの識別子と同一の識別子のファイルを除いたファイル、言い換えれば冗長格納数２に満たないファイルが復旧対象ストレージ（ストレージ番号が１のストレージ）に修復されるファイルとして特定することができ、同様に、ストレージ番号４のストレージに格納されているファイルの中でストレージ番号７のストレージに格納されているファイルの識別子と同一の識別子のファイルを除いたファイル、言い換えれば冗長格納数２に満たないファイルが復旧対象ストレージ（ストレージ番号が１のストレージ）に修復されるファイルとして特定することができるのである。
【００８６】
つまり、ストレージ修復管理手段５２はこのような復旧対象ストレージのストレージ番号１と可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージと当該ストレージに格納されているファイルが冗長格納されているストレージのストレージ番号４，７，１０を、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージに関連する複数の関連ストレージ番号として算出するのである。
【００８７】
次に、算出した関連ストレージに対して、ファイルの識別子と冗長化数に基づいて修復ファイルを特定する（ＳＣ５）。ここでは二重冗長されているので、冗長化数は２である。ストレージ番号４，７のストレージに格納されているファイルの識別子に重複している識別子があるか否かを判別して、ストレージ番号４のストレージにのみ格納されているファイルの識別子を修復ファイルとして特定し、同様に、ストレージ番号７，１０のストレージに格納されているファイルの識別子に重複している識別子があるか否かを判別して、ストレージ番号１０のストレージにのみ格納されているファイルの識別子を修復ファイルとして特定するのである。つまり、ストレージ修復管理手段は、関連ストレージ番号で識別される何れかのストレージに格納されているファイルの識別子と冗長化数に基づいて修復ファイルを特定するのである。
【００８８】
その後、特定された修復ファイルを管理しているストレージ管理手段３から修復されたストレージ２のストレージ管理手段３に対象ファイルを転送するように指示することにより（ＳＣ６）、復旧対象ストレージに格納されていたファイルが修復されると新たな稼動状況テーブル５７に復旧完了フラグをリセットして復旧処理を終了する（ＳＣ７）。尚、復旧完了フラグは新たな稼動状況テーブル５７が生成されるときにセットされ、リセットされるまでは従前の稼動状況テーブル５７に基づいて定常処理が実行される。
【００８９】
さらに、ストレージ修復管理手段５２によるストレージの修復処理の別の手順を説明する。ストレージ修復管理手段５２は、関連ストレージ番号で識別される何れかのストレージに格納されているファイルの識別子を読み出して、当該識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により特定ストレージのストレージ番号、及び／または、当該ストレージ番号を引数とする可逆平準化関数により冗長格納される特定ストレージのストレージ番号を求めて、それら特定ストレージのストレージ番号が復旧対象ストレージのストレージ番号と一致するか否かを判断し、一致する場合に当該ファイルを修復ファイルとして特定するものであってもよい。この場合には、関連ストレージ番号は復旧対象ストレージのストレージ番号と可逆平準化関数に基づいて求まる復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージのストレージ番号となる。図１１の例では、復旧対象ストレージのストレージ番号１に対してストレージ番号４，１０が関連ストレージ番号となる。
【００９０】
このような手順によれば、関連ストレージ番号のストレージの全てのファイルの冗長化数を識別することなく、ファイルの識別子に基づいて修復ファイルを特定することができる。
【００９１】
図６に示すように、稼動状況管理手段５５は上述した稼動状況テーブル５７を更新したとき、またはシステムの負荷が低い所定時間に、従前の稼動状況テーブル５７と比較して新たなストレージ２またはストレージ管理手段３が増設されたことを検出すると（ＳＤ１）、平準化処理手段５３を起動して全てのストレージ２に格納されているファイルの平準化処理を開始する（ＳＤ２）。
【００９２】
平準化処理手段５３は、ストレージの増設時に、前記ハッシュ値と増設後のストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージと、前記可逆平準化関数により求まるストレージ番号で識別されるストレージを新たな特定ストレージとして選択し、対応するファイルをコピーして冗長格納するとともに、増設前に格納されたファイルを削除する。
【００９３】
平準化処理手段５３は、先ず、ストレージ番号の順にストレージに格納されているファイルの識別子を読み取り（ＳＤ３）、従前の稼動状況テーブル５７によるストレージ数に基づいて、上述のハッシュ値、モデュロ演算値、及び可逆平準化関数値を算出して当該識別子に対応するファイルが冗長格納されていたストレージを特定するとともに（ＳＤ４）、新たな稼動状況テーブル５７に基づいて上述のハッシュ値、モデュロ演算値、及び可逆平準化関数値を算出して新たに冗長格納すべき特定ストレージを選択する（ＳＤ５）。
【００９４】
次に、対象となるストレージ管理手段３に当該ファイルをコピーするように指令する（ＳＤ６）。コピー処理が終了すると（ＳＤ７）、元のストレージ２に格納されていたファイルを消去するように指令する（ＳＤ８）。
【００９５】
ステップＳＤ３からステップＳＤ８までを全てのストレージ２に対して繰り返し、終了すると（ＳＤ８）、更新稼動状況テーブル５７の平準化完了フラグ（図２には示していない）をリセットして平準化処理を終了する（ＳＤ９）。尚、平準化完了フラグは更新稼動状況テーブル５７が生成されるときにセットされ、リセットされるまでは従前の稼動状況テーブル５７または更新稼動状況テーブル５７に基づいて定常処理が実行される。そして、平準化処理が終了するまでの間、つまり平準化完了フラグがリセットされるまでの間は、稼動状況管理手段５５により更新された更新稼動状況テーブル５７と、従前の稼動状況テーブル５７の双方が保持され、平準化完了フラグがリセットされるときに従前の稼動状況テーブル５７が消去される。
【００９６】
平準化処理手段５３による平準化処理が終了するまでの間は、増設前に冗長格納処理されたファイルと増設後に平準化により冗長格納処理されたファイルが並存する状態となる。このような期間にクライアントからのファイル読出し要求が発生すると、冗長格納管理手段５１は、従前の稼動状況テーブル５７に基づいて増設前のストレージ数に基づく冗長格納処理で選択される特定ストレージと、新たな稼動状況テーブル５７に基づいて増設後のストレージ数に基づく冗長格納処理で選択される特定ストレージの何れかから当該ファイルが格納されたストレージを特定した後に、ストレージ用ファイル受渡し手段５４を起動して、当該特定ストレージ２を管理するストレージ管理手段３からファイルの読出し処理を実行させる。
【００９７】
また、平準化処理手段５３による平準化処理が終了するまでの間に、クライアントからのファイル格納要求が発生すると、クライアント用ファイル受渡し手段５０から起動された冗長格納管理手段５１は、更新稼動状況テーブル５７に基づいて増設後のストレージ数に基づく冗長格納処理、つまり、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージ２と、当該ストレージ番号を引数とする可逆平準化関数により求まるストレージ番号で識別されるストレージ２とを冗長格納する特定ストレージとして選択した後に、ストレージ用ファイル受渡し手段５４を起動して、当該特定ストレージ２を管理するストレージ管理手段３夫々に対してファイル単位で格納処理を実行させる。
【００９８】
上述の平準化処理に際して、平準化処理手段５３は、ファイルの識別子を管理してファイル単位で平準化処理するように構成されている。例えば、平準化が完了したファイルの識別子をメモリに区画された一時管理テーブルに記録するように構成して、各ストレージに平準化されたファイルが再度平準化対象とならないように管理するのである。さらには、上述した定常処理、修復処理及び平準化処理時に、書込み時間を示すタイムスタンプとともにファイルを書き込むように構成し、平準化処理が開始された時刻より過去のタイムスタンプが付されたファイルのみ平準化対象ファイルとして管理するものであってもよい。
【００９９】
以上、Ｎ台のストレージ管理手段３の夫々にＭ台のストレージ２が接続されている場合、つまり、Ｍ×Ｎのマトリクス状に配列されたストレージ２が接続されている場合について説明したが、以下に、Ｎ（Ｎは正整数値）台のストレージ管理手段３の夫々に異なる台数のストレージ２が接続されている場合について、冗長格納管理手段５１及びストレージ修復管理手段５２の動作について詳述する。尚、以下の説明では、上述の例で説明した処理と同様の処理を実行するブロックについては説明を割愛する。
【０１００】
定常処理において、冗長格納管理手段５１は、クライアント４からのファイル格納要求に応答してクライアント用ファイル受渡し手段５０から起動されると、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段３と、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段３とを冗長格納する特定ストレージ管理手段３として選択するとともに、前記特定ストレージ管理手段３の夫々に対して前記ハッシュ値と当該特定ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるローカルストレージ番号で識別されるストレージを冗長格納する特定ストレージとして選択した後に、ストレージ用ファイル受渡し手段５４を起動して、当該特定ストレージ２を管理する特定ストレージ管理手３段夫々に対してファイル単位で格納処理を実行させる。
【０１０１】
また、冗長格納管理手段５１は、クライアント４からのファイル読出し要求に応答してクライアント用ファイル受渡し手段５０から起動されると、ファイルの識別子を引数とする所定のハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段３を特定ストレージ管理手段３として選択し、当該特定ストレージ管理手段３に対して前記ハッシュ値と当該特定ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるローカルストレージ番号で識別されるストレージを特定ストレージとして選択した後に、ストレージ用ファイル受渡し手段５４を起動して、当該特定ストレージ２を管理するストレージ管理手段３からファイルの読出し処理を実行させる。
【０１０２】
本実施形態でも、所定のハッシュ関数としてＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）が採用され、図７に示すように、冗長格納管理手段５１はクライアント４から格納要求のあったファイルの識別子であるファイルネームを引数として１２８ｂｉｔのハッシュ値を算出し（ＳＥ１）、その下位８バイトの値を当該ファイル格納システム１に備える全てのストレージ管理手段３の総数であるストレージ群数で除した余りを算出するモデュロ演算ｕ＝ｍｏｄ（ハッシュ値、ストレージ群数）を行ない（ＳＥ２）、得られた値に相当するストレージ群番号が割り振られたストレージ管理手段３をファイル格納するためのストレージを管理する１台目の特定ストレージ管理手段３として選択する（ＳＥ３）。尚、１２８ｂｉｔのハッシュ値に対してモデュロ演算ｕを実行するものであってもよく、モデュロ演算のためのハッシュ値の桁数は適宜設定すればよい。
【０１０３】
次にファイルの二重冗長格納を行うために、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段３とを冗長格納する特定ストレージ管理手段３として選択する（ＳＥ４）。
【０１０４】
ここで、可逆平準化関数とは、ストレージ群番号を引数（変数）として算出される値が引数とは異なる値として出力され、ファイルを格納するストレージを管理するストレージ管理手段３が分散化されるような可逆関数をいう。例えば、ストレージ管理手段３の台数がＭとし、選択されたストレージ管理手段３のストレージ群番号をｍとするとき、可逆平準化関数ｖは、（数３）のように定義することができる。
【数３】
2008181358.tif 000005
ここに、Ｋは冗長格納数−１の整数値である。
【０１０５】
次に、特定ストレージ管理手段３の夫々に対して前記ハッシュ値と当該特定ストレージ管理手段３により管理されるストレージ数（つまりローカルストレージ番号の最大数＋１）に基づくモデュロ演算ｗ＝ｍｏｄ（ハッシュ値、ローカルストレージ台数）により求まるローカルストレージ番号で識別されるストレージ２を冗長格納する特定ストレージとして夫々選択する（ＳＥ５）。
【０１０６】
具体的に、図１２（ａ）に示すように、ストレージ管理手段３の台数Ｍ＝４（ストレージ群番号０〜３）、各ストレージ管理手段３により管理されるストレージ２の台数（４，２，４，３台）、合計１３台のストレージ２に対して二重冗長される場合、モデュロ演算ｕにより求まるストレージ群番号ｍ＝２とすると、ｖ（２）＝２＋１＝３となり、ストレージ群番号２，３の２台の特定ストレージ管理手段３（図中、ハッチングで示すストレージ管理手段）が選択される。
【０１０７】
次に、図１２（ｂ）に示すように、選択された特定ストレージ管理手段３の夫々に対して前記ハッシュ値と当該特定ストレージ管理手段３により管理されるストレージ数に基づくモデュロ演算ｗにより求まるローカルストレージ番号で識別されるストレージ２が冗長格納する特定ストレージ（図中、ハッチングで示すストレージ）として夫々選択される。
【０１０８】
（数３）に示す可逆平準化関数ｖは、モデュロ演算ｕにより選択されるストレージ２を管理するストレージ管理手段３以外のストレージ管理手段３を特定ストレージ管理手段として選択するように設定されているため、必ず異なるストレージ管理手段３に管理されるストレージ２にファイルが冗長格納されるようになり、ストレージ管理手段３の故障に対して信頼性の高いファイルの冗長格納が行なえるのであるが、可逆平準化関数はこれに限るものではない。
【０１０９】
また、（数３）に示す可逆平準化関数ｖは例示に過ぎず、このような関数に限定されるものでもなく、また、冗長格納数に応じて複数の異なる可逆平準化関数が設定されるものであってもよい。
【０１１０】
冗長格納するべき特定ストレージを選択すると、冗長格納管理手段５１は稼動状況テーブル５７に基づいて正常稼動している特定ストレージを選択して（ＳＥ６）、ストレージ用ファイル受渡し手段５４を起動し（ＳＥ７）、当該特定ストレージ２を管理するストレージ管理手段３夫々に対してファイル単位で格納処理を実行させる（ＳＥ８）。
【０１１１】
ストレージ用ファイル受渡し手段５４は、バッファメモリ５６に蓄積されているファイルを各特定ストレージに冗長格納する際に、ストレージ単位で格納処理を順次実行してもよいし、複数のストレージに並行して格納処理を実行してもよい。このようにしてファイルの格納処理が終了すると（ＳＥ８）、クライアント用ファイル受渡し手段５０によりクライアント４との通信が終了される（ＳＥ９）。
【０１１２】
クライアント４からのファイル読出し要求に対しても、上述した同様の処理により特定ストレージが選択され、その後起動されるストレージ用ファイル受渡し手段５４により該当するファイルが読み出されてバッファメモリ５６に格納され、クライアント用ファイル受渡し手段５０を介してクライアント４に出力される。
【０１１３】
ストレージ修復管理手段５２は、任意のストレージ２の復旧時に、復旧対象ストレージを管理するストレージ群番号と前記可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されている複数の関連ストレージ群番号を算出し、算出した関連ストレージ群番号で識別される複数のストレージ管理手段３により管理されるストレージ２に格納されているファイルの識別子と冗長化数に基づいて修復ファイルを特定して復旧対象ストレージを修復する。
【０１１４】
図８に示すように、稼動状況管理手段５５は上述した稼動状況テーブル５７を更新したとき、またはシステムの負荷が低い所定時間に、従前の稼動状況テーブル５７と比較して故障中のストレージ２が正常に戻り、またはシステムから切り離されていたストレージ２が再度接続されたことを検出すると（ＳＦ１）、ストレージ修復管理手段５２を起動する（ＳＦ２）。
【０１１５】
ストレージ修復管理手段５２は、稼動状況管理手段５５から復旧したストレージを管理するストレージ管理手段３のストレージ群番号を受け取り（ＳＦ３）、当該ストレージ群番号が、上述のモデュロ演算により求められたストレージ群番号であった場合、または、可逆平準化関数により求められたストレージ群番号であった場合の何れかを想定して、（数３）の可逆平準化関数に基づいて、冗長格納された他の関連ストレージ群番号を算出する（ＳＦ４）。
【０１１６】
具体的に、図１３に示すように、ストレージ管理手段３の台数Ｍ＝８、各ストレージ管理手段により管理されるストレージの台数（４，２，４，３，４，２，２，３台）、合計２４台のストレージ２に対してあるファイルが二重冗長されるとき、モデュロ演算ｕにより求まるストレージ群番号ｍ＝３とすると、可逆平準化関数ｖ（３）＝３＋１＝４となり、ストレージ群番号３、４の２台のストレージ管理手段３が冗長格納管理手段５１により選択されているような場合を考える。
【０１１７】
復旧対象ストレージを管理するストレージ管理手段のストレージ群番号が３の場合を想定すると、ストレージ群番号が３のストレージ管理手段には可逆平準化関数ｖによりストレージ群番号２または４の何れかのストレージ管理手段により管理される何れかのストレージに冗長格納された同一のファイルが存在し、復旧対象ストレージを管理するストレージ管理手段のストレージ群番号が４の場合を想定すると、ストレージ群番号が４のストレージ管理手段には可逆平準化関数によりストレージ群番号３または５の何れかのストレージ管理手段により管理される何れかのストレージに冗長格納された同一のファイルが存在していることになる。
【０１１８】
つまり、図１３に示すように、復旧対象ストレージを管理するストレージ管理手段のストレージ群番号が３の場合には、ストレージ群番号２または４のストレージ管理手段により管理されている何れかのストレージに格納されているファイルの何れかが復旧対象ファイルとなるが、さらにストレージ群番号２のストレージ管理手段にはストレージ群番号１または３のストレージ管理手段により管理されている何れかのストレージに冗長格納された同一のファイルが存在し、ストレージ群番号４のストレージ管理手段にはストレージ群番号３または５のストレージ管理手段により管理されている何れかのストレージに冗長格納された同一のファイルが存在する。
【０１１９】
従って、ストレージ群番号２のストレージ管理手段により管理される何れかのストレージに格納されているファイルの中でストレージ群番号１のストレージ管理手段により管理される何れかのストレージに格納されているファイルの識別子と同一の識別子のファイルを除いたファイル、言い換えれば冗長格納数２に満たないファイルが復旧対象ストレージを管理するストレージ管理手段（ストレージ群番号が３のストレージ管理手段）により管理される何れかのストレージに格納されるファイルとして特定することができ、同様に、ストレージ群番号４のストレージ管理手段により管理される何れかのストレージに格納されているファイルの中でストレージ群番号５のストレージ管理手段により管理される何れかのストレージに格納されているファイルの識別子と同一の識別子のファイルを除いたファイル、言い換えれば冗長格納数２に満たないファイルが復旧対象ストレージを管理するストレージ管理手段（ストレージ群番号が３のストレージ管理手段）により管理される何れかのストレージに格納されるファイルとして特定することができるのである。
【０１２０】
つまり、ストレージ修復管理手段５２はこのような復旧対象ストレージを管理するストレージ管理手段のストレージ群番号と可逆平準化関数に基づいて、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージを管理するストレージ管理手段と当該ストレージ管理手段に管理されるストレージに格納されているファイルが冗長格納されているストレージを管理するストレージ管理手段のストレージ群番号１，２，３，４，５を、復旧対象ストレージに格納されるべきファイルが冗長格納されているストレージ管理手段に関連する複数の関連ストレージ群番号として算出するのである。
【０１２１】
次に、算出した関連ストレージ管理手段に対して、ファイルの識別子と冗長化数に基づいて修復ファイルを特定する（ＳＦ５）。ここでは二重冗長されているので、冗長化数は２である。ストレージ群番号１、２、３のストレージ管理手段に管理される各ストレージに格納されているファイルの識別子に重複している識別子があるか否かを判別して、ストレージ群番号２のストレージ管理手段に管理されているストレージ２にのみ格納されているファイルの識別子を修復ファイルとして特定し、同様に、ストレージ群番号３、４、５のストレージ管理手段に管理されている各ストレージに格納されているファイルの識別子に重複している識別子があるか否かを判別して、ストレージ群番号４のストレージ管理手段に管理されているストレージにのみ格納されているファイルの識別子を修復ファイルとして特定するのである。
【０１２２】
つまり、ストレージ修復管理手段は、関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子及び冗長化数に基づいて修復ファイルを特定するように構成されている。
【０１２３】
その後、特定された修復ファイルを管理しているストレージ管理手段３から修復されたストレージ２のストレージ管理手段３に対象ファイルを転送するように指示することにより、復旧対象ストレージに格納されていたファイルが修復されると新たな稼動状況テーブル５７の復旧完了フラグをリセットして復旧処理を終了する（ＳＦ６）。尚、復旧完了フラグは新たな稼動状況テーブル５７が生成されるときにセットされ、リセットされるまでは従前の稼動状況テーブル５７に基づいて定常処理が実行される。そして、平準化処理が終了するまでの間、つまり平準化完了フラグがリセットされるまでの間は、稼動状況管理手段５５により更新された新たな稼動状況テーブル５７と、従前の稼動状況テーブル５７の双方が保持され、平準化完了フラグがリセットされるときに従前の稼動状況テーブル５７が消去される。
【０１２４】
平準化処理手段５３による平準化処理が終了するまでの間にクライアントからのファイル読出し要求が発生した場合の読出し処理は上述と同様である。また、平準化処理手段５３による平準化処理が終了するまでの間に、クライアントからのファイル格納要求が発生した場合の格納処理も上述と同様に更新稼動状況テーブル５７に基づいて増設後のストレージ数に基づく冗長格納処理が行なわれる。
【０１２５】
以下に、ストレージ修復管理手段５２によるストレージの修復処理の別の手順を説明する。ストレージ修復管理手段５２は、関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段、及び／または、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段の何れかが復旧対象ストレージを管理するストレージ管理手段に該当するときに、当該ファイルを修復ファイルの候補として特定し、候補となったファイルの識別子と冗長化数に基づいて修復ファイルを特定するように構成することにより、修復ファイルの特定処理を効率的に行なうことができる。
【０１２６】
二重冗長する上述の例ではストレージ管理手段のストレージ群番号２，３，４が関連ストレージ群番号となり、例えば、ストレージ群番号２のストレージ管理手段により管理される何れかのストレージに格納されているファイルの識別子に基づいて冗長格納処理される対象となるストレージ群番号が３となるファイルに対して、ストレージ群番号３のストレージ管理手段により管理される何れかのストレージ（修復対象ストレージを除く）に同一の識別子のファイルが存在しない場合に、当該ファイルが修復ファイルであると特定される。
【０１２７】
以下に、ストレージの修復処理のさらに別の手順を説明する。ストレージ修復管理手段５２は、関連ストレージ群番号で識別される何れかのストレージ管理手段に管理されるストレージに格納されているファイルの識別子を引数として前記ハッシュ関数により得られるハッシュ値とストレージ群数に基づくモデュロ演算により求まるストレージ群番号で識別されるストレージ管理手段、及び／または、当該ストレージ群番号を引数とする可逆平準化関数により求まるストレージ群番号で識別されるストレージ管理手段の何れかが復旧対象ストレージを管理するストレージ管理手段に該当し、前記ハッシュ値と当該ストレージ管理手段により管理されるストレージ数に基づくモデュロ演算により求まるストレージ番号で識別されるストレージが復旧対象ストレージに該当するときに、当該ファイルを修復ファイルとして特定するように構成してもよい。
【０１２８】
二重冗長する上述の例ではストレージ管理手段のストレージ群番号２，４が関連ストレージ群番号となり、例えば、ストレージ群番号２のストレージ管理手段により管理される何れかのストレージに格納されているファイルの識別子に基づいて冗長格納処理される対象となるストレージ群番号が３となるファイルであって、さらに同一のストレージ管理手段により管理されるストレージに対して冗長格納処理される対象となるストレージが復旧対象ストレージとなるファイルが修復ファイルであると特定されるのである。
【０１２９】
このような手順によれば、関連ストレージ群番号のストレージの全てのファイルの冗長化数を識別することなく、ファイルの識別子に基づいて修復ファイルを特定することができる。
【０１３０】
以下に、他の実施形態について説明する。上述した実施形態では、所定のハッシュ関数としてＭＤ５を用いる構成としたが、これに限定するものではなく、ＳＨＡ−１等の他のハッシュ関数を用いるものであっても良い。また、ハッシュ関数の引数となるファイルの識別子は、ファイル名そのもののみならず、そのファイル(もしくはディレクトリ)が存在する場所を示すための文字列であるファイルのパスが付加されたフルパス名をファイルの識別子とすることが好ましい。
【０１３１】
上述した実施例では、ファイル管理手段５を１台とする構成で説明したが、前記ファイル管理手段５を複数台備える構成としても良い。この場合、クライアント４との間にロードバランサ等の負荷分散装置を配置することで、クライアント４からファイル読み書きの要求を行う際のアクセス方法を変更することなく処理速度を向上させることができる。
【０１３２】
尚、上述した実施形態は本発明の一例に過ぎず、本発明の作用効果を奏する範囲において、冗長格納管理手段やストレージ修復管理手段等の各機能ブロックの具体的構成等は適宜変更設計できることは言うまでもなく、各機能ブロックを適宜組み合わせて構成できることも可能である。
【図面の簡単な説明】
【０１３３】
【図１】ファイル格納システムの機能ブロック構成図
【図２】稼動状況テーブルの説明図
【図３】稼動状況テーブルの生成処理を説明するフローチャート
【図４】ファイルの冗長格納処理を説明するフローチャート
【図５】ストレージ修復処理を説明するフローチャート
【図６】ファイルの平準化処理を説明するフローチャート
【図７】別実施形態のファイルの冗長格納処理を説明するフローチャート
【図８】別実施形態のストレージ修復処理を説明するフローチャート
【図９】Ｍ×Ｎのマトリクス状に配列されたストレージに対するファイル格納処理の説明図
【図１０】Ｍ×Ｎのマトリクス状に配列されたストレージに対するファイル読出し処理の説明図
【図１１】Ｍ×Ｎのマトリクス状に配列されたストレージに対するファイル修復処理の説明図
【図１２】ストレージ管理手段により異なる数のストレージが管理される場合のファイル格納処理の説明図
【図１３】ストレージ管理手段により異なる数のストレージが管理される場合のファイル修復処理の説明図
【符号の説明】
【０１３４】
１：ファイル格納システム
２：ストレージ
３：ストレージ管理手段
４：クライアント
５：ファイル管理手段
６：ローカルネットワーク
７：ネットワーク
３０：ファイルシステム
３１：ファイル破損検出手段
３２：ファイル修復手段
３３：ディレクトリ生成管理手段
５０：クライアント用ファイル受渡し手段
５１：冗長格納管理手段
５２：ストレージ修復管理手段
５３：平準化処理手段
５４：ストレージ用ファイル受渡し手段
５５：稼動状況管理手段
５６：バッファメモリ
５７：稼動状況テーブル
【図１】
2008181358.tif 000006
【図２】
2008181358.tif 000007
【図３】
2008181358.tif 000008
【図４】
2008181358.tif 000009
【図５】
2008181358.tif 000010
【図６】
2008181358.tif 000011
【図７】
2008181358.tif 000012
【図８】
2008181358.tif 000013
【図９】
2008181358.tif 000014
【図１０】
2008181358.tif 000015
【図１１】
2008181358.tif 000016
【図１２】
2008181358.tif 000017
【図１３】
2008181358.tif 000018