JP3959870B2 - ディスク内容障害回復方法及び計算装置 - Google Patents
ディスク内容障害回復方法及び計算装置 Download PDFInfo
- Publication number
- JP3959870B2 JP3959870B2 JP28907398A JP28907398A JP3959870B2 JP 3959870 B2 JP3959870 B2 JP 3959870B2 JP 28907398 A JP28907398 A JP 28907398A JP 28907398 A JP28907398 A JP 28907398A JP 3959870 B2 JP3959870 B2 JP 3959870B2
- Authority
- JP
- Japan
- Prior art keywords
- area
- cache
- storage device
- procedure
- range
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は計算機の障害回復処理方法に関し、特に、ディスク内容の回復方法に関する。
【0002】
【従来の技術】
磁気ディスク等の記憶装置を含む計算機では、オペレーティングシステム(OS)とアプリケーションの性能を向上させるため、記憶装置との間でやり取りするデータを主記憶にキャッシュする。記憶装置に実際のI/O操作を発行する前に主記憶にI/O対象となっているディスク領域が保存されていないか検査して、ある場合はその主記憶内容をI/O操作の結果として利用する。つまり、読み込み操作であればその主記憶内容を読み込んだデータとし、書込み操作であればその主記憶への書き込みとする。変更のあったディスク領域は、ある時点でディスクに書き出される。これにより、I/O回数を減らし、システム性能の向上を実現している。
【0003】
この方式は、OSが管理するファイルシステムで実施されるほかに、データベースのようなディスクI/Oの多いアプリケーションが独自に実施する場合もある。アプリケーションが実施する場合は、アプリケーション自身が直接ディスク装置にアクセスすることで、OSのファイルシステムのキャッシュを無効にしている。
【0004】
このキャッシュ方式を使う場合、計算機に障害が発生して停止してしまった時に問題が発生する。つまり、ディスクに書き出されていないデータが主記憶上のキャッシュにある時にOSが停止した場合、このキャッシュに残っているデータは、計算機の再起動後には失われてしまう。失われるデータによっては、ファイルシステム、データベースの破壊につながる。
【0005】
このような問題を回避するために、重要なデータ、例えばファイルシステムのディレクトリ構造等に関する変更は同期I/Oにより即座にディスクに反映する方式が取られる。このようなファイルシステムの実装例の1つが、TheDesign and Implementation 4.4BSD Operating System(pp.269--284,Addison-Wesley, 1996)に述べられている。
【0006】
また、障害時のファイルシステムの回復処理が容易なように、ファイルシステムの構造に関わる変更をログとしてディスクの予め定めた領域に記録する方式もある。このようなファイルシステムの実装例の1つが、Inside WindowsNT Second Edition(pp. 395-450, Microsoft Press, 1998)に述べられている。この場合は、ディスク上のログを参照することにより容易に障害回復処理ができる。
【0007】
いずれの方式によっても、ファイルシステム構造を変更する処理、例えば、ファイルやディレクトリの生成・削除、ファイル属性の変更などの操作が大量に発生する状況では、ディスク上にランダムに分散してしまう同期I/Oが頻発してシステム性能が低下してしまう。これを解決する方式として、複数のディスクへの書き込みを1つにまとめて、シーケンシャルな追記書き込みとするファイルシステムが、前記の4.4BSD(pp. 285-306)に述べられている。
【0008】
しかしながら、いずれの方法によっても、障害によるOS停止時にメモリにキャッシュされるているデータが失われてしまう問題を免れることはできない。
【0009】
【発明が解決しようとする課題】
従来技術では、磁気ディスクの内容、あるいは、更新情報の一部を主記憶上のキャッシュに保存して、I/O回数を削減してシステム性能の向上を実現している。ところがこの方式では、計算機が障害停止した時に主記憶上のキャッシュにディスクに書き出されていない内容が残っていると、そのキャッシュに記録されていたデータが失われてしまう。また、ディスク上に構成されるファイルシステムの構造を変更するデータは同期I/Oでディスクへ書き出すため、OSの性能低下の原因となる。
【0010】
本発明の目的は、障害停止時に主記憶上に残っているディスク内容のキャッシュ、あるいは、更新履歴を、計算機起動後に参照可能とする方法を提供して、ディスク内容の消失を防ぐ方法を提供する。また、本発明によれば、同期I/O回数の削減による性能向上も得られる。
【0011】
【課題を解決するための手段】
本発明は主記憶中の領域を指定する手順と、前記領域にディスク内容の一部、あるいは、ディスク内容の更新情報を記録する手順と、前記領域の内容を保持して計算機を起動する手順と、前記起動手順により起動した時に、前記領域の内容よりディスク内容を更新する手順による。
【0012】
【発明の実施の形態】
図面を用いて本発明の実施の形態を説明する。本実施形態は、ファイルシステムの回復方法に関する実施の形態である。この実施の形態では、OSのファイルシステムが、ファイルシステム構造の更新履歴(ログ)を主記憶上の定められた領域にキャッシュして、前記領域を破壊しない計算機起動方法を設ける。これにより、計算機の再起動後にキャッシュ内容を参照して、ファイルシステム構造を再構成する方法を示す。
【0013】
図1は、本発明の実施の形態の計算機構成を示す図である。計算機100は、CPU101,磁気ディスク装置102、主記憶装置104、読取専用メモリ105、および、これらを接続するバス103より構成される。
【0014】
主記憶装置104は、2つの領域104aと104bに分割される。この内の104bは、計算機100で実行するOSのファイルシステムのログ、および、ログを管理するデータ領域として利用する。ファイルシステムのログとは、ディスク102上に構成されるファイルシステムの構造変更履歴のことをいう。例えば、ファイルの生成、削除、ファイルへのディスクブロックの割り当て等を記録する。残りの104aは、その他のOSのコード、データ、および、アプリケーションプログラムが利用する。また、主記憶104aには、後述するファイルシステムの障害回復手順と計算機100の起動時に参照されるパラメータも含まれている。
【0015】
主記憶装置104の領域104bは、後で説明する起動方法により再起動を実行しても、内容が保持される領域となる。本実施形態は、ファイルシステム構造の変更がディスクに反映されていない時に、障害によりOSの実行が停止した場合でも、再起動後にファイルシステムのログ領域104bを参照することにより、障害前に実施されたファイルシステムへの更新を引き継ぐことを可能とするものである。
【0016】
主記憶領域104bに格納するデータ構造について、図2により説明する。図2は、ファイルシステム構造の変更の履歴を記録するログキャッシュテーブル200の構造と、テーブルへのインデックス210を示している。テーブル200には、すべてのファイルシステムの構造、属性の更新操作が記録される。テーブル200は、主記憶領域104bに格納する。これにより、OS停止後の再起動後でも内容が保存される。
【0017】
テーブル200は、ファイルシステムに対する各操作の内容を格納するエントリから構成される。テーブル200の各エントリは、そのエントリが使用されているかどうかを示す有効フラグ201、操作内容を記録するログ202、ログ202に記録されているデータのチェックサム203からなる。
【0018】
次エントリインデックス210は、次のファイルシステム操作ログを格納するエントリを指している。エントリの割り当て操作によりインデックス210は次に進められる。テーブルの最後を指している場合は、先頭エントリを指すように設定する。
【0019】
ファイルシステムはなんらかの更新操作を実行する場合、テーブル200にその操作を記録する。図3によりその操作手順を説明する。
【0020】
まず、更新情報を格納するエントリがテーブル200にあるかどうか検査する(ステップ301)。エントリがある場合はエントリの割り当て処理へ進む(ステップ302)。空きエントリがない場合、つまり、次エントリインデックス210の指すエントリの有効フラグ201がセットされている場合は、1つ、ないし、複数個のエントリのログ202に記録されている更新操作をディスク102に反映して(ステップ305)、それらのエントリの有効フラグをクリアし(ステップ306)、ステップ302へ進む。
【0021】
ステップ302では、次エントリインデックス210が指すエントリの有効フラグ201をセットしてエントリを割り当て、次エントリインデックス210を次のエントリへ進める。割り当てたエントリのログ202に、ファイルシステム操作内容を示すログを格納し(ステップ303)、ログのチェックサムを計算して203に格納する(ステップ304)。
【0022】
チェックサムは、OS再起動後のファイルシステム初期化処理で、ログ202に記録さていている情報が破壊されていないかを検査するために利用する。
【0023】
次に、図4によりOSを再起動する時に参照するデータ構造について説明する。図4は、本発明の形態の主記憶104の様子を示している。前述したように主記憶104は、通常の領域104aと、再起動時に内容が保存される領域104bとに分かれている。領域104aには、計算機再起動処理中かを示すリブートフラグ401、領域104bのアドレス範囲を記録する保存範囲402がある。
【0024】
フラグ401と範囲402は、OSの停止時、再起動時に設定する。フラグ401は、計算機起動時の動作を決める値を格納する。例えば、電源投入時と同様の初期化処理を実行する、一部の初期化処理を実行せずに起動する等である。本発明では、主記憶領域104bの内容を保持してOSを起動することを示す値が存在する。範囲402は、領域104bのアドレス範囲を記録している。
【0025】
これらが格納されるメモリのアドレスは予め決められており、起動処理でもこれらのデータを参照でき、保持すべき領域104bを発見することができる。
【0026】
次に、図5により計算機の起動手順を説明する。図5に示した手順はROM105に格納され、CPU101がリセットされた時に実行されるように、ROM105はバス103に接続されている。
【0027】
CPU101がリセットされると、ステップ501が実行される。ここでは、主記憶104内のリブートフラグ401を検査する。フラグ401に主記憶領域104bの保持を示す値が格納されている場合は、保存範囲402を参照して、以降の起動処理で利用できるメモリ領域から402で示される領域を除外して(ステップ502)、ステップ503へ進む。そうでない場合は、ステップ503へ進む。
【0028】
ステップ503からの処理は、通常の計算機起動手順である。主記憶104を初期化し(ステップ503)、計算機に接続されている入出力装置の初期化と、OSに渡す構成情報を構築する(ステップ504)。構築する構成情報にはOSが利用可能な主記憶範囲が含まれる。この主記憶範囲からも、保存範囲402で指定される領域は除外される。
【0029】
続くステップ505でOSカーネルをロードして、OSの初期化処理を呼び出す。これらの処理の間、主記憶領域104bは利用可能な主記憶から除外されているので、使われることはない。したがって、OS停止による再起動の場合でも、停止時に主記憶領域104bに格納されているログキャッシュテーブル200の内容も保存される。
【0030】
ファイルシステムの初期化処理では、ログキャッシュテーブル200の初期化処理を実行する。この処理を図6により説明する。
【0031】
まず、主記憶104内にあるリブートフラグ401を見て、主記憶領域104bを保持する再起動であったかどうか検査する(ステップ601)。そうでない場合は、ステップ602へ進む。
【0032】
ステップ602からの処理では、ログキャッシュテーブル200の割り当て(ステップ602)と、テーブル200の初期化(ステップ603)を実行して
、その他のファイルシステム初期化処理を実行する。
【0033】
主記憶領域104bが保持される再起動処理中である場合は、ステップ604から実行する。ここからの処理により、主記憶領域104bにあるログキャッシュテーブル200をOSのデータ構造として組み込む。
【0034】
OSが起動する時に渡される構成情報では、主記憶領域104bは存在しないとされている。したがって、図6に示す処理が実行されるまでの間に、主記憶領域104bの内容が破壊されてしまうことはない。
【0035】
まず、ログキャッシュテーブル200のアドレス範囲を、主記憶104内の保存範囲402より取得して(ステップ604)、この領域を主記憶から割り当てられたものとしてカーネル内のメモリ管理のデータ構造に登録する(ステップ605)。
【0036】
次に、テーブル200に格納されているログが破壊されていないかを、テーブル200の各エントリのチェックサム203により検査する。破壊されている場合は、当該エントリの有効フラグ201をクリアする(ステップ606)。
【0037】
最後に、テーブル200のログを、ディスク102に反映する(ステップ607)。この時、次エントリインデックス210が指すエントリの次のエントリが、最も過去に実行された操作のログに対応している。したがって、インデックス210の次のエントリから、インデックス210が指すエントリまでの間の有効フラグがセットされているログ内容をディスク102に反映すれば良い。
【0038】
ディスク102へのログ反映が終了したら、テーブル200を初期化し(ステップ603)、その他のファイルシステム初期化処理を実行する。
【0039】
これまで説明したデータ構造、計算機起動処理、および、ファイルシステム初期化処理により、OS停止前に実行された主記憶のキャッシュに記録されたがディスク102には反映されていないファイルシステム操作を復元できる。また、従来技術では同期I/Oにより実行しなければならなかったファイルシステム操作を非同期I/Oにより実行でき、同期I/Oによる性能劣化を抑止できる。
【0040】
また、従来技術では複数のディスクへの書き込み処理を1つにまとめてシーケンシャルライトとしているファイルシステムでは、メモリ上の書き込みデータをディスク102に書き込む前にOSが停止してしまった場合、それらが失われる問題があった。本発明によれば、これらのまとめ書きするデータを主記憶領域104bに配置することにより、OS停止によるデータの消失を防ぐことができる。
【0041】
次に、本発明の第2の実施の形態について説明する。第1の実施形態では、ファイルシステムの構造に関するログのみをOS再起動の前後で保存するようにしていた。それに対して、第2の実施形態では、ファイルシステム上のファイル自体の内容を回復可能とする。
【0042】
第2の実施形態のファイルシステムは、ディスク102に格納されているファイル内容を主記憶104内にキャッシュする。ファイルを読み書きする場合は、まず、主記憶104内のキャッシュにファイル内容が格納されているか検査する。あれば、そのメモリ内容を利用してファイルアクセスを実行する。なければ、ディスク102からファイル内容を読み出して主記憶104内のキャッシュに格納する。ファイルへの書き込みはキャッシュへの書き込みとなり、書き込みの後の適当な時点でディスク102への実際の書き込みが実行される。
【0043】
このようなファイルシステムでは、OSが障害停止するとキャッシュに書き込まれたがディスクに反映されていないファイル内容は失われてしまう。ここで説明する実施形態では、これを防ぐ方法を示す。
【0044】
図7は、第2の実施形態における計算機の仮想記憶のデータ構造を示している。701は仮想アドレス空間、704は物理アドレス空間を示している。仮想アドレス空間701は、ページテーブル703により構成される。ページテーブル703は、仮想アドレス空間の仮想ページに対応する物理ページアドレスを記録している。例えば、図7では、仮想ページ701aに対応する物理ページは703bに記録されており、物理ページ704aを指している。また、仮想ページ対応する物理ページがあるかどうかは有効フラグ703aに記録される。ページテーブルの各エントリには、変更フラグ703cがある。これは、仮想ページの内容が変更された時に自動的にセットされる。
【0045】
現在の仮想アドレス空間を構成するページテーブル703は、ページテーブルレジスタ702により指定される。
【0046】
第2の実施形態におけるOSの仮想アドレス空間構成について説明する。図8は、仮想アドレス空間の一部を示している。仮想アドレス空間701中の領域801は、ファイルシステムのキャッシュをマップする領域とする。ファイル内容のキャッシュを格納している物理ページは、全て領域801の仮想アドレス領域にマップして利用する。
【0047】
また、ファイルシステムキャッシュとする物理ページは、主記憶104中の領域104bから割り当てる。この領域104bは、第1の実施形態と同様に計算機の再起動前後で内容が保持される領域である。
【0048】
図9は、主記憶領域104bに格納されるファイルシステムキャッシュ管理のためのデータ構造を示す。キャッシュ管理テーブル900は、ファイルシステムキャッシュ領域801内の仮想ページ毎のエントリを格納している。各エントリは、有効なキャッシュ内容を含んでいるかを示す有効フラグ901、仮想ページに対応する物理ページアドレス902、および、キャッシュしている内容のディスク上の位置を示すアドレス903、内容が変更されたかを示す変更フラグ904を格納している。
【0049】
ファイルシステムキャッシュにディスク内容を読み込んだ時には、テーブル900のエントリを設定する。キャッシュをマップした仮想ページに対応するエントリの有効フラグ901をセットし、キャッシュの物理ページアドレスを902に、読み込んだディスクのアドレスを903に格納する。更に、変更フラグ904をクリアする。
【0050】
次に、図10により、第2の実施の形態でのファイルへの書き込み手順について説明する。
【0051】
まず、書き込み先のファイル内容がファイルシステムのキャッシュにあるかを検査する(ステップ1001)。キャッシュにない場合は、キャッシュにファイル内容を読み込む(ステップ1005)。
【0052】
ファイルへの書き込みは、仮想アドレス空間701のファイルシステムキャッシュ領域801内にマップされているキャッシュへの書き込みとして実行する(ステップ1002)。この書き込みを実行した時点で、キャッシュがマップされている仮想ページに対応するページテーブル703のエントリの変更フラグ703cが自動的にセットされる。
【0053】
次に、キャッシュ管理テーブル900の変更フラグ904をセットし(ステップ1003)、前のステップのメモリ書き込みによりセットされた、ページテーブル703の変更フラグ703cをクリアする(ステップ1004)。つまり、正規のファイル書き込みの場合は変更フラグ703cをクリアする。これにより、ファイルシステムのキャッシュをマップしているページテーブルエントリの変更フラグ703cにより、キャッシュに対して不正な書き込みがあったかどうかを検出できる。
【0054】
次に、図11によりOSが障害停止した時の処理について説明する。ステップ1101からステップ1105は、ファイルシステムキャッシュ領域801の各ページを検査するループを構成している。
【0055】
ステップ1102では、検査対象となっている仮想ページがファイルシステムキャッシュとして有効なデータを格納しているかを、キャッシュ管理テーブル900の有効フラグ901により検査する。有効なデータを格納していない場合は、次のページへ検査対象として(ステップ1105)、ステップ1101へ戻る。
【0056】
有効なデータを含んでいる場合は、ページテーブル703の検査対象仮想ページに対応するエントリの変更フラグ703cを検査する(ステップ1103)。ここで、変更フラグが設定されていることは、ファイルシステムの正規の処理以外の処理によりファイルシステムキャッシュに不正な書き込みが行われたことを示している。この場合は、キャッシュ管理テーブル900の有効フラグ901をクリアする(ステップ1104)。
【0057】
上記の処理を、ファイルシステムキャッシュ領域801のすべてのページに対して実行する。
【0058】
計算機の再起動処理は、第1の実施形態と同様である。つまり、主記憶領域104bを保持する再起動処理を実施する。
【0059】
本実施形態での、ファイルシステムの初期化処理を図12に示す。この処理は、第1の実施形態のログキャッシュテーブル初期化処理(ステップ601〜)の処理と同様に、主記憶領域104bに保存されているデータよりファイルシステムを更新する。
【0060】
まず、主記憶104内にあるリブートフラグ401を見て、主記憶領域104bを保存する再起動であったかどうか検査する(ステップ1201)。そうでない場合は、ステップ1202へ進む。
【0061】
テップ1202からの処理では、キャッシュ管理テーブル900とキャッシュ用メモリの割り当て(ステップ1202)と、テーブル900の初期化(ステップ1203)を実行して、その他のファイルシステム初期化処理を実行する。
【0062】
主記憶領域104bが保持される再起動処理中である場合は、ステップ1204から実行する。ここからの処理により、主記憶領域104bのキャッシュデータをファイルシステムに組み込む。
【0063】
まず、保存されている主記憶領域104bを保存範囲402より取得して(ステップ1204)、この領域を主記憶から割り当てられたものとしてカーネル内のメモリ管理のデータ構造に登録する(ステップ1205)。
【0064】
次に、主記憶領域104b内のキャッシュ管理テーブル900を参照して、有効フラグ901と変更フラグ904がセットされているエントリについて、キャッシュ内容をディスク102へ書き込む(ステップ1206)。書き込む内容は物理ページアドレス902、書き込む位置はディスクアドレス903より取得できる。
【0065】
ディスク102へのキャッシュ内容書き込みが終了したら、管理テーブル900を初期化し(ステップ1203)、その他のファイルシステム初期化処理を実行する。
【0066】
本実施形態によれば、OSが障害により停止した時に、ファイルシステムのキャッシュにディスクに未反映のファイルデータがある場合でも、OS再起動時にそれをディスクに反映することができ、データの消失を防ぐことができる。
【0067】
これまで示した第1と第2の実施形態を両方同一のファイルシステムに組み込んでもよい。これにより、ファイルシステム構造とファイル内容の両方について、データ消失を防ぐことができる。
【0068】
また、従来技術に示した追記書き込み型ファイルシステムにも本実施形態は適用可能である。追記書き込み型ファイルシステムにおいては、ファイルシステム、および、ファイル内容の更新データは、常に追記というかたちでディスク102に記録される。すなわち、更新ログの積み重ねによりファイルシステムを構築している。
【0069】
このようなファイルシステムの場合、主記憶104に構成するキャッシュも更新ログのキャッシュとすることができる。ここで、ファイルシステム更新操作は常に追記によるため、既にキャッシュ上にある更新ログへの書き込みは発生しない。これらの更新ログを本実施形態での方法で管理すれば、つまり、ログの破壊をページテーブル700の変更フラグ703cにより検査すれば、障害停止時に更新ログが破壊されていないかどうかを容易に知ることができる。
【0070】
また、これまで示した実施の形態では、OSのファイルシステムが計算機再起動の前後で保存される領域104bを利用していたが、次の実施形態では、ユーザプログラムが主記憶領域104bを管理してディスク102の内容をキャッシュしている場合について説明する。
【0071】
この場合は、OSは、ユーザプログラムに対して、主記憶領域104bの割り当て手段1031と、主記憶領域104b中のメモリのユーザ領域へのマッピング操作手段1302、OS再起動後の主記憶領域104bの再割当手段1303を提供する。このマッピング操作手段は、ページテーブル700を操作することにより、主記憶領域104b中のメモリのユーザ空間へのマップ、マップ解除等の操作を実行する。図13には、主記憶領域104b内のメモリがユーザ領域にマップされている様子を示している。
【0072】
ユーザプログラムは、このマッピング手段1302を利用して主記憶104b内のメモリを自由にマップでき、マップ先にディスク102の内容を読み込むことも可能である。これにより、ユーザプログラムはディスク102の内容を主記憶104bにキャッシュすることが可能となる。
【0073】
ユーザプログラムは、第2の実施の形態でのキャッシュ管理テーブル900と同様のデータ構造を保持している。管理テーブル900により、主記憶領域104bに保存されている内容が、ディスク102上のどの領域に対応するかを管理する。この管理テーブル900も、第2の実施形態と同様に、主記憶領域104bに配置する。
【0074】
OSは、主記憶領域104bに格納されているデータの内容については一切関与しない。但し、ステップ501から始まる再起動手順だけは、第1の実施の形態と同様に、主記憶領域104bが存在することを保存範囲402より知り、領域104bを保存してOSの起動処理を実行する。更に、OSに渡す構成情報から主記憶領域104bを除外して、OSに主記憶領域104bを利用させないようにする。
【0075】
OSが障害停止して再起動した場合、ユーザプログラムは、これまで説明した実施形態と同様に、主記憶領域再割り当て手段1303により主記憶領域104bを再びプログラムの管理下に置く。これにより、再び記憶領域104bを参照することができるようになり、障害停止前にディスク102に反映されなかったキャッシュ内容を取得することが可能となる。
【0076】
この実施形態によれば、OSのファイルシステムを経由せずに直接二次記憶装置にアクセスして、ユーザプログラムの管理するメモリに記憶装置内のデータをキャッシュするようなユーザプログラムにおいて、計算機障害時の再起動後にキャッシュ内容を回復することが可能となる。
【0077】
また、図14に示すように、計算機100の主電源装置1401とは独立して主記憶104の内容を保護する補助電源装置1402を備える計算機では、主電源装置1401の障害により計算機装置が停止しても、主記憶104の内容を保存することができる。これと、これまで説明してきた実施の形態を組み合わせると、主電源装置1401の障害により計算機が停止した場合でも、記憶領域104bの内容より停止時のキャッシュの内容を復元できる。
【0078】
これまで説明した実施の形態では、主記憶領域104bに直接キャッシュ内容を格納していたが、計算機停止時に、OS内のデータ構造より同様のデータ構造を構築して再起動、および、回復処理を実施しても良い。
【0079】
【発明の効果】
本発明によれば、OS停止前に実行され主記憶104内のキャッシュに記録されているが、ディスク102には反映されていないファイルシステム操作を復元できる。これにより、従来技術では同期I/Oにより実行しなければならなかったファイルシステム操作を非同期I/Oにより実行でき、同期I/Oによる性能劣化を抑止できる。
【0080】
また、従来技術では複数のディスクへ102の書き込み処理を1つにまとめてシーケンシャルライトとしているファイルシステムでは、メモリ上の書き込みデータをディスク102に書き込む前にOSが停止してしまった場合、それらが失われる問題があった。本発明によれば、これらのまとめ書きするデータを主記憶領域104bに配置することにより、OS停止によるデータの消失を防ぐことができる。
【0081】
また、ファイルシステムのキャッシュにディスク102に未反映のファイルデータがある場合でも、OS再起動時にそれをディスク102に反映することができ、データの消失を防ぐことができる。
【0082】
また、OSのファイルシステムを経由せずに直接二次記憶装置にアクセスして、ユーザプログラムの管理するメモリに二次記憶装置内のデータをキャッシュするようなユーザプログラムにおいて、計算機障害時の再起動後にキャッシュ内容を回復することが可能となる。
【図面の簡単な説明】
【図1】本発明の実施の形態における計算機を示す図である。
【図2】本発明の第1の実施の形態におけるファイルシステム更新履歴を記録するデータ構造を示す図である。
【図3】本発明の第1の実施の形態におけるファイルシステム構造更新操作手順を示すフローチャートである。
【図4】本発明の第1の実施の形態における計算機再起動処理に関連するデータ構造を示す図である。
【図5】本発明の第1の実施の形態における計算機の起動手順を示すフローチャートである。
【図6】本発明の第1の実施の形態におけるファイルシステム初期化処理手順を示すフローチャートである。
【図7】本発明の第2の実施の形態における仮想記憶管理のデータ構造を示す図である。
【図8】本発明の第2の実施の形態におけるファイルシステムと仮想記憶管理のデータ構造を示す図である。
【図9】本発明の第2の実施の形態におけるファイルシステムキャッシュの管理テーブルのデータ構造を示す図である。
【図10】本発明の第2の実施の形態におけるファイルへの書き込み手順を示すフローチャートである。
【図11】本発明の第2の実施の形態における障害停止時のファイルシステム停止処理を示す図である。
【図12】本発明の第2の実施の形態におけるファイルシステム初期化処理手順を示すフローチャートである。テム停止処理を示す図である。
【図13】本発明の第3の実施の形態におけるメモリ管理の様子を示す図である。
【図14】本発明の第4の実施の形態における計算機装置の構成す図である。
【符合の説明】
100…計算機、 101…プロセッサ、 102…ディスク装置、
103…バス、 104…主記憶、
104a,104b…主記憶104内の領域、 105…読取専用メモリ、
200ないし210…データ構造、 301ないし306…処理ステップ、
401ないし402…データ構造、
501ないし505…計算機起動時の処理ステップ、
601ないし607…ファイルシステムの初期化処理ステップ、
701ないし704…計算機の仮想記憶管理のためのデータ構造、
801…ファイルシステムキャッシュを格納する仮想アドレス範囲、
900ないし904…ファイルシステムキャッシュを管理するデータ構造、
1001ないし1005…ファイル書き込み処理ステップ、
1101ないし1105…計算機停止時のファイルシステム停止処理ステップ、
1201ないし1206…計算機再起動時のファイルシステム初期化処理ステップ、
1301ないし1303…OSがユーザプログラムに提供する主記憶管理手段、
1401ないし1402…電源装置。
Claims (6)
- 障害停止時に二次記憶装置内容を回復する方法であって、
前記二次記憶装置を備える計算機装置のCPUは、二次記憶装置上に構成されるファイルシステム構造の更新履歴を主記憶装置にキャッシュとして記録し、
前記主記憶装置は、第一の領域と第二の領域を有し、
前記第一の領域は、前記ファイルシステム構造の更新履歴を記録するテーブルを有し、
前記第二の領域は、前記第一の領域に更新履歴が保存されているか否かを示すフラグ及び前記第一の領域のテーブルのアドレス範囲を記録する保存範囲を有し、
前記計算機装置の障害停止時に、
前記計算機装置のCPUは、
前記主記憶装置のフラグを検査する第一の手順と、
前記第一の手順で前記フラグに前記第一の領域に更新履歴の保持が示されている場合、前記保存範囲を参照し、主記憶の領域から前記第一の領域を除外して主記憶の利用可能な範囲を含む、OSに渡す構成情報を作成する第二の手順と、
前記第二の手順で作成した構成情報を用いてOSを起動する第三の手順と
前記第三の手順でOSの起動が終了した後、前記主記憶装置のフラグを検査する第四の手順と、
前記第四の手順で前記フラグに前記第一の領域の更新履歴の保持が示されている場合、前記テーブルのアドレス範囲を前記保存範囲から取得する第五の手順と、
前記第五の手順で取得したアドレス範囲を、OSのカーネル内のメモリ管理のデータ構造に登録する第六の手順と、
前記テーブルの各エントリを検査し、破壊されていない更新履歴を前記二次記憶装置に反映する第七の手順と
を行う手順を有することを特徴とする二次記憶装置内容を回復する方法。 - 障害停止時に二次記憶装置内容を回復する方法であって、
前記二次記憶装置に格納されているファイル内容は、主記憶装置にキャッシュされ、
前記主記憶装置は、第一の領域と第二の領域を有し、
前記第一の領域は、前記ファイル内容のキャッシュ及び該キャッシュの管理データを格納するキャッシュ管理テーブルを有し、
前記第二の領域は、前記第一の領域に前記ファイル内容のキャッシュ及び該キャッシュの管理データが保存されているか否かを示すフラグと、前記第一の領域の前記管理データのアドレス範囲を記録する保存範囲を有し、
障害停止時に、
前記計算機装置のCPUは、
前記主記憶装置のフラグを検査する第一の手順と、
前記第一の手順でフラグに前記第一の領域に前記ファイル内容のキャッシュ及び該キャッシュの管理データの保持が示されている場合、前記保存範囲を参照し、主記憶の領域から前記第一の領域を除外して主記憶の利用可能な範囲を含む、OSに渡す構成情報を作成する第二の手順と、
前記構成情報を用いてOSを起動する第三の手順と
前記第三の手順でOSの起動が終了した後、前記主記憶装置のフラグを検査する第四の手順と、
前記第四の手順でフラグに前記第一の領域の前記ファイル内容のキャッシュ及び該キャッシュの管理データの保持が示されている場合、前記管理データのキャッシュデータのアドレス範囲を前記保存範囲から取得する第五の手順と、
前記第五の手順で取得した前記管理データのキャッシュデータのアドレス範囲を、OSのカーネル内のメモリ管理のデータ構造に登録する第六の手順と、
前記キャッシュ管理テーブルの各エントリを検査し、キャッシュされた前記ファイル内 容のうち未反映のものを前記二次記憶装置に反映する第七の手順と
を行う手順を有することを特徴とする二次記憶装置内容を回復する方法。 - 計算機装置の障害停止時におけるキャッシュ内容の回復方法であって、
ユーザプログラムは、前記計算機装置の主記憶装置の一部を管理し、二次記憶装置の内容を前記主記憶装置の一部へキャッシュし、
前記主記憶装置の一部は、第一の領域と第二の領域を含み、
前記第一の領域は、前記ユーザプログラムが管理する前記キャッシュ及び該キャッシュの管理データを有し、
前記第二の領域は、前記第一の領域に前記ユーザプログラムが管理する前記キャッシュ及び該キャッシュの管理データが保存されているか否かを示すフラグと、前記第一の領域の前記管理データのアドレス範囲を記録する保存範囲を有し、
前記計算機装置の障害停止時に、
前記計算機装置のCPUは、
前記主記憶装置のフラグを検査する第一の手順と、
前記第一の手順でフラグに前記第一の領域に前記ユーザプログラムが管理する前記キャッシュ及びキャッシュの管理データの保持が示されている場合、前記保存範囲を参照し、主記憶の領域から前記第一の領域を除外して主記憶の利用可能な範囲を含む、OSに渡す構成情報を作成する第二の手順と、
前記構成情報を用いてOSを起動する第三の手順と
前記ユーザプログラムは、
前記第一の領域を管理下に置き、該第一の領域を参照する第四の手順と
を行う手順を有することを特徴とするキャッシュ内容の回復方法。 - 主記憶装置、該主記憶装置の内容を保護する電源及び二次記憶装置を備えた計算機装置であって、
前記計算機装置のCPUは、前記二次記憶装置上に構成されるファイルシステム構造の更新履歴を主記憶装置にキャッシュとして記録し、
前記主記憶装置は第一の領域と第二の領域を有し、
前記第一の領域は、前記ファイルシステム構造の更新履歴を記録するテーブルを有し、
前記第二の領域は、前記第一の領域に更新履歴が保存されているか否かを示すフラグ及び前記第一の領域のテーブルのアドレス範囲を記録する保存範囲を有し、
前記計算機装置が障害により停止した場合、
前記計算機装置のCPUは、前記主記憶装置のフラグを検査し、該フラグに前記第一の領域の更新履歴の保持が示されている場合に、前記保存範囲を参照して、主記憶の領域から前記第一の領域を除外して主記憶の利用可能な範囲を含む、OSに渡す構成情報を作成し、該構成情報を用いてOSを起動し、該起動が終わった後、前記主記憶装置のフラグを検査し、該フラグに前記第一の領域に更新履歴の保持が示されている場合、前記テーブルのアドレス範囲を前記保存範囲から取得し、該アドレス範囲をOSのカーネル内のメモリ管理のデータ構造に登録し、前記テーブルの各エントリを検査し、破壊されていない更新履歴を前記二次記憶装置に反映させることを特徴とする計算機装置。 - 主記憶装置、該主記憶装置の内容を保護する電源及び二次記憶装置を備えた計算機装置であって、
前記二次記憶装置に格納されているファイル内容は、前記主記憶装置にキャッシュされ、
前記主記憶装置は、第一の領域と第二の領域を有し、
前記第一の領域は、前記ファイル内容のキャッシュ及び該キャッシュの管理データを格納するキャッシュ管理テーブルを有し、
前記第二の領域は、前記第一の領域に前記ファイル内容のキャッシュ及び該キャッシュの管理データが保存されているか否かを示すフラグ及び前記第一の領域の前記管理データのアドレス範囲を記録する保存範囲を有し、
前記計算機装置が障害により停止した場合、
前記計算機装置のCPUは、前記主記憶装置のフラグを検査し、該フラグに前記第一の領域に前記ファイル内容のキャッシュ及び該キャッシュの管理データの保持が示されている場合、前記保存範囲を参照して、主記憶の領域から前記第一の領域を除外して主記憶の利用可能な範囲を含む、OSに渡す構成情報を作成し、該構成情報を用いてOSを起動した後、前記主記憶装置のフラグを検査し、該フラグに前記第一の領域の前記ファイル内容のキャッシュ及び該キャッシュの管理データの保持が示されている場合、前記管理データのキャッシュデータのアドレス範囲を前記保存範囲から取得し、該管理データのキャッシュデータのアドレス範囲をOSのカーネル内のメモリ管理のデータ構造に登録し、前記キャッシュ管理テーブルの各エントリを検査し、キャッシュされた前記ファイル内容のうち未反映のものを前記二次記憶装置に反映することを特徴とする計算機装置。 - 主記憶装置及び該主記憶装置の内容を保護する電源を備える計算機装置であって、
前記計算機装置のユーザプログラムは、前記計算機装置の主記憶装置の一部を管理し、前記二次記憶装置の内容を前記主記憶装置の一部へキャッシュし、
前記主記憶装置の一部は、第一の領域と第二の領域を含み、
前記第一の領域は、前記ユーザプログラムが管理する前記キャッシュ及び該キャッシュの管理データを有し、
前記第二の領域は、前記第一の領域に前記ユーザプログラムが管理する前記キャッシュ及び該キャッシュの管理データが保存されているか否かを示すフラグと、前記第一の領域の前記管理データのアドレス範囲を記録する保存範囲を有し、
前記計算機装置が障害により停止した場合、
前記計算機装置のCPUは、前記主記憶装置のフラグを検査し、該フラグに前記第一の領域に前記ユーザプログラムが管理する前記キャッシュ及びキャッシュの管理データの保持が示されている場合、前記保存範囲を参照して、主記憶の領域から前記第一の領域を除外して主記憶の利用可能な範囲を含む、OSに渡す構成情報を作成し、該構成情報を用いてOSを起動し、
前記ユーザプログラムは、前記第一の領域を管理下に置き、該第一の領域を参照することを特徴とする計算機装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28907398A JP3959870B2 (ja) | 1998-10-12 | 1998-10-12 | ディスク内容障害回復方法及び計算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28907398A JP3959870B2 (ja) | 1998-10-12 | 1998-10-12 | ディスク内容障害回復方法及び計算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000122906A JP2000122906A (ja) | 2000-04-28 |
JP3959870B2 true JP3959870B2 (ja) | 2007-08-15 |
Family
ID=17738484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28907398A Expired - Fee Related JP3959870B2 (ja) | 1998-10-12 | 1998-10-12 | ディスク内容障害回復方法及び計算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3959870B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5104653B2 (ja) * | 2008-08-25 | 2012-12-19 | 大日本印刷株式会社 | Icカード及びicカードプログラム |
JP2010282586A (ja) * | 2009-06-08 | 2010-12-16 | Fujitsu Ltd | ファイル管理装置、ファイル管理方法、ファイル管理プログラム及び情報システム |
JP4945663B2 (ja) * | 2010-06-30 | 2012-06-06 | 株式会社東芝 | 情報処理装置およびデータの復旧方法 |
JP5579003B2 (ja) * | 2010-09-22 | 2014-08-27 | 三菱重工業株式会社 | アドレス変換検査装置、中央処理演算装置、及びアドレス変換検査方法 |
US9632931B2 (en) | 2013-09-26 | 2017-04-25 | Hitachi, Ltd. | Computer system and memory allocation adjustment method for computer system |
JP2021005121A (ja) * | 2019-06-25 | 2021-01-14 | 株式会社日立製作所 | ストレージ装置、及び制御方法 |
-
1998
- 1998-10-12 JP JP28907398A patent/JP3959870B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000122906A (ja) | 2000-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11150815B2 (en) | Information processing apparatus, information processing method, and computer program product | |
US6205558B1 (en) | Recovery of file systems after modification failure | |
JP4363676B2 (ja) | コンピュータシステム | |
JP5663060B2 (ja) | フラッシュメモリシステムの高速起動を容易にする方法およびシステム | |
EP2329360B1 (en) | Managing cache data and metadata | |
JP4199993B2 (ja) | スナップショット取得方法 | |
US8239356B2 (en) | Methods and apparatuses for data protection | |
US8032707B2 (en) | Managing cache data and metadata | |
US7640276B2 (en) | Backup system, program and backup method | |
KR101567134B1 (ko) | 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법 | |
CN113868192B (zh) | 一种数据存储设备、方法与分布式数据存储系统 | |
US20070300037A1 (en) | Persistent flash memory mapping table | |
US6272611B1 (en) | Computer data storage medium having a virtual disk drive and memory management method therefor | |
US6658541B2 (en) | Computer system and a database access method thereof | |
JPH07152641A (ja) | プログラムキャッシュ装置 | |
JP3959870B2 (ja) | ディスク内容障害回復方法及び計算装置 | |
KR101474843B1 (ko) | 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법 | |
JP2002258971A (ja) | 計算機システムの再立上げ方法 | |
US11893273B2 (en) | Crash-safe tiered memory system | |
JP3335919B2 (ja) | ディスクキャッシュ制御装置 | |
US11531474B1 (en) | Storage system and data replication method in storage system | |
JPH0816880B2 (ja) | データベースシステムおよびその処理方法 | |
JP2000242550A (ja) | データ運用管理方法 | |
JP3585859B2 (ja) | ディスク制御方法および情報処理装置 | |
JP2718676B2 (ja) | 仮想記憶ダンプ処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051025 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060228 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060417 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061017 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070306 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070328 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070424 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070507 |
|
LAPS | Cancellation because of no payment of annual fees |