(57)【要約】  一例では、方法は、第１のデータストレージノードから第２のデータストレージノードへのデータの送信に対して時間要件を割り当てること、伝送チャネルの所定のパラメータに基づいて、最大数の利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当てること、ならびに時間要件および最大数の利用可能な伝送チャネルに従って、データを送信することを含むことができる。
2016528598.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータストレージノードから第２のデータストレージノードへのデータの送信に対して時間要件を割り当てること、
伝送チャネルの所定のパラメータに基づいて、最大数の利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当てること、ならびに
前記時間要件および前記最大数の利用可能な伝送チャネルに従って、前記データを送信すること
を含む方法。
【請求項２】
前記第１のデータストレージノードおよび前記第２のデータストレージノードは、同じストレージプロバイダによってホストされる、請求項１に記載の方法。
【請求項３】
前記第１のデータストレージノードおよび前記第２のデータストレージノードは、異なるストレージプロバイダによってホストされる、請求項１に記載の方法。
【請求項４】
前記送信することは、クラウドストレージ環境内で容易にされる、請求項１に記載の方法。
【請求項５】
前記送信することは、
前記送信することを容易にするために、前記利用可能な伝送チャネルのうちのいくつかの個数の固定伝送チャネルを算出すること、
前記固定伝送チャネルを介する前記第１のデータストレージノードから前記第２のデータストレージノードへのデータの前記送信を開始すること、
前記第２のデータストレージノードに送信されるべき前記第１のデータストレージノード内の残りのデータの存在を検出すること、
前記残りのデータを送信するための前記利用可能な伝送チャネルのうちのいくつかの個数のランダム伝送チャネルをランダムに選択すること、および
前記ランダムに選択されたランダム伝送チャネルのうちの１つまたは複数を介して、前記残りのデータを前記第２のデータストレージノードに送信すること
を含む、請求項１に記載の方法。
【請求項６】
前記固定伝送チャネルの前記個数は、データのサイズおよび前記最大チャネル伝送速度に基づいて決定される、請求項５に記載の方法。
【請求項７】
固定伝送チャネルの前記個数は、前記データが前記第１のデータストレージノードから前記第２のデータストレージノードに送信され得る伝送チャネルの最小数を示す、請求項６に記載の方法。
【請求項８】
ランダム伝送チャネルの前記個数は、伝送チャネルの前記最大数から固定伝送チャネルの前記個数を引いた数よりも小さい数である、請求項５に記載の方法。
【請求項９】
ランダムに選択することは、
前記ランダム伝送チャネルのランダムに選択されたいくつかの各々にライフサイクルを割り当てることを含む、請求項５に記載の方法。
【請求項１０】
各ランダム伝送チャネルの前記ライフサイクルは、伝送チャネルの所定の最大ライフサイクル以下であるように決定される、請求項９に記載の方法。
【請求項１１】
各ランダム伝送チャネルの前記ライフサイクルは、各ランダム伝送チャネルの対応するチャネル容量の２０％から８０％の間の範囲である、請求項９に記載の方法。
【請求項１２】
前記ランダム伝送チャネルの少なくとも１つのランダム伝送チャネルを、その前記ライフサイクルの満了後、または前記残りのデータの送信の完了後に解放することをさらに含む、請求項９に記載の方法。
【請求項１３】
転送されるべき残りのデータがある場合、前記少なくとも１つのランダム伝送チャネルの前記ライフサイクルの満了後に前記データ送信を完了するための別のランダム伝送チャネルを選択することをさらに含む、請求項１２に記載の方法。
【請求項１４】
実行されたときに１つまたは複数のプロセッサに動作を行わせる命令を記憶するコンピュータ可読媒体であって、前記動作は、
第１のデータストレージノードから第２のデータストレージノードへのデータの送信に対して時間要件を割り当てること、
伝送チャネルの所定のパラメータに基づいて、最大数の利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当てること、ならびに
前記時間要件および前記最大数の利用可能な伝送チャネルに従って、前記データを送信すること
を含む、コンピュータ可読媒体。
【請求項１５】
前記データ送信をランダム化することが、
前記送信することを容易にするために、前記利用可能な伝送チャネルのうちのいくつかの個数の固定伝送チャネルを算出すること、
前記固定伝送チャネルを介する前記第１のデータストレージノードから前記第２のデータストレージノードへのデータの前記送信を開始すること、
前記第２のデータストレージノードに送信されるべき前記第１のデータストレージノード内の残りのデータの存在を検出すること、
前記残りのデータを送信するための前記利用可能な伝送チャネルのうちのいくつかの個数のランダム伝送チャネルをランダムに選択すること、および
前記ランダムに選択されたランダム伝送チャネルのうちの１つまたは複数を介して、前記残りのデータを前記第２のデータストレージノードに送信すること
を含む、請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
ランダムに選択することは、
前記ランダム伝送チャネルの前記ランダムに選択されたいくつかの各々にライフサイクルを割り当てることを含む、請求項１４に記載のコンピュータ可読媒体。
【請求項１７】
各ランダム伝送チャネルの前記ライフサイクルは、伝送チャネルの所定の最大ライフサイクル以下であるように決定される、請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記命令は、実行されたときに、
前記ランダム伝送チャネルの少なくとも１つのランダム伝送チャネルを、その前記ライフサイクルの満了後、または前記残りのデータの送信の完了後に解放することをさらに含む動作を１つまたは複数のプロセッサに行わせる、請求項１６に記載のコンピュータ可読媒体。
【請求項１９】
前記命令は、実行されたときに、
転送されるべき残りのデータがある場合、前記少なくとも１つのランダム伝送チャネルの前記ライフサイクルの満了後に前記残りのデータの前記送信を完了するための別のランダム伝送チャネルを選択することをさらに含む動作を１つまたは複数のプロセッサに行わせる、請求項１８に記載のコンピュータ可読媒体。
【請求項２０】
データストレージシステムであって、
データをそれぞれ記憶するように構成された第１のデータストレージノードおよび第２のデータストレージノードを含む複数のデータストレージノードと、
プロセッサと
を備え、前記プロセッサは、
前記第１のデータストレージノードから前記第２のデータストレージノードへのデータの送信に対して時間要件を割り当て、
所定のパラメータに基づいて、最大数の利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当て、
前記時間要件および前記最大数の利用可能な伝送チャネルに従って、前記データを送信する
ように構成される、データストレージシステム。
【請求項２１】
前記プロセッサは、
前記送信することを容易にするために、前記利用可能な伝送チャネルのうちのいくつかの個数の固定伝送チャネルを算出し、
前記固定伝送チャネルを介する前記第１のデータストレージノードから前記第２のデータストレージノードへのデータの前記送信を開始し、
前記第２のデータストレージノードに送信されるべき前記第１のデータストレージノード内の残りのデータの存在を検出し、
前記残りのデータを送信するための前記利用可能な伝送チャネルのうちのいくつかの個数のランダム伝送チャネルをランダムに選択し、
前記ランダムに選択されたランダム伝送チャネルのうちの１つまたは複数を介して、前記残りのデータを前記第２のデータストレージノードに送信する
ようにさらに構成される、請求項２０に記載のデータストレージシステム。
【請求項２２】
ランダム伝送チャネルの前記個数をランダムに選択するように構成された乱数発生器をさらに備え、前記プロセッサは、少なくとも１つのランダム伝送チャネルを使用して前記残りのデータを送信するようにさらに構成される、請求項２１に記載のデータストレージシステム。
【請求項２３】
前記プロセッサは、
前記ランダム伝送チャネルの前記ランダムに選択されたいくつかの各々にライフサイクルを割り当てるようにさらに構成される、請求項２１に記載のデータストレージシステム。
【請求項２４】
前記第１のデータストレージノードまたは前記第２のデータストレージノードは、
前記少なくとも１つのランダム伝送チャネルを、その前記ライフサイクルの満了後、または前記残りのデータの送信の完了後に解放するようにさらに構成される、請求項２３に記載のデータストレージシステム。
【請求項２５】
前記第１のデータストレージノードまたは前記第２のデータストレージノードは、
転送されるべき残りのデータがある場合、前記少なくとも１つのランダム伝送チャネルの前記ライフサイクルの満了後に前記残りのデータの前記送信を完了するための別のランダム伝送チャネルを選択するようにさらに構成される、請求項２４に記載のデータストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に説明する実施形態は一般に、ストレージネットワークにおけるデータ移行に関する。
【背景技術】
【０００２】
本明細書では特に指示のない限り、この節で説明される手法は、本出願の特許請求の範囲に対する先行技術ではなく、この節に含めることによって先行技術であると認められるものではない。
【０００３】
ストレージネットワークは通常、データを記憶するためのデータストレージノードを有するデータセンタを含む。たとえば、ウェブベースのアプリケーションのためのデータセンタは、それぞれがいくつかの個数のストレージサーバを有する複数の分散データストレージノードを含むことができる。大量データの伝送は、ネットワーク帯域幅の大部分を占有することがあり、同じ物理サーバ上に展開される他のアプリケーションのパフォーマンスに影響を与えることがある。さらに、ネットワーク帯域幅の大部分が占有されたとき、サイドチャネル攻撃をしようとする同じゾーン内の悪意あるオブジェクトによってデータが収集され分析されることがある。
【発明の概要】
【０００４】
一般的に、ストレージネットワークにおけるデータ移行のための技術を説明する。さまざまな技法が、さまざまなシステム、方法、および／またはコンピュータ可読媒体で実装され得る。
【０００５】
ある例示的実施形態では、方法が提供され、この方法は、第１のデータストレージノードから第２のデータストレージノードへのデータの送信に対して時間要件を割り当てること、伝送チャネルの所定のパラメータに基づいて、最大数の利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当てること、ならびに時間要件および最大数の利用可能な伝送チャネルに従って、データを送信することを含むことができる。
【０００６】
別の例示的実施形態では、コンピュータ可読媒体が、実行されたときに１つまたは複数のプロセッサに動作を行わせる命令を記憶し、それらの動作は、第１のデータストレージノードから第２のデータストレージノードへのデータの送信に対して時間要件を割り当てること、伝送チャネルの所定のパラメータに基づいて、最大数の利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当てること、ならびに時間要件および最大数の利用可能な伝送チャネルに従って、データを送信することを含むことができる。
【０００７】
さらに別の例示的実施形態では、データストレージシステムが、データをそれぞれ記憶するように構成された第１のデータストレージノードおよび第２のデータストレージノードを含む複数のデータストレージノードと、プロセッサとを備えることができ、プロセッサは、第１のデータストレージノードから第２のデータストレージノードへのデータの送信に対して時間要件を割り当て、所定のパラメータに基づいて、最大数の利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当て、時間要件および最大数の利用可能な伝送チャネルに従って、データを送信するように構成される。
【０００８】
上記の概要は例示にすぎず、何ら限定することを意図していない。上述した例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が、図面および以下の詳細な説明を参照することにより明らかとなろう。
【０００９】
以下の詳細な説明から当業者にはさまざまな変更および修正が明らかとなるので、以下の詳細な説明では、実施形態は単に例示として説明される。異なる図面における同じ参照番号の使用は、類似または同一の要素を示す。
【図面の簡単な説明】
【００１０】
【図１】本明細書に説明される少なくともいくつかの実施形態に従って構成される、ストレージネットワークにおけるデータ移行が実装され得るストレージネットワークの例示的構成を示す図である。
【図２】本明細書に説明される少なくともいくつかの実施形態に従って構成される、ストレージネットワークにおけるデータ移行の少なくとも一部が実装され得るデータセンタのクラスタの例示的構成を示す図である。
【図３】本明細書に説明される少なくともいくつかの実施形態に従って構成される、ノード間でストレージネットワークにおけるデータ移行の少なくとも一部が実装され得る第１のデータストレージノードおよび第２のデータストレージノードの例示的構成を示す図である。
【図４】本明細書に説明されるような、ストレージネットワークにおけるデータ移行のいくつかの実施形態による、固定伝送チャネルおよびランダム伝送チャネルの例示的構成を示す図である。
【図５】本明細書に説明される少なくともいくつかの実施形態による、データストレージネットワークにおけるデータ移行のための動作の処理フローの例示的構成を示す図である。
【図６】本開示による、ストレージネットワークにおけるデータ移行のために構成された例示的コンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【００１１】
以下の詳細な説明では、本明細書の一部を形成する添付図面を参照する。図面では、同様の符号は、文脈で特に指示のない限り、通常は同様のコンポーネントを示す。さらに、一連の各図についての説明は、特に注記がない限り、先行する図の１つまたは複数における特徴を参照して、より明確な文脈および現在の例示的実施形態のより本質的な説明を与えることがある。ただし、詳細な説明、図面、および特許請求の範囲に説明される例示的実施形態は、限定的であることを意図していない。本明細書に提示される主題の趣旨または範囲から逸脱することなく、他の実施形態が利用されてもよく、他の変更が行われてもよい。本明細書に一般的に説明され図面に示される本開示の態様は、さまざまな異なる構成で配置、置換、組み合わせ、分離、および設計がされてよく、それらはすべて本明細書で明示的に企図されていることは容易に理解されよう。
【００１２】
ストレージネットワークにおけるデータ移行すなわち再配置を行うための技術を説明する。さまざまな実施形態において、この技術は、時間内に異なる伝送チャネルを介してデータストレージノード間のデータ送信をランダム化する。データ送信のランダム化は、データストレージノード間でデータ送信するための伝送チャネルをランダムに選択することによって達成される。
【００１３】
図１は、本明細書に説明される少なくともいくつかの実施形態に従って構成される、ストレージネットワークにおけるデータ移行が実装され得るストレージネットワークの例示的構成１００を示す。図示のように、ストレージネットワークの例示的構成１００は、少なくとも、１つまたは複数のクラスタ１２０、１３０、および１４０ならびにそれらに関連付けられたアドミニストレータ１４５を含むことができるデータセンタ１１０と、ネットワーククラウド１５０と、１つまたは複数のクラウドプロバイダ１５５および１５７と、１つまたは複数のクラスタ１７０、１８０、および１９０ならびにそれらに関連付けられたアドミニストレータ１９５を含むことができるデータセンタ１６０とを含むことができる。
【００１４】
本明細書に述べられるように、データの送信は、クラウドストレージ環境内で容易にされ得る。
【００１５】
本明細書で参照されるように、「クラスタ」は、互いに通信可能に結合され得るデータストレージノードたとえばサーバのグループを表すことができる。いくつかの実施形態によれば、データセンタ１１０およびデータセンタ１６０は各々が、対応するデータセンタの内部および外部の両方で互いに通信することができる複数のクラスタを含んでよく、それにより、本明細書に述べられるようにデータ移行を実装する。
【００１６】
各データストレージノード、たとえば、サーバは、データ移行を容易にするためのプロセッサを含むことができる。１つまたは複数の例示的実施形態によれば、データ移行は、送信データストレージノードまたは受信データストレージノードのプロセッサによって指定される時間要件に従って、そして上述のプロセッサによって決定される利用可能な伝送チャネル上の最大伝送速度までの速度で、実装することができる。最大伝送速度は、伝送チャネルの長さまたはタイプのような所定のパラメータに基づいて決定することができる。
【００１７】
各データセンタ１１０および１６０は、通信リンクを介して、データセンタ１１０および１６０内のデータストレージノードから、または他のデータセンタ内のデータストレージノードからデータを受信し、受信したデータをその中に記憶するように構成、設計、および／またはプログラムされ得るデータストレージノードたとえばサーバの、同一場所に配置された集合を表すことができる。構成１００のいくつかの実施形態によれば、データセンタ１１０、１６０などは、「サーバファーム」と呼ばれることがある。データセンタ１１０、１６０などは、データストレージノード、たとえば、サーバを、同一場所に配置されたクラスタフォーマットに編成して、１つまたは複数の共通のデータサービスを管理するための効率的な大規模な展開を可能にすることができる。
【００１８】
各クラスタ１２０、１３０、および１４０は、データセンタ１１０で受信されるデータを記憶するように構成され得る１つまたは複数のデータストレージノードたとえばサーバを含むことができる。たとえば、クラスタ１２０、１３０、および１４０は、１つまたは複数のアプリケーション（たとえば、電子メール）を実行するためのデータを記憶することができる。各クラスタ１７０、１８０、および１９０は、データセンタ１６０で受信されるデータを記憶するための１つまたは複数のデータストレージノードを含むように同様に構成されることができる。
【００１９】
アドミニストレータ１４５は、データセンタ１１０に含まれてよく、クラスタ１２０、１３０、および１４０の１つまたは複数に実行可能命令をそれぞれ提供するように構成、設計、および／またはプログラムされてよい。アドミニストレータ１４５は、ユーザ入力装置を含むようにさらに構成されてよく、ユーザ入力装置は、ユーザがクラスタ１２０、１３０、および１４０の１つまたは複数に実行可能命令を提供し、クラスタ関連情報を閲覧することを可能にするように構成されている。
【００２０】
さらに、アドミニストレータ１４５は、ソフトウェアまたはコンピュータ実行可能命令を含むことができ、ソフトウェアまたはコンピュータ実行可能命令は、対応するデータセンタ１１０内のデータストレージノードたとえばサーバの間のデータ移行すなわち再配置を要求し、それにより、ユーザデータおよび／またはアプリケーションデータをバックアップすること、別のデータセンタ、たとえば、データセンタ１６０へのデータストレージノード間データ移行、および／または別のデータセンタからのデータストレージノード間データ移行を要求すること、ならびに、要求されたデータ移行の作動を監視し、それにより、データ移行プロセスの完了を確認することを行うように構成、設計、および／またはプログラムされている。
【００２１】
アドミニストレータ１９５は、データセンタ１６０に含まれてよく、同様にクラスタ１７０、１８０、および１９０の１つまたは複数に実行可能命令をそれぞれ提供するように構成、設計、および／またはプログラムされてよい。さらに、アドミニストレータ１９５は、ユーザ入力装置を含むようにさらに構成されてよく、ユーザ入力装置は、ユーザがクラスタ１７０、１８０、および１９０の１つまたは複数に実行可能命令を提供し、クラスタ関連情報を閲覧することを可能にするように構成されている。
【００２２】
さらに、アドミニストレータ１９５は、ソフトウェアまたはコンピュータ実装命令をさらに含むことができ、ソフトウェアまたはコンピュータ実装命令は、対応するデータセンタ１７０内のデータストレージノードたとえばサーバの間のデータ移行すなわち再配置を要求し、それにより、ユーザデータおよび／またはアプリケーションデータをバックアップすること、別のデータセンタ、たとえば、データセンタ１１０へのデータストレージノード間データ移行、および／または別のデータセンタからのデータストレージノード間データ移行を要求すること、ならびに、要求されたデータ移行の作動を監視し、それにより、データ移行プロセスの完了を確認することを行うように構成、設計、および／またはプログラムされている。
【００２３】
ネットワーククラウド１５０は、データ移行の少なくとも一部が実装され得るネットワークを表すことができる。ネットワーククラウド１５０は、たとえば、広域ネットワーク（ＷＡＮ）（たとえば、インターネット）、ローカルエリアネットワーク（ＬＡＮ）、またはデータ移行を行うのに適した任意のタイプのネットワークのいずれか１つによって実装されてもよい。
【００２４】
クラウドプロバイダ１５５は、データセンタ１１０のクラスタ１２０、１３０、１４０にそれぞれ対応するデータストレージノードたとえばサーバを利用するさまざまなコンピューティングサービスを容易にするように構成されたベンダまたはサードパーティクラウドサービスプロバイダを表すことができる。クラウドプロバイダ１５５はまた、データセンタ１６０のクラスタ１７０、１８０、および１９０にそれぞれ対応するデータストレージノードたとえばサーバを利用するさまざまなコンピューティングサービスを容易にするように構成されてもよい。そのようなコンピューティングサービスの例は、たとえば、コンピュータデバイスのウェブブラウザを介してアクセスされるビジネスアプリケーションを含むことができ、関連したデータはデータセンタ内のクラスタのデータストレージノードに記憶することができ、ビジネスアプリケーションの実装のための帯域幅を割り当てる。さらに、いくつかの場合には、クラウドプロバイダ１５５は、故障検出機能を実装して、たとえば、コンピューティングサービスが適切に動作していないと検出されたときに、代替サービスを提供するように構成、設計、および／またはプログラムされ得る。
【００２５】
クラウドプロバイダ１５７は、同様に、データセンタ１１０のクラスタ１２０、１３０、１４０にそれぞれ対応するデータストレージノードたとえばサーバを利用するさまざまなコンピューティングサービスを容易にするように構成され得る、別のベンダまたはサードパーティクラウドサービスプロバイダを表すことができる。クラウドプロバイダ１５７はまた、データセンタ１６０のクラスタ１７０、１８０、および１９０にそれぞれ対応するデータストレージノードたとえばサーバを利用するさまざまなコンピューティングサービスを容易にするように構成されてもよい。
【００２６】
いくつかの実施形態によれば、クラウドプロバイダ１５５が、やはり、データセンタ１１０のクラスタ１２０、１３０、１４０にそれぞれ対応するデータストレージノードたとえばサーバを利用するさまざまなコンピューティングサービスを容易にするように構成されるとともに、クラウドプロバイダ１５７が、データセンタ１６０のクラスタ１７０、１８０、および１９０にそれぞれ対応するデータストレージノードたとえばサーバを利用するさまざまなコンピューティングサービスを容易にするように構成されることが可能であり、あるいは逆もあり得る。
【００２７】
クラウドプロバイダ１５５は、コンピューティングデバイス、たとえば、パーソナルコンピュータで１つまたは複数のアプリケーションを実行するためのインフラストラクチャおよびプラットフォームを管理するようにさらに構成されてもよい。
【００２８】
クラウドプロバイダ１５７は、同様に、１つまたは複数のクラスタ１２０、１３０、１４０、１７０、１８０、および１９０のデータストレージノードたとえばサーバに記憶された関連付けられたアプリケーションデータを使用して、コンピューティングデバイス上で１つまたは複数のアプリケーションを実行するためのインフラストラクチャおよびプラットフォームを管理するように構成されてもよい。
【００２９】
図２は、本明細書に説明される少なくともいくつかの実施形態に従って構成される、ストレージネットワークにおけるデータ移行の少なくとも一部が実装され得るデータセンタのクラスタの例示的構成２００を示す図である。クラスタは、クラスタ１２０、１３０、１４０、１７０、１８０、および１９０のいずれか１つであってよい。図示のように、例示的構成２００は、少なくとも、各々が少なくとも１つのプロセッサ２０３、２０５、２０７、および２０９をそれぞれ含むことができる１つまたは複数のデータストレージノード２０２、２０４、２０６、および２０８と、ローカルクラウドネットワーク２１０と、インターフェース２１２とを含むことができる。しかし、この構成は、単に例示であり、いかなる形でも、たとえば、クラスタ当たりのデータストレージノードの数量、またはさらにデータストレージノード当たりのプロセッサの数量に関しても、限定することを意図していない。
【００３０】
各データストレージノード２０２、２０４、２０６、および２０８は、データを受信しその中にデータを記憶するように構成され得る少なくとも１つのデバイスたとえばサーバを表すことができる。
【００３１】
各データストレージノード２０２、２０４、２０６、および２０８には、既知のネットワークプロトコルに従って、外部ネットワークアドレスまたはローカルネットワークアドレスとされ得る一意のネットワークアドレス、たとえば、ＩＰアドレスが割り当てられてもよい。それぞれのクラスタに対応するデータストレージノード２０２、２０４、２０６、２０８は、互いに対して、また、他のクラスタに対応する他のデータストレージノードに対して通信可能に結合されるように構成、設計、および／またはプログラムされている。
【００３２】
それぞれのデータストレージノードに対応する各プロセッサ２０３、２０５、２０７および２０９は、タスクを実行し、データを処理し、かつ／またはそれぞれのデータストレージノード２０２、２０４、２０６、および２０８の機能を制御するように構成することができるマイクロコントローラであってもよい。各プロセッサ２０３、２０５、２０７および２０９はさらに、１つまたは複数の他のクラスタに対応する１つまたは複数のデータストレージノードから受信した信号を処理し、受信した信号に基づいてデータを移行する命令を提供するように構成、設計、および／またはプログラムされてもよい。たとえば、１つまたは複数の実施形態によれば、各プロセッサ２０３、２０５、２０７および２０９は、データストレージノード間のデータの移行に対する時間要件を割り当て、利用可能な伝送チャネルを決定し、伝送チャネルの長さまたはタイプのような所定のパラメータに基づいて、利用可能な伝送速度の最大伝送速度を割り当てるように構成されてもよい。さらに、各プロセッサ２０３、２０５、２０７、および２０９は、データの移行のための固定伝送チャネルを算出または決定するように構成されてもよい。算出された固定伝送チャネルの個数は、データの送信を行うために利用される伝送チャネルの個数を示すことができる。各プロセッサ２０３、２０５、２０７、および２０９はまた、固定伝送チャネルを使用してデータの移行を開始した後、検出された残りのデータ、すなわち未だ移行されるべきデータを送信するために使用されるランダム伝送チャネルを選択するように構成されてもよい。したがって、各プロセッサ２０３、２０５、２０７、および２０９はさらに、それぞれ対応するデータストレージノード、たとえば、データストレージノード２０２から、共通のクラスタ内の別のデータストレージノード、たとえば、データストレージノード２０６へ、あるいは１つまたは複数の他のクラスタに対応する１つまたは複数のデータストレージノードへのデータ移行を容易にするように構成、設計、および／またはプログラムされてもよい。
【００３３】
１つまたは複数の実施形態において、ローカルクラウドネットワーク２１０は、共通のクラスタ２００内のデータストレージノード２０２、２０４、２０６、および２０８の間の通信を容易にするように設けられてもよい。ローカルクラウドネットワーク２１０は、同様に、たとえば、広域ネットワーク（ＷＡＮ）（たとえば、インターネット）、ローカルエリアネットワーク（ＬＡＮ）、またはデータ移行を行うのに適した任意のタイプのネットワークのいずれか１つによって実装されてもよい。１つまたは複数の他の実施形態において、クラウドネットワーク１５０は、インターフェース２１２を使用して、データストレージノード２０２、２０４、２０６、および２０８の間の通信を容易にすることができる。
【００３４】
インターフェース２１２は、データストレージノード２０２、２０４、２０６、および２０８の１つまたは複数と、ネットワーククラウド１５０を介する他のクラスタおよび／またはクラウドプロバイダ１５５および１５７との通信を容易にするように構成、設計、および／またはプログラムされ得るネットワークインターフェースを表すことができる。代替的には、各データストレージノード２０２、２０４、２０６、および２０８は、共通のクラスタ内の他のデータストレージノードあるいは１つまたは複数の異なるクラスタとの通信を促進するための外部ネットワークインターフェース２１２の関連した実施形態を含むことができる。
【００３５】
図３は、本明細書に説明される少なくともいくつかの実施形態に従って構成される、ノード間でストレージネットワークにおけるデータ移行の少なくとも一部が実装され得る第１のデータストレージノードおよび第２のデータストレージノードの例示的構成を示す。例示的構成３００は、プロセッサ１２３ならびに乱数発生器１２５およびチャネルコントローラ１２６を含むことができる、クラスタ１２０に対応するデータストレージノード１２２、すなわち、第１のデータストレージノードを図示し、コンテンツバッファ１２７はプロセッサ１２３と通信するように提供されてよく、また、プロセッサ１７３および乱数発生器１７５を含むことができるデータストレージノード１７２、すなわち、第２のデータストレージノードを図示する。しかし、この構成は単に例であり、いかなる形でも限定することを意図していない。データストレージノード１２３、すなわち第１のデータストレージと、データストレージノード１７２、すなわち第２のデータストレージノードとの間のデータ移行を本明細書に説明する。
【００３６】
いくつかの実施形態によれば、データストレージノード１２２およびデータストレージノード１７２は、共通すなわち同じクラウドプロバイダ１５５または１５７によってホストすることができる。代替的には、各データストレージノード１２２および１７２は、クラウドプロバイダ１５５および１５７のうちのそれぞれ異なるクラウドプロバイダによってホストすることができる。
【００３７】
各データストレージノード１２２および１７２は、共通のクラスタ、共通のデータセンタ内のクラスタ、または別のデータセンタに対応する別のクラスタに含まれ得る他のデータストレージノードから受信したデータを記憶するようにそれぞれ構成されてよい。１つまたは複数の実施形態において、プロセッサ１２３および１７３は、それぞれのデータストレージノード１２２および１７３から他方のデータストレージノード１２２または１７２へのデータの送信に対する時間要件を独立して割り当てるように構成されてもよい。たとえば、プロセッサ１２３は、データストレージノード１２２からデータストレージノード１７２にデータを送信するための時間要件を割り当てるように構成、設計、および／またはプログラムされてもよい。プロセッサ１２３は、たとえば、送信されるべきデータの量に基づいて、時間要件を割り当ていることができる。時間要件は、それぞれのデータストレージノードに割り当てられ記憶され、データ送信を行うときにそのタイミングを監視するために使用され得る。
【００３８】
さらに、プロセッサ１２３は、データストレージノード１２２とデータストレージノード１７２との間でデータを送信する際に使用するための利用可能な伝送チャネルの最大数を決定するように構成されてもよい。プロセッサ１２３は、データストレージノード１２２からデータストレージノード１７２へ移行されるべきデータの量に基づいて、利用可能な伝送チャネルの最大数を決定することができる。さらに、利用可能な伝送チャネルの最大数は、データストレージノード１２２からデータストレージノード１７２へのデータ移行の時に使用されない伝送チャネルの量に基づいて決定されてもよい。
【００３９】
本明細書に説明されるように、「時間要件」は、データストレージノード１２２からデータストレージノード１７２へのデータ移行を完了するために割り振ることができる時間の最大量を表すことができる。割り振られた時間内にデータ移行が完了しなかった場合、プロセスを停止する、かつ／またはデータ移行プロセスをリセットすることができる。
【００４０】
プロセッサ１２３は、あるデータストレージノードから別のデータストレージノードにデータを送信するために利用されるべき伝送チャネルの最大数を決定した後、利用可能な伝送チャネルの各々の所定のパラメータに基づいて、利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当てるようにさらに構成されてもよい。１つまたは複数の実施形態によれば、所定のパラメータは、調整を受けないそれぞれの利用可能なチャネルの物理的特性または他のファクタ、たとえば、伝送チャネルの長さまたはタイプに基づく、固定値を含むことができる。そして、データは、時間要件に従って、それぞれの伝送チャネルの各々に対する最大チャネル伝送速度までの速度で、データストレージノード１２２からデータストレージノード１７２に送信され得る。
【００４１】
データストレージノード１２２とデータストレージノード１７２との間のデータ送信は、いくつかの個数の固定伝送チャネル、およびいくつかの個数のランダム伝送チャネルに基づいて容易にされ得る。プロセッサ１２３は、データストレージノード１２２とデータストレージノード１７２との間の送信を容易にするために、利用可能な伝送チャネルのうちのいくつかの個数の固定伝送チャネルを算出するように構成、設計、および／またはプログラムされてもよい。データストレージノード１２２からデータストレージノード１７２へのデータ送信は、固定伝送チャネルを介して開始され得る。プロセッサ１２２は、固定伝送チャネルを介してデータの移行を開始した後、データストレージ１７２に送信されるべきデータストレージノード１２２内の残りのデータを検出するようにさらに構成されてもよい。プロセッサ１２３は、検出した残りのデータを送信するための利用可能な伝送チャネルのうちのいくつかの個数のランダム伝送チャネルをランダムに選択するように構成、設計、および／またはプログラムされてもよい。ランダム伝送チャネルによって送信されるべき残りのデータは、コンテンツバッファ１２７に入れられる。残りのデータの検出は、たとえば、コンテンツバッファ１２７を使用してプロセッサ１２４によって行われる。ランダム送信の各反復の際、プロセッサ１２４のチャネルコントローラ１２６が、コンテンツバッファ１２７が空であるかどうかを問い合わせることができる。コンテンツバッファ１２４が空であるとチャネルコントローラ１２６が決定した場合、チャネルコントローラ１２６は、データストレージノード１２２に残りのデータを求める要求を送ることができる。
【００４２】
乱数発生器１２５は、データストレージノード１２２のプロセッサ１２３内に設けられ、残りのデータが送信され得るランダム伝送チャネルの個数をランダムに選択するように構成され得る。
【００４３】
乱数発生器１７５は、同様に、データストレージノード１７２のプロセッサ１７３内に設けられ、残りのデータが送信され得るランダム伝送チャネルの個数をランダムに選択するように構成され得る。
【００４４】
このように、図３は、第１のデータストレージノードと第２のデータストレージノードとの間のデータ移行の例示的構成３００を示している。
【００４５】
図４は、本明細書に説明されるような、ストレージネットワークにおけるデータ移行のいくつかの実施形態による、固定伝送チャネルおよびランダム伝送チャネルの例示的構成を示す。図４に示すように、固定伝送チャネル４０５は、チャネル１、２、および３を含むことができ、ランダム伝送チャネル４１０は、チャネル４、５、６、７、８、９および１０を含むことができる。図４に関連して説明されるデータの送信または移行は、本明細書では図示された特徴を参照して説明され、また図３に関連して説明されるが、そのような説明は、例示的実施形態を限定するものとして解釈されるべきではない。
【００４６】
クラスタ１２０のデータストレージノード１２２とクラスタ１７０のデータストレージノード１７２との間のデータ移行は、本明細書に説明されるさまざまな実施形態に従って行うことができる。いくつかの実施形態によれば、データストレージノード１２２のプロセッサ１２３は、データストレージシステム１００に提供された利用可能な伝送チャネルのうちのいくつかの個数の固定伝送チャネル４０５、たとえば、チャネル１から３を算出して、データストレージノード１２２すなわち送信データストレージノードと、データストレージノード１７２すなわち受信データストレージノードとの間のデータ移行を容易にすることができる。データストレージノード１２２からデータストレージノード１７２へのデータの移行は、固定伝送チャネル４０５を介して開始することができる。１つまたは複数の実施形態によれば、固定伝送チャネル４０５は、データストレージノードたとえばサーバ上で実行されているアプリケーションに対応するデータを送信することができる。固定伝送チャネル４０５を介するデータの送信の開始後、プロセッサ１２３が、データストレージノード１７２に送信されるべきデータがデータストレージノード１２２内に残っていると決定した場合、プロセッサ１２３は、残りのデータをデータストレージノード１７２に送信するための、利用可能な伝送チャネルのうちのいくつかの個数のランダム伝送チャネル４１０をランダムに選択することができる。
【００４７】
プロセッサ１２３は、乱数発生器１２５を使用してランダム伝送チャネル４１０のランダム選択を行うことができる。プロセッサ１２３は、ランダムに選択された伝送チャネル４１０の少なくとも１つ、たとえば、ランダム伝送チャネル４を使用して、検出した残りのデータを送信するようにさらに構成されてもよい。いくつかの実施形態によれば、プロセッサ１２３は、ランダム伝送チャネル４１０を設定するようにさらに構成されてもよい。たとえば、ランダム伝送チャネル４１０は、ランダム伝送チャネル４１０のランダムに選択されたいくつかの各々にライフサイクルを割り当てることによって、設定されてもよい。ランダムチャネルのライフサイクルは、ランダム値として予め定義されてもよい。代替的には、ランダムチャネルのライフサイクルは、コンテンツバッファ内で発見される残りのデータの量に基づいて決定されてもよい。残りのデータがコンテンツバッファ内で発見されない場合、ランダムチャネルのライフサイクルを終了し、ランダムチャネルを閉じてもよい。さらに、ランダム伝送チャネル４が、１つの時間間隔ｔのライフサイクルを有するとともに、ランダム伝送チャネル５が、２つの時間間隔２ｔのライフサイクルを有することもできる。各ランダム伝送チャネル４１０のライフサイクルは、それぞれのランダム伝送チャネル４１０の対応するチャネル容量の約２０％から約８０％の間の範囲であってもよい。プロセッサ１２３は、少なくとも１つのランダム伝送チャネル４１０、たとえば、ランダム伝送チャネル４を、そのライフサイクルの満了後、または残りのデータの送信の完了後に解放する、すなわちその使用を打ち切るように構成されてもよい。
【００４８】
プロセッサ１２３は、少なくとも１つのランダム伝送チャネル４のライフサイクルの満了後に、検出した残りのデータの送信を完了するための、別のランダム伝送チャネル１１０、たとえばランダム伝送チャネル５から１０のうちの１つを選択するようにさらに構成されてもよい。伝送チャネルの確立および解放は、データストレージノード１２２または１７２のいずれかのプロセッサ１２３または１７３を介して行われてもよい。すなわち、１つまたは複数の実施形態によれば、送信データストレージノードまたは受信データストレージノードのいずれかが、ランダム伝送チャネル４１０を設定または解放することができる。
【００４９】
このように、図４は、データ移行が実装され得る固定伝送チャネル４０５およびランダム伝送チャネル４１０の例示的構成４００を示している。
【００５０】
図５は、本明細書に説明される少なくともいくつかの実施形態による、ストレージネットワークにおけるデータ移行のための動作の処理フローの例示的構成を示す。図示のように、処理フロー５００は、クラスタ１２０、１３０、１４０、１７０、１８０、または１９０のうちの１つまたは複数のデータストレージノード、たとえば、図３に関連して図示し説明したようなクラスタ１２０のデータストレージノード１２２またはクラスタ１７０のデータストレージノード１７２の一部となり得るさまざまなコンポーネントによって実行される、サブプロセスを含むことができる。しかし、処理フロー５００は、そのようなコンポーネントに限定されず、ここで説明するサブプロセスの２つ以上の順序を変更すること、サブプロセスの少なくとも１つを除去すること、さらなるサブプロセスを追加すること、コンポーネントを置換すること、あるいはさらに以下に説明する他のコンポーネントと一致するサブ処理の役割を担うさまざまなコンポーネントを有することによって、修正が行われてもよい。処理フロー５００は、ブロック５０２、５０４、５０６、５０８、５１０、および／または５１２のうちの１つまたは複数によって例示されるようなさまざまな動作、機能、または処理を含んでよい。処理フロー５００は、ブロック５０２で開始することができる。
【００５１】
ブロック５０２（時間要件を割り当てる）は、データストレージノードのプロセッサ、たとえば、データストレージノード１２２のプロセッサ１２３が、それぞれのデータストレージノード１２２から別のデータストレージノードたとえばデータストレージノード１７２へのデータの送信に対して、時間要件を割り当てることを表すことができる。割り当てられる時間要件は、移行されるべきデータの量に基づいて、データストレージノード１２２からデータストレージノード１７２へのデータの移行を完了するために割り振られる時間の最大量とすることができる。時間要件は、データストレージノード１２２に割り当てられ記憶され、データストレージノード間のデータの送信のタイミングを監視する際に使用され得る。処理フロー５００は、ブロック５０２からブロック５０４に進むことができる。
【００５２】
ブロック５０４（最大利用可能チャネルを決定する）は、プロセッサ１２３が、データストレージノード１２２とデータストレージノード１７２との間のデータ移行を完了するための利用可能なチャネルの最大数を決定することを表すことができる。１つまたは複数の実施形態によれば、移行されるべきデータの量に基づいて、またはストレージネットワーク１００内の他のデータストレージノードの間の移行データのために使用されていない伝送チャネルの個数に基づいて決定を行うことができる。処理フロー５００は、ブロック５０４からブロック５０６に進むことができる。
【００５３】
ブロック５０６（最大チャネル伝送速度を割り当てる）は、プロセッサ１２３が、伝送チャネルの所定のパラメータに基づいて、利用可能な伝送チャネルの各々に対して最大チャネル伝送速度を割り当てることを表すことができる。所定のパラメータは、調整を受けないチャネルの物理的特性またはいくつかの他のファクタに基づく、固定値を含むことができる。たとえば、所定のパラメータは、利用可能な伝送チャネルの長さまたはタイプを含むことができる。処理フロー５００は、ブロック５０６からブロック５０８に引き続き進むことができる。
【００５４】
ブロック５０８（固定伝送チャネルを算出する）は、プロセッサ１２３が、たとえば、データストレージノード１２２からデータストレージノード１７２へのデータ移行を容易にするために、利用可能な伝送チャネルのうちのいくつかの個数の固定伝送チャネル４０５を算出することを表すことができる。この算出は、各伝送チャネルの伝送速度で割った移行されるべきデータの量に基づいてもよい。算出された固定伝送チャネル４０５の個数は、データストレージノード１２２とデータストレージノード１７２との間でデータを移行するために必要とされる伝送チャネルの個数を示すことができる。処理フロー５００は、ブロック５０８からブロック５１０に引き続き進むことができる。
【００５５】
ブロック５１０（データを送信する）は、利用可能な伝送チャネルの固定伝送チャネル４０５を介するデータストレージノード１２２からデータストレージノード１７２へのプロセッサ１２３によるデータの送信の開始を表すことができる。処理フロー５００は、ブロック５０８からブロック５１０に引き続き進むことができる。
【００５６】
ブロック５１２（残りのデータの存在を検出する）は、固定伝送チャネル４０５を介するデータの送信の開始後、プロセッサ１２３が、データストレージノード１７２に未だ送信されるべきデータストレージノード１２２内に残っているデータの存在を検出することを表すことができる。処理フロー５００は、ブロック５１２からブロック５１４に引き続き進むことができる。
【００５７】
ブロック５１４（ランダム伝送チャネルを選択し、残りのデータを送信する）は、プロセッサ１２３が、検出した残りのデータを送信するための利用可能な伝送チャネルのうちのいくつかの個数のランダム伝送チャネル４１０をランダムに選択し、少なくとも１つのランダム伝送チャネル４１０を使用して、検出した残りのデータを送信することを表すことができる。ランダム伝送チャネル４１０の個数のランダム選択は、乱数発生器１２５によって容易にされ得る。プロセッサ１２３は、ランダム伝送チャネル４１０のランダムに選択されたいくつかの各々にライフサイクルを割り当て、したがって、各ランダム伝送チャネルが、そのライフサイクルの満了後、または残りのデータの送信の完了後に解放されるようにさらに構成されてもよい。選択されたランダム伝送チャネル４１０の総数、および固定伝送チャネル４０５およびランダム伝送チャネル４１０を使用するデータストレージノード１２２とデータストレージノード１７２との間のデータの移行を完了するための時間の量は、プロセッサ１２３によって割り当てられる時間要件と等しい必要がある。
【００５８】
このように、図５は、データストレージノードのプロセッサによって実行される例示的処理フローを示している。
【００５９】
図６は、本開示による、ストレージネットワークにおけるデータ移行のために構成された例示的コンピューティングデバイス６００を示すブロック図である。コンピューティングデバイス６００は、クラウドコンピューティングサービスにアクセスするためのエンドユーザにおけるコンピューティングデバイス、クラウドプロバイダたとえば図１に示したクラウドプロバイダ１５５または１５７におけるコンピューティングデバイス、あるいは少なくとも１つまたは複数の要素のうちの少なくとも１つを表すことができ、たとえば、コンピューティングデバイス６００のプロセッサは、データストレージノードたとえば図３に示したクラスタ１２０のデータストレージノード１２２内で利用することができる。非常に基本的な構成６０２では、コンピューティングデバイス６００は通常、１つまたは複数のプロセッサ６０４およびシステムメモリ６０６を含む。メモリバス６０８は、プロセッサ６０４とシステムメモリ６０６との間の通信のために使用することができる。
【００６０】
所望の構成に応じて、プロセッサ６０４は、任意のタイプとしてよく、任意のタイプには、マイクロプロセッサ（μＰ）、マイクロコンピュータ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）またはこれらの任意の組み合わせが含まれるがそれらに限定されない。プロセッサ６０４は、レベル１キャッシュ６１０やレベル２キャッシュ６１２など１つまたは複数のレベルのキャッシング、プロセッサコア６１４、およびレジスタ６１６を含むことができる。例示的プロセッサコア６１４は、演算論理ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはこれらの任意の組み合わせを含むことができる。例示的メモリコントローラ６１８がプロセッサ６０４とともに使用されてもよく、またはいくつかの実装形態では、メモリコントローラ６１８がプロセッサ６０４の内部部品であってもよい。プロセッサ６０４は、各データストレージノードのプロセッサ、たとえば、図３に示したようなデータストレージノード１２２のプロセッサ１２３を表すことができる。
【００６１】
所望の構成に応じて、システムメモリ６０６は、任意のタイプとしてよく、任意のタイプには、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）またはこれらの任意の組み合わせが含まれるがそれらに限定されない。システムメモリ６０６は、オペレーティングシステム６２０、１つまたは複数のアプリケーション６２２、およびプログラムデータ６２４を含むことができる。アプリケーション６２２は、データストレージノードの間、たとえば、図３に示したようなストレージネットワーク１００内のデータストレージノード１２２および１７２の間のデータ移行を行うように構成されたデータ経路ルーティングアルゴリズム６２６を含むことができる。プログラムデータ６２４は、本明細書に説明されるように、データ経路ルーティングアルゴリズム６２６を構成するために有用となり得る経路ルーティング構成情報６２８を含むことができる。いくつかの実施形態では、データストレージノード間、たとえば、データストレージノード１２２および１７２間のロバストなマルチパスデータルーティングの実装が本明細書に説明されるように提供され得るように、アプリケーション６２２は、オペレーティングシステム６２０上のプログラムデータ６２４と共に動作するように構成され得る。この説明した基本構成６０２は、図６において内側の破線内のそれらのコンポーネントによって示される。
【００６２】
コンピューティングデバイス６００は、基本構成６０２と、任意の必要とされるデバイスおよびインターフェースとの間の通信を容易にするための追加の特徴または機能および追加のインターフェースを有することができる。たとえば、ストレージインターフェースバス６３４を介する、基本構成６０２と１つまたは複数のデータ記憶装置６３２との間の通信を容易にするために、バス／インターフェースコントローラ６３０を使用することができる。データ記憶装置６３２は、取外し式ストレージデバイス６３６、非取外し式ストレージデバイス６３８、またはこれらの組み合わせとすることができる。取外し式ストレージおよび非取外し式ストレージデバイスの例としては、いくつか挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光学ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、ならびにテープドライブが含まれる。例示的コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術で実装される揮発性および不揮発性の取外し式および非取外し式媒体を含むことができる。
【００６３】
システムメモリ６０６、取外し式ストレージデバイス６３６、および非取外し式ストレージデバイス６３８は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶装置、または、所望の情報を格納するために使用でき、コンピューティングデバイス６００によってアクセスできる他の任意の媒体が含まれるが、これらに限定されない。そのようなコンピュータ記憶媒体は、コンピューティングデバイス６００の一部であってもよい。
【００６４】
コンピューティングデバイス６００はまた、さまざまなインターフェースデバイス（たとえば、出力装置６４２、周辺インターフェース６４４、および通信装置６４６）からバス／インターフェースコントローラ６３０を介する基本構成６０２への通信を容易にするためのインターフェースバス６４０を含むこともできる。例示的出力装置６４２は、１つまたは複数のＡ／Ｖポート６５２を介して、ディスプレイまたはスピーカーなどのさまざまな外部デバイスに通信するように構成され得る、グラフィック処理ユニット６４８およびオーディオ処理ユニット６５０を含むことができる。例示的周辺インターフェース６４４は、１つまたは複数のＩ／Ｏポート６５８を介して、入力装置、たとえば、キーボード、マウス、ペン、音声入力装置、タッチ入力装置など、または他の周辺装置、たとえば、プリンタ、スキャナなどのような外部デバイスと通信するように構成され得る、シリアルインターフェースコントローラ６５４またはパラレルインターフェースコントローラ６５６を含む。例示的通信装置６４６は、１つまたは複数の通信ポート６６４を経由するネットワーク通信リンクを介して１つまたは複数の他のコンピューティングデバイス６６２と通信するのを容易にするように構成され得る、ネットワークコントローラ６６０を含む。
【００６５】
ネットワーク通信リンクは、通信媒体の一例であり得る。通信媒体は、一般に、搬送波もしくは他の移送メカニズムなどの変調データ信号におけるコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって具現化することができ、任意の情報送達媒体を含むことができる。「変調データ信号」は、信号内で情報を符号化するような様式でその特性の１つまたは複数が設定または変更された信号であり得る。限定ではなく例として、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに、音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）、および他のワイヤレス媒体などのワイヤレス媒体を含むことができる。本明細書で使用されるコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含むことができる。
【００６６】
コンピューティングデバイス６００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルメディアプレーヤデバイス、ワイヤレスウェブ閲覧デバイス、パーソナルヘッドセットデバイス、アプリケーション固有デバイス、または任意の上記の機能を含むハイブリッドデバイスのような、スモールフォームファクタのポータブル（またはモバイル）電子デバイスの一部分として実装されてもよい。コンピューティングデバイス６００は、ラップトップコンピュータ構成とラップトップコンピュータ以外の構成との両方を含めてパーソナルコンピュータとして実装されてもよい。
【００６７】
例示の実施形態では、本明細書に説明される動作およびプロセスなどのいずれも、コンピュータ可読媒体に記憶されるコンピュータ可読命令として実装することができる。コンピュータ可読命令は、モバイルユニットのプロセッサ、ネットワーク要素、および／または他のコンピューティングデバイスによって実行することができる。
【００６８】
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に（いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で）コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび／またはシステムおよび／または他の技術を実装することができるさまざまな達成手段、たとえば、ハードウェア、ソフトウェア、および／またはファームウェアがあり、好ましい達成手段は、プロセスおよび／またはシステムおよび／または他の技術が導入される状況によって異なり得る。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび／またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアの何らかの組み合わせを選択することができる。
【００６９】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、システム構成１００の装置および／またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組み合わせにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして、たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして、たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして、ファームウェアとして、あるいは実質上それらの任意の組み合わせとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー（登録商標）ディスク、ハードディスクドライブ、ＣＤ、ＤＶＤ、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【００７０】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム、たとえば、位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータを含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【００７１】
本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００７２】
最後に、本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００７３】
通常、本明細書において、特に添付の特許請求の範囲、たとえば、添付の特許請求の範囲の本体部において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていること、たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、などが当業者には理解されよう。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである、ということを示唆していると解釈されるべきではない。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであること、たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味することが当業者には理解されよう。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味、たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない意味で意図されている。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味、たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定���れない意味で意図されている。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００７４】
上記から、本開示のさまざまな実施形態は例示のために本明細書に説明されていること、ならびに本開示の範囲および趣旨から逸脱することなくさまざまな修正が行われ得ることは理解されよう。したがって、本明細書で開示されたさまざまな実施形態は限定することを意図するものではなく、真の範囲および趣旨は添付の特許請求の範囲によって示される。
【図１】
2016528598.tif 000003
【図２】
2016528598.tif 000004
【図３】
2016528598.tif 000005
【図４】
2016528598.tif 000006
【図５】
2016528598.tif 000007
【図６】
2016528598.tif 000008
【国際調査報告】
2016528598.tif 000009
2016528598.tif 000010