(57)【要約】  ファイルシステムが、ファイルシステムオブジェクトの他のエクステントと独立して、ファイルシステムオブジェクトの異なるエクステントについて異なるチェックサムアルゴリズムが用いられることを可能にする。チェックサムアルゴリズムは、ファイルシステムオブジェクトのいくつかのエクステントが第１のチェックサムアルゴリズムを用いることができ、一方、ファイルシステムオブジェクトの他のエクステントは、第２のチェックサムアルゴリズムを用いることができるような、ファイルシステムオブジェクトのエクステントまたはエクステントの範囲の選択可能な属性とすることができる。ファイルシステムオブジェクトのエクステントは、関連付けられたチェックサムアルゴリズムを有していない場合もある。ファイルシステムは、ファイルシステムオブジェクトの各エクステントについて、そのエクステントのためのチェックサムを示すデータ、およびそのエクステントのために用いられる任意のチェックサムアルゴリズムのインジケーションを記憶する。
2017530454.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のストレージデバイスにおけるファイルシステムの複数のファイルシステムオブジェクトのストレージおよび前記複数のファイルシステムオブジェクトへのアクセスを管理するように構成されるコンピュータであって、
前記ファイルシステムオブジェクトの複数のエクステントの各エクステントについて、前記エクステントにチェックサムアルゴリズムが適用されている場合、複数の異なるチェックサムアルゴリズムの中から選択された、前記エクステントに適用されるチェックサムアルゴリズムのインジケーション、および前記エクステントのためのチェックサム値を含むデータを記憶するように構成されるストレージと、
メモリおよびプロセスを備え、前記メモリに前記ファイルシステムのためのコンピュータプログラムコードが記憶された処理システムであって、前記コンピュータプログラムコードは、前記処理システムによって実行されると、アプリケーションから前記ファイルシステムに対する要求に応答し前記ファイルシステムオブジェクトにアクセスするように前記処理システムを構成し、前記処理システムは、アクセスされるエクステントごとに、前記ストレージ内の前記エクステントについて示される前記チェックサムアルゴリズムを適用するように更に構成される、処理システムと、
を備える、コンピュータ。
【請求項２】
前記ファイルシステムは、ファイルシステムオブジェクトのエクステントへの書込み動作に応答して、前記エクステントに適用するためのチェックサムアルゴリズムを特定し、前記チェックサムアルゴリズムを用いて前記エクステントのためのチェックサム値を計算し、前記エクステントに関連付けられた前記チェックサムアルゴリズムのインジケーションおよび前記チェックサム値を記憶する、請求項１に記載のコンピュータ。
【請求項３】
前記ファイルシステムは、ファイルシステムオブジェクトのエクステントのための読出し動作に応答して、前記エクステントに適用されるチェックサムアルゴリズムを特定し、前記チェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのためのチェックサム値を計算し、前記計算されたチェックサム値を前記エクステントについて記憶されたチェックサム値と比較する、請求項１または２に記載のコンピュータ。
【請求項４】
前記ファイルシステムは、ファイルのエクステントに適用されるチェックサムアルゴリズムを変更するための動作に応答して、前記チェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのためのチェックサム値を計算し、前記エクステントに関連付けられた前記チェックサムアルゴリズムのインジケーションおよび前記チェックサム値を記憶する、請求項１〜３のいずれか１項に記載のコンピュータ。
【請求項５】
前記チェックサムアルゴリズムの前記インジケータは、前記ファイルシステムオブジェクトのためのエクステントテーブルにおける前記エクステントのためのエントリに記憶されるチェックサムインジケータである、請求項１〜４のいずれか１項に記載のコンピュータ。
【請求項６】
エクステントのための前記チェックサム値は、前記ファイルシステムオブジェクトのためのエクステントテーブルにおける前記エクステントのためのエントリに記憶される、請求項５に記載のコンピュータ。
【請求項７】
前記チェックサムアルゴリズムの前記インジケータは、前記ファイルシステムオブジェクトのための前記エクステントテーブルにおける前記エクステントのためのエントリを通じて間接的にアクセスされるエクステントのためのチェックサムインジケータである、請求項１〜６のいずれか１項に記載のコンピュータ。
【請求項８】
エクステントのための前記チェックサム値は、前記ファイルシステムオブジェクトのための前記エクステントテーブルにおける前記エクステントのためのエントリを通じて間接的にアクセスされる、請求項７に記載のコンピュータ。
【請求項９】
前記チェックサムアルゴリズムの前記インジケータは、エクステントについて記憶されたデータの前記ストレージロケーションに関するデータに関連付けて記憶された、前記エクステントのためのチェックサムインジケータである、請求項１〜８のいずれか１項に記載のコンピュータ。
【請求項１０】
ファイルシステムオブジェクトのエクステントのための前記チェックサム値は、前記エクステントについて記憶されたデータの前記ストレージロケーションに関するデータに関連付けて記憶される、請求項１〜９のいずれか１項に記載のコンピュータ。
【請求項１１】
コンピュータのファイルシステムによって実行されるコンピュータ実施プロセスであって、
複数の異なるチェックサムアルゴリズムの中から、エクステントに適用されるチェックサムアルゴリズムのインジケーションを受信することと、
前記ファイルシステムオブジェクトの他のエクステントと独立して、前記エクステントについて記憶されたデータに前記チェックサムアルゴリズムを適用することと、
を含む、コンピュータ実施プロセス。
【請求項１２】
ファイルシステムオブジェクトのエクステントへの書込み動作に応答して、
前記エクステントに適用するチェックサムアルゴリズムを特定することと、
前記チェックサムアルゴリズムを用いて前記エクステントのためのチェックサム値を計算することと、
前記エクステントに関連付けられた前記チェックサムアルゴリズムのインジケーションおよび前記チェックサム値を記憶することと、
を更に含む、請求項１１に記載のコンピュータ実施プロセス。
【請求項１３】
ファイルシステムオブジェクトのエクステントのための読出し動作に応答して、
前記エクステントに適用されるチェックサムアルゴリズムを特定することと、
前記チェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのためのチェックサム値を計算することと、
前記計算されたチェックサム値を、前記エクステントについて記憶されたチェックサム値と比較することと、
を更に含む、請求項１１に記載のコンピュータ実施プロセス。
【請求項１４】
ファイルのエクステントに適用されるチェックサムアルゴリズムを変更する動作に応答して、
前記チェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのためのチェックサム値を計算することと、
前記エクステントに関連付けられた前記チェックサムアルゴリズムのインジケーションおよび前記チェックサム値を記憶することと、
を更に含む、請求項１１に記載のコンピュータ実施プロセス。
【請求項１５】
記憶媒体を備え、前記記憶媒体にコンピュータプログラムコードが記憶された製造品であって、前記コンピュータプログラムコードは、１つまたは複数のコンピュータによって実行されると、請求項１１〜１４のいずれか１項に記載のプロセスを実施するように前記１つまたは複数のコンピュータを構成する、製造品。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]コンピュータにおけるファイルシステムは、通常、１つまたは複数のストレージデバイスに記憶されたファイル内のデータへのアクセスを管理するオペレーティングシステムの一部である。ファイルシステムはインターフェースを提供し、このインターフェースを通じて、他のアプリケーションがファイルシステムオブジェクトを作成および管理し、データをファイルに書き込み、ストレージデバイス上に記憶されたファイルからデータを読み出すことができる。
【０００２】
[0002]  ほとんどのファイルシステムは、あるレベルのデータ完全性を提供するように構成される。例えば、ファイルシステムは、データがストレージデバイスに書き込まれるときに、記憶されたデータのチェックサムを計算し記憶することができる。データがストレージデバイスから読み出されるとき、読み出されるデータのチェックサムを計算し、記憶されたチェックサムと比較することができる。様々なチェックサムアルゴリズムがあり、これらは効率性、計算複雑性およびストレージオーバヘッドの点で様々である。
【発明の概要】
【課題を解決するための手段】
【０００３】
[0003]  この発明の概要は、以下の詳細な説明において更に説明される概念の抜粋を、簡略化された形式で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴または重要な特徴を特定することを意図するものでもなければ、特許請求される主題の範囲を限定するように用いられることを意図するものでもない。
【０００４】
[0004]  ファイルシステムが、ファイルシステムオブジェクトの他のエクステントと独立して、ファイルシステムオブジェクトの異なるエクステントについて異なるチェックサムアルゴリズムが用いられることを可能にする。チェックサムアルゴリズムは、ファイルシステムオブジェクトのいくつかのエクステントが第１のチェックサムアルゴリズムを用いることができ、一方、ファイルシステムオブジェクトの他のエクステントは、第２のチェックサムアルゴリズムを用いることができるような、ファイルシステムオブジェクトのエクステントまたはエクステントの範囲の選択可能な属性とすることができる。ファイルシステムオブジェクトのエクステントまたはエクステントの範囲は、関連付けられたチェックサムアルゴリズムを有していない場合もある。ファイルシステムは、ファイルシステムオブジェクトの各エクステントについて、そのエクステントのためのチェックサムを示すデータ、およびそのエクステントのために用いられる任意のチェックサムアルゴリズムのインジケーションを記憶する。そのようなデータを、エクステントの範囲について記憶し、これにより、ファイルシステムオブジェクト内の各エクステントにこのデータを適用してもよい。
【０００５】
[0005]  アプリケーションがファイルシステムオブジェクトのエクステントのために用いられるチェックサムアルゴリズムに対する変更を要求することを可能にするファイルシステム動作を提供することができる。ファイルシステムオブジェクトのエクステントにデータが書き込まれるとき、そのエクステントについて示されるチェックサムアルゴリズムに基づいてチェックサムが計算され、チェックサムが記憶される。ファイルシステムオブジェクトのエクステントについてストレージからデータが読み出されるとき、読み出されたデータのチェックサムが、そのエクステントについて示されたチェックサムアルゴリズムに基づいて計算され、記憶されたチェックサムと比較される。エクステントごとのチェックサムによって影響される他の動作は、限定ではないが、そのような属性を用いてファイルシステムオブジェクトを作成し、そのような属性のためのデフォルト設定を提供および変更するための動作を含む。
【０００６】
[0006]  ファイル内の異なるファイルストリームについて等のファイルシステムオブジェクトの異なる部分について異なるデフォルト設定を提供することができる。ファイルシステムオブジェクトのためのそのような設定は、チェックサムの使用に、およびチェックサムの使用から、ならびに異なるチェックサムアルゴリズム間で変更することができる。
【０００７】
[0007]  以下の説明において、本明細書の一部をなす添付の図面に対する参照が行われ、これらの図面には、例として、本技法の特定の例示的な実施態様が示される。他の実施形態が利用されてもよく、本開示の範囲から逸脱することなく、構造的変更が行われてもよいことが理解される。
【図面の簡単な説明】
【０００８】
【図１】[0008]ファイルシステムを実施することができる例示的なコンピュータのブロック図である。
【図２】[0009]ファイルシステムオブジェクトの例示的なクラス階層の図である。
【図３】[0010]エクステントごとのチェックサムを用いる例示的なエクステントの図である。
【図４】[0011]ファイルシステムオブジェクトのエクステントのために用いられるチェックサムアルゴリズムを変更する例示的な実施態様を示すフローチャートである。
【図５】[0012]ファイルシステムオブジェクトにデータを書き込む例示的な実施態様を示すフローチャートである。
【図６】[0013]ファイルシステムオブジェクトからデータを読み出す例示的な実施形態を示すフローチャートである。
【図７】[0014]ファイルシステムオブジェクトに適用される保護を変更する例示的な実施態様を示すフローチャートである。
【発明を実施するための形態】
【０００９】
[0015]  以下のセクションは、ファイルシステムを用いたコンピュータの例示的な実施態様を示す。
【００１０】
[0016]  図１は、ファイルシステムを実施することができる例示的なコンピュータを示す。コンピュータは、多岐にわたる汎用または専用コンピューティングハードウェア構成のうちの任意のものとすることができる。用いることができるコンピュータのタイプのいくつかの例は、限定ではないが、パーソナルコンピュータ、ゲームコンソール、セットトップボックス、ハンドヘルドまたはラップトップデバイス（例えば、メディアプレーヤ、ノートブックコンピュータ、タブレットコンピュータ、携帯電話、携帯情報端末、ボイスレコーダ）、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家庭用電化製品、ネットワークパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、および上記のタイプのコンピュータまたはデバイスのいずれかを含む分散コンピューティング環境を含む。特定の例示的なコンピュータは、複数の仮想ハードドライブを有するストレージアレイ上のデータにアクセスする複数の仮想マシンをサポートするサーバコンピュータである。
【００１１】
[0017]  図１を参照すると、例示的なコンピュータ１００が、少なくとも１つの処理ユニット１０２およびメモリ１０４を含む。コンピュータは、複数の処理ユニット１０２を有することができる。処理ユニット１０２は、互いに独立して動作する１つまたは複数の処理コア（図示せず）を含むことができる。グラフィック処理ユニット１０２０等の更なる共処理ユニットも、コンピュータ内に存在することができる。メモリ１０４は、揮発性（ダイナミックランダムアクセスメモリ（DRAM）または他のランダムアクセスメモリデバイス等）、不揮発性（読出し専用メモリ、フラッシュメモリ等）または２つの何らかの組み合わせとすることができる。メモリのこの構成は、図１において、破線１０６によって示される。コンピュータ１００は、限定ではないが、磁気的に記録または光学的に記録されたディスクまたはテープを含む、追加のストレージ（取外し可能および／または非取外し可能）を含むことができる。そのような追加のストレージは、図１において、取外し式ストレージ１０８および非取外し式ストレージ１１０によって示される。図１における様々なコンポーネントは、通常、１つまたは複数のバス１３０等の相互接続メカニズムによって相互接続される。
【００１２】
[0018]  コンピュータ記憶媒体は、コンピュータによって、データを、アドレス指定可能な物理ストレージロケーションに記憶し、そこから取り出すことができる任意の媒体である。コンピュータ記憶媒体は、揮発性メモリおよび不揮発性メモリ、ならびに取外し式ストレージおよび非取外し式ストレージを含む。メモリ１０４および１０６、取外し式ストレージ１０８および非取外し式ストレージ１１０は全て、コンピュータ記憶媒体の例である。コンピュータ記憶媒体のいくつかの例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（DVD）、または他の光学的にもしくは光磁気的に記録されたストレージデバイス、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイスである。コンピュータ記憶媒体は、コンピュータにとってストレージの１つまたは複数のボリュームであるように見えるオペレーティングシステムまたはファイルシステムによって管理することができるストレージアレイ等の複数のストレージデバイスの組み合わせを含むことができる。コンピュータ記憶媒体および通信媒体は、媒体の相互に排他的なカテゴリである。
【００１３】
[0019]  コンピュータ１００は、コンピュータが通信媒体を介して他のデバイスと通信することを可能にする通信接続１１２も含むことができる。通信媒体は、通常、コンピュータプログラム命令、データ構造、プログラムモジュールまたは他のデータを、有線または無線物質にわたって搬送波または他のトランスポートメカニズム等の変調されたデータ信号を伝搬することによって、この物質を介して送信する。「変調データ信号」という用語は、信号において情報を符号化するようにその特性のうちの１つまたは複数が設定または変更され、それによって信号の受信デバイスの構成または状態を変更する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続等の有線媒体と、音響、無線周波数、赤外線および他の無線媒体等の無線媒体とを含む。通信接続部１１２は、有線ネットワークインターフェース、無線ネットワークインターフェース、無線周波数送受信機、例えば、Ｗｉ−Ｆｉ、セルラ、ロングラームエボリューション（LTE）またはＢｌｕｅｔｏｏｔｈ（登録商標）等、送受信機、ナビゲーション送受信機、例えば、グローバルポジショニングシステム（GPS）またはグローバルナビゲーション衛星システム（GLONASS）等、通信媒体とインターフェースして通信媒体に対しデータを送受信し、そのデータに関して様々な機能を実行することができる送受信機等のデバイスである。
【００１４】
[0020]  コンピュータ１００は、キーボード、マウス、ペン、カメラ、タッチ入力デバイス、センサ（例えば、加速度計またはジャイロスコープ）等の様々な入力デバイス１１４を有することができる。ディスプレイ、スピーカ、プリンタ等のような出力デバイス１１６も含めることができる。これらのデバイスの全ては当該技術分野においてよく知られており、ここでは詳細に論考される必要がない。入力デバイスおよび出力デバイスは、図１におけるコンピュータの様々なコンポーネントを含むハウジングの一部とすることができるか、またはシリアルバス、無線通信接続等の様々な接続インターフェースを通じてそのハウジングから分離可能とすることができ、かつコンピュータに接続することができる。様々な入力および出力デバイスは、マウス、キーボード、リモートコントロール等の入力デバイスによって課される人工的な制約を含まない「自然」にユーザがデバイスとインタラクションすることを可能にする任意のインターフェース技術であるナチュラルユーザインターフェース（NUI）を実施することができる。
【００１５】
[0021]  ＮＵＩ方法の例は、音声認識、タッチおよびスタイラス認識、ホバリング、スクリーンおよびスクリーンに対する調整の双方のジェスチャ認識、エアジェスチャ、頭部および眼の追跡、声および音声、視覚、タッチ、ジェスチャ、およびマシンインテリジェンスに依拠するものを含み、タッチセンサディスプレイ、声および音声認識、意図および目標の理解、奥行きカメラ（立体映像カメラシステム、赤外線カメラシステム、ならびに他のカメラシステムおよびこれらの組み合わせ等）を用いた動きジェスチャ検出、加速度計またはジャイロスコープを用いた動きジェスチャ検出、顔認識、３次元ディスプレイ、頭部、眼、および視線追跡、没入型拡張現実および仮想現実システムの使用を含み、これらの全てがより自然なインターフェースを提供し、ＮＵＩ方法の例はまた、電界検知電極を用いた脳活動を検知するための技術（脳波技術および関連する方法等）の使用を含むことができる。
【００１６】
[0022]  様々なストレージ１１０、通信接続１１２、出力デバイス１１６および入力デバイス１１４は、ハウジング内でコンピュータの残り部分と統合することができるか、またはコンピュータ上の入出力インターフェースデバイスを通じて接続することができる。この場合、参照番号１１０、１１２、１１４および１１６は、デバイスに対する接続のためのインターフェース、または場合によってはデバイス自体を示すことができる。
【００１７】
[0023]  コンピュータは通常、オペレーティングシステムを含み、オペレーティングシステムは、アプリケーションによるコンピュータの様々なリソースへのアクセスを管理するコンピュータ上で実行されるコンピュータプログラムである。複数のアプリケーションが存在し得る。様々なリソースは、メモリ、ストレージ、入力デバイスおよび出力デバイス、例えば図１に示すような表示デバイスおよび入力デバイスを含む。ファイルシステムは通常、コンピュータのオペレーティングシステムの一部として実施されるが、オペレーティングシステムと別個であってもよい。ファイルシステムは、分散コンピューティング環境において実施されてもよい。分散コンピューティング環境では、動作は、通信ネットワークを通じてリンクされた複数のコンピュータによって実行される。分散コンピューティング環境では、コンピュータプログラムは、ローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体の双方に位置することができ、異なるコンピュータのユニットを処理することによって実行することができる。
【００１８】
[0024]  オペレーティングシステム、ファイルシステムおよびアプリケーションは、１つまたは複数の処理ユニットによって処理される１つまたは複数のコンピュータプログラムを用いて、１つまたは複数のコンピュータの１つまたは複数の処理ユニットを用いて実施することができる。コンピュータプログラムは、プログラムモジュール等の、コンピュータ実行可能および／またはコンピュータにより解釈された命令を含む。これらの命令は、コンピュータにおいて１つまたは複数の処理ユニットによって処理される。通常、そのような命令は、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を定義し、処理ユニットによって処理されると、この処理ユニットに、データに対し動作を実行するように命令するか、またはプロセッサもしくはコンピュータを、様々なコンポーネントまたはデータ構造を実施するよう構成するように命令する。
【００１９】
[0025]  １つまたは複数のコンピュータおよび１つまたは複数のストレージデバイスを所与として、単一のコンピュータであろうと、１組の分散コンピュータであろうと、または分散ストレージに接続された１つもしくは複数のコンピュータであろうと、ファイルシステムは、データが記憶される各デバイス内の実際のストレージロケーション等のストレージデバイスの管理の詳細と、アプリケーションとの間に抽象化レイヤを提供する。この抽象化レイヤは、アプリケーションが、ストレージデバイスにおける実際のストレージロケーションに関する情報またはストレージデバイスに関する他の詳細を有する必要なく、ファイルおよびファイル内のロケーションに対する参照を用いてファイルを特定し、ファイルにアクセスすることを可能にする。
【００２０】
[0026]  いくつかのコンピュータでは、複数の処理ユニットが、複数の仮想マシンを実行するように管理され、ここで、各仮想マシンは、１つまたは複数のデータファイルによって定義される。ストレージデバイスは、複数の仮想ハードドライブ（VHD）を提供するように管理することもできる。そのようなシステムでは、データファイル、特に、仮想マシンを定義するデータファイルのうちのいくつかが非常に大きくなり得る。データファイル、例えば、一定のＶＨＤメタデータのいくつかの部分は、ファイルの他の部分よりも大きくすることができる。
【００２１】
[0027]  本明細書に記載されるように、ファイルの異なるエクステントが異なるチェックサムアルゴリズムを用いることを可能にすることによって、チェックサムアルゴリズムは、ファイルの異なる部分におけるデータの相対的重要度に基づいて、より最適に選択することができる。ファイルの異なるエクステントに対するチェックサムアルゴリズムのそのような調節は、より効率的なストレージ利用およびより良好な性能をもたらすことができる。
【００２２】
[0028]  ここで、ファイルの異なるエクステントが異なるチェックサムアルゴリズムを用いることを可能にするファイルシステムの一実施態様をより詳細に説明する。
【００２３】
[0029]  ファイルシステムにおいて、ストレージデバイス名、ストレージデバイスの集合名、ディレクトリ名およびディレクトリパス名、ファイルストリーム名およびファイル名、または他のタイプのファイルシステムオブジェクト等の様々なファイルシステムオブジェクトの組み合わせとして、ファイルへの参照が定義される。通常、各ファイルシステムオブジェクトは、ファイルシステム内に記憶されるデータを表す名称を付けられた構造物である。
【００２４】
[0030]  ファイルシステム内で、ファイルのためのデータが記憶されると、このデータは通常、ストレージデバイスにおけるストレージロケーションに記憶される小さなチャンク（多くの場合にブロックと呼ばれる）に分割される。ファイルシステムは通常、ファイルごとに、ファイルの各ブロックが記憶されるストレージデバイス内のストレージロケーション、およびこれらのブロックの順序を追跡する。ファイルシステムは、ブロックのグループであるクラスタも定義することができ、いくつかの動作は、ブロックのグループではなくクラスタに対し実行される動作に限定することができる。ここで、「エクステント」という用語は、ブロックまたはクラスタ等のファイルの任意の分割を意味するのに用いられる。ファイルの各エクステントについて記憶されるデータが記憶されるストレージロケーションを追跡することに加えて、ファイルシステムは、エクステントごとに、計算されるチェックサム、およびチェックサムアルゴリズムを追跡する。チェックサム情報、すなわち、計算されるチェックサムおよびチェックサムアルゴリズムのインジケーションは、実施態様に依拠して、エクステントの範囲またはエクステントの部分領域について記憶することができる。
【００２５】
[0031]  次に、そのようなファイルシステムの例示的な実施態様が説明される。図２〜図８の以下の説明において、ストレージのブロックは、ストレージ動作の例示的な粒度として用いられる。以下は、関与するストレージデバイス、処理ユニット、オペレーティングシステムおよびファイルシステムによって用いられる規約に依拠して、ブロック、クラスタ、または他のストレージサブセット等の、ファイルの任意のエクステント、またはエクステントの範囲に適用することができることが理解されるべきである。
【００２６】
[0032]  例示的な実施形態として図２を参照すると、ファイルシステムは、通常、ディレクトリ２０２、ファイル２０４、およびファイルストリーム２０６等の、１組の異なる種類のファイルシステムオブジェクト２００を定義する。ファイル２０４は、２０８に示すように、ファイルストリーム２０６の集合を含むことができる。例えば、ファイルは、メタデータファイルストリームおよびデータファイルストリームを含むことができる。ルートディレクトリ２１０は、管理されているボリュームの最上位のディレクトリを与える特殊な種類のディレクトリ２０２である。ルートディレクトリによって管理されるボリュームは、複数のストレージデバイスまたはストレージデバイスの一部を含むことができるが、説明の目的のみで、本明細書における説明は単一のストレージデバイスを参照する。
【００２７】
[0033]  各ファイルシステムオブジェクトは、ファイルシステムの実施態様に依拠する名称および他の属性等の１つまたは複数の属性も有することができる。第１のファイルシステムオブジェクトの属性は、第１のファイルシステムオブジェクトにおいて作成され、これに依拠する、他のファイルシステムオブジェクトのためのデフォルト設定を含むことができる。例えば、ディレクトリの属性は、そのディレクトリ内で作成されるファイルおよびファイルストリームのためのデフォルト設定を定義することができる。同様に、ファイルの属性は、そのファイルに含まれるファイルストリームのためのデフォルト設定を定義することができる。
【００２８】
[0034]  ファイル、ファイルストリームまたは他の同様のオブジェクトは、ファイルまたはファイルストリームのエクステント（クラスタまたはブロックまたはストレージの他のサブセット等）について、エクステントに関する様々な情報、例えば、ストレージ内のエクステントのロケーション、およびエクステントの属性等の他のデータを列挙するエクステントテーブル２５２を含むこともできる。
【００２９】
[0035]  エクステントテーブルは、複数の方法で記憶することができる。例えば、いくつかの実施形態では、エクステントテーブルは、ブロックに関する情報の単純なリストまたはアレイとすることができ、ファイルによって用いられる仮想ブロック識別子と、ストレージデバイス上のストレージロケーションを参照するのに用いられる論理ブロック識別子とをマッピングする。別の例として、いくつかの実施態様では、エクステントテーブルは、仮想クラスタ番号をキーとして用い、論理クラスタ番号を値として用いて、Ｂ＋ツリー等のインデックス付けされたツリーに記憶することができる。エクステントの属性等の他のデータは、そのようなデータ構造におけるエクステントごとに記憶することができる。
【００３０】
[0036]  上記はオブジェクトクラス階層内のファイルシステムオブジェクトを有するファイルシステムについて説明したが、他のタイプのデータ構造を用いてファイルシステム構造を表すファイルシステムの他の実施態様も用いることができ、本発明は、上記で説明されたオブジェクトタイプにも、オブジェクト指向の実施態様にも限定されない。「ファイルシステムオブジェクト」という用語は、ファイルシステムに依拠して、ルートディレクトリ、ファイル等のファイルシステム構造の任意の実施を意味するように意図され、オブジェクト指向の実施に限定されない。
【００３１】
[0037]  概して、ファイルシステムは、アプリケーションおよびユーザが、ストレージボリュームのためのルートディレクトリ内で、これらのディレクトリ内の複数のディレクトリおよび他のファイルオブジェクトを作成することを可能にし、これによってディレクトリツリーが作成される。ストレージボリューム名、およびファイルシステムオブジェクトを含むディレクトリ名のリストは、パスと呼ばれる。コンピュータプログラムは、ファイルシステムに、所望のファイルシステムオブジェクト、およびファイルシステムオブジェクト名を含むパスを提供することによって、ファイルシステムを通じてファイルシステムオブジェクトにアクセスする。ボリュームは、実施態様に依拠して、ストレージデバイス、またはストレージデバイスの一部、または複数のストレージデバイスにおいて利用可能なストレージロケーションを指すことができる。
【００３２】
[0038]  ファイルシステムは、通常、他のコンピュータプログラムに、関数呼出し等のプログラミングインターフェースを通じて、多岐にわたる動作を利用可能にする。これらの動作は、ストレージへのアクセスを可能にする。ファイルシステムは、使用のためにストレージデバイス（本明細書において「ボリューム」とも呼ばれる）を初期化する動作、およびファイルオブジェクトを作成、読出し、書込み、もしくは更新、または削除する動作を含むことができる。コンピュータプログラムは、動作が実行されるファイルシステムオブジェクトのための動作および経路および名称を特定することによってファイルシステムオブジェクトに対する動作を実行する。
【００３３】
[0039]  チェックサムアルゴリズムが、ファイルの異なるエクステントについて異なることを可能にするために、ファイルシステムは、ファイルのエクステントのために用いられるチェックサムアルゴリズムが存在する場合、ファイルシステムオブジェクトがそのチェックサムアルゴリズムのインジケーションを記憶するためのエクステントテーブル２５２を用いる。例えば、このインジケーションは、エクステントテーブル内のエクステントの属性として記憶することができる。代替的に、このインジケーションは、例えば、エクステントのために記憶されたデータのストレージロケーションのためのストレージサブシステムデータに関連付けて記憶されることによって、エクステントテーブルを通じて間接的にアクセスすることができる。別の例として、エクステントの範囲を定義することができ、この情報を、エクステントの範囲について記憶することができる。
【００３４】
[0040]  次に、エクステントごとのチェックサム情報を有するエクステントテーブル２１２の例示的な実施態様が、図３に関連して説明される。
【００３５】
[0041]  図３に示すようなファイルまたはファイルストリーム等のエクステントにおいてデータを記憶するファイルシステムオブジェクトのためのエクステントテーブル３００は、アレイ、リスト、または他のインデックス付されたデータ構造として実施することができる。エクステントテーブルは、ファイルシステムオブジェクトにおけるエクステントごとに、エクステント識別子３０２に基づいてインデックス付けすることができる。エクステント識別子は、通常、ファイル内で順番に割り当てられ、このため、ファイル内のデータの順序を示す。これらのエクステント識別子は、通常、ストレージデバイス上のストレージロケーション３０４にマッピングされる。ストレージロケーション３０４は、それ自体を、ストレージサブシステムによって用いて、ストレージサブシステム内のアドレス指定可能なストレージ部分を一意に識別することができる識別子とすることができる。
【００３６】
[0042]  エクステントテーブル３００は、エクステントごとに、チェックサムインジケータ３０６を含む。チェックサムインジケータ３０６は、チェックサムアルゴリズムが存在する場合、いずれのチェックサムアルゴリズムを用いて、エクステントのためのチェックサムを計算するかを示す値である。この値は、例えば、ファイルシステムが次にチェックサムアルゴリズムにマッピングする整数値である。１つの値は、チェックサムアルゴリズムが用いられていないことを示す値にセットすることができる（例えば、０または−１または何らかの「ヌル」値インジケータ）。ファイルシステムを実施するコンピュータプログラムは、チェックサムインジケータ３０６を用いる多岐にわたる技法を用いて、対応するチェックサムアルゴリズムの実行に切り替えることができる。概して、ファイルシステムはコンピュータプログラムを含み、コンピュータプログラムは、コンピュータによって実行されると、少なくとも２つの異なるチェックサムアルゴリズムを実施することができる。
【００３７】
[0043]  用いることができる多くのチェックサムアルゴリズムが存在する。以下は、そのようなファイルシステムのために有用な例示的なチェックサムアルゴリズム、すなわち、水平パリティ、モジュラサム、フレッチャーチェックサム、アドラーチェックサム、サイクリックリダンダンシ、ならびにＭＤ５およびＳＨＡバリアント等のハッシュ関数の、非包括的で例示的なリストである。
【００３８】
[0044]  エクステントテーブル３００は、エクステントごとに、そのエクステントのためのストレージロケーション３０４に記憶されたデータにおけるチェックサムインジケータ３０６に対応するチェックサムアルゴリズムの計算結果の値であるチェックサム値３０８も含むことができる。
【００３９】
[0045]  エクステントテーブル３００は、エクステントごとに、エクステントの他の属性３１０も含むことができる。
【００４０】
[0046]  代替的に、様々な値３０４、３０６、３０８および３１０は、実施態様に依拠して、エクステント識別子によってインデックス付けされた１つまたは複数のテーブルに記憶することができる。例えば、チェックサム値３０８は、用いられるチェックサムアルゴリズムに依拠して、大きさが変動する場合がある。チェックサム値３０８を別個のテーブルに、または更にはストレージサブシステムの異なるエクステントに記憶することによって、チェックサム値のストレージの管理を、エクステントテーブルの残りの部分のストレージの管理から分離することができる。代替的に、エクステントテーブルは、チェックサム値フィールドの大きさが、可能な限り最も大きなサイズに固定されるように配分することができる。代替的に、チェックサム値３０８は、チェックサム値が記憶される場所のインジケータであってもよい。別の代替形態として、チェックサム値およびチェックサムアルゴリズムは、エクステントのためのストレージシステム識別子に関して記憶されてもよく、そのような情報は、ファイルシステムオブジェクトの代わりに、ストレージサブシステムに関して追跡されてもよい。このため、ファイルシステムは、エクステントテーブルにおいて直接、またはエクステントテーブルを通じて間接的に、ファイルシステムオブジェクトのエクステントのために用いられるチェックサムを特定することができる。代替的に、ファイルシステムオブジェクトのために用いられるチェックサムアルゴリズムに関する情報を、ファイルシステムオブジェクトのエクステントの範囲に関係して記憶することができる。
【００４１】
[0047]  エクステントテーブルを所与として、このエクステントテーブルを通じて、エクステントのためのチェックサム値およびチェックサムアルゴリズムを記憶および決定することができ、ファイルシステムオブジェクトの所与のエクステントまたはエクステントの範囲のためのチェックサムアルゴリズムを変更することを可能にするファイルシステム動作も提供される。ファイルのエクステントまたはエクステントの範囲のためのチェックサムアルゴリズムに対するそのような変更は、ファイルの他のエクステントと独立して行うことができる。ファイルシステム動作は通常、アプリケーションによって起動されるが、ユーザが選択するコマンドラインインターフェースまたはグラフィカルユーザインターフェースにおいてユーザによって入力されてもよい。ファイルシステムオブジェクトを、ファイルシステムオブジェクト内で用いられるチェックサムアルゴリズムを変更するように操作するコンピュータプログラムも書くことができる。動作が、変更されるファイルシステムオブジェクトのインジケーション、エクステント、またはエクステントの範囲、およびチェックサムアルゴリズムのインジケーションを受信することを仮定するそのような動作の例示的な実施態様が、図４に関連して説明される。ユーザが利用可能なチェックサムアルゴリズムに対し通信し、ユーザがファイルの特定の領域のために利用可能なチェックサムアルゴリズムの中から選択することを可能にするためのユーザインターフェースを提供することができる。
【００４２】
[0048]  図４に示すように、ファイルシステムオブジェクトのエクステントのためにチェックサムアルゴリズムを変更する動作を起動することに応答して、ファイルシステムは、呼出し元がファイルシステムオブジェクトのための書込み許可を有することを確実にする（４００）。入力パラメーターについて他の点でエラーがない場合、ファイルシステムは、変更されるエクステントのためのエクステントテーブルエントリを読み出す（４０２）。４０４において判断されるように、起動された動作によって示されるチェックサムアルゴリズムがすでにそのエクステントのために用いられている場合、プロセスは終了する。エクステントのためのデータがストレージから読み出され（任意選択で、現在のチェックサムを検証する）、新たなチェックサムアルゴリズムを用いてチェックサムが計算される（４０６）。次に、新たなチェックサム値および新たなチェックサムアルゴリズムのインジケータが記憶される（４０８）。そのような動作は、所与のエクステントの範囲内のエクステントごとに４００〜４０８の処理を繰り返すことによって、エクステントの範囲について定義することができる。エクステントの範囲についてチェックサムアルゴリズムを変更した結果、現在のエクステントの範囲を、各々が異なるチェックサムアルゴリズムを有する複数の範囲に細分化することができる可能性がある。
【００４３】
[0049]  ファイルシステムにおけるチェックサムのそのような実施態様を所与とすると、多岐にわたる他の動作を変更してこの使用をサポートすることができる。例えば、データの読出しおよび書込みは、ファイルの任意の所与のエクステントに用いられるチェックサムアルゴリズムに依拠することができる。また、様々なレベルの保護を提供するファイルの様々なセクションのために用いられるチェックサムアルゴリズムを変更する、より高いレベルのファイル管理動作を提供することができる。いくつかの実施態様では、まだ配分および記憶されていないファイルシステムオブジェクトのエクステントのために用いられるチェックサムアルゴリズムを指定する動作を定義することができる。データが最終的にそのようなエクステントに書き込まれるとき、用いられるチェックサムアルゴリズムを予め定義することができる。この動作の組は、包括的であることを意図されておらず、ファイルシステムが、ファイルシステムオブジェクト間で記憶されたデータの共有をサポートするか否かに依拠して異なる形で実施することができる種類の動作を単に示す。単一のエクステント、またはエクステントの範囲について、任意のそのような動作を定義することができる。エクステントの範囲は、ファイルシステムオブジェクトのためにまだ配分されていないエクステントも含むことができる。
【００４４】
[0050]  次に、図５に関連して、ファイルシステムオブジェクトに対するデータの書込みが説明される。データがファイルシステムオブジェクト内のエクステントに書き込まれるとき、ファイルシステムは、エクステントに関してデータのエクステントテーブルにアクセスする（５００）。ファイルシステムは、エクステントのために用いられるチェックサムアルゴリズムが存在する場合、そのチェックサムアルゴリズムを特定する（５０２）。このエクステントのために用いられるチェックサムアルゴリズムが存在する場合、ファイルシステムは、特定されたチェックサムアルゴリズムを用いて書き込まれるデータのためのチェックサムを計算する（５０４）。存在しない場合、チェックサム計算を回避することができる。ファイルシステムは、そのエクステントのためのデータをストレージに書き込み（５０６）、エクステントのためのストレージロケーションを適宜更新する。また、ファイルシステムは、エクステントのために計算されたチェックサム値、および、すでに記憶されていない場合、用いられるチェックサムアルゴリズムのインジケーションを記憶する（５０８）。成功した場合、ファイルシステムは、書込み動作成功のインジケーションで応答し（５１０）、成功していない場合、上記のステップのうちの任意のものの失敗により、エラーがシグナリングされる可能性がある。
【００４５】
[0051]  いくつかの例では、書込み動作は、新たなデータをファイルに付加する。そのような場合、ファイルシステムは、新たなエクステントのためのエクステントテーブルにエントリを追加する。エントリを追加する時点または追加する前に、ファイルシステムは、用いられるチェックサムアルゴリズムを多数の方法でセットすることができる。チェックサムアルゴリズムは、付加動作のパラメーターとすることができる。チェックサムアルゴリズムは、ファイルの属性、または別のファイルシステムオブジェクトから継承された属性に従って、デフォルトで決定することができる。チェックサムアルゴリズムは、ファイルシステムオブジェクト内の直前のエクステントに基づいて選択することができる。チェックサムアルゴリズムは、データが書き込まれているストレージサブシステムにおけるエクステントに基づいて選択することができる。
【００４６】
[0052]  現在のファイルシステムオブジェクトの配分外の、エクステントの範囲のためのチェックアルゴリズムを、エクステントのためのデータがファイルシステムオブジェクトに実際に付加される前に指定することができる。例えば、空のファイルを作成することができるが、エクステントの範囲が、指定されたチェックサムアルゴリズムを有する。ファイルの末尾は、この範囲を含むようにセットされる。拡張書込みを用いてファイルにデータが書き込まれるとき、ファイルは徐々に拡大し、エクステントの指定された範囲に記憶されたデータについてチェックサムが計算される。
【００４７】
[0053]  いくつかの例では、書込み動作は、現在記憶されているデータを読み出し、変更することを伴うことができる。現在記憶されているチェックサムアルゴリズムおよび現在記憶されているデータのためのチェックサム値は、現在記憶されているデータが読み出されるときにこのデータが正しいことを変更前に確実にするために、書込み動作の前に検証することができる。
【００４８】
[0054]  いくつかの例では、書込み動作は、「新規書込み」もしくは「コピーオンライト」動作、または結果としてエクステントのためのデータが新たなストレージロケーションに書き込まれることになる同様の動作とすることができる。エクステントテーブルが、チェックサム値およびチェックサムアルゴリズムを間接的に、例えば、そのような値をボリュームのストレージロケーションごとに記憶することによって、追跡する場合、そのようなデータは、新たなストレージロケーションについて更新することができる。
【００４９】
[0055]  次に、ファイルシステムオブジェクトからのデータの読出しが、図６に関連して説明される。読出し動作は、通常、エクステントに関するデータのためのエクステントテーブルにアクセスすること（６００）を含む。ファイルシステムは、エクステントのために用いられるチェックサムアルゴリズムを特定する（６０２）。ファイルシステムは、エクステントのためのストレージロケーションを用いてストレージサブシステムからのデータを読み出す（６０４）。次に、読み出されたデータのためのチェックサムが、特定されたチェックサムアルゴリズムを用いて計算される（６０６）。コンピュータチェックサムが、以前に記憶されたチェックサムと比較される（６０８）。６１０において示されるように、チェックサムが一致する場合、読み出されたデータが返され（６１２）、そうでない場合、６１４に示されるように、エラーをシグナリングすることができる。
【００５０】
[0056]  そのようなファイルシステムを用いて、ファイルの様々な部分が様々なチェックサムアルゴリズムを用いることができ、ファイルの他の部分と独立してこれらのチェックサムアルゴリズムを変更することができる。この能力は、例えば、記憶されたデータの異なる領域が異なる重要度を有する大きなファイルを有するストレージシステムにおいて、特に有利である。特定の例は、ファイルが１つの領域に重要なメタデータを含むことができ、別の領域により重要でない他のデータを含むことができる仮想ハードドライブ（VHD）を有するデータセンターにおけるものである。様々なエクステントが様々なチェックサムを用いることを可能にするファイルをサポートすることによって、ファイルシステムは、そのようなファイルのための性能と保護との間で、改善されたトレードオフを有利にサポートする。例えば、ＶＨＤメタデータを記憶するファイルにおけるエクステントには、計算するのにより長い時間がかかるか、または結果として、他のＶＨＤデータを記憶するファイル内の他のエクステントに割り当てられた別のチェックサムアルゴリズムよりも大きなチェックサム値が得られる場合がある、１つのチェックサムアルゴリズムを割り当てることができる。同様に、チェックサムアルゴリズムの１つの組み合わせを有するファイルは、チェックサムアルゴリズムの別の組み合わせを用いるように変更することができる。
【００５１】
[0057]  次に、図７に関連して、ファイルシステムオブジェクトに適用される保護を変更する動作の例示的な実施態様が説明される。
【００５２】
[0058]  この例示的な動作では、アプリケーションは、指定されたファイルの指定されたエクステントに適用されるチェックサムを変更するファイルシステム動作に対し、繰り返し呼出しを行うことができる。代替的に、ファイルシステムは、ファイルのインジケーション、ファイル内の異なる範囲、および異なる範囲内のエクステントに適用される異なるチェックサムアルゴリズムのインジケーションを受信する動作も含むことができる。
【００５３】
[0059]  このため、図７において、ファイルシステムは、ファイル、ファイル内の範囲、および異なる範囲内のエクステントに適用される異なるチェックサムアルゴリズムのインジケーションを受信する（７０２）。範囲を所与として、範囲内のエクステントが特定される（７０２）。処理されているファイルの現在の範囲内のエクステントについて指定されている新たなチェックアルゴリズムが、図４に説明されるように、各エクステントに適用される（７０４）。７０６において、その範囲の全てのエクステントが処理されたと判断される場合、７０８において、全ての範囲が処理されたと判断されるまで、７０２に示されるように、ファイルの次の範囲が処理される。成功した場合、アプリケーションは、ファイルに対する変更の成功のインジケーションで応答する（７１０）。
【００５４】
[0060]  ファイルシステムオブジェクト内の異なるエクステントのための異なるチェックサムアルゴリズムを利用するファイルシステムオブジェクトにアクセスしこれを管理するために、多岐にわたる他の動作を提供することができることが理解されるべきである。上記は、そのようなファイルシステムのための１組の例示的な実施態様例を提供する。
【００５５】
[0061]  エクステントまたはエクステントの範囲に、チェックサムアルゴリズムを変更させるかまたは使用されないようにさせることによって、一時的に、エクステントのためのチェックサムアルゴリズムを動的に変更することが可能である。特定の例として、エクステントにデータを書き込むために、エクステントは、適所に書き込まれたデータを有するようにセットすることができ、チェックサムを有しないようにセットすることができる。書込みが完了した後、チェックサムアルゴリズムをセットすることができ、次にチェックサムが計算される。より詳細には、書込みが、チェックサムを有しているとマーク付けされたエクステントに対し生じるとき、アプリケーションは、所与の範囲に書き込むことができ、ファイルシステムは、その範囲内のデータが上書きされていることを示すインテントログレコードを書き込む。書込みは、元の媒体エクステントにおいて行われる。次に、チェックサム値を計算し、記憶することができる。チェックサムが計算される前に、クラッシュ、クラスターフェイルオーバー、または他の失敗等の何らかのエラーが生じる場合、チェックサムは、ファイルシステム回復の一部として対処することができる。インテントログは、データが範囲内で上書きされていることを記録したため、ここで、この範囲のための正しいチェックサムが未知であることが想定される。次に、この範囲は、チェックサムを有しないものと一時的にマーク付けされる。のちに、アプリケーションまたはファイルシステムがこの範囲に読出しまたは書込みを行う場合、次に、この範囲に記憶されたデータが正しいと推測され、次に、この範囲のためのチェックサムが計算され、記憶され、この範囲が、チェックサムを有しているとマーク付けされる。
【００５６】
[0062]  そのようなファイルシステムは、有利には、保護と、ストレージ利用と、性能との間のより良好なトレードオフを提供することができる、異なるチェックサムが異なるエクステントに適用されたファイルを有することをサポートする。
【００５７】
[0063]  したがって、１つの態様では、ファイルシステムを有するコンピュータは、ファイルシステムオブジェクトのエクステントについて、複数の異なるチェックサムアルゴリズムの中から、エクステントに適用されたチェックサムアルゴリズムを追跡する手段を備える。そのようなファイルシステムは、ファイルシステムオブジェクトの他のエクステントと独立して、ファイルシステムオブジェクトのエクステントに適用されるチェックサムアルゴリズムを変更する手段を備えることができる。
【００５８】
[0064]  別の態様では、ファイルシステムを有するコンピュータは、ファイルシステムオブジェクトの他のエクステントと独立して、ファイルシステムオブジェクトのエクステントに適用されたチェックサムアルゴリズムを変更する手段を備える。ここで、エクステントに適用されるチェックサムアルゴリズムは、複数の異なるチェックサムアルゴリズムの中から選択される。
【００５９】
[0065]  別の態様では、ファイルシステムを有するコンピュータは、ファイルシステムオブジェクトの異なるエクステントについて、複数の異なるチェックサムアルゴリズムの中からエクステントに適用されるチェックサムアルゴリズムのインジケーションを含むストレージを備える。
【００６０】
[0066]  別の態様では、コンピュータのファイルシステムによって実行されるコンピュータにより実施されるプロセスは、複数の異なるチェックサムアルゴリズムの中から、エクステントに適用されるチェックサムアルゴリズムのインジケーションを受信することと、ファイルシステムオブジェクトの他のエクステントと独立して、エクステントについて記憶されたデータにチェックサムアルゴリズムを適用することとを含む。
【００６１】
[0067]  別の態様では、製造品は、記憶媒体に記憶されたコンピュータプログラムコードを有する記憶媒体を備え、このコンピュータプログラムコードは、１つまたは複数のコンピュータによって実行されると、複数の異なるチェックサムアルゴリズムの中から、エクステントに適用されるチェックサムアルゴリズムのインジケーションを受信し、ファイルシステムオブジェクトの他のエクステントと独立してエクステントについて記憶されたデータにチェックサムアルゴリズムを適用するように、１つまたは複数のコンピュータを構成する。
【００６２】
[0068]  上記の態様のうちの任意のものにおいて、ファイルシステムオブジェクトのエクステントへの書込み動作に応答して、ファイルシステムが、エクステントに適用するチェックサムアルゴリズムを特定し、チェックサムアルゴリズムを用いてエクステントのためのチェックサム値を計算し、エクステントに関連付けられたチェックサムアルゴリズムのインジケーションおよびチェックサム値を記憶する。
【００６３】
[0069]  上記の態様のうちの任意のものにおいて、ファイルシステムオブジェクトのエクステントのための読出し動作に応答して、ファイルシステムは、エクステントに適用されるチェックサムアルゴリズムを特定し、チェックサムアルゴリズムを用いて、エクステントのストレージから読み出されたデータのためのチェックサム値を計算し、計算されたチェックサム値を、エクステントについて記憶されたチェックサム値と比較する。
【００６４】
[0070]  上記の態様のうちの任意のものにおいて、ファイルのエクステントに適用されるチェックサムアルゴリズムを変更する動作に応答して、ファイルシステムは、チェックサムアルゴリズムを用いて、このエクステントについてストレージから読み出されるデータのためのチェックサム値を計算し、エクステントに関連付けられたチェックサムアルゴリズムのインジケーションおよびチェックサム値を記憶する。
【００６５】
[0071]  上記の態様のうちの任意のものにおいて、エクステントに適用されるチェックサムアルゴリズムを示すファイルシステムオブジェクトの各エクステントについて、チェックサムインジケータを記憶することができる。ここで、チェックサムアルゴリズムは、複数のチェックサムアルゴリズムの中から選択される。
【００６６】
[0072]  上記の態様のうちの任意のものにおいて、エクステントについて記憶されたデータのために計算されたチェックサム値を示すファイルシステムオブジェクトの各エクステントについて、チェックサム値を記憶することができる。
【００６７】
[0073]  上記の態様のうちの任意のものにおいて、ファイルシステムオブジェクトのためのエクステントテーブル内のエクステントのためのエントリに、エクステントのためのチェックサムインジケータを記憶することができる、
【００６８】
[0074]  上記の態様のうちの任意のものにおいて、ファイルシステムオブジェクトのためのエクステントテーブル内のエクステントのためのエントリに、エクステントのためのチェックサム値を記憶することができる。
【００６９】
[0075]  上記の態様のうちの任意のものにおいて、ファイルシステムオブジェクトのためのエクステントテーブル内のエクステントのためのエントリを通じて間接的に、エクステントのためのチェックサムインジケータにアクセスすることができる。
【００７０】
[0076]  上記の態様のうちの任意のものにおいて、ファイルシステムオブジェクトのためのエクステントテーブル内のエクステントのためのエントリを通じて間接的に、エクステントのためのチェックサム値にアクセスすることができる。
【００７１】
[0077]  上記の態様のうちの任意のものにおいて、エクステントについて記憶されたデータのストレージロケーションに関するデータに関連付けて、ファイルシステムオブジェクトのエクステントについて、チェックサムインジケータが記憶される。
【００７２】
[0078]  上記の態様のうちの任意のものにおいて、エクステントについて記憶されたデータのストレージロケーションに関するデータに関連付けて、ファイルシステムオブジェクトのエクステントについて、チェックサム値が記憶される。
【００７３】
[0079]  上記の態様のうちの任意のものにおいて、書込み動作の失敗時に、ファイルシステムオブジェクトのエクステントのためのチェックサムアルゴリズムを除去することができる。そのエクステントへの後のアクセス時に、チェックサムアルゴリズムはエクステントに再度割り当てることができ、チェックサム値を計算し記憶することができる。
【００７４】
[0080]  １つまたは複数のコンピュータにおいて、そのようなコンピュータの任意の個々のコンポーネントとして、１つもしくは複数のコンピュータもしくはそのようなコンピュータの任意の個々のコンポーネントによって実行されるプロセスとして、または１つもしくは複数のコンピュータによって処理されると、１つもしくは複数のコンピュータを構成するコンピュータプログラム命令が記憶されたコンピュータストレージを含む製造品として、上記の態様のうちの任意のものを具現することができる。
【００７５】
[0081]  本明細書において説明された上述の代替実施形態のうちの任意のものまたは全てを、追加の混合実施形態を形成するように所望の任意の組み合わせで用いることができる。代替的に、または加えて、本明細書において記載した様々なコンポーネントのうちの１つまたは複数の機能は、少なくとも部分的に、１つまたは複数のハードウェアロジックコンポーネントによって実行することができる。例えば、限定ではないが、用いることができる例示的なタイプのハードウェアロジックコンポーネントは、フィールドプログラマブルゲートアレイ（FPGA）、特定用途向け集積回路（ASIC）、特定用途向け規格製品（ASSP）、システムオンチップシステム（SoC）、複合プログラム可能論理デバイス（CPLD：Complex Programmable Logic Device）等を含む。添付の特許請求の範囲において定義されている主題は、必ずしも、上記で記載された特定の実施態様に限定されないことが理解されるべきである。上記で説明された特定の実施態様は、例としてのみ開示される。
【図１】
2017530454.tif 000003
【図２】
2017530454.tif 000004
【図３】
2017530454.tif 000005
【図４】
2017530454.tif 000006
【図５】
2017530454.tif 000007
【図６】
2017530454.tif 000008
【図７】
2017530454.tif 000009
【手続補正書】
【提出日】平成27年3月8日(2015.3.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つまたは複数のストレージデバイスにおけるファイルシステムを含むコンピュータ（１００）であって、前記コンピュータは、前記ファイルシステムの複数のファイルシステムオブジェクト（２００）のストレージおよび前記複数のファイルシステムオブジェクトへのアクセスを管理するように構成され、前記コンピュータは、
前記ファイルシステムオブジェクト（２００）の複数のエクステントの各エクステントについて、複数の異なるチェックサムアルゴリズムの中から選択された、前記エクステントに適用されるチェックサムアルゴリズムのインジケーション、および前記エクステントのためのチェックサム値を含むデータを記憶するように構成されるストレージと、
なお、前記ファイルシステムは、ファイルシステムオブジェクト（２００）のエクステントに適用されるチェックサムアルゴリズムを変更する動作の起動の受信に応答して、
前記新たなチェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのためのチェックサム値を計算し、
前記エクステントに関連付けられた前記新たなチェックサムアルゴリズムのインジケーションおよび前記新たなチェックサム値を記憶する、
ように構成され、
メモリ（１０４）を備え、前記メモリに前記ファイルシステムのためのコンピュータプログラムコードが記憶された処理システム（１０２）であって、前記コンピュータプログラムコードは、前記処理システムによって実行されると、
アプリケーションから前記ファイルシステムに対する要求に応答し前記ファイルシステムオブジェクト（２００）にアクセスし、
アクセスされるエクステントごとに、前記ストレージ内の前記エクステントについて示される前記チェックサムアルゴリズムを適用する、
ように前記処理システムを構成する、処理システムと、
を備える、コンピュータ。
【請求項２】
前記ファイルシステムは、ファイルシステムオブジェクト（２００）のエクステントへの書込み動作に応答して、前記エクステントに適用するためのチェックサムアルゴリズムを特定し、前記チェックサムアルゴリズムを用いて前記エクステントのためのチェックサム値を計算し、前記エクステントに関連付けられた前記チェックサムアルゴリズムのインジケーションおよび前記チェックサム値を記憶する、請求項１に記載のコンピュータ。
【請求項３】
前記ファイルシステムは、ファイルシステムオブジェクト（２００）のエクステントのための読出し動作に応答して、前記エクステントに適用されるチェックサムアルゴリズムを特定し、前記チェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのためのチェックサム値を計算し、前記計算されたチェックサム値を前記エクステントについて記憶されたチェックサム値と比較する、請求項１または２に記載のコンピュータ。
【請求項４】
前記新たなチェックサムアルゴリズムは、前記ファイルシステムオブジェクト（２００）内の直前のエクステントに基づいて選択される、請求項１〜３のいずれか１項に記載のコンピュータ。
【請求項５】
前記チェックサムアルゴリズムの前記インジケータは、前記ファイルシステムオブジェクト（２００）のためのエクステントテーブル（３００）における前記エクステントのためのエントリに記憶されるチェックサムインジケータである、請求項１〜４のいずれか１項に記載のコンピュータ。
【請求項６】
エクステントのための前記チェックサム値は、前記ファイルシステムオブジェクトのためのエクステントテーブル（３００）における前記エクステントのためのエントリに記憶される、請求項５に記載のコンピュータ。
【請求項７】
前記チェックサムアルゴリズムの前記インジケータは、前記ファイルシステムオブジェクトのための前記エクステントテーブル（３００）における前記エクステントのためのエントリを通じて間接的にアクセスされるエクステントのためのチェックサムインジケータである、請求項１〜６のいずれか１項に記載のコンピュータ。
【請求項８】
エクステントのための前記チェックサム値は、前記ファイルシステムオブジェクトのための前記エクステントテーブル（３００）における前記エクステントのためのエントリを通じて間接的にアクセスされる、請求項７に記載のコンピュータ。
【請求項９】
前記チェックサムアルゴリズムの前記インジケータは、エクステントについて記憶されたデータの前記ストレージロケーションに関するデータに関連付けて記憶された、前記エクステントのためのチェックサムインジケータである、請求項１〜８のいずれか１項に記載のコンピュータ。
【請求項１０】
ファイルシステムオブジェクトのエクステントのための前記チェックサム値は、前記エクステントについて記憶されたデータの前記ストレージロケーションに関するデータに関連付けて記憶される、請求項１〜９のいずれか１項に記載のコンピュータ。
【請求項１１】
コンピュータ（１００）のファイルシステムによって実行されるコンピュータ実施プロセスであって、前記方法は、ファイルシステムオブジェクト（２００）のエクステントに適用されるチェックサムアルゴリズムを変更する動作に応答して、
前記新たなチェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのための新たなチェックサム値を計算することと、
前記エクステントに関連付けられた前記新たなチェックサムアルゴリズムのインジケーションおよび前記新たなチェックサム値を記憶することと、
複数の異なるチェックサムアルゴリズムの中から、エクステントに適用されるチェックサムアルゴリズムのインジケーションを受信することと、
ファイルシステムオブジェクト（２００）の他のエクステントと独立して、前記エクステントについて記憶されたデータに前記チェックサムアルゴリズムを適用することと、
を含む、コンピュータ実施プロセス。
【請求項１２】
ファイルシステムオブジェクトのエクステントへの書込み動作に応答して、
前記エクステントに適用するチェックサムアルゴリズムを特定することと、
前記チェックサムアルゴリズムを用いて前記エクステントのためのチェックサム値を計算することと、
前記エクステントに関連付けられた前記チェックサムアルゴリズムのインジケーションおよび前記チェックサム値を記憶することと、
を更に含む、請求項１１に記載のコンピュータ実施プロセス。
【請求項１３】
ファイルシステムオブジェクトのエクステントのための読出し動作に応答して、
前記エクステントに適用されるチェックサムアルゴリズムを特定することと、
前記チェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出されるデータのためのチェックサム値を計算することと、
前記計算されたチェックサム値を、前記エクステントについて記憶されたチェックサム値と比較することと、
を更に含む、請求項１１に記載のコンピュータ実施プロセス。
【請求項１４】
ファイルのインジケーション、前記ファイル内の異なる範囲、および前記異なる範囲内の前記エクステントに適用される異なるチェックサムアルゴリズムを受信することと、
前記範囲の各々について、
前記範囲の前記エクステントを特定することと、
前記特定されたエクステントの各々について、
前記特定されたエクステントに対し新たなチェックサムアルゴリズムを適用することであって、前記適用することは、前記新たなチェックサムアルゴリズムを用いて、前記エクステントについてストレージから読み出される前記データのための前記新たなチェックサム値を計算することを含むことと、
を含む、請求項１１に記載のコンピュータ実施プロセス。
【請求項１５】
記憶媒体を備え、前記記憶媒体にコンピュータプログラムコードが記憶された製造品であって、前記コンピュータプログラムコードは、１つまたは複数のコンピュータによって実行されると、請求項１１〜１４のいずれか１項に記載のプロセスを実施するように前記１つまたは複数のコンピュータを構成する、製造品。
【国際調査報告】
2017530454.tif 000010
2017530454.tif 000011