(57)【要約】  バックアップ失敗後のバックアップ性能を改善する方法、システム及びプロセスが本明細書に開示される。バックアップ動作が成功したかどうかが判定される。バックアップ動作が不成功であったとの判定に応答して、バックアップ動作と関連付けられたバックアップメタデータが、バックアップ動作の開始前である第１の時点で取られたスナップショットと関連付けられたスナップショットメタデータと置き換えられる。次いで、スナップショットメタデータに基づいて、別のバックアップ動作が第２の時点で実行されることを可能にするロールバックされたスナップショットが生成される。
2020518059.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
バックアップ動作が成功しているかどうかを判定することと、
前記バックアップ動作が不成功であったとの判定に応答して、バックアップメタデータをスナップショットメタデータと置き換えることであって、
前記バックアップメタデータが、前記バックアップ動作と関連付けられ、
前記スナップショットメタデータが、スナップショットと関連付けられ、
前記スナップショットが、第１の時点で取られ、
前記第１の時点が、前記バックアップ動作の開始前である、置き換えることと、
ロールバックされたスナップショットを生成させることであって、
前記ロールバックされたスナップショットが、前記スナップショットメタデータに基づいて、別のバックアップ動作を第２の時点で実行することを可能にする、生成させることと、
を含む、コンピュータ実装方法。
【請求項２】
前記バックアップ動作が不成功であることを、
タグファイルがバックアップ割当内に存在すると判定することと、
前記タグファイルが前記バックアップ割当内に存在する場合、前記スナップショットメタデータにアクセスすることによって、前記スナップショットの識別子を取得することと、
前記ロールバックされたスナップショットの前記生成を示す前記スナップショットメタデータに参照を追加することと、
によって検出することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記ロールバックされたスナップショットを前記生成させることが、
前記ロールバックされたスナップショットと、前記別のバックアップ動作を要求するアプリケーションとの間でクロスチェック動作を実行することを含む、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記アプリケーションが、アプリケーションメタデータを含み、
前記アプリケーションメタデータが、前記バックアップ動作と関連付けられる、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記クロスチェック動作を前記実行することが、
前記アプリケーションメタデータから１つ以上のシステム変更番号を除去することと、
前記ロールバックされたスナップショットを後続のバックアップ動作のためのバックアップ宛先として指定することと、を含む、請求項４に記載のコンピュータ実装方法。
【請求項６】
以前のバックアップ動作の一部として生成された同期書き込み要求を無視することを更に含む、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記以前のバックアップ動作が完了したことの確認を受信することと、
前記以前のバックアップ動作が完了したことの前記確認を受信すると、前記スナップショットを生成させるスナップショット要求を生成させることと、を更に含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記同期書き込み要求の一部であるファイルを１つ以上のデータコンテナファイルに書き込み、データの場所を保存することを更に含む、請求項６に記載のコンピュータ実装方法。
【請求項９】
前記ロールバックされたスナップショットを前記アプリケーションにエクスポートすることであって、
前記同期書き込み要求が、前記アプリケーションによって生成され、
前記クロスチェック動作が、前記アプリケーションによって実行される、エクスポートすることと、
前記ロールバックされたスナップショットに基づいて、前記後続のバックアップ動作を実行することであって、
前記後続のバックアップ動作が、増分的バックアップ動作である、実行することと、を更に含む、請求項６に記載のコンピュータ実装方法。
【請求項１０】
前記ファイルが閉じられているかどうかを判定することと、
前記ファイルが閉じられているという判定に応答して、前記ファイルをコンピュータ可読ストレージ媒体に持続させることと、を更に含む、請求項８に記載のコンピュータ実装方法。
【請求項１１】
プログラム命令を備える非一過性コンピュータ可読ストレージ媒体であって、前記プログラム命令が、
バックアップ動作が成功しているかどうかを判定するように、かつ
前記バックアップ動作が不成功であったとの判定に応答して、バックアップメタデータをスナップショットメタデータと置き換えることであって、
前記バックアップメタデータが、前記バックアップ動作と関連付けられ、
前記スナップショットメタデータが、スナップショットと関連付けられ、
前記スナップショットが、第１の時点で取られ、
前記第１の時点が、前記バックアップ動作の開始前である、置き換えるように、かつ
ロールバックされたスナップショットを生成させることであって、
前記ロールバックされたスナップショットが、前記スナップショットメタデータに基づいて、別のバックアップ動作を第２の時点で実行することを可能にする、生成させるように、
実行可能である、非一過性コンピュータ可読ストレージ媒体。
【請求項１２】
前記バックアップ動作が不成功であることを、
タグファイルがバックアップ割当内に存在すると判定することと、
前記タグファイルが前記バックアップ割当内に存在する場合、前記スナップショットメタデータにアクセスすることによって、前記スナップショットの識別子を取得することと、
前記ロールバックされたスナップショットの前記生成を示す前記スナップショットメタデータに参照を追加することと、によって検出することを更に含む、請求項１１に記載の非一過性コンピュータ可読ストレージ媒体。
【請求項１３】
前記ロールバックされたスナップショットの前記生成が、前記ロールバックされたスナップショットと、前記別のバックアップ動作を要求するアプリケーションとの間でクロスチェック動作を実行することを含み、
前記アプリケーションが、アプリケーションメタデータを含み、
前記アプリケーションメタデータが、前記バックアップ動作と関連付けられ、
前記クロスチェック動作を実行することが、前記アプリケーションメタデータから１つ以上のシステム変更番号を除去することと、前記ロールバックされたスナップショットを後続のバックアップ動作のためのバックアップ宛先として指定することと、を含む、請求項１２に記載の非一過性コンピュータ可読ストレージ媒体。
【請求項１４】
以前のバックアップ動作の一部として生成された同期書き込み要求を無視することと、
前記以前のバックアップ動作が完了したことの確認を受信することと、
前記以前のバックアップ動作が完了したことの前記確認を受信すると、前記スナップショットを生成させるスナップショット要求を生成させることと、
前記同期書き込み要求の一部であるファイルを１つ以上のデータコンテナファイルに書き込み、データの場所を保存することと、
前記ファイルが閉じられているかどうかを判定することと、
前記ファイルが閉じられているという判定に応答して、前記ファイルをコンピュータ可読ストレージ媒体に持続させることと、を更に含む、請求項１３に記載の非一過性コンピュータ可読ストレージ媒体。
【請求項１５】
前記ロールバックされたスナップショットを前記アプリケーションにエクスポートすることであって、
前記同期書き込み要求が、前記アプリケーションによって生成され、
前記クロスチェック動作が、前記アプリケーションによって実行される、エクスポートすることと、
前記ロールバックされたスナップショットに基づいて、前記後続のバックアップ動作を実行することであって、
前記後続のバックアップ動作が、増分的バックアップ動作である、実行することと、を更に含む、請求項１４に記載の非一過性コンピュータ可読ストレージ媒体。
【請求項１６】
１つ以上のプロセッサと、
前記１つ以上のプロセッサに結合されたメモリと、を備え、前記メモリが、前記１つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記プログラム命令が、
バックアップ動作が成功しているかどうかを判定するように、かつ
前記バックアップ動作が不成功であったとの判定に応答して、バックアップメタデータをスナップショットメタデータと置き換えることであって、
前記バックアップメタデータが、前記バックアップ動作と関連付けられ、
前記スナップショットメタデータが、スナップショットと関連付けられ、
前記スナップショットが、第１の時点で取られ、
前記第１の時点が、前記バックアップ動作の開始前である、置き換えるように、かつ
ロールバックされたスナップショットを生成させることであって、
前記ロールバックされたスナップショットが、前記スナップショットメタデータに基づいて、別のバックアップ動作を第２の時点で実行することを可能にする、生成させるように、
実行可能である、システム。
【請求項１７】
前記バックアップ動作が不成功であることを、
タグファイルがバックアップ割当内に存在すると判定することと、
前記タグファイルが前記バックアップ割当内に存在する場合、前記スナップショットメタデータにアクセスすることによって、前記スナップショットの識別子を取得することと、
前記ロールバックされたスナップショットの前記生成を示す前記スナップショットメタデータに参照を追加することと、によって検出することを更に含む、請求項１６に記載のシステム。
【請求項１８】
前記ロールバックされたスナップショットの前記生成が、前記ロールバックされたスナップショットと、前記別のバックアップ動作を要求するアプリケーションとの間でクロスチェック動作を実行することを含み、
前記アプリケーションが、アプリケーションメタデータを含み、
前記アプリケーションメタデータが、前記バックアップ動作と関連付けられ、
前記クロスチェック動作を実行することが、前記アプリケーションメタデータから１つ以上のシステム変更番号を除去することと、前記ロールバックされたスナップショットを後続のバックアップ動作のためのバックアップ宛先として指定することと、を含む、請求項１７に記載のシステム。
【請求項１９】
以前のバックアップ動作の一部として生成された同期書き込み要求を無視することと、
前記以前のバックアップ動作が完了したことの確認を受信することと、
前記以前のバックアップ動作が完了したことの前記確認を受信すると、前記スナップショットを生成させるスナップショット要求を生成させることと、
前記同期書き込み要求の一部であるファイルを１つ以上のデータコンテナファイルに書き込み、データの場所を保存することと、
前記ファイルが閉じられているかどうかを判定することと、
前記ファイルが閉じられているという判定に応答して、前記ファイルをコンピュータ可読ストレージ媒体に持続させることと、を更に含む、請求項１８に記載のシステム。
【請求項２０】
前記ロールバックされたスナップショットを前記アプリケーションにエクスポートすることであって、
前記同期書き込み要求が、前記アプリケーションによって生成され、
前記クロスチェック動作が、前記アプリケーションによって実行される、エクスポートすることと、
前記ロールバックされたスナップショットに基づいて、前記後続のバックアップ動作を実行することであって、
前記後続のバックアップ動作が、増分的バックアップ動作である、実行することと、を更に含む、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データバックアップに関する。具体的には、本開示は、バックアップ失敗後のバックアップ性能を改善することに関連する。
【背景技術】
【０００２】
スパースファイルは、ブロックを構成する実際の空きスペースの代わりに、空のブロックを表すメタデータをディスクに書き込むことによって、所与のファイルの大部分が空であるときに、より効率的にファイルシステムスペースを使用することができ、それゆえ、より少ないディスクスペースを使用するタイプのファイルである。ブロックが実データを含む場合にのみ、完全なブロックサイズが実際のサイズとしてディスクに書き込まれる。アプリケーションは、入力／出力（input/output、Ｉ／Ｏ）動作のためのストレージデバイスとしてスパースファイルを使用することができる。
【０００３】
特定のアプリケーション（例えば、いくつかのリレーショナルデータベース管理システム（relational database management systems、ＲＤＢＭＳ）などのデータベースアプリケーション）は、データ完全性のために同期書き込み動作を要求する。同期書き込み動作は、データが少なくともカーネルのバッファキャッシュに記憶されるまで戻らず、データをディスクにフラッシュすることによってデータ完全性を保持し、ディスク上のデータが、対応するカーネルバッファ（複数可）に対して常に同期化されることを確実にする。残念ながら、同期書き込み動作は、特にデータブロックサイズが小さい場合にはバックアップ性能を大幅に低下させ、書き込み動作の大部分のディスクアカウントにデータを持続させる。その上、これらの状況において同期書き込み要件が受け付けられない場合、（例えば、停電、ストレージシステムクラッシュなどからの）増分的バックアップ失敗は、データ損失をもたらし得、アプリケーションは、バックアップ失敗から回復することができない場合があり、したがって、新たな完全バックアップ、控えめに言っても、時間及びコンピューティングリソース集約的命題を必要とする。
【発明の概要】
【０００４】
バックアップ失敗後及び／又はバックアップ失敗時のバックアップ性能を改善する方法、システム及びプロセスが本明細書に開示される。そのような方法の１つは、バックアップ動作が成功しているかどうかを判定することを含む。バックアップ動作が不成功であったとの判定に応答して、方法は、バックアップメタデータをスナップショットメタデータと置き換える。この実施例では、バックアップメタデータはバックアップ動作と関連付けられ、スナップショットメタデータはスナップショットと関連付けられ、スナップショットは、バックアップ動作の開始前である第１の時点で取られる。次いで、この方法は、スナップショットメタデータに基づいて、別のバックアップ動作が第２の時点で実行されることを可能にするロールバックされたスナップショットを生成させる。
【０００５】
一実施形態では、方法は、タグファイルがバックアップ割当に存在すると判定することによって、バックアップ動作が成功しなかったことを検出し、タグファイルがバックアップ割当に存在する場合、スナップショットメタデータにアクセスすることによってスナップショットの識別子を取得し、ロールバックされたスナップショットの生成を示すスナップショットメタデータに参照を追加する。
【０００６】
別の実施形態では、ロールバックされたスナップショットを生成させることは、ロールバックされたスナップショットとアプリケーションメタデータを含むアプリケーションとの間でクロスチェック動作を実行することを含み、別のバックアップ動作を要求する。この実施例では、クロスチェック動作を実行することは、バックアップ動作と関連付けられたアプリケーションメタデータから１つ以上のシステム変更番号を除去することと、後続のバックアップ動作のためのバックアップ宛先としてロールバックされたスナップショットを指定することと、を含む。
【０００７】
いくつかの実施形態において、方法は、アプリケーションによる以前のバックアップ動作の一部として生成された同期書き込み要求を無視し、以前のバックアップ動作が完了したことの確認を受信し、以前のバックアップ動作が完了したことの確認を受信すると、スナップショットを生成させるためのスナップショット要求を生成させる。他の実施形態では、方法は、同期書き込み要求の一部であるファイルを１つ以上のデータコンテナファイルに書き込み、データの場所を保存し、ファイルが閉じられているかどうかを判定し、ファイルが閉じられているとの判定に応答して、ファイルをコンピュータ可読ストレージ媒体に持続させる。
【０００８】
特定の実施形態では、方法は、ロールバックされたスナップショットをアプリケーションにエクスポートする。この実施例では、同期書き込み要求が、アプリケーションによって生成され、クロスチェック動作が、アプリケーションによって実行される。次いで、この方法は、ロールバックされたスナップショットに基づいて、後続のバックアップ動作を実行する。この実施例では、後続のバックアップ動作は、増分的バックアップ動作である。
【０００９】
前述の内容は概要であり、したがって必然的に、簡略化、一般化、及び詳細の省略を含み、その結果として、当業者であれば、その概要が例示的であるにすぎず、なんら限定的ではないことがわかるであろう。特許請求の範囲によってのみ定義されるような本開示の他の態様、機能、及び利点は、以下に記載される非限定的で詳細な説明において明らかになるであろう。
【図面の簡単な説明】
【００１０】
本開示は、添付図面を参照することによってより良く理解され得、そして、それの大半の対象、機能、及び利点が当業者に明らかにされる。
【００１１】
【図１】本開示の一実施形態に従う、バックアップ後のバックアップ動作を改善するためのコンピューティングシステムのブロック図１００である。
【００１２】
【図２】本開示の一実施形態に従う、ロールバックされたスナップショットを生成させるコンピューティングシステムのブロック図２００である。
【００１３】
【図３】本開示の一実施形態に従う、ロールバックされたスナップショットを生成させるためのプロセスのフロー図３００である。
【００１４】
【図４】本開示の一実施形態に従う、バックアップ動作が不成功かどうかを判定するためのプロセスのフロー図４００である。
【００１５】
【図５】本開示の一実施形態に従う、データをストレージに持続させるためのプロセスのフロー図５００である。
【００１６】
【図６】本開示の一実施形態に従う、バックアップ動作後にスナップショットを生成させるためのプロセスのフロー図６００である。
【００１７】
【図７Ａ】本開示の一実施形態に従う、バックアップ宛先としてロールバックされたスナップショットを指定するためのプロセスのフロー図７００Ａである。
【００１８】
【図７Ｂ】本開示の一実施形態に従う、クロスチェック動作を実行するためのプロセスのフロー図７００Ｂである。
【００１９】
【図８】本開示の一実施形態に従う、どのようにロールバックエンジンがソフトウェア内に実装され得るかを例示する、コンピューティングシステムのブロック図８００である。
【００２０】
【図９】本開示の一実施形態に従う、どのように様々なデバイスがネットワークを介して通信し得るかを例示する、ネットワーク化されたシステムのブロック図９００である。
【００２１】
本開示は、様々な修正形態及び代替形式に影響を受けるが、本開示の特定の実施形態は、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、開示内容を開示された特定の形式に限定することを意図しないことを理解されたい。その代わりに、添付の特許請求の範囲によって規定されるような本開示の趣旨及び範囲内にある全ての修正形態、等価物、及び代替形態を包含することが意図される。
【発明を実施するための形態】
【００２２】
序論
スパースファイルは、ブロックを構成する実際の空きスペースの代わりに、空のブロックを表すメタデータをディスクに書き込むことによって、所与のファイルの大部分が空であるときに、より効率的にファイルシステムスペースを使用することができ、それゆえ、ディスクスペースを使用しないタイプのファイルである。スパースファイルを読み取るとき、ファイルシステムは、空のブロックを表すメタデータを、実行時にゼロバイトで充填された実ブロックに透過的に変換する。アプリケーション（例えば、データベースアプリケーション）は、この変換に気づかない。ブロックが実データを含む場合にのみ、完全なブロックサイズが実際のサイズとしてディスクに書き込まれる。前述のように、アプリケーションは、入力／出力（Ｉ／Ｏ）動作のためのストレージデバイスとしてスパースファイルを使用することができる。
【００２３】
特定のアプリケーション（例えば、いくつかのリレーショナルデータベース管理システム（ＲＤＢＭＳ）などのデータベースアプリケーション）は、データ完全性（同期書き込みバイアスと呼ばれる）のための（例えば、データバックアップ動作中の）同期書き込み動作を必要とする。同期書き込み動作は、データが少なくともカーネルのバッファキャッシュに記憶されるまで戻らず、データをディスクにフラッシュすることによってデータ完全性を保持し、ディスク上のデータが、対応するカーネルバッファ（複数可）に対して常に同期化されることを確実にする。
【００２４】
残念ながら、同期書き込み動作は、特にデータブロックサイズが小さい場合にはバックアップ性能を大幅に低下させ、書き込み動作の大部分のディスクアカウントにデータを持続させる。その上、これらの状況において同期書き込み要件が受け付けられない場合、（例えば、停電、ストレージシステムクラッシュなどからの）増分的バックアップ失敗は、データ損失をもたらし得、アプリケーション（例えば、ＲＤＢＭＳ）は、バックアップ失敗から回復することができない場合があり、その結果、新たな完全バックアップ、控えめに言っても、時間及びコンピューティングリソース集約的問題を必要とする破損したバックアップ画像を生じさせる。
【００２５】
少なくともデータを効率的な手法でキャッシュし、バックアップ失敗の場合にバックアップ宛先を以前のバックアップ点に回復させることによって、バックアップ失敗後のバックアップ性能を改善する方法、システム及びプロセスが本明細書に開示される。
バックアップ失敗後のバックアップ性能を改善するための例示的なシステム
【００２６】
図１は、一実施形態に従う、バックアップ失敗後のバックアップ性能を改善するためのコンピューティングシステムのブロック図１００である。図１に示すように、クライアント１０５（１）〜（Ｎ）は、アプリケーション１１０（１）〜（Ｎ）をそれぞれ実行する。各クライアントは、１つ以上のアプリケーションを実行することができる。一実施形態では、アプリケーション１１０（１）〜（Ｎ）は、リレーショナルデータベース管理システム（ＲＤＢＭＳ）などのデータベースアプリケーションである。クライアント１０５（１）〜（Ｎ）は、アプライアンス１１５に通信可能に結合される。
【００２７】
アプライアンス１１５は、コンピューティングデバイスであり、プロセッサ及びメモリを含む。アプライアンス１１５は、サーバ、デスクトップ、ラップトップ、タブレットなどを含む任意のタイプのコンピューティングシステムであり得ると共に、ネットワーク１８５を介してバックアップストレージデバイス１６５に通信可能に結合されている。しかしながら、アプライアンス１１５はまた、他のタイプのネットワーク及び／又は相互接続（例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネット、及び／又は同様のもの）を介して、クライアント１０５（１）〜（Ｎ）及びバックアップストレージデバイス１６５に通信可能に結合され得ることに留意されたい。
【００２８】
アプライアンス１１５は、少なくとも、取り込みエンジン１２０と、スナップショット要求生成器１２５と、ファイルシステム１３０と、スナップショット生成器１４０と、キャッシュ１４５と、スナップショット状態エンジン１５０と、を含む。ファイルシステム１３０は、少なくともタグファイル１３５を含み、スナップショット状態エンジン１５０は、少なくともロールバックエンジン１５５及び宛先エンジン１６０を含む。取り込みエンジン１２０は、使用又は記憶のためのデータを（例えば、データベース内又はストレージデバイス内で）取得及びインポートすることによって、データ取り込みを実行する。データをバッチで取り込むことができる。データがバッチで取り込まれるとき、データ項目は、周期的な時間間隔で塊でインポートされる。取り込みエンジン１２０は、データソースを優先順位付けし、個々のファイルを検証し、データ項目を１つ以上の宛先にルーティングする。取り込みエンジン１２０はまた、様々な形式で複数のソースから構造化、半構造化及び非構造化データを自動的に取り込む。特定の実施形態では、取り込みエンジン１２０は、アプリケーションワークロード上で実行され、バックアップ動作を監視し、バックアップ完了メッセージ及び／又は通知を、アプライアンス１０５上で実行されるデーモンプロセスに送信する。
【００２９】
スナップショット要求生成器１２５は、例えば、バックアップ動作の完了時に、取り込みエンジン１２０からスナップショットのための要求を受信する。一実施形態では、取り込みエンジン１２０は、バックアップ動作の完了を検出し、バックアップ完了メッセージをスナップショット要求生成器１２５に送信する。スナップショット要求生成器１２５内で実行するデーモンプロセス（例えば、カーボンド（carbond））は、スナップショット生成器１４０がスナップショットを生成させることを可能にするスナップショット要求をファイルシステム１３０及びスナップショット生成器１４０にトリガする。この実施例では、スナップショットは、ある時点で最近完了したバックアップの状態である。
【００３０】
ファイルシステム１３０は、タグファイル１３５を含み、ファイルへのアクセスを編成及び制御するソフトウェアプログラムである。ここで、ファイルシステム１３０は、キャッシュ１４５及び／又はバックアップストレージデバイス１６５上に記憶されたアプリケーション１１０（１）〜（Ｎ）によって使用されるファイルへのアクセスを制御する。ファイルシステム１３０は、スナップショット、ファイル、ディレクトリなど、並びにストレージデバイス上の各スナップショットの場所、各ファイルのサイズ、及び例えば、ファイルの作成時間、直近のアクセス時間などの他の情報を識別するメタデータを維持することができる。そのような情報は、特定のタイプのファイルシステムのためのアイノード構造に維持することができる。
【００３１】
用語「ファイルシステム」は、ファイルを編成するソフトウェアアプリケーション（それ自体がオペレーティングシステム又はデータベースの一部であり得る）及びそのアプリケーションによって編成されるファイルの集合の両方を指すことができる。ファイルは、ファイルのグループを収集するディレクトリ及び／又は他のディレクトリを用いて、階層的に編成することができる。ファイルシステム１３０のようなファイルシステムアプリケーションは、ファイルへのアクセス（例えば、ファイル内のデータの開放、読み出し、修正、作成、削除及びさもなければそのデータとの相互作用）を用いて、ＲＤＢＭＳアプリケーションなどの別のアプリケーションを提供することができる。
【００３２】
ファイルシステム１３０などのファイルシステムアプリケーションはまた、それが編成するファイルが、バックアップストレージデバイス１６５内のデータのブロックにどのようにマッピングされるかを追跡する。このようにして、データベースなどのアプリケーションが（例えば、ファイルのファイル名を使用して）特定のファイルへのアクセスを要求するとき、ファイルシステムは、要求されたファイルに含まれるデータの特定のブロックのための要求にその要求を変換することができる。したがって、ファイルシステム１３０は、バックアップストレージデバイス１６５内のデータのどのブロックが各ファイルに属するかを知っている。
【００３３】
各ブロックはデータの単位である。いくつかの実施形態では、ブロックは、ファイルシステムアプリケーション、下にある持続的ストレージデバイス、及び／又はオペレーティングシステムによって操作され得るデータの最小粒度を表すデータの固定サイズ単位である。他の実施形態では、ブロックは、可変的にサイズ決定することができ、ファイルシステムによって表されることができる最小のものよりも大きい粒度を表すことができ、及び／又は本明細書で指定されるものとは異なる他の特性を有する。
【００３４】
メタデータ（例えば、ファイルメタデータ、バックアップメタデータなど）に加えて、ファイルシステム１３０はタグファイルも含む。いくつかの実施形態では、タグファイル１３５は、バックアップ割当（例えば、複数のアプリケーション、データベースなどからデータをバックアップする（取り込んだ）バックアップ動作）の一部である。他の実施形態では、タグファイル１３５は、以前の取り込み及び／又はバックアップ動作が成功又は不成功かどうかを示す。例えば、タグファイル１３５がバックアップ割当の中に配置される場合、取り込みエンジン１２０によって取り込みが開始されると、タグファイル１３５は、バックアップ動作が成功裏に完了したときに除去され得る。しかしながら、取り込みプロセスがバックアップ動作の途中で中止又はクラッシュされる場合、タグファイル１３５はバックアップ割当内に維持される（及び除去されない）。したがって、後続のバックアップ動作中のバックアップ割当内のタグファイル１３５の存在は、以前のバックアップ動作が不成功であったことを示す。
【００３５】
前述のように、スナップショット状態エンジン１５０は、ロールバックエンジン１５５及び宛先エンジン１６０を含む。ロールバックエンジン１５５は、ロールバックされたスナップショットを生成させ、宛先エンジンは、バックアップ失敗時の将来のバックアップ動作のためのバックアップ宛先としてロールバックされたスナップショットを指定する。上述のように、タグファイル１３５を使用して、バックアップ動作が成功したかどうかを判定することができる。特定の実施形態では、バックアップ動作が不成功であった（例えば、タグファイル１３５が、後続のバックアップ動作中にバックアップ割当内に存在する）との判定に応答して、スナップショット状態エンジン１５０は、スナップショット（例えば、スナップショット生成器１４０によって生成されたスナップショット）と関連付けられたバックアップメタデータを（例えば、スナップショットと関連付けられた）スナップショットメタデータと置き換える。上述のように、スナップショットは、バックアップ動作の開始前である第１の時点で取られる。次いで、ロールバックエンジン１５５は、（新しい）バックアップ宛先としてロールバックエンジン１５５によって生成されたロールバックされたスナップショットを指定する宛先エンジン１６０によって、スナップショットメタデータに基づいて、別の（将来の）バックアップ動作を第２の時点で実行することを可能にするロールバックされたスナップショットを生成させる。
【００３６】
バックアップストレージデバイス１６５は、データ１８０と共に、スナップショット生成器１４０によって生成されたスナップショット１７０、及び／又はロールバックエンジン１５５によって生成されたロールバックされたスナップショット１７５を記憶する。バックアップストレージデバイス１６５は、様々な異なるストレージデバイス（例えば、ＨＤＤ、ＳＳＤ、コンパクトディスク、デジタル多用途ディスク、フラッシュメモリ、及び／又は論理ストレージデバイス（例えば、そのような物理ストレージデバイス上に実装されたボリューム）を含むことができる。
ロールバックされたスナップショットを生成させる実施例
【００３７】
図２は、一実施形態に従う、ロールバックされたスナップショットを生成させるコンピューティングシステムのブロック図２００である。前述のように、ファイルシステム１３０は、効率的な書き込み動作及びデータ配置のためにデータを（例えば、キャッシュ１４５内に）キャッシュし、バックアップ失敗の場合にバックアップ宛先を以前のバックアップ点に回復させるアプリケーションの動作を活用する。最初に、ファイルシステム１３０は、（例えば、同期書き込み要求要件を示すアプリケーション１１０（１）から）同期フラグを用いてバックアップ（書き込み）要求を受信すると、ファイルシステム１３０は、同期要求を無視し、データを個々のファイル待ち行列に配置し、データをディスクに持続させる前により多くのデータを待機する。異なる待ち行列内に蓄積されたデータは、データの場所を保存するために異なるデータコンテナファイルに書き込まれる。所与のファイルが閉じられると、待ち行列内のデータは、ディスクに（例えば、コンピュータ可読ストレージ媒体に）持続される。
【００３８】
一実施形態では、バックアップ動作が終了又は完了すると、取り込みエンジン１２０（例えば、所与のワークロード上で実行することができる取り込みスクリプト）が、バックアップ確認メッセージをスナップショット要求生成器１２５（例えば、アプライアンス１１５上で実行されるデーモン処理）に送信する。バックアップ確認メッセージを受信すると、スナップショット要求生成器１２５は、スナップショット生成器１４０が（この）時点（例えば、第１の時点）でスナップショットを生成させることを可能にするスナップショット要求をスナップショット生成器１４０に（及び、ファイルシステム１３０に）送信する。完全及び増分的バックアップの両方のために複数のスナップショットを生成させることができる（例えば、増分的マージは、完全バックアップ画像を生成させるために増分的バックアップ後に実行され得る）ことに留意されたい。上述のように、バックアップ割当２０５内のタグファイル１３５の存在によって、不成功のバックアップ動作を検出することができる。タグファイル１３５がバックアップ割当２０５内に存在する場合、スナップショット状態エンジン１５０は、スナップショットメタデータにアクセスすることによってスナップショットの識別子を取得し、ロールバックされたスナップショットの生成を示すスナップショットメタデータに参照を追加する。
【００３９】
ファイルシステム１３０が入力／出力（Ｉ／Ｏ）要求を受け取ると、タグファイルが、「ダーティ」ファイル（更新されるがフラッシュされない又は閉じられないファイル）を追跡するために、ファイルシステムのメタデータディレクトリフォルダの下に作成される。バックアップ動作が完了した後に、取り込みプロセスが停止される場合、タグファイル内の値はゼロでなければならない。しかしながら、取り込みプロセスが中止される場合、タグファイル内の値はゼロよりも大きくなる。取り込みプロセスが（例えば、別のバックアップ動作のために）再開すると、取り込みエンジン１２０は、タグファイル内の値をチェックし、タグファイル内の値がゼロでない場合に現在の「壊れた」バックアップ割当を置き換えるためのスナップショットロールバックプロセスを開始する。タグファイル１３５はバックアップ割当２０５（例えば、バックアップ宛先割当）のためにのみ機能し、スナップショット１７０及び／又はロールバックされたスナップショット１７５を生成させるために使用されないことに留意されたい。
【００４０】
タグファイル内の値がゼロでない場合、スナップショット状態エンジン１５０は、ファイルシステム１３０から（例えば、現在のバックアップ割当／サンドボックスに関する情報、以前の起動及び／又はダウンタイム、以前のスナップショットなどの情報を含むｓｙｓｔｅｍ．ｊｓｏｎから）スナップショット識別子を取得する。次いで、スナップショット状態エンジン１５０は、（例えば、現在の／失敗した／不成功のバックアップ動作と関連付けられた）現在のメタデータを、（例えば、スナップショット生成器１４０によって以前に生成された）スナップショットメタデータと置き換えて、置き換えられたメタデータに参照を追加する（例えば、それゆえ、将来のバックアップ動作のためのバックアップ宛先としてロールバックされたスナップショットを指定する）。このようにして、スナップショット状態エンジン１５０は、ロールバックされたスナップショット１７５を生成させる。
【００４１】
しかしながら、バックアップ割当２０５は、以前の時点（例えば、ロールバックされたスナップショット１７５）に変更されているが、バックアップ動作のためのデータを生成させるアプリケーションは、最新の（失敗した）バックアップ動作が成功したと仮定して依然として動作していることが理解されるであろう。したがって、アプリケーションが、最後の成功したバックアップ以後に起こった事象について「忘れる」ことを可能にするために、対応する動作がアプリケーション側で必要とされる。このような動作の１つは、アプリケーション側で実行することができるクロスチェック動作である。例えば、データベースアプリケーションなどのアプリケーションは、対応するシステム変更番号（ＳＣＮ）を更新することによって、どの変更済データがバックアップされたかを追跡するので、一実施形態では、宛先エンジン１６０は、アプリケーション１１０（１）〜（Ｎ）に、バックアップ動作と関連付けられたアプリケーションメタデータから１つ以上のＳＣＮを除去することを命令し、後続のバックアップ動作のためのバックアップ宛先としてロールバックされたスナップショット１７５を指定する。
【００４２】
新しい取り込み／バックアップ要求が受信されると、取り込みエンジン１２０は、現在のバックアップ割当がロールバックされたかどうかをチェックして、そのようなクロスチェック動作（複数可）をアプリケーション側で実行して、現在のバックアップ割当と一貫したアプリケーションのデータ変更追跡をレンダリングする必要があるかどうかを決定する。この実施例では、このようなクロスチェック動作は、ロールバックされたスナップショット１７５とアプリケーション（例えば、現在の／ロールバックされたバックアップ割当のロールバックされたスナップショットと一貫した、調和及び／又はレンダリングする必要があるデータ変更追跡を維持するアプリケーションメタデータを有するアプリケーション）との間で実行することができる。
【００４３】
アプリケーションが別の（増分的）バックアップ動作を要求する場合、スナップショット状態エンジン１５０は、アプリケーションにロールバックされたスナップショットをエクスポートし、アプリケーションに、クロスチェックスクリプト（例えば、ＲＭＡＮ）を実行するよう命令する。このようにして、（例えば、増分的バックアップ動作の一部として実行される）将来／後続の取り込みが、データ損失を招かずに（例えば、バックアップ動作をスクラッチから実行する必要なしに）前の時点（例えば、ロールバックされたスナップショット１７５）から開始することができる。
ロールバックされたスナップショットを生成させるための及び追跡一貫性を提供するためのプロセス例
【００４４】
図３は、一実施形態に従う、ロールバックされたスナップショットを生成させるためのプロセスのフロー図３００である。プロセスは、（例えば、取り込みエンジン１２０を使用して）バックアップ動作を検出することによって３０５で開始する。３１０において、プロセスは、バックアップ動作が実行されたかどうかを判定する。バックアップ動作が実行されなかった場合、プロセスは３０５にループバックする。しかしながら、バックアップ動作が実行された場合、プロセスは、３１５において、バックアップ動作が成功したかどうかを判定する。バックアップ動作が成功した場合、プロセスは３３５へとループする。３３５において、プロセスは、別のバックアップ動作が存在するかどうかを判定する。別のバックアップ動作が存在する場合、プロセスは３０５へとループする。そうでない場合、プロセスは終了する。
【００４５】
しかしながら、バックアップ動作が不成功であった場合、プロセスは、３２０において、（失敗した）バックアップ動作中に生成されたメタデータにアクセスする。３２５において、プロセスは（例えば、スナップショット状態エンジン１５０を使用して）、バックアップ動作中に生成されたメタデータをスナップショットのスナップショットメタデータ（例えば、以前に成功裏に完了したバックアップ動作の時点にスナップショット生成器１４０によって生成されたスナップショットメタデータ）と置き換える。
【００４６】
３３０において、プロセスは、スナップショットメタデータに基づいて、ロールバックされたスナップショット（例えば、ロールバックエンジン１５５を使用して生成されたロールバックされたスナップショット１７５）を生成させる。３３５において、プロセスは、別のバックアップ動作が存在するかどうかを判定する。別のバックアップ動作が存在する場合、プロセスは３０５へとループする。そうでない場合、プロセスは終了する。
【００４７】
図４は、一実施形態に従う、バックアップ動作が不成功かどうかを判定するためのプロセスのフロー図４００である。プロセスは、タグファイル（例えば、タグファイル１３５）内の値がゼロであるかどうかを判定することによって、４０５において開始する。タグファイル内の値がゼロである場合、プロセスは終了する。しかしながら、タグ内の値がゼロでない（例えば、ゼロを超える）場合、プロセスは、４１０において、システムから最後の／以前のスナップショット識別子を（例えば、メタデータディレクトリ内に位置するファイルシステム１３０によって維持されたメタデータから）得る／取得する。
【００４８】
４１５において、プロセスは、（例えば、スナップショット状態エンジン１５０を使用して）現在のメタデータをスナップショットメタデータと置き換える。この実施例では、現在のバックアップ中に現在のメタデータが生成される。プロセスは、最後の／以前のスナップショットＩＤを（例えば、スナップショット状態エンジン１５０を使用して）取得するので、プロセスは、（例えば、特定の名前付けパターン、又は他のそのような方法に従って）現在のメタデータがスナップショットメタデータに関連すると判定することができる。前述したように、及び理解されるように、スナップショットメタデータは、バックアップのためにデータが生成される（及び、バックアップに成功した）ときに生成される。例えば、所与のファイルがバックアップされると、ファイルサイズ、ファイル修正情報、ファイルアクセス時間などのファイルのメタデータ情報が生成され、前述の情報を有する範囲マップが（例えば、スナップショットメタデータの一部として）保存される。
【００４９】
プロセスは、置き換えられたメタデータに参照を追加することによって、４２０で終了する。例えば、プロセスが（例えば、スナップショット状態エンジン１５０を使用して）現在のメタデータをスナップショットメタデータでコピーする／置き換えるとき、置き換えられたメタデータに参照を追加することは、置き換えられたメタデータが少なくとも２回（例えば、少なくとも以前の成功したバックアップ／スナップショット及び現在のバックアップによって）参照されることを示す。したがって、置き換えられたメタデータによって参照されるデータの各セグメントについて参照カウントが追加される場合、バックアップ割当内のデータ（例えば、バックアップ割当２０５内のデータ１８０（１））は、以前のスナップショットが削除されても失われないことが理解されよう。
【００５０】
図５は、一実施形態に従う、データをストレージに持続するためのプロセスのフロー図５００である。プロセスは、アプリケーションから同期書き込み要求を受信することによって、５０５で開始する。上述のように、いくつかのデータベースアプリケーションなどの特定のアプリケーションは、データ完全性を維持するために同期書き込み確認を必要とする。５１０において、プロセスは同期要求を無視し、５１５において、データを待ち行列に入れる。
【００５１】
５２０において、プロセスは、より多くのデータに対して待機が必要であるかどうかを判定する。より多くのデータに対して待機が必要である場合、プロセスは５１５にループバックする。しかしながら、より多くのデータに対して待機が必要とされない、プロセスは、５２５において、（例えば、様々な異種ファイルのデータの場所を維持するために）異なるデータコンテナファイルにデータを書き込む。５３０において、プロセスは、ファイルを閉じることが検出されたかどうかを判定する。ファイルを閉じることが検出されなかった場合、プロセスは５２０へとループバックする。しかしながら、ファイルを閉じることが検出された場合、プロセスは、データをストレージに持続させることによって５３５で終了する。
【００５２】
図６は、一実施形態に従う、バックアップ動作後にスナップショットを生成させるためのプロセスのフローチャート６００である。プロセスは、（例えば、取り込みエンジン１２０を使用して）バックアップ動作の完了を検出することによって６０５で開始する。６１０において、プロセスは、バックアップ完了（又はバックアップ確認）メッセージを（例えば、スナップショット要求生成器１２５に）送信する。プロセスは、スナップショット要求の確認を受信することによって６１５で終了する。
【００５３】
図７Ａは、一実施形態に従う、バックアップ宛先としてロールバックされたスナップショットを指定するためのプロセスのフロー図７００Ａである。プロセスは、バックアップ動作の失敗を検出することによって（例えば、バックアップ割当２０５などのバックアップ割当内のタグファイル内のゼロを超える値の存在を検出することによって）７０５で開始する。７１０において、プロセスは、ロールバックされたスナップショット（例えば、ロールバックエンジン１５５を使用してロールバックされたスナップショット１７５）にロールバックする。
【００５４】
７１５において、プロセスは、ロールバックされたスナップショットをアプリケーションにエクスポートする（例えば、プロセスは、ロールバックエンジン１５５を使用して、ロールバックされたスナップショット１７５をアプリケーション１１０（１）にエクスポートする）。７２０において、プロセスは、クロスチェック動作の実行を要求し（例えば、クロスチェック動作を実行することをアプリケーション１１０（１）に要求し）、ロールバックされたスナップショットが（新しい）バックアップ宛先であることの確認を（例えば、宛先エンジン１６０から）受信することによって、７２５で終了する。
【００５５】
図７Ｂは、一実施形態に従う、クロスチェック動作を実行するためのプロセスのフロー図７００Ｂである。プロセスは、クロスチェック動作を開始することによって７３０で開始する。７３５において、プロセスは、アプリケーションメタデータ（例えば、所与のアプリケーションのための変更されたデータ追跡を維持するアプリケーションメタデータ）にアクセスする。７４０において、プロセスは、（例えば、ロールバックされたスナップショットとアプリケーションとの間のデータ変更追跡一貫性及び調和を提供するために）アプリケーションメタデータから（１つ以上の）システム変更番号を除去する。
【００５６】
７４５において、プロセスは、（例えば、将来及び後続のバックアップ動作のための）（新たな）バックアップ宛先としてロールバックされたスナップショット（例えば、ロールバックされたスナップショット１７５）を指定する。プロセスは、指定のアプリケーションから確認を受信することによって７５０で終了する。一実施形態では、クロスチェック動作は、少なくとも、チャネル（例えば、ｃｈ００型ディスク）を割り当てること、データベースのコピーをクロスチェックすること、データベースの非プロンプト期限切れコピーを削除すること、カタログ開始位置を非プロンプトに設定すること、及びチャネルを解放することを含む。
【００５７】
特定の実施形態では、タグファイルは、バックアップ宛先割当（例えば、バックアップ割当２０５）と関連して実装され（及び使用され得）、所与のスナップショット（例えば、スナップショット状態エンジン１５０によって実行される動作）をロールバックするために使用されない及び／又はそのロールバックをする必要がないことに留意されたい。加えて、現在のメタデータをスナップショットメタデータと置き換えた後、後続のバックアップ動作が成功しない限り、「新しい」スナップショットメタデータに基づいて、「新しい」スナップショットを作成及び／又は生成させる必要はない。なぜなら、ロールバックされたスナップショット（例えば、図１及び図２に示されるように、ロールバックされたスナップショット１７５にロールバックされたスナップショット１７０）を使用して、後続のバックアップ動作のための開始点を決定することができる（例えば、タグファイルの値がゼロを超える場合（例えば、バックアップ失敗の場合には、データベースアプリケーションのバックアップ宛先を以前のバックアップ（時）点に回復させるために）、例えば、既存のスナップショットは、現在の壊れたバックアップ宛先割当を置き換えるために、単にロールバックされ得る）からである。
【００５８】
したがって、本明細書に開示される方法、システム及びプロセスは、バックアップ失敗後のバックアップ性能を、少なくとも、データを効率的な手法でキャッシュすることと、増分的バックアップ動作の一部として将来の取り込みが、データ損失を伴わずにロールバックされたスナップショットによってキャプチャされた前の時点から開始することができるように、バックアップ失敗の場合にはバックアップ宛先を以前のバックアップ点に回復させることと、によって改善することを理解されたい。
コンピューティング環境例
【００５９】
図８は、一実施形態に従う、ロールバックエンジンがどのようにソフトウェアに実装され得るかを例示する、コンピューティングシステムのブロック図８００である。コンピューティングシステム８００は、アプライアンス１１５を含むことができ、コンピュータ可読命令を実行することができる任意のシングル又はマルチプロセッサコンピューティングデバイスあるいはシステムを広く表す。コンピューティングシステム８００の例としては、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス（例えば、パーソナル携帯情報機器、及び携帯電話）、ネットワークアプライアンス、ストレージコントローラ（例えば、配列コントローラ、テープドライブコントローラ、又はハードディスクコントローラ）等を含む任意の１つ以上の様々なデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム８００は、少なくとも１つのプロセッサ８５５と、メモリ８６０と、を含んでもよい。ロールバックエンジンを実行するソフトウェアを実行することによって、コンピューティングシステム８００は、バックアップ失敗後のバックアップ性能を改善するように構成された専用コンピューティングデバイスになる。
【００６０】
プロセッサ８５５は、データの処理、又は命令の解釈及び実行が可能な任意のタイプ又は形式の処理ユニットを概して表す。特定の実施形態では、プロセッサ８５５は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ８５５に、本明細書に記載及び／又は例示する実施形態のうちの１つ以上の機能を実行させてもよい。例えば、プロセッサ８５５は、本明細書に記載する動作の全部又は一部を実行してもよく、及び／又は実行するための手段であってもよい。プロセッサ８５５はまた、本明細書に記載若しくは例示する任意の他の動作、方法、若しくはプロセスを実行してもよく、及び／又は実行するための手段であってもよい。メモリ８６０は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性ストレージデバイスあるいは媒体を概して表す。例としては、ランダムアクセスメモリ（random access memory、ＲＡＭ）、読み取り専用メモリ（read only memory、ＲＯＭ）、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられるが、これらに限定されない。必須ではないが、特定の実施形態では、コンピューティングシステム８００は、揮発性メモリユニット及び不揮発性ストレージデバイスの両方を含んでもよい。一実施例では、ロールバックエンジン及び／又は宛先エンジンを実装するプログラム命令をメモリ８６０にロードしてもよい。
【００６１】
特定の実施形態では、コンピューティングシステム８００はまた、プロセッサ８５５及び／又はメモリ８６０に加えて、１つ以上の構成要素又は要素を含んでもよい。例えば、図８に示すように、コンピューティングシステム８００は、メモリコントローラ８２０、入力／出力（Ｉ／Ｏ）コントローラ８３５、及び通信インターフェース８４５を含んでもよく、これらの各々は、通信インフラストラクチャ８０５を介して相互接続されてもよい。通信インフラストラクチャ８０５は、コンピューティングデバイスの１つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ８０５の例としては、限定することなく、通信バス（業界標準アーキテクチャ（Industry Standard Architecture、ＩＳＡ）、周辺構成要素相互接続（Peripheral Component Interconnect、ＰＣＩ）、ＰＣＩエクスプレス（PCI express、ＰＣＩｅ）、又は類似のバスなど）、及びネットワークが挙げられる。
【００６２】
メモリコントローラ８２０は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム８００の１つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。特定の実施形態では、メモリコントローラ８２０は、通信インフラストラクチャ８０５を介して、プロセッサ８５５、メモリ８６０、及びＩ／Ｏコントローラ８３５間の通信を制御してもよい。特定の実施形態では、メモリコントローラ８２０は、本明細書に記載及び／又は例示する動作又は特徴のうちの１つ以上を単独又は他の要素との組み合わせのいずれかで実行してもよく、及び／又は実行するための手段であってもよい。
【００６３】
Ｉ／Ｏコントローラ８３５は、アプライアンス及び／又はコンピューティングデバイスの入出力機能を調整及び／又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ８３５は、プロセッサ８５５、メモリ８６０、通信インターフェース８４５、表示アダプタ８１５、入力インターフェース８２５、及びストレージインターフェース８４０などのコンピューティングシステム８００の１つ以上の要素間のデータの転送を制御してもよく、又はそれを容易にしてもよい。
【００６４】
通信インターフェース８４５は、コンピューティングシステム８００と、１つ以上の他のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。通信インターフェース８４５は、コンピューティングシステム８００と追加のコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易にし得る。通信インターフェース８４５の例としては、限定することなく、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデム、及び任意の他の好適なインターフェースが挙げられる。通信インターフェース８４５は、インターネット等ネットワークへの直接リンクを介してリモートサーバへの直接接続を提供してもよく、また、例えば、ローカルエリアネットワーク（例えば、イーサネット（登録商標）ネットワーク）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供し得る。
【００６５】
通信インターフェース８４５はまた、外部バス又は通信チャネルを介して、コンピューティングシステム８００と、１つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されたホストアダプタを表し得る。ホストアダプタの例としては、スモールコンピュータシステムインターフェース（Small Computer System Interface、ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（Universal Serial Bus、ＵＳＢ）ホストアダプタ、米国電気電子技術者協会（Electrical and Electronics Engineers、ＩＥＥＥ）１３９４ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント（Serial Advanced Technology Attachment、ＳＡＴＡ）、シリアルアタッチトＳＣＳＩ（Serial Attached SCSI、ＳＡＳ）、及びエクスターナルＳＡＴＡ（external SATA、ｅＳＡＴＡ）ホストアダプタ、アドバンスドテクノロジーアタッチメント（Advanced Technology Attachment、ＡＴＡ）、及びパラレルＡＴＡ（Parallel ATA、ＰＡＴＡ）ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット（登録商標）アダプタ等が挙げられるが、これらに限定されない。通信インターフェース８４５はまた、コンピューティングシステム８００が、（例えば、実行するためにリモートデバイスに対して命令を送受信することにより）分散又はリモートコンピューティングに関与できるようにし得る。
【００６６】
図８に示すように、コンピューティングシステム８００はまた、表示アダプタ８１５を介して、通信インフラストラクチャ８０５に接続されている、少なくとも１つの表示デバイス８１０を含んでもよい。表示デバイス８１０は、表示アダプタ８１５によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ８１５は、表示デバイス８１０上に表示するために、通信インフラストラクチャ８０５から（又は当該技術分野において既知のように、フレームバッファから）、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。コンピューティングシステム８００はまた、入力インターフェース８２５を介して通信インフラストラクチャ８０５に接続されている、少なくとも１つの入力デバイス８３０を含んでもよい。入力デバイス８３０は、コンピュータ又は人間のいずれかによって生成した入力を、コンピューティングシステム８００に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス８３０の例としては、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
【００６７】
コンピューティングシステム８００はまた、ストレージインターフェース８４０を介して通信インフラストラクチャ８０５に接続されているストレージデバイス８５０を含んでもよい。ストレージデバイス８５０は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。例えば、ストレージデバイス８５０は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどを含み得る。ストレージインターフェース８４０は、コンピューティングシステム８００のストレージデバイス８５０と他の構成要素との間でデータを転送及び／又は送信するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。ストレージデバイス８５０は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成されている、取り外し可能なストレージユニットから読み取るように、及び／又はそれに書き込むように構成されてもよい。好適な取り外し可能なストレージユニットの例としては、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイス等が挙げられるが、これらに限定されない。ストレージデバイス８５０はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム８００にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、ストレージデバイス８５０は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。ストレージデバイス８５０は、また、コンピューティングシステム８００の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
【００６８】
多くの他のデバイス又はサブシステムは、コンピューティングシステム８００に接続されてもよい。逆に、図８に例示される構成要素及びデバイスの全てが、本明細書に記載及び／又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図８に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム８００はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの１つ以上は、コンピュータ可読ストレージ媒体上にコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化され得る。コンピュータ可読ストレージ媒体の例としては、磁気ストレージ媒体（例えば、ハードディスクドライブ、及びフロッピーディスク）、光学的ストレージ媒体（例えば、ＣＤ−、又はＤＶＤ−ＲＯＭ）、電子ストレージ媒体（例えば、ソリッドステートドライブ、及びフラッシュメディア）等が挙げられる。そのようなコンピュータプログラムはまた、インターネットなどのネットワークを介してメモリに又はキャリア媒体上に記憶するためにコンピューティングシステム８００に転送されることができる。
【００６９】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム８００にロードされてもよい。コンピュータ可読媒体上に記憶されたコンピュータプログラムの全部又は一部分は、次に、メモリ８６０内に、並びに／又はストレージデバイス８５０、キャッシュ１４５及び／若しくはバックアップストレージデバイス１６５の種々の部分内に記憶されてもよい。プロセッサ８５５によって実行されるとき、コンピューティングシステム８００にロードされたコンピュータプログラムは、本明細書において記載及び／又は例示する実施形態のうちの１つ以上の機能をプロセッサ８５５に実行させてもよく、及び／又はその機能を実行するための手段であってもよい。付加的に又は代替的に、本明細書に説明及び／又は例示される例示的な実施形態のうちの１つ以上は、ファームウェア及び／又はハードウェアに実装され得る。例えば、コンピューティングシステム８００は、本明細書において開示される実施形態のうちの１つ以上を実装するように適合された特定用途向け集積回路（application specific integrated circuit、ＡＳＩＣ）として構成されてもよい。
ネットワーキング環境例
【００７０】
図９は、一実施形態に従う、様々なコンピューティングデバイスがどのようにネットワークを介して通信し得るかを例示する、ネットワーク化されたシステムのブロック図である。特定の実施形態では、ネットワーク接続型ストレージ（network-attached storage、ＮＡＳ）デバイスは、ネットワークファイルシステム（Network File System、ＮＦＳ）、サーバメッセージブロック（Server Message Block、ＳＭＢ）、又はコモンインターネットファイルシステム（Common Internet File System、ＣＩＦＳ）などのアプライアンス１１５（１）〜（Ｎ）と通信するように構成されてもよい。ネットワーク１８５は、アプライアンス１１５、クライアント１０５（１）〜（Ｎ）及び／又はバックアップストレージデバイス１６５の間の通信を容易にすることができる任意のタイプ若しくは形式のコンピュータネットワーク又はアーキテクチャを概して表す。
【００７１】
特定の実施形態では、図８の通信インターフェース８４５などの通信インターフェースは、アプライアンス１０５、クライアント１０５（１）〜（Ｎ）、バックアップストレージデバイス１６５及び／又はネットワーク１６０の間の接続性を提供するために使用されてもよい。バックアップ割当２０５は、（図９に示すように）バックアップストレージデバイス１６５の一部であってもよく、又バックアップストレージデバイス１６５内に実装されてもよく、かつ／又はキャッシュ１４５（１）〜（Ｎ）の一部として又はキャッシュ１４５（１）〜（Ｎ）内に実装されてもよい。本明細書に記載及び／又は例示する実施形態は、インターネット又は任意の特定のネットワークベース環境に限定されない。
【００７２】
いくつかの実施形態では、ネットワーク１８５は、ストレージエリアネットワーク（Storage Area Network、ＳＡＮ）とすることができる。他の実施形態では、ロールバックされたスナップショット生成システム９０５は、アプライアンス１１５（１）〜（Ｎ）の一部であってもよく、又は別個であってもよい。別個の場合、ロールバックされたスナップショット生成システム９０５及びアプライアンス１１５（１）〜（Ｎ）は、ネットワーク１８５を介して通信可能に結合されてもよい。一実施形態では、開示する実施形態のうちの１つ以上の全部又は一部は、コンピュータプログラムとして符号化されてもよく、そして、アプライアンス１１５（１）〜（Ｎ）、及び／若しくはロールバックされたスナップショット生成システム９０５、又はこれらの任意の組み合わせにロードされて実行されてもよい。本明細書に開示される実施形態のうちの１つ以上の全部又は一部はまた、コンピュータプログラムとして符号化され、ロールバックされたスナップショット生成システム９０５、アプライアンス１１５（１）〜（Ｎ）、バックアップストレージデバイス１６５、及び／又はキャッシュ１４５（１）〜（Ｎ）上に記憶され、ネットワーク１８５上で配信されてもよい。
【００７３】
一部の実施例では、ロールバックされたスナップショット生成システム９０５、アプライアンス１１５（１）〜（Ｎ）、バックアップストレージデバイス１６５、及び／又はキャッシュ１４５（１）〜（Ｎ）の全て又は一部は、クラウドコンピューティング又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他のリモートインターフェースを通じて、アクセス可能であり得る。
【００７４】
本明細書において説明される種々の機能は、リモートデスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。加えて、本明細書に記載の構成要素のうちの１つ以上は、データ、物理的デバイス、及び／又は物理的デバイスを、ある形式から他の形式に変換し得る。例えば、ロールバックエンジン１５５及び／又は宛先エンジン１６０は、アプライアンス１１５（１）〜（Ｎ）にバックアップ失敗後のバックアップ性能を改善させるために、アプライアンス１１５（１）〜（Ｎ）の挙動を変換し得る。
【００７５】
本開示をいくつかの実施形態と関連して説明してきたが、本開示は、本明細書で述べた特定の形式に限定されるように意図されていない。逆に、添付の特許請求の範囲によって規定されるような本開示の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含するように意図されている。
【図１】
2020518059.tif 000003
【図２】
2020518059.tif 000004
【図３】
2020518059.tif 000005
【図４】
2020518059.tif 000006
【図５】
2020518059.tif 000007
【図６】
2020518059.tif 000008
【図７Ａ】
2020518059.tif 000009
【図７Ｂ】
2020518059.tif 000010
【図８】
2020518059.tif 000011
【図９】
2020518059.tif 000012
【国際調査報告】
2020518059.tif 000013
2020518059.tif 000014
2020518059.tif 000015