次の記述は代表的な実施形態の種々の詳細事項を提供する。しかし、この記述は、特許請求の範囲を限定するように意図されてはいなくて、本発明の種々の原理と、その実施方法とを説明するように意図されている。
非請求コンテンツおよび関連する問題を処理するために、ユーザファイルには他のファイルにまさるストレージ優先権が与えられ、その優先権を保証するためにストレージ使用安全マージンが維持される。「ユーザファイル」とは、記憶装置のユーザが進んで格納したか、あるいはそれを記憶装置に格納することを承認したファイルである。例えば、ユーザが自分の記憶装置にダウンロードする音楽ファイルはユーザファイルと考えられる。ユーザにより格納されるように要求されたかあるいは承認されているので、ユーザファイルは「請求」ファイルと考えられる。
「その他ファイル」は、ここでは「発行者ファイル」および「非請求ファイル」と称される。「発行者ファイル」は、ユーザがそれを要求していなくて、少なくとも暫時ではなくそれに気づいていないのに記憶装置に格納されているファイルである。ユーザは、非請求ファイルを使用することを望まないかも知れない。使用されない非請求ファイルは、ユーザの記憶装置の高価な記憶スペースを消費しがちである。従って、ここで開示される原理に従って、そのようなファイルは、それらを格納してもストレージ使用安全マージンが狭くならない場合に限って、記憶装置に格納されることを許される。ストレージ優先権は、将来のユーザのファイルのために確保される空き記憶スペース(すなわち、ストレージ使用安全マージン)を維持することによってユーザファイルに与えられる。ストレージ使用安全マージンは、必要なときあるいは望ましいときに常にユーザファイルを記憶装置に格納し得ることを保証するために、維持されなければならない。
何らかの理由でストレージ使用安全マージンが所望より狭くなったならば、ストレージ使用安全マージンを回復するために1つ以上の非請求ファイルが記憶装置から除去(すなわち、削除)される。ストレージ使用安全マージンを維持すれば、追加のユーザファイルが記憶装置にダウンロードされる場合に追加のユーザファイルのための記憶スペースが保証される。この目的のために、非請求ファイルは、ストレージファイルシステムの構造において「廃棄可能」とマーキングされ、必要ならば、少なくとも、ストレージ使用安全マージンを維持するために必要な空き記憶スペースを回収するために、後に除去される。
ユーザが種々の廃棄可能ファイルを使用する確度は廃棄可能ファイルごとに異なり得るので、各非請求ファイル(すなわち、各廃棄可能ファイル)に、そのファイルを使用する確率、そのファイルの使用と関連付けられた予想収益、そのファイルのサイズ、そのファイルのタイプ、そのファイルの位置、そのファイルの古さ(age )などの1つ以上の基準に従って廃棄優先レベルが前もって割り当てられる。例えば、廃棄優先レベルは、収益の可能性により決定され得る。他の一例では、ユーザは普通は映画の予告編および広告を見たがらないので、映画の予告編あるいは広告は実際の映画より高い廃棄優先順位を有する。他の1つの例では、ユーザにより使用される可能性が最も高い1つ以上の廃棄可能ファイルには最低の廃棄優先レベルが割り当てられ、そのようなファイルは記憶装置から最も除去されそうもないファイルであることを意味する。換言すれば、廃棄可能ファイルの使用確率が高いほど、そのファイルに割り当てられる廃棄優先レベルのレベルは低い。1つ以上の廃棄可能ファイルが除去されても所望のストレージ使用安全マージンが充分に回復されなければ、所望のストレージ使用安全マージンが回復されるまで、さらなる廃棄可能ファイルが記憶装置から除去される。
簡単に言えば、ファイルシステムなどのデータ構造は、コンピュータファイルを格納し組織する方法を実行する。ファイルシステムは、データの格納、階層組織化、操作、ナビゲーション、アクセス、および検索のために実装される抽象データ型およびメタデータのセットを含む。抽象データ型およびメタデータは、それを通してコンピュータファイル(ここでは「データファイル」、あるいは簡単に「ファイル」とも称される)がアクセスされ、操作されおよび起動され得る「ディレクトリツリー」を形成する。「ディレクトリツリー」は、通例、ルートディレクトリとオプションのサブディレクトリとを含む。ディレクトリツリーは、1つ以上の「ディレクトリファイル」としてファイルシステムに格納される。ファイルシステムに含まれるメタデータおよびディレクトリファイルのセットは、ここでは「ファイルシステム構造」と称される。従って、ファイルシステムは、データファイルと、データファイルにアクセスすること、データファイルを操作すること、更新すること、削除すること、および起動することを容易にするファイルシステム構造とを含む。
ファイルアロケーションテーブル(「FAT」)は、代表的なファイルシステムアーキテクチャである。FATファイルシステムは、DR−DOS、OpenDOS、MS−DOS、Linux、Windows(登録商標)などを含む種々のオペレーティングシステムに用いられる。FAT構造化ファイルシステムは、どの記憶領域が空いているかあるいは割り当てられているか、および各ファイルが記憶装置のどこに格納されているかに関する情報を集中させるテーブルを使用する。テーブルのサイズを制限するために、記憶スペースは、「クラスタ」と称される隣接するセクタのグループ内のファイルに割り当てられる。記憶装置が進化するにつれて、クラスタの最大数は大きくなり、クラスタを特定するために使われるビットの数は増大してきている。FATフォーマットのバージョンは、テーブルのビットの数から導出される。FAT12は12ビットを使用し、FAT16は16ビットを使用し、FAT32は32ビットを使用する。
他の1つのファイルシステムアーキテクチャはニューテクノロジーファイルシステム((「NTFS」)として知られている。現在、NTFSは、後のバージョンのWindows 2000、Windows XP、Windows Server 2003、Windows Server 2008、およびWindows Vistaを含むWindows NTの標準的なファイルシステムである。FAT32およびNTFSは、記憶装置100が備えることのできる代表的なファイルシステムである。
図1は、代表的な記憶装置100を示す。記憶装置100は種々のタイプのファイル(例えば、音楽ファイル、ビデオファイルなど)を格納するための記憶領域110を含み、そのうちのいくつかはユーザファイルであり、他は発行者ファイルであり得る。記憶装置100は、データおよび制御線130を介して記憶領域110を管理するストレージコントローラ120も含む。ストレージコントローラ120は、ホストインターフェイス150を介してホスト装置140とも通信する。ホスト装置140は、専用ハードウェアあるいは汎用コンピューティングプラットフォームであり得る。
記憶領域110は、例えば、NANDフラッシュタイプのものであり得る。ストレージコントローラ120は、例えば「読み出し」、「書き込み」および「消去」操作、ウェアレベリング(損耗平滑化)などを制御することと、ホスト140との通信を制御することとにより、記憶領域110へ/記憶領域110からのデータ転送およびホスト装置140へ/ホスト装置140からのデータ転送の全てを制御する。記憶領域110は、例えば、ユーザファイルおよび発行者のファイルと、許可されたホスト装置だけによって使用されることが許される保護データと、ストレージコントローラ120によって、内部でだけ使用されるセキュリティデータとを含むことができる。ホスト(例えば、ホスト140)は、記憶領域110に直接アクセスすることはできない。すなわち、例えば、ホスト140が記憶装置100からのデータを求めるかあるいは必要とするならば、ホスト140は、それをストレージコントローラ120から要求しなければならない。記憶装置100に格納されているデータファイルへのアクセスを容易にするために、記憶装置100はファイルシステム160を備えている。
記憶領域110は機能的に3つの部分、すなわちユーザ領域170、発行者領域180、および空き記憶スペース190に分けられている。ユーザ領域170は記憶領域110の中の、ユーザファイルが格納される記憶スペースである。発行者領域180は、記憶領域110の中の、発行者ファイルが格納される記憶スペースである。空き記憶スペース190は、記憶領域110の中の空の記憶スペースである。空き記憶スペース190は、ユーザファイルまたは発行者ファイルを収容するために使用され得る。ユーザファイルを空き記憶スペース190に格納すると、そのユーザファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれてユーザ領域170に加えられる。同様に、発行者ファイルを空き記憶スペース190に格納すると、その発行者ファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれて発行者領域180に加えられる。ユーザファイルまたは発行者ファイルが記憶領域110から除去(すなわち、削除)されると、その解放された記憶スペースは空き記憶スペース190に加えられる(戻る)。
空き記憶スペース190のサイズがそれを許すならば、記憶装置100のユーザは、ユーザファイルをホスト140から記憶領域110にダウンロードすることができる。そのダウンロードされたユーザファイルは空き記憶スペース190に格納され、前に説明したように、そのファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれてユーザ領域170に加えられる。前に説明したように、ユーザファイルは他の(例えば、発行者)ファイルにまさる優先権を有し、その優先権を保証するために、所望のストレージ使用安全マージンがセットされ、必要ならば、以下で記載される方法で、回復される。
ホスト140は、空き記憶スペース190の回復を容易にするためのストレージアロケータ144を含む。ストレージアロケータ144は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせであり得る。一般的に、ストレージアロケータ144は、ホスト140に伝送されたファイル(例えば、ファイル142)がユーザファイルであるのか、それとも発行者ファイルであるのかを判定し、それに応じて、その伝送されたファイルをマーキングする(すなわち、非廃棄可能ファイルあるいは廃棄可能ファイルとマーキングする)。
ホスト140に伝送されたファイル(例えば、ファイル142)が、例えばそのファイルがユーザファイルであるので、非廃棄可能であるとストレージアロケータ144が判定すれば、ストレージアロケータ144はそのファイルを記憶領域110に正規の方法で格納する。前に説明したように、記憶領域110の中の、非廃棄可能ファイルを収容する記憶スペースは、ユーザ領域170に加えられるか、あるいはその一部になる。しかし、ホスト140に伝送されたファイルが、例えばそれが発行者ファイルであるので、廃棄可能であるとストレージアロケータ144が判定すれば、ストレージアロケータ144はそのファイルを廃棄可能とマーキングする。或るインプリメンテーションでは、ファイルを廃棄可能とマーキングするために、ストレージアロケータ144は、ファイルシステム160内のファイルシステム構造を、ファイルが廃棄可能ファイルであることを示すようにマーキングするということを理解すべきである。他のインプリメンテーションでは、ファイルを廃棄可能とマーキングするために、ストレージアロケータ144はファイル自体を廃棄可能ファイルとマーキングする。空き記憶スペース190が所望のストレージ使用安全マージンより大きければ、ストレージアロケータ144は、そのマーキングされた廃棄可能ファイルをも空き記憶スペース190に格納し、前に説明したように、空き記憶スペース190の中の廃棄可能ファイルを収容する記憶スペースは空き記憶スペース190から差し引かれて(すなわち、空き記憶スペースが減じられて)発行者領域180に加えられる(この追加は、廃棄可能ファイル182として論理的に示されている)。
前に説明したように、発行者ファイルがユーザにより使用される確度は発行者ファイルごとに異なり得るので、最小の使用確度を有する発行者ファイルは、記憶領域110からの除去についての第1の候補となる。従って、ファイルを非廃棄可能あるいは廃棄可能とマーキングするほか、ストレージアロケータ144は、廃棄可能ファイルが記憶領域110に格納される前に、それと同時に、あるいはその後に、各廃棄可能ファイルに廃棄優先レベルを割り当てる。
ファイルを非廃棄可能または廃棄可能とマーキングすることにより、ストレージアロケータ144により廃棄優先レベルを割り当て、記憶装置100のファイルシステム160(またはそのイメージ)を使用することにより、ストレージアロケータ144は、記憶領域110内のユーザファイルおよび発行者ファイルの数、ならびにそれらのサイズおよび記憶領域110の中での論理位置も「認識する」。この情報(すなわち、ファイルの数、サイズおよび位置)を認識し、特に1つ以上のマーキングされているファイルに基づいて、ストレージアロケータ144は、記憶領域110と、記憶領域110における請求ファイルおよび非請求ファイルの記憶とを管理する。記憶領域110の管理あるいは記憶領域110におけるファイルの記憶の管理は、例えば、廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによるストレージ使用安全マージンの回復、廃棄可能とマーキングされている全てのファイルを除去することによる記憶領域の解放、およびより低い性能の記憶モジュールへのファイルのクラスタの再マッピングを含み得る。記憶領域110またはそれに格納されているファイルの管理は、記憶領域110またはそれに格納されているファイルの他の、追加の、あるいは代わりの態様の管理を含み得る。
ストレージアロケータ144は、各廃棄可能ファイルに割り当てられている廃棄レベルにより、将来のユーザファイルのために初めに確保されていた空き記憶スペースを回復するために(すなわち、所望のストレージ使用安全マージンを回復するために)廃棄可能ファイルが廃棄(すなわち、記憶領域110から削除または除去)され得るかあるいはされるべき順序をも認識する。従って、ユーザが新しいユーザファイルを記憶領域110に格納することを希望しているけれども、そのユーザファイルを収容する充分な空き記憶スペースがなければ(それは、ストレージ使用安全マージンが所望より狭いことを意味する)、ストレージアロケータ144は、所望のストレージ使用安全マージンが充分に回復されるまで、より大きな空き記憶スペースを取り戻すために(すなわち、空き記憶スペース190を拡張するために)廃棄可能ファイルを一つずつ反復して削除してゆくために、廃棄可能ファイルに割り当てられている廃棄優先レベルを使用する。前に説明したように、充分に回復されたストレージ使用安全マージンは、将来のユーザファイルのために充分な空き記憶スペースが確保されることを高い確率で保証する。格納されている廃棄可能ファイルをユーザがいつか使用することを望むかも知れないということが考慮され、従って廃棄可能ファイルは、そのファイルを収容している記憶スペースが新しいユーザファイルのために必要とされる場合に限って記憶装置から除去されるので、廃棄可能ファイルは、新しいユーザファイルを格納する要求を受け取ったことに応じて記憶装置100から除去されるかあるいは削除されるに過ぎない。ストレージアロケータ144は、ホスト140に埋め込まれるかあるいは組み込まれてよく、あるいはホスト140の外に(破線のボックス144’として示されている)および記憶装置100の外に存在してもよい。
ストレージアロケータ144は、記憶装置100のファイルシステムあるいは記憶装置100と関連付けられているファイルシステムの代表的なイメージを有する。ストレージアロケータ144は、ファイルを非廃棄可能あるいは廃棄可能とマーキングするため、かつ各廃棄可能ファイルに廃棄レベルを割り当てるために、記憶装置のファイルシステムイメージを使用する。一例では、ファイルシステムはFATを含み、この場合にはマーキングは、ファイルと関連付けられているFATエントリの未使用部分において1つ以上の未使用ビットをセットすることによって行われる。様々なファイルシステムが様々な構造を有するので、図6〜1と関連して以下で詳細に説明および記述するように、ファイルのマーキング(すなわち、非廃棄可能あるいは廃棄可能としての)および廃棄レベルの割り当ては、使用されるファイルシステム構造に適合させられる。
図2は、他の実施形態に従う携帯可能な記憶装置200のブロック図である。ストレージコントローラ220はストレージコントローラ120と同様に機能し、ストレージアロケータ244はストレージアロケータ144と同様に機能する。ストレージアロケータ244はハードウェア、ファームウェア、ソフトウェアあるいはそれらの任意の組み合わせであり得る。ストレージアロケータ244は内部でストレージコントローラ220と協力する。ファイルを記憶領域210に格納する、そのファイルが廃棄可能ファイルであるか否かのインジケーションを含む、ストレージ要求をストレージコントローラ220がホスト240から受け取るたびに、ストレージコントローラ220は、そのストレージ要求を、さらにそのファイルが廃棄可能か否かを、ストレージアロケータ244に知らせる。ストレージアロケータ244は、その後、記憶装置200と関連付けられているファイルシステムの構造においてそのファイルを非廃棄可能または廃棄可能とマーキングする。通例、ホスト240上で実行するアプリケーションは、ファイルを廃棄可能ファイルであると判定し、そのファイルが廃棄可能ファイルであることを示すフラグまたは他のインジケーションをストレージコントローラ220に送る。ホスト240上で実行するアプリケーションは、そのフラグまたは他のインジケーションを、ファイルを記憶装置に格納することを要求するためのストレージプロトコルの一部として送る。そのようなストレージプロトコルの例は、POSIXファイルシステム機能あるいはjava.ioクラスツリーの使用を含む。
新しいファイルが廃棄可能であるとストレージアロケータ244が判定すると、ストレージアロケータ244は、その新しいファイルに、ファイルの使用確率に応じて廃棄優先レベルを割り当てる。その後、ストレージアロケータ244は、空き記憶スペース290の現在のサイズを評価し、その新しいファイルのための空間を作るために1つ以上の廃棄可能ファイルが記憶領域210から除去(すなわち、削除)されるべきかを決定する。1つまたは複数のファイルが記憶装置から除去されるべきであれば、ストレージアロケータ244は、どのファイルが除去についての現在の候補ファイルであるかを決定する。その後、ストレージアロケータ244は、記憶領域210から除去されるべき廃棄可能ファイルをストレージコントローラ220に知らせ、この知らせに応じて、ストレージコントローラ220は、ストレージアロケータ244により示された1つまたは複数の廃棄可能ファイルを除去する。携帯可能な記憶装置220の或る構成では、ストレージアロケータ244は機能的にストレージコントローラ220と記憶領域210との間に配置され得る。ストレージアロケータ244が機能的にストレージコントローラ220と記憶領域210との間に配置される構成では、ストレージアロケータ244または記憶領域210はストレージコントローラ220の機能のいくつかを引き受けなければならない。そのような構成では記憶領域210は、フラッシュNANDプロトコルより高いレベルで通信するメモリユニットから構成される。
図3は、一実施形態に従うストレージアロケータ300のブロック図である。ストレージアロケータ300は、メモリユニット310、プロセッサ320、およびインターフェイス330を含む。メモリユニット310は、記憶装置(例えば、図2の記憶装置200)と関連付けられているファイルシステム構造またはファイルシステム構造のイメージを収容することができる。プロセッサ320は、記憶装置と関連付けられているファイルシステムを管理する。インターフェイス330は、図1に示されているようにホストと、さらに記憶装置のストレージコントローラと、あるいは図2に示されているように記憶装置のストレージコントローラだけと協力するように適合させられ得る。
プロセッサ320は、記憶装置の記憶領域にファイルを格納する要求をインターフェイス330を介して受け取り、ストレージアロケータ300と協同する記憶装置と関連付けられているファイルシステムの構造においてファイルを廃棄可能または非廃棄可能とマーキングするように構成されるかあるいは適合させられる。インターフェイス330が図2のストレージコントローラ220に機能的に付属させられているならば(従って、例えば、ファイルレベルのコマンドではなくてSCSIコマンドまたはラップされたUSB/MSCコマンドを受け取るならば)、受け取られた要求はファイルレベルより遥かに低いレベルにある。すなわち、受け取られた要求は、ホストにより適切に解釈されるとファイルに対応することになる論理ブロックアドレスにセクタを格納する要求である。ストレージコントローラ220がNVMHCIプロトコル、またはNFSもしくは類似のプロトコルなどのネットワーキングファイルシステムプロトコルをサポートするならば、ストレージコントローラ220はファイルレベルの要求を受け取ることができる。従って、ストレージコントローラ220などのストレージコントローラとインターフェイス330などのインターフェイスとの間の通信は、NVMHCIあるいはNVMHCIのようなインプリメンテーションに限定されない。通信インターフェイス330は、図3に示されているように、ストレージアロケータ300に不可欠のものであり得る。
プロセッサ320は、マーキングされたファイルを記憶装置に送るようにさらに構成されるかあるいは適合させられ、ファイルを廃棄可能とマーキングすることは、そのファイルに廃棄優先レベルを割り当てることを含む。記憶装置により使用されるファイルシステムがFATベースであるならば、プロセッサ320は、マーキングされたファイルに廃棄優先レベルを、そのマーキングされたファイルに対応するFAT内のm個の最上(すなわち、最上位)のビット(例えば、m=4)に、対応する値をセットすることによって、割り当てる。FATエントリ内の最上位ビットにセットされるその対応する値、あるいはNTFSディレクトリのエントリにセットされる値、もしくはそれは、ファイルの属性に関連付けられ得る。「属性」は、FATテーブルまたはNTFSテーブルのヘッダの中の、テーブルに格納されているコンテンツのタイプに関係する情報を包含するメタデータタグあるいは何らかのデータ構造を意味する。「広告」、「プレミアムコンテンツ」、および「販売促進(無料)コンテンツ」は、FATテーブルあるいはNTFSテーブルに格納され得るコンテンツの代表的なタイプである。廃棄レベルをセットするための代わりの基準は、例えば、最後にアクセスされたファイル、ファイルのサイズ、ファイルのタイプなどである。
ファイルをマーキングするために専用されるFAT32エントリの最上位ビットの数mは4または4未満であり得る。なぜならば、これらのビットが使用されていないからである。さらに、より多くのビットが使用されれば、より多くの廃棄優先レベルが使用され得る。例えば、3ビット(すなわち、m=3)を使用すれば8(23 =8)個の廃棄優先レベルが提供され、4ビット(すなわち、m=4)を使用すれば16(24 =16)個の廃棄優先レベルが提供される(すなわち、廃棄優先レベル「0」を含み、これは非廃棄可能ファイルに割り当てられる)。換言すれば、プロセッサ320は、m個の最上位ビットの値を、マーキングされるファイルが非廃棄可能であれば0にセットし、マーキングされるファイルが廃棄可能であれば1と2m −1との間の値にセットする。廃棄優先レベルは、マーキングされているファイルが記憶装置から廃棄され得るかあるいは廃棄されるべき優先順位を示す。例えば、インプリメンテーションによっては、値「1」は最低の優先順位あるいは最高の優先順位で廃棄可能であるファイルを示すことができ、値「2m −1」は最高の優先順位あるいは最低の優先順位で廃棄可能であるファイルをそれぞれ示すことができる。
プロセッサ320は、非請求ファイルが記憶装置のユーザによって使用されるであろう確度あるいは確率と関連して前に説明したように、マーキングされるファイルに、そのファイルの予想される使用に応じて、廃棄優先レベルを割り当てることができる。プロセッサ320は、マーキングされているファイルの廃棄優先レベルを、新しいファイルを記憶装置に格納する各要求を用いて、あるいはその各要求を受け取ったことに応答して、更新することができる。プロセッサ320は、所与のマーキングされているファイルの廃棄優先レベルを、記憶装置にファイルを格納する1つ以上の新しい要求とは無関係に、更新することができる。例えば、以前は高い優先順位のものであったファイルは、一定時間間隔後にその優先順位を下げられることができる。プロセッサ320は、記憶装置に格納されているファイルを、そのファイルが所定の廃棄しきい値と等しいかまたはそれより大きい廃棄優先レベルと関連付けられているならば、削除する。プロセッサ320は、ファイル書き込みまたは付加の数に基づいて、あるいは記憶装置上の空き記憶スペースの予想される使用または新しい発行者ファイルの可用性に依存して、廃棄しきい値をセット(リセット)することができる。
メモリユニット310は、記憶装置に格納されているファイルにプロセッサ320が割り当てている廃棄優先レベルを包含する割り当てテーブル340を収容することができる。さらに、割り当てテーブル340は、ファイルの識別子と、ファイルをファイルに割り当てられている廃棄優先レベルと関連付ける情報とを収容することができる。割り当てテーブル340は、さらに廃棄しきい値を収容することができる。割り当てテーブル340に収容されている情報により、プロセッサ320は所望のストレージ使用安全マージンを回復するためにどの1つまたは複数の廃棄可能ファイルを記憶装置から除去し得るかを特定することができる。
新しいファイルを記憶装置に格納する要求を受け取ったことに応答して、プロセッサ320は記憶装置上の空き記憶スペース(f)のサイズを評価し、記憶装置上の空き記憶スペースの評価されたサイズが所定のサイズより大きければ新しいファイルを記憶装置に格納するが、それが所定のサイズより大きくなければ、プロセッサ320は記憶装置内の削除され得る1つ以上の廃棄可能ファイルを探し、そのような1つまたは複数のファイルを発見すると、プロセッサ320は、拡張された空き記憶スペースの総サイズがその所定のサイズに等しいかまたはそれより大きくなるように現在の空き記憶スペース(f)を拡張するためにその1つまたは複数のファイルを削除する。その1つまたは複数の廃棄可能ファイルは、廃棄可能ファイルと関連付けられている廃棄優先レベルが所定の廃棄しきい値(例えば1から15の間、例えば15)に等しいかまたはそれより大きければ、記憶装置から削除され得る。
空き記憶スペースが充分に拡張された後、プロセッサ320は、その拡張された空き記憶スペースに新しいファイルが格納されることを許可する。「空き記憶スペースが充分に拡張される」とは、所望のストレージ使用安全マージンを狭めることなく総空き記憶スペースが新しいファイルを収容できるようになるまで、あるいは同等のことであるが、拡張された空き記憶スペースの総サイズが所定のサイズに等しくなるかまたはそれより大きくなるまで、もしくは全ての廃棄可能ファイルが除去されるまで、占拠されている記憶スペースを1つずつ解放することによって空き記憶スペースを広げることを意味する。
プロセッサ320は、標準的ないつでも買えるシステムオンチップ(「SoC」)デバイス、またはシステムインパッケージ(「SiP」)デバイス、あるいは実行時に本願明細書に記載されているステップ、操作および評価を行う専用ソフトウェアを有する汎用処理装置であり得る。代わりに、プロセッサ320は、本願明細書に記載されているステップ、操作および評価をハードウェアを用いることによって実行する特定用途向け集積回路(「ASIC」)であり得る。
図4は、一実施形態に従う廃棄可能ファイルを格納する方法である。図4は、図1と関連して記述される。ステップ410で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ420でストレージアロケータ144はファイルを「廃棄可能」または「非廃棄可能」とマーキングし、空き記憶スペース190が充分に大きければ、ステップ430で、そのマーキングされたファイルを記憶装置100のストレージコントローラ120に送る(すなわち、記憶領域110に格納するため)。ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。ステップ440で、ストレージアロケータ144は、そのマーキングされたファイルに基づいて、さらに、任意的に、既にマーキングされている1つ以上のファイルに基づいて、記憶領域110(ストレージコントローラ120との通信を通して)あるいは記憶領域110に格納されているファイルを管理する。
図5は、一実施形態に従う記憶装置における廃棄可能ファイルの記憶を管理する方法である。図5は、図1と関連して記述される。新しいファイルは、記憶装置100に格納される候補である。記憶装置100のファイルシステム160の現在のイメージを認識して、ストレージアロケータ144は、ステップ510で、現在のサイズがfである空き記憶スペース190がその新しいファイル(すなわち、格納されそうな候補であるファイル)を収容できるかを調べるために空き記憶スペース190の現在のサイズ「f」を評価する。一般的に、ストレージアロケータ144が新しいファイルを処理する方法は、その新しいファイルがユーザファイルであるのか発行者ファイルであるのかによる。従って、ストレージアロケータ144は、まず、新しいファイルがユーザファイルであるのか発行者ファイルであるのかを判定する。
新しいファイルがユーザファイルである場合
ステップ520で、ストレージアロケータ144は、空き記憶スペース190が新しいユーザファイルを収容できるかを調べる。空き記憶スペース190が新しいユーザファイルを収容できるならば(ステップ520で「Y」として示されている)、ストレージアロケータ144は、ステップ560で、その新しいユーザファイルを格納することにより所望のストレージ使用安全マージンが狭められるか否かに関わらず新しいユーザファイルを空き記憶スペース190に格納する。ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に所望のストレージ使用安全マージンがより狭くなるとしても(すなわち、所望のストレージ使用安全マージンと比べて)、ストレージアロケータ144は、その新しいユーザファイルの格納に関してそれ以上の処置をとらない。
しかし、ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に所望のストレージ使用安全マージンがより狭くなるならば、ステップ550は、所望のストレージ使用安全マージンを維持するために、どの格納されている廃棄可能ファイルが最初に削除されるべきか、どの廃棄可能ファイルが2番目に削除されるべきかなどをストレージアロケータ144が判定する追加のステップを含む。ストレージアロケータ144は、格納されている廃棄可能ファイルにストレージアロケータ144が割り当てた廃棄レベルに基づいて、どの廃棄可能ファイルが最初に削除されるべきか、どれが2番目に削除されるべきかなどを判定する。
空き記憶スペース190が新しいユーザファイルを収容できないとストレージアロケータ144がステップ520で判定すると(ステップ520で「N」として示されている)ストレージアロケータ144は、ステップ530で、空き記憶スペース190と、廃棄可能ファイルにより占拠されている記憶スペースとが結合されるとその新しいユーザファイルを格納するために充分であるかを判定する。その結合された記憶スペースが不十分であるならば(ステップ530で「N」として示されている)、どれだけ多くの廃棄可能ファイルが削除されても、その新しいユーザファイルは、そのサイズがより大きいために「非ユーザ」記憶領域に格納され得ないということを意味する。その結合された記憶スペースが充分であるならば(ステップ530で「Y」として示されている)、ストレージアロケータ144は、その新しいユーザファイルのために充分な記憶スペースを解放するために、格納されている廃棄可能ファイルのうちのどの廃棄可能ファイルが削除され得るかをステップ540で調べる。前に説明したように、ストレージアロケータ144は記憶装置のファイルシステムにおいてファイルを非廃棄可能または廃棄可能とマーキングするので、ストレージアロケータ144は、記憶装置100のファイルシステムを用いることによってこれらの廃棄可能ファイルを探す。さらに、マーキングされているファイルにストレージアロケータ144により割り当てられる廃棄レベルも、各廃棄レベルが対応するマーキングされたファイルと関連付けられるように、記憶装置のファイルシステムに埋め込まれる。
最初に廃棄されるべき廃棄可能ファイル(「DF」)(このファイルは、以降「DF1」と称される)を発見すると、ストレージアロケータ144は、その記憶スペース(この記憶スペースは、以降「SP1」と称される)を記憶スペース190に加えるためあるいは戻すために、ファイルDF1を削除する。
その後、ステップ550でストレージアロケータ144は、拡張された空き記憶スペース190(すなわち、空き記憶スペース190+最後に戻された記憶スペース、すなわちf+SP1)がその新しいユーザファイルを収容できるかを調べる。拡張された空き記憶スペース190(すなわち、f+SP1)が依然としてその新しいユーザファイルを収容できなければ(ステップ550で「N」として示されている)、ストレージアロケータ144は、さらなる記憶スペースを空き記憶スペース190に戻すために(すなわち、削除されるべき次の廃棄可能ファイルを見つけて削除することにより)ステップ550を反復的に繰り返す(反復は555で示されている)。
2番目に高い廃棄優先順位を有する次の廃棄可能ファイルを見つけると(次の廃棄可能ファイルは、以降「DF2」と称される)、ストレージアロケータ144は、さらなる記憶スペース(このさらなる記憶スペースは、以降「SP2」と称される)を解放して空き記憶スペース190に加えるためにファイルDF2を削除する。その後、ステップ550で、ストレージアロケータ144は、拡張された空き記憶スペース190(すなわち、空き記憶スペース190+2つの最後に解放された記憶スペース、すなわちf+SP1+SP2)がその新しいファイルを収容できるかを再び調べる。その拡張された空き記憶スペース190(すなわち、f+SP1+SP2)が依然としてその新しいファイルを収容できなければ(ステップ540で「N」として示されている)、ストレージアロケータ144は、削除されるべき次の廃棄可能ファイルを見つけるためにステップ540をもう一度繰り返す。ストレージアロケータ144は、累積された空き記憶スペース190がその新しいユーザファイルを収容できるようになるまで(ステップ550で「Y」として示されている)ステップ540および550を反復する。その後、ステップ560で、ストレージアロケータ144は、その新しいユーザファイルを記憶領域110に格納する。
前述したように、ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に実際のストレージ使用安全マージンが所望のストレージ使用安全マージンより狭くなるならば、ステップ560は、所望のストレージ使用安全マージンを回復するためにどの格納されている廃棄可能ファイルが最初に削除されるべきか、どの廃棄可能ファイルが2番目に削除されるべきかなどをストレージアロケータ144が判定する追加のステップを含むことができる。
新しいファイルが発行者ファイルである場合
新しいファイルが発行者ファイルであるならば、ストレージアロケータ144は、空き記憶スペース190が所望のストレージ使用安全マージンを狭めることなく新しい発行者ファイルを収容できる場合に限って、その新しい発行者ファイルを(ステップ560で)記憶領域110に格納する。すなわち、新しい発行者ファイルを格納すれば所望のストレージ使用安全マージンを狭める結果となるのであれば、ストレージアロケータ144はその新しい発行者ファイルを記憶領域110に格納しないと決定することができる。そのような場合、ストレージアロケータ144は、そのファイルに関しての処置を控え、その新しい発行者ファイルのための記憶スペースを解放するために記憶装置からファイルを削除しなくてもよい。代わりに、ストレージアロケータ144は、より低い廃棄優先順位を有する廃棄可能ファイルのための記憶スペースを解放するために1つ以上のより高い優先順位の廃棄可能ファイルをステップ540で削除することができる。前に述べたように、ファイルは記憶装置100のファイルシステムにおいてマーキングされ、廃棄レベルは記憶装置100のファイルシステムに埋め込まれ、ファイルがマーキングされ、廃棄レベルがファイルシステムに埋め込まれる方法は、その使用されるファイルシステムに依存し、あるいはその使用されるファイルシステムに適合させられ得る。
図6は、一実施形態に従うFAT32構造化ファイルシステムにおいて非請求ファイルをマーキングする方法である。FAT32構造化ファイルシステムはクラスタを使用する。FAT32構造化ファイルシステムと関連して前に記載したように、FAT32クラスタを特定するために使用されるビットの数は32である。図6は、図1と関連して記述される。
ステップ610で、FAT32の各クラスタの32ビットのうちのm個の最上位ビット(ここで、m≦4)が、状況に応じてファイルを非廃棄可能または廃棄可能とマーキングするために、および各廃棄可能ファイルに対応する廃棄レベルを保持するために割り当てられ、あるいは専用される。ファイルへの廃棄レベルの割り当ては、対応する値を、そのマーキングされたファイルに対応する割り当てられたmビットにセットすることにより行われる。
ステップ620で、ストレージアロケータ144は、記憶装置100のユーザがその非請求ファイルを使用する確度のレベルを評価する。そのファイルを使用する確度の評価は、委託ファイルの技術分野の当業者に知られている種々の方法で実行され得る。例えば、そのファイルを使用する確度の評価は、その記憶装置を使用する人の位置をモニタすること、および/またはモニタされるユーザの以前の経験および好みに基づくことができる。そのファイルを使用する確度の評価は、例えば、そのFATテーブルまたはNTFSテーブル内に格納されているコンテンツのタイプ(例えば、「広告コンテンツ」、「プレミアムコンテンツ」、「販売促進(無料)コンテンツ」など)に基づいてもよい。ストレージアロケータ144は、そのファイルが使用される確度を評価するために代わりのあるいは追加の基準を使用することができる。例えば、最後にアクセスされたファイル、ファイルのサイズ、ファイルのタイプなどであり得るか、あるいはそれらと関連付けられ得る、ファイルの属性または特徴を使用することができる。
ユーザがその非請求ファイルを使用する確度のレベルをストレージアロケータ144が評価した後、ストレージアロケータ144は、ステップ630で、非請求ファイルの使用の評価された確度レベルに対応する廃棄優先レベルを割り当てる。その非請求ファイルが記憶装置100のユーザにより使用される確度が高ければ高いほど、廃棄レベルは低くなる。
mが4ビットに等しければ、これは、廃棄スケールは1(すなわち、0001)から15(すなわち、1111)までの15個の廃棄レベルを提供する。すなわち、廃棄レベル0は全ての非廃棄可能ファイルに割り当てられ、廃棄レベル1は最低の廃棄優先順位を有する廃棄可能ファイルに割り当てられ、廃棄レベル15は最高の廃棄優先順位を有する廃棄可能ファイルに割り当てられる。ストレージアロケータ144が非請求ファイルに対応する廃棄レベルを割り当てた後、ストレージアロケータ144は、ステップ640で、その非請求ファイルと関連付けられているクラスタの4個の最上位ビットに1と15との間の対応する値をセットする。その非請求ファイルが2つ以上のクラスタと関連付けられているならば、各クラスタの4個の最上位ビットが同じ値にセットされる。
ステップ650で、その非請求ファイルは評価される必要のある最後のファイルであるか否かが調べられる。その非請求ファイルが評価される必要のある最後のファイルでなければ(ステップ650で「N」として示されている)、前に記載した方法で他のファイルが評価される。その非請求ファイルが評価される必要のある最後のファイルであるならば(ステップ650で「Y」として示されている)、その非請求ファイルは、その値がステップ640でセットされた各々のためのm個のビットと共に記憶装置に送られる。
図7は、FAT32テーブルと関連付けられている代表的なディレクトリテーブル700である。ディレクトリテーブル700は説明のために使用される部分的テーブルであるので、テーブル700はFATディレクトリエントリの全てのフィールドを示してはいない。ディレクトリ領域700は、ファイル名、ファイルのサイズ、および関連する記憶スペースのどこから各ファイルが始まるかなど、関連するファイルシステムに格納されているファイルの細目を収容する。ファイルの細目は、次のフィールドに収容されている。フィールド710は、関連するファイルシステムに格納されているファイルのディスクオペレーティングシステム(「DOS」)ファイル名を収容し、フィールド720はファイルの拡張子を収容し、フィールド730はファイルの種々の属性を収容し、フィールド740はファイルの第1のクラスタ番号(「FCN」)の上位16ビットワードを収容し、フィールド750はファイルの第1のクラスタ番号(「FCN」)の下位部分を収容し、フィールド760はファイルのサイズを収容する。各FCN番号は、ファイルが見出され得る第1の論理クラスタを示す。
ディレクトリ領域700の第1のエントリは、「REALFILE」(770のところに示されている)と称される代表的なファイルについての情報を収容する。REALFILE770はファイル拡張子「DAT」を有し、そのFCNは「0000 0002」であり(755のところに示されている)、そのサイズは「0000 24E4」である。テーブル700内の数字は十六進値で示されている。標準の一部として、属性値「00」(780のところに示されている)および「20」(図7には示されていない)は「レギュラー」ファイルを指し、属性値「02」は、ファイルシステムにおいて隠されているファイルを指す。ファイル名「\xE5Consign」は、削除されたファイルを示し、ここで「\xE5」は、そのファイル名の第1のバイトの値が16進法のE5であることを意味する。例を挙げると、FCN番号0000 0002(755のところに示されている)は、ファイルREALFILEの第1のクラスタを示す。
図8は、一実施形態に従う代表的な部分的FAT32テーブル800である。FAT32テーブル800はダブルワード(「DWORD」)アレイとして示され、値は十六進値である。参照番号810はFAT32テーブル800を収容しているデバイスのタイプを示し、ここで「F8」はハードディスクを指す。FAT32テーブル800は、クラスタ#1(820のところに示されている)、クラスタ#2(825のところに示されている)・・・クラスタ#23(830のところに示されている)と称される23個のクラスタを含む。図8は、図7と関連して記述される。FAT32テーブル800内のクラスタはファイルの第1のクラスタであることができ、あるいはファイルの次のリンクされているクラスタを指すことができ、あるいはファイルの終わり(「EOF」)インジケーションであることができる。
ディレクトリ領域700を再び参照すると、ファイルREALFILE(770のところに示されている)の第1のFCNは「0000 0002」(755のところに示されている)であり、これは図8のテーブル800のクラスタ#2を指す。図8に示されているように、クラスタ#2の値(すなわち、値「0000 0003」)は(840のところに示されている)クラスタ#3を指し、これは次のファイルのクラスタである。同様に、クラスタ#3の値(すなわち、「0000 0004」)はクラスタ#4を指し、これは次のファイルのクラスタである。クラスタ#4は値「0FFF FFFF」を有し(「F」は、十進値「15」を表す十六進数字である)、ここで「FFF FFFF」(850のところに示されている)はファイルのEOFインジケーションを示し、ゼロ値(860のところに示されている)は廃棄レベル0を示す。従って、ファイルREALFILEは3つのクラスタ(すなわち、クラスタ#2、クラスタ#3、およびクラスタ#4)と関連付けられている。
前に説明したように、廃棄レベル0は非廃棄可能ファイルに割り当てられる。特定のファイルの各クラスタの最上位十六進数字は、そのファイルに割り当てられた同じ廃棄優先レベルにセットされるということに留意すべきである。例えば、ファイルREALFILEには廃棄レベル「0」が割り当てられ、従って、クラスタ#2、#3、および#4の最上位十六進数字の各々はその値(すなわち、値「0」、これらの「0」値にはアンダーラインが付けられている)を有する。他の1つの例では、そのFCNが(図7に示されているように)「0000 0005」であるファイル「E5Consign」には廃棄優先レベル「1」が割り当てられている。従って、そのファイルに属するクラスタ#5〜12の各々の最上位十六進数字は値「1」を有する(例えば、870のところに示されているように)。換言すれば、本願明細書における開示では特定の廃棄可能ファイルと関連付けられているクラスタの最上位十六進数字、あるいは同等に最上位4ビットは、その特定のファイルに割り当てられている廃棄優先レベルに対応する同じ値にセットされる。前に説明したように、廃棄優先レベルを示すために使われる最上位ビットの数mは4と異なっていてもよい(すなわち、m≦4)。
図9は、一実施形態に従う代表的な部分的NTFSテーブル900である。NTFSテーブル900は、ファイル名、ファイルのサイズなどのファイルの細目を収容する。NTFSテーブル900は、「通常の」データフローに従って変化するファイルのための「レギュラー」データ(例えば、データ920)を収容するデータフィールド910を含む。本願明細書における開示では、NTFSテーブル900は、各々の評価されたファイルについての廃棄情報(例えば、廃棄情報930)を収容するための「廃棄情報」フィールド915をも含む。廃棄情報フィールド915は、廃棄優先レベル以外の情報も含むことができる。例えば、廃棄情報フィールド915は、そのファイルを供給したサーバと、その後にファイルが廃棄されなければならない満期時とに関する情報を含むことができる。FATベースのファイルシステムとは違って、NTFSベースのファイルシステムでは廃棄可能ファイルに割り当てられる廃棄値は、1セットのビットにより規定される最大数に限定されない。これは、廃棄値の範囲が自由に選択され得ることを意味する。例えば、廃棄値は1から25までの範囲にわたり得る。NTFSは、代表的な非FATファイルシステムである。一般的に、対応する廃棄値は、マーキングされたファイルに対応する非FATベースのファイルシステムのエントリ内のデータフィールドにセットされ得る。
図10は、一実施形態に従う記憶装置のファイルシステム1000の論理配置である。ストレージアロケータ(例えば、図1のストレージアロケータ144)は、自分と協同する記憶装置のファイルシステム1000またはファイルシステム1000のイメージを保持し得るか、あるいはストレージアロケータはファイルシステム1000へのアクセスを持ち得る。
ファイルシステム1000は、ブートセクション1010と、ファイルシステム1000と関連付けられているFAT1020と、ディレクトリテーブル1030と、ファイル領域1040と、廃棄可能ファイル領域1050とを含む。FAT1020は、廃棄可能ファイルの廃棄優先レベルを包含する廃棄可能ファイル割り当て領域1025を含む。ディレクトリテーブル1030は、記憶装置に格納されている全てのファイル(すなわち、廃棄可能ファイルおよび/または非廃棄可能ファイル)にアクセスするためのアクセス情報を含む。ファイル領域1040は、非廃棄可能ファイルを包含する。インデックスおよびデータベース領域1045は、廃棄可能ファイルのためのインデックスと、さらに、廃棄可能ファイルに関連付けられているメタデータとを収容する。インデックスおよびデータベース領域1045に収容されているインデックスおよびメタデータは、廃棄レベルを計算するために使用されるけれども、実際の廃棄プロセス中には必要とされない。廃棄可能ファイル領域1050は、廃棄可能ファイルを収容する。
図11は、本願明細書における開示に従うファイル管理方法を示す。図11は、図1と関連して記述される。時刻T0において2つのユーザファイル(すなわち、ファイル「F1」および「F2」)が初めに記憶領域110に格納されていると仮定される。ファイル「F1」および「F2」はユーザファイルなので、それらはユーザ領域170に格納され、ストレージアロケータ144によってそれらに割り当てられている廃棄レベルはゼロである。記憶領域110の総記憶容量はT(1110のところに示されている)であり、ファイルF1およびF2は記憶装置100に格納されているので、残りの空き記憶スペース190のサイズ(図1を参照)はf(1120のところに示されている)である。発行者が3つの非請求ファイルを記憶領域110に格納することを望むと仮定される。前に記述したように、発行者のその3つの非請求ファイルを記憶領域110に格納すると、将来のユーザのファイルのために確保されている所望のストレージ使用安全マージン(1130のところに示されている)が狭くなるかどうかを判定するために、ストレージアロケータ144は記憶装置100内の空き記憶スペース190のサイズ(すなわち、1120のところのf)を評価する。発行者の3つの非請求ファイルを格納するとストレージ使用安全マージン1130(すなわち、所望のストレージ使用安全マージン)が狭くなるならば、ストレージアロケータ144はそれらのファイルを格納するのを差し控える。
この例では、ストレージアロケータ144は、ストレージ使用安全マージン1130を減少させることなくその発行者の3つの非請求ファイルが記憶領域110に格納され得ると判定する。従って、時点T1で、ストレージアロケータ144は、ストレージコントローラ120がその発行者の3つの非請求ファイルを記憶領域110に格納することを許可する。その3つの発行者の非請求ファイルは「P1」、「P2」、および「P3」と称されている。ストレージアロケータ144は、さらにファイルP1、P2、およびP3が記憶装置100のユーザにより使用される確率を判定し、対応する廃棄レベルをそれらのファイルの各々に割り当てる。ストレージアロケータ144は、その後、ファイルに割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。
時点T2で、記憶装置100のユーザは、もう2つのファイル(すなわち、ファイル「F3」および「F4」)を記憶領域110に格納することを望む。ストレージアロケータ144は、その追加のファイル(すなわち、ファイルF3およびF4)を格納するのに充分な記憶スペースが記憶領域110にあるかを判定するために記憶装置100内の空き記憶スペース190のサイズ(すなわち、1120のところのf)を再び評価する。この例では、ストレージアロケータ144は、現在空いている記憶スペースはファイルF3およびF4を収容できると判定する。従って、時点T2で、ストレージアロケータ144は、ストレージコントローラ120がファイルF3およびF4を記憶領域110に格納することを許可する。
ファイルF3およびF4はユーザファイルであるため、ユーザがファイルF3およびF4を、使用するとしても、何回使用するかとは関係なく、ユーザファイルは発行者ファイルより高い記憶優先順位を有するので、ファイルF3およびF4が記憶装置100のユーザにより使用される確率は重要ではない。従って、ストレージアロケータ144は、ファイルF3およびF4に廃棄レベル「0」を割り当て、その割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。
時点T3で、記憶装置100のユーザは、記憶領域110に他の1つのファイル(すなわち、ファイル「F5」)を格納することを望む。ストレージアロケータ144は、その追加のファイル(すなわち、ファイルF5)を格納するのに充分な記憶スペースが記憶領域110にあるかを判定するために記憶装置100内の空き記憶スペース190のサイズ(すなわち、1120のところのf)を再び評価する。
この例では、ストレージアロケータ144は、現在空いている記憶スペースがファイルF5を収容できると判定する。従って、時点T3で、ストレージアロケータ144はストレージコントローラ120がファイルF5を記憶領域110に格納することを許可する。図11に示されているように、ユーザファイルF5を格納するとストレージ使用安全マージンが狭まる。すなわち、ファイルF1〜F5およびP1〜P3が記憶領域110に格納された後に残っている記憶領域110内の空き記憶スペースfは、ストレージ使用安全マージン1130より小さい。従って、ストレージアロケータ144は、発行者のファイル(すなわち、P1、P2、およびP3)のうちの1つを除去することによって、ストレージ使用安全マージンを復活させるかあるいは回復する。前に説明したように、ユーザファイルが最大の記憶優先順位を有するので、ストレージ使用安全マージンは、1つ以上の発行者ファイルを除去(すなわち、削除)することによって復活させられるかあるいは回復される。
前に記述したように、どの1つの発行者ファイルまたは複数の発行者ファイルが記憶領域110から除去されるべきかの決定は、ストレージアロケータ144が各々の格納されている廃棄可能ファイルに割り当てた廃棄優先レベルに基づいてストレージアロケータ144によって行われる。
再び図11を参照して、格納されている発行者ファイルP1〜P3のうちで発行者ファイルP3に最高の廃棄優先レベル(例えば、13)が割り当てられたと仮定される。従って、時点T4でファイルP3が記憶領域110から除去され、これにより空き記憶スペース190を大きくする。時点T4における空き記憶スペース190のサイズ(すなわち、1120のところのf)はストレージ使用安全マージン1130より大きいので、発行者ファイルをそれ以上除去する必要はない。
記憶装置100のユーザは、1つ以上のユーザファイルを除去することを望むかもしれない。時点T5でユーザは自分のファイルのうちの2つ(すなわち、ファイルF4およびF5)を除去し、これにより空き記憶スペース190をさらに大きくした。ここで述べられたように、空き記憶スペースの再獲得あるいはストレージ使用安全マージンの回復は必要な数の廃棄可能ファイルを除去することによって行われるので、ファイルF4およびF5の除去は空き記憶スペース190のサイズまたはストレージ使用安全マージンとは無関係である。発行者が他の1つの非請求ファイルを記憶領域110に格納することを望むと想定される。前に記述したように、ストレージアロケータ144は、その発行者の非請求ファイルを記憶領域110に格納するとストレージ使用安全マージン1130が狭まらないかを判定するために空き記憶スペース190のサイズ(すなわち、1120のところのf)を評価する。その発行者の新しい非請求ファイルを格納するとストレージ使用安全マージン1130が狭まるのであれば、ストレージアロケータ144は、そのファイルを格納するのを差し控える。
この例では、ストレージアロケータ144は、発行者の新しい非請求ファイル(すなわち、ファイル「P4」)はストレージ使用安全マージン1130を減少させることなく記憶領域110に格納され得ると判定する。従って、時点T6でストレージアロケータ144はストレージコントローラ120が発行者のファイルP4を記憶領域110に格納するのを許可する。ストレージアロケータ144は、ファイルP4が記憶装置100のユーザによって使用される確率も判定し、対応する廃棄レベルをこのファイルに割り当てる。ストレージアロケータ144は、その後、ファイルP4に割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。新しいファイルが記憶領域110に加えられなければならないたびにストレージアロケータ144が空き記憶スペース190の現在のサイズを評価して、どの1つまたは複数の発行者ファイル(あるとすれば)が記憶領域110から除去されなければならないかを判定する間、新しい発行者のファイルおよび新しいユーザファイルを格納すると共に格納されているファイルを除去するプロセスが続行され得る。
廃棄可能ファイルへの廃棄レベルの割り当ては、ユーザの経験または選択、ユーザの全地球測位システム(「GPS」)位置、および/または他の基準に基づくことができる。例えば、記憶装置のユーザが(以前のユーザの経験に基づいて)或るタイプの音楽を好みそうに思われるならば、ストレージアロケータは発行者のファイルに、そのファイルがユーザの気に入っているタイプのうちの1つの音楽である音楽を含んでいるならば、割合に低い廃棄優先レベル(例えば、1から15までのスケールの中の3)を割り当てることができる。しかし、発行者の音楽がユーザに嫌われるならば(すなわち、以前のユーザの経験に基づいて)、ストレージアロケータは、その関連する発行者のファイルにより高い廃棄優先レベル(例えば、1から15までのスケールの中の12)を割り当てることができる。廃棄可能ファイルに廃棄レベルを割り当てるために使用される基準は、そのファイルの予想される使用法、そのファイルの使用と関連付けられた予想される収益、そのファイルのタイプ、そのファイルのサイズ、そのファイルの記憶装置の中での位置、そのファイルの古さ、およびここで明示される他の基準またはパラメータを含むことができる。他の基準を、単独でもあるいはここで言及された基準のうちのいずれかと組み合わされても、同様に使用することができ、廃棄レベルの割り当てを1つ以上の基準を用いて行うことができる。さらに、異なる廃棄可能ファイルに廃棄レベルを割り当てるために異なる基準が使用され得る。
他の1つの例において、発行者がユーザに位置依存型の広告(すなわち、特定の位置の中で提供される製品またはサービスに関連する広告)を送ることを望むならば、ストレージアロケータは、その発行者の広告に対して、ユーザの変化する位置に応じて変化する廃棄優先レベルを割り当てることができる。すなわち、ユーザが特定の位置から遠ざかるほど廃棄レベルは高くなるであろうが、それは、その特定の位置から離れるほど、ユーザはその特定の位置で提供されるその製品またはサービスを消費することに関心を持たなくなると想定され得るからである。
前に記載したように、廃棄可能ファイルのためのクラスタチェーンは、FAT32エントリと関連付けられたファイルを廃棄可能ファイルと特定するフラグと共にFATに記録される。通例、フラグは、各FAT32エントリの4つの最上位ビットに存在する。クラスタチェーンは、廃棄可能ファイルに割り当てられ得るけれども、それらと関連付けられた非廃棄可能ファイルをもたないので、chkdskまたはfsck.vfatなどのユーティリティが廃棄可能ファイルを、「リアル」ファイルとしても知られる非廃棄可能ファイルに転換させ、これによりファイルシステム160のセキュリティを低下させるということが起こり得る。さらに、何らかのFATリカバリユーティリティがFAT32エントリ内の廃棄可能ファイルフラグをリセットする危険がある。FAT32ファイルシステムの検査および修理ユーティリティは、しばしば、ありふれたエラーを修正するためにファイルシステムをステップスルーしてルールを適用する。一般的に、これらのユーティリティは、ディレクトリテーブル内の第1のクラスタ番号(FCN)コラム内に対応するエントリを持っていないFAT内のクラスタチェーンを探すことができる。ユーティリティは、ディレクトリあるいはファイルエントリを全く持っていないFAT内のクラスタ割当てを不明のデータフラグメント(オーファンクラスタとしても知られている)として扱い、ユーティリティは、これらのオーファンクラスタを削除するか、あるいは対応するファイルエントリをディレクトリテーブル内に作成することができる。本願明細書に記載されている廃棄可能ファイルシステムは、そうでなければオーファンクラスタと見なされるであろうものを使用することができるので、ユーティリティは、間違って廃棄可能ファイルを非廃棄可能ファイルに変えたり、あるいは廃棄可能ファイルを完全に除去したりすることがある。
これらの問題を処理するために、或るインプリメンテーションでは、ストレージアロケータ144は廃棄可能ファイルをプライマリFAT内のクラスタチェーンと関連付けることができ、そのクラスタチェーンは廃棄可能ファイルの物理的位置を隠し、ストレージアロケータ144はファイルの物理的位置を廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルに格納する。通例、その廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルはプライマリFATには不可視であり、或るインプリメンテーションでは、ホストオペレーティングシステムがその廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルにアクセスすることを阻止する、その廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルと関連付けられた属性がイネーブルされ得る。
前に記したように、FAT32内の各エントリは32ビットであるけれども、下位28ビットだけが使用される。通例、上位4ビットは使われずに残され、ゼロにセットされる。(FAT32の準拠インプリメンテーションは、上位4ビットを、たとえ割り当てられているクラスタにおいてセットされていても、無視し、新しいFATエントリを書き込む時には上位4ビットをゼロにセットするように要求される。)廃棄可能ファイルは、そのファイルと関連付けられている各クラスタチェーンのFATエントリの上位4ビットの中のフラグによって非廃棄可能ファイルから区別される。標準的FAT32ドライバは、廃棄可能ファイルを割り当てられているスペースと見なし、それらの上に書き込まない。しかし、ストレージアロケータ144は、記憶装置110において空きスペース割当てを維持するために、図5に関して前に記述したものなどの操作を定期的に実行することができ、廃棄可能ファイルに割り当てられているスペースを回復することができる。
プライマリFATと、廃棄可能FAT、データベース、および1つ以上のロケーションファイルのうちの少なくとも1つとを利用することにより、プライマリFATは拡張され得る。拡張されたプライマリFATがファイル割り当てテーブルルックアップ論理のブランチと関連して使用されるときには、FATエントリの上位4ビットが非ゼロであるならば、廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルの中の、廃棄可能ファイルの物理的位置を表す情報がプライマリFATのFATエントリの代わりに使用される。廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルの中の情報がプライマリFATのFATエントリの中の値をオーバーライドするので、chkdskおよびfsck.vfatなどのユーティリティは廃棄可能ファイルを非廃棄可能ファイルに変えないが、それは、ユーティリティが廃棄可能ファイルのクラスタを、廃棄可能FAT、データベースあるいは1つ以上のロケーションファイルの中のディレクトリまたはファイルエントリと関連付けられていると見なすからである。さらに、FATリカバリユーティリティは、ファイルが廃棄可能ファイルであることを示すFAT32エントリ内のフラグをリセットしないが、それは、chkdskおよびfsck.vfatなどのユーティリティが、廃棄可能ファイルと関連付けられているクラスタを、空きスペースと見なすのではなくて、廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルの中のディレクトリまたはファイルエントリと関連付けられていると見なすからである。
ファイルシステム160が、廃棄可能ファイルとマーキングされているファイルを格納するためにプライマリFAT1200と廃棄可能FAT1201とを利用するとき、ストレージアロケータ144は、廃棄可能ファイルに割り当てられているクラスタチェーン1202をファイルと関連付けるために図12aに示されているようにプライマリFAT1200を更新する。一般的に、クラスタチェーン1202は、クラスタチェーン1202と関連付けられている廃棄可能ファイルと同じか、あるいはそれより大きいサイズであり得る。或るインプリメンテーションでは、クラスタチェーン1202は、プライマリFATにおいて廃棄可能ファイルの物理的位置をマスクする。通例、図7および8に関して前に記述したように、エントリ1204から始まるクラスタチェーン内の各クラスタは、エントリ1206に示されている1FFF FFFFなどの値がクラスタチェーン1202の終わりを示すまで、クラスタチェーン1202の次の連続クラスタを指す。しかし、他のインプリメンテーションでは、クラスタチェーンの各クラスタは、そのクラスタがクラスタチェーンの次の連続クラスタを指すのではなくて個別に割り当てられたクラスタであることを示す1FFF FFFFなどの値を持つことができる。
図12bに示されているように、クラスタチェーン1202の第1のエントリ1204は、廃棄可能FAT1201内の対応するエントリ1208を指す。図7および8に関して前に記述したように、各ファイルについて、廃棄可能FAT1201の中のクラスタチェーン1202内の各クラスタは、エントリ1210において示されている1FFF FFFFなどの値がファイルのEOFを示すまでファイルの次の順のクラスタを指す。
1つのクラスタチェーン1202は2つ以上のファイルと関連付けられ得るということを理解すべきである。例えば、図12bに示されているように、クラスタチェーン1202は、第1のファイル1212のためのクラスタ#6(エレメント1208)からクラスタ#9(エレメント1210)までのクラスタの第1のセットを含み、第2のファイル1214のためのクラスタ#10からクラスタ#11までのクラスタの第2のセットを含む。
さらに、プライマリFAT1200と対応する廃棄可能FAT1201とは2つ以上のクラスタチェーンを含み得るということを理解すべきである。例えば、図12aおよび12bに示されているように、プライマリFATは、クラスタ#6からクラスタ#11までのクラスタチェーン1202を含むことができ、クラスタ#20からクラスタ#22までの第2のクラスタチェーン1216を含むことができる。
他のインプリメンテーションでは、プライマリFAT1200と廃棄可能FAT1201とを使用するのではなくて、ファイルシステムは、前述したように、1つ以上のファイルをクラスタチェーンと関連付けるためにプライマリFAT1200を利用することができ、クラスタチェーンと関連付けられた1つ以上の廃棄可能ファイルの物理的位置を格納するために廃棄可能FATの代わりにデータベースまたは1つ以上の別々のロケーションファイルを利用することができる。データベースまたはロケーションファイルは、ファイルシステムの非廃棄可能領域に格納されるテキストファイルまたはバイナリファイルであり得る。
図13は、プライマリFATと廃棄可能FATとを用いて記憶装置を管理する方法である。図13は、図1と関連して記述される。ステップ1310で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。或るインプリメンテーションでは、ストレージアロケータ144は、ファイル142を記憶装置100に格納する要求を、ファイルと関連付けられている1つ以上の書き込み要求に基づいて導出する。
ステップ1320で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1320で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
ステップ1330で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにプライマリFATを更新する。ステップ1340で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すように廃棄可能FATを更新する。ステップ1350で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをマーキングされているファイルに基づいて廃棄可能FATに従って管理する。記憶領域の管理は、図5に関連して前に記述したものと同様である。
図14は、FATとデータベースとを用いて記憶装置を管理する方法である。図14は、図1と関連して記述される。ステップ1410で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1420で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1420で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
ステップ1430で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1440で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すようにデータベースを更新する。ステップ1450で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをFATおよびデータベースに基づいて管理する。
図15は、FATとロケーションファイルとを用いて記憶装置を管理する方法である。図15は、図1と関連して記述される。ステップ1510で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1520で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1520で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
ステップ1530で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1540で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すようにロケーションファイルを更新する。ステップ1550で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをFATおよびロケーションファイルに基づいて管理する。
さらに他のインプリメンテーションでは、セキュリティを強化し、dosfsck(fsck.vfatとしても知られている)またはchkdskなどのファイルシステム完全性ユーティリティによってファイルシステムが破壊されたり損なわれたりしないように、ストレージアロケータ144は、廃棄可能ファイルの物理的位置を記憶している廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルを読まなくてはクラスタチェーンが再構築され得ないことを保証するために、廃棄可能ファイル領域においてクラスタをクラスタチェーンにシーケンシャルに割り当てない。さらに、dosfsckなどのユーティリティが、廃棄可能ファイルを非廃棄可能ファイルに変えたり、ファイルが廃棄可能であることを示すファイルの上位ビットに存するフラグをリセットしたりしないように、クラスタチェーンのスクランブルされているクラスタのうちの1つ以上と関連付けられるレンジファイルがFATにおいて生成される。或るインプリメンテーションでは、ホストオペレーティングシステムがレンジファイルにアクセスすることを阻止するために、レンジファイルと関連付けられている隠し属性、システム属性、ディレクトリ属性、あるいはボリューム属性などの属性がイネーブルされ得る。
図16は、クラスタチェーンを含んでいて、そのクラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを表すチャートである。図16に示されているように、エントリ1602から始まるクラスタチェーンを構成するクラスタは連続していない。例えば、エントリ1602から始まるクラスタチェーンの順序はクラスタ#13、クラスタ#9、クラスタ#7、クラスタ#18、およびクラスタ#21である。このFATでは、図7および8に関して前に記述したように、各クラスタの値は、クラスタチェーン内の次のクラスタを指す。
1つ以上のファイルと関連付けられているクラスタチェーンを構成するクラスタの順序がスクランブルされていることに加えて、ファイルと関連付けられているクラスタチェーンの1つ以上のクラスタを含む1つ以上のレンジファイルがFATにおいて作成され得る。或るインプリメンテーションでは、各レンジファイルは、クラスタチェーンの一部であるクラスタの範囲の中の全てのクラスタを表すことができる。レンジファイルと、クラスタチェーンを構成するクラスタとが関連しているために、chkdskまたはfsck.vfatなどのユーティリティは廃棄可能ファイルを非廃棄可能ファイルに変えず、FATリカバリユーティリティは、ファイルが廃棄可能ファイルであるというFAT32エントリインジケーション内のフラグをリセットしない。
図17は、FAT内に作成された1つ以上のレンジファイルを示すチャートであり、その各々は、エントリ1602から始まるクラスタチェーンのうちの少なくとも1つのクラスタを記憶する。例えば、第1のレンジファイル1604は、エントリ1602から始まるクラスタチェーンからのクラスタ#7およびクラスタ#9を記憶し、第2のレンジファイル1606は、エントリ1602から始まるクラスタチェーンからのクラスタ#13、クラスタ#18、およびクラスタ#21を記憶する。
レンジファイルは、2つ以上のクラスタチェーンからのクラスタを記憶することができる。例えば、エントリ1602から始まるクラスタチェーンからの上でリストされたクラスタのほかに、第1のレンジファイル1604は、エントリ1608から始まるクラスタチェーンからのクラスタ#5およびクラスタ#10を記憶することができる。同様に、エントリ1602から始まるクラスタチェーンからの上でリストされたクラスタのほかに、第2のレンジファイル1606は、エントリ1608から始まるクラスタチェーンからのクラスタ#16、クラスタ#17、およびクラスタ#22を記憶することができる。
図18は、クラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを用いて記憶装置を管理する方法である。図18は、図1と関連して記述される。ステップ1810で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1820で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1820で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
ステップ1830で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられているクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1840で、ファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序は、記憶装置100内のメモリの量、クラスタチェーンの総サイズ、クラスタチェーンの2つの連続するクラスタの間のクラスタの数、ならびに/または消去ブロックサイズ、割り当てられたブロック内の各論理アドレスの物理的ブロックアドレス、および/または物理的ブロックアドレスと関連付けられている各ページのためのウェアレベリングデータを考慮できるフラッシュメモリ管理アルゴリズムなどの要素に基づいてFATの中でスクランブルされる。或るインプリメンテーションでは、クラスタチェーンの2つ以上のクラスタの順序は、擬似乱数発生器またはエントロピック乱数発生器を用いてスクランブルされ、前もって割り当てられていない各クラスタについて1つの範囲内のオフセットを提供する。他のインプリメンテーションでは、クラスタチェーンの2つ以上のクラスタの順序は、ホストシステム140および/または記憶装置100からの非決定論的な値を考慮に入れる単方向ハッシュ関数を用いてスクランブルされる。
ステップ1850で、第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む第1のレンジファイルがFATにおいて作成される。ステップ1860で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいはFATおよびレンジファイルに基づいて記憶領域110に格納されているファイルを管理する。
さらに他のインプリメンテーションでは、廃棄可能ファイルがオープンである間にその廃棄可能ファイルが非廃棄可能ファイルに変換されないことを保証するために変換ロックを実行することができる。例えば、廃棄可能ファイルが記憶装置100にダウンロードされつつある期間中、あるいは廃棄可能ファイルと関連付けられている映画、歌、または番組と関連付けられているリリース日より前に廃棄可能ファイルが記憶装置100にダウンロードされる時などの、廃棄可能ファイルと関連付けられているデータが公衆にリリースされる前の期間中、廃棄可能ファイルはオープンであり得る。一般的に、変換ロックは、変換ロックがセットされているときには廃棄可能ファイルが非廃棄可能ファイルに変換され得ないように働く。
図19は、廃棄可能ファイルの変換を、プライマリFATおよび廃棄可能FATを実装するファイルシステムにおいて廃棄可能ファイルがオープンであるときに阻止するために変換ロックを利用する方法である。図19は、図1と関連して記述される。ステップ1910で、ストレージアロケータ144は、廃棄可能ファイルを非廃棄可能ファイルに変換する要求を受け取る。ステップ1920で、ストレージアロケータ144は、廃棄可能ファイルと関連付けられている変換ロック識別子の値を識別する。ステップ1930で、ストレージアロケータ144は、変換ロック識別子の値に基づいて、廃棄可能ファイルが非廃棄可能ファイルに変換され得るかを判定する。通例、ストレージアロケータ144は、変換ロック識別子の値が廃棄可能ファイルがオープンであることを示しているときには廃棄可能ファイルは変換され得ないと判定し、ストレージアロケータ144は、変換ロック識別子の値が廃棄可能ファイルがオープンでないことを示しているときには廃棄可能ファイルは変換され得ると判定する。
ステップ1930で廃棄可能ファイルが非廃棄可能ファイルに変換され得ないとストレージアロケータ144が判定すれば、ストレージアロケータ144はステップ1940で廃棄可能ファイルを非廃棄可能ファイルとマーキングすることを禁じる。しかし、廃棄可能ファイルが非廃棄可能ファイルに変換され得るとストレージアロケータ144がステップ1930で判定すれば、ストレージアロケータ144は先へ進み、ステップ1950で、ファイルを、記憶装置100と関連付けられているファイルシステム構造において非廃棄可能ファイルとマーキングし、ステップ1960でファイルの物理的位置を表すようにプライマリFATを更新し、ステップ1970でファイルの物理的位置を除去するために廃棄可能FATを更新する。
前に記述した廃棄可能FATの代わりにプライマリFATと共にデータベースまたはロケーションファイルが使用されるときに類似の方法が変換ロックで実行されるということを理解すべきである。
或るインプリメンテーションでは、アプリケーションは、アプリケーションと関連付けられている識別子に基づいて、廃棄可能ファイルの非廃棄可能ファイルへの変換あるいは変換ロック識別子の値のチェックなどの操作を実行することを許され得る。通例、廃棄可能ファイルを作成するかあるいはダウンロードするアプリケーションは、ユーザ識別子(ID)を廃棄可能ファイルと関連付けることができる。ユーザIDは、その廃棄可能ファイルを作成したアプリケーションまたはユーザを特定するオーナーユーザIDであり得る。或るインプリメンテーションでは、オーナーユーザIDは4バイト値である。
ファイルシステム160は、他のユーザまたはアプリケーションと関連付けられたどんな追加のユーザIDが廃棄可能ファイルにアクセスできるかを定義すると共に、追加のユーザIDが廃棄可能ファイルに関してどんなアクションを取り得るかを定義する能力をオーナーユーザIDに提供する。廃棄可能ファイルの使用法により、追加のユーザIDは単一のアプリケーションまたは単一のユーザと関連付けられることができ、あるいはその追加のユーザIDは多数のアプリケーションまたは多数のユーザと関連付けられる共有ユーザIDであることができるということを理解すべきである。
或るインプリメンテーションでは、オーナーユーザIDは、追加のユーザIDと関連付けられているアプリケーションが、廃棄可能ファイルと関連付けられているプレビューデータにアクセスすることを許可することができる。プレビューデータは廃棄可能ファイルの一部であり得るけれども、他のインプリメンテーションでプレビューデータは、廃棄可能ファイルとは別個のものであるけれども廃棄可能ファイルと関連付けられる。或る代表的なインプリメンテーションでは、廃棄可能ファイルは映画であって、プレビューデータは映画と関連付けられた映画予告編を含むことができ、廃棄可能ファイルはテレビ番組であって、プレビューデータはテレビ番組の一部を含むことができ、廃棄可能ファイルは音楽データであって、プレビューデータは音楽データの一部を含むことができ、あるいは廃棄可能ファイルはソフトウェアプログラムであって、プレビューデータはソフトウェアプログラムのデモ版を含むことができる。他の代表的なインプリメンテーションでは、プレビューデータは、廃棄可能ファイルと関連付けられているリリース日の前に廃棄可能ファイルにはアクセスされ得ないけれども廃棄可能ファイルと関連付けられているプレビューデータはアクセスされ、そのリリース日の後は廃棄可能ファイルおよびプレビューデータの両方がアクセスされ得るように、利用され得る。他の1つの例では、オーナーユーザIDは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに、廃棄可能ファイルと関連付けられているユーザIDに基づいて、書き込むことを許可することができる。
或るインプリメンテーションでは、ファイルシステムは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに関してどんな操作を実行できるかをオーナーユーザIDが定義するためのパーミッションビットマスクを提供することができる。代表的な使用シナリオのためのパーミッションビットマスクの一例が図20に示されている。しかし、オーナーユーザIDが、図20に示されているパーミッションをオーバーライドし、追加のユーザIDに任意のパーミッションを割り当てることができるということを理解すべきである。
図20に示されているパーミッションを参照すると、プロパティ書き込みパーミッションビット2004がセットされているアプリケーションは、変換ロックをイネーブルあるいはディスエーブルする、タイムスタンプをセットするかあるいは消費意図ユニバーサルリソースインジケータ(「URI」)を書き込むなどの属性変更をすることができ、プロパティ読み出しパーミッションビット2002がセットされているアプリケーションは変換ロック、タイムスタンプ、あるいは消費意図URIなどの属性を読み出すことができる。優先順位パーミッションビット2006がセットされているアプリケーションは、廃棄可能ファイルの優先レベルを変更することができる。プレビュー読み出しパーミッションビット2008がセットされているアプリケーションは、廃棄可能ファイルと関連付けられているプレビューデータを読み出すことができ、プレビュー書き込みパーミッションビット2010がセットされているアプリケーションは、廃棄可能ファイルと関連付けられているプレビューデータを書き込むことができる。読み出しパーミッションビット2012がセットされているアプリケーションは廃棄可能ファイルを読み出すことができ、書き込みパーミッションビット2014がセットされているアプリケーションは廃棄可能ファイルに書き込むことができる。通例、廃棄可能ファイルと関連付けられているオーナーユーザIDと関連付けられているアプリケーションだけがこれらのパーミッションを有する。変換パーミッションビット2016がセットされているアプリケーションは、廃棄可能ファイルを非廃棄可能ファイルに変換することができる。
ファイルをマーキングし、関連付けられているファイルシステムにおいてそれらに廃棄レベルを割り当てる、本願明細書に開示されている方法は、多くの有益な用途を持つことができ、そのうちの1つは、ユーザファイルのために充分な記憶スペースを保証するためにストレージ使用安全マージンを回復することであるということが特に言及される。例えば、ファイルに割り当てられた廃棄レベルは、ファイルクラスタを下位動作のフラッシュモジュールに再マッピングするかあるいは要求があり次第クラスタをクリアするために使用され得る。
大きなファイルのためのスマートキャッシング
前に記述した、スマートキャッシングとも呼ばれる、データを管理する方法にさらに加えて、またその両方が本願明細書において参照により援用されている、2008年12月16日に出願された係属中の米国特許出願第12/336,089号(特許文献3)と、2009年3月10日に出願された係属中の米国仮特許出願第61/159,034号(特許文献4)とに記載されているスマートキャッシングの記述および特徴にさらに加えて、大きな廃棄可能ファイルのためのスマートキャッシング手法が提供される。ここでスマートキャッシングHDとも呼ばれるこの大ファイルスマートキャッシングは、前述した開示からのいくつかの変化および拡張を含む。スマートキャッシングHDは、4GBより大きなファイルのためのサポートに関して、変換時のそのようなファイルの分割を、それらが廃棄可能である間それらの大きな(>4GB)ステータスを維持しながら、インテリジェントに処理するラージファイルマネージャが付加されているという点で、スマートキャッシングと異なる。具体的には、これらのファイルの管理および検索と、一連のより小さなファイルとしてではなくて単一の単位としてのそれらの廃棄とを考慮に入れる。
コンポーネント
スマートキャッシングのコンポーネントは図21のブロック図に記載されている。スマートキャッシングのコンポーネント2100は、ANDROID、WINDOWSまたはLINUXなどの多数のオペレーティングシステムのうちのいずれとも関連して操作され得る。代わりに、ここで論じられるスマートキャッシング手法は、オペレーティングシステムを持たないメモリカードなどの記憶媒体上で実行され得る。スマートキャッシングHDのために付け加えられた新しいコンポーネントはラージファイルマネージャ2102であり、サイズが4GBより大きいファイルを処理する。ラージファイルマネージャは、以下でより詳しく記述される。
大きな廃棄可能ファイル
廃棄可能ファイルを包含するファイルシステムは、図22のファイルシステム構造に示されているように概念的に編成される。ファイルシステムは、構造に関して、SD−HC(および対応する高容量μSD)カードに見出される標準的なFAT32ファイルシステムに類似する。廃棄可能ファイルHDのインプリメンテーションでは、廃棄可能ファイルはシャドウFATに格納される。
シャドウFAT
最初の2つのFATテーブルは、ファイルの優先順位を示すけれどもその実際のチェーンを示さない0xpFFFFFFF(EOF)または0xp00000000(未割り当て)値だけを用いて廃棄可能クラスタを割り当てる。最上位ニブルが非ゼロであれば、実際のクラスタチェーンのシーケンスを判定するために第3のFATテーブルが考慮される。最初の2つのFATテーブルの場合とは違って、廃棄可能FAT(DFAT)テーブルは、4GBより長いクラスタチェーンを包含することができる。
ディレクトリテーブル
廃棄可能ファイルのためのディレクトリエントリは、次のエレメントを有する。暗号化され得るエレメントは、システムの暗号化された変形例においてblob(バイナリラージオブジェクト)として表され、それらは単一のblobに統合され得る。これらのフィールドがここに記述される。
ラージファイルマネージャ
ラージファイルマネージャ(LFM)は、4GBより大きいファイルを処理するためにスマートキャッシングHD内に実装されるプロセスハンドラである。概念的には、LFMは、図23に示されているように、ファイルパーサと定義済み分割アルゴリズムのセットとから成る。LFMは、ホスト、あるいは他のスマートキャッシングコンポーネントが記憶装置上に存在する場合には記憶装置に実装され得る。
ファイルパーサは、ファイル(Linuxファイルコマンドで使用されるものなど)を識別し、MIMEタイプを、それが廃棄可能ファイルディレクトリエントリに格納されていた場合に、考慮する周知の方法を使用する。タイプデータベースは、LFM内に組み込まれている、ファイルタイプと、それらに対応する分割ハンドラとの簡単なテーブルである。図は3つの分割ハンドラを示しているけれども、必要に応じて追加の分割ハンドラが組み込まれ得る。通例、分割ハンドラは、
廃棄可能ファイルの構造をベリファイし、
ファイルが分割されるセグメントの総数を計算し(これは通例、4GBで割られたファイルのサイズであろうが、ファイルフォーマット制約が追加のファイルを必要とすることがある)、
ファイルの各セグメントのためにヘッダを作成し、かつ
各セグメント境界のオフセットを計算するためのインターフェイスを有する。
ファイルの実際の分割は、以下で記述されるように変換中に行われる。
変換フロー
スマートキャッシングHDにおける変換フローは図24に示されている。プロセス2400は、ステップ2402におけるアプリケーションによるconvert()関数の呼出しから始まる。convert()関数は、ステップ2404で(スマートキャッシングアプリケーションに記載されているように)課金メカニズムを介して変換プロセスを許可する。ステップ2406で変換が許可されなければ、ステップ2407でセキュリティ例外が結果として生じる。ステップ2406で変換が許可されれば、次のステップは、ステップ2408でファイルシステムを変換プロセス中に他のプロセスおよびデバイスドライバがそれを改変しないようにロックすると共に、プロセスが終わった後にファイルシステムのリフレッシュを考慮することである。その後、ステップ2410および2412で、変換されるべきファイルのためのクラスタチェーンがボリュームのFAT1およびFAT2テーブルにおいて割り当てられて、チェーンをdosfsck保護目的で置かれている既存のプレースホルダファイルから切り離し、必要ならばクラスタチェーンを再順序付けする。ステップ2414でファイルの全長が4GB未満であるならば、ステップ2416、2418、2420、および2422でファイルのためのディレクトリエントリが作成され、ステップ2424でファイルシステムがアンロックされてリフレッシュされ、convert()フローをステップ2426で終了させる。
ファイルの全長が4GBより大きければ、プロセスはステップ2428に進む。4GBより大きいファイルは一般的にHDメディアファイルであり、それはシーケンシャルに再生されるセグメントに分割され得る。それらのセグメントは再生中互いにリンクされることができて、シームレスの再生体験を提供する。しかし、ファイルを4GBセグメントに単純に分割すれば、ファイルをフレームの中央で切断するか、あるいはセグメントのうちの1つ以上がファイルを識別または再生するのに必要なメタデータ(ファイルヘッダなど)を失うことになり得る。従って、各セグメントは、フォーマットに適する、LFMにより生成されたメタデータヘッダから始まる。文書あるいは実行可能ファイルなどの或るファイルタイプは本来セグメントに分かれず、それらのファイルを、この方針を用いてより小さなセグメントに変換することはできない。そのようなファイルでは、ラージファイルマネージャはZIPなどの圧縮ライブラリを使用することができ、ファイルの順序を保ちながら分割をサポートする。ラージファイルマネージャは、ファイルを変換するとき、図25に示されているフローを使用する。
4GBより長いファイルを管理するプロセス2500は、アプリケーションによる返還要求でステップ2502から始まる。ステップ2504でファイルのヘッダが読み出され、ステップ2506でファイルが既知のタイプのものであるかが判定される。ファイルが既知のタイプのものでなければ、プロセスはステップ2508に進み、ここでファイルは、一般的方法を用いてスパンされて多数のファイルとされ、ステップ2510で、それらのスパンされたファイルに対して変換プロセスが続く。
ステップ2506でファイルが既知のタイプのものであれば、スパンして多数のファイルにすることをファイルタイプがサポートするかがステップ2512で判定される。スパンして多数のファイルとすることをファイルタイプがサポートするならば、ステップ2510に進む前にステップ2514でファイルタイプに特有の方法を用いてファイルはスパンされて多数のファイルにされる。しかし、スパンして多数のファイルとすることをファイルタイプがサポートしなければ、ステップ2510に進む前にステップ2508で一般的方法を用いてファイルはスパンされて多数のファイルとされる。
ファイルタイプに特有の方法の例として、図26は、高精細度ビデオストリームでよく使われるオープンソースのマトロスカ(mkv)コンテナファイルフォーマットの略図を描いている。マトロスカファイルは、通例、1つのセグメントが続くファイルヘッダ(拡張可能なバイナリのメタ言語(EBML(Extensible Binary Meta-Language) ヘッダ)から成り、タグで終了する。これらのファイルは4GBより長いことがあるけれども、そのような大きなファイルはFAT32ファイルシステムでは有効に表現され得ない。これらのファイルを分割するには、セグメント自体が多数のファイルに分割され、その各々はそれ自身のEBMLヘッダおよびセグメントヘッダを有する。次のように、セグメントヘッダの中には、分割されているファイル同士をリンクするのに役立つフィールドがある。
マトロスカファイルを分割するプロセスは、各々の分割セグメントのために新しいMKVファイルを割り当て作成することと、各セグメントのためにEBMLヘッダと書き直されたセグメントヘッダとを付加することとを含む。
ラージファイルマネージャは、マトロスカなどの種々のファイルタイプのためのサポートを組み込み、各々の場合に、各ファイルタイプのための特有の分割ハンドラを用いることにより、ファイルタイプのためにインプレース分割をトランスペアレントに実行する。インプレース分割は、図27に示されているように新しいヘッダ情報を包含するクラスタをクラスタチェーンに付加し、次に、各ファイルのために新しいディレクトリエントリを付加すると共に各々にチェーン内の適切な箇所でFCNを割り当てることによってクラスタチェーンを多数のファイルに分割することによって、ファイルの中のデータを移動させることなく行われる。(チェーンにおいてFCNの直前のクラスタ番号はEOFマーカーを示す。)ラージファイルマネージャに包含される、他のファイルタイプのための同様のフローが存在する。ラージファイルマネージャはファイルタイプを自動的に検出して、それに応じてインプレース分割を引き起こす。
本願は、記憶装置を管理する方法およびシステムを含む。1つのインプリメンテーションでは、ホストまたは記憶装置に存在するストレージアロケータが、記憶装置の記憶領域にファイルを格納する要求を受け取る。ストレージアロケータは、記憶装置と関連付けられているファイルシステム構造においてファイルを廃棄可能とマーキングし、ファイルに割り当てられているクラスタチェーンをファイルと関連付けるために主ファイルアロケーションテーブル(「FAT」)を更新する。ストレージアロケータは、さらに、ファイルの物理的位置を表すように廃棄可能FATまたはデータベースを更新するか、あるいはファイルの物理的位置を記憶する1つ以上のロケーションファイルを生成することができる。ストレージアロケータは、その後、FATとファイルの物理的位置を示す廃棄可能FAT、データベース、または1つ以上のロケーションファイルとに基づいて記憶領域装置を管理する。
多数の方法およびシステムが上記のように開示され、多数の方法で実行され得る。インプリメンテーションの組み合わせのほんのいくつかの例が以下で提供されるけれども、それらは限定するものではなくて、追加の特徴および組み合わせが考えられる。
1つのインプリメンテーションでは、記憶装置を管理する第1の方法は、記憶装置が動作可能に結合されているホストにおいて、プライマリFATと、さらに廃棄可能FATとを包含する記憶装置の記憶領域に第1のファイルを格納する要求を受け取ることと、第1のファイルを廃棄可能とマーキングすることであって、第1のファイルをマーキングすることが記憶装置と関連付けられているファイルシステム構造において行われることと、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるために、記憶装置にプライマリFATを更新させることと、記憶装置における第1のファイルの物理的位置を表すように、記憶装置に廃棄可能FATを更新させることと、廃棄可能FATに従って記憶装置の記憶領域を管理することと、を含むことができる。
この方法では、クラスタチェーンは少なくとも第1のファイルの物理的位置をマスクし、プライマリFATのクラスタチェーンは廃棄可能FAT内の位置を指すことができる。廃棄可能FATに従う記憶装置の記憶領域の管理は、廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによるストレージ使用安全マージンの回復、廃棄可能とマーキングされている全てのファイルを除去することによる記憶領域の解放、あるいはより低い性能の記憶モジュールへの第1のファイルのクラスタの再マッピングのいずれか1つまたは組み合わせを含むことができる。
第1の方法は、ホストオペレーティングシステムが第1のファイルにアクセスすることを阻止することを第1のファイルと関連付けられている属性により可能にすることをも含むことができる。あるいは、第1の方法は、記憶装置の記憶領域に第2のファイルを格納する要求を受け取ることと、第2のファイルを廃棄可能とマーキングすることであって、第2のファイルをマーキングすることが記憶装置と関連付けられているファイルシステム構造において行われることと、第1のファイルおよび第2のファイルと関連付けられるクラスタチェーンを第2のファイルと関連付けるために、記憶装置にプライマリFATを更新させることと、第2のファイルの物理的位置を表すように、記憶装置に廃棄可能FATを更新させることと、をも含むことができる。クラスタチェーンは、第1のファイルおよび第2のファイルの物理的位置をマスクすることができる。
前述した第1の方法は、記憶装置の記憶領域に第2のファイルを格納する要求を受け取ることと、第2のファイルを廃棄可能とマーキングすることであって、第2のファイルをマーキングすることが記憶装置と関連付けられているファイルシステム構造において行われることと、第2のファイルに割り当てられている第2のクラスタチェーンを第2のファイルと関連付けるために、記憶装置にプライマリFATを更新させることと、第2のファイルの物理的位置を表すように、記憶装置に廃棄可能FATを更新させることと、をも含むことができる。
第1の方法は、代わりに、第1のファイルを非廃棄可能ファイルとマーキングすることであって、第1のファイルをマーキングすることが記憶装置と関連付けられているファイルシステム構造において行われることと、第1のファイルの物理的位置を表すように、記憶装置にプライマリFATを更新させることと、第1のファイルの物理的位置を除去するために、記憶装置に廃棄可能FATを更新させることと、を含むことができる。第1の方法のこの代案は、第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために第1のファイルと関連付けられている変換ロック識別子の値を識別することをさらに含むことができ、第1のファイルと関連付けられている変換ロック識別子の値の判定が第1のファイルがロックされていないことを示した後に、第1のファイルは非廃棄可能ファイルとマーキングされる。
第1の方法の他の1つの代案では、第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために第1のファイルと関連付けられている変換ロック識別子の値を識別することと、第1のファイルと関連付けられている変換ロック識別子の値の判定が第1のファイルがロックされていることを示した後に、第1のファイルを非廃棄可能とマーキングすることを禁じることとがさらに含まれ得る。第1の方法は、代わりに、ユーザIDと、第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別することと、識別されたファイルパーミッションに基づいて第1のファイルと関連付けられているプレビューファイルへのアクセスを管理することとを含むことができる。ユーザIDは共有ユーザIDであり得る。
第1の方法において、第1のファイルを廃棄可能とマーキングすることは、廃棄優先レベルを第1のファイルに割り当てることを含むことができる。さらに、第1のファイルに廃棄優先レベルを割り当てることは、対応する値を、第1のファイルに対応するプライマリFATエントリ内のm個の最上位ビットにセットすること、あるいは対応する値を、第1のファイルに対応するファイルシステムエントリ内のデータフィールドにセットすることのうちの少なくとも1つを含むことができる。廃棄優先レベルは、第1のファイルの予想される使用、第1のファイルの使用と関連付けられる予想される収益、第1のファイルのファイルタイプ、第1のファイルのサイズ、記憶装置における第1のファイルの位置、および第1のファイルの古さのうちのいずれか1つに従って第1のファイルに割り当てられることができる。
他の1つのインプリメンテーションでは、記憶装置を管理する第2の方法は、ホストに動作可能に結合されている記憶装置において、プライマリFATと、さらに廃棄可能FATとを包含する記憶装置の記憶領域に第1のファイルを格納する要求を受け取ることと、第1のファイルを廃棄可能とマーキングすることであって、第1のファイルをマーキングすることが記憶装置と関連付けられているファイルシステム構造において行われることと、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるために、プライマリFATを更新することと、記憶装置における第1のファイルの物理的位置を表すように、廃棄可能FATを更新することと、記憶装置の記憶領域を廃棄可能FATに従って管理することと、を含むことができる。クラスタチェーンは、少なくとも第1のファイルの物理的位置をマスクすることができる。第2の方法は、ホストオペレーティングシステムが第1のファイルにアクセスすることを阻止することを第1のファイルと関連付けられている属性により可能とすることをさらに含むことができる。プライマリFATのクラスタチェーンは、廃棄可能FAT内の位置を指すことができる。
1つの変形例では、第2の方法は、第2のファイルを記憶装置の記憶領域に格納する要求を受け取ることと、記憶装置と関連付けられているファイルシステム構造において第2のファイルを廃棄可能とマーキングすることと、クラスタチェーンが第1のファイルおよび第2のファイルと関連付けられるクラスタチェーンを第2のファイルと関連付けるために、プライマリFATを更新することと、第2のファイルの物理的位置を表すように、廃棄可能FATを更新することと、をさらに含むことができる。この変形例では、クラスタチェーンは、第1のファイルおよび第2のファイルの物理的位置をマスクすることができる。
他の1つのインプリメンテーションでは、第2の方法は、記憶装置の記憶領域に第2のファイルを格納する要求を受け取ることと、記憶装置と関連付けられているファイルシステム構造において第2のファイルを廃棄可能とマーキングすることと、第2のファイルに割り当てられている第2のクラスタチェーンを第2のファイルと関連付けるために、プライマリFATを更新することと、第2のファイルの物理的位置を表すように、廃棄可能FATを更新することと、をさらに含むことができる。
代わりに、第2の方法は、記憶装置と関連付けられているファイルシステム構造において第1のファイルを非廃棄可能ファイルとマーキングすることと、第1のファイルの物理的位置を表すように、プライマリFATを更新することと、第1のファイルの物理的位置を除去するために、廃棄可能FATを更新することと、をさらに含むことができる。第2の方法のこの代案は、第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために第1のファイルと関連付けられている変換ロック識別子の値を識別することをさらに含むことができ、第1のファイルと関連付けられている変換ロック識別子の値の判定が第1のファイルがロックされていないことを示した後に、第1のファイルは非廃棄可能ファイルとマーキングされる。
第2の方法の他の1つのバージョンは、第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために第1のファイルと関連付けられている変換ロック識別子の値を識別することと、第1のファイルと関連付けられている変換ロックの値の判定が第1のファイルがロックされていることを示した後に、第1のファイルを非廃棄可能とマーキングすることを禁じることと、をさらに含む。第2のさらに他の1つのバージョンは、ユーザIDと、第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別することと、識別されたファイルパーミッションに基づいて第1のファイルと関連付けられているプレビューファイルへのアクセスを管理することと、をさらに含む。ユーザIDは共有ユーザIDであり得る。
第2の方法では、第1のファイルを廃棄可能とマーキングすることは、廃棄優先レベルを第1のファイルに割り当てることを含むことができる。第1のファイルに廃棄優先レベルを割り当てることは、対応する値を、第1のファイルに対応するプライマリFATエントリ内のm個の最上位ビットにセットすること、あるいは対応する値を、第1のファイルに対応するファイルシステムエントリ内のデータフィールドにセットすることのうちの少なくとも1つを含むことができる。あるいは、廃棄優先レベルは、第1のファイルの予想される使用、第1のファイルの使用と関連付けられる予想される収益、第1のファイルのファイルタイプ、第1のファイルのサイズ、記憶装置における第1のファイルの位置、および第1のファイルの古さのうちのいずれか1つに従って第1のファイルに割り当てられることができる。
第2の方法では、廃棄可能FATに従う記憶装置の記憶領域を管理することは、廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによるストレージ使用安全マージンの回復、廃棄可能とマーキングされている全てのファイルを除去することによる記憶領域の解放、あるいはより低い性能の記憶モジュールへの第1のファイルのクラスタの再マッピングのいずれか1つまたはこれらの組み合わせを含むことができる。
記憶装置を管理するためのストレージアロケータは、記憶装置および記憶装置のホストとインターフェイスするための通信インターフェイスと、記憶装置と関連付けられているファイルシステムを格納するためのストレージユニットと、記憶装置と関連付けられているファイルシステムを管理するためのプロセッサと、を備えることができ、プロセッサは、プライマリFATと、さらに廃棄可能FATとを包含する記憶装置の記憶領域に第1のファイルを格納する要求を受け取り、第1のファイルの廃棄可能とのマーキングを、記憶装置と関連付けられているファイルシステム構造において行い、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるために、記憶装置にプライマリFATを更新させ、記憶装置における第1のファイルの物理的位置を表すように、記憶装置に廃棄可能FATを更新させ、廃棄可能FATに従って記憶装置の記憶領域を管理するように構成されている。クラスタチェーンは、第1のファイルの物理的位置をマスクする。第1のFATのクラスタチェーンは、第2のFAT内の位置を指すことができる。
あるいは、プロセッサは、記憶装置の記憶領域に第2のファイルを格納する要求を受け取り、記憶装置と関連付けられているファイルシステム構造において第2のファイルを廃棄可能とマーキングし、第1のファイルおよび第2のファイルと関連付けられるクラスタチェーンを第2のファイルと関連付けるために記憶装置にプライマリFATを更新させ、第2のファイルの物理的位置を表すように、記憶装置に第2のFATを更新させるようにさらに構成され、廃棄可能クラスタチェーンは第1のファイルおよび第2のファイルの物理的位置をマスクする。
前述したストレージアロケータの他の1つの変形例では、プロセッサは、記憶装置の記憶領域に第2のファイルを格納する要求を受け取り、記憶装置と関連付けられているファイルシステム構造において第2のファイルを廃棄可能とマーキングし、第2のファイルに割り当てられている第2のクラスタチェーンを第2のファイルと関連付けるために記憶装置にプライマリFATを更新させ、第2のファイルの物理的位置を表すように記憶装置に廃棄可能FATを更新させるようにさらに構成され得る。ストレージアロケータのこの変形例は、記憶装置と関連付けられているファイルシステム構造において第1のファイルを非廃棄可能ファイルとマーキングし、第1のファイルの物理的位置を表すように記憶装置にプライマリFATを更新させ、第1のファイルの物理的位置を除去するために記憶装置に廃棄可能FATを更新させるようにさらにプロセッサを構成させることができる。さらに、プロセッサは、第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために第1のファイルと関連付けられている変換ロック識別子の値を識別するようにさらに構成され、第1のファイルと関連付けられている変換ロック識別子の値の判定が第1のファイルがロックされていないことを示した後に、第1のファイルは非廃棄可能ファイルとマーキングされる。
他のインプリメンテーションでは、ストレージアロケータは、第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために第1のファイルと関連付けられている変換ロック識別子の値を識別し、第1のファイルと関連付けられている変換ロック識別子の値の判定が第1のファイルがロックされていることを示した後に、第1のファイルを非廃棄可能とマーキングすることを禁じるように、プロセッサをさらに構成させることができる。代わりに、ストレージアロケータのプロセッサは、ユーザIDと、第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別し、識別されたファイルパーミッションに基づいて第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するようにさらに構成され得る。
通信インターフェイスと、記憶装置と関連付けられているファイルシステムを管理するためのストレージアロケータとを有する記憶システムも開示されている。ストレージアロケータは、記憶装置の記憶領域における1つ以上のファイルの記憶を管理するためのプロセッサを含むことができ、プロセッサは、前述したストレージアロケータと同じように構成される。種々のインプリメンテーションにおいて、記憶システムのストレージアロケータは、ホストあるいは記憶装置に埋め込まれることができる。記憶システムは、通信インターフェイスを介して要求を受け取るために、通信インターフェイスを介して受け取られた第1のファイルと関連付けられている1つ以上の書き込み要求に基づいて第1のファイルを格納する要求を導出するようにプロセッサが構成されるようにも構成され得る。
記憶装置を管理する第3の方法も開示され、第3の方法は、記憶装置が動作可能に結合されているホストにおいて、記憶装置の記憶領域に第1のファイルを格納する要求を受け取ることと、記憶装置と関連付けられているファイルシステム構造において第1のファイルを廃棄可能とマーキングすることと、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるために、記憶装置にFATを更新させることと、記憶装置における第1のファイルの物理的位置を表すように、データベースを更新することと、FATおよびデータベースに従って記憶装置の記憶領域を管理することと、を含む。
記憶装置を管理する第4の方法は、ホストに動作可能に結合されている記憶装置において、記憶装置の記憶領域に第1のファイルを格納する要求を受け取ることと、第1のファイルを廃棄可能とマーキングすることであって、第1のファイルをマーキングすることが記憶装置と関連付けられているファイルシステム構造において行われることと、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるためにFATを更新することと、記憶装置における第1のファイルの物理的位置を表すようにデータベースを更新することと、記憶装置の記憶領域をFATおよびデータベースに従って管理することと、を含む。
記憶装置を管理する第5の方法は、記憶装置ではなくてホストの観点から、前述した第4の方法のものと関連するステップを含む。より具体的には、第5の方法は、記憶装置が動作可能に結合されているホストにおいて、記憶装置の記憶領域に第1のファイルを格納する要求を受け取ることと、記憶装置と関連付けられているファイルシステム構造において第1のファイルを廃棄可能とマーキングすることと、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるために、記憶装置にFATを更新させることと、記憶装置における第1のファイルの物理的位置を表すように、ロケーションファイルを更新することと、FATおよびロケーションファイルに従って記憶装置の記憶領域を管理することと、を含む。ロケーションファイルは、テキストファイルまたはバイナリファイルなどのファイルであり得る。
記憶装置を管理する第6の方法は、記憶装置が動作可能に結合されているホストにおいて、記憶装置の記憶領域に第1のファイルを格納する要求を受け取ることと、記憶装置と関連付けられているファイルシステム構造において第1のファイルを廃棄可能とマーキングすることと、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるために記憶装置にFATを更新させることと、FATの中で第1のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルすることと、第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む第1のレンジファイルをFAT内に作成することと、FATおよび第1のレンジファイルに従って記憶装置の記憶領域を管理することと、を含む。
第6の方法は、記憶装置の記憶領域に第2のファイルを格納する要求を受け取ることと、記憶装置と関連付けられているファイルシステム構造において第2のファイルを廃棄可能とマーキングすることと、第1のファイルおよび第2のファイルと関連付けられるクラスタチェーンを第2のファイルと関連付けるために記憶装置にFATを更新させることと、FATの中で第2のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルすることと、をさらに含むことができる。その上に、第6の方法は、第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含むようにFAT内の第1のレンジファイルを更新することをさらに含むことができる。
第6の方法の1つの変形例では、この方法は、記憶装置の記憶領域に第2のファイルを格納する要求を受け取ることと、記憶装置と関連付けられているファイルシステム構造において第2のファイルを廃棄可能とマーキングすることと、第2のファイルに割り当てられている第2のクラスタチェーンを第2のファイルと関連付けるために記憶装置にFATを更新させることと、FATの中で第2のファイルと関連付けられている第2のクラスタチェーンの2つ以上のクラスタの順序をスクランブルすることと、第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含むFAT内の第2のレンジファイルを作成することと、をさらに含むことができ、FATおよび第1のレンジファイルに従って記憶装置の記憶領域を管理することは、FAT、第1のレンジファイルおよび第2のレンジファイルに従って記憶装置の記憶領域を管理することを含む。
第6の方法の他の1つの変形例では、この方法は、第1のレンジファイルを含まない、第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを有するFAT内の第2のレンジファイルを作成することをさらに含むことができ、FATおよび第1のレンジファイルに従って記憶装置の記憶領域を管理することは、FAT、第1のレンジファイルおよび第2のレンジファイルに従って記憶装置の記憶領域を管理することを含む。
記憶装置を管理する第7の方法は、ホストではなくて記憶装置の観点から、前述した第6の方法のものと関連するステップを含む。より具体的には、この第7の方法は、ホストに結合されている記憶装置において、記憶装置の記憶領域に第1のファイルを格納する要求を受け取ることと、第1のファイルを廃棄可能とマーキングすることであって、第1のファイルをマーキングすることが記憶装置と関連付けられているファイルシステム構造において行われることと、第1のファイルに割り当てられているクラスタチェーンを第1のファイルと関連付けるためにFATを更新することと、FATの中で第1のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルすることと、第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む第1のレンジファイルをFAT内に作成することと、FATおよび第1のレンジファイルに従って記憶装置の記憶領域を管理することと、を含む。この第7の方法の変形例は、前述した第6の方法のものに類似する。
第8の方法では、記憶装置が動作可能に結合されているホストにおいて廃棄可能ファイルと関連付けられている操作を管理する方法は、オーナーユーザIDを廃棄可能ファイルと関連付けることであって、廃棄可能ファイルが記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含むことと、オーナーユーザIDと関連付けられているアプリケーションで、廃棄可能ファイルと関連付けられている追加のユーザIDのためのパーミッションのセットを定義することと、追加のユーザIDと関連付けられているアプリケーションから、廃棄可能ファイルと関連付けられている操作を実行する要求を受け取ることと、パーミッションのセットに基づいて、追加のユーザIDと関連付けられているアプリケーションが操作を実行できるかを判定することと、その判定に基づいて、廃棄可能ファイルと関連付けられている操作を管理することと、を含む。
この第8の方法の変形例において、オーナーユーザIDと関連付けられているアプリケーションは、廃棄可能ファイルを記憶装置にダウンロードすることができる。あるいは、廃棄可能ファイルと関連付けられている操作は、廃棄可能ファイルと関連付けられている属性を改変することを含むことができる。第8の方法の他の変形例において、この方法は、廃棄可能ファイルと関連付けられている属性を読み出すことをさらに含むことができる。属性は、変換ロック識別子、タイムスタンプ、消費意図ユニバーサルリソースインジケータ、あるいは優先レベルのうちの少なくとも1つであり得る。第8の方法のさらに他の変形例において、操作は、廃棄可能ファイルを読み出すこと、廃棄可能ファイルへ書き込むこと、廃棄可能ファイルと関連付けられているプレビューデータを書き込むこと、あるいは廃棄可能ファイルと関連付けられているプレビューデータを読み出すことを含むことができる。廃棄可能ファイルは、プレビューデータを含むことができ、あるいは異なるインプリメンテーションではプレビューデータとは別であることができる。
第8の方法の追加のユーザIDは、多数のユーザと関連付けられる共有ユーザIDであることができる。あるいは、第8の方法の追加のユーザIDは、多数のアプリケーションと関連付けられる共有ユーザIDであることができる。第8の方法の1つの追加の変形例では、判定に基づいて廃棄可能ファイルと関連付けられている操作を管理することは、追加のユーザのIDと関連付けられているアプリケーションが廃棄可能ファイルと関連付けられている操作を実行することを禁じることを含むことができる。他の1つの追加の変形例では、判定に基づいて廃棄可能ファイルと関連付けられている操作を管理することは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルと関連付けられている操作を実行することを許可することを含む。
通信インターフェイスと、記憶装置と関連付けられているファイルシステムを管理するためのストレージアロケータとを有する記憶システムも熟慮されている。ストレージアロケータは、記憶装置に格納されている廃棄可能ファイルと関連付けられている操作を管理するためのプロセッサを含むことができ、プロセッサは、オーナーユーザIDを、記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含む廃棄可能ファイルと関連付け、オーナーユーザIDと関連付けられているアプリケーションで、廃棄可能ファイルと関連付けられている追加のユーザIDのためのパーミッションのセットを定義し、追加のユーザIDと関連付けられているアプリケーションから、廃棄可能ファイルと関連付けられている操作を実行する要求を通信インターフェイスを介して受け取り、パーミッションのセットに基づいて、追加のユーザIDと関連付けられているアプリケーションが操作を実行できるかを判定し、その判定に基づいて、廃棄可能ファイルと関連付けられている操作を管理するように構成されている。廃棄可能ファイルと関連付けられている操作を管理するために、プロセッサは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルと関連付けられているプレビューデータを読み出すことを許可するように構成され得る。追加のユーザIDは、多数のユーザと関連付けられる共有ユーザIDあるいは多数のアプリケーションと関連付けられる共有ユーザIDであり得る。
記憶装置を管理する第9の方法は、記憶装置が動作可能に結合されているホストにおいて、プレビューデータを記憶装置に格納することと、プレビューデータを、記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルである廃棄可能ファイルと関連付けることと、アプリケーションがプレビューデータにアクセスすることを許可されるけれども廃棄可能ファイルにアクセスすることを許可されないようにプレビューデータおよび廃棄可能ファイルへのアクセスを管理することと、を含むことができる。廃棄可能ファイルは、プレビューデータとは別個のプレビューデータであり得る。第9の方法の代わりのインプリメンテーションでは、廃棄可能ファイルは映画であって、プレビューデータは映画と関連付けられている映画予告編であることができ、廃棄可能ファイルはテレビ番組であって、プレビューデータはテレビ番組の一部であることができ、廃棄可能ファイルは音楽データであって、プレビューデータは音楽データの一部であることができ、あるいは廃棄可能ファイルはプログラムであって、プレビューデータはプログラムのデモ版であることができる。
第9の方法の1つの代わりのインプリメンテーションでは、アプリケーションがプレビューデータにアクセスすることを許可されるけれども廃棄可能ファイルにアクセスすることを許可されないようにプレビューデータおよび廃棄可能ファイルへのアクセスを管理することは、廃棄可能ファイルと関連付けられているリリース日の前の期間中にアプリケーションがプレビューデータにアクセスすることを許可されるけれども廃棄可能ファイルにはアクセスすることを許可されないようにプレビューデータおよび廃棄可能ファイルへのアクセスを管理することを含むことができる。
ダウンロード管理
前に記述した、スマートキャッシングおよびスマートキャッシングHDとも称されるデータを管理する方法にさらに加えて、記憶装置の記憶領域への廃棄可能ファイルのダウンロードを管理するスマートキャッシュ手法が提供される。一般的に、或るインプリメンテーションでは、ストレージアロケータの一部であり得るダウンロードマネージャは、廃棄可能ファイルを記憶装置にダウンロードするために利用され得るネットワークのタイプ、記憶装置に利用され得る電力条件、廃棄可能ファイルを記憶装置にダウンロードする要求と関連付けられている期間、および/または記憶装置と関連付けられている利用可能なストレージの量などのダウンロード条件に基づいて、記憶装置の記憶領域への廃棄可能ファイルのダウンロードを遅延させるかどうかを判定することができる。
例えば、ダウンロードマネージャは、廃棄可能ファイルのダウンロードを、廃棄可能ファイルをダウンロードするためにワイヤレスフィデリティ(WiFi)ネットワークおよび/またはセルラーネットワークが利用可能になるまで、遅延させると決定することができる。同様に、ダウンロードマネージャは、記憶装置が電源に結合されているかあるいは記憶装置と関連付けられているバッテリの電力レベルが所定のレベルより高い間は廃棄可能ファイルのダウンロードを遅延させないと決定することができるけれども、ダウンロードマネージャは、記憶装置と関連付けられているバッテリが充電中でありかつ/または記憶装置と関連付けられているバッテリの電力レベルが所定のレベルより低い間は廃棄可能ファイルのダウンロードを遅延させると決定することができる。さらに、ダウンロードマネージャは、ネットワーク輻輳が激しいかもしれない営業時間中に要求された廃棄可能ファイルのダウンロードを、ネットワークが輻輳していないかもしれない午後8時以降などの晩まで遅延させると決定することができ、あるいはダウンロードマネージャは、平日に要求された廃棄可能ファイルのダウンロードを週末まで遅延させると決定することができる。ダウンロードマネージャは、さらに、廃棄可能ファイルを記憶装置の記憶領域に格納する前の記憶装置で利用可能なストレージの量が所定のレベルより高くなるまで、廃棄可能ファイルのダウンロードを遅延させることができる。
図28は、記憶装置の記憶領域への廃棄可能ファイルのダウンロードを管理する方法のフローチャートである。ステップ2802で、ファイルを記憶装置の記憶領域に格納する要求が受け取られ、ファイルは、廃棄可能ファイルであって、記憶装置と関連付けられているデータ構造においてデータと関連付けられる。あるインプリメンテーションでは、データ構造はファイルシステム構造を含むことができる。ステップ2804で、ファイルは「廃棄可能ファイル」とマーキングされる。あるインプリメンテーションでは、データ構造のファイルシステム構造は、ファイルが廃棄可能ファイルであることを示すようにマーキングされる。他のインプリメンテーションでは、ファイルが廃棄可能ファイルであることを示すようにファイル自体がマーキングされる。
ステップ2806で、或るインプリメンテーションではストレージアロケータの一部であり得るダウンロードマネージャは、廃棄可能ファイルを記憶装置の記憶領域に格納するために、要求と関連付けられているダウンロード条件を判定する。例えば、ダウンロードマネージャは、廃棄可能ファイルを記憶装置にダウンロードするために利用され得るネットワークのタイプ、廃棄可能ファイルを記憶装置にダウンロードするときに記憶装置が利用し得る電力条件、廃棄可能ファイルを記憶装置の記憶領域に格納する要求と関連付けられている時刻を判定することができ、かつ/または記憶装置で利用し得る記憶スペースの量を判定することができる。
ステップ2808で、ダウンロードマネージャは、判定されたダウンロード条件に基づいて廃棄可能ファイルの記憶装置へのダウンロードを遅延させるか否かを決定し、ステップ2810で、ダウンロードマネージャは、記憶装置への廃棄可能ファイルのダウンロードを遅延させるか否かの決定に基づいて記憶装置への廃棄可能ファイルのダウンロードを管理する。ステップ2810で、ダウンロードマネージャは、ダウンロード条件と関連付けられているパラメータが満たされるまで、記憶装置への廃棄可能ファイルのダウンロードを遅延させることができる。例えば、ダウンロードマネージャは、廃棄可能ファイルを記憶装置にダウンロードするためにWiFiネットワークおよび/またはセルラーネットワークが利用可能になるまで廃棄可能ファイルのダウンロードを遅延させることができ、ダウンロードマネージャは、記憶装置が電源と結合されるかあるいは記憶装置と関連付けられているバッテリの電力レベルが所定のレベルより高くなるまで廃棄可能ファイルのダウンロードを遅延させることができ、かつ/またはダウンロードマネージャは、廃棄可能ファイルを記憶装置の記憶領域に格納する前の記憶装置内の利用可能なストレージの量が所定のレベルより高くなるまで廃棄可能ファイルのダウンロードを遅延させることができる。
ステップ2812で、ダウンロードマネージャを含み得るストレージアロケータは、前に記述したように、ファイルが廃棄可能ファイルであるとするマーキングに基づいて、ダウンロードされた廃棄可能ファイルの記憶装置の記憶領域における記憶を管理する。
或るインプリメンテーションでは、1つ以上のプロセッサは、コンピュータ可読の非一時的記憶媒体などのメモリに格納されている命令に基づいて図28に関して前に記述した動作を行うように構成され得るということを理解すべきである。その1つ以上のプロセッサは、ホスト、記憶装置、あるいはその両方の組み合わせ上に置かれることができる。
ファイルをマーキングして、関連付けられているファイルシステムにおいてそれらに廃棄レベルを割り当てる、ここで開示された方法は多くの有益な応用例を持つことができて、その1つは、ユーザファイルのために充分な記憶スペースを保証するためにストレージ使用安全マージンを回復することであるということに留意すべきである。例えば、ファイルに割り当てられた廃棄レベルは、より性能の低いフラッシュモジュールにファイルクラスタを再マッピングするためあるいは要求があり次第クラスタをクリアするために使用され得る。
冠詞は、ここでは、文脈に応じて冠詞の文法上の目的語の1つまたは2つ以上(すなわち、少なくとも1つ)に言及するために使用される。例を挙げると、文脈に応じて、「エレメント」は、1つのエレメントまたは2つ以上のエレメントを意味することができる。「・・・を含む」という用語は、ここでは、「・・・を含むが、・・・に限定されない」という句を意味するように用いられ、この句と交換可能に用いられている。「または」や「および」という用語は、文脈が明らかに別のことを示していない限り、「および/または」という用語を意味するように用いられ、これらの用語と交換可能に用いられている。「・・・など(のような)」という用語は、ここでは、「・・・など(のような)であるが、・・・に限定されない」という句を意味するように用いられ、この句と交換可能に用いられている。
発明の代表的な実施形態をこのように記述して、開示された実施形態の改変形が発明の範囲内にあるということを当業者であれば理解できるはずである。従って、代替の実施形態は、より多くのモジュール、より少数のモジュールおよび/または機能的に同等のモジュールを含むことができる。本願明細書における開示は、SD駆動フラッシュメモリカード、フラッシュ記憶装置、非フラッシュ記憶装置、ユニバーサルシリアルバス(「USB」)インターフェイスを備える「ディスクオンキー」装置、USBフラッシュドライブ(「UFD」)、マルチメディアカード(「MMC」)、セキュアデジタル(「SD」)、ミニSD(miniSD)、およびマイクロSD(microSD)などの種々のタイプの大容量記憶装置に関連している。従って、添付の特許請求の範囲は、本願明細書における開示によって限定されない。従って、前の詳細な記述は限定ではなくて例示と見なされるべきこと、また本発明の趣旨および範囲を定義するべく意図されているのは全ての同等物を含む添付の特許請求の範囲であるということが意図されている。