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

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

▶ キンドリル・インクの特許一覧

特表2024-515926迅速なデータ・レプリケーションおよびデータ・ストレージ
<>
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図1
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図2
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図3
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図4
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図5
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図6
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図7
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図8
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図9
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図10
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図11
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図12
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図13
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図14
  • 特表-迅速なデータ・レプリケーションおよびデータ・ストレージ 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-11
(54)【発明の名称】迅速なデータ・レプリケーションおよびデータ・ストレージ
(51)【国際特許分類】
   G06F 3/06 20060101AFI20240404BHJP
   G06F 11/14 20060101ALI20240404BHJP
   G06F 13/10 20060101ALI20240404BHJP
   G06F 16/178 20190101ALI20240404BHJP
   H04L 67/1097 20220101ALI20240404BHJP
【FI】
G06F3/06 304F
G06F11/14 648
G06F3/06 301K
G06F3/06 301X
G06F13/10 340A
G06F16/178
H04L67/1097
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023547598
(86)(22)【出願日】2023-01-10
(85)【翻訳文提出日】2023-08-07
(86)【国際出願番号】 EP2023050376
(87)【国際公開番号】W WO2023169719
(87)【国際公開日】2023-09-14
(31)【優先権主張番号】17/691,834
(32)【優先日】2022-03-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521555742
【氏名又は名称】キンドリル・インク
【氏名又は名称原語表記】Kyndryl Inc.
【住所又は居所原語表記】One Vanderbilt Avenue,15th Floor,New York,New York 10017,USA
(74)【代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】アラダヤ、アラダヤ
(72)【発明者】
【氏名】ラヴィ、ラグナタン
(72)【発明者】
【氏名】ヴェンカト、パンジャニ
(72)【発明者】
【氏名】ラジャ、カンドゥ
(72)【発明者】
【氏名】マヌ、シヴァンナ
(57)【要約】
本開示の態様は、一般に、データ・ストレージおよびデータ・レプリケーションに関する。例えば、コンピュータ実装方法は、コンピューティング・デバイスによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングを作成することと、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングから、コンピューティング・デバイスによって、ストレージ内のデータ・ブロックのリストを表すブロック識別子のリストを生成することと、コンピューティング・デバイスによって、ブロック識別子のリストをバックアップ・ストレージに送信して、ストレージ内のデータ・ブロックのリストを複製することと、コンピュータ可読ストレージ媒体上に、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングおよびストレージ内のブロック識別子のリストを格納することとを含む。
【選択図】 図7
【特許請求の範囲】
【請求項1】
コンピューティング・デバイスによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングを作成することと、
前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングから、前記コンピューティング・デバイスによって、ストレージ内のデータ・ブロックのリストを表すブロック識別子のリストを生成することと、
前記コンピューティング・デバイスによって、前記ブロック識別子のリストを、クラウドベース・ストレージ環境内のバックアップ・ストレージに送信して、前記ストレージ内の前記データ・ブロックのリストを複製することと、
コンピュータ可読ストレージ媒体上に、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングおよび前記ストレージ内の前記ブロック識別子のリストを格納することと
を含む、方法。
【請求項2】
前記コンピューティング・デバイスによって、前記ストレージ内の前記データ・ブロックのリストを受信することをさらに含む、請求項1に記載の方法。
【請求項3】
前記コンピューティング・デバイスによって、前記バックアップ・ストレージによって送信された前記ブロック識別子のリストを受信して、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングから前記ストレージ内の前記データ・ブロックのリストをレストアすることをさらに含む、請求項1に記載の方法。
【請求項4】
前記コンピューティング・デバイスによって、前記ストレージ内の前記データ・ブロックのリスト内のデータ・ブロックの更新されたデータ・ブロックを受信することと、
前記コンピューティング・デバイスによって、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングから、前記更新されたデータ・ブロックのブロック識別子を取得することと、
前記コンピューティング・デバイスによって、前記ブロック識別子のリスト内の前記更新されたデータ・ブロックの前記ブロック識別子を有する前記データ・ブロックの前記ブロック識別子を置き換えることと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記コンピューティング・デバイスによって、前記更新されたデータ・ブロックの前記ブロック識別子を前記バックアップ・ストレージに送信すること
をさらに含む、請求項4に記載の方法。
【請求項6】
前記更新されたデータ・ブロックの前記ブロック・データのマッピングを有する、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングを、前記更新されたデータ・ブロックに更新すること
をさらに含む、請求項4に記載の方法。
【請求項7】
前記コンピューティング・デバイスによって、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングを、前記ブロック・サイズ内のビット数の複数の2の冪の指数化によって順序付けること
をさらに含む、請求項1に記載の方法。
【請求項8】
前記コンピューティング・デバイスによって、複数のユニバーサリー・ユニーク識別子を、初期の日付およびタイムスタンプから昇順で前記複数のユニバーサリー・ユニーク識別子ごとに所定の時間周期ずつ増やされる前記複数のブロック識別子として生成することをさらに含む、請求項1に記載の方法。
【請求項9】
最小から最大まで配列されたデータの複数の2値の組み合わせのそれぞれを有する前記複数のブロック識別子のそれぞれを、最小から最大まで連続的に割り当てることをさらに含む、請求項1に記載の方法。
【請求項10】
前記ブロック識別子のリスト内の前記ブロック識別子のそれぞれに関連するマッピングを有する、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングを、前記データ・ブロックのリスト内の前記データ・ブロックのそれぞれに更新することをさらに含む、請求項1に記載の方法。
【請求項11】
前記ブロック識別子のリスト内の少なくとも1つのデータ・ブロックを前記バックアップ・ストレージに送信することをさらに含む、請求項1に記載の方法。
【請求項12】
1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令を有する前記1つまたは複数のコンピュータ可読ストレージ媒体を含み、前記プログラム命令は、
コンピューティング・デバイスによって、データ・ブロックの複製のためのブロック識別子を受信し、
前記コンピューティング・デバイスによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピング内の前記ブロック識別子を識別し、
前記コンピューティング・デバイスによって、ブロック・データのリストの複製のためのブロック識別子のリスト内の前記ブロック識別子を、コンピュータ可読ストレージ媒体上に格納すること
が実行可能な、コンピュータ・プログラム製品。
【請求項13】
前記実行可能な命令は、
前記コンピューティング・デバイスによって、前記データ・ブロックのバックアップのためのブロック識別子に関連するブロック・データを受信すること
がさらに実行可能な、請求項12に記載のコンピュータ・プログラム製品。
【請求項14】
前記実行可能な命令は、
前記コンピューティング・デバイスによって、前記ブロック識別子に関連するマッピングを有する、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングを、前記ブロック・データに更新すること
がさらに実行可能な、請求項13に記載のコンピュータ・プログラム製品。
【請求項15】
前記実行可能な命令は、
前記コンピューティング・デバイスによって、前記ブロック識別子のリストを送信して、主記憶装置内の前記データ・ブロックのリストをレストアすること
がさらに実行可能な、請求項12に記載のコンピュータ・プログラム製品。
【請求項16】
プロセッサ、コンピュータ可読メモリ、1つまたは複数のコンピュータ可読ストレージ媒体および前記1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令を含み、前記プログラム命令は、
前記プロセッサによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングを作成することと、
前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングから、前記プロセッサによって、ストレージ内のデータ・ブロックのリストを表すブロック識別子のリストを生成することと、
前記プロセッサによって、前記ブロック識別子のリストを、クラウドベース・ストレージ環境内のバックアップ・ストレージに送信して、前記ストレージ内の前記データ・ブロックのリストを複製することと、
コンピュータ可読ストレージ媒体上に、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングおよび前記ストレージ内の前記ブロック識別子のリストを格納することと
が実行可能な、システム。
【請求項17】
前記プログラム命令は、
前記プロセッサによって、前記ストレージ内の前記データ・ブロックのリスト内のデータ・ブロックの更新されたデータ・ブロックを受信することと、
前記プロセッサよって、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングから、前記更新されたデータ・ブロックのブロック識別子を取得することと、
前記プロセッサによって、前記ブロック識別子のリスト内の前記更新されたデータ・ブロックの前記ブロック識別子を有する前記データ・ブロックの前記ブロック識別子を置き換えることと、
前記プロセッサによって、前記更新されたデータ・ブロックの前記ブロック識別子を前記バックアップ・ストレージに送信することと
がさらに実行可能な、請求項16に記載のシステム。
【請求項18】
前記プログラム命令は、
前記バックアップ・ストレージによって送信された前記ブロック識別子のリストを受信して、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングから、前記ストレージ内の前記データ・ブロックのリストをレストアすること
がさらに実行可能な、請求項16に記載のシステム。
【請求項19】
前記プログラム命令は、
前記ブロック識別子のリスト内の前記ブロック識別子のそれぞれに関連するマッピングを有する、前記ブロック・サイズのデータの前記複数の2値の組み合わせを有する前記複数のブロック識別子に関連する前記マッピングを、前記データ・ブロックのリスト内の前記データ・ブロックのそれぞれに更新すること
がさらに実行可能な、請求項16に記載のシステム。
【請求項20】
前記プログラム命令は、
前記ブロック識別子のリスト内の少なくとも1つのデータ・ブロックを前記バックアップ・ストレージに送信すること
がさらに実行可能な、請求項16に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の態様は、一般にデータ・ストレージに関連し、より詳細には、データ・レプリケーションに関連する。
【背景技術】
【0002】
数百万のデータのブロックが、データ・ストレージを使用してクラウド内に毎日格納される。ブロック・ストレージは、データ・ファイルをデータ・ブロック内でばらばらにして、次いで、それらのデータ・ブロックを別々にクラウドベースのストレージ環境に格納する。そうすることで、データ・ブロックは、異なるストレージ・システムにわたって分散でき、最も効率的な場所ならどこでも格納できる。
【0003】
ブロック・ストレージは、ネットワークベースのおよび低レイテンシのストレージ操作を必要とする作業負荷のためにしばしば使用される。例示は、データベース、仮想マシン、コンテナ、Hadoopノードおよびウェブ・サービスを含む。典型的には、これらの作業負荷の災害復旧は、主記憶装置からバックアップ・ストレージへと、データを複製することを含む。テラバイトのデータは、領域にわたって複製され、高いネットワーク帯域幅を消費し得る。
【発明の概要】
【0004】
発明の第1の態様では、コンピューティング・デバイスによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングを作成することと、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングから、コンピューティング・デバイスによって、ストレージ内のデータ・ブロックのリストを表すブロック識別子のリストを生成することと、コンピューティング・デバイスによって、ブロック識別子のリストを、クラウドベース・ストレージ環境内のバックアップ・ストレージに送信して、ストレージ内のデータ・ブロックのリストを複製することと、コンピュータ可読ストレージ媒体上に、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングおよびストレージ内のブロック識別子のリストを格納することとを含む、コンピュータ実装方法がある。
【0005】
発明の他の態様では、1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令を有する1つまたは複数のコンピュータ可読ストレージ媒体を含むコンピュータ・プログラム製品がある。プログラム命令は、コンピューティング・デバイスによって、データ・ブロックの複製のためのブロック識別子を受信し、コンピューティング・デバイスによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピング内のブロック識別子を識別し、コンピューティング・デバイスによって、ブロック・データのリストの複製のためのブロック識別子のリスト内のブロック識別子を、コンピュータ可読ストレージ媒体上に格納することが実行可能である。
【0006】
発明の他の態様では、プロセッサ、コンピュータ可読メモリ、1つまたは複数のコンピュータ可読ストレージ媒体および1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令を含むシステムであって、プログラム命令は、プロセッサによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングを作成することと、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングから、プロセッサによって、ストレージ内のデータ・ブロックのリストを表すブロック識別子のリストを生成することと、プロセッサによって、ブロック識別子のリストを、クラウドベース・ストレージ環境内のバックアップ・ストレージに送信して、ストレージ内のデータ・ブロックのリストを複製することと、コンピュータ可読ストレージ媒体上に、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングおよびストレージ内のブロック識別子のリストを格納することとが実行可能である。
【図面の簡単な説明】
【0007】
本発明の態様は、本発明の例示的な実施形態の非限定的な例として、留意される複数の図面を参照して、以下の詳細な説明において説明される。
【0008】
図1】本発明の実施形態による、クラウド・コンピューティング・ノードを示す。
図2】発明の態様に従う、クラウド・コンピューティング環境を示す。
図3】発明の態様に従う、抽象モデル層を示す。
図4】発明の態様に従う、例示的な環境のブロック図を示す。
図5】発明の態様に従う、例示的なデータ構造を示す。
図6】発明の態様に従う、例示的なデータ構造を示す。
図7】発明の態様に従う、例示的な方法のフローチャートを示す。
図8】発明の態様に従う、例示的な方法のフローチャートを示す。
図9】発明の態様に従う、例示的な方法のフローチャートを示す。
図10】発明の態様に従う、例示的な回路図を示す。
図11】発明の態様に従う、例示的な方法のフローチャートを示す。
図12】発明の態様に従う、例示的な方法のフローチャートを示す。
図13】発明の態様に従う、例示的な環境のブロック図を示す。
図14】発明の態様に従う、例示的な方法のフローチャートを示す。
図15】発明の態様に従う、例示的なクラウド・コンピューティング環境における例示的なアーキテクチャを示す。
【発明を実施するための形態】
【0009】
本発明の態様は、一般に、データ・ストレージに関連し、より詳細には、データ・レプリケーションに関連する。特に、発明の態様は、並べ替え-組み合わせ法を使用して、機械およびクラウド間の迅速なデータ・レプリケーションおよびデータ・ストレージならびにマッピング技術を使用して、例えば、ブロック・サイズが512バイトの、所与のブロック番号に基づく自動生成データのためのユニバーサリー・ユニーク識別子(UUID)を提供する方法およびシステムに関連する。例えば、本明細書で説明される方法、システムおよびプログラム製品は、バックアップ・ストレージからブロック識別子のリストを取得すること、およびブロック・マッピング・テーブルからブロック識別子のそれぞれにデータ・ブロックを自動的に生成することによって、主記憶装置内のデータ・ブロックのリストをレストアする。
【0010】
発明の態様によると、本明細書で説明される方法、システムおよびプログラム製品は、主記憶装置内のデータ・ブロックのリストを複製するために、データの2値の組み合わせを有するブロック識別子に関連するブロック・マッピング・テーブルを作成する。実施形態では、本明細書で説明される方法、システムおよびプログラム製品は、主記憶装置内のデータ・ブロックのリストを受信し、ブロック・マッピング・テーブルを使用して、データ・ブロックのリストからブロック識別子のリストを生成し、ブロック識別子のリストを、データ・ブロックのリストを複製するためにバックアップ・ストレージに送信する。データ・ブロックの生成されたブロック識別子のそれぞれは、ブロック・データを有するブロック・マッピング・テーブルに格納される。この方式では、発明の実施は、ブロック識別子を送信することによってデータ・ブロックのリストを複製することができ、ブロック・マッピング・テーブルからブロック識別子のそれぞれにデータ・ブロックを自動的に生成することができる。ブロック・マッピング・テーブルを使用することは、更新された複製されたデータ・ブロックのブロック識別子を更新して、これらの複製されたデータ・ブロックのブロック識別子を置換するために、更新されたブロック識別子をバックアップ・ストレージに送信することを可能にする。
【0011】
本発明の態様は、コンピュータ蘭連技術における改善を対象とする。実施形態において、システムは、プロセッサ、コンピュータ可読メモリ、1つまたは複数のコンピュータ可読ストレージ媒体および、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングを作成し、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングから、ストレージ内のデータ・ブロックのリストを表すブロック識別子のリストを生成し、ブロック識別子のリストをバックアップ・ストレージに送信して、ストレージ内のデータ・ブロックのリストを複製し、コンピュータ可読ストレージ媒体上に、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピングおよびストレージ内のブロック識別子のリストを格納することができる、1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令を含む。したがって、発明の実施は、ブロック識別子を送信することによって、データ・ブロックのリストを複製でき、ブロック識別子のそれぞれのブロック・マッピング・テーブルからデータ・ブロックを自動的に生成できる。データを複製および格納する動作を行うことができるコンピュータのやり方で、具体的に改善する。
【0012】
発明の実施の追加的な態様は、コンピュータ技術のさらなる非抽象的な改善をもたらす。例えば、1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令を有する1つまたは複数のコンピュータ可読ストレージ媒体を含むコンピュータ・プログラム製品は、コンピューティング・デバイスによって、とりわけ重要で、些末でない技術的な改善の中でも、データ・ブロックの複製のためのブロック識別子を受信し、コンピューティング・デバイスによって、ブロック・サイズのデータの複数の2値の組み合わせを有する複数のブロック識別子に関連するマッピング内のブロック識別子を識別し、コンピューティング・デバイスによって、ブロック・データのリストの複製のためのブロック識別子のリスト内のブロック識別子を、コンピュータ可読ストレージ媒体上に格納することができる。発明の実施は、コンピュータが動作することができる方法で具体的に改善する追加的な要素を説明し、これらの追加的な要素は、コンピュータの機能および能力の非抽象的な改善を提供する。
【0013】
発明の実施の範囲は、個人によって提供され、または、個人から取得される個人情報を収集、格納、または採用し、このような情報は、個人情報の保護についての準拠法に従って使用されることに留意されたい。加えて、このような情報の収集、格納、および使用は、例えば状況および情報の種類に対して適切となり得る、「オプトイン」または「オプトアウト」プロセスを通じてそのような活動に対する個人の同意が課され得る。個人情報の格納および使用は、例えば、機密情報のためのさまざまな暗号化および匿名化技術を通じて、情報の種類を反映した安全な方式で適切になされる。
【0014】
本発明の態様は、任意の統合の技術的詳細レベルにおける、システム、方法もしくはコンピュータ・プログラム製品またはその組み合わせであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(または複数の媒体)を含み得る。
【0015】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は、例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリー・メモリ(CD-ROM)、ディジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、機械的にエンコードされたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造物、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、またはウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
【0016】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0017】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用の構成データであってもよく、またはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部が遠隔コンピュータ上で実行されてもよく、または全体が遠隔コンピュータもしくは遠隔サーバ上で実行されてもよい。上記の最後のシナリオでは、遠隔コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
【0018】
本明細書で説明した本発明の態様を、本発明の実施形態にしたがい、フローチャート命令および方法のブロック図、またはそれらの両方、装置(システム)、およびコンピュータ・プログラム製品を参照して説明した。フローチャートの図示およびブロック図またはそれら両方およびフローチャートの図示におけるブロックおよびブロック図、またはそれらの両方のいかなる組合せでもコンピュータ可読なプログラム命令により実装することができることを理解されたい。
【0019】
それらのコンピュータ可読なプログラム命令は、機械を生成するためのコンピュータまたは他のプログラマブル・データ・プロセッシング装置のプロセッサに提供することができ、コンピュータのプロセッサまたは他のプログラマブル・データ・プロセッシング装置による実行がフローチャートおよびブロック図のブロックまたは複数のブロックまたはこれらの組み合わせで特定される機能/動作を実装するための手段を生成する。これらのコンピュータ、プログラマブル・データ・プロセッシング装置および他の装置またはこれらの組み合わせが特定の仕方で機能するように指令するこれらのコンピュータ可読なプログラム命令は、またコンピュータ可読な記録媒体に格納することができ、その内に命令を格納したコンピュータ可読な記録媒体は、フローチャートおよびブロック図のブロックまたは複数のブロックまたはこれらの組み合わせで特定される機能/動作の特徴を実装する命令を含む製造品を構成する。
【0020】
コンピュータ可読なプログラム命令は、またコンピュータ、他のプログラマブル・データ・プロセッシング装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で操作ステップのシリーズに対してコンピュータ実装プロセスを生じさせることで、コンピュータ、他のプログラマブル装置または他のデバイス上でフローチャートおよびブロック図のブロックまたは複数のブロックまたはこれらの組み合わせで特定される機能/動作を実装させる。
【0021】
図中のフローチャートおよびブロック図は、本発明の種々の実施形態による、システム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を例示する。この点に関し、フローチャートのそれぞれのブロックまたはブロック図は、モジュール、セグメント、または命令の部分を表し、この部分は、特定の論理的機能(複数でもよい)を実装するための1つまたはそれ以上の実行可能な命令を含む。いくつかの代替的な実装においては、ブロック内に記載された機能は、図に記載された順序ではなく発生する場合がある。例えば、連続して示された2つのブロックは、含まれる機能に応じて、1つのステップとして達成でき、同時的、実質的に同時的に、部分的または完全に時間的に重なり合ったやり方で、またはこれらのブロックは、含まれる機能に依存してあるときには逆の順序で実行され得る。また、ブロック図およびフローチャートの図示、またはこれらの両およびブロック図中のブロックおよびフローチャートの図示またはこれらの組み合わせのそれぞれは、特定の機能または動作を実行するかまたまたは特定の目的のハードウェアおよびコンピュータ命令を遂行する特定目的のハードウェアに基づいたシステムにより実装することができることにも留意されたい。
【0022】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実施態様はクラウド・コンピューティング環境だけに限定されないことを理解されたい。本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境において実施することができる。
【0023】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限のインタラクションで迅速に供給およびリリースすることができる構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械およびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするサービス配信モデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント(deployment)モデルを含むことができる。
【0024】
特徴は以下のとおりである。
【0025】
オンデマンド・セルフサービス:クラウド・コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能の供給を、このサービスのプロバイダとのヒューマン・インタラクションを必要とすることなく必要に応じて自動的に一方的に受けることができる。
【0026】
ブロード・ネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば移動電話、ラップトップおよびPDA)による使用を促進する標準的機構を通してアクセスされる。
【0027】
リソース・プーリング(resource pooling):マルチテナント・モデルを使用して多数のコンシューマにサービスを提供するために、プロバイダのコンピューティング・リソースがプールされており、要求に応じて、異なる物理的および仮想リソースが動的に割当ておよび再割当てされる。コンシューマは一般に、提供されたリソースの正確な位置を制御できずまたは正確な位置を知らないが、より高次の抽象化レベル(例えば国、州またはデータセンター)で位置を指定することができるという意味で、位置独立の感覚がある。
【0028】
ラピッド・エラスティシティ(rapid elasticity):機能は、素早くスケールアウトするために迅速かつ弾力的に、場合によっては自動的に供給することができ、素早くスケールインするために迅速にリリースすることができる。コンシューマにとって、供給に利用可能な機能はしばしば無限であるように見え、いつでも好きな量だけ購入することができる。
【0029】
メジャード・サービス(measured service):クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域および使用中ユーザ・アカウント)に対して適切なある抽象化レベルで計測機能に介入することによって、リソースの使用状況を自動的に制御および最適化する。リソースの使用状況を監視、制御および報告して、利用されているサービスのプロバイダとコンシューマの両方に透明性を提供することができる。
【0030】
サービス・モデルは以下のとおりである。
【0031】
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で実行しているプロバイダのアプリケーションを使用する機能である。ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を通してさまざまなクライアント・デバイスからアプリケーションにアクセス可能である。場合によっては可能な限られたユーザ固有のアプリケーション構成の設定を除けば、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション機能を含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしない。
【0032】
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で、プロバイダがサポートするプログラム言語およびツールを使用して作成されたコンシューマ作成または取得のアプリケーションをデプロイする機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成は制御することができる。
【0033】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供されるこの機能は、処理、ストレージ、ネットワークおよび他の基本的なコンピューティング・リソースを供給する機能であり、コンシューマは任意のソフトウェアをデプロイおよび実行することができ、これらのソフトウェアは、オペレーティング・システムおよびアプリケーションを含むことができる。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、オペレーティング・システム、ストレージおよびデプロイされたアプリケーションは制御することができ、場合によっては、選択されたネットワーク構成要素(例えばホスト・ファイアウォール)を限定的に制御することができる。
【0034】
デプロイメント・モデルは以下のとおりである。
【0035】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織体のためだけに運営される。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミス(on-premises)またはオフプレミス(off-premises)で存在することができる。
【0036】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織体によって共有され、利害(例えばミッション、セキュリティ要件、ポリシーおよびコンプライアンス上の問題)を共有する特定のコミュニティをサポートする。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0037】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大きな産業グループが利用可能であり、クラウド・サービスを販売している組織体によって所有される。
【0038】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、固有のエンティティを維持しているが、データおよびアプリケーション・ポータビリティを可能にする標準化された技術または独占技術(例えばクラウド間のロード・バランシングのためのクラウド・バースティング(cloud bursting))によって1つに結合された2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の合成体である。
【0039】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性および意味論的相互運用性(semantic interoperability)に重きを置くサービス指向の環境である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0040】
ここで図1を参照すると、クラウド・コンピューティング・ノードの例の概略が示されている。クラウド・コンピューティング・ノード10は、適当なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される発明の実施形態の使用または機能性の範囲に関するいかなる限定も示唆するように意図されない。それにかかわらず、クラウド・コンピューティング・ノード10は、実施されること、または上記で述べた機能性のいずれかを実行すること、あるいはその両方が可能である。
【0041】
クラウド・コンピューティング・ノード10には、コンピュータ・システム/サーバ12があり、コンピュータ・システム/サーバ12は、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム/サーバ12を用いた使用に適当であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家電、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されない。
【0042】
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的文脈において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ12は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体内に位置し得る。
【0043】
図1に示されるように、クラウド・コンピューティング・ノード10内のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ12のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に連結するバス18を含み得るが、これらに限定されない。
【0044】
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)・バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
【0045】
コンピュータ・システム/サーバ12は、典型的には多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方を含む。
【0046】
システム・メモリ28は、コンピュータ・システム可読媒体を、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの揮発性メモリの形態で含み得る。コンピュータ・システム/サーバ12は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単なる例として、ストレージ・システム34は、非リムーバブル不揮発性磁気媒体(図示せず、かつ典型的には「ハード・ドライブ」と呼ばれる)からの読み出しおよび書き込みのために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク(例えば、「フロッピー・ディスク」)からの読み出しおよび書き込みのための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、または他の光学媒体などのリムーバブル不揮発性光ディスクからの読み出しまたは書き込みのための光学ディスク・ドライブが、提供されてもよい。このような事例では、それぞれが、1つまたは複数のデータ媒体インターフェースによってバス18に接続され得る。さらに図示され、後述されるように、システム・メモリ28は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0047】
プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、システム・メモリ28に記憶され得る。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組み合わせは、ネットワーキング環境の実施を含み得る。プログラム・モジュール42は、概して、本明細書で説明される本発明の実施形態の機能または方法論あるいはその両方を実行する。
【0048】
コンピュータ・システム/サーバ12は、また、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはそれらの組み合わせと通信し得る。このような通信は、入力/出力(I/O)インターフェース22を介して発生し得る。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはそれらの組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信し得る。図示されるように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム/サーバ12と併せて使用され得ると理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含むが、これらに限定されない。
【0049】
次に図2を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されているとおり、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード20を含み、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイス、例えばパーソナル・ディジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cまたは自動車コンピュータ・システム54Nあるいはこれらの組合せは、これらのノードと通信することができる。ノード10は互いに通信することができる。それらのノードは、上で説明したプライベート、コミュニティ、パブリックまたはハイブリッド・クラウドまたはこれらの組合せなどの1つまたは複数のネットワークに、物理的にまたは仮想的にグループ分けされていることがある(図示せず)。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組合せをサービスとして提供することができ、そのため、クラウド・コンシューマは、ローカル・コンピューティング・デバイス上にリソースを維持する必要がない。図2に示されたタイプのコンピューティング・デバイス54A~Nは単なる例であることが意図されていること、ならびにコンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワーク上もしくはアドレス指定可能なネットワーク接続上またはその両方で(例えばウェブ・ブラウザを使用して)、コンピュータ化された任意のタイプのデバイスと通信することができることが理解される。
【0050】
次に図3を参照すると、クラウド・コンピューティング環境50(図2)によって提供される一組の機能抽象化層が示されている。図3に示された構成要素、層および機能は単なる例であることが意図されており、本発明の実施形態はそれらに限定されないことを予め理解しておくべきである。図示のとおり、以下の層および対応する機能が提供される。
【0051】
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65ならびにネットワークおよびネットワーキング構成要素66を含む。いくつかの実施形態では、ソフトウェア構成要素が、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0052】
仮想化層70は抽象化層を提供し、この層から、仮想エンティティの以下の例を提供することができる:仮想サーバ71、仮想ストレージ72、仮想専用ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0053】
一例では、管理層80が以下の機能を提供することができる。リソース供給81は、クラウド・コンピューティング環境内でタスクを実行する目的に利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計量および価格決定(Metering and Pricing)82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースがアプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド・コンシューマおよびタスクの識別確認ならびにデータおよび他のリソースの保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者に、クラウド・コンピューティング環境へのアクセスを提供する。サービス水準管理84は、必要なサービス水準が達成されるようなクラウド・コンピューティング・リソースの割振りおよび管理を提供する。サービス水準合意(Service Level Agreement)(SLA)計画および履行85は、SLAによって将来必要になると予想されるクラウド・コンピューティング・リソースの事前調整および調達を提供する。
【0054】
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ解析処理94、トランザクション処理95、および迅速なデータ・レプリケーション処理96を含む。
【0055】
発明の実施は、1つまたは複数のプログラム・モジュール42が、図3における迅速なデータ・レプリケーション処理96の1つまたは複数の機能を行う(または、コンピュータ・システム/サーバ12に行わせる)ように構成された、図1のコンピュータ・システム/サーバ12を含むことができる。例えば、1つまたは複数のプログラム・モジュール42は、主記憶装置内のデータ・ブロックのリストを複製するために、データの2値の組み合わせを有するブロック識別子に関連するブロック・マッピング・テーブルを作成し、主記憶装置内のデータ・ブロックのリストを受信し、ブロック・マッピング・テーブルを使用して、データ・ブロックのリストからブロック識別子のリストを生成し、ブロック識別子のリストを、データ・ブロックのリストを複製するためにバックアップ・ストレージに送信するように構成することができる。
【0056】
図4は、発明の態様に従う、例示的な環境のブロック図を示す。実施形態では、環境は、図1に関して説明されたコンピュータ・システム12などのコンピュータ・システムとすることができるサーバ400、および図1に関して説明されたメモリ28などのサーバ・メモリ402を含む。一般に、サーバ400は、データ・ストレージ、データ・レプリケーションおよびデータ・リカバリのために必要とされるサービスを提供する。サーバ400は、メモリ402内に、データの2値の組み合わせを有するブロック識別子に関連するブロック・マッピング・テーブルを作成し、主記憶装置内のデータ・ブロックのリストを受信し、ブロック・マッピング・テーブルを使用して、データ・ブロックのリストからブロック識別子のリストを生成し、ブロック識別子のリストを、データ・ブロックのリストを複製するためにバックアップ・ストレージに送信する機能を有する、迅速レプリケーション・モジュール404を含む。迅速レプリケーション・モジュール404は、更新された複製されたデータ・ブロックのブロック識別子を更新し、これらの複製されたデータ・ブロックのブロック識別子を置換するために、更新されたブロック識別子をバックアップ・ストレージに送信する機能を有してもよい。迅速レプリケーション・モジュール404は、バックアップ・ストレージからブロック識別子のリストを取得すること、およびブロック・マッピング・テーブルからブロック識別子のそれぞれにデータ・ブロックを自動的に生成することによって、主記憶装置内のデータ・ブロックのリストをレストアする機能を有してもよい。
【0057】
実施形態では、迅速レプリケーション・モジュール404は、図1に関して説明されたプログラム・モジュール42などの1つまたは複数のプログラム・モジュールを含む。サーバ400は、図4に示したものより、追加的なまたは少ないモジュールを含んでもよい。実施形態では、別個のモジュールが、単一のモジュールに統合されてもよい。追加的または代替的に、単一のモジュールは、複数のモジュールとして実装されてもよい。さらに、環境内のデバイスもしくはネットワークまたは両方は、図4に示されたものに限定されない。実施において、環境は、追加的なデバイスもしくはネットワークまたは両方、少ないデバイスもしくはネットワークまたは両方、異なるデバイスもしくはネットワークまたは両方、または、図4に示されたのと異なってアレンジされたデバイスもしくはネットワークまたは両方を含んでもよい。
【0058】
発明の態様によれば、サーバ400は、メモリ402内に、図1に関して説明されたシステム・ストレージ34などのコンピュータ・ストレージとすることができるサーバ・ストレージ406も含む。実施形態では、サーバ・ストレージ406は、ブロック・データを有するブロック識別子をマッピングするための情報をブロック・ストレージ・マッピング・テーブル408に格納し、ブロック・ストレージの同じ大きさのデータ・ブロックにそれぞれ分割され得るファイル410を格納する。例えば、ファイル410は、512バイトに固定された大きさのデータ・ブロックに分割されることができる。この場合、ブロック・ストレージ・マッピング・テーブル408は、4096ビットの2値の組み合わせを表すデータ・ブロックを有するブロック識別子の関連性を格納できる。当業者は、128バイトのデータ・ブロック、256バイトのデータ・ブロックなどのような、他の固定された大きさのデータ・ブロックが実施形態で用いられ得ることを理解すべきである。
【0059】
図5は、512バイトに固定された大きさデータ・ブロックのブロック・ストレージ・マッピング・テーブルを作成するための例示的なデータ構造を示す。例えば、図5は、連想配列として実装されたテーブルとして表現されたブロック・ストレージ・マッピング・テーブル408を示しており、これは、2の冪の所与の指数の2から2-1までの512バイトの2値の組み合わせのために、ブロック識別子506といったブロック識別子およびブロック・データ508といったブロック・データのような降順に格納されたブロック識別子を格納するリンク・リスト・ノード504などのリンクされたリスト・ノードのバケットに、2の冪の指数化によってインデックスされる。図5に示すように、連想配列の要素502は、2のバケットを表す0から4095までの整数を格納し、ここで、nは、512バイトに固定された大きさデータ・ブロックにおけるビット数である。リンクされたリスト・ノードのそれぞれは、2の冪の所与の指数のバケットに属しているブロック・データを有するブロック識別子に関連する。
【0060】
2の冪の所与の指数のバケットのそれぞれにリンクされた第1のリスト・ノードは、その第1のリンクされたリスト・ノードに割り当てられたバケットをインデックスするための2の冪の所与の指数に、底2の2進値を有する。例えば、リンク・リスト・ノード504は、2の2進値の512バイトの下位8ビット、00000001の値が割り当てられたブロック・データ508と共に示される。図5は、図面の簡素化のために、512バイトのデータ・ブロックの下位8ビットの値のみを示す。2の冪の所与の指数のバケットのそれぞれにリンクされた第1のリスト・ノードは、バケットをインデックスするための2の冪の所与の指数の10進数値が追加されたユニバーサリー・ユニーク識別子(UUID)の値が割り当てられたブロック識別子を有する。例えば、リンク・リスト・ノード504は、値UUID01が割り当てられたブロック識別子506と一緒に示される。この方式では、第1のリンクされたリスト・ノードは、図5に示されている実施形態における配列要素ごとに初期化できる。
【0061】
当業者は、実施形態において他の値が一意のブロック識別子として割り当てられてよいことを理解すべきである。例えば実施形態において、日付およびタイムスタンプを有する初期のUUIDが、生成され、最も下位の2進値の00000000に割り当てられることができる。このUUIDは、512バイトの2値の組み合わせのブロック・データの次の連番が割り当てられた後続のUUIDごとにマイクロ秒ずつ増やされる。例えば、日付およびタイムスタンプを有する初期のUUIDは、1マイクロ秒ずつ増やされ、2の2進値の512バイトの下位8ビット、00000001の値が割り当てられた初期のリンク・リスト・ノード506にUUIDとして割り当てられる。この方式では、各UUIDは、2進値の昇順の512バイトの2値の組み合わせの各ブロック・データに1対1で対応する、1マイクロ秒ずつ増やされる日付およびタイムスタンプによる昇順でブロック識別子が割り当てられるように、適切に割り当てられる。このような割り当ての例は、2022年1月6日8時46分31秒のUUIDがブロック・データ00000000、2022年1月6日8時46分32秒のUUIDがブロック・データ00000001、2022年1月6日8時46分33秒のUUIDがブロック・データ00000010とすることができ、ここで、8時46分31秒のタイムスタンプは、512バイトの2値の組み合わせの次の連番のブロック・データが割り当てられる後続のUUIDごとに、マイクロ秒ずつ8時46分32秒に、次に8時46分33秒に増やされる。
【0062】
加えて、ブロック・データは、512バイトのデータ・ブロックの他の任意の2値の組み合わせのためのリンクされたリスト・ノードを挿入すること、および連番の昇順で配列された値を連番の昇順で配列されたバイナリ・ブロック・データ値に割り当てられたブロック識別子の、最も下位の値から最も上位の値まで1対1の対応を維持する、対応するブロック識別子を割り当てることによって、図5に示されるように初期化されたバイナリ・ストレージ・マッピング408に追加できる。
【0063】
図6は、512バイトの固定された大きさのブロック・データのブロック・ストレージ・マッピング・テーブルを作成するために、図5に示される例示的なデータ構造に追加されるデータ・ブロックのリストを示す。例えば、これらの下位8ビットの値を有する以下の512バイト・データ・ブロックのリストを考える:00001110、00111101、00001011、00100100、00101111および00000110。リスト内の最初のデータ・ブロック、00001110は、指数が3であるデータ・ブロックの2進値(すなわち14)よりも最も近い下位の2進値(すなわち8)を有する2の冪の指数を計算することによって、ブロック・ストレージ・マッピング・テーブル408に挿入される。図6において示されるノード606などのノードは、3の値を有する配列要素をインデックスすること、配列要素のバケット内でノードのリンクされたリストをトラバースすること、および、昇順の2進値のノードのリンクされたリスト内のノードを挿入することによって、ノードのリンクされたリスト内に00001110の2進値が割り当てられたブロック・データで挿入される。ノード606のブロック識別子は、挿入されたノードのブロック・データの値(すなわち、14)と、第1のノードのブロック・データの値(すなわち、8)の差により、配列要素のそのバケット内のノードのリンクされたリストにおける第1のノードのブロック識別子値を増やすことによって、そのノードに割り当てられることができる。 したがって、ノード606は、示されるように、UUID14のブロック識別子に割り当てられる。これと同じ方法で、ノード612、604、608、610および602は、00111101、00001011、00100100、00101111および00000110の下位8ビットをもつこれらのそれぞれの512バイト・ブロック・データ値を有するブロック・ストレージ・マッピング・テーブル408に順番に挿入される。したがって、ブロック・ストレージ・マッピング・テーブルは、データの2値の組み合わせを持つ関連するブロック識別子を作成することができ、データ・ブロックのブロック識別子を生成することができる。
【0064】
図7~9、11~12および14~15は、本発明のさまざまな実施形態による、システム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能および動作を示す、フローチャートもしくはブロック図または両方を示す。上述の通り、各ブロックは、モジュール、セグメントまたは特定の論理機能を実装するための1つまたは複数の実行可能命令を含む命令の一部を表してよい。ブロックで言及される機能は、含まれる機能に応じて、順番から外れて行われることがあり、連続して示される2つのブロックは、実際には、1つのステップとして達成され、同時に、実質的に同時に、または、部分的もしくは完全に一時的にオーバーラップする方法で実行されてよく、または、ブロックは、時として逆の順序で実行されてよい。そして、含まれる機能に応じて、示されているいくつかのブロックが実行され、他のブロックは実行されなくてもよい。
【0065】
図7は、本発明の態様に従う、例示的な方法のフローチャートを示す。方法のステップは、図4の環境で実行されてよく、図4で示される要素を参照して説明される。
【0066】
ステップ702では、システムは、ブロック・ストレージ・マッピング・テーブルを作成する。ブロック・ストレージ・マッピング・テーブルは、データの2値の組み合わせを有するブロック識別子に関連し、ブロック・データのブロック識別子を生成できる。512バイトの固定された大きさのデータ・ブロックの実装では、ブロック・ストレージ・マッピング・テーブルは、4096ビットの2値の組み合わせを表すデータ・ブロックを有するブロック識別子の関連性を格納できる。実施形態では、図4で示されるような迅速レプリケーション・モジュール404は、サーバ・ストレージ406内にブロック・ストレージ・マッピング・テーブル408を作成し、格納する。
【0067】
ステップ704では、システムは、ブロック・ストレージ・マッピング・テーブルから、データ・ブロックのリストを表すブロック識別子のリストを生成する。データ・ブロックのリストは、例えば、ブロック・ストレージの同じ大きさにデータ・ブロック分割されたファイルを表すことができる。実施形態では、図4に示されるファイル410は、512バイトの固定された大きさのデータ・ブロックに分割でき、それから迅速レプリケーション・モジュール404がデータ・ブロックのリストを表すブロック・ストレージ・マッピング・テーブル408からブロック識別子のリストを生成することができる。ブロック識別子UUID14、UUID61、UUID11、UUID36、UUID47、UUID06のリストは、00001110、00111101、00001011、00100100、00101111および00000110の下位8ビットを有する512バイト・データ・ブロックを表す、図6に示されるブロック・ストレージ・マッピング・テーブル408から生成できる。
【0068】
ステップ706では、システムは、リスト・データ・ブロックの代わりにデータ・ブロックのリストを表すブロック識別子のリストを格納できる。例えば、ブロック識別子UUID14、UUID61、UUID11、UUID36、UUID47、UUID06のリストは、0001110、00111101、00001011、00100100、00101111および00000110の下位8ビットを有する512バイト・データ・ブロックを表すために格納できる。実施形態では、図4で示されるような迅速レプリケーション・モジュール404は、データ・ブロックのリストを表すブロック識別子のリストを格納することができる。
【0069】
ステップ708では、システムは、ブロック識別子のリスト内の対応するブロック識別子を更新することによって、データ・ブロックのリスト内のデータ・ブロックを更新する。更新が00001011の下位0001110、00111101、00001011、00100100、00101111および00000110を10000020の下位8ビットを有する512バイト・データ・ブロックに置き換えて、その結果、0001110、00111101、10000020、00100100、00101111および00000110の下位8ビットを有する512バイト・データ・ブロックのリストとなる、0001110、00111101、00001011、00100100、00101111および00000110の下位8ビットを有する512バイト・データ・ブロックのリストの更新を考慮すると、ブロック識別子UUID14、UUID61、UUID11、UUID36、UUID47、UUID06のリストは、ブロック識別子UUID11をUUID130に置きかえて、その結果、更新されたブロック識別子UUID14、UUID61、UUID130、UUID36、UUID47、UUID06のリストとなることによって、更新される。実施形態では、図4に示されるような迅速レプリケーション・モジュール404は、ブロック識別子のリスト内の対応するブロック識別子を更新することによって、データ・ブロックのリスト内のデータ・ブロックを更新できる。
【0070】
ステップ710では、システムは、リカバリ・ストレージ内のブロック識別子のリストを格納することによって、主記憶装置内にデータ・ブロックのリストを複製する。例えば、ブロック識別子UUID14、UUID61、UUID11、UUID36、UUID47、UUID06のリストは、001110、00111101、00001011、00100100、00101111および00000110の下位8ビットを有する512バイト・データ・ブロックのリストを表すリカバリ・ストレージに送信され、格納できる。実施形態では、図4で示されるような迅速レプリケーション・モジュール404は、データ・ブロックのリストを表すブロック識別子のリストを、リカバリ・ストレージに送信することができる。当業者は、データ・ブロックのリスト、特に、大きなデータ・ブロックのリストに代えて、ブロック識別子のリストをリカバリ・ストレージに送信することによって、クラウドでのデータ送信の大幅な削減を理解すべきである。
【0071】
ステップ712では、システムは、ブロック識別子のリストから、主記憶装置内のデータ・ブロックのリストをレストアする。例えば、ブロック・ストレージのデータ・ブロックに分割されたファイルからのデータ・ブロックのリストを表す、ブロック識別子UUID14、UUID61、UUID11、UUID36、UUID47、UUID06のリストは、ファイルをレストアする必要があるときにリカバリ・ストレージから取得されることができ、各ブロック識別子は、ブロック・ストレージ・マッピング・テーブルからブロック・データを取得して、ファイルをレストアするためにデータ・ブロックのリストを構築するのに使用することができる。実施形態では、図4に示されるような迅速レプリケーション・モジュール404は、リカバリ・ストレージ内のブロック識別子のリストから、主記憶装置内のデータ・ブロックのリストをレストアする。ブロック識別子は、ブロック識別子の追加された10進数値に最も近い下位の値を有する2の冪の指数を計算すること、指数の値を有する配列要素をインデックスすること、配列要素のバケット内でノードのリンクされたリストをトラバースして、ブロック識別子を有するノードを配置すること、および、ブロック識別子を有するそのノードに割り当てられたブロック・データを取得することによって、図4におけるブロック・ストレージ・マッピング・テーブル408からブロック・データを取得するのに使用することができる。
【0072】
図8は、本発明の実施形態に従う、例示的な方法のフローチャートを示す。方法のステップは、図4の環境で実行されてよく、図4および図5で示される要素を参照して説明される。特に、図8のフローチャートは、図4および図5で示されるブロック・ストレージ・マッピング・テーブル408を作成する例示的な方法を示す。
【0073】
ステップ802では、システムは、データ・ブロック内のビット数と等しい配列要素の数を有する2の冪の指数化によってインデックスされた、順序付けられた連想配列として、テーブルを作成する。実施形態では、要素の連想配列は、2のバケットを表す0から4095までの整数を格納することができ、ここで、nは、512バイトの固定された大きさのデータ・ブロック内のビット数である。実施形態では、図4に示されるような迅速レプリケーション・モジュール404は、2の冪の指数化によってインデックスするのに使用される0から4095までの整数を格納する、図5に示されるような要素504の順序付けられた連想配列として、ブロック・ストレージ・マッピング・テーブル408を作成する。
【0074】
ステップ804では、システムは、リンクされたリスト・ノードを各配列要素に追加して、ブロック・データおよびブロック識別子をブロック・データに格納する。リンクされたリスト・ノードのそれぞれは、2の冪の所与の指数のバケットに属しているブロック・データを有するブロック識別子に関連する。実施形態では、図4で示されるような迅速レプリケーション・モジュール404は、リンクされたリスト・ノード506を図5に示されるような書く配列要素504に追加し、ブロック・データおよびブロック識別子をブロック・データに格納する。
【0075】
ステップ806では、システムは、各配列要素のそれぞれの第1のリンクされたノードのブロック・データについての配列要素をインデックスするために使用される2の冪の2進値を割り当てる。例えば、リンク・リスト・ノード504は、2の2進値の512バイトの下位8ビット00000001の値が割り当てられたブロック・データ508を有する図5で示される。説明の簡素化のために、図5は、512バイト・データ・ブロックの下位8ビットの値のみを示している点に留意する。実施形態では、図4で示されるような迅速レプリケーション・モジュール404は、それぞれのリンクされたノードのブロック・データについてのリンクされたノードの配列要素をインデックスするために使用される2の冪の2進値を割り当てる。
【0076】
ステップ808では、システムは、各リンクされたノードに一意のブロック識別子を割り当てる。例えば、2の冪の所与の指数のバケットのそれぞれのリンクされた第1のノードは、そのバケットをインデックスするために2の冪の指数の10進値が追加されたユニバーサリー・ユニーク識別子(UUID)が、図5で示される実施形態で割り当てられたブロック識別子を有する。例えば、リンク・リスト・ノード504は、値UUID01が割り当てられたブロック識別子を有する図5で示される。代わりの実施形態では、日付およびタイムスタンプを有する初期UUIDは、例えば、2022年1月6日8時46分31秒などが生成され、最も低い00000000の2進値が割り当てられる。このUUIDは、512バイトの2値の組み合わせの次の連番のブロック・データに割り当てられる、後続のUUIDごとにマイクロ秒ずつ増やされる。例えば、2022年1月6日8時46分31秒の日付およびタイムスタンプを有する初期のUUIDは、2022年1月6日8時46分32秒のように1マイクロ秒ずつ増やされ、ブロック識別子として、00000001のブロック・データ値が割り当てられた初期のリンクされたリスト・ノード506に割り当てることができる。後続の各UUIDは、ブロック識別子が、2進値によって昇順で配列される512バイトの2値の組み合わせの各ブロック・データに1対1で対応して、1マイクロ秒ずつ増やされる日付およびタイムスタンプによる昇順の配列となるように、適切に割り当てることができる。図4で示されるような迅速レプリケーション・モジュール404は、実施形態において、一意のブロック識別子を各リンクされたノードに割り当てる。
【0077】
そしてステップ810では、システムは、テーブルをサーバ・ストレージに保存する。各配列要素のリンクされた第1のリスト・ノードのブロック識別子およびブロック・データを割り当てたあと、テーブルは、初期化され、データ・ブロックのブロック識別子を生成し、ブロック識別子内の対応するブロック識別子を更新することによって、データ・ブロックのリスト内のデータ・ブロックを更新し、主記憶装置内のデータ・ブロックのリストをリカバリ・ストレージ内のブロック識別子のリストとして複製し、かつ、リカバリ・ストレージ内のブロック識別子のリストから、主記憶装置内のデータ・ブロックのリストをレストアするのに使用することができる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、テーブルをサーバ・ストレージに保存する。
【0078】
当業者は、ブロック識別子をブロック・データの2値の組み合わせにマッピングするための実施形態では、他のデータ構造が作成されてもよく、並べ替え-組み合わせ法およびユニバーサリー・ユニーク識別子(UUID)を使用して、データ・ブロックのブロック識別子を生成するのに使用できることを理解するであろう。例えば、他のデータ構造は、連続した昇順で配列された2値ブロック・データ値を連続した昇順で配列した値が割り当てられた、ブロック識別子の低い値から高い値まで1対1の対応を維持するリンクされたノードのリストなどの、バケットのリストで均等にブロック・データを分散させるのに用いることができる。さらに、128バイト・データ・ブロック、256バイト・データ・ブロックなどの異なる固定された大きさのデータ・ブロックの2値の組み合わせにブロック識別子をマッピングするための実施形態では、他のデータ構造が作成されてよい。
【0079】
図9は、本発明の態様に従う、例示的な方法のフローチャートを示す。方法のステップは、図4の環境で実行されてよく、図4~6で示される要素を参照して説明される。特に、図9のフローチャートは、図4~6で示されるブロック・ストレージ・マッピング・テーブル408を使用してデータ・ブロックのブロック識別子を生成する例示的な方法を示す。
【0080】
ステップ902では、システムは、ブロック・ストレージのデータ・ブロックのリストを受信する。例えば、それらの下位8ビットの値00001110、00111101、00001011、00100100、00101111および00000110を有する512バイト・データ・ブロックのリストは、512バイトの固定された大きさのデータ・ブロックに分割された図4で示されるファイル410を示すことができる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、ブロック・ストレージのデータ・ブロックのリストを受信することができる。
【0081】
ステップ904では、システムは、各データ・ブロックのテーブルをインデックスするのに使用される2の冪の指数を見つける。例えば、リスト内の第1のデータ・ブロック00001110のテーブルをインデックスするのに使用される2の冪の指数は、指数が3である、データ・ブロックの2進値(すなわち14)よりも最も近い下位の2進値(すなわち8)を有する2の冪の指数を計算することによって、見つけられる。順番に、残りのデータ・ブロック00111101、00001011、00100100、00101111および00000110のそれぞれのテーブルをインデックスするのに使用される2の冪の指数は、同様に、データ・ブロックの2進値(すなわち、それぞれ61、11、36、47および6)に最も近い下位の2進値(すなわち、それぞれ5、3、5、5および2)を有する2の冪の指数を計算することによって、見つけられる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、各データ・ブロックのテーブルをインデックスするのに使用される2の冪の指数を見つけることができる。
【0082】
ステップ906では、システムは、データ・ブロックのそれぞれの一意のブロック識別子を生成する。データ・ブロックのブロック識別子は、データ・ブロックの2進値に最も近い下位の2進値を有する2の冪の指数化によってテーブルをインデックスすること、およびデータ・ブロックの値と第1のノードのブロック・データとの差分によって、テーブルのバケット内でノードのリンクされたリスト内の第1のノードの識別子値を増やすことによって、生成することができる。例えば、図6に示されるノード606は、第1のノードのブロック識別子値UUID08を増やすことによって、データ・ブロックの値(すなわち、14)と、第1のノードのデータ・ブロック・値(すなわち、8)との差により、配列要素のバケット内でノードのリンクされたリスト内で、UUID14のブロック識別子が割り当てられる。この方法では、実施形態において、図4で示される迅速レプリケーション・モジュール404は、データ・ブロックのブロック・ストレージ・マッピング・テーブル408からブロック識別子を生成することができる。そして、図6で示される、ブロック識別子、ノード606に割り当てられたUUID14、ノード612に割り当てられたUUID61、ノード604に割り当てられたUUID11、ノード608に割り当てられたUUID36、ノード610に割り当てられたUUID47およびノード602に割り当てられたUUID06は、00001110、00111101、00001011、00100100、00101111および00000110の下位8ビットを有する512バイト・データ・ブロックの図5で示されるブロック・ストレージ・マッピング・テーブル408から生成することができる。
【0083】
ステップ908では、システムは、各データ・ブロックの2の冪の指数化によってインデックスされた、リンクされたリストに一意のブロック識別子を有するノードを昇順で挿入することによって、データ・ブロックのそれぞれのテーブルを更新する。例えば、図6で示されるリンクされたリスト・ノード606は、3の値を有するテーブルをインデックスすること、テーブルのバケット内でノードのリンクされたリストをトラバースすること、および、ブロック識別子の値による昇順の2進値のノードのリンクされたリスト内のノードを挿入することによって、UUID14のブロック識別子に挿入される。実施形態では、図4で示される迅速レプリケーション・モジュール404は、データ・ブロックのそれぞれの2の冪の指数化によってインデックスされた、リンクされたリストに一意のブロック識別子を有するノードを昇順で挿入することによって、データ・ブロックごとのテーブルを更新する。
【0084】
ステップ910では、システムは、各データ・ブロックの2進値を、各データ・ブロックごとに生成された一意のブロック識別子を有する挿入された各ノードのそれぞれのブロック・データに割り当てる。例えば、00001110の下位8ビットの2進値を有するデータ・ブロックのUUID14の割り当てられたブロック識別子を有する、図6で示されるリンクされたリスト・ノード606は、00001110の2進値が割り当てられる。そして、ブロック識別子、ノード612に割り当てられたUUID61、ノード604に割り当てられたUUID11、ノード608に割り当てられたUUID36、ノード610に割り当てられたUUID47、ノード602に割り当てられたUUID06を有する挿入された各ノードのブロック・データ値は、図6に示されるように、00111101、00001011、00100100、00101111および00000110の2進値がそれぞれ割り当てられる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、各データ・ブロックの2進値を、各データ・ブロックごとに生成された一意のブロック識別子を有する挿入された各ノードの各ブロック・データに割り当てる。
【0085】
ステップ912では、システムは、更新されたテーブルを格納する。実施形態では、図4で示される迅速レプリケーション・モジュール404は、更新されたテーブルをサーバ・ストレージに格納する。データ・ブロックのブロック識別子を生成するための他の実施形態では、日付およびタイムスタンプを有する初期のUUIDは、例えば、2022年1月6日8時46分31秒などを生成することができ、最も低い00000000の2進値を割り当てることができる。このUUIDは、512バイトの2値の組み合わせの次の連番のブロック・データに割り当てられる後続のUUIDごとにマイクロ秒ずつ増やすことができる。例えば、2022年1月6日8時46分31秒の日付およびタイムスタンプを有する初期のUUIDは、2022年1月6日8時46分32秒のように1マイクロ秒ずつ増やされ、ブロック識別子として、00000001のブロック・データ値が割り当てられた初期のリンクされたリスト・ノード506に割り当てられる。後続の各UUIDは、2進値の昇順で配列される512バイトの2値の組み合わせの各ブロック・データに1対1で対応する、1マイクロ秒ずつ増やされる日付およびタイムスタンプによる昇順でブロック識別子が割り当てられるように、適切に割り当てられる。
【0086】
ステップ914では、システムは、データ・ブロックのリストの代わりに、データ・ブロックのリストを表すブロック識別子のリストを格納する。このようなブロック識別子のリストは、リカバリ・ストレージに格納され、主記憶装置内のデータ・ブロックのリストを複製でき、主記憶装置内に格納されるこのようなブロック識別子のリストは、主記憶装置内のデータ・ブロックのリストをレストアするのに用いることができる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、データ・ブロックのリストの代わりに、データ・ブロックのリストを表すブロック識別子のリストを格納する。
【0087】
データ・ブロックのブロック識別子を生成するための実施形態では、日付およびタイムスタンプを有するUUIDを生成するのにマルチプレクサを用いてよい。個の実施形態では、データ・ブロックは、日付およびタイムスタンプを有する初期のUUIDを有するマルチプレクサに入力され、マルチプレクサは、そのデータ・ブロックのための日付およびタイムスタンプを有する64ビットのUUIDを出力する。マルチプレクサは、昇順で配列された512バイトの2値の組み合わせの次の連番のブロック・データに割り当てられた後続のUUIDごとに、タイムスタンプをマイクロ秒ずつ増やすことができる。
【0088】
図10は、本発明の実施形態に従う、一意のブロック識別子を生成するためのマルチプレクサの例示的な回路図を示す。例えば、図10は、4096ビットの入力1002を受信し、MUX1、MUX2およびMUX3に渡し、64ビットの出力1004を生成するように設計されたデジタル・マルチプレクサ1000の回路図を説明する。マルチプレクサは、図1に関して説明されたコンピュータ・システム12などのコンピュータ・システムの例示的な環境と動作的に結合したマイクロチップとすることができる。実施形態では、ブロック識別子を割り当てる必要がある4096ビットのデータ・ブロックは、日付およびタイムスタンプを有する初期のUUIDを有するマルチプレクサ1000に入力することができ、マルチプレクサは、そのデータ・ブロックの日付およびタイムスタンプを有する64ビットのUUIDを出力する。このUUIDは、512バイトの2値の組み合わせの次の連番のブロック・データに割り当てられる、後続のUUIDごとにマイクロ秒ずつ増やすことができる。この方法では、各UUIDは、ブロック識別子が、結果として、2進値の昇順の512バイトの2値の組み合わせの各ブロック・データに1対1で対応する、1マイクロ秒ごとに増やされる日付およびタイムスタンプによって昇順の割り当てとなるように、適切に割り当てることができる。したがって、マルチプレクサは、512バイトの固定された大きさのデータ・ブロックの一意のブロック識別子を生成することができる。例えば128バイトまたは256バイトの、他の固定された大きさのデータ・ブロックの実施形態では、マルチプレクサは、1024ビットまたは2048ビットをそれぞれ入力として受信するのに使用され、16ビット識別子を生成することができる。
【0089】
図11は、本発明の実施形態に従う、例示的な方法のフローチャートを示す。方法のステップは、図4の環境で実行でき、図4~6に関して説明された。特に、図11は、図4~6で示したブロック・ストレージ・マッピング・テーブル408を使用してブロック識別子のリスト内の対応するブロック識別子を更新することによって、データ・ブロックのリスト内のデータ・ブロックを更新する例示的な方法を示す。
【0090】
ステップ1102では、システムは、ブロック識別子のリストによって表されるデータ・ブロックのリスト内の更新されたデータ・ブロックを受信する。例えば、10000020の下位8ビットを有するデータ・ブロックが受信され、00001110、00111101、00001011、00100100、00101111および00000110の下位8ビットを有する512バイト・データ・ブロックのリストのうち、00001011の下位8ビットを有するデータ・ブロックと置き換えることができる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、ブロック識別子のリストによって表されるデータ・ブロックのリスト内の更新されたデータ・ブロックを受信する。
【0091】
ステップ1104では、システムは、更新されたデータのブロックのテーブルをインデックスするのに使用される2の冪の指数を見つける。例えば、更新されたデータのブロックのテーブルをインデックスするのに使用される2の冪の指数、10000020は、データ・ブロックの2進値(すなわち、130)に最も近い下位の2進値(すなわち、128)を有する2の冪の指数を計算することによって見つけることができる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、更新されたデータのブロックのテーブルをインデックスするのに使用される2の冪の指数を見つけることができる。
【0092】
ステップ1106では、システムは、更新されたデータ・ブロックのデータ・ブロックが、2の冪の指数化によってインデックされたノードのリンクされたリスト内にあるかどうかを決定する。実施形態では、図4で示される迅速レプリケーション・モジュール404は、ブロック・データがノードのリンクされたリスト内にあるかどうかを確認する指数7によってインデックスされた、図6で示されるブロック・マッピング・テーブル408内のノードのリンクされたリストをトラバースする。更新されたデータ・ブロックのデータ・ブロックがノードのリンクされたリスト内にあるとシステムが決定した場合には、次いでシステムは、ステップ1108において例示的な方法のステップの実行を継続する。そうでない場合には、ステップ1110において例示的な方法のステップの実行を継続する。
【0093】
ステップ1106においてシステムが、更新されたデータ・ブロックのデータ・ブロックがノードのリンクされたリスト内にあると決定した場合に、ステップ1008では、システムは、更新されたデータ・ブロックのブロック・データを有するノードから、ブロック識別子を取得する。例えば、更新されたデータ・ブロックの下位8ビットのブロック・データが、10000020に代えて00111101であった場合に、次いで、図4で示される迅速レプリケーション・モジュールは、ブロック・データがノードのリンクされたリスト内にあるかどうかを確認し、図6で示されるノード612内の00111101のデータ・ブロックを見つける実施形態では、指数5でインデックスされた、図6で示されるブロック・マッピング・テーブル408内のノードのリンクされたリストをトラバースする。この場合には、システムは、ノード612に割り当てられたブロック識別子UUID61を取得する。
【0094】
ステップ1106においてシステムが、更新されたデータ・ブロックのデータ・ブロックが10000020のデータ・ブロックである場合として、ノードのリンクされたリスト内にあると決定した場合に、ステップ1110では、システムは、一意のブロック識別子を生成する。データ・ブロックのブロック識別子は、データ・ブロックの2進値に最も近い下位の2進値を有する2の冪の指数化によってテーブルをインデックスすること、および、データ・ブロックの値と、第1のノードのブロック・データとの差により、テーブルのバケット内でノードのリンクされたリスト内の第1のノードのブロック識別子値を増やすことによって、生成できる。したがって、10000020の更新されたデータ・ブロックの2進値に最も近い下位の2進値を有する2の冪の指数は、7である。そして、UUID130のブロック識別子は、指数7を使用してテーブルをインデックスすること、および、配列要素のバケット内でノードのリンクされたリスト内で、データ・ブロックの値(すなわち、130)および第1のノードの値(すなわち128)との差により、第1のノードのブロック識別子値UUID130を増やすことによって、生成される。実施形態では、図4で示される迅速レプリケーション・モジュール408は、更新されたデータ・ブロックのブロック・ストレージ・マッピング・テーブル408からブロック識別子を生成することができる。上述した通り、データ・ブロックのブロック識別子を生成するための代替的な実施形態では、日付およびタイムスタンプを有する初期のUUIDは、例えば2022年1月6日8時46分31秒のように生成でき、00000000の最も低い2進値を割り当てることができ、このUUIDは、512バイトの2値の組み合わせの次の連番のブロック・データが割り当てられる後続のUUIDごとに、マイクロ秒ずつ増やすことができる。
【0095】
ステップ1112では、システムは、一意の識別子を有するノードを、更新されたデータ・ブロックの2の冪の指数化でインデックスされたリンクされたリストに昇順で挿入することによって、テーブルを更新する。例えば、リンクされたリスト・ノードは、7の値を有するテーブルにインデックスすること、テーブルのバケット内でノードのリンクされたリストをトラバースすること、および、ノードをブロック識別子の値による昇順でノードのリンクされたリストに挿入することによって、UUID130のブロック識別子に挿入される。図4で示される迅速レプリケーション・モジュール404は、一意のブロック識別子UUID130を有するノードを、10000020の更新されたデータ・ブロックの2進値に最も近い下位の2進値を有する2の冪の指数、7の値でインデックスされたリンクされたリストに昇順で挿入することによって、更新されたデータ・ブロックを有するテーブルを更新する。
【0096】
ステップ1114では、システムは、更新されたデータ・ブロックの2進値を、更新されたデータ・ブロックについて生成された一意のブロック識別子を有する挿入されたノードのブロック・データに割り当てる。例えば、10000020の下位8ビットの2進値を有するデータ・ブロックの、UUID130の割り当てられたブロック識別子を有するテーブルに挿入されたリンクされたリスト・ノードは、10000020の2進値が割り当てられる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、10000020の2進値を、UUID130の割り当てられたブロック識別子を有するテーブルに挿入された、リンクされたリスト・ノードに割り当てる。
【0097】
ステップ1116では、システムは、更新されたテーブルを格納する。実施形態では、図4で示される迅速レプリケーション・モジュール404は、更新されたテーブルをサーバ・ストレージに格納する。
【0098】
ステップ1118では、システムは、ブロック識別子のリスト内の更新されたデータ・ブロックのブロック識別子に更新する前に、データ・ブロックのブロック識別子を置き換える。00001110、00111101、00001011、00100100、00101111および00000110の下位8ビットを有する所与の512バイト・データ・ブロックのリスト、および、00001011の下位8ビットを有するデータ・ブロックを置き換える10000020の下位8ビットを有するデータ・ブロックを考慮すると、ブロック識別子UUID14、UUID61、UUI11、UUID36、UUID47、UUID06のリストは、ブロック識別子UUID11をブロック識別子UUID130に置き換えることによって、UUID14、UUID61、UUI130、UUID36、UUID47、UUID06に更新される。実施形態では、図4で示される迅速レプリケーション・モジュール404は、ブロック識別子のリスト内の更新されたデータ・ブロックのブロック識別子に更新する前に、データ・ブロックのブロック識別子を置き換える。
【0099】
ステップ1120では、システムは、ブロック識別子の更新されたリストを格納する。実施形態では、図4で示される迅速レプリケーション・モジュール404は、ブロック識別子の更新されたリストを格納する。このようなブロック識別子の更新されたリストは、実施形態においてリカバリ・ストレージに格納され、ブロック識別子のリストを更新する前に、主記憶装置から複製されたデータ・ブロックのリストを置き換えることができる。実施形態では、サーバは、更新されたブロック識別子をリカバリ・サーバに送信でき、リカバリ・サーバは、対応するブロック識別子を置き換えることによって、ブロック識別子のリストを更新することができる。
【0100】
図12は、本発明の態様に従う、例示的な方法のフローチャートを示す。方法のステップは、図4の環境で実行されてよく、図4および図6で示される要素を参照して説明される。特に、図12のフローチャートは、図4および図6で示されるブロック・ストレージ・マッピング・テーブル408を使用してリカバリ・ストレージ内のブロック識別子のリストを格納することによって、主記憶装置内のデータ・ブロックのリストを複製する例示的な方法を示す。
【0101】
ステップ1202では、システムは、複製のためにデータ・ブロックのリストから、データ・ブロックを受信する。例えば、512バイト・データ・ブロックのリスト内の00001011の下位8ビットを有するデータ・ブロックは、複製のために受信することができる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、複製のためにデータ・ブロックのリストからデータ・ブロックを受信する。
【0102】
ステップ1204では、システムは、データ・ブロックのテーブルをインデックスするために使用される2の冪の指数を見つける。例えば、データ・ブロックのテーブルをインデックスするために使用される2の冪の指数、00001011は、指数が3であるデータ・ブロックの2進値(すなわち11)に最も近い下位の2進値(すなわち8)を有する2の冪の指数を計算することによって、見つけられる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、データ・ブロックのテーブルをインデックスするために使用される2の冪の指数を見つける。
【0103】
ステップ1206では、システムは、データ・ブロックのブロック・データが、データ・ブロックの2の冪の指数化によってインデックスされるノードのリンクされたリスト内にあるかどうかを決定する。実施形態では、図4で示される迅速レプリケーション・モジュール404は、00001011のブロック・データがノードのリンクされたリスト内にあるかどうかを確認する指数3によってインデックスされた、図6で示されるブロック・マッピング・テーブル408内のノードのリンクされたリストをトラバースする。データ・ブロックのブロック・データがノードのリンクされたリスト内であるとシステムが決定した場合、次いでシステムは、ステップ1208において例示的な方法のステップの実行を継続する。そうでない場合には、ステップ1210において例示的な方法のステップの実行を継続する。
【0104】
ステップ1206においてデータ・ブロックのブロック・データがノードのリンクされたリスト内にあるとシステムが決定した場合、ステップ1208では、システムは、データ・ブロックのブロック・データを有するノードから、ブロック識別子を取得する。例えば、00001011の下位8ビット・ブロック・データを考慮すると、図4で示される迅速レプリケーション・モジュール404は、ブロック・データがノードのリンクされたリスト内にあるかどうかを確認する実施形態において指数3によってインデックスされた、図6で示されるブロック・マッピング・テーブル408内のノードのリンクされたリストをトラバースし、図6で示されるようなノード604内の00001011のブロック・データを見つける。そして、システムは、ノード604に割り当てられたブロック識別子UUID11を取得する。
【0105】
ステップ1206においてデータ・ブロックのブロック・データがノードのリンクされたリスト内にないとシステムが決定した場合、ステップ1210では、システムは、一意のブロック識別子を生成する。データ・ブロックのブロック識別子は、データ・ブロックの2進値に最も近い下位の2進値を有する2の冪の指数化によってテーブルをインデックスすること、およびデータ・ブロックの値と第1のノードのブロック・データとの差分によって、テーブルのバケット内でノードのリンクされたリスト内の第1のノードの識別子値を増やすことによって、生成できる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、データ・ブロックのブロック・ストレージ・マッピング・テーブル408からブロック識別子を生成する。上述した通り、データ・ブロックのブロック識別子を生成するための代替的な実施形態では、日付およびタイムスタンプを有する初期のUUIDは、例えば2022年1月6日8時46分31秒のように生成でき、00000000の最も低い2進値を割り当てることができ、このUUIDは、512バイトの2値の組み合わせの次の連番のブロック・データが割り当てられる後続のUUIDごとに、マイクロ秒ずつ増やすことができる。
【0106】
ステップ1212では、システムは、各データ・ブロックの2の冪の指数化によってインデックスされた、リンクされたリストに一意のブロック識別子を有するノードを昇順で挿入することによって、テーブルを更新する。例えば、UUID11のブロック識別子を有する図6で示されるリンク・リスト・ノード604は、テーブルを指数3でインデックスすること、テーブルのバケット内でノードのリンクされたリストをトラバースすること、および、ブロック識別子の値の昇順でノードのリンクされたリストにノードを挿入することによって、テーブルに挿入された。実施形態では、迅速レプリケーション・モジュール404は、データ・ブロックの2の冪の指数化によってインデックスされた、リンクされたリストに一意のブロック識別子を有するノードを昇順で挿入することによって、テーブルを更新する。
【0107】
ステップ1214では、システムは、データ・ブロックの2進値を、データ・ブロックのために生成された一意のブロック識別子を有する挿入されたノードのブロック・データに割り当てる。例えば、00001011の下位8ビットの2進値を有するデータ・ブロックのUUID11の割り当てられたブロック識別子を有するテーブル内のリンクされたリスト・ノードは、00001011の2進値が割り当てられた。実施形態では、迅速レプリケーション・モジュール404は、データ・ブロックの2進値を、データ・ブロックのために生成された一意のブロック識別子を有する挿入されたノードのブロック・データに割り当てる。
【0108】
ステップ1216では、システムは、更新されたテーブルを格納する。実施形態では、迅速レプリケーション・モジュール404は、更新されたテーブルをサーバ・ストレージに格納する。
【0109】
ステップ1206においてデータ・ブロックのブロック・データがノードのリンクされたリスト内にないとシステムが決定した場合、ステップ1218では、システムは、ブロック識別子およびブロック・データを複製のためにリカバリ・ストレージに送信する。そうすることによって、リカバリ・ストレージは、ブロック識別子を、データ・ブロックのリストの複製のためのブロック識別子のリスト内に格納でき、実施形態におけるリカバリ・ストレージに格納されたブロック・ストレージ・マッピング・テーブル内にブロック・データを格納することができる。実施形態では、図4で示される迅速レプリケーション・モジュール404は、ブロック識別子をリカバリ・ストレージに送信し、ブロック識別子を、データ・ブロックのリストの複製のためのブロック識別子のリスト内に格納し、かつ、ブロック・データを送信し、リカバリ・ストレージに格納されたブロック・ストレージ・マッピング・テーブル内に格納する。
【0110】
ステップ1206においてデータ・ブロックのブロック・データがノードのリンクされたリスト内にあるとシステムが決定した場合、ステップ1220では、システムは、ブロック・データなしの複製のために、ブロック識別子をリカバリ・ストレージに送信する。この場合、ブロック・データは、以前にリカバリ・ストレージに送信された。そして、リカバリ・ストレージは、ブロック識別子を、データ・ブロックのリストの複製のためのブロック識別子のリスト内に格納する。実施形態では、図4で示される迅速レプリケーション・モジュール404は、ブロック識別子をリカバリ・ストレージに送信し、ブロック識別子を、データ・ブロックのリストの複製のためのブロック識別子のリスト内に格納する。
【0111】
図13は、発明の態様に従う、例示的な環境のブロック図を示す。実施形態では、環境は、図1に関して説明されたコンピュータ・システム12などのコンピュータ・システムであってもよいリカバリ・サーバ1300、および、図1に関して説明されたメモリ28などのリカバリ・サーバ・メモリ1302を含む。一般に、リカバリ・サーバ1300は、複製されたデータのデータ・ストレージおよびデータ・リカバリに必要なサービスを提供する。リカバリ・サーバ1300は、リカバリ・サーバ・メモリ1302内に、実施形態において、データの2値の組み合わせを有するブロック識別子に関連するブロック・マッピング・テーブルを作成し、主記憶装置内のブロック識別子のリストを受信し、リカバリ・ストレージ内のブロック・マッピング・テーブルを更新し、リカバリ・ストレージ内にブロック識別子のリストを格納し、かつ、ブロック識別子のリストを主記憶装置に送信して、主記憶装置内のデータ・ブロックのリストをレストアする機能を有する迅速リカバリ・モジュール1304を含む。迅速リカバリ・モジュール1304は、実施形態において、更新された複製データ・ブロックの更新されたブロック識別子を受信し、データ・ブロックのリストの複製を表す、リカバリ・ストレージ内のブロック識別子のリスト内の更新されたブロック識別子を更新する前に、これらの複製されたデータ・ブロックのブロック識別子を置き換える機能を有することもできる。迅速リカバリ・モジュール1304は、実施形態において、リカバリ・ストレージ内のブロック識別子のリストを有するデータ・ブロックのリストを、主記憶装置に送信し、主記憶装置内のデータ・ブロックのリストをレストアする機能を有することもできる。
【0112】
実施形態では、迅速リカバリ・モジュール1304は、図1に関して説明されたプログラム・モジュール42のような1つまたは複数のプログラム・モジュールを含むことができる。リカバリ・サーバ1300は、図13に示したものより、追加的なまたは少ないモジュールを含んでもよい。実施形態では、別個のモジュールが、単一のモジュールに統合されてもよい。追加的または代替的に、単一のモジュールは、複数のモジュールとして実装されてもよい。さらに、環境内のデバイスもしくはネットワークまたは両方は、図13に示されたものに限定されない。実施において、環境は、追加的なデバイスもしくはネットワークまたは両方、少ないデバイスもしくはネットワークまたは両方、異なるデバイスもしくはネットワークまたは両方、または、図13に示されたのと異なってアレンジされたデバイスもしくはネットワークまたは両方を含んでもよい。
【0113】
発明の態様によれば、リカバリ・サーバ1304は、リカバリ・サーバ・メモリ1302、内に、図1に関して説明されたシステム・ストレージ34などのコンピュータ・ストレージとすることができるリカバリ・サーバ・ストレージ1306も含む。実施形態では、リカバリ・サーバ・ストレージ1306は、ブロック・データを有するブロック識別子をマッピングするための情報をブロック・ストレージ・マッピング・テーブル1308に格納し、ブロック・ストレージの同じ大きさのデータ・ブロックのリストの複製を表すブロック識別子のリストをそれぞれ有するリカバリ・ファイル1310を格納する。512バイトに固定された大きさのデータ・ブロックについて、ブロック・ストレージ・マッピング・テーブル1308は、4096ビットの2値の組み合わせを表すデータ・ブロックを有するブロック識別子の関連性を格納できる。当業者は、128バイトのデータ・ブロック、256バイトのデータ・ブロックなどのような、他の固定された大きさのデータ・ブロックが実施形態で用いられ得ることを理解すべきである。
【0114】
図12は、本発明の態様に従う、例示的な方法のフローチャートを示す。方法のステップは、図13の環境で実行されてよく、図13で示される要素を参照して説明される。特に、図14のフローチャートは、主記憶装置内のデータ・ブロックを置き換えるブロック識別子を受信し、ブロック・ストレージ・マッピング・テーブルを使用して、主記憶装置内のブロック識別子のリスト内のブロック識別子を格納する例示的な方法を示す。
【0115】
ステップ1402では、システムは、主記憶装置内のデータ・ブロックのリストを複製するリカバリ・ストレージのブロック識別子のリストのブロック識別子を受信する。例えば、実施形態では、UUID11のブロック識別子を受信できる。実施形態では、図13で示される迅速リカバリ・モジュールは、主記憶装置内のデータ・ブロックのリストを複製するリカバリ・ストレージのブロック識別子のリストのブロック識別子を受信する。
【0116】
ステップ1404では、システムは、ブロック・データがブロック識別子にも含まれているかどうかを決定する。実施形態では、図13で示される迅速リカバリ・システムは、ブロック・データがブロック識別子にも含まれているかどうかを決定する。ブロック・データがブロック識別子に含まれている場合、次いでブロック・データは、以前に主記憶装置から送信されておらず、主記憶装置内のブロック・ストレージ・マッピング・テーブルは、受信されたブロック・データに更新することができる。ブロック・データがブロック識別子に含まれているとシステムが決定した場合、次いでシステムは、ステップ1408において例示的な方法のステップの実行を継続する。そうでない場合には、ステップ1406において例示的な方法のステップの実行を継続する。
【0117】
ステップ1404においてシステムが、ブロック・データがブロック識別子にも含まれていないと決定した場合に、ステップ1406では、システムは、ブロック識別子のテーブルをインデックスするのに使用される2の冪の指数を見つける。この場合、ブロック・データは、以前に主記憶装置から送信されており、ブロック・データは、実施形態においてブロック・ストレージ・マッピング・テーブルにすでに格納されている。そうするために、ブロック識別子のテーブルをインデックスするのに使用される2の冪の指数、UUID11は、例えば、指数が3であるブロック識別子の追加された10進値(すなわち、11)に最も近い下位の値(すなわち、8)を有する2の冪の指数を計算することによって、見つけることができる。実施形態では、図13で示される迅速リカバリ・モジュール1304は、ブロック識別子のテーブルをインデックスするのに使用される2の冪の指数を見つける。システムは、ステップ1416で例示的な方法のステップの実行を継続し、リカバリ・ストレージ内のブロック・ストレージ・ファイルを表すブロック識別子のリスト内のブロック識別子を格納する。
【0118】
ステップ1404においてシステムが、ブロック・データがブロック識別子にも含まれていると決定した場合に、ステップ1408では、システムは、ブロック識別子のテーブルをインデックスするのに使用される2の冪の指数を見つける。この場合、ブロック・データは、以前に主記憶装置から送信されておらず、実施形態においてブロック・ストレージ・マッピング・テーブルは、受信されたブロック・データを更新することができる。そうするために、ブロック識別子のテーブルをインデックスするのに使用される2の冪の指数、UUID11は、例えば、指数が3であるブロック識別子の追加された10進値(すなわち、11)に最も近い下位の値(すなわち、8)を有する2の冪の指数を計算することによって、見つけることができる。実施形態では、図13で示される迅速リカバリ・モジュール1304は、ブロック識別子のテーブルをインデックスするのに使用される2の冪の指数を見つける。
【0119】
ステップ1410では、システムは、ブロック識別子の2の冪の指数化によってインデックスされた、リンクされたリストにブロック識別子を有するノードを昇順で挿入することによって、テーブルを更新する。例えば、UUID11のブロック識別子を有するリンクされたリスト・ノードは、3の値を有するテーブルをインデックスすること、テーブルのバケット内でリンクされたリスト・ノードをトラバースすること、およびブロック識別子の値による昇順で、のどのリンクされたリスト内のノードを挿入することによって、テーブル内に挿入することができる。実施形態では、図13で示される迅速リカバリ・モジュール1304は、ブロック識別子の2の冪の指数化によってインデックスされた、リンクされたリストにブロック識別子を有するノードを昇順で挿入することによって、テーブルを更新する。
【0120】
ステップ1412では、システムは、ブロック識別子に含まれるデータ・ブロックの2進値を、ブロック識別子を有する挿入されたノードのブロック・データに割り当てる。例えば、00001011の2進値は、UUID11の割り当てられたブロック識別子を有するテーブル内に挿入された、リンクされたリスト・ノードのブロック・データに割り当てられる。実施形態では、図13で示される迅速リカバリ・モジュール1304は、ブロック識別子に含まれるデータ・ブロックの2進値を、ブロック識別子を有する挿入されたノードのブロック・データに割り当てる。
【0121】
ステップ1414では、システムは、更新されたテーブルをリカバリ・ストレージ内に格納する。実施形態では、図13で示される迅速リカバリ・モジュール1304は、更新されたブロック・ストレージ・マッピング・テーブル1308をリカバリ・サーバ・ストレージ1306内に格納する。
【0122】
ステップ1416では、システムは、ブロック・ストレージ・ファイルを表すブロック識別子のリスト内のブロック識別子を、リカバリ・ストレージ内に格納する。実施形態では、図13で示される迅速リカバリ・モジュール1304は、リカバリ・ファイル1310およびブロック・ストレージ・ファイル内のブロック識別子内のブロック識別子を、リカバリ・サーバ・ストレージ1306内に格納する。このようなブロック識別子のリストは、次にリカバリ・ストレージ内に格納され、主記憶装置内のデータ・ブロックのリストと置き換えられ、リカバリ・ストレージ内に格納されたこのようなブロック識別子のリストは、主記憶装置内のデータ・ブロックのリストをレストアするために使用することができる。
【0123】
図15は、発明の態様に従う、例示的なクラウド・コンピューティング環境内の例示的なアーキテクチャを示す。実施形態では、例示的なアーキテクチャは、ブック識別子1514、1516および1518を、これらのブロック識別子をブロック識別子1548、1550および1552としてリカバリ・ストレージ1546内に格納する災害復旧サイト1532もしくは公衆クラウド・ストレージ1534または両方の組み合わせへ送信する、プライマリ・サイト1502を含む。プライマリ・サイトは、例えば、レプリケータ・エージェント1506を採用する仮想機械(VM)1504、レプリケータ・エージェント1510を採用する物理サーバ1508、クラウド・レプリケータ装置1512およびストレージ・ネットワーク1520を含むことができる。VM1504、物理サーバ1508、クラウド・レプリケータ装置1512およびストレージ・ネットワーク1520は、互いに通信することができるクラウド・コンピューティング・ノードであり、図1および図2に関して説明されたクラウド・コンピューティング・ノード10のようなプライベート、コミュニティ、パブリック、ハイブリッドのクラウドなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化される。レプリケータ・エージェント1506および1510は、実施形態において、クラウド・コンピューティング・ノード、VM1504および物理サーバ1508ならびにクラウド・ストレージ1534もしくはリカバリ・ストレージ1546またはこれらの組み合わせの間のデータ・ファイルの複製およびデータ・ファイルの復旧のためのサービスを提供する機能を有する。レプリケータ・エージェント1506および1510は、図1に関して説明されたプログラム・モジュール42のような1つまたは複数のプログラム・モジュールを含むことができる。VM1504および物理サーバ1508は、図15で示されたものより、追加的なまたは少ないモジュールを含んでもよい。実施形態では、別個のモジュールが、単一のモジュールに統合されてもよい。追加的または代替的に、単一のモジュールは、複数のモジュールとして実装されてもよい。
【0124】
クラウド・レプリケータ装置1512は、データ・ストレージ、データ・レプリケーションおよびデータ・リカバリのために必要なサービスを提供する機能を有する、図4に関して説明されたサーバ400のようなコンピュータ・システムとすることができる。例えば、クラウド・レプリケータ装置1512は、データの2値の組み合わせを有するブロック識別子に関連するブロック・マッピング・テーブルを作成し、主記憶装置内のデータ・ブロックのリストを受信し、ブロック・マッピング・テーブルを使用して、データ・ブロックのリストからブロック識別子のリストを生成し、ブロック識別子のリストを、データ・ブロックのリストを複製するためにバックアップ・ストレージに送信する機能を有する、図4に関して説明された迅速レプリケーション・モジュール404(不図示)を含むことができる。クラウド・レプリケータ装置1512は、例えばブロック識別子1514、1516、1518を更新する複製されたデータ・ブロックのブロック識別子を更新し、更新されたブロック識別子をバックアップ・ストレージに送信して、それらの複製されたデータ・ブロックのブロック識別子を置き換える、迅速レプリケーション・モジュール404の機能を含んでもよい。クラウド・レプリケータ装置1512は、バックアップ・ストレージからブロック識別子のリストを取得することによって、主記憶装置内のデータ・ブロックのリストをレストアし、ブロック識別子ごとのブロック・マッピング・テーブルからデータ・ブロックを自動的に生成する、迅速レプリケーション・モジュール404の機能をさらに含んでもよい。クラウド・レプリケータ装置1512は、追加的に、図10に関して説明されたような動作的に結合されたマルチプレクサ(不図示)を含んで、データ・ブロックからブロック識別子を生成することができる。
【0125】
ストレージ・ネットワーク1520は、データ・ブロック1526、1528および1530を含むファイル1524を格納するストレージ1522と通信する。ストレージ・ネットワーク1520は、図3で示されたストレージ・デバイス65のようなストレージ・デバイスのネットワークとすることができる。実施形態では、ストレージ・ネットワーク1520は、例えば、ストレージ・エリア・ネットワーク(SAN)またはクラウドベース・ストレージ環境においてブロック・ストレージを提供することができる。
【0126】
実施形態では、図15の例示的なアーキテクチャは、ブロック識別子1548、1550、1552としてリカバリ・ストレージ1546内にもしくは公衆クラウド・ストレージ1534内に、または両方の組み合わせにブロック識別子を格納することができる、災害復旧サイト1532も含む。災害復旧(DR)サイトは、例えば、復旧ストレージ・ネットワーク1544と通信するクラウド・レプリケータ装置1536および公衆クラウド・ストレージ1534を含むことができる。クラウド・レプリケータ装置1536および公衆クラウド・ストレージ1534は、互いに通信することができるクラウド・コンピューティング・ノードであり、図1および図2に関して説明されたクラウド・コンピューティング・ノード10のようなプライベート、コミュニティ、パブリック、ハイブリッドのクラウドなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化される。
【0127】
クラウド・レプリケータ装置1536は、データ・ストレージ、データ・レプリケーションおよびデータ・リカバリのために必要なサービスを提供する機能を有する、図13に関して説明されたサーバ1300のようなコンピュータ・システムとすることができる。例えば、クラウド・レプリケータ装置1536は、データの2値の組み合わせを有するブロック識別子に関連するブロック・マッピング・テーブルを作成し、主記憶装置内のブロック識別子のリストを受信し、リカバリ・ストレージ内のブロック・マッピング・テーブルを更新し、リカバリ・ストレージ内にブロック識別子のリストを格納し、かつ、ブロック識別子のリストを主記憶装置に送信して、主記憶装置内のデータ・ブロックのリストをレストアする機能を有する、図13に関して説明された迅速リカバリ・モジュール(不図示)を含むことができる。クラウド・レプリケータ装置1536は、実施形態において、更新された複製データ・ブロックの更新されたブロック識別子を受信し、データ・ブロックのリストの複製を表す、リカバリ・ストレージ内のブロック識別子のリスト内の更新されたブロック識別子を更新する前に、これらの複製されたデータ・ブロックのブロック識別子を置き換える、迅速リカバリ・モジュール1304の機能を含むこともできる。クラウド・レプリケータ装置1536は、実施形態において、リカバリ・ストレージ内のブロック識別子のリストを主記憶装置に送信し、主記憶装置内のデータ・ブロックのリストをレストアする、迅速リカバリ・モジュール1304の機能を含むこともできる。クラウド・レプリケータ装置1536は、追加的に、図10に関して説明されたような動作的に結合されたマルチプレクサ(不図示)を含んで、データ・ブロックからブロック識別子を生成することができる。
【0128】
リカバリ・ストレージ・ネットワーク1544は、ブロック識別子1548、1550および1552を格納するリカバリ・ストレージ1546と通信する。リカバリ・ストレージ・ネットワーク1544は、図3で示されるストレージ・デバイス65のようなストレージ・デバイスのネットワークとすることができる。実施形態では、リカバリ・ストレージ・ネットワーク1544は、例えば、ストレージ・エリア・ネットワーク(SAN)またはクラウドベース・ストレージ環境においてブロック・ストレージを提供することができる。アーキテクチャにおけるデバイスもしくはネットワークまたはその両方の量は、図15で示されたものに限定されない。実施において、環境は、追加的なデバイスもしくはネットワークまたは両方、少ないデバイスもしくはネットワークまたは両方、異なるデバイスもしくはネットワークまたは両方、または、図15に示されたのと異なってアレンジされたデバイスもしくはネットワークまたは両方を含んでもよい。
【0129】
プライマリ・サイト1502内の各VM1504または物理マシン1508は、プライマリ・サイト1502内のストレージ内のファイルの変更されたブロックを格納し、ファイルの変更されたブロックをプライマリ・サイト1502内のクラウド・レプリケータ装置1512に送信する、それぞれレプリケータ・エージェント1506および1510を有することができる。クラウド・レプリケータ装置1512は、変更されたデータ・ブロックのブロック識別子を見つけ、変更されたブロックのブロック識別子を、DRサイト1532内のクラウド・レプリケータ装置1536に送信することができる。DRサイト1532内のクラウド・レプリケータ装置1536は、変更されたブロック識別子を受信し、それらをクラウド・ストレージ内のブロック識別子のリストに格納することができる。
【0130】
例えば、図15で示される例示的なアーキテクチャに示されているファイル1524のデータ・ブロック1526、1528および1530のようなファイルのデータ・ブロックを更新することは、図11に関して説明された以下の例示的な方法によって実行され、つまり、ブロック・ストレージ・マッピング・テーブルを使用して、ブロック識別子のリスト内の対応するブロック識別子を更新することによって、データ・ブロックのリスト内のデータ・ブロックを更新することによって実行される。したがって、クラウド・レプリケータ装置1512は、各データ・ブロック1514、1516および1518のような更新されたデータ・ブロックを受信し、ノードのリンクされたリスト内に更新されたデータ・ブロックのブロック・データがあることを見つけ、または更新されたデータ・ブロックに関連する生成されたブロック識別子を有するテーブルを更新および保存することができる。クラウド・レプリケータ装置1512は、更新されたデータ・ブロックのブロック識別子を取得し、ファイル1524のデータ・ブロックのリストを表す、ブロック識別子のリスト内の更新されたデータ・ブロックのブロック識別子を更新する前に、データ・ブロックのブロック識別子を置き換えることができる。クラウド・レプリケータ装置1512は、更新されたブロック識別子または更新されたブロック識別子のリストをDRサイト1532に送信でき、例えば、DRサイト1512内のクラウド・レプリケータ装置1536は、更新されたブロック識別子または更新されたブロック識別子のリストを受信して、更新されたブロック識別子に対応するブロック識別子を、更新されたブロック識別子に置き換えることによって、ブロック識別子のリストを更新することができる。
【0131】
そして、DRサイト1532上のクラウド・レプリケータ装置1536は、ブロック識別子1538、1540および1542のそれぞれのような、更新されたデータ・ブロックの更新されたブロック識別子または、ブロック識別子の更新されたリストを受信し、ノードのリンクされたリスト内の更新されたデータ・ブロックのブロック識別子を見つけ、または、更新されたデータ・ブロックと関連する生成されたブロック識別子を有するテーブルを更新および保存することができる。クラウド・レプリケータ装置1536は、リカバリ・ストレージ1546内のブロック識別子1548、1550、1552のような、ブロック識別子のリスト内の更新されたデータ・ブロックのブロック識別子を更新する前に、データ・ブロックのブロック識別子を置き換えることができる。
【0132】
実施形態では、サービス・プロバイダは、本明細書で説明されるプロセスを実行することを提供できた。この場合、サービス・プロバイダは、1または複数の顧客のために発明の処理ステップを実行するコンピュータ・インフラストラクチャの作成、維持、デプロイ、サポートなどをすることができる。これらの顧客は、例えば、技術を使用する任意のビジネスとすることができる。見返りに、サービス・プロバイダは、サブスクリプションもしくは支払い契約または両方の下で顧客からの支払いを受けることができ、もしくは、サービス・プロバイダは、1または複数のサード・パーティの広告コンテンツの販売から支払いを受けることができ、またはその両方ができる。
【0133】
さらに追加的な実施形態では、発明は、ネットワークを介する、コンピュータ実装方法を提供する。この場合、コンピュータ・システム12(図1)のようなコンピュータ・インフラストラクチャが提供され、発明のプロセスを実行するための1つまたは複数のシステムは、取得される(例えば、作成される、購入される、使用される、変更されるなど)ことができ、コンピュータ・インフラストラクチャにデプロイすることができる。この程度までのシステムのデプロイは、(1)(図1で示されるような)コンピュータ・システム12のようなコンピューティング・デバイス上にコンピュータ可読媒体からインストールすること、(2)1または複数のコンピューティング・デバイスをコンピュータ・インフラストラクチャに追加すること、および(3)コンピュータ・インフラストラクチャの1つまたは複数の既存のシステムを組み込み、もしくは修正し、またはその両方を行い、発明のプロセスを実行するようにコンピュータ・インフラストラクチャを可能にすること、の1つまたは複数を含むことができる。
【0134】
本発明の種々の実施形態の説明は、例示を目的として示されたが、網羅的であること、または、開示された実施形態に限定されることを意図していない。説明された実施形態の範囲および精神から逸脱することなく、多くの修正および変形が、当業者には明白であろう。本明細書で使用される用語は、実施形態の原理、実用的用途もしくは市場において見られる技術的改善を最もよく説明するため、または、本明細書で開示される実施形態を他の当業者が理解することを可能にするために、選抜された。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
【国際調査報告】