(57)【特許請求の範囲】
【請求項１】
ファイルの種を記憶する記憶手段と、
前記ファイルの種から疑似乱数生成アルゴリズムを使用してファイルのデータを生成するデータ生成手段と、
ファイルに対する読み込み要求を受け付け、前記データ生成手段で生成されたデータを含むアクセス応答を返却するファイルシステムアクセス手段と
を備え、
前記データ生成手段は、
前記読み込み要求で指定されるオフセットと固定長のブロックサイズとからアクセス対象となるファイルブロックの番号とブロック内オフセットとを算出し、
前記ファイルの種と前記ファイルブロックの番号とから非再帰的疑似乱数生成アルゴリズムを使用して前記ファイルブロックに対応するブロックの種を生成し、
前記ブロックの種から再帰的疑似乱数生成アルゴリズムを使用して前記ファイルブロックのデータを生成し、
前記生成した前記ファイルブロックのデータのうち前記ブロック内オフセットと前記読み込み要求で指定されるデータサイズとで定まるデータをアクセス対象となるデータとして生成する
仮想ファイルシステム。
【請求項２】
前記データ生成手段で生成されたアクセス対象となるデータと書き込みデータとを比較するデータ検証手段を備え、
前記ファイルシステムアクセス手段は、前記ファイルの先頭からのオフセットとデータサイズと書き込みデータとを指定した前記ファイルに対する書き込み要求を受け付け、前記データ検証手段による比較結果を含むアクセス応答を返却する
ことを特徴とする請求項１に記載の仮想ファイルシステム。
【請求項３】
ファイル名からファイルの種を抽出して前記記憶手段に記憶するファイル作成手段
を備えることを特徴とする請求項１または２に記載の仮想ファイルシステム。
【請求項４】
前記ファイルの種はファイル名に対応して前記記憶手段に記憶されている
ことを特徴とする請求項１乃至３の何れかに記載の仮想ファイルシステム。
【請求項５】
ファイルの種を記憶する記憶手段と、データ生成手段と、ファイルシステムアクセス手段とを有するコンピュータが実行する仮想ファイル方法であって、
前記データ生成手段が、前記ファイルの種から疑似乱数生成アルゴリズムを使用してファイルのデータを生成し、
前記ファイルシステムアクセス手段が、ファイルに対する読み込み要求を受け付け、前記生成されたデータを含むアクセス応答を返却し、
前記ファイルのデータの生成では、前記データ生成手段が、前記読み込み要求で指定されるオフセットと固定長のブロックサイズとからアクセス対象となるファイルブロックの番号とブロック内オフセットとを算出し、前記ファイルの種と前記ファイルブロックの番号とから非再帰的疑似乱数生成アルゴリズムを使用して前記ファイルブロックに対応するブロックの種を生成し、前記ブロックの種から再帰的疑似乱数生成アルゴリズムを使用して前記ファイルブロックのデータを生成し、前記生成した前記ファイルブロックのデータのうち前記ブロック内オフセットと前記読み込み要求で指定されるデータサイズとで定まるデータをアクセス対象となるデータとして生成する
仮想ファイル方法。
【請求項６】
ファイルの種を記憶する記憶手段、データ生成手段、データ検証手段、およびファイルシステムアクセス手段を有する仮想ファイルシステムと、該仮想ファイルシステムを使用してストレージの評価を行う評価手段とを有するコンピュータが実行するストレージ評価方法であって、
前記評価手段が、前記仮想ファイルシステムに対して読み込み要求を送信し、
前記仮想ファイルシステムの前記データ生成手段が、前記ファイルの種から疑似乱数生成アルゴリズムを使用してファイルのデータを生成し、
前記仮想ファイルシステムの前記ファイルシステムアクセス手段が、前記データ生成手段によって生成されたデータを含むアクセス応答を前記評価手段に返却し、
前記評価手段が、前記アクセス応答に含まれるデータを前記ストレージにバックアップし、
前記評価手段が、前記ストレージにバックアップされたデータを読み出し、
前記評価手段が、前記読み出したデータをリストアするために前記仮想ファイルシステムに書き込み要求を送信し、
前記仮想ファイルシステムの前記データ生成手段が、前記ファイルの種から疑似乱数生成アルゴリズムを使用してファイルのデータを生成し、
前記仮想ファイルシステムの前記データ検証手段が、前記データ生成手段で生成されたデータと前記書き込み要求に含まれるデータとを比較し、
前記仮想ファイルシステムの前記ファイルシステムアクセス手段が、前記比較結果を含む応答を前記評価手段に返却し、
前記ファイルのデータの生成では、前記データ生成手段が、前記読み込み要求で指定されるオフセットと固定長のブロックサイズとからアクセス対象となるファイルブロックの番号とブロック内オフセットとを算出し、前記ファイルの種と前記ファイルブロックの番号とから非再帰的疑似乱数生成アルゴリズムを使用して前記ファイルブロックに対応するブロックの種を生成し、前記ブロックの種から再帰的疑似乱数生成アルゴリズムを使用して前記ファイルブロックのデータを生成し、前記生成した前記ファイルブロックのデータのうち前記ブロック内オフセットと前記読み込み要求で指定されるデータサイズとで定まるデータをアクセス対象となるデータとして生成する
ストレージ評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想ファイルシステムに関し、特に物理的なストレージを必要としない仮想ファイルシステムに関する。
【背景技術】
【０００２】
ファイルシステムは、データの恒久的な保存手段として使用される以外に、データを一時的に使用する場合にも広く利用されている。一時的な使用の例として、ストレージシステムの評価時に使用するテストファイルがある。
【０００３】
ストレージシステムの評価では、バックアップソフトウェアを用いて、評価対象ストレージシステムのバックアップ性能の評価およびリストア性能の評価が行われる。その概要を図７に示す。
【０００４】
まず、評価を実施する前に、評価用マシン７０のテストファイル作成ソフトウェア７５を使用して、既存のストレージ７１にテストファイル７１１を作成しておく。バックアップ性能の評価では、既存のストレージ７１上に作成した上記のテストファイル７１１を、評価用マシン７０のバックアップソフトウェア７２を使用して、評価対象のストレージシステム７３にテストファイル７４としてバックアップすることで実施する。また、リストア性能の評価では、評価対象のストレージシステム７３にバックアップしたテストファイル７４を、評価用マシン７０のバックアップソフトウェア７２を使用して、既存のストレージ７１にテストファイル７１２としてリストアし、評価用マシン７０のファイル比較ソフトウェア７６を使用して、バックアップ前のテストファイル７１１とリストア後のテストファイル７１２とを比較することで実施する。
【０００５】
他方、本発明に関連する技術として、特許文献１に記載の技術がある。この特許文献１に記載の技術では、ビデオ信号生成器より出力されるビデオ信号を制御装置に転送してＪＰＥＧ等の圧縮符号化方式で圧縮して圧縮ビデオデータを形成し、評価対象としての外部記憶装置に転送して書き込む。また、外部記憶装置より圧縮ビデオデータを読み出し、制御装置に転送して伸長復号化し、画像表示装置に再生画像を表示する。外部記憶装置での書き込み、読み出しを経たビデオデータによる再生画像が画像表示装置４に表示されるため、ランダムデータの検証を直観的に行う事が出来るように構成されている。
【０００６】
さらに、Linuxには /dev/urandom という乱数データを読み出せるファイルがある。これは物理的なストレージシステムを必要とせず、ファイル生成の時間も不要になる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−２１０９９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図７に示されるストレージシステムの評価方法では、バックアップ前のデータであるテストファイル７１１およびリストア後のデータであるテストファイル７１２を蓄積するストレージ７１が必要である。ストレージシステムは年々その容量が増大しているため、テストファイル７１１、７１２の容量も大きくなっている。また、評価対象ストレージシステム７３がデータ圧縮機能や重複データ削除機能を有する場合、その評価を行うために多種多様なテストファイル７１１を数多く生成する必要がある。このため、既存のストレージ７１として、大容量なシステムが必要になる。
【０００９】
他方、特許文献１に記載の評価方法では、テストデータを記憶するための既存のストレージは不要になるが、評価対象の外部記憶装置から読み出したデータと比較するための元のデータを記憶できないため、ランダムデータの検証を直観的に実施できても、客観的に実施することができない。
【００１０】
さらに、Linuxの /dev/urandom という乱数データを読み出せるファイルは、通常のファイルと異なり、無限にデータが読み出されるため、バックアップソフトウェアでバックアップすることができない。また、乱数データの再現性がないため、リストアしたファイルの比較を行うこともできない。
【００１１】
本発明の目的は、上述した課題、すなわち、何時でも同じデータを大量に読み出せるようにするためには、大容量のストレージが必要になる、という課題を解決する仮想ファイルシステムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一形態にかかる仮想ファイルシステムは、
ファイルの種を記憶する記憶手段と、
上記ファイルの種から疑似乱数生成アルゴリズムを使用してファイルのデータを生成するデータ生成手段と、
ファイルに対する読み込み要求を受け付け、上記データ生成手段で生成されたデータを含むアクセス応答を返却するファイルシステムアクセス手段と
を備える、といった構成を採る。
【発明の効果】
【００１３】
本発明の仮想ファイルシステムを使用すれば、大容量の既存ストレージがなくても、何時でも同じデータを大量に読み出すことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態のブロック図である。
【図２】本発明の第２の実施形態のブロック図である。
【図３】本発明の第２の実施形態におけるテストファイル作成時の動作説明図である。
【図４】本発明の第２の実施形態においてテストファイルを評価対象ストレージへバックアップする時の動作説明図である。
【図５】本発明の第２の実施形態においてバックアップデータをリストアする時の動作説明図である。
【図６】本発明の第２の実施形態におけるデータ生成手段によるデータ生成の説明図である。
【図７】ストレージの評価を行う一般的なシステムのブロック図である。
【発明を実施するための形態】
【００１５】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１を参照すると、本発明の第１の実施形態にかかる仮想ファイルシステム１０は、記憶手段１１と、ファイルシステムアクセス手段１２と、データ生成手段１３とから構成される。
【００１６】
記憶手段１１は、ファイルの種１１１を記憶する。ファイルの種１１１は、例えば数列のような小容量のデータである。
【００１７】
ファイルシステムアクセス手段１２は、仮想ファイルシステム１０と外部とのインターフェイスである。ファイルシステムアクセス手段１２は、外部の図示しないプログラムから読み出し要求１４を受け付け、それに対する応答１５を返却する。
【００１８】
データ生成手段１３は、ファイルの種１１１から疑似乱数生成アルゴリズムを使用してファイルのデータを生成する機能を有する。より具体的には、データ生成手段１３は、ブロック情報算出手段１３１、ブロックの種生成手段１３２、ブロックデータ生成手段１３３、およびアクセス対象データ生成手段１３４を有する。
【００１９】
ブロック情報算出手段１３１は、ファイルシステムアクセス手段１２から、読み出し要求１４で指定されたオフセットを受け取ると、このオフセットと予めシステムで規定された固定長のブロックサイズとから、読み出し要求１４によるアクセス対象となるファイルブロックの番号とブロック内オフセットとを算出する機能を有する。
【００２０】
ブロックの種生成手段１３２は、ファイルの種１１１とブロック情報算出手段１３１で算出されたファイルブロックの番号とから、非再帰的疑似乱数生成アルゴリズムを使用して、上記ファイルブロックの番号に対応するブロックの種を生成する機能を有する。ブロックの種は、ファイルの種１１１と同様に少量のデータから構成される。
【００２１】
ブロックデータ生成手段１３３は、ブロックの種生成手段１３２で生成されたブロックの種から、再帰的疑似乱数生成アルゴリズムを使用して、上記ファイルのブロックの番号に対応するファイルブロックの内容であるデータをブロックサイズ分生成する機能を有する。
【００２２】
アクセス対象データ生成手段１３４は、ブロックデータ生成手段１３３で生成されたファイルブロックのデータのうち、上記ブロック内オフセットとアクセス要求１４で指定されるデータサイズとで定まるデータをアクセス対象データとして生成する機能を有する。
【００２３】
次に本実施形態の仮想ファイル方法、すなわちファイルをエミュレートする動作を説明する。
【００２４】
ファイルシステムアクセス手段１２は、外部の図示しないプログラムから、ファイルに対する読み込み要求１４を受信すると、ファイルの種１１１と、読み込み要求１４で指定されたオフセットおよびデータサイズとをデータ生成手段１３に通知する。
【００２５】
データ生成手段１３のブロック情報算出手段１３１は、ファイルシステムアクセス手段１２から受信したオフセットと予めシステムで規定された固定長のブロックサイズとから、読み出し要求１４によるアクセス対象となるファイルブロックの番号とブロック内オフセットとを算出する。次に、ブロックの種生成手段１３２は、ファイルの種１１１とブロック情報算出手段１３１で算出されたファイルブロックの番号とから、非再帰的疑似乱数生成アルゴリズムを使用して、上記ファイルブロックの番号に対応するブロックの種を生成する。次に、ブロックデータ生成手段１３３は、ブロックの種生成手段１３２で生成されたブロックの種から、再帰的疑似乱数生成アルゴリズムを使用して、上記ファイルのブロックの番号に対応するファイルブロックの内容であるデータをブロックサイズ分生成する。次に、アクセス対象データ生成手段１３４は、ブロックデータ生成手段１３３で生成されたファイルブロックのデータのうち、上記ブロック内オフセットとアクセス要求１４で指定されるデータサイズとで定まるデータをアクセス対象データとして生成し、ファイルシステムアクセス手段１２に通知する。
【００２６】
ファイルシステムアクセス手段１２は、データ生成手段１３から通知されたアクセス対象データを含む応答１５を、読み出し要求１４の要求元に返却する。
【００２７】
このように本実施形態の仮想ファイルシステム１０は、大容量のストレージがなくても、何時でも同じデータを大量に読み出すことができる。その理由は、ファイルの種１１１から疑似乱数生成アルゴリズムを使用して毎回同じファイルのデータを生成するデータ生成手段１３を有するためである。
【００２８】
また本実施形態の仮想ファイルシステム１０は、ランダムデータの読み出しが可能になる。その理由は、データ生成手段１３が、読み出し要求１４で指定されるオフセットとブロックサイズとからアクセス対象となるファイルブロックの番号とブロック内オフセットとを算出し、ファイルブロックの番号からブロックの種を算出し、このブロックの種からブロックデータを算出し、この算出したブロックデータからブロック内オフセットとデータサイズとに基づいてアクセス対象データを抽出しているためである。
【００２９】
さらに本実施形態の仮想ファイルシステム１０は、ブロックの種の生成は非再帰的疑似乱数生成アルゴリズムを用いて行うが、ブロックの種からブロックデータを生成する際には再帰的疑似乱数生成アルゴリズムを用いるため、すべて非再帰的な疑似乱数生成アルゴリズムを用いる場合に比べて、ランダムデータの読み出しを高速化することができる。
【００３０】
[第２の実施形態]
次に本発明の第２の実施形態について説明する。
【００３１】
[本実施形態の概要]
本実施形態にかかる仮想ファイルシステムは、ファイルの実際のデータを物理的なストレージに格納せず、データを再現するのに必要な「ファイルの種」をファイルのデータの代わりに保存する。本実施形態の仮想ファイルシステムを用いたストレージシステムの評価環境の構成図を図２に示す。この図２に関しては、後に詳細に説明するが、概ね以下のような動作を行う。
・ファイルを作成する場合、実際のデータを物理的なストレージへ書き込むのではなく、ファイルの種のみを作成する。
・ファイルのデータを読み込む場合、物理的なストレージからデータを読み込むのではなく、ファイルの種から計算してデータを再現する。
・ファイルへデータを書き込む場合、物理的なストレージへデータを書き込むのではなく、ファイルの種から計算して再現されるデータとの比較を行う。
・その他の操作（ディレクトリ操作やファイル属性などの操作）は通常のファイルシステムと同様の処理を行う。
【００３２】
以下、上記のそれぞれのファイル操作の概要を説明する。
【００３３】
まず、テストファイル作成に関して説明する。テストファイルを作成する場合、一般的にはテストファイル作成用のソフトウェア等を用いて、乱数データなどをファイルに書き込んでテストファイルを作成するが、この方法はファイルサイズが肥大化するにつれ多大な時間がかかるようになる。本実施形態では、ファイルのデータ自体は書き込まない。代わりに、ファイルのデータを計算により再現するための「ファイルの種」を保持する。このファイルの種を、例えば擬似乱数アルゴリズムの種として利用し、データを生成する。このファイルの種は、ファイル作成時のファイル名を用いて仮想ファイルシステムへ与える。また、作成するファイルのサイズも同様の方法で仮想ファイルシステムへ伝える。例として、「randomfile_128GB_12345」と言うファイル名でファイルを作成すると、ファイルの種が12345、ファイルサイズが128GBであるファイルが作成される。このファイルは作成した瞬間に、たとえ何も書き込まずとも、ファイルサイズが128GBになっている。
【００３４】
次に、ファイルのデータを読み込む場合に関して説明する。通常のストレージでは、ファイルを読み込む場合、ストレージからデータを読み出す。それに対して、本実施形態では、ファイルの種から例えば擬似乱数アルゴリズムを用いてデータ計算する。仮想ファイルシステムは、読み込み要求があるたびにデータを計算して要求元へ渡す。また、仮想ファイルシステムは、通常のファイルシステムと同様に、ランダムアクセスが可能である必要がある。例えばデータ生成に擬似乱数アルゴリズムを用いていると、ランダムアクセスを行うためには非再帰的な擬似乱数アルゴリズムが必要となる。ここでの再帰的とは、直前の状態に依存するということである。つまり、再帰的擬似乱数は先頭からシーケンシャルなアクセスしかできず、非再帰的擬似乱数はランダムアクセスができる。しかし、一般的に非再帰的擬似乱数アルゴリズムは再帰的擬似乱数アルゴリズムに比べ低速であるため、再帰的擬似乱数アルゴリズムを用いるほうが計算コストの面で好ましい。そこで、以下のようにデータ生成方法を工夫して再帰的擬似乱数アルゴリズムでもランダムアクセスできるようにする。
【００３５】
ファイルを固定長のブロックに分割し、ブロックのデータは「ブロックの種」を擬似乱数の種として計算する。そして、ブロックの種はファイルの種とブロックの通し番号から非再帰的擬似乱数を用いて計算するという方法をとる。この方法により必要なデータが含まれるブロックのみを計算するだけでよいため、低速な非再帰的擬似乱数が必要なのはブロックの種の計算のみになり、データ自体の計算は高速な再帰的擬似乱数を用いることができるため、計算コストが改善される。
【００３６】
次に、ファイルへデータを書き込む場合に関して説明する。通常のストレージでは、ファイルを書き込む場合、ストレージへデータを書き出す。それに対して、本実施形態では、ファイルのデータをストレージ上に持たず、ファイルの種からファイルのデータを計算する方法をとっているため、ストレージにデータを書き出すことはない。一方、ストレージシステムの評価において、バックアップソフトウェアによってテストファイルを仮想ファイルシステムへリストアするときに、ファイルの書き込みが行われ、このファイルは後にバックアップ前のテストファイルと比較してデータ化けがないかの確認に用いられる。これに代わり、本実施形態では、ストレージにデータを書き込むときに、「ファイルの種」からバックアップ時に作成されたデータ（＝リストアで書き込まれるべきデータ）と、実際に書き込まれるデータとを比較する。そのため、リストア作業と同時にファイル比較作業も行うこととなる。
【００３７】
最後に、その他の操作に関して説明する。ファイルの削除、名前変更、属性変更やディレクトリ作成などの操作は全て通常のファイルシステムと同等に機能する。ただし、ファイルの削除に関しては、ストレージ上からデータを削除する代わりに、ファイルの種を削除する。また、ファイル名の変更に関して、ファイルサイズやファイルの種は変更した名前の影響は受けない。よって、ファイル作成時はファイルサイズやファイルの種などを指定するために特殊な名前を付けるが、作成後は自由なファイル名に変更可能である。
【００３８】
[構成の説明]
本実施形態の構成について図２を参照して詳細に説明する。図２は、図７と同等の評価を本実施形態で行った場合の構成例となっている。
【００３９】
評価用マシン２０は、評価対象ストレージシステム２３に対して評価を行うバックアップソフトウェア２２を動作させるコンピュータであり、また本実施形態である仮想ファイルシステム２１を動作させるコンピュータでもある。
【００４０】
仮想ファイルシステム２１は、ランダムデータを生成、検証できる仮想ファイルシステムであり、ファイルシステムアクセス手段２１０、ファイル作成手段２１１、データ生成手段２１２、データ検証手段２１３、および保存領域２１５から構成されている。
【００４１】
バックアップソフトウェア２２は、評価対象ストレージシステム２３に対してバックアップおよびリストアを行う評価手段を構成するソフトウェアである。
【００４２】
評価対象ストレージシステム２３は、評価される対象となるストレージシステムである。
【００４３】
テストファイル作成ソフトウェア２５は、テストファイルを作成するソフトウェアである。テストファイル作成ソフトウェア２５は、ファイル名を指定してファイルを作成できるソフトウェアなら何でもよい。例えばPOSIXのtouchコマンドなどでよい。
【００４４】
ファイルシステムアクセス手段２１０は、仮想ファイルシステム２１にアクセスするための窓口となる手段である。バックアップソフトウェア２２は、ファイルシステムアクセス手段２１０を通して仮想ファイルシステム２１にアクセスする。
【００４５】
ファイル作成手段２１１は、ファイルシステムアクセス手段２１０からファイル名を受け取り、対応するファイルの情報（ファイル名、ファイルサイズ、ファイルの種）を作成する手段である。
【００４６】
データ生成手段２１２は、ファイルシステムアクセス手段２１０からファイルの種と、生成するデータのサイズとオフセットとを受け取り、データ生成アルゴリズムを用いてデータを生成し、生成したデータを返却する手段である。
【００４７】
データ検証手段２１３は、ファイルシステムアクセス手段２１０からファイルの種と、データとそのサイズとオフセットを受け取り、データ生成手段２１２を用いて生成したデータと受け取ったデータとを比較し、比較結果を返却する手段である。
【００４８】
保存領域２１５は、ディレクトリ構造やファイルの種、属性、サイズなどを保存しておくための記憶領域である。これは主記憶であっても補助記憶であってもよい。
【００４９】
[動作の説明]
次に図３乃至図６を参照して、本実施形態の動作を説明する。なお、図３乃至図６において、図２と同一符号は同一部分を示す。
【００５０】
最初に、図３を参照してテストファイル作成（仮想ファイルシステムへのファイル作成操作）について詳細に解説する。
【００５１】
まず、テストファイル作成ソフトウェア２５がファイルシステムアクセス手段２１０にファイル作成要求を出す（図３のＳ１）。このとき、作成するファイルのファイル名を渡す。このファイル名には、ファイルサイズとファイルの種の情報とが含まれている。
【００５２】
次に、ファイルシステムアクセス手段２１０は、受け取ったファイル名をファイル作成手段２１１に渡す。
【００５３】
ファイル作成手段２１１は、受け取ったファイル名から以下のようにしてファイルサイズとファイルの種を抽出する。ファイル名の先頭から最初のアンダースコア(_)まではファイルのデータの作成方法を表し、次のアンダースコアまではファイルサイズを表す文字列とし、それ以降はファイルの種を表す文字列とする。例えば、ファイル名が「ramdomfile_128GB_12345」ならば、ファイルのデータの作成方法として疑似乱数を用い、ファイルサイズが128GB、ファイルの種は12345となる。これらのファイルの情報をファイルシステムアクセス手段２１０に返却する。
【００５４】
ファイルシステムアクセス手段２１０は、返却されたファイル情報とファイル名を対応付けて保存領域２１５に保存する。
【００５５】
ファイルシステムアクセス手段２１０は、当該ファイルを開く処理を行い、ファイルハンドルをテストファイル作成ソフトウェア２５に返却する。ここでのファイルを開く処理とファイルハンドルは、一般的なファイルシステムと同様であるため説明を省略する。
【００５６】
テストファイル作成ソフトウェア２５は、正常にファイルが作成されたことを確認してファイルを閉じる。通常のファイルシステムではファイル作成時のサイズは０であるが、本実施形態では指定したサイズ（例えば128GB）のファイルが作成されている。ファイルを閉じる処理に関しては、一般的なファイルシステムと同等であるため説明を省略する。
【００５７】
次に、図４を参照してバックアップ（仮想ファイルシステムからの読み込み）操作の動作について詳細に説明する。予めバックアップのためのファイルを仮想ファイルシステム２１上で開いている（ファイルハンドルを持っている）ことを前提とする。ファイルを開く処理、およびファイルハンドルは通常のファイルシステムと同様である。
【００５８】
まず、バックアップソフトウェア２２がファイルシステムアクセス手段２１０にデータ読み込み要求を出す（図４のＳ１１）。このとき、読み込みたいデータを識別するため、ファイルハンドル、データのオフセット、データのサイズを渡す。データのオフセットとは、ファイルの先頭から読み込みたいデータまでの長さである。
【００５９】
次に、ファイルシステムアクセス手段２１０は、受け取ったファイルハンドルに対応するファイルの情報（ファイルの種、ファイルサイズ）などを保存領域２１５から読み込む（図４のＳ１２）。
【００６０】
ファイルシステムアクセス手段２１０は、読み込んだファイル情報と、バックアップソフトウェア２２から受け取ったデータのオフセットとサイズをデータ生成手段２１２に渡す（図４のＳ１３）。
【００６１】
データ生成手段２１２は、受け取ったファイルの種、オフセット、サイズから、要求されているデータを生成し、ファイルシステムアクセス手段２１０に返却する。
【００６２】
ファイルシステムアクセス手段２１０は、返却されたデータをバックアップソフトウェア２２に返却する。
【００６３】
バックアップソフトウェア２２は、バックアップのために評価対象ストレージシステム２３に返却されたデータをテストファイル２４として書き込む。
【００６４】
次に、図５を参照してリストア（仮想ファイルシステムへの書き込み）操作の動作について詳細に説明する。予めリストアのためのファイルを仮想ファイルシステム２１上で開いている（ファイルハンドルを持っている）ことを前提とする。
【００６５】
まず、バックアップソフトウェア２２がリストアのために評価対象ストレージシステム２３のテストファイル２４からデータを読み込む（図５のＳ２１）。
【００６６】
次に、バックアップソフトウェア２２は、ファイルシステムアクセス手段２１０に対して、読み込んだデータの書き込み要求を出す（図５のＳ２２）。このとき、ファイルハンドル、書き込みたいデータ、データのオフセット、データのサイズを渡す。
【００６７】
次に、ファイルシステムアクセス手段２１０は、受け取ったファイルハンドルに対応するファイルの情報（ファイルの種、ファイルサイズ）などを保存領域２１５から読み込む（図５のＳ２３）。
【００６８】
ファイルシステムアクセス手段２１０は、読み込んだファイル情報と、バックアップソフトウェア２２から受け取ったデータとオフセット、サイズをデータ検証手段２１３に渡す（図５のＳ２４）。
【００６９】
データ検証手段２１３は、受け取ったファイルの種、オフセット、サイズをデータ生成手段２１２に渡す(図５のＳ２５)。
【００７０】
データ生成手段２１２は、受け取ったファイルの種、オフセット、サイズからファイルのデータを生成し、データ検証手段２１３に返却する。
【００７１】
データ検証手段２１３は、ファイルシステムアクセス手段２１０から受け取ったデータと、データ生成手段２１２から返却されたデータとを比較し、比較結果をファイルシステムアクセス手段２１０に返却する。
【００７２】
ファイルシステムアクセス手段２１０は、返却されたデータをバックアップソフトウェア２２に返却する。
【００７３】
バックアップソフトウェア２２は、検証結果を書き込みの成功または失敗として受け取るため、検証の結果データが異なる場合、リストアに失敗する。
【００７４】
続いて、図６を参照して、データの生成について説明する。
【００７５】
図６はファイルの種とブロック、データの関連を表した図である。ここでのブロックはファイルのデータを固定サイズで分割した1つのデータであり、ブロック番号はファイル先頭のブロックを0とした連番で表したブロックの番号である。なお、ファイルのオフセットをブロックのサイズで割ると、商がブロック番号となり、余りが当該ブロックでのオフセットとなる。
【００７６】
ブロックの種は、ファイルの種とブロック番号から非再帰的擬似乱数生成アルゴリズムを用いて計算される。例えば、ブロックの種６１２は、ファイルの種６１とブロック番号（ここでは２）から計算される。
【００７７】
ブロックのデータはブロックの種から高速な擬似乱数アルゴリズムである再帰的疑似乱数生成アルゴリズムを用いて計算される。
【００７８】
[効果の説明]
本実施形態の効果について説明する。
【００７９】
第１の効果は、テストファイルのデータを保存するストレージが不要となることにある。その理由は、ファイルはファイルの種のみを保持し、データは保存せず、必要に応じてファイルの種から生成するためである。このように、ファイルのデータを保存する必要がないため、巨大なテストファイルのデータを保存するための高価な高性能ストレージが不要となる。
【００８０】
第２の効果は、テストファイルの作成に必要な時間が大幅に短縮できることにある。その理由は、ファイル作成時、ファイル名からファイルの種のみを抽出して保存し、データ自体は作成せず、データをストレージに書き込まないからである。
【００８１】
第３の効果は、高速な読み込み/書き込みが可能であり、高速なアクセスが必要な場合でも、高速（かつ高価）なストレージが不要となることである。その理由は、データをストレージ上に保存せず、また、データ生成の計算コストが十分小さく、データを高速に生成できるからである。
【００８２】
第４の効果は、ストレージシステムのリストア評価において、リストア後のテストファイルの比較作業が不要となることである。その理由はリストア時、本実施形態の仮想ファイルシステムへデータを書き込んだ時点でデータが化けていないか確認が行われるためである。
【００８３】
[他の実施形態]
本発明は上述した実施形態にのみ限定されず、以下に例示するような各種の付加変更が可能である。
【００８４】
データの生成のその他の実施形態として、擬似乱数を用いてランダムデータを生成するときに、「ファイルの種」として擬似乱数の種だけでなく、「ファイルの圧縮可能比率」や「ファイルの重複排除比率」などを指定するようにしてもよい。本来、擬似乱数のデータはほとんど圧縮できないが、ブロックを生成する場合に全てをランダムデータで埋めるのではなく、圧縮可能比率に従ってゼロで埋められたデータなどを混ぜることで、指定した圧縮率でファイルを圧縮できるようなデータを生成できる。また、重複排除比率に従って、他のブロックと同じデータを持つブロックを混ぜることで、指定した重複排除率で重複排除できるデータを生成できる。これらは、特に圧縮や重複排除などの機能を持つ高機能ストレージシステムの評価に有効である。
【００８５】
データの生成の実施形態として、ランダムデータを作成する方法を説明したが、ある種のデータフォーマット（たとえば、画像ファイル、文章ファイル、メールデータなど）を再現するようなテストファイルを作成するアルゴリズムを用いることもできる。画像ファイルの例として、ファイルの種から再現性のある図形を描画し、その画像を画像データフォーマットにしたがって作成するアルゴリズムが考えられる。また、そのほかの例として、文章ファイルの例として、ファイルの種から生成した乱数列に、各種言語用の文字列辞書などから乱数に対応する文字列を取り出して連結するアルゴリズムが考えられる。これらはストレージシステムの実際の利用方法に則した評価に有効である。
【００８６】
上記のように複数のファイル作成アルゴリズムが考えられる場合、ファイル名の先頭にあるデータ作成方法を識別するための文字列（前述の実施形態では「randomfile」）を用いてアルゴリズムをファイル作成時に選択できる。例えば、圧縮可能な乱数ファイルに対して「compressableramdomfile」、png画像ファイルに対して「pngfile」などである。また、ファイルの拡張子を利用できるシステムでは、ファイル拡張子を用いてアルゴリズム選択できる。例えば、文章ファイルに対して「.txt」などである。
【００８７】
ファイルの作成のその他の実施形態として、ファイル作成手段がファイル名からファイルの種などを抽出するのではなく、ファイルに特殊なデータが書き込まれた場合にファイルの種を設定する方法でもよい。例えば、ファイルの先頭に「randomfile: size=128GB, seed=12345」という内容のデータが書き込まれると、そのファイルのサイズが128GB、種が12345に変更される。この方式では作成時のファイル名に依存せずにファイルサイズやファイルの種を設定できるという利点がある。
【００８８】
ファイルの作成のその他の実施形態として、作成するファイルの数をファイル名に指定することも考えられる。例えば、「randomfile_128GB_12345_15000」というファイルを作成すると、「randomfile_128GB_12345_00001」から「randomfile_128GB_12345_15000」までの15000個のファイルが作成される。これは、数万ファイルなど多数のファイルを作成する場合で、個々のファイルに細かいパラメータ（ファイルサイズや種）を指定する必要がない場合に、ファイルシステムのファイル作成操作を1回しか呼び出す必要がなくなるという利点がある。
【００８９】
ファイルの作成のその他の実施形態として、特定の名前でディレクトリを作成すると、特定のディレクトリ構造を再現する例が考えられる。例えば、「maildir_1000_200」というディレクトリを作成すると、その中に自動的に「Inbox」、「Sent」というディレクトリを作成し、それぞれのディレクトリ内に、メール内容を模したテキストファイルが「Inbox」に1000個、「Sent」に200個作成される。これは、特定のシステムが使用するデータファイル群（の擬似ファイル）を一度に生成することができるという利点がある。
【００９０】
ファイル名の変更時に関して、上記実施形態では通常のファイルシステムと同様と説明している。これはファイル名を変更しても、ファイル情報（ファイルサイズやファイルの種）は変更されることなく保持されることを意味する。しかし、他の実施形態として、ファイル名の変更において、ファイル作成手段を再度呼び出し、ファイル情報を新しいファイル名に適合するように変更することも考えられる。この場合、例えば「randomfile_128GB_12345」というファイル（ファイルサイズ128GB、ファイルの種12345）を「randomfile_256GB_67890」という名前に変更すると、ファイルサイズが256GB、ファイルの種が67890に自動的に変更される。
【００９１】
リストア（ファイルシステムへの書き込み）操作に関するその他の実施形態として、データの比較などの作業を行わず、受け取ったデータを単にそのまま破棄して書き込み成功を返却することが考えられる。これは、評価対象ストレージシステムからの読み込み性能を測定したい場合など、比較作業が不要で、より性能が求められる場合に利用できる。
【産業上の利用可能性】
【００９２】
本発明によれば、ストレージシステムおよびバックアップソフトウェアの評価といった用途に適用できる。
【符号の説明】
【００９３】
１０…仮想ファイルシステム
１１…記憶手段
１２…ファイルシステムアクセス手段
１３…データ生成手段
【図１】
0005664318.tif 000002
【図２】
0005664318.tif 000003
【図３】
0005664318.tif 000004
【図４】
0005664318.tif 000005
【図５】
0005664318.tif 000006
【図６】
0005664318.tif 000007
【図７】
0005664318.tif 000008