(57)【要約】【課題】  ファイルを複数のフラグメントに分割して各ストレージ装置に配信する技術において、安全性や耐障害性を確保しつつ従来よりも少ない台数のストレージ装置でファイルを保存する。【解決手段】  ファイル入出力制御装置２００は、クライアント１００からファイルを入力すると所定の分割数および冗長度に応じてかかるファイルから複数のフラグメントを生成する。ファイル入出力制御装置２００は、１台のストレージ装置に複数のフラグメントが格納されることを許容しつつ１台のストレージ装置に同一種類のフラグメントを送信せず、かつ、１台のストレージ装置に全種類のフラグメントを送信しないように各フラグメントを各ストレージ装置３００に配信する。こうすることによりファイル入出力制御装置２００は、クラッキング等に対する安全性やシステムの耐障害性を確保しつつ従来よりも少ない台数のストレージ装置によりファイルを保存することが可能となる。【選択図】  図１
2005215735.tif 000002
【特許請求の範囲】
【請求項１】
所定の情報伝達手段によって接続された複数のストレージ装置に対してファイルの入出力の制御を行うファイル入出力制御装置であって、
所定の分割数ｎ（ｎ≧２なる整数）に応じて前記ファイルを分割して得られた各フラグメントがそれぞれ所定の冗長度ｒ（ｒ≧２なる整数）となるように前記ファイルから複数のフラグメントを生成するフラグメント生成部と、
１台のストレージ装置に複数のフラグメントが格納されることを許容しつつ、１台のストレージ装置に同一種類のフラグメントが格納されず、かつ、１台のストレージ装置に全種類のフラグメントが格納されないように、前記生成した各フラグメントを前記各ストレージ装置に出力するフラグメント出力部と、
を備えるファイル入出力制御装置。
【請求項２】
請求項１に記載のファイル入出力制御装置であって、
前記フラグメント出力部は、
ｍ≧ｎｒ／（ｎ−１）；
の関係を満たすｍ（ｍは整数）台のストレージ装置に対して前記各フラグメントを出力する、ファイル入出力制御装置。
【請求項３】
請求項１に記載のファイル入出力制御装置であって、更に、
前記フラグメントの種類に応じて一意のフラグメント識別子を前記各フラグメントに付与する識別子付与部と、
前記フラグメント識別子と、該フラグメント識別子に対応するフラグメントの配信先であるストレージ装置とを対応付けて記憶する配信先記憶部と、
を備えるファイル入出力制御装置。
【請求項４】
請求項１に記載のファイル入出力制御装置であって、
前記各ストレージ装置から、全種類のフラグメントを入力するフラグメント入力部と、
前記全種類のフラグメントから前記ファイルを再構成するファイル再構成部と、
を備えるファイル入出力制御装置。
【請求項５】
請求項４に記載のファイル入出力制御装置であって、
前記フラグメント入力部は、同じ種類のフラグメントを記憶する複数のストレージ装置のうち、当該ファイル入出力制御装置と通信に要する時間が最も短いストレージ装置から前記フラグメントを入力する、ファイル入出力制御装置。
【請求項６】
請求項４に記載のファイル入出力制御装置であって、
前記フラグメント入力部は、一のフラグメントが入力できなかった場合に、前記配信先記憶部を参照して該一のフラグメントを保存する他のストレージ装置から該一のフラグメントを入力する、ファイル入出力制御装置。
【請求項７】
請求項１に記載のファイル入出力制御装置であって、
更に、前記フラグメント生成部による前記フラグメントの生成に先立ち、前記ファイルに対して暗号化を行う暗号処理部、を備えるファイル入出力制御装置。
【請求項８】
請求項１に記載のファイル入出力制御装置であって、
更に、前記各フラグメントに対して暗号化を行う暗号処理部、を備えるファイル入出力制御装置。
【請求項９】
請求項１に記載のファイル入出力制御装置であって、
前記ファイルには、ファイル識別子が付与されており、
更に、前記ファイル識別子を鍵情報として用い、前記ファイルおよび前記フラグメントの少なくとも一方の暗号化を行う暗号処理部、を備えるファイル入出力制御装置。
【請求項１０】
コンピュータが所定の情報伝達手段によって接続された複数のストレージ装置に対してファイルの入出力の制御を行うための制御方法であって、
所定の分割数ｎ（ｎ≧２なる整数）に応じて前記ファイルを分割して得られた各フラグメントがそれぞれ所定の冗長度ｒ（ｒ≧２なる整数）となるように前記ファイルから複数のフラグメントを生成する工程と、
１台のストレージ装置に複数のフラグメントが格納されることを許容しつつ、１台のストレージ装置に同一種類のフラグメントが格納されず、かつ、１台のストレージ装置に全種類のフラグメントが格納されないように、前記生成した各フラグメントを前記各ストレージ装置に出力する工程と、
を備える制御方法。
【請求項１１】
コンピュータが所定の情報伝達手段によって接続された複数のストレージ装置に対してファイルの入出力の制御を行うためのコンピュータプログラムであって、
所定の分割数ｎ（ｎ≧２なる整数）に応じて前記ファイルを分割して得られた各フラグメントがそれぞれ所定の冗長度ｒ（ｒ≧２なる整数）となるように前記ファイルから複数のフラグメントを生成する機能と、
１台のストレージ装置に複数のフラグメントが格納されることを許容しつつ、１台のストレージ装置に同一種類のフラグメントが格納されず、かつ、１台のストレージ装置に全種類のフラグメントが格納されないように、前記生成した各フラグメントを前記各ストレージ装置に出力する機能と、
をコンピュータに実現させるためのコンピュータプログラム。
【請求項１２】
請求項１１に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のストレージ装置に対してファイルを分割して格納する技術に関する。
【背景技術】
【０００２】
ストレージ技術の分野において、例えば、ストライピングと呼ばれる技術や、下記非特許文献１に記載の技術のように、１つのデータを複数のフラグメントに分割し、分割した各フラグメントを複数のストレージ装置に分散して格納する技術が知られている。
【０００３】
このような技術によれば、いずれかのストレージ装置がクラッキングされた場合であってもデータが断片化されているため、元のデータの復元が困難となり、安全性が向上することとなる。
【０００４】
【非特許文献１】「サバイバブル・インフォメーション・ストレージ・システムズ（Survivable Information Storage Systems）」，コンピュータ（COMPUTER），（米国），アイイーイーイー・コンピュータ・ソサイエティ（IEEE COMPUTER SOCIETY），２０００年，８月
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上述した従来の技術では、ファイルの分割数に応じて相当数のストレージ装置が必要になる。そのため、セキュリティの向上のためにフラグメント数を多くしようとすると、それだけストレージ装置の台数も必要となりコストがかさむこととなっていた。また、上述した従来の技術では、ストレージ装置が１台でも故障すると元のデータを復元することができないという課題もあった。
【０００６】
本発明は、このような課題に鑑みてなされたものであり、複数のストレージ装置に対してファイルを分割して格納する技術において、安全性や耐障害性を確保しつつ、従来よりも少ない台数のストレージ装置によってフラグメントを格納することを目的としている。
【課題を解決するための手段】
【０００７】
上記課題の少なくとも一部を解決するため、本発明のファイル入出力制御装置を次のように構成した。すなわち、所定の情報伝達手段によって接続された複数のストレージ装置に対してファイルの入出力の制御を行うファイル入出力制御装置であって、所定の分割数ｎ（ｎ≧２なる整数）に応じて前記ファイルを分割して得られた各フラグメントがそれぞれ所定の冗長度ｒ（ｒ≧２なる整数）となるように前記ファイルから複数のフラグメントを生成するフラグメント生成部と、１台のストレージ装置に複数のフラグメントが格納されることを許容しつつ、１台のストレージ装置に同一種類のフラグメントが格納されず、かつ、１台のストレージ装置に全種類のフラグメントが格納されないように、前記生成した各フラグメントを前記各ストレージ装置に出力するフラグメント出力部とを備えることを要旨とする。
【０００８】
本発明のファイル入出力制御装置によれば、１台のストレージ装置に対して複数のフラグメントを出力することができるため、従来よりも少ない台数のストレージ装置によってフラグメントを保存することができる。また、１台のストレージ装置に対して全ての種類のフラグメントが出力されることがないため、あるストレージ装置から不正にフラグメントを盗用されたとしてもファイルを再構成することができない。従って、クラッキング行為などに対する安全性を確保することができる。また、各フラグメントには冗長性が与えられ、複数のストレージ装置に分散されて出力されるため、冗長度ｒを下回る台数であればストレージ装置に障害が発生したとしても他のストレージ装置からフラグメントを読み出すことが可能となる。そのため、ストレージシステムの耐障害性を向上させることができる。
【０００９】
なお、上記フラグメント生成部は、例えば、ファイルを分割した後に、各フラグメントを複製することによって上記複数のフラグメントを生成してもよいし、ファイルを複製してから各ファイルを分割することによって上記複数のフラグメントを生成してもよい。
【００１０】
また、前記フラグメント出力部は、
ｍ≧ｎｒ／（ｎ−１）；
の関係を満たすｍ（ｍは整数）台のストレージ装置に対して前記各フラグメントを出力するものとすることができる。かかる演算式によれば、ストレージシステムの管理者は、分割数ｎと冗長度ｒに応じて必要最小限のストレージ装置の台数を容易に把握することが可能となる。
【００１１】
上記ファイル入出力制御装置は、更に、前記フラグメントの種類に応じて一意のフラグメント識別子を前記各フラグメントに付与する識別子付与部と、前記フラグメント識別子と、該フラグメント識別子に対応するフラグメントの配信先であるストレージ装置とを対応付けて記憶する配信先記憶部とを備えるものとしてもよい。かかる構成によれば、ファイル入出力制御装置は、各フラグメントの配信先を容易に把握することが可能となる。
【００１２】
上記ファイル入出力制御装置は、更に、前記各ストレージ装置から、全種類のフラグメントを入力するフラグメント入力部と、前記全種類のフラグメントから前記ファイルを再構成するファイル再構成部とを備えるものとしてもよい。
【００１３】
このような構成によれば、ファイル入出力制御装置は、一旦複数のフラグメントに分割したファイルを再構成することができる。ここで、ファイル入出力制御装置が前記配信先記憶部を備えるものとすれば、ファイル入出力制御装置は、かかる配信先記憶部を参照することにより、各フラグメントを入力すべきストレージ装置を容易に選択することができる。
【００１４】
上記ファイル入出力制御装置において、前記フラグメント入力部は、同じ種類のフラグメントを記憶する複数のストレージ装置のうち、当該ファイル入出力制御装置と通信に要する時間が最も短いストレージ装置から前記フラグメントを入力するものとしてもよい。
【００１５】
こうすることにより、各フラグメントを迅速に入力することが可能となる。通信に要する時間の長短は、例えば、各ストレージ装置に対して「Ｐｉｎｇ」コマンドを発行することにより各ストレージ装置の応答速度を測定して判断するものとしてもよいし、「Ｔｒａｃｅｒｔ」コマンドなどにより両装置間に介在するルータの数を計測し、ルータの数が多いほど通信に要する時間が長いものとして判断するものとしてもよい。通信に要する時間は、予めファイル入出力制御装置内に登録しておくものとしてもよいし、フラグメントを入力する際に、その都度測定するものとしてもよい。
【００１６】
上記ファイル入出力制御装置において、前記フラグメント入力部は、一のフラグメントが入力できなかった場合に、前記配信先記憶部を参照して該一のフラグメントを保存する他のストレージ装置から該一のフラグメントを入力するものとしてもよい。こうすることにより、より確実にファイルを再構成することが可能となる。
【００１７】
上記ファイル入出力制御装置は、更に、前記フラグメント生成部による前記フラグメントの生成に先立ち、前記ファイルに対して暗号化を行う暗号処理部、もしくは、前記各フラグメントに対して暗号化を行う暗号処理部を備えるものとしてもよい。こうすることにより、ストレージ装置から不正にフラグメントを盗用されたとしても、その内容を秘匿することが可能となる。
【００１８】
また、前記ファイルには、ファイル識別子が付与されており、上記ファイル入出力制御装置は、更に、前記ファイル識別子を鍵情報として用い、前記ファイルおよび前記フラグメントの少なくとも一方の暗号化を行う暗号処理部を備えるものとしてもよい。こうすることにより、鍵情報を別途生成する必要がないため、容易に暗号化を行うことができる。ファイル識別子としては、例えば、ファイル名などを用いることができる。暗号化の手法としては、例えば、ＤＥＳやＲＣ２、ＲＣ４などを用いることができる。
【００１９】
本発明において、上述した種々の態様は、適宜、組み合わせたり、一部を省略したりして適用することができる。また、本発明は、コンピュータが所定の情報伝達手段によって接続された複数のストレージ装置に対してファイルの入出力の制御を行うための制御方法や、コンピュータが所定の情報伝達手段によって接続された複数のストレージ装置に対してファイルの入出力の制御を行うためのコンピュータプログラムなどとしても構成することができる。いずれの構成においても上述した種々の態様を適用可能である。
【００２０】
上記コンピュータプログラムは、搬送波中に具現化されたコンピュータ・データ信号として構成することができる。また、コンピュータが読み取り可能な記録媒体に記録するものとしてもよい。記録媒体としては、例えば、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態について実施例に基づき次の順序で説明する。
Ａ．ファイル保存システムの概略構成：
Ｂ．ファイル入出力制御装置の概略構成：
Ｃ．ストレージ装置の概略構成：
Ｄ．各種処理：
（Ｄ１）フラグメント生成処理：
（Ｄ２）フラグメント出力処理：
（Ｄ３）ファイル再構成処理：
【００２２】
Ａ．ファイル保存システムの概略構成：
図１は、実施例としてのファイル保存システム１０の概略構成を示す説明図である。ファイル保存システム１０は、クライアントＣＬ１，ＣＬ２と、ファイル入出力制御装置２００と、ストレージ装置ＳＴ１，ＳＴ２，ＳＴ３によって構成されている。以下の説明では、クライアントＣＬ１，ＣＬ２をまとめてクライアント１００と、ストレージ装置ＳＴ１，ＳＴ２，ＳＴ３をまとめてストレージ装置３００と記載する場合がある。図１では、クライアント１００を２台、ストレージ装置を３台それぞれ設けるものとしたが、台数はこれらに限定されない。なお、一点鎖線内に示したクライアントＣＬ３とファイル入出力制御装置２００ｂに関する説明は後述する。
【００２３】
クライアント１００とファイル入出力制御装置２００とは、ＬＡＮを介して接続されている。また、ファイル入出力制御装置２００とストレージ装置３００も、ＬＡＮを介して接続されている。これらのＬＡＮは、同一のＬＡＮとしてもよいし、異なるＬＡＮとしてもよい。また、ＬＡＮに替えてＷＡＮやインターネットを用いるものとしてもよい。また、ファイル入出力制御装置２００とストレージ装置３００とは、例えば、ストレージエリアネットワーク（ＳＡＮ）によって接続されていてもよい。
【００２４】
クライアント１００は、ＣＰＵやＲＡＭ、ハードディスク等を備えるパーソナルコンピュータであり、ファイル入出力制御装置２００を介して、ストレージ装置３００にファイルを保存する機能を有する。ファイルの保存は、次のように行われる。ファイル入出力制御装置２００は、クライアント１００からファイルを入力すると、所定の分割数ｎおよび冗長度ｒに応じてこのファイルから複数のフラグメントを生成する。そして、各フラグメントを所定の規則に基づき各ストレージ装置３００に配信する。ストレージ装置３００は、大容量のディスク装置を内蔵しており、ファイル入出力制御装置２００から出力された各フラグメントをかかるディスク装置に保存する。すなわち、本実施例では、クライアント１００から出力されたファイルは、複数のフラグメントに分割された上で、複数のストレージ装置に分散されて保存されることとなる。
【００２５】
なお、ファイル保存システム１０のシステム管理者は、上記分割数ｎおよび冗長度ｒを用いて以下の式（１）で定まるｍ（ｍは整数）台のストレージ装置３００を用意するものとする。本実施例において、ストレージ装置３００がｍ台に満たない場合は生成したフラグメントの全てを保存できないからである。
【００２６】
ｍ≧ｎｒ／（ｎ−１）  ...（１）；
【００２７】
ここで、ファイルの分割数ｎを３、冗長度ｒを２としてファイル保存システム１０によるファイルの保存処理について簡単に説明する。この場合には、上記式（１）によってストレージ装置３００が最低３台必要となる。まず、図示するようにクライアントＣＬ１から「Ａ」というファイルが出力されると、ファイル入出力制御装置２００は、前記分割数に応じてこのファイルを３つのフラグメントａ１，ａ２，ａ３に分割する。そして、更に、分割された各フラグメントを前記冗長度に応じて複製する。これにより、フラグメントａ１が２個、フラグメントａ２が２個、フラグメントａ３が２個、それぞれ生成されることとなる。そして、ファイル入出力制御装置２００は、以下に挙げる規則（Ａ）（Ｂ）（Ｃ）に基づき各フラグメントを各ストレージ装置３００に配信する。
【００２８】
（Ａ）１台のストレージ装置に複数のフラグメントが配信されることを許容する。
（Ｂ）１台のストレージ装置に同一種類のフラグメントを送信しない。
（Ｃ）１台のストレージ装置に全種類のフラグメントを送信しない。
【００２９】
上記規則（Ａ）によれば、１台のストレージ装置３００に１つ以上のフラグメントが格納されることが許容される。ただし、ストレージ装置３００の台数が多い場合には、フラグメントを１つも格納しないストレージ装置３００が存在する場合もあり得る。
【００３０】
上記規則（Ｂ）によれば、異なる種類のフラグメントが１台のストレージ装置３００に格納される。しかし、例えば、１台のストレージ装置に、ａ１，ａ１，ａ２といった組み合わせでフラグメントを格納することは、異なる種類のフラグメントを格納することにはなるが、同一種類のフラグメントを格納することになるため、この規則では許容されない。
【００３１】
上記規則（Ｃ）は、例えば、ａ１，ａ２，ａ３，ａ１といった組み合わせのフラグメント、すなわち全種類のフラグメントに他のフラグメントを加えたフラグメントを送信することを許容するものではない。
【００３２】
図には、これらの規則に従い、ストレージ装置ＳＴ１にフラグメントａ１，ａ２が、ストレージ装置ＳＴ２にフラグメントａ２，ａ３が、ストレージ装置ＳＴ３にフラグメントａ３，ａ１が配信された例を示した。
【００３３】
かかるファイル保存システム１０によれば、上記規則（Ａ）により、１台のストレージ装置に複数のフラグメントを保存することができるため、従来よりも少ない台数のストレージ装置３００でフラグメントを保存することが可能となる。
【００３４】
また、かかるファイル保存システム１０によれば、上記規則（Ｂ）により、同一種類のフラグメントは複数のストレージ装置３００に分散して保存されるため、前記冗長度を下回る台数のストレージ装置３００に障害が発生したとしても、他のストレージ装置３００に保存されたフラグメントを用いることによりファイルを再構成することができる。
【００３５】
例えば、上記説明では冗長度を２としたため、それを下回る台数、すなわち１台のストレージ装置３００に障害が発生したとする。ここでは、ストレージ装置ＳＴ１に障害が発生したとする。しかし、ストレージ装置ＳＴ１に保存されているフラグメントａ１，ａ２は、図示するように、フラグメントａ１はストレージ装置ＳＴ３に、フラグメントａ２はストレージ装置ＳＴ２にそれぞれ別途保存されている。従って、ストレージ装置ＳＴ１に障害が発生したとしても、他のストレージ装置ＳＴ２，ＳＴ３に保存されているフラグメントを用いることにより、ファイルを再構成することが可能となる。従って、システムの耐障害性を高めることが可能となる。
【００３６】
また、かかるファイル保存システム１０によれば、上記規則（３）により、１台のストレージ装置３００に全種類のフラグメントが配信されることがないため、ある１台のストレージ装置３００からクラッキングなどの行為によりフラグメントが盗用されても、ファイルを再構成することができない。
【００３７】
例えば、悪意ある第３者が、図中の一点鎖線内に示したクライアントＣＬ３を用いてファイル入出力装置２００とは別のファイル入出力装置２００ｂを介してストレージ装置ＳＴ２に保存されたデータを不正に読み取ったとする。しかし、ストレージ装置ＳＴ２には、フラグメントａ２とフラグメントａ３は保存されているが、フラグメントａ１は保存されていない。そのため、第３者は全フラグメントを揃えることができずファイルを完全に復元することができない。従って、システムの安全性を高めることができる。
【００３８】
以下、ファイル保存システム１０を構成する各装置およびファイルの保存に係る各種処理の詳細について説明する。
【００３９】
Ｂ．ファイル入出力制御装置の概略構成：
図２は、ファイル入出力制御装置２００の概略構成を示す説明図である。ファイル入出力制御装置２００は、ＣＰＵ２１０、ＲＡＭ２２０、ＲＯＭ２３０、ネットワークインタフェースコントローラ（ＮＩＣ）２４０、ディスク装置２５０等が所定のバスにより接続されたコンピュータとして構成されている。ＮＩＣ２４０は、ＬＡＮを介して他の装置と通信を行うためのコントローラである。
【００４０】
ＲＯＭ２３０には、ファイル入出力制御装置２００を制御するための制御プログラムが記録されている。ＣＰＵ２１０は、ＲＡＭ２２０をワークエリアとして用いることによりかかる制御プログラムを実行する。なお、制御プログラムは、ディスク装置２５０にインストールされているものとしてもよい。図の下部には、この制御プログラムによってソフトウェア的に実現される機能ブロックを示した。
【００４１】
設定部２３１は、システム管理者からファイルの分割数および冗長度の設定を受けるための機能部である。また、設定部２３１は、システム管理者から、ファイルをフラグメントに分割して保存できなかった場合の処理についての設定も受ける。設定された各パラメータは、ＲＡＭに記録される。
【００４２】
図３は、設定部２３１によって提供されるＧＵＩの一例を示す説明図である。かかるＧＵＩは、ファイル入出力制御装置２００に接続されたＣＲＴ（図示せず）等に表示してもよいし、Ｗｅｂブラウザ経由でクライアント１００に表示させるものとしてもよい。図示するように、このＧＵＩは、分割数と冗長度を設定するための操作部と、ファイルを分割して保存することができなかった場合に実行する処理を設定するための操作部を有する。ここでは、ファイルをフラグメントに分割して保存できなかった場合には、クライアントにエラーを返す処理を行うか、分割せずにファイルを保存し、分割できなかった旨を電子メールによってシステム管理者に通知する処理を行うかのいずれかの処理を選択可能であるものとした。
【００４３】
ファイル入出力要求処理部２３２（図２）は、クライアント１００からファイルの入出力要求を受信する。ファイルの入力要求とは、クライアント１００がストレージ装置３００からファイルを読み出すための要求であり、ファイルの出力要求は、クライアント１００がストレージ装置３００に対してファイルを保存するための要求である。
【００４４】
暗号処理部２３３は、クライアント１００から受信したファイルの暗号化や、クライアント１００に送信するファイルの復号を行う。
【００４５】
フラグメント生成部２３４は、設定部２３１によって設定された分割数と冗長度に応じてクライアント１００から受信したファイルを分割、複製することにより、複数のフラグメントを生成する。
【００４６】
識別子付与部２３５は、フラグメント生成部２３４によって生成されたフラグメントの種類に応じて各フラグメントに一意の識別子を付与する。図４は、識別子の付与されたフラグメントの構造を示す説明図である。図示するように、ファイル入出力制御装置２００によって最終的にストレージ装置３００に出力されるフラグメントは、フラグメント識別子とデータ本体とを有する構造となる。
【００４７】
フラグメント入出力部２３６（図２）は、各ストレージ装置３００に対してフラグメントの入出力を行う。フラグメントの出力は、上記規則（Ａ）（Ｂ）（Ｃ）に従って行う。これらの規則は、フラグメント入出力部２３６を構成するプログラムに組み込まれている。
【００４８】
ファイル再構成部２３７は、クライアント１００からファイルの入力要求があった場合に、各ストレージ装置３００から各フラグメントを収集して、ファイルの再構成を行う。再構成されたファイルは、上記暗号処理部２３３によって復号されて、クライアント１００に出力される。
【００４９】
ディスク装置２５０は、配信先テーブルＤＴとストレージ装置管理テーブルＣＴとを保持している。図５は、ストレージ装置管理テーブルＣＴの一例を示す説明図である。フラグメント入出力部２３６は、ストレージ装置管理テーブルＣＴを参照することにより、各フラグメントの出力先を選択する。更に、フラグメント入出力部２３６は、ストレージ装置３００にフラグメントを出力すると、ストレージ装置管理テーブルＣＴを更新して、各ストレージ装置３００にどのフラグメントを出力したかを記録する。
【００５０】
図６は、配信先テーブルＤＴの一例を示す説明図である。フラグメント入出力部２３６は、ストレージ装置３００に各フラグメントを出力すると、配信先テーブルＤＴを更新して、各フラグメントをどのストレージ装置３００に出力したかを記録する。配信先テーブルＤＴには、クライアント１００から入力したファイルを識別するためのファイル識別子と、このファイルを構成する各フラグメントの識別子と、各フラグメントの配信先を表すストレージ装置３００の識別名とが対応付けて記録される。
【００５１】
Ｃ．ストレージ装置の概略構成：
図７は、ストレージ装置３００の概略構成を示す説明図である。ストレージ装置３００は、ＣＰＵ３１０やＲＡＭ３２０、ＲＯＭ３３０、ネットワークインタフェースコントローラ（ＮＩＣ）３４０、および大容量のディスク装置３５０等が所定のバスにより接続されたコンピュータとして構成されている。
【００５２】
ＲＯＭ３３０には、ストレージ装置３００を制御するための制御プログラムが記録されている。ＣＰＵ３１０は、ＲＡＭ３２０をワークエリアとして用いることによりかかる制御プログラムを実行する。なお、制御プログラムは、ディスク装置３５０にインストールされているものとしてもよい。図の下部に示すフラグメント入出力要求処理部３３１は、この制御プログラムによってソフトウェア的に実現される機能部である。
【００５３】
フラグメント入出力要求処理部３３１は、ファイル入出力制御装置２００から出力されたフラグメントをディスク装置３５０に保存したり、ディスク装置３５０からフラグメントを読み出してファイル入出力制御装置２００に出力する機能を備える。
【００５４】
Ｄ．各種処理：
（Ｄ１）フラグメント生成処理：
図８は、ファイル入出力制御装置２００のＣＰＵ２１０が実行するフラグメント生成処理のフローチャートである。このフラグメント生成処理は、ファイル入出力制御装置２００がクライアント１００からファイルの出力要求を受けた場合に実行される処理である。
【００５５】
ＣＰＵ２１０は、クライアント１００からファイルの出力要求とともにファイル識別子の付与されたファイルを入力すると（ステップＳ１０）、設定部２３１によって設定された分割数ｎと冗長度ｒをＲＡＭ２２０から取得する（ステップＳ１１）。そして、ＣＰＵ２１０は、ステップＳ１０において入力したファイル識別子を鍵情報として用いることによりＤＥＳ方式によってファイルを暗号化する（ステップＳ１２）。なお、本実施例では、暗号化手法としてＤＥＳを用いるものとしたが、Ｔｒｉｐｌｅ  ＤＥＳやＲＣ２、ＲＣ４などの各種暗号化手法を用いるものとしてもよい。
【００５６】
上記ファイル識別子は、クライアント１００が一意に生成するものとしてもよいが、ファイル入出力制御装置２００が、入力したファイルのファイル名とファイルを出力したクライアント１００のＩＰアドレスなどを結合することにより生成してもよい。ファイル入出力制御装置２００が生成するものとすれば、ファイル保存システム１０内で一意の識別子を容易に生成することができる。
【００５７】
次に、ＣＰＵ２１０は、上記ステップＳ１１によって取得した分割数ｎに応じて、暗号化したファイルをｎ等分することによりｎ個のフラグメントを生成する（ステップＳ１３）。更に、ＣＰＵ２１０は、生成した各フラグメントに一意のフラグメント識別子を付与する（ステップＳ１４）。フラグメント識別子は、例えば、上記ファイル識別子にフラグメントが分割された順序を表す数値を結合することによって生成することができる。こうすることにより、ＣＰＵ２１０は、ファイル保存システム１０内で一意の識別子を各フラグメントに付与することができる。
【００５８】
最後に、ＣＰＵ２１０は、上記ステップＳ１１によって取得した冗長度ｒに応じてフラグメント識別子の付与された各フラグメントを複製する（ステップＳ１５）。以上の処理によって、フラグメント生成処理は終了する。なお、上記ステップＳ１２では、フラグメントの生成に先立ちファイルを暗号化するものとしたが、フラグメントを生成した後に、各フラグメントに対して暗号化を行うものとしてもよい。
【００５９】
（Ｄ２）フラグメント出力処理：
図９は、ファイル入出力制御装置２００のＣＰＵ２１０が実行するフラグメント出力処理のフローチャートである。このフラグメント出力処理は、上記フラグメント生成処理によってフラグメントが生成された後に実行される処理である。
【００６０】
まず、ＣＰＵ２１０は、生成されたフラグメントの中からフラグメント識別子の番号順にフラグメントを１つ選択する（ステップＳ２０）。以下の説明では、ここで選択されたフラグメントを「ｉ」と称する。更に、ＣＰＵ２１０は、ストレージ装置管理テーブルＣＴを参照してストレージ装置３００を１つ選択する（ステップＳ２１）。以下の説明では、ここで選択されたストレージ装置を「ｓ」と称する。かかる処理において、ＣＰＵ２１０は、例えば、ストレージ装置管理テーブルＣＴに登録されているフラグメントの少ない順にストレージ装置ｓを選択するものとすることができる。
【００６１】
次に、ＣＰＵ２１０は、ストレージ装置管理テーブルＣＴを参照することによりフラグメントｉが、ストレージ装置ｓに既に保存されているか否かを検索する（ステップＳ２２）。既に保存されていると検索された場合には（ステップＳ２２：Ｙｅｓ）、ＣＰＵ２１０は、１台のストレージ装置ｓに同じ種類のフラグメントを重複して出力しないために、他のストレージ装置３００がストレージ装置管理テーブルＣＴに登録されているかどうかを検索する（ステップＳ２３）。登録されていると検索された場合には（ステップＳ２３：Ｙｅｓ）、ＣＰＵ２１０は、上記ステップＳ２１に処理を戻し、次のストレージ装置３００を選択する。他のストレージ装置３００がストレージ装置管理テーブルＣＴに登録されていないと検索された場合には（ステップＳ２３：Ｎｏ）、ＣＰＵ２１０は、生成したフラグメントを全て保存することができないため、設定部２３１によって設定されたエラー処理を実行し（ステップＳ２４）、本フラグメント出力処理を終了する。
【００６２】
上記ステップＳ２２において、フラグメントｉがストレージ装置ｓに登録されていないと検索された場合には（ステップＳ２２：Ｎｏ）、ＣＰＵ２１０は、更に、ストレージ装置管理テーブルＣＴを参照してフラグメントｉ以外の全種類のフラグメントがストレージ装置ｓに保存されているかどうかを検索する（ステップＳ２５）。フラグメントｉ以外の全種類のフラグメントが既に保存されていると検索された場合には（ステップＳ２５：Ｙｅｓ）、ＣＰＵ２１０は、１台のストレージ装置ｓに全種類のフラグメントを出力しないために、他のストレージ装置３００がストレージ装置管理テーブルＣＴに登録されているかどうかを検索する（ステップＳ２３）。他のストレージ装置３００が登録されていると検索された場合には（ステップＳ２３：Ｙｅｓ）、ＣＰＵ２１０は、上記ステップＳ２１に処理を戻し、次のストレージ装置３００を選択する。他のストレージ装置３００がストレージ装置管理テーブルＣＴに登録されていないと検索された場合には（ステップＳ２３：Ｎｏ）、ＣＰＵ２１０は、生成したフラグメントを全て保存することができないため、設定部２３１によって設定されたエラー処理を実行し（ステップＳ２４）、フラグメント出力処理を終了する。
【００６３】
上記ステップＳ２５において、フラグメントｉ以外の全種類のフラグメントがストレージ装置ｓに保存されていないと検索された場合には（ステップＳ２５：Ｎｏ）、ＣＰＵ２１０は、配信先テーブルＤＴのフラグメントｉに対してストレージ装置ｓの識別名を登録し（ステップＳ２６）、更に、ストレージ装置管理テーブルＣＴのストレージ装置ｓに対してフラグメントｉの識別子を登録する（ステップＳ２７）。そして、フラグメントｉをストレージ装置ｓに出力する（ステップＳ２８）。
【００６４】
ＣＰＵ２１０は、フラグメントｉをストレージ装置ｓに出力した後、未だ出力していない他のフラグメントが存在するか否かを判定する（ステップＳ２９）。他のフラグメントが存在する場合には（ステップＳ２９：Ｙｅｓ）、上記ステップＳ２０に処理を戻し、次のフラグメントを選択する。他のフラグメントが存在しない場合には（ステップＳ２９：Ｎｏ）、全フラグメントの出力が完了したこととなるため、本フラグメント出力処理を終了する。
【００６５】
以上で説明したフラグメント出力処理によれば、ファイル入出力制御装置２００は、上記規則（Ａ）（Ｂ）（Ｃ）に基づくフラグメントの配信を行うことが可能となる。
【００６６】
（Ｄ３）ファイル再構成処理：
図１０は、ファイル入出力制御装置２００のＣＰＵ２１０が実行するファイル再構成処理のフローチャートである。このファイル再構成処理は、クライアント１００からファイルの入力要求を受信した場合に実行される処理である。
【００６７】
まず、ＣＰＵ２１０は、クライアント１００から、ファイル入力要求とともにファイル識別子（以下、このファイル識別子を「ｅ」と称する）を受信すると（ステップＳ３０）、配信先テーブルＤＴを参照してファイル識別子ｅを検索する（ステップＳ３１）。
【００６８】
上記検索の結果、配信先テーブルＤＴにファイル識別子ｅが登録されていない場合には（ステップＳ３２：Ｎｏ）、ＣＰＵ２１０は、クライアント１００に対して、該当するファイルが存在しない旨のエラーを通知して（ステップＳ３３）、本ファイル再構成処理を終了する。一方、配信先テーブルＤＴにファイル識別子ｅが登録されている場合には（ステップＳ３２：Ｙｅｓ）、ＣＰＵ２１０は、ファイル識別子ｅに対応するフラグメント識別子（以下、このフラグメント識別子を「ｆ」と称する）を配信先テーブルＤＴに登録されている順序で１つ取得する（ステップＳ３４）。
【００６９】
次に、ＣＰＵ２１０は、フラグメント識別子ｆに対応するストレージ装置３００を配信先テーブルＤＴから１つ選択する（ステップＳ３５）。ストレージ装置３００が複数登録されている場合には、当該ファイル入出力制御装置２００との通信に要する時間が最も短いストレージ装置３００を選択する。
【００７０】
上記ステップＳ３５において、ＣＰＵ２１０は、例えば、各ストレージ装置３００に対して「Ｐｉｎｇ」コマンドを発行することにより各ストレージ装置３００の応答速度を調べ、最も応答速度の速いストレージ装置３００を選択することができる。その他、ＣＰＵ２１０は、各ストレージ装置３００に対して「Ｔｒａｃｅｒｔ」コマンドや「Ｔｒａｃｅｒｏｕｔｅ」コマンドなどを発行することにより、ＬＡＮ上に介在するルータの数を調べ、介在するルータの数が最も少ないストレージ装置３００を選択するものとしてもよい。その他、例えば、予めストレージ装置管理テーブルＣＴや配信先テーブルＤＴに各ストレージ装置３００との通信に要する時間が記録されているものとして、ＣＰＵ２１０は、かかる時間を参照することによってストレージ装置３００を選択するものとしてもよい。
【００７１】
次に、ＣＰＵ２１０は、上記ステップＳ３５によって選択したストレージ装置ｓに対して、フラグメント識別子ｆの付与されたフラグメントの出力を要求する（ステップＳ３６）。ストレージ装置ｓは、かかる要求に応じてフラグメントｆをファイル入出力制御装置２００に出力する。
【００７２】
次に、ＣＰＵ２１０は、フラグメントｆの受信に成功したか否かを判断する（ステップＳ３７）。上記ステップＳ３５で選択したストレージ装置ｓに障害が発生している等の理由によって、フラグメントｆの受信に失敗した場合には（ステップＳ３７：Ｎｏ）、ＣＰＵ２１０は、配信先テーブルＤＴを参照して、フラグメントｆを格納する他のストレージ装置３００が登録されていないかどうかを検索する（ステップＳ３８）。他のストレージ装置が登録されていると検索された場合には（ステップＳ３８：Ｙｅｓ）、ＣＰＵ２１０は、上記ステップＳ３５に処理を戻し、他のストレージ装置３００の中からストレージ装置３００を１つ選択する。一方、他のストレージ装置３００が登録されていないと検索された場合には（ステップＳ３８：Ｎｏ）、ＣＰＵ２１０は、もはやフラグメントｆを取得することができず、ファイルの再構成が不可能のため、クライアント１００にファイルの再構成に失敗した旨のエラーを通知して（ステップＳ３３）、本ファイル再構成処理を終了する。
【００７３】
上記ステップＳ３６におけるフラグメントｆの出力要求によってフラグメントｆの受信に成功した場合には（ステップＳ３７：Ｙｅｓ）、ＣＰＵ２１０は、未だ受信していないフラグメントがあるかどうかを判断する（ステップＳ３９）。未だ受信していないフラグメントがある場合には（ステップＳ３９：Ｙｅｓ）、ＣＰＵ２１０は、上記ステップＳ３４に処理を戻すことにより、他の全てのフラグメントの取得を行う。
【００７４】
ＣＰＵ２１０は、すべてのフラグメントを受信した場合には（ステップＳ３９：Ｎｏ）、受信した各フラグメントからフラグメント識別子を除去するとともに各フラグメントの結合を行い、更に、上記ステップＳ３０で入力したファイル識別子を鍵情報として復号処理を行うことによってファイルを再構成する（ステップＳ４０）。最後に、ＣＰＵ２１０は、再構成したファイルをクライアント１００に送信する（ステップＳ４１）。
【００７５】
以上で説明したファイル再構成処理では、例えば、ステップＳ３５において、フラグメントの出力を要求するストレージ装置３００がなるべく少ない台数となるようにストレージ装置３００を選択するものとしてもよい。こうすることにより、ネットワークトラフィックの増加を抑制することができる。
【００７６】
以上、本発明の実施例について説明した。本実施例のファイル入出力制御装置２００によれば、システムの安全性および耐障害性を確保しつつ、従来よりも少ない台数のストレージ装置３００でファイルを分割して保存することが可能となる。
【００７７】
なお、本発明はこのような実施例に限定されることはなく、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、ソフトウェアによって実現した機能は、ハードウェアによって実現するものとしてもよい。
【図面の簡単な説明】
【００７８】
【図１】ファイル保存システムの概略構成を示す説明図である。
【図２】ファイル入出力制御装置の概略構成を示す説明図である。
【図３】分割数および冗長度の設定を行うためのＧＵＩの一例を示す説明図である。
【図４】識別子の付与されたフラグメントの構造を示す説明図である。
【図５】ストレージ装置管理テーブルの一例を示す説明図である。
【図６】配信先テーブルの一例を示す説明図である。
【図７】ストレージ装置の概略構成を示す説明図である。
【図８】フラグメント生成処理のフローチャートである。
【図９】フラグメント出力処理のフローチャートである。
【図１０】ファイル再構成処理のフローチャートである。
【符号の説明】
【００７９】
１０...ファイル保存システム
１００...クライアント
２００，２００ｂ...ファイル入出力制御装置
３００...ストレージ装置
２１０，３１０...ＣＰＵ
２２０，３２０...ＲＡＭ
２３０，３３０...ＲＯＭ
２４０，３４０...ネットワークインタフェースコントローラ
２５０，３５０...ディスク装置
２３１...設定部
２３２...ファイル入出力要求処理部
２３３...暗号処理部
２３４...フラグメント生成部
２３５...識別子付与部
２３６...フラグメント入出力部
２３７...ファイル再構成部
３３１...フラグメント入出力要求処理部
ＤＴ...配信先テーブル
ＣＴ...ストレージ装置管理テーブル
【図１】
2005215735.tif 000003
【図２】
2005215735.tif 000004
【図３】
2005215735.tif 000005
【図４】
2005215735.tif 000006
【図５】
2005215735.tif 000007
【図６】
2005215735.tif 000008
【図７】
2005215735.tif 000009
【図８】
2005215735.tif 000010
【図９】
2005215735.tif 000011
【図１０】
2005215735.tif 000012