JP2001101053A - トランザクション管理方法及びトランザクション管理装置 - Google Patents
トランザクション管理方法及びトランザクション管理装置Info
- Publication number
- JP2001101053A JP2001101053A JP28005299A JP28005299A JP2001101053A JP 2001101053 A JP2001101053 A JP 2001101053A JP 28005299 A JP28005299 A JP 28005299A JP 28005299 A JP28005299 A JP 28005299A JP 2001101053 A JP2001101053 A JP 2001101053A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- file
- writing
- file system
- update
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
をベースにしてトランザクショナルなファイルシステム
を実現可能なトランザクション管理方法を提供するこ
と。 【解決手段】 あるトランザクションが処理を開始して
からそれがコミットするまでの間にトランザクションが
バッファ領域上で更新したファイルの内容をその更新を
後で取り消すことが可能な形でファイルシステム5の管
理する記憶装置に書き込む処理を行い、この処理開始か
らコミットまでの間トランザクションがバッファ領域上
でファイルに対して行った全ての更新動作を記憶した更
新リストを該記憶装置に書き込む処理を行い、それら2
つの書き込み処理がいずれも成功した場合にトランザク
ションをコミットしたものと確定し、いずれかの書き込
みが失敗した場合にトランザクションをアボートする。
Description
操作要求を受けてファイルの更新を行うトランザクショ
ン管理方法及びトランザクション管理装置に関する。
ットワークなどから受取った処理要求に対して、必要な
処理を実行し、その結果を返す、という一纏まりの処理
が行われる。このように、なんらかの手段で起動された
一纏まりの処理を実行する流れを「トランザクション」
と呼ぶ。また、このような情報処理を「トランザクショ
ン処理」と呼び、トランザクション処理を行うシステム
を「トランザクション処理システム」と呼ぶ。
ンザクションの処理の過程で様々なファイルやデータへ
のアクセスを行う。ファイルやデータへのアクセスと
は、「参照」すなわちファイルやデータの読み出しや、
「更新」すなわち既存のファイルやデータの書き換え
や、「作成」すなわち新しいファイルやデータの書き込
みや、「削除」すなわち既存のファイルやデータを消去
する処理である。なお、ファイルやデータの更新と作成
と削除を総称して、更新と呼ばれることもある。
CID性を満たすように実行される必要がある。ACI
D性とは、トランザクションが持つ以下に説明する原子
性(Atomicity)、一貫性(Consiste
ncy)、隔離性(Isolation)、耐久性(D
urability)の4つの性質の総称である。
ンザクションの処理結果をコミット(Commit)か
アボート(Abort)かのいずれかの状態に決定する
ことである。すなわち、トランザクションによるファイ
ルやデータの更新等を永続的なものにするのがコミット
であり、変更を取り消して元に戻すのがアボートであ
る。トランザクションの処理結果をコミットかアボート
かの状態に決定する処理を「コミット処理」と呼ぶ。
トランザクションによるファイルやデータの更新等を行
った結果、必ず一貫性のとれた状態になることを保証す
ることである。
のトランザクションを並行に実行した場合でも、各トラ
ンザクションを単独で実行した場合と同じ処理結果にな
ることを保証することである。直列可能性(Seria
lizability)とも呼ぶこともある。
ミットしたトランザクションの処理結果は、ハードディ
スク装置などの安定記憶装置に書き込まれて、処理結果
が障害等によって紛失しないことを保証することであ
る。
ザクションがアクセスするファイルやデータは、ファイ
ルシステムやデータベース管理システムによって管理す
る。上記のようなACID性を備えたデータベース管理
システムやファイルシステムは、トランザクショナルで
あると言う。通常、多くのデータベース管理システムは
トランザクショナルであるので、データベース管理シス
テムを用いれば、上記のACID性を満たしたデータの
管理を伴うトランザクション処理が可能になる。
ステムの提供するファイルシステムはトランザクショナ
ルではなく、上記のACID性を完全には満たしていな
い。ファイルシステムは、通常、バッファ記憶を利用す
る。具体的には、バッファ記憶にファイルをキャッシュ
しておくことで、ハードディスク装置などの安定記憶装
置から読み出す頻度を下げたり、あるいはハードディス
ク装置のシーク時間が最小になるように読み出しや書き
込みの順序を制御したり、あるいはアプリケーションプ
ログラムからの書き込みを一度バッファ記憶に書き込む
ことで見かけ上の応答時間を短くしたりする最適化を行
っている。そのため、ファイルシステムでは、トランザ
クションのACID性を満たすことは難しい。
き込みによってファイルが必ずハードディスク装置に書
き込まれることを保証したり、あるいはSYNC命令に
よって指定したファイルのバッファ領域にあるデータを
ハードディスクに強制的に書き込む手段を提供してい
る。これらの手段を使ってアプリケーションプログラム
を作成することで、限られた範囲で疑似的にトランザク
ションのACID性の一部を満たすことはできる。
するような処理をトランザクションとして実行するシス
テムを作成する場合、既存の計算機のオペレーティング
システムのファイルシステムはトランザクショナルでは
ないのでACID性を保証できない。
ばトランザクショナルな処理を行えるが、データベース
管理システムは例えば関係データモデルのような特別な
データモデルに従ったデータの管理を必要とし、ファイ
ルのように自由度が高く柔軟なデータの扱いが出来な
い。
書き込みやSYNC命令によって、ファイルをハードデ
ィスクに書き込むような制御は可能であるが、これらの
操作は単一のファイルを対象にしたものであり、トラン
ザクションが同時に複数のファイルを更新するような場
合のACID性の保証はできない。
ので、トランザクショナルでないファイルシステムを用
いて、トランザクショナルなファイルシステムを実現す
ることの可能なトランザクション管理方法及びトランザ
クション管理装置を提供することを目的とする。
ファイルのバッファリングあるいはキャッシュの管理
や、ハードディスク装置のシークを最小にするスケジュ
ーリングなど、性能を向上させるために実装されている
機能を犠牲にせず、出来る限りそれらの効果を引き出し
ながら、トランザクショナルなファイルシステムを実現
することの可能なトランザクション管理方法及びトラン
ザクション管理装置を提供することを目的とする。
ンが同じファイルをアクセスする場合の排他制御に伴う
ロック待ちによって、トランザクションの実行がブロッ
クする期間を短くすることのできるコミット処理方式を
実現することの可能なトランザクション管理方法及びト
ランザクション管理装置を提供することを目的とする。
ムの管理するファイルを更新するトランザクションの処
理を可能にするトランザクション管理方法及びトランザ
クション管理装置を提供することを目的とする。
ァイルシステムが存在する場合に、トランザクショナル
でないファイルシステムを組み合わせて用いるトランザ
クション処理を実現可能にするトランザクション管理方
法及びトランザクション管理装置を提供することを目的
とする。
る(ファイルシステムを用いた)トランザクション管理
装置は、トランザクションが処理を開始してから該トラ
ンザクションがコミットするまでの間に該トランザクシ
ョンがバッファ領域上で更新した一つ以上のファイルの
内容(新たに作成されたファイルの内容および/または
既存のファイルの変更された内容)を、該更新を後で取
り消すことが可能な形態で、ファイルシステムの管理す
る記憶装置に書き込む処理を行い、前記トランザクショ
ンが処理を開始してから該トランザクションがコミット
するまでの間に該トランザクションがバッファ領域上で
ファイルに対して行った全ての更新動作(ファイルの作
成、ファイルの内容の変更(これをファイルの更新と称
する場合がある)、ファイルの削除のいずれもこの更新
動作に相当する)を記憶した更新リストを、ファイルシ
ステムの管理する記憶装置に書き込む処理を行い、前記
内容と前記更新リストの双方の書き込み処理が成功した
場合に、前記トランザクションをコミットしたものと確
定し、前記内容と前記更新リストのいずれかの書き込み
が失敗した場合に、前記トランザクションをアボートす
ることを特徴とする。
加えて上記のような更新リストをファイルシステムを介
して記憶装置に書き込み、内容を書き込んでいても対応
する更新リストの書き込みが成功していなければ、その
トランザクションをアボートすることにより、一つのト
ランザクションがその処理開始時からコミット時までに
一つまたは複数のファイルに対して行った更新の全てが
有効になる(コミット)か、全てが無効になる(アボー
ト)か、いずれかの状態にしかならない(システムに障
害が起きた場合でも、一つのトランザクションが行った
更新のうち一部分だけが有効になり残りが無効になると
いうことはあり得ない)ことを保証できる。このトラン
ザクション管理方法によれば、トランザクションのAC
ID性をそれ自体では備えていないファイルシステム
(例えば多くの既存の計算機のオペレーティングシステ
ムが提供するファイルシステム)を用いて、トランザク
ションのACID性を実現できる。
理は、前記ファイルの内容を書き込む処理が正常に完了
した後に行い、前記更新リストの書き込み処理が成功し
た場合に、前記内容と前記更新リストの双方の書き込み
処理が成功したと判断し、前記更新リストを書き込む処
理が行われなかったか、前記更新リストの書き込み処理
が失敗した場合に、前記内容と前記更新リストのいずれ
かの書き込み処理が失敗したと判断するようにしてもよ
い。
理は、前記ファイルの内容を書き込む処理と共に行い、
該更新リストを書き込む際に、該更新リストに前記ファ
イルの内容が正常に書き込まれたか否かを判断するため
の情報を含ませ、前記ファイル内容を書き込む処理およ
び前記更新リストを書き込む処理が正常に完了したか、
書き込まれた該更新リストに含まれる前記情報により前
記ファイルの内容が正常に書き込まれていると判断され
る場合に、前記内容と前記更新リストの双方の書き込む
処理が成功したと判断し、前記更新リストが書き込まれ
なかったか、書き込まれた前記更新リストに含まれる前
記情報により前記ファイルの内容が正常に書き込まれて
いないと判断される場合に、前記内容と前記更新リスト
のいずれかの書き込み処理が失敗したと判断するように
してもよい。これによれば、更新あるいは作成したファ
イルの書き出しと更新リストの書き出しを同時に行うこ
とで、記憶装置への書き込み完了の待ち合わせを減らせ
るので、コミット処理の時間が短くできる。これは、フ
ァイルの内容がバッファに滞在する時間を短くすること
で、必要なバッファ量を減らす効果も持つ。
ミット処理を開始した順番を管理しておき、前記トラン
ザクションについての前記ファイルの内容および前記更
新リストの書き込み処理が双方とも成功したかいずれか
が失敗したかの判断を、管理された前記順番で該トラン
ザクションの直前のトランザクションがコミットかアボ
ートかが確定した後に行い、前記内容と前記更新リスト
のいずれかの書き込み処理が失敗した場合に、前記トラ
ンザクションをアボートすると共に、少なくとも該トラ
ンザクションが更新(作成もしくは内容変更)したファ
イルを参照あるいは更新した(現在コミット処理中の)
トランザクションをアボートするようにしてもよい。
ランザクションのコミット処理が可能になる。また、複
数のトランザクションのコミット処理を非同期に並列に
実行できるので、ベースとなるファイルシステムによる
バッファリングやファイル書き出しのスケジューリング
の効果を活かすことが出来、ファイルシステムやディス
ク装置の性能を引き出すことができる。
したファイルを参照あるいは更新した現在コミット処理
中のトランザクションをアボートするのに加えて、前記
トランザクションが更新したファイルを参照あるいは更
新した現在処理中であってまだコミット処理を開始して
いないトランザクションもアボートするようにしてもよ
い。
を開始してからそのコミット処理が開始した後までの間
の所定のタイミングで、前記あるトランザクションが更
新対象とするファイルのその時点での内容を待避させた
状態にし、前記あるトランザクションがコミット処理を
開始した場合に、該あるトランザクションに関連して前
記待避が行われた前記ファイルに対する排他制御を解除
して、他のトランザクションが前記ファイルに対して更
新動作を行えるようにし、前記排他制御を解除した後
に、前記あるトランザクションが更新した前記ファイル
の内容を、該更新を後で取り消すことが可能な形態で、
前記ファイルシステムの管理する記憶装置に書き込む処
理を行うようにしてもよい。より具体的には、例えば、
あるトランザクションがその処理中にファイルを更新し
ようとした際に、該あるトランザクションが更新対象と
するファイルを排他制御(例えば、ロック)し、その時
点における該ファイルの内容を旧バージョンのファイル
として待避させ、該ファイルをコピーして作成したファ
イルを新バージョンのファイルとし、新バージョンのフ
ァイルを該トランザクションに更新させるようにし、そ
の後、該あるトランザクションがコミット処理を開始す
る際には、すぐに該ファイルに対する排他制御を解除し
てしまうようにしてもよい。また、例えば、あるトラン
ザクションがコミット処理を開始したら、該あるトラン
ザクションが更新したファイルの内容を他のトランザク
ションによって書き換えられないように待避した後、該
ファイルに対する排他制御を解除して他のトランザクシ
ョンが更新動作を行えるようにし、前記あるトランザク
ションについての前記ファイルの内容を書き込む処理
は、前記待避しておいた内容を書き込むものであるよう
にしてもよい。これによって、コミット処理の開始時に
ロックを外すことができるので、ロック待ちでブロック
する期間を短くできる。また、この結果、トランザクシ
ョンの並行性をあげてシステム全体の性能を向上させる
ことができる。
がコミット処理を開始したら、該あるトランザクション
が更新(作成もしくは内容更新)したファイルの内容を
他のトランザクションによって書き換えられないように
待避(例えば名前を変えて保存)した後、該ファイルに
対する排他制御を解除して他のトランザクションが更新
動作を行えるようにし、前記あるトランザクションにつ
いての前記ファイルの内容を書き込む処理は、前記待避
しておいた内容を書き込むものであるようにしてもよ
い。
ーブファイルシステムの管理する記憶装置に書き込む処
理を行い、前記更新リストに関する情報を、マスターフ
ァイルシステムの管理する記憶装置に書き込む処理を行
い、前記マスターファイルシステムは、各トランザクシ
ョンがその処理開始時からコミット時までに一つ以上の
ファイルに対して行った更新が、トランザクション単位
で全て有効になるか全て無効になるかいずれかの状態に
しかならないことを保証するための処理を行い、前記ス
レーブファイルシステムは、前記トランザクションが前
記マスターファイルシステムにおいてコミットされた場
合に、前記内容と前記更新リストの双方の書き込み処理
が成功したと判断し、前記スレーブファイルシステム
は、前記トランザクションが前記マスターファイルシス
テムにおいてアボートされた場合に、前記内容と前記更
新リストのいずれかの書き込み処理が失敗したと判断す
るようにしてもよい。これによって、トランザクション
のACID性をそれ自体では備えていないファイルシス
テムをスレーブとして用い、ACID性を備えているフ
ァイルシステムをマスターとして用いて、複数のファイ
ルシステムにまたがってトランザクションのACID性
を実現できる。また、複数のファイルシステムを使うト
ランザクションの処理が可能になる。
ステムの管理するファイルをアクセスして処理を行うト
ランザクションを管理するトランザクション管理装置で
あって、トランザクションが処理を開始してから該トラ
ンザクションがコミットするまでの間に該トランザクシ
ョンがバッファ領域上で更新(作成もしくは内容変更)
した一つ以上のファイルの内容を、該更新を後で取り消
すことが可能な形態で、前記ファイルシステムの管理す
る記憶装置に書き込む処理と、前記トランザクションが
処理を開始してから該トランザクションがコミットする
までの間に該トランザクションがバッファ領域上でファ
イルに対して行った全ての更新動作(作成、内容変更、
削除)を記憶した更新リストを、前記記憶装置に書き込
む処理とを行う手段と、前記内容と前記更新リストの双
方の書き込み処理が成功した場合に、前記トランザクシ
ョンをコミットしたものと確定し、前記内容と前記更新
リストのいずれかの書き込みが失敗した場合に、前記ト
ランザクションをアボートする手段とを備えたことを特
徴とする。
ステムの管理するファイルをアクセスして処理を行うト
ランザクションを管理するトランザクション管理装置で
あって、複数のトランザクションがコミット処理を開始
した順番を管理する手段と、コミット処理を開始したあ
るトランザクションが、ファイルをアクセスする処理を
開始してからコミット処理を開始するまでの間に、バッ
ファ領域上で更新(作成もしくは内容変更)した一つ以
上のファイルの内容を、前記ファイルシステムの管理す
る記憶装置に書き込む処理を行う手段と、管理された前
記順番で前記あるトランザクションの直前のトランザク
ションがコミットかアボートかが確定した後に、前記書
き込む処理が成功していれば前記あるトランザクション
をコミットしたものと確定し、そうでない場合には前記
あるトランザクション、および少なくとも該あるトラン
ザクションが更新(作成もしくは内容変更)したファイ
ルを参照あるいは更新した現在コミット処理中のトラン
ザクションをアボートする手段とを備えたことを特徴と
する。
したファイルを参照あるいは更新した現在コミット処理
中のトランザクションをアボートするのに加えて、前記
トランザクションが更新したファイルを参照あるいは更
新した現在処理中であってまだコミット処理を開始して
いないトランザクションもアボートするようにしてもよ
い。
ファイルシステムとスレーブファイルシステムを含む複
数のファイルシステムがそれぞれ管理するファイルをア
クセスして処理を行うトランザクションを管理するトラ
ンザクション管理装置であって、トランザクションが処
理を開始してから該トランザクションがコミットするま
での間に該トランザクションがバッファ領域上で更新
(作成もしくは内容変更)した一つ以上のファイルであ
って、前記スレーブファイルシステムの管理するファイ
ルの内容を、該更新を後で取り消すことが可能な形態
で、前記スレーブファイルシステムの管理する記憶装置
に書き込む処理を行う手段と、前記トランザクションが
処理を開始してから該トランザクションがコミットする
までの間に該トランザクションがバッファ領域上で前記
スレーブファイルシステムの管理するファイルに対して
行った全ての更新動作(作成、内容変更、削除)を記憶
した更新リストを、前記マスターファイルシステムの管
理する記憶装置を利用して書き込む処理を行う手段と、
前記マスターファイルシステムの管理する記憶装置に対
する前記トランザクションの全ての更新動作に係る書き
込み処理が正常に行われたと判断される場合に、前記ト
ランザクションのコミットを確定し、それ以外の場合
に、前記トランザクションをアボートする手段と、前記
スレーブファイルシステムにおいて、前記マスターファ
イルシステムにおける前記トランザクションのコミット
の確定もしくはアボートに従って、前記トランザクショ
ンのコミットの確定もしくはアボートを行う手段とを備
えたことを特徴とする。
動作に係る書き込み処理」には、(1)トランザクショ
ンが更新したマスターファイルシステム内のファイルの
内容(書き換えたり、新しく作成したりしたもの)、
(2)スレーブファイルシステムの更新リスト、(3)
マスターファイルシステムが本発明を使っているのなら
ばマスターファイルシステムの更新リスト、の書き込み
処理が相当する。
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
実施の形態を説明する。
の実施形態に係るトランザクショナルファイルシステム
の構成例を示す。
ルファイルシステム1は、トランザクション管理部3、
ファイル管理部4、トランザクショナルでないファイル
システム5から構成される。
常に基本的なデータを、名前を付けて管理する。ファイ
ルシステム5の管理するバイト列のデータをファイルと
呼ぶ。ファイルは例えばハードディスク等の安定記憶装
置(図示せず)に記憶される。なお、安定記憶装置と
は、例えば、ハードディスク等の、電源を切っても記憶
した内容が消えない記憶装置を指す。
常の(トランザクショナルでない)ファイルシステムを
利用して構わない。
5の管理するファイルに対して、その中にデータを新し
く書き込んだり、既に書き込まれているデータを読み出
したりする、というような基本的な操作が可能である。
アプリケーション2により実行されるトランザクション
は、トランザクショナルファイルシステム1に指示を出
すことで開始し、トランザクショナルファイルシステム
1からコミットまたはアボートを受け取ることで終了す
る。
は、概略的には、トランザクションを実行するアプリケ
ーションプログラム2から指示を受け、個々のトランザ
クションについてファイルシステム5の管理する1また
は複数のファイルの操作を行い、各トランザクションに
ついて順次コミット処理を行うものであり、後述するよ
うに、トランザクション管理部3およびファイル管理部
4(トランザクション管理装置)、によってトランザク
ショナルな処理を実現している。
ケーションプログラム2は、トランザクションの開始時
に「トランザクション識別子」を取得し、それ以降にお
いて、トランザクショナルファイルシステム1へファイ
ルのアクセスを要求する場合には、自分のトランザクシ
ョン識別子を一緒に提示するものとする。これによっ
て、トランザクショナルファイルシステム1は、どのト
ランザクションがどのファイル(のどのバージョン)を
操作(更新・作成・削除)しているかを把握する。
行中のトランザクション間で重ならなければ、どのよう
な識別子でも構わない。図1は、トランザクションマネ
ージャを使わない場合の構成例で、この場合には、トラ
ンザクション管理部3がトランザクション識別子を発行
するように実施することも出来るし、アプリケーション
プログラム2が他のアプリケーションプログラムと重な
らないトランザクション識別子を自分で発行するように
実施することもできる。もちろん、図1の構成にトラン
ザクションマネージャを追加して、そのトランザクショ
ンマネージャがトランザクション識別子を発行するよう
に実施することもできる。
理表31を用いて、トランザクションのコミット処理を
管理する。コミット処理は、前述したように、トランザ
クションの処理結果をコミットかアボートかのいずれか
の状態に決定する処理である。
するコミット管理表31の一例を示す。この例のコミッ
ト管理表31は、コミットシーケンス番号と、そのコミ
ット処理を行っているトランザクションのトランザクシ
ョン識別子と、そのトランザクションの状態との3つ組
の情報を持っている。
いトランザクションを実行しているアプリケーションプ
ログラム2が、トランザクション管理部3にコミット処
理の開始の要求を伝えることによって、開始される。こ
のときに、トランザクション管理部3は、「コミットシ
ーケンス番号」と呼ぶ順序番号を発行する。トランザク
ション管理部3は、このコミットシーケンス番号を用い
て、トランザクションのコミット処理がコミットシーケ
ンス番号の順に完了してアプリケーションプログラム2
に通知されるように制御を行う。
ザクションがコミット処理を実行中であることを示す
「COMMITING」、そのトランザクションがコミ
ットしたことを示す「COMMIT」、そのトランザク
ションがアボートしたことを示す「ABORT」の3つ
がある。ここで、「COMMIT」と「ABORT」
は、それぞれコミットあるいはアボートが確定するとと
もに、コミットの確定またはアボートの確定を呼出し元
のアプリケーションプログラム2には通知したが、後で
説明する更新リストの削除などの「後処理」がまだ完了
していないことを示すものである。
コミット管理表31から削除される。
実行するアプリケーションプログラム2からの指示に従
って、ファイルシステム5の管理下のファイルに対する
アクセスを行う。
すような関係で、アプリケーションプログラム2から見
えるファイル名と、実際にファイルシステム5上で管理
しているファイル名とを対応付けているものとする。す
なわち、実際に下位のトランザクショナルでないファイ
ルシステム5に記録されるファイル名は、アプリケーシ
ョンプログラム2から見えるファイル名に、バージョン
番号を付けたものになっている。
排他制御を行う。すなわち、あるトランザクションによ
ってあるファイルが操作対象とされた場合には、そのフ
ァイルをロックして、他のトランザクションによる操作
を不可とする。また、あるファイルに対するロック解除
のタイミングは、本実施形態では、そのファイルを操作
対象としているトランザクションのコミット処理が開始
された時点としており、非常に早い時点でのロック解除
を可能としている。
ル管理部4に指示された操作対象ファイルがロックされ
ていなければ、ファイル管理部4はファイルシステム5
にアクセスし(そのファイルはそのトランザクションの
ためにロックする)、ロックされていれば、必要な制御
を行う(例えば、アクセスを拒否しアプリケーション2
に暫く待った後にあらためて指示を出して貰うようにす
る、あるいはそのトランザクションをロック解除待ちの
行列に投入する等)。
ハードディスク等の安定記憶装置内のファイルが直接更
新等されるのではなく、一旦ファイル管理部4のバッフ
ァ記憶上で更新等され、コミット処理において一括し
て、ファイル管理部4のバッファ記憶(図示せず)から
ファイルシステム5のハードディスク等の安定記憶装置
に書き戻されるものとする。または、コミット処理以前
における適当な(1回もしくは複数回の)タイミングに
おいてもファイル管理部4のバッファ記憶(図示せず)
からファイルシステム5のハードディスク等の安定記憶
装置に書き戻されるものとする。なお、ファイル管理部
4はバッファ記憶を持たず、ファイルシステム5が持つ
バッファ記憶を使うように実施することもできる。
イルに対して行う操作として、更新(書き換え)と作成
と削除を例にとる。以下では、ファイルに対する更新と
新規作成と削除のそれぞれについて説明する。
ステム1は、ファイルの内容を書き換える更新の処理に
おいて、書き換える前のファイルをコピーした新しいバ
ージョンのファイルを作成し、当該新しいバージョンの
ファイルの中を書き換えるものとする。すなわち、書き
換える前のファイルを待避させた状態にして、そのコピ
ーに対して書き換えを行ったファイルを新しいバージョ
ンとする。
ンを実行しているアプリケーションプログラム2がF1
025という名前のファイルを更新しようとしたとす
る。ファイル管理部4は、アプリケーションプログラム
2からファイル管理部4を通じて指示されたファイル
(F1025)のその時点での最新バージョン(F10
25#32とする)がファイル管理部4のバッファ記憶
に存在するならば、F1025#32をコピーして作成
したF1025#33をそのトランザクションによる更
新対象として使用するようにしている(このトランザク
ションがコミットされたときに、このF1025#33
が、新たな最新バージョンとなる)。また、最新バージ
ョンのファイルF1025#32がファイル管理部4の
バッファ記憶上になければ、F1025#32をファイ
ルシステム5のハードディスク等の安定記憶装置からフ
ァイル管理部4のバッファ記憶にコピーして作成したF
1025#33をそのトランザクションによる更新対象
とする。
作成して更新することで、トランザクションのアボート
時には簡単にファイルを元に戻すことが出来る。
が終了し、コミット処理が始まった場合、コミット処理
中のファイル更新処理において(コミットかアボートか
が確定する前に)、ファイル管理部4のバッファ記憶上
で行われたファイルに対する更新の結果(上記の例の場
合、F1025#33)を、ファイルシステム5のハー
ドディスク等の安定記憶装置に書き戻し(この時点でフ
ァイルシステム5にはF1025#32とF1025#
33が存在する)、そして、トランザクションがコミッ
トかアボートかが確定した後に、必要な後処理を行う。
ミットした場合、後処理ではファイルシステム5とファ
イル管理部4の古いバージョンのファイルF1025#
32を消去すればよい。逆に、トランザクションがアボ
ートしたならば、ファイルシステム5とファイル管理部
4の(コミットしたならば新しいバージョンになるはず
であった)ファイルF1025#33を消去すればよ
い。
ョン番号が「NEW」という特殊なファイル名で作成す
る。例えば、トランザクションを実行しているアプリケ
ーションプログラム2がF7009という名前のファイ
ルを新規に作成することを指示した場合、ファイル管理
部4は、F7009#NEWという名前のファイルを作
成する(なお、このファイルもまずはファイル管理部4
のバッファ記憶上に作成される)。
名前付けをするのは、作成したトランザクションが障害
で中断した場合、それが作成したファイルを検出して削
除できるようにするためである。例えば、F7009#
0などの通常のバージョン番号を付けたファイル名で作
成すると、それが正しいファイルなのか、作成途中で障
害が発生して残っているファイルなのかが判断出来な
い。
ト処理が始まった場合、コミット処理中のファイル更新
処理において、ファイル管理部4のバッファ記憶上のF
7009#NEWを、ファイルシステム5のハードディ
スク等の安定記憶装置に書き戻し(この時点でファイル
システム5とファイル管理部4にF7009#NEWが
存在する)、そして、トランザクションがコミットかア
ボートかが確定した後に、必要な後処理を行う。ファイ
ルを作成したトランザクションがコミットした場合、後
処理ではファイルシステム5とファイル管理部4のF7
009#NEWF7009#0という正しいバージョン
番号のファイル名に変更する。逆に、トランザクション
がアボートしたならば、ファイルシステム5とファイル
管理部4からF7009#NEWを消去すればよい。
を削除する場合は、トランザクションの処理において
は、F5021#97を削除することを記憶(もしくは
予約)しておく。そして、トランザクションの処理が終
了し、コミット処理が始まった場合、ファイルを作成し
たトランザクションがコミットしたならば、後処理にお
いてファイルシステム5(とファイル管理部4にもあれ
ばそこ)からF5021#97を消去する。
カバリー処理のための手順が行われるが、これについて
は後で詳しく説明する。
1によって、どのトランザクションがどのファイルにつ
いてどのような操作(更新・作成・削除)を行ったかを
管理している。図4に、更新管理表41の一例を示す。
図4に例示する更新管理表は、トランザクション識別子
と、そのトランザクションが行ったファイルの更新の履
歴情報との対応を管理している。
報を記録する。既存のファイルを更新して書き換えた場
合には、例えば、 UPD F1025#32 F1025#33 のように、更新を示すUPDというキーワードと、更新
前のファイル名と、更新後のファイル名の組が記録され
る。
ば、 NEW F7009#NEW のように、作成を示すNEWというキーワードと、作成
したファイルの名前の組が記録される。
ば、 REM F5021#97 のように、削除を示すREMというキーワードと、削除
したファイルの名前が記録される。
体的なコミット処理について説明する。
テム1におけるコミット処理の流れの一例を示す。
れ、所望の(1または複数の)ファイルについて更新・
作成・削除のうちの所望の操作を行う。なお、あるトラ
ンザクションがファイルに対して更新や削除の操作を行
う場合には、そのトランザクションは対象とする全ての
ファイルにロックをかけているものとする。
終了し、コミット処理を開始する場合には、まず、トラ
ンザクショナルファイルシステム1は、そのトランザク
ションに対してコミットシーケンス番号を発行する(ス
テップS1)。全てのコミット処理要求は、そのコミッ
ト開始の時点においてコミットシーケンス番号で順序付
けされる。
全ファイルについて、それらの排他制御に用いていたロ
ックを外して、それらのファイルを他のトランザクショ
ンがアクセスしても良い状態にする(ステップS2)。
ここで、トランザクショナルファイルシステム1では、
ファイルを書き換える場合は新しいバージョンを作成す
るものとしているので、この時点でロックを外しても、
コミットするトランザクションが更新したり作成したフ
ァイルの内容を、他のトランザクションに上書きされる
ことはない(ことが保証される)。
全ファイルについて、ファイル更新処理を行う(ステッ
プS3)。ファイル更新処理では、更新した新しいバー
ジョンのファイルに該当するものと、新たに作成したフ
ァイル(バージョン番号がNEWになっているもの)に
該当するものを、ファイルシステム5の管理するハード
ディスク等の安定記憶装置に書き出す処理を行う。この
ファイルの内容についての書き出し処理が正常に完了す
れば、さらに、後で説明する更新リストをファイルシス
テム5の管理するハードディスク等の安定記憶装置に書
き出す処理を行う。
完了すれば、コミットシーケンス番号が自分より小さな
トランザクションのコミット処理がすべて完了するのを
待つ(ステップS4)。
トランザクションもコミットし、その旨を呼出し元のア
プリケーションプログラム2に伝える。
る唯一のトランザクションである場合、あるいは複数の
トランザクションが起動しているが当該トランザクショ
ンが現在コミット処理中のトランザクションのうちで最
も小さいコミットシーケンス番号を持つものである場合
には、上記の更新リストを書き出す処理の正常終了によ
って、ただちにコミットが確定し、コミットを呼出し元
のアプリケーションプログラム2に伝えることができ
る。
を持つトランザクションもコミットかアボートかを確定
して良い状態になる。つまり、トランザクションはコミ
ットシーケンス番号順に、コミットかアボートかの確定
を行う。
テップS5)。後処理では、更新したファイルの古いバ
ージョンのファイルに該当するものと、削除が指示され
たファイルに該当するものを、ファイルシステム5(と
ファイル管理部4)から削除するとともに、新しく作成
したファイルのバージョン番号がNEWになっているも
のがあればそれを0に変更する。そして、それらが完了
すれば、更新リストを削除することができる(この時点
で更新リストを削除する方法もあるが、本実施形態では
コミットが確定した場合には後述するようにこの時点で
は削除せず、後続する最初のコミットされたトランザク
ションのコミット処理が終了した後に削除するものとす
る)。
常に完了しなかった場合、またはそれが正常に完了した
が更新リストを書き出す処理が正常に完了しなかった場
合には、アボートが確定する。アボートした場合には、
後処理で、ファイル更新処理でファイルシステム5に書
き戻した、更新した新しいバージョンのファイルに該当
するものと、新たに作成したファイルに該当するものを
削除し(ファイル管理部4の対応するファイルも削除
し)、それらが完了すれば、更新リストを削除する。
ットシーケンス番号でシリアライズされるが、その順序
で待ち合わせをしなければならないのは、コミットかア
ボートかを確定する時点だけである。従って、複数のト
ランザクションのファイル更新処理や後処理は並行して
実行することができる。これらの処理では複数のファイ
ルをファイルシステム5のハードディスク等の安定記憶
装置に書き出す処理が必要になるので、同時に並行に複
数の書き出し要求がファイルシステム5に出されると、
ファイルシステム5の側で、ハードディスク等のシーク
時間が小さくなるような書き出し順序のスケジューリン
グなどの最適化を行うことが出来る。これにより、ファ
イルシステム5およびハードディスク等の性能を引き出
して活かすことが出来る。
してコミット処理について説明する。
後処理の流れの一例を示す。
498のトランザクションを例にとって説明する。
5とF3479の更新、F7009の作成、F5021
の削除を行うものである。このトランザクションが更新
等の処理を終えた時点では、例えば、ファイル管理部4
のバッファ記憶内に、F1025#32、F1025#
33、F7009#NEW、F3479#52、F34
79#53のファイルが記憶され、ファイルシステム5
内に、F1025#32、F5021#97、F347
9#52のファイルが記憶されている。
処理が開始されると、コミットシーケンス番号を得た
後、まず、ロックの解除を行う。
79、F7009、F5021のファイルのロックが解
除される。この時点で、他のトランザクションはこれら
のファイルにアクセスすることが可能になる。例えば、
他のトランザクションがF1025を更新する場合、F
1025#34が新たに作成され、他のトランザクショ
ンは一旦バッファ記憶上のF1025#34を更新する
ことになる。従って、トランザクション識別子498の
トランザクションがコミット処理に入った時点で、F1
025#33以前のバージョンの内容は不変となる。
トランザクションが「COMMITING」となれば
(トランザクション識別子498のトランザクションが
依然として「COMMITING」であっても)、さら
に他のトランザクションはF1025#35を更新する
ことができる。それ以降も同様に、次々とF1025の
更新をすることができる。
新して書き換えた新しいバージョンのファイルや新しく
作成したファイルを、ファイルシステム5のハードディ
スク等の安定記憶装置へ書き出す処理を、全ての該当す
るファイルに対して並行して実行する。図4の例の場
合、ファイルシステム5内に、F1025#33、F3
479#53、F7009#NEWのファイルが書き戻
される。
「更新リスト」を作成して、これをファイルシステム5
のハードディスク等の安定記憶装置へ書き出す。
るファイルシステム5に対する更新情報を持っているフ
ァイルである。
図7には、図4の例に対応する内容を例示する。
このトランザクションのコミットシーケンス番号の頭に
#を付けた名前のファイルとして記録する。
っている。これは、この更新リスト内の更新情報の数を
示している。この数字は、リカバリ時に更新リスト自身
が正しく書き込まれたものかどうかを判断するのに使用
する。この判断を可能とする他の方法としては、更新リ
スト全体のチェックサムのような情報を持たせる方法も
ある。
1の更新情報と同じものである。この情報があれば、フ
ァイルシステム5中のどのファイルを残してどのファイ
ルを消せば一貫性のある状態に出来るかがわかる。
ディスク等の安定記憶装置に書き出されれば、当該トラ
ンザクションについて、コミットまたはアボートを確定
してよい状態になる。
クションのコミットが確定したことを確認した後に、ア
プリケーションプログラム2にコミット完了を知らせ、
続いて、後処理を開始する。
の中に記録されている、更新して書き換えた古いバージ
ョンのファイルと、削除を指示されたファイルを、実際
にファイルシステム5から消去する処理を、全ての対象
となるファイルに対して並行して行う。さらに、新しく
作成したファイルのバージョン番号がNEWになってい
るので、これを0に変更する処理を行う。
ら、F1025#32、F5021#97、F3479
#52のファイルが削除され、F7009#NEWがF
7009#0にされる。この結果、ファイルシステム5
には、上記ファイルについては、F1025#33、F
3479#53、F7009#0のファイルが格納され
た状態になる。
は不要である。
ンス番号が自分より大きなコミット処理が行われている
場合は、次のコミットシーケンス番号のトランザクショ
ンのコミットが確定するのを待って、更新リストを削除
するものとする。コミットシーケンス番号が自分より大
きなコミット処理がまだ起動されていないならば、その
時点で更新リストを削除して構わない。更新リストが消
えれば、コミット処理を終了する。
カバリ時に、残っている更新リストの中で最もコミット
シーケンス番号が小さな更新リストに対応するトランザ
クションは正しくコミットしたものであるという前提で
リカバリ処理を開始できるようにするためである。
クションがコミット処理に入ったならば、直ちに、それ
が対象としたファイルのロックを解除するので、この時
点で他のトランザクションはそのファイルにアクセス可
能となる。従って、コミット未確定にかかるファイルを
もとに次々の他のトランザクションが更新を行うことが
生じうる。
#32を変更して新バージョンのファイルF1025#
33が作成されたが、トランザクション#1がまだ「C
OMMITING」の状態にあるときに、トランザクシ
ョン#2が1025#33を変更して新バージョンのフ
ァイルF1025#34が作成され、同様に、トランザ
クション#1とトランザクション#2がまだ「COMM
ITING」の状態にあるときに、トランザクション#
3が1025#34を変更して新バージョンのファイル
F1025#35が作成されるということが発生し得
る。
ザクション#1のコミット確定を前提として処理をして
おり、同様に、トランザクション#3はトランザクショ
ン#1とトランザクション#2のコミット確定を前提と
して処理をしていることになる。言い換えると、その前
提が満たされないと、トランザクションはアボートとな
ってしまう。例えば、トランザクション#1のアボート
が確定した場合には、その時点で、トランザクション#
2とトランザクション#3のアボートが確定してしま
う。
した場合、このトランザクションと同じファイルを更新
もしくは削除しているコミット処理中のトランザクショ
ンを同時にアボートするようにしてもよい。例えば、ト
ランザクション#1〜#3が「COMMITING」の
場合、トランザクション#1のアボートが確定した時点
で、ファイル管理部4のバッファ記憶内やファイルシス
テム5にF1025#32〜F1025#35のファイ
ルが記憶されているものとした場合に、トランザクショ
ン#1のアボートによる後処理において、一括してF1
025#33〜F1025#35を削除するようにして
もよい。
は、他の方法も考えられる。
が確定した場合に、そのトランザクションと同じファイ
ルを更新もしくは削除している「COMMITING」
のトランザクションだけでなく、さらに同じファイルを
更新もしくは削除しているコミット処理に入る前の処理
中のトランザクションをも同時にアボート(無効に)す
るようにしてもよい。
トが確定した場合に、そのトランザクションと同じファ
イルを更新もしくは削除している「COMMITIN
G」のトランザクションだけでなく、コミット処理中の
全てのトランザクションを同時にアボート(無効に)し
てしまうようにしてもよい。
トが確定した場合に、起動中の全てのトランザクション
(コミット処理前とコミット処理中の全トランザクショ
ン)を一旦アボート(無効に)してしまい、あらためて
処理を再開するようにしてもよい。
が生じないと想定されるシステムには特に有効である。
リカバリ処理を行う。これは、コミット処理の途中であ
ったトランザクションの状態を、コミットかアボートか
に確定する処理である。
ファイルシステム1におけるリカバリ処理の手順の一例
を示す。
イルシステム5に残っている更新リストを探して、それ
らが正しくコミットしたものかどうかを判断して、必要
な処理を進めて行く。図7に示したように、本実施形態
のトランザクショナルファイルシステム1では、コミッ
トシーケンス番号の頭に#をつけたファイル名で更新リ
ストを記録している。それゆえ、リカバリ時にファイル
システム5に残っている全ての更新リストをみつけて、
それをコミットシーケンス番号順に並べるのは容易であ
る。
た場合、コミットシーケンス番号が最小の更新リストは
正しくコミットしたものである。そこで、最小のコミッ
トシーケンス番号を持つ更新リストから初めて、順に更
新リストを見て行き、その更新リストに従って必要な後
処理を実行して行く。
リストの残っている最小のコミットシーケンス番号をn
とし、その更新リストをUn とする(ステップS1
1)。また、ステップS17で次の更新リスト(すなわ
ちUn+1 )がある場合には、ステップS18においてn
を1増加する。
を調べる(ステップS12)。
報によって、更新リストが正しい状態でないことがわか
ったり、あるいは更新リストのコミットシーケンス番号
が連続していないことが分かれば、それ以降は正しくコ
ミットしていないことが分かる。
リストが残っていた場合においてコミットシーケンス番
号が最小の更新リストは正しくコミットしたものである
ようになっている。
Unが正しい形式であると判断された場合には、更新リ
ストUn内の更新情報に従ってファイルシステムが正し
く更新されているか否かを調べる(ステップS13)。
正しく更新されていないと判断された場合には、更新リ
ストUn内の更新情報に従ってファイルシステムを更新
する(ステップS14)。
(ステップS15)およびステップS13において正し
く更新されていると判断された場合には、後処理を行っ
た後に、更新リストUnを削除する(ステップS1
6)。そして、次の更新リストがあれば(ステップS1
7)、ステップS12に戻って次の更新リストに対する
処理を行う。
ップS12において更新リストUnが正しい形式でない
と判断された場合、ステップS15においてファイルシ
ステムの更新が成功しなかったと判断された場合および
ステップS17において次の更新リストはないと判断さ
れた場合には、ループ処理を抜けてステップS19に移
り、残っている全ての更新リストによるファイルの更新
を取り消して、更新リストを削除する。
において、更新リストUnが正しい形式である場合に、
更新リストが図7のようであり、それらファイルについ
て、ファイルシステム5内に、F1025#33、F3
479#53、F7009#0のファイルが格納された
状態であれば、ファイルシステム5が正しく更新されて
いるので、更新リストを削除すればよい。一方、ファイ
ルシステム5内に、F1025#32、F1025#3
3、F5021#97、F7009#NEW、F347
9#52、F3479#53のファイルが格納された状
態であれば、ファイルシステム5が正しく更新されてい
ないので、上記のように正しく更新する。
トに基づいたリカバリ処理は終了する。
ァイルシステム5には書き込んだが、更新リストが書き
込まれる前に障害が発生したような場合には、これまで
の手順では回収されないファイルが残る。このようなフ
ァイルの存在は、次のそのファイルを使用する時点で検
出できる。すなわち、通常、新しいファイルを使用開始
する場合、そのファイルのバージョンは1つだけ存在す
るはずである。それが、複数あった場合は、過去にトラ
ンザクションが更新しようとしたが、障害で中断された
ものであると判断できる。その結果、複数のバージョン
のうち、最もバージョン番号の小さなものだけを残し
て、それ以外は削除して構わない。新しく作成するファ
イルに関しても同様で、次に同じ名前で新しいファイル
を作成しようとした時点で検出可能である。
時点で回収を行う方式は、再起動時のリカバリ処理の負
荷を軽減する働きを持つ。他の実施方式としては、再起
動時に上記のリカバリ処理を行った後、ファイルシステ
ム5中に複数のバージョンが残っているファイルと、バ
ージョン番号がNEWになっているファイルとを検索
し、それらの後始末を行う方式も可能である。
ションについて説明する。
ンがファイルをアクセスした時点で新しいバージョンの
ファイルを作成することによって、旧バージョンのファ
イルを待避することとし、これに基づいた排他制御を行
ったが、本実施形態において、ファイルを待避するタイ
ミングは、上記の例のタイミング以降で且つコミット処
理でのロック解除のタイミングまでの間の様々なタイミ
ングで行うことが可能である。
あるトランザクションがコミット処理に入った直後にフ
ァイルを待避する例について説明する。
ルシステム5内のファイル(Aとする)を更新する場
合、バッファ記憶上にコピーした同名のファイルAを更
新する。
コミット処理に入り、コミットシーケンス番号を発行し
た後に、バッファ記憶上のファイルAをコピーしたファ
イル(別の名前で管理するものとする)を作成し、ロッ
クを解除し、一方を待避用とし、他方を次のトランザク
ションによる更新用とする。
は、待避用とした更新後のファイルAをファイルシステ
ム5に書き戻す。なお、ファイルシステム5には、ファ
イルシステム5の機能によりまたはファイル管理部4の
機能により、更新前のファイルAも例えば名前を変えて
保存・管理されるものとする。
場合には、更新前のファイルAを削除し、アボートした
場合には、更新後のファイルAを削除する。
ンザクションが同時にコミット処理中となっている場合
には、複数バージョンのファイルが存在し得るが、基本
的には同様の処理を行えばよい。
ションのACID性をそれ自体では備えていないファイ
ルシステムを用いて、トランザクションのACID性を
実現することができる。また、複数のトランザクション
のコミット処理を非同期に並列に実行できる。その他、
ファイルシステムやディスク装置の性能を引き出すこと
ができる、ロック待ちでブロックする期間を短くでき
る、トランザクションの並行性をあげてシステム全体の
性能を向上させることができる、などの様々な効果を得
ることができる。
図6で説明したように、ファイル更新処理において、更
新したファイルや作成したファイルの書き出しが完了し
たことを確認した後で、更新リストの書き出しを行って
いる。本実施形態では、図9に示すように、更新リスト
の書き出しを、更新したファイルや作成したファイルの
書き出しと同じタイミングで行うことによって、ファイ
ル更新処理の時間を短縮するようにしたものである。
中心に説明する。
作成したファイルの書き出しを待ち合わせることで、更
新リストに書かれているファイルが必ず正しくファイル
システム5中に存在することを保証できた。これに対し
て、同時に書き出しを行うと、これを保証する新たな手
段が必要になる。その手段として、本実施形態では、図
10に示すように更新リストを拡張する。
えて、UPDおよびNEWで新しく作成するファイルが
正しくファイルシステム5に書き出されたかどうかを検
証するのに必要な情報を持っている。本実施形態では、
ファイルのサイズとチェックサムを持っている。図10
の例では、UPDで更新されるF1025#33という
ファイルのサイズは15218バイトで、その内容のチ
ェックサムは16進数でD75Eであることを示してい
る。
1の実施形態と基本的には同様である。異なる点は、リ
カバリ処理のときの判定条件である。すなわち、本実施
形態のリカバリ処理時には、更新リストが正しく残って
いても、その中に書かれた新しいファイルのサイズとチ
ェックサムがあっていなければ、この更新リストに対応
するトランザクションは正しくコミットしていないと判
断するようにすれば、後は第1の実施形態と同じであ
る。
態について説明する。
ョンプログラム2が、複数のファイルシステム中のファ
イルを更新するようなシステムも存在する。このような
システムにおいては、トランザクショナルなファイルシ
ステムが1つあれば、本発明を適用することで、他のト
ランザクショナルでないファイルシステムも簡単にトラ
ンザクショナルにすることができる。本実施形態では、
このような場合について説明する。
実行するアプリケーションプログラム2が複数のファイ
ルシステム中のファイルを更新する場合、トランザクシ
ョナルなファイルシステムを1つマスターファイルシス
テム(11)として用いる。このマスターファイルシス
テム11は、本発明を適用して第1の実施形態や第2の
実施形態のように実装したものでも良いし、その他の手
法を用いて実装したものでも構わない。ここでは、マス
ターファイルシステムを本発明の第1の実施形態で実装
した例を使って説明する。このとき、スレーブファイル
システム12は、図12に示すように、通常のトランザ
クショナルでないファイルシステム15と、ファイル管
理部14とから構成される。なお、図11のトランザク
ション管理部13および図12のファイル管理部14の
役割は、図1の構成のトランザクション管理部3および
ファイル管理部4と同様である。
示す手順でコミット処理を行う。この処理の流れは、基
本的には図6に示す第1の実施形態のコミット処理と同
じである。異なる点は、第1の実施形態では更新したフ
ァイルや作成したファイルの書き出し先と同じファイル
システム5上に更新リストを書き出していたが、本実施
形態では、更新リストをマスターファイルシステム11
に書き込む点が異なる。スレーブファイルシステムの更
新リストを、同じトランザクションのマスターファイル
システムへの更新したファイルや作成したファイルの書
き出しと同じ扱いで書き出す。
スターファイルシステム11とスレーブファイルシステ
ム12のそれぞれにおいて自身で管理するファイルシス
テム15に書き込むが、更新リストについては、マスタ
ーファイルシステム11とスレーブファイルシステム1
2のいずれにおいてもマスターファイルシステム11の
管理するファイルシステム15に書き込む。
は、例えば、自身の更新リストの、自身で管理するファ
イルシステム15への書き込みが全て正常に完了し、か
つ、先行する必要な全てのトランザクションがコミット
した場合に、当該トランザクションのコミットを確定
し、それ以外の場合に、当該トランザクションのアボー
トが確定する。マスターファイルシステムでコミットが
確定すれば、マスターファイルシステムに書かれたスレ
ーブファイルシステムの更新リストも正しく書き出され
ていることが保証できる。各々のスレーブファイルシス
テム12は、当該トランザクションがマスターファイル
システム11においてコミットされた場合に、(ファイ
ルの内容の書き込みと)更新リストの書き込みが成功し
た(あるいはコミットした)と判断し、アボートされた
場合に、例えば、更新リストの書き込みが失敗した(あ
るいはアボートした)と判断する。
システム11が正常にコミットすれば、更新リストも正
しく残り、逆にマスターファイルシステム11がアボー
トすれば、更新リストは残らない。
発生した時の処理も簡単になる。すなわち、マスターフ
ァイルシステム11に残っている全てのスレーブファイ
ルシステムの更新リストは正しくコミットしたもである
ので、その中に記録されている更新を全て反映させて構
わない。
に関しては、第1の実施形態と同じく、次にそのファイ
ルをアクセスするときなどに検出して回収することがで
きる。
テム12の更新リストをマスターファイルシステム11
の管理するファイルシステム15に書き込むようにした
が、その代わりに、全部または一部のスレーブファイル
システム12について、更新リストを自身の管理するフ
ァイルシステム15に書き込み、そのようなスレーブフ
ァイルシステム12からマスターファイルシステム11
に、更新リストの書き込みを正常に完了した旨(あるい
は、その更新リストへのアクセス方法を示す情報)を通
知して、マスターファイルシステムはその情報を自身の
更新リストに記入するようにしてもよい。
に用いるバッファ記憶がファイル管理部4内にあるもの
として説明したが、このバッファ記憶は、ファイルシス
テム5内にあってもよいし、それら以外のところにあっ
ても構わない。
ても実現可能である。
の手段を実行させるための(あるいはコンピュータを所
定の手段として機能させるための、あるいはコンピュー
タに所定の機能を実現させるための)プログラムを記録
したコンピュータ読取り可能な記録媒体としても実施す
ることもできる。
るものではなく、その技術的範囲において種々変形して
実施することができる。
が処理を開始してからそれがコミットするまでの間にト
ランザクションがバッファ領域上で更新したファイルの
内容をその更新を後で取り消すことが可能な形でトラン
ザクショナルでないファイルシステムの管理する記憶装
置に書き込む処理を行い、この処理開始からコミットま
での間トランザクションがバッファ領域上でファイルに
対して行った全ての更新動作を記憶した更新リストをト
ランザクショナルでないファイルシステムに書き込む処
理を行い、それら2つの書き込み処理がいずれも成功し
た場合にトランザクションをコミットしたものと確定す
るようにしたので、トランザクショナルでないファイル
システムをベースにしてトランザクショナルなファイル
システムを実現することができる。
ファイルシステムの構成例を示す図
を示す図
ット処理の流れの一例を示す図
の流れの一例を示す図
理の流れの他の例を示す図
とスレーブファイルシステムからなるトランザクショナ
ルファイルシステムの構成例を示す図
を示す図
理の流れのさらに他の一例を示す図
Claims (10)
- 【請求項1】トランザクションが処理を開始してから該
トランザクションがコミットするまでの間に該トランザ
クションがバッファ領域上で更新した一つ以上のファイ
ルの内容を、該更新を後で取り消すことが可能な形態
で、ファイルシステムの管理する記憶装置に書き込む処
理を行い、 前記トランザクションが処理を開始してから該トランザ
クションがコミットするまでの間に該トランザクション
がバッファ領域上でファイルに対して行った全ての更新
動作を記憶した更新リストを、ファイルシステムの管理
する記憶装置に書き込む処理を行い、 前記内容と前記更新リストの双方の書き込み処理が成功
した場合に、前記トランザクションをコミットしたもの
と確定し、 前記内容と前記更新リストのいずれかの書き込みが失敗
した場合に、前記トランザクションをアボートすること
を特徴とするトランザクション管理方法。 - 【請求項2】前記更新リストを書き込む処理は、前記フ
ァイルの内容を書き込む処理が正常に完了した後に行
い、 前記更新リストの書き込み処理が成功した場合に、前記
内容と前記更新リストの双方の書き込み処理が成功した
と判断し、 前記更新リストを書き込む処理が行われなかったか、前
記更新リストの書き込み処理が失敗した場合に、前記内
容と前記更新リストのいずれかの書き込み処理が失敗し
たと判断することを特徴とする請求項1に記載のトラン
ザクション管理方法。 - 【請求項3】前記更新リストを書き込む処理は、前記フ
ァイルの内容を書き込む処理と共に行い、該更新リスト
を書き込む際に、該更新リストに前記ファイルの内容が
正常に書き込まれたか否かを判断するための情報を含ま
せ、 前記ファイル内容を書き込む処理および前記更新リスト
を書き込む処理が正常に完了したか、書き込まれた該更
新リストに含まれる前記情報により前記ファイルの内容
が正常に書き込まれていると判断される場合に、前記内
容と前記更新リストの双方の書き込む処理が成功したと
判断し、 前記更新リストが書き込まれなかったか、書き込まれた
前記更新リストに含まれる前記情報により前記ファイル
の内容が正常に書き込まれていないと判断される場合
に、前記内容と前記更新リストのいずれかの書き込み処
理が失敗したと判断することを特徴とする請求項1に記
載のトランザクション管理方法。 - 【請求項4】複数のトランザクションがコミット処理を
開始した順番を管理しておき、 前記トランザクションについての前記ファイルの内容お
よび前記更新リストの書き込み処理が双方とも成功した
かいずれかが失敗したかの判断を、管理された前記順番
で該トランザクションの直前のトランザクションがコミ
ットかアボートかが確定した後に行い、 前記内容と前記更新リストのいずれかの書き込み処理が
失敗した場合に、前記トランザクションをアボートする
と共に、少なくとも該トランザクションが更新したファ
イルを参照あるいは更新した現在コミット処理中のトラ
ンザクションをアボートすることを特徴とする請求項1
に記載のトランザクション管理方法。 - 【請求項5】前記トランザクションが更新したファイル
を参照あるいは更新した現在コミット処理中のトランザ
クションをアボートするのに加えて、前記トランザクシ
ョンが更新したファイルを参照あるいは更新した現在処
理中であってまだコミット処理を開始していないトラン
ザクションもアボートすることを特徴とする請求項4に
記載のトランザクション管理方法。 - 【請求項6】あるトランザクションが処理を開始してか
らそのコミット処理が開始した後までの間の所定のタイ
ミングで、前記あるトランザクションが更新対象とする
ファイルのその時点での内容を待避させた状態にし、 前記あるトランザクションがコミット処理を開始した場
合に、該あるトランザクションに関連して前記待避が行
われた前記ファイルに対する排他制御を解除して、他の
トランザクションが前記ファイルに対して更新動作を行
えるようにし、 前記排他制御を解除した後に、前記あるトランザクショ
ンが更新した前記ファイルの内容を、該更新を後で取り
消すことが可能な形態で、前記ファイルシステムの管理
する記憶装置に書き込む処理を行うことを特徴とする請
求項4に記載のトランザクション管理方法。 - 【請求項7】前記ファイルの内容は、スレーブファイル
システムの管理する記憶装置に書き込む処理を行い、 前記更新リストに関する情報を、マスターファイルシス
テムの管理する記憶装置に書き込む処理を行い、 前記マスターファイルシステムは、各トランザクション
がその処理開始時からコミット時までに一つ以上のファ
イルに対して行った更新が、トランザクション単位で全
て有効になるか全て無効になるかいずれかの状態にしか
ならないことを保証するための処理を行い、 前記スレーブファイルシステムは、前記トランザクショ
ンが前記マスターファイルシステムにおいてコミットさ
れた場合に、前記内容と前記更新リストの双方の書き込
み処理が成功したと判断し、 前記スレーブファイルシステムは、前記トランザクショ
ンが前記マスターファイルシステムにおいてアボートさ
れた場合に、前記内容と前記更新リストのいずれかの書
き込み処理が失敗したと判断することを特徴とする請求
項1に記載のトランザクション管理方法。 - 【請求項8】ファイルシステムの管理するファイルをア
クセスして処理を行うトランザクションを管理するトラ
ンザクション管理装置であって、 トランザクションが処理を開始してから該トランザクシ
ョンがコミットするまでの間に該トランザクションがバ
ッファ領域上で更新した一つ以上のファイルの内容を、
該更新を後で取り消すことが可能な形態で、前記ファイ
ルシステムの管理する記憶装置に書き込む処理と、前記
トランザクションが処理を開始してから該トランザクシ
ョンがコミットするまでの間に該トランザクションがバ
ッファ領域上でファイルに対して行った全ての更新動作
を記憶した更新リストを、前記記憶装置に書き込む処理
とを行う手段と、 前記内容と前記更新リストの双方の書き込み処理が成功
した場合に、前記トランザクションをコミットしたもの
と確定し、前記内容と前記更新リストのいずれかの書き
込みが失敗した場合に、前記トランザクションをアボー
トする手段とを備えたことを特徴とするトランザクショ
ン管理装置。 - 【請求項9】ファイルシステムの管理するファイルをア
クセスして処理を行うトランザクションを管理するトラ
ンザクション管理装置であって、 複数のトランザクションがコミット処理を開始した順番
を管理する手段と、 コミット処理を開始したあるトランザクションが、ファ
イルをアクセスする処理を開始してからコミット処理を
開始するまでの間に、バッファ領域上で更新した一つ以
上のファイルの内容を、前記ファイルシステムの管理す
る記憶装置に書き込む処理を行う手段と、 管理された前記順番で前記あるトランザクションの直前
のトランザクションがコミットかアボートかが確定した
後に、前記書き込む処理が成功していれば前記あるトラ
ンザクションをコミットしたものと確定し、そうでない
場合には前記あるトランザクション、および少なくとも
該あるトランザクションが更新したファイルを参照ある
いは更新した現在コミット処理中のトランザクションを
アボートする手段とを備えたことを特徴とするトランザ
クション管理装置。 - 【請求項10】マスターファイルシステムとスレーブフ
ァイルシステムを含む複数のファイルシステムがそれぞ
れ管理するファイルをアクセスして処理を行うトランザ
クションを管理するトランザクション管理装置であっ
て、 トランザクションが処理を開始してから該トランザクシ
ョンがコミットするまでの間に該トランザクションがバ
ッファ領域上で更新した一つ以上のファイルであって、
前記スレーブファイルシステムの管理するファイルの内
容を、該更新を後で取り消すことが可能な形態で、前記
スレーブファイルシステムの管理する記憶装置に書き込
む処理を行う手段と、 前記トランザクションが処理を開始してから該トランザ
クションがコミットするまでの間に該トランザクション
がバッファ領域上で前記スレーブファイルシステムの管
理するファイルに対して行った全ての更新動作を記憶し
た更新リストを、前記マスターファイルシステムの管理
する記憶装置を利用して書き込む処理を行う手段と、 前記マスターファイルシステムの管理する記憶装置に対
する前記トランザクションの全ての更新動作に係る書き
込み処理が正常に行われたと判断される場合に、前記ト
ランザクションのコミットを確定し、それ以外の場合
に、前記トランザクションをアボートする手段と、 前記スレーブファイルシステムにおいて、前記マスター
ファイルシステムにおける前記トランザクションのコミ
ットの確定もしくはアボートに従って、前記トランザク
ションのコミットの確定もしくはアボートを行う手段と
を備えたことを特徴とするランザクション管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28005299A JP3785004B2 (ja) | 1999-09-30 | 1999-09-30 | トランザクション管理方法及びトランザクション管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28005299A JP3785004B2 (ja) | 1999-09-30 | 1999-09-30 | トランザクション管理方法及びトランザクション管理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001101053A true JP2001101053A (ja) | 2001-04-13 |
JP3785004B2 JP3785004B2 (ja) | 2006-06-14 |
Family
ID=17619642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28005299A Expired - Fee Related JP3785004B2 (ja) | 1999-09-30 | 1999-09-30 | トランザクション管理方法及びトランザクション管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3785004B2 (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008524688A (ja) * | 2004-12-15 | 2008-07-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Blobを管理するためのシステム及び方法 |
JP2008225979A (ja) * | 2007-03-14 | 2008-09-25 | Hitachi Ltd | 情報処理装置、プログラム及び情報処理方法 |
JP2009175854A (ja) * | 2008-01-22 | 2009-08-06 | Fujitsu Ltd | データ整合性を確保するためのプログラム、方法及びコンピュータ・システム |
JP2012155498A (ja) * | 2011-01-25 | 2012-08-16 | Fujitsu Ltd | データベースサーバ装置、データベース更新方法及びデータベース更新プログラム |
JP2013077063A (ja) * | 2011-09-29 | 2013-04-25 | Fujitsu Ltd | データ管理プログラム、ノード、および分散データベースシステム |
JP2014063314A (ja) * | 2012-09-20 | 2014-04-10 | Toshiba Corp | Icカード |
JP2016534439A (ja) * | 2013-08-01 | 2016-11-04 | ロンギチュード エンタープライズ フラッシュ エスエイアールエル | アトミック記憶操作のためのシステム及び方法 |
WO2020241727A1 (ja) * | 2019-05-28 | 2020-12-03 | 株式会社Murakumo | 情報処理システム |
-
1999
- 1999-09-30 JP JP28005299A patent/JP3785004B2/ja not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008524688A (ja) * | 2004-12-15 | 2008-07-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Blobを管理するためのシステム及び方法 |
JP2008225979A (ja) * | 2007-03-14 | 2008-09-25 | Hitachi Ltd | 情報処理装置、プログラム及び情報処理方法 |
JP2009175854A (ja) * | 2008-01-22 | 2009-08-06 | Fujitsu Ltd | データ整合性を確保するためのプログラム、方法及びコンピュータ・システム |
JP2012155498A (ja) * | 2011-01-25 | 2012-08-16 | Fujitsu Ltd | データベースサーバ装置、データベース更新方法及びデータベース更新プログラム |
JP2013077063A (ja) * | 2011-09-29 | 2013-04-25 | Fujitsu Ltd | データ管理プログラム、ノード、および分散データベースシステム |
JP2014063314A (ja) * | 2012-09-20 | 2014-04-10 | Toshiba Corp | Icカード |
US9798739B2 (en) | 2012-09-20 | 2017-10-24 | Kabushiki Kaisha Toshiba | IC card and IC card control method |
JP2016534439A (ja) * | 2013-08-01 | 2016-11-04 | ロンギチュード エンタープライズ フラッシュ エスエイアールエル | アトミック記憶操作のためのシステム及び方法 |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
WO2020241727A1 (ja) * | 2019-05-28 | 2020-12-03 | 株式会社Murakumo | 情報処理システム |
JP2020194335A (ja) * | 2019-05-28 | 2020-12-03 | 株式会社Murakumo | 情報処理システム |
JP7398066B2 (ja) | 2019-05-28 | 2023-12-14 | 株式会社Murakumo | 情報処理システム |
Also Published As
Publication number | Publication date |
---|---|
JP3785004B2 (ja) | 2006-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4237354B2 (ja) | トランザクション処理方法及びトランザクション処理システム | |
JP2505112B2 (ja) | トランザクション管理方法 | |
US6247024B1 (en) | Method and system for performing deferred file removal in a file system | |
JP5021677B2 (ja) | デルタページャを使用した状態の管理 | |
JP3593366B2 (ja) | デ−タベ−ス管理方法 | |
AU678804B2 (en) | Apparatus and method for moving open files | |
CN1755635B (zh) | 事务型存储器访问的混合硬件软件实现 | |
US9519551B2 (en) | Recovery processing for database in persistent system | |
JP3763992B2 (ja) | データ処理装置及び記録媒体 | |
JP4049293B2 (ja) | 情報システムにおいて一貫性を維持するためのトランザクションシステム及び方法 | |
US7987166B2 (en) | Atomic renaming and moving of data files while permitting lock-free look-ups | |
US11132350B2 (en) | Replicable differential store data structure | |
JP4295333B2 (ja) | データベースの制御方法及びプログラム | |
JP2001101044A (ja) | トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム | |
JPH103416A (ja) | 情報処理装置およびその方法 | |
JPH11514768A (ja) | ファイルの設定状態の復元 | |
US6658541B2 (en) | Computer system and a database access method thereof | |
JP3785004B2 (ja) | トランザクション管理方法及びトランザクション管理装置 | |
JPH10283228A (ja) | マルチシステム環境のログ・ストリームを圧縮するシステム | |
JP3138575B2 (ja) | フアイル複写移行方式 | |
JP2002024037A (ja) | ダイナミック・リンク・ライブラリ・ファイルの更新方法 | |
JP2004062473A (ja) | データベース管理方法およびシステム | |
JP3778720B2 (ja) | ソフトウェア更新方法 | |
JPH0324648A (ja) | ファイル同時アクセス制御方式 | |
JP2007179178A (ja) | キャッシュ制御方法、装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050913 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051114 |
|
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: 20060314 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060316 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100324 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100324 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110324 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120324 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130324 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140324 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |