JP2016530656A - 分散型ディザスタリカバリファイル同期サーバシステム - Google Patents

分散型ディザスタリカバリファイル同期サーバシステム Download PDF

Info

Publication number
JP2016530656A
JP2016530656A JP2016541949A JP2016541949A JP2016530656A JP 2016530656 A JP2016530656 A JP 2016530656A JP 2016541949 A JP2016541949 A JP 2016541949A JP 2016541949 A JP2016541949 A JP 2016541949A JP 2016530656 A JP2016530656 A JP 2016530656A
Authority
JP
Japan
Prior art keywords
file
server
files
client
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016541949A
Other languages
English (en)
Other versions
JP6196389B2 (ja
Inventor
ダブリュー. クラーク,ナサン
ダブリュー. クラーク,ナサン
ジー. ブライアント,アラン
ジー. ブライアント,アラン
ディー. ブラマンテ,ジュニア.,リチャード
ディー. ブラマンテ,ジュニア.,リチャード
ヴラディミロフ コスタディノフ,アレクサンダー
ヴラディミロフ コスタディノフ,アレクサンダー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Data System Corp
Original Assignee
Hitachi Data System Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Data System Corp filed Critical Hitachi Data System Corp
Publication of JP2016530656A publication Critical patent/JP2016530656A/ja
Application granted granted Critical
Publication of JP6196389B2 publication Critical patent/JP6196389B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files

Abstract

例示的な実装は、サーバからのデータだけでなくサーバに接続されたクライアントからのデータもリカバリすることに向けられる。最終のバックアップの後に作成されたまたは修正されたコンテンツを識別するためのアルゴリズムが、組み入れられている。このアルゴリズムは、また、共用フォルダのためのマウントポイントにおける変更を識別して解明して、情報の漏れを防止する。サーバは、故障から回復すると、クライアントにそれらの次回の接続時におけるリカバリに関して告知する。各クライアントは、次に、そのマウントポイントおよびファイル経路の現在の状態を判断し、それらを、サーバのマウントポイントおよびファイル経路と比較する。比較の後で、クライアントは、マウントポイントの差異を、それらの名称を変更することによって把握して示し、ローカルデータ全体(すべてのファイル、フォルダ、マウントポイント)をサーバに送る。サーバは、これらの差異を調整する。

Description

本開示は、ストレージシステムに関し、さらに詳しくは、ディザスタリカバリの間のサーバ/ストレージシステムのためのファイル同期に関する。
関連する技術では、クライアントネットワークとストレージプロバイダとに関係するストレージ/サーバシステムが存在する。ストレージゲートウェイは、クライアントネットワークから、更新データを、更新されたデータをあるボリュームに記憶するストレージサービスに送る。データは、ローカルデータストアにも記憶される。ローカルデータストアに記憶されたデータに何かが起こる場合には、失われたデータは、ストレージサービスにおけるボリュームに記憶されているデータを用いることにより、リカバリされる。
しかし、関連する技術は、ストレージサービスのディザスタリカバリを考慮しておらず、ストレージサービスにおけるボリュームのリカバリも考慮していない。
本出願の態様は、サーバを含み、このサーバは、複数のクライアントデバイスとのインターフェースとなるように構成されたインターフェースと、リカバリポイントにおいてサーバによって管理される第1のファイルのバージョンに関する情報を記憶するように構成されたメモリと、プロセッサであって、複数のファイルを、それらの複数のファイルを複数のクライアントデバイスにおいて用いることによってサーバにおいてファイルをリカバリするために、複数のクライアントデバイスから受信し、リカバリポイントにおける第1のファイルのバージョンよりも新しいバージョンを有する複数の受信されたファイルの第2のファイルに対して、第2のファイルの1つを第1のファイルの新たなバージョンとして管理し、第2のファイルの別の1つを第2のファイルの先の1つに対するコンフリクトファイルとして管理するように構成されたプロセッサとを含み得る。
本出願の追加的な態様は、サーバを管理するための方法を含む。この方法は、リカバリポイントにおいてサーバによって管理される第1のファイルのバージョンに関する情報を記憶するステップと、複数のファイルを、それらの複数のファイルを複数のクライアントデバイスにおいて用いることによってサーバにおいてファイルをリカバリするために、複数のクライアントデバイスから受信するステップと、リカバリポイントにおける第1のファイルのバージョンよりも新しいバージョンを有する複数の受信されたファイルの第2のファイルに対して、第2のファイルの1つを第1のファイルの新たなバージョンとして管理し、第2のファイルの別の1つを第2のファイルの先の1つに対するコンフリクトファイルとして管理するステップとを含み得る。
本出願の追加的な態様は、サーバを管理するためのコンピュータプログラムを含む。このコンピュータプログラムは、リカバリポイントにおいてサーバによって管理される第1のファイルのバージョンに関する情報を記憶するステップと、複数のファイルを、それらの複数のファイルを複数のクライアントデバイスにおいて用いることによってサーバにおいてファイルをリカバリするために、複数のクライアントデバイスから受信するステップと、リカバリポイントにおける第1のファイルのバージョンよりも新しいバージョンを有する複数の受信されたファイルの第2のファイルに対して、第2のファイルの1つを第1のファイルの新たなバージョンとして管理し、第2のファイルの別の1つを第2のファイルの先の1つに対するコンフリクトファイルとして管理するステップとのための命令を含み得る。
例示的実装が実装され得る例示的システムアーキテクチャの図解である。 例示的実装が実装され得る例示的コンピュータシステムの図解である。 ある例示的実装によるファイルシステムとマウントポイントとの例示的クライアントおよびサーバのビューの図解である。 ある例示的実装による流れ図である。 ある例示的実装による流れ図実行の例の図解である。 ある例示的実装による流れ図実行の例の図解である。 ある例示的実装によるリカバリPUTのための流れ図である。 ある例示的実装によるリカバリUPDATEのための流れ図である。 図5Aおよび図5Bの例示的実装に基づくクライアントとサーバとの間の例示的対話の図解である。 図5Aおよび図5Bの例示的実装に基づくクライアントとサーバとの間の例示的対話の図解である。 図5Aの例示的実装に基づくクライアントとサーバとの間の例示的対話の図解である。 図5Aの例示的実装に基づくクライアントとサーバとの間の例示的対話の図解である。 図5Aおよび図5Bの例示的実装に基づくクライアントとサーバとの間の例示的対話の図解である。 図5Aおよび図5Bの例示的実装に基づくクライアントとサーバとの間の例示的対話の図解である。
以下の詳細な説明は、本出願の図面と例示的実装とのさらなる詳細を提供する。複数の図面の間で重複する要素の参照番号と説明とは、見やすくするために、割愛される。説明を通じて用いられる用語は例として提供され、限定のためのものであることは意図されていない。たとえば、「自動的」という用語の使用は、本出願の実装を実践する技術における通常の技量の1つの所望の実装に応じて、それらの実装の一定の態様に対するユーザまたは管理者の制御に関係する完全に自動的なまたは半自動的な実装に関係し得る。また、本明細書で説明される実装は、限定を意図しておらず、所望の実装に応じて、様々な方法での実装が可能である。
本明細書で説明される例示的実装は、ディザスタリカバリ状況におけるサーバ/ストレージシステムのクライアントからのデータリカバリおよび共用フォルダのための単純化されたデータ復元に関係する。
組織は、自らのデータへの連続的なアクセスを有することに依存し得る。したがって、重要なシステムおよびアプリケーションは、システムが故障した場合にデータ損失を最小化するための堅固なディザスタリカバリ計画を必要とし得る。組織化されていない不変のデジタルコンテンツが増加するにつれ、データを管理しバックアップすることは、困難となり得る。分散クライアントサーバシステムと関連する技術分野では、システムにおけるサーバからのデータは、別のシステムに、周期的にバックアップされる。周期的なデータバックアップは、(連続的なデータバックアップと比較すれば)システム性能に最小限の影響を与えるだけであり得るが、データ損失の潜在性を生じさせ、最終のバックアップ以降にシステムに追加されたデータは、どのようなものであっても、故障の後では回復不能となり得る。
図1は、例示的な実装がその上で実装され得る、例示的なシステムアーキテクチャを図解している。このシステムアーキテクチャは、図2に記載されているサーバ205を含み得るのであって、そのサーバは、1つまたは複数のデータベースに対応する1つまたは複数のノードを管理するように構成され得る。このサーバは、サーバにおける1つまたは複数のノードによって管理されるデータベースに対応するデータを記憶するための(たとえば、ストレージシステムまたは他の外部ストレージなどの)オブジェクトストレージ102を維持し得る。このサーバは、ネットワーク101を経由して、1つまたは複数のクライアント(クライアントコンピュータ100)と対話し得る。クライアントとサーバとは、表現状態転送(REST)アプリケーションプログラミングインターフェース(API)103を介して、相互に対話し得る。定常状態の動作の間にサーバと周期的に通信するクライアントが、存在し得る。クライアントは、新たなファイルコンテンツをサーバに送り、更新されたファイルをサーバから受信することによって、サーバとの間でファイルを同期させる。ある与えられたユーザのためのすべてのクライアントが、同じ組のファイルを同期させる。異なるユーザのためのクライアントは、それらのユーザのために、ファイルを同期させる。サーバの詳細は、図2で説明されている。各クライアントは、プロセッサと、メモリと、ストレージドライブとを含んでおり、クライアントにおけるプロセッサは、たとえば図4Aに説明されているように1つまたは複数の実装を容易化するように構成され得る。
図2は、その上に例示的な実装が実装され得る、例示的なコンピュータシステム200を図解している。コンピュータシステム200は、I/Oユニット235と、ストレージ260(および/またはメモリ)と、当業者に知られているように1つまたは複数のユニットを実行させるように動作可能なプロセッサ210とに関係するサーバ205を含む。図2に図解されているサーバ205は、1つのノードと関係する構成を表現しているが、このサーバは、図1に図解されるように追加的なノードを有することが可能である。サーバ205は、RESTインターフェース103などのインターフェースを介して、サービスと関連する1つまたは複数のクライアントと対話し得る。本明細書で用いられる「コンピュータ可読媒体」という用語は、実行のためにプロセッサ210に命令を提供することに参加する任意の媒体を指しており、限定を意味しないが、光ディスク、磁気ディスク、リードオンリメモリ、ランダムアクセスメモリ、ソリッドステートデバイスおよびドライブなどのコンピュータ可読記憶媒体の形式で存在し得、または、電子的情報を記憶するのに適した非一時的な媒体もしくは搬送波などの媒体を含み得るコンピュータ可読信号媒体の任意の他のタイプの形式でも存在し得る。I/Oユニットは、キーボード、マウス、タッチデバイスなどの入力デバイスもしくは音声コマンドを用い得るユーザインターフェース240またはオペレータインターフェース245からの入力を処理する。
サーバ205は、また、(たとえば、図1に図解されているオブジェクトストレージ102などの)外部ストレージ250に接続されることがあり得るが、この外部ストレージは、ストレージシステム(RAIDシステムもしくはDISDアレイ)、ポータブルハードドライブ、光媒体(CDもしくはDVD)、ディスク媒体、またはそこからサーバ205がデータを読み出すことが可能な任意の他の媒体などのストレージを含み得る。サーバ205は、ユーザからの追加的な情報を要求することに加えて、データと他の情報とをユーザに出力するために、ディスプレイなどの出力デバイス255に接続され得る。サーバ205から、ユーザインターフェース240とオペレータインターフェース245と外部ストレージ250とインターフェース103と出力デバイス255とへの接続は、802.11標準、Bluetooth(登録商標)もしくはセルラープロトコルなどの無線プロトコルを介し得、または、ケーブルもしくは光ファイバなどの物理的な伝送媒体を介することがあり得る。出力デバイス255は、したがって、ユーザとの対話のための入力デバイスとして、さらに作用し得る。
プロセッサ210は、たとえば図4A、図5Aおよび図5Bに記載されている1つまたは複数の実装を容易にするように構成され得る。このプロセッサは、サーバをクライアントデバイスからリカバリし、サーバのリカバリの後では、クライアントリカバリファイルとクライアントからのファイル更新とを処理するために、図5Aおよび図5Bに記載されているように、決定を処理し得る。サーバ205は、(たとえば、サーバにおける故障または事故が原因で)故障する場合には、サーバのリカバリを行うためにリカバリプロセスを実行する。このプロセスは、ファイルをリカバリし、サーバ205を以前のバックアップポイントにロールバックして、そのポイントがリカバリポイントであると決定するために、(たとえば、ストレージ260もしくは外部ストレージ250として実装されている)ストレージシステムに記憶されているバックアップまたはスナップショットを用いることを含み得る。すなわち、リカバリポイントとは、ストレージシステムに記憶されているバックアップまたはスナップショットを用いることによってリカバリプロセスを実行した直後であって、クライアントにおけるデータを用いることによってリカバリプロセスを実行する前の時点を意味する。リカバリの後では、サーバ205は、次に、クライアントからのファイルを更新または追加してクライアントとの同期を完了するために、1つまたは複数のクライアントと対話し得る。例示的な実装では、ストレージ260は、リカバリポイントにおいてサーバによって管理される第1のファイルのバージョンに関する情報と、サーバのファイルに関する情報とを記憶するように構成されたメモリという形態を取り得る。
サーバは、リカバリを完了すると、リカバリのためにクライアントからファイルを受け取ったインターフェース103を介して、1つまたは複数のクライアントとの対話を開始し得る。プロセッサ210は、よって、複数のクライアントデバイスにおける複数のファイルを用いることによってサーバにおけるファイルをリカバリするために、複数のクライアントデバイスから複数のファイルを受信し、(たとえば、リカバリポイントにおけるサーバでの対応するファイルなどの)第1のファイルのバージョンよりも新しいバージョンを有する複数の受信されたファイルである第2のファイルに関しては、第2のファイルの1つを第1のファイルの新たなバージョンとして管理し、第2のファイルの別の1つを第2のファイルの先の1つのファイルに対するコンフリクトファイルとして管理するように、構成され得る。さらなる詳細は、図5Aおよび図5Bにおいて提供される。
プロセッサ210は、図5Aおよび図5Bにおけるさらなる詳細に図解されているように、決定に基づいてコンフリクトファイルを生成するように構成され得る。サーバのリカバリの後には、プロセッサは、クライアントからのファイルをリカバリするためのクライアントリカバリファイルの形式のファイルPUTを、または、クライアントがサーバに更新を提出するときには、更新されたクライアントファイルの形式のファイルUPDATEを、受け取り、処理し得る。クライアントリカバリファイルまたは更新されたクライアントファイルがストレージに記憶されているサーバのファイルの1つに対応するときには、決定に応じて、コンフリクトファイルが生成され得る。決定がクライアントリカバリファイルまたは更新されたクライアントファイルをコンフリクトファイルとして記憶することを示すときには、コンフリクトファイルが生成される。これらの決定は、図5Aおよび図5Bの流れ図に基づき、クライアント更新ファイルまたはクライアントリカバリファイルに対して、なされる。クライアントリカバリファイルまたは更新されたクライアントファイルと関連するコンテンツは、コンテンツファイルを生成するのに用いられる。たとえば、更新されたクライアントファイル(ファイルUPDATE)とクライアントリカバリファイル(ファイルPUT)とは、実際のファイルコンテンツを有しないことがあり得るのであって、クライアント上に記憶されているファイルへのインデクスであり得る。そのような例示的な実装では、サーバは、コンフリクトファイルを生成するために、更新されたクライアントファイルまたはクライアントリカバリファイルのインデクスによって示されるように、ファイルコンテンツをクライアントからリトリーブする。あるいは、コンテンツが、更新されたクライアントファイルまたはクライアントリカバリファイルに付属されていることもあり得る。
プロセッサ210は、また、そのファイルがサーバによって管理されているファイルと対応しないときには、受信されたファイルまたは更新を記憶するようにも構成され得る。ファイルがサーバによって管理されているファイルと対応しないときには、そのファイルは、サーバによってそれ以前には管理されていなかったか、または、そうでなければ、サーバがリカバリされたときに失われた新たなファイルであると推測され得る。次に、ファイルのコンテンツは、サーバと関連するストレージシステムとの実装に応じて、リトリーブされ、ストレージ260または外部ストレージ250に記憶され得る。さらなる詳細は、図5Aおよび図5Bで提供される。
図3は、ある例示的な実装により、ファイルシステムとマウントポイントとに関して、例示的なクライアントとサーバとのビューを図解している。サーバでは、あるユーザに属するフォルダとファイルとが、ファイルシステムに編成されている。ファイルシステムに関する情報は、サーバ250におけるストレージ260または他のメモリデバイスに記憶されている。各ファイルシステムは、図3で「fsId」として図解されている一意的な識別子を有する。ファイルシステムは、ファイルとフォルダとを含む。各ユーザは、そのユーザのためのすべての経路のベース(またはルート)である自分自身のプライベートファイルシステムを有する。図3における参照番号321、322、323はプライベートファイルシステムのためのサーバテーブルの一例を示しており、各サーバテーブルはストレージ260に記憶される。プライベートファイルシステムのための各サーバテーブルは、そのプライベートファイルシステムのファイルシステム識別子と、そのプライベートファイルシステムにおける各ファイルのための経路名と、関係する共用フォルダのためのマウントポイントのメタデータとを含む。メタデータは、マウントポイントの経路と、マウントポイントの共用識別子(fsId)とを含む。たとえば、User1、Client1のサーバテーブル321については、プライベートファイルシステムのファイルシステム識別子は「411678」であり、プライベートファイルシステムにおけるすべてのファイルに対する経路名は「/Folder3/mark.txt」および「/Folder4/dark.txt」であり、関係する共用フォルダのためのマウントポイントの経路は「/SharedFolder1」であり、マウントポイントの共用識別子(fsId)は「1234567」である。クライアントでは、このフォルダは、単一のトップレベルのフォルダにマップされる。各ファイルはバージョンを有しており、このバージョンとは、そのファイルへの各変化のたびに増加する数字である。さらに、各ファイルに関して、セキュアハッシュが維持される。2つのファイルが同じハッシュを有する場合には、それらは同じコンテンツを有する(すなわち、相互に異なることがない)と推測され、システムは、重複するファイルを転送または記憶することを回避できる。
複数のユーザがフォルダを共用することもあり得る。サーバでは、共用フォルダは、独立のファイルシステムである。図3の参照番号324は、共用フォルダのためのサーバテーブルの一例を示しており、共用フォルダのためのサーバテーブルはストレージ260に記憶される。これらの共用フォルダは、共用識別子(たとえば、SharedFolder1)を有するフォルダとそのフォルダに付属する1つのメタデータとを作成することによって、ユーザのプライベートファイルシステムにマップされる。メタデータは、上で説明されたように、プライベートシステムのためのサーバテーブルにおいて管理される。共用識別子は、共用フォルダのファイルシステム識別子である。クライアントでは、共用フォルダのためのローカルマウントポイントテーブルは、共用フォルダとその共用フォルダのための共用識別子(fsId)とに対するマウントポイントの経路を含む。異なるユーザのためのマウントポイントは、異なる名称を有することがあり得る。共用識別子は、クライアントへの不透明なトークンであり、ファイルシステム識別子を含む。クライアントは、共用識別子を有する任意のフォルダを、共用フォルダのマウントポイントとして扱う。さらに、サーバ250におけるストレージ260は、サーバ260に記憶される各ファイルに対するバージョン情報を記憶し、この情報は、図5Aおよび図5Bのプロセスにおいて用いられる。さらに、クライアントにおけるメモリも、クライアントに記憶される各ファイルに対するバージョン情報を記憶する。
クライアントが各ファイルに関してサーバに変更を送るときには、それらは、「基礎バージョン」としてそのファイルの以前のバージョンを含む。この基礎板がサーバにおけるそのファイルの現在のバージョンと一致しない場合には、サーバは、新たなコンテンツを用いて、コンフリクトファイルを作成する。コンフリクトファイルの名称は、「file−name(yyyy−mm−ddにおけるユーザ名のコンフリクト).file−extension」など、ユーザのためにそれらを明確に識別するための一意的なフォーマットを有し得る。
図3の例では、ユーザ(User1)はクライアントを登録し、1つの共用フォルダと1つのプライベートフォルダとを備えたフォルダ構造を作成する。User1は別のClient2を登録し、Client2はClient1およびサーバと同じビューを見ることになる。User2はクライアントを登録し、User1はUser2とフォルダ「SharedFolder1」を共用する。User2は、「SharedFolder1」を「MyShare」に名称変更する。
リカバリ
故障の状況においては、サーバは、完全に失われてしまうことがあり得るのであって、バックアップからリカバリなされなければならないことがあり得る。この状況では、リカバリの前にサーバと同期していたクライアントは、サーバよりも「先に進んで」いることになるであろう。クライアントは、サーバが有していない変更を有している。ファイルのバージョンは、サーバにおけるこれらのファイルのバージョンよりも高いであろう。クライアントが自らの状態をサーバから直接に更新した場合には、ローカルな変更がすべて失われてしまうことがあり得る。図4A、図5A、図5Bでは、サーバまたはクライアントがプロセスの主体である場合には、サーバまたはクライアントにおけるプロセッサが、メモリ(たとえば、ストレージ)に記憶されているソフトウェアを実行することによって、プロセスを実行することができる。故障がサーバ(または、外部ストレージ)で生じる場合には、サーバは、ストレージ260および/または外部ストレージ250に記憶されているデータを用いることによって、サーバにおけるファイルシステムをリカバリする。その後で、サーバは各クライアントと通信し、各クライアントに記憶されているデータを用いることによって、図4A、図5A、および図5Bに記載されているリカバリ手順を実行する。
図4Aは、例示的な実装による流れ図を図解している。この例示的な流れ図では、マウントポイントまたは共用識別子に対する経路への変更が存在するときに生じる「.PRIVATE」を有するフォルダの名称変更が存在する。たとえば、フォルダの状態が「共用」から「プライベート」に変更されるときに、クライアントは、ローカルマウントポイントにおいて共用識別子を変更する。図4Aに示されている例示的な実装は、サーバのリカバリを扱うための流れ図を図解しており、サーバのリカバリには、リカバリを実施するためにクライアントからの情報を用いる。
サーバの自己リカバリ(400)の後で、サーバは、サーバがリカバリモードにあるということを任意の要求側クライアントに知らせる(401)。クライアントはリカバリモードをアクノレッジして、クライアントのプライベートファイルシステムのためのサーバテーブルと、上述した共用フォルダのためのメタデータを含むサーバテーブルとをサーバからフェッチすることを含むリカバリ手順を進める(402)。クライアントは、サーバテーブルをフェッチするか、または、そのメタデータを含む他の情報をフェッチすることによって、関係する共用フォルダのためのメタデータを取得できる。リカバリ手順の例示的な実装は、サーバがすべてのファイルの直近のコンテンツを有することができ、ファイルがまったく失われずまたは消去されないように、行われる。さらに、このリカバリ手順は、クライアントが、サーバと同期しておりユーザのための正しいファイルを有することになることを容易にする。この例示的な実装は、また、ファイルが、意図していない共用フォルダに書き込まれて、意図していないユーザにデータを漏らすことになり得ることを防止することができる。
クライアントは、リカバリのために以下の手順を行うことができる。クライアントは、その現在のローカルマウントポイントテーブルと、共用フォルダのための各マウントポイントのためのサーバテーブルにおけるメタデータとを比較して(403)、ローカルマウントポイントテーブルにおけるメタデータがサーバテーブルにおけるサーバメタデータと異なっているかどうかを判断する(404)。マウントポイントの経路またはローカルマウントポイントテーブルのマウントポイント共用識別子のいずれかがサーバテーブルのそれと異なるときには、マウントポイントから「.PRIVATE」への名称変更が生じる(405)。(たとえば、マウントポイントの経路が変更になるか、または、共用識別子のマウントポイントが、クライアントにおいてローカルに変更になる。)共用識別子は一意的なIdであり、クライアントに対しては不透明である。よって、マウントポイントにおけるすべてのマウントポイントについて、クライアントにおけるリストがサーバにおけるリストと比較される。このようにして、いずれかに対して経路または共用識別子が異なる場合には、クライアントは、それらのマウントポイントを名称変更する。
クライアントにおけるローカルマウントポイントメタデータ(たとえば、共用フォルダ)に対する共用識別子がサーバにおけるマウントポイントメタデータと異なる場合(メタデータは、マウントポイントの経路またはマウントポイントの共用識別子を含む)には(Yes)、クライアントは、元のマウントポイントの名称の最後に「.PRIVATE」または別のサフィックスを追加することによって、これらのマウントポイントの名称を変更し、ローカル共用識別子を削除し、対応するマウントポイントを通常のフォルダ(たとえば、プライベートフォルダ)の中に作成する(405)。後で、これらのフォルダは、新たなファイルおよびフォルダとして、サーバに送られることになる。新たな名称は、ユーザに対して、フォルダの共用状態属性にコンフリクトが存在し、それらがフォルダを再び共用することがあり得るということを示す。
共用フォルダのマウントポイントの比較の終了は、マウントポイントのすべてが比較される(406)と、生じる。すべてのマウントポイントが比較されているわけではない場合(No)には、比較は、次のマウントポイントを用いて反復される(403)。比較が終了する(Yes)と、クライアントは、ローカルな状態全体を横断し、(たとえば、ある時点で同期していた)バージョンを有する(たとえば、ファイル、フォルダ、マウントポイント)すべてのローカルアイテムを、真に設定されたリカバリフラグを有するサーバに送る(407)。リカバリフラグがブーリアンフラグであることは要求されず、所望の実装に応じて、他の実装もまた可能である。たとえば、ある例示的な実装は、ファイルを管理しているクライアントが、サーバと直近に同期していたときよりも後にローカルな変更を有するかどうかに応じて、「recoveryPut」(PUT)または「recoveryUpdate」(UPDATE)の値を含み得る。ローカルアイテムの送信とサーバとの同期プロセスとは、ファイル名、ファイル経路、ハッシュおよび各ファイルのサイズに関する情報を有するRESTによるAPIのPUTを含む。サーバがまだそれらを有していない場合には、それは、ファイルのコンテンツも含み得る。サーバは、既存の状態を有する3つのPUTと調停をする。リカバリPUTの詳細は、図5Aとの関係でさらに説明される。
すべてのPUTを調停する際に、クライアントは、サーバに、リカバリが完了したことを告げる(408)。次に、クライアントは、バージョンを有していなかった(たとえば、一度もサーバと同期しなかった)すべてのローカルファイルを、通常の動作またはPUTとしてサーバに送る(409)。これらのファイルは、定常状態の場合と同じように、サーバに追加される。このステップは、先のプロセスによって「.PRIVATE」と名称変更された任意のフォルダを含む。クライアントは、次に、ユーザのすべてのファイルに関するすべてのメタデータを、サーバからプルする(410)。これにより、クライアントは、サーバ状態に更新されることになる。
図4Bおよび図4Cは、ある例示的実装による流れ図の実行の例を図解している。図4Bの例において、リカバリポイントは、バックアップからの復元が完了した後でのサーバデータの状態である。クライアント1は、SharedFolder1という名称のプライベートフォルダを有し、共用フォルダは1つも有していない。User1のために、クライアント1はサーバと通信し、サーバは自らがリカバリモードにあることを示す。クライアントは、ローカルマウントポイントテーブルにおけるマウントポイントメタデータと、サーバ上のサーバテーブルにおけるマウントポイントメタデータとを比較する。サーバにおけるマウントポイントの名称SharedFolder1はクライアントには存在しないが、クライアントは同じ名称を有するプライベートフォルダを有する。本開示において説明されているように、実装を名称変更することなく、サーバは、ユーザのプライベートフォルダ「SharedFolder1」のすべてのプライベートコンテンツの共用を開始し得る。そのような状況を避けるために、クライアントは、プライベートフォルダ「SharedFolder1」を「SharedFolder1.PRIVATE」に名称変更する。クライアントは、また、サーバから、マウントポイントSharedFolder1の詳細をプルする。
図4Cの例において、リカバリポイントは、バックアップからの復元が完了した後でのサーバデータの状態である。クライアント1は、ディザスタが発生する前の一定の時刻において、その共用フォルダマウントポイントを、「SharedFolder1」から「NewShare」に名称変更し、それが、クライアント1の現在の状態である。ユーザ1のためのクライアント1はサーバと通信し、サーバは自らがリカバリモードにあることを示す。クライアント1は、ローカルマウントポイントテーブルにおけるマウントポイントメタデータと、サーバテーブルにおけるサーバ上のマウントポイントメタデータとを比較する。サーバにおけるマウントポイントの名称(マウントポイントの経路)「SharedFolder1」は、クライアントにおけるマウントポイントの名称(マウントポイントの経路)「NewShare」と異なる。したがって、「NewShare」は、プライベートフォルダの中に作成され、その新たな名称は「NewShare.PRIVATE」である。
上の例において、マウントポイントの名称は、用いられるメタデータの一例である。同様の名称変更は、共用識別子が同一の経路を有するフォルダに対して異なるときにも生じ得る。
リカバリプット(recovery put)およびリカバリ更新(recovery update)の例示的実装
クライアントは、リカバリのためにファイルを送るときには、REST PUT動作を用いる。この動作の間には、ファイルに関して2つの可能性が存在し得る。すなわち、それらが、同期していたときとまったく同じコンテンツであるか、または、ファイルが同期された後で、ユーザによってローカルに修正されたか、のいずれかである。以後、第1の場合はPUTと称され、第2の場合はUPDATEと称される。より詳しくは、PUTのリカバリプロセスは、ファイルと関連する現在のメタデータ(たとえば、サイズおよび/または修正時刻)が、そのローカルデータベースにクライアントが記録したものから変化していない(たとえば、サーバと直近に同期してから、ファイルがローカルに変化していない)場合に、用いることが可能である。UPDATEのリカバリプロセスは、サーバへの直近の同期の後でファイルがローカルに変化している(たとえば、サーバがダウンしていて更新を受け取っていなかった間に、ユーザがファイルをローカルに更新した)場合に、用いることが可能である。サーバが利用可能になり(たとえば、故障からリカバリ)、クライアントにリカバリを告げると、クライアントはローカルに変化したファイルをUPDATEとして送るのであるが、その理由は、サーバとの直近の成功した同期の後で、ファイルがローカルに変化しているからである。PUTとUPDATEとの間の差は、クライアントがサーバと同期した直近の時点の後でファイルがローカルに変更されているかどうかである。それぞれの場合において、サーバは、クライアントからのデータを用いて、それ自体をリカバリしようと試みる。
以下の例では、ClientVersionとは、PUTまたはUPDATEにおいてクライアントによって送られたバージョンである。ServerVersionとは、サーバ上のファイルのバージョンである。
サーバがリカバリを経験するときには、各ファイルシステムにはRecoveryVersionというマークが付され、このRecoveryVersionはリカバリの間は変更されない。このRecoveryVersionは、図5Aのリカバリの開始時点におけるファイルシステムでのすべてのファイルの中で最高のバージョンよりも高い。リカバリの間は、RecoveryVersionよりも大きいかそれと等しいどの遭遇したClientVersionも、システムに対して、サーバからのバックアップ復元の後で、遭遇したより高いClientVersionが作成されたことを示す。ClientVersion、RecoveryVersionおよびServerVersionは、ファイルのバージョン数を示すメタデータとしての実装が可能であり、または、所望の実装に応じた他の方法による実装が可能である。
以下の実装を用いると、それによって、より少数のコンフリクトファイルが作成されるようにしながら、サーバ上のすべてのファイルコンテンツを受け入れることが可能であり得る。関連技術の実装では、コンフリクトファイルが、ClientVersionがServerVersionと一致しないときには常に、作成され得る。しかし、リカバリプットを用いることで、この例示的実装により、サーバのリカバリの後で、あるファイルへの第1の更新が成功することが可能になる。図5Aおよび図5Bに示されている例示的実装は、サーバとクライアントとの間のサーバによる調停プロセスを図解している。図5Aおよび図5Bに図解されているプロセスを開始する前に、サーバは、各クライアントから送られる各ファイルに対するリカバリフラグを参照して、クライアントが、各ファイルに対するPUTまたはUPDATEのリカバリプロセスを要求しているかどうかを判断する。既に説明されたように、リカバリフラグは、ファイルがサーバとの直近の同期の後でローカルな変更を有したかどうかに応じて、「recoveryPut」(PUT)または「recoveryUpdate」(UPDATE)を含み得る。
図5Aは、ある例示的実装によるリカバリPUTのための流れ図を図解している。リカバリPUTは、上で説明されたように、クライアントリカバリファイルの形式であり得る。サーバは、ClientVersionを得るために、クライアントからファイルPUTを受信する(500)。ClientVersionがRecoveryVersionよりも新しいかどうかを確認するために、比較が行われる(501)。新しくない場合(No)にはPUTは無視される(502)のであるが、その理由は、ClientVersionが、サーバおよび外部ストレージにおけるファイルを用いることによりリカバリが可能な最高のバージョンよりも前のバージョンであり、よって、サーバは既に更新済みであり(サーバは、既にクライアントバージョンを有している)、それにより、PUTは廃棄可能であるからである。
そうでない(Yes)場合には、ServerVersionがゼロ(すなわち、サーバがコピーを有していない)かどうかを確認するために、チェックが行われる(503)。ServerVersionがゼロ(Yes)である場合には、そのファイルを新たなファイルとして記憶するためにPUTが実行される(504)のであるが、その理由は、そのファイルがサーバには存在しないからである。そうでない(No)場合には、ServerVersionがRecoveryVersionよりも古いかどうかを確認するために、チェックが行われる(505)。ServerVersionがRecoveryVersionよりも古い(505においてYesである)場合には、それは、サーバが、RecoveryVersionよりも新しいClientVersionを有する別のファイルをクライアントからまだ受信していないことを示す。ServerVersionがRecoveryVersionよりも新しい(505においてNoである)場合には、それは、サーバが、RecoveryVersionよりも新しいClientVersionを有する別のファイルをクライアントから既に受信したことを示す。
ServerVersionがRecoveryVersionよりも古い(Yes)場合には、PUTは、クライアントから受信されたファイルを用いることによって、既存のファイルへの更新として処理される(506)。クライアントからのファイルは、このようにして、サーバにおけるファイルの最新のバージョンとなるために用いられ、その時点でクライアントにおいて記憶されている他のバージョンのすべてよりも高いバージョンに設定される。これは、受信されたファイルを直近のバージョンとして指定し、このファイルに対するクライアントからの以後のファイルPUTをコンフリクトファイルとなるように処理するために、なされる。そうでない(No)場合には、両者が同じコンテンツを有することを示すこと、すなわち、クライアントおよびサーバファイルが同じハッシュを有するかどうかを確認するために、チェックが行われる。
クライアントおよびサーバファイルが同じハッシュを有する(Yes)場合には、PUTは無視され(508)、廃棄され得る。クライアントは、自らがリカバリを完了した後で、そのファイルに対する新たな情報をプルすることになる。そうでない(No)場合には、クライアントファイルを用いて、コンフリクトファイルが作成される(509)のであるが、その理由は、別のクライアントがリカバリの後でそのファイルを既に更新しており、その更新がファイルの履歴の中にどのように適合するかどうかを判断することが可能でないことがあり得るからである。ある例示的実装では、サーバが、コンフリクトファイルを記憶するフォルダにおいてコンフリクトファイルを作成することがあり得る。こうして、サーバは、元のファイルと同じディレクトリにおいてコンフリクトファイルをプットすることができる。
上述した例示的実装において説明されたこのリカバリプロセスにより、サーバは、リカバリポイントにおけるサーババージョンよりも新しいバージョンを有する複数のファイルを受信する場合には、それら複数のファイルの1つを新たなバージョンを有する更新されたファイルとして管理し、それ以外のファイルを第1のファイルに対するコンフリクトファイルとして管理する。リカバリポイントは、ストレージ260と外部ストレージ250とのバックアップからの復元が完了した後におけるサーバのデータの状態である。第1のファイルとは、複数のファイルの中でサーバが最初に受信するファイルである。
上の例示的実装において説明されたこのリカバリプロセスによって、サーバは、サーバの内部/外部ストレージだけではなくクライアントにおけるメモリにも記憶されているファイルを用いることにより、ファイルをリカバリすることが可能である。さらに、サーバは、複数のクライアントにおけるファイルの間でのコンフリクトを解決することができる。
図5Bは、ある例示的実装によるリカバリUPDATEのための流れ図を図解している。上で説明されたように、リカバリUPDATEは、更新されたクライアントファイルの形式での実装が可能である。リカバリUPDATEの例示的実装では、サーバにおけるファイルバージョンよりも新しいファイルバージョンを有する複数のクライアントが存在する場合に、サーバは、それらのクライアントバージョンの1つを更新されたバージョンとして扱い、別のクライアントバージョンをコンフリクトバージョンとして扱うように構成される。さらに、サーバは、クライアントファイルUPDATEと同じバージョンであるバージョンのファイルを有する場合であっても、クライアントファイルUPDATEを用いることによって、サーバにおけるファイルを更新する必要がある。
ファイルUPDATEの例示的実装では、サーバは、クライアントからファイルUPDATEを受信する(510)。ServerVersionがゼロである、すなわち、サーバがそのファイルのコピーを有していないことを示しているかどうかを確認するために、チェックが行われる(511)。ServerVersionがゼロである(Yes)場合には、ファイルUPDATEは、サーバにおいてそのファイルを新たなファイルとして追加するために、新たなPUTとして許容する(512)。
ServerVersionがゼロではない(No)場合には、ClientVersionがServerVersionと同じであるかどうかを確認するために、チェックが行われる(513)。ClientVersionがServerVersionと同じである(Yes)場合には、ServerVersionがRecoveryVersionよりも古いかどうかを判断するために、チェックが行われる(514)。ServerVersionがRecoveryVersionよりも古い(Yes)場合には、既存のファイルのUPDATEが許容される(515)のであるが、その理由は、この動作が既存のファイルの標準的な更新であるからである。そうでない(No)場合には、ClientVersionは、サーバがロールバックしたときに失ったバージョンであり、よって、ClientVersionは、ロールバックの時点におけるRecoveryVersionよりも新しい(516)。
そうではなくて、ClientVersionがServerVersionと同じではない場合には、ServerVersionがRecoveryVersionよりも古く、ClientVersionがRecoveryVersionよりも新しいかどうかを確認するために、チェックが行われる(517)。そうである(Yes)場合には、ClientVersionがリカバリの後でのファイルへの最初の更新であるという結果になり、したがって、新たなClientVersionを用いてサーバにおける既存のファイルを更新するUPDATEが許容される(518)。そうでない(No)場合には、コンフリクトファイルが作成される(519)。
図5Cおよび図5Dは、図5Aおよび図5Bの例示的実装に基づいて、クライアントとサーバとの間の例示的な対話を図解している。特に、図5Cおよび図5Dは、サーバが失ったバージョンをクライアントが有しているときに生じる例示的な対話を図解している。このように、例示的実装は、図5Aおよび図5Bに図解されているように、リカバリPUTまたはリカバリUPDATEのいずれかに対して生じ得る。
図5Cでは、ユーザは、3つの登録されたクライアントを有する。サーバは、リカバリポイントにあり、失われたデータをクライアントからリカバリすることを試みる。リカバリポイントでは、ファイルa.txtのServerVersionはV6であり、RecoveryVersionはV7である。Client1におけるファイルa.txtのClientVersionsはV7であり、Client2はV8であり、Client3はV5である。Client1はサーバと通信する。図5Dでは、サーバが、Client1との対話から、自らがa.txtのより古いバージョンを有していることを認識し、よって、新たなバージョンを用いてそのバージョンを更新する。図5Dの例では、サーバはServerVersionV10を作成するのであるが、これは他のすべてのクライアントのバージョンよりも高く、他方で、RecoveryVersionはV7のままである。ServerVersionは、サーバが依然としてクライアントとの同期化を行っている間にクライアント側でファイルがローカルに編集されるときに、コンフリクトファイルを作成するための状況を扱うために、最も高いバージョンに設定される。バージョン名はクライアントにおけるものとは同じではないが、コンテンツは同じである。こうして、ServerVersionV10はクライアント1においてV7と同じコンテンツを有しており、サーバはServerVersionV10をクライアント1に送る。クライアント1のビューは同じままであるが、ファイルa.txtのバージョン数は今ではV10である。ただし、コンテンツは、先のClientVersionV7と同じままである。図5Dは、クライアント/サーバの対話の後でのクライアントおよびサーバにおけるビューを図解している。
図5Eおよび図5Fは、図5Aの例示的実装に基づくクライアントとサーバとの間の例示的な対話を図解している。特に、図5Eおよび図5Fは、図5Cおよび図5Dの対話の後の、クライアント3からの対話による、リカバリPUTのための例示的な対話を図解している。図5Eでは、クライアント3は、バージョン5(V5)のファイルa.txtを有し、共用フォルダマウントポイント「Share1」を有さず、「Folder2」の下にはファイルを有しない。サーバビューは、図5Dからのクライアント1との対話の後のビューである。その展望から、クライアント3は、図5Eに図解されているように、サーバと対話する。図5Fでは、サーバは、自らがクライアント3よりも新しいバージョンのa.txtを有していることを認識し、よって、現在のサーババージョン(V10)のa.txtをクライアント3に送る。クライアントは、また、クライアント3と同期されるべき「Share1」および「Folder2」の詳細をプルし、結果的に、図5Fに示されているビューを生じる。
図5Gおよび図5Hは、図5Aおよび図5Bの例示的実装に基づくクライアントとサーバとの間の例示的な対話を図解している。特に、図5Gおよび図5Hは、図5Eおよび図5Fに図解されている対話の後で、クライアント2が以後の新たなバージョンを送るときに生じる例示的な対話を図解している。よって、この例示的な対話は、図5Aおよび図5Bに図解されているように、リカバリPUTまたはリカバリUPDATEのいずれかに対して生じ得る。
図5Gの例では、クライアント2は、バージョン8(V8)のファイルa.txtを有し、共用フォルダマウントポイント「Share1」を有しない。サーバビューは、図5Fからのクライアント3との対話の後のビューである。クライアント2は、図5Gにおけるように、サーバと対話する。図5Hでは、サーバは、自らがクライアント2よりも古いバージョンのa.txtを有していることを認識するのであるが、その理由は、RecoveryVersionV7がクライアント2のClientVersionV8よりも古いからである。しかし、サーバは、既に、そのデータを一度リカバリしており(ServerVersionがV10に設定されていることによる)、よって、そのファイルに対するコンフリクトを生成する。クライアントは、作成されたコンフリクトファイルの詳細と既存のバージョンのa.txtとをクライアント2にプルする。クライアントは、また、クライアント2と同期されるべき「Share1」の詳細をプルする。クライアント2とサーバとに対する結果的なビューが、図5Hに示されている。
最後に、この詳細な説明のいくつかの部分は、コンピュータの内部における動作のアルゴリズムと記号表現とによって提示されている。これらのアルゴリズムによる説明と記号表現とは、自らの技術革新の本質を他の当業者に最も効果的に伝達するために、データ処理技術の当業者によって用いられる手段である。アルゴリズムとは、希望の目的状態または結果に至る一連の画定されたステップである。例示的実装においては、遂行されるステップは、有形の結果を達成するために、有形の実体の物理的操作を必要とする。
そうではないと特に断らない限り、ここでの議論から明らかなように、説明の全体を通じて、「処理」、「コンピューティング」、「計算」、「判断」、「表示」などの用語を用いての議論は、コンピュータシステムまたはそれ以外の情報処理デバイスの作用および処理を含み得る。なお、このコンピュータシステムまたはそれ以外の情報処理デバイスは、コンピュータシステムのレジスタおよびメモリにおいて物理(電子的)量として表現されているデータを操作して、コンピュータシステムのメモリもしくはレジスタ、または、他の情報記憶、伝送もしくは表示デバイスにおける物理量として同様に表現される他のデータに変換する。
例示的な実装は、また、本明細書における動作を行うための装置にも関係し得る。この装置は、要求される目的のために特別に構築されたものであり得、または、1つもしくは複数のコンピュータプログラムによって選択的に稼働もしくは再構成された1つもしくは複数の汎用コンピュータを含み得る。そのようなコンピュータプログラムは、コンピュータ可読な記憶媒体またはコンピュータ可読な信号媒体などのコンピュータ可読媒体に記憶させることができる。コンピュータ可読な記憶媒体は、これらに限定されることはないが、光ディスク、磁気ディスク、リードオンリメモリ、ランダムアクセスメモリ、ソリッドステートデバイスおよびドライブなどの有形的な媒体、または、電子的情報を記憶するのに適した任意の他のタイプの有形もしくは非一時的な媒体を含み得る。コンピュータ可読な信号媒体は、搬送波などの媒体を含み得る。本明細書で提示されているアルゴリズムと表示とは、どのような特定のコンピュータまたはそれ以外の装置とも、本質的に関係することはない。コンピュータプログラムは、所望の実装の動作を行う命令を含む純粋なソフトウェアによる実装を含み得る。
本明細書における例によると、様々な汎用のシステムが、プログラムおよびモジュールと共に用いられ得、または、所望の方法ステップを行うために、より特殊な装置を構築することが便利であることが判明することもあり得る。さらに、例示的な実装は、いずれか特定のプログラミング言語との関係で説明されているということはない。本明細書で説明されている例示的な実装の教示内容を実装するためには、多様なプログラミング言語が用いられ得る、ということが理解されるであろう。プログラミング言語の命令は、たとえば、中央処理装置(CPU)、プロセッサまたはコントローラなどの1つまたは複数の処理デバイスによって実行され得る。
この技術分野で知られているように、上述の動作は、ハードウェア、ソフトウェアまたはソフトウェアおよびハードウェアの何らかの組合せによって、行われ得る。例示的実装の種々の態様は、回路および論理デバイス(ハードウェア)を用いて実装され得るのであり、他方で、他の態様は、マシン可読の媒体上に記憶された命令(ソフトウェア)を用いて実装され得るのであるが、これらの命令は、プロセッサによって実行されると、そのプロセッサに本出願の実装を遂行するための方法を行わせ得るのである。さらに、本出願のいくつかの例示的な実装は、もっぱらハードウェアにおいて実行され得るのであるが、他方では、他の例示的実装は、もっぱらソフトウェアにおいて実行され得る。さらに、説明された様々な機能を、単一のユニットにおいて実行させることが可能であり、または、任意の数の様態で、いくつかのコンポーネントの間で分担させることも可能である。ソフトウェアによって行われるときには、これらの方法は、コンピュータ可読媒体上に記憶されている命令に基づいて、汎用コンピュータのようなプロセッサによって実行され得る。必要である場合には、これらの命令は、圧縮されたおよび/または暗号化されたフォーマットで媒体上に記憶され得る。
さらに、本出願の他の実装が、本出願の明細書と教示内容の実践とを考察することにより、当業者には明らかであろう。説明されている例示的実装の様々な態様および/またはコンポーネントは、単独またはいずれかの組合せにおいて、用いられ得る。本明細書と例示的実装とは単なる例として考察されるべきであると意図されており、本出願の真の範囲および精神は、以下の特許請求の範囲によって示される。

Claims (12)

  1. サーバであって、
    複数のクライアントデバイスとのインターフェースとなるように構成されたインターフェースと、
    リカバリポイントにおいて前記サーバによって管理される第1のファイルのバージョンに関する情報を記憶するように構成されたメモリと、
    プロセッサであって、
    複数のファイルを、前記複数のファイルを前記複数のクライアントデバイスにおいて用いることによって前記サーバにおいてファイルをリカバリするために、前記複数のクライアントデバイスから受信し、
    前記リカバリポイントにおける前記第1のファイルの前記バージョンよりも新しいバージョンを有する前記複数の受信されたファイルの第2のファイルに対し、前記第2のファイルの1つを前記第1のファイルの新たなバージョンとして管理し、前記第2のファイルの別の1つを前記第2のファイルの前記1つに対するコンフリクトファイルとして管理するように構成されたプロセッサと、
    を備えるサーバ。
  2. 前記プロセッサは、さらに、前記サーバにおいてファイルをリカバリするために複数のファイルを前記複数のクライアントデバイスから受信する間に、前記第1のファイルへの1つまたは複数の更新を前記複数のクライアントデバイスの1つから受信するように構成されており、前記第1のファイルへの前記1つまたは複数の更新は、前記第1のファイルの前記新たなバージョンと同じバージョンを有する前記1つまたは複数の更新に対するコンフリクトファイルとして記憶される、請求項1に記載のサーバ。
  3. 前記プロセッサは、さらに、前記サーバにおいてファイルをリカバリするために複数のファイルを前記複数のクライアントデバイスから受信する間に、前記第1のファイルへの1つまたは複数の更新を前記複数のクライアントデバイスの1つから受信するように構成されており、前記第1のファイルへの前記1つまたは複数の更新は、
    前記第1のファイルの前記新たなバージョンとは異なるバージョンと、
    前記第1のファイルの前記バージョンよりも新しくないバージョンと、
    を有する前記1つまたは複数の更新に対するコンフリクトファイルとして記憶される、請求項1に記載のサーバ。
  4. 前記プロセッサは、
    前記複数のファイルの中のファイルを、前記複数のファイルの中で前記サーバにおける前記ファイルの対応する1つを有しないファイルに対する新たなファイルとして記憶し、
    前記更新の中で前記サーバにおける前記ファイルの対応する1つを有しないファイルに対する新たなファイルとして更新を記憶する
    ように構成されている、請求項1に記載のサーバ。
  5. 前記プロセッサは、さらに、前記サーバにおいてファイルをリカバリするために複数のファイルを前記複数のクライアントデバイスから受信する間に、前記第1のファイルへの1つまたは複数の更新を前記複数のクライアントデバイスの1つから受信するように構成されており、前記第1のファイルへの前記1つまたは複数の更新は、前記第2のファイルの前記1つが前記第1のファイルの前記新たなバージョンとして管理される前に、前記第1のファイルを更新するのに用いられる、請求項1に記載のサーバ。
  6. 前記プロセッサが、
    前記複数のクライアントデバイスからの前記複数のファイルの中の受信されたファイルであって、前記受信されたファイルよりも新しいバージョンである前記サーバにおける前記ファイルの対応する1つを有するファイルを廃棄するように構成されている、請求項1に記載のサーバ。
  7. サーバを管理するための方法であって、
    リカバリポイントにおいて前記サーバによって管理される第1のファイルのバージョンに関する情報を記憶するステップと、
    複数のファイルを前記複数のクライアントデバイスから、前記複数のファイルを前記複数のクライアントデバイスにおいて用いることによって前記サーバにおいてファイルをリカバリするために受信するステップと、
    前記リカバリポイントにおける前記第1のファイルの前記バージョンよりも新しいバージョンを有する前記複数の受信されたファイルの第2のファイルに対し、前記第2のファイルの1つを前記第1のファイルの新たなバージョンとして管理し、前記第2のファイルの別の1つを前記第2のファイルの前記1つに対するコンフリクトファイルとして管理するステップと、
    を含む方法。
  8. 前記サーバにおいてファイルをリカバリするために複数のファイルを前記複数のクライアントデバイスから受信する間に、前記第1のファイルへの1つまたは複数の更新を前記複数のクライアントデバイスの1つから受信するステップをさらに含み、前記第1のファイルへの前記1つまたは複数の更新は、前記第1のファイルの前記新たなバージョンと同じバージョンを有する前記1つまたは複数の更新に対するコンフリクトファイルとして記憶される、請求項7に記載の方法。
  9. 前記サーバにおいてファイルをリカバリするために複数のファイルを前記複数のクライアントデバイスから受信する間に、前記第1のファイルへの1つまたは複数の更新を前記複数のクライアントデバイスの1つから受信するステップをさらに含み、前記第1のファイルへの前記1つまたは複数の更新は、
    前記第1のファイルの前記新たなバージョンとは異なるバージョンと、
    前記第1のファイルの前記バージョンよりも新しくないバージョンと、
    を有する前記1つまたは複数の更新に対するコンフリクトファイルとして記憶される、請求項7に記載の方法。
  10. 前記複数のファイルの中のファイルを、前記複数のファイルの中で前記サーバにおける前記ファイルの対応する1つを有しないファイルに対する新たなファイルとして記憶するステップと、更新を、前記更新の中で前記サーバにおける前記ファイルの対応する1つを有しない更新に対する新たなファイルとして記憶するステップとをさらに含む、請求項7に記載の方法。
  11. 前記サーバにおいてファイルをリカバリするために複数のファイルを前記複数のクライアントデバイスから受信する間に、前記第1のファイルへの1つまたは複数の更新を前記複数のクライアントデバイスの1つから受信するステップをさらに含み、前記第1のファイルへの前記1つまたは複数の更新は、前記第2のファイルの中の前記1つが前記第1のファイルの前記新たなバージョンとして管理される前に、前記第1のファイルを更新するのに用いられる、請求項7に記載の方法。
  12. 前記複数のクライアントデバイスからの前記複数のファイルの中の受信されたファイルであって、前記受信されたファイルよりも新しいバージョンである前記サーバにおける前記ファイルの対応する1つを有するファイルを廃棄するステップをさらに含む、請求項7に記載の方法。
JP2016541949A 2013-12-17 2013-12-17 分散型ディザスタリカバリファイル同期サーバシステム Active JP6196389B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/075840 WO2015094193A1 (en) 2013-12-17 2013-12-17 Distributed disaster recovery file sync server system

Publications (2)

Publication Number Publication Date
JP2016530656A true JP2016530656A (ja) 2016-09-29
JP6196389B2 JP6196389B2 (ja) 2017-09-13

Family

ID=53403313

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016541949A Active JP6196389B2 (ja) 2013-12-17 2013-12-17 分散型ディザスタリカバリファイル同期サーバシステム

Country Status (5)

Country Link
US (1) US10235251B2 (ja)
EP (1) EP3039568B1 (ja)
JP (1) JP6196389B2 (ja)
CN (1) CN105593839B (ja)
WO (1) WO2015094193A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6249995B2 (ja) * 2015-06-30 2017-12-20 キヤノン株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、プログラム
US10762045B2 (en) * 2016-07-28 2020-09-01 Caringo, Inc. Mounting dynamic endpoints
CN109582509A (zh) * 2017-09-29 2019-04-05 中兴通讯股份有限公司 分布式文件系统容灾配置方法、装置和可读存储介质
US10866963B2 (en) * 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
JP7111882B2 (ja) 2018-08-02 2022-08-02 ヒタチ ヴァンタラ エルエルシー サーバ情報の分散回復
CN110865905A (zh) * 2019-09-24 2020-03-06 平安科技(深圳)有限公司 数据还原方法、装置、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324928A (ja) * 1993-05-14 1994-11-25 Mitsubishi Electric Corp ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置
JPH0816446A (ja) * 1994-07-05 1996-01-19 Fujitsu Ltd クライアント/サーバ・システム
JP2003150595A (ja) * 2001-11-15 2003-05-23 Mitsubishi Electric Corp データベースシステム
JP2005292868A (ja) * 2004-03-31 2005-10-20 Japan Research Institute Ltd ファイル共有制御システム、共有制御サーバおよび共有制御プログラム
JP2005322250A (ja) * 2004-05-05 2005-11-17 Microsoft Corp 電子装置間でデータを同期させる方法およびシステム
JP2008537254A (ja) * 2005-04-22 2008-09-11 マイクロソフト コーポレーション 同期マネジャによるコンフリクト解決
WO2011039880A1 (ja) * 2009-10-01 2011-04-07 パイオニア株式会社 データ配信装置、データ処理装置、データ処理システム、データ配信方法、および、データ処理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002304842A1 (en) * 2001-08-20 2003-03-10 Datacentertechnologies N.V. File backup system and method
DE10393771T5 (de) 2002-11-20 2006-03-30 Filesx Ltd. Schnelle Datensicherungsspeicherung und schnelle Datenwiederherstellung (FBSRD)
US8949395B2 (en) * 2004-06-01 2015-02-03 Inmage Systems, Inc. Systems and methods of event driven recovery management
US7483927B2 (en) * 2005-12-01 2009-01-27 International Business Machines Corporation Method for merging metadata on files in a backup storage
US8516050B1 (en) * 2006-06-28 2013-08-20 Insors Integrated Communications Methods and program products for communicating file modifications during a collaboration event
US7908246B2 (en) * 2008-03-06 2011-03-15 International Business Machines Corporation Separating file data streams to enhance progressive incremental processing
US8200638B1 (en) 2008-04-30 2012-06-12 Netapp, Inc. Individual file restore from block-level incremental backups by using client-server backup protocol
US8099572B1 (en) 2008-09-30 2012-01-17 Emc Corporation Efficient backup and restore of storage objects in a version set
US8806588B2 (en) 2011-06-30 2014-08-12 Amazon Technologies, Inc. Storage gateway activation process
US8930320B2 (en) * 2011-09-30 2015-01-06 Accenture Global Services Limited Distributed computing backup and recovery system
WO2014132373A1 (ja) * 2013-02-28 2014-09-04 株式会社 日立製作所 ストレージシステム及び記憶デバイス障害回復方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324928A (ja) * 1993-05-14 1994-11-25 Mitsubishi Electric Corp ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置
JPH0816446A (ja) * 1994-07-05 1996-01-19 Fujitsu Ltd クライアント/サーバ・システム
JP2003150595A (ja) * 2001-11-15 2003-05-23 Mitsubishi Electric Corp データベースシステム
JP2005292868A (ja) * 2004-03-31 2005-10-20 Japan Research Institute Ltd ファイル共有制御システム、共有制御サーバおよび共有制御プログラム
JP2005322250A (ja) * 2004-05-05 2005-11-17 Microsoft Corp 電子装置間でデータを同期させる方法およびシステム
JP2008537254A (ja) * 2005-04-22 2008-09-11 マイクロソフト コーポレーション 同期マネジャによるコンフリクト解決
WO2011039880A1 (ja) * 2009-10-01 2011-04-07 パイオニア株式会社 データ配信装置、データ処理装置、データ処理システム、データ配信方法、および、データ処理方法

Also Published As

Publication number Publication date
CN105593839A (zh) 2016-05-18
EP3039568A1 (en) 2016-07-06
WO2015094193A1 (en) 2015-06-25
CN105593839B (zh) 2018-08-28
EP3039568B1 (en) 2018-03-28
US10235251B2 (en) 2019-03-19
US20160210204A1 (en) 2016-07-21
JP6196389B2 (ja) 2017-09-13
EP3039568A4 (en) 2017-04-26

Similar Documents

Publication Publication Date Title
JP7053847B2 (ja) コンテンツ管理システムにおけるメタデータ再同期
US10831720B2 (en) Cloud storage distributed file system
US10148730B2 (en) Network folder synchronization
US10817498B2 (en) Distributed transactions in cloud storage with hierarchical namespace
US20190370362A1 (en) Multi-protocol cloud storage for big data and analytics
US11943291B2 (en) Hosted file sync with stateless sync nodes
JP6196389B2 (ja) 分散型ディザスタリカバリファイル同期サーバシステム
US11449391B2 (en) Network folder resynchronization
US11074224B2 (en) Partitioned data replication
US20130332418A1 (en) Method of managing data in asymmetric cluster file system
US10152493B1 (en) Dynamic ephemeral point-in-time snapshots for consistent reads to HDFS clients
JP2021529379A (ja) 検索サーバの集中型ストレージ
WO2015094195A1 (en) Transaction query engine
US11599427B2 (en) Distributed recovery of server information
US20170091253A1 (en) Interrupted synchronization detection and recovery
US10713121B1 (en) Dynamic migration of a cloud based distributed file system metadata server
US20230409559A1 (en) Techniques for maintaining file consistency during file system cross-region replication
US20230315338A1 (en) Unified namespace across data access protocols
KR20130022009A (ko) 메타데이터 연산 충돌 회피 방법 및 이를 수행하는 메타 데이터 관리 시스템
JP2015064804A (ja) 無効リンクの発生を抑止するデータ管理システムおよび記憶装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170323

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170817

R150 Certificate of patent or registration of utility model

Ref document number: 6196389

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250