(57)【特許請求の範囲】
【請求項１】
分散ストレージシステムのキャッシュ処理方法であって、
ロックサーバノード装置が、ロッククライアントノードからデータストライプに関するロック通知を受信し、前記ロック通知を判断するステップと、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であるとき、前記ロックサーバノード装置が、前記ロッククライアントノードを前記データストライプのオーナとして記録し、前記ロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返すステップであって、前記リードロック通知はリードロックリクエストを有し、前記ライトロック通知はライトロックリクエストを有し、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含む、返すステップと、
前記ロック通知が最初に受信していないリードロック通知であるとき、前記ロックサーバノード装置が、前記ロッククライアントノードが前記データストライプのオーナ情報に従ってオーナのキャッシュから前記データストライプを読むように、前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返すステップと、
を有し、
前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含み、前記ロック成功レスポンスメッセージは、前記ロッククライアントノードが前記データストライプに対するリードロック又はライトロックを取得したことを示し、データストライプに対するリードロックを保持する前記ロッククライアントノードは前記データストライプをリード可能であり、データストライプに対するライトロックを保持するロッククライアントノードは前記データストライプをライト又は変更可能である方法。
【請求項２】
前記ロックサーバノード装置が、ロッククライアントノードからデータストライプに関するロック通知を受信した後、当該方法は更に、前記ロック通知がリードロック通知であるとき、前記ロックサーバノード装置が、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するステップを有する、請求項１記載の方法。
【請求項３】
前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返した後、当該方法は更に、
前記ロックサーバノード装置が、前記ロッククライアントノードから前記データストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するステップと、
前記ロックサーバノード装置が、前記データストライプのオーナを前記他のロッククライアントノードに変更するステップと、
前記ロックサーバノード装置が、前記ロッククライアントノードがローカルキャッシュから前記データストライプを削除し、前記他のロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナの変更の成功を示すレスポンスメッセージを前記ロッククライアントノードに返すステップと、
を有する、請求項１又は２記載の方法。
【請求項４】
分散ストレージシステムのキャッシュ処理方法であって、
ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をロックサーバノード装置に送信するステップであって、前記リードロック通知はリードロックリクエストを有し、前記ライトロック通知はライトロックリクエストを有する、送信するステップと、
前記ロッククライアントノードが、前記ロックサーバノード装置から前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信すると、前記ロッククライアントノードが、前記データストライプをキャッシュするステップであって、前記データストライプのオーナが前記ロッククライアントノードであることを示す前記レスポンスメッセージは更にロック成功レスポンスメッセージを有する、キャッシュするステップと、
前記ロッククライアントノードが前記ロックサーバノード装置から前記データストライプのオーナの識別情報ＩＤをレスポンスメッセージを介し受信すると、前記ロッククライアントノードが、前記データストライプオーナのＩＤと前記ロッククライアントノードのＩＤとを比較し、当該２つのＩＤが異なる場合、前記ロッククライアントノードが、前記データストライプオーナのＩＤに対応するロッククライアントノードのキャッシュから前記データストライプを読むステップと、
を有し、
前記データストライプのオーナの識別情報ＩＤを有する前記レスポンスメッセージは更に、前記ロック成功レスポンスメッセージを含み、前記ロック成功レスポンスメッセージは、前記ロッククライアントノードが前記データストライプに対するリードロック又はライトロックを取得したことを示し、データストライプに対するリードロックを保持する前記ロッククライアントノードは前記データストライプをリード可能であり、データストライプに対するライトロックを保持するロッククライアントノードは前記データストライプをライト又は変更可能である方法。
【請求項５】
前記ロッククライアントノードによって前記ロックサーバノード装置に送信されるロック通知が前記データストライプに関するライトロック通知である場合、前記ロッククライアントノードが、前記データストライプをキャッシュし、その後、前記ロックサーバノード装置が記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノード装置に送信するステップと更に有する、請求項４記載の方法。
【請求項６】
単位時間における前記ロッククライアントノードのキャッシュ削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記ロッククライアントノードが、前記ロックサーバノード装置が前記データストライプのオーナをターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記ロックサーバノード装置に送信するステップと、
前記ロッククライアントノードが、前記ロックサーバノード装置から前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信し、ローカルキャッシュから前記データストライプを削除し、前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプを前記ターゲットロッククライアントノードに送信するステップと、
を更に有する、請求項４乃至５何れか一項記載の方法。
【請求項７】
ロックサーバノード装置であって、
ロッククライアントノードからデータストライプに関するロック通知を受信するよう構成される受信部と、
前記ロック通知を判断するよう構成される判断部と、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であると前記判断部が判断すると、前記ロッククライアントノードを前記データストライプのオーナとして記録するよう構成される記録部と、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であると前記判断部が判断したとき、前記ロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返し、ここで、前記リードロック通知はリードロックリクエストを有し、前記ライトロック通知はライトロックリクエストを有し、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返すことは更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含み、前記ロック通知が最初に受信していないリードロック通知であると前記判断部が判断したとき、前記ロッククライアントノードが前記データストライプのオーナ情報に従ってオーナのキャッシュから前記データストライプを読むように、前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返し、ここで、前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返すことは、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含む、送信部と、
を有し、
前記ロック成功レスポンスメッセージは、前記ロッククライアントノードが前記データストライプに対するリードロック又はライトロックを取得したことを示し、データストライプに対してリードロックを保持する前記ロッククライアントノードは前記データストライプをリード可能であり、データストライプに対してライトロックを保持するロッククライアントノードは前記データストライプをライト又は変更可能であるロックサーバノード装置。
【請求項８】
前記判断部は、具体的には、前記ロック通知がリードロック通知であるとき、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するよう構成される、請求項７記載のロックサーバノード装置。
【請求項９】
前記受信部は更に、前記ロッククライアントノードから前記データストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するよう構成され、
前記記録部は更に、前記データストライプのオーナを前記他のロッククライアントノードに変更するよう構成され、
前記送信部は更に、前記ロッククライアントノードがローカルキャッシュから前記データストライプを削除し、前記他のロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナの変更の成功を示すレスポンスメッセージを前記ロッククライアントノードに返すよう構成される、請求項７又は８記載のロックサーバノード装置。
【請求項１０】
ロッククライアントノードであって、
データストライプに関するリードロック通知又はライトロック通知をロックサーバノード装置に送信するよう構成される送信部であって、前記リードロック通知はリードロックリクエストを有し、前記ライトロック通知はライトロックリクエストを有する、送信部と、
前記ロックサーバノード装置から前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信するか、又は前記ロックサーバノード装置から前記データストライプのオーナのＩＤをレスポンスメッセージを介し受信するよう構成される受信部であって、前記レスポンスメッセージはロック成功レスポンスメッセージを有し、前記ロック成功レスポンスメッセージは、前記ロッククライアントノードが前記データストライプに対するリードロック又はライトロックを取得したことを示し、データストライプに対してリードロックを保持する前記ロッククライアントノードは前記データストライプをリード可能であり、データストライプに対してライトロックを保持するロッククライアントノードは前記データストライプをライト又は変更可能である、受信部と、
前記データストライプオーナのＩＤと前記ロッククライアントノードのＩＤとを比較し、当該２つのＩＤが異なる場合、リードライト部を起動するよう構成される比較部と、
前記受信部が前記ロックサーバノード装置から、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信すると、前記データストライプをキャッシュするよう構成されるキャッシュ処理部と、
前記データストライプオーナのＩＤに対応するロッククライアントノードのキャッシュから前記データストライプを読むよう構成されるリードライト部と、
を有するノード。
【請求項１１】
前記送信部は更に、前記ロックサーバノード装置が記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストを前記ロックサーバノード装置に送信するよう構成される、請求項１０記載のノード。
【請求項１２】
前記キャッシュ処理部は更に、単位時間におけるキャッシュ削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージを前記ロックサーバノード装置に送信するよう前記送信部を制御するよう構成され、前記受信部により受信され、前記データストライプのオーナの変更の成功を示すレスポンスメッセージに従って、ローカルキャッシュから前記データストライプを削除し、前記データストライプを前記ターゲットロッククライアントノードに送信するよう前記送信部を制御するよう構成され、
前記送信部は更に、前記キャッシュ処理部の制御に従って、前記ロックサーバノード装置が前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記ロックサーバノード装置に送信するよう構成され、更に前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記キャッシュ処理部の制御に従って前記データストライプを前記ターゲットロッククライアントノードに送信するよう構成され、
前記受信部は更に、前記ロックサーバノード装置から前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信するよう構成される、請求項１０乃至１１何れか一項記載のノード。
【請求項１３】
コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、請求項１乃至３何れか一項記載の方法を実行するようロックサーバノード装置に指示するのに利用されるコンピュータ可読媒体。
【請求項１４】
コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、請求項４乃至６何れか一項記載の方法を実行するようロッククライアントノードに指示するのに利用されるコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ技術に関し、特に分散ストレージシステムのキャッシュ処理方法、ノード及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
分散ストレージシステムでは、複数のノード装置が、クラスタを形成するよう接続され、そこでは、複数のノード装置の全てがデータストレージ機能を有する。全てのノード装置は、フロントエンドネットワーク（Ｆｒｏｎｔ−Ｅｎｄ  Ｎｅｔｗｏｒｋ）及びバックエンドネットワーク（Ｂａｃｋ−Ｅｎｄ  Ｎｅｔｗｏｒｋ）を介し接続される。フロントエンドネットワークは、ユーザサービスと分散ストレージシステムとの間のリクエスト及びデータの交換のため利用され、バックエンドネットワークは、分散ストレージシステム内のノード装置間のリクエスト及びデータの交換のため利用される。
【０００３】
分散ストレージシステムでは、ユーザデータは、ストライプ（Ｓｔｒｉｐｅ）にストリップ処理され、その後、ストライプのデータストリップ（Ｓｔｒｉｐ）は、異なるノード装置のハードディスクに分散され、そこに格納される。ユーザデータにアクセスする際、アプリケーションサーバはまずフロントエンドネットワークを介し１つのノード装置にアクセスリクエストを送信し、その後、ノード装置は、バックエンドネットワークを介しユーザデータがローカルノード装置に配置されるデータストリップを読み、ディスクアレイ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋ，略してＲＡＩＤ）アルゴリズム又はイレージャコードアルゴリズムを用いることによって、データストリップをユーザデータに復元し、フロントエンドネットワークを介しアプリケーションサーバにユーザデータを返す。
【０００４】
上記のユーザデータアクセス処理では、キャッシュ処理技術が利用される。あるキャッシュ処理方法では、各ノード装置は、それのキャッシュにローカルノード装置のホットスポットデータブロックをキャッシュする。ノード装置がデータストリップを取得する必要があるとき、ノード装置は、ノード装置のキャッシュからデータストリップを構成するデータブロックを取得する必要がある。要求されるデータブロックがノード装置のキャッシュから取得できない場合、ノード装置は更に、ノード装置のハードディスクにアクセスし、ハードディスクからデータブロックを取得する必要がある。その後、ノード装置は、データストライプを取得するため、取得したデータブロックを集約、再構成及び冗長性チェックを実行する。他のキャッシュ処理方法では、各ノード装置は、それのキャッシュにノード装置により統計に従って取得されたホットスポットファイルデータストライプをキャッシュする。ノード装置がデータストライプを取得する必要があるとき、ノード装置はまず、自らのキャッシュからデータストライプを取得する。要求されるデータストライプがノード装置のキャッシュから取得できない場合、ノード装置は更に、次の他のノード装置からデータストライプを取得する必要がある。データストライプが当該他のノード装置のキャッシュから取得できない場合、ノード装置は、ノード装置のハードディスクからデータストライプを取得する必要がある。
【０００５】
現在、分散ストレージシステムにおいて採用されるデータキャッシュ処理技術は、上述した２つのキャッシュ処理方法の一方又はそれらの組み合わせである。分散ストレージシステムにおいて現在のキャッシュ処理方法を利用することによって、各ノード装置は、アクセス統計に従ってそれのハードディスクに格納されているコンテンツからホットスポットコンテンツを決定し、当該ホットスポットコンテンツをキャッシュにキャッシュする。各ノード装置はキャッシュ処理を独立に実行するため、同じコンテンツが異なるノード装置にキャッシュされる可能性がある。この結果、ノード装置のキャッシュ利用率は低くなる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一態様では、本発明は、従来技術の問題点を解消し、ノード装置のキャッシュ利用率を向上させるため、分散ストレージシステムのキャッシュ処理方法を提供する。
【０００７】
他の態様では、本発明は、従来技術の問題点を解消し、ノード装置のキャッシュ利用率を向上させるため、データストライプオーナサーバノード及びロッククライアントノードを提供する。
【０００８】
更なる他の態様では、本発明は、従来技術の問題点を解消し、ノード装置のキャッシュ利用率を向上させるため、コンピュータ可読媒体を提供する。
【課題を解決するための手段】
【０００９】
第１の態様では、本発明は、分散ストレージシステムのキャッシュ処理方法であって、
データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信し、前記ロック通知を判断するステップと、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であるとき、前記データストライプオーナサーバノードが、前記ロッククライアントノードを前記データストライプのオーナとして記録し、前記ロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返すステップと、
前記ロック通知が最初に受信していないリードロック通知であるとき、前記データストライプオーナサーバノードが、前記ロッククライアントノードが前記データストライプのオーナのキャッシュから前記データストライプを読むように、前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返すステップと、
を有する方法を提供する。
【００１０】
上記態様又は何れか可能な実現方法によると、
前記データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信した後、当該方法は更に、前記ロック通知がリードロック通知であるとき、前記データストライプオーナサーバノードが、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するステップを有する、実現方法が更に提供される。
【００１１】
上記態様又は何れか可能な実現方法によると、
前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返した後、当該方法は更に、
前記データストライプオーナサーバノードが、前記ロッククライアントノードから前記データストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するステップと、
前記データストライプオーナサーバノードが、前記データストライプのオーナを前記他のロッククライアントノードに変更するステップと、
【００１２】
前記データストライプオーナサーバノードが、前記ロッククライアントノードがローカルキャッシュから前記データストライプを削除し、前記他のロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナの変更の成功を示すレスポンスメッセージを前記ロッククライアントノードに返すステップと、
を有する、
実現方法が更に提供される。
【００１３】
上記態様又は何れか可能な実現方法によると、
前記データストライプオーナサーバノードがロックサーバノード装置に統合されるとき、
前記リードロック通知はリードロックリクエストを有し、
前記ライトロック通知はライトロックリクエストを有し、
前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含み、
前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含む、
実現方法が更に提供される。
【００１４】
他の態様では、本発明は、分散ストレージシステムのキャッシュ処理方法であって、
ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するステップと、
前記ロッククライアントノードが、前記データストライプオーナサーバノードから前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信すると、前記ロッククライアントノードが、前記データストライプをキャッシュするステップと、
前記ロッククライアントノードが前記データストライプオーナサーバノードから前記データストライプのオーナの識別情報ＩＤを受信すると、前記ロッククライアントノードが、前記データストライプオーナのＩＤと前記ロッククライアントノードのＩＤとを比較し、当該２つのＩＤが異なる場合、前記ロッククライアントノードが、前記データストライプオーナのＩＤに対応するロッククライアントノードのキャッシュから前記データストライプを読むステップと、
を有する方法を提供する。
【００１５】
上記態様又は何れか可能な実現方法によると、前記ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信した後、前記ロッククライアントノードが前記データストライプオーナサーバノードから前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信する前、当該方法は更に、前記データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、前記データストライプオーナサーバノードが、前記ロッククライアントノードを前記データストライプのオーナとして記録するステップを有する、
実現方法が更に提供される。
【００１６】
上記態様又は何れか可能な実現方法によると、当該方法は、
前記ロッククライアントノードによって前記オーナサーバノードに送信されるロック通知が前記データストライプに関するライトロック通知である場合、前記ロッククライアントノードが、前記データストライプをキャッシュし、その後、前記ロックサーバノードが前記記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信するステップと更に有する、
実現方法が更に提供される。
【００１７】
上記態様又は何れか可能な実現方法によると、前記ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信する前、当該方法は更に、
前記ロッククライアントノードが、アプリケーションサーバから前記データストライプに関するリードリクエスト又はライトリクエストを受信するステップと、
前記ロッククライアントノードが、前記データストライプに関するリードロック又はライトロックをローカルに検索するステップと、
前記データストライプに関するリードロック又はライトロックが検出された場合、前記データストライプに関するリードロック又はライトロックに従って前記データストライプのオーナを決定し、前記データストライプのオーナから前記データストライプを読むか、又は前記データストライプのオーナに前記データストライプを書き込むステップと、
前記データストライプに関するリードロック又はライトロックが検出されない場合、前記クロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するステップを実行するステップと、
を有する、
実現方法が更に提供される。
【００１８】
上記態様又は何れか可能な実現方法によると、当該方法は、
単位時間における前記ロッククライアントノードのキャッシュ削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記ロッククライアントノードが、前記データストライプオーナサーバノードが前記データストライプのオーナをターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記データストライプオーナサーバノードに送信するステップと、
前記ロッククライアントノードが、前記データストライプオーナサーバノードから前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信し、ローカルキャッシュから前記データストライプを削除し、前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプを前記ターゲットロッククライアントノードに送信するステップと、
を更に有する、
実現方法が更に提供される。
【００１９】
上記態様又は何れか可能な実現方法によると、前記ロッククライアントノードが、前記データストライプオーナのＩＤに対応するロッククライアントノードのキャッシュから前記データストライプを読むステップは、具体的には、
前記ロッククライアントノードが、前記データストライプオーナのＩＤに対応するロッククライアントノードに前記データストライプに関するリードリクエストを送信するステップを有し、これにより、前記データストライプオーナのＩＤに対応するロッククライアントノードが前記データストライプをローカルにキャッシュされているデータから検索し、前記データストライプが検出される場合、前記データストライプを前記ロッククライアントノードに返し、そうでない場合、前記分散ストレージシステムのロッククライアントノードから前記データストライプのデータストリップを読み、前記データストライプを構成し、前記データストライプを前記ロッククライアントノードに返す、
実現方法が更に提供される。
【００２０】
他の態様では、本発明は、データストライプオーナサーバノードであって、
ロッククライアントノードからデータストライプに関するロック通知を受信するよう構成される受信部と、
前記ロック通知を判断するよう構成される判断部と、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であると前記判断部が判断すると、前記ロッククライアントノードを前記データストライプのオーナとして記録するよう構成される記録部と、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であると前記判断部が判断したとき、前記ロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返し、前記ロック通知が最初に受信していないリードロック通知であると前記判断部が判断したとき、前記ロッククライアントノードが前記データストライプのオーナのキャッシュから前記データストライプを読むように、前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返す送信部と、
を有するノードを提供する。
【００２１】
上記態様又は何れか可能な実現方法によると、
前記判断部は、具体的には、前記ロック通知がリードロック通知であるとき、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するよう構成される、
実現方法が更に提供される。
【００２２】
上記態様又は何れか可能な実現方法によると、
前記受信部は更に、前記ロッククライアントノードから前記データストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するよう構成され、
前記記録部は更に、前記データストライプのオーナを前記他のロッククライアントノードに変更するよう構成され、
前記送信部は更に、前記ロッククライアントノードがローカルキャッシュから前記データストライプを削除し、前記他のロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナの変更の成功を示すレスポンスメッセージを前記ロッククライアントノードに返すよう構成される、実現方法が更に提供される。
【００２３】
上記態様又は何れか可能な実現方法によると、
前記データストライプオーナサーバノードがロックサーバノード装置に統合されるとき、
前記リードロック通知はリードロックリクエストを有し、
前記ライトロック通知はライトロックリクエストを有し、
前記送信部は更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すよう構成される、
実現方法が更に提供される。
【００２４】
他の態様では、本発明は、ロッククライアントノードであって、
データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するよう構成される送信部と、
前記データストライプオーナサーバノードから前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信するか、又は前記データストライプオーナサーバノードから前記データストライプのオーナのＩＤを受信するよう構成される受信部と、
前記データストライプオーナのＩＤと前記ロッククライアントノードのＩＤとを比較し、当該２つのＩＤが異なる場合、リードライト部を起動するよう構成される比較部と、
前記受信部が前記データストライプオーナサーバノードから、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信すると、前記データストライプをキャッシュするよう構成されるキャッシュ処理部と、
前記データストライプオーナのＩＤに対応するロッククライアントノードのキャッシュから前記データストライプを読むよう構成されるリードライト部と、
を有するノードを提供する。
【００２５】
上記態様又は何れか可能な実現方法によると、
前記送信部は更に、前記ロックサーバノードが記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信するよう構成される、
実現方法が更に提供される。
【００２６】
上記態様又は何れか可能な実現方法によると、ロッククライアントノードは、検索部を更に有し、
前記受信部は更に、アプリケーションサーバから前記データストライプに関するリードリクエスト又はライトリクエストを受信するよう構成され、
前記検索部は、前記データストライプに関するリードロック又はライトロックをローカルに検索し、前記データストライプに関するリードロック又はライトロックが検出された場合、前記データストライプに関するリードロック又はライトロックに従って前記データストライプのオーナを決定し、前記リードライト部を起動し、前記データストライプに関するリードロック又はライトロックが検出されない場合、前記送信部を起動するよう構成され、
前記リードライト部は更に、前記データストライプのオーナから前記データストライプを読むか、又は前記データストライプのオーナに前記データストライプを書き込むよう構成される、
実現方法が更に提供される。
【００２７】
上記態様又は何れか可能な実現方法によると、
前記キャッシュ処理部は更に、単位時間における削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージを前記データストライプオーナサーバノードに送信するよう前記送信部を制御するよう構成され、前記受信部により受信され、前記データストライプのオーナの変更の成功を示すレスポンスメッセージに従って、ローカルキャッシュから前記データストライプを削除し、前記データストライプを前記ターゲットロッククライアントノードに送信するよう前記送信部を制御するよう構成され、
前記送信部は更に、前記キャッシュ処理部の制御に従って、前記データストライプオーナサーバノードが前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記データストライプオーナサーバノードに送信するよう構成され、更に前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記キャッシュ処理部の制御に従って前記データストライプを前記ターゲットロッククライアントノードに送信するよう構成され、
前記受信部は更に、前記データストライプオーナサーバノードから前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信するよう構成される、
実現方法が更に提供される。
【００２８】
上記態様又は何れか可能な実現方法によると、
前記リードライト部は、具体的には前記データストライプオーナのＩＤに対応するロッククライアントノードが前記データストライプをローカルにキャッシュされたデータから検索するように、前記データストライプオーナのＩＤに対応するロッククライアントノードに前記データストライプに関するリードリクエストを送信し、前記データストライプが検出された場合、前記データストライプを前記リードライト部に返し、そうでない場合、分散ストレージシステムのロッククライアントノードから前記データストライプのデータストリップを読み、前記データストライプを構成し、前記データストライプを前記リードライト部に返すよう構成される、
実現方法が更に提供される。
【００２９】
他の態様では、本発明は、プロセッサ、メモリ、通信インタフェース及びバスを有するデータストライプオーナサーバノードであって、前記プロセッサ、前記メモリ及び前記通信インタフェースは、前記バスを介し通信し、前記メモリは、実行命令を格納するよう構成され、前記通信インタフェースは、第１ロッククライアントノードと第２ロッククライアントノードと通信するよう構成され、当該データストライプオーナサーバノードが実行中であるとき、前記プロセッサは、当該データストライプオーナサーバノードが上述した分散ストレージシステムのキャッシュ処理方法の何れか１つを実行するように、前記メモリにより格納されている実行命令を実行するデータストライプオーナサーバノードを提供する。
【００３０】
他の態様では、本発明は、プロセッサ、メモリ、通信インタフェース及びバスを有するロッククライアントノードであって、前記プロセッサ、前記メモリ及び前記通信インタフェースは、前記バスを介し通信し、前記メモリは、実行命令を格納するよう構成され、前記通信インタフェースは、データストライプオーナサーバノードと他のロッククライアントノードと通信するよう構成され、当該ロッククライアントノードが実行中であるとき、前記プロセッサは、当該ロッククライアントノードが上述した分散ストレージシステムのキャッシュ処理方法の何れか１つを実行するように、前記メモリにより格納されている実行命令を実行するロッククライアントノードを提供する。
【００３１】
他の態様では、本発明は、コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、上述した方法の何れか１つを実行するようロッククライアントノードに指示するのに利用されるコンピュータ可読媒体を提供する。
【００３２】
他の態様では、本発明は、コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、上述した方法の何れか１つを実行するようロッククライアントノードに指示するのに利用されるコンピュータ可読媒体を提供する。
【発明の効果】
【００３３】
上記概要から理解できるように、データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、データストライプオーナサーバノードは、当該通知を発信したロッククライアントノードをデータストライプのオーナとして記録し、ロッククライアントノードは当該データストライプをキャッシュし、最初に受信していないデータストライプに関するリードロック通知を受信すると、データストライプオーナサーバノードは、当該記録に従って当該通知を発信したロッククライアントノードにデータストライプのオーナを通知し、当該通知を発信したロッククライアントノードは、オーナのキャッシュからデータストライプを読む。データストライプオーナサーバノードは、１つのデータストライプが分散ストレージシステムにおいてそれのオーナに１回のみキャッシュされるように、データストライプのオーナを記録及び通知し、ロッククライアントノードは、オーナからデータストライプを読むことができる。これは、同一のデータストライプが異なるノード装置にキャッシュされるという問題を回避し、ノード装置のキャッシュ利用率を向上させる。
【図面の簡単な説明】
【００３４】
本発明の実施例又は従来技術の技術的手段をより明確に説明するため、以下において、実施例又は従来技術を説明するのに必要とされる添付図面が簡単に紹介される。明らかに、以下の説明の添付図面は、本発明の単なる一部の実施例を示し、当業者は、創作的な労力なくこれらの添付図面から他の図面を依然として導出してもよい。
【図１】図１は、本発明の実施例１による分散ストレージシステムの概略構成図である。
【図２ａ】図２ａは、本発明の実施例２による分散ストレージシステムのキャッシュ処理方法の概略フローチャートである。
【図２ｂ】図２ｂは、本発明の実施例２によるＮ個のデータストライプの属性情報の概略構成図である。
【図３】図３は、本発明の実施例３による分散ストレージシステムのキャッシュ処理方法の概略フローチャートである。
【図４】図４は、本発明の実施例４による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。
【図５】図５は、本発明による実施例５による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。
【図６】図６は、本発明による実施例６による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。
【図７】図７は、本発明による実施例７による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。
【図８】図８は、本発明による実施例８による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。
【図９】図９は、本発明の実施例９によるデータストライプオーナサーバノードの概略構成図である。
【図１０】図１０は、本発明の実施例１０によるロッククライアントノードの概略構成図である。
【図１１】図１１は、本発明の実施例１１によるデータストライプオーナサーバノードの概略構成図である。
【図１２】図１２は、本発明の実施例１２によるロッククライアントノードの概略構成図である。
【発明を実施するための形態】
【００３５】
以下において、本発明の実施例の技術的手段が、本発明の実施例の添付図面を参照して明確かつ完全に説明される。明らかに、説明される実施例は、本発明の実施例の全てでなく単なる一部である。創造的な努力なく本発明の実施例に基づき当業者により取得される他の全ての実施例は、本発明の保護範囲内に属する。
【００３６】
本発明の以降の実施例は、分散ストレージシステムのノード装置のハードディスクにデータが格納された後にデータがアクセスされる具体例としてキャッシュ処理を実行することによって説明される。
【００３７】
図１は、本発明の実施例１による分散ストレージシステムの概略構成図である。本発明の実施例１の分散ストレージシステムは、本発明の以降の実施例におけるキャッシュ処理方法に適用可能である。従来技術では、分散ストレージシステムは、複数のロッククライアントノードと複数のロックサーバノードとを有する。本発明の実施例１による分散ストレージシステムでは、１以上のデータストライプオーナサーバノードが、従来技術の分散ストレージシステムの基礎に追加される。１つの処理プロセスは、複数のロッククライアントノード、１つのロックサーバノード及び１つのデータストライプオーナサーバノードに関する。図１に示されるように、分散ストレージシステムにおける複数のロッククライアントノード、１つのロックサーバノード及び１つのデータストライプオーナサーバノードが図１に示され、他のロックサーバノード及び他のデータストライプオーナサーバノードは示されない。本発明の実施例では、ロッククライアントノード、ロックサーバノード及びデータストリップオーナノードは別々に設定されることが想定される。実際のアプリケーションでは、１つのロッククライアントノード、１つのロックサーバノード及び１つのデータストライプオーナサーバノードが、各ノード装置上で同時に設定され、各処理プロセスでは、１つのノード装置に設定されるロックサーバノードは、当該処理のロックサーバノードとして動作し、ノード装置に設定されるデータストライプオーナサーバノードは、当該処理のデータストライプオーナサーバノードとして動作する。
【００３８】
実際のアプリケーションでは、データストライプオーナサーバノード及びロックサーバノードは、別々に設定され、それら各自の機能を実行してもよい。あるいは、データストライプオーナサーバノード及びロックサーバノードは、組み合わせて設定されてもよく、すなわち、従来技術のロックサーバノードは、従来技術のロックサーバノードにより実行される処理に基づき本発明の実施例に開示されるデータストライプオーナサーバノードにより実行される処理を実行するため改良される。
【００３９】
データストライプオーナサーバノード及びロックサーバノードが別々に設定されるケースにおけるキャッシュ処理方法は、本発明の実施例２及び実施例３を用いることによって以下に説明される。
【００４０】
図２ａは、本発明の実施例２による分散ストレージシステムのためのキャッシュ処理方法の概略フローチャートである。図２に示されるように、当該方法は以下のプロセスを含む。
【００４１】
ステップ１０１：データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信し、当該ロック通知を判断する。
【００４２】
ステップ１０２：ロック通知が最初に受信したリードロック通知又はライトロック通知であるとき、データストライプオーナサーバノードが、ロッククライアントノードをデータストライプのオーナとして記録し、ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージをロッククライアントノードに返す。
【００４３】
当該ステップでは、データストライプオーナサーバノードは第１ロッククライアントノードからデータストライプに関して最初に受信したリードロック通知又は当該データストライプに関するライトロック通知を受信する。データストライプオーナサーバノードは、データストライプのオーナとして第１ロッククライアントノードを記録し、第１ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナが第１ロッククライアントノードであることを示すレスポンスメッセージを第１ロッククライアントノードに返す。ロックサーバノードからリードロック許可又はライトロック許可を取得した後、第１ロッククライアントノードは、オーナサーバノードにロック通知を送信し、ここで、当該通知は、ロックに対応するデータストライプの識別を搬送し、当該ロックがリードロックであるときはリードロック識別子、又は当該ロックがライトロックであるときはライトロック識別子を搬送し、当該ロック通知を通じて、第１ロッククライアントノードがデータストライプに関するリードロック又はライトロックを取得したことをオーナサーバノードに通知する。データストライプの属性情報は、データストライプオーナサーバノードに記録される。オーナサーバノードは、第１ロッククライアントノードにより送信されたロック通知を受信し、ロック通知に搬送されたデータストライプ識別に従ってデータストライプの記録されている属性情報を検索する。ロック通知がリードロック識別子を搬送し、データストライプに対応するリードロックがデータストライプの記録された属性情報に検出されない場合、オーナサーバノードは、データストライプに関するリードロック通知が最初に受信されたと判断する。
【００４４】
図２ｂは、本発明の実施例２のＮ個のデータストライプの属性情報の概略構成図である。図２ｂに示されるように、各データストライプの属性情報では、データストライプの識別（ｉｄｅｎｔｉｔｙ、略してＩＤ）が記録され、対応して、データストライプに対するロックを現在保持するロッククライアントノードのＩＤ、ロックタイプ及びデータストライプのオーナのＩＤが記録される。ロックタイプは、データストライプのロックがリードロック又はライトロックであることを示すのに利用される。データストライプに対するリードロックを保持するロッククライアントノードは、データストライプを読むことができ、データストライプに対するライトロックを保持するロッククライアントノードは、データストライプを書き込むか又は修正することができる。ライトロックは、リードロックに対するプライオリティを有する。ロッククライアントノードがデータストライプに対してリードロックを保持するとき、他のロッククライアントノードはまた、データストライプに対するリードロックを保持し、ロッククライアントノードがデータストライプに対するライトロックを保持するとき、他のロッククライアントノードは、データストライプに対するリードロック又はライトロックを保持することが禁止される。一例として、図２ｂに示される各データストライプの属性情報において、データストライプに対するロックを現在保持する３つのロッククライアントノードが記録される。本発明の実施例は、データストライプに対するロックを現在保持するロッククライアントノードに限定しないことが理解できる。
【００４５】
ステップ１０３：ロック通知が最初に受信していないリードロック通知であるとき、データストライプオーナサーバノードが、ロッククライアントノードがデータストライプのオーナのキャッシュからデータストライプを読むように、データストライプのオーナ情報を有するレスポンスメッセージをロッククライアントノードに返す。
【００４６】
このステップでは、データストライプオーナサーバノードが第２ロッククライアントノードから最初に受信していないデータストライプに関するリードロック通知を受信したと仮定すると、データストライプオーナサーバノードは、第２ロッククライアントノードが第１ロッククライアントノードのキャッシュからデータストライプを読めるように、データストライプのオーナが第１ロッククライアントノードであることを示すレスポンスメッセージを第２ロッククライアントノードに返す。
【００４７】
上記実施例では、データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、データストライプオーナサーバノードは、データストライプのオーナとして通知を発信したロッククライアントノードを記録し、ロッククライアントノードは、データストライプをキャッシュし、最初に受信していないデータストライプに関するリードロック通知を受信すると、データストライプオーナサーバノードは、レコードに従ってデータストライプのオーナの通知を発信したロッククライアントノードに通知し、当該通知を発信したロッククライアントノードは、オーナのキャッシュからデータストライプを読む。データストライプオーナサーバノードは、１つのデータストライプが分散ストレージシステム全体のデータストライプに対応するロッククライアントノードに１回のみキャッシュされるように、データストライプのオーナを記録及び通知し、ロッククライアントノードは、オーナからデータストライプを読むことができる。これは、同じデータストライプが異なるノード装置にキャッシュされるという問題を回避し、ノード装置のキャッシュ利用率を増加させる。
【００４８】
上記技術的手段に基づき、さらにステップ１０１の後、本方法は更に、ロック通知がリードロック通知であるとき、データストライプオーナサーバノードがデータストライプの属性情報を記録されたデータストライプの属性情報から検索し、データストライプの属性情報が検出されなかった場合、リードロック通知が最初に受信されたリードロック通知であると判定することを含むものであってもよい。
【００４９】
上記技術的手段に基づき、さらにデータストライプのオーナが第１ロッククライアントノードであることを示すレスポンスメッセージを第１ロッククライアントノードに返した後、本方法は更に、データストライプオーナサーバノードが、第１ロッククライアントノードからデータストライプのオーナを第３ロッククライアントノードに変更するためのリクエストメッセージを受信し、データストライプオーナサーバノードが、データストライプのオーナを第３ロッククライアントノードに変更し、データストライプオーナサーバノードが、第１ロッククライアントノードがローカルキャッシュからデータストライプを削除し、第３ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナの変更の成功を示すレスポンスメッセージを第１ロッククライアントノードに返すことを含む。
【００５０】
上記の実現方法を利用することによって、第１ロッククライアントノードがメモリ不足であり、データストライプを格納することができないとき、データストライプのオーナシップが第３ロッククライアントノードに移転される。これは、データストライプのオーナの動的な変更を実現し、第１ロッククライアントノードのキャッシュロードを解放し、これにより、データストライプキャッシュ処理におけるより良好なロードバランシングを実現する。
【００５１】
上記技術的手段に基づき、さらにデータストライプオーナサーバノードがロックサーバノード装置と統合されるとき、リードロック通知はリードロックリクエストであってもよく、ライトロック通知はライトロックリクエストであってもよい。これに対応して、データストライプのオーナが第１ロッククライアントノードであることを示すレスポンスメッセージを第１ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを第１ロッククライアントノードに返すことを含む。データストライプのオーナが第１ロッククライアントノードであることを示すレスポンスメッセージを第２クライアントノードに返すステップは更に、ロック成功レスポンスメッセージを第２ロッククライアントノードに返すことを含む。
【００５２】
データストライプオーナサーバノードをロックサーバノード装置に統合することによって、ロッククライアントノードはリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するとき、当該通知はまた、ロックサーバノード装置に対するリードロックリクエスト又はライトロックリクエストを搬送する。これは、ロックサーバノード装置に対する他のリードロックリクエスト又はライトロックリクエストを送信することを回避し、システム装置間のシグナリングを減少し、データストライプを読み書きする際の効率性を向上させる。
【００５３】
図３は、本発明の実施例３による分散ストレージシステムのためのキャッシュ処理方法の概略フローチャートである。図３に示されるように、本方法は以下のプロセスを含む。
【００５４】
ステップ２０１：ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信する。
【００５５】
ステップ２０２：ロッククライアントノードが、データストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信し、ロッククライアントノードが、データストライプをキャッシュする。
【００５６】
ステップ２０３：ロッククライアントノードがデータストライプオーナサーバノードからデータストライプオーナの識別情報ＩＤを受信すると、ロッククライアントノードが、データストライプオーナのＩＤとロッククライアントノードのＩＤとを比較し、当該２つのＩＤが異なる場合、ロッククライアントノードが、データストライプオーナのＩＤに対応するロッククライアントノードのキャッシュからデータストライプを読む。
【００５７】
上記技術的手段に基づき、さらにロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信した後、ロッククライアントノードがデータストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信する前、本方法は更に、データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、データストライプオーナサーバノードが、ロッククライアントノードをデータストライプのオーナとして記録することを含む。
【００５８】
上記技術的手段に基づき、さらに本方法は更に、ロッククライアントノードによってオーナサーバノードに送信されるロック通知がデータストライプに関するライトロック通知である場合、ロッククライアントノードが、データストライプをキャッシュし、その後、ロックサーバノードが記録をロッククライアントノードがデータストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信することを含む。ライトロックを保持するロッククライアントノードがデータストライプをローカルにキャッシュした後、ロッククライアントノードが常時ライトロックを保持する場合、他のロッククライアントがリードロックをリクエストすると、ライトロックは取り消される必要がある。本発明の実施例では、ライトロックを保持するロッククライアントノードがデータストライプをローカルにキャッシュした後、ロッククライアントノードは、他のロッククライアントがリードロックをリクエストすると、ライトロックを取り消すことが不要になるように、ライトロックをリードロックにデグレードするためのデグレードリクエストをロックサーバノードに自発的に送信する。これは、以降にリードロック処理を開始するための時間を節約し、キャッシュ処理の効率性を向上させる。
【００５９】
上記技術的手段に基づき、ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信する前、本方法は更に、ロッククライアントノードが、アプリケーションサーバからデータストライプに関するリードリクエスト又はライトリクエストを受信し、ロッククライアントノードが、データストライプに関するリードロック又はライトロックをローカルに検索し、データストライプに関するリードロック又はライトロックが検出された場合、データストライプに関するリードロック又はライトロックに従ってデータストライプのオーナを決定し、データストライプのオーナからデータストライプを読むか、又はデータストライプのオーナにデータストライプを書き込み、データストライプに関するリードロック又はライトロックが検出されない場合、クロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するステップを実行することを含む。
【００６０】
上記技術的手段に基づき、さらに本方法は更に、単位時間におけるロッククライアントノードのキャッシュ削除率がロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、ロッククライアントノードが、データストライプオーナサーバノードがデータストライプのオーナをターゲットロッククライアントノードに変更するように、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをデータストライプオーナサーバノードに送信し、ロッククライアントノードが、データストライプオーナサーバノードからデータストライプのオーナの変更の成功を示すレスポンスメッセージを受信し、ローカルキャッシュからデータストライプを削除し、ターゲットロッククライアントノードがデータストライプをキャッシュするように、データストライプをターゲットロッククライアントノードに送信することを含む。データストライプは、ロッククライアントノードのキャッシュ間で動的にマイグレートする。これは、ロッククライアントノード上の頻繁なキャッシュ削除のため、キャッシュ利用率が低くなるという問題点を解消し、システム全体における各ロッククラインとノードのバランスされたキャッシュ利用を維持することが可能であり、キャッシュ利用率を向上させる。
【００６１】
上記技術的手段に基づき、さらにロッククライアントノードが、データストライプオーナのＩＤに対応するロッククライアントノードからデータストライプを読むことは、具体的には、ロッククライアントノードが、データストライプオーナのＩＤに対応するロッククライアントノードにデータストライプに関するリードリクエストを送信することを含み、これにより、データストライプオーナのＩＤに対応するロッククライアントノードがデータストライプをローカルにキャッシュされているデータから検索し、データストライプが検出される場合、データストライプをロッククライアントノードに返し、そうでない場合、分散ストレージシステムのロッククライアントノードからデータストライプのデータストリップを読み、データストライプを構成し、データストライプをロッククライアントノードに返す。
【００６２】
本発明の実施例３では、ロッククライアントノードがデータストライプに関する最初に受信したリードロック通知又はライトロック通知を送信すると、ロッククライアントノードはデータストライプをキャッシュし、データストライプオーナサーバノードは、データストライプのオーナとしてロッククライアントノードを記録し、ロッククライアントノードが最初に受信していないデータストライプに関するリードロック通知を送信すると、データストライプオーナサーバノードは、レコードに従ってデータストライプのオーナの通知をロッククライアントノードに通知し、ロッククライアントノードは、オーナのキャッシュからデータストライプを読む。データストライプオーナサーバノードは、１つのデータストライプが分散ストレージシステム全体においてそれのオーナに１回のみキャッシュされるように、データストライプのオーナを記録及び通知し、ロッククライアントノードは、オーナからデータストライプを読むことができる。これは、同じデータストライプが異なるノード装置にキャッシュされるという問題を回避し、ノード装置のキャッシュ利用率を増加させる。
【００６３】
データストライプオーナサーバノード及びロックサーバノードが別々に設定されるケースにおけるキャッシュ処理方法が、本発明の実施例２及び実施例３を用いることによって説明される。実際のアプリケーションでは、オーナサーバノード及びロックサーバノードは更に組み合わされてもよく、１つのノードがオーナサーバノードとロックサーバノードとの双方の処理を実行するよう構成される。例えば、従来技術によるロックサーバノードは、従来技術によるロックサーバノードにより実行される処理に基づき本発明の実施例に開示されるオーナサーバノードにより実行される処理を実行するよう改良されてもよい。以降において、本発明により開示されるキャッシュ処理方法が、オーナサーバノードとロックサーバノードとの双方の処理を１つのノードが実行すると仮定することによって、本発明の第４〜８実施例において更に説明され、すなわち、上記の改良されたロックサーバノードは、従来技術によるロックサーバノードの処理と、本発明の実施例に開示されるオーナサーバノードの処理とを実行するよう構成される。本発明の第４〜８実施例に開示されるロックサーバノードは、上記の改良されたロックサーバノードであり、ロッククライアントノードによってロックサーバノードに送信されるロックリクエストは、ロック通知として取得される。例えば、ロッククライアントノードがリードロックリクエストをロックサーバノードに送信する場合、ロックサーバノードは、従来技術によるロックサーバノードの処理を実行し、またロックサーバノードは、リードロックリクエストをリードロック通知として取得し、本発明により開示されるオーナサーバノードの処理を実行する。同様に、ロッククライアントノードがライトロックリクエストをロックサーバノードに送信する場合、ロックサーバノードは、従来技術によるロックサーバノードの処理を実行し、また、ロックサーバノードは、ライトロックリクエストをライトロック通知として取得し、本発明により開示されるオーナサーバノードの処理を実行する。
【００６４】
図４は、本発明の実施例４による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例４では、分散ストレージシステムにおいて、データストライプに対するリードロック処理が最初に行われるか、又はデータストライプの削除後にデータストライプに対するリードロック処理が最初に行われると仮定される。図４に示されるように、本方法は以下のプロセスを含む。
【００６５】
ステップ３０１：第１ロッククライアントノードが、アプリケーションサーバからデータストライプに関するリードリクエストを受信する。
【００６６】
このステップでは、第１ロッククライアントノードがアプリケーションサーバからデータストライプに関するリードリクエストを受信した後、第１ロッククライアントノードは、データストライプに関するリードロックをローカルに検索し、リードロックが検出された場合、データストライプのオーナであって、データストライプに関するリードロックに示されるロッククライアントノードからデータストライプを読む。そうでない場合、ステップ３０２が実行される。本発明の実施例では、リードロックは検出されないと仮定される。
【００６７】
ステップ３０２：第１ロッククライアントノードが、ロックサーバノードにデータストライプに関するリードロックリクエストを送信する。
【００６８】
ステップ３０３：ロックサーバノードが、データストライプのオーナとして第１ロッククライアントノードを記録する。
【００６９】
このステップでは、ストライプロックリクエストを受信した後、ロックサーバノードはまず、データストライプの属性情報がレコードに存在するか確認し、データストライプの属性情報が存在しない場合、データストライプの属性情報レコードを生成し、そうでない場合、ロックを保持するロッククライアントノードに関する情報のためデータストライプの属性情報を確認する。本発明の実施例４では、データストライプの属性情報は存在しないと仮定される。データストライプに関するレコードが存在しない場合、それは、データストライプがシステムにおいて最初にリクエストされたか、又は削除後に最初にリクエストされたことを示す。ロックサーバノードは、ロックを現在リクエストしている第１ロッククライアントノードに関する情報をレコードに追加し、第１ロッククライアントノードをデータストライプのオーナとして記録し、第１ロッククライアントノードに対応するオーナＩＤを第１ロッククライアントノードのＩＤとして記録する。
【００７０】
ステップ３０４：ロックサーバノードが、データストライプのオーナが第１ロッククライアントノードであることを示すレスポンスメッセージを第１ロッククライアントノードに返す。
【００７１】
このステップではロックサーバノードは、ロック成功レスポンスメッセージを第１ロッククライアントノードに返し、ここで、当該メッセージは、データストライプのオーナが第１ロッククライアントノードであることを第１ロッククライアントノードに示し、第１ロッククライアントノードは、データストライプのオーナＩＤが第１ロッククライアントノードのＩＤであることをローカルに記録する。
【００７２】
ステップ３０５：第１ロッククライアントノードが、データストライプをキャッシュする。
【００７３】
このステップでは、第１ロッククライアントノードは、ロックサーバノードによって返された情報に従って、第１ロッククライアントノード自体がデータストライプのオーナであることを検出する。第１ロッククライアントノードは、ローカルグローバルユニフォームキャッシュからのキャッシュスペースをリクエストし、他のロッククライアントノードからデータストライプのデータストリップを読み、ローカルグローバルユニフォームキャッシュにおいてデータストライプを構成し、データストライプをアプリケーションサーバに返す。他のロッククライアントノードからデータストライプのデータストリップを読み、データストリップに従ってデータストライプを構成し、当該構成を完了させた後、第１ロッククライアントノードは、データストリップ及びデータストリップの冗長データを取得することができる。本発明の実施例４では、第１ロッククライアントノードは、データストライプをキャッシュするだけでなく、データストライプの冗長データをキャッシュし、分散ストレージシステムのノードのキャッシュ利用率を更に向上させることができる。本発明の他の実施例では、ロッククライアントノードがデータストライプをキャッシュすると、この方法はまたキャッシュ処理を実行するため採用されてもよい。
【００７４】
図５は、本発明の実施例５による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例５では、分散ストレージシステムにおいて、第１ロッククライアントノードがデータストライプをキャッシュした後、第２ロッククライアントノードはデータストライプを読むと仮定される。図５に示されるように、本方法は以下のプロセスを含む。
【００７５】
ステップ４０１：第２ロッククライアントノードが、アプリケーションサーバからデータストライプに関するリードリクエストを受信する。
【００７６】
このステップでは、第２ロッククライアントノードは、データストライプに関するリードロックをローカルに検索し、リードロックが検出された場合、データストライプのオーナであって、データストライプのリードロックに示されるロッククライアントノードからデータストライプを読む。そうでない場合、ステップ４０２が実行される。本発明の実施例では、リードロックは検出されないと仮定される。
【００７７】
ステップ４０２：第２ロッククライアントノードが、データストライプに関するリードロックリクエストをロックサーバノードに送信する。
【００７８】
ステップ４０３：ロックサーバノードが、データストライプのオーナが第１ロッククライアントノードであることを示すレスポンスメッセージを第２ロッククライアントノードに返す。
【００７９】
このステップでは、ストライプロックリクエストを受信した後、ロックサーバノードはまず、データストライプの属性情報がレコードに存在するか確認し、データストライプの属性情報が存在しない場合、データストライプの属性情報レコードを生成し、そうでない場合、ロックを保持するロッククライアントノードに関する情報のためデータストライプの属性情報を確認する。本発明の実施例５では、データストライプの属性情報は存在すると仮定される。データストライプの属性情報が存在する場合、ロックサーバノードは、属性情報に従ってデータストライプのオーナを知ることができる。データストライプのオーナが第１ロッククライアントノードであると仮定すると、ロックサーバノードは、ロックを現在リクエストしている第２ロッククライアントノードのＩＤをデータストライプの属性情報に追加し、第２ロッククライアントノードのＩＤに対応するオーナフラグを非オーナを示す所定値に設定する。ロックサーバノードは、ロック成功レスポンスメッセージを第２ロッククライアントノードに返し、ここで、当該メッセージは、データストライプのオーナが第１ロッククライアントノードであることを第２ロッククライアントノードに示す。
【００８０】
ステップ４０３の後、第２ロッククライアントノードは、第１ロッククライアントノードのキャッシュからデータストライプを読み、具体的には以下のステップを含む。
【００８１】
ステップ４０４：第２ロッククライアントノードは、データストライプに関するリードリクエストを第１ロッククライアントノードに送信する。
【００８２】
このステップでは、第２ロッククライアントノードは、ロックサーバノードにより返された情報に従って、データストライプのオーナＩＤが第１ロッククライアントノードのＩＤであることをローカルに記録する。第２ロッククライアントノードは、データストライプのオーナでないことを知り、その後、データストライプに関するリードリクエストを生成し、当該リクエストをバックエンドネットワークを介し第１ロッククライアントノードに送信する。
【００８３】
ステップ４０５：第１ロッククライアントノードは、データストライプを第２ロッククライアントノードに返す。
【００８４】
このステップでは、第２ロッククライアントノードのデータストライプに関するリードリクエストを受信した後、第１ロッククライアントノードは、ローカルグローバルユニフォームキャッシュからデータストライプを取得し、当該データストライプを第２ロッククライアントノードに直接返す。
【００８５】
ステップ４０６：第２ロッククライアントノードは、データストライプをアプリケーションサーバに返す。
【００８６】
このステップでは、第２ロッククライアントノードは、第１ロッククライアントノードのリードデータストライプレスポンスを受信した後、アプリケーションサーバにデータストライプを送信する。
【００８７】
図６は、本発明の実施例６による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例６では、分散ストレージシステムにおいて、第１ロッククライアントノードがデータストライプをキャッシュした後、第２ロッククライアントノードがデータストライプを書き込むことが仮定される。図６に示されるように、本方法は以下のプロセスを含む。
【００８８】
ステップ５０１：第２ロッククライアントノードは、アプリケーションサーバからデータストライプに関するライトリクエストを受信する。
【００８９】
このステップでは、第２ロッククライアントノードがアプリケーションサーバからデータストライプに関するライトリクエストを受信した後、第２ロッククライアントノードは、データストライプに関するライトロックをローカルに検索し、ライトロックが検出された場合、データストライプのオーナであって、データストライプに関するライトロックに示されるロッククライアントノードにデータストライプを書き込む。第２ロッククライアントノードがデータストライプに関するライトロックをローカルに検出した場合、それは、当該時点前にロックサーバノードが第２ロッククライアントノードにデータストライプに関するライトロックをすでに付与したことを示す。ライトロック付与ルールに従って、ライトロックを第２ロッククライアントノードに付与する前、ロックサーバノードは、データストライプのオーナを第２ロッククライアントノードとして記録する。従って、第２ロッククライアントノードがデータストライプに関するライトロックをローカルに検出した場合、データストライプのオーナであって、データストライプのライトロックに示されるロッククライアントノードが第２ロッククライアントノードである。第２ロッククライアントノードがデータストライプに関するライトロックをローカルに検出しなかった場合、ステップ５０２が実行される。本発明の実施例では、ライトロックは検出されないことが仮定される。
【００９０】
ステップ５０２：第２ロッククライアントノードは、データストライプに関するライトロックリクエストをロックサーバノードに送信する。
【００９１】
ステップ５０３：ロックサーバノードは、データストライプに関するロック取り消しリクエストを第１ロッククライアントノードに送信する。
【００９２】
このステップでは、ストライプロックリクエストを受信した後、ロックサーバノードはまず、データストライプの属性情報がレコードにあるか確認し、データストライプの属性情報が存在しない場合、データストライプの属性情報レコードを生成し、そうでない場合、ロックを保持するロッククライアントノードに関する情報のためデータストライプの属性情報を確認する。本発明の実施例６では、データストライプの属性情報が存在すると仮定される。データストライプの属性情報が存在する場合、ロックサーバノードは、データストライプに関するリードロック又はライトロックを保持するロッククライアントノードを知ることができる。ロックサーバノードは、これらのロッククライアントノードにより保持されるデータストライプのロックを取り消すためのリクエストを生成し、当該リクエストを対応するロッククライアントノードに送信する。第１ロッククライアントノードがデータストライプに関するリードロックを保持すると仮定すると、ロックサーバノードは、第１ロッククライアントノードにより保持されるデータストライプのリードロックを取り消すためのリクエストを生成し、当該リクエストを第１ロッククライアントノードに送信する。
【００９３】
ステップ５０４：第１ロッククライアントノードは、ロック取り消し成功レスポンスメッセージをロックサーバノードに返す。
【００９４】
このステップでは、ロック取り消しリクエストを受信した後、第１ロッククライアントノードはまず、ロックが依然として使用中であるか確認する。ロックが使用中でない場合、第１ロッククライアントノードは、ロック取り消し成功レスポンスメッセージをロックサーバノードに直接返す。ロックが使用中である場合、第１ロッククライアントノードは、ロックの解放を待機し、その後、ロック取り消し成功レスポンスメッセージをロックサーバノードに返す。第１ロッククライアントノードがデータストライプのオーナである場合、ロック取り消し成功レスポンスメッセージを送信する前、第１ロッククライアントノードはまず、グローバルユニフォームキャッシュから第１ロッククライアントノードのグローバルユニフォームキャッシュにおけるデータストライプを削除する。
【００９５】
ステップ５０５：ロックサーバノードは、データストライプのオーナとして第２ロッククライアントノードを記録する。
【００９６】
このステップでは、ロック取り消し成功レスポンスメッセージを受信した後、ロックサーバノードは、データストライプのライトロックをリクエストした第２ロッククラインとノードをデータストライプの属性情報に記録し、第２ロッククライアントノードをデータストライプのオーナとして記録する。
【００９７】
ステップ５０６：ロックサーバノードは、ストライプライトロック成功レスポンスメッセージを第２ロッククライアントノードに返す。
【００９８】
ステップ５０７：第２ロッククライアントノードは、データストライプをキャッシュする。
【００９９】
このステップでは、ロックサーバノードのストライプライトロック成功レスポンスメッセージを受信した後、第２ロッククライアントノードは、ローカルグローバルユニフォームキャッシュからストライプキャッシュスペースをリクエストし、アプリケーションサーバから書き込みが必要とされるデータストライプを受信し、データストライプをローカルグローバルユニフォームキャッシュに格納し、その後、データストライプのデータストリップを対応するロッククライアントノードに書き込む。
【０１００】
ステップ５０８：第２ロッククライアントノードは、デグレードロックリクエストをロックサーバノードに送信する。
【０１０１】
このステップでは、データの書き込みに成功した後、第２ロッククライアントノードは、デグレードロックリクエストを生成し、当該リクエストをロックサーバノードに送信し、ここで、当該リクエストは、データストライプに対するライトロックをリードロックにデグレードすることを示す。
【０１０２】
ステップ５０９：ロックサーバノードは、レコードを第２ロッククライアントノードがデータストライプに関するリードロックを保持することに変更する。
【０１０３】
このステップでは、デグレードロックリクエストを受信した後、ロックサーバノードは、第２ロッククライアントノードに対応するロックタイプを“ライトロック”から“リードロック”に変更する。
【０１０４】
図７は、本発明の実施例７による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例７では、オーナである第１ロッククライアントノードがキャッシュ処理スペースの不足のためデータが削除されると、第２ロッククライアントノードは、第１ロッククライアントノードからデータストライプを読むと仮定される。図７に示されるように、本方法は以下のプロセスを含む。
【０１０５】
ステップ６０１：第２ロッククライアントノードは、データストライプに関するリードリクエストを第１ロッククライアントノードに送信する。
【０１０６】
このステップでは、データストライプのオーナは第１ロッククライアントノードである。データストライプを読むと、第２ロッククライアントノードは、第１ロッククライアントノードがオーナであることを知り、第１ロッククライアントノードのキャッシュからデータストライプの読み込みをリクエストするため、データストライプに関するリードリクエストを第１ロッククライアントノードに送信する。
【０１０７】
ステップ６０２：第１ロッククライアントノードは、データストライプをキャッシュされたリソースにおいて検索する。
【０１０８】
このステップでは、第１ロッククライアントノードはまず、キャッシュされているリソースからデータストライプを検索する。データストライプが検出された場合、第１ロッククライアントノードは、データストライプを第２ロッククライアントノードに直接返し、データストライプが検出されなかった場合、それは、第１ロッククライアントノードにおいてデータ削除が行われ、データストライプが削除されたることを示し、ステップ６０３が実行される。本発明の実施例７において、データストライプは検出されないと仮定される。
【０１０９】
ステップ６０３：第１ロッククライアントノードは、分散ストレージシステムにおいてロッククライアントノードからデータストライプのデータストリップを読み、データストライプを構成する。
【０１１０】
このステップでは、第１ロッククライアントノードがそれのキャッシュにおいてデータストライプを検出しない場合、第１ロッククライアントノードは、分散ストレージシステムのロッククライアントノードにデータリードリクエストを自発的に発信し、ロッククライアントノードからデータストライプのデータストリップを読み、第１ロッククライアントノードのグローバルキャッシュにおいてデータストライプを再構成する。
【０１１１】
ステップ６０４：第１ロッククライアントノードは、データストライプを第２ロッククライアントノードに返す。
【０１１２】
図８は、本発明の実施例８による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例８では、データストライプはロッククライアントノード間で動的にマイグレート又は移動すると仮定される。本発明の実施例では、キャッシュがロッククライアントノードのグローバルユニフォームキャッシュに作成されるとき、基本ルールは、データストライプに最初にアクセスするロッククライアントノードにデータストライプをキャッシュすることである。しかしながら、異なるロッククライアントノードを介しアプリケーションサーバによってアクセスされるデータストライプが少数のロッククライアントノードに中央的にキャッシュされるとき、キャッシュ削除がキャッシュ処理のためロッククライアントノードにおいて頻繁に行われることになり、キャッシュ処理の価値に重大な影響を与える。キャッシュにおいて頻繁にアクセスされるデータストライプは、キャッシュホットスポットと呼ばれる。従って、システム全体の各ストレージサーバ上でバランスされたキャッシュ利用を維持するため、ホットスポットは、ロッククライアントノードのキャッシュ間で動的にマイグレートすることが可能である必要がある。
【０１１３】
図８に示されるように、本方法は以下のプロセスを含む。
【０１１４】
ステップ７０１：第１ロッククライアントノードは、動的なマイグレーションを有効にするか判断する。
【０１１５】
このステップでは、グローバルユニフォームキャッシュのホットスポットの動的なマイグレーションの具体的な実現形態において、各ロッククライアントノードは、キャッシュホットスポットがそれのキャッシュにあるか判断し、キャッシュホットスポットがある場合、動的なマイグレーションを有効にする。分散ストレージシステムのグローバルユニフォームキャッシュにキャッシュホットスポットがあるか検出する方法は、単位時間において各ロッククライアントノードのキャッシュ削除率を定期的に検出し、単位時間におけるロッククライアントノードのキャッシュ削除率がロッククライアントノードのトータルのキャッシュ量の所定の比率を超過すると、キャッシュホットスポットがロッククライアントノードにあり、ホットスポットマイグレーション処理が必要であると決定することを含み、ここで、ロッククライアントノードは、動的にキャッシュホットスポットを他のロッククライアントノードに自発的に転送する。例えば、所定の比率は２０％であってもよい。
【０１１６】
第１ロッククライアントノードは、動的なマイグレーションを有効にするか判断する。単位時間における第１ロッククライアントノードのキャッシュ削除率が第１ロッククライアントノードのトータルのキャッシュ量の所定の比率以上であるとき、第１ロッククライアントノードは、動的なマイグレーションを有効にすることを決定する。本発明の実施例では、単位時間における第１ロッククライアントノードのキャッシュ削除率は、第１ロッククライアントノードのトータルのキャッシュ量の所定の比率以上であると仮定される。
【０１１７】
実現形態の方法は、ロッククライアントノードに接続されるモニタを設定し、各ロッククライアントノードが、単位時間におけるロッククライアントノードのキャッシュ削除率を定期的にモニタに報告することを含む。モニタは、ロッククライアントノードのキャッシュ利用状態を定期的に収集し、キャッシュホットスポット情報をロッククライアントノードにプッシュする。ここで、キャッシュホットスポット情報は、キャッシュホットスポット条件を充足するロッククライアントノードのＩＤを含む。各ロッククライアントノードは、キャッシュホットスポット情報がロッククライアントノードのＩＤを含むかに従って、それがキャッシュスポットホットであるか判断し、それがキャッシュホットスポットである場合、動的なキャッシュマイグレーションタスクを有効にする。動的なキャッシュマイグレーションタスクの実行サイクルは、ロッククライアントノードがそれらの削除率をモニタに報告するハートビートサイクルと、モニタがロッククライアントノードの削除率を取得するサイクルとの和である。マイグレーションの終了条件は、現在の実行サイクルが終了し、次のキャッシュホットスポット情報がロッククライアントノードのＩＤを含まないということである。
【０１１８】
ステップ７０２：第２ロッククライアントノードは、データストライプに関するリードリクエストを第１ロッククライアントノードに送信する。
【０１１９】
このステップでは、データストライプのオーナが第１ロッククライアントノードであることが仮定される。
【０１２０】
ステップ７０２は、任意的なステップである。第１の実現方法では、第２ロッククライアントノードがステップ７０１の終了によりストライプリードロックの取得に成功した場合、ステップ７０２がまず実行され、第２ロッククライアントノードが、データストライプに関するリードリクエストを第１ロッククライアントノードに送信し、その後、ステップ７０３が実行される。第２の実現方法では、第２ロッククライアントノードがステップ７０１の終了によりストライプリードロックの取得に成功しなかった場合、ステップ７０２を実行する必要はなく、代わりにステップ７０３が直接実行される。
【０１２１】
ステップ７０３：第１ロッククライアントノードは、オーナ変更のためのリクエストメッセージをロックサーバノードに送信する。
【０１２２】
このステップでは、第１ロッククライアントノードは、オーナ変更のためのリクエストメッセージをロックサーバノードに送信し、ここで、当該メッセージは、データストライプのＩＤとターゲットロッククライアントノードのＩＤとを含み、データストライプのオーナの変更のリクエストをターゲットロッククライアントノードに通知する。すなわち、第１ロッククライアントノードは、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをロックサーバノードに送信する。本発明の実施例では、ターゲットロッククライアントノードは第２ロッククライアントノードであると仮定される。
【０１２３】
第１の実現方法では、第１ロッククライアントノードは、第２ロッククライアントノードからデータストライプに関するリードリクエストを受信した後、オーナ変更リクエストを生成する。第２の実現方法では、第１ロッククライアントノードは、オーナ変更のためのリクエストメッセージを自発的に生成する。
【０１２４】
ステップ７０４：ロックサーバノードは、データストライプのオーナをターゲットロッククライアントノードに変更する。
【０１２５】
このステップでは、第１ロッククライアントノードからオーナ変更のためのリクエストメッセージを受信した後、ロックサーバノードは、データストライプのオーナをターゲットロッククライアントノードに変更するため、データストライプのオーナ情報を修正する。
【０１２６】
ステップ７０５：ロックサーバノードは、データストライプのオーナの変更の成功を示すレスポンスメッセージを第１ロッククライアントノードに返す。
【０１２７】
ステップ７０６：第１ロッククライアントノードは、データストライプを第２ロッククライアントノードに送信する。
【０１２８】
このステップでは、上記プロセスがステップ７０２を含む場合、当該ステップにおいて、第１ロッククライアントノードは更に、リードデータ成功レスポンスメッセージを第２ロッククライアントノードに返す。
【０１２９】
ステップ７０７：第１ロッククライアントノードは、ローカルキャッシュからデータストライプを削除する。
【０１３０】
このステップでは、データストライプのオーナの変更の成功を示すレスポンスメッセージの受信後、第１ロッククライアントノードは、第１ロッククライアントノードのキャッシュからデータストライプを自発的に削除する。
【０１３１】
ステップ７０８：第２ロッククライアントノードは、データストライプをキャッシュする。
【０１３２】
このステップでは、上記プロセスがステップ７０２を含む場合、リードデータ成功レスポンスメッセージの受信後、第２ロッククライアントノードは、第２ロッククライアントノードのローカルグローバルキャッシュにデータストライプをキャッシュし、レスポンスメッセージをアプリケーションサーバに返す。上記プロセスがステップ７０２を含まない場合、第１ロッククライアントノードは、第２ロッククライアントノードのローカルグローバルキャッシュにデータストライプを自発的にプッシュする。
【０１３３】
図９は、本発明の実施例９によるデータストライプオーナサーバノードの概略構成図である。図９に示されるように、データストライプオーナサーバノードは、少なくとも受信部９１、記録部９２、送信部９３及び判断部９４を含む。
【０１３４】
受信部９１は、ロッククライアントノードからデータストライプに関するロック通知を受信するよう構成される。
【０１３５】
判断部９４は、ロック通知を判断するよう構成される。
【０１３６】
記録部９２は、ロック通知が最初に受信したリードロック通知又はライトロック通知であると判断部が判断すると、ロッククライアントノードをデータストライプのオーナとして記録するよう構成される。
【０１３７】
送信部９３は、ロック通知が最初に受信したリードロック通知又はライトロック通知であると判断部が判断したとき、ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージをロッククライアントノードに返し、ロック通知が最初に受信していないリードロック通知であると判断部が判断したとき、ロッククライアントノードがデータストライプのオーナのキャッシュからデータストライプを読むように、データストライプのオーナ情報を有するレスポンスメッセージをロッククライアントノードに返すよう構成される。
【０１３８】
上記技術的手段に基づき、さらに判断部９４は、具体的には、ロック通知がリードロック通知であるとき、データストライプの属性情報を記録されたデータストライプの属性情報から検索し、データストライプの属性情報が検出されなかった場合、リードロック通知が最初に受信されたリードロック通知であると判定するよう構成される。
【０１３９】
上記技術的手段に基づき、さらに受信部９１は更に、ロッククライアントノードからデータストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するよう構成される。対応して、記録部９２は更に、データストライプのオーナを他のロッククライアントノードに変更するよう構成される。対応して、送信部９２は更に、ロッククライアントノードがローカルキャッシュからデータストライプを削除し、他のロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナの変更の成功を示すレスポンスメッセージをロッククライアントノードに返すよう構成される。
【０１４０】
上記技術的手段に基づき、さらにデータストライプオーナサーバノードがロックサーバノード装置に統合されるとき、リードロック通知はリードロックリクエストを有し、ライトロック通知はライトロックリクエストを有する。対応して、送信部９３は更に、ロック成功レスポンスメッセージをロッククライアントノードに返すよう構成される。
【０１４１】
本発明の実施例９のデータストライプオーナサーバノードは、本発明の第２〜８実施例のキャッシュ処理方法を実行するよう構成可能である。データストライプオーナサーバノードの具体的な実現プロセス及び技術的効果について、本発明の第２〜８実施例が参照されてもよく、ここでは詳細は再度説明されない。
【０１４２】
図１０は、本発明の実施例１０によるロッククライアントノードの概略構成図である。図１０に示されるように、ロッククライアントノードは、少なくとも送信部１００１、受信部１００２、比較部１００３、キャッシュ処理部１００４及びリードライト部１００５を有する。
【０１４３】
送信部１００１は、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するよう構成される。
【０１４４】
受信部１００２は、データストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信するか、又はデータストライプオーナサーバノードからデータストライプのオーナのＩＤを受信するよう構成される。
【０１４５】
比較部１００３は、データストライプオーナのＩＤとロッククライアントノードのＩＤとを比較し、当該２つのＩＤが異なる場合、リードライト部１００５を起動するよう構成される。
【０１４６】
キャッシュ処理部１００４は、受信部がデータストライプオーナサーバノードから、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信すると、データストライプをキャッシュするよう構成される。
【０１４７】
リードライト部１００５は、データストライプオーナのＩＤに対応するロッククライアントノードのキャッシュからデータストライプを読むよう構成される。
【０１４８】
上記技術的手段に基づき、さらに送信部は、ロックサーバノードが記録をロッククライアントノードがデータストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信するよう構成される。
【０１４９】
上記技術的手段に基づき、さらにロッククライアントノードは検索部１００６を有してもよい。対応して、受信部１００２は更に、アプリケーションサーバからデータストライプに関するリードリクエスト又はライトリクエストを受信するよう構成される。対応して、検索部１００６は、データストライプに関するリードロック又はライトロックをローカルに検索し、データストライプに関するリードロック又はライトロックが検出された場合、データストライプに関するリードロック又はライトロックに従ってデータストライプのオーナを決定し、リードライト部１００５を起動し、データストライプに関するリードロック又はライトロックが検出されない場合、送信部１００１を起動するよう構成される。対応して、リードライト部１００５は更に、データストライプのオーナからデータストライプを読むか、又はデータストライプのオーナにデータストライプを書き込むよう構成される。
【０１５０】
上記技術的手段に基づき、さらにキャッシュ処理部１００４は更に、単位時間における削除率がロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをデータストライプオーナサーバノードに送信するよう送信部１００１を制御するよう構成され、受信部１００２により受信され、データストライプのオーナの変更の成功を示すレスポンスメッセージに従って、ローカルキャッシュからデータストライプを削除し、データストライプをターゲットロッククライアントノードに送信するよう送信部１００１を制御するよう構成される。対応して、送信部１００１は更に、キャッシュ処理部１００４の制御に従って、データストライプオーナサーバノードがデータストライプのオーナをターゲットロッククライアントノードに変更するように、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをデータストライプオーナサーバノードに送信するよう構成される。送信部１００１は更に、ターゲットロッククライアントノードがデータストライプをキャッシュするように、キャッシュ処理部１００４の制御に従ってデータストライプをターゲットロッククライアントノードに送信するよう構成される。対応して、受信部１００２は更に、データストライプオーナサーバノードからデータストライプのオーナの変更の成功を示すレスポンスメッセージを受信するよう構成される。
【０１５１】
上記技術的手段に基づき、さらにリードライト部１００５は、具体的にはデータストライプオーナのＩＤに対応するロッククライアントノードがデータストライプをローカルにキャッシュされたデータから検索するように、データストライプオーナのＩＤに対応するロッククライアントノードにデータストライプに関するリードリクエストを送信し、データストライプが検出された場合、データストライプをリードライト部１００５に返し、そうでない場合、分散ストレージシステムのロッククライアントノードからデータストライプのデータストリップを読み、データストライプを構成し、データストライプをリードライト部１００５に返すよう構成される。
【０１５２】
本発明の実施例１０のロッククライアントノードは、本発明の第２〜８実施例のキャッシュ処理方法を実行するよう構成可能である。ロッククライアントノードの具体的な実現プロセス及び技術的効果について、本発明の第２〜８実施例が参照されてもよく、ここでは詳細は再度説明されない。
【０１５３】
図１１は、本発明の実施例１１によるデータストライプオーナサーバノードの概略構成図である。図１１に示されるように、データストライプオーナサーバノードは、少なくともプロセッサ１１０１、メモリ１１０２、通信インタフェース１１０３及びバス１１０４を有する。プロセッサ１１０１、メモリ１１０２及び通信インタフェース１１０３は、バス１１０４を介し通信する。
【０１５４】
メモリ１１０２は、プログラムを格納するよう構成される。具体的には、プログラムは、コンピュータ実行命令を含むプログラムコードを含む。メモリ１１０２は、高速ＲＡＭメモリ又は不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）であってもよく、例えば、少なくとも１つの磁気ディスクメモリであってもよい。
【０１５５】
通信インタフェース１１０３は、第１ロッククライアントノード及び第２ロッククライアントノードと通信するよう構成される。
【０１５６】
プロセッサ１１０１は、メモリ１１０２により格納される実行命令を実行するよう構成され、本発明の実施例を実現するよう割り当てられたシングルコア若しくはマルチコア中央処理ユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，ＣＰＵ）、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，ＡＳＩＣ）又は１以上の集積回路であってもよい。
【０１５７】
データストライプオーナサーバノードが実行中であるとき、プロセッサ１１０１は、以下の命令を実行するためのプログラムを実行する。
データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信し、ロック通知を判断し、
ロック通知が最初に受信したリードロック通知又はライトロック通知であるとき、データストライプオーナサーバノードは、ロッククライアントノードをデータストライプのオーナとして記録し、ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージをロッククライアントノードに返し、
ロック通知が最初に受信したリードロック通知であるとき、データストライプオーナサーバノードは、ロッククライアントノードがデータストライプのオーナのキャッシュからデータストライプを読むように、データストライプのオーナ情報を含むレスポンスメッセージをロッククライアントノードに返す。
【０１５８】
本発明の実施例１１のデータストライプオーナサーバノードは、本発明の第２〜８実施例のキャッシュ処理方法を実行するよう構成できる。データストライプオーナサーバノードの具体的な実現プロセス及び技術的効果について、本発明の第２〜８実施例が参照されてもよく、ここでは詳細は再度説明されない。
【０１５９】
図１２は、本発明の実施例１２によるロッククライアントノードの概略構成図である。図１２に示されるように、ロッククライアントノードは、少なくともプロセッサ１２０１、メモリ１２０２、通信インタフェース１２０３及びバス１２０４を有する。プロセッサ１２０１、メモリ１２０２及び通信インタフェース１２０３は、バス１２０４を介し通信する。
【０１６０】
メモリ１２０２は、プログラムを格納するよう構成される。具体的には、プログラムは、コンピュータ実行命令を含むプログラムコードを含む。メモリ１２０２は、高速ＲＡＭメモリ又は不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）であってもよく、例えば、少なくとも１つの磁気ディスクメモリであってもよい。
【０１６１】
プロセッサ１２０１は、メモリ１２０２により格納される実行命令を実行するよう構成され、本発明の実施例を実現するよう割り当てられたシングルコア若しくはマルチコア中央処理ユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，ＣＰＵ）、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，ＡＳＩＣ）又は１以上の集積回路であってもよい。
【０１６２】
通信インタフェース１０２０３は、データストライプオーナサーバノード及び他のロッククライアントノードと通信するよう構成される。
【０１６３】
ロッククライアントノードが実行中であるとき、プロセッサ１２０２は、以下の命令を実行するためのプログラムを実行する。
データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信し、
ロッククライアントノードがデータストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信すると、ロッククライアントノードがデータストライプをキャッシュし、
データストライプオーナサーバノードからデータストライプのオーナの識別ＩＤを受信すると、データストライプオーナのＩＤとロッククライアントノードのＩＤとを比較し、当該２つのＩＤが異なるとき、データストライプオーナのＩＤに対応するロッククライアントノードからデータストライプを読む。
【０１６４】
本発明の実施例１２のロッククライアントノードは、本発明の第２〜８実施例のキャッシュ処理方法を実行するよう構成できる。ロッククライアントノードの具体的な実現プロセス及び技術的効果について、本発明の第２〜８実施例が参照されてもよく、ここでは詳細は再度説明されない。
【０１６５】
本発明の実施例１３は、データストライプオーナサーバノードに本発明の実施例２の方法を実行するよう指示するのに用いられるコンピュータ実行命令を含むコンピュータ可読媒体を提供する。
【０１６６】
本発明の実施例１４は、ロッククライアントノードに本発明の実施例３の方法を実行するよう指示するのに用いられるコンピュータ実行命令を含むコンピュータ可読媒体を提供する。説明の簡単化のため、上記の方法の実施例は全て動作の組み合わせとして説明されたが、当業者は本発明が説明された動作シーケンスに限定されるものでないことを知るべきであることに留意すべきである。本発明によると、いくつかのステップは他のシーケンスにより実行されてもよく、又は同時に実行されてもよい。また、当業者は、ここに説明された実施例が単なる一例となる実施例であることを知るべきであり、含まれている動作及びモジュールは本発明に必須でない。
【０１６７】
上記実施例では、実施例の説明は各自の強調を有し、実施例に詳細に説明されないパーツについて、他の実施例の関連する説明が参照できる。
【０１６８】
実現方法の上記の説明から、当業者は、本発明がハードウェア、ファームウェア又はこれらの組み合わせにより実現可能であることが明らかであるかもしれない。本発明がソフトウェアを用いることによって実現されるとき、上述した機能はコンピュータ可読媒体に格納されるか、又はコンピュータ可読媒体の１以上の命令又はコードとして転送されてもよい。コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み、ここで、通信媒体は、ある場所から他の場所へのコンピュータプログラムの転送を実現する何れかの媒体を含む。記憶媒体は、利用可能な何れかのコンピュータアクセス可能な媒体であってもよい。例えば、限定することなく、コンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、他の光ディスクストレージ若しくは磁気ディスク記憶媒体、他の磁気記憶装置、又は命令若しくはデータ構造の形式により所望のプログラムコードを担持若しくは格納するのに利用可能であって、コンピュータによりアクセス可能な他の何れかの媒体を含むものであってもよい。さらに、適切であるとき、何れかの接続はコンピュータ可読媒体とすることが可能である。例えば、ソフトウェアがウェブサイト、サーバ又は他のリモートソースから同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）又は赤外線、無線及びマイクロ波などの無線技術を利用することによって転送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ若しくは赤外線、無線及びマイクロ波などの無線技術は全て、媒体の定義の範囲内に属する。例えば、本発明において用いられるディスク（ｄｉｓｋ）及びディスク（ｄｉｓｃ）は、コンパクトディスク（ＣＤ）、レーザディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、フロッピー（登録商標）ディスク及びブルーレイディスクを含み、ここで、ディスク（ｄｉｓｋ）は一般にデータを磁気的に複製し、ディスク（ｄｉｓｃ）はレーザを用いてデータを光学的に複製する。上記の組み合わせはまた、コンピュータ可読媒体の保護範囲内に属する。
【０１６９】
最後に、上記実施例は本発明を限定するのでなく、本発明の技術的手段を説明することを単に意図することに留意すべきである。本発明が上記実施例を参照して詳細に説明されたが、当業者は、上記実施例において説明した技術的手段に対する修正又はこれらの一部の技術的特徴に対する等価な置換が、当該修正又は置換が対応する技術的手段の本質を本発明の実施例の技術的手段の趣旨及び範囲から逸脱させるものでない限り、依然として可能であることを理解すべきである。
【図１】
0006301318.tif 000002
【図２ａ】
0006301318.tif 000003
【図２ｂ】
0006301318.tif 000004
【図３】
0006301318.tif 000005
【図４】
0006301318.tif 000006
【図５】
0006301318.tif 000007
【図６】
0006301318.tif 000008
【図７】
0006301318.tif 000009
【図８】
0006301318.tif 000010
【図９】
0006301318.tif 000011
【図１０】
0006301318.tif 000012
【図１１】
0006301318.tif 000013
【図１２】
0006301318.tif 000014