(57)【要約】【課題】効率的にデータを更新する技術を提供する。【解決手段】データの更新を管理する管理手段の実行中に、前記管理手段の管理方式を処理単位毎に決定する決定手段と、前記決定手段により決定された前記管理方式で、処理単位毎に前記管理に係る履歴情報を作成する作成手段と、前記作成手段により作成された前記履歴情報を処理単位毎に記憶領域に記録する記録手段と、を有することを特徴とする。【選択図】図６
2015043178.tif 000002
【特許請求の範囲】
【請求項１】
データの更新を管理する管理手段の実行中に、前記管理手段の管理方式を処理単位毎に決定する決定手段と、
前記決定手段により決定された前記管理方式で、処理単位毎に前記管理に係る履歴情報を作成する作成手段と、
前記作成手段により作成された前記履歴情報を処理単位毎に記憶領域に記録する記録手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記決定手段は、前記情報処理装置の状態に基づいて、前記管理方式を処理単位毎に決定する第１の決定手段を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記決定手段は、前記管理方式に係る管理方式情報が指定された場合、前記指定された管理方式情報に基づいて、前記管理方式を処理単位毎に決定する第２の決定手段を更に有することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第１の決定手段は、入力情報に基づいて前記情報処理装置の状態に係る監視値を処理単位毎に算出する算出手段を有し、
前記決定手段は、前記算出手段により算出された監視値に基づいて、前記管理方式を決定することを特徴とする請求項２又は３記載の情報処理装置。
【請求項５】
前記算出手段は、入力情報が複数ある場合、各入力情報に対して重み付けをし、前記重み付けをした入力情報に基づいて前記監視値を処理単位毎に算出することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記第２の決定手段は、前記管理手段の処理を識別する識別情報に対応する管理方式情報を検索し、前記管理方式情報に基づいて、前記管理方式を決定することを特徴とする請求項３記載の情報処理装置。
【請求項７】
前記第２の決定手段は、前記管理方式情報が検索されたか否かを判定する判定手段を更に有し、
前記判定手段により管理方式情報が検索されたと判定された場合、処理単位毎の管理方式を、前記検索された管理方式情報に対応する管理方式に決定し、前記判定手段により管理方式情報が検索されなかったと判定された場合、処理単位毎の管理方式を、前記第１の決定手段により決定された管理方式に決定することを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記記録手段は、前記作成手段により作成された前記履歴情報を、前記管理方式毎に異なる記憶領域に記録することを特徴とする請求項１乃至７何れか１項記載の情報処理装置。
【請求項９】
前記管理手段は、ジャーナリングファイルシステムであり、
前記管理方式は、ジャーナリング方式であり、
前記履歴情報は、ジャーナルログであることを特徴とする請求項１乃至８何れか１項記載の情報処理装置。
【請求項１０】
情報処理装置が実行する情報処理方法であって、
データの更新を管理する管理手段の実行中に、前記管理手段の管理方式を処理単位毎に決定する決定ステップと、
前記決定ステップにより決定された前記管理方式で、処理単位毎に前記管理に係る履歴情報を作成する作成ステップと、
前記作成ステップにより作成された前記履歴情報を処理単位毎に記憶領域に記録する記録ステップと、
を含むことを特徴とする情報処理方法。
【請求項１１】
コンピュータに、
データの更新を管理する管理手段の実行中に、前記管理手段の管理方式を処理単位毎に決定する決定ステップと、
前記決定ステップにより決定された前記管理方式で、処理単位毎に前記管理に係る履歴情報を作成する作成ステップと、
前記作成ステップにより作成された前記履歴情報を処理単位毎に記憶領域に記録する記録ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
記憶装置に対するファイル操作中に、電源断や記憶媒体の取り出し等の異常事象が発生すると、ファイルを管理するための情報と、ファイルの内容との間で整合性が取れなくなることがある。ジャーナリング機能付きのファイルシステム（以下、ジャーナリングファイルシステムと呼ぶ）では、更新履歴をジャーナルログとして二次記憶装置に保持することで、こういった障害が発生するリスクを低減させている。また、更新履歴には、ファイル等の操作履歴やファイルそのものの差分情報等が含まれ、どのような更新履歴を、どういった手順で保持するかによって、複数のジャーナリング方式が存在する。
特許文献１では、ジャーナリング領域に書き込むデータをスタックに溜めておき、先に二次記憶装置への更新処理が完了してジャーナルログが不要になった場合には、スタックのデータを削除するという技術が開示されている。
特許文献２では、データベースを論理的な単位に分割し、ジャーナルログの取得内容、ジャーナルログの取得の要、不要を設定してジャーナルログの取得を行う技術が開示されている。
特許文献３では、システムの負荷が小さいときには、ジャーナルログをディスクに即座に書き込むという技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２０３１８６号公報
【特許文献２】特開平０５−０６１７５１号公報
【特許文献３】特開２００４−６２８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のジャーナリングファイルシステムでは、マウントする際にジャーナリング方式を選択し、マウント中はジャーナリング方式を変更しない。そのため、従来のジャーナリングファイルシステムでは、システムの状態に応じて動的にジャーナリング方式を切り替えることができず、パフォーマンスや電力消費の観点で最適な制御を行うことが困難であった。
本発明は、効率的にデータを更新する技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
そこで、本発明の情報処理装置は、データの更新を管理する管理手段の実行中に、前記管理手段の管理方式を処理単位毎に決定する決定手段と、前記決定手段により決定された前記管理方式で、処理単位毎に前記管理に係る履歴情報を作成する作成手段と、前記作成手段により作成された前記履歴情報を処理単位毎に記憶領域に記録する記録手段と、を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、効率的にデータを更新する技術を提供することができる。
【図面の簡単な説明】
【０００７】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】実施形態１における情報処理装置の機能構成等の一例を示す図である。
【図３】ジャーナリング領域及びトランザクションの構成の一例を示す図である。
【図４】動作状態対応管理テーブルの一例を示す図である。
【図５】システム監視値の算出方法の概念の一例を示す図である。
【図６】実施形態１の処理の一例を示すフローチャート（その１）である。
【図７】実施形態１の処理の一例を示すフローチャート（その２）である。
【図８】実施形態２における情報処理装置の機能構成等の一例を示す図である。
【図９】個別ジャーナリングレベル管理テーブルの一例を示す図である。
【図１０】実施形態２の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
＜実施形態１＞
図１は、本実施形態における情報処理装置１００のハードウェア構成の一例を示す図である。
情報処理装置１００は、通常、ＣＰＵ１０１が複数のプロセスを１つずつ処理し、一定期間毎に処理を切り替える。ここで、ＣＰＵ１０１は、演算処理等を行なうプロセッサコアを複数有していてもよい。また、情報処理装置１００は、ＣＰＵ１０１自体を複数有していてもよい。また、ＣＰＵ１０１が二次記憶装置１０４等に記憶されているプログラムを一次記憶装置１０２に展開して実行することにより、後述する情報処理装置１００の機能や、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の機能及びフローチャートに係る処理が実現される。また、ＣＰＵ１０１が前記プログラムを実行することにより、ジャーナリングファイルシステムが実現される。なお、上述したように、ジャーナリングファイルシステムは、ジャーナリング機能付きのファイルシステムである。また、ジャーナリングファイルシステムは、データの更新を管理する管理手段の一例である。ジャーナリングファイルシステムの詳細については、図２等を用いて後述する。
一次記憶装置１０２は、プログラム及びデータを記録するＳＤＲＡＭやＳＲＡＭ等を有する。一次記憶装置１０２に展開するプログラム、ファイル、ディレクトリ等のデータは、二次記憶装置１０４に記憶されている。
二次記憶装置１０４は、不揮発性の記憶装置であり、磁気ディスクの様に磁性体が塗布された記憶装置、書き込み回数に制限のあるＮＡＮＤ型フラッシュメモリを利用してデータを記録する記憶装置又は不揮発性のフラッシュメモリ等を用いることができる。また、二次記憶装置１０４には、半導体レーザーを利用してデータを記録する光ディスク、赤色レーザー光と、磁場とを用いてデータを記録する光磁気ディスク又は情報処理装置に対して挿抜可能な不揮発性のメモリカード等を用いることができる。二次記憶装置１０４は、ＣＰＵ１０１が実行する各種のプログラムや各種のデータを記憶している。ＣＰＵ１０１は、二次記憶装置１０４に記憶されているファイルの操作を、ＯＳからＩ／Ｏコントローラ１０３を介して、ＲＥＡＤ要求（読出し要求）、ＷＲＩＴＥ要求（書込み要求）を行うことで実現する。なお、情報処理装置１００は、複数の二次記憶装置１０４を有していてもよい。
【０００９】
本実施形態では、図２等を用いて後述するジャーナリングファイルシステムを利用する。ジャーナリングファイルシステムに記録される情報は、情報の内容にあたるデータ部分と、その情報の管理情報にあたるメタデータ部分とを有する。ファイル操作中の電源断や記憶媒体の取り出し等の異常事象が発生した場合、これらのファイルシステムに記録された情報の間で整合性が取れなくなることがある。ジャーナリングファイルシステムは、そのような事態を回避するため、ファイルやディレクトリの更新内容と、その管理情報との履歴情報を記憶装置に記録し、障害回復に利用できるようにしている。ここで、上述の履歴情報は、ジャーナルログと呼ばれる。また、ジャーナルログを記録する領域は、ジャーナリング領域と呼ばれる。また、ジャーナリング領域へジャーナルログを記録する処理は、ジャーナリングと呼ばれる。また、ジャーナリングにおいて、どのようなジャーナルログを、どういった手順で保持するかに関する方式を、ジャーナリング方式と呼ぶ。なお、ジャーナリング方式は、管理方式の一例である。更に、ジャーナリング領域に対して、前述のデータ部分及びメタデータ部分が置かれる領域のことをデータ領域と呼ぶ。
メタデータには、ファイルの管理情報（ｉｎｏｄｅ）の他、二次記憶装置１０４の各ブロックの使用状況を０と、１とで表現したブロックビットマップ、ｉｎｏｄｅの使用状況を０と、１とで区別したｉｎｏｄｅビットマップ等がある。その他、メタデータには、空きブロック数、空きｉｎｏｄｅ数等がある。また、ｉｎｏｄｅは、構成として、シンボリックリンクやデバイスファイルのようなファイルの種類を表すファイルモード、ファイルサイズ、ファイル最終参照時刻、ファイル最終状態変更時刻、ファイル最終更新時刻等の情報を含む。更に、ｉｎｏｄｅは、構成として、ファイル削除時刻、ユーザＩＤ、グループＩＤ、ファイルリンク数、使用ブロック数、ブロック番号、世代番号等の情報を含む。
【００１０】
次に、トランザクションについて説明する。トランザクションは、関連する複数の処理をまとめた処理単位である。なお、トランザクションは、ジャーナリングファイルシステムの整合性を保つために必要な依存関係がその中で閉じているジャーナルログの集合体を含む。トランザクションの中にあるジャーナルログが、トランザクションの外へ依存関係を波及させることはない。即ち、情報処理装置１００は、障害発生等でジャーナルログより回復を行う場合、トランザクション単位毎（処理単位毎）で行う必要があり、不完全なトランザクションを回復処理に利用しない。
本実施形態では、ジャーナルログの記録内容や記録方法の違いによってジャーナリングレベルを規定している。なお、ジャーナリングレベルは、管理方式情報の一例である。例えば、ジャーナリングレベルは０から３まで４段階あるものとする。ジャーナリングレベル０は、ジャーナリングを行わないことを規定する。ジャーナリングレベル１と、ジャーナリングレベル２とは、メタデータのみをジャーナリングすることを規定する。両レベルの差異は、ジャーナリングレベル１がデータ領域の更新と、ジャーナリング領域の記録との順序が一意に定まらないことを規定するのに対し、ジャーナリングレベル２はデータ領域の更新後、ジャーナリング領域の記録が行われることを規定する点である。ジャーナリングレベル３は、メタデータのみならず、データの更新内容もジャーナリングを行うことを規定する。総じてジャーナリングレベルが高くなると信頼性が向上する反面、書き込みにかかる時間は長くなる。ジャーナリングレベルは、トランザクション単位で変更することができる。本実施形態では、ジャーナリングファイルシステムを有する情報処理装置１００が自装置の状態に応じて一意に定めたジャーナリングレベルのことをジャーナリングポリシと呼ぶ。
【００１１】
図２は、本実施形態における情報処理装置１００の機能構成等の一例を示す図である。
画像処理タスク２０１は、画像のフィルタやクロップ等の処理を行う。画像処理タスク２０１が扱うデータはクリティカル（重要）なものではなく、万が一障害が発生してデータが消失してしまっても、処理の再実行をすることができる。画像処理タスク２０１は、ジャーナリングファイルシステム２０３に対してファイル操作を要求する。その際、プログラム上では「ｏｐｅｎ（ｆｉｌｅｎａｍｅ、ｆｌａｇｓ）」という書式のｏｐｅｎ関数が用いられる。関数の引数では、「ｆｉｌｅｎａｍｅ」にアクセスするファイルのファイル名、「ｆｌａｇｓ」にアクセスした際のモード（読み込みだけなのか、書き込みも行うのか等）が指定される。ｏｐｅｎ関数の処理が成功すると、画像処理タスク２０１は、ファイル操作に紐付けられたファイル識別子を得る。なお、ファイル識別子は、ファイル操作を識別する識別情報の一例である。画像処理タスク２０１は、以降のジャーナリングファイルシステム２０３に対するファイルの操作要求（以下、ファイル操作要求と呼ぶ）を、ファイル識別子を用いて行うことになる。
ジャーナリングファイルシステム２０３は、ファイルシステムコア部２０７、ジャーナルログ制御部２０８、ジャーナルログ記録部２０９及びジャーナルログ反映部２１３を有する。
ジャーナリングポリシ制御部２０４は、図４及び図５等を用いて後述するシステム監視値２１１の算出を行う。なお、システム監視値２１１は、監視値情報の一例である。また、ジャーナリングポリシ制御部２０４は、図４等を用いて後述する動作状態対応管理テーブル２１２を参照して、システム監視値２１１に対応するジャーナリングポリシに関する情報（以下、単にジャーナリングポリシという）を取得する。更に、ジャーナリングポリシ制御部２０４は、取得したジャーナリングポリシをジャーナルログ制御部２０８へ通知する。
【００１２】
一次記憶装置１０２には、システム監視値２１１に関する情報（以下、単にシステム監視値２１１という）が格納されている。
二次記憶装置１０４は、図３等を用いて後述するジャーナリング領域２１０、動作状態対応管理テーブル２１２、データ領域２１４を有する。
ファイルシステムコア部２０７は、ジャーナリング以外のファイル操作処理を行う中核である。
ジャーナルログ制御部２０８は、トランザクションの開始、終了を制御する。ファイルシステムコア部２０７と、ジャーナルログ制御部２０８とは、ファイルの更新状態を共有することで、ファイル操作と、ジャーナル操作とにおける整合性を保つ。ジャーナルログ制御部２０８は、トランザクションを開始する際に、最新のジャーナリングポリシに基づいて、ジャーナルログを作成する。
ジャーナルログ記録部２０９は、ジャーナリング領域２１０の内部構成を管理し、ジャーナリング領域２１０へジャーナルログを記録する。
ジャーナルログ反映部２１３は、ジャーナリング領域２１０内のジャーナルログの有効部分をデータ領域２１４へ反映させる。ＣＰＵ１０１は、操作部等を介して受け付けたユーザの指示により、反映するトリガを予め定めることができる。例えば、反映するトリガは、ジャーナリング領域２１０内の有効なトランザクションが、予め設定されたサイズ（ジャーナリング領域のサイズの４分の１や２分の１等）を超えた場合としてもよい。その他、反映するトリガは、予め定められた時間（例えば５秒単位等）毎とする等してもよい。
【００１３】
次に、図３を用いてジャーナリング領域２１０の構成と、トランザクションの構成とについて説明する。
図３の（a）は、ジャーナリング領域２１０の構成の一例を示す図である。
ジャーナリング領域２１０は、ジャーナリング情報管理ブロック３００及びリングバッファ３０１を有する。
ジャーナリング情報管理ブロック３００は、開始位置情報３０２を含む。
リングバッファ３０１は、トランザクション３０３を含み、新しいトランザクション３０３の記録と、不要なトランザクション３０３の解放を繰り返す。
開始位置情報３０２は、リングバッファ３０１に記録された最も古いトランザクションの開始位置に関する情報（先頭アドレスやブロック番号等）を保持している。
【００１４】
図３の（ｂ）は、トランザクション３０３の構成の一例を示す図である。
トランザクション３０３は、ディスクリプタブロック３０４、メタデータブロック３０５及びコミットブロック３０６を有する。
ディスクリプタブロック３０４は、トランザクション毎の管理情報を格納するブロックであり、二次記憶装置へ書き出す位置情報や、トランザクション識別用ＩＤが格納されている。トランザクション識別用ＩＤは数値であり、トランザクションが作成される度に加算される。
メタデータブロック３０５は、ジャーナルログの中核データ、即ち、更新履歴データを保持するブロックである。
コミットブロック３０６は、トランザクションの終了を示すブロックである。
なお、例えば、情報処理装置１００は、二次記憶装置２０６の記憶領域の総容量の５％程度をジャーナリング領域２１０として確保するようにしてもよい。
【００１５】
次に、図４を用いて動作状態対応管理テーブル２１２について説明する。
図４は、動作状態対応管理テーブル２１２の一例を示す図である。
動作状態対応管理テーブル２１２は、システム監視値２１１に対応したジャーナリングレベルを規定したテーブルである。なお、動作状態対応管理テーブル２１２は、システム監視値２１１と、ジャーナリングレベルとが対応付けられた第１の対応情報の一例である。
例えば、図４の動作状態対応管理テーブル２１２は、システム監視値が０の場合はジャーナリングレベルを０、システム監視値が１以上１０以下の場合はジャーナリングレベルを１と規定している。また、図４の動作状態対応管理テーブル２１２は、システム監視値が１１以上３０以下の場合はジャーナリングレベルを２、システム監視値が３１以上の場合はジャーナリングレベルを３と規定している。即ち、ジャーナリングポリシ制御部２０４は、システム監視値２１１に基づいて、動作状態対応管理テーブル２１２を検索することで、ジャーナリングレベルに対応するジャーナリング方式を決定（第１の決定）することができる。
【００１６】
次に、図５を用いてシステム監視値２１１の算出方法について説明する。
図５は、システム監視値２１１の算出方法の概念の一例を示す図である。
ジャーナリングポリシ制御部２０４は、入力値をもとに演算を行い、システム監視値２１１を算出する。図５の例では、入力値が、ＡＣＰＩ情報４０１、Ｉ／Ｏ統計情報４０２及び起動プロセス情報４０３の情報量から構成される場合について示している。また、図５の例では、ジャーナリングポリシ制御部２０４によるシステム監視値２１１を算出する処理が、正規化処理４０４、重み付け処理４０５及び加算処理４０６から構成される場合について示している。
ＡＣＰＩ情報４０１は、ＡＣＰＩのＰステート情報を示す。情報処理装置１００は、ＣＰＵ１０１の使用率等に応じて動作周波数と、動作電圧とを切り替えることで消費電力を抑制する。この際、Ｐステートは、動作周波数が切り替え可能なシステムにおいて、どの段階で動作しているかを示す指標になる。
Ｉ／Ｏ統計情報４０２は、情報処理装置１００の単位時間当たりの二次記憶装置１０４に対するＩ／Ｏアクセス量を示す。
起動プロセス情報４０３は、起動しているプロセスの量や種別をもとに情報処理装置１００の状態を数値化したもので、数値が高いほど負荷が高いことを示す。
【００１７】
正規化処理４０４は、ＡＣＰＩ情報４０１、Ｉ／Ｏ統計情報４０２及び起動プロセス情報４０３の情報量を正規化する処理である。なお、正規化処理４０４において、ＡＣＰＩ情報４０１、Ｉ／Ｏ統計情報４０２及び起動プロセス情報４０３の情報量の中から一つの情報量のみを正規化してシステム監視値２１１とするようにしてもよい。そして、ジャーナリングポリシ制御部２０４は、正規化したシステム監視値２１１に基づいて、動作状態対応管理テーブル２１２からジャーナリングレベルを導出してもよい。この場合、例えば、ジャーナリングポリシ制御部２０４は、ＡＣＰＩ情報４０１から省電力状態であることを検出した場合、ジャーナリングレベルを下げるといった判断をすることができる。なお、ここでいう省電力状態とは、情報処理装置１００の機能の一部を一時的に停止している状態のことである。また、ジャーナリングポリシ制御部２０４は、Ｉ／Ｏ統計情報４０２からＩ／Ｏアクセス量が予め定められたアクセス量より低い状態であることを検出した場合、ジャーナリングレベルを上げるといった判断をすることができる。なお、ＣＰＵ１０１は、操作部等を介して受け付けたユーザの指示により、予めアクセス量の閾値を設定することができる。更に、ジャーナリングポリシ制御部２０４は、正規化処理４０４で正規化することにより、ＡＣＰＩ情報４０１、Ｉ／Ｏ統計情報４０２及び起動プロセス情報４０３の情報量の間での演算処理をすることができるようになる。
重み付け処理４０５は、正規化処理４０４での正規化後の各情報量の重み付けを調整するための処理である。そして、ジャーナリングポリシ制御部２０４が重み付け後の情報量に対して加算処理４０６して算出した値が、システム監視値２１１である。ジャーナリングポリシ制御部２０４は、算出したシステム監視値２１１に基づいて、動作状態対応管理テーブル２１２を検索（第１の検索）することで、複数の入力情報に基づいたジャーナリングレベルを取得することができる。
【００１８】
重み付け処理４０５による重み付けの内容及び動作状態対応管理テーブル２１２の内容は、情報処理装置１００の使用形態に応じて変更してもよい。例えば、Ｉ／Ｏ統計情報４０２の重み付けを他より大きくし、動作状態対応管理テーブル２１２との関係を調整することによって、ジャーナリングポリシ制御部２０４は、書き込み量が予め定められた量より多い場合には、ジャーナリングレベルの上限を２までに留めるといった制御をすることができる。なお、ＣＰＵ１０１は、操作部等を介して受け付けたユーザの指示により、書き込み量の閾値を予め設定することができる。また、ＡＣＰＩ情報４０１の重み付けを他より大きくし、動作状態対応管理テーブル２１２との関係を調整することによって、ジャーナリングポリシ制御部２０４は、省電力状態の場合には、ジャーナリングレベルを０にするといった制御をすることができる。また、重み付けが必要ない場合、ジャーナリングポリシ制御部２０４は、重み付け処理４０５を行わないか、重み付け処理４０５で各パラメータに対して同等の重み付けをすることによって、重み付けを必要としない場合と同等の効果を得ることができる。
以上、上述した方法により、ジャーナリングポリシ制御部２０４は、システム監視値２１１を算出し、更に、算出したシステム監視値２１１に基づいて動作状態対応管理テーブル２１２を検索してジャーナリングレベルを導出することができる。そして、ジャーナリングポリシ制御部２０４は、導出したジャーナリングレベルをジャーナリングポリシとして、ジャーナルログ制御部２０８へ通知する。なお、ジャーナリングポリシ制御部２０４が通知するタイミングは、タイマによる定期実行を契機としてもよいし、予め定められたイベントを契機としてもよい。なお、ＣＰＵ１０１は、操作部等を介して受け付けたユーザの指示により、予め契機となるタイマの設定をすることができる。同様に、ＣＰＵ１０１は、操作部等を介して受け付けたユーザの指示により、予め契機となるイベントの情報を設定することができる。
【００１９】
次に、図６を用いて、本実施形態におけるジャーナリング処理について説明する。
図６は、本実施形態における情報処理装置１００が起動してからジャーナリングを実行して定常状態に至るまでの処理の一例を示すフローチャートである。
Ｓ６００において、情報処理装置１００の電源が投入されると、本フローチャートの処理が開始される。
Ｓ６０１において、情報処理装置１００のＯＳは、ジャーナリングファイルシステム２０３をマウントし、処理をＳ６０２へ進める。即ち、情報処理装置１００のＯＳがジャーナリングファイルシステム２０３を認識し、ジャーナリングファイルシステム２０３が実行中の状態となる。
Ｓ６０２において、ジャーナリングポリシ制御部２０４は、情報処理装置１００の起動直後における予め定められたデフォルトのジャーナリングレベルをジャーナリングポリシとして、ジャーナルログ制御部２０８へ通知する。なお、デフォルトのジャーナリングレベルに関する情報は、予め二次記憶装置１０４等に格納されているものとする。また、ＣＰＵ１０１は、操作部等を介して受け付けたユーザの指示により、デフォルトのジャーナリングレベルに関する情報を変更することができる。ここで、情報処理装置１００は、定常状態に移行する。なお、ここでいう定常状態とは、情報処理装置１００の機能が全て起動している状態のことである。定常状態において、Ｓ６０３と、Ｓ６０４との処理が並列に実行される。
Ｓ６０３において、ジャーナリングポリシ制御部２０４は、タイマによる定期実行や特定のイベント等、予め規定した契機毎に、図５等を用いて説明した方法によりジャーナリングポリシを導出し、ジャーナルログ制御部２０８へ通知する。
Ｓ６０４において、ジャーナルログ記録部２０９は、トランザクション単位でジャーナルログを記録する。なお、Ｓ６０４の処理の詳細については、図７を用いて後述する。
以上の処理により、情報処理装置１００は、自装置の状態に応じてジャーナリングレベルをトランザクション単位で動的に制御することができる。
【００２０】
次に、図７を用いて、図６のフローチャートにおけるＳ６０４の処理について説明する。
図７は、図６のＳ６０４におけるトランザクションの周期処理の一例を示すフローチャートである。
Ｓ７００において、ジャーナルログ制御部２０８は、トランザクションを新規に作成し、処理をＳ７０１へ進める。以降、ジャーナルログ制御部２０８は、作成中のトランザクションを管理する。
Ｓ７０１において、ジャーナルログ制御部２０８は、ジャーナリングポリシ制御部２０４から通知されたジャーナリングポリシに基づき、ジャーナルログを作成し、処理をＳ７０２へ進める。
Ｓ７０２において、ジャーナルログ記録部２０９は、ジャーナルログ制御部２０８が作成したジャーナルログをジャーナリング領域２１０へ記録し、処理をＳ７０３へ進める。
Ｓ７０３において、ジャーナルログ制御部２０８は、ファイルの更新状態をファイルシステムコア部２０７と共有し、トランザクションを終了可能か否か判定する。より具体的にいうと、ジャーナルログ制御部２０８と、ファイルシステムコア部２０７とは、ファイル操作と、ジャーナル操作とにおける整合性が保てていれば、トランザクションを終了可能と判定する。Ｓ７０３において、ジャーナルログ制御部２０８は、トランザクションを終了可能と判定した場合、処理をＳ７０４に進め、終了可能でないと判定した場合、処理をＳ７０１に戻す。
Ｓ７０４において、ジャーナルログ制御部２０８は、トランザクションを終了する。そして、ジャーナルログ記録部２０９は、残りのジャーナルログをジャーナリング領域２１０へ記録する。
以上の処理により、情報処理装置１００は、ジャーナリングポリシに基づき、トランザクション単位でジャーナルログを作成し、作成したジャーナルログをジャーナリング領域２１０へ記録することができる。
【００２１】
以上、本実施形態によれば、情報処理装置１００は、自装置の状態に応じてジャーナリングレベルをトランザクション単位で動的に制御することができる。そして、情報処理装置１００は、前記ジャーナリングレベルに基づいてトランザクション単位で作成したジャーナルログをジャーナリング領域２１０へ記録することができる。これにより、情報処理装置１００は、ジャーナリングファイルシステムによる処理において、パフォーマンスや電力消費を改善させることができる。
【００２２】
＜実施形態２＞
実施形態１で述べたように、情報処理装置１００のジャーナリングポリシ制御部２０４は、システム監視値２１１を算出し、算出したシステム監視値２１１に基づいて動作状態対応管理テーブル２１２を検索することで、ジャーナリングポリシを導出する。そして、ジャーナルログ制御部２０８は、導出したジャーナリングポリシに基づいてジャーナルログを作成する。更に、ジャーナルログ記録部２０９は、ジャーナルログ制御部２０８により作成されたジャーナルログをジャーナリング領域２１０へ記録する。
ここで、実施形態１のｏｐｅｎ関数を利用する場合、全てのタスクにおける書き込みアクセスは、情報処理装置１００で一意のジャーナリングポリシに準じたジャーナリングレベルになる。しかし、一部のタスクでは、それが望ましくない場合がある。例えば、商業印刷で用いる情報処理装置では、原稿ファイルのサイズが非常に大きくなるため、二次記憶装置への書き込みに多くの時間を費やす。そのため、書き込み中に障害が発生した場合は障害の影響を受けやすくなるが、原稿内容は大変重要なデータであるため、消失を防がなければならない。こういった重要なタスクに関しては、情報処理装置１００で一意のジャーナリングポリシに準ずるのではなく、例えば常にジャーナリングレベル３で処理が行われる方が望ましい。以下では、このような要件に対する実施形態について説明する。
【００２３】
図８は、本実施形態における情報処理装置１００の機能構成等の一例を示す図である。
図８の情報処理装置１００は、画像処理タスク９０１、原稿加工タスク９０２、ジャーナリングファイルシステム９０３、ジャーナリングポリシ制御部９０４、一次記憶装置１０２及び二次記憶装置１０４を有する。
ジャーナリングファイルシステム９０３は、ファイルシステムコア部９０７、ジャーナルログ制御部９０８、ジャーナルログ記録部９０９、ジャーナルログ反映部９１３及び個別ジャーナリングレベル管理テーブル９１８を有する。
一次記憶装置１０２は、システム監視値９１１を有する。
二次記憶装置１０４は、ジャーナリング領域９１０、データ領域９１４及び動作状態対応管理テーブル９１２を有する。また、ジャーナリング領域９１０には、レベル１用領域９１５、レベル２用領域９１６及びレベル３用領域９１７が含まれる。
ここで、画像処理タスク９０１、ジャーナリングポリシ制御部９０４、一次記憶装置１０２、二次記憶装置１０４、システム監視値９１１、動作状態対応管理テーブル９１２及びデータ領域９１４に関しては実施形態１と同様であるため、説明を省略する。
【００２４】
以下、主に実施形態１と異なる点について説明する。
原稿加工タスク９０２は、原稿ファイルの作成に関わる処理を行う。原稿加工タスク９０２が扱うデータはクリティカルなデータであるため、障害が発生した際には発生前の状態に確実に復元する必要がある。
画像処理タスク９０１及び原稿加工タスク９０２共に、ジャーナリングファイルシステム９０３に対してファイル操作要求するが、要求の仕方が異なる。画像処理タスク９０１の場合については、実施形態１と同様であるため説明を省略する。原稿加工タスク９０２の場合、プログラム上ではｏｐｅｎ２（ｆｉｌｅｎａｍｅ、ｆｌａｇｓ、ｊｏｕｒｎａｌｌｅｖｅｌ）という書式のｏｐｅｎ２関数を用いる。関数の引数では、ｆｉｌｅｎａｍｅにアクセスするファイルのファイル名、ｆｌａｇｓにアクセスした際のモード（読み込みだけなのか、書き込みも行うのか等）及びｊｏｕｒｎａｌｌｅｖｅｌにジャーナリングレベルが指定される。Ｏｐｅｎ２関数が呼ばれると、ファイルシステムコア部９０７は、ファイル操作を識別するためのファイル識別子を新たに割り当てる。また、ファイルシステムコア部９０７は、ｏｐｅｎ２関数で渡されたジャーナリングレベルと、ファイル識別子との対応を管理するために、個別ジャーナリングレベル管理テーブル９１８を更新する。
【００２５】
図９は、個別ジャーナリングレベル管理テーブル９１８の一例を示す図である。なお、個別ジャーナリングレベル管理テーブル９１８は、ファイル識別子と、ジャーナリングレベルとが対応付けられた第２の対応情報の一例である。
図９の例は、ファイル識別子がＸＸＸＸの場合はジャーナリングレベル０、ファイル識別子がＹＹＹＹの場合はジャーナリングレベル３であることを示している。また、図９の例は、ファイル識別子がＺＺＺＺの場合はジャーナリングレベル０、ファイル識別子がＡＡＡＡの場合はジャーナリングレベル１であることを示している。即ち、ジャーナルログ制御部９０８は、ファイル識別子に基づいて、個別ジャーナリングレベル管理テーブル９１８を検索することで、ジャーナリングレベルに対応するジャーナリング方式を決定（第２の決定）することができる。
Ｏｐｅｎ２関数の処理が成功することで、原稿加工タスク９０２は、ファイル操作に紐付けられたファイル識別子を得る。なお、タスクは、処理を実行する処理実行手段の一例である。以降のジャーナリングファイルシステム９０３に対するファイル操作要求は、ファイル識別子を用いて行うことになる。
ファイルシステムコア部９０７と、ジャーナルログ制御部９０８とは、ファイルの更新状態を共有することで、ファイル操作と、ジャーナル操作との整合性を保つ。ジャーナルログ制御部９０８は、トランザクション開始の際、個別ジャーナリングレベル管理テーブル９１８からファイル識別子を検索（第２の検索）する。そして、ジャーナルログ制御部９０８は、ファイル識別子を特定することができた場合は、対応するジャーナリングレベルに基づいてジャーナルログを作成する。一方、ジャーナルログ制御部９０８は、ファイル識別子を特定することができなかった場合は、最新のジャーナリングポリシに基づいてジャーナルログを作成する。
【００２６】
ジャーナリング領域９１０は、ジャーナリングレベル毎（管理方式毎）に領域が分割されている。より具体的には、ジャーナリング領域９１０は、レベル１用領域９１５、レベル２用領域９１６、レベル３用領域９１７に分かれている。ここで、レベル１用領域９１５は、ジャーナリングレベル１のジャーナルログを記録する記憶領域である。レベル２用領域９１６は、ジャーナリングレベル２のジャーナルログを記録する記憶領域である。レベル３用領域９１７は、ジャーナリングレベル３のジャーナルログを記録する記憶領域である。また、レベル１用領域９１５、レベル２用領域９１６及びレベル３用領域９１７のそれぞれが、図３で示した内部構成に含まれる。
ジャーナルログ記録部９０９は、ジャーナルログを、ジャーナルログのジャーナリングレベルに合ったジャーナリング領域に記録する。また、トランザクション区間中において、各々のジャーナリング領域のディスクリプタブロック３０４に設定するトランザクション識別用ＩＤは、同一のものとなる。
ジャーナルログ反映部９１３は、ジャーナリング領域９１０内のジャーナルログの有効部分をデータ領域９１４へ反映させる。ここで、ジャーナルログ反映部９１３は、全ジャーナリング領域のディスクリプタブロック３０４に記されているトランザクション識別用ＩＤの中から若い順にデータ領域９１４へ反映させる。もし、同一のトランザクション識別用ＩＤが複数のジャーナリング領域で見つかった場合、ジャーナルログ反映部９１３は、全てのジャーナリング領域分の反映が終わるまで、それより後ろのトランザクション識別用ＩＤのトランザクションの操作を行ってはならない。
【００２７】
次に、図１０を用いて、本実施形態におけるジャーナリング処理について説明する。
情報処理装置１００の電源が投入されてから定常状態に至るまでの処理の流れは、実施形態１の図６と同様であるため、説明を省略する。
図１０は、図６のＳ６０４におけるトランザクションの周期処理の一例を示すフローチャートである。
Ｓ８００において、ジャーナルログ制御部９０８は、トランザクションを新規に作成し、処理をＳ８０１へ進める。以降、ジャーナルログ制御部９０８は、作成中のトランザクションを管理する。
Ｓ８０１において、ジャーナルログ制御部９０８は、個別ジャーナリングレベル管理テーブル９１８から上述したファイル識別子を検索し、一致するファイル識別子が存在するか否かを判定する。Ｓ８０１において、ジャーナルログ制御部９０８は、一致するファイル識別子が存在すると判定した場合、処理をＳ８０３に進め、一致するファイル識別子が存在しないと判定した場合、処理をＳ８０２に進める。
Ｓ８０２において、ジャーナルログ制御部９０８は、個別ジャーナリングレベル管理テーブル９１８から取得したジャーナリングレベルに基づき、ジャーナルログを作成し、処理をＳ８０４へ進める。
Ｓ８０３において、ジャーナルログ制御部９０８は、ジャーナリングポリシ制御部９０４から通知されたジャーナリングポリシに基づき、ジャーナルログを作成し、処理をＳ８０４へ進める。
【００２８】
Ｓ８０４において、ジャーナルログ記録部９０９は、ジャーナリング領域９１０の中のジャーナリングレベルに合ったジャーナリング領域へジャーナルログを記録し、処理をＳ８０５へ進める。
Ｓ８０５において、ジャーナルログ制御部９０８は、ファイルの更新状態をファイルシステムコア部９０７と共有し、トランザクションを終了可能か否か判定し、トランザクションを終了可能と判定した場合、処理をＳ８０６に進める。一方、Ｓ８０５において、ジャーナルログ制御部９０８は、トランザクションを終了可能でないと判定した場合、処理をＳ８０１に戻す。なお、Ｓ８０５の処理は、図７のＳ７０３の処理と同様であるため、詳細な説明を省略する。
Ｓ８０６において、ジャーナルログ制御部９０８は、トランザクションを終了する。そして、ジャーナルログ記録部９０９は、残りのジャーナルログをジャーナリング領域９１０へ記録する。
以上の処理により、情報処理装置１００は、処理内容に応じたジャーナリングレベルに基づき、トランザクション単位でジャーナルログを作成し、作成したジャーナルログをジャーナリングレベルに応じた記録領域に記録することができる。
【００２９】
以上、本実施形態によれば、情報処理装置１００は、自装置の状態によらず、処理内容に応じたジャーナリングレベルに基づいてジャーナルログを作成することができる。即ち、情報処理装置１００は、クリティカルなデータを処理する場合、自装置の状態に基づくジャーナリングレベルではなく、処理内容に応じたジャーナリングレベルに基づいて処理を行うことができる。また、情報処理装置１００は、処理内容に応じて同時に複数のジャーナリング方式を利用することができる。更に、情報処理装置１００は、作成したジャーナルログをジャーナリングレベルに応じた記録領域に記録することができる。これにより、情報処理装置１００は、二次記憶装置１０４を有効活用しながら効率的な処理を実現することができる。
【００３０】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３１】
以上、上述した各実施形態によれば、効率的にデータを更新する技術を提供することができる。
【００３２】
以上、本発明の好ましい形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
2015043178.tif 000003
【図２】
2015043178.tif 000004
【図３】
2015043178.tif 000005
【図４】
2015043178.tif 000006
【図５】
2015043178.tif 000007
【図６】
2015043178.tif 000008
【図７】
2015043178.tif 000009
【図８】
2015043178.tif 000010
【図９】
2015043178.tif 000011
【図１０】
2015043178.tif 000012