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

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

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

特表2024-523776マルチテナント環境における選択的データ重複排除
<>
  • 特表-マルチテナント環境における選択的データ重複排除 図1
  • 特表-マルチテナント環境における選択的データ重複排除 図2
  • 特表-マルチテナント環境における選択的データ重複排除 図3
  • 特表-マルチテナント環境における選択的データ重複排除 図4
  • 特表-マルチテナント環境における選択的データ重複排除 図5
  • 特表-マルチテナント環境における選択的データ重複排除 図6
  • 特表-マルチテナント環境における選択的データ重複排除 図7
  • 特表-マルチテナント環境における選択的データ重複排除 図8
  • 特表-マルチテナント環境における選択的データ重複排除 図9
  • 特表-マルチテナント環境における選択的データ重複排除 図10
  • 特表-マルチテナント環境における選択的データ重複排除 図11
  • 特表-マルチテナント環境における選択的データ重複排除 図12
  • 特表-マルチテナント環境における選択的データ重複排除 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-02
(54)【発明の名称】マルチテナント環境における選択的データ重複排除
(51)【国際特許分類】
   G06F 3/06 20060101AFI20240625BHJP
   G06F 13/10 20060101ALI20240625BHJP
【FI】
G06F3/06 301W
G06F13/10 340A
G06F3/06 304H
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023562620
(86)(22)【出願日】2022-05-24
(85)【翻訳文提出日】2023-10-11
(86)【国際出願番号】 IB2022054849
(87)【国際公開番号】W WO2022269386
(87)【国際公開日】2022-12-29
(31)【優先権主張番号】17/352,483
(32)【優先日】2021-06-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】シャー、コマル、シャイレンドラ
(72)【発明者】
【氏名】ソニ、バーティ
(72)【発明者】
【氏名】パーカシュ、テジ
(72)【発明者】
【氏名】ロイ、サブホジット
(57)【要約】
マルチテナント環境における選択的データ重複排除。マルチテナント環境における選択的データ重複排除のためのコンピュータ実装方法が開示される。テナントに関連付けられたストレージエリアに書き込まれたブロック、および、他のテナントの他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除が、前記テナントに関連付けられた前記第1ストレージ領域を、特定のタイプのパラメータでタグすることに基づいて、可能にされるか、または阻止される。重複排除が許されないことを示すパラメータでタグ付けされた前記ストレージエリアを対象にする書き込み動作の検出に応答して、前記ストレージエリアに書き込まれるべきブロックは、前記ブロックをハッシュする前に修正される。重複排除が可能にされることを示すパラメータでタグ付けされた前記ストレージエリアを対象とする書き込み動作の検出に応答して、前記ストレージエリアに書き込まれるべきブロックは、前記ブロックをハッシュする前に修正されることが阻止される。
【特許請求の範囲】
【請求項1】
第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータでタグ付けすることに少なくとも部分的に基づいて、阻止する段階;および、
前記第1パラメータにタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記第1ストレージ領域に書き込まれるべきブロックを、前記ブロックをハッシュする前に修正する段階
を備える、マルチテナント環境における選択的データ重複排除のためのコンピュータ実装方法。
【請求項2】
前記ブロックを修正する段階は、前記第1テナントに関連付けられたテナント識別子を前記ブロックと連結する段階を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第1テナントに関連付けられた前記テナント識別子の前記ブロックへの前記連結に基づいて前記ブロックに関するハッシュ値を生成する段階
をさらに含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記ブロックを修正する段階は、前記ブロックを暗号化する段階を含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記暗号化されたブロックに基づいて前記ブロックに関するハッシュ値を生成する段階をさらに含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記第1テナントに関連付けられた前記第1ストレージ領域をタグ付けする段階は、前記第1ストレージ領域から作成された仮想ディスク上のボリュームを前記第1パラメータでタグ付けする段階をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記第1パラメータは、前記仮想ディスク上の前記ボリュームに書き込まれたブロックが、前記マルチテナント環境における複数のテナントにわたる重複排除に不適格であることを示す、請求項6に記載のコンピュータ実装方法。
【請求項8】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域は、共有ストレージプールの一部である、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域は、個別のストレージプールである、請求項1に記載のコンピュータ実装方法。
【請求項10】
第1テナントに関連付けされた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータでタグ付けすることに少なくとも部分的に基づいて、可能にする段階;および、
前記第1パラメータにタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記ブロックをハッシュする前に、前記第1ストレージ領域に書き込まれるべきブロックの修正を阻止する段階
を備える、マルチテナント環境における選択的データ重複排除のためのコンピュータ実装方法。
【請求項11】
前記ブロックの修正を阻止する段階は、ストレージコントローラが前記第1テナントに関連付けられたテナント識別子を前記ブロックと連結することを阻止する段階を含む、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記ブロックの修正を阻止する段階は、ストレージコントローラが前記ブロックを暗号化することを阻止する段階を含む、請求項10に記載のコンピュータ実装方法。
【請求項13】
前記ブロックに含まれるデータに基づいて前記ブロックに関するハッシュ値を生成する段階
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項14】
前記第1テナントと関連付けられた前記第1ストレージ領域をタグ付けする段階は、前記第1ストレージ領域から作成された仮想ディスク上のボリュームを前記第1パラメータでタグ付けする段階をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項15】
前記第1パラメータが、前記仮想ディスク上の前記ボリュームに書き込まれたブロックが、前記マルチテナント環境における複数のテナントにわたって重複排除に適格であることを示す、請求項14に記載のコンピュータ実装方法。
【請求項16】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域が、共有ストレージプールの一部である、請求項10に記載のコンピュータ実装方法。
【請求項17】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域が、個別のストレージプールである、請求項10に記載のコンピュータ実装方法。
【請求項18】
コンピュータプログラム製品が、1または複数のコンピュータ可読記憶媒体、および、前記1または複数のコンピュータ可読記憶媒体上に格納されたプログラム命令を含み、前記プログラム命令は、
第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータとタグ付けすることに少なくとも部分的に基づいて、阻止する命令;および、
前記第1パラメータにタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記ブロックをハッシュする前に前記第1ストレージ領域に書き込まれるべきブロックを修正する命令、
を含む、マルチテナント環境における選択的データ重複排除のためのコンピュータプログラム製品。
【請求項19】
1または複数のコンピュータプロセッサ;
1または複数のコンピュータ可読記憶媒体;および
コンピュータプログラム命令を含み、前記コンピュータプログラム命令は、
前記1または複数のコンピュータプロセッサによる実行のために前記1または複数のコンピュータ可読記憶媒体上に格納され、前記コンピュータプログラム命令は、
第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータとタグ付けすることに少なくとも部分的に基づいて、阻止する命令;および、
前記第1パラメータとタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記ブロックをハッシュする前に前記第1ストレージ領域に書き込まれるべきブロックを修正する命令、
を含む、マルチテナント環境における選択的データ重複排除のためのコンピュータシステム。
【請求項20】
前記ブロックを修正する前記命令はさらに、前記第1テナントと関連付けられるテナント識別子を前記ブロックと連結する命令を含む、請求項19に記載のコンピュータシステム。
【請求項21】
前記第1テナントに関連付けられた前記テナント識別子の前記ブロックへの前記連結に基づいて、前記ブロックに関するハッシュ値を生成する命令をさらに含む、
請求項20に記載のコンピュータシステム。
【請求項22】
前記ブロックを修正する前記命令はさらに、前記ブロックを暗号化する命令を含む、請求項19に記載のコンピュータシステム。
【請求項23】
前記暗号化されたブロックに基づいて前記ブロックに関するハッシュ値を生成する命令をさらに含む、
請求項22に記載のコンピュータシステム。
【請求項24】
前記第1テナントに関連付けられた前記第1ストレージ領域を前記タグ付けする命令はさらに、前記第1ストレージ領域から作成された仮想ディスク上のボリュームを前記第1パラメータでタグ付けする命令を含む、請求項19に記載のコンピュータシステム。
【請求項25】
前記第1パラメータは、前記仮想ディスク上の前記ボリュームに書き込まれたブロックが、前記マルチテナント環境における複数のテナントにわたる重複排除に不適格であることを示す、請求項24に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【0001】
本発明は、概してマルチテナントアーキテクチャの分野に関し、より詳細には、マルチテナントアーキテクチャにわたるデータ重複排除の分野に関する。
【0002】
マルチテナントとは、単一のソフトウェアインスタンスが複数の異なるユーザグループまたはテナントにサービス提供を行う、ソフトウェアアーキテクチャである。テナントは、ソフトウェアインスタンスへの特権と共にコモンアクセスを共有するユーザのグループからなる。マルチテナントアプリケーションは通常、アプリケーションの外見および感覚をカスタマイズすること、または、ユーザに関する具体的なアクセス制御の許可および制限をテナントが決定することを可能にすることなどの、テナントに関するカスタム化のレベルを含む。マルチテナントアーキテクチャによって、ソフトウェアアプリケーションは全てのテナントに、データ、ネットワーク、および計算リソースを含むインスタンスの、専用の共有/区画を提供するように設計される。マルチテナントアーキテクチャには概して3つの主要なタイプ、すなわち単一共有データベーススキーマ、単一データベース複数スキーマ、および複数データベース複数スキーマがある。これらの3つの中で、単一共有データベーススキーマが最も多く使用される。このアーキテクチャを用いて、各テナントはデータを格納するために共有ストレージプールを使用する。それに応じて、テナントは、テナントによって利用される共有ストレージプールの一部のための負担のみを要求される。
【0003】
データ重複排除は、反復する、または冗長なデータの重複コピーを除去するための技術である。データ重複は、ストレージ容量の利用を改善するように使用され、送られなければならないバイトの数を減らすように、ネットワークデータ転送にも適用され得る。同じバイトパターンが数十、数百、または数千回さえ発生し得る(合致頻度はチャンクのサイズに依存する)と仮定すると、格納されなければならないデータの量は大きく減少し得る。データの余分な複製を除去することは、ディスクハードウェアコストに直接関する金を節約するのみでなく、電気、冷却、保守、およびフロアスペースのような関連するコストに関する金も節約する。
【発明の概要】
【0004】
本発明の一実施形態によると、マルチテナント環境における選択的データ重複排除のためのコンピュータ実装方法が開示される。コンピュータ実装方法は、第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を少なくとも部分的に第1パラメータでタグ付けすることに基づいて、阻止することを含む。コンピュータ実装方法はさらに、前記第1パラメータでタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、前記第1ストレージ領域に書き込まれるべきブロックを、前記ブロックをハッシュする前に修正することを含む。
【0005】
本発明の別の実施形態によると、マルチテナント環境における選択的データ重複排除のためのコンピュータ実装方法が開示される。コンピュータ実装方法は、第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を少なくとも部分的に第1パラメータでタグ付けすることに基づいて、可能にすることを含む。コンピュータ実装方法はさらに、前記第1パラメータでタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、前記ブロックをハッシュする前に、前記第1ストレージ領域に書き込まれるべきブロックの修正を阻止することを含む。
【0006】
本発明の別の実施形態によると、マルチテナント環境における選択的データ重複排除のためのコンピュータプログラム製品が開示される。前記コンピュータプログラム製品は、1または複数のコンピュータ可読記憶媒体、および、前記1または複数のコンピュータ可読記憶媒体に格納されたプログラム命令を含む。プログラム命令は、第1テナントに関連付けられて第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を少なくとも部分的に第1パラメータでタグ付けすることに基づいて、阻止する命令を含む。プログラム命令はさらに、前記第1パラメータでタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、前記第1ストレージ領域に書き込まれるべきブロックを、前記ブロックをハッシュする前に修正する命令を含む。
【0007】
本発明の別の実施形態によると、マルチテナント環境における選択的データ重複排除のためのコンピュータシステムが開示される。コンピュータシステムは、1または複数のコンピュータプロセッサ、1または複数のコンピュータ可読記憶媒体、および、前記1または複数のプロセッサのうちの少なくとも1つによる実行のために前記コンピュータ可読記憶媒体に格納されたプログラム命令を含む、1または複数のコンピュータシステムを含む。プログラム命令は、第1テナントに関連付けられて第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を少なくとも部分的に第1パラメータでタグ付けすることに基づいて、阻止する命令を含む。プログラム命令はさらに、前記第1パラメータでタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、前記第1ストレージ領域に書き込まれるべきブロックを、前記ブロックをハッシュする前に修正する命令を含む。
【図面の簡単な説明】
【0008】
本開示に含まれる図面は、本明細書に組み込まれ、その一部を形成する。これらは、本開示の実施形態を示し、この説明と共に、本開示の原理を説明する役割を果たす。図面は、特定の実施形態の例示のみであり、本開示を限定しない。
図1】本発明の少なくとも1つの実施形態による、概して100で指定されるマルチテナント環境における、インラインデータ重複排除の方法の一例である。
図2】本発明の少なくとも1つの実施形態による、マルチテナント環境200のテナントにわたる選択的データ重複排除を実行するための、概して200で指定されるマルチテナント環境の機能ブロック図である。
図3】本発明の少なくとも1つの実施形態による、マルチテナント環境における複数のテナントによって負担されるストレージコストを示す、概して300で指定される例示的テーブルである。
図4】本発明の少なくとも1つの実施形態による、概して400で指定されるマルチテナント環境における、インラインデータ重複排除の一例であり、マルチテナント環境400における複数のテナントのそれぞれのボリュームの全てが、複数のテナントにわたる重複排除に不適格としてタグ付けされる。
図5】本発明の少なくとも1つの実施形態による、概して500で指定されるマルチテナント環境における、インラインデータ重複排除の一例であり、マルチテナント環境500における複数のテナントのそれぞれのボリュームの全てが、複数のテナントにわたる重複排除に適格としてタグ付けされる。
図6】本発明の少なくとも1つの実施形態による、概して600で指定されるマルチテナント環境における、インラインデータ重複排除の一例であり、マルチテナント環境600における複数のテナントのボリュームが混合されたものが、複数のテナントにわたる重複排除に適格および重複排除に不適格としてタグ付けされる。
図7】本発明の少なくとも1つの実施形態による、概して700で指定され、マルチテナント環境600のテナント(図6に示される)によって負担されるストレージコストを示す例示的テーブルである。
図8】本発明の少なくとも1つの実施形態による、概して800で指定され、マルチテナント環境における複数のテナントにわたる重複排除に適格または重複排除に不適格としてテナントデータを指定するための動作段階を示すフローチャート図である。
図9】本発明の少なくとも1つの実施形態による、概して900で指定され、マルチテナント環境において選択的データ重複排除を実行するための動作段階を示すフローチャート図である。
図10】本発明の少なくとも1つの実施形態による、概して1000で指定され、マルチテナント環境のそれぞれのテナントのためのストレージコストを動的に計算する動作段階を示す、フローチャート図である。
図11】本発明の少なくとも1つの実施形態による、概して1100で指定され、マルチテナントストレージプログラム201を実行するために適切な、コンピューティングデバイスのコンポーネントを表すブロック図である。
図12】本発明の少なくとも1つの実施形態による、クラウドコンピューティング環境50を示すブロック図である。
図13】本発明の少なくとも1つの実施形態による、図12に示されたクラウドコンピューティング環境50によって提供される関数抽象化モデル層のセットを示すブロック図である。
【発明を実施するための形態】
【0009】
本発明は、概して、マルチテナントアーキテクチャの分野に関し、より詳細には、マルチテナントアーキテクチャにわたるデータ重複排除に関する。
【0010】
データセキュリティは、マルチテナントの主要な要件である。しかしながら、標準の重複排除技術をマルチテナント環境に適用することは、テナントがプライベートデータプールを望む場合には可能ではあり得ない。単一のテナントがプライベートデータプールを要する場合でさえも、2つの異なるテナントのためにデータの2つの同一の複製が、2回格納される必要となり得る。そうして、重複排除が各テナントの個々のデータプールに適用され得るとしても、重複排除は、テナントのプライベートデータプールおよび、他のテナントによって共有される別のデータプールの間には適用され得ない。これがセキュリティの観点から有益であり得るとしても、追加のストレージ空間がデータの冗長な複製によって消費されるので、ストレージの観点からは有益ではない。
【0011】
いくつかの例において、テナント識別子(ID)が、それぞれのテナントに書き込まれたデータを、個別のストレージプールまたは複数のテナントによって共有された単一のストレージプールに連結し得る。しかしながら、各テナントが異なるテナントIDを有するので、個別のテナントストレージプールの間、または単一共有ストレージプールに格納されたデータの重複コピーは、同一のものであるとみなされないであろう。そうして、重複データが個別のテナントストレージプールにわたって、または単一共有ストレージプール内に存在し得るが、データをハッシュする前にテナントIDをデータに連結する重複排除アルゴリズムは、識別に失敗するであろうし、それによって、異なるテナントによって書き込まれたデータのいかなる冗長な複製を除去することにも失敗するであろう。
【0012】
ここで図1を参照すると、概して100で指定される、マルチテナント環境におけるインラインデータ重複排除の方法の一例が見られ得る。図1に示されるように、テナント110、テナント112、およびテナント114が、それぞれ仮想ディスク122、仮想ディスク124、および仮想ディスク126に、データの同じセット(ブロックA、B,CおよびD)を書き込んでおり、データの各セットは、最終的に、ストレージプール140に物理的に書き込まれる。この段階は、概して102として指定される。同じデータ(ブロックA、B、CおよびD)の3つのセットがストレージプール140に書き込まれるが、データの各セットのブロックは、重複排除アルゴリズムを介してデータを通す前に書き込み要求を発したテナントの、それぞれのテナントIDと連結される。この段階は、概して104として指定される。例えば、テナント110によって書き込まれたブロックAは、Block A_TenantID_1として格納され得、テナント112によって書き込まれたブロックAは、Block A_TenantID_2として格納され得、テナント114によって書き込まれたブロックAは、Block A_TenantID_3として格納され得る。それに応じて、全ての3つのテナントに関するテナントIDが異なるので、各テナントによって書き込まれたデータの同じセットに関して計算されたハッシュ値は、ハッシュ値の3つの異なるセットをもたらすであろう。そうして、データ重複排除アルゴリズムには、テナント110-114の各々によって書き込まれたデータの同じセット(ブロックA、B、CおよびD)の間に重複データが存在しないように見える。それに応じて、データの同じセットの3つの個別の複製(テナントにつき1つの複製)が、ストレージプール140に書き込まれる。この段階は、概して106として指定される。テナントの数が増加するほど、異なるテナントによって書き込まれる冗長なデータによって利用されるストレージ空間が急激に増加し得ることが、理解されるべきである。
【0013】
同様に、本発明の実施形態は、マルチテナント環境におけるテナントが、一意的な暗号化鍵によってそれらのデータを暗号化することを選択し得ることを認識する。例えば、テナント110-114の全てが、異なる一意な暗号化鍵を介してそのそれぞれのデータを暗号化することを選択する場合、各テナントによって書き込まれたデータの同じセットに関して計算されたハッシュ値は、異なる一意な暗号化鍵の使用に起因して、3つの異なるセットのハッシュ値をもたらすであろう。そうして、データ重複排除アルゴリズムには、各それぞれのテナント暗号化アルゴリズムを介して暗号化されたデータの同じセット(ブロックA、B、CおよびD)の間に重複データが存在しないように見える。それに応じて、データの同じセットの3つの個別の複製(各テナントで異なる暗号化アルゴリズムによって暗号化された)が、重複排除アルゴリズムを介してデータを通した後にストレージプール140に書き込まれるであろう。同様に、テナント110、112または114の1つのみがそれらのデータの暗号化を選択した場合でさえも、データの同じセット(ブロックA、B、CおよびD)の2つの複製が、データ重複排除の後に依然として存在するであろう。
【0014】
いくつかの例において、マルチテナントアーキテクチャは、複数のテナントにわたる重複排除を制約することに関する限り、更に進み得る。このことはセキュリティの目的では有益であるが、テナントにわたる重複データを識別またはアクセスすることの不可能さ、および、したがって、マルチテナントアーキテクチャにおけるテナントにわたるデータ重複排除を実行することの不可能さは、各テナントに関する容量要件の増加をもたらし、それは最終的に、各テナントおよびデータセンタ全体に関する、より高いストレージコストをもたらす。
【0015】
本発明の実施形態は、全てのタイプのデータが同じとは限らないことを認識する。高度に秘密なデータ(例えば、個人識別情報)などの、あるデータは分離された、プライベートで格納されたデータのままであるべきだが、高度に秘密でない他のデータは、重複排除の目的のために複数のテナントにわたってアクセス可能、または重複排除に適格であるべきである。それに応じて、テナント個別のストレージプールの少なくとも一部は、テナント間で共有可能であると指定され、データ重複排除は、マルチテナントアーキテクチャにおいて格納されたデータの少なくとも一部に関して、複数の個別のテナントストレージプールまたは単一共有ストレージプールにわたって適用され得る。そのように行うことにおいて、秘密または機密な情報のみがプライベートのままとなり、そのため、複数のテナントにわたっては重複排除に不適格となるが、テナント自身のストレージプール内では重複排除に適格となる。これは、存在すべきデータのいくつかの冗長な複製可能性を依然としてもたらすが、それらの個別のストレージプールの少なくとも一部を、重複排除に適格であるとして指定するようにオプトインするテナントは、それらのストレージ容量要件を減らし、それによって最終的に、データセンタ全体としての利用可能なストレージを増加させながら、それらのストレージコストを減らすであろう。
【0016】
本発明の実施形態は、マルチテナントアーキテクチャにおいて個々のテナントに、複数のテナントにわたるデータ重複排除に関して適格であるとしてそれらのそれぞれのストレージエリアの少なくとも一部を指定することを可能にする、コンピュータ実装方法、コンピュータプログラム製品、およびコンピュータシステムを提供することによって、現在のマルチテナントアーキテクチャの上述の欠陥を改善する。テナントが、それらのストレージエリアのどの程度が複数のテナントにわたる重複排除に適格なデータであるか、および、それらのストレージエリアのどの程度が、(もしあれば)複数のテナントにわたる重複排除に不適格なデータであるかを指定することを可能にすることによって、テナントは、データ重複排除が複数の個別のテナントストレージプールまたは単一共有ストレージプールにわたって実行されることを可能にすることによって、それらのストレージ容量要件および全体のストレージコストを減らし得る。そうして、テナントは、それら全体のストレージコストを減らすために、データセキュリティのためにそれら全体が必要とするもの(すなわち、もしあれば、それらのデータのうちどのパーセンテージで秘密または機密であるか)を検討することが可能である。
【0017】
本発明の実施形態によると、マルチテナント環境におけるテナントは、特定のボリュームに(物理的または仮想的に)書き込まれたデータが、複数のテナントにわたるデータ重複排除に関して適格であるかどうかの表示に基づいて、テナントに個別のストレージプールの少なくとも一部、または、単一の共有ストレージプールの少なくとも一部にわたるデータ重複排除を選択的に可能または不可能にするオプションを提供される。一実施形態において、テナントは、ボリュームに書き込まれたデータが機密であるかそうでないかを示す特定のパラメータによって、複数のテナントにわたるデータ重複排除を被ることが許されないボリュームをタグ付けし得る。例えば、ボリュームが秘密情報を含む場合、テナントは「共有不可能」、「プライベート」、「機密」、「制約」または「重複排除に不適格」としてボリュームをタグ付けし得る。しかしながら、別のボリュームが共有可能またはパブリックに利用可能な情報を含む場合、テナントは「共有可能」、「パブリック」、「非機密」、「非制約」または「重複排除に適格」としてそのボリュームをタグ付けし得る。例えば、テナントは「共有可能」としてブートボリュームをタグ付けし得るが、「共有不可能」としてクレジットカード記録を含むデータボリュームをタグ付けし得る。一実施形態において、ボリュームに書き込まれたデータが複数のテナントにわたる重複排除に不適格であることを示すパラメータでボリュームがマーク付けされる場合、ストレージコントローラは、ボリュームに書き込まれたデータを、書き込み要求を発行したテナントのテナントIDと連結し、それによって、重複排除アルゴリズムに、このボリュームに書き込まれたデータに関して、複数のテナントボリュームにわたる重複排除が許されないことを示す。同じテナントに関連付けられた、このボリュームおよび他のボリュームの間の重複排除は依然として適格であることに留意されたい。代替的な実施形態において、ボリュームに書き込まれたデータが複数のテナントにわたって重複排除に不適格であることを示すパラメータでボリュームがマーク付けされている場合、ストレージコントローラは、与えられたテナントに対して一意的な暗号化コードを介して、ボリュームに書き込まれたデータを暗号化し得、それによって、重複排除アルゴリズムに、このボリュームに書き込まれたデータに関して、複数のテナントにわたる重複排除が許されないことを示す。一実施形態において、ボリュームが、ボリュームに書き込まれたデータが複数のテナントにわたり重複に適格であることを示すパラメータでマーク付けされている場合、複数のテナントにわたる重複排除は、ボリュームに書き込まれたデータが、データ重複排除の最中にデータをハッシュする前に、一意なテナントIDで暗号化または連結されない(さもなければ、リンクされない)ことを保証するストレージコントローラによって達成され得る。
【0018】
本発明のさらなる実施形態によると、マルチテナント環境におけるテナントは、データ重複排除の後のそれらのストレージ空間消費に基づいてチャージされる。データがストレージプールの複数のテナントにわたって重複する一実施形態において、各テナントは、テナントデータ重複排除比(すなわち、データの元のサイズに対する、冗長なデータを削除した後のデータのサイズの測定値)に基づいてチャージされる。データがストレージプールの単一の共有テナントにわたって重複排除される一実施形態において、各テナントは、テナントデータ重複排除比(すなわち、データの元のサイズに対する、冗長なデータを削除した後のデータのサイズの測定値)に基づいてチャージされる。一実施形態において、テナントのチャージされる額は、ブロックを指しているテナントの数によって除算されて格納されたブロックごとに、固定プライスに基づく。例えば、格納されたブロックごとのプライスがXであり、4つのテナントがブロックAを指している場合、ブロックAに単一の複製を格納するために各テナントごとにチャージされたプライスは、X/4となるであろう。それに応じて、テナントは、それらのデータを、データ重複排除のために利用可能にする動機を与えられる。
【0019】
そうして、本発明の実施形態は、マルチテナントストレージ環境におけるテナントにわたるデータ重複排除を実行することへの上述の障害への、機能、特性、動作、利点、および/または改善のうちの1または複数を提供する。(i)ストレージ空間利用の削減、(ii)テナント重複排除比に基づくストレージコストの削減、および/またはデータ重複排除が実行された後にデータの同じ複製を指しているテナントの数の削減、(iii)テナントセキュリティの必要性、ストレージ空間利用の必要性、およびバジェットの間のバランスを達成するストレージアーキテクチャ、および、(iv)テナントに、秘密でないかパブリックなデータをアクセス可能にする、または、データ重複排除の目的のために複数のテナントにわたる重複排除に適格にする、動機を与えるストレージチャージモデル。
【0020】
本発明は、統合のあらゆる可能な技術詳細レベルにおけるシステム、方法、および/またはコンピュータプログラム製品であり得る。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためにコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含んでよい。
【0021】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、または前述したものの任意の適切な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的リストは、以下に挙げる、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、命令が記録されたパンチカードまたは溝における凸構造などの機械的に符号化されたデバイス、および、前述したものの任意の適切な組み合わせを含み得る。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波または他の自由に伝搬する電磁波、導波路または他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一時的な信号それ自体と解釈されるべきではない。
【0022】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/または無線ネットワークを介して、外部コンピュータまたは外部ストレージデバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを備え得る。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0023】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1または複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に且つリモートコンピュータ上で部分的に、または、リモートコンピュータまたはサーバ上で全体的に実行し得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得る、または、接続は、(例えば、インターネットサービスプロバイダを使用してインターネットを通じて)外部コンピュータに対して行われ得る。いくつかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズし得る。
【0024】
本発明の態様は、本明細書において、発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して説明されている。フローチャート図および/またはブロック図の各ブロック、およびフローチャート図および/またはブロック図にあるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【0025】
コンピュータ可読プログラム命令は、マシンを生成するのに、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されてもよく、それにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャートおよび/またはブロック図のブロックまたは複数のブロックにおいて指定された機能/動作を実装する手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに対して特定の方法で機能するよう指示できるコンピュータ可読記憶媒体に格納されてもよく、それにより、命令を格納したコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図のブロックまたは複数のブロックで指定される機能/動作の態様を実装する命令を含む製造品を備える。
【0026】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードされて、一連の動作段階をコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させ、コンピュータ実装プロセスを生成してもよく、それにより、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令は、フローチャートおよび/またはブロック図の1または複数のブロックで指定された機能/動作を実装する。
【0027】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定される論理機能を実装するための1または複数の実行可能命令を備える命令のモジュール、セグメント、または一部を表し得る。いくつかの代替的な実装において、ブロックにおいて記載される機能は、図に記載された順序とは別の順序で生じ得る。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得る、または、関与する機能に依存してブロックが逆の順序で実行されることもあり得る。ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図におけるブロックの組み合わせは、指定された機能または動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアベースシステムによって実装することができることにも留意されたい。
【0028】
本発明の様々な実施形態の説明は、例示目的で提示されてきたが、包括的であること、または開示された実施形態に限定されることを意図するものではない。説明された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が、当技術分野の当業者には明らかであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な適用または市場で見られる技術に対する技術的改善を最適に説明し、または、本明細書において開示される実施形態を当技術分野の他の当業者が理解することを可能にするように選択された。
【0029】
本明細書で使用される用語は、特定の実施形態のみを説明することを目的としており、限定を行うことを意図するものではない。それにもかかわらず、ここで本文献を通して適用するいくつかの定義が存在するであろう。
【0030】
本明細書において定義されるとき、単数形の「a」、「an」、および「the」は、複数形も含むことが意図されている。但し、そうではないことが文脈上で明確に示されている場合を除く。
【0031】
本明細書において定義されるとき、「別の(another)」は、少なくとも第2の、またはそれ以上を意味する。
【0032】
本明細書において定義されるとき、「少なくとも1つ」「1または複数」および「および/または」は、動作において接続的および分離的の両者である無制約な(open-ended)表現である。ただし、そうではないことが明示的に示されている場合を除く。例えば、表現「A、BおよびCのうちの少なくとも1つ」、「A、BまたはCのうちの少なくとも1つ」、「A、BおよびCのうちの1または複数」、「A、BまたはCのうちの1または複数」、および「A、Bおよび/またはC」の各々は、A単独、B単独、C単独、AおよびB共に、AおよびC共に、BおよびC共に、またはA、BおよびC共に、を意味する。
【0033】
本明細書に定義されるように、「自動的に」および「動的」は、ユーザの介入がないことを意味する。
【0034】
本明細書に定義されるように、「含む(includes)」、「含む(including)」、「備える(comprises)」、および/または「備える(comprising)」は、示された機能、整数、段階、動作、要素、および/またはコンポーネントの存在を指定するが、1または複数の他の機能、整数、段階、動作、要素、コンポーネント、および/またはそれらのグループの存在または追加を除外しない。
【0035】
本明細書に定義されるように、「~の場合(if)」は、文脈に依存して、「~に応答して(in response to)」または「~に応答して(responsive to)」を意味する。そうして、語句「判断される場合(if it is determined)」は、文脈に依存して、「判断に応答して(in response to determining)」または「判断に応答して(responsive to determining)」を意味するように解釈され得る。同様に、語句「[記載された条件またはイベント]が検出された場合(if [a stated condition or event] is detected)」は、文脈に依存して、「[記載された条件またはイベント]を検出すると(upon detecting [the stated condition or event])」または「[記載された条件またはイベント]の検出に応答して(in response to detecting [the stated condition or event])」または「[記載された条件またはイベント]の検出に応答して(responsive to detecting[the stated condition or event])」を意味すると解釈され得る。
【0036】
本明細書に定義されるように「1つの実施形態」、「一実施形態」、「1または複数の実施形態」、「特定の実施形態」または同様の文言は、実施形態に関連して説明された特定の機能、構成、または特性が、本開示内で説明される少なくとも1つの実施形態に含まれることを意味する。そうして、本開示を通じて、上述の語句および/または同様の文言の出現は、必ずではないが、全て同じ実施形態を指し得る。
【0037】
本明細書に定義されるように、語句「に応答して(in response to)」および「に応答して(responsive to)」は、動作またはイベントに容易に応答または反応することを意味する。そうして、第2アクションが、第1アクション「に応答して(in response to)」または「に応答して(responsive to)」実行される場合、第1アクションの生起および第2アクションの生起の間に因果関係がある。語句「に応答して(in response to)」および「に応答して(responsive to)」は、因果関係を示す。
【0038】
本明細書に定義されるように、「リアルタイム(real time)」は、ユーザまたはシステムが、特定の処理または判定が十分すぐに行われていると感じる、または、プロセッサがいくつかの外部処理についていくことが可能な、処理の反応性のレベルを意味する。
【0039】
本明細書で定義されるように、「実質的に」は、記載された特性、パラメータ、または値が、正確に達成される必要がないが、例えば誤差、測定エラー、測定正確性限界、および当技術分野の当業者に知られた他の要因を含む、その逸脱例または変形例が、特性を提供する意図がある効果を除外しない程度に生じ得ることを意味する。
【0040】
本明細書で定義されるように、「ユーザ」および「個々」はそれぞれ人間を指す。
【0041】
本明細書で定義されるように、ブロック、データブロック、またはデータのブロックとテナントIDを連結することは、第2バイト列を有するブロック、データブロック、またはデータのブロックを、第1バイト列を有するテナントIDとリンクすることを意味する。例えば8バイトテナントIDと512バイトブロックの連結は、520バイトデータセグメントを形成するであろう。
【0042】
本明細書で定義されるように、ブロック、データブロック、またはデータのブロックに連結されたテナントIDのためのハッシュ値を生成することは、テナントIDに対応する第1バイト列、および、ブロック、データブロック、またはデータのブロックに対応する第2バイト列の連結に基づいて、ハッシュ値を生成することを意味する。例えば、8バイトテナントIDと512バイトブロックの連結は、520バイトデータセグメント形成をするであろう。この例において、ハッシュ値は512バイトブロックに基づいてではなく、520データセグメントに基づいて生成される。
【0043】
本明細書で定義されるように、ブロック、データブロック、またはデータのブロックのためにハッシュ値を生成することは、ブロック、データブロック、またはデータのブロックを形成するバイトに基づいてハッシュ値を生成することを意味する。例えば、ブロックが512バイトである場合、ハッシュ値は、512バイトブロックに基づいて生成される。
【0044】
第1、第2などの用語は、様々な要素を説明するように本明細書において使用され得る。他のものが示されない限り、または、文脈が他のものを明確に示さない限り、これらの用語は、1つの要素を別のものと区別するようにのみ使用されるので、これらの要素は、これらの用語によって限定されるべきではない。
【0045】
ここで、本発明について、図を参照して詳細に説明する。図2は、概して200で指定される、本発明の少なくとも1つの実施形態によるマルチテナント環境200の複数のテナントにわたる選択的データ重複排除を実行するための、マルチテナント環境の機能ブロック図である。一実施形態において、マルチテナント環境200は、本発明の少なくとも1つの実施形態による、図12を参照して説明されるような、クラウドコンピューティング環境50によって提供され得る。
【0046】
図2は、1つの実装のみの例示を提供し、異なる実施形態が実装され得る環境に関していかなる限定も示唆するものではない。図示された環境への多くの修正が、請求項によって記載されるように、本発明の範囲から逸脱することなく当業者によって行われ得る。
【0047】
マルチテナント環境200などのマルチテナント環境において、複数のテナント(すなわち、ユーザのグループ)が、サーバ上で実行されるソフトウェアの単一のインスタンスによってサービスされる。例えば、アプリケーション222の単一のインスタンスがホストデバイス220上で実行され、テナント210、テナント212、テナント214、およびテナント216の各々をサービスする。本明細書において使用されるように、「テナント」は、ソフトウェアインスタンスへの特権によってコモンアクセスを共有するユーザのグループを意味するものとする。一実施形態において、テナント210-216によって利用されているリソースは、テナントにわたって共有され得る。例えば、同じリソースが異なるテナントによって利用され得、それは「マルチテナントプロビジョニング」と通常称される。
【0048】
マルチテナント環境200は、ネットワーク280を介して相互接続された、テナント210、テナント212、テナント214、テナント216、ホストデバイス220、物理ストレージ230、ストレージコントローラ240、および仮想ストレージ250を含む。本発明の様々な実施形態においてネットワーク280は、電気通信ネットワーク、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、またはこの3つの組み合わせであり得、有線、無線、または光ファイバ接続を含み得る。ネットワーク280は、データ、音声、および/または、音声、データ、およびビデオ情報を含むマルチメディア信号を含むビデオ信号を受信および送信することを可能にする、1または複数の有線および/または無線ネットワークを含み得る。一般に、ネットワーク280は、マルチテナント環境200内の、テナント210-216、ホストデバイス220、物理ストレージ230、ストレージコントローラ240、仮想ストレージ250、および他のコンピューティングデバイス(図示しない)の間の通信をサポートするであろう接続およびプロトコルの任意の組み合わせであり得る。
【0049】
本明細書において使用されるように、用語「テナント」は、ユーザのグループによって利用されるコンピューティングデバイスも指し得る。例えば、テナント210-216の各々は、1または複数のクライアントデバイスであり得る。様々な実施形態において、クライアントデバイスは、ラップトップコンピュータ、タブレットコンピュータ、ネット、ブックコンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、パーソナルデジタルアシスタント(PDA(登録商標))、スマートフォン、スマートウォッチ、またはデータを受信、送信、および処理することが可能な任意のプログラマブル電子デバイスであり得るコンピューティングデバイスである。一般に、クライアントデバイスは、機械可読プログラム命令を実行可能であり、ホストデバイス220、物理ストレージ230、ストレージコントローラ240、仮想ストレージ250、および他のコンピューティングデバイス(図示しない)と、ネットワーク280などのネットワークを介してマルチテナント環境200内で通信可能な、任意のプログラマブル電子デバイスまたはプログラマブル電子デバイスの組み合わせを表す。
【0050】
ホストデバイス220は、テナント210-216によって提供されたメッセージ(例えば、要求)を処理する、アプリケーションなどのリソースをホストするように構成される。一実施形態において、アプリケーション222などの、ホストデバイス220を実行するアプリケーションの単一のインスタンスが、テナント210-216をサービスする。本発明の様々な実施形態において、ホストデバイス220は、スタンドアロンデバイス、管理サーバ、ウェブサーバ、アプリケーションサーバ、モバイルデバイス、または任意の他の、データを受信、送信、および処理することが可能な電子デバイスまたはコンピューティングシステムであり得るコンピューティングデバイスである。一実施形態において、ホストデバイス220は、クラウドコンピューティング環境などの、サーバシステムとして複数のコンピュータを利用するサーバコンピューティングシステムを表す。一実施形態において、ホストデバイス220は、マルチテナント環境200内でアクセスされたときにシームレスなリソースの単一のプールとして機能する、クラスタコンピュータおよびコンポーネント(例えば、データベースサーバコンピュータ、アプリケーションサーバコンピュータ、ウェブサーバコンピュータ、ウェブメールサーバコンピュータ、メディアサーバコンピュータなど)を利用するコンピューティングシステムを表す。一般に、ホストデバイス220は、機械可読プログラム命令を実行可能であり、互いに、ならびにテナント210-216、物理ストレージ230、ストレージコントローラ240、仮想ストレージ250、および、マルチテナント環境200内の他のコンピューティングデバイス(図示しない)と、ネットワーク280などのネットワークを介して通信可能である、任意のプログラマブル電子デバイスまたはプログラマブル電子デバイスの組み合わせを表す。
【0051】
ホストデバイス220は、本発明の少なくとも1つの実施形態による、図12を参照して説明されるような、クラウドコンピューティングノード10に関して更に詳細に示されて説明されるようなコンポーネントを含み得る。ホストデバイス220は、本発明の少なくとも1つの実施形態による、図11を参照して説明されるような、コンピューティングデバイス1100に関して更に詳細に示されて説明されるようなコンポーネントを含み得る。
【0052】
物理ストレージ230は、データの集合体を持続的に格納および管理するためのデータレポジトリである。図2に示されるように、物理ストレージ230は単一の共有ストレージプールである。当技術分野の当業者は、ストレージプールは、物理ディスクなどの物理ストレージ媒体の集合体であることを理解するであろう。代替的な実施形態において、物理ストレージ230は複数の個別のストレージプールを含み、1または複数の個別のストレージプールは、テナント210-216の各々に関連付けられる。代替的な実施形態において、物理ストレージ230は、1または複数の個別のストレージプールおよび1または複数の共有ストレージプールの組み合わせを含む。例えば、テナント210は個別のストレージプールにデータを書き込み得、テナント212-216は、単一の共有ストレージプールにデータを書き込み得る。しかしながら、他の実施形態において、物理ストレージ230は、個々および/または共有ストレージプールの任意の数および組み合わせを含み得ることを、理解すべきである。
【0053】
仮想ストレージ250は、仮想ディスク261および仮想ディスク262(テナント210に関連付けられた)、仮想ディスク263および仮想ディスク264(テナント212に関連付けられた)、仮想ディスク265および仮想ディスク266(テナント214に関連付けられた)、および仮想ディスク267および仮想ディスク268(テナント216に関連付けられた)を含む。仮想ディスク261および仮想ディスク262はさらに、共有可能ボリューム271および共有不可能ボリューム272を含み、仮想ディスク263および仮想ディスク264はさらに、共有可能ボリューム273および共有不可能ボリューム274を含み、仮想ディスク265および仮想ディスク266はさらに、共有可能ボリューム275および共有不可能ボリューム276を含み、仮想ディスク267および仮想ディスク268はさらに、共有可能ボリューム277および共有不可能ボリューム278を含む。マルチテナント環境200における各仮想ディスクは、上に作成される単一ボリュームを有するものとして示されるが、代替的な実施形態において、2またはそれ以上のボリュームが、単一の仮想ディスク上に作成され得る。同様に、代替的な実施形態において単一ボリュームが2またはそれ以上の仮想ディスクの組み合わせから作成され得る。
【0054】
物理ストレージ230が、ストレージネットワーク(図示しない)によってストレージコントローラ240に接続される。一実施形態において、物理ストレージ230は、ネットワークアタッチドストレージ(NAS)を介してネットワークコントローラ240に接続される。一実施形態において、物理ストレージ230は、ストレージエリアネットワーク(SAN)を介してネットワークコントローラ240に接続される。
【0055】
ストレージコントローラ240は、物理ストレージ230を管理し、物理ストレージ230のために意図された読み出しおよび書き込み要求の処理を容易にする単一処理ユニットである。他の実施形態において、ストレージコントローラ240が複数の処理ユニットから形成され得ることに留意されたい。ストレージコントローラ240は、(ストレージコントローラ240を制御するための)マイクロプロセッサ242、(物理ストレージ230へ書き込まれた、およびそこから読み出されたデータを一時的に格納またはバッファリングするための)キャッシュメモリ244、(外部デバイスと相互作用するための)ネットワークインタフェース246、および(ホストデバイス220などの複数のホストデバイスの間のネットワークチャネルプロトコル(例えば、ファイバチャネルプロトコル)を制御するための)制御スイッチ248を含む。
【0056】
ストレージコントローラ240は、本発明の少なくとも1つの実施形態による、図11を参照して説明されるような、クラウドコンピューティングノード10に関して更に詳細に示されて説明されるようなコンポーネントを含み得る。ストレージコントローラ240は、本発明の少なくとも1つの実施形態による、図11を参照して説明されるような、コンピューティングデバイス1100に関して更に詳細に示されて説明されるようなコンポーネントを含み得る。
【0057】
ストレージコントローラ240はさらにマルチテナントストレージプログラム201を含み、それはさらに、重複排除モジュール203、暗号化モジュール205、およびチャージングモジュール207を含む。一実施形態において、マルチテナントストレージプログラム201は、クラウドコンピューティング環境50(図12に示される)によって提供され得る。図2に示されるように、マルチテナントストレージプログラム201は、ストレージコントローラ240などのネットワークストレージコントローラ上で動作し、中央サーバまたはサードパーティアプリケーションストアからアプリケーションダウンロードを介してストレージコントローラ240によって利用され得る。代替的な実施形態において、マルチテナントストレージプログラム201はホストデバイス220などのサーバ上で動作し、中央サーバまたはサードパーティアプリケーションストアからのアプリケーションダウンロードを介してホストデバイス220によって利用され得る。一実施形態において、マルチテナントストレージプログラム201は、サードパーティクラウドサービスプロバイダ(図示しない)によって提供されるソフトウェアサービスとして利用され得る。一実施形態において、マルチテナントストレージプログラム201は、1または複数のテナント210-216、ホストデバイス220、および/またはストレージコントローラ240にインストールされた、アドオン、プラグイン、およびエージェントプログラム(図示しない)などの1または複数のコンポーネントを含み得る。
【0058】
重複排除モジュール203は、マルチテナント環境200の物理ストレージ230に書き込まれたデータにわたってデータ重複排除を実行する。一実施形態において、物理ストレージ230に書き込まれたデータは、データが複数のテナントにわたって共有可能(すなわち、重複排除に適格)か、共有不可能(すなわち、重複排除に不適格)かに基づいて、異なるボリュームに分離される。一実施形態において、共有可能ボリュームおよび共有不可能ボリュームへとデータを分離するために、ボリュームは、共有可能または共有不可能のいずれかとして、テナントによってタグ付けされる。一実施形態において、テナントが一度ボリュームをタグ付けすると、ボリュームに関連付けられた特定のタグはストレージコントローラ240に搬送され、そして、ボリュームが作成される時点でボリュームがタグ付けされる。代替的な実施形態において、重複排除モジュール203は、ボリュームが作成される時点でボリュームをタグ付けする。
【0059】
一実施形態において、タグは、dedupecategoryと名付けられたフラグであり、このフラグの値は、「機密」「共有不可能」または「重複排除に不適格」であり得る。フラグdedupecategoryの値が「機密」「共有不可能」または「重複排除に不適格」の場合、それは、データが、ストレージコントローラ240などの共通ストレージコントローラを共有するいかなるテナントにわたっても、重複し得ないことを示す。一実施形態において、フラグの値が「機密」「共有不可能」または「重複排除に不適格」であるという判断に応答して、重複排除モジュール203は、データをハッシュする前に、ボリュームに書き込まれたデータにテナントIDを連結する。代替的な実施形態において、フラグの値が「機密」「共有不可能」または「重複排除に不適格」であるという判断に応答して、暗号化モジュール205は、データをハッシュする前にデータが書き込まれるボリュームに関連付けられた暗号化アルゴリズムを介して、データブロックを暗号化する。これは、共通ストレージコントローラを共有する1または複数のテナントにわたって共有不可能なデータの複製が、データ重複排除の後に物理ストレージ230に格納されることを保証する。
【0060】
一実施形態において、フラグdedupecategoryの値が「非機密」「共有可能」または「重複排除に適格」である場合、それは、データが、ストレージコントローラ240などの共通ストレージコントローラを共有する任意のテナントにわたって重複排除され得ることを示す。それに応じて、重複排除モジュール203は、ブロックデータ自体のみに基づいてハッシュを実行する。換言すれば、重複排除モジュール203は、データをハッシュする前に、テナントIDをデータブロックと連結することも、データブロックを暗号化することも行わない。これは、複数のテナントにわたるデータの重複コピーが、ストレージから識別され、削除され得ることを保証する。
【0061】
様々な実施形態において、書き込み要求がボリュームに発行されるたびに、重複排除モジュール203は、データ上でハッシュを実行する前に、ボリュームと関連付けられたフラグの値を識別する。いくつかの実施形態において、インライン重複排除が実行され、データが物理ストレージ230に書き込まれるにつれて、重複排除はインライン処理として実行される。代替的な実施形態において、重複排除の後処理が実行され、データ重複排除は、データが物理ストレージ230に書き込まれた後にバックグラウンド処理として実行される。例えば、事前決定された時間間隔で、または物理ストレージ230に書き込まれたブロックの数が事前決定された閾値に到達および/または超過したときに、重複排除はバッチ処理として実行され得る。
【0062】
重複排除モジュール203は、「共有不可能」または「重複排除に不適格」とタグ付けされたボリュームに書き込まれるデータを変更する。一実施形態において、重複排除モジュール203はテナントIDを、物理ストレージ230の非共有可能または重複排除に不適格なボリュームに書き込まれたデータブロックと連結する。例えば、重複排除モジュール203は、書き込み要求を送ったテナントと関連付けられたテナントIDを識別し、テナントIDを、書き込み要求に従ってボリュームに書き込まれたデータと連結する。代替的な実施形態において、暗号化モジュール205は、「共有不可能」または重複排除に不適格」とタグ付けされたボリュームに書き込まれたデータブロックを暗号化する。例えば、暗号化モジュール205は、書き込み要求をボリュームに送るようにテナントに関連付けられたテナントIDを識別し、ボリュームまたはテナントIDと関連付けられた特定の暗号化アルゴリズムを介して、ボリュームに書き込まれたデータを暗号化する。
【0063】
チャージングモジュール207は、マルチテナント環境200における各テナントに関するストレージコストを計算する。一実施形態において、テナントは、その特定のストレージ消費(例えば、ギガバイト単位またはテラバイト単位)に基づいて固定された時間間隔で、チャージされる。通常、クラウド環境において、テナントは各月末に、ストレージ消費のためにチャージされる。しかしながら、本発明の様々な実施形態において、ストレージコストは任意の事前決定された時間間隔(毎秒、毎分、毎時、毎日、毎週、毎月など)で計算され得、それに従ってテナントはチャージされる。一実施形態において、各テナントに関して格納されたブロックごとのストレージコストは、データ重複排除が実行された後にデータブロックを指しているテナントの数に基づいて計算される。換言すれば、テナントごとに格納されたブロックごとのプライスは、データ重複排除の後に同じブロックを指しているテナントの数で除算された、ブロックごとの固定プライスに等しい。
【0064】
一実施形態において、マルチテナント環境200のテナントは、前記テナントがデータブロックを指している唯一のテナントである、データブロックに関して完全にチャージされる。これは、データブロックが非共有可能または重複排除に不適格なボリュームに書き込まれたときに生じる。例えば、テナント212がデータブロックWを共有不可能ボリューム274に書き込んだ場合、テナント212は、物理ストレージ230にデータブロックを格納するためのフルブロックプライスをチャージするであろう。
【0065】
一実施形態において、マルチテナント環境200のテナントは、複数のテナントがデータブロックの同じ複製を指すデータブロックのために、部分的にチャージされるのみである。これは、データブロックの冗長な複製が複数のテナントの間で共有されるときに生じる。例えば、テナント210およびテナント214がそれぞれ共有可能ボリューム271および共有可能ボリューム276にデータブロックYの同じ複製を書き込む場合、重複排除の後、データブロックYの単一の複製のみが物理ストレージ230に格納されるであろう。それに応じて、各テナントは元々、共有可能ボリュームにデータブロックYの複製を書き込んでいたので、データブロックYの重複コピーは、単一の格納された複製を指す参照に置き換えられる。このシナリオにおいて、テナント210およびテナント214によって共有された、データブロックYの単一の複製を格納するコストは、2で除算されたデータブロックYのブロックサイズに関するプライスであろう。
【0066】
一実施形態において、マルチテナント環境200のテナントがチャージされる額は、所定数のテナントがブロックを指している時間の量にさらに基づく。例えば、格納されたブロックごとのプライスがYである場合、テナントは日単位でチャージされ、テナント210-216の各々は5日の合計に関してブロックBを指し、ブロックBの単一の複製を格納するために各テナントごとにチャージされたプライスは、Y/4*5日であろう。しかしながら、5日後にテナント216がブロックB'を物理ストレージに書き込むことによってブロックBを更新した場合、テナント216は、更新バージョン(ブロックB')を指している唯一のテナントであろうし、その他の3つのテナント、テナント210-214は、以前のバージョン(ブロックB)を指しているであろう。そうして、進むと、ブロックB'を指しているテナントは、ブロックB'を格納するためにYをチャージするであろうし、ブロックBを指しているその他の3つのテナントは、ブロックBを格納するために一日に各々Y/3をチャージするであろう。さらに別の例において、格納されたブロックごとのプライスがZである場合、テナントは日単位でチャージされ、テナント210-216の各々は10日間ブロックCを指しており、ブロックCの単一の複製を格納するために各テナントごとにチャージされるプライスは、Z/4*10日であろう。しかしながら、10日後に5番目のテナントがブロックCを指す場合、次に進むと、ブロックCの単一の複製を格納するために5つのテナントの各々につきチャージされるプライスは一日につきZ/5となるであろう。
【0067】
図3は、概して300で指定される、本発明の少なくとも1つの実施形態による、マルチテナント環境における複数のテナントによって負担されるストレージコストを示す、例示的テーブルである。図3は、一つの実装のみの例示を提供するものであり、異なる実施形態が実装される環境に関してのいかなる限定も示唆するものではない。請求項によって記載されたように、本発明の範囲から逸脱することなく当業者によって、図示された環境に多くの修正が行われ得る。
【0068】
より具体的には、表300は、テナントごとに書き込まれたデータのブロックごとのプライスを計算するためのチャージングアルゴリズムを示し、テナントごとのブロックごとのプライスは、重複排除が実行された後にブロックを指しているテナントの数によって除算されたブロックごとのプライスに等しい。例示の目的のみのために、ブロックごとのプライスがXであることが想定され得る。
【0069】
表300によって示されるように、4つのテナント-テナント1、テナント2、テナント3およびテナント4が、データの様々なブロック(DB1-DB10)(列「データブロックID」310によって表される)を、そのそれぞれのストレージ・ボリュームに書き込んでいる。例示の目的のみのために、テナントの全てがそれぞれのボリュームを、共有可能であり、そのため複数のテナントにわたる重複排除に適格であるとしてタグ付けしていることも想定され得る。列「ブロックを指しているテナントのリスト」320に示されるように、いくつかのテナントはそれらのそれぞれのボリュームに、同じデータブロックを書き込んでいる。簡潔性の目的のために、4つのテナントおよび10のデータのブロックのみが、この例で使用される。しかしながら、現実の環境においては、数百のテナントおよび数千のデータブロックが存在し得ることに留意されたい。表300によってさらに示されるように、各ブロック(DB1-DB10)を格納するために、または格納しないためにテナント1-4によって負担されるそれぞれのストレージコストは、それぞれ列330-360によって表される。
【0070】
DB1から開始すると、テナント1は重複排除後にDB1を指している唯一のテナントであるので、テナント1はDB1のためにXをチャージされる。換言すると、テナント1はDB1の複製を格納する唯一のテナントであったので、DB1の複製を格納するコストは、テナント1によって完全に負担される。
【0071】
DB2に関しては、重複排除が実行された後、テナント1はDB2を指していない(すなわち、テナント1はストレージにDB2の複製を書き込まなかった)ので、テナント1はDB2を格納するためのいかなるチャージも負担しない。一方で、重複排除が実行された後、テナント2、テナント3、およびテナント4の各々がDB2を指しているので、これらのテナントによって負担されるコストはX/3である。換言すれば、テナント2、テナント3およびテナント4によってそれぞれ書き込まれたDB2の3つの複製は、重複排除後に単一の複製へと減らされており、そのため、テナント2、テナント3、およびテナント4によって共有されたDB2の単一の複製を格納するコストは、これら3つのテナントの間で分割される。
【0072】
DB3に関して、テナント2およびテナント3は、重複排除が実行された後にDB3を指していない(すなわち、テナント2およびテナント3はストレージにDB3の複製を書き込まなかった)ので、テナント2およびテナント3は、DB3を格納するためのいかなるチャージも負担しない。一方、テナント1およびテナント4の各々は、重複排除が実行された後にDB3を指しているので、これらのテナントによって負担されるコストはX/2である。換言すれば、テナント1およびテナント4によってそれぞれ書き込まれたDB3の2つの複製は、重複排除後に単一の複製へと減らされており、そのため、テナント1およびテナント4によって共有されるDB3の単一の複製を格納するためのコストは、これら2つのテナントの間で分割される。
【0073】
DB4に関して、4つのテナント全てが、重複排除が実行された後にDB4を指しているので、テナント1-4によって負担されるコストはX/4である。換言すれば、テナント1-4によってそれぞれ書き込まれたDB4の4つの複製は、重複排除後に単一の複製へと減らされており、そのため、テナント1-4の各々によって共有されるDB4の単一の複製の格納のためのコストは、4つのテナント全ての間で分割される。
【0074】
DB5に関して、テナント2およびテナント4は、重複排除が実行された後にDB5を指していない(すなわち、テナント2およびテナント4はストレージにDB5の複製を書き込まなかった)ので、テナント2およびテナント4は、DB5を格納するためのいかなるチャージも負担しない。一方、テナント1およびテナント3の各々は、重複排除が実行された後にDB5を指しているので、テナント1およびテナント3によって負担されるコストはX/2である。換言すれば、テナント1およびテナント3によってそれぞれ書き込まれたDB2の2つの複製は、重複排除後に単一の複製へと減らされており、そのため、テナント1およびテナント3によって共有されたDB5の単一の複製を格納するためのコストは、これら2つのテナントの間で分割される。
【0075】
DB6に関して、テナント1は重複排除後にDB6を指している唯一のテナントであるので、テナント1はDB1のためにXをチャージされる。換言すると、テナント1はDB6の複製を格納する唯一のテナントであったので、DB6の複製を格納するコストは、テナント1によって完全に負担される。
【0076】
DB7に関して、重複排除が実行された後、4つのテナント全てがDB7を指しているので、テナント1-4によって負担されるコストはX/4である。換言すれば、テナント1-4によってそれぞれ書き込まれたDB7の4つの複製は、重複排除後に単一の複製へと減らされており、そのため、テナント1-4によって共有されるDB7の単一の複製を格納するためのコストは、4つのテナント全ての間で分割される。
【0077】
DB8に関して、テナント2が重複排除後にDB8を指している唯一のテナントであるので、テナント2はDB8のためにXをチャージされる。換言すれば、テナント2はDB8の複製を格納する唯一のテナントであったので、DB6の複製を格納するためのコストは完全にテナント2によって負担される。
【0078】
DB9に関して、テナント4は重複排除後にDB9を指している唯一のテナントであるので、テナント4はDB9のためにXをチャージされる。換言すれば、テナント4はDB9の複製を格納する唯一のテナントであったので、DB9の複製を格納するためのコストは、完全にテナント4によって負担される。
【0079】
DB10に関して、テナント4は、重複排除が実行された後にDB10を指していない(すなわち、テナント4はストレージにDB10の複製を書き込まなかった)ので、テナント4はDB10を格納するためのいかなるチャージも負担しない。一方で、テナント1、テナント2、およびテナント3の各々は、重複排除が実行された後にDB10を指しているので、これらのテナントによって負担されるコストはX/3である。換言すれば、テナント1、テナント2、およびテナント3によってそれぞれ書き込まれたDB10の3つの複製は、重複排除後に単一の複製へと減らされており、そのため、テナント1、テナント2、およびテナント3によって共有されるDB10の単一の複製を格納するためのコストは、これら3つのテナントの間で分割される。
【0080】
ブロックごとのプライスに基づいて、テナント1-4によって負担されるストレージコスト(列330-360によってそれぞれ示される)、テナント1-4によって負担される合計のストレージコスト(列370によって示される)は、以下のとおりである。
【0081】
テナント1=3.83X(X+X/2+X/4+X/2+X+X/4+X/3)テナント2=2.16X(X/3+X/4+X/4+X+X/3)テナント3=1.6X(X/3+X/4+X/2+X/4+X/3)テナント4=2.3X(X/3+X/2+X/4+X/4+X)
【0082】
そうして、表300によって示されるように、テナントによって共有可能と指定されたデータの額は増加し、したがって、ストレージコストの減少を招く可能性がある。このことは、たとえテナント1およびテナント3が同じ数のデータのブロック(6)を指しているとしても、テナント1によって負担されるストレージコストはテナント3のそれよりほぼ2.5倍大きいという事実によって証明され得る。
【0083】
図4は、概して400で指定される、マルチテナント環境におけるインラインデータ重複排除の一例であり、マルチテナント環境400における複数のテナントのそれぞれのボリュームの全ては、本発明の少なくとも1つの実施形態により、共有不可能とタグ付けされる。図4は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関していかなる限定も示唆するものではない。図示された環境への多くの修正が、請求項によって記載された本発明の範囲から逸脱することなく、当業者によって行われ得る。
【0084】
図4に示されるように、テナント410-416はデータの様々なブロック(ブロックA、B、C、D、およびGによって示される)を、仮想ストレージ450の仮想ディスク431-436上にそれぞれ作成された共有不可能ボリューム441-446へと書き込んでいる。この段階は、概して402として指定される。マルチテナント環境400におけるボリュームの全てが「共有不可能」とタグ付けされているので、マルチテナントストレージプログラム201はテナントIDを各ブロックに連結し、ブロックがストレージプール420に書き込まれる前に、各連結されたブロックに関するハッシュ値を生成する。この段階は、概して404として指定される。代替的に、テナントIDをブロックに連結する代わりに、マルチテナントストレージ・ボリューム201が、404で暗号化アルゴリズムを介して各ブロックを暗号化する。
【0085】
ブロックにリンクされたテナントIDは、書き込み動作を発行したテナントに関連付けられた特定のテナントIDに対応する。例えば、マルチテナントストレージプログラム201は、テナント410のテナントID(例えば、ID1)を、共有不可能ボリューム441に書き込まれたブロックA、B、CおよびDに連結し、以下の連結されたデータセグメント:ブロックA_ID1、ブロックB_ID1、ブロックC_ID1、およびブロックD_ID1をもたらす。同様に、マルチテナントストレージプログラム201は、テナント1 410のID1を、共有不可能ボリューム442に書き込まれたブロックA、B、C、DおよびGに連結し、以下の連結されたデータセグメント:ブロックA_ID1、ブロックB_ID1、ブロックC_ID1、ブロックD_ID1、およびブロックG_ID1をもたらす。マルチテナントストレージプログラム201は、テナント412のテナントID(例えば、ID2)を、共有不可能ボリューム443に書き込まれたブロックA、B、CおよびDに連結し、以下の連結されたデータセグメント:ブロックA_ID2、ブロックB_ID2、ブロックC_ID2、およびブロックD_ID2をもたらす。マルチテナントストレージプログラム201は、テナント414のテナントID(例えば、ID3)を、共有不可能ボリューム444に書き込まれたブロックAおよびBに連結し、以下の連結されたデータセグメント:ブロックA_ID3およびブロックB_ID3をもたらす。同様に、マルチテナントストレージプログラム201は、テナント414のID4を、共有不可能ボリューム445に書き込まれたブロックCおよびDに連結し、以下の連結されたデータセグメント:ブロックC_ID3およびブロックD_ID4をもたらす。最後に、マルチテナントストレージプログラム201は、テナント416のテナントID(例えば、ID4)を、共有不可能ボリューム446に書き込まれたブロックA、B、CおよびDに連結し、以下の連結されたデータセグメント:ブロックA_ID4、ブロックB_ID4、ブロックC_ID4およびブロックD_ID4をもたらす。
【0086】
次に、マルチテナントストレージプログラム201は、連結されたデータセグメントに基づいてハッシュ値を生成する。例えば、マルチテナントストレージプログラム201は、共有不可能ボリューム441に書き込まれたブロックA、B、CおよびDに対応する連結されたデータセグメントに関して、ハッシュ値451、452、453、454を生成し、共有不可能ボリューム442に書き込まれたブロックA、B、CおよびDに対応する連結されたデータセグメントに関して、ハッシュ値451、452、453、454および455を生成する。マルチテナントストレージプログラム201は、共有不可能ボリューム443に書き込まれたブロックA、B、CおよびDに対応する連結されたデータセグメントに関して、ハッシュ値461、462、463および464を生成する。マルチテナントストレージプログラム201は、共有不可能ボリューム444に書き込まれたブロックAおよびBに対応する連結されたデータセグメントに関して、ハッシュ値471および472を生成する。マルチテナントストレージプログラム201は、共有不可能ボリューム445に書き込まれたブロックAおよびBに対応する連結されたデータセグメントに関して、ハッシュ値481および482を生成する。最後に、マルチテナントストレージプログラム201は、共有不可能ボリューム446に書き込まれたブロックA、B、CおよびDに対応する連結されたデータセグメントに関して、ハッシュ値491、492、493および494を生成する。
【0087】
ハッシュ値は連結されたデータセグメントに関して生成されるので、マルチテナントストレージプログラム201は、反復データの重複コピー(すなわち、重複ハッシュ値を有するデータ)を削除する。この段階は、概して406として指定される。データ重複排除後にテナント410-416によって書き込まれた残りブロックは、ストレージプール420において示される。テナント410に関して、同じブロックA、B、CおよびDは、それぞれ、最初は共有不可能ボリューム421および422に書き込まれていた。ブロックA、B、CおよびDの複製の両者が、同じテナントID(すなわち、ID1)に連結されており、各複製に関して生成されたハッシュ値もまた同じであった。そうして、データ重複排除の実行の後、ブロックA、B、CおよびDの複製の1つが削除され、ストレージプール420に書き込まれたブロックA、B、CおよびDに単一の複製のみが残る。同様に、ブロックGはテナント410の共有不可能ボリューム442に一度書き込まれたのみであるので、ブロックGもまた、重複排除が実行された後で、ストレージプール420に書き込まれる。
【0088】
テナント412-416の各々は、ブロックA、B、CおよびDの同じ複製を、共有不可能ボリューム423-426へそれぞれ書き込んだ。ブロックA、B、CおよびDの各テナント複製は、異なるテナントIDと連結されて、各複製は、ハッシュ値が異なるセットをもたらす。そうして、データ重複排除の実行後に3つの複製の間に重複ハッシュ値が存在しないので、ブロックA、B、CおよびDの3つの複製の各々もまた、ストレージプール420に書き込まれていた。
【0089】
データ重複排除が実行された後に更に、ストレージプール420に書き込まれたブロックA、B、CおよびDの4つの重複コピーが依然として残っていることに留意されたい。ここで、テナント410-416の各々は、ブロックA、B、CおよびDの別個の複製を指している。これは、マルチテナント環境400におけるボリュームの全てが共有不可能に指定されているので、各テナントと関連付けられた一意なテナントIDが、テナントのそれぞれのボリュームに書き込まれたブロックに連結されていたことに起因する。それに応じて、異なるテナントに書き込まれた重複ブロックは、異なるテナントIDと連結されたブロックをもたらし、そうして、データの同じブロックに関して生成された異なるハッシュ値をもたらす。
【0090】
テナントがチャージされているストレージのブロックごとのプライスがXであると想定すると、ストレージプール420においてブロックA、B、C、DおよびGを格納するコストは以下のとおりである。
【0091】
テナント410:5ブロック(A、B、C、DおよびG)に対するプライス=5Xテナント412:4ブロック(A、B、CおよびD)に対するプライス=4Xテナント414:4ブロック(A、B、CおよびD)に対するプライス=4Xテナント416:4ブロック(A、B、CおよびD)に対するプライス=4X
【0092】
図5は、マルチテナント環境におけるインラインデータ重複排除の一例であり、概して500で指定され、マルチテナント環境500における複数のテナントのそれぞれのボリュームの全てが、本発明の少なくとも1つの実施形態により、共有可能でタグ付けされる。図5は、1つの実装のみの例示を提供するものであり、異なる実施形態が実装され得る環境に関していかなる限定も示唆するものではない。図示された環境への多くの修正が、請求項によって記載された本発明の範囲から逸脱することなく、当業者によって行われ得る。
【0093】
図5に示されるように、テナント410-416は、データの様々なブロック(ブロックA、B、C、DおよびGで示される)を、仮想ストレージ550の仮想ディスク531-536上にそれぞれ作成された共有可能ボリューム541-546へと書き込んでいる。この段階は、概して502として指定される。図4に示されたようなボリュームおよび図5に示されたようなボリュームの間の唯一の相違点は、図5のボリュームは全て「共有可能」でタグ付けされていることである。マルチテナント環境500におけるボリュームの全ては「共有可能」でタグ付けされているので、マルチテナントストレージプログラム201は、各ブロックにテナントIDを連結することをスキップするであろう。そうして、マルチテナントストレージプログラム201は、ブロックデータ自体に基づいて、各ブロックに関するハッシュ値を生成するであろう。この段階は、概して504として指定される。代替的に、共有可能ボリューム541-546に書き込まれたブロックにテナントIDを連結することをスキップする代わりに、マルチテナントストレージプログラム201は、504で暗号化アルゴリズムを介してブロックを暗号化することをスキップするであろう。
【0094】
例えば、マルチテナントストレージプログラム201は、テナント410の共有可能ボリューム541に書き込まれたブロックA、B、CおよびDに関してハッシュ値541、542、543および544を生成する。同様に、マルチテナントストレージプログラム201は、テナント410の共有可能ボリューム542に書き込まれたブロックA、B、C、DおよびGに関してハッシュ値541、542、543、544および545を生成する。マルチテナントストレージプログラム201は、テナント412の共有可能ボリューム543に書き込まれたブロックA、B、C、Dに関してハッシュ値541、542、543および544を生成する。マルチテナントストレージプログラム201は、テナント414の共有可能ボリューム544に書き込まれたブロックAおよびBに関してハッシュ値541および542を生成する。マルチテナントストレージプログラム201は、テナント414の共有可能ボリューム545に書き込まれたブロックCおよびDに関してハッシュ値543および544を生成する。最後に、マルチテナントストレージプログラム201は、テナント416の共有可能ボリューム546に書き込まれたブロックA、B、CおよびDに関してハッシュ値541、542、543および544を生成する。
【0095】
ハッシュ値はブロックデータ自体に基づいてブロックに関して生成されるので、マルチテナントストレージプログラム201は、反復データの重複コピー(すなわち、重複ハッシュ値を有するデータ)を削除する。この段階は、概して506として指定される。データ重複排除後にテナント410-416によって書き込まれた残りブロックが、ストレージプール520に示される。図5で示されるように、ブロックA、B、CおよびDの1つの複製のみが、ストレージプール520に書き込まれている。これは、テナント410-416の各々が、それぞれのボリュームを「共有可能」でタグ付けしたということに起因する。それに応じて、マルチテナントストレージプログラム201は、ブロックをテナントIDと連結することをスキップし、または代替として、暗号化アルゴリズムを介してブロックを暗号化することをスキップした。したがって、ブロックに関して作成されたハッシュ値は、ブロックデータ単独に基づいて計算された。簡単な場合、ハッシュ値の4つの重複するセットが、「共有可能」とタグ付けされたボリュームに書き込まれたブロックA、B、CおよびDの4つの複製に対応して生成された。テナント410は仮想ディスクにブロックGを書き込む唯一のテナントであったので、ブロックGの単一の複製もまたストレージプール520に書き込まれる。
【0096】
ブロックA、B、C、Dの4つの複製がマルチテナント環境500のそれぞれのボリュームに書き込まれていたとしても、ブロックA、B、C、Dの単一の複製のみがストレージプール520に書き込まれて残ることに留意されたい。これは、ボリュームの全てが共有可能として指定されたので、テナントに関連付けられた一意なテナントIDが、テナントのそれぞれのボリュームに書き込まれたブロックに連結されなかったことに起因する。それに応じて、異なるテナントによって書き込まれた重複ブロックは、同じブロックに関して同一のハッシュ値をもたらす。ブロックA、B、C、Dの単一の複製のみが残るが、全てのテナントがこれらのブロックを共有可能ボリュームに元々書き込んだので、全てのテナントがこの複製にアクセスを有する。そうすることで、全てのテナントが、ストレージプール520に位置するブロックA、B、C、Dの単一の複製を指し、そのため、ストレージプール520に位置するブロックA、B、C、Dの単一の複製へのアクセスを共有するであろう。テナント410はボリュームにブロックGを書き込む唯一のテナントであったので、テナント410は、ストレージプール520に書き込まれたブロックGを指し、そのため、ストレージプール520に書き込まれたブロックGにアクセスを有する、唯一のテナントであることに留意されたい。
【0097】
テナントがチャージされるストレージのブロックごとのプライスがXであると想定すると、ストレージプール520にブロックを格納するためのコストは以下のとおりである。
【0098】
テナント410:4つの共有可能ブロック(A、B、CおよびD)のための部分的プライス+1つの非共有可能ブロック(G)のためのフルプライス=(X/4+X/4+X/4+X/4)+(X)=2X
【0099】
テナント412:4つの共有可能ブロック(A、B、CおよびD)のための部分的プライス=(X/4+X/4+X/4+X/4)=X
【0100】
テナント414:4つの共有可能ブロック(A、B、CおよびD)のための部分的プライス=(X/4+X/4+X/4+X/4)=X
【0101】
テナント416:4つの共有可能ブロック(A、B、CおよびD)のための部分的プライス=(X/4+X/4+X/4+X/4)=X
【0102】
マルチテナント環境400のテナントによって書き込まれるブロックと同じブロックに書き込むための、マルチテナント環境500のテナントによって負担されるストレージコストを比較すると、テナント410のストレージコストは、50パーセント以上減少し、テナント412-416のストレージコストは75パーセント減少している。
【0103】
図6は、マルチテナント環境におけるインラインデータ重複排除の一例であり、概して600で指定され、マルチテナント環境600における複数のテナントの仮想ディスクおよび/またはストレージ・ボリュームの混合が、本発明の少なくとも1つの実施形態により、共有可能および共有不可能としてタグ付けされている。図6は、1つの実装のみの例示を提供するものであり、異なる実施形態が実装され得る環境に関していかなる限定も示唆するものではない。図示された環境への多くの修正が、請求項によって記載されたように、本発明の範囲から逸脱することなく、当業者によって行われ得る。
【0104】
図6に示されるように、テナント410-416は、仮想ストレージ650の共有可能および共有不可能ボリュームにそれぞれ、データの様々なブロック(ブロックA、B、C、D、G、P、P、P、P、QおよびQによって示される)を書き込んでいる。この段階は、概して602として指定される。さらに図6によって示されるように、仮想ディスク631上に作成された共有可能ボリューム641(テナント410に関連付けられる)、仮想ディスク633上に作成された共有可能ボリューム643(テナント412に関連付けられる)、仮想ディスク635上に作成された共有可能ボリューム645(テナント414に関連付けられる)、および仮想ディスク636上に作成された共有可能ボリューム646(テナント414に関連付けられる)は、全て「共有可能」でタグ付けされている。それに応じて、「共有可能」でタグ付けされたストレージ・ボリュームに書き込まれたそれらのブロックは、マルチテナント環境600のテナントにわたって重複排除に適格である。同様に、仮想ディスク632上に作成された共有不可能ボリューム642(テナント410に関連付けられる)および仮想ディスク634上に作成される共有不可能ボリューム644(テナント414に関連付けられる)は、「共有不可能」でタグ付けされている。それに応じて、「共有不可能」でタグ付けされたストレージ・ボリュームに書き込まれたそれらのブロックは、マルチテナント環境600のテナントにわたって重複排除に不適格である。
【0105】
ブロックがそれぞれのボリュームに書き込まれるので、マルチテナントストレージプログラム201は、各ブロックに関するハッシュ値を生成する。この段階は、概して604として指定される。共有可能ボリュームに書き込まれたそれらのブロックに関して、マルチテナントストレージプログラム201はテナントIDをブロックと連結せず、マルチテナントストレージプログラム201は暗号化アルゴリズムを介してブロックを暗号化することも行わない。むしろ、マルチテナントストレージプログラム201は、ブロックデータ自体に基づいて各ブロックに関するハッシュ値を生成する。一方で、共有不可能ボリュームに書き込まれたブロックに関して、マルチテナントストレージプログラム201は、テナントIDをブロックと連結するか、または暗号化アルゴリズムを介してブロックを暗号化するかのいずれかを行う。ブロックがテナントIDと連結されるか、またが暗号化アルゴリズムを介して暗号化されるかは、テナント基準で、テナント上のマルチテナント環境600のテナントによって予め指定され得る。
【0106】
例えば、マルチテナントストレージプログラム201は、共有可能ボリューム641に書き込まれたブロックA、B,CおよびDに関して、ブロックデータ自体に基づいてハッシュ値651、652、653および654を生成する。しかしながら、マルチテナントストレージプログラム201は、共有不可能ボリューム642に書き込まれたブロックP、P、P、およびPに対応する連結されたデータセグメントに基づいて、ハッシュ値661、662、663および664を生成する。マルチテナントストレージプログラム201は、ブロックデータ自体に基づいて、共有可能ボリューム643に書き込まれたブロックA、B、CおよびDに関するハッシュ値651、652、653および654を生成する。しかしながら、マルチテナントストレージプログラム201は、共有不可能ボリューム644に書き込まれたブロックQおよびQに対応する連結されたデータセグメントに基づいて、ハッシュ値671および672を生成する。マルチテナントストレージプログラム201は、共有可能ボリューム645に書き込まれたブロックCおよびDに関するブロックデータ自体に基づいて、ハッシュ値653および654を生成する。最後に、マルチテナントストレージプログラム201は、共有可能ボリューム646に書き込まれたブロックA、B、CおよびDに関するブロックデータ自体に基づいて、ハッシュ値651、652、653および654を生成する。
【0107】
ハッシュ値が「共有不可能」とタグ付けされたボリュームに書き込まれたそれらのブロックに関して生成されるので(すなわち、ブロックはテナントIDによって連結されるか暗号化アルゴリズムを介して暗号化される)、マルチテナントストレージプログラム201は、同一のハッシュ値を有する反復データの重複コピーを削除する。この段階は、概して606で指定される。各テナントは異なる一意的なIDを有するので、同じテナントに関連付けられた共有不可能ボリュームに書き込まれた重複ブロックのみが、マルチテナントストレージプログラム201によって削除され得る。ハッシュ値が「共有可能」とタグ付けされたボリュームに書き込まれるそれらのブロックに関して生成されるので(すなわち、ブロックはテナントIDによって、または暗号化アルゴリズムを介して連結されない)、マルチテナントストレージプログラム201は、同一のハッシュ値を有する反復データの重複コピーを削除する。ここで、共有可能ボリュームに書き込まれたブロックに関して生成されたハッシュ値はブロックデータ自体に基づいて生成されるので、共有可能ボリュームに書き込まれた重複ブロックは、マルチテナント環境600における異なるテナントにわたって削除され得る。それに応じて、「共有可能」とタグ付けされた任意の仮想ボリュームに書き込まれたデータの重複コピーが、ボリュームの所有者に関わらず、識別されて削除され得る。
【0108】
データ重複排除後にテナント410-416によって書き込まれた残りブロックが、ストレージプール620において示される。データ重複排除は共有不可能ボリューム642に書き込まれたブロックP、P、PおよびPに関してマルチテナント環境600にわたって実行され得ないので、テナント410のみが、ストレージプール620に格納されるブロックP、P、PおよびPを指す。同様に、データ重複排除は共有不可能ボリューム644に書き込まれたブロックQおよびQに関してマルチテナント環境600にわたって実行され得ないので、テナント414のみが、ストレージプール620に格納されたブロックQおよびQを指す。
【0109】
一方で、データ重複排除は、共有可能ボリュームに書き込まれた重複ブロックに関してマルチテナント環境600にわたって実行され得る。例えば、ブロックAおよびBの3つの別個の複製がボリューム641、643および646に書き込まれたが、テナント410、412および416は全て、ストレージプール620に書き込まれたブロックAおよびBの単一の複製を指す。これは、3つのボリュームは共有可能として指定されていたので、テナントに関連付けられた一意なテナントIDは、ブロックをハッシュする前にこれらのブロックに連結されなかったことに起因する。それに応じて、異なるテナントによって書き込まれたブロックAおよびBの重複は、これらのブロックに関する同一のハッシュ値をもたらした。同様に、ブロックCおよびDの4つの別個の複製が、それぞれボリューム641、643、645および646に書き込まれたが、テナント410-416は全て、ストレージプール620に書き込まれたブロックCおよびDの単一の複製を指す。さらに、これは、ブロックCおよびDの各複製は共有可能として指定されたボリュームに書き込まれたので、テナントに関連付けられた一意なテナントIDは、ブロックをハッシュする前にブロックに連結されなかったことに起因する。それに応じて、異なるテナントによって書き込まれたブロックCおよびDの重複は、これらのブロックに関して同一のハッシュ値をもたらした。
【0110】
図7は、概して700で指定される、本発明の少なくとも1つの実施形態によるマルチテナント環境600(図6に示されるような)のテナントによって負担されるストレージコストを示す、例示的テーブルである。図7は、1つの実装のみの例示を提供するものであり、異なる実施形態が実装され得る環境に関して、いかなる限定も示唆するものではない。図示された環境への多くの修正が、請求項によって記載されたような本発明の範囲から逸脱することなく、当業者によって行われ得る。
【0111】
より具体的には、表700はテナントごとに書き込まれたデータのブロックごとのプライスを計算するためのチャージングアルゴリズムを示し、テナントごとのブロックごとのプライスは、重複排除が実行された後のブロックを指しているテナントの数によって除算された、ブロックごとのプライスに等しい。例示の目的のみで、ブロックごとのプライスがXであることが想定され得る。
【0112】
表700によって示されるように、テナント410-416は様々なデータブロック(DB_A、DB_B、DB_C、DB_D、DB_P、DB_P、DB_P、DB_P、DB_Q、およびDB_Q)(列「データブロックID」710によって表される)を、共有可能および共有不可能ボリュームにそれぞれ書き込んでいる。列「ブロックを指しているテナントのリスト」720は、データ重複排除が実行された後にストレージプール620(図6に示される)に格納されたデータの特定のブロックを指しているそれらのテナントを示す。テナントが、ストレージプール620に格納された特定のブロックを指すように、テナントは、テナントに関連付けられたボリュームにブロックの複製を以前に書き込んでいる必要がある。表700によってさらに示されるように、ストレージプール620においてそれぞれのブロックを格納するかまたは格納しないための、テナント410-416によって負担されたそれぞれのストレージコストが、それぞれ列730-760によって表される。
【0113】
DB_Aから開始すると、テナント414はDB_Aを指していない(テナント414はボリュームにDB_Aのプールコピーを書き込まなかった)ので、テナント414はストレージ620にDB_Aを格納するためのいかなるチャージも負担しない。一方で、テナント410、412および416の各々は、データ重複排除が実行された後にDB_Aを指すので、これらのテナントによって負担されるコストはX/3である。換言すれば、テナント410、412および416にそれぞれ書き込まれたDB_Aの3つの複製が、データ重複排除後の単一の複製へと減らされており、そのため、テナント410、412および416の各々にアクセス可能なストレージプール620におけるDB_Aの単一の複製を格納するためのコストが、これら3つのテナントの間で分割される。
【0114】
DB_Bに関して、テナント414はDB_Bを指していない(テナント414はボリュームにDB_Bの複製を書き込まなかった)ので、テナント414は、ストレージプール620にDB_Bを格納するためのいかなるチャージも負担しない。一方で、テナント410、412および416の各々は共有可能ボリュームにDB_Bの複製を書き込んだので、データ重複排除が実行される後の、テナントによって負担されるコストはX/3である。換言すれば、テナント410、412および416によってそれぞれ書き込まれたDB_Bの3つの複製が、重複排除の後に単一の複製へと減らされており、そのため、テナント410、412および416の各々にアクセス可能なストレージプール620にDB_Bの単一の複製を格納するためのコストは、これら3つのテナントの間で分割される。
【0115】
DB_Cに関して、4つのテナント410-416の全てが、データ重複排除が実行された後でDB_Cを指している(すなわち、4つのテナントの全てがDB_Cの複製を共有可能ボリュームへ書き込んだ)ので、テナント410-416によって負担されるコストはX/4である。換言すると、テナント410-416によってそれぞれ書き込まれるDB_Cの4つの複製が、データ重複排除の後に単一の複製に減らされており、そのため、テナント410-416の各々にアクセス可能なストレージプール620にDB_Cの単一の複製を格納するためのコストは、4つのテナント全ての間で分割される。
【0116】
DB_Dに関して、4つのテナント410-416の全てが、データ重複排除が実行された後にDB_Dを指している(4つのテナント全てがDB_Dの複製を共有可能ボリュームに書き込んだ)ので、テナント410-416によって負担されるコストはX/4である。換言すれば、テナント410-416によってそれぞれ書き込まれたDB_Dの4つの複製は、データ重複排除の後に単一の複製に減らされており、そのため、テナント410-416の各々にアクセス可能なストレージプール620にDB_Dの単一の複製を格納するためのコストは、4つのテナント全ての間で分割される。
【0117】
DB_P、DB_P、DB_P、およびDB_Pに関して、テナント410は、データ重複排除後にこれらのデータブロックを指している唯一のテナントである(テナント410は共有不可能ボリュームにブロックP、P、PおよびPを書き込んだ)ので、テナント410はストレージプール620にDB_Pを格納するためにXを、DB_Pを格納するためにXを、DB_Pを格納するためのXを、およびDB_Pを格納するためにXをチャージされる。換言すれば、テナント410がDB_P、DB_P、DB_P、およびDB_Pの複製を共有不可能ボリュームに書き込んだので、ストレージプール620にこれらのブロックの複製を格納するコストは、テナント410によって完全に負担される。
【0118】
DB_QおよびDB_Qに関して、テナント414は、データ重複排除後にブロックQおよびQを指す唯一のテナントである(テナント414は共有不可能ボリュームにブロックQおよびQを書き込んだ)ので、テナント414はストレージプール620にDB_Qを格納するためにXを、DB_Qを格納するためにXをチャージされる。換言すれば、テナント414が共有不可能ボリュームにDB_QおよびQを書き込んだので、ストレージプール620にDB_QおよびDB_Qの複製を格納するためのコストは、テナント414によって完全に負担される。
【0119】
ブロックごとのプライスに基づいて、テナント410-416によって負担されるストレージコスト(それぞれ列730-760によって示される)、テナント410-416によって負担される合計のストレージコスト(列770によって示される)は、以下のとおりである。
【0120】
テナント410:4つの共有可能なデータブロック(DB_A、DB_B、DB_C、およびDB_D)のための部分的プライス+4つの共有不可能データブロック(DB_P、P、P、およびP)のためのフルプライス=(X/3+X/3+X/4+X/4)+(X+X+X+X)=5.16X。
【0121】
テナント412:4つの共有可能ブロック(DB_A、DB_B、DB_CおよびDB_D)のための部分的プライス=(X/3+X/3+X/4+X/4)=1.16X
【0122】
テナント414:2つの共有可能ブロック(DB_CおよびDB_D)のための部分的プライス+2つの共有不可能データブロック(DB_QおよびDB_Q)のためのフルプライス=(X/4+X/4)+(X+X)=2.5X
【0123】
テナント416:4つの共有可能ブロックのための部分的プライス(DB_A、DB_B、DB_CおよびDB_D)=(X/3+X/3+X/4+X/4)=1.16X
【0124】
図8は、概して800で指定されるフローチャート図であり、マルチテナント環境200(図2に示される)における複数のテナントにわたる重複排除に適格または重複排除に不適格であるテナントデータを指定するための動作段階を示す。図8は、1つの実装のみの例示を提供するものであり、異なる実施形態が実装され得る環境に関して、いかなる限定も示唆するものではない。図示された環境に多くの修正が、請求項によって記載された本発明の範囲から逸脱することなく、当業者によって行われ得る。図8の段階はストレージエリアネットワークボリュームコントローラを利用するが、発明は任意のタイプの知られている、または将来知られるストレージコントローラ、および、任意のタイプの知られている、または将来知られるストレージネットワークおよびストレージテクノロジを利用して実施され得ることに留意されたい。
【0125】
段階802において、マルチテナントストレージプログラム201は、マルチテナント環境200(図2に示される)などの、マルチテナント環境のそれぞれのテナントに関連付けられたストレージエリアの第1のセットを作成する。一実施形態において、ストレージエリアの第1のセットは、マルチテナント環境における複数のテナントにわたる重複排除に適格であると指定されたデータのみを含む。一実施形態において、ストレージエリアの第1のセットを作成することは、物理ストレージ領域の第1のセットを作成することを含む。一実施形態において、物理ストレージ領域の第1のセットを作成することはさらに、物理ストレージ領域の第1のセットから仮想ストレージ領域の第1のセットを作成することを含む。一実施形態において、仮想ストレージ領域の第1のセットを作成することはさらに、仮想ディスクの第1のセットを作成することを含む。一実施形態において、仮想ディスクの第1のセットを作成することはさらに、仮想ディスクの第1のセット上にボリュームの第1のセットを作成することを含む。一実施形態において、ボリュームの第1のセットを作成することはさらに、仮想ディスクの第1のセット上にボリュームの第1のセットをマウントすることを含む。一実施形態において、ボリュームの第1のセットを作成することはさらに、ボリュームの第1のセットのためにファイルシステムを作成することを含む。
【0126】
一実施形態において、ストレージエリアの第1のセットを作成することはさらに、仮想ディスクの第1のセット上に作成されたボリュームの第1のセットにおける各ボリュームを、「共有可能」「非機密」または「重複排除に適格」としてタグ付けすることを含む。例えば、マルチテナントストレージプログラム201は、仮想ディスク上に作成されたボリュームを、「非機密データ」「共有可能データ」または「重複排除に適格データ」の値で、dedupecategoryと名付けられたフラグでタグ付けする。さらなる一例として、ストレージコントローラ240(図2に示される)はIBM SANボリュームコントローラ(SVC)であり、マルチテナントストレージプログラム201は、ボリュームを重複排除に適格であるとしてタグ付けするように、以下のコマンドをストレージコントローラ240に発行し得る:mkvdisk-mdiskgrp datareductionpool0-size 100-unit gb-iogrp0-rsize0-autoexpand-deduplicated-dedupecategory-shareable。
【0127】
段階804において、マルチテナントストレージプログラム201は、マルチテナント環境200(図2で示される)などのマルチテナント環境のそれぞれのテナントのためにストレージエリアの第2のセットを作成する。一実施形態において、ストレージエリアの第2のセットは、マルチテナント環境において複数のテナントにわたる重複排除に不適格であると指定されたデータのみを含む。一実施形態において、ストレージエリアの第2のセットを作成することはさらに、物理ストレージ領域の第2のセットを作成することを含む。一実施形態において、ストレージエリアの第2のセットを作成することはさらに、ストレージエリアの第2のセットから仮想ストレージ領域の第2のセットを作成することを含む。一実施形態において、仮想ストレージ領域の第2のセットを作成することはさらに、仮想ディスクの第2のセットを作成することを含む。一実施形態において、仮想ストレージ領域の第2のセットを作成することはさらに、仮想ディスクの第2のセット上にボリュームの第2のセットを作成することを含む。一実施形態において、ボリュームの第2のセットを作成することはさらに、仮想ディスクの第2のセット上にボリュームの第2のセットをマウントすることを含む。一実施形態において、ボリュームの第2のセットを作成することはさらに、ボリュームの第2のセットのためのファイルシステムを作成することを含む。
【0128】
一実施形態において、ストレージエリアの第2のセットを作成することはさらに、仮想ディスクの第2のセットに対応するボリュームの第1のセットにおける各ボリュームを、「共有不可能」「機密」または「重複排除に不適格」とタグ付けすることを含む。例えば、プログラム201は、「機密データ」「共有不可能データ」または「重複排除に不適格なデータ」の値で、dedupecategoryと名付けられたフラグでボリュームをタグ付けする。さらなる一例として、ストレージコントローラ240(図2で示される)はIBM SANボリュームコントローラ(SVC)であり、マルチテナントストレージプログラム201は、ボリュームを重複排除に不適格であるとしてタグ付けするように、以下のコマンドをストレージコントローラ240に発行し得る:mkvdisk-mdiskgrp datareductionpool0-size 100-unit gb-iogrp0-rsize0-autoexpand-deduplicated-dedupecategory-non-shareable。
【0129】
複数のテナントにわたるデータ重複排除が、dedupecategory-non-shareableとしてタグ付けされたボリュームに書き込まれたデータに関しては可能ではないが、dedupecategory-non-shareableとタグ付けされた同じボリュームに書き込まれた重複データの重複排除は依然として許容されることに留意されたい。同様に、テナントはdedupecategory-non-shareableとして複数のボリュームをタグ付けし得るが、同じテナントに関連付けられたdedupecategory-non-shareableとタグ付けされたボリュームにわたる重複データの重複排除もまた可能である。
【0130】
図9は、概して900で指定されるフローチャート図であり、本発明の少なくとも1つの実施形態によるマルチテナント環境200(図2に示される)などの、マルチテナント環境における選択的データ重複排除を実行するための動作段階を示す。図9は、1つの実装のみの例示を提供するものであり、異なる実施形態が実装され得る環境に関していかなる限定も示唆するものではない。図示された環境に多くの修正が、請求項によって記載された本発明の範囲から逸脱することなく、当業者によって行われ得る。
【0131】
段階902において、マルチテナントストレージプログラム201は、テナントからの書き込み操作/要求を識別および/または受信する。一実施形態において、書き込み操作/要求は、物理ストレージ領域に関連付けられた物理ボリュームを対象とする。例えば、書き込み操作/要求は、ストレージプールに関連付けられた物理ボリュームを対象とする。一実施形態において、書き込み操作/要求は、仮想ディスク上に作成されたボリュームを対象とする。一実施形態において、書き込み操作/要求は、仮想ディスク上に作成された仮想ボリュームまたは論理ボリュームを対象とする。
【0132】
決定ステップ904において、マルチテナントストレージプログラム201は、書き込み操作/要求が複数のテナントにわたって重複排除に適格であるかどうか判断する。一実施形態において、書き込み操作/要求が、ボリュームが複数のテナントにわたって重複に適格であることを示す値のタグを有するボリュームを対象とする場合、書き込み操作/要求は複数のテナントにわたって重複排除に適格である。例えば、「共有可能」「非機密」または「重複排除に適格」の値のタグを有するボリュームは、ボリュームに書き込まれたデータが、複数のテナントにわたって重複排除に適格であることをマルチテナントストレージプログラム201に示すように使用され得る。さらなる一例として、マルチテナントストレージプログラム201が、データブロック123をボリューム5に書き込むように、テナントAからの書き込み操作/要求を識別またはさもなければ受信する場合、マルチテナントストレージプログラム201は、ボリューム5が「共有可能」とタグ付けされており、したがって重複排除に適格であると判断する。
【0133】
一実施形態において、書き込み操作/要求が、ボリュームが複数のテナントにわたる重複排除に不適格であることを示す値のタグを有するボリュームを対象とする場合、書き込み操作/要求は複数のテナントにわたる重複排除に関して重複排除に不適格である。例えば、「共有不可能」「機密」または「重複排除に不適格」の値のタグを有するボリュームは、ボリュームに書き込まれたデータが複数のテナントにわたる重複排除に関して不適格であることを、マルチテナントストレージプログラム201に示すように使用され得る。さらなる一例として、マルチテナントストレージプログラム201が、データブロック456をボリューム7に書き込むように、テナントBからの書き込み操作/要求を識別またはさもなければ受信する場合、マルチテナントストレージプログラム201は、ボリューム7が「共有不可能」とタグ付けされており、したがって、複数のテナントにわたる重複排除に不適格であると判断する。一実施形態において、それぞれのボリュームに関連付けられるタグは、ルックアップテーブルまたはインデックスに格納される。
【0134】
ボリュームを対象とする書き込み操作/要求が、複数のテナントにわたるデータ重複に関して適格であるとの判断に応答して(決定ステップ904の「はい」分岐)、マルチテナントストレージプログラム201は段階910に進む。ボリュームを対象とする書き込み操作/要求が、複数のテナントにわたるデータ重複排除に関して適格でないとの判断に応答して(決定ステップ904の「いいえ」分岐)、マルチテナントストレージプログラム201は決定ステップ906に進む。
【0135】
段階906において、ボリュームを対象とする書き込み操作/要求が複数のテナントにわたるデータ重複排除に不適格であるという判断に応答して、マルチテナントストレージプログラム201は、ハッシュ化アルゴリズムをデータブロックに適用する前に、ボリュームに書き込まれたデータブロックを、書き込み動作を発したテナントの一意な識別子と連結する。本明細書において使用されるように、データブロックと、テナントの一意な識別子との連結は、連結されたデータセグメントと称されるものとする。例えば、テナント1が重複排除に不適格なボリューム9にデータブロックAを書き込むように書き込み動作を発する場合、連結されたデータセグメントは、ブロックAに対応するデータセグメントを、テナント1のテナントIDと連結するように形成される。代替的な実施形態において、段階906において、ボリュームを対象とする書き込み動作が複数のテナントにわたる重複排除に不適格であるとの判断に応答して、マルチテナントストレージプログラム201は、ハッシュ化アルゴリズムをデータブロックに適用する前に、暗号化アルゴリズムを介して、重複排除に不適格なボリュームに書き込まれたデータブロックを暗号化する。
【0136】
段階908において、マルチテナントストレージプログラム201は、連結されたデータセグメントに基づいて、重複排除に不適格なボリュームに書き込まれたデータブロックに関するハッシュ値を生成する。以前の例に続けると、データブロックAに対応するデータセグメントが123であり、テナント1のテナントIDがxyzである場合、マルチテナントストレージプログラム201は、連結されたデータセグメント「xyz123」または「123xyz」に基づいてデータブロックAに関するハッシュ値を生成する。代替的な実施形態において、マルチテナントストレージプログラム201は、ブロックが暗号化アルゴリズムを介して暗号化された後に、重複排除に不適格なボリュームに書き込まれたデータブロックに関するハッシュ値を生成する。例えば、データブロックBが重複排除に不適格ボリューム5に書き込まれる場合、マルチテナントストレージプログラム201は、データブロックBに対応するデータセグメントを、暗号化アルゴリズムを介して暗号文に変換し、暗号文に基づいて、データブロックBに関するハッシュ値を生成する。
【0137】
段階910において、マルチテナントストレージプログラム201は、複数のボリュームにわたる重複排除に適格なボリュームに書き込まれたデータブロックに関するハッシュ値を、データブロック自体に基づいて生成する。換言すれば、ハッシュ値は、データブロックに対応するデータに基づいて生成される。例えば、データブロックCに対応するデータセグメントが456である場合、マルチテナントストレージプログラム201は、データセグメント456に基づいて、データブロックAに関するハッシュ値を生成する。
【0138】
段階912において、マルチテナントストレージプログラム201は、同一のハッシュ値を有するデータブロックの識別に基づいて、データブロックの重複コピーを除去する。一実施形態において、データブロックの重複コピーを除去することは、重複コピーを格納された複製を指すレファレンスで置き換えることを含む。一実施形態において、重複コピーは、テナントに関連付けられた物理ストレージ領域にデータブロックを書き込む前に、除去される。代替的な実施形態において、重複コピーは、テナントに関連付けられた物理ストレージ領域にデータブロックを書き込んだ後に、除去される。
【0139】
図10は、概して1000で指定されるフローチャート図であり、本発明の少なくとも1つの実施形態によるマルチテナント環境200(図2に示される)などのマルチテナント環境のそれぞれのテナントに関するストレージコストを、動的に計算するための動作段階を示す。図10はブロックストレージ、特にデータのブロックを参照するが、図10の段階は、ファイルストレージ、ブロックストレージ、およびオブジェクトストレージを含む、任意のタイプの知られている、または将来知られるストレージアーキテクチャ、および任意のタイプの知られている、または将来知られる、ブロック、ファイル、およびオブジェクトを含むデータ構造を利用して実施され得ることが、理解されるべきである。図10は1つの実装のみの例示を提供するものであり、異なる実施形態が実装され得る環境に関していかなる限定も示唆するものではない。図示された環境に多くの修正が、請求項によって記載された本発明の範囲から逸脱することなく、当業者によって行われ得る。
【0140】
段階1002において、マルチテナントプログラム201は、ブロックの複製を指しているテナントの数を識別する。一実施形態において、単一のテナントが、複数のボリュームにわたって重複排除に不適格と指定されたボリュームにブロックの複製を書き込んだ場合、そのテナントのみがブロックの複製を指す。例えば、テナント214が仮想ディスク266上の共有不可能ボリューム276にブロックLを書き込む場合、ブロックLは、仮想ディスク266に対応する物理ストレージ230上の位置に格納されるであろうし、テナント214は、ブロックLのこの複製を指すであろう。しかしながら、テナント216が第2の、ブロックLの重複コピーを仮想ディスク266上の共有可能ボリューム277に書き込んだ場合でさえも、ブロックLの重複コピーは、仮想ディスク277に対応する物理ストレージ230上の位置に格納されるであろうし、テナント216は、ブロックLの重複コピーを指すであろう。
【0141】
一実施形態において、2またはそれ以上のテナントが、複数のボリュームにわたって重複排除に適格と指定されたボリュームに、ブロックの同じ複製を書き込んだ場合、2またはそれ以上のテナントは同じブロックを指す。例えば、テナント210が、仮想ディスク261上に作成された共有可能ボリューム271にブロックMを書き込む場合、ブロックMは、仮想ディスク261に対応する物理ストレージ230上の位置に格納されるであろう。この点において、テナント210のみがブロックMを指すであろう。しかしながら、テナント212もまた、仮想ディスク263上の共有可能ボリューム273へブロックMを書き込む場合、ブロックMは、重複コピーとして識別されるであろうし、そのため、仮想ディスク263に対応する物理ストレージ230上の位置に格納されないであろう。むしろマルチテナントストレージプログラム201は、ブロックMの重複コピーを、以前にテナント210によって書き込まれて、仮想ディスク261に対応する物理ストレージ230上の位置に格納された、ブロックMのオリジナルの複製を指すレファレンスに置き換えるであろう。
【0142】
段階1004において、マルチテナントプログラム201は、格納されたブロックに関連付けられたテナントストレージコストを判断する。一実施形態において、テナントストレージコストは、ブロックを指しているテナントの数で除算した、格納されたブロックごとの固定プライスに、少なくとも部分的に基づいて計算される。例えば、格納されたブロックごとのプライスがXであり、4つのテナントがブロックNを指している場合、ブロックNに指しているテナントに関するストレージコストはX/4であろう。
【0143】
決定ステップ1006において、マルチテナントプログラム201は、ブロックを指しているテナントの数が変更されたことを判断する。一実施形態において、ブロックを指しているテナントの数の変更は、ブロック上で実行される変更データ操作の識別に基づいて判断される。一実施形態において、変更データ操作は、INSERT、UPDATE、またはDELETE操作、またはそれらの任意の同等の動作などの、データを修正する任意の動作である。例えば、格納されたブロックごとのコストがXであり、テナント210-216がブロックOの同じ複製を指している場合、各テナントに関するストレージコストはX/4であろう。しかしながら、テナント216がブロックOを削除するためにDELETE操作を発する場合、テナント210-214は、ブロックOの複製を指したままであろうし、テナント216はブロックOの複製をもはや指していないであろう。それに応じて、この点から進めると、テナント216はブロックOの複製をもはや指していないであろうから、テナント210-214の各々に関する新しいストレージコストはX/3であろうし、テナント216に関する新しいストレージコストはゼロであろう。
【0144】
別の例において、格納されたブロックごとのコストがXであり、テナント210-216がブロックPの同じ複製を指す場合、各テナントに関するストレージコストはX/4であろう。しかしながら、テナント210がブロックPを更新するように更新動作を発する場合、テナント212-216は、ブロックPの以前のバージョンを指したままであろうし、テナント210は今やブロックPの更新バージョンを指すであろう。それに応じて、この点から進めると、ブロックPの格納のためのテナント212-216の各々に関する新しいストレージコストはX/3であろうし、ブロックPの更新バージョンの格納のためのテナント210に関する新しいストレージコストはXであろう。
【0145】
一実施形態において、ブロックを指しているテナントの数の変更は、複数のテナントにわたって重複排除に適格と指定されたボリュームに以前に書き込まれた、および、物理ストレージ230などのマルチテナント環境(図2に示される)のストレージエリアに現在書き込まれた、ブロックの複製を書き込むための書き込み操作/要求を識別することに基づいて判断される。例えば、テナント210-214がブロックQを指している場合、各テナントに関するストレージコストは、X/3であろう。しかしながら、テナント216が仮想ディスク266上の共有可能ボリューム277にブロックQを書き込むための書き込み操作/要求を発する場合、マルチテナントストレージプログラム201は、共有可能ボリューム277に書き込まれたブロックQの複製を、物理ストレージ230に格納されたブロックQの複製を指すレファレンスによって置き換えるであろう。それに応じて、この点から進めると、ブロックQの単一の複製を格納するためのテナント210-216に関する新しいストレージコストは、X/4であろう。
【0146】
ブロックを指しているテナントの数が変更されたとの判断に応答して(決定ステップ1006の「いいえ」分岐)、マルチテナントストレージプログラム201は決定ステップ1006へ戻る。ブロックを指しているテナントの数が変更されたとの判断に応答して(決定ステップ1006の「はい」分岐)、マルチテナントプログラム201は段階1008に進む。
【0147】
段階1008において、マルチテナントストレージプログラム201は、ブロックを指しているテナントに関する、ブロックごとのテナントストレージコストを動的に調整する。一実施形態において、テナントストレージコストは、ブロックを指しているテナントの新しい数によって除算されたブロックごとの固定プライスに基づいて、動的に調整される。例えば、テナント210が以前にブロックOを指しており、テナント216が、ブロックOを削除するようにDELETE操作/要求を発し、格納されたブロックごとのプライスはXである場合、ブロックOを格納するためのテナント216に関する新しいテナントストレージコストは、ゼロであろう。しかしながら、テナント210-216に関するテナントストレージコストが、以前にテナント210-216がブロックOを指していたときにはX/4であった場合、テナント210-214に関する新しいテナントストレージコストはX/3であろう。
【0148】
段階1010において、ブロックを指しているテナントの数の変更前に、マルチテナントストレージプログラム201が、ブロックを指しているそれらのテナントに関する合計のテナントストレージコストを生成する。一実施形態において、格納されたブロックに関する合計のテナントストレージコストは、段階1004において計算されたように、テナントがブロックを指す時間の量に、ブロックを指しているテナントの所定数に関するブロックのストレージコストを乗じたものに基づく。本発明の様々な実施形態において、マルチテナントストレージプログラム201は、任意の予め指定された時間レート(すなわち、格納されたブロックごとのストレージコストは、秒、分、時間、日、週、月、または年によって計算され得る)で合計のストレージコストを計算し得ることが理解されるべきである。例えば、格納されたブロックごとのプライスが毎分Xであり、単一のテナントが10分の間ブロックAを指す場合、このテナントは10Xをチャージされるであろう。しかしながら、5つのテナントが10分の間ブロックAの同じ複製を指す場合、各テナントは2X(10X/5のテナント)をチャージされるであろう。
【0149】
別の例において、格納されたブロックごとのプライスが時間ごとにYであり、2つのテナントが24時間の間ブロックBの同じ複製を指す場合、各テナントは12Y(24Y/2つのテナント)をチャージされるであろう。しかしながら、第1テナントが24時間の間ブロックBの複製を指し、第2テナントが6時間のみの間ブロックBの同じ複製を指した場合、第1テナントは、ブロックBの18時間の格納のための18Y、および、第1テナントおよび第2テナントの両方がブロックBの同じ複製を指していた6時間のための3Y(6Y/ブロックBを指している2つのテナント)をチャージされるであろう。同様に、第2テナントもまた、第1テナントと第2テナントの両方がブロックBの同じ複製を指していた6時間のための3Y(6Y/ブロックBを指している2つのテナント)をチャージされるであろう。
【0150】
図11は、概して1100で指定され、本発明の少なくとも1つの実施形態による、マルチテナントストレージプログラム201を実行するために適切な、コンピューティングデバイスのコンポーネントを表すブロック図である。コンピューティングデバイス1100は、1または複数のプロセッサ1104(1または複数のコンピュータプロセッサを含む)、通信ファブリック1102、RAM1116およびキャッシュ1118を含むメモリ1106、永続ストレージ1108、通信ユニット1112、I/Oインタフェース1114、ディスプレイ1122、および外部デバイス1120を含む。図11は、1つの実施形態の例示のみを提供し、異なる実施形態が実装され得る環境に関していかなる限定も示唆するものではないことが理解されるべきである。図示された環境に対して多くの修正が行われてもよい。
【0151】
示されるように、コンピューティングデバイス1100は通信ファブリック1102にわたって動作し、コンピュータプロセッサ1104、メモリ1106、永続ストレージ1108、通信ユニット1112、および入力/出力(I/O)インタフェース1114の間の通信を提供する。通信ファブリック1102は、データを通すのに適切な任意のアーキテクチャで実装され得るか、またはプロセッサ1104(例えば、マイクロプロセッサ、通信プロセッサ、およびネットワークプロセッサ)、メモリ1106、外部デバイス1120、およびシステム内の任意の他のハードウェアコンポーネント間の情報を制御し得る。例えば、通信ファブリック1102は、1または複数のバスを用いて実装され得る。
【0152】
メモリ1106および永続ストレージ1108は、コンピュータ可読記憶媒体である。示される実施形態において、メモリ1106は、ランダムアクセスメモリ(RAM)1116およびキャッシュ1118を含む。一般的に、メモリ1106は、任意の適切な揮発性または不揮発性の1または複数のコンピュータ可読記憶媒体を含み得る。
【0153】
マルチテナントストレージプログラム201に関するプログラム命令は、永続ストレージ1108に格納され得、または、より一般的には、メモリ1106の1または複数のメモリを介するそれぞれのコンピュータプロセッサ1104のうちの1または複数による実行のための、任意のコンピュータ可読記憶媒体に格納され得る。永続ストレージ1108は、磁気ハードディスクドライブ、ソリッドステートディスクドライブ、半導体ストレージデバイス、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリ、またはプログラム命令またはデジタル情報を格納することが可能な任意の他のコンピュータ可読記憶媒体であり得る。
【0154】
永続ストレージ1108によって使用される媒体もまた着脱可能であり得る。例えば、着脱可能なハードドライブが永続ストレージ1108に使用され得る。他の例は、永続ストレージ1108の一部でもある別のコンピュータ可読記憶媒体に転送するためにドライブに挿入される光ディスクおよび磁気ディスク、サムドライブ、およびスマートカードを含む。
【0155】
通信ユニット1112は、これらの例において、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット1112は、1または複数のネットワークインタフェースカードを含み得る。通信ユニット1112は、物理通信リンクおよび無線通信リンクのいずれかまたは両方の使用を通じて通信を提供し得る。本発明のいくつかの実施形態の文脈において、各種入力データの情報源は、入力データが受信されて、出力が同様に通信ユニット1112を介して伝送され得るように、コンピューティングデバイス1100に対して物理的に遠隔であってよい。
【0156】
I/Oインタフェース1114は、コンピューティングデバイス1100と併せて動作し得る他のデバイスとの、データの入力および出力を可能にする。例えば、I/Oインタフェース1114は、キーボード、キーパッド、タッチスクリーン、または他の適切な入力デバイスとして存在し得る外部デバイス1120への接続を提供し得る。外部デバイス1120はまた、ポータブルコンピュータ可読記憶媒体、例えばサムドライブ、ポータブル光または磁気ディスク、およびメモリカードも含み得る。本発明の実施形態を実施するのに使用されるソフトウェアおよびデータは、そのようなポータブルコンピュータ可読記憶媒体に格納することができ、I/Oインタフェース1114を介して永続ストレージ1108にロードし得る。I/Oインタフェース1114はまた、同様にディスプレイ1122に接続することもできる。ディスプレイ1022は、データをユーザに表示するメカニズムを提供し、例えば、コンピュータモニタであり得る。
【0157】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載される教示内容の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、または、今後開発される他の任意のタイプのコンピューティング環境と併せて実装することが可能である。
【0158】
クラウドコンピューティングは、管理の労力またはサービスのプロバイダとの対話を最小限に抑えながら迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールに対する便利なオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルである。本クラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含み得る。
【0159】
特性は以下のとおりである。
オンデマンドセルフサービス:クラウドコンシューマは、サービスプロバイダとの人的対話を要することなく、必要に応じて自動的に、サーバ時間およびネットワークストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
幅広いネットワークアクセス:能力は、ネットワークを介して利用可能であり、また、異種混交のシンクライアントプラットフォームまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、およびPDA(登録商標))による使用を促進する標準的なメカニズムを通じてアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数のコンシューマにサービス提供するようにプールされており、様々な物理リソースおよび仮想リソースが需要に沿って動的に割り当ておよび再割り当てされる。コンシューマは一般に提供されたリソースの正確な位置に対する制御または知識を有していないが、より高いレベルの抽象化(例えば、国、州、またはデータセンタ)において位置を指定することが可能である場合があるという点で、位置の独立性がある。
迅速な拡張性:能力は迅速に且つ伸縮自在に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトすることも、迅速にリリースして素早くスケールインすることもできる。コンシューマにとって、多くの場合、プロビジョニングのために利用可能な能力は無制限であるように見え、任意の時点において任意の量で購入され得る。
計測サービス:クラウドシステムは、ある抽象化レベルでサービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザアカウント)に適した計測能力を活用することにより、リソースの使用を自動的に制御および最適化する。リソース使用量をモニタリング、制御および報告することができ、それにより、利用されるサービスのプロバイダおよびコンシューマの両方に透明性が提供される。
【0160】
サービスモデルは以下のとおりである。
サービスとしてのソフトウェア(SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で実行しているプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインタフェースを通じて様々なクライアントデバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を考え得る例外として、ネットワーク、サーバ、オペレーティングシステム、ストレージまたは更には個々のアプリケーション能力を含む、基礎をなすクラウドインフラストラクチャを管理または制御しない。
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションをクラウドインフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、またはストレージを含む、基礎をなすクラウドインフラストラクチャを管理または制御しないが、展開されたアプリケーション、および場合によってはアプリケーションホスティング環境構成に対して制御を有する。
サービスとしてのインフラストラクチャ(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースをプロビジョニングすることであり、コンシューマは、オペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアを展開し、実行させることが可能である。コンシューマは、基礎をなすクラウドインフラストラクチャを管理または制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対する制御を有するとともに、場合によっては選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)に対する限定的な制御を有する。
【0161】
展開モデルは以下のとおりである。
プライベートクラウド:クラウドインフラストラクチャは、組織のためだけに運用される。それは、組織またはサードパーティによって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
コミュニティクラウド:クラウドインフラストラクチャは、複数の組織により共有されており、共有の関心事(例えば、ミッション、セキュリティ要件、ポリシ、および法令順守に関わる考慮事項)を有する特定のコミュニティをサポートする。それは、当該組織またはサードパーティによって管理されてよく、オンプレミスまたはオフプレミスで存在し得る。
パブリッククラウド:クラウドインフラストラクチャは、一般大衆または大規模な業界団体にとって利用可能になり、クラウドサービスを販売する組織により所有される。
ハイブリッドクラウド:このクラウドインフラストラクチャは、2またはそれより多くのクラウド(プライベート、コミュニティ、またはパブリック)の複合体であり、これは、一意的なエンティティのままであるが、データおよびアプリケーションのポータビリティ(例えば、クラウド間の負荷分散のためのクラウドバースト)を可能にする標準化された技術または独自技術によって共に結合される。
【0162】
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向型である。クラウドコンピューティングの中核には、相互接続されたノードのネットワークを含むインフラストラクチャが存在する。
【0163】
図12は、本発明の少なくとも1つの実施形態によるクラウドコンピューティング環境50を示すブロック図である。示されるように、クラウドコンピューティング環境50は、例えば、パーソナルデジタルアシスタント(PDA)または携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、および/または、自動車コンピュータシステム54Nなど、クラウドコンシューマによって使用されるローカルコンピューティングデバイスが通信し得る1または複数のクラウドコンピューティングノード10を含む。ノード10は、互いに通信し得る。それらは、本明細書の上記で説明されたようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、またはハイブリッドクラウド、またはこれらの組み合わせなど、1または複数のネットワーク内で物理的にまたは仮想的にグループ化され得る(図示しない)。これにより、クラウドコンピューティング環境50は、クラウドコンシューマがローカルコンピューティングデバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、および/またはソフトウェアをサービスとして提供することが可能となる。図12に示すコンピューティングデバイス54A-54Nのタイプは、例示のみを意図していること、コンピューティングノード10およびクラウドコンピューティング環境50は、ネットワークおよび/またはネットワークアドレス可能接続の任意のタイプを通じて、コンピュータ化デバイスの任意のタイプと(例えば、ウェブブラウザを使用して)通信してもよいことが理解される。
【0164】
図13は、本発明の少なくとも1つの実施形態による、図12に示されたクラウドコンピューティング環境50によって提供された関数抽象化モデル層のセットを示すブロック図である。図13に示す、コンポーネント、層、機能は例示のみを意図しており、本発明の実施形態がこれらに限定されないことが先に理解されるべきである。図示されるように、以下の層および対応する機能が提供される。
【0165】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、RISC(縮小命令セットコンピュータ)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、ストレージデバイス65、およびネットワークおよびネットワーキングコンポーネント66が含まれている。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0166】
仮想化層70は、以下、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、および仮想クライアント75である、仮想エンティティの例が提供され得る抽象化層を提供する。
【0167】
1つの例において、管理層80は、以下で説明される機能を提供し得る。リソースプロビジョニング81では、クラウドコンピューティング環境内でタスクを実行するのに利用されるコンピューティングリソースおよび他のリソースの動的調達を提供する。計測およびプライス設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス作成を提供する。1つの例において、これらのリソースは、アプリケーションソフトウェアライセンスを含み得る。セキュリティは、クラウドコンシューマおよびタスクのアイデンティティ検証、並びに、データおよび他のリソースの保護を提供する。ユーザポータル83は、コンシューマおよびシステム管理者のために、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、必要なサービスレベルに適合するように、クラウドコンピューティングリソースの割り当ておよび管理を提供する。サービスレベルアグリーメント(SLA)計画および履行85は、SLAに従って将来の要件が予測されるクラウドコンピューティングリソースの事前準備および調達を提供する。
【0168】
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、取引処理95、および選択的データ重複96を含む。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【手続補正書】
【提出日】2024-01-11
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータでタグ付けすることに少なくとも部分的に基づいて、阻止する段階;および、
前記第1パラメータにタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記第1ストレージ領域に書き込まれるべきブロックを、前記ブロックをハッシュする前に修正する段階
を備える、マルチテナント環境における選択的データ重複排除のためのコンピュータ実装方法。
【請求項2】
前記ブロックを修正する段階は、前記第1テナントに関連付けられたテナント識別子を前記ブロックと連結する段階を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第1テナントに関連付けられた前記テナント識別子の前記ブロックへの前記連結に基づいて前記ブロックに関するハッシュ値を生成する段階
をさらに含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記ブロックを修正する段階は、前記ブロックを暗号化する段階を含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記暗号化されたブロックに基づいて前記ブロックに関するハッシュ値を生成する段階をさらに含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記第1テナントに関連付けられた前記第1ストレージ領域をタグ付けする段階は、前記第1ストレージ領域から作成された仮想ディスク上のボリュームを前記第1パラメータでタグ付けする段階をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記第1パラメータは、前記仮想ディスク上の前記ボリュームに書き込まれたブロックが、前記マルチテナント環境における複数のテナントにわたる重複排除に不適格であることを示す、請求項6に記載のコンピュータ実装方法。
【請求項8】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域は、共有ストレージプールの一部である、請求項1から7のいずれか一項に記載のコンピュータ実装方法。
【請求項9】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域は、個別のストレージプールである、請求項1から7のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
第1テナントに関連付けされた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータでタグ付けすることに少なくとも部分的に基づいて、可能にする段階;および、
前記第1パラメータにタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記ブロックをハッシュする前に、前記第1ストレージ領域に書き込まれるべきブロックの修正を阻止する段階
を備える、マルチテナント環境における選択的データ重複排除のためのコンピュータ実装方法。
【請求項11】
前記ブロックの修正を阻止する段階は、ストレージコントローラが前記第1テナントに関連付けられたテナント識別子を前記ブロックと連結することを阻止する段階を含む、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記ブロックの修正を阻止する段階は、ストレージコントローラが前記ブロックを暗号化することを阻止する段階を含む、請求項10に記載のコンピュータ実装方法。
【請求項13】
前記ブロックに含まれるデータに基づいて前記ブロックに関するハッシュ値を生成する段階
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項14】
前記第1テナントと関連付けられた前記第1ストレージ領域をタグ付けする段階は、前記第1ストレージ領域から作成された仮想ディスク上のボリュームを前記第1パラメータでタグ付けする段階をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項15】
前記第1パラメータが、前記仮想ディスク上の前記ボリュームに書き込まれたブロックが、前記マルチテナント環境における複数のテナントにわたって重複排除に適格であることを示す、請求項14に記載のコンピュータ実装方法。
【請求項16】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域が、共有ストレージプールの一部である、請求項10から15のいずれか一項に記載のコンピュータ実装方法。
【請求項17】
前記第1テナントに関連付けられた前記第1ストレージ領域、および、前記他のテナントに関連付けられた前記他のストレージ領域が、個別のストレージプールである、請求項10から15のいずれか一項に記載のコンピュータ実装方法。
【請求項18】
コンピュータプログラムが、プログラム命令を含み、前記プログラム命令は、
第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータとタグ付けすることに少なくとも部分的に基づいて、阻止する命令;および、
前記第1パラメータにタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記ブロックをハッシュする前に前記第1ストレージ領域に書き込まれるべきブロックを修正する命令、
を含む、マルチテナント環境における選択的データ重複排除のためのコンピュータプログラム。
【請求項19】
1または複数のコンピュータプロセッサ;
1または複数のコンピュータ可読記憶媒体;および
コンピュータプログラム命令を含み、前記コンピュータプログラム命令は、
前記1または複数のコンピュータプロセッサによる実行のために前記1または複数のコンピュータ可読記憶媒体上に格納され、前記コンピュータプログラム命令は、
第1テナントに関連付けられた第1ストレージ領域に書き込まれたブロック、および、他のテナントに関連付けられた他のストレージ領域に書き込まれた前記ブロックの冗長な複製のデータ重複排除を、前記第1テナントに関連付けられた前記第1ストレージ領域を第1パラメータとタグ付けすることに少なくとも部分的に基づいて、阻止する命令;および、
前記第1パラメータとタグ付けされた前記第1ストレージ領域を対象にした書き込み動作の検出に応答して、
前記ブロックをハッシュする前に前記第1ストレージ領域に書き込まれるべきブロックを修正する命令、
を含む、マルチテナント環境における選択的データ重複排除のためのコンピュータシステム。
【請求項20】
前記ブロックを修正する前記命令はさらに、前記第1テナントと関連付けられるテナント識別子を前記ブロックと連結する命令を含む、請求項19に記載のコンピュータシステム。
【請求項21】
前記第1テナントに関連付けられた前記テナント識別子の前記ブロックへの前記連結に基づいて、前記ブロックに関するハッシュ値を生成する命令をさらに含む、
請求項20に記載のコンピュータシステム。
【請求項22】
前記ブロックを修正する前記命令はさらに、前記ブロックを暗号化する命令を含む、請求項19に記載のコンピュータシステム。
【請求項23】
前記暗号化されたブロックに基づいて前記ブロックに関するハッシュ値を生成する命令をさらに含む、
請求項22に記載のコンピュータシステム。
【請求項24】
前記第1テナントに関連付けられた前記第1ストレージ領域を前記タグ付けする命令はさらに、前記第1ストレージ領域から作成された仮想ディスク上のボリュームを前記第1パラメータでタグ付けする命令を含む、請求項19から23のいずれか一項に記載のコンピュータシステム。
【請求項25】
前記第1パラメータは、前記仮想ディスク上の前記ボリュームに書き込まれたブロックが、前記マルチテナント環境における複数のテナントにわたる重複排除に不適格であることを示す、請求項24に記載のコンピュータシステム。
【国際調査報告】