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

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

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

特許7597465マイクロサービスのストレージ割り当ての強化
<>
  • 特許-マイクロサービスのストレージ割り当ての強化 図1
  • 特許-マイクロサービスのストレージ割り当ての強化 図2
  • 特許-マイクロサービスのストレージ割り当ての強化 図3
  • 特許-マイクロサービスのストレージ割り当ての強化 図4
  • 特許-マイクロサービスのストレージ割り当ての強化 図5
  • 特許-マイクロサービスのストレージ割り当ての強化 図6
  • 特許-マイクロサービスのストレージ割り当ての強化 図7
  • 特許-マイクロサービスのストレージ割り当ての強化 図8
  • 特許-マイクロサービスのストレージ割り当ての強化 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】マイクロサービスのストレージ割り当ての強化
(51)【国際特許分類】
   G06F 9/50 20060101AFI20241203BHJP
   G06F 9/455 20180101ALI20241203BHJP
   G06N 20/00 20190101ALI20241203BHJP
【FI】
G06F9/50 120A
G06F9/455 150
G06N20/00
【請求項の数】 18
(21)【出願番号】P 2022507833
(86)(22)【出願日】2020-08-06
(65)【公表番号】
(43)【公表日】2022-10-28
(86)【国際出願番号】 IB2020057433
(87)【国際公開番号】W WO2021033062
(87)【国際公開日】2021-02-25
【審査請求日】2023-01-20
(31)【優先権主張番号】16/543,659
(32)【優先日】2019-08-19
(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)【発明者】
【氏名】ヒューズ、ジェイソン
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2017/0180346(US,A1)
【文献】米国特許第09886314(US,B2)
【文献】米国特許第09256467(US,B1)
【文献】米国特許出願公開第2018/0276116(US,A1)
【文献】中国特許出願公開第109743199(CN,A)
【文献】米国特許出願公開第2018/0181436(US,A1)
【文献】中国特許出願公開第108664378(CN,A)
【文献】Red Hat,Understanding microservices,Understanding microservices,米国,Red Hat,2018年03月09日,[online],2018年3月9日,[令和 5年10月30日検索],インターネット <URL:https://www.redhat.com/en/topics/microservices>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/455
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
マイクロサービスのストレージ割り当ての強化のためのコンピュータ実装方法であって、前記方法が、マイクロサービス・オーケストレータで実行され、該方法は、
ストレージ・システムにおけるマイクロサービス・コンテナの入出力動作パターンに関するカテゴリ分析機能を前記マイクロサービス・オーケストレータに提供することであって、前記入出力動作パターンは、ストレージ割り当ておよびガベージ・コレクションに影響を与える入出力動作のストレージ特性を含む、提供することと、
前記カテゴリ分析機能を使用してマイクロサービス・コンテナをカテゴリ分類することであって、前記カテゴリ分類する為のカテゴリが、前記マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する、カテゴリ分類することと、
前記入出力動作のストレージ割り当てに使用するために、前記マイクロサービス・コンテナの入出力動作に関連する前記カテゴリを前記ストレージ・システムに提供することと
を含み、前記ストレージ・システムに提供された前記入出力動作に関連する前記カテゴリによって、該カテゴリによって提供された予測されたストレージ挙動に基づいて、前記マイクロサービス・コンテナの入出力動作のデータの最適化された位置が提供される、
前記コンピュータ実装方法。
【請求項2】
前記入出力動作パターンが、圧縮できないデータ、高度に圧縮可能なデータ、存続期間が短いデータ、存続期間が長いデータ、ランダム・アクセス・パターンのデータ、順次アクセス・パターンのデータ、完全に割り当てられた範囲、およびアプリケーションの動作の待機プロファイルというストレージ特性のグループのうちの1つまたは複数を含む、請求項1に記載の方法。
【請求項3】
前記入出力動作パターン、機械学習技術を使用して個別の使用パターンにクラスタ化することによって分析される、請求項1に記載の方法。
【請求項4】
前記マイクロサービス・コンテナによって発行されたマイクロサービス・コンテナの入出力動作を受信することと、
前記カテゴリ分析機能を使用して前記入出力動作を分析し、前記マイクロサービス・コンテナのカテゴリを変更することと
を含む、請求項1に記載の方法。
【請求項5】
前記カテゴリ分析機能を使用して前記入出力動作を分析し、前記マイクロサービス・コンテナのカテゴリを変更することが、
マイクロサービス・コンテナの入出力動作の進行中の分析と、前記カテゴリの更新とを含む、請求項4に記載の方法。
【請求項6】
前記カテゴリが、前記マイクロサービス・コンテナの性能プロファイルに関連しているとして機械学習カテゴリ分類技術によって識別される、請求項4に記載の方法。
【請求項7】
前記カテゴリ分析機能を使用して前記入出力動作を分析し、前記マイクロサービス・コンテナのカテゴリを変更することが、
関連するマイクロサービス・イメージのカテゴリに基づいて前記マイクロサービス・コンテナを最初にカテゴリ分類することと、
前記マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用することと
を含む、請求項4に記載の方法。
【請求項8】
前記関連するマイクロサービス・イメージの前記カテゴリが、過去のストレージ挙動およびユーザによって構成されたカテゴリに基づく、請求項7に記載の方法。
【請求項9】
前記マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用することが、カテゴリを支援するための、ユーザに基づくマイクロサービス・コンテナのタグ付けを含む、請求項7に記載の方法。
【請求項10】
前記マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用することが、コンテナのグループに属するとしての前記マイクロサービス・コンテナの分類および前記グループの過去のストレージ挙動に基づく、より高いレベルのコンテキスト分析を含む、請求項7に記載の方法。
【請求項11】
前記グループが、ハードウェア上の同一の場所に配置されてリソースを共有するマイクロサービス・コンテナの集合の形態での小群である、請求項10に記載の方法。
【請求項12】
前記入出力動作のストレージ割り当てに使用するために、前記マイクロサービス・コンテナの入出力動作に関連する前記カテゴリをストレージ・システムに提供することが、1つまたは複数のカテゴリ詳細を使用して各入出力動作の記述を提供することを含む、請求項1に記載の方法。
【請求項13】
前記入出力動作のストレージ割り当てに使用するために、前記マイクロサービス・コンテナの入出力動作に関連する前記カテゴリをストレージ・システムに提供することが、前記カテゴリを関連するストレージ・システム上のガベージ・コレクション・アルゴリズムに渡すことを含む、請求項1に記載の方法。
【請求項14】
プロセッサと、
前記プロセッサに結合され、コンピュータ・プログラム命令を格納しているメモリと
を備えている、マイクロサービス・オーケストレータでのマイクロサービスのストレージ割り当ての強化のためのシステムであって、前記コンピュータ・プログラム命令が、前記プロセッサによって実行されたときに、前記プロセッサに、
ストレージ・システムにおけるマイクロサービス・コンテナの入出力動作パターンに関するカテゴリ分析機能を前記マイクロサービス・オーケストレータに提供することであって、前記入出力動作パターンは、ストレージ割り当ておよびガベージ・コレクションに影響を与える入出力動作のストレージ特性を含む、提供することと、
前記カテゴリ分析機能を使用してマイクロサービス・コンテナをカテゴリ分類することであって、前記カテゴリ分類する為のカテゴリが、前記マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する、カテゴリ分類することと、
前記入出力動作のストレージ割り当てに使用するために、前記マイクロサービス・コンテナの入出力動作に関連する前記カテゴリを前記ストレージ・システムに提供することと
を含む動作を実行させ、
前記ストレージ・システムに提供された前記入出力動作に関連する前記カテゴリによって、該カテゴリによって提供された予測されたストレージ挙動に基づいて、前記マイクロサービス・コンテナの入出力動作のデータの最適化された位置が提供される、
前記システム。
【請求項15】
前記動作が、
前記マイクロサービス・コンテナによって発行されたマイクロサービス・コンテナの入出力動作を受信することと、
前記カテゴリ分析機能を使用して前記入出力動作を分析し、前記マイクロサービス・コンテナのカテゴリを変更することと
をさらに含む、請求項14に記載のシステム。
【請求項16】
前記カテゴリ分析機能を使用して前記入出力動作を分析し、前記マイクロサービス・コンテナのカテゴリを変更することが、
関連するマイクロサービス・イメージのカテゴリに基づいて前記マイクロサービス・コンテナを最初にカテゴリ分類することと、
前記マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用することと
をさらに含む、請求項15に記載のシステム。
【請求項17】
マイクロサービスのストレージ割り当ての強化のためのコンピュータ・プログラムであって、前記コンピュータ・プログラムはコンピュータに、請求項1ないし13いずれか一項に記載の方法を実行させる、コンピュータ・プログラム。
【請求項18】
請求項1ないし13いずれか一項に記載の方法を実行させるためコンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、マイクロサービスのストレージ割り当てに関連しており、より詳細には、マイクロサービス・オーケストレータ(microservice orchestrator)とブロック・ストレージ・コントローラの間の通信に基づくストレージ割り当ての強化に関連している。
【背景技術】
【0002】
マイクロサービスは、アプリケーションをそれらの実装から分離するように設計されたソフトウェア開発メカニズムである。この設計理念にはさまざまな利点があり、特に、モジュール性、拡張性、およびアーキテクチャに依存しない設計を促進する。近年、マイクロサービス指向のアーキテクチャを実装してオーケストレートする手段として、特にコンテナ化が増大してきている。例えば、KUBERNETES(R)(KUBERNETESはLinux Foundationの商標である)は、アプリケーションのデプロイメント、スケーリング、および管理を自動化するためのオープンソースのコンテナ・オーケストレーション・システムである。KUBERNETES(R)は、DOCKER(R)(DOCKERはDocker,Inc.の商標である)を含む一連のコンテナ・ツールと連携する。
【0003】
DOCKER(R)は、アプリケーションを軽量の仮想マシンに近いものとしてパッケージ化するツールである。これらのアプリケーションは、環境に依存しなくなることができる。コンテナ化されることができるものの例は、データベースであることがある。そのようなデータベースは、関連するストレージが指定されることがある。KUBERNETES(R)では、ボリュームを作成できるプロビジョニング層を実装するために、コンテナ・ストレージ・インターフェイスが使用される。ボリュームは、プロビジョニングされ、ノードおよび実行されるスナップショット動作によってアクセス可能にされることができる。
【発明の概要】
【0004】
本開示の態様によれば、マイクロサービスのストレージ割り当ての強化のためのコンピュータ実装方法が提供されており、この方法は、マイクロサービス・オーケストレータで実行され、マイクロサービス・コンテナをカテゴリ分類することであって、このカテゴリ分類する為のカテゴリが、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動(predicted storage behavior)定義(define)する、カテゴリ分類することと、入出力動作のストレージ割り当てに使用するために、マイクロサービス・コンテナの入出力動作に関連するカテゴリを前記ストレージ・システムに提供することとを含む。
【0005】
異なるデータ特性が、ストレージ・システム内のデータの最適な位置に影響を与えることがある。例えば、変化する圧縮率、ランダム・アクセス・パターンまたは順次アクセス・パターンなどのアプリケーションのワークロードなどが、データの最適な位置に影響を与えることがある。その他の例は、コンテナが存在する可能性がある期間に関してマイクロサービス・コンテナによって渡される知識であり、短期間の間、プロビジョニングされ、その後、削除されるコンテナは、コンテナのすべてのストレージが不要になるまで、ガベージ・コレクションを遅延させる可能性がある。マイクロサービス・コンテナの入出力動作のカテゴリであって、予測されたストレージ挙動に基づく上記カテゴリをストレージ・コントローラに提供することは、ストレージ割り当ておよびガベージ・コレクションの最適化を可能にする。
【0006】
この方法は、ストレージ・システムにおける入出力動作パターンを分析して、基礎になるマイクロサービス・イメージをカテゴリ分類し、マイクロサービス・コンテナのコンテキストをカテゴリ分類するためのカテゴリ分析(categorization analytics)機能を提供することを含んでよく、カテゴリ分析機能は、マイクロサービス・コンテナをカテゴリ分類するために使用される。ストレージ・システムにおける入出力動作パターンは、ストレージ割り当ておよびガベージ・コレクションの効率に影響を与える入出力動作のストレージ特性を含んでよい。入出力動作パターンを分析することは、機械学習技術を使用して個別の使用パターンにクラスタ化してよい。
【0007】
この方法は、マイクロサービス・コンテナによって発行されたマイクロサービス・コンテナの入出力動作を受信することと、カテゴリ分析機能を使用して入出力動作を分析し、マイクロサービス・コンテナのカテゴリを設定または修正(例えば、変更)することとを含んでよい。
【0008】
カテゴリ分析機能を使用して入出力動作を分析してマイクロサービス・コンテナのカテゴリを設定または修正することは、基礎になるマイクロサービス・イメージのカテゴリに基づいてマイクロサービス・コンテナを最初にカテゴリ分類することと、マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用することとを含んでよい。基礎になるマイクロサービス・イメージのカテゴリは、過去のストレージ挙動(historical storage behavior)、コンテナが存在すると予想される時間、またはユーザによって構成されたカテゴリ、あるいはその組み合わせに基づいてよい。
【0009】
マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用することは、カテゴリ分類を支援するための、ユーザに基づくマイクロサービス・コンテナのタグ付けを含んでよい。
【0010】
マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用することは、コンテナのグループに属するとしてのマイクロサービス・コンテナの分類およびグループの過去の挙動に基づく、より高いレベルのコンテキスト分析を含んでよい。グループは、ハードウェア上の同一の場所に配置されてリソースを共有するマイクロサービス・コンテナの集合の形態での小群であってよく、またはグループは、小群が一緒に機能するサービスである。
【0011】
カテゴリ分析機能を使用して入出力動作を分析し、マイクロサービス・コンテナのカテゴリを設定または修正することは、マイクロサービス・コンテナの入出力動作の進行中の分析と、カテゴリの更新とを含んでよい。これによって、コンテナのプロセスのワークロードに応答して、カテゴリを動作中に修正することを可能にする。
【0012】
機械学習カテゴリ分類技術(machine learning categorization technique)は、マイクロサービス・コンテナの性能プロファイルに最も関連するカテゴリを識別するために使用されてよい。
【0013】
入出力動作のストレージ割り当てに使用するために、マイクロサービス・コンテナの入出力動作に関連するカテゴリをストレージ・システムに提供することは、カテゴリ詳細(categorization details)を使用して入出力動作の各々またはグループを説明することを含んでよい。このカテゴリを提供することは、基礎になるストレージ・システム上のガベージ・コレクション・アルゴリズムにカテゴリを渡すことを含んでもよい。
【0014】
本開示の別の態様によれば、マイクロサービスのストレージ割り当ての強化のためのコンピュータ実装方法が提供されており、この方法は、ストレージ・コントローラで実行され、マイクロサービス・コンテナの入出力動作を関連するカテゴリと共に受信することであって、このカテゴリが、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義(define)する、上記受信することと、入出力動作のストレージ割り当てを最適化するか、またはガベージ・コレクションの性能を最適化するか、あるいはその両方のために、関連するカテゴリを使用することとを含む。
【0015】
マイクロサービス・コンテナの入出力動作を関連するカテゴリと共に受信することは、ストレージ特性を使用してグループまたは個別の入出力動作を説明またはタグ付けすることを含んでよい。ストレージ特性は、最適なストレージおよびガベージ・コレクションのために必要なストレージ割り当ての形態を示すストレージ挙動プロファイルを定義(define)してよい。
【0016】
入出力動作のストレージ割り当てを最適化するか、またはガベージ・コレクションの性能を最適化するか、あるいはその両方のために、関連するカテゴリを使用することは、データの最良の位置を見つけようとしてよく、カテゴリの予想される挙動に応じて、インライン配列圧縮またはプール圧縮によって圧縮することを選択してよい。
【0017】
本開示のさらなる態様によれば、プロセッサと、コンポーネントの機能を実行するためのコンピュータ・プログラム命令をプロセッサに提供するように構成されたメモリとを備えている、マイクロサービス・オーケストレータでのマイクロサービスのストレージ割り当ての強化のためのシステムが提供されており、これらのコンポーネントは、マイクロサービス・コンテナをカテゴリ分類するためのコンテナ・カテゴリ分類コンポーネントであって、このカテゴリ分類する為のカテゴリが、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する、コンテナ・カテゴリ分類コンポーネントと、入出力動作のストレージ割り当てに使用するために、マイクロサービス・コンテナの入出力動作に関連するカテゴリをストレージ・システムに提供するためのカテゴリ提供コンポーネントとである。
【0018】
このシステムは、ストレージ・システムにおける入出力動作パターンを分析して、基礎になるマイクロサービス・イメージをカテゴリ分類し、マイクロサービス・コンテナのコンテキストをカテゴリ分類するためのカテゴリ分析機能を提供するためのカテゴリ分析コンポーネント(categorization analytics component)を含んでよく、カテゴリ分析機能は、マイクロサービス・コンテナをカテゴリ分類するために使用される。
【0019】
このシステムは、マイクロサービス・コンテナによって発行されたマイクロサービス・コンテナの入出力動作を受信するための受信コンポーネントと、カテゴリ分析コンポーネント(categorization analytics component)を使用して入出力動作を分析し、マイクロサービス・コンテナのカテゴリを設定または修正するための分析コンポーネント(analyzing component)とを含んでよい。
【0020】
分析コンポーネント(analyzing component)は、基礎になるマイクロサービス・イメージのカテゴリに基づいてマイクロサービス・コンテナを最初にカテゴリ分類するためのコンテナ・イメージカテゴリコンポーネントと、マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用するためのコンテキスト・カテゴリ・コンポーネントとを含んでよい。
【0021】
本開示のさらなる態様によれば、プロセッサと、コンポーネントの機能を実行するためのコンピュータ・プログラム命令をプロセッサに提供するように構成されたメモリとを備えている、ストレージ・コントローラでのマイクロサービスのストレージ割り当ての強化のためのシステムが提供されており、これらのコンポーネントは、マイクロサービス・コンテナの入出力動作を関連するカテゴリと共に受信するためのカテゴリ受信コンポーネントであって、このカテゴリが、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する、上記カテゴリ受信コンポーネントと、入出力動作のストレージ割り当てを最適化するために関連するカテゴリを使用するためのカテゴリ適用コンポーネントを含んでいるストレージ・アロケータ・コンポーネントとである。
【0022】
システムは、ガベージ・コレクションの性能を最適化するために関連するカテゴリを使用するためのカテゴリ適用コンポーネントを含んでいるガベージ・コレクタ・コンポーネントを含んでよい。
【0023】
本開示のさらなる態様によれば、マイクロサービスのストレージ割り当ての強化のためのコンピュータ・プログラム製品が提供されており、このコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、これらのプログラム命令は、マイクロサービス・オーケストレータでプロセッサによって実行可能であり、プロセッサに、マイクロサービス・コンテナをカテゴリ分類することであって、このカテゴリ分類する為のカテゴリが、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する、カテゴリ分類することと、入出力動作のストレージ割り当てに使用するために、マイクロサービス・コンテナの入出力動作に関連するカテゴリを前記ストレージ・システムに提供することとを実行させる。
【0024】
本開示のさらなる態様によれば、マイクロサービスのストレージ割り当ての強化のためのコンピュータ・プログラム製品が提供されており、このコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、これらのプログラム命令は、ストレージ・コントローラでプロセッサによって実行可能であり、プロセッサに、マイクロサービス・コンテナの入出力動作を関連するカテゴリと共に受信することであって、このカテゴリが、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する、上記受信することと、入出力動作のストレージ割り当てを最適化するか、またはガベージ・コレクションの性能を最適化するか、あるいはその両方のために、関連するカテゴリを使用することとを実行させる。
【図面の簡単な説明】
【0025】
図1】少なくとも1つの実施形態に記載された、説明された方法およびシステムが実装されてよい、マイクロサービス・オーケストレータおよびストレージ・コントローラを示すブロック図である。
図2】少なくとも1つの実施形態に記載された、マイクロサービス・オーケストレータおよびストレージ・コントローラで実行される方法を示すフロー図である。
図3】少なくとも1つの実施形態に記載された、マイクロサービス・オーケストレータで実行される方法の態様を示すフロー図である。
図4】少なくとも1つの実施形態に記載された、ストレージ・コントローラで実行される方法の態様を示すフロー図である。
図5】少なくとも1つの実施形態に記載された、マイクロサービス・オーケストレータを含んでいるシステムの態様を示すブロック図である。
図6】少なくとも1つの実施形態に記載された、ストレージ・コントローラを含んでいるシステムの態様を示すブロック図である。
図7】少なくとも1つの実施形態に記載された、本開示が実装されてよい、コンピュータ・システムまたはクラウド・サーバを示すブロック図である。
図8】少なくとも1つの実施形態に記載された、本開示が実装されてよい、クラウド・コンピューティング環境の概略図である。
図9】少なくとも1つの実施形態に記載された、本開示が実装されてよい、クラウド・コンピューティング環境のモデル・レイヤを示す図である。
【発明を実施するための形態】
【0026】
ファイルシステムでは、ファイルの位置が、ストレージ・アロケータから動作中に割り当てられることがある。ブロック・ストレージでは、ボリュームに必要な容量全体をワンパスで割り当てること(完全な割り当て)、またはその時点で必要とされるものを割り当てることによって、プロビジョニングが実行されることがある。そのようなプロビジョニングは、前方参照構造(forward-lookup structure)を使用して、データが格納される位置を指し示すことがある。これは、ファイルシステムが前方参照構造を使用して特定のデータを「指し示す」方法に類似していることがある。圧縮または重複排除などの、高度な格納率のためのツールの基礎として、シン・プロビジョニングが使用されることがある。
【0027】
データがディスクに書き込まれるときに、特定のアクションが発生することがある。これらのアクションは、ストレージが割り当てられた後に、ユーザ・データを物理領域に書き込むことを含んでよい。アクションは、前方参照構造を更新することをさらに含んでよい。データの一部をすでに指し示している場合、そのデータの一部の参照カウントをデクリメントする。これらのアクションは、指定されたデータの一部の参照カウントがゼロであり、データが有効と見なされなくなっている、ガベージ・コレクションのための候補を示すことを含んでもよい。データの無効化は、少なくとも一部において、参照カウントに基づいて決定されてよい。
【0028】
データが読み取られるときに、特定のアクションが発生することがある。これらのアクションは、要求されたデータが存続している物理領域上の位置を見つけるために、前方参照構造にアクセスすることを含んでよい。アクションは、位置が見つからなかった場合にゼロに戻ることをさらに含んでよい。位置が見つかった場合、その物理領域の位置のデータが返されてよい。
【0029】
その他のアクションは、重複排除およびガベージ・コレクションを含んでよい。重複排除は、前方参照が他の前方参照構造を指し示す(さらに、前方参照構造がデータを指し示す)ことができるようにすることによって実装されることができる。そのような場合、データの単一の部分の参照カウントは、1より大きくなることができる。ガベージ・コレクションは、無効化された容量を再利用可能な領域に合体させるメカニズムである。1つのデータがストレージ・システムに書き込まれ、その後、上書きされた場合、この上書きが元の書き込みと同じ位置に収まるということを、確信することはできない。このため、1つの実装は、きれいな領域に書き込むことである。このワークロードは、基礎になるストレージ媒体の理論的に最適な性能パターンと一致する。上書きまたはUNMAP(無効化)の対象になる「汚れた」領域は、それらの領域の有効なデータを、それらの領域からきれいな領域に転送することを必要とする。すべてのデータが新しい領域に再び書き込まれた後に、以前は汚れていた領域を再利用することができる。
【0030】
コンテナ・オーケストレータとストレージ・コントローラの組み合わせは、ユーザ・アプリケーションのより大きい柔軟性を可能にすることができる。しかし、特定のコンテナのストレージ要件が不明であることがある。この問題に対する1つの解決策は、包括的なオーバープロビジョニングを実行すること、および基礎になるストレージ・デバイスのシン・プロビジョニング能力に頼り、許容できるレベルの非効率性を保証することである。例えば、ブロック・ストレージ・システムに割り当て超過が存在し、その後、その割り当て超過が使用されない場合、前方参照メタデータ構造のルート・ノードに必要な基礎になるストレージは使用されるが、それ以上ストレージを使用しないことがある。この構造は、キロバイトからメガバイトまでの範囲のサイズに設定されることができるが、ペタバイトの範囲のサイズに設定されたプールが存在し、そのようなオーバーヘッドを無視できるものにすることがある。
【0031】
説明された方法およびシステムは、マイクロサービス・コンテナ、およびマイクロサービス・コンテナの基礎になるイメージをカテゴリ分類する。このカテゴリ分類することは、コンテナの現在の使用のコンテキストを含む、マイクロサービス・イメージの挙動に基づく。コンテナの入出力動作がどのように振る舞う可能性があるかを予測するために、これらの詳細がストレージ・システムに供給される。ストレージ・システムは、ガベージ・コレクションのオーバーヘッドを最小限に抑える領域にストレージを割り当てようと試みて、ストレージを割り当てる。
【0032】
コンテナの入出力動作パターンは、ストレージ・システムにおける効率的なストレージ割り当ておよび無効化された容量のガベージ・コレクションに影響を与える。ガベージ・コレクションの挙動を包含するストレージ挙動に影響を与えるストレージ特性に基づいて、入出力動作パターンがカテゴリ分類されてよい。
【0033】
さまざまな選択基準を使用して、コンテナの入出力動作パターンに基づいて、コンテナがカテゴリ分類されてよく、入出力動作パターンは、機械学習技術を使用して個別の使用パターンにクラスタ化されることができる。これらの選択基準は、例えば、データのパターンがどのくらい順次的またはランダムであるか、動作が継続する期間およびコンテナ全体が存続する期間、データがどの程度圧縮可能であるか、などを含んでよい。特定のプロセスでの遅い入出力動作の影響(例えば、プロセッサが、入出力動作を待機して停止する期間)をカテゴリ分類するために、アプリケーション中心の概念が使用されてもよい。重い入出力の影響を受けるワークロードのデータの「ワーキング・セット」に基づいて、厳格な無効化が使用されることができる。
【0034】
マイクロサービスは、開始されるときに、そのマイクロサービスのイメージの挙動によって最初にカテゴリ分類される。このカテゴリ分類する為のカテゴリは、コンテナ・イメージのストレージ特性の変動性を示す過去の挙動のフィードバックによって学習されてよい。コンテナの現在のコンテキストが、重要であり、したがって現在のコンテナに適用されてもよい。例えば、データベース専用のコンテナを作成するために使用されているイメージは、その使用のコンテキストに基づいて、さまざまな異なる挙動を有することがある。したがって、コンテキストに基づいて、追加のカテゴライザが活用されてよい。さらに、挙動における現在のモードからの逸脱または予想される逸脱に基づいて、コンテナをカテゴリ間で移動しながら、コンテナのプロセスが分析され続けてよい。この逸脱は、ユーザのワークロードの影響に起因して発生することがあり、継続的な分析が、カテゴリを動作中に変更することを可能にし得る。
【0035】
本開示の主題は、本明細書の最後の部分において具体的に指摘され、明確に請求される。本開示は、以下の詳細な説明および添付の図面を参照することによって、構造および動作方法の両方に関して、それらの目的、特徴、および利点と共に、最も良く理解することができる。
【0036】
説明を簡単かつ明確にするために、図に示された各要素の縮尺は、必ずしも一定ではないということが理解されるであろう。例えば、要素の一部の寸法は、明確に示すために、他の要素よりも誇張されている場合がある。さらに、適切であると見なされる場合、参照番号は、対応する特徴または類似する特徴を示すために、図間で繰り返されることがある。
【0037】
図1を参照すると、ブロック図が、説明された方法およびシステムが提供されてよいシステム100の実施形態例を示している。システム100は、マイクロサービス・オーケストレータ110と、マイクロサービス・オーケストレータ110によって使用されるストレージ・システムのストレージ・コントローラ150、160とを含んでいる。
【0038】
マイクロサービス・オーケストレータ110(例えば、KUBERNETES(R)システム)は、ホストのクラスタ全体にわたってマイクロサービス・コンテナのデプロイメント、スケーリング、および動作を自動化するためのプラットフォームを提供してよい。クラウド・サービスは、マイクロサービス・オーケストレータ110がプラットフォーム提供サービスとしてデプロイされることができる、マイクロサービス・オーケストレータ110のPaaS(Platform as a Service)またはIaaS(Infrastructure as a Service)を提供してよい。
【0039】
マイクロサービス・オーケストレータ110は、個別のノード120、130およびマスタ・ノード140またはクラスタを含んでよい。マスタ・ノード140は、システム全体にわたってワークロードおよび直接通信を管理する制御ユニットであり、コンテナ・プロビジョニングおよびノード制御141を含んでいる。マスタ・ノード140は、ボリュームを作成してプロビジョニングすることができるコンテナ・ストレージ・インターフェイスとして機能する、ストレージ・プロビジョニング・コンポーネント143を含んでいる。
【0040】
ノード120、130は、ノード・エージェント121、131を含んでおり、コンテナ・ランタイムによってコンテナ125、126、135、136がデプロイされるマシンである。マイクロサービス・イメージは、コンテナ内でコードを実行するために使用される、複数の層から成るファイルである。イメージは、完全で実行可能なバージョンのアプリケーションの命令から構築され、コンテナ・ランタイムによって実行されるときに、そのコンテナの1つまたは複数のインスタンスになる。各ノード120、130は、マスタ・ノード140のストレージ・プロビジョニング・コンポーネント143およびストレージ・コントローラ150、160と通信するために、ストレージ・ドライバ123、133を含んでよい。
【0041】
ストレージ・コントローラ150、160は、異種ストレージ154、164内のストレージを割り当てるためのストレージ・アロケータ・コンポーネント152、162を含んでおり、ストレージ・アロケータ・コンポーネント152、162は、マイクロサービス・オーケストレータ110のマスタ・ノード140のストレージ・プロビジョニング・コンポーネント143とインターフェイスをとる。各ストレージ・コントローラ150、160は、ストレージ空間を回収するために、ガベージ・コレクタ・コンポーネント153、163も含んでいる。
【0042】
説明された方法およびシステムは、コンテナの入出力動作の特性に最適に実行することにおいてストレージ・アロケータ・コンポーネント152、162およびガベージ・コレクタ・コンポーネント153、163を支援するために、マイクロサービス・コンテナの入出力動作のカテゴリをストレージ・コントローラ150、160に提供する。ノード120、130は、マスタ・ノード140のカテゴリ分析コンポーネント(categorization analytics component)142と情報をやりとりするカテゴリ分類層122、132を含んでおり、さらに、カテゴリ分析コンポーネント142がストレージ・コントローラ150、160のカテゴリ分析インターフェイス151、161と情報をやりとりする。
【0043】
図2を参照すると、ブロック図200は、マイクロサービス・オーケストレータ110のノード120とマスタ・ノード140の間、およびストレージ・コントローラ150までのフローの実施形態例を示している。
【0044】
ノード120でコンテナによって入出力動作が発行され(201)、個別のノードによって動作のカテゴリ分析が収集され、ノードのカテゴリ分類層122によって、コンテナのカテゴリを提供および調整するためにマスタ・ノードのカテゴリ分析コンポーネント142に伝達される(202)。
【0045】
マスタ・ノードのカテゴリ分析コンポーネント142は、特定のコンテナが属しているカテゴリを個別のノードに知らせ、個別のノードは、コンテナに関連付けられた入出力パターンに対する任意の変更をマスタ・ノードに知らせ、それに応じてマスタ・ノードがカテゴリを変更できるようにする。
【0046】
マスタ・ノードのカテゴリ分析コンポーネント142が、コンテナの入出力パターンの通知をノード層から受信し(204)、コンテナの動作をカテゴリ分類し(205)、通知をノードのカテゴリ分類層122に返送する(206)。マスタ・ノード140は、コンテナのカテゴリ情報をストレージ・コントローラ150に送信してよく(205)、ストレージ・コントローラ150では、ノード120からコンテナの入出力動作を受信するときに、参照のためにコンテナのカテゴリ情報が受信される(207)。
【0047】
ノード120で、コンテナが、マスタ・ノードのカテゴリ分析コンポーネント142から詳細を受信してよく、コンテナの入出力動作をカテゴリ情報と共にストレージ・コントローラ150に送信してよい(203)。マスタ・ノードによって、カテゴリ情報が、例えばストレージ・プロファイルの形態でストレージ・コントローラにすでに提供されていてよいため、コンテナの入出力動作は、カテゴリ情報(すなわち、ストレージ・プロファイル)を識別するために単にタグ付けされてよい。
【0048】
ストレージ・コントローラ150は、コンテナの受信入出力動作をカテゴリ情報と共に受信してよい(208)。コンテナのカテゴリに基づいて、入出力動作にストレージが割り当てられ(209)、バックエンド・ストレージに書き込まれる(210)。
【0049】
代替の実装では、個別のノードは、特定のコンテナのカテゴリ情報をストレージ・コントローラに提供してよい。マイクロサービス層からカテゴリが送信される方法は、さまざまな方法で実装されてよい。カテゴリ情報は、コンテナの入出力動作中に適用されるために、ストレージ・コントローラによって受信されて理解される、ストレージの特性または挙動のストレージ・プロファイルを説明してよい。
【0050】
図3を参照すると、フロー図300は、マイクロサービス・オーケストレータ110で実行される、説明された方法の態様の実施形態例を示している。
【0051】
動作301で、ストレージ・システムにおける入出力動作パターンを分析するために、カテゴリ分析機能がマイクロサービス・オーケストレータ110に提供される。動作302で、マイクロサービス・オーケストレータ110が、カテゴリ分析機能を使用して、過去の挙動パターンに基づいて、基礎になるマイクロサービス・イメージおよびマイクロサービス・コンテナのコンテキストをカテゴリ分類する。カテゴリ分析機能は、実行時のマイクロサービス・コンテナをカテゴリ分類するために使用され、マイクロサービス・コンテナは、現在のコンテキストを伴うマイクロサービス・イメージのインスタンスである。
【0052】
ストレージ・システムにおける入出力動作パターンは、圧縮できないデータ、高度に圧縮可能なデータ、存続期間が短いデータ、存続期間が長いデータ、ランダム・アクセス・パターンのデータ、順次アクセス・パターンのデータ、完全に割り当てられた範囲、およびアプリケーションの動作の待機プロファイルというストレージ特性のグループのうちの1つまたは複数を含んでよい。入出力動作パターンを分析することは、機械学習技術を使用して、特性を、カテゴリ分類されることができる個別の挙動パターンにクラスタ化してよい。これらの挙動パターンは、コンテナのストレージ・プロファイルと見なされてよい。
【0053】
一部の実施形態では、1つまたは複数の方法を使用してストレージ特性が収集される。そのような方法は、ワークロードが順次的/ランダムであるかどうかを識別すること、ワークロードの圧縮率を決定すること、およびサンプリングによってデータの耐久性を決定することである。削除時の稼働時間に基づいて、マイクロサービス・オーケストレータによって特定のコンテナの存続期間を自明に決定することもできる。
【0054】
一部の実施形態では、特定の特性(例えば、1つまたは複数の特性)を有しているとしてコンテナを分類するために、明示的なユーザのタグ付けが使用される。このタグ付けは、タグ付けまたは分類が過去のプロセスに類似していると明示的に提案することによって、分類器のレベルで実行されてよい。一部の実施形態では、タグ付けは、コンテナが存在する可能性がある期間、およびその入出力特性が何であるかを明示的に述べる、特性のレベルで実行される。例えば、実行するために、特定のワークロードのためにデータベースを実行すること、および異なるデータベースを使用して類似する予想されたワークロードが作成されることが知られている場合、その他の方法では関連のないコンテナ・イメージで作成された前の履歴から恩恵を受けるために、このことが認識されてよい。コンテナが存在する可能性がある期間は、コンテナに関連付けられたすべてのデータがいつ削除されるかの決定(すなわち、すべてのデータが、ストレージ挙動に影響を与えるUNMAPの対象になる時点の決定)を可能にするため、この期間を知ることも考慮されるか、または分類に入力される。
【0055】
動作303で、マイクロサービス・オーケストレータ110は、異なるカテゴリまたはストレージ・プロファイルの合体された詳細を、コンテナ・オーケストレータからストレージ・コントローラに転送する。異なるカテゴリの転送は、異なるカテゴリまたはストレージ・プロファイルがどのように振る舞う可能性があるか、およびどのように効率的なストレージおよびガベージ・コレクションのためにストレージ・コントローラが最良の割り当ての決定を行うことができるようにする可能性があるかを、ストレージ・コントローラに伝えることができる。この挙動は、過去のアクションのパターンと、動作と、特性と、コンテナ、コンテナに含まれているデータ、ストレージ・プロファイル、ならびにコンテナおよびコンテナ内のデータのうちの1つまたは複数に対して実行される動作または動作のスケジュールのうちの1つまたは複数に関するその他の関連する適切な情報とに基づいて示されてよい。
【0056】
動作304で、マイクロサービス・オーケストレータ110は、実行時にマイクロサービス・コンテナによって発行されたマイクロサービス・コンテナの入出力動作、および入出力動作のストレージ特性を受信する。動作305で、次にマイクロサービス・オーケストレータ110は、カテゴリ分析機能を使用して入出力動作を分析し(305)、マイクロサービス・コンテナのカテゴリを設定する。マイクロサービス・コンテナのカテゴリがすでに確立されている一部の実施形態では、方法は、動作、ストレージ・プロファイル、または任意のその他の適切なデータもしくは関連するデータのうちの1つまたは複数における変更に基づいて、マイクロサービス・コンテナのカテゴリを修正してよい。カテゴリは、ユーザのワークロードの影響に起因するカテゴリの変化をもたらすことがある長期間のプロセスに適用するために、動作中に実行される。マイクロサービス・コンテナをカテゴリ分類することは、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義するため、効率的なストレージ割り当ておよび最適なガベージ・コレクションに使用される。
【0057】
動作306で、マイクロサービス・オーケストレータ110は、カテゴリ分類のプロセス中に、基礎になるマイクロサービス・イメージのカテゴリに基づいて、マイクロサービス・コンテナを最初にカテゴリ分類する。基礎になるマイクロサービス・イメージのカテゴリは、過去のストレージ挙動に基づいてよい。マイクロサービス・イメージに基づく過去のコンテナの挙動が分析され、それらのコンテナの挙動パターンを決定してよい。例えば、時間の90%に順次的なワークロードを含むマイクロサービス・イメージが存在することがあり、順次的なワークロードは、従来のハード・ディスク・ドライブ(HDD:hard disk drive)のストレージを使用して適切に機能する。しかし、時間の10%では、イメージは、半導体ドライブ(SSD:solid-state drive)を使用して適切に機能することができるランダムなワークロードと共に動作する。カテゴリ分類メカニズムから、ランダムなワークロードが使用されることになっているかどうかを伝えることができないことがある。使用可能な履歴が存在することによって、特定のイメージの変動性を認識することができ、過去の挙動に基づいて、より良いストレージが必要かどうかを認識することができる。履歴は挙動の確率を示してもよく、ワークロードまたはイメージが、過去の挙動またはプロファイルの2つ以上のパターンと比較されてよい。
【0058】
基礎になるマイクロサービス・イメージのカテゴリは、加えてまたは代替として、ユーザによって構成されたカテゴリに基づいてもよい。ユーザが不十分なストレージ挙動を観察している場合、ユーザによって定義された構成が、挙動を微調整するために使用されてよい。
【0059】
動作307で、マイクロサービス・オーケストレータ110は、マイクロサービス・コンテナの現在のコンテキストに基づ初期カテゴリ適用する(307)。この適用は、コンテキストに基づくカテゴリを活用し、カテゴリを支援するための、ユーザに基づくマイクロサービス・コンテナのタグ付けを含んでよい。この適用は、他のどのサービスがストレージ・サービスに接続されているかに基づくより高いレベルのコンテキスト分析を含んでもよい。一部の実施形態では、より高いレベルのコンテキスト分析は、コンテナのグループに属するとしてのマイクロサービス・コンテナの分類、およびグループの過去の挙動パターンに基づく。グループは、ハードウェア上の同一の場所に配置されてリソースを共有するマイクロサービス・コンテナの集合の形態での小群であってよく、またはグループは、小群が一緒に機能するサービスであってよく、あるいはその両方であってよい。
【0060】
マイクロサービス・オーケストレータ110は、次の方法でコンテキストに関するコンテナのカテゴリを実現するが、さまざまな方法が適切であることがある。コンテナがスピンアップされている場合、通常、より広いアプリケーションのコンテキスト内で、コンテナのそのようなスピンアップが実行される。小群は、ハードウェア上の同一の場所に配置されてリソースを共有するべきであるコンテナの集合であり、サービスは、より広い分類器であり、一緒に機能する小群を指定する。サービスまたは小群を作成するときに、コンテナを使用している各ストレージは、特定のサービスの一部、または特定の小群の一部として分類されることができ、これらのコンテキストに関連付けられたこれらのコンテキストの過去の挙動を有することができる。機械学習カテゴリ分類技術は、どれが特定のコンテナの性能プロファイルに最も関連するかを識別するために使用されることができる。通常、ラベルが、コンテナに関連付けられることもでき、さらに、分類を支援するために活用されることができる。コンテナを分類しようとするトポロジー的方法が使用されてよい。特定のサービスがノードの集合(場合によっては、使用のコンテキストに基づいて異なる種類のノードを含む)と見なされ、小群/サービスのメンバーシップがエッジを決定する場合、グラフ解析アルゴリズムによって、コンテナが何に接続されているかに基づいて、特定のコンテナが分類されることができる。これに基づき、最も近い過去の一致の挙動に基づいてコンテナの挙動が何であるかを決定することができる。生物情報学技術によって、さまざまなネットワークモチーフ分類メカニズム(network-motif classification mechanism)が調査されてきており、それらのうちの最も一般的な応用の1つは、生物情報ネットワーク内の類似する構造を識別することである。機械学習カテゴリ分類技術は、マイクロサービス・コンテナの性能プロファイルに最も関連するカテゴリを識別するために使用されてよい。
【0061】
動作308で、マイクロサービス・オーケストレータ110は、カテゴリを更新するために、マイクロサービス・コンテナの入出力動作の進行中の分析を含む。一部の実施形態では、カテゴリ分析は、マイクロサービス・オーケストレータ内の現在のコンテナのプロセスの個別のノードから収集される。例えば、ノードは、現在のワークロードが概ねランダムまたは概ね順次的であるかどうかを伝えることができる。コンテナ・オーケストレータは、特定のコンテナに発生している入出力パターンを知らされてよく、この入出力パターンをカテゴリにまとめてよい。コンテナは、変化する可能性があるユーザのワークロードの性質の影響を受けることがある。例えば、ワークロードは、データが初めて書き込まれたときに、著しく順次的に開始することがあるが、異なるユーザのワークロードが有効化されたときに、非常にランダム/トランザクショナルになることがある。これを支援することによって、コンテナのカテゴリを変更することができる。
【0062】
動作309で、マイクロサービス・オーケストレータ110は、コンテナ・オーケストレータの個別のノードからのマイクロサービス・コンテナの入出力動作に関連するカテゴリ情報を、入出力動作のストレージ割り当てに使用するために、ストレージ・システムに提供する。例えば、カテゴリを使用して、入出力動作がタグ付けされてよい。このタグ付けは、カテゴリ分類詳細を使用して、入出力動作の各々またはグループの記述を提供することを含んでよい。このタグ付けは、カテゴリを基礎になるストレージ・システム上のガベージ・コレクション・アルゴリズムに渡すことを含んでもよい。
【0063】
図4を参照すると、フロー図400は、ストレージ・コントローラ150で実行される、説明された方法の態様の実施形態例を示している。
【0064】
動作401で、ストレージ・コントローラ150が、コンテナ・オーケストレータから、一般的なカテゴリ情報を、例えばカテゴリの共有されたリストとして受信する。これらのカテゴリは、例えば、簡単に言えば、存続期間が長い圧縮できないデータのためのカテゴリ、存続期間が短い高度に圧縮可能なデータのためのカテゴリという特性に関して記述されてよい。これらは、前もって共有されるか、またはカテゴリが作成されるときに、マイクロサービス・オーケストレータによって動作中に記述されてよい。
【0065】
動作402で、ストレージ・コントローラ150が、マイクロサービス・コンテナの入出力動作を、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する関連するカテゴリと共に受信する。一部の実施形態では、入出力動作が受信され、受信後に、入出力動作のうちの1つまたは複数に関連付けられたカテゴリを決定するために分析される。関連する特性化が、マイクロサービス・コンテナの対応する予測されたストレージ挙動を示す、入出力動作の予測されたストレージ挙動を定義してよい。一部の実施形態では、ストレージ・コントローラは、複数のカテゴリに関連付けられた入出力動作を受信する。
【0066】
動作403で、ストレージ・コントローラ150が、カテゴリをストレージ・システムのストレージ・アロケータ・コンポーネントおよびガベージ・コレクタ・コンポーネントに渡す。これによって、特定の入出力動作がカテゴリに属しており、結果として、その入出力動作が特定の挙動を有している可能性が高いということを、ストレージ・コントローラに知らせる。
【0067】
カテゴリ情報は、インターフェイス・プロトコルを介して、基礎になるストレージ・システム上のストレージ・アロケータおよびガベージ・コレクション・アルゴリズムに渡されてよい。これは、特定の既知のサービスの特性を使用して入出力動作にタグ付けすることによって、またはこれらの詳細を個別の入出力動作に含めることによって、入出力動作のグループを説明するために実行されることができる。例えば、データ・フレームのヘッダー/フッターがカテゴリ記述してよい。
【0068】
動作404で、ストレージ・コントローラ150が、カテゴリによって提供された予測されたストレージ挙動に基づいて、マイクロサービス・コンテナの入出力動作のデータの最適化された位置を提供する。含まれるカテゴリ分類詳細は、ランダム性の測定値、データの予想される寿命の測定値、当該のシステムが入出力動作を待っているかどうかの測定値、入出力動作の特定のセットの予想されるワーキング・セットが何であるかを含んでよい。次に、ガベージ・コレクションおよび空間割り当てアルゴリズムは、提供された追加のデータを含むデータの最良の位置を見つけるための計画を立ててよい。
【0069】
動作405で、ストレージ・コントローラ150が、カテゴリに対する変更を受信または識別する。次に、ストレージ・コントローラ150は、ストレージ・アロケータ・コンポーネントおよびガベージ・コレクション・コンポーネントを使用して、コンテナのプロセス中にカテゴリを動作中に更新してよく、それに応じて応答する。ストレージ・アロケータは、マイクロサービスのカテゴリに対する任意の変更を知らされてよく、それに応じて応答しようとする。ガベージ・コレクションの範囲がマイクロサービスの特定のクラスに属している場合、これらの範囲をストレージ割り当ての適切な新しい層に移動することができるため、カテゴリに対する変更は、ガベージ・コレクションの選択挙動に拡張されることができる。
【0070】
コンテナの入出力動作と共に提供されたカテゴリ情報に基づいて使用されてよいストレージ割り当て技術の一部を以下に示す。場合によっては、これらのストレージ割り当て技術は、必要とされる場合にのみ、高性能のストレージを割り当ててよい。
【0071】
さらに、ユーザが不十分な挙動を観察している場合、ユーザによって定義された概念が、挙動の微調整を可能にするために提供されてよい。例えば、イメージが、ワークロードが高性能のストレージに格納されていないが、高性能のストレージに適しているということを意味するワークロードを含んでいる場合、最高の性能のストレージに手動で割り当てられるように、そのワークロードに影響を与えるために、個別のワークロードを調整できることは、有用な特徴である。したがって、ストレージの最適化に影響を与えるために、ユーザの構成が提供されてよい。
【0072】
ストレージのパターンのカテゴリは、ランダム性の測定値、データの予想される寿命の測定値、当該のシステムが入出力動作を待っているかどうかの測定値、入出力動作の特定のセットの予想されるワーキング・セットが何であるか、入出力サイズの測定値、必要な故障耐性、ならびにストレージおよびガベージ・コレクションの最適化に影響を与えるその他のストレージ特性を含んでよい。
【0073】
圧縮率
変化する圧縮率は、データが配置されるべき場所の理想的な位置に影響を与えることがある。例えば、この影響は、カテゴリの予想される挙動に応じて、インライン配列圧縮またはプール圧縮によって圧縮することを選択することを含んでよい。例えば、配列によって実現されるインライン・ハードウェア圧縮は、約4:1の最大圧縮率をサポートし、一方、同じ製品のデータ削減プールによって実装される圧縮は、10:1を超える圧縮率を実現できるが、追加の待ち時間という犠牲を払う。
【0074】
オーケストレータは、作成されたばかりのコンテナが圧縮できないデータを作成する可能性が高いということをストレージ・コントローラに知らせてよい。その後、ストレージ・コントローラは、コンテナに関連付けられた入出力動作を圧縮しようとすることを選択しなくてよく、その結果、圧縮する可能性がより高い入出力動作の圧縮帯域幅を節約する。
【0075】
オーケストレータは、作成されたばかりのコンテナが高度に圧縮可能なデータを作成する可能性が高いということをストレージ・コントローラに知らせてよい。圧縮帯域幅が制限されているシステムでは、これが、空間を節約するための最適な選択であることがある。ストレージ・コントローラは、圧縮帯域幅をこのコンテナのデータ範囲に優先的に割り当てる。
【0076】
存続期間が短いデータおよび存続期間が長いデータ
ガベージ・コレクションを支援することができるその他の特徴は、「スラック・スペース」と呼ばれる概念によってガベージ・コレクションを控えるという概念である。これは、偶然遭遇するほど十分な空き容量が存在する場合、無効化がさらに受信されるにつれて、時間と共にガベージ・コレクションのコストが低くなることがあるというアイデアである。したがって、特定の領域を解放するために必要な作業量が少なくなる。この挙動は、データの局所性に大きく依存する。アプリケーションのデータが多くの異なる領域にわたって広がっており、それらの領域が存続期間が長いデータと共有されている場合、すべての存続期間が短いデータが無効化された後でさえ、存続期間が長いデータを移動する必要がある。
【0077】
オーケストレータは、コンテナが短い存続期間を有している可能性が高い(すなわち、データがすぐに破棄される可能性が高い)ということを、ストレージ・コントローラに知らせてよい。ストレージ・コントローラは、これらの存続期間が短い範囲の別々の領域を割り当てることによって、存続期間が短いデータを一緒にグループ化しようとしてよい。入出力待ち時間によって妨げられないシステムの場合、より遅いストレージ(例えば、高価だが高速な半導体ドライブの選択肢の代わりに、回転ディスク)が選択されてよい。
【0078】
ストレージ・コントローラは、存続期間が短いデータ範囲を共通の範囲に割り当て、これらの範囲がほとんど空になるまで、これらの範囲のガベージ・コレクションを回避することを選択する。これは、存続期間が短いデータが存続期間が長いデータと混在せず、広範囲のガベージ・コレクションを必要とせずに、予測されたサイクルの破棄が、これらの範囲を解放するということを意味する。これらの範囲に対するガベージ・コレクションがないため、より少ない書き込み帯域幅がガベージ・コレクションに使用され、性能とストレージ媒体の寿命の両方を改善する。
【0079】
オーケストレータは、コンテナが非常に長い存続期間を有している可能性が高いということをストレージ・コントローラに知らせてよい。ストレージ・コントローラは、これらの存続期間が長いデータ範囲を共通の範囲に割り当てる。存続期間が長いデータ範囲が存続期間が短い範囲と混在することを防ぐことによって、存続期間が短い範囲を解放するための不必要なガベージ・コレクションが回避される。この結果として、より少ない書き込み帯域幅をガベージ・コレクションに使用することになり、さらに、性能およびストレージ媒体の寿命を改善する。
【0080】
完全な割り当て
特に敵対的なワークロードの場合、ストレージ・コントローラは、データ範囲のガベージ・コレクションのオーバーヘッドが過剰になることがあるとき、データ範囲を完全に割り当てられた(すなわち、非ログ構造化配列(non-log-structured-array))範囲に割り当てることができる。これによって、さらに最適な性能が得られる。
【0081】
ランダムな書き込みおよび順次的な書き込み
異なるアプリケーションのワークロードは異なる特性を有しており、データベースは非常にランダムなアクセス・パターンを有していることがあり、一方、バックアップ・タスクは非常に順次的なアクセス・パターンを有していることがある。これらは、ガベージ・コレクションがどのように機能する可能性があるかに対して、影響を与える。通常、順次的な上書きパターンは、ストレージの連続する範囲を解放することができるため、ガベージ・コレクションを容易にする。ランダムな上書きパターンは、空間のかなりの領域を回収するために、比較的大きい量のストレージが移動されることがあるため、多くの場合、ガベージ・コレクションがより困難である。例えば、順次的な上書きが次のようなパターンを有することがある。
[XXXXXXXXXX][OOOOOOOOOO] [XXXXXXXXXX] [XXXXXXXXXX] [NNNNNNNNNN] [FFFFFFFFFF]
【0082】
この例では、F=空き、X=使用済み、O=上書きされたデータ、N=新しいデータ、である。ここでは、どのデータも移動する必要なしに、上書きを含んでいる領域全体が回収されることができる。この例では、ランダムな上書きが次のようなパターンを有することがある。
[XOXOXXOXXX][XXOXOXXOXX] [XOXOXXXXXX] [XXOXXOXXXX] [NNNNNNNNNN] [FFFFFFFFFF]
【0083】
この例では、データの価値がある1つの領域を回収するために、4つの領域が移動される。この問題は、物理領域が拡大するにつれて悪化する。順次的な入出力パターンと比較して著しくランダムな入出力パターンを有するシステムの場合、この挙動に最も良く応答するストレージを選択することによって、使用可能な最も速いストレージを選択するよりも最適な応答を得ることができる。
【0084】
オーケストレータは、コンテナがランダムなアクセス・パターンを有している可能性が高いということをストレージ・コントローラに知らせてよい。ストレージ・コントローラは、これらのデータ範囲を、このワークロードにとって最適に機能する可能性がある範囲(例えば、半導体ドライブ)に割り当てる。その結果、これらのシステムの性能が改善される。
【0085】
オーケストレータは、コンテナが順次アクセス・パターンを有している可能性が高いということをストレージ・コントローラに知らせてよい。ストレージ・コントローラは、これらのデータ範囲を、このワークロードにとって最適に機能する可能性がある範囲(場合によっては、ハード・ディスク・ドライブ)に割り当てる。その結果、ストレージをワークロードにとってより最適な候補に割り当て、ハード・ディスク・ドライブの性能を改善すると共に、最も多くの恩恵を受けるワークロードに使用するために、半導体ドライブのより多くの空き容量を残す。
【0086】
入出力動作を待機する
オーケストレータは、コンテナが、かなりの期間の間、入出力動作を待機することになる可能性が高いということを、ストレージ・コントローラに知らせてよい。ストレージ・コントローラは、より速いストレージ媒体をこれらの範囲に割り当て、コンテナ上のワークフローを最適化してよい。
【0087】
ワークロードのワーキング・セット
特定のワークロードがワーキング・セットを有していることがあり、ワーキング・セットは、重い入出力動作を受けるデータの範囲である。ワーキング・セットは、合計で10PBのデータ領域が存在し得るときに、実際には数百TBが重い入出力の対象になるという概念を適用する。
【0088】
2つの異なるワークロードが存在し、それらが両方ともランダム・アクセス・パターンを有し、両方ともおおよそ同じ量のデータに影響を与える場合、これらのワークロードが同じバックエンドの空間に一緒に格納されたとすると、これらのワークロードは、おおよそ同じ比率でそれら自体を上書きする。これによって、統計的にほぼ同時に空間が空いているときに、ガベージ・コレクションを最適化する。
【0089】
これが、ランダムな部分と混在して順次的であるワークロードと比較される。これは、2つの大幅に異なるワーキング・セットのサイズを使用することと、ほぼ同様である。他の領域よりはるか前に、特定の領域の一部が上書きされる傾向がある。したがって、類似するワーキング・セットを一緒に保持することは、ガベージ・コレクションの作業をより効率的にする。
【0090】
これらの最適化は、コンテナ/イメージに合わせて調整された分析によって達成可能である。仮想マシンに合わせて調整された解決策は、粗すぎることがあり、仮想マシン上で実行されるアプリケーションのセットを説明するために十分でないことがある。アプリケーション中心の解決策は、きめ細かすぎ、コンテキストを欠いていることがあり、そのアプリケーションの入出力経路に統合することが困難であることがある。
【0091】
これらすべての場合において、存続期間が変化するコンテナは、アプリケーションまたは仮想マシンを説明するように調整された方法の失敗をもたらすことがある。特定のイメージおよび場合によっては、イメージの使用の幅広いコンテキストに合わせて方法を調整することによって、コンテキストによって広範囲に変化することがある単一の仮想マシンおよびアプリケーションの挙動で、異種の挙動を捕捉することができる。この方法が動作するコンテキストは、タスクに焦点を合わせた環境である。これを認識することによって、ストレージ・システムにとって可能性のある最も有用な情報が捕捉され、このようにしてストレージを効率的にすることができる。
【0092】
そのようなシステムの利点は、最適化されストレージの配置が得られ、ガベージ・コレクションのオーバーヘッドの縮小をもたらすことである。これによってさらに、ストレージ・システム上の負荷を低減し、ホストの入出力動作の性能向上を実現する。
【0093】
図5を参照すると、ブロック図が、マスタ・ノードのカテゴリ分析コンポーネント142およびノードのカテゴリ分類層132を含んでいるマイクロサービス・オーケストレータ110の実施形態例を示している。これらは、単一のシステム上に示されているが、少なくとも1つのプロセッサ上で実行されるソフトウェア・ユニットであってよい説明されたコンポーネントの機能を実行するために、少なくとも1つのプロセッサ501、ハードウェア・モジュール、または回路を含んでいる複数のシステムにわたって分散されてよい。並列処理スレッドを実行する複数のプロセッサが提供されてよく、コンポーネントの機能の一部または全部の並列処理を可能にする。メモリ502は、コンポーネントの機能を実行するためのコンピュータ命令503を少なくとも1つのプロセッサ501に提供するように構成されてよい。
【0094】
カテゴリ分析コンポーネント142は、ストレージ・システムにおける入出力動作パターンを分析して、基礎になるマイクロサービス・イメージをカテゴリ分類し、マイクロサービス・コンテナのコンテキストをカテゴリ分類するためのカテゴリ分析機能を提供してよい。カテゴリ分析機能は、マイクロサービス・コンテナを実行時にカテゴリ分類するために使用される。
【0095】
カテゴリ分析コンポーネント142は、マイクロサービス・コンテナによって実行時に発行されたマイクロサービス・コンテナの入出力動作を受信するための受信コンポーネント511と、入出力動作を分析し、マイクロサービス・コンテナのカテゴリを変更(例えば、設定または修正)するための分析コンポーネント(analyzing component)520とを含んでよい。分析コンポーネント520(analyzing component)は、基礎になるマイクロサービス・イメージのカテゴリに基づいてマイクロサービス・コンテナを最初にカテゴリ分類するためのコンテナ・イメージ・カテゴリ分類コンポーネント521と、マイクロサービス・コンテナのコンテキストに基づ初期カテゴリ適用するためのコンテキスト・カテゴリ分類コンポーネント522とを含んでよい。
【0096】
カテゴリ分析コンポーネント142は、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義するカテゴリを使用してマイクロサービス・コンテナをカテゴリ分類するために、コンテナ・カテゴリ分類コンポーネント512を含んでよい。このカテゴリは、コンテナを実行しているノードのカテゴリ分類層132に送信されてよい。カテゴリ分類層132は、マイクロサービス・コンテナの入出力動作に関連するカテゴリを、入出力動作のストレージ割り当てに使用するためにストレージ・システムに提供するための、カテゴリ提供コンポーネント530を含んでよい。
【0097】
図6を参照すると、ブロック図が、カテゴリ分析インターフェイス151、ストレージ・アロケータ・コンポーネント152、およびガベージ・コレクタ・コンポーネント153を含んでいるストレージ・コントローラ150の実施形態例を示している。ストレージ・コントローラ150は、少なくとも1つのプロセッサ上で実行されるソフトウェア・ユニットであってよい説明されたコンポーネントの機能を実行するために、少なくとも1つのプロセッサ601、ハードウェア・モジュール、または回路を含んでよい。並列処理スレッドを実行する複数のプロセッサが提供されてよく、コンポーネントの機能の一部または全部の並列処理を可能にする。メモリ602は、コンポーネントの機能を実行するためのコンピュータ命令603を少なくとも1つのプロセッサ601に提供するように構成されてよい。
【0098】
カテゴリ分析インターフェイス151は、マイクロサービス・コンテナの入出力動作を、マイクロサービス・コンテナの入出力動作の予測されたストレージ挙動を定義する関連するカテゴリと共に受信するために、カテゴリ受信コンポーネント610を含んでよい。
【0099】
ストレージ・アロケータ・コンポーネント152は、入出力動作のストレージ割り当てを最適化するために関連するカテゴリを使用するためのカテゴリ適用コンポーネント620を含んでよい。
【0100】
ガベージ・コレクタ・コンポーネント153は、ガベージ・コレクションの性能を最適化するために関連するカテゴリを使用するためのカテゴリ適用コンポーネント630を含んでよい。
【0101】
図7は、本開示の実施形態に従って、マイクロサービス・オーケストレータ110またはストレージ・コントローラ150などの、図1のシステム100のコンピューティング・デバイスのコンポーネントのブロック図を示している。図7は、1つの実装の例を提供しており、さまざまな実施形態を実装できる環境に関して、どのような制限も意味していないと理解されるべきである。図に示された環境に対して、多くの変更が行われてよい。
【0102】
コンピューティング・デバイスは、1つまたは複数のプロセッサ702、1つまたは複数のコンピュータ可読RAM704、1つまたは複数のコンピュータ可読ROM706、1つまたは複数のコンピュータ可読ストレージ媒体708、デバイス・ドライバ712、読み取り/書き込み駆動またはインターフェイス714、およびネットワーク・アダプタまたはインターフェイス716を含むことができ、これらはすべて通信ファブリック718を経由して相互接続される。通信ファブリック718は、プロセッサ(マイクロプロセッサ、通信プロセッサ、およびネットワーク・プロセッサなど)、システム・メモリ、周辺機器、およびシステム内の任意のその他のハードウェア・コンポーネントの間で、データまたは制御情報あるいはその両方を渡すために設計された、任意のアーキテクチャを使用して実装され得る。
【0103】
1つまたは複数のオペレーティング・システム710、およびアプリケーション・プログラム711は、各RAM704(通常、キャッシュ・メモリを含む)のうちの1つまたは複数を介してプロセッサ702のうちの1つまたは複数によって実行するために、コンピュータ可読ストレージ媒体708のうちの1つまたは複数に格納される。示されている実施形態では、コンピュータ可読ストレージ媒体708の各々は、内部ハード・ドライブの磁気ディスク・ストレージ・デバイス、CD-ROM、DVD、メモリ・スティック、磁気テープ、磁気ディスク、光ディスク、半導体ストレージ・デバイス(RAM、ROM、EPROM、フラッシュ・メモリなど)、または本開示の実施形態に従ってコンピュータ・プログラムおよびデジタル情報を格納できる任意のその他のコンピュータ可読ストレージ媒体であることができる。
【0104】
コンピューティング・デバイスは、1つまたは複数のポータブル・コンピュータ可読ストレージ媒体726に対して読み取りおよび書き込みを行うためのR/W駆動またはインターフェイス714を含むこともできる。コンピューティング・デバイス上のアプリケーション・プログラム711は、ポータブル・コンピュータ可読ストレージ媒体726のうちの1つまたは複数に格納され、各R/W駆動またはインターフェイス714を介して読み取られ、各コンピュータ可読ストレージ媒体708に読み込まれ得る。
【0105】
コンピューティング・デバイスは、TCP/IPアダプタ・カードまたは無線通信アダプタなどの、ネットワーク・アダプタまたはインターフェイス716を含むこともできる。コンピューティング・デバイス上のアプリケーション・プログラム711は、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、またはその他の広域ネットワーク、あるいは無線ネットワーク)およびネットワーク・アダプタまたはインターフェイス716を介して、外部コンピュータまたは外部ストレージ・デバイスからコンピューティング・デバイスにダウンロードされ得る。プログラムは、ネットワーク・アダプタまたはインターフェイス716からコンピュータ可読ストレージ媒体708に読み込まれてよい。このネットワークは、銅線、光ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、およびエッジ・サーバを備えてよい。
【0106】
コンピューティング・デバイスは、ディスプレイ画面720、キーボードまたはキーパッド722、およびコンピュータ・マウスまたはタッチパッド724を含むこともできる。デバイス・ドライバ712は、画像化のためにディスプレイ画面720とインターフェイスをとるか、キーボードまたはキーパッド722とインターフェイスをとるか、コンピュータ・マウスまたはタッチパッド724とインターフェイスをとるか、または英数字入力およびユーザ選択の圧力検出のためにディスプレイ画面720とインターフェイスをとるか、あるいはその組み合わせとインターフェイスをとる。デバイス・ドライバ712、R/W駆動またはインターフェイス714、およびネットワーク・アダプタまたはインターフェイス716は、ハードウェアおよびソフトウェア(コンピュータ可読ストレージ媒体708またはROM706あるいはその両方に格納される)を備えることができる。
【0107】
本開示は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせとして具現化されてよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0108】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0109】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0110】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本開示の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0111】
本開示の態様は、本明細書において、本開示の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0112】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、また、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0113】
コンピュータ可読プログラム命令は、また、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【0114】
図内のフローチャートおよびブロック図は、本開示のさまざまな実施形態に記載されているシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0115】
クラウド・コンピューティング
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示される教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ本開示の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0116】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
【0117】
特徴は、次のとおりである。
【0118】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0119】
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば、モバイル・フォン、ラップトップ、およびPDA)による利用を促進する標準的なメカニズムを使用してアクセスされる。
【0120】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合があるという点で場所に依存しないという感覚がある。
【0121】
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0122】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【0123】
サービス・モデルは、次のとおりである。
【0124】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能をも含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0125】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御する。
【0126】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては、選択されたネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御する。
【0127】
デプロイメント・モデルは、次のとおりである。
【0128】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0129】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0130】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0131】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって別々の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0132】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0133】
ここで図8を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSoftware as a Service、あるいはその組み合わせを提供できる。図8に示されたコンピューティング・デバイス54A~Nの種類は、例示が意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0134】
ここで図9を参照すると、クラウド・コンピューティング環境50(図8)によって提供される機能的抽象レイヤのセットが示されている。図9に示されたコンポーネント、レイヤ、および機能は、例示が意図されており、本開示の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0135】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0136】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを提供する。
【0137】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うと共に、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0138】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、およびコンテナ・ストレージ最適化処理96が挙げられる。
【0139】
本開示のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択された。
【0140】
本開示の範囲から逸脱することなく、前述の内容に対して改善および変更が行われ得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9