(57)【要約】分散型記憶サーバを管理するための方法およびシステムが記載される。該記憶サーバは、選択され、複数のシーケンスおよび複数の仮想ノードグループに分割されてもよい。複数のシーケンスのそれぞれのシーケンスは、所定の数の記憶サーバを含んでもよく、それぞれの仮想ノードグループは、該複数のシーケンスの一組の記憶サーバを含んでもよい。データは、仮想ノードグループの記憶サーバに転送されてもよい。記憶サーバが瞬間的または一時的な故障を有する場合、データは、一時記憶サーバに転送され、回復後に記憶サーバに戻し転送されてもよい。記憶サーバは、永久的な故障を有する場合、データは、一時記憶サーバに転送されてもよい。記憶サーバは、一時記憶サーバを用いて交換されてもよい。
2014531668.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のコンピュータ可読媒体であって、
１つ以上のプロセッサによって実行されるときに、前記１つ以上のプロセッサに、
複数の記憶装置を複数のシーケンスに分割することと、
前記複数のシーケンスに関連付けられた前記複数の記憶装置を複数の仮想ノードグループに分割することと、
データを前記複数の仮想ノードグループのうちの１つの仮想ノードグループの記憶装置に転送することと、
前記データが前記記憶装置のうちの１つの記憶装置に無事に転送されていないと判定することと、
前記データを一時記憶装置に転送することと、
を含む行為を行うように指示するコンピュータ実行可能な指示を記憶する、１つ以上のコンピュータ可読媒体。
【請求項２】
前記行為が、
前記記憶装置が回復可能であるかを判定することと、
前記記憶装置が回復可能である場合、前記データを前記記憶装置に転送することと、
前記記憶装置が回復不可能である場合、前記一時記憶装置を用いて前記記憶装置を交換することと、
をさらに含む、請求項１に記載の１つ以上のコンピュータ可読媒体。
【請求項３】
前記仮想ノードグループが、前記一時記憶装置を含まない、請求項２に記載の１つ以上のコンピュータ可読媒体。
【請求項４】
特定のデータが所定の再試行回数以内に無事に前記記憶装置に転送される場合、前記記憶装置が回復可能である、請求項２に記載の１つ以上のコンピュータ可読媒体。
【請求項５】
前記特定のデータのサイズが、前記データのサイズよりも小さい、請求項４に記載の１つ以上のコンピュータ可読媒体。
【請求項６】
前記複数のシーケンスのそれぞれのシーケンスが、所定の数の記憶装置を含む、請求項１に記載の１つ以上のコンピュータ可読媒体。
【請求項７】
それぞれの仮想ノードグループが、それぞれ前記複数のシーケンスのうちの１つのシーケンスに属する一組の記憶装置を含む、請求項１に記載の１つ以上のコンピュータ可読媒体。
【請求項８】
前記データを前記記憶装置に転送することが、前記データを前記仮想ノードグループのそれぞれの記憶装置に書き込むことを含む、請求項１に記載の１つ以上のコンピュータ可読媒体。
【請求項９】
前記行為が、
前記記憶装置が回復不可能であると判定することと、
１つの使用可能な記憶装置が、回復不可能である記憶装置とは異なる、前記仮想ノードグループの前記１つの使用可能な記憶装置に記憶されたデータを前記一時記憶装置にコピーすることと、
前記一時記憶装置を用いて前記記憶装置を交換することと、
をさらに含む、請求項１に記載の１つ以上のコンピュータ可読媒体。
【請求項１０】
複数のシーケンスのそれぞれのシーケンスが、所定の数の記憶サーバを含む、前記複数の記憶サーバを複数のシーケンスに分割することと、
複数の仮想ノードグループのそれぞれの仮想ノードグループが、前記複数のシーケンスの一組の記憶サーバを含む、前記複数の記憶サーバを前記複数の仮想ノードグループに分割することと、
データを前記複数の仮想ノードグループのうちの１つの仮想ノードグループの記憶サーバに転送することと、
前記記憶サーバに関連した故障を判定することと、
前記データを前記仮想ノードグループの残りの記憶サーバおよび一時記憶サーバに転送することと、
を含む、方法。
【請求項１１】
前記故障が永久的であると判定することと、
前記一時サーバを用いて前記記憶サーバを交換することと、
をさらに含む、請求項１０に記載の方法。
【請求項１２】
１つの使用可能な記憶サーバが、前記記憶サーバとは異なる、前記仮想ノードグループの前記１つの使用可能な記憶サーバに記憶されたデータを一時記憶サーバにコピーすることをさらに含む、請求項１１に記載の方法。
【請求項１３】
特定のデータが所定の再試行回数以内に無事に前記記憶サーバに転送されない場合、故障が、永久的である、請求項１１に記載の方法。
【請求項１４】
前記一時サーバが、所定の規則に基づいて選択され、前記仮想ノードグループが、前記一時サーバを含まない、請求項１０に記載の方法。
【請求項１５】
前記データを前記記憶サーバに転送することが、前記データを前記仮想ノードグループのそれぞれの記憶サーバに書き込むことを含む、請求項１０に記載の方法。
【請求項１６】
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行され得る複数のコンポーネントを維持するためのメモリと、
を備える、コンピューティングデバイスであって、前記複数のコンポーネントが、
複数の記憶サーバを複数のシーケンスに分割することと、
前記複数のシーケンスに関連付けられた前記複数の記憶サーバを複数の仮想ノードグループに分割することと、
を行うように構成されるグループ化管理ユニットと：
データを前記複数の仮想ノードグループのうちの１つの仮想ノードグループの１つの記憶サーバに転送することと、
前記仮想ノードグループの前記記憶サーバの故障が判定され、かつ
所定の再試行回数の前記仮想ノードグループへの前記データ転送が失敗した後に、
前記データを一時記憶サーバに転送することと、
を行うように構成されるデータルーティングユニットと、を備える、
コンピューティングデバイス。
【請求項１７】
前記記憶サーバが回復したと判定された後に、前記データを前記記憶サーバに転送するように構成されるデータ移行ユニットをさらに備える、請求項１６に記載のデバイス。
【請求項１８】
前記記憶サーバが回復不可能であると判定された後に、前記一時記憶サーバを用いて前記記憶サーバを交換するように構成されるデータ移行ユニットをさらに備える、請求項１６に記載のデバイス。
【請求項１９】
特定のデータが、さらなる所定の再試行回数以内に無事に前記記憶サーバに転送されない場合、前記記憶サーバが、回復不可能であると判定される、請求項１８に記載のデバイス。
【請求項２０】
前記複数のシーケンスのそれぞれのシーケンスが、所定の数の記憶サーバを含み、それぞれの仮想ノードグループが、それぞれ前記複数のシーケンスのうちの１つのシーケンスに含まれる一組の記憶サーバを含み、前記仮想ノードグループが、前記一時記憶サーバを含まない、請求項１６に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は２０１１年９月２３日に出願された中国特許出願第２０１１１０２８５８０２．８号で「分散型記憶システムの管理装置および方法」に対して優先を主張し、またその内容は参照することによって本明細書に全体的に組み込まれている。
【０００２】
本開示は分散型記憶技術の分野に関する。具体的に、本開示は分散型記憶システムを管理するためのデバイスおよび方法に関する。
【背景技術】
【０００３】
従来の記憶システムはデータを記憶するために記憶サーバを集中させる。集中サーバを使用する従来の記憶システムはいくつかの不利な点がある（例えば、低い性能、信頼性およびセキュリティ）。最近、これらの不利な点を乗り越えるために分散型記憶システムが開発されてきた。拡張可能なシステムとして、分散型記憶システムは位置ベースのサーバを使用し記憶の負担を共通する。しかし、ある場合には、例えばサーバ停止、メンテナンス停止またはネットワーク故障の場合に、分散型記憶システムは使用不可能となることがある。既存の技術はこれらの状況に対応する解決策を提供するが、これらの解決策は現行の分散型記憶システムを複雑にするため、結果としては記憶システムの性能が低くなってしまう（例えば長い待ち時間および低い処理量）。
【発明の概要】
【０００４】
本概要は、以下の詳細な説明にさらに説明される概念の一部を簡単な形で紹介するために提供されている。本概要は、請求された内容において全ての重要な特徴または基本的な特徴を特定するつもりでもなく、請求された内容の範囲を決定するための補助として単独に使用するつもりでもない。例えば、用語「手法」とは、デバイス（複数を含む）、システム（複数を含む）、方法（複数を含む）、および／またはコンピュータ可読の指示を、上記の文脈および本開示全体により許容される限り、参照し得る。
【０００５】
本明細書は分散型記憶装置を管理する手法を説明する。該記憶装置は複数のシーケンスおよび複数の仮想ノードグループに分けてもよい。いくつかの実施形態において、該複数のシーケンスのそれぞれのシーケンスは所定の数の記憶サーバを含んでもよく、またそれぞれの仮想ノードグループは、該複数のシーケンスの一組の記憶サーバを含んでもよい。データは仮想ノードグループの記憶装置に転送してもよい。記憶装置は、データが所定の再試行回数以内に記憶装置に無事に転送されない場合に使用不可能だと決定することがある。その際は、データを一時記憶装置に転送してもよい。
【０００６】
いくつかの側面において、さらにデータが所定の再試行回数以内に記憶装置に無事に転送されない場合に記憶装置は回復不可能であると決定してもよい。その際は該記憶装置を一時記憶装置で交換してもよい。
【図面の簡単な説明】
【０００７】
詳細な説明は図面とともに記載される。異なる図面において同一の参照番号を使用時、同様または同一のものを示す。
【図１】は、分散型記憶管理のためのデバイスを含む例示のシステムに関するブロック図である。
【図２】は、図１のデバイスを使用し分散型記憶を管理するための例示の過程に関する流れ図である。
【図３】は、図１のデバイスを使用し記憶サーバの使用性を判定する、別の例示の過程に関する流れ図である。
【発明を実施するための形態】
【０００８】
下記の説明は本開示の特定の実施例を説明する。本明細書における実施例は例示のためだけで、本開示に制限を付けるつもりではない。
【０００９】
図１は分散型記憶を管理可能な例示のシステム１００に関するブロック図である。システム１００は、デバイス１０２および複数の記憶装置１０４を備え得る。デバイス１０２は、記憶装置１０４を管理し得る。デバイス１０２は、任意の好適なコンピューティングデバイス（複数を含む）として構成され得る。１つの例示の構成において、デバイス１０２は、１つ以上のプロセッサ１０６、入力／出力インターフェース１０８、ネットワークインターフェース１１０、およびメモリ１１２を備える。
【００１０】
メモリ１１２はランダムアクセスメモリ（ＲＡＭ）のような揮発性メモリ、および／または読み出し専用メモリ（ＲＯＭ）もしくはフラッシュＲＡＭのような不揮発性メモリの形でコンピュータ可読媒体を備え得る。メモリ１１２はコンピュータ可読媒体の一例である。
【００１１】
コンピュータ可読媒体は、コンピュータ可読指示、データ構造体、プログラムモジュール、またはその他のデータ等の情報の記憶に対する方法または技術により実装した、揮発性および不揮発性、また除去可能および除去不可能な媒体を含む。コンピュータ記憶媒体の例として、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、その他のランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的消去可能読み出しメモリ（ＥＥＰＲＯＭ）、フラッシュメモリもしくはその他のメモリ技術、コンパクトディスク読み出しメモリ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）もしくはその他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくはその他の磁気記憶デバイス、またはコンピューティングデバイスによるアクセスに関する情報を記憶するために使用され得る任意の他の非送信媒体が挙げられるが、これらに限定されない。本明細書において定義されるように、コンピュータ可読媒体は変調データ信号およびキャリア波等の一過性媒体を含まない。
【００１２】
メモリ１１２をもう少し具体的に見てみると、メモリ１１２はグループ管理ユニット１１４を記憶し得る。グループ管理ユニット１１４は記憶装置１０４を管理し得る。いくつかの実施形態において、記憶装置は記憶サーバであり得る。図示実施形態において、記憶装置１０４は複数の記憶装置（すなわち、記憶装置１、記憶装置２、．．．記憶装置Ｉ）および複数の一時ユニット（すなわち、一時記憶装置１、一時記憶装置２、．．．一時記憶装置Ｋ）を備え得、ここでＩおよびＫは整数であり、２より大きい。
【００１３】
システム１００において、グループ管理ユニット１１４は記憶装置１０４から複数の記憶装置を選択し、これらの複数の記憶装置を複数のシーケンスに分割し得る。例えば、記憶装置１０４がＮの記憶装置を備え、Ｎは整数である場合を想定してみる。グループ管理ユニット１１４はＭ個の記憶サーバを選択し、ｘのピアシーケンスに分割しえる。いくつかの実施形態において、それぞれのピアシーケンスは同一の所定の数の記憶サーバを備え得る。別の実施形態においては、個別のピアシーケンスは、様々な数の記憶サーバを備え得る。
【００１４】
Ｍ個の記憶サーバを選択した後、グループ管理ユニット１１４は選択されたＭ個の記憶サーバをｙの仮想ノードグループに分割し得る。いくつかの実施形態において、それぞれの仮想ノードグループは、異なるピアシーケンスに所属するｚの記憶サーバを含み得る。いくつかの実施形態において、それぞれの個別の仮想ノードグループは同一の数の記憶サーバを含み得る。別の実施形態においては、それぞれの個別の仮想ノードグループは異なる数の記憶サーバを含み得る。ここでは、Ｎ、Ｍ、ｘ、ｙおよびｚは整数であり、以下の条件を満たすものである：Ｎ≧３、２≦Ｍ＜Ｎ、ｘ≧２、ｙ≧１、ｘ・ｙ≧Ｍ（「・」は乗算を表す）および２≦ｚ≦ｘ。いくつかの実施形態において、Ｍ個の記憶サーバを選択した後、グループ管理ユニット１１４はＮの記憶サーバの残りの記憶サーバを一時記憶サーバとして指定し得る。
【００１５】
いくつかの実施形態において、それぞれの仮想ノードグループの記憶サーバは異なるピアシーケンスに所属し得る。これらの場合は、ｘ、ｙおよびＭは以下の条件を満たすことがある：Ｍ＝ｘ・ｙおよびｚ＝ｘ。例えば、選択されたＭ個の記憶サーバは以下に示した複合配列ａ［ｘ］［ｙ］で表し得る：
【００１６】
【数１】
2014531668.tif 000003
【００１７】
以上に例示したように、Ｍ個の記憶サーバはそれぞれに配列ａ［ｘ］［ｙ］の配列素子として表し得る。別の実施形態においては、該配列は、Ｍ＜ｘ・ｙの場合に１つ以上の空素子を含み得る。これらの場合は、個別の仮想ノードグループ内の記憶サーバの数が異なる。
【００１８】
話を単純化するために、別途特定されない限り、以下の説明は全て、個別のピアシーケンス内の記憶サーバの数が同一であるというシナリオに基づいている。これらの場合において、上の配列ａ［ｘ］［ｙ］を例として用いて、Ｍ個の記憶サーバは、ｘのピアシーケンスに分割される。例えば、以上例としての配列において、１つ目およびｘ目のピアシーケンス内の記憶サーバに対応する配列素子はそれぞれ［ａ１１，１２，ａ１ｙ］および［ａｘ１，ａｘ２，ａｘｙ］であり、また１つ目およびｙ目の仮想ノードグループ内の記憶サーバに対応する配列素子はそれぞれ［ａ１１，ａ２１，ａｘ１］および［ａ１ｙ，ａ２ｙ，ａｘｙ］である。
【００１９】
いくつかの実施形態において、メモリ１１２はデータ書き込みユニット１１６およびデータ読み出しユニット１１８も含み得る。データ書き込みユニット１１６はデータを仮想ノードグループ内の記憶サーバに書き込み得る。いくつかの実施形態において、データ書き込みユニット１１６はデータを仮想ノードグループ内のそれぞれの記憶サーバに書き込み得る。これらの場合において、仮想ノードグループは、無作為に選択され得るか、または所定の規則に基づいて選択され得る。仮想ノードグループ内の記憶サーバの一部が使用不可能である場合（例えば、書き込み／読み出し要求に反応しない場合）、データ書き込みユニット１１６はデータを、仮想ノードグループ内の残りの使用可能な記憶サーバおよび以上説明されたようにグループ管理ユニット１１４に指定された一時記憶サーバに書き込み得る。
【００２０】
データ読み出しユニット１１８は、データが書き込まれた仮想ノードグループ内のいずれかの使用可能な記憶サーバから読み出し得る。いくつかの実施形態において、仮想ノードグループを選択し得、データを仮想ノードグループ内の記憶サーバに書き込み得る。例えば、データ書き込みユニット１１６は仮想ノードグループ内のそれぞれの記憶サーバに書き込み得る。したがって、全ての記憶サーバが使用可能な場合、個別のピアシーケンスのメンバー記憶サーバに記憶されたデータは同一のものである。
【００２１】
仮想ノードグループ内の記憶サーバが使用不可能である場合、使用不可能な記憶サーバに書き込まれるデータは、一時記憶サーバに書き込まれてもよい。また、該データは、仮想ノードグループの残りの記憶サーバに書き込まれてもよい。記憶サーバが使用可能になり、したがって、回復する場合、データは、記憶サーバに戻し転送されてもよい。ある場合には、データは、その後、一時記憶サーバから削除されてもよい。
【００２２】
いくつかの実施形態において、データ読み出しの間にデータ読み出しユニット１１８は、データが書き込まれた仮想ノードグループから１つの記憶サーバを無作為に選択し得る。別の実施形態においては、記憶サーバは所定の選択アルゴリズムを使用し選択し得る。
【００２３】
いくつかの実施形態において、メモリはデータ移行ユニット１２０、再試行制御ユニット１２２、故障評価ユニット１２４およびデータルーティングユニット１２６を含み得る。いくつかの場合は、データ移行ユニット１２０は、一時記憶データ内のデータを故障後に回復した記憶サーバに戻し転送し得る。いくつかの別の実施形態においては、使用不可能な記憶サーバは回復できない。これらの場合は、データ移行ユニット１２０は仮想ノードグループ内の他の使用可能な記憶サーバ内のデータを一時記憶サーバに転送するかコピーし、一時記憶を使用し使用不可能な記憶サーバを交換し得る。
【００２４】
該一時記憶サーバは少なくとも２つの目的で機能し得る。一時記憶サーバは、記憶サーバが使用不可能である期間中に一時データ記憶に使用し得る。記憶サーバが回復するとデータは戻し転送され得る。さらに、一時記憶サーバは、回復不可能な記憶サーバの代わりに使用され得る。使用不可能な記憶サーバが回復不可能になり使用できない場合、対応する仮想ノードグループに関連付けられた他のピアシーケンス内の記憶サーバからのデータは、回復不可能な記憶サーバを交換するために一時記憶サーバに移動し得る。したがって、一時記憶サーバは、仮想ノードグループおよびピアシーケンス内の回復不可能な記憶サーバの役割のみならず、回復不可能な記憶サーバの機能性（すなわち、読み出しおよび書き込み）も交換し得る。
【００２５】
いくつかの実施形態において、再試行制御ユニット１２２はデータ書き込みおよび読み出しの再試行の数を制御し得る。再試行制御ユニット１２２は記憶サーバ故障（例えば書き込みおよび読み出し要求に対して反応しない場合）後にデータ書き込みユニット１１６およびデータ読み出しユニット１１８がデータ書き込みおよび読み出しを実行するために所定の数を判定し得る。故障評価ユニット１２４は、再試行制御ユニット１２２が再試行の数が所定の数に至ったと判定した場合に、記憶サーバが使用不可能と決定し得る。その後、故障評価ユニット１２４は、記憶サーバを再検査するように再試行制御ユニット１２２に対して指示し得る。再試行制御ユニット１２２は、記憶サーバが使用不可能と判定された後にデータ書き込みおよび読み出しを実行するためにデータ書き込みユニット１１６およびデータ読み出しユニット１１８に対してさらなる所定の数を特定し得る。再検査の上で、故障評価ユニット１２４はさらなる所定の再試行の数に至って記憶サーバを未だに書き込み／読み出し不可能能の場合に記憶が回復不可能であると判定し得る。故障評価ユニット１２４は、一時記憶サーバを使用し記憶サーバを交換するために、データ移行ユニット１２０に対して評価を送信し得る。
【００２６】
上記の説明に従って、本開示の実施形態におけるデバイス１０２が一瞬の故障、一時故障および永久故障に対処する処理仕組みを提供することを述べる。いくつかの実施形態において、一瞬の故障とは、アプリケーションサーバ（例えば、アプリケーションプログラム）がとても短い期間（例えば、一秒未満）で、一瞬のネットワークダウンタイムまたはその他の理由で記憶サーバに接続出来ないことを意味し得る。したがって、再試行制御ユニット１２２は定数の読み出しおよび書き込み要求後にデータ書き込みユニット１１６またはデータ読み出しユニット１１８がアプリケーションサーバに再度接続することを許可し得る。アプリケーションサーバ（例えば、アプリケーションプログラム）の機能性および使用体験に影響を及ぼさないように再試行の回数は少なくてもよく、２つの再試行の間の時間間隔が存在しなくてもよい。
【００２７】
いくつかの実施形態において、一時故障とは、アップグレード、セキュリティアップデートまたはその他の理由で記憶サーバが一時的に使用不可能となり、ある時間が経つと記憶サーバは再び使用可能であることを意味し得る。永久故障とは、ハードウェア損傷によるデータ損失を意味し得、したがって、記憶サーバは、使用不可能となる。
【００２８】
例えば、再試行制御ユニット１２２に制御される再試行の数が所定の数に至った後に、故障評価ユニット１２４は、対応する記憶サーバが故障となった（使用不可能）を判定し、データ書き込みユニット１１６およびデータ読み出しユニット１１８に対して評価結果を送信し得る。その後、上記に説明されたように、データ書き込み操作を、故障した記憶サーバに対応する仮想ノードグループ内の残りの使用可能な記憶サーバに対して実行し得る。これらの場合は、データ読み出し操作は、故障した記憶サーバに対応する仮想ノードグループ内のいずれかの記憶サーバに対して実行し得る。故障評価ユニット１２４は再試行制御ユニット１２２を使用しさらなる所定の数に基づいて記憶サーバの状態を再検査し得る。再検査の結果として使用可能となった場合（それは、記憶サーバは「一時故障」があって使用のために回復させられたことを意味する）、故障評価ユニット１２４は、一時記憶サーバ内のデータを回復させられた記憶サーバに転送または移行するようにデータ移行ユニット１２０に要求し得る。故障評価ユニット１２４が、対応記憶サーバが使用不可能であり再試行の数がさらなる所定の数に至ったこと（それは記憶サーバが「永久故障」の状態にあることを意味する）を検査で確認できたら、故障評価ユニット１２４は一部または全てのデータを仮想ノードグループ（故障の記憶サーバが所属するもの）内の他の使用可能な記憶サーバから一時記憶サーバにコピーし始めるように、データ移行ユニット１２０に要求し得る。その後、一時記憶サーバは回復できない記憶サーバを交換し得る。
【００２９】
いくつかの実施形態において、再試行制御ユニット１２２が、さらなる所定の数に基づいて記憶サーバの状態を再検査する際に、再試行制御ユニット１２２は、データ書き込みユニット１１６およびデータ読み出しユニット１１８をそれぞれに使用し、繰り返して書き込みまたは読み出し操作を再試行し得る。再試行が成功するか、失敗するかによって、故障評価ユニット１２４は記憶サーバが使用できるように回復したかどうかを決定し得る。一瞬の故障のシナリオにおいて、データ読み出しおよび書き込みに使用するデータは読み出しまたは書き込みに成功できなかったデータであり得る。別の実施形態において、再試行用のデータは読み出しまたは書き込みに成功できなかったデータよりサイズが小さい所定のテストデータであり得る。
【００３０】
いくつかの実施形態において、所定の数に比較するとさらなる所定の数の方がしばしば大きくて、再試行の２回毎に対して定数の期間を設定可能である。例えば、さらなる所定の数の頻度で再試行の回数が何万回まで、そして何十万回までも至ることがあり、再検査は継続的に数秒毎に繰り返し得る。一時故障および永久故障は、人間により制御（例えば、アップグレード、セキュリティアップデート）または調査（例えば、ハードウェア故障）可能ないくつかのイベントに起因し得る。したがって、故障評価ユニット１２４は、一時故障が回復可能なのか、永久故障に繋がるのかを判定するために追加の方法を使用し得る。いくつかの実施形態においては、故障評価ユニット１２４により管理される記憶サーバステータス表が、例えばユーザーからの入力に応えて選択されることがある。例えば、ユーザーが記憶サーバを選択したことに応えてステータスを「一時故障」、「使用可能」、「永久故障」等に変更し得る。
【００３１】
いくつかの実施形態において、データルーティングユニット１２６は、データを書き込む際にデータ書き込みユニット１１６により、また読み出しの際にデータ読み出しユニット１１８により選択された仮想ノードグループを特定し得る。いくつかの実施形態において、ルートの効率を向上させるため、データルーティングユニット１２６は上記に説明された配列ａ［ｘ］［ｙ］の方法を使用し記憶サーバを管理し得る。例えば、データルーティングユニット１２６は、仮想ノードグループを選択するためのルート選択サブユニットも含む。ルート選択サブユニットはｙの仮想ノードグループを管理するために０、１、ｙ−１のシリアル番号を含み得る。書き込むデータのハッシュ値に基づいて、ルート選択サブユニットはｙを分析し［０，ｙ−１］から値を取得し、その後、ｙの分析から取得された値に対応するシリアル番号を持つ仮想ノードグループを選択し得る。ルート選択サブユニットは選択された仮想ノードグループを、データ書き込みにおいてデータ書き込みユニットの仮想ノードグループとして設定し得る。同様に読み出すデータのハッシュ値に基づいて、ルート選択サブユニットはｙを分析し［０，ｙ−１］から値を取得し、ｙの分析から取得された値に対応するシリアル番号を持つ仮想ノードグループを選択し、その後、選択された仮想ノードグループを、データ読み出しにおいてデータ読み出しユニットの仮想ノードグループとして設定し得る。いくつかの実施形態において、ルート選択サブユニットは書き込む／読み出すデータのハッシュ値Ｍｏｄ  ｙを使用し［０，ｙ−１］から値を取得し得る。
【００３２】
ここでは、記憶原理に基づいて、ハッシュ値の一意性の理由で、選択された仮想ノードグループにデータルーティングユニット１２６が書き込むデータは選択された仮想ノードグループでデータルーティングユニット１２６が読み出す同じデータと一貫性がある。これは、ある仮想ノードグループに無作為に書き込むデータが同じ仮想ノードグループから正確に読み出せることを保証できるであろう。上記の過程からもう一歩先に進むと、該データは無作為にある一定の仮想ノードグループに割り当てることができ、該仮想ノードグループ内のピアシーケンスに所属する記憶サーバに書き込み得る。したがって、仮想ノードグループの分離は分散型記憶システムのロードバランスを保持することを保証する。また、ピアシーケンスの分離はそれぞれのピアシーケンス内のデータバックアップを保持／保証できることを保証する。いくつかの実施形態が仮想ノードグループを選択するための計算方法を提供するが、別の実施形態はより複雑な計算方法を提供し得ることを述べる。
【００３３】
いくつかの実施形態において、デバイス１０２はデータ書き込みユニット１１６、データ読み出しユニット１１８およびデータルーティングユニット１２６を備え得る。これらのコンポーネントはアプリケーションサーバ内にインストールし、記憶システムのクライアントとして使用し得る。しかしながら、グループ管理ユニット１１４、データ移行ユニット１２０、再試行制御ユニット１２２および故障評価ユニット１２４は記憶サーバおよびアプリケーションサーバと異なる管理サーバに個別にインストールし得る。これらの場合は、記憶サーバおよびアプリケーションサーバの間にミッドルウェア／仲介として使用し得る。位置ベースの構成はデバイス１０２内の様々なユニットの機能的な特徴に影響を及ぼさないことがあると述べる。
【００３４】
図２は図１に記載のデバイス１０２を使用し分散型記憶を管理する例示の過程に関する流れ図である。２０２において、デバイス１０２は記憶装置１０４を複数のシーケンスに分割し得る。いくつかの実施形態において、Ｍ個の記憶サーバはｘのピアシーケンスに分割しｙの仮想ノードグループを形成し得る。いくつかの実施形態において、それぞれの仮想ノードグループは異なるピアシーケンスに所属するｚの記憶サーバを備え、残りのＮ−Ｍ個の記憶サーバは一時記憶サーバとして指定し得る。例えば、Ｍ個の記憶サーバはＮの記憶サーバのうちに選択し得る。その後、これらの選択された記憶サーバはｘのピアシーケンスに分割し、ここでそれぞれのピアシーケンスは同じ定数の記憶サーバを備え得る。別の実施形態においては、個別のピアシーケンスが様々な数の記憶サーバを備え得る。
【００３５】
２０４において、デバイス１０２はピアシーケンスに基づいて仮想ノードグループを形成し得る。いくつかの実施形態において、Ｍ個のサーバはｙの仮想ノードグループに分割し得る。いくつかの場合は、それぞれの仮想ノードグループが異なるピアシーケンスに所属するｘの記憶サーバを備え得る。残りのＮ−Ｍ個の記憶サーバは一時記憶サーバとして指定し得る。ここでは、Ｎ、Ｍ、ｘおよびｙは整数であり、以下の条件を満たす：Ｎ≧３、２≦Ｍ＜Ｎ、ｘ≧２、ｙ≧１、ｘ・ｙ≧Ｍ（「・」は乗算を意味する）、またｚは自然数の変数であり、以下の条件を満たす：２＜ｚ＜ｘ。別の実施形態において、ｚは整数であり得るのでそれぞれの仮想ノードグループ内のサーバの数が同一である。例えば、それぞれの仮想ノードグループは異なるピアシーケンスに所属する記憶サーバを有し得、そこでｘ、ｙ、Ｍの値が以下の条件を満たす：Ｍ＝ｘ・ｙおよびｚ＝ｘ。
【００３６】
２０６において、デバイス１０２は操作がデータ書き込みかデータ読み出しかを判定し得る。過程がデータ書き込みの場合（すなわち、「データ書き込み」の分枝である場合）、デバイス１０２は、２０８でデータの記憶のために選択された仮想ノードグループの記憶サーバにデータを書き込むようにデータ書き込みユニット１１６に指示し得る。いくつかの実施形態において、データは選択された仮想ノードグループのそれぞれの記憶サーバに書き込み得る。該仮想ノードグループ内の記憶サーバが故障または使用不可能となった場合は、記憶サーバに書き込むデータは選択された一時記憶サーバに書き込み得、一方データは仮想ノードグループの残りの使用可能な記憶サーバに書き込むことも可能である。記憶サーバが使用できるように回復する際は、データを戻す。
【００３７】
過程がデータ読み出しの場合（すなわち、「データ読み出し」分枝の場合）、デバイス１０２はデータを仮想ノードグループから読み出すようにデータ読み出しユニット１１８に指示し得る。いくつかの実施形態において、デバイス１０２はデータが書き込まれた仮想ノードグループから無作為に記憶サーバを選択し得る。いくつかの実施形態において、ロードバランスを達成するために、データが書き込まれた仮想ノードグループを無作為に選択し得る。別の実施形態において、データ読み出し用の仮想ノードグループは所定の選択アルゴリズムを使用し選択し得る。
【００３８】
図３は図１に記載のデバイス１０２を使用し記憶サーバの使用性を判定する、別の例示の過程に関する流れ図である。３０２において、デバイス１０２は記憶サーバの故障という判定に応えて書き込みおよび／または読み出し過程を繰り返し得る。３０４にといて、システムは繰り返した操作が成功したかどうかを判定し得る。成功の場合（すなわち、操作３０４の「はい」分枝の場合）、デバイス１０２は次の書き込みおよび／または読み出し操作を実行し得る。失敗の場合（すなわち、操作３０４の「いいえ」分枝の場合）、デバイス１０２は３０８で何回その過程を繰り返したかを判定し得る。過程を繰り返した回数が所定の回数より少ない場合（すなわち、操作３０８の「いいえ」分枝の場合）、デバイス１０２は操作３０２〜３０６を必要に応じて操作３０６を含むループ過程（３０８から３０２に戻る点線を参照）によって実行し得る。
【００３９】
過程の繰り返し回数が所定の回数に比べて多い場合または同一の場合（すなわち、操作３０８の「はい」分枝の場合）、デバイス１０２は３１０で記憶サーバが使用不可能であると判定し得る。上記にも説明されたように、データ書き込み操作は故障の記憶サーバに対応する仮想ノードグループの残りの使用可能な記憶サーバに、また一時記憶サーバにも実行し得る。別の実施形態において、データ読み出し操作は故障記憶サーバに対応する仮想ノードグループ内の使用可能な記憶サーバの１つで実行し得る。
【００４０】
３１２において、デバイス１０２は使用不可能と判定された記憶サーバを再検査し得る。３１４において、デバイス１０２は記憶サーバが回復可能かどうかを判定し得る。例えば、使用不可能な記憶サーバが「一時故障」の状態に入って、使用できるように回復させられたがそれはサーバアップグレードまたはセキュリティアップデートによるものであり得る例を挙げる。その後、デバイス１０２は、データを一時記憶サーバから回復した記憶サーバに戻し転送し得る。いくつかの実施形態において、一時記憶サーバは記憶サーバのダウンタイム中に書き込まれたデータを含み得るので、データ移行操作は簡易で素早いものであり得る。
【００４１】
記憶サーバが回復した場合（すなわち、操作３１４の「はい」分枝の場合）、デバイス１０２は３１６でデータを一時記憶サーバから回復した記憶サーバへ移行させ得る。記憶サーバが回復しない場合（すなわち、操作３１４の「いいえ」分枝の場合）、デバイス１０２は３１８で記憶サーバを何回再検査したかを判定し得る。記憶サーバの再検査回数が所定の回数より少ない場合（すなわち、操作３１８の「いいえ」分枝の場合）、デバイス１０２は操作３１２〜３１４を必要に応じて操作３１６を含むループ過程（３１８から３１２に戻る点線を参照）によって実行し得る。記憶サーバの再検査回数が所定の回数に比べて多い場合または同一の場合（すなわち、操作３１８の「はい」分枝の場合）、デバイス１０２は、３２０で回復不可能な記憶サーバを、一時記憶サーバを使用し交換し得る。
【００４２】
例えば、デバイス１０２は、ハードウェア故障および他の極端な理由で記憶サーバが「永久故障」の状態に入ったと判定し得る。その後、デバイス１０２は（故障記憶サーバが所属する）仮想ノードグループ内の他の使用可能な記憶サーバから全てのデータを一時記憶サーバにコピーし、該一時記憶サーバを使用し故障された記憶サーバを交換し得る。いくつかの実施形態において、「永久故障」を評価するのに厳しい基準保持を保証するために、操作３０８の所定の数に比較すると、操作３１８の所定の数の方が大きくあり得る。いくつかの場合は、操作３１８の所定の数は２つの再試行の間に定数の期間（例えば、一日または数秒）を有し得る。
【００４３】
ピアシーケンスおよび仮想ノードグループの機能性は記憶サーバを分割し管理するためのものであることを述べる。普通の状況では、データは仮想ノードグループ内のそれぞれのピアシーケンスに所属する記憶サーバに書き込み可能であり、一方仮想ノードグループ内のいずれかの使用可能な記憶サーバからデータを読み出し可能である。ある記憶サーバが故障した場合は、データは依然として仮想ノードグループ内のいずれかの使用可能な記憶サーバから読み込み可能であり、一方データは同時に仮想ノードグループ内の全ての使用可能な記憶サーバおよび１つの一時記憶サーバへ書き込まれる（バックアップされる）。記憶サーバが一時故障の状態から戻って使用できるように回復した場合、該故障期間の間に書き込まれたデータは一時記憶サーバから該記憶サーバへ移行し戻し得る。記憶サーバが永久故障の状態に入って使用するように回復出来ない場合、デバイス１０２は使用可能な記憶サーバの１つからデータを一時記憶サーバにコピーし得、該一時記憶サーバでは故障した記憶サーバを交換する。
【００４４】
本明細書に記載の特定の例は本願の原理および実施形態を例示するためのものである。上記実施形態の説明は本開示の方法および概念を理解するのを補助するために考案された。しかしながら、当業者は本願に記載の概念特定の実施形態および出願範囲に変更を入れることは考えられるので、本明細書の内容は本願に制限を付けるものと認識すべきではない。
【図１】
2014531668.tif 000004
【図２】
2014531668.tif 000005
【図３】
2014531668.tif 000006
【国際調査報告】
2014531668.tif 000007
2014531668.tif 000008
2014531668.tif 000009