(57)【特許請求の範囲】
【請求項１】
データストレージシステムのサーバが実行する方法であって、
データストレージシステムにおいて、データの重要度に対応する信頼性数値をデータの複数の論理コンテナの各々に割り振るステップであって、前記論理コンテナは物理的ストレージ装置のブロックに関連付けられる論理的な単位を表す、ステップと、
前記データの複数の論理コンテナの各々に対して、データを格納するための複数の物理的ストレージ装置のブロックを割り当てるステップであって、複数の物理的ストレージ装置の当該ブロックは複数の物理的ストレージ装置の複数のパリティグループのうちの特定のパリティグループから選択され、複数の物理的ストレージ装置の所与のブロックに対する前記特定のパリティグループは、複数の物理的ストレージ装置の前記所与のブロックに対応するデータの論理コンテナと関連付けられた前記信頼性数値に従って選択される、ステップと、
複数のパリティグループ信頼性数値のうちの特定の１つを、前記複数のパリティグループの各々に割り振るステップであって、所与のパリティグループに割り振られる特定のパリティグループ信頼性数値は、前記所与のパリティグループにおける複数の物理的ストレージ装置の１つ又は複数のブロックと関連付けられた、対応する信頼性数値を示す、ステップと、
を備える方法。
【請求項２】
前記信頼性数値を、前記データストレージシステムと関連付けられたサービスレベル目標（ＳＬＯ）に基づいて、前記データの複数の論理コンテナの各々に割り振るステップをさらに備える請求項１記載の方法。
【請求項３】
前記データの複数の論理コンテナのうちの論理コンテナに対して、前記データの論理コンテナと関連付けられたデータの重要度に基づいて、特定の信頼性数値を、前記データの論理コンテナに割り振るステップをさらに備える請求項１記載の方法。
【請求項４】
前記データの複数の論理コンテナのうちの論理コンテナに対して、前記データストレージシステムのインタフェースを介してユーザにより提供される入力に基づいて、特定の信頼性数値を、前記データの論理コンテナに割り振るステップをさらに備える請求項１記載の方法。
【請求項５】
データの論理コンテナと関連付けられた前記信頼性数値が、前記データの論理コンテナと関連付けられたメタデータに加えられる、請求項１記載の方法。
【請求項６】
前記データストレージシステムにおいて、前記データストレージシステムの複数の物理的ストレージ装置の前記複数のブロックに対応する前記複数の物理的ストレージ装置のうちの少なくとも１つに対してメンテナンスの操作を遂行する要求を受信するステップと、
優先順位がつけられた順序に従って前記少なくとも１つの物理的ストレージ装置の各々に対して前記操作を遂行するステップであって、前記優先順位がつけられた順序は前記少なくとも１つの物理的ストレージ装置に対応する前記複数のパリティグループに割り振られた前記複数のパリティグループ信頼性数値に基づいて決定される、ステップと、
をさらに備える請求項１記載の方法。
【請求項７】
前記操作は、前記少なくとも１つの物理的ストレージ装置に関連するバックグランドのメンテナンスの操作である請求項６記載の方法。
【請求項８】
前記操作は、前記少なくとも１つの物理的ストレージ装置の障害後再構築である請求項６記載の方法。
【請求項９】
各パリティグループの前記割り振られるパリティグループ信頼性数値が、前記パリティグループと関連付けられたメタデータに加えられる、請求項１記載の方法。
【請求項１０】
データを格納するための複数の物理的ストレージ装置を有するデータストレージシステムにおいて、データの重要度に対応する複数の信頼性数値のうちの１つを複数の物理的ストレージ装置の複数のパリティグループの各々に割り振るステップであって、所与のパリティグループに割り振られる特定の信頼性数値は、前記所与のパリティグループに含まれる複数の物理的ストレージ装置の１つ又は複数のブロックと関連付けられた、対応する信頼性数値を示す、ステップと、
前記データストレージシステムにおいて、前記データストレージシステムの前記複数の物理的ストレージ装置のうちの少なくとも１つに対してメンテナンスの操作を遂行する要求を受信するステップと、
前記少なくとも１つの物理的ストレージ装置と関連付けられた前記複数のパリティグループに割り振られた前記複数の信頼性数値に基づいて決定される優先順位がつけられた順序に従って、前記少なくとも１つの物理的ストレージ装置の各々に対して前記操作を遂行するステップと、
を備える方法。
【請求項１１】
前記操作は、最も高い信頼性数値を有するパリティグループに属する１つ又は複数の物理的ストレージ装置に対してまず遂行される、
請求項１０記載の方法。
【請求項１２】
複数の物理的ストレージ装置の前記１つ又は複数のブロックの各々は、データの特定の論理コンテナに対応し、
複数の物理的ストレージ装置の前記１つ又は複数のブロックの各々と関連付けられた前記信頼性数値は、データの対応する論理コンテナと関連付けられた論理コンテナ信頼性数値に基づく、
請求項１０記載の方法。
【請求項１３】
前記データストレージシステムと関連付けられたサービスレベル目標（ＳＬＯ）に基づいて、特定の論理コンテナ信頼性数値をデータの各論理コンテナに割り振るステップをさらに備える請求項１２記載の方法。
【請求項１４】
前記データの所与の論理コンテナと関連付けられたデータの重要度に基づいて、特定の論理コンテナ信頼性数値を、データの所与の論理コンテナに割り振るステップをさらに備える請求項１２記載の方法。
【請求項１５】
前記データストレージシステムの管理コンソールを介してユーザにより提供される入力に基づいて、特定の論理コンテナの信頼性数値を、データの所与の論理コンテナに割り振るステップをさらに備える請求項１２記載の方法。
【請求項１６】
前記操作は、前記少なくとも１つの物理的ストレージ装置に関するバックグランドのメンテナンスの操作である請求項１０記載の方法。
【請求項１７】
前記操作は、前記少なくとも１つの物理的ストレージ装置の障害後再構築である請求項１０記載の方法。
【請求項１８】
ネットワークを介して複数のネットワークストレージクライアントが通信する場合に当該通信が経由するネットワークアダプタと、
不揮発性大容量ストレージサブシステムにアクセスする場合に当該アクセスが経由するストレージアダプタと、
前記ネットワークアダプタ及び前記ストレージアダプタと結合されるプロセッサと、を備え、
前記プロセッサは、
データの重要度に対応する信頼性数値をデータの複数の論理コンテナの各々に割り振ることであって、前記論理コンテナは物理的ストレージ装置のブロックに関連付けられる論理的な単位を表す、こと；
前記データの複数の論理コンテナの各々に対して、データを格納するための複数の物理的ストレージ装置のブロックを割り当てること；及び
複数のパリティグループ信頼性数値のうちの特定の１つを前記複数のパリティグループの各々に割り振ること；を行うように構成され、
複数の物理的ストレージ装置の前記ブロックは、複数の物理的ストレージの複数のパリティグループのうちの特定のパリティグループから選択され、複数の物理的ストレージ装置の所与のブロックに対する前記特定のパリティグループは、複数の物理的ストレージ装置の前記所与のブロックに対応するデータの論理コンテナと関連付けられた前記信頼性数値に従って選択され、
所与のパリティグループに割り振られる特定のパリティグループ信頼性数値は、前記所与のパリティグループに含まれる複数の物理的ストレージ装置の１つ又は複数のブロックと関連付けられた、対応する信頼性数値を示す、
ネットワークストレージサーバ。
【請求項１９】
前記信頼性数値は、前記不揮発性大容量ストレージサブシステムと関連付けられたサービスレベル目標（ＳＬＯ）に基づいて、前記データの複数の論理コンテナの各々に割り振られる請求項１８記載のネットワークストレージサーバ。
【請求項２０】
特定の信頼性数値は、前記データの所与の論理コンテナと関連付けられたデータの重要度に基づいて、データの所与の論理コンテナに割り振られる請求項１８記載のネットワークストレージサーバ。
【請求項２１】
特定の信頼性数値は、前記ネットワークストレージサーバの管理コンソールを介してユーザにより提供される入力に基づいて、データの所与の論理コンテナに割り振られる請求項１８記載のネットワークストレージサーバ。
【請求項２２】
データの所与の論理コンテナと関連付けられた前記信頼性数値は、前記データの所与の論理コンテナと関連付けられたメタデータコンテナに格納される請求項１８記載のネットワークストレージサーバ。
【請求項２３】
前記プロセッサは、さらに、
前記ネットワークストレージサーバの複数の物理的ストレージ装置の前記複数のブロックに対応する複数の物理的ストレージ装置のうちの少なくとも１つに対するメンテナンスの操作を遂行する要求を受信し、
優先順位がつけられた順序に従って、前記少なくとも１つの物理的ストレージ装置の各々に対して前記操作を遂行し、前記優先順位がつけられた順序は、前記少なくとも１つの物理的ストレージ装置に対応する前記複数のパリティグループに割り振られる前記複数のパリティグループ信頼性数値に基づいて決定されるように構成された請求項１８記載のネットワークストレージサーバ。
【請求項２４】
前記操作は、
前記少なくとも１つの物理的ストレージ装置の障害後再構築、または、
前記少なくとも１つの物理的ストレージ装置に関連するバックグランドのメンテナンスの操作のうちの１つである請求項２３記載のネットワークストレージサーバ。
【請求項２５】
請求項１ないし１７のうち何れか１項に記載の方法をコンピュータに実行させるコンピュータプログラム。
【請求項２６】
請求項２５に記載のコンピュータプログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の少なくとも１つの実施形態はデータストレージシステムに関し、特に、データと関連づけられた信頼性数値に基づいたストレージシステムにおけるデータ割り当て及び復旧の技術に関する。
【背景技術】
【０００２】
ネットワークに基づいたストレージ（又は簡単に「ネットワークストレージ」）は、データをバックアップするため、複数のユーザにアクセス可能な大量のデータの作成するため、及び他の複数の目的のための、一般的な手段である。ネットワークストレージ環境において、ストレージサーバは、データの１つ又は複数の論理コンテナを複数のクライアントに提供（ｐｒｅｓｅｎｔｉｎｇ）又はエクスポート（ｅｘｐｏｒｔｉｎｇ）することで、複数のクライアント（ホスト）システムでデータを利用可能にする。ネットワークアタッチトストレージ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ，ＮＡＳ）及びストレージエリアネットワーク（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ，ＳＡＮ）を含む、種々の形式のネットワークストレージがある。ＮＡＳの文脈においては、ストレージサーバは、複数のクライアントからのファイルレベルの複数の要求を提供し、その一方、ＳＡＮの文脈においては、ストレージサーバはブロックレベルの複数の要求を提供する。いくつかのストレージサーバは、ファイルレベルの複数の要求と、ブロックレベルの複数の要求の両方を提供可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
技術市場は、既存の複数のネットワークストレージ技術に影響を与えるいくつかのトレンドを経験してきた。例えば、磁気記録媒体の密度は、ネットワークストレージシステムにおいて成長を継続している。しかし、スピンドル（ｓｐｉｎｄｌｅ）あたりの１秒毎の入出力操作（ＩＯＰＳ）として測定される、そのような媒体の性能は、同様の成長速度を示してはいない。すなわち、磁気媒体は、そのスピードの高速化の程度よりも速く密度が増加している。結果として、バックアップ、メンテナンス、障害がある複数のドライブの復旧などの複数のデータ操作は、完了するためにより長い時間を要し、無数の機能性及び信頼性の問題をもたらす。例えば、障害があるドライブのより長い復旧時間は、脆弱性の窓（時間帯）をもたらし、その間は新しいデータを保護する能力が損なわれる。さらに、より長い復旧時間に費やされる複数の処理サイクルはまた、ストレージシステムの全体的な性能に影響を与える。
【０００４】
現在、ストレージシステムの下層に位置する物理層は、格納されるデータの意味的理解を有しない。すなわち、例えば、下層の物理層は、作業空間（ｓｃｒａｔｃｈ−ｓｐａｃｅ）に対応するデータと、重要なビジネス情報に対応するデータとを区別しない。その結果、物理層は、区別する努力を行わないか、さもなければ、種々のデータ操作のためにデータに優先順位をつけるための努力を行っていない。意味的理解のこの欠如はさらに、種々のデータ操作と関連する機能性及び信頼性の問題を悪化させる。
【課題を解決するための手段】
【０００５】
ストレージシステムに対するレイアウト及びファイルシステムアーキテクチャ、関連する方法および装置について以下説明する。以下の説明において、それらは総称して「本明細書において説明するシステム」、又は単に「システム」と呼ばれる。本システムは、多数の異なるアプリケーション及び使用事例のために調整可能な、高度に柔軟な複数のデータレイアウトを提供する。数ある特徴の中でも、本システムは、後述されるような、例えば複数の信頼性サービスレベル目標（ｒｅｌｉａｂｉｌｉｔｙ  ｓｅｒｖｉｃｅ  ｌｅｖｅｌ  ｏｂｊｅｃｔｉｖｅｓ、ＳＬＯｓ）に基づいて、複数の論理ストレージ要素（エンティティ）と対応するデータのために複数の物理的ストレージユニットを割り当てることができる。
【０００６】
本システムは、少なくとも１つの実施形態において、信頼性数値を、ストレージシステムのより上位の論理層に位置するデータの論理コンテナそれぞれ（例えばボリューム）に割り振る。１つの実施形態において、信頼性数値は、複数の信頼性ＳＬＯ（ｒｅｌｉａｂｉｌｉｔｙ  ＳＬＯｓ）によって決まる複数の目標に従って割り振られる。他の複数の実施形態において、信頼性数値は、ストレージシステムの管理インタフェースを介してユーザによって割り振られてもよく、または、論理コンテナ内に格納されるデータの種類（Ｔｙｐｅ）に基づいて自動的に割り振られてもよい。
【０００７】
信頼性数値に基づいて、本システムは、論理コンテナに対応するデータを格納するためのストレージシステムの下層の物理的ストレージ層（例えばＲＡＩＤ層）から特定のパリティグループを識別する。パリティグループは、１つ又は複数の共通の保護レベル属性（例えば、パリティ保護レベル、記憶媒体の種類など）を共有する１つ又は複数の物理的ストレージ装置に含まれる複数のストレージ領域の集合である。１つの例示される実施形態において、各「パリティグループ（ｐａｒｉｔｙ  ｇｒｏｕｐ）」は、１つ又は複数の物理的ストレージ装置（例えば、異なる複数のディスクドライブからの複数のスライスの集合）から選択される、複数のストレージ領域すなわち複数のストレージスライスを示すために使用される。当該複数のストレージ領域又は複数のストレージスライスは、データ損失に対する共通のパリティに基づいた保護機構（ｐｒｏｔｅｃｔｉｏｎ  ｓｃｈｅｍｅ）を使用する。所与のデータの論理コンテナのためのパリティグループは、例えば複数の信頼性ＳＬＯによって決まる信頼性数値に基づいて選ばれる。例えば、高い信頼性要求を有する論理コンテナには、最も高い保護レベルを有するパリティグループが割り振られる。この場合、本システムは、割り振られたパリティグループから選択される複数の物理的ストレージブロック内に論理コンテナに対するデータを割り当てる（アロケートする）。複数の実施形態において、本システムは、論理コンテナの信頼性情報を、パリティグループに付加し、また、データが格納される複数の物理的ストレージ装置に付加する。例えば、信頼性レベル情報は、メタデータとしてパリティグループに付加される。
【０００８】
このようにして、下層の物理的ストレージ層は、複数の物理的ストレージ装置に格納されるデータの重要性の意味的理解を有する。すなわち、下層の物理層は、複数の物理的ストレージ装置に格納されるデータを区別して優先順位を付ける能力を有する。したがって、下層の物理的ストレージ層は、付加される信頼性情報の複数の値に基づいて種々のデータ操作（例えば、複数のバックアップ操作、複数のデータ復旧操作）に優先順位を付けることが可能である。１つの例は、障害がある物理的データ要素（例えば、障害があるディスクドライブ）の復旧である。物理的データ要素は、異なる複数のパリティグループに属する複数のストレージブロックすなわち複数のスライスを備えてもよい。したがって、障害がある物理的データ要素（例えば、ディスクドライブ）の復旧に先立って、本システムは、障害がある要素が参加する複数のパリティグループを識別する。それから、本システムは、複数のパリティグループのリストに優先順位をつけて、（例えば複数の信頼性ＳＬＯによって示されるような）最も高い複数の信頼性数値を有する複数のパリティグループに属する物理的ストレージ装置に対してまず復旧処理を遂行する。
【０００９】
このようにして、本システムは、より低い複数の信頼性数値を有する複数の物理的ストレージ装置に対する複数のデータ復旧操作を延期する、又はそうでなければ優先順位を下げる（ｄｅ−ｐｒｉｏｒｉｔｉｚｅ）能力を有する。高い複数の信頼性数値を有する複数のパリティグループに対する複数のデータ復旧操作の優先順位付けは、大幅な性能の改善と大幅な信頼性の改善をもたらす。例えば、再構築又は障害復旧のシナリオにおいて、信頼性に基づいた優先順位づけは、もう１つの物理的ストレージ要素の障害に起因したデータ損失に対する脆弱性の窓（時間帯）を最小化し、また、システムのフォアグラウンドの作業負荷／主要な作業負荷との干渉を低減する。
【００１０】
本技術の他の複数の態様は、添付の図から、及び以下の詳細な説明から明らかとなる。
【図面の簡単な説明】
【００１１】
【図１】本発明が実施可能なネットワークストレージ環境（ｎｅｔｗｏｒｋ  ｓｔｏｒａｇｅ  ｅｎｖｉｒｏｎｍｅｎｔ）を示す図。
【図２】本発明が実施可能なクラスタ化されたネットワークストレージ環境（ｃｌｕｓｔｅｒｅｄ  ｎｅｔｗｏｒｋ  ｓｔｏｒａｇｅ  ｅｎｖｉｒｏｎｍｅｎｔ）を示す図。
【図３】１つ又は複数のストレージサーバノード（ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｎｏｄｅ）を実施可能であるストレージコントローラ（ｓｔｏｒａｇｅ  ｃｏｎｔｒｏｌｌｅｒ）のハードウェアアーキテクチャの一例を示す高いレベルのブロック図である。
【図４】ストレージサーバノードのストレージオペレーティングシステム（ｓｔｏｒａｇｅ  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）の一例を示す図。
【図５】本明細書で紹介する技術に従ったデータストレージの種々の層を示す図。
【図６】特定の複数の種類の複数のデータ層の一例を示す図。
【図７】ある実施形態によるストレージマネージャの詳細を示す図。
【図８】ＲＡＩＤグループ（ＲＡＩＤ  ｇｒｏｕｐ）から複数のパリティグループ（ｐａｒｉｔｙ  ｇｒｏｕｐ）がどのように構築されるかを示す図。
【図９】複数のエクステントを含む複数の領域内の積層化の一例を示す。
【図１０】複数のボリュームが、複数の領域内に含まれる複数のコンテントの複数のツリーとして、どのように表現可能かを示す図。
【図１１】ボリュームレベルから下ってＲＡＩＤレベルに至る、種々のデータ層の一例を示す図。
【図１２】複数の論理要素（ｌｏｇｉｃａｌ  ｅｎｔｉｔｉｅｓ）と関連付けられた複数の信頼性数値（ｒｅｌｉａｂｉｌｉｔｙ  ｖａｌｕｅｓ）に従った物理的ストレージ割り当て（ｐｈｙｓｉｃａｌ  ｓｔｏｒａｇｅ  ａｌｌｏｃａｔｉｏｎ）の一例を示す図。
【図１３】複数の論理データ要素と関連付けられた複数の信頼性数値に基づいた複数の物理的ストレージブロックの割り当てのための処理を説明するための図。
【図１４】システムが、優位な優先順位が付けられた複数のデータ操作（ｐｒｉｏｒｉｔｉｚｅｄ  ｄａｔａ  ｏｐｅｒａｔｉｏｎｓ）を遂行する処理の一例を示す図。
【発明を実施するための形態】
【００１２】
本発明の１つ又はそれ以上の実施形態は、添付の図面の図において限定ではなく例示として示され、また、図面において類似の参照符号は同様の構成要素を示す。
【００１３】
本明細書において説明される「実施形態」、「１つの実施形態」などは、特有の特徴、構造、または記載される特性が本発明の少なくとも１つの実施形態に含まれることを意味する。本明細書におけるそのような複数の語句の出現は、必ずしも同一の実施形態を指すものではない。
【００１４】
Ｉ．概要
ストレージシステムは、信頼性に関する複数の考慮事項に基づいて調整されることが可能な、高度に柔軟な複数のデータレイアウトを提供する。システムは、例えば複数の信頼性ＳＬＯによって確立される複数の目標に基づいて、システムのより上位の論理レベルにおいて、複数の信頼性数値を複数の論理コンテナに割り当てる。信頼性数値に基づいて、システムは、論理コンテナに対応するデータを格納するためのシステムの下層の物理的ストレージレベルから、特定のパリティグループを識別する。パリティグループの選択の後、システムは、データをパリティグループ内の複数の物理的ストレージブロックに割り当てる。複数の実施形態において、システムは、信頼性数値情報を、パリティグループとデータを格納する複数の物理的ストレージユニットとに付加する。このようにして、下層の物理層は、論理レベルにおいて格納されるデータに関係する信頼性に関する複数の考慮事項についての意味的理解を備えるようになる。当該意味的理解に基づいて、システムは、複数のパリティグループに付加される複数の信頼性数値に従って複数の物理的ストレージユニットに対する複数のデータ操作（例えば、複数の復旧操作、複数のメンテナンス操作）に優先順位をつける能力を有する。
【００１５】
ＩＩ．システム環境
図１及び図２は、システムが実施可能な、ネットワーク構成を、異なる複数の詳細さのレベルで示す図である。特に、図１はネットワークデータストレージ環境を示し、当該ネットワークデータストレージ環境は、複数のクライアントシステム１０４．１〜１０４．２、ストレージサーバシステム１０２、複数のクライアントシステム１０４．１〜１０４．２およびストレージサーバシステム１０２を接続するコンピュータネットワーク１０６を含む。図１に示すように、ストレージサーバシステム１０２は、少なくとも１つのストレージサーバ１０８と、スイッチングファブリック１１０と、大容量ストレージサブシステム１０５における複数のディスクなどの複数の大容量ストレージ装置１１２とを含む。あるいは、複数の大容量ストレージ装置２１２のうちのいくつか又は全ては、フラッシュ、複数のＳＳＤ、テープストレージなどの他の複数の種類のストレージとすることも可能である。
【００１６】
ストレージサーバ（又は複数のサーバ）１０８は、例えば、ＮｅｔＡｐｐ，  Ｉｎｃから入手可能なストレージサーバ製品のＦＡＳファミリーのうちの１つであってもよい。複数のクライアントシステム１０４．１〜１０４．２はコンピュータネットワーク１０６を介してストレージサーバ１０８に接続され、コンピュータネットワーク１０６はパケット交換方式のネットワーク（ｐａｃｋｅｔ−ｓｗｉｔｃｈｅｄ  ｎｅｔｗｏｒｋ）、例えばローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）とすることができる。さらに、ストレージサーバ１０８は、スイッチングファブリック１１０を介して複数のディスク１１２に接続され、スイッチングファブリック１１０は、例えばファイバー分散データインタフェース（ｆｉｂｅｒ  ｄｉｓｔｒｉｂｕｔｅｄ  ｄａｔａ  ｉｎｔｅｒｆａｃｅ、ＦＤＤＩ）であることが可能である。なお、ネットワークデータストレージ環境内で、任意の他の適切な数の複数のストレージサーバ及び／又は複数の大容量ストレージ装置及び／又は任意の他の適切なネットワーク技術が利用されてもよい。
【００１７】
ストレージサーバ１０８は、（１つまたは複数の）ディスク１１２上のストレージ空間のいくつか又は全てを複数のクライアントシステム１０４．１〜１０４．２から使用可能にする。例えば、複数のディスク１１２の各々は、個別のディスク、多重のディスク（例えばＲＡＩＤグループ）、又は任意の他の適切な（複数の）大容量ストレージ装置として実装可能である。ストレージサーバ１０８は、ネットワークファイルシステム（ＮＦＳ）プロトコル、又はコモンインターネットファイルシステム（ＣＩＦＳ）プロトコルなどの公知の複数のプロトコルに従って、複数のクライアントシステム１０４．１〜１０４．２と通信して、複数のユーザ及び／又は複数のアプリケーションプログラムが複数のディスク１１２上に格納されるデータを使用することを可能にする。ストレージサーバ１０８は、ボリュームとしてディスク１１２上に格納されるデータを複数のクライアントシステム１０４．１〜１０４．２に提供又はエクスポートすることができる。「ボリューム」は、１つ又は複数の物理的大容量ストレージ装置（例えば、複数のディスク）又はその部分を単一の論理ストレージオブジェクト（ボリューム）に組み合わせた、物理的ストレージの抽象化であり、「ボリューム」は単一のファイルシステムなどの単一の管理上の単位として取り扱われる。「ファイルシステム」は、（例えば、複数のボリューム、複数の論理ユニット（ＬＵＮｓ）、複数のディレクトリ、複数のファイルのように）格納されたデータの複数の論理コンテナの構造化された（例えば、階層的な）集合である。なお、「ファイルシステム」は、「ファイル」そのものを含んだりあるいはそれに基づいたりする必要はなく、ファイルシステムは、複数のファイル、複数のディレクトリ、ＬＵＮｓなどの、データの複数の論理コンテナの任意の構造化された集合であることが可能である。本明細書において使用される用語「ブロック」は、所与のストレージシステムによって使用される連続データ（ｃｏｎｔｉｇｕｏｕｓ  ｄａｔａ）の最小のアドレス指定可能な単位である。従来の複数のストレージシステムにおいて、ブロックは一般的に、（必ずしもそうではないが）４ＫＢの長さである。
【００１８】
ストレージサーバ１０８及び大容量ストレージサブシステム１０５の種々の機能及び複数の構成設定は、ネットワーク１０６に結合される管理ステーション１０６から制御されることができる。他の複数の操作の中から、データオブジェクト移行操作は、管理ステーション１０６から開始することができる。
【００１９】
図２は、ネットワークデータストレージ環境を示し、これは図１における環境のより詳細な図を表す。なお、図２のクラスタ化された環境は、本明細書において説明されるシステムが実施可能である環境の一例にすぎない。本明細書において説明されるシステムは、非クラスタ化されたネットワークストレージ環境においても実施可能である。同様に、ここに説明されるシステムは、ストレージサーバ内で実施されることに限定されず、すなわち、当該システムは、本質的に任意の形式の処理システム／コンピューティングシステム（ｐｒｏｃｅｓｓｉｎｇ／ｃｏｍｐｕｔｉｎｇ  ｓｙｓｔｅｍ）において実施可能である。
【００２０】
図２における環境２００は、複数のクライアントシステム２０４（２０４．１〜２０４．Ｍ）と、クラスタ化されたストレージサーバシステム２０２と、複数のクライアントシステム２０４及びクラスタ化されたストレージサーバシステム２０２に接続するコンピュータネットワーク２０６とを含む。図２に示すように、クラスタ化されたストレージサーバシステム２０２は、複数のサーバノード２０８（２０８．１〜２０８．Ｎ）と、クラスタスイッチングファブリック２１０と、複数の大容量ストレージ装置２１２（２１２．１〜２１２．Ｎ）とを含む。複数の大容量ストレージ装置２１２（２１２．１〜２１２．Ｎ）は、説明を簡単にするために以後仮定するように、複数のディスクであることができる。あるいは、複数の大容量ストレージ装置２１２のうちのいくつか又は全ては、フラッシュメモリ、複数のＳＳＤ、テープストレージなどの、他の種類のストレージであることが可能である。なお、複数の大容量ストレージ装置２１２が、各ノード２０８と関連付けられることができる。
【００２１】
複数のノード２０８の各々は、Ｎ−モジュール２１４、Ｄ−モジュール２１６、Ｍ−ホスト２１８（これらの各々は別個のソフトウェアモジュールを使用して実施可能である）、及び複製データベース（Ｒｅｐｌｉｃａｔｅｄ  Ｄａｔａｂａｓｅ、ＲＤＢ）２２０のインスタンス（Ｉｎｓｔａｎｃｅ）を含む、いくつかのモジュールを含むように構成される。例えば、ノード２０８．１は、Ｎ−モジュール２１４．１、Ｄ−モジュール２１６．１、Ｍ−ホスト２１８．１を含み；ノード２０８．Ｎは、Ｎ−モジュール２１４．Ｎ、Ｄ−モジュール２１６．Ｎ、及びＭ−ホスト２１８．Ｎを含み；その他同様である。複数のＮ−モジュール２１４．１〜２１４．Ｍは、複数のノード２０８．１〜２０８．Ｎを、ネットワーク２０６を介してそれぞれ１つ又はそれ以上のクライアントシステム２０４に接続することを可能にする機能を有し、一方、複数のＤ−モジュール２１６．１〜２１６．Ｎはそれぞれ複数のディスク２１２．１〜２１２．Ｎ上に格納されるデータに対するアクセスを提供する。複数のＭ−ホスト２１８は、クラスタ化されたストレージサーバシステム２０２に対して複数の管理機能を提供する。従って、クラスタ化されたストレージサーバ構成における複数のサーバノード２０８の各々は、ストレージサーバの機能性を提供する。
【００２２】
ＲＤＢ２２０は、クラスタ全体を通して複製されたデータベースであり、すなわち、各ノード２０８は、ＲＤＢ２２０のインスタンスを含む。ＲＤＢ２２０の種々のインスタンスは、定期的にアップデートされて、それらを互いに同期させる。ＲＤＢ２２０は、ボリュームロケーションデータベース（Ｖｏｌｕｍｅ  Ｌｏｃａｔｉｏｎ  Ｄａｔａｂａｓｅ、ＶＬＤＢ）（図示せず）を含む、複数のノード２０８の全てによって使用される種々の情報のクラスタワイドストレージ（ｃｌｕｓｔｅｒ−ｗｉｄｅ  ｓｔｏｒａｇｅ）を提供する。ＶＬＤＢは、クラスタにおける各ボリュームのクラスタ内の位置を示すデータベースであり（すなわち、各ボリュームに対して所有しているＤ−モジュール２１６）、また、ＶＬＤＢは、アクセスが要求される任意の所与のボリュームに対する適切なＤ−モジュール２１６を識別するために、複数のＮ−モジュール２１４によって使用される。
【００２３】
複数のノード２０８は、クラスタスイッチングファブリック２１０によって相互接続され、これは例えばギガビットイーサネットスイッチ（Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ  ｓｗｉｔｃｈ）として実施可能である。複数のＮ−モジュール２１４及び複数のＤ−モジュール２１６は協働して、本発明の例示的な複数の実施形態を実施するクラスタ化されたコンピューティング環境の高度に拡張可能（ｈｉｇｈｌｙ−ｓｃａｌａｂｌｅ）な分散ストレージシステムアーキテクチャ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を提供する。なお、図２において等しい数の複数のＮ−モジュール及び複数のＤ−モジュールが示されているが、本明細書において説明される技術の種々の実施形態に従って、異なる数の複数のＮ−モジュール及び／又は複数のＤ−モジュールが用いられてもよい。例えば、複数のＮ−モジュールと複数のＤ−モジュールとの間に１対１対応は必要ない。したがって、１つのＮ−モジュールと１つのＤ−モジュールとを備えてなるノード２０８の記載は、一例に過ぎないものと理解される必要がある。
【００２４】
図３は、複数のストレージサーバノード２０８のうちの１つ又は複数を実施することができるストレージコントローラの例を示す図である。例示的な実施形態において、ストレージコントローラ３０１は、相互接続３９０に接続される１つ又は複数のプロセッサ３１０を含むプロセッササブシステムを含む。ストレージコントローラ３０１はさらに、メモリ３２０と、ネットワークアダプタ３４０と、クラスタアクセスアダプタ（Ｃｌｕｓｔｅｒ  Ａｃｃｅｓｓ  Ａｄａｐｔｅｒ）３７０と、ストレージアダプタ３８０とを含み、これらは全て相互接続３９０によって相互接続される。クラスタアクセスアダプタ３７０は、ノード２０８をクラスタの他の複数のノード２０８に結合するように適合された複数のポートを含む。例示される実施形態において、イーサネット（Ｅｔｈｅｒｎｅｔ）は、クラスタリングプロトコル（Ｃｌｕｓｔｅｒｉｎｇ  Ｐｒｏｔｏｃｏｌ）及び相互接続媒体として使用されるが、他の複数の種類のプロトコル及び複数の相互接続が本明細書において説明されるクラスタアーキテクチャ内で利用されてもよい。分離した別々の複数のストレージシステム又は分離した別々の複数のコンピュータ上で複数のＮ−モジュール及び複数のＤ−モジュールが実施される別の実施形態においては、クラスタアクセスアダプタ２７０は、クラスタの他の複数のＮ−モジュール及び／又は他の複数のＤ−モジュールと通信するＮ−モジュール２１４及び／又はＤ−モジュール２１６によって利用される。
【００２５】
ストレージコントローラ３０１は、ストレージマネージャなどの、好ましくは高いレベルのモジュールを実施するストレージオペレーティングシステム３３０を実行する単一のプロセッサストレージシステム又はマルチプロセッサストレージシステムとして実施可能であり、名前が付けられた複数のディレクトリ、複数のファイル、及び複数のディスク上の複数の仮想ディスク（以後、一般的に「複数のブロック」という。）と呼ばれる特別な複数の種類のファイル情報を論理的に組織化する。例えば、１つのプロセッサ３１０が、ノード２０８上のＮ−モジュール２１４の複数の機能を実行する際、もう１つのプロセッサ３１０がＤ−モジュール２１６の複数の機能を実行することができる。
【００２６】
メモリ３２０は例えば、本発明と関連するソフトウェアプログラムコード及び複数のデータ構造を格納する複数のプロセッサ及び複数のアダプタ３４０，３７０，及び３８０によってアドレス指定可能である複数のストレージ位置（Ｓｔｏｒａｇｅ  Ｌｏｃａｔｉｏｎｓ）を備える。次に、プロセッサ３１０及び複数のアダプタは、ソフトウェアコードを実行して複数のデータ構造を操作するように構成される、複数の処理要素（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔｓ）及び／又は論理回路（Ｌｏｇｉｃ  Ｃｉｒｃｕｉｔｒｙ）を備えてもよい。ストレージオペレーティングシステム３３０は、通例その一部がメモリ内に存在して（複数の）プロセッサ３１０によって実行され、当該ストレージオペレーティングシステム３３０は、（とりわけ）（複数の）プロセッサ３１０を構成することによってストレージコントローラ３０１を機能的に組織し、ノード２０８によって供給されるストレージサービスを支える複数のストレージ操作を起動する。他の処理および種々のコンピュータ読み取り可能なストレージ媒体を含む複数のメモリ実装は、本明細書において説明する技術に関連する複数のプログラム命令の実行および格納に使用されてもよいことは当業者には明白である。
【００２７】
ネットワークアダプタ３４０は複数のポートを含み、ストレージコントローラ３０１を、複数の２点間接続（ポイントツーポイントリンク、Ｐｏｉｎｔ−Ｔｏ−Ｐｏｉｎｔ  Ｌｉｎｋ）、複数のワイドエリアネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、公衆ネットワーク（Ｐｕｂｌｉｃ  Ｎｅｔｗｏｒｋ）（インターネット）又は共有されたローカルエリアネットワーク（Ｓｈａｒｅｄ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して実施される複数の仮想プライベートネットワーク（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋｓ）を介して、１つ又は複数のクライアント２０４に結合させる。ネットワークアダプタ３４０はしたがって、ストレージコントローラ３０１をネットワーク２０６に接続するために必要とされる機械的、電子的及び信号伝達回路を含むことができる。例えば、ネットワーク２０６は、イーサネットネットワーク（Ｅｔｈｅｒｎｅｔ  ｎｅｔｗｏｒｋ）又はファイバーチャンネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、ＦＣ）ネットワークとして実施可能である。各クライアント２０４は、ＴＣＰ／ＩＰなどの所定の複数のプロトコルに従って、データの離散的な複数のフレーム及び複数のパケットを交換することによって、ネットワーク２０６を介してノード２０８と通信可能である。
【００２８】
ストレージアダプタ３８０はストレージオペレーティングシステム３３０と協働して、複数のクライアント２０４によって要求される情報にアクセスする。当該情報は、任意の種類の、書き込み可能ストレージ媒体の付加された配列（アレイ、ａｒｒａｙ）上に格納されてもよい。任意の種類の書き込み可能ストレージ媒体は、磁気ディスク又はテープ、光ディスク（例えば、ＣＤ−ＲＯＭ又はＤＶＤ）、フラッシュメモリ、ソリッドステートディスク（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｉｓｋ、ＳＳＤ）、電子的（Ｅｌｅｃｔｒｏｎｉｃ）なランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）、マイクロエレクトロメカニカルストレージ（Ｍｉｃｒｏ−Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｔｏｒａｇｅ）、及び／又は、データ及びパリティ情報を含む情報を格納するように適合された任意の他の類似の媒体などを含む。しかしながら、本明細書において例示として説明するように、情報は複数のディスク２１２上に格納される。ストレージアダプタ３８０は、従来の高性能のファイバーチャンネル（ＦＣ）リンクトポロジなどの、Ｉ／Ｏ相互接続構成を介して複数のディスクに結合する入力／出力（Ｉ／Ｏ）インタフェース回路を有する複数のポートを含む。
【００２９】
複数のディスク２１２上の情報のストレージは、複数の物理的ストレージ装置の集合にマップする１つ又は複数のストレージボリュームとして実施可能であり、これは１つ又は複数のＲＡＩＤグループに分割可能である。
【００３０】
ストレージオペレーティングシステム３３０は、複数のディスク２１２上に格納されるデータへの複数のクライアントのアクセスを容易にする。ある複数の実施形態において、ストレージオペレーティングシステム３３０は１つ又は複数の可視化モジュールと協働するファイルシステムを実装して、複数のディスク２１２によって提供されるストレージ空間を「可視化」する。ある複数の実施形態において、ストレージマネージャ４６０（図４）は、格納されるデータを論理的に組織する。これについてはさらに詳細後述する。１つの実施形態において、ストレージオペレーティングシステム３３０は、任意位置書き込み（Ｗｒｉｔｅ−Ａｎｙｗｈｅｒｅ）及びコピーオンライト（Ｃｏｐｙ−Ｏｎ−Ｗｒｉｔｅ）の機能を実装する。すなわち、任意のデータ又はメタデータは、任意の空き物理データブロック（Ｆｒｅｅ  Ｐｈｙｓｉｃａｌ  Ｄａｔａ  Ｂｌｏｃｋ）に書き込まれることができ、また、任意の論理データブロックへの変更は常に、元の物理的データブロックの上書きよりもむしろ新しい物理的データブロックに書き込まれる。
【００３１】
図４は、本明細書において説明する複数の技術を用いて使用可能なストレージオペレーティングシステム３３０の例を示す図である。例示される実施形態において、ストレージオペレーティングシステム３３０は、統合されたネットワークプロトコルスタック（Ｎｅｔｗｏｒｋ  Ｐｒｏｔｏｃｏｌ  Ｓｔａｃｋ）を形成するように、又はより一般的には、複数のクライアントがブロック及び複数のファイルアクセスプロトコルを使用してノード上に格納される情報にアクセスするための複数のデータパスを提供するマルチプロトコルエンジン（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｅｎｇｉｎｅ）４１０を形成するように組織化された、多重の機能的な層を含む。マルチプロトコルエンジン４１０はまた、より下層の処理ハードウェアと組み合わせて、Ｎ−モジュール２１４を形成する。マルチプロトコルエンジン４１０は、１つ又はそれ以上のより低いレベルのプロトコルを実施する１つ又は複数のネットワークドライバを含むネットワークアクセス層４１２を含み、処理システムがネットワーク２０６を介して通信することを可能にする。当該ネットワーク２０６は、イーサネット（Ｅｔｈｅｒｎｅｔ）、インターネットプロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、ＩＰ）、トランスポートコントロールプロトコル／インターネットプロトコル（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、ＴＣＰ／ＩＰ）、ファイバーチャンネルプロトコル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｐｒｏｔｏｃｏｌ、ＦＣＰ）、及び／又はユーザデータグラムプロトコル／インターネットプロトコル（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、ＵＤＰ／ＩＰ）などである。マルチプロトコルエンジン４１０はまた、種々の高いレベルのネットワークプロトコルを実施するプロトコル層を含み、当該ネットワークプロトコルは、ネットワークファイルシステム（Ｎｅｔｗｏｒｋ  ｆｉｌｅ  ｓｙｓｔｅｍ、ＮＦＳ）、コモンインターネットファイルシステム（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  ｆｉｌｅ  ｓｙｓｔｅｍ、ＣＩＦＳ）、ハイパーテキストトランスファープロトコル（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ、ＨＴＴＰ）、インターネットスモールコンピュータシステムインタフェース（Ｉｎｔｅｒｎｅｔ  ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ、ｉＳＣＳＩ）などである。さらに、マルチプロトコルエンジン４１０は、複数のＤ−モジュール及び他の複数のＮ−モジュールを用いてクラスタ内通信を実施するクラスタファブリック（Ｃｌｕｓｔｅｒ  ｆａｂｒｉｃ、ＣＦ）インタフェースモジュール４４０ａを含む。
【００３２】
また、ストレージオペレーティングシステム３３０は、バックエンドサーバ４６５を形成するように組織される複数の層の集合（Ｓｅｔ）を含み、当該バックエンドサーバ４６５は、ノード２０８の複数のディスク２１２上に格納される情報にアクセスするための複数のデータパスを提供する。バックエンドサーバ４６５はまた、より下層の処理ハードウェアと組み合わせて、Ｄ−モジュール２１６を形成する。そのために、バックエンドサーバ４６５は、任意の数のボリューム４７２と、ＲＡＩＤシステムモジュール４８０と、ストレージドライバシステムモジュール４９０とを管理するストレージマネージャモジュール４６０を含む。
【００３３】
ストレージマネージャ４６０は主に、ファイルシステム（又は多重のファイルシステム）を管理して、クライアント起動の読み出し要求及び書き込み要求を供給する。少なくとも１つの実施形態において、ストレージマネージャ４６０は、本明細書において説明される、複数のボリューム／複数の領域／複数のエクステント／複数のスラブに基づいた複数のストレージ技術を実施する。ＲＡＩＤシステムモジュール４８０は、ディスクドライバシステム４９０がシリアルＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ、ＳＡＴＡ）、ＳＣＳＩ、又はＦＣプロトコル（ＦＣＰ）などのディスクアクセスプロトコルを実施する間、ＲＡＩＤ−４、ＲＡＩＤ−５、ＲＡＩＤ−ＤＰ、又は非クラスタ化されたＲＡＩＤ（後述）などのＲＡＩＤ冗長プロトコルに従って、複数のボリューム／複数のディスクへ／からの情報の格納（Ｓｔｏｒａｇｅ）及び読み出し（Ｒｅｔｒｉｅｖａｌ）を管理する。
【００３４】
バックエンドサーバ４６５はまた、ＣＦインタフェースモジュール４４０ｂを含み、複数のＮ−モジュール及び／又は他の複数のＤ−モジュールを用いてクラスタ内通信４７０を実施する。複数のＣＦインタフェースモジュール４４０ａ及び４４０ｂは協働して、クラスタにおける複数のＤ−モジュール２１６全体にわたって単一のファイルシステムイメージを提供することができる。従って、クライアント要求を受信するＮ−モジュール２１４の任意のネットワークポートは、クラスタの任意のＤ−モジュール２１６上に位置する単一のファイルシステムイメージ内の任意のデータコンテナにアクセスできる。
【００３５】
複数のＣＦインタフェースモジュール４４０はＣＦプロトコルを実施し、クラスタスイッチングファブリック２１０（図２）を介してクラスタの複数のモジュールの間で複数のファイルシステムコマンドを伝達（Ｃｏｍｍｕｎｉｃａｔｅ）する。そのような伝達は、Ｎ−モジュール（又はもう１つのＤ−モジュール）が複数のコールを発する先であるＣＦアプリケーションプログラミングインタフェース（ＡＰＩ）をエクスポーズ（Ｅｘｐｏｓｅ）するＤ−モジュールによって達成される。そのために、ＣＦインタフェースモジュール４４０は、ＣＦエンコーダ／ＣＦデコーダとして組織されることができる。Ｎ−モジュール２１４上の例えばＣＦインタフェース４４０ａのＣＦエンコーダは、（ｉ）ファイルシステムコマンドを、同一のノード上に存在するＤ−モジュール２１６に伝達するときのローカルプロシージャコール（Ｌｏｃａｌ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ、ＬＰＣ）として、又は、（ｉｉ）コマンドを、クラスタのリモートノード上に存在するＤ−モジュールに伝達するときのリモートプロシージャコール（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ、ＲＰＣ）として、ＣＦメッセージをカプセル化可能である。いずれの場合においても、Ｄ−モジュール２１６上のＣＦインタフェース４４０ｂのＣＦデコーダは、ＣＦメッセージを非カプセル化（Ｄｅ−Ｅｎｃａｐｓｕｌａｔｅ）して、ファイルシステムコマンドを処理する。
【００３６】
ノード２０８の操作において、クライアント２０４からの要求は、ネットワーク２０６を介してノード２０８上に、パケットとして送信されることができ、ここで、当該要求はネットワークアダプタ３４０において受信される（図３）。層４１２のネットワークドライバはパケットを処理し、適切な場合には、ストレージマネージャ４６０に送信する前の付加的な処理のために、当該パケットをネットワークプロトコル及びファイルアクセス層に通過させる。この時点で、ストレージマネージャ４６０は、要求を解釈して、要求されるデータを、もしそれがメモリ３２０に存在しない場合にはＲＡＩＤシステム４８０からの取り込み（Ｌｏａｄ）（読み出し（Ｒｅｔｒｉｅｖｅ））の複数の操作を発生する。ストレージマネージャ４６０は、どのエクステントにおいて、及びどの領域においてデータが存在するのかを決定する。領域はそのようなエクステント（の一部）を受信して、要求されるデータを含む（複数の）スラブを順々に決定する。この場合、要求は、複数の要求を適切な（複数の）ストレージ装置ドライバに発行する前に、どの（複数の）ストレージ装置がデータを保持するのかのさらなる処理及び決定のために、ＲＡＩＤシステムモジュール４８０に手渡される。（複数の）ストレージ装置ドライバは、特定された（複数の）装置からのデータにアクセスして、ノードによって処理するためにメモリにおける要求された（複数の）データブロックを取り込む。要求が完了すると、ノード（及びオペレーティングシステム）は、応答を、ネットワーク２０６を介してクライアント２０４に返す。
【００３７】
上述のストレージオペレーティングシステム３３０を通って「通過」するデータ要求／データ応答（Ｄａｔａ  Ｒｅｑｕｅｓｔ／Ｒｅｓｐｏｎｓｅ）は、ソフトウェア又はファームウェアとしてストレージオペレーティングシステム３３０を実行する汎用プログラマブルハードウェアにおいて実施可能である。変形例として、それは、専用設計（Ｓｐｅｃｉａｌｌｙ  Ｄｅｓｉｇｎｅｄ）のハードウェアにおいて完全に又は部分的に実施可能である。すなわち、本発明の変形例の実施形態において、ストレージオペレーティングシステム３３０のうちのいくつか又は全ては、例えば、１つ又はそれ以上のフィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ、ＦＰＧＡｓ）内、複数のアプリケーション特定用途集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、ＡＳＩＣｓ）内、複数のプログラム可能論理回路（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅｓ、ＰＬＤｓ）内、又はそれらのいくつかの組み合わせ内で実施される論理回路（Ｌｏｇｉｃ  Ｃｉｒｃｕｉｔｒｙ）として実施される。
【００３８】
Ｎ−モジュール２１４及びＤ−モジュール２１６の各々は、ストレージオペレーティングシステム３３０の分離的にスケジュールされた複数のプロセスによって構成された処理ハードウェアとして実施可能である。しかしながら、変形例の実施形態において、複数のモジュールは単一のオペレーティングシステム処理内のコードによって構成された処理ハードウェアとして実施されてもよい。Ｎ−モジュール２１４とＤ−モジュール２１６との間の通信は、従って、例えば、複数のモジュールの間を通過するメッセージを使用することで目的が達成されるが、異なる複数のノードのＮ−モジュールとＤ−モジュールとの間のリモート通信の場合においては、そのようなメッセージの受け渡し（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ）は、クラスタスイッチングファブリック２１０を介して発生する。複数のモジュール（複数の処理）の間で情報を転送するためにストレージオペレーティングシステムによって提供される既知のメッセージの受け渡し機構（Ｍｅｓｓａｇｅ−Ｐａｓｓｉｎｇ  Ｍｅｃｈａｎｉｓｍ）は、プロセス間通信（Ｉｎｔｅｒ  Ｐｒｏｃｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ、ＩＰＣ）機構（Ｍｅｃｈａｎｉｓｍ）である。ＩＰＣ機構とともに使用されるプロトコルは、例示的に、一般的なファイル、及び／又は、ＣＦ  ＡＰＩを構成する複数の方法／複数の関数の集合を備える、ブロックベースの「不可知論」ＣＦプロトコルである。
【００３９】
ＩＩＩ．システム内部機能性及びアーキテクチャ
以下は、例示のシステムの内部機能性及びアーキテクチャの説明であり、これは後述の図１２〜図１４を参照して説明される複数の技術を実施するために用いられる。もちろん、以下のシステムアーキテクチャ及び機能性は、技術が実施されてもよい例示の機構の理解において便宜のみのために定義されることが理解される。異なる複数のアーキテクチャ及び複数の内部機能性を有する他の複数の機構はまた、物理的ストレージから論理ストレージへの階層性（Ｐｈｙｓｉｃａｌ−Ｔｏ−Ｌｏｇｉｃａｌ  Ｓｔｏｒａｇｅ  Ｈｉｅｒａｒｃｈ）（図１２を参照してさらに以下で説明される一般的なアーキテクチャなど）の全体が維持される限り、本明細書において説明される複数の技術を実施するために使用されてもよい。
【００４０】
本明細書において説明されるシステムは、ファイルシステム及びレイアウトエンジンを含む。図５に示すように、１つの実施形態において、本システムは、いくつかの異なるデータ層を提供し、当該いくつかの異なるデータ層は、ＲＡＩＤ層５４の上に位置する（「スラブ割り当て層」とも呼ばれる）アグリゲート層５３と、アグリゲート層５３の上に位置する領域層５２と、領域層５２の上に位置する（「ファイルシステム層」とも呼ばれる）ボリューム層５１とを含む。１つの実施形態において、これらの層は、以下にさらに説明するように、ストレージクラスタにおける各ノード２０８のＤ−モジュール２１６におけるストレージマネージャ４６０（図４）によって実施される。
【００４１】
１つの実施形態において、システムは、複数のＲＡＩＤグループ５０を複数のデータブロックの２次元配列５５に分割し、次いで、これらの配列を「複数のスラブ（Ｓｌａｂｓ）」５６にさらに分割する。複数のスラブ５６は、ＲＡＩＤストライプの複数の境界に沿って定義可能である。複数のブロック配列５５及び複数のスラブ５６は、アグリゲート層５３内に含まれる。システムはさらに、多重の「領域」５７を定義して、データを領域層５２に含める。各領域は、１つ又は複数の論理エクステント５９（簡単のために、図６における領域層５２において示さない）を含むことができる。各エクステント５９に割り当てられたものは、１つ又は複数のスラブ５６の少なくとも一部分であり、これはそのエクステントを含む領域に割り当てられる。
【００４２】
システムはまた、ボリューム層におけるデータの複数の論理コンテナとして、複数のボリューム５８又は複数のファイルシステムを維持する。各ボリューム５８は、１つ又は複数の領域５７からの１つ又は複数の論理エクステント５９を含む。特に、領域層５２は、ボリューム層５１から（従って、複数のクライアント及び複数のユーザから）、種々の領域５７内の複数の論理エクステントの複数のレイアウトを隠す。
【００４３】
種々のスラブ５６は、複数の物理的ストレージ装置の異種プール（Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｐｏｏｌ）から定義可能であり、任意の所与の領域５７は、フラッシュメモリ、複数のソリッドステートドライブ（ＳＳＤｓ）、複数のＨＤＤ（ＨＤＤｓ）などの、２つ又はそれ以上の異なる種類の物理的ストレージ装置の複数のスラブで構成される複数のエクステントを含むことができる。それらの性質により、これらの種類の複数の物理的ストレージ装置は、異なる複数の信頼性特性を有する。したがって、異なる複数の物理的ストレージ装置から定義される複数のスラブは異なる複数の信頼性特性を有する。複数の実施形態において、種々のスラブ５６は、多重の物理的ストレージ装置から選択されるストレージ領域（又は複数のストレージスライス（Ｓｔｏｒａｇｅ  Ｓｌｉｃｅｓ））のブロックを用いて定義され、ここで、複数のストレージ領域は、データ損失に対する共通のパリティに基づく保護機構を使用する。従って、そのような複数の実施形態において、種々のスラブ５６が、それぞれ、特定のパリティグループと対応する。ここで、各スラブは、より上位の複数の層に対応するパリティグループの抽象化として想定されてもよい。
【００４４】
図６は、複数のデータ層の特定の複数の種類の例を示す。領域層５２は、例えば、逐次アクセス領域（Ｓｅｑｕｅｎｔｉａｌ  Ａｃｃｅｓｓ  Ｒｅｇｉｏｎ）と、ランダムアクセス領域（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｒｅｇｉｏｎ）と、種々の他の種類／目的の１つ又は複数の領域とを含むことができる。ボリューム層５１は、例えば、従来のファイルシステムと、バイナリラージオブジェクト（ＢＬＯＢ）ストアと、ＬＵＮと、種々の種類／目的の１つ又は複数のボリュームとを含むことができる。また図６にも示されるように、複数のスラブを取得する複数の物理的ストレージ装置６１は、例えば、ＨＤＤｓ、ＳＳＤｓ、外部のＬＵＮｓ、及びローフラッシュ（Ｒａｗ  Ｆｌａｓｈ）などを含むことができる。
【００４５】
図７は、１つの実施形態に従ったストレージマネージャ４６０の詳細を示す図である。例示される実施形態において、ストレージマネージャ４６０は、ボリュームマネージャ７１と、１つ又は複数のボリュームレイアウトマネージャ７６と、領域マネージャ７２と、１つ又は複数の領域レイアウトマネージャ７３と、スラブマネージャ７４と、複数の領域／複数のエクステントインタフェース７５と、ブロックＩ／Ｏインタフェース７７とを含む。
【００４６】
ボリューム層５１は、ボリュームマネージャ７１によって作成されて管理される。ボリュームマネージャ７１は、複数のボリュームの作成及び削除を取り扱う。ストレージマネージャ４６０は、ボリューム層５１におけるボリュームの各種類に対するボリュームレイアウトマネージャ７６を含む。各ボリュームレイアウトマネージャ７６は、対応するボリュームの種類の内部組織化を実施し、複数のエクステントからの例示としての複数の可視データオブジェクト（例えば、複数のファイル、又はＬＵＮｓ）の組み立てに関与する。それはまた、複数のボリュームの複数のオブジェクト（例えば、典型的な複数のファイルシステムの階層的な複数のパス名、ＬＵＮボリュームに対する複数のＬＵＮ  ＩＤなど）に適切な何らかのネーミングスキームを実施する。
【００４７】
ボリュームマネージャ７１の下は、領域マネージャ７２及び領域レイアウトマネージャ７３であり、これらは複数の領域を提供（Ｐｒｏｖｉｄｅ）して管理（Ｍａｎａｇｅ）する。領域マネージャ７２は、ストレージマネージャ４６０と関連する複数の領域の母集団全体を管理する。それは、個別の複数のエクステントの適切な領域（例えば、特定の複数の特性の物理的ストレージの複数のスラブを含む領域）への割り振りを判断する。領域マネージャ７２はまた、新しい複数の領域がいつ必要とされるか、及びそれらがどの（複数の）種類であるべきかを判断して、それらを生成する。それはまた、複数の領域のサイズ及び空き空間を監視する。例えば、領域マネージャ７２は、領域が過度に拡大していると判断して、当該領域を２つのより小さな領域に分割してもよく、あるいは、領域マネージャ７２は、１つ又は複数のスラブを返すために多くの空き空間を有する領域をスラブ割り当てマネージャ７４に要求してもよい。ボリューム層５１が新しい複数のエクステントを生成する必要がある場合、領域マネージャ７２は、どの複数の領域を複数のエクステントに配置すればよいかを判断する。
【００４８】
ストレージマネージャ４６０は、領域層５２における各領域に対して、分離した領域レイアウトマネージャ７３を生成する。各領域レイアウトマネージャ７３は、対応する領域の内部機能性の管理に関与し、特に領域内のデータの実際の物理的配置の決定に関与する。より具体的には、領域レイアウトマネージャ７３は、個別の複数のエクステントの、対応する領域を作り上げる複数のスラブ内の複数の物理的ストレージブロックへの割り当てを決定する（例えば、それは、対応する領域において格納される複数のエクステントに対する複数のレイアウト決定を行う）。各領域レイアウトマネージャ７３はまた、フォーマット、及びその領域内部のメタデータに対する複数のストレージ位置を管理して決定する。各領域レイアウトマネージャ７３はブロックＩ／Ｏインタフェース７７をＲＡＩＤ層に提供する。
【００４９】
領域／複数のエクステントインタフェース７５は、一方のボリュームマネージャ７１と、他方の領域マネージャ７２及び領域レイアウトマネージャ７３との間の通信を提供する。スラブ割り当てマネージャ７４は、領域マネージャ７２及び領域レイアウトマネージャ７３の下に位置するとともに（ＲＡＩＤ層を実施する）ＲＡＩＤシステムモジュール４８０の上に位置し、複数のスラブの生成及び割り当てに関与する。スラブ割り当てマネージャ７４は、複数の領域レイアウトマネージャ７３からの複数の要求に応答して、複数のスラブを割り当てる。それは、いくつの各種類のスラブが存在するかのグローバルな知識（Ｇｌｏｂａｌ  Ｋｎｏｗｌｅｄｇｅ）を有し、また、それは、特定の種類のスラブが少ない場合に領域マネージャ７２に通知可能であり、このことは領域マネージャ７２がそのような種類の複数のスラブを活用していない（また従って解放可能である）複数の領域を識別することを引き起こす。スラブ割り当てマネージャ７４は、ＲＡＩＤシステムモジュール４８０からの複数のパリティグループを要求し、このことから複数のスラブを区分けする。
【００５０】
１つの実施形態において、ＲＡＩＤ層は「非クラスタ化された（Ｄｅｃｌｕｓｔｅｒｅｄ）」ＲＡＩＤとして実施される。非クラスタ化されたＲＡＩＤは、異種プールにおける個別の複数の物理的装置を複数のストレージ領域又は「複数のスライス」にスライスして次いで複数のスライスを異なる複数の装置から異なる複数のパリティグループに組み立てるＲＡＩＤ実装である。ここで、各パリティグループは、データ損失に対する少なくとも１つの共通のパリティに基づく保護機構を有する複数のスライス又は複数のストレージ領域を備える。複数の実施形態において、各パリティグループ内の複数のスライスは、共通のパリティに基づく保護機構特性に加えて、他の共通の複数の物理的特性（例えば、物理的ストレージ装置の種類）を有してもよい。複数のパリティグループのサイズは、プールにおける複数のストレージ装置の物理的サイズに関係していない。
【００５１】
１つの例示の実施形態において、図８に示すように、複数のパリティグループは、選択される複数のストレージ装置から、又は種々のＲＡＩＤグループからの複数の要素から構成される。例えば、ＲＡＩＤアグリゲート８１０２は、複数のＳＳＤ  ＲＡＩＤ要素８１０４から構成される第１のグループを含んでもよい。第２のＲＡＩＤグループは、複数のＨＤＤ  ＲＡＩＤ８１０４要素から構成されてもよい。複数のディスク（又は、他のそのような複数のストレージ要素）は、種々のＲＡＩＤグループから選択されて、複数のパリティグループに選択的に組み込まれる。例えば、リティグループＡは、データ損失に対する特定のパリティに基づく保護機構（例えば、３＋１ＲＡＩＤ４）を有するＲＡＩＤアグリゲート８１０２の種々のＲＡＩＤグループから選択される複数のディスクの複数のスライスを含んでもよい。同様に、リティグループＢは、複数のＲＡＩＤグループから選択される複数のディスクの複数のスライスを含み、ここで、選択される複数のスライスは、第２の種類のパリティ保護機構を有する。図８において例示的な実施形態に例示されるように、（異なる複数のパリティグループからの）共通のパリティ保護機構を有する複数のディスクの複数のスライスは、異なる複数のパリティグループ（例えば、パリティグループＡ、パリティグループＢなど）から次第に陥られる。
【００５２】
複数のパリティグループの上で、スラブ割り当て層５３は、複数のブロックの複数の２次元配列をとり、それらを、ストライプの複数の境界に沿って、ストレージの非常により小さい複数のスラブに区分けする。スラブにおけるストライプの数は、より下層の物理ストレージの種類に関係する。例えば、複数のＨＤＤスラブは、少なくとも数トラックの長さであってもよく、同時に複数のＳＳＤスラブは少なくとも１つの削除ブロックの長さであってもよい。同時に、複数のスラブは、システムにおける次に高いレベルへ、例えば複数の領域への空間割り当ての基本的単位であるために、相対的に小さく保たれる。
【００５３】
領域は、データの論理的な（仮想化された）複数のエクステントを保持する。各エクステントは単に、領域に格納されるデータ又はメタデータの複数のバイトの範囲であり、エクステント識別子（ＩＤ）を介してアクセスされる。複数のエクステントの参照回数は領域内で維持されて、複数のエクステントの外部的な共有を可能にする。領域内のエクステントのレイアウト及び位置は、エクステントの複数のユーザから（すなわち、複数のボリューム、複数のクライアント、複数のユーザから）隠される。
【００５４】
複数の領域内の複数のエクステントの仮想化は、システムに対するアーキテクチャ面での利点である。典型的な複数のファイルシステムは、データのレイアウトの直接的制御を用いて、データのエクステントの性能、空間効率、及び信頼性を管理する。本明細書で説明するシステムにおいて、期待値が、例えばエクステントのＳＬＯを用いて表現される。領域は、データの位置の詳細、及びＳＬＯがどのように良く評価されるかを完全に隠す。このことは、それらの複数のデータブロックの大部分及び少しの相違を共有することで、非常に類似する複数のエクステントを一緒に圧縮又は格納するなどの複数のアルゴリズムを実施する自由度を領域に与える。
【００５５】
複数の領域の内部構造（Ｉｎｔｅｒｎａｌ  Ｓｔｒｕｃｔｕｒｅ）の孤立は、特定の複数の処理量（Ｗｏｒｋｌｏａｄｓ）に対する領域の複数の内部の組織化を最適化する多重の内部領域レイアウトマネージャ要素の実施を可能にする。異なる複数の領域は、下層のストレージの動的にシフトする組み合わせはもちろん、異なる複数の内部レイアウト及び複数のアルゴリズムを含む、異なる複数の目的のために最適化されることができる。大幅に異なる複数のＳＬＯを有する複数のエクステントは、異なる複数の領域に格納可能である。例えば、図９において、３種類のエクステント、すなわち、ＬＵＮデータ（「Ｌ」）、小さいファイルデータ（「Ｓ」）、及びメタデータ（「Ｍ」）が示される。これらの３種類のエクステントは、３つの特別な領域９１Ａ、９１Ｂ、及び９１Ｃに格納され、当該各３つの領域は各エクステントＩＤをそのストレージにマップするためのそれ自身の内部フォーマットを有する。異なる複数の領域９１Ａ、９１Ｂ、及び９１Ｃはまた、それらの複数のエクステント上の複数のＳＬＯを満たすためのそれらの必要性によって決まるように、複数のストレージスラブの異なる複数の組み合わせを使用する。
【００５６】
システムの最上層はボリューム層５１である。図１０に示すように、複数のボリュームは種々のサイズを有する複数のエクステントの複数のツリーとして構成可能である。最低レベルの複数のエクステントは、ボリュームのデータを保持する一方、最高レベルの複数のエクステントは、より低いレベルの複数のエクステントを組織するメタデータを格納する。図１０の例において、アグリゲートにおける３つのボリューム１２１Ａ、１２１Ｂ、及び１２１Ｃは、各々、複数のエクステントのツリーで作り上げられる。ここで、複数のエクステントは、３つの分離した領域１２２Ａ、１２２Ｂ、及び１２２Ｃにおいて維持される。各ボリュームは、メタデータはもちろんデータを含む。さらに、ボリューム１２１Ｂは、メタデータはもちろんデータの２つの異なるクラスを含むことを見ることができる。データ及びメタデータの異なる複数のクラスは、異なる複数のＳＬＯを有するため、異なる種類の複数の領域に格納される。複数の管理者は、データ管理ソフトウェア（当該ソフトウェアの詳細は本明細書に紹介される複数の技術に密接には関係しない）における複数のオプションを用いて、複数のデータセットに対するそれらの複数の選択を示すことができる。これらの選択は、特定のボリューム１２１Ａ、１２１Ｂ、及び１２１Ｃ及びそれらの中の複数のデータオブジェクトに対する複数の目的（複数の期待値）に変換され、最終的には異なるデータ及び複数のメタデータエクステントに対する複数の目的に変換される。領域レベル５２において、複数のエクステントの性能、空間効率、及び信頼性に関する全ての目的はエクステントのＳＬＯを介して伝達される。
【００５７】
図６を再び参照すれば、システムは異なる複数のボリュームの種類についても可能である。全てのデータ及びメタデータは、複数のファイルに格納され、各ファイルはファイルのｉノード（ｉＮｏｄｅ）（主にメタデータコンテナ）をルート（Ｒｏｏｔ）とする複数のエクステントのツリーである。ｉノードそれ自身は、分離したｉノードファイルの複数のデータエクステントに格納可能である。
【００５８】
以下により詳細に説明するように、メタデータの複数のＳＬＯは、ボリュームがボリュームレベルの複数のメタデータブロックなどの、高いレベルのメタデータを特別に取り扱うことを可能にする。システムは、アグリゲートを起動するに必要とされる高いレベルのメタデータを、特別な目的の複数の領域に格納することができ、高速起動、引き継ぎ、及び高いレベルの修復を可能にする。クリティカルなメタデータを高いレベルのＲＡＩＤ冗長性を有するストレージに格納することによって、システムは、ダウンタイムに関連する修復のための危急（Ｅｘｐｏｓｕｒｅ）を低減できる。
【００５９】
全ての層の階層構造の一例が図１１に示される。ＲＡＩＤシステムモジュール４８０は、複数のＨＤＤ及び複数のＳＳＤの複数のスライスを仮想化された複数のＲＡＩＤグループに組み立てられており、そのような複数のＲＡＩＤグループはアグリゲートに組み立てられている。スラブ割り当て層５３は、複数のスラブにカットする複数のブロックの大きな複数の配列１２７として、これらの複数のパリティグループを監視する。ここで、システムは、複数のパリティグループ１２３が複数のスラブ１２４にスライスされており、そのような複数のスラブ１２４のいくつかは２つの領域１２５に割り当てられている。２つの領域１２５は、それらの上の２つのボリューム１２６からデータ（複数のエクステント）の異なる複数のクラスを保持している。最後に、複数のボリューム１２６におけるデータは、ＣＦインタフェース４４０ｂを介してエクスポートされる（図４）。
【００６０】
データコンテナへのアクセスパスは、従来のファイルシステムにおけるそれと類似であることができる。例えば、各コンテナはその一意的なＩＤによって、ストレージクラスタにおいて同一視可能である。複数のＮ−モジュール２１４は、システムワイドマップ（Ｓｙｓｔｅｍ−Ｗｉｄｅ  Ｍａｐ）（例えば、ＶＬＤＢ）に格納されるコンテナの一意的なＩＤを用いて、データを、適切なＤ−モジュール２１６に送る。
【００６１】
ＩＶ．ＲＡＩＤ／ストレージマネージャインタフェース
１つの実施形態において、ＲＡＩＤ層（より具体的にはＲＡＩＤシステムモジュール４８０）は、その複数のパリティグループのリストを、ストレージマネージャ４６０に伝える。各パリティグループに対して、ＲＡＩＤ層は、複数のパリティグループの幅のストレージマネージャ４６０を通知する。ここで、複数のパリティグループの幅はすなわち、データを保持できる異なる複数の装置にマップされるスライスの数、ブロックの数、ブロックサイズ、物理的装置（例えば、ＨＤＤ、ＳＳＤ）の種類、及び可能性のある部分種類（サブタイプ、ｓｕｂｔｙｐｅ）（例えば、ＲＰＭ、内部トラックなど）である。一般的に、ＲＡＩＤグループ又はアグリゲート内の複数のパリティグループの間で極めて多くの共通点があるため、これは単一の種類のフィールド及びテーブルルックアップを用いて達成可能である。システムは、３つ組（パリティグループＩＤ、スライス番号、ブロックオフセット）を用いてＲＡＩＤに書き込まれている複数のブロックをタグ付けできる。
【００６２】
Ｖ．スラブ
上述のように、スラブ割り当て層５３は、ＲＡＩＤによって供給される複数のパリティグループをとり、それらを、パリティグループのより大きな配列から割り当てられる複数のブロックの、より小さなサブアレイ（Ｓｕｂａｒｒａｙ）である、複数のスラブに区分けする。複数のスラブは、それらのパリティグループから、それらの性能及び信頼性の複数の特徴を継承する。それらは、複数のパリティストライプの範囲としてわりあてられるため、パリティグループ上の全てのスラブの幅はグループ内で一様である。スラブ割り当てにおける自由度は、スラブにおけるストライプの数である。複数のスラブは、標準的なサイズの範囲において生成されることができ、必要に応じて細分又は結合されることができる。回転する媒体（例えば、複数のＨＤＤ）上で、最小のスラブの長さは、トラックサイズの小さな倍数に近づくように選ばれても良く、また、複数のＳＳＤ又はストレージに付加されたフラッシュ上で、最小のスラブの長さは、例えば削除ブロックの長さであってもよい。
【００６３】
ＶＩ．領域
複数の領域は、複数のスラブの集合を使用して参照回数データの複数の論理エクステントを保持する、仮想的な（論理的な）複数のストレージコンテナである。領域は、それに割り当てられる各スラブの少なくともいくつかの物理的及び信頼性の複数の特性を「知る」であろう。当該複数の特性は以下を含む：
−そのような種類のスラブが逐次Ｉ／Ｏ及びランダムＩ／Ｏに対してどの程度効率的か（これはシステムがＨＤＤからフラッシュを区別できる１つの方法である。）。
−アイドルＩ／Ｏサイズ（例えば、複数のディスクスラブに対する、より下層のディスクのトラックサイズ）。
−並列性、すなわち、スラブを作り上げる異なる複数の装置の数。ＲＡＩＤに対しては、これはデータ装置の数となる。
−スラブに対応する信頼性レベル情報（例えば、より下層の複数のストレージブロックに共通に供給されるパリティに基づく保護機構）。
【００６４】
ＶＩＩ．エクステント
（ボリューム内の）ファイルは１つ又はそれ以上の異なる複数の領域内に含まれる１つ又はそれ以上のエクステントから作り上げられる。エクステントはデータの論理的な１片（Ａ  Ｌｏｇｉｃａｌ  Ｐｉｅｃｅ  Ｏｆ  Ｄａｔａ）である。異なる複数のエクステントは異なる複数のサイズであることができる。１つの実施形態において、複数のエクステントは相対的に大きく、例えば、数１０ＭＢのオーダーであることができる。各エクステントに対して、領域はまた、（ｉノードに類似する）エクステントに関するメタデータの集合である「エクステント記述子」を格納する。エクステント記述子は、それが生成されたときエクステントのサイズなどの情報を保つこととなり、また、そのＳＬＯを保つこととなる。エクステント記述子はまた、エクステントにおける複数の論理アドレスから、領域によって管理されるストレージにおける複数の物理アドレスに変換するために、領域レイアウトマネージャ７３によって使用される。これは、従来のブロック指向の複数のファイルシステムによって使用されるツリーに類似するバッファツリーを使用することによって行われる。
【００６５】
図１２〜図１４を参照して説明される複数の技術を実施可能な、上述の内部機能性（Ｉｎｔｅｒｎａｌ  Ｆｕｎｃｔｉｏｎａｌｉｔｙ）及び例示のシステムのアーキテクチャについて以下説明する。上に示すように、上記のシステムアーキテクチャ及び機能性は例示であり、異なる複数のアーキテクチャ及び内部の複数の機能性を有する他の複数のシステムはまた、物理的ストレージから論理ストレージへの階層性（図１２を参照してさらに以下で説明される一般的なアーキテクチャなど）の全体が維持される限り、以下の節で説明される複数の技術を実施するために使用されてもよい。
【００６６】
ＩＸ．信頼性ＳＬＯｓに基づいた物理的ストレージブロックの割り当て
上述のように、本明細書において説明したシステムは、より高いレベルの論理データ（例えば、ボリュームレベルデータ）と関連する信頼性情報に従って、物理層（例えば、ＲＡＩＤ層）におけるデータ割り当てを動的に管理することができる。ここでの主要な原理は、「サービスレベルのストレージシステム」の実施を目指して、システムは、例えば、複数のＳＬＯを使用して、特定の論理要素（例えば、ボリューム、ファイル、ディレクトリなど）を割り当てるために要求される信頼性の種類を決定して、次いで、信頼性に基づいて、論理要素のために、複数の物理的データストレージブロックを割り当てることができる。
【００６７】
複数の実施形態において、システムは、論理要素と関連する信頼性数値に基づいて、論理要素に対応するデータを特定のパリティグループに割り当てる。例えば、複数のＳＬＯは、重要なプロジェクト作業空間（例えば、企業の重要な従業員プロファイル管理プロジェクトに対応するディレクトリ又はボリューム）を表現する複数の論理要素のための高い信頼性要求、及び非重要な及び一時的な複数のストレージ領域（例えば複数の一時的なファイルのための「スクラッチ」空間として指定されるディレクトリ）を表す論理要素のための低い信頼性要求を定義してもよい。システムは、複数の実施形態において、複数の信頼性定義に基づいて、各論理要素に対して、複数の物理的ストレージブロックを割り当てる。例えば、プロジェクト作業空間に対応するデータは、例えば高い保護レベル（例えば、ＲＡＩＤ−ＤＰ）を有するパリティグループから複数の物理的ストレージブロックに割り当てられる。スクラッチ空間に対応するデータは、例えばより低い保護レベル（例えば、ＲＡＩＤ−１）を有するパリティグループから、複数の物理的ストレージブロックに割り当てられる。
【００６８】
特に、割り当てに基づいたそのような信頼性ＳＬＯは、システムに効率的な複数のデータ操作を遂行させることを可能にする。例えば、システムは、種々のパリティグループと関連する信頼性レベルに基づいて、バックグラウンドの複数のメンテナンス操作（例えばディスクの一貫性検査）の実行に優先順位を付ける。例示の実施形態において、種々のパリティグループの信頼性レベルは、複数のパリティグループと関連するメタデータ内で符号化される。所与の物理的ストレージ要素上のバックグラウンドメンテナンス操作の実行に先立ち、システムは、物理的ストレージ要素が参加する複数のパリティグループのリストを回復（Ｒｅｔｒｉｖｅ）し、複数のパリティグループと関連する複数の信頼性レベルに従ってリストを順序づける。従って、システムは、順序づけられたリストに従って複数の操作に優先順位を付ける。優先順位が付けられた操作の１つの実施例において、システムは高い複数の信頼性数値を有する複数のパリティグループ（例えば、複数のパリティグループに備えられる複数のストレージブロック）に対してより頻度の高い複数のバックグラウンドメンテナンス操作を実行してもよく、また、より低い複数の信頼性数値を有する複数のパリティグループに対して不定期の複数のバックグラウンドメンテナンス操作を実行してもよい。このように、システムの複数のリソースは、全ての複数のパリティグループにわたって複数のリソースを一様に消費するかわりに、重要な複数のブロック上の複数のメンテナンス操作の遂行においてより効率的に自由に使用できる。
【００６９】
そのような信頼性ＳＬＯに基づく複数のデータ操作のもう１つの実施形態において、システムは、複数の信頼性レベル又はシステムの種々のパリティグループと関連する複数の値に基づいて、障害がある複数の物理的ストレージ要素（例えば、障害があるドライブ）の再構築に優先順位を付ける。例えば、障害があるドライブを検出すると、システムは、ドライブが参加する複数のパリティグループのリストを識別して、それらの対応する複数の信頼性数値に従って複数のパリティグループを順序づける。最も高い複数の信頼性数値を有する複数のパリティグループにおける複数のストレージブロックはまず再構築される。残っている複数のパリティグループは、複数の信頼性数値に基づいて、優先順位が付けられた順序に従って再構築される。いくつかの例において、再構築はまた、高い信頼性の複数のパリティグループがまず再構築されるように、かつ、低い信頼性の複数のパリティグループがシステムの複数のアイドル時間の間に再構築のためにスケジュールされるように、動的にスケジュールされてもよい。
【００７０】
（例えば、複数の論理要素に対応する複数の信頼性ＳＬＯターゲットに従って、）複数のパリティグループに付加される複数の信頼性レベルに基づいた、複数の操作のそのような信頼性に基づく優先順位が付けられた実行は、複数の物理的ストレージブロックに関連する他の複数のデータ操作（例えば、スナップショット作成、データ重複排除、又は当業者によって理解されるような他のそのような複数の操作）に拡張されてもよいことが理解される。上記の信頼性に基づく複数の操作はさらに、図１２を参照して以下に説明される。
【００７１】
図１２は、複数の論理要素と関連する複数の信頼性数値に従った物理的ストレージ割り当ての例を示す。図１２は、ストレージシステムの複数の論理要素と対応する複数の物理的ストレージ要素との間の相互作用を示す、システムアーキテクチャの高いレベルの例示を表す。非限定的な実施例に関して、図５〜１１を参照して説明された上述の例示的なアーキテクチャは、論理要素から複数の物理的ストレージブロックへ信頼性情報がどのように中継されるかを説明するために用いられる。
【００７２】
システムはまず、信頼性数値情報を、論理層における要素（例えばボリューム１２０２）に付加する。複数の実施形態において、信頼性数値情報は、論理要素に付加されるメタデータとともに格納される。信頼性数値はいくつかの方法のうちの１つの方法で割り振られてもよい。１つの実施形態において、信頼性数値は、ブロック１２３２において示すように、複数のストレージＳＬＯによって確立される複数の目的又は複数のターゲットに基づいて決定される。多数の異なる特性が複数のストレージＳＬＯに保存（キャプチャー、ｃａｐｔｕｒｅ）される間（例えば、遅延、スループット、信頼性、可用性など）、説明を簡単にするために、以下の説明は複数の信頼性ＳＬＯのみをカバーする。ＳＬＯはキーと値の対（Ｋｅｙ−Ｖａｌｕｅ  Ｐａｉｒ）として実施される。複数のＳＬＯは、特有のデータ−種類に基づいて、又はデータが格納された場所に基づいて、複数の信頼性数値を表現する。例えば、複数のＳＬＯは、「ゴールド」の信頼性基準として複数のプロジェクト空間又は複数の作業ディレクトリに格納されるデータを定義してもよく、また、「ブロンズ」の信頼性基準として一時的な「スクラッチ（Ｓｃｒａｔｃｈ）」空間に格納されるデータを定義してもよい。変形例として、又はそのような複数の基準に加えて、複数のＳＬＯは、複数のボリュームに格納される複数のボリュームあるいは論理的データ（例えば、複数のファイル、複数のディレクトリなど）のユーザによって割り振られた複数の設定に基づいて複数のボリュームの順位付けを定義してもよい。１つの実施形態において、従って、ストレージＳＬＯは、ストレージシステムの各高いレベルの論理要素（例えばボリューム１２０２）に対して、信頼性レベルを割り振る。ＳＬＯによって示される信頼性数値は、格納されるか、高いレベルの論理要素１２０２のメタデータに付加される。
【００７３】
複数の実施形態において、複数の信頼性数値は、図１２のブロック１２３４に示すようなストレージシステムのユーザから受信される複数の入力に基づいて、高いレベルの論理要素１２０２に割り振られてもよい。複数の例において、種々のタスク又は複数のユーザに対して種々の論理要素を確立する又は割り当てる管理者は、複数の信頼性数値を、複数の論理要素の各々に、断定的に（無条件に、ｃａｔｅｇｏｒｉｃａｌｌｙ）割り振ってもよい。例えば、管理者は、複数の信頼性数値として順々に格納されてゆく複数のＳＬＯ入力の形式における複数の値を、複数の論理要素のメタデータに割り振ってもよい。複数の例において、管理者は構成されている論理要素の種類を参照して、論理要素と関連するデータの種類に従って信頼性数値を割り振ってもよい。例えば、管理者は、従業員の給与記録を維持するための新しいプロジェクトのためにボリューム１２０４を作成（立ち上げ、ｅｓｔａｂｌｉｓｈ）してもよい。そのようなボリュームに格納されるべきデータの重要性を考慮すると、管理者は、「ゴールド」の信頼性数値をボリュームに割り振ってもよく、そのような信頼性数値はボリューム１２０４のメタデータに付加されるに至る。複数の実施例において、管理者は、ストレージシステムのユーザインタフェースを用いてそのような信頼性数値の割り振りを完遂してもよい。そのようなインタフェースは、ストレージシステムの例えばＭ−ホスト２１８によって与えられてもよい。
【００７４】
他の複数の実施形態において、複数の信頼性数値は、ブロック１２３６に示すように、ボリュームに格納されているデータの種類に基づいて、ボリュームに自動的に割り振られてもよい。さらに、このことは複数のストレージＳＬＯと連動して、又はユーザによって提供される複数の入力の手段によって完遂されてもよい。例えば、ストレージシステムは、論理要素（例えば、ボリューム１２０６）を作る（立ち上げる、ｅｓｔａｂｌｉｓｈｉｎｇ）とき、要素に格納されるデータの種類を決定する。データの種類は例えば供給される可能性がある情報に基づいて決定されてもよく、要求はエンティティ（Ｅｎｔｉｔｙ）を生成するために受信される。データの種類に基づいて、システムは、複数のストレージＳＬＯによって提供される情報を調べてもよく、又は、論理要素（例えば、ボリューム１２０６）に付加されるべき信頼性数値を決定するためにユーザによって提供される入力を調べてもよい。
【００７５】
上述の機構（Ｍｅｃｈａｎｉｓｍ）のうちの１つを用いて、複数の信頼性数値は高いレベルの複数の論理要素に付加される。図１２の例において、ボリューム１２０２及び２０４は、「ゴールド」基準の複数の信頼性数値が割り振られる。なぜならば、それらはそれぞれ、プロジェクト作業空間又はユーザの個人的な作業空間に関するデータを格納するために使用されるためにあるからである。スクラッチ空間として指定されるボリューム１２０６は、「ブロンズ」基準の信頼性数値が割り振られる。結果として生じる複数の物理的ストレージブロックの割り当ては今、複数の論理要素に割り振られる複数の信頼性数値に基づく。高いレベルでは、各論理要素からのデータは、複数の信頼性レベルに基づいて、特有のパリティグループから選択される複数の物理的ストレージブロックに割り振られる。例えば、それらの「ゴールド」の複数の信頼性数値を有するボリューム１２０２及び１２０４は、高い信頼性係数を有するパリティグループから複数のストレージブロックに割り振られる。１つの実施形態において、信頼性係数は、パリティグループが示される保護レベルの機能である。従って、ボリューム１２０２及び１２０４に対応するデータは、例えば、二重パリティ（例えば、ＲＡＩＤ−ＤＰパリティグループ）又は他のそのような高い複数の保護特性を有するパリティグループ１から選択される複数の物理的ストレージブロックに割り当てられる。ボリューム１２０６は、より低い複数の保護特性（例えば、ＲＡＩＤ０パリティグループ）を有するパリティグループ３から複数の物理的ストレージブロックに順々に割り当てられてもよい。
【００７６】
複数の実施形態において、信頼性数値は、複数のパリティグループから選択される複数の物理的ストレージブロックに格納されるデータに基づいて、複数のパリティグループに伝搬される。これを説明するために、「ゴールド」の信頼性数値に対応するデータを格納する複数の物理的ストレージブロックは、上述の例においてパリティグループ１から選択される。従って、「ゴールド」基準の信頼性数値は、パリティグループ１に付加される。１つの実施形態において、そのような信頼性数値情報は、パリティグループと関連するメタデータに付加されてもよい。この方法において、論理要素から複数のパリティグループに伝搬される複数の信頼性数値の効力によって、複数の信頼性数値は、複数のパリティグループに明確に付加される。複数の実施形態において、複数の信頼性数値はまた、各パリティグループに固有の個別の複数のストレージ装置（例えば、複数のストレージディスク）に付加されてもよい。
【００７７】
信頼性情報が論理要素から複数の物理的ストレージブロックに伝搬されてもよいことによる例示の方法は、図５〜図１１を参照して上述した例示的なアーキテクチャを参照して説明される。複数の信頼性数値はまず、ボリューム層５１における個別の複数のボリューム５８に割り振られて付加される。１つの実施形態において、そのような複数の信頼性数値は、複数のボリューム５８と関連するメタデータに付加される。ボリューム層５１はまた、個別の複数のボリューム５８の個別の複数の領域５７へのマッピング（Ｍａｐｐｉｎｇ）及び複数の論理エクステント５９の各領域５７内への位置付け（Ｐｌａｃｉｎｇ）に加えて、ボリュームレベルの複数の信頼性数値を、複数のボリューム５８の対応する複数の領域５７に変換（Ｔｒａｎｓｌａｔｅ）する。各領域の信頼性数値は基本的に、領域が対応するボリュームと同一である。複数の実施形態において、信頼性情報は、各領域と関連するメタデータに格納され、また、複数の領域によって定義される複数の論理エクステントに付加される。複数の領域５７が、アグリゲート層５３から複数のスラブ５６を取得することによってストレージを分配する場合、システムは、複数のストレージＳＬＯに関連するある複数の属性に基づいて、複数のスラブ５６を選択する。例えば、複数のスラブ５６と関連するメタデータは、複数のスラブに特有の複数のストレージブロックの複数の属性を特定する。複数の属性は、例えば、装置の種類（例えば、ＳＳＤ、大容量ＳＡＴＡドライブ等）、複数のＩ／Ｏ帯域幅仕様、保護レベル（ＲＡＩＤ−０、ＲＡＩＤ−１、ＲＡＩＤ−ＤＰ等）、及び他のそのような複数のパラメータなどの複数の属性を特定してもよい。本明細書において説明されるシステムは保護レベル属性に焦点を合わせて、選択される（複数の）スラブに対応するボリュームに対して指定される信頼性レベルと同程度の保護レベルを有するスラブを選択する。例えば、「ＲＡＩＤ−ＤＰ」保護レベル属性を有するスラブは、（「ゴールド」の信頼性数値を有する）ボリューム１２０６に対して選択される。複数の実施形態において、システムは、特有の複数のスラブの選択の決定において、保護レベル属性に加えて他の複数の属性（例えば、ディスクの種類）を考慮してもよい。
【００７８】
（少なくとも保護レベル属性に基づいた）複数のスラブの選択は、システムが、選択される複数のスラブの保護レベル属性に対応するパリティグループから、複数の物理的ストレージ装置を選択することを、効率的に可能にする。例えば、保護レベル属性「ＲＡＩＤ−ＤＰ」を有するスラブは、ＲＡＩＤ−ＤＰ保護レベルを有する複数の物理的ストレージブロックを備える。いくつかの実施例において保護レベル属性「ＲＡＩＤ−ＤＰ」とディスクの種類の属性「ＳＳＤ」とを有するスラブが選択されるとき、そのようなスラブは両方の属性を満たす複数の物理的ストレージブロックを備えるであろう。従って、この方法において、保護レベル属性の選択は、特定のパリティグループからの複数の物理的ストレージ装置の選択を決定づける。システムは、論理要素（例えば、ボリューム層５１からのボリューム）に対応するデータを、（例えば、論理要素と関連するＳＬＯ信頼性数値に基づく）特定のパリティグループから選択される複数の物理的ストレージブロックに格納する。
【００７９】
上述のように、信頼性数値に基づいた複数のパリティグループの割り当てに加えて、システムはまた、論理要素の信頼性数値を、複数の物理的ストレージブロックが選択されるパリティグループと、その上複数の物理的ストレージユニットとの両方に符号化（エンコード、Ｅｎｃｏｄｅ）する。この方法において、信頼性情報は、ストレージシステムのより低い複数のレベル（例えばＲＡＩＤ層レベル５４）において伝搬されて明確に符号化される。この明確な信頼性情報を使用することによって、より低い複数のレベルのストレージシステムは、例えば一貫性検査、バックアップ、複数の再構築スケジュールなどの、複数のデータ操作を、効率的に最適化できる。
【００８０】
図１３は今、複数の論理データ要素と関連する複数の信頼性数値に基づいた複数の物理的ストレージブロックの割り当ての処理を説明する。ステップ１３０２において、システムは論理コンテナ（例えば、ボリューム）をまず識別する。当該論理コンテナは、複数の物理的ストレージブロックが割り当てられる必要があるものである。ステップ１３０４において、システムは、（例えば、事前のユーザ設定に基づいて、前回適用された複数のルールに基づいてなどして、）論理コンテナが関連した信頼性数値を既に有するか否かを識別する。例えば、システムは、論理コンテナと関連するメタデータの問い合せ（クエリ、ｑｕｅｒｙ）を行って、信頼性数値が存在するか否かを決定してもよい。そのような信頼性数値が存在しないとき、ステップ１３０６において、システムは、信頼性数値を識別して論理コンテナに対して割り振る。上述のように、システムは、信頼性ＳＬＯの複数の目的に基づいて、又はユーザ入力に基づいて、又はコンテナが格納のために既に設定されている又は設定されている可能性があるデータの種類に基づいて、論理コンテナに対する信頼性数値を識別してもよい。
【００８１】
処理は次いでステップ１３０８に戻り、ここでは、システムは、（物理的ストレージ要素の層における）特定のパリティグループを識別する。当該特定のパリティグループは、当該特定のパリティグループから複数の物理的ストレージブロックが選択されるべきものである。複数の実施形態において、システムは、論理要素と関連する信頼性レベルに基づいて、そのようなパリティグループを選択する。例えば、ＲＡＩＤ−ＤＰパリティグループは、「ゴールド」の信頼性数値を有する論理コンテナに対して選択され、ＲＡＩＤ０パリティグループは、「ブロンズ」の信頼性数値を有する論理コンテナに対して選択される。特定のパリティグループの選択の後、処理はステップ１３１０に進み、ここでは、論理コンテナに対応するデータは、選択されるパリティグループ内の複数の物理的ストレージブロックに割り当てられる。さらに、ステップ１３１２において、システムは、信頼性数値を、パリティグループと関連するメタデータに付加する。加えて、いくつかの実施例において、システムはまた、信頼性数値を、論理要素と関連する情報を格納する個別の複数の物理的ストレージユニットに付加する。
【００８２】
上述のように、この方法における複数の物理的ストレージブロックの割り当ては、いくつかの利点を有する。例えば、システムは今、複数のパリティグループの複数の信頼性数値に基づいて、優先順位がつけられた順序で、複数のデータ操作（例えば、複数のメンテナンス操作、複数のバックアップ操作、複数の再構築操作など）を遂行する能力を有する。図１４は今、システムがそのような優先順位が付けられた複数のデータ操作を遂行する例示的な処理を示す。ステップ１４０２において、システムは、複数の物理的ストレージユニットに関する、又は物理的データ要素（例えば障害があるドライブ）全体さえにも関する、データ操作を遂行する（例えば、ユーザ入力としての、システム発信のコマンドとしての、中断操作としての、障害復旧操作としての、などの）要求を受信する。
【００８３】
要求の受信に応答して、処理はステップ１４０４に進み、ここでは、システムは、複数の物理的格納ユニット又は物理的データ要素が参加する複数のパリティグループのリストを識別する。その後、ステップ１４０６において、システムは、複数のパリティグループが関連する信頼性数値情報を有するか否かを、（例えば、複数のパリティグループと関連するメタデータを解析することによって）決定する。そのような情報が利用可能でないとき、ステップ１４０８で示されるように、処理はステップ１４１０に移り、ここでは、システムは、ストレージ階層を横断（Ｔｒａｖｅｒｓｉｎｇ）することによって、複数のパリティグループと関連する信頼性数値を識別する。例えば、システムは、複数のパリティグループが付加される複数のスラブと関連するメタデータの問合せを行って、信頼性数値を決定する。これが成功しない場合、システムは、例えばボリューム層まで全てにわたってチェインを横断して、論理要素と関連する信頼性数値を識別する。システムは、関連する複数のパリティグループへの識別された信頼性数値を特定して、次いで、プロセスはステップ１４１２に移る。
【００８４】
ステップ１４１２において、複数のパリティグループの優先順位が付けられた／順序づけられたリストを生成するために、複数のパリティグループのリストはソートされる。例示の実施例において、順序づけられたリストは最初に、「ゴールド」の複数の信頼性数値を有する全ての複数のパリティグループを示し、次いで、「シルバー」の複数のパリティグループ、そして最後に「ブロンズ」複数の信頼性数値を示す。最後に、ステップ１４１４において、システムは、優先順位が付けられたリストに従って、複数の物理的ストレージユニットに対してデータ操作を遂行する。例えば、データ操作は最初に、「ゴールド」に格付けされた複数のパリティグループに属する複数の物理的ストレージユニットに対して遂行される。処理は次いで、「シルバー」に格付けされた複数のパリティグループに属する複数の物理的ストレージユニットに対して遂行され、以下そのように処理が遂行される。データ操作はまた、複数のデータ操作の効率をさらに高めるために、複数のユーザ設定に基づいて、交互に又は選択的に行われてもよい。例えば、障害があるドライブの復旧の間に、「ゴールド」の複数のパリティグループに対応する複数の物理的ストレージユニットは、高い複数の信頼性要求を有する情報へのデータアクセスの衝突を避けるように、明確に再構築されてもよい。しかしながら、「ブロンズ」の複数のパリティグループに属する複数の物理的ストレージユニットの再構築は無期限に押し出されてもよく、又はシステムのアイドルサイクルの間のみに遂行されてもよい。この方法において、信頼性及び効率の両方の目的は、高い信頼性データが複数のデータ操作に対して優先順位を付けることを確実にすることに適合するが、低い信頼性の範囲に対する潜在的に高い性能の複数の操作はアイドルサイクルから押し出される。
【００８５】
上述の複数の技術は、ソフトウェア及び／又はファームウェアによってプログラムされ又は構成されたプログラム可能な回路によって、又は特定用途の回路によって、又はそれらの形式の組み合わせによって、実施可能である。そのような特定用途の回路は（もしあれば）、例えば、１つ又はそれ以上のアプリケーション特定用途集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ、ＡＳＩＣｓ）、プログラム可能論理回路（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅｓ、ＰＬＤｓ）、フィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、ＦＰＧＡｓ）などの、任意の形式であることができる。
【００８６】
本明細書において説明する複数の技術を実施するためのソフトウェア又はファームウェアは、機械により読み取り可能な媒体（Ｍａｃｈｉｎｅ−Ｒｅａｄａｂｌｅ  Ｍｅｄｉｕｍ）上に格納されてもよく、また、１つ又はそれ以上の一般的な目的又は特定の目的の複数のプログラム可能マイクロプロセッサによって実行されてもよい。本明細書において用いられる用語「機械により読み取り可能な媒体」は、機械（例えば、コンピュータネットワーク装置、携帯電話（Ｃｅｌｌｕｌａｒ  Ｐｈｏｎｅ）、個人用デジタル補助装置（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ、ＰＤＡ）、製造装置（Ｍａｎｕｆａｃｔｕｒｉｎｇ  Ｔｏｏｌ）、１つ又はそれ以上のプロセッサを有する任意の装置など）によってアクセス可能な形式の情報を格納可能な任意の機構を含む。例えば、機械によりアクセス可能な媒体（Ｍａｃｈｉｎｅ−Ａｃｃｅｓｓｉｂｌｅ  Ｍｅｄｉｕｍ）は、記録可能媒体／記録不可能媒体（例えば、リードオンリーメモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、ランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）、磁気ディスクス記録媒体（Ｍａｇｎｅｔｉｃ  Ｄｉｓｋ  Ｓｔｏｒａｇｅ  Ｍｅｄｉａ）、光記録媒体（Ｏｐｔｉｃａｌ  Ｓｔｏｒａｇｅ  Ｍｅｄｉａ）、複数のフラッシュメモリ装置（Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｄｅｖｉｃｅｓ））などを含む。
【００８７】
本明細書において用いられる用語「論理」は、例えば、特定の目的の配線で接続された回路（ハードワイヤード回路（Ｈａｒｄｗｉｒｅｄ  Ｃｉｒｃｕｉｔｒｙ））、プログラム可能回路（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｃｉｒｃｕｉｔｒｙ）とともに使用されるソフトウェア及び／又はファームウェア、又はそれらの組み合わせを含むことができる。
【００８８】
本発明は特定の例示的な複数の実施形態を参照して説明されたが、本発明は説明された複数の実施形態に限定されずに、添付の特許請求の範囲の精神の範囲内の修正及び変更を有して実施可能であるということが認識されるであろう。従って、明細書及び図面は、限定的意味よりもむしろ、例示的な意味において考慮されるべきものである。
【００８９】
この出願は２０１１年４月１３日付けで提出された米国出願番号１３／０８６，２６７の優先権を主張し、その内容は参照によって本明細書に組み込まれる。
【図１】
0006050316.tif 000002
【図２】
0006050316.tif 000003
【図３】
0006050316.tif 000004
【図４】
0006050316.tif 000005
【図５】
0006050316.tif 000006
【図６】
0006050316.tif 000007
【図７】
0006050316.tif 000008
【図８】
0006050316.tif 000009
【図９】
0006050316.tif 000010
【図１０】
0006050316.tif 000011
【図１１】
0006050316.tif 000012
【図１２】
0006050316.tif 000013
【図１３】
0006050316.tif 000014
【図１４】
0006050316.tif 000015