説明

データ格納システムおよびデータ格納プログラム

【課題】アトミックトランザクションが可能で、且つ、各ユーザが他人のデータ処理の影響を受けない不揮発性記録媒体用のデータ格納システムを提供する。
【解決手段】アトミック性のあるデータはハードディスク上のブロックに格納される。ブロックはハードディスク上のみに存在する確定ブロック集合体P1と、所定のタイミングで確定ブロック集合体に変換される次世代確定ブロック集合体C1と、確定ブロック集合体C1に基づいて、ユーザごとに作成されるアトミックブロック集合体S3とを含む。ユーザAは、S3に対して所望のデータの変更等を行い、データ処理を終了するときには、データを格納するブロックの集合体をアトミックブロック集合体S4から確定ブロック集合体C2と一体化させて確定ブロック集合体P3としてハードディスク上に格納する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、アトミックトランザクション(部分的にコミットできないトランザクションであり、完全に実行されるか、全く実行されないかのどちらかしかない)の可能なデータ格納システムおよびデータ格納プログラムに関する。
【背景技術】
【0002】
従来のアトミックトランザクションの可能なデータ格納システムが、たとえば、特開平2006−106868号公報(特許文献1)に開示されている。特許文献1は、ファイル管理システムとして、ログ方式とサイドファイル方式とがある点、および、サイドファイル方式のシャドウページ方式の欠点をあげるとともに、それを解決するファイルシステムが開示されている。
【特許文献1】特開平2006−106868号公報(要約)
【発明の開示】
【発明が解決しようとする課題】
【0003】
従来のアトミック性を有するデータ格納システムは上記のように構成されていた。ログ方式のファイルシステムが有利であると記載されているが、ログ方式のファイルシステムはコストが高いという問題があった。また、従来のファイルシステムにおいては、複数のユーザがアクセスするハードディスクのような不揮発性記録媒体において、ユーザごとに別々に使用されるファイルについて、あるユーザがあるファイルを確定しようとすると、他のユーザが処理している他のファイルも同時に確定される場合があったため、たとえば、電源断時に、個々のユーザの意図しないデータが格納され、ユーザが他のユーザの処理の影響を受けるという問題があった。
【0004】
この発明は、上記のような問題を解消するためになされたもので、アトミックトランザクションが可能で、且つ、各ユーザが他人のデータ処理の影響を受けないデータ格納システムおよびデータ格納プログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
この発明に係るデータ格納システムは、複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムであって、データは所定のブロック内に保持され、ブロックは不揮発性記録媒体上のみに存在し、アトミック性を有する確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在することができ、所定のタイミングで確定ブロック集合体に変換される次世代確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在することができ、次世代確定ブロック集合体に基づいて、ユーザごとに作成されるアトミックブロック集合体とに変換可能であり、確定ブロック集合体から次世代確定ブロック集合体を形成する第1ブロック形成手段と、次世代確定ブロック集合体からアトミックブロック集合体を形成する第2ブロック形成手段と、アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けるブロック操作受付け手段と、操作受付け手段がユーザからのブロック操作を受付けたとき、アトミックブロック集合体を次世代確定ブロック集合体を経由して確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段とを含む。
【0006】
なお、ここで、不揮発性記録媒体上以外の場所とは、RAM上、CPUの一部に設けられたキャッシュ等を含む。
【0007】
好ましくは、遷移手段は、アトミック性を有するデータを格納した確定ブロック集合体の位置を特定するアトミックブロック位置特定手段を含む。
【0008】
さらに好ましくは、アトミックブロック位置特定手段は、それぞれが、アトミック性を有するデータを保持したブロックを特定するブロック番号と、インクリメントカウンタとを有する、一対のスーパーブロックを含み、アトミック性を有するデータが新たなブロックに書き込まれるごとに、一対のブロック番号のうちの一方のブロック番号およびインクリメントカウンタの値が順に更新される。
【0009】
それぞれのスーパーブロックは、一対の、アトミック性を有するデータを保持したブロックを特定するブロック番号と、インクリメントカウンタとを有し、一対の、アトミック性を有するデータを保持したブロックを特定するブロック番号と、インクリメントカウンタには、同一のデータが格納されるのが好ましい。
【0010】
次世代確定ブロック集合体またはアトミックブロック集合体は、確定ブロック集合体の中から必要なブロックをコピーして作成されるのが好ましい。
【0011】
ブロック集合体のそれぞれのブロックは、ブロック番号管理テーブルを含み、ブロック番号管理テーブルは、データが格納される物理的なブロック番号とブロックIDとの関係を格納してもよい。
【0012】
また、確定ブロック集合体、次世代確定ブロック集合体およびアトミックブロック集合体はユーザごとに変更の可能なデータを格納するユーザデータブロックと、ユーザデータブロックを管理するブロック番号管理テーブルとを含んでもよい。
【0013】
なお、次世代確定ブロック集合体およびアトミックブロック集合体は不揮発性記録媒体上のブロックのみを使用してもよい。
【0014】
この発明の他の局面においては、データ格納プログラムは、コンピュータを、複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムとして作動させる。データは所定のブロック内に保持され、ブロックは不揮発性記録媒体上のみに存在し、アトミック性を有する確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在し、所定のタイミングで確定ブロック集合体に変換される次世代確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在し、次世代確定ブロック集合体に基づいて、ユーザごとに作成されるアトミックブロック集合体とに変換可能であり、プログラムは、コンピュータを、確定ブロック集合体から次世代確定ブロック集合体を形成する第1ブロック形成手段と、次世代確定ブロック集合体からアトミックブロック集合体を形成する第2ブロック形成手段と、アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けるブロック操作受付け手段と、操作受付け手段がユーザからのブロック操作を受付けたとき、アトミックブロック集合体を次世代確定ブロック集合体を経由して確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段として作動させる。
【発明の効果】
【0015】
アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けると、アトミックブロック集合体は確定ブロック集合体にアトミック性を保持した状態で遷移されて確定される。
【0016】
その結果、アトミックトランザクションが可能で、且つ、各ユーザが他人のデータ処理の影響を受けない不揮発性記録媒体用のデータ格納システムを提供できる。
【発明を実施するための最良の形態】
【0017】
以下、この発明の実施の形態を、図面を参照して説明する。図1はこの発明に係るデータ格納システムが適用されるコンピュータシステムの構成を示すブロック図である。図1を参照して、コンピュータシステム10は、システム全体を制御するCPU(Central Processing Unit)11と、CPU11にバス18を介して接続されたRAM(Random Access Memory)12、ディスプレイ13、キーボード14、ハードディスク15、通信装置16を含む。複数のユーザがそれぞれのコンピュータから通信装置16を介してこのコンピュータシステムのハードディスク15にアクセスするものとする。
【0018】
図2はこの実施の形態におけるデータ格納システムの位置づけを示す図である。図2を参照して、データ格納システムは、ユーザがハードディスク15を用いてデータを格納する場合に使用される。ハードディスク15は、所定のバイト単位で読み書き可能(上書き可能)である。このシステムでは、ハードディスク15の有する複数のデータ格納ブロックに、ユーザが所望のデータを格納するものとして説明する。
【0019】
また、このデータ格納システムにおいては、データはアトミック性を有しており、個々のユーザがファイルを閉じるときには、ユーザごとにファイルはアトミック性を有するようにして閉じられる。なお、あるブロックのデータをあるユーザが処理中は、他のユーザはそのブロックのデータを処理できない。
【0020】
なお、ここで、ハードディスク15は、読み込み中の不意の電源断においては、全てのブロックの状態に何も影響を与えず、書き込み中の不意の電源断においては、書き込み中であった単一のブロックのみが不定の状態となり、それ以外のブロックには影響を与えないことが保証される複数のブロックを有するものとする。
【0021】
図3は、この実施の形態におけるデータ格納システムにおけるデータを格納するブロックの集合体を説明するための図である。この実施の形態においては、それぞれのブロック集合体は、確定ブロック集合体、次世代確定ブロック集合体、および、アトミックブロック集合体の3つの形態を有する。確定ブロック集合体とは、ハードディスク15上のブロックの一部を使用し、ユーザにとって意味のあるデータを格納した複数のユーザデータブロックとユーザデータブロックを管理する一つ以上の管理ブロックとから構成される一貫性の取れたブロックの集合体である。
【0022】
ここで、ユーザデータブロックと管理ブロックについては後述するが、図18で説明する、物理ブロック番号PB2に格納されたブロック番号管理テーブルが、管理ブロックの一例であり、ユーザのデータが格納された物理ブロック番号PB3等がユーザデータブロックの一例である。
【0023】
次世代確定ブロック集合体はハードディスク15とたとえば、RAM12にまたがって存在し、確定ブロック集合体に移る準備ができている状態をいう。これも常に一つだけ存在する。このブロック集合体は、確定ブロック集合体に含まれる全てのブロックを決して上書き修正せず、修正する必要のあるユーザデータブロックおよび管理ブロックのみを、ハードディスク15上の確定ブロック集合体に含まれないブロックのみを使用して修正することで一貫性の取れる状態を作ることが可能である。
【0024】
アトミックブロック集合体はハードディスク15とRAM12とにまたがって存在する。トランザクションに対応し、トランザクション開始時に次世代確定ブロック集合体から分岐する。トランザクション終了時に次世代確定ブロック集合体に変更部分をマージ(合併)し、消滅する。複数存在してもよいし、存在しなくてもよい。
【0025】
すなわち、このブロックは、ユーザがアトミックな処理を期待する1つ以上のユーザデータブロックに対する修正を、確定集合体かつ次世代確定ブロック集合体に含まれない、ハードディスク15上のブロックを使用して修正し、アトミックな処理が終わった時点で、その修正した全てのユーザデータブロックを、次世代確定ブロック集合体の管理ブロックの修正のみで、次世代確定ブロック集合体の構成ブロックへ併合することが可能である。
【0026】
次に、データ格納システムにおけるCPU11の動作について説明する。図4〜図15はこのデータ格納システムを作動させるCPU11が行う動作を示すフローチャートである。
【0027】
図4は、この実施の形態におけるデータ格納システムにおける通常時の処理を示すフローチャートである。図4を参照して、通常時は、電源がオンされると、システムが初期化され(ステップS11、以下、ステップを省略する)、ユーザの操作を受付ける(S12)。このユーザの処理は、キーボード14等で行われる。ユーザの操作は、アトミック操作開始宣言およびアトミックID取得(S14)、アトミック操作終了宣言(S15)、新ブロックID取得(S16)、ブロックデータ読み込み(S17)、ブロックデータ書き込み(S18)、ブロック開放(S19)、または、同期(sync、S20)のいずれかを含む。これらの処理を終了すると、システム終了処理を行って(S21)、電源がオフされる。
【0028】
ここで、アトミック操作開始宣言とは、ユーザがアトミック性を保持しながらデータ処理を開始することをいう。アトミックIDとは、ユーザを識別するために使用されるものである。すなわち、この実施の形態においては、アトミックIDとブロックIDとを用いてデータの格納されたブロックを特定する。なお、ブロックIDというのは、ハードディスク15の物理ブロック番号を間接的に指示するものである。
【0029】
また、この実施の形態においては、同期処理によって、ユーザの意思による任意のタイミングで、作成されたデータ等が、ハードディスク15上に格納される。
【0030】
なお、ここで示したユーザの複数の操作中の任意のタイミングで電源断が生じうる。次に、図4のS11で示したシステム初期化処理について説明する。図5はシステム初期化処理の内容を示すフローチャートである。図5を参照して、システム初期化処理においては、まず、スーパーブロック判定を行い(S111)、ついで、次世代確定ブロック集合体オープン処理を行う(S112)。
【0031】
ここで、スーパーブロックについて説明する。スーパーブロックとは、アトミック性を有するデータを格納した最新のブロックを特定するために使用される一対のブロックである。図16にスーパーブロックの一例を示す。スーパーブロックも通常のデータと同様に、ハードディスク15の所定のブロックに格納されている。ここでは、理解の容易のために、ハードディスク15の物理ブロック番号の0と1に一対のスーパーブロック21,22が格納されている例について説明する。
【0032】
スーパーブロック21,22はハードディスク15上の物理ブロック番号0,1を使用する。図16に示すようにスーパーブロック21はそれぞれ内部にインクリメントカウンタとブロック番号管理テーブルが置かれるブロックの物理ブロック番号との組21a,21bを2組有している。スーパーブロック22も同様である。データがアトミック性を有して閉じられたときに、CPU11は、スーパーブロック21と22を交互にインクリメントカウンタを増加させながらアトミック性を有するデータを格納したブロック書き込む。このとき、同一のデータを21a,21b、および、22a,22bに順に書き込む。したがって、書き込み中に電源断が生じたときには、スーパーブロック21aと21b、または、22aと22bとに書き込まれたデータが異なることになる。したがって、スーパーブロック21a,21b、または、22a,22bのデータを見れば、どちらのスーパーブロックに書かれたブロック番号管理テーブルの物理ブロック番号が最新のアトミック性のあるデータを管理する物理ブロック番号であるかを知ることができる。
【0033】
この判定処理について説明する。図6はスーパーブロック判定処理内容を示すフローチャートである。図6を参照して、スーパーブロック判定処理(S111)は、第1、第2のスーパーブロック読み込み(S1111)、誤り判定を行う(S1112)。第1のスーパーブロックに誤りがあれば、第2のスーパーブロック内にあるブロック番号の物理ブロック番号を確定ブロック集合体のものとみなす(S1113)。第2のスーパーブロックに誤りがあれば、第1のスーパーブロック内にある物理ブロック番号を確定ブロック集合体のものとみなす(S1115)。ともに誤りがなければ、インクリメンタルカウンタの大きい方のスーパーブロック内にある物理ブロック番号を確定ブロック集合体のものとみなす(S1114)。したがって、スーパーブロックは、ブロック位置特定手段として作動する。
【0034】
なお、ここで、両スーパーブロックに誤りがあるのは、ハードディスク15が未フォーマット時か、物理的障害発生時のみである。
【0035】
次に、図5のS112で示した次世代確定ブロック集合体オープン処理について説明する。図7は次世代確定ブロック集合体オープン処理を示すフローチャートである。図7を参照して、次世代確定ブロック集合体オープン処理(S112)においては、全てのブロック集合体で使用していない物理ブロック番号を探索し(S1121)、取得した空き物理ブロック番号のブロックに、確定ブロック集合体のブロック番号管理テーブルの内容をコピーする(S1122)。コピー先のブロックの物理ブロック番号を、次世代確定ブロック集合体のブロック番号管理テーブル位置として、RAM上に保持する(S1123)。
【0036】
したがって、CPU11は、確定ブロック集合体から派生し、次世代確定ブロック集合体を形成する第1ブロック形成手段として機能する。
【0037】
なお、空きブロック探索のコストを下げるために、確定ブロック集合体で使用中のブロック番号を管理するビットマップが、ハードディスク15上に保持される構成が望ましい。
【0038】
次に、図4のS21で示したシステム終了処理について説明する。図8はシステム終了処理を示すフローチャートである。図8を参照して、システム終了処理は同期処理(「sync」、S211)を含む。
【0039】
次に、図4のS14で示したアトミック操作開始宣言およびアトミックID取得システムについて説明する。図9はアトミック操作開始宣言およびアトミックID取得処理を示すフローチャートである。図9を参照して、アトミック操作開始宣言およびアトミックID取得処理は、全てのブロック集合体で使用していない物理ブロック番号を探索する(S141)。取得した空き物理ブロック番号のブロックに、次世代確定ブロック集合体のブロック番号管理テーブルの内容をコピーする(S142)。コピー先のブロックの物理ブロック番号を、そのアトミックブロック集合体のブロック番号管理テーブル位置として、アトミックIDとともに、RAM上に保持する(S143)。アトミックIDをユーザに戻す(S144)。したがって、CPU11は、次世代確定ブロック集合体から派生し、アトミックブロック集合体を形成する、第2ブロック形成手段として機能する。
【0040】
次に、図4のS15で示したアトミック操作終了宣言について説明する。図10はアトミック操作終了宣言処理を示すフローチャートである。図10を参照して、アトミック操作終了宣言処理は、ユーザから指定されるアトミックIDに対応するアトミックブロック集合体に対して行われた全てのブロック操作(開放、割り当て)を、次世代確定ブロック集合体のブロック番号管理テーブルに反映する(S151)。RAM上に保持している、アトミックIDとブロック管理テーブルの物理ブロック番号を破棄する(S152)。したがって、CPU11は、アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けるブロック操作受付け手段として機能する。
【0041】
次に、図4のS16で示した新ブロックID取得処理について説明する。図11は新ブロックID取得処理内容を示すフローチャートである。図11を参照して、新ブロックID取得処理においては、全てのブロック集合体で、未使用のブロックIDを探索し(S161)、全てのブロック集合体で、未使用の物理ブロック番号を探索し(S162)、ブロックIDと物理ブロック番号のマッピング情報を、ユーザから指定されるアトミックIDに対応するアトミックブロック集合体のブロック番号管理テーブルに記憶し(S163)、ユーザにブロックIDを返す(S164)。
【0042】
次に、図4のS17で示したブロックデータ読み込み処理について説明する。図12はブロックデータ読み込み処理内容を示すフローチャートである。図12を参照して、ブロックデータ読み込み処理においては、ユーザから指定されるアトミックIDに対応するアトミックブロック集合体のブロック番号管理テーブルを読み込み、指定されるブロックIDに対応する物理ブロック番号を求める(S171)。物理ブロック番号のブロックデータを読み込み、ユーザに返す(S172)。
【0043】
次に、図4のS18で示したブロックデータ書込み処理について説明する。図13はブロックデータ書込み処理内容を示すフローチャートである。図13を参照して、ブロックデータ書き込み処理においては、ユーザから指定されるアトミックIDに対応するアトミックブロック集合体において、指定されるブロックIDのブロックが、対象アトミックブロック集合体においてコピー済みか検査する(S181,S182)。対象アトミックブロック集合体のブロック番号管理テーブルを見て、指定されるブロックIDの物理ブロック番号を求める(S183)。ついで、ユーザから渡されるデータを、求めた物理ブロック番号のブロックに書き込む(186)。
【0044】
S182でコピー済みでなければ、全ブロック集合体において、未使用の物理ブロック番号を探索する(S184)。対象アトミックブロック集合体のブロック番号管理テーブルに、指定されるブロックIDと探索した物理ブロック番号のマッピング情報を登録する(S185)。その後、S186へ移行する。
【0045】
次に、図4のS19で示したブロック開放処理について説明する。図14はブロック開放処理内容を示すフローチャートである。図14を参照して、ブロック開放処理においては、指定されるアトミックIDに対応するアトミックブロック集合体のブロック番号管理テーブルから、指定されるブロックIDに対応するエントリを削除する(S191)。
【0046】
次に、図4のS20で示した同期処理について説明する。図15は同期処理を示すフローチャートである。図15を参照して、ユーザがキーボード14等を介して自分のデータ処理の終了を指示すると、次世代確定ブロック集合体のブロック番号管理テーブルを見て、次世代確定ブロック集合体に含まれる全ての物理ブロック番号(管理用ブロックも含む)に対して、RAM上のキャッシュ、ハードディスク15が持つキャッシュなど、全てのキャッシュ上のデータをハードディスク15上に書き出す(S201)。
【0047】
この「同期処理」としては、ユーザが、「アトミック操作終了宣言」指示をした後、明示的に、「同期処理」を行う場合と、CPU11が自動で定期的に「同期処理」を行う場合とがある。前者の方法であれば、ユーザは、確実に自分の処理を確定ブロック集合体に反映されたことが保証できる。後者は、ユーザが「アトミック操作終了宣言」後に「同期処理」を行わなかったため、次世代確定ブロック集合体に留まっているユーザブロックを、確定ブロック集合体に確定させる。後者の処理であればCPU11が定期的に行うため、ユーザの介入は不要になり、全体としての処理の効率化が図れる。ここでは、ユーザに選択によっていずれかが実行されるものとする。
【0048】
現在、確定ブロック用として有効でないほうのスーパーブロックに対して、有効なスーパーブロックのインクリメントカウンタ値に1加算した内容と、次世代確定ブロック集合体のブロック番号管理テーブルの物理ブロック番号を書き込む(S202)。次いで、図7で示した次世代確定ブロック集合体オープン処理を行う。したがって、CPU11は、操作受付け手段がユーザからのブロック操作を受付けたとき、前記アトミックブロック集合体を前記確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段として機能する。
【0049】
次に、具体的な、ブロック集合体の遷移について説明する。図17はブロック集合体の遷移状態を示す図である。図17において、点線より下がハードディスク15上に存在するブロック集合体であり、上がハードディスク15以外のRAM上等の場所に存在するブロック集合体である。上記したように、確定ブロック集合体はハードディスク15上にのみ存在する。システム初期化処理中のスーパーブロック判定にて、アトミック性を有する確定ブロック集合体P1が、ハードディスク15上で特定される。システム初期化処理中の次世代確定ブロック集合体オープン処理にて、確定ブロック集合体P1から次世代確定ブロック集合体C1が作成される。
【0050】
ここで、ユーザAがアトミック操作開始宣言を行うと、アトミックブロック集合体S1が作成され、新ブロックID取得やブロックデータの読み込み、書き込み、ブロックの開放などの処理により、アトミックブロック集合体S2が作成される。データ処理を終了し、ユーザがアトミック操作終了宣言を行うことで、次世代確定ブロック集合体C2が生成され、ユーザが明示的に指示する同期処理(sync)、または、CPU11によって一定時間ごとに実行される同期処理(sync)によって、次世代確定ブロック集合体C2は確定ブロックP2に移行されてハードディスク15上に格納される。
【0051】
次に、複数のユーザAとBとが、データ処理を行う場合における、ブロック集合体の遷移と、その場合の具体的なブロックIDおよびアトミックIDとの関係について、図17から図23を参照して説明する。ここで、アトミックIDとは、後に説明する図19における、ユーザAのアトミックブロック集合体やユーザBのアトミックブロック集合体をユーザが識別するための識別番号である。
【0052】
図17における確定ブロック集合体P2のデータをユーザAとユーザBとがアトミック処理するものとする。図18はシステム初期化直後のスーパーブロックと、確定ブロック集合体、および次世代確定ブロック集合体の詳細を示す図である。ここでは、物理ブロック番号をPB0、PB1,…、ブロックIDをID0,ID1,…のように示している。ここで、スーパーブロックPB0とPB1とは図18に示すような値を有しているものとする。CPU11はスーパーブロックPB0とPB1とのインクリメントカウンタの値を参照して、最新の確定ブロック集合体を有するスーパーブロックはPB0と判断できるため、このブロック番号管理テーブルPB2を使用する。ここで、PB2の確定ブロック集合体の管理テーブルは51に示す内容を有している。テーブル51はブロックID0にPB3、ID1にPB4、ID2にPB5を物理ブロック番号として格納している。図18にはそれぞれの物理ブロックPB3からPB5がどのユーザのデータブロックであるか、およびブロックIDも示している。
【0053】
この状態からCPU11が次世代確定ブロック集合体C2を作成するときは、そのために、それまで使用されていない物理ブロックである物理ブロックPB6を用いて確定ブロック集合体のブロック番号管理テーブル51をコピーした次世代確定ブロック集合体ブロック番号管理テーブル52を作成する。
【0054】
次に、ユーザAは自分のデータの変更を指示すると、アトミックブロック集合体S3が作成される。このとき、図19に示すように、次世代確定ブロック集合体ブロック番号管理テーブル52をコピーしたユーザAに対するアトミックブロック集合体ブロック番号管理テーブル53が作成される。ここでも、このアトミックブロック集合体管理テーブル53は、これまでに使用されていない物理ブロックPB7に作成される。
【0055】
一方、ユーザBも自分のデータの変更を指示すると、アトミックブロック集合体S5が作成される。このとき、図19に示すように、次世代確定ブロック集合体ブロック番号管理テーブル52をコピーしたユーザBに対するアトミックブロック集合体ブロック番号管理テーブル54が作成される。ここでも、このアトミックブロック集合体管理テーブル54も、これまでに使用されていない物理ブロックPB8に作成される。
【0056】
ユーザAによるブロックID0および1の修正直後の次世代確定ブロック集合体とアトミックブロック集合体との詳細を図20に示す。ユーザAは、物理ブロックPB9およびPB10にPB3およびPB4のデータをコピーして修正する。その結果、ユーザAに対するアトミックブロック集合体管理テーブル53は、アトミックブロック集合体管理テーブル55に変更されて物理ブロックPB7に格納される。
【0057】
ユーザBによるブロックID2の修正直後の次世代確定ブロック集合体とアトミックブロック集合体との詳細を図21に示す。ユーザBは、物理ブロックPB11にPB5のデータをコピーして修正する。その結果、ユーザBに対するアトミックブロック集合体管理テーブル54は、アトミックブロック集合体管理テーブル56に変更されて物理ブロックPB8に格納される。
【0058】
以上のようなデータ処理を行った後で、ユーザAがアトミック操作終了宣言すると、次世代確定ブロック集合体C3が作成される。このユーザAによるアトミック操作終了宣言直後の次世代確定ブロック集合体の詳細を図22に示す。次世代確定ブロック集合体C3は図において、楕円形で囲んだ、次世代確定ブロック集合体ブロック番号管理テーブルと、ユーザAのデータブロック1,2と、ユーザBのデータブロック1とを含み、物理ブロックPB6に格納された次世代確定ブロック集合体ブロック番号管理テーブルは55のようになる。
【0059】
ここで、同期処理が行われると、確定ブロック集合体P3が作成される。図23は同期処理におけるスーパーブロックと確定ブロック集合体との詳細を示す図である。図23に示すように、次世代確定ブロック集合体はそのまま確定ブロック集合体に移行されるとともに、スーパーブロック2のインクリメントカウンタがスーパーブロック1のインクリメントカウンタより1アップされて11とされ、ここで確定された確定ブロック集合体ブロック番号管理テーブルを格納した物理ブロック番号であるPB6がブロック番号管理テーブルの物理ブロック番号として格納される。
【0060】
このように、この実施の形態においては、データを変更等するときは、常に、それまでに使用されていないブロック番号に、新たなデータをコピーしながら行い、アトミック処理の終了時にその位置をブロック番号管理テーブルに格納するようにしたため、そのブロック番号を用いてハードディスク上に確定ブロック集合体のデータを格納できる。また、どのようなタイミングで、電源断が生じても、必ず、元のデータは確実に保護される。
【0061】
なお、それぞれのブロック集合体において変更のないブロックは、ブロック集合体間で共有して所有されるものとする。
【0062】
次に、ユーザの処理中に電源断が生じたときのハードディスク15の状態について説明する。図17に示したブロック集合体の遷移を示す図において、時刻t1,t2,t3,t4のそれぞれにおいて電源断が生じたときの状態について説明する。
【0063】
(1)時刻t1において、電源断が生じたとき
図17を参照して、データ格納システムが初期化されて次世代確定ブロック集合体C1が形成され、ユーザがアトミックブロック集合体S1を用いて、データ処理を開始した段階で電源断が生じた場合である。
【0064】
この場合、ハードディスク15上に確定しているのは確定ブロック集合体P1のみであり、それ以降に確定ブロック集合体に書き込まれたデータは無い。したがって、スーパーブロックのインクリメントカウンタやブロック番号は書き換えられていない。
【0065】
したがって、この状態から復帰したときは、同じ確定ブロック集合体P1で確定されているスーパーブロックのデータが使用される。
【0066】
(2)時刻t2において、電源断が生じたとき
ユーザAがアトミックブロック集合体S3を用いてデータを記録し、別のユーザBがアトミックブロック集合体S5を用いてデータを記録している最中に電源断が生じた場合である。この場合は、ハードディスク15上にはCPU11が自動的に同期処理を行った確定ブロック集合体P2が記録されている。
【0067】
したがって、この状態から復帰したときは、確定ブロック集合体P2で確定されているスーパーブロックのデータが使用される。
【0068】
(3)時刻t3において、電源断が生じたとき
ユーザAはアトミックブロック集合体S4にて、アトミックなデータ処理を終え、アトミック操作終了宣言を行うことで、処理したブロックが次世代確定ブロック集合体C3として併合され、ユーザが明示的、もしくはシステムが自動的に行う同期処理により、C3は、確定ブロック集合体P3に遷移し、ユーザBは、アトミックブロック集合体S6に対する処理を行っている最中に、電源断が生じた場合である。この場合はユーザAのデータは、同期処理により確定ブロック集合体P3としてハードディスク上に確定している。しかしながら、ユーザBはこのような処理をしていないので、アトミックブロック集合体S6は消失する。
【0069】
この状態から復帰したときは、確定ブロック集合体P3で確定されているスーパーブロックのデータが使用される。
【0070】
(4)時刻t4において、電源断が生じたとき
ユーザBが処理を終了した段階で電源断が生じた場合である。この状態から復帰したときは、確定ブロック集合体P3で確定されているスーパーブロックのデータが使用される。
【0071】
以上のように、この実施の形態においては、複数のユーザがそれぞれのデータの処理中に突然の電源断が生じても、次回の電源投入時は、正常な状態としてシステムの初期化処理を行うことができ、ユーザが、自分の所望のタイミングで自分のデータを確定ブロック集合体としてハードディスク15上に確定できるため、並行して処理を行う複数のユーザが期待する、処理のアトミック性を保持できるとともに、電源断時に他人の影響を受けることは無い。
【0072】
また、データの確定を急がないユーザは、明示的に同期処理は行わず、システムが定期的に行う同期処理に任せることによって、システム全体のパフォーマンスを上げることが可能になる。
【0073】
なお、上記実施の形態においては、不揮発性記録媒体として、ハードディスクを用いた場合について説明したが、これに限らず、フラッシュメモリを含む、任意の不揮発性記録媒体に適用できる。
【0074】
また、上記実施の形態においては、アトミック性を有するデータを構成するブロックを検出するために、一対のスーパーブロックを用いた場合について説明したが、これに限らず、ハードディスクのブロックに書き込まれたこと、ブロックが書き終わったことを保証できる仕組み(たとえば、全データのチェックサムをとる)であれば任意の方法を用いることができる。
【0075】
また、上記実施の形態においては、複数のユーザがアクセスするデータ格納システムについて説明したが、ここでいう複数のユーザとは、ハードディスク上に格納されている複数のプログラムがRAM上に読み出されてCPUで並列に処理される場合における、複数のプログラムも含むものとする。
【0076】
また、上記実施の形態においては、各ブロック集合体に含まれるブロック番号管理テーブルは、単一のブロック内に収まるものとして説明したが、単一のブロックに収まらない場合は、複数のブロックにてブロック番号管理テーブルを構成し、それを木構造にて管理することで、容易に拡張することが出来る。
【0077】
以上、図面を参照してこの発明の実施形態を説明したが、この発明は、図示した実施形態のものに限定されない。図示された実施形態に対して、この発明と同一の範囲内において、あるいは均等の範囲内において、種々の修正や変形を加えることが可能である。
【図面の簡単な説明】
【0078】
【図1】この発明に係るデータ格納システムが適用されるコンピュータシステムの構成を示すブロック図である。
【図2】データ格納システムの位置づけを示す図である。
【図3】データ格納システムにおけるデータを格納するブロックの集合体の存在位置を示す図である。
【図4】データ格納システムにおける通常時の処理を示すフローチャートである。
【図5】システム初期化処理の内容を示すフローチャートである。
【図6】スーパーブロック判定処理内容を示すフローチャートである。
【図7】次世代確定ブロック集合体オープン処理を示すフローチャートである。システム終了処理を示すフローチャートである。
【図8】システム終了処理を示すフローチャートである。
【図9】アトミック操作開始宣言およびアトミックID取得システムを示すフローチャートである。
【図10】アトミック操作終了宣言処理を示すフローチャートである。
【図11】新ブロックID取得処理内容を示すフローチャートである。
【図12】ブロックデータ読み込み処理内容を示すフローチャートである。
【図13】ブロックデータ書込み処理内容を示すフローチャートである。
【図14】ブロック開放処理内容を示すフローチャートである。
【図15】同期処理内容を示すフローチャートである。
【図16】スーパーブロックの内容とその位置を示す図である。
【図17】ブロック集合体の遷移状態を示す図である。
【図18】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図19】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図20】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図21】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図22】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図23】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【符号の説明】
【0079】
10 コンピュータシステム、11 CPU、12 RAM、13 ディスプレイ、14 キーボード、15 ハードディスク、16 通信装置、18 バス、21,22 スーパーブロック。

【特許請求の範囲】
【請求項1】
複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムであって、
前記データは所定のブロック内に保持され、
前記ブロックは前記不揮発性記録媒体上のみに存在し、アトミック性を有する確定ブロック集合体と、
前記不揮発性記録媒体とそれ以外とにまたがって存在することが可能で、所定のタイミングで前記確定ブロック集合体に変換される次世代確定ブロック集合体と、
前記不揮発性記録媒体とそれ以外とにまたがって存在することが可能で、前記次世代確定ブロック集合体に基づいて、ユーザごとに作成されるアトミックブロック集合体とに変換可能であり、
前記確定ブロック集合体から前記次世代確定ブロック集合体を形成する第1ブロック形成手段と、
前記次世代確定ブロック集合体から前記アトミックブロック集合体を形成する第2ブロック形成手段と、
前記アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロック集合体の操作を受付けるブロック操作受付け手段と、
前記ブロック操作受付け手段がユーザからのブロック操作を受付けたとき、前記アトミックブロック集合体を前記次世代確定ブロック集合体を経由して前記確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段とを含む、データ格納システム。
【請求項2】
前記遷移手段は、アトミック性を有するデータを格納した確定ブロック集合体の位置を特定するアトミックブロック位置特定手段を含む、請求項1に記載のデータ格納システム。
【請求項3】
前記アトミックブロック位置特定手段は、それぞれが、アトミック性を有するデータを保持したブロック集合体を特定するブロック番号と、インクリメントカウンタとを有する、一対のスーパーブロックを含み、
アトミック性を有するデータが新たなブロック集合体に書き込まれるごとに、前記一対のブロック番号のうちの一方のブロック番号およびインクリメントカウンタの値が順に更新される、請求項2に記載のデータ格納システム。
【請求項4】
前記それぞれのスーパーブロックは、一対の、アトミック性を有するデータを保持したブロック集合体を特定するブロック番号と、インクリメントカウンタとを有し、
前記一対の、アトミック性を有するデータを保持したブロック集合体を特定するブロック番号と、インクリメントカウンタには、同一のデータが格納される、請求項3に記載のデータ格納システム。
【請求項5】
前記次世代確定ブロック集合体またはアトミックブロック集合体は、前記確定ブロック集合体の中から必要なブロックをコピーして作成される、請求項1から4のいずれかに記載のデータ格納システム。
【請求項6】
前記ブロック集合体のそれぞれのブロックは、ブロック番号管理テーブルを含み、前記ブロック番号管理テーブルは、データが格納される物理的なブロック番号とブロックIDとの関係を格納する、請求項3から5のいずれかに記載のデータ格納システム。
【請求項7】
前記確定ブロック集合体、前記次世代確定ブロック集合体および前記アトミックブロック集合体はユーザごとに変更の可能なデータを格納するユーザデータブロックと、前記ユーザデータブロックを管理するブロック番号管理テーブルとを含む、請求項1から6のいずれかに記載のデータ格納システム。
【請求項8】
前記次世代確定ブロック集合体および前記アトミックブロック集合体は前記不揮発性記録媒体上のブロックのみを使用する、請求項1から7のいずれかに記載のデータ格納システム。
【請求項9】
コンピュータを、複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムとして作動させるデータ格納プログラムであって、
前記データは所定のブロック内に保持され、
前記ブロックは前記不揮発性記録媒体上のみに存在し、アトミック性を有する確定ブロック集合体と、前記不揮発性記録媒体とそれ以外とにまたがって存在し、所定のタイミングで前記確定ブロック集合体に変換される次世代確定ブロック集合体と、前記不揮発性記録媒体とそれ以外とにまたがって存在し、前記次世代確定ブロック集合体に基づいて、ユーザごとに作成されるアトミックブロック集合体とに変換可能であり、
コンピュータを、前記確定ブロック集合体から前記次世代確定ブロック集合体を形成する第1ブロック形成手段と、前記次世代確定ブロック集合体から前記アトミックブロック集合体を形成する第2ブロック形成手段と、前記アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロック集合体の操作を受付けるブロック操作受付け手段と、前記操作受付け手段がユーザからのブロック操作を受付けたとき、前記アトミックブロック集合体を前記次世代確定ブロック集合体を経由して前記確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段として作動させる、データ格納プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2009−134346(P2009−134346A)
【公開日】平成21年6月18日(2009.6.18)
【国際特許分類】
【出願番号】特願2007−307639(P2007−307639)
【出願日】平成19年11月28日(2007.11.28)
【特許番号】特許第4210318号(P4210318)
【特許公報発行日】平成21年1月14日(2009.1.14)
【出願人】(302004850)株式会社京都ソフトウェアリサーチ (7)
【Fターム(参考)】