(57)【要約】【課題】ファイル修復に許容される時間内、又はそれを目処に可能な限りファイルを修復する。【解決手段】本発明のジャーナルファイルシステム及びその修復方法は、重要度に応じて格付けされたファイルおよびメタデータとファイルの更新中の更新内容であるジャーナルとを格納する記憶装置、及びファイル更新中の停止に伴う再起動に応答して、所定時間を目処に格付けの上位のファイルから順次、ジャーナルを用いてファイルのメタデータを修復する計算機の構成及び計算機の動作によって実現される。【選択図】図３
2009140142.tif 000002
【特許請求の範囲】
【請求項１】
重要度に応じて格付けされたファイル、前記ファイルのメタデータ及び前記ファイルの更新中の更新内容をジャーナルとして格納する記憶装置、及び前記記憶装置に接続し、前記ファイル更新中の停止に伴う再起動に応答して、所定時間を目処に前記格付けの上位の前記ファイルから順次、前記ジャーナルを用いて前記ファイルを修復する計算機を有することを特徴とするジャーナルファイルシステム。
【請求項２】
前記ファイルの前記格付けは、修復の対象とする最上位、前記所定時間を目処に修復可能であれば修復の対象とする上位、及び削除の対象とする下位のいずれか一つであり、前記上位格付けのファイルの修復予測時間に比して前記所定時間が小なるときは、前記上位格付けのファイルを前記下位格付けに格下げし、前記格下げしたファイル及び該ファイルのメタデータを削除することを特徴とする請求項1記載のジャーナルファイルシステム。
【請求項３】
前記上位格付けのファイルの修復予測時間に比して前記所定時間が大なるときは、前記下位格付けのファイルを前記上位格付けに格上げし、前記格上げしたファイル及び該ファイルのメタデータを前記修復の対象とすることを特徴とする請求項２記載のジャーナルファイルシステム。
【請求項４】
前記修復したファイル及び前記削除したファイルを特定する情報を通知として出力することを特徴とする請求項３記載のジャーナルファイルシステム。
【請求項５】
ファイルの更新中の更新内容をジャーナルとして記憶装置に格納し、前記ファイル更新中の停止に伴う再起動に応答して、所定時間を目処に、重要度に応じて付された格付けの上位の前記ファイルから順次、前記記憶装置に格納されたジャーナルを用いて前記ファイルのメタデータを修復することを特徴とするジャーナルファイルシステムの修復方法。
【請求項６】
前記ファイルの前記格付けは、修復の対象とする最上位、前記所定時間を目処に修復可能であれば修復の対象とする上位、及び削除の対象とする下位のいずれか一つであり、前記上位格付けのファイルの修復予測時間に比して前記所定時間が小なるときは、前記上位格付けのファイルを前記下位格付けに格下げし、前記格下げしたファイル及び該ファイルのメタデータを削除することを特徴とする請求項５記載のジャーナルファイルシステムの修復方法。
【請求項７】
前記上位格付けのファイルの修復予測時間に比して前記所定時間が大なるときは、前記下位格付けのファイルを前記上位格付けに格上げし、前記格上げしたファイル及び該ファイルのメタデータを前記修復の対象とすることを特徴とする請求項６記載のジャーナルファイルシステムの修復方法。
【請求項８】
前記修復したファイル及び前記削除したファイルを特定する情報を通知として出力することを特徴とする請求項７記載のジャーナルファイルシステムの修復方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ジャーナルファイルシステム及びその修復方法に係り、特に所定時間を目処に修復するジャーナルファイルシステム及びその修復方法に関する。
【背景技術】
【０００２】
一般的なファイルシステムは、ファイルの管理情報であるメタデータを持つ。ファイルを更新する際は、ファイルの中身であるユーザデータだけでなく、そのファイルに関連するメタデータの更新も必要になる。ジャーナルファイルシステムは、ファイル更新時にメタデータの更新内容をジャーナルに記録する。ファイル更新中に、障害等によりシステム停止となり、計算機の（キャッシュ）メモリ上のファイルやメタデータが失われたり、壊れたりしてファイルとメタデータとの整合が取れなくなった場合などに、ジャーナルファイルシステムは、そのジャーナルをもとにファイルとメタデータの整合を取り直し、ファイルを修復する。
【０００３】
このようにファイルを修復するために、ファイルの更新要求に対して応答する前に、磁気ディスク装置などの不揮発性の記憶装置に確保されたジャーナルに更新内容を記録する。  ジャーナルファイルシステムにおいては、２つの課題がある。一つは、ファイルの更新内容が磁気ディスク装置などにあるファイルとメタデータの実体に反映されていないものが修復対象になるので、このような修復対象が多いと、修復時間が長くなり、ファイルシステムの運用に影響するという課題である。他の一つは、磁気ディスク装置などにあるジャーナルに更新内容を記録した後に、ファイルの更新要求に対して応答するために、計算機の（キャッシュ）メモリを用いた性能の高速化の効果を減じ、ファイルシステムの性能がジャーナルへの記録のための磁気ディスク装置などへの入出力性能に依存するという課題である。
【０００４】
上記一つの課題に対して、特許文献1は、ファイルとメタデータの実体およびジャーナルを格納する、磁気ディスク装置などの記憶装置システムの制御装置によって、ジャーナルにあるファイルの更新内容をファイルとメタデータの実体に反映させる技術を開示している。
【０００５】
上記他の一つの課題に対して、特許文献２は、修復に許容される時間内に修復できるオブジェクトを選定し、選定したオブジェクトを対象にログをとることで、実行性能の低下を少なくする技術を開示している。
【０００６】
【特許文献１】米国特許公報USP7,047,355
【特許文献２】特開平6−175900
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示の技術は、ジャーナルやファイルの実体を格納する装置として、様々な機能を高性能に実現する制御装置を持つRAID（Redundant Arrays of Inexpensive Disks）システムを用いる場合に、その制御装置において実現可能であり、一般のオフィスや個人にとっては受け入れにくい。
【０００８】
特許文献２に開示の技術は、修復時間と実行性能を優先的に考えたものであり、ログをとらないファイルは修復される可能性がないという新たな課題を発生する。
【０００９】
したがって、ファイル修復に許容される時間内、又はそれを目処に可能な限りファイルを修復することが必要となる。
【課題を解決するための手段】
【００１０】
本発明のジャーナルファイルシステム及びその修復方法は、重要度に応じて格付けされたファイルおよびメタデータとファイルの更新中の更新内容であるジャーナルとを格納する記憶装置、及びファイル更新中の停止に伴う再起動に応答して、所定時間を目処に格付けの上位のファイルから順次、ジャーナルを用いてファイルを修復する計算機の構成及び計算機の動作によって実現される。
【発明の効果】
【００１１】
本発明によれば、ファイル修復に許容される時間内、又はそれを目処に可能な限りファイルを修復できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明する。
【００１３】
最初に、本発明を実施する前提となるジャーナルファイルシステムにおける、ジャーナルの記録と記録したジャーナルを用いたファイルシステムの修復について説明する。
【００１４】
図１はジャーナルファイルシステムの要点であるジャーナルログ（以下、単にジャーナル）への記録について説明する図である。ファイルを格納する記憶装置10にファイルのメタデータ管理領域20、領域30a及びジャーナル領域40が設けられている。
【００１５】
領域30aにファイルＡを作成する場合を例として説明する。まずジャーナル領域40に「領域30aがファイルＡ用に使用中である。」と記録する。記録されたジャーナル領域40の状態を40aに示す。メタデータ管理領域２０には「領域30aがファイルＡ用に使用される。」というメタデータを格納する。ファイルＡとしてファイルデータを書き込むと、そのファイルデータは領域30aに書き込まれる。
【００１６】
ここで、ジャーナルファイルシステムは、一般にディスク装置のような不揮発性の記憶装置10上のメタデータ領域20にメタデータを書き込み、領域30aにファイルデータを書き込んでいるように振舞うが、それらのデータは、ジャーナルファイルシステムが動作するコンピュータ（図示略）の（キャッシュ）メモリに書き込まれるだけで、後にコンピュータのＯＳ（オペレーティングシステム）によって（キャッシュ）メモリから読み出され、記憶装置10上のメタデータ領域20及び領域30aに書き込まれる。ファイルを修復するためのジャーナルは記憶装置10に格納され、ジャーナルファイルシステムはジャーナルの格納を確認した後に、ファイルの更新要求に対して応答する。
【００１７】
ＯＳによって記憶装置10上のメタデータ領域20及び領域30aに書き込まれたならば、そのコンピュータの停止等によっても、それらのデータは保持されるので、修復の必要性が生じることはない。この状況になったならば、ジャーナル領域のジャーナルリプレイ開始位置（ポインタ）をずらし（40ｂ）、それらのデータを修復対象外とする。
【００１８】
ここで問題は、それらのデータがコンピュータのメモリ上にあり、記憶装置10に書き込まれていない状態で、電源断等によりコンピュータが停止すると、メモリ上にあるそれらのデータが失われることである。
【００１９】
この問題への対応であるファイルシステムの修復について図２を用いて説明する。図１の状況に引き続いて、図２の領域30ｂにファイルＢを作成するとする。
【００２０】
ジャーナル領域40に「領域30ｂがファイルＢ用に使用中である。」と記録する。記録されたジャーナル領域40の状態を40ｃに示す。メタデータ領域20には「領域30ｂがファイルＢ用に使用される。」というメタデータを格納する。ファイルＢとしてファイルデータを書き込むと、そのファイルデータは領域30ｂに書き込まれる。
【００２１】
前述のように、ファイルＢのメタデータ及びファイルデータの少なくとも一方はメモリにあり、記憶装置10に書き込まれていない状態を想定し、この状態で電源断等によりコンピュータが停止したとする。メモリにあるファイルＢのメタデータ及びファイルデータの少なくとも一方は失われる。
【００２２】
コンピュータが再立ち上げされると、ジャーナル領域40の状態40ｃから、ファイルＢに対して領域30ｂが割り当てられていたことが明らかになる。ジャーナルファイルシステムによって、ジャーナルのデータがメタデータに相当するデータの場合と、メタデータ及びファイルデータの双方に相当するデータの場合がある。
【００２３】
前者の場合は、ジャーナルを用いて、ファイルＢのメタデータは修復されるが、修復されたメタデータに対応したファイルデータは修復されない。すなわち、メタデータとファイルデータとが整合しない状態になる。ただし、ファイルデータは修復されないが、メタデータが修復されるので、ジャーナルファイルシステムからファイルＢに割り当てられた領域30ｂにはアクセスできる。後者の場合は、メタデータとファイルデータとが整合した状態で修復される。
【実施例】
【００２４】
以下、図面を用いて実施例を説明する。図3は、ジャーナルファイルシステムを有するシステムの構成を示す。
【００２５】
プロセッサ113により実行中のユーザプログラムが、ディスク装置115上のファイルやディレクトリにアクセスする場合、ディスクインターフェイス１１４を経由してディスク装置115に要求転送する。
【００２６】
本実施例では、サーバ１台とディスク装置１台とを接続したシステムであるが、サーバ複数台とディスク装置複数台とを接続したシステムでもよい。サーバ１０１のプロセッサ１１３は、メモリ１０２に格納されたプログラム１０３であるファイルアクセス処理１０４、ファイル作成処理１０５、ファイル削除処理１０６、格上げ判定処理１０７、格付け設定処理１０８、ファイルシステム修復処理１０９、ファイル修復予測時間算出処理１１０、格上げ処理１１１、格下げ処理１１２、及びユーザ通知処理１２１を実行する。これらの処理は、本実施例の主たる処理であり、これらの処理の下位には複数の処理がある。ディスク装置上１１５には、ファイル情報テーブル１１６、修復ファイルリスト１１７、定義リスト１１８、ファイル修復予測時間管理テーブル１１９、及び通知情報管理テーブル１２０を格納している。
【００２７】
なお、図1及び図2で説明した、ディスク装置上１１５に設けられるメタデータ領域、ファイルを格納する領域及びジャーナル領域の図示を省略する。
【００２８】
図4は、修復するファイルの情報を保持するファイル情報テーブル１１６である。ファイル情報テーブル１１６は、ディスク装置１１５に格納される。ファイル情報テーブル１１６は、ファイルパス名２０１、アクセス回数２０２、アクセスユーザ２０３、ファイルの重要度属性である格付け２０４を保持する。ファイルパス名２０１は、ファイル、ディレクトリの位置情報である。。アクセス回数２０２は、ユーザプログラムがファイル、ディレクトリを作成、更新、及び属性変更した回数の合計である。アクセスユーザ２０３は、ファイルへアクセスしたユーザ名である。格付け２０４は、ファイルの重要度属性（Ａ、Ｂ及びＣのいずれか）である。
【００２９】
図5は、ファイルシステム修復時に修復の対象となるファイルパス名を格納した修復ファイルリスト１１７である。ユーザプログラムによって、ファイル、ディレクトリの作成、更新、および属性変更のいずれかの処理が開始されると、修復ファイルリスト１１７に処理対象のファイルのファイルパス名210が格納される。それらの処理が完了すると、修復ファイルリスト１１７から処理対象のファイルのファイルパス名210が削除される。格付け211は、処理対象のファイルのファイルパス名に対応する格付けであり、ファイル情報テーブル１１６に格納されている格付け204が格納される
図6は、システム管理者（Administratorまたはroot）が予め定義する、定義項目220と定義内容221を持つ定義リスト１１８である。この定義に基づき、ファイルやディレクトリの重要度属性として格付けが決定される。定義したアクセス回数を累積アクセス回数が超過したファイルやディレクトリ、及び定義したアクセスユーザ数を超過したファイルやディレクトリが、ファイルの重要度属性を格上げする対象となる。修復指定時間は、ファイルシステム修復時間の目標値である。
【００３０】
図7はファイル修復予測時間管理テーブル１１９であり、修復回次230として前回と今回のファイルシステム修復における、修復ファイル数231とファイル修復予測時間232を格納する。ファイル修復予測時間232は、ファイル１つあたりの修復予測時間である。
【００３１】
図8は、修復または削除されたファイルを、そのオーナーに通知するための情報を格納する通知管理情報テーブル120である。通知管理情報テーブル120は、修復または削除されたファイルのファイルパス名240、そのファイルのオーナ241、ファイルが修復されたか削除されたかを示すフラグ242、及び、通知管理情報テーブルに登録されたのが現在の運用時なのか前回の運用時なのかを示す世代番号243を保持する。
【００３２】
世代番号243は、現在の運用時であれば０、前回の運用時であれば１である。世代番号は、世代番号が１以上であれば、ファイルは修復されている。ファイルを修復する際に、修復対象のファイルパス名、ファイルオーナ、修復フラグ、世代番号を通知情報管理テーブル120に格納する。このとき、世代番号243には０を格納する。
【００３３】
ファイルを削除する際には、削除対象のファイルパス名、ファイルオーナ、削除フラグ、世代番号を通知情報管理テーブル120に格納する。世代番号243には０を格納する。
【００３４】
図9は、コンピュータシステム起動後のジャーナルファイルシステム起動処理である（図1では図示略）。ジャーナルファイルシステムはコンピュータシステムの起動に伴って、自動的に起動されても良いし、コマンド等によって起動されても良い。
【００３５】
ファイルシステムの修復の要否を判定する（ステップ（以下、Ｓ）600）。システム緊急停止等の事象によりジャーナルファイルシステム内のファイルとメタデータの不整合が検出された場合、ファイルシステムの修復が必要と判定される。一般には、図2で説明したように、この時点でメタデータやファイルデータが記憶装置115内のそれぞれの実体に反映されていないジャーナルデータの有無によって、ファイルシステムの修復の要否を判定する。不要であれば、ジャーナルファイルシステム起動処理を終了する。
【００３６】
ファイルシステムの修復が必要ならば、ファイルシステム修復処理（後述）を実行する（Ｓ605）。通知情報管理テーブル120の世代番号243に１を加算する（Ｓ610）。通知情報管理テーブル120に複数行格納されていれば、それぞれの行の世代番号243に１を加算する。ファイルシステム修復処理を実行することで、ファイルが修復または削除された場合は、そのファイル名を通知情報管理テーブル120のフラグ242が修復及び削除のいずれかによって、通知情報管理テーブル120のファイルパス名240からファイル名を取得し、ログに出力する。またメールで通知情報管理テーブル120のファイルオーナ241に通知６０６する（Ｓ615）。通知した世代番号243が１以上の行を通知情報管理テーブル120から削除する（Ｓ620）。
【００３７】
図10はファイル作成処理104である。ユーザプログラムやコマンドによるファイルやディレクトリの作成要求に基づいて、ファイル作成処理の実行を開始する。修復ファイルリスト117への登録処理（後述）を実行し（Ｓ700）、ファイル情報テーブル116を割り当てる（Ｓ705）。ファイルやディレクトリごとに、図4に示したファイル情報テーブル116に1行分が用意される。ファイルの作成に伴い更新されるメタデータの更新履歴をジャーナルに記録する（Ｓ710）。
【００３８】
本実施例では、ジャーナルへの記録はメタデータの更新履歴をジャーナルへの記録し、ファイルデータの更新履歴をジャーナルに記録しないジャーナルファイルシステムで説明する。図1で説明したように、ファイルデータは（キャッシュ）メモリ上に格納され、ファイル作成完了段階で一括して記憶装置115に格納されるジャーナルファイルシステムとして説明する。
【００３９】
作成するファイル、ディレクトリの位置をファイル情報テーブル116のファイルパス名201、アクセス回数202、アクセスユーザ203を記録する（Ｓ715）。格付け設定処理（後述）を実行すると（Ｓ720）、ファイル情報テーブル116の格付け204が記録される。
【００４０】
ファイル及びディレクトリを作成する（Ｓ725）。図1及び図2を用いて説明したように、ファイル及びディレクトリの作成又は更新が完了したならば、メモリ上のファイルデータ及びメタデータを記憶装置115に反映（記憶装置115内のファイルデータ及びメタデータの実体領域に、メモリ上で作成又は更新したファイルデータ及びメタデータを書き込む）する（このステップの図示略）。
【００４１】
この段階でコンピュータが何らかの原因で停止したとしても、作成したファイルやメタデータは失われることがなくなったので、ステップ700で登録した修復ファイルリストの内容の削除処理（後述）を実行し（Ｓ730）、ジャーナルに記録したメタデータの更新履歴をジャーナルから削除する。ジャーナルに記録したメタデータの更新履歴のジャーナルからの削除は、図1を用いて説明したようにポインタをずらすことで実現される。
【００４２】
図11は、ファイルアクセス処理104である。ファイルアクセス処理８０１は、ファイルに対する書き込み若しくは読み込み、またはファイルの属性変更の処理である。ユーザプログラムやコマンドによるファイルアクセス要求に基づいて、ファイルアクセス処理の実行を開始する。
【００４３】
修復ファイルリストへの登録処理（後述）を実行し（S800）、当該ファイルへのアクセスに伴い更新が必要となるメタデータの更新履歴をジャーナルに記録する（S805）。
【００４４】
アクセスするファイル、ディレクトリのファイルパス名と、ファイル情報テーブル１１６のファイルパス名に一致する要素の、アクセス回数、アクセスユーザを更新する（S810）。格上げ判定処理（後述）を実行する（S815）。ファイルアクセスを実行し（S820）、修復ファイルリストからの削除処理（後述）を実行する（S825）。
【００４５】
なお、S820及びS825に関わる、記憶装置115への反映及びジャーナルの削除に関しては、図10のS725及びS730と同じであるので説明を省略する。
【００４６】
図12は、ファイル削除処理106である。ユーザプログラムやコマンドによるファイルやディレクトリの要求に基づいて、ファイル削除処理の実行を開始する。修復ファイルリストへの登録処理（後述）を実行し（S900）、ファイル情報テーブルから削除するファイルパス名に一致するファイルパス名の要素（行）をファイル情報テーブル116から削除する（S905）。当該ファイルの削除に伴い更新や削除が必要となるメタデータの更新履歴をジャーナルに記録し（S910）、ファイル、ディレクトリ及びそのメタデータを削除する（S915）。915の処理結果が記憶装置115に反映された後に、修復ファイルリストからの削除処理（後述）を実行する（S920）。
【００４７】
図13は、修復ファイルリストへの登録処理である。この処理は、ファイル、ディレクトリの作成時（S700）、ファイルアクセス時（S800）、及びファイル削除時（S900）のようにファイルやディレクトリの状態に変化が生じる処理を実行する場合に呼ばれる。この処理では、修復ファイルリスト１１７の最後の要素（行）にファイルパス名を記録１００２する（S1000）。図5を用いて説明したように、修復ファイルリスト１１７に格納されている要素（各行）が、修復対象のファイルである。
【００４８】
図14は、修復ファイルリストからの削除処理である。この処理は、ファイル、ディレクトリの作成時（S730）、ファイルアクセス時（S825）、ファイル削除時（S920）及びファイル修復（後述）時のように、ファイルやディレクトリの状態に変化が生じる処理の実行に伴って呼ばれる。なお、前述のように、記憶装置115にファイルに関連するメタデータの反映が完了したときに呼ばれる。
【００４９】
対象のファイルパス名が、修復ファイルリスト117からファイルパス名に一致する要素（行）を削除し（S1100）、削除した要素（行）の空きを詰める（S1105）。
【００５０】
図15は、ファイル作成処理105において、ファイルの格付けの初期値を設定する格付け設定処理108である。そのファイルのオーナ属性がシステム管理者（root、administrator）の場合（S1200）、ファイル情報テーブル116のそのファイルの格付けとしてＡを設定し（S1205）、オーナ属性がシステム管理者以外の場合は、ファイル情報テーブル116のファイルの格付けをＣに設定する（S1210）。
【００５１】
図16は、ファイルへのアクセスに応じて（ファイルアクセス処理104のＳ815）、ファイル情報テーブル１１６に格納されたファイルの格付けを格上げする格上げ判定処理107である。ファイル情報テーブル１１６のファイルのアクセス回数がｎ回以上（図6の定義リスト１１８ではn＝10）（S1300）、もしくは、アクセスユーザがｍ以上（図6の定義リスト１１８ではｍ＝3）（S1310））の、ファイル情報テーブル１１６のファイルの格付けをＢに更新する（S1305、S1315）。ただし、更新前のファイルの格付けが更新後の格付け以上の場合は、上記の更新は行わない。
【００５２】
図17は、ファイルシステム起動処理におけるファイルシステム修復処理（図9のＳ605）である。
【００５３】
修復ファイルリスト１１７のファイルパス名に対応する格付けを、ファイル情報テーブル１１６から修復ファイルリスト１１７にコピーする（Ｓ1400）。修復ファイルリスト１１７の先頭（行）をポイントし（Ｓ1405）、修復時間の測定を開始する（Ｓ1410）。ポイントしている修復ファイルリスト117の行にファイルがなければ（Ｓ1415）、修復時間測定を終了し（Ｓ1420）、ファイルシステム修復処理を終了する。
【００５４】
ポイントしている修復ファイルリスト１１７のファイルの格付けがＡであれば（Ｓ1425）、ファイル修復処理（後述）を実行し（Ｓ1430）、ステップ1460に処理を移す。格付けがＡであれば、必ずファイル修復処理を実行することにより、修復指定時間に関わらず（修復指定時間を越えても）、重要度が高いファイルオーナがシステム管理者のファイルは修復されることになる。ステップ1425をステップ1435の後に実行するようにすれば、格付けＡのファイルの修復に関しても修復指定時間を考慮することになるが、そのようにすると、重要度の高いファイルが修復されないまま、新たなファイル作成などの運用が開始されることになり、新たなシステム停止の要因を含んだ状態である可能性がある。
【００５５】
格付けがＡでなければ（Ｓ1425）、修復時間再見積もり処理（後述）により残りのファイルシステム修復時間を再見積もりし（Ｓ1435）、そのファイルシステム修復予測時間と修復指定時間の残りとの差が修復指定時間（定義リスト118に定義される修復指定時間であり、図6では10秒）の１０％以内に収まるならば（Ｓ1440）、ステップ1460に処理を移す。
【００５６】
なお、修復指定時間の10％以内とは、修復指定時間を目処にして制御することであり、許容幅を表す値は他の値でも良い。また、状況によっては、修復指定時間より−１０％を許容し、修復指定時間を越えることを許容しない制御もあり得る。
【００５７】
ファイルシステム修復予測時間と修復指定時間の残り（図18を用いて後述される新たな修復指定時間）との差が修復指定時間（定義リスト118に当初設定された修復指定時間）の１０％以内に収まらず（Ｓ1440）、ファイルシステム修復予測時間が修復指定時間の残りより短い場合は、格上げ処理（後述）を実行し（Ｓ1450）、ファイルシステム修復予測時間が修復指定時間の残りより長い場合は、格下げ処理（後述）を実行する（Ｓ1455）。
【００５８】
格上げ処理又は格下げ処理の結果としての格付けに応じた格付け別処理を実行し（Ｓ1460）、修復ファイルリスト１１７の次のファイルをポイントし（Ｓ1465）、ステップ1415に戻る。
【００５９】
図18は、ファイルシステム修復処理（図１7）又は後述の格付け別修復処理によって特定された１つのファイルに関連したメタデータとファイルの整合性を取り直すファイル修復処理である。ファイル修復時間測定を開始する（Ｓ1500）。
【００６０】
ジャーナルに記録された内容を再実行しメタデータとファイルの整合性を取り直すジャーナルリプレイを実行する（Ｓ1505）。ジャーナルリプレイに関しては、図２で説明したとおりであるが、ここでは特定されたファイルのジャーナルデータをジャーナルリプレイ開始ポインタから順次検索し、検索したジャーナルデータを記憶装置115に格納されている、そのファイルのメタデータに反映させていく。これは、前述のように、ジャーナルデータとしてメタデータをとる場合であるが、ファイルデータもジャーナルデータとしてとっている場合は、ファイルそのものの修復も可能である。
【００６１】
ファイル修復時間測定を終了する（Ｓ1510）。ステップ1500からステップ1510までの時間を、修復したファイルに関しての、測定したファイル修復時間とする（Ｓ1515）。修復指定時間から測定したファイル修復時間を減算し、これを新たな修復指定時間とする（Ｓ1520）。定義リスト118の修復指定時間を書き換えても良いが、ファイルシステムを起動するごとに定義リストの内容を管理者が設定することになるので、最初のファイルの修復時にワークエリアに新たな修復指定時間を格納し、これを用いて処理することが望ましい。さらに測定したファイル修復時間に基づいて、ファイル修復予測時間算出処理（後述）を実行する（Ｓ1525）。ファイル修復予測時間算出処理の処理の詳細は後述するが、１つのファイル当たりの修復予測時間であるファイル修復予測時間を算出する。
【００６２】
修復されたファイルのファイルパス名及びファイルオーナを通知情報管理テーブル１２０に格納する。また、修復フラグを「修復」、世代番号を「0」として通知情報管理テーブル１２０に格納する（Ｓ1530）。修復ファイルリスト１１７から修復されたファイルを削除するする修復ファイルリストからの削除処理（図14）を実行する（Ｓ1535）。
【００６３】
図19は、ファイルシステム修復処理（図17のＳ1435）の修復時間再見積り処理である。修復ファイルリストの格付けがＢ、Ｂ−、及びＣ＋のファイル数を残りの修復ファイル数として求め（Ｓ1600）、求めた残りの修復ファイル数と、ファイル修復予測時間管理テーブル１１９の修復回次が今回の行に格納されているファイル修復予測時間とを乗算した値をファイルシステム修復予測時間としてファイルシステム修復処理に返す（Ｓ1605）。
【００６４】
図20は、１つのファイルの修復に要する時間を予測するファイル修復予測時間算出処理110である。ファイル修復処理（図18）時に、ファイルの修復に要した時間が測定される（測定したファイル修復時間）。
【００６５】
今回のファイルシステム修復において、最初のファイルの修復であれば（Ｓ1700）、ファイル修復予測時間管理テーブル１１９に格納されている前回のファイル修復予測時間と測定したファイル修復時間との平均値を今回のファイル修復予測時間としてファイル修復予測時間管理テーブル１１９に記録し（Ｓ1705）、修復ファイル数を更新（＋1）する（Ｓ1715）。
【００６６】
今回のファイルシステム修復において、２つ目以降のファイルの修復であれば（Ｓ1700）、ファイル修復予測時間管理テーブル１１９の今回のファイル修復予測時間と測定したファイル修復時間との平均値を今回のファイル修復予測時間としてファイル修復予測時間管理テーブル１１９に上書きし（Ｓ1710）、ファイル修復予測時間テーブル１１９の修復ファイル数を更新（＋1）する（Ｓ1715）。
【００６７】
図21は、ファイルの格付けに基づき、ファイル修復する格付け別修復処理である。格付け別修復処理は、修復対象のファイルの格付けがＣまたはＢ−の場合（Ｓ1800）、ファイルとそのファイルに関連したメタデータを削除する（Ｓ1805）。さらに、削除したファイルのファイルパス名、ファイルオーナ、及び削除されたことを示す「削除」フラグを通知情報管理テーブル１２０に格納する（Ｓ1810）。ファイルの格付けがＡ、Ｂ、またはＣ＋の場合は（Ｓ1800）、ファイル修復を実行する（Ｓ1815）。ファイルを削除する場合は、格上げ処理によって格付けＣのものが先に削除されるように制御される。
【００６８】
図22は、修復ファイルリスト１１７のファイルの格付けを格上げする格上げ処理111である。残り制限時間（ファイル修復処理（図18）において更新された新たな修復指定時間）をファイル修復予測時間管理テーブル１１９の今回のファイル修復予測時間で除算し、その商から修復されていないファイルの格付けがＢ及びＣ＋のファイル数を引いた値をn（ｎは一時的な変数値）に代入する（Ｓ1900）。
【００６９】
修復ファイルリスト１１７に格付けＢ−のファイルが残っている場合（Ｓ1905）、Ｂ−からＢへの格上げ処理を実行する（Ｓ1910）。後述するＢ−からＢへの格上げ処理において、Ｂ−のファイルが残った場合（Ｓ1915）、処理を終了する。
【００７０】
修復ファイルリスト１１７に格付けＢ−のファイルが残っておらず（Ｓ1915）、修復ファイルリスト１１７に格付けＣのファイルが残っている場合（Ｓ1920）、ＣからＣ＋への格上げ処理を実行する（Ｓ1925）。
【００７１】
図23は、ファイルの格付けをＢ−からＢに格上げする格上げ処理である。Ｂ−からＢへの格上げ処理は格上げ処理111から呼ばれる。修復ファイルリスト１１７の先頭からn個分の格付けＢ−のファイルを格付けＢに格上げする。ここでnは、格上げ処理（図22）で算出された変数値nを指す。Ｂ−からＢ＋への格上げは修復ファイルリスト１１７の先頭のファイルから優先的に実行する（Ｓ2000）。
【００７２】
nが０より大（Ｓ2005）、かつ現在指している修復ファイルリスト１１７のファイルの格付けがＢ−であれば（Ｓ2010）、このファイルの格付けＢ−をＢに格上げし、修復ファイルリスト１１７の格付けをＢに更新する（Ｓ2015）。ｎの値から１減算する（Ｓ2020）。修復ファイルリスト１１７の次の行（ファイル）を指し（Ｓ2025）、ステップ2005に戻る。nが０以下、または指している修復ファイルリスト１１７にファイルがなければ（Ｓ2005）、処理を終了する。
【００７３】
図24は、ファイルの格付けをＣからＣ＋に格上げする格上げ処理である。ＣからＣ＋への格上げ処理は格上げ処理111から呼ばれる。修復ファイルリスト１１７に格納されている末尾のファイルからn個分の格付けＣのファイルを格付けＣ＋に格上げする。ここでnは、格上げ処理（図22）で算出され、Ｂ−からＢへの格上げ処理（図23）で更新されたnを指す。ＣからＣ＋への格上げは修復ファイルリスト１１７の末尾のファイルから優先的に実行する（Ｓ2100）。
【００７４】
nが０より大（Ｓ2105）、かつ現在指している修復ファイルリスト１１７のファイルの格付けがＣであれば（Ｓ2110）、このファイルの格付けＣをＣ＋に格上げし、修復ファイルリスト１１７の格付けをＣ＋に更新する（Ｓ2115）。nの値から１減算する（Ｓ2120）修復ファイルリスト１１７の一つ前のファイルを指し（Ｓ2125）、ステップ2105に戻る。nが０以下、又は指している修復ファイルリスト１１７にファイルがなければ（修復ファイルリスト１１７の先頭より前を指していれば）（Ｓ2105）、終了する。
【００７５】
図25は、修復ファイルリスト１１７のファイルの格付けを格下げする格下げ処理112である。残り制限時間（ファイル修復処理（図18）において更新された新たな修復指定時間）をファイル修復予測時間管理テーブル１１９の今回のファイル修復予測時間で除算し、その商から修復がされていないファイルの格付けがＢ及びＣ＋のファイル数を引いた値に１を加えた値をn（ｎは一時的な変数値）に代入する（Ｓ2200）。
【００７６】
修復ファイルリスト１１７に格付けＣ＋のファイルが残っている場合は（Ｓ2205）、Ｃ＋からＣへの格下げ処理を実行する（Ｓ2210）。後述するＣ＋からＣへの格下げ処理において、Ｃ＋のファイルが残った場合（Ｓ2215）、処理を終了する。
【００７７】
修復ファイルリスト１１７に格付けＣ＋のファイルが残っておらず（Ｓ2215）、修復ファイルリスト１１７に格付けＢのファイルが残っている場合は（Ｓ2220）、ＢからＢ−への格下げ処理を実行する（Ｓ2225）。
【００７８】
図26は、ファイルの格付けをＣ＋からＣに格下げする格下げ処理である。Ｃ＋からＣへの格下げ処理は格下げ処理112から呼ばれる。修復ファイルリスト１１７の先頭からn個分の格付けＣ＋のファイルを格付けＣに格下げする。ここでnは、格下げ処理（図25）で算出された変数値nを指す。Ｃ＋からＣへの格下げは修復ファイルリスト１１７の先頭のファイルから優先的に実行する（Ｓ2300）。
【００７９】
nが０より大（Ｓ2305）、かつ現在指している修復ファイルリスト１１７のファイルの格付けがＣ＋であれば（Ｓ2310）、このファイルの格付けＣ＋をＣに格下げし、修復ファイルリスト１１７の格付けをＣに更新する（Ｓ2315）。nの値から１減算する（Ｓ2320）。修復ファイルリスト１１７の次の行（ファイル）を指し（Ｓ2325）、ステップ2305に戻る。nが０いか、または指している修復ファイルリスト１１７にファイルがなければ（Ｓ2305）、処理を終了する。
【００８０】
図27は、ファイルの格付けをＢからＢ−に格下げする格下げ処理である。ＢからＢ−への格下げ処理は格下げ処理112から呼ばれる。修復ファイルリスト１１７に格納されている末尾のファイルからn個分の格付けＢのファイルを格付けＢ−に格下げする。ここでnは、格下げ処理（図25）で算出され、Ｃ＋からＣへの格下げ処理（図26）で更新されたnを指す。ＢからＢ−への格下げは修復ファイルリスト１１７の末尾のファイルから優先的に実行する（Ｓ2400）。
【００８１】
nが０より大（Ｓ2405）、かつ現在指している修復ファイルリスト１１７のファイルの格付けがＢであれば（Ｓ2410）、このファイルの格付けＢをＢ−に格下げし、修復ファイルリスト１１７の格付けをＢ−に更新する（Ｓ2415）。nの値から１減算する（Ｓ2420）。修復ファイルリスト１１７の一つ前のファイルを指し（Ｓ2425）、ステップ2405に戻る。nが０以下、又は指している修復ファイルリスト１１７にファイルがなければ（ファイルリスト１１７の先頭より前を指していれば）（Ｓ2405）、処理を終了する。
【００８２】
図28は、ファイルシステム修復処理109によって修復または削除されたファイルパス名を出力したログの画面(a)２５０１、ファイルが修復されたことをファイルのオーナに通知するメールの画面(b)２５０２、及びファイルが削除されたことをファイルのオーナに通知するメールの画面(c)２５０３である。
【００８３】
修復または削除されたファイルパス名を出力したログの画面２５０１は、ファイルシステムの起動を開始し、rootファイルシステムを修復する必要があることを検知し、ファイルシステム修復を開始し、通知情報管理テーブル１２０のフラグから/etc/hostsを修復したこと検出し、/etc/hostsを修復したことを表す。さらに、異なるファイルシステムもファイルシステム修復が必要であることを検知し、ファイルシステム修復を開始し、通知情報管理テーブル１２０のフラグから/home/root/var.txtが修復され、/home/foo/var.txtが削除されたことを検出し、/home/root/var.txtが修復され、/home/foo/var.txtが削除されたことを表す。また、異なるファイルシステムのファイルシステム修復を開始し、通知情報管理テーブル１２０のフラグから/tmpのファイルが削除されたことを検出し、/tmpのファイルが削除されたことを表す。
【００８４】
ファイルが修復されたことをファイルオーナであるrootに通知するメール画面２５０２は、２５０１でログに出力されたrootのファイルが修復されたことをファイルオーナであるrootに通知するメール画面である。
【００８５】
ファイルが削除されたことをファイルオーナであるfooに通知するメール画面２５０３は、２５０１でログに出力されたfooのファイルが削除されたことをファイルオーナであるfooに通知するメール画面である。
【００８６】
本実施例によれば、システム障害などによるシステム停止後のシステム再起動において、ファイルシステムの起動時間の短縮による稼動性向上と、破損ファイルをユーザへ通知することができる。
【図面の簡単な説明】
【００８７】
【図１】ジャーナルファイルシステムを説明する図である。
【図２】ジャーナルファイルシステムの修復を説明する図である。
【図３】実施例のシステム構成を示す。
【図４】ファイル情報テーブルを示す。
【図５】修復ファイルリストを示す。
【図６】システム管理者が予め定義する定義リストを示す。
【図７】ファイル修復予測時間管理テーブルを示す。
【図８】通知情報管理テーブルを示す。
【図９】ジャーナルファイルシステム起動処理のフローチャートである。
【図１０】ファイル作成処理のフローチャートである。
【図１１】ファイルアクセス処理のフローチャートである。
【図１２】ファイル削除処理のフローチャートである。
【図１３】修復ファイルリストへの登録処理のフローチャートである。
【図１４】修復ファイルリストからの削除処理のフローチャートである。
【図１５】格付け設定処理のフローチャートである。
【図１６】格上げ判定処理のフローチャートである。
【図１７】ファイルシステム修復処理のフローチャートである。
【図１８】ファイル修復処理のフローチャートである。
【図１９】修復時間再見積り処理のフローチャートである。
【図２０】ファイル修復予測時間算出処理のフローチャートである。
【図２１】格付け別修復処理のフローチャートである。
【図２２】格上げ処理のフローチャートである。
【図２３】Ｂ−からＢへの格上げ処理のフローチャートである。
【図２４】ＣからＣ＋への格上げ処理のフローチャートである。
【図２５】格下げ処理のフローチャートである。
【図２６】Ｃ＋からＣへの格下げ処理のフローチャートである。
【図２７】ＢからＢ−への格下げ処理のフローチャートである。
【図２８】修復または削除されたファイルをログまたはメールで通知する画面である。
【符号の説明】
【００８８】
１０１：計算機（サーバ）、１０２：メモリ、１０３：プログラム、１０４：ファイルアクセス処理、１０５：ファイル作成処理、１０６：ファイル削除処理、１０７：格上げ判定処理、１０８：格付け設定処理、１０９：ファイルシステム修復処理、１１０：ファイル修復予測時間算出処理、１１１：格上げ処理、１１２：格下げ処理、１１３：プロセッサ、１１４：ディスクインターフェイス、１１５：記憶装置、１１６：ファイル情報テーブル、１１７：修復ファイルリスト、１１８：定義リスト、１１９：ファイル修復予測時間管理テーブル、１２０：通知情報管理テーブル、１２１：ユーザ通知処理。
【図１】
2009140142.tif 000003
【図２】
2009140142.tif 000004
【図３】
2009140142.tif 000005
【図４】
2009140142.tif 000006
【図５】
2009140142.tif 000007
【図６】
2009140142.tif 000008
【図７】
2009140142.tif 000009
【図８】
2009140142.tif 000010
【図９】
2009140142.tif 000011
【図１０】
2009140142.tif 000012
【図１１】
2009140142.tif 000013
【図１２】
2009140142.tif 000014
【図１３】
2009140142.tif 000015
【図１４】
2009140142.tif 000016
【図１５】
2009140142.tif 000017
【図１６】
2009140142.tif 000018
【図１７】
2009140142.tif 000019
【図１８】
2009140142.tif 000020
【図１９】
2009140142.tif 000021
【図２０】
2009140142.tif 000022
【図２１】
2009140142.tif 000023
【図２２】
2009140142.tif 000024
【図２３】
2009140142.tif 000025
【図２４】
2009140142.tif 000026
【図２５】
2009140142.tif 000027
【図２６】
2009140142.tif 000028
【図２７】
2009140142.tif 000029
【図２８】
2009140142.tif 000030