JP4665065B2 - 記憶装置およびデータスマグリングの方法 - Google Patents

記憶装置およびデータスマグリングの方法 Download PDF

Info

Publication number
JP4665065B2
JP4665065B2 JP2010505004A JP2010505004A JP4665065B2 JP 4665065 B2 JP4665065 B2 JP 4665065B2 JP 2010505004 A JP2010505004 A JP 2010505004A JP 2010505004 A JP2010505004 A JP 2010505004A JP 4665065 B2 JP4665065 B2 JP 4665065B2
Authority
JP
Japan
Prior art keywords
storage device
data
unrestricted
file
restricted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010505004A
Other languages
English (en)
Other versions
JP2010526364A (ja
Inventor
モゼーク,アミール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk IL Ltd filed Critical SanDisk IL Ltd
Priority claimed from PCT/IL2008/000552 external-priority patent/WO2008135969A1/en
Publication of JP2010526364A publication Critical patent/JP2010526364A/ja
Application granted granted Critical
Publication of JP4665065B2 publication Critical patent/JP4665065B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

本発明は、許可済みアプリケーションがファイルシステムアプリケーションインターフェイス(FSAPI:file-system application-interface )だけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。
ホストシステムの動作を可能にする不揮発性メモリ(NVM)記憶装置は、コンピュータ工学の技術分野で良く知られている。単純なセキュリティ上の考慮から、ホストシステムの開発者は必然的に「ブートパーティション」が普通のファイルシステムによってアクセスされるのを防止しようとする。
ブートパーティションおよびシステムデータ(例えば、セキュリティキー)などの制限サブエリアへのアクセスは制限され、これらのサブエリアはFSAPIだけを使用するアプリケーションによってはアクセスされ得ない。アプリケーションおよびユーザにサービスするように意図されている他の記憶サブエリアは、FSAPIを用いるファイルシステムによってアクセスされる。この制限は、通例、制限サブエリアのアドレスを除いて、ファイルシステムがアクセスできるアドレスの範囲を制限することによって実施される。
しかし、ホストシステムの寿命の間に、制限サブエリア内のデータに(例えば、ブートイメージを更新するために、またシステムキーを読み出すために)アクセスすることが時折必要になる。ブートパーティションを更新する必要は、いろいろな理由から(例えば、ソフトウェアバグを直すか、あるいは新しく利用可能になった機能をインストールするかなど)生じ得る。
制限エリアはFSAPIを使用するオペレーティングシステム(OS)によっては改変され得ないので、そのような更新は複雑であって、制限を迂回して特権付きエリアにアクセスすることのできる特定デバイス向け、特定ホスト向け、特定OS向けのアプリケーションを必要とする。
そのような解決策(例えば、Microsoft(マイクロソフト)(登録商標)社から入手できるUpdateXIP)は、RAMをフラギングすること、パワーダウンせずにホストシステムをリブートすること、フラグをブートコードによってチェックすること、ブートパーティションからブートパーティションにアクセスできる特別のコードをロードすることを含む。この手続きは、関係するコンポーネント(例えば、記憶装置、ホストシステム、およびOS)の間に不均一性が存在するであろうということを意味する。このような事情は、記憶装置における制限エリア(例えば、ブートパーティション)の更新を非常に高価な機能とする。
あたかもその全体が本願明細書において完全に開示されたかのように参照により援用されているMoran の米国特許出願第2006−0031632号(以降、特許文献1と称される)などの従来技術システムは、ホストシステムのファイルシステムによってデータが直接書き込まれないようにデータを格納するためのシステムを開示している。しかし、特許文献1は、記憶装置がホストシステムによって書き込まれたデータを(パワーアップ時にそれを自動的にリストアすることによって)失わないようにそれによって保護するところの内部バックアップメカニズムを開示しているだけであって、データが書き込まれているアドレスとは異なる論理アドレスからデータがどのように読み出され得るかを開示していない。従って、特許文献1によるシステムは、制限エリア内のデータへのアクセスを可能にするためには役立たない。
許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを有することが望ましい。
米国特許出願第2006−0031632号
本発明の目的は、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを提供することである。
明瞭性を目的として、以下の幾つかの用語が本願明細書での使用のために特別に定義される。「ファイルシステムアプリケーションインターフェイス」、「FSAPI」、および「ファイルシステムAPI」という用語は、本願明細書において、ファイルシステムが記憶装置において実行し得る標準的操作、すなわちファイル/ディレクトリを開く/作成する(open/create file/directory)、ファイル/ディレクトリを読み出す/書き込む(read/write file/directory) 、ファイル/ディレクトリを削除する(delete file/directory) 、ファイル/ディレクトリを改名する(rename file/directory) 、およびファイル/ディレクトリを閉じる(close file/directory)のセットを指すために使用される。「記憶エリア」という用語は、本願明細書において、記憶装置の1つの連続する論理(物理的でない)アドレス範囲を指すために使用される。
「FAT32」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているファイルシステムを指すために使用される。「クラスタ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「FATエントリ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「ファイルアロケーションテーブル」および「FAT」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。「DirEntry」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されている1つのデータ構造を指すために使用される。
「最終更新時間フィールド」および「LUTフィールド」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているように、ファイルが更新された最終時間を明示する、DirEntry内の1つのパラメータを指すために使用される。「ファイル長パラメータ」という用語は、本願明細書において、MicrosoftFAT32仕様において定義されているように、ファイルの長さをバイト数で明示する、DirEntry内の1つのパラメータを指すために使用される。
「セクタ」という用語は、本願明細書において、データパケットの論理シーケンシャルアドレスを指すために使用される。データパケットは、論理シーケンシャル512バイト、論理シーケンシャルFAT32セクタ、または論理シーケンシャルFAT32クラスタであり得る。「ファイル」という用語は、本願明細書において、FSAPIにより処理され得る任意のデータオブジェクト(例えば、データファイル、データファイルの一部分、ディレクトリ、およびプレイリストなど)を指すために使用される。「FAT32セクタ」という用語は、本願明細書において、512バイトのセクタを指すために使用される。
「論理パーティション」という用語は、本願明細書において、セクタの1つの論理的連続的範囲を指すために使用される。論理パーティションは、一度に1つのホストソフトウェアモジュールによってのみ管理され得る。ホストソフトウェアモジュールの例は、ファイルシステムおよびチップセットブートROMを含む。「制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされるべきではないが他のモジュールによってアクセスされるべき論理パーティションを指すために使用される。「非制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされ得る論理パーティションを指すために使用される。「制限セクタ」という用語は、本願明細書において、制限エリアの範囲内にあるセクタを指すために使用される。「非制限セクタ」という用語は、本願明細書において、非制限エリアの範囲内にあるセクタを指すために使用される。
「スマグリング(smuggling) 」という用語は、本願明細書において、それによってホストファイルシステムがデータを1つの論理アドレスに書き込み、また記憶装置が異なる論理アドレスにおいてデータへのアクセスを内部的に可能にするところの内部記憶操作を指すために使用される。特別の場合には、スマグリングは、ホストファイルシステムが制限エリアにおいてデータを読み出しおよび書き込むことを可能にするために使用され得る。「被スマグルデータ(smuggled data) 」という用語は、本願明細書において、それに対してスマグリング操作が行われたところのデータを指すために使用される。「無駄セクタ」という用語は、本願明細書において、スマグリング操作に起因して記憶装置がデータ格納のために使用しない論理セクタを指すために使用される。「スペースを解放する」という用語は、本願明細書において、無駄セクタの、データを記憶するセクタへの変換を指すために使用される。
本発明は、FSAPIだけを使用する記憶装置において制限エリアにアクセスする方法を教示する。記述の目的のために、記憶装置にアクセスするときに最も問題となる操作が扱われ、それは更新操作である。それでも、本発明は、後述するように、開く操作、作成する操作、読み出す操作、および削除する操作にも当てはまる。
本発明の好ましい実施形態は、3つのステップを有する間接プロセスを用いて実行される。第1のステップは、制限エリア内にスマグリングされるべきファイルを非制限エリアに格納することである。ファイルは、FSAPIにおいて適法であるけれども記憶装置によって「スマグリング表示」として認識され得る属性と共に格納される。記憶装置により実行される第2のステップは、新しく格納されたファイル中の「スマグリング表示」を探すことである。第3のステップは、スマグリング表示が検出された場合に限って行われるステップであって、記憶装置によって内部で行われる、ファイルの、指定された制限エリアへのスマグリングである。
検出
本発明の1つの好ましい実施形態では、スマグリング表示はファイルの名前である。本発明の他の1つの好ましい実施形態では、スマグリング表示はファイルのボディの特別のコンテンツ(例えば、ヘッダ、フッタ、あるいはファイル中の他の任意の定義済みオフセット)である。
スマグリング
本発明の1つの好ましい実施形態では、非制限エリアから制限エリアへのファイルのスマグリングは、データを非制限エリアから制限エリアへ物理的にコピーすることによって実行される。これは「コピー」モードと称される。
本発明の他の1つの好ましい実施形態では、スマグリングは、制限エリアからデータを読み出さなければならないデバイスが非制限エリアへリダイレクトされるように、非制限エリアを制限エリア中に論理的にマッピングすることにより実行される。これは「マップアウト」モードと称される。
本発明の他の1つの好ましい実施形態では、スマグリングは、ファイルにおける被スマグルデータの論理オフセットを制限エリアにおける対応するオフセットに変換し、これにより読み出しのために非制限エリアを制限エリアにマッピングすることによって、実行される。非制限エリアに書き込まれている被スマグルファイル(smuggled file) からファイルシステムがデータを読み出そうと試みるとき、記憶装置はその操作を「被スマグルデータを読み出すこと」として検出する。データは、制限エリアにおけるオフセットを被スマグルファイルにおけるオフセットに整合させることによって制限エリア内の対応する位置から取り出される。これは「マップイン」モードと称される。
本発明の他の好ましい実施形態では、コピーモード、マップアウトモード、あるいはマップインモードにおいて、スマグリングは、非制限エリアへの書き込みが完了し、ファイルが閉じられた後に、実行される。本発明の他の好ましい実施形態では、マップアウトモードまたはマップインモードにおいて、スマグリングは、ファイルが書き込まれている間に実行される。
スペースを解放する
本発明の1つの好ましい実施形態では、記憶装置の容量を超える仮想サブエリアを付け加え、その仮想サブエリアをアドレスの失われた範囲にマッピングすることによって、記憶装置は、制限エリアアドレスにマッピングされて失われた非制限エリアの論理アドレスを再使用する。
本発明の他の1つの好ましい実施形態では、アプリケーションは、スマグリング操作が行われるように適当な期間待った後に、ちょうど書き込まれたばかりのファイルを削除する。この手続きは、非制限エリアを使用するために解放する。これは「コピー−削除」モードと称される。
一般
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、後述するように、ファイルの一部に対して実行され得る。
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、各制限エリアが記憶装置へのスマグリングの宛先を指示するためのそれ自身の特定のポインタを有する複数のファイルに対して実行され得る。
従って、本発明に従って初めて計算システムが提供される。この計算システムは、(a)ホストシステムであって、(i)ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、(ii)ホストシステム上で動作する少なくとも1つのアプリケーションと、を有するホストシステムと、(b)記憶装置であって、(i)記憶装置を制御するコントローラと、(ii)情報を記憶装置に格納するための記憶エリアと、を有する記憶装置と、(c)ファイルシステムによる記憶エリアの制限エリアへのアクセスを制限するための第1のメカニズムと、(d)少なくとも1つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするための、記憶装置に存在する第2のメカニズムと、を備える。
好ましくは、第2のメカニズムは、記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするように構成される。
好ましくは、第2のメカニズムは、制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するように動作可能である。
好ましくは、第2のメカニズムは、ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するように動作可能である。
本発明に従って、コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体が初めて提供される。このコンピュータ可読コードは、(a)記憶装置の記憶エリアの制限エリアへの、ホストシステム上で動作するファイルシステムによるアクセスを制限するためのプログラムコードと、(b)少なくとも1つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするためのプログラムコードと、を含む。
好ましくは、コンピュータ可読コードは、(c)記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするためのプログラムコードをさらに含む。
好ましくは、コンピュータ可読コードは、(c)制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するためのプログラムコードをさらに含む。
好ましくは、コンピュータ可読コードは、(c)ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するためのプログラムコードをさらに含む。
これらの実施形態およびさらなる実施形態は、以下の詳細な説明および実施例から明らかとなる。 本発明は、添付図面を参照して、単に例示により、ここで記述される。
本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。 図2Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図2Bは、被スマグルデータについてFAT32から書き込みリクエストを受け取った後の図2Aのパーティションを示す。図2Cは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図2Bのパーティションを示す。図2Dは、非制限エリアに格納されていた被スマグルデータが削除された後の図2Cのパーティションを示す。 図3Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図3Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図3Aのパーティションを示す。図3Cは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図3Bのパーティションを示す。 図4Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図4Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図4Aのパーティションを示す。図4Cは、制限セクタが図4Bで書き込まれた非制限セクタに記憶装置によってマッピングされた後の図4Bのパーティションを示す。 図5Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図5Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Aのパーティションを示す。図5Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Bのパーティションを示す。図5Dは、図5Cの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すFAT32からのリクエストを受け取った後の図5Cのパーティションを示す。 図6Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図6Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Aのパーティションを示す。図6Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図6Bのパーティションを示す。図6Dは、仮想セクタを読み出すFAT32からの読み出しリクエストを受け取った後の図6Cのパーティションを示す。 本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ(A)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。 本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ(B)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。 本発明の好ましい実施形態に従う、被スマグルファイルに上書きするというシナリオ(C)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。 本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ(D)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。 本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ(E)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
本発明は、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。本発明に従う、許可済みアプリケーションがFSAPIだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするための原理および操作は、付随する記述および図面を参照してより良く理解され得る。
図面は、データを記憶装置にスマグリングする3つの段階、すなわち
(1)プレスマグリング:スマグリング操作の始まりを検出すること
(2)スマグリング:スマグリング操作自体のこと
(3)ポストスマグリング:スマグリング操作後にスペースを解放することによって記憶装置上の空きスペースを最大にすることを記述している。
記述を簡単にするために、以下の仮定が行われる。
(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バイト)とを含むストリングを格納する。
ここで図面を参照すると、図1は、本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。ホストシステム4を有する計算システム2が示されている。ホストシステム4は、ファイルシステム5、OS6、ドライバ7、ホストシステムプロセッサ8、およびアプリケーション9を含む。ドライバ7は、標準的ブロックデバイスドライバを含む。ホストシステム4は、コントローラ12および記憶エリア14を有する記憶装置10に操作可能に接続されて示されている。記憶エリア14は、制限エリア16および非制限エリア18を有する。
図2A〜2Dは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図2A〜2Dは、非制限エリアを介して制限エリアの中にデータをスマグリングし、その後に、非制限エリアをスマグリングプロセス中に生成された中間データから解放することによってOSイメージを更新するための4つの段階を示す。
図2Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。記憶装置は2つのパーティション、すなわち、OSイメージを格納するための制限エリア20と、ユーザデータを格納するための非制限エリア22とを有する。
図2Bは、被スマグルデータについてFAT32から書き込みリクエストを受け取った後の図2Aのパーティションを示す。図2Bは、被スマグルファイル24(例えば、OSイメージ)を示す。記憶装置は、被スマグルファイル24を非制限エリア22に格納する。検出プロセスは、図7A〜7Eに関連して記述される。
図2Cは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図2Bのパーティションを示す。被スマグルファイル24は、制限エリア20にコピーされて示されている。被スマグルファイル24は、そのとき、制限ファイル26(すなわち、FAT32によってアクセスされ得ないデータファイル)になる。
図2Dは、非制限エリアに格納されていた被スマグルデータが削除された後の図2Cのパーティションを示す。被スマグルファイル24の削除は、ファイルを書き込んだアプリケーションにより(記憶装置がスマグリングを完了することを可能にする安全遅延後に)、または記憶装置自体により(次のパワーアップ時に)開始され得る。
被スマグルファイル24がOSイメージである例において、このOSイメージは、(制限ファイル26として)制限エリアに格納され、ホストシステムプロセッサのブートROMによってアクセスされ得るけれども、FAT32によっては読み出され得ない。データをスマグリングしてスペースを解放するコピー−削除モードは、OSイメージの部分的更新には適用され得なくて、OSイメージが完全に更新される場合に限って適用され得る。
図3A〜3Cは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングするマップインモードの簡略ブロック図である。図3A〜3Cは、データを非制限エリアに書き込み、その後に非制限エリアを制限エリアの中にマッピングすることによりデータをスマグリングすることによってOSイメージを更新するための3つの段階を示す。
図3Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図2Aに関して説明したように、記憶装置は2つのパーティション、すなわち、OSイメージを格納するための制限エリア20と、ユーザデータを格納するための非制限エリア22とを有する。
図3Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図3Aのパーティションを示す。データセクタ30は、非制限セクタ32に書き込まれるように示されている。FAT32が被スマグルファイルの基準に適合するデータセクタ30を書き込むためのリクエストを送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置は非制限セクタ32のセクタ番号を制限セクタ34の制限エリアセクタ番号に「変換すること」によって非制限セクタ32を制限セクタ34にマッピング(マッピングA)する。「変換」は次のように行われる。すなわち、記憶装置は、ファイルにおける非制限セクタ32のオフセットを計算し(図7A〜7Eに関して詳しく説明される)、セクタオフセットは制限エリア20におけるセクタオフセットに変換される。
図3Cは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図3Bのパーティションを示す。FAT32からの(非制限セクタ32への)、あるいはホストシステムのブートROMコードからの(制限セクタ34への)書き込みリクエストは、記憶装置によって内部的に制限セクタ34へ経路指定される。経路指定メカニズムは記憶装置によって管理され、それは非制限セクタから制限セクタへのルックアップテーブルを管理する。テーブルのどのエントリも、スマグリングされた非制限セクタ番号と、図3Bにおいてマッピングされた対応する制限セクタ番号とを含む。記憶装置は、FAT32から来る書き込みリクエストを監視し、非制限セクタがリクエストされているか否かをルックアップテーブルにおいて調べる。非制限セクタがリクエストされているならば、記憶装置は、セクタ36に位置すると期待されているデータセクタに対する書き込みリクエストを、実際にはセクタ38に書き込まれるように経路指定する(マッピングB)。このプロセスは、非制限エリアの範囲内のセクタを制限エリアの範囲内のセクタにマッピングするので、マップインモードと称される。
マップインモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とし、従ってルックアップテーブルを構築するために記憶装置のFAT32エンジンにより必要とされる「準備」に関して寛容ではない場合に適用可能である。FAT32エンジンにより必要とされる準備を図7A〜7Eに関して説明する。マップインモードは、FAT32リクエスト(ホストシステムプロセッサにより実行される)をFAT32への指示なしでルックアップテーブルに従って制限セクタへ内部的に経路指定する。従って、ルックアップテーブルに現れる非制限セクタは、データを格納するために記憶装置によって使用されない。このような無駄セクタがFAT32により再使用される方法を図5A〜5Dに関して説明する。
図4A〜4Cは、本発明の好ましい実施形態に従う、プロセスの種々の段階においてデータをスマグリングするマップアウトモードの簡略ブロック図である。図4A〜4Cは、データを非制限セクタの中に直接スマグリングし、その後に制限セクタを非制限セクタの中にマッピングアウトすることによってOSイメージを更新するための3つの段階を示す。
図4Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。(図2Aおよび2Aに関して説明したように、)制限エリア20と非制限エリア22とが示されている。
図4Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図4Aのパーティションを示す。記憶装置は、FAT32によりリクエストされたように非制限セクタ40にデータを格納する。
図4Cは、図4Bで書き込まれた非制限セクタに記憶装置によって制限セクタがマッピングされた後の図4Bのパーティションを示す。記憶装置によって、図3Cに関して説明したルックアップテーブルに従って、データセクタ42が非制限セクタ40の中に内部的にマッピングされる(マッピングC)。従って、(制限エリアに格納されているOSイメージに対してホストシステムプロセッサブートROMから来る)アクセスリクエストがあったとき、記憶装置はアクセスリクエストを前述したルックアップテーブルに従って非制限セクタへ内部的に経路指定する。
マップアウトモードは、制限エリアの範囲内のセクタを非制限エリアの範囲内のセクタの中にマッピングする。このようなマッピングは、ルックアップテーブルにおいて現れる制限セクタが記憶装置によってOSイメージデータを格納するために使用されないという状況を作り出す。そのような無駄セクタがFAT32により再使用される方法は、図6A〜6Dに関して記載される。マップアウトモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とせず、従ってルックアップテーブルを構築するために記憶装置のFAT32エンジンにより必要とされる準備に関して寛容でない場合に適用可能である。
図5A〜5Dは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップインモードにおいてスペースを解放することの簡略ブロック図である。図5A〜5Dは、マップインプロセス中に作成された無駄セクタを利用するための4つの段階を示す。
図5Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。OSイメージを格納するための制限エリア50、ユーザデータを格納するための非制限エリア52、および仮想エリア54が示されている。図2A、2A、および3Aとは対照的に、記憶装置は制限エリア50のサイズを有する仮想エリア54をホストシステムに提供する。仮想エリア54はセクタの論理シーケンシャル範囲である。記憶装置は、ホストシステムのFAT32に、非制限エリア52のためのセクタと仮想エリア54のためのセクタとを有するエリアを提供する。その結果として、FAT32がホストシステムプロセッサ上で実行されるとき、FAT32は非制限エリア52と仮想エリア54とを1つの非制限エリアとして管理する。
図5Bは、データセクタを非制限セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Aのパーティションを示す。データセクタ56は非制限セクタ58に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ56を書き込むためのリクエストをFAT32が送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置はルックアップテーブルを調べて、その被スマグルデータを書き込むための制限セクタ60についてのセクタ番号を得る。記憶装置は、データセクタ56を制限セクタ60に格納されるように経路指定(マッピングD)する。
図5Cは、データセクタを仮想セクタに書き込むFAT32からの書き込みリクエストを受け取った後の図5Bのパーティションを示す。制限エリア50に格納されている被スマグルデータ62が示され、ホストシステムプロセッサで実行されるFAT32からの仮想エリア54の範囲内の仮想セクタ66にデータセクタ64を書き込むリクエストを受け取る。記憶装置は、図3Cに関して言及されたルックアップテーブルのほかに、「仮想−論理(virtual-to-logical)」(VTL)ルックアップテーブルを管理する。VTLテーブルのどのエントリも、仮想セクタ番号と、対応する非制限セクタ番号とを含む。FAT32がデータセクタ64を仮想データセクタ66(仮想エリア54の範囲内のセクタ)に書き込もうと試みるとき、記憶装置は、仮想セクタ66が非制限セクタに既にマッピングされているか否かを判定するためにVTLルックアップテーブルを内部的に調べる。
(図5Bのデータセクタ56に関して説明したように)仮想セクタ66がマッピングされていたならば、記憶装置はFAT32リクエストを適合する非制限セクタ68へ内部的に経路指定する(マッピングE)。仮想セクタ66がまだマッピングされていなければ、記憶装置は、仮想セクタが非制限セクタにマッピングされているかどうかを確かめるためにVTLルックアップテーブル中の非制限セクタ番号を調べる。仮想セクタがマッピングされていない非制限セクタ(すなわち、無駄セクタ)を記憶装置が発見したならば、記憶装置は、仮想セクタ66を非制限セクタ68(利用可能な「無駄セクタ」)にマッピング(マッピングE)し、VTLルックアップテーブル中の対応するエントリをその非制限セクタ番号で更新する。記憶装置は、その後、(FAT32により仮想セクタ66に送られた)データセクタ64をセクタ68に内部的に格納する。
記憶装置は、ルックアップテーブルを、(図3Cに関して説明したように)制限セクタ62のマッピング済みセクタ番号で更新する。FAT32が(図5Cに示されているように)非制限セクタ68にアクセスしよう(すなわち、読み出すかまたは書き込もう)と試みるとき、記憶装置はそのリクエストを(制限エリア50内の)制限セクタ62に内部的に経路指定(マッピングF)する。
無駄エリアが制限エリア50より小さいために(それは、制限エリア50の全体よりは小さいエリアをスマグリングすることの結果である)利用可能な非制限セクタ(制限セクタにマッピングされていない)を記憶装置が発見できなければ、記憶装置は、FAT32により仮想アドレスに送られるデータセクタを格納するために制限エリア50内の利用可能な記憶エリアを使用する。このとき、これらのデータセクタは仮想エリア54から制限エリア50の中に直接マッピングされる。より多くのデータが制限エリア50内にスマグリングされ、より多くの無駄エリアが非制限エリア52に作られると、直ちに記憶装置はこれらの「直接マッピングされた」データセクタを制限エリア50から非制限エリア52に移し、制限エリア50を新たにスマグリングされるデータのために利用可能にする。
図5Dは、図5Cの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すFAT32からのリクエストを受け取った後の図5Cのパーティションを示す。図5Dにおいて、FAT32は、非制限論理セクタ70(これは、既に制限セクタ62の中にマッピングされている)の中に既にマッピングされている仮想セクタ66を、記憶装置から、読み出すかまたは書き込もうと試みる。記憶装置は、マッピングされている非制限論理セクタ70に関してVTLルックアップテーブルを調べて、FAT32リクエストを非制限論理セクタ70へ経路指定(マッピングG)する。従って、
(1)非制限エリア52に向けられたデータは非制限エリア52に格納され、
(2)(データスマグリング方式により意図されているように、)非制限エリア52に向けられた被スマグルデータは制限エリア50に格納され、
(3)仮想エリア54に向けられたデータは非制限エリア52に格納される。
図6A〜6Dは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップアウトモードにおいてスペースを解放することの簡略ブロック図である。図6A〜6Dは、マップアウトプロセス中に作られる無駄セクタを利用するための4つの段階を示す。
図6Aは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。(図5Aに関して説明したように、)制限エリア50、非制限エリア52、および仮想エリア54が示されている。
図6Bは、非制限セクタにデータセクタを書き込むFAT32からの書き込みリクエストを受け取った後の図6Aのパーティションを示す。データセクタ72は、非制限セクタ74に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ72を書き込むためのリクエストをFAT32が送ったことを記憶装置が(図7A〜7Eに関して説明されるデータスマグリング検出方式に従って)検出したならば、記憶装置は、(図3Cに関して説明した)ルックアップテーブルを調べて、制限セクタ76についてのセクタ番号を得る。
記憶装置は、データセクタ72を非制限セクタ74に内部的に格納する。記憶装置は、ルックアップテーブルを、マッピングされた非制限セクタ74のセクタ番号で更新する。次のブート操作時にホストシステムプロセッサがOSイメージを制限エリア50内の制限セクタ76から読み出そうと試みるとき、記憶装置は、リクエストを制限セクタ76の代わりに非制限エリア52内のデータセクタ74へ内部的に経路指定する(マッピングH)。
図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に格納される。
図6Dは、仮想セクタを読み出すFAT32からの読み出しリクエストを受け取った後の図6Cのパーティションを示す。仮想セクタ80を読み出すFAT32からの読み出しリクエストを記憶装置が受け取ったとき、記憶装置は、固定されたオフセットを適用し(マッピングK)、制限エリア50からデータセクタ84を読み出す。
図7A〜7Eは、本発明の好ましい実施形態に従う、以下で挙げられる種々のデータスマグリングシナリオのために、記憶装置を有するホストシステムで実行される、データスマグリング検出方式の簡略フローチャートである。図7A〜7Eは、記憶装置において任意のファイルに対してFAT32が実行しなければならなくなるかもしれない全ての普通の更新操作を包含する、被スマグルファイルについての5つのデータスマグリングシナリオを示す。データスマグリングシナリオは次のとおりである。
(A)(ファイルが初めて、あるいはファイルの削除後に、作成されるときに、)新しい被スマグルファイルを作成する。
(B)(被スマグルファイルが削除されなければならないときに、)被スマグルファイルを削除する。
(C)(新しい被スマグルファイルが、古い被スマグルファイルを削除して新しい被スマグルファイルを作成することによって、古い被スマグルファイルに取って代わらなければならないときに、)被スマグルファイルに上書きする。
(D)(存在する被スマグルファイルが部分的に更新されなければならないときに、)所定位置にある被スマグルファイルを更新する。
(E)(存在する被スマグルファイルが拡張されなければならないときに、)被スマグルファイルに付加する。
データスマグリング検出方式は、FAT32から記憶装置に到来する書き込みリクエストを監視し、そのリクエストがFATのためのものか、ディレクトリエントリFAT32セクタのためのものか、あるいはデータクラスタのためのものかを識別する動作を利用する。
ファイルを、このファイルをスマグリングすることによって、更新するように意図されているデータは、NVMに格納されている所定ストリングの検出によって識別される。その所定ストリング(以降、「被スマグルファイル識別子」と称される)は、データをスマグリングしなければならないアプリケーションに知られている。被スマグルファイル識別子は、被スマグルファイルのフルパスおよびファイル名である。被スマグルファイル識別子は、アプリケーションにより、FAT32を介して、被スマグルファイルのディレクトリエントリデータの一部として送られる。
前に挙げられた全てのデータスマグリングシナリオにおいて、システムがパワーアップされるとき(ステップ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チェーン全体を読み出し、その後、リンクリストに従うことによって被スマグルファイルデータクラスタ番号を再構築する。
この段階(ステップ102)の後に、記憶装置はFAT32からの書き込みリクエストを待つ(ステップ104)。記憶装置は、FAT32から書き込みリクエストを受け取ったとき、FileExistsFlagが真であるか偽であるかを調べる(ステップ106)。この段階から、それぞれのデータスマグリングシナリオは、図7A〜7Eにおいて後述する異なるフローをたどる。
図7Aは、本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ(A)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7AのフローA(点線で表されている)は、新しい被スマグルファイルを作成するための手続き経路を描いている。被スマグルファイルが存在しなくてFAT32が新しい被スマグルファイルを書き込もうと試みるとき、フローAは次のステップを実行する。
システムのパワーアップ(ステップ100)の後、記憶装置はその内部初期化を実行し、FileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを、新しい被スマグルファイルが格納されると考えられるディレクトリのDirEntryの最後のクラスタを指すようにセットする(ステップ102)。記憶装置は、その後、書き込みリクエストを待ち(ステップ104)、FileExistsFlagを調べる(ステップ106)。シナリオ(A)において、この段階ではファイルは存在しないので、FileExistsFlagは偽であり、記憶装置は以下の条件が妥当であるか否かを調べる(ステップ108)。
(1)新しいDirEntryは、被スマグルファイルDirEntryポインタにおいて指定されているのと同じアドレスに書き込まれるか?(シナリオ(A)のこの段階では、被スマグルファイルDirEntryポインタは、被スマグルファイルが格納されると考えられるディレクトリのDirEntryの最後のクラスタを指す。)
(2)DirEntryにおいて指定されるファイル名は被スマグルファイルの名前(被スマグルファイル識別子において指定される)と同じか?
両方の条件が満たされるならば(新しい被スマグルファイルDirEntryが書き込まれつつあることを記憶装置が発見するということを意味する)、記憶装置はFileExistsFlagを真にセットし、FAT32が被スマグルファイルクラスタ、FATエントリ、およびデータクラスタを書き込むのを待つ(ステップ110)。あるいは、ファイルが偶然に空であったならば(すなわち、長さ=0)、記憶装置は、図7Bに関して以下に説明されるように、新しいDirEntryを更新することによってファイルを閉じる。この2条件のいずれもが満たされなければ(新しい被スマグルファイルが作成されていないということを意味する)、記憶装置は新しい書き込みリクエストを待つ(ステップ104)。
図7Bは、本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ(B)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7BのフローBは、被スマグルファイルを削除するための手続き経路を描いている。新しい書き込みリクエストがFAT32から来たとき(ステップ104)、記憶装置はFileExistsFlagを調べる(ステップ106)。FileExistsFlagが真ならば、記憶装置は新しいDirEntryが更新されつつあるか否かを調べる(すなわち、現在書き込まれているFAT32セクタが被スマグルファイルDirEntryポインタと同じか否かを確かめる)(ステップ112)。
被スマグルファイルDirEntryがFAT32により更新されつつあるのであれば(ステップ112)、記憶装置は(この場合には更新されるDirEntry内のLUTフィールドおよびファイル長パラメータを調べることにより)DirEntryに対する書き込みリクエストが「閉じる」操作であるか否かを調べる(ステップ114)。書き込みリクエストが閉じる操作であれば、記憶装置はFAT32からの次の「更新操作」(すなわち、書き込みリクエスト)を待つ(ステップ104)。
DirEntryに対する書き込みリクエストが「閉じる」操作でなければ(ステップ114)(被スマグルファイルDirEntryに対する書き込みリクエストが被スマグルファイルDirEntryに「削除フラグ」を書き込むことによる「削除」操作であることを記憶装置が検出するということを意味する)、記憶装置は、FileExistsFlagを偽にセットし、被スマグルファイルDirEntryポインタを更新し、(被スマグルファイルに属するデータクラスタが存在しなくなるように)リンクリスト中の被スマグルファイルクラスタ番号を除去し(ステップ116)、FAT32からの次の書き込み操作を待つ(ステップ104)。
図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として描かれている。
図7Dは、本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ(D)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7DのフローDは、所定位置にある被スマグルファイルを更新するための手続き経路を描いている。被スマグルファイルDirEntryが更新されつつあるのでなければ(ステップ112)、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの1つに関連しているか否かを調べることによって現在の書き込みリクエストが被スマグルファイルデータクラスタのうちの1つを更新しつつあるかどうかを調べる(ステップ118)。被スマグルファイルデータクラスタのうちの1つが更新されつつあるということを記憶装置が発見したならば、記憶装置は、(図3および4に示されているマップインスマグリングモードまたはマップアウトスマグリングモードを用いて)データクラスタをスマグリングし、FileExistsFlagをセットし(ステップ120)、その後に次の書き込みリクエストを待つ(ステップ104)。シナリオ(B)(図7Bのステップ106)では、FileExistsFlagは、シナリオ(D)(図7Dのステップ120)でセットされるので真として検出され得るということに留意する。
図7Eは、本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ(E)のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図7EのフローEは、被スマグルファイルに付加するための手続き経路を描いている。書き込みリクエストが被スマグルファイルデータクラスタのうちの1つを更新しつつあるのでなければ(ステップ118)、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの1つに関連するか否かを調べることによって、更新されつつあるFATエントリのうちの少なくとも1つがFAT内の被スマグルファイルデータクラスタに関連しているか否かを調べる(ステップ122)。FAT内の被スマグルファイルデータクラスタFATエントリのうちの1つ以上が更新されつつあるのであれば、記憶装置は、リンクリスト中の被スマグルファイルクラスタ番号を新しいクラスタ番号または削除されるクラスタ番号で更新し(ステップ124)、その後、FAT32からの次の書き込みリクエストを待つ(ステップ104)。
結局は、FAT32が被スマグルファイルデータクラスタおよび/またはFAT内のデータクラスタFATエントリを更新した後、FAT32は、前述したように被スマグルファイルDirEntry中のLUTフィールド、および場合によってはファイル長フィールドを更新することによってファイルを閉じなければならない。
被スマグルファイルが既に存在する(すなわち、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))をも数回実行する。記憶装置が何回繰り返して実行するかは、データクラスタ更新の数による。
本発明は、限られた数の実施形態に関して記載してきたが、本発明の多くの変形、改変、および他の応用がなされ得るということが認識されるべきである。

Claims (15)

  1. 計算システムであって、
    (a)ホストシステムであって、
    (i)前記ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、
    (ii)前記ホストシステム上で動作する少なくとも1つのアプリケーションと、を有するホストシステムと、
    (b)記憶装置であって、
    (i)前記記憶装置を制御するコントローラと、
    ( ii)情報を前記記憶装置に格納するための、制限部分および非制限部分を含む記憶エリアと、を有する記憶装置と、
    (c)前記非制限部分のみを介する、前記ファイルシステムによる前記記憶装置へのアクセスを許すための第1のメカニズムと、
    (d)前記少なくとも1つのアプリケーションが前記ファイルシステムおよび前記非制限部分を介して前記制限部分にアクセスすることを可能にするための、前記記憶装置に存在する第2のメカニズムと、
    を備える計算システム。
  2. 請求項1記載の計算システムにおいて、
    前記第2のメカニズムは、前記記憶装置がデータを前記非制限部分から前記制限部分にコピーすることを可能にするように構成される計算システム。
  3. 請求項1記載の計算システムにおいて、
    前記第2のメカニズムは、前記制限部分内のアドレスに向けられたホストシステム読み出しリクエストを前記非制限部分内のアドレスへ経路指定するように前記記憶装置に指示するように動作可能である計算システム。
  4. 請求項1記載の計算システムにおいて、
    前記第2のメカニズムは、前記ホストシステムによるデータアクセスリクエストが前記非制限部分にアドレス指定されているときに前記ホストシステムのアクセスコマンドを前記制限部分内に存在するデータに適用するように動作可能である計算システム。
  5. コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体であって、前記コンピュータ可読コードは、記憶装置を管理するためのものであり、制限記憶部分および非制限記憶部分を有する記憶エリアを含むと共に、前記記憶装置の前記記憶エリアへのそのアクセスが前記非制限部分に限定されるファイルシステムを有するホストシステムに操作可能に結合され、さらに前記ホストシステム上で動作するアプリケーションが前記ファイルシステムおよび前記非制限部分を介して前記制限部分にアクセスすることを可能にするためのプログラムコードを含むコンピュータ可読記憶媒体。
  6. 請求項5記載の記憶媒体において、
    前記アプリケーションによる前記制限部分への前記アクセスは、前記記憶装置にデータを前記非制限部分から前記制限部分へコピーさせることを含むステップによって可能にされる記憶媒体。
  7. 請求項5記載の記憶媒体において、
    前記アプリケーションによる前記制限部分への前記アクセスは、前記制限部分内のアドレスに向けられたホストシステム読み出しリクエストを前記非制限部分内のアドレスへ経路指定することを含むステップによって可能にされる記憶媒体。
  8. 請求項5記載の記憶媒体において、
    前記アプリケーションによる前記制限部分への前記アクセスは、前記ホストシステムが前記非制限部分内のデータアドレスへのアクセスをリクエストするときに前記ホストシステムのアクセスコマンドを前記制限部分に存在するデータに適用することを含むステップによって可能にされる記憶媒体。
  9. ホストシステム上で動作するアプリケーションが非制限部分をも含む記憶装置の制限部分にアクセスするための方法であって、
    (a)前記ホストシステム上で動作するファイルシステムを提供するステップと、
    (b)前記非制限部分のみを介する、前記ファイルシステムによる前記記憶装置へのアクセスを許すステップと、
    (c)前記アプリケーションによって前記ファイルシステムを介して前記記憶装置に送られるデータが前記制限部分に向けられるように意図されているという指示を前記アプリケーションから前記記憶装置に送るステップと、
    (d)前記指示を前記記憶装置において検出するステップと、
    (e)前記指示に従って、前記制限部分および前記非制限部分の両方をアドレス指定することを含む仕方で前記データを前記記憶装置に格納するステップと、
    を含む方法。
  10. 請求項9記載の方法において、
    前記データは前記制限部分に格納され、
    (f)アプリケーションリクエストを受け取ったときに、前記制限部分に存在する前記データを前記アプリケーションによる読み出しのために利用可能にするステップをさらに含む方法。
  11. 請求項9記載の方法において、
    (f)前記記憶装置の無駄エリアを前記ファイルシステムによる使用のために解放するステップをさらに含む方法。
  12. 請求項9記載の方法において、
    前記データを前記記憶装置に格納するステップは、前記データを前記非制限部分から前記制限部分にコピーすることを含む方法。
  13. 請求項9記載の方法において、
    前記データは前記非制限部分に格納され、
    (f)前記制限部分に向けられたホストシステムのアクセスリクエストを前記非制限部分内の前記データの少なくとも1つのアドレスへ経路指定するステップをさらに含む方法。
  14. 請求項9記載の方法において、
    (f)前記非制限部分に向けられたホストシステムのアクセスリクエストを、前記制限部分への制限アクセスリクエストと解釈するステップをさらに含む方法。
  15. ファイルシステムを使用するホストシステムによりアクセスされるデータを格納するための記憶装置であって、
    (a)制限部分および非制限部分を含む記憶エリアであって、前記ファイルシステムを介しての前記ホストシステムによる前記記憶装置へのアクセスは前記非制限部分のみを介して許される記憶エリアと、
    (b)前記ホストシステム上で動作するアプリケーションが前記ファイルシステムおよび前記非制限部分を介して前記制限部分にアクセスすることを可能にするように動作可能なコントローラと、
    を備える記憶装置。
JP2010505004A 2007-05-03 2008-04-27 記憶装置およびデータスマグリングの方法 Expired - Fee Related JP4665065B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US91568807P 2007-05-03 2007-05-03
US11/772,207 US7636825B2 (en) 2007-05-03 2007-06-30 Storage device for data-smuggling
US11/772,211 US7822935B2 (en) 2007-05-03 2007-06-30 Methods for data-smuggling
PCT/IL2008/000552 WO2008135969A1 (en) 2007-05-03 2008-04-27 Storage device and method for data-smuggling

Publications (2)

Publication Number Publication Date
JP2010526364A JP2010526364A (ja) 2010-07-29
JP4665065B2 true JP4665065B2 (ja) 2011-04-06

Family

ID=39940398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010505004A Expired - Fee Related JP4665065B2 (ja) 2007-05-03 2008-04-27 記憶装置およびデータスマグリングの方法

Country Status (4)

Country Link
US (2) US7636825B2 (ja)
JP (1) JP4665065B2 (ja)
KR (1) KR101498014B1 (ja)
TW (1) TWI383296B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055867B2 (en) * 2008-01-11 2011-11-08 International Business Machines Corporation Methods, apparatuses, and computer program products for protecting pre-staged provisioned data in a storage system
JP2010152794A (ja) * 2008-12-26 2010-07-08 Fujitsu Ltd 記憶装置、アクセス制御装置、アクセス制御プログラム、および電子機器
US8510848B1 (en) 2009-02-02 2013-08-13 Motorola Mobility Llc Method and system for managing data in a communication network
US9092597B2 (en) * 2009-12-09 2015-07-28 Sandisk Technologies Inc. Storage device and method for using a virtual file in a public memory area to access a plurality of protected files in a private memory area
US8301694B2 (en) 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
US8301715B2 (en) 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
US9424228B2 (en) 2012-11-01 2016-08-23 Ezchip Technologies Ltd. High performance, scalable multi chip interconnect
JP5963313B2 (ja) * 2013-12-19 2016-08-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、方法、及び、プログラム
US20160048353A1 (en) * 2014-08-13 2016-02-18 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06501324A (ja) * 1990-04-27 1994-02-10 スキャンディック・インターナショナル・プロプライエタリー・リミテッド スマートカード妥当性検証装置および方法
US5991858A (en) * 1995-03-10 1999-11-23 Siemens Aktiengesellschaft Multi-user data processing system with storage protection
JP2000502827A (ja) * 1995-12-28 2000-03-07 ロータス・ディヴェロップメント・コープ コンピュータ・システムの暗号化データファイルへのアクセスを制御するための方法並びに装置
JP2002108718A (ja) * 2000-10-03 2002-04-12 Nippon Telegr & Teleph Corp <Ntt> コンテンツ配送管理システム、コンテンツ配送管理方法、及びコンテンツ配送管理プログラムを記録した記録媒体
JP2002527008A (ja) * 1998-10-07 2002-08-20 インフィネオン テクノロジース アクチエンゲゼルシャフト コピープロテクトシステムおよび同方法
JP2005158011A (ja) * 2003-11-06 2005-06-16 Matsushita Electric Ind Co Ltd 記録再生装置
JP2005242598A (ja) * 2004-02-26 2005-09-08 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータ・プログラム
JP2005339273A (ja) * 2004-05-27 2005-12-08 Canon Inc 電子機器
JP2006201968A (ja) * 2005-01-19 2006-08-03 Yamaha Corp オーディオデータの記録再生装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1254937B (it) 1991-05-06 1995-10-11 Aggiornamento dinamico di memoria non volatile in un sistema informatico
US20030212911A1 (en) * 2002-05-13 2003-11-13 International Business Machines Corporation Secure control of access to data stored on a storage device of a computer system
KR20060060668A (ko) 2003-07-28 2006-06-05 샌디스크 씨큐어 컨텐트 솔루션즈, 인코포레이티드 저장소 디바이스를 제어하는 시스템, 장치 및 방법
US8275969B2 (en) * 2004-08-05 2012-09-25 Sandisk Il Ltd. Storage with persistent user data
EP1836543A1 (en) 2004-12-22 2007-09-26 Telecom Italia S.p.A. Method and system for access control and data protection in digital memories, related digital memory and computer program product therefor
US7669245B2 (en) * 2005-06-08 2010-02-23 Searete, Llc User accessibility to electronic paper
KR20080004532A (ko) * 2005-03-29 2008-01-09 코닌클리케 필립스 일렉트로닉스 엔.브이. 정보매체의 콘텐츠 보호방법 및 장치
KR20080043402A (ko) * 2005-09-08 2008-05-16 샌디스크 코포레이션 미디어 컨텐츠의 보안 저장 및 전달을 위한 이동식 메모리시스템
US20070043667A1 (en) * 2005-09-08 2007-02-22 Bahman Qawami Method for secure storage and delivery of media content

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06501324A (ja) * 1990-04-27 1994-02-10 スキャンディック・インターナショナル・プロプライエタリー・リミテッド スマートカード妥当性検証装置および方法
US5991858A (en) * 1995-03-10 1999-11-23 Siemens Aktiengesellschaft Multi-user data processing system with storage protection
JP2000502827A (ja) * 1995-12-28 2000-03-07 ロータス・ディヴェロップメント・コープ コンピュータ・システムの暗号化データファイルへのアクセスを制御するための方法並びに装置
JP2002527008A (ja) * 1998-10-07 2002-08-20 インフィネオン テクノロジース アクチエンゲゼルシャフト コピープロテクトシステムおよび同方法
JP2002108718A (ja) * 2000-10-03 2002-04-12 Nippon Telegr & Teleph Corp <Ntt> コンテンツ配送管理システム、コンテンツ配送管理方法、及びコンテンツ配送管理プログラムを記録した記録媒体
JP2005158011A (ja) * 2003-11-06 2005-06-16 Matsushita Electric Ind Co Ltd 記録再生装置
JP2005242598A (ja) * 2004-02-26 2005-09-08 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータ・プログラム
JP2005339273A (ja) * 2004-05-27 2005-12-08 Canon Inc 電子機器
JP2006201968A (ja) * 2005-01-19 2006-08-03 Yamaha Corp オーディオデータの記録再生装置

Also Published As

Publication number Publication date
KR101498014B1 (ko) 2015-03-03
TWI383296B (zh) 2013-01-21
US7636825B2 (en) 2009-12-22
US20100023718A1 (en) 2010-01-28
TW200900932A (en) 2009-01-01
US20080276058A1 (en) 2008-11-06
KR20100016174A (ko) 2010-02-12
JP2010526364A (ja) 2010-07-29
US7822935B2 (en) 2010-10-26

Similar Documents

Publication Publication Date Title
JP4665065B2 (ja) 記憶装置およびデータスマグリングの方法
JP5636034B2 (ja) データ利用についてのマウント時間の調停
EP2631916B1 (en) Data deletion method and apparatus
US8055864B2 (en) Efficient hierarchical storage management of a file system with snapshots
US8370835B2 (en) Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US5933846A (en) Rewritable ROM file device having read/write buffer access control via copy of rewritable area
US7953948B1 (en) System and method for data protection on a storage medium
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
US10402313B2 (en) Method and system for accessing a storage system with multiple file systems
JP4884041B2 (ja) 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法
JP6450598B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP5236367B2 (ja) 共用型ジャバjarファイル
US9778860B2 (en) Re-TRIM of free space within VHDX
JP2004178289A (ja) スナップショット取得方法、ディスク装置及びストレージシステム
KR20080097196A (ko) Fat 볼륨 상의 개별적인 파일들은 압축하고, 그 외의 파일들은 비압축 상태로 유지하기 위한 컴퓨터 구현 방법, 시스템 및 컴퓨터 판독 가능 매체
WO2005071522A1 (ja) 高速再起動方法および情報処理装置ならびにプログラム
CN109074308B (zh) 适应性的块转换表(btt)
US20190034336A1 (en) System and method for hardware-independent memory storage
WO2008135969A1 (en) Storage device and method for data-smuggling
US20190179803A1 (en) Apparatus and method for file sharing between applications
JP2000305818A (ja) チップカードのメモリ断片化解消(デフラグ)
KR101058059B1 (ko) 임베디드 파일 시스템의 마운팅 장치 및 그 방법
JP2001005669A (ja) プログラム起動方式

Legal Events

Date Code Title Description
A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20100615

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101110

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20101110

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20101203

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110107

R150 Certificate of patent or registration of utility model

Ref document number: 4665065

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees