説明

ストレージデバイス及びファイルシステムの記録方法

【課題】効率よくトランザクションベースでファイルシステムのメタデータ及びアプリケーションの管理データを書き込む方法、そして電源断が発生した場合にトランザクション単位で自動的に修復を行うことができるストレージデバイスを提供する。
【解決手段】一時的な記録領域とメインの記録領域を有し、電源断からデータを修復する機能を有するストレージデバイスであって、ホストから書き込まれたデータを前記一時的な記録領域に格納する手段1と、前記ホストからコミット要求を受けると、前記一時的な記録領域にあるデータを前記メインの記録領域に書き込む手段2と、前記コミット要求を受ける前に電源断が発生した場合に電源投入時に前記一時的な記録領域にあるデータを破棄し、前記コミット要求を受けてから電源断が発生した場合に電源投入時に前記一時的な記録領域にあるデータをメインの記録領域に書き込む手段3とを備え、トランザクションベースでデータを修復する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージデバイス及びファイルシステムの記録方法に係り、特に、アプリケーション、ファイルシステム及びストレージデバイスが全て整合性のある状態で、電源断やシステムクラッシュから障害回復を行うことが可能となる方法に関する。
【背景技術】
【0002】
電源断やシステムクラッシュに対するファイルシステムの信頼性を確保するために、トランザクション単位で更新されたメタデータをまずジャーナルログに記録してから、目的のメタデータを上書きする手段が取られている。このジャーナル機能を持ったファイルシステムは、一般的にジャーナルファイルシステムと呼ぶ。ジャーナルログを記録することによって、電源断やシステムクラッシュが発生した場合、ジャーナルログによる高速な修復が可能となる。
しかし、一方では、ジャーナルログの記録による性能劣化が発生するという欠点がある。この性能劣化を最小限に抑えるために、更新されたメタデータブロック全体ではなく、アプリケーションからのファイル操作種別と操作対象のファイル、すなわち更新内容をジャーナルログに記録する方法が知られている。(下記、特許文献1参照)
また、例えば、DVD−RAM(Digital Versatile Disc-Random Access Memory)やBD−RE(Blu-ray Disc,Rewritable)といった光ディスクにAV(Audio Visual)データをリアルタイムに記録する装置では、書き込み性能を維持するために、ジャーナルログを別の高速な不揮発のフラッシュメモリに記録する手段が取られている。
【0003】
近年では、安価で大容量のストレージデバイス、そして比較的高価で小容量の高速なストレージデバイスが数多く開発されている。前記大容量のストレージデバイスの例として、フロッピディスク、ハードディスク、光ディスクそしてテープがある。
前記高速なストレージデバイスの例として、RAM(Random Access Memory)、ROM(Read Only Memory)、PROM(Programmable Read Only Memory)、EPROM(Erasable Programable Read Only Memory)、そしてフラッシュメモリがある。
例えば、ハードディスクの内部や光ディスクを記録するドライブ装置には、高速なRAMタイプのメモリがバッファキャッシュとして使用され、読み込み/書き込み性能を向上させる働きをする。
また、標準規格のATA−8で規格化されているハイブリッド型ハードディスクでは、RAMタイプのメモリと同様に不揮発のフラッシュメモリがバッファキャッシュとして使用される。
不揮発のフラッシュメモリはNV−Cache(non-volatile cache)と呼ばれ、ハードディスク上のどの範囲のブロックアドレスをこのNV−Cacheにマッピングするかは専用のATAコマンドで指定可能である。
NV−Cacheを用いることによって、電源断が発生してもデータロストが発生しない。さらに、OSを起動するための情報が記録される領域をNV−Cacheにマッピングすることによって、OSの起動が高速になると言ったメリットがある。
【0004】
前述したように、比較的高速で小容量のメモリと大容量のストレージデバイスを組み合わせて、それぞれの特徴を生かせることによって、信頼性や性能の向上が期待できる。
以下にいくつかの既知の方法を列挙する。
(1)性能と容量の異なる二つの不揮発のメディアを用いて、この二つのメディアが連続したひとつのアドレス空間を構成するハイブリッド型のストレージシステム。(下記、特許文献2、特許文献3参照)
(2)不揮発のメモリを使ったライトキャッシュを備えるディスクストレージであって、電源断が発生してもライトキャッシュにあるデータがロストしない。また、電源投入時、ライトキャッシュにある未書き込みデータを読み込みディスクに書き込む。(下記、特許文献4参照)
(3)通常の揮発メモリをライトキャッシュに使用し、電源断を検出したときにスピンドルモータにて生成されたEMF(Electro Motive Force)からの電源を用いて、ライトキャッシュにあるデータを不揮発メモリに書く。また、電源投入時、不揮発メモリにあるデータを読み込みディスクに書き込む。(下記、特許文献5参照)
(4)ディスクストレージのバッファキャッシュとして、不揮発のMRAM(Magnetoresistive Random Access Memory)を使用することによって、電源断が発生してもデータがロストしない。(下記、特許文献6参照)
(5)比較的高速で小容量の不揮発メディアと大容量の不揮発メディアを組み合わせたストレージシステムであって、前記高速で小容量の不揮発メディアが使用不可の場合、大容量のメディアのみで運用する。(下記、特許文献7参照)
(6)それぞれ少なくともひとつ以上の揮発メモリと不揮発メモリを備えるディスク制御装置であって、不揮発メモリは揮発メモリにあるライトキャッシュデータをバックアップするために使用する。(下記、特許文献8参照)
【0005】
なお、本願発明に関連する先行技術文献としては以下のものがある。
【特許文献1】特開2004−78461号公報
【特許文献2】米国特許第7,308,531号明細書
【特許文献3】米国特許第6,785,767号明細書
【特許文献4】米国特許第6,516,426号明細書
【特許文献5】米国特許第6,295,577号明細書
【特許文献6】米国特許第6,798,599号明細書
【特許文献7】米国特許第7,302、534号明細書
【特許文献8】米国特許第5,586,291号明細書
【発明の開示】
【発明が解決しようとする課題】
【0006】
前述したように、電源断やシステムクラッシュに対応するための方法として、ファイルシステムはジャーナルログを記録する。このジャーナルログの記録による性能劣化を最小限にするために、ジャーナルログをより高速な不揮発のメモリに記録する方法では、不揮発メモリ及びそれを制御するハードウェアやソフトエアが必要になり、システムが高価になるという欠点がある。
また、メタデータの更新内容をジャーナルログに記録する方法では、修復処理がファイルシステムのフォーマットやファイルシステムがサポートするファイル操作に依存するため、処理が複雑という問題点がある。
同様にストレージデバイスは、電源断に対応するために不揮発のメモリを用いてデータの修復を行っている。しかし、ストレージデバイスで行っている修復処理はあくまでもホストから書き込まれた全てのデータを修復するものである。そのデータは、中途半端なファイルシステムのメタデータあるいは中途半端なアプリケーションの管理データの場合があり、逆に修復しない方が良いケースもある。
本発明は、前記従来技術の問題点を解決するためになされたものであり、本発明の目的は、効率よくトランザクションベースでファイルシステムのメタデータ及びアプリケーションの管理データを書き込む方法、そして電源断が発生した場合にトランザクション単位で自動的に修復を行うことができるストレージデバイスを提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明らかにする。
【課題を解決するための手段】
【0007】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
前述の目的を達成するために、本発明においては、比較的高速で小容量の不揮発ストレージメディアと大容量のストレージメディアを組み合わせ、大容量のストレージメディアはメインのデータ記録領域として、高速なストレージメディアは一時的な記録領域として使用する。大容量のストレージメディアの一部のブロック(セクタ)アドレス空間は一時的な記録領域にマッピングし、マッピングするブロックアドレス空間を設定するコマンドを用意し、前記コマンドによってマッピングされたブロックアドレス空間に書き込まれたデータは一時的な記録領域に先ず格納する。一時的な記録領域に書き込んだデータをコミットするためのコマンドを用意し、前記コミットコマンドを受けると、一時的な記録領域に格納されたデータをメインのデータ記録領域に書き込み、前記コミットコマンドを受ける前に電源断が発生する場合、電源投入時に一時的な記録領域に格納されたデータを破棄し(ロールバック)、前記コミットコマンドを受け取ってから電源断が発生する場合、電源投入時に一時的な記録領域に格納されたデータを前記メインのデータ記録領域に書き込み(ロールフオーワード)、トランザクションベースでデータの修復を自動的に行うことを特徴とするストレージデバイスである。
【0008】
前記トランザクションベースでデータ修復機能を備えたストレージデバイスを用いたファイルシステムでは、ファイルシステムのメタデータ及び特定のファイルデータの格納位置を一時的な記録領域にマッピングされたブロックアドレス空間から割り当て、前記特定のファイルはファイルの属性、ファイルのサイズまたはファイルの名称を用いて判定する。前記特定のファイルデータをコミットするためのインタフェースを用意し、例えば、アプリケーションが「ファイル1」にデータを追記してから、「ファイル2」のデータを更新するという一連のファイル操作を行った後、前記ファイルシステムのコミットインタフェースを用いてコミット要求を発行し、前記ファイルシステムは前記コミット要求を受けると、まだ書き込んでいないメタデータ及び前記ファイル1及びファイル2のデータがあれば、全部前記ストレージデバイスに書き込んでからコミットコマンドを発行する。
例えば、アプリケーションが「ファイル1」にデータを追記してから、「ファイル2」のデータを更新中に電源断が発生する場合、アプリケーションがコミット要求を発行していないため、電源投入時に本発明のストレージデバイスが自動的にロールバック処理を行い、アプリケーションのファイルデータおよびファイルシステムのメタデータが元の処理前の状態に戻る。
また、アプリケーションがコミット要求を発行し、ファイルシステムが更新されたメタデータ及びファイルデータを書き込んで、前記ストレージデバイスにコミットコマンドを発行してから電源断が発生する場合、電源投入時に本発明のストレージデバイスが自動的にロールフォーワード処理を行い、アプリケーションがファイル操作を行った後の状態にする。
【0009】
AVデータを記録再生する装置において、例えば、ファイルシステムのフォーマットとしてUDF(Universal Disc Format)を用いた場合、AVデータをリアルタイム属性のファイルのメインデータストリームに記録する。
前記UDFはNTFS(New Technology File System)と同様に複数のデータストリーム(multiple data stream)をサポートしており、ひとつのファイルには、通常のアプリケーションから見えるメインデータストリームと複数の名前付きストリーム(named stream)を記録することが可能である。
前記名前付きストリームには、例えば、アイコン情報、AVファイルであればプレイバック情報(playback info)やサムネール情報(thumbnail info)を記録することが可能である。
AVデータは容量が大きいため、通常、ライトキャッシュを用いず直接ストレージメディアに書き込む(Direct I/0)ことが多い。本発明のデータ記録方法でも、AVデータはトランザクションベースの修復対象にしない方が望ましい。
前記UDFファイルシステムを用いた場合は、前記リアルタイム属性を用いて、AVデータを他のファイルデータと区別することが可能である。
【0010】
前記AVデータ記録再生する装置のような場合、ストレージデバイスには大容量のAVデータを書き込み、ファイルシステムのメタデータ及びAVアプリケーションの管理データが比較的小容量になるため、前述したような本発明のストレージデバイス及び記録方法で十分に運用が可能である。
しかしながら、例えば、データベースシステムやファイルサーバなどでは、テンポラリファイルなどを除いて基本的に全てのファイルデータをトランザクションベースの修復対象にしなければならない。この場合には、以下のようなストレージデバイス及び記録方法が望ましい。
前記一時的な記録領域を前記メインのデータ記録領域にマッピングするのではなく、トランザクションデータ用のライトコマンドを別途用意し、前記コマンドで書き込まれたデータを全て一時的な記録領域に書き込み、ホストからコミットコマンドを受けると前記一時的な記録領域に格納されたデータを「コミット済み」状態と登録してから、前記データを前記メインのデータ記録領域に書き込み、前記コミットコマンドを受ける前に電源断が発生する場合、電源投入時に前記一時的な記録領域に格納されたデータを破棄し(ロールバック)、前記コミットコマンドを受け取ってから電源断が発生する場合、電源投入時に前記一時的な記録領域に格納されたデータを前記メインのデータ記録領域に書き込み(ロールフォーワード)、トランザクションベースでデータの修復を自動的に行う。
【0011】
また、前述の特許文献5に記載されているような技術を応用し、一時的な記録領域として、通常の揮発メモリを使用し、電源断を検出したときに、トランザクションデータ用のライトコマンドで書き込まれたデータで、なおかつ、既にコミットされたものを不揮発のメモリにバックアップし、電源投入時に前記不揮発メモリにバックアップされたデータをメインのデータ記録領域に書き込み(ロールフォーワード)、トランザクションベースでデータの修復を自動的に行う。
なお、ファイルシステムは、前記トランザクションデータ用のライトコマンドを用いてメタデータ及び特定のファイルデータを書き込み、アプリケーションからのコミット要求を受けると、まだ書き込んでいないメタデータ及びファイルデータがあれば、全部前記ストレージデバイスに書き込んでからコミットコマンドを発行する。また、例えばテンポラリファイルのデータの書き込みでは、通常の非トランザクションデータ用のライトコマンドを用いても構わない。
【発明の効果】
【0012】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
本発明によれば、非常に単純で簡単な方法で、アプリケーション、ファイルシステムとストレージデバイスが連携し、効率よくトランザクションベースでファイルシステムのメタデータ及びアプリケーションの管理データを書き込むことができ、電源断が発生した場合にストレージデバイスがトランザクションベースで自動的に修復を行うことが可能となる。
【発明を実施するための最良の形態】
【0013】
以下、図面を参照して本発明の実施例を詳細に説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
[実施例1]
先ず、図1は、AVデータ記録再生装置またはパーソナルコンピュータのソフトウェア/ハードウェアの概略図である。
図1において、101はAVデータ記録再生装置またはパーソナルコンピュータ、102はアプリケーション、103はファイルシステムドライバ、104はデバイスドライバ、105はストレージデバイスである。
アプリケーション102の具体例としては、例えば、AVデータを扱うアプリケーションまたはデータベースファイルを管理するデータベースアプリケーションがある。
ファイルシステムドライバ103は、ファイルシステムのフォーマット(例えば、UDF)に基づき、ファイル/ディレクトリを管理するソフトウェアモジュールであり、これにより前記アプリケーション102がファイル/ディレクトリの作成、ファイルデータの読み書き、ディレクトリの閲覧などを行うことが可能となる。
デバイスドライバ104は、ストレージデバイス105を認識し、アプリケーション102やファイルシステムドライバ103にストレージデバイス105ヘのブロック(セクタ)データの読み書き、そしてデバイス情報の取得やフラッシュキャッシュなど特定のコマンドを発行するインタフェースを提供している。
【0014】
図2は、本発明の実施例1のAVデータ記録再生装置におけるトランザクションベースストレージデバイス及びその記録方法を説明する図である。
図2において、201はファイルシステムのボリュームレイアウト、202はファイルシステムのメタデータ領域、203はAVアプリケーションの管理データ領域、204はAVデータ領域を示す。
また、205は本実施例のストレージデバイス、206は不揮発のメディアを使用した一時的な記録領域、207は管理情報領域、208はマッピング領域、209は予備領域、210は揮発のメディア(メモリ)を使用したバッファキャッシュ、211は不揮発のメディアを使用したメインデータ記録領域を示す。
本実施例では、ファイルシステムのメタデータ及びAVアプリケーションの管理データをトランザクションデータとして扱い、これらのデータは一時的な記録領域206にマッビングされるアドレス空間に格納される。なお、アドレス空間のマッピング方法として、メインデータ記録領域の先頭から一定サイズの領域を予めマッピングする固定式マッピング方法と、専用のコマンドでマッビングする領域を指定する可変式マッピング方法がある。どちらの方式の場合でも、本実施例のストレージデバイス205は、どのアドレス空間が一時的な記録領域にマッピングされるかを取得するコマンドを用意することが望ましい。
【0015】
前記コマンドを用いて、ファイルシステムドライバ103がトランザクション対象の領域を知ることができ、ファイルシステムのメタデータ及びAVアプリケーションの管理データを前記トランザクション対象の領域に記録することが可能となる。
なお、本実施例、あるいは、後述する実施例2において、トランザクション対象あるいはトランザクション非対象の領域にファイルデータを書き込むか否かは、当該ファイルが記録される親ディレクトリ、または、当該ファイル自身のファイル属性、または、当該ファイル自身の名称の一部あるいは全部、あるいは、当該ファイルのサイズを用いて判断する。また、なお、図2においては、例として、トランザクション対象の領域がセクタ番号0からAまでの領域となっている。
一時的な記録領域206は、不揮発のメディアを使用しており、実際にメインデータ記録領域211の特定のアドレス空間のマッピング領域208以外に、前記不揮発メディアの寿命や欠陥セクタを考慮し、交替処理用の予備領域209を設けることが望ましい。なお、管理情報領域207には、一時的な記録領域206のアドレス空間対メインデータ記録領域211のアドレス空間のマッピングテーブル、各アドレスに記録されているデータの状態(更新なし/更新あり/コミット済み)、交替セクタ情報を記録する。
【0016】
次に、図3から図5を用いて、本実施例1におけるストレージデバイス205の書き込み処理、コミット処理及び修復処理を説明する。
図3は、本実施例におけるストレージデバイス205のデータ書き込み処理を示すフローチャートである。
本実施例において、トランザクションデータであるファイルシステムのメタデータ及びAVアプリケーションの管理データ、そして非トランザクションデータであるAVデータは、全て同じインタフェースを用いて書き込むことが可能である。
ストレージデバイス205は、書き込み対象のアドレスが一時的な記録領域206にマッピングされているかを確認する(ステップ301)。
書き込み対象のアドレスが一時的な記録領域206にマッピングされていない場合は、通常のバッファキャッシュ210にデータを書き込む(ステップ302)。
書き込み対象のアドレスが一時的な記録領域206にマッピングされている場合、書き込み対象アドレスを「更新あり」状態と管理情報領域207に登録し(ステップ303)、マッピング領域208にデータを書き込む(ステップ304)。
【0017】
図4は、本実施例におけるストレージデバイス205のコミット処理を示すフローチャートである。
先ず、「更新あり」のデータが一時的な記録領域206に存在するかを確認する(ステップ401)。ステップ401において、「更新あり」のデータが存在しない場合は、コミット処理を終了する。
ステップ401において、「更新あり」のデータが存在する場合は、前記データを「コミット済み」状態と管理情報領域207に登録し(ステップ402)、前記更新されたデータを読み込み、メインデータ記録領域211に書き込む(ステップ403)。
最後に、前記データを「更新なし」状態と管理情報領域207に登録する(ステップ404)。
前記コミット処理は、アプリケーション102またはファイルシステムドライバ103からコミット要求を受けるときに実行される。
ファイルシステムドライバ103は、ひとつのトランザクションごとにメタデータを更新してからコミット要求を発行するか、複数のトランザクション分のメタデータを更新してからコミット要求を発行することが可能である。
なお、AVアプリケーションの管理データの書き込みが伴う場合は、アプリケーション102からのコミット要求を受けてから、コミット処理を行うことで、ファイルシステムのメタデータとAVアプリケーションの管理データが整合性のある状態で修復が可能となる。
【0018】
図5は、本実施例におけるストレージデバイス205の修復処理を示すフローチャートである。
修復処理は、ストレージデバイス205の電源投入時に実行される。先ず、管理情報領域207を読み込み(ステップ501)、管理情報領域を基に、未書き込みデータがあるかを判定する(ステップ502)。ステップ502において、未書き込みデータがない(即ち、全データが「更新なし」という状態にある)場合は、修復処理を終了し、通常の電源投入時の処理に移る。
ステップ502において、未書き込みデータがある場合は、前記未書き込みデータがコミットされたかどうかを判定する(ステップ503)。
ステップ503において、前記未書き込みデータがコミット済みの場合は、前記コミット済みデータをメインデータ記録領域211に書き込むロールフォワード処理を行い(ステップ505)、前記データを「更新なし」状態と管理情報領域207に登録することで、前記データの状態を「コミット済み」から「更新なし」状態に変更する(ステップ507)。
ステップ503において、前記データがコミットされていない(「更新あり」状態)場合は、メインデータ記録領域211にある更新前データを読み込み一時的な記録領域206にある更新後データに上書きするロールバック処理を行い(ステップ504)、前記データを「更新なし」状態と管理情報領域207に登録することで、前記データの状態を「更新あり」から「更新なし」状態に変更する(ステップ506)。
【0019】
前述したように、前記一時的な記録領域206にマッピングされたデータが「更新なし」、「更新あり」および「コミット済み」の状態にあるかを管理することで、アプリケーション102あるいはファイルシステムドライバ103が意図するポイント(状態)にロールバックあるいはロールフォワード処理を行うことが可能となる。
なお、前記書き込み処理で行う「更新あり」状態に変更するステップ303、前記コミット処理で行う「更新あり」から「コミット済み」状態に変更するステップ402と「コミット済み」から「更新なし」状態に変更するステップ404、そして前記修復処理で行う「更新あり」から「更新なし」状態に変更するステップ506と、「コミット済み」から「更新なし」状態に変更するステップ507は、中途半端な状態が許されない。
そのためには、管理情報領域207に各々の状態を登録する処理ではリングバッファ方式を用いて、直前の状態を表すデータを上書きせず、次の領域に新しい状態を表すデータを格納するとともに、チェックサムを用いて変更処理が完全に完了したかどうかを判断する。
【0020】
[実施例2]
図6は、本発明の実施例2であるデータベースシステムにおけるトランザクションベスストレージデバイス及びその記録方法を示す図である。
図6において、601はファイルシステムのボリュームレイアウト、602はファイルシステムのメタデータ、603はデータベースファイルのデータ、604はファイルシステムのメタデータ、605はテンポラリファイルのデータ、606はその他データを示す。 また、607は本実施例のストレージデバイス、608は揮発のメディアを使用した一時的な記録領域、609は管理情報領域、610はバッファキャッシュ領域、611は不揮発のメディアを使用したバックアップメディア、612は管理情報、613はバックアップ領域、614は不揮発のメディアを使用したメインデータ記録領域を示す。
本実施例2では、ファイルシステムのメタデータに加え、全データベースファイルのデータをトランザクションデータとして扱うことが望ましい。なお、テンポラリファイルなどのデータは非トランザクションデータとして扱っても構わない。
【0021】
データベースファイルのデータが大量で頻繁に更新されるため、データベースシステムに適した本実施例では、一時的な記録領域608として寿命がより長く、性能の良い揮発メディアを使用した方が望ましい。すなわち、通常のバッファキャッシュをトランザクションデータの一時的な記録領域と兼用する。
その代わり、メインデータ記録領域614のメディアより消費電力の少ない不揮発のメディアを用いたバックアップメディア611を用意し、電源断を検出する際に、コミットされたトランザクションデータを前記バックアップメディア611にバックアップする。
なお、トランザクションデータあるいは非トランザクションデータかを区別するためには、前記ストレージデバイス607が専用のトランザクションデータ用書き込みコマンドを用意する。
同様に、ファイルシステムドライバ103も専用のトランザクションデータ用書き込みインタフェースをアプリケーション102に提供する。
【0022】
次に、図7から図10を用いて、本実施例におけるストレージデバイス607の書き込み処理、コミット処理、バックアッブ処理及び修復処理を説明する。
図7は、本実施例におけるストレージデバイス607のデータ書き込み処理を示すフローチャートである。
ストレージデバイス607は、最初にバッファキャッシュ610に空きがあるかを確認し(ステップ701)、ステップ701において、バッファキャッシュ610に空きがない場合は、バッファキャッシュ610にある未書き込みデータをメインデータ記録領域614に吐き出す遅延書き込み処理を行う(ステップ702)。
前記遅延書き込み処理は、バッファキャッシュを備えるストレージデバイスにおいて一般的に使用されるものである。なお、前記遅延書き込み処理で吐き出すデータは非トランザクションデータのみとする。
ステップ701において、バッファキャッシュ610に空きがある場合は、バッファキャッシュ610にデータを書き込み(ステップ703)、前記データがトランザクションデータかを判定する(ステップ704)。
ステップ704での判定結果が、前記データが非トランザクションデータの場合は、管理情報領域609に前記データが未書き込みの非トランザクションデータであると記録する(ステップ705)。
ステップ704での判定結果が、前記データがトランザクションデータの場合は、管理情報領域609に前記データが未書き込みのトランザクションデータであると記録する(ステップ706)。
【0023】
図8は、本実施例におけるストレージデバイス607のコミット処理を示すフローチャートである。
ストレージデバイス607は、最初に未書き込みのトランザクションデータがあるかを判定し(ステップ801)、ステップ801において、未書き込みのトランザクションデータが存在しない場合は、コミット処理を終了する。
ステップ801において、未書き込みのトランザクションデータが存在する場合は、管理情報領域609に「コミット済み」状態を記録し(ステップ802)、コミットされた前記トランザクションデータをメインデータ記録領域614に書き込む(ステップ803)。
最後に管理情報領域609に「更新なし」状態を記録する(ステップ804)。なお、非トランザクションデータは、このコミット処理でトランザクションデータと一緒にメインデータ記録領域614に吐き出しても良い。
【0024】
図9は、本実施例におけるストレージデバイス607のバックアップ処理示すフローチャートである。
ストレージデバイス607は、電源断を検出する際に、例えば、前述の特許文献5に記載されている方法を用いて、必要なデータのバックアッブ処理を行うための電源を供給する。
前記バックアップ処理では、最初に未書き込みのトランザクションデータがコミットされたかどうかを判定し(ステップ901)、ステップ901において、コミットされていない場合は、バックアップ処理を終了する。
ステップ901において、コミットされている場合は、該当するデータをバックアップメディア611のバックアップ領域613に書き込み(ステップ902)、前記バックアッブしたデータの情報(セクタ番号、セクタ数)をバックアップメディア611の管理情報612に書き込む(ステップ903)。
【0025】
図10は、本実施例におけるストレージデバイス607の修復処理を示すフローチャートである。
修復処理は前記ストレージデバイスの電源投入時に実行される。先ず、管理情報612を読み込み(ステップ1001)、前記管理情報を基に、バックアッブデータがあるかを判定する(ステップ1002)。
ステップ1002において、バックアップデータが存在しない場合は、修復処理を終了し、通常の電源投入時の処理に移る。
ステップ1002において、バックアップデータが存在する場合は、前記バックアップデータを読み込み、メインデータ記録領域614に書き込むロールフォワード処理を行い(ステップ1003)、管理情報612をクリアする(ステップ1004)。
前述したように、一時的な記録領域608に格納されたトランザクションデータがコミットされた状態の場合、電源断を検出するときに、トランザクションデータをバックアップメディア611にバックアップすることで、電源投入時の修復処理でロールフォワード処理を行うことが可能となる。なお、前記一時的な記録領域608は揮発のメディアを用いるため、次の電源投入時には全データが無効となり、コミットされていないデータのロールバック処理を行う必要がない。
【0026】
図11は、本実施例1または実施例2における、アプリケーション及びファイルシステムドライバがストレージデバイスと連携し、トランザクションベースで処理する例を示す処理シーケンスである。
図11において、1101はアプリケーション、1102はファイルシステムドライバ、1103はトランザクションベースストレージデバイスを示す。また、図11において、アプリケーションが2つのファイルである「ファイル1」と「ファイル2」を開き、「ファイル1」にデータを追記書き込み、「ファイル2」のデータを一部上書きする一連の処理をひとつのトランザクションである例を示す。
以下に、順番にアプリケーション1101の各ステップについて説明する。
先ず、アプリケーション1101は、「ファイル1」を開く(ステップ1104)。これに対して、ファイルシステムドライバ1102は、「ファイル1」を検索し、メモリ上で管理オブジェクトを作成する(ステップ1105)。
ファイルシステムドライバ1102は、通常オープンされた各々のファイル/ディレクトリに対して、ファイル/ディレクトリのメタデータなどを格納するための管理オプジェクトを作成する。例えば、OSがWindowsの場合ではファイルオブジェクト、OSがLinuxの場合ではinodeという管理オプジェクトを作成する。
次に、アプリケーション1101は、「ファイル2」を開く(ステップ1106)。これに対して、ファイルシステムドライバ1102は、「ファイル2」を検索し、メモリ上で管理オブジェクトを作成する(ステップ1107)。
【0027】
次に、アプリケーション1101が、「ファイル1」にデータを追記書き込む(ステップ1108)。これに対して、ファイルシステムドライバ1102が、追加データ用領域を確保し、ファイルシステムのメタデータを更新する(ステップ1109)。
ファイルシステムメタデータは、例えば、各ブロックの使用状態を表すスペースビットアップ、「ファイル1」のデータの位置を表すエクステントテーブル、「ファイル1」のサイズ情報、「ファイル1」の更新日時情報を指す。そして、ファイルシステムドライバ1102が前記追加データを前記エクステントテーブルの位置情報に基づいて、ストレージデバイス1103に書き込む(ステップ1110)。
次に、アプリケーション1101が「ファイル2」のデータを一部上書きする(ステップ1111)。これに対して、ファイルシステムドライバ1102が、データを「ファイル2」のエクステントテーブルの位置情報に基づいて、ストレージデバイス1103に書き込み(ステップ1112)、「ファイル2」のメタデータ(更新日時情報)を更新する(ステップ1113)。
次に、ひとつのトランザクションのデータ更新が全て完了したため、アプリケーション1101がファイルシステムドライバ1102にコミット要求を発行する(ステップ1114)。これに対して、ファイルシステムドライバ1102が、未書き込みのメタデータ及びファイルデータをストレージデバイス1103に書き込み(ステップ1115)、コミット要求をストレージデバイス1103に発行する(ステップ1116)。
ファイルシステムドライバ1102は、性能向上を目的に、頻繁に更新されるデータを一時的にライトキャッシュに格納することが望ましい。そのため、アプリケーション1101からコミット要求を受けるときに、未書き込みのメタデータ及びファイルデータが存在する場合がある。
【0028】
図11に示すアプリケーション1101、ファイルシステムドライバ1102及びストレージデバイス1103の連携処理は、前述の実施例1と実施例2の両方の場合に適用できる。
実施例1の場合は、全てのデータを同じインタフェース/コマンドで書き込む。それに対して、実施例2の場合は、アプリケーション1101がトランザクションデータを専用のインタフェースで書き込み、またファイルシステムドライバ1102が書き込み時に使用したインタフェースによって各ファイルデータがトランザクションデータかどうかを管理し、専用のコマンドでストレージデバイス1103にトランザクションデータを書き込む。なお、実施例2において、全てのデータをトランザクションデータとし、全てのデータを同じインタフェース/コマンドで書き込むことが可能である。
以上、本発明者によってなされた発明を、前記実施例に基づき具体的に説明したが、本
発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【0029】
【図1】AVデータ記録再生装置またはパーソナルコンピュータの概略図である。
【図2】本発明の実施例1のAVデータ用ストレージデバイス及びその記録方法を示す概略図である。
【図3】本発明の実施例1のAVデータ用ストレージデバイスにおけるデータの書き込み処理の流れの一例を示すフローチャートである。
【図4】本発明の実施例1のAVデータ用ストレーンデバイスにおけるコミット処理の流れの一例を示すフローチャートである。
【図5】本発明の実施例1のAVデータ用ストレージデバイスにおけるデータの修復処理の流れの一例を示すフローチャートである。
【図6】本発明の実施例2のデータベース用ストレージデバイス及びその記録方法を示す概略図である。
【図7】本発明の実施例2のデータベース用ストレージデバイスにおけるデータの書き込み処理の流れの一例を示すフローチャートである。
【図8】本発明の実施例2のデータベース用ストレージデバイスにおけるコミット処理の流れの一例を示すフローチャートである。
【図9】本発明の実施例2のデータベース用ストレーンデバイスにおけるバックアップ処理の流れの一例を示すフローチャートである。
【図10】本発明の実施例2のデータベース用ストレージデバイスにおける修復処理の流れの一例を示すフローチャートである。
【図11】アプリケーション、ファイルシステムドライバ及ゲストレーンデバイスの連携処理の流れの一例を示す処理シーケンスである。
【符号の説明】
【0030】
101 AVデータ記録再生装置またはパーソナルコンピュータ
102,1101 アプリケーション
103,1102 ファイルシステムドライバ
104 デバイスドライバ
105 ストレージデバイス
201,601 ファイルシステムのボリュームレイアウト
202,602,604 ファイルシステムのメタデータ領域
203 AVアプリケーションの管理データ領域
204 AVデータ領域
205,607,1103 ストレージデバイス
206 不揮発のメディアを使用した一時的な記録領域
207 管理情報領域
208 マッピング領域
209 予備領域
210 揮発のメディア(メモリ)を使用したバッファキャッシュ
211 不揮発のメディアを使用したメインデータ記録領域
603 データベースファイルのデータ
605 テンポラリファイルのデータ
606 その他データ
608 揮発のメディアを使用した一時的な記録領域
609 管理情報領域
610 バッファキャッシュ領域
611 不揮発のメディアを使用したバックアップメディア
612 管理情報
613 バックアップ領域
614 不揮発のメディアを使用したメインデータ記録領域

【特許請求の範囲】
【請求項1】
一時的な記録領域とメインの記録領域を有し、電源断からデータを修復する機能を有するストレージデバイスであって、
ホストから書き込まれたデータを前記一時的な記録領域に格納する手段1と、
前記ホストからコミット要求を受けると、前記一時的な記録領域にあるデータを前記メインの記録領域に書き込む手段2と、
前記コミット要求を受ける前に電源断が発生した場合に電源投入時に前記一時的な記録領域にあるデータを破棄し、前記コミット要求を受けてから電源断が発生した場合に電源投入時に前記一時的な記録領域にあるデータをメインの記録領域に書き込む手段3とを備え、トランザクションベースでデータを修復することを特徴とするストレージデバイス。
【請求項2】
前記一時的な記録領域として、比較的高速で小容量の不揮発メモリを用いることを特徴とする請求項1に記載のストレージデバイス。
【請求項3】
前記一時的な記録領域と前記メインの記録領域は、同じ不揮発のストレージメディアに割り当てることを特徴とする請求項1に記載のストレージデバイス。
【請求項4】
前記一時的な記録領域として、フラッシュメモリを用い、
前記メインの記録領域として、ハードディスクを用いることを特徴とする請求項1に記載のストレージデバイス。
【請求項5】
通常のライトキャッシュ用の揮発メディアと、
バックアップ用の不揮発メディアとを備え、
前記一時的な記録領域として、前記ライトキャッシュ用の揮発メディアを使用し、
前記手段3は、電源断を検出する際に、前記コミットされたデータを前記不揮発のメディアにバックアップし、電源投入時に前記不揮発メディアにあるバックアップデータを前記メインの記録領域に書き込むことを特徴とする請求項1に記載のストレージデバイス。
【請求項6】
前記一時的な記録領域をメインデータ領域の先頭のアドレス空間にマッピングして、先頭アドレスから一時的な記録領域のサイズまでのアドレス空間をトランザクション対象領域とし、
前記トランザクション対象領域のデータのみを修復することを特徴とする請求項1ないし請求項5のいずれか1項に記載のストレージデバイス。
【請求項7】
トランザクション対象領域のセクタ/ブロックアドレス空間は、前記ホストから指定でき、
前記指定されたトランザクション対象領域のデータのみを修復することを特徴とする請求項1ないし請求項5のいずれか1項に記載のストレージデバイス。
【請求項8】
非トランザクションデータ用のライトコマンドと、トランザクションデータ用のライトコマンドを両方用意し、
前記トランザクションデータ用のライトコマンドで書き込まれたデータをトランザクション対象とし、電源断発生時にトランザクションベースでデータの修復を行うことを特徴とする請求項1ないし請求項5のいずれか1項に記載のストレージデバイス。
【請求項9】
請求項6または請求項7に記載のストレージデバイスを用いるファイルシステムの記録方法であって、
前記ファイルシステムのメタデータをトランザクション対象の領域に配置し、トランザクション単位でメタデータを前記ストレージデバイスに書き込んでからコミットコマンドを発行することを特徴とするファイルシステムの記録方法。
【請求項10】
請求項6または請求項7に記載のストレージデバイスを用いるファイルシステムの記録方法であって、
前記ファイルシステムのメタデータ及び特定のファイルデータをトランザクション対象の領域に配置し、アプリケーションからのコミット要求を受けると、前記ストレージデバイスにコミットコマンドを発行し、ファイルシステムのメタデータとアプリケーションのファイルデータをトランザクション単位で更新することを特徴とするファイルシステムの記録方法。
【請求項11】
請求項8に記載のストレージデバイスを用いるファイルシステムの記録方法であって、
トランザクションデータ用のライトコマンドを用いてファイルシステムのメタデータを書き込み、トランザクション単位で前記メタデータを前記ストレージデバイスに書き込んでからコミットコマンドを発行することを特徴とするファイルシステムの記録方法。
【請求項12】
請求項8に記載のストレージデバイスを用いるファイルシステムの記録方法であって、 トランザクションデータ用のライトコマンドを用いてファイルシステムのメタデータ及び特定のファイルデータを書き込み、アプリケーションからのコミット要求を受けると、前記ストレージデバイスにコミットコマンドを発行し、ファイルシステムのメタデータとアプリケーションのファイルデータをトランザクションベースで更新することを特徴とするファイルシステムの記録方法。
【請求項13】
トランザクション対象あるいはトランザクション非対象の領域にファイルデータを書き込むかを判定するために、当該ファイルが記録される親ディレクトリ、あるいは当該ファイル自身のファイル属性を用いることを特徴とする請求項10または請求項12に記載のファイルシステムの記録方法。
【請求項14】
トランザクション対象あるいはトランザクション非対象の領域にファイルデータを書き込むかを判定するために、当該ファイルが記録される親ディレクトリ、あるいは当該ファイル自身の名称の一部あるいは全部を用いることを特徴とする請求項10または請求項12に記載のファイルシステムの記録方法。
【請求項15】
トランザクション対象あるいはトランザクション非対象の領域にファイルデータを書き込むかを判定するために、当該ファイルのサイズを用いることを特徴とする請求項10または請求項12に記載のファイルシステムの記録方法。
【請求項16】
ファイルシステムフォーマットとしてUDFを用いて、属性がリアルタイムのファイルのメインデータストリームをトランザクション非対象の領域に書き込み、それ以外のファイルデータ及びファイルシステムのメタデータをトランザクション対象の領域に書き込むことを特徴とする請求項10に記載のファイルシステムの記録方法。
【請求項17】
ファイルシステムフォーマットとしてUDFを用いて、属性がリアルタイムのファイルのメインデータストリームを書き込む際に、非トランザクションデータ用のライトコマンドを用い、それ以外のファイルデータ及びファイルシステムのメタデータを書き込む際に、トランザクションデータ用のライトコマンドを用いることを特徴とする請求項12に記載のファイルシステムの記録方法。

【図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


【公開番号】特開2009−282752(P2009−282752A)
【公開日】平成21年12月3日(2009.12.3)
【国際特許分類】
【出願番号】特願2008−134129(P2008−134129)
【出願日】平成20年5月22日(2008.5.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
2.Linux
【出願人】(391002409)株式会社 日立システムアンドサービス (205)
【Fターム(参考)】