(57)【特許請求の範囲】
【請求項１】
複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムであって、
前記データは所定のブロック内に保持され、
複数のユーザのうちの一人が前記ブロックを処理中は、他のユーザは前記処理中のブロックの処理は不能であり、
前記所定のブロックは、それぞれが個別に設けられた、確定ブロックと、次世代確定ブロックと、アトミックブロックとを含み、
前記確定ブロック、前記次世代確定ブロック、および、前記アトミックブロックはそれぞれが複数集合した、確定ブロック集合体と、次世代確定ブロック集合体と、アトミックブロック集合体とに含まれ、
前記確定ブロック集合体は、前記不揮発性記録媒体上のみに存在し、
前記確定ブロック集合体の一部のブロックをコピーすることによって前記確定ブロック集合体から、前記不揮発性記録媒体とそれ以外とにまたがって存在することが可能な前記次世代確定ブロック集合体を形成する第１ブロック形成手段と、
前記次世代確定ブロック集合体の一部のブロックをコピーすることによって、前記次世代確定ブロックからユーザごとに、前記不揮発性記録媒体とそれ以外とにまたがって存在することが可能な前記アトミックブロック集合体を形成する第２ブロック形成手段と、
ユーザごとに、前記第２ブロック形成手段によって形成された前記アトミックブロック集合体に対してアトミック性を保持したブロック集合体の操作を受付けるブロック操作受付け手段と、
前記ブロック操作受付け手段による操作が終了したアトミックブロック集合体をユーザごとにアトミック性を保持しながら、前記ブロック操作受付手段により修正を受け付けたブロックを前記次世代確定ブロック集合体に含まれる修正前のブロックと置き換えることにより前記次世代確定ブロック集合体に併合する併合手段と、
前記併合手段によって併合された次世代確定ブロック集合体をアトミック性を保持した状態で、前記次世代確定ブロック集合体に含まれる前記不揮発性記録媒体以外に存在する全てのブロックを、前記不揮発性記録媒体に書き込むことによって、前記確定ブロック集合体に遷移させる遷移手段とを含む、データ格納システム。
【請求項２】
前記遷移手段は、前記併合手段によって、複数のアトミックブロック集合体上で修正されたブロックを併合した次世代確定ブロック集合体を前記確定ブロック集合体に遷移させる、請求項１に記載のデータ格納システム。
【請求項３】
前記併合手段は、複数並行して存在しえるアトミックブロック集合体を、任意のタイミングで次世代確定ブロック集合体に併合する、請求項２に記載のデータ格納システム。
【請求項４】
前記遷移手段は、アトミック性を有するデータを格納した確定ブロック集合体の位置を特定するアトミックブロック位置特定手段を含む、請求項１から３のいずれかに記載のデータ格納システム。
【請求項５】
前記アトミックブロック位置特定手段は、それぞれが、アトミック性を有するデータを保持したブロック集合体を特定するブロック番号と、インクリメントカウンタとを有する、一対のスーパーブロックを含み、
アトミック性を有するデータが新たなブロック集合体に書き込まれるごとに、前記一対のブロック番号のうちの一方のブロック番号およびインクリメントカウンタの値が順に更新される、請求項４に記載のデータ格納システム。
【請求項６】
前記それぞれのスーパーブロックは、一対の、アトミック性を有するデータを保持したブロック集合体を特定するブロック番号と、インクリメントカウンタとを有し、
前記一対の、アトミック性を有するデータを保持したブロック集合体を特定するブロック番号と、インクリメントカウンタには、同一のデータが格納される、請求項５に記載のデータ格納システム。
【請求項７】
前記ブロック集合体のそれぞれのブロックは、ブロック番号管理テーブルを含み、前記ブロック番号管理テーブルは、データが格納される物理的なブロック番号とブロックＩＤとの関係を格納する、請求項１から６のいずれかに記載のデータ格納システム。
【請求項８】
前記確定ブロック集合体、前記次世代確定ブロック集合体および前記アトミックブロック集合体はユーザごとに変更の可能なデータを格納するユーザデータブロックと、前記ユーザデータブロックを管理するブロック番号管理テーブルとを含む、請求項１から７のいずれかに記載のデータ格納システム。
【請求項９】
コンピュータを、複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムとして作動させるデータ格納プログラムであって、
前記データは所定のブロック内に保持され、
複数のユーザのうちの一人が前記ブロックを処理中は、他のユーザは前記処理中のブロックの処理は不能であり、
前記所定のブロックは、それぞれが個別に設けられた、確定ブロックと、次世代確定ブロックと、アトミックブロックとを含み、
前記確定ブロック、前記次世代確定ブロック、および、前記アトミックブロックはそれぞれが複数集合した、確定ブロック集合体と、次世代確定ブロック集合体と、アトミックブロック集合体とに含まれ、
前記確定ブロック集合体は、前記不揮発性記録媒体上のみに存在し、
前記プログラムは、コンピュータを、
前記確定ブロック集合体の一部のブロックをコピーすることによって前記確定ブロック集合体から、前記不揮発性記録媒体とそれ以外とにまたがって存在することが可能な前記次世代確定ブロック集合体を形成する第１ブロック形成手段と、
前記次世代確定ブロック集合体の一部のブロックをコピーすることによって、前記次世代確定ブロックからユーザごとに、前記不揮発性記録媒体とそれ以外とにまたがって存在することが可能な前記アトミックブロック集合体を形成する第２ブロック形成手段と、
ユーザごとに、前記第２ブロック形成手段によって形成された前記アトミックブロック集合体に対してアトミック性を保持したブロック集合体の操作を受付けるブロック操作受付け手段と、
前記ブロック操作受付け手段による操作が終了したアトミックブロック集合体をユーザごとにアトミック性を保持しながら、前記ブロック操作受付手段により修正を受け付けたブロックを前記次世代確定ブロック集合体に含まれる修正前のブロックと置き換えることにより前記次世代確定ブロック集合体に併合する併合手段と、
前記併合手段によって併合された次世代確定ブロック集合体をアトミック性を保持した状態で、前記次世代確定ブロック集合体に含まれる前記不揮発性記録媒体以外に存在する全てのブロックを、前記不揮発性記録媒体に書き込むことによって、前記確定ブロック集合体に遷移させる遷移手段として作動させる、データ格納プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アトミックトランザクション（部分的にコミットできないトランザクションであり、完全に実行されるか、全く実行されないかのどちらかしかない）の可能なデータ格納システムおよびデータ格納プログラムに関する。
【背景技術】
【０００２】
従来のアトミックトランザクションの可能なデータ格納システムが、たとえば、特開平２００６−１０６８６８号公報（特許文献１）に開示されている。特許文献１は、ファイル管理システムとして、ログ方式とサイドファイル方式とがある点、および、サイドファイル方式のシャドウページ方式の欠点をあげるとともに、それを解決するファイルシステムが開示されている。
【特許文献１】特開平２００６−１０６８６８号公報（要約）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のアトミック性を有するデータ格納システムは上記のように構成されていた。ログ方式のファイルシステムが有利であると記載されているが、ログ方式のファイルシステムはコストが高いという問題があった。また、従来のファイルシステムにおいては、複数のユーザがアクセスするハードディスクのような不揮発性記録媒体において、ユーザごとに別々に使用されるファイルについて、あるユーザがあるファイルを確定しようとすると、他のユーザが処理している他のファイルも同時に確定される場合があったため、たとえば、電源断時に、個々のユーザの意図しないデータが格納され、ユーザが他のユーザの処理の影響を受けるという問題があった。
【０００４】
この発明は、上記のような問題を解消するためになされたもので、アトミックトランザクションが可能で、且つ、各ユーザが他人のデータ処理の影響を受けないデータ格納システムおよびデータ格納プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明に係るデータ格納システムは、複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムであって、データは所定のブロック内に保持され、ブロックは不揮発性記録媒体上のみに存在し、アトミック性を有する確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在することができ、所定のタイミングで確定ブロック集合体に変換される次世代確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在することができ、次世代確定ブロック集合体に基づいて、ユーザごとに作成されるアトミックブロック集合体とに変換可能であり、確定ブロック集合体から次世代確定ブロック集合体を形成する第１ブロック形成手段と、次世代確定ブロック集合体からアトミックブロック集合体を形成する第２ブロック形成手段と、アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けるブロック操作受付け手段と、操作受付け手段がユーザからのブロック操作を受付けたとき、アトミックブロック集合体を次世代確定ブロック集合体を経由して確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段とを含む。
【０００６】
なお、ここで、不揮発性記録媒体上以外の場所とは、ＲＡＭ上、ＣＰＵの一部に設けられたキャッシュ等を含む。
【０００７】
好ましくは、遷移手段は、アトミック性を有するデータを格納した確定ブロック集合体の位置を特定するアトミックブロック位置特定手段を含む。
【０００８】
さらに好ましくは、アトミックブロック位置特定手段は、それぞれが、アトミック性を有するデータを保持したブロックを特定するブロック番号と、インクリメントカウンタとを有する、一対のスーパーブロックを含み、アトミック性を有するデータが新たなブロックに書き込まれるごとに、一対のブロック番号のうちの一方のブロック番号およびインクリメントカウンタの値が順に更新される。
【０００９】
それぞれのスーパーブロックは、一対の、アトミック性を有するデータを保持したブロックを特定するブロック番号と、インクリメントカウンタとを有し、一対の、アトミック性を有するデータを保持したブロックを特定するブロック番号と、インクリメントカウンタには、同一のデータが格納されるのが好ましい。
【００１０】
次世代確定ブロック集合体またはアトミックブロック集合体は、確定ブロック集合体の中から必要なブロックをコピーして作成されるのが好ましい。
【００１１】
ブロック集合体のそれぞれのブロックは、ブロック番号管理テーブルを含み、ブロック番号管理テーブルは、データが格納される物理的なブロック番号とブロックＩＤとの関係を格納してもよい。
【００１２】
また、確定ブロック集合体、次世代確定ブロック集合体およびアトミックブロック集合体はユーザごとに変更の可能なデータを格納するユーザデータブロックと、ユーザデータブロックを管理するブロック番号管理テーブルとを含んでもよい。
【００１３】
なお、次世代確定ブロック集合体およびアトミックブロック集合体は不揮発性記録媒体上のブロックのみを使用してもよい。
【００１４】
この発明の他の局面においては、データ格納プログラムは、コンピュータを、複数のユーザがアクセス可能なデータを有する不揮発性記録媒体のデータ格納システムとして作動させる。データは所定のブロック内に保持され、ブロックは不揮発性記録媒体上のみに存在し、アトミック性を有する確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在し、所定のタイミングで確定ブロック集合体に変換される次世代確定ブロック集合体と、不揮発性記録媒体とそれ以外とにまたがって存在し、次世代確定ブロック集合体に基づいて、ユーザごとに作成されるアトミックブロック集合体とに変換可能であり、プログラムは、コンピュータを、確定ブロック集合体から次世代確定ブロック集合体を形成する第１ブロック形成手段と、次世代確定ブロック集合体からアトミックブロック集合体を形成する第２ブロック形成手段と、アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けるブロック操作受付け手段と、操作受付け手段がユーザからのブロック操作を受付けたとき、アトミックブロック集合体を次世代確定ブロック集合体を経由して確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段として作動させる。
【発明の効果】
【００１５】
アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けると、アトミックブロック集合体は確定ブロック集合体にアトミック性を保持した状態で遷移されて確定される。
【００１６】
その結果、アトミックトランザクションが可能で、且つ、各ユーザが他人のデータ処理の影響を受けない不揮発性記録媒体用のデータ格納システムを提供できる。
【発明を実施するための最良の形態】
【００１７】
以下、この発明の実施の形態を、図面を参照して説明する。図１はこの発明に係るデータ格納システムが適用されるコンピュータシステムの構成を示すブロック図である。図１を参照して、コンピュータシステム１０は、システム全体を制御するＣＰＵ（Central Processing Unit）１１と、ＣＰＵ１１にバス１８を介して接続されたＲＡＭ(Random Access Memory)１２、ディスプレイ１３、キーボード１４、ハードディスク１５、通信装置１６を含む。複数のユーザがそれぞれのコンピュータから通信装置１６を介してこのコンピュータシステムのハードディスク１５にアクセスするものとする。
【００１８】
図２はこの実施の形態におけるデータ格納システムの位置づけを示す図である。図２を参照して、データ格納システムは、ユーザがハードディスク１５を用いてデータを格納する場合に使用される。ハードディスク１５は、所定のバイト単位で読み書き可能（上書き可能）である。このシステムでは、ハードディスク１５の有する複数のデータ格納ブロックに、ユーザが所望のデータを格納するものとして説明する。
【００１９】
また、このデータ格納システムにおいては、データはアトミック性を有しており、個々のユーザがファイルを閉じるときには、ユーザごとにファイルはアトミック性を有するようにして閉じられる。なお、あるブロックのデータをあるユーザが処理中は、他のユーザはそのブロックのデータを処理できない。
【００２０】
なお、ここで、ハードディスク１５は、読み込み中の不意の電源断においては、全てのブロックの状態に何も影響を与えず、書き込み中の不意の電源断においては、書き込み中であった単一のブロックのみが不定の状態となり、それ以外のブロックには影響を与えないことが保証される複数のブロックを有するものとする。
【００２１】
図３は、この実施の形態におけるデータ格納システムにおけるデータを格納するブロックの集合体を説明するための図である。この実施の形態においては、それぞれのブロック集合体は、確定ブロック集合体、次世代確定ブロック集合体、および、アトミックブロック集合体の３つの形態を有する。確定ブロック集合体とは、ハードディスク１５上のブロックの一部を使用し、ユーザにとって意味のあるデータを格納した複数のユーザデータブロックとユーザデータブロックを管理する一つ以上の管理ブロックとから構成される一貫性の取れたブロックの集合体である。
【００２２】
ここで、ユーザデータブロックと管理ブロックについては後述するが、図１８で説明する、物理ブロック番号ＰＢ２に格納されたブロック番号管理テーブルが、管理ブロックの一例であり、ユーザのデータが格納された物理ブロック番号ＰＢ３等がユーザデータブロックの一例である。
【００２３】
次世代確定ブロック集合体はハードディスク１５とたとえば、ＲＡＭ１２にまたがって存在し、確定ブロック集合体に移る準備ができている状態をいう。これも常に一つだけ存在する。このブロック集合体は、確定ブロック集合体に含まれる全てのブロックを決して上書き修正せず、修正する必要のあるユーザデータブロックおよび管理ブロックのみを、ハードディスク１５上の確定ブロック集合体に含まれないブロックのみを使用して修正することで一貫性の取れる状態を作ることが可能である。
【００２４】
アトミックブロック集合体はハードディスク１５とＲＡＭ１２とにまたがって存在する。トランザクションに対応し、トランザクション開始時に次世代確定ブロック集合体から分岐する。トランザクション終了時に次世代確定ブロック集合体に変更部分をマージ（合併）し、消滅する。複数存在してもよいし、存在しなくてもよい。
【００２５】
すなわち、このブロックは、ユーザがアトミックな処理を期待する１つ以上のユーザデータブロックに対する修正を、確定集合体かつ次世代確定ブロック集合体に含まれない、ハードディスク１５上のブロックを使用して修正し、アトミックな処理が終わった時点で、その修正した全てのユーザデータブロックを、次世代確定ブロック集合体の管理ブロックの修正のみで、次世代確定ブロック集合体の構成ブロックへ併合することが可能である。
【００２６】
次に、データ格納システムにおけるＣＰＵ１１の動作について説明する。図４〜図１５はこのデータ格納システムを作動させるＣＰＵ１１が行う動作を示すフローチャートである。
【００２７】
図４は、この実施の形態におけるデータ格納システムにおける通常時の処理を示すフローチャートである。図４を参照して、通常時は、電源がオンされると、システムが初期化され（ステップＳ１１、以下、ステップを省略する）、ユーザの操作を受付ける（Ｓ１２）。このユーザの処理は、キーボード１４等で行われる。ユーザの操作は、アトミック操作開始宣言およびアトミックＩＤ取得（Ｓ１４）、アトミック操作終了宣言（Ｓ１５）、新ブロックＩＤ取得（Ｓ１６）、ブロックデータ読み込み（Ｓ１７）、ブロックデータ書き込み（Ｓ１８）、ブロック開放（Ｓ１９）、または、同期（sync、Ｓ２０）のいずれかを含む。これらの処理を終了すると、システム終了処理を行って（Ｓ２１）、電源がオフされる。
【００２８】
ここで、アトミック操作開始宣言とは、ユーザがアトミック性を保持しながらデータ処理を開始することをいう。アトミックＩＤとは、ユーザを識別するために使用されるものである。すなわち、この実施の形態においては、アトミックＩＤとブロックＩＤとを用いてデータの格納されたブロックを特定する。なお、ブロックＩＤというのは、ハードディスク１５の物理ブロック番号を間接的に指示するものである。
【００２９】
また、この実施の形態においては、同期処理によって、ユーザの意思による任意のタイミングで、作成されたデータ等が、ハードディスク１５上に格納される。
【００３０】
なお、ここで示したユーザの複数の操作中の任意のタイミングで電源断が生じうる。次に、図４のＳ１１で示したシステム初期化処理について説明する。図５はシステム初期化処理の内容を示すフローチャートである。図５を参照して、システム初期化処理においては、まず、スーパーブロック判定を行い（Ｓ１１１）、ついで、次世代確定ブロック集合体オープン処理を行う（Ｓ１１２）。
【００３１】
ここで、スーパーブロックについて説明する。スーパーブロックとは、アトミック性を有するデータを格納した最新のブロックを特定するために使用される一対のブロックである。図１６にスーパーブロックの一例を示す。スーパーブロックも通常のデータと同様に、ハードディスク１５の所定のブロックに格納されている。ここでは、理解の容易のために、ハードディスク１５の物理ブロック番号の０と１に一対のスーパーブロック２１，２２が格納されている例について説明する。
【００３２】
スーパーブロック２１，２２はハードディスク１５上の物理ブロック番号０，１を使用する。図１６に示すようにスーパーブロック２１はそれぞれ内部にインクリメントカウンタとブロック番号管理テーブルが置かれるブロックの物理ブロック番号との組２１ａ，２１ｂを２組有している。スーパーブロック２２も同様である。データがアトミック性を有して閉じられたときに、ＣＰＵ１１は、スーパーブロック２１と２２を交互にインクリメントカウンタを増加させながらアトミック性を有するデータを格納したブロック書き込む。このとき、同一のデータを２１ａ，２１ｂ、および、２２ａ，２２ｂに順に書き込む。したがって、書き込み中に電源断が生じたときには、スーパーブロック２１ａと２１ｂ、または、２２ａと２２ｂとに書き込まれたデータが異なることになる。したがって、スーパーブロック２１ａ，２１ｂ、または、２２ａ，２２ｂのデータを見れば、どちらのスーパーブロックに書かれたブロック番号管理テーブルの物理ブロック番号が最新のアトミック性のあるデータを管理する物理ブロック番号であるかを知ることができる。
【００３３】
この判定処理について説明する。図６はスーパーブロック判定処理内容を示すフローチャートである。図６を参照して、スーパーブロック判定処理（Ｓ１１１）は、第1、第２のスーパーブロック読み込み（Ｓ１１１１）、誤り判定を行う（Ｓ１１１２）。第１のスーパーブロックに誤りがあれば、第２のスーパーブロック内にあるブロック番号の物理ブロック番号を確定ブロック集合体のものとみなす（Ｓ１１１３）。第２のスーパーブロックに誤りがあれば、第１のスーパーブロック内にある物理ブロック番号を確定ブロック集合体のものとみなす（Ｓ１１１５）。ともに誤りがなければ、インクリメンタルカウンタの大きい方のスーパーブロック内にある物理ブロック番号を確定ブロック集合体のものとみなす（Ｓ１１１４）。したがって、スーパーブロックは、ブロック位置特定手段として作動する。
【００３４】
なお、ここで、両スーパーブロックに誤りがあるのは、ハードディスク１５が未フォーマット時か、物理的障害発生時のみである。
【００３５】
次に、図５のＳ１１２で示した次世代確定ブロック集合体オープン処理について説明する。図７は次世代確定ブロック集合体オープン処理を示すフローチャートである。図７を参照して、次世代確定ブロック集合体オープン処理（Ｓ１１２）においては、全てのブロック集合体で使用していない物理ブロック番号を探索し（Ｓ１１２１）、取得した空き物理ブロック番号のブロックに、確定ブロック集合体のブロック番号管理テーブルの内容をコピーする（Ｓ１１２２）。コピー先のブロックの物理ブロック番号を、次世代確定ブロック集合体のブロック番号管理テーブル位置として、ＲＡＭ上に保持する（Ｓ１１２３）。
【００３６】
したがって、ＣＰＵ１１は、確定ブロック集合体から派生し、次世代確定ブロック集合体を形成する第１ブロック形成手段として機能する。
【００３７】
なお、空きブロック探索のコストを下げるために、確定ブロック集合体で使用中のブロック番号を管理するビットマップが、ハードディスク１５上に保持される構成が望ましい。
【００３８】
次に、図４のＳ２１で示したシステム終了処理について説明する。図８はシステム終了処理を示すフローチャートである。図８を参照して、システム終了処理は同期処理（「sync」、Ｓ２１１）を含む。
【００３９】
次に、図４のＳ１４で示したアトミック操作開始宣言およびアトミックＩＤ取得システムについて説明する。図９はアトミック操作開始宣言およびアトミックＩＤ取得処理を示すフローチャートである。図９を参照して、アトミック操作開始宣言およびアトミックＩＤ取得処理は、全てのブロック集合体で使用していない物理ブロック番号を探索する（Ｓ１４１）。取得した空き物理ブロック番号のブロックに、次世代確定ブロック集合体のブロック番号管理テーブルの内容をコピーする（Ｓ１４２）。コピー先のブロックの物理ブロック番号を、そのアトミックブロック集合体のブロック番号管理テーブル位置として、アトミックＩＤとともに、ＲＡＭ上に保持する（Ｓ１４３）。アトミックＩＤをユーザに戻す（Ｓ１４４）。したがって、ＣＰＵ１１は、次世代確定ブロック集合体から派生し、アトミックブロック集合体を形成する、第２ブロック形成手段として機能する。
【００４０】
次に、図４のＳ１５で示したアトミック操作終了宣言について説明する。図１０はアトミック操作終了宣言処理を示すフローチャートである。図１０を参照して、アトミック操作終了宣言処理は、ユーザから指定されるアトミックＩＤに対応するアトミックブロック集合体に対して行われた全てのブロック操作（開放、割り当て）を、次世代確定ブロック集合体のブロック番号管理テーブルに反映する（Ｓ１５１）。ＲＡＭ上に保持している、アトミックＩＤとブロック管理テーブルの物理ブロック番号を破棄する（Ｓ１５２）。したがって、ＣＰＵ１１は、アトミックブロック集合体に対してユーザが期待するアトミック性を保持したブロックの操作を受付けるブロック操作受付け手段として機能する。
【００４１】
次に、図４のＳ１６で示した新ブロックＩＤ取得処理について説明する。図１１は新ブロックＩＤ取得処理内容を示すフローチャートである。図１１を参照して、新ブロックＩＤ取得処理においては、全てのブロック集合体で、未使用のブロックＩＤを探索し（Ｓ１６１）、全てのブロック集合体で、未使用の物理ブロック番号を探索し（Ｓ１６２）、ブロックＩＤと物理ブロック番号のマッピング情報を、ユーザから指定されるアトミックＩＤに対応するアトミックブロック集合体のブロック番号管理テーブルに記憶し（Ｓ１６３）、ユーザにブロックＩＤを返す（Ｓ１６４）。
【００４２】
次に、図４のＳ１７で示したブロックデータ読み込み処理について説明する。図１２はブロックデータ読み込み処理内容を示すフローチャートである。図１２を参照して、ブロックデータ読み込み処理においては、ユーザから指定されるアトミックＩＤに対応するアトミックブロック集合体のブロック番号管理テーブルを読み込み、指定されるブロックＩＤに対応する物理ブロック番号を求める（Ｓ１７１）。物理ブロック番号のブロックデータを読み込み、ユーザに返す（Ｓ１７２）。
【００４３】
次に、図４のＳ１８で示したブロックデータ書込み処理について説明する。図１３はブロックデータ書込み処理内容を示すフローチャートである。図１３を参照して、ブロックデータ書き込み処理においては、ユーザから指定されるアトミックＩＤに対応するアトミックブロック集合体において、指定されるブロックＩＤのブロックが、対象アトミックブロック集合体においてコピー済みか検査する（Ｓ１８１，Ｓ１８２）。対象アトミックブロック集合体のブロック番号管理テーブルを見て、指定されるブロックＩＤの物理ブロック番号を求める（Ｓ１８３）。ついで、ユーザから渡されるデータを、求めた物理ブロック番号のブロックに書き込む（１８６）。
【００４４】
Ｓ１８２でコピー済みでなければ、全ブロック集合体において、未使用の物理ブロック番号を探索する（Ｓ１８４）。対象アトミックブロック集合体のブロック番号管理テーブルに、指定されるブロックＩＤと探索した物理ブロック番号のマッピング情報を登録する（Ｓ１８５）。その後、Ｓ１８６へ移行する。
【００４５】
次に、図４のＳ１９で示したブロック開放処理について説明する。図１４はブロック開放処理内容を示すフローチャートである。図１４を参照して、ブロック開放処理においては、指定されるアトミックＩＤに対応するアトミックブロック集合体のブロック番号管理テーブルから、指定されるブロックＩＤに対応するエントリを削除する（Ｓ１９１）。
【００４６】
次に、図４のＳ２０で示した同期処理について説明する。図１５は同期処理を示すフローチャートである。図１５を参照して、ユーザがキーボード１４等を介して自分のデータ処理の終了を指示すると、次世代確定ブロック集合体のブロック番号管理テーブルを見て、次世代確定ブロック集合体に含まれる全ての物理ブロック番号（管理用ブロックも含む）に対して、RAM上のキャッシュ、ハードディスク１５が持つキャッシュなど、全てのキャッシュ上のデータをハードディスク１５上に書き出す（Ｓ２０１）。
【００４７】
この「同期処理」としては、ユーザが、「アトミック操作終了宣言」指示をした後、明示的に、「同期処理」を行う場合と、ＣＰＵ１１が自動で定期的に「同期処理」を行う場合とがある。前者の方法であれば、ユーザは、確実に自分の処理を確定ブロック集合体に反映されたことが保証できる。後者は、ユーザが「アトミック操作終了宣言」後に「同期処理」を行わなかったため、次世代確定ブロック集合体に留まっているユーザブロックを、確定ブロック集合体に確定させる。後者の処理であればＣＰＵ１１が定期的に行うため、ユーザの介入は不要になり、全体としての処理の効率化が図れる。ここでは、ユーザに選択によっていずれかが実行されるものとする。
【００４８】
現在、確定ブロック用として有効でないほうのスーパーブロックに対して、有効なスーパーブロックのインクリメントカウンタ値に1加算した内容と、次世代確定ブロック集合体のブロック番号管理テーブルの物理ブロック番号を書き込む（Ｓ２０２）。次いで、図７で示した次世代確定ブロック集合体オープン処理を行う。したがって、ＣＰＵ１１は、操作受付け手段がユーザからのブロック操作を受付けたとき、前記アトミックブロック集合体を前記確定ブロック集合体にアトミック性を保持した状態で遷移させる遷移手段として機能する。
【００４９】
次に、具体的な、ブロック集合体の遷移について説明する。図１７はブロック集合体の遷移状態を示す図である。図１７において、点線より下がハードディスク１５上に存在するブロック集合体であり、上がハードディスク１５以外のＲＡＭ上等の場所に存在するブロック集合体である。上記したように、確定ブロック集合体はハードディスク１５上にのみ存在する。システム初期化処理中のスーパーブロック判定にて、アトミック性を有する確定ブロック集合体Ｐ１が、ハードディスク１５上で特定される。システム初期化処理中の次世代確定ブロック集合体オープン処理にて、確定ブロック集合体Ｐ１から次世代確定ブロック集合体Ｃ１が作成される。
【００５０】
ここで、ユーザＡがアトミック操作開始宣言を行うと、アトミックブロック集合体Ｓ１が作成され、新ブロックＩＤ取得やブロックデータの読み込み、書き込み、ブロックの開放などの処理により、アトミックブロック集合体Ｓ２が作成される。データ処理を終了し、ユーザがアトミック操作終了宣言を行うことで、次世代確定ブロック集合体Ｃ２が生成され、ユーザが明示的に指示する同期処理(sync)、または、ＣＰＵ１１によって一定時間ごとに実行される同期処理（sync）によって、次世代確定ブロック集合体Ｃ２は確定ブロックＰ２に移行されてハードディスク１５上に格納される。
【００５１】
次に、複数のユーザＡとＢとが、データ処理を行う場合における、ブロック集合体の遷移と、その場合の具体的なブロックＩＤおよびアトミックＩＤとの関係について、図１７から図２３を参照して説明する。ここで、アトミックＩＤとは、後に説明する図１９における、ユーザＡのアトミックブロック集合体やユーザＢのアトミックブロック集合体をユーザが識別するための識別番号である。
【００５２】
図１７における確定ブロック集合体Ｐ２のデータをユーザＡとユーザＢとがアトミック処理するものとする。図１８はシステム初期化直後のスーパーブロックと、確定ブロック集合体、および次世代確定ブロック集合体の詳細を示す図である。ここでは、物理ブロック番号をＰＢ０、ＰＢ１，…、ブロックＩＤをＩＤ０，ＩＤ１，…のように示している。ここで、スーパーブロックＰＢ０とＰＢ１とは図１８に示すような値を有しているものとする。ＣＰＵ１１はスーパーブロックＰＢ０とＰＢ１とのインクリメントカウンタの値を参照して、最新の確定ブロック集合体を有するスーパーブロックはＰＢ０と判断できるため、このブロック番号管理テーブルＰＢ２を使用する。ここで、ＰＢ２の確定ブロック集合体の管理テーブルは５１に示す内容を有している。テーブル５１はブロックＩＤ０にＰＢ３、ＩＤ１にＰＢ４、ＩＤ２にＰＢ５を物理ブロック番号として格納している。図１８にはそれぞれの物理ブロックＰＢ３からＰＢ５がどのユーザのデータブロックであるか、およびブロックＩＤも示している。
【００５３】
この状態からＣＰＵ１１が次世代確定ブロック集合体Ｃ２を作成するときは、そのために、それまで使用されていない物理ブロックである物理ブロックＰＢ６を用いて確定ブロック集合体のブロック番号管理テーブル５１をコピーした次世代確定ブロック集合体ブロック番号管理テーブル５２を作成する。
【００５４】
次に、ユーザＡは自分のデータの変更を指示すると、アトミックブロック集合体Ｓ３が作成される。このとき、図１９に示すように、次世代確定ブロック集合体ブロック番号管理テーブル５２をコピーしたユーザＡに対するアトミックブロック集合体ブロック番号管理テーブル５３が作成される。ここでも、このアトミックブロック集合体管理テーブル５３は、これまでに使用されていない物理ブロックＰＢ７に作成される。
【００５５】
一方、ユーザＢも自分のデータの変更を指示すると、アトミックブロック集合体Ｓ５が作成される。このとき、図１９に示すように、次世代確定ブロック集合体ブロック番号管理テーブル５２をコピーしたユーザＢに対するアトミックブロック集合体ブロック番号管理テーブル５４が作成される。ここでも、このアトミックブロック集合体管理テーブル５４も、これまでに使用されていない物理ブロックＰＢ８に作成される。
【００５６】
ユーザＡによるブロックＩＤ０および１の修正直後の次世代確定ブロック集合体とアトミックブロック集合体との詳細を図２０に示す。ユーザＡは、物理ブロックＰＢ９およびＰＢ１０にＰＢ３およびＰＢ４のデータをコピーして修正する。その結果、ユーザＡに対するアトミックブロック集合体管理テーブル５３は、アトミックブロック集合体管理テーブル５５に変更されて物理ブロックＰＢ７に格納される。
【００５７】
ユーザＢによるブロックＩＤ２の修正直後の次世代確定ブロック集合体とアトミックブロック集合体との詳細を図２１に示す。ユーザＢは、物理ブロックＰＢ１１にＰＢ５のデータをコピーして修正する。その結果、ユーザＢに対するアトミックブロック集合体管理テーブル５４は、アトミックブロック集合体管理テーブル５６に変更されて物理ブロックＰＢ８に格納される。
【００５８】
以上のようなデータ処理を行った後で、ユーザＡがアトミック操作終了宣言すると、次世代確定ブロック集合体Ｃ３が作成される。このユーザＡによるアトミック操作終了宣言直後の次世代確定ブロック集合体の詳細を図２２に示す。次世代確定ブロック集合体Ｃ３は図において、楕円形で囲んだ、次世代確定ブロック集合体ブロック番号管理テーブルと、ユーザＡのデータブロック１，２と、ユーザＢのデータブロック１とを含み、物理ブロックＰＢ６に格納された次世代確定ブロック集合体ブロック番号管理テーブルは５５のようになる。
【００５９】
ここで、同期処理が行われると、確定ブロック集合体Ｐ３が作成される。図２３は同期処理におけるスーパーブロックと確定ブロック集合体との詳細を示す図である。図２３に示すように、次世代確定ブロック集合体はそのまま確定ブロック集合体に移行されるとともに、スーパーブロック２のインクリメントカウンタがスーパーブロック１のインクリメントカウンタより１アップされて１１とされ、ここで確定された確定ブロック集合体ブロック番号管理テーブルを格納した物理ブロック番号であるＰＢ６がブロック番号管理テーブルの物理ブロック番号として格納される。
【００６０】
このように、この実施の形態においては、データを変更等するときは、常に、それまでに使用されていないブロック番号に、新たなデータをコピーしながら行い、アトミック処理の終了時にその位置をブロック番号管理テーブルに格納するようにしたため、そのブロック番号を用いてハードディスク上に確定ブロック集合体のデータを格納できる。また、どのようなタイミングで、電源断が生じても、必ず、元のデータは確実に保護される。
【００６１】
なお、それぞれのブロック集合体において変更のないブロックは、ブロック集合体間で共有して所有されるものとする。
【００６２】
次に、ユーザの処理中に電源断が生じたときのハードディスク１５の状態について説明する。図１７に示したブロック集合体の遷移を示す図において、時刻ｔ１，ｔ２，ｔ３，ｔ４のそれぞれにおいて電源断が生じたときの状態について説明する。
【００６３】
（１）時刻ｔ１において、電源断が生じたとき
図１７を参照して、データ格納システムが初期化されて次世代確定ブロック集合体C1が形成され、ユーザがアトミックブロック集合体Ｓ１を用いて、データ処理を開始した段階で電源断が生じた場合である。
【００６４】
この場合、ハードディスク１５上に確定しているのは確定ブロック集合体Ｐ１のみであり、それ以降に確定ブロック集合体に書き込まれたデータは無い。したがって、スーパーブロックのインクリメントカウンタやブロック番号は書き換えられていない。
【００６５】
したがって、この状態から復帰したときは、同じ確定ブロック集合体Ｐ１で確定されているスーパーブロックのデータが使用される。
【００６６】
（２）時刻ｔ２において、電源断が生じたとき
ユーザＡがアトミックブロック集合体Ｓ３を用いてデータを記録し、別のユーザＢがアトミックブロック集合体Ｓ５を用いてデータを記録している最中に電源断が生じた場合である。この場合は、ハードディスク１５上にはＣＰＵ１１が自動的に同期処理を行った確定ブロック集合体Ｐ２が記録されている。
【００６７】
したがって、この状態から復帰したときは、確定ブロック集合体Ｐ２で確定されているスーパーブロックのデータが使用される。
【００６８】
（３）時刻ｔ３において、電源断が生じたとき
ユーザＡはアトミックブロック集合体Ｓ４にて、アトミックなデータ処理を終え、アトミック操作終了宣言を行うことで、処理したブロックが次世代確定ブロック集合体Ｃ３として併合され、ユーザが明示的、もしくはシステムが自動的に行う同期処理により、Ｃ３は、確定ブロック集合体Ｐ３に遷移し、ユーザBは、アトミックブロック集合体Ｓ６に対する処理を行っている最中に、電源断が生じた場合である。この場合はユーザＡのデータは、同期処理により確定ブロック集合体Ｐ３としてハードディスク上に確定している。しかしながら、ユーザＢはこのような処理をしていないので、アトミックブロック集合体Ｓ６は消失する。
【００６９】
この状態から復帰したときは、確定ブロック集合体Ｐ３で確定されているスーパーブロックのデータが使用される。
【００７０】
（４）時刻ｔ４において、電源断が生じたとき
ユーザＢが処理を終了した段階で電源断が生じた場合である。この状態から復帰したときは、確定ブロック集合体Ｐ３で確定されているスーパーブロックのデータが使用される。
【００７１】
以上のように、この実施の形態においては、複数のユーザがそれぞれのデータの処理中に突然の電源断が生じても、次回の電源投入時は、正常な状態としてシステムの初期化処理を行うことができ、ユーザが、自分の所望のタイミングで自分のデータを確定ブロック集合体としてハードディスク１５上に確定できるため、並行して処理を行う複数のユーザが期待する、処理のアトミック性を保持できるとともに、電源断時に他人の影響を受けることは無い。
【００７２】
また、データの確定を急がないユーザは、明示的に同期処理は行わず、システムが定期的に行う同期処理に任せることによって、システム全体のパフォーマンスを上げることが可能になる。
【００７３】
なお、上記実施の形態においては、不揮発性記録媒体として、ハードディスクを用いた場合について説明したが、これに限らず、フラッシュメモリを含む、任意の不揮発性記録媒体に適用できる。
【００７４】
また、上記実施の形態においては、アトミック性を有するデータを構成するブロックを検出するために、一対のスーパーブロックを用いた場合について説明したが、これに限らず、ハードディスクのブロックに書き込まれたこと、ブロックが書き終わったことを保証できる仕組み（たとえば、全データのチェックサムをとる）であれば任意の方法を用いることができる。
【００７５】
また、上記実施の形態においては、複数のユーザがアクセスするデータ格納システムについて説明したが、ここでいう複数のユーザとは、ハードディスク上に格納されている複数のプログラムがＲＡＭ上に読み出されてＣＰＵで並列に処理される場合における、複数のプログラムも含むものとする。
【００７６】
また、上記実施の形態においては、各ブロック集合体に含まれるブロック番号管理テーブルは、単一のブロック内に収まるものとして説明したが、単一のブロックに収まらない場合は、複数のブロックにてブロック番号管理テーブルを構成し、それを木構造にて管理することで、容易に拡張することが出来る。
【００７７】
以上、図面を参照してこの発明の実施形態を説明したが、この発明は、図示した実施形態のものに限定されない。図示された実施形態に対して、この発明と同一の範囲内において、あるいは均等の範囲内において、種々の修正や変形を加えることが可能である。
【図面の簡単な説明】
【００７８】
【図１】この発明に係るデータ格納システムが適用されるコンピュータシステムの構成を示すブロック図である。
【図２】データ格納システムの位置づけを示す図である。
【図３】データ格納システムにおけるデータを格納するブロックの集合体の存在位置を示す図である。
【図４】データ格納システムにおける通常時の処理を示すフローチャートである。
【図５】システム初期化処理の内容を示すフローチャートである。
【図６】スーパーブロック判定処理内容を示すフローチャートである。
【図７】次世代確定ブロック集合体オープン処理を示すフローチャートである。システム終了処理を示すフローチャートである。
【図８】システム終了処理を示すフローチャートである。
【図９】アトミック操作開始宣言およびアトミックＩＤ取得システムを示すフローチャートである。
【図１０】アトミック操作終了宣言処理を示すフローチャートである。
【図１１】新ブロックＩＤ取得処理内容を示すフローチャートである。
【図１２】ブロックデータ読み込み処理内容を示すフローチャートである。
【図１３】ブロックデータ書込み処理内容を示すフローチャートである。
【図１４】ブロック開放処理内容を示すフローチャートである。
【図１５】同期処理内容を示すフローチャートである。
【図１６】スーパーブロックの内容とその位置を示す図である。
【図１７】ブロック集合体の遷移状態を示す図である。
【図１８】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図１９】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図２０】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図２１】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図２２】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【図２３】ブロック集合体の遷移における、具体的な物理ブロック番号等の変遷例を示す図である。
【符号の説明】
【００７９】
１０  コンピュータシステム、１１  ＣＰＵ、１２  ＲＡＭ、１３  ディスプレイ、１４  キーボード、１５  ハードディスク、１６  通信装置、１８  バス、２１，２２  スーパーブロック。
【要約】
【課題】アトミックトランザクションが可能で、且つ、各ユーザが他人のデータ処理の影響を受けない不揮発性記録媒体用のデータ格納システムを提供する。
【解決手段】アトミック性のあるデータはハードディスク上のブロックに格納される。ブロックはハードディスク上のみに存在する確定ブロック集合体Ｐ１と、所定のタイミングで確定ブロック集合体に変換される次世代確定ブロック集合体Ｃ１と、確定ブロック集合体Ｃ１に基づいて、ユーザごとに作成されるアトミックブロック集合体Ｓ３とを含む。ユーザＡは、Ｓ３に対して所望のデータの変更等を行い、データ処理を終了するときには、データを格納するブロックの集合体をアトミックブロック集合体Ｓ４から確定ブロック集合体Ｃ２と一体化させて確定ブロック集合体Ｐ３としてハードディスク上に格納する。
【選択図】図１７【図１】
0004210318.tif 000002
【図２】
0004210318.tif 000003
【図３】
0004210318.tif 000004
【図４】
0004210318.tif 000005
【図５】
0004210318.tif 000006
【図６】
0004210318.tif 000007
【図７】
0004210318.tif 000008
【図８】
0004210318.tif 000009
【図９】
0004210318.tif 000010
【図１０】
0004210318.tif 000011
【図１１】
0004210318.tif 000012
【図１２】
0004210318.tif 000013
【図１３】
0004210318.tif 000014
【図１４】
0004210318.tif 000015
【図１５】
0004210318.tif 000016
【図１６】
0004210318.tif 000017
【図１７】
0004210318.tif 000018
【図１８】
0004210318.tif 000019
【図１９】
0004210318.tif 000020
【図２０】
0004210318.tif 000021
【図２１】
0004210318.tif 000022
【図２２】
0004210318.tif 000023
【図２３】
0004210318.tif 000024