廃棄可能ファイル
本願は、記憶装置を管理する方法およびシステムを含む。1つのインプリメンテーションでは、ホストまたは記憶装置に存在するストレージアロケータが、記憶装置の記憶領域にファイルを格納する要求を受け取る。ストレージアロケータは、記憶装置と関連付けられているファイルシステム構造においてファイルを廃棄可能とマーキングし、ファイルに割り当てられているクラスタチェーンをファイルと関連付けるためにプライマリファイルアロケーションテーブル(「FAT」)を更新する。ストレージアロケータは、さらに、ファイルの物理的位置を表すように廃棄可能FATまたはデータベースを更新するかあるいはファイルの物理的位置を記憶する1つ以上のロケーションファイルを生成することができる。ストレージアロケータは、その後、FATと、ファイルの物理的位置を示す廃棄可能FAT、データベース、または1つ以上のロケーションファイルとに基づいて記憶領域装置を管理する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には記憶装置に関し、特に記憶装置においてファイルを管理する方法および装置に関する。
【背景技術】
【0002】
関連出願
本願は、2008年12月16日に出願された継続中の米国特許出願第12/336,089号(特許文献1)の一部継続出願であり、また2009年3月10日に出願された米国仮特許出願第61/159,034号(特許文献2)の利益を主張し、その各々の全体が本願明細書において参照により援用されている。
【0003】
不揮発性記憶装置の使用は、それらが携帯可能で物理的サイズが小さく記憶容量が大きいので、長年にわたって急速に拡大してきている。いろいろなデザインの記憶装置が存在する。或る記憶装置は「埋め込まれている」と見なされるが、それは、それらが協同するホスト装置からユーザによって取り外すことができないし、また取り外すように意図されてもいないということを意味する。他の記憶装置は取り外し可能であるが、それは、ユーザがそれらを1つのホスト装置から(例えば、デジタルカメラから)他のホスト装置へ移すことができるか、あるいは1つの記憶装置を他の記憶装置と取り替えることができるということを意味する。
【0004】
記憶装置に格納されているデジタルコンテンツは、記憶装置のホストから生じたものであり得る。例えば、代表的なホストであるデジタルカメラは、画像を捉えて、それらを対応するデジタルデータに変換する。デジタルカメラは、次にそのデジタルデータを、そのデジタルカメラと協同する記憶装置に格納する。記憶装置に格納されているデジタルコンテンツは、リモートソースから生じたものでもあり、それは、例えばデータネットワーク(例えば、インターネット)または通信ネットワーク(例えば、セルラー電話ネットワーク)を介して記憶装置のホストに送られ、その後にホストによって記憶装置にダウンロードされ得る。リモートソースは、例えば、サービスプロバイダまたはコンテンツプロバイダであり得る。サービスプロバイダおよびコンテンツプロバイダは、以降、一まとめに「発行者」と称される。
【0005】
記憶装置のユーザは、発行者からメディアコンテンツあるいは広告を要求することによってメディアコンテンツおよび広告を自発的にダウンロードすることができる。しかし、時には、発行者は、自分たちの収入を増やそうとして、ユーザの許可を求めずに、さらに時にはユーザがそのようなコンテンツが自分の記憶装置にダウンロードされたことに気づかずに、コンテンツをユーザに送る。発行者がユーザの同意を得ずにユーザに送るコンテンツは、ここでは「非請求コンテンツ」と称される。しばしば、非請求コンテンツは、発行者に料金を支払った後あるいは支払うと約束した後に、ユーザにより消費されるように意図される。
【0006】
非請求コンテンツをユーザの記憶装置にダウンロードすることにより、発行者は、ユーザが結局その非請求コンテンツを料金と引き換えに消費し、自分たちの収入が増えることを望む。非請求コンテンツをユーザの同意を求めずに記憶装置に格納し、ユーザがそれらのコンテンツを料金と引き換えに消費することを望むという発行者は、メディア発行分野では「予測委託販売(predictive consignment)」として知られている概念である。しかし、非請求コンテンツは、記憶装置のユーザが、それが存在することを知らないで、それを消費することを望まないのに、記憶装置に格納されたままになることがある。非請求コンテンツを記憶装置に格納すれば、記憶装置上の利用可能な(すなわち、空いている)ユーザ記憶スペースが減り、それはユーザの見地からは望ましくない。他の誰か(すなわち、或る発行者)が記憶装置上の記憶スペースの一部を占拠したためにユーザ自身のコンテンツ(例えば、音楽ファイル)のための記憶装置内のスペースが少なくなっていること、あるいは非請求コンテンツを削除することによってそのように占拠されている記憶スペースを回収しなければならないかも知れないということにユーザが気づくかも知れない。
【0007】
ユーザの記憶スペースの部分を占拠するという問題に対する1つの部分的な解決策として、発行者のウェブサイトをブロックすることなどにより、記憶装置への発行者のアクセスをブロックすることが挙げられる。この解決策は、ユーザには満足なものであるかも知れないけれども、発行者の見地からは、発行者の売り上げが減って潜在的な収入源を失うことになるから問題である。この問題に対する他の1つの部分的な解決策として、コンテンツをホストに発行し(すなわち、コンテンツファイルをこれらのホストの記憶装置に格納し)、コンテンツを、それが無意味になったら、除去することが挙げられる。換言すれば、コンテンツをもたらした発行者は、その格納されている非請求コンテンツを、コンテンツが無意味になったら、その記憶装置から除去する。非請求コンテンツは、その消費のための時間が経過したならば、あるいはユーザがそれを消費しそうもないという表示があるとき、無意味であると見なされる。
【0008】
従って、別の言い方をすれば、非請求ファイルに伴う問題を処理する必要がある。具体的には、発行者は、自分のビジネスを行う過程で記憶装置への非請求コンテンツのダウンロードを遂行することを許されるべきであるが、そのダウンロードはユーザの体験を思いとどまらせるような決定的な影響を及ぼすべきではない。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許出願第12/336,089号
【特許文献2】米国仮特許出願第61/159,034号
【特許文献3】米国特許出願第12/336,089号
【特許文献4】米国仮特許出願第61/159,034号
【発明の概要】
【0010】
従って、非請求ファイルを、それらを記憶装置に収容するために必要とされる記憶スペースがユーザのファイルのために必要とされない間、記憶装置に格納することができて、ユーザファイルのために最小サイズの空き記憶スペースを保証するために記憶装置から非請求ファイルを除去することができれば有益である。種々の実施形態が、そのようなファイル管理を実行するように設計され、その例がここに提供されている。
【0011】
前述したことを処理するために記憶装置に格納されているファイルあるいは格納されるべきファイルは、記憶装置と関連付けられているファイルシステムの構造において非廃棄可能または廃棄可能とマーキングされる。各々のマーキングされたファイルは、廃棄優先レベルと関連付けられている。新しい発行者のファイル(すなわち、非請求ファイル)は、それを記憶装置に格納してもユーザファイルのために確保されているストレージ使用安全マージンが所望マージンを超えて狭まらない場合に限って、記憶装置に格納されることを許可される。一方、ユーザファイルは、それらを格納するとストレージ使用安全マージンが所望幅を超えて狭まるとしても、記憶装置に格納されることを許される。しかし、そのような場合には、ストレージ使用安全マージンの所望幅は、1つ以上の廃棄可能ファイルを記憶装置から除去することによって、回復される。廃棄可能ファイルは、その廃棄優先レベルが所定の廃棄しきい値と同等またはそれより高い(またはここで説明されるように、より低い)場合に、記憶装置から除去される。
【0012】
或るインプリメンテーションでは、ホスト、記憶装置、あるいはその両方の組み合わせの中に存在するストレージアロケータは、記憶装置の記憶領域に廃棄可能ファイルを格納するためにプライマリファイルアロケーションテーブル(「FAT」)および廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルを利用する。プライマリFATはクラスタチェーンと廃棄可能ファイルとの関連を記憶し、廃棄可能FAT、データベース、または1つ以上のロケーションファイルのうちの1つはファイルの物理的位置を示す。廃棄可能FAT、データベース、または1つ以上のロケーションファイルの中の情報は、廃棄可能ファイルに対応するプライマリFAT内のFATエントリをオーバーライドするために使用される。廃棄可能FAT、データベース、または1つ以上のロケーションファイル内の情報でFATエントリをオーバーライドすることにより、FAT32ファイルシステム検査および修理ユーティリティは、廃棄可能ファイルと関連付けられているクラスタをデータフラグメント(オーファンクラスタとしても知られている)と見なすのではなくて割り当てられていると見なし、これによりユーティリティが廃棄可能ファイルを非廃棄可能ファイルに変えることを妨げる。ストレージアロケータは、プライマリFATおよび廃棄可能FAT、データベース、または1つ以上のロケーションファイルに従って記憶装置の記憶領域を管理する。
【0013】
廃棄可能ファイルシステムは、さらに、アプリケーションが廃棄可能ファイルと関連してどんな操作を実行できるかを、そのアプリケーションと関連付けられているユーザIDに基づいて制御する能力を提供する。ユーザIDは、廃棄可能ファイルを作成したアプリケーションまたはユーザを特定するオーナーユーザIDであり得る。通例、オーナーユーザIDと関連付けられているアプリケーションは、追加のユーザIDと関連付けられているどんなアプリケーションが廃棄可能ファイルにアクセスできるか、さらに、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに関してどんなアクションを取り得るかを定義する能力を与えられる。追加のユーザIDを単一のアプリケーションまたは単一のユーザと関連付けることができ、あるいは追加のユーザIDは多数のアプリケーションまたは多数のユーザと関連付けられる共有ユーザIDであり得る。
【0014】
種々の代表的な実施形態が、それらの例が限定的でないという意図を持って、添付の図面に示されている。図を簡略化することを目的として、以下で参照され、図に示されている構成要素は必ずしも一定比率で描かれていないということを理解すべきである。また、適切であると考えられる場合には、同様の、対応する、あるいは類似する構成要素を示すために参照数字が図で反復されることがある。添付図面は次のとおりである。
【図面の簡単な説明】
【0015】
【図1】一実施形態に従う記憶システムのブロック図である。
【図2】他の実施形態に従う記憶システムのブロック図である。
【図3】一実施形態に従うストレージアロケータのブロック図である。
【図4】一実施形態に従ってファイルを管理する方法である。
【図5】一実施形態に従って記憶装置における廃棄可能ファイルの記憶を管理する方法である。
【図6】一実施形態に従ってFAT32構造化ファイルシステムにおいて1つ以上の非請求ファイルをマーキングする方法である。
【図7】FAT32テーブルと関連付けられている代表的なディレクトリ領域である。
【図8】一実施形態に従うFAT32テーブルである。
【図9】一実施形態に従うNTFSテーブルである。
【図10】一実施形態に従うFATベースのファイルシステムの論理イメージである。
【図11】本開示に従うファイルの記憶管理方法を示す。
【図12a】代表的なプライマリFATを示す。
【図12b】代表的な廃棄可能FATを示す。
【図13】プライマリFATおよび廃棄可能FATを用いて記憶装置を管理する方法のフローチャートである。
【図14】FATおよびデータベースを用いて記憶装置を管理する方法のフローチャートである。
【図15】FATおよびロケーションファイルを用いて記憶装置を管理する方法のフローチャートである。
【図16】クラスタチェーンを含み、そのクラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされている代表的なFATを示す。
【図17】代表的なFATおよび関連付けられているロケーションファイルを示し、そのFATはクラスタチェーンを含み、そのクラスタチェーンを構成するクラスタのうちの2つ以上の順序はスクランブルされている。
【図18】クラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを用いて記憶装置を管理する方法のフローチャートである。
【図19】プライマリFATおよび廃棄可能FATを実現するファイルシステムにおいて廃棄可能ファイルがオープンであるときに、その廃棄可能ファイルの変換を阻止するために変換ロックを利用する方法のフローチャートである。
【図20】ファイルシステムにおける代表的なビットマスクユーザIDを示す。
【発明を実施するための形態】
【0016】
次の記述は代表的な実施形態の種々の詳細事項を提供する。しかし、この記述は、特許請求の範囲を限定するように意図されてはいなくて、本発明の種々の原理と、その実施方法とを説明するように意図されている。
【0017】
非請求コンテンツおよび関連する問題を処理するために、ユーザファイルには他のファイルにまさるストレージ優先権が与えられ、その優先権を保証するためにストレージ使用安全マージンが維持される。「ユーザファイル」とは、記憶装置のユーザが進んで格納したか、あるいはそれを記憶装置に格納することを承認したファイルである。例えば、ユーザが自分の記憶装置にダウンロードする音楽ファイルはユーザファイルと考えられる。ユーザにより格納されるように要求されたかあるいは承認されているので、ユーザファイルは「請求」ファイルと考えられる。
【0018】
「その他ファイル」は、ここでは「発行者ファイル」および「非請求ファイル」と称される。「発行者ファイル」は、ユーザがそれを要求していなくて、少なくとも暫時ではなくそれに気づいていないのに記憶装置に格納されているファイルである。ユーザは、非請求ファイルを使用することを望まないかも知れない。使用されない非請求ファイルは、ユーザの記憶装置の高価な記憶スペースを消費しがちである。従って、ここで開示される原理に従って、そのようなファイルは、それらを格納してもストレージ使用安全マージンが狭くならない場合に限って、記憶装置に格納されることを許される。ストレージ優先権は、将来のユーザのファイルのために確保される空き記憶スペース(すなわち、ストレージ使用安全マージン)を維持することによってユーザファイルに与えられる。ストレージ使用安全マージンは、必要なときあるいは望ましいときに常にユーザファイルを記憶装置に格納し得ることを保証するために、維持されなければならない。
【0019】
何らかの理由でストレージ使用安全マージンが所望より狭くなったならば、ストレージ使用安全マージンを回復するために1つ以上の非請求ファイルが記憶装置から除去(すなわち、削除)される。ストレージ使用安全マージンを維持すれば、追加のユーザファイルが記憶装置にダウンロードされる場合に追加のユーザファイルのための記憶スペースが保証される。この目的のために、非請求ファイルは、ストレージファイルシステムの構造において「廃棄可能」とマーキングされ、必要ならば、少なくとも、ストレージ使用安全マージンを維持するために必要な空き記憶スペースを回収するために、後に除去される。
【0020】
ユーザが種々の廃棄可能ファイルを使用する確度は廃棄可能ファイルごとに異なり得るので、各非請求ファイル(すなわち、各廃棄可能ファイル)に、そのファイルを使用する確率、そのファイルの使用と関連付けられた予想収益、そのファイルのサイズ、そのファイルのタイプ、そのファイルの位置、そのファイルの古さ(age )などの1つ以上の基準に従って廃棄優先レベルが前もって割り当てられる。例えば、廃棄優先レベルは、収益の可能性により決定され得る。他の一例では、ユーザは普通は映画の予告編および広告を見たがらないので、映画の予告編あるいは広告は実際の映画より高い廃棄優先順位を有する。他の1つの例では、ユーザにより使用される可能性が最も高い1つ以上の廃棄可能ファイルには最低の廃棄優先レベルが割り当てられ、そのようなファイルは記憶装置から最も除去されそうもないファイルであることを意味する。換言すれば、廃棄可能ファイルの使用確率が高いほど、そのファイルに割り当てられる廃棄優先レベルのレベルは低い。1つ以上の廃棄可能ファイルが除去されても所望のストレージ使用安全マージンが充分に回復されなければ、所望のストレージ使用安全マージンが回復されるまで、さらなる廃棄可能ファイルが記憶装置から除去される。
【0021】
簡単に言えば、ファイルシステムは、コンピュータファイルを格納し組織する方法を実行する。ファイルシステムは、データの格納、階層組織化、操作、ナビゲーション、アクセス、および検索のために実装される抽象データ型およびメタデータのセットを含む。抽象データ型およびメタデータは、それを通してコンピュータファイル(ここでは「データファイル」、あるいは簡単に「ファイル」とも称される)がアクセスされ、操作されおよび起動され得る「ディレクトリツリー」を形成する。「ディレクトリツリー」は、通例、ルートディレクトリとオプションのサブディレクトリとを含む。ディレクトリツリーは、1つ以上の「ディレクトリファイル」としてファイルシステムに格納される。ファイルシステムに含まれるメタデータおよびディレクトリファイルのセットは、ここでは「ファイルシステム構造」と称される。従って、ファイルシステムは、データファイルと、データファイルにアクセスすること、データファイルを操作すること、更新すること、削除すること、および起動することを容易にするファイルシステム構造とを含む。
【0022】
ファイルアロケーションテーブル(「FAT」)は、代表的なファイルシステムアーキテクチャである。FATファイルシステムは、DR−DOS、OpenDOS、MS−DOS、Linux、Windows(登録商標)などを含む種々のオペレーティングシステムに用いられる。FAT構造化ファイルシステムは、どの記憶領域が空いているかあるいは割り当てられているか、および各ファイルが記憶装置のどこに格納されているかに関する情報を集中させるテーブルを使用する。テーブルのサイズを制限するために、記憶スペースは、「クラスタ」と称される隣接するセクタのグループ内のファイルに割り当てられる。記憶装置が進化するにつれて、クラスタの最大数は大きくなり、クラスタを特定するために使われるビットの数は増大してきている。FATフォーマットのバージョンは、テーブルのビットの数から導出される。FAT12は12ビットを使用し、FAT16は16ビットを使用し、FAT32は32ビットを使用する。
【0023】
他の1つのファイルシステムアーキテクチャはニューテクノロジーファイルシステム((「NTFS」)として知られている。現在、NTFSは、後のバージョンのWindows 2000、Windows XP、Windows Server 2003、Windows Server 2008、およびWindows Vistaを含むWindows NTの標準的なファイルシステムである。FAT32およびNTFSは、記憶装置100が備えることのできる代表的なファイルシステムである。
【0024】
図1は、代表的な記憶装置100を示す。記憶装置100は種々のタイプのファイル(例えば、音楽ファイル、ビデオファイルなど)を格納するための記憶領域110を含み、そのうちのいくつかはユーザファイルであり、他は発行者ファイルであり得る。記憶装置100は、データおよび制御線130を介して記憶領域110を管理するストレージコントローラ120も含む。ストレージコントローラ120は、ホストインターフェイス150を介してホスト装置140とも通信する。ホスト装置140は、専用ハードウェアあるいは汎用コンピューティングプラットフォームであり得る。
【0025】
記憶領域110は、例えば、NANDフラッシュタイプのものであり得る。ストレージコントローラ120は、例えば「読み出し」、「書き込み」および「消去」操作、ウェアレベリング(損耗平滑化)などを制御することと、ホスト140との通信を制御することとにより、記憶領域110へ/記憶領域110からのデータ転送およびホスト装置140へ/ホスト装置140からのデータ転送の全てを制御する。記憶領域110は、例えば、ユーザファイルおよび発行者のファイルと、許可されたホスト装置だけによって使用されることが許される保護データと、ストレージコントローラ120によって、内部でだけ使用されるセキュリティデータとを含むことができる。ホスト(例えば、ホスト140)は、記憶領域110に直接アクセスすることはできない。すなわち、例えば、ホスト140が記憶装置100からのデータを求めるかあるいは必要とするならば、ホスト140は、それをストレージコントローラ120から要求しなければならない。記憶装置100に格納されているデータファイルへのアクセスを容易にするために、記憶装置100はファイルシステム160を備えている。
【0026】
記憶領域110は機能的に3つの部分、すなわちユーザ領域170、発行者領域180、および空き記憶スペース190に分けられている。ユーザ領域170は記憶領域110の中の、ユーザファイルが格納される記憶スペースである。発行者領域180は、記憶領域110の中の、発行者ファイルが格納される記憶スペースである。空き記憶スペース190は、記憶領域110の中の空の記憶スペースである。空き記憶スペース190は、ユーザファイルまたは発行者ファイルを収容するために使用され得る。ユーザファイルを空き記憶スペース190に格納すると、そのユーザファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれてユーザ領域170に加えられる。同様に、発行者ファイルを空き記憶スペース190に格納すると、その発行者ファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれて発行者領域180に加えられる。ユーザファイルまたは発行者ファイルが記憶領域110から除去(すなわち、削除)されると、その解放された記憶スペースは空き記憶スペース190に加えられる(戻る)。
【0027】
空き記憶スペース190のサイズがそれを許すならば、記憶装置100のユーザは、ユーザファイルをホスト140から記憶領域110にダウンロードすることができる。そのダウンロードされたユーザファイルは空き記憶スペース190に格納され、前に説明したように、そのファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれてユーザ領域170に加えられる。前に説明したように、ユーザファイルは他の(例えば、発行者)ファイルにまさる優先権を有し、その優先権を保証するために、所望のストレージ使用安全マージンがセットされ、必要ならば、以下で記載される方法で、回復される。
【0028】
ホスト140は、空き記憶スペース190の回復を容易にするためのストレージアロケータ144を含む。ストレージアロケータ144は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせであり得る。一般的に、ストレージアロケータ144は、ホスト140に伝送されたファイル(例えば、ファイル142)がユーザファイルであるのか、それとも発行者ファイルであるのかを判定し、それに応じて、その伝送されたファイルをマーキングする(すなわち、非廃棄可能ファイルあるいは廃棄可能ファイルとマーキングする)。
【0029】
ホスト140に伝送されたファイル(例えば、ファイル142)が、例えばそのファイルがユーザファイルであるので、非廃棄可能であるとストレージアロケータ144が判定すれば、ストレージアロケータ144はそのファイルを記憶領域110に正規の方法で格納する。前に説明したように、記憶領域110の中の、非廃棄可能ファイルを収容する記憶スペースは、ユーザ領域170に加えられるか、あるいはその一部になる。しかし、ホスト140に伝送されたファイルが、例えばそれが発行者ファイルであるので、廃棄可能であるとストレージアロケータ144が判定すれば、ストレージアロケータ144はそのファイルを廃棄可能とマーキングする。空き記憶スペース190が所望のストレージ使用安全マージンより大きければ、ストレージアロケータ144は、そのマーキングされた廃棄可能ファイルをも空き記憶スペース190に格納し、前に説明したように、空き記憶スペース190の中の廃棄可能ファイルを収容する記憶スペースは空き記憶スペース190から差し引かれて(すなわち、空き記憶スペースが減じられて)発行者領域180に加えられる(この追加は、廃棄可能ファイル182として論理的に示されている)。
【0030】
前に説明したように、発行者ファイルがユーザにより使用される確度は発行者ファイルごとに異なり得るので、最小の使用確度を有する発行者ファイルは、記憶領域110からの除去についての第1の候補となる。従って、ファイルを非廃棄可能あるいは廃棄可能とマーキングするほか、ストレージアロケータ144は、廃棄可能ファイルが記憶領域110に格納される前に、それと同時に、あるいはその後に、各廃棄可能ファイルに廃棄優先レベルを割り当てる。
【0031】
ファイルを非廃棄可能または廃棄可能とマーキングすることにより、ストレージアロケータ144により廃棄優先レベルを割り当て、記憶装置100のファイルシステム160(またはそのイメージ)を使用することにより、ストレージアロケータ144は、記憶領域110内のユーザファイルおよび発行者ファイルの数、ならびにそれらのサイズおよび記憶領域110の中での論理位置も「認識する」。この情報(すなわち、ファイルの数、サイズおよび位置)を認識し、特に1つ以上のマーキングされているファイルに基づいて、ストレージアロケータ144は、記憶領域110と、記憶領域110における請求ファイルおよび非請求ファイルの記憶とを管理する。記憶領域110の管理あるいは記憶領域110におけるファイルの記憶の管理は、例えば、廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによるストレージ使用安全マージンの回復、廃棄可能とマーキングされている全てのファイルを除去することによる記憶領域の解放、およびより低い性能の記憶モジュールへのファイルのクラスタの再マッピングを含み得る。記憶領域110またはそれに格納されているファイルの管理は、記憶領域110またはそれに格納されているファイルの他の、追加の、あるいは代わりの態様の管理を含み得る。
【0032】
ストレージアロケータ144は、各廃棄可能ファイルに割り当てられている廃棄レベルにより、将来のユーザファイルのために初めに確保されていた空き記憶スペースを回復するために(すなわち、所望のストレージ使用安全マージンを回復するために)廃棄可能ファイルが廃棄(すなわち、記憶領域110から削除または除去)され得るかあるいはされるべき順序をも認識する。従って、ユーザが新しいユーザファイルを記憶領域110に格納することを希望しているけれども、そのユーザファイルを収容する充分な空き記憶スペースがなければ(それは、ストレージ使用安全マージンが所望より狭いことを意味する)、ストレージアロケータ144は、所望のストレージ使用安全マージンが充分に回復されるまで、より大きな空き記憶スペースを取り戻すために(すなわち、空き記憶スペース190を拡張するために)廃棄可能ファイルを一つずつ反復して削除してゆくために、廃棄可能ファイルに割り当てられている廃棄優先レベルを使用する。前に説明したように、充分に回復されたストレージ使用安全マージンは、将来のユーザファイルのために充分な空き記憶スペースが確保されることを高い確率で保証する。格納されている廃棄可能ファイルをユーザがいつか使用することを望むかも知れないということが考慮され、従って廃棄可能ファイルは、そのファイルを収容している記憶スペースが新しいユーザファイルのために必要とされる場合に限って記憶装置から除去されるので、廃棄可能ファイルは、新しいユーザファイルを格納する要求を受け取ったことに応じて記憶装置100から除去されるかあるいは削除されるに過ぎない。ストレージアロケータ144は、ホスト140に埋め込まれるかあるいは組み込まれてよく、あるいはホスト140の外に(破線のボックス144’として示されている)および記憶装置100の外に存在してもよい。
【0033】
ストレージアロケータ144は、記憶装置100のファイルシステムあるいは記憶装置100と関連付けられているファイルシステムの代表的なイメージを有する。ストレージアロケータ144は、ファイルを非廃棄可能あるいは廃棄可能とマーキングするため、かつ各廃棄可能ファイルに廃棄レベルを割り当てるために、記憶装置のファイルシステムイメージを使用する。一例では、ファイルシステムはFATを含み、この場合にはマーキングは、ファイルと関連付けられているFATエントリの未使用部分において1つ以上の未使用ビットをセットすることによって行われる。様々なファイルシステムが様々な構造を有するので、図6〜1と関連して以下で詳細に説明および記述するように、ファイルのマーキング(すなわち、非廃棄可能あるいは廃棄可能としての)および廃棄レベルの割り当ては、使用されるファイルシステム構造に適合させられる。
【0034】
図2は、他の実施形態に従う携帯可能な記憶装置200のブロック図である。ストレージコントローラ220はストレージコントローラ120と同様に機能し、ストレージアロケータ244はストレージアロケータ144と同様に機能する。ストレージアロケータ244はハードウェア、ファームウェア、ソフトウェアあるいはそれらの任意の組み合わせであり得る。ストレージアロケータ244は内部でストレージコントローラ220と協力する。ファイルを記憶領域210に格納する、そのファイルが廃棄可能ファイルであるか否かのインジケーションを含む、ストレージ要求をストレージコントローラ220がホスト240から受け取るたびに、ストレージコントローラ220は、そのストレージ要求を、さらにそのファイルが廃棄可能か否かを、ストレージアロケータ244に知らせる。ストレージアロケータ244は、その後、記憶装置200と関連付けられているファイルシステムの構造においてそのファイルを非廃棄可能または廃棄可能とマーキングする。通例、ホスト240上で実行するアプリケーションは、ファイルを廃棄可能ファイルであると判定し、そのファイルが廃棄可能ファイルであることを示すフラグまたは他のインジケーションをストレージコントローラ220に送る。ホスト240上で実行するアプリケーションは、そのフラグまたは他のインジケーションを、ファイルを記憶装置に格納することを要求するためのストレージプロトコルの一部として送る。そのようなストレージプロトコルの例は、POSIXファイルシステム機能あるいはjava.ioクラスツリーの使用を含む。
【0035】
新しいファイルが廃棄可能であるとストレージアロケータ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プロトコルより高いレベルで通信するメモリユニットから構成される。
【0036】
図3は、一実施形態に従うストレージアロケータ300のブロック図である。ストレージアロケータ300は、メモリユニット310、プロセッサ320、およびインターフェイス330を含む。メモリユニット310は、記憶装置(例えば、図2の記憶装置200)と関連付けられているファイルシステム構造またはファイルシステム構造のイメージを収容することができる。プロセッサ320は、記憶装置と関連付けられているファイルシステムを管理する。インターフェイス330は、図1に示されているようにホストと、さらに記憶装置のストレージコントローラと、あるいは図2に示されているように記憶装置のストレージコントローラだけと協力するように適合させられ得る。
【0037】
プロセッサ320は、記憶装置の記憶領域にファイルを格納する要求をインターフェイス330を介して受け取り、ストレージアロケータ300と協同する記憶装置と関連付けられているファイルシステムの構造においてファイルを廃棄可能または非廃棄可能とマーキングするように構成されるかあるいは適合させられる。インターフェイス330が図2のストレージコントローラ220に機能的に付属させられているならば(従って、例えば、ファイルレベルのコマンドではなくてSCSIコマンドまたはラップされたUSB/MSCコマンドを受け取るならば)、受け取られた要求はファイルレベルより遥かに低いレベルにある。すなわち、受け取られた要求は、ホストにより適切に解釈されるとファイルに対応することになる論理ブロックアドレスにセクタを格納する要求である。ストレージコントローラ220がNVMHCIプロトコル、またはNFSもしくは類似のプロトコルなどのネットワーキングファイルシステムプロトコルをサポートするならば、ストレージコントローラ220はファイルレベルの要求を受け取ることができる。従って、ストレージコントローラ220などのストレージコントローラとインターフェイス330などのインターフェイスとの間の通信は、NVMHCIあるいはNVMHCIのようなインプリメンテーションに限定されない。通信インターフェイス330は、図3に示されているように、ストレージアロケータ300に不可欠のものであり得る。
【0038】
プロセッサ320は、マーキングされたファイルを記憶装置に送るようにさらに構成されるかあるいは適合させられ、ファイルを廃棄可能とマーキングすることは、そのファイルに廃棄優先レベルを割り当てることを含む。記憶装置により使用されるファイルシステムがFATベースであるならば、プロセッサ320は、マーキングされたファイルに廃棄優先レベルを、そのマーキングされたファイルに対応するFAT内のm個の最上(すなわち、最上位)のビット(例えば、m=4)に、対応する値をセットすることによって、割り当てる。FATエントリ内の最上位ビットにセットされるその対応する値、あるいはNTFSディレクトリのエントリにセットされる値、もしくはそれは、ファイルの属性に関連付けられ得る。「属性」は、FATテーブルまたはNTFSテーブルのヘッダの中の、テーブルに格納されているコンテンツのタイプに関係する情報を包含するメタデータタグあるいは何らかのデータ構造を意味する。「広告」、「プレミアムコンテンツ」、および「販売促進(無料)コンテンツ」は、FATテーブルあるいはNTFSテーブルに格納され得るコンテンツの代表的なタイプである。廃棄レベルをセットするための代わりの基準は、例えば、最後にアクセスされたファイル、ファイルのサイズ、ファイルのタイプなどである。
【0039】
ファイルをマーキングするために専用される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」は最高の優先順位あるいは最低の優先順位で廃棄可能であるファイルをそれぞれ示すことができる。
【0040】
プロセッサ320は、非請求ファイルが記憶装置のユーザによって使用されるであろう確度あるいは確率と関連して前に説明したように、マーキングされるファイルに、そのファイルの予想される使用に応じて、廃棄優先レベルを割り当てることができる。プロセッサ320は、マーキングされているファイルの廃棄優先レベルを、新しいファイルを記憶装置に格納する各要求を用いて、あるいはその各要求を受け取ったことに応答して、更新することができる。プロセッサ320は、所与のマーキングされているファイルの廃棄優先レベルを、記憶装置にファイルを格納する1つ以上の新しい要求とは無関係に、更新することができる。例えば、以前は高い優先順位のものであったファイルは、一定時間間隔後にその優先順位を下げられることができる。プロセッサ320は、記憶装置に格納されているファイルを、そのファイルが所定の廃棄しきい値と等しいかまたはそれより大きい廃棄優先レベルと関連付けられているならば、削除する。プロセッサ320は、ファイル書き込みまたは付加の数に基づいて、あるいは記憶装置上の空き記憶スペースの予想される使用または新しい発行者ファイルの可用性に依存して、廃棄しきい値をセット(リセット)することができる。
【0041】
メモリユニット310は、記憶装置に格納されているファイルにプロセッサ320が割り当てている廃棄優先レベルを包含する割り当てテーブル340を収容することができる。さらに、割り当てテーブル340は、ファイルの識別子と、ファイルをファイルに割り当てられている廃棄優先レベルと関連付ける情報とを収容することができる。割り当てテーブル340は、さらに廃棄しきい値を収容することができる。割り当てテーブル340に収容されている情報により、プロセッサ320は所望のストレージ使用安全マージンを回復するためにどの1つまたは複数の廃棄可能ファイルを記憶装置から除去し得るかを特定することができる。
【0042】
新しいファイルを記憶装置に格納する要求を受け取ったことに応答して、プロセッサ320は記憶装置上の空き記憶スペース(f)のサイズを評価し、記憶装置上の空き記憶スペースの評価されたサイズが所定のサイズより大きければ新しいファイルを記憶装置に格納するが、それが所定のサイズより大きくなければ、プロセッサ320は記憶装置内の削除され得る1つ以上の廃棄可能ファイルを探し、そのような1つまたは複数のファイルを発見すると、プロセッサ320は、拡張された空き記憶スペースの総サイズがその所定のサイズに等しいかまたはそれより大きくなるように現在の空き記憶スペース(f)を拡張するためにその1つまたは複数のファイルを削除する。その1つまたは複数の廃棄可能ファイルは、廃棄可能ファイルと関連付けられている廃棄優先レベルが所定の廃棄しきい値(例えば1から15の間、例えば15)に等しいかまたはそれより大きければ、記憶装置から削除され得る。
【0043】
空き記憶スペースが充分に拡張された後、プロセッサ320は、その拡張された空き記憶スペースに新しいファイルが格納されることを許可する。「空き記憶スペースが充分に拡張される」とは、所望のストレージ使用安全マージンを狭めることなく総空き記憶スペースが新しいファイルを収容できるようになるまで、あるいは同等のことであるが、拡張された空き記憶スペースの総サイズが所定のサイズに等しくなるかまたはそれより大きくなるまで、もしくは全ての廃棄可能ファイルが除去されるまで、占拠されている記憶スペースを1つずつ解放することによって空き記憶スペースを広げることを意味する。
【0044】
プロセッサ320は、標準的ないつでも買えるシステムオンチップ(「SoC」)デバイス、またはシステムインパッケージ(「SiP」)デバイス、あるいは実行時に本願明細書に記載されているステップ、操作および評価を行う専用ソフトウェアを有する汎用処理装置であり得る。代わりに、プロセッサ320は、本願明細書に記載されているステップ、操作および評価をハードウェアを用いることによって実行する特定用途向け集積回路(「ASIC」)であり得る。
【0045】
図4は、一実施形態に従う廃棄可能ファイルを格納する方法である。図4は、図1と関連して記述される。ステップ410で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ420でストレージアロケータ144はファイルを「廃棄可能」または「非廃棄可能」とマーキングし、空き記憶スペース190が充分に大きければ、ステップ430で、そのマーキングされたファイルを記憶装置100のストレージコントローラ120に送る(すなわち、記憶領域110に格納するため)。ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。ステップ440で、ストレージアロケータ144は、そのマーキングされたファイルに基づいて、さらに、任意的に、既にマーキングされている1つ以上のファイルに基づいて、記憶領域110(ストレージコントローラ120との通信を通して)あるいは記憶領域110に格納されているファイルを管理する。
【0046】
図5は、一実施形態に従う記憶装置における廃棄可能ファイルの記憶を管理する方法である。図5は、図1と関連して記述される。新しいファイルは、記憶装置100に格納される候補である。記憶装置100のファイルシステム160の現在のイメージを認識して、ストレージアロケータ144は、ステップ510で、現在のサイズがfである空き記憶スペース190がその新しいファイル(すなわち、格納されそうな候補であるファイル)を収容できるかを調べるために空き記憶スペース190の現在のサイズ「f」を評価する。一般的に、ストレージアロケータ144が新しいファイルを処理する方法は、その新しいファイルがユーザファイルであるのか発行者ファイルであるのかによる。従って、ストレージアロケータ144は、まず、新しいファイルがユーザファイルであるのか発行者ファイルであるのかを判定する。
【0047】
新しいファイルがユーザファイルである場合
ステップ520で、ストレージアロケータ144は、空き記憶スペース190が新しいユーザファイルを収容できるかを調べる。空き記憶スペース190が新しいユーザファイルを収容できるならば(ステップ520で「Y」として示されている)、ストレージアロケータ144は、ステップ560で、その新しいユーザファイルを格納することにより所望のストレージ使用安全マージンが狭められるか否かに関わらず新しいユーザファイルを空き記憶スペース190に格納する。ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に所望のストレージ使用安全マージンがより狭くなるとしても(すなわち、所望のストレージ使用安全マージンと比べて)、ストレージアロケータ144は、その新しいユーザファイルの格納に関してそれ以上の処置をとらない。
【0048】
しかし、ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に所望のストレージ使用安全マージンがより狭くなるならば、ステップ550は、所望のストレージ使用安全マージンを維持するために、どの格納されている廃棄可能ファイルが最初に削除されるべきか、どの廃棄可能ファイルが2番目に削除されるべきかなどをストレージアロケータ144が判定する追加のステップを含む。ストレージアロケータ144は、格納されている廃棄可能ファイルにストレージアロケータ144が割り当てた廃棄レベルに基づいて、どの廃棄可能ファイルが最初に削除されるべきか、どれが2番目に削除されるべきかなどを判定する。
【0049】
空き記憶スペース190が新しいユーザファイルを収容できないとストレージアロケータ144がステップ520で判定すると(ステップ520で「N」として示されている)ストレージアロケータ144は、ステップ530で、空き記憶スペース190と、廃棄可能ファイルにより占拠されている記憶スペースとが結合されるとその新しいユーザファイルを格納するために充分であるかを判定する。その結合された記憶スペースが不十分であるならば(ステップ530で「N」として示されている)、どれだけ多くの廃棄可能ファイルが削除されても、その新しいユーザファイルは、そのサイズがより大きいために「非ユーザ」記憶領域に格納され得ないということを意味する。その結合された記憶スペースが充分であるならば(ステップ530で「Y」として示されている)、ストレージアロケータ144は、その新しいユーザファイルのために充分な記憶スペースを解放するために、格納されている廃棄可能ファイルのうちのどの廃棄可能ファイルが削除され得るかをステップ540で調べる。前に説明したように、ストレージアロケータ144は記憶装置のファイルシステムにおいてファイルを非廃棄可能または廃棄可能とマーキングするので、ストレージアロケータ144は、記憶装置100のファイルシステムを用いることによってこれらの廃棄可能ファイルを探す。さらに、マーキングされているファイルにストレージアロケータ144により割り当てられる廃棄レベルも、各廃棄レベルが対応するマーキングされたファイルと関連付けられるように、記憶装置のファイルシステムに埋め込まれる。
【0050】
最初に廃棄されるべき廃棄可能ファイル(「DF」)(このファイルは、以降「DF1」と称される)を発見すると、ストレージアロケータ144は、その記憶スペース(この記憶スペースは、以降「SP1」と称される)を記憶スペース190に加えるためあるいは戻すために、ファイルDF1を削除する。
【0051】
その後、ステップ550でストレージアロケータ144は、拡張された空き記憶スペース190(すなわち、空き記憶スペース190+最後に戻された記憶スペース、すなわちf+SP1)がその新しいユーザファイルを収容できるかを調べる。拡張された空き記憶スペース190(すなわち、f+SP1)が依然としてその新しいユーザファイルを収容できなければ(ステップ550で「N」として示されている)、ストレージアロケータ144は、さらなる記憶スペースを空き記憶スペース190に戻すために(すなわち、削除されるべき次の廃棄可能ファイルを見つけて削除することにより)ステップ550を反復的に繰り返す(反復は555で示されている)。
【0052】
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に格納する。
【0053】
前述したように、ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に実際のストレージ使用安全マージンが所望のストレージ使用安全マージンより狭くなるならば、ステップ560は、所望のストレージ使用安全マージンを回復するためにどの格納されている廃棄可能ファイルが最初に削除されるべきか、どの廃棄可能ファイルが2番目に削除されるべきかなどをストレージアロケータ144が判定する追加のステップを含むことができる。
【0054】
新しいファイルが発行者ファイルである場合
新しいファイルが発行者ファイルであるならば、ストレージアロケータ144は、空き記憶スペース190が所望のストレージ使用安全マージンを狭めることなく新しい発行者ファイルを収容できる場合に限って、その新しい発行者ファイルを(ステップ560で)記憶領域110に格納する。すなわち、新しい発行者ファイルを格納すれば所望のストレージ使用安全マージンを狭める結果となるのであれば、ストレージアロケータ144はその新しい発行者ファイルを記憶領域110に格納しないと決定することができる。そのような場合、ストレージアロケータ144は、そのファイルに関しての処置を控え、その新しい発行者ファイルのための記憶スペースを解放するために記憶装置からファイルを削除しなくてもよい。代わりに、ストレージアロケータ144は、より低い廃棄優先順位を有する廃棄可能ファイルのための記憶スペースを解放するために1つ以上のより高い優先順位の廃棄可能ファイルをステップ540で削除することができる。前に述べたように、ファイルは記憶装置100のファイルシステムにおいてマーキングされ、廃棄レベルは記憶装置100のファイルシステムに埋め込まれ、ファイルがマーキングされ、廃棄レベルがファイルシステムに埋め込まれる方法は、その使用されるファイルシステムに依存し、あるいはその使用されるファイルシステムに適合させられ得る。
【0055】
図6は、一実施形態に従うFAT32構造化ファイルシステムにおいて非請求ファイルをマーキングする方法である。FAT32構造化ファイルシステムはクラスタを使用する。FAT32構造化ファイルシステムと関連して前に記載したように、FAT32クラスタを特定するために使用されるビットの数は32である。図6は、図1と関連して記述される。
【0056】
ステップ610で、FAT32の各クラスタの32ビットのうちのm個の最上位ビット(ここで、m≦4)が、状況に応じてファイルを非廃棄可能または廃棄可能とマーキングするために、および各廃棄可能ファイルに対応する廃棄レベルを保持するために割り当てられ、あるいは専用される。ファイルへの廃棄レベルの割り当ては、対応する値を、そのマーキングされたファイルに対応する割り当てられたmビットにセットすることにより行われる。
【0057】
ステップ620で、ストレージアロケータ144は、記憶装置100のユーザがその非請求ファイルを使用する確度のレベルを評価する。そのファイルを使用する確度の評価は、委託ファイルの技術分野の当業者に知られている種々の方法で実行され得る。例えば、そのファイルを使用する確度の評価は、その記憶装置を使用する人の位置をモニタすること、および/またはモニタされるユーザの以前の経験および好みに基づくことができる。そのファイルを使用する確度の評価は、例えば、そのFATテーブルまたはNTFSテーブル内に格納されているコンテンツのタイプ(例えば、「広告コンテンツ」、「プレミアムコンテンツ」、「販売促進(無料)コンテンツ」など)に基づいてもよい。ストレージアロケータ144は、そのファイルが使用される確度を評価するために代わりのあるいは追加の基準を使用することができる。例えば、最後にアクセスされたファイル、ファイルのサイズ、ファイルのタイプなどであり得るか、あるいはそれらと関連付けられ得る、ファイルの属性または特徴を使用することができる。
【0058】
ユーザがその非請求ファイルを使用する確度のレベルをストレージアロケータ144が評価した後、ストレージアロケータ144は、ステップ630で、非請求ファイルの使用の評価された確度レベルに対応する廃棄優先レベルを割り当てる。その非請求ファイルが記憶装置100のユーザにより使用される確度が高ければ高いほど、廃棄レベルは低くなる。
【0059】
mが4ビットに等しければ、これは、廃棄スケールは1(すなわち、0001)から15(すなわち、1111)までの15個の廃棄レベルを提供する。すなわち、廃棄レベル0は全ての非廃棄可能ファイルに割り当てられ、廃棄レベル1は最低の廃棄優先順位を有する廃棄可能ファイルに割り当てられ、廃棄レベル15は最高の廃棄優先順位を有する廃棄可能ファイルに割り当てられる。ストレージアロケータ144が非請求ファイルに対応する廃棄レベルを割り当てた後、ストレージアロケータ144は、ステップ640で、その非請求ファイルと関連付けられているクラスタの4個の最上位ビットに1と15との間の対応する値をセットする。その非請求ファイルが2つ以上のクラスタと関連付けられているならば、各クラスタの4個の最上位ビットが同じ値にセットされる。
【0060】
ステップ650で、その非請求ファイルは評価される必要のある最後のファイルであるか否かが調べられる。その非請求ファイルが評価される必要のある最後のファイルでなければ(ステップ650で「N」として示されている)、前に記載した方法で他のファイルが評価される。その非請求ファイルが評価される必要のある最後のファイルであるならば(ステップ650で「Y」として示されている)、その非請求ファイルは、その値がステップ640でセットされた各々のためのm個のビットと共に記憶装置に送られる。
【0061】
図7は、FAT32テーブルと関連付けられている代表的なディレクトリテーブル700である。ディレクトリテーブル700は説明のために使用される部分的テーブルであるので、テーブル700はFATディレクトリエントリの全てのフィールドを示してはいない。ディレクトリ領域700は、ファイル名、ファイルのサイズ、および関連する記憶スペースのどこから各ファイルが始まるかなど、関連するファイルシステムに格納されているファイルの細目を収容する。ファイルの細目は、次のフィールドに収容されている。フィールド710は、関連するファイルシステムに格納されているファイルのディスクオペレーティングシステム(「DOS」)ファイル名を収容し、フィールド720はファイルの拡張子を収容し、フィールド730はファイルの種々の属性を収容し、フィールド740はファイルの第1のクラスタ番号(「FCN」)の上位16ビットワードを収容し、フィールド750はファイルの第1のクラスタ番号(「FCN」)の下位部分を収容し、フィールド760はファイルのサイズを収容する。各FCN番号は、ファイルが見出され得る第1の論理クラスタを示す。
【0062】
ディレクトリ領域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のクラスタを示す。
【0063】
図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」)インジケーションであることができる。
【0064】
ディレクトリ領域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)と関連付けられている。
【0065】
前に説明したように、廃棄レベル0は非廃棄可能ファイルに割り当てられる。特定のファイルの各クラスタの最上位十六進数字は、そのファイルに割り当てられた同じ廃棄優先レベルにセットされるということに留意すべきである。例えば、ファイルREALFILEには廃棄レベル「0」が割り当てられ、従って、クラスタ#2、#3、および#4の最上位十六進数字の各々はその値(すなわち、値「0」、これらの「0」値にはアンダーラインが付けられている)を有する。他の1つの例では、そのFCNが(図7に示されているように)「0000 0005」であるファイル「E5Consign」には廃棄優先レベル「1」が割り当てられている。従って、そのファイルに属するクラスタ#5〜12の各々の最上位十六進数字は値「1」を有する(例えば、870のところに示されているように)。換言すれば、本願明細書における開示では特定の廃棄可能ファイルと関連付けられているクラスタの最上位十六進数字、あるいは同等に最上位4ビットは、その特定のファイルに割り当てられている廃棄優先レベルに対応する同じ値にセットされる。前に説明したように、廃棄優先レベルを示すために使われる最上位ビットの数mは4と異なっていてもよい(すなわち、m≦4)。
【0066】
図9は、一実施形態に従う代表的な部分的NTFSテーブル900である。NTFSテーブル900は、ファイル名、ファイルのサイズなどのファイルの細目を収容する。NTFSテーブル900は、「通常の」データフローに従って変化するファイルのための「レギュラー」データ(例えば、データ920)を収容するデータフィールド910を含む。本願明細書における開示では、NTFSテーブル900は、各々の評価されたファイルについての廃棄情報(例えば、廃棄情報930)を収容するための「廃棄情報」フィールド915をも含む。廃棄情報フィールド915は、廃棄優先レベル以外の情報も含むことができる。例えば、廃棄情報フィールド915は、そのファイルを供給したサーバと、その後にファイルが廃棄されなければならない満期時とに関する情報を含むことができる。FATベースのファイルシステムとは違って、NTFSベースのファイルシステムでは廃棄可能ファイルに割り当てられる廃棄値は、1セットのビットにより規定される最大数に限定されない。これは、廃棄値の範囲が自由に選択され得ることを意味する。例えば、廃棄値は1から25までの範囲にわたり得る。NTFSは、代表的な非FATファイルシステムである。一般的に、対応する廃棄値は、マーキングされたファイルに対応する非FATベースのファイルシステムのエントリ内のデータフィールドにセットされ得る。
【0067】
図10は、一実施形態に従う記憶装置のファイルシステム1000の論理配置である。ストレージアロケータ(例えば、図1のストレージアロケータ144)は、自分と協同する記憶装置のファイルシステム1000またはファイルシステム1000のイメージを保持し得るか、あるいはストレージアロケータはファイルシステム1000へのアクセスを持ち得る。
【0068】
ファイルシステム1000は、ブートセクション1010と、ファイルシステム1000と関連付けられているFAT1020と、ディレクトリテーブル1030と、ファイル領域1040と、廃棄可能ファイル領域1050とを含む。FAT1020は、廃棄可能ファイルの廃棄優先レベルを包含する廃棄可能ファイル割り当て領域1025を含む。ディレクトリテーブル1030は、記憶装置に格納されている全てのファイル(すなわち、廃棄可能ファイルおよび/または非廃棄可能ファイル)にアクセスするためのアクセス情報を含む。ファイル領域1040は、非廃棄可能ファイルを包含する。インデックスおよびデータベース領域1045は、廃棄可能ファイルのためのインデックスと、さらに、廃棄可能ファイルに関連付けられているメタデータとを収容する。インデックスおよびデータベース領域1045に収容されているインデックスおよびメタデータは、廃棄レベルを計算するために使用されるけれども、実際の廃棄プロセス中には必要とされない。廃棄可能ファイル領域1050は、廃棄可能ファイルを収容する。
【0069】
図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はそれらのファイルを格納するのを差し控える。
【0070】
この例では、ストレージアロケータ144は、ストレージ使用安全マージン1130を減少させることなくその発行者の3つの非請求ファイルが記憶領域110に格納され得ると判定する。従って、時点T1で、ストレージアロケータ144は、ストレージコントローラ120がその発行者の3つの非請求ファイルを記憶領域110に格納することを許可する。その3つの発行者の非請求ファイルは「P1」、「P2」、および「P3」と称されている。ストレージアロケータ144は、さらにファイルP1、P2、およびP3が記憶装置100のユーザにより使用される確率を判定し、対応する廃棄レベルをそれらのファイルの各々に割り当てる。ストレージアロケータ144は、その後、ファイルに割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。
【0071】
時点T2で、記憶装置100のユーザは、もう2つのファイル(すなわち、ファイル「F3」および「F4」)を記憶領域110に格納することを望む。ストレージアロケータ144は、その追加のファイル(すなわち、ファイルF3およびF4)を格納するのに充分な記憶スペースが記憶領域110にあるかを判定するために記憶装置100内の空き記憶スペース190のサイズ(すなわち、1120のところのf)を再び評価する。この例では、ストレージアロケータ144は、現在空いている記憶スペースはファイルF3およびF4を収容できると判定する。従って、時点T2で、ストレージアロケータ144は、ストレージコントローラ120がファイルF3およびF4を記憶領域110に格納することを許可する。
【0072】
ファイルF3およびF4はユーザファイルであるため、ユーザがファイルF3およびF4を、使用するとしても、何回使用するかとは関係なく、ユーザファイルは発行者ファイルより高い記憶優先順位を有するので、ファイルF3およびF4が記憶装置100のユーザにより使用される確率は重要ではない。従って、ストレージアロケータ144は、ファイルF3およびF4に廃棄レベル「0」を割り当て、その割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。
【0073】
時点T3で、記憶装置100のユーザは、記憶領域110に他の1つのファイル(すなわち、ファイル「F5」)を格納することを望む。ストレージアロケータ144は、その追加のファイル(すなわち、ファイルF5)を格納するのに充分な記憶スペースが記憶領域110にあるかを判定するために記憶装置100内の空き記憶スペース190のサイズ(すなわち、1120のところのf)を再び評価する。
【0074】
この例では、ストレージアロケータ144は、現在空いている記憶スペースがファイルF5を収容できると判定する。従って、時点T3で、ストレージアロケータ144はストレージコントローラ120がファイルF5を記憶領域110に格納することを許可する。図11に示されているように、ユーザファイルF5を格納するとストレージ使用安全マージンが狭まる。すなわち、ファイルF1〜F5およびP1〜P3が記憶領域110に格納された後に残っている記憶領域110内の空き記憶スペースfは、ストレージ使用安全マージン1130より小さい。従って、ストレージアロケータ144は、発行者のファイル(すなわち、P1、P2、およびP3)のうちの1つを除去することによって、ストレージ使用安全マージンを復活させるかあるいは回復する。前に説明したように、ユーザファイルが最大の記憶優先順位を有するので、ストレージ使用安全マージンは、1つ以上の発行者ファイルを除去(すなわち、削除)することによって復活させられるかあるいは回復される。
【0075】
前に記述したように、どの1つの発行者ファイルまたは複数の発行者ファイルが記憶領域110から除去されるべきかの決定は、ストレージアロケータ144が各々の格納されている廃棄可能ファイルに割り当てた廃棄優先レベルに基づいてストレージアロケータ144によって行われる。
【0076】
再び図11を参照して、格納されている発行者ファイルP1〜P3のうちで発行者ファイルP3に最高の廃棄優先レベル(例えば、13)が割り当てられたと仮定される。従って、時点T4でファイルP3が記憶領域110から除去され、これにより空き記憶スペース190を大きくする。時点T4における空き記憶スペース190のサイズ(すなわち、1120のところのf)はストレージ使用安全マージン1130より大きいので、発行者ファイルをそれ以上除去する必要はない。
【0077】
記憶装置100のユーザは、1つ以上のユーザファイルを除去することを望むかもしれない。時点T5でユーザは自分のファイルのうちの2つ(すなわち、ファイルF4およびF5)を除去し、これにより空き記憶スペース190をさらに大きくした。ここで述べられたように、空き記憶スペースの再獲得あるいはストレージ使用安全マージンの回復は必要な数の廃棄可能ファイルを除去することによって行われるので、ファイルF4およびF5の除去は空き記憶スペース190のサイズまたはストレージ使用安全マージンとは無関係である。発行者が他の1つの非請求ファイルを記憶領域110に格納することを望むと想定される。前に記述したように、ストレージアロケータ144は、その発行者の非請求ファイルを記憶領域110に格納するとストレージ使用安全マージン1130が狭まらないかを判定するために空き記憶スペース190のサイズ(すなわち、1120のところのf)を評価する。その発行者の新しい非請求ファイルを格納するとストレージ使用安全マージン1130が狭まるのであれば、ストレージアロケータ144は、そのファイルを格納するのを差し控える。
【0078】
この例では、ストレージアロケータ144は、発行者の新しい非請求ファイル(すなわち、ファイル「P4」)はストレージ使用安全マージン1130を減少させることなく記憶領域110に格納され得ると判定する。従って、時点T6でストレージアロケータ144はストレージコントローラ120が発行者のファイルP4を記憶領域110に格納するのを許可する。ストレージアロケータ144は、ファイルP4が記憶装置100のユーザによって使用される確率も判定し、対応する廃棄レベルをこのファイルに割り当てる。ストレージアロケータ144は、その後、ファイルP4に割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。新しいファイルが記憶領域110に加えられなければならないたびにストレージアロケータ144が空き記憶スペース190の現在のサイズを評価して、どの1つまたは複数の発行者ファイル(あるとすれば)が記憶領域110から除去されなければならないかを判定する間、新しい発行者のファイルおよび新しいユーザファイルを格納すると共に格納されているファイルを除去するプロセスが続行され得る。
【0079】
廃棄可能ファイルへの廃棄レベルの割り当ては、ユーザの経験または選択、ユーザの全地球測位システム(「GPS」)位置、および/または他の基準に基づくことができる。例えば、記憶装置のユーザが(以前のユーザの経験に基づいて)或るタイプの音楽を好みそうに思われるならば、ストレージアロケータは発行者のファイルに、そのファイルがユーザの気に入っているタイプのうちの1つの音楽である音楽を含んでいるならば、割合に低い廃棄優先レベル(例えば、1から15までのスケールの中の3)を割り当てることができる。しかし、発行者の音楽がユーザに嫌われるならば(すなわち、以前のユーザの経験に基づいて)、ストレージアロケータは、その関連する発行者のファイルにより高い廃棄優先レベル(例えば、1から15までのスケールの中の12)を割り当てることができる。廃棄可能ファイルに廃棄レベルを割り当てるために使用される基準は、そのファイルの予想される使用法、そのファイルの使用と関連付けられた予想される収益、そのファイルのタイプ、そのファイルのサイズ、そのファイルの記憶装置の中での位置、そのファイルの古さ、およびここで明示される他の基準またはパラメータを含むことができる。他の基準を、単独でもあるいはここで言及された基準のうちのいずれかと組み合わされても、同様に使用することができ、廃棄レベルの割り当てを1つ以上の基準を用いて行うことができる。さらに、異なる廃棄可能ファイルに廃棄レベルを割り当てるために異なる基準が使用され得る。
【0080】
他の1つの例において、発行者がユーザに位置依存型の広告(すなわち、特定の位置の中で提供される製品またはサービスに関連する広告)を送ることを望むならば、ストレージアロケータは、その発行者の広告に対して、ユーザの変化する位置に応じて変化する廃棄優先レベルを割り当てることができる。すなわち、ユーザが特定の位置から遠ざかるほど廃棄レベルは高くなるであろうが、それは、その特定の位置から離れるほど、ユーザはその特定の位置で提供されるその製品またはサービスを消費することに関心を持たなくなると想定され得るからである。
【0081】
前に記載したように、廃棄可能ファイルのためのクラスタチェーンは、FAT32エントリと関連付けられたファイルを廃棄可能ファイルと特定するフラグと共にFATに記録される。通例、フラグは、各FAT32エントリの4つの最上位ビットに存在する。クラスタチェーンは、廃棄可能ファイルに割り当てられ得るけれども、それらと関連付けられた非廃棄可能ファイルをもたないので、chkdskまたはfsck.vfatなどのユーティリティが廃棄可能ファイルを、「リアル」ファイルとしても知られる非廃棄可能ファイルに転換させ、これによりファイルシステム160のセキュリティを低下させるということが起こり得る。さらに、何らかのFATリカバリユーティリティがFAT32エントリ内の廃棄可能ファイルフラグをリセットする危険がある。FAT32ファイルシステムの検査および修理ユーティリティは、しばしば、ありふれたエラーを修正するためにファイルシステムをステップスルーしてルールを適用する。一般的に、これらのユーティリティは、ディレクトリテーブル内の第1のクラスタ番号(FCN)コラム内に対応するエントリを持っていないFAT内のクラスタチェーンを探すことができる。ユーティリティは、ディレクトリあるいはファイルエントリを全く持っていないFAT内のクラスタ割当てを不明のデータフラグメント(オーファンクラスタとしても知られている)として扱い、ユーティリティは、これらのオーファンクラスタを削除するか、あるいは対応するファイルエントリをディレクトリテーブル内に作成することができる。本願明細書に記載されている廃棄可能ファイルシステムは、そうでなければオーファンクラスタと見なされるであろうものを使用することができるので、ユーティリティは、間違って廃棄可能ファイルを非廃棄可能ファイルに変えたり、あるいは廃棄可能ファイルを完全に除去したりすることがある。
【0082】
これらの問題を処理するために、或るインプリメンテーションでは、ストレージアロケータ144は廃棄可能ファイルをプライマリFAT内のクラスタチェーンと関連付けることができ、そのクラスタチェーンは廃棄可能ファイルの物理的位置を隠し、ストレージアロケータ144はファイルの物理的位置を廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルに格納する。通例、その廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルはプライマリFATには不可視であり、或るインプリメンテーションでは、ホストオペレーティングシステムがその廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルにアクセスすることを阻止する、その廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルと関連付けられた属性がイネーブルされ得る。
【0083】
前に記したように、FAT32内の各エントリは32ビットであるけれども、下位28ビットだけが使用される。通例、上位4ビットは使われずに残され、ゼロにセットされる。(FAT32の準拠インプリメンテーションは、上位4ビットを、たとえ割り当てられているクラスタにおいてセットされていても、無視し、新しいFATエントリを書き込む時には上位4ビットをゼロにセットするように要求される。)廃棄可能ファイルは、そのファイルと関連付けられている各クラスタチェーンのFATエントリの上位4ビットの中のフラグによって非廃棄可能ファイルから区別される。標準的FAT32ドライバは、廃棄可能ファイルを割り当てられているスペースと見なし、それらの上に書き込まない。しかし、ストレージアロケータ144は、記憶装置110において空きスペース割当てを維持するために、図5に関して前に記述したものなどの操作を定期的に実行することができ、廃棄可能ファイルに割り当てられているスペースを回復することができる。
【0084】
プライマリ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つ以上のロケーションファイルの中のディレクトリまたはファイルエントリと関連付けられていると見なすからである。
【0085】
ファイルシステム160が、廃棄可能ファイルとマーキングされているファイルを格納するためにプライマリFAT1200と廃棄可能FAT1201とを利用するとき、ストレージアロケータ144は、廃棄可能ファイルに割り当てられているクラスタチェーン1202をファイルと関連付けるために図12aに示されているようにプライマリFAT1200を更新する。一般的に、クラスタチェーン1202は、クラスタチェーン1202と関連付けられている廃棄可能ファイルと同じか、あるいはそれより大きいサイズであり得る。或るインプリメンテーションでは、クラスタチェーン1202は、プライマリFATにおいて廃棄可能ファイルの物理的位置をマスクする。通例、図7および8に関して前に記述したように、エントリ1204から始まるクラスタチェーン内の各クラスタは、エントリ1206に示されている1FFF FFFFなどの値がクラスタチェーン1202の終わりを示すまで、クラスタチェーン1202の次の連続クラスタを指す。しかし、他のインプリメンテーションでは、クラスタチェーンの各クラスタは、そのクラスタがクラスタチェーンの次の連続クラスタを指すのではなくて個別に割り当てられたクラスタであることを示す1FFF FFFFなどの値を持つことができる。
【0086】
図12bに示されているように、クラスタチェーン1202の第1のエントリ1204は、廃棄可能FAT1201内の対応するエントリ1208を指す。図7および8に関して前に記述したように、各ファイルについて、廃棄可能FAT1201の中のクラスタチェーン1202内の各クラスタは、エントリ1210において示されている1FFF FFFFなどの値がファイルのEOFを示すまでファイルの次の順のクラスタを指す。
【0087】
1つのクラスタチェーン1202は2つ以上のファイルと関連付けられ得るということを理解すべきである。例えば、図12bに示されているように、クラスタチェーン1202は、第1のファイル1212のためのクラスタ#6(エレメント1208)からクラスタ#9(エレメント1210)までのクラスタの第1のセットを含み、第2のファイル1214のためのクラスタ#10からクラスタ#11までのクラスタの第2のセットを含む。
【0088】
さらに、プライマリFAT1200と対応する廃棄可能FAT1201とは2つ以上のクラスタチェーンを含み得るということを理解すべきである。例えば、図12aおよび12bに示されているように、プライマリFATは、クラスタ#6からクラスタ#11までのクラスタチェーン1202を含むことができ、クラスタ#20からクラスタ#22までの第2のクラスタチェーン1216を含むことができる。
【0089】
他のインプリメンテーションでは、プライマリFAT1200と廃棄可能FAT1201とを使用するのではなくて、ファイルシステムは、前述したように、1つ以上のファイルをクラスタチェーンと関連付けるためにプライマリFAT1200を利用することができ、クラスタチェーンと関連付けられた1つ以上の廃棄可能ファイルの物理的位置を格納するために廃棄可能FATの代わりにデータベースまたは1つ以上の別々のロケーションファイルを利用することができる。データベースまたはロケーションファイルは、ファイルシステムの非廃棄可能領域に格納されるテキストファイルまたはバイナリファイルであり得る。
【0090】
図13は、プライマリFATと廃棄可能FATとを用いて記憶装置を管理する方法である。図13は、図1と関連して記述される。ステップ1310で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。或るインプリメンテーションでは、ストレージアロケータ144は、ファイル142を記憶装置100に格納する要求を、ファイルと関連付けられている1つ以上の書き込み要求に基づいて導出する。
【0091】
ステップ1320で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1320で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0092】
ステップ1330で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにプライマリFATを更新する。ステップ1340で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すように廃棄可能FATを更新する。ステップ1350で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをマーキングされているファイルに基づいて廃棄可能FATに従って管理する。記憶領域の管理は、図5に関連して前に記述したものと同様である。
【0093】
図14は、FATとデータベースとを用いて記憶装置を管理する方法である。図14は、図1と関連して記述される。ステップ1410で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1420で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1420で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0094】
ステップ1430で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1440で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すようにデータベースを更新する。ステップ1450で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをFATおよびデータベースに基づいて管理する。
【0095】
図15は、FATとロケーションファイルとを用いて記憶装置を管理する方法である。図15は、図1と関連して記述される。ステップ1510で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1520で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1520で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0096】
ステップ1530で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1540で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すようにロケーションファイルを更新する。ステップ1550で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをFATおよびロケーションファイルに基づいて管理する。
【0097】
さらに他のインプリメンテーションでは、セキュリティを強化し、dosfsck(fsck.vfatとしても知られている)またはchkdskなどのファイルシステム完全性ユーティリティによってファイルシステムが破壊されたり損なわれたりしないように、ストレージアロケータ144は、廃棄可能ファイルの物理的位置を記憶している廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルを読まなくてはクラスタチェーンが再構築され得ないことを保証するために、廃棄可能ファイル領域においてクラスタをクラスタチェーンにシーケンシャルに割り当てない。さらに、dosfsckなどのユーティリティが、廃棄可能ファイルを非廃棄可能ファイルに変えたり、ファイルが廃棄可能であることを示すファイルの上位ビットに存するフラグをリセットしたりしないように、クラスタチェーンのスクランブルされているクラスタのうちの1つ以上と関連付けられるレンジファイルがFATにおいて生成される。或るインプリメンテーションでは、ホストオペレーティングシステムがレンジファイルにアクセスすることを阻止するために、レンジファイルと関連付けられている隠し属性、システム属性、ディレクトリ属性、あるいはボリューム属性などの属性がイネーブルされ得る。
【0098】
図16は、クラスタチェーンを含んでいて、そのクラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを表すチャートである。図16に示されているように、エントリ1602から始まるクラスタチェーンを構成するクラスタは連続していない。例えば、エントリ1602から始まるクラスタチェーンの順序はクラスタ#13、クラスタ#9、クラスタ#7、クラスタ#18、およびクラスタ#21である。このFATでは、図7および8に関して前に記述したように、各クラスタの値は、クラスタチェーン内の次のクラスタを指す。
【0099】
1つ以上のファイルと関連付けられているクラスタチェーンを構成するクラスタの順序がスクランブルされていることに加えて、ファイルと関連付けられているクラスタチェーンの1つ以上のクラスタを含む1つ以上のレンジファイルがFATにおいて作成され得る。或るインプリメンテーションでは、各レンジファイルは、クラスタチェーンの一部であるクラスタの範囲の中の全てのクラスタを表すことができる。レンジファイルと、クラスタチェーンを構成するクラスタとが関連しているために、chkdskまたはfsck.vfatなどのユーティリティは廃棄可能ファイルを非廃棄可能ファイルに変えず、FATリカバリユーティリティは、ファイルが廃棄可能ファイルであるというFAT32エントリインジケーション内のフラグをリセットしない。
【0100】
図17は、FAT内に作成された1つ以上のレンジファイルを示すチャートであり、その各々は、エントリ1602から始まるクラスタチェーンのうちの少なくとも1つのクラスタを記憶する。例えば、第1のレンジファイル1604は、エントリ1602から始まるクラスタチェーンからのクラスタ#7およびクラスタ#9を記憶し、第2のレンジファイル1606は、エントリ1602から始まるクラスタチェーンからのクラスタ#13、クラスタ#18、およびクラスタ#21を記憶する。
【0101】
レンジファイルは、2つ以上のクラスタチェーンからのクラスタを記憶することができる。例えば、エントリ1602から始まるクラスタチェーンからの上でリストされたクラスタのほかに、第1のレンジファイル1604は、エントリ1608から始まるクラスタチェーンからのクラスタ#5およびクラスタ#10を記憶することができる。同様に、エントリ1602から始まるクラスタチェーンからの上でリストされたクラスタのほかに、第2のレンジファイル1606は、エントリ1608から始まるクラスタチェーンからのクラスタ#16、クラスタ#17、およびクラスタ#22を記憶することができる。
【0102】
図18は、クラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを用いて記憶装置を管理する方法である。図18は、図1と関連して記述される。ステップ1810で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1820で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1820で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0103】
ステップ1830で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられているクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1840で、ファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序は、記憶装置100内のメモリの量、クラスタチェーンの総サイズ、クラスタチェーンの2つの連続するクラスタの間のクラスタの数、ならびに/または消去ブロックサイズ、割り当てられたブロック内の各論理アドレスの物理的ブロックアドレス、および/または物理的ブロックアドレスと関連付けられている各ページのためのウェアレベリングデータを考慮できるフラッシュメモリ管理アルゴリズムなどの要素に基づいてFATの中でスクランブルされる。或るインプリメンテーションでは、クラスタチェーンの2つ以上のクラスタの順序は、擬似乱数発生器またはエントロピック乱数発生器を用いてスクランブルされ、前もって割り当てられていない各クラスタについて1つの範囲内のオフセットを提供する。他のインプリメンテーションでは、クラスタチェーンの2つ以上のクラスタの順序は、ホストシステム140および/または記憶装置100からの非決定論的な値を考慮に入れる単方向ハッシュ関数を用いてスクランブルされる。
【0104】
ステップ1850で、第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む第1のレンジファイルがFATにおいて作成される。ステップ1860で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいはFATおよびレンジファイルに基づいて記憶領域110に格納されているファイルを管理する。
【0105】
さらに他のインプリメンテーションでは、廃棄可能ファイルがオープンである間にその廃棄可能ファイルが非廃棄可能ファイルに変換されないことを保証するために変換ロックを実行することができる。例えば、廃棄可能ファイルが記憶装置100にダウンロードされつつある期間中、あるいは廃棄可能ファイルと関連付けられている映画、歌、または番組と関連付けられているリリース日より前に廃棄可能ファイルが記憶装置100にダウンロードされる時などの、廃棄可能ファイルと関連付けられているデータが公衆にリリースされる前の期間中、廃棄可能ファイルはオープンであり得る。一般的に、変換ロックは、変換ロックがセットされているときには廃棄可能ファイルが非廃棄可能ファイルに変換され得ないように働く。
【0106】
図19は、廃棄可能ファイルの変換を、プライマリFATおよび廃棄可能FATを実装するファイルシステムにおいて廃棄可能ファイルがオープンであるときに阻止するために変換ロックを利用する方法である。図19は、図1と関連して記述される。ステップ1910で、ストレージアロケータ144は、廃棄可能ファイルを非廃棄可能ファイルに変換する要求を受け取る。ステップ1920で、ストレージアロケータ144は、廃棄可能ファイルと関連付けられている変換ロック識別子の値を識別する。ステップ1930で、ストレージアロケータ144は、変換ロック識別子の値に基づいて、廃棄可能ファイルが非廃棄可能ファイルに変換され得るかを判定する。通例、ストレージアロケータ144は、変換ロック識別子の値が廃棄可能ファイルがオープンであることを示しているときには廃棄可能ファイルは変換され得ないと判定し、ストレージアロケータ144は、変換ロック識別子の値が廃棄可能ファイルがオープンでないことを示しているときには廃棄可能ファイルは変換され得ると判定する。
【0107】
ステップ1930で廃棄可能ファイルが非廃棄可能ファイルに変換され得ないとストレージアロケータ144が判定すれば、ストレージアロケータ144はステップ1940で廃棄可能ファイルを非廃棄可能ファイルとマーキングすることを禁じる。しかし、廃棄可能ファイルが非廃棄可能ファイルに変換され得るとストレージアロケータ144がステップ1930で判定すれば、ストレージアロケータ144は先へ進み、ステップ1950で、ファイルを、記憶装置100と関連付けられているファイルシステム構造において非廃棄可能ファイルとマーキングし、ステップ1960でファイルの物理的位置を表すようにプライマリFATを更新し、ステップ1970でファイルの物理的位置を除去するために廃棄可能FATを更新する。
【0108】
前に記述した廃棄可能FATの代わりにプライマリFATと共にデータベースまたはロケーションファイルが使用されるときに類似の方法が変換ロックで実行されるということを理解すべきである。
【0109】
或るインプリメンテーションでは、アプリケーションは、アプリケーションと関連付けられている識別子に基づいて、廃棄可能ファイルの非廃棄可能ファイルへの変換あるいは変換ロック識別子の値のチェックなどの操作を実行することを許され得る。通例、廃棄可能ファイルを作成するかあるいはダウンロードするアプリケーションは、ユーザ識別子(ID)を廃棄可能ファイルと関連付けることができる。ユーザIDは、その廃棄可能ファイルを作成したアプリケーションまたはユーザを特定するオーナーユーザIDであり得る。或るインプリメンテーションでは、オーナーユーザIDは4バイト値である。
【0110】
ファイルシステム160は、他のユーザまたはアプリケーションと関連付けられたどんな追加のユーザIDが廃棄可能ファイルにアクセスできるかを定義すると共に、追加のユーザIDが廃棄可能ファイルに関してどんなアクションを取り得るかを定義する能力をオーナーユーザIDに提供する。廃棄可能ファイルの使用法により、追加のユーザIDは単一のアプリケーションまたは単一のユーザと関連付けられることができ、あるいはその追加のユーザIDは多数のアプリケーションまたは多数のユーザと関連付けられる共有ユーザIDであることができるということを理解すべきである。
【0111】
或るインプリメンテーションでは、オーナーユーザIDは、追加のユーザIDと関連付けられているアプリケーションが、廃棄可能ファイルと関連付けられているプレビューデータにアクセスすることを許可することができる。プレビューデータは廃棄可能ファイルの一部であり得るけれども、他のインプリメンテーションでプレビューデータは、廃棄可能ファイルとは別個のものであるけれども廃棄可能ファイルと関連付けられる。或る代表的なインプリメンテーションでは、廃棄可能ファイルは映画であって、プレビューデータは映画と関連付けられた映画予告編を含むことができ、廃棄可能ファイルはテレビ番組であって、プレビューデータはテレビ番組の一部を含むことができ、廃棄可能ファイルは音楽データであって、プレビューデータは音楽データの一部を含むことができ、あるいは廃棄可能ファイルはソフトウェアプログラムであって、プレビューデータはソフトウェアプログラムのデモ版を含むことができる。他の代表的なインプリメンテーションでは、プレビューデータは、廃棄可能ファイルと関連付けられているリリース日の前に廃棄可能ファイルにはアクセスされ得ないけれども廃棄可能ファイルと関連付けられているプレビューデータはアクセスされ、そのリリース日の後は廃棄可能ファイルおよびプレビューデータの両方がアクセスされ得るように、利用され得る。他の1つの例では、オーナーユーザIDは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに、廃棄可能ファイルと関連付けられているユーザIDに基づいて、書き込むことを許可することができる。
【0112】
或るインプリメンテーションでは、ファイルシステムは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに関してどんな操作を実行できるかをオーナーユーザIDが定義するためのパーミッションビットマスクを提供することができる。代表的な使用シナリオのためのパーミッションビットマスクの一例が図20に示されている。しかし、オーナーユーザIDが、図20に示されているパーミッションをオーバーライドし、追加のユーザIDに任意のパーミッションを割り当てることができるということを理解すべきである。
【0113】
図20に示されているパーミッションを参照すると、プロパティ書き込みパーミッションビット2004がセットされているアプリケーションは、変換ロックをイネーブルあるいはディスエーブルする、タイムスタンプをセットするかあるいは消費意図ユニバーサルリソースインジケータ(「URI」)を書き込むなどの属性変更をすることができ、プロパティ読み出しパーミッションビット2002がセットされているアプリケーションは変換ロック、タイムスタンプ、あるいは消費意図URIなどの属性を読み出すことができる。優先順位パーミッションビット2006がセットされているアプリケーションは、廃棄可能ファイルの優先レベルを変更することができる。プレビュー読み出しパーミッションビット2008がセットされているアプリケーションは、廃棄可能ファイルと関連付けられているプレビューデータを読み出すことができ、プレビュー書き込みパーミッションビット2010がセットされているアプリケーションは、廃棄可能ファイルと関連付けられているプレビューデータを書き込むことができる。読み出しパーミッションビット2012がセットされているアプリケーションは廃棄可能ファイルを読み出すことができ、書き込みパーミッションビット2014がセットされているアプリケーションは廃棄可能ファイルに書き込むことができる。通例、廃棄可能ファイルと関連付けられているオーナーユーザIDと関連付けられているアプリケーションだけがこれらのパーミッションを有する。変換パーミッションビット2016がセットされているアプリケーションは、廃棄可能ファイルを非廃棄可能ファイルに変換することができる。
【0114】
ファイルをマーキングして、関連付けられているファイルシステムにおいてそれらに廃棄レベルを割り当てる、ここで開示された方法は多くの有益な応用例を持つことができて、その1つは、ユーザファイルのために充分な記憶スペースを保証するためにストレージ使用安全マージンを回復することであるということに留意すべきである。例えば、ファイルに割り当てられた廃棄レベルは、より性能の低いフラッシュモジュールにファイルクラスタを再マッピングするためあるいは要求があり次第クラスタをクリアするために使用され得る。
【0115】
冠詞は、ここでは、文脈に応じて冠詞の文法上の目的語の1つまたは2つ以上(すなわち、少なくとも1つ)に言及するために使用される。例を挙げると、文脈に応じて、「エレメント」は、1つのエレメントまたは2つ以上のエレメントを意味することができる。「・・・を含む」という用語は、ここでは、「・・・を含むが、・・・に限定されない」という句を意味するように用いられ、この句と交換可能に用いられている。「または」や「および」という用語は、文脈が明らかに別のことを示していない限り、「および/または」という用語を意味するように用いられ、これらの用語と交換可能に用いられている。「・・・など(のような)」という用語は、ここでは、「・・・など(のような)であるが、・・・に限定されない」という句を意味するように用いられ、この句と交換可能に用いられている。
【0116】
発明の代表的な実施形態をこのように記述して、開示された実施形態の改変形が発明の範囲内にあるということを当業者であれば理解できるはずである。従って、代替の実施形態は、より多くのモジュール、より少数のモジュールおよび/または機能的に同等のモジュールを含むことができる。本願明細書における開示は、SD駆動フラッシュメモリカード、フラッシュ記憶装置、非フラッシュ記憶装置、ユニバーサルシリアルバス(「USB」)インターフェイスを備える「ディスクオンキー」装置、USBフラッシュドライブ(「UFD」)、マルチメディアカード(「MMC」)、セキュアデジタル(「SD」)、ミニSD(miniSD)、およびマイクロSD(microSD)などの種々のタイプの大容量記憶装置に関連している。従って、添付の特許請求の範囲は、本願明細書における開示によって限定されない。
【技術分野】
【0001】
本発明は、一般的には記憶装置に関し、特に記憶装置においてファイルを管理する方法および装置に関する。
【背景技術】
【0002】
関連出願
本願は、2008年12月16日に出願された継続中の米国特許出願第12/336,089号(特許文献1)の一部継続出願であり、また2009年3月10日に出願された米国仮特許出願第61/159,034号(特許文献2)の利益を主張し、その各々の全体が本願明細書において参照により援用されている。
【0003】
不揮発性記憶装置の使用は、それらが携帯可能で物理的サイズが小さく記憶容量が大きいので、長年にわたって急速に拡大してきている。いろいろなデザインの記憶装置が存在する。或る記憶装置は「埋め込まれている」と見なされるが、それは、それらが協同するホスト装置からユーザによって取り外すことができないし、また取り外すように意図されてもいないということを意味する。他の記憶装置は取り外し可能であるが、それは、ユーザがそれらを1つのホスト装置から(例えば、デジタルカメラから)他のホスト装置へ移すことができるか、あるいは1つの記憶装置を他の記憶装置と取り替えることができるということを意味する。
【0004】
記憶装置に格納されているデジタルコンテンツは、記憶装置のホストから生じたものであり得る。例えば、代表的なホストであるデジタルカメラは、画像を捉えて、それらを対応するデジタルデータに変換する。デジタルカメラは、次にそのデジタルデータを、そのデジタルカメラと協同する記憶装置に格納する。記憶装置に格納されているデジタルコンテンツは、リモートソースから生じたものでもあり、それは、例えばデータネットワーク(例えば、インターネット)または通信ネットワーク(例えば、セルラー電話ネットワーク)を介して記憶装置のホストに送られ、その後にホストによって記憶装置にダウンロードされ得る。リモートソースは、例えば、サービスプロバイダまたはコンテンツプロバイダであり得る。サービスプロバイダおよびコンテンツプロバイダは、以降、一まとめに「発行者」と称される。
【0005】
記憶装置のユーザは、発行者からメディアコンテンツあるいは広告を要求することによってメディアコンテンツおよび広告を自発的にダウンロードすることができる。しかし、時には、発行者は、自分たちの収入を増やそうとして、ユーザの許可を求めずに、さらに時にはユーザがそのようなコンテンツが自分の記憶装置にダウンロードされたことに気づかずに、コンテンツをユーザに送る。発行者がユーザの同意を得ずにユーザに送るコンテンツは、ここでは「非請求コンテンツ」と称される。しばしば、非請求コンテンツは、発行者に料金を支払った後あるいは支払うと約束した後に、ユーザにより消費されるように意図される。
【0006】
非請求コンテンツをユーザの記憶装置にダウンロードすることにより、発行者は、ユーザが結局その非請求コンテンツを料金と引き換えに消費し、自分たちの収入が増えることを望む。非請求コンテンツをユーザの同意を求めずに記憶装置に格納し、ユーザがそれらのコンテンツを料金と引き換えに消費することを望むという発行者は、メディア発行分野では「予測委託販売(predictive consignment)」として知られている概念である。しかし、非請求コンテンツは、記憶装置のユーザが、それが存在することを知らないで、それを消費することを望まないのに、記憶装置に格納されたままになることがある。非請求コンテンツを記憶装置に格納すれば、記憶装置上の利用可能な(すなわち、空いている)ユーザ記憶スペースが減り、それはユーザの見地からは望ましくない。他の誰か(すなわち、或る発行者)が記憶装置上の記憶スペースの一部を占拠したためにユーザ自身のコンテンツ(例えば、音楽ファイル)のための記憶装置内のスペースが少なくなっていること、あるいは非請求コンテンツを削除することによってそのように占拠されている記憶スペースを回収しなければならないかも知れないということにユーザが気づくかも知れない。
【0007】
ユーザの記憶スペースの部分を占拠するという問題に対する1つの部分的な解決策として、発行者のウェブサイトをブロックすることなどにより、記憶装置への発行者のアクセスをブロックすることが挙げられる。この解決策は、ユーザには満足なものであるかも知れないけれども、発行者の見地からは、発行者の売り上げが減って潜在的な収入源を失うことになるから問題である。この問題に対する他の1つの部分的な解決策として、コンテンツをホストに発行し(すなわち、コンテンツファイルをこれらのホストの記憶装置に格納し)、コンテンツを、それが無意味になったら、除去することが挙げられる。換言すれば、コンテンツをもたらした発行者は、その格納されている非請求コンテンツを、コンテンツが無意味になったら、その記憶装置から除去する。非請求コンテンツは、その消費のための時間が経過したならば、あるいはユーザがそれを消費しそうもないという表示があるとき、無意味であると見なされる。
【0008】
従って、別の言い方をすれば、非請求ファイルに伴う問題を処理する必要がある。具体的には、発行者は、自分のビジネスを行う過程で記憶装置への非請求コンテンツのダウンロードを遂行することを許されるべきであるが、そのダウンロードはユーザの体験を思いとどまらせるような決定的な影響を及ぼすべきではない。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許出願第12/336,089号
【特許文献2】米国仮特許出願第61/159,034号
【特許文献3】米国特許出願第12/336,089号
【特許文献4】米国仮特許出願第61/159,034号
【発明の概要】
【0010】
従って、非請求ファイルを、それらを記憶装置に収容するために必要とされる記憶スペースがユーザのファイルのために必要とされない間、記憶装置に格納することができて、ユーザファイルのために最小サイズの空き記憶スペースを保証するために記憶装置から非請求ファイルを除去することができれば有益である。種々の実施形態が、そのようなファイル管理を実行するように設計され、その例がここに提供されている。
【0011】
前述したことを処理するために記憶装置に格納されているファイルあるいは格納されるべきファイルは、記憶装置と関連付けられているファイルシステムの構造において非廃棄可能または廃棄可能とマーキングされる。各々のマーキングされたファイルは、廃棄優先レベルと関連付けられている。新しい発行者のファイル(すなわち、非請求ファイル)は、それを記憶装置に格納してもユーザファイルのために確保されているストレージ使用安全マージンが所望マージンを超えて狭まらない場合に限って、記憶装置に格納されることを許可される。一方、ユーザファイルは、それらを格納するとストレージ使用安全マージンが所望幅を超えて狭まるとしても、記憶装置に格納されることを許される。しかし、そのような場合には、ストレージ使用安全マージンの所望幅は、1つ以上の廃棄可能ファイルを記憶装置から除去することによって、回復される。廃棄可能ファイルは、その廃棄優先レベルが所定の廃棄しきい値と同等またはそれより高い(またはここで説明されるように、より低い)場合に、記憶装置から除去される。
【0012】
或るインプリメンテーションでは、ホスト、記憶装置、あるいはその両方の組み合わせの中に存在するストレージアロケータは、記憶装置の記憶領域に廃棄可能ファイルを格納するためにプライマリファイルアロケーションテーブル(「FAT」)および廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルを利用する。プライマリFATはクラスタチェーンと廃棄可能ファイルとの関連を記憶し、廃棄可能FAT、データベース、または1つ以上のロケーションファイルのうちの1つはファイルの物理的位置を示す。廃棄可能FAT、データベース、または1つ以上のロケーションファイルの中の情報は、廃棄可能ファイルに対応するプライマリFAT内のFATエントリをオーバーライドするために使用される。廃棄可能FAT、データベース、または1つ以上のロケーションファイル内の情報でFATエントリをオーバーライドすることにより、FAT32ファイルシステム検査および修理ユーティリティは、廃棄可能ファイルと関連付けられているクラスタをデータフラグメント(オーファンクラスタとしても知られている)と見なすのではなくて割り当てられていると見なし、これによりユーティリティが廃棄可能ファイルを非廃棄可能ファイルに変えることを妨げる。ストレージアロケータは、プライマリFATおよび廃棄可能FAT、データベース、または1つ以上のロケーションファイルに従って記憶装置の記憶領域を管理する。
【0013】
廃棄可能ファイルシステムは、さらに、アプリケーションが廃棄可能ファイルと関連してどんな操作を実行できるかを、そのアプリケーションと関連付けられているユーザIDに基づいて制御する能力を提供する。ユーザIDは、廃棄可能ファイルを作成したアプリケーションまたはユーザを特定するオーナーユーザIDであり得る。通例、オーナーユーザIDと関連付けられているアプリケーションは、追加のユーザIDと関連付けられているどんなアプリケーションが廃棄可能ファイルにアクセスできるか、さらに、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに関してどんなアクションを取り得るかを定義する能力を与えられる。追加のユーザIDを単一のアプリケーションまたは単一のユーザと関連付けることができ、あるいは追加のユーザIDは多数のアプリケーションまたは多数のユーザと関連付けられる共有ユーザIDであり得る。
【0014】
種々の代表的な実施形態が、それらの例が限定的でないという意図を持って、添付の図面に示されている。図を簡略化することを目的として、以下で参照され、図に示されている構成要素は必ずしも一定比率で描かれていないということを理解すべきである。また、適切であると考えられる場合には、同様の、対応する、あるいは類似する構成要素を示すために参照数字が図で反復されることがある。添付図面は次のとおりである。
【図面の簡単な説明】
【0015】
【図1】一実施形態に従う記憶システムのブロック図である。
【図2】他の実施形態に従う記憶システムのブロック図である。
【図3】一実施形態に従うストレージアロケータのブロック図である。
【図4】一実施形態に従ってファイルを管理する方法である。
【図5】一実施形態に従って記憶装置における廃棄可能ファイルの記憶を管理する方法である。
【図6】一実施形態に従ってFAT32構造化ファイルシステムにおいて1つ以上の非請求ファイルをマーキングする方法である。
【図7】FAT32テーブルと関連付けられている代表的なディレクトリ領域である。
【図8】一実施形態に従うFAT32テーブルである。
【図9】一実施形態に従うNTFSテーブルである。
【図10】一実施形態に従うFATベースのファイルシステムの論理イメージである。
【図11】本開示に従うファイルの記憶管理方法を示す。
【図12a】代表的なプライマリFATを示す。
【図12b】代表的な廃棄可能FATを示す。
【図13】プライマリFATおよび廃棄可能FATを用いて記憶装置を管理する方法のフローチャートである。
【図14】FATおよびデータベースを用いて記憶装置を管理する方法のフローチャートである。
【図15】FATおよびロケーションファイルを用いて記憶装置を管理する方法のフローチャートである。
【図16】クラスタチェーンを含み、そのクラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされている代表的なFATを示す。
【図17】代表的なFATおよび関連付けられているロケーションファイルを示し、そのFATはクラスタチェーンを含み、そのクラスタチェーンを構成するクラスタのうちの2つ以上の順序はスクランブルされている。
【図18】クラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを用いて記憶装置を管理する方法のフローチャートである。
【図19】プライマリFATおよび廃棄可能FATを実現するファイルシステムにおいて廃棄可能ファイルがオープンであるときに、その廃棄可能ファイルの変換を阻止するために変換ロックを利用する方法のフローチャートである。
【図20】ファイルシステムにおける代表的なビットマスクユーザIDを示す。
【発明を実施するための形態】
【0016】
次の記述は代表的な実施形態の種々の詳細事項を提供する。しかし、この記述は、特許請求の範囲を限定するように意図されてはいなくて、本発明の種々の原理と、その実施方法とを説明するように意図されている。
【0017】
非請求コンテンツおよび関連する問題を処理するために、ユーザファイルには他のファイルにまさるストレージ優先権が与えられ、その優先権を保証するためにストレージ使用安全マージンが維持される。「ユーザファイル」とは、記憶装置のユーザが進んで格納したか、あるいはそれを記憶装置に格納することを承認したファイルである。例えば、ユーザが自分の記憶装置にダウンロードする音楽ファイルはユーザファイルと考えられる。ユーザにより格納されるように要求されたかあるいは承認されているので、ユーザファイルは「請求」ファイルと考えられる。
【0018】
「その他ファイル」は、ここでは「発行者ファイル」および「非請求ファイル」と称される。「発行者ファイル」は、ユーザがそれを要求していなくて、少なくとも暫時ではなくそれに気づいていないのに記憶装置に格納されているファイルである。ユーザは、非請求ファイルを使用することを望まないかも知れない。使用されない非請求ファイルは、ユーザの記憶装置の高価な記憶スペースを消費しがちである。従って、ここで開示される原理に従って、そのようなファイルは、それらを格納してもストレージ使用安全マージンが狭くならない場合に限って、記憶装置に格納されることを許される。ストレージ優先権は、将来のユーザのファイルのために確保される空き記憶スペース(すなわち、ストレージ使用安全マージン)を維持することによってユーザファイルに与えられる。ストレージ使用安全マージンは、必要なときあるいは望ましいときに常にユーザファイルを記憶装置に格納し得ることを保証するために、維持されなければならない。
【0019】
何らかの理由でストレージ使用安全マージンが所望より狭くなったならば、ストレージ使用安全マージンを回復するために1つ以上の非請求ファイルが記憶装置から除去(すなわち、削除)される。ストレージ使用安全マージンを維持すれば、追加のユーザファイルが記憶装置にダウンロードされる場合に追加のユーザファイルのための記憶スペースが保証される。この目的のために、非請求ファイルは、ストレージファイルシステムの構造において「廃棄可能」とマーキングされ、必要ならば、少なくとも、ストレージ使用安全マージンを維持するために必要な空き記憶スペースを回収するために、後に除去される。
【0020】
ユーザが種々の廃棄可能ファイルを使用する確度は廃棄可能ファイルごとに異なり得るので、各非請求ファイル(すなわち、各廃棄可能ファイル)に、そのファイルを使用する確率、そのファイルの使用と関連付けられた予想収益、そのファイルのサイズ、そのファイルのタイプ、そのファイルの位置、そのファイルの古さ(age )などの1つ以上の基準に従って廃棄優先レベルが前もって割り当てられる。例えば、廃棄優先レベルは、収益の可能性により決定され得る。他の一例では、ユーザは普通は映画の予告編および広告を見たがらないので、映画の予告編あるいは広告は実際の映画より高い廃棄優先順位を有する。他の1つの例では、ユーザにより使用される可能性が最も高い1つ以上の廃棄可能ファイルには最低の廃棄優先レベルが割り当てられ、そのようなファイルは記憶装置から最も除去されそうもないファイルであることを意味する。換言すれば、廃棄可能ファイルの使用確率が高いほど、そのファイルに割り当てられる廃棄優先レベルのレベルは低い。1つ以上の廃棄可能ファイルが除去されても所望のストレージ使用安全マージンが充分に回復されなければ、所望のストレージ使用安全マージンが回復されるまで、さらなる廃棄可能ファイルが記憶装置から除去される。
【0021】
簡単に言えば、ファイルシステムは、コンピュータファイルを格納し組織する方法を実行する。ファイルシステムは、データの格納、階層組織化、操作、ナビゲーション、アクセス、および検索のために実装される抽象データ型およびメタデータのセットを含む。抽象データ型およびメタデータは、それを通してコンピュータファイル(ここでは「データファイル」、あるいは簡単に「ファイル」とも称される)がアクセスされ、操作されおよび起動され得る「ディレクトリツリー」を形成する。「ディレクトリツリー」は、通例、ルートディレクトリとオプションのサブディレクトリとを含む。ディレクトリツリーは、1つ以上の「ディレクトリファイル」としてファイルシステムに格納される。ファイルシステムに含まれるメタデータおよびディレクトリファイルのセットは、ここでは「ファイルシステム構造」と称される。従って、ファイルシステムは、データファイルと、データファイルにアクセスすること、データファイルを操作すること、更新すること、削除すること、および起動することを容易にするファイルシステム構造とを含む。
【0022】
ファイルアロケーションテーブル(「FAT」)は、代表的なファイルシステムアーキテクチャである。FATファイルシステムは、DR−DOS、OpenDOS、MS−DOS、Linux、Windows(登録商標)などを含む種々のオペレーティングシステムに用いられる。FAT構造化ファイルシステムは、どの記憶領域が空いているかあるいは割り当てられているか、および各ファイルが記憶装置のどこに格納されているかに関する情報を集中させるテーブルを使用する。テーブルのサイズを制限するために、記憶スペースは、「クラスタ」と称される隣接するセクタのグループ内のファイルに割り当てられる。記憶装置が進化するにつれて、クラスタの最大数は大きくなり、クラスタを特定するために使われるビットの数は増大してきている。FATフォーマットのバージョンは、テーブルのビットの数から導出される。FAT12は12ビットを使用し、FAT16は16ビットを使用し、FAT32は32ビットを使用する。
【0023】
他の1つのファイルシステムアーキテクチャはニューテクノロジーファイルシステム((「NTFS」)として知られている。現在、NTFSは、後のバージョンのWindows 2000、Windows XP、Windows Server 2003、Windows Server 2008、およびWindows Vistaを含むWindows NTの標準的なファイルシステムである。FAT32およびNTFSは、記憶装置100が備えることのできる代表的なファイルシステムである。
【0024】
図1は、代表的な記憶装置100を示す。記憶装置100は種々のタイプのファイル(例えば、音楽ファイル、ビデオファイルなど)を格納するための記憶領域110を含み、そのうちのいくつかはユーザファイルであり、他は発行者ファイルであり得る。記憶装置100は、データおよび制御線130を介して記憶領域110を管理するストレージコントローラ120も含む。ストレージコントローラ120は、ホストインターフェイス150を介してホスト装置140とも通信する。ホスト装置140は、専用ハードウェアあるいは汎用コンピューティングプラットフォームであり得る。
【0025】
記憶領域110は、例えば、NANDフラッシュタイプのものであり得る。ストレージコントローラ120は、例えば「読み出し」、「書き込み」および「消去」操作、ウェアレベリング(損耗平滑化)などを制御することと、ホスト140との通信を制御することとにより、記憶領域110へ/記憶領域110からのデータ転送およびホスト装置140へ/ホスト装置140からのデータ転送の全てを制御する。記憶領域110は、例えば、ユーザファイルおよび発行者のファイルと、許可されたホスト装置だけによって使用されることが許される保護データと、ストレージコントローラ120によって、内部でだけ使用されるセキュリティデータとを含むことができる。ホスト(例えば、ホスト140)は、記憶領域110に直接アクセスすることはできない。すなわち、例えば、ホスト140が記憶装置100からのデータを求めるかあるいは必要とするならば、ホスト140は、それをストレージコントローラ120から要求しなければならない。記憶装置100に格納されているデータファイルへのアクセスを容易にするために、記憶装置100はファイルシステム160を備えている。
【0026】
記憶領域110は機能的に3つの部分、すなわちユーザ領域170、発行者領域180、および空き記憶スペース190に分けられている。ユーザ領域170は記憶領域110の中の、ユーザファイルが格納される記憶スペースである。発行者領域180は、記憶領域110の中の、発行者ファイルが格納される記憶スペースである。空き記憶スペース190は、記憶領域110の中の空の記憶スペースである。空き記憶スペース190は、ユーザファイルまたは発行者ファイルを収容するために使用され得る。ユーザファイルを空き記憶スペース190に格納すると、そのユーザファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれてユーザ領域170に加えられる。同様に、発行者ファイルを空き記憶スペース190に格納すると、その発行者ファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれて発行者領域180に加えられる。ユーザファイルまたは発行者ファイルが記憶領域110から除去(すなわち、削除)されると、その解放された記憶スペースは空き記憶スペース190に加えられる(戻る)。
【0027】
空き記憶スペース190のサイズがそれを許すならば、記憶装置100のユーザは、ユーザファイルをホスト140から記憶領域110にダウンロードすることができる。そのダウンロードされたユーザファイルは空き記憶スペース190に格納され、前に説明したように、そのファイルを収容している記憶スペースは、空き記憶スペース190から差し引かれてユーザ領域170に加えられる。前に説明したように、ユーザファイルは他の(例えば、発行者)ファイルにまさる優先権を有し、その優先権を保証するために、所望のストレージ使用安全マージンがセットされ、必要ならば、以下で記載される方法で、回復される。
【0028】
ホスト140は、空き記憶スペース190の回復を容易にするためのストレージアロケータ144を含む。ストレージアロケータ144は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせであり得る。一般的に、ストレージアロケータ144は、ホスト140に伝送されたファイル(例えば、ファイル142)がユーザファイルであるのか、それとも発行者ファイルであるのかを判定し、それに応じて、その伝送されたファイルをマーキングする(すなわち、非廃棄可能ファイルあるいは廃棄可能ファイルとマーキングする)。
【0029】
ホスト140に伝送されたファイル(例えば、ファイル142)が、例えばそのファイルがユーザファイルであるので、非廃棄可能であるとストレージアロケータ144が判定すれば、ストレージアロケータ144はそのファイルを記憶領域110に正規の方法で格納する。前に説明したように、記憶領域110の中の、非廃棄可能ファイルを収容する記憶スペースは、ユーザ領域170に加えられるか、あるいはその一部になる。しかし、ホスト140に伝送されたファイルが、例えばそれが発行者ファイルであるので、廃棄可能であるとストレージアロケータ144が判定すれば、ストレージアロケータ144はそのファイルを廃棄可能とマーキングする。空き記憶スペース190が所望のストレージ使用安全マージンより大きければ、ストレージアロケータ144は、そのマーキングされた廃棄可能ファイルをも空き記憶スペース190に格納し、前に説明したように、空き記憶スペース190の中の廃棄可能ファイルを収容する記憶スペースは空き記憶スペース190から差し引かれて(すなわち、空き記憶スペースが減じられて)発行者領域180に加えられる(この追加は、廃棄可能ファイル182として論理的に示されている)。
【0030】
前に説明したように、発行者ファイルがユーザにより使用される確度は発行者ファイルごとに異なり得るので、最小の使用確度を有する発行者ファイルは、記憶領域110からの除去についての第1の候補となる。従って、ファイルを非廃棄可能あるいは廃棄可能とマーキングするほか、ストレージアロケータ144は、廃棄可能ファイルが記憶領域110に格納される前に、それと同時に、あるいはその後に、各廃棄可能ファイルに廃棄優先レベルを割り当てる。
【0031】
ファイルを非廃棄可能または廃棄可能とマーキングすることにより、ストレージアロケータ144により廃棄優先レベルを割り当て、記憶装置100のファイルシステム160(またはそのイメージ)を使用することにより、ストレージアロケータ144は、記憶領域110内のユーザファイルおよび発行者ファイルの数、ならびにそれらのサイズおよび記憶領域110の中での論理位置も「認識する」。この情報(すなわち、ファイルの数、サイズおよび位置)を認識し、特に1つ以上のマーキングされているファイルに基づいて、ストレージアロケータ144は、記憶領域110と、記憶領域110における請求ファイルおよび非請求ファイルの記憶とを管理する。記憶領域110の管理あるいは記憶領域110におけるファイルの記憶の管理は、例えば、廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによるストレージ使用安全マージンの回復、廃棄可能とマーキングされている全てのファイルを除去することによる記憶領域の解放、およびより低い性能の記憶モジュールへのファイルのクラスタの再マッピングを含み得る。記憶領域110またはそれに格納されているファイルの管理は、記憶領域110またはそれに格納されているファイルの他の、追加の、あるいは代わりの態様の管理を含み得る。
【0032】
ストレージアロケータ144は、各廃棄可能ファイルに割り当てられている廃棄レベルにより、将来のユーザファイルのために初めに確保されていた空き記憶スペースを回復するために(すなわち、所望のストレージ使用安全マージンを回復するために)廃棄可能ファイルが廃棄(すなわち、記憶領域110から削除または除去)され得るかあるいはされるべき順序をも認識する。従って、ユーザが新しいユーザファイルを記憶領域110に格納することを希望しているけれども、そのユーザファイルを収容する充分な空き記憶スペースがなければ(それは、ストレージ使用安全マージンが所望より狭いことを意味する)、ストレージアロケータ144は、所望のストレージ使用安全マージンが充分に回復されるまで、より大きな空き記憶スペースを取り戻すために(すなわち、空き記憶スペース190を拡張するために)廃棄可能ファイルを一つずつ反復して削除してゆくために、廃棄可能ファイルに割り当てられている廃棄優先レベルを使用する。前に説明したように、充分に回復されたストレージ使用安全マージンは、将来のユーザファイルのために充分な空き記憶スペースが確保されることを高い確率で保証する。格納されている廃棄可能ファイルをユーザがいつか使用することを望むかも知れないということが考慮され、従って廃棄可能ファイルは、そのファイルを収容している記憶スペースが新しいユーザファイルのために必要とされる場合に限って記憶装置から除去されるので、廃棄可能ファイルは、新しいユーザファイルを格納する要求を受け取ったことに応じて記憶装置100から除去されるかあるいは削除されるに過ぎない。ストレージアロケータ144は、ホスト140に埋め込まれるかあるいは組み込まれてよく、あるいはホスト140の外に(破線のボックス144’として示されている)および記憶装置100の外に存在してもよい。
【0033】
ストレージアロケータ144は、記憶装置100のファイルシステムあるいは記憶装置100と関連付けられているファイルシステムの代表的なイメージを有する。ストレージアロケータ144は、ファイルを非廃棄可能あるいは廃棄可能とマーキングするため、かつ各廃棄可能ファイルに廃棄レベルを割り当てるために、記憶装置のファイルシステムイメージを使用する。一例では、ファイルシステムはFATを含み、この場合にはマーキングは、ファイルと関連付けられているFATエントリの未使用部分において1つ以上の未使用ビットをセットすることによって行われる。様々なファイルシステムが様々な構造を有するので、図6〜1と関連して以下で詳細に説明および記述するように、ファイルのマーキング(すなわち、非廃棄可能あるいは廃棄可能としての)および廃棄レベルの割り当ては、使用されるファイルシステム構造に適合させられる。
【0034】
図2は、他の実施形態に従う携帯可能な記憶装置200のブロック図である。ストレージコントローラ220はストレージコントローラ120と同様に機能し、ストレージアロケータ244はストレージアロケータ144と同様に機能する。ストレージアロケータ244はハードウェア、ファームウェア、ソフトウェアあるいはそれらの任意の組み合わせであり得る。ストレージアロケータ244は内部でストレージコントローラ220と協力する。ファイルを記憶領域210に格納する、そのファイルが廃棄可能ファイルであるか否かのインジケーションを含む、ストレージ要求をストレージコントローラ220がホスト240から受け取るたびに、ストレージコントローラ220は、そのストレージ要求を、さらにそのファイルが廃棄可能か否かを、ストレージアロケータ244に知らせる。ストレージアロケータ244は、その後、記憶装置200と関連付けられているファイルシステムの構造においてそのファイルを非廃棄可能または廃棄可能とマーキングする。通例、ホスト240上で実行するアプリケーションは、ファイルを廃棄可能ファイルであると判定し、そのファイルが廃棄可能ファイルであることを示すフラグまたは他のインジケーションをストレージコントローラ220に送る。ホスト240上で実行するアプリケーションは、そのフラグまたは他のインジケーションを、ファイルを記憶装置に格納することを要求するためのストレージプロトコルの一部として送る。そのようなストレージプロトコルの例は、POSIXファイルシステム機能あるいはjava.ioクラスツリーの使用を含む。
【0035】
新しいファイルが廃棄可能であるとストレージアロケータ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プロトコルより高いレベルで通信するメモリユニットから構成される。
【0036】
図3は、一実施形態に従うストレージアロケータ300のブロック図である。ストレージアロケータ300は、メモリユニット310、プロセッサ320、およびインターフェイス330を含む。メモリユニット310は、記憶装置(例えば、図2の記憶装置200)と関連付けられているファイルシステム構造またはファイルシステム構造のイメージを収容することができる。プロセッサ320は、記憶装置と関連付けられているファイルシステムを管理する。インターフェイス330は、図1に示されているようにホストと、さらに記憶装置のストレージコントローラと、あるいは図2に示されているように記憶装置のストレージコントローラだけと協力するように適合させられ得る。
【0037】
プロセッサ320は、記憶装置の記憶領域にファイルを格納する要求をインターフェイス330を介して受け取り、ストレージアロケータ300と協同する記憶装置と関連付けられているファイルシステムの構造においてファイルを廃棄可能または非廃棄可能とマーキングするように構成されるかあるいは適合させられる。インターフェイス330が図2のストレージコントローラ220に機能的に付属させられているならば(従って、例えば、ファイルレベルのコマンドではなくてSCSIコマンドまたはラップされたUSB/MSCコマンドを受け取るならば)、受け取られた要求はファイルレベルより遥かに低いレベルにある。すなわち、受け取られた要求は、ホストにより適切に解釈されるとファイルに対応することになる論理ブロックアドレスにセクタを格納する要求である。ストレージコントローラ220がNVMHCIプロトコル、またはNFSもしくは類似のプロトコルなどのネットワーキングファイルシステムプロトコルをサポートするならば、ストレージコントローラ220はファイルレベルの要求を受け取ることができる。従って、ストレージコントローラ220などのストレージコントローラとインターフェイス330などのインターフェイスとの間の通信は、NVMHCIあるいはNVMHCIのようなインプリメンテーションに限定されない。通信インターフェイス330は、図3に示されているように、ストレージアロケータ300に不可欠のものであり得る。
【0038】
プロセッサ320は、マーキングされたファイルを記憶装置に送るようにさらに構成されるかあるいは適合させられ、ファイルを廃棄可能とマーキングすることは、そのファイルに廃棄優先レベルを割り当てることを含む。記憶装置により使用されるファイルシステムがFATベースであるならば、プロセッサ320は、マーキングされたファイルに廃棄優先レベルを、そのマーキングされたファイルに対応するFAT内のm個の最上(すなわち、最上位)のビット(例えば、m=4)に、対応する値をセットすることによって、割り当てる。FATエントリ内の最上位ビットにセットされるその対応する値、あるいはNTFSディレクトリのエントリにセットされる値、もしくはそれは、ファイルの属性に関連付けられ得る。「属性」は、FATテーブルまたはNTFSテーブルのヘッダの中の、テーブルに格納されているコンテンツのタイプに関係する情報を包含するメタデータタグあるいは何らかのデータ構造を意味する。「広告」、「プレミアムコンテンツ」、および「販売促進(無料)コンテンツ」は、FATテーブルあるいはNTFSテーブルに格納され得るコンテンツの代表的なタイプである。廃棄レベルをセットするための代わりの基準は、例えば、最後にアクセスされたファイル、ファイルのサイズ、ファイルのタイプなどである。
【0039】
ファイルをマーキングするために専用される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」は最高の優先順位あるいは最低の優先順位で廃棄可能であるファイルをそれぞれ示すことができる。
【0040】
プロセッサ320は、非請求ファイルが記憶装置のユーザによって使用されるであろう確度あるいは確率と関連して前に説明したように、マーキングされるファイルに、そのファイルの予想される使用に応じて、廃棄優先レベルを割り当てることができる。プロセッサ320は、マーキングされているファイルの廃棄優先レベルを、新しいファイルを記憶装置に格納する各要求を用いて、あるいはその各要求を受け取ったことに応答して、更新することができる。プロセッサ320は、所与のマーキングされているファイルの廃棄優先レベルを、記憶装置にファイルを格納する1つ以上の新しい要求とは無関係に、更新することができる。例えば、以前は高い優先順位のものであったファイルは、一定時間間隔後にその優先順位を下げられることができる。プロセッサ320は、記憶装置に格納されているファイルを、そのファイルが所定の廃棄しきい値と等しいかまたはそれより大きい廃棄優先レベルと関連付けられているならば、削除する。プロセッサ320は、ファイル書き込みまたは付加の数に基づいて、あるいは記憶装置上の空き記憶スペースの予想される使用または新しい発行者ファイルの可用性に依存して、廃棄しきい値をセット(リセット)することができる。
【0041】
メモリユニット310は、記憶装置に格納されているファイルにプロセッサ320が割り当てている廃棄優先レベルを包含する割り当てテーブル340を収容することができる。さらに、割り当てテーブル340は、ファイルの識別子と、ファイルをファイルに割り当てられている廃棄優先レベルと関連付ける情報とを収容することができる。割り当てテーブル340は、さらに廃棄しきい値を収容することができる。割り当てテーブル340に収容されている情報により、プロセッサ320は所望のストレージ使用安全マージンを回復するためにどの1つまたは複数の廃棄可能ファイルを記憶装置から除去し得るかを特定することができる。
【0042】
新しいファイルを記憶装置に格納する要求を受け取ったことに応答して、プロセッサ320は記憶装置上の空き記憶スペース(f)のサイズを評価し、記憶装置上の空き記憶スペースの評価されたサイズが所定のサイズより大きければ新しいファイルを記憶装置に格納するが、それが所定のサイズより大きくなければ、プロセッサ320は記憶装置内の削除され得る1つ以上の廃棄可能ファイルを探し、そのような1つまたは複数のファイルを発見すると、プロセッサ320は、拡張された空き記憶スペースの総サイズがその所定のサイズに等しいかまたはそれより大きくなるように現在の空き記憶スペース(f)を拡張するためにその1つまたは複数のファイルを削除する。その1つまたは複数の廃棄可能ファイルは、廃棄可能ファイルと関連付けられている廃棄優先レベルが所定の廃棄しきい値(例えば1から15の間、例えば15)に等しいかまたはそれより大きければ、記憶装置から削除され得る。
【0043】
空き記憶スペースが充分に拡張された後、プロセッサ320は、その拡張された空き記憶スペースに新しいファイルが格納されることを許可する。「空き記憶スペースが充分に拡張される」とは、所望のストレージ使用安全マージンを狭めることなく総空き記憶スペースが新しいファイルを収容できるようになるまで、あるいは同等のことであるが、拡張された空き記憶スペースの総サイズが所定のサイズに等しくなるかまたはそれより大きくなるまで、もしくは全ての廃棄可能ファイルが除去されるまで、占拠されている記憶スペースを1つずつ解放することによって空き記憶スペースを広げることを意味する。
【0044】
プロセッサ320は、標準的ないつでも買えるシステムオンチップ(「SoC」)デバイス、またはシステムインパッケージ(「SiP」)デバイス、あるいは実行時に本願明細書に記載されているステップ、操作および評価を行う専用ソフトウェアを有する汎用処理装置であり得る。代わりに、プロセッサ320は、本願明細書に記載されているステップ、操作および評価をハードウェアを用いることによって実行する特定用途向け集積回路(「ASIC」)であり得る。
【0045】
図4は、一実施形態に従う廃棄可能ファイルを格納する方法である。図4は、図1と関連して記述される。ステップ410で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ420でストレージアロケータ144はファイルを「廃棄可能」または「非廃棄可能」とマーキングし、空き記憶スペース190が充分に大きければ、ステップ430で、そのマーキングされたファイルを記憶装置100のストレージコントローラ120に送る(すなわち、記憶領域110に格納するため)。ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。ステップ440で、ストレージアロケータ144は、そのマーキングされたファイルに基づいて、さらに、任意的に、既にマーキングされている1つ以上のファイルに基づいて、記憶領域110(ストレージコントローラ120との通信を通して)あるいは記憶領域110に格納されているファイルを管理する。
【0046】
図5は、一実施形態に従う記憶装置における廃棄可能ファイルの記憶を管理する方法である。図5は、図1と関連して記述される。新しいファイルは、記憶装置100に格納される候補である。記憶装置100のファイルシステム160の現在のイメージを認識して、ストレージアロケータ144は、ステップ510で、現在のサイズがfである空き記憶スペース190がその新しいファイル(すなわち、格納されそうな候補であるファイル)を収容できるかを調べるために空き記憶スペース190の現在のサイズ「f」を評価する。一般的に、ストレージアロケータ144が新しいファイルを処理する方法は、その新しいファイルがユーザファイルであるのか発行者ファイルであるのかによる。従って、ストレージアロケータ144は、まず、新しいファイルがユーザファイルであるのか発行者ファイルであるのかを判定する。
【0047】
新しいファイルがユーザファイルである場合
ステップ520で、ストレージアロケータ144は、空き記憶スペース190が新しいユーザファイルを収容できるかを調べる。空き記憶スペース190が新しいユーザファイルを収容できるならば(ステップ520で「Y」として示されている)、ストレージアロケータ144は、ステップ560で、その新しいユーザファイルを格納することにより所望のストレージ使用安全マージンが狭められるか否かに関わらず新しいユーザファイルを空き記憶スペース190に格納する。ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に所望のストレージ使用安全マージンがより狭くなるとしても(すなわち、所望のストレージ使用安全マージンと比べて)、ストレージアロケータ144は、その新しいユーザファイルの格納に関してそれ以上の処置をとらない。
【0048】
しかし、ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に所望のストレージ使用安全マージンがより狭くなるならば、ステップ550は、所望のストレージ使用安全マージンを維持するために、どの格納されている廃棄可能ファイルが最初に削除されるべきか、どの廃棄可能ファイルが2番目に削除されるべきかなどをストレージアロケータ144が判定する追加のステップを含む。ストレージアロケータ144は、格納されている廃棄可能ファイルにストレージアロケータ144が割り当てた廃棄レベルに基づいて、どの廃棄可能ファイルが最初に削除されるべきか、どれが2番目に削除されるべきかなどを判定する。
【0049】
空き記憶スペース190が新しいユーザファイルを収容できないとストレージアロケータ144がステップ520で判定すると(ステップ520で「N」として示されている)ストレージアロケータ144は、ステップ530で、空き記憶スペース190と、廃棄可能ファイルにより占拠されている記憶スペースとが結合されるとその新しいユーザファイルを格納するために充分であるかを判定する。その結合された記憶スペースが不十分であるならば(ステップ530で「N」として示されている)、どれだけ多くの廃棄可能ファイルが削除されても、その新しいユーザファイルは、そのサイズがより大きいために「非ユーザ」記憶領域に格納され得ないということを意味する。その結合された記憶スペースが充分であるならば(ステップ530で「Y」として示されている)、ストレージアロケータ144は、その新しいユーザファイルのために充分な記憶スペースを解放するために、格納されている廃棄可能ファイルのうちのどの廃棄可能ファイルが削除され得るかをステップ540で調べる。前に説明したように、ストレージアロケータ144は記憶装置のファイルシステムにおいてファイルを非廃棄可能または廃棄可能とマーキングするので、ストレージアロケータ144は、記憶装置100のファイルシステムを用いることによってこれらの廃棄可能ファイルを探す。さらに、マーキングされているファイルにストレージアロケータ144により割り当てられる廃棄レベルも、各廃棄レベルが対応するマーキングされたファイルと関連付けられるように、記憶装置のファイルシステムに埋め込まれる。
【0050】
最初に廃棄されるべき廃棄可能ファイル(「DF」)(このファイルは、以降「DF1」と称される)を発見すると、ストレージアロケータ144は、その記憶スペース(この記憶スペースは、以降「SP1」と称される)を記憶スペース190に加えるためあるいは戻すために、ファイルDF1を削除する。
【0051】
その後、ステップ550でストレージアロケータ144は、拡張された空き記憶スペース190(すなわち、空き記憶スペース190+最後に戻された記憶スペース、すなわちf+SP1)がその新しいユーザファイルを収容できるかを調べる。拡張された空き記憶スペース190(すなわち、f+SP1)が依然としてその新しいユーザファイルを収容できなければ(ステップ550で「N」として示されている)、ストレージアロケータ144は、さらなる記憶スペースを空き記憶スペース190に戻すために(すなわち、削除されるべき次の廃棄可能ファイルを見つけて削除することにより)ステップ550を反復的に繰り返す(反復は555で示されている)。
【0052】
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に格納する。
【0053】
前述したように、ストレージアロケータ144が新しいユーザファイルを空き記憶スペース190に格納した後に実際のストレージ使用安全マージンが所望のストレージ使用安全マージンより狭くなるならば、ステップ560は、所望のストレージ使用安全マージンを回復するためにどの格納されている廃棄可能ファイルが最初に削除されるべきか、どの廃棄可能ファイルが2番目に削除されるべきかなどをストレージアロケータ144が判定する追加のステップを含むことができる。
【0054】
新しいファイルが発行者ファイルである場合
新しいファイルが発行者ファイルであるならば、ストレージアロケータ144は、空き記憶スペース190が所望のストレージ使用安全マージンを狭めることなく新しい発行者ファイルを収容できる場合に限って、その新しい発行者ファイルを(ステップ560で)記憶領域110に格納する。すなわち、新しい発行者ファイルを格納すれば所望のストレージ使用安全マージンを狭める結果となるのであれば、ストレージアロケータ144はその新しい発行者ファイルを記憶領域110に格納しないと決定することができる。そのような場合、ストレージアロケータ144は、そのファイルに関しての処置を控え、その新しい発行者ファイルのための記憶スペースを解放するために記憶装置からファイルを削除しなくてもよい。代わりに、ストレージアロケータ144は、より低い廃棄優先順位を有する廃棄可能ファイルのための記憶スペースを解放するために1つ以上のより高い優先順位の廃棄可能ファイルをステップ540で削除することができる。前に述べたように、ファイルは記憶装置100のファイルシステムにおいてマーキングされ、廃棄レベルは記憶装置100のファイルシステムに埋め込まれ、ファイルがマーキングされ、廃棄レベルがファイルシステムに埋め込まれる方法は、その使用されるファイルシステムに依存し、あるいはその使用されるファイルシステムに適合させられ得る。
【0055】
図6は、一実施形態に従うFAT32構造化ファイルシステムにおいて非請求ファイルをマーキングする方法である。FAT32構造化ファイルシステムはクラスタを使用する。FAT32構造化ファイルシステムと関連して前に記載したように、FAT32クラスタを特定するために使用されるビットの数は32である。図6は、図1と関連して記述される。
【0056】
ステップ610で、FAT32の各クラスタの32ビットのうちのm個の最上位ビット(ここで、m≦4)が、状況に応じてファイルを非廃棄可能または廃棄可能とマーキングするために、および各廃棄可能ファイルに対応する廃棄レベルを保持するために割り当てられ、あるいは専用される。ファイルへの廃棄レベルの割り当ては、対応する値を、そのマーキングされたファイルに対応する割り当てられたmビットにセットすることにより行われる。
【0057】
ステップ620で、ストレージアロケータ144は、記憶装置100のユーザがその非請求ファイルを使用する確度のレベルを評価する。そのファイルを使用する確度の評価は、委託ファイルの技術分野の当業者に知られている種々の方法で実行され得る。例えば、そのファイルを使用する確度の評価は、その記憶装置を使用する人の位置をモニタすること、および/またはモニタされるユーザの以前の経験および好みに基づくことができる。そのファイルを使用する確度の評価は、例えば、そのFATテーブルまたはNTFSテーブル内に格納されているコンテンツのタイプ(例えば、「広告コンテンツ」、「プレミアムコンテンツ」、「販売促進(無料)コンテンツ」など)に基づいてもよい。ストレージアロケータ144は、そのファイルが使用される確度を評価するために代わりのあるいは追加の基準を使用することができる。例えば、最後にアクセスされたファイル、ファイルのサイズ、ファイルのタイプなどであり得るか、あるいはそれらと関連付けられ得る、ファイルの属性または特徴を使用することができる。
【0058】
ユーザがその非請求ファイルを使用する確度のレベルをストレージアロケータ144が評価した後、ストレージアロケータ144は、ステップ630で、非請求ファイルの使用の評価された確度レベルに対応する廃棄優先レベルを割り当てる。その非請求ファイルが記憶装置100のユーザにより使用される確度が高ければ高いほど、廃棄レベルは低くなる。
【0059】
mが4ビットに等しければ、これは、廃棄スケールは1(すなわち、0001)から15(すなわち、1111)までの15個の廃棄レベルを提供する。すなわち、廃棄レベル0は全ての非廃棄可能ファイルに割り当てられ、廃棄レベル1は最低の廃棄優先順位を有する廃棄可能ファイルに割り当てられ、廃棄レベル15は最高の廃棄優先順位を有する廃棄可能ファイルに割り当てられる。ストレージアロケータ144が非請求ファイルに対応する廃棄レベルを割り当てた後、ストレージアロケータ144は、ステップ640で、その非請求ファイルと関連付けられているクラスタの4個の最上位ビットに1と15との間の対応する値をセットする。その非請求ファイルが2つ以上のクラスタと関連付けられているならば、各クラスタの4個の最上位ビットが同じ値にセットされる。
【0060】
ステップ650で、その非請求ファイルは評価される必要のある最後のファイルであるか否かが調べられる。その非請求ファイルが評価される必要のある最後のファイルでなければ(ステップ650で「N」として示されている)、前に記載した方法で他のファイルが評価される。その非請求ファイルが評価される必要のある最後のファイルであるならば(ステップ650で「Y」として示されている)、その非請求ファイルは、その値がステップ640でセットされた各々のためのm個のビットと共に記憶装置に送られる。
【0061】
図7は、FAT32テーブルと関連付けられている代表的なディレクトリテーブル700である。ディレクトリテーブル700は説明のために使用される部分的テーブルであるので、テーブル700はFATディレクトリエントリの全てのフィールドを示してはいない。ディレクトリ領域700は、ファイル名、ファイルのサイズ、および関連する記憶スペースのどこから各ファイルが始まるかなど、関連するファイルシステムに格納されているファイルの細目を収容する。ファイルの細目は、次のフィールドに収容されている。フィールド710は、関連するファイルシステムに格納されているファイルのディスクオペレーティングシステム(「DOS」)ファイル名を収容し、フィールド720はファイルの拡張子を収容し、フィールド730はファイルの種々の属性を収容し、フィールド740はファイルの第1のクラスタ番号(「FCN」)の上位16ビットワードを収容し、フィールド750はファイルの第1のクラスタ番号(「FCN」)の下位部分を収容し、フィールド760はファイルのサイズを収容する。各FCN番号は、ファイルが見出され得る第1の論理クラスタを示す。
【0062】
ディレクトリ領域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のクラスタを示す。
【0063】
図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」)インジケーションであることができる。
【0064】
ディレクトリ領域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)と関連付けられている。
【0065】
前に説明したように、廃棄レベル0は非廃棄可能ファイルに割り当てられる。特定のファイルの各クラスタの最上位十六進数字は、そのファイルに割り当てられた同じ廃棄優先レベルにセットされるということに留意すべきである。例えば、ファイルREALFILEには廃棄レベル「0」が割り当てられ、従って、クラスタ#2、#3、および#4の最上位十六進数字の各々はその値(すなわち、値「0」、これらの「0」値にはアンダーラインが付けられている)を有する。他の1つの例では、そのFCNが(図7に示されているように)「0000 0005」であるファイル「E5Consign」には廃棄優先レベル「1」が割り当てられている。従って、そのファイルに属するクラスタ#5〜12の各々の最上位十六進数字は値「1」を有する(例えば、870のところに示されているように)。換言すれば、本願明細書における開示では特定の廃棄可能ファイルと関連付けられているクラスタの最上位十六進数字、あるいは同等に最上位4ビットは、その特定のファイルに割り当てられている廃棄優先レベルに対応する同じ値にセットされる。前に説明したように、廃棄優先レベルを示すために使われる最上位ビットの数mは4と異なっていてもよい(すなわち、m≦4)。
【0066】
図9は、一実施形態に従う代表的な部分的NTFSテーブル900である。NTFSテーブル900は、ファイル名、ファイルのサイズなどのファイルの細目を収容する。NTFSテーブル900は、「通常の」データフローに従って変化するファイルのための「レギュラー」データ(例えば、データ920)を収容するデータフィールド910を含む。本願明細書における開示では、NTFSテーブル900は、各々の評価されたファイルについての廃棄情報(例えば、廃棄情報930)を収容するための「廃棄情報」フィールド915をも含む。廃棄情報フィールド915は、廃棄優先レベル以外の情報も含むことができる。例えば、廃棄情報フィールド915は、そのファイルを供給したサーバと、その後にファイルが廃棄されなければならない満期時とに関する情報を含むことができる。FATベースのファイルシステムとは違って、NTFSベースのファイルシステムでは廃棄可能ファイルに割り当てられる廃棄値は、1セットのビットにより規定される最大数に限定されない。これは、廃棄値の範囲が自由に選択され得ることを意味する。例えば、廃棄値は1から25までの範囲にわたり得る。NTFSは、代表的な非FATファイルシステムである。一般的に、対応する廃棄値は、マーキングされたファイルに対応する非FATベースのファイルシステムのエントリ内のデータフィールドにセットされ得る。
【0067】
図10は、一実施形態に従う記憶装置のファイルシステム1000の論理配置である。ストレージアロケータ(例えば、図1のストレージアロケータ144)は、自分と協同する記憶装置のファイルシステム1000またはファイルシステム1000のイメージを保持し得るか、あるいはストレージアロケータはファイルシステム1000へのアクセスを持ち得る。
【0068】
ファイルシステム1000は、ブートセクション1010と、ファイルシステム1000と関連付けられているFAT1020と、ディレクトリテーブル1030と、ファイル領域1040と、廃棄可能ファイル領域1050とを含む。FAT1020は、廃棄可能ファイルの廃棄優先レベルを包含する廃棄可能ファイル割り当て領域1025を含む。ディレクトリテーブル1030は、記憶装置に格納されている全てのファイル(すなわち、廃棄可能ファイルおよび/または非廃棄可能ファイル)にアクセスするためのアクセス情報を含む。ファイル領域1040は、非廃棄可能ファイルを包含する。インデックスおよびデータベース領域1045は、廃棄可能ファイルのためのインデックスと、さらに、廃棄可能ファイルに関連付けられているメタデータとを収容する。インデックスおよびデータベース領域1045に収容されているインデックスおよびメタデータは、廃棄レベルを計算するために使用されるけれども、実際の廃棄プロセス中には必要とされない。廃棄可能ファイル領域1050は、廃棄可能ファイルを収容する。
【0069】
図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はそれらのファイルを格納するのを差し控える。
【0070】
この例では、ストレージアロケータ144は、ストレージ使用安全マージン1130を減少させることなくその発行者の3つの非請求ファイルが記憶領域110に格納され得ると判定する。従って、時点T1で、ストレージアロケータ144は、ストレージコントローラ120がその発行者の3つの非請求ファイルを記憶領域110に格納することを許可する。その3つの発行者の非請求ファイルは「P1」、「P2」、および「P3」と称されている。ストレージアロケータ144は、さらにファイルP1、P2、およびP3が記憶装置100のユーザにより使用される確率を判定し、対応する廃棄レベルをそれらのファイルの各々に割り当てる。ストレージアロケータ144は、その後、ファイルに割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。
【0071】
時点T2で、記憶装置100のユーザは、もう2つのファイル(すなわち、ファイル「F3」および「F4」)を記憶領域110に格納することを望む。ストレージアロケータ144は、その追加のファイル(すなわち、ファイルF3およびF4)を格納するのに充分な記憶スペースが記憶領域110にあるかを判定するために記憶装置100内の空き記憶スペース190のサイズ(すなわち、1120のところのf)を再び評価する。この例では、ストレージアロケータ144は、現在空いている記憶スペースはファイルF3およびF4を収容できると判定する。従って、時点T2で、ストレージアロケータ144は、ストレージコントローラ120がファイルF3およびF4を記憶領域110に格納することを許可する。
【0072】
ファイルF3およびF4はユーザファイルであるため、ユーザがファイルF3およびF4を、使用するとしても、何回使用するかとは関係なく、ユーザファイルは発行者ファイルより高い記憶優先順位を有するので、ファイルF3およびF4が記憶装置100のユーザにより使用される確率は重要ではない。従って、ストレージアロケータ144は、ファイルF3およびF4に廃棄レベル「0」を割り当て、その割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。
【0073】
時点T3で、記憶装置100のユーザは、記憶領域110に他の1つのファイル(すなわち、ファイル「F5」)を格納することを望む。ストレージアロケータ144は、その追加のファイル(すなわち、ファイルF5)を格納するのに充分な記憶スペースが記憶領域110にあるかを判定するために記憶装置100内の空き記憶スペース190のサイズ(すなわち、1120のところのf)を再び評価する。
【0074】
この例では、ストレージアロケータ144は、現在空いている記憶スペースがファイルF5を収容できると判定する。従って、時点T3で、ストレージアロケータ144はストレージコントローラ120がファイルF5を記憶領域110に格納することを許可する。図11に示されているように、ユーザファイルF5を格納するとストレージ使用安全マージンが狭まる。すなわち、ファイルF1〜F5およびP1〜P3が記憶領域110に格納された後に残っている記憶領域110内の空き記憶スペースfは、ストレージ使用安全マージン1130より小さい。従って、ストレージアロケータ144は、発行者のファイル(すなわち、P1、P2、およびP3)のうちの1つを除去することによって、ストレージ使用安全マージンを復活させるかあるいは回復する。前に説明したように、ユーザファイルが最大の記憶優先順位を有するので、ストレージ使用安全マージンは、1つ以上の発行者ファイルを除去(すなわち、削除)することによって復活させられるかあるいは回復される。
【0075】
前に記述したように、どの1つの発行者ファイルまたは複数の発行者ファイルが記憶領域110から除去されるべきかの決定は、ストレージアロケータ144が各々の格納されている廃棄可能ファイルに割り当てた廃棄優先レベルに基づいてストレージアロケータ144によって行われる。
【0076】
再び図11を参照して、格納されている発行者ファイルP1〜P3のうちで発行者ファイルP3に最高の廃棄優先レベル(例えば、13)が割り当てられたと仮定される。従って、時点T4でファイルP3が記憶領域110から除去され、これにより空き記憶スペース190を大きくする。時点T4における空き記憶スペース190のサイズ(すなわち、1120のところのf)はストレージ使用安全マージン1130より大きいので、発行者ファイルをそれ以上除去する必要はない。
【0077】
記憶装置100のユーザは、1つ以上のユーザファイルを除去することを望むかもしれない。時点T5でユーザは自分のファイルのうちの2つ(すなわち、ファイルF4およびF5)を除去し、これにより空き記憶スペース190をさらに大きくした。ここで述べられたように、空き記憶スペースの再獲得あるいはストレージ使用安全マージンの回復は必要な数の廃棄可能ファイルを除去することによって行われるので、ファイルF4およびF5の除去は空き記憶スペース190のサイズまたはストレージ使用安全マージンとは無関係である。発行者が他の1つの非請求ファイルを記憶領域110に格納することを望むと想定される。前に記述したように、ストレージアロケータ144は、その発行者の非請求ファイルを記憶領域110に格納するとストレージ使用安全マージン1130が狭まらないかを判定するために空き記憶スペース190のサイズ(すなわち、1120のところのf)を評価する。その発行者の新しい非請求ファイルを格納するとストレージ使用安全マージン1130が狭まるのであれば、ストレージアロケータ144は、そのファイルを格納するのを差し控える。
【0078】
この例では、ストレージアロケータ144は、発行者の新しい非請求ファイル(すなわち、ファイル「P4」)はストレージ使用安全マージン1130を減少させることなく記憶領域110に格納され得ると判定する。従って、時点T6でストレージアロケータ144はストレージコントローラ120が発行者のファイルP4を記憶領域110に格納するのを許可する。ストレージアロケータ144は、ファイルP4が記憶装置100のユーザによって使用される確率も判定し、対応する廃棄レベルをこのファイルに割り当てる。ストレージアロケータ144は、その後、ファイルP4に割り当てられた廃棄レベルを、図8に示されているようにFATテーブルあるいは図9に示されているようにNTFSテーブルに格納する。新しいファイルが記憶領域110に加えられなければならないたびにストレージアロケータ144が空き記憶スペース190の現在のサイズを評価して、どの1つまたは複数の発行者ファイル(あるとすれば)が記憶領域110から除去されなければならないかを判定する間、新しい発行者のファイルおよび新しいユーザファイルを格納すると共に格納されているファイルを除去するプロセスが続行され得る。
【0079】
廃棄可能ファイルへの廃棄レベルの割り当ては、ユーザの経験または選択、ユーザの全地球測位システム(「GPS」)位置、および/または他の基準に基づくことができる。例えば、記憶装置のユーザが(以前のユーザの経験に基づいて)或るタイプの音楽を好みそうに思われるならば、ストレージアロケータは発行者のファイルに、そのファイルがユーザの気に入っているタイプのうちの1つの音楽である音楽を含んでいるならば、割合に低い廃棄優先レベル(例えば、1から15までのスケールの中の3)を割り当てることができる。しかし、発行者の音楽がユーザに嫌われるならば(すなわち、以前のユーザの経験に基づいて)、ストレージアロケータは、その関連する発行者のファイルにより高い廃棄優先レベル(例えば、1から15までのスケールの中の12)を割り当てることができる。廃棄可能ファイルに廃棄レベルを割り当てるために使用される基準は、そのファイルの予想される使用法、そのファイルの使用と関連付けられた予想される収益、そのファイルのタイプ、そのファイルのサイズ、そのファイルの記憶装置の中での位置、そのファイルの古さ、およびここで明示される他の基準またはパラメータを含むことができる。他の基準を、単独でもあるいはここで言及された基準のうちのいずれかと組み合わされても、同様に使用することができ、廃棄レベルの割り当てを1つ以上の基準を用いて行うことができる。さらに、異なる廃棄可能ファイルに廃棄レベルを割り当てるために異なる基準が使用され得る。
【0080】
他の1つの例において、発行者がユーザに位置依存型の広告(すなわち、特定の位置の中で提供される製品またはサービスに関連する広告)を送ることを望むならば、ストレージアロケータは、その発行者の広告に対して、ユーザの変化する位置に応じて変化する廃棄優先レベルを割り当てることができる。すなわち、ユーザが特定の位置から遠ざかるほど廃棄レベルは高くなるであろうが、それは、その特定の位置から離れるほど、ユーザはその特定の位置で提供されるその製品またはサービスを消費することに関心を持たなくなると想定され得るからである。
【0081】
前に記載したように、廃棄可能ファイルのためのクラスタチェーンは、FAT32エントリと関連付けられたファイルを廃棄可能ファイルと特定するフラグと共にFATに記録される。通例、フラグは、各FAT32エントリの4つの最上位ビットに存在する。クラスタチェーンは、廃棄可能ファイルに割り当てられ得るけれども、それらと関連付けられた非廃棄可能ファイルをもたないので、chkdskまたはfsck.vfatなどのユーティリティが廃棄可能ファイルを、「リアル」ファイルとしても知られる非廃棄可能ファイルに転換させ、これによりファイルシステム160のセキュリティを低下させるということが起こり得る。さらに、何らかのFATリカバリユーティリティがFAT32エントリ内の廃棄可能ファイルフラグをリセットする危険がある。FAT32ファイルシステムの検査および修理ユーティリティは、しばしば、ありふれたエラーを修正するためにファイルシステムをステップスルーしてルールを適用する。一般的に、これらのユーティリティは、ディレクトリテーブル内の第1のクラスタ番号(FCN)コラム内に対応するエントリを持っていないFAT内のクラスタチェーンを探すことができる。ユーティリティは、ディレクトリあるいはファイルエントリを全く持っていないFAT内のクラスタ割当てを不明のデータフラグメント(オーファンクラスタとしても知られている)として扱い、ユーティリティは、これらのオーファンクラスタを削除するか、あるいは対応するファイルエントリをディレクトリテーブル内に作成することができる。本願明細書に記載されている廃棄可能ファイルシステムは、そうでなければオーファンクラスタと見なされるであろうものを使用することができるので、ユーティリティは、間違って廃棄可能ファイルを非廃棄可能ファイルに変えたり、あるいは廃棄可能ファイルを完全に除去したりすることがある。
【0082】
これらの問題を処理するために、或るインプリメンテーションでは、ストレージアロケータ144は廃棄可能ファイルをプライマリFAT内のクラスタチェーンと関連付けることができ、そのクラスタチェーンは廃棄可能ファイルの物理的位置を隠し、ストレージアロケータ144はファイルの物理的位置を廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルに格納する。通例、その廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルはプライマリFATには不可視であり、或るインプリメンテーションでは、ホストオペレーティングシステムがその廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルにアクセスすることを阻止する、その廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルと関連付けられた属性がイネーブルされ得る。
【0083】
前に記したように、FAT32内の各エントリは32ビットであるけれども、下位28ビットだけが使用される。通例、上位4ビットは使われずに残され、ゼロにセットされる。(FAT32の準拠インプリメンテーションは、上位4ビットを、たとえ割り当てられているクラスタにおいてセットされていても、無視し、新しいFATエントリを書き込む時には上位4ビットをゼロにセットするように要求される。)廃棄可能ファイルは、そのファイルと関連付けられている各クラスタチェーンのFATエントリの上位4ビットの中のフラグによって非廃棄可能ファイルから区別される。標準的FAT32ドライバは、廃棄可能ファイルを割り当てられているスペースと見なし、それらの上に書き込まない。しかし、ストレージアロケータ144は、記憶装置110において空きスペース割当てを維持するために、図5に関して前に記述したものなどの操作を定期的に実行することができ、廃棄可能ファイルに割り当てられているスペースを回復することができる。
【0084】
プライマリ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つ以上のロケーションファイルの中のディレクトリまたはファイルエントリと関連付けられていると見なすからである。
【0085】
ファイルシステム160が、廃棄可能ファイルとマーキングされているファイルを格納するためにプライマリFAT1200と廃棄可能FAT1201とを利用するとき、ストレージアロケータ144は、廃棄可能ファイルに割り当てられているクラスタチェーン1202をファイルと関連付けるために図12aに示されているようにプライマリFAT1200を更新する。一般的に、クラスタチェーン1202は、クラスタチェーン1202と関連付けられている廃棄可能ファイルと同じか、あるいはそれより大きいサイズであり得る。或るインプリメンテーションでは、クラスタチェーン1202は、プライマリFATにおいて廃棄可能ファイルの物理的位置をマスクする。通例、図7および8に関して前に記述したように、エントリ1204から始まるクラスタチェーン内の各クラスタは、エントリ1206に示されている1FFF FFFFなどの値がクラスタチェーン1202の終わりを示すまで、クラスタチェーン1202の次の連続クラスタを指す。しかし、他のインプリメンテーションでは、クラスタチェーンの各クラスタは、そのクラスタがクラスタチェーンの次の連続クラスタを指すのではなくて個別に割り当てられたクラスタであることを示す1FFF FFFFなどの値を持つことができる。
【0086】
図12bに示されているように、クラスタチェーン1202の第1のエントリ1204は、廃棄可能FAT1201内の対応するエントリ1208を指す。図7および8に関して前に記述したように、各ファイルについて、廃棄可能FAT1201の中のクラスタチェーン1202内の各クラスタは、エントリ1210において示されている1FFF FFFFなどの値がファイルのEOFを示すまでファイルの次の順のクラスタを指す。
【0087】
1つのクラスタチェーン1202は2つ以上のファイルと関連付けられ得るということを理解すべきである。例えば、図12bに示されているように、クラスタチェーン1202は、第1のファイル1212のためのクラスタ#6(エレメント1208)からクラスタ#9(エレメント1210)までのクラスタの第1のセットを含み、第2のファイル1214のためのクラスタ#10からクラスタ#11までのクラスタの第2のセットを含む。
【0088】
さらに、プライマリFAT1200と対応する廃棄可能FAT1201とは2つ以上のクラスタチェーンを含み得るということを理解すべきである。例えば、図12aおよび12bに示されているように、プライマリFATは、クラスタ#6からクラスタ#11までのクラスタチェーン1202を含むことができ、クラスタ#20からクラスタ#22までの第2のクラスタチェーン1216を含むことができる。
【0089】
他のインプリメンテーションでは、プライマリFAT1200と廃棄可能FAT1201とを使用するのではなくて、ファイルシステムは、前述したように、1つ以上のファイルをクラスタチェーンと関連付けるためにプライマリFAT1200を利用することができ、クラスタチェーンと関連付けられた1つ以上の廃棄可能ファイルの物理的位置を格納するために廃棄可能FATの代わりにデータベースまたは1つ以上の別々のロケーションファイルを利用することができる。データベースまたはロケーションファイルは、ファイルシステムの非廃棄可能領域に格納されるテキストファイルまたはバイナリファイルであり得る。
【0090】
図13は、プライマリFATと廃棄可能FATとを用いて記憶装置を管理する方法である。図13は、図1と関連して記述される。ステップ1310で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。或るインプリメンテーションでは、ストレージアロケータ144は、ファイル142を記憶装置100に格納する要求を、ファイルと関連付けられている1つ以上の書き込み要求に基づいて導出する。
【0091】
ステップ1320で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1320で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0092】
ステップ1330で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにプライマリFATを更新する。ステップ1340で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すように廃棄可能FATを更新する。ステップ1350で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをマーキングされているファイルに基づいて廃棄可能FATに従って管理する。記憶領域の管理は、図5に関連して前に記述したものと同様である。
【0093】
図14は、FATとデータベースとを用いて記憶装置を管理する方法である。図14は、図1と関連して記述される。ステップ1410で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1420で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1420で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0094】
ステップ1430で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1440で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すようにデータベースを更新する。ステップ1450で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをFATおよびデータベースに基づいて管理する。
【0095】
図15は、FATとロケーションファイルとを用いて記憶装置を管理する方法である。図15は、図1と関連して記述される。ステップ1510で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1520で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1520で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0096】
ステップ1530で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられるクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1540で、ストレージアロケータ144は、記憶装置100におけるファイルの物理的位置を表すようにロケーションファイルを更新する。ステップ1550で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいは記憶領域110に格納されているファイルをFATおよびロケーションファイルに基づいて管理する。
【0097】
さらに他のインプリメンテーションでは、セキュリティを強化し、dosfsck(fsck.vfatとしても知られている)またはchkdskなどのファイルシステム完全性ユーティリティによってファイルシステムが破壊されたり損なわれたりしないように、ストレージアロケータ144は、廃棄可能ファイルの物理的位置を記憶している廃棄可能FAT、データベース、あるいは1つ以上のロケーションファイルを読まなくてはクラスタチェーンが再構築され得ないことを保証するために、廃棄可能ファイル領域においてクラスタをクラスタチェーンにシーケンシャルに割り当てない。さらに、dosfsckなどのユーティリティが、廃棄可能ファイルを非廃棄可能ファイルに変えたり、ファイルが廃棄可能であることを示すファイルの上位ビットに存するフラグをリセットしたりしないように、クラスタチェーンのスクランブルされているクラスタのうちの1つ以上と関連付けられるレンジファイルがFATにおいて生成される。或るインプリメンテーションでは、ホストオペレーティングシステムがレンジファイルにアクセスすることを阻止するために、レンジファイルと関連付けられている隠し属性、システム属性、ディレクトリ属性、あるいはボリューム属性などの属性がイネーブルされ得る。
【0098】
図16は、クラスタチェーンを含んでいて、そのクラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを表すチャートである。図16に示されているように、エントリ1602から始まるクラスタチェーンを構成するクラスタは連続していない。例えば、エントリ1602から始まるクラスタチェーンの順序はクラスタ#13、クラスタ#9、クラスタ#7、クラスタ#18、およびクラスタ#21である。このFATでは、図7および8に関して前に記述したように、各クラスタの値は、クラスタチェーン内の次のクラスタを指す。
【0099】
1つ以上のファイルと関連付けられているクラスタチェーンを構成するクラスタの順序がスクランブルされていることに加えて、ファイルと関連付けられているクラスタチェーンの1つ以上のクラスタを含む1つ以上のレンジファイルがFATにおいて作成され得る。或るインプリメンテーションでは、各レンジファイルは、クラスタチェーンの一部であるクラスタの範囲の中の全てのクラスタを表すことができる。レンジファイルと、クラスタチェーンを構成するクラスタとが関連しているために、chkdskまたはfsck.vfatなどのユーティリティは廃棄可能ファイルを非廃棄可能ファイルに変えず、FATリカバリユーティリティは、ファイルが廃棄可能ファイルであるというFAT32エントリインジケーション内のフラグをリセットしない。
【0100】
図17は、FAT内に作成された1つ以上のレンジファイルを示すチャートであり、その各々は、エントリ1602から始まるクラスタチェーンのうちの少なくとも1つのクラスタを記憶する。例えば、第1のレンジファイル1604は、エントリ1602から始まるクラスタチェーンからのクラスタ#7およびクラスタ#9を記憶し、第2のレンジファイル1606は、エントリ1602から始まるクラスタチェーンからのクラスタ#13、クラスタ#18、およびクラスタ#21を記憶する。
【0101】
レンジファイルは、2つ以上のクラスタチェーンからのクラスタを記憶することができる。例えば、エントリ1602から始まるクラスタチェーンからの上でリストされたクラスタのほかに、第1のレンジファイル1604は、エントリ1608から始まるクラスタチェーンからのクラスタ#5およびクラスタ#10を記憶することができる。同様に、エントリ1602から始まるクラスタチェーンからの上でリストされたクラスタのほかに、第2のレンジファイル1606は、エントリ1608から始まるクラスタチェーンからのクラスタ#16、クラスタ#17、およびクラスタ#22を記憶することができる。
【0102】
図18は、クラスタチェーンを構成する2つ以上のクラスタの順序がスクランブルされているFATを用いて記憶装置を管理する方法である。図18は、図1と関連して記述される。ステップ1810で、ホスト140は、ファイル142を記憶装置100に格納する要求を受け取る。ステップ1820で、ストレージアロケータ144は、前に記述したように記憶装置100と関連付けられているファイルシステム構造においてファイルを「廃棄可能」または「非廃棄可能」とマーキングする。ステップ1820で、ファイルは、廃棄優先レベルがファイルに割り当てられるという意味でもマーキングされる。
【0103】
ステップ1830で、ファイルが廃棄可能ファイルであるとき、ストレージアロケータ144は、ファイルに割り当てられているクラスタチェーンをファイルと関連付けるためにFATを更新する。ステップ1840で、ファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序は、記憶装置100内のメモリの量、クラスタチェーンの総サイズ、クラスタチェーンの2つの連続するクラスタの間のクラスタの数、ならびに/または消去ブロックサイズ、割り当てられたブロック内の各論理アドレスの物理的ブロックアドレス、および/または物理的ブロックアドレスと関連付けられている各ページのためのウェアレベリングデータを考慮できるフラッシュメモリ管理アルゴリズムなどの要素に基づいてFATの中でスクランブルされる。或るインプリメンテーションでは、クラスタチェーンの2つ以上のクラスタの順序は、擬似乱数発生器またはエントロピック乱数発生器を用いてスクランブルされ、前もって割り当てられていない各クラスタについて1つの範囲内のオフセットを提供する。他のインプリメンテーションでは、クラスタチェーンの2つ以上のクラスタの順序は、ホストシステム140および/または記憶装置100からの非決定論的な値を考慮に入れる単方向ハッシュ関数を用いてスクランブルされる。
【0104】
ステップ1850で、第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む第1のレンジファイルがFATにおいて作成される。ステップ1860で、ストレージアロケータ144は、(ストレージコントローラ120との通信を通して)記憶装置100の記憶領域110を管理するか、あるいはFATおよびレンジファイルに基づいて記憶領域110に格納されているファイルを管理する。
【0105】
さらに他のインプリメンテーションでは、廃棄可能ファイルがオープンである間にその廃棄可能ファイルが非廃棄可能ファイルに変換されないことを保証するために変換ロックを実行することができる。例えば、廃棄可能ファイルが記憶装置100にダウンロードされつつある期間中、あるいは廃棄可能ファイルと関連付けられている映画、歌、または番組と関連付けられているリリース日より前に廃棄可能ファイルが記憶装置100にダウンロードされる時などの、廃棄可能ファイルと関連付けられているデータが公衆にリリースされる前の期間中、廃棄可能ファイルはオープンであり得る。一般的に、変換ロックは、変換ロックがセットされているときには廃棄可能ファイルが非廃棄可能ファイルに変換され得ないように働く。
【0106】
図19は、廃棄可能ファイルの変換を、プライマリFATおよび廃棄可能FATを実装するファイルシステムにおいて廃棄可能ファイルがオープンであるときに阻止するために変換ロックを利用する方法である。図19は、図1と関連して記述される。ステップ1910で、ストレージアロケータ144は、廃棄可能ファイルを非廃棄可能ファイルに変換する要求を受け取る。ステップ1920で、ストレージアロケータ144は、廃棄可能ファイルと関連付けられている変換ロック識別子の値を識別する。ステップ1930で、ストレージアロケータ144は、変換ロック識別子の値に基づいて、廃棄可能ファイルが非廃棄可能ファイルに変換され得るかを判定する。通例、ストレージアロケータ144は、変換ロック識別子の値が廃棄可能ファイルがオープンであることを示しているときには廃棄可能ファイルは変換され得ないと判定し、ストレージアロケータ144は、変換ロック識別子の値が廃棄可能ファイルがオープンでないことを示しているときには廃棄可能ファイルは変換され得ると判定する。
【0107】
ステップ1930で廃棄可能ファイルが非廃棄可能ファイルに変換され得ないとストレージアロケータ144が判定すれば、ストレージアロケータ144はステップ1940で廃棄可能ファイルを非廃棄可能ファイルとマーキングすることを禁じる。しかし、廃棄可能ファイルが非廃棄可能ファイルに変換され得るとストレージアロケータ144がステップ1930で判定すれば、ストレージアロケータ144は先へ進み、ステップ1950で、ファイルを、記憶装置100と関連付けられているファイルシステム構造において非廃棄可能ファイルとマーキングし、ステップ1960でファイルの物理的位置を表すようにプライマリFATを更新し、ステップ1970でファイルの物理的位置を除去するために廃棄可能FATを更新する。
【0108】
前に記述した廃棄可能FATの代わりにプライマリFATと共にデータベースまたはロケーションファイルが使用されるときに類似の方法が変換ロックで実行されるということを理解すべきである。
【0109】
或るインプリメンテーションでは、アプリケーションは、アプリケーションと関連付けられている識別子に基づいて、廃棄可能ファイルの非廃棄可能ファイルへの変換あるいは変換ロック識別子の値のチェックなどの操作を実行することを許され得る。通例、廃棄可能ファイルを作成するかあるいはダウンロードするアプリケーションは、ユーザ識別子(ID)を廃棄可能ファイルと関連付けることができる。ユーザIDは、その廃棄可能ファイルを作成したアプリケーションまたはユーザを特定するオーナーユーザIDであり得る。或るインプリメンテーションでは、オーナーユーザIDは4バイト値である。
【0110】
ファイルシステム160は、他のユーザまたはアプリケーションと関連付けられたどんな追加のユーザIDが廃棄可能ファイルにアクセスできるかを定義すると共に、追加のユーザIDが廃棄可能ファイルに関してどんなアクションを取り得るかを定義する能力をオーナーユーザIDに提供する。廃棄可能ファイルの使用法により、追加のユーザIDは単一のアプリケーションまたは単一のユーザと関連付けられることができ、あるいはその追加のユーザIDは多数のアプリケーションまたは多数のユーザと関連付けられる共有ユーザIDであることができるということを理解すべきである。
【0111】
或るインプリメンテーションでは、オーナーユーザIDは、追加のユーザIDと関連付けられているアプリケーションが、廃棄可能ファイルと関連付けられているプレビューデータにアクセスすることを許可することができる。プレビューデータは廃棄可能ファイルの一部であり得るけれども、他のインプリメンテーションでプレビューデータは、廃棄可能ファイルとは別個のものであるけれども廃棄可能ファイルと関連付けられる。或る代表的なインプリメンテーションでは、廃棄可能ファイルは映画であって、プレビューデータは映画と関連付けられた映画予告編を含むことができ、廃棄可能ファイルはテレビ番組であって、プレビューデータはテレビ番組の一部を含むことができ、廃棄可能ファイルは音楽データであって、プレビューデータは音楽データの一部を含むことができ、あるいは廃棄可能ファイルはソフトウェアプログラムであって、プレビューデータはソフトウェアプログラムのデモ版を含むことができる。他の代表的なインプリメンテーションでは、プレビューデータは、廃棄可能ファイルと関連付けられているリリース日の前に廃棄可能ファイルにはアクセスされ得ないけれども廃棄可能ファイルと関連付けられているプレビューデータはアクセスされ、そのリリース日の後は廃棄可能ファイルおよびプレビューデータの両方がアクセスされ得るように、利用され得る。他の1つの例では、オーナーユーザIDは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに、廃棄可能ファイルと関連付けられているユーザIDに基づいて、書き込むことを許可することができる。
【0112】
或るインプリメンテーションでは、ファイルシステムは、追加のユーザIDと関連付けられているアプリケーションが廃棄可能ファイルに関してどんな操作を実行できるかをオーナーユーザIDが定義するためのパーミッションビットマスクを提供することができる。代表的な使用シナリオのためのパーミッションビットマスクの一例が図20に示されている。しかし、オーナーユーザIDが、図20に示されているパーミッションをオーバーライドし、追加のユーザIDに任意のパーミッションを割り当てることができるということを理解すべきである。
【0113】
図20に示されているパーミッションを参照すると、プロパティ書き込みパーミッションビット2004がセットされているアプリケーションは、変換ロックをイネーブルあるいはディスエーブルする、タイムスタンプをセットするかあるいは消費意図ユニバーサルリソースインジケータ(「URI」)を書き込むなどの属性変更をすることができ、プロパティ読み出しパーミッションビット2002がセットされているアプリケーションは変換ロック、タイムスタンプ、あるいは消費意図URIなどの属性を読み出すことができる。優先順位パーミッションビット2006がセットされているアプリケーションは、廃棄可能ファイルの優先レベルを変更することができる。プレビュー読み出しパーミッションビット2008がセットされているアプリケーションは、廃棄可能ファイルと関連付けられているプレビューデータを読み出すことができ、プレビュー書き込みパーミッションビット2010がセットされているアプリケーションは、廃棄可能ファイルと関連付けられているプレビューデータを書き込むことができる。読み出しパーミッションビット2012がセットされているアプリケーションは廃棄可能ファイルを読み出すことができ、書き込みパーミッションビット2014がセットされているアプリケーションは廃棄可能ファイルに書き込むことができる。通例、廃棄可能ファイルと関連付けられているオーナーユーザIDと関連付けられているアプリケーションだけがこれらのパーミッションを有する。変換パーミッションビット2016がセットされているアプリケーションは、廃棄可能ファイルを非廃棄可能ファイルに変換することができる。
【0114】
ファイルをマーキングして、関連付けられているファイルシステムにおいてそれらに廃棄レベルを割り当てる、ここで開示された方法は多くの有益な応用例を持つことができて、その1つは、ユーザファイルのために充分な記憶スペースを保証するためにストレージ使用安全マージンを回復することであるということに留意すべきである。例えば、ファイルに割り当てられた廃棄レベルは、より性能の低いフラッシュモジュールにファイルクラスタを再マッピングするためあるいは要求があり次第クラスタをクリアするために使用され得る。
【0115】
冠詞は、ここでは、文脈に応じて冠詞の文法上の目的語の1つまたは2つ以上(すなわち、少なくとも1つ)に言及するために使用される。例を挙げると、文脈に応じて、「エレメント」は、1つのエレメントまたは2つ以上のエレメントを意味することができる。「・・・を含む」という用語は、ここでは、「・・・を含むが、・・・に限定されない」という句を意味するように用いられ、この句と交換可能に用いられている。「または」や「および」という用語は、文脈が明らかに別のことを示していない限り、「および/または」という用語を意味するように用いられ、これらの用語と交換可能に用いられている。「・・・など(のような)」という用語は、ここでは、「・・・など(のような)であるが、・・・に限定されない」という句を意味するように用いられ、この句と交換可能に用いられている。
【0116】
発明の代表的な実施形態をこのように記述して、開示された実施形態の改変形が発明の範囲内にあるということを当業者であれば理解できるはずである。従って、代替の実施形態は、より多くのモジュール、より少数のモジュールおよび/または機能的に同等のモジュールを含むことができる。本願明細書における開示は、SD駆動フラッシュメモリカード、フラッシュ記憶装置、非フラッシュ記憶装置、ユニバーサルシリアルバス(「USB」)インターフェイスを備える「ディスクオンキー」装置、USBフラッシュドライブ(「UFD」)、マルチメディアカード(「MMC」)、セキュアデジタル(「SD」)、ミニSD(miniSD)、およびマイクロSD(microSD)などの種々のタイプの大容量記憶装置に関連している。従って、添付の特許請求の範囲は、本願明細書における開示によって限定されない。
【特許請求の範囲】
【請求項1】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させるステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるステップと、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記クラスタチェーンは、少なくとも前記第1のファイルの物理的位置をマスクする方法。
【請求項3】
請求項1記載の方法において、
ホストオペレーティングシステムが前記第1のファイルにアクセスすることを阻止することを前記第1のファイルと関連付けられている属性により可能にするステップをさらに含む方法。
【請求項4】
請求項1記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させるステップと、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるステップと、
をさらに含む方法。
【請求項5】
請求項4記載の方法において、
前記クラスタチェーンは、前記第1のファイルおよび前記第2のファイルの物理的位置をマスクする方法。
【請求項6】
請求項1記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させるステップと、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるステップと、
をさらに含む方法。
【請求項7】
請求項1記載の方法において、
前記第1のファイルを非廃棄可能ファイルとマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルの物理的位置を表すように、前記記憶装置に前記プライマリFATを更新させるステップと、
前記第1のファイルの物理的位置を除去するために、前記記憶装置に前記廃棄可能FATを更新させるステップと、
をさらに含む方法。
【請求項8】
請求項7記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップをさらに含み、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされる方法。
【請求項9】
請求項1記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップと、
前記第1のファイルと関連付けられている変換ロック識別子の値を識別して判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるステップと、
をさらに含む方法。
【請求項10】
請求項1記載の方法において、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別するステップと、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するステップと、
をさらに含む方法。
【請求項11】
請求項10記載の方法において、
前記ユーザIDは、共有ユーザIDである方法。
【請求項12】
請求項1記載の方法において、
前記プライマリFATのクラスタチェーンは、前記廃棄可能FAT内の位置を指す方法。
【請求項13】
請求項1記載の方法において、
前記第1のファイルを廃棄可能とマーキングするステップは、前記第1のファイルに廃棄優先レベルを割り当てることを含む方法。
【請求項14】
請求項13記載の方法において、
前記第1のファイルに廃棄優先レベルを割り当てることは、
対応する値を、前記第1のファイルに対応するプライマリFATエントリ内のm個の最上位ビットにセットすること、あるいは
対応する値を、前記第1のファイルに対応するファイルシステムエントリ内のデータフィールドにセットすることのうちの少なくとも1つを含む方法。
【請求項15】
請求項13記載の方法において、
前記廃棄優先レベルは、
前記第1のファイルの予想される使用、
前記第1のファイルの使用と関連付けられる予想される収益、
前記第1のファイルのファイルタイプ、
前記第1のファイルのサイズ、
前記記憶装置における前記第1のファイルの位置、および
前記第1のファイルの古さ、のうちのいずれか1つに従って前記第1のファイルに割り当てられる方法。
【請求項16】
請求項1記載の方法において、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップは、
廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによってストレージ使用安全マージンを回復すること、
廃棄可能とマーキングされている全てのファイルを除去することによって記憶領域を解放すること、および
前記第1のファイルのクラスタをより低い性能の記憶モジュールへ再マッピングすることのうちのいずれか1つまたはこれらの組み合わせを含む方法。
【請求項17】
記憶装置を管理する方法であって、
ホストに動作可能に結合されている記憶装置において、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記プライマリFATを更新するステップと、
前記記憶装置内の前記第1のファイルの物理的位置を表すように、前記廃棄可能FATを更新するステップと、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項18】
請求項17記載の方法において、
前記クラスタチェーンは、少なくとも前記第1のファイルの物理的位置をマスクする方法。
【請求項19】
請求項17記載の方法において、
ホストオペレーティングシステムが前記第1のファイルにアクセスすることを阻止することを前記第1のファイルと関連付けられている属性により可能にするステップをさらに含む方法。
【請求項20】
請求項17記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記プライマリFATを更新するステップと、
前記第2のファイルの物理的位置を表すように、前記廃棄可能FATを更新するステップと、
をさらに含む方法。
【請求項21】
請求項20記載の方法において、
前記クラスタチェーンは、前記第1のファイルおよび前記第2のファイルの物理的位置をマスクする方法。
【請求項22】
請求項17記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記プライマリFATを更新するステップと、
前記第2のファイルの物理的位置を表すように、前記廃棄可能FATを更新するステップと、
をさらに含む方法。
【請求項23】
請求項17記載の方法において、
前記第1のファイルを非廃棄可能ファイルとマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられている前記ファイルシステム構造において行われるステップと、
前記第1のファイルの物理的位置を表すように、前記プライマリFATを更新するステップと、
前記第1のファイルの物理的位置を除去するために、前記廃棄可能FATを更新するステップと、
をさらに含む方法。
【請求項24】
請求項23記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップをさらに含み、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされる方法。
【請求項25】
請求項17記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップと、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるステップと、
をさらに含む方法。
【請求項26】
請求項17記載の方法において、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別するステップと、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するステップと、
をさらに含む方法。
【請求項27】
請求項17記載の方法において、
前記ユーザIDは、共有ユーザIDである方法。
【請求項28】
請求項17記載の方法において、
前記プライマリFATのクラスタチェーンは、前記廃棄可能FAT内の位置を指す方法。
【請求項29】
請求項17記載の方法において、
前記第1のファイルを廃棄可能とマーキングするステップは、前記第1のファイルに廃棄優先レベルを割り当てることを含む方法。
【請求項30】
請求項29記載の方法において、
前記第1のファイルに廃棄優先レベルを割り当てることは、
対応する値を、前記第1のファイルに対応するプライマリFATエントリ内のm個の最上位ビットにセットすること、あるいは
対応する値を、前記第1のファイルに対応するファイルシステムエントリ内のデータフィールドにセットすることのうちの少なくとも1つを含む方法。
【請求項31】
請求項29記載の方法において、
前記廃棄優先レベルは、
前記第1のファイルの予想される使用、
前記第1のファイルの使用と関連付けられる予想される収益、
前記第1のファイルのファイルタイプ、
前記第1のファイルのサイズ、
前記記憶装置における前記第1のファイルの位置、および
前記第1のファイルの古さ、のうちのいずれか1つに従って前記第1のファイルに割り当てられる方法。
【請求項32】
請求項17記載の方法において、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップは、
廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによってストレージ使用安全マージンを回復すること、
廃棄可能とマーキングされている全てのファイルを除去することによって記憶領域を解放すること、および
前記第1のファイルのクラスタをより低い性能の記憶モジュールへ再マッピングすることのうちのいずれか1つまたはこれらの組み合わせを含む方法。
【請求項33】
記憶装置を管理するためのストレージアロケータであって、
記憶装置および前記記憶装置のホストとインターフェイスするための通信インターフェイスと、
前記記憶装置と関連付けられているファイルシステムを格納するためのストレージユニットと、
前記記憶装置と関連付けられているファイルシステムを管理するためのプロセッサと、を備え、
前記プロセッサは、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取り、
前記第1のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記記憶装置における前記第1のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させ、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するように構成されるストレージアロケータ。
【請求項34】
請求項33記載のストレージアロケータにおいて、
前記クラスタチェーンは、前記第1のファイルの物理的位置をマスクするストレージアロケータ。
【請求項35】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取り、
前記第2のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成され、
前記廃棄可能クラスタチェーンは、前記第1のファイルおよび前記第2のファイルの物理的位置をマスクするストレージアロケータ。
【請求項36】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取り、
前記第2のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成されるストレージアロケータ。
【請求項37】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記第1のファイルの非廃棄可能ファイルとのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルの物理的位置を表すように、前記記憶装置に前記プライマリFATを更新させ、
前記第1のファイルの物理的位置を除去するために、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成されるストレージアロケータ。
【請求項38】
請求項37記載のストレージアロケータにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するようにさらに構成され、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされるストレージアロケータ。
【請求項39】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別し、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるようにさらに構成されるストレージアロケータ。
【請求項40】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別し、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するようにさらに構成されるストレージアロケータ。
【請求項41】
請求項33記載のストレージアロケータにおいて、
前記プライマリFATのクラスタチェーンは、前記廃棄可能FAT内の位置を指すストレージアロケータ。
【請求項42】
記憶システムであって、
通信インターフェイスと、
記憶装置と関連付けられているファイルシステムを管理するためのストレージアロケータであって、前記記憶装置の記憶領域における1つ以上のファイルの記憶を管理するためのプロセッサを含むストレージアロケータと、を備え、
前記プロセッサは、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を前記通信インターフェイスを介して受け取り、
前記第1のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記記憶装置における前記第1のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させ、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するように構成される記憶システム。
【請求項43】
請求項42記載の記憶システムにおいて、
前記プロセッサは、
前記第1のファイルの非廃棄可能ファイルとのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルの物理的位置を表すように、前記記憶装置に前記プライマリFATを更新させ、
前記第1のファイルの物理的位置を除去するために、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成される記憶システム。
【請求項44】
請求項43記載の記憶システムにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するようにさらに構成され、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされる記憶システム。
【請求項45】
請求項42記載の記憶システムにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別し、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるようにさらに構成される記憶システム。
【請求項46】
請求項42記載の記憶システムにおいて、
前記プロセッサは、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別し、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するようにさらに構成される記憶システム。
【請求項47】
請求項42記載の記憶システムにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を前記通信インターフェイスを介して受け取るために、前記プロセッサは、前記通信インターフェイスを介して受け取られた前記第1のファイルと関連付けられている1つ以上の書き込み要求に基づいて、前記第1のファイルを格納する要求を導出するように構成される記憶システム。
【請求項48】
請求項42記載の記憶システムにおいて、
前記ストレージアロケータは、ホストに埋め込まれている記憶システム。
【請求項49】
請求項42記載の記憶システムにおいて、
前記ストレージアロケータは、記憶装置に埋め込まれている記憶システム。
【請求項50】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置にファイルアロケーションテーブル(「FAT」)を更新させるステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、データベースを更新するステップと、
前記FATおよび前記データベースに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項51】
記憶装置を管理する方法であって、
ホストに動作可能に結合されている記憶装置において、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、ファイルアロケーションテーブル(「FAT」)を更新するステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、データベースを更新するステップと、
前記FATおよび前記データベースに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項52】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置にファイルアロケーションテーブル(「FAT」)を更新させるステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、ロケーションファイルを更新するステップと、
前記FATおよび前記ロケーションファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項53】
請求項52記載の方法において、
前記ロケーションファイルは、テキストファイルである方法。
【請求項54】
請求項52記載の方法において、
前記ロケーションファイルは、バイナリファイルである方法。
【請求項55】
記憶装置を管理する方法であって、
ホストに結合されている記憶装置において、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、ファイルアロケーションテーブル(「FAT」)を更新するステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、ロケーションファイルを更新するステップと、
前記FATおよび前記ロケーションファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項56】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置にファイルアロケーションテーブル(「FAT」)を更新させるステップと、
前記FATの中で前記第1のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第1のレンジファイルを作成するステップと、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項57】
請求項56記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記FATを更新させるステップと、
前記FATの中で前記第2のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
をさらに含む方法。
【請求項58】
請求項57記載の方法において、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含むように前記FAT内の第1のレンジファイルを更新するステップをさらに含む方法。
【請求項59】
請求項56記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記FATを更新させるステップと、
前記FATの中で前記第2のファイルと関連付けられている第2のクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップと、をさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項60】
請求項56記載の方法において、
前記第1のレンジファイルを含まない、前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップをさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項61】
記憶装置を管理する方法であって、
ホストに結合されている記憶装置において、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、ファイルアロケーションテーブル(「FAT」)を更新するステップと、
前記FATの中で前記第1のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第1のレンジファイルを作成するステップと、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項62】
請求項61記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記FATを更新するステップと、
前記FATの中で前記第2のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
をさらに含む方法。
【請求項63】
請求項61記載の方法において、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含むように前記FAT内の第1のレンジファイルを更新するステップをさらに含む方法。
【請求項64】
請求項61記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられている前記ファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記FATを更新するステップと、
前記FATの中で前記第2のファイルと関連付けられている第2のクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップと、をさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項65】
請求項61記載の方法において、
前記第1のレンジファイルを含まない、前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップをさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項66】
廃棄可能ファイルと関連付けられている操作を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
オーナーユーザIDを廃棄可能ファイルと関連付けるステップであって、前記廃棄可能ファイルが前記記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含むステップと、
前記オーナーユーザIDと関連付けられているアプリケーションで、前記廃棄可能ファイルと関連付けられている追加のユーザIDのためのパーミッションのセットを定義するステップと、
前記追加のユーザIDと関連付けられているアプリケーションから、前記廃棄可能ファイルと関連付けられている操作を実行する要求を受け取るステップと、
前記パーミッションのセットに基づいて、前記追加のユーザIDと関連付けられているアプリケーションが前記操作を実行できるかを判定するステップと、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するステップと、
を含む方法。
【請求項67】
請求項66記載の方法において、
前記オーナーユーザIDと関連付けられているアプリケーションは、前記廃棄可能ファイルを前記記憶装置にダウンロードする方法。
【請求項68】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられている属性を改変することを含む方法。
【請求項69】
請求項68記載の方法において、
前記属性は、変換ロック識別子、タイムスタンプ、消費意図ユニバーサルリソースインジケータ、および優先レベルのうちの少なくとも1つを含む方法。
【請求項70】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられている属性を読み出すことを含む方法。
【請求項71】
請求項70記載の方法において、
前記属性は、変換ロック識別子、タイムスタンプ、消費意図ユニバーサルリソースインジケータ、および優先レベルのうちの少なくとも1つを含む方法。
【請求項72】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルを読み出すことを含む方法。
【請求項73】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルに書き込むことを含む方法。
【請求項74】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられているプレビューデータを読み出すことを含む方法。
【請求項75】
請求項74記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータを含む方法。
【請求項76】
請求項74記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータとは別である方法。
【請求項77】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられているプレビューデータを書き込むことを含む方法。
【請求項78】
請求項66記載の方法において、
前記追加のユーザIDは、多数のユーザと関連付けられる共有ユーザIDである方法。
【請求項79】
請求項66記載の方法において、
前記追加のユーザIDは、多数のアプリケーションと関連付けられる共有ユーザIDである方法。
【請求項80】
請求項66記載の方法において、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するステップは、前記追加のユーザIDと関連付けられているアプリケーションが前記廃棄可能ファイルと関連付けられている操作を実行することを禁じることを含む方法。
【請求項81】
請求項66記載の方法において、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するステップは、前記追加のユーザIDと関連付けられているアプリケーションが前記廃棄可能ファイルと関連付けられている操作を実行することを許可することを含む方法。
【請求項82】
記憶システムであって、
通信インターフェイスと、
記憶装置と関連付けられているファイルシステムを管理するためのストレージアロケータであって、前記記憶装置に格納されている廃棄可能ファイルと関連付けられている操作を管理するためのプロセッサを含むストレージアロケータと、を備え、
前記プロセッサは、
オーナーユーザIDを、前記記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含む前記廃棄可能ファイルと関連付け、
前記オーナーユーザIDと関連付けられているアプリケーションで、前記廃棄可能ファイルと関連付けられている追加のユーザIDのためのパーミッションのセットを定義し、
前記追加のユーザIDと関連付けられているアプリケーションから、前記廃棄可能ファイルと関連付けられている操作を実行する要求を前記通信インターフェイスを介して受け取り、
前記パーミッションのセットに基づいて、前記追加のユーザIDと関連付けられているアプリケーションが前記操作を実行できるかを判定し、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するように構成される記憶システム。
【請求項83】
請求項82記載の記憶システムにおいて、
前記廃棄可能ファイルと関連付けられている操作を管理するために、前記プロセッサは、前記追加のユーザIDと関連付けられているアプリケーションが前記廃棄可能ファイルと関連付けられているプレビューデータを読み出すことを許可するように構成される記憶システム。
【請求項84】
請求項82記載の記憶システムにおいて、
前記追加のユーザIDは、多数のユーザと関連付けられる共有ユーザIDである記憶システム。
【請求項85】
請求項82記載の記憶システムにおいて、
前記追加のユーザIDは、多数のアプリケーションと関連付けられる共有ユーザIDである記憶システム。
【請求項86】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置にプレビューデータを格納するステップと、
前記プレビューデータを、前記記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含む廃棄可能ファイルと関連付けるステップと、
アプリケーションが前記プレビューデータにアクセスすることを許可されるけれども前記廃棄可能ファイルにアクセスすることを許可されないように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理するステップと、
を含む方法。
【請求項87】
請求項86記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータを含む方法。
【請求項88】
請求項86記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータとは別である方法。
【請求項89】
請求項86記載の方法において、
前記廃棄可能ファイルは映画を含み、前記プレビューデータは前記映画と関連付けられている映画予告編を含む方法。
【請求項90】
請求項86記載の方法において、
前記廃棄可能ファイルはテレビ番組を含み、前記プレビューデータは前記テレビ番組の一部を含む方法。
【請求項91】
請求項86記載の方法において、
前記廃棄可能ファイルは音楽データを含み、前記プレビューデータは前記音楽データの一部を含む方法。
【請求項92】
請求項86記載の方法において、
前記廃棄可能ファイルはプログラムを含み、前記プレビューデータは前記プログラムのデモ版を含む方法。
【請求項93】
請求項86記載の方法において、
アプリケーションが前記プレビューデータにアクセスすることを許可されるけれども前記廃棄可能ファイルにアクセスすることを許可されないように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理するステップは、前記廃棄可能ファイルと関連付けられているリリース日の前の期間中にはアプリケーションが前記プレビューデータにアクセスすることを許可されるけれども前記廃棄可能ファイルにアクセスすることを許可されないように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理することを含む方法。
【請求項94】
請求項93記載の方法において、
前記廃棄可能ファイルと関連付けられているリリース日の後の期間中にはアプリケーションが前記プレビューデータにアクセスすることを許可されると共に前記廃棄可能ファイルにアクセスすることを許可されるように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理するステップをさらに含む方法。
【請求項1】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させるステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるステップと、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記クラスタチェーンは、少なくとも前記第1のファイルの物理的位置をマスクする方法。
【請求項3】
請求項1記載の方法において、
ホストオペレーティングシステムが前記第1のファイルにアクセスすることを阻止することを前記第1のファイルと関連付けられている属性により可能にするステップをさらに含む方法。
【請求項4】
請求項1記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させるステップと、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるステップと、
をさらに含む方法。
【請求項5】
請求項4記載の方法において、
前記クラスタチェーンは、前記第1のファイルおよび前記第2のファイルの物理的位置をマスクする方法。
【請求項6】
請求項1記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させるステップと、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるステップと、
をさらに含む方法。
【請求項7】
請求項1記載の方法において、
前記第1のファイルを非廃棄可能ファイルとマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルの物理的位置を表すように、前記記憶装置に前記プライマリFATを更新させるステップと、
前記第1のファイルの物理的位置を除去するために、前記記憶装置に前記廃棄可能FATを更新させるステップと、
をさらに含む方法。
【請求項8】
請求項7記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップをさらに含み、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされる方法。
【請求項9】
請求項1記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップと、
前記第1のファイルと関連付けられている変換ロック識別子の値を識別して判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるステップと、
をさらに含む方法。
【請求項10】
請求項1記載の方法において、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別するステップと、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するステップと、
をさらに含む方法。
【請求項11】
請求項10記載の方法において、
前記ユーザIDは、共有ユーザIDである方法。
【請求項12】
請求項1記載の方法において、
前記プライマリFATのクラスタチェーンは、前記廃棄可能FAT内の位置を指す方法。
【請求項13】
請求項1記載の方法において、
前記第1のファイルを廃棄可能とマーキングするステップは、前記第1のファイルに廃棄優先レベルを割り当てることを含む方法。
【請求項14】
請求項13記載の方法において、
前記第1のファイルに廃棄優先レベルを割り当てることは、
対応する値を、前記第1のファイルに対応するプライマリFATエントリ内のm個の最上位ビットにセットすること、あるいは
対応する値を、前記第1のファイルに対応するファイルシステムエントリ内のデータフィールドにセットすることのうちの少なくとも1つを含む方法。
【請求項15】
請求項13記載の方法において、
前記廃棄優先レベルは、
前記第1のファイルの予想される使用、
前記第1のファイルの使用と関連付けられる予想される収益、
前記第1のファイルのファイルタイプ、
前記第1のファイルのサイズ、
前記記憶装置における前記第1のファイルの位置、および
前記第1のファイルの古さ、のうちのいずれか1つに従って前記第1のファイルに割り当てられる方法。
【請求項16】
請求項1記載の方法において、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップは、
廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによってストレージ使用安全マージンを回復すること、
廃棄可能とマーキングされている全てのファイルを除去することによって記憶領域を解放すること、および
前記第1のファイルのクラスタをより低い性能の記憶モジュールへ再マッピングすることのうちのいずれか1つまたはこれらの組み合わせを含む方法。
【請求項17】
記憶装置を管理する方法であって、
ホストに動作可能に結合されている記憶装置において、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記プライマリFATを更新するステップと、
前記記憶装置内の前記第1のファイルの物理的位置を表すように、前記廃棄可能FATを更新するステップと、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項18】
請求項17記載の方法において、
前記クラスタチェーンは、少なくとも前記第1のファイルの物理的位置をマスクする方法。
【請求項19】
請求項17記載の方法において、
ホストオペレーティングシステムが前記第1のファイルにアクセスすることを阻止することを前記第1のファイルと関連付けられている属性により可能にするステップをさらに含む方法。
【請求項20】
請求項17記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記プライマリFATを更新するステップと、
前記第2のファイルの物理的位置を表すように、前記廃棄可能FATを更新するステップと、
をさらに含む方法。
【請求項21】
請求項20記載の方法において、
前記クラスタチェーンは、前記第1のファイルおよび前記第2のファイルの物理的位置をマスクする方法。
【請求項22】
請求項17記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記プライマリFATを更新するステップと、
前記第2のファイルの物理的位置を表すように、前記廃棄可能FATを更新するステップと、
をさらに含む方法。
【請求項23】
請求項17記載の方法において、
前記第1のファイルを非廃棄可能ファイルとマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられている前記ファイルシステム構造において行われるステップと、
前記第1のファイルの物理的位置を表すように、前記プライマリFATを更新するステップと、
前記第1のファイルの物理的位置を除去するために、前記廃棄可能FATを更新するステップと、
をさらに含む方法。
【請求項24】
請求項23記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップをさらに含み、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされる方法。
【請求項25】
請求項17記載の方法において、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するステップと、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるステップと、
をさらに含む方法。
【請求項26】
請求項17記載の方法において、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別するステップと、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するステップと、
をさらに含む方法。
【請求項27】
請求項17記載の方法において、
前記ユーザIDは、共有ユーザIDである方法。
【請求項28】
請求項17記載の方法において、
前記プライマリFATのクラスタチェーンは、前記廃棄可能FAT内の位置を指す方法。
【請求項29】
請求項17記載の方法において、
前記第1のファイルを廃棄可能とマーキングするステップは、前記第1のファイルに廃棄優先レベルを割り当てることを含む方法。
【請求項30】
請求項29記載の方法において、
前記第1のファイルに廃棄優先レベルを割り当てることは、
対応する値を、前記第1のファイルに対応するプライマリFATエントリ内のm個の最上位ビットにセットすること、あるいは
対応する値を、前記第1のファイルに対応するファイルシステムエントリ内のデータフィールドにセットすることのうちの少なくとも1つを含む方法。
【請求項31】
請求項29記載の方法において、
前記廃棄優先レベルは、
前記第1のファイルの予想される使用、
前記第1のファイルの使用と関連付けられる予想される収益、
前記第1のファイルのファイルタイプ、
前記第1のファイルのサイズ、
前記記憶装置における前記第1のファイルの位置、および
前記第1のファイルの古さ、のうちのいずれか1つに従って前記第1のファイルに割り当てられる方法。
【請求項32】
請求項17記載の方法において、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するステップは、
廃棄可能とマーキングされている1つ以上のファイルを選択的に除去することによってストレージ使用安全マージンを回復すること、
廃棄可能とマーキングされている全てのファイルを除去することによって記憶領域を解放すること、および
前記第1のファイルのクラスタをより低い性能の記憶モジュールへ再マッピングすることのうちのいずれか1つまたはこれらの組み合わせを含む方法。
【請求項33】
記憶装置を管理するためのストレージアロケータであって、
記憶装置および前記記憶装置のホストとインターフェイスするための通信インターフェイスと、
前記記憶装置と関連付けられているファイルシステムを格納するためのストレージユニットと、
前記記憶装置と関連付けられているファイルシステムを管理するためのプロセッサと、を備え、
前記プロセッサは、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取り、
前記第1のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記記憶装置における前記第1のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させ、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するように構成されるストレージアロケータ。
【請求項34】
請求項33記載のストレージアロケータにおいて、
前記クラスタチェーンは、前記第1のファイルの物理的位置をマスクするストレージアロケータ。
【請求項35】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取り、
前記第2のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成され、
前記廃棄可能クラスタチェーンは、前記第1のファイルおよび前記第2のファイルの物理的位置をマスクするストレージアロケータ。
【請求項36】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取り、
前記第2のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記第2のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成されるストレージアロケータ。
【請求項37】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記第1のファイルの非廃棄可能ファイルとのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルの物理的位置を表すように、前記記憶装置に前記プライマリFATを更新させ、
前記第1のファイルの物理的位置を除去するために、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成されるストレージアロケータ。
【請求項38】
請求項37記載のストレージアロケータにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するようにさらに構成され、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされるストレージアロケータ。
【請求項39】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別し、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるようにさらに構成されるストレージアロケータ。
【請求項40】
請求項33記載のストレージアロケータにおいて、
前記プロセッサは、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別し、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するようにさらに構成されるストレージアロケータ。
【請求項41】
請求項33記載のストレージアロケータにおいて、
前記プライマリFATのクラスタチェーンは、前記廃棄可能FAT内の位置を指すストレージアロケータ。
【請求項42】
記憶システムであって、
通信インターフェイスと、
記憶装置と関連付けられているファイルシステムを管理するためのストレージアロケータであって、前記記憶装置の記憶領域における1つ以上のファイルの記憶を管理するためのプロセッサを含むストレージアロケータと、を備え、
前記プロセッサは、
プライマリファイルアロケーションテーブル(「FAT」)と、さらに廃棄可能FATとを包含する前記記憶装置の記憶領域に第1のファイルを格納する要求を前記通信インターフェイスを介して受け取り、
前記第1のファイルの廃棄可能とのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置に前記プライマリFATを更新させ、
前記記憶装置における前記第1のファイルの物理的位置を表すように、前記記憶装置に前記廃棄可能FATを更新させ、
前記廃棄可能FATに従って前記記憶装置の記憶領域を管理するように構成される記憶システム。
【請求項43】
請求項42記載の記憶システムにおいて、
前記プロセッサは、
前記第1のファイルの非廃棄可能ファイルとのマーキングを、前記記憶装置と関連付けられているファイルシステム構造において行い、
前記第1のファイルの物理的位置を表すように、前記記憶装置に前記プライマリFATを更新させ、
前記第1のファイルの物理的位置を除去するために、前記記憶装置に前記廃棄可能FATを更新させるようにさらに構成される記憶システム。
【請求項44】
請求項43記載の記憶システムにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別するようにさらに構成され、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていないことを示した後に、前記第1のファイルは非廃棄可能ファイルとマーキングされる記憶システム。
【請求項45】
請求項42記載の記憶システムにおいて、
前記プロセッサは、
前記第1のファイルが廃棄可能ファイルから非廃棄可能ファイルに変換され得るかを判定するために前記第1のファイルと関連付けられている変換ロック識別子の値を識別し、
前記第1のファイルと関連付けられている変換ロック識別子の値の判定が前記第1のファイルがロックされていることを示した後に、前記第1のファイルを非廃棄可能とマーキングすることを禁じるようにさらに構成される記憶システム。
【請求項46】
請求項42記載の記憶システムにおいて、
前記プロセッサは、
ユーザIDと、前記第1のファイルと関連付けられているプレビューファイルとに関連付けられているファイルパーミッションを識別し、
前記識別されたファイルパーミッションに基づいて前記第1のファイルと関連付けられているプレビューファイルへのアクセスを管理するようにさらに構成される記憶システム。
【請求項47】
請求項42記載の記憶システムにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を前記通信インターフェイスを介して受け取るために、前記プロセッサは、前記通信インターフェイスを介して受け取られた前記第1のファイルと関連付けられている1つ以上の書き込み要求に基づいて、前記第1のファイルを格納する要求を導出するように構成される記憶システム。
【請求項48】
請求項42記載の記憶システムにおいて、
前記ストレージアロケータは、ホストに埋め込まれている記憶システム。
【請求項49】
請求項42記載の記憶システムにおいて、
前記ストレージアロケータは、記憶装置に埋め込まれている記憶システム。
【請求項50】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置にファイルアロケーションテーブル(「FAT」)を更新させるステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、データベースを更新するステップと、
前記FATおよび前記データベースに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項51】
記憶装置を管理する方法であって、
ホストに動作可能に結合されている記憶装置において、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、ファイルアロケーションテーブル(「FAT」)を更新するステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、データベースを更新するステップと、
前記FATおよび前記データベースに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項52】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置にファイルアロケーションテーブル(「FAT」)を更新させるステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、ロケーションファイルを更新するステップと、
前記FATおよび前記ロケーションファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項53】
請求項52記載の方法において、
前記ロケーションファイルは、テキストファイルである方法。
【請求項54】
請求項52記載の方法において、
前記ロケーションファイルは、バイナリファイルである方法。
【請求項55】
記憶装置を管理する方法であって、
ホストに結合されている記憶装置において、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、ファイルアロケーションテーブル(「FAT」)を更新するステップと、
前記記憶装置における前記第1のファイルの物理的位置を表すように、ロケーションファイルを更新するステップと、
前記FATおよび前記ロケーションファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項56】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、前記記憶装置にファイルアロケーションテーブル(「FAT」)を更新させるステップと、
前記FATの中で前記第1のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第1のレンジファイルを作成するステップと、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項57】
請求項56記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記FATを更新させるステップと、
前記FATの中で前記第2のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
をさらに含む方法。
【請求項58】
請求項57記載の方法において、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含むように前記FAT内の第1のレンジファイルを更新するステップをさらに含む方法。
【請求項59】
請求項56記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記記憶装置に前記FATを更新させるステップと、
前記FATの中で前記第2のファイルと関連付けられている第2のクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップと、をさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項60】
請求項56記載の方法において、
前記第1のレンジファイルを含まない、前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップをさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項61】
記憶装置を管理する方法であって、
ホストに結合されている記憶装置において、
前記記憶装置の記憶領域に第1のファイルを格納する要求を受け取るステップと、
前記第1のファイルを廃棄可能とマーキングするステップであって、前記第1のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルに割り当てられているクラスタチェーンを前記第1のファイルと関連付けるために、ファイルアロケーションテーブル(「FAT」)を更新するステップと、
前記FATの中で前記第1のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第1のレンジファイルを作成するステップと、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップと、
を含む方法。
【請求項62】
請求項61記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられているファイルシステム構造において行われるステップと、
前記第1のファイルおよび前記第2のファイルと関連付けられるクラスタチェーンを前記第2のファイルと関連付けるために、前記FATを更新するステップと、
前記FATの中で前記第2のファイルと関連付けられているクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
をさらに含む方法。
【請求項63】
請求項61記載の方法において、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含むように前記FAT内の第1のレンジファイルを更新するステップをさらに含む方法。
【請求項64】
請求項61記載の方法において、
前記記憶装置の記憶領域に第2のファイルを格納する要求を受け取るステップと、
前記第2のファイルを廃棄可能とマーキングするステップであって、前記第2のファイルをマーキングするステップが前記記憶装置と関連付けられている前記ファイルシステム構造において行われるステップと、
前記第2のファイルに割り当てられている第2のクラスタチェーンを前記第2のファイルと関連付けるために、前記FATを更新するステップと、
前記FATの中で前記第2のファイルと関連付けられている第2のクラスタチェーンの2つ以上のクラスタの順序をスクランブルするステップと、
前記第2のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップと、をさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項65】
請求項61記載の方法において、
前記第1のレンジファイルを含まない、前記第1のファイルと関連付けられているクラスタチェーンの少なくとも1つのクラスタを含む前記FAT内の第2のレンジファイルを作成するステップをさらに含み、
前記FATおよび前記第1のレンジファイルに従って前記記憶装置の記憶領域を管理するステップは、前記FAT、前記第1のレンジファイルおよび前記第2のレンジファイルに従って前記記憶装置の記憶領域を管理することを含む方法。
【請求項66】
廃棄可能ファイルと関連付けられている操作を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
オーナーユーザIDを廃棄可能ファイルと関連付けるステップであって、前記廃棄可能ファイルが前記記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含むステップと、
前記オーナーユーザIDと関連付けられているアプリケーションで、前記廃棄可能ファイルと関連付けられている追加のユーザIDのためのパーミッションのセットを定義するステップと、
前記追加のユーザIDと関連付けられているアプリケーションから、前記廃棄可能ファイルと関連付けられている操作を実行する要求を受け取るステップと、
前記パーミッションのセットに基づいて、前記追加のユーザIDと関連付けられているアプリケーションが前記操作を実行できるかを判定するステップと、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するステップと、
を含む方法。
【請求項67】
請求項66記載の方法において、
前記オーナーユーザIDと関連付けられているアプリケーションは、前記廃棄可能ファイルを前記記憶装置にダウンロードする方法。
【請求項68】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられている属性を改変することを含む方法。
【請求項69】
請求項68記載の方法において、
前記属性は、変換ロック識別子、タイムスタンプ、消費意図ユニバーサルリソースインジケータ、および優先レベルのうちの少なくとも1つを含む方法。
【請求項70】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられている属性を読み出すことを含む方法。
【請求項71】
請求項70記載の方法において、
前記属性は、変換ロック識別子、タイムスタンプ、消費意図ユニバーサルリソースインジケータ、および優先レベルのうちの少なくとも1つを含む方法。
【請求項72】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルを読み出すことを含む方法。
【請求項73】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルに書き込むことを含む方法。
【請求項74】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられているプレビューデータを読み出すことを含む方法。
【請求項75】
請求項74記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータを含む方法。
【請求項76】
請求項74記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータとは別である方法。
【請求項77】
請求項66記載の方法において、
前記操作は、前記廃棄可能ファイルと関連付けられているプレビューデータを書き込むことを含む方法。
【請求項78】
請求項66記載の方法において、
前記追加のユーザIDは、多数のユーザと関連付けられる共有ユーザIDである方法。
【請求項79】
請求項66記載の方法において、
前記追加のユーザIDは、多数のアプリケーションと関連付けられる共有ユーザIDである方法。
【請求項80】
請求項66記載の方法において、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するステップは、前記追加のユーザIDと関連付けられているアプリケーションが前記廃棄可能ファイルと関連付けられている操作を実行することを禁じることを含む方法。
【請求項81】
請求項66記載の方法において、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するステップは、前記追加のユーザIDと関連付けられているアプリケーションが前記廃棄可能ファイルと関連付けられている操作を実行することを許可することを含む方法。
【請求項82】
記憶システムであって、
通信インターフェイスと、
記憶装置と関連付けられているファイルシステムを管理するためのストレージアロケータであって、前記記憶装置に格納されている廃棄可能ファイルと関連付けられている操作を管理するためのプロセッサを含むストレージアロケータと、を備え、
前記プロセッサは、
オーナーユーザIDを、前記記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含む前記廃棄可能ファイルと関連付け、
前記オーナーユーザIDと関連付けられているアプリケーションで、前記廃棄可能ファイルと関連付けられている追加のユーザIDのためのパーミッションのセットを定義し、
前記追加のユーザIDと関連付けられているアプリケーションから、前記廃棄可能ファイルと関連付けられている操作を実行する要求を前記通信インターフェイスを介して受け取り、
前記パーミッションのセットに基づいて、前記追加のユーザIDと関連付けられているアプリケーションが前記操作を実行できるかを判定し、
前記判定に基づいて、前記廃棄可能ファイルと関連付けられている操作を管理するように構成される記憶システム。
【請求項83】
請求項82記載の記憶システムにおいて、
前記廃棄可能ファイルと関連付けられている操作を管理するために、前記プロセッサは、前記追加のユーザIDと関連付けられているアプリケーションが前記廃棄可能ファイルと関連付けられているプレビューデータを読み出すことを許可するように構成される記憶システム。
【請求項84】
請求項82記載の記憶システムにおいて、
前記追加のユーザIDは、多数のユーザと関連付けられる共有ユーザIDである記憶システム。
【請求項85】
請求項82記載の記憶システムにおいて、
前記追加のユーザIDは、多数のアプリケーションと関連付けられる共有ユーザIDである記憶システム。
【請求項86】
記憶装置を管理する方法であって、
記憶装置が動作可能に結合されているホストにおいて、
前記記憶装置にプレビューデータを格納するステップと、
前記プレビューデータを、前記記憶装置と関連付けられているファイルシステム構造において廃棄可能とマーキングされているファイルを含む廃棄可能ファイルと関連付けるステップと、
アプリケーションが前記プレビューデータにアクセスすることを許可されるけれども前記廃棄可能ファイルにアクセスすることを許可されないように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理するステップと、
を含む方法。
【請求項87】
請求項86記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータを含む方法。
【請求項88】
請求項86記載の方法において、
前記廃棄可能ファイルは、前記プレビューデータとは別である方法。
【請求項89】
請求項86記載の方法において、
前記廃棄可能ファイルは映画を含み、前記プレビューデータは前記映画と関連付けられている映画予告編を含む方法。
【請求項90】
請求項86記載の方法において、
前記廃棄可能ファイルはテレビ番組を含み、前記プレビューデータは前記テレビ番組の一部を含む方法。
【請求項91】
請求項86記載の方法において、
前記廃棄可能ファイルは音楽データを含み、前記プレビューデータは前記音楽データの一部を含む方法。
【請求項92】
請求項86記載の方法において、
前記廃棄可能ファイルはプログラムを含み、前記プレビューデータは前記プログラムのデモ版を含む方法。
【請求項93】
請求項86記載の方法において、
アプリケーションが前記プレビューデータにアクセスすることを許可されるけれども前記廃棄可能ファイルにアクセスすることを許可されないように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理するステップは、前記廃棄可能ファイルと関連付けられているリリース日の前の期間中にはアプリケーションが前記プレビューデータにアクセスすることを許可されるけれども前記廃棄可能ファイルにアクセスすることを許可されないように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理することを含む方法。
【請求項94】
請求項93記載の方法において、
前記廃棄可能ファイルと関連付けられているリリース日の後の期間中にはアプリケーションが前記プレビューデータにアクセスすることを許可されると共に前記廃棄可能ファイルにアクセスすることを許可されるように、前記プレビューデータおよび前記廃棄可能ファイルへのアクセスを管理するステップをさらに含む方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12a】
【図12b】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12a】
【図12b】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公表番号】特表2012−512460(P2012−512460A)
【公表日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願番号】特願2011−540758(P2011−540758)
【出願日】平成21年11月19日(2009.11.19)
【国際出願番号】PCT/US2009/065056
【国際公開番号】WO2010/074848
【国際公開日】平成22年7月1日(2010.7.1)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.JAVA
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
【公表日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願日】平成21年11月19日(2009.11.19)
【国際出願番号】PCT/US2009/065056
【国際公開番号】WO2010/074848
【国際公開日】平成22年7月1日(2010.7.1)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.JAVA
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
[ Back to top ]