IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許-共有メモリ・ファイル転送 図1
  • 特許-共有メモリ・ファイル転送 図2
  • 特許-共有メモリ・ファイル転送 図3
  • 特許-共有メモリ・ファイル転送 図4
  • 特許-共有メモリ・ファイル転送 図5
  • 特許-共有メモリ・ファイル転送 図6
  • 特許-共有メモリ・ファイル転送 図7
  • 特許-共有メモリ・ファイル転送 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-15
(45)【発行日】2023-08-23
(54)【発明の名称】共有メモリ・ファイル転送
(51)【国際特許分類】
   G06F 13/10 20060101AFI20230816BHJP
   H04L 69/14 20220101ALI20230816BHJP
   G06F 13/14 20060101ALI20230816BHJP
【FI】
G06F13/10 320Z
H04L69/14
G06F13/10 340A
G06F13/14 310H
G06F13/14 330A
【請求項の数】 4
(21)【出願番号】P 2022001854
(22)【出願日】2022-01-07
(62)【分割の表示】P 2020500894の分割
【原出願日】2018-06-15
(65)【公開番号】P2022050566
(43)【公開日】2022-03-30
【審査請求日】2022-01-11
(31)【優先権主張番号】15/648,950
(32)【優先日】2017-07-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】チャン、ジエン
(72)【発明者】
【氏名】チェン、シュン ツ
(72)【発明者】
【氏名】カオ、ムー ダン
(72)【発明者】
【氏名】ヤン、ティアン ジー
(72)【発明者】
【氏名】ジャオ、ユー
(72)【発明者】
【氏名】ヤオ、イー
【審査官】小林 義晴
(56)【参考文献】
【文献】特開2005-018643(JP,A)
【文献】国際公開第2016/057091(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10
H04L 69/14
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
共有メモリ・ファイル転送セットアップ方法であって、
ネットワーク・コントローラ・ハードウェア・デバイスのプロセッサによって、複数のハードウェア・ノード間に接続された複数のネットワーク・リンクを構成することであって、前記複数のハードウェア・ノードの各ハードウェア・ノードが、コマンド・セクションおよびデータ・ストレージ・セクションを含む、前記構成することと、
前記プロセッサによって、前記複数のハードウェア・ノードの数に基づいて、ハードウェア・ディスク・ドライブについてのストレージ容量を判断することと、
前記プロセッサによって、前記ストレージ容量に基づいて、前記ハードウェア・ディスク・ドライブの前記ストレージ容量を有するセクションに前記複数のハードウェア・ノードを関連付け、少なくとも1つのストレージ・リンクを介して前記ハードウェア・ディスク・ドライブを前記複数のハードウェア・ノードに接続することと、
前記プロセッサによって、前記複数のハードウェア・ノードのそれぞれの中にソフトウェア・エージェントをインストールすることと、
前記プロセッサによって、前記複数のネットワーク・リンクおよび前記少なくとも1つのストレージ・リンクについてのプロパティを構成することと、
前記プロセッサによって、それぞれの前記ソフトウェア・エージェントを有効にすることと、
それぞれの前記ソフトウェア・エージェントを実行する前記プロセッサによって、前記複数のネットワーク・リンクおよび前記少なくとも1つのストレージ・リンクのそれぞれについて接続性状態、帯域幅、および負荷状況をテストすることと、
前記プロセッサによって、それぞれの前記コマンド・セクションを介して、それぞれの前記ハードウェア・ノードを前記ハードウェア・ディスク・ドライブに登録することと、
前記プロセッサによって、前記複数のネットワーク・リンクおよび前記少なくとも1つのストレージ・リンクを介して前記ハードウェア・ディスク・ドライブと前記複数のハードウェア・ノードとの間の通信を有効にすることと、
を含む、方法。
【請求項2】
前記ハードウェア・ディスク・ドライブについての前記ストレージ容量を前記判断することが、前記複数のネットワーク・リンクのそれぞれについての帯域幅にさらに基づく、請求項1に記載の方法。
【請求項3】
前記複数のネットワーク・リンクおよび前記少なくとも1つのストレージ・リンクについての前記プロパティが、前記複数のネットワーク・リンクおよび前記少なくとも1つのストレージ・リンクについての優先度レベル、ならびに前記複数のネットワーク・リンクおよび前記少なくとも1つのストレージ・リンクの優先度を判断するために実行される前記テストに関連付けられた指定された時間フレームを含む、請求項1に記載の方法。
【請求項4】
前記複数のネットワーク・リンクが、TCP/IPネットワーク・リンクを含む、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、メモリ内で効率的にデータを転送する方法に関し、特に、複数のハードウェア・ノード間に接続されるネットワーク・リンクを評価し、ネットワーク・リンクを介して送信ハードウェア・ノードから受信機ハードウェア・ノードへデータ・ファイルの異なる部分を送信する方法および関連システムに関する。
【背景技術】
【0002】
実行中のアプリケーションに関してサーバ間でデータを転送するプロセスが、よく知られている。ネットワーク・モデルおよび関連プロトコルに関して、現在多数の解決策が存在する。代替的な現在の解決策は、標準の共有ストレージおよび分散型ファイル・システムに関連し、典型的には、データを記憶するためだけに使用され、それによって通信およびファイル転送プロセスを制限する。同様に、典型的な共有ストレージおよび分散型ファイル・システムは、データ転送遅延時間に関連し、共有ストレージ環境においてデータを転送するための標準的な速度を提供するだけである。
【0003】
しかしながら、前述の解決策は、帯域幅制限および安定性の問題に関連する場合があり、それによって、企業システムの性能を制限する。さらには、前述の解決策は、データ・チャネル・フェイルオーバの解決策を防止するために有効にされないことがある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
したがって、当技術分野において、共有ストレージ環境においてデータ転送プロセスを高速化するための自己発見プロセスを提供する必要性が存在する。さらには、当技術分野において、IPネットワークが機能不全であると判断されるときに代替チャネルに関する自動フェイルオーバ・プロセスを提供し、それによってデータ転送についての高い可用性を提供する必要性が存在する。
【課題を解決するための手段】
【0005】
発明の第1の態様は、共有メモリ・ファイル転送セットアップおよび改善方法であって、ネットワーク・コントローラ・ハードウェア・デバイスのプロセッサによって、複数のハードウェア・ノード間に接続された複数のネットワーク・リンクを構成することであって、複数のハードウェア・ノードの各ハードウェア・ノードが、コマンド・セクションおよびデータ・ストレージ・セクションを含む、構成することと、プロセッサによって、複数のハードウェア・ノードの数に基づいて、ハードウェア・ディスク・ドライブについてのストレージ容量を判断することと、プロセッサによって、ストレージ容量に基づいて、少なくとも1つのストレージ・リンクを介してハードウェア・ディスク・ドライブを複数のハードウェア・ノードに接続することと、プロセッサによって、複数のハードウェア・ノードのそれぞれの中にソフトウェア・エージェントをインストールすることと、プロセッサによって、複数のネットワーク・リンクおよび少なくとも1つのストレージ・リンクについてのプロパティを構成することと、プロセッサによって、それぞれのソフトウェア・エージェントを有効にすることと、それぞれのソフトウェア・エージェントを実行するプロセッサによって、複数のネットワーク・リンクおよび少なくとも1つのストレージ・リンクのそれぞれについて接続性状態、帯域幅、および負荷状況をテストすることと、プロセッサによって、それぞれのコマンド・セクションを介して、それぞれのハードウェア・ノードをハードウェア・ディスク・ドライブに登録することと、プロセッサによって、複数のネットワーク・リンクおよび少なくとも1つのストレージ・リンクを介してハードウェア・ディスク・ドライブと複数のハードウェア・ノードとの間の通信を有効にすることと、を含む方法を提供する。
【0006】
発明の第2の態様は、共有メモリ・ファイル転送の使用および改善方法であって、受信機ホスト・ハードウェア・ノードのプロセッサによって、追加ハードウェア・ノードからデータ・ファイルを転送するための要求を受信することと、プロセッサによって、データ・ファイルを説明するサマリを受信することと、プロセッサによって、複数のネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスを介して追加ハードウェア・ノードから、データ・ファイルの複数のデータ・セグメントを受信することであって、複数のネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスが、受信機ホスト・ハードウェア・ノードと追加ハードウェア・ノードとの間に接続される、受信することと、プロセッサによって、それぞれのセグメントの受信成功を示す、複数のデータ・セグメントの各セグメントについて確認応答通知を、追加ハードウェア・ノードへ送信することと、プロセッサによって、複数のネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスを介して追加ハードウェア・ノードから受信機ホスト・ハードウェア・ノードへ、転送されているそれぞれのセグメントについての転送レートを記録することと、プロセッサによって、データ・ファイルの全てのセグメントが、受信機ホスト・ハードウェア・ノードによって受信されたと判断することと、プロセッサによって、複数のデータ・セグメントからデータ・ファイルを構築することと、を含む、方法を提供する。
【0007】
発明の第3の態様は、コンピュータ可読プログラム・コードを記憶するコンピュータ可読ハードウェア・ストレージ・デバイスを含む、コンピュータ・プログラム製品であって、コンピュータ可読プログラム・コードが、ホスト・ハードウェア・ノードのプロセッサによる実行時に共有メモリ・ファイル転送の使用および改善方法を実施するアルゴリズムを含み、方法が、プロセッサによって、追加ハードウェア・ノードからデータ・ファイルを転送するための要求を受信することと、プロセッサによって、データ・ファイルを説明するサマリを受信することと、プロセッサによって、複数のネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスを介して追加ハードウェア・ノードから、データ・ファイルの複数のデータ・セグメントを受信することであって、複数のネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスが、受信機ホスト・ハードウェア・ノードと追加ハードウェア・ノードとの間に接続される、受信することと、プロセッサによって、それぞれのセグメントの受信成功を示す、複数のデータ・セグメントの各セグメントについて確認応答通知を、追加ハードウェア・ノードへ送信することと、プロセッサによって、複数のネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスを介して追加ハードウェア・ノードから受信機ホスト・ハードウェア・ノードへ、転送されているそれぞれのセグメントについての転送レートを記録することと、プロセッサによって、データ・ファイルの全てのセグメントが、受信機ホスト・ハードウェア・ノードによって受信されたと判断することと、プロセッサによって、複数のデータ・セグメントからデータ・ファイルを構築することと、を含む、コンピュータ・プログラム製品を提供する。
【0008】
発明の第4の態様は、共有メモリ・ファイル転送の使用および改善方法であって、送信機ホスト・ハードウェア・ノードのプロセッサによって、送信機ホスト・ハードウェア・ノードと受信機ホスト・ハードウェア・ノードとの間でストレージ・デバイスを介してデータ・ファイルを転送するための複数のネットワーク・リンクのうちの利用可能な数を判断することと、プロセッサによって、複数のネットワーク・リンクのそれぞれについて関連優先度レベルを判断することと、プロセッサによって、受信機ホスト・ハードウェア・ノードにデータ・ファイルを転送するための要求を受信することと、プロセッサによって、要求に応答して、データ・ファイルを複数のセグメントに分割することと、プロセッサによって、送信シーケンスを複数のセグメントに割り当てることと、プロセッサによって、受信機ホスト・ハードウェア・ノードにデータ・ファイルを説明するサマリを送信することと、プロセッサによって、複数のネットワーク・リンクのそれぞれについて転送比率を判断することと、プロセッサによって、それぞれの転送比率に基づいて、受信機ホスト・ハードウェア・ノードに複数のネットワーク・リンクを介して複数のセグメントを送信することと、プロセッサによって、それぞれのセグメントの受信成功を示す、複数のデータ・セグメントの各セグメントについて確認応答通知を、受信機ホスト・ハードウェア・ノードから受信することと、プロセッサによって、セグメント・プール・ストレージ・デバイスからそれぞれのセグメントのコピーを削除することと、プロセッサによって、複数のネットワーク・リンクおよびストレージ・デバイスを介して受信機ホスト・ハードウェア・ノードへ、転送されているそれぞれのセグメントについての転送レートを記録することと、を含む、方法を提供する。
【0009】
発明の第5の態様は、コンピュータ可読メモリ・ユニットに連結されたプロセッサを含む送信機ホスト・ハードウェア・ノードであって、メモリ・ユニットが、コンピュータ・プロセッサによる実行時に共有メモリ・ファイル転送の使用および改善方法を実施する命令を含み、方法が、プロセッサによって、送信機ホスト・ハードウェア・ノードと受信機ホスト・ハードウェア・ノードとの間でストレージ・デバイスを介してデータ・ファイルを転送するための複数のネットワーク・リンクのうちの利用可能な数を判断することと、プロセッサによって、複数のネットワーク・リンクのそれぞれについて関連優先度レベルを判断することと、プロセッサによって、受信機ホスト・ハードウェア・ノードにデータ・ファイルを転送するための要求を受信することと、プロセッサによって、要求に応答して、データ・ファイルを複数のセグメントに分割することと、プロセッサによって、送信シーケンスを複数のセグメントに割り当てることと、プロセッサによって、受信機ホスト・ハードウェア・ノードにデータ・ファイルを説明するサマリを送信することと、プロセッサによって、複数のネットワーク・リンクのそれぞれについて転送比率を判断することと、プロセッサによって、それぞれの転送比率に基づいて、受信機ホスト・ハードウェア・ノードに複数のネットワーク・リンクを介して複数のセグメントを送信することと、プロセッサによって、それぞれのセグメントの受信成功を示す、複数のデータ・セグメントの各セグメントについて確認応答通知を、受信機ホスト・ハードウェア・ノードから受信することと、プロセッサによって、セグメント・プール・ストレージ・デバイスからそれぞれのセグメントのコピーを削除することと、プロセッサによって、複数のネットワーク・リンクおよびストレージ・デバイスを介して受信機ホスト・ハードウェア・ノードへ、転送されているそれぞれのセグメントについての転送レートを記録することと、を含む、送信機ホスト・ハードウェア・ノードを提供する。
【発明の効果】
【0010】
本発明は、無許可のメディア複製を防止することが可能な簡単な方法および関連システムを有利に提供する。
【図面の簡単な説明】
【0011】
図1】本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するシステムを示す。
図2】本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するエージェント起動プロセスを示す。
図3】本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するセットアップ・コードを構築するための、図1のシステムにより可能なプロセス・フローを詳細化したアルゴリズムを示す。
図4】本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するための、図1のシステムにより可能なプロセス・フローを詳細化したアルゴリズムを示す。
図5】本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するための、図1のシステムにより可能な代替プロセス・フローを詳細化した、図4のアルゴリズムに対する代替アルゴリズムを示す。
図6】本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するための、図1のシステムにより使用されるコンピュータ・システムを示す。
図7】本発明の実施形態による、クラウド・コンピューティング環境を示す。
図8】本発明の実施形態による、クラウド・コンピューティング環境によって提供される機能抽象レイヤのセットを示す。
【発明を実施するための形態】
【0012】
図1は、本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するシステム100を示す。典型的なサーバ・ベースのデータ転送プロセスは、アプリケーション・レイヤ・レベルにおいて実行されるプロセスに関連する。さらには、典型的なデータ転送プロセスは、異なる種類のプロトコル間の相互通信を可能にし得る。例えば、プロトコルは、イーサネット(R)、ファイバ・チャネル、およびSCSIを含み得る。前述のプロセスは、帯域幅制限および安定性の問題を引き起こし、それによって、企業システムの性能を制限することがある。
【0013】
システム100は、ユーザが、データ転送を必要とする全てのノード(例えば、ノード107および108)のために1つまたは複数のTCP/IPネットワーク・リンク(例えば、ネットワーク・リンク122a...122n)を構成することを可能にする。1つまたは複数のTCP/IPネットワーク・リンクおよび1つまたは複数の(FCまたはIBなど)ストレージ・リンクが、システム100によって実行されるように、共有ディスク(例えば、ノードの数および関連する帯域幅によって判断されるサイズを有する)は、関連するノードについての各ストレージ・コントローラにアタッチされる。
【0014】
システム100は、共有ストレージ環境において高速かつ安全なファイル転送プロセスを可能にする改善されたプロセスを可能にし、それによって、共有ストレージ環境においてファイル転送スロットルを動的に解決する。システム100は、ファイル転送プロセスに基づいてより効率的なストレージのコピーを提供することによって、ファイル転送プロセスの速度を増加させる。さらには、システム100は、現在のファイル転送状態に従って、ファイル転送初期化中にファイルを転送する方法を判断するための高度なアルゴリズムを利用する。
【0015】
システム100は、
1.共有ストレージ・クラウド環境内でファイル転送速度を増加させるアーキテクチャ
2.ファイルを転送するためのプロセスを判断するメカニズム
3.現在のファイル転送状態に従って特定のファイル転送方法を選択するためのソフトウェア・コード
4.システム機能不全の間の透明性のあるフェイルオーバ解決策を提供する。
【0016】
システム100は、リアルタイムの転送能力に対する割合に基づいてファイル転送中に転送負荷を指定されたチャネルへ割り当てるための改善されたプロセスを可能にし、それによって、少なくとも1つのチャネルが利用可能である限り、転送プロセスが完結することを保証する。さらには、チャネルに関連する転送コードが、動的に更新される。
【0017】
図1のシステム100は、ネットワーク・リンク122a...122nを介したIPネットワーク104およびストレージ・ネットワーク110を通して、ホスト(例えば、受信機)ハードウェア・ノード108(インストール済みソフトウェア・エージェント108aを含む)に接続された、ホスト(例えば、送信機)ハードウェア・ノード107(インストール済みソフトウェア・エージェント107aを含む)を含む。システム100は、追加的に、ホスト・ハードウェア・ノード107およびホスト・ハードウェア・ノード108に類似の複数のハードウェア・ノードを含み得る。IPネットワーク104は、ネットワーク・リンク122a、122b、122c、および122dを介してホスト・ハードウェア・ノード107をホスト・ハードウェア・ノード108に接続する、ルータ112a...112nおよびネットワーク接続ストレージ(NAS)デバイス115を含む。ストレージ・ネットワーク110は、ネットワーク・リンク122eおよび122nを介してホスト・ハードウェア・ノード107をホスト・ハードウェア・ノード108に接続するストレージ・デバイス/システム118を含む。ストレージ・デバイス/システム118は、共有ブロック・ストレージ118a、ブロック・ストレージ118b、およびブロック・ストレージ118cを含む。ホスト・ハードウェア・ノード107およびホスト・ハードウェア・ノード108は、それぞれ組み込み型コンピュータを含み得る。組み込み型コンピュータは、本明細書において、専門機能を実行するために特別に設計された(機能が固定された、またはプログラマブルな)コンピュータ・ハードウェアおよびソフトウェアの組み合わせを含む専用コンピュータとして定義される。プログラマブル組み込み型コンピュータは、専門プログラミング・インターフェースを含んでもよい。さらには、ホスト・ハードウェア・ノード107、ホスト・ハードウェア・ノード108、IPネットワーク104、およびストレージ・ネットワーク110は、それぞれ、図1~8に関連して説明されるプロセスを実行するための、専門の(汎用ではない)ハードウェアおよび回路(すなわち、専門の個別非汎用的アナログ、デジタル、およびロジック・ベース回路)を含む専門ハードウェア・デバイスを含み得る。専門の個別非汎用的アナログ、デジタル、およびロジック・ベース回路は、独自仕様の特別に設計されたコンポーネント(例えば、共有メモリ・ファイル転送プロセスを改善するための自動化プロセスを実施するためだけに設計された専門集積回路)を含み得る。ホスト・ハードウェア・ノード107、ホスト・ハードウェア・ノード108、IPネットワーク104、およびストレージ・ネットワーク110は、それぞれ専門メモリを含んでもよい。専門メモリは、単一のメモリ・システムを含んでもよい。代替的には、専門メモリは、複数のメモリ・システムを含んでもよい。ホスト・ハードウェア・ノード107、ホスト・ハードウェア・ノード108、IPネットワーク104、およびストレージ・ネットワーク110は、それぞれセンサ、プロセッサ、ならびに追加のソフトウェアおよび専門回路を含んでもよい。センサは、特に、GPSセンサ、デジタル・メディア検索ストリーミング・センサ、ネットワーク・トラフィック・センサなどを含んでもよい。IPネットワーク104およびストレージ・ネットワーク110は、特に、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、ワイヤレス・ネットワークなどを含む任意の種類のネットワークを含んでもよい。
【0018】
システム100は、以下のような共有メモリ・ファイル転送プロセスを実行するためのホスト・ハードウェア・ノード107およびホスト・ハードウェア・ノード108を構成するセットアップ・プロセスを可能にする。
【0019】
ネットワーク・リンク122a...122n(例えば、TCP/IPネットワーク・リンク)は、ハードウェア・ノード107およびホスト・ハードウェア・ノード108との間のデータ送信のために構成される。これに応じて、共有ディスク(ストレージ・デバイス/システム118など)は、データ転送のためにハードウェア・ノード107およびホスト・ハードウェア・ノード108に接続される。共有ディスクのサイズは、システム100内のノードの数、および関連するネットワーク・リンクの帯域幅によって判断され得る。さらに、ソフトウェア・エージェント107aおよび108aは、それぞれハードウェア・ノード107およびホスト・ハードウェア・ノード108内にインストールされる。ネットワーク・リンク122a...122nのそれぞれが、各ネットワーク・リンクの優先度に関連付けられた優先度プロパティを含む関連プロパティに関して構成される。優先度は、自動値または数値に設定され得る。より高い数値は、エージェントがデータを転送するために前述のリンクを使用すべきであることを示す、より高い優先度を表す。例えば、2の値を含むネットワーク・リンクは、1の値を含むネットワーク・リンクの2倍のデータを転送することが可能とされ得る。自動値は、ソフトウェア・エージェントが、各ソフトウェア・リンクの現在の負荷状況を判断し、関連するネットワーク・リンクの帯域幅を十分に確保するように、関連する負荷状況に基づいて数値を自動的に設定することを可能にする。自動値は、関連する負荷状況が変化したときに動的に修正されてもよい。発見時間のプロパティは、ソフトウェア・エージェントが優先度を判断するためにネットワーク・リンクの帯域幅をテストする時間を判断するために使用され得る。各ソフトウェア・エージェントは、プロパティを判断するための各ネットワーク・リンクの接続性状態、帯域幅使用率、および負荷状況をテストするために実行される。共有ストレージ・リンクは、(a)ストレージ・ネットワーク110をロックし、ホスト・ハードウェア・ノード107および108を(共有)ストレージ・ネットワーク110に登録するための、ソフトウェア・エージェントを実行するために有効にされる。ホスト・ハードウェア・ノード107および108のそれぞれが、ストレージ・ネットワーク110の指定されたセクションに関連付けられる。例えば、ホスト・ハードウェア・ノード107および108のそれぞれが、100MBのストレージに関連付けられてもよく、ストレージ・ネットワーク110のそれぞれの指定されたセクションが、ストレージ・ネットワーク110内にシーケンシャルに位置してもよい。最初の1MBは、コマンド・セクション(例えば、下記図2のコマンド・セクション202a...208aを参照)を含み、残りの99MBは、データ・セクション(例えば、下記図2のデータ・セクション202b...208bを参照)を含み得る。ホスト・ハードウェア・ノード107および108のそれぞれに関連する全てのプロトコルが、データを転送するために構成されるように、コマンド・セクションは、ノード情報(例えば、UUIDなど)を中継するために有効にされ得る。同様に、各データ・セクションは、実際のデータを転送するために構成される。全てのピア・ノードが、全ての利用可能なリンクを通して構成されるように、ソフトウェア・エージェントのそれぞれが、ネットワーク・リンクの全てに関して開始される。関連する結果が、後のデータ転送に使用するために保存される。
【0020】
システム100は、以下の通り、ホスト・ハードウェア・ノード107とホスト・ハードウェア・ノード108との間でデータを転送するための転送プロセスを可能にする。
【0021】
ホスト・ハードウェア・ノード107からホスト・ハードウェア・ノード108にファイルを転送するプロセスが開始されるときに、エージェント107aおよび108aが、ハードウェア・ノード107と108との間で利用可能なネットワーク・リンク(例えば、ネットワーク・リンク122a...122n)の数を判断する。さらには、ネットワーク・リンクのそれぞれについての優先度が判断される。これに応じて、エージェント107aまたは108aあるいはその両方は、並行送信のために送信用ファイルを小さなセグメントに分割する。例えば、4GBのISOファイルが、ハードウェア・ノード107および108の間で転送される必要があることがあり、全部で4つの利用可能なリンク(すなわち、2つのTCP/IPリンクおよび2つのストレージ・リンク)があり、1つのTCP/IPリンクおよび1つのストレージ・リンクに重い負荷があると判断される。したがって、エージェント107aまたは108aあるいはその両方は、前述の2つのリンクにより低い優先度を設定する。各送信の反復において、エージェント107aまたは108aあるいはその両方が、負荷の高いリンクを通して1MBを送信し、他の2つのリンクを通して5MBを送信する。負荷の高いリンクのうちの1つのワークロードが減少したことが(データ転送中に)さらに検出される場合、追加のデータ・セグメントが、このネットワーク・リンクを介して送信される。さらには、1つのリンクが切断され、または機能不全である場合、エージェント107aまたは108aあるいはその両方が、機能不全を検出し、関連する優先度に基づいて別の利用可能なリンクを通してデータ・セグメント・データを再送信する。
【0022】
図2は、本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するエージェント起動プロセス200を示す。エージェント起動プロセス200は、エージェント202が修正され、それによってエージェント204~208を形成することを示す。エージェント202は、コマンド・セクション202a、データ・セクション202b、およびメタデータ202cを含む。エージェント204は、コマンド・セクション204a、データ・セクション204b、およびメタデータ204cを含む。エージェント206は、コマンド・セクション206a、データ・セクション206b、およびメタデータ206cを含む。エージェント208は、コマンド・セクション208a、データ・セクション208b、およびメタデータ208cを含む。共有ストレージ・リンクが検出されるとき、エージェント202は、共有ディスク・ドライブをロックするためのプロセスを実行し、その後、関連(ハードウェア)ノードをディスク・ドライブに登録する。各ノードは、共有ディスク・ドライブの関連部分を含む。例えば、構成可能なストレージのうちの100MB。各ノードの共有ディスク・ドライブの関連部分は、共有ディスク・ドライブ上にシーケンシャルに位置する。最初の1MB(構成可能)が、コマンド・セクション(例えば、コマンド・セクション202a)と指定され、残りのサイズが、データ・セクション(例えば、データ・セクション202b)と指定される。コマンド・セクションは、UUIDなどのノード情報を設定し、ノードに命令する(例えば、プロトコル)ために有効にされる。データ・セクションは、データを転送するために使用される。第1のノードが第2のノードへのデータ転送を要求するとき、以下のステップが実行される。
【0023】
初期化ステップが、ノードAとノードBとの間の全ての利用可能リンクについての状態(例えば、優先度、負荷、帯域幅など)に基づいて実行される。これに応じて、ノードA内のエージェントは、使用するリンクおよび各リンク間のデータ分割方法を判断する。ノードA内のエージェントは、ネゴシエーション・コマンドをノードBの選択されたストレージ・リンクのコマンド・セクション内に書き込み、それによって、ノードAがデータ転送のために関連リンクへのアクセスを要求したことを、ノードB内のエージェントに通知する。さらに、転送用データのセクションを指定するコマンドが発行される。ノードB内のエージェントが、ネゴシエーション・コマンドに合意する場合、ノードB内のエージェントは、確認応答コマンドをノードAのコマンド・セクション内に書き込む。ノードB内のエージェントがネゴシエーション・コマンドに合意しない場合、ノードB内のエージェントは、ノードAのコマンド・セクション内に置かれた新たなネゴシエーション期間を提案し、ノードA内のエージェントは、新たなネゴシエーション期間を受け入れる。これに応じて、全てのデータがノードAとノードBとの間で転送されるまで、エージェントAは、データをノードAのデータ・セクション内に書き込み、ノードB内のエージェントは、ノードAのデータ・セクションからデータを受信する。データ転送プロセスの間、ノードAまたはノードBが、新たな転送期間を提案する(例えば、このリンク上の負荷が大きすぎる)場合、ノードAまたはノードBは、新たな期間をノードAのコマンド・セクション内に書き込む。例えば、送信および受信プロセスの間、データを拡大または減少させる期間。追加コマンドが、ノードAのコマンド・セクション内に置かれ得る。例えば、ノードBがデータの一部を失う場合、ノードBは、再送信を要求してノードAのコマンド・セクション内に再送信コマンドを書き込んでもよい。
【0024】
図3は、本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するセットアップ・コードを構築するための、図1のシステム100により可能なプロセス・フローを詳細化したアルゴリズムを示す。図3のアルゴリズム内の各ステップは、コンピュータ・コードを実行するコンピュータ・プロセッサによって、任意の順番で有効にされ、実行され得る。ステップ300において、ハードウェア・ノード間に接続されたネットワーク・リンク(例えば、TCP/IPネットワーク・リンク)が構成される。各ハードウェア・ノードは、コマンド・セクションおよびデータ・ストレージ・セクションを含む。ステップ302において、ハードウェア・ディスク・ドライブについてのストレージ容量が、ハードウェア・ノードの数(および任意選択で、ネットワーク・リンクのそれぞれについての帯域幅)に基づいて判断される。ステップ304において、ハードウェア・ディスク・ドライブが、ストレージ容量に基づいて、ハードウェア・ノードに(ストレージ・リンクを介して)接続される。ステップ308において、ソフトウェア・エージェントが、各ハードウェア・ノード内にインストールされる。ステップ310において、ネットワーク・リンクおよびストレージ・リンクについてのプロパティが構成される。プロパティは、ネットワーク・リンクおよびストレージ・リンクについての優先度レベル、ならびにテスト・プロセスに関連する指定された時間フレームを含み得る。ステップ312において、各ソフトウェア・エージェントが有効にされる。ステップ314において、接続性状態、帯域幅、および負荷状況が、ネットワーク・リンクおよびストレージ・リンクのそれぞれについてテストされる。ステップ318において、各ハードウェア・ノードが、ハードウェア・ディスク・ドライブに登録される。ステップ320において、ハードウェア・ディスク・ドライブとハードウェア・ノードとの間の通信が、ネットワーク・リンクおよびストレージ・リンクを介して有効にされる。
【0025】
図4は、本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するための、図1のシステム100により可能なプロセス・フローを詳細化したアルゴリズムを示す。図4のアルゴリズム内の各ステップは、コンピュータ・コードを実行するコンピュータ・プロセッサによって、任意の順番で有効にされ、実行され得る。ステップ400において、データ・ファイルを転送するための要求が、(受信機ホスト・ハードウェア・ノードによって、各ネットワーク・リンクの可用性に基づいて)追加のハードウェア・ノードから受信される。ステップ402において、データ・ファイルを説明するサマリが受信される。ステップ404において、データ・ファイルのデータ・セグメントが、ネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスを介して追加のハードウェア・ノードから受信される。ネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスは、受信機ホスト・ハードウェア・ノードと追加のハードウェア・ノードとの間に接続される。ステップ408において、各セグメントについての確認応答通知が、追加ハードウェア・ノードに送信される。確認応答通知は、各セグメントの受信成功を示す。ステップ410において、追加ハードウェア・ノードから受信機ホスト・ハードウェア・ノードに転送されているそれぞれのセグメントについての転送レートが、ネットワーク・リンク、ストレージ・リンク、およびストレージ・デバイスを介して記録される。ステップ412において、データ・ファイルの全てのセグメントが受信機ホスト・ハードウェア・ノードによって受信されたと、判断される。ステップ414において、データ・ファイルが、データ・セグメントから再構築される。ステップ418において、各転送レートが記憶される。
【0026】
図5は、本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するための、図1のシステム100により可能な代替プロセス・フローを詳細化した、図4のアルゴリズムに対する代替アルゴリズムを示す。図5のアルゴリズム内の各ステップは、コンピュータ・コードを実行するコンピュータ・プロセッサによって、任意の順番で有効にされ、実行され得る。ステップ500において、ストレージ・デバイスを介して送信機ホスト・ハードウェア・ノードと受信機ホスト・ハードウェア・ノードとの間でデータ・ファイルを転送するためのネットワーク・リンクの利用可能な数が、送信機ホスト・ハードウェア・ノードによって判断される。ステップ502において、ネットワーク・リンクのそれぞれについての関連優先度レベルが、判断される。ステップ504において、受信機ホスト・ハードウェア・ノードにデータ・ファイルを転送するための要求が、受信される。ステップ508において、ステップ504の要求に応答して、データ・ファイルが複数のセグメントに分割される。ステップ510において、送信シーケンスが、セグメントに割り当てられる。ステップ512において、データ・ファイルを説明するサマリが、受信機ホスト・ハードウェア・ノードに送信される。ステップ514において、ネットワーク・リンクのそれぞれについての転送比率が、判断される。ステップ518において、セグメントが、各転送比率に基づいてネットワーク・リンクを介して受信機ホスト・ハードウェア・ノードに送信される。セグメントを送信することは、ネットワーク・リンクのそれぞれについての占有帯域幅、転送レート、およびネットワーク・レイテンシにさらに基づいてもよい。ステップ520において、データ・セグメントの各セグメントについての確認応答通知が、受信機ホスト・ハードウェア・ノードから受信される。確認応答通知は、各セグメントの受信成功を示す。ステップ522において、各セグメントのコピーが、セグメント・プール・ストレージ・デバイスから削除される。ステップ524において、ネットワーク・リンクを介して転送されているそれぞれのセグメントについての転送レートが、記録され、記憶される。ステップ528において、セグメント・プール・ストレージ・デバイスが各セグメントのコピーをもはや含まないことが、判断される。
【0027】
図6は、本発明の実施形態による、共有メモリ・ファイル転送プロセスを改善するための、図1のシステムにより使用され、または含まれるコンピュータ・システム90(例えば、ハードウェア・ノード107またはハードウェア・ノード108あるいはその両方)を示す。
【0028】
本発明の態様は、完全なハードウェア実施形態、完全なソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、本明細書では全て概して「回路」、「モジュール」、もしくは「システム」と呼ばれ得る、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形式をとってもよい。
【0029】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する、コンピュータ可読記憶媒体を含んでもよい。
【0030】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体の、より具体的な例の非網羅リストは、以下の、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一時的信号であると解釈されるべきではない。
【0031】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組み合わせを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを含み得る。各コンピューティング/処理装置内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内の記憶用に、コンピュータ可読プログラム命令を転送する。
【0032】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的かつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0033】
本発明の態様は、本発明の実施形態による、方法、デバイス(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
【0034】
コンピュータまたは他のプログラマブル・データ処理デバイスのプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックにおいて指定される機能/動作を実施する手段を作り出すように、これらのコンピュータ可読プログラム命令は、機械を生成するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理デバイスのプロセッサに提供されてもよい。記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理デバイス、または他のデバイス、あるいはその組み合わせが特定の方法で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0035】
コンピュータ、他のプログラマブル・デバイス、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックにおいて指定された機能/動作を実施するように、コンピュータ可読プログラム命令は、また、一連の動作ステップが、コンピュータ実施されたプロセスを生成するためにコンピュータ、他のプログラマブル・デバイス、または他のデバイス上で実行されるようにするために、コンピュータ、他のプログラマブル・データ処理デバイス、または他のデバイス上にロードされてもよい。
【0036】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表してもよい。いくつかの代替的な実施において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で、逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
【0037】
図6に示されるコンピュータ・システム90は、プロセッサ91、プロセッサ91に連結された入力デバイス92、プロセッサ91に連結された出力デバイス93、ならびにプロセッサ91にそれぞれ連結されたメモリ・デバイス94および95を含む。入力デバイス92は、特に、キーボード、マウス、カメラ、タッチスクリーンなどであってもよい。出力デバイス93は、特に、プリンタ、プロッタ、コンピュータ・スクリーン、磁気テープ、リムーバブル・ハード・ディスク、フロッピー(R)・ディスクなどであってもよい。メモリ・デバイス94および95は、特に、ハード・ディスク、フロッピー(R)・ディスク、磁気テープ、コンパクト・ディスク(CD)またはデジタル・メディア・ディスク(DVD)などの光学ストレージ、ダイナミック・ランダム・アクセス・メモリ(DRAM)、読み出し専用メモリ(ROM)などであってもよい。メモリ・デバイス95は、コンピュータ・コード97を含む。コンピュータ・コード97は、デジタル・メディア・コンテンツ転送防止プロセスを改善するためのプロセスを可能にするアルゴリズム(例えば、図3および図4のアルゴリズム)を含む。プロセッサ91は、コンピュータ・コード97を実行する。メモリ・デバイス94は、入力データ96を含む。入力データ96は、コンピュータ・コード97により必要な入力を含む。出力デバイス93は、コンピュータ・コード97からの出力を表示する。メモリ・デバイス94および95のいずれかもしくは両方(または、読み出し専用メモリ・デバイス96などの1つもしくは複数の追加メモリ・デバイス)は、アルゴリズム(例えば、図3、4、および5のアルゴリズム)を含んでもよく、そこに具現化されたコンピュータ可読プログラム・コードを有する、またはそこに記憶された他のデータを有する、あるいはその両方であるコンピュータ使用可能媒体(または、コンピュータ可読媒体もしくはプログラム・ストレージ・デバイス)として使用されてもよい。コンピュータ可読プログラム・コードは、コンピュータ・コード97を含む。概して、コンピュータ・システム90のコンピュータ・プログラム製品(または代替的には、製品)は、コンピュータ使用可能媒体(または、プログラム・ストレージ・デバイス)を含み得る。
【0038】
いくつかの実施形態では、ハード・ドライブ、光学ディスク、または他の書き込み可能、書き換え可能、もしくはリムーバブル・ハードウェア・メモリ・デバイス95から記憶およびアクセスされるのではなく、記憶されたコンピュータ・プログラム・コード84(例えば、アルゴリズムを含む)は、読み出し専用メモリ(ROM)デバイス85などの静的非リムーバブル読み出し専用記憶媒体上に記憶されてもよく、またはそのような静的非リムーバブル読み出し専用媒体85から直接プロセッサ91によってアクセスされてもよい。同様に、いくつかの実施形態において、記憶されたコンピュータ・プログラム・コード97は、コンピュータ可読ファームウェア85として記憶されてもよく、またはハード・ドライブもしくは光学ディスクなどの、より動的なもしくはリムーバブルなハードウェア・データ記憶デバイス95からではなく、そのようなファームウェア85から直接プロセッサ91によってアクセスされてもよい。
【0039】
さらに、本発明の構成要素のいずれかは、共有メモリ・ファイル転送プロセスを改善するために提案するサービス供給者によって、考案され、統合され、ホストされ、維持され、配備され、管理され、サービスされるなどであってもよい。したがって、本発明は、コンピュータ可読コードをコンピュータ・システム90に統合することを含む、コンピューティング・インフラを配備すること、考案すること、統合すること、ホストすること、維持すること、または統合すること、あるいはその組み合わせのためのプロセスを開示する。コンピュータ・システム90と組み合わせたコードは、ハードウェア・システムについての予測される将来の状態および関連する動作属性を判断する方法を実行することが可能である。別の実施形態において、発明は、予約購読、広告、または料金、あるいはその組み合わせ単位で、発明のプロセス・ステップを実行するビジネス方法を提供する。すなわち、ソリューション・インテグレータなどのサービス供給者は、共有メモリ・ファイル転送プロセスを改善するためのプロセスを可能にするように提案し得る。この場合、サービス供給者は、1つまたは複数の顧客に対し、発明のプロセス・ステップを実行するコンピュータ・インフラを考案し、維持し、サポートするなどすることができる。これと引き換えに、サービス供給者は、予約購読もしくは料金またはその両方の合意のもとに顧客から支払いを受けることができ、またはサービス供給者は、1つまたは複数の第三者へのコンテンツ広告販売から支払いを受けることができ、あるいはその両方である。
【0040】
図6は、ハードウェアおよびソフトウェアの特定の構成として、コンピュータ・システム90を示しているが、当業者には既知であるハードウェアおよびソフトウェアの任意の構成が、図6の特定のコンピュータ・システム90と併せて上述した目的に利用されてもよい。例えば、メモリ・デバイス94および95は、別々のメモリ・デバイスではなく単一のメモリ・デバイスの一部であってもよい。
【0041】
クラウド・コンピューティング環境
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に挙げる教示の実施は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、本発明の実施形態は、現在既知の、または後に開発される任意の他の種類のコンピューティング環境と併せて実施されることが可能である。
【0042】
クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話で迅速に供給され、解放され得る、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの配備モデルを含み得る。
【0043】
特性は、以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダとの人との対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的に供給し得る。
幅広いネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種シン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
リソースの共用:プロバイダのコンピューティング・リソースが、マルチテナント型モデルを使用して複数の消費者にサービスするためにプールされ、異なる物理リソースおよび仮想リソースが要求に従って動的に割り当ておよび再割り当てされる。消費者が、概して、提供されるリソースの正確な場所に対する制御または知識を有しないが、より抽象度の高いレベル(例えば、国、州、またはデータセンタ)において場所を指定することが可能であり得るという点において、位置独立の意味がある。
スピーディな拡張性:機能は、場合によっては自動的に、即座にスケール・アウトするようにスピーディかつ弾力的に供給され、即座にスケール・インするようにスピーディに解放され得る。消費者に対しては、供給に利用可能な機能が、多くの場合無制限であるように見え、いつでも任意の量で購入可能である。
サービスが測定可能であること:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適したある抽象度レベルにおいて計測機能を活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用量は、モニタリングされ、制御され、報告されて、利用サービスのプロバイダおよび消費者の両方に透明性をもたらし得る。
【0044】
サービス・モデルは、以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウド・インフラ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えば、ウェブ・ベースの電子メール)を通して、様々なクライアント・デバイスからアクセス可能である。消費者は、限定されたユーザ固有アプリケーションの構成設定は例外である可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能ですら含む、基礎的なクラウド・インフラを管理または制御しない。
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して考案された、消費者が作成したアプリケーションまたは消費者が取得したアプリケーションを、クラウド・インフラ上に配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎的なクラウド・インフラを管理または制御しないが、配備されたアプリケーション、および、可能な限りアプリケーション・ホスティング環境構成に対して制御を行う。
サービスとしてのインフラ(IaaS):消費者に提供される機能は、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配備および実行することが可能な、他の基本コンピューティング・リソースを供給することである。消費者は、基礎的なクラウド・インフラを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対して制御を行い、および、選択ネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の可能な限り限定的な制御を行う。
【0045】
配備モデルは、以下の通りである。
プライベート・クラウド:クラウド・インフラは、組織のためだけに動作される。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
コミュニティ・クラウド:クラウド・インフラは、複数の組織によって共有され、共有の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
パブリック・クラウド:クラウド・インフラは、一般大衆または大きな業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラは、一意なエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または固有技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成物である。
【0046】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性、および意味相互運用性を中心としたサービス指向型である。クラウド・コンピューティングの中心にあるのは、相互接続されたノードのネットワークを含むインフラである。
【0047】
ここで図7を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示するように、クラウド・コンピューティング環境50は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信し得る。それらは、上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの、1つまたは複数のネットワーク内で物理的または仮想的にグループ化されてもよい(図示せず)。これによって、クラウド・コンピューティング環境50が、インフラ、プラットフォーム、またはソフトウェア、あるいはその組み合わせを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提案することが可能となる。図7に示されるコンピューティング・デバイス54A、54B、54C、および54Nの種類は、単なる例示であるように意図され、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続あるいはその組み合わせを経て(例えば、ウェブ・ブラウザを用いて)、任意の種類のコンピュータ化デバイスと通信し得ると理解される。
【0048】
ここで図8を参照すると、クラウド・コンピューティング環境50(図7を参照)によって提供される機能抽象レイヤのセットが示されている。図8に示されるコンポーネント、レイヤ、および機能は、単なる例示であるように意図され、発明の実施形態はそれらに限定されないと、予め理解されるべきである。図示するように、以下のレイヤおよび対応する機能が、提供される。
【0049】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(ReducedInstructionSetComputer)アーキテクチャ・ベース・サーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0050】
仮想レイヤ70は、仮想エンティティの以下の例、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る、抽象レイヤを提供する。
【0051】
1つの例では、管理レイヤ80は、後述する機能を提供し得る。リソース供給81は、クラウド・コンピューティング環境内でタスクを実行するために利用される、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および価格設定82は、リソースが、クラウド・コンピューティング環境内で利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースについての保護だけでなく、クラウド消費者およびタスクについての本人確認を提供する。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割り当ておよび管理を提供する。サービス水準合意(SLA)計画および遂行85は、将来の要件がSLAに従って予期されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0052】
ワークロード・レイヤ89は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ解析処理94、トランザクション処理95、ならびに共有メモリ・ファイル転送プロセスの改善96を含む。
【0053】
本発明の実施形態が、本明細書において例示の目的で説明されてきたが、多くの修正および変更が、当業者には明らかとなるであろう。したがって、添付の特許請求の範囲は、本発明の範囲内に入るものとしてそのような修正および変更の全てを包含するように意図される。
【符号の説明】
【0054】
100 システム
104 IPネットワーク
107、108 ホスト・ハードウェア・ノード
107a、108a ソフトウェア・エージェント
110 ストレージ・ネットワーク
115 ネットワーク接続ストレージ(NAS)デバイス
118 ストレージ・デバイス/システム
118a 共有ブロック・ストレージ
118b、118c ブロック・ストレージ
122a...122n ネットワーク・リンク
図1
図2
図3
図4
図5
図6
図7
図8