(57)【特許請求の範囲】
【請求項１】
スケーラブルプール不揮発性メモリエクスプレス(ＮＶＭｅ)ストレージボックスであって、
第一ＰＣＩ Ｅｘｐｒｅｓｓ(ＰＣＩｅ)スイッチと、
前記第一ＰＣＩｅスイッチに接続される第一スイッチポートと、
第一デバイスポートと、
それぞれが第一ポートと第二ポートを有する第一の複数のＮＶＭｅドライブであって、前記第一の複数のＮＶＭｅドライブの第一ポートが、前記第一ＰＣＩｅスイッチを介して、第一の複数のノードに接続され、前記第一の複数のＮＶＭｅドライブの第二ポートが、前記第一デバイスポートに接続される第一の複数のＮＶＭｅドライブと、
第二ＰＣＩｅスイッチと、
前記第二ＰＣＩｅスイッチに接続される第二スイッチポートと、
第二デバイスポートと、
それぞれが第一ポートと第二ポートを有する第二の複数のＮＶＭｅドライブと、を有し、 
前記第二の複数のＮＶＭｅドライブの第一ポートは、前記第二ＰＣＩｅスイッチを介して、第二の複数のノードに接続され、
前記第二の複数のＮＶＭｅドライブの第二ポートが、前記第二デバイスポートに接続され、
前記第一デバイスポートが、前記第二スイッチポートに接続され、
前記第一スイッチポートが、前記第二デバイスポートに接続され、
前記第一の複数のＮＶＭｅドライブの各ＮＶＭｅドライブが、前記第一ＰＣＩｅスイッチを介して、前記第一の複数のノード間で共有され、
前記第一の複数のＮＶＭｅドライブの各ＮＶＭｅドライブは、前記第二ＰＣＩｅスイッチ、前記第二スイッチポート、および、前記第一デバイスポートの順である接続経路を介して、前記第二の複数のノード間で共有され、および／あるいは、
前記第二の複数のＮＶＭｅドライブの各ＮＶＭｅドライブは、前記第二ＰＣＩｅスイッチを介して、前記第二の複数のノード間で共有され、
前記第二の複数のＮＶＭｅドライブの各ＮＶＭｅドライブは、前記第一ＰＣＩｅスイッチ、前記第一スイッチポート、および、前記第二デバイスポートの順である接続経路を介して、前記第一の複数のノード間で共有されることを特徴とするスケーラブルプールＮＶＭｅストレージボックス。
【請求項２】
スケーラブルプール不揮発性メモリエクスプレス(ＮＶＭｅ)ストレージボックスであって、
第一ＰＣＩ Ｅｘｐｒｅｓｓ(ＰＣＩｅ)スイッチと、
前記第一ＰＣＩｅスイッチに接続される第一スイッチポートと、
第一デバイスポートと、
それぞれが第一ポートと第二ポートを有する第一の複数のＮＶＭｅドライブであって、前記第一の複数のＮＶＭｅドライブの第一ポートが、前記第一ＰＣＩｅスイッチを介して、第一の複数のノードに接続され、前記第一の複数のＮＶＭｅドライブの第二ポートが、前記第一デバイスポートに接続される第一の複数のＮＶＭｅドライブと、
第二ＰＣＩｅスイッチと、
前記第二ＰＣＩｅスイッチに接続され、第二スイッチポート、および、第二デバイスポートから構成される第二インターフェースポートと、
各ＮＶＭｅドライブが、第一ポートと第二ポートを有する第二の複数のＮＶＭｅドライブと、
前記第一スイッチポート、および、前記第一デバイスポートから構成される第一インターフェースポートと、を有し、
前記第一の複数のＮＶＭｅドライブの特定のＮＶＭｅドライブは、前記特定のＮＶＭｅドライブの前記第一ポート、および、前記第一ＰＣＩｅスイッチにより、あるいは、前記特定のＮＶＭｅドライブの前記第二ポート、前記第一インターフェースポート、および、前記第一ＰＣＩｅスイッチを介して、前記第一の複数のＮＶＭｅドライブに接続され、
前記第二の複数のＮＶＭｅドライブの第一ポートが、前記第二ＰＣＩｅスイッチを介して、第二の複数のノードに接続され、
前記第二の複数のＮＶＭｅドライブの第二ポートが、前記第二インターフェースポートに接続され、
前記第二インターフェースポートが、前記第一インターフェースポートに接続され、
前記第二の複数のＮＶＭｅドライブの各ＮＶＭｅドライブが、前記第二ＰＣＩｅスイッチにより、前記第二の複数のノード間で共有され、
前記第二の複数のＮＶＭｅドライブの各ＮＶＭｅドライブが、前記第一ＰＣＩｅスイッチ、前記第一インターフェースポート、および、前記第二インターフェースポートの順である接続経路を介して、前記第一の複数のノード間で共有されることを特徴とするスケーラブルプールＮＶＭｅストレージボックス。
【請求項３】
前記第一の複数のＮＶＭｅドライブの二個以上のＮＶＭｅドライブ は、前記第一の複数のノードの二個以上のノードとともに、高可用性 (ＨＡ)クラスタを生成することを特徴とする請求項１に記載のスケーラブルプールＮＶＭｅストレージボックス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１６年３月７日に出願された「A Scalable Pooled NVMe Storage Box」という名称の米国仮出願第６２／３０４，４８３号の優先権を主張するものであり、参照によりその全体が本願に組み込まれる。
【０００２】
本発明は、概して、電気通信ネットワーク中のストレージシステムに関するものである。
【背景技術】
【０００３】
シリアルＡＴＡ(ＳＡＴＡ)ドライブの容量、および、Advanced Host Controller Interface(ＡＨＣＩ)は、すでに、プロセッサの発展速度を超過している。同時に、絶え間ないデータ量の増加は、さらに効率的なストレージ設計が必要とされる。企業と個人ユーザーのデータストレージと処理速度の需要を満たすため、不揮発性メモリエクスプレス(ＮＶＭｅ)が、データリッチな各種アプリケーションを利用するために、開発された。いくつかのＮＶＭｅソリッドステートドライブ(ＳＳＤ)は、一緒にＮＶＭｅストレージボックス中にプールして、データセンター効率を改善する(たとえば、ＮＶＭｅストレージボックスのＳＳＤ間で電源と冷却ユニットを共有する)。
【０００４】
しかし、ＮＶＭＥストレージボックスの拡張性を改善することは依然として課題である。 
【発明の概要】
【０００５】
本発明の各種実施形態によるシステムと方法は、複数のノード間で共有されるスケーラブルプールＮＶＭｅストレージボックスを有するクラスタアーキテクチャを提供することにより、ラックシステムにおける上述の問題を解決する。スケーラブルプールＮＶＭｅストレージボックスは、ＮＶＭｅドライブ、一つ以上のスイッチ、および、一つ以上のスイッチポートを有する。スケーラブルプールＮＶＭｅストレージボックス中のＮＶＭｅドライブの数量は、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、増加、あるいは、減少させることができる。
【０００６】
従来のストレージシステムにおいて、ＳＡＴＡドライブの帯域幅は、最大で、６００ＧＢｐｓに達する。本発明は、スケーラブルクラスタアーキテクチャは、ＰＣＩ Ｅｘｐｒｅｓｓ(ＰＣＩｅ)によりアクセス可能なＮＶＭｅドライブ(たとえば、ＮＶＭｅソリッドステートドライブ(ＳＳＤ))を有するプールＮＶＭｅストレージボックスのスケーラブルクラスタアーキテクチャを提供する。ＮＶＭｅドライブは、１．５ＧＢｐｓより大きい容量を提供する。たとえば、ＰＣＩｅ Ｇｅｎ２の各レーンは、約５００ＭＢｐｓを提供し、ＰＣＩｅ Ｇｅｎ３の各レーンは、約９８５ＭＢｐｓを提供することができる。×４（例えば、４レーン）スロットは、Ｇｅｎ２で２ＧＢｐｓの帯域幅を提供し、Ｇｅｎ３で４ＧＢｐｓに近い帯域幅を提供することができる。
【０００７】
いくつかの実施形態は、デュアルポートを有するＮＶＭｅドライブを含むスケーラブルプールＮＶＭｅストレージボックスをサポートするスケーラブルクラスタアーキテクチャを提供する。スケーラブルプールＮＶＭｅストレージボックス中のＮＶＭｅドライブの数量は、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、増加、および、減少させることができる。たとえば、スケーラブルプールＮＶＭｅストレージボックスは、第一の複数のＮＶＭｅドライブ、第一スイッチ、第一スイッチポート、および、第一デバイスポートを有する。第一の複数のＮＶＭｅドライブは、それぞれ、第一ポート、および、第二ポートを有する。第一の複数のＮＶＭｅドライブは、ＮＶＭｅドライブに対応する第一ポート、および、第一スイッチを介して、第一の複数のノードに接続される。いくつかの例において、第一スイッチポートと第一デバイスポートが接続される。第一の複数のＮＶＭｅドライブは、ＮＶＭｅドライブに対応する第二ポート、第一デバイスポート、第一スイッチポート、および、第一スイッチを介して、第一の複数のノードに接続される。
【０００８】
スケーラブルプールＮＶＭｅストレージボックスは、小さいフォームファクタ−により、第一の複数のＮＶＭｅドライブの数量を二倍にすることにより、二倍の数量の第一の複数のノード(つまり、第一の複数のノードと第二の複数のノード)をサポートすることができる。たとえば、スケーラブルプールＮＶＭｅストレージボックスが拡大されて、さらに、第二の複数のＮＶＭｅドライブ、第二スイッチ、第二スイッチポート、および、第二デバイスポートを有することができる。第二の複数のＮＶＭｅドライブは、それぞれ、第一ポート、および、第二ポートを有する。第二の複数のノードは、第二スイッチ、および、対応するＮＶＭｅドライブの第一ポートを介して、第二の複数のＮＶＭｅドライブに接続される。いくつかの例において、第二デバイスポートは、第二スイッチポートを介して、第二スイッチに接続される。第二の複数のノードは、第二スイッチ、第二スイッチポート、第二デバイスポート、および、対応するＮＶＭｅドライブの第二ポートを介して、第二の複数のＮＶＭｅドライブに接続される。スケーラブルプールＮＶＭｅストレージボックス中の特定のＮＶＭｅドライブは、第一の複数のノードと第二の複数のノードの任意ノードによりアクセス可能である。つまり、スケーラブルプールＮＶＭｅストレージボックス中のＮＶＭｅドライブは、第一の複数のノードと第二の複数のノード間で共有される。
【０００９】
いくつかの例において、スケーラブルプールＮＶＭｅストレージボックス中のデバイスポート、および、スイッチポートは、単一のインターフェースポートに結合されて、デバイスポートとスイッチポート両方の機能をサポートする。たとえば、一ノードは、特定のＮＶＭｅドライブ、および、単一のインターフェースポートの複数のポートのひとつにより、スケーラブルプールＮＶＭｅストレージボックス中の特定のＮＶＭｅドライブにアクセスすることができる。いくつかの例において、スケーラブルプールＮＶＭｅストレージボックス中の二個以上のＮＶＭｅドライブが、動的に、二個以上のノードに割り当てられて、high availability(ＨＡ)クラスタを生成する。ＨＡクラスタは、最短のダウンタイムで、サーバアプリケーションをサポートするに構成することができる。
【００１０】
いくつかの実施形態は、高帯域幅の単一ポートを有するＮＶＭｅドライブを含むスケーラブルプールＮＶＭｅストレージボックスをサポートするスケーラブルクラスタアーキテクチャを提供する。スケーラブルプールＮＶＭｅストレージボックス中のＮＶＭｅドライブの数量は、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、増加、あるいは、減少させることができる。スケーラブルプールＮＶＭｅストレージボックスは、第一の複数のＮＶＭｅドライブ、第一スイッチ、および、第一インターフェースポートを有する。第一スイッチ、および、第一インターフェースポートが接続される。第一の複数のＮＶＭｅドライブは、それぞれ、単一ポートを有する。第一の複数のＮＶＭｅドライブは、対応するＮＶＭｅドライブの単一ポート、および、第一スイッチを介して、第一の複数のノードに接続される。  
【００１１】
スケーラブルプールＮＶＭｅストレージボックスは、単一ポートを有する第一の複数のＮＶＭｅドライブの数量を二倍にすることにより、二倍の数量の第一の複数のノード (すなわち、第一の複数のノード、および、第二の複数のノード)をサポートすることができる。たとえば、スケーラブルプールＮＶＭｅストレージボックスが拡大されて、さらに、第二の複数のＮＶＭｅドライブ、第二スイッチ、および、第二インターフェースポートを含むことができる。第二スイッチ、および、第二インターフェースポートが接続される。第二の複数のＮＶＭｅドライブの各ＮＶＭｅドライブは、単一ポートを有する。第二の複数のノードは、第二スイッチ、および、対応するＮＶＭｅドライブの第一ポートを介して、第二の複数のＮＶＭｅドライブに接続される。第一インターフェースポート、および、第二インターフェースポートが接続される。スケーラブルプールＮＶＭｅストレージボックス中の任意の特定のＮＶＭｅドライブは、第一の複数のノード、および、第二の複数のノードによりアクセスされる。たとえば、スケーラブルプールＮＶＭｅストレージボックス中の特定のＮＶＭｅドライブは、直接、第一スイッチ、あるいは、第二スイッチを介して、あるいは、第一接続経路(第二スイッチ- 第二インターフェースポート- 第一インターフェースポート)、あるいは、第二接続経路(第一スイッチ- 第一インターフェースポート- 第二インターフェースポート)を介してアクセスされる。
【図面の簡単な説明】
【００１２】
前述の方法、および、本発明のその他の特徴と長所を描写するため、前述の原理のさらに具体的な描写は、添付の図面中で説明される具体的な例によりもたらされる。理解できることは、これらの図面は、本発明の実施形態を説明するためのものであるとともに、本発明の範囲を制限するものではなく、本発明の原理は、図面、および、その付加特徴と詳細によって、説明、および、解釈される。
【００１３】
【図１Ａ】本発明のいくつかの実施形態によるストレージサブシステムとサーバシステムを含む例示的なシステムの概略ブロック図である。
【図１Ｂ】本発明のいくつかの実施形態によるプール-ＮＶＭｅストレージボックスの概略ブロック図である。
【図１Ｃ】本発明のいくつかの実施形態によるプール-ＮＶＭｅストレージボックスの概略ブロック図である。
【図１Ｄ】本発明のいくつかの実施形態によるプール-ＮＶＭｅストレージボックスの概略ブロック図である。
【図１Ｅ】本発明のいくつかの実施形態によるプール-ＮＶＭｅストレージボックスの概略ブロック図である。
【図１Ｆ】本発明のいくつかの実施形態によるプール-ＮＶＭｅストレージボックスの概略ブロック図である。
【図２】本発明のいくつかの実施形態によるスケーラブルプールＮＶＭｅストレージボックスをサポートする例示的な方法を示す図である。
【図３】本発明の各種実施形態による例示的なコンピューティングデバイスを示す図である。
【図４】本発明の各種実施形態による例示的なシステムを示す図である。
【図５】本発明の各種実施形態による例示的なシステムを示す図である。
【発明を実施するための形態】
【００１４】
本発明の各種実施形態は、クラスタアーキテクチャを提供して、複数のノード間で共有されるスケーラブルプールＮＶＭｅストレージボックスをサポートする。スケーラブルプールＮＶＭｅストレージボックスは、ＮＶＭｅドライブ、少なくとも一つのスイッチ、および、少なくとも一つのスイッチポートを有する。スケーラブルプールＮＶＭｅストレージボックス中のＮＶＭｅドライブの数量は、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、増加、あるいは、減少させることができる。
【００１５】
図１Ａは、本発明のいくつかの実施形態によるストレージサブシステム１０２(たとえば、スケーラブルプールＮＶＭｅストレージボックス)、および、複数のノード(たとえば、サーバシステム１０１)を含むシステム１００Ａを示す図である。この例において、ストレージサブシステム１０２は、電源１２０からＡＣ電力を受取り、電力をストレージサブシステム１０２に供給する一つ以上のＰＳＵ１２２、少なくとも一つのスイッチ(たとえば、ＰＣＩｅスイッチ１９０)、複数のストレージＮＶＭｅドライブ(たとえば、１９０１、１９０２、１９０３、および、１９０４)、および、ファブリックコントローラ１０３を備える。ＰＣＩ Ｅｘｐｒｅｓｓ (ＰＣＩｅ)は、グラフィック、および、その他のアドインカードの、並びに、インターフェース（たとえば、Thunderboltインターフェース）の底層データトランスポート層である。ストレージデバイスは、少なくとも一つのＮＶＭｅドライブ(たとえば、ソリッドステートドライブ(ＳＳＤ))を有する。少なくとも一つのスイッチは、それぞれ、ストレージサブシステム１０２の一つ以上のストレージデバイス(たとえば、命令を受信するとともに、それらを対応するストレージデバイスに転送する)を管理するとともに、ネットワーク、管理モジュール、および、ストレージサブシステム１０２中のその他のスイッチにより、リモートデバイスと通信する。コマンドは、読み取り、および、書き込みコマンド、情報要求、あるいは、管理用コマンド(たとえば、ゾーン分けコマンド)を有する。コマンドは、テキストフォーマット、あるいは、ＰＣＩｅインターフェースにすることができる。この例において、スイッチ１９０は、ストレージデバイス１９０１、１９０２、１９０３、および、１９０４を管理するように構成される。
【００１６】
ファブリックコントローラ１０３は、少なくとも一つのスイッチにより、経路通信のロジック、指令、および／あるいは、構成を提供して、複数のストレージＮＶＭｅドライブをサーバシステム１０１に接続する。少なくとも一つのスイッチ中の経路は、ファブリックコントローラ１０３により構成されてもよい。いくつかの例において、ファブリックコントローラ１０３は、適切なオペレーティングシステム(ＯＳ)で実施され、これに限定されないが、Ａｎｄｒｏｉｄ、Ｂｅｒｋｌｅｙ  Ｓｏｆｔｗａｒｅ  Ｄｉｓｔｒｕｂｕｔｉｏｎ(ＢＳＤ)、ｉＰｈｏｎｅ ＯＳ(ｉＯＳ)、Ｌｉｎｕｘ、ＯＳ Ｘ、Ｕｎｉｘ系のリアルタイムオペレーティングシステム(たとえば、ＱＮＸ)、Ｍｉｃｒｏｓｏｆｔ Ｗｉｎｄｏｗｓ、 Ｗｉｎｄｏｗ Ｐｈｏｎｅ、および、ＩＢＭ z／ＯＳを含む。
【００１７】
ストレージサブシステム１０２、および、ファブリックコントローラ１０３は、ネットワークインターフェース(たとえば、シリアルインターフェース)を介して、ハードウェア構成マネージャー１０４と通信する。ハードウェア構成マネージャー１０４は、サーバシステム１０１、並びに、一つ以上の特定のデータセンター、および／あるいは、ネットワーク中の任意の他のデバイスまたはシステムに対するハードウェアおよび構成の詳細などの情報およびデータを維持することができる。たとえば、ハードウェア構成マネージャー１０４は、どのＮＶＭｅドライブが、どのサーバシステム１０１と通信可能に結合するか示すデータを維持する。ハードウェア構成マネージャー１０１は、さらに、どのＮＶＭｅドライブが、サーバシステム１０１と通信可能で結合するのに可用であるかを示すデータを維持する。  
【００１８】
さらに、ハードウェア構成マネージャー１０４は、インストール、除去、および／あるいは、リカバリイベント、および、手順を保存することができる。たとえば、ハードウェア構成マネージャー１０４は、サーバシステム１０１から追加、あるいは、除去される任意の装置、サーバシステム１０１が経験する任意のハードウェアのエラー、サーバシステム１０１により実行される任意のリカバリ工程、サーバシステム１０１、および／あるいは、複数のストレージＮＶＭｅドライブが経験する任意のハードウェア状況、サーバシステム１０１と複数のストレージＮＶＭｅドライブと関連するハードウェア状態情報、パフォーマンス統計、構成データ、リンク、あるいは、経路情報等に関する情報、および、統計を保存する。
【００１９】
この例において、ファブリックコントローラ１０３、および／あるいは、少なくとも一つのスイッチ(たとえば、スイッチ１９０)は、さらに、ハードウェア構成マネージャー１０４とストレージサブシステム１０２間にコマンドラインインターフェース(ＣＬＩ)を提供することができる。ハードウェア構成マネージャー１０４、あるいは、リモートユーザーは、ＣＬＩ、あるいは、ネットワークインターフェースを介してコマンドを入力することができる。ＣＬＩは、これに限定されないが、デジタルコマンド言語(ＤＣＬ)、各種Ｕｎｉｘシェル、マイクロコンピュータの制御プログラム(ＣＰ／Ｍ)、command.com, cmd.exe、および、リソースタイムシェアリングシステム(ＲＳＴＳ)ＣＬＩを含む。リモートデバイス、あるいは、リモートユーザーは、ストレージサブシステム１０２のＣＬＩにログインするとともに、ＣＬＩにより、アプリケーションレイヤプロトコル、および、ストレージサブシステム１０２の複数のストレージデバイス(たとえば、１９０１、１９０２、１９０３、および、１９０４)に関連する複数のポートの入力ゾーンＩＤを使用する。 
【００２０】
いくつかの実施形態において、二個以上のサーバ１０１、および、ストレージサブシステム１０２のスイッチとストレージデバイスは、一ストレージデバイスが故障したときでも、サービスの提供を継続するＨＡクラスにクラスタ化する。ＨＡクラスタがない状況下で、特定のアプリケーションを実行しているサーバがクラッシュする場合、アプリケーションは、クラッシュしたサーバが修復されるまで利用できない。ＨＡクラスタは、サーバ上のハードウェア、あるいは、ソフトウェアの障害を検出するとともに、管理者の介入を必要とせずに、直ちに、ＨＡクラスタ中のその他のサーバ上でアプリケーションを再開する。いくつかの例において、ストレージデバイス(たとえば、ＮＶＭｅドライブ)はデュアルポート装置である。ストレージデバイスの各ポートが、ＨＡアプリケーション中の異なるサーバ１０１に割り当てられる。 
【００２１】
図１Ｂ〜図１Ｆは、本発明のいくつかの実施形態による少なくとも一つのプールＮＶＭｅストレージボックスを有するシステムのブロック図である。図１Ｂにおいて、例示的システム１００Ｂは、複数のノード(すなわち、ノード１０１１、１０１２、１０１３、１０１４、１０１５、１０１６、１０１７、および、１０１８)、および、ＰＣＩｅスイッチ(すなわち、１９１と１９２)、および、複数のストレージデバイス (すなわち、３２個のＮＶＭｅドライブ)を有するプールＮＶＭｅストレージボックスを含む。この例において、複数のストレージデバイスは、それぞれ、二個のポート、第一ポートと第二ポートを有する。複数のストレージデバイスは、複数のストレージデバイスの第一ポート、および、ＰＣＩｅスイッチ１９１を介して、ノード１０１１、１０１２、１０１３、および、１０１４に接続される。複数のストレージデバイスは、さらに、複数のストレージデバイスの第二ポート、および、ＰＣＩｅスイッチ１９２を介して、ノード１０１５、１０１６、１０１７、および、１０１８に接続される。複数のストレージデバイスは、任意のノード１０１１、１０１２、１０１３、１０１４、１０１５、１０１６、１０１７、および、１０１８によりアクセスされる。
【００２２】
図１Ｃは、第一の複数のノード(すなわち、ノード１０１１、１０１２、１０１３、および、１０１４)、および、スケーラブルプールＮＶＭｅストレージボックスを有する例示的システム１００Ｃを示す図である。スケーラブルプールＮＶＭｅストレージボックスは、ＰＣＩｅスイッチ (すなわち、１９１)、および、第一の複数のストレージデバイス(すなわち、１６個のＮＶＭｅドライブ)を有する。この例において、第一の複数のストレージデバイスは、それぞれ、二個のポート、第一ポートと第二ポートを有する。第一の複数のストレージデバイスは、第一の複数のストレージデバイスの第一ポート、および、ＰＣＩｅスイッチ１９１を介して、ノード１０１１、１０１２、１０１３、および、１０１４に接続される。複数のストレージデバイスは、さらに、複数のストレージデバイスの第二ポートを介して、デバイスポート１０２１に接続される。スケーラブルプールＮＶＭｅストレージボックス中のＮＶＭｅドライブの数量は、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、増加、あるいは、減少させることができる。  
【００２３】
たとえば、スケーラブルプールＮＶＭｅストレージボックスは拡大することができ、さらに、第二の複数のストレージデバイス、第二スイッチ、第二デバイスポート、および、第二スイッチポートを含んで、第二の複数のノード(図示しない)をサポートする。第一デバイスポートは第二スイッチポートに接続され、第一スイッチポートは第二デバイスポートに接続される。第一の複数のノード、および、第二の複数のノードの各ノードは、第一の複数のストレージデバイスと第二の複数のストレージデバイス両方を有するスケーラブルプールＮＶＭｅストレージボックス中の任意のストレージデバイスにアクセスすることができる。
【００２４】
図１Ｄは、第一の複数のノード(すなわち、ノード１０１１、１０１２、１０１３、および、１０１４)、および、スケーラブルプールＮＶＭｅストレージボックスを有する例示的システム１００Ｄを示す図である。例示的システム１００ＤのスケーラブルプールＮＶＭｅストレージボックスは、例示的システム１００Ｃのもう一つの構造である。この例において、第一デバイスポート１０２１と第一スイッチポート１０２２が接続される。スケーラブルプールＮＶＭｅストレージボックスの第一の複数のストレージデバイスは、第一の複数のストレージデバイスの第一ポート、および、ＰＣＩｅスイッチ１９１を介して、ノード１０１１、１０１２、１０１３、および、１０１４に接続される。複数のストレージデバイスは、さらに、複数のストレージデバイスの第二ポート、第一デバイスポート、第一スイッチポート、および、ＰＣＩｅスイッチ１９１を介して、ノード１０１１、１０１２、１０１３、および、１０１４に接続される。いくつかの例において、第一デバイスポート１０２１、および、第一スイッチポート１０２２は、単一インターフェースポートに結合されて、第一デバイスポート１０２１と第一スイッチポート１０２２の両方の機能をサポートする。
【００２５】
図１Ｅは、いくつかの実施形態による例示的システム１００Ｃから拡大した例示的システム１００Ｅを示す図である。この例において、スケーラブルプールＮＶＭｅストレージボックスは、ＰＣＩｅスイッチ(すなわち、１９１と１９２)、スイッチポート(すなわち、１０２２と１０２３)、デバイスポート(すなわち、１０２１と１０２３)、および、ストレージデバイス(すなわち、３２個のＮＶＭｅドライブ)を有する。デバイスポート１０２１は、スイッチポート１０２３に接続され、デバイスポート１０２４は、スイッチポート１０２２に接続される。スケーラブルプールＮＶＭｅストレージボックス中の任意の３２個のＮＶＭｅドライブは、直接、ＰＣＩｅスイッチ１９１、あるいは、ＰＣＩｅスイッチ１９２を介して、あるいは、第一接続経路(ＰＣＩｅスイッチ１９１- スイッチポート１０２２- デバイスポート１０２４)、あるいは、第二接続経路(ＰＣＩｅスイッチ１９２- スイッチポート１０２３- デバイスポート１０２１)を介して、ノード１０１１、１０１２、１０１３、１０１４、１０１５、１０１６、１０１７、および、１０１８によりアクセスされる。 
【００２６】
図１Ｆは、いくつかの実施形態による例示的システム１００Ｅを有するラックシステム１００Ｆを示す図である。この例において、ラックシステム１００ＦのスケーラブルプールＮＶＭｅストレージボックスは、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、増加、あるいは、減少させることができる。スケーラブルプールＮＶＭｅストレージボックスは、スイッチポート１０２２、デバイスポート１０２１、および、第一の複数のＮＶＭｅドライブ(すなわち、１６個のＮＶＭｅドライブ)を有する。スケーラブルプールＮＶＭｅストレージボックスは、さらに、 拡大して、スイッチポート１０２３、デバイスポート１０２４、および、第二の複数のＮＶＭｅドライブ(すなわち、１６個のＮＶＭｅドライブ)を含むことができる。スイッチポート１０２２はデバイスポート１０２４に接続され、スイッチポート１０２３はデバイスポート１０２１に接続される。スケーラブルプールＮＶＭｅストレージボックス中の任意の特定のＮＶＭｅドライブ(つまり、３２個のＮＶＭｅドライブのひとつ)は、スケーラブルプールＮＶＭｅストレージボックスに割り当てられたノードによりアクセスされる。  
【００２７】
いくつかの例において、スケーラブルプールＮＶＭｅストレージボックスの二個以上のＮＶＭｅドライブが、二個以上のノードに割り当てられて、ＨＡクラスタを形成する。ＨＡクラスタのノード、あるいは、コンポーネントが故障のときでも、ＨＡクラスタは連続したサービスを提供することができる。ＨＡクラスタは、警告信号、あるいは、ハードウェア／ソフトウェア障害を検出すると、直ちに、任意の管理者が介在することなく、影響を受けた、あるいは、影響を受ける可能性があるアプリケーションを他のノードで再開する。 
【００２８】
図１Ａ〜図１Ｆは、例示的システム１００Ａ〜１００Ｆの特定のコンポーネントのみを示しているが、データを処理、あるいは、保存、あるいは、信号を送受信することができる各種タイプの電子、あるいは、コンピューティングコンポーネントも、例示的システム１００Ａ〜１００Ｆ中に含まれる。さらに、例示的システム１００Ａ〜１００Ｆ中の電子、あるいは、コンピューティングコンポーネントは、各種タイプのアプリケーションを実行する、および／あるいは、各種タイプのオペレーティングシステムを使用することができる。これらのオペレーティングシステムは、これに限定されないが、Ａｎｄｒｏｉｄ、Ｂｅｒｋｅｌｙ  Ｓｏｆｔｗａｒｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ(ＢＳＤ)、ｉＰｈｏｎｅ ＯＳ(ｉＯＳ)、Ｌｉｎｕｘ、ＯＳ Ｘ、Ｕｎｉｘ系のリアルタイムオペレーティングシステム (たとえば、ＱＮＸ)、Ｍｉｃｒｏｓｏｆｔ Ｗｉｎｄｏｗｓ、Ｗｉｎｄｏｗ Ｐｈｏｎｅ、および、ＩＢＭ ｚ／ＯＳを有する。
【００２９】
例示的システム１００Ａ〜１００Ｆに対する所望の実施に応じて、各種ネットワーク、および、メッセージプロトコルが用いられ、これに限定されないが、ＩＰＭＩ、あるいは、Ｒｅｄｆｉｓｈ等を含む。その他の適切なプロトコルを用いて、本発明を実行することもできる。当業者なら理解できるように、図１Ａ〜図１Ｆに示される例示的システム１００Ａ〜１００Ｆは説明のために用いられる。これにより、本発明の各種実施形態によるネットワークプラットフォームの構成が提供される状況下でも、本発明のネットワークシステムに対し、各種適当な変化を実行することができる。 
【００３０】
図１Ａ〜図１Ｆの構成において、ストレージサブシステム１０２は、さらに、特定のワイヤレスチャネルのコンピューティング範囲中の一つ以上の電子装置と操作可能に通信する一つ以上のワイヤレスコンポーネントを有する。ワイヤレスチャネルは、任意の装置に無線通信を実行させることができる適切なチャネル、たとえば、ブルートゥース、セルラー、ＮＦＣ、あるいは、Ｗｉ-Ｆｉチャネルである。注意すべきことは、装置は、当該分野で既知の一つ以上の従来の有線通信接続を有することができる。各種その他の素子、および／あるいは、組み合わせも、各種実施形態の範囲内に含まれる。
【００３１】
前述の内容は、主に、本発明の原理と各種実施形態を説明するためのものである。一旦、本発明の内容を完全に理解すれば、各種変更や修正も容易に理解することができる。
【００３２】
図２は、本発明のいくつかの実施形態によるスケーラブルプールＮＶＭｅストレージボックスをサポートする例示的方法２００を示す図である。この例において、スケーラブルプールＮＶＭｅストレージボックスは、第一の複数のＮＶＭｅドライブを有する。例示的システム１００Ａ〜１００Ｆに示されるように、第一の複数のＮＶＭｅドライブは、それぞれ、第一ポートと第二ポートを有する。注意すべきことは、例示的方法２００は説明の目的であり、および、本発明の技術に基づいて実施されるその他の方法中に、類似の、あるいは、代替の順序で、実行、あるいは、平行処理する追加の、さらに少ない、あるいは、代替の工程を有することである。  
【００３３】
例示的方法２００は、工程２０２から開始され、第一の複数のＮＶＭｅドライブの第一ポートを、スケーラブルプールＮＶＭｅストレージボックスの第一スイッチに接続し、工程２０４において、スケーラブルプールＮＶＭｅストレージボックスの第一デバイスポートと第一スイッチポートを介して、第一の複数のＮＶＭｅドライブの第二ポートを、第一スイッチに接続する。工程２０６において、第一の複数のＮＶＭｅドライブを、第一スイッチを介して、第一の複数のノードに接続する。図１Ｂ〜図１Ｆに示されるように、第一の複数のノード間で、対応するＮＶＭｅドライブの第一ポート、あるいは、第二ポートを介して、第一の複数のＮＶＭｅドライブの各ＮＶＭｅドライブが共有される。いくつかの例において、第一デバイスポート、および、第一スイッチポートは、第一インターフェースポートに結合されて、第一デバイスポートと第一スイッチポート両方の機能をサポートする。
【００３４】
工程２０８において、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、スケーラブルプールＮＶＭｅストレージボックスのＮＶＭｅドライブの数量を増加させるかどうか判断する。工程２１０において、スケーラブルプールＮＶＭｅストレージボックスのＮＶＭｅドライブの数量を増加させる必要がないと判断するとき、例示的方法２００は終了する。 
【００３５】
工程２１２において、スケーラブルプールＮＶＭｅストレージボックスを増加して、第二の複数のノードをサポートする必要があると判断するとき、例示的方法２００は、さらに、第二の複数のＮＶＭｅドライブの第一ポートを、第二スイッチに接続するとともに、工程２１４において、第二デバイスポートと第二スイッチポートを介して、第二の複数のＮＶＭｅドライブの第二ポートを、第二スイッチに接続する。工程２１６において、第二の複数のＮＶＭｅドライブは、それぞれ、第一ポート、および、第二ポートを有する。第二の複数のＮＶＭｅドライブを、第二スイッチを介して、第二の複数のノードに接続する。第二の複数のノード間で、ＮＶＭｅドライブに対応する第一ポート、あるいは、第二ポートを介して、第二の複数のＮＶＭｅドライブの各ＮＶＭｅドライブが共有される。   
【００３６】
工程２１８において、第一デバイスポートと第二スイッチポートが接続される。工程２２０において、図１Ｅと図１Ｆに示されるように、第一スイッチポートと第二デバイスポートが接続される。スケーラブルプールＮＶＭｅストレージボックスは、第一の複数のＮＶＭｅドライブ、および、第二の複数のＮＶＭｅドライブを有する拡張したＮＶＭｅドライブを有する。スケーラブルプールＮＶＭｅストレージボックスの各ＮＶＭｅドライブは、第一の複数のノードと第二の複数のノード間で共有される。スケーラブルプールＮＶＭｅストレージボックスの特定のＮＶＭｅドライブは、直接、第一スイッチ、あるいは、第二スイッチを介して、あるいは、接続経路を介してアクセスされる。接続経路は、これに限定されないが、第一スイッチ- 第一スイッチポート- 第一デバイスポート、第二スイッチ- 第二スイッチポート- 第一デバイスポート、第一スイッチ- 第一スイッチポート- 第二デバイスポート、あるいは、第二スイッチ- 第二スイッチポート- 第二デバイスポートを有する。いくつかの例において、接続経路は、第一スイッチ- 第一スイッチポート- 第二デバイスポート- 第二スイッチポート- 第一デバイスポート、あるいは、第二スイッチ- 第二スイッチポート- 第一デバイスポート- 第一スイッチポート- 第二デバイスポートを有する。
【００３７】
いくつかの例において、スケーラブルプールＮＶＭｅストレージボックスのＮＶＭｅドライブはそれぞれ、高帯域幅の単一ポートだけを有する。スケーラブルプールＮＶＭｅストレージボックスは、第一の複数のＮＶＭｅドライブ、第一スイッチ、および、第一インターフェースポートを有する。第一スイッチ、および、第一インターフェースポートは接続される。第一の複数のＮＶＭｅドライブは、対応するＮＶＭｅドライブの単一ポート、および、第一スイッチを介して、第一の複数のノードに接続される。スケーラブルプールＮＶＭｅストレージボックス中のＮＶＭｅドライブの数量は、スケーラブルプールＮＶＭｅストレージボックスを共有する必要があるノードの数量に基づいて、増加、あるいは、減少させることができる。  
【００３８】
クラウドコンピューティングが、一つ以上のネットワーク中に提供されて、共有リソースを用いてコンピューティングサービスを提供する。クラウドコンピューティングは、通常、コンピューティングリソースを、動的にプロビジョニングするとともに、ネットワーク（たとえば、クラウド）を介して、利用可能なリソースの集合からオンデマンドでクライアントコンピュータまたはユーザーコンピュータまたはその他の装置に割り当てられるインターネットベースのコンピューティングを含む。を介して、クラウドコンピューティングリソースは、たとえば、コンピューティング、ストレージ、および、ネットワーク装置、仮想マシン(ＶＭ)等の任意のタイプのリソースを有することができる。たとえば、リソースは、サービス装置 (ファイヤウオール、ディープパケットインスペクタ、トラフィックモニター、ロードバランサ−等)、計算／処理装置(サーバ、ＣＰＵ、メモリ、ブルートフォース処理機能)、ストレージデバイス(たとえば、ネットワーク付加ストレージ、ストレージ領域ネットワーク装置)等を有することができる。このほか、このようなリソースが用いられて、仮想ネットワーク、仮想マシン(ＶＭ)、データベース、アプリケーション(Apps)等をサポートする。
【００３９】
クラウドコンピューティングリソースは、「プライベートクラウド」、 「パブリッククラウド」、および／あるいは、 「ハイブリッドクラウド」  を有する。「ハイブリッドクラウド」 は、技術を介して相互運用(inter-operate)、あるいは、連携(federate)する二個以上のクラウドから構成されるクラウドインフラストラクチャーである。本質的に、ハイブリッドクラウドは、プライベートとパブリッククラウド間の相互作用であり、プライベートクラウドは、安全、且つ、スケーラブル方式で、パブリッククラウドに加入するとともに、パブリッククラウドリソースを利用する。クラウドコンピューティングリソースは、さらに、ＶＸＬＡＮ等のオーバーレイネットワーク、中の仮想ネットワークを介して、プロビジョニングすることができる。
【００４０】
以下で、図３〜図５に示される例示的システム、および、ネットワークに対し説明する。各実施形態はこれらの変化を描写する。技術は図３を参照する。
【００４１】
図３は、本発明を実行するのに適するコンピューティングデバイス３００を示す図である。コンピューティングデバイス３００は、マスター中央処理装置(ＣＰＵ)３６２、インターフェース３６８、および、バス３１５(たとえば、ＰＣＩバス)を有する。適するソフトウェア、あるいは、ファームウェアの制御下で起動するとき、ＣＰＵ３６２は、パケット管理、エラー検出、および／あるいは、ルーティング機能、たとえば、配線ミス検出機能の実行を担う。ＣＰＵ３６２は、好ましくは、オペレーティングシステム、および、任意の適当なアプリケーションソフトウェアを有するソフトウェアの制御下で、これらの全機能を完成する。ＣＰＵ３６２は、一つ以上のプロセッサ３６３を有し、たとえば、マイクロプロセッサのMotorola family、あるいは、マイクロプロセッサのＭＩＰＳ  familyである。その他の実施形態において、プロセッサ３６３は、コンピューティングデバイス３００の操作を制御するために特別に設計されたハードウェアである。特定の実施形態において、メモリ３６１(たとえば、不揮発性ＲＡＭ、および／あるいは、ＲＯＭ)は、さらに、ＣＰＵ３６２の一部を形成する。しかし、メモリは多くの異なる方式によりシステムに結合することができる。
【００４２】
インターフェース３６８は、一般に、インターフェースカード(ときに、「ラインカード)とも称される)として提供される。一般に、それらは、ネットワークにより、データパケットの送受信を制御するとともに、時に、コンピューティングデバイス３００とともに用いられるその他の周辺装置をサポートする。インターフェース間で、イーサネットインターフェース、フレームリレーインターフェース、ケーブルインターフェース、ＤＳＬインターフェース、トークンリングインターフェース等を使用することができる。このほか、各種超高速インターフェースは、高速トークンリングインターフェース、ワイヤレスインターフェース、イーサネットインターフェース、ギガビットイーサネットインターフェース、ＡＴＭインターフェース、ＨＳＳＩインターフェース、ＰＯＳインターフェース、ＦＤＤＩインターフェース等を使用することができる。一般に、これらのインターフェースは、適切な媒体と通信する適切なポートを有する。いくつかの実施形態において、インターフェースは、さらに、独立したプロセッサ、および、揮発性ＲＡＭを有する。独立したプロセッサは、パケット切り換え、媒体制御と管理として、このような通信集中タスクを制御することができる。通信集中タスク用に別々のプロセッサを提供することにより、これらのインターフェースは、マスターマイクロプロセッサ３６２が、ルーティング計算、ネットワーク診断、セキュリティ機能等を効率的に実行できるようにする。
【００４３】
図３に示されるシステムは、本発明の一つの特定コンピューティングデバイスであるが、それが、本発明の唯一のネットワーク装置構造であることを意味するのではない。たとえば、通信やルーティング計算等を処理する単一プロセッサを有する機構が頻繁に用いられる。さらに、別のタイプのインターフェースと媒体も、ルーターと一緒に用いることができる。 
【００４４】
ネットワークデバイスの構成にかかわらず、一つ以上のメモリ、あるいは、メモリモジュール(メモリ３６１を有する)を採用し、ローミング、ルート最適化、および、ルーティング機能を実行する汎用目的ネットワーク操作とメカニズムのプログラム命令を保存するように構成される。プログラム命令は、オペレーティングシステム、および／あるいは、一つ以上のアプリケーションの操作を制御することができる。一つのメモリ、あるいは、複数のメモリは、モビリティバインディング、登録、および、関連表等の表を保存するように構成することができる。
【００４５】
図４と図５は、本発明実施形態による例示的システムを示す図である。当業者なら、本発明の技術を実行するとき、更に適当な実施形態を理解することができる。当業者ならその他のシステムも可能であることが理解できる。  
【００４６】
図４は、システムバスコンピューティングシステム構造４００を示す図であり、システムのコンポーネントは、バス４０２を用いて、互いに電気的に通信する。例示的システム４００は、システムメモリ４０４(たとえば、リードオンリメモリ(ＲＯＭ)４０６、および、ランダムアクセスメモリ(ＲＡＭ)４０８)を有する各種システムコンポーネントを、プロセッサ４３０に結合する処理ユニット(ＣＰＵ、あるいは、プロセッサ)４３０、および、システム４０２を有する。システム４００は、高速メモリのキャッシュを有し、直接接続、近接して接続、または、プロセッサ４３０の一部として統合される。システム４００は、メモリ４０４、および／または、ストレージデバイス４１２から、キャッシュ４２８にデータを複製して、プロセッサ４３０により素早くアクセスする。このような方式で、キャッシュは、パフォーマンスブーストを提供し、データを待つ間のプロセッサ４３０の遅延を防止する。これら、および、その他のモジュールは、プロセッサ４３０を制御する、または、制御するように設定されて、各種動作を実行する。別のシステムメモリ４０４も、同様に、使用することができる。メモリ４０４は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを有する。プロセッサ４３０は、任意の汎用目的プロセッサ、および、ハードウェアモジュール、または、ソフトウェアモジュール、たとえば、ストレージデバイス４１２中に保存されるモジュール１  ４１４、モジュール２  ４１６、および、モジュール３  ４１８を有し、プロセッサ４３０、および、特殊用途プロセッサを制御し、ソフトウェア指令は、実際のプロセッサ設計に組み込まれる。プロセッサ４３０は、実質上、複数のコア、または、プロセッサ、バス、メモリコントローラ、キャッシュ等を含む完全に独立したコンピューティングシステムであってもよい。マルチコアプロセッサは、対称、または、非対称である。
【００４７】
ユーザーがコンピューティング装置４００と相互作用できるようにするため、入力装置４２０は、任意の数量の入力メカニズム、たとえば、スピーチのマイクロフォン、ジェスチャーやグラフィカル入力のタッチスクリーン、キーボード、マウス、動き入力、スピーチ等を表す。出力装置４２２は、従来の技術で知られる一つ、または、それ以上の数量の出力メカニズムである。ある状況下で、マルチモーダルシステムは、ユーザーが、コンピューティング装置４００と通信する複数のタイプの入力を提供できるようにする。通信インターフェース４２４は、通常、ユーザー入力とシステム出力を統治、および、管理することができる。任意の特定のハードウェア構成における操作の制限がなく、よって、ここでの基本的特徴は、改良されたハードウェアやファームウェアの構成が開発されるときに容易に代用することができる。
【００４８】
ストレージデバイス４１２は不揮発性メモリであり、且つ、ハードディスク、または、磁気カセット、フラッシュメモリカード、固体メモリ装置、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(ＲＡＭ)４０８、読み取り専用メモリ(ＲＯＭ)４０６、および、それらの混合等のコンピュータでアクセス可能なデータを保存するその他のタイプのコンピュータ読み取り可能媒体であってもよい。 
【００４９】
ストレージデバイス４１２は、ソフトウェアモジュール４１４、４１６、４１８を有して、プロセッサ４３０を制御する。その他のハードウェア、または、ソフトウェアモジュールも含まれる。ストレージデバイス４１２は、システムバス４０２に接続される。一態様において、特定の機能を実行するハードウェアモジュールは、必要なハードウェアコンポーネント、たとえば、プロセッサ４３０、バス４０２、ディスプレイ４３６等と接続するコンピュータ読み取り可能媒体中に保存されるソフトウェアコンポーネントを有して、機能を実行する。 
【００５０】
コントローラ４１０は、システム４００上の専門のマイクロコントローラ、または、プロセッサ、たとえば、ＢＭＣ(基盤管理コントローラ)である。一部の例では、コントローラ４１０は、インテリジェントプラットフォーム管理インターフェイス(ＩＰＭＩ)の一部である。さらに、一部の例では、コントローラ４１０は、システム４００のマザーボード、または、メイン回路板に組み込まれる。コントローラ４１０は、システム管理ソフトウェアとプラットフォームハードウェア間のインターフェースを管理することができる。コントローラ４１０は、また、以下で記述するように、各種システムデバイス、および、コンポーネント(内部、および／または、外部)、たとえば、コントローラ、または、周辺機器と通信することができる。
【００５１】
コントローラ４１０は、通知、警告、および／または、イベントに特定の応答を生成するとともに、遠隔装置、または、コンポーネント(たとえば、電子メールメッセージ、ネットワークメッセージ等)と通信して、自動ハードウェア回復工程等の指令や命令を生成する。システム管理者は、以下で更に記述するように、コントローラ４１０と遠隔通信して、特定のハードウェア回復工程、または、操作を開始、または、実行することができる。
【００５２】
システム４００上の異なるタイプのセンサー(たとえば、センサー４２６)は、コントローラ４１０に、パラメータ、たとえば、冷却ファン速度、電源状態、オペレーティングシステム (ＯＳ)状態、ハードウェア状態等を報告する。コントローラ４１０は、さらに、システムイベントログコントローラ、および／あるいは、ストレージを有して、コントローラ４１０により受信されるイベント、警告、および、注意を管理、および、保存する。たとえば、コントローラ４１０、あるいは、システムイベントログコントローラは、一つ以上の装置とコンポーネントからの警告や注意を受信するとともに、システムイベントログストレージコンポーネント中にその警告や注意を維持することができる。
【００５３】
フラッシュメモリ４３２は、ストレージ、および／または、データ転送に用いられるシステム４００により用いられる電子不揮発性コンピュータストレージ媒体、または、チップである。フラッシュメモリ４３２は、電気的に消去、および／または、再プログラム化される。フラッシュメモリ４３２は、たとえば、消去可能ＰＲＯＭ(ＥＰＲＯＭ)、電気的に消去可能ＰＲＯＭ(ＥＥＰＲＯＭ)、ＲＯＭ、ＮＶＲＡＭ、または、相補型ＭＯＳ(ＣＭＯＳ)を有する。フラッシュメモリ４３２は、システム４００が起動するとき、システム４００により実行されるファームウェア４３４、および、ファームウェア４３４に対して指定された構成のセットを保存する。フラッシュメモリ４３２は、さらに、ファームウェア１３４により用いられる構成を保存することができる。  
【００５４】
ファームウェア４３４は、ベーシックインプット／アウトプットシステム(ＢＩＯＳ)、または、その後継、または、等価物、たとえば、エクステンシブルファームウェアインターフェース(ＥＦＩ)、または、ユニファイドエクステンシブルファームウェアインタフェース(ＵＥＦＩ)を有する。システム４００が起動されるたびに、ファームウェア４３４は、シーケンスプログラムとしてロード、および、実行される。ファームウェア４３４は、構成のセットに基づいて、システム４００中に存在するハードウェアを識別、初期化、並びに、テストする。ファームウェア４３４は、システム４００上で、セルフテスト、たとえば、パワーオンセルフテスト(ＰＯＳＴ)を実行する。このセルフテストは、各種ハードウェアコンポーネント(たとえば、ハードディスクドライブ、光学読み取り装置、冷却装置、メモリモジュール、拡張カード等)の機能性をテストする。ファームウェア４３４は、メモリ４０４、ＲＯＭ４０６、ＲＡＭ４０８、および／または、ストレージデバイス４１２中の一領域をアドレス、および、割り当てて、オペレーティングシステム(ＯＳ)を保存する。ファームウェア４３４は、ブートローダー および／または、ＯＳをロードするとともに、システム４００の制御権をＯＳに与える。
【００５５】
システム４００のファームウェア４３４は、どのように、ファームウェア４３４が、システム４００中で、各種ハードウェアコンポーネントを制御するかを定義するファームウェア構成を有することができる。ファームウェア構成は、システム４００内の各種ハードウェアコンポーネントが起動される順番を判断する。ファームウェア４３４は、各種異なるパラメータの設定を許可するインターフェース(たとえば、ＵＥＦＩ)を提供し、これは、ファームウェアデフォルト設定のパラメータと異なる。たとえば、ユーザー(たとえば、システム管理者)は、ファームウェア４３４を用いて、クロック、および、バス速度を指定し、どの周辺機器をシステム４００に取り付けるか指定し、監視の状態(たとえば、ファン速度、および、ＣＰＵ温度制限)を指定し、システム４００のパフォーマンス全体、および、電力使用量に影響する多種のその他のパラメータを指定する。
【００５６】
ファームウェア４３４は、フラッシュメモリ４３２中に保存されるように説明されているが、当業者なら理解できるように、ファームウェア４３４は、その他のメモリ、コンポーネント、たとえば、メモリ４０４、または、ＲＯＭ４０６中に保存することができる。しかし、示されるフラッシュメモリ４３２中に保存されるファームウェア４３４は説明の目的であり、これに限定しない。 
【００５７】
システム４００は一つ以上のセンサー４２６を有する。一つ以上のセンサー４２６は、たとえば、一つ以上の温度センサー、サーマルセンサー、酸素センサー、化学センサー、ノイズセンサー、ヒートセンサー、電流センサー、電圧検出器、気流センサー、流量センサー、赤外線放射温度計、熱流束センサー、温度計、高温計等を有する。一つ以上のセンサー４２６は、たとえば、バス４０２により、プロセッサ、キャッシュ４２８、フラッシュメモリ４３２、通信インターフェース４２４、メモリ４０４、ＲＯＭ４０６、ＲＡＭ４０８、コントローラ４１０、および、ストレージデバイス４１２と通信する。一つ以上のセンサー４２６は、また、一つ以上の異なる手段、たとえば、アイスクエアドシー(Ｉ２Ｃ)、汎用並列出力(ＧＰＯ)等を介して、システム内のその他のコンポ―ネントと通信することができる。
【００５８】
図５は、記述した方法、または、操作の実行、および、グラフィカルユーザーインターフェース(ＧＵＩ)を生成、ならびに、表示に用いることができるチップセット機構を有する例示的なコンピュータシステム５００を示す図である。コンピュータシステム５００は、コンピュータハードウェア、ソフトウェア、および、ファームウェアを有し、本発明の技術を実行する。システム５００は、任意の数量の物理的、および／または、論理的に異なるリソースを表すプロセッサ５１０を有し、ソフトウェア、ファームウェア、および、識別された計算を実行するように構成されたハードウェアを実行することができる。プロセッサ５１０は、プロセッサ５１０からの入出力を制御することができるチップセット５０２と通信する。この例において、チップセット５０２は、情報を出力装置５１４、たとえば、ディスプレイに出力するとともに、ストレージデバイス５１６(磁気媒体、固体媒体を有する)と情報を読み書きする。チップセット５０２も、ＲＡＭ５１８とデータをやり取りする。各種ユーザーインターフェースコンポーネント５０６と相互作用するブリッジ５０４が提供されて、チップセット５０２と相互作用する。このようなユーザーインターフェースコンポーネント５０６は、キーボード、マイクロフォン、タッチ検出、および、処理回路、ポインティングデバイス(マウス等)を有する。一般に、システム５００への入力は、任意の各種ソース、機器生成、および／または、使用者の生成による入力である。  
【００５９】
チップセット５０２も、異なる物理インターフェースを有する一つ以上の通信インターフェース５０８と相互作用する。このような通信インターフェースは、有線、および、無線のローカルエリアネットワーク、広域帯域幅ネットワーク、および、パーソナルエリアネットワークのインターフェースを有する。本発明におけるＧＵＩを生成、表示、および、使用する方法のいくつかの応用は、物理インターフェースにより、または、ストレージデバイス５１６、または、５１８中に保存されるデータを分析するプロセッサ５１０によって、機器自身により生成された順序付けられたデータセットを受信する工程を有する。さらに、機器は、ユーザーインターフェースコンポーネント５０６を介して、ユーザーからの入力を受信するとともに、適当な機能を実行し、たとえば、プロセッサ５１０を用いて、これらの入力を解釈することによりブラウズ機能を実行する。  
【００６０】
さらに、チップセット５０２は、電源が入れられたとき、コンピュータシステム５００により実行することができるファームウェア５１２と通信することができる。ファームウェア５１２は、ファームウェア構成のセットに基づいて、コンピュータシステム５００中に存在するハードウェアを認識、初期化、および、テストすることができる。ファームウェア５１２は、システム５００で、セルフテスト、たとえば、ＰＯＳＴを実行する。セルフテストは、各種ハードウェアコンポーネント５０２〜５１８の機能をテストすることができる。ファームウェア５１２は、メモリ５１８中の一領域をアドレス、および、割り当てて、ＯＳを保存する。ファームウェア５１２は、ブートローダー、および／または、ＯＳをロードするともに、システム５００の制御権をＯＳに与える。一部の例では、ファームウェア５１２は、ハードウェアコンポーネント５０２〜５１０、および、５１４〜５１８と通信する。ここで、ファームウェア５１２は、チップセット５０２、および／または、一つ以上のその他のコンポーネントを介して、ハードウェアコンポーネント５０２〜５１０、および、５１４〜５１８と通信する。ある場合では、ファームウェア５１２は、ハードウェアコンポーネント５０２〜５１０、および、５１４〜５１８と直接通信することができる。
【００６１】
理解できることは、例示的システム４００、および、５００は、二個以上のプロセッサ(たとえば、４３０、５１０)を有する、または、ネットワーク接続されるコンピューティングデバイスの一群、または、クラスタであり、よえい良い処理能力を提供する。    
【００６２】
説明をわかりやすくするため、ある実施形態において、本発明の技術は、独立した機能ブロックを含み、機能ブロックは、装置、デバイスコンポーネント、ソフトウェア、または、ハードウェアとソフトウェアの組み合わせで具体化される方法中の工程やルーティンを有する。 
【００６３】
いくつかの実施形態において、コンピュータ可読ストレージデバイス、媒体、および、メモリは、ビットストリーム等を含むケーブルや無線信号を有する。しかし、言及されるとき、非一過性の（non-transitory）コンピュータ読み取り可能ストレージ媒体は、エネルギー、キャリア信号、電磁波、および、信号自身等の媒体を明確に排除する。
【００６４】
上記の例における方法は、コンピュータ読み取り可能媒体に保存され、利用可能なコンピュータ実行可能命令を用いて実施される。このような指令は、たとえば、指令、および、データは、特定の機能または機能の群を実行する汎用目的コンピュータ、特殊用途コンピュータ、または、特殊用途処理装置を引き起こすか、または構成する命令およびデータを含むことができる。用いられるコンピュータリソースの一部は、ネットワークによりアクセス可能である。コンピュータ実行可能命令は、たとえば、バイナリー、中間フォーマット指令、たとえば、アセンブリ言語、ファームウェア、または、ソースコードである。命令、使用した情報、および／または、記述例に従った方法中に生成された情報の保存に用いることができるコンピュータ読み取り可能媒体の例は、磁気、または、光学ディスク、フラッシュメモリ、不揮発性メモリを備えるＵＳＢデバイス、ネットワークストレージデバイス等を含む。
【００６５】
これらの開示における方法を実施する装置は、ハードウェア、ファームウェア、および／または、ソフトウェアを有し、任意の各種フォームファクタを利用する。このようなフォームファクタの一般的な例は、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、ＰＤＡ、ラックマウント型装置、スタンドアロン装置等を有する。ここで記述される機能性は、さらに、周辺装置、または、アドインカードで具体化される。さらなる例として、このような機能性は、異なるチップ間の回路基板上、または、単一の装置で実行される異なるプロセス間で実行することができる。 
【００６６】
命令、このような命令を伝達する媒体、それらを実行するコンピューティングリソース、および、このようなコンピューティングリソースをサポートするその他の構造は、ここで記述される機能を提供する手段である。
【００６７】
本発明の各種態様は、サーバシステム中で、スケーラブルプールＮＶＭｅストレージボックスをサポートするシステムと方法を提供する。特定の実施形態は、どのように、任意の操作を異なる指令で実現するかを示しているが、その他の実施形態は、任意の操作を異なる指令に組み込んでいる。説明をはっきりとさせるため、本発明のいくつかの実施形態において、デバイス、デバイスコンポーネント、ソフトウェア、あるいは、ハードウェアとソフトウェアの組み合わせで具体化される方法中の工程、あるいは、ルーティンを有する機能ブロックを有するものとして示される。 
【００６８】
各種実施形態は、さらに、多様な操作環境中で実現され、いくつかの実施形態において、一つ以上のサーバコンピュータ、ユーザーコンピュータ、あるいは、任意の数量のアプリケーションを操作するのに用いられるコンピューティングデバイスを有する。ユーザー、あるいは、クライアントデバイスは、任意の数量の汎用目的のパソコン、たとえば、標準のオペレーティングシステムを実行するデスクトップ、あるいは、ラップトップコンピュータ、および、モバイルソフトウェアを実行するとともに、いくつかのネットワーク、および、メッセージプロトコルをサポートすることができるセルラー、ワイヤレス、および、ハンドヘルド装置を含むことができる。このようなシステムは、さらに、任意の各種商用のオペレーティングシステムおよびその他の既知のアプリケーション(開発、および、データベース管理)を実行する、いくつかのワークステーションを有する。これらの装置は、その他の電子装置、たとえば、ダミー端子、シンクライアント、ゲームシステム、および、ネットワークにより通信できるその他の装置を有する。
【００６９】
本発明のいくつかの実施態様、あるいは、一部は、ハードウェア中で実現され、本発明で記述される方法は、以下の技術の任意の一つ、あるいは、その結合により実現される: ロジック機能をデータ信号に実行するロジックゲートを有する離散ロジック回路、適当な組み合わせのロジックゲート、プログラム可能ハードウェア、たとえば、プログラマブルゲートアレイ(ＰＧＡ)、フィールドプログラマブルゲートアレイ(ＦＰＧＡ)等を有する特定用途向け集積回路(ＡＳＩＣ)。
【００７０】
大多数の実施形態は、当業者が熟知する少なくとも一つのネットワークを用いて、通信をサポートする。ネットワークは、たとえば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、および、それらの任意の組み合わせである。
【００７１】
上記の例における方法は、コンピュータ実行可能命令を用いて実施され、コンピュータ実行可能命令は、コンピュータ読み取り可能媒体に保存され、または、利用可能である。このような命令は、たとえば、汎用目的コンピュータ、特殊用途コンピュータ、または、特殊用途処理装置を構成して、ある機能、または、機能の群を実行する命令およびデータを有することができる。用いられるコンピュータリソースの一部は、ネットワークによりアクセス可能である。コンピュータ実行可能命令は、たとえば、バイナリー、中間フォーマット命令、たとえば、アセンブリ言語、ファームウェア、または、ソースコードである。命令、使用した情報、および／または、記述例に従った方法中に生成された情報の保存に用いることができるコンピュータ読み取り可能媒体の例は、磁気、または、光学ディスク、フラッシュメモリ、不揮発性メモリを備えるＵＳＢデバイス、ネットワークストレージデバイス等を含む。コンピュータ読み取り可能媒体の例は、指令、使用した情報、および／または、方法の期間中に生成された情報の保存に用いられ、コンピュータ読み取り可能媒体は、記述される例に従って、磁気、または、光学ディスク、フラッシュメモリ、ＵＳＢデバイスを有し、磁気、または、光学ディスク、フラッシュメモリ、ＵＳＢデバイスは、不揮発性メモリ、ネットワークストレージデバイス等に提供される。
【００７２】
これらの開示における方法を実施する装置は、ハードウェア、ファームウェア、および／または、ソフトウェアを有し、任意の各種フォームファクタを利用する。このようなフォームファクタの一般的な例は、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、ＰＤＡ、ラックマウント型装置、スタンドアロン装置等を有する。ここで記述される機能性は、さらに、周辺装置、または、アドインカードで具体化される。さらなる例として、このような機能性は、異なるチップ間の回路基板上、または、単一の装置で実行される異なるプロセス間で実行することができる。 
【００７３】
ウェブサーバを用いた実施形態において、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａサーバ、および、ビジネスアプリケーションサーバを有する任意の種類のサーバ、あるいは、中層アプリケーションを実行する。サーバは、たとえば、任意のプログラミング言語、たとえば、Ｊａｖａ（登録商標）、Ｃ，Ｃ＃、または、Ｃ＋＋、あるいは、任意のスクリプト言語、たとえば、Perl、Python、あるいは、TCL、および、それらの組み合わせで書き込まれる一つ以上のスクリプト、あるいは、プログラムとして実行される一つ以上のウェブアプリケーションを実行することにより、ユーザー装置からの要求に応答して、プログラムやスクリプトを実行することができる。サーバは、さらに、データベースサーバを有し、開放市場による商用のソフトウェアに限定されない。
【００７４】
サーバシステムは、前述の様々なデータ保存、および、その他のメモリ、および、ストレージ媒体を有する。これらは、様々な位置に存在し、たとえば、ストレージ媒体が一つ以上のコンピュータにローカル接続される(および／あるいは、存在する)、あるいは、ネットワークにより、任意の、あるいは、全てのコンピュータから遠隔で連結される。一組の特定の実施形態において、情報は、当業者により熟知されるストレージエリアネットワーク (ＳＡＮ)中に存在する。同様に、コンピュータに起因する機能を実行するのに必要とされる任意のファイル、サーバ、あるいは、その他のネットワーク装置は、必要に応じて、局部的、および／あるいは、遠隔で保存される。システムは、コンピュータ制御の装置を有し、このような装置は、それぞれ、一つのバスにより電気的に結合されるハードウェアコンポーネントを有し、コンポーネントは、たとえば、少なくとも一つの中央処理ユニット(ＣＰＵ)、少なくとも一つの入力装置 (たとえば、マウス、キーボード、コントローラ、タッチセンサーディスプレイコンポーネント、あるいは、キーパッド)、および、少なくとも一つの出力装置(たとえば、ディスプレイ装置、プリンター、あるいは、スピーカー)を有する。このようなシステムは、さらに、一つ以上のストレージデバイス、たとえば、 ディスクドライブ、光学ストレージデバイス、および、ソリッドステートストレージデバイス(たとえば、ランダムアクセスメモリ(ＲＡＭ)、あるいは、リードオンリメモリ(ＲＯＭ))、および、除去可能な媒体装置、メモリカード、フラッシュカード等を有する。
【００７５】
このような装置は、さらに、上述のように、コンピュータ可読ストレージ媒体読み取り機、通信装置(たとえば、モデム、ネットワークカード(有線、あるいは、無線)、赤外線コンピューティングデバイス)、および、ワーキングメモリを有する。コンピュータ可読ストレージ媒体読み取り機は、コンピュータ可読ストレージ媒体に接続される、あるいは、コンピュータ可読ストレージ媒体を受け入れ、コンピュータ可読ストレージ媒体は、遠隔、局部、固定、および／あるいは、取り外し可能なストレージデバイス、および、一時的、および／あるいは、更に永久的に、コンピュータ可読情報を含有、保存、送信、および、回収するストレージ媒体を表す。システム、および、各種デバイスは、さらに、一般に、少なくとも一つのワーキングメモリ装置中に位置する複数のソフトウェアアプリケーション、モジュール、サービス、あるいは、その他の素子を有し、その他の素子は、オペレーティングシステム、および、アプリケーションプログラム(たとえば、クライアントアプリケーション、あるいは、ウェブブラウザ)を有する。注意すべきことは、前述の例に基づいて、様々に変化させることができることである。たとえば、カスタマイズされたハードウェアを使用することもできる、および／あるいは、特定素子をハードウェア／ソフトウェア(ポータブルソフトウェア、たとえば、アプレットを含む)、あるいは、両方で実施することができる。さらに、その他のコンピューティングデバイス、たとえば、ネットワーク入／出力装置への接続も使用される。
【００７６】
コード、あるいは、コードの一部を含むストレージ媒体、および、コンピュータ可読媒体は、従来の記述で用いられる任意の適当な媒体、たとえば、ストレージ媒体、および、コンピューティング媒体を有し、揮発性、および、不揮発性、取り外し可能、および、非取り外し可能媒体に限定されず、任意の方法や技術で実現され、情報(たとえば、コンピュータ可読指令、データ構造、プログラムモジュール、あるいは、その他のデータ)を保存、および／あるいは、送信し、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、あるいは、その他のメモリ技術、ＣＤ-ＲＯＭ、デジタル多用途ディスク(ＤＶＤ)、あるいは、その他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、あるいは、その他の磁気ストレージデバイス、あるいは、その他の任意の媒体を有して、必要な情報を保存するのに用いられる、および、システムデバイスによりアクセスされる。ここで提供される技術と教示に基づいて、当業者なら、本発明の各種態様を実施するその他の方法、および／あるいは、方法を理解することができる。
【００７７】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない範囲内で各種の変動や潤色を加えることができ、従って本発明の保護範囲は、特許請求の範囲で指定した内容を基準とする。
【図１Ａ】
0006453373.tif 000002
【図１Ｂ】
0006453373.tif 000003
【図１Ｃ】
0006453373.tif 000004
【図１Ｄ】
0006453373.tif 000005
【図１Ｅ】
0006453373.tif 000006
【図１Ｆ】
0006453373.tif 000007
【図２】
0006453373.tif 000008
【図３】
0006453373.tif 000009
【図４】
0006453373.tif 000010
【図５】
0006453373.tif 000011