拡張ファイルシステム
【課題】ストレージサイズ容量および/またはストレージ媒体用途を増大させる。
【解決手段】コンピュータ実行可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントと、ファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントと、ファイルシステムのルートディレクトリ中のデータを指定するための1次ディレクトリエントリコンポーネントと、1次ディレクトリエントリコンポーネントに対応し、1次ディレクトリエントリコンポーネントに関連するメタデータを定義する少なくとも1つの2次エントリコンポーネントとを含む。
【解決手段】コンピュータ実行可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントと、ファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントと、ファイルシステムのルートディレクトリ中のデータを指定するための1次ディレクトリエントリコンポーネントと、1次ディレクトリエントリコンポーネントに対応し、1次ディレクトリエントリコンポーネントに関連するメタデータを定義する少なくとも1つの2次エントリコンポーネントとを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、拡張ファイルシステムフォーマット、およびこの拡張ファイルシステムフォーマットに関連する様々なプロセスに関する。
【背景技術】
【0002】
一般的に説明すれば、ポータブルストレージ媒体などのストレージ媒体上にデータを保持する、デジタルスチルカメラ、デジタルビデオカメラ、メディアプレーヤ、モバイル電話、モバイルコンピューティングデバイス、携帯型個人情報端末など、いくつかのポータブルコンピューティングデバイスが存在する。
【発明の開示】
【発明が解決しようとする課題】
【0003】
より複雑なポータブルコンピューティングデバイス、およびストレージ容量のより大きなポータブルストレージ媒体の継続的な開発により、このストレージ媒体上で使用されるファイルシステムフォーマットに対する柔軟性がさらに要求されている。現行のファイルシステムフォーマットアプローチは、これらのアプローチが、ストレージサイズ容量および/またはストレージ媒体用途を増大させる十分な柔軟性を実現できる点においては、不十分になる可能性がある。
【課題を解決するための手段】
【0004】
ポータブルストレージ媒体についての拡張ファイルシステムフォーマット(extensible file system format)が提供される。この拡張ファイルシステムフォーマットは、カスタム定義することができる1次ディレクトリエントリタイプおよび2次ディレクトリエントリタイプの仕様を含んでいる。これらの1次ディレクトリエントリタイプおよび2次ディレクトリエントリタイプは、クリティカルディレクトリエントリと良性ディレクトリエントリとしてさらに分類することができる。
【0005】
本発明の一態様によれば、データを記憶するためのコンピュータ実行可能コンポーネントを有するコンピュータ読取り可能媒体が提供される。このコンピュータ読取り可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントを含むことができる。これらのコンピュータ読取り可能コンポーネントはまた、このファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このファイルシステムのルートディレクトリ中のデータを指定するための1次ディレクトリエントリコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、この1次ディレクトリエントリコンポーネントに対応する少なくとも1つの2次エントリコンポーネントも含んでいる。この2次エントリコンポーネントは、この1次ディレクトリエントリコンポーネントに関連する定義するメタデータを定義している。これらの1次ディレクトリエントリコンポーネントおよび2次ディレクトリエントリコンポーネントは、さらにクリティカルまたは良性であるとして分類することができる。
【0006】
本発明の別の態様によれば、データを記憶するためのコンピュータ実行可能コンポーネントを有するコンピュータ読取り可能媒体が提供される。これらのコンピュータ読取り可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントを含んでいる。これらのコンピュータ読取り可能コンポーネントはまた、このファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このファイルシステムのルートディレクトリ中のデータを指定するためのルートディレクトリコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このルートディレクトリエントリコンポーネントに対応する少なくとも1つの拡張可能なメタデータコンポーネントを含んでいる。このメタデータコンポーネントは、このルートディレクトリコンポーネントに関連するメタデータを定義する。
【0007】
例示の実施形態においては、ファイルシステムは、認識されないクリティカルな1次ディレクトリエントリまたはルートディレクトリエントリについては、ボリュームをマウントしないことになる。このファイルシステムは、認識されない良性1次ディレクトリエントリ、クリティカルな2次ディレクトリエントリ、および良性2次ディレクトリエントリを無視することができる。
【0008】
詳細な説明において以下でさらに説明している選択した概念について簡単な形で紹介するために、この概要は提供されている。この概要は、この請求している主題の主要な特徴を特定することを意図してはおらず、またこの請求している主題の範囲を決定する助けとして使用することも意図してはいない。
【0009】
本発明の前述の態様および多数の付随する利点については、添付図面と合わせ読む際に、これらが以下の詳細な説明を参照してより良く理解されるようになるにつれて、より簡単に理解されるようになろう。
【図面の簡単な説明】
【0010】
【図1A】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図1B】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図1C】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図2】本発明の一態様による拡張ファイルシステムフォーマットに対応する様々なボリュームレイアウトコンポーネントを例証するブロック図である。
【図3】本発明の一態様による、1次ディレクトリエントリ構造および2次ディレクトリエントリ構造を含む拡張ファイルシステムディレクトリ構造を例証するブロック図である。
【図4】本発明の一態様による拡張ファイルシステムフォーマットでブートプロセスブロックを実施するためのデータコンポーネントを例証するブロック図である。
【図5】本発明の一態様による拡張ファイルシステムフォーマットでディレクトリエントリを実施するためのデータコンポーネントを例証するブロック図である。
【図6】本発明の一態様による拡張ファイルシステムフォーマットでファイル名および拡張子を実施するためのデータコンポーネントを例証するブロック図である。
【図7】本発明の一態様による拡張ファイルシステムフォーマットでボリューム識別子を実施するためのデータコンポーネントを例証するブロック図である。
【図8】本発明の一態様による拡張ファイルシステムフォーマットで拡張ディレクトリエントリを実施するためのデータコンポーネントを例証するブロック図である。
【図9】本発明の一態様による拡張ファイルシステムフォーマットで拡張ディレクトリエントリを実施するデータコンポーネントを例証するブロック図である。
【図10】本発明の一態様による拡張ファイルシステムフォーマットでアクセス制御リストを実施するためのデータコンポーネントを例証するブロック図である。
【図11】本発明の一態様による拡張ファイルシステムフォーマットのためのファイル名作成ルーチンを例証する流れ図である。
【発明を実施するための形態】
【0011】
一般的に説明すれば、本発明は、拡張ファイルシステムフォーマット、およびこの拡張ファイルシステムフォーマットに関連する様々なプロセスに関する。例示の一実施形態においては、この拡張ファイルシステムフォーマットは、ポータブルストレージ媒体のための拡張ファイルシステムフォーマットと、このポータブルストレージ媒体上の拡張ファイルシステムフォーマットに関連する様々なプロセスに対応する。本発明は、ポータブルストレージ媒体ファイルシステムフォーマットに関して説明されることになるが、これらの開示の実施形態は本質的に例示的であり、限定的と解釈すべきではないことが当業者には理解されよう。さらに、これらの例示の実施例で使用されるデータ構造およびデータレイアウトは、性能、セキュリティなどに関する追加の情報を必要とすることもあることが当業者には理解されよう。
【0012】
図1A〜1Cは、本発明の拡張ファイルシステムフォーマットのための様々な動作環境100を例証するブロック図である。図1Aを参照すると、例示の実施形態において、この拡張ファイルシステムフォーマットは、モバイルコンピューティングデバイス102などのコンピューティングデバイスと、ポータブルストレージ媒体104などのストレージ媒体からのデータを記憶するために利用される。例示の一実施形態においては、モバイルコンピューティングデバイス102は、それだけには限定されないが、ポータブルコンピューティングデバイス、モバイル電話、携帯型個人情報端末、音楽プレーヤ、メディアプレーヤを含めて、様々なコンピューティングデバイスのうちの任意の1つに対応することができる。このポータブルストレージ媒体は、それだけには限定されないがハードドライブ、フラッシュメディア、マイクロドライブおよび他のストレージ媒体を含むこともできる。例示の実施形態においては、ポータブルストレージ媒体104上の拡張ファイルシステムは、モバイルコンピューティングデバイス102が利用する、動作環境など、どのようなタイプの実行可能または読み取り可能なソフトウェアコンポーネントも含んでいる必要はない。代わりに、ポータブルストレージ媒体104上の拡張ファイルシステムは、モバイルデバイス102が使用する実行可能または読み取り可能なソフトウェアコンポーネントを含むこともできる。
【0013】
例示の一実施形態においては、モバイルコンピューティングデバイス102は、ポータブルストレージ媒体104上に記憶すべきデータを収集/交換するための他のコンピューティングデバイスと情報をやりとりすることができる。図1Bを参照すると、モバイルコンピューティングデバイス102は、別のコンピューティングデバイス106およびストレージ媒体108と直接に通信を行うことができる。例示の一実施形態においては、直接の通信は、様々な有線および無線の通信方法に対応することが可能である。例示の一実施形態においては、他のストレージ媒体108は、本発明の拡張ファイルシステムフォーマットに従ってフォーマットする必要はない。図1Cを参照すると、同様にして、モバイルコンピューティングデバイス102はまた、ネットワーク接続を介して別のコンピューティングデバイス110およびストレージ媒体112と情報をやりとりすることもできる。例示の一実施形態においては、このネットワーク接続は、LAN(local area networkローカルエリアネットワーク)接続およびWAN(wide area networkワイドエリアネットワーク)接続に対応するようにすることができる。
【0014】
次に図2を参照して、拡張ファイルシステムフォーマットについての例示の一実施形態のボリュームレイアウト200について説明することにする。ボリュームレイアウト200は、このパーティションのファイルシステムパラメータの説明に関連した様々な情報を含むブートパラメータコンポーネント202を含んでいる。例示の一実施形態においては、ブートパラメータコンポーネント202は、定義されたパーティションからブートストラップするためのコード、この定義されたパーティションについての基本的なファイルシステムパラメータ、および様々なエラーチェック情報を含むことができる。このブートパラメータの少なくとも一部分を定義するためのデータ構造については、以下で図4に関して説明することにする。
【0015】
ボリュームレイアウト200はまた、このファイルシステムに関連して使用される様々な追加のデータ構造を定義する、OEMパラメータ204として指定される拡張パラメータコンポーネントも含んでいる。例示の一実施形態においては、OEM(original equipment manufacture相手先ブランド供給業者)は、製造時に定義することができるストレージ媒体についての性能パラメータなど、様々な拡張データ構造を指定することができる。ボリュームレイアウト200は、ファイルアロケーションおよびディレクトリアロケーションを定義するファイルアロケーションテーブルコンポーネント206をさらに含むことができる。例示の一実施形態においては、ファイルアロケーションテーブルコンポーネント206中の各エントリは、割り付けられたクラスタ、割り付けられていないクラスタまたは使用できないクラスタを表す32−ビットエントリに対応する。ボリュームレイアウト200はさらに、このファイルシステムフォーマットに従って記憶されるデータに対応する一連のファイルデータコンポーネント208A〜208Xを含むことができる。ファイルデータコンポーネント208A〜208Xの一部分を定義するための様々なデータ構造については、図3〜10に関して定義することにする。
【0016】
次に図3を参照すると、ある点で、ファイルデータコンポーネント208は、ディレクトリ構造300による1つまたは複数のディレクトリエントリを含むことができる。例示の一実施形態においては、ディレクトリ構造300は、1次ディレクトリエントリ302、および2次ディレクトリエントリ304にまとめることができる。これらの1次エントリおよび2次エントリ中の各ディレクトリエントリは、類別する(type)ことができる。例えば、例示の一実施形態において、これらの1次ディレクトリエントリおよび2次ディレクトリエントリについてのタイプ値は、1〜255の範囲に対応するようにすることができる。1次ディレクトリエントリ302は、このファイルシステムのルートディレクトリ中の諸エントリに対応する。2次ディレクトリエントリ304は、1次ディレクトリエントリに従い、この1次ディレクトリエントリに関連づけられる。2次ディレクトリエントリは、この相互に関連する1次ディレクトリエントリに関連するこのメタデータを拡張する。
【0017】
続けて図3を参照すると、例示の一実施形態において、1次ディレクトリエントリ302はさらに、クリティカル1次ディレクトリエントリ306と、良性1次ディレクトリエントリ308として分類することもできる。クリティカル1次ディレクトリエントリ306は、ディレクトリエントリごとに異なるフォーマットを定義する可能性がある。例示の一実施形態においては、動作環境は、以下で説明するように、知られていないクリティカル1次ディレクトリエントリを用いて拡張ファイルシステムフォーマットに対応するボリュームをマウントしないはずである。知られている1次ディレクトリエントリ306の実施例は、アロケーションビットマップ、アップケーステーブル、ボリュームラベル、暗号キー、および通常のディレクトリエントリを含むことができる。良性1次ディレクトリエントリ308はまた、ディレクトリエントリごとに異なる可能性のあるフォーマットを定義するが、特定の良性1次ディレクトリエントリが知られていない場合には、このファイルシステムによって無視することもできる。良性1次ディレクトリエントリ308は、そのボリュームの別のクラスタチェーンに関連づけることができる。さらに、良性1次ディレクトリエントリ308はまた、いくつかの2次ディレクトリエントリ304に関連づけることもできる。
【0018】
1次ディレクトリエントリ302と同様にして、2次ディレクトリエントリ304はまた、さらにクリティカル2次ディレクトリエントリ310と、良性2次ディレクトリエントリ312として分類することができる。前述のように、クリティカル2次ディレクトリエントリ310と良性2次ディレクトリエントリ312は、良性1次ディレクトリエントリに関連づけられ、この1次ディレクトリエントリに関連するメタデータを拡張する。クリティカル2次ディレクトリエントリ310も良性2次ディレクトリエントリ312も共に、そのボリュームの別のクラスタチェーンに関連づけることができる。
【0019】
この拡張ファイルシステムフォーマットに対応するボリュームをマウントするために、このファイルシステムは、マウントボリュームプロシージャを実施する。例示の一実施形態においては、このマウントボリュームプロシージャは、このボリュームについてのバージョン番号を調べようと試みる。このバージョン番号が知られていない(例えば、このバージョン番号が、より大きな数である)場合、このボリュームはマウントされないことになる。通常のディレクトリエニュメレーション(directory enumeration)中には、このファイルシステムが知らないどのようなクリティカル1次ディレクトリエントリも、このボリュームがマウントされないように防止することになる。その後、ファイルオープンなど様々なユーザによる開始プロセスは、このファイルシステムにこの2次ディレクトリエントリを列挙させることになる。クリティカル2次ディレクトリエントリ310が、ファイルシステムによって知られていない場合、このディレクトリエントリ全体がスキップされることになる。さらに、良性2次ディレクトリエントリ312がこのファイルシステムによって知られていない場合には、この特定の知られていない良性2次ディレクトリエントリは、無視されることになる。
【0020】
次に図4を参照して、ブートパラメータコンポーネント202(図2)中のブートプロセスブロックを実施するためのデータコンポーネント400を例証するブロック図について説明することにする。データコンポーネント400は、このストレージ媒体のファイルシステムフォーマットについての名前を指定するためのOEM名コンポーネント402を含んでいる。データコンポーネント400はまた、このファイルシステムに記憶されるデータの様々な特性を指定するためのデータサイズ記述コンポーネント404も含んでいる。例えば、データサイズ記述コンポーネント404は、セクタ当たりのバイト数、アロケーションユニット当たりのセクタ数、FATテーブルオフセット、およびすべてのデータ構造についてのセクタ数を指定することができる。このデータコンポーネントは、このファイルシステム上のアクティブFAT数を指定するためのアクティブFATフラグコンポーネント406を含んでいる。例示の一実施形態において、ファイルシステムは、一部のオペレーティングシステム環境と共に利用するための複数のFATをサポートすることができる。データコンポーネント400は、ボリュームのシリアル番号および/またはバージョン番号を識別するためのボリューム識別コンポーネント408をさらに含むことができる。さらに、データコンポーネント400は、このファイルシステムについてのファイルシステムフォーマットを指定するためのファイルシステムタイプを含むことができる。データコンポーネント400は、以上で識別したコンポーネント402〜410および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。
【0021】
次に図5を参照して、拡張ファイルシステムフォーマットでディレクトリエントリを実施するためのデータコンポーネント500を例証するブロック図について説明することにする。次に図6を参照して、ファイル名および拡張子を実施するためのデータコンポーネント500のブロック図について説明することにする。データコンポーネント500は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント502を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント500は、このディレクトリエントリが通常のディレクトリエントリに関連することを指定するためのタイプ指定コンポーネント504をさらに含んでいる。データコンポーネント500は、この通常のディレクトリエントリに関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント506をさらに含んでいる。データコンポーネント500は、このディレクトリエントリについての様々なファイルシステム属性を指定するためのファイル属性コンポーネント508も含んでいる。さらに、データコンポーネント500は、作成タイムスタンプ、修正タイムスタンプ、他の時間情報など様々な時間情報を指定するための時間コンポーネント510を含んでいる。これに加えて、データコンポーネント500は、この最後に作成されたタイムスタンプについての時間帯を指定するための時間帯コンポーネント512をさらに含んでいる。データコンポーネント500は、以上で特定されたコンポーネント502〜512および追加のコンポーネントを実施するためのいくつかの追加/代替の行も含むことができることが当業者には理解されよう。
【0022】
次に図6を参照して、ファイル名および拡張子を実施するためのデータコンポーネント600のブロック図について説明することにする。データコンポーネント600は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント602を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント600は、このディレクトリエントリがファイルシステム名に関連することを指定するためのタイプ指定コンポーネント604をさらに含んでいる。このデータコンポーネントは、ファイル名長コンポーネント606をさらに含み、ファイル名は、コンポーネント608を有する。このファイル名ハッシュコンポーネント608の利用については、以下で説明することにする。データコンポーネント600は、このファイル名を指定するためのファイル名コンポーネント610も含んでいる。データコンポーネント600は、以上で特定したコンポーネント602〜610および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。さらに、ファイル名ディレクトリエントリは、2次ディレクトリエントリによって拡張することができる。
【0023】
次に図7を参照すると、拡張ファイルシステムフォーマットでボリューム識別子を実施するためのデータコンポーネント700を例証するブロック図が示されている。データコンポーネント700は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント702を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント700は、このディレクトリエントリがボリューム識別子に関連することを指定するためのタイプ指定コンポーネント704をさらに含んでいる。データコンポーネント700は、このボリューム識別子に関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント706をさらに含んでいる。データコンポーネント700は、グローバル一意識別子などのボリューム識別子708も含んでいる。データコンポーネント700は、以上で特定したコンポーネント702〜708および追加のコンポーネントを実施するためのいくつかの追加/代替の行も含むことができることが当業者には理解されよう。さらに、例示の一実施形態においては、データコンポーネント700は、ボリューム識別子をサポートしないファイルシステムによって無視することができる良性ディレクトリエントリに対応している。
【0024】
次に図8および9を参照すると、例示の一実施形態においては、OEMなどのパーティは、特定の良性1次ディレクトリエントリタイプ308および良性2次ディレクトリエントリタイプ312を定義可能とすることができる。前述のように、このファイルシステムが、この特定の良性1次ディレクトリエントリタイプ308または良性2次ディレクトリエントリタイプ312を認識または理解しないことになる場合には、このファイルシステムは、この定義されたディレクトリエントリタイプを無視することができる。
【0025】
図8を参照して、拡張ファイルシステムフォーマットで拡張良性1次ディレクトリエントリ308を実施するためのデータコンポーネント800を例証するブロック図について説明することにする。データコンポーネント800は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント802を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント800は、このディレクトリエントリが良性1次ディレクトリエントリであることを指定するためのタイプ指定コンポーネント804をさらに含んでいる。データコンポーネント800は、このボリューム識別子に関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント806をさらに含んでいる。データコンポーネント800は、グローバル一意識別子などのボリューム識別子808も含んでいる。データコンポーネント800は、検証情報や開始クラスタなど追加の情報810をさらに含むことができる。データコンポーネント800は、以上で特定したコンポーネント802〜506および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むことができることが当業者には理解されよう。
【0026】
図9を参照して、拡張ファイルシステムフォーマットで良性2次ディレクトリエントリを実施するためのデータコンポーネント900を例証するブロック図について説明することにする。データコンポーネント900は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント902を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント900は、このディレクトリエントリが良性1次ディレクトリエントリであることを指定するためのタイプ指定コンポーネント904をさらに含んでいる。データコンポーネント900は、このボリューム識別子に関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント906をさらに含んでいる。データコンポーネント900は、グローバル一意識別子などのボリューム識別子908も含んでいる。データコンポーネント900は、検証情報や開始クラスタなど追加の情報910をさらに含むことができる。データコンポーネント900は、以上で特定したコンポーネント902〜906および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。
【0027】
例示の一実施形態においては、良性の1次ディレクトリエントリおよび/または2次ディレクトリエントリは、ACL(access control listアクセス制御リスト)情報に関連づけることができる。図10は、拡張ファイルシステムフォーマットでアクセス制御リストを実施するためのデータコンポーネント1000を例証するブロック図である。データコンポーネント1000は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント1002を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント1000は、このディレクトリエントリがACLディレクトリエントリであることを指定するためのタイプ指定コンポーネント1004をさらに含んでいる。データコンポーネント1000は、ACLフラグ、ACLデータベースに対するポインタなどいくつかのACLフィールド1006をさらに含んでいる。データコンポーネント1000は、以上で特定したコンポーネント1002〜1006および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。
【0028】
次に図11を参照して、拡張ファイルシステムフォーマットについてのファイル名作成ルーチン1100について説明することにする。ブロック1102において、ファイルシステムは、特定のファイル名を用いてディレクトリエントリを作成する要求を取得する。例示の一実施形態においては、この特定のファイル名は、デジタルカメラピクチャ命名規則などの命名規則に対応することが可能である。ブロック1104において、このファイルシステムは、ターゲット名ハッシュを生成する。ブロック1106において、反復ループが、次のディレクトリエントリハッシュ値を検査することによって開始される。ディレクトリエントリハッシュ値を記憶するための例示のディレクトリエントリタイプについては、データコンポーネント600(図6)に関して以上で説明している。
【0029】
判断ブロック1108において、このターゲットハッシュ値が現在のディレクトリエントリハッシュ値にマッチングするかどうかを判定するテストが行われる。これらがマッチングしていない場合、ルーチン1100は、(これらすべてのディレクトリエントリが検査されるまで)ブロック1106に戻る。これらのハッシュ値が判断ブロック1108においてマッチングする場合には、ブロック1110において、このファイルシステムは、マッチングする可能性のあるディレクトリエントリについての全体ファイル名を取得する。ディレクトリエントリ全体ファイル名を記憶するための例示のディレクトリエントリタイプについては、データコンポーネント600(図6)に関して以上で説明している。判断ブロック1112において、このターゲットファイル名が、マッチングする可能性のあるディレクトリエントリの全体ファイル名にマッチングするかどうかを判定するテストが行われる。マッチングする場合、ルーチン1100は、競合を報告することにより終了し、このファイルシステムは、新しいファイル名を選択する必要があることになる。この全体のファイルがマッチングしない場合には、ルーチン1100は、ブロック1106へと戻って、このファイルシステムにおけるこれらすべてのディレクトリエントリについてのハッシュ値をチェックし続けることになる。
【0030】
本発明の一態様によれば、特定のディレクトリタイプの仕様を用いて様々な追加機能を追加することができる。例えば、ネームストリームディレクトリエントリを指定することにより、ネームストリームをサポートすることができる。さらに、特定の暗号化アルゴリズムおよびキー交換の利用によりオンディスク(on−disk)暗号化をサポートすることもできる。さらに、時間帯変換をディレクトリエントリに関連づけて、このディレクトリエントリが行われた時間帯を用いて現在の時間帯を自動的に変換することもできる。
【0031】
例示の実施形態について例証し説明してきたが、本発明の趣旨および範囲を逸脱することなく、様々な変更をこの中で行うことができることが理解されよう。
【符号の説明】
【0032】
200 ボリュームレイアウト
202 ブートパラメータ
204 OEMパラメータ
206 ファイルアロケーションテーブル
208A ファイルデータ
208X ファイルデータ
300 ディレクトリ構造
302 1次ディレクトリエントリタイプ
304 2次ディレクトリエントリタイプ
306 クリティカル1次エントリタイプ
308 良性1次エントリタイプ
310 クリティカル1次エントリタイプ
312 良性1次エントリタイプ
【技術分野】
【0001】
本発明は、拡張ファイルシステムフォーマット、およびこの拡張ファイルシステムフォーマットに関連する様々なプロセスに関する。
【背景技術】
【0002】
一般的に説明すれば、ポータブルストレージ媒体などのストレージ媒体上にデータを保持する、デジタルスチルカメラ、デジタルビデオカメラ、メディアプレーヤ、モバイル電話、モバイルコンピューティングデバイス、携帯型個人情報端末など、いくつかのポータブルコンピューティングデバイスが存在する。
【発明の開示】
【発明が解決しようとする課題】
【0003】
より複雑なポータブルコンピューティングデバイス、およびストレージ容量のより大きなポータブルストレージ媒体の継続的な開発により、このストレージ媒体上で使用されるファイルシステムフォーマットに対する柔軟性がさらに要求されている。現行のファイルシステムフォーマットアプローチは、これらのアプローチが、ストレージサイズ容量および/またはストレージ媒体用途を増大させる十分な柔軟性を実現できる点においては、不十分になる可能性がある。
【課題を解決するための手段】
【0004】
ポータブルストレージ媒体についての拡張ファイルシステムフォーマット(extensible file system format)が提供される。この拡張ファイルシステムフォーマットは、カスタム定義することができる1次ディレクトリエントリタイプおよび2次ディレクトリエントリタイプの仕様を含んでいる。これらの1次ディレクトリエントリタイプおよび2次ディレクトリエントリタイプは、クリティカルディレクトリエントリと良性ディレクトリエントリとしてさらに分類することができる。
【0005】
本発明の一態様によれば、データを記憶するためのコンピュータ実行可能コンポーネントを有するコンピュータ読取り可能媒体が提供される。このコンピュータ読取り可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントを含むことができる。これらのコンピュータ読取り可能コンポーネントはまた、このファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このファイルシステムのルートディレクトリ中のデータを指定するための1次ディレクトリエントリコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、この1次ディレクトリエントリコンポーネントに対応する少なくとも1つの2次エントリコンポーネントも含んでいる。この2次エントリコンポーネントは、この1次ディレクトリエントリコンポーネントに関連する定義するメタデータを定義している。これらの1次ディレクトリエントリコンポーネントおよび2次ディレクトリエントリコンポーネントは、さらにクリティカルまたは良性であるとして分類することができる。
【0006】
本発明の別の態様によれば、データを記憶するためのコンピュータ実行可能コンポーネントを有するコンピュータ読取り可能媒体が提供される。これらのコンピュータ読取り可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントを含んでいる。これらのコンピュータ読取り可能コンポーネントはまた、このファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このファイルシステムのルートディレクトリ中のデータを指定するためのルートディレクトリコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このルートディレクトリエントリコンポーネントに対応する少なくとも1つの拡張可能なメタデータコンポーネントを含んでいる。このメタデータコンポーネントは、このルートディレクトリコンポーネントに関連するメタデータを定義する。
【0007】
例示の実施形態においては、ファイルシステムは、認識されないクリティカルな1次ディレクトリエントリまたはルートディレクトリエントリについては、ボリュームをマウントしないことになる。このファイルシステムは、認識されない良性1次ディレクトリエントリ、クリティカルな2次ディレクトリエントリ、および良性2次ディレクトリエントリを無視することができる。
【0008】
詳細な説明において以下でさらに説明している選択した概念について簡単な形で紹介するために、この概要は提供されている。この概要は、この請求している主題の主要な特徴を特定することを意図してはおらず、またこの請求している主題の範囲を決定する助けとして使用することも意図してはいない。
【0009】
本発明の前述の態様および多数の付随する利点については、添付図面と合わせ読む際に、これらが以下の詳細な説明を参照してより良く理解されるようになるにつれて、より簡単に理解されるようになろう。
【図面の簡単な説明】
【0010】
【図1A】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図1B】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図1C】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図2】本発明の一態様による拡張ファイルシステムフォーマットに対応する様々なボリュームレイアウトコンポーネントを例証するブロック図である。
【図3】本発明の一態様による、1次ディレクトリエントリ構造および2次ディレクトリエントリ構造を含む拡張ファイルシステムディレクトリ構造を例証するブロック図である。
【図4】本発明の一態様による拡張ファイルシステムフォーマットでブートプロセスブロックを実施するためのデータコンポーネントを例証するブロック図である。
【図5】本発明の一態様による拡張ファイルシステムフォーマットでディレクトリエントリを実施するためのデータコンポーネントを例証するブロック図である。
【図6】本発明の一態様による拡張ファイルシステムフォーマットでファイル名および拡張子を実施するためのデータコンポーネントを例証するブロック図である。
【図7】本発明の一態様による拡張ファイルシステムフォーマットでボリューム識別子を実施するためのデータコンポーネントを例証するブロック図である。
【図8】本発明の一態様による拡張ファイルシステムフォーマットで拡張ディレクトリエントリを実施するためのデータコンポーネントを例証するブロック図である。
【図9】本発明の一態様による拡張ファイルシステムフォーマットで拡張ディレクトリエントリを実施するデータコンポーネントを例証するブロック図である。
【図10】本発明の一態様による拡張ファイルシステムフォーマットでアクセス制御リストを実施するためのデータコンポーネントを例証するブロック図である。
【図11】本発明の一態様による拡張ファイルシステムフォーマットのためのファイル名作成ルーチンを例証する流れ図である。
【発明を実施するための形態】
【0011】
一般的に説明すれば、本発明は、拡張ファイルシステムフォーマット、およびこの拡張ファイルシステムフォーマットに関連する様々なプロセスに関する。例示の一実施形態においては、この拡張ファイルシステムフォーマットは、ポータブルストレージ媒体のための拡張ファイルシステムフォーマットと、このポータブルストレージ媒体上の拡張ファイルシステムフォーマットに関連する様々なプロセスに対応する。本発明は、ポータブルストレージ媒体ファイルシステムフォーマットに関して説明されることになるが、これらの開示の実施形態は本質的に例示的であり、限定的と解釈すべきではないことが当業者には理解されよう。さらに、これらの例示の実施例で使用されるデータ構造およびデータレイアウトは、性能、セキュリティなどに関する追加の情報を必要とすることもあることが当業者には理解されよう。
【0012】
図1A〜1Cは、本発明の拡張ファイルシステムフォーマットのための様々な動作環境100を例証するブロック図である。図1Aを参照すると、例示の実施形態において、この拡張ファイルシステムフォーマットは、モバイルコンピューティングデバイス102などのコンピューティングデバイスと、ポータブルストレージ媒体104などのストレージ媒体からのデータを記憶するために利用される。例示の一実施形態においては、モバイルコンピューティングデバイス102は、それだけには限定されないが、ポータブルコンピューティングデバイス、モバイル電話、携帯型個人情報端末、音楽プレーヤ、メディアプレーヤを含めて、様々なコンピューティングデバイスのうちの任意の1つに対応することができる。このポータブルストレージ媒体は、それだけには限定されないがハードドライブ、フラッシュメディア、マイクロドライブおよび他のストレージ媒体を含むこともできる。例示の実施形態においては、ポータブルストレージ媒体104上の拡張ファイルシステムは、モバイルコンピューティングデバイス102が利用する、動作環境など、どのようなタイプの実行可能または読み取り可能なソフトウェアコンポーネントも含んでいる必要はない。代わりに、ポータブルストレージ媒体104上の拡張ファイルシステムは、モバイルデバイス102が使用する実行可能または読み取り可能なソフトウェアコンポーネントを含むこともできる。
【0013】
例示の一実施形態においては、モバイルコンピューティングデバイス102は、ポータブルストレージ媒体104上に記憶すべきデータを収集/交換するための他のコンピューティングデバイスと情報をやりとりすることができる。図1Bを参照すると、モバイルコンピューティングデバイス102は、別のコンピューティングデバイス106およびストレージ媒体108と直接に通信を行うことができる。例示の一実施形態においては、直接の通信は、様々な有線および無線の通信方法に対応することが可能である。例示の一実施形態においては、他のストレージ媒体108は、本発明の拡張ファイルシステムフォーマットに従ってフォーマットする必要はない。図1Cを参照すると、同様にして、モバイルコンピューティングデバイス102はまた、ネットワーク接続を介して別のコンピューティングデバイス110およびストレージ媒体112と情報をやりとりすることもできる。例示の一実施形態においては、このネットワーク接続は、LAN(local area networkローカルエリアネットワーク)接続およびWAN(wide area networkワイドエリアネットワーク)接続に対応するようにすることができる。
【0014】
次に図2を参照して、拡張ファイルシステムフォーマットについての例示の一実施形態のボリュームレイアウト200について説明することにする。ボリュームレイアウト200は、このパーティションのファイルシステムパラメータの説明に関連した様々な情報を含むブートパラメータコンポーネント202を含んでいる。例示の一実施形態においては、ブートパラメータコンポーネント202は、定義されたパーティションからブートストラップするためのコード、この定義されたパーティションについての基本的なファイルシステムパラメータ、および様々なエラーチェック情報を含むことができる。このブートパラメータの少なくとも一部分を定義するためのデータ構造については、以下で図4に関して説明することにする。
【0015】
ボリュームレイアウト200はまた、このファイルシステムに関連して使用される様々な追加のデータ構造を定義する、OEMパラメータ204として指定される拡張パラメータコンポーネントも含んでいる。例示の一実施形態においては、OEM(original equipment manufacture相手先ブランド供給業者)は、製造時に定義することができるストレージ媒体についての性能パラメータなど、様々な拡張データ構造を指定することができる。ボリュームレイアウト200は、ファイルアロケーションおよびディレクトリアロケーションを定義するファイルアロケーションテーブルコンポーネント206をさらに含むことができる。例示の一実施形態においては、ファイルアロケーションテーブルコンポーネント206中の各エントリは、割り付けられたクラスタ、割り付けられていないクラスタまたは使用できないクラスタを表す32−ビットエントリに対応する。ボリュームレイアウト200はさらに、このファイルシステムフォーマットに従って記憶されるデータに対応する一連のファイルデータコンポーネント208A〜208Xを含むことができる。ファイルデータコンポーネント208A〜208Xの一部分を定義するための様々なデータ構造については、図3〜10に関して定義することにする。
【0016】
次に図3を参照すると、ある点で、ファイルデータコンポーネント208は、ディレクトリ構造300による1つまたは複数のディレクトリエントリを含むことができる。例示の一実施形態においては、ディレクトリ構造300は、1次ディレクトリエントリ302、および2次ディレクトリエントリ304にまとめることができる。これらの1次エントリおよび2次エントリ中の各ディレクトリエントリは、類別する(type)ことができる。例えば、例示の一実施形態において、これらの1次ディレクトリエントリおよび2次ディレクトリエントリについてのタイプ値は、1〜255の範囲に対応するようにすることができる。1次ディレクトリエントリ302は、このファイルシステムのルートディレクトリ中の諸エントリに対応する。2次ディレクトリエントリ304は、1次ディレクトリエントリに従い、この1次ディレクトリエントリに関連づけられる。2次ディレクトリエントリは、この相互に関連する1次ディレクトリエントリに関連するこのメタデータを拡張する。
【0017】
続けて図3を参照すると、例示の一実施形態において、1次ディレクトリエントリ302はさらに、クリティカル1次ディレクトリエントリ306と、良性1次ディレクトリエントリ308として分類することもできる。クリティカル1次ディレクトリエントリ306は、ディレクトリエントリごとに異なるフォーマットを定義する可能性がある。例示の一実施形態においては、動作環境は、以下で説明するように、知られていないクリティカル1次ディレクトリエントリを用いて拡張ファイルシステムフォーマットに対応するボリュームをマウントしないはずである。知られている1次ディレクトリエントリ306の実施例は、アロケーションビットマップ、アップケーステーブル、ボリュームラベル、暗号キー、および通常のディレクトリエントリを含むことができる。良性1次ディレクトリエントリ308はまた、ディレクトリエントリごとに異なる可能性のあるフォーマットを定義するが、特定の良性1次ディレクトリエントリが知られていない場合には、このファイルシステムによって無視することもできる。良性1次ディレクトリエントリ308は、そのボリュームの別のクラスタチェーンに関連づけることができる。さらに、良性1次ディレクトリエントリ308はまた、いくつかの2次ディレクトリエントリ304に関連づけることもできる。
【0018】
1次ディレクトリエントリ302と同様にして、2次ディレクトリエントリ304はまた、さらにクリティカル2次ディレクトリエントリ310と、良性2次ディレクトリエントリ312として分類することができる。前述のように、クリティカル2次ディレクトリエントリ310と良性2次ディレクトリエントリ312は、良性1次ディレクトリエントリに関連づけられ、この1次ディレクトリエントリに関連するメタデータを拡張する。クリティカル2次ディレクトリエントリ310も良性2次ディレクトリエントリ312も共に、そのボリュームの別のクラスタチェーンに関連づけることができる。
【0019】
この拡張ファイルシステムフォーマットに対応するボリュームをマウントするために、このファイルシステムは、マウントボリュームプロシージャを実施する。例示の一実施形態においては、このマウントボリュームプロシージャは、このボリュームについてのバージョン番号を調べようと試みる。このバージョン番号が知られていない(例えば、このバージョン番号が、より大きな数である)場合、このボリュームはマウントされないことになる。通常のディレクトリエニュメレーション(directory enumeration)中には、このファイルシステムが知らないどのようなクリティカル1次ディレクトリエントリも、このボリュームがマウントされないように防止することになる。その後、ファイルオープンなど様々なユーザによる開始プロセスは、このファイルシステムにこの2次ディレクトリエントリを列挙させることになる。クリティカル2次ディレクトリエントリ310が、ファイルシステムによって知られていない場合、このディレクトリエントリ全体がスキップされることになる。さらに、良性2次ディレクトリエントリ312がこのファイルシステムによって知られていない場合には、この特定の知られていない良性2次ディレクトリエントリは、無視されることになる。
【0020】
次に図4を参照して、ブートパラメータコンポーネント202(図2)中のブートプロセスブロックを実施するためのデータコンポーネント400を例証するブロック図について説明することにする。データコンポーネント400は、このストレージ媒体のファイルシステムフォーマットについての名前を指定するためのOEM名コンポーネント402を含んでいる。データコンポーネント400はまた、このファイルシステムに記憶されるデータの様々な特性を指定するためのデータサイズ記述コンポーネント404も含んでいる。例えば、データサイズ記述コンポーネント404は、セクタ当たりのバイト数、アロケーションユニット当たりのセクタ数、FATテーブルオフセット、およびすべてのデータ構造についてのセクタ数を指定することができる。このデータコンポーネントは、このファイルシステム上のアクティブFAT数を指定するためのアクティブFATフラグコンポーネント406を含んでいる。例示の一実施形態において、ファイルシステムは、一部のオペレーティングシステム環境と共に利用するための複数のFATをサポートすることができる。データコンポーネント400は、ボリュームのシリアル番号および/またはバージョン番号を識別するためのボリューム識別コンポーネント408をさらに含むことができる。さらに、データコンポーネント400は、このファイルシステムについてのファイルシステムフォーマットを指定するためのファイルシステムタイプを含むことができる。データコンポーネント400は、以上で識別したコンポーネント402〜410および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。
【0021】
次に図5を参照して、拡張ファイルシステムフォーマットでディレクトリエントリを実施するためのデータコンポーネント500を例証するブロック図について説明することにする。次に図6を参照して、ファイル名および拡張子を実施するためのデータコンポーネント500のブロック図について説明することにする。データコンポーネント500は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント502を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント500は、このディレクトリエントリが通常のディレクトリエントリに関連することを指定するためのタイプ指定コンポーネント504をさらに含んでいる。データコンポーネント500は、この通常のディレクトリエントリに関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント506をさらに含んでいる。データコンポーネント500は、このディレクトリエントリについての様々なファイルシステム属性を指定するためのファイル属性コンポーネント508も含んでいる。さらに、データコンポーネント500は、作成タイムスタンプ、修正タイムスタンプ、他の時間情報など様々な時間情報を指定するための時間コンポーネント510を含んでいる。これに加えて、データコンポーネント500は、この最後に作成されたタイムスタンプについての時間帯を指定するための時間帯コンポーネント512をさらに含んでいる。データコンポーネント500は、以上で特定されたコンポーネント502〜512および追加のコンポーネントを実施するためのいくつかの追加/代替の行も含むことができることが当業者には理解されよう。
【0022】
次に図6を参照して、ファイル名および拡張子を実施するためのデータコンポーネント600のブロック図について説明することにする。データコンポーネント600は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント602を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント600は、このディレクトリエントリがファイルシステム名に関連することを指定するためのタイプ指定コンポーネント604をさらに含んでいる。このデータコンポーネントは、ファイル名長コンポーネント606をさらに含み、ファイル名は、コンポーネント608を有する。このファイル名ハッシュコンポーネント608の利用については、以下で説明することにする。データコンポーネント600は、このファイル名を指定するためのファイル名コンポーネント610も含んでいる。データコンポーネント600は、以上で特定したコンポーネント602〜610および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。さらに、ファイル名ディレクトリエントリは、2次ディレクトリエントリによって拡張することができる。
【0023】
次に図7を参照すると、拡張ファイルシステムフォーマットでボリューム識別子を実施するためのデータコンポーネント700を例証するブロック図が示されている。データコンポーネント700は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント702を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント700は、このディレクトリエントリがボリューム識別子に関連することを指定するためのタイプ指定コンポーネント704をさらに含んでいる。データコンポーネント700は、このボリューム識別子に関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント706をさらに含んでいる。データコンポーネント700は、グローバル一意識別子などのボリューム識別子708も含んでいる。データコンポーネント700は、以上で特定したコンポーネント702〜708および追加のコンポーネントを実施するためのいくつかの追加/代替の行も含むことができることが当業者には理解されよう。さらに、例示の一実施形態においては、データコンポーネント700は、ボリューム識別子をサポートしないファイルシステムによって無視することができる良性ディレクトリエントリに対応している。
【0024】
次に図8および9を参照すると、例示の一実施形態においては、OEMなどのパーティは、特定の良性1次ディレクトリエントリタイプ308および良性2次ディレクトリエントリタイプ312を定義可能とすることができる。前述のように、このファイルシステムが、この特定の良性1次ディレクトリエントリタイプ308または良性2次ディレクトリエントリタイプ312を認識または理解しないことになる場合には、このファイルシステムは、この定義されたディレクトリエントリタイプを無視することができる。
【0025】
図8を参照して、拡張ファイルシステムフォーマットで拡張良性1次ディレクトリエントリ308を実施するためのデータコンポーネント800を例証するブロック図について説明することにする。データコンポーネント800は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント802を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント800は、このディレクトリエントリが良性1次ディレクトリエントリであることを指定するためのタイプ指定コンポーネント804をさらに含んでいる。データコンポーネント800は、このボリューム識別子に関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント806をさらに含んでいる。データコンポーネント800は、グローバル一意識別子などのボリューム識別子808も含んでいる。データコンポーネント800は、検証情報や開始クラスタなど追加の情報810をさらに含むことができる。データコンポーネント800は、以上で特定したコンポーネント802〜506および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むことができることが当業者には理解されよう。
【0026】
図9を参照して、拡張ファイルシステムフォーマットで良性2次ディレクトリエントリを実施するためのデータコンポーネント900を例証するブロック図について説明することにする。データコンポーネント900は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント902を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント900は、このディレクトリエントリが良性1次ディレクトリエントリであることを指定するためのタイプ指定コンポーネント904をさらに含んでいる。データコンポーネント900は、このボリューム識別子に関連するいくつかの2次エントリを指定するための2次ディレクトリエントリコンポーネント906をさらに含んでいる。データコンポーネント900は、グローバル一意識別子などのボリューム識別子908も含んでいる。データコンポーネント900は、検証情報や開始クラスタなど追加の情報910をさらに含むことができる。データコンポーネント900は、以上で特定したコンポーネント902〜906および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。
【0027】
例示の一実施形態においては、良性の1次ディレクトリエントリおよび/または2次ディレクトリエントリは、ACL(access control listアクセス制御リスト)情報に関連づけることができる。図10は、拡張ファイルシステムフォーマットでアクセス制御リストを実施するためのデータコンポーネント1000を例証するブロック図である。データコンポーネント1000は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント1002を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「1」に設定されることになる。データコンポーネント1000は、このディレクトリエントリがACLディレクトリエントリであることを指定するためのタイプ指定コンポーネント1004をさらに含んでいる。データコンポーネント1000は、ACLフラグ、ACLデータベースに対するポインタなどいくつかのACLフィールド1006をさらに含んでいる。データコンポーネント1000は、以上で特定したコンポーネント1002〜1006および追加のコンポーネントを実施するためのいくつかの追加/代替の行を含むこともできることが当業者には理解されよう。
【0028】
次に図11を参照して、拡張ファイルシステムフォーマットについてのファイル名作成ルーチン1100について説明することにする。ブロック1102において、ファイルシステムは、特定のファイル名を用いてディレクトリエントリを作成する要求を取得する。例示の一実施形態においては、この特定のファイル名は、デジタルカメラピクチャ命名規則などの命名規則に対応することが可能である。ブロック1104において、このファイルシステムは、ターゲット名ハッシュを生成する。ブロック1106において、反復ループが、次のディレクトリエントリハッシュ値を検査することによって開始される。ディレクトリエントリハッシュ値を記憶するための例示のディレクトリエントリタイプについては、データコンポーネント600(図6)に関して以上で説明している。
【0029】
判断ブロック1108において、このターゲットハッシュ値が現在のディレクトリエントリハッシュ値にマッチングするかどうかを判定するテストが行われる。これらがマッチングしていない場合、ルーチン1100は、(これらすべてのディレクトリエントリが検査されるまで)ブロック1106に戻る。これらのハッシュ値が判断ブロック1108においてマッチングする場合には、ブロック1110において、このファイルシステムは、マッチングする可能性のあるディレクトリエントリについての全体ファイル名を取得する。ディレクトリエントリ全体ファイル名を記憶するための例示のディレクトリエントリタイプについては、データコンポーネント600(図6)に関して以上で説明している。判断ブロック1112において、このターゲットファイル名が、マッチングする可能性のあるディレクトリエントリの全体ファイル名にマッチングするかどうかを判定するテストが行われる。マッチングする場合、ルーチン1100は、競合を報告することにより終了し、このファイルシステムは、新しいファイル名を選択する必要があることになる。この全体のファイルがマッチングしない場合には、ルーチン1100は、ブロック1106へと戻って、このファイルシステムにおけるこれらすべてのディレクトリエントリについてのハッシュ値をチェックし続けることになる。
【0030】
本発明の一態様によれば、特定のディレクトリタイプの仕様を用いて様々な追加機能を追加することができる。例えば、ネームストリームディレクトリエントリを指定することにより、ネームストリームをサポートすることができる。さらに、特定の暗号化アルゴリズムおよびキー交換の利用によりオンディスク(on−disk)暗号化をサポートすることもできる。さらに、時間帯変換をディレクトリエントリに関連づけて、このディレクトリエントリが行われた時間帯を用いて現在の時間帯を自動的に変換することもできる。
【0031】
例示の実施形態について例証し説明してきたが、本発明の趣旨および範囲を逸脱することなく、様々な変更をこの中で行うことができることが理解されよう。
【符号の説明】
【0032】
200 ボリュームレイアウト
202 ブートパラメータ
204 OEMパラメータ
206 ファイルアロケーションテーブル
208A ファイルデータ
208X ファイルデータ
300 ディレクトリ構造
302 1次ディレクトリエントリタイプ
304 2次ディレクトリエントリタイプ
306 クリティカル1次エントリタイプ
308 良性1次エントリタイプ
310 クリティカル1次エントリタイプ
312 良性1次エントリタイプ
【特許請求の範囲】
【請求項1】
新規のディレクトリエントリのためのターゲットファイル名を取得するステップと、
前記ターゲットファイル名のハッシュを生成するステップであって、前記ターゲットファイル名の前記ハッシュは当該ターゲットファイル名の関数である、ステップと、
複数のディレクトリエントリ中のデータ名ディレクトリエントリごとに、前記ターゲットファイル名の前記ハッシュと、各ディレクトリエントリのファイル名のハッシュとを比較するステップであって、前記ファイル名のハッシュは当該ファイル名の関数である、ステップと、
前記ターゲットファイル名の前記ハッシュが前記ディレクトリエントリのいずれのための前記ファイル名のハッシュとマッチングしない場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を選択するステップと
を含むことを特徴とするディレクトリエントリを処理するための方法。
【請求項2】
各ディレクトリエントリは、前記ディレクトリエントリのための前記ファイル名の前記ハッシュを格納することを特徴とする請求項1に記載の方法。
【請求項3】
前記ターゲットファイル名の前記ハッシュがディレクトリエントリ中の少なくとも1つのファイル名のハッシュとマッチングすると判定するステップと、
マッチングするディレクトリエントリの全体ファイル名を取得するステップと、
前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングしない場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を選択するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記ターゲットファイル名が前記マッチングするディレクトリエントリの全体ファイル名とマッチングする場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を拒絶するステップをさらに含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングする場合は、前記ターゲットファイル名を、既存のディレクトリエントリとマッチングすると確認するステップをさらに含むことを特徴とする請求項3に記載の方法。
【請求項1】
新規のディレクトリエントリのためのターゲットファイル名を取得するステップと、
前記ターゲットファイル名のハッシュを生成するステップであって、前記ターゲットファイル名の前記ハッシュは当該ターゲットファイル名の関数である、ステップと、
複数のディレクトリエントリ中のデータ名ディレクトリエントリごとに、前記ターゲットファイル名の前記ハッシュと、各ディレクトリエントリのファイル名のハッシュとを比較するステップであって、前記ファイル名のハッシュは当該ファイル名の関数である、ステップと、
前記ターゲットファイル名の前記ハッシュが前記ディレクトリエントリのいずれのための前記ファイル名のハッシュとマッチングしない場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を選択するステップと
を含むことを特徴とするディレクトリエントリを処理するための方法。
【請求項2】
各ディレクトリエントリは、前記ディレクトリエントリのための前記ファイル名の前記ハッシュを格納することを特徴とする請求項1に記載の方法。
【請求項3】
前記ターゲットファイル名の前記ハッシュがディレクトリエントリ中の少なくとも1つのファイル名のハッシュとマッチングすると判定するステップと、
マッチングするディレクトリエントリの全体ファイル名を取得するステップと、
前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングしない場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を選択するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記ターゲットファイル名が前記マッチングするディレクトリエントリの全体ファイル名とマッチングする場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を拒絶するステップをさらに含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングする場合は、前記ターゲットファイル名を、既存のディレクトリエントリとマッチングすると確認するステップをさらに含むことを特徴とする請求項3に記載の方法。
【図1A】
【図1B】
【図1C】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図1B】
【図1C】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−61993(P2013−61993A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2013−671(P2013−671)
【出願日】平成25年1月7日(2013.1.7)
【分割の表示】特願2010−129852(P2010−129852)の分割
【原出願日】平成17年12月16日(2005.12.16)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願日】平成25年1月7日(2013.1.7)
【分割の表示】特願2010−129852(P2010−129852)の分割
【原出願日】平成17年12月16日(2005.12.16)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
[ Back to top ]