(57)【要約】【課題】ファイルを表す論理構造であるところのｉノードに、ファイルデータを保存するディスク記憶装置のブロック番号とそのブロックに一方向関数を適用して得られるハッシュ値を組にして保存することでブロックの完全性を保証するファイルシステムにおいて、ファイルの完全性だけでなく、ファイルシステム全体の完全性を保証することを目的としたものである。【解決手段】ファイルシステムを構成するデータブロック以外のブロック（例えば、データブロックビットマップ１１やｉノードビットマップ１２等）もファイルとして管理し、更に、ｉノード構造体にデータブロックのブロック番号とそのブロックのハッシュ値を組にして保存することで、ファイルシステム全体の完全性を保証することができる。【選択図】　　　図１
2004078696.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを表す論理構造であるところのｉノードに、ファイルデータを保存するディスク記憶装置のブロック番号とそのブロックに一方向関数を適用して得られるハッシュ値を組にして保存することでブロックの完全性を保証するファイルシステムにおいて、当該ファイルシステム全体のデータの完全性を保証する完全性保証方法であって、
１つの代表ｉノードが前記ファイルシステム全てのファイルのｉノードを保存するファイルを表し、前記ファイルシステムを構成するデータブロック以外のブロックのデータをファイルとして扱い、前記代表ｉノード内に当該代表ｉノードに鍵付きの一方向関数を適用して得られたハッシュ値を保存することで、前記ファイルシステムを構成する全てのブロックの完全性を保証することを特徴とするコンピュータによるファイルシステムの完全性保証方法。
【請求項２】
前記ファイルシステムを構成するデータブロック以外のブロックのデータは、前記ディスク記憶装置のブロックを管理するデータとｉノードの管理をするためのデータのうち少なくとも一方のデータを含むことを特徴とする請求項１に記載のファイルシステムの完全性保証方法。
【請求項３】
ファイルを表す論理構造であるところのｉノードに、ファイルデータを保存するディスク記憶装置のブロック番号とそのブロックに一方向関数を適用して得られるハッシュ値を組にして保存することでブロックの完全性を保証するファイルシステムを実現可能なコンピュータシステムであって、
１つの代表ｉノードが前記ファイルシステム全てのファイルのｉノードを保存するファイルを表し、前記ファイルシステムを構成するデータブロック以外のブロックのデータをファイルとして扱い、前記代表ｉノード内に当該代表ｉノードに鍵付きの一方向関数を適用して得られたハッシュ値を保存することで、前記ファイルシステムを構成する全てのブロックの完全性を保証することを特徴とする完全性保証可能なファイルシステムを実現可能なコンピュータシステム。
【請求項４】
ファイルを表す論理構造であるところのｉノードに、ファイルデータを保存するディスク記憶装置のブロック番号とそのブロックに一方向関数を適用して得られるハッシュ値を組にして保存することでブロックの完全性を保証するファイルシステムにおいて、当該ファイルシステム全体のデータの完全性を保証するために用いられるプログラムであって、
コンピュータに、
１つの代表ｉノードが前記ファイルシステム全てのファイルのｉノードを保存するファイルを表し、前記ファイルシステムを構成するデータブロック以外のブロックのデータをファイルとして扱い、前記代表ｉノード内に当該代表ｉノードに鍵付きの一方向関数を適用して得られたハッシュ値を保存することで、前記ファイルシステムを構成する全てのブロックの完全性を保証させることを特徴とするファイルシステムの完全性保証用プログラム。
【請求項５】
請求項４に記載のファイルシステムの完全性保証用プログラムを記録したことを特徴とするコンピュータで読み取り可能なファイルシステムの完全性保証用記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムに関し、さらに詳しくは、そのファイルシステム（Ｆｉｌｅ　Ｓｙｓｔｅｍ）として保存されるデータの完全性を保証する方法に関する。
【０００２】
【従来の技術】
コンピュータシステムは、ユーザが長期的に保存することを望むデータをディスク記憶装置に保存し、後にユーザがデータ要求した際に、再びそのディスク記憶装置から読み出すことで、データの長期的な利用を可能とする。
【０００３】
コンピュータとディスク記憶装置はバスや、ネットワーク等を介して接続されており、コンピュータとディスク記憶装置が個別に管理される場合もある。但し、ディスク記憶装置に物理的にアクセスすることのできるユーザは他のユーザが保存したデータを不正にデータ変更することができる。
【０００４】
しかしながら、ディスク記憶装置の管理者といえども、不正な変更が可能であることは、重要性の高いファイルを保存する上で好ましくない。
【０００５】
そこで、不正な変更処理を阻止する観点から、一方向関数を用いてファイルの完全性を保証するフィルシステムが用いられる。
【０００６】
Ｋ．Ｆｕはデータブロックに一方向関数を適用することでファイルの完全性を保証する方法を提案している（Ｋｅｖｉｎ　Ｆｕ；　Ｇｒｏｕｐ　ｓｈａｒｉｎｇ　ａｎｄ　ｒａｎｄｏｍ　ａｃｃｅｓｓ　ｉｎｃｒｙｐｔｏｇｒａｐｈｉｃ　ｓｔｏｒａｇｅ　ｆｉｌｅ　ｓｙｓｔｅｍｓ．　：　Ｍａｓｔｅｒ’ｓ　ｔｈｅｓｉｓ，　Ｍａｓｓａｃｈｕｓｅｔｔｓ　Ｉｎｓｔｉｔｕｔｅ　ｏｆ　Ｔｅｃｈｎｏｌｏｇｙ，　Ｍａｙ　１９９９　参照）。ここで、図２を用いて、この方法が従来のファイルシステムをどのように変更することでデータの完全性を保証しているかを説明する。
【０００７】
従来のファイルシステムは物理的にディスク記憶装置を固定長に分割し、それらをブロックと呼び、順番に番号を付けて管理している。ファイルシステムは図２の１０１に示すような論理構造を有している。このファイルシステムは、各々のファイル名とそのディスク記憶装置での位置を識別するためのキー値（以下、「ｉノード番号」という）を組にして管理することで、ユーザからの要求に適切なデータを返す。
【０００８】
また、ファイルの論理構造１０６は、「ｉノード」と呼ばれ、その大きさ、作成時間等、ファイルに関する情報を含んでいる。ｉノードはｉノード番号の順番に「ｉノードテーブル」１０４と呼ばれるファイルシステムの予め定められた位置のブロックに保存される。ｉノードは実際のファイルの内容が保存されているデータブロック１０５のブロック番号を含んでおり、ｉノード番号が特定されると、ファイルの内容をディスク記憶装置から読み出すことができる。
【０００９】
上述したＫ．Ｆｕらの方法は、図３におけるファイルの論理構造２０１に示すように、ｉノードがデータブロックのブロック番号と、各データブロックに一方向関数を適用して得られるハッシュ値を組にして保存する。そして、データブロックをディスク記憶装置から読み出した後、そのデータブロックに一方向関数を適用することでハッシュ値を求め、各ｉノードに保存されていたハッシュ値と比較することで、各データブロックの完全性を個別に保証する。更に、ｉノード全体としての完全性を保証するために、ｉノードに鍵付き一方向関数を適用し得られたハッシュ値をｉノード内に保存する。
【００１０】
【発明が解決しようとする課題】
しかしながら、上記のようなＫ．Ｆｕらの方法は、ファイルの完全性のみを保証するものであり、ファイルシステム全体の完全性を保証することができない。
即ち、ファイルシステムは、図２に示すように、データブロックの使用・不使用を管理するためのデータブロックビットマップ１０２や、ｉノード番号の使用・不使用を管理するためのｉノードビットマップ１０３等のファイルデータを構成するデータブロック以外も含んでおり、それらのブロックの完全性については保証することができないのである。
【００１１】
本発明は、本発明は上述した事情を鑑みてなされたものであり、ファイルの完全性だけでなく、ファイルシステム全体の完全性を保証することを目的としたものである。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、請求項１に係る発明は、ファイルを表す論理構造であるところのｉノードに、ファイルデータを保存するディスク記憶装置のブロック番号とそのブロックに一方向関数を適用して得られるハッシュ値を組にして保存することでブロックの完全性を保証するファイルシステムにおいて、当該ファイルシステム全体のデータの完全性を保証する完全性保証方法であって、１つの代表ｉノードが前記ファイルシステム全てのファイルのｉノードを保存するファイルを表し、前記ファイルシステムを構成するデータブロック以外のブロックのデータをファイルとして扱い、前記代表ｉノード内に当該代表ｉノードに鍵付きの一方向関数を適用して得られたハッシュ値を保存することで、前記ファイルシステムを構成する全てのブロックの完全性を保証することを特徴とするコンピュータによるファイルシステムの完全性保証方法である。
【００１３】
請求項２に係る発明は、前記ファイルシステムを構成するデータブロック以外のブロックのデータは、前記ディスク記憶装置のブロックを管理するデータとｉノードの管理をするためのデータのうち少なくとも一方のデータを含むことを特徴とする請求項１に記載のファイルシステムの完全性保証方法である。
【００１４】
請求項３に係る発明は、ファイルを表す論理構造であるところのｉノードに、ファイルデータを保存するディスク記憶装置のブロック番号とそのブロックに一方向関数を適用して得られるハッシュ値を組にして保存することでブロックの完全性を保証するファイルシステムを実現可能なコンピュータシステムであって、１つの代表ｉノードが前記ファイルシステム全てのファイルのｉノードを保存するファイルを表し、前記ファイルシステムを構成するデータブロック以外のブロックのデータをファイルとして扱い、前記代表ｉノード内に当該代表ｉノードに鍵付きの一方向関数を適用して得られたハッシュ値を保存することで、前記ファイルシステムを構成する全てのブロックの完全性を保証することを特徴とする完全性保証可能なファイルシステムを実現可能なコンピュータシステムである。
【００１５】
請求項４に係る発明は、ファイルを表す論理構造であるところのｉノードに、ファイルデータを保存するディスク記憶装置のブロック番号とそのブロックに一方向関数を適用して得られるハッシュ値を組にして保存することでブロックの完全性を保証するファイルシステムにおいて、当該ファイルシステム全体のデータの完全性を保証するために用いられるプログラムであって、コンピュータに、１つの代表ｉノードが前記ファイルシステム全てのファイルのｉノードを保存するファイルを表し、前記ファイルシステムを構成するデータブロック以外のブロックのデータをファイルとして扱い、前記代表ｉノード内に当該代表ｉノードに鍵付きの一方向関数を適用して得られたハッシュ値を保存することで、前記ファイルシステムを構成する全てのブロックの完全性を保証させることを特徴とするファイルシステムの完全性保証用プログラムである。
【００１６】
ここで、本発明における「プログラム」とは、コンピュータによる処理に適した命令の順番付けられた列からなるものをいい、コンピュータのＨＤＤ、ＣＤ−ＲＷ等にインストールされているものや、ＣＤ−ＲＯＭ、ＤＶＤ、ＦＤ（フロッピー（登録商標）ディスク）、半導体メモリ、コンピュータのＨＤＤ等の各種記録媒体に記録されているものや、インターネット等の外部ネットワークを介して配信されるものも含まれる。
【００１７】
請求項５に係る発明は、請求項４に記載のファイルシステムの完全性保証用プログラムを記録したことを特徴とするコンピュータで読み取り可能なファイルシステムの完全性保証用記録媒体。
【００１８】
ここで、本発明における「記録媒体」とは、上記コンピュータシステムで上記処理を実現するためのプログラムの読み取りに使用することができればよく、情報を媒体の物理的特性を利用してどのように記録するか等の物理的な記録方法には依存しない。例えば、ＦＤ、ＣＤ−ＲＯＭ（Ｒ、ＲＷ）、ＤＶＤ−ＲＯＭ（ＲＡＭ、Ｒ、ＲＷ）、半導体メモリ、ＭＯ、ＭＤ、磁気テープ等が該当する。
【００１９】
【発明の実施の形態】
以下、図面を参照しながら、本発明の各実施形態について説明する。尚、本発明のファイルシステムの完全性保証方法は、コンピュータ（システム）が実現することが可能であり、そのために完全性保証用プログラム（ｐ）をコンピュータに記憶して実現したり、この記憶にあたってプログラム（ｐ）が記録されたＣＤ−ＲＯＭ等の記録媒体を用いる。
【００２０】
（第１の実施形態）
以下、図１を参照しながら、本発明の第１の実施形態について説明する。
【００２１】
図１は、第１の実施形態に係るファイルシステムの論理構造１０を示す図である。このファイルシステムは、１つのルートｉノード１５を根とした木構造となっている。ルートｉノード１５は、通常、上述のファイルシステムのｉノードテーブル１０４に相当し、ファイルシステム全てのｉノードをｉノード番号順に保存するｉノードテーブルファイル１３を表現する論理構造１７である。ルートｉノード１５には、図１に示すように、ｉノードテーブルファイル１３のデータブロックのブロック番号とそのハッシュ値が組になって保存されている。これにより、ｉノードテーブルファイル１３の完全性が保証される。また、ルートｉノード１５の完全性を保証するため、鍵付きの一方向関数を適用することで得られたハッシュ値をルートｉノード１５自身に保存する。
【００２２】
ルートｉノード１３を除いた他の通常のｉノードの論理構造１６は、ｉノード自身のハッシュ値が保存されていないことを除けば、ルートｉノード１５と同様である。ｉノードの完全性はルートｉノード１５がｉノードテーブルファイル１３の完全性を保証するため、ｉノード内にハッシュ値を保存する必要はない。
【００２３】
また、ブロックビットマップファイル１１は、上述のブロックビットマップ１０２に相当する。ブロックビットマップファイル１１のｉノード番号を予め定めておくことで、ｉノードテーブルファイル１３からブロックビットマップファイル１１に到達することができ、同時にハッシュ値を用いることでブロックビットマップファイル１１の完全性も保証することができる。
【００２４】
更に、ｉノードビットマップファイル１２は、上述のｉノードビットマップ１０３に相当する。ｉノードビットマップファイル１２のｉノード番号を予め定めておくことで、ｉノードテーブルファイル１３からｉノードビットマップファイル１２に到達することができ、同時にハッシュ値を用いることでｉノードビットマップファイル１２の完全性も保証することができる。
【００２５】
その他、通常のファイルのｉノードもｉノードテーブルファイル１３に含まれており、ブロックビットマップファイル１１やｉノードビットマップファイル１２と同様に、ファイルのデータブロック１４の完全性を保証することができる。
【００２６】
以上説明したように、本実施形態によれば、従来のファイルシステムでデータブロックの使用・不使用を管理するために用いられるデータブロックビットマップや、ｉノード番号の使用・不使用を管理するためのｉノードビットマップも、それぞれをファイルして管理して、各々予め特定のｉノード番号を割り当てる。
そして、ルートｉノードの完全性を保証するために、ルートｉノードに鍵付き一方向関数を適用し得られたハッシュ値をルートｉノード内に保存する。これにより、ルートｉノードが保存されているブロックを除いたファイルシステムの全てのブロックがファイルとして管理され、ルートｉノードからブロック番号とそのハッシュ値の組を使い、ファイルの読み込み毎に木構造になっているブロックを順にたどることで、ルートｉノードが保存されているブロックを除いた全てのブロックの完全性を保証することができる。従って、ファイルシステムを構成する全てのブロックの完全性を保証することが可能となる。
【００２７】
（第２の実施形態）
以下、図１を参照しながら、本発明の第２の実施形態について説明する。
【００２８】
尚、第２の実施形態は、上記第１の実施形態を前提とし、第１の実施形態におけるｉノードテーブルファイル３をｉノードの更新頻度によって分類し、更新頻度の高いｉノードと低いｉノードを別のブロックに保存することで、一方向関数の処理回数を削減し、性能を向上させるものである。即ち、ｉノードテーブルファイル３を、ファイルシステムの全てのｉノードをｉノード番号の順番ではなく、その更新頻度別に分け、別のブロックに保存する。ある任意のｉノードが更新された際にそのｉノードが保存されているブロック全体のハッシュ関数を求める必要があるため、更新頻度が高いｉノードが多くのブロックに分散していると、ハッシュ関数の実行回数が増えて性能が低下するが、ｉノードを更新頻度別に幾つかのブループに分け、それぞれ個別のブロックに保存することで、ハッシュ関数の実行回数を削減させるものである。
【００２９】
【発明の効果】
以上、説明したように本発明によれば、ファイルシステムを構成するデータブロック以外のブロック（例えば、データブロックビットマップやｉノードビットマップ等）もファイルとして管理し、更に、ｉノード構造体にデータブロックのブロック番号とそのブロックのハッシュ値を組にして保存することで、ファイルシステム全体の完全性を保証することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明のファイルシステムとファイル論理構造を示した図。
【図２】従来のファイルシステムとファイル論理構造を示した図。
【図３】従来の完全性を保証するファイル論理構造を示した図。
【符号の説明】
１０　データブロック
１１　ブロックビットマップファイル
１２　ｉノードビットマップファイル
１３　ｉノードテーブルファイル
１４　データブロック
１５　ルートｉノード
１６　ファイルの論理構造
１７　ｉノードテーブルファイルの論理構造
【図１】
2004078696.tif 000003
【図２】
2004078696.tif 000004
【図３】
2004078696.tif 000005