(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6561162
(24)【登録日】2019年7月26日
(45)【発行日】2019年8月14日
(54)【発明の名称】クラスタ内のロック管理方法、ロックサーバ及びクライアント
(51)【国際特許分類】
G06F 16/176 20190101AFI20190805BHJP
【FI】
G06F16/176 100
【請求項の数】40
【外国語出願】
【全頁数】58
(21)【出願番号】特願2018-40616(P2018-40616)
(22)【出願日】2018年3月7日
(62)【分割の表示】特願2016-567831(P2016-567831)の分割
【原出願日】2015年12月14日
(65)【公開番号】特開2018-110031(P2018-110031A)
(43)【公開日】2018年7月12日
【審査請求日】2018年3月7日
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】▲藍▼ 文▲海▼
(72)【発明者】
【氏名】▲張▼ 巍
(72)【発明者】
【氏名】王 学友
(72)【発明者】
【氏名】▲張▼ 粤
【審査官】
田中 啓介
(56)【参考文献】
【文献】
特開2014−048969(JP,A)
【文献】
特開平09−325894(JP,A)
【文献】
特開平08−095841(JP,A)
【文献】
特開2001−067238(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/455−9/54
G06F12/00、16/00−16/958
(57)【特許請求の範囲】
【請求項1】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック要求キューは、前記第2のクライアントの識別子を更に記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントの書き込みロック解放要求を受信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードにより、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップであり、前記書き込みロック要求問い合わせメッセージは、前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にあるメモリアドレスを含むステップと、
前記インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを前記第1のクライアントに送信するステップであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記インタフェースカードにより、前記第1のクライアントにより送信された書き込みロック占有要求を受信するステップであり、前記書き込みロック占有要求は、前記第2のクライアントの前記識別子と前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスとを含むステップと、
前記インタフェースカードにより、前記第2のクライアントの前記識別子を前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに書き込むステップと
を含む方法。
【請求項2】
前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にある前記メモリアドレスは、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスである、請求項1に記載の方法。
【請求項3】
前記書き込みロック要求キューは、前記第2のクライアントの書き込みロック優先度を更に記憶し、前記第2のクライアントの前記書き込みロック優先度は、前記書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である、請求項1に記載の方法。
【請求項4】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントにより送信された書き込みロック解放要求を受信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードにより、前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定するステップと、
前記インタフェースカードにより、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記第1のクライアントにより送信された読み取りロック要求問い合わせメッセージを受信するステップと、
前記インタフェースカードにより、読み取りロック要求問い合わせ応答メッセージを前記第1のクライアントに送信するステップであり、前記読み取りロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記インタフェースカードにより、前記第1のクライアントにより送信された読み取りロック割り当てカウント変更要求を受信するステップと、
前記インタフェースカードにより、前記読み取りロック割り当てカウント変更要求に従って前記メモリ内の前記読み取りロック割り当てカウントを増加させるステップと
を含む方法。
【請求項5】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック要求キューは、前記第2のクライアントの識別子を更に記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記第1のクライアントにより、書き込みロック解放要求を前記インタフェースカードに送信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードが前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、前記第1のクライアントにより、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するステップであり、前記書き込みロック要求問い合わせメッセージは、前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にあるメモリアドレスを含むステップと、
前記第1のクライアントにより、前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記第1のクライアントにより、書き込みロック占有要求を前記インタフェースカードに送信するステップであり、前記書き込みロック占有要求は、前記第2のクライアントの前記識別子と前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスとを含むステップと、
前記第1のクライアントにより、前記第2のクライアントの前記識別子が前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに書き込まれることを示す、前記インタフェースカードにより送信された書き込みロック占有要求応答を受信するステップと、
前記第1のクライアントにより、通知を前記第2のクライアントに送信するステップであり、前記通知は、前記第2のクライアントが前記書き込みロックを取得することを示すステップと
を含む方法。
【請求項6】
前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にある前記メモリアドレスは、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスである、請求項5に記載の方法。
【請求項7】
前記書き込みロック要求キューは、前記第2のクライアントの書き込みロック優先度を更に記憶し、前記第2のクライアントの前記書き込みロック優先度は、前記書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である、請求項5に記載の方法。
【請求項8】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にある方法であって、
前記第1のクライアントにより、書き込みロック解放要求を前記インタフェースカードに送信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードが前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、前記第1のクライアントにより、読み取りロック要求問い合わせメッセージを前記インタフェースカードに送信するステップと、
前記第1のクライアントにより、前記インタフェースカードにより送信された読み取りロック要求問い合わせ応答メッセージを受信するステップであり、前記読み取りロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記第1のクライアントにより、読み取りロック割り当てカウント変更要求を前記インタフェースカードに送信するステップと
を含む方法。
【請求項9】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック要求キューは、前記第2のクライアントの識別子を更に記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記第1のクライアントにより、書き込みロック解放要求を前記インタフェースカードに送信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードが前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、前記第1のクライアントにより、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するステップであり、前記書き込みロック要求問い合わせメッセージは、前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にあるメモリアドレスを含むステップと、
前記第1のクライアントにより、前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記第1のクライアントにより、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するステップであり、前記通知は、前記第2のクライアントに対して書き込みロック要求を前記インタフェースカードに送信するように命令するために使用されるステップと
を含む方法。
【請求項10】
前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にある前記メモリアドレスは、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスである、請求項9に記載の方法。
【請求項11】
前記書き込みロック要求キューは、前記第2のクライアントの書き込みロック優先度を更に記憶し、前記第2のクライアントの前記書き込みロック優先度は、前記書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である、請求項9に記載の方法。
【請求項12】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にある方法であって、
前記第1のクライアントにより、書き込みロック解放要求を前記インタフェースカードに送信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードが前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、前記第1のクライアントにより、読み取りロック要求問い合わせメッセージを前記インタフェースカードに送信するステップと、
前記第1のクライアントにより、前記インタフェースカードにより送信された読み取りロック要求問い合わせ応答メッセージを受信するステップであり、前記読み取りロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記第1のクライアントにより、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するステップであり、前記通知は、前記第2のクライアントに対して読み取りロックを求めて申請するように命令するために使用されるステップと
を含む方法。
【請求項13】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記第1のクライアントにより、読み取りロック解放要求を前記インタフェースカードに送信するステップであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含むステップと、
前記インタフェースカードが前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、前記第1のクライアントにより、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するステップであり、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記第1のクライアントにより、前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記第1のクライアントにより、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するステップであり、前記通知は、前記第2のクライアントに対して前記書き込みロックを求めて申請するように命令するために使用されるステップと
を含む方法。
【請求項14】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記第1のクライアントにより、読み取りロック解放要求を前記インタフェースカードに送信するステップであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含むステップと、
前記インタフェースカードが前記メモリ内の前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、前記第1のクライアントにより、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するステップであり、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記第1のクライアントにより、前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記第1のクライアントにより、書き込みロック割り当て識別子変更要求を前記インタフェースカードに送信するステップと、
前記インタフェースカードが前記書き込みロック割り当て識別子変更要求に従って前記書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定したことに応じて、前記第1のクライアントにより、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するステップであり、前記通知は、前記第2のクライアントが前記書き込みロックを取得することを示すステップと
を含む方法。
【請求項15】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含むステップと、
前記インタフェースカードにより、前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップであり、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを前記第1のクライアントに送信するステップであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと
を含む方法。
【請求項16】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含むステップと、
前記インタフェースカードにより、前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップであり、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを前記第1のクライアントに送信するステップであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含むステップと、
前記インタフェースカードにより、前記第1のクライアントにより送信された書き込みロック割り当て識別子変更要求を受信するステップと、
前記インタフェースカードにより、前記書き込みロック割り当て識別子変更要求に従って前記書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定するステップと
を含む方法。
【請求項17】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記第2のクライアントの識別子は、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスに更に記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントの書き込みロック解放要求を受信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードにより、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記書き込みロック要求キューの前記キュー先頭に続く前記次のメモリアドレスに記憶された前記第2のクライアントの前記識別子を求めて問い合わせるステップと、
前記インタフェースカードにより、前記第2のクライアントの前記識別子を前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに書き込むステップと、
前記インタフェースカードにより、前記第2のクライアントに対して前記書き込みロックを取得するように命令するための通知を前記第2のクライアントに送信するステップと
を含む方法。
【請求項18】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントにより送信された書き込みロック解放要求を受信するステップであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含むステップと、
前記インタフェースカードにより、前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定するステップと、
前記インタフェースカードにより、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記読み取りロック要求キューに記憶された前記第2のクライアントの前記識別子を決定するために、前記読み取りロック要求キューに問い合わせるステップと、
前記インタフェースカードにより、前記メモリ内の前記読み取りロック割り当てカウントを増加させるステップと、
前記インタフェースカードにより、前記第2のクライアントが読み取りロックを取得することを示すための通知を前記第2のクライアントに送信するステップと
を含む方法。
【請求項19】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含むステップと、
前記インタフェースカードにより、前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記第2のクライアントの前記識別子を決定するために、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに問い合わせるステップと、
前記インタフェースカードにより、前記第2のクライアントの前記識別子に従って、前記第2のクライアントに対して前記書き込みロックを求めて前記インタフェースカードに申請するように命令するための通知を前記第2のクライアントに送信するステップと
を含む方法。
【請求項20】
クラスタ内のロック管理方法であり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にある方法であって、
前記インタフェースカードにより、前記第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含むステップと、
前記インタフェースカードにより、前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除するステップと、
前記インタフェースカードにより、前記第2のクライアントの前記識別子を決定するために、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに問い合わせるステップと、
前記インタフェースカードにより、前記書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定するステップと、
前記インタフェースカードにより、前記第2のクライアントの前記識別子に従って、前記第2のクライアントが前記書き込みロックを取得することを示すための通知を前記第2のクライアントに送信するステップと
を含む方法。
【請求項21】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック要求キューは、前記第2のクライアントの識別子を更に記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントの書き込みロック解放要求を受信し、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、
前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信し、前記書き込みロック要求問い合わせメッセージは、前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にあるメモリアドレスを含み、
書き込みロック要求問い合わせ応答メッセージを前記第1のクライアントに送信し、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含み、
前記第1のクライアントにより送信された書き込みロック占有要求を受信し、前記書き込みロック占有要求は、前記第2のクライアントの前記識別子と前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスとを含み、
前記第2のクライアントの前記識別子を前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに書き込む
ように構成されるロックサーバ。
【請求項22】
前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にある前記メモリアドレスは、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスである、請求項21に記載のロックサーバ。
【請求項23】
前記書き込みロック要求キューは、前記第2のクライアントの書き込みロック優先度を更に記憶し、前記第2のクライアントの前記書き込みロック優先度は、前記書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である、請求項21に記載のロックサーバ。
【請求項24】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントにより送信された書き込みロック解放要求を受信し、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、
前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、
前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記第1のクライアントにより送信された読み取りロック要求問い合わせメッセージを受信し、
読み取りロック要求問い合わせ応答メッセージを前記第1のクライアントに送信し、前記読み取りロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含み、
前記第1のクライアントにより送信された読み取りロック割り当てカウント変更要求を受信し、
前記読み取りロック割り当てカウント変更要求に従って前記メモリ内の前記読み取りロック割り当てカウントを増加させる
ように構成されるロックサーバ。
【請求項25】
クラスタ内の第1のクライアントとして機能するクライアントであり、前記クラスタは、ロックサーバと前記第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック要求キューは、前記第2のクライアントの識別子を更に記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるクライアントであって、
前記第1のクライアントは、
書き込みロック解放要求を前記インタフェースカードに送信するように構成された送信ユニットであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、前記インタフェースカードが前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するように構成され、前記書き込みロック要求問い合わせメッセージは、前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にあるメモリアドレスを含む送信ユニットと、
前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するように構成された受信ユニットであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含む受信ユニットと
を含み、
前記送信ユニットは、書き込みロック占有要求を前記インタフェースカードに送信するように更に構成され、前記書き込みロック占有要求は、前記第2のクライアントの前記識別子と前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスとを含み、
前記受信ユニットは、前記第2のクライアントの前記識別子が前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに書き込まれることを示す、前記インタフェースカードにより送信された書き込みロック占有要求応答を受信するように更に構成され、
前記送信ユニットは、通知を前記第2のクライアントに送信するように更に構成され、前記通知は、前記第2のクライアントが前記書き込みロックを取得することを示すクライアント。
【請求項26】
前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にある前記メモリアドレスは、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスである、請求項25に記載のクライアント。
【請求項27】
前記書き込みロック要求キューは、前記第2のクライアントの書き込みロック優先度を更に記憶し、前記第2のクライアントの前記書き込みロック優先度は、前記書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である、請求項25に記載のクライアント。
【請求項28】
クラスタ内の第1のクライアントとして機能するクライアントであり、前記クラスタは、ロックサーバと前記第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にあるクライアントであって、
前記第1のクライアントは、
書き込みロック解放要求を前記インタフェースカードに送信するように構成された送信ユニットであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、前記インタフェースカードが前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、読み取りロック要求問い合わせメッセージを前記インタフェースカードに送信するように構成された送信ユニットと、
前記インタフェースカードにより送信された読み取りロック要求問い合わせ応答メッセージを受信するように構成された受信ユニットであり、前記読み取りロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含む受信ユニットと
を含み、
前記送信ユニットは、読み取りロック割り当てカウント変更要求を前記インタフェースカードに送信するように更に構成されるクライアント。
【請求項29】
クラスタ内の第1のクライアントとして機能するクライアントであり、前記クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック要求キューは、前記第2のクライアントの識別子を更に記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるクライアントであって、
前記第1のクライアントは、
書き込みロック解放要求を前記インタフェースカードに送信するように構成された送信ユニットであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、前記インタフェースカードが前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するように構成され、前記書き込みロック要求問い合わせメッセージは、前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にあるメモリアドレスを含む送信ユニットと、
前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するように構成された受信ユニットであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含む受信ユニットと
を含み、
前記送信ユニットは、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するように更に構成され、前記通知は、前記第2のクライアントに対して書き込みロック要求を前記インタフェースカードに送信するように命令するために使用されるクライアント。
【請求項30】
前記第2のクライアントの前記識別子が記憶された、前記書き込みロック要求キュー内にある前記メモリアドレスは、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスである、請求項29に記載のクライアント。
【請求項31】
前記書き込みロック要求キューは、前記第2のクライアントの書き込みロック優先度を更に記憶し、前記第2のクライアントの前記書き込みロック優先度は、前記書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である、請求項29に記載のクライアント。
【請求項32】
クラスタ内の第1のクライアントとして機能するクライアントであり、前記クラスタは、ロックサーバと前記第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にあるクライアントであって、
前記第1のクライアントは、
書き込みロック解放要求を前記インタフェースカードに送信するように構成された送信ユニットであり、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、前記インタフェースカードが前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、読み取りロック要求問い合わせメッセージを前記インタフェースカードに送信するように構成された送信ユニットと、
前記インタフェースカードにより送信された読み取りロック要求問い合わせ応答メッセージを受信するように構成された受信ユニットであり、前記読み取りロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含む受信ユニットと
を含み、
前記送信ユニットは、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するように更に構成され、前記通知は、前記第2のクライアントに対して読み取りロックを求めて申請するように命令するために使用されるクライアント。
【請求項33】
クラスタ内の第1のクライアントとして機能するクライアントであり、前記クラスタは、ロックサーバと前記第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるクライアントであって、
前記第1のクライアントは、
読み取りロック解放要求を前記インタフェースカードに送信するように構成された送信ユニットであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含み、前記インタフェースカードが前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するように構成され、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含む送信ユニットと、
前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するように構成された受信ユニットであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含む受信ユニットと
を含み、
前記送信ユニットは、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するように更に構成され、前記通知は、前記第2のクライアントに対して前記書き込みロックを求めて申請するように命令するために使用されるクライアント。
【請求項34】
クラスタ内の第1のクライアントとして機能するクライアントであり、前記クラスタは、ロックサーバと前記第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるクライアントであって、
前記第1のクライアントは、
読み取りロック解放要求を前記インタフェースカードに送信するように構成された送信ユニットであり、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含み、前記インタフェースカードが前記メモリ内の前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除したことに応じて、書き込みロック要求問い合わせメッセージを前記インタフェースカードに送信するように構成され、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含む送信ユニットと、
前記インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するように構成された受信ユニットであり、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含む受信ユニットと
を含み、
前記送信ユニットは、書き込みロック割り当て識別子変更要求を前記インタフェースカードに送信し、前記インタフェースカードが前記書き込みロック割り当て識別子変更要求に従って前記書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定したことに応じて、前記第2のクライアントの前記識別子に従って通知を前記第2のクライアントに送信するように更に構成され、前記通知は、前記第2のクライアントが前記書き込みロックを取得することを示すクライアント。
【請求項35】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントにより送信された読み取りロック解放要求を受信し、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含み、
前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信し、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、
書き込みロック要求問い合わせ応答メッセージを前記第1のクライアントに送信し、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含む
ように構成されるロックサーバ。
【請求項36】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントにより送信された読み取りロック解放要求を受信し、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含み、
前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信し、前記書き込みロック要求問い合わせメッセージは、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、
書き込みロック要求問い合わせ応答メッセージを前記第1のクライアントに送信し、前記書き込みロック要求問い合わせ応答メッセージは、前記第2のクライアントの前記識別子を含み、
前記第1のクライアントにより送信された書き込みロック割り当て識別子変更要求を受信し、
前記書き込みロック割り当て識別子変更要求に従って前記書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定する
ように構成されるロックサーバ。
【請求項37】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記第2のクライアントの識別子は、前記書き込みロック要求キューの前記キュー先頭に続く次のメモリアドレスに更に記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントの書き込みロック解放要求を受信し、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、
前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記書き込みロック要求キューの前記キュー先頭に続く前記次のメモリアドレスに記憶された前記第2のクライアントの前記識別子を求めて問い合わせ、
前記第2のクライアントの前記識別子を前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに書き込み、
前記第2のクライアントに対して前記書き込みロックを取得するように命令するための通知を前記第2のクライアントに送信する
ように構成されるロックサーバ。
【請求項38】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記第1のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記読み取りロック要求キューは、前記第2のクライアントの識別子を記憶し、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、前記読み取りロック割り当てカウントは0であり、前記第1のクライアントは、共有リソースのための前記書き込みロックを取得し、前記第2のクライアントは、前記共有リソースのための読み取りロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントにより送信された書き込みロック解放要求を受信し、前記書き込みロック解放要求は、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスを含み、
前記書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、
前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに従って前記書き込みロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記読み取りロック要求キューに記憶された前記第2のクライアントの前記識別子を決定するために、前記読み取りロック要求キューに問い合わせ、
前記メモリ内の前記読み取りロック割り当てカウントを増加させ、
前記第2のクライアントが読み取りロックを取得することを示すための通知を前記第2のクライアントに送信する
ように構成されるロックサーバ。
【請求項39】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントにより送信された読み取りロック解放要求を受信し、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含み、
前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記第2のクライアントの前記識別子を決定するために、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに問い合わせ、
前記第2のクライアントの前記識別子に従って、前記第2のクライアントに対して前記書き込みロックを求めて前記インタフェースカードに申請するように命令するための通知を前記第2のクライアントに送信する
ように構成されるロックサーバ。
【請求項40】
クラスタ内のロックサーバであり、前記クラスタは、前記ロックサーバと第1のクライアントと第2のクライアントとを含み、前記ロックサーバは、インタフェースカードとメモリとを含み、前記メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、前記読み取りロック要求キューは、前記第1のクライアントの識別子を記憶し、前記第2のクライアントの識別子は、前記書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、前記書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、前記読み取りロック割り当てカウントは、前記第1のクライアントにより取得された読み取りロックの数量であり、前記第1のクライアントは、共有リソースのための読み取りロックを取得し、前記第2のクライアントは、前記共有リソースのための書き込みロック待機状態にあるロックサーバであって、
前記インタフェースカードは、
前記第1のクライアントにより送信された読み取りロック解放要求を受信し、前記読み取りロック解放要求は、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にあるメモリアドレスを含み、
前記読み取りロック割り当てカウントを0まで減少させ、前記第1のクライアントの前記識別子が記憶された、前記読み取りロック要求キュー内にある前記メモリアドレスに従って前記読み取りロック要求キューから前記第1のクライアントの前記識別子を削除し、
前記第2のクライアントの前記識別子を決定するために、前記書き込みロック要求キューの前記キュー先頭の前記メモリアドレスに問い合わせ、
前記書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定し、
前記第2のクライアントの前記識別子に従って、前記第2のクライアントが前記書き込みロックを取得することを示すための通知を前記第2のクライアントに送信する
ように構成されるロックサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報技術の分野に関し、特にクラスタ内のロック管理方法、ロックサーバ及びクライアントに関する。
【背景技術】
【0002】
クラスタは、複数のクライアントを含み、クラスタ内の共有リソースの書き込み許可又は読み取り許可のような処理許可を取得するために、クライアントは、処理許可を求めてクラスタ内のロックサーバに申請する必要がある。これは、一般的にロックの申請と呼ばれる。一般的に、書き込み許可は、書き込みロック又は排他的ロックとも呼ばれ、読み取り許可は、読み取りロック又は共有ロックと呼ばれる。
【0003】
従来技術では、
図1に示すようにクライアントにより書き込みロックを求めて申請する方式において、クラスタは、ロックサーバと、クライアントAと、クライアントBとを含む。クライアントAは、リモートダイレクトメモリアクセス(Remote Direct Memory Access、RDMA)プロトコルを使用することにより、例えば、RDMAプロトコルにおけるアトミック操作(atomic operation)Compare-and-Swapを使用することにより書き込みロックを求めてロックサーバに申請することにより、クライアントAの識別子をロックサーバのメモリアドレスに書き込み、すなわち、クライアントAは、ロックサーバに申請することにより書き込みロックを取得し、すなわち、書き込みロックは、クライアントAに割り当てられる。クライアントBは、Compare-and-Swapを使用することにより書き込みロックを求めてロックサーバに申請し、ロックサーバは、クライアントAの識別子をクライアントBに返信し、クライアントBは、Compare-and-Swapを使用することにより、クライアントAの識別子に従って、書き込みロックを求めてクライアントAに申請する。クライアントAが書き込みロックを解放する前に、クライアントBは、書き込みロック待機状態にある。
【0004】
従来技術の実現解決策では、クライアントAが故障した場合、ロックサーバは、クライアントBが書き込みロック待機状態にあることを認識しないため、クライアントBは申請によって書き込みロックを取得することができず、常に書き込みロック待機状態にある。前述の説明から、従来技術におけるロックサーバは、1つのみの現クライアントのロック状態を取得することができることが認識され得る。
【発明の概要】
【0005】
第1の態様によれば、本発明の実施例は、クラスタ内のロック管理方法を提供し、クラスタは、複数のクライアントとロックサーバとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと書き込みロック割り当て識別子と読み取りロック割り当てカウントとを記憶し、書き込みロック要求キューは、共有リソースのための書き込みロック待機状態にあるクライアントの識別子と、同じ共有リソースのための書き込みロックを取得するクライアントの識別子とを含む、クラスタ内のクライアントの識別子を記録するために使用され、書き込みロック割り当て識別子は、共有リソースのための書き込みロックが割り当てられたか否かを示すために使用され、読み取りロック割り当てカウントは、共有リソースのために割り当てられた読み取りロックの数量を示すために使用され、ロック管理方法は、インタフェースカードにより、複数のクライアント内の第1のクライアントにより送信された第1の書き込みロック要求を受信するステップであり、第1の書き込みロック要求は、第1のクライアントの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送するステップと、第1のクライアントの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むステップと、インタフェースカードにより、読み取りロックが割り当てられているか否かを決定するために、読み取りロック割り当てカウントに問い合わせ、読み取りロックが割り当てられない場合、書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定するステップと、第1のクライアントが書き込みロックを取得することを示すためのメッセージを第1のクライアントに送信するステップと、読み取りロックが割り当てられている場合、第2のメッセージを第1のクライアントに送信するステップであり、第2のメッセージは、第1のクライアントが書き込みロック待機状態にあることを示すステップとを含む。本発明のこの実施例では、メモリ内の書き込みロック要求キューと書き込みロック割り当て識別子と書き込みロック割り当てカウントとを使用することにより、ロックサーバは、クライアントが書き込みロックを取得するか、或いは書き込みロックを求めて待機すると決定することができる。
【0006】
第1の態様を参照して、第1の可能な実現方式では、クラスタは、第2のクライアントを更に含み、この方法は、インタフェースカードにより、複数のクライアント内の第2のクライアントにより送信された第2の書き込みロック要求を受信するステップであり、第2の書き込みロック要求は、第2のクライアントの識別子と書き込みロック要求キュー内の第1のメモリアドレスとを搬送し、第1のメモリアドレスは、書き込みロック要求キューのキュー先頭のメモリアドレスを除き、第2のクライアントの識別子が書き込まれることができる、キュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスであるステップと、インタフェースカードにより、第2のクライアントの識別子を書き込みロック要求キュー内の第1のメモリアドレスに書き込むステップと、インタフェースカードにより、第2のクライアントが書き込みロック待機状態にあることを示すためのメッセージを第2のクライアントに送信するステップとを更に含む。したがって、ロックサーバは、書き込みロック要求キューを使用することにより、書き込みロック待機状態にあるクライアントを決定することができる。任意選択で、第1のメモリアドレスは、書き込みロック要求キューのキュー先頭のメモリアドレスを除き、第2のクライアントの識別子が書き込まれることができる、キュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスである。
【0007】
第1の態様を参照して、第2の可能な実現方式では、ロックサーバのメモリは、読み取りロック要求キューを含み、読み取りロックが割り当てられていることを読み取りロック割り当てカウントが示す場合、読み取りロック要求キューは、共有リソースのための読み取りロックを取得する、クラスタ内にある第3のクライアントの識別子を記録するために使用される。
【0008】
第1の可能な実現方式を参照して、第3の可能な実現方式では、第1の書き込みロック要求は、ロックリースを更に搬送し、ロックリースは、書き込みロックの有効期間を示すために使用される。ロックリースを使用することにより、ロックサーバは、ロックリースに従って書き込みロックを解放してもよい。
【0009】
第1の可能な実現方式を参照して、第4の可能な実現方式では、第1のクライアントが書き込みロックを取得した後に、この方法は、インタフェースカードにより、第1のクライアントにより送信された書き込みロック解放要求を受信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭のメモリアドレスから第1のクライアントの識別子を削除するステップとを更に含む。第1のクライアントは、書き込みロックを解放し、これにより、クラスタ内の他のクライアントが書き込みロックを取得してもよい。
【0010】
第1の可能な実現方式を参照して、第5の可能な実現方式では、第1のクライアントが書き込みロックを取得した後に故障になった場合、この方法は、インタフェースカードにより、書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭のメモリアドレスから第1のクライアントの識別子を削除するステップとを更に含む。任意選択で、インタフェースカードは、第1のクライアントが故障していると決定するために、クラスタ内の他のクライアントにより送信された通知を受信する。故障した第1のクライアントの書き込みロックを解放することは、故障した第1のクライアントが書き込みロックを長期間に保持することを妨げることができる。任意選択で、インタフェースカードは、第1のクライアントを除きクラスタ内のクライアントに通知を送信し、通知は、第1のクライアントにより保持された書き込みロックが解放されていることを示す。
【0011】
第4又は第5の可能な実現方式を参照して、第6の可能な実現方式では、この方法は、インタフェースカードにより、書き込みロック待機状態にある第2のクライアントを決定するために、書き込みロック要求キューに問い合わせるステップと、インタフェースカードにより、第2のクライアントに対して書き込みロックを求めてインタフェースカードに申請するように命令するための通知を第2のクライアントに送信するステップとを更に含む。ロックサーバは、適時に書き込みロック待機状態にあるクライアントに対して書き込みロックを求めて申請するように命令する。
【0012】
第5の可能な実現方式を参照して、第7の可能な実現方式では、この方法は、インタフェースカードにより、第1のクライアントを除きクラスタ内のクライアントに通知を送信するステップであり、通知は、第1のクライアントにより保持された書き込みロックが解放されていることを示すステップを更に含む。
【0013】
第4の可能な実現方式を参照して、第8の可能な実現方式では、この方法は、インタフェースカードにより、第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップであり、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアント識別子を求めて問い合わせるステップと、インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを第1のクライアントに送信するステップであり、書き込みロック要求問い合わせ応答メッセージは、次のメモリアドレスに記憶されたクライアント識別子を搬送するステップとを更に含む。
【0014】
第4の可能な実現方式を参照して、第9の可能な実現方式では、この方法は、インタフェースカードにより、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアント識別子を求めて問い合わせるステップと、インタフェースカードにより、次のメモリアドレスに記憶されたクライアント識別子に対応するクライアントに対して書き込みロックを求めて申請するように命令するための通知を、次のメモリアドレスに記憶されたクライアント識別子に対応するクライアントに送信するステップとを更に含む。したがって、書き込みロックは、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューのキュー先頭から始まるシーケンスに従って申請されてもよい。
【0015】
第4の可能な実現方式を参照して、第10の可能な実現方式では、書き込みロック要求キューは、書き込みロック待機状態にあるクライアントの書き込みロック優先度を更に記憶し、この方法は、インタフェースカードにより、第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップと、インタフェースカードにより、書き込みロック要求キュー内で書き込みロック待機状態にあるクライアントの書き込みロック優先度を求めて問い合わせるステップと、インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを第1のクライアントに送信するステップであり、問い合わせ応答メッセージは、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された識別子及び書き込みロック優先度を搬送するステップとを更に含む。
【0016】
第4の可能な実現方式を参照して、第11の可能な実現方式では、書き込みロック要求キューは、書き込みロック待機状態にあるクライアントの書き込みロック優先度を更に記憶し、この方法は、インタフェースカードにより、最高の書き込みロック優先度を有するクライアントを決定するために、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された書き込みロック優先度を求めて問い合わせるステップと、インタフェースカードにより、最高の書き込みロック優先度を有するクライアントに対して書き込みロックを求めて申請するように命令するための通知を、最高の書き込みロック優先度を有するクライアントに送信し、これにより、最高の書き込みロック優先度を有するクライアントが書き込みロックを求めて申請するステップとを更に含む。
【0017】
第4の可能な実現方式を参照して、第12の可能な実現方式では、この方法は、インタフェースカードにより、書き込みロック待機状態にあるクライアントを決定するために、書き込みロック要求キューに問い合わせるステップと、インタフェースカードにより、少なくとも2つのクライアントに対して書き込みロック要求をインタフェースカードに送信するように命令するための通知を、書き込みロック待機状態にあるクライアント内の少なくとも2つのクライアントに送信するステップとを更に含む。
【0018】
第1の態様に対応して、第2の態様によれば、本発明の実施例は、クラスタ内のロック管理方法を提供し、クラスタは、複数のクライアントとロックサーバとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと書き込みロック割り当て識別子と読み取りロック割り当てカウントとを記憶し、書き込みロック要求キューは、共有リソースのための書き込みロック待機状態にあるクライアントの識別子と、同じ共有リソースのための書き込みロックを取得するクライアントの識別子とを含む、クラスタ内のクライアントの識別子を記録するために使用され、書き込みロック割り当て識別子は、共有リソースのための書き込みロックが割り当てられたか否かを示すために使用され、読み取りロック割り当てカウントは、共有リソースのために割り当てられた読み取りロックの数量を示すために使用され、ロック管理方法は、複数のクライアント内の第1のクライアントにより、第1の書き込みロック要求をロックサーバのインタフェースカードに送信するステップであり、第1の書き込みロック要求は、第1のクライアントの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送するステップと、第1のクライアントにより、インタフェースカードにより送信された第1のメッセージを受信するステップであり、第1のメッセージは、インタフェースカードが第1のクライアントの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むことを示し、第1のクライアントが書き込みロックを取得するか、或いは書き込みロック待機状態にあることを示すステップと、インタフェースカードが第1のクライアントの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むことに失敗したことを第1のメッセージが示す場合、第1のクライアントにより、第2の書き込みロック要求をインタフェースカードに送信するステップであり、第2の書き込みロック要求は、第1のクライアントの識別子と書き込みロック要求キュー内の第1のメモリアドレスとを搬送し、第1のメモリアドレスは、第1のクライアントの識別子が書き込まれることができる、キュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスであるステップとを含む。任意選択で、第1のメモリアドレスは、第1のクライアントの識別子が書き込まれることができる、キュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスである。
【0019】
第2の態様を参照して、第1の可能な実現方式では、第1の書き込みロック要求及び第2の書き込みロック要求は、ロックリースを更に搬送し、ロックリースは、書き込みロックの有効期間を示すために使用される。ロックサーバは、第1のクライアントが長期間に書き込みロックを占有することを妨げるために、ロックリースに従って第1のクライアントの失効した書き込みロックを解放してもよい。
【0020】
第2の態様を参照して、第2の可能な実現方式では、第1のクライアントが書き込みロックを取得した後に、この方法は、第1のクライアントにより、書き込みロック解放要求をインタフェースカードに送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップを更に含む。
【0021】
第2の可能な実現方式を参照して、第3の可能な実現方式では、この方法は、第1のクライアントにより、書き込みロック要求問い合わせメッセージをインタフェースカードに送信するステップであり、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスを搬送するステップと、インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、書き込みロック要求問い合わせ応答メッセージは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアント識別子を搬送するステップと、第1のクライアントにより、書き込みロック要求問い合わせ応答メッセージで搬送されたクライアント識別子に従って、クライアントに対して書き込みロックを求めて申請するように命令するための通知を、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアント識別子に対応するクライアントに送信するステップとを更に含む。
【0022】
第2の可能な実現方式を参照して、第4の可能な実現方式では、この方法は、第1のクライアントにより、書き込みロック要求問い合わせメッセージをインタフェースカードに送信するステップと、インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、問い合わせ応答メッセージは、書き込みロック待機状態にあるクライアントの、書き込みロックキューに記録された識別子及び書き込みロック優先度を搬送するステップと、第1のクライアントにより、書き込みロック要求問い合わせ応答メッセージに従って最高の書き込みロック優先度を有するクライアントを決定するステップと、第1のクライアントにより、最高の書き込みロック優先度を有するクライアントに対して書き込みロック要求をインタフェースカードに送信するように命令するための通知を、最高の書き込みロック優先度を有するクライアントに送信するステップとを更に含む。
【0023】
第3の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、第1のクライアントとロックサーバとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、読み取りロック要求キューと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、同じ共有リソースのための読み取りロック待機状態にあるか、或いは読み取りロックを取得する、クラスタ内にあるクライアントの識別子を記録するために使用され、書き込みロック割り当て識別子は、共有リソースのための書き込みロックが割り当てられたか否かを示すために使用され、ロック管理方法は、インタフェースカードにより、複数のクライアント内の第1のクライアントにより送信された第1の読み取りロック要求を受信するステップであり、第1の読み取りロック要求は、第1のクライアントの識別子と読み取りロック要求キュー内の第1のメモリアドレスとを搬送するステップと、インタフェースカードにより、第1のクライアントの識別子を読み取りロック要求キュー内の第1のメモリアドレスに書き込むステップと、インタフェースカードにより、第1のメッセージを第1のクライアントに送信するステップであり、第1のメッセージは、書き込みロック割り当て識別子を搬送するステップとを含む。読み取りロック要求キューを使用することにより、クラスタ内のクライアントの読み取りロック要求状態が記録されることができ、すなわち、クライアントが読み取りロック待機状態にあるか、或いは読み取りロックを取得する。
【0024】
第3の態様を参照して、第1の可能な実現方式では、書き込みロックが割り当てられていることを書き込みロック割り当て識別子が示す場合、第1のメッセージは、第1のクライアントが読み取りロック待機状態にあることを示す。
【0025】
第3の態様を参照して、第2の可能な実現方式では、メモリは、読み取りロック割り当てカウントを更に記憶し、読み取りロック割り当てカウントは、共有リソースのために割り当てられた読み取りロックの数量を示すために使用され、書き込みロックが割り当てられないことを書き込みロック割り当て識別子が示す場合、インタフェースカードは、第1のクライアントに割り当てられた読み取りロックの数量に従って読み取りロック割り当てカウントを増加させ、第1のメッセージは、第1のクライアントが読み取りロックを取得することを示す。
【0026】
第3の態様の第1の可能な実現方式を参照して、第3の可能な実現方式では、複数のクライアントは、第2のクライアントを更に含み、メモリは、書き込みロック要求キューを更に記憶し、書き込みロック要求キューは、共有リソースのための書き込みロック待機状態にあるクライアントの識別子と、共有リソースのための書き込みロックを取得するクライアントの識別子とを含む、クラスタ内のクライアントの識別子を記録するために使用され、書き込みロックが割り当てられていることを書き込みロック割り当て識別子が示す場合、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶される。ロックサーバのメモリ内の書き込みロック要求キューは、書き込みロックを取得するクライアントを記録し、書き込みロックが割り当てられており、読み取りロック要求キュー内のクライアントが読み取りロック待機状態にあるため、ロックサーバは、書き込みロックを取得するクライアントについての情報を記録し、また、読み取りロック待機状態にあるクライアントについての情報も記録する。
【0027】
第3の態様を参照して、第4の可能な実現方式では、複数のクライアントは、第3のクライアントを更に含み、第3のクライアントの識別子は、読み取りロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キュー内の、第1の読み取りロック要求で搬送された第1のメモリアドレスは、第1のクライアントの識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスである。ロックサーバのメモリ内の読み取りロック要求キューは、複数のクライアントを記録してもよく、したがって、ロックサーバは、複数のクライアントの読み取りロック状態、すなわち、複数のクライアントが読み取りロック待機状態にあるか読み取りロックを取得するかを確認してもよい。任意選択で、第1のメモリアドレスは、第1のクライアントの識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスである。
【0028】
第3の態様を参照して、第5の可能な実現方式では、第1の読み取りロック要求は、ロックリースを更に搬送し、ロックリースは、読み取りロックの有効期間を示すために使用され、ロックリースが失効した場合、ロックサーバは、適時に読み取りロックを解放してもよい。
【0029】
第3の態様の第2の可能な実現方式を参照して、第6の可能な実現方式では、この方法は、インタフェースカードにより、第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にある第1のメモリアドレスを搬送するステップと、インタフェースカードにより、第1のクライアントに割り当てられた読み取りロックの数量に従ってメモリ内の読み取りロック割り当てカウントを減少させるステップと、インタフェースカードにより、読み取りロック要求キュー内の第1のメモリアドレスから第1のクライアントの識別子を削除するステップとを更に含む。第1のクライアントは、読み取りロックを解放し、これにより、ロックサーバが書き込みロックを割り当ててもよい。任意選択で、第1のクライアントは、書き込みロックを求めて申請する他のクライアントの通知に従って読み取りロック解放要求を送信する。
【0030】
第3の態様の第2の可能な実現方式を参照して、第7の可能な実現方式では、第1のクライアントが読み取りロックを取得した後に故障になった場合、この方法は、インタフェースカードにより、第1のクライアントに割り当てられた読み取りロックの数量に従ってメモリ内の読み取りロック割り当てカウントを減少させるステップと、インタフェースカードにより、読み取りロック要求キュー内の第1のメモリアドレスから第1のクライアントの識別子を削除するステップとを更に含む。第1のクライアントが読み取りロックを取得した後に故障になった場合、ロックサーバのインタフェースカードは、故障したクライアントが長期間に読み取りロックを保持することを妨げるために、第1のクライアントの読み取りロックを解放する。任意選択で、インタフェースカードは、他のクライアントの通知に従って第1のクライアントが故障していると決定し、次に、第1のクライアントにより保持された読み取りロックを解放してもよい。
【0031】
第4の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、複数のクライアントとロックサーバとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、読み取りロック要求キューと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、同じ共有リソースのための読み取りロック待機状態にあるか、或いは読み取りロックを取得する、クラスタ内にあるクライアントの識別子を記録するために使用され、書き込みロック割り当て識別子は、共有リソースのための書き込みロックが割り当てられたか否かを示すために使用され、ロック管理方法は、複数のクライアント内の第1のクライアントにより、第1の読み取りロック要求をインタフェースカードに送信するステップであり、第1の読み取りロック要求は、第1のクライアントの識別子と読み取りロック要求キュー内の第1のメモリアドレスとを搬送するステップと、第1のクライアントにより、インタフェースカードにより送信された第1のメッセージを受信するステップであり、第1のメッセージは、書き込みロック割り当て識別子を搬送するステップとを含む。
【0032】
第4の態様を参照して、第1の可能な実現方式では、書き込みロックが割り当てられていることを書き込みロック割り当て識別子が示す場合、第1のメッセージは、第1のクライアントが読み取りロック待機状態にあることを示す。
【0033】
第4の態様を参照して、第2の可能な実現方式では、書き込みロックが割り当てられないことを書き込みロック割り当て識別子が示す場合、第1のメッセージは、第1のクライアントが読み取りロックを取得することを示す。
【0034】
第4の態様を参照して、第3の可能な実現方式では、クラスタは、第2のクライアントを更に含み、第2のクライアントの識別子は、読み取りロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キュー内の、第1の読み取りロック要求で搬送された第1のメモリアドレスは、第1のクライアントの識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスである。任意選択で、第1のメモリアドレスは、第1のクライアントの識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスである。
【0035】
第4の態様を参照して、第4の可能な実現方式では、第1の読み取りロック要求は、ロックリースを更に搬送し、ロックリースは、読み取りロックの有効期間を示すために使用される。
【0036】
第4の態様の第2の可能な実現方式を参照して、第5の可能な実現方式では、第1のクライアントが読み取りロックを取得した場合、この方法は、第1のクライアントにより、読み取りロック解放要求をインタフェースカードに送信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送するステップを更に含む。任意選択で、第1のクライアントは、書き込みロックを求めて申請する他のクライアントにより送信された通知を受信し、読み取りロック解放操作を実行する。
【0037】
第5の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック要求キューは、第2のクライアントの識別子を更に記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントの書き込みロック解放要求を受信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップであり、書き込みロック要求問い合わせメッセージは、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを第1のクライアントに送信するステップであり、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、インタフェースカードにより、第1のクライアントにより送信された書き込みロック占有要求を受信するステップであり、書き込みロック占有要求は、第2のクライアントの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送するステップと、インタフェースカードにより、第2のクライアントの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むステップとを含む。本発明のこの実施例では、第1のクライアントが書き込みロックを解放するときに、書き込みロックは、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントに直接割り当てられる。
【0038】
第5の態様を参照して、第1の可能な実現方式では、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスである。したがって、識別子が書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアントは、書き込みロックを優先的に取得する。
【0039】
第5の態様を参照して、第2の可能な実現方式では、書き込みロック要求キューは、第2のクライアントの書き込みロック優先度を更に記憶し、第2のクライアントの書き込みロック優先度は、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である。したがって、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で、最高の書き込みロック優先度を有するクライアントは、書き込みロックを優先的に取得する。
【0040】
第6の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キューは、第2のクライアントの識別子を記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、読み取りロック割り当てカウントは0であり、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための読み取りロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントにより送信された書き込みロック解放要求を受信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、第1のクライアントにより送信された読み取りロック要求問い合わせメッセージを受信するステップと、インタフェースカードにより、読み取りロック要求問い合わせ応答メッセージを第1のクライアントに送信するステップであり、読み取りロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、インタフェースカードにより、第1のクライアントにより送信された読み取りロック割り当てカウント変更要求を受信するステップと、インタフェースカードにより、読み取りロック割り当てカウント変更要求に従ってメモリ内の読み取りロック割り当てカウントを増加させるステップとを含む。第1のクライアントの書き込みロックが解放されると、読み取りロックは、読み取りロック要求キューに記録された、読み取りロック待機状態にあるクライアントに直接割り当てられる。
【0041】
第7の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック要求キューは、第2のクライアントの識別子を更に記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、第1のクライアントにより、書き込みロック解放要求をインタフェースカードに送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードが書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除した場合、第1のクライアントにより、書き込みロック要求問い合わせメッセージをインタフェースカードに送信するステップであり、書き込みロック要求問い合わせメッセージは、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスを搬送するステップと、第1のクライアントにより、インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、第1のクライアントにより、書き込みロック占有要求をインタフェースカードに送信するステップであり、書き込みロック占有要求は、第2のクライアントの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送するステップと、第1のクライアントにより、第2のクライアントの識別子が書き込みロック要求キューのキュー先頭のメモリアドレスに書き込まれることを示す、インタフェースカードにより送信された書き込みロック占有要求応答を受信するステップと、第1のクライアントにより、通知を第2のクライアントに送信するステップであり、通知は、第2のクライアントが書き込みロックを取得することを示すステップとを含む。第1のクライアントが書き込みロックを解放するときに、書き込みロックは、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントに直接割り当てられる。
【0042】
第7の態様を参照して、第1の可能な実現方式では、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスである。したがって、識別子が書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアントは、書き込みロックを優先的に取得する。
【0043】
第7の態様を参照して、第2の可能な実現方式では、書き込みロック要求キューは、第2のクライアントの書き込みロック優先度を更に記憶し、第2のクライアントの書き込みロック優先度は、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である。したがって、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で、最高の優先度を有するクライアントは、書き込みロックを優先的に取得する。
【0044】
第8の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キューは、第2のクライアントの識別子を記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、読み取りロック割り当てカウントは0であり、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための読み取りロック待機状態にあり、ロック管理方法は、第1のクライアントにより、書き込みロック解放要求をインタフェースカードに送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードが書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除した場合、第1のクライアントにより、読み取りロック要求問い合わせメッセージをインタフェースカードに送信するステップと、第1のクライアントにより、インタフェースカードにより送信された読み取りロック要求問い合わせ応答メッセージを受信するステップであり、読み取りロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、第1のクライアントにより、読み取りロック割り当てカウント変更要求をインタフェースカードに送信するステップとを含む。第1のクライアントが読み取りロックを解放した場合、読み取りロックは、読み取りロック要求キューに記録された、読み取りロック待機状態にあるクライアントに直接割り当てられる。
【0045】
第9の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック要求キューは、第2のクライアントの識別子を更に記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、第1のクライアントにより、書き込みロック解放要求をインタフェースカードに送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードが書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除した場合、第1のクライアントにより、書き込みロック要求問い合わせメッセージをインタフェースカードに送信するステップであり、書き込みロック要求問い合わせメッセージは、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスを搬送するステップと、第1のクライアントにより、インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、第1のクライアントにより、第2のクライアントの識別子に従って通知を第2のクライアントに送信するステップであり、通知は、第2のクライアントに対して書き込みロック要求をインタフェースカードに送信するように命令するために使用されるステップとを含む。書き込みロックを解放するときに、第1のクライアントは、書き込みロック待機状態にあるクライアントに対して書き込みロック要求を送信するように命令する。
【0046】
第9の態様を参照して、第1の可能な実現方式では、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスである。識別子が書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアントは、第1のクライアントにより送信された書き込みロック要求通知を優先的に取得する。
【0047】
第9の態様を参照して、第2の可能な実現方式では、書き込みロック要求キューは、第2のクライアントの書き込みロック優先度を更に記憶し、第2のクライアントの書き込みロック優先度は、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である。したがって、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で、最高の書き込みロック優先度を有するクライアントは、第1のクライアントにより送信された書き込みロック要求通知を優先的に取得する。
【0048】
第10の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キューは、第2のクライアントの識別子を記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、読み取りロック割り当てカウントは0であり、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための読み取りロック待機状態にあり、ロック管理方法は、第1のクライアントにより、書き込みロック解放要求をインタフェースカードに送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードが書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除した場合、第1のクライアントにより、読み取りロック要求問い合わせメッセージをインタフェースカードに送信するステップと、第1のクライアントにより、インタフェースカードにより送信された読み取りロック要求問い合わせ応答メッセージを受信するステップであり、読み取りロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、第1のクライアントにより、第2のクライアントの識別子に従って通知を第2のクライアントに送信するステップであり、通知は、第2のクライアントに対して読み取りロックを求めて申請するように命令するために使用されるステップとを含む。書き込みロックを解放するときに、第1のクライアントは、読み取りロック待機状態にある第2のクライアントに対して読み取りロックを求めて申請するように命令し、第2のクライアントは、読み取りロック割り当てカウント変更要求をインタフェースカードに送信し、インタフェースカードは、読み取りロック割り当てカウントを変更し、第2のクライアントは、読み取りロックを取得する。
【0049】
第11の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、第1のクライアントの識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、第1のクライアントにより取得された読み取りロックの数量であり、第1のクライアントは、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、第1のクライアントにより、読み取りロック解放要求をインタフェースカードに送信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送するステップと、インタフェースカードが読み取りロック割り当てカウントを0まで減少させ、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューから第1のクライアントの識別子を削除した場合、第1のクライアントにより、書き込みロック要求問い合わせメッセージをインタフェースカードに送信するステップであり、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、第1のクライアントにより、インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、第1のクライアントにより、第2のクライアントの識別子に従って通知を第2のクライアントに送信するステップであり、通知は、第2のクライアントに対して書き込みロックを求めて申請するように命令するために使用されるステップとを含む。読み取りロックを解放するときに、第1のクライアントは、識別子が書き込みロック要求キューのキュー先頭に記録された、書き込みロック待機状態にある第2のクライアントに対して書き込みロックを求めて申請するように命令し、第2のクライアントは、通知に従って書き込みロック割り当て識別子変更要求をインタフェースカードに送信し、インタフェースカードは、書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定し、第2のクライアントは、書き込みロックを取得する。
【0050】
第12の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、第1のクライアントの識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、第1のクライアントにより取得された読み取りロックの数量であり、第1のクライアントは、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、第1のクライアントにより、読み取りロック解放要求をインタフェースカードに送信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送するステップと、インタフェースカードがメモリ内の読み取りロック割り当てカウントを0まで減少させ、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューから第1のクライアントの識別子を削除した場合、第1のクライアントにより、書き込みロック要求問い合わせメッセージをインタフェースカードに送信するステップであり、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、第1のクライアントにより、インタフェースカードにより送信された書き込みロック要求問い合わせ応答メッセージを受信するステップであり、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、第1のクライアントにより、書き込みロック割り当て識別子変更要求をインタフェースカードに送信するステップと、インタフェースカードが書き込みロック割り当て識別子変更要求に従って書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定した場合、第1のクライアントにより、第2のクライアントの識別子に従って通知を第2のクライアントに送信するステップであり、通知は、第2のクライアントが書き込みロックを取得することを示すステップとを含む。第1のクライアントが読み取りロックを解放するときに、書き込みロックは、識別子が書き込みロック要求キューのキュー先頭に記録された、書き込みロック待機状態にある第2のクライアントに直接割り当てられる。
【0051】
第13の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、第1のクライアントの識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、第1のクライアントにより取得された読み取りロックの数量であり、第1のクライアントは、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送するステップと、インタフェースカードにより、読み取りロック割り当てカウントを0まで減少させ、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップであり、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを第1のクライアントに送信するステップであり、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップとを含む。第1のクライアントの読み取りロックが解放されると、インタフェースカードは、書き込みロックを優先的に処理するために、識別子が書き込みロック要求キューのキュー先頭に記録された、書き込みロック待機状態にある第2のクライアントを求めて問い合わせる。
【0052】
第14の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、第1のクライアントの識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、第1のクライアントにより取得された読み取りロックの数量であり、第1のクライアントは、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送するステップと、インタフェースカードにより、読み取りロック割り当てカウントを0まで減少させ、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、第1のクライアントにより送信された書き込みロック要求問い合わせメッセージを受信するステップであり、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック要求問い合わせ応答メッセージを第1のクライアントに送信するステップであり、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送するステップと、インタフェースカードにより、第1のクライアントにより送信された書き込みロック割り当て識別子変更要求を受信するステップと、インタフェースカードにより、書き込みロック割り当て識別子変更要求に従って書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定するステップとを含む。第1のクライアントの読み取りロックが解放されるときに、書き込みロックは、書き込みロック要求キューのキュー先頭に記録された、書き込みロック待機状態にあるクライアントに直接割り当てられる。
【0053】
第15の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに更に記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントの書き込みロック解放要求を受信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶された第2のクライアントの識別子を求めて問い合わせるステップと、インタフェースカードにより、第2のクライアントの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むステップと、インタフェースカードにより、第2のクライアントに対して書き込みロックを取得するように命令するための通知を第2のクライアントに送信するステップとを含む。本発明のこの実施例では、第1のクライアントが書き込みロックを解放するときに、ロックサーバは、書き込みロック要求キュー内に記録された、書き込みロック待機状態にあるクライアントに書き込みロックを割り当てる。
【0054】
第16の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、第1のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キューは、第2のクライアントの識別子を記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、読み取りロック割り当てカウントは0であり、第1のクライアントは、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための読み取りロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントにより送信された書き込みロック解放要求を受信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカードにより、書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定するステップと、インタフェースカードにより、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、読み取りロック要求キューに記憶された第2のクライアントの識別子を決定するために、読み取りロック要求キューに問い合わせるステップと、インタフェースカードにより、メモリ内の読み取りロック割り当てカウントを増加させるステップと、インタフェースカードにより、第2のクライアントが読み取りロックを取得することを示すための通知を第2のクライアントに送信するステップとを含む。第1のクライアントの書き込みロックが解放されるときに、ロックサーバは、読み取りロック要求キューに記録された、読み取りロック待機状態にあるクライアントに読み取りロックを直接割り当てる。
【0055】
第17の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、第1のクライアントの識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、第1のクライアントにより取得された読み取りロックの数量であり、第1のクライアントは、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送するステップと、インタフェースカードにより、読み取りロック割り当てカウントを0まで減少させ、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、第2のクライアントの識別子を決定するために、書き込みロック要求キューのキュー先頭のメモリアドレスに問い合わせるステップと、インタフェースカードにより、第2のクライアントの識別子に従って、第2のクライアントに対して書き込みロックを求めてインタフェースカードに申請するように命令するための通知を第2のクライアントに送信するステップとを含む。第1のクライアントの読み取りロックが解放されるときに、インタフェースカードは、書き込みロックを優先的に処理するために、識別子が書き込みロック要求キューのキュー先頭に記録された、書き込みロック待機状態にある第2のクライアントを求めて問い合わせる。
【0056】
第18の態様によれば、本発明の実施例は、クラスタ内の他のロック管理方法を提供し、クラスタは、ロックサーバと第1のクライアントと第2のクライアントとを含み、ロックサーバは、インタフェースカードとメモリとを含み、メモリは、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶し、読み取りロック要求キューは、第1のクライアントの識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、第1のクライアントにより取得された読み取りロックの数量であり、第1のクライアントは、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にあり、ロック管理方法は、インタフェースカードにより、第1のクライアントにより送信された読み取りロック解放要求を受信するステップであり、読み取りロック解放要求は、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送するステップと、インタフェースカードにより、読み取りロック割り当てカウントを0まで減少させ、第1のクライアントの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューから第1のクライアントの識別子を削除するステップと、インタフェースカードにより、第2のクライアントの識別子を決定するために、書き込みロック要求キューのキュー先頭のメモリアドレスに問い合わせるステップと、インタフェースカードにより、書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定するステップと、インタフェースカードにより、第2のクライアントの識別子に従って、第2のクライアントが書き込みロックを取得することを示すための通知を第2のクライアントに送信するステップとを含む。第1のクライアントの読み取りロックが解放されるときに、書き込みロックは、書き込みロック要求キューのキュー先頭に記録された、書き込みロック待機状態にあるクライアントに割り当てられる。
【0057】
前述の実施例によれば、本発明の実施例は、ロックサーバを更に提供し、ロックサーバは、前述の実施例におけるロックサーバの機能を実現するように構成されたメモリ及びインタフェースカードを含む。
【0058】
前述の実施例によれば、本発明の実施例は、本発明の前述の実施例に対応する解決策を実現するために、前述の実施例に記載されたクラスタ内の第1のクライアントとして機能するように構成されたクライアントを更に提供する。クライアントは、本発明の前述の実施例におけるクラスタ内の第1のクライアントの機能を実現する構造ユニットを含むか、或いは本発明の前述の実施例におけるクラスタ内の第1のクライアントの機能を実現する。対応して、本発明の実施例は、不揮発性コンピュータ読み取り可能記憶媒体及びコンピュータプログラムプロダクトを更に提供する。不揮発性コンピュータ読み取り可能記憶媒体及びコンピュータプログラムプロダクトに含まれるコンピュータ命令がクライアントのメモリにロードされ、クライアントの中央処理装置(Central Processing Unit、CPU)がコンピュータ命令を実行した場合、クライアントは、本発明の前述の実施例におけるクラスタ内の第1のクライアントの機能を実現する。
【0059】
前述の実施例を参照して、本発明の実施例は、クラスタを更に提供し、クラスタは、ロックサーバとクライアントとを含み、ロックサーバ及びクライアントについては、前述の実施例の説明に参照が行われてもよい。
【0060】
本発明の実施例において提供されるクラスタ内のロック管理方法、ロックサーバ及びクラスタ内のクライアントによれば、ロックサーバ及びクライアントが読み取りロック要求、書き込みロック要求、書き込みロック解放要求及び読み取りロック解放要求のような操作を処理する場合、ロックサーバのインタフェースカード及びメモリは、互いに直接通信し、ロックサーバの中央処理装置は、前述の操作を処理する必要はない。したがって、(Transmission Control Protocol/Internet Protocol、TCP/IP)プロトコルを使用することによる通信に比べて、クライアントとロックサーバとの間の相互作用が低減される。
【図面の簡単な説明】
【0061】
【
図2】本発明の実施例によるクラスタの構成図である。
【
図3】本発明の実施例によるロックサーバの構成図である。
【
図4】本発明の実施例によるロックサーバのメモリの概略図である。
【
図5】本発明の実施例に従って書き込みロックを要求するフローチャートである。
【
図6】本発明の実施例によるロックサーバのメモリの概略図である。
【
図7】本発明の実施例によるロックサーバのメモリの概略図である。
【
図8】本発明の実施例に従って読み取りロックを要求するフローチャートである。
【
図9】本発明の実施例によるロックサーバのメモリの概略図である。
【
図10】本発明の実施例によるロックサーバのメモリの概略図である。
【
図11】本発明の実施例によるクライアントの概略構成図である。
【発明を実施するための形態】
【0062】
図2に示すように、本発明の実施例におけるクラスタは、ロックサーバとクライアントAとクライアントBとを含み、クライアントA及びクライアントBは、RDMAプロトコルを使用することによりロックサーバと別々に通信する。ロックサーバのメモリは、ロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶する。詳細については、以下の説明に参照が行われてもよい。
【0063】
図3に示すように、ロックサーバは、メモリ301とインタフェースカード302とを含み、インタフェースカード302は、イーサーネットプロトコル(Ethernet)をサポートするネットワークインタフェースカード(Network Interface Card、NIC)、若しくはInfiniBandプロトコルに基づくインタフェースカード、又はメモリへのダイレクトリモートアクセス、例えば、RDMAを実現することができるプロトコルを実現可能な他のインタフェースカードでもよい。本発明のこの実施例におけるメモリ301は、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、デュアルインラインメモリモジュール(Dual-Inline-Memory-Modules、DIMM)、半導体メモリ(Semiconductor Memory、SCM)、不揮発性メモリ(Non-volatile memory、NVM)等でもよく、或いはこれらの組み合わせでもよく、本発明のこの実施例では限定されない。クライアントは、サーバ、パーソナルコンピュータ及び他の端末でもよい。クライアントは、一般的にCPUとメモリとを含む。クライアントは、一般的にロックサーバと通信するように構成されたインタフェースカードを更に含む。CPU、メモリ及びインタフェースカードは、バスを使用することにより互いに通信する。
図2に示すクラスタによれば、
図4に示すように、本発明のこの実施例では、ロックサーバのメモリ301内のロック要求キューは、書き込みロック要求キューである。他の実現では、ロックサーバのメモリ301内のロック要求キューは、読み取りロック要求キューである。他の実現では、ロックサーバのメモリ301内のロック要求キューは、書き込みロック要求キュー及び読み取りロック要求キューである。
【0064】
本発明のこの実施例では、書き込みロック要求キュー及び読み取りロック要求キューは、メモリ301内のデータ構造であり、書き込みロック要求キューは、書き込みロック待機状態にあるか、或いは書き込みロックを取得するクライアントの識別子を記憶するために使用され、読み取りロック要求キューは、読み取りロック待機状態にあるか、或いは読み取りロックを取得するクライアントの識別子を記憶するために使用される。本発明のこの実施例では、記載の書き込みロック要求キュー及び読み取りロック要求キューは、同じ共有リソースを要求するクライアントの識別子を記憶し、同じ共有リソースを要求することは、同じ共有リソースのための書き込みロック又は読み取りロックを求めて申請することを示す。すなわち、書き込みロック要求キューは、共有リソースのための書き込みロック待機状態にあるクライアントの識別子と、同じ共有リソースのための書き込みロックを取得するクライアントの識別子とを含む、クラスタ内のクライアントの識別子を記録するために使用され、読み取りロック要求キューは、同じ共有リソースのための読み取りロック待機状態にあるか、或いは読み取りロックを取得する、クラスタ内にあるクライアントの識別子を記録するために使用される。書き込みロック割り当て識別子は、同じ共有リソースのための書き込みロックが割り当てられたか否かを識別するために使用され、読み取りロック割り当てカウントは、同じ共有リソースのために割り当てられた読み取りロックの対応する数量を識別するために使用される。メモリ301の読み取りロック割り当てカウントの具体的な実現では、1つのメモリアドレスは、ロックサーバにより割り当てられた読み取りロックの数量を記録するために割り当てられてもよく、或いは複数のメモリアドレスが使用され、各メモリアドレスは、クライアントにより取得された読み取りロックの、読み取りロック要求キューに記録された数量を記録する。本発明のこの実施例の具体的な実現では、書き込みロック要求キューは、メモリ301内のデータ構造であり、読み取りロック要求キューは、メモリ301内のデータ構造である。具体的な実現の中で、書き込みロック要求キュー及び読み取りロック要求キューのそれぞれは、配列又は他の構造でもよい。
【0065】
本発明のこの実施例では、クライアントの識別子が書き込みロック要求キュー内のメモリアドレスに記憶されること、及びクライアントの識別子が書き込みロック要求キューに記録されることは、同じ意味を有する。同様に、クライアントの識別子が読み取りロック要求キュー内のメモリアドレスに記憶されること、及びクライアントの識別子が読み取りロック要求キューに記録されることは、同じ意味を有する。書き込みロックが同じ共有リソースのために割り当てられたか否かを識別するために書き込みロック割り当て識別子が使用されること、及び書き込みロックが割り当てられたか否かを示すために書き込みロック割り当て識別子が使用されることは、同じ意味を有する。本発明のこの実施例では、クラスタは、複数のクライアントを含み、複数のクライアント内のクライアントは、複数のクライアントに含まれるクライアントと同じ意味を有する。例えば、複数のクライアント内の第2のクライアントは、複数のクライアントに含まれる第2のクライアントと同じ意味を有する。
【0066】
具体的な実現の中で、ロックサーバは、インタフェースカード302を使用することにより各クライアントと通信し、書き込みロック要求キューのキュー先頭のメモリアドレスと書き込みロック要求キューの長さ情報とを各クライアントに送信し、同様に、読み取りロック要求キューのキュー先頭のメモリアドレスと読み取りロック要求キューの長さ情報とを各クライアントに送信し、書き込みロック割り当て識別子のメモリアドレスについての情報と読み取りロック割り当てカウントのメモリアドレスについての情報とを各クライアントに送信する。
【0067】
クライアントA及びクライアントBは、RDMAプロトコルを使用することによりロックサーバと通信する。クライアントは、RDMAプロトコルを使用することによりロックサーバと通信し、TCP/IPプロトコルを使用することにより通信を実行することに比べて、クライアントとロックサーバとの間の相互作用が低減される。
【0068】
図5に示すように、本発明の実施例は、クライアントにより書き込みロックを要求する処理を提供する。
【0069】
ステップ501:インタフェースカード302は、クライアントAの書き込みロック要求を受信する。
【0070】
クライアントAは、書き込みロック要求をロックサーバに送信し、書き込みロック要求は、クライアントAの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送する。
【0071】
メモリ301内の書き込みロック要求キューは、書き込みロック待機状態にあるクライアントの識別子と、書き込みロックを取得するクライアントの識別子とを含む、クライアントの識別子を記録するために使用されてもよく、ロックサーバは、書き込みロック要求キューに従ってクラスタ内のクライアントの書き込みロック申請状態を決定してもよい。
【0072】
ステップ502:インタフェースカード302は、クライアントAの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込む。
【0073】
ロックサーバのインタフェースカード302は、書き込みロック要求を受信し、
図6に示すように、書き込みロック要求キューのキュー先頭の、書き込みロック要求で搬送されたメモリアドレスに従って、クライアントAの識別子を書き込みロック要求キューのキュー先頭に書き込む。
【0074】
クライアントAの識別子が書き込みロック要求キューのキュー先頭に成功して書き込まれた場合、これは、ロックサーバが書き込みロックをクラスタ内のクライアントに割り当てず、クライアントが書き込みロックを求めて待機していないことを示す。任意選択で、インタフェースカード302は、クライアントAの識別子が書き込みロック要求キューのキュー先頭のメモリアドレスに書き込まれたことを示すためのメッセージをクライアントAに返信する。
【0075】
任意選択で、インタフェースカード302がクライアントAの識別子を書き込みロック要求キューのキュー先頭に書き込むことに失敗した場合、インタフェースカード302は、クライアントAの識別子が書き込みロック要求キューのキュー先頭に書き込まれることに失敗したことを示すためのメッセージをクライアントAに送信する。この場合、クライアントAは、書き込みロック要求をインタフェースカード302に再び送信してもよく、書き込みロック要求は、クライアントAの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスに続く次のメモリアドレスとを搬送し、インタフェースカード302は、クライアントAの識別子を書き込みロック要求キュー内の次のメモリアドレスに書き込む。クライアントAの識別子が書き込みロック要求キュー内の次のメモリアドレスに書き込まれることに失敗した場合、クライアントAは、書き込みロック要求キューのキュー先頭から始まる第3のメモリアドレスを順次に選択し、前述の操作を繰り返す。クライアントAの識別子が書き込みロック要求キュー内のメモリアドレスに成功して書き込まれるまで、クライアントAは、書き込みロック要求をインタフェースカード302に再び送信し、書き込みロック要求は、クライアントAの識別子と書き込みロック要求キュー内の第3のメモリアドレスとを搬送し、すなわち、書き込みロック要求は、クライアントAの識別子が書き込まれることができる、書き込みロック要求キュー内にあるメモリアドレスを搬送する。クライアントAは、固定の周期の間隔で書き込みロック要求を送信してもよく、或いはクライアントAの識別子が書き込みロック要求キューに書き込まれることに失敗したことを示すメッセージを受信した場合に書き込みロック要求を送信してもよい。
【0076】
任意選択で、インタフェースカード302がクライアントAの識別子を書き込みロック要求キューのキュー先頭に書き込むことに失敗した場合、インタフェースカード302は、書き込みロック要求キューのキュー先頭から始まり、クライアントAの識別子が書き込まれることができるメモリアドレスを求めて書き込みロック要求キューに順次に問い合わせ、クライアントAの識別子を書き込みロック要求キューに書き込み、インタフェースカード302は、クライアントAの識別子が書き込みロック要求キュー内のメモリアドレスに書き込まれたことを示すためのメッセージをクライアントAに送信する。任意選択で、メッセージは、クライアントAの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスを搬送してもよい。
【0077】
ステップ503:読み取りロックが割り当てられているか否かを問い合わせる。
【0078】
本発明のこの実施例では、0である書き込みロック割り当て識別子が、ロックサーバが書き込みロックを割り当てないことを示し、1である書き込みロック割り当て識別子が、ロックサーバが書き込みロックを割り当てていることを示す例が使用される。
【0079】
任意選択で、インタフェースカード302がクライアントAの識別子を書き込みロック要求キューのキュー先頭に成功して書き込んだ場合、インタフェースカード302は、読み取りロックが割り当てられているか否かを決定するために、読み取りロック割り当てカウントに問い合わせる。ロックサーバが読み取りロックを割り当てない場合、書き込みロック割り当て識別子は、書き込みロック割り当て識別子のメモリアドレスに従って書き込みロック割り当て済状態に設定され(本発明のこの実施例では1に設定され)、インタフェースカード302は、クライアントAが書き込みロックを取得することを示すためのメッセージをクライアントAに送信する。例示的に、メッセージは、書き込みロック割り当て識別子と読み取りロック割り当てカウントとを搬送してもよく、書き込みロック割り当て識別子は1であり、読み取りロック割り当てカウントは0である。0である読み取りロック割り当てカウントは、読み取りロックが割り当てられていないことを示す。
【0080】
任意選択で、インタフェースカード302がクライアントAの識別子を書き込みロック要求キューのキュー先頭に成功して書き込んだ場合、インタフェースカード302は、クライアントAの識別子が書き込みロック要求キューのキュー先頭に書き込まれたことを示すためのメッセージをクライアントAに送信し、クライアントAは、書き込みロック割り当て識別子変更要求をインタフェースカード302に送信し、書き込みロック割り当て識別子変更要求は、書き込みロック割り当て識別子のメモリアドレスを搬送し、インタフェースカード302は、ロックサーバが読み取りロックを割り当てているか否かを決定するために、読み取りロック割り当てカウントに問い合わせる。ロックサーバが読み取りロックを割り当てない場合、書き込みロック割り当て識別子は、書き込みロック割り当て識別子のメモリアドレスに従って書き込みロック割り当て済状態に設定され(本発明のこの実施例では1に設定され)、インタフェースカード302は、クライアントAが書き込みロックを取得することを示すためのメッセージをクライアントAに送信する。具体的に、メッセージは、書き込みロック割り当て識別子と読み取りロック割り当てカウントとを搬送してもよく、書き込みロック割り当て識別子は1であり、読み取りロック割り当てカウントは0である。
【0081】
読み取りロック割り当てカウントに問い合わせた後に、ロックサーバが読み取りロックを割り当てないとインタフェースカード302が決定した場合、インタフェースカード302は、クライアントAが書き込みロックを成功して取得することを示すために、書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定し、すなわち、書き込みロック割り当て識別子を1に設定する。すなわち、書き込みロックは、クライアントAに成功して割り当てられる。読み取りロック割り当てカウントに問い合わせた後に、ロックサーバが読み取りロックを割り当てているとインタフェースカード302が決定した場合、インタフェースカード302は、書き込みロック割り当て識別子を1に設定せず、すなわち、書き込みロック割り当て識別子は、依然として書き込みロック未割り当て状態にあり(本発明のこの実施例では、この場合に書き込みロック割り当て識別子は0であり)、クライアントAは、書き込みロック待機状態にあり、インタフェースカード302は、クライアントAが書き込みロック待機状態にあることを示すためのメッセージをクライアントAに送信する。例示的に、メッセージは、書き込みロック割り当て識別子と読み取りロック割り当てカウントとを搬送してもよく、書き込みロック割り当て識別子は0であり、読み取りロック割り当てカウントは0ではない。0ではない読み取りロック割り当てカウントは、読み取りロックが割り当てられていることを示す。
【0082】
本発明のこの実施例では、インタフェースカード302は、読み取りロック割り当てカウントに問い合わせ、ロックサーバが読み取りロックを割り当てない(読み取りロック割り当てカウントは0である)と決定し、インタフェースカード302は、書き込みロック割り当て識別子を1に設定する。
【0083】
クラスタ内で、ロックサーバが読み取りロックを割り当てている場合、すなわち、クライアントAが変更する必要がある共有リソースがクラスタ内の他のクライアントにより読み取られている場合、書き込み許可は、クライアントAに割り当てられることができず、すなわち、書き込みロックは、割り当てられることができない。したがって、クライアントAの識別子が書き込みロック要求キューのキュー先頭に書き込まれた場合、ロックサーバが読み取りロックを割り当てているか否かが決定される必要がある。インタフェースカード302が問い合わせにより、ロックサーバが読み取りロックを割り当てないことを取得した場合、書き込みロック要求キューのキュー先頭内のクライアントは、書き込みロックを取得し、すなわち、クライアントAは、書き込みロックを取得する。インタフェースカード302が問い合わせにより、ロックサーバが読み取りロックを割り当てていることを取得した場合、クライアントAは、書き込みロックを求めて待機する。
【0084】
インタフェースカード302が、書き込みロック要求キューのキュー先頭の、クライアントAにより送信された書き込みロック要求で搬送されたメモリアドレスに従って、クライアントAの識別子を書き込みロック要求キューのキュー先頭に書き込むことに失敗した場合、クライアントAの識別子が書き込まれることができるメモリアドレスを見つけるために、書き込みロック要求キューは、書き込みロック要求キューのキュー先頭から始まり順次に問い合わせされ、クライアントAの識別子は、書き込みロック要求キューに書き込まれる。書き込みロック要求キューのキュー先頭は、最初に書き込みロックを求めて申請したクライアントを記録し、1つの書き込みロックは、1つのみのクライアントに割り当てられることができる。したがって、書き込みロック要求キューのキュー先頭のクライアントが書き込みロックを取得している場合又は書き込みロックを求めて待機している場合、クライアントAの識別子は、書き込みロック要求キューのキュー先頭に書き込まれることに失敗する。
【0085】
本発明のこの実施例では、クライアントAの識別子が書き込みロック要求キューのキュー先頭に成功して書き込まれ、読み取りロックが割り当てられないことをメモリ301内の読み取りロック割り当てカウントが記録し、すなわち、クライアントAが書き込みロックを取得する例が使用される。これに基づいて、他の実施例では、ロックサーバのインタフェースカード302は、クライアントBにより送信された書き込みロック要求を受信し、クライアントBにより送信された書き込みロック要求は、クライアントBの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送する。クライアントAの識別子が書き込みロック要求キューのキュー先頭に書き込まれているため、インタフェースカード302は、クライアントBの識別子を書き込みロック要求キューのキュー先頭に書き込むことに失敗する。任意選択で、インタフェースカード302は、クライアントBの識別子が書き込みロック要求キューのキュー先頭に書き込まれることに失敗したことを示すためのメッセージをクライアントBに送信する。インタフェースカード302は、クライアントBの識別子を書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに書き込み、すなわち、
図7に示すように、書き込みロック要求キューのキュー先頭から始まり、クライアントBの書き込みロック要求は、書き込みロック要求キューの第2の位置にある。クライアントBの識別子を書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに書き込む具体的な方式については、クライアントAの識別子を書き込みロック要求キューに書き込む前述の説明に参照が行われてもよく、詳細はここでは説明しない。任意選択で、インタフェースカード302は、クライアントの識別子が書き込まれることができる、書き込みロック要求キューのキュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスを求めて書き込みロック要求キューに問い合わせ、クライアントの識別子が書き込まれることができるメモリアドレスをクライアントBに通知するための通知をクライアントBに送信する。任意選択で、クライアントの識別子が書き込まれることができるメモリアドレスは、クライアントの識別子が書き込まれることができる、書き込みロック要求キューのキュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスでもよい。
【0086】
この場合、メモリ301内の書き込みロック割り当て識別子は、書き込みロック割り当て済状態に設定され(本発明のこの実施例では1に設定され)、すなわち、書き込みロックは、書き込みロック要求キューのキュー先頭内のクライアントAに割り当てられ、クライアントBは、書き込みロック待機状態にある。インタフェースカード302は、もはやメモリ301内の書き込みロック割り当て識別子を変更しない。任意選択で、インタフェースカード302は、クライアントBが書き込みロック待機状態にあることを示すためのメッセージをクライアントBに送信する。具体的に、メッセージは、クライアントBの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスを搬送してもよい。クライアントBは、メモリアドレスに従って、クライアントBが書き込みロック待機状態にあると決定する。したがって、ロックサーバは、この場合のクラスタ内のクライアントの書き込みロック要求状態を決定し、すなわち、書き込みロックは、クライアントAに割り当てられ、クライアントBは、書き込みロック待機状態にある。書き込みロックがクライアントAに割り当てられることはまた、クライアントAが書き込みロックを保持し、クライアントAが書き込みロックの保持者であることとも呼ばれる。任意選択で、クライアントによりロックサーバに送信された書き込みロック要求は、書き込みロックリース、すなわち、クライアントにより保持される書き込みロックの有効時間を更に搬送してもよく、有効時間が失効したときにクライアントがリースを更新していない場合、書き込みロックは自動的に無効になる。
【0087】
図8に示すように、本発明の実施例は、クライアントにより読み取りロックを要求する処理を更に提供する。本発明のこの実施例では、ロックサーバは、読み取りロック要求キューを更に含む。本発明のこの実施例における書き込みロック要求キューについての説明については、前述の説明に参照が行われてもよい。読み取りロック要求キューは、読み取りロック待機状態にあるか、或いは読み取りロックを取得するクライアントの識別子を記憶するために使用される。したがって、ロックサーバは、読み取りロック要求キューに従ってクラスタ内のクライアントの読み取りロック申請状態を決定してもよい。割り当てられている読み取りロックの数量は、読み取りロック割り当てカウントに従って決定されてもよい。
【0088】
ステップ801:インタフェースカード302は、クライアントCにより送信された読み取りロック要求を受信する。
【0089】
本発明のこの実施例では、メモリ301は、読み取りロック要求キューを更に含み、クラスタは、クライアントCを更に含む。ロックサーバのインタフェースカード302は、クライアントCにより送信された読み取りロック要求を受信し、読み取りロック要求は、クライアントCの識別子と読み取りロック要求キューのキュー先頭のメモリアドレスとを搬送する。
【0090】
ステップ802:インタフェースカード302は、クライアントCの識別子を読み取りロック要求キューに書き込む。
【0091】
具体的に、インタフェースカード302は、クライアントCの識別子を読み取りロック要求キューのキュー先頭のメモリアドレスに書き込み、クラスタ内の他のクライアントの識別子が読み取りロック要求キューのキュー先頭のメモリアドレスに書き込まれない場合、
図9に示すように、クライアントCの識別子は、読み取りロック要求キューのキュー先頭のメモリアドレスに成功して書き込まれる。任意選択で、インタフェースカード302は、クライアントCの識別子が読み取りロック要求キューのキュー先頭のメモリアドレスに書き込まれたことを示すメッセージをクライアントAに送信する。
【0092】
クラスタ内の他のクライアントの識別子が読み取りロック要求キューのキュー先頭のメモリアドレスに書き込まれた場合、クライアントCの識別子は、読み取りロック要求キューのキュー先頭のメモリアドレスに書き込まれることに失敗する。任意選択で、インタフェースカード302は、クライアントCの識別子が読み取りロック要求キューのキュー先頭に書き込まれることに失敗したことを示すためのメッセージをクライアントCに送信する。この場合、クライアントCは、読み取りロック要求をインタフェースカード302に再び送信してもよく、読み取りロック要求は、クライアントCの識別子と読み取りロック要求キューのキュー先頭に続く次のメモリアドレスとを搬送し、インタフェースカード302は、クライアントCの識別子を読み取りロック要求キューのキュー先頭に続く次のメモリアドレスに書き込む。クライアントCの識別子が読み取りロック要求キューのキュー先頭に続く次のメモリアドレスに書き込まれることに失敗した場合、前述の操作が繰り返され、クライアントCの識別子が読み取りロック要求キュー内のメモリアドレスに成功して書き込まれるまで、クライアントCは、読み取りロック要求をインタフェースカード302に再び送信し、読み取りロック要求は、クライアントCの識別子と読み取りロック要求キューのキュー先頭から始まる第3のメモリアドレスとを搬送し、すなわち、読み取りロック要求は、クライアントCの識別子が書き込まれることができるメモリアドレスを搬送する。クライアントCは、読み取りロック要求を周期的に送信してもよく、或いはクライアントCの識別子が読み取りロック要求キューに書き込まれることに失敗したことを示すメッセージを受信した場合に読み取りロック要求を送信してもよい。任意選択で、インタフェースカード302は、クライアントの識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスを求めて読み取りロック要求キューに問い合わせ、クライアントの識別子が書き込まれることができるメモリアドレスをクライアントCに通知するための通知をクライアントCに送信する。任意選択で、クライアントの識別子が書き込まれることができるメモリアドレスは、クライアントの識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスである。
【0093】
任意選択で、インタフェースカード302がクライアントCの識別子を読み取りロック要求キューのキュー先頭に書き込むことに失敗した場合、インタフェースカード302は、読み取りロック要求キューのキュー先頭から始まり、クライアントCの識別子が書き込まれることができるメモリアドレスを求めて読み取りロック要求キューに順次に問い合わせ、クライアントCの識別子を読み取りロック要求キューに書き込み、インタフェースカード302は、クライアントCの識別子が読み取りロック要求キュー内のメモリアドレスに書き込まれたことを示すためのメッセージをクライアントCに送信する。任意選択で、メッセージは、クライアントCの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送してもよい。
【0094】
クラスタ内の共有リソースは、複数のクライアントにより同時に読み取られてもよい。したがって、読み取りロックは、複数のクライアントにより共有されてもよく、すなわち、複数のクライアントは、読み取りロックを同時に保持してもよい。この場合、複数のクライアントは、同時に読み取りロックの保持者である。したがって、読み取りロック割り当てカウントにおいて、ロックサーバが読み取りロックを割り当てているか否かを示すためにカウントが使用されてもよい。例えば、読み取りロック割り当てカウントが0である場合、これは、ロックサーバが読み取りロックを割り当てないことを示す。ロックサーバが読み取りロックを割り当てる毎に、読み取りロック割り当てカウントは1だけ増加する。したがって、ロックサーバが書き込みロックを割り当てない(本発明のこの実施例では、書き込みロック割り当て識別子が0である)場合、クライアントは、読み取りロックを取得してもよい。
【0095】
ステップ803:読み取りロック割り当てカウントを増加させる。
【0096】
任意選択で、インタフェースカード302がクライアントCの識別子を読み取りロック要求キューに書き込んだ場合、インタフェースカード302は、読み取りロック割り当てカウントを1だけ増加させ、インタフェースカード302は、書き込みロック割り当て識別子と読み取りロック割り当てカウントとをクライアントCに返信する。さらに、書き込みロック割り当て識別子が1である場合、クライアントCは、読み取りロック割り当てカウント変更要求をインタフェースカード302に送信し、インタフェースカード302は、読み取りロック割り当てカウント変更要求に従って読み取りロック割り当てカウントを1だけ減少させる。
【0097】
任意選択で、インタフェースカード302がクライアントCの識別子を読み取りロック要求キューに書き込んだ場合、且つ書き込みロック割り当て識別子が1である場合、インタフェースカード302は、クライアントCが読み取りロック待機状態にあることを示すためのメッセージをクライアントCに送信する。具体的に、メッセージは、書き込みロック割り当て識別子を搬送してもよく、クライアントCは、書き込みロック割り当て識別子に従ってクライアントCが読み取りロック待機状態にあると決定する。
【0098】
前述の説明から、インタフェースカード302によりクライアントCに送信されたメッセージが、クライアントCが読み取りロックを取得するか、或いは読み取りロック待機状態にあることを示すかに拘わらず、これは、クライアントCの識別子が読み取りロック要求キュー内のメモリアドレスに書き込まれたことを示すことが認識され得る。
【0099】
任意選択で、インタフェースカード302がクライアントCの識別子を読み取りロック要求キューに書き込んだ場合、且つ書き込みロック割り当て識別子が0である場合、インタフェースカード302は、読み取りロック割り当てカウントを1だけ増加させる。さらに、インタフェースカード302は、クライアントCが読み取りロックを取得することを示すためのメッセージをクライアントCに送信する。例えば、メッセージは、書き込みロック割り当て識別子を搬送し、書き込みロック割り当て識別子は0である。任意選択で、ロックサーバが書き込みロックを割り当てている(書き込みロック割り当て識別子が1である)場合、読み取りロック要求キュー内のクライアントは、読み取りロック待機状態にあり、読み取りロック割り当てカウントは増加しない。さらに、インタフェースカード302は、クライアントCが読み取りロック待機状態にあることを示すためのメッセージをクライアントCに送信する。例えば、メッセージは、書き込みロック割り当て識別子を搬送し、書き込みロック割り当て識別子は1である。
【0100】
本発明のこの実施例では、インタフェースカード302がクライアントCの識別子を読み取りロック要求キューのキュー先頭のメモリアドレスに成功して書き込む例が使用される。この場合、クラスタ内のクライアントは、読み取りロックを取得しないか、或いは読み取りロック待機状態になく、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを記録する(書き込みロック割り当て識別子は1である)。この場合、クライアントCは、読み取りロック待機状態にある。任意選択で、クライアントCによりロックサーバに送信された読み取りロック要求は、読み取りロックリース、すなわち、クライアントCにより保持される読み取りロックの有効時間を更に搬送してもよく、有効時間が失効したときにクライアントCがリースを更新していない場合、読み取りロックは自動的に無効になる。
【0101】
本発明のこの実施例では、クラスタは、クライアントDを更に含み、ロックサーバのインタフェースカード302は、クライアントDにより送信された読み取りロック要求を受信する。クライアントDにより送信された読み取りロック要求は、クライアントDの識別子と読み取りロック要求キューのキュー先頭のメモリアドレスとを搬送する。クライアントCの識別子は、読み取りロック要求キューのキュー先頭のメモリアドレスに記憶されているため、
図10に示すように、インタフェースカード302は、クライアントDの識別子を読み取りロック要求キューのキュー先頭に続く次のメモリアドレスに書き込む。具体的な解決策については、クライアントCの識別子を読み取りロック要求キューに書き込む説明に参照が行われてもよく、詳細はここでは説明しない。クライアントAは書き込みロックを保持する(書き込みロック割り当て識別子は1である)ため、クライアントCは、読み取りロック待機状態にあり、クライアントDもまた、読み取りロック待機状態にある。
【0102】
本発明のこの実施例では、クライアントは、RDMAプロトコルを使用することにより、ロック要求をロックサーバのインタフェースカード302に送信し、ロックサーバのメモリ301は、クラスタ内のクライアントのロック状態を記録する。ロックサーバは、全てのロックの状態を記録し、ロックサーバは、正常状態又は故障状態のようなクライアントの状態を決定することができる。したがって、ロックを保持するクライアントが故障になった場合、故障したクライアントにより保持されたロックは、適時に解放されてもよい。任意選択で、ロックサーバがクライアントの状態を決定することは、ロックサーバとクライアントとの間のハートビート検出を用いてクライアントの状態を決定することを含む。任意選択で、ハートビート検出は、クライアントの状態を決定するためにクライアントの間で実行され、正常状態のクライアントは、故障したクライアントについての情報をロックサーバに報告する。ロックサーバは、故障したクライアントについての情報に従って、故障したクライアントにより保持されたロックを解放する。任意選択で、故障したクライアントが書き込みロックを保持する場合、ロックサーバのインタフェースカード302は、メモリ301内の書き込みロック割り当て識別子を0に設定し、書き込みロック要求キューのキュー先頭から故障したクライアントの識別子を削除する。故障したクライアントが読み取りロックを保持する場合、ロックサーバのインタフェースカード302は、メモリ301内の読み取りロック割り当てカウントを1だけ減少させ、読み取りロック要求キューから故障したクライアントの識別子を削除する。任意選択で、他の正常なクライアントもまた、故障したクライアントにより保持されたロックを解放するために、ロックサーバの前述の操作を実行してもよい。例えば、他の正常なクライアントは、ロック解放要求をインタフェースカード302に送信し、ロック解放要求は、故障したクライアントの識別子を搬送し、インタフェースカード302は、前述のロック解放操作を実行する。任意選択で、ロックサーバのインタフェースカード302が故障したクライアントにより保持された書き込みロックを解放した後に、インタフェースカード302は、通知を他のクライアントに送信し、通知は、故障したクライアントにより保持された書き込みロックが解放されていることを示す。同様に、ロックサーバのインタフェースカード302が故障したクライアントにより保持された読み取りロックを解放した後に、インタフェースカード302は、通知を他のクライアントに送信し、通知は、故障したクライアントにより保持された読み取りロックが解放されていることを示す。
【0103】
本発明のこの実施例では、クライアントAは、書き込みロックを保持し、書き込みロックを解放する操作が更に含まれる。クライアントAは、書き込みロック解放要求をインタフェースカード302に送信し、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送する。任意選択で、インタフェースカード302は、書き込みロック要求キューのキュー先頭のメモリアドレスからクライアントAの識別子を削除し、インタフェースカード302は、書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定する(すなわち、1から0に変更する)。任意選択で、インタフェースカード302は、書き込みロック要求キューのキュー先頭のメモリアドレスからクライアントAの識別子を削除し、インタフェースカード302は、クライアントAの識別子が削除されたことをクライアントAに通知し、クライアントAは、書き込みロック割り当て識別子変更要求をインタフェースカード302に送信し、インタフェースカード302は、書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定する(すなわち、1から0に変更する)。
【0104】
任意選択で、クライアントAが書き込みロックを解放するときに、この方法は、クライアントAにより、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するステップであり、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスを搬送するステップと、インタフェースカード302により、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアントBの識別子を求めて問い合わせるステップと、インタフェースカード302により、書き込みロック要求問い合わせ応答メッセージをクライアントAに送信するステップであり、書き込みロック要求問い合わせ応答メッセージは、クライアントBの識別子を搬送するステップと、クライアントAにより、書き込みロック要求問い合わせ応答メッセージで搬送されたクライアントBの識別子に従って、クライアントBに対して書き込みロックを求めて申請するように命令するための通知をクライアントBに送信するステップと、クライアントBにより、クライアントAの通知に従って書き込みロック要求をインタフェースカード302に送信するステップとを更に含む。詳細については、クライアントにより書き込みロック要求を送信する前述の説明に参照が行われてもよく、詳細はここでは説明しない。したがって、書き込みロックは、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューのキュー先頭から始まるシーケンスに従って申請されてもよい。任意選択で、クライアントAが書き込みロックを解放した後に、ロックサーバのインタフェースカード302は、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアントBの識別子を求めて問い合わせ、インタフェースカード302は、クライアントBに対して書き込みロックを求めて申請するように命令するための通知をクライアントBに送信し、クライアントBは、インタフェースカード302により送信された通知に従って書き込みロック要求メッセージをインタフェースカード302に送信する。
【0105】
任意選択で、前述の実施例では、クライアントによりインタフェースカード302に送信された書き込みロック要求は、クライアントの書き込みロック優先度を更に搬送し、書き込みロック要求キューは、クライアントの識別子と書き込みロック優先度を記憶し、クライアントAが書き込みロックを解放した場合、この方法は、クライアントAにより、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するステップと、インタフェースカード302により、書き込みロック要求問い合わせ応答メッセージをクライアントAに送信するステップであり、問い合わせ応答メッセージは、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された識別子及び書き込みロック優先度を搬送するステップとを更に含む。本発明のこの実施例では、クライアントBが最高の書き込みロック優先度を有することが例として使用される。クライアントAは、書き込みロック要求問い合わせ応答メッセージに従って最高の書き込みロック優先度を有するクライアントを決定し、クライアントAは、クライアントBに対して書き込みロック要求をインタフェースカード302に送信するように命令するための通知をクライアントBに送信する。詳細については、クライアントにより書き込みロック要求を送信する前述の説明に参照が行われてもよく、詳細はここでは説明しない。したがって、書き込みロックは、書き込みロック待機状態にあるクライアントの書き込みロック優先度に従って申請されてもよい。任意選択で、前述の実施例では、クライアントによりインタフェースカード302に送信された書き込みロック要求は、クライアントの書き込みロック優先度を更に搬送し、書き込みロック要求キューは、クライアントの識別子と書き込みロック優先度とを記憶する。クライアントAが書き込みロックを解放した後に、ロックサーバのインタフェースカード302は、最高の書き込みロック優先度を有するクライアント、例えば、クライアントBを決定するために、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された書き込みロック優先度に問い合わせる。インタフェースカード302は、クライアントBに対して書き込みロックを求めて申請するように命令するための通知をクライアントBに送信し、クライアントBは、インタフェースカード302により送信された通知に従って書き込みロック要求メッセージをインタフェースカード302に送信する。
【0106】
任意選択で、クライアントAが書き込みロックを解放するときに、複数のクライアントが書き込みロック待機状態にあることを書き込みロック要求キューが記録する場合、この方法は、クライアントAにより、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するステップと、インタフェースカード302により、書き込みロック待機状態にあるクライアントを決定するために、書き込みロック要求キューに問い合わせるステップと、インタフェースカード302により、書き込みロック要求問い合わせ応答メッセージをクライアントAに送信するステップであり、書き込みロック要求問い合わせ応答メッセージは、書き込みロック待機状態にあるクライアントの識別子を搬送するステップと、クライアントAにより、書き込みロック要求問い合わせ応答メッセージに従って、クライアントに対して書き込みロック要求をインタフェースカード302に送信するように命令するための通知を、書き込みロック待機状態にあるクライアント内の少なくとも2つのクライアントに送信するステップとを更に含む。したがって、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントは、書き込みロックを取得するための同じ機会を有する。任意選択で、クライアントAが書き込みロックを解放するときに、この方法は、インタフェースカード302により、書き込みロック待機状態にあるクライアントを決定するために、書き込みロック要求キューに問い合わせるステップと、インタフェースカード302により、少なくとも2つのクライアントに対して書き込みロック要求をインタフェースカード302に送信するように命令するための通知を、書き込みロック待機状態にあるクライアント内の少なくとも2つのクライアントに送信するステップとを更に含む。
【0107】
任意選択で、クライアントAが書き込みロックを解放するときに、読み取りロック要求キューがクライアントC及びDの識別子を記憶する場合、すなわち、クライアントC及びDが読み取りロック待機状態にある場合、この方法は、クライアントAにより、読み取りロック要求問い合わせメッセージをインタフェースカード302に送信するステップと、インタフェースカード302により、読み取りロック待機状態にあるクライアントC及びDを決定するために、読み取りロック要求キューに問い合わせるステップと、インタフェースカード302により、読み取りロック要求問い合わせ応答メッセージをクライアントAに送信するステップであり、読み取りロック要求問い合わせ応答メッセージは、読み取りロック待機状態にあるクライアントC及びDの識別子を搬送するステップとを更に含む。任意選択で、クライアントAは、読み取りロック要求問い合わせ応答メッセージに従って、クライアントC及びDに対して読み取りロックを求めて申請するように命令するための通知を、読み取りロック待機状態にあるクライアントC及びDに送信し、クライアントC及びDは、読み取りロック割り当てカウント変更要求をインタフェースカード302に別々に送信し、インタフェースカード302は、クライアントC及びDの読み取りロック割り当てカウント変更要求に従って読み取りロック割り当てカウントを増加させる。任意選択で、クライアントAは、読み取りロック要求問い合わせ応答メッセージに従って、通知を読み取りロック待機状態にあるクライアントCに送信し、これにより、クライアントCが読み取りロックを求めて申請する。クライアントCは、読み取りロック割り当てカウント変更要求をインタフェースカード302に送信し、インタフェースカード302は、クライアントCの読み取りロック割り当て変更要求に従って読み取りロック割り当てカウントを増加させる。したがって、読み取りロック要求キューに記録された、読み取りロック待機状態にある全てのクライアントは、読み取りロックを取得してもよい。任意選択で、クライアントAが書き込みロックを解放するときに、この方法は、インタフェースカード302により、読み取りロック待機状態にあるクライアントC及びDを決定するために、読み取りロック要求キューに問い合わせるステップと、インタフェースカード302により、クライアントC及びDに対して読み取りロックを求めて申請するように命令するための通知を、読み取りロック待機状態にあるクライアントC及びDに送信し、これにより、クライアントC及びDが読み取りロック割り当てカウント変更要求をインタフェースカード302に別々に送信するステップと、インタフェースカード302により、クライアントC及びDの読み取りロック割り当てカウント変更要求に従って読み取りロック割り当てカウントを増加させるステップとを更に含む。
【0108】
任意選択で、クライアントAが書き込みロックを解放するときに、この方法は、クライアントAにより、書き込みロック解放要求をインタフェースカード302に送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカード302により、書き込みロック要求キューのキュー先頭のメモリアドレスからクライアントAの識別子を削除するステップとを具体的に含む。クライアントAは、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信し、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスを搬送する。インタフェースカード302は、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアントBの識別子を求めて問い合わせる。インタフェースカード302は、書き込みロック要求問い合わせ応答メッセージをクライアントAに送信し、書き込みロック要求問い合わせ応答メッセージは、クライアントBの識別子を搬送する。クライアントAは、書き込みロック要求問い合わせ応答メッセージに従って書き込みロック占有要求をインタフェースカード302に送信し、書き込みロック占有要求は、書き込みロック要求キューのキュー先頭のメモリアドレスとクライアントBの識別子とを搬送する。インタフェースカード302は、クライアントBの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込む。インタフェースカード302は、クライアントBの識別子が書き込みロック要求キューのキュー先頭のメモリアドレスに書き込まれたことを示すための書き込みロック占有要求応答メッセージをクライアントAに送信する。クライアントAは、書き込みロック占有要求応答メッセージに従って、クライアントBが書き込みロックを取得することを示すための通知をクライアントBに送信する。したがって、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶された、書き込みロックを求めて待機しているクライアントが書き込みロックを取得することができることが確保され得る。任意選択で、クライアントAが書き込みロックを解放するときに、この方法は、インタフェースカード302により、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスに記憶されたクライアントBの識別子を問い合わせるステップと、インタフェースカード302により、クライアントBの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むステップと、インタフェースカード302により、クライアントBが書き込みロックを取得することを示すための通知をクライアントBに送信するステップとを更に含む。
【0109】
任意選択で、クライアントによりインタフェースカード302に送信された書き込みロック要求は、クライアントの書き込みロック優先度を更に搬送し、書き込みロック要求キューは、クライアントの識別子と書き込みロック優先度を記憶し、クライアントAが書き込みロックを解放するときに、この方法は、クライアントAにより、書き込みロック解放要求をインタフェースカード302に送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカード302により、書き込みロック要求キューのキュー先頭のメモリアドレスからクライアントAの識別子を削除するステップとを具体的に含む。クライアントAは、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信し、インタフェースカード302は、書き込みロック要求問い合わせ応答メッセージをクライアントAに送信し、書き込みロック要求応答メッセージは、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された識別子と書き込みロック優先度とを搬送する。本発明のこの実施例では、クライアントBが最高の書き込みロック優先度を有することが例として使用される。クライアントAは、書き込みロック要求問い合わせ応答メッセージに従って書き込みロック占有要求をインタフェースカード302に送信し、書き込みロック占有要求は、書き込みロック要求キューのキュー先頭のメモリアドレスとクライアントBの識別子とを搬送する。インタフェースカード302は、クライアントBの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込む。インタフェースカード302は、クライアントBの識別子が書き込みロック要求キューのキュー先頭のメモリアドレスに書き込まれたことを示すための書き込みロック占有要求応答メッセージをクライアントAに送信する。クライアントAは、書き込みロック占有要求応答メッセージに従って、クライアントBが書き込みロックを取得することを示すための通知をクライアントBに送信する。任意選択で、クライアントによりインタフェースカード302に送信された書き込みロック要求は、クライアントの書き込みロック優先度を更に搬送し、書き込みロック要求キューは、クライアントの識別子と書き込みロック優先度とを記憶する。クライアントAが書き込みロックを解放するときに、インタフェースカード302は、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された識別子及び書き込みロック優先度を求めて問い合わせる。本発明のこの実施例では、クライアントBが最高の書き込みロック優先度を有することが例として使用される。インタフェースカード302は、クライアントBの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込み、インタフェースカード302は、クライアントBが書き込みロックを取得することを示すための通知をクライアントBに送信する。
【0110】
任意選択で、書き込みロック要求キューは、書き込みロック待機状態にある複数のクライアントの識別子を記録し、クライアントAが書き込みロックを解放するときに、この方法は、クライアントAにより、書き込みロック解放要求をインタフェースカード302に送信するステップであり、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送するステップと、インタフェースカード302により、書き込みロック要求キューのキュー先頭のメモリアドレスからクライアントAの識別子を削除するステップとを具体的に含む。クライアントAは、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信する。インタフェースカード302は、書き込みロック要求問い合わせ応答メッセージをクライアントAに送信し、書き込みロック要求応答メッセージは、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された識別子を搬送する。クライアントAは、書き込みロック要求問い合わせ応答メッセージに従ってクライアント、例えば、クライアントBをランダムに決定し、書き込みロック占有要求をインタフェースカード302に送信し、書き込みロック占有要求は、書き込みロック要求キューのキュー先頭のメモリアドレスとクライアントBの識別子とを搬送する。インタフェースカード302は、クライアントBの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込む。インタフェースカード302は、クライアントBの識別子が書き込みロック要求キューのキュー先頭のメモリアドレスに書き込まれたことを示すための書き込みロック占有要求応答メッセージをクライアントAに送信する。クライアントAは、書き込みロック占有要求応答メッセージに従って、クライアントBが書き込みロックを取得することを示すための通知をクライアントBに送信する。任意選択で、クライアントAが書き込みロックを解放するときに、この方法は、インタフェースカード302により、書き込みロック待機状態にあるクライアントの、書き込みロック要求キューに記録された識別子を求めて問い合わせるステップと、インタフェースカード302により、書き込みロック待機状態にあるクライアントからクライアント、例えば、クライアントBをランダムに決定するステップと、インタフェースカード302により、クライアントBの識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むステップと、インタフェースカード302により、クライアントBが書き込みロックを取得することを示す通知をクライアントBに送信するステップとを更に含む。
【0111】
任意選択で、クライアントAが書き込みロックを解放するときに、読み取りロック要求キューがクライアントC及びDの識別子を記憶する場合、この方法は、クライアントAにより、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するステップと、インタフェースカード302により、読み取りロック待機状態にあるクライアントC及びDを決定するために、読み取りロック要求キューに問い合わせるステップと、インタフェースカード302により、読み取りロック要求問い合わせ応答メッセージをクライアントAに送信するステップであり、読み取りロック要求問い合わせ応答メッセージは、読み取りロック待機状態にあるクライアントC及びDの識別子を搬送するステップと、クライアントAにより、読み取りロック要求問い合わせ応答メッセージに従って読み取りロック割り当てカウント変更要求をインタフェースカード302に送信するステップであり、読み取りロック割り当てカウント変更要求は、割り当てられた読み取りロックの数量を搬送するステップとを更に含む。任意選択で、割り当てられた読み取りロックの数量は2であり、インタフェースカード302は、割り当てられた読み取りロックの数量に従って読み取りロック割り当てカウントを増加させる。インタフェースカード302は、読み取りロック割り当てカウント変更要求応答をクライアントAに返信し、クライアントAは、通知をクライアントC及びDに送信する。任意選択で、割り当てられた読み取りロックの数量は1であり、インタフェースカード302は、割り当てられた読み取りロックの数量に従って読み取りロック割り当てカウントを増加させる。インタフェースカード302は、読み取りロック割り当てカウント変更要求応答をクライアントAに返信し、クライアントAは、クライアントC又はDに対して読み取りロックを取得するように命令する。任意選択で、クライアントAが書き込みロックを解放するときに、読み取りロック要求キューがクライアントC及びDの識別子を記憶する場合、この方法は、インタフェースカード302により、読み取りロック待機状態にあるクライアントC及びDを決定するために、読み取りロック要求キューに問い合わせるステップと、インタフェースカード302により、クライアントC及びDに割り当てられた読み取りロックの数量に従って読み取りロック割り当てカウントを増加させるステップと、インタフェースカード302により、読み取りロックが取得されたことを示すための通知をクライアントC又はDに送信するステップとを更に含む。
【0112】
任意選択で、読み取りロックを取得するクライアントC及びDが読み取りロックを解放するときに、クライアントCは、読み取りロック解放要求をインタフェースカード302に送信し、読み取りロック解放要求は、クライアントCの識別子と、クライアントCの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスとを搬送する。インタフェースカード302は、読み取りロック要求キューからクライアントCの識別子を削除し、読み取りロック割り当てカウントを減少させる。同様に、クライアントDは、読み取りロックを解放し、前述の操作を参照して、読み取りロック割り当てカウントが0まで減少する。クライアントDは、書き込みロック要求問い合わせメッセージをインタフェースカード302に更に送信し、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送する。インタフェースカード302は、書き込みロック要求問い合わせ応答メッセージをクライアントDに返信し、書き込みロック要求問い合わせ応答メッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶されたクライアントの識別子を搬送し、クライアントDは、クライアントの識別子に従って、クライアントに対して書き込みロックを求めてインタフェースカード302に申請するように命令する。クライアントが書き込みロックを求めてインタフェースカード302に申請することは、クライアントにより、書き込みロック割り当て識別子変更要求をインタフェースカード302に送信し、インタフェースカード302により、書き込みロック割り当て識別子を1に設定することを含む。任意選択で、読み取りロックを取得するクライアントC及びDが読み取りロックを解放するときに、インタフェースカード302は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶されたクライアントの識別子を問い合わせ、インタフェースカード302は、クライアントの識別子に従って、クライアントに対して書き込みロックを求めてインタフェースカード302に申請するように命令する。
【0113】
任意選択で、読み取りロックを取得するクライアントC及びDが読み取りロックを解放するときに、クライアントCは、読み取りロック解放要求をインタフェースカード302に送信し、読み取りロック解放要求は、クライアントCの識別子と、クライアントCの識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスとを搬送する。インタフェースカード302は、読み取りロック要求キューからクライアントCの識別子を削除し、読み取りロック割り当てカウントを減少させる。同様に、クライアントDは、読み取りロックを解放し、前述の操作を参照して、読み取りロック割り当てカウントが0まで減少する。クライアントDは、書き込みロック割り当て識別子変更要求をインタフェースカード302に送信する。インタフェースカード302は、書き込みロック割り当て識別子を書き込みロック割り当て済状態になるように変更する(本発明のこの実施例では1に設定する)。インタフェースカード302は、書き込みロック割り当て識別子変更要求応答をクライアントDに返信し、書き込みロック割り当て識別子変更要求応答は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶されたクライアントの識別子を搬送する。クライアントDは、クライアントの識別子に従って、クライアントに対して書き込みロックを取得するように命令する。任意選択で、読み取りロックを取得するクライアントC及びDが読み取りロックを解放するときに、インタフェースカード302は、書き込みロック割り当て識別子を書き込みロック割り当て済状態になるように変更し(本発明のこの実施例では1に設定し)、インタフェースカード302は、クライアントに対して書き込みロックを取得するように命令するために、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶されたクライアントの識別子を問い合わせる。
【0114】
任意選択で、本発明のこの実施例は、読み取りロック回収ポリシーを更に提供する。本発明のこの実施例では、クラスタは、クライアントEを更に含む。クライアントEが書き込みロック要求をインタフェースカード302に送信した場合、ここで、具体的な操作については、クライアントBにより書き込みロック要求を送信する前述の操作に参照が行われてもよく、クライアントEは、書き込みロック待機状態にあり、クライアントC及びDは、読み取りロックを保持し、クライアントEは、クライアントC及びDに対して読み取りロックを解放するように命令する。クライアントCは、読み取りロック解放要求をインタフェースカード302に送信する。具体的な操作については、クライアントCにより読み取りロックを解放する前述の操作に参照が行われてもよい。クライアントDは、読み取りロック解放要求をインタフェースカード302に送信する。具体的な操作については、クライアントCにより読み取りロックを解放する前述の操作に参照が行われてもよい。クライアントC及びDにより保持された読み取りロックが解放された後に、メモリ301内の読み取りロック割り当てカウントは0である。任意選択で、インタフェースカード302は、クライアントEに対して書き込みロックを求めて申請するように命令するためのメッセージをクライアントEに送信する。任意選択で、インタフェースカード302は、クライアントDの読み取りロックが成功して解放されたことを示すためのメッセージをクライアントDに送信し、クライアントDは、クライアントEに対して書き込みロックを求めて申請するように命令するためのメッセージをクライアントEに送信する。
【0115】
本発明の前述の実施例では、クライアントが毎回1つの読み取りロックを求めて申請する例が説明のために使用されている。クライアント読み取りロック申請の間に、クライアントが複数の読み取りロックを求めて申請した場合、インタフェースカード302は、申請された読み取りロックの数量に従ってメモリ301内の読み取りロック割り当てカウントを増加させ、複数のクライアントの識別子は、読み取りロック要求キューに記録される。読み取りロック解放の間に、メモリ301内の読み取りロック割り当てカウントは、申請された読み取りロックの数量に従って減少し、複数のクライアントの識別子は、読み取りロック要求キューから削除される。クライアントは、RDMAプロトコルにおけるアトミック操作Compare-and-Swapを使用することにより、書き込みロック要求を送信してもよく、クライアントは、RDMAプロトコルにおけるアトミック操作Fetch-and-Addを使用することにより、読み取りロック要求を送信してもよい。
【0116】
本発明のこの実施例では、クライアントは、書き込みロック要求問い合わせメッセージ又は読み取りロック要求問い合わせメッセージのような問い合わせメッセージをインタフェースカード302に送信し、問い合わせメッセージは、書き込みロック要求キュー内のメモリアドレス又は読み取りロック要求キュー内のメモリアドレスのような複数の問い合わせ対象のメモリアドレスを一度に搬送してもよく、或いは問い合わせメッセージは、1つの問い合わせ対象のメモリアドレスを一度に搬送してもよく、問い合わせは、複数の問い合わせメッセージを使用することにより完了する。
【0117】
本発明の実施例において提供されるクラスタ内のロック管理解決策によれば、クライアント1100が対応して提供される。
図11に示すように、クライアント1100は、クラスタに適用され、クラスタ内の複数のクライアント内の第1のクライアントとして機能する。クラスタは、本発明の実施例に記載のロックサーバを更に含み、ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、書き込みロック要求キューと書き込みロック割り当て識別子と読み取りロック割り当てカウントとを記憶する。書き込みロック要求キューは、共有リソースのための書き込みロック待機状態にあるクライアントの識別子と、同じ共有リソースのための書き込みロックを取得するクライアントの識別子とを含む、クラスタ内のクライアントの識別子を記録するために使用され、書き込みロック割り当て識別子は、共有リソースのための書き込みロックが割り当てられたか否かを示すために使用され、読み取りロック割り当てカウントは、共有リソースのために割り当てられた読み取りロックの数量を示すために使用される。クライアント1100は、送信ユニット1101と受信ユニット1102とを含む。送信ユニット1101は、第1の書き込みロック要求をロックサーバのインタフェースカード302に送信するように構成され、第1の書き込みロック要求は、クライアント1100の識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送する。受信ユニット1102は、インタフェースカード302により送信された第1のメッセージを受信するように構成され、第1のメッセージは、インタフェースカード302がクライアント1100の識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むことを示し、クライアント1100が書き込みロックを取得するか、或いは書き込みロック待機状態にあることを示す。送信ユニット1101は、インタフェースカード302がクライアント1100の識別子を書き込みロック要求キューのキュー先頭のメモリアドレスに書き込むことに失敗したことを第1のメッセージが示す場合、第2の書き込みロック要求をインタフェースカード302に送信するように更に構成され、第2の書き込みロック要求は、クライアント1100の識別子と書き込みロック要求キュー内の第1のメモリアドレスとを搬送し、第1のメモリアドレスは、クライアント1100の識別子が書き込まれることができる、キュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスである。任意選択で、第1のメモリアドレスは、クライアント1100の識別子が書き込まれることができる、キュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスである。
【0118】
本発明のこの実施例において提供される、
図11に示すクライアント1100において、任意選択で、送信ユニット1101は、クライアント1100が書き込みロックを取得した後に、書き込みロック解放要求をインタフェースカード302に送信するように更に構成され、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送する。
【0119】
本発明の他の実施例では、
図11に示すクライアント1100は、クラスタに適用され、複数のクライアント内の第1のクライアントとして機能する。クラスタは、ロックサーバを更に含み、ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、読み取りロック要求キューと書き込みロック割り当て識別子とを記憶する。読み取りロック要求キューは、同じ共有リソースのための読み取りロック待機状態にあるか、或いは読み取りロックを取得する、クラスタ内にあるクライアントの識別子を記録するために使用され、書き込みロック割り当て識別子は、共有リソースのための書き込みロックが割り当てられたか否かを示すために使用される。送信ユニット1101は、第1の読み取りロック要求をインタフェースカード302に送信するように構成され、第1の読み取りロック要求は、クライアント1100の識別子と読み取りロック要求キュー内の第1のメモリアドレスとを搬送する。受信ユニット1102は、インタフェースカード302により送信された第1のメッセージを受信するように構成され、第1のメッセージは、書き込みロック割り当て識別子を搬送する。任意選択で、書き込みロックが割り当てられていることを書き込みロック割り当て識別子が示す場合、第1のメッセージは、クライアント1100が読み取りロック待機状態にあることを示す。任意選択で、書き込みロックが割り当てられないことを書き込みロック割り当て識別子が示す場合、第1のメッセージは、クライアント1100が読み取りロックを取得することを示す。任意選択で、複数のクライアントは、第2のクライアントを更に含み、第2のクライアントの識別子は、読み取りロック要求キューのキュー先頭のメモリアドレスに記憶される。この場合、読み取りロック要求キュー内の、第1の読み取りロック要求で搬送された第1のメモリアドレスは、クライアント1100の識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にあるメモリアドレスである。任意選択で、第1のメモリアドレスは、クライアント1100の識別子が書き込まれることができる、読み取りロック要求キューのキュー先頭からキュー末尾までのシーケンス内にある第1のメモリアドレスである。任意選択で、第1の読み取りロック要求をインタフェースカード302に送信する前に、送信ユニット1101は、第2の読み取りロック要求をインタフェースカード302に送信するように更に構成され、第2の読み取りロック要求は、クライアント1100の識別子と読み取りロック要求キューのキュー先頭のメモリアドレスとを搬送する。インタフェースカード302がクライアント1100の識別子を読み取りロック要求キューのキュー先頭のメモリアドレスに書き込むことに失敗した場合、受信ユニット1102は、インタフェースカード302により送信された第2のメッセージを受信するように更に構成され、第2のメッセージは、読み取りロック要求が失敗したことを示す。任意選択で、クライアント1100が読み取りロックを取得した場合、送信ユニット1102は、読み取りロック解放要求をインタフェースカード302に送信するように更に構成され、読み取りロック解放要求は、クライアント1100の識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送する。
【0120】
本発明の他の実施例では、
図11に示すクライアント1100は、クラスタに適用され、第1のクライアントとして機能し、クラスタは、ロックサーバと第2のクライアントとを更に含む。ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶し、クライアント1100の識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック要求キューは、第2のクライアントの識別子を更に記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、クライアント1100は、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にある。送信ユニット1101は、書き込みロック解放要求をインタフェースカード302に送信するように構成され、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送し、インタフェースカード302が書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューからクライアント1100の識別子を削除した場合、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するように構成され、書き込みロック要求問い合わせメッセージは、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスを搬送する。受信ユニット1102は、インタフェースカード302により送信された書き込みロック要求問い合わせ応答メッセージを受信するように構成され、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送する。送信ユニット1101は、書き込みロック占有要求をインタフェースカード302に送信するように構成され、書き込みロック占有要求は、第2のクライアントの識別子と書き込みロック要求キューのキュー先頭のメモリアドレスとを搬送する。受信ユニット1102は、インタフェースカード302により送信された書き込みロック占有要求応答を受信するように更に構成され、書き込みロック占有要求応答は、第2のクライアントの識別子が書き込みロック要求キューのキュー先頭のメモリアドレスに書き込まれることを示す。送信ユニット1101は、通知を第2のクライアントに送信するように更に構成され、通知は、第2のクライアントが書き込みロックを取得することを示す。任意選択で、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスである。任意選択で、書き込みロック要求キューは、第2のクライアントの書き込みロック優先度を更に記憶し、第2のクライアントの書き込みロック優先度は、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である。
【0121】
本発明の他の実施例では、
図11に示すクライアント1100は、クラスタに適用され、第1のクライアントとして機能し、クラスタは、ロックサーバと第2のクライアントとを更に含む。ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶する。クライアント1100の識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キューは、第2のクライアントの識別子を記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、読み取りロック割り当てカウントは0であり、クライアント1100は、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための読み取りロック待機状態にある。送信ユニット1101は、書き込みロック解放要求をインタフェースカード302に送信するように構成され、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送し、インタフェースカード302が書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューからクライアント1100の識別子を削除した場合、読み取りロック要求問い合わせメッセージをインタフェースカード302に送信するように構成される。受信ユニット1102は、インタフェースカード302により送信された読み取りロック要求問い合わせ応答メッセージを受信するように構成され、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送する。送信ユニット1101は、読み取りロック割り当てカウント変更要求をインタフェースカード302に送信するように更に構成され、これにより、第2のクライアントが読み取りロックを取得する。
【0122】
本発明の他の実施例では、
図11に示すクライアント1100は、クラスタに適用され、第1のクライアントとして機能し、クラスタは、ロックサーバと第2のクライアントとを更に含む。ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、書き込みロック要求キューと書き込みロック割り当て識別子とを記憶する。クライアント1100の識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック要求キューは、第2のクライアントの識別子を更に記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、クライアント1100は、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にある。送信ユニット1101は、書き込みロック解放要求をインタフェースカード302に送信するように構成され、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送し、インタフェースカード302が書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューからクライアント1100の識別子を削除した場合、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するように構成され、書き込みロック要求問い合わせメッセージは、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスを搬送する。受信ユニット1102は、インタフェースカード302により送信された書き込みロック要求問い合わせ応答メッセージを受信するように構成され、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送する。送信ユニット1101は、第2のクライアントの識別子に従って通知を第2のクライアントに送信し、通知は、第2のクライアントに対して書き込みロック要求をインタフェースカード302に送信するように命令するために使用される。任意選択で、第2のクライアントの識別子が記憶された、書き込みロック要求キュー内にあるメモリアドレスは、書き込みロック要求キューのキュー先頭に続く次のメモリアドレスである。任意選択で、書き込みロック要求キューは、第2のクライアントの書き込みロック優先度を更に記憶し、第2のクライアントの書き込みロック優先度は、書き込みロック要求キューに記録された、書き込みロック待機状態にあるクライアントの中で最高である。
【0123】
本発明の他の実施例では、
図11に示すクライアント1100は、クラスタに適用され、第1のクライアントとして機能し、クラスタは、ロックサーバと第2のクライアントとを更に含む。ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶する。クライアント1100の識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、読み取りロック要求キューは、第2のクライアントの識別子を記憶し、書き込みロック割り当て識別子は、書き込みロックが割り当てられていることを示し、読み取りロック割り当てカウントは0であり、クライアント1100は、共有リソースのための書き込みロックを取得し、第2のクライアントは、共有リソースのための読み取りロック待機状態にある。送信ユニット1101は、書き込みロック解放要求をインタフェースカード302に送信するように構成され、書き込みロック解放要求は、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送し、インタフェースカード302が書き込みロック割り当て識別子を書き込みロック未割り当て状態に設定し、書き込みロック要求キューのキュー先頭のメモリアドレスに従って書き込みロック要求キューからクライアント1100の識別子を削除した場合、読み取りロック要求問い合わせメッセージをインタフェースカード302に送信するように構成される。受信ユニット1102は、インタフェースカード302により送信された読み取りロック要求問い合わせ応答メッセージを受信するように構成され、読み取りロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送する。送信ユニット1101は、第2のクライアントの識別子に従って通知を第2のクライアントに送信するように更に構成され、通知は、第2のクライアントに対して読み取りロックを求めて申請するように命令するために使用される。第2のクライアントは、通知に従って読み取りロック割り当てカウント変更要求をインタフェースカード302に送信する。インタフェースカード302は、第2のクライアントに割り当てられた読み取りロックの数量に従って読み取りロック割り当てカウントを増加させる。
【0124】
本発明の他の実施例では、
図11に示すクライアント1100は、クラスタに適用され、第1のクライアントとして機能し、クラスタは、ロックサーバと第2のクライアントとを更に含む。ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶する。読み取りロック要求キューは、クライアント1100の識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、クライアント1100により取得された読み取りロックの数量であり、クライアント1100は、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にある。送信ユニット1101は、読み取りロック解放要求をインタフェースカード302に送信するように構成され、読み取りロック解放要求は、クライアント1100の識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送し、インタフェースカード302が読み取りロック割り当てカウントを0まで減少させ、クライアント1100の識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューからクライアント1100の識別子を削除した場合、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するように構成され、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送する。受信ユニット1102は、インタフェースカード302により送信された書き込みロック要求問い合わせ応答メッセージを受信するように構成され、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送する。送信ユニット1101は、第2のクライアントの識別子に従って通知を第2のクライアントに送信するように更に構成され、通知は、第2のクライアントに対して書き込みロックを求めて申請するように命令するために使用される。第2のクライアントは、通知に従って書き込みロック割り当て識別子変更要求をインタフェースカード302に送信する。インタフェースカード302は、書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定する。
【0125】
本発明の他の実施例では、
図11に示すクライアント1100は、クラスタに適用され、第1のクライアントとして機能し、クラスタは、ロックサーバと第2のクライアントとを更に含む。ロックサーバは、インタフェースカード302とメモリ301とを含み、メモリ301は、書き込みロック要求キューと読み取りロック要求キューと読み取りロック割り当てカウントと書き込みロック割り当て識別子とを記憶する。読み取りロック要求キューは、クライアント1100の識別子を記憶し、第2のクライアントの識別子は、書き込みロック要求キューのキュー先頭のメモリアドレスに記憶され、書き込みロック割り当て識別子は、書き込みロックが割り当てられないことを示し、読み取りロック割り当てカウントは、クライアント1100により取得された読み取りロックの数量であり、クライアント1100は、共有リソースのための読み取りロックを取得し、第2のクライアントは、共有リソースのための書き込みロック待機状態にある。送信ユニット1101は、読み取りロック解放要求をインタフェースカード302に送信するように構成され、読み取りロック解放要求は、クライアント1100の識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスを搬送し、インタフェースカード302が読み取りロック割り当てカウントを0まで減少させ、クライアント1100の識別子が記憶された、読み取りロック要求キュー内にあるメモリアドレスに従って読み取りロック要求キューからクライアント1100の識別子を削除した場合、書き込みロック要求問い合わせメッセージをインタフェースカード302に送信するように構成され、書き込みロック要求問い合わせメッセージは、書き込みロック要求キューのキュー先頭のメモリアドレスを搬送する。受信ユニット1102は、インタフェースカード302により送信された書き込みロック要求問い合わせ応答メッセージを受信し、書き込みロック要求問い合わせ応答メッセージは、第2のクライアントの識別子を搬送する。送信ユニット1101は、書き込みロック割り当て識別子変更要求をインタフェースカード302に送信し、インタフェースカード302が書き込みロック割り当て識別子変更要求に従って書き込みロック割り当て識別子を書き込みロック割り当て済状態に設定した場合、第2のクライアントの識別子に従って通知を第2のクライアントに送信するように更に構成され、通知は、第2のクライアントが書き込みロックを取得することを示す。
【0126】
本発明のこの実施例において提供されるクライアント1100により実現される機能については、前述の実施例におけるクライアントA、クライアントB、クライアントC及びクライアントDに対応する説明に参照が行われてもよい。クライアント1100により実現される効果については、前述の実施例における説明に参照が行われてもよい。
【0127】
図11に示すクライアント1100について、実現方式は、前述のユニットがクライアント1100に組み込まれることであり、前述のユニットは、クライアント1100のメモリにロードされてもよく、クライアント1100のCPUは、本発明の実施例の対応する実施例における機能を実現するために、メモリ内の命令を実行する。他の実現では、クライアント1100に含まれるユニットは、ハードウェアにより実現されてもよく、或いはソフトウェアとハードウェアとの組み合わせにより実現されてもよい。前述のユニットはまた、構造ユニットとも呼ばれる。
【0128】
本発明のこの実施例は、不揮発性コンピュータ読み取り可能記憶媒体及びコンピュータプログラムプロダクトを更に提供する。不揮発性コンピュータ読み取り可能記憶媒体及びコンピュータプログラムプロダクトに含まれるコンピュータ命令が
図11に示すクライアント1100のメモリにロードされた場合、CPUは、本発明の前述の実施例における対応する機能を実現するように、メモリにロードされたコンピュータ命令を実行する。
【0129】
本発明において提供される複数の実施例では、開示の装置及び方法は、他の方式で実現されてもよいことが認識されるべきである。例えば、記載の装置の実施例におけるユニット分割は、単なる論理的な機能分割であり、実際の実現では他の分割でもよい。例えば、複数のユニット又はコンポーネントは、組み合わされてもよく、或いは他のシステムに統合されてもよく、或いはいくつかの機能が無視されてもよく、或いは実行されなくてもよい。さらに、図示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを使用することにより実現されてもよい。装置又はユニットの間の間接結合又は通信接続は、電気的、機械的、或いは他の形式で実現されてもよい。
【0130】
別々の部分として記載したユニットは、物理的に分けられてもよく、或いは物理的に分けられなくてもよく、ユニットとして示す部分は、物理的なユニットでもよく、或いは物理的なユニットでなくてもよく、1つの位置に配置されてもよく、或いは複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、実施例の解決策の目的を達成するための実際のニーズに従って選択されてもよい。
【0131】
さらに、本発明の実施例における機能ユニットは、1つの処理ユニットに統合されてもよく、或いはユニットのそれぞれは、物理的に単独で存在してもよく、或いは2つ以上のユニットが1つのユニットに統合される。