JPH09114718A - コンピュータ・マス・ストレージ装置への書込み操作のアトミシティを保証するためのジャーナリング・ファイル・システム用トランザクション装置ドライバ技術 - Google Patents

コンピュータ・マス・ストレージ装置への書込み操作のアトミシティを保証するためのジャーナリング・ファイル・システム用トランザクション装置ドライバ技術

Info

Publication number
JPH09114718A
JPH09114718A JP8262420A JP26242096A JPH09114718A JP H09114718 A JPH09114718 A JP H09114718A JP 8262420 A JP8262420 A JP 8262420A JP 26242096 A JP26242096 A JP 26242096A JP H09114718 A JPH09114718 A JP H09114718A
Authority
JP
Japan
Prior art keywords
computer
file system
data
log
metatrans
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.)
Pending
Application number
JP8262420A
Other languages
English (en)
Inventor
Billy J Fuller
ビリー・ジェイ・フラー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09114718A publication Critical patent/JPH09114718A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 【課題】 種々の複雑なトランザクション機構を実現す
る必要性なしにデータのアトミシティを保証する。 【解決手段】 OSのファイル・システム(FS)は、
トランザクション装置(メタトランス)ドライバ32
に、FSオペレーションの始めと終りと、該始まり以来
発生している重要なデータ更新とについて知らせる。該
ドライバは、データが正常な読出し/書込み/ストラテ
ジ・エントリー点を介して該ドライバに現れる度に更新
をログする。該ドライバは、未処理のオペレーションが
ある間システムが故障したなら、オペレーションに対す
る全部の変化がFSに現れるか、何らの変化が現れない
かのいずれかを保証する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、コンピュ
ータ・オペレーティング・システム(「OS」)のファ
イル・システム(「FS」)の分野に関する。特に、本
発明は、システム障害の事象においてコンピュータ・マ
ス・ストレージ装置に対する書込み操作のアトミシティ
(最小単位)(atomicity)を保証するための
ジャーナリング・ファイル・システム用トランザクショ
ン装置ドライバに関する。
【0002】なお、本発明は、発明の名称が「Single T
ransaction Technique For a Journaling File System
of a Computer Operating System」の米国特許出願Se
rial No.08/526790であって、199
5年9月11日に出願され、本発明の譲受人であるMo
untain View,CAのサン・マイクロシステ
ム社(Sun Microsystems,Inc.)
に譲渡された当該米国特許出願の主題と関連する。該出
願の開示の内容が本明細書に参照のため特別に組み込ま
れている。
【0003】
【従来の技術】ディスク・ドライブのようなコンピュー
タ・マス・ストレージ装置は、システム障害が「書込
み」操作中に生じた場合データのアトミシティを保証す
ることができないので、従来のジャーナリング・ファイ
ル・システムは補償するための複雑なトランザクション
機構を用いなければならない。ディスク書込み操作中の
システム障害は、通常、新旧のデータの非決定的混合体
(mix)がディスクに書込まれ、次いでその結果コン
ピュータ・システムのリブートで出会ってしまうことが
生じる。
【0004】
【発明が解決しようとする課題】従って、上記のこと
は、種々の複雑なトランザクション機構を実現する必要
性なしにデータのアトミシティを保証することができる
ならば非常に望ましい。
【0005】
【課題を解決するための手段】本発明のジャーナリング
・ファイル・システムのためのトランザクション装置ド
ライバ技術は、従来のジャーナリング・ファイル・シス
テムの要件に対して適合されるトランザクション・イン
ターフェースをエクスポート(export)すること
によりシステム障害の事象においてコンピュータ・マス
・ストレージ装置に対する書込み操作のアトミシティを
保証する点で特別に有益である。本明細書において開示
される特定の実施形態においては、OSファイル・シス
テムは、トランザクション装置ドライバにファイル・シ
ステム・オペレーションが始まりそして終わるときを通
知する。オペレーション中、ファイル・システムはま
た、トランザクション・ドライバに、ファイル・システ
ム・オペレーションの始まり以来生じている重要なデー
タの更新について通知する。本明細書において開示され
るトランザクション装置ドライバは、データが正常な読
出し/書込み/ストラテジ・エントリー・ポイントを介
してドライバの中へ現れるとき、更新をログする。
【0006】未決着のオペレーションがある間にシステ
ムが障害を起こす場合、トランザクション装置ドライバ
は、オペレーションについての全部の変化がファイル・
システムに現れるか、変化が何も現れないかのいずれか
を保証する。その結果、ディスクに書込まれ且つリブー
トで出会うデータは、全部新しいデータと全部古いデー
タの双方は非決定的に混合されずに全部新しいデータ
か、全部古いデータかのいずれかである。
【0007】本明細書において開示されるトランザクシ
ョン装置ドライバの恩恵の一つは、既存のコード・パス
が損なわれないままであるが、開示されるジャーナリン
グの機能性がいずれのUNIX(ユニックス)(登録商
標)又は関連のOSファイル・システムにトランザクシ
ョン装置ドライバへの数個のコールを有して容易に加え
られることである。更に、特定の実施形態において、追
加のトランザクション・コードが、メンテナンス及び試
験機能を高めるため相対的に局所化される。その上、何
ら新しい相互作用が、ファイル・システム・サブシステ
ム、仮想メモリー・サブシステム及びディスク-バッフ
ァー・キャッシュ・サブシステムとの間に導入されず、
そのため性能、安定性及び保全性を増大させる。最終的
には、ファイル・システムに作用するユーティリティは
変わらないままであり得る。本発明のトランザクション
装置ドライバなしでは、例えばファイル・システム・チ
ェック(「fsck」)、「ダンプ(dump)」、
「クォータチェック(quotacheck)」のよう
な従来のユーティリティは、ファイル・システムとファ
イル・システムのジャーナル又はログとの双方を処理し
なければならない。
【0008】本発明は、UFS層又はその等価なものを
組み込んでいるいずれのSystem VベースのUN
IX(登録商標)OS、IBM AIX(登録商標)、
又はマイクロソフト・ウインドウズNT(登録商標)オ
ペレーティング・システムを含むOSファイル・システ
ムへジャーナル又はログを加えることにより、一部実施
される。ジャーナルは、アトミック・トランザクション
にグループ化された一連のファイル・システム更新を含
み、新しいタイプのメタデバイス(metadevic
e)即ちメタトランス(metatrans)装置によ
り管理される。ジャーナルをオペレーティング・システ
ムへ加えることは、より早いリブートと早い同期書込み
(例えば、ネットワーク・ファイル・システム(「NF
S」)、O SYNC及びディレクトリ更新)とを提供
する。
【0009】本明細書に開示される特定の実施形態にお
いて、本発明は、ログの使用を通してより早い同期オペ
レーション及びより早いリブートを提供するUFSファ
イル・システムへの拡張として有利に実施される。ファ
イル・システム更新がファイル・システム自体に与えら
れる前に、該ファイル・システム更新はログに安全に記
録される。設計は、対応する上部層及び下部層となるよ
う実施され得る。上部層で、UFSファイル・システム
は、ファイル・システム更新を記録する下部層へのコー
ルにより修正される。下部層は疑似装置、即ちメタトラ
ンス装置から成り、それはログの内容を管理する責任を
負う。
【0010】メタトランス装置は、2つのサブデバイ
ス、ロギング装置及びマスター装置から成る。ロギング
装置はファイル・システム更新のログを含み、一方マス
ター装置はファイル・システム自体を含む。個別のロギ
ング装置の存在は、ユーザのプログラム・コードに対し
て見えず、また大部分のカーネルに対して見えない。メ
タトランス装置は、従来のブロック及び生(raw)イ
ンターフェースを提供し、通常のディスク装置のように
振る舞う。
【0011】従来のOSアプローチを利用すると、シス
テムのシャットダウンは進行中のシステム・コールを中
断し、それにより一貫性のなさ(以下「非一貫性」とい
う。)を導入し得るので、ファイル・システム(複数)
は、それらを用いることができる前に、チェックされね
ばならない。最初にファイル・システムをチェックする
ことなしにファイル・システムをマウントし且ついずれ
の非一貫性を修復することは、「パニック」即ちデータ
の破壊を生じさせ得る。チェックはファイル・システム
のメタデータを読出して検証することを必要とするの
で、チェックは大きなファイル・システムにとって比較
的遅いオペレーションである。本発明を利用すると、未
完成のシステム・コールからの変化が棄てられるので、
ファイル・システムをブート時にチェックする必要がな
い。その結果、オン-ディスク・ファイル・システム・
データ構造は常に一貫性が保たれること、即ち該構造は
無効のアドレス又は値を含まないことが保証される。唯
一の例外は、システムが破壊する一方、ディレクトリ・
エントリーなしでオープンしているがリンク解除された
ファイルがあるならば、フリー・スペースが一時的に失
われるかも知れないことである。カーネル・スレッドは
最終的にこのスペースを再利用(reclaim)す
る。
【0012】本発明はまた、同期書込み性能を、書込み
操作の数を低減してディスク・シーク時間を排除するこ
とにより改善する。デルタ(複数)がファイル・システ
ム・ブロック全体を再書込みするよりむしろログに記録
されるので、書込みはより小さい。更に、関連の更新が
単一の書込み操作に一緒にグループ化されるので、ブロ
ックが一層少なくなる。ログへの書込みが順次的である
ので、ディスク・シーク時間は著しく低減される。
【0013】本発明の特定の実施形態に関して本明細書
に記述されるように、UFSオンディスク・フォーマッ
トが維持され、またロギングを既存のUFSファイル・
システムへ加えるための変更が必要とされず、その結果
該ログが標準のUFSへ戻るため除去され得る。更に、
UFSユーティリティは以前のように動作し続け、ファ
イル・システムはブート時に一貫性についてチェックさ
れる必要がない。ドライバは、ログを走査し、そこに記
録されたいずれの完了したトランザクションを表すため
ログの内部状態を再構築しなければならない。ログを走
査するのに費やす時間は、ログ装置のサイズに依存する
が、ファイル・システムのサイズには依存しない。合理
的に予見し得る形態の選択のため、ファイル・システム
容量のギガバイト当たり平均1〜10秒の走査時間に出
会い得る。
【0014】ファイル・システム更新が一緒にグループ
化されロギング装置に順次書込まれるので、NFS書込
み、及びO SYNCによりオープンされたファイルへ
の書込みは一層早くなる。これは、より少ない書込み
と、シーク時間が大きく低減することを意味する。著し
く改善されたスピードアップは、中央処理装置(「CP
U」)のオーバーヘッドのほぼ50%以上を費やせば期
待し得る。また、ファイル・システム更新が一緒にグル
ープ化されロギング装置に順次書込まれるので、NFS
ディレクトリ・オペレーションは一層早くなる。更新の
ロギングがsync()、fsync()、又は同期フ
ァイル・システム・オペレーションまで任意に遅延され
得るので、ローカルなオペレーションもまたより早くな
る。ロギング装置が存在しないならば、ディレクトリ・
オペレーションは通常のように同期して完了し得る。
【0015】マスター又はロギング装置への書込みが進
行中である間にパワー故障が発生するならば、最後のデ
ィスク・セクターに書込まれた内容が予測不可能であ
り、そして読出し不能ですらあり得る。本発明のログ
は、ファイル・システムのメタデータがこれらの状況下
で失われないように設計される。即ち、ファイル・シス
テムは、パワー故障にも拘わらず一貫性を維持する。本
明細書において詳細に説明される特定の実施形態におい
て、ユーザは、標準のMDDユーティリティを用いてメ
タトランス装置をセットアップして管理し得る一方、m
etainit(lm)、metaparam(lp)
及びmetastat(lm)コマンドは小さい拡張を
有する。従って、学習のための新しいインターフェース
がなく且つマスター装置及びロギング装置が一緒に単一
のディスク装置のように振る舞うので、使用は単純化さ
れる。更に、2以上のUFSファイル・システムが同一
のロギング装置を同時に使用できる。これは、システム
管理を或る状況で単純化する。
【0016】従来のUFSの実施においては、ファイル
・システムはディスク・パーティションを占有し、ファ
イル・システム・コードは読出し及び書込みコマンドを
ディスクのための装置ドライバへ発行することにより更
新を実施する。本発明の拡張により、ファイル・システ
ム情報はメタトランス装置と呼ばれる論理装置に格納さ
れ得て、その場合、カーネルは、ディスク・ドライバの
代わりにメタトランス・ドライバと通信する。既存のU
FSファイル・システム及び装置は変化なしに使用され
続け得る。
【0017】本発明の前述及び他の特徴及び目的及びそ
れらを達成する要領は、添付の図面と関連する好適実施
形態の以下の記述を参照することにより、より一層明ら
かになり、本発明自体が最良に理解されるであろう。
【0018】
【発明の実施の形態】本発明が用いられる環境は、一般
の分散コンピューティング・システムであって、汎用コ
ンピュータ、ワークステーション、又はパーソナル・コ
ンピュータが、クライアントサーバー構成において種々
のタイプの通信リンクを介して接続され、そこにおいて
プログラム及びデータ、多くはオブジェクトの形態であ
るが、これらが、システムの他のメンバーにより実行及
びアクセスされるためシステムの広範囲のメンバーによ
り利用される分散コンピューティング・システムを含
む。汎用ワークステーション・コンピュータの一部の要
素が図1に示され、プロセッサ1は入力/出力(「I/
O」)セクション2と、中央処理装置(「CPU」)3
と、メモリー・セクション4とを有するよう示されてい
る。I/Oセクション2は、キーボード5、ディスプレ
イ・ユニット6、ディスク記憶ユニット9及びコンパク
ト・ディスク読出し専用メモリー(「CDROM」)ド
ライブ・ユニット7と接続されている。CDROMユニ
ット7は、通常プログラム10及びデータを含むCDR
OM媒体8を読出すことができる。本発明の装置及び方
法を実行するための機構を含むコンピュータ・プログラ
ム製品が、かかるシステムのメモリー・セクション4
に、又はディスク記憶ユニット9上に、又はCDROM
媒体8上に存在し得る。
【0019】ここで図2を参照するに、本発明を実施す
るためのアーキテクチャ20を単純化して表した図が、
例えば、ユーザ(又はシステム・コール)層22とカー
ネル24とを有するSystem VベースのUNIX
オペレーティング・システムと関連して示されている。
以下により十分に説明されるであろうユーザ層22(即
ち、MDD3及びマウント・ユーティリティ28)及び
カーネル24(即ち、UFS層30)の部分の修正によ
り、本発明は、メタトランス・ドライバ32の形態のメ
タトランス層26に、トランザクション層34、ロール
・コード36、回復コード38及び関連のログ(又は、
ジャーナル)・コード40を追加することにより主とし
て実施される。
【0020】MDD3ユーティリティは、メタトランス
・ドライバ32を管理し、その状態をセット・アップ
し、ティア・ダウン(tear down)し、且つ与
える。マウント・ユーティリティは、遅延されたディレ
クトリー更新の機能(feature)をディスエーブ
ルする新しい機能(feature)(「−syncd
ir」)を含む。UFS層30は、メタトランス・ドラ
イバ32と、マウントで、及びマウント解除(unmo
unt)で、及びファイル・システムのシステム・コー
ルをサービスするときにインターフェースする。主要な
メタトランス・ドライバ32はベースMDD3ドライバ
とインターフェースし、トランザクション層34は、主
要なメタトランス・ドライバ32とインターフェース
し、またUFS層30とインターフェースする。ロール
・コード36は、完了されたトランザクションをマスタ
ー装置へロールし、またメタトランス・ドライバ32の
種々のピース(pieces)からデータを組み合わせ
ることにより読出しリクエストを満足させる。回復コー
ドは、以下でより十分に説明されるように、ログを走査
し、ログ・マップを再作成し、一方ログ・コードは、バ
イト・ストリーム装置を備えるオペレーティング・シス
テムの上部層を提供し、部分的なディスク・ドライブ書
込み操作を検出する。
【0021】ここで更に図3を参照すると、本発明のア
ーキテクチャの主要構成要素が非常に詳細に示されてい
る。UFS層30は、VOP又はVFSインターフェー
ス42を介してエンターされる。UFS層30は、ファ
イル・システムのデータのインコア・コピー(inco
re copies)を変えることによりファイル・シ
ステムを変える。インコア・コピーはバッファー又はペ
ージ・キャッシュ41に保持される。インコア・コピー
に対する変化は、デルタ(複数)43と呼ばれる。UF
Sは、トランスオプス(transops)・インター
フェース45をメタトランス装置32に対して用いるこ
とにより、メタトランス・ドライバ32にどのデルタ4
3が重要であるかを告げる。
【0022】UFS層は各デルタ43後の書込みを強制
しない。そうするのは著しい性能の損失であろう。代わ
りに、変えられたバッファー及びページが、デルタ43
を生じさせたVOP又はVFSインターフェース42の
コールの終わりで通常のシステム活動により、又はIT
Sによりプッシュされる。概略図示されているように、
メタトランス・ドライバ32は、カーネル24の上部層
に対する単一ディスク装置のように見える。内部的に
は、メタトランス・ドライバ32は、2つのディスク装
置、即ちマスター装置44とログ装置46とから構成さ
れている。メタトランス装置32への書込みがマスター
装置44へbdev strategyを介して通され
るか、又はデルタ43がリクエストに抗してトランスオ
プス・インターフェース45を介して記録されてしまっ
た場合データの変えられた部分が書込みバッファー50
の中にコピーされ、ログ・スペースを割り当てられ、リ
クエストがバイオダンド(biodone’ed)され
るかいずれかである。デルタ43は、デルタ・マップ4
8からログ・マップ54へこのプロセスにおいて移動さ
れる。
【0023】ITSがVOP又はVFS層42のコール
の終わりでコミット(図示せず)を発行するとき、又は
書込みバッファー50が一杯になるとき、書込みバッフ
ァー50はログ装置46へ書込まれる。どのVOP又は
VFS層42のコールもコミットを発行するわけではな
い。ファイル(オープンされてないO SYNC(*n
ot* opened O SYNC))へのルックア
ップ又は書込みのような或るトランザクションは、書込
みバッファー50において単一トランザクションとして
単純に収集する。
【0024】読出しのためのデータが書込みバッファー
50、読出しバッファー52、マスター装置44及びロ
グ装置46のうちのいずれの組み合わせからも来ること
ができるので、メタトランス装置32を読出すことはや
や複雑である。コミットされたデルタ43からデータを
前方のマスター装置44へローリングすることは、マス
ター装置44への「書込み」が続く「読出し」として一
般に見える。相違は、データがまたバッファー又はペー
ジ・キャッシュ41から来ることができることである。
影響されたデルタ43はログ・マップ54から除去され
る。ロール/読出しコード・ブロック56は、マスター
装置44及びログ装置46へ、同様に書込みバッファー
50及び読出しバッファー52へ結合され、バッファー
又はページ・ドライバ58とインターフェースする。
【0025】ここで図4を参照するに、ブート・プロセ
スの早期に、オンライン:ディスクスート(On−li
ne:Disksuit)(「ODS」)状態データベ
ースが走査され、メタデバイスについてのインコア(i
ncore)状態が再び生成されることが分かる。各メ
タデバイスは、ユニット構造により表され、メタトラン
ス装置についてのユニット構造は、そのロギング装置ユ
ニット構造のアドレスを含み、またその逆でもある。メ
タトランス装置60ユニット構造は、mt unit
tであり、md trans.hにおいて定義される。
ロギング装置62ユニット構造は、ml unit
であり、またmd trans.hにおいて定義され
る。
【0026】ここで図5を更に参照するに、ロギング装
置62ユニット構造は、ul listによりアンカー
されたグローバルなリンクされたリストについて維持さ
れる。ロギング装置62を共用するメタトランス装置6
0についてのメタトランス装置60ユニット構造の各々
は、ロギング装置のユニット構造によりアンカーされる
リンクされたリスト上に保持される。
【0027】図6を更に参照するに、ユニット構造がセ
ット・アップされた後に、走査スレッドが各ロギング装
置62に対して開始される。走査スレッドは、ログ装置
62を走査しそのロギング装置62のためのログマップ
64を再作成するカーネル・スレッドである。ログマッ
プ64はmt map tであり、md trans.
hにおいて定義される。ログマップ64は、マスター装
置へロールされるのに必要であるログにおいて各デルタ
43に対してmapentry tを含む。マップ・エ
ントリー68は、読出し操作中の早いルックアップのた
めハッシュ・アンカー66(メタトランス装置、メタト
ランス装置オフセット)によりハッシュされる。性能を
向上させるため、マップ・エントリー(複数)68はま
た、それらがロール・インされるべき順序でリンクされ
たリストについて維持される。図7に概略図示されてい
るように、メタトランス装置60及びロギング装置62
のためのユニット構造は、ログマップ64(図3におけ
るログ・マップ54)のアドレスを含み、該アドレス
は、ハッシュされたマップエントリー70と全部のマッ
プエントリー72と関連される。
【0028】ここで図8をも参照するに、デルタマップ
74が各メタトランス装置60と関連されている。デル
タマップ74は、ファイル・システム・オペレーション
を備える変化についての情報を格納する。ファイル・シ
ステムは、タプル(マスター装置44についてのオフセ
ット、データのバイトの番号及びコールバック)を装置
により記録することにより、メタトランス装置60に上
記の変化(あるいはデルタ43)について知らせる。メ
タトランス装置60は、ハッシュ・アンカー76と共
に、デルタマップ74(図3におけるデルタ・マップ4
8)に格納されている各デルタ43に対してマップエン
トリー78を生成する。デルタマップ74は、ログマッ
プ64(図6〜図7)に似たmt map tであり、
同じストラクチャを有する。
【0029】図9をも参照するに、トランザクションの
終わりで、各マップ・エントリー68でもって記録され
たコールバックが、ログされたデータを含む「書込み」
の場合呼び出される。コールバックは、デルタ43と関
連したデータが書き込まれるようにするファイル・シス
テムにおける機能である。この「書込み」が、メタトラ
ンス・ドライバに現れると、ドライバは、書込まれてい
るバッファー80とデルタマップ74の中のデルタ43
との間のオーバーラップを検出する。オーバーラップが
ないならば、書込みは、マスター装置44(図3)上へ
通される。オーバーラップが検出されるならば、オーバ
ーラップするマップ・エントリーが、デルタマップ74
から除去され、下方のログマップ層へ通される。
【0030】ログマップ層は、デルタ43+データをロ
グの書込みバッファー50に格納し、マップ・エントリ
ーをログマップ64の中に置く。デルタ43についての
データがトランザクションの終わりの前に書込まれてし
まい、そして、もしそうならば、同じプロセスが続くこ
とに注目すべきである。一度データがログの書込みバッ
ファー50にコピーされると、バッファーはアイオダン
ド(iodone’ed)される。
【0031】デルタマップ74についてmt map
tアーキテクチャを用いる理由の一つは、ドライバがk
mem allocを用いることができないことであ
る。ログマップに現れ得る各エントリーに対するメモリ
ーは、バッファーがドライバに現れる前に割り当てられ
ることが必要である。デルタマップ74のデルタ43と
ログマップ64のエントリーとの間に1対1の対応があ
るので、デルタマップ・エントリー78がログマップ・
エントリー68と同じであるべきことは明らかである。
【0032】ここで図10を参照するに、ログされたデ
ータを含む「読出し」の類似の状況が示されている。分
かり得るように、ログマップ64はまた、読出し操作の
ため用いられる。読出されているバッファーがログマッ
プ64のいずれのエントリー68ともオーバーラップし
ないならば、「読出し」は、下方のマスター装置44へ
単純に通される。他方、バッファーがログマップ64の
中のエントリー68とオーバーラップするならば、バッ
ファーに対するデータは、マスター装置44からのデー
タとロギング装置46からのデータとの組み合わせであ
る。
【0033】図11及び図12を参照するに、マウント
時での状況が概略的に示されている。ブート・プロセス
の早期に、各メタトランス装置は、自身をUFSファン
クションufs trans setにより記録し、u
fstransストラクト(構造体)(ufstran
s struct)84を生成し、それをグローバルな
リンクされたリストにリンクする。マウント時に、ファ
イル・システムは、ufstransストラクト(uf
strans struct)86に格納されたdev
t(複数)に対してファイル・システムのdev
をチェックする。整合がある場合、ファイル・システム
は、ufstransストラクト86のアドレスをその
ファイル・システムの特別のパーマウント・ストラクト
(per−mount struct)ufsvfs9
0に格納する。ファイル・システムはまた、その総称的
なパーマウント・ストラクトvfs88をufstra
nsストラクト86に格納する。この活動は、moun
tfs()により、またufs trans ge
t()により達成される。vfs88のアドレスは、ア
ドレスが種々のコールバック機能により要求されること
のため、ufstransストラクト86に格納され
る。
【0034】ファイル・システムは、メタトランス・ド
ライバ32(図2〜図3)とufstransops9
2ストラクト(struct)においてエントリー・ポ
イントを呼出すことにより通信する。これらのエントリ
ー・ポイントは、始めオペレーション、終わりオペレー
ション及びデルタ記録機能を含む。共に、これらの3つ
の機能は、UFS層30オペレーションをトランザクシ
ョンするために必要とされる大量の作業を実施する。図
13は、先の図面に示され以下で更に十分に説明される
ような本発明のデータ構造の要約を提供する。
【0035】メタトランス装置、即ちメタトランス・ド
ライバ32は、下に在る2つの装置、即ちロギング装置
46とマスター装置44とを含む。これらの双方はディ
スク装置又はメタデバイスであり得る(しかしメタトラ
ンス装置ではない)。双方は、メタトランス・ドライバ
の制御の下にあり、ユーザ・プログラム又はシステムの
他のパーツにより一般に直接アクセス可能ではない。ロ
ギング装置46はジャーナル又はログを含む。ログは一
連の記録であり、その記録の各々はファイル・システム
(デルタ43)への変化を記述する。カレント(cur
rent)・アクティブ・vノード(vnode)・オ
ペレーションと対応するデルタ43の組はトランザクシ
ョンを形成する。トランザクションが完了すると、コミ
ット記録がログに置かれる。システムが破壊するなら
ば、ログに含まれたいずれのコミットされないトランザ
クションはリブートの際棄てられる。ログはまた、(例
えばNFSにより)同期書込みされてしまったユーザ・
データを含み得る。このデータをロギングすることは、
ファイル・システムの性能を改善するが、強制的ではな
い。十分なログ・スペースが利用できないならば、ユー
ザ・データはマスター装置44へ直接書込まれ得る。マ
スター装置44は、標準フォーマットのUFSファイル
・システムを含む。ファイル・システムを既に含む装置
がマスター装置44として用いられるならば、ファイル
・システムの内容は保存され、その結果、標準のUFS
から本発明の拡張へのアップグレードは直接的である。
メタトランス・ドライバは、マスター装置44を、完了
されたトランザクション及びユーザ・データにより更新
する。metaclear(lm)はメタトランス装置
32をディゾルブ(dissolve)し、その結果、
マスター装置44は、所望ならば、標準UFSと共に再
び用いられ得る。
【0036】メタトランス装置32は、従来の生(ra
w)インターフェース及びブロック・インターフェース
を提供し、通常のディスク装置のように振る舞う。個別
のトランザクション・インターフェースは、ファイル・
システム・コードがファイル・システム更新をドライバ
へ通信することを可能にする。装置の内容は、マスター
装置44の内容でログに記録されたデルタ43により修
正されたものから成る。
【0037】トランザクション・インターフェースを通
して、UFSは、ドライバに、何のデータがカレント
(current)・トランザクション(例えば、iノ
ード修正時間)において変わりつつあるかと、トランザ
クションが終了されるときとを知らせる。ドライバは、
更新されたデータを含むログ記録を構成し、それらをロ
グへ書込む。ログが十分に一杯になると、ドライバはそ
れを前方へロールする。ログ・スペースを再使用するた
め、ログに記録された完了されたトランザクションはマ
スター装置44へ与えられねばならない。トランザクシ
ョンにより修正されたデータがメモリーの中のページ又
はバッファーにおいて利用可能であるならば、メタトラ
ンス・ドライバはそれをマスター装置44へ単純に書込
む。さもなければ、データは、メタトランス装置32か
ら読出されねばならない。ドライバは、オリジナル・デ
ータをマスター装置44から読出し、次いでデルタ43
をログから読出し、更新されたデータをマスター装置4
4へ戻して書込む前にそれらオリジナル・データ及びデ
ルタ43を与える。本発明の譲受人であるSun Mi
crosystems,Inc.により開発されライセ
ンスが与えられたSunOS(登録商標)の有効なキャ
ッシングが、後者のケースをほんの稀に生じさせ、大部
分の場合、ログが順次書込まれ、少しも読出されない。
【0038】後続のオペレーションがそれらの効果を無
効にする(nullify)ので、UFSはまた先のデ
ルタ43を取り消し得る。この取り消しは、メタデータ
のブロック、例えば割当てブロックがフリーにされ、そ
の結果ユーザ・データとして再配置されるとき必要であ
る。取り消しなしに、古いメタデータに対する更新がユ
ーザ・データに対して誤って与えられるかも知れない。
【0039】メタトランス・ドライバは、ログの内容の
トラックを保ち、そのスペースを管理する。それは、ト
ランザクション及びデルタ43についてのデータ構造を
維持し、ログ記録をマスター装置44のロケーションと
関連させるマップを保持する。システムが破壊するなら
ば、これらの構造は、装置が用いられる(しかしコミッ
トされないトランザクションは無視される)次の時間に
ログから再構成される。ログ・フォーマットは、部分的
に書込まれた記録又は未使用のログ・スペースが有効な
トランザクション情報に対して間違えられることができ
ないことを保証する。カーネル・スレッドは、ログを走
査してメタトランス装置32についての最初の読出し又
は書込みの際マップを再構成するため生成される。デー
タ転送は、I/Oを必要としないドライバ・オペレーシ
ョンが処理し得るにも拘わらず、カーネル・スレッドが
完了するまで中止される。
【0040】本発明の主要な便益の1つは、メタデータ
をパワー故障による破壊に抗して保護することである。
これは、メタトランス・ドライバがパワー故障時にデル
タ43をマスター装置44に与えている場合ログの内容
に拘束を課する。この場合、更新されつつあるファイル
・システム・オブジェクトは、部分的に書込まれ、又は
破壊すらされ得る。ログからのオブジェクトの全体の内
容は、依然回復されねばならない。これを達成するた
め、ドライバは、オブジェクトがマスター装置44に書
込まれる前にオブジェクトのコピーがログにあることを
保証する。
【0041】メタトランス装置32は、他の種類の媒体
障害を訂正することを試みない。例えば、ロギング装置
46の書込み又はその読出し中の装置エラーは、メタト
ランス装置32を例外の状態に置く。メタトランス装置
32の状態は、MDDデータベースに保持される。エラ
ーが発生するときとそのエラーの種類とに基づく種々の
例外状態がある。
【0042】メタトランス・ドライバ32の構成は、標
準のMDDユーティリティを用いて実施され得る。MD
Dの動的な連結機能(feature)はマスター装置
44及びロギング装置46の双方の動的な拡張を可能に
する。装置の構成及び他の状態情報は、MDD状態デー
タベースに格納され、該データベースは複写及び持続性
をリブートにまたがって提供する。情報を格納するのに
必要とされるスペースは比較的小さく、メタトランス装
置32当たり1ディスク・セクターのオーダーである。
【0043】本発明の特定の実施においては、UFS
は、ファイル・システムがメタトランス装置32上にマ
ウント時に存在するかをufs trans ge
t()を呼び出すことによりチェックする。ファイル・
システムがメタトランス装置32上にないならば、この
機能はヌル(NULL)を返し、さもなければ、該機能
はメタトランス装置32を識別するハンドルを返す。こ
のハンドルは、後続のトランザクション・オペレーショ
ンにおいて使用のためマウント構造にセーブされる。フ
ァンクションTRANS BEGIN()及びTRAN
END()は、トランザクションの始めと終わりを
指示する。TRANS DELTA()はログされねば
ならないファイル・システムに対する変化を識別する。
TRANS CANCEL()は、ファイル・システム
・データ構造がリサイクルされつつある又は棄てられつ
つあるので先にログされたデルタ43が取り消されるべ
きであることを指示する。
【0044】ファイル・システム・チェック(「fsc
k」)・ユーティリティが本発明に従ってファイル・シ
ステム上でランされるとき、該ファイル・システム・チ
ェック・ユーティリティは、スーパーブロックの中のフ
ァイル・システムのクリーン・フラグをチェックし、フ
ァイル・システム装置をioctlコマンドを介して問
い合わせる。スーパーブロックと装置の双方が、ファイ
ル・システムがメタトランス装置32上にあることに同
意し且つ装置がいずれの例外状態を報告しないとき、f
sckは更なるチェッキングをスキップすることができ
る。さもなければ、fsckはファイル・システムを従
来の要領でチェックする。
【0045】「クォータチェック(quotachec
k)」ユーティリティが本発明に従ってファイル・シス
テム上でランされるとき、該ユーティリティは、スーパ
ーブロックの中のシステムのクリーン・フラグをチェッ
クし、ファイル・システム装置をioctlコマンドを
介して問い合わせる。スーパーブロックと装置の双方
が、ファイル・システムがメタトランス装置32上にあ
ることに同意し且つ装置がいずれの例外状態を報告しな
いとき、クォータチェックはクォータ(quota)・
ファイルを再作成する必要がない。さもなければ、クォ
ータチェックは、従来の要領でファイル・システムのた
めクォータ・ファイルを再作成する。
【0046】本発明のロギング機構は、失われたフリー
・スペースを除いて、ファイル・システムの一貫性を保
証する。ファイル・システムが下へ行くときオープンし
ているが削除されるファイルがある(即ち、いずれのデ
ィレクトリ・エントリーにより言及されない)ならば、
これらのファイルによりクレーム(claim)された
ファイル・システム資源は一時的に失われる。カーネル
・スレッドは、これらの資源をサービスを中断すること
なく再利用(reclaim)する。性能の最適化とし
て、ファイル・システムのスーパーブロックにおける先
に未使用のフィールドfs sparecon[53]
は、この種のいずれかのファイルが存在するかを指示す
る。所望ならば、fsckは、失われたスペースを直ち
に再利用することができ、fs sparecon[5
3]はfs reclaimと名前が付け直される。
【0047】ディレクトリが、ローカルなアプリケーシ
ョンにより、あるいはクライアント−サーバー・コンピ
ュータ・システムにおける遠隔のクライアントのためラ
ンするデーモンにより変化させられ得る。標準のUFS
インプリメンテーションにおいて、遠隔の及びローカル
の双方のディレクトリの変化は同期してなされ、即ちデ
ィレクトリへの更新は、リクエストがアプリケーション
又はデーモンに戻る前にディスクに書込まれる。ローカ
ルなディレクトリ・オペレーションは同期しており、そ
のためファイル・システムは、ブート時に自動的に修復
され得る。NFSプロトコルは、同期ディレクトリ・オ
ペレーションを必要とする。本発明の技術を用いて、遠
隔のディレクトリの変化は、同期してなされるが、しか
しローカルなディレクトリの変化は、メモリーに保持さ
れ、sync()、fsync()又は同期ファイル・
システム・オペレーションがそれらの変化を追い出すま
でログへ書込まれない。その結果、システムが破壊する
がしかしファイル・システムは一貫性の有る状態のまま
であるならば、ローカルなディレクトリの変化を失うこ
とができる。ローカルなディレクトリの変化は命令され
たままである。
【0048】ローカルなディレクトリの更新をメモリー
の中に保持することは性能を非常に改善する。これは、
完了されたディレクトリ・オペレーションが今消滅しシ
ステムの破壊が続くかも知れないので、ファイル・シス
テムの意味(sematics)に変化を導入する。し
かしながら、古い振る舞いは、いずれの標準により指示
(mandate)されず、たとえあるとしてもアプリ
ケーションの少ししか該変化による影響を受けないこと
が期待される。この特徴は、例えばVeritas、E
pisode、Ousterhout及びMendel
blumのログ構造化ファイル・システムのような従来
のファイル・システムにおいて実現される。ユーザは、
同期したローカルなディレクトリの更新に任意に戻るこ
とができる。
【0049】MDD初期化ユーティリティmetain
it(lm)は、以下の形式の構成ラインを受け入れる
ため拡張され得る。 mdNN −t master log [−n] ここで、 mdNN メタトランス装置を表すメタデバイスの
名前 master マスター装置;メタデバイス又は通常の
ディスク装置 log ログ装置;メタデバイス又は通常のディ
スク装置。同じログが多重メタトランス装置において用
いられ得て、その場合その同じログはそれらの多重メタ
トランス装置の間で共用される。
【0050】メタスタット(metastat)はま
た、メタトランス装置の状態を表示するため、以下のフ
ォーマットを有して拡張され得る。 mdXX: metatrans device Master device:mdYY Logging device:mdZZ <state information> mdYY: metamirror,master device for mdXX <usual status> mdZZ: mtamirror,logging device for mdXX <usual status> ( mdXX: メタトランス装置 マスター装置:mdYY ロギング装置:mdZZ <状態情報> mdYY: メタミラー、mdXXのためのマスター装置 <通常の状態> mdZZ: メタミラー、mdXXのためのロギング装置 <通常の状態> ) fsckは、クリーン・フラグの状態に基づいてシステ
ムをチェックすべきか判断する。本明細書において記載
される本発明の特定のインプリメンテーションは、新し
いクリーン・フラグ値FSLOGを定義する。クリーン
・フラグがFSLOGであり且つメタトランス装置32
が例外状態でないならば、「fsck−m」は0を持っ
て出て(exit)、チェッキングはスキップされる。
さもなければ、クリーン・フラグは、従来の要領で扱わ
れる。fsckは、プロジェクト−プライベイトioc
tlリクエストによりメタトランス装置32の状態をチ
ェックする。ファイル・システムを首尾良く修復して
後、fsckは、メタトランス装置32を例外状態から
取り出すプロジェクト−プライベイトioctlリクエ
ストを発行する。
【0051】クリーン・フラグがFSLOGであり且つ
メタトランス装置32が例外状態にないならば、クォー
タチェックはファイル・システムをスキップする。さも
なければ、クォータチェックは、クォータファイル(q
uotafile)を従来の要領で再作成する。クォー
タチェックは、メタトランス装置32の状態をプロジェ
クト−プライベイトioctlリクエストによりチェッ
クする。首尾良くファイル・システムを修復して後は、
クォータチェックは、メタトランス装置32の例外状態
をリセットするプロジェクト−プライベイトioctl
リクエストを発行する。
【0052】ufs mountプログラムは、遅延さ
れたディレクトリ更新を用いるべきか否かを制御をする
ため1対の新しいオプションを受け入れ得る。ヘッダー・ファイル <sys/fs/ufs inode.h>struc
t ufsvfsは、メタトランス装置を識別するため
struct metatransに対するポインター
を含み得る。i doffがstruct inode
に追加される。 <sys/fs/ufs quota.h>struc
t dquotは新しいフィールドdq doffを有
し得る。 <sys/fs/ufs fs.h>新しいクリーン・
フラグ値FSLOGがここで定義される。fs spa
recon[53]はfs−reclaimと名前を付
け直される。 <sys/fs/ufs trans.h> <sys/md trans.h>これらは、プロジェ
クト−プライベイト・インターフェース、例えばメタト
ランスioctiコマンド及びデータ構造を規定する新
しいヘッダー・ファイルである。カーネル・インターフェース common/fs/ufs/*.c フラグがローカル及び遠隔のアクセスを区別するためデ
ィレクトリVOPコールに加えれらないならば、UFS
へのVOP及びVFSインターフェースは変化する必要
がない。 common/vm/page lock.c 以下のファンクションは、ページ: page io
lock ()、page io unlock
()、及びpage io trylock utp
age io assert()への条件付きのアクセ
スを可能にする。 common/vm/vm pvn.c 以下のファンクションは、先のファンクション:pvn
io doneを用いて獲得されるページの解放を可
能にする。 common/os/bio.c 新しいファンクションtrygetblk()がbi
o.cに追加される。このファンクションは、バッファ
ーが特別の装置及びブロック番号に対して存在するかを
チェックし、直ちに書込みを使用可能にする。これらの
条件が満たされるならば、上記のファンクションはポイ
ンターをバッファー・ヘッダーへ返すか、それらの条件
が満たされないならば該ファクションはヌル(NUL
L)を返す。
【0053】スレッド−特別データ(thread−s
pecific data)(「TSD」)がテストの
ため利用され得る。ファイル・システム・オペレーショ
ンにおいて各デルタ43は、該デルタ43を生じている
スレッドと関連される。
【0054】UFSマウントは、ufsvfsフィール
ドvfs transの中のufs trans get
()により戻された値を格納する。ヌル(NULL)値
は、ファイル・システムがメタトランス装置32からマ
ウントされないことを意味する。UFSはこの場合通常
のように機能する。非ヌル(Non−NULL)値は、
ファイル・システムがメタトランス装置からマウントさ
れることを意味する。この場合は: a) オンディスク・クリーン・フラグがFSLOGへ
セットされ、更に、クリーン・フラグ・プロセスがイン
コア(in−core)・クリーン・フラグをFSBA
Dへセットすることによりディスエーブルされる。クリ
ーン・フラグ・プロセスをディスエーブルすることがC
PUオーバーヘッドをセーブする。
【0055】b) 「nosyncdir」マウント・
オプションが特定されないならば、DIOフラグがセッ
トされる。ローカルなディレクトリ更新が遅延された書
込みにより記録される。破壊がこれらのオペレーション
を失うことを可能にする。遠隔のディレクトリ・オペレ
ーションは同期したままである。ディレクトリ・オペレ
ーションは、T DONTPENDがcurthrea
d−>t flagにセットされるとき、遠隔であると
見做される。
【0056】c) 例外ルーチンがメタトランス装置3
2にマウント時に登録(register)される。メ
タトランス・ドライブは、例外条件が発生するときこの
ルーチンを呼出す。例外条件は、装置エラーと、ドライ
バの状態の中の検出された不一致とを含む。UFS例外
ルーチンは、影響を及ぼされるファイル・システムをハ
ード・ロック(hard lock)するカーネル・ス
レッドを始める。
【0057】各UFS Vnode又はVFSオペレー
ションは、1つ以上のトランザクションを発生し得る。
トランザクションはネストされ得る。即ち、トランザク
ションは、その中に全体的に含まれるサブトランザクシ
ョンを含み得る。ネストされたトランザクションは、オ
ペレーションが他のオペレーションをトリガーするとき
生じる。典型的には、各UFSオペレーションは、それ
と関連する1つのトランザクション(プラスいずれかの
ネストされたトランザクション)を有する。しかしなが
ら、単一のトランザクションがロギング装置46の全体
のサイズを越えるとき、VOP WRITEやVFS
SYNCのような特定のオペレーションが多重のトラン
ザクションに分割される。VOP CMPやVOP
DDMAPのような他のものは、それらがファイル・シ
ステム状態を決して変えないので、何のトランザクショ
ンも発生しない。ファイル・システムを直接変えない一
部のオペレーションは、トランザクションを副作用の結
果として発生し得る。例えば、VOP LOOKUP
は、dnlc又はiノード・キャッシュにおいてエント
リーを置換し、イン−コア・iノードを非活動になら
せ、それらと関連するページがディスクに書込まれるよ
うにし得る。
【0058】トランザクションは、TRANS BEG
IN ()に対するコールにより始まる。トランザクシ
ョンは、TRANS ENDが呼出されると終了する。
トランザクションはデルタ43から構成され、該デルタ
43はファイル・システムのメタデータへの更新であ
る。メタデータは、スーパーブロック、サマリー情報、
シリンダー・グループ、iノード、割当てブロック及び
ディレクトリーである。UFSは、TRANS DEL
TA ()を呼出すことによりメタトランス装置32に
対するデルタ43を識別する。このコールは、ログされ
るべきバッファー内でバイトの領域を識別する。これら
のバイトは、バッファーが書込まれるときログされる。
UFSは、しばしば同じメタデータを単一のオペレーシ
ョンのため何度も変更する。デルタ43の宣言をデルタ
43のロギングから分離すると、多重更新は1つのデル
タ43へ縮小(collapse)する。
【0059】UFSは、ユーザ・データのためのディス
ク・ブロック及び割当てブロックを同じフリー・プール
から得る。その結果、ユーザ・データは、ある早期の時
点にメタデータを含んだディスクの場所を占有し得る。
ログ設計は、回復中、ユーザ・データがデルタ43によ
り前のメタデータへ不正確に更新されないことを保証し
なければならない。UFSは、ブロックがユーザ・デー
タに対して割り当てられるときは常に、TRANS
ANCEL()を呼出すことにより上記のことを防ぐ。
【0060】生の(raw)又はブロックのメタトラン
ス装置32への書込みは、ログに記録された情報を無効
にすることができる。不一致を回避するため、ドライバ
はこれらの書込みをトランザクションする。
【0061】ロギング装置46は、同期書込みを一緒に
バッチ化(batch)することにより、且つバッチ化
されたデータをロギング装置46に順に書込むことによ
り同期書込み性能を増大させる。データは、マスター装
置44に同時に非同期で書込まれる。ログに記録された
同期書込みデータは、トランザクションに組織化(or
ganize)されない。メタトランス装置32は、フ
ァイル・システム・レベルでの介入なしに同期書込みを
透過的にログする。同期書込みされるユーザ・データ
は、ログの中に十分なフリー・スペースがないときログ
されない。この場合、マスター装置44への通常の同期
書込みが行われる。
【0062】同期書込みデータがログされるとき、ディ
スクの同じ場所に対するいずれの早期のログ記録は、回
復中又はロール−フォワード(roll−fowar
d)中のデータに対して正しくない変更をすることを回
避するため取り消されねばならない。データのマスター
装置44への非同期書込みが終わると、メタトランス・
ドライバが行ったルーチンは、ログされるべきアイテム
のリスト上に取り消し記録を置く。同じディスク場所へ
の後続の同期書込みに対して、上記の記録をログへフラ
ッシュし先の書込みを取り消す同期コミットが続く。同
じディスク場所への後続の非同期の書込みは、それらに
sync ()、fsync ()あるいは更に同期更
新が続かなければ、リブートで消滅する。このスキーム
の正しさは、UFSがディスク場所への新しい書込みを
開始しないで一方先の書込みが依然進行していることに
依存する。
【0063】マスター装置44は、ログの中のコミット
された変化により周期的に更新される。ログのヘッドで
記録された変化は最初ロールされる。3つの実施処置
(performance measure)がログの
ローリングのオーバーヘッドを低減する。第1に、ドラ
イバは、必要とされたデータがバッファー・キャッシュ
及びページ・キャッシュのいずれかにおいて利用可能で
あるとき、ログの読出しを回避する。2つの新しいルー
チンtrygetblk()及びufs trypag
e()が、スリーピングすることなしにバッファー・ヘ
ッダー又はページを返す。即ちそれらはヌル(NUL
L)を返す。第2に、オーバーラップするデルタ43が
取り消される。ログが同じデータのための多重更新を含
むならば、必要とされる最小の組のみがログから読出さ
れ与えられる。第3の処置は、トランザクションされな
い同期書込みデータを関連させる。このデータは、ロギ
ング装置46へ同期書込みされ、マスター装置44へ非
同期で書込まれる。ロール論理は単純に非同期書込みが
完了するのを待つ。
【0064】ローリングは、メタトランス・ドライバに
より開始される。ロギング装置46が一杯になると、メ
タトランス・ドライバはログをカレント・スレッドのコ
ンテキストにおいて直ちにロールする。さもなければ、
メタトランス・ドライバは、ローリングが効率的であり
且つそれがカーネル・スレッドを開始する時をヒューリ
スティックに(heuristically)決定す
る。この場合に対する明らかなヒューリスティック(h
euristic)は、メタトランス・ドライバが数秒
間アイドル状態にある時である。ログは、fsyn
c()、sync()あるいはマウント解除で前方へロ
ールされず、メタトランス装置32がmetaclea
r(lm)ユーティリティによりクリアされるときロー
ルされる。
【0065】メタトランス装置32は、データの損失を
生じ得るエラーが発生する場合それ自身例外状態に置
く。この状態において、メタトランス装置32は、装置
に対する登録された全部の「コールバック−オン−エク
セプション(callback−on−excepti
on)(例外時コールバック)」ルーチンを呼出して後
に、各読出し又は書込みの際にEIOを戻す。
【0066】UFSは、コールバック用ルーチンをマウ
ント時に登録する。UFSルーチンは、影響を受けたU
FSファイル・システムをハード・ロックするカーネル
・スレッドを開始させ、手動の回復を可能にする。通常
の手順は、ファイル・システムをマウント解除し、エラ
ーを固定し、fsckをランすることである。fsck
は、それがファイル・システムを修復して後に、装置を
例外状態から取り出す。次いで、ファイル・システムは
マウントされ得て、ファイル・システムは正常の通り機
能する。ファイル・システムが、マウント解除され、次
いでfsckをランすることなく再びマウントされるな
らば、装置へのいずれの書込みはEIOを戻すが、必要
とされるデータがアクセスされ得るならば、読出しは進
行する。
【0067】UFSはログ・スペースを使い尽くす必要
はなく、もしメタトランス・ドライバが不十分なログ・
スペースのためトランザクションをコミットすることが
できないならば、メタトランス・ドライバはその条件を
致命的な例外として扱う。UFSは、特定のオペレーシ
ョンを必要なとき多重トランザクションに分割すること
により上記の状況を回避する。UFSフラッシュ・ルー
チンは、全てのufs syncip ()又はVOP
PUTPageコールに対してのトランザクションを生
成する。フラッシュ・ルーチンは、ufs flush
i()、ufs iflush ()及びufs fl
ush icache ()である。影響を受けたUF
Sオペレーションは、VFS Syncと、VFS
NMOUNTと、UFS ioctls FIOLF
S、FIOFFS及びFIODIOとである。VOP
WRITEオペレーションは、ufs write
()における多重rwip ()コールに分割され
る。
【0068】ファイルをufs iinactive
()においてフリーにすることは、トランザクションの
衝突と再帰的なUFSオペレーションとを伴うデッドロ
ック問題のため多重トランザクションに分割されること
ができなく、そしてファイルをフリーにすることが、デ
ッドロックの機会が存在しなくなるまで遅らされる。
【0069】メタトランス・ドライバは、ブートにおい
てオープンしていて削除されるファイルにより保持され
る資源を回復しない。代わりに、UFSはこの問題を管
理する。マウント時に生成されたカーネル・スレッド
が、以下の場合に削除されたファイルに対して走査す
る。該以下の場合とは a) ファイル・システムがメタトランス装置32にあ
るか、又は b) スーパーブロックが、削除されるファイルがある
と言う。スーパーブロックにおける先に用いられていな
いスペアにおけるビットがいずれかのかかるファイルが
存在するかを指示する。
【0070】メタトランス装置32ドライバは、3つの
クラスのエラー、即ち「装置エラー」、「データベース
・エラー」及び「内部エラー」を扱う。装置エラーは、
ロギング装置46又はマスター装置44の読出しあるい
は書込みにおけるエラーである。データベース・エラー
は、MDDのデータベース・ルーチンにより報告される
エラーである。内部エラーは、ロギング装置46上へ書
込まれるストラクチャを含む内部ストラクチャにおいて
検出される不一致である。
【0071】マウントされたメタトランス装置32は、
エラーに対して2つの方法の一つで応答する。メタトラ
ンス・ドライバは、いずれの他の作用なしでコーラー
(caller)までデータの完全性との妥協をしない
エラーを通す。例えば、この種のエラーは、ログされな
いデータをマスター装置44から読出している間に生じ
得る。エラーが、失われた又は破壊されたデータ、例え
ばロギング装置46の誤り読出し又は書込み、あるいは
MDDのデータベース・ルーチンからのエラーをもたら
し得るときは常に、メタトランス装置32は、それ自身
を例外状態に置く。メタトランス装置32は、それ自身
を例外状態に以下の状況により置く。該以下の状況とは
次の通りである。
【0072】a) 可能なとき例外をMDDのデータベ
ースに記録する。
【0073】b) いずれの登録された「コールバック
−オン−エクセプション」ルーチンを呼出す。これらの
ルーチンはマウント時に装置により登録される。UFS
は、影響を受けたUFSファイル・システムをハード・
ロックするカーネル・スレッドを開始するルーチンを登
録する。これらのファイル・システムは、マウント解除
され得て、次いで例外条件が訂正された後に再マウント
(remount)され得る。
【0074】c) 各読出し又は書込みコールに対して
EIOを戻す一方、メタトランス装置32がマウントさ
れる。
【0075】メタトランス装置32がマウント解除時に
ufs trans put ()でもってUFSによ
り解放された後に、読出しは、必要とされるデータがア
クセスされ得ないときEIOを戻し、書込みは、常にE
IOを戻す。この振る舞いは、メタトランス装置32が
再びマウントされた後でさえ継続する。
【0076】fsckがファイル・システムを修復する
とき、fsckはメタトランス装置32をその例外状態
から取り出す。fsckは、ログを第1のエラーまでロ
ールし該ログの残余を棄て且つ装置を書込み可能にする
プロジェクト−プライベイトioctlを最初に発行す
る。ファイル・システムを修復した後に、fsckは、
装置をその例外状態から取り出すプロジェクト−プライ
ベイトioctlを発行する。ブート時に、ロギング装
置46が走査され、メタトランス装置32の内部状態が
再構築される。走査中の装置エラーは、メタトランス装
置32を例外状態に置く。該走査は可能ならば継続す
る。中断(interrupt)された書込みから生じ
る読出し不能のセクターは、それを書き直すことにより
修復される。メタトランス装置32は、例外状態に置か
れない。
【0077】ロール・フォワード・オペレーションは、
ロギング装置46を走査し内部状態を再構築する間に起
こり得る。ロール・フォワード・オペレーションは、マ
ップ・メモリーがそのリコメンドされた割当てを越え得
るので起こる。これらのロール・フォワード・オペレー
ション中のエラーは、メタトランス装置32を例外状態
に置き、走査は可能ならば継続する。
【0078】ローカルなディレクトリ更新の遅延された
記録は性能を改善することができることが分かる。ロー
カルと遠隔の(NFS)ディレクトリ・オペレーション
の双方を区別する2つの機構が実施され得る。即ち、 a) UFSは、procストラクチャのp asメン
バーを検査することができる。(もしそれがヌルならば
コーラーはシステム・プロセス、多分NFSである。さ
もなければ、オペレーションは、ユーザ−レベル・プロ
セスにより開始されてしまいローカルであるとされる。
【0079】又は、 b) UFSは、オペレーションが同期しなければなら
ないか否かを指定するディレクトリのため、新しいフラ
グをVnodeオペレーションに加えることができる
(又は新しいフラグをスレッド構造へ加えることができ
る)。
【0080】オープンしているが削除されるファイルと
関連する資源は、システムの破壊の後再利用されねばな
らなく、そして本発明はこの目的のためスレッドを含
む。しかしながら、かかるファイルに対してファイル・
システム全体を常に探索するスレッドは、2つの不利、
即ち、探索のオーバーヘッドと、スペースが見つけられ
且つ回復されるまでの有り得る顕著な遅延とを有する。
代替は、スーパーブロックにおけるスペア・フィールド
を用いてかかるファイルの無いケースを最適化すること
であり、そのケースはかなり共通に発生しそうである。
【0081】FIOSDIO ioctlは、UFSフ
ァイル・システムを遅延されたIOモードに置く。該遅
延されたIOモードは、ローカルなディレクトリ更新が
ディスクへ遅延された書込みにより書込まれることを意
味する。遠隔ディレクトリ更新は、NFSプロトコルに
より要求されるように、同期したままである。このモー
ドは、ディレクトリ・オペレーションを非常に早くする
が、しかし本発明なしではそれは安全でなく、DIOモ
ードにおけるファイル・システムの修復はユーザの介入
を通常必要とする。本発明のロギング機構はその危険を
改善する。ディレクトリ更新性能を改善するため、ファ
イル・システムは、「nosyncdir」マウント・
オプションが指定されないならば、遅延されたIOモー
ドに置かれ得る。しかしながら、遅延されたIOモード
の実施は、相当に変化し、解法は、FIOSDIOフラ
グの使用を回避し、その代わりに異なる特別のフラグを
使用することである。この特別のフラグは、新しいユー
ティリティ及びプロジェクト−プライベイトUFS i
octlにより管理される。新しいフラグは、スーパー
ブロックに格納され得て、又はMDDのデータベースに
格納され得る。次いで、FIOSDIO ioctl
は、本発明によりファイル・システムに何の影響を及ぼ
さない。メタトランス装置に対するUFSインターフェース メタトランス装置32が生成されるとき又はブートで再
び生成されるとき、メタトランス装置32は、それ自身
をUFSにより記録する。
【0082】
【表1】 devはメタトランス装置の番号である。dataはメ
タトランス−プライベイト・ストラクチャのアドレスで
ある。opsは分岐テーブルのアドレスである。
【0083】
【表2】 ufs trans setは、上記の情報を以下のも
のの単独にリンクされたリストに格納する。
【0084】
【表3】 ufs trans reset()は、ufstra
nsストラクチャをリンク解除しフリーにする。ufs
trans reset ()は、メタトランス装置
がクリアされたとき呼出される。
【0085】マウント時に、UFSは、ufstran
sストラクチャのアドレスをstruct ufsvf
sのvfs transフィールドに格納する。
【0086】
【表4】 ufs trans getは、ファイル・システムが
メタトランス装置32にないときヌル(NULL)を返
すならば、ufs trans onerrorは、致
命的な装置エラーが生じるときメタトランス装置32に
より呼出される。ufs trans onerror
stateは、メタトランス装置32のエラー状態の
一部として格納される。このエラー状態は、fsck及
びクォータチェックにより問い合わされてリセットされ
る。
【0087】UFSは、メタトランス装置をufstr
ansopsテーブルを介して呼出す。これらのコール
は、以下の複数のマクロ(macro)の内側に埋め
(bury)られる。
【0088】
【表5】
【表6】
【表7】 ufsvfsストラクト内のvfs transフィー
ルドの外に、新しいフィールドoff t i dof
fが*incore*inode,struct in
odeに加えられる。i doffは、ufs ige
t()にセットされる。i doffは、iノードのd
inodeに対する装置オフセットである。i dof
fは、TRANS INODE()マクロ及びTRAN
INODE ITEM()マクロに対するコードの
量を低減する。同様に、フィールドdq doffが、
「inocre」クォータ・ストラクチャstruct
dquotに加えられる。
【0089】fs Aについてのオペレーションがfs
Bについてのトランザクションを生じさせるならばシ
ステムはデッドロックするので、ufs iinact
ive()とufs iget()の間のプロトコルは
変えられる。このことは、ufs iinactive
がiノードをフリーにするとき、又はufs iina
ctiveがufs syncip()を呼出すとき、
ufs iinactiveにおいて起こる。上記のこ
とは、ufs iget()がiノード上のufs
yncip()をフリー・リストから呼出すときufs
iget()において起こる。本発明の実施におい
て、スレッドは、アイドルiノードをクリーンして、そ
のアイドルiノードをアイドル待ち行列(queue)
から新しい「真にフリーの(really−fre
e)」リストへ移動させる。「真にフリーの」リスト上
のiノードは、真にフリーであり、何の状態も含まな
い。実際に、それらは、iノードに対してたまたま適正
サイズであるメモリーの単なる部分である。ufs
get()は、上記のリストのiノード、又はkmem
alloc()の新しいiノードを用いる。
【0090】スレッドは、待ち行列上のiノードの数が
ufs ninodeの25%を越えるときランする。
ufs ninode Aは、iノード・キャッシュに
おけるiノードのユーザが示唆した最大数である。uf
ninodeはiノード・キャッシュのサイズを制
限しないことに注目すべきである。アクティブなiノー
ドの数と、ページを伴ったアイドルiノードの数とは、
結合されていないままで有り得る。スレッドは、iノー
ドの待ち行列の長さがufs ninodeの12.5
%より小さくなるまでiノードをクリーンする。
【0091】幾つかの新しいカウンターが、inode
statsストラクチャへ加えられ得る。
【0092】
【表8】 ufs iinactiveは、削除されるファイルに
より保持されたオンディスク資源をフリーにする。iノ
ードをufs iinactive()においてフリー
にすることは、システムを上述のようにデッドロックさ
せることができ、同じ解法を用い得る。即ち、削除され
るファイルがスレッドにより処理される。スレッドの待
ち行列はufs ninodeエントリーに制限され
る。ufs rmdir()とufs remove()
とは該制限を実施(enforce)する。
【0093】トランザクションをエンターしながらiノ
ード・キャッシュのロックが中止されるときスレッドが
該iノード・キャッシュのロックを保持するならば、シ
ステムはデッドロックする。その時点で十分なログ・ス
ペースがないならば、スレッドはトランザクションをエ
ンターすることを中止する。iノード走査ファンクショ
ンufs flushi、ufs iflush及びu
fs flush inodesは、iノード・キャッ
シュ・ロックを保持しない単一の走査−iノード−ハッ
シュ(hash)ファクションを用いる。
【0094】
【表9】
【表10】 ufs igetは同じプロトコルを用いる。新しいi
get/iinactiveプロトコルがキャッシュさ
れたiノードを再使用しようとする固有の問題を未然に
防ぐので、上記のプロトコルは可能である。
【0095】lockfsフラッシュ・ルーチンufs
flush inodesは、本発明を実施するため
変更される。ufs flush−inodesは、i
ノードをフラッシュしながらそれらを隠す。iノードを
iノード・キャッシュから取り出しそれらをフラッシュ
し次いでそれらをキャッシュに戻して置くことにより、
該iノードは隠される。しかしながら、隠されたiノー
ドをトランザクションの終わりで見つけることができな
い。ufs flush inodeは、ここで新しい
iノード・ハッシュ走査ファクションを用いてiノード
をフラッシュする。
【0096】ufs unmount()は、lock
fsプロトコルと新しいiノード走査ファクションとを
用いるため修正される。ufs−unmountはまた
UFSスレッドを管理する。スレッドの全部が、ufs
thread.cにおけるルーチンの共通の組により
生成され、制御され、且つ破壊される。各スレッドは、
以下のストラクチャにより表される。
【0097】
【表11】 以下の疑似コード・リスティングを更に参照すると、コ
ンピュータ・マス・ストレージ装置に対する書込み操作
のアトミシティをシステム障害の事象において保証する
ためのジャーナリング・ファイル・システム用トランザ
クション装置ドライバが更に理解され得る。ファイル・システム・オペレーション
【表12】 特定のコンピュータ・オペレーティング・システムと関
連して本発明の原理が上記において記述されたが、上記
の記述は例示によってのみで本発明の範囲の制限として
なされたものではない。
【図面の簡単な説明】
【図1】本発明のオペレーション環境の一部を形成する
汎用コンピュータの単純化して表した図である。
【図2】本発明の代表的な実施を行うためコンピュータ
・プログラムの選択された要素がコンピュータ・オペレ
ーティング・システムの種々の層及びインターフェース
と相互作用する要領のアーキテクチャーの全体像を提供
する単純化して表した図である。
【図3】上記された例示の実施形態に従った、メタトラ
ンス装置の構成要素と、System Vベースのコン
ピュータ・オペレーティング・システムのVop又はV
FSインターフェースを介するその相互作用とを詳細に
示す図2のコンピュータ・プログラムの主要機能構成要
素をより詳細に表した図である。
【図4】メタトランス装置のためのユニット構造がロギ
ング装置ユニット構造のアドレスを含み、またその逆で
あることを示す単純化した論理的ブロック図である。
【図5】ロギング装置のユニット構造がu1 list
によりアンカーされるグローバルなリンクされたリスト
について維持され、ロギング装置を共用するメタトラン
ス装置のための各メタトランス・ユニット構造がロギン
グ装置のユニット構造によりアンカーされるリンクされ
たリストについて維持されることを示す追加の単純化し
た論理的ブロック図である。
【図6】ログマップがマスター装置へロールされること
を必要とするログの中の各デルタに対するmapent
ry tを含み、マップ・エントリーが(メタトランス
dev、メタトランス装置オフセット)によりハッシュ
され且つそれらがロールされるべき順序でリンクされた
リストに維持されることを示す更に単純化した論理的ブ
ロック図である。
【図7】メタトランス装置及びロギング装置のためのユ
ニット構造がログマップのためのアドレスを含むことを
示す単純化した論理的ブロック図である。
【図8】デルタマップが、各メタトランス装置と関連さ
れ、ファイル・システム・オペレーションを備える変化
についての情報を格納し、それと共にメタトランス装置
がデルタマップに格納されている各デルタに対するマッ
プエントリーを生成することを示す追加の単純化した論
理的ブロック図である。
【図9】トランザクションの終わりで、各マップ・エン
トリーにより記録されたコールバックが呼ばれ、ログマ
ップ層がデルタ・プラス・データをログの書込みバッフ
ァーに格納し、マップ・エントリーをログマップの中へ
置くことを示す更に単純化した論理的ブロック図であ
る。
【図10】ログマップがまた読出し操作のため用いられ
ること、また読出されているバッファーがログマップに
おいていずれのエントリーもオーバーラップしないなら
ば、読出し操作が下方のマスター装置へ通され、さもな
ければ、バッファーに対するデータがマスター装置から
のデータとロギング装置からのデータの組み合わせであ
ることを示す単純化した論理的ブロック図である。
【図11】ブート・プロセスにおける早期に、各メタト
ランス装置は、それ自身をUFSファンクションufs
trans setにより記録し、ufstrans
ストラクトを生成し、それをグローバルなリンクされた
リスト上にリンクすることを示す図である。
【図12】マウント時で、ファイル・システムがそのd
ev tを、ufstransストラクトに格納された
他のdev t(複数)に対してチェックし、整合があ
る場合はファイル・システムはufstransストラ
クトのアドレスをそのファイル・システムの特別のパー
マウント・ストラクト(ufsvfs)に格納し、それ
と共にその総称的なパーマウント・ストラクト(vf
s)をufstransストラクトに格納することを更
に示す図である。
【図13】始めオペレーション、終わりオペレーション
及びデルタ記録機能を含む、ufstransopsス
トラクトにおけるエントリー・ポイントを呼び出すこと
によりファイル・システムがドライバと通信することを
示す前の図面に示されるオペレーティング・システム・
カーネルとメタトランス・ドライバとの間のインターフ
ェースの追加の図である。
【符号の説明】
1 プロセッサ 5 キーボード 6 ディスプレイ・ユニット 7 CDROMユニット 8 CDROM媒体 9 ディスク記憶ユニット 10 プログラム 20 アーキテクチャ 22 ユーザ(又はシステム・コール)層 24 カーネル 26 メタトランス層 30 UFS層 32 メタトランス装置 41 バッファー又はページ・キャッシュ 42 VOP又はVFSインターフェース 43 デルタ 45 トランスオプス・インターフェース 58 バッファー又はページ・ドライバ

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 ジャーナリング・ファイル・システムを
    有するコンピュータ・オペレーティング・システムと関
    連したコンピュータ・マス・ストレージ装置へ書込まれ
    るデータのアトミシティを保証するための方法におい
    て、 ファイル・システム・オペレーションの始まりをトラン
    ザクション装置へ指示するステップと、 少なくとも1つのファイル・システム・オペレーション
    を実行するステップと、 前記少なくとも1つのファイル・システム・オペレーシ
    ョンに応答してファイル・システム・データを変えるス
    テップと、 前記の変えられたファイル・システム・データの選択さ
    れた特性を前記トランザクション装置に知らせるステッ
    プと、 前記ファイル・システム・オペレーションの終わりを前
    記トランザクション装置へ宣言するステップと、 前記ファイル・システム・オペレーションと関連した前
    記の変えられたファイル・システム・データを、前記ト
    ランザクション装置と関連するログへコミットするステ
    ップと、 前記の変えられたファイル・システム・データを前記ロ
    グから前記コンピュータ・マス・ストレージ装置へ書込
    むステップとを備える方法。
  2. 【請求項2】 前記指示するステップが、識別番号を前
    記ファイル・システム・オペレーションへ割り当てるこ
    とにより実行される請求項1記載の方法。
  3. 【請求項3】 前記実行するステップ及び前記変えるス
    テップが、複数のファイル・システム・オペレーション
    のため繰り返し実行される請求項1記載の方法。
  4. 【請求項4】 前記知らせるステップが、前記の変えら
    れたファイル・システム・データのオフセット及びサイ
    ズを決定することにより実行される請求項1記載の方
    法。
  5. 【請求項5】 前記の変えられたファイル・システム・
    データを分析して前記ファイル・システムに対する該デ
    ータの相対的重要性を決定するステップと、前記の変え
    られたファイル・システム・データが前記ファイル・シ
    ステムに対して相対的に重要でない場合前記の変えられ
    たファイル・システム・データを前記コンピュータ・マ
    ス・ストレージ装置へ直接書込むステップとを更に備え
    る請求項1記載の方法。
  6. 【請求項6】 データを前記コンピュータ・マス・スト
    レージ装置から読出すステップと、 前記の読出されたデータを前記ログと関連するバッファ
    ーへ書込むステップと、 前記ログが前記の読出されたデータに対する更新を含む
    かを決定するステップと、 前記ログが前記の読出されたデータに対する更新を含む
    場合前記バッファーの中の前記の読出されたデータを更
    新するステップとを更に備える請求項1記載の方法。
  7. 【請求項7】 コンピュータが使用できる媒体を備える
    コンピュータ・プログラム製品であって、前記コンピュ
    ータが使用できる媒体は、ジャーナリング・ファイル・
    システムを有するコンピュータ・オペレーティング・シ
    ステムのファイル・システム・オペレーションに応答し
    てコンピュータ・マス・ストレージ装置へ書込まれるデ
    ータのアトミシティを保証するため前記媒体の中に包含
    されたコンピュータ可読コードを有する、コンピュータ
    ・プログラム製品において、 コンピュータがファイル・システム・オペレーションの
    始まりをトランザクション装置へ指示するよう構成され
    たコンピュータ可読プログラム・コード装置と、 コンピュータが少なくとも1つのファイル・システム・
    オペレーションを実行するよう構成されたコンピュータ
    可読プログラム・コード装置と、 コンピュータが前記少なくとも1つのファイル・システ
    ム・オペレーションに応答してファイル・システム・デ
    ータを変えるよう構成されたコンピュータ可読プログラ
    ム・コード装置と、 コンピュータが前記の変えられたファイル・システム・
    データの選択された特性を前記トランザクション装置へ
    知らせるよう構成されたコンピュータ可読プログラム・
    コード装置と、 コンピュータが前記ファイル・システム・オペレーショ
    ンの終わりを前記トランザクション装置に対して宣言す
    るよう構成されたコンピュータ可読プログラム・コード
    装置と、 コンピュータが前記ファイル・システム・オペレーショ
    ンと関連した前記の変えられたファイル・システム・デ
    ータを前記トランザクション装置と関連するログへコミ
    ットさせるよう構成されたコンピュータ可読プログラム
    ・コード装置と、 コンピュータが前記の変えられたファイル・システム・
    データを前記ログから前記コンピュータ・マス・ストレ
    ージ装置へ書込むよう構成されたコンピュータ可読プロ
    グラム・コード装置とを備えるコンピュータ・プログラ
    ム製品。
  8. 【請求項8】 コンピュータがファイル・システム・オ
    ペレーションの始まりをトランザクション装置へ指示す
    るよう構成された前記コンピュータ可読プログラム・コ
    ード装置が、コンピュータが識別番号を前記ファイル・
    システム・オペレーションへ割り当てるよう構成された
    コンピュータ可読プログラム・コード装置により実行さ
    れる請求項7記載のコンピュータ・プログラム製品。
  9. 【請求項9】 コンピュータが少なくとも1つのファイ
    ル・システム・オペレーションを実行するよう構成され
    た前記コンピュータ可読プログラム・コード装置と、コ
    ンピュータが前記少なくとも1つのファイル・システム
    ・オペレーションに応答してファイル・システム・デー
    タを変えるよう構成された前記コンピュータ可読プログ
    ラム・コード装置とが、コンピュータが複数のファイル
    ・システム・オペレーションのため少なくとも1つのフ
    ァイル・システム・オペレーションを実行し且つ前記少
    なくとも1つのファイル・システム・オペレーションに
    応答してファイル・システム・データを変えることを繰
    り返し行うよう構成されたコンピュータ可読プログラム
    ・コード装置により実行される請求項7記載のコンピュ
    ータ・プログラム製品。
  10. 【請求項10】 コンピュータが前記の変えられたファ
    イル・システム・データの選択された特性を前記トラン
    ザクション装置へ知らせるよう構成された前記コンピュ
    ータ可読プログラム・コード装置が、コンピュータが前
    記の変えられたファイル・システム・データのオフセッ
    ト及びサイズを決定するよう構成されたコンピュータ可
    読プログラム・コード装置により実行される請求項7記
    載のコンピュータ・プログラム製品。
  11. 【請求項11】 コンピュータが前記の変えられたファ
    イル・システム・データを分析して前記ファイル・シス
    テムに対する当該データの相対的重要性を決定するよう
    構成されたコンピュータ可読プログラム・コード装置
    と、 コンピュータが前記の変えられたファイル・システム・
    データが前記ファイル・システムに対して相対的に重要
    でない場合前記の変えられたファイル・システム・デー
    タを前記コンピュータ・マス・ストレージ装置へ直接書
    込むよう構成されたコンピュータ可読プログラム・コー
    ド装置とを更に備える請求項7記載のコンピュータ・プ
    ログラム製品。
  12. 【請求項12】 コンピュータがデータを前記コンピュ
    ータ・マス・ストレージ装置から読出すよう構成された
    コンピュータ可読プログラム・コード装置と、 コンピュータが前記の読出されたデータを前記ログと関
    連するバッファーへ書込むよう構成されたコンピュータ
    可読プログラム・コード装置と、 コンピュータが前記ログが前記の読出されたデータに対
    する更新を含むかを決定するよう構成されたコンピュー
    タ可読プログラム・コード装置と、 コンピュータが前記ログが前記の読出されたデータに対
    する更新を含む場合前記バッファーの中の前記の読出さ
    れたデータを更新するよう構成されたコンピュータ可読
    プログラム・コード装置とを更に備える請求項7記載の
    コンピュータ・プログラム製品。
  13. 【請求項13】 アプリケーション・プログラムをラン
    するためコンピュータにロード可能なコンピュータ・オ
    ペレーティング・システムと、前記コンピュータと関連
    したコンピュータ・マス・ストレージ装置であって前記
    オペレーティング・システムのジャーナリング・ファイ
    ル・システムに応答してデータを受け取るコンピュータ
    ・マス・ストレージ装置とを含むコンピュータにおい
    て、 前記オペレーティング・システムが、ログ装置とそれと
    関連するバッファーとを含むメタトランス装置を備え、 当該メタトランス装置が、前記オペレーティング・シス
    テム層のファイル・システム層を前記コンピュータ・マ
    ス・ストレージ装置のドライバに結合させ、 記録を前記ログに作成するための前記メタトランス装置
    は、前記ファイル・システムの層から受け取る更新され
    たトランザクション・データを含み、 前記メタトランス装置は、前記更新されたトランザクシ
    ョン・データが前記バッファーにある場合前記更新され
    たトランザクション・データを前記コンピュータ・マス
    ・ストレージ装置に書込む、コンピュータ。
  14. 【請求項14】 前記ログ装置と関連したデルタ・マッ
    プと、その関連のバッファーであって前記メタトランス
    装置のバッファーとを更に備え、 前記メタトランス装置は、 オリジナル・データを前記コンピュータ・マス・ストレ
    ージ装置から読出し、 前記オリジナル・データと前記デルタ・マップからの前
    記トランザクション・データとを区別して、更新された
    データを前記コンピュータ・マス・ストレージ装置へ戻
    して書込む前に前記バッファーの中の前記トランザクシ
    ョン・データを更新する請求項13記載のコンピュー
    タ。
JP8262420A 1995-09-11 1996-09-11 コンピュータ・マス・ストレージ装置への書込み操作のアトミシティを保証するためのジャーナリング・ファイル・システム用トランザクション装置ドライバ技術 Pending JPH09114718A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/526,380 US5778168A (en) 1995-09-11 1995-09-11 Transaction device driver technique for a journaling file system to ensure atomicity of write operations to a computer mass storage device
US526380 1995-09-11

Publications (1)

Publication Number Publication Date
JPH09114718A true JPH09114718A (ja) 1997-05-02

Family

ID=24097109

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8262420A Pending JPH09114718A (ja) 1995-09-11 1996-09-11 コンピュータ・マス・ストレージ装置への書込み操作のアトミシティを保証するためのジャーナリング・ファイル・システム用トランザクション装置ドライバ技術

Country Status (4)

Country Link
US (1) US5778168A (ja)
EP (1) EP0767435B1 (ja)
JP (1) JPH09114718A (ja)
DE (1) DE69601850T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7574557B2 (en) 2002-12-04 2009-08-11 Hitachi, Ltd. Updated data write method using journal log
JP2009211668A (ja) * 2007-03-28 2009-09-17 Fujitsu Ltd アクセス制御プログラム

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931935A (en) * 1997-04-15 1999-08-03 Microsoft Corporation File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system
US7103794B2 (en) * 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US5946685A (en) * 1997-06-27 1999-08-31 Sun Microsystems, Inc. Global mount mechanism used in maintaining a global name space utilizing a distributed locking mechanism
US5946686A (en) * 1997-07-11 1999-08-31 International Business Machines Corporation Parallel file system and method with quota allocation
US6393526B1 (en) 1997-10-28 2002-05-21 Cache Plan, Inc. Shared cache parsing and pre-fetch
US6421787B1 (en) * 1998-05-12 2002-07-16 Sun Microsystems, Inc. Highly available cluster message passing facility
US6298345B1 (en) * 1998-07-10 2001-10-02 International Business Machines Corporation Database journal mechanism and method that supports multiple simultaneous deposits
US8234477B2 (en) 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US6427187B2 (en) 1998-07-31 2002-07-30 Cache Flow, Inc. Multiple cache communication
US6922708B1 (en) * 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
JP3763992B2 (ja) 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US7555500B2 (en) * 2001-02-15 2009-06-30 Teradata Us, Inc. Optimized end transaction processing
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
US6877109B2 (en) 2001-11-19 2005-04-05 Lsi Logic Corporation Method for the acceleration and simplification of file system logging techniques using storage device snapshots
JP4266096B2 (ja) 2002-03-26 2009-05-20 株式会社日立製作所 ファイル保管システムとnasサーバ
NZ521983A (en) * 2002-10-14 2005-05-27 Maximum Availability Ltd Journaling changes to system objects such as programs in the IBM OS/400 operating system
US7174420B2 (en) 2002-10-22 2007-02-06 Microsoft Corporation Transaction-safe FAT file system
US7363540B2 (en) 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
US7308456B2 (en) 2002-12-19 2007-12-11 International Business Machines Corporation Method and apparatus for building one or more indexes on data concurrent with manipulation of data
DK1616236T3 (da) * 2003-04-14 2017-02-20 Schneider Electric It Corp Metode og system til journalføring og adgang til sensor- og konfigurationsdata
US8566292B2 (en) * 2003-04-14 2013-10-22 Schneider Electric It Corporation Method and system for journaling and accessing sensor and configuration data
JP2005063139A (ja) * 2003-08-12 2005-03-10 Toshiba Corp コンピュータシステムおよびプログラム
US20050256859A1 (en) * 2004-05-13 2005-11-17 Internation Business Machines Corporation System, application and method of providing application programs continued access to frozen file systems
US8856467B2 (en) * 2004-11-18 2014-10-07 International Business Machines Corporation Management of metadata in a storage subsystem
US7885921B2 (en) * 2004-11-18 2011-02-08 International Business Machines Corporation Managing atomic updates on metadata tracks in a storage system
US8676748B2 (en) * 2004-11-18 2014-03-18 International Business Machines Corporation Clearing metadata tracks in a storage system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
US8606830B2 (en) 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
EP1946179B1 (en) * 2005-11-10 2012-12-05 BAE Systems PLC Method of modifying a display apparatus
US8161226B2 (en) * 2005-12-27 2012-04-17 Intel Corporation Methods and apparatus to share a thread to reclaim memory space in a non-volatile memory file system
US7801846B2 (en) * 2006-04-04 2010-09-21 Computer Associates Think, Inc. Generating log sequence identifiers to apply a transaction to a storage system
US7900088B1 (en) * 2006-09-29 2011-03-01 Emc Corporation System for performing incremental file system check
US7747664B2 (en) * 2007-01-16 2010-06-29 Microsoft Corporation Storage system format for transaction safe file system
US7613738B2 (en) 2007-01-16 2009-11-03 Microsoft Corporation FAT directory structure for use in transaction safe file system
US7818302B2 (en) * 2007-03-09 2010-10-19 Emc Corporation System and method for performing file system checks on an active file system
BRPI0815619A2 (pt) * 2007-08-21 2015-02-18 Thomson Licensing Método e sistema para o reparo de sistemas de arquivos danificados do disco rígido
US8560578B2 (en) * 2008-06-26 2013-10-15 Microsoft Corporation Common block storage infrastructure
US8990536B2 (en) 2011-06-01 2015-03-24 Schneider Electric It Corporation Systems and methods for journaling and executing device control instructions
JP6053274B2 (ja) * 2011-10-31 2016-12-27 キヤノン株式会社 ファイル管理装置、ファイル管理方法およびプログラム
CN115174597B (zh) * 2022-07-30 2023-05-26 重庆长安汽车股份有限公司 一种文件数据防丢失的方法、系统、电子设备和存储介质
CN116450487B (zh) * 2023-06-19 2023-08-29 成都佰维存储科技有限公司 一种ufs日志分析方法、装置、可读存储介质及电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4498145A (en) * 1982-06-30 1985-02-05 International Business Machines Corporation Method for assuring atomicity of multi-row update operations in a database system
US4949251A (en) * 1988-07-18 1990-08-14 Digital Equipment Corporation Exactly-once semantics in a TP queuing system
US5222217A (en) * 1989-01-18 1993-06-22 International Business Machines Corporation System and method for implementing operating system message queues with recoverable shared virtual storage
US5201044A (en) * 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
JP2667039B2 (ja) * 1990-05-18 1997-10-22 株式会社東芝 データ管理システムおよびデータ管理方法
US5369757A (en) * 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
JP2710190B2 (ja) * 1991-12-31 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション データ辞書の同期化を調整するための方法および装置
US5414840A (en) * 1992-06-25 1995-05-09 Digital Equipment Corporation Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory
US5469562A (en) * 1992-06-26 1995-11-21 Digital Equipment Corporation Durable atomic storage update manager
US5455946A (en) * 1993-05-21 1995-10-03 International Business Machines Corporation Method and means for archiving modifiable pages in a log based transaction management system
US5435004A (en) * 1994-07-21 1995-07-18 International Business Machines Corporation Computerized system and method for data backup

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7574557B2 (en) 2002-12-04 2009-08-11 Hitachi, Ltd. Updated data write method using journal log
JP2009211668A (ja) * 2007-03-28 2009-09-17 Fujitsu Ltd アクセス制御プログラム

Also Published As

Publication number Publication date
DE69601850D1 (de) 1999-04-29
EP0767435B1 (en) 1999-03-24
EP0767435A1 (en) 1997-04-09
US5778168A (en) 1998-07-07
DE69601850T2 (de) 1999-10-14

Similar Documents

Publication Publication Date Title
JPH09114718A (ja) コンピュータ・マス・ストレージ装置への書込み操作のアトミシティを保証するためのジャーナリング・ファイル・システム用トランザクション装置ドライバ技術
JPH09114717A (ja) コンピュータ・オペレーティング・システムのジャーナリング・ファイル・システムのための単一トランザクション技術
US6078999A (en) Recovering from a failure using a transaction table in connection with shadow copy transaction processing
JP2505112B2 (ja) トランザクション管理方法
Jagadish et al. Dali: A high performance main memory storage manager
Lowell et al. Free transactions with rio vista
US6185699B1 (en) Method and apparatus providing system availability during DBMS restart recovery
US5435004A (en) Computerized system and method for data backup
JP2679779B2 (ja) トランザクション処理方法及び装置
US5333303A (en) Method for providing data availability in a transaction-oriented system during restart after a failure
Salem et al. Checkpointing memory-resident databases
US6205449B1 (en) System and method for providing hot spare redundancy and recovery for a very large database management system
US5418940A (en) Method and means for detecting partial page writes and avoiding initializing new pages on DASD in a transaction management system environment
US5903898A (en) Method and apparatus for user selectable logging
US7107294B2 (en) Method and apparatus for interrupting updates to a database to provide read-only access
JP2531776B2 (ja) デ―タベ―スを回復する方法
JP2531894B2 (ja) デ―タ処理装置
JP3763992B2 (ja) データ処理装置及び記録媒体
US20040030951A1 (en) Instantaneous restoration of a production copy from a snapshot copy in a data storage system
JPH01263745A (ja) データベースの回復方法
JPH0359734A (ja) データ・セツト回復方法
JPH07175700A (ja) データベース管理方式
JPH04337850A (ja) データベース・トランザクション及び照会処理システム
US7472138B2 (en) System and method for handing input/output errors during recovery of journaling files in a data processing system
CA2071346A1 (en) Method and means for time zero backup copy of data