(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-25
(45)【発行日】2022-08-02
(54)【発明の名称】サーバ情報の分散回復
(51)【国際特許分類】
G06F 16/11 20190101AFI20220726BHJP
【FI】
G06F16/11
(21)【出願番号】P 2021502922
(86)(22)【出願日】2018-08-02
(86)【国際出願番号】 US2018044945
(87)【国際公開番号】W WO2020027840
(87)【国際公開日】2020-02-06
【審査請求日】2021-01-18
(73)【特許権者】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】特許業務法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】クラーク ンガレ
(72)【発明者】
【氏名】ミラー クリストファー
(72)【発明者】
【氏名】ヤニナス スコット
(72)【発明者】
【氏名】グロス ジェフリー
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】特開2001-290687(JP,A)
【文献】特開2007-241323(JP,A)
【文献】特表2013-532314(JP,A)
【文献】特開2011-253500(JP,A)
【文献】特開平11-167510(JP,A)
【文献】中国特許出願公開第104281506(CN,A)
【文献】米国特許出願公開第2014/0074798(US,A1)
【文献】米国特許出願公開第2011/0083036(US,A1)
【文献】米国特許出願公開第2011/0225141(US,A1)
【文献】米国特許出願公開第2012/0096312(US,A1)
【文献】米国特許出願公開第2010/0114847(US,A1)
【文献】米国特許出願公開第2006/0179037(US,A1)
【文献】米国特許第07650341(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
作業を行うように実行可能命令によって構成された1以上のプロセッサを含む第1演算装置を含むシステムであって、
サーバがデータを回復したとの提示を前記サーバから前記第1演算装置によって受信することであって、前記第1演算装置は、1以上のクライアント装置によってアクセスされる1以上のファイルシステムのマッピングを含むメタデータを格納し、第2演算装置は、前記第1演算装置上に格納された前記マッピングの複製を格納するように構成される、ことと、
前記回復されたデータに基づいて前記サーバによって判断された前記1以上のファイルシステムのマッピングを前記サーバから前記第1演算装置によって受信することと、
前記サーバからの前記マッピングを、前記第1演算装置上の前記1以上のファイルシステムの前記マッピングと前記第1演算装置によって比較することと、
前記第1演算装置上に格納された前記マッピングと、前記サーバから受信された前記マッピングとの間で判断される変更に関する情報を、前記サーバが前記変更に基づいて前記サーバ上の前記マッピングを更新することを可能にするために、前記第1演算装置によって前記サーバに送信することと、
を含む、システム。
【請求項2】
前記作業は、既存ファイルを更新すること又は新規ファイルとして格納することの1つの提示を有する、前記第1演算装置上でローカルに格納された1以上のファイルを前記サーバに送信することをさらに含む、請求項1に記載のシステム。
【請求項3】
前記第1演算装置及び前記第2演算装置を含むミラー集合を示すマッピング識別子(ID)を前記サーバから前記第1演算装置によって受信することと、
前記サーバから受信された前記マッピングIDを前記第1演算装置上のマッピングIDと比較することと、
前記サーバから受信された前記マッピングIDが前記第1演算装置上の前記マッピングIDと整合すると判断することに基づき、前記サーバによって判断された前記1以上のファイルシステムの前記マッピングを前記第1演算装置によって要求することと、
をさらに含む、請求項1に記載のシステム。
【請求項4】
前記サーバがマッピング情報を回復している間、前記第2演算装置は、前記第2演算装置の役割が、前記第1演算装置上に格納された前記マッピングの複製を格納することであるという提示を前記サーバから受信し、及び
前記サーバがデータの回復を完了したと判断することに基づき、前記第2演算装置は、前記第1演算装置によって前記サーバに送信された前記変更の少なくとも部分的に基づいて判断されるファイルシステムマッピング情報を前記サーバから受信する、請求項1に記載のシステム。
【請求項5】
前記サーバがマッピング情報を回復している間、前記第2演算装置は、前記第2演算装置の役割が前記第1演算装置の役割に対して変化したという提示を前記サーバから受信し、
前記1以上のファイルシステムの前記マッピングを前記サーバから前記第2演算装置によって受信し、及び
前記サーバからの前記マッピングを、前記第2演算装置上の前記1以上のファイルシステムの前記マッピングと前記第2演算装置によって比較する、請求項1に記載のシステム。
【請求項6】
前記作業は、前記サーバがデータを回復したという指標を受信する前に、
前記1以上のファイルシステムを前記第2演算装置に複製すること、又は
前記1以上のファイルシステムに対する後続の変更を前記第2演算装置に複製すること
の少なくとも1つを前記第1
演算装置に行わせる命令を前記第1演算装置によって前記サーバから受信することをさらに含む、請求項1に記載のシステム。
【請求項7】
前記第1演算装置及び前記第2演算装置は、前記第1演算装置上に格納された前記マッピングの前記複製を格納するように構成された前記第2演算装置に基づいて同じマッピング識別子を割り当てられ、前記マッピング識別子は、前記第1演算装置上に格納された前記マッピングに対応する、請求項6に記載のシステム。
【請求項8】
前記作業は、
前記サーバからの前記マッピングに従って処理された最後のトランザクションを示すトランザクション識別子(ID)を前記サーバから前記第
1演算装置によって受信することと、
前記サーバから受信された前記トランザクションIDを前記第1演算装置上のトランザクションIDと比較することと、 前記第1演算装置上の前記トランザクションIDが前記サーバからの前記トランザクションIDより大きいことに基づき、前記サーバからの前記マッピングを、前記第1演算装置上の前記1以上のファイルシステムの前記マッピングと前記第1演算装置によって比較することと、
をさらに含む、請求項1に記載のシステム。
【請求項9】
前記サーバからの前記マッピングを、前記第1演算装置上の前記マッピングと前記第1演算装置によって比較することは、前記サーバからの前記マッピング内の各共有パス及びファイルシステム識別子を、前記第1演算装置上の前記マッピング内の各共有パス及びファイルシステム識別子と比較することをさらに含む、請求項1に記載のシステム。
【請求項10】
サーバ共有ファイルシステム識別子と同じである共有ファイルシステム識別子と、サーバ共有パスと異なる共有パスとを有する、前記第1演算装置上のローカル共有を前記サーバに送信することをさらに含む、請求項9に記載のシステム。
【請求項11】
サーバ共有パスと同じである共有パスと、サーバ共有ファイルシステム識別子と異なる共有ファイルシステム識別子とを有する、前記第1演算装置上のローカル共有を前記サーバに送信することをさらに含む、請求項9に記載のシステム。
【請求項12】
前記第1演算装置は、前記クライアン
ト装置の少なくとも1つと、クライアントデータを前記少なくとも1つのクライアン
ト装置に送信し、且つクライアントデータを前記少なくとも1つのクライアン
ト装置から受信するために通信するように構成され、前記クライアントデータは、前記ファイルシステムの少なくとも1つに基づいて格納される、請求項1に記載のシステム。
【請求項13】
前記作業は、
前記変更を前記サーバに送信する前に、ファイル読み取り又はファイル書き込みの少なくとも1つを同期させる要求を前記サーバから前記第1演算装置によって受信すること、及び
前記サーバによる前記データの回復が未完了であると判断することに基づいて前記要求を無視すること
をさらに含む、請求項1に記載のシステム。
【請求項14】
サーバがデータを回復したという提示を前記サーバから第1演算装置の1以上のプロセッサによって受信することであって、前記第1演算装置は、1以上のクライアント装置によってアクセスされる1以上のファイルシステムのマッピングを含むメタデータを格納し、第2演算装置は、前記第1演算装置上に格納された前記マッピングの複製を格納するように構成される、ことと、
前記回復されたデータに基づいて前記サーバによって判断される前記1以上のファイルシステムのマッピングを前記サーバから前記第1演算装置によって受信することと、
前記サーバからの前記マッピングを、前記第1演算装置上の前記1以上のファイルシステムの前記マッピングと前記第1演算装置によって比較することと、
前記第1演算装置上に格納された前記マッピングと、前記サーバから受信された前記マッピングとの間で判断される変更に関する情報を、前記サーバが前記変更に基づいて前記サーバ上の前記マッピングを更新することを可能にするために、前記第1演算装置によって前記サーバに送信することと、
を含む方法。
【請求項15】
第1演算装置の1以上のプロセッサによって実行されると、前記1以上のプロセッサに作業を実行するようにプログラムする命令を格納する1以上の非一時的コンピュータ可読媒体であって、
サーバがデータを回復したという提示を前記サーバから前記第1演算装置によって受信することであって、前記第1演算装置は、1以上のクライアント装置によってアクセスされる1以上のファイルシステムのマッピングを含むメタデータを格納し、第2演算装置は、前記第1演算装置上に格納された前記マッピングの複製を格納するように構成される、ことと、
前記回復されたデータに基づいて前記サーバによって判断される前記1以上のファイルシステムのマッピングを前記サーバから前記第1演算装置によって受信することと、
前記サーバからの前記マッピングを、前記第1演算装置上の前記1以上のファイルシステムの前記マッピングと前記第1演算装置によって比較することと、
前記第1演算装置上に格納された前記マッピングと、前記サーバから受信された前記マッピングとの間で判断される変更に関する情報を、前記サーバが前記変更に基づいて前記サーバ上の前記マッピングを更新することを可能にするために、前記第1演算装置によって前記サーバに送信することと
の命令を格納する非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、サーバ上などのデータの回復の技術分野に関する。
【背景技術】
【0002】
非構造化非可変デジタルコンテンツの成長により、分散クライアントサーバシステム内のデータを管理及びバックアップすることが困難になり得る。例えば、コンピュータシステム内のサーバからのデータは、別のシステムに定期的又は連続的にバックアップされ得る。しかし、連続的データバックアップを行うことは、システムにおいて行われる各アクションをバックアップするための装置間の絶え間ない通信に起因して、ネットワーク及び接続された演算装置に負担をかけ得る。一方、定期的データバックアップは、連続的データバックアップと比較してシステム性能に最小の影響を与え得るが、データ損失の可能性を生み出す。例えば、データバックアップが定期的に行われると、最後のバックアップ以降にシステムに追加されたいかなるデータも、サーバ、ストレージなどの故障後に回復不能になり得る。
【発明の概要】
【課題を解決するための手段】
【0003】
いくつかの実装形態は、少なくとも1つの第1演算装置、第2演算装置及びサーバを含む。例えば、第1演算装置は、サーバがデータを回復したという表明をサーバから受信してもよい。例えば、第1演算装置は、1以上のクライアント装置によってアクセスされる1以上のファイルシステムのマッピングを含むメタデータを格納してもよい。例えば、ファイルシステムマッピングは、別のファイルシステム識別子(ID)を有する各ファイルシステム内のすべてのディレクトリ、副ディレクトリ、フォルダ及びファイルが記載されたパスであってもよい。ファイルシステムマッピングは、ファイルシステムのマウントポイントなどを含んでもよい。一例として、マウントポイントは、別のファイルシステムが取り付けられている第1ファイルシステム内のディレクトリであってもよい。
【0004】
さらに、第2演算装置は、第1演算装置上に格納されたファイルシステムマッピングの複製を格納するように構成されてもよい。第1演算装置は、回復されたデータに基づいてサーバによって決定される1以上のファイルシステムのマッピングをサーバから受信してもよい。第1演算装置は、サーバからのマッピングを第1演算装置上の1以上のファイルシステムのマッピングと比較してもよい。加えて、第1演算装置は、第1演算装置上に格納されたマッピングと、サーバから受信されたマッピングとの間で発生したと判断される変更(すなわち差)に関する情報を、サーバがこの変更に基づいてサーバ上のマッピングを更新することを可能にするためにサーバに送信してもよい。いくつかの例では、ファイルシステムに対するデータ更新は、サーバとサービス演算装置との間のファイルシステムマッピングの同期の完了に続いて行われてもよい。
【図面の簡単な説明】
【0005】
詳細な説明は、添付図面を参照して記載される。図面では、参照番号の最も左の桁は、参照番号が最初に出現する図を特定する。異なる図内の同じ参照番号の使用は、同様又は同一の物品又は特徴を示す。
【0006】
【
図1】
図1は、いくつかの実装形態による、サーバの回復を実行するように構成されたシステムの例示的構成示す。
【0007】
【
図2】
図2は、いくつかの実装形態による、サーバ及びストレージシステムの1つの可能な例示的構成を示す。
【0008】
【
図3】
図3は、いくつかの実装形態による、ミラーリングが適用される前後の3つのサービス演算装置の例示的構成を示すブロック図である。
【0009】
【
図4】
図4は、いくつかの実装形態による、オリジナルサービス演算装置と、ミラーリングされたサービス演算装置と、サーバとの間の関係を示すブロック図である。
【0010】
【
図5】
図5は、いくつかの実装形態による、オリジナルサービス演算装置、リフレクションサービス演算装置、及びサーバ上のファイルシステムトランザクションマッピングの例を示すブロック図である。
【0011】
【
図6】
図6は、いくつかの実装形態による、サーバ回復の例示的処理を示すフロー図である。
【0012】
【
図7】
図7は、いくつかの実装形態による、サーバ上の情報によりマッピングを照合するサービス演算装置の処理例を示すフロー図である。
【0013】
【
図8】
図8は、いくつかの実装形態による、
図7の処理例の続きである処理例を示すフロー図である。
【0014】
【
図9】
図9は、いくつかの実装形態による、
図7及び
図8の処理例の続きである処理例を示すフロー図である。
【0015】
【
図10】
図10は、いくつかの実装形態による、クライアント装置の例示的構成を示す。
【発明を実施するための形態】
【0016】
本明細書におけるいくつかの実装形態は、システム故障の場合のデータ損失を最小化するための頑強な災害復旧能力を含む分散コンピュータシステムの技術及び配置に向けられる。例えば、サーバがサーバ上の災害、障害若しくは事故、妨害行為、ハッキング又は故障の他の原因に起因して故障すると、サーバは、その後、サーバ回復を行うために回復処理を実行する。この処理は、データを回復し、且つそれによりサーバを前のバックアップポイントに復元するために、ストレージシステム内に格納されたデータバックアップ及びログバックアップを利用することを含んでもよい。サーバが第1の回復点としてのその点に到達すると、サーバは、次に、1以上のサービス演算装置にそれらのデータとサーバ上のデータとの間の差、すなわち発生した変更を判断させることにより、追加の回復処理を実行し、且つサーバが回復を継続し得るように、変更に関する情報をサーバに提供してもよい。例えば、サービス演算装置は、クライアント演算装置のためのデータを格納、管理及び検索するためなどのサービスのような1以上のサービスを複数のクライアント演算装置に提供してもよい。したがって、サーバは、それぞれサーバにより回復されるデータの一部を有し得る複数のサービス演算装置と相互作用してもよい。
【0017】
一例として、(ミラー役割とは対照的な)オリジナル役割で機能するサービス演算装置は、回復されたデータに基づいてサーバによって特定される1以上のファイルシステムのマッピングをサーバから受信してもよい。サービス演算装置は、サーバからのマッピングをサービス演算装置上の1以上のファイルシステムのマッピングと比較してもよく、且つ第1演算装置上に格納されたマッピングと、サーバから受信されたマッピングとの間に発生したと判断されるいかなる変更(すなわちその間の差)に関する情報を、判断された変更に基づいてサーバがサーバ上のマッピングを更新することを可能にするためにサーバに送信してもよい。オリジナル役割で機能する複数のサービス演算装置が存在する場合、サーバは、マッピング情報を、これらのサービス演算装置のそれぞれと同期させてもよい。サービス演算装置上のマッピング情報と、サーバ上の回復されたデータとの同期後、回復は、完了してもよい。サーバは、その後、ミラー役割を果たす1以上の追加のサービス演算装置と、それらのサービス演算装置と任意のマッピング更新を同期させるために通信してもよい。
【0018】
サーバとサービス演算装置との間のファイルシステムマッピングの同期の完了に続いて、サーバは、サービス演算装置上で発生した可能性があるが、サーバによりまだ処理されていない可能性があるファイルシステムに対する任意のデータ更新を行うためにサービス演算装置と通信してもよい。例えば、サービス演算装置は、新しいファイルコンテンツ、更新、変更などをサーバに送信することにより、ファイルをサーバと同期させてもよい。サーバは、データ更新に基づいてそれ自身のファイルシステムメタデータを更新してもよく、ファイルコンテンツを格納するか又は取り出すために必要に応じストレージシステムと相互作用してもよい。いくつかの場合、サービス演算装置は、マッピングの同期が完了するまでファイルデータ更新のためのサーバからのいかなる要求も無視してもよい。
【0019】
論述の目的のために、いくつかの実装形態例は、ファイル、フォルダ、オブジェクト、及び/又は他のデータ並びに関連するメタデータの格納を管理するために、複数のクライアント装置と相互作用するストレージシステムと複数のサービス演算装置と通信するサーバの環境内で説明される。しかし、本明細書における実装形態は、提供される特定の例に限定されず、且つ本明細書の開示に照らして当業者に明らかになるような他のタイプの演算システム構成、他のタイプのストレージ環境、他のタイプのクライアント構成、他のタイプのデータなどに拡張されてもよい。
【0020】
図1は、いくつかの実装形態による、サーバ102の回復を行うように構成されたシステム100の例示的構成を示す。システム100は、1以上のネットワーク106等を介して、少なくとも1つのストレージシステム104と通信することができる、又は他にそれに接続される少なくとも1つのサーバ102を含む。さらに、サーバ102は、以下に追加的に論述されるような様々なタイプの演算装置の任意のものであり得るクライアント装置108(1)、108(2)、108(3)、108(4)、...などの1以上のクライアント演算装置108とネットワーク106上で通信することができるサービス演算装置103(1)、103(2)、...、103(N)などの複数のサービス演算装置103と1以上のネットワーク106上で通信することができてもよい。
【0021】
いくつかの例では、サーバ102は、任意の数の方法で具現化され得る1以上のサーバを含み得る。例えば、プログラム、他の機能部品、及びサーバ102のデータストレージの少なくとも一部は、サーバのクラスタ、サーバファーム、データセンタ、及びクラウドホスト型演算サービス等の少なくとも1つのサーバ上に実装されてもよいが、他のコンピュータ構成が追加的に又は代替的に使用されてもよい。図示の例では、サーバ102は、1以上のプロセッサ110、1以上のコンピュータ可読媒体112、及び1以上の通信インターフェース114を含んでもよく、又はそれらと関連付けられてもよい。
【0022】
各プロセッサ110は、単一の処理ユニット又は多数の処理ユニットであってもよく、単一又は複数の演算ユニット、又は複数の処理コアを含んでもいてもよい。プロセッサ110は、1以上の中央処理装置、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシン、論理回路、及び/又は動作指示に基づいて信号を操作する任意の装置として実装され得る。一例として、プロセッサ110は、本明細書において説明されるアルゴリズム及び処理を実行するように特別にプログラムされた又は構成された任意の好適なタイプの1以上のハードウェアプロセッサ、及び/又は論理回路を含んでもよい。プロセッサ110は、本明細書において説明される機能を行うようにプロセッサ110をプログラムし得る、コンピュータ可読媒体112内に格納されるコンピュータ可読命令をフェッチ及び実行するように構成されてもよい。
【0023】
コンピュータ可読媒体112は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の格納のための任意のタイプの技術で実現される、揮発性及び非揮発性メモリ、及び/又は着脱可能及び着脱不能媒体を含んでもよい。例えば、コンピュータ可読媒体112は、限定しないが、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、光学ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、RAIDストレージシステム、ストレージアレイ、ネットワーク接続ストレージ、ストレージエリアネットワーク、クラウドストレージ、又は所望の情報を格納するために使用され得、且つ演算装置によってアクセスされ得る任意の他の媒体を含んでもよい。サーバ102の構成に依存して、コンピュータ可読媒体112は、非一時的コンピュータ可読媒体がエネルギー、搬送波信号、電磁波、及び/又は信号自体などの媒体を排除すると述べる限り、有形な非一時的媒体であってもよい。いくつかの場合、コンピュータ可読媒体112は、サーバ102と同じ場所にあってもよいが、他の例では、コンピュータ可読媒体112は、サーバ102からある程度離れていてもよい。例えば、いくつかの場合、コンピュータ可読媒体112は、ストレージシステム104内のストレージの一部を含んでもよい。
【0024】
コンピュータ可読媒体112は、プロセッサ110により実行可能である任意の数の機能部品を格納するために使用されてもよい。多くの実装形態では、これらの機能部品は、プロセッサ110により実行可能である命令又はプログラムを含む。命令又はプログラムは、実行されると、本明細書ではサーバ102に帰する行為を行うようにプロセッサ110を特にプログラムし得る。コンピュータ可読媒体112内に格納される機能部品は、それぞれ1以上のコンピュータプログラム、アプリケーション、実行可能コード、又はその一部を含み得るサーバプログラム116及びデータベースプログラム118を含んでもよい。例えば、サーバプログラム116は、通信機能をサービス演算装置103に、またクライアント装置108及びストレージシステム104に提供してもよい。データベースプログラム118は、ストレージシステム104において格納されるデータに対応するメタデータを含む、1以上のファイルシステム124などのメタデータデータベース122を生成及び管理するためのデータベース管理機能を含んでもよい。例えば、データベースプログラム118は、データベースプログラム118に、ファイルシステム124と、メタデータデータベース122の一部としての関連情報とを維持させるように構成され、フォルダ及び関連ファイルシステムの生成及び管理のための並びにサーバ102の災害、誤動作、維持又は他の故障に続いて、本明細書において説明されるアルゴリズム及び技術に従って回復機能を行うための、サーバ102に帰する、本明細書において説明される他の機能を行わせるように構成された実行可能命令を含んでもよい。データベースプログラム118は、個人フォルダ情報、共有フォルダ情報、及びチームフォルダ情報(
図1に示さず)を生成及び管理するなどのためのフォルダ管理機能をさらに実行してもよい。データベースプログラム118は、ユーザ情報126などのメタデータデータベース122内に含まれる他のタイプの情報を管理するための管理機能をさらに実行してもよい。コンピュータ可読媒体112内に格納される追加の機能部品は、サーバ102の様々な機能を制御及び管理するためのオペレーティングシステム(
図1に示さず)を含んでもよい。いくつかの場合、機能部品は、コンピュータ可読媒体112のストレージ部内に格納され、コンピュータ可読媒体112のローカルメモリ部内にロードされ、1以上のプロセッサ110により実行されてもよい。
【0025】
加えて、コンピュータ可読媒体112は、本明細書において説明される機能及びサービスを行うために使用されるデータ及びデータ構造を格納してもよい。例えば、コンピュータ可読媒体112は、メタデータデータベース122を格納してもよい。図示の例では、メタデータデータベース122は、個々のユーザのための並びにユーザのグループ及びユーザのチームのためなどの複数のファイルシステム124を含む。いくつかの場合、個々のファイルシステム124は、個々のユーザに対応し得る個人フォルダ、フォルダを共有する2人以上のユーザに対応し得る共有フォルダ又はマーケティング部、エンジニアリング部、人事部などの組織内の副組織に対応し得るチームフォルダなどの、それぞれ1以上のフォルダに対応し得る。
【0026】
いくつかの例では、個人フォルダは、特定のユーザの個人ファイルシステムに対応してもよい。個人フォルダを所有するユーザのみがその個人フォルダにアクセスし得る。ユーザは、共有フォルダとして他のユーザと共に所有するフォルダも共有してもよい。各共有フォルダは、独立したファイルシステムであってもよい。さらに、チームフォルダは、いかなるユーザによっても所有されないが、そのチームに属する1以上のユーザによってアクセス及び管理され得るフォルダであってもよい。チームフォルダは、それ自身のファイルシステム内に存在してもよい。加えて、メタデータデータベース122は、ファイルシステム124に含まれている、又はその一部がファイルシステム124とは別に格納され得る他の情報を含んでもよい。
【0027】
さらに、ユーザ情報126は、フォルダ/ファイルシステムのユーザ許可、ユーザアカウント情報、ユーザログイン情報、及びユーザ信用証明書等のそれぞれのユーザ130に関する情報を含んでもよい。サーバ102は、プログラム、ドライバなどを含み得る他の機能部品及びデータ(及び機能部品により使用又は生成されるデータを含む又は維持してもよい。さらに、サーバ102は、多くの他の論理部品、プログラム部品及び物理的部品を含んでもよいが、上述のものは、本明細書における論述に関連する単なる例である。
【0028】
1以上の通信インターフェース(I/F)114は、1以上のネットワーク106上などの様々な他の装置との通信を可能にするための1以上のソフトウェア及びハードウェア部品を含んでもよい。したがって、通信インターフェース114は、ストレージシステム104と通信するためのネットワーク106への接続を提供する1以上のポート、及びサービス演算装置103などの他の演算装置との通信のためのネットワーク106への接続を提供する1以上のポートを含む、又はそれらと接合してもよい。例えば、通信インターフェース114は、本明細書の他の箇所で追加的に列挙されるようなLAN、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク(例えば、Wi-Fi)及び有線ネットワーク(例えば、Fibre Channel、光ファイバ、イーサーネット)、直接接続並びにBLUETOOTH(登録商標)などの近距離通信等の1以上を介した通信が可能であってもよい。
【0029】
1以上のネットワーク106は、インターネットなどの広域ネットワーク、イントラネットなどのローカルエリアネットワーク(LAN)、セルラネットワーク、Wi-Fiなどのローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)などの短距離無線通信などの無線ネットワーク、Fibre Channel、光ファイバ、イーサーネット又は任意の他のこのようなネットワーク、直接有線接続、或いはそれらの任意の組み合わせを含む有線ネットワークを含む任意の好適なネットワークを含んでもよい。したがって、1以上のネットワーク106は、有線及び/又は無線通信技術の両方を含んでもよい。このような通信に使用される部品は、ネットワークのタイプ、選択される環境、又はその両方に少なくとも部分的に依存し得る。このようなネットワーク上で通信するためのプロトコルは、周知であり、本明細書では詳細に論述されない。したがって、サーバ102及びクライアント装置108は、有線又は無線接続及びそれらの組み合わせを使用して1以上のネットワーク106上で通信することができる。さらに、いくつかの場合、負荷平衡演算装置(
図1に示さず)は、サーバ102とクライアント装置108との間に配置されてもよい。加えて、いくつかの例では、ネットワーク106は、LANを含んでもよく、サーバ102とストレージシステム104とは、互いにローカルに配置されてもよい。
【0030】
サービス演算装置103は、サーバ102のものと同様のハードウェア構成を有してもよく、1以上のプロセッサ111、1以上のコンピュータ可読媒体113、1以上の通信インターフェース115を含んでもよい。例えば、プロセッサ111は、プロセッサ110に関して上に論述された例の任意のものに対応し、コンピュータ可読媒体113は、コンピュータ可読媒体112に関して上に論述された例の任意のものに対応し、通信インターフェース115は、通信インターフェース114に関して上に論述された例の任意のものに対応してもよい。
【0031】
コンピュータ可読媒体113は、プロセッサ111により実行可能である任意の数の機能部品を格納するために使用されてもよい。多くの実装形態では、これらの機能部品は、プロセッサ111により実行可能である命令又はプログラムであって、実行されると、本明細書ではサービス演算装置103に帰する行為を行うようにプロセッサ111を特にプログラムし得る命令又はプログラムを含む。コンピュータ可読媒体113内に格納される機能部品は、それぞれ1以上のコンピュータプログラム、アプリケーション、実行可能コード又はその一部を含み得るサーバプログラム117及びデータベースプログラム119を含んでもよい。例えば、サーバプログラム117は、クライアント装置108及びサーバ102に通信機能を提供してもよい。
【0032】
データベースプログラム119は、ストレージシステム104において格納されるデータに対応する1以上のファイルシステム125などのメタデータを含むメタデータデータベース123を生成及び管理するためのデータベース管理機能を含んでもよい。例えば、データベースプログラム119は、データベースプログラム119に、ファイルシステム125と関連情報とをメタデータデータベース123の一部として維持させるように構成され、フォルダ及び関連ファイルシステムの生成及び管理のための、サービス演算装置103に帰する、本明細書で説明される他の機能を行うように構成され、本明細書において説明されるアルゴリズム及び技術に従ってサーバ102の回復を支援するための回復作業を行うように構成されている実行可能命令を含んでもよい。データベースプログラム119は、フォルダ管理機能だけでなく、ユーザ情報127など、メタデータデータベース123内に含まれる他のタイプの情報を管理するための機能をさらに行ってもよい。コンピュータ可読媒体113内に格納される追加の機能部品は、サービス演算装置103の様々な機能を制御及び管理するためのオペレーティングシステム(
図1に示さず)を含んでもよい。いくつかの場合、機能部品は、コンピュータ可読媒体113のストレージ部内に格納され、コンピュータ可読媒体113のローカルメモリ部内にロードされ、1以上のプロセッサ111により実行されてもよい。
【0033】
加えて、コンピュータ可読媒体113は、本明細書において説明される機能及びサービスを行うために使用されるデータ及びデータ構造を格納してもよい。例えば、コンピュータ可読媒体113は、メタデータデータベース123を格納してもよい。図示の例では、メタデータデータベース123は、サーバ102により維持されるファイルシステム124の一部に対応し得る、例えば、個々のユーザのための並びにユーザのグループ及びユーザのチームのための複数のファイルシステム125を含む。いくつかの場合、個々のファイルシステム125のそれぞれは、個々のユーザに対応し得る個人フォルダ、フォルダを共有する2人以上のユーザに対応し得る共有フォルダ、又はマーケティング部、エンジニアリング部、人事部などの組織内の副組織に対応し得るチームフォルダなどの1以上のフォルダに対応してもよい。
【0034】
さらに、ユーザ情報127は、フォルダ/ファイルシステムの許可、ユーザアカウント情報、ユーザログイン情報及びユーザ信用証明書等のそれぞれのユーザ130に関する情報を含んでもよい。例えば、ユーザ130(1)、130(2)のクライアント装置108(1)、108(2)は、それぞれ第1サービス演算装置103(1)と通信するように構成されてもよい一方、ユーザ130(3)、130(4)のクライアント装置108(3)、108(4)は、それぞれN番目サービス演算装置103(N)と通信するように構成されてもよい。したがって、それぞれのサービス演算装置103は、ユーザ130のローカルストレージとしての役割を果たしてもよい。サービス演算装置103は、プログラム、ドライバなどを含み得る他の機能部品及びデータ並びに機能部品により使用又は生成されるデータも含んでもよく又は維持してもよい。さらに、サービス演算装置103は、多くの他の論理部品、プログラム部品及び物理的部品を含んでもよく、上述のものは、本明細書における論述に関する単なる例である。加えて、部品111、113、115、117、119、123は、図の明確化のために、
図1のサービス演算装置103(2)...103(N)内に示されないが、サービス演算装置103(2)...103(N)は、サービス演算装置103(1)に関して上に論述された部品111、113、115、117、119、123と同じ又は同様の部品を含んでもよい。
【0035】
各クライアント装置108は、デスクトップ、ラップトップ、タブレット演算装置、モバイル機器、スマートフォン、ウェアラブル装置、及び/又はネットワーク上でデータを送信することができる任意の他のタイプの演算装置などの任意の好適なタイプの演算装置であってもよい。いくつかの場合、クライアント装置108は、
図10に関して以下に論述されるようなハードウェア構成及び論理構成を含んでもよい。ユーザ130(1)、130(2)、130(3)、130(4)、...は、例えば、それぞれのユーザアカウント、ユーザログイン信用証明書などを介してクライアント装置108(1)、108(2)、108(3)、108(4)、...にそれぞれ関連付けられてもよい。さらに、クライアント装置108は、1以上のネットワーク106を介して、別のネットワークを介して、又は任意の他の好適なタイプの通信接続を介してサービス演算装置103と通信することができてもよい。多数の他の変形形態は、本明細書の開示の恩恵を有する当業者に明らかになる。
【0036】
さらに、各クライアント装置108(1)~108(4)は、例えば、ストレージシステム104上の格納のためにユーザデータを送信するため及び/又はストレージシステム104から格納データを受信するためにサーバプログラム117と通信するためなど、それぞれのクライアント装置108(1)~108(4)上で実行し得るクライアントアプリケーション136(1)~136(4)のそれぞれのインスタンスを含んでもよい。別の例として、アプリケーション136は、フォルダの生成のためのフォルダ要求を生成し、サービス演算装置103に送信するためにユーザ130により使用されてもよい。いくつかの場合、アプリケーション136は、ブラウザを含んでもよく又はブラウザを介して動作してもよいが、他の場合、アプリケーション136は、1以上のネットワーク106上でのサーバプログラム117との通信を可能にする通信機能を有する任意の他のタイプのアプリケーションを含んでもよい。いくつかの例では、個々のユーザ130は、複数のクライアント装置108を有してもよく、サービス演算装置103は、特定のユーザのデータを、特定のユーザ130が関連付けられるクライアント装置108のそれぞれに対して自動的に同期させ得る。
【0037】
ストレージシステム104は、サーバ102に関して上に論述された例の任意のものなどの1以上のサーバ又は任意の他の好適な演算装置を含み得る1以上のストレージ演算装置140(を含んでもよい。ストレージ演算装置140は、それぞれ1以上のプロセッサ142、1以上のコンピュータ可読媒体144及び1以上の通信インターフェース146を含んでもよい。例えば、プロセッサ142は、プロセッサ110に関して上に論述された例の任意のものに対応してもよく、コンピュータ可読媒体144は、コンピュータ可読媒体112に関して上に論述された例の任意のものに対応してもよく、通信インターフェース146は、通信インターフェース114に関して上に論述された例の任意のものに対応してもよい。
【0038】
加えて、コンピュータ可読媒体144は、ストレージシステム104内に含まれるストレージ150上のデータの格納を管理するための1以上のプロセッサ142により実行される機能部品としてストレージプログラム148を含んでもよい。ストレージ150は、記憶装置156などの1以上のアレイ154上にデータを格納するためのストレージ150に関連する1以上のコントローラ152を含んでもよい。例えば、コントローラ152は、例えば、アレイ154をRAID構成、JBOD構成などで構成し、及び/又は記憶装置156に基づく論理ユニットをストレージプログラム148に提示し、及び下位にある物理記憶装置156上に格納されるデータオブジェクト158などのデータを管理するために、アレイ154を制御してもよい。記憶装置156は、ハードディスクドライブ、ソリッドステートドライイブ、光ドライブ、磁気テープ、及びそれらの組み合わせ等などの任意のタイプの記憶装置であってもよい。いくつかの例では、1以上のアレイ154は、オンディマンド記憶容量を提供するように構成されるシンプロビジョニングアレイを含んでもよい。さらに、ストレージ150は、様々なユーザ、ユーザのグループ、チームなどのための記憶容量を提供するために使用されるストレージプールを生成するために使用されてもよい。
【0039】
システム100では、ユーザ130は、彼らのそれぞれのクライアント装置108が通信状態にあるサービス演算装置103にデータを格納し、それからデータを受信してもよい。したがって、サービス演算装置103は、ユーザ130及びそれぞれのクライアント装置108のためのローカルストレージを提供してもよい。定常状態動作中、サービス演算装置103と定期的に通信するクライアント108が存在してもよい。クライアント108は、新しいファイルコンテンツをそれぞれのサービス演算装置103に送信すると共に、更新ファイルをそれぞれのサービス演算装置103から受信することにより、サービス演算装置103とファイルを同期させる。いくつかの例では、所与のユーザのすべてのクライアントは、同じファイル集合を同期させてもよい。さらに、サービス演算装置103は、受信されたファイルコンテンツをサーバ102に送信し、またクライアント108への配送のためにサーバ102からファイルを受信することなどにより、をサーバ102と同期させる。
【0040】
一例として、ユーザ130(1)が、User1データ160を、ファイルシステム125、124の少なくとも一部に対応し得るサービス演算装置103(1)により管理される指定フォルダに格納すると仮定する。非限定的例として、User1データ160は、画像、ワープロ文書又はスプレッドシート等のオブジェクトデータを含むと仮定する。サービス演算装置103(1)は、User1データ160を受信してもよく、User1データに関するメタデータをユーザ130(1)のファイルシステム内に格納してもよい。図示された構成では、特定のサービス演算装置103は、サービス演算装置103がデータ格納作業及びサービス作業を行うために特定のクライアント装置108と直接通信する「オリジナル」役割で動作するように指定されている。例えば、サービス演算装置103(1)、103(N)が、図示の例においてオリジナル役割で動作するように構成されると仮定する。サービス演算装置103の他のものは、1以上のオリジナルサービス演算装置103により格納されたファイルシステムメタデータがミラーされるか、又は他にリフレクションサービス演算装置103上に複製として格納されるリフレクション(ミラー)役割で動作するように構成されてもよい。したがって、リフレクションサービス演算装置103は、オリジナルサービス演算装置のバックアップとしての役割を果たしてもよい。図示の例では、サービス演算装置103(2)は、リフレクション役割で動作しており、オリジナルサービス演算装置、すなわちこの例ではサービス演算装置103(1)、103(N)に含まれるファイルシステムメタデータに対応するファイルシステムメタデータを含んでもよい。
【0041】
サービス演算装置103(1)がUser1データ160を受信すると、データベースプログラム119は、データに関する情報を格納してもよく、データベースプログラム119により管理されるオリジナルUser1ファイルシステム(FS)内のデータのパスを判断してもよい。加えて、サービス演算装置103上のサーバプログラム117は、User1データ160をサーバ102に転送してもよい。サーバ102上のデータベースプログラム118は、データベースプログラム118により管理されるUser1ファイルシステムに関するなどのユーザ1データ160に関するメタデータをメタデータデータベース122内に格納してもよい。加えて、サーバ102上のサーバプログラム116は、User1データ160の少なくともオブジェクト部分をUser1オブジェクトデータ162としてストレージシステム104に転送してもよい。ストレージシステム104は、User1オブジェクトデータ162を他のデータオブジェクト158と共にオブジェクトストレージ内に格納してもよい。クライアント装置108によるストレージシステム104からのオブジェクトの取り出しは、逆順で同様に達成され得る。
【0042】
さらに、User1データリフレクション164もリフレクションサービス演算装置103(2)に格納されてもよい。例えば、システム構成に依存して、サービス演算装置103(1)又はサーバ102のいずれかは、専らメタデータを含み得るUser1データリフレクション164、すなわちUser1データ160を受信した結果として第1サービス演算装置103(1)上でなされたUser1 FSに対する変更をリフレクション役割サービス演算装置103に送信してもよい。したがって、オブジェクトデータは、典型的には、リフレクションサービス演算装置103(2)に送信されない可能性がある。サービス演算装置103(2)によるUser1データリフレクション164の受信は、サービス演算装置103(2)上のデータベースプログラム(
図1に示さず)に、サービス演算装置103(2)上のリフレクションUser1FSを、User1データリフレクション164内に含まれる情報に基づいて更新させるようにしてもよい。
【0043】
上述のように、本明細書におけるサーバ102は、システム故障の場合のデータ損失を最小化することができる頑強な災害復旧機能を含んでもよい。当初のセーフガードとして、サーバ102は、メタデータデータベース122をストレージシステム104に定期的にバックアップしてもよい。例えば、週に1回、1日に1回、2日毎に1回、3日毎に1回、月に1回、又は任意の他の好適な期間などの定期的に、データベースプログラム118は、全メタデータデータベースバックアップ168を格納のためにストレージシステム104に送信してもよい。加えて、データベースプログラム118は、メタデータログバックアップ170を毎時間毎、半時間毎に、2時間毎などの定期的に送信してもよい。代替的に、メタデータログバックアップ170は、16MB、32MB、8MB等などの所定の閾値サイズに到達したときに送信されてもよい。したがって、この場合、メタデータログバックアップ170が送信される頻度は、どの程度激しくシステム100が使用されるかに少なくとも部分的に依存する。
【0044】
メタデータログバックアップ170は、災害復旧状況においてデータ復元を行うなどの、データの損失の場合にメタデータデータベース122をサーバ102に復元するために、の全メタデータデータベースバックアップ168に加えて使用されてもよい。しかし、メタデータデータベース122全体の定期的バックアップと、メタデータデータベース122全体の定期的バックアップ間に記録されるメタデータログのバックアップとは、データ損失の可能性を生じ得る。例えば、最後のメタデータログバックアップ170以降にクライアント108によりシステムに対して変更又は追加されたデータは、サーバ102上の回復されたメタデータデータベース122内に含まれない。その結果、サーバ102は、喪失データを、回復されたメタデータデータベース122に復元するためにサービス演算装置103と通信してもよい。
【0045】
例えば、以下に追加的に論述されるように、最新の全メタデータバックアップの回復と、ストレージシステムからの定期的メタデータログバックアップとに続いて、サーバ102は、最初に、オリジナルモード役割で動作するサービス演算装置103(1)、103(N)とメタデータを同期させてもよい。その後、何らかのことがオリジナル装置の1つに起これば、サーバ102は、すべてのデータが回復されることを保証するために、リフレクション役割で動作しているサービス演算装置103(2)及び任意の他のサービス演算装置103と、メタデータを同期させてもよい。オリジナル役割演算装置上のデータとリフレクション役割演算装置上のデータとの間に競合があれば、オリジナル役割演算装置は、権限のあるものとして扱われてもよい。オリジナルサービス演算装置103との同期の完了に続いて、サーバ102は、回復モードを抜け、通常動作モードで動作することをもう一度開始してもよい。サーバ102のメタデータデータベース122とサービス演算装置103との同期の追加の詳細は、以下に説明される。
【0046】
図2は、いくつかの実装形態による、サーバ102及びストレージシステム104の1つの可能な例示的構成200を示す。例示的構成200では、第1サーバ102(1)は第2サーバ102(2)に接続されてもよい。例えば、第1サーバ102(1)及び第2サーバ102(2)は、格納及びデータ管理サービスを複数のサービス演算装置103及びクライアント装置108(
図2に示さず)に提供するための演算ポッドを一緒に形成してもよい。いくつかの例では、少なくともメタデータデータベース122を維持することに関して、第1サーバ102(1)は、マスタ又は主演算装置として働いてもよい一方、第2サーバ102(2)は、スレーブ又は副演算装置として働いてもよい。例えば、第1サーバ102(1)上のデータベースプログラム118は、第1サーバ102(1)上のメタデータデータベース122を更新及び維持してもよい。例えば、第1サーバ102(1)上のデータベースプログラム118は、ファイルシステム124、任意の関連フォルダ情報、及びユーザアカウント情報202を含むユーザ情報126を管理してもよい。
【0047】
204で示すように、第1サーバ102(1)上のデータベースプログラム118又は他のプログラムは、メタデータデータベース122を第2サーバ102(2)に複製してもよい。したがって、第2サーバ102(2)は、ファイルシステム124及びユーザ情報126の複製を含み得るメタデータデータベース122の複製を維持してもよい。第1サーバ102(1)が故障すると、第2サーバ102(2)は、第1サーバ102(1)が、異なるサーバ(
図2に示さず)により置換及び/又は修理される間、主演算装置の役割を引き受けてもよい。この間、第2サーバ102(2)は、メタデータデータベース122を維持及び更新し、クライアント装置108及びストレージシステム104と相互作用してもよい。したがって、災害がサーバ102の1つのみに影響する場合、典型的には、データ損失なしに、他方が動作を継続し得る。
【0048】
加えて、この例は、サーバ102がアプリケーションプログラムインターフェース(API)情報206を含んでもよいことを示す。例えば、本明細書における演算装置は、サービス 102、サービス演算装置103、クライアント装置108及びストレージシステム104間など)演算装置間(の情報の伝達のためにAPIを使用してもよい。好適なAPIの一例は、representational state transfer(REST)APIであるが、本明細書における実装形態は、いかなる特定のAPIにも限定されない。
【0049】
さらに、構成200は、1以上ネットワーク106上で互いに通信状態であり得る第1ストレージシステム104(1)及び第2ストレージシステム104(2)を含む。この例では、第1ストレージシステム104は、複製されたバックアップ208を第1ストレージシステムから第2ストレージシステムに送信してもよい。したがって、第2ストレージシステム104は、全メタデータデータベースバックアップ168及びメタデータログバックアップ170の複製も含んでもよい。したがって、サーバ102(1)とサーバ102(2)との両方の破局的故障に続いて、サーバ102(1)、102(2)は、210で示すように、失われたデータを、全メタデータデータベースバックアップと最新ログとを使用することにより回復してもよい。
【0050】
加えて、システム100は、例えば、1以上のネットワーク106を介して管理者214に関連付けられた管理者演算装置212を含んでもよく、又はそれと通信することができてもよい。例えば、管理者演算装置212は、サーバ102及びストレージシステム104に関する情報を管理者214に提供すると共に、アドミニストレータ214が、どの程度頻繁に全メタデータデータベースバックアップ168及びメタデータログバックアップ170が行われるかなどの本システム内のセッティングを管理することを可能にする1以上のユーザインターフェースを提供する管理者アプリケーション216を含んでもよい。さらに、
図2の例は、1以上のサーバ102及び1以上のストレージシステム104の可能な構成の単なる一例である。多数の他の構成は、本明細書の開示の恩恵を受ける当業者に明らかになる。
【0051】
図3は、いくつかの実装形態による、ミラーリングが適用される前後の3つのサービス演算装置の例示的構成300を示すブロック図である。この例では、第1サービス演算装置103(1)は、これらの3つのサービス演算装置103間で使用されているすべてのファイルシステムの上位集合を含むため、オリジナル役割で機能するようにサーバ102により選択されてもよい。いくつかの例では、ミラー集合に含まれることになるサービス演算装置のいかなるサービス演算装置103もすべてのファイルシステムの上位集合を有しない場合、最大数のファイルシステムを現在有するサービス演算装置103がオリジナル装置となるようにサーバ102により選択されてもよく、リフレクション装置として使用されるように意図されている装置であり、オリジナル装置となるように選択されたサービス演算装置上にまだ存在しない装置上に存在する任意の残りのファイルシステムは、選択されたオリジナルサービス演算装置に移動されてもよい。サービス演算装置103(1)~103(3)に追加されるいかなる新しいファイルシステムも、オリジナル役割が割り当てられた第1サービス演算装置103(1)に追加され、リフレクション役割が割り当てられた第2サービス演算装置103(2)及び第3サービス演算装置103(3)にミラーリングされる。
【0052】
図示の例では、ミラーリングが適用される前、第1サービス演算装置103(1)は、ユーザのファイルシステム302、管理者ファイルシステム304、マーケティング部ファイルシステム306、ネットワーク共有ファイルシステム308、管理ファイルシステム310、及び開発ファイルシステム312を含む複数のファイルシステムを含む。さらに、第2サービス演算装置103(2)は、マーケティング部ファイルシステム306及びネットワーク共有ファイルシステム308を含む。加えて、第3サービス演算装置103は、ユーザのファイルシステム302及び管理者ファイルシステム304を含む。上に列挙されたファイルシステム302~312のそれぞれは、1行目上に列挙されたファイルシステムパス及び2行目上に列挙された関連ファイルシステムID(fsID)を有する。ファイルシステムパスとファイルシステムIDとの両方は、
図1に関して上に論述されたシステム100などのファイルシステム302~312が使用されるコンピュータシステム内で一意的であり得るか又は個々に区別可能であってもよい。ファイルシステム302~312のそれぞれは、対応するファイルシステムがユーザにとって必ずしも個人ではないように、いくつかの例ではチームフォルダであってもよいが、ユーザの個人ファイルシステム下にマウントされ得るフォルダに対応してもよい。ファイルシステム/フォルダは、マッピングPUTが行われた後などに、サーバ上のチームフォルダとして表され得るサービス演算装置103にとってローカルであるフォルダである「共有」(とも呼ばれてもよい。共有のマッピング情報は、例えば、fsID及びパスを含んでもよい。
【0053】
ミラーリングが適用された後、第1サービス演算装置103(1)は、316で示すように、オリジナルサービス演算装置として働き、第2サービス演算装置103(2)及び第3サービス演算装置103(3)は、318、320でそれぞれ示すように、リフレクション演算装置として働く。サービス演算装置103のそれぞれは、ファイルシステム302~312の複製を維持する。オリジナルサービス演算装置103(1)がファイルシステム302~312の1つに対する更新を受信すると、更新は、矢印322、324によりそれぞれ示されるようにリフレクションサービス演算装置103(2)、103(3)に伝播される。加えて、いくつかの例では、更新は、第2サービス演算装置103(2)と第3サービス演算装置103(3)との間で伝播されてもよい。
【0054】
図4は、いくつかの実装形態による、オリジナルサービス演算装置と、ミラーサービス演算装置と、サーバとの間の関係を示すブロック
図400である。サービス演算装置103及びサーバ102上において、各ユーザ、グループ又はチームに属するフォルダは、それぞれ別のファイルシステムに編制されてもよい。各ファイルシステムを記述するメタデータは、サービス演算装置メタデータデータベース及びサーバメタデータデータベース内に格納されてもよい。
【0055】
この例では、第1サービス演算装置103(1)は、オリジナルサービス演算装置として構成され、User1フォルダ404、User2フォルダ406、及びUser3フォルダ408を含む複数のユーザ副フォルダを有するユーザのフォルダ402を含む。加えて、第1サービス演算装置103は、グループマーケティングフォルダ410、及びグループエンジニアリングフォルダ412を含む。フォルダ404~412のそれぞれは、
図1に関して上に論述されたコンピュータシステム100などのコンピュータシステム内で一意的であってもよく、又は個々に区別可能であってもよい、関連ファイルシステムID(fsID)を含む。上述のように、各フォルダは、コンピュータシステム100内の別のファイルシステムに対応してもよく、また
図3に関して上に論述したような一意のファイルシステムパス(
図4に示さず)を有していてもよい。
【0056】
第1サービス演算装置103(1)内のフォルダ404~412の任意のものに対する更新が受信されると、更新は、矢印414により示されるようにオリジナルサービス演算装置103(1)からリフレクションサービス演算装置103(2)にミラーリングされてもよい。加えて、サーバ102は、フォルダ402~412のそのバージョンも維持する。矢印416により示されるように、第1サービス演算装置103内のフォルダ404~412に対する更新も通常動作中にサーバ102に送信される。
【0057】
図5は、いくつかの実装形態による、オリジナルサービス演算装置、リフレクションサービス演算装置及びサーバ上のファイルシステムトランザクションマッピングの例を示すブロック
図500である。
図5に示すように、第1サービス演算装置103(1)、第2サービス演算装置103(2)及び第3サービス演算装置103(3)は、同じミラー集合502の一部である。ミラー集合502では、第1サービス演算装置103(1)は、オリジナル装置として動作し、第2サービス演算装置103(2)及び第3サービス演算装置103(3)は、第1サービス演算装置103(1)上のファイルシステムメタデータのリフレクション、すなわち複製であるコンテンツを有するリフレクション装置として動作する。さらに、第4サービス演算装置103(4)は、ミラー集合502の一部ではない。
【0058】
この例では、同じミラー集合502の一部である各サービス演算装置103(1)~103(3)は、同じマッピング識別子(ID)を割り当てられる。同じマッピングIDを有することは、これらのサービス演算装置103(1)~103(3)のそれぞれが、場合により、オリジナルサービス演算装置103(1)及びマッピングIDに関連するファイルシステムの回復のための情報をサーバ102に提供し得ることを示している。この例では、ミラー集合502内のサービス演算装置103(1)~103(3)のマッピングIDは、「123」であり、第4サービス演算装置103(4)のマッピングIDは、「345」である。マッピングIDは、任意の好適な手順を使用して割り当てられてもよく、システム100内で一意的であるか又は他に個々に区別可能であってもよい。
【0059】
サーバ102は、サービス演算装置103と、その上に維持されるファイルシステムとを追跡するための複数のデータ構造を含んでもよい。この例では、サーバ102は、ミラー役割及びマッピングデータ構造504を含む。ミラー役割及びマッピングデータ構造504は、サービス演算装置(SCD)ID506、識別されたサービス演算装置のミラー役割508及び識別されたサービス演算装置のマッピングID510を含む。したがって、このデータ構造504は、第1、第2及び第3サービス演算装置103(1)~103(3)が同じマッピングID123を有する一方、第4サービス演算装置103(4)が異なるマッピングIDを有することを示している。
【0060】
サーバ102は、トランザクション追跡データ構造512をさらに含む。トランザクション追跡データ構造は、マッピングID514と、対応するトランザクションID516とを含む。例えば、第1サービス演算装置103(1)、すなわちオリジナル装置により維持されるファイルシステムのマッピングに関してトランザクションが実行されるたびに、トランザクションIDは、インクリメントされる。トランザクションの例は、共有追加、共有除去、共有名変更を含んでもよい。加えて、サーバ102は、マッピングID522、ファイルシステムID524、及び共有パス526を含むフォルダ追跡データ構造520を含んでもよい。例えば、フォルダ追跡データ構造520は、フォルダA及びBが、マッピングID123に対応するサービス演算装置により管理される一方、フォルダCが、マッピングID345に対応するサービス演算装置により管理されることを示している。
【0061】
加えて、サーバ102は、各ファイルシステムFS1、FS2、FS3内にそれぞれ含まれるファイルを識別するデータ構造530、532、及び534を含む。例えば、データ構造530は、ファイルシステムFS1がファイルa.txtを含むことを示し、データ構造532は、ファイルシステムFS2がファイルb.txtを含むことを示し、データ構造534は、ファイルシステムFS3がファイルc.txtを含むことを示している。いくつかの例では、バージョンは、更新されたサービス演算装置上のファイルと、更新されなかったサービス演算装置上のファイルとをサーバが区別することができるように各ファイルに関連付けられてもよい。
【0062】
加えて、サービス演算装置103のそれぞれは、それぞれのサービス演算装置のマッピングIDと現在のトランザクションID540とを含むトランザクションID情報構造536を含んでもよい。この例では、第1サービス演算装置103(1)及び第2サービス演算装置103(2)内のトランザクションIDは、サーバデータ構造512内のトランザクションID516の現在のカウントと同じである「5」に等しい。例えば、第1サービス演算装置103(1)、第2サービス演算装置103(2)及び第3サービス演算装置103(3)は、542で示すように、ファイルa.txtを含むフォルダAを含む。一方、第1サービス演算装置103(1)及び第2サービス演算装置103(2)は、544で示すように、ファイルb.txtを含むフォルダBも含むが、第3サービス演算装置103(3)は、フォルダB及びファイルb.txtを含まない。その結果、「4」に対応するトランザクションIDは、フォルダBが第3サービス演算装置103にまだ反映されていないことを示している。加えて、「なし」の役割を有する第4サービス演算装置は、546で示すように、ファイルc.txtを有するフォルダCを含む。
【0063】
図6~9は、いくつかの実装形態による例示的処理を示すフロー図である。これらの処理は、一連の作業を表す論理フロー図内のブロックの集合として示され、そのいくつか又はすべては、ハードウェア、ソフトウェア又はそれらの組み合わせで実装されてもよい。ソフトウェアに関連して、ブロックは、1以上のプロセッサにより実行されると、列挙された作業を行うようにプロセッサをプログラムする、1以上のコンピュータ可読媒体上に格納されるコンピュータ実行可能命令を表してもよい。典型的に、コンピュータ実行可能命令は、特定の機能を行う又は特定のデータタイプを実装するルーチン、プログラム、オブジェクト、部品、データ構造などを含む。ブロックが説明される順番は、限定として解釈されるべきでない。説明されたブロックの任意の数のブロックは、処理又は代替処理を実施するために任意の順番において及び/又は並列に組み合わされてもよく、ブロックのすべてが実行される必要があるわけではない。論述の目的のために、これらの処理は、本明細書の例において説明される環境、フレームワーク、及びシステムを参照して説明されることになるが、これらの処理は、幅広い種類の他の環境、フレームワーク、及びシステムにおいて実装されてもよい。
【0064】
災害、破局的機能停止、又は他の故障が発生すると、サーバ102は、完全に失われる可能性があり、新しい又は修復されたサーバ102がバックアップから復元される必要がある。この状況では、回復前にサーバ102と同期していたサービス演算装置103は、トランザクションを処理する際にサーバに先行することになる。換言すれば、サービス演算装置103は、回復中のサーバが取り込んでいないサービス演算装置103が管理するファイルシステムに対する変更を有し得る。したがって、サービス演算装置103上のトランザクションIDは、サーバ102上のトランザクションIDより高いことがあり得る。その結果、サービス演算装置103がサーバ102からその状態を直接更新すると、ローカル変更は、失われる可能性がある。
【0065】
図6は、いくつかの実装形態によるサーバ回復の例示的処理600を示すフロー図である。いくつかの場合、処理600は、サーバ102により少なくとも部分的に実行されてもよう、1以上のサービス演算装置103により少なくとも部分的に実行されてもよい。
図6では、サーバの故障が発生し、サーバがデータを回復するための回復処理中であり、サーバ102により管理される複数のサービス演算装置103と同期状態に戻ることを仮定する。要約すると、故障がサーバ上で発生した後、サーバは、ストレージシステム104上で維持されるすべてのメタデータデータベースバックアップ及びストレージシステム104上でまた維持されるメタデータログバックアップからファイルシステムメタデータを回復する。その後、サーバは、各オリジナルサービス演算装置上に格納された情報を利用することにより、回復手順をオリジナルサービス演算装置に実行させるために各オリジナルサービス演算装置と最初に通信する。サーバは、トランザクションのすべて及び他の情報がサーバにより回復されることを保証するために、リフレクション装置上に格納された情報をさらにチェックしてもよい。
【0066】
602で、サーバは、回復モードに入り、最新の全メタデータデータベースバックアップ及びいくつかの間にあるメタデータログバックアップからデータを回復する。例えば、管理者は、いくつかの場合に回復を開始してもよい。他の場合、回復は、サーバ自身又は別の演算装置により自動的に開始されてもよい。
【0067】
604で、サーバは、要求を受信したこと又はそうでなければ受信しなかったことに応答して、サーバがSCDにサーバからそれぞれのSCD情報を要求させための回復モードにあることを示す通信をサービス演算装置(SCD)の1以上に送信してもよい。
【0068】
606で、SCD情報を要求したそれぞれのSCDは、SCD情報をサーバから受信してもよい。サーバから受信されるSCD情報の例は、
図5のデータ構造504に関して上に論述されたようなそれぞれのSCDのミラー役割及びマッピングIDと、
図5のデータ構造512に関して上に論述されたようなそれぞれのSCDのマッピングIDに対応する現在のトランザクションIDと、
図5のデータ構造520に関して上に論述されたようなSCDのマッピング情報(例えば、マッピングID、ファイルシステムID及び共有パス)を含んでもよい。
【0069】
608で、SCD情報を受信したSCDは、サーバから受信されたSCD情報内に示されているミラー役割に基づいて、そのミラー役割を決定してもよい。ミラー役割が「オリジナル」又は「なし」であれば、処理は、610に進む。他方では、ミラー役割が「リフレクション」であれば、処理は、622に進む。
【0070】
610で、役割がオリジナル又はなしである場合、SCDは、オリジナル回復モードに入り、回復が完了するまでサーバからのすべてのファイル同期読み取り/書き込みを拒絶する。
【0071】
612で、SCDは、サーバ上の情報と照合するためにマッピングを回復する(この動作の詳細に関しては、
図7~9を参照)。
【0072】
614で、SCDは、サーバと共通する任意のマッピングを決定してもよい。共通のマッピングが存在する場合、処理は、616に進む。そうでなければ、処理は、618に進む。
【0073】
616で、SCDは、バージョンを有するすべてのローカルファイル並びに照合のためのそれらのセキュリティ記述子及び拡張属性をサーバに送信し、SCDは、各ローカルファイルの回復指示子を例えば「PUT」又は「UPDATE」の1つに設定する。例えば、SCDは、全ローカル状態をトラバースし、ファイルを管理するサービス演算装置が、最後にサービス演算装置がサーバと同期していた以降のローカル変更を有するか否かを示す指標を有するバージョン(例えば、ある時点で同期していた)を有する、ファイル、フォルダ、マウントポイントなどのすべてのローカルアイテムをサーバに送信する。1つの非限定的例として、ローカルアイテムの送信及びサーバとの同期処理は、各ファイルのファイル名、ファイルパス、ハッシュ及びサイズに関する情報を有するREST API PUTとして実行されてもよい。通信は、サーバがファイルコンテンツをまだ受信していなければ、ファイルのコンテンツも含んでもよい。サーバは、これらのPUTをサーバ上の既存状態で照合してもよい。いくつかの例では、セキュリティ記述子及び拡張属性は、システム内に格納されたファイルに関連するメタデータであってもよい。セキュリティ記述子及び拡張属性は、ファイル及びフォルダ及び特殊属性(例えば、ファイルが隠されているか否か)へのユーザアクセスを制御するために使用されてもよい。例えば、サーバ及び/又はサービス演算装置は、パス情報、ファイルハッシュ、ファイルサイズなどの処理と同様に、セキュリティ記述子及び拡張属性をメタデータとして扱ってもよい。したがって、SCDがそのファイルのすべてを照合のためにサーバに送信する場合、SCDは、この情報も含み得る。
【0074】
618で、SCDは、回復が完了していることを示す通信をサーバに送信する。さらに、SCDは、オリジナル回復モードから抜け出て、サーバからのファイル同期読み取り/書き込みを受け付けることを開始してもよい。
【0075】
620で、SCDは、バージョンのないすべてのローカルファイルを正常ポストとしてサーバに送信する。
【0076】
一方、622で、SCDのミラー役割が「オリジナル」又は「なし」ではなく「リフレクション」である場合、SCDは、リフレクション回復モードに入り、回復が完了するまでサーバからのすべてのファイル同期読み取り/書き込みを拒絶する。
【0077】
624で、SCDは、サーバからSCD情報を要求して受信する。要求されたSCD情報は、要求しているSCDの現在のミラー役割を少なくとも示してもよい。
【0078】
626で、SCDは、ミラー集合内のリフレクション役割がまだ割り当てられているかどうかを判断する。そうであれば、処理は、628に進む。そうでなければ、処理は、610に進む。
【0079】
628で、リフレクション役割がまだ割り当てられていれば、SCDは、マッピング情報をサーバから要求する。
【0080】
630で、SCDは、マッピングがまだ回復モードにあるかどうかを判断してもよい。そうであれば、処理は、624に戻る。そうでなければ、処理は、632に進む。
【0081】
632で、マッピングが回復モードになければ、SCDは、サーバから受信されたマッピング情報をローカルに保存し、処理は、ブロック616に進む。
【0082】
634で、620の完了に続いて、SCDは、サーバから、SCDにより管理されるすべてのファイルのすべての最新メタデータを要求してもよい。
【0083】
636で、SCDにより管理されるすべてのファイルの最新メタデータの受信に続いて、回復が完了する。
【0084】
図7は、いくつかの実装形態による、サービス演算装置がマッピングを回復し、サーバ上の情報と照合するための例示的処理700を示すフロー図である。いくつかの場合、処理700は、1以上のサービス演算装置103により少なくとも部分的に実行されてもよい。さらに、いくつかの例では、
図7~9の処理は、
図6のブロック612に対応してもよい。
【0085】
702で、サービス演算装置(SCD)は、サーバからSCD情報を受信する。
図6、5に関して上に述べたように、SCD情報は、要求しているSCDに割り当てられたマッピングID、存在する場合、を含んでもよい。
【0086】
704で、演算装置は、サーバがSCDのマッピングIDを有するかどうかを判断してもよい。SCDのマッピングIDがサーバ上に存在しない場合、処理は、706に進む。SCDのマッピングIDがサーバ上に存在する場合、処理は、714に進む。
【0087】
706で、SCDは、SCDがマッピングIDのローカル記録を有するかどうかを判断する。そうであれば、処理は、710に進む。そうでなければ、処理は、708に進む。
【0088】
708で、サーバもSCDもSCDのマッピングIDを有しない場合、マッピング回復が完了する。
【0089】
710で、サーバがSCDのマッピングIDを有しないが、SCDがマッピングIDを有する場合、SCDは、それ自体のローカルマッピングをサーバに送信する。例えば、SCDは、SCDメタデータデータベースから共有及び監視パスと共にマッピングPUT要求を生成してもよい。いくつかの例では、「共有」は、マッピングPUTが行われた後にサーバ上のチームフォルダとして表され得るような、SCDにとってローカルであるフォルダである。例えば、SCD103(1)の
図3に示す例では、各フォルダ302~312は、「共有」に対応する。マッピングPUTがSCDにより行われた後、サーバは、それらのフォルダ302~312のそれぞれにfsIDを割り当ててもよい。次に、SCDは、例えば、各共有のfsID及びパスを含む、サーバにより戻される各共有の新しいマッピング情報を受信してもよく、712で以下に論述されるように、このマッピング情報をそのローカルメタデータデータベース内に保存する。
【0090】
712で、SCDは、それ自体のローカルマッピングを、サーバから受信されたマッピングで置換する。例えば、710でのPUT要求に応答して、SCDは、サーバからデータベース共有のためのマッピング情報を受信してもよく、SCDのローカルメタデータデータベースを、サーバから受信される共有に基づいて更新してもよい。712に続いて、処理は、708に進み、マッピング回復が完了する。
【0091】
714で、サーバがSCDのマッピングIDを実際に有する場合、SCDは、次に、SCDがマッピングIDのローカル記録を有するかどうかを判断する。そうであれば、処理は、716に進む。そうでなければ、処理は、上に論述された作業を行うために712に進む。
【0092】
716で、SCDは、サーバマッピングIDとSCDマッピングIDとが互いに整合するかどうかを判断する。そうであれば、処理は、718に進む。そうでなければ、処理は、712に進む。例えば、マッピングIDがこのSCDのサーバ上に実際に存在するが、サーバ上のマッピングIDが、SCDがそのマッピングIDとして記録したものと整合しない場合、エラーが発生した可能性がある。
【0093】
718で、サーバマッピングIDとSCDマッピングIDとが互いに整合すると、SCDは、共有マッピングをサーバから要求する。
【0094】
720で、SCDは、SCDローカルマッピングトランザクションIDがサーバのマッピングトランザクションID以下であるかどうかを判断する。そうであれば、処理は、712に進む。そうでなければ、処理は、722に進む。
【0095】
722で、SCDローカルマッピングトランザクションIDがサーバのマッピングトランザクションIDより大きい場合、これは、SCDがサーバに先行していることを意味し、マッピング構造(例えば、
図3、アイテム316に関して上に論述されたような)は、照合される必要があり得る。
【0096】
724で、SCDは、ローカルマッピング及びサーバマッピングを共有パスによりソートし、処理は、
図8に進む。
【0097】
図8は、いくつかの実装形態による、
図7の例示的処理700の続きである例示的処理800を示すフロー図である。いくつかの場合、処理800は、1以上のサービス演算装置103により少なくとも部分的に実行されてもよい。処理800は、上に論述された
図7のブロック724に続く。
【0098】
802で、SCDは、サーバのマッピング内の各共有をローカルマッピング内の各共有と比較する。例えば、SCDは、SCDのローカル共有パス及びfsIDをサーバの共有パス及びfsIDと比較してもよい。
【0099】
804で、演算装置は、SCDのローカル共有パス及び共有ファイルシステムIDがサーバの共有パス及び共有ファイルシステムIDと整合するかどうかを判断してもよい。そうであれば、処理は、806に進む。そうでなければ、処理は、次のサーバ共有をSCDローカル共有と比較するために802に進む。
【0100】
806で、演算装置は、すべての共有が処理されたかどうかを判断してもよい。そうであれば、処理は、
図9に進む。そうでなければ、処理は、次のサーバ共有をSCDローカル共有と比較するために802に進む。
【0101】
808で、SCDは、共有ファイルシステムIDが整合するが、共有パスが整合しないかどうかを判断する。そうであれば、処理は、810に進む。そうでなければ、処理は、812に進む。
【0102】
810で、共有ファイルシステムIDが整合するが、共有パスが整合しない場合、SCDは、共有が同じファイルシステムIDであるが、異なる共有パスを有することを判断し、806に進む。
【0103】
812で、共有パスとファイルシステムIDとが整合しない場合、SCDは、共有パスが整合するかどうかを判断する。そうであれば、処理は、814に進む。そうでなければ、処理は、816に進む。
【0104】
814で、SCDは、共有が同じパスであるが、異なるファイルシステムIDを有することを判断し、806に進む。
【0105】
816で、SCDは、共有パスもファイルシステムIDも整合しないことを判断する。
【0106】
818で、共有パスとファイルシステムIDとが整合しない場合、SCDは、サーバ共有パスがSCD共有パスの前にソートされたかどうかを判断する。そうであれば、処理は、820に進む。そうでなければ、処理は、822に進む。
【0107】
820で、SCDは、サーバマッピングからの共有を使用し、806に進む。
【0108】
822で、SCDは、ローカルマッピングからの共有を使用し、806に進む。
【0109】
図9は、いくつかの実装形態による、
図7の例示的処理700及び
図8の処理800の続きである例示的処理900を示すフロー図である。いくつかの場合、処理900は、1以上のサービス演算装置103により少なくとも部分的に実行されてもよい。処理900は、上に論述された
図8のブロック806に続く。
【0110】
902で、SCDは、同じファイルシステムID及び異なる共有パスを有する共有が存在するかどうかを判断する。そうであれば、処理は、904に進む。そうでなければ、処理は、906に進む。
【0111】
904で、ファイルシステム共有毎に、SCDは、サーバ共有を消去し、SCDローカル共有をサーバに送信する。
【0112】
906で、SCDは、サーバのみが有する共有が存在するかどうかを判断する。そうであれば、処理は、908に進む。そうでなければ、処理は、910に進む。
【0113】
908で、サーバのみが有する共有毎に、SCDは、サーバ共有を消去する。
【0114】
910で、SCDは、同じ共有パス及び異なるファイルシステムIDを有する共有が存在するかどうかを判断する。そうであれば、処理は、912に進む。そうでなければ、処理は、914に進む。
【0115】
912で、共有毎に、SCDは、サーバ共有を消去し、SCDローカル共有をサーバに送信する。
【0116】
914で、SCDは、SCDのみが有する共有が存在するかどうかを判断する。そうであれば、処理は、916に進む。そうでなければ、処理は、918に進む。
【0117】
916で、共有毎に、SCDは、SCDローカル共有をサーバに送信する。
【0118】
918で、SCDは、マッピング手順が完了していることを判断し、
図6のブロック614に進む。
【0119】
本明細書において説明される例示的処理は、論述の目的のために提供される処理の単に一例である。多数の他の変形形態が本明細書の開示に照らして当業者に明らかになる。さらに、本明細書の開示は、処理を実行するための好適なフレームワーク、構成及び環境のいくつかの例を記載するが、本明細書における実装形態は、示され且つ論述された特定の例に限定されない。さらに、本開示は、添付図面において説明し且つ示したような様々な実施例を提供する。しかし、本開示は、本明細書で説明され且つ示された実装形態に限定されないが、当業者に知られているであろうように又は知られることになるであろうように他の実装形態に拡張し得る。
【0120】
図10は、いくつかの実装形態による例示的クライアント装置108の選択された例示的部品を示す。各クライアント装置108は、ワークステーション、デスクトップ、ラップトップ、タブレット演算装置、モバイル機器、スマートフォン、ウェアラブル演算装置又はネットワーク上でデータを送受信することができる任意の他のタイプの演算装置などの任意の好適なタイプの演算装置であってもよい。さらに、クライアント装置108は、1以上のネットワーク106を介して、別のネットワークを介して又は任意の他の好適なタイプの通信接続(
図10に示さず)を介して1以上のサーバ102と通信することができてもよい。多数の他の変形形態は、本明細書の開示の恩恵を有する当業者に明らかになり得る。
【0121】
基本構成では、クライアント装置108は、少なくとも1つのプロセッサ1002、1以上のコンピュータ可読媒体1004、1以上の通信インターフェース1006、及び1以上の入力/出力(I/O)部品1008などの部品を含む。各プロセッサ1002自体は、1以上のプロセッサ又は処理コアを含み得る。例えば、各プロセッサ1002は、1以上のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、ステートマシン、論理回路系、及び/又は操作命令に基づいて信号を操作する任意の装置として実現され得る。いくつかの場合、プロセッサ1002は、本明細書において説明される処理及び他のアルゴリズムを実行するように特別にプログラム又は構成された任意の好適なタイプの1以上のハードウェアプロセッサ及び/又は論理回路を含み得る。プロセッサ1002は、コンピュータ可読媒体1004内に格納されるコンピュータ可読プロセッサ実行可能命令をフェッチ及び実行するように構成され得る。
【0122】
クライアント装置108の構成に依存して、コンピュータ可読媒体1004は、有形の非一時的コンピュータ可読媒体の一例であってもよく、コンピュータ可読プロセッサ実行可能命令、データ構造、プログラムモジュール又は他のデータなどの情報の格納のための任意のタイプの技術で実現される揮発性及び非揮発性メモリ並びに/又は着脱可能及び着脱不能媒体を含んでもよい。コンピュータ可読媒体1004は、限定しないが、RAM、ROM、EEPROM、フラッシュメモリ、ソリッドステートストレージ、光学ストレージ、磁気ディスクストレージ、磁気テープ及び/又は他のタイプのストレージ技術を含んでもよい。さらに、いくつかの場合、クライアント装置108は、例えば、直接、別の演算装置を介して又はネットワークを介して、外部ストレージにアクセスしてもよい。したがって、コンピュータ可読媒体1004は、プロセッサ1002により実行され得る命令、プログラム又はソフトウェアコードを格納することができるコンピュータ記憶媒体であってもよい。
【0123】
コンピュータ可読媒体1004は、プロセッサ1002により実行可能である任意の数の機能部品を格納及び維持するために使用されてもよい。いくつかの実装形態では、これらの機能部品は、プロセッサ1002により実行可能であり、実行されると、クライアント装置108に上記のように帰する行為及びサービスを行うための演算論理を実施する命令又はプログラムを含む。コンピュータ可読媒体1004内に格納されたクライアント装置108の機能部品は、上に論述したようにクライアントアプリケーション136を含んでもよい。追加の機能部品は、クライアント装置108の様々な機能を制御及び管理し、且つクライアント装置108との基本的なユーザ相互作用を可能にするためのオペレーティングシステム1010を含んでもよい。コンピュータ可読媒体1004は、様々な機能及びタスクを行うためのクライアント装置108上で実行され得るブラウザアプリケーションを含み得る1以上の他のアプリケーション1014をさらに含んでもよい。追加的に又は代わりに、いくつかの場合、クライアントアプリケーション136は、ブラウザであっても、又はそれを含んでもよい。
【0124】
加えて、コンピュータ可読媒体1004は、機能部品により使用されるデータ、データ構造なども格納してもよい。例えば、コンピュータ可読媒体1004により格納されるデータ及びデータ構造は、1以上のファイル1012及び/又は他のデータオブジェクトを含んでもよい。クライアント装置108のタイプに依存して、コンピュータ可読媒体1004は、任意選択的に、プログラム、ドライバなどを含み得る他の機能部品及びデータ(他のモジュール及びデータ1014など)並びに機能部品により使用又は生成されるデータも含んでもよい。
【0125】
クライアント装置108は、1以上の通信インターフェース1006をさらに含んでもよい。通信インターフェース1006は、様々な他の装置との通信(例えば、ネットワーク106上における)を可能にするための1以上のインターフェース及びハードウェア部品を含んでもよい。例えば、通信インターフェース1006は、サーバ102又は他の演算装置との通信のための接続をネットワーク106に提供する1以上のポートを含んでもよく、又はそれらと接続されてもよい。例えば、通信インターフェース1006は、本明細書の他の箇所で追加的に列挙されるようなLAN(ローカルエリアネットワーク)、WAN(広域エリアネットワーク)、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク(例えば、Wi-Fi)及び有線ネットワーク(例えば、Fibre Channel、光ファイバ、イーサーネット)、直接接続並びにBLUETOOTH(登録商標)などの近距離通信等の1以上を介した通信を可能にしてもよい。
【0126】
クライアント装置108は、スピーカ、マイクロホン、カメラ及び様々なユーザコントロール(例えば、ボタン、ジョイスティック、キーボード、キーパッド、タッチスクリーンなど)、触覚型出力装置等などのI/O部品1008をさらに含んでもよい。例えば、クライアント装置108のオペレーティングシステム1010は、キーパッド、キーボード又はI/O部品1008に付属する他のユーザコントロール及び装置からの入力を受け付けるように構成された好適なドライバを含んでもよい。加えて、クライアント装置108は、受動形式、放射形式又は任意の他の形式のディスプレイであり得るディスプレイ1016を含んでもよい。加えて、クライアント装置108は、例えば、様々なタイプのセンサ、全地球測位システム装置、電池などの電源及び電力制御ユニットなどを含む、図示しない様々な他の部品を含んでもよい。さらに、いくつかの例では、管理者演算装置162は、上に論述したようにクライアント装置108と同様のハードウェア構成であるが、異なる機能部品を有するハードウェア構成を有してもよい。
【0127】
本明細書において説明される様々な命令、処理及び技術は、コンピュータ可読媒体上に格納され、本明細書のプロセッサにより実行されるプログラムモジュールなどのコンピュータ実行可能命令に一般的に関連して考慮されてもよい。一般的に、プログラムモジュールは、特定のタスクを行うか又は特定の抽象データタイプを実現するためのルーチン、プログラム、オブジェクト、部品、データ構造、実行可能コードなどを含む。これらのプログラムモジュールなどは、仮想マシン又は他のジャストインタイムコンパイル実行環境などにおいて固有コードとして実行されてもよく又はダウンロードされて実行されてもよい。通常、プログラムモジュールの機能は、様々な実装形態において必要に応じて組み合わされてもよい又は分散されてもよい。これらのモジュール及び技術の実装形態は、コンピュータ記憶媒体上に格納されてもよく、又はある形式の通信媒体全体にわたって送信されてもよい。
【0128】
本主題は、構造的特徴及び/又は方法論的行為に固有の言語で説明されたが、添付の特許請求の範囲において定義される主題は、記載される特定の特徴又は行為に必ずしも限定されないことを理解すべきである。むしろ、特定の特徴及び行為は、特許請求の範囲を実現する例示的形式として開示される。