(57)【要約】      （修正有）【課題】二次記憶装置についてジャーナリング機能による記憶構成の書込み劣化を分散できる情報処理装置、情報処理方法およびプログラミングを提供する。【解決手段】情報処理装置１００は、マウント時に二次記憶装置２０２の空き領域２０３から新規ジャーナリング領域のための領域を検索し、検索した空き領域２０３にジャーナリング領域２０５を構築し、データ書き込み時には、操作に関する情報をジャーナリング領域２０５に記憶する。【選択図】図２
2014153873.tif 000002
【特許請求の範囲】
【請求項１】
データを保持するためのデータ領域とファイルシステムを管理するための管理情報を保持するための管理領域とを有する記憶装置を備える情報処理装置であって、
前記データ領域から空き領域を検索する検索手段と、
前記検索手段で検索した空き領域に、メタデータまたは実データを書き込む操作に関する操作情報を格納するためのジャーナリング領域を割り当てる割り当て手段と、
前記ジャーナリング領域以外のデータ領域に対する操作に関する操作情報を前記ジャーナリング領域に記憶させる制御手段とを有することを特徴とする情報処理装置。
【請求項２】
前記割り当て手段は、前記記憶装置をマウントする際に前記ジャーナリング領域を割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記割り当て手段は、当該割り当て手段によって新しくジャーナリング領域を割り当てた際に他のジャーナリング領域を空き領域として解放することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記割り当て手段によって前記ジャーナリング領域を前記記憶装置に割り当てると、当該ジャーナリング領域の位置を示す位置情報を前記管理情報に格納する格納手段をさらに有することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記記憶手段は、前記格納手段により格納された位置情報に基づいて、前記ジャーナリング領域に前記操作情報を格納することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記格納手段は、前記割り当て手段によって前記ジャーナリング領域を前記記憶装置に割り当てると、当該ジャーナリング領域のサイズを示すサイズ情報を前記管理情報に格納することを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
前記管理領域はジャーナリング機能の利用の有無を示すジャーナリング設定を格納することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記管理領域はジャーナリングモードを示す情報を格納することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記ジャーナリングモードはｗｒｉｔｅｂａｃｋモードを含み、当該ｗｒｉｔｅｂａｃｋモードでは、前記記憶手段は前記ジャーナリング領域にメタデータを記憶してから前記ジャーナリング領域以外のデータ領域に当該メタデータまたは実データを記憶することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記ジャーナリングモードはｏｒｄｅｒｅｄモードを含み、当該ｏｒｄｅｒｅｄモードでは、前記記憶手段は前記ジャーナリング領域以外のデータ領域に実データを記憶してから前記ジャーナリング領域にメタデータを記憶することを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記ジャーナリングモードはｊｏｕｒｎａｌモードを含み、当該ｊｏｕｒｎａｌモードでは、前記記憶手段は前記ジャーナリング領域に実データとメタデータとを記憶してから前記ジャーナリング領域以外のデータ領域に前記実データを再び記憶することを特徴とする請求項８に記載の情報処理装置。
【請求項１２】
前記検索手段によって前記ジャーナリング領域を割り当て可能な空き領域を検索できなかった場合に、前記割り当て手段によるジャーナリング領域の割り当て処理を省略することを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
データを保持するためのデータ領域とファイルシステムを管理するための管理情報を保持するための管理領域とを有する記憶装置を備える情報処理装置であって、
前記記憶装置のデータ領域に対するアクセスに関する操作情報を格納するためのログ領域を、前記記憶装置に割り当てる割り当て手段と、
前記割り当て手段によって割り当てたログ領域の位置を示す位置情報を保持させる保持手段と、
前記データ領域に対するアクセスに関する操作情報を前記ログ領域に記憶させる制御手段と、を有し、
前記割り当て手段は、前記ログ領域の位置情報が保持されていると、当該位置情報が示す位置とは異なる位置に新たなログ領域を割り当てることを特徴とする情報処理装置。
【請求項１４】
前記記憶装置をマウントする指示を発行する指示手段を更に備え、前記保持手段は前記指示手段からの指示に応じて、前記割り当て手段によって割り当てたログ領域の位置を示す位置情報を保持させることを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
データを保持するためのデータ領域とファイルシステムを管理するための管理情報を保持するための管理領域とを有する記憶装置を備える情報処理装置による情報処理方法であって、
前記データ領域から空き領域を検索する検索工程と、
前記検索工程で検索した空き領域に、メタデータまたは実データを書き込む操作に関する操作情報を格納するためのジャーナリング領域を割り当てる割り当て工程と、
前記ジャーナリング領域以外のデータ領域に対する操作に関する操作情報を前記ジャーナリング領域に記憶させる制御工程とを有することを特徴とする情報処理方法。
【請求項１６】
データを保持するためのデータ領域とファイルシステムを管理するための管理情報を保持するための管理領域とを有する記憶装置を備える情報処理装置による情報処理方法であって、
前記記憶装置のデータ領域に対するアクセスに関する操作情報を格納するためのログ領域を、前記記憶装置に割り当てる割り当て工程と、
前記割り当て工程によって割り当てたログ領域の位置を示す位置情報を保持させる保持工程と、
前記データ領域に対するアクセスに関する操作情報を前記ログ領域に記憶させる制御工程と、を有し、
前記割り当て工程は、前記制御工程によって前記位置情報が保持されていると、当該位置情報が示す位置とは異なる位置に新たなログ領域を割り当てることを特徴とする情報処理方法。
【請求項１７】
データを保持するためのデータ領域とファイルシステムを管理するための管理情報を保持するための管理領域とを有する記憶装置を備えるコンピュータを、
前記データ領域から空き領域を検索する検索手段と、
前記検索手段で検索した空き領域に、メタデータまたは実データを書き込む操作に関する操作情報を格納するためのジャーナリング領域を割り当てる割り当て手段と、
前記ジャーナリング領域以外のデータ領域に対する操作に関する操作情報を前記ジャーナリング領域に記憶させる制御手段として機能させることを特徴とするコンピュータが読み取り可能なプログラム。
【請求項１８】
データを保持するためのデータ領域とファイルシステムを管理するための管理情報を保持するための管理領域とを有する記憶装置を備えるコンピュータを、
前記記憶装置のデータ領域に対するアクセスに関する操作情報を格納するためのログ領域を、前記記憶装置に割り当てる割り当て手段と、
前記割り当て手段によって割り当てたログ領域の位置を示す位置情報を保持する保持手段と、
前記データ領域に対するアクセスに関する操作情報を前記ログ領域に記憶させる制御手段と、を有し、
前記割り当て手段は、前記ログ領域の位置情報が保持されていると、当該位置情報が示す位置とは異なる位置に新たなログ領域を割り当てる情報処理装置として機能させることを特徴とするコンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。特に、本発明はファイルシステムに関する。
【背景技術】
【０００２】
近年の情報処理装置においては、細分化されたファイルや大規模なファイルを扱うことが多くなってきた。これにより、ファイルシステムのデータ書き込み操作に時間がかかることが多くなり、その結果、データ書き込み中に電源断（ｐｏｗｅｒ  ｄｉｓｃｏｎｔｉｎｕｉｔｙ）などが発生してファイル構成情報に矛盾が発生する可能性が高まってきた。このような事態を避けるために、多くのシステムでは、ジャーナリング機能を持ったファイルシステム（以降、ジャーナリングファイルシステムと称す）を利用するようになった。ジャーナリング機能とは、データ書き込み操作中に障害が発生した場合に、障害から復旧できるように、ファイルやディレクトリの更新履歴・操作履歴を含むジャーナル・ログを二次記憶装置上に記録しておく機能である。
【０００３】
特許文献１には、ジャーナリング領域に書き込むデータをスタックに溜めておき、先に二次記憶装置への更新処理が完了してジャーナル・ログが不要になった場合には、スタックのデータを削除するという方法が開示されている。
【０００４】
また、特許文献２には、フラッシュの様な不揮発性メモリにジャーナルデータを記録する時に、セクタサイズ以上になるまでバッファにためて、セクタ単位で書き込む方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−２０３１８６号公報
【特許文献２】特開２００１−２０９５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１や特許文献２のジャーナリングファイルシステムは、二次記憶装置に固定のジャーナリング領域を設定していた。そのため、二次記憶装置についてジャーナリング機能による記憶構成に対する書込み劣化が集中してしまうという問題がある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係る情報処理装置は、データを保持するためのデータ領域とファイルシステムを管理するための管理情報を保持するための管理領域とを有する記憶装置を備える情報処理装置であって、前記データ領域から空き領域を検索する検索手段と、前記検索手段で検索した空き領域に、メタデータまたは実データを書き込む操作に関する操作情報を格納するためのジャーナリング領域を割り当てる割り当て手段と、前記ジャーナリング領域以外のデータ領域に対する操作に関する操作情報を前記ジャーナリング領域に記憶させる制御手段とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、二次記憶装置の記憶構成について、ジャーナリング機能による書込み劣化をより分散できる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置の構成を示す概略図である。
【図２】情報処理装置の機能構成を示す概略図である。
【図３】ジャーナリングファイルシステムを構築する処理を示すフローチャートである。
【図４】ファイルシステムをマウントする処理を示すフローチャートである。
【図５】新規にジャーナリング領域を構築した際の、二次記憶装置の保持内容の変遷を表す概念図である。
【図６】ジャーナリング機能の有無に応じてデータを書き込む処理を示すフローチャートである。
【図７】ジャーナリング領域の構造を表す概略図である。
【発明を実施するための形態】
【００１０】
＜実施形態１＞
まず、ジャーナリングファイルシステムの概略について説明する。ジャーナリングファイルシステムは、二次記憶装置をファイルシステムに沿ってフォーマットする時に、その二次記憶装置上にジャーナル・ログを記録するためのジャーナリング領域（ログ領域の一種）と、実際のデータを記録するデータ領域を確保する。アプリケーションからデータ書き込み操作の要求が発行されると、まずファイルシステムは、メモリ上のデータ（実データ：実際にデータ領域に書きこむ情報）とメタデータ（実データの操作情報、ファイル名、操作日時、ＦＡＴ、スーパーブロック、グループディスクリプタ、ノードテーブルやそこからリンクされているデータなどの管理情報など）を変更する。そして、ジャーナリングファイルシステムは、この変更のうちジャーナル・ログとして記録（記憶）するデータを、ジャーナリング領域に書き込む（ただし、一般的に、ジャーナリング領域に書き込む動作自体をメタデータとしては保存しない。）。
【００１１】
ジャーナリング領域への書き込みが確認できた後に、ジャーナリングファイルシステムは実際のデータとメタデータをデータ領域に書き込む。その後、ジャーナリング領域とデータ領域の同期が取れたことが確認できた後に、このジャーナル・ログを記録していた領域をジャーナリングファイルシステムが新しいジャーナル・ログの書き込みのために解放する。通常、ジャーナリング領域は所定のサイズであるため、解放された領域を繰り返しリングバッファの様に使用することになる。
【００１２】
従来のジャーナリングファイルシステムにおけるジャーナリング領域は、ファイルシステム構築時にその位置とサイズが決定され、構築後の変更はできなかった。
【００１３】
以下、図面を参照して実施形態１を詳細に説明する。本実施形態ではファイルシステムをマウントする際に、データブロックから空き領域（未使用領域）を検索して異なる位置に新たなジャーナリング領域を割り当てる。
【００１４】
図１は、本発明の情報処理装置の概略構成を示すブロック図である。同図において、１００は情報処理装置、１０１はＣＰＵ、１０２はＲＡＭなどの一次記憶装置である。情報処理装置１００においては、通常、１コアのＣＰＵ１０１であれば複数のプロセスのうちの１つを順に処理し、処理は一定期間ごとに切り替えて実施される。ＣＰＵ１０１に、演算処理などを行なうプロセッサコアを複数備えてもよいし、ＣＰＵ１０１を情報処理装置１００に複数備えてもよい。一次記憶装置１０２は、主に二次記憶装置から読み込んだプログラムやデータを保持する。一次記憶装置１０２は、ＤＤＲＳＤＲＡＭなどの揮発性メモリとしてのＤＲＡＭや、ブートプログラムを保持する不揮発性メモリとしてのマスクロムやフラッシュメモリなどを備えている。１０３はＩ／Ｏコントローラであり、１０４はＦｌａｓｈ  ＳＳＤ（Ｆｌａｓｈ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やフラッシュメモリを備える二次記憶装置である。Ｆｌａｓｈ  ＳＳＤは不揮発のフラッシュメモリを内蔵する不揮発性の記憶装置でありハードディスクドライブと同等の機能を実現可能に構成されている。ファイルやディレクトリ等のファイルシステムに関わるデータは、二次記憶装置１０４に記録される。ジャーナリングファイルシステムに関するデータは、二次記憶装置１０４上に構築される。
【００１５】
なお、二次記憶装置１０４にあるファイルの操作は、ＣＰＵ１０１が一次記憶装置１０２上のプログラムを実行することで実現されるオペレーティングシステムからＩ／Ｏコントローラ１０３に対して、ＲＥＡＤ要求、ＷＲＩＴＥ要求を行うことで実現する。
【００１６】
図２は、第一の実施形態に係る情報処理装置の機能構成を示すブロック図である。なお、二次記憶装置２０２以外の機能構成は、ＣＰＵ１０１で実行されるプログラムがＩ／Ｏコントローラ１０３を操作することで実現される。
【００１７】
同図において、情報処理装置１００は１つ以上の二次記憶装置１０４を搭載し、以降の説明では１つ以上の二次記憶装置１０４を二次記憶装置２０２として抽象化して説明する。
【００１８】
２０１は、二次記憶装置２０２の中から、新規に構築するジャーナリング領域のための領域を検索する空き領域検索部である。二次記憶装置２０２の中には、データが記録されている領域（既存のジャーナリング領域を含む）と、データが記録されていない２０３の空き領域が存在する。空き領域検索部２０１は、この空き領域２０３の中から、新規に構築するジャーナリング領域に必要なサイズの連続した領域を検索する。空き領域の探索は、未使用の領域を探す既知の手法を用いる。例えば、ＦＡＴ（ファイルアロケーションテーブル）のようにブロック毎の使用状態を示すテーブルを参照して、未使用の領域を探索してもよい。また空き領域をインデックス化したテーブル（領域ＩＤ、領域開始ブロック、領域サイズ、を１エントリとしたテーブル）を別途作成しておいて空き領域の探索処理を高速化してもよい。空き領域検索部２０１によりジャーナリング領域２０５を構築するために必要なサイズの領域を発見できた場合は、２０４のジャーナリング領域構築部を実行して、既存のジャーナリング領域（前回マウント時に作成したジャーナリング領域、他のジャーナリング領域）を空き領域として解放する。領域を発見できなかった場合は、ジャーナリング領域構築部を実行しない。その場合、二次記憶装置２０２に元々存在している既存のジャーナリング領域を使用して、ジャーナリングを行う。
【００１９】
ジャーナリング領域構築部２０４は、空き領域検索部２０１により発見された領域に、新しいジャーナリング領域２０５を構築する。構築するジャーナリング領域２０５のフォーマットの詳細は後述する。
【００２０】
２０６はジャーナリング領域２０５が二次記憶装置２０２のどの位置に存在するかを示す位置情報（ジャーナリング領域２０５の先頭アドレスまたは先頭ブロック番号、ジャーナリング領域２０５のサイズやブロック数を含む）を位置管理領域２０７に記録する位置管理領域記録部（格納手段）である。位置管理領域２０７は、ファイルシステムを構築する時に作成され、位置管理領域記録部２０６が新しいジャーナリング領域２０５を構築する度にその位置を上書き記録する。
【００２１】
ファイルシステムを構築する際に、ＣＰＵ１０１の要求によってＩ／Ｏコントローラ１０３が、二次記憶装置２０２に、ファイルシステムを管理するファイル管理ブロック２１２と、データを記録するデータブロック２１１とを確保する。このうち、ジャーナリング領域は、データブロック２１１に設ける。サイズ管理領域２１０はジャーナリング領域のサイズを示すサイズ情報を保持する。このサイズ情報は、予めユーザに設定させたり、二次記憶装置のサイズに応じて（例えば、二次記憶装置の全容量から所定の割合）オペレーションシステムなどが自動で決定させたりする。
【００２２】
２０８は、ユーザやアプリケーション等によって二次記憶装置２０２に対する書き込み操作が実行された時に呼び出される管理領域取得部である。管理領域取得部２０８は、位置管理領域２０７からジャーナリング領域２０５の位置を取得する。そして、書込み操作についてジャーナル・ログ記録部２０９（制御手段）がジャーナル・ログを二次記憶装置２０２に記録する。ジャーナル・ログ記録部２０９は、管理領域取得部２０８によって取得したジャーナリング領域２０５に書込み操作に関するジャーナル・ログを記録する。
【００２３】
次に、図３〜図７を用いて、本実施形態の情報処理装置１００による具体的な処理手順について説明する。
【００２４】
まず、二次記憶装置上にジャーナリングファイルシステムを構築する処理手順について説明する。通常、二次記憶装置上にファイルシステムを構築する時には、２つの手順を踏む。１つ目は、二次記憶装置の論理フォーマットである。論理フォーマットでは、オペレーティングシステムが使用する管理用データ（例えば、ＦＡＴ）や実際に記録されるデータの論理的な位置の設定（例えば、パーティション情報の書き込み）を行う。２つ目は、デバイスドライバが二次記憶装置のブロックを読み書きできるようにするためのファイルシステムの構築である。２つ目の処理において、ジャーナリングファイルシステムでは、二次記憶装置のブロックを読み書きできるようにするための処理に加え、ジャーナリング領域の構築も行う。論理フォーマットやファイルシステムの構築については既知の種々の手法を用いればよいので詳細は省略する。本実施形態におけるジャーナリング領域の構築の手順を、図３を用いて説明する。
【００２５】
図３において、ステップＳ３００では、ＣＰＵ１０１がジャーナリング領域を構築するかどうかを判定する。ジャーナリングファイルシステムでは、ジャーナリング領域の使用／未使用をユーザに選択させることができる。このジャーナリング領域を構築するかどうかを、予めユーザにジャーナリング設定（ジャーナリング使用・未使用を示す情報を含む）として設定させ、このジャナリング設定を参照してジャーナリング領域の構築の有無を判断する。構築する場合はステップＳ３０１に移り、構築しない場合は処理を終了する。
【００２６】
ステップＳ３０１では、ＣＰＵ１０１とＩ／Ｏコントローラ１０３の協働によってジャーナリング領域の構築を行う。この処理は、機能構成としては上述したように図２で説明した空き領域検索部２０１と、ジャーナリング領域構築部２０４によって行う。なお、空き領域検索部２０１は、空き領域を検索する際に、サイズ管理領域２１０に保持されているサイズ情報を満たす空き領域を検索する。
【００２７】
ステップＳ３０２では、ＣＰＵ１０１がファイル管理ブロックにジャーナリング領域２０５の位置を管理する位置管理領域２０７と、サイズを管理するサイズ管理領域２１０を作成する。そして、ステップＳ３０１で構築したジャーナリング領域の位置情報を位置管理領域２０７に、新たに作成したジャーナリング領域のサイズをサイズ管理領域２１０に記録する。なお、固定サイズのジャーナリング領域しか許容しない場合はサイズ管理領域２１０を更新しなくてもよい。
【００２８】
次に、図４を用いて、本発明におけるマウント時の処理手順について説明する。なお、本明細書で「マウント」とは、デバイスを認識した上で、ファイルシステムに二次記憶装置２０２を認識させ、ファイルにアクセスできるようにさせる操作のことを示す。情報処理装置１００の論理パーティションをツリー構造にまとめている場合に、ツリー構造に二次記憶装置２０２をディレクトリとして登録する作業とも説明できる。なお、逆の操作（例えば、ツリー構造から切り離す作業）を「アンマウント」と呼ぶ。
【００２９】
二次記憶装置２０２をマウントする指示をＣＰＵ１０１が発行し、ジャーナリング設定がジャーナリング機能を利用することを示していると、ステップＳ４００では、ＣＰＵ１０１が二次記憶装置上に既存のジャーナリング領域が存在するかどうかを判定する。存在する場合は、ステップＳ４０１に移り、存在しない場合は、ステップＳ４０６に移る。ジャーナリング設定がジャーナリング機能を利用しないことを示している際には、直接ステップＳ４０６を実施してもよい。
【００３０】
ステップＳ４０１では、空き領域探索部２０１が二次記憶装置２０２上からジャーナリング領域２０５を作成可能なサイズの空き領域を検索する。なお、ジャーナリング領域２０５は物理的なアドレスが連続していることが好ましいため、ステップＳ３０２で記録したジャーナリング領域のサイズ以上、アドレスが連続した領域を検索する。そして、ステップＳ４０２に移る。
【００３１】
ステップＳ４０２では、ステップＳ４０１の検索結果を元に、ジャーナリング領域を構築できるサイズの空き領域を発見できたかどうかを空き領域探索部２０１が判定する。発見できた場合は、ステップＳ４０３に移り、発見できなかった場合は、ステップＳ４０６に移る。
【００３２】
ステップＳ４０３では、ステップＳ４０１で発見した領域に、ジャーナリング領域構築部２０４が新規のジャーナリング領域２０５を構築する。そして、ステップＳ４０４に移る。
【００３３】
ステップＳ４０４では、ステップＳ４０２で構築したジャーナリング領域の位置を管理領域記憶部２０６が位置管理領域２０７に記録する。
【００３４】
ステップＳ４０５では、ＣＰＵ１０１が既存のジャーナリング領域（不図示）を空き領域として解放する。そして、ステップＳ４０６に移る。
【００３５】
ステップＳ４０６では、ＣＰＵ１０１がマウント処理を行う。ここでは、通常のマウント処理に加え、ジャーナリング領域が存在する場合にはジャーナリングモードを決定する。ジャーナリングモードとは、ジャーナリングでどの種類のデータを保護するか、どのようにジャーナリングを動作させるか（実データとメタデータ、の内の何をログとして記録するか、実データとメタデータをどの順番で記録するかなど）を決定する。ジャーナリングモードは、１つのみを備える場合もあれば、複数備える場合もある。ジャーナリングモードは、ユーザがマウントオプションを用いて指定してもよいし、オペレーションシステムで自動的に選択してもよい。ジャーナリングモードとして例えば、ｗｒｉｔｅｂａｃｋモード、ｏｒｄｅｒｅｄモード、ｊｏｕｒｎａｌモードなどを用意しておくことが考えられる。ｗｒｉｔｅｂａｃｋモードは、メタデータのみをジャーナリング領域に格納するモードである。このモードではファイルシステムの構造を維持し、ファイルシステムの破損を抑制するが、データとメタデータの不整合が発生する可能性は、ジャーナリングを使用しない場合と比べてあまり変わらない（例えば、メタデータがジャーナリング領域に格納されてから、データブロックに書き込まれる前にシステムがクラッシュした場合）。一方、ｏｒｄｅｒｅｄモードでもジャーナルに記録するのはメタデータだけであるが、実データをデータブロックに書き込んでからメタデータをジャーナリング領域に書き込むため、ファイルシステムのリカバリー後の整合性が保証できる。さらに、ｊｏｕｒｎａｌモードでは、メタデータと実データの両方をジャーナリング領域に格納するため、ファイルシステムの破損とデータ損失を抑制できる。ただし、すべての実データがジャーナリング領域とデータブロックとへ２回書き込まれるため（最初にジャーナリング領域に書き込み、次にデータブロックに再び書き込む）、他のモードに比べて書込み処理パフォーマンスは低下する。ジャーナリングモードはジャーナリング設定として予めユーザに設定させてもよいし、ファイルシステムが特定のモードをデフォルトのモードとして設定してもよい。なお、ジャーナリング設定はファイル管理ブロックに格納することが好ましい。
【００３６】
次に、ステップＳ４０３からステップＳ４０５における二次記憶装置２０２の内容の変遷を、より具体的に図５を用いて説明する。
【００３７】
同図に置いて、状態５００は新規ジャーナリング領域を構築前の二次記憶装置２０２の内容を示し、状態５０６では新規ジャーナリング領域を構築後の二次記憶装置２０２の内容を示し、状態５０８では既存のジャーナリング領域を解放した後の二次記憶装置２０２の内容を示す。
【００３８】
状態５００は、ファイル管理ブロック５０１とデータブロック５０２の２つのブロックが存在する。ファイル管理ブロック５０１には、ファイルシステムを管理するための情報が存在し、ジャーナリング領域の位置を管理する位置管理領域５０３が存在する。データブロック５０２には、新規ジャーナリング領域構築前から存在する既存のジャーナリング領域５０４と空き領域５０５が存在する。
【００３９】
状態５０６は、ジャーナリング領域構築部２０４が新規ジャーナリング領域を構築した際の二次記憶装置２０２の内容であり、図４でいうとステップＳ４０３が実行された後の状態に当たる。状態５００と異なる点は、新規のジャーナリング領域５０７が、空き領域５０５に構築されている点である。この新規のジャーナリング領域５０７のサイズは、ファイルシステム構築時に決められたジャーナリング領域のサイズであるため、既存のジャーナリング領域５０４のサイズと同じサイズとなる。
【００４０】
状態５０８は、既存のジャーナリング領域５０４を空き領域として解放した後の二次記憶装置２０２の内容であり、図４でいうとステップＳ４０５が実行された後の状態に当たる。状態５０６と異なる点は、既存のジャーナリング領域５０４の代わりに解放された領域５０９が存在する点と、空き領域５０５の代わりに新規ジャーナリング領域５０７が存在する点である。既存のジャーナリング領域５０４は、ステップＳ４０５の処理によって解放され、この領域は解放された領域５０９として空き領域５０５となる。また、新規ジャーナリング領域５０７はステップＳ４０３の処理によってジャーナリング領域５０７として利用されることになるため、空き領域５０５ではなくなる。
【００４１】
次に、図６、図７を用いて、本実施形態におけるデータ書き込み操作について説明する。図６は情報処理装置１００においてデータ書込み操作を行うフローチャートであり、図７はデータ書込み操作を行う際のジャーナリング領域７０１の詳細を示す概念図である。
【００４２】
図６のステップＳ６００では、ジャーナリングを行うかどうかを判定する。ジャーナリングを行うかどうかの判定はマウント時（Ｓ４０６）に決定されている。具体的には、ステップＳ４００でジャーナリング領域が存在すると判定され、かつステップＳ４０６でジャーナリングを使用するジャーナリングモードを選択した場合に、ジャーナリングを行うという判定になる。ジャーナリングを行う場合は、ステップＳ６０１に移り、行わない場合はステップＳ６０５に移る。
【００４３】
ステップＳ６０１では、ＣＰＵ１０１が位置管理領域２０７に記録されているジャーナリング領域の位置を取得する。そして、ステップＳ６０２に移る。
【００４４】
ステップＳ６０２では、ＣＰＵ１０１がジャーナル・ログとして記録する対象（前述のジャーナリングモードに対応する、ログとしてのメタデータの変更履歴や実データ）を決定し、ステップＳ６０１で取得したジャーナリング領域５０７の位置に、ジャーナリングモードに対応する対象を記録する。ジャーナリング領域５０７のどの部分に記録するかは、ジャーナリング領域にあるジャーナリング領域の管理情報を元に決定する。これについて、図７を用いてより具体的に説明する。
【００４５】
同図において、位置管理領域２０７は、二次記憶装置２０２上にあるジャーナリング領域７０１の位置を特定できる位置情報を保持している。ジャーナリング領域５０７には、ジャーナリング領域の管理情報を持つジャーナリング領域管理情報ブロック７０２と、実際にジャーナル・ログを記録するリングバッファ７０３が存在する。ジャーナリング領域管理情報ブロック７０２には、開始位置情報７０４が存在する。開始位置情報７０４には、次にジャーナル・ログの書き込みが発生した時に、そのジャーナル・ログを記録する位置が保持されている。
【００４６】
例えば、次にジャーナル・ログを記録する位置として、リングバッファ７０３に存在する空きバッファＡ７０５が記録されていると、ジャーナル・ログ書き込み時には、ＣＰＵ１０１は開始位置情報７０４を参照して、ジャーナル・ログを空きバッファＡ７０５に書き込む。リングバッファ７０３は、このジャーナル・ログが記録されたバッファが複数連なっている。空きバッファＡ７０５へのジャーナル・ログの書き込みが完了すると、次にジャーナル・ログを記録する位置として空きバッファＢ７０６を示す様に、ＣＰＵ１０１が開始位置情報７０４を更新する。
【００４７】
次に、ステップＳ６０３では、二次記憶装置２０２に実データおよびメタデータを記録する。ステップＳ６０２およびステップＳ６０３における書き込み対象の決定およびデータの記録方法は、図４のステップＳ４０６で選択したジャーナリングモードに準ずる。例えば、ジャーナリングモードが、メタデータのみをジャーナリングで保護する対象とし、データ書き込み時にメタデータを書き込む前に実際のデータを書き込む順番を保証するｏｒｄｅｒｅｄモードであるとする。この場合、ステップＳ６０２でジャーナル・ログとして記録するデータはメタデータのみとなる。また、ステップＳ６０３でデータを二次記憶装置２０２に書きこみ処理を行う際には、データを先に書き込んだ後で、メタデータを書き込む。これにより、メタデータが誤ったデータを指すことを防ぎ、ファイルシステムの整合性を保つ様に動作する。二次記憶装置への書き込み完了後、ステップＳ６０４に移る。
【００４８】
そして、ステップＳ６０４では、ジャーナリング領域にあるジャーナル・ログを二次記憶装置に書き出す。書き出しが完了し、二次記憶装置と同期がとれたことを確認すると、書き出したジャーナル・ログを保持するバッファは新規のジャーナル・ログ書き込みのために解放される。ステップＳ６０５では、二次記憶装置２０２に実データおよびメタデータを記録する。
【００４９】
以上のように、本実施形態では、マウント時に空き領域検索部２０１を実行して、二次記憶装置２０２の空き領域２０３から新規ジャーナリング領域のための領域を検索する。検索して領域を発見できた場合、ジャーナリング領域構築部２０４を実行して、空き領域２０３にジャーナリング領域２０５を構築する。その後、位置管理領域記録部２０６を実行して、ジャーナリング領域２０５の位置を位置管理領域２０７に記録する。データ書き込み時には、位置管理領域取得部２０８を実行して、位置管理領域２０７からジャーナリング領域２０５の位置を取得する。その後、ジャーナル・ログ記録部２０９を実行して、取得したジャーナリング領域２０５の位置にジャーナル・ログを記録する。これにより、マウント毎にジャーナル・ログを記録する領域を変える（異ならせる）ため、特定領域への書き込みの集中を抑制できる。その結果、書き込み回数に制限のある二次記憶装置について書込み劣化の集中を抑制する。
【００５０】
特に、ハードウェア的なウェアレベリング機能が十分でないフラッシュデバイスを利用する形態では、本発明の効果はより顕著になる。また、ウェアレベリング機能はＦｌａｓｈ  ＳＳＤの種類によってウェアレベリングのアルゴリズムが異なっている場合が少なくない。そのため、例えば種々のＦｌａｓｈ  ＳＳＤを利用する製品について障害発生時のファイルシステムをチェックする際に、ウェアレベリングを考慮してチェックしなければならない。しかし、本実施形態によればウェアレベリングを用いなくてもジャーナリング領域に対応する記憶構成についての書き込み劣化の集中を抑制できるので必ずしもウェアレベリングを用いなくてもよく、用いない場合のファイルシステムのチェックが比較的簡単である。一方で、ウェアレベリング機能の利用の有無に応じて、本実施形態のジャーナリング機能の有無を切り替えてもよい。例えば、Ｆｌａｓｈ  ＳＳＤなどのハード的なウェアレベリングを利用する際は、上述の実施形態のジャーナリング機能使わないように自動的に変更するようにしてもよい（或いは、ｗｒｉｔｅｂａｃｋモードのように低レベルのモードに変更するようにしてもよい）。
【００５１】
また、磁気ディスクの様に磁性体が塗布された二次記憶装置の場合でも、特定セクタへの書き込みを抑制することで、特定セクタの磁性の低下による不良ブロックの増加を低減することができる。また、特許文献１および特許文献２の方法のように、書き込み回数自体を減らさないため、電源断などの障害からの復帰性能を低下させずに二次記憶装置の書き込み劣化の集中を抑制する。
【００５２】
上述の実施形態では、ジャーナリング領域をジャーナリングファイルシステムが構築された記憶装置と同じ記憶装置に確保する場合について説明をしたが、ジャーナリング領域をジャーナリングファイルシステムが構築された記憶装置とは別の記憶装置に設けてもよい。
【００５３】
また上述の実施形態では、新たなジャーナリング領域を設定する際に既存のジャーナリング領域を解放したが、解放しなくてもよい。例えば、複数のジャーナリング領域を設定し、マウント毎にアクティブなジャーナリング領域を切り替えるだけでもよい。その場合は、全てのジャーナリング領域の情報を領域ＩＤと対応づけて位置管理領域２０７に保持させ、また前回マウントした際に用いた領域ＩＤを保持しておく。そして、マウント時に前回使用した領域ＩＤを避けるように（例えば、ラウンドロビン的に）複数のジャーナリング領域を順に使用していけばよい。
【００５４】
また、上述の実施形態ではデータ領域に対する操作に関する情報をジャーナリング領域に格納するとして説明しているが、もちろんジャーナリング領域に対する操作以外をジャーナリング領域に格納する。また、ジャーナリング領域以外のデータ領域にデータを書き込む場合は、当然、空き領域検索部２０１によりデータを書き込めるだけの空き領域を検索する。
【００５５】
また、上述の実施形態ではＣＰＵ１０１がジャーナリング領域の位置を取得したり、ジャーナリング領域への書き込みをＩ／Ｏコントローラ１０３に要求したりすることを説明したが、Ｉ／Ｏコントローラ１０３が高機能であればＣＰＵ１０１はマウント要求をするだけで後の処理はＩ／Ｏコントローラ１０３でハード的に実施してもよい。
【００５６】
また、上述の実施形態ではアンマウント時について説明を省略しているが、アンマウント時にジャーナリング領域の情報を残しておき、マウント時に別の新しいジャーナリング領域を割り当ててから解放することは、アンマウント時のジャーナリング領域の解放をスキップすることで高速になる点でメリットはある。
【００５７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が、コンピュータが読み取り可能なプログラムを読み出して実行する処理である。
【００５８】
プログラムを供給するための記憶媒体としては、例えば、光ディスク、磁気ディスク、光磁気ディスク、磁気テープ、不揮発性のメモリカードなどを用いることが出来る。これらの記憶媒体は、上述実施形態の機能を実現する二次記憶装置としても用いることが出来る。上述の実施形態では二次記憶装置としてＦｌａｓｈ  ＳＳＤを例にしたが、電子の移動によって物理的に劣化する記憶素子を備える記憶装置であれば本発明を適用することで同様の効果を得ることができる。
【符号の説明】
【００５９】
１０１  ＣＰＵ
１０２  一次記憶装置
１０３  Ｉ／Ｏコントローラ
１０４  二次記憶装置
【図１】
2014153873.tif 000003
【図２】
2014153873.tif 000004
【図３】
2014153873.tif 000005
【図４】
2014153873.tif 000006
【図５】
2014153873.tif 000007
【図６】
2014153873.tif 000008
【図７】
2014153873.tif 000009