記憶装置およびデータスマグリングの方法
その上に具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体とその使用方法とを提供する。この媒体は、記憶装置の記憶エリアの制限エリアへの、ホストシステム上で動作するファイルシステムによるアクセスを制限するためのプログラムコードと、少なくとも1つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするためのプログラムコードとを含む。好ましくは、コンピュータ可読コードは、記憶装置がデータを非制限エリアから制限エリアにコピーすることを可能にするためのプログラムコードをさらに含む。好ましくは、コンピュータ可読コードは、制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを非制限エリア内のアドレスへ経路指定するように記憶装置に指示するためのプログラムコードをさらに含む。好ましくは、コンピュータ可読コードは、ホストシステムが非制限エリアにアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するためのプログラムコードをさらに含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、許可済みアプリケーションがファイルシステムアプリケーションインターフェイス(FSAPI:file-system application-interface )だけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。
【背景技術】
【0002】
ホストシステムの動作を可能にする不揮発性メモリ(NVM)記憶装置は、コンピュータ工学の技術分野で良く知られている。単純なセキュリティ上の考慮から、ホストシステムの開発者は必然的に「ブートパーティション」が普通のファイルシステムによってアクセスされるのを防止しようとする。
【0003】
ブートパーティションおよびシステムデータ(例えば、セキュリティキー)などの制限サブエリアへのアクセスは制限され、これらのサブエリアはFSAPIだけを使用するアプリケーションによってはアクセスされ得ない。アプリケーションおよびユーザにサービスするように意図されている他の記憶サブエリアは、FSAPIを用いるファイルシステムによってアクセスされる。この制限は、通例、制限サブエリアのアドレスを除いて、ファイルシステムがアクセスできるアドレスの範囲を制限することによって実施される。
【0004】
しかし、ホストシステムの寿命の間に、制限サブエリア内のデータに(例えば、ブートイメージを更新するために、またシステムキーを読み出すために)アクセスすることが時折必要になる。ブートパーティションを更新する必要は、いろいろな理由から(例えば、ソフトウェアバグを直すか、あるいは新しく利用可能になった機能をインストールするかなど)生じ得る。
【0005】
制限エリアはFSAPIを使用するオペレーティングシステム(OS)によっては改変され得ないので、そのような更新は複雑であって、制限を迂回して特権付きエリアにアクセスすることのできる特定デバイス向け、特定ホスト向け、特定OS向けのアプリケーションを必要とする。
【0006】
そのような解決策(例えば、Microsoft(マイクロソフト)(登録商標)社から入手できるUpdateXIP)は、RAMをフラギングすること、パワーダウンせずにホストシステムをリブートすること、フラグをブートコードによってチェックすること、ブートパーティションからブートパーティションにアクセスできる特別のコードをロードすることを含む。この手続きは、関係するコンポーネント(例えば、記憶装置、ホストシステム、およびOS)の間に不均一性が存在するであろうということを意味する。このような事情は、記憶装置における制限エリア(例えば、ブートパーティション)の更新を非常に高価な機能とする。
【0007】
あたかもその全体が本願明細書において完全に開示されたかのように参照により援用されているMoran の米国特許出願第2006−0031632号(以降、特許文献1と称される)などの従来技術システムは、ホストシステムのファイルシステムによってデータが直接書き込まれないようにデータを格納するためのシステムを開示している。しかし、特許文献1は、記憶装置がホストシステムによって書き込まれたデータを(パワーアップ時にそれを自動的にリストアすることによって)失わないようにそれによって保護するところの内部バックアップメカニズムを開示しているだけであって、データが書き込まれているアドレスとは異なる論理アドレスからデータがどのように読み出され得るかを開示していない。従って、特許文献1によるシステムは、制限エリア内のデータへのアクセスを可能にするためには役立たない。
【0008】
許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを有することが望ましい。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許出願第2006−0031632号
【発明の概要】
【0010】
本発明の目的は、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを提供することである。
【0011】
明瞭性を目的として、以下の幾つかの用語が本願明細書での使用のために特別に定義される。「ファイルシステムアプリケーションインターフェイス」、「FSAPI」、および「ファイルシステムAPI」という用語は、本願明細書において、ファイルシステムが記憶装置において実行し得る標準的操作、すなわちファイル/ディレクトリを開く/作成する(open/create file/directory)、ファイル/ディレクトリを読み出す/書き込む(read/write file/directory) 、ファイル/ディレクトリを削除する(delete file/directory) 、ファイル/ディレクトリを改名する(rename file/directory) 、およびファイル/ディレクトリを閉じる(close file/directory)のセットを指すために使用される。「記憶エリア」という用語は、本願明細書において、記憶装置の1つの連続する論理(物理的でない)アドレス範囲を指すために使用される。
【0012】
「FAT32」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているファイルシステムを指すために使用される。「クラスタ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「FATエントリ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「ファイルアロケーションテーブル」および「FAT」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「DirEntry」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。
【0013】
「最終更新時間フィールド」および「LUTフィールド」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているように、ファイルが更新された最終時間を明示する、DirEntry内の1つのパラメータを指すために使用される。「ファイル長パラメータ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているように、ファイルの長さをバイト数で明示する、DirEntry内の1つのパラメータを指すために使用される。
【0014】
「セクタ」という用語は、本願明細書において、データパケットの論理シーケンシャルアドレスを指すために使用される。データパケットは、論理シーケンシャル512バイト、論理シーケンシャルFAT32セクタ、または論理シーケンシャルFAT32クラスタであり得る。「ファイル」という用語は、本願明細書において、FSAPIにより処理され得る任意のデータオブジェクト(例えば、データファイル、データファイルの一部分、ディレクトリ、およびプレイリストなど)を指すために使用される。「FAT32セクタ」という用語は、本願明細書において、512バイトのセクタを指すために使用される。
【0015】
「論理パーティション」という用語は、本願明細書において、セクタの1つの論理的連続的範囲を指すために使用される。論理パーティションは、一度に1つのホストソフトウェアモジュールによってのみ管理され得る。ホストソフトウェアモジュールの例は、ファイルシステムおよびチップセットブートROMを含む。「制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされるべきではないが他のモジュールによってアクセスされるべき論理パーティションを指すために使用される。「非制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされ得る論理パーティションを指すために使用される。「制限セクタ」という用語は、本願明細書において、制限エリアの範囲内にあるセクタを指すために使用される。「非制限セクタ」という用語は、本願明細書において、非制限エリアの範囲内にあるセクタを指すために使用される。
【0016】
「スマグリング(smuggling) 」という用語は、本願明細書において、それによってホストファイルシステムがデータを1つの論理アドレスに書き込み、また記憶装置が異なる論理アドレスにおいてデータへのアクセスを内部的に可能にするところの内部記憶操作を指すために使用される。特別の場合には、スマグリングは、ホストファイルシステムが制限エリアにおいてデータを読み出しおよび書き込むことを可能にするために使用され得る。「被スマグルデータ(smuggled data) 」という用語は、本願明細書において、それに対してスマグリング操作が行われたところのデータを指すために使用される。「無駄セクタ」という用語は、本願明細書において、スマグリング操作に起因して記憶装置がデータ格納のために使用しない論理セクタを指すために使用される。「スペースを解放する」という用語は、本願明細書において、無駄セクタの、データを記憶するセクタへの変換を指すために使用される。
【0017】
本発明は、FSAPIだけを使用する記憶装置において制限エリアにアクセスする方法を教示する。記述の目的のために、記憶装置にアクセスするときに最も問題となる操作が扱われ、それは更新操作である。それでも、本発明は、後述するように、開く操作、作成する操作、読み出す操作、および削除する操作にも当てはまる。
【0018】
本発明の好ましい実施形態は、3つのステップを有する間接プロセスを用いて実行される。第1のステップは、制限エリア内にスマグリングされるべきファイルを非制限エリアに格納することである。ファイルは、FSAPIにおいて適法であるけれども記憶装置によって「スマグリング表示」として認識され得る属性と共に格納される。記憶装置により実行される第2のステップは、新しく格納されたファイル中の「スマグリング表示」を探すことである。第3のステップは、スマグリング表示が検出された場合に限って行われるステップであって、記憶装置によって内部で行われる、ファイルの、指定された制限エリアへのスマグリングである。
【0019】
検出
本発明の1つの好ましい実施形態では、スマグリング表示はファイルの名前である。本発明の他の1つの好ましい実施形態では、スマグリング表示はファイルのボディの特別のコンテンツ(例えば、ヘッダ、フッタ、あるいはファイル中の他の任意の定義済みオフセット)である。
【0020】
スマグリング
本発明の1つの好ましい実施形態では、非制限エリアから制限エリアへのファイルのスマグリングは、データを非制限エリアから制限エリアへ物理的にコピーすることによって実行される。これは「コピー」モードと称される。
【0021】
本発明の他の1つの好ましい実施形態では、スマグリングは、制限エリアからデータを読み出さなければならないデバイスが非制限エリアへリダイレクトされるように、非制限エリアを制限エリア中に論理的にマッピングすることにより実行される。これは「マップアウト」モードと称される。
【0022】
本発明の他の1つの好ましい実施形態では、スマグリングは、ファイルにおける被スマグルデータの論理オフセットを制限エリアにおける対応するオフセットに変換し、これにより読み出しのために非制限エリアを制限エリアにマッピングすることによって、実行される。非制限エリアに書き込まれている被スマグルファイル(smuggled file) からファイルシステムがデータを読み出そうと試みるとき、記憶装置はその操作を「被スマグルデータを読み出すこと」として検出する。データは、制限エリアにおけるオフセットを被スマグルファイルにおけるオフセットに整合させることによって制限エリア内の対応する位置から取り出される。これは「マップイン」モードと称される。
【0023】
本発明の他の好ましい実施形態では、コピーモード、マップアウトモード、あるいはマップインモードにおいて、スマグリングは、非制限エリアへの書き込みが完了し、ファイルが閉じられた後に、実行される。本発明の他の好ましい実施形態では、マップアウトモードまたはマップインモードにおいて、スマグリングは、ファイルが書き込まれている間に実行される。
【0024】
スペースを解放する
本発明の1つの好ましい実施形態では、記憶装置の容量を超える仮想サブエリアを付け加え、その仮想サブエリアをアドレスの失われた範囲にマッピングすることによって、記憶装置は、制限エリアアドレスにマッピングされて失われた非制限エリアの論理アドレスを再使用する。
【0025】
本発明の他の1つの好ましい実施形態では、アプリケーションは、スマグリング操作が行われるように適当な期間待った後に、ちょうど書き込まれたばかりのファイルを削除する。この手続きは、非制限エリアを使用するために解放する。これは「コピー−削除」モードと称される。
【0026】
一般
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、後述するように、ファイルの一部に対して実行され得る。
【0027】
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、各制限エリアが記憶装置へのスマグリングの宛先を指示するためのそれ自身の特定のポインタを有する複数のファイルに対して実行され得る。
【0028】
従って、本発明に従って初めて計算システムが提供される。この計算システムは、(a)ホストシステムであって、(i)ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、(ii)ホストシステム上で動作する少なくとも1つのアプリケーションと、を有するホストシステムと、(b)記憶装置であって、(i)記憶装置を制御するコントローラと、(ii)情報を記憶装置に格納するための記憶エリアと、を有する記憶装置と、(c)ファイルシステムによる記憶エリアの制限エリアへのアクセスを制限するための第1のメカニズムと、(d)少なくとも1つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするための、記憶装置に存在する第2のメカニズムと、を備える。
【0029】
好ましくは、第2のメカニズムは、記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするように構成される。
【0030】
好ましくは、第2のメカニズムは、制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するように動作可能である。
【0031】
好ましくは、第2のメカニズムは、ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するように動作可能である。
【0032】
本発明に従って、コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体が初めて提供される。このコンピュータ可読コードは、(a)記憶装置の記憶エリアの制限エリアへの、ホストシステム上で動作するファイルシステムによるアクセスを制限するためのプログラムコードと、(b)少なくとも1つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするためのプログラムコードと、を含む。
【0033】
好ましくは、コンピュータ可読コードは、(c)記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするためのプログラムコードをさらに含む。
【0034】
好ましくは、コンピュータ可読コードは、(c)制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するためのプログラムコードをさらに含む。
【0035】
好ましくは、コンピュータ可読コードは、(c)ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するためのプログラムコードをさらに含む。
【0036】
これらの実施形態およびさらなる実施形態は、以下の詳細な説明および実施例から明らかとなる。 本発明は、添付図面を参照して、単に例示により、ここで記述される。
【図面の簡単な説明】
【0037】
【図1】本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。
【図2】図2Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図2Bは、被スマグルデータについてFAT32から書き込みリクエストを受け取った後の図2Aのパーティションを示す。図2Cは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図2Bのパーティションを示す。図2Dは、非制限エリアに格納されていた被スマグルデータが削除された後の図2Cのパーティションを示す。
【図3】図3Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図3Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図3Aのパーティションを示す。図3Cは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図3Bのパーティションを示す。
【図4】図4Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図4Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図4Aのパーティションを示す。図4Cは、制限セクタが図4Bで書き込まれた非制限セクタに記憶装置によってマッピングされた後の図4Bのパーティションを示す。
【図5】図5Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図5Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Aのパーティションを示す。図5Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Bのパーティションを示す。図5Dは、図5Cの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すFAT32からのリクエストを受け取った後の図5Cのパーティションを示す。
【図6】図6Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図6Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Aのパーティションを示す。図6Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Bのパーティションを示す。図6Dは、仮想セクタを読み出すFAT32からの読み出しリクエストを受け取った後の図6Cのパーティションを示す。
【図7A】本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ(A)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7B】本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ(B)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7C】本発明の好ましい実施形態に従う、被スマグルファイルに上書きするというシナリオ(C)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7D】本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ(D)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7E】本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ(E)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【発明を実施するための形態】
【0038】
本発明は、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。本発明に従う、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするための原理および操作は、付随する記述および図面を参照してより良く理解され得る。
【0039】
図面は、データを記憶装置にスマグリングする3つの段階、すなわち
(1)プレスマグリング:スマグリング操作の始まりを検出すること
(2)スマグリング:スマグリング操作自体のこと
(3)ポストスマグリング:スマグリング操作後にスペースを解放することによって記憶装置上の空きスペースを最大にすることを記述している。
【0040】
記述を簡単にするために、以下の仮定が行われる。
(1)記憶装置は2つの論理パーティション、すなわちOSイメージ、このOSイメージを格納するための制限エリアと、ユーザアプリケーションおよびデータファイルを格納するための非制限エリアとに分割されている。
(2)ホストシステムプロセッサは、このホストシステムプロセッサのNVMに格納されているソフトウェアコードを実行することによって記憶装置の制限エリアにアクセスする。このソフトウェアコードは、ブートROMであって、パワーアップ時にホストシステムプロセッサによって自動的に実行される。ホストシステムプロセッサは、OSイメージを制限エリアからホストシステムRAMにロードし、このRAM内のスタートアドレスに移動し、その後にコードを実行する。ブートROMは、サイズが限られているので、FAT32メタデータおよびデータ構造に関するいかなる情報も包含できない。
(3)ホストシステムは、FAT32を介して記憶装置の非制限エリアにアクセスする。FAT32は、ブートプロセスが完了するときに実行される。
(4)制限エリアはセクタ0からスタートする。従って、OSイメージは、セクタ0からスタートして格納される。
(5)非制限エリアは、OSイメージセクタより大きな任意のセクタであり得るセクタ「FAT32StartSector(FAT32スタートセクタ)」からスタートする。
(6)記憶装置は、本願明細書において「FAT32エンジン」と称されるソフトウェアまたはハードウェアロジックを有し、これは、FATおよびDirEntryの位置および構造などの、FAT32により使用されるメタデータおよびデータ構造を認識する。
(7)(制限エリアに格納されている)OSイメージは、データを非制限エリアに書き込む、FAT32を介しての、ユーザアプリケーションリクエストによって更新される。
(8)記憶装置は、不揮発性隠れエリア(すなわち、ホストシステムプロセッサ、ブートROM、およびFAT32から隠されている)に、スマグリングされるべきファイルの名前(例えば、OSIMAGE.BIN)と、制限エリアのスタートセクタへのポインタ(例えば、4バイト)とを含むストリングを格納する。
【0041】
ここで図面を参照すると、図1は、本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。ホストシステム4を有する計算システム2が示されている。ホストシステム4は、ファイルシステム5、OS6、ドライバ7、ホストシステムプロセッサ8、およびアプリケーション9を含む。ドライバ7は、標準的ブロックデバイスドライバを含む。ホストシステム4は、コントローラ12および記憶エリア14を有する記憶装置10に操作可能に接続されて示されている。記憶エリア14は、制限エリア16および非制限エリア18を有する。
【0042】
図2A〜2Dは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図2A〜2Dは、非制限エリアを介して制限エリアの中にデータをスマグリングし、その後に、非制限エリアをスマグリングプロセス中に生成された中間データから解放することによってOSイメージを更新するための4つの段階を示す。
【0043】
図2Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。記憶装置は2つのパーティション、すなわち、OSイメージを格納するための制限エリア20と、ユーザデータを格納するための非制限エリア22とを有する。
【0044】
図2Bは、被スマグルデータについてFAT32から書き込みリクエストを受け取った後の図2Aのパーティションを示す。図2Bは、被スマグルファイル24(例えば、OSイメージ)を示す。記憶装置は、被スマグルファイル24を非制限エリア22に格納する。検出プロセスは、図7A〜7Eに関連して記述される。
【0045】
図2Cは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図2Bのパーティションを示す。被スマグルファイル24は、制限エリア20にコピーされて示されている。被スマグルファイル24は、そのとき、制限ファイル26(すなわち、FAT32によってアクセスされ得ないデータファイル)になる。
【0046】
図2Dは、非制限エリアに格納されていた被スマグルデータが削除された後の図2Cのパーティションを示す。被スマグルファイル24の削除は、ファイルを書き込んだアプリケーションにより(記憶装置がスマグリングを完了することを可能にする安全遅延後に)、または記憶装置自体により(次のパワーアップ時に)開始され得る。
【0047】
被スマグルファイル24がOSイメージである例において、このOSイメージは、(制限ファイル26として)制限エリアに格納され、ホストシステムプロセッサのブートROMによってアクセスされ得るけれども、FAT32によっては読み出され得ない。データをスマグリングしてスペースを解放するコピー−削除モードは、OSイメージの部分的更新には適用され得なくて、OSイメージが完全に更新される場合に限って適用され得る。
【0048】
図3A〜3Cは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングするマップインモードの簡略ブロック図である。図3A〜3Cは、データを非制限エリアに書き込み、その後に非制限エリアを制限エリアの中にマッピングすることによりデータをスマグリングすることによってOSイメージを更新するための3つの段階を示す。
【0049】
図3Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図2Aに関して説明したように、記憶装置は2つのパーティション、すなわち、OSイメージを格納するための制限エリア20と、ユーザデータを格納するための非制限エリア22とを有する。
【0050】
図3Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図3Aのパーティションを示す。データセクタ30は、非制限セクタ32に書き込まれるように示されている。FAT32が被スマグルファイルの基準に適合するデータセクタ30を書き込むためのリクエストを送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置は非制限セクタ32のセクタ番号を制限セクタ34の制限エリアセクタ番号に「変換すること」によって非制限セクタ32を制限セクタ34にマッピング(マッピングA)する。「変換」は次のように行われる。すなわち、記憶装置は、ファイルにおける非制限セクタ32のオフセットを計算し(図7A〜7Eに関して詳しく説明される)、セクタオフセットは制限エリア20におけるセクタオフセットに変換される。
【0051】
図3Cは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図3Bのパーティションを示す。FAT32からの(非制限セクタ32への)、あるいはホストシステムのブートROMコードからの(制限セクタ34への)書き込みリクエストは、記憶装置によって内部的に制限セクタ34へ経路指定される。経路指定メカニズムは記憶装置によって管理され、それは非制限セクタから制限セクタへのルックアップテーブルを管理する。テーブルのどのエントリも、スマグリングされた非制限セクタ番号と、図3Bにおいてマッピングされた対応する制限セクタ番号とを含む。記憶装置は、FAT32から来る書き込みリクエストを監視し、非制限セクタがリクエストされているか否かをルックアップテーブルにおいて調べる。非制限セクタがリクエストされているならば、記憶装置は、セクタ36に位置すると期待されているデータセクタに対する書き込みリクエストを、実際にはセクタ38に書き込まれるように経路指定する(マッピングB)。このプロセスは、非制限エリアの範囲内のセクタを制限エリアの範囲内のセクタにマッピングするので、マップインモードと称される。
【0052】
マップインモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とし、従ってルックアップテーブルを構築するために記憶装置のFAT32エンジンにより必要とされる「準備」に関して寛容ではない場合に適用可能である。FAT32エンジンにより必要とされる準備を図7A〜7Eに関して説明する。マップインモードは、FAT32リクエスト(ホストシステムプロセッサにより実行される)をFAT32への指示なしでルックアップテーブルに従って制限セクタへ内部的に経路指定する。従って、ルックアップテーブルに現れる非制限セクタは、データを格納するために記憶装置によって使用されない。このような無駄セクタがFAT32により再使用される方法を図5A〜5Dに関して説明する。
【0053】
図4A〜4Cは、本発明の好ましい実施形態に従う、プロセスの種々の段階においてデータをスマグリングするマップアウトモードの簡略ブロック図である。図4A〜4Cは、データを非制限セクタの中に直接スマグリングし、その後に制限セクタを非制限セクタの中にマッピングアウトすることによってOSイメージを更新するための3つの段階を示す。
【0054】
図4Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。(図2Aおよび2Aに関して説明したように、)制限エリア20と非制限エリア22とが示されている。
【0055】
図4Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図4Aのパーティションを示す。記憶装置は、FAT32によりリクエストされたように非制限セクタ40にデータを格納する。
【0056】
図4Cは、図4Bで書き込まれた非制限セクタに記憶装置によって制限セクタがマッピングされた後の図4Bのパーティションを示す。記憶装置によって、図3Cに関して説明したルックアップテーブルに従って、データセクタ42が非制限セクタ40の中に内部的にマッピングされる(マッピングC)。従って、(制限エリアに格納されているOSイメージに対してホストシステムプロセッサブートROMから来る)アクセスリクエストがあったとき、記憶装置はアクセスリクエストを前述したルックアップテーブルに従って非制限セクタへ内部的に経路指定する。
【0057】
マップアウトモードは、制限エリアの範囲内のセクタを非制限エリアの範囲内のセクタの中にマッピングする。このようなマッピングは、ルックアップテーブルにおいて現れる制限セクタが記憶装置によってOSイメージデータを格納するために使用されないという状況を作り出す。そのような無駄セクタがFAT32により再使用される方法は、図6A〜6Dに関して記載される。マップアウトモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とせず、従ってルックアップテーブルを構築するために記憶装置のFAT32エンジンにより必要とされる準備に関して寛容でない場合に適用可能である。
【0058】
図5A〜5Dは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップインモードにおいてスペースを解放することの簡略ブロック図である。図5A〜5Dは、マップインプロセス中に作成された無駄セクタを利用するための4つの段階を示す。
【0059】
図5Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。OSイメージを格納するための制限エリア50、ユーザデータを格納するための非制限エリア52、および仮想エリア54が示されている。図2A、2A、および3Aとは対照的に、記憶装置は制限エリア50のサイズを有する仮想エリア54をホストシステムに提供する。仮想エリア54はセクタの論理シーケンシャル範囲である。記憶装置は、ホストシステムのFAT32に、非制限エリア52のためのセクタと仮想エリア54のためのセクタとを有するエリアを提供する。その結果として、FAT32がホストシステムプロセッサ上で実行されるとき、FAT32は非制限エリア52と仮想エリア54とを1つの非制限エリアとして管理する。
【0060】
図5Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Aのパーティションを示す。データセクタ56は非制限セクタ58に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ56を書き込むためのリクエストをFAT32が送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置はルックアップテーブルを調べて、その被スマグルデータを書き込むための制限セクタ60についてのセクタ番号を得る。記憶装置は、データセクタ56を制限セクタ60に格納されるように経路指定(マッピングD)する。
【0061】
図5Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Bのパーティションを示す。制限エリア50に格納されている被スマグルデータ62が示され、ホストシステムプロセッサで実行されるFAT32からの仮想エリア54の範囲内の仮想セクタ66にデータセクタ64を書き込むリクエストを受け取る。記憶装置は、図3Cに関して言及されたルックアップテーブルのほかに、「仮想−論理(virtual-to-logical)」(VTL)ルックアップテーブルを管理する。VTLテーブルのどのエントリも、仮想セクタ番号と、対応する非制限セクタ番号とを含む。FAT32がデータセクタ64を仮想データセクタ66(仮想エリア54の範囲内のセクタ)に書き込もうと試みるとき、記憶装置は、仮想セクタ66が非制限セクタに既にマッピングされているか否かを判定するためにVTLルックアップテーブルを内部的に調べる。
【0062】
(図5Bのデータセクタ56に関して説明したように)仮想セクタ66がマッピングされていたならば、記憶装置はFAT32リクエストを適合する非制限セクタ68へ内部的に経路指定する(マッピングE)。仮想セクタ66がまだマッピングされていなければ、記憶装置は、仮想セクタが非制限セクタにマッピングされているかどうかを確かめるためにVTLルックアップテーブル中の非制限セクタ番号を調べる。仮想セクタがマッピングされていない非制限セクタ(すなわち、無駄セクタ)を記憶装置が発見したならば、記憶装置は、仮想セクタ66を非制限セクタ68(利用可能な「無駄セクタ」)にマッピング(マッピングE)し、VTLルックアップテーブル中の対応するエントリをその非制限セクタ番号で更新する。記憶装置は、その後、(FAT32により仮想セクタ66に送られた)データセクタ64をセクタ68に内部的に格納する。
【0063】
記憶装置は、ルックアップテーブルを、(図3Cに関して説明したように)制限セクタ62のマッピング済みセクタ番号で更新する。FAT32が(図5Cに示されているように)非制限セクタ68にアクセスしよう(すなわち、読み出すかまたは書き込もう)と試みるとき、記憶装置はそのリクエストを(制限エリア50内の)制限セクタ62に内部的に経路指定(マッピングF)する。
【0064】
無駄エリアが制限エリア50より小さいために(それは、制限エリア50の全体よりは小さいエリアをスマグリングすることの結果である)利用可能な非制限セクタ(制限セクタにマッピングされていない)を記憶装置が発見できなければ、記憶装置は、FAT32により仮想アドレスに送られるデータセクタを格納するために制限エリア50内の利用可能な記憶エリアを使用する。このとき、これらのデータセクタは仮想エリア54から制限エリア50の中に直接マッピングされる。より多くのデータが制限エリア50内にスマグリングされ、より多くの無駄エリアが非制限エリア52に作られると、直ちに記憶装置はこれらの「直接マッピングされた」データセクタを制限エリア50から非制限エリア52に移し、制限エリア50を新たにスマグリングされるデータのために利用可能にする。
【0065】
図5Dは、図5Cの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すFAT32からのリクエストを受け取った後の図5Cのパーティションを示す。図5Dにおいて、FAT32は、非制限論理セクタ70(これは、既に制限セクタ62の中にマッピングされている)の中に既にマッピングされている仮想セクタ66を、記憶装置から、読み出すかまたは書き込もうと試みる。記憶装置は、マッピングされている非制限論理セクタ70に関してVTLルックアップテーブルを調べて、FAT32リクエストを非制限論理セクタ70へ経路指定(マッピングG)する。従って、
(1)非制限エリア52に向けられたデータは非制限エリア52に格納され、
(2)(データスマグリング方式により意図されているように、)非制限エリア52に向けられた被スマグルデータは制限エリア50に格納され、
(3)仮想エリア54に向けられたデータは非制限エリア52に格納される。
【0066】
図6A〜6Dは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップアウトモードにおいてスペースを解放することの簡略ブロック図である。図6A〜6Dは、マップアウトプロセス中に作られる無駄セクタを利用するための4つの段階を示す。
【0067】
図6Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。(図5Aに関して説明したように、)制限エリア50、非制限エリア52、および仮想エリア54が示されている。
【0068】
図6Bは、非制限セクタにデータセクタを書き込むFAT32からの書き込みリクエストを受け取った後の図6Aのパーティションを示す。データセクタ72は、非制限セクタ74に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ72を書き込むためのリクエストをFAT32が送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置は、(図3Cに関して説明した)ルックアップテーブルを調べて、制限セクタ76についてのセクタ番号を得る。
【0069】
記憶装置は、データセクタ72を非制限セクタ74に内部的に格納する。記憶装置は、ルックアップテーブルを、マッピングされた非制限セクタ74のセクタ番号で更新する。次のブート操作時にホストシステムプロセッサがOSイメージを制限エリア50内の制限セクタ76から読み出そうと試みるとき、記憶装置は、リクエストを制限セクタ76の代わりに非制限エリア52内のデータセクタ74へ内部的に経路指定する(マッピングH)。
【0070】
図6Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Bのパーティションを示す。データセクタ78は、ホストプロセッサ上で実行されるFAT32により仮想セクタ80に書き込まれるように示されている。記憶装置は、1つの固定されたオフセットを適用することによって仮想エリア54のアドレスを制限エリア50のアドレスに変換する。FAT32がデータを仮想セクタ80(仮想エリア54の範囲の中のセクタ)に書き込もうと試みるとき、記憶装置は、アドレスを仮想エリア54から制限エリア50内に内部的にオフセットさせ(マッピングI)、データセクタ78を制限エリア50に格納する。制限エリア50に向けられたデータは実際には非制限エリア52に格納されるということ、および、記憶装置はデータを非制限エリア52内のマッピングされた非制限セクタ82から取り出す(マッピングJ)ということに留意するべきである。従って、
(1)非制限エリア52に向けられたデータは非制限エリア52に格納され、
(2)制限エリア50に向けられた被スマグルデータも非制限エリア52に格納され、
(3)仮想エリア54に向けられたデータは制限エリア50に格納される。
【0071】
図6Dは、仮想セクタを読み出すFAT32からの読み出しリクエストを受け取った後の図6Cのパーティションを示す。仮想セクタ80を読み出すFAT32からの読み出しリクエストを記憶装置が受け取ったとき、記憶装置は、固定されたオフセットを適用し(マッピングK)、制限エリア50からデータセクタ84を読み出す。
【0072】
図7A〜7Eは、本発明の好ましい実施形態に従う、以下で挙げられる種々のデータスマグリングシナリオのために、記憶装置を有するホストシステムで実行される、データスマグリング検出方式の簡略フローチャートである。図7A〜7Eは、記憶装置において任意のファイルに対してFAT32が実行しなければならなくなるかもしれない全ての普通の更新操作を包含する、被スマグルファイルについての5つのデータスマグリングシナリオを示す。データスマグリングシナリオは次のとおりである。
(A)(ファイルが初めて、あるいはファイルの削除後に、作成されるときに、)新しい被スマグルファイルを作成する。
(B)(被スマグルファイルが削除されなければならないときに、)被スマグルファイルを削除する。
(C)(新しい被スマグルファイルが、古い被スマグルファイルを削除して新しい被スマグルファイルを作成することによって、古い被スマグルファイルに取って代わらなければならないときに、)被スマグルファイルに上書きする。
(D)(存在する被スマグルファイルが部分的に更新されなければならないときに、)所定位置にある被スマグルファイルを更新する。
(E)(存在する被スマグルファイルが拡張されなければならないときに、)被スマグルファイルに付加する。
【0073】
データスマグリング検出方式は、FAT32から記憶装置に到来する書き込みリクエストを監視し、そのリクエストがFATのためのものか、ディレクトリエントリFAT32セクタのためのものか、あるいはデータクラスタのためのものかを識別する動作を利用する。
【0074】
ファイルを、このファイルをスマグリングすることによって、更新するように意図されているデータは、NVMに格納されている所定ストリングの検出によって識別される。その所定ストリング(以降、「被スマグルファイル識別子」と称される)は、データをスマグリングしなければならないアプリケーションに知られている。被スマグルファイル識別子は、被スマグルファイルのフルパスおよびファイル名である。被スマグルファイル識別子は、アプリケーションにより、FAT32を介して、被スマグルファイルのディレクトリエントリデータの一部として送られる。
【0075】
前に挙げられた全てのデータスマグリングシナリオにおいて、システムがパワーアップされるとき(ステップ100)、記憶装置はFAT32エンジンを次のように初期化する(ステップ102)。
(1)記憶装置はFAT32エンジンをマウントする。
(2)記憶装置は所定の被スマグルファイル識別子をロードする。
(3)記憶装置は、被スマグルDirEntryアドレス(DirEntryセクタとFAT32セクタ内でのオフセットと)を指す、以下で「被スマグルファイルDirEntryポインタ」と称されるポインタをヌルにセットする。
(4)記憶装置は、値「真」または「偽」を有するバイナリパラメータである以下で「FileExistsFlag(ファイル存在フラグ)と称されるフラグを次のようにセットする。
(i)記憶装置は、被スマグルファイル識別子のファイル名を有するファイルが存在するか否か調べる(NVMにおいてファイルのDirEntryを探す)。
(ii)被スマグルファイルが存在するならば、記憶装置はFileExistsFlagを真にセットし、被スマグルファイルDirEntryポインタを更新する。
(iii)被スマグルファイル識別子のファイル名を有するファイルが存在しなければ、記憶装置はFileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを、被スマグルファイルが格納されると考えられるディレクトリ内のDirEntryの最後のFAT32セクタに更新する。
(5)FileExistsFlagが真であるならば、記憶装置は被スマグルファイルDirEntryを読み出し、DirEntryから第1の被スマグルファイルデータクラスタ番号を抽出する。
(6)記憶装置はFATからFATチェーン全体を読み出し、その後、リンクリストに従うことによって被スマグルファイルデータクラスタ番号を再構築する。
【0076】
この段階(ステップ102)の後に、記憶装置はFAT32からの書き込みリクエストを待つ(ステップ104)。記憶装置は、FAT32から書き込みリクエストを受け取ったとき、FileExistsFlagが真であるか偽であるかを調べる(ステップ106)。この段階から、それぞれのデータスマグリングシナリオは、図7A〜7Eにおいて後述する異なるフローをたどる。
【0077】
図7Aは、本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ(A)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7AのフローA(点線で表されている)は、新しい被スマグルファイルを作成するための手続き経路を描いている。被スマグルファイルが存在しなくてFAT32が新しい被スマグルファイルを書き込もうと試みるとき、フローAは次のステップを実行する。
【0078】
システムのパワーアップ(ステップ100)の後、記憶装置はその内部初期化を実行し、FileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを、新しい被スマグルファイルが格納されると考えられるディレクトリのDirEntryの最後のクラスタを指すようにセットする(ステップ102)。記憶装置は、その後、書き込みリクエストを待ち(ステップ104)、FileExistsFlagを調べる(ステップ106)。シナリオ(A)において、この段階ではファイルは存在しないので、FileExistsFlagは偽であり、記憶装置は以下の条件が妥当であるか否かを調べる(ステップ108)。
(1)新しいDirEntryは、被スマグルファイルDirEntryポインタにおいて指定されているのと同じアドレスに書き込まれるか?(シナリオ(A)のこの段階では、被スマグルファイルDirEntryポインタは、被スマグルファイルが格納されると考えられるディレクトリのDirEntryの最後のクラスタを指す。)
(2)DirEntryにおいて指定されるファイル名は被スマグルファイルの名前(被スマグルファイル識別子において指定される)と同じか?
【0079】
両方の条件が満たされるならば(新しい被スマグルファイルDirEntryが書き込まれつつあることを記憶装置が発見するということを意味する)、記憶装置はFileExistsFlagを真にセットし、FAT32が被スマグルファイルクラスタ、FATエントリ、およびデータクラスタを書き込むのを待つ(ステップ110)。あるいは、ファイルが偶然に空であったならば(すなわち、長さ=0)、記憶装置は、図7Bに関して以下に説明されるように、新しいDirEntryを更新することによってファイルを閉じる。この2条件のいずれもが満たされなければ(新しい被スマグルファイルが作成されていないということを意味する)、記憶装置は新しい書き込みリクエストを待つ(ステップ104)。
【0080】
図7Bは、本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ(B)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7BのフローBは、被スマグルファイルを削除するための手続き経路を描いている。新しい書き込みリクエストがFAT32から来たとき(ステップ104)、記憶装置はFileExistsFlagを調べる(ステップ106)。FileExistsFlagが真ならば、記憶装置は新しいDirEntryが更新されつつあるか否かを調べる(すなわち、現在書き込まれているFAT32セクタが被スマグルファイルDirEntryポインタと同じか否かを確かめる)(ステップ112)。
【0081】
被スマグルファイルDirEntryがFAT32により更新されつつあるのであれば(ステップ112)、記憶装置は(この場合には更新されるDirEntry内のLUTフィールドおよびファイル長パラメータを調べることにより)DirEntryに対する書き込みリクエストが「閉じる」操作であるか否かを調べる(ステップ114)。書き込みリクエストが閉じる操作であれば、記憶装置はFAT32からの次の「更新操作」(すなわち、書き込みリクエスト)を待つ(ステップ104)。
【0082】
DirEntryに対する書き込みリクエストが「閉じる」操作でなければ(ステップ114)(被スマグルファイルDirEntryに対する書き込みリクエストが被スマグルファイルDirEntryに「削除フラグ」を書き込むことによる「削除」操作であることを記憶装置が検出するということを意味する)、記憶装置は、FileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを更新し、(被スマグルファイルに属するデータクラスタが存在しなくなるように)リンクリスト中の被スマグルファイルクラスタ番号を除去し(ステップ116)、FAT32からの次の書き込み操作を待つ(ステップ104)。
【0083】
図7Cは、本発明の好ましい実施形態に従う、被スマグルファイルに上書きするというシナリオ(C)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。被スマグルファイルに上書きするためのフローは、新しい被スマグルファイルを作成するための図7AのフローAが後に続く、被スマグルファイルを削除するための図7BのフローBの組み合わせである。被スマグルファイルに上書きするための手続き経路は、図7Cにおいて、図7AのフローA(すなわち、ステップ104,106,108,110,および104のシーケンス)に関連するフローC2が後に続く、図7BのフローB(すなわち、ステップ100,102,104,106,112,114,116,および104のシーケンス)に関連するフローC1として描かれている。
【0084】
図7Dは、本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ(D)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7DのフローDは、所定位置にある被スマグルファイルを更新するための手続き経路を描いている。被スマグルファイルDirEntryが更新されつつあるのでなければ(ステップ112)、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの1つに関連しているか否かを調べることによって現在の書き込みリクエストが被スマグルファイルデータクラスタのうちの1つを更新しつつあるかどうかを調べる(ステップ118)。被スマグルファイルデータクラスタのうちの1つが更新されつつあるということを記憶装置が発見したならば、記憶装置は、(図3および4に示されているマップインスマグリングモードまたはマップアウトスマグリングモードを用いて)データクラスタをスマグリングし、FileExistsFlagをセットし(ステップ120)、その後に次の書き込みリクエストを待つ(ステップ104)。シナリオ(B)(図7Bのステップ106)では、FileExistsFlagは、シナリオ(D)(図7Dのステップ120)でセットされるので真として検出され得るということに留意する。
【0085】
図7Eは、本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ(E)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7EのフローEは、被スマグルファイルに付加するための手続き経路を描いている。書き込みリクエストが被スマグルファイルデータクラスタのうちの1つを更新しつつあるのでなければ(ステップ118)、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの1つに関連するか否かを調べることによって、更新されつつあるFATエントリのうちの少なくとも1つがFAT内の被スマグルファイルデータクラスタに関連しているか否かを調べる(ステップ122)。FAT内の被スマグルファイルデータクラスタFATエントリのうちの1つ以上が更新されつつあるのであれば、記憶装置は、リンクリスト中の被スマグルファイルクラスタ番号を新しいクラスタ番号または削除されるクラスタ番号で更新し(ステップ124)、その後、FAT32からの次の書き込みリクエストを待つ(ステップ104)。
【0086】
結局は、FAT32が被スマグルファイルデータクラスタおよび/またはFAT内のデータクラスタFATエントリを更新した後、FAT32は、前述したように被スマグルファイルDirEntry中のLUTフィールド、および場合によってはファイル長フィールドを更新することによってファイルを閉じなければならない。
【0087】
被スマグルファイルが既に存在する(すなわち、FileExistsFlagが真にセットされている)というシナリオでは、記憶装置はFAT32からの書き込みリクエストを待ち(ステップ104)、次のシナリオのうちの1つが生じるのを待つ。
◆シナリオ(B):FAT32は被スマグルファイルを削除しようと試みる。このシナリオでは、ステップ100および102のシーケンスを実行した後、記憶装置は、(前に記載した)ステップ104,106,112,114,および116のシーケンスを実行する。
◆シナリオ(D):FAT32は所定位置にある被スマグルファイルを更新しようと試みる。このシナリオでは、ステップ100および102のシーケンスを実行した後、記憶装置は、(前に記載した)ステップ104,106,112,118,および120のシーケンスを数回実行する。記憶装置がこれらのステップを何回繰り返して実行するかは、FAT32から来る更新の数による。
◆シナリオ(E):FAT32は追加のデータを被スマグルファイルに付加しようと試みる。このシナリオでは、ステップ100および102のシーケンスを実行した後、記憶装置は、新しいデータクラスタFATエントリの割り当てのために(前に記載した)ステップ104,106,112,118,122,および124のシーケンスを数回実行する。記憶装置が何回繰り返して実行するかは、更新されつつあるデータクラスタFATエントリの数による。記憶装置は、新たに割り当てられるデータクラスタ更新のためにステップ104,106,112,118,および120のシーケンス(シナリオ(D))をも数回実行する。記憶装置が何回繰り返して実行するかは、データクラスタ更新の数による。
【0088】
本発明は、限られた数の実施形態に関して記載してきたが、本発明の多くの変形、改変、および他の応用がなされ得るということが認識されるべきである。
【技術分野】
【0001】
本発明は、許可済みアプリケーションがファイルシステムアプリケーションインターフェイス(FSAPI:file-system application-interface )だけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。
【背景技術】
【0002】
ホストシステムの動作を可能にする不揮発性メモリ(NVM)記憶装置は、コンピュータ工学の技術分野で良く知られている。単純なセキュリティ上の考慮から、ホストシステムの開発者は必然的に「ブートパーティション」が普通のファイルシステムによってアクセスされるのを防止しようとする。
【0003】
ブートパーティションおよびシステムデータ(例えば、セキュリティキー)などの制限サブエリアへのアクセスは制限され、これらのサブエリアはFSAPIだけを使用するアプリケーションによってはアクセスされ得ない。アプリケーションおよびユーザにサービスするように意図されている他の記憶サブエリアは、FSAPIを用いるファイルシステムによってアクセスされる。この制限は、通例、制限サブエリアのアドレスを除いて、ファイルシステムがアクセスできるアドレスの範囲を制限することによって実施される。
【0004】
しかし、ホストシステムの寿命の間に、制限サブエリア内のデータに(例えば、ブートイメージを更新するために、またシステムキーを読み出すために)アクセスすることが時折必要になる。ブートパーティションを更新する必要は、いろいろな理由から(例えば、ソフトウェアバグを直すか、あるいは新しく利用可能になった機能をインストールするかなど)生じ得る。
【0005】
制限エリアはFSAPIを使用するオペレーティングシステム(OS)によっては改変され得ないので、そのような更新は複雑であって、制限を迂回して特権付きエリアにアクセスすることのできる特定デバイス向け、特定ホスト向け、特定OS向けのアプリケーションを必要とする。
【0006】
そのような解決策(例えば、Microsoft(マイクロソフト)(登録商標)社から入手できるUpdateXIP)は、RAMをフラギングすること、パワーダウンせずにホストシステムをリブートすること、フラグをブートコードによってチェックすること、ブートパーティションからブートパーティションにアクセスできる特別のコードをロードすることを含む。この手続きは、関係するコンポーネント(例えば、記憶装置、ホストシステム、およびOS)の間に不均一性が存在するであろうということを意味する。このような事情は、記憶装置における制限エリア(例えば、ブートパーティション)の更新を非常に高価な機能とする。
【0007】
あたかもその全体が本願明細書において完全に開示されたかのように参照により援用されているMoran の米国特許出願第2006−0031632号(以降、特許文献1と称される)などの従来技術システムは、ホストシステムのファイルシステムによってデータが直接書き込まれないようにデータを格納するためのシステムを開示している。しかし、特許文献1は、記憶装置がホストシステムによって書き込まれたデータを(パワーアップ時にそれを自動的にリストアすることによって)失わないようにそれによって保護するところの内部バックアップメカニズムを開示しているだけであって、データが書き込まれているアドレスとは異なる論理アドレスからデータがどのように読み出され得るかを開示していない。従って、特許文献1によるシステムは、制限エリア内のデータへのアクセスを可能にするためには役立たない。
【0008】
許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを有することが望ましい。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許出願第2006−0031632号
【発明の概要】
【0010】
本発明の目的は、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを提供することである。
【0011】
明瞭性を目的として、以下の幾つかの用語が本願明細書での使用のために特別に定義される。「ファイルシステムアプリケーションインターフェイス」、「FSAPI」、および「ファイルシステムAPI」という用語は、本願明細書において、ファイルシステムが記憶装置において実行し得る標準的操作、すなわちファイル/ディレクトリを開く/作成する(open/create file/directory)、ファイル/ディレクトリを読み出す/書き込む(read/write file/directory) 、ファイル/ディレクトリを削除する(delete file/directory) 、ファイル/ディレクトリを改名する(rename file/directory) 、およびファイル/ディレクトリを閉じる(close file/directory)のセットを指すために使用される。「記憶エリア」という用語は、本願明細書において、記憶装置の1つの連続する論理(物理的でない)アドレス範囲を指すために使用される。
【0012】
「FAT32」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているファイルシステムを指すために使用される。「クラスタ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「FATエントリ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「ファイルアロケーションテーブル」および「FAT」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「DirEntry」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。
【0013】
「最終更新時間フィールド」および「LUTフィールド」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているように、ファイルが更新された最終時間を明示する、DirEntry内の1つのパラメータを指すために使用される。「ファイル長パラメータ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているように、ファイルの長さをバイト数で明示する、DirEntry内の1つのパラメータを指すために使用される。
【0014】
「セクタ」という用語は、本願明細書において、データパケットの論理シーケンシャルアドレスを指すために使用される。データパケットは、論理シーケンシャル512バイト、論理シーケンシャルFAT32セクタ、または論理シーケンシャルFAT32クラスタであり得る。「ファイル」という用語は、本願明細書において、FSAPIにより処理され得る任意のデータオブジェクト(例えば、データファイル、データファイルの一部分、ディレクトリ、およびプレイリストなど)を指すために使用される。「FAT32セクタ」という用語は、本願明細書において、512バイトのセクタを指すために使用される。
【0015】
「論理パーティション」という用語は、本願明細書において、セクタの1つの論理的連続的範囲を指すために使用される。論理パーティションは、一度に1つのホストソフトウェアモジュールによってのみ管理され得る。ホストソフトウェアモジュールの例は、ファイルシステムおよびチップセットブートROMを含む。「制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされるべきではないが他のモジュールによってアクセスされるべき論理パーティションを指すために使用される。「非制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされ得る論理パーティションを指すために使用される。「制限セクタ」という用語は、本願明細書において、制限エリアの範囲内にあるセクタを指すために使用される。「非制限セクタ」という用語は、本願明細書において、非制限エリアの範囲内にあるセクタを指すために使用される。
【0016】
「スマグリング(smuggling) 」という用語は、本願明細書において、それによってホストファイルシステムがデータを1つの論理アドレスに書き込み、また記憶装置が異なる論理アドレスにおいてデータへのアクセスを内部的に可能にするところの内部記憶操作を指すために使用される。特別の場合には、スマグリングは、ホストファイルシステムが制限エリアにおいてデータを読み出しおよび書き込むことを可能にするために使用され得る。「被スマグルデータ(smuggled data) 」という用語は、本願明細書において、それに対してスマグリング操作が行われたところのデータを指すために使用される。「無駄セクタ」という用語は、本願明細書において、スマグリング操作に起因して記憶装置がデータ格納のために使用しない論理セクタを指すために使用される。「スペースを解放する」という用語は、本願明細書において、無駄セクタの、データを記憶するセクタへの変換を指すために使用される。
【0017】
本発明は、FSAPIだけを使用する記憶装置において制限エリアにアクセスする方法を教示する。記述の目的のために、記憶装置にアクセスするときに最も問題となる操作が扱われ、それは更新操作である。それでも、本発明は、後述するように、開く操作、作成する操作、読み出す操作、および削除する操作にも当てはまる。
【0018】
本発明の好ましい実施形態は、3つのステップを有する間接プロセスを用いて実行される。第1のステップは、制限エリア内にスマグリングされるべきファイルを非制限エリアに格納することである。ファイルは、FSAPIにおいて適法であるけれども記憶装置によって「スマグリング表示」として認識され得る属性と共に格納される。記憶装置により実行される第2のステップは、新しく格納されたファイル中の「スマグリング表示」を探すことである。第3のステップは、スマグリング表示が検出された場合に限って行われるステップであって、記憶装置によって内部で行われる、ファイルの、指定された制限エリアへのスマグリングである。
【0019】
検出
本発明の1つの好ましい実施形態では、スマグリング表示はファイルの名前である。本発明の他の1つの好ましい実施形態では、スマグリング表示はファイルのボディの特別のコンテンツ(例えば、ヘッダ、フッタ、あるいはファイル中の他の任意の定義済みオフセット)である。
【0020】
スマグリング
本発明の1つの好ましい実施形態では、非制限エリアから制限エリアへのファイルのスマグリングは、データを非制限エリアから制限エリアへ物理的にコピーすることによって実行される。これは「コピー」モードと称される。
【0021】
本発明の他の1つの好ましい実施形態では、スマグリングは、制限エリアからデータを読み出さなければならないデバイスが非制限エリアへリダイレクトされるように、非制限エリアを制限エリア中に論理的にマッピングすることにより実行される。これは「マップアウト」モードと称される。
【0022】
本発明の他の1つの好ましい実施形態では、スマグリングは、ファイルにおける被スマグルデータの論理オフセットを制限エリアにおける対応するオフセットに変換し、これにより読み出しのために非制限エリアを制限エリアにマッピングすることによって、実行される。非制限エリアに書き込まれている被スマグルファイル(smuggled file) からファイルシステムがデータを読み出そうと試みるとき、記憶装置はその操作を「被スマグルデータを読み出すこと」として検出する。データは、制限エリアにおけるオフセットを被スマグルファイルにおけるオフセットに整合させることによって制限エリア内の対応する位置から取り出される。これは「マップイン」モードと称される。
【0023】
本発明の他の好ましい実施形態では、コピーモード、マップアウトモード、あるいはマップインモードにおいて、スマグリングは、非制限エリアへの書き込みが完了し、ファイルが閉じられた後に、実行される。本発明の他の好ましい実施形態では、マップアウトモードまたはマップインモードにおいて、スマグリングは、ファイルが書き込まれている間に実行される。
【0024】
スペースを解放する
本発明の1つの好ましい実施形態では、記憶装置の容量を超える仮想サブエリアを付け加え、その仮想サブエリアをアドレスの失われた範囲にマッピングすることによって、記憶装置は、制限エリアアドレスにマッピングされて失われた非制限エリアの論理アドレスを再使用する。
【0025】
本発明の他の1つの好ましい実施形態では、アプリケーションは、スマグリング操作が行われるように適当な期間待った後に、ちょうど書き込まれたばかりのファイルを削除する。この手続きは、非制限エリアを使用するために解放する。これは「コピー−削除」モードと称される。
【0026】
一般
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、後述するように、ファイルの一部に対して実行され得る。
【0027】
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、各制限エリアが記憶装置へのスマグリングの宛先を指示するためのそれ自身の特定のポインタを有する複数のファイルに対して実行され得る。
【0028】
従って、本発明に従って初めて計算システムが提供される。この計算システムは、(a)ホストシステムであって、(i)ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、(ii)ホストシステム上で動作する少なくとも1つのアプリケーションと、を有するホストシステムと、(b)記憶装置であって、(i)記憶装置を制御するコントローラと、(ii)情報を記憶装置に格納するための記憶エリアと、を有する記憶装置と、(c)ファイルシステムによる記憶エリアの制限エリアへのアクセスを制限するための第1のメカニズムと、(d)少なくとも1つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするための、記憶装置に存在する第2のメカニズムと、を備える。
【0029】
好ましくは、第2のメカニズムは、記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするように構成される。
【0030】
好ましくは、第2のメカニズムは、制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するように動作可能である。
【0031】
好ましくは、第2のメカニズムは、ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するように動作可能である。
【0032】
本発明に従って、コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体が初めて提供される。このコンピュータ可読コードは、(a)記憶装置の記憶エリアの制限エリアへの、ホストシステム上で動作するファイルシステムによるアクセスを制限するためのプログラムコードと、(b)少なくとも1つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするためのプログラムコードと、を含む。
【0033】
好ましくは、コンピュータ可読コードは、(c)記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするためのプログラムコードをさらに含む。
【0034】
好ましくは、コンピュータ可読コードは、(c)制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するためのプログラムコードをさらに含む。
【0035】
好ましくは、コンピュータ可読コードは、(c)ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するためのプログラムコードをさらに含む。
【0036】
これらの実施形態およびさらなる実施形態は、以下の詳細な説明および実施例から明らかとなる。 本発明は、添付図面を参照して、単に例示により、ここで記述される。
【図面の簡単な説明】
【0037】
【図1】本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。
【図2】図2Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図2Bは、被スマグルデータについてFAT32から書き込みリクエストを受け取った後の図2Aのパーティションを示す。図2Cは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図2Bのパーティションを示す。図2Dは、非制限エリアに格納されていた被スマグルデータが削除された後の図2Cのパーティションを示す。
【図3】図3Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図3Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図3Aのパーティションを示す。図3Cは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図3Bのパーティションを示す。
【図4】図4Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図4Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図4Aのパーティションを示す。図4Cは、制限セクタが図4Bで書き込まれた非制限セクタに記憶装置によってマッピングされた後の図4Bのパーティションを示す。
【図5】図5Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図5Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Aのパーティションを示す。図5Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Bのパーティションを示す。図5Dは、図5Cの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すFAT32からのリクエストを受け取った後の図5Cのパーティションを示す。
【図6】図6Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図6Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Aのパーティションを示す。図6Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Bのパーティションを示す。図6Dは、仮想セクタを読み出すFAT32からの読み出しリクエストを受け取った後の図6Cのパーティションを示す。
【図7A】本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ(A)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7B】本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ(B)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7C】本発明の好ましい実施形態に従う、被スマグルファイルに上書きするというシナリオ(C)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7D】本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ(D)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図7E】本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ(E)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【発明を実施するための形態】
【0038】
本発明は、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。本発明に従う、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするための原理および操作は、付随する記述および図面を参照してより良く理解され得る。
【0039】
図面は、データを記憶装置にスマグリングする3つの段階、すなわち
(1)プレスマグリング:スマグリング操作の始まりを検出すること
(2)スマグリング:スマグリング操作自体のこと
(3)ポストスマグリング:スマグリング操作後にスペースを解放することによって記憶装置上の空きスペースを最大にすることを記述している。
【0040】
記述を簡単にするために、以下の仮定が行われる。
(1)記憶装置は2つの論理パーティション、すなわちOSイメージ、このOSイメージを格納するための制限エリアと、ユーザアプリケーションおよびデータファイルを格納するための非制限エリアとに分割されている。
(2)ホストシステムプロセッサは、このホストシステムプロセッサのNVMに格納されているソフトウェアコードを実行することによって記憶装置の制限エリアにアクセスする。このソフトウェアコードは、ブートROMであって、パワーアップ時にホストシステムプロセッサによって自動的に実行される。ホストシステムプロセッサは、OSイメージを制限エリアからホストシステムRAMにロードし、このRAM内のスタートアドレスに移動し、その後にコードを実行する。ブートROMは、サイズが限られているので、FAT32メタデータおよびデータ構造に関するいかなる情報も包含できない。
(3)ホストシステムは、FAT32を介して記憶装置の非制限エリアにアクセスする。FAT32は、ブートプロセスが完了するときに実行される。
(4)制限エリアはセクタ0からスタートする。従って、OSイメージは、セクタ0からスタートして格納される。
(5)非制限エリアは、OSイメージセクタより大きな任意のセクタであり得るセクタ「FAT32StartSector(FAT32スタートセクタ)」からスタートする。
(6)記憶装置は、本願明細書において「FAT32エンジン」と称されるソフトウェアまたはハードウェアロジックを有し、これは、FATおよびDirEntryの位置および構造などの、FAT32により使用されるメタデータおよびデータ構造を認識する。
(7)(制限エリアに格納されている)OSイメージは、データを非制限エリアに書き込む、FAT32を介しての、ユーザアプリケーションリクエストによって更新される。
(8)記憶装置は、不揮発性隠れエリア(すなわち、ホストシステムプロセッサ、ブートROM、およびFAT32から隠されている)に、スマグリングされるべきファイルの名前(例えば、OSIMAGE.BIN)と、制限エリアのスタートセクタへのポインタ(例えば、4バイト)とを含むストリングを格納する。
【0041】
ここで図面を参照すると、図1は、本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。ホストシステム4を有する計算システム2が示されている。ホストシステム4は、ファイルシステム5、OS6、ドライバ7、ホストシステムプロセッサ8、およびアプリケーション9を含む。ドライバ7は、標準的ブロックデバイスドライバを含む。ホストシステム4は、コントローラ12および記憶エリア14を有する記憶装置10に操作可能に接続されて示されている。記憶エリア14は、制限エリア16および非制限エリア18を有する。
【0042】
図2A〜2Dは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図2A〜2Dは、非制限エリアを介して制限エリアの中にデータをスマグリングし、その後に、非制限エリアをスマグリングプロセス中に生成された中間データから解放することによってOSイメージを更新するための4つの段階を示す。
【0043】
図2Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。記憶装置は2つのパーティション、すなわち、OSイメージを格納するための制限エリア20と、ユーザデータを格納するための非制限エリア22とを有する。
【0044】
図2Bは、被スマグルデータについてFAT32から書き込みリクエストを受け取った後の図2Aのパーティションを示す。図2Bは、被スマグルファイル24(例えば、OSイメージ)を示す。記憶装置は、被スマグルファイル24を非制限エリア22に格納する。検出プロセスは、図7A〜7Eに関連して記述される。
【0045】
図2Cは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図2Bのパーティションを示す。被スマグルファイル24は、制限エリア20にコピーされて示されている。被スマグルファイル24は、そのとき、制限ファイル26(すなわち、FAT32によってアクセスされ得ないデータファイル)になる。
【0046】
図2Dは、非制限エリアに格納されていた被スマグルデータが削除された後の図2Cのパーティションを示す。被スマグルファイル24の削除は、ファイルを書き込んだアプリケーションにより(記憶装置がスマグリングを完了することを可能にする安全遅延後に)、または記憶装置自体により(次のパワーアップ時に)開始され得る。
【0047】
被スマグルファイル24がOSイメージである例において、このOSイメージは、(制限ファイル26として)制限エリアに格納され、ホストシステムプロセッサのブートROMによってアクセスされ得るけれども、FAT32によっては読み出され得ない。データをスマグリングしてスペースを解放するコピー−削除モードは、OSイメージの部分的更新には適用され得なくて、OSイメージが完全に更新される場合に限って適用され得る。
【0048】
図3A〜3Cは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングするマップインモードの簡略ブロック図である。図3A〜3Cは、データを非制限エリアに書き込み、その後に非制限エリアを制限エリアの中にマッピングすることによりデータをスマグリングすることによってOSイメージを更新するための3つの段階を示す。
【0049】
図3Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図2Aに関して説明したように、記憶装置は2つのパーティション、すなわち、OSイメージを格納するための制限エリア20と、ユーザデータを格納するための非制限エリア22とを有する。
【0050】
図3Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図3Aのパーティションを示す。データセクタ30は、非制限セクタ32に書き込まれるように示されている。FAT32が被スマグルファイルの基準に適合するデータセクタ30を書き込むためのリクエストを送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置は非制限セクタ32のセクタ番号を制限セクタ34の制限エリアセクタ番号に「変換すること」によって非制限セクタ32を制限セクタ34にマッピング(マッピングA)する。「変換」は次のように行われる。すなわち、記憶装置は、ファイルにおける非制限セクタ32のオフセットを計算し(図7A〜7Eに関して詳しく説明される)、セクタオフセットは制限エリア20におけるセクタオフセットに変換される。
【0051】
図3Cは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図3Bのパーティションを示す。FAT32からの(非制限セクタ32への)、あるいはホストシステムのブートROMコードからの(制限セクタ34への)書き込みリクエストは、記憶装置によって内部的に制限セクタ34へ経路指定される。経路指定メカニズムは記憶装置によって管理され、それは非制限セクタから制限セクタへのルックアップテーブルを管理する。テーブルのどのエントリも、スマグリングされた非制限セクタ番号と、図3Bにおいてマッピングされた対応する制限セクタ番号とを含む。記憶装置は、FAT32から来る書き込みリクエストを監視し、非制限セクタがリクエストされているか否かをルックアップテーブルにおいて調べる。非制限セクタがリクエストされているならば、記憶装置は、セクタ36に位置すると期待されているデータセクタに対する書き込みリクエストを、実際にはセクタ38に書き込まれるように経路指定する(マッピングB)。このプロセスは、非制限エリアの範囲内のセクタを制限エリアの範囲内のセクタにマッピングするので、マップインモードと称される。
【0052】
マップインモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とし、従ってルックアップテーブルを構築するために記憶装置のFAT32エンジンにより必要とされる「準備」に関して寛容ではない場合に適用可能である。FAT32エンジンにより必要とされる準備を図7A〜7Eに関して説明する。マップインモードは、FAT32リクエスト(ホストシステムプロセッサにより実行される)をFAT32への指示なしでルックアップテーブルに従って制限セクタへ内部的に経路指定する。従って、ルックアップテーブルに現れる非制限セクタは、データを格納するために記憶装置によって使用されない。このような無駄セクタがFAT32により再使用される方法を図5A〜5Dに関して説明する。
【0053】
図4A〜4Cは、本発明の好ましい実施形態に従う、プロセスの種々の段階においてデータをスマグリングするマップアウトモードの簡略ブロック図である。図4A〜4Cは、データを非制限セクタの中に直接スマグリングし、その後に制限セクタを非制限セクタの中にマッピングアウトすることによってOSイメージを更新するための3つの段階を示す。
【0054】
図4Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。(図2Aおよび2Aに関して説明したように、)制限エリア20と非制限エリア22とが示されている。
【0055】
図4Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図4Aのパーティションを示す。記憶装置は、FAT32によりリクエストされたように非制限セクタ40にデータを格納する。
【0056】
図4Cは、図4Bで書き込まれた非制限セクタに記憶装置によって制限セクタがマッピングされた後の図4Bのパーティションを示す。記憶装置によって、図3Cに関して説明したルックアップテーブルに従って、データセクタ42が非制限セクタ40の中に内部的にマッピングされる(マッピングC)。従って、(制限エリアに格納されているOSイメージに対してホストシステムプロセッサブートROMから来る)アクセスリクエストがあったとき、記憶装置はアクセスリクエストを前述したルックアップテーブルに従って非制限セクタへ内部的に経路指定する。
【0057】
マップアウトモードは、制限エリアの範囲内のセクタを非制限エリアの範囲内のセクタの中にマッピングする。このようなマッピングは、ルックアップテーブルにおいて現れる制限セクタが記憶装置によってOSイメージデータを格納するために使用されないという状況を作り出す。そのような無駄セクタがFAT32により再使用される方法は、図6A〜6Dに関して記載される。マップアウトモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とせず、従ってルックアップテーブルを構築するために記憶装置のFAT32エンジンにより必要とされる準備に関して寛容でない場合に適用可能である。
【0058】
図5A〜5Dは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップインモードにおいてスペースを解放することの簡略ブロック図である。図5A〜5Dは、マップインプロセス中に作成された無駄セクタを利用するための4つの段階を示す。
【0059】
図5Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。OSイメージを格納するための制限エリア50、ユーザデータを格納するための非制限エリア52、および仮想エリア54が示されている。図2A、2A、および3Aとは対照的に、記憶装置は制限エリア50のサイズを有する仮想エリア54をホストシステムに提供する。仮想エリア54はセクタの論理シーケンシャル範囲である。記憶装置は、ホストシステムのFAT32に、非制限エリア52のためのセクタと仮想エリア54のためのセクタとを有するエリアを提供する。その結果として、FAT32がホストシステムプロセッサ上で実行されるとき、FAT32は非制限エリア52と仮想エリア54とを1つの非制限エリアとして管理する。
【0060】
図5Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Aのパーティションを示す。データセクタ56は非制限セクタ58に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ56を書き込むためのリクエストをFAT32が送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置はルックアップテーブルを調べて、その被スマグルデータを書き込むための制限セクタ60についてのセクタ番号を得る。記憶装置は、データセクタ56を制限セクタ60に格納されるように経路指定(マッピングD)する。
【0061】
図5Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Bのパーティションを示す。制限エリア50に格納されている被スマグルデータ62が示され、ホストシステムプロセッサで実行されるFAT32からの仮想エリア54の範囲内の仮想セクタ66にデータセクタ64を書き込むリクエストを受け取る。記憶装置は、図3Cに関して言及されたルックアップテーブルのほかに、「仮想−論理(virtual-to-logical)」(VTL)ルックアップテーブルを管理する。VTLテーブルのどのエントリも、仮想セクタ番号と、対応する非制限セクタ番号とを含む。FAT32がデータセクタ64を仮想データセクタ66(仮想エリア54の範囲内のセクタ)に書き込もうと試みるとき、記憶装置は、仮想セクタ66が非制限セクタに既にマッピングされているか否かを判定するためにVTLルックアップテーブルを内部的に調べる。
【0062】
(図5Bのデータセクタ56に関して説明したように)仮想セクタ66がマッピングされていたならば、記憶装置はFAT32リクエストを適合する非制限セクタ68へ内部的に経路指定する(マッピングE)。仮想セクタ66がまだマッピングされていなければ、記憶装置は、仮想セクタが非制限セクタにマッピングされているかどうかを確かめるためにVTLルックアップテーブル中の非制限セクタ番号を調べる。仮想セクタがマッピングされていない非制限セクタ(すなわち、無駄セクタ)を記憶装置が発見したならば、記憶装置は、仮想セクタ66を非制限セクタ68(利用可能な「無駄セクタ」)にマッピング(マッピングE)し、VTLルックアップテーブル中の対応するエントリをその非制限セクタ番号で更新する。記憶装置は、その後、(FAT32により仮想セクタ66に送られた)データセクタ64をセクタ68に内部的に格納する。
【0063】
記憶装置は、ルックアップテーブルを、(図3Cに関して説明したように)制限セクタ62のマッピング済みセクタ番号で更新する。FAT32が(図5Cに示されているように)非制限セクタ68にアクセスしよう(すなわち、読み出すかまたは書き込もう)と試みるとき、記憶装置はそのリクエストを(制限エリア50内の)制限セクタ62に内部的に経路指定(マッピングF)する。
【0064】
無駄エリアが制限エリア50より小さいために(それは、制限エリア50の全体よりは小さいエリアをスマグリングすることの結果である)利用可能な非制限セクタ(制限セクタにマッピングされていない)を記憶装置が発見できなければ、記憶装置は、FAT32により仮想アドレスに送られるデータセクタを格納するために制限エリア50内の利用可能な記憶エリアを使用する。このとき、これらのデータセクタは仮想エリア54から制限エリア50の中に直接マッピングされる。より多くのデータが制限エリア50内にスマグリングされ、より多くの無駄エリアが非制限エリア52に作られると、直ちに記憶装置はこれらの「直接マッピングされた」データセクタを制限エリア50から非制限エリア52に移し、制限エリア50を新たにスマグリングされるデータのために利用可能にする。
【0065】
図5Dは、図5Cの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すFAT32からのリクエストを受け取った後の図5Cのパーティションを示す。図5Dにおいて、FAT32は、非制限論理セクタ70(これは、既に制限セクタ62の中にマッピングされている)の中に既にマッピングされている仮想セクタ66を、記憶装置から、読み出すかまたは書き込もうと試みる。記憶装置は、マッピングされている非制限論理セクタ70に関してVTLルックアップテーブルを調べて、FAT32リクエストを非制限論理セクタ70へ経路指定(マッピングG)する。従って、
(1)非制限エリア52に向けられたデータは非制限エリア52に格納され、
(2)(データスマグリング方式により意図されているように、)非制限エリア52に向けられた被スマグルデータは制限エリア50に格納され、
(3)仮想エリア54に向けられたデータは非制限エリア52に格納される。
【0066】
図6A〜6Dは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップアウトモードにおいてスペースを解放することの簡略ブロック図である。図6A〜6Dは、マップアウトプロセス中に作られる無駄セクタを利用するための4つの段階を示す。
【0067】
図6Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。(図5Aに関して説明したように、)制限エリア50、非制限エリア52、および仮想エリア54が示されている。
【0068】
図6Bは、非制限セクタにデータセクタを書き込むFAT32からの書き込みリクエストを受け取った後の図6Aのパーティションを示す。データセクタ72は、非制限セクタ74に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ72を書き込むためのリクエストをFAT32が送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置は、(図3Cに関して説明した)ルックアップテーブルを調べて、制限セクタ76についてのセクタ番号を得る。
【0069】
記憶装置は、データセクタ72を非制限セクタ74に内部的に格納する。記憶装置は、ルックアップテーブルを、マッピングされた非制限セクタ74のセクタ番号で更新する。次のブート操作時にホストシステムプロセッサがOSイメージを制限エリア50内の制限セクタ76から読み出そうと試みるとき、記憶装置は、リクエストを制限セクタ76の代わりに非制限エリア52内のデータセクタ74へ内部的に経路指定する(マッピングH)。
【0070】
図6Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Bのパーティションを示す。データセクタ78は、ホストプロセッサ上で実行されるFAT32により仮想セクタ80に書き込まれるように示されている。記憶装置は、1つの固定されたオフセットを適用することによって仮想エリア54のアドレスを制限エリア50のアドレスに変換する。FAT32がデータを仮想セクタ80(仮想エリア54の範囲の中のセクタ)に書き込もうと試みるとき、記憶装置は、アドレスを仮想エリア54から制限エリア50内に内部的にオフセットさせ(マッピングI)、データセクタ78を制限エリア50に格納する。制限エリア50に向けられたデータは実際には非制限エリア52に格納されるということ、および、記憶装置はデータを非制限エリア52内のマッピングされた非制限セクタ82から取り出す(マッピングJ)ということに留意するべきである。従って、
(1)非制限エリア52に向けられたデータは非制限エリア52に格納され、
(2)制限エリア50に向けられた被スマグルデータも非制限エリア52に格納され、
(3)仮想エリア54に向けられたデータは制限エリア50に格納される。
【0071】
図6Dは、仮想セクタを読み出すFAT32からの読み出しリクエストを受け取った後の図6Cのパーティションを示す。仮想セクタ80を読み出すFAT32からの読み出しリクエストを記憶装置が受け取ったとき、記憶装置は、固定されたオフセットを適用し(マッピングK)、制限エリア50からデータセクタ84を読み出す。
【0072】
図7A〜7Eは、本発明の好ましい実施形態に従う、以下で挙げられる種々のデータスマグリングシナリオのために、記憶装置を有するホストシステムで実行される、データスマグリング検出方式の簡略フローチャートである。図7A〜7Eは、記憶装置において任意のファイルに対してFAT32が実行しなければならなくなるかもしれない全ての普通の更新操作を包含する、被スマグルファイルについての5つのデータスマグリングシナリオを示す。データスマグリングシナリオは次のとおりである。
(A)(ファイルが初めて、あるいはファイルの削除後に、作成されるときに、)新しい被スマグルファイルを作成する。
(B)(被スマグルファイルが削除されなければならないときに、)被スマグルファイルを削除する。
(C)(新しい被スマグルファイルが、古い被スマグルファイルを削除して新しい被スマグルファイルを作成することによって、古い被スマグルファイルに取って代わらなければならないときに、)被スマグルファイルに上書きする。
(D)(存在する被スマグルファイルが部分的に更新されなければならないときに、)所定位置にある被スマグルファイルを更新する。
(E)(存在する被スマグルファイルが拡張されなければならないときに、)被スマグルファイルに付加する。
【0073】
データスマグリング検出方式は、FAT32から記憶装置に到来する書き込みリクエストを監視し、そのリクエストがFATのためのものか、ディレクトリエントリFAT32セクタのためのものか、あるいはデータクラスタのためのものかを識別する動作を利用する。
【0074】
ファイルを、このファイルをスマグリングすることによって、更新するように意図されているデータは、NVMに格納されている所定ストリングの検出によって識別される。その所定ストリング(以降、「被スマグルファイル識別子」と称される)は、データをスマグリングしなければならないアプリケーションに知られている。被スマグルファイル識別子は、被スマグルファイルのフルパスおよびファイル名である。被スマグルファイル識別子は、アプリケーションにより、FAT32を介して、被スマグルファイルのディレクトリエントリデータの一部として送られる。
【0075】
前に挙げられた全てのデータスマグリングシナリオにおいて、システムがパワーアップされるとき(ステップ100)、記憶装置はFAT32エンジンを次のように初期化する(ステップ102)。
(1)記憶装置はFAT32エンジンをマウントする。
(2)記憶装置は所定の被スマグルファイル識別子をロードする。
(3)記憶装置は、被スマグルDirEntryアドレス(DirEntryセクタとFAT32セクタ内でのオフセットと)を指す、以下で「被スマグルファイルDirEntryポインタ」と称されるポインタをヌルにセットする。
(4)記憶装置は、値「真」または「偽」を有するバイナリパラメータである以下で「FileExistsFlag(ファイル存在フラグ)と称されるフラグを次のようにセットする。
(i)記憶装置は、被スマグルファイル識別子のファイル名を有するファイルが存在するか否か調べる(NVMにおいてファイルのDirEntryを探す)。
(ii)被スマグルファイルが存在するならば、記憶装置はFileExistsFlagを真にセットし、被スマグルファイルDirEntryポインタを更新する。
(iii)被スマグルファイル識別子のファイル名を有するファイルが存在しなければ、記憶装置はFileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを、被スマグルファイルが格納されると考えられるディレクトリ内のDirEntryの最後のFAT32セクタに更新する。
(5)FileExistsFlagが真であるならば、記憶装置は被スマグルファイルDirEntryを読み出し、DirEntryから第1の被スマグルファイルデータクラスタ番号を抽出する。
(6)記憶装置はFATからFATチェーン全体を読み出し、その後、リンクリストに従うことによって被スマグルファイルデータクラスタ番号を再構築する。
【0076】
この段階(ステップ102)の後に、記憶装置はFAT32からの書き込みリクエストを待つ(ステップ104)。記憶装置は、FAT32から書き込みリクエストを受け取ったとき、FileExistsFlagが真であるか偽であるかを調べる(ステップ106)。この段階から、それぞれのデータスマグリングシナリオは、図7A〜7Eにおいて後述する異なるフローをたどる。
【0077】
図7Aは、本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ(A)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7AのフローA(点線で表されている)は、新しい被スマグルファイルを作成するための手続き経路を描いている。被スマグルファイルが存在しなくてFAT32が新しい被スマグルファイルを書き込もうと試みるとき、フローAは次のステップを実行する。
【0078】
システムのパワーアップ(ステップ100)の後、記憶装置はその内部初期化を実行し、FileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを、新しい被スマグルファイルが格納されると考えられるディレクトリのDirEntryの最後のクラスタを指すようにセットする(ステップ102)。記憶装置は、その後、書き込みリクエストを待ち(ステップ104)、FileExistsFlagを調べる(ステップ106)。シナリオ(A)において、この段階ではファイルは存在しないので、FileExistsFlagは偽であり、記憶装置は以下の条件が妥当であるか否かを調べる(ステップ108)。
(1)新しいDirEntryは、被スマグルファイルDirEntryポインタにおいて指定されているのと同じアドレスに書き込まれるか?(シナリオ(A)のこの段階では、被スマグルファイルDirEntryポインタは、被スマグルファイルが格納されると考えられるディレクトリのDirEntryの最後のクラスタを指す。)
(2)DirEntryにおいて指定されるファイル名は被スマグルファイルの名前(被スマグルファイル識別子において指定される)と同じか?
【0079】
両方の条件が満たされるならば(新しい被スマグルファイルDirEntryが書き込まれつつあることを記憶装置が発見するということを意味する)、記憶装置はFileExistsFlagを真にセットし、FAT32が被スマグルファイルクラスタ、FATエントリ、およびデータクラスタを書き込むのを待つ(ステップ110)。あるいは、ファイルが偶然に空であったならば(すなわち、長さ=0)、記憶装置は、図7Bに関して以下に説明されるように、新しいDirEntryを更新することによってファイルを閉じる。この2条件のいずれもが満たされなければ(新しい被スマグルファイルが作成されていないということを意味する)、記憶装置は新しい書き込みリクエストを待つ(ステップ104)。
【0080】
図7Bは、本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ(B)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7BのフローBは、被スマグルファイルを削除するための手続き経路を描いている。新しい書き込みリクエストがFAT32から来たとき(ステップ104)、記憶装置はFileExistsFlagを調べる(ステップ106)。FileExistsFlagが真ならば、記憶装置は新しいDirEntryが更新されつつあるか否かを調べる(すなわち、現在書き込まれているFAT32セクタが被スマグルファイルDirEntryポインタと同じか否かを確かめる)(ステップ112)。
【0081】
被スマグルファイルDirEntryがFAT32により更新されつつあるのであれば(ステップ112)、記憶装置は(この場合には更新されるDirEntry内のLUTフィールドおよびファイル長パラメータを調べることにより)DirEntryに対する書き込みリクエストが「閉じる」操作であるか否かを調べる(ステップ114)。書き込みリクエストが閉じる操作であれば、記憶装置はFAT32からの次の「更新操作」(すなわち、書き込みリクエスト)を待つ(ステップ104)。
【0082】
DirEntryに対する書き込みリクエストが「閉じる」操作でなければ(ステップ114)(被スマグルファイルDirEntryに対する書き込みリクエストが被スマグルファイルDirEntryに「削除フラグ」を書き込むことによる「削除」操作であることを記憶装置が検出するということを意味する)、記憶装置は、FileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを更新し、(被スマグルファイルに属するデータクラスタが存在しなくなるように)リンクリスト中の被スマグルファイルクラスタ番号を除去し(ステップ116)、FAT32からの次の書き込み操作を待つ(ステップ104)。
【0083】
図7Cは、本発明の好ましい実施形態に従う、被スマグルファイルに上書きするというシナリオ(C)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。被スマグルファイルに上書きするためのフローは、新しい被スマグルファイルを作成するための図7AのフローAが後に続く、被スマグルファイルを削除するための図7BのフローBの組み合わせである。被スマグルファイルに上書きするための手続き経路は、図7Cにおいて、図7AのフローA(すなわち、ステップ104,106,108,110,および104のシーケンス)に関連するフローC2が後に続く、図7BのフローB(すなわち、ステップ100,102,104,106,112,114,116,および104のシーケンス)に関連するフローC1として描かれている。
【0084】
図7Dは、本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ(D)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7DのフローDは、所定位置にある被スマグルファイルを更新するための手続き経路を描いている。被スマグルファイルDirEntryが更新されつつあるのでなければ(ステップ112)、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの1つに関連しているか否かを調べることによって現在の書き込みリクエストが被スマグルファイルデータクラスタのうちの1つを更新しつつあるかどうかを調べる(ステップ118)。被スマグルファイルデータクラスタのうちの1つが更新されつつあるということを記憶装置が発見したならば、記憶装置は、(図3および4に示されているマップインスマグリングモードまたはマップアウトスマグリングモードを用いて)データクラスタをスマグリングし、FileExistsFlagをセットし(ステップ120)、その後に次の書き込みリクエストを待つ(ステップ104)。シナリオ(B)(図7Bのステップ106)では、FileExistsFlagは、シナリオ(D)(図7Dのステップ120)でセットされるので真として検出され得るということに留意する。
【0085】
図7Eは、本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ(E)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7EのフローEは、被スマグルファイルに付加するための手続き経路を描いている。書き込みリクエストが被スマグルファイルデータクラスタのうちの1つを更新しつつあるのでなければ(ステップ118)、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの1つに関連するか否かを調べることによって、更新されつつあるFATエントリのうちの少なくとも1つがFAT内の被スマグルファイルデータクラスタに関連しているか否かを調べる(ステップ122)。FAT内の被スマグルファイルデータクラスタFATエントリのうちの1つ以上が更新されつつあるのであれば、記憶装置は、リンクリスト中の被スマグルファイルクラスタ番号を新しいクラスタ番号または削除されるクラスタ番号で更新し(ステップ124)、その後、FAT32からの次の書き込みリクエストを待つ(ステップ104)。
【0086】
結局は、FAT32が被スマグルファイルデータクラスタおよび/またはFAT内のデータクラスタFATエントリを更新した後、FAT32は、前述したように被スマグルファイルDirEntry中のLUTフィールド、および場合によってはファイル長フィールドを更新することによってファイルを閉じなければならない。
【0087】
被スマグルファイルが既に存在する(すなわち、FileExistsFlagが真にセットされている)というシナリオでは、記憶装置はFAT32からの書き込みリクエストを待ち(ステップ104)、次のシナリオのうちの1つが生じるのを待つ。
◆シナリオ(B):FAT32は被スマグルファイルを削除しようと試みる。このシナリオでは、ステップ100および102のシーケンスを実行した後、記憶装置は、(前に記載した)ステップ104,106,112,114,および116のシーケンスを実行する。
◆シナリオ(D):FAT32は所定位置にある被スマグルファイルを更新しようと試みる。このシナリオでは、ステップ100および102のシーケンスを実行した後、記憶装置は、(前に記載した)ステップ104,106,112,118,および120のシーケンスを数回実行する。記憶装置がこれらのステップを何回繰り返して実行するかは、FAT32から来る更新の数による。
◆シナリオ(E):FAT32は追加のデータを被スマグルファイルに付加しようと試みる。このシナリオでは、ステップ100および102のシーケンスを実行した後、記憶装置は、新しいデータクラスタFATエントリの割り当てのために(前に記載した)ステップ104,106,112,118,122,および124のシーケンスを数回実行する。記憶装置が何回繰り返して実行するかは、更新されつつあるデータクラスタFATエントリの数による。記憶装置は、新たに割り当てられるデータクラスタ更新のためにステップ104,106,112,118,および120のシーケンス(シナリオ(D))をも数回実行する。記憶装置が何回繰り返して実行するかは、データクラスタ更新の数による。
【0088】
本発明は、限られた数の実施形態に関して記載してきたが、本発明の多くの変形、改変、および他の応用がなされ得るということが認識されるべきである。
【特許請求の範囲】
【請求項1】
計算システムであって、
(a)ホストシステムであって、
(i)前記ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、
(ii)前記ホストシステム上で動作する少なくとも1つのアプリケーションと、を有するホストシステムと、
(b)記憶装置であって、
(i)前記記憶装置を制御するコントローラと、
(ii)情報を前記記憶装置に格納するための記憶エリアと、を有する記憶装置と、
(c)前記ファイルシステムによる前記記憶エリアの制限エリアへのアクセスを制限するための第1のメカニズムと、
(d)前記少なくとも1つのアプリケーションが前記ファイルシステムを介して前記制限エリアにアクセスすることを可能にするための、前記記憶装置に存在する第2のメカニズムと、
を備える計算システム。
【請求項2】
請求項1記載の計算システムにおいて、
前記第2のメカニズムは、前記記憶装置がデータを前記記憶エリアの非制限エリアから前記制限エリアにコピーすることを可能にするように構成される計算システム。
【請求項3】
請求項1記載の計算システムにおいて、
前記第2のメカニズムは、前記制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを前記記憶エリアの非制限エリア内のアドレスへ経路指定するように前記記憶装置に指示するように動作可能である計算システム。
【請求項4】
請求項1記載の計算システムにおいて、
前記第2のメカニズムは、前記ホストシステムが前記記憶エリアの非制限エリアにアドレス指定された非制限データへのアクセスをリクエストするときに前記ホストシステムのアクセスコマンドを前記制限エリア内に存在する制限データに適用するように動作可能である計算システム。
【請求項5】
コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体であって、
(a)記憶装置の記憶エリアの制限エリアへの、ホストシステム上で動作するファイルシステムによるアクセスを制限するためのプログラムコードと、
(b)少なくとも1つのアプリケーションが前記ファイルシステムを介して前記制限エリアにアクセスすることを可能にするためのプログラムコードと、
を含むコンピュータ可読記憶媒体。
【請求項6】
請求項5記載の記憶媒体において、
(c)前記記憶装置がデータを前記記憶エリアの非制限エリアから前記制限エリアにコピーすることを可能にするためのプログラムコードをさらに含む記憶媒体。
【請求項7】
請求項5記載の記憶媒体において、
(c)前記制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを前記記憶エリアの非制限エリア内のアドレスへ経路指定するように前記記憶装置に指示するためのプログラムコードをさらに含む記憶媒体。
【請求項8】
請求項5記載の記憶媒体において、
(c)前記ホストシステムが前記記憶エリアの非制限エリアにアドレス指定された非制限データへのアクセスをリクエストするときに前記ホストシステムのアクセスコマンドを前記制限エリア内に存在する制限データに適用するためのプログラムコードをさらに含む記憶媒体。
【請求項9】
ホストシステム上で動作するアプリケーションが記憶装置の制限エリアにアクセスするための方法であって、
(a)前記ホストシステム上で動作するファイルシステムを提供するステップと、
(b)前記ファイルシステムによる前記制限エリアへのアクセスを制限するステップと、
(c)前記アプリケーションにより前記ファイルシステムを介して前記記憶装置に送られつつあるデータが前記制限エリアに向けられるように意図されているという指示を前記アプリケーションから前記記憶装置に送るステップと、
(d)前記指示を前記記憶装置において検出するステップと、
(e)アプリケーションリクエストを受け取ったときに、前記制限エリアに存在する前記データを前記アプリケーションによる読み出しのために利用可能にするステップと、
を含む方法。
【請求項10】
請求項9記載の方法において、
(f)前記記憶装置の無駄エリアを前記ファイルシステムによる使用のために解放するステップをさらに含む方法。
【請求項11】
請求項9記載の方法において、
(f)非制限データを前記記憶装置の非制限エリアから前記制限エリアにコピーするステップをさらに含む方法。
【請求項12】
請求項9記載の方法において、
(f)前記制限エリアに向けられたホストシステムのアクセスリクエストを前記記憶装置の非制限エリア内のアドレスへ経路指定するステップをさらに含む方法。
【請求項13】
請求項9記載の方法において、
(f)前記記憶装置の非制限エリアに向けられたホストシステムのアクセスリクエストを、前記制限エリアへの制限アクセスリクエストと解釈するステップをさらに含む方法。
【請求項1】
計算システムであって、
(a)ホストシステムであって、
(i)前記ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、
(ii)前記ホストシステム上で動作する少なくとも1つのアプリケーションと、を有するホストシステムと、
(b)記憶装置であって、
(i)前記記憶装置を制御するコントローラと、
(ii)情報を前記記憶装置に格納するための記憶エリアと、を有する記憶装置と、
(c)前記ファイルシステムによる前記記憶エリアの制限エリアへのアクセスを制限するための第1のメカニズムと、
(d)前記少なくとも1つのアプリケーションが前記ファイルシステムを介して前記制限エリアにアクセスすることを可能にするための、前記記憶装置に存在する第2のメカニズムと、
を備える計算システム。
【請求項2】
請求項1記載の計算システムにおいて、
前記第2のメカニズムは、前記記憶装置がデータを前記記憶エリアの非制限エリアから前記制限エリアにコピーすることを可能にするように構成される計算システム。
【請求項3】
請求項1記載の計算システムにおいて、
前記第2のメカニズムは、前記制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを前記記憶エリアの非制限エリア内のアドレスへ経路指定するように前記記憶装置に指示するように動作可能である計算システム。
【請求項4】
請求項1記載の計算システムにおいて、
前記第2のメカニズムは、前記ホストシステムが前記記憶エリアの非制限エリアにアドレス指定された非制限データへのアクセスをリクエストするときに前記ホストシステムのアクセスコマンドを前記制限エリア内に存在する制限データに適用するように動作可能である計算システム。
【請求項5】
コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体であって、
(a)記憶装置の記憶エリアの制限エリアへの、ホストシステム上で動作するファイルシステムによるアクセスを制限するためのプログラムコードと、
(b)少なくとも1つのアプリケーションが前記ファイルシステムを介して前記制限エリアにアクセスすることを可能にするためのプログラムコードと、
を含むコンピュータ可読記憶媒体。
【請求項6】
請求項5記載の記憶媒体において、
(c)前記記憶装置がデータを前記記憶エリアの非制限エリアから前記制限エリアにコピーすることを可能にするためのプログラムコードをさらに含む記憶媒体。
【請求項7】
請求項5記載の記憶媒体において、
(c)前記制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを前記記憶エリアの非制限エリア内のアドレスへ経路指定するように前記記憶装置に指示するためのプログラムコードをさらに含む記憶媒体。
【請求項8】
請求項5記載の記憶媒体において、
(c)前記ホストシステムが前記記憶エリアの非制限エリアにアドレス指定された非制限データへのアクセスをリクエストするときに前記ホストシステムのアクセスコマンドを前記制限エリア内に存在する制限データに適用するためのプログラムコードをさらに含む記憶媒体。
【請求項9】
ホストシステム上で動作するアプリケーションが記憶装置の制限エリアにアクセスするための方法であって、
(a)前記ホストシステム上で動作するファイルシステムを提供するステップと、
(b)前記ファイルシステムによる前記制限エリアへのアクセスを制限するステップと、
(c)前記アプリケーションにより前記ファイルシステムを介して前記記憶装置に送られつつあるデータが前記制限エリアに向けられるように意図されているという指示を前記アプリケーションから前記記憶装置に送るステップと、
(d)前記指示を前記記憶装置において検出するステップと、
(e)アプリケーションリクエストを受け取ったときに、前記制限エリアに存在する前記データを前記アプリケーションによる読み出しのために利用可能にするステップと、
を含む方法。
【請求項10】
請求項9記載の方法において、
(f)前記記憶装置の無駄エリアを前記ファイルシステムによる使用のために解放するステップをさらに含む方法。
【請求項11】
請求項9記載の方法において、
(f)非制限データを前記記憶装置の非制限エリアから前記制限エリアにコピーするステップをさらに含む方法。
【請求項12】
請求項9記載の方法において、
(f)前記制限エリアに向けられたホストシステムのアクセスリクエストを前記記憶装置の非制限エリア内のアドレスへ経路指定するステップをさらに含む方法。
【請求項13】
請求項9記載の方法において、
(f)前記記憶装置の非制限エリアに向けられたホストシステムのアクセスリクエストを、前記制限エリアへの制限アクセスリクエストと解釈するステップをさらに含む方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図7D】
【図7E】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図7D】
【図7E】
【公表番号】特表2010−526364(P2010−526364A)
【公表日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2010−505004(P2010−505004)
【出願日】平成20年4月27日(2008.4.27)
【国際出願番号】PCT/IL2008/000552
【国際公開番号】WO2008/135969
【国際公開日】平成20年11月13日(2008.11.13)
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
【公表日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願日】平成20年4月27日(2008.4.27)
【国際出願番号】PCT/IL2008/000552
【国際公開番号】WO2008/135969
【国際公開日】平成20年11月13日(2008.11.13)
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
[ Back to top ]