(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-29
(45)【発行日】2023-06-06
(54)【発明の名称】オブジェクトベースファイルシステムを管理するための装置、システム及び方法
(51)【国際特許分類】
G06F 16/18 20190101AFI20230530BHJP
G06F 16/174 20190101ALI20230530BHJP
【FI】
G06F16/18
G06F16/174
(21)【出願番号】P 2021567070
(86)(22)【出願日】2019-05-17
(86)【国際出願番号】 US2019032767
(87)【国際公開番号】W WO2020236130
(87)【国際公開日】2020-11-26
【審査請求日】2021-11-10
(73)【特許権者】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】パウエル, リチャード
(72)【発明者】
【氏名】ベンソン, マイケル
(72)【発明者】
【氏名】カーター, マイケル
(72)【発明者】
【氏名】ソーナリー, ジェラード
(72)【発明者】
【氏名】ハナム, マシュー
(72)【発明者】
【氏名】ノーウッド, デイビッド
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2008-287675(JP,A)
【文献】特表2013-545162(JP,A)
【文献】特表2020-506464(JP,A)
【文献】国際公開第2016/038714(WO,A1)
【文献】米国特許出願公開第2018/0196817(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10-16/188
(57)【特許請求の範囲】
【請求項1】
オブジェクトベースファイルシステムを管理するための装置であって:前記装置は、
-通信ネットワークを介し1つ又は複数のクライアントコンピュータへ通信可能に接続するように構成されたネットワークインターフェース、及び
-複数のファイルオブジェクトを含む前記オブジェクトベースファイルシステムを管理するように構成された、プロセッサにより少なくとも部分的に実施される、ファイルシステム管理部であって、各ファイルオブジェクトは前記
オブジェクトベースファイルシステムのそれぞれのファイルと関連付けられ、前記ファイルシステム管理部は前記
ネットワークインターフェースを介し受信されるファイルサービングプロトコルのファイルアクセス要求をサービスするように構成される、ファイルシステム管理部を含み、
前記ファイルシステム管理部はさらに、ブロックストレージデバイスとして実装可能である前記オブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成される、装置。
【請求項2】
前記ファイルシステム管理部は、前記オブジェクトベースファイルシステムの前記ブロックアクセスオブジェクトの前記ブロックストレージデバイスに向けられたブロックサービングネットワークプロトコルのブロックアクセス要求をサービスするように構成されたブロックサービングプロトコルサーバ部を含む、請求項1に記載の装置。
【請求項3】
前記ファイルシステム管理部はホストコンピュータのホストオペレーティングシステムによりブロックストレージデバイスとして実装可能である前記オブジェクトベースファイルシステムの前記ブロックアクセスオブジェクトを提供するように構成される、請求項1に記載の装置。
【請求項4】
前記ファイルシステム管理部はホストコンピュータの前記ホストオペレーティングシステム上で実行されるファイルサービングアプリケーションを含む、請求項3に記載の装置。
【請求項5】
前記ファイルシステム管理部は、前記ブロックアクセスオブジェクトにより提供される前記ブロックストレージデバイスを前記ホストオペレーティングシステムのファイルシステムフォーマットでフォーマット化するように、前記オブジェクトベースファイルシステムの前記ブロックアクセスオブジェクトを前記ホストコンピュータの前記ホストオペレーティングシステムへ提供するように構成される、請求項3に記載の装置。
【請求項6】
前記ファイルシステム管理部は、前記ホストコンピュータの前記ホストオペレーティングシステム上で実行する外部アプリケーションによる書き込みアクセスのために前記オブジェクトベースファイルシステムの前記ブロックアクセスオブジェクトを提供するように構成される、請求項3に記載の装置。
【請求項7】
前記外部アプリケーションは、前記オブジェクトベースファイルシステムのオブジェクトに関連付けられたファイルへ発行されるファイルアクセス要求に基づき検索インデックスを生成及び/又は更新するように構成された検索インデックスアプリケーションであり、
前記ファイルシステム管理部は、前記ブロックアクセスオブジェクト内に格納された検索インデックスファイル又は検索インデックスデータベース内に書き込むために前記検索インデックスアプリケーションによる書き込みアクセスのために前記オブジェクトベースファイルシステムの前記ブロックアクセスオブジェクトを提供するように構成される、請求項6に記載の装置。
【請求項8】
前記オブジェクトベースファイルシステムの各オブジェクトはブロックレベル層の1つ又は複数のそれぞれのストレージブロックに関連付けられ、
前記ファイルシステム管理部は、前記ブロックレベル層において重複排除処理であって、前記ブロックレベル層のそれぞれのストレージブロックのハッシュ値を計算すること及び整合するハッシュ値に基づきストレージブロックを重複解除することを含む、重複排除処理を行うように構成された重複排除処理部を含み、
前記外部アプリケーションは、プロセス間通信を介し前記重複排除処理部により共有されるハッシュ値に基づき重複解除インデックスを生成及び/又は更新するように構成された重複解除インデックスアプリケーションであり、
前記ファイルシステム管理部は、前記ブロックアクセスオブジェクト内に格納された重複解除インデックスファイル又は重複解除インデックスデータベースへ書き込むために前記重複解除インデックスアプリケーションによる書き込みアクセスのために前記オブジェクトベースファイルシステムの前記ブロックアクセスオブジェクトを提供するように構成される、請求項6に記載の装置。
【請求項9】
前記ファイルシステム管理部は、前記オブジェクトベースファイルシステムがユーザアクセス制限状態へ設定されたということを判断すると前記オブジェクトベースファイルシステムのオブジェクトレベル層において前記ブロックアクセスオブジェクトを生成するように構成される、請求項1に記載の装置。
【請求項10】
前記ファイルシステム管理部は、前記オブジェクトベースファイルシステムが読み出し専用状態へ設定されたということを判断すると前記ブロックアクセスオブジェクトを生成するように構成される、請求項9に記載の装置。
【請求項11】
前記ファイルシステム管理部は、関連付けられたオブジェクトメタデータにより前記ブロックアクセスオブジェクトを生成するように構成される、請求項9に記載の装置。
【請求項12】
前記ブロックアクセスオブジェクトの前記オブジェクトメタデータは前記ブロックアクセスオブジェクトのブロックアクセスタイプを指示し、及び/又は
前記ブロックアクセスオブジェクトの前記オブジェクトメタデータはブロックアクセスタイプのオブジェクトのために予約された一意的オブジェクト番号を指示する、請求項11に記載の装置。
【請求項13】
-ホストオペレーティングシステムを実行するホストコンピュータ、及び
-オブジェクトベースファイルシステムを管理するための装置、を含むシステムであって;前記装置は、
-通信ネットワークを介し1つ又は複数のクライアントコンピュータへ通信可能に接続するように構成されたネットワークインターフェース、及び
-複数のファイルオブジェクトを含む前記オブジェクトベースファイルシステムを管理するように構成された、プロセッサにより少なくとも部分的に実施される、ファイルシステム管理部であって、各ファイルオブジェクトは前記
オブジェクトベースファイルシステムのそれぞれのファイルと関連付けられる、ファイルシステム管理部を含み、
前記装置の前記ファイルシステム管理部は前記
ネットワークインターフェースを介し受信されるファイルサービングプロトコルのファイルアクセス要求をサービスするように構成され、
前記装置の前記ファイルシステム管理部は前記ホストコンピュータの前記ホストオペレーティングシステムによりブロックストレージデバイスとして実装可能である前記オブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成される、システム。
【請求項14】
オブジェクトベースファイルシステムを管理するための方法であって、
-複数のファイルオブジェクトを含むオブジェクトベースファイルシステムをプロセッサにより少なくとも部分的に管理することであって、各ファイルオブジェクトは前記
オブジェクトベースファイルシステムのそれぞれのファイルと関連付けられ、ファイルシステム管理部は、1つ又は複数のクライアントコンピュータから受信されるファイルサービングプロトコルのファイルアクセス要求をサービスするように構成される、管理すること、及び
-ブロックストレージデバイスとして実装可能である前記オブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供すること、を含む方法。
【請求項15】
コンピュータ上で実行されると前記コンピュータに請求項14に記載の方法を実行させるコンピュータ可読命令を含むコンピュータプログラ
ム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はオブジェクトベースファイルシステムを管理するための装置、システム、及び方法に関する。
【背景技術】
【0002】
最先端技術では、オブジェクトベース管理に基づきファイルシステムを管理するファイルサーバ又はファイルサーバシステムを設けることが知られており、ここでは、ファイルシステムのファイル及びディレクトリが、ファイルシステムのメタデータを含む管理オブジェクトと共にオブジェクト層レベルのファイルシステムオブジェクトとして管理される。オブジェクト層レベル上では、ファイルはファイルサービングプロトコル通信を使用することによりクライアントコンピュータからアクセスされ得る。オブジェクト層レベルの下では、データは論理ブロック内に格納され得、そして各オブジェクトは、それぞれのファイルシステムオブジェクトに関連付けられた1つ又は複数のストレージブロックに対するマッピングを指示するメタデータを含む。
【0003】
このようなファイルシステム管理は、重複排除(deduplication)、検索インデックス付け、ファイルシステムのスナップショット作製、ファイルシステムの一連のチェックポイントを確立すること、及びファイルシステム複製などのファイルシステム管理操作を含み得る。
【0004】
ターゲットファイルシステムへのソースファイルシステムの複製などのいくつかのファイルシステム管理操作は、例えば読み出し専用状態においてすら、ファイルシステム(例えばターゲットファイルシステム)がユーザアクセス制限状態において管理されるということを必要とし得るが、他のファイルシステム管理操作は、検索インデックス付け又は重複排除インデックス管理などの場合、インデックスファイル又はインデックスデータベースを書き込むために外部処理を必要とし得、そしてこのような管理されたインデックスファイル又はインデックスデータベースは好適には、スナップショット及びチェックポイント処理などの他のファイルシステム管理操作に含まれるようにファイルシステムの一部として管理され得る。
【0005】
本開示は、外部処理がデータをファイルシステムへ又はその中に書き込むことを効率的に許容する一方でファイルシステムのファイルシステムオブジェクトへのユーザアクセスを制限することを可能にするための機構を提供することを目的とする。
【発明の概要】
【発明が解決しようとする課題】
【0006】
したがって、本開示の目的は、オブジェクトベースファイルシステムを管理するための、そして特に外部アプリケーションへのアクセスを、ユーザアクセス制限状態(例えば読み出し専用状態などの)において管理されているファイルシステムへのアクセスへ効率的に修正することを可能にするための装置、システム、及び方法を提供することである。
【課題を解決するための手段】
【0007】
いくつかの例示的態様によると、オブジェクトベースファイルシステムを管理するための装置が提案され、本装置は、通信ネットワークを介し1つ又は複数のクライアントコンピュータへ通信可能に接続するように構成されたネットワークインターフェース、及び複数のファイルオブジェクトを含むオブジェクトベースファイルシステムを管理するように構成された、プロセッサにより少なくとも部分的に実施されるファイルシステム管理部を含み、各ファイルオブジェクトはファイルシステムのそれぞれのファイルと関連付けられ、ファイルシステム管理部はインターフェースを介し受信されるファイルサービングプロトコルのファイルアクセス要求をサービスするように構成される。
【0008】
いくつかの例示的実施形態では、ファイルシステム管理部はさらに、ブロックストレージデバイスとして実装可能であるオブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成され得る。
【0009】
したがって、ブロックアクセスオブジェクトへのアクセスを効率的に修正することは、ファイルサービングプロトコルに基づくファイルアクセスがユーザアクセス制限状態(例えば読み出し専用状態など)において管理され得るとしてもファイルシステムへの外部アプリケーションのために提供され得る。
【0010】
いくつかの例示的実施形態では、ファイルシステム管理部は、オブジェクトベースファイルシステムのブロックアクセスオブジェクトのブロックストレージデバイスに向けられたブロックサービングネットワークプロトコルのブロックアクセス要求をサービスするように構成されたブロックサービングプロトコルサーバ部を含み得る。
【0011】
いくつかの例示的実施形態では、ファイルシステム管理部はホストコンピュータのホストオペレーティングシステムによりブロックストレージデバイスとして実装可能であるオブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成され得る。
【0012】
いくつかの例示的実施形態では、ファイルシステム管理部は、ホストコンピュータのホストオペレーティングシステム上で実行されるファイルサービングアプリケーションを含み得る。
【0013】
いくつかの例示的実施形態では、ファイルシステム管理部は、ブロックアクセスオブジェクトにより提供されるブロックストレージデバイスをホストオペレーティングシステムのファイルシステムフォーマットでフォーマット化するように、オブジェクトベースファイルシステムのブロックアクセスオブジェクトをホストコンピュータのホストオペレーティングシステムへ提供するように構成され得る。
【0014】
いくつかの例示的実施形態では、ファイルシステム管理部は、ホストコンピュータのホストオペレーティングシステム上で実行する外部アプリケーションによる書き込みアクセスのためにオブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成され得る。
【0015】
いくつかの例示的実施形態では、外部アプリケーションは、オブジェクトベースファイルシステムのオブジェクトに関連付けられたファイルへ発行されるファイルアクセス要求に基づき検索インデックスを生成及び/又は更新するように構成された検索インデックスアプリケーションであり得る。
【0016】
いくつかの例示的実施形態では、ファイルシステム管理部は、ブロックアクセスオブジェクト内に格納された検索インデックスファイル又は検索インデックスデータベース内に書き込むために検索インデックスアプリケーションによる書き込みアクセスのためにオブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成され得る。
【0017】
いくつかの例示的実施形態では、オブジェクトベースファイルシステムの各オブジェクトはブロックレベル層の1つ又は複数のそれぞれのストレージブロックに関連付けられ得、ファイルシステム管理部は、ブロックレベル層において重複排除処理(ブロックレベル層のそれぞれのストレージブロックのハッシュ値を計算すること及び整合するハッシュ値に基づきストレージブロックを重複解除することを含む)を行うように構成された重複排除処理部を含み得る。
【0018】
いくつかの例示的実施形態では、外部アプリケーションは、プロセス間通信を介し重複排除処理部により共有されるハッシュ値に基づき重複解除インデックスを生成及び/又は更新するように構成された重複解除インデックスアプリケーションであり得る。
【0019】
いくつかの例示的実施形態では、ファイルシステム管理部は、ブロックアクセスオブジェクト内に格納された重複解除インデックスファイル又は重複解除インデックスデータベースへ書き込むために重複解除インデックスアプリケーションによる書き込みアクセスのためにオブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成され得る。
【0020】
いくつかの例示的実施形態では、ファイルシステム管理部は、オブジェクトベースファイルシステムがユーザアクセス制限状態へ設定されたということを判断するとオブジェクトベースファイルシステムのオブジェクトレベル層においてブロックアクセスオブジェクトを生成するように構成され得る。
【0021】
いくつかの例示的実施形態では、ファイルシステム管理部は、オブジェクトベースファイルシステムが読み出し専用状態へ設定されたということを判断するとブロックアクセスオブジェクトを生成するように構成され得る。
【0022】
いくつかの例示的実施形態では、ファイルシステム管理部は、関連付けられたオブジェクトメタデータによりブロックアクセスオブジェクトを生成するように構成され得る。
【0023】
いくつかの例示的実施形態では、ブロックアクセスオブジェクトのオブジェクトメタデータはブロックアクセスオブジェクトのブロックアクセスタイプを指示し得る。
【0024】
いくつかの例示的実施形態では、ブロックアクセスオブジェクトのオブジェクトメタデータはブロックアクセスタイプのオブジェクトのために予約された一意的オブジェクト番号を指示する。
【0025】
別の例示的態様によると、ホストオペレーティングシステムを実行するホストコンピュータと、上記態様のうちの少なくとも1つ及び上記例示的実施形態のうちの1つ又は複数の実施形態による装置とを含むシステムが提供され得る。
【0026】
いくつかの例示的実施形態では、システムの装置のファイルシステム管理部は、ホストコンピュータのホストオペレーティングシステムによりブロックストレージデバイスとして実装可能であるオブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供するように構成され得る。
【0027】
別の例示的態様によると、オブジェクトベースファイルシステムを管理するための方法が提供され得る。本方法は、複数のファイルオブジェクトを含むオブジェクトベースファイルシステムをプロセッサにより少なくとも部分的に管理することであって、各ファイルオブジェクトはファイルシステムのそれぞれのファイルと関連付けられ、ファイルシステム管理部は、1つ又は複数のクライアントコンピュータから受信されるファイルサービングプロトコルのファイルアクセス要求をサービスするように構成される、管理すること、及びブロックストレージデバイスとして実装可能であるオブジェクトベースファイルシステムのブロックアクセスオブジェクトを提供することとを含む。
【0028】
本方法はまた、上記態様の少なくとも1つの態様及び上記例示的実施形態の1つ又は複数の実施形態の任意の機能及び/又は操作を実施し得る。
【0029】
別の例示的態様によると、コンピュータ上で実行されるとコンピュータに上記方法を実行させるコンピュータ可読命令を含むコンピュータプログラム製品が提供され得る。
【0030】
いくつかの例示的態様が上に説明されたが、このような態様は、上記段落に記載されたものに加えて様々な他の変更、組み合せ、省略、修正及び置換が可能であるので、単に例示的であり、広範な発明を制限するものではないということと例示的態様は上に示され説明された特定構造及び配置に限定されないということとを理解すべきである。
【0031】
当業者は、今説明した態様の様々な適合化、修正、及び/又は組み合せが構成され得るということを理解することになる。したがって、本明細書において具体的に説明されるもの以外の別の態様が実行され得るということを理解すべきである。例えば、明示的に述べられない限り、本明細書において説明される処理の工程は本明細書において説明されるものとは異なる順序で行われ得、1つ又は複数の工程は組み合わせられ、分割され、同時に行われ得る。
【0032】
当業者は、本明細書において説明される様々な態様が本開示の他の態様を形成するために組み合わせられ得るということも本開示に照らして理解することになる。
【図面の簡単な説明】
【0033】
【
図1】本発明のいくつかの例示的実施形態によるファイルストレージシステムの例示的概略ブロック図である。
【
図2】本発明のいくつかの例示的実施形態によるファイルサーバの例示的概略ブロック図である。
【
図3】本発明のいくつかの例示的実施形態によるオブジェクトベースファイルシステム管理構成の例示的概略ブロック図である。
【
図4】本発明のいくつかの例示的実施形態によるオブジェクトツリー構造の例示的概略ブロック図である。
【
図5】本発明のいくつかの例示的実施形態によるファイルシステム管理システムの例示的概略ブロック図である。
【
図6】本発明の他の例示的実施形態によるファイルシステム管理システムの例示的概略ブロック図である。
【
図7】いくつかの例示的実施形態によるファイルシステム管理のための、特にオブジェクトベースファイルシステムのオブジェクトへのブロックアクセスを提供するための方法を例示的に示す。
【発明を実施するための形態】
【0034】
以下では、本発明の好適な態様及び実施形態が、添付図面を参照してより詳細に説明されることになる。様々な図面及び実施形態内の同じ又は同様な特徴は同様な参照符号により参照される。様々な好適な態様及び好ましい実施形態に関係する以下の詳細説明は本発明の範囲を制限することを意味しないということを理解すべきである。
【0035】
図1は本発明のいくつかの例示的実施形態によるファイルストレージシステムの例示的概略ブロック図である。
【0036】
例示的に、ファイルストレージシステムはファイルサーバ100を含む(例示的に、単一ファイルサーバ100が簡潔性及び利便性のために示されるが、ファイルストレージシステムはまた複数ファイルサーバ(例えばファイルサーバクラスタなど)を含み得る)。
【0037】
例示的に、ファイルサーバ100は、通信ネットワーク102を介し複数のクライアントコンピュータ(クライアントデバイス)101a、101b、101cへ通信可能に接続される。通信ネットワーク102は1つ又は複数のローカルネットワーク(例えばLAN、WLANなど)を含み得、通信ネットワーク102はWANなどの広域ネットワーク及び/又は例えばインターネット又はインターネットプロトコルネットワークなどのグローバルネットワークを含み得る。
【0038】
さらに例示的に、ファイルサーバ100は、ストレージネットワーク又はストレージエリアネットワーク(SAN:storage area network)などを含み得る通信ネットワーク103を介し複数のストレージデバイス104a、104b、104cへ通信可能に接続される。ストレージデバイス104a、104b、104cは、データを格納するためのブロックストレージを提供し得、そして、いくつかの例示的実施形態では、データをデータ保護目的のために冗長的やり方で(例えばRAID構成(RAIDシステム)などにより)格納するように構成される。
【0039】
いくつかの例示的実施形態では、ファイルサーバ100は、1つ又は複数のファイルサービングネットワークプロトコル(例えばSMB、CIFS、及び/又はNFSなど)を使用してネットワーク102を介しファイルアクセスを有効にするように構成され得る。
【0040】
いくつかの例示的実施形態では、ファイルサーバ100は1つ又は複数のブロックサービングネットワークプロトコル(例えばNetwork Block Device、SCSI、Fibre Channel、iSCSI、Fibre Channel over Ethernetなど)を使用することによりネットワーク103を介し1つ又は複数のストレージデバイス104a、104b、104cと通信するように構成され得る。
【0041】
ファイルストレージシステムは、任意のファイルサーバが冗長及びスイッチ型FibreChannelネットワーク上で任意のRAIDシステムと通信し得る完全メッシュ構成を含む様々な構成で相互接続される複数のファイルサーバ及び複数のRAIDシステムを含む可能性があるということに注意すべきである。
【0042】
図2は本発明のいくつかの例示的実施形態によるファイルサーバ100の例示的概略ブロック図である。
【0043】
例示的に、ファイルサーバ100は、処理ユニット1001(例えば1つ又は複数のプロセッサにより実現される)と処理ユニット1001による使用のためのデータ及び/又はソフトウェアを格納するためのストレージユニット1002とを含み、ストレージユニット1002は例示的に、ROM、RAM、キャッシュなどの1つ又は複数のメモリを含み、そして任意選択的にさらにストレージ(ハードディスク及び/又はソリッドステートドライブなどのストレージドライブなど)を含む。
【0044】
さらに例示的に、ファイルサーバ100は、通信ネットワーク102を介しクライアントコンピュータ101a、101b、101cなどの1つ又は複数のクライアントコンピュータと通信するように構成されたクライアントネットワークインターフェース1003と、通信ネットワーク103を介しストレージデバイス104a、104b、104cなどの1つ又は複数のストレージデバイスと通信するように構成されたストレージネットワークインターフェース1004とを含む。他の例示的実施形態では、ファイルサーバ100は、ブロックストレージのための内部ストレージデバイスをストレージネットワークインターフェース1004に加えて又はその代わりに含み得る。
【0045】
他の例示的実施形態では、ストレージシステムが分散ファイルシステム管理のための複数のファイルサーバを含む場合、ファイルサーバはさらに、システムの他のファイルサーバと通信するためのファイルサーバインターフェースを含み得る。
【0046】
例示的に、いくつかの例示的実施形態では、ファイルサーバ100(又はファイルサーバシステムクラスタ)はオブジェクトベースファイルシステム管理に従って1つ又は複数のファイルシステムを管理するように構成され得る。
【0047】
図3は本発明のいくつかの例示的実施形態によるオブジェクトベースファイルシステム管理構成の例示的概略ブロック図である。
【0048】
ファイルサーバ100(又はファイルサーバシステムクラスタ)により例示的に管理されるファイルシステム管理構成は例示的に、ファイルレベル層31、オブジェクトレベル層32、及びブロックレベル層33を含む。
【0049】
ファイルレベル層31は例示的に、1つ又は複数のファイルシステムのファイル(及びディレクトリ)を管理する。オブジェクトレベル層32は例示的に、1つ又は複数のファイルシステムのオブジェクトを管理し、ファイルレベル層31の各ファイル(及び別の任意選択的に各ディレクトリ)は例示的に、オブジェクトレベル層32のそれぞれのファイルシステムオブジェクトに関連付けられ得る。
【0050】
最後に、例示的に、ブロックレベル層33はデータストレージのためのストレージブロック(例えば論理ブロック)を管理し、オブジェクトレベル層32の各オブジェクトはブロックレベル層33の1つ又は複数のストレージブロックに関連付けられ得る。
【0051】
オブジェクトレベル層32のそれぞれの関連付けられたオブジェクトとファイル(任意選択的にディレクトリ)との関連性に関して、ファイルサーバ100(又はファイルサーバシステムクラスタ)はメタデータ312を管理し得る。メタデータ312は、オブジェクトレベル層32のそれぞれの関連付けられたオブジェクトとファイル(任意選択的にディレクトリ)との関連性を指示し得る。
【0052】
いくつかの例示的実施形態では、メタデータ312は、オブジェクトレベル層32の1つ又は複数のメタデータオブジェクトとして管理され得る。
【0053】
したがって、ファイルシステム毎に、ファイルサーバ100(又はファイルサーバシステムクラスタ)は、ファイルオブジェクト及び/又はディレクトリオブジェクトを含む1つ又は複数のファイルシステムオブジェクト並びに1つ又は複数のメタデータオブジェクトを含む1つ又は複数の管理オブジェクトをオブジェクトレベル層32において管理し得る。
【0054】
ブロックレベル層33のそれぞれのストレージブロック(それぞれの関連付けられたオブジェクトのデータを格納する)とのオブジェクトの関連性に関して、ファイルサーバ100(又はファイルサーバシステムクラスタ)はメタデータ323を管理し得る。メタデータ323は、ブロックレベル層33のそれぞれの関連付けられたストレージブロックとオブジェクト(ファイルシステムオブジェクト及び管理/メタデータオブジェクト)との関連性を指示し得る。
【0055】
したがって、オブジェクト毎に、ファイルサーバ100(又はファイルサーバシステムクラスタ)は、メタデータ323及びオブジェクトデータを格納する1つ又は複数のストレージブロックを管理し得る。
【0056】
いくつかの例示的実施形態では、メタデータ323はそれぞれのオブジェクトの動的ツリー構造として管理され得る。
【0057】
図4は本発明のいくつかの例示的実施形態によるオブジェクト400のオブジェクトツリー構造の例示的概略ブロック図である。
【0058】
オブジェクト400は例示的に、ルートメタデータノード401、複数の間接的メタデータノード411、412、複数の直接メタデータノード421、422、423、424、及び複数のストレージブロック431~438を含む複数のメタデータノードのツリー構造を含む。
【0059】
例示的に、ルートメタデータノード401は間接的メタデータノード411、412を指し示すポインタ(矢印により例示的に示される)を含み、間接的メタデータノード411、412は直接メタデータノード421~424のそれぞれの1つを指し示すポインタを含み、直接メタデータノード421~424は複数のストレージブロック431~438のそれぞれの1つを指し示すポインタを含む。
【0060】
データが或るオブジェクトへ書き込まれる場合、データは別のストレージブロックへ書き込まれ得、別のストレージブロックはこの時点で当該オブジェクトへ追加的に割り振られ得、そして追加メタデータノード及び/又は追加ポインタがツリー構造へ動的に加えられ得る。ツリー構造はまた、複数のレベルの間接的ノードを含み得る。一般的に、直接メタデータノードはストレージブロックを直接的に指し示すポインタを含むメタデータノードであり、一方、間接的メタデータノードは、他の間接的メタデータノード及び/又は直接メタデータノードなどの他のメタデータノードを指し示すメタデータノードである。
【0061】
いくつかの例示的態様では、ファイルサーバ100(ファイルサーバクラスタシステムの)は、ファイル識別子(例えばファイルハンドルなど)とオブジェクトとを関連付けるオブジェクトレベルにおいて或る特定メタデータオブジェクト(例えば間接オブジェクトと呼ばれる)を管理し得る。
【0062】
次に、ユーザ(クライアントコンピュータ)が、或るファイルサービングプロトコルのファイルアクセス要求(アクセスされるファイルのファイル識別子とターゲットファイル内でアクセスされるデータのオフセットとを指示する要求)を送信すると、ファイルサーバは、関連付けられたファイルオブジェクトの関連付けられたオブジェクト識別子を識別するように或る特定メタデータオブジェクト(間接オブジェクト)のオブジェクトツリーを横断し得る。
【0063】
次に、例えばファイルアクセス要求において指示されるオフセットに基づき、ファイルサーバは、指示されたオフセット及び要求されたデータ長さに対応するストレージブロックへアクセスするように、関連付けられたファイルオブジェクトのオブジェクトツリーを横断し得る。
【0064】
さて、いくつかの環境では、例えばいくつかのアクセス許可を確立する又はファイルシステムを完全に読み出し専用にすることにより、ファイルサーバにより管理されるファイルシステムへのユーザアクセスを制限することが望ましいかもしれない。
【0065】
制限されたユーザアクセスは、書き込みアクセスなどのアクセスを修正することが少なくとも部分的に禁止及び/又は無効にされるということを意味し得る。ファイルシステムが読み出し専用である場合、ファイルシステムへの読み出しアクセスは許可/有効にされ、一方、アクセス(書き込みアクセスなど)を修正することは禁止/無効にされる。
【0066】
例えば、ファイルシステムは、別のソースファイルシステムを複製する複製プロセスのターゲットファイルシステムである場合に読み出し専用にされ得、ソースファイルシステムは依然としてアクセス可能であり得、そしてソースファイルシステムにおいて行われる修正はターゲットファイルシステムへ複製される。ターゲットファイルシステムをソースファイルシステムと整合したままにするために、ターゲットファイルシステムへの独立ユーザアクセス(読み出しアクセス以外の)が無効にされる必要がある。
【0067】
依然として、制限されたユーザアクセスを有するファイルシステム(例えば読み出し専用のファイルシステムなど)が、インデックスファイル(例えば、検索目的のための検索インデックス及び/又は重複排除目的のための重複排除インデックス)などのデータ及び/又はメタデータを書き込む必要があり得る操作を行うことが望ましいかもしれなく、書き込まれたデータは、ファイルシステムを移動する際にファイルシステムと共に移動されるように、及び/又はファイルシステムスナップショット又はファイルシステムチェックポイントを生成する際などにいくつかのファイルシステム操作に取り込まれる/含まれるように、ファイルシステムの一部として(例えばファイルシステムに関連付けられたメタデータとして)維持されるべきである。
【0068】
このような目的のために、いくつかの例示的実施形態では、或るデータを、制限されたユーザアクセスにより又は読み出し専用ファイルシステムとしてすら(少なくとも現在、例えば一時的に又は恒久的に)管理されるファイルシステム内に書き込むことを許容する例示的新規概念及び例示的機構を提供することが提案される。
【0069】
図5は本発明のいくつかの例示的実施形態によるファイルシステム管理システムの例示的概略ブロック図である。
【0070】
例示的に、このようなファイルシステム管理システムは、ファイルサーバ100上に又は上記例示的態様において例示的に説明されるようなファイルサーバシステムのファイルサーバ上に実装され得る。
【0071】
ファイルシステム管理システムはオペレーティングシステム500のオペレーティングシステム(OS)層を操作し得る。例示的に、ファイルシステム管理部510はオペレーティングシステム500上で操作又は処理を実行するように構成される。
【0072】
ファイルシステム管理部510は例示的に、例えば上記
図3に関連して論述したのと同様なファイルレベル層31、オブジェクトレベル層32及びストレージブロックレベル層33を含む層状構造(
図5の点線ボックス)に従って1つ又は複数のファイルシステムを管理するように構成される。
【0073】
ファイルシステム管理部510は例示的に、1つ又は複数のファイルサービングネットワークプロトコル(例えばSMB、CIFS、及び/又はNFSなど)に従ってファイルサービングプロトコルアクセス要求を受信及びサービスするように構成されたファイルサービングプロトコルサーバ部511を含む。
【0074】
ファイルサービングプロトコルサーバ部511は、ファイルレベル層31のファイル(例えばファイルシステムの/file1及び/file2)のアクセスを有効にする。
図3に関連して例示的に論述したように、ファイルシステムのファイルは、オブジェクトレベル層32のそれぞれのファイルシステムオブジェクトに関連付けられ得る。例えば、ファイル/file1はファイルシステムオブジェクトO1に関連付けられ、/file2はファイルシステムオブジェクトO2に関連付けられる。
【0075】
さらに、オブジェクトレベル層32の各オブジェクトはブロックレベル層33のそれぞれの(1つ又は複数の)ストレージブロックに関連付けられる。例えば、オブジェクトO1はストレージブロックB1、B2に関連付けられ、オブジェクトO2はストレージブロックB3、B4に関連付けられる。
【0076】
したがって、ファイルシステムのファイル/file1は例示的に、関連付けられたストレージブロックB1、B2内に/file1のファイルデータを格納するファイルシステムオブジェクトO1として管理され、ファイルシステムのファイル/file2は例示的に、関連付けられたストレージブロックB3、B4内に/file2のファイルデータを格納するファイルシステムオブジェクトO2として管理される。
【0077】
上に論述したように、さらなるデータがファイルのうちの任意のファイルへ書き込まれる場合、それぞれの関連付けられたオブジェクトは、さらなるブロックをそれぞれのオブジェクトへ割り振りそしてオブジェクトのメタデータ(例えばそのメタデータツリーなど)を適合化することにより動的に拡張され得る。
【0078】
ファイルサービングプロトコルサーバ部511は、例えば管理されたファイルシステムへのユーザアクセスを確立するための外部クライアントコンピュータから、又はオペレーティングシステム500のオペレーティングシステム層上で構成/操作されるファイルサービングプロトコルクライアント部503から、適合可能ファイルサービングネットワークプロトコルを使用することにより対応ファイルサービングプロトコルクライアントによりアクセスされ得る。
【0079】
換言すれば、ファイルサービングプロトコルサーバ部511は、共有又はエクスポートとしてのアクセスのために、管理されたファイルシステムを、それぞれのファイルサービングネットワークプロトコルの専門用語に依存して、クライアントコンピュータのために外部的に又は実行されるオペレーティングシステム500及びアプリケーションのために内部的にかのいずれかで提供し得る。
【0080】
したがって、アプリケーション520がオペレーティングシステム500上で実行されると、アプリケーション520は、オペレーティングシステム500により管理される仮想ファイルシステム(OS仮想ファイルシステム)であってファイルサービングプロトコルクライアント部503と通信するように構成されたオペレーティングシステムのファイルシステムドライバ502により提供される仮想ファイルシステム(OS仮想ファイルシステム)にアクセスし得る。
【0081】
換言すれば、ファイルシステム管理部510により管理されるファイルシステムは、ファイルサービングプロトコルクライアント部503及びOSファイルシステムドライバ502を介しオペレーティングシステム500の仮想ファイルシステム501の共有/エクスポートされたファイルシステムとしてアプリケーション520へ提供され得る。
【0082】
他方で、ファイルシステム管理部510により管理されるファイルシステムへのユーザアクセスが制限される(部分的に)場合又はファイルシステム管理部510により管理されるファイルシステムが読み出し専用にすらされる場合、アプリケーション520によるこのようなファイルシステムアクセスは制限される又は読み出し専用アクセスへ制限され、書き込みアクセスは制限され得る又は禁止すらされ得る。
【0083】
しかし、いくつかのケースでは、アプリケーション520はデータを、制限されたユーザアクセスを有するファイルシステムへ又は読み出し専用ファイルシステムへすら書き込み得るということが望ましいかもしれない。
【0084】
例えば、
図5では、アプリケーション520は、インデックス付きファイルシステムと共に管理されるべきインデックスファイル又はインデックスデータベース内に格納されるファイルシステム内に格納されるデータに関連付けられた検索インデックスを生成するように構成されたインデックス付けアプリケーションであるということが想定され得る。
【0085】
次に、ファイルシステムへのユーザアクセスが制限される場合ですら又はファイルシステムが読み出し専用である場合ですら、インデックス付けアプリケーション520はファイルシステムのインデックスファイル又はインデックスデータベースへ書き込むことを続け得るということが望ましいかもしれない。
【0086】
例示的に、これは、例えばNetwork Block Device、SCSI、Fibre Channel、iSCSI、Fibre Channel over Ethernetなどのブロックサービングネットワークプロトコルを介しアクセスされ得る特定タイプのファイルシステムオブジェクトをファイルシステム内に設けることによりいくつかの例示的実施形態では実現され得る。
【0087】
この目的のため、特定オブジェクトO3が、オブジェクト層32上のファイルシステム管理部510により管理されるファイルシステム内に例えば管理オブジェクト又はメタデータのオブジェクトとして(例示的に、ファイル層31上のファイルとのいかなる関連性も無く)生成され得る。
【0088】
したがって、特定オブジェクトO3は、ファイルシステム管理部510のファイルシステム管理のスナップショット又はチェックポイント機構内で考えられるようなファイルシステム操作を依然として受け得る。
【0089】
特定オブジェクトO3にアクセスするために、ファイルシステム管理部510は例示的に、ブロックサービングプロトコルサーバ部512を含む。例示的に、特定オブジェクトO3はブロックレベル層33においてストレージブロックB5~B7に関連付けられる。
【0090】
ファイルシステム管理部510により管理されるファイルシステムの通常ファイルに関連付けられたオブジェクトO1、O2などのファイルシステムオブジェクトをインデックス付けすることに基づき検索インデックスを生成又は修正するために、アプリケーション520は、ファイルサービングプロトコルクライアント部503を介し上記機構を通してファイルを依然として読み出し得る。
【0091】
しかし、ファイルシステムへの書き込みアクセスは制限又は禁止され得るので(例えば読み出し専用ファイルシステムの場合)、インデックスファイル又はインデックスデータベースはいくつかの例示的実施形態では異なる機構を介し特定オブジェクトO3へ書き込まれ得る。
【0092】
例示的に、特定オブジェクトO3は、ブロックサービングプロトコルボリュームとして提供され得る(ブロックサービングプロトコル専門用語では「ブロック」とも呼ばれ得るが、ブロックレベル層33のストレージブロックと区別されるために、本明細書ではボリューム又は「BLOCK」と呼ばれる)。
【0093】
換言すれば、オペレーティングシステム500は、BLOCKのボリュームをオペレーティングシステム500の仮想ファイルシステムとしてフォーマット化するように(すなわちオペレーティングシステム500のローカルファイルシステムを表すように装うように)ボリューム又はブロックデバイスとしてBLOCKを実装できるようにされ得る。すなわち、オペレーティングシステム500は、仮想ローカルOSファイルシステム(例えばアプリケーション520のインデックスファイル又はインデックスデータベースを格納するための)として特定オブジェクトO3を実装できるようにされ得る。
【0094】
オペレーティングシステム500はさらに例示的に、ファイルシステム管理部510のブロックサービングプロトコルサーバ部512と通信するブロックサービングプロトコルクライアント部505を含む。
【0095】
オペレーティングシステム500はさらに例示的に、オペレーティングシステム500のブロックサービングプロトコルクライアント部505及びオペレーティングシステム500のOSファイルシステムドライバ502と通信するOSブロックドライバ504を含む。
【0096】
したがって、アプリケーション520は、仮想ファイルシステム501、OSファイルシステムドライバ502、OSブロックドライバ504、及びブロックサービングプロトコルクライアント部505、並びにファイルシステム管理部510のブロックサービングプロトコルサーバ部512を通して、特定オブジェクトO3か実装される仮想ファイルシステムにアクセスし得る(例えば検索インデックスファイル又は検索インデックスデータベースを、特定オブジェクトO3により提供される仮想ファイルシステムへ書き込むために)。
【0097】
上記例では、アプリケーション520は、ファイルシステム管理部510により管理されるファイルシステムへの通常アクセスが制限される場合ですら又はファイルシステムが読み出し専用にされる(一時的に又は恒久的に)場合ですら、制限されないやり方で特定オブジェクトO3へ書き込み得る。
【0098】
上記では、機構は、例えばファイルシステム管理部510により管理されるファイルシステムに基づき検索インデックスを生成及び/又は更新し、そしてファイルシステム管理部510により管理されるファイルシステムの特定オブジェクトO3へ検索インデックスファイル又は検索インデックスデータベースを書き込む例示的インデックス付けアプリケーション520に関連して説明された。
【0099】
しかし、他の例示的実施形態では、同様な原理は、例えば以下の
図6に関連して論述されるようなファイルシステム重複排除へ適用され得る又は重複排除おいて使用され得る。
【0100】
図6は本発明の他の例示的実施形態によるファイルシステム管理システムの例示的概略ブロック図である。
【0101】
図6において、ファイルシステム管理部510は例示的にさらに、ファイルシステム管理部510により管理されるファイルシステム内で重複排除処理を実行するように構成された重複排除処理アプリケーション513を含む。
【0102】
例えば、重複排除処理アプリケーション513は、重複排除処理アプリケーション513が例えば各ストレージブロック(ユーザデータ又はファイルシステムオブジェクトデータを格納する)のハッシュ値を計算するためにストレージブロックレベル層33のストレージブロックのデータを読み出す重複排除処理を実行するように構成され得る。
【0103】
次に、ハッシュ値が、以前に発見されたハッシュ値(別のストレージブロック内に既に格納されたデータと同一のそれぞれのストレージブロックストレージデータを指示する)に整合すれば、重複排除処理アプリケーション513は、ストレージブロックの1つを他のストレージブロックへのポインタ又は参照子により置換することによりそれぞれのストレージブロックを重複解除するように構成され得、これにより格納スペースをより効率的に管理するようにさらなる使用のために、置換されたブロックを解放することを可能にする。
【0104】
しかし、重複排除処理アプリケーション530は、ハッシュされた値及び既にハッシュされたストレージブロックに対する関連性の重複解除インデックスを生成又は更新するための重複解除インデックスアプリケーション530などの外部アプリケーションを使用するために有益かもしれない。
【0105】
例示的に、重複解除インデックスを生成又は更新するための重複解除インデックスアプリケーション530は、オペレーティングシステム500に外部から作用し、そしてファイルシステム管理部510の重複排除処理アプリケーション513と例えば
図6において矢印IPCにより指示されるプロセス間通信を介し通信する。
【0106】
依然として、ファイルシステム管理部510により管理されるファイルシステム内に重複解除インデックスを(例えば1つ又は複数の重複解除インデックスファイル又は重複解除インデックスデータベースとして)維持/格納することが、好適にはファイルシステムへのアクセスが制限されなくても又はファイルシステムが読み出し専用であっても望ましいかもしれない。
【0107】
図5と同様に、ファイルシステム管理部510により管理されるファイルシステムはオブジェクトレベル層32上の特定オブジェクトO3を含む。すなわち、特定オブジェクトO3は、オブジェクトレベル層32上でファイルシステム管理部510により管理されるファイルシステム内に例えば管理オブジェクト又はメタデータオブジェクトとして生成され得る(例示的に、ファイル層31上のファイルとの関連性無しに)。
【0108】
したがって、特定オブジェクトO3は、ファイルシステム管理部510のファイルシステム管理のスナップショット又はチェックポイント機構内で考えられるようなファイルシステム操作を依然として受け得る。
【0109】
特定オブジェクトO3にアクセスするために、ファイルシステム管理部510は例示的に、ブロックサービングプロトコルサーバ部512を含む。例示的に、特定オブジェクトO3はブロックレベル層33においてストレージブロックB5~B7に関連付けられる。
【0110】
重複排除処理アプリケーション513から(例えばプロセス間通信IPC(inter-process communication)を介し)取得されるハッシュ値に基づき重複解除インデックスを生成又は修正又は更新するために、アプリケーション530は、ファイルシステムへの書き込みアクセスが制限又は禁止される場合(例えば読み出し専用ファイルシステムの場合)ですら、特定オブジェクトO3の重複解除インデックスファイル又は重複解除インデックスデータベースへ書き込み得る。
【0111】
例示的に、特定オブジェクトO3はブロックサービングプロトコルボリュームとして(すなわちボリューム又は「BLOCK」として)提供され得る、
【0112】
換言すれば、オペレーティングシステム500は、BLOCKのボリュームをオペレーティングシステム500の仮想ファイルシステムとしてフォーマット化するように(すなわちオペレーティングシステム500のローカルファイルシステムを表すことを装うように)ボリューム又はブロックデバイスとしてBLOCKを実装できるようにされ得る。
【0113】
すなわち、オペレーティングシステム500は、仮想ローカルOSファイルシステム(例えばアプリケーション530の重複解除インデックスファイル又は重複解除インデックスデータベースを格納するための)として特定オブジェクトO3を実装できるようにされ得る。
【0114】
オペレーティングシステム500はさらに例示的に、ファイルシステム管理部510のブロックサービングプロトコルサーバ部512と通信するブロックサービングプロトコルクライアント部505を含む。
【0115】
オペレーティングシステム500はさらに例示的に、オペレーティングシステム500のブロックサービングプロトコルクライアント部505及びオペレーティングシステム500のOSファイルシステムドライバ502と通信するOSブロックドライバ504を含む。
【0116】
したがって、アプリケーション530は、仮想ファイルシステム501、OSファイルシステムドライバ502、OSブロックドライバ504、及びブロックサービングプロトコルクライアント部505、並びにファイルシステム管理部510のブロックサービングプロトコルサーバ部512を通して、特定オブジェクトO3か実装される仮想ファイルシステムにアクセスし得る(例えば重複解除インデックスファイル又は重複解除検索インデックスデータベースを、特定オブジェクトO3により提供される仮想ファイルシステムへ書き込む/更新するために)。
【0117】
上記例では、重複解除インデックス付けアプリケーション530は、ファイルシステム管理部510により管理されるファイルシステムへの通常アクセスが制限される場合ですら又はファイルシステムが読み出し専用にされる(一時的に又は恒久的に)場合ですら、制限されないやり方で特定オブジェクトO3へ書き込み得る。
【0118】
図5、6を含むいくつかの例示的実施形態では、特定オブジェクトO3により提供されるBLOCKのサイズ(ブロックボリューム)はブロックレベル層33の別のストレージブロックを特定オブジェクトO3へ例示的に割り振ることにより動的に変更(例えば、増加)され得るということに留意すべきである。
【0119】
具体的には、特定オブジェクトO3とブロックレベル層33のその関連付けられたストレージブロックとを関連付けるメタデータは、例えば
図4に示すツリー構造に基づき、ファイルシステム管理部510により管理されるファイルシステムの他のオブジェクトと同様なファイルシステム管理部510により管理され得る。
【0120】
いくつかの好ましい例示的実施形態では、ブロックサービングプロトコルサーバ部512は、効率的アクセスを提供するように特定オブジェクトO3のサイズ及びブロックレベル層33のストレージブロックのサイズを承知している(例えばブロックレベル層33のストレージブロックのサイズに等しいチャンクサイズを有するチャンク内の特定オブジェクトO3へアクセスすることにより)。
【0121】
図5、6の構成を含むいくつかの例示的実施形態では、ファイルシステム管理部510は、ブロックサービングプロトコルサーバ部512を介し、ブロックサービングプロトコルアクセスのための1つ又は複数の特定オブジェクトを管理し得、オブジェクトのメタデータは、特定オブジェクトのタイプを指示し得る(例えば、特定オブジェクトのタイプは特定オブジェクトがブロックアクセスのために有効にされるということを示す(例えばタイプBLOCK_ACCESSにより))。
【0122】
また、容易に識別可能であるために、そしてより効率的なファイルシステム管理のために、1つ又は複数の特定オブジェクトのそれぞれは一意的永続オブジェクト番号に関連付けられ得、一方、通常ファイルシステムオブジェクトは、現在一意的であるオブジェクト番号により動的に割り当てられ得る。
【0123】
また、このような特定オブジェクトの一意的永続オブジェクト番号は、例えば上記アプリケーション530のDEDUPE_INDEX_BLOCK_ACCESSなどの一意的オブジェクト番号、上記アプリケーション520のSEARCH_INDEX_BLOCK_ACCESSなどにより、或る関連付けられたアプリケーションへ(例えば、上記アプリケーション520、530それぞれに)恒久的に関連付けられ得る。
【0124】
図7はいくつかの例示的実施形態によるファイルシステム管理の(特にオブジェクトベースファイルシステムのオブジェクトへのブロックアクセスを提供するための)方法を例示的に示す。
【0125】
工程S701では、オブジェクトベースファイルシステム内の(新しい)特定オブジェクトが生成される。又はファイルシステム管理部により既に生成されていれば、オブジェクトベースファイルシステム内の特定オブジェクトが提供される。ファイルシステム管理部は、ホストオペレーティングシステム上で動作してもよいし、ホストオペレーティングシステムを実行するホストと通信してもよい。
【0126】
工程S702では、ブロックサービングプロトコル全体にわたる特定オブジェクトのサービングはファイルシステム管理部により開始される。
【0127】
工程S703では、ファイルシステム管理部は、ブロックデバイス(例えばボリューム)としての特定オブジェクトへのブロックアクセスを有効にするために信号をホストオペレーティングシステムへ送信し得る。
【0128】
工程S704では、この信号を受信すると、ホストオペレーティングシステムはブロックサービングプロトコル上でブロックデバイスを接続し実装する。
【0129】
任意選択的に、例えば、特定オブジェクトが以前に使用されていなければ、ホストオペレーティングシステムは、OSファイルシステムを提供するために工程S705においてブロックデバイスをフォーマット化する(例えばホスト自身のフォーマットで)。
【0130】
工程S706では、ホストオペレーティングシステムは、ブロックデバイス上でフォーマット化されたファイルシステムをホストオペレーティングシステムの仮想ファイルシステム内に実装する。
【0131】
工程S707では、ホストオペレーティングシステムは、ブロックデバイスファイルシステムの位置を指示する情報を外部処理アプリケーション(例えば上記アプリケーション520及び/又は530など)へ供給する。
【0132】
工程S708では、外部処理アプリケーションが開始し、可能性として、ブロックサービングネットワークプロトコル(例えばNetwork Block Device、SCSI、Fibre Channel、iSCSI、Fibre Channel over Ethernetなど)を介し、オブジェクトベースファイルシステムの特定オブジェクトにより提供されるブロックデバイス上でフォーマット化されたブロックデバイスファイルシステムにアクセスする。
【0133】
要約すると、いくつかの例示的実施形態では、既知の一意的オブジェクト番号を有する新しいファイルシステムオブジェクトが提供及び/又は生成され得、当該の新しい特定オブジェクトへのアクセスは、ストレージブロックアクセスのために設計されたネットワークプロトコル上で1つ又は複数の外部処理に利用可能にされ得る。すなわち、オブジェクトレベルにおけるアクセスはファイルシステムのアクセス制限状態又は読み出し専用状態をバイパスし得る。
【0134】
新しい特定オブジェクトの使用は、ファイルシステムのアクセス制限状態又はさらには読み出し専用状態により保護されているデータが、ブロックアクセスを介し新たに有効にされた読み取り/書き込みアクセスにより影響されないということを保証し得る。
【0135】
いくつかの例示的実施形態では、ホストオペレーティングシステムドライバ及びクライアントは、ホストオペレーティングシステムが(ローカル及び/又は仮想)ファイルシステムを生成すること及び/又はブロックサービングネットワークプロトコル上でサービスされる仮想ストレージBLOCKへフォーマット化することを可能にするために提供され得る。
【0136】
次に、ホストOSファイルシステムが、実装され、そして外部処理又はアプリケーション(例えば重複排除インデックス付けアプリケーション又は検索インデックス付けアプリケーションなど)による使用のために利用可能にされ得る。
【0137】
当業者により理解されるように、上に及び添付図面において説明された本発明は、方法(例えば、コンピュータ実施プロセス、ビジネスプロセス、又は任意の他のプロセス)、装置(デバイス、マシン、システム、コンピュータプログラム製品、及び/又は任意の他の装置)、又は前述の組み合せとして具現化され得る。
【0138】
したがって、本発明のいくつかの実施形態は、完全にハードウェア実施形態、完全にソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェア及びハードウェア態様を組み合わせた実施形態(「システム」と本明細書では概して呼ばれる)の形式を取り得る。さらに、本発明のいくつかの実施形態は、媒体内で具現化されたコンピュータ実行可能プログラムコードを有するコンピュータ可読媒体上のコンピュータプログラム製品の形式を取り得る。
【0139】
2つ以上のエンティティに関わる通信、転送又は他の活動を表すために矢印が添付図面おいて使用され得るということに注意すべきである。両端矢印は活動(例えば他方向の対応返答と共に一方向の命令/要求、又はいずれかのエンティティにより開始されるピアツーピア通信)が両方向に発生し得るということを概して指示するが、いくつかの状況では活動は必ずしも両方向に発生しないかもしれない。
【0140】
一端矢印は排他的に又は主に一方向の活動を概して指示するが、いくつかの状況ではこのような方向活動は実際には両方向の活動に関与し得る(例えば送信側から受信側へのメッセージ、及び受信側から送信側への確認返答、又は転送に先立つ接続と転送に続く接続の終了に先立つ接続との確立)ということに注意すべきである。したがって、特定活動を表すために特定図おいて使用される矢印のタイプは例示的であり、したがって制限するものと見なすべきでない。
【0141】
本発明のいくつかの実施形態は、方法及び装置のフローチャート図解及び/又はブロック図を参照して並びにそして本方法及び/又は装置により生成されるグラフィックユーザインターフェースの多くのサンプルビューを参照して上に説明された。フローチャート図解及び/又はブロック図及び/又はフローチャート図解及び/又はブロック図内のブロックの組み合せ、並びにグラフィックユーザインターフェースの各ブロックはコンピュータ実行可能プログラムコードにより実施され得る。
【0142】
コンピュータ実行可能プログラムコードは、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介し実行するプログラムコードがフローチャート、ブロック図のブロック又はブロック群、図面、及び/又は明細書おいて規定された機能/行為/出力を実現する手段を生成するように、特定マシンを生成するために汎用コンピュータ、特殊用途コンピュータ又は他のプログラマブルデータ処理装置のプロセッサへ提供され得る。
【0143】
これらのコンピュータ実行可能プログラムコードはまた、コンピュータ可読メモリ内に格納されたプログラムコードがフローチャート、ブロック図のブロック、図面、及び/又は明細書に規定された機能/行為/出力を実現する命令手段を含む製造品を生成するように、コンピュータ又は他のデータ処理装置に、特定のやり方で機能するように指示し得るコンピュータ可読メモリ内に格納され得る。
【0144】
コンピュータ実行可能プログラムコードはまた、コンピュータ又は他のプログラマブル装置上で実行するプログラムコードがフローチャート、ブロック図のブロック、図面、及び/又は明細書において規定された機能/行為/出力を実現するための工程を提供するようにコンピュータ実施処理を生成するために一連の操作工程がコンピュータ又は他のプログラマブル装置上で実行されるようにさせるためにコンピュータ又は他のプログラマブルデータ処理装置上にロードされ得る。代替的に、コンピュータプログラム実施(computer program implemented)工程又は行為は、本発明の実施形態を行うためにオペレータ又は人間実施(operator or human implemented)工程又は行為と組み合わせられ得る。
【0145】
「サーバ」及び「プロセッサ」などの用語は、本発明のいくつかの実施形態において使用され得るデバイスを説明するために本明細書において使用され得、したがって文脈が要求しない限り本発明をいかなる特定デバイスタイプに制限するように解釈されるべきでないということに注意すべきである。したがって、デバイスは限定しないがブリッジ、ルータ、ブリッジルータ(ブルータ:brouter)、スイッチ、ノード、サーバ、コンピュータ、機器又は他のタイプのデバイスを含み得る。このようなデバイスは通常、通信ネットワーク上で通信するための1つ又は複数のネットワークインターフェースとデバイス機能を行うようにそれに従って構成されたプロセッサ(例えば、メモリ及び他の周辺装置及び/又は特定用途向けハードウェアを有するマイクロプロセッサ)とを含む。
【0146】
通信ネットワークは通常、公的及び/又は私的ネットワークを含み得;ローカルエリア、ワイドエリア、大都市エリア、ストレージ、及び/又は他のタイプのネットワークを含み得;そして、アナログ技術、デジタル技術、光技術、無線技術(例えばブルートゥース(登録商標))、ネットワーキング技術及びインターネットワーキング技術を含むが決してそれらに限定されない通信技術を採用し得る。
【0147】
デバイスは通信プロトコル及びメッセージ(例えばデバイスにより生成、送信、受信、格納及び/又は処理されるメッセージ)を使用し得、このようなメッセージは通信ネットワーク又は媒体により運ばれ得るということにも注意すべきである。
【0148】
文脈が要求しない限り、本発明はいかなる特定通信メッセージタイプ、通信メッセージフォーマット又は通信プロトコルへも限定されるものと解釈されるべきでない。したがって、通信メッセージは通常、限定しないが、フレーム、パケット、データグラム、ユーザデータグラム、セル又は他のタイプの通信メッセージを含み得る。
【0149】
文脈が必要としない限り、特定通信プロトコルへの参照は例示的であり、したがって代替実施態様が必要に応じてこのような通信プロトコルの変形(例えば、折々になされ得るプロトコルの修正又は拡張)又は知られた又は将来開発されるかのいずれかの他のプロトコルを採用し得るということを理解すべきである。
【0150】
論理的流れは、本発明の様々な態様を実証するために本明細書において説明され得、そして本発明をいかなる特定論理的流れ又は論理的実施に制限するように解釈されるべきでないということにも注意すべきである。説明された論理は、結果全体を変更することなく又はそうでなければ本発明の真の範囲から逸脱することなく様々な論理ブロック(例えばプログラム、モジュール、機能又はサブルーチン)へ分割され得る。
【0151】
しばしば、論理素子は、結果全体を変更することなく又はそうでなければ本発明の真の範囲から逸脱することなく、異なる順序で追加、修正、省略、実行されてもよいし、様々な論理構造(例えば論理ゲート、ルーピングプリミティブ、条件付き論理及び他の論理構造)を使用して実施されてもよい。
【0152】
本発明は、プロセッサ(例えばマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ又は汎用コンピュータ)と共に使用されるコンピュータプログラムロジック、プログラマブルロジックデバイス(例えばフィールドプログラマブルゲートアレイ(FPGA)又は他のPLD)と共に使用されるプログラマブルロジック、個別部品、集積回路系(例えば特定用途向け集積回路(ASIC))、又はそれらの任意の組み合せを含む任意の他の手段を含むがそれに決して制限されることなく多くの異なる形式で具現化され得る。説明された機能の一部又はすべてを実施するコンピュータプログラムロジックは通常、コンピュータ実行可能形式へ変換される一組のコンピュータプログラム命令として実現され、コンピュータ可読媒体などの中に格納され、オペレーティングシステムの制御下でマイクロプロセッサにより実行される。説明された機能の一部又はすべてを実施するハードウェアベースロジックは1つ又は複数の適切に構成されたFPGAを使用して実現され得る。
【0153】
本明細書において先に説明された機能の一部又はすべてを実施するコンピュータプログラムロジックは、ソースコード形式、コンピュータ実行可能形式、及び様々な中間形式(例えばアセンブラ、コンパイラ、リンカ、又はロケータにより生成される形式)を含むが決してそれらに限定されない様々な形式で具現化され得る。
【0154】
ソースコードは、様々なオペレーティングシステム又はオペレーティング環境と共に使用される様々なプログラミング言語(例えばオブジェクトコード、アセンブリ言語、又はフォートラン、C、C++、JAVA(登録商標)又はHTMLなどのハイレベル言語)のうちの任意のものにおいて実施される一連のコンピュータプログラム命令を含み得る。ソースコードは様々なデータ構造及び通信メッセージを定義し使用し得る。ソースコードはコンピュータ実行可能形式(例えばインタープリタを介した)であってもよいし、コンピュータ実行可能形式へ変換されてもよい(例えば変換器、アセンブラ又はコンパイラを介し)。
【0155】
本発明の実施形態の操作を行うためのコンピュータ実行可能プログラムコードは、Java(登録商標)、Perl、Smalltalk、C++などのオブジェクト指向、スクリプト型又は非スクリプト型プログラミング言語で書かれ得る。しかし、本発明の実施形態の操作を行うためのコンピュータプログラムコードはまた、「C」プログラミング言語又は同様なプログラミング言語などの従来の手順型プログラミング言語で書かれ得る。
【0156】
本明細書において先に説明された機能のすべて又は一部を実施するコンピュータプログラムロジックは、単一プロセッサ(例えば同時に)上で様々な時刻に実行されてもよいし、マルチプロセッサ上で同じ又は異なる時刻に実行されてもよいし、単一オペレーティングシステムプロセス/スレッド又は様々なオペレーティングシステムプロセス/スレッド下で実行してもよい。
【0157】
したがって、用語「コンピュータプロセス」は通常、様々なコンピュータプロセスが同じ又は異なるプロセッサ上で実行されるかどうかにかかわらずそして様々なコンピュータプロセスが同じ又は異なるオペレーティングシステムプロセス/スレッド下で実行するかにかかわらず一組のコンピュータプログラム命令の実行を指す。
【0158】
コンピュータプログラムは、半導体メモリデバイス(例えばRAM、ROM、PROM、EEPROM又はフラッシュプログラマブルRAM)、磁気メモリデバイス(例えばディスケット又は固定ディスク)、光メモリデバイス(例えばCD-ROM)、PCカード(例えばPCMCIAカード)又は他のメモリデバイスなどの有形ストレージ媒体内に恒久的に又は一時的にかのいずれかで任意の形式(例えばソースコード形式、コンピュータ実行可能形式又は中間形式)で固定され得る。
【0159】
コンピュータプログラムは、アナログ技術、デジタル技術、光技術、無線技術(例えばブルートゥース(登録商標))、ネットワーキング技術及びインターネットワーキング技術を含むが決してそれらに限定されない様々な通信技術のうちの任意のものを使用することによりコンピュータへ送信可能である信号内に任意の形式で固定され得る。
【0160】
コンピュータプログラムは、添付の印刷又は電子文書(例えば市販のソフトウェア)を有する着脱可能ストレージ媒体として任意の形式で分散されてもよいし、コンピュータシステムにより予めロードされてもよいし(例えばシステムROM又は固定ディスク上に)、通信システム(例えばインターネット又はWorld Wide Web)全体にわたってサーバ又は電子掲示板から分散されてもよい。
【0161】
本明細書において先に説明された機能のすべて又は一部を実施するハードウェアロジック(プログラマブルロジックデバイスと共に使用されるプログラマブルロジックを含む)は、伝統的手動方法を使用して設計されてもよいし、コンピュータ支援設計(CAD)、ハードウェア記述言語(例えばVHDL又はAHDL)又はPLDプログラミング言語(例えばPALASM、ABEL又はCUPL)などの様々なツールを電子的に使用することにより設計、捕捉、シミュレート、又は文書化されてもよい。
【0162】
任意の好適なコンピュータ可読媒体が利用され得る。コンピュータ可読媒体は、例えば限定しないが電子、磁気、光、電磁気、赤外線、又は半導体システム、装置、デバイス又は媒体であり得る。
【0163】
コンピュータ可読媒体のより具体的な例は、限定しないがポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、コンパクトディスク読み出し専用メモリ(CD-ROM)又は他の光学的又は磁気的ストレージデバイスなどの1つ又は複数の有線又は他の有形ストレージ媒体を有する電気接続を含む。
【0164】
プログラマブルロジックは、半導体メモリデバイス(例えばRAM、ROM、PROM、EEPROM又はフラッシュプログラマブルRAM)、磁気メモリデバイス(例えばディスケット又は固定ディスク)、光メモリデバイス(例えばCD-ROM)又は他のメモリデバイスなどの有形ストレージ媒体内に恒久的に又は一時的にかのいずれかで固定され得る。
【0165】
プログラマブルロジックは、アナログ技術、デジタル技術、光技術、無線技術(例えばブルートゥース(登録商標))、ネットワーキング技術及びインターネットワーキング技術を含むが決してそれらに限定されない様々な通信技術のうちの任意のものを使用することによりコンピュータへ送信可能である信号内に固定され得る。
【0166】
プログラマブルロジックは、添付の印刷又は電子文書(例えば市販のソフトウェア)を有する着脱可能ストレージ媒体として分散されてもよいし、コンピュータシステムにより予めロードされてもよいし(例えばシステムROM又は固定ディスク上に)、通信システム(例えばインターネット又はWorld Wide Web)全体にわたってサーバ又は電子掲示板から分散されてもよい。当然、本発明のいくつかの実施形態は、ソフトウェア(例えばコンピュータプログラム製品)とハードウェアとの両方の組み合せとして実現され得る。依然として、本発明の他の実施形態は完全にハードウェア又は完全にソフトウェアとして実現される。
【0167】
いくつかの例示的実施形態が添付図面において説明され示されたが、このような実施態様は、上記段落に記載されたものに加えて様々な他の変更、組み合せ、省略、修正及び置換が可能であるので、単に例示的であり、広範な発明に限定されるものではないということと本発明の実施態様は示され説明された特定構造及び配置に限定されないということとを理解すべきである。
【0168】
当業者は、今説明された実施態様の様々な適合化、修正、及び/又は組み合せが本発明の範囲及び精神から逸脱すること無く構成され得るということを理解することになる。したがって、本発明は本明細書において具体的に説明されるやり方以外のやり方で添付の特許請求の範囲内で実施され得るということを理解すべきである。例えば、明示的に述べられない限り、本明細書において説明されるプロセスの工程は本明細書において説明されるものとは異なる順序では行われ得、1つ又は複数の工程は組み合わせられ、分割され、同時に行われ得る。
【0169】
当業者は、本明細書において説明される本発明の実施形態の様々な態様が本発明の他の実施態様を形成するために組み合わせられ得るということも本開示に照らして理解するようになる。