(57)【要約】【課題】データストレージスペースを様々なサイズの論理ストレージブロックに編成するファイルシステムを提供すること。【解決手段】システムであって、プロセッサと、該プロセッサによってアクセス可能なデータストレージデバイスと、該データストレージデバイス上のファイルを編成するように該プロセッサによって実行可能なファイルシステムソフトウェアであって、該ファイルシステムソフトウェアは、ファイルタイプに依存する様々な論理ストレージブロックサイズを有するストレージエリアに該データストレージデバイス上のファイルを編成するように実行可能である、ファイルシステムソフトウェアとを備えている、システム。【選択図】図１
2008052730.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
プロセッサと、
該プロセッサによってアクセス可能なデータストレージデバイスと、
該データストレージデバイス上のファイルを編成するように該プロセッサによって実行可能なファイルシステムソフトウェアであって、該ファイルシステムソフトウェアは、ファイルタイプに依存する異なる論理ストレージブロックサイズを有するストレージエリアに該データストレージデバイス上のファイルを編成するように実行可能である、ファイルシステムソフトウェアと
を備えている、システム。
【請求項２】
前記ファイルタイプは、ビデオデータファイル、オーディオデータファイルおよび実行ファイルを備えている、請求項１に記載のシステム。
【請求項３】
前記ファイルシステムソフトウェアは、オーディオファイルよりも大きい論理ストレージブロックで、ビデオデータファイルを編成するように実行可能である、請求項２に記載のシステム。
【請求項４】
前記ファイルシステムソフトウェアは、実行ファイルよりも長い論理ストレージブロックで、オーディオデータファイルを編成するように実行可能である、請求項３に記載のシステム。
【請求項５】
前記ファイルシステムソフトウェアは、前記データストレージデバイスに関連するホールマップを生成するように実行可能であり、該ホールマップは、該データストレージデバイスの複数のストレージエリアの各々に対する論理ストレージブロックサイズを示すデータを備えている、請求項１に記載のシステム。
【請求項６】
前記ファイルシステムソフトウェアは、前記データストレージデバイス上のボリュームの最も近くに開始部分を生成するように実行可能である、請求項５に記載のシステム。
【請求項７】
前記ファイルシステムソフトウェアは、前記ホールマップ内に前記ストレージデバイスのマップされたストレージエリアの使用度を示すデータを格納するように実行可能である、請求項５に記載のシステム。
【請求項８】
前記ファイルシステムソフトウェアは、ファイルの前記ファイルタイプを、該ファイルのファイル名を用いて識別するように実行可能である、請求項１に記載のシステム。
【請求項９】
前記ファイルシステムソフトウェアは、ファイルの前記ファイルタイプを、組み込まれたファイル情報を用いて識別するように実行可能である、請求項１に記載のシステム。
【請求項１０】
前記ファイルシステムソフトウェアは、前記ファイルタイプに対応する論理ストレージブロックサイズのエリアが利用不可能である場合に、ファイルデータをより少ない論理ストレージブロックサイズのエリアに格納するように実行可能である、請求項１に記載のシステム。
【請求項１１】
前記ファイルシステムソフトウェアは、前記ファイルタイプに対応する論理ストレージブロックサイズのエリアが利用不可能である場合に、ファイルデータをメモリストレージの下のグレードのエリアに格納するように実行可能である、請求項１に記載のシステム。
【請求項１２】
システムであって、
プロセッサと、
該プロセッサによってアクセス可能なデータストレージデバイスと、
該データストレージ上にファイルを編成するように該プロセッサによって実行可能であるファイルシステムソフトウェアであって、該ファイルシステムソフトウェアは、第１の論理ストレージブロックサイズを有する第１のエリアタイプと、該第１の論理ストレージブロックサイズとは異なる第２の論理ストレージブロックサイズを有する第２のエリアタイプとを用いて該データストレージデバイス上にファイルを編成するように該プロセッサによって実行可能であり、該ファイルシステムソフトウェアは、該第１のエリアタイプのストレージエリア内に第１のファイルタイプのファイルデータを格納し、第２のファイルタイプのファイルデータを該第２のエリアタイプのストレージエリアに格納するようにさらに実行可能である、ファイルシステムソフトウェアと
を備えている、システム。
【請求項１３】
前記第１のファイルタイプは、ビデオデータファイルを備えており、前記第２のファイルタイプは、オーディオデータファイルを備えている、請求項１２に記載のシステム。
【請求項１４】
前記第１の論理ストレージブロックサイズは、前記第２の論理ストレージブロックサイズよりも大きい、請求項１３に記載のシステム。
【請求項１５】
前記ファイルシステムソフトウェアは、前記データストレージデバイスのストレージエリアに対応するホールマップを生成するように実行可能であり、該ホールマップは、あるエリアが前記第１または第２のエリアタイプのどちらであるかを示すデータを備えている、請求項１２に記載のシステム。
【請求項１６】
前記ファイルシステムソフトウェアの実行を介して生成される前記ホールマップは、データストレージデバイス上のボリュームの開始の最も近くに格納される、請求項１５に記載のシステム。
【請求項１７】
前記ホールマップは、該ホールマップにマップされた前記ストレージデバイスの前記ストレージエリアの使用度を示すデータを備えている、請求項１５に記載のシステム。
【請求項１８】
前記ファイルシステムソフトウェアは、前記ファイルのファイル名を用いてファイルの前記ファイルタイプを識別するように実行可能である、請求項１２に記載のシステム。
【請求項１９】
前記ファイルシステムソフトウェアは、組み込まれたファイル情報を用いて、ファイルの前記ファイルタイプを識別するように実行可能である、請求項１２に記載のシステム。
【請求項２０】
データストレージデバイスであって、
複数の等サイズのストレージエリアと、
該複数の等サイズのストレージエリアの各々と関連する論理ストレージブロックサイズを識別するデータを有するホールマップであって、該複数の等サイズのストレージエリアの少なくとも２つが、異なる論理ストレージブロックサイズを有する、ホールマップと
を備えている、データストレージデバイス。
【請求項２１】
前記複数の等サイズのストレージエリアの所与のストレージエリアに関連する前記論理ストレージブロックサイズは、該所与のストレージエリアに格納された該データのファイルタイプに依存する、請求項２０に記載のデータストレージデバイス。
【請求項２２】
データストレージデバイスであって、
該データストレージデバイス上のファイルを編成するように、プロセッサによって実行可能なファイルシステムソフトウェアと、
第１のファイルタイプのデータを格納し、かつ第１の論理ストレージブロックサイズを有する第１のストレージエリアと、
該第１の論理ストレージブロックサイズとは異なる第２の論理ストレージブロックサイズを有する第２のストレージエリアであって、第２のファイルタイプのデータは該第２のストレージエリアに格納される、第２のストレージエリアと
を備えている、データストレージデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（１．技術分野）
本発明は、概して、コンピュータ、組み込みコントローラ、プロセッシングシステムなどにおける使用のためのファイルシステムに向けられる。より具体的には、本発明は、データストレージスペースを様々なサイズの論理ストレージブロックに編成するファイルシステムに向けられる。
【背景技術】
【０００２】
（２．関連技術）
コンピュータ、組み込みコントローラおよび他のマイクロプロセッサベースのシステムは、典型的に、種々の異なるハードウェアコンポーネントから構成される。ハードウェアコンポーネントは、プロセッサ、Ｉ／Ｏデバイス、ヒューマンインタフェースデバイスなどを含み得る。さらに、このようなシステムは、システムで使用されるデータを維持するためにメモリストレージユニットを使用する。メモリストレージユニットは、種々の異なる形態（ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ランダムアクセスメモリ、フラッシュメモリなどを含むがこれらに限定はされない）をとり得る。
【０００３】
このようなシステムで実行される高レベルアプリケーションプログラムは、しばしばこれらのハードウェアコンポーネント（メモリストレージユニットを含む）とシームレスに相互作用しなければならない。この目的を達成するために、多くのシステムは、アプリケーションプログラムとシステムハードウェアとの間のインタフェースとして作用するオペレーティングシステムを実行する。ファイルシステムソフトウェアは、オペレーティングシステムの一部として含まれ得るか、またはファイルシステムソフトウェアは、オペレーティングシステムと相互作用する付随的なソフトウェアコンポーネントとして提供され得る。いずれの例においても、ファイルシステムソフトウェアは、プロセッサおよび該プロセッサが実行する高レベルのアプリケーションプログラムによる迅速なアクセスのために、メモリストレージユニット内にデータを編成する。
【０００４】
ファイルシステムソフトウェアは、ファイルおよびディレクトリのコンテンツを、ストレージデバイス上の連続するデータの等サイズの論理ストレージブロックに編成するファイル／ディレクトリレイヤを使用し得る。各論理ストレージブロックは、データが実際に保持されるストレージデバイス上の１つ以上の対応する物理ブロックと関連がある。ファイル／ディレクトリレイヤは、要求に応答してアップデートされる必要がある全論理ストレージブロックの全てを識別すること、およびこのような論理ストレージブロックの各々のコンテンツ全体を書き換えることによって、ファイルシステムに対するアップデートを実行し得る。ファイル／ディレクトリレイヤは、読み取られるデータの領域の一部を保持する論理ストレージブロックの全てのコンテンツ全体を読み取ることにより、ファイルおよびディレクトリのコンテンツを読み取り得る。
【０００５】
ファイルシステムはまた、ファイルシステムコンテンツの仮想アドレスを、データストレージデバイス上のデータの物理ブロックにマップするストレージレイヤを含み得る。ストレージレイヤは、ファイル／ディレクトリレイヤからの論理ブロックの読み取り要求を、要求に関連する正しい物理ブロックを決定することおよびそのコンテンツをデータストレージデバイスから読み取ることによって実行し得る。同様に、ストレージレイヤは、既存の物理ブロックのコンテンツをアップデートすること、または使用されていない物理ブロックをデータストレージデバイスから論理ストレージブロックに割り当て、次いで、該物理ブロックのコンテンツをアップデートすることのいずれかによって書き込み要求を実行し得る。
【０００６】
既存のファイルシステムは、遭遇する様々なタイプのファイルデータに最適化されない。なぜならば、全ての論理ストレージブロックは同一のサイズを有し、全ての物理ブロックは同一のサイズを有するからである。これらの既存のファイルシステムにおいて、固定された論理ストレージブロックサイズが、全てのデータタイプに対して使用され、かつ長いアクセスストリームに関連するファイルタイプと短いアクセスストリームに関連するファイルタイプとの間の中間を表す。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従って、既存のファイルシステム編成に対する代替案が必要とされる。
【課題を解決するための手段】
【０００８】
（概要）
プロセッサと、該プロセッサによってアクセス可能であるデータストレージデバイスと、該プロセッサによって該データストレージデバイス上のファイルを編成するように実行可能であるファイルシステムソフトウェアとを含むシステムが述べられる。該ファイルシステムソフトウェアは、データストレージデバイス上のファイルを、ファイルタイプに依存する異なる論理ストレージブロックサイズを有するストレージエリアに編成するように実行可能である。１つのインプリメンテーションにおいて、該ファイルシステムソフトウェアは、該データストレージデバイスに関連するホールマップを生成するように実行可能である。該ホールマップは、該データストレージデバイスの複数のストレージエリアの各々に対する論理ストレージブロックサイズを示すデータを備えており、オプションとして、該複数のストレージエリアの各々に対する使用度を示すデータを備えている。該ファイルシステムは、ファイルのファイル名および／または組み込まれたファイル情報を用いて、ファイルタイプを識別し得る。
【０００９】
本発明の他のシステム、方法、特徴および利点は、当業者にとって以下の図面および詳細な記載を検討すると明らかであるか、または明らかになる。全てのこのような追加のシステム、方法、特徴および利点の全ては、本記載内に含まれ、本発明の範囲内であり、かつ添付する特許請求の範囲によって保護されることが意図される。
【００１０】
本発明は、さらに以下の手段を提供する。
【００１１】
（項目１）  
システムであって、
プロセッサと、
該プロセッサによってアクセス可能なデータストレージデバイスと、
該データストレージデバイス上のファイルを編成するように該プロセッサによって実行可能なファイルシステムソフトウェアであって、該ファイルシステムソフトウェアは、ファイルタイプに依存する異なる論理ストレージブロックサイズを有するストレージエリアに該データストレージデバイス上のファイルを編成するように実行可能である、ファイルシステムソフトウェアと
を備えている、システム。
【００１２】
（項目２）
上記ファイルタイプは、ビデオデータファイル、オーディオデータファイルおよび実行ファイルを備えている、項目１に記載のシステム。
【００１３】
（項目３）
上記ファイルシステムソフトウェアは、オーディオファイルよりも大きい論理ストレージブロックで、ビデオデータファイルを編成するように実行可能である、項目２に記載のシステム。
【００１４】
（項目４）
上記ファイルシステムソフトウェアは、実行ファイルよりも長い論理ストレージブロックで、オーディオデータファイルを編成するように実行可能である、項目３に記載のシステム。
【００１５】
（項目５）
上記ファイルシステムソフトウェアは、上記データストレージデバイスに関連するホールマップを生成するように実行可能であり、該ホールマップは、該データストレージデバイスの複数のストレージエリアの各々に対する論理ストレージブロックサイズを示すデータを備えている、項目１に記載のシステム。
【００１６】
（項目６）
上記ファイルシステムソフトウェアは、上記データストレージデバイス上のボリュームの最も近くに開始部分を生成するように実行可能である、項目５に記載のシステム。
【００１７】
（項目７）
上記ファイルシステムソフトウェアは、上記ホールマップ内に上記ストレージデバイスのマップされたストレージエリアの使用度を示すデータを格納するように実行可能である、項目５に記載のシステム。
【００１８】
（項目８）
上記ファイルシステムソフトウェアは、ファイルの上記ファイルタイプを、該ファイルのファイル名を用いて識別するように実行可能である、項目１に記載のシステム。
【００１９】
（項目９）
上記ファイルシステムソフトウェアは、ファイルの上記ファイルタイプを、組み込まれたファイル情報を用いて識別するように実行可能である、項目１に記載のシステム。
【００２０】
（項目１０）
上記ファイルシステムソフトウェアは、上記ファイルタイプに対応する論理ストレージブロックサイズのエリアが利用不可能である場合に、ファイルデータをより少ない論理ストレージブロックサイズのエリアに格納するように実行可能である、項目１に記載のシステム。
【００２１】
（項目１１）
上記ファイルシステムソフトウェアは、上記ファイルタイプに対応する論理ストレージブロックサイズのエリアが利用不可能である場合に、ファイルデータをメモリストレージの下のグレードのエリアに格納するように実行可能である、項目１に記載のシステム。
【００２２】
（項目１２）
システムであって、
プロセッサと、
該プロセッサによってアクセス可能なデータストレージデバイスと、
該データストレージ上にファイルを編成するように該プロセッサによって実行可能であるファイルシステムソフトウェアであって、該ファイルシステムソフトウェアは、第１の論理ストレージブロックサイズを有する第１のエリアタイプと、該第１の論理ストレージブロックサイズとは異なる第２の論理ストレージブロックサイズを有する第２のエリアタイプとを用いて該データストレージデバイス上にファイルを編成するように該プロセッサによって実行可能であり、該ファイルシステムソフトウェアは、該第１のエリアタイプのストレージエリア内に第１のファイルタイプのファイルデータを格納し、第２のファイルタイプのファイルデータを該第２のエリアタイプのストレージエリアに格納するようにさらに実行可能である、ファイルシステムソフトウェアと
を備えている、システム。
【００２３】
（項目１３）
上記第１のファイルタイプは、ビデオデータファイルを備えており、上記第２のファイルタイプは、オーディオデータファイルを備えている、項目１２に記載のシステム。
【００２４】
（項目１４）
上記第１の論理ストレージブロックサイズは、上記第２の論理ストレージブロックサイズよりも大きい、項目１３に記載のシステム。
【００２５】
（項目１５）
上記ファイルシステムソフトウェアは、上記データストレージデバイスのストレージエリアに対応するホールマップを生成するように実行可能であり、該ホールマップは、あるエリアが上記第１または第２のエリアタイプのどちらであるかを示すデータを備えている、項目１２に記載のシステム。
【００２６】
（項目１６）
上記ファイルシステムソフトウェアの実行を介して生成される上記ホールマップは、データストレージデバイス上のボリュームの開始の最も近くに格納される、項目１５に記載のシステム。
【００２７】
（項目１７）
上記ホールマップは、該ホールマップにマップされた上記ストレージデバイスの上記ストレージエリアの使用度を示すデータを備えている、項目１５に記載のシステム。
【００２８】
（項目１８）
上記ファイルシステムソフトウェアは、上記ファイルのファイル名を用いてファイルの上記ファイルタイプを識別するように実行可能である、項目１２に記載のシステム。
【００２９】
（項目１９）
上記ファイルシステムソフトウェアは、組み込まれたファイル情報を用いて、ファイルの上記ファイルタイプを識別するように実行可能である、項目１２に記載のシステム。
【００３０】
（項目２０）
データストレージデバイスであって、
複数の等サイズのストレージエリアと、
該複数の等サイズのストレージエリアの各々と関連する論理ストレージブロックサイズを識別するデータを有するホールマップであって、該複数の等サイズのストレージエリアの少なくとも２つが、異なる論理ストレージブロックサイズを有する、ホールマップと
を備えている、データストレージデバイス。
【００３１】
（項目２１）
上記複数の等サイズのストレージエリアの所与のストレージエリアに関連する上記論理ストレージブロックサイズは、該所与のストレージエリアに格納された該データのファイルタイプに依存する、項目２０に記載のデータストレージデバイス。
【００３２】
（項目２２）
データストレージデバイスであって、
該データストレージデバイス上のファイルを編成するように、プロセッサによって実行可能なファイルシステムソフトウェアと、
第１のファイルタイプのデータを格納し、かつ第１の論理ストレージブロックサイズを有する第１のストレージエリアと、
該第１の論理ストレージブロックサイズとは異なる第２の論理ストレージブロックサイズを有する第２のストレージエリアであって、第２のファイルタイプのデータは該第２のストレージエリアに格納される、第２のストレージエリアと
を備えている、データストレージデバイス。
【００３３】
（摘要）
プロセッサと、該プロセッサによってアクセス可能であるデータストレージデバイスと、該プロセッサによって該データストレージデバイス上のファイルを編成するように実行可能であるファイルシステムソフトウェアとを含むシステムが述べられる。該ファイルシステムソフトウェアは、データストレージデバイス上のファイルを、ファイルタイプに依存する異なる論理ストレージブロックサイズを有するストレージエリアに編成するように実行可能である。１つのインプリメンテーションにおいて、該ファイルシステムソフトウェアは、該データストレージデバイスに関連するホールマップを生成するように実行可能である。該ホールマップは、該データストレージデバイスの複数のストレージエリアの各々に対する論理ストレージブロックサイズを示すデータを備えており、オプションとして、該複数のストレージエリアの各々に対する使用度を示すデータを備えている。該ファイルシステムは、ファイルのファイル名および／または組み込まれたファイル情報を用いて、ファイルタイプを識別し得る。
【発明を実施するための最良の形態】
【００３４】
本発明は、以下の図面および記載を参照してより良く理解され得る。図面のコンポーネントは、本発明の原理を図示する際に、必ずしも一定の比率で拡大縮小されておらず、代わりに強調されている。さらに、図面において、類似の参照番号は、異なる図全体を通して対応する部分を指定する。
【００３５】
（好ましい実施形態の詳細な記載）
図１は、例示的なプロセッシングシステム１００において使用され得るコンポーネントを図示する。示されるように、例示的なシステム１００は、プロセッサ１０５、読み取り専用メモリ１１０およびデータストレージ１１５を含む。プロセッシングシステム１００はまた、ランダムアクセスメモリ１２０、Ｉ／Ｏインタフェース１２５およびユーザインタフェース１３０を含み得る。プロセッシングシステム１００において使用される特定のコンポーネントは、プロセッシングシステム１００によって実行されるべき特定の機能に適応され得る。従って、コンポーネントの有無は、プロセッシングシステム１００に課される設計基準に特有であり得る。
【００３６】
データストレージ１１５は、プロセッサ１０５および様々なハードウェアコンポーネント（メモリ１１０および１２０、データストレージ１１５ならびにインタフェースデバイス１２５および１３０を含む）によって実行される高レベルのアプリケーションプログラム間の相互作用を制御するオペレーティングシステムコード１３５を含み得る。オペレーティングシステムコード１３５は、データストレージ１１５に格納されたファイルを編成するためのファイルシステムソフトウェアを含み得る。あるいは、ファイルシステムソフトウェアは、単にオペレーティングシステムコード１３５と相互作用するだけの分離したソフトウェアコンポーネントとして提供され得る。後者の場合に、ファイルシステムソフトウェアに対応するコードは、読み取り専用メモリ１１０、データストレージ１１５などに格納され得る。プロセッシングシステム１００が他のコンピュータおよび／またはストレージデバイスとＩ／Ｏインタフェース１２５を介してネットワークされる場合には、ファイルシステムソフトウェアは、リモートで格納され得、必要に応じてプロセッシングシステム１００にダウンロードされ得る。しかしながら、図１は、データストレージ１１５におけるファイルシステムソフトウェア１４０のストレージを図示する。
【００３７】
データストレージ１１５は、任意の数の異なる形態をとり得る。例えば、データストレージ１１５は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブなどの形態をとり得る。データストレージ１１５はまた、集積回路フォーマット（例えば、フラッシュメモリなど）においてインプリメントされる不揮発性メモリのような非回転媒体デバイスの形態であり得る。さらに、データストレージ１１５は、必ずしも単一メモリ構造に限定される必要はない。むしろ、データストレージ１１５は、多くの同一のタイプの分離したストレージデバイス（例えば、全てフラッシュメモリ）および／または異なるタイプの分離したストレージデバイス（例えば、１つ以上のフラッシュメモリユニットおよび１つ以上のハードディスクドライブ）を含み得る。
【００３８】
データストレージ１１５に格納されたファイルは、アプリケーションプログラムによって、またはオペレーティングシステムコード１３５によって使用される所定のフォーマットに従って解釈されるデータを含む。例えば、ファイル内に格納されるデータは、実行可能なプログラムのソフトウェアコード、データベース記録のＡＳＣＩＩテキスト、オーディオメディアファイル、ビデオメディアファイルなどを構成し得る。ファイルシステムソフトウェア１４０は、プロセッサ１０５により、格納されたデータのタイプに基づいて、データストレージ１１５上の物理データストレージを割り当てるように実行可能である。ファイルデータは、小さいファイルを効率的に格納する能力を犠牲にすることなしに、データを読み取ることおよび書き込むことの速度の最適化を助長する方法で、ファイルシステムソフトウェア１４０によってデータストレージ１１５上に編成される。
【００３９】
図２は、ファイルシステムソフトウェア１４０が、ファイルをデータストレージ１１５上に編成するために使用され得る一方法を図示する。図示を容易にする目的で、データストレージ１１５は、ハードディスクシステムとして記載される。しかしながら、ファイルシステムソフトウェア１４０の動作は、容易に他のタイプのデータストレージに拡張される。
【００４０】
ファイルシステムソフトウェア１４０が最初に実行されるとき、ファイルシステムソフトウェア１４０は、データストレージ１１５のストレージエリアのビットマップ表現として使用するために少なくとも１つのホールマップ２０５を割り当てる。ホールマップ２０５は、データストレージ１１５のディスクドライブボリュームの開始に作成され得、ゼロ（０）で開始され得る。ホールマップ２０５の各ホールは、単一のストレージエリアに対応する４ビットで構成され得る。図２に示されるように、ホール２１０は、ストレージエリア２１５に対応する。ホール２２０は、ストレージエリア２２５に対応する。ホール２３０は、ストレージエリア２３５に対応し、ホール２４０は、ストレージエリア２４５に対応する。ホールマップ２０５の他のホールは、データストレージ１１５の追加のストレージエリアに対応する。
【００４１】
ストレージエリア２１５、２２５、２３５および２４５は、データストレージ１１５上に同一の物理サイズを有し得る。例えば、データストレージ１１５の各ストレージエリアは、１２８メガバイトという全ストレージエリアを含む。しかしながら、ファイルシステムソフトウェア１４０は、ストレージエリアの各々のデータのタイプに依存する論理ストレージブロックサイズを用いて、ファイルをストレージエリア内に編成する。図３に示されるように、各ホールの２ビットは、対応するストレージエリアのエリアタイプを示す。この例において、（００）のビット設定は、対応するストレージエリアをクラスタエリアタイプとして識別する。（０１）のビット設定は、対応するストレージエリアをバンドルエリアタイプとして識別する。（１０）のビット設定は、対応するストレージエリアを、ワッド（ｗａｄ）エリアタイプとして識別する。（１１）のビット設定は、対応するストレージエリアを、スロング（ｔｈｒｏｎｇ）エリアタイプとして識別する。
【００４２】
図４は、ストレージエリアタイプの各々に対する例示的な論理ストレージブロックサイズを示す表である。このために、ファイルシステムソフトウェア１４０は、クラスタエリアタイプとして識別されたストレージエリアを、それぞれ４Ｋの論理メモリブロックに編成する。バンドルエリアタイプとして識別されたストレージエリアは、ファイルシステムソフトウェア１４０によって、それぞれ６４Ｋの論理メモリブロックを用いて編成される。ワッドエリアタイプとして識別されたストレージエリアは、ファイルシステムソフトウェア１４０によって、それぞれ２５６Ｋの論理メモリブロックを用いて編成される。スロングエリアタイプとして識別されたストレージエリアは、ファイルシステム１４０によって、それぞれ１０２４Ｋの論理メモリブロックを用いて編成される。
【００４３】
ストレージエリアに割り当てられた論理ストレージブロックサイズは、ストレージエリアに格納されたファイルデータに対する、ファイルシステムによって使用されるインメモリキャッシュのサイズに対応する。例えば、クラスタエリアタイプを用いて指定されたストレージエリアに格納されたデータは、１つ以上の４Ｋメモリバッファを用いて、ファイルシステムソフトウェア１４０によって、メモリ内にキャッシュされる。バンドルエリアタイプを用いて指定されたストレージエリアに格納されたデータは、１つ以上の６４Ｋメモリバッファを用いてファイルシステムソフトウェア１４０によって、メモリ内にキャッシュされる。この同一のデータキャッシング動作は、ワッドエリアタイプ（２５６Ｋキャッシュメモリバッファ）を用いて指定されたストレージエリアならびにスロングエリアタイプ（１０２４Ｋキャッシュメモリバッファ）を用いて指定されたストレージエリアに拡張する。
【００４４】
ホールマップ２０５の各ホールはまた、対応するストレージエリアのファイルデータによって使用されるスペースの量を示す情報を含み得る。この目的を達成するために、各ホールの残りの２ビットが使用情報をエンコードするために使用され得る。図５は、ストレージエリア使用をエンコードする一方法を示す表である。この例において、（００）のビット設定は、対応するストレージエリアがエンプティであることを示すために使用される。（１０）のビット設定は、対応するストレージエリアが部分的にファイルデータで満たされていることを示すために使用される。（１１）のビット設定は、対応するストレージエリアが完全にファイルデータで満たされており、これによりファイルシステムソフトウェア１４０が、さらなるデータを、対応するストレージエリア内に格納することを阻止することを示すために使用される。特定のストレージエリアが特定の値より大きいかまたは特定の値未満であることを示す他のビット設定も使用され得る。
【００４５】
特定のストレージエリアが、クラスタ、バンドル、ワッドまたはスロングとして指定されるかどうかは、ストレージエリア内に格納されたデータのファイルタイプに依存する。可変の論理ストレージブロックサイズは、異なるタイプのファイルの読み取りおよび書き込みのために、各ストレージエリアの最適化することを可能にする。なぜならば、アプリケーションは、異なる方法で異なるファイルタイプにアクセスする傾向があるからである。例えば、ビデオメディアファイルに関連するデータは、大きなセクションにおいて同時にアクセスされ得る。このような場合、ファイルシステムソフトウェア１４０は、大きな論理ストレージブロックサイズ（例えば、ワッドまたはスロング）を使用して、このようなビデオメディアデータを、例えば、ビデオプレイヤーアプリケーションによる、引き続いて起こるアクセスのために編成することがより効率的であり得る。同様に、このようなオーディオメディアセクションは、対応するビデオメディアセクションよりも小さくあり得るが、オーディオメディアファイルに関連するデータは、大きなセクションにおいて同時にアクセスされ得る。従って、ファイルシステムソフトウェア１４０が、オーディオメディアファイルを編成するために中間サイズの論理ストレージブロック構造（例えば、バンドルまたはワッド）を使用することが効率的であり得る。他のファイルタイプに関連するデータは、クラスタサイズの論理ストレージブロックを用いて、ファイルシステム１４０によって効率的に扱われ得る。さらに、クラスタサイズの論理ストレージブロックは、不確定のファイルタイプを編成するために使用され得る。
【００４６】
ファイルシステム１４０によって、ファイルタイプに対するデータを含むストレージエリアに割り当てられ得る様々なファイルタイプおよびエリアタイプの例が、図６の表に示される。このような表がファイルシステム１４０に統合され得、所与のファイルタイプに関連すべき各エリアタイプを指定する。該関連付けは、例えば、システム１００に提供された初期設定パラメータに基づいてユーザ選択可能であり得る。このようにして、システム１００は、ファイルシステムソフトウェア１４０が遭遇する可能性の最も高いファイルのタイプを扱うためにユーザによって最適化され得る。ファイルシステムソフトウェアは、これらのマッピングを、使用される第１のファイルタイプマッチに関連するエリアタイプを用いて示される順序で使用し得る。これらの関係はまた、ユーザ／開発者によって置き換えられ得る。
【００４７】
図７は、ファイルの成長または拡張の間に実行され得る多くの相互関係のある動作を示すフローチャートである。示されるように、ファイルの成長または拡張が、ブロック７０５において要求される。ファイルシステムソフトウェア１４０は、ブロック７１０においてファイルのコンテンツタイプを識別することを試みる。コンテンツタイプの識別は、多くの異なる方法で遂行され得る。例えば、ファイルシステム１４０は、ファイル拡張子を図６に示される様々なファイル拡張子と比較することにより、ファイルタイプを決定し得る。あるいは、またはさらに、ファイルシステムソフトウェア１４０は、ファイルタイプを識別するために、ファイル内に組み込まれたコンテンツに頼り得る。一旦ファイルタイプが知られると、ブロック７１５において検索がなされ、ファイルデータを格納するための適切なエリアタイプの任意のストレージエリアがあるかどうかを決定する。ブロック７２０において、ストレージの余裕を有する適切なタイプエリアがある場合には、ブロック７２５において、ファイルシステムソフトウェア１４０は、エリアをファイルに割り当て、必要な場合には、対応するストレージエリアに対してホールマップをアップデートする。ストレージエリアが、ファイルデータを格納するためのスペースを有するかどうかは、ホールマップ２０５内でストレージエリアに対応するエリア使用ビットを調査することによって決定され得る。エリア使用ビット設定が、該エリアがエンプティであることを示す場合には、ファイルシステムソフトウェア１４０はファイルデータを格納するために該ストレージエリアを使用し得る。ビット設定が、該エリアが部分的に満たされていることを示す場合には、ファイルシステム１４０は、例えば、スペース内の使用されるビットを数えることによって、ストレージエリア内の使用されていないスペースの正確な量を決定し得る。ストレージエリア内の使用されていないスペースの一部または全てが、ファイルのデータの一部または全てを格納するために使用され得る。一旦使用されていないスペースの量が知られると、該量は、例えば、ＲＡＭ１２０の表内に、引き続く使用のために格納され得る。ストレージエリアに対する使用されていないスペースの量のさらなる変化は、この表に対するアップデートに反映され得る。一旦ファイルシステム１４０が、適切なエリアタイプで使用されていないスペースを有するストレージエリアを識別すると、ファイルデータは、ブロック７３０において示される動作において、ストレージエリア内に格納される。ブロック７２０において、実行される動作が、ファイルデータのための使用されていないストレージスペースを有する適切なエリアタイプのストレージエリアを見出すことに失敗する場合には、１つ以上の代替的なストレージプロセスがブロック７３５において実行され得る。
【００４８】
図８は、図７のブロック７３５において示される代替的なストレージプロセスの一部として実行され得る多くの相互関係のある動作を示すフローチャートである。ブロック８０５において、ファイルシステムソフトウェア１４０が、ホールマップ２０５をチェックし、エリアタイプ割り当てを有さない任意のエンプティのストレージエリアがあるかどうかを決定する。このような使用されていないストレージエリアが存在する場合には、ファイルシステム１４０が、例えば、対応するストレージエリアに対するホールマップ２０５をアップデートすることによって、ブロック８１０においてファイルタイプに対応するエリアタイプを使用されていないストレージエリアに割り当てる。ファイルに対するデータは、ブロック８１５において示される動作においてストレージエリア内に格納される。
【００４９】
ブロック８０５において使用されていないストレージエリアがない場合には、次いで、データストレージ１１５の全てのストレージエリアが、エリアタイプを割り当てられ、データを含み得る。ファイルシステムソフトウェア１４０は、多くの異なる方法でこの状況を扱い得る。図８に示される例示的な動作において、ファイルシステムソフトウェア１４０は、ブロック８２０において、システム、ファイルタイプおよび／または特定のファイルに割り当てられたエリアタイプ割り当て行動があるかどうかを決定するためのチェックをする。このような場合に、エリアタイプ割り当て行動は、システムレベルにおいて、ファイルタイプによって、および／または個別のファイルレベルにおいてインプリメントされ得る。この行動はシステム１００の開発の間、および／またはシステム初期化の間にユーザ選択可能であり得る。
【００５０】
２つのエリアタイプ割り当て行動が、図８に図示される。それらは「より大きい論理ストレージブロック」行動および「より小さい論理ストレージブロック」行動とラベルされる。ブロック８２０における動作が、「より大きい論理ストレージブロック」行動が提示されるべきであることを示す場合には、ファイルシステムソフトウェア１４０は、ブロック８２５において、対応するより大きい論理ストレージブロックプロセッシングを実行するために進む。ブロック８２０における動作が、「より小さい論理ストレージブロック」行動が提示されるべきであることを示す場合には、ファイルシステムソフトウェア１４０は、ブロック８３５において、ホールマップ２０５を、次に小さい論理ストレージブロックサイズとファイルデータを格納するためのいくらかのスペースとを有するエリアタイプを有するストレージエリアについて検索する。例えば、格納されるべきファイルデータが本来ワッドエリアタイプと関連する場合には、ファイルシステムソフトウェア１４０は、ファイルデータを格納するために利用可能ないくらかの使用されていないスペースを有するバンドルエリアタイプを有する１つ以上のストレージエリアについて、ホールマップ２０５を検索する。次に小さい論理ストレージブロックサイズの１つ以上のストレージエリアが、ファイルデータを格納するために利用可能である場合には、ファイルシステムソフトウェア１４０は、ブロック８５５においてストレージエリアにファイルデータを格納し、ホールマップ２０５をそれに応じて（すなわち部分的に、完全になど）アップデートし得る。前述の動作の１つ以上が、このエリアタイプレベルに格納され得るファイルに対する全てのデータが格納されるまで、繰り返される。
【００５１】
ブロック８３５における動作が、ファイルデータをセーブするための適切なエリアを位置決めすることに失敗する場合、または一部のデータが先の動作において既に格納された後のストレージのためのデータの残りを有する場合には、ブロック８４０において、ブロック８３５において検索された最後のエリアタイプがファイルシステムで利用可能な最も小さい論理ストレージブロックサイズに対応するかどうかを決定するためのチェックがなされる。最後のエリアタイプが最も小さいエリアタイプに対応しない場合には、ファイルシステムソフトウェア１４０は、ファイルデータを格納するための次に小さい論理ストレージブロックサイズに関連するエリアタイプを有するストレージエリアを検索し続ける。前述の例を用いて、ファイルシステムソフトウェア１４０は、ホールマップ２０５を、ファイルデータを格納するために利用可能なスペースを有するクラスタエリアタイプを有する１つ以上のストレージエリアについて検索する。このようなエリアが見出される場合には、ブロック８４５における動作が実行される。ファイルシステムソフトウェア１４０が「より小さい論理ストレージブロック」行動を用いてファイルデータを格納するための適切なエリアを位置決めすることに失敗する場合には、ブロック８５０において、より大きい論理ストレージブロックサイズを有する任意のストレージエリアが、ファイルデータを格納するためのスペースを有するかどうかを決定するためのチェックがなされる。より大きいストレージブロック行動がインプリメントされている例において、検索されていない論理ストレージブロックサイズを有するストレージエリアのみが、ブロック８５０の動作の間に考えられる必要がある。ファイルシステム１４０が、ファイルデータを格納するためのより大きい論理メモリブロックサイズを有する適切なエリアを位置決めすることが不可能である場合には、ディスクフルエラーがブロック８５５において宣言され得る。他の場合には、ブロック８５０において識別されたストレージエリアは、ブロック８６０において、より低い値のエリアタイプ（例えば、クラスタまたはファイルタイプに対応するエリアタイプ）にダウングレードされ得る。データはブロック８６５においてストレージエリアに格納される。さらに、前述の動作の１つ以上が、所与のエリアタイプレベルに格納され得るファイルに対する全てのデータが格納されるまで繰り返される。
【００５２】
図９は、図８のブロック８２５において示されるより大きい論理ストレージブロック行動をインプリメントするために使用され得る多くの相互関係のある動作を示すフローチャートである。示されるように、ファイルシステムソフトウェア１４０は、ブロック９０５において、ホールマップ２０５を、次に大きい論理ストレージブロックサイズおよびファイルデータを格納するための使用されていないスペースを有するエリアタイプを有するストレージエリアについて検索する。例えば、格納されるべきファイルデータが本来バンドルエリアタイプと関連する場合には、ファイルシステムソフトウェア１４０は、ファイルデータを格納するために利用可能なスペースを有するワッドエリアタイプを有する１つ以上のストレージエリアについて、ホールマップ２０５を検索する。次に大きい論理ストレージブロックサイズの１つ以上のストレージエリアがファイルデータを格納するために利用可能である場合には、ファイルシステムソフトウェア１４０は、ブロック９１０においてファイルデータをストレージエリアに格納する。
【００５３】
ブロック９０５における動作が、ファイルデータをセーブするための適切なエリアを位置決めすることに失敗する場合には、ブロック９１５において、ブロック９０５において検索された最後のエリアタイプが、検索されるべき最大の論理ストレージブロックサイズエリアに対応するかどうかを決定するためのチェックがなされる。検索されるべき最大の論理ストレージブロックサイズエリアは、プログラムを介してユーザ選択可能であり得る。最後のエリアタイプが最大の論理ストレージブロックサイズに対応しない場合には、ファイルシステムソフトウェア１４０は、ブロック９０５において、次に大きい論理ストレージブロックサイズに関連するエリアタイプを有するストレージエリアについて検索し続ける。前述の例を用いて、ファイルシステムソフトウェア１４０は、ホールマップ２０５を、ファイルデータを格納するために利用可能なスペースを有するスロングエリアタイプを有する１つ以上のストレージエリアについて検索する。このようなエリアが見出される場合には、ブロック９１０において動作が実行される。許可された全てのより大きい論理メモリブロックサイズが検索された後に、ファイルシステムソフトウェア１４０が、ストレージファイルデータを格納するための適切なエリアを位置決めすることに失敗する場合には、ファイルシステムソフトウェア１４０は、ブロック９２０において、より小さい論理ストレージブロック行動の実行を開始し得る。このようなより小さい論理ストレージブロック行動は、図８に図示される。
【００５４】
図７、図８および図９に示される動作において、ファイルデータに対する特定のストレージエリアの選択は、多くの異なる方法で進み得る。例えば、最大量の使用されていないスペースを有するストレージエリアが、ファイルデータを格納するために選択され得る。あるいは、最小量の使用されていないスペースを有するストレージエリアが、ファイルデータを格納するために選択され得る。さらに、ファイルシステム１４０は、ファイルシステム１４０が、ファイルデータの格納のためのエリアタイプおよびスペース基準に一致すると識別する第１のストレージエリアを割り当て得る。
【００５５】
本発明の様々な実施形態が記載されたが、多くのさらなる実施形態およびインプリメンテーションが本発明の範囲内で実行可能であることが当業者に対して明らかである。従って、本発明は、添付される特許請求の範囲およびそれらの均等物を考慮することなしに限定されない。
【図面の簡単な説明】
【００５６】
【図１】図１は、可変の論理ストレージブロックストレージサイズを有するファイルシステムをインプリメントし得るプロセッシングシステムのブロック図である。
【図２】図２は、ファイルシステムが図１のデータストレージデバイス上のファイルを編成し得る１つの方法を示すホールマップおよび対応するストレージエリアのブロック図である。
【図３】図３は、対応するエリアタイプを識別するために図２のホールマップのホールにおいて使用され得る例示的なビット設定を示す表である。
【図４】図４は、図３において参照されるエリアタイプと論理ストレージブロックサイズとの間の例示的な相関を示す表である。
【図５】図５は、対応するストレージエリアの使用度を示すために図２のホールマップのホールにおいて使用され得る例示的なビット設定を示す表である。
【図６】図６は、図１のファイルシステムによって使用され得る、例示的なファイルタイプおよび対応するエリアタイプを示す表である。
【図７】図７は、ファイルシステム内でファイルを成長させるかまたは拡張する場合に使用され得る多くの相互関連のある動作を示すフローチャートである。
【図８】図８は、代替的な図７のストレージプロセス動作において使用され得る多くの相互関連のある動作を示すフローチャートである。
【図９】図９は、図８のブロック８２５において示されるより大きい論理ストレージブロックをインプリメントするために使用され得る多くの相互関連のある動作を示すフローチャートである。
【符号の説明】
【００５７】
１００  システム
１０５  プロセッサ
１１０  読み取り専用メモリ
１１５  データストレージ
１２０  ランダムアクセスメモリ
１２５、１３０  インタフェースデバイス
１３５  オペレーティングシステム
１４０  ファイルシステム
２０５  ホールマップ
２１５、２２５、２３５、２４５  ストレージエリア
【図１】
2008052730.tif 000003
【図２】
2008052730.tif 000004
【図３】
2008052730.tif 000005
【図４】
2008052730.tif 000006
【図５】
2008052730.tif 000007
【図６】
2008052730.tif 000008
【図７】
2008052730.tif 000009
【図８】
2008052730.tif 000010
【図９】
2008052730.tif 000011