(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-16
(54)【発明の名称】ゾーンセグメントドライブ管理
(51)【国際特許分類】
G06F 3/06 20060101AFI20240409BHJP
G06F 16/13 20190101ALN20240409BHJP
【FI】
G06F3/06 301J
G06F3/06 301F
G06F3/06 301Z
G06F16/13
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023562741
(86)(22)【出願日】2021-07-21
(85)【翻訳文提出日】2023-12-11
(86)【国際出願番号】 US2021042619
(87)【国際公開番号】W WO2022220858
(87)【国際公開日】2022-10-20
(32)【優先日】2021-04-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】オットー,エーリヒ
(72)【発明者】
【氏名】カービー,マイケル
(72)【発明者】
【氏名】クルカルニ,アジンキャ
(57)【要約】
分散ストレージシステム内のデータ記憶の管理のための技術が提供される。方法は、コンピュータシステムによって、データをボリュームに書き込むための要求を受信することを含み得る。本方法は、コンピュータシステムによって、ボリュームにマッピングされたゾーンセグメントを識別することを含み得る。ゾーンセグメントは複数のゾーンを含み得る。本方法は、コンピュータシステムによって、ゾーンセグメントのゾーン内の書き込み場所を指示するセグメントポインタを識別することを含み得る。本方法は、コンピュータシステムによって、書き込み場所から開始して、データをゾーンセグメントの複数のゾーンのうちの1つまたは複数のゾーンに書き込むことを含み得る。本方法はまた、コンピュータシステムによって、ゾーンセグメント内のデータの終点に従ってセグメントポインタを更新することを含み得る。
【特許請求の範囲】
【請求項1】
方法であって、
コンピュータシステムによって、データをボリュームに書き込むための要求を受信することと、
前記コンピュータシステムによって、前記ボリュームにマッピングされたゾーンセグメントを識別することとを含み、前記ゾーンセグメントは複数のゾーンを含み、前記方法はさらに、
前記コンピュータシステムによって、前記ゾーンセグメントのゾーン内の書き込み場所を指示するセグメントポインタを識別することと、
前記コンピュータシステムによって、前記書き込み場所から開始して、前記データを前記ゾーンセグメントの前記複数のゾーンのうちの1つまたは複数のゾーンに書き込むことと、
前記コンピュータシステムによって、前記ゾーンセグメント内の前記データの終点に従って前記セグメントポインタを更新することと、
を含む、方法。
【請求項2】
前記要求内で識別された前記データのサイズを確認することと、
前記ゾーンの容量を確認することとをさらに含み、前記容量は、前記書き込み場所と前記ゾーンの終点との間の書き込みパスに対応しており、前記方法はさらに、
前記ゾーンの前記容量を前記データの前記サイズと比較することと、
前記データの前記サイズが前記ゾーンの前記容量を超えることに応じて、前記データを第1のブロックおよび第2のブロックに分けることとを含み、前記第1のブロックのサイズは前記ゾーンの前記容量に対応しており、前記方法はさらに、
前記書き込み場所から開始して、前記第1のブロックを書き込むことと、
前記第2のブロックを前記ゾーンセグメントの後続のゾーンに書き込むことと、
を含む、請求項1に記載の方法。
【請求項3】
前記セグメントポインタを更新することは、
前記ゾーンセグメント内の前記データの前記終点が前記ゾーンセグメントの容量と一致することに応じて、前記ゾーンセグメントを満杯ゾーンセグメントとして標識すること、
前記ボリュームにマッピングされた新たなゾーンセグメントを識別すること、および
前記セグメントポインタを前記新たなゾーンセグメントの始点に更新すること、
を含む、請求項1または2に記載の方法。
【請求項4】
前記セグメントポインタを識別することは、前記ボリュームにマッピングされた前記ゾーンセグメントを空または開放ゾーンについて走査することを含む、先行する請求項のいずれか1項に記載の方法。
【請求項5】
前記セグメントポインタを識別することは、
前記ボリュームにマッピングされた前記ゾーンセグメントが空または開放ゾーンを含まないことに応じて、新たなゾーンセグメントを前記ボリュームに割り当てることをさらに含み、前記セグメントポインタは、前記新たなゾーンセグメントの最初のゾーンの始点である、請求項4に記載の方法。
【請求項6】
前記ゾーンセグメントの使用割合を確認することと、
前記使用割合を使用閾値と比較することと、
前記使用割合が前記使用閾値を満足しないことに応じて、
前記ゾーンセグメントの前記複数のゾーン内の記憶されたデータを識別することと、
記憶された前記データを1つまたは複数のソースゾーンから前記複数のゾーンのうちの1つまたは複数の空または開放ゾーンにマッピングすることと、
記憶された前記データを前記空または開放ゾーンに書き込むことと、
前記ソースゾーンを開放ステータスにリセットすることと、
をさらに含む、先行する請求項のいずれか1項に記載の方法。
【請求項7】
前記複数のゾーン内の記憶されたデータを識別することは、
前記ボリュームへの前記ゾーンセグメントの前記マッピングを記述するマッピングメタデータを受信すること、および
前記マッピングメタデータに従って前記複数のゾーン内の記憶された前記データの場所を特定すること、
を含む、請求項6に記載の方法。
【請求項8】
前記複数のゾーンは、シングル磁気記録ストレージシステムにおいて実施される、先行する請求項のいずれか1項に記載の方法。
【請求項9】
システムであって、
コンピュータ実行可能命令を記憶するように構成されたメモリと、
前記メモリにアクセスして、少なくとも以下のことのために前記コンピュータ実行可能命令を実行するように構成された1つまたは複数のプロセッサとを備え、前記少なくとも以下のことは、
データをボリュームに書き込むための要求を受信することと、
前記ボリュームにマッピングされたゾーンセグメントを識別することとを含み、前記ゾーンセグメントは複数のゾーンを含み、前記少なくとも以下のことはさらに、
前記ゾーンセグメントのゾーン内の書き込み場所を指示するセグメントポインタを識別することと、
前記書き込み場所から開始して、前記データを前記ゾーンセグメントの前記複数のゾーンのうちの1つまたは複数のゾーンに書き込むことと、
前記ゾーンセグメント内の前記データの終点に従って前記セグメントポインタを更新することとを含む、システム。
【請求項10】
前記1つまたは複数のプロセッサは、さらに少なくとも以下のことのために前記コンピュータ実行可能命令を実行するように構成されており、前記さらに少なくとも以下のことは、
前記要求内で識別された前記データのサイズを確認することと、
前記ゾーンの容量を確認することとを含み、前記容量は、前記書き込み場所と前記ゾーンの終点との間の書き込みパスに対応しており、
前記ゾーンの前記容量を前記データの前記サイズと比較することと、
前記データの前記サイズが前記ゾーンの前記容量を超えることに応じて、前記データを第1のブロックおよび第2のブロックに分けることとを含み、前記第1のブロックのサイズは、前記ゾーンの前記容量に対応しており、
前記書き込み場所から開始して、前記第1のブロックを書き込むことと、
前記第2のブロックを前記ゾーンセグメントの後続のゾーンに書き込むこととを含む、請求項9に記載のシステム。
【請求項11】
前記セグメントポインタを更新することは、
前記ゾーンセグメント内の前記データの前記終点が前記ゾーンセグメントの容量と一致することに応じて、前記ゾーンセグメントを満杯ゾーンセグメントとして標識すること、
前記ボリュームにマッピングされた新たなゾーンセグメントを識別すること、および
前記セグメントポインタを前記新たなゾーンセグメントの始点に更新すること、
を含む、請求項9または10に記載のシステム。
【請求項12】
前記セグメントポインタを識別することは、前記ボリュームにマッピングされた前記ゾーンセグメントを空または開放ゾーンについて走査することを含む、請求項9から11のいずれか1項に記載のシステム。
【請求項13】
前記セグメントポインタを識別することは、
前記ボリュームにマッピングされた前記ゾーンセグメントが空または開放ゾーンを含まないことに応じて、新たなゾーンセグメントを前記ボリュームに割り当てることであって、前記セグメントポインタが前記新たなゾーンセグメントの最初のゾーンの始点である、割り当てることをさらに含む、請求項12に記載のシステム。
【請求項14】
前記1つまたは複数のプロセッサは、前記コンピュータ実行可能命令を実行し、少なくとも、
前記ゾーンセグメントの使用割合を確認することと、
前記使用割合を使用閾値と比較することと、
前記使用割合が前記使用閾値を満足しないことに応じて、
前記ゾーンセグメントの前記複数のゾーン内の記憶されたデータを識別することと、
記憶された前記データを1つまたは複数のソースゾーンから前記複数のゾーンのうちの1つまたは複数の空または開放ゾーンにマッピングすることと、
記憶された前記データを前記空または開放ゾーンに書き込むことと、
前記ソースゾーンを開放ステータスにリセットすることと、
を行うようにさらに構成されている、請求項9から13のいずれか1項に記載のシステム。
【請求項15】
前記複数のゾーン内の記憶されたデータを識別することは、
前記ボリュームへの前記ゾーンセグメントの前記マッピングを記述するマッピングメタデータを受信すること、および
前記マッピングメタデータに従って前記複数のゾーン内の記憶された前記データの場所を特定すること、
を含む、請求項14に記載のシステム。
【請求項16】
コンピュータシステムによって実行可能な命令を記憶するコンピュータ可読記憶媒体であって、前記命令が、前記コンピュータシステムの1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
コンピュータシステムによって、データをボリュームに書き込むための要求を受信することと、
前記コンピュータシステムによって、前記ボリュームにマッピングされたゾーンセグメントを識別することであって、前記ゾーンセグメントが複数のゾーンを含む、識別することと、
前記コンピュータシステムによって、前記ゾーンセグメントのゾーン内の書き込み場所を指示するセグメントポインタを識別することと、
前記コンピュータシステムによって、前記書き込み場所から開始して、前記データを前記ゾーンセグメントの前記複数のゾーンのうちの1つまたは複数のゾーンに書き込むことと、
前記コンピュータシステムによって、前記ゾーンセグメント内の前記データの終点に従って前記セグメントポインタを更新することと、
を含む複数の動作を行なわせる、コンピュータ可読記憶媒体。
【請求項17】
前記複数の動作は、
前記要求内で識別された前記データのサイズを確認することと、
前記ゾーンの容量を確認することとを含み、前記容量は、前記書き込み場所と前記ゾーンの終点との間の書き込みパスに対応しており、前記複数の動作はさらに、
前記ゾーンの前記容量を前記データの前記サイズと比較することと、
前記データの前記サイズが前記ゾーンの前記容量を超えることに応じて、前記データを第1のブロックおよび第2のブロックに分けることとを含み、前記第1のブロックのサイズは前記ゾーンの前記容量に対応しており、前記複数の動作はさらに、
前記書き込み場所から開始して、前記第1のブロックを書き込むことと、
前記第2のブロックを前記ゾーンセグメントの後続のゾーンに書き込むことと、
を含む、請求項16に記載のコンピュータ可読記憶媒体。
【請求項18】
前記セグメントポインタを更新することは、
前記ゾーンセグメント内の前記データの前記終点が前記ゾーンセグメントの容量と一致することに応じて、前記ゾーンセグメントを満杯ゾーンセグメントとして標識すること、
前記ボリュームにマッピングされた新たなゾーンセグメントを識別すること、および
前記セグメントポインタを前記新たなゾーンセグメントの始点に更新すること、
を含む、請求項16または17に記載のコンピュータ可読媒体。
【請求項19】
前記セグメントポインタを識別することは、前記ボリュームにマッピングされた前記ゾーンセグメントを空または開放ゾーンについて走査することを含む、請求項16から18のいずれか1項に記載のコンピュータ可読媒体。
【請求項20】
前記セグメントポインタを識別することは、
前記ボリュームにマッピングされた前記ゾーンセグメントが空または開放ゾーンを含まないことに応じて、新たなゾーンセグメントを前記ボリュームに割り当てることを含み、前記セグメントポインタは、前記新たなゾーンセグメントの最初のゾーンの始点である、請求項19に記載の前記コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本出願は、「ZONE SEGMENT DRIVE MANAGEMENT」と題する、2021年4月13日に出願された、米国非仮特許出願第17/229,709号の利益およびそれに対する優先権を主張する。米国非仮特許出願第17/229,709号の内容はその全体が全ての目的のために本明細書において参照により組み込まれる。
【0002】
背景
クラウドベースのプラットフォームはユーザのデータのためのスケーラブルで柔軟なコンピューティングリソースを提供する。インフラストラクチャ・アズ・ア・サービス(IaaS:infrastructure as a service)とも称される、このようなクラウドベースのプラットフォームは、顧客のデータを巡るクラウドソリューションの完全なスイート、例えば、変換のオーサリング、データのロード、およびデータの提示のためのソリューションを提供し得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
シングル磁気記録(SMR:Shingled Magnetic Recording)は、記録トラックを部分的に重ね合わせること、または瓦状に配列すること(shingling)によって、ハードディスクドライブ上の記憶容量を増大させる。重ね合わせられたトラックはゾーンにグループ化され得る。読み出しパスが保存されるような仕方でトラックを瓦状に配列することによって、トラックは、たとえ、それらが部分的に上書きされていても、依然として読み出され得る。対照的に、瓦状配列の結果として、読み出し操作は依然としてゾーン内でランダムに遂行され得るが、書き込み操作は、ゾーン内のある範囲でなく、ゾーン全体に連続的に適用されなければならなくなる。
【0004】
概要
シングル磁気記録ドライブ上のクラウドリソースデータのオブジェクトストレージの管理のための技術(例えば、方法、システム、1つまたは複数のプロセッサによって実行可能なコードまたは命令を記憶する非一時的コンピュータ可読媒体)が提供される。
【課題を解決するための手段】
【0005】
ある実施形態では、方法は、コンピュータシステムによって、データをボリュームに書き込むための要求を受信することを含み得る。本方法は、コンピュータシステムによって、ボリュームにマッピングされたゾーンセグメントを識別することを含み得る。ゾーンセグメントは複数のゾーンを含み得る。本方法は、コンピュータシステムによって、ゾーンセグメントのゾーン内の書き込み場所を指示するセグメントポインタを識別することを含み得る。本方法は、コンピュータシステムによって、書き込み場所から開始して、データをゾーンセグメントの複数のゾーンのうちの1つまたは複数のゾーンに書き込むことを含み得る。本方法はまた、コンピュータシステムによって、ゾーンセグメント内のデータの終点に従ってセグメントポインタを更新することを含み得る。
【0006】
いくつかの実施形態において、本方法は、要求内で識別されたデータのサイズを確認することをさらに含み得る。本方法は、ゾーンの容量を確認することであって、容量が、書き込み場所とゾーンの終点との間の書き込みパスに対応する、確認することを含み得る。本方法は、ゾーンの容量をデータのサイズと比較することを含み得る。本方法は、データのサイズがゾーンの容量を超えることに応じて、データを第1のブロックおよび第2のブロックに分けることを含み得る。第1のブロックのサイズはゾーンの容量に対応し得る。本方法は、書き込み場所から開始して第1のブロックを書き込むことを含み得る。本方法はまた、第2のブロックをゾーンセグメントの後続のゾーンに書き込むことを含み得る。
【0007】
いくつかの実施形態において、セグメントポインタを更新することは、ゾーンセグメント内のデータの終点がゾーンセグメントの容量と一致することに応じて、ゾーンセグメントを満杯ゾーンセグメントとして標識することを含み得る。セグメントポインタを更新することはまた、ボリュームにマッピングされた新たなゾーンセグメントを識別すること、およびセグメントポインタを新たなゾーンセグメントの始点に更新することを含み得る。セグメントポインタを識別することは、ボリュームにマッピングされたゾーンセグメントを空または開放ゾーンについて走査することを含み得る。
【0008】
いくつかの実施形態において、コンピュータシステムが、1つまたは複数のプロセッサと、1つまたは複数のプロセッサと通信するメモリと、を含み、メモリは、コンピュータ実行可能命令を記憶するように構成されており、コンピュータ実行可能命令を実行することは、1つまたは複数のプロセッサに、上述された方法またはその変形例のステップのうちの1つまたは複数を遂行させる。セグメントポインタを識別することは、ボリュームにマッピングされたゾーンセグメントが空または開放ゾーンを含まないことに応じて、新たなゾーンセグメントをボリュームに割り当てることをさらに含み得る。セグメントポインタは新たなゾーンセグメントの最初のゾーンの開始位置であり得る。
【0009】
いくつかの実施形態において、本方法は、ゾーンセグメントの使用割合を確認することを含み得る。本方法は、使用割合を使用閾値と比較することを含み得る。本方法は、使用割合が使用閾値を満足しないことに応じて、ゾーンセグメントの複数のゾーン内の記憶されたデータを識別することと、記憶されたデータを1つまたは複数のソースゾーンから複数のゾーンのうちの1つまたは複数の空または開放ゾーンにマッピングすることと、記憶されたデータを空または開放ゾーンに書き込むことと、ソースゾーンを開放ステータスにリセットすることと、を含み得る。複数のゾーン内の記憶されたデータを識別することは、ボリュームへのゾーンセグメントのマッピングを記述するマッピングメタデータを受信すること、およびマッピングメタデータに従って複数のゾーン内の記憶されたデータの場所を特定すること、を含み得る。
【0010】
いくつかの実施形態において、複数のゾーンはシングル磁気記録ストレージシステムにおいて実施され得る。
【0011】
ある実施形態では、コンピュータシステムが、1つまたは複数のプロセッサと、命令を記憶する非一時的コンピュータ可読メモリと、を含み、命令は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、上述された方法またはその変形例の1つまたは複数の操作を遂行させる。
【0012】
ある実施形態では、コンピュータ可読記憶媒体がコンピュータ実行可能命令を記憶し、命令は、実行されたとき、コンピュータシステムの1つまたは複数のプロセッサに、上述された方法またはその変形例の1つまたは複数の操作を遂行させる。
【図面の簡単な説明】
【0013】
【
図1】1つまたは複数の実施形態に従う、オブジェクトストレージサーバを管理するための例示的なシステムを示す。
【
図2】1つまたは複数の実施形態に従う、例示的なシングル磁気記録ドライブを示す。
【
図3】1つまたは複数の実施形態に従う、オブジェクトデータをゾーンセグメントに書き込むための例示的なフローを示す。
【
図4】1つまたは複数の実施形態に従う、データをゾーンセグメントから読み出すための例示的なフローを示す。
【
図5】1つまたは複数の実施形態に従う、データをゾーンセグメントから削除するための例示的なフローを示す。
【
図6】1つまたは複数の実施形態に従う、ゾーンセグメントをデフラグするための例示的なフローを示す。
【
図7】少なくとも1つの実施形態に従う、クラウド・インフラストラクチャ・アズ・ア・サービス・システムを実施するための1つのパターンを示すブロック図である。
【
図8】少なくとも1つの実施形態に従う、クラウド・インフラストラクチャ・アズ・ア・サービス・システムを実施するための別のパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態に従う、クラウド・インフラストラクチャ・アズ・ア・サービス・システムを実施するための別のパターンを示すブロック図である。
【
図10】少なくとも1つの実施形態に従う、クラウド・インフラストラクチャ・アズ・ア・サービス・システムを実施するための別のパターンを示すブロック図である。
【
図11】少なくとも1つの実施形態に従う、例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0014】
詳細な説明
以下の説明において、様々な実施形態が説明される。説明の目的のために、実施形態の完全な理解を与えるべく具体的構成および詳細が説明される。しかし、実施形態は具体的詳細を有せずに実施され得ることも当業者には明らかであろう。さらに、よく知られた特徴は、説明されている実施形態を不明瞭にしないように、省略または単純化され得る。
【0015】
クラウドベースのプラットフォームはユーザのためのスケーラブルで柔軟なコンピューティングリソースを提供する。インフラストラクチャ・アズ・ア・サービス(IaaS)とも称される、このようなクラウドベースのプラットフォームは、顧客のデータを巡るクラウドソリューションの完全なスイート、例えば、変換のオーサリング、データのロード、およびデータの提示のためのソリューションを提供し得る。バックエンドデータストレージシステムの部分であり得る、データ複製およびバックアップシステムにおいて、シングル磁気記録(SMR)ドライブはデータストレージシステムの記憶容量を増大させ得る。SMRドライブは記録トラックを部分的に重ね合わせ、または瓦状に配列し、これにより、より多くのトラックが所与のサイズのハードディスクに書き込まれることを可能にし得る。重ね合わせられたトラックは、ゾーンセグメントに編成され得る、ゾーンにグループ化され得る。読み出しパスが保存されるような仕方でトラックを瓦状に配列することによって、トラックは、たとえ、それらが部分的に上書きされていても、依然として読み出され得る。対照的に、瓦状配列の結果として、書き込み操作は、部分的に上書きされたデータは読み出され得るが、上書きはされ得ない、追記専用のプロセスにおいて適用され得る。それゆえ、SMRドライブへのアクセスは、SMRドライブへの書き込みに関わる追加の操作のゆえに、後述されるように、ファイルシステムではなく、ブロックインターフェイスによって提供され得る。
【0016】
分散ストレージシステムにおいて、ユーザデータは、ボリュームストレージ(例えば、ブロックボリュームストレージ)内、およびオブジェクトストレージ内に記憶され得る。ユーザはボリュームストレージシステムと直接対話し得、その一方で、データベースシステムのバックエンドストレージサブシステムは、例えば、データ複製、バックアップ、または(例えば、データベースシステム容量を補うための)他のデータ記憶のために、オブジェクトストレージを用い得る。データ複製またはバックアップシステムにおけるSMRドライブの実施は、SMRドライブへのデータの書き込みおよび再書き込みの相対的な複雑さによって制約される。
図2を参照してより詳細に説明されるように、部分的に上書きされたトラックをゾーン内で編成することは、システムが、ゾーン内の利用可能容量を超えるデータをゾーンに書き込もうと試みる際の非効率性を引き起こし得る。例えば、従来のSMRドライブでは、システムは、ゾーンの容量を超えるデータをゾーンに書き込むための要求を拒否し得る。この制約に対処するために、ゾーンはゾーンセグメントに編成され得、データ記憶を管理するシステムは、個々のゾーンではなく、ゾーンセグメントへの書き込み要求に対処し得る。このように、ゾーンセグメント内の書き込み位置が識別され得、書き込み要求によって参照されたデータはゾーンセグメント内の複数のゾーンにまたがって書き込まれ得る。
【0017】
例によっては、高速、効率的で、信頼できるデータ輸送が所望されるブロックストレージがしばしば用いられる。ブロックストレージはデータをブロックに分け、それらのブロックを別個の部分として記憶することができる(例えば、各ブロックはその独自の識別子を有する)。その後、ブロックは異なるシステムにまたがって記憶され得、各ブロックは、異なるシステムと協働するように構成され得る(例えば、区分される)。代替的に、オブジェクトストレージはデータファイルを部分(例えば、オブジェクト)に分け、その後、それらを、複数のネットワーク化システムにまたがって散在し得る、単一のリポジトリ内に記憶する。ブロックストレージの文脈において、ボリューム(例えば、ブロックボリューム)は、開発者がインスタンスの記憶容量を動的に拡張することを可能にする(例えば、物理的または仮想的に)着脱可能なブロックストレージデバイスであることができる。ブロックボリュームストレージのサイズを増大または減少させるために、ブロックボリュームは、さほど労力を費やすことなく、それぞれ、スピンアップまたはダウンされ得る。データベースシステムがボリュームストレージおよびオブジェクトストレージの両方を実装する場合には、I/O要求はボリューム識別子(例えば、ブロックボリューム識別子)によってデータを参照し得る。ボリューム識別子は、データベースシステムの部分として含まれるメタデータデータベース内に記憶されたボリュームメタデータを通じて、オブジェクトストレージシステム内の記憶場所にマッピングされ得る。書き込み要求の場合には、データベースシステムは、書き込み要求内で参照されたボリュームにマッピングされたデータを記憶するSMRシステム内のゾーンセグメントを識別し得る。識別されると、データベースシステムは、新たなデータが書き込まれ得るゾーンセグメント内に含まれるゾーン内の書き込み位置を記述するゾーンセグメントポインタを識別し得る。ゾーンを上書きするのではなく、SMRシステムはゾーンに書き込み得るか、データを、複数のゾーンにまたがって書き込まれるべきブロックに分け得るか、データを記憶するための容量を有するゾーンが利用可能でない場合には、要求を断り得るか、またはあふれたデータを記憶するための新たなゾーンセグメントを割り当て得る。このように、SMRシステムは、オブジェクトストレージシステムの実効容量がSMRストレージの使用を通じて増大させられ、その一方で、データサイズがゾーン容量を超えることによって生じるゾーン書き込みの失敗の影響を抑制するような仕方で、データをハードディスクドライブに書き込み得る。同様の仕方で、読み出し、削除、およびデフラグ技術もまた、ゾーンセグメント内に記憶されたデータにマッピングされたボリュームメタデータを参照して、SMRシステムを用いて実施され得る。
【0018】
例示的な例では、データベースシステムは、クラウドリソースデータを分散ストレージシステムの部分として記憶するように構成され得る。データベースシステムはSMRシステムを含み得る。SMRシステムは、ゾーンセグメント内で編成されたゾーンを用いるSMRストレージのために構成されたハードディスクドライブであるか、またはそれらを含み得る、1つまたは複数のSMRデータベースシステムと通信するSMRストレージサーバを含み得る。本例では、システムは、書き込み要求(「put」要求とも称される)、読み出し要求(「get」要求とも称される)、ならびに限定するものではないが、削除要求またはデフラグメンテーション操作を含む、他のI/Oプロセスなどの、入力/出力(I/O:input/output)要求を受信し得る。SMR構成の部分として、I/O要求は、実施された改善されたプロセスへのデータベースシステムに、ゾーンセグメント内でSMRシステム内に記憶されたデータを識別させ、管理させ得る。
【0019】
バックエンドストレージサブシステムを用いてI/Oプロセスを実施するプロセスは、少なくとも、それは、SMRで構成されたストレージシステムからの効率的なI/Oを可能にするため、データ複製、記憶、およびバックアップシステムの全体的性能を改善する。例えば、SMRシステムは、以前に書き込まれた磁気トラックを少なくとも部分的に瓦状に配列することによって、システムへのハードディスクドライブの追加を行うことなく、25%以上もの記憶容量の増大をもたらし得る。SMRゾーンをゾーンセグメントに編成することは、SMRドライブに対して行われたI/O要求を果たす速度、効率、および成功率の改善を可能にすることによって、I/Oプロセスを改善し得る。さらに、来たる図面を参照して説明されるようにゾーンドライブを管理することによって、データベースシステムは、データベースシステムが、オブジェクトデータをボリュームデータにマッピングするためのボリュームメタデータを参照する統合されたブロックインターフェイスによって制御される、ホスト管理ドライブを用いることを可能にすることによって、システムの複雑さを低減し得る。
【0020】
図1は、1つまたは複数の実施形態に従う、オブジェクトストレージサーバを管理するための例示的なシステム100を示す。データベースシステム100は、バックエンドデータストレージサブシステムの部分としての、様々な磁気記録技術(例えば、垂直磁気記録(PMR:perpendicular magnetic recording)、SMR、または同様のもの)を実施し得る、複数のストレージシステムにまたがってユーザデータを分散させ、記憶するように構成され得る。このように、データベースシステム100は、分散データストレージシステムにおける改善されたI/O操作を促進するためのアプローチとして、データ複製、ブロックボリュームシステムへのボリュームデータの復元、またはゾーンをゾーンセグメントに編成するSMRシステムのデフラグの部分として、オブジェクトストレージ内に記憶されたデータに対するI/O要求を果たし得る。
【0021】
いくつかの実施形態において、システム100は、I/O要求120を受信し、I/O要求120をウェブサーバ130へ送信するように構成され得る、ロードバランサ110を含み得る。ロードバランサ110は、複数の異なる物理的場所に配置され得、および/または単一の物理的場所に複数のウェブサーバ130を含み得る、分散ストレージシステムの部分としての複数のウェブサーバ130にまたがってI/O要求を分散させ得る。同様に、ウェブサーバ130は1つまたは複数のストレージシステム140と通信し得る。ストレージシステム140は、データをPMRまたはSMR構成で記憶するように構成され得る。例えば、ストレージシステム140は、1つまたは複数のPMRドライブ144と通信するストレージサーバ142を含み得る。加えて、ウェブサーバ130は、
図2を参照してより詳細に説明されるように、1つまたは複数のSMRドライブ148と通信するSMRストレージサーバ146を含むストレージシステムと通信し得る。システム100は、例えば、SMRストレージサーバ146によるソフトウェアの実行を通じて、SMRドライブ148内に記憶されたデータに対するI/O要求120を実行するように構成され得る。
【0022】
システム100は、ボリュームサービス150を参照することによって、ストレージシステム140内に記憶されたデータをボリュームデータにマッピングし得る。このように、I/O要求120は、ボリュームメタデータデータベース160内の、ストレージシステム140のストレージ内の場所にマッピングされ得る、ボリューム識別子への参照を含み得る。一例では、読み出し要求は、ボリュームメタデータデータベース160内のエントリ内の、ゾーンセグメントにマッピングされ得る、ボリューム識別子、セグメントポインタ、および読み出しサイズを参照し得る。
【0023】
このように、システム100はSMRドライブ148を分散データストレージシステムの部分として管理し得る。有利に、システム100は、バックエンドデータストレージサブシステムが、フロントエンドブロックボリュームシステムとの統合を維持しつつ、SMRドライブ148の増大した記憶容量の恩恵を受けることを可能にし得る。
図3~
図6を参照してより詳細に説明されるように、データベースシステム100はI/O要求120を、例えば、データ複製またはバックアップの部分として受信し得、PMRドライブ144および/またはSMRドライブ148を読み出すこと、書き込むこと、またはデフラグすることによってI/O要求120を実施し得る。
【0024】
図2は、1つまたは複数の実施形態に従う、例示的なシングル磁気記録SMRドライブ200を示す。SMRドライブ200の物理的プロセスおよびデータ構造は、SMRドライブ200のディスク上の磁気トラック210を上書きすることに基づく。PMRドライブでは、磁気トラックは上書きされない。それゆえ、PMRドライブ内に記憶されたデータはランダムにアクセスされ得る(例えば、PMRドライブはランダムアクセスハードドライブストレージとして用いられ得る)。対照的に、ランダムアクセスではなく、データを追記することによって書き込むことができるSMRドライブは、通例、変更される可能性が低いデータを効率的に読み出すように構成される。
【0025】
SMRドライブ200内のデータは、追記専用のI/Oシステムの部分として、ファイルシステムではなく、ブロックシステムを用いて記憶され得る。それゆえ、データブロックは、ゾーンセグメント230に編成され得る、固定サイズ(例えば、256MB)のゾーン220に書き込まれ得る。物理的に、各ゾーンは、データトラック250を提供するために部分的に上書きされる、固定した書き込み幅240を有する多数の磁気トラック210によって記述され得る。データトラックは、例えば、SMRドライブ200の読み出し/書き込みヘッド270の仕様に依存するSMRドライブ200のパラメータであり得るデータトラックピッチ260によって記述され得る。データトラックピッチ260が狭いほど、SMRドライブ200の全体的容量は増大し、データトラック250を正確に読み出す読み出し/書き込みヘッド270の能力を含む因子によって制限される。
【0026】
磁気トラック210は、ゾーン220およびゾーンセグメント230の階層編成を実例説明するために、固定した幅を有するように示されている。PMRドライブにおいて行われるように、データを離散的なトラック内の単一の位置に索引付けするのではなく、SMRドライブ200は、データを、複数の磁気トラック210にまたがって延びたゾーン220内で編成し、ゾーンセグメント230の始点、ゾーン220の始点、および/またはデータが見出されるべきゾーン220内の場所を指示するポインタによって索引付けされるようにし得る。例えば、ポインタは、後続の書き込み操作が新たなデータを追記することになる、ゾーン220内の最後に書き込まれた位置を記述する、書き込みポインタを含み得る。
【0027】
場合によっては、ゾーン220は、データがゾーン220に書き込まれ得るかどうかを支配し得る1つまたは複数のステータスによって記述され得る。例えば、ゾーン220のステータスは、限定するものではないが、「空(empty)」、「満杯(full)」、「開放(open)」、「閉鎖(closed)」、または「終了(finished)」を含み得る。空ステータスは、ゾーン220はゾーン220の磁気トラック210の最初から書き込まれることができることを指示し得る(例えば、ゾーン220のための書き込みポインタはゾーン220の始めにある)。同様に、満杯ステータスは、ゾーン220は追加の書き込み操作のために利用可能でないことを指示し得る(例えば、ゾーン220のための書き込みポインタはゾーン220の終わり、または終わりの近くにある)。開放ステータスは、ゾーン220は書き込み操作のために利用可能であることを指示し得る(例えば、ゾーン220は、データをゾーン220の磁気トラック210に書き込むために利用可能な容量を有し、SMRドライブ220は、書き込み操作を実施するために割り振られたリソースを有する)。閉鎖ステータスは、対照的に、ゾーン220は書き込み操作のために利用可能でないが、開放され得ることを指示し得る。終了ステータスは、データはゾーン220に書き込まれないことになることを指示し得る(例えば、ゾーン220のための書き込みポインタは、さらなる書き込み操作を防止するためにゾーンの終わりへ移動させられ得る)。終了ゾーンは、ゾーン220を空ステータスに設定することによって(例えば、書き込みポインタをゾーン220の始めへ移動させることによって)開放され得る。
【0028】
ゾーン220をゾーンセグメント230に編成することは、ゾーンごとの書き込み位置ではなく、ゾーンセグメント230のための書き込み位置を記述するセグメントポインタが規定され得る仕方で、ゾーン220がまとめて管理されることを可能にし得る。ゾーンセグメント230のゾーン220内において、ゾーン固有の書き込み位置は、上述されたステータスに従い得、その一方で、セグメントポインタはゾーンセグメント230の最初の利用可能な開放ゾーン内の書き込み位置を記述し得る。例えば、ゾーン220はゾーンセグメント230内で連続的に編成され得る。このように、データはゾーンセグメント230内の複数のゾーン220にまたがってブロックの形で書き込まれ得る。ゾーンを連続的様態で編成することは、SMRドライブ200が、長さが開放ゾーンの容量を超えるデータを参照する書き込み要求によりうまく対応することを可能にし得る。SMRドライブ200はゾーンセグメント内の複数のゾーンを開放し得、単一の書き込み要求に基づいて複数の書き込み操作を規定し得る。以下において、
図3を参照してより詳細に説明されるように、書き込み操作は、ゾーンセグメント230のゾーン220内のデータの書き込みを開始するための場所を指示するセグメントポインタを識別することによって実施され得る。
【0029】
図3は、1つまたは複数の実施形態に従う、オブジェクトデータをゾーンセグメントに書き込むための例示的なフロー300を示す。フローの操作は、ハードウェア回路機構として実施すること、および/または
図1のシステム100などの、コンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶することができる。実施された時、命令は、回路機構、またはコンピュータシステムのプロセッサによって実行可能なコードを含むモジュールを表す。このような命令の実行は、コンピュータシステムを、本明細書において説明される特定の操作を遂行するように構成する。各回路機構、またはプロセッサと組み合わせたコードはそれぞれの操作を遂行する。操作は特定の順序で示されているが、特定の順序は必須ではなく、1つまたは複数の操作が省略され、飛ばされ、および/または順序を変更され得ることを理解されたい。
【0030】
一例では、フロー300は、コンピュータシステムが書き込み要求を受信する、操作310を含む。書き込み要求(例えば、
図1のI/O要求120)は、例えば、データを、ブロックボリュームシステム内ではなく、オブジェクトストレージ内に記憶するためのユーザ要求に基づいて、データ複製、アーカイブ、または他の記憶を管理する分散データストレージシステムから受信され得る。書き込み要求を受信することの部分として、コンピュータシステムは、
図1を参照してより詳細に説明されるように、要求を(例えば、IaaSインフラストラクチャシステムの部分としての)他のネットワーク化システムへ転送し得る。例えば、書き込み要求は、書き込み要求を処理するためのストレージサーバ(例えば、
図1のSMRストレージサーバ146)を選択し得る、ウェブサーバ(例えば、
図1のウェブサーバ130)へ転送され得る。
【0031】
一例では、フロー300は、コンピュータシステムがゾーンセグメントを空または開放ゾーンについて走査する、操作320を任意選択的に含む。書き込み要求は規定長のデータチャンクを含み得る。ここで、チャンクは、ゾーンセグメント(例えば、
図2のゾーンセグメント230)に書き込まれるべきデータのブロックである。
図2を参照してより詳細に説明されるように、ゾーンセグメントは、ゾーンの容量の整数倍と等価の記憶容量を提供する複数のゾーン(例えば、
図2のゾーン220)を含み得る。ゾーンセグメント内の1つまたは複数のゾーンは空または開放状態であり得、したがって、書き込み操作のために利用可能であり得る。ゾーンはゾーンセグメント内で連続的に編成され得、これにより、開放ゾーンの後には空ゾーンが続き得る。空ゾーンは、必ずしも、磁気トラックに何も記録されていないゾーンを指示せず、むしろ、ゾーンのための書き込み位置がゾーンの始めにあるゾーンを指示し得ることを理解されたい。
【0032】
一例では、フロー300は、操作330を任意選択的に含み、コンピュータシステムが新たなゾーンセグメントをボリュームに割り当てる。場合によっては、ゾーンセグメントの走査はゾーンセグメントの終端ゾーンの前の空または開放ゾーンを識別しないことがある。いくつかの実施形態において、システムは、参照されたボリュームのためのデータを書き込むために利用可能な容量を増大させるために、新たなゾーンセグメントを、(例えば、ボリューム識別子によって)書き込み要求内で参照されたボリュームに割り当て得る。新たなゾーンセグメントは、容量不足のために拒否される書き込み要求の割合を低減する目的で維持されたゾーンセグメントのフリープールから割り当てられ得る。いくつかの実施形態において、新たなゾーンセグメントは、ゾーンセグメントを記憶する同じSMRドライブから割り当てられ得るか、またはSMRストレージサーバ(例えば、
図1のSMRストレージサーバ146)を通じて協調させられる、異なるSMRドライブから割り当てられ得る。
【0033】
一例では、フロー300は、操作340を含み、コンピュータシステムがセグメントポインタを識別する。ゾーンセグメント(または新たなゾーンセグメント)内において、システムは、開放または空ステータスによって記述されたゾーンセグメントの最初のゾーンの場所を特定することによってセグメントポインタを識別し得る。例えば、ゾーンがゾーンセグメント内で連続的に編成されている場合には、セグメントポインタは最初の開放ゾーンの書き込み位置に対応し得る。別の例では、ゾーンセグメントが開放ゾーンを含まない場合には、セグメントポインタは最初の空ゾーンの開始位置に対応し得る。
【0034】
一例では、フロー300は、操作350を含み、コンピュータシステムがセグメントポインタに従ってデータをゾーンセグメントのゾーンに書き込む。セグメントポインタから開始して、システムは、書き込み要求によって参照されたデータを、セグメントポインタに対応するゾーンに書き込み得る。書き込み操作は、セグメントポインタに対応するゾーンが、書き込み要求によって参照されたチャンク全体のための容量を有するかどうかの、システムによる初期チェックを含み得る。ゾーンが不十分な容量を有する場合には、システムは複数のブロックを規定し得、これにより、チャンクはゾーンセグメントの複数のゾーンにまたがって分割され得る。例示的な例では、ゾーンセグメントのゾーンは連続的に編成され得、チャンクは、第1のブロックのサイズが、セグメントポインタに対応するゾーンの書き込み容量に対応するような仕方で、第1のブロックおよび第2のブロックに分割され得る。第1のブロックはセグメントポインタから開始して書き込まれ得、第2のブロックは次のゾーンに書き込まれ得る。本例は連続的なゾーンを説明しているが、方法300は他のアプローチを用いて実施され得る。
【0035】
一例では、フロー300は、操作360を含み、コンピュータシステムがセグメントポインタを更新する。データが複数のゾーンに書き込まれる複数の書き込み操作を含み得る、書き込み操作の完了後に、システムはセグメントポインタをデータの終了位置に規定し得る。このように、更新されたセグメントポインタは、書き込み要求の受信前のセグメントポインタに対応するゾーンに対して、ゾーンセグメントの異なるゾーン内の書き込み位置に対応し得る。
【0036】
一例では、フロー300は、操作370を含み、コンピュータシステムがボリュームメタデータを更新する。
図1を参照してより詳細に説明されるように、ゾーンセグメントに書き込まれたデータはボリュームメタデータを通じてブロックボリュームにマッピングされ得る。ボリュームメタデータはセグメントポインタを含み得、それゆえ、ボリュームメタデータを更新することは、ボリュームメタデータデータベース(例えば、
図1のボリュームメタデータデータベース160)内のセグメントポインタを更新すること、ならびに操作320および330の部分として、新たなゾーンセグメントが割り当てられた場合には、ボリューム-ゾーンセグメントマッピングを更新することを含み得る。例によっては、ボリュームメタデータは、ポインタが操作360において更新される前のセグメントポインタ値に対応する、データが書き込まれた開始場所ポインタを記憶し得る。
【0037】
一例では、フロー300は、コンピュータシステムが書き込み要求のステータスを出力する、操作380を含む。いくつかの実施形態において、システムは、様々な異なる種類のステータスレポートを出力するように構成され得る。例えば、使用および容量データなどの、リソースメタデータが、IaaSシステムオペレーションを改善することの部分として収集され、管理され得る。別の例として、書き込み要求の成功または失敗がシステムへ返され得、これにより、システムは方法300の操作のうちの一部または全てを繰り返し得る。別の例として、書き込み要求が人間のユーザに起源を有していた場合には、システムはステータスをIaaSコンソールインターフェイスのユーザへ出力し得る。
【0038】
ゾーンセグメントの編成は、SMRドライブを組み込んだデータベースシステムの操作のための著しい技術的改善をもたらし得る。複数のゾーンを含むゾーンセグメントへの書き込み技術を実施することによって、データがゾーンにまたがって書き込まれ得、複数のゾーンの容量が共有され得る。このように、ゾーンセグメントポインタにマッピングされたボリュームメタデータによって促進される、データ複製、記憶、およびバックアップ操作は、SMR書き込みおよび再/書き込み操作の効率を改善し得る。
【0039】
図4は、1つまたは複数の実施形態に従う、データをゾーンセグメントから読み出すための例示的なフロー400を示す。フローの操作は、ハードウェア回路機構として実施すること、および/または
図1のシステム100などの、コンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶することができる。実施された時、命令は、回路機構、またはコンピュータシステムのプロセッサによって実行可能なコードを含むモジュールを表す。このような命令の実行は、コンピュータシステムを、本明細書において説明される特定の操作を遂行するように構成する。各回路機構、またはプロセッサと組み合わせたコードはそれぞれの操作を遂行する。操作は特定の順序で示されているが、特定の順序は必須ではなく、1つまたは複数の操作が省略され、飛ばされ、および/または順序を変更され得ることを理解されたい。
【0040】
一例では、フロー400は、操作410を含み、コンピュータシステムが読み出し要求を受信する。
図1を参照してより詳細に説明されるように、読み出し要求は、読み出されるべきボリュームおよびデータブロックを参照し得る。ボリュームは、ボリュームメタデータ内でSMRドライブにマッピングされ得る、ボリューム識別子およびブロック識別子によって参照され得る。SMRドライブは、ゾーンセグメント内で連続的に編成され得る、ゾーンを含むゾーンセグメントを規定し得る。このように、システムは、データアクセス操作の部分として、例えば、データ復元プロセスの部分として、読み出し要求を受信し得、データを読み出すためにゾーンセグメントの複数のゾーンにアクセスするように構成され得る。
【0041】
一例では、フロー400は、操作420を含み、コンピュータシステムが、(例えば、
図3の370においてボリュームメタデータを更新する際に)ボリュームメタデータ内に記憶された、記憶されたポインタ、および読み出し長を識別する。記憶されたポインタおよび読み出し長は、読み出し要求内で識別されたボリュームに対応し得る。ボリューム識別子は、記憶されたポインタによって、ゾーンセグメントに、およびゾーンセグメントのゾーンにマッピングされ得る。
図3を参照して説明される方法と対照的に、フロー400の記憶されたポインタは、書き込み位置ではなく、読み出し位置を参照し得る。そうであっても、それは、同様に、SMRドライブがデータを読み出すためのゾーンセグメント内の開始位置を参照すると理解され得る。
【0042】
読み出し要求はまた、SMRドライブ上の読み出し長にマッピングされ得る、読み出されるべきデータへの参照を含み得る。読み出し長は、読み出されるべきトラック(例えば、
図2のデータトラック250)の寸法または長さに対応し得、これにより、システムは、読み出し長がゾーンセグメント内の複数のゾーンと重なるかどうかを決定し得る。例えば、ゾーンがゾーンセグメント内で連続的に編成されている場合には、システムは、セグメントポインタにおける第1の読み出し位置、およびゾーンセグメント内の次のゾーンの開始位置における第2の読み出し位置を指示し得る。
【0043】
一例では、フロー400は、操作430を任意選択的に含み、コンピュータシステムがゾーンセグメント内のゾーンごとの単一の読み出しコマンドを決定する。読み出し長が、操作420において識別されたセグメントポインタから開始して、複数のゾーンにわたって延びる場合には、システムはゾーンセグメントの異なるゾーンのための複数の読み出しコマンドを決定し得る。複数の単一の読み出しコマンドは相互参照され得、これにより、読み出しコマンドによって返されたデータは、操作420において決定された読み出し長に従って再構築され得る。このように、複数のゾーンにまたがって書き込まれたデータは、個々のゾーンにおいて対処される複数の読み出し要求ではなく、ゾーンセグメントを参照する単一の読み出し要求によって読み出され得る。
【0044】
一例では、フロー400は、操作440を含み、コンピュータシステムが読み出しコマンドをSMRドライブへ発行する。
図1を参照してより詳細に説明されるように、システムはストレージサーバ(例えば、
図1のストレージサーバ142またはSMRサーバ146)を介してデータ記憶を管理し得る。読み出しコマンドは、操作420において決定されたセグメントポインタおよび読み出し長を含み得、システムは、読み出しコマンドを、
図1を参照してより詳細に説明されるとおりのボリュームメタデータなどの、マッピングメタデータによって参照されたSMRストレージサーバへ発行し得る。
【0045】
一例では、フロー400は、操作450を含み、コンピュータシステムが、読み出されたデータ、および読み出し要求のステータスを出力する。データの出力は、データをSMRドライブから、読み出し要求内で参照された行先へ通信することを含み得る。例えば、システムはデータをボリュームストレージシステムへ、またはデータ複製操作の部分として、1つのオブジェクトストレージドライブから別のオブジェクトストレージドライブへ出力し得る。フロー300と同様に、ステータスは、要求のための成功/失敗情報、ならびに限定するものではないが、読み出しコマンド内で参照されたデータおよびゾーンを記述するメタデータを含む他の情報を含み得る。
【0046】
フロー400の操作を用いて読み出しコマンドを促進することは、SMRドライブを組み込んだデータベースシステムの操作のための著しい技術的改善をもたらし得る。ゾーンセグメントに編成された複数のゾーンにおいて対処される読み出し要求を果たす技術を実施することによって、データは、ゾーンセグメント内のゾーンごとに生成される複数の読み出し要求を用いることなく、SMRドライブからより効率的に読み出され得る。
【0047】
図5は、1つまたは複数の実施形態に従う、データをゾーンセグメントから削除するための例示的なフロー500を示す。フローの操作は、ハードウェア回路機構として実施すること、および/または
図1のシステム100などの、コンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶することができる。実施された時、命令は、回路機構、またはコンピュータシステムのプロセッサによって実行可能なコードを含むモジュールを表す。このような命令の実行は、コンピュータシステムを、本明細書において説明される特定の操作を遂行するように構成する。各回路機構、またはプロセッサと組み合わせたコードはそれぞれの操作を遂行する。操作は特定の順序で示されているが、特定の順序は必須ではなく、1つまたは複数の操作が省略され、飛ばされ、および/または順序を変更され得ることを理解されたい。
【0048】
一例では、フロー500は、操作510を含み、コンピュータシステムが削除要求を受信する。読み出しまたは書き込み操作と対照的に、削除操作は、セグメントポインタを開始位置として参照することなく進行し得る。その代わりに、削除要求は、
図2を参照してより詳細に説明されるとおりのSMRドライブ(例えば、
図2のSMRドライブ200)などの、1つまたは複数のドライブ内のオブジェクトストレージにマッピングされ得る、ボリューム識別子情報を含み得る。
【0049】
一例では、フロー500は、操作520を含み、コンピュータシステムがボリュームオブジェクトのためのマッピングメタデータを読み出す。
図1を参照してより詳細に説明されるように、マッピングメタデータは、削除要求の対象となるブロックボリュームのためのデータを記憶するゾーンセグメントを参照し得る。このように、システムは、マッピングメタデータを参照することによって削除要求内で識別されたボリュームに割り当てられたゾーンセグメントまたはゾーンセグメント群を識別し得る。
【0050】
一例では、フロー500は、コンピュータシステムがボリュームオブジェクトの状態を更新する、操作530を含む。ボリュームオブジェクトの状態を更新することは、限定するものではないが、後続の書き込み要求のために、セグメントポインタがゾーンセグメント内の最初のゾーンの開始位置に対応するよう、割り当てられたゾーンセグメント内に含まれるゾーンのステータスを「満杯」または「開放」から「空」に変更するための命令をストレージサーバ(例えば、
図1のSMRストレージサーバ146)へ送信することを含み得る。加えて、または代替的に、システムは、後続のI/O要求(例えば、
図1のI/O要求120)内に含まれるボリューム識別子がSMRドライブ内のゾーンセグメントに関連付けられないよう、ボリュームメタデータデータベース(例えば、
図1のボリュームメタデータデータベース160)内のボリュームメタデータを変更し、マッピング情報を除去し得る。例えば、
図3を参照して説明されるフロー300の操作において、セグメントポインタを識別することは、ゾーンセグメントが、参照されたボリューム識別子に割り当てられていないことを返し得る。このように、削除要求はゾーンセグメントのゾーンの部分に対して対処され得る。SMRドライブが、追記専用のドライブではなく、ランダムアクセスドライブにより類似した仕方で動作することを可能にし得る、ゾーン全体の消去ではなく、ただし、書き込み要求は、部分的に上書きされたトラックに書き込み得ないことを除く。
【0051】
一例では、フロー500は、操作540を含み、コンピュータシステムが削除要求のステータスを出力する。
図3~
図4の以前のフローと同様に、システムは、削除要求によって対処されたリソースが解放されたことを指示するために、削除要求のステータスを、例えば、中央メタデータ管理システムに返し得る。加えて、または代替的に、システムは、要求が再送されるべきであるか、または再試行されることになるかどうかを指示するために、ステータス、成功/失敗メッセージを削除要求の発信者へ返し得る。
【0052】
図6は、1つまたは複数の実施形態に従う、ゾーンセグメントをデフラグするための例示的なフロー600を示す。フローの操作は、ハードウェア回路機構として実施すること、および/または
図1のシステム100などの、コンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶することができる。実施された時、命令は、回路機構、またはコンピュータシステムのプロセッサによって実行可能なコードを含むモジュールを表す。このような命令の実行は、コンピュータシステムを、本明細書において説明される特定の操作を遂行するように構成する。各回路機構、またはプロセッサと組み合わせたコードはそれぞれの操作を遂行する。操作は特定の順序で示されているが、特定の順序は必須ではなく、1つまたは複数の操作が省略され、飛ばされ、および/または順序を変更され得ることを理解されたい。
【0053】
SMRドライブに対する読み出し/書き込み操作を改善することに加えて、いくつかの実施形態において、SMRドライブのゾーンをゾーンセグメントに編成し、ゾーン内に記憶されたデータを再マッピングし、ストレージの非効率的使用を低減することを通じて、デフラグメンテーション操作も改善され得る。有利に、ゾーンセグメントをデフラグすることは、SMRドライブが、厳密に追記専用のドライブとして機能するよりもむしろ、ランダムアクセスドライブのように機能することを可能にし得るが、依然として、追記専用の書き込み操作に制限されることになる。例示的な例では、削除要求は、
図5を参照してより詳細に説明されるように、ドライブに直接書き込まれたデータではなく、マッピングメタデータを変更し得る。操作の過程にわたって、SMRドライブ(例えば、
図2のSMRドライブ200)は、1つのゾーン内で開始し、ゾーンセグメントの後続のゾーン内で終了するデータが削除されたときのように、ゾーンセグメントの容量の断片を使用することがある。部分的に重なり合ったトラック内のデータはSMRドライブ内で再書き込みされ得ないため、残った未使用容量は書き込み操作のために使用不可能になり得、これはSMRドライブ上の記憶容量の非効率性および過少利用を生じさせ得る。SMRドライブをデフラグすることは、システムが、データを新たなゾーン内に再書き込みし、ボリュームメタデータを再マッピングすることによって、未使用記憶容量を解放することを可能にし得る。
【0054】
一例では、フロー600は、操作610を含む、コンピュータシステムがゾーンセグメントの使用割合を確認する。デフラグメンテーションの部分として、システムは、使用割合が、デフラグ操作をトリガするための閾値を超えることに基づく自動(例えば、人間の介入を伴わない)プロセス(例えば、使用割合の定期チェック、削除要求の後の使用割合のリフレッシュ、または同様のもの)を実施し得る。その目的を達成するために、システムはボリュームメタデータにアクセスし、使用割合を確認し得る。使用割合は、ボリュームメタデータ内でマッピングされたゾーンセグメントのゾーン内の記憶容量の部分を記述し得る。例えば、ボリュームメタデータは、例えば、固定容量を有するゾーンセグメントに基づいて、合計でゾーンセグメントの総容量の部分に達するのみである、ゾーンセグメント内に記憶されたデータのための、始点、終点、チャンク長、または同様のものを参照し得る。
【0055】
一例では、フロー600は、操作620を含み、コンピュータシステムが使用割合を使用閾値と比較する。使用閾値は使用割合を用いて表され得る。例えば、システムが、使用割合が50%を下回ったときにデフラグメンテーションを実施するように構成されている場合には、使用閾値は0.5と表され得る。
【0056】
一例では、フロー600は、操作630を含み、コンピュータシステムが、ゾーンセグメントのゾーン内に記憶されたデータを識別する。操作620の比較の結果としてデフラグメンテーションプロセスがトリガされたとき、システムは、ボリュームメタデータを用いて、および/またはゾーンセグメントを走査することによって、ゾーンセグメントのデフラグメンテーションの間に移動させられるべきデータを識別し得る。ランダムアクセスドライブのデフラグメンテーションは、他のデータをドライブ上の所定位置に残しながら一部のデータを移動させることを可能にし得るが、SMRドライブの追記専用の書き込みは、データを識別し、新たなゾーンに再マッピングし、データがコピーされたゾーンフォームを消去することを含み得る。
【0057】
一例では、フロー600は、操作640を含み、コンピュータシステムが、記憶されたデータを空または開放ゾーンにマッピングする。場合によっては、これは2部分操作であり、第1の部分はここで操作640において行われ(例えば、これは、
図3の操作340において書き込み先場所がどのように決定されるのかと同様である)、第2の部分は操作650(後述)の後に起こる。操作630において識別されたマッピングデータは、ボリュームに関連付けられたデータが、ゾーンセグメントの新たなゾーンに、新たに割り当てられたゾーンに、またはSMRドライブ上のデフラグメンテーションの使用のために開放状態に維持されたゾーンセグメントであり得る、バッファストレージにマッピングされるよう、ボリュームメタデータを変更することを含み得る。同様に、ランダムアクセスメモリがバッファメモリのために用いられてもよい。再マッピングは、ゾーンセグメントへの、記憶されたデータの後続の書き込みのために、記憶されたデータそれの構成を決定することを含み得る。
【0058】
一例では、フロー600は、操作650を含み、コンピュータシステムが、記憶されたデータを空または開放ゾーンに書き込む。記憶されたデータを書き込むことは、
図3を参照してより詳細に説明されるとおりの、フロー300の操作を含み得る。例えば、システムは、記憶されたデータを開放ゾーンの1つまたは複数の空に書き込ませるための書き込みコマンドをSMRストレージサーバ(例えば、
図1のSMRストレージサーバ146)へ送信し得る。デフラグメンテーションのために確保されていないゾーンに対して書き込み操作が遂行される場合には、データは、書き込まれた場所に残され得、マッピングは、操作640によって提供されたとおりに維持され得る。
【0059】
一例では、操作640において上述された2部分操作の第2の部分は、データが操作650においてコピーされた後に、フロー600の操作655において行われる。例えば、データが新たな場所内で安全になると、ボリュームメタデータは更新される(例えば、
図3の操作370と同様)。
【0060】
一例では、フロー600は、コンピュータシステムが、記憶されたデータのソースゾーンをリセットする、操作660を含む。加えて、システムはゾーンセグメントのソースゾーンを後続のI/O操作(例えば、
図1のI/O操作120)のためにリセットし得る。ソースゾーンをリセットすることは、ゾーンのステータスを「満杯」から「空」に更新すること、またはゾーンセグメント内のデータの新たな構成を反映するための他の変更を含み得る。
【0061】
一例では、フロー600は、コンピュータシステムが超過ゾーンを解放する、操作670を任意選択的に含む。
図3を参照してフロー300の操作330のために説明されたように、書き込まれるべきデータが、参照されたゾーンセグメントの容量を超える書き込み操作は、新たなゾーンセグメントを割り当て、追加の記憶容量を提供することを含み得る。このように、デフラグメンテーションは、ゾーンセグメント内のデータ容量の未使用部分を低減することによって、データが単一のゾーンセグメント内に記憶され得るよう、調整し得る。それゆえ、ゾーンセグメントのためのデータを記憶するために以前に用いられたゾーンセグメントが解放され得る。いくつかの実施形態において、超過ゾーンは640のマッピング操作の部分として識別され、操作650を参照して説明されたように新たなマッピングに従って、記憶されたデータを書き込んだ後に、解放され得る。
【0062】
一例では、フロー600は、コンピュータシステムがデフラグプロセスのステータスを出力する、操作680を任意選択的に含む。以前の
図3~
図5の出力操作と同様に、操作680は、リソース使用ステータスをリソースメタデータの中央データベースへ報告すること、および/またはデフラグメンテーションプロセスの成功/失敗を指示することを含み得る。いくつかの実施形態において、操作680はまた、ゾーンの新たな使用割合を確認すること、またはタイマもしくは他のトリガ条件をリセットすることを含み得る。
【0063】
ゾーンセグメントごとのデフラグは、SMRドライブを組み込んだデータベースシステムの操作のための著しい技術的改善をもたらし得る。ゾーンセグメントデフラグメンテーションの技術を実施することによって、少なくとも、データがゾーンセグメントのゾーンにまたがって書き込まれ得る、ゾーンセグメントの使用割合を改善することによって、SMRドライブ容量の効率的使用が改善され得る。このように、SMRドライブに特徴的である、追記専用の書き込み操作によってもたらされる制約が低減され得る。
【0064】
上述されたように、インフラストラクチャ・アズ・ア・サービス(IaaS)は1つの特定の種類のクラウドコンピューティングである。IaaSは、公衆ネットワーク(例えば、インターネット)を通じて、仮想化されたコンピューティングリソースを提供するように構成され得る。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャコンポーネント(例えば、サーバ、記憶デバイス、ネットワークノード(例えば、ハードウェア)、デプロイメントソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)、または同様のもの)をホストすることができる。場合によっては、IaaSプロバイダはまた、それらのインフラストラクチャコンポーネントに付随する種々のサービス(例えば、課金、監視、ロギング、セキュリティ、ロードバランシング、およびクラスタ化等)も供給し得る。それゆえ、これらのサービスはポリシー駆動型であり得るため、IaaSのユーザは、アプリケーションの可用性および性能を維持するべくロードバランシングを駆動するためのポリシーを実施することが可能であり得る。
【0065】
場合によっては、IaaSの顧客は、インターネットなどの、ワイドエリアネットワーク(WAN:wide area network)を通じてリソースおよびサービスにアクセスし得、クラウドプロバイダのサービスを用いてアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザはIaaSプラットフォームにログインし、仮想機械(VM:virtual machine)を作成し、オペレーティングシステム(OS:operating system)を各VM上にインストールし、データベースなどのミドルウェアをデプロイし、作業負荷およびバックアップのためのストレージバケットを作成し、さらに、企業ソフトウェアをVM内にインストールすることができる。次に、顧客は、プロバイダのサービスを用いて、ネットワークトラフィックのバランスを取ること、アプリケーションの問題のトラブルシューティングを行うこと、パフォーマンスを監視すること、障害回復を管理すること等を含む、様々な機能を遂行することができる。
【0066】
大抵の場合、クラウドコンピューティングモデルはクラウドプロバイダの関与を必要とすることになる。クラウドプロバイダは、IaaSを供給すること(例えば、提供すること、貸与すること、販売すること)を専門にするサードパーティサービスであり得るが、そうである必要はない。エンティティはまた、プライベートクラウドをデプロイし、インフラストラクチャサービスの独自のプロバイダになることも選択し得るであろう。
【0067】
例によっては、IaaSのデプロイメントは、新たなアプリケーション、またはアプリケーションの新たなバージョンを、準備されたアプリケーションサーバまたは同様のものに入れるプロセスである。それはまた、サーバを準備する(例えば、ライブラリ、デーモン等をインストールする)プロセスを含み得る。これは、多くの場合、クラウドプロバイダによって、ハイパーバイザ層より下で(例えば、サーバ、ストレージ、ネットワークハードウェア、および仮想化)管理される。それゆえ、顧客は、(例えば、(例えば、オンデマンドでスピンアップされ得る)セルフサービス仮想機械、または同様のものの上における)、(OS)、ミドルウェア、および/またはアプリケーションデプロイメントの取り扱いの責任を負い得る。
【0068】
例によっては、IaaSのプロビジョニングは、コンピュータまたは仮想ホストを使用のために獲得すること、ならびにさらに、必要なライブラリまたはサービスをそれらにインストールすることを指し得る。大抵の場合、デプロイメントはプロビジョニングを含まず、プロビジョニングは、最初に遂行されることを必要とし得る。
【0069】
場合によっては、IaaSのプロビジョニングにとって2つの異なる問題が存在する。第1に、インフラストラクチャの初期セットを、いずれかが実行する前にプロビジョニングするという、初期の課題が存在する。第2に、全てのものがプロビジョニングされた後に、既存のインフラストラクチャを発展させる(例えば、新たなサービスを追加する、サービスを変更する、サービスを除去する等)という課題が存在する。場合によっては、これらの2つの課題は、インフラストラクチャの構成が宣言的に規定されることを可能にすることによって対処され得る。換言すれば、インフラストラクチャ(例えば、どのようなコンポーネントが必要とされるのか、およびそれらはどのように相互作用するのか)は、1つまたは複数の構成ファイルによって規定され得る。それゆえ、インフラストラクチャの全体的トポロジ(例えば、どのリソースがどれに依存するのか、およびそれらは各々、どのように協働するのか)は宣言的に記述され得る。場合によっては、トポロジが規定されると、構成ファイル内で記述される異なるコンポーネントを作成および/または管理するワークフローが生成され得る。
【0070】
例によっては、インフラストラクチャは、多くの相互接続された要素を有し得る。例えば、コアネットワークとしても知られる、1つまたは複数の仮想プライベートクラウド(VPC:virtual private cloud)(例えば、構成可能な、および/または共有されたコンピューティングリソースの、オンデマンドになる可能性のあるプール)が存在し得る。例によっては、ネットワークのセキュリティがどのようにセットアップされることになるのかを規定するためにプロビジョニングされる1つまたは複数のセキュリティグループルール、および1つまたは複数の仮想機械(VM)も存在し得る。ロードバランサ、データベース、または同様のものなどの、他のインフラストラクチャ要素もプロビジョニングされ得る。所望され、および/または追加されるインフラストラクチャ要素が増えるにつれて、インフラストラクチャは徐々に発展し得る。
【0071】
場合によっては、様々な仮想コンピューティング環境にわたるインフラストラクチャコードのデプロイメントを可能にするために、継続的デプロイメント技術が採用され得る。加えて、上述の技術はこれらの環境内のインフラストラクチャ管理を可能にすることができる。例によっては、サービスチームが、(例えば、時として世界中に及ぶ、様々な異なる地理的場所にわたる)1つまたは複数の、しかし、多くの場合、多数の、異なる生産環境にデプロイされることを所望されるコードを書くことができる。しかし、例によっては、コードがデプロイされることになるインフラストラクチャがまずセットアップされなければならない。場合によっては、プロビジョニングは手動で行われ得、プロビジョニングツールが、リソースをプロビジョニングするために利用され得、および/またはインフラストラクチャがプロビジョニングされると、デプロイメントツールが、コードをデプロイするために利用され得る。
【0072】
図7は、少なくとも1つの実施形態に従う、IaaSアーキテクチャの例示的なパターンを示すブロック
図700である。サービスオペレータ702は、仮想クラウドネットワーク(VCN)706およびセキュアホストサブネット708を含むことができるセキュアホストテナンシー704に通信可能に結合され得る。例によっては、サービスオペレータ702は、Microsoft Windows Mobile(登録商標)などのソフトウェア、ならびに/あるいはiOS、Windows Phone、Android、BlackBerry 7、Palm OS、および同様のものなどの種々のモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS:short message service)、Blackberry(登録商標)、または他の通信プロトコルが使用可能である、ポータブルハンドヘルドデバイス(例えば、iPhone(登録商標)、セルラ電話、iPad(登録商標)、コンピューティングタブレット、パーソナルデジタルアシスタント(PDA:personal digital assistant))、あるいはウェラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)であり得る、1つまたは複数のクライアントコンピューティングデバイスを用い得る。代替的に、クライアントコンピューティングデバイスは、例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムの様々なバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであることができる。クライアントコンピューティングデバイスは、限定するものではないが、例えば、Google Chrome OSなどの、種々のGNU/Linuxオペレーティングシステムを含む、種々の市販のUNIX(登録商標)またはUNIX系オペレーティングシステムのうちの任意のものを実行するワークステーションコンピュータであることができる。代替的に、または加えて、クライアントコンピューティングデバイスは、VCN706および/またはインターネットにアクセスすることができるネットワークを通じて通信する能力を有する、シンクライアントコンピュータ、インターネット接続可能ゲーミングシステム(例えば、Kinect(登録商標)ジェスチャ入力デバイスを有する、もしくは有しない、Microsoft Xboxゲーミングコンソール)、および/またはパーソナルメッセージングデバイスなどの、任意の他の電子デバイスであり得る。
【0073】
VCN706は、SSH VCN712内に包含されるLPG710を介してセキュアシェル(SSH:secure shell)VCN712に通信可能に結合され得るローカルピアリングゲートウェイ(LPG:local peering gateway)710を含むことができる。SSH VCN712はSSHサブネット714を含むことができ、SSH VCN712は、制御プレーンVCN716内に包含されるLPG710を介して制御プレーンVCN716に通信可能に結合され得る。また、SSH VCN712はLPG710を介してデータプレーンVCN718に通信可能に結合され得る。制御プレーンVCN716およびデータプレーンVCN718は、IaaSプロバイダによって所有され、および/または操作され得るサービステナンシー719内に包含され得る。
【0074】
制御プレーンVCN716は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)の役割を果たす制御プレーン非武装地帯(DMZ:demilitarized zone)層720を含むことができる。DMZベースのサーバは制限された責任を有し、セキュリティ侵害をせき止めておくのを助け得る。加えて、DMZ層720は、1つまたは複数のロードバランサ(LB:load balancer)サブネット722、アプリサブネット726を含むことができる制御プレーンアプリ層724、データベース(DB:database)サブネット730(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含むことができる制御プレーンデータ層728を含むことができる。制御プレーンDMZ層720内に包含されるLBサブネット722は、制御プレーンアプリ層724内に包含されるアプリサブネット726、および制御プレーンVCN716内に包含され得るインターネットゲートウェイ734に通信可能に結合され得、アプリサブネット726は、制御プレーンデータ層728内に包含されるDBサブネット730、ならびにサービスゲートウェイ736、およびネットワークアドレス変換(NAT:network address translation)ゲートウェイ738に通信可能に結合され得る。制御プレーンVCN716はサービスゲートウェイ736およびNATゲートウェイ738を含むことができる。
【0075】
制御プレーンVCN716は、アプリサブネット726を含むことができるデータプレーンミラーアプリ層740を含むことができる。データプレーンミラーアプリ層740内に包含されるアプリサブネット726は、計算インスタンス744を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC:virtual network interface controller)742を含むことができる。計算インスタンス744はデータプレーンミラーアプリ層740のアプリサブネット726を、データプレーンアプリ層746内に包含され得るアプリサブネット726に通信可能に結合することができる。
【0076】
データプレーンVCN718は、データプレーンアプリ層746、データプレーンDMZ層748、およびデータプレーンデータ層750を含むことができる。データプレーンDMZ層748は、データプレーンアプリ層746のアプリサブネット726およびデータプレーンVCN718のインターネットゲートウェイ734に通信可能に結合され得るLBサブネット722を含むことができる。アプリサブネット726はデータプレーンVCN718のサービスゲートウェイ736およびデータプレーンVCN718のNATゲートウェイ738に通信可能に結合され得る。データプレーンデータ層750もまた、データプレーンアプリ層746のアプリサブネット726に通信可能に結合され得るDBサブネット730を含むことができる。
【0077】
制御プレーンVCN716の、およびデータプレーンVCN718のインターネットゲートウェイ734は、公衆インターネット754に通信可能に結合され得るメタデータ管理サービス752に通信可能に結合され得る。公衆インターネット754は、制御プレーンVCN716の、およびデータプレーンVCN718のNATゲートウェイ738に通信可能に結合され得る。制御プレーンVCN716の、およびデータプレーンVCN718のサービスゲートウェイ736はクラウドサービス756に通信可能に結合することであることができる。
【0078】
例によっては、制御プレーンVCN716の、またはデータプレーンVCN718のサービスゲートウェイ736は公衆インターネット754を経由することなくクラウドサービス756へのアプリケーションプログラミングインターフェイス(API:application programming interface)コールを行うことができる。サービスゲートウェイ736からクラウドサービス756へのAPIコールは片方向であることができ、サービスゲートウェイ736はクラウドサービス756へのAPIコールを行うことができ、クラウドサービス756は、要求されたデータをサービスゲートウェイ736へ送信することができる。しかし、クラウドサービス756はサービスゲートウェイ736へのAPIコールを開始し得ない。
【0079】
例によっては、セキュアホストテナンシー704は、さもなければ隔離され得る、サービステナンシー719に直接接続され得る。セキュアホストサブネット708は、さもなければ隔離されたシステムを通じた双方向通信を可能にし得るLPG710を介してSSHサブネット714と通信することができる。セキュアホストサブネット708をSSHサブネット714に接続することは、セキュアホストサブネット708にサービステナンシー719内の他のエンティティへのアクセスを与え得る。
【0080】
制御プレーンVCN716は、サービステナンシー719のユーザが所望のリソースをセットアップすること、または他の仕方でプロビジョニングすることを可能にし得る。制御プレーンVCN716内でプロビジョニングされた所望のリソースはデータプレーンVCN718内でデプロイされるか、または他の仕方で使用され得る。例によっては、制御プレーンVCN716はデータプレーンVCN718から隔離され得、制御プレーンVCN716のデータプレーンミラーアプリ層740は、データプレーンミラーアプリ層740およびデータプレーンアプリ層746内に包含され得るVNIC742を介してデータプレーンVCN718のデータプレーンアプリ層746と通信することができる。
【0081】
例によっては、システムのユーザ、または顧客は、要求をメタデータ管理サービス752へ通信することができる公衆インターネット754を通じて、要求、例えば、作成(create)、読み出し(read)、更新(update)、または削除(delete)(CRUD)操作を行うことができる。メタデータ管理サービス752はインターネットゲートウェイ734を通じて要求を制御プレーンVCN716へ通信することができる。要求は、制御プレーンDMZ層720内に包含されるLBサブネット722によって受信され得る。LBサブネット722は、要求は有効であると決定し得、この決定に応じて、LBサブネット722は要求を、制御プレーンアプリ層724内に包含されるアプリサブネット726へ伝送することができる。要求の有効性が検証され、公衆インターネット754へのコールを必要とする場合には、公衆インターネット754へのコールは、公衆インターネット754へのコールを行うことができるNATゲートウェイ738へ伝送され得る。要求によって記憶されることを所望され得るメモリはDBサブネット730内に記憶され得る。
【0082】
例によっては、データプレーンミラーアプリ層740は制御プレーンVCN716とデータプレーンVCN718との間の直接通信を促進することができる。例えば、構成の改変、更新、または他の好適な変更が、データプレーンVCN718内に包含されるリソースに適用されることを所望され得る。VNIC742を介して、制御プレーンVCN716は、データプレーンVCN718内に包含されるリソースと直接通信することができ、これにより、それらに対する構成の改変、更新、または他の好適な変更を実行することができる。
【0083】
いくつかの実施形態において、制御プレーンVCN716およびデータプレーンVCN718はサービステナンシー719内に包含され得る。この場合には、システムのユーザ、または顧客は制御プレーンVCN716またはデータプレーンVCN718のどちらも所有または操作し得ない。その代わりに、IaaSプロバイダが、どちらもサービステナンシー719内に包含され得る、制御プレーンVCN716およびデータプレーンVCN718を所有または操作し得る。本実施形態は、ユーザまたは顧客が他のユーザ、または他の顧客のリソースと対話することを防止し得るネットワークの隔離を可能にすることができる。また、本実施形態は、システムのユーザまたは顧客が、記憶のために、所望のセキュリティレベルを有しないことがある、公衆インターネット754に頼ることを必要とすることなく、データベースをプライベートに記憶することを可能にし得る。
【0084】
他の実施形態では、制御プレーンVCN716内に包含されるLBサブネット722は、サービスゲートウェイ736からの信号を受信するように構成され得る。本実施形態では、制御プレーンVCN716およびデータプレーンVCN718は、公衆インターネット754をコールすることなくIaaSプロバイダの顧客によってコールされるように構成され得る。顧客が使用するデータベースがIaaSプロバイダによって制御され得、公衆インターネット754から隔離され得る、サービステナンシー719上に記憶され得るので、IaaSプロバイダの顧客は本実施形態を所望し得る。
【0085】
図8は、少なくとも1つの実施形態に従う、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図800である。サービスオペレータ802(例えば、
図7のサービスオペレータ702)は、仮想クラウドネットワーク(VCN)806(例えば、
図7のVCN706)およびセキュアホストサブネット808(例えば、
図7のセキュアホストサブネット708)を含むことができるセキュアホストテナンシー804(例えば、
図7のセキュアホストテナンシー704)に通信可能に結合され得る。VCN806は、SSH VCN812内に包含されるLPG710を介してセキュアシェル(SSH)VCN812(例えば、
図7のSSH VCN712)に通信可能に結合され得るローカルピアリングゲートウェイ(LPG)810(例えば、
図7のLPG710)を含むことができる。SSH VCN812はSSHサブネット814(例えば、
図7のSSHサブネット714)を含むことができ、SSH VCN812は、制御プレーンVCN816内に包含されるLPG810を介して制御プレーンVCN816(例えば、
図7の制御プレーンVCN716)に通信可能に結合され得る。制御プレーンVCN816はサービステナンシー819(例えば、
図7のサービステナンシー719)内に包含され得、データプレーンVCN818(例えば、
図7のデータプレーンVCN718)は、システムのユーザ、または顧客によって所有または操作され得る顧客テナンシー821内に包含され得る。
【0086】
制御プレーンVCN816は、LBサブネット822(例えば、
図7のLBサブネット722)を含むことができる制御プレーンDMZ層820(例えば、
図7の制御プレーンDMZ層720)、アプリサブネット826(例えば、
図7のアプリサブネット726)を含むことができる制御プレーンアプリ層824(例えば、
図7の制御プレーンアプリ層724)、データベース(DB)サブネット830(例えば、
図7のDBサブネット730と同様のもの)を含むことができる制御プレーンデータ層828(例えば、
図7の制御プレーンデータ層728)を含むことができる。制御プレーンDMZ層820内に包含されるLBサブネット822は、制御プレーンアプリ層824内に包含されるアプリサブネット826、および制御プレーンVCN816内に包含され得るインターネットゲートウェイ834(例えば、
図7のインターネットゲートウェイ734)に通信可能に結合され得、アプリサブネット826は、制御プレーンデータ層828内に包含されるDBサブネット830、ならびにサービスゲートウェイ836(例えば、
図7のサービスゲートウェイ)、およびネットワークアドレス変換(NAT)ゲートウェイ838(例えば、
図7のNATゲートウェイ738)に通信可能に結合され得る。制御プレーンVCN816はサービスゲートウェイ836およびNATゲートウェイ838を含むことができる。
【0087】
制御プレーンVCN816は、アプリサブネット826を含むことができるデータプレーンミラーアプリ層840(例えば、
図7のデータプレーンミラーアプリ層740)を含むことができる。データプレーンミラーアプリ層840内に包含されるアプリサブネット826は、計算インスタンス844(例えば、
図7の計算インスタンス744と同様のもの)を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC)842(例えば、742のVNIC)を含むことができる。計算インスタンス844は、データプレーンミラーアプリ層840内に包含されるVNIC842およびデータプレーンアプリ層846内に包含されるVNIC842を介して、データプレーンミラーアプリ層840のアプリサブネット826と、データプレーンアプリ層846(例えば、
図7のデータプレーンアプリ層746)内に包含され得るアプリサブネット826との間の通信を促進することができる。
【0088】
制御プレーンVCN816内に包含されるインターネットゲートウェイ834は、公衆インターネット854(例えば、
図7の公衆インターネット754)に通信可能に結合され得るメタデータ管理サービス852(例えば、
図7のメタデータ管理サービス752)に通信可能に結合され得る。公衆インターネット854は、制御プレーンVCN816内に包含されるNATゲートウェイ838に通信可能に結合され得る。制御プレーンVCN816内に包含されるサービスゲートウェイ836は、クラウドサービス856(例えば、
図7のクラウドサービス756)に通信可能に結合することであることができる。
【0089】
例によっては、データプレーンVCN818は顧客テナンシー821内に包含され得る。この場合には、IaaSプロバイダは制御プレーンVCN816を顧客ごとに提供し得、IaaSプロバイダは、顧客ごとに、サービステナンシー819内に包含される固有の計算インスタンス844をセットアップし得る。各計算インスタンス844は、サービステナンシー819内に包含される、制御プレーンVCN816と、顧客テナンシー821内に包含されるデータプレーンVCN818との間の通信を可能にし得る。計算インスタンス844は、サービステナンシー819内に包含される制御プレーンVCN816内でプロビジョニングされた、リソースが、顧客テナンシー821内に包含されるデータプレーンVCN818内でデプロイされるか、または他の仕方で使用されることを可能にし得る。
【0090】
他の例では、IaaSプロバイダの顧客は、顧客テナンシー821内を本拠とするデータベースを有し得る。本例では、制御プレーンVCN816は、アプリサブネット826を含むことができるデータプレーンミラーアプリ層840を含むことができる。データプレーンミラーアプリ層840はデータプレーンVCN818内に駐在することができるが、データプレーンミラーアプリ層840はデータプレーンVCN818内を本拠とし得ない。すなわち、データプレーンミラーアプリ層840は顧客テナンシー821へのアクセスを有し得るが、データプレーンミラーアプリ層840はデータプレーンVCN818内に存在するか、またはIaaSプロバイダの顧客によって所有もしくは操作され得ない。データプレーンミラーアプリ層840は、データプレーンVCN818へのコールを行うように構成され得るが、制御プレーンVCN816内に包含されるいかなるエンティティへのコールも行うように構成され得ない。顧客は、制御プレーンVCN816内でプロビジョニングされたデータプレーンVCN818内のリソースをデプロイするか、または他の仕方で使用することを所望し得、データプレーンミラーアプリ層840は、顧客の、リソースの所望のデプロイメント、または他の使用を促進することができる。
【0091】
いくつかの実施形態において、IaaSプロバイダの顧客はフィルタをデータプレーンVCN818に適用することができる。本実施形態では、顧客は、データプレーンVCN818が何にアクセスすることができるかを決定することができ、顧客はデータプレーンVCN818から公衆インターネット854へのアクセスを制限し得る。IaaSプロバイダは、フィルタを適用するか、または他の仕方で任意の外部ネットワークまたはデータベースへのデータプレーンVCN818のアクセスを制御することが不可能であり得る。顧客テナンシー821内に包含される、データプレーンVCN818に対して顧客によってフィルタおよび制御を適用することは、データプレーンVCN818を他の顧客から、および公衆インターネット854から隔離することを助けることができる。
【0092】
いくつかの実施形態において、クラウドサービス856は、公衆インターネット854上、制御プレーンVCN816上、またはデータプレーンVCN818上に存在し得ないサービスにアクセスするためにサービスゲートウェイ836によってコールされ得る。クラウドサービス856と制御プレーンVCN816またはデータプレーンVCN818との間の接続はライブまたは継続的でなくてもよい。クラウドサービス856は、IaaSプロバイダによって所有または操作される異なるネットワーク上に存在し得る。クラウドサービス856は、サービスゲートウェイ836からのコールを受信するように構成され得、公衆インターネット854からのコールを受信しないように構成され得る。一部のクラウドサービス856は他のクラウドサービス856から隔離され得、制御プレーンVCN816は、制御プレーンVCN816と同じ領域内にないことがあるクラウドサービス856から隔離され得る。例えば、制御プレーンVCN816は「領域1」内に配置され得、クラウドサービス「デプロイメント6」は領域1内および「領域2」内に配置され得る。領域1内に配置された制御プレーンVCN816内に包含されるサービスゲートウェイ836によってデプロイメント6へのコールが行われた場合には、コールは領域1内のデプロイメント6へ伝送され得る。本例では、制御プレーンVCN816、または領域1内のデプロイメント6は、領域2内のデプロイメント6と通信可能に結合されるか、または他の仕方でそれと通信し得ない。
【0093】
図9は、少なくとも1つの実施形態に従う、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図900である。サービスオペレータ902(例えば、
図7のサービスオペレータ702)は、仮想クラウドネットワーク(VCN)906(例えば、
図7のVCN706)およびセキュアホストサブネット908(例えば、
図7のセキュアホストサブネット708)を含むことができるセキュアホストテナンシー904(例えば、
図7のセキュアホストテナンシー704)に通信可能に結合され得る。VCN906は、SSH VCN912内に包含されるLPG910を介してSSH VCN912(例えば、
図7のSSH VCN712)に通信可能に結合され得るLPG910(例えば、
図7のLPG710)を含むことができる。SSH VCN912はSSHサブネット914(例えば、
図7のSSHサブネット714)を含むことができ、SSH VCN912は、制御プレーンVCN916内に包含されるLPG910を介して制御プレーンVCN916(例えば、
図7の制御プレーンVCN716)に、およびデータプレーンVCN918内に包含されるLPG910を介してデータプレーンVCN918(例えば、
図7のデータプレーン718)に通信可能に結合され得る。制御プレーンVCN916およびデータプレーンVCN918はサービステナンシー919(例えば、
図7のサービステナンシー719)内に包含され得る。
【0094】
制御プレーンVCN916は、ロードバランサ(LB)サブネット922(例えば、
図7のLBサブネット722)を含むことができる制御プレーンDMZ層920(例えば、
図7の制御プレーンDMZ層720)、アプリサブネット926(例えば、
図7のアプリサブネット726と同様のもの)を含むことができる制御プレーンアプリ層924(例えば、
図7の制御プレーンアプリ層724)、DBサブネット930を含むことができる制御プレーンデータ層928(例えば、
図7の制御プレーンデータ層728)を含むことができる。制御プレーンDMZ層920内に包含されるLBサブネット922は、制御プレーンアプリ層924内に包含されるアプリサブネット926に、および制御プレーンVCN916内に包含され得るインターネットゲートウェイ934(例えば、
図7のインターネットゲートウェイ734)に通信可能に結合され得、アプリサブネット926は、制御プレーンデータ層928内に包含されるDBサブネット930に、ならびにサービスゲートウェイ936(例えば、
図7のサービスゲートウェイ)、およびネットワークアドレス変換(NAT)ゲートウェイ938(例えば、
図7のNATゲートウェイ738)に通信可能に結合され得る。制御プレーンVCN916はサービスゲートウェイ936およびNATゲートウェイ938を含むことができる。
【0095】
データプレーンVCN918は、データプレーンアプリ層946(例えば、
図7のデータプレーンアプリ層746)、データプレーンDMZ層948(例えば、
図7のデータプレーンDMZ層748)、およびデータプレーンデータ層950(例えば、
図7のデータプレーンデータ層750)を含むことができる。データプレーンDMZ層948は、データプレーンアプリ層946の信頼できるアプリサブネット960および信頼できないアプリサブネット962、ならびにデータプレーンVCN918内に包含されるインターネットゲートウェイ934に通信可能に結合され得るLBサブネット922を含むことができる。信頼できるアプリサブネット960は、データプレーンVCN918内に包含されるサービスゲートウェイ936、データプレーンVCN918内に包含されるNATゲートウェイ938、およびデータプレーンデータ層950内に包含されるDBサブネット930に通信可能に結合され得る。信頼できないアプリサブネット962は、データプレーンVCN918内に包含されるサービスゲートウェイ936、およびデータプレーンデータ層950内に包含されるDBサブネット930に通信可能に結合され得る。データプレーンデータ層950は、データプレーンVCN918内に包含されるサービスゲートウェイ936に通信可能に結合され得るDBサブネット930を含むことができる。
【0096】
信頼できないアプリサブネット962は、テナント仮想機械(VM)966(1)~(N)に通信可能に結合され得る1つまたは複数のプライマリVNIC964(1)~(N)を含むことができる。各テナントVM966(1)~(N)は、それぞれの顧客テナンシー970(1)~(N)内に包含され得るそれぞれのコンテナエグレスVCN968(1)~(N)内に包含され得るそれぞれのアプリサブネット967(1)~(N)に通信可能に結合され得る。それぞれのセカンダリVNIC972(1)~(N)は、データプレーンVCN918内に包含される信頼できないアプリサブネット962とコンテナエグレスVCN968(1)~(N)内に包含されるアプリサブネットとの間の通信を促進することができる。各コンテナエグレスVCN968(1)~(N)は、公衆インターネット954(例えば、
図7の公衆インターネット754)に通信可能に結合され得るNATゲートウェイ938を含むことができる。
【0097】
制御プレーンVCN916内に包含される、およびデータプレーンVCN918内に包含されるインターネットゲートウェイ934は、公衆インターネット954に通信可能に結合され得るメタデータ管理サービス952(例えば、
図7のメタデータ管理システム752)に通信可能に結合され得る。公衆インターネット954は、制御プレーンVCN916内に包含される、およびデータプレーンVCN918内に包含されるNATゲートウェイ938に通信可能に結合され得る。制御プレーンVCN916内に包含される、およびデータプレーンVCN918内に包含されるサービスゲートウェイ936はクラウドサービス956に通信可能に結合することであることができる。
【0098】
いくつかの実施形態において、データプレーンVCN918は顧客テナンシー970と統合され得る。この統合は、コードを実行する際のサポートを所望し得る場合などの一部の場合に、IaaSプロバイダの顧客のために有用になる、または望ましくなり得る。顧客は、破壊性を有し得るコードを実行のために提供し得るか、他の顧客リソースと通信し得るか、または他の仕方で望ましくない影響を引き起こし得る。これに応じて、IaaSプロバイダは、顧客によってIaaSプロバイダに与えられたコードを実行するべきかどうかを決定し得る。
【0099】
例によっては、IaaSプロバイダの顧客はIaaSプロバイダへの一時的なネットワークアクセスを許可し、機能がデータプレーン層アプリ946にアタッチされることを要求し得る。機能を実行するべきコードはVM966(1)~(N)内で実行され得、コードは、データプレーンVCN918上の他のどの場所でも実行するようには構成され得ない。各VM966(1)~(N)は1つの顧客テナンシー970に接続され得る。VM966(1)~(N)内に包含されるそれぞれのコンテナ971(1)~(N)は、コードを実行するように構成され得る。この場合には、誤った、または他の様態で望ましくないコードがIaaSプロバイダのネットワークに損害を与えること、または異なる顧客のネットワークに損害を与えることを防止するのを助け得る、二重隔離が存在し得る(例えば、コンテナ971(1)~(N)がコードを実行し、コンテナ971(1)~(N)は、少なくとも、信頼できないアプリサブネット962内に包含されるVM966(1)~(N)内に包含され得る)。コンテナ971(1)~(N)は顧客テナンシー970に通信可能に結合され得、顧客テナンシー970に対してデータを伝送または受信するように構成され得る。コンテナ971(1)~(N)は、データプレーンVCN918内のいずれの他のエンティティに対してもデータを伝送または受信するように構成され得ない。コードの実行を完了すると、IaaSプロバイダはコンテナ971(1)~(N)をキルするか、または他の仕方で処分し得る。
【0100】
いくつかの実施形態において、信頼できるアプリサブネット960は、IaaSプロバイダによって所有または操作され得るコードを実行し得る。本実施形態では、信頼できるアプリサブネット960はDBサブネット930に通信可能に結合され、DBサブネット930内のCRUD操作を実行するように構成され得る。信頼できないアプリサブネット962はDBサブネット930に通信可能に結合され得るが、本実施形態では、信頼できないアプリサブネットは、DBサブネット930内の読み出し操作を実行するように構成され得る。各顧客のVM966(1)~(N)内に包含され得、顧客からのコードを実行し得るコンテナ971(1)~(N)はDBサブネット930と通信可能に結合され得ない。
【0101】
他の実施形態では、制御プレーンVCN916およびデータプレーンVCN918は直接通信可能に結合され得ない。本実施形態では、制御プレーンVCN916とデータプレーンVCN918との間の直接通信が存在し得ない。しかし、通信は少なくとも1つの方法を通じて間接的に行われ得る。制御プレーンVCN916とデータプレーンVCN918との間の通信を促進することができるLPG910がIaaSプロバイダによって確立され得る。別の例では、制御プレーンVCN916またはデータプレーンVCN918はサービスゲートウェイ936を介してクラウドサービス956へのコールを行うことができる。例えば、制御プレーンVCN916からクラウドサービス956へのコールは、データプレーンVCN918と通信することができるサービスのための要求を含むことができる。
【0102】
図10は、少なくとも1つの実施形態に従う、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図1000である。サービスオペレータ1002(例えば、
図7のサービスオペレータ702)は、仮想クラウドネットワーク(VCN)1006(例えば、
図7のVCN706)およびセキュアホストサブネット1008(例えば、
図7のセキュアホストサブネット708)を含むことができるセキュアホストテナンシー1004(例えば、
図7のセキュアホストテナンシー704)に通信可能に結合され得る。VCN1006は、SSH VCN1012内に包含されるLPG1010を介してSSH VCN1012(例えば、
図7のSSH VCN712)に通信可能に結合され得るLPG1010(例えば、
図7のLPG710)を含むことができる。SSH VCN1012はSSHサブネット1014(例えば、
図7のSSHサブネット714)を含むことができ、SSH VCN1012は、制御プレーンVCN1016内に包含されるLPG1010を介して制御プレーンVCN1016(例えば、
図7の制御プレーンVCN716)に、およびデータプレーンVCN1018内に包含されるLPG1010を介してデータプレーンVCN1018(例えば、
図7のデータプレーン718)に通信可能に結合され得る。制御プレーンVCN1016およびデータプレーンVCN1018はサービステナンシー1019(例えば、
図7のサービステナンシー719)内に包含され得る。
【0103】
制御プレーンVCN1016は、LBサブネット1022(例えば、
図7のLBサブネット722)を含むことができる制御プレーンDMZ層1020(例えば、
図7の制御プレーンDMZ層720)、アプリサブネット1026(例えば、
図7のアプリサブネット726)を含むことができる制御プレーンアプリ層1024(例えば、
図7の制御プレーンアプリ層724)、DBサブネット1030(例えば、
図9のDBサブネット930)を含むことができる制御プレーンデータ層1028(例えば、
図7の制御プレーンデータ層728)を含むことができる。制御プレーンDMZ層1020内に包含されるLBサブネット1022は、制御プレーンアプリ層1024内に包含されるアプリサブネット1026に、および制御プレーンVCN1016内に包含され得るインターネットゲートウェイ1034(例えば、
図7のインターネットゲートウェイ734)に通信可能に結合され得、アプリサブネット1026は、制御プレーンデータ層1028内に包含されるDBサブネット1030に、ならびにサービスゲートウェイ1036(例えば、
図7のサービスゲートウェイ)、およびネットワークアドレス変換(NAT)ゲートウェイ1038(例えば、
図7のNATゲートウェイ738)に通信可能に結合され得る。制御プレーンVCN1016はサービスゲートウェイ1036およびNATゲートウェイ1038を含むことができる。
【0104】
データプレーンVCN1018は、データプレーンアプリ層1046(例えば、
図7のデータプレーンアプリ層746)、データプレーンDMZ層1048(例えば、
図7のデータプレーンDMZ層748)、およびデータプレーンデータ層1050(例えば、
図7のデータプレーンデータ層750)を含むことができる。データプレーンDMZ層1048は、データプレーンアプリ層1046の信頼できるアプリサブネット1060(例えば、
図9の信頼できるアプリサブネット960)および信頼できないアプリサブネット1062(例えば、
図9の信頼できないアプリサブネット962)、ならびにデータプレーンVCN1018内に包含されるインターネットゲートウェイ1034に通信可能に結合され得るLBサブネット1022を含むことができる。信頼できるアプリサブネット1060は、データプレーンVCN1018内に包含されるサービスゲートウェイ1036、データプレーンVCN1018内に包含されるNATゲートウェイ1038、およびデータプレーンデータ層1050内に包含されるDBサブネット1030に通信可能に結合され得る。信頼できないアプリサブネット1062は、データプレーンVCN1018内に包含されるサービスゲートウェイ1036、およびデータプレーンデータ層1050内に包含されるDBサブネット1030に通信可能に結合され得る。データプレーンデータ層1050は、データプレーンVCN1018内に包含されるサービスゲートウェイ1036に通信可能に結合され得るDBサブネット1030を含むことができる。
【0105】
信頼できないアプリサブネット1062は、信頼できないアプリサブネット1062内に常駐するテナント仮想機械(VM)1066(1)~(N)に通信可能に結合され得るプライマリVNIC1064(1)~(N)を含むことができる。各テナントVM1066(1)~(N)はそれぞれのコンテナ1067(1)~(N)内でコードを実行し、コンテナエグレスVCN1068内に包含され得るデータプレーンアプリ層1046内に包含され得るアプリサブネット1026に通信可能に結合され得る。それぞれのセカンダリVNIC1072(1)~(N)は、データプレーンVCN1018内に包含される信頼できないアプリサブネット1062とコンテナエグレスVCN1068内に包含されるアプリサブネットとの間の通信を促進することができる。コンテナエグレスVCNは、公衆インターネット1054(例えば、
図7の公衆インターネット754)に通信可能に結合され得るNATゲートウェイ1038を含むことができる。
【0106】
制御プレーンVCN1016内に包含される、およびデータプレーンVCN1018内に包含されるインターネットゲートウェイ1034は、公衆インターネット1054に通信可能に結合され得るメタデータ管理サービス1052(例えば、
図7のメタデータ管理システム752)に通信可能に結合され得る。公衆インターネット1054は、制御プレーンVCN1016内に包含される、およびデータプレーンVCN1018内に包含されるNATゲートウェイ1038に通信可能に結合され得る。制御プレーンVCN1016内に包含される、およびデータプレーンVCN1018内に包含されるサービスゲートウェイ1036はクラウドサービス1056に通信可能に結合することであることができる。
【0107】
例によっては、
図10のブロック
図1000のアーキテクチャによって示されるパターンは、
図9のブロック
図900のアーキテクチャによって示されるパターンに対する例外と考えられ得、IaaSプロバイダが顧客(例えば、切断された領域)と直接通信することができない場合に、IaaSプロバイダの顧客のために望ましくなり得る。顧客ごとのVM1066(1)~(N)内に包含されるそれぞれのコンテナ1067(1)~(N)は顧客によってリアルタイムにアクセスされ得る。コンテナ1067(1)~(N)は、コンテナエグレスVCN1068内に包含され得るデータプレーンアプリ層1046のアプリサブネット1026内に包含されるそれぞれのセカンダリVNIC1072(1)~(N)へのコールを行うように構成され得る。セカンダリVNIC1072(1)~(N)はコールをNATゲートウェイ1038へ伝送することができ、NATゲートウェイ1038はコールを公衆インターネット1054へ伝送し得る。本例では、顧客によってリアルタイムにアクセスされ得るコンテナ1067(1)~(N)は、制御プレーンVCN1016から隔離され得、データプレーンVCN1018内に包含される他のエンティティから隔離され得る。コンテナ1067(1)~(N)はまた、他の顧客からのリソースからも隔離され得る。
【0108】
他の例では、顧客はコンテナ1067(1)~(N)を用いてクラウドサービス1056をコールすることができる。本例では、顧客はコンテナ1067(1)~(N)内で、クラウドサービス1056からのサービスを要求するコードを実行し得る。コンテナ1067(1)~(N)はこの要求をセカンダリVNIC1072(1)~(N)へ伝送することができ、セカンダリVNIC1072(1)~(N)は要求をNATゲートウェイへ伝送することができ、NATゲートウェイは要求を公衆インターネット1054へ伝送することができる。公衆インターネット1054はインターネットゲートウェイ1034を介して要求を、制御プレーンVCN1016内に包含されるLBサブネット1022へ伝送することができる。要求は有効であると決定したことに応じて、LBサブネットは要求をアプリサブネット1026へ伝送することができ、アプリサブネット1026はサービスゲートウェイ1036を介して要求をクラウドサービス1056へ伝送することができる。
【0109】
図に示されるIaaSアーキテクチャ700、800、900、1000は、示されたもの以外のコンポーネントを有し得ることを理解されたい。さらに、図に示される実施形態は、単に、本開示の一実施形態を組み込み得るクラウドインフラストラクチャシステムの一部の例にすぎない。他のいくつかの実施形態において、IaaSシステムは、図に示されるのよりも多数または少数のコンポーネントを有し得るか、2つ以上のコンポーネントを組み合わせ得るか、あるいはコンポーネントの異なる構成または配置を有し得る。
【0110】
ある実施形態では、本明細書において説明されるIaaSシステムは、セルフサービスの、加入ベースの、弾力的にスケーラブルな、信頼できる、高度に利用可能な、および安全な仕方で顧客へ配布される、アプリケーションのスイート、ミドルウェア、およびデータベースサービス提供を含み得る。このようなIaaSシステムの一例は、本譲受人によって提供されるOracle Cloud Infrastructure(OCI)である。
【0111】
図11は、様々な実施形態が実施され得る、例示的なコンピュータシステム1100を示す。システム1100は、上述されたコンピュータシステムのうちの任意のものを実施するために用いられ得る。図に示されるように、コンピュータシステム1100は、バスサブシステム1102を介して多数の周辺サブシステムと通信する処理ユニット1104を含む。これらの周辺サブシステムは、処理加速ユニット1106、I/Oサブシステム1108、ストレージサブシステム1118、および通信サブシステム1124を含み得る。ストレージサブシステム1118は有形のコンピュータ可読記憶媒体1122およびシステムメモリ1110を含む。
【0112】
バスサブシステム1102は、コンピュータシステム1100の様々なコンポーネントおよびサブシステムに、意図されたとおりに互いに通信させるための機構を提供する。バスサブシステム1102は単一のバスとして概略的に示されているが、バスサブシステムの代替的実施形態は複数のバスを利用し得る。バスサブシステム1102は、メモリバスもしくはメモリコントローラ、周辺バス、および種々のバスアーキテクチャのうちの任意のものを用いたローカルバスを含むいくつかの種類のバス構造のうちの任意のものであり得る。例えば、このようなアーキテクチャとしては、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオエレクトロニクス規格協会(VESA:Video Electronics Standards Association)ローカルバス、およびIEEE P1386.1規格に合わせて製造されるメザニンバスとして実施され得る、周辺装置相互接続(PCI:Peripheral Component InterConnect)バスが挙げられ得る。
【0113】
1つまたは複数の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実施され得る、処理ユニット1104がコンピュータシステム1100の動作を制御する。1つまたは複数のプロセッサが処理ユニット1104内に含まれ得る。これらのプロセッサはシングルコアまたはマルチコアプロセッサを含み得る。ある実施形態では、処理ユニット1104は、シングルまたはマルチコアプロセッサが各処理ユニット内に含まれる1つまたは複数の独立した処理ユニット1132および/または1134として実施され得る。他の実施形態では、処理ユニット1104はまた、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されたクアッドコア処理ユニットとして実施され得る。
【0114】
様々な実施形態では、処理ユニット1104はプログラムコードに応じて種々のプログラムを実行することができ、複数の同時に実行するプログラムまたはプロセスを維持することができる。いかなる時でも、実行されるべきプログラムコードのうちの一部または全てはプロセッサ1104内および/またはストレージサブシステム1118内に常駐していることができる。好適なプログラミングを通じて、プロセッサ1104は、上述された様々な機能性を提供することができる。コンピュータシステム1100は、デジタル信号プロセッサ(DSP:digital signal processor)、専用プロセッサ、および/または同様のものを含むことができる、処理加速ユニット1106を追加的に含み得る。
【0115】
I/Oサブシステム1108はユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含み得る。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイ内に組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システム、マイクロフォンを用いたオーディオ入力デバイス、ならびに他の種類の入力デバイスを含み得る。ユーザインターフェイス入力デバイスは、例えば、ユーザが、ジェスチャおよび発話コマンドを用いたナチュラルユーザインターフェイスを通じて、Microsoft Xbox(登録商標)360ゲームコントローラなどの、入力デバイスを制御し、それと対話することを可能にする、Microsoft Kinect(登録商標)動きセンサなどの動作検知および/またはジェスチャ認識デバイスを含み得る。ユーザインターフェイス入力デバイスはまた、ユーザから眼の活動(例えば、写真を撮影している間に「瞬きすること」、および/またはメニューの選択を行うこと)を検出し、アイジェスチャを入力デバイス(例えば、Google Glass(登録商標))内への入力として変換する、Google Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスを含み得る。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含み得る。
【0116】
ユーザインターフェイス入力デバイスはまた、限定するものではないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー測距器、および視線追跡デバイスなどの聴覚/視覚デバイスを含み得る。加えて、ユーザインターフェイス入力デバイスは、例えば、コンピュータ断層撮影、磁気共鳴映像、位置(position)放射断層撮影、医療超音波検査デバイスなどの医療撮像入力デバイスを含み得る。ユーザインターフェイス入力デバイスはまた、例えば、MIDIキーボード、デジタル楽器、および同様のものなどのオーディオ入力デバイスを含み得る。
【0117】
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、またはオーディオ出力デバイス等などの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT:cathode ray tube)、液晶ディスプレイ(LCD:liquid crystal display)またはプラズマディスプレイを用いるものなどの、フラットパネルデバイス、投影デバイス、タッチスクリーン、ならびに同様のものであり得る。概して、用語「出力デバイス」の使用は、情報をコンピュータシステム1100からユーザまたは他のコンピュータへ出力するための全ての可能な種類のデバイスおよび機構を含むことを意図される。例えば、ユーザインターフェイス出力デバイスは、限定するものではないが、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムなどの、テキスト、グラフィックス、および音声/映像情報を視覚的に伝える種々の表示デバイスを含み得る。
【0118】
コンピュータシステム1100は、システムメモリ1110内に現在配置されているように示される、ソフトウェア要素を含むストレージサブシステム1118を備え得る。システムメモリ1110は、処理ユニット1104上にロード可能で、実行可能であるプログラム命令、およびこれらのプログラムの実行中に生成されたデータを記憶し得る。
【0119】
コンピュータシステム1100の構成および種類に応じて、システムメモリ1110は、揮発性(ランダムアクセスメモリ(RAM:random access memory)など)、および/または不揮発性(リードオンリーメモリ(ROM:read-only memory)、フラッシュメモリ等など)であり得る。RAMは、通例、処理ユニット1104が即時にアクセス可能であり、および/または処理ユニット1104によって目下操作および実行されているデータおよび/またはプログラムモジュールを包含する。実装形態によっては、システムメモリ1110は、スタティックランダムアクセスメモリ(SRAM:static random access memory)またはダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)などの、複数の異なる種類のメモリを含み得る。実装形態によっては、起動の最中などに、コンピュータシステム1100内の要素間で情報を転送するのを助けるための基本ルーチンを包含する、基本入出力システム(BIOS:basic input/output system)が、通例、ROM内に記憶され得る。例として、限定ではなく、システムメモリ1110はまた、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS:relational database management system)等を含み得る、アプリケーションプログラム1112、プログラムデータ1114、およびオペレーティングシステム1116を示す。例として、オペレーティングシステム1116は、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、種々の市販のUNIX(登録商標)もしくはUNIX系オペレーティングシステム(限定するものではないが、種々のGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OS、および同様のものを含む)、ならびに/あるいはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)11 OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【0120】
ストレージサブシステム1118はまた、一部の実施形態の機能性をもたらす基本プログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体を提供し得る。プロセッサによって実行されたとき、上述された機能性をもたらすソフトウェア(プログラム、コードモジュール、命令)はストレージサブシステム1118内に記憶され得る。これらのソフトウェアモジュールまたは命令は処理ユニット1104によって実行され得る。ストレージサブシステム1118はまた、本開示に従って用いられるデータを記憶するためのリポジトリを提供し得る。
【0121】
ストレージサブシステム1100はまた、コンピュータ可読記憶媒体1122にさらに接続され得るコンピュータ可読記憶媒体リーダ1120を含み得る。合わせて、および、任意選択的に、システムメモリ1110と組み合わせて、コンピュータ可読記憶媒体1122は、コンピュータ可読情報を、一時的に、および/またはより永久的に包含し、記憶し、伝送し、取り出すための、リモート、ローカル、固定式、および/または着脱式記憶デバイス・プラス・記憶媒体を包括的に表現し得る。
【0122】
コード、またはコードの部分を包含するコンピュータ可読記憶媒体1122はまた、限定するものではないが、情報の記憶および/または伝送のための任意の方法または技術において実施される揮発性および不揮発性、着脱式および非着脱式媒体などの、記憶媒体および通信媒体を含む、当技術分野において知られた、または用いられる、任意の適切な媒体を含むこともできる。これは、RAM、ROM、電気的削除可能プログラマブルROM(EEPROM:electronically erasable programmable ROM)、フラッシュメモリ、または他のメモリ技術、CD-ROM、デジタルバーサタイルディスク(DVD:digital versatile disk)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶デバイス、あるいは他の有形のコンピュータ可読媒体などの、有形のコンピュータ可読記憶媒体を含むことができる。これはまた、データ信号、データ伝送、または所望の情報を伝送するために用いられ得、コンピューティングシステム1100によってアクセスされ得る任意の他の媒体などの、非有形のコンピュータ可読媒体を含むこともできる。
【0123】
例として、コンピュータ可読記憶媒体1122は、非着脱式不揮発性磁気媒体から読み出す、またはそれに書き込むハードディスクドライブ、着脱式不揮発性磁気ディスクから読み出す、またはそれに書き込む磁気ディスクドライブ、ならびにCD ROM、DVD、およびBlu-Ray(登録商標)ディスク、または他の光媒体などの、着脱式不揮発性光ディスクから読み出す、またはそれに書き込む光ディスクドライブを含み得る。コンピュータ可読記憶媒体1122は、限定するものではないが、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB:universal serial bus)フラッシュドライブ、セキュアデジタル(SD:secure digital)カード、DVDディスク、デジタルビデオテープ、および同様のものを含み得る。コンピュータ可読記憶媒体1122はまた、フラッシュメモリベースのSSD、企業フラッシュドライブ、ソリッドステートROM、および同様のものなどの、不揮発性メモリに基づくソリッドステートドライブ(SSD:solid-state drive)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM:magneto resistive RAM)SSDなどの、揮発性メモリに基づくSSD、ならびにDRAMおよびフラッシュメモリベースのSSDの組み合わせを用いるハイブリッドSSDを含み得る。ディスクドライブおよびそれらの関連コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータシステム1100のための他のデータの不揮発性記憶をもたらし得る。
【0124】
通信サブシステム1124は他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム1124は、他のシステムからデータを受信し、コンピュータシステム1100から他のシステムへデータを伝送するためのインターフェイスの役割を果たす。例えば、通信サブシステム1124は、コンピュータシステム1100がインターネットを介して1つまたは複数のデバイスに接続することを可能にし得る。いくつかの実施形態において、通信サブシステム1124は、(例えば、セルラ電話技術、3G、4G、もしくはEDGE(enhanced data rates for global evolution(エンハンストデータレート・フォー・グローバルエボリューション))などの、先進データネットワーク技術、WiFi(IEEE602.11ファミリー規格、または他のモバイル通信技術、あるいはこれらの任意の組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF:radio frequency)トランシーバコンポーネント、全地球測位システム(GPS:global positioning system)受信器コンポーネント、ならびに/あるいは他のコンポーネントを含むことができる。いくつかの実施形態において、通信サブシステム1124は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続性(例えば、Ethernet)を提供することができる。
【0125】
いくつかの実施形態において、通信サブシステム1124はまた、コンピュータシステム1100を使用し得る1人または複数のユーザのために、構造化された、および/または構造化されていないデータフィード1126、イベントストリーム1128、イベント更新1130、ならびに同様のものの形態の入力通信を受信し得る。
【0126】
例として、通信サブシステム1124は、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS:Rich Site Summary)フィードなどのウェブフィード、および/または1つまたは複数のサードパーティ情報源からのリアルタイム更新など、ソーシャルネットワークおよび/または他の通信サービスのユーザからデータフィード1126をリアルタイムに受信するように構成され得る。
【0127】
加えて、通信サブシステム1124はまた、明確な終端を本質的に有しない、連続的な、または境界のないものであり得る、リアルタイムイベントのイベントストリーム1128、および/またはイベント更新1130を含み得る、連続データストリームの形態のデータを受信するように構成され得る。連続データを生成するアプリケーションの例としては、例えば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車トラフィック監視、ならびに同様のものが挙げられ得る。
【0128】
通信サブシステム1124はまた、構造化された、および/または構造化されていないデータフィード1126、イベントストリーム1128、イベント更新1130、ならびに同様のものを、コンピュータシステム1100に結合された1つまたは複数のストリーミングデータソースコンピュータと通信し得る1つまたは複数のデータベースへ出力するように構成され得る。
【0129】
コンピュータシステム1100は、ハンドヘルドポータブルデバイス(例えば、iPhone(登録商標)セルラ電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、様々な種類のうちの1つであることができる。
【0130】
コンピュータおよびネットワークの絶え間なく変化し続ける性質のゆえに、図に示されるコンピュータシステム1100の説明は単なる具体例として意図されているにすぎない。図に示されるシステムよりも多数または少数のコンポーネントを有する多くの他の構成が可能である。例えば、カスタマイズされたハードウェアも用いられ得、ならびに/あるいは特定の要素は、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組み合わせの形で実施され得るであろう。さらに、ネットワーク入力/出力デバイスなどの、他のコンピューティングデバイスへの接続が採用され得る。本明細書において提供される開示および教示に基づいて、当業者は、様々な実施形態を実施するための他の仕方および/または方法を理解するであろう。
【0131】
ある実施形態が説明されたが、様々な変更、改変、代替的構造、および同等物も本開示の範囲内に包含される。実施形態は一部の特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作できる。加えて、実施形態は特定の一連のトランザクションおよびステップを用いて説明されたが、当業者には、本開示の範囲は、説明された一連のトランザクションおよびステップに限定されないことが明らかであるはずである。上述の実施形態の様々な特徴および態様は、個々に、または合同で用いられ得る。
【0132】
さらに、実施形態はハードウェアおよびソフトウェアの特定の組み合わせを用いて説明されたが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内であることが認識されるべきである。実施形態は、ハードウェアの形でのみ、またはソフトウェアの形でのみ、あるいはこれらの組み合わせを用いて実施され得る。本明細書において説明される様々なプロセスは同じプロセッサまたは異なるプロセッサ上で任意の組み合わせで実施され得る。したがって、コンポーネントまたはモジュールが、特定の動作を遂行するように構成されているように説明されている場合、このような構成は、例えば、電子回路を、動作を遂行するように設計することによって、プログラム可能な電子回路(マイクロプロセッサなど)を、動作を遂行するようにプログラムすること、またはこれらの任意の組み合わせによって達成され得る。プロセスは、限定するものではないが、プロセス間通信のための従来の技術を含む種々の技術を用いて通信することができ、異なる対のプロセスは異なる技術を用い得、または同じ対のプロセスは異なる時点で異なる技術を用い得る。
【0133】
したがって、明細書および図面は、限定でなく、例示的な意味で捉えられるべきである。しかし、請求項において記載されるとおりのより広い趣旨および範囲から逸脱することなく、追加、削減、削除、ならびに他の変更および改変がそれらに対して行われ得ることは明らかであろう。それゆえ、具体的な開示の実施形態が説明されたが、これらは限定であることを意図されていない。様々な変更および等価物が添付の請求項の範囲に含まれる。
【0134】
本開示の実施形態を説明する文脈における(特に、添付の請求項の文脈における)用語「a」、および「an」、および「the」ならびに同様の指示対象の使用は、本明細書において別途記載がないか、または文脈によって明確に否定されない限り、単数形および複数形の両方を包括すると解釈されるべきである。用語「備える(comprising)」、「有する(having)」、「含む(including)」、および「包含する(containing)」は、特に断りのない限り、オープンエンドな用語(すなわち、「限定するものではないが、~を含む(including, but not limited to)」を意味する)として解釈されるべきである。用語「接続される(connected)」は、たとえ、何らかの介在物が存在する場合でも、~内に部分的もしくは完全に包含される(partly or wholly contained within)、~に取り付けられる(attached to)、または相互に連結される(joined together)として解釈されるべきである。本明細書における値の範囲の記載は、本明細書において別途記載のない限り、単に、範囲に含まれる各々の別個の値に個々に言及する簡略的方法の役割を果たすことを意図されているにすぎず、各々の別個の値は、あたかもそれが本明細書において個々に記載されているかのように明細書に組み込まれる。本明細書において説明される全ての方法は、本明細書において別途記載がないか、または文脈によって別途明確に否定されない限り、任意の好適な順序で遂行され得る。本明細書において与えられるありとあらゆる例、または例示的な文言(例えば、「~など(such as)」)の使用は、単に、実施形態の理解をより容易にすることを意図されているにすぎず、別途断りのない限り、本開示の範囲に限定を課すものではない。明細書中のいかなる文言も、非クレーム要素を本開示の実施に不可欠のものとして指示していると解釈されてはならない。
【0135】
語句「X、Y、またはZのうちの少なくとも1つ」などの、離接的な文言は、別途特に断りのない限り、概して、項目、用語等は、X、Y、またはZのいずれか、あるいはこれらの任意の組み合わせ(例えば、X、Y、および/またはZ)であり得ることを示すために使用されると文脈内で理解されることを意図されている。それゆえ、このような離接的な文言は、概して、ある実施形態は、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、またはZのうちの少なくとも1つが各々存在することを必要とすることを暗示することを意図されておらず、暗示するべきでない。
【0136】
本明細書では、本開示を実施するために知られた最良の形態を含む、本開示の好ましい実施形態が説明されている。それらの好ましい実施形態の変形例は、上述の説明を読むことで当業者に明らかになり得る。当業者は必要に応じてこのような変形例を採用することができるはずであり、本開示は、本明細書において具体的に説明されたもの以外の仕方で実施され得る。したがって、本開示は、適用法によって許されるとおりの本明細書に添付された請求項に記載される主題の全ての変更例および同等物を含む。さらに、本明細書において別途記載のない限り、それらの全ての可能な変形例における上述の要素の任意の組み合わせが本開示によって包含される。
【0137】
本明細書において挙げられた、公報、特許出願、および特許を含む、全ての参照文献は、あたかも、各参照文献が、参照により組み込まれるよう個々に具体的に指示され、その全体が本明細書において記載されているのと同じ程度に、本明細書において参照により組み込まれる。
【0138】
上述の明細書において、本開示の態様はそのある実施形態を参照して説明されているが、当業者は、本開示はそれらに限定されないことを認識するであろう。上述の開示の様々な特徴および態様は、個々に、または合同で用いられ得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書において説明されるものを超える任意の数の環境および適用において利用され得る。したがって、明細書および図面は、限定でなく、例示として捉えられるべきである。
【国際調査報告】