(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-15
(54)【発明の名称】指紋に基づくデータアドレスを使用するキャッシュインデクシング
(51)【国際特許分類】
G06F 16/172 20190101AFI20240207BHJP
G06F 16/174 20190101ALI20240207BHJP
G06F 16/22 20190101ALI20240207BHJP
【FI】
G06F16/172
G06F16/174
G06F16/22
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023544758
(86)(22)【出願日】2022-02-02
(85)【翻訳文提出日】2023-07-25
(86)【国際出願番号】 EP2022052388
(87)【国際公開番号】W WO2022175080
(87)【国際公開日】2022-08-25
(32)【優先日】2021-02-22
(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)【復代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】サンダース、リー、ジェイソン
(72)【発明者】
【氏名】サッソン、ベン
(72)【発明者】
【氏名】ハッチソン、ゴードン、ダグラス
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175AA02
5B175FB03
(57)【要約】
キャッシュされたデータのデータ指紋に基づいてキャッシュストレージシステム内のデータアドレスをインデクシングするキャッシュストレージシステムインデクシングシステムが提供され、データ指紋は、キャッシュストレージシステム内のデータの重複排除を参照するために使用される重複排除指紋機能によって生成される。キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用すること、または読み取り操作の重複排除メタデータにアクセスすることのいずれかによって、データ操作のデータに対するデータ指紋を取得することと、データのデータ指紋に基づくアドレススキーマを有するキャッシュストレージシステムへのインデクシングサービスを使用することと、を含む。
【特許請求の範囲】
【請求項1】
キャッシュストレージシステムインデクシングのためのコンピュータ実装方法であって、前記コンピュータ実装方法は、
1または複数のコンピュータプロセッサによって、キャッシュされたデータのデータ指紋に基づいてキャッシュストレージシステム内のデータアドレスをインデクシングすることであって、前記データ指紋は、前記キャッシュストレージシステム内のデータの重複排除を参照するために使用される重複排除指紋機能によって生成される、インデクシングすること
を含む、コンピュータ実装方法。
【請求項2】
前記データアドレスをインデクシングすることは、前記キャッシュストレージシステムのキャッシュアドレス空間内のキャッシュアドレスを記憶する配列への参照として、前記データ指紋のサブセットに基づく、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記データ指紋は、異なるアドレスエイリアスを異なるソフトウェア論理レイヤから前記重複排除データ指紋にマッピングする重複排除メタデータからの読み取り操作に対して取得される、請求項1または請求項2に記載のコンピュータ実装方法。
【請求項4】
前記データ指紋は、異なるアドレスエイリアスを異なるクライアントドメインから前記重複排除データ指紋にマッピングする重複排除メタデータからの読み取り操作に対して取得される、請求項1または請求項2に記載のコンピュータ実装方法。
【請求項5】
前記キャッシュストレージシステムは、ストレージサブシステムの複数のレイヤにおける読み取り/書き込み操作のための単一の均一キャッシュであり、前記インデクシングは、前記複数のレイヤにわたって均一なインデクシングを提供する、前記請求項に記載のコンピュータ実装方法。
【請求項6】
前記キャッシュストレージシステムは、前記重複排除指紋機能によって生成された前記データ指紋に基づくシャーディングを伴うシャード化されたキャッシュである、請求項1~4のいずれかに記載のコンピュータ実装方法。
【請求項7】
キャッシュストレージシステムに対するデータ操作のためのコンピュータ実装方法であって、
1または複数のコンピュータプロセッサによって、前記キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用することによって、データ操作のデータに対する前記データ指紋を取得することと、
前記書き込み操作の前記データの前記データ指紋に基づくアドレススキーマを有する前記キャッシュストレージシステムへのインデクシングサービスを使用することと、
を含む、コンピュータ実装方法。
【請求項8】
前記インデクシングサービスは、データ指紋のサブセットに基づく参照を、前記キャッシュストレージシステムのキャッシュアドレス空間内のキャッシュアドレスを記憶する配列へのアドレスとして使用する、
請求項7に記載のコンピュータ実装方法。
【請求項9】
前記データ操作は書き込み操作であり、前記方法は、
1または複数のコンピュータプロセッサによって、データ書き込み操作を受信することと、
1または複数のコンピュータプロセッサによって、前記キャッシュストレージシステム内のデータの重複排除に使用される指紋機能を使用して、前記データ書き込み操作のデータのデータ指紋を計算することと、
1または複数のコンピュータプロセッサによって、前記データ書き込み操作の前記データに対するキャッシュエントリを作成することと、
前記キャッシュストレージシステム内の前記キャッシュエントリをアドレス指定するために、前記データ指紋を使用することと、
をさらに含む、請求項7に記載のコンピュータ実装方法。
【請求項10】
前記データ操作は読み取り操作であり、前記方法は、
1または複数のコンピュータプロセッサによって、データ読み取り操作の前記データに対する論理アドレスを有する前記データ読み取り操作を受信することと、
1または複数のコンピュータプロセッサによって、前記論理アドレスを参照することによって重複排除メタデータから前記データ読み取り操作のための前記データのデータ指紋を取得することと、
前記データ読み取り操作の前記データを読み取ろうとする前記キャッシュストレージシステム内のデータをアドレス指定するために、前記データ指紋を使用することと、
をさらに含む、請求項7に記載の方法。
【請求項11】
前記データ指紋を取得することは、前記論理アドレスを使用してサービスすることができなかったので、読み取り操作が重複排除レイヤに降りてくるとき、前記キャッシュストレージシステムの元のアドレス指定スキームを使用してキャッシュミスの後に実施される、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記データ指紋を取得すること、およびデータをアドレス指定するために前記データ指紋を使用することは、元のアドレス指定スキームの前に実施される、請求項10に記載のコンピュータ実装方法。
【請求項13】
1または複数のコンピュータプロセッサによって、前記データ読み取り操作の前記データをアドレス指定するために前記データ指紋を使用する前記キャッシュストレージシステムの偽のヒットを可能にすることと、
1または複数のコンピュータプロセッサによって、前記データ指紋を検索されたデータの前記データ指紋と照合することと、
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項14】
1または複数のコンピュータプロセッサによって、キャッシュアドレスを記憶する配列へのアドレスとして、前記データ指紋のサブセットを使用することと、
1または複数のコンピュータプロセッサによって、前記データ指紋を検索されたデータの前記データ指紋と照合することと、
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項15】
1または複数のコンピュータプロセッサによって、前記データ指紋アドレス指定を使用することによって、データソースへの複数の参照を発見することと、
1または複数のコンピュータプロセッサによって、データソースへの前記参照を統一し、それによって前記重複排除を増加させることと、
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項16】
前記データ指紋を取得すること、および前記データをアドレス指定するために前記データ指紋を使用することは、元のアドレス指定スキームと並行して実施される、請求項10に記載のコンピュータ実装方法。
【請求項17】
1または複数のコンピュータプロセッサと、
1または複数のコンピュータ可読記憶媒体と、
前記1または複数のコンピュータプロセッサの少なくとも1つによる実行のために前記1または複数のコンピュータ可読記憶媒体に記憶されるプログラム命令と、を含み、前記プログラム命令は、
キャッシュアドレスを共有キャッシュアドレス空間に記憶する配列を作成するプログラム命令であって、前記配列は、キャッシュされたデータのデータ指紋に基づく参照を有し、前記データ指紋は、キャッシュストレージシステムにおけるデータの重複排除に使用される重複排除指紋機能によって生成されるプログラム命令
を含む、コンピュータシステム。
【請求項18】
前記1または複数のコンピュータプロセッサの少なくとも1つによる実行のために前記1または複数のコンピュータ可読記憶媒体に記憶され、
前記キャッシュストレージシステムに対する読み取りおよび書き込み操作を実施する際に、重複排除データ指紋を取得することであって、
重複排除メタデータから読み取り操作のためのデータ指紋を取得することであって、前記重複排除メタデータは、アドレスエイリアスを異なるソフトウェア論理レイヤまたは異なるクライアントドメインから前記重複排除データ指紋にマッピングする、取得することと、
書き込み操作のデータに対して重複排除指紋機能を適用することと、
を含む、取得することを実行するプログラム命令の1または複数をさらに含む、請求項17に記載のコンピュータシステム。
【請求項19】
前記コンピュータシステムは、ストレージサブシステムの複数のレイヤにおける読み取り/書き込み操作のための単一の均一キャッシュを含み、前記コンピュータシステムは、前記複数のレイヤにわたって均一なインデクシングを提供する、
請求項17に記載のコンピュータシステム。
【請求項20】
前記1または複数のコンピュータプロセッサの少なくとも1つによる実行のために前記1または複数のコンピュータ可読記憶媒体に記憶され、
前記重複排除指紋機能によって生成された前記データ指紋に基づくシャーディングを伴うシャード化されたキャッシュを作成すること
を実行するプログラム命令の1または複数をさらに含む、請求項17に記載のコンピュータシステム。
【請求項21】
キャッシュストレージシステムインデクシングシステムであって、
前記キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用すること、および読み取り操作に対して重複排除メタデータにアクセスすることによって、データ操作のデータに対する前記データ指紋を取得するためのデータ指紋取得コンポーネントと、
前記データ操作の前記データの前記データ指紋に基づく参照を使用することによって、前記キャッシュストレージシステムに対する前記データ操作の前記データについてのキャッシュアドレスを取得するための配列ルックアップコンポーネントと、
を含む、キャッシュストレージシステムインデクシングシステム。
【請求項22】
データ書き込み操作を受信することと、
前記キャッシュストレージシステム内のデータの重複排除に使用される指紋機能を使用して、前記データ書き込み操作のデータのデータ指紋を計算することと、
前記データ書き込み操作の前記データに対するキャッシュエントリを作成することと、
前記キャッシュストレージシステム内の前記キャッシュエントリをアドレス指定するために、前記データ指紋を使用することと、
を行うための書き込み操作コンポーネントと、
データ読み取り操作のデータに対する論理アドレスを有する前記データ読み取り操作を受信することと、
前記論理アドレスを参照することによって重複排除メタデータから前記データ読み取り操作の前記データのデータ指紋を取得することと、
前記キャッシュストレージシステム内の前記データ書き込み操作の前記データおよび前記データ読み取り操作の前記データをアドレス指定するために、前記データ指紋を使用することと、
を行うための読み取り操作コンポーネントと、
をさらに含む、請求項21に記載のキャッシュストレージシステムインデクシングシステム。
【請求項23】
前記データ指紋を検索されたデータの前記データ指紋と照合するためのヒット照合コンポーネント
をさらに含む、請求項21に記載のキャッシュストレージシステムインデクシングシステム。
【請求項24】
前記データ指紋アドレス指定を使用することによって、データソースへの複数の参照を発見することと、データソースへの前記参照を統一し、それによって前記重複排除を増加させることと、を行うための参照統一コンポーネント
をさらに含む、請求項21に記載のキャッシュストレージシステムインデクシングシステム。
【請求項25】
データ指紋アドレスをシャードキーとして使用してシャード化されたキャッシュストレージシステムであって、前記データ指紋アドレスは、前記キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用して取得されたデータ指紋に基づくアドレスである、キャッシュストレージシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュストレージに関し、より具体的には、データ指紋に基づくデータアドレスを使用したキャッシュインデクシングに関するものである。
【背景技術】
【0002】
キャッシュストレージは、高い性能を提供するために、データの読み取りおよび書き込みの操作に対応するためのデータを一時的に記憶するために使用される物理的なメモリ空間である。データは、ディスクストレージなどのバックエンドストレージへの仲介役として、以前の操作の結果としてキャッシュに記憶される。キャッシュからのデータアクセスはバックエンドストレージからのアクセスよりも速く、データはライトスルーまたはライトバック操作でバックエンドストレージに記憶されている間、キャッシュに記憶される。
【0003】
キャッシュシャーディングは、アイテム識別子から計算されるハッシュ関数に基づいて、分散キャッシュシステムのノードにデータアイテムを割り当てるための方法である。シャーディングは、キャッシュシステムを水平方向に拡張し、処理能力や記憶容量に対応させる。データアイテムのセットは、データアイテムの識別子に基づいて計算されたハッシュ関数の結果に基づいて、「シャード」にパーティショニングされる。各シャードは、クラスタのメンバー間でデータをパーティショニングするため、およびハッシュ関数を計算することによって所定のデータアイテムに責任を持つクラスタのメンバーを特定するために、キャッシュデバイスにマッピングされる。
【0004】
既知のキャッシュシャーディングで使用される識別子は、従来、インターネットプロトコルアドレスなどの顧客識別子またはホスト識別子、あるいは中央処理装置(CPU)またはCPUコア識別子などの他のリソース識別子である。この典型的な目的は、CPUなどの多くのリソースに作業負荷を分散できるようにすることである。特に、非常に少数の論理ボリュームが使用されているようなシナリオでは、単一の論理ボリュームが使用されているにもかかわらず、システムが利用可能なすべてのリソースを依然として利用し、単一のリソースでボトルネックになることはない。
【0005】
キャッシュ重複排除は、キャッシュ使用量とストレージ容量要件を削減するために、キャッシュに記憶されるデータブロックのコピーを削減するための既知の方法である。重複排除はブロックレベルで動作し、重複するデータブロックを削減し、他のデータブロックがマッピングされるソースデータブロックを記憶する。データがキャッシュに書き込まれると、重複排除サービスは受信ブロックをスキャンし、ハッシュ関数を使用して指紋を作成し、ハッシュストアインメモリデータ構造の形で重複排除メタデータに指紋を記憶する。100%のデータカバレッジを持つ大規模なキャッシュ重複排除は、必要となる重複排除メタデータのためのデータ構造のサイズとその検索にかかる時間のために、コストがかかる。
【0006】
従来のキャッシュへのルックアップは、キャッシュアドレスへの仮想アドレスまたは論理ブロックアドレス(LBA)マッピングを使用する。これは、データが特定の論理アドレスに対してキャッシュされ、アクセス可能であることを意味する。これにより、キャッシュへのアクセスは、ソフトウェアレイヤで定義された特定の論理アドレスおよびキャッシュされたデータにアクセスする単一のホストに限定される。
【0007】
現在の技術水準が示す問題は、従来のLBAアドレス指定では、読み取り/書き込みがストレージサブシステム内のさまざまなレイヤを通過する際に、キャッシュの複数のインスタンスが必要である。各レイヤは、それぞれ独自のインデックスを持つシステム内の異なるコンテキストを表す。このため、複数のキャッシュを管理するために、かなりの量のリソースと重複した労力が必要となる。
【発明の概要】
【0008】
本発明の一態様によれば、キャッシュされたデータのデータ指紋に基づいてキャッシュストレージシステム内のデータアドレスをインデクシングすることであって、データ指紋は、キャッシュストレージシステム内のデータの重複排除を参照するために使用される重複排除指紋機能によって生成される、インデクシングすることを含む、キャッシュストレージシステムインデクシング方法が提供される。
【0009】
データ片の重複排除指紋は、キャッシュサービスにデータを配置したコンテキストに依存しない、データセグメントをインデクシングする均一的な方法を提供し、読み取りを高速化するために、ストレージコントローラ内のストレージの異なるレイヤで使用されるすべての論理アドレス指定スキームにわたってキャッシュサービスを共有することを可能にする。本方法は、従来のアドレス指定されたキャッシュライトに関する既存の分離を維持しながら、より統一されたキャッシュサービスによる平均的な読み取りの高速化を実現する。
【0010】
データアドレスのインデクシングは、キャッシュストレージシステムのキャッシュアドレス空間内のキャッシュアドレスを記憶する配列への参照として、データ指紋のサブセットに基づくことができる。一実施形態では、データ指紋のサブセットは、配列のサイズを法とする定義されたバイト数のデータ指紋の絶対的な中間サブセットとして取得される。
【0011】
データ指紋は、異なるアドレスエイリアスを異なるソフトウェア論理レイヤまたは異なるクライアントドメインから重複排除データ指紋にマッピングする重複排除メタデータからの読み取り操作に対して取得される場合がある。キャッシュインデクシング方法は、元のキャッシュアドレス指定方法に加えて、またはその代わりとして使用することができる。
【0012】
キャッシュストレージシステムは、ストレージサブシステムの複数のレイヤにおける読み取り/書き込み操作のための単一の均一キャッシュであってよく、インデクシングは、複数のレイヤにわたって均一なインデクシングを提供する。
【0013】
キャッシュストレージシステムは、重複排除指紋機能によって生成されたデータ指紋に基づくシャーディングを伴うシャード化されたキャッシュであってよい。
【0014】
本発明の別の態様によれば、キャッシュストレージシステムに対するデータ操作のためのコンピュータ実装方法が提供され、かかる方法は、キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用すること、または読み取り操作の重複排除メタデータにアクセスすることのいずれかによって、データ操作のデータに対するデータ指紋を取得することと、データのデータ指紋に基づくアドレススキーマを有するキャッシュストレージシステムへのインデクシングサービスを使用することと、を含む。
【0015】
インデクシングサービスは、データ指紋のサブセットに基づく参照を、キャッシュストレージシステムのキャッシュアドレス空間内のキャッシュアドレスを記憶する配列へのアドレスとして使用することができる。
【0016】
データ操作が書き込み操作である場合、本方法は、データ書き込み操作を受信することと、キャッシュストレージシステム内のデータの重複排除に使用される指紋機能を使用して、書き込むべきデータのデータ指紋を計算することと、書き込みデータに対するキャッシュエントリを作成することと、キャッシュストレージシステム内のキャッシュエントリをアドレス指定するために、データ指紋を使用することと、を含み得る。
【0017】
データ操作が読み取り操作である場合、本方法は、データに対する論理アドレスを有するデータ読み取り操作を受信することと、論理アドレスを参照することによって重複排除メタデータから読み取るべきデータのデータ指紋を取得することと、データを読み取ろうとするキャッシュストレージシステム内のデータをアドレス指定するために、データ指紋を使用することと、を含み得る。
【0018】
データ指紋を取得することは、論理アドレスを使用してサービスすることができなかったので、読み取り操作が重複排除レイヤに降りてくるとき、キャッシュストレージシステムの元のアドレス指定スキームを使用してキャッシュミスの後に実施されてよい。データ指紋を取得すること、およびデータをアドレス指定するためにデータ指紋を使用することは、元のアドレス指定スキームの前に、または並行して実施されてよい。
【0019】
本方法は、データをアドレス指定するためにデータ指紋を使用するキャッシュストレージシステムの偽のヒットを可能にすることと、データ指紋を検索されたデータのデータ指紋と照合することと、を含み得る。
【0020】
本方法は、キャッシュアドレスを記憶する配列へのアドレスとして、データ指紋のサブセットを使用することと、データ指紋を検索されたデータのデータ指紋と照合することと、を含み得る。
【0021】
本方法はデータ指紋アドレス指定を使用することによって、データソースへの複数の参照を発見することと、データソースへの参照を統一し、それによって重複排除を増加させることと、をさらに含むことができる。
【0022】
読み取り操作がソフトウェアレイヤを通過する際、本方法は、同じデータセグメントを参照するためのアドレス変換の結果のアドレスエイリアスを記録することができ、アドレスエイリアスをデータ指紋と関連付けることができる。
【0023】
本発明の別の態様によれば、キャッシュアドレスを共有キャッシュアドレス空間に記憶する配列を含むキャッシュストレージシステムのインデクシングシステムを含むキャッシュストレージシステムが提供され、配列は、キャッシュされたデータのデータ指紋に基づく参照を有し、データ指紋は、キャッシュストレージシステムにおけるデータの重複排除に使用される重複排除指紋機能によって生成される。
【0024】
キャッシュストレージシステムのインデクシングシステムは、キャッシュストレージシステムに対する読み取りおよび書き込み操作を実施する際に、重複排除データ指紋を取得するためのデータ指紋取得コンポーネントを含み得る。データ指紋取得コンポーネントは、重複排除メタデータから読み取り操作のためのデータ指紋を取得するための読み取り操作コンポーネントであって、重複排除メタデータは、アドレスエイリアスを異なるソフトウェア論理レイヤまたは異なるクライアントドメインから重複排除データ指紋にマッピングする、読み取り操作コンポーネントと、書き込み操作のデータに対して重複排除指紋機能を適用するための書き込み操作コンポーネントと、を含み得る。
【0025】
キャッシュストレージシステムは、ストレージサブシステムの複数のレイヤにおける読み取り/書き込み操作のための単一の均一キャッシュを含むことがあり、キャッシュストレージシステムは、複数のレイヤにわたって均一なインデクシングを提供する。キャッシュストレージシステムは、重複排除指紋機能によって生成されたデータ指紋に基づくシャーディングを伴うシャード化されたキャッシュであってよい。
【0026】
本発明の別の態様によれば、キャッシュストレージシステムのインデクシングシステムが提供され、キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用すること、または読み取り操作に対して重複排除メタデータにアクセスすることのいずれかによって、データ操作のデータに対するデータ指紋を取得するためのデータ指紋取得コンポーネントと、データのデータ指紋に基づく参照を使用することによって、キャッシュストレージシステムに対するデータ操作のデータについてのキャッシュアドレスを取得するための配列ルックアップコンポーネントと、を含む。
【0027】
キャッシュストレージシステムのインデクシングシステムは、データ書き込み操作を受信することと、キャッシュストレージシステム内のデータの重複排除に使用される指紋機能を使用して、書き込むべきデータのデータ指紋を計算することと、書き込みデータに対するキャッシュエントリを作成することと、キャッシュストレージシステム内のキャッシュエントリをアドレス指定するために、データ指紋を使用することと、を行うための書き込み操作コンポーネントを含むことができる。
【0028】
キャッシュストレージシステムのインデクシングシステムは、データに対する論理アドレスを有するデータ読み取り操作を受信することと、論理アドレスを参照することによって重複排除メタデータから読み取るべきデータのデータ指紋を取得することと、データを読み取ろうとするキャッシュストレージシステム内のデータをアドレス指定するために、データ指紋を使用することと、を行うための読み取り操作コンポーネントを含むことができる。
【0029】
キャッシュストレージシステムのインデクシングシステムは、データ指紋を検索されたデータのデータ指紋と照合するためのヒット照合コンポーネントを含むことができる。
【0030】
キャッシュストレージシステムのインデクシングシステムは、データ指紋アドレス指定を使用することによって、データソースへの複数の参照を発見することと、データソースへの参照を統一し、それによって重複排除を増加させることと、を行うための参照統一コンポーネントを含む場合がある。
【0031】
本発明のさらなる態様によれば、データ指紋アドレスをシャードキーとして使用してシャード化されたキャッシュストレージシステムが提供され、データ指紋アドレスは、キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用して取得されたデータ指紋に基づくアドレスである。
【0032】
これには、システム内の様々なリソース(CPUコアなど)に指紋の責任を平等かつ公平に分配するという利点があり、平均して様々なリソースが指紋を平等に処理し、スキューのリスクが最小限になる。これはまた、エラーシナリオにおけるキャッシュのセグメント化にも役立つ。
【0033】
本発明のさらなる態様によれば、キャッシュストレージシステムをインデクシングするためのコンピュータプログラム製品が提供され、コンピュータプログラム製品は、プログラム命令をその中に実装したコンピュータ可読記憶媒体を含み、プログラム命令は、プロセッサによって実行可能であり、プロセッサに、キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用すること、または読み取り操作に対して重複排除メタデータにアクセスすることのいずれかによって、データ操作のデータに対するデータ指紋を取得することと、データのデータ指紋に基づくアドレススキーマを有するキャッシュストレージシステムへのインデクシングサービスを使用することと、を実行させる。
【0034】
コンピュータ可読記憶媒体は、非一時的なコンピュータ可読記憶媒体であってよく、コンピュータ可読プログラムコードは、処理回路によって実行可能であってよい。
【0035】
本発明とみなされる主題は、本明細書の結論部分で特に指摘され、明確に主張されている。本発明は、組織および操作方法の両方について、その目的、特徴、および利点とともに、添付の図面とともに読むと、以下の詳細な説明を参照することによって最もよく理解され得る。
【0036】
次に、本発明の好ましい実施形態を、例示のためにのみ、以下の図面を参照しながら説明する。
【図面の簡単な説明】
【0037】
【
図1A】本発明によるキャッシングインデクシングシステムを含むキャッシングシステムの模式図例の実施形態である。
【
図1B】本発明によるキャッシングインデクシングシステムを含むキャッシングシステムの模式図例の実施形態である。
【
図2A】本発明による使用されるソフトウェアレイヤアドレスを例示する概略図である。
【
図2B】本発明によるシステムの実装で使用されるクラスタ化ストレージコントローラの模式図である。
【
図3】本発明による書き込み操作の方法の一態様の実施形態の一例のフロー図である。
【
図4A】本発明による読み取り操作の方法の他の態様の実施形態の一例のフロー図である。
【
図4B】本発明による読み取り操作の方法の一態様の他の例示的な実施形態のフロー図である。
【
図5】本発明によるシステムの一実施形態例のブロック図である。
【
図6】本発明が実装され得るコンピュータシステムまたはクラウドサーバの一実施形態のブロック図である。
【
図7】本発明が実装され得るクラウドコンピューティング環境の模式図である。
【
図8】本発明が実装され得るクラウドコンピューティング環境の抽象化モデルレイヤの図である。
【0038】
図示の簡略化および明確化のために、図示された要素は必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法は、明確にするために他の要素に対して誇張されている場合がある。さらに、適切と考えられる場合には、対応するまたは類似する特徴を示すために、参照番号が図間で繰り返されることがある。
【発明を実施するための形態】
【0039】
データの重複排除参照に使用されるハッシュ関数によって生成されたデータ指紋に基づく統一キャッシュアドレススキームのためのインデクシング方法を提供する方法およびシステムが説明される。重複排除がストレージシステムにおいてますます一般的な機能になってきていることを考えると、重複排除メタデータを利用して複数のレイヤに対して単一の統一キャッシュを作成することは、キャッシュを単一のインスタンスに削減することによってストレージシステムを著しく最適化する。キャッシュのシャーディングは、重複排除指紋に基づくこともある。
【0040】
用語「重複排除指紋」は、データの重複排除に使用されるハッシュ関数から取得されるハッシュを指すために使用されるものである。これにより、重複排除ハッシュは、既知のキャッシュシャーディングで使用される識別子のハッシュと区別される。
【0041】
記載された方法とシステムは、異なるソフトウェア論理レイヤおよび異なるクライアントドメインからアドレス指定されたデータ、おそらく異なるアドレス指定スキームと名前空間を使用してアクセスされたデータを、共通の指紋関数に基づく統一キャッシュアドレススキームに結合するメカニズムを供給し利用するためにデータをキャッシュすることができる。書き込みに対しては計算され、読み取りに対しては重複排除メタデータから取得される重複排除指紋は、クライアントドメインを統一する共通のキャッシュサービスとして、キャッシュサービスのアドレス指定に使用される。キャッシュサービスは、重複排除指紋に基づいてシャードにパーティショニングされることがある。これは、重複排除指紋を用いたキャッシュインデクシングおよびアドレス指定と組み合わせて、または独立して使用することができる。
【0042】
重複排除は、よく知られた技術であり、重複排除メタデータを使用して記憶されたブロックを指し示すことによって、記憶されたデータブロックから重複を除去するために使用される。重複排除のプロセスは、ハッシュ関数を適用することによって、所定のデータブロックに対して一意のデジタル指紋または署名(しばしばハッシュと呼ばれる)を作成することから始まる。この指紋値は指紋データベースまたはハッシュストアに保存されるので、新しい受信データブロックに対して作成される指紋値と比較することができる。指紋値を比較することで、データブロックが一意であるか、または既に記憶されているデータブロックの複製であるかが判断される。重複排除メタデータは、重複排除指紋から記憶されたデータブロックのアドレスへのマッピングを提供する。重複排除指紋値は、記載されたデータキャッシュサービスのためのインデクシング方法およびシステムで使用される。
【0043】
記載された方法では、重複排除指紋を使用してキャッシュアドレスにマッピングし、そのデータがキャッシュに存在するかどうかを確認する。これは、キャッシュアドレスにマッピングされる仮想アドレスまたは論理ブロックアドレス(LBA)を使用する従来のルックアップとは別に、または代替または追加形態として使用することができる。
【0044】
キャッシュはまた、キャッシュパーティショニングの目的で、重複排除指紋によってシャード化されることもある。重複排除指紋に基づいてデータを異なるサブセットにパーティショニングし、これらを異なる論理的または物理的な場所で重複排除することにより、シャーディングデータはカバレッジおよびコストバランスを向上させる。例えば、キャッシュがバックエンドストレージコントローラによってパーティショニングされている場合、あるコントローラで障害が発生しても、他のキャッシュパーティショニングに影響を与えたりリソースを奪ったりすることはない。シャーディングにより、システム内の様々なリソース(例えば、CPUコア)間で指紋の責任を平等かつ公平に分配することができ、平均して様々なリソースが指紋を平等に処理し、スキューのリスクが最小限になる。
【0045】
インデクシング方法は、キャッシュを必要とする複数のユーザが同じサービスを共有できるように、キャッシュサービスが必要とされる任意のキャッシュ実装に使用することができる。彼らはすべてキャッシュを共有するので、ユーザはすべて、互いのデータから利益を得ることができる。
【0046】
これは、キャッシュサービスおよび重複排除技術が存在するあらゆる領域で実装することができる。これは、物理的なドライブ、ストレージコントローラ、あるいはホストサーバ自体に存在する可能性がある。
【0047】
記載された方法およびシステムは、キャッシュシャーディングにより、より多くのキャッシュユーザのデータをキャッシュ内で等しくまたはより関連性を持って組み合わせることによって、読み取りキャッシュのヒット率を改善する。これにより、読み取り操作で使用されるアドレスを使用して、最近、またはおそらく一度も読み取りまたは書き込みが行われていないデータに対して、読み取り「キャッシュヒット」を生成することができる。
【0048】
アドレス指定スキームは、独立して、または本来のアドレス指定スキームと並行して使用することができる。読み取り操作の元のアドレス指定スキームを使用してキャッシュミスが発生する場合、重複排除メタデータは、実際のユーザデータを読み取ることなく、データの記憶された重複排除指紋を解決するために使用され、その重複排除指紋は、次に統一キャッシュのアドレス指定に使用される。
【0049】
図1Aを参照すると、概略
図100は、キャッシュサービス120のためのキャッシュインデクシングシステム110の記載されたシステムの例示的な実施形態を示している。キャッシュサービス120は、シャード化されてもよく(140)、複数のキャッシュノード121~124を含んでもよい。
【0050】
記載された重複排除ベースのキャッシュインデクシングシステム110は、キャッシュサービス120の重複排除メタデータ150を参照し、キャッシュアドレス111の基礎として、および任意に、キャッシュサービス120のシャーディング130の基礎としても、読み込まれるまたは書き込まれるデータの重複排除指紋151を使用する。
【0051】
記載されたシステムおよび方法において、キャッシュサービス120は重複排除されていないことに留意されたい。キャッシュの重複排除は、別のサービスによって実施されてもよく、典型的な重複排除キャッシュは、書き込み操作中に重複排除データのソースアドレスをルックアップするためのインデクシング手段を有するであろう。このような重複排除サービスによって提供される重複排除メタデータ150は、記載されたシステムおよび方法によって参照される。
【0052】
重複排除ベースのキャッシュインデクシングシステム110は、重複排除指紋151からキャッシュエントリにインデクシングを行う。上述のように、典型的な重複排除キャッシュは、書き込み動作中に重複排除データのソースアドレスをルックアップするためのインデクシング手段を有するが、これは、書き込みと読み取りの両方の操作に適用可能である、ここで記載されたアドレス指定を動作させないであろう。記載されたキャッシュは、重複排除指紋151からキャッシュエントリへのインデクシングを使用して、読み取り時に記載されたインデクシングを使用し、書き込み時に重複排除指紋151のキャッシュエントリを追加する。
【0053】
記載された読み取りインデクシングは、1次アドレス指定機能を実行するために使用されてもよい。あるいは、従来のアドレス指定スキームであってもよい元のアドレス指定スキームを重複排除ベースのアドレス指定スキームにマッピングすることによって、キャッシュサービス120の2次的な「二重取り」を実行するために使用されてもよい。
【0054】
2次アドレス指定方法は、
図1Aに示されており、キャッシュサービス120から「キャッシュミス」101を受信する「Addr」161として示された従来のアドレスが示されている。従来のアドレス161は、データ内容を取得することなく、データの重複排除指紋151を解決するために重複排除メタデータ150をルックアップする(102)ために使用される。これは、今度は、キャッシュインデクシングシステム110が、重複排除指紋に基づいてキャッシュアドレス111を取得し、キャッシュされたデータに対して2次パス103を実行するために使用される。
【0055】
読み取りの間、データの一部に対する重複排除指紋151が、キャッシュサービス120にデータを配置したコンテキストに依存しないデータセグメントをインデクシングする均一な方法を提供するという事実は、読み取りを高速化するために、ストレージコントローラ内のストレージの異なるレイヤで使用されるすべての論理アドレス指定スキームにわたってキャッシュサービス120を共有することができる。これは、重複排除指紋151を取得するために重複排除メタデータ150をルックアップするために代替的に使用され得る従来のアドレス「Addr」161のアドレスエイリアス162~164によって示される。
【0056】
1次アドレス指定方法では、キャッシュミスステップ101は実行されず、重複排除指紋アドレス111がキャッシュサービス120の1次アドレスとして使用される。
【0057】
図1Bを参照すると、概略
図105は、重複排除メタデータ150によって提供されるマッピングのさらなる詳細を有する例示的な実施形態を示す。データ書き込みの重複排除のために、重複排除メタデータ150は、データの各ブロックについてハッシュ関数によって生成された重複排除指紋151のインデックス152を含んで記憶される。重複排除メタデータ150は、論理アドレス161、171、181のソースアドレス152への多対1のマッピングも含み、論理アドレス161、171、181は、ソースアドレス152に記憶されたデータブロックの複製であるデータブロックのためのものである。論理アドレスは、異なるソフトウェアレイヤで使用される論理アドレス指定スキームの論理アドレス161~163、171~173、181~183を使用することができる。
【0058】
記載された方法およびシステムにおいて、重複排除ベースのキャッシュインデクシングシステム110は、重複排除メタデータ150を使用して、読み取り操作のための論理アドレス161~163、171~173、181~183を、キャッシュサービス120のアドレス111に使用される重複排除指紋151にマッピングする。この重複排除ベースのキャッシュインデクシングは、ソースアドレス152に基づくキャッシュアドレス指定スキーム113を使用する元のキャッシュインデクシングシステム112に独立してもよいし、それと並行して使用してもよい。
【0059】
図2Aは、異なるソフトウェアレイヤ221~224の模式
図220を示す。例示的な実施形態は、レイヤ1 221は上部キャッシュ、レイヤ2 222は重複排除レイヤ、レイヤ3 223は下部キャッシュ、そしてレイヤ4 224はRAIDレイヤであってよい。各レイヤは任意であり、IO操作はそのレイヤをバイパスして直下のレイヤに流れる可能性がある。いくつかの実施形態では、レイヤ1 221とレイヤ2 222の間にさらに多くのレイヤがあってもよく、例えば、追加のレイヤはボリュームミラーリングを行うための複製サービスであってよく、別の追加のレイヤはポイントインタイムスナップショットサービスを提供するためのポイントインタイムコピーサービスであってよい。さらに、レイヤ4 224は、複数のRAIDアレイがすべて同じホストボリュームに仮想化されている仮想化レイヤを含むことができる。RAIDレイヤ自体は、例えば、RAIDパリティを管理するためのキャッシュを含むことができる。
【0060】
読み取り/書き込み操作230はレイヤを介して流れ、いくつかのレイヤはオプションであり、読み取り/書き込み操作230は、そのレイヤをバイパスして直下のレイヤに流れることがある。すべてのレイヤは、記載されたキャッシュインデクシングサービスへのアクセスを必要とする場合がある。読み取りまたは書き込み操作230がソフトウェアレイヤ221~224を通って移動するとき、計算の結果、同じデータセグメントを参照するために元のアドレス231からのアドレス変換が生じる場合、選択されたアドレス「エイリアス」232~234が操作230に関連付けられたままである。
【0061】
重複排除レイヤのメタデータがアドレス231に対して関連する重複排除指紋を記憶するとき、アドレスエイリアス232~234は、追加的に重複排除指紋と関連付けられ、その後に検索するために使用され得る。
【0062】
下位レベルの重複排除レイヤのメタデータが重複排除指紋151を解決した後、まだデータコンテンツを取得することなく、重複排除指紋151を使用して、重複排除ベースのキャッシュインデクシングシステム110をキャッシュのコンテンツの全体像にアクセスすることができる。
【0063】
図2Bは、クライアントコンピュータ201および202がストレージにアクセスするノード211~216のクラスタ化キャッシュサービス210の模式
図200である。ノード211~216は、高可用性を与えるためにペアで提供される。クラスタリングは、キャッシュサービスの可用性を高めることができ、ノードが故障しても、キャッシュの残りはアクセス可能である。クラスタリングは、複製やフェイルオーバーと組み合わせて頻繁に使用される。各ノードは複製可能であり、ノードに障害が発生した場合、複製を迅速にオンラインにすることができる。
【0064】
求められるデータの重複排除指紋からキャッシュをインデクシングすることは、指紋の属性によって支援される。SHAハッシュコードのような重複排除指紋はランダムに分配しており、非常に高速なハッシュマップの優れた基礎となり、これは、SHAのビットのどのサブセットにも当てはまる。これは、インデクシング方法がSHAのサブセットを切り捨てたり選択したりして、共有キャッシュアドレス空間にキャッシュアドレス(またはNull)を記憶する配列のアドレスとして使用することができることを意味する。
【0065】
例示的な実装では、重複排除指紋に基づく以下のインデクシングとアドレス指定を使用することができる。典型的な重複排除指紋は、Secure Hash Algorithm 1(SHA-1)の20バイトハッシュであろう。SHA-2のような他のSHAスキームもあるが、これらはより大きなハッシュを持つ。20バイトのハッシュを使用してテーブルを作成すると、非常に大きなテーブルインデックスが作成されるため、高いレベルのリソースが消費される。したがって、重複排除指紋のバイトのサブセットは、インデクシングテーブルを作成するために使用することができる。
【0066】
例示的な実施形態では、ハッシュの中央6バイトを使用し、その6バイトを使用してインデクシングテーブルを作成することができる。以下の和が実行され、その結果の値が、キャッシュインデクシングテーブルのハッシュエントリを表すために使用され得る。
((ハッシュの中央6バイトの絶対値)modulo(テーブルの選択サイズ))
ここで、moduloとは、XをYで割って、その和の余りを取ることを意味する。
【0067】
例えば、指紋の中央6バイトが表す場合:0x123456、テーブルのサイズは0x10000エントリである。そうすると、キャッシュインデックスのテーブルエントリは、次のようになる:0x123456% 0x10000=0x3456。
【0068】
この方法は、キャッシュインデクシングテーブル上の重複排除指紋のランダムな分配を与える。
【0069】
これはほんの一例で、別の例では20バイトの指紋ハッシュの中央6バイトを取り出し、それらのハッシュのツリー(テーブルの代わり)を作成することができる。
【0070】
重複排除指紋からキャッシュのインデクシングをする際の重複排除指紋のもう一つの有用な属性は、正確に一致することを確認するために、ハッシュマップが指すデータのSHAを計算する高速ハードウェアサポートがあるため、インデクシングが誤った「ヒット」を返すことを許容できることである。キャッシュインデクシングテーブル内の同じハッシュチェーンに複数のエントリが存在する可能性があるため、部分ハッシュのチェーンでどのエントリを使用するかを決定するために完全ハッシュが必要となる。
【0071】
これは、20バイトハッシュの中央6バイトを使用する実装例を使用してさらに説明される。20バイトのハッシュは、6バイトのハッシュと比較してデータの精度が高く、6バイトのハッシュではハッシュの衝突が発生する可能性がある。(すなわち、同じ6バイトハッシュを持つ2組の異なるデータ)。そのため、正しいデータセットを返すためには、20バイトのハッシュをフルに使用する必要がある場合がある。
【0072】
中央の6バイトの使用は、部分的なヒントのみを記憶することで重複排除メタデータサイズを削減するためにも使用され得る。完全なハッシュは記憶されるが、重複排除メタデータを高速にルックアップするための重複排除メタデータキャッシュが存在する。
【0073】
図3を参照すると、フロー
図300は、書き込み操作中に重複排除指紋に基づくキャッシュインデクシングの方法の例示的な実施形態を示す。
【0074】
データに対する論理アドレスを有する受信書き込み操作が受信される(301)。方法は、バックエンドへの書き込みを実行し、クライアントへの書き込みを完了するために分岐してもよく(302)、その方法分岐は終了してもよい(308)。
【0075】
クライアントへの書き込みと並行して、分岐は、書き込みデータをキャッシュすることができる。キャッシュ書き込み動作は、重複排除書き込み処理の一部として、ハッシュ関数を使用してデータの重複排除指紋を計算することを含むことができる(303)。通常、データ書き込み操作は、書き込みがハッシュ化するデータを有するので、データの重複排除指紋(ハッシュコードまたはSHAとも呼ばれる)を取得し、書き込み操作はその後、重複を見つけるために指紋を使用する。その後、データ書き込みは、データの共有されたソースのその後の読み取りおよび書き込みに使用することができる多対1の参照-ソース間リンクとして、発見された重複のメタデータを作成および維持する。
【0076】
キャッシュ分岐は、キャッシュ内のデータについて、重複排除指紋をルックアップしてもよい(304)。重複排除指紋がキャッシュ内で見つかった場合(305)、アクションは取られず、分岐は終了してもよい(308)。重複排除指紋の一致は、書き込まれるデータがキャッシュされたデータと同じであることを保証する。これは、ルックアップが重複排除指紋のサブセットで実施される場合に照合され得る。
【0077】
しかし、重複排除指紋がキャッシュ内で見つからない場合、重複排除指紋に対してキャッシュエントリが作成され(306)、データがキャッシュされ(307)、方法分岐は終了してもよい(308)。
【0078】
図4Aを参照すると、フロー
図400は、読み取り操作中に重複排除指紋に基づいたキャッシュインデクシングの方法の例示的実施形態を示す。
【0079】
データに対する論理アドレスを有する受信読み取り操作が受信される(401)。論理アドレスは、ソフトウェアレイヤの1つで使用される論理アドレス指定スキームの論理アドレスであってよい。
【0080】
一般的なデータ読み取りは要求されたデータの内容をまだ知らないので、関連する重複排除指紋を計算することができない。データ読み取りは、物理的(すなわち次のレイヤ)アドレスにマッピングするために処理される論理アドレスを使用し、重複排除されないデータに使用されるアドレスと同等、または重複排除されるデータの共有ソースアドレスに変換される。
【0081】
記載された方法は、データの重複排除のために維持される重複排除メタデータにアクセスし、ルックアップすることができる(402)。ルックアップ402は、論理アドレスのデータについて重複排除メタデータにインデクシングされている重複排除指紋を取得する。
【0082】
先に述べたように、重複排除メタデータは通常、書き込み操作のためにデータセグメントの重複排除指紋を記憶するが、これは(いくつかのスキームで追加のデータ照合として使用されるのは別として)読み取りの際には従来使用されていなかった。記載された方法は、読み取りが重複排除メタデータにアクセスして物理アドレスを取得する際に、読み取りたいデータの重複排除指紋を追加で取得できるという事実を使用する。これは、バッキングストアの重複排除メタデータを使用して、読み取りLBAアドレスからデータコンテンツの重複排除指紋へのアドレス変換を提供するものである。これは、データ自体が読み取り操作で検索される前に、重複排除メタデータを使用して、要求されているデータの重複排除指紋を取得するものである。重複排除メタデータは、メモリまたはより高速なストレージレイヤに記憶されていることが多く、物理アドレスの決定を行うために、とにかくルックアップされる。
【0083】
キャッシュサービスは、キャッシュアドレスが重複排除指紋に基づくインデクシング方法を使用して読み取られる(403)。インデクシング方法は、重複排除指紋のサブセットを切り捨てるまたは選択し、それを共有キャッシュアドレス空間にキャッシュアドレス(またはNull)を記憶する配列へのアドレスとして使用することができる。
【0084】
キャッシュヒットがあり、データが見つかったかどうかが判断される(404)。データが見つからない場合は、キャッシュミスがあり(409)、データはバックエンドストレージから読み取られるかもしれない。重複排除指紋のサブセットがアドレスとして使用される場合、偽のヒットが可能にされ、重複排除指紋全体が、読み取り用のキャッシュデータの正しい位置の照合として使用されることがある(405)。
【0085】
照合一致があるかどうかが判断される(406)。一致がない場合、キャッシュミスがあり(409)、データはバックエンドストレージから読み取られるかもしれない。一致がある場合、データは、キャッシュから読み取られるかもしれない(407)。
【0086】
したがって、キャッシュの重複排除指紋からアドレスマップへの非Nullエントリの形でのヒットは、キャッシュからのデータの検索と、ソースへの別の参照の発見の両方を可能にするかもしれない。これは、1つのソースに対する2つの参照、あるいは複数の参照を持つ2つのソースをさらに統一するために使用され(408)、それによって重複排除が増加する可能性がある。
【0087】
重複排除メタデータは、データのソースが2つに分かれていることを示すかもしれない。この最も可能性の高い理由は、重複排除領域のスコープが、2番目の書き込みが行われたときのハッシュの元の検索をカバーしていないことであり、したがって、データがすでに記憶されていることを発見できなかった。記載されたキャッシュインデクシングスキームは、重複排除ドメインの範囲を拡大することができ、その結果、新しいデータソースを発見することができる。これにより、2番目のソースの書き込みを1番目のソースの書き込みへのリンクに効果的に置き換えることができ、ユーザの観点から容量を節約することができる。
【0088】
また、記載された方法は、バックエンドストレージまたはキャッシュ重複排除のいずれかのための既存のスキームよりもデータ重複排除の増加を可能にすることができる。このことを説明するために、システムの様々なコンポーネントの典型的な階層化スキームを説明する
図2Aを参照されたい。IOが上から下へ流れることを考えると、重複排除レイヤの下のコンポーネントが、重複排除レイヤがアクセスできないデータを生成している可能性がある。これが、この機能によって重複排除の容量を節約できる可能性がある理由の1つである。例えば、重複排除レイヤの下にあるコピーサービスレイヤまたはスナップショットレイヤ(あるボリュームを別のボリュームにコピーする)がある場合である。コピーサービスレイヤは、重複排除レイヤによって公開されない新しい書き込みを生成することになるため、容量使用量が増加することになる。記載された方法では、新しい重複を特定するためのソースとしてキャッシュを利用することで容量を節約することができる。
【0089】
記載されたインデクシング方法は、ストレージコントローラにおいて重複排除が通常100%完全ではないことに着目し、読み取り操作に別の経路を追加する。完全な重複排除は通常、必要なメタデータサイズや検索性能の点でコストがかかりすぎるが、重複率を改善することは非常に望ましい。
【0090】
重複排除はストレージコントローラ内の性能を低下させる。IOワークロードによっては、特に重複データの書き込みの割合が高い場合、ストレージコントローラは性能を優先して容量削減を犠牲にすることを選択することができる。例えば、同じデータを書き込むボリュームが多数ある場合、重複排除メタデータへの並列アクセスが多数発生し、メタデータブロックの更新が頻繁に行われるため、メタデータの内部ロックが必要となり、性能を低下させることになる。状況によっては、コントローラは、性能が犠牲にならないように、同じソースデータの独立したセットを作成することを選択する場合がある。その後、コントローラは、複数のデータソースを単一のソースに再統合することができ、これは、メインIOフローに対して非同期に行うことができる。キャッシュインデクシングスキームは、複数のソースを再統合するために使用することができる。
【0091】
重複排除指紋を取得する能力は、キャッシュへの追加または置換インデックスとして使用される。一実施形態では、読み取り操作は、重複排除レイヤより上のキャッシュレイヤから、論理アドレスを使用してサービスを提供できない場合にのみ、重複排除レイヤに降りてくることがある。IO操作は、重複排除指紋を使用してキャッシュサービスに第2のリクエストを行い、一致する重複排除指紋を有するデータがキャッシュ内にあるかどうかをリクエストすることができる。
【0092】
図4Bを参照すると、フロー
図450は、読み取り動作のより詳細な例示的実施形態を提供する。
【0093】
受信読み取り操作は論理アドレスと共に受信される(451)。方法の分岐は、従来のキャッシュ内のデータをルックアップすることができる(452)。データが見つかった場合(453)、データは従来のキャッシュから取得することができ(454)、そうでない場合、キャッシュミスがある。
【0094】
方法の別の分岐は、読み取られたデータの論理アドレスを使用して、読み取られたデータの重複排除メタデータ内の重複排除指紋をルックアップすることができる(455)。重複排除指紋が見つからない場合(456)、データはバックエンドから読み取られる場合がある(457)。重複排除指紋が見つかった場合(456)、方法は、重複排除ベースのキャッシュ内のデータをルックアップし(458)、見つかった場合(459)、重複排除ベースのキャッシュからデータを取得することができる(460)。データが見つからない場合(459)、データはバックエンドから読み取られる場合がある(461)。
【0095】
この分岐は、下位レイヤやバックエンドデバイスがデータを検索するための従来の読み取りに先立ち操作されるか、並行して行われるかのいずれかである。並行して実行される場合、キャッシュがミスしても読み取りが遅れることはない。両方の検索が並行して行われる場合、従来の検索の方が速いので、その後、重複排除メタデータのルックアップを中止することができる。
【0096】
この方法は、データソースのチェック(463)と並行して、クライアントへの読み取りを完了することができる(462)。データが重複排除キャッシュから読み取られていないと判断された場合(464)、重複排除指紋アドレスに基づいて重複排除キャッシュデータエントリが作成され(465)、データがキャッシュされる(466)。そうでない場合は、方法は終了する(470)。
【0097】
<重複排除指紋によるキャッシュのシャーディング>
キャッシュパーティショニングは、主に2つの理由で起こる。1つは、異なるレイヤや操作がキャッシュを使用しようとするが、異なるアドレス指定スキームを使用するためである。また、キャッシュは、あるレベルの分離または隔壁を可能にするためにパーティショニングされることが多く、低速ドライブによってキャッシュ内にバックアップすることをターゲットとした読み取りが発生する場合など、下位ストレージメディアのサブセットの性能低下によるキャッシュの「リーク」を防止する。
【0098】
水平パーティショニング(しばしばシャーディングと呼ばれる)は、各パーティションがそれ自体でデータストアでありながら、すべてのパーティションが同じスキーマを持つ戦略である。各パーティションはシャードと呼ばれ、データの特定のサブセットを保持する。
【0099】
重複排除指紋に基づくシャーディングスキームにより、重複排除指紋がデータセグメントの内容よりも高速に取得できる読み取り操作において、キャッシュを両次元にわたって「統一」することができる。これは論理的には、使用されるキャッシュの有効サイズを増加させるが、この個々の読み取りに使用されるアドレス指定スキームではデータがキャッシュされないという追加コストが発生する。
【0100】
キャッシュは、特定のレイヤで、すべてのリソース(パーティションおよびCPUコア、または他のリソース)を使用する第1の水平次元と、IOスタックアーキテクチャの別々のレイヤで第2の垂直次元を有する。したがって、他のレイヤはキャッシュの恩恵を受ける。一般に、スタックアーキテクチャ内のIOは上から下へしか流れないので(IOへの完了はスタックを遡っていく)、IOスタックのコンポーネントは、そのレイヤの下にある場合にのみキャッシュの恩恵を受けることになる。記載されたインデックススキームの利点の1つは、スタック内の位置に関係なく、すべてのレイヤがキャッシュの恩恵を受けることである。なぜなら、重複排除メタデータと指紋を使用してハッシュルックアップを行うことができるからである。
【0101】
図5を参照すると、ストレージシステムの一部としてのコンピューティングシステム500の例示的な実施形態であって、キャッシュストレージ550のための重複排除ベースのキャッシュインデクシングシステム110の形態でキャッシュストレージシステムインデクシングシステム510を提供するブロック図である。
【0102】
コンピューティングシステム500は、オリジナルアドレス配列531を含むキャッシュストレージ550のためのオリジナルキャッシュインデクシングシステム530を含むことができる。オリジナルキャッシュインデクシングシステム530は、重複排除ベースのキャッシュインデクシングシステム110と並行してまたは連続して使用されることがある。
【0103】
また、コンピュータシステム500は、記憶された重複排除メタデータ541を含む重複排除システム540を含む。
【0104】
キャッシュストレージ550は、任意に、シャードキーとしてデータ指紋アドレスを使用するパーティショニングで上述のようにシャード化されてもよく、ここで、データ指紋アドレスは、キャッシュストレージシステムにおけるデータの重複排除に使用される重複排除指紋関数を使用して取得されるデータ指紋に基づくアドレスである。
【0105】
コンピューティングシステム500は、少なくとも1つのプロセッサ501、ハードウェアモジュール、または少なくとも1つのプロセッサ上で実行されるソフトウェアユニットであってもよい記載されたコンポーネントの機能を実行するための回路を含む。並列処理スレッドを実行する複数のプロセッサが提供され、コンポーネントの機能の一部またはすべての並列処理を可能にすることができる。メモリ502は、コンポーネントの機能を実行するためのコンピュータ命令503を少なくとも1つのプロセッサ501に提供するように構成され得る。
【0106】
キャッシュストレージシステムインデクシングシステム510は、キャッシュアドレスを共有キャッシュアドレス空間に記憶する重複排除ベースのアドレス配列514を含み、配列は、キャッシュされたデータのデータ指紋に基づく参照を有し、データ指紋は、キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能によって生成される。
【0107】
また、キャッシュストレージシステムインデクシングシステム510はまた、キャッシュストレージ550に対する読み取りおよび書き込み操作を実施する際に、重複排除データ指紋を取得するためのデータ指紋取得コンポーネント520を含む。
【0108】
データ指紋取得コンポーネント520は、重複排除メタデータ541が異なるソフトウェア論理レイヤまたは異なるクライアントドメインからのアドレスエイリアスを重複排除データ指紋にマッピングする、重複排除システム540の重複排除メタデータ541から読み取り操作のデータ指紋を取得するための読み取り操作コンポーネント521と、書き込み操作のデータに重複排除指紋機能を適用するための書き込み操作コンポーネント522とを含む。
【0109】
キャッシュストレージシステムインデクシングシステム510は、データのデータ指紋に基づく参照を使用して、キャッシュストレージ550へのデータ操作のデータのキャッシュアドレスを取得するために、重複排除ベースのアドレス配列514をルックアップするための配列ルックアップコンポーネント511を含む。
【0110】
キャッシュストレージシステムインデクシングシステム510は、データ指紋を検索されたデータのデータ指紋と照合するためのヒット照合コンポーネント512を含み得る。
【0111】
キャッシュストレージシステムインデクシングシステム510は、データ指紋アドレス指定の使用によってデータソースへの複数の参照を発見し、データソースへの参照を統一し、それによって重複排除を高めるための参照統一コンポーネント513を含み得る。
【0112】
図6は、本発明の実施形態による、キャッシュインデクシングシステム110に使用されるようなコンピューティングシステムのコンポーネントのブロック図を示している。
図6は、1つの実装の例示を提供するだけであり、異なる実施形態が実装され得る環境に関していかなる制限も意味しないことを理解されたい。描かれた環境に対する多くの変更がなされ得る。
【0113】
コンピューティングシステムは、1または複数のプロセッサ602、1または複数のコンピュータ可読RAM604、1または複数のコンピュータ可読ROM606、1または複数のコンピュータ可読記憶媒体608、デバイスドライバ612、読み書きドライブまたはインタフェース614、およびネットワークアダプタまたはインタフェース616を含むことができ、すべてが通信ファブリック618上で相互接続される。通信ファブリック618は、プロセッサ(マイクロプロセッサ、通信およびネットワークプロセッサなど)、システムメモリ、周辺デバイス、およびシステム内の他の任意のハードウェアコンポーネント間でデータもしくは制御情報またはその両方を渡すために設計された任意のアーキテクチャで実装することができる。
【0114】
1または複数のオペレーティングシステム610、およびアプリケーションプログラム611は、それぞれのRAM604(典型的にはキャッシュメモリを含む)の1または複数を介してプロセッサ602の1または複数による実行のために、コンピュータ可読記憶媒体608の1または複数に記憶される。図示された実施形態では、コンピュータ可読記憶媒体608の各々は、本発明の実施形態に従って、内部ハードドライブの磁気ディスク記憶装置、CD-ROM、DVD、メモリスティック、磁気テープ、磁気ディスク、光ディスク、RAM、ROM、EPROM、フラッシュメモリなどの半導体記憶装置、またはコンピュータプログラムおよびデジタル情報を記憶することができる任意の他のコンピュータ可読記憶媒体であってよい。
【0115】
コンピューティングシステムはまた、1または複数のポータブルコンピュータ可読記憶媒体626から読み取り、それに書き込むためのR/Wドライブまたはインタフェース614を含むことができる。コンピューティングシステム上のアプリケーションプログラム611は、1または複数のポータブルコンピュータ可読記憶媒体626に記憶され、それぞれのR/Wドライブまたはインタフェース614を介して読み取られ、それぞれのコンピュータ可読記憶媒体608にロードすることができる。
【0116】
コンピューティングシステムはまた、TCP/IPアダプタカードまたは無線通信アダプタなどのネットワークアダプタまたはインタフェース616を含むことができる。コンピューティングシステム上のアプリケーションプログラム611は、ネットワーク(例えば、インターネット、ローカルエリアネットワークまたは他のワイドエリアネットワークまたはワイヤレスネットワーク)およびネットワークアダプタまたはインタフェース616を介して、外部コンピュータまたは外部記憶装置からコンピューティングデバイスにダウンロードすることができる。プログラムは、ネットワークアダプタまたはインタフェース616から、コンピュータ可読記憶媒体608にロードされ得る。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、およびエッジサーバを含んでよい。
【0117】
コンピューティングシステムはまた、ディスプレイスクリーン620、キーボードまたはキーパッド622、およびコンピュータマウスまたはタッチパッド624を含むことができる。デバイスドライバ612は、撮像のためにディスプレイスクリーン620に、キーボードまたはキーパッド622に、コンピュータマウスまたはタッチパッド624に、もしくは英数字文字入力およびユーザ選択の圧力検知のためにディスプレイスクリーン620に、またはその組み合わせにインタフェースする。デバイスドライバ612、R/Wドライブまたはインタフェース614、およびネットワークアダプタまたはインタフェース616は、コンピュータ可読記憶媒体608もしくはROM606またはその両方に記憶されたハードウェアおよびソフトウェアを含むことができる。
【0118】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0119】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0120】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバーまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0121】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、統合回路のための構成データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0122】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0123】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するためにコンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読記憶媒体が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0124】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0125】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、1つのステップとして達成される場合があり、同時に、実質的に同時に、部分的または全体的に時間的に重複する方法で実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0126】
<クラウドコンピューティング>
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されない。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
【0127】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0128】
特性は以下の通りである。
【0129】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0130】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0131】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0132】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0133】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0134】
サービスモデルは以下の通りである。
【0135】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0136】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0137】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0138】
展開モデルは以下の通りである。
【0139】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0140】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0141】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0142】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0143】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0144】
図7は、例示的なクラウドコンピューティング環境50が描かれている。図示のように、クラウドコンピューティング環境50は1つまたは複数のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図7に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0145】
ここで
図8を参照すると、クラウドコンピューティング環境50(
図7)によって提供される機能抽象化レイヤのセットが示されている。なお、
図8に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0146】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0147】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
【0148】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル83は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0149】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、ならびに、キャッシュインデクシング処理96が含まれる。
【0150】
本発明のコンピュータプログラム製品は、コンピュータ可読プログラムコードが格納された1または複数のコンピュータ可読ハードウェア記憶装置を含み、前記プログラムコードは、本発明の方法を実施するために1または複数のプロセッサによって実行可能である。
【0151】
本発明のコンピュータシステムは、1または複数のプロセッサと、1または複数のメモリと、1または複数のコンピュータ可読ハードウェア記憶装置とを備え、前記1または複数のハードウェア記憶装置は、1または複数のプロセッサが1または複数のメモリを介して実行可能なプログラムコードを含み、本発明の方法を実施する。
【0152】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。記載される実施形態の範囲から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。
【0153】
本発明の範囲から逸脱することなく、前述に改良および修正を加えることができる。
【手続補正書】
【提出日】2023-08-30
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
キャッシュストレージシステムインデクシングのためのコンピュータ実装方法であって、前記コンピュータ実装方法は、
1または複数のコンピュータプロセッサによって、キャッシュされたデータのデータ指紋に基づいてキャッシュストレージシステム内のデータアドレスをインデクシングすることであって、前記データ指紋は、前記キャッシュストレージシステム内のデータの重複排除を参照するために使用される重複排除指紋機能によって生成される、インデクシングすること
を含む、コンピュータ実装方法。
【請求項2】
前記データアドレスをインデクシングすることは、前記キャッシュストレージシステムのキャッシュアドレス空間内のキャッシュアドレスを記憶する配列への参照として、前記データ指紋のサブセットに基づく、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記データ指紋は、異なるアドレスエイリアスを異なるソフトウェア論理レイヤから前記重複排除データ指紋にマッピングする重複排除メタデータからの読み取り操作に対して取得される、請求項1または請求項2に記載のコンピュータ実装方法。
【請求項4】
前記データ指紋は、異なるアドレスエイリアスを異なるクライアントドメインから前記重複排除データ指紋にマッピングする重複排除メタデータからの読み取り操作に対して取得される、請求項1または請求項2に記載のコンピュータ実装方法。
【請求項5】
前記キャッシュストレージシステムは、ストレージサブシステムの複数のレイヤにおける読み取り/書き込み操作のための単一の均一キャッシュであり、前記インデクシングは、前記複数のレイヤにわたって均一なインデクシングを提供する、
請求項1~4に記載のコンピュータ実装方法。
【請求項6】
前記キャッシュストレージシステムは、前記重複排除指紋機能によって生成された前記データ指紋に基づくシャーディングを伴うシャード化されたキャッシュである、請求項1~4のいずれかに記載のコンピュータ実装方法。
【請求項7】
キャッシュストレージシステムに対するデータ操作のためのコンピュータ実装方法であって、
1または複数のコンピュータプロセッサによって、前記キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用することによって、データ操作のデータに対する前記データ指紋を取得することと、
前記書き込み操作の前記データの前記データ指紋に基づくアドレススキーマを有する前記キャッシュストレージシステムへのインデクシングサービスを使用することと、
を含む、コンピュータ実装方法。
【請求項8】
前記インデクシングサービスは、データ指紋のサブセットに基づく参照を、前記キャッシュストレージシステムのキャッシュアドレス空間内のキャッシュアドレスを記憶する配列へのアドレスとして使用する、
請求項7に記載のコンピュータ実装方法。
【請求項9】
前記データ操作は書き込み操作であり、前記方法は、
1または複数のコンピュータプロセッサによって、データ書き込み操作を受信することと、
1または複数のコンピュータプロセッサによって、前記キャッシュストレージシステム内のデータの重複排除に使用される指紋機能を使用して、前記データ書き込み操作のデータのデータ指紋を計算することと、
1または複数のコンピュータプロセッサによって、前記データ書き込み操作の前記データに対するキャッシュエントリを作成することと、
前記キャッシュストレージシステム内の前記キャッシュエントリをアドレス指定するために、前記データ指紋を使用することと、
をさらに含む、請求項7に記載のコンピュータ実装方法。
【請求項10】
前記データ操作は読み取り操作であり、前記方法は、
1または複数のコンピュータプロセッサによって、データ読み取り操作の前記データに対する論理アドレスを有する前記データ読み取り操作を受信することと、
1または複数のコンピュータプロセッサによって、前記論理アドレスを参照することによって重複排除メタデータから前記データ読み取り操作のための前記データのデータ指紋を取得することと、
前記データ読み取り操作の前記データを読み取ろうとする前記キャッシュストレージシステム内のデータをアドレス指定するために、前記データ指紋を使用することと、
をさらに含む、請求項7に記載の
コンピュータ実装方法。
【請求項11】
前記データ指紋を取得することは、前記論理アドレスを使用してサービスすることができなかったので、読み取り操作が重複排除レイヤに降りてくるとき、前記キャッシュストレージシステムの元のアドレス指定スキームを使用してキャッシュミスの後に実施される、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記データ指紋を取得すること、およびデータをアドレス指定するために前記データ指紋を使用することは、元のアドレス指定スキームの前に実施される、請求項10に記載のコンピュータ実装方法。
【請求項13】
1または複数のコンピュータプロセッサによって、前記データ読み取り操作の前記データをアドレス指定するために前記データ指紋を使用する前記キャッシュストレージシステムの偽のヒットを可能にすることと、
1または複数のコンピュータプロセッサによって、前記データ指紋を検索されたデータの前記データ指紋と照合することと、
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項14】
1または複数のコンピュータプロセッサによって、キャッシュアドレスを記憶する配列へのアドレスとして、前記データ指紋のサブセットを使用することと、
1または複数のコンピュータプロセッサによって、前記データ指紋を検索されたデータの前記データ指紋と照合することと、
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項15】
1または複数のコンピュータプロセッサによって、前記データ指紋アドレス指定を使用することによって、データソースへの複数の参照を発見することと、
1または複数のコンピュータプロセッサによって、データソースへの前記参照を統一し、それによって前記重複排除を増加させることと、
をさらに含む、請求項10に記載のコンピュータ実装方法。
【請求項16】
前記データ指紋を取得すること、および前記データをアドレス指定するために前記データ指紋を使用することは、元のアドレス指定スキームと並行して実施される、請求項10に記載のコンピュータ実装方法。
【請求項17】
1または複数のコンピュータプロセッサと、
1または複数のコンピュータ可読記憶媒体と、
前記1または複数のコンピュータプロセッサの少なくとも1つによる実行のために前記1または複数のコンピュータ可読記憶媒体に記憶されるプログラム命令と、を含み、前記プログラム命令は、
キャッシュアドレスを共有キャッシュアドレス空間に記憶する配列を作成するプログラム命令であって、前記配列は、キャッシュされたデータのデータ指紋に基づく参照を有し、前記データ指紋は、キャッシュストレージシステムにおけるデータの重複排除に使用される重複排除指紋機能によって生成されるプログラム命令
を含む、コンピュータシステム。
【請求項18】
前記1または複数のコンピュータプロセッサの少なくとも1つによる実行のために前記1または複数のコンピュータ可読記憶媒体に記憶され、
前記キャッシュストレージシステムに対する読み取りおよび書き込み操作を実施する際に、重複排除データ指紋を取得することであって、
重複排除メタデータから読み取り操作のためのデータ指紋を取得することであって、前記重複排除メタデータは、アドレスエイリアスを異なるソフトウェア論理レイヤまたは異なるクライアントドメインから前記重複排除データ指紋にマッピングする、取得することと、
書き込み操作のデータに対して重複排除指紋機能を適用することと、
を含む、取得することを実行するプログラム命令の1または複数をさらに含む、請求項17に記載のコンピュータシステム。
【請求項19】
前記コンピュータシステムは、ストレージサブシステムの複数のレイヤにおける読み取り/書き込み操作のための単一の均一キャッシュを含み、前記コンピュータシステムは、前記複数のレイヤにわたって均一なインデクシングを提供する、
請求項17に記載のコンピュータシステム。
【請求項20】
前記1または複数のコンピュータプロセッサの少なくとも1つによる実行のために前記1または複数のコンピュータ可読記憶媒体に記憶され、
前記重複排除指紋機能によって生成された前記データ指紋に基づくシャーディングを伴うシャード化されたキャッシュを作成すること
を実行するプログラム命令の1または複数をさらに含む、請求項17に記載のコンピュータシステム。
【請求項21】
キャッシュストレージシステムインデクシングシステムであって、
前記キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用することによって生成されたデータ指紋を取得するために、書き込み操作のデータに重複排除指紋機能を適用すること、および読み取り操作に対して重複排除メタデータにアクセスすることによって、データ操作のデータに対する前記データ指紋を取得するためのデータ指紋取得コンポーネントと、
前記データ操作の前記データの前記データ指紋に基づく参照を使用することによって、前記キャッシュストレージシステムに対する前記データ操作の前記データについてのキャッシュアドレスを取得するための配列ルックアップコンポーネントと、
を含む、キャッシュストレージシステムインデクシングシステム。
【請求項22】
データ書き込み操作を受信することと、
前記キャッシュストレージシステム内のデータの重複排除に使用される指紋機能を使用して、前記データ書き込み操作のデータのデータ指紋を計算することと、
前記データ書き込み操作の前記データに対するキャッシュエントリを作成することと、
前記キャッシュストレージシステム内の前記キャッシュエントリをアドレス指定するために、前記データ指紋を使用することと、
を行うための書き込み操作コンポーネントと、
データ読み取り操作のデータに対する論理アドレスを有する前記データ読み取り操作を受信することと、
前記論理アドレスを参照することによって重複排除メタデータから前記データ読み取り操作の前記データのデータ指紋を取得することと、
前記キャッシュストレージシステム内の前記データ書き込み操作の前記データおよび前記データ読み取り操作の前記データをアドレス指定するために、前記データ指紋を使用することと、
を行うための読み取り操作コンポーネントと、
をさらに含む、請求項21に記載のキャッシュストレージシステムインデクシングシステム。
【請求項23】
前記データ指紋を検索されたデータの前記データ指紋と照合するためのヒット照合コンポーネント
をさらに含む、請求項21に記載のキャッシュストレージシステムインデクシングシステム。
【請求項24】
前記データ指紋アドレス指定を使用することによって、データソースへの複数の参照を発見することと、データソースへの前記参照を統一し、それによって前記重複排除を増加させることと、を行うための参照統一コンポーネント
をさらに含む、請求項21に記載のキャッシュストレージシステムインデクシングシステム。
【請求項25】
データ指紋アドレスをシャードキーとして使用してシャード化されたキャッシュストレージシステムであって、前記データ指紋アドレスは、前記キャッシュストレージシステム内のデータの重複排除に使用される重複排除指紋機能を使用して取得されたデータ指紋に基づくアドレスである、キャッシュストレージシステム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0057
【補正方法】変更
【補正の内容】
【0057】
図1Bを参照すると、概略
図105は、重複排除メタデータ150によって提供されるマッピングのさらなる詳細を有する例示的な実施形態を示す。データ書き込みの重複排除のために、重複排除メタデータ150は、データの各ブロックについてハッシュ関数によって生成された重複排除指紋151のインデックス152を含んで記憶される。重複排除メタデータ150は、論理アドレス161、171、181のソースアドレス
153への多対1のマッピングも含み、論理アドレス161、171、181は、ソースアドレス
153に記憶されたデータブロックの複製であるデータブロックのためのものである。論理アドレスは、異なるソフトウェアレイヤで使用される論理アドレス指定スキームの論理アドレス161~163、171~173、181~183を使用することができる。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0058
【補正方法】変更
【補正の内容】
【0058】
記載された方法およびシステムにおいて、重複排除ベースのキャッシュインデクシングシステム110は、重複排除メタデータ150を使用して、読み取り操作のための論理アドレス161~163、171~173、181~183を、キャッシュサービス120のアドレス111に使用される重複排除指紋151にマッピングする。この重複排除ベースのキャッシュインデクシングは、ソースアドレス153に基づくキャッシュアドレス指定スキーム113を使用する元のキャッシュインデクシングシステム112に独立してもよいし、それと並行して使用してもよい。
【手続補正4】
【補正対象書類名】図面
【補正方法】変更
【補正の内容】
【国際調査報告】