(57)【特許請求の範囲】
【請求項１】
オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法であって、前記オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、
前記方法は、
前記コントローラにより、第１のオブジェクトＩＯ要求を受信するステップと、
処理量閾値と処理すべき量を取得するステップであって、前記処理量閾値は前記オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値であり、前記処理すべき量は前記オブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量である、ステップと、
前記処理すべき量が前記処理量閾値より小さい場合、前記第１のオブジェクトＩＯ要求を前記記憶装置クライアントに送信し、前記処理すべき量を更新するステップと、
前記第１のオブジェクトＩＯ要求に対して前記記憶装置クライアントにより応答された第１の応答メッセージを受信するステップであって、前記第１の応答メッセージは前記第１のオブジェクトＩＯ要求の処理結果を運搬し、前記処理結果は前記第１のオブジェクトＩＯ要求の処理に不成功であったかまたは成功したかを示す、ステップと、
事前に設定された期間が終了したとき、前記事前に設定された期間内に前記コントローラにより前記記憶装置クライアントに送信された全てのオブジェクトＩＯ要求の量と前記全てのオブジェクトＩＯ要求のうち処理に成功したオブジェクトＩＯ要求の量との両方に従って前記処理量閾値を調節するステップと、
を含む、方法。
【請求項２】
前記コントローラが第２のオブジェクトＩＯ要求を受信したとき、前記処理量閾値の現在値および前記処理すべき量の現在値を取得するステップと、
前記処理すべき量の現在値が前記処理量閾値の現在値以上である場合、拒否応答メッセージまたはビジー応答メッセージで応答するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のオブジェクトＩＯ要求を前記記憶装置クライアントに送信した後に休止時間を開始するステップであって、前記休止時間は前記コントローラにより２つのオブジェクトＩＯ要求を前記記憶装置クライアントに送信する間の時間間隔である、ステップと、
前記コントローラが第３のオブジェクトＩＯ要求を受信したとき、前記処理量閾値の現在値および前記処理すべき量の現在値を取得するステップと、
前記処理すべき量の現在値が前記処理量閾値の現在値より小さい場合、前記休止時間が終了した後に前記第３のオブジェクトＩＯ要求を前記記憶装置クライアントに送信し、前記処理すべき量を更新するステップと、
をさらに含む、請求項１または２に記載の方法。
【請求項４】
前記第１のオブジェクトＩＯ要求に対して前記記憶装置クライアントにより応答された第１の応答メッセージを受信した後、前記方法は、
送信量を更新するステップであって、前記送信量は前記コントローラにより前記記憶装置クライアントに送信されたオブジェクトＩＯ要求の量である、ステップと、
前記第１の応答メッセージで運搬される処理結果が処理成功を示す場合、処理成功量を更新するステップであって、前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である、ステップ、または、前記第１の応答メッセージで運搬される処理結果が処理失敗を示す場合、処理成功量を不変に保つステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第１のオブジェクトＩＯ要求を前記記憶装置クライアントに送信するステップは、
分割サイズ閾値を取得するステップであって、前記分割サイズ閾値は、前記オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズ閾値である、ステップと、
前記第１のオブジェクトＩＯ要求のサイズが前記分割サイズ閾値より大きいとき、前記コントローラにより、前記第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割するステップであって、各サブオブジェクトＩＯ要求のサイズは前記分割サイズ閾値より大きくなく、同じ識別子を運搬する、ステップと、
を含み、
前記第１のオブジェクトＩＯ要求を前記記憶装置クライアントに送信するステップは特に、
前記コントローラにより、第１のサブオブジェクトＩＯ要求を前記記憶装置クライアントに送信するステップと、
休止時間が終了した後に、前記休止時間を開始し、第２のサブオブジェクトＩＯ要求を前記記憶装置クライアントに送信するステップであって、前記休止時間は前記コントローラにより２つのオブジェクトＩＯ要求を前記記憶装置クライアントに送信する間の時間間隔である、ステップと、
前記複数のサブオブジェクトＩＯ要求が前記記憶装置クライアントに送信されるまで、前記休止時間を開始するステップの実行に戻るステップと、
である、請求項１または２に記載の方法。
【請求項６】
前記コントローラにより、第１のサブオブジェクトＩＯ要求を前記記憶装置クライアントに送信した後に、
前記第１のサブオブジェクトＩＯ要求に対して前記記憶装置クライアントにより応答された応答メッセージを受信するステップであって、前記応答メッセージは前記第１のサブオブジェクトＩＯ要求の処理結果を運搬するステップと、
送信量を更新するステップであって、前記送信量は前記コントローラにより前記記憶装置クライアントに送信されたオブジェクトＩＯ要求の量であるステップと、
前記処理結果が処理成功を示す場合、処理成功量を更新するステップであって、前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量であるステップ、または、
前記処理結果が最終処理失敗を示す場合、処理成功量を不変に保つステップと、
前記複数のサブオブジェクトＩＯ要求の処理結果が受信されるまで、前記記憶装置クライアントにより応答される応答メッセージを受信するステップの実行に戻るステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記事前に設定された期間内に前記コントローラにより前記記憶装置クライアントに送信された全てのオブジェクトＩＯ要求の量と前記全てのオブジェクトＩＯ要求のうち処理に成功したオブジェクトＩＯ要求の量との両方に従って前記処理量閾値を調節するステップは、
前記コントローラにより、前記事前に設定された期間に従って、前記送信量の現在値および前記処理成功量の現在値を定期的に取得するステップと、
前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算するステップと、
前記処理成功率を第１の調節係数として用いることによって前記処理量閾値を調節するステップと、
を含む、請求項４または６に記載の方法。
【請求項８】
第２の調節係数に従って、前記第１の調節係数に従って調節を実施した後に取得された処理量閾値を調節するステップであって、前記第２の調節係数の値は前記第１の調節係数の値に比例するステップをさらに含む、請求項７に記載の方法。
【請求項９】
前記処理量閾値の上限および下限は前記コントローラで設定され、前記方法は、
前記処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された前記処理量閾値の値が前記処理量閾値の上限および下限の間にあるようにするステップ
をさらに含む、請求項７または８に記載の方法。
【請求項１０】
前記コントローラにより、事前に設定された期間に従って、前記送信量の現在値および前記処理成功量の現在値を定期的に取得するステップと、
前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算するステップと、
前記処理成功率を第１の調節係数として用いることによって前記休止時間を調節するステップと、
をさらに含む、請求項４または６に記載の方法。
【請求項１１】
第３の調節係数と前記第１の調節係数に従って前記休止時間を調節するステップであって、前記第３の調節係数の値は前記第１の調節係数の値と反比例するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記休止時間の上限および下限は前記コントローラで設定され、前記方法は、
前記休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された前記休止時間の値が前記休止時間の上限と下限の間にあるようにするステップ
をさらに含む、請求項１０または１１に記載の方法。
【請求項１３】
前記コントローラにより、オブジェクトＩＯ要求を送信した要求者に応答メッセージで応答するステップであって、前記応答メッセージは前記オブジェクトＩＯ要求の最終処理結果を運搬するステップと、
前記処理すべき量を更新するステップと、
をさらに含む、請求項１乃至１２の何れか１項に記載の方法。
【請求項１４】
オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラであって、前記コントローラは格納モジュール７０１、処理モジュール７０２、受信モジュール７０３、および送信モジュール７０４を備え、
前記受信モジュール７０３は、第１のオブジェクトＩＯ要求を受信し、前記第１のオブジェクトＩＯ要求を前記処理モジュール７０２に送信するように構成され、
前記処理モジュール７０２は、前記第１のオブジェクトＩＯ要求を受信した後、処理量閾値と処理すべき量を前記格納モジュール７０１から取得するように構成され、前記処理量閾値は前記オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値であり、前記処理すべき量は前記オブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量であり、
前記処理すべき量が前記処理量閾値より小さい場合、前記処理モジュール７０２はさらに、前記第１のオブジェクトＩＯ要求を前記送信モジュール７０４に送信し、前記格納モジュール７０１内の前記処理すべき量を更新するように構成され、
前記送信モジュール７０４は、前記第１のオブジェクトＩＯ要求を記憶装置クライアントに送信し、前記第１のオブジェクトＩＯ要求に対して前記記憶装置クライアントにより応答された第１の応答メッセージを受信し、前記第１の応答メッセージを前記処理モジュール７０２に送信するように構成され、前記第１の応答メッセージは前記第１のオブジェクトＩＯ要求の処理結果を運搬し、前記処理結果は前記第１のオブジェクトＩＯ要求の処理に不成功であったかまたは成功したかを示し、
前記処理モジュール７０２はさらに、事前に設定された期間が終了したとき、前記事前に設定された期間内に前記コントローラにより前記記憶装置クライアントに送信された全てのオブジェクトＩＯ要求の量と前記全てのオブジェクトＩＯ要求のうち処理に成功したオブジェクトＩＯ要求の量との両方に従って前記格納モジュール７０１内の前記処理量閾値を調節するように構成される、
コントローラ。
【請求項１５】
前記処理すべき量が前記処理量閾値以上である場合、前記処理モジュール７０２はさらに、拒否応答メッセージまたはビジー応答メッセージで前記第１のオブジェクトＩＯ要求の要求者に応答するように構成される、請求項１４に記載のコントローラ。
【請求項１６】
前記処理モジュール７０２はさらに、前記第１のオブジェクトＩＯ要求を前記送信モジュール７０４に送信した後に休止時間を開始し、前記休止時間が終了した後に第２のオブジェクトＩＯ要求を前記送信モジュール７０４に送信するように構成され、前記休止時間は前記コントローラにより２つのオブジェクトＩＯ要求を前記記憶装置クライアントに送信する間の時間間隔である、請求項１４または１５に記載のコントローラ。
【請求項１７】
前記処理モジュール７０２はさらに、
前記第１の応答メッセージを受信した後、前記格納モジュール７０１内の送信量を更新し、
前記第１の応答メッセージで運搬される処理結果が処理成功を示す場合、前記格納モジュール７０１内の処理成功量を更新する
ように構成され、
前記送信量は前記コントローラにより前記記憶装置クライアントに送信されたオブジェクトＩＯ要求の量であり、
前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である、
請求項１６に記載のコントローラ。
【請求項１８】
前記処理モジュール７０２はさらに、
前記第１のオブジェクトＩＯ要求が分割サイズ閾値より大きいとき、前記第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割し、
前記送信モジュール７０４を用いることによって、分割によって得られた第１のサブオブジェクトＩＯ要求を前記記憶装置クライアントに送信し、
休止時間を開始し、前記休止時間が終了した後に前記送信モジュール７０４を用いることによって第２のサブオブジェクトＩＯ要求を送信する
ように構成され、
各サブオブジェクトＩＯ要求のサイズは前記分割サイズ閾値より大きくなく、同じ識別子を運搬し、前記分割サイズ閾値は、前記オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズ閾値であり、前記休止時間は前記コントローラにより２つのオブジェクトＩＯ要求を前記記憶装置クライアントに送信する間の時間間隔である、
請求項１４または１５に記載のコントローラ。
【請求項１９】
前記送信モジュール７０４は、前記第１のサブオブジェクトＩＯ要求に対して前記記憶装置クライアントにより応答された応答メッセージを受信し、前記応答メッセージを前記処理モジュール７０２に送信するように構成され、前記応答メッセージは前記第１のサブオブジェクトＩＯ要求の処理結果を運搬し、
前記処理モジュール７０２はさらに、前記第１のサブオブジェクトＩＯ要求の前記処理結果を受信し、送信量を更新するように構成され、前記送信量は前記記憶装置クライアントに送信されたオブジェクトＩＯ要求の量であり、
前記処理結果が処理成功を示す場合、前記処理モジュール７０２はさらに、処理成功量を更新するように構成され、前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である、
請求項１８に記載のコントローラ。
【請求項２０】
前記事前に設定された条件が満たされたとき、前記処理モジュール７０２が、オブジェクトＩＯ要求の受信された処理結果に従って前記格納モジュール７０１内の前記処理量閾値を調節するようにさらに構成されることは特に、
前記処理モジュール７０２は、事前に設定された期間に従って前記送信量の現在値および前記処理成功量の現在値を定期的に取得し、前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、前記処理成功率を第１の調節係数として用いることによって前記処理量閾値を調節する
ことである、請求項１７または１９に記載のコントローラ。
【請求項２１】
前記処理モジュール７０２はさらに、第２の調節係数に従って、前記第１の調節係数に従って調節を実施した後に取得された処理量閾値を調節するように構成され、前記第２の調節係数の値は前記第１の調節係数の値に比例する、請求項２０に記載のコントローラ。
【請求項２２】
前記格納モジュール７０１は前記処理量閾値の上限および下限をさらに格納し、
前記処理モジュール７０２はさらに、前記処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された前記処理量閾値の値が前記処理量閾値の上限および下限の間にあるようにするように構成される、
請求項２０または２１に記載のコントローラ。
【請求項２３】
前記処理モジュール７０２はさらに、事前に設定された期間に従って前記送信量の現在値および前記処理成功量の現在値を定期的に取得し、前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、前記処理成功率を第１の調節係数として用いることによって前記休止時間を調節するように構成される、請求項１７または１９に記載のコントローラ。
【請求項２４】
前記処理モジュール７０２はさらに、第３の調節係数と前記第１の調節係数に従って前記休止時間を調節するように構成され、前記第３の調節係数の値は前記第１の調節係数の値と反比例する、請求項２３に記載のコントローラ。
【請求項２５】
前記格納モジュール７０１は前記休止時間の上限および下限をさらに格納し、
前記処理モジュール７０２はさらに、前記休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された前記休止時間の値が前記休止時間の上限と下限の間にあるようにするように構成される、
請求項２３または２４に記載のコントローラ。
【請求項２６】
前記処理モジュール７０２はさらに、前記受信モジュール７０３を用いることによって、オブジェクトＩＯ要求を送信した要求者に応答メッセージで応答し、前記処理すべき量を更新するように構成され、前記応答メッセージは前記オブジェクトＩＯ要求の最終処理結果を運搬する、請求項１４乃至２５の何れか１項に記載のコントローラ。
【請求項２７】
プログラムを記録したコンピュータ可読記憶媒体であって、前記プログラムはコンピュータに請求項１乃至１３の何れか１項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶の分野に関し、特に、オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステムに関する。
【背景技術】
【０００２】
インターネットおよびＷｅｂ２．０の急速な発展とともに、ウェブ（Ｗｅｂ）アプリケーションは何十億もの小さなファイルを生み出した。さらに、人々はより多くの画像、ビデオ、音楽をアップロードしており、何百億もの電子メールを送信しており、これがより多くのデータを生成する。インターネット・データ・センタ（ＩＤＣ、Ｉｎｔｅｒｎｅｔ  Ｄａｔａ  Ｃｅｎｔｅｒ）の統計によれば、データ量は次の１０年には４４倍に成長すると期待されており、全世界のデータは２０２０年までには３５ＺＢ（Ｚｅｔｔａｂｙｔｅ）に達するであろう。８０％は構造化されていないデータであり、大部分は非活性のデータである。かかる大容量データをどのように格納するかに関する問題がある。
【０００３】
かかる大量のデータ量に対して、ＰＢ（Ｐｅｔａｂｙｔｅ）での拡張可能性のみを有するブロック記憶技術およびファイル記憶技術は効果がないように見える。オブジェクト・ベース記憶システム（Ｏｂｊｅｃｔ−Ｂａｓｅｄ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ）は当該ブロック記憶技術の直接アクセスおよび当該ファイル記憶技術のデータ共有のような利点を有し、高い信頼性のある、クロス・プラットフォームの、安全なデータ共有記憶システムを提供する。
【０００４】
図１に示すように、オブジェクト・ベース記憶システムは一般にコントローラ１０１、記憶装置クライアント１０３、および記憶装置クラスタ１０４を備える。コントローラ１０１をさらに外部クライアントに接続してもよく、当該外部クライアントを、別の装置（例えば、ドメイン・ネーム・サーバ）に接続してもよい（当該外部クライアントおよび当該ドメイン・ネーム・サーバは図１には示されていない）。記憶装置クライアント１０３は記憶装置クラスタ１０４内の複数の記憶装置に接続され、記憶装置は、ＩＰ（ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）ハード・ディスクまたは別のスマート・ディスク、例えば、固体ドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ、ＳＳＤ）であってもよい。
【０００５】
オブジェクト・ベース記憶システムでは、コンテナ（バケット（ｂｕｃｋｅｔ））およびオブジェクト（ｏｂｊｅｃｔ）に基づく２層サービス・モデルが最も広く利用されている。当該コンテナは、特殊トップ・レベル・ディレクトリまたはグローバルに一意なドメイン・ネームとして理解することができる。当該オブジェクトはオブジェクト記憶に対する基本単位である。各オブジェクトはデータおよびデータ属性集合の組合せである。データ属性は、アプリケーションの必要に応じて設定してもよく、データ分散、サービス品質等を含む。当該オブジェクトは自己の属性を維持し、これにより、記憶システムの管理作業が簡略化され、柔軟性が高まる。当該オブジェクトは、異なるサイズを有してもよく、データ構造全体、例えば、ファイル、データベース・エントリ、ディレクトリ等を含んでもよい。
【０００６】
コンテナ動作（バケット動作とも呼ばれうる）が実施される場合、ユーザは、クライアントを用いることによってコントローラにコンテナＩＯ（入出力）要求を送信し、オブジェクト動作が実施されるとき、当該クライアントはオブジェクトＩＯ要求を当該コントローラに送信する。オブジェクトＩＯ要求と比べると、コンテナＩＯ要求は一般に小さく、一般に１メガバイト（Ｍ）を超えない。当該オブジェクトＩＯ要求は一般に大きく、大きなものは数Ｍであることがあり、または、１Ｍ未満であることがある。本発明の諸実施形態では、処理を、ＩＯ要求がコンテナＩＯ要求またはオブジェクトＩＯ要求であるかどうかに関らずＩＯ要求のサイズに従ってのみ実施することができる。したがって、以下の説明では、ＩＯ要求は特にコンテナＩＯ要求またはオブジェクトＩＯ要求とは呼ばれず、単にオブジェクトＩＯ要求と呼ばれる。
【０００７】
オブジェクトＩＯ要求は書込みオブジェクトＩＯ要求または読取りオブジェクトＩＯ要求であってもよい。当該実施形態では、特に断らない限り、説明する手続きは書込みオブジェクトＩＯ要求および読取りオブジェクトＩＯ要求の両方に適用可能である。
【０００８】
ユーザがデータを読み書きする必要があるとき、外部クライアントは、オブジェクトＩＯ要求をコントローラ１０１に送信するために使用され、次いで、コントローラ１０１は、オブジェクトＩＯ要求を記憶装置クライアント１０３に送信し、記憶装置クライアント１０３は、アルゴリズムを用いることによって当該オブジェクトＩＯ要求を対応する記憶装置に送信し、当該記憶装置は当該オブジェクトＩＯ要求を処理する。各記憶装置は、制限された量のオブジェクトＩＯ要求を処理し、一時的に格納することができる。ピーク・サービス時間の間、以下のケースが生ずる可能性がある。即ち、オブジェクトＩＯ要求が各記憶装置の処理能力とキャッシュ能力を超える速度で配送される。処理できないオブジェクトＩＯ要求については、当該記憶装置はさらに過負荷応答をフィードバックする必要がある。当該過負荷応答をフィードバックするために占有される記憶装置のリソースは、１つのオブジェクトＩＯ要求を処理するのに必要なリソースより少なくない。この結果、より多くのオブジェクトＩＯ要求が処理できないこととなりうる。
【０００９】
さらに、大きなオブジェクトＩＯ要求は一般に複数の小さなオブジェクトＩＯ要求に分割され、１つの小さなオブジェクトＩＯ要求の処理に失敗するならば、当該大きなオブジェクトＩＯ要求の処理に失敗する。小さなオブジェクトＩＯ要求は通常、長時間待つ必要があり、長時間待った後の処理失敗の可能性が増大する。
【００１０】
処理に失敗したオブジェクトＩＯ要求およびタイムリに処理できないオブジェクトＩＯ要求は、処理のために繰返しの試行で記憶装置に再送され、これが、悪循環を形成し、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システム全体の性能および成功率を低下させる。
【発明の概要】
【課題を解決するための手段】
【００１１】
本発明の諸実施形態では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステムを提供して、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率がピーク・サービス時間に低いという先行技術の問題を解決する。
【００１２】
本発明の当該実施形態の第１の態様では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法を提供する。オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、当該方法は、コントローラにより、第１のオブジェクトＩＯ要求を受信するステップと、処理量閾値と処理すべき量を取得するステップであって、処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量であるステップと、処理すべき量が処理量閾値より小さい場合、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信し、処理すべき量を更新するステップと、第１のオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された第１の応答メッセージを受信するステップであって、第１の応答メッセージは第１のオブジェクトＩＯ要求の処理結果を運搬する、ステップと、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って処理量閾値を調節するステップとを含む。
【００１３】
第１の態様を参照して、第１の態様の第１の可能な実装方式では、当該方法は、コントローラが第２のオブジェクトＩＯ要求を受信したとき、処理量閾値の現在値および処理すべき量の現在値を取得するステップと、処理すべき量の現在値が処理量閾値の現在値以上である場合、拒否応答メッセージまたはビジー応答メッセージで応答するステップとをさらに含む。
【００１４】
第１の態様または第１の態様の第１の可能な実装方式を参照して、第１の態様の第２の可能な実装方式では、当該方法は、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信した後に休止時間を開始するステップと、コントローラが第３のオブジェクトＩＯ要求を受信したとき、処理量閾値の現在値および処理すべき量の現在値を取得するステップと、処理すべき量の現在値が処理量閾値の現在値より小さい場合、休止時間が終了した後に第３のオブジェクトＩＯ要求を記憶装置クライアントに送信し、処理すべき量を更新するステップとをさらに含む。
【００１５】
第１の態様、第１の態様の第１の可能な実装方式、または第１の態様の第２の可能な実装方式を参照して、第１の態様の第３の可能な実装方式では、第１のオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された第１の応答メッセージを受信した後、当該方法は、送信量を更新するステップであって、当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量であるステップと、第１の応答メッセージで運搬される処理結果が処理成功を示す場合、処理成功量を更新するステップであって、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量であるステップ、または、第１の応答メッセージで運搬される処理結果が処理失敗を示す場合、処理成功量を不変に保つステップとをさらに含む。
【００１６】
第１の態様または第１の態様の第１の可能な実装方式を参照して、第１の態様の第４の可能な実装方式では、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信するステップは、分割サイズ閾値を取得するステップであって、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズ閾値であるステップと、第１のオブジェクトＩＯ要求のサイズが分割サイズ閾値より大きいとき、コントローラにより、第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割するステップであって、各サブオブジェクトＩＯ要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬するステップとを含み、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信するステップは特に、コントローラにより、第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信するステップと、休止時間を開始し、休止時間が終了した後に、第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信するステップと、複数のサブオブジェクトＩＯ要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るステップとである。
【００１７】
第１の態様の第４の可能な実装方式を参照して、第１の態様の第５の可能な実装方式では、コントローラにより、第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信した後に、当該方法は、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信するステップであって、当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬するステップと、送信量を更新するステップであって、当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量であるステップと、当該処理結果が処理成功を示す場合、処理成功量を更新するステップであって、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量であるステップ、または、当該処理結果が最終処理失敗を示す場合、処理成功量を不変に保つステップと、複数のサブオブジェクトＩＯ要求の処理結果が受信されるまで、記憶装置クライアントにより応答される応答メッセージを受信するステップの実行に戻るステップとをさらに含む。
【００１８】
第１の態様の第３の可能な実装方式または第１の態様の第５の可能な実装方式を参照して、第１の態様の第６の可能な実装方式では、オブジェクトＩＯ要求の受信された処理結果に従って処理量閾値を調節するステップは、コントローラにより、事前に設定された期間に従って、送信量の現在値および処理成功量の現在値を定期的に取得するステップと、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算するステップと、当該処理成功率を第１の調節係数として用いることによって処理量閾値を調節するステップとを含む。
【００１９】
第１の態様の第６の可能な実装方式を参照して、第１の態様の第７の可能な実装方式では、当該方法は、第２の調節係数に従って、第１の調節係数に従って調節を実施した後に取得された処理量閾値を調節するステップであって、第２の調節係数の値は第１の調節係数の値に比例するステップをさらに含む。
【００２０】
第１の態様の第６の可能な実装方式または第１の態様の第７の可能な実装方式を参照して、第１の態様の第８の可能な実装方式では、処理量閾値の上限および下限はコントローラで設定され、当該方法は、処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された処理量閾値の値が処理量閾値の上限と下限の間にあるようにするステップをさらに含む。
【００２１】
第１の態様の第３の可能な実装方式または第１の態様の第５の可能な実装方式を参照して、第１の態様の第９の可能な実装方式では、当該方法は、コントローラにより、事前に設定された期間に従って、送信量の現在値および処理成功量の現在値を定期的に取得するステップと、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算するステップと、当該処理成功率を第１の調節係数として用いることによって休止時間を調節するステップとをさらに含む。
【００２２】
第１の態様の第９の可能な実装方式を参照して、第１の態様の第１０の可能な実装方式では、当該方法は、第３の調節係数と第１の調節係数に従って休止時間を調節するステップであって、第３の調節係数の値は第１の調節係数の値と反比例するステップをさらに含む。
【００２３】
第１の態様の第９の可能な実装方式または第１の態様の第１０の可能な実装方式を参照して、第１の態様の第１１の可能な実装方式では、休止時間の上限および下限はコントローラで設定され、当該方法は、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするステップをさらに含む。
【００２４】
第１の態様または第１の態様の任意の可能な実装方式を参照して、第１の態様の第１２の可能な実装方式では、当該方法は、コントローラにより、オブジェクトＩＯ要求を送信した要求者に応答メッセージで応答するステップであって、当該応答メッセージはオブジェクトＩＯ要求の最終処理結果を運搬するステップと、処理すべき量を更新するステップとをさらに含む。
【００２５】
本発明の当該実施形態の第２の態様ではオブジェクト・ベース記憶システムにおけるサービス・フロー制御方法を提供する。オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、当該方法は、コントローラにより、第１のオブジェクトＩＯ要求を受信するステップと、分割サイズ閾値を取得するステップであって、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズであるステップと、第１のオブジェクトＩＯ要求のサイズが分割サイズ閾値より大きいとき、コントローラにより、第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割するステップであって、各サブオブジェクトＩＯ要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬するステップと、第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、休止時間を開始するステップと、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信するステップであって、当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬するステップと、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って休止時間を調節するステップとを含む。
【００２６】
第２の態様を参照して、第２の態様の第１の可能な実装方式では、休止時間を開始した後、当該方法は、休止時間が終了した後、第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信するステップと、複数のサブオブジェクトＩＯ要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るステップとをさらに含む。
【００２７】
第２の態様または第２の態様の第１の可能な実装方式を参照して、第２の態様の第２の可能な実装方式では、第１のサブオブジェクトＩＯ要求に対する応答メッセージを受信した後、当該方法は、送信量を更新するステップであって、当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量であるステップと、第１の応答メッセージで運搬される第１のオブジェクトＩＯ要求の処理結果が処理成功を示す場合、処理成功量を更新するステップであって、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量であるステップ、または、第１の応答メッセージで運搬される第１のオブジェクトＩＯ要求の処理結果が最終処理失敗を示す場合、処理成功量を不変に保つステップと、複数のサブオブジェクトＩＯ要求の処理結果が受信されるまで、記憶装置クライアントにより応答される応答メッセージを受信するステップの実行に戻るステップとをさらに含む。
【００２８】
第２の態様、第２の態様の第１の可能な実装方式、または第２の態様の第２の可能な実装方式を参照して、第２の態様の第３の可能な実装方式では、当該事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って休止時間を調節するステップは特に、コントローラにより、事前に設定された期間に従って、送信量の現在値および処理成功量の現在値を定期的に取得するステップと、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算するステップと、当該処理成功率を第１の調節係数として用いることによって休止時間を調節するステップとである。
【００２９】
第２の態様の第３の可能な実装方式を参照して、第２の態様の第４の可能な実装方式では、当該方法は、第３の調節係数に従って、調節が実施された後に取得された休止時間を第１の調節係数に従って調節するステップであって、第３の調節係数の値は第１の調節係数の値と反比例するステップをさらに含む。
【００３０】
第２の態様の第３の可能な実装方式または第２の態様の第４の可能な実装方式を参照して、第２の態様の第５の可能な実装方式では、休止時間の上限および下限はコントローラで設定され、当該方法は、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするステップをさらに含む。
【００３１】
本発明の当該実施形態の第３の態様では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラを提供する。コントローラは格納モジュール７０１、処理モジュール７０２、受信モジュール７０３、および送信モジュール７０４を備える。受信モジュール７０３は、第１のオブジェクトＩＯ要求を受信し、第１のオブジェクトＩＯ要求を処理モジュール７０２に送信し、第１のオブジェクトＩＯ要求を受信した後、処理モジュール７０２は処理量閾値と処理すべき量を格納モジュール７０１から取得するように構成される。処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量である。処理すべき量が処理量閾値より小さい場合、処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求を送信モジュール７０４に送信し、格納モジュール７０１内の処理すべき量を更新するように構成される。送信モジュール７０４はさらに、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信し、第１のオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された第１の応答メッセージを受信し、第１の応答メッセージを処理モジュール７０２に送信するように構成される。第１の応答メッセージは第１のオブジェクトＩＯ要求の処理結果を運搬する。処理モジュール７０２はさらに、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って格納モジュール７０１内の処理量閾値を調節するように構成される。
【００３２】
第３の態様を参照して、第３の態様の第１の可能な実装方式では、処理すべき量が処理量閾値以上である場合、処理モジュール７０２はさらに、拒否応答メッセージまたはビジー応答メッセージで第１のオブジェクトＩＯ要求の要求者に応答するように構成される。
【００３３】
第３の態様または第３の態様の第１の可能な実装方式を参照して、第３の態様の第２の可能な実装方式では、処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求を送信モジュール７０４に送信した後に休止時間を開始し、休止時間が終了した後に第２のオブジェクトＩＯ要求を送信モジュール７０４に送信するように構成される。
【００３４】
第３の態様、第３の態様の第１の可能な実装方式、または第３の態様の第２の可能な実装方式を参照して、第３の態様の第３の可能な実装方式では、処理モジュール７０２はさらに、第１の応答メッセージを受信した後、格納モジュール７０１内の送信量を更新し、第１の応答メッセージで運搬される処理結果が処理成功を示す場合、格納モジュール７０１内の処理成功量を更新するように構成される。当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量であり、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である。
【００３５】
第３の態様または第３の態様の第１の可能な実装方式を参照して、第３の態様の第４の可能な実装方式では、処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求が分割サイズ閾値より大きいとき、第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割し、送信モジュール７０４を用いることによって、分割によって得られた第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、休止時間を開始し、休止時間が終了した後に送信モジュール７０４を用いることによって第２のサブオブジェクトＩＯ要求を送信するように構成される。各サブオブジェクトＩＯ要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬し、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズ閾値である。
【００３６】
第３の態様の第４の可能な実装方式を参照して、第３の態様の第５の可能な実装方式では、送信モジュール７０４は、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、当該応答メッセージを処理モジュール７０２に送信する。当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬する。処理モジュール７０２はさらに、第１のサブオブジェクトＩＯ要求の処理結果を受信し、送信量を更新するように構成される。当該送信量は記憶装置クライアントに送信されたオブジェクトＩＯ要求の量である。当該処理結果が処理成功を示す場合、処理モジュール７０２はさらに、処理成功量を更新するように構成される。当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である。
【００３７】
第３の態様の第３の可能な実装方式または第３の態様の第５の可能な実装方式を参照して、第３の態様の第６の可能な実装方式では、事前に設定された条件が満たされたとき、処理モジュール７０２が、格納モジュール７０１内の処理量閾値をオブジェクトＩＯ要求の受信された処理結果に従って調節するように構成されることは特に、処理モジュール７０２が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、当該処理成功率を第１の調節係数として用いることによって処理量閾値を調節することである。
【００３８】
第３の態様の第６の可能な実装方式を参照して、第３の態様の第７の可能な実装方式では、処理モジュール７０２はさらに、第２の調節係数に従って、第１の調節係数に従って調節を実施した後に取得された処理量閾値を調節するように構成される。第２の調節係数の値は第１の調節係数の値に比例する。
【００３９】
第３の態様の第６の可能な実装方式または第３の態様の第７の可能な実装方式を参照して、第３の態様の第８の可能な実装方式では、格納モジュール７０１は処理量閾値の上限および下限をさらに格納し、処理モジュール７０２はさらに、処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された処理量閾値の値が処理量閾値の上限と下限の間にあるようにするように構成される。
【００４０】
第３の態様の第３の可能な実装方式または第３の態様の第５の可能な実装方式を参照して、第３の態様の第９の可能な実装方式では、処理モジュール７０２はさらに、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、当該処理成功率を第１の調節係数として用いることによって休止時間を調節するように構成される。
【００４１】
第３の態様の第９の可能な実装方式を参照して、第３の態様の第１０の可能な実装方式では、処理モジュール７０２はさらに第３の調節係数と第１の調節係数に従って休止時間を調節するように構成される。第３の調節係数の値は第１の調節係数の値と反比例する。
【００４２】
第３の態様の第９の可能な実装方式または第３の態様の第１０の可能な実装方式を参照して、第３の態様の第１１の可能な実装方式では、格納モジュール７０１は休止時間の上限および下限をさらに格納し、処理モジュール７０２はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
【００４３】
第３の態様または第３の態様の任意の可能な実装方式を参照して、第３の態様の第１２の可能な実装方式では、処理モジュール７０２はさらに、受信モジュール７０３を用いることによって、オブジェクトＩＯ要求を送信した要求者に応答メッセージで応答し、処理すべき量を更新するように構成される。当該応答メッセージはオブジェクトＩＯ要求の最終処理結果を運搬する。
【００４４】
本発明の当該実施形態の第４の態様ではオブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラを提供する。コントローラは、格納モジュール７０１、処理モジュール７０２、受信モジュール７０３、および送信モジュール７０４を備える。受信モジュール７０３は、第１のオブジェクトＩＯ要求を受信し、第１のオブジェクトＩＯ要求を処理モジュール７０２に送信するように構成され、処理モジュール７０２は、第１のオブジェクトＩＯ要求を受信した後、分割サイズ閾値を格納モジュール７０１から取得するように構成され、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズであり、処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求のサイズが分割サイズ閾値より大きいとき、第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割するように構成され、各サブオブジェクトＩＯ要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬し、第１のサブオブジェクトＩＯ要求を送信モジュール７０４に送信し、休止時間を開始し、送信モジュール７０４は、第１のサブオブジェクトＩＯ要求をコントローラに接続された記憶装置クライアントに送信し、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、第１のサブオブジェクトＩＯ要求に対する応答メッセージを処理モジュール７０２に送信するように構成され、当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬し、処理モジュール７０２はさらに、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って休止時間を調節するように構成される。
【００４５】
第４の態様を参照して、第４の態様の第１の可能な実装方式では、処理モジュール７０２はさらに、休止時間が開始された後、休止時間が終了した後に当該送信モジュールを用いることによって、第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、当該複数のサブオブジェクトＩＯ要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るように構成される。
【００４６】
第４の態様または第４の態様の第１の可能な実装方式を参照して、第４の態様の第２の可能な実装方式では、処理モジュール７０２はさらに、第１のサブオブジェクトＩＯ要求に対する応答メッセージを受信した後、送信量を更新するように構成される。当該送信量は、送信モジュール７０４を用いることによって処理モジュール７０２により記憶装置クライアントに送信されたオブジェクトＩＯ要求の量である。第１のサブオブジェクトＩＯ要求に対する応答メッセージで運搬される第１のオブジェクトＩＯ要求の処理結果が処理成功を示す場合、処理モジュール７０２はさらに、処理成功量を更新するか、または、第１のサブオブジェクトＩＯ要求に対する応答メッセージで運搬される第１のオブジェクトＩＯ要求の処理結果が最終処理失敗を示す場合、処理成功量を不変に保つように構成される。当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である。
【００４７】
第４の態様、第４の態様の第１の可能な実装方式、または第４の態様の第２の可能な実装方式を参照して、第４の態様の第３の可能な実装方式では、処理モジュール７０２はさらに、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って休止時間を調節するように構成されることは特に、処理モジュール７０２が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、当該処理成功率を第１の調節係数として用いることによって休止時間を調節することである。
【００４８】
第４の態様の第３の可能な実装方式を参照して、第４の態様の第４の可能な実装方式では、処理モジュール７０２はさらに、第３の調節係数に従って、調節が実施された後に取得された休止時間を第１の調節係数に従って調節するように構成される。第３の調節係数の値は第１の調節係数の値と反比例する。
【００４９】
第４の態様の第３の可能な実装方式または第４の態様の第４の可能な実装方式を参照して、第４の態様の第５の可能な実装方式では、格納モジュール７０１は休止時間の上限および下限をさらに格納し、処理モジュール７０２はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
【００５０】
本発明の当該実施形態の第５の態様では、第３の態様、第４の態様、およびそれらの可能な実装法式の何れか１つに記載のコントローラを備える、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するための装置を提供する。
【００５１】
本発明の当該実施形態の第６の態様では、第３の態様、第４の態様、およびそれらの可能な実装法式の何れか１つに記載のコントローラ、記憶装置クライアント、および少なくとも２つの記憶装置を備える、サービス・フロー制御を実装できるシステムを提供する。コントローラは記憶装置クライアントに接続され、記憶装置クライアントは当該少なくとも２つの記憶装置に接続される。
【００５２】
本発明の当該実施形態では、オブジェクト・ベース記憶システムが大量のオブジェクトＩＯ要求を受信するのでオブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの性能および成功率がピーク・サービス時間に低いというケースを考慮して、オブジェクト・ベース記憶システムのプロセッサに、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値、即ち、処理量閾値を追加し、対応してオブジェクトＩＯ要求の処理結果に従って処理量閾値を調節し、オブジェクト・ベース記憶システムにより受信されたオブジェクトＩＯ要求の量およびオブジェクト・ベース記憶システム内の記憶装置に送信されたオブジェクトＩＯ要求の量を制御することを提供する。これにより、記憶装置により受信されたオブジェクトＩＯ要求が当該記憶装置の処理能力およびキャッシュ能力を超過せず、その結果、当該記憶装置の全てのリソースはオブジェクトＩＯ要求を効果的に処理するために使用され、それにより、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率が高まることを保証することができる。
【００５３】
本発明の当該実施形態では、休止時間をオブジェクト・ベース記憶システムのプロセッサに追加し、対応して休止時間をオブジェクトＩＯ要求の処理結果に従って調節し、オブジェクトＩＯ要求をオブジェクト・ベース記憶システム内の記憶装置に送信するための時間間隔を制御し、当該記憶装置により処理される必要のないオブジェクトＩＯ要求を制御することをさらに提供する。その結果、当該記憶装置により受信されたオブジェクトＩＯ要求が当該記憶装置の処理能力およびキャッシュ能力を超過せず、当該記憶装置の全てのリソースはオブジェクトＩＯ要求を効果的に処理するために使用され、それにより、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率が高まる。
【図面の簡単な説明】
【００５４】
【図１】オブジェクト・ベース記憶システムのシステム・アーキテクチャの略図である。
【図２−１】オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法の手続きを示す図である。
【図２−２】オブジェクト・ベース記憶システムにおける別のサービス・フロー制御方法の手続きを示す図である。
【図２−３】オブジェクト・ベース記憶システムにおけるさらに別のサービス・フロー制御方法の手続きを示す図である。
【図３】オブジェクト・ベース記憶システムにおけるさらに別のサービス・フロー制御方法の手続きを示す図である。
【図４】オブジェクト・ベース記憶システムにおけるさらに別のサービス・フロー制御方法の手続きを示す図である。
【図５】オブジェクト・ベース記憶システムのシステム・アーキテクチャの別の略図である。
【図６Ａ】オブジェクト・ベース記憶システム内のさらなるサービス・フロー制御方法の手続きを示す図である。
【図６Ｂ】オブジェクト・ベース記憶システム内のさらなるサービス・フロー制御方法の手続きを示す図である。
【図７】オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラの略構造図である。
【図８】オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのサービス・フロー制御装置の略構造図である。
【図９】サービス・フロー制御を実装できるオブジェクト・ベース記憶システムの略図である。
【発明を実施するための形態】
【００５５】
本発明では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステムを提供する。オブジェクト・ベース記憶システム内のコントローラは、記憶装置によるオブジェクトＩＯ要求を処理した結果に従って、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値、即ち、処理量閾値を調節して、受信されたオブジェクトＩＯ要求の量に対する制御を実装し、その結果、処理のために記憶装置に送信されるオブジェクトＩＯ要求の量は当該記憶装置の処理能力およびキャッシュ能力を超過せず、これが当該記憶装置の処理能力を保証し、それによりオブジェクト・ベース記憶システムによるオブジェクトＩＯ要求の処理の成功率およびタイムリ性が高まる。
【００５６】
添付図面を参照して、以下では、本発明の当該実施形態の技術的解決策の実装方法、具体的な実装方式、および対応する実現可能な有利な効果を詳細に説明する。明らかに、説明する実施形態は本発明の当該実施形態の全部ではなく一部である。
【００５７】
図１は、本発明の１実施形態に従うオブジェクト・ベース記憶システムの略構造図を示す。図１に示すように、コントローラ１０１は、記憶装置クライアント１０３に接続され、記憶装置クライアント１０３は、記憶装置クラスタ１０４内の複数の記憶装置に接続される。コントローラ１０１をさらに外部クライアントに接続してもよく、当該外部クライアントをさらに別の装置に接続してもよい。コントローラ１０１および記憶装置クライアント１０３を１つのサーバで配置してもよく、または、２つのサーバで配置してもよく、当該サーバは、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバ、即ち、ＨＴＴＰプロトコルを用いるサーバであってもよい。コントローラ１０１は一般に記憶装置クライアント１０３と１対１関係にある。即ち、１つのコントローラ１０１は１つの記憶装置クライアント１０３に対応する。当該オブジェクトベース記憶システムは、複数のグループのコントローラおよび記憶装置クライアント（図１では図示せず）をさらに含んでもよく、コントローラは対応する記憶装置クライアントを用いることによって記憶装置クラスタ内の記憶装置に接続される。当該記憶装置クラスタは複数の記憶装置を備え、当該複数の記憶装置は、分散アルゴリズムを用いることによって一意な名前空間および拡張可能な記憶空間を当該グループのコントローラおよび記憶装置クライアントに提供する。当該記憶装置クラスタを、当該グループのコントローラおよび記憶装置クライアントが独立にサービス制御と動作を実施するために、複数の記憶装置クライアントにより共有してもよい。実際の適用では、各グループのコントローラおよび記憶装置クライアントを、当該記憶装置クラスタ内の幾つかの記憶装置にのみ接続してもよい。
【００５８】
本発明の当該実施形態を、グループのコントローラおよび記憶装置クライアントが存在し、コントローラ１０１および記憶装置クライアント１０３が１つのＨＴＴＰサーバに展開されている例を用いることによって説明する。
【００５９】
本発明の当該実施形態では、記憶装置はＩＰディスクであり、記憶装置クライアントはＩＰディスク・クライアントであり、当該ＩＰディスク・クライアントを複数のＩＰディスクに接続してもよい。ＩＰディスクは、分散アルゴリズムを用いることによって一意な名前空間および拡張可能な大容量記憶空間を提供する。オブジェクト・ベース記憶システム内のＩＰディスクに、鍵−値を基本アクセス単位として用いることによってアクセスしてもよい。１つの鍵−値動作は１つのＩＯ要求であり、オブジェクトＩＯ要求の属性のようなパラメータに従って計算を実施した後に得られる値である。鍵は、ユーザにより指定されたデータ・ブロックの一意な識別子であり、鍵を記憶装置により使用して特定のデータ・ブロックを発見してもよい。値は、鍵に対応するデータ・ブロックの内容である。各鍵は１つの値に対応し、当該値はＩＰディスク上のオブジェクトの記憶位置およびサイズを示す。別のタイプのスマート・ディスク、例えば、ＳＳＤを記憶装置として使用してもよい。特に断らない限り、別のタイプの記憶装置の実装原理はＩＰディスクと同様である。
【００６０】
図２−１は、オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法の手続きを示す。
【００６１】
ステップ２０１：コントローラが第１のオブジェクトＩＯ要求を受信する。
【００６２】
ユーザが、クライアントを用いることによってコントローラに第１のオブジェクトＩＯ要求を送信する。第１のオブジェクトＩＯ要求をコントローラに送信する前に、当該クライアントは、さらに、先ずコントローラのドメイン・ネーム情報をドメイン・ネーム・サーバに送信してもよい。当該ドメイン・ネーム・サーバは、コントローラのＩＰアドレスをクライアントに返し、次いで、クライアントが、第１のオブジェクトＩＯ要求を受信されたＩＰアドレスに従って対応するコントローラに送信する。
【００６３】
ステップ２０３：コントローラが処理量閾値と処理すべき量を取得する。処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量である。
【００６４】
コントローラは、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の最大値、即ち、処理量閾値を格納する。コントローラはさらに、オブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量、即ち、処理すべき量を記録する。オブジェクト・ベース記憶システム内のオブジェクトＩＯ要求の処理すべき量の値は当該オブジェクトＩＯ要求の処理結果とともに変化する。本発明の当該実施形態では、処理量閾値を、オブジェクトＩＯ要求の処理結果に従ってコントローラにより動的に調節して、処理量閾値が現在の状況においてオブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の最大値であることを保証してもよい。
【００６５】
ステップ２０５：処理すべき量が処理量閾値より小さい場合、コントローラは、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信し、処理すべき量を更新する。
【００６６】
処理すべき量および処理量閾値が比較される。処理すべき量が処理量閾値より小さいとき、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの能力の上限に到達せず、より多くのオブジェクトＩＯ要求をさらに処理することができる。したがって、コントローラは、受信された第１のオブジェクトＩＯ要求を記憶装置クライアントに送信する。この場合、オブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量が増大し、処理すべき量を更新する必要がある。実際の動作では、コントローラにより第１のオブジェクトＩＯ要求を記憶装置クライアントに送信するステップとコントローラにより処理すべき量を更新するステップの間に厳密な順序はない。コントローラは、先ず第１のオブジェクトＩＯ要求を記憶装置クライアントに送信し、次いで、処理すべき量を更新してもよく、または、先ず処理すべき量を更新し、次いで第１のオブジェクトＩＯ要求を記憶装置クライアントに送信してもよい。
【００６７】
処理すべき量を、カウンタを用いることにより記録してもよい。処理すべき量が更新されると、当該カウンタに１が加えられる。確かに、処理すべき量を別の方式で記録し更新してもよい。例えば、処理すべき量の統計値をさらに、カウント・ダウンの方式で収集してもよい。ここでは全ての例を説明しているわけではない。
【００６８】
実際の適用では、コントローラは、先ず処理すべき量Ｎに１を加え、次いで第１のオブジェクトＩＯ要求を記憶装置クライアントに送信してもよく、または、先ず第１のオブジェクトＩＯ要求を記憶装置クライアントに送信し、次いで処理すべき量Ｎに１を加えてもよい。当該２つの動作の間の順序に厳密な制限はない。
【００６９】
記憶装置クライアントは、第１のオブジェクトＩＯ要求を処理のために対応する記憶装置に送信する。第１のオブジェクトＩＯ要求を受信した後、記憶装置クライアントはインタフェースを受信された第１のオブジェクトＩＯ要求に割り当てる。当該インタフェースは、第１のオブジェクトＩＯ要求に対応する記憶装置に関する情報を決定する。記憶装置クライアントは、第１のオブジェクトＩＯ要求を、当該記憶装置に関する決定された情報に従って当該記憶装置に送信する。当該記憶装置は、受信されたオブジェクトＩＯ要求を待ち行列に入れ、当該オブジェクトＩＯ要求を１つずつ処理する。第１のオブジェクトＩＯ要求を処理した後、当該記憶装置は、第１のオブジェクトＩＯ要求に対する応答メッセージで記憶装置クライアントに応答する。当該応答メッセージは、第１のオブジェクトＩＯ要求の処理結果に関する情報を運搬する。
【００７０】
処理に成功したオブジェクトＩＯ要求に対して、記憶装置は記憶装置クライアントに処理成功を示す情報を運搬する応答メッセージで応答し、待ち行列内の次のオブジェクトＩＯ要求の処理を開始する。オブジェクトＩＯ要求をタイムリに処理できないとき、当該記憶装置は過負荷応答メッセージで記憶装置クライアントに応答する。或る理由、例えば、装置故障、信号損失等のため処理に成功しなかったオブジェクトＩＯ要求に対して、当該記憶装置は記憶装置クライアントに処理失敗を示す情報を運搬する応答メッセージで応答する。処理失敗を示す応答メッセージを受信した後、記憶装置クライアントは、特定の時間量に到達するかまたはオブジェクトＩＯ要求を処理するための所定の期限を超えるまで、処理が不成功であったオブジェクトＩＯ要求を処理のために記憶装置に再送してもよい。所定の期限が終了したときに記憶装置クライアントが応答メッセージを受信しなかった場合、記憶装置クライアントはまた、オブジェクトＩＯ要求を処理のために記憶装置に再送してもよい。特定量の試行の後にオブジェクトＩＯ要求の処理に成功しなかったとき、応答メッセージは最終処理失敗を示す処理結果を運搬する。試行の量はサービス要件に従ってオブジェクト・ベース記憶システムにより設定される。
【００７１】
ステップ２０７：コントローラが第１のオブジェクトＩＯ要求に対する記憶装置クライアントにより応答される応答メッセージを受信する。当該応答メッセージは第１のオブジェクトＩＯ要求の処理に不成功であったかまたは成功したかを示す処理結果を運搬する。
【００７２】
記憶装置クライアントが第１のオブジェクトＩＯ要求に対する記憶装置により応答された応答メッセージを受信する。当該応答メッセージは、第１のオブジェクトＩＯ要求の処理に不成功であったかまたは成功したかを示す処理結果を運搬する。次いで、記憶装置クライアントは受信された応答メッセージでコントローラに応答する。
【００７３】
第１のオブジェクトＩＯ要求に対する記憶装置クライアントにより応答された応答メッセージを受信した後、コントローラは当該応答メッセージで第１のオブジェクトＩＯ要求の要求者に応答し、処理すべき量を更新する。オブジェクトＩＯ要求が記憶装置クライアントに送信されるとき、処理すべき量を更新するための方法は処理すべき量を更新するための方法と一貫する必要がある。例えば、１つのオブジェクトＩＯ要求を記憶装置クライアントに送信した後、コントローラは処理すべき量に１を加える。この場合、１つの応答メッセージでオブジェクトＩＯ要求の要求者に応答するとき、コントローラは、処理すべき量から１を減ずる。
【００７４】
コントローラが第１のオブジェクトＩＯ要求に対する記憶装置クライアントにより応答された応答メッセージを受信したとき、処理すべき量を更新してもよい。換言すれば、１つのオブジェクトＩＯ要求に対する記憶装置クライアントにより応答される応答メッセージを受信したとき、コントローラは、処理すべき量を更新し、例えば、処理すべき量から１を減ずる。このように、オブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量を、処理すべき量を増大または減少させることによって正確に記録してもよい。
【００７５】
別のオブジェクトＩＯ要求が受信されたとき、コントローラは処理すべき量の現在値を処理量閾値の現在値と比較し、比較結果に従って当該オブジェクトＩＯ要求を受理するかどうかを判定する。処理すべき量の現在値が処理量閾値の現在値以上であるとき、オブジェクト・ベース記憶システムは別のオブジェクトＩＯ要求を処理することができない。記憶装置クライアントを用いることによって、当該別のオブジェクトＩＯ要求をさらに受理し、処理のために記憶装置に送信する場合、当該記憶装置は追加の性能を使用してシステム・ビジー応答メッセージで応答してもよく、これは、処理されているオブジェクトＩＯ要求に影響を及ぼし、当該オブジェクトＩＯ要求の遅延の増大と故障率の増大の原因となり、最終的に、記憶装置の性能は悪化する。したがって、処理すべき量の現在値が処理量閾値の現在値以上であるとき、コントローラは、拒否応答メッセージまたはビジー応答メッセージで当該オブジェクトＩＯ要求の要求者に直接応答し、当該オブジェクトＩＯ要求を破棄する。
【００７６】
ステップ２０９：コントローラは、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って処理量閾値を調節する。
【００７７】
当該事前に設定された条件が、事前に設定された期間、処理すべき量の所定値、または処理すべき量および処理量閾値の間の所定の差異であってもよい。当該事前に設定された条件が満たされたとき、例えば、当該事前に設定された期間が終了し、コントローラは、処理量閾値の値をオブジェクトＩＯ要求の受信された処理結果に従って調節する。ここでのオブジェクトＩＯ要求の処理結果はコントローラにより受信された全てのオブジェクトＩＯ要求の処理結果であってもよく、または、当該期間内にコントローラにより受信されたオブジェクトＩＯ要求の処理結果であってもよい。当該期間が終了した後、コントローラは、受信されたオブジェクトＩＯ要求の処理結果の全てを削除して他を受信し、または、全てのオブジェクトＩＯ要求の処理結果を保持してもよく、本発明の当該実施形態では限定されない。
【００７８】
事前に設定された条件が満たされたとき、応答メッセージが必ずしも全ての送信されたオブジェクトＩＯ要求に対して受信されないことがありうることに留意すべきである。換言すれば、応答メッセージが第１のオブジェクトＩＯ要求に対して受信されるかどうかは、コントローラが、受信された応答メッセージ内で運搬されるオブジェクトＩＯ要求の処理結果に従って処理量閾値を調節することには影響しない。したがって、ステップ２０７およびステップ２０９の間に厳密な順序はない。
【００７９】
記憶装置により処理でき一時的に格納されるオブジェクトＩＯ要求の量は制限されない。ピーク・サービス時間の間、各記憶装置は大量のオブジェクトＩＯ要求を処理する必要がある。オブジェクトＩＯ要求を配送する速度が記憶装置の処理能力およびキャッシュ能力を超えるとき、幾つかのオブジェクトＩＯ要求を処理することができない。タイムリに処理できないオブジェクトＩＯ要求については、記憶装置は過負荷応答メッセージを記憶装置クライアントにフィードバックし、記憶装置クライアントが当該オブジェクトＩＯ要求を再試行し、記憶装置に再送することを試みる。しかし、当該過負荷応答メッセージをフィードバックすると、記憶装置の多くのディスク・リソースを占有する。このように、オブジェクトＩＯ要求を処理するための記憶装置の性能は悪化し、待ち行列におけるオブジェクトＩＯ要求の待機時間が増大する。このサイクルが反復されると、記憶装置の処理性能は悪化し、オブジェクトＩＯ要求の待機時間が増大し、オブジェクトＩＯ要求をタイムリに処理できず、オブジェクトＩＯ要求を処理する故障率が増大する。
【００８０】
本発明の当該実施形態では、コントローラは、記憶装置クライアントに送信されたオブジェクトＩＯ要求の量を制御する。処理量閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の最大値、即ち、オブジェクト・ベース記憶システム内の記憶装置により処理できるオブジェクトＩＯ要求の量の最大値を表す。記憶装置により処理できるオブジェクトＩＯ要求の量は当該記憶装置のリソースの占有とともに変化する。したがって、本発明の当該実施形態では、コントローラはオブジェクトＩＯ要求の処理結果に従って処理量閾値の値を動的に調節し、調節の後に取得された処理量閾値に従って受信されたオブジェクトＩＯ要求の量を制御する、即ち、処理すべき量の値を制御し、その結果、処理すべきオブジェクトＩＯ要求の量はオブジェクト・ベース記憶システムの処理能力を超過せず、オブジェクト・ベース記憶システムの全てのリソースはオブジェクトＩＯ要求を効果的に処理するために使用され、これは、オブジェクト・ベース記憶システムの処理性能と成功率を高め、オブジェクトＩＯ要求の処理遅延を削減する。
【００８１】
図２−１に示す流れ図に基づいて、当該サービス・フロー制御方法は図２−２に示すように以下のステップをさらに含んでもよい。
【００８２】
ステップ２０２：コントローラが第２のオブジェクトＩＯ要求を受信する。ステップ２０２の実装方法はステップ２０１と同じであり、ここでは説明せず、図２−２では図示しない。
【００８３】
ステップ２０４：コントローラが、処理量閾値の現在値および処理すべき量の現在値を取得する。ステップ２０４の実装方法はステップ２０２と同様である。処理量閾値はオブジェクトＩＯ要求の処理結果に従ってコントローラにより動的に調節され、処理すべき量はまた受信されたオブジェクトＩＯ要求の量に従って調節されるので、オブジェクトＩＯ要求を受信した後、コントローラは、コントローラに現在格納されている処理すべき量の値および処理量閾値を取得する。ステップ２０４はここでは再度説明せず、図２−２では図示しない。
【００８４】
ステップ２０６：処理すべき量の現在値が処理量閾値の現在値以上である場合、コントローラは拒否応答メッセージまたはビジー応答メッセージで応答する。
【００８５】
処理量閾値の現在値および処理すべき量の現在値を取得した後、コントローラは、当該２つの値を比較し、処理すべき量の現在値が処理量閾値の現在値より小さいとき、ステップ２０５と後述の方法を実行する。これはここでは説明しない。処理すべき量の現在値が処理量閾値の現在値以上であるとき、処理すべきオブジェクトＩＯ要求の量がオブジェクト・ベース記憶システムの処理能力を超過するか、または、オブジェクト・ベース記憶システムの処理能力に達する。別のオブジェクトＩＯ要求がさらに受信される場合、圧力が確実にオブジェクト・ベース記憶システムにかかり、オブジェクト・ベース記憶システムは、リソースを利用してこれらの過負荷オブジェクトＩＯ要求を処理する必要があり、これがオブジェクト・ベース記憶システム全体の性能に影響し、処理効率を低下させる。したがって、処理すべき量の現在値が処理量閾値の現在値以上であるとき、コントローラはもはや別のオブジェクトＩＯ要求を受理せず、コントローラは拒否応答メッセージまたはビジー応答メッセージで、第２のオブジェクトＩＯ要求を送信したクライアントに応答する。さらに、コントローラは、さらに第２のオブジェクトＩＯ要求を破棄してもよい。
【００８６】
処理すべき量の現在値が処理量閾値の現在値以上であるとき、コントローラはもはや別のオブジェクトＩＯ要求を受理しないが、記憶装置クライアントを用いることによって処理のために記憶装置に送信されたオブジェクトＩＯ要求の量を制御するために、オブジェクトＩＯ要求を送信した要求者に拒否応答メッセージまたはビジー応答メッセージで直接応答する。これにより、過度なオブジェクトＩＯ要求が記憶装置に送信されたために生ずる輻輳を回避し、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの効率を高め、オブジェクトＩＯ要求の遅延を削減する。
【００８７】
図２−３は、オブジェクト・ベース記憶システム内のサービス・フロー制御を実施するための方法の別の実装方式を示す。図２−１および図２−２に示す方法の手続きに基づいて、コントローラによりオブジェクトＩＯ要求を記憶装置クライアントに送信するための時間間隔が追加される。具体的な方法手続きは以下の通りである。
【００８８】
ステップ２１１：第１のオブジェクトＩＯ要求を記憶装置クライアントに送信した後、コントローラが休止時間を開始する。休止時間は、コントローラにより２つのオブジェクトＩＯ要求を記憶装置クライアントに送信する間の時間間隔である。コントローラは、タイマを用いることによって休止時間を記録してもよい。休止時間を開始することは、当該タイマを開始することであってもよい。
【００８９】
ステップ２１３：コントローラが第３のオブジェクトＩＯ要求を受信し、処理量閾値の現在値および処理すべき量の現在値を取得する。ステップ２１３の実装方法はステップ２０１と同じであり、ここでは説明せず、図２−３では図示しない。
【００９０】
ステップ２１３とステップ２１１の間に厳密な順序はない。換言すれば、コントローラは、休止時間を開始する前に第３のオブジェクトＩＯ要求を受信してもよく、または、休止時間を開始した後に第３のオブジェクトＩＯ要求を受信してもよい。
【００９１】
ステップ２１５：処理すべき量の現在値が処理量閾値の現在値より小さい場合、コントローラは、休止時間が終了した後に第３のオブジェクトＩＯ要求を記憶装置クライアントに送信し、処理すべき量を更新する。
【００９２】
コントローラは、処理量閾値の取得された現在値を処理すべき量の取得された現在値と比較する。処理すべき量の現在値が処理量閾値の現在値より小さいとき、オブジェクト・ベース記憶システムはさらに別のオブジェクトＩＯ要求を受理してもよく、コントローラは、受信された第３のオブジェクトＩＯ要求を処理のために記憶装置クライアントに送信してもよい。この方法の手続きと以上の２つの方法の手続きの間の差異は、処理すべき量の現在値が処理量閾値の現在値より小さいと判定した後、コントローラは第３のオブジェクトＩＯ要求を記憶装置クライアントに即時に送信しないが、休止時間が終了するまで待機し、次いで、第３のオブジェクトＩＯ要求を記憶装置クライアントに送信する必要があるということにある。換言すれば、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信した後、コントローラは、特定の時間間隔（即ち、休止時間）だけ待機し、次いで、第３のオブジェクトＩＯ要求を記憶装置クライアントに送信する必要がある。記憶装置クライアントは第３のオブジェクトＩＯ要求を処理のために対応する記憶装置に送信する。
【００９３】
このように、オブジェクトＩＯ要求を記憶装置に送信するための時間を調節してもよく、その結果、当該記憶装置は当該オブジェクトＩＯ要求を処理するためのより多くの時間を有することができ、これにより、当該記憶装置上のオブジェクトＩＯ要求の輻輳が回避され、当該記憶装置の全てのリソースが当該オブジェクトＩＯ要求を処理するために使用されることが保証され、それによりオブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システム全体の効率が高まる。
【００９４】
処理すべき量を更新するための方式と時間は以上の実施形態で説明したものと同じであり、ここでは再度説明しない。
【００９５】
休止時間を、タイマを用いることにより記録してもよい。時間間隔をカウント方式で記録してもよく、または、時間間隔をカウントダウン方式で記録してもよい。
【００９６】
ステップ２１７：コントローラが、事前に設定された条件が満たされたとき、休止時間をオブジェクトＩＯ要求の受信された処理結果に従って調節する。
【００９７】
当該事前に設定された条件は、事前に設定された期間または休止時間の事前に設定された値であってもよい。当該事前に設定された条件が満たされたとき、例えば、当該事前に設定された期間が終了したとき、コントローラは、オブジェクトＩＯ要求の受信された処理結果に従って休止時間の値を調節する。ここでのオブジェクトＩＯ要求の処理結果は、コントローラにより受信された全てのオブジェクトＩＯ要求の処理結果、または、当該期間内にコントローラにより受信されたオブジェクトＩＯ要求の処理結果であってもよい。当該期間が終了した後、コントローラは、受信されたオブジェクトＩＯ要求の処理結果の全てを削除して他のものを受信するか、または、全てのオブジェクトＩＯ要求の処理結果を保持してもよく、本発明の当該実施形態では限定されない。
【００９８】
当該事前に設定された条件が満たされたとき、応答メッセージが必ずしも全ての送信されたオブジェクトＩＯ要求に対して受信されない可能性がある。換言すれば、送信されたオブジェクトＩＯ要求に対して応答メッセージが受信されるかどうかはコントローラが受信された応答メッセージに従って休止時間を調節することには影響しない。したがって、第３のオブジェクトＩＯ要求に対する応答メッセージを受信するステップはここでは説明しない。
【００９９】
本発明の当該実施形態では、休止時間は、オブジェクトＩＯ要求の受信された処理結果を用いることによってコントローラにより調節されてもよい。このように、コントローラは、オブジェクトＩＯ要求を処理のために記憶装置に送信するための時間間隔を制御することによって、処理のために記憶装置に送信されたオブジェクトＩＯ要求の量を制御してもよく、これは、処理のために記憶装置に送信されたオブジェクトＩＯ要求の量が当該記憶装置の処理能力を超過せず、当該記憶装置上のオブジェクトＩＯ要求の輻輳が防止され、オブジェクト・ベース記憶システム内のオブジェクトＩＯ要求の処理効率が高まり、オブジェクトＩＯ要求の遅延が削減されることを保証する。
【０１００】
コントローラがオブジェクトＩＯ要求の受信された処理結果に従って上述の処理量閾値または休止時間を動的に調節することを実装するために、コントローラは、当該オブジェクトＩＯ要求の処理結果に関する統計を収集し、当該処理結果を分析する必要がある。本発明の当該実施形態では、コントローラはオブジェクトＩＯ要求の処理成功率に従って処理量閾値または休止時間を動的に調節する。コントローラはまた、オブジェクトＩＯ要求の処理失敗率に従って処理量閾値または休止時間を動的に調節してもよいか、または、コントローラはまた、オブジェクトＩＯ要求の処理成功率または処理失敗率および別の因子に従って処理量閾値または休止時間を動的に調節してもよいことは理解されうる。
【０１０１】
動的な調節が、特定の時間ルールに従って実施されてもよく、または、オブジェクトＩＯ要求の具体的な量が記憶装置クライアントに送信された後に実施されてもよい。本発明の当該実施形態を、コントローラが処理量閾値または休止時間を定期的に調節する例を用いることによって説明する。
【０１０２】
コントローラがオブジェクトＩＯ要求の受信された処理結果に従って処理量閾値または休止時間を定期的に調節することを実装するために、送信量と処理成功量をコントローラに記録する必要がある。当該送信量とは、コントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量のことをいい、当該処理成功量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトＩＯ要求の間で処理に成功したオブジェクトＩＯ要求の量のことをいう。当該送信量を、コントローラ内のカウンタを設定することにより記録してもよく、当該処理成功量をまた、コントローラ内のカウンタを設定することにより記録してもよい。
【０１０３】
当該送信量を２つの方式で更新してもよい。１方式では、当該送信量は、コントローラが１つのオブジェクトＩＯ要求を記憶装置クライアントに送信した後に更新される。例えば、現在記録されている送信量に１を加える。別の方式では、当該送信量は、コントローラがオブジェクトＩＯ要求を記憶装置クライアントに送信し、当該オブジェクトＩＯ要求に対して記憶装置クライアントにより応答される応答メッセージを受信した後に更新される。例えば、現在記録されている送信量に１を加える。第２の方式では、当該応答された応答メッセージが処理成功を示す応答メッセージまたは処理失敗を示す応答メッセージであるかどうかに関らず、１つの応答メッセージが受信されたならば現在記録されている送信量に１を加える必要がある。
【０１０４】
後者の更新方式は特に、コントローラが１つのオブジェクトＩＯ要求を記憶装置クライアントに送信した後、記憶装置クライアントが受信されたオブジェクトＩＯ要求を処理のために記憶装置に送信するというものである。記憶装置は応答メッセージで記憶装置クライアントに応答する。当該応答メッセージは、当該オブジェクトＩＯ要求の処理結果、例えば、処理失敗または処理成功を運搬する。次いで記憶装置クライアントは当該応答メッセージでコントローラに応答する。当該応答メッセージを受信した後、コントローラは、現在記録されている送信量を更新し、例えば、現在記録されている送信量に１を加える。
【０１０５】
処理成功量を更新するための方式は、オブジェクトＩＯ要求に対して記憶装置クライアントにより応答される応答メッセージを受信したとき、コントローラが、当該応答メッセージで運搬される処理結果が処理成功を示す場合に処理成功量を更新し、例えば、現在記録されている処理成功量に１を加えるというものである。
【０１０６】
事前に設定された期間が終了したとき、コントローラは、送信量の現在値および処理成功量の現在値を取得し、オブジェクトＩＯ要求の処理成功率を計算し、計算の後に取得された処理成功率を第１の調節係数として用いることによって処理量閾値または休止時間を調節する。当該処理成功率は、成功率＝処理成功量の現在値／送信量の現在値×１００％であってもよい。
【０１０７】
コンスタントな観察と実験を通じて、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの能力は、送信量および成功率とともに変化することが分かる。したがって、本発明の当該実施形態では、別の調節係数に従って、成功率に従って調節が実施された後に取得された処理量閾値または休止時間を調節することが提供される。処理量閾値に対して、調節係数は処理成功率に比例する。休止時間に対して、調節係数は処理成功率に反比例する。係数の間の関係をより明確に説明するために、処理成功率を第１の調節係数と称し、処理量閾値を調節するための調節係数を第２の調節係数と称し、休止時間を調節するための調節係数を第３の調節係数と称する。第２の調節係数は定数であり、第２の調節係数の値は第１の調節係数の値に比例する。即ち、第１の調節係数の大きな値は第２の調節係数の大きな値を示す。第３の調節係数は定数であり、第３の調節係数の値は第１の調節係数の値と反比例する。即ち、第１の調節係数の大きな値は第３の調節係数の小さな値を示す。
【０１０８】
さらに、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量は制限されず、限定なしに増大または減少させることはできない。したがって、処理量閾値の上限および下限を、コントローラ内で事前に設定してもよい。処理量閾値の上限はオブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の最大量であり、処理量閾値の下限は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の最小量である。第１の調節係数または第１の調節係数および第２の調節係数に従ってコントローラによって計算することにより取得された処理量閾値が処理量閾値の上限と下限の間にないとき、計算後に取得された処理量閾値を修正する必要がある。例えば、第１の調節係数または第１の調節係数および第２の調節係数に従ってコントローラによって計算することにより取得された処理量閾値が処理量閾値の上限より大きい場合、当該取得された処理量閾値は処理量閾値の上限に等しくなるように調節され、第１の調節係数または第１の調節係数および第２の調節係数に従ってコントローラによって計算することにより取得された処理量閾値が処理量閾値の下限より小さい場合、当該取得された処理量閾値は処理量閾値の下限に等しくなるように調節される。
【０１０９】
同様に、オブジェクト・ベース記憶システムの休止時間をまた制限する必要がある。したがって休止時間の上限および下限をまたコントローラ内で事前に設定してもよい。第１の調節係数または第１の調節係数および第３の調節係数に従って調節を実施することによってコントローラにより取得された休止時間は、当該休止時間の事前に設定された上限と事前に設定された下限との間にある必要がある。第１の調節係数または第１の調節係数および第３の調節係数に従ってコントローラによって計算することによって取得された休止時間が当該休止時間の事前に設定された上限と事前に設定された下限との間にない場合、計算後に取得された休止時間を当該休止時間の上限と下限に従って修正する必要がある。例えば、第１の調節係数または第１の調節係数および第３の調節係数に従ってコントローラによって計算することによって取得された休止時間が当該休止時間の設定された上限より大きい場合、当該取得された休止時間は、休止時間の上限に等しくなるように調節され、または、第１の調節係数または第１の調節係数および第３の調節係数に従ってコントローラによって計算することによって取得された休止時間が休止時間の設定された下限より小さい場合、当該取得された休止時間は休止時間の下限に等しくなるように調節される。
【０１１０】
以下では、具体的な例を用いることによって、どのように事前に設定された期間に従って処理量閾値および休止時間を調節するかを説明する。
【０１１１】
当該方法の実施形態では、期間は１分に事前に設定され、コントローラに格納される。当該期間を必要に応じて別の値に設定してもよいことは当業者により理解されうる。例えば、当該期間は３０秒に設定される。当該期間を、コントローラ内でタイマを設定することにより記録してもよい。当該事前に設定された期間が終了したとき、コントローラは、現在の送信量および現在の処理成功量を取得し、処理量閾値および／または休止時間を調節するようにトリガされる。換言すれば、本発明の当該実施形態では、コントローラは、処理量閾値および／または休止時間を毎分調節する。
【０１１２】
先ず、事前に設定された期間に従って処理量閾値を調節するための方法を、例を用いることによって説明する。
【０１１３】
Ｍ＝Ｍ１×ｒ１×μｍである。Ｍは調節後に取得される新たな処理量閾値であり、Ｍ１は処理量閾値の現在値であり、ｒ１は第１の調節係数の現在値であり、μｍは第１の調節係数に対する第２の調節係数の値である。μｍはｒに比例する。即ち、大きな第１の調節係数ｒは大きな第２の調節係数μを示し、小さな第１の調節係数ｒは小さな第２の調節係数μを示す。ｒ１は処理成功量の現在値の送信量の現在値に対する割合、即ち、ｒ１＝（ｐ１／ｑ１）×１００％である。ｐ１は処理成功量の現在値であり、ｑ１は送信量の現在値である。
【０１１４】
当該実施形態では、処理量閾値は区分的関数を用いることによって調節される。計算式は以下の通りである。
Ｍ＝ＭＭｉｎ（ｒ１＜０．２）；
Ｍ＝Ｍ１×ｒ１×０．６（０．２≦ｒ１＜０．６）；
Ｍ＝Ｍ１×ｒ１×０．８（０．６≦ｒ１＜０．８）；
Ｍ＝Ｍ１×ｒ１×１．０（０．８≦ｒ１＜０．９５）；
Ｍ＝Ｍ１×ｒ１×１．１（Ｍ１＜ＭＭａｘ、かつ、ｒ１≧０．９５）；
Ｍ＝ＭＭａｘ（Ｍ１＝ＭＭａｘ、かつ、ｒ１≧０．９５）
【０１１５】
ＭＭｉｎは処理量閾値の下限であり、ＭＭａｘは処理量閾値の上限であり、処理量閾値の上限および下限は事前に設定される。サービスが開始される前に、Ｍの初期値はＭ＝ＭＭａｘに設定され、ｒ１の初期値は１００％に設定される。サービスが継続すると、事前に設定された期間が終了したとき、コントローラは、ｒ１の現在値に従い対応する式を選択することによって計算および調節を実施し、処理量閾値の新たな値を取得する。
【０１１６】
以下では、例を用いることによって事前に設定された期間に従って休止時間を調節するための方法を説明する。
【０１１７】
ｔ＝（ｔ１＋Ｃｏｎｓｔａｎｔ）／ｒ１×μｔである。ｔは調節後に取得された新たな休止時間であり、ｔ１は休止時間の現在値であり、ｒ１は第１の調節係数の現在値であり、μｔは第１の調節係数の値に対する第３の調節係数の値である。μｔはｒに反比例する。即ち、大きな第１の調節係数ｒは小さな第３の調節係数μｔを示し、小さな第１の調節係数ｒは大きな第３の調節係数μｔを示す。ｒ１は処理成功量の現在値の送信量の現在値に対する割合、即ち、ｒ１＝（ｐ１／ｑ１）×１００％である。ｐ１は処理成功量の現在値であり、ｑ１は送信量の現在値である。
【０１１８】
当該実施形態では、休止時間は区分的関数を用いることによって調節される。計算式は以下の通りである。
ｔ＝ｔＭａｘＤｅｌａｙ（ｒ１＜０．２）；
ｔ＝（ｔ１＋１５）／ｒ１×１．６（０．２≦ｒ１＜０．６）；
ｔ＝（ｔ１＋１５）／ｒ１×１．４（０．６≦ｒ１＜０．８）；
ｔ＝（ｔ１＋１５）／ｒ１×１．０（０．８≦ｒ１＜０．９５）；
ｔ＝（ｔ１＋０）／ｒ１×０．９（ｔ１≧ｔＴｈｒｅｓｈｏｌｄ、かつ、ｒ１≧０．９５）；
ｔ＝ｔＭｉｎＤｅｌａｙ（ｔ１＜ｔＴｈｒｅｓｈｏｌｄ、かつ、ｒ１≧０．９５）
【０１１９】
ｔＭｉｎＤｅｌａｙは休止時間の下限であり、ｔＭａｘＤｅｌａｙは休止時間の上限であり、休止時間の上限と下限は事前に設定される。当該実施形態では、休止時間の下限は０に設定され、休止時間はミリ秒である。
【０１２０】
各オブジェクトＩＯ要求のサイズは異なる。一般に、オブジェクトＩＯ要求の分割サイズ閾値はコントローラにおいて事前に設定され、分割サイズ閾値より大きいオブジェクトＩＯ要求を大きなオブジェクトＩＯ要求と称し、分割サイズ閾値より小さいオブジェクトＩＯ要求を小さなオブジェクトＩＯ要求と称する。分割サイズ閾値とは、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズのことをいう。コントローラにより受理されたオブジェクトＩＯ要求が分割サイズ閾値より大きい、即ち、当該受理されたオブジェクトＩＯ要求が大きなオブジェクトＩＯ要求であるとき、コントローラは、当該大きなオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割する。分割により得られたサブオブジェクトＩＯ要求の何れも分割サイズ閾値より大きくなく、分割により得られたサブオブジェクトＩＯ要求は同じ識別子を運搬し、当該同じ識別子は、当該サブオブジェクトＩＯ要求が同一の大きなオブジェクトＩＯ要求を分割することにより得られることを示すために使用される。一般に、コントローラは、分割サイズ閾値に従って当該大きなオブジェクトＩＯ要求を分割する。
【０１２１】
例えば、オブジェクトＩＯ要求の事前に設定された分割サイズ閾値は１メガバイト（Ｍ）である。コントローラにより受理された第１のオブジェクトＩＯ要求が４．５Ｍであるとき、第１のオブジェクトＩＯ要求は大きなオブジェクトＩＯ要求であり、コントローラは、分割サイズ閾値に従って第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割する。本発明の当該実施形態では、コントローラは、第１のオブジェクトＩＯ要求を５個のサブオブジェクトＩＯ要求に１Ｍの単位で分割する。当該５個のサブオブジェクトＩＯ要求およびそれらのサイズは、それぞれ、第１のサブオブジェクトＩＯ要求で１Ｍ、第２のサブオブジェクトＩＯ要求で１Ｍ、第３のサブオブジェクトＩＯ要求で１Ｍ、第４のサブオブジェクトＩＯ要求で１Ｍ、第５のサブオブジェクトＩＯ要求で０．５Ｍであってもよい。さらに、当該５個のサブオブジェクトＩＯ要求は同じ識別子を運搬する。
【０１２２】
コントローラが大きなオブジェクトＩＯ要求を処理する方式を、上述の第１のオブジェクトＩＯ要求が大きなオブジェクトＩＯ要求である（即ち、第１のオブジェクトＩＯ要求のサイズが分割サイズ閾値より大きい）例を用いることによって説明する。その手続きを図３に示す。大きなオブジェクトＩＯ要求を処理する方式は、図２−１または図２−２および対応する説明で説明したオブジェクトＩＯ要求を処理する方式と部分的に同一である。同一の部分の説明は再度詳細には説明しない。
【０１２３】
ステップ３０１：コントローラが第１のオブジェクトＩＯ要求を受信する。第１のオブジェクトＩＯ要求はコントローラで事前に設定された分割サイズ閾値より大きい。分割サイズ閾値とは、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズのことをいう。ステップ３０１は、第１のオブジェクトＩＯ要求がこの場合大きなオブジェクトＩＯ要求であることを除いてステップ２０１と同様である。
【０１２４】
ステップ３０３：コントローラが処理量閾値の現在値および処理すべき量の現在値を取得する。ステップ３０３はステップ２０３と同様である。
【０１２５】
ステップ３０５：コントローラが、処理すべき量の現在値が処理量閾値の現在値より小さいと判定し、コントローラが、処理すべき量を更新し、第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割する。各サブオブジェクトＩＯ要求のサイズは分割サイズ閾値より大きくなく、各サブオブジェクトＩＯ要求は同じ識別子を運搬する。この場合、処理すべき量を更新するためにコントローラにより使用される方法はステップ２０５で説明したのと同一である。
【０１２６】
処理すべき量を更新するステップと第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割するステップとの間の順序には要件はない。処理すべき量が、第１のオブジェクトＩＯ要求が分割される前に更新されてもよいか、または、第１のオブジェクトＩＯ要求を、処理すべき量が更新される前に分割してもよいか、または、この２つを同時に実施してもよい。
【０１２７】
ステップ２０５では、コントローラが第１のオブジェクトＩＯ要求を記憶装置クライアントに送信したとき、処理すべき量に１つの単位だけ加える、即ち、処理すべき量に１を加えることに留意すべきである。当該実施形態では、第１のオブジェクトＩＯ要求は複数のサブオブジェクトＩＯ要求に分割され、記憶装置クライアントに送信される。この場合、処理すべき量にまた１つの単位だけ加える、即ち、処理すべき量に１を加える。処理すべき量とは、コントローラにより受理された処理すべきオブジェクトＩＯ要求の量のことをいい、当該量は、受理されたオブジェクトＩＯ要求が分割されるサブオブジェクトＩＯ要求の量とは無関係である。
【０１２８】
記憶装置クライアントがＩＰディスク・クライアントであり、記憶装置がＩＰディスクであるとき、ＩＰディスク・クライアントは、同一のインタフェースを、同じ識別子を運搬するＩＯ要求に割り当てる。換言すれば、大きなＩＯ書込み要求を分割することにより得られた複数のオブジェクトＩＯ書込み要求はＩＰディスク・クライアントの１つのインタフェースにより処理される。当該インタフェースは、割り当てられたオブジェクトＩＯ要求の鍵値を計算し、対応するＩＰディスクに関する情報を当該鍵値に従って取得し、当該オブジェクトＩＯ書込み要求を処理のために当該対応するＩＰディスクに送信する。１つのＩＯ要求が複数のＩＯ要求に分割された後、分割により得られた各ＩＯ要求は異なる鍵値を有するので、分割により得られたＩＯ要求を処理のために異なるＩＰディスクに送信することが可能である。ＩＰディスク・クライアントは、並列処理を実施し、複数のＩＯ要求を同時に処理して、計算後に取得された鍵値を用いることによって当該ＩＯ要求を対応するＩＰディスクに送信してもよい。
【０１２９】
小さなオブジェクトＩＯ要求のメタデータとデータを別々に格納してもよい。即ち、異なる鍵値がメタデータとデータに対して使用される。メタデータとデータを一緒に格納してもよい。即ち、メタデータとデータが１つの鍵値を共有する。メタデータとデータが一緒に格納されるとき、メタデータとデータのサイズの合計は分割サイズ閾値を超えることはできない。メタデータとデータが別々に格納されるとき、メタデータの鍵値はコンテナ名およびオブジェクト名であり、データの鍵値は当該データに従ってランダムに生成された文字列である。異なる鍵値がメタデータとデータに対して使用されるので、メタデータとデータを、同一のＩＰディスクに格納してもよく、または、異なるＩＰディスクに格納してもよい。メタデータとデータが一緒に格納され、メタデータとデータが１つの鍵値を共有するとき、メタデータとデータは同一の位置に一緒に格納される。メタデータとデータが一緒に格納されるとき、１つのＩＯ動作のみを実施する必要がある。既存の技術的解決策を使用して、オブジェクトＩＯ要求を処理のために対応するＩＰディスクに送信するステップを実装してもよく、ここでは詳細には説明しない。
【０１３０】
ステップ３０７：コントローラが、分割によって得られた第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、休止時間を開始する。
【０１３１】
ステップ３０９：休止時間が終了した後、コントローラが、第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、分割により得られた複数のサブオブジェクトＩＯ要求が送信されるまで当該サイクルを繰り返す。
【０１３２】
本ステップにおける休止時間は上述の休止時間と本質的に同一であり、その調節方法も同一であり、ここでは再度説明しない。
【０１３３】
記憶装置クライアントと記憶装置は、受信されたサブオブジェクトＩＯ要求を、受信されたオブジェクトＩＯ要求を処理するための方式と同一の方式で処理し、既存の実装方式を使用してもよく、したがって、さらなる説明はここでは提供しない。当該サブオブジェクトＩＯ要求を処理した後、記憶装置が対応する応答メッセージで記憶装置クライアントに応答し、次いで、記憶装置クライアントが当該対応する応答メッセージでコントローラに応答する。当該応答メッセージは対応するオブジェクトＩＯ要求の処理結果を運搬する。これらのプロセスは上で詳細に説明されており、ここでは再度説明しない。
【０１３４】
ステップ３１１：コントローラが第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信する。当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬する。コントローラはさらに、分割により得られた他の複数のサブオブジェクトＩＯ要求の応答メッセージを受信する。
【０１３５】
ステップ３１３：コントローラが、事前に設定された条件が満たされたとき、（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求の受信された処理結果に従って処理量閾値を調節する。
【０１３６】
ステップ３１３の方法はステップ２０９で説明した方法と同一であり、ここでは再度説明しない。さらに、同様に、ステップ３１３とステップ３１１の間に厳密な順序はない。換言すれば、コントローラが、（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求の受信された処理結果に従って処理量閾値を調節することは、コントローラが第１のサブオブジェクトＩＯ要求または別のサブオブジェクトＩＯ要求に対する応答メッセージを受信するかどうかによって影響されない。
【０１３７】
大きなオブジェクトＩＯ要求を分割することは、コントローラに記録された送信量と処理成功量に影響を及ぼすことに留意すべきである。送信量とは、コントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量のことをいい、処理成功量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトＩＯ要求の間で処理に成功したオブジェクトＩＯ要求の量のことをいう。したがって、大きなオブジェクトＩＯ要求が分割されるケースでは、コントローラは、１つのオブジェクトＩＯ要求でなく、分割により得られた複数のサブオブジェクトＩＯ要求を記憶装置クライアントに送信する。換言すれば、送信量とは、それが分割されていないオブジェクトＩＯ要求または分割により得られたサブオブジェクトＩＯ要求であるかどうかに関らず、実際にコントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量のことをいう。同様に、処理成功量とは、分割されていないオブジェクトＩＯ要求および分割により得られたサブオブジェクトＩＯ要求を含む、コントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量のことをいう。
【０１３８】
したがって、第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信した後、コントローラは、送信量を更新、例えば、送信量に１を加える。コントローラが第１のサブオブジェクトＩＯ要求に対する応答メッセージを受信すると、第１のサブオブジェクトＩＯ要求に対する応答メッセージが処理成功を示す処理結果を運搬する場合、コントローラはさらに、処理成功量を更新する必要があり、例えば、処理成功量に１を加え、または、第１のサブオブジェクトＩＯ要求に対する応答メッセージが処理失敗を示す処理結果を運搬する場合、コントローラは処理成功量を更新しない。即ち、処理成功量は不変のままである。
【０１３９】
同様に、第２のサブオブジェクトＩＯ要求を記憶装置に送信した後、コントローラは、送信量に１を加える。コントローラが第２のサブオブジェクトＩＯ要求に対する記憶装置クライアントにより応答された応答メッセージを受信した後、第２のサブオブジェクトＩＯ要求に対する応答メッセージが処理成功を示す処理結果を運搬する場合、コントローラは、処理成功量に１を加える。任意選択で、第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信した後、かつ、第１のサブオブジェクトＩＯ要求に対する応答メッセージを受信した後、コントローラはまた、送信量を更新、例えば、送信量に１を加えてもよい。この場合、第１のサブオブジェクトＩＯ要求に対する応答メッセージ内の処理結果に従って、処理成功量を更新するかどうかをさらに判定する必要がある。具体的な方式は上述の方式と同一であり、ここでは再度説明しない。同様に、第２のサブオブジェクトＩＯ要求に対する応答メッセージを受信した後、コントローラは、送信量に１を加え、次いで、第２のサブオブジェクトＩＯ要求の応答メッセージに従って、処理成功量を更新するかどうかを判定する。
【０１４０】
大きなオブジェクトＩＯ要求が分割されるケースでは、処理量閾値と処理すべき量を調節する方式は、特に、送信量と処理成功量が異なってカウントされることを除いて上述の方式と同一であり、ここでは再度説明しない。
【０１４１】
大きなオブジェクトＩＯ要求を分割することにより得られた複数のサブオブジェクトＩＯ要求のうち何れか１つの処理結果が処理失敗を示す場合、当該大きなオブジェクトＩＯ要求の処理は不成功であることに留意すべきである。この場合、コントローラは、処理失敗を示す応答メッセージで当該大きなオブジェクトＩＯ要求の要求者に応答し、当該大きなオブジェクトＩＯ要求を分割することにより得られ記憶装置に書き込まれている他のサブオブジェクトＩＯ要求を削除するように記憶装置クライアントに指示する必要がある。処理失敗を示す任意のサブオブジェクトＩＯ要求の応答メッセージを受信すると、コントローラはさらに、処理が不成功であったサブオブジェクトＩＯ要求を記憶装置クライアントに再送してもよく、特定量の試行または特定の期間の後に受信された応答メッセージが最終結果である。
【０１４２】
さらに、クライアント内で分割された後、大きなオブジェクトＩＯ要求をまた、対応する処理のためにコントローラに送信してもよい。この場合、オブジェクトＩＯ要求の分割サイズ閾値はクライアントにおいて事前に設定され、クライアントは、分割サイズ閾値に従って当該大きなオブジェクトＩＯ要求を分割し、次いで、サブオブジェクトＩＯ要求をコントローラに１つずつ送信する。コントローラに対して、クライアントにより分割により得られたサブオブジェクトＩＯ要求または分割されていないオブジェクトＩＯ要求が受信されたかどうかに関らず、その処理方式は図２、図３、図４の処理方式、および対応する説明と同一であり、ここでは再度説明しない。
【０１４３】
上述のように、コントローラが受信された大きなオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割するケースでは、コントローラはまた、特定のルールおよびオブジェクトＩＯ要求またはサブオブジェクトＩＯ要求の処理結果に従って処理量閾値と処理すべき量を動的に調節し、オブジェクト・ベース記憶システムにより受理されたオブジェクトＩＯ要求の量を制御してもよい。これにより、コントローラにより受理されたオブジェクトＩＯ要求の量がオブジェクトベース記憶システムにおける記憶装置の処理能力を超過しないことが保証され、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システム全体の性能が保証される。
【０１４４】
本発明の別の実施形態では、オブジェクト・ベース記憶システム内のサービス・フロー制御のための別の方法を開示する。当該方法では、分割により得られたサブオブジェクトＩＯ要求に対して休止時間を開始して、オブジェクト・ベース記憶システム内の記憶装置クライアントと記憶装置に送信されるオブジェクトＩＯ要求の量を調節し、特定のルールおよび記憶装置と記憶装置クライアントにより応答されたオブジェクトＩＯ要求の処理結果に従って休止時間を動的に調節し、それにより、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの性能を保証する。図４は、当該方法の具体的な実装手続きを示す。当該方法は図１に示すオブジェクト・ベース記憶システムに適用可能であり、オブジェクト・ベース記憶システムの関連説明は再度説明しない。
【０１４５】
ステップ４０１：コントローラが第１のオブジェクトＩＯ要求を受信する。第１のオブジェクトＩＯ要求はコントローラ内で事前に設定された分割サイズ閾値より大きい。分割サイズ閾値とは、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズのことをいう。当該ステップはステップ２０１と同様であり、ここでは詳細には説明しない。
【０１４６】
ステップ４０３：コントローラが分割サイズ閾値を取得する。
【０１４７】
ステップ４０５：第１のオブジェクトＩＯ要求のサイズが分割サイズ閾値より大きいとき、コントローラは、第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割する。分割により得られた各サブオブジェクトＩＯ要求は分割サイズ閾値より大きくなく、同じ識別子を運搬する。一般に、コントローラは、分割サイズ閾値に従って第１のオブジェクトＩＯ要求を分割する。例えば、分割サイズ閾値は１メガバイト（Ｍ）であり、第１のオブジェクトＩＯ要求は３．７Ｍであり、コントローラは、分割サイズ閾値に従って第１のオブジェクトＩＯ要求を４つのサブオブジェクトＩＯ要求、即ち、第１のサブオブジェクトＩＯ要求で１Ｍ、第２のサブオブジェクトＩＯ要求で１Ｍ、第３のサブオブジェクトＩＯ要求で１Ｍ、第４のサブオブジェクトＩＯ要求で０．７Ｍに分割する。
【０１４８】
ステップ４０７：コントローラが、分割により得られた第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、休止時間を開始する。記憶装置クライアントが第１のサブオブジェクトＩＯ要求を処理する方式は記憶装置クライアントがオブジェクトＩＯ要求を処理するステップ２０３で説明した方式と同一であり、ここでは再度説明しない。
【０１４９】
コントローラは、タイマを用いることによって休止時間を記録してもよい。休止時間を開始することが当該タイマを開始することであってもよい。休止時間を、タイマを用いることにより記録してもよい。時間間隔をカウント方式で記録してもよく、または、時間間隔をカウントダウン方式で記録してもよい。
【０１５０】
ステップ４０９：休止時間が終了した後、コントローラが、分割により得られた第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、コントローラが分割により得られた全ての複数のサブオブジェクトＩＯ要求を記憶装置クライアントに送信するまで当該サイクルを繰り返す。記憶装置クライアントが第２のサブオブジェクトＩＯ要求および別のサブオブジェクトＩＯ要求を処理する方式は記憶装置クライアントが第１のサブオブジェクトＩＯ要求または別のオブジェクトＩＯ要求を処理する方式と同一であり、再度説明しない。
【０１５１】
ステップ４１１：コントローラが、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信する。当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬する。当該処理結果は、処理成功または処理失敗を示す最終結果であってもよい。
【０１５２】
ステップ４０９とステップ４１１の間の順序に厳密な限定はなく、当該２つは互いに影響しないことに留意すべきである。換言すれば、第１のサブオブジェクトＩＯ要求に対して、コントローラが第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信するステップは常に、コントローラがを第１のサブオブジェクトＩＯ要求に対する応答メッセージを記憶装置クライアントから受信するステップの前である。しかし、コントローラが第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信するステップとコントローラが第１のサブオブジェクトＩＯ要求に対する応答メッセージを記憶装置クライアントから受信するステップの間の順序には要件はなく、当該２つのステップを交互に実装してもよく、これらは相互に独立である。例えば、コントローラは、第１のサブオブジェクトＩＯ要求の送信に続く休止時間が終了した後に、第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信する必要がある。しかし、第１のサブオブジェクトＩＯ要求に対する応答メッセージを、第２のサブオブジェクトＩＯ要求が送信される前または第２のサブオブジェクトＩＯ要求が送信された後にコントローラにより受信してもよい。
【０１５３】
ステップ４１３：事前に設定された条件が満たされたとき、コントローラが、（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求の受信された処理結果に従って休止時間を調節する。
【０１５４】
ステップ４１３およびステップ４１１の間に厳密な順序関係はないことに留意すべきである。事前に設定された条件が満たされたとき、コントローラは、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信しているかもしれず、または、コントローラは、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信していないかもしれない。コントローラが第１のサブオブジェクトＩＯ要求および第２のサブオブジェクトＩＯ要求に対する記憶装置クライアントにより応答された応答メッセージを受信しているが、第３のサブオブジェクトＩＯ要求および第４のサブオブジェクトＩＯ要求の応答メッセージを受信していない可能性もある。この場合、コントローラは、別のオブジェクトＩＯ要求または別のサブオブジェクトＩＯ要求の応答された応答メッセージ、および当該応答メッセージ内の処理結果に従って休止時間を調節する。
【０１５５】
このように、コントローラが、オブジェクトＩＯ要求を処理のために記憶装置に送信するための時間間隔を制御することによって、処理のために当該記憶装置に送信されたオブジェクトＩＯ要求の量を制御してもよく、これにより、処理のために当該記憶装置に送信されたオブジェクトＩＯ要求の量が当該記憶装置の処理能力を超過せず、当該記憶装置上のオブジェクトＩＯ要求の輻輳が防止され、オブジェクト・ベース記憶システム内のオブジェクトＩＯ要求を処理する効率が高まり、オブジェクトＩＯ要求の遅延が削減されることが保証される。
【０１５６】
当該方法はステップ４１５をさらに含んでもよい。第１のオブジェクトＩＯ要求を分割することにより得られた全てのサブオブジェクトＩＯ要求の応答メッセージを受信したとき、コントローラは、第１のオブジェクトＩＯ要求を分割することにより得られた全てのサブオブジェクトＩＯ要求の応答メッセージで運搬される処理結果に従って、第１のオブジェクトＩＯ要求に対する応答メッセージで第１のオブジェクトＩＯ要求を送信した要求者に応答する。第１のオブジェクトＩＯ要求に対する応答メッセージは第１のオブジェクトＩＯ要求の処理結果を運搬する。第１のオブジェクトＩＯ要求を分割することにより得られた全てのサブオブジェクトＩＯ要求の応答メッセージが処理成功を示す処理結果を運搬するとき、コントローラは、処理成功を示す結果を運搬する第１のオブジェクトＩＯ要求に対する応答メッセージで第１のオブジェクトＩＯ要求の要求者に応答し、そうでなければ、コントローラは、処理失敗を示す結果を運搬する第１のオブジェクトＩＯ要求に対する応答メッセージで第１のオブジェクトＩＯ要求の要求者に応答する。
【０１５７】
第１のオブジェクトＩＯ要求に対する応答メッセージで第１のオブジェクトＩＯ要求の要求者に応答するとき、コントローラは処理すべき量を更新する。上述の方法と同様に、コントローラは処理すべき量から１を減ずる。具体的な処理方法は再度説明しない。
【０１５８】
コントローラがオブジェクトＩＯ要求およびサブオブジェクトＩＯ要求の受信した処理結果に従って休止時間を動的に調節することを実装するために、コントローラは、当該オブジェクトＩＯ要求および当該サブオブジェクトＩＯ要求の処理結果の統計を収集し、当該処理結果を分析する必要がある。本発明の当該実施形態では、コントローラは、当該オブジェクトＩＯ要求および当該サブオブジェクトＩＯ要求の処理成功率に従って、動的に休止時間を調節する。コントローラはまた、当該オブジェクトＩＯ要求および当該サブオブジェクトＩＯ要求の処理失敗率に従って休止時間を動的に調節してもよく、または、コントローラはまた、オブジェクトＩＯ要求の処理成功率または処理失敗率、および別の因子に従って休止時間を動的に調節してもよいことは理解されうる。
【０１５９】
動的な調節を、特定の時間ルールに従って実施してもよく、または、休止時間が特定の値に達した後に実施してもよい。本発明の当該実施形態を、コントローラが休止時間を定期的に調節する例を用いることによって説明する。
【０１６０】
オブジェクトＩＯ要求およびサブオブジェクトＩＯ要求の受信した処理結果に従ってコントローラが休止時間を定期的に調節することを実装するために、送信量と処理成功量をコントローラに記録する必要がある。送信量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトＩＯ要求およびサブオブジェクトＩＯ要求の量のことをいい、処理成功量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトＩＯ要求およびサブオブジェクトＩＯ要求の間で処理に成功したオブジェクトＩＯ要求およびサブオブジェクトＩＯ要求の量のことをいう。送信量を、コントローラ内のカウンタを設定することにより記録してもよく、処理成功量をまたコントローラ内のカウンタを設定することにより記録してもよい。
【０１６１】
送信量を２つの方式で更新してもよい。１方式では、コントローラが１つのオブジェクトＩＯ要求を記憶装置クライアントに送信した後に、送信量が更新される。例えば、現在記録されている送信量に１を加える。別の方式では、コントローラがオブジェクトＩＯ要求を記憶装置クライアントに送信し記憶装置クライアントにより応答されたオブジェクトＩＯ要求に対する応答メッセージを受信した後に、送信量が更新される。例えば、現在記録されている送信量に１を加える。第２の方式では、応答された応答メッセージが処理成功を示す応答メッセージまたは処理失敗を示す応答メッセージであるかどうかに関らず、１つの応答メッセージが受信された場合に現在記録されている送信量に１を加える必要がある。コントローラがサブオブジェクトＩＯ要求を記憶装置クライアントに送信するときの更新方式は同一である。即ち、１つのサブオブジェクトＩＯ要求を記憶装置クライアントに送信した後、コントローラは現在記録されている送信量に１を加えるか、または、１つのサブオブジェクトＩＯ要求を記憶装置クライアントに送信した後および当該サブオブジェクトＩＯ要求に対する記憶装置クライアントにより応答される応答メッセージを受信した後、コントローラは、現在記録されている送信量に１を加える。処理成功量を更新する方式は、１つのオブジェクトＩＯ要求またはサブオブジェクトＩＯ要求に対する記憶装置クライアントにより応答される応答メッセージを受信したとき、当該応答メッセージで運搬される処理結果が処理成功を示す場合、コントローラは処理成功量を更新、例えば、現在記録されている処理成功量に１を加えるというものである。事前に設定された期間が終了すると、コントローラは、送信量の現在値および処理成功量の現在値を取得し、処理成功率を計算し、計算後に取得された処理成功率を第１の調節係数として用いることによって休止時間を調節する。処理成功率は、処理成功量の送信量に対する比率であってもよい。
【０１６２】
コンスタントな観察と実験を通じて、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの能力は、送信量および成功率とともに変化することが分かる。したがって、本発明の当該実施形態では、別の調節係数に従って、成功率に従って調節を実施することにより得られた休止時間を調節することを提供する。当該調節係数は処理成功率に反比例する。係数の間の関係をより明確に説明するために、処理成功率を第１の調節係数と称し、休止時間を調節するための調節係数を第３の調節係数と称する。第３の調節係数は定数であり、第３の調節係数の値は第１の調節係数の値と反比例する。
【０１６３】
さらに、オブジェクト・ベース記憶システムの休止時間を制限なしに増大または減少させることはできない。したがって、オブジェクト・ベース記憶システムの休止時間を制限する必要がある。休止時間の上限および下限を、コントローラ内で事前に設定してもよい。第１の調節係数または第１の調節係数および第３の調節係数に従って調節を実施することによってコントローラにより得られた休止時間は、当該休止時間の事前に設定された上限と事前に設定された下限との間にある必要がある。第１の調節係数または第１の調節係数および第３の調節係数に従ってコントローラによって計算することによって得られた休止時間が当該休止時間の事前に設定された上限と事前に設定された下限との間にない場合、計算後に取得された休止時間を休止時間の上限と下限に従って修正する必要がある。例えば、第１の調節係数または第１の調節係数および第３の調節係数に従ってコントローラによって計算することによって得られた休止時間が休止時間の設定された上限より大きい場合、当該取得された休止時間は、休止時間の上限に等しくなるように調節され、または、第１の調節係数または第１の調節係数および第３の調節係数に従ってコントローラによって計算することによって得られた休止時間が休止時間の設定された下限より小さい場合、当該取得された休止時間は休止時間の下限に等しくなるように調節される。
【０１６４】
以下では、具体的な例を用いることによって、事前に設定された期間に従って休止時間をどのように調節するかを説明する。
【０１６５】
当該方法の実施形態では、期間は１分に事前に設定され、コントローラに格納される。当該期間を必要に応じて別の値に設定してもよいことは当業者には理解されうる。例えば、当該期間は３０秒に設定される。当該期間を、コントローラ内のタイマを設定することにより記録してもよい。事前に設定された期間が終了したとき、コントローラは、現在の送信量と現在の処理成功量を取得し休止時間を調節するようにトリガされる。換言すれば、本発明の当該実施形態では、コントローラは休止時間を毎分調節する。
【０１６６】
以下では、例を用いることによって、事前に設定された期間に従って休止時間を調節するための方法を説明する。
【０１６７】
ｔ＝（ｔ１＋Ｃｏｎｓｔａｎｔ）／ｒ１×μｔである。ｔは調節後に取得された新たな休止時間であり、ｔ１は休止時間の現在値であり、ｒ１は第１の調節係数の現在値であり、μｔは第１の調節係数の値に対する第３の調節係数の値である。μｔはｒに反比例する。即ち、大きな第１の調節係数ｒは小さな第３の調節係数μｔを示し、小さな第１の調節係数ｒは大きな第３の調節係数μｔを示す。ｒ１は処理成功量の現在値の送信量の現在値に対する割合、即ち、ｒ１＝（ｐ１／ｑ１）×１００％である。ｐ１は処理成功量の現在値であり、ｑ１は送信量の現在値である。
【０１６８】
当該実施形態では、休止時間は区分的関数を用いることによって調節される。計算式は以下の通りである。
ｔ＝ｔＭａｘＤｅｌａｙ（ｒ１＜０．２）；
ｔ＝（ｔ１＋１０）／ｒ１×１．６（０．２≦ｒ１＜０．５）；
ｔ＝（ｔ１＋１０）／ｒ１×１．４（０．５≦ｒ１＜０．８）；
ｔ＝（ｔ１＋１０）／ｒ１×１．０（０．８≦ｒ１＜０．９５）；
ｔ＝（ｔ１＋０）／ｒ１×０．９（ｔ１≧ｔＴｈｒｅｓｈｏｌｄ、かつ、ｒ１≧０．９５）；
ｔ＝ｔＭｉｎＤｅｌａｙ（ｔ１＜ｔＴｈｒｅｓｈｏｌｄ、かつ、ｒ１≧０．９５）
【０１６９】
ｔＭｉｎＤｅｌａｙは休止時間の下限であり、ｔＭａｘＤｅｌａｙは休止時間の上限であり、休止時間の上限と下限は事前に設定される。当該実施形態では、休止時間の下限は０に設定される。
【０１７０】
以下では、具体的な例を用いることによって、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するための方法の手続きを例示的に説明する。図５は、当該方法のプロセスが適用可能であるオブジェクト・ベース記憶システムを示し、図６は当該方法の手続きを示す。
【０１７１】
図５に示すオブジェクト・ベース記憶システムはコントローラ５０１、ＩＰディスク・クライアント５０３、およびＩＰディスク・クラスタ５０４を備える。換言すれば、図５に示すオブジェクト・ベース記憶システム内の記憶装置はＩＰディスクであり、対応する記憶装置クライアントはＩＰディスク・クライアントである。コントローラ５０１はＩＰディスク・クライアント５０３に接続され、コントローラ５０１とＩＰディスク・クライアント５０３は１つのサーバに展開される。当該サーバがＨＴＴＰサーバであってもよい。ＩＰディスク・クライアント５０３は、ＩＰディスク・クラスタ５０４内のＩＰディスクに接続される。コントローラ５０１はクライアント５０２にさらに接続される。クライアント５０２はオブジェクトＩＯ要求をコントローラ５０１に送信する。
【０１７２】
コントローラ５０１は処理量閾値Ｍおよび処理すべき量Ｎを格納する。処理量閾値Ｍとは、オブジェクト・ベース記憶システムにより現在処理できるオブジェクトＩＯ要求の最大量のことをいい、処理すべき量Ｎはオブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量である。本発明の当該実施形態では、Ｍの現在値は２０００であり、Ｎの現在値は１５００である。即ち、Ｍ１＝２０００、およびＮ１＝１５００である。
【０１７３】
コントローラ５０１は、休止時間ｔをさらに格納する。休止時間ｔは、コントローラ５０１により２つのオブジェクトＩＯ要求をＩＰディスク・クライアントに送信する間の時間間隔である。本発明の当該実施形態では、ｔの現在値は１００ミリ秒である。即ち、ｔ１＝１００ミリ秒である。
【０１７４】
コントローラ５０１は期間Ｔをさらに格納する。コントローラはＭおよびｔの値を当該期間に従って更新する。本発明の当該実施形態では、Ｔは３０秒である。
【０１７５】
コントローラ５０１は、送信量Ｐおよび処理成功量Ｑをさらに格納する。送信量Ｐとは、コントローラ５０１によりＩＰディスク・クライアントに送信されたオブジェクトＩＯ要求の量のことをいい、処理成功量Ｑとは、コントローラ５０１によりＩＰディスク・クライアントに送信されたオブジェクトＩＯ要求の間で処理に成功したオブジェクトＩＯ要求の量のことをいう。本発明の当該実施形態では、Ｐの現在値は２８００であり、Ｑの現在値は２４００である。即ち、Ｐ１＝２８００、およびＱ１＝２４００である。
【０１７６】
コントローラ５０１は、オブジェクトＩＯ要求の分割サイズ閾値をさらに格納する。本発明の当該実施形態では、分割サイズ閾値は１Ｍである。
【０１７７】
コントローラは、処理量閾値Ｍおよび休止時間ｔの調節式をさらに格納する。処理量閾値Ｍの調節式は以下の通りである。
Ｍ＝ＭＭｉｎ（ｒ１＜０．２）；
Ｍ＝Ｍ１×ｒ１×０．６（０．２≦ｒ１＜０．６）；
Ｍ＝Ｍ１×ｒ１×０．８（０．６≦ｒ１＜０．８）；
Ｍ＝Ｍ１×ｒ１×１．０（０．８≦ｒ１＜０．９５）；
Ｍ＝Ｍ１×ｒ１×１．１（Ｍ１＜ＭＭａｘ、かつ、ｒ１≧０．９５）；
Ｍ＝ＭＭａｘ（Ｍ１＝ＭＭａｘ、かつ、ｒ１≧０．９５）
ＭＭｉｎ＝２００、ＭＭａｘ＝３０００、かつ、ｒ１＝（Ｑ１／Ｐ１）×１００％
【０１７８】
休止時間ｔの調節式は以下の通りである。
ｔ＝ｔＭａｘＤｅｌａｙ（ｒ１＜０．２）；
ｔ＝（ｔ１＋１５）／ｒ１×１．６（０．２≦ｒ１＜０．６）；
ｔ＝（ｔ１＋１５）／ｒ１×１．４（０．６≦ｒ１＜０．８）；
ｔ＝（ｔ１＋１５）／ｒ１×１．０（０．８≦ｒ１＜０．９５）；
ｔ＝（ｔ１＋０）／ｒ１×０．９（ｔ１≧ｔＴｈｒｅｓｈｏｌｄ、かつ、ｒ１≧０．９５）；
ｔ＝ｔＭｉｎＤｅｌａｙ（ｔ１＜ｔＴｈｒｅｓｈｏｌｄ、かつ、ｒ１≧０．９５）
ｔＭｉｎＤｅｌａｙ＝０、ｔＭａｘＤｅｌａｙ＝２００、かつ、ｒ１＝（Ｑ１／Ｐ１）×１００％
【０１７９】
オブジェクト・ベース記憶システム内のサービス・フロー制御を実装するための方法の手続きは以下の通りである。
【０１８０】
ステップ６０１：コントローラ５０１が、クライアント５０２により送信された第１のオブジェクトＩＯ要求を受信する。第１のオブジェクトＩＯ要求のサイズは３．５Ｍである。
【０１８１】
ステップ６０２：コントローラ５０１が、ＭおよびＮの現在値（Ｍ１＝２０００、およびＮ１＝１５００）を取得し、Ｍ１およびＮ１の値を比較する。
【０１８２】
ステップ６０３：Ｎ１＜Ｍ１である場合、コントローラ５０１が、処理すべき量Ｎを更新し、分割サイズ閾値（１Ｍ）に従って第１のオブジェクトＩＯ要求を分割する。処理すべき量Ｎの現在値Ｎ１は１５０１に更新され、第１のオブジェクトＩＯ要求は４つのサブオブジェクトＩＯ要求に分割される。当該４つのサブオブジェクトＩＯ要求はそれぞれ、第１のサブオブジェクトＩＯ要求（１Ｍ）、第２のサブオブジェクトＩＯ要求（１Ｍ）、第３のサブオブジェクトＩＯ要求（１Ｍ）、および第４のサブオブジェクトＩＯ要求（０．５Ｍ）である。当該４つのサブオブジェクトＩＯ要求は同じ識別子を運搬する。
【０１８３】
比較結果がＮ１＞Ｍ１である場合、コントローラ５０１は、第１のオブジェクトＩＯ要求を送信したクライアント５０２にシステム・ビジー応答メッセージで応答する。この場合、コントローラ５０１は、処理すべき量Ｎを更新せず、第１のオブジェクトＩＯ要求を破棄する。
【０１８４】
ステップ６０４：コントローラ５０１は、第１のサブオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信し、休止時間を開始する。第１のサブオブジェクトＩＯ要求を受信した後、ＩＰディスク・クライアント５０３は、事前に設定された鍵−値アルゴリズムに従って、第１のサブオブジェクトＩＯ要求を処理のためにＩＰディスク５０４−３に送信する。第１のサブオブジェクトＩＯ要求を処理した後、ＩＰディスク５０４−３は第１のサブオブジェクトＩＯ要求に対する応答メッセージでＩＰディスク・クライアント５０３に応答する。当該応答メッセージは、第１のサブオブジェクトＩＯ要求の処理に成功したことを示す処理結果を運搬する。ＩＰディスク・クライアント５０３は受信された応答メッセージでコントローラ５０１に応答する。
【０１８５】
ステップ６０５：休止時間が終了した後、即ち、コントローラ５０１が第１のサブオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信した後１００ミリ秒で、コントローラ５０１は、第２のサブオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信し、休止時間を開始する。同様に、第２のサブオブジェクトＩＯ要求を受信した後、ＩＰディスク・クライアント５０３は、事前に設定された鍵−値アルゴリズムに従って、第２のサブオブジェクトＩＯ要求を処理のためにＩＰディスク５０４−２に送信する。ＩＰディスク・クライアント５０３は、サブオブジェクトＩＯ要求内のメタデータのような情報に従っておよび当該鍵−値アルゴリズムに従って具体的なＩＰディスクを決定する。第１のオブジェクトＩＯ要求を分割することにより得られた４つのサブオブジェクトＩＯ要求を、処理のために同一のＩＰディスクに送信してもよく、または、処理のために異なるＩＰディスクに送信してもよい。
【０１８６】
ステップ６０６：休止時間が終了した後、コントローラ５０１は、第３のサブオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信し、休止時間を開始する。ＩＰディスク・クライアント５０３を用いて第３のサブオブジェクトＩＯ要求を処理する方法は上述したものと同じであり、ここでは再度説明しない。
【０１８７】
ステップ６０７：休止時間が終了した後、コントローラ５０１は、第４のサブオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信する。ＩＰディスク・クライアント５０３を使用して第４のサブオブジェクトＩＯ要求を処理する方法は上述したものと同じであり、ここでは再度説明しない。
【０１８８】
ステップ６０８：コントローラ５０１が、第１のサブオブジェクトＩＯ要求に対するＩＰディスク・クライアント５０３により応答された応答メッセージを受信し、コントローラ５０１が送信量Ｐを更新する。送信量の現在値Ｐ１は２８０１に更新され、当該応答メッセージが第１のサブオブジェクトＩＯ要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ５０１は処理成功量Ｑを更新する。処理成功量Ｑの現在値Ｑ１は２４０１に更新される。
【０１８９】
ステップ６０８およびステップ６０５乃至ステップ６０７の間には厳密な時間順序はなく、ステップ６０８をステップ６０４の後に実施する必要がある。
【０１９０】
ステップ６０９：コントローラ５０１が、第２のサブオブジェクトＩＯ要求に対するＩＰディスク・クライアント５０３により応答された応答メッセージを受信し、コントローラ５０１が送信量Ｐを更新する。送信量の現在値Ｐ１は２８０２に更新される。当該応答メッセージが第２のサブオブジェクトＩＯ要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ５０１は処理成功量Ｑを更新する。処理成功量Ｑの現在値Ｑ１は２４０２に更新される。
【０１９１】
ステップ６０９およびステップ６０６乃至ステップ６０８の間には厳密な時間順序はなく、ステップ６０９をステップ６０５の後に実施するだけでよい。
【０１９２】
ステップ６１０：事前に設定された期間が終了したとき、コントローラ５０１は、処理量閾値Ｍおよび休止時間ｔの値を（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求の受信された処理結果に従って調節する。
【０１９３】
コントローラ５０１は、送信量Ｐの現在値および処理成功量Ｑの現在値を取得し、現在の成功率を計算する。したがって、ｒ１＝（Ｑ１／Ｐ１）×１００％＝（２４０２／２８０２）×１００％＝０．８６；
Ｍ＝Ｍ１×ｒ１×１．０＝２０００×０．８６×１．０＝１７２０；および
ｔ＝（ｔ１＋１５）／ｒ１×１．０＝（１００＋１５）／０．８６×１．０＝１３４
である。
【０１９４】
処理量閾値Ｍおよび休止時間ｔが調節された後、コントローラ５０１により再度取得された処理量閾値Ｍおよび休止時間ｔの現在値は当該調節後の値である。したがって、Ｍ１＝１７２０、およびｔ１＝１３４ミリ秒である。
【０１９５】
事前に設定された期間が終了したとき、コントローラ５０１が、送信量Ｐの現在値および処理成功量Ｑの現在値を（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求の取得された処理結果に従ってを取得し、対応する計算および調節を実施するのであれば、ステップ６１０および他のステップの間には厳密な時間順序はない。
【０１９６】
ステップ６１１：コントローラ５０１が、第３のサブオブジェクトＩＯ要求に対するＩＰディスク・クライアント５０３により応答された応答メッセージを受信し、コントローラ５０１が送信量Ｐを更新する。送信量の現在値Ｐ１は２８０３に更新される。当該応答メッセージが第３のサブオブジェクトＩＯ要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ５０１は処理成功量Ｑを更新する。処理成功量Ｑの現在値Ｑ１は２４０３に更新される。
【０１９７】
同様に、ステップ６１１をステップ６０６の後に実施するだけでよく、ステップ６１１およびステップ６０７乃至ステップ６１０の間には厳密な時間順序はない。
【０１９８】
ステップ６１２：コントローラ５０１が、第４のサブオブジェクトＩＯ要求に対するＩＰディスク・クライアント５０３により応答された応答メッセージを受信し、コントローラ５０１が送信量Ｐを更新する。送信量の現在値Ｐ１は２８０４に更新される。当該応答メッセージが第４のサブオブジェクトＩＯ要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ５０１は処理成功量Ｑを更新する。処理成功量Ｑの現在値Ｑ１は２４０４に更新される。
【０１９９】
同様に、ステップ６１２をステップ６０７の後に実施するだけでよく、ステップ６１２およびステップ６０８乃至ステップ６１１の間には厳密な時間順序はない。
【０２００】
ステップ６１３：コントローラ５０１が、第１のオブジェクトＩＯ要求を分割することにより得られた４つのサブオブジェクトＩＯ要求全ての応答メッセージが受信され、全ての応答メッセージが処理成功を示す処理結果を運搬すると判定する。コントローラ５０１は第１のオブジェクトＩＯ要求に対する応答メッセージでクライアント５０２に応答する。第１のオブジェクトＩＯ要求に対する応答メッセージは処理成功を示す情報を運搬する。コントローラ５０１は処理すべき量Ｎを更新する。処理すべき量Ｎの現在値Ｎ１は１５００に更新される。
【０２０１】
コントローラ５０１により受信された第１のオブジェクトＩＯ要求のサブオブジェクトＩＯ要求に対する応答メッセージのうち１つのサブオブジェクトＩＯ要求に対する応答メッセージが処理失敗を示す情報を運搬する場合、コントローラ５０１は処理失敗を示す応答メッセージでクライアント５０２に応答する。この場合、コントローラ５０１はまた、処理すべき量Ｎを更新する必要がある。処理すべき量Ｎの現在値Ｎ１は１５００に更新される。
【０２０２】
換言すれば、コントローラ５０１がオブジェクトＩＯ要求に対する応答メッセージでクライアント５０２に応答するならば、当該オブジェクトＩＯ要求の処理に成功したかまたは不成功であったかどうかに関らず、処理すべき量Ｎを更新する必要がある。処理すべき量Ｎの現在値Ｎ１から１が引かれる。確かに、コントローラ５０１が処理失敗を示す応答メッセージでクライアント５０２に応答する前に、コントローラはさらに、当該オブジェクトＩＯ要求を処理のためにＩＰディスク・クライアント５０３に特定の時間量だけ送信してもよい。
【０２０３】
第１のオブジェクトＩＯ要求を分割することにより得られた任意のサブオブジェクトＩＯ要求に対する応答された応答メッセージで運搬される最終結果が処理失敗を示す情報であるとき、処理失敗を示す応答メッセージでクライアント５０２に応答することに加えて、コントローラはさらに、第１のオブジェクトＩＯ要求を分割することにより得られた複数のサブオブジェクトＩＯ要求に関する情報を削除し、後続の処理を実施しないようにＩＰディスク・クライアント５０３およびＩＰディスク・クラスタ５０４に指示する必要がある。具体的な処理方式は先行技術の方式と同一であり、ここでは再度詳細には説明しない。
【０２０４】
ステップ６１４：コントローラ５０１が、クライアント５０２により送信された第２のオブジェクトＩＯ要求を受信する。第２のオブジェクトＩＯ要求のサイズは０．８Ｍである。
【０２０５】
ステップ６１５：コントローラ５０１がＭおよびＮの現在値（Ｍ１＝１７２０、およびＮ１＝１５００）を取得し、Ｍ１およびＮ１の値を比較する。
【０２０６】
ステップ６１６：Ｎ１＜Ｍ１である場合、コントローラ５０１が、処理すべき量Ｎを更新し、第２のオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信する。処理すべき量Ｎの現在値Ｎ１は１５０１に更新される。第２のオブジェクトＩＯ要求が分割サイズ閾値より小さいので、この場合、コントローラ５０１は第２のオブジェクトＩＯ要求を分割せず、第２のオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信する。
【０２０７】
ステップ６１７：コントローラ５０１が、第２のオブジェクトＩＯ要求に対するＩＰディスク・クライアント５０３により応答された応答メッセージを受信する。コントローラ５０１が送信量Ｐを更新する。送信量の現在値Ｐ１は２８０５に更新される。当該応答メッセージが、第２のオブジェクトＩＯ要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ５０１は処理成功量Ｑを更新する。処理成功量Ｑの現在値Ｑ１は２４０５に更新される。
【０２０８】
ステップ６１８：コントローラ５０１が、クライアント５０２により送信された第３のオブジェクトＩＯ要求を受信する。第３のオブジェクトＩＯ要求のサイズは０．７Ｍである。
【０２０９】
ステップ６１８とステップ６１７の間に厳密な順序はない。
【０２１０】
ステップ６１９：コントローラ５０１が、ＭおよびＮの現在値（Ｍ１＝１７２０、およびＮ１＝１５０１）を取得し、Ｍ１およびＮ１の値を比較する。
【０２１１】
ステップ６２０：Ｎ１＜Ｍ１である場合、コントローラ５０１が、処理すべき量Ｎを更新し、第３のオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信する。処理すべき量Ｎの現在値Ｎ１は１５０２に更新される。第３のオブジェクトＩＯ要求が分割サイズ閾値より小さいので、この場合、コントローラ５０１は第３のオブジェクトＩＯ要求を分割せず、第３のオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信する。
【０２１２】
ステップ６２１：コントローラ５０１が、第３のオブジェクトＩＯ要求に対するＩＰディスク・クライアント５０３により応答された応答メッセージを受信する。コントローラ５０１が送信量Ｐを更新する。送信量の現在値Ｐ１は２８０６に更新される。当該応答メッセージが、第３のオブジェクトＩＯ要求の処理が不成功であったことを示す処理結果を運搬する場合、コントローラ５０１は処理成功量Ｑを更新しない。処理成功量Ｑの現在値Ｑ１は不変のままである。即ち、Ｑ１＝２４０５である。
【０２１３】
類推により、次の期間が終了すると、コントローラ５０１は、送信量Ｐの現在値と処理成功量Ｑの現在値を取得し、現在の成功率を計算し、次いで、処理量閾値Ｍと休止時間ｔを現在の成功率に従って調節する。
【０２１４】
上述の幾つかのステップの間の時間順序には厳密な要件はないことに留意すべきである。本発明の当該実施形態における方法の手続きは例示的に説明されたにすぎず、本発明を限定しようとするものではない。例えば、コントローラ５０１が第３のサブオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信する前に、コントローラ５０１は第１のサブオブジェクトＩＯ要求に対する応答メッセージを受信している。別の例として、コントローラ５０１が第４のサブオブジェクトＩＯ要求をＩＰディスク・クライアント５０３に送信する前に、事前に設定された期間が終了する。この場合、コントローラ５０１は、パラメータの現在値に従ってＭとｔを調節する。コントローラ５０１が第２のオブジェクトＩＯ要求と第３のオブジェクトＩＯ要求を受信した後に当該期間が終了し、次いで、コントローラ５０１がパラメータの現在値に従ってＭとｔを調節することも可能である。
【０２１５】
本発明の当該実施形態により提供する方法を用いることによって、コントローラは、オブジェクトＩＯ要求の処理結果に従って処理量閾値と休止時間を定期的に調節して、処理のために記憶装置クライアントおよび記憶装置に送信されるオブジェクトＩＯ要求の量、および時間間隔を調節する。これにより、処理のために記憶装置に送信されたオブジェクトＩＯ要求の量は当該記憶装置の処理能力を超過せず、当該記憶装置で生ずる輻輳が回避され、それによりオブジェクト・ベース記憶システムの処理性能が高まり、遅延が削減されることを保証することができる。
【０２１６】
本発明の１実施形態はさらに、以上の方法を実装するためのコントローラを提供する。図７はコントローラの具体的な構造を示す。
【０２１７】
図７に示すように、コントローラは格納モジュール７０１、処理モジュール７０２、受信モジュール７０３、および送信モジュール７０４を備える。
【０２１８】
受信モジュール７０３は、クライアントを用いることによってユーザにより送信されたオブジェクトＩＯ要求を受信し、当該受信されたオブジェクトＩＯ要求に対する応答メッセージでクライアントに応答するように構成される。当該応答メッセージは、当該オブジェクトＩＯ要求の処理に成功したかまたは不成功であったことを示す処理結果を運搬する。受信モジュール７０３はさらに、処理モジュール７０２のコマンドを受信した後、システム・ビジー応答メッセージまたは拒否応答メッセージでクライアントに応答するように構成される。
【０２１９】
送信モジュール７０４は、オブジェクトＩＯ要求を記憶装置クライアントに送信し、記憶装置クライアントにより応答されるオブジェクトＩＯ要求に対する応答メッセージを受信するように構成される。当該応答メッセージは、処理成功を示す処理結果または処理失敗を示す処理結果を含む、当該オブジェクトＩＯ要求の処理結果を運搬する。
【０２２０】
格納モジュール７０１は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の現在の最大量である、処理量閾値と、オブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の現在の量である、処理すべき量と、コントローラにより（サブオブジェクトＩＯ要求を含む）２つのオブジェクトＩＯ要求を記憶装置クライアントに送信するステップの間の現在の時間間隔である、休止時間と、コントローラが処理量閾値と休止時間を更新するための期間である、期間と、コントローラにより記憶装置クライアントに送信されている（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求の量である、送信量と、その処理結果が処理成功を示す、コントローラにより記憶装置クライアントに送信された（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求のうち（サブオブジェクトＩＯ要求を含む）オブジェクトＩＯ要求の量である、処理成功量と、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズである、分割サイズ閾値と、事前に設定された条件が満たされたとき処理量閾値を調節するために使用される、処理量閾値の調節式と、事前に設定された条件が満たされたとき休止時間を調節するために使用される、休止時間の調節式とを含む、コントローラにより要求される情報を格納するように構成される。
【０２２１】
以上の情報は、サービス要件に従って選択されてもよく、必ずしも全体が選択されるわけではない。例えば、大きなオブジェクトＩＯ要求（そのサイズが分割サイズ閾値より大きいオブジェクトＩＯ要求）をコントローラに送信する前に、クライアントが当該オブジェクトＩＯ要求を分割するケースでは、分割サイズ閾値はクライアントに格納され、コントローラの格納モジュールは分割サイズ閾値に関する情報を格納する必要はない。さらに、オブジェクトＩＯ要求の具体的な量が記憶装置クライアントに送信された後に処理量閾値または休止時間が更新された場合、当該格納モジュールは当該期間に関する情報を格納する必要はない。確かに、ユーザはまた、必要に応じて他の情報を格納モジュール７０１に格納してもよく、ここでは例を用いることによって再度説明しない。
【０２２２】
処理モジュール７０２は、判定、計算、および比較のような関連処理を実行するように構成される。例えば、処理モジュール７０２は以下の動作を実装するように構成される。
【０２２３】
処理モジュール７０２がオブジェクトＩＯ要求を受信モジュール７０３から取得する。
【０２２４】
処理モジュール７０２が必要なデータ情報を格納モジュール７０１から取得する。
【０２２５】
処理モジュール７０２は、当該格納モジュールから取得された処理量閾値の現在値および処理すべき量の現在値を比較し、それらの間のサイズ関係を決定する。処理すべき量の現在値が処理量閾値の現在値より小さいとき、処理モジュール７０２は、処理すべき量の現在値を更新し、対応する処理をオブジェクトＩＯ要求に対して実施し、処理すべき量の現在値が処理量閾値の現在値以上であるとき、処理モジュール７０２は、受信モジュール７０３を用いることによって、拒否応答メッセージまたはシステム・ビジー応答メッセージでクライアントに応答する。
【０２２６】
オブジェクトＩＯ要求のサイズが取得された分割サイズ閾値より大きいとき、処理モジュール７０２は、分割サイズ閾値に従って当該オブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割する。分割により得られた複数のサブオブジェクトＩＯ要求の各々は分割サイズ閾値より大きくないサイズを有し、同じ識別子を運搬する。
【０２２７】
オブジェクトＩＯ要求は、送信モジュール７０４を用いることによって記憶装置クライアントに送信される。処理モジュール７０２がさらに、１つのオブジェクトＩＯ要求を記憶装置クライアントに送信した後に休止時間を開始し、休止時間が終了した後に、次のオブジェクトＩＯ要求を記憶装置クライアントに送信してもよい。あるいは、処理モジュール７０２は、分割により得られたサブオブジェクトＩＯ要求に対してのみ休止時間を開始する、即ち、１つのサブオブジェクトＩＯ要求を送信した後に休止時間を開始し、休止時間が終了した後、次のサブオブジェクトＩＯ要求を記憶装置クライアントに送信する。
【０２２８】
処理モジュール７０２はさらに、送信モジュール７０４から、オブジェクトＩＯ要求に対する記憶装置クライアントにより応答される応答メッセージを取得し、受信モジュール７０３を用いることによって、当該オブジェクトＩＯ要求に対する応答メッセージでクライアントに応答するように構成される。１つのオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割した後、および、当該オブジェクトＩＯ要求の全てのサブオブジェクトＩＯ要求の応答メッセージを取得した後、処理モジュール７０２は、全てのサブオブジェクトＩＯ要求に対する応答メッセージで運搬される処理結果に従って、当該オブジェクトＩＯ要求に対する応答メッセージでクライアントに応答する。当該オブジェクトＩＯ要求の全てのサブオブジェクトＩＯ要求に対する応答メッセージが処理成功を示す処理結果を運搬する場合、処理モジュール７０２は、クライアントに、当該オブジェクトＩＯ要求の処理に成功したことを示す応答メッセージで応答し、そうでなければ、処理モジュール７０２は、クライアントに、当該オブジェクトＩＯ要求の処理が不成功であったことを示す応答メッセージで応答する。
【０２２９】
処理モジュール７０２はさらに、送信量と処理成功量の値を更新するように構成される。送信量は、処理モジュール７０２が、送信モジュール７０４を用いることによって、オブジェクトＩＯ要求またはサブオブジェクトＩＯ要求を記憶装置クライアントに送信した後に更新されてもよく、または、送信モジュール７０４を用いることによって当該オブジェクトＩＯ要求または当該サブオブジェクトＩＯ要求に対する１つまたは複数の応答メッセージが取得された後に更新されてもよい。処理成功量は、処理モジュール７０２が、送信モジュール７０４を用いることによって、当該オブジェクトＩＯ要求または当該サブオブジェクトＩＯ要求に対する１つまたは複数の応答メッセージを取得したときに更新され、当該１つまたは複数の応答メッセージは処理成功を示す処理結果を運搬する。詳細な説明および例は具体的な更新方法に対して上で与えられており、ここでは再度説明しない。
【０２３０】
処理モジュール７０２はさらに、事前に設定された期間が終了したかどうかを判定し、当該事前に設定された期間が終了したとき、処理量閾値と休止時間を調節するように構成される。
【０２３１】
処理モジュール７０２はさらに、格納された式に従って処理量閾値および／または休止時間を調節するように構成される。詳細な説明および例は具体的な調節方法に関して上で与えられており、ここでは再度説明しない。
【０２３２】
記憶装置に送信されるオブジェクトＩＯ要求の量が増大し性能が低下したとき、コントローラは、特定のアルゴリズムを用いることによって、オブジェクトＩＯ要求に対する受信された応答メッセージに従って処理量閾値および／または休止時間の値を調節してもよい。オブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量が処理量閾値以上であるとき、コントローラは、拒否応答メッセージまたはビジー応答メッセージで要求者に直接応答し、当該受信されたオブジェクトＩＯ要求を破棄する。
【０２３３】
格納された処理量閾値を用いることによって、コントローラは、記憶装置クライアントを用いることによって処理のために記憶装置に送信されるオブジェクトＩＯ要求の量を制御してもよい。これにより、当該記憶装置に送信されたオブジェクトＩＯ要求の量が当該記憶装置の能力を超過せず、その結果、当該記憶装置の全ての処理リソースおよびキャッシュ・リソースが当該オブジェクトＩＯ要求を効果的に処理するために使用され、それにより、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システム全体の性能と成功率が高まることが保証される。コントローラはさらに、格納された休止時間を用いることによって、記憶装置クライアントを用いることによってオブジェクトＩＯ要求またはサブオブジェクトＩＯ要求を当該記憶装置に送信するための時間間隔を調節してもよく、その結果、当該記憶装置は待ち行列内のオブジェクトＩＯ要求を処理するための十分な時間を有し、それにより、オブジェクトＩＯ要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率が高まる。
【０２３４】
本発明の当該実施形態により提供するコントローラは、オブジェクト・ベース記憶システム内のサービス・フロー制御を実装するように構成され、格納モジュール７０１、処理モジュール７０２、受信モジュール７０３、および送信モジュール７０４を備える。
【０２３５】
特に、受信モジュール７０３は、第１のオブジェクトＩＯ要求を受信し、第１のオブジェクトＩＯ要求を処理モジュール７０２に送信するように構成される。
【０２３６】
第１のオブジェクトＩＯ要求を受信した後、処理モジュール７０２は処理量閾値と処理すべき量を格納モジュール７０１から取得する。処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトＩＯ要求の量である。
【０２３７】
処理すべき量が処理量閾値より小さい場合、処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求を送信モジュール７０４に送信し、格納モジュール７０１内の処理すべき量を更新するように構成される。
【０２３８】
送信モジュール７０４は、第１のオブジェクトＩＯ要求を記憶装置クライアントに送信し、第１のオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された第１の応答メッセージを受信し、第１の応答メッセージを処理モジュール７０２に送信するように構成される。第１の応答メッセージは第１のオブジェクトＩＯ要求の処理結果を運搬する。
【０２３９】
処理モジュール７０２はさらに、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って格納モジュール７０１内の処理量閾値を調節するように構成される。
【０２４０】
処理すべき量が処理量閾値以上である場合、処理モジュール７０２はさらに、拒否応答メッセージまたはビジー応答メッセージで第１のオブジェクトＩＯ要求の要求者に応答するように構成される。
【０２４１】
処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求を送信モジュール７０４に送信した後に休止時間を開始し、休止時間が終了した後に第２のオブジェクトＩＯ要求を送信モジュール７０４に送信するように構成される。
【０２４２】
処理モジュール７０２はさらに、第１の応答メッセージを受信した後、格納モジュール７０１内の送信量を更新し、第１の応答メッセージで運搬される処理結果が処理成功を示す場合、格納モジュール７０１内の処理成功量を更新するように構成される。送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトＩＯ要求の量であり、処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である。
【０２４３】
処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求が分割サイズ閾値より大きいとき、第１のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割し、送信モジュール７０４を用いることによって、分割によって得られた第１のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、休止時間を開始し、休止時間が終了した後に送信モジュール７０４を用いることによって第２のサブオブジェクトＩＯ要求を送信するように構成される。各サブオブジェクトＩＯ要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬し、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズ閾値である。
【０２４４】
送信モジュール７０４は、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、当該応答メッセージを処理モジュール７０２に送信する。当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬する。処理モジュール７０２はさらに、第１のサブオブジェクトＩＯ要求の処理結果を受信し、送信量を更新するように構成される。送信量は記憶装置クライアントに送信されたオブジェクトＩＯ要求の量である。当該処理結果が処理成功を示す場合、処理モジュール７０２はさらに、処理成功量を更新するように構成される。処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である。
【０２４５】
当該事前に設定された条件が満たされたとき、処理モジュール７０２が、格納モジュール７０１内の処理量閾値をオブジェクトＩＯ要求の受信された処理結果に従って調節することは特に、処理モジュール７０２が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、当該処理成功率を第１の調節係数として用いることによって処理量閾値を調節することである。
【０２４６】
処理モジュール７０２はさらに、第２の調節係数に従って、第１の調節係数に従って調節を実施した後に取得された処理量閾値を調節するように構成される。第２の調節係数の値は第１の調節係数の値に比例する。
【０２４７】
格納モジュール７０１は当該処理量閾値の上限および下限をさらに格納する。
【０２４８】
処理モジュール７０２はさらに、処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された処理量閾値の値が処理量閾値の上限と下限の間にあるようにするように構成される。
【０２４９】
処理モジュール７０２はさらに、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、当該処理成功率を第１の調節係数として用いることによって休止時間を調節するように構成される。
【０２５０】
処理モジュール７０２はさらに、第３の調節係数と第１の調節係数に従って休止時間を調節するように構成される。第３の調節係数の値は第１の調節係数の値と反比例する。
【０２５１】
格納モジュール７０１は休止時間の上限および下限をさらに格納する。
【０２５２】
処理モジュール７０２はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
【０２５３】
処理モジュール７０２はさらに、受信モジュール７０３を用いることによってオブジェクトＩＯ要求を送信した要求者に応答メッセージで応答し、処理すべき量を更新するように構成される。当該応答メッセージはオブジェクトＩＯ要求の最終処理結果を運搬する。
【０２５４】
本発明の１実施形態はさらに、コントローラの別の具体的な機能を提供する。コントローラは格納モジュール７０１、処理モジュール７０２、受信モジュール７０３、および送信モジュール７０４を備える。
【０２５５】
受信モジュール７０３は、第１のオブジェクトＩＯ要求を受信し、第１のオブジェクトＩＯ要求を処理モジュール７０２に送信するように構成される。
【０２５６】
処理モジュール７０２は、第１のオブジェクトＩＯ要求を受信した後、分割サイズ閾値を格納モジュール７０１から取得するように構成される。分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求のサイズである。
【０２５７】
処理モジュール７０２はさらに、第１のオブジェクトＩＯ要求のサイズが分割サイズ閾値より大きいとき、第２のオブジェクトＩＯ要求を複数のサブオブジェクトＩＯ要求に分割し、第１のサブオブジェクトＩＯ要求を送信モジュール７０４に送信し、休止時間を開始するように構成される。各サブオブジェクトＩＯ要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬する。
【０２５８】
送信モジュール７０４はさらに、第１のサブオブジェクトＩＯ要求をコントローラに接続された記憶装置クライアントに送信し、第１のサブオブジェクトＩＯ要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、第１のサブオブジェクトＩＯ要求に対する応答メッセージを処理モジュール７０２に送信するように構成される。当該応答メッセージは第１のサブオブジェクトＩＯ要求の処理結果を運搬する。
【０２５９】
処理モジュール７０２はさらに、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って休止時間を調節するように構成される。
【０２６０】
処理モジュール７０２はさらに、休止時間が開始された後、休止時間が終了した後に当該送信モジュールを用いることによって、第２のサブオブジェクトＩＯ要求を記憶装置クライアントに送信し、複数のサブオブジェクトＩＯ要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るように構成される。
【０２６１】
処理モジュール７０２はさらに、第１のサブオブジェクトＩＯ要求に対する応答メッセージを受信した後、送信量を更新するように構成される。送信量は、送信モジュール７０４を用いることによって処理モジュール７０２により記憶装置クライアントに送信されたオブジェクトＩＯ要求の量である。第１のサブオブジェクトＩＯ要求に対する応答メッセージで運搬される第１のオブジェクトＩＯ要求の処理結果が処理成功を示す場合、処理モジュール７０２はさらに、処理成功量を更新するか、または、第１のサブオブジェクトＩＯ要求に対する応答メッセージで運搬される第１のオブジェクトＩＯ要求の処理結果が最終処理失敗を示す場合、処理成功量を不変に保つように構成される。処理成功量は記憶装置クライアントにより成功裏に処理された受信されたオブジェクトＩＯ要求の量である。
【０２６２】
処理モジュール７０２がさらに、事前に設定された条件が満たされたとき、オブジェクトＩＯ要求の受信された処理結果に従って休止時間を調節するように構成されることは特に、処理モジュール７０２が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトＩＯ要求の処理成功率を計算し、当該処理成功率を第１の調節係数として用いることによって休止時間を調節することである。
【０２６３】
処理モジュール７０２はさらに、第３の調節係数に従って、調節が実施された後に取得された休止時間を第１の調節係数に従って調節するように構成される。第３の調節係数の値は第１の調節係数の値と反比例する。
【０２６４】
格納モジュール７０１は休止時間の上限および下限をさらに格納する。
【０２６５】
処理モジュール７０２はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
【０２６６】
コントローラによりオブジェクトＩＯ要求を処理するために使用される方法の手続きは上述の手続きと同様であり、詳細は図２−１、図２−２、図２−３、図３、図４、および対応する説明で示されており、当該実施形態では再度詳細に説明することはしない。
【０２６７】
コントローラをまた、ＣＰＵとメモリを備えた装置と見なしてもよい。当該メモリはプログラムを格納し、当該ＣＰＵは、当該メモリ内の当該プログラムを用いることによって以上のサービス・フロー制御方法を実行する。コントローラはさらにインタフェースを備えてもよい。当該インタフェースは記憶装置クライアントに接続されるように構成され、当該インタフェースの機能は、例えば、当該ＣＰＵによる処理により生成されたオブジェクトＩＯ要求を記憶装置クライアントに送信することであってもよい。当該インタフェースはまた、オブジェクト・ベース記憶システム外部の別のクライアントに接続されてもよく、クライアントにより送信される様々なオブジェクトＩＯ要求を受信するように構成される。
【０２６８】
本発明の１実施形態はさらに、図８に示すように、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのサービス・フロー制御装置８を提供する。装置８はコントローラ８０１を備え、コントローラ８０１は受信モジュール８０１−３、格納モジュール８０１−１、処理モジュール８０１−２、および送信モジュール８０１−４を備える。コントローラは上述のサービス・フロー制御方法を実装するように構成され、コントローラ８０１は図７および対応する説明におけるコントローラと同一の構造および機能を有し、ここでは再度説明しない。
【０２６９】
本発明の１実施形態はさらに、図９に示すように、サービス・フロー制御を実装するためのオブジェクト・ベース記憶システムを提供する。オブジェクト・ベース記憶システムはコントローラ９０１、記憶装置クライアント９０３、および少なくとも２つの記憶装置９０５を備える。コントローラ９０１は記憶装置クライアント９０３に接続され、記憶装置クライアント９０３は少なくとも２つの記憶装置９０５に接続される。コントローラ９０１と記憶装置クライアント９０３を同一のサーバに配置してもよい。コントローラ９０１は受信モジュール９０１−３、格納モジュール９０１−１、処理モジュール９０１−２、および送信モジュール９０１−４を備える。コントローラは、上述のサービス・フロー制御方法を実装するように構成され、コントローラ９０１は図７および対応する説明におけるコントローラと同一の構造および機能を有し、ここでは再度説明しない。
【０２７０】
当該実装方式の以上の説明に基づいて、本発明を、必要な普遍的ハードウェアに加えてソフトウェアにより実装してもよく、または、確かに、ハードウェアのみにより実装してもよいことは明らかに理解されうる。大抵の環境では、前者が好適な実装方式である。かかる理解に基づいて、本発明の技術的解決策は本質的に、または、先行技術に貢献する部分を、ソフトウェア製品の形で実装してもよい。当該ソフトウェア製品は、コンピュータのフロッピ・ディスク、ハード・ディスクまたは光ディスクのような可読記憶媒体に格納され、本発明の当該実施形態で説明した方法を実施するようにコンピュータ装置（パーソナル・コンピュータ、サーバ、またはネットワーク装置であってもよい）に指示するための幾つかの命令を含む。
【０２７１】
本発明の当該実施形態では、オブジェクト・ベース記憶システムにより処理できるオブジェクトＩＯ要求の処理量閾値はコントローラ内で設定され、オブジェクトＩＯの受信された処理結果に従って、処理量閾値は、事前に設定されたアルゴリズムを用いることによって特定のルールに従って動的に調節される。このように、コントローラが、記憶装置クライアントを用いることによって当該記憶装置に送信されたオブジェクトＩＯ要求の量を制御してもよく、その結果、当該記憶装置により受信されたオブジェクトＩＯ要求の量は当該記憶装置の処理能力を超過しない。したがって、当該記憶装置の全てのリソースを使用して当該オブジェクトＩＯ要求を効果的に処理でき、これは、当該オブジェクトＩＯ要求の処理成功率を保証し、オブジェクト・ベース記憶システムの処理性能を高める。さらに、時間間隔、即ち、２つのオブジェクトＩＯ要求（またはサブオブジェクトＩＯ要求）を送信する間の休止時間もコントローラ内で設定される。コントローラは、記憶装置クライアントを用いることによって当該記憶装置に送信されたオブジェクトＩＯ要求の量を調節することによって、当該記憶装置に送信されたオブジェクトＩＯ要求の量をより正確に制御でき、これは、当該記憶装置の全てのリソースを、当該オブジェクトＩＯ要求を効果的に処理するために使用でき、オブジェクト・ベース記憶システムの処理性能が高まることを保証する。
【０２７２】
明らかに、当業者は本発明の趣旨と範囲から逸脱しない様々な修正と変形を本発明に対して行うことができる。本発明は、これらの修正と変形が以下の諸請求項とそれらの均等な技術により定義される保護範囲内にあるのであれば、これらの修正と変形を包含することを意図するものである。
【符号の説明】
【０２７３】
１０１  コントローラ
１０３  記憶装置クライアント
１０４  記憶装置クラスタ
５０１  コントローラ
５０２  クライアント
５０３  ＩＰディスク・クライアント
５０４  ＩＰディスク・クラスタ
７０１  格納モジュール
７０２  処理モジュール
７０３  受信モジュール
７０４  送信モジュール
８０１−１  格納モジュール
８０１−２  処理モジュール
８０１−３  受信モジュール
８０１−４  送信モジュール
９０１−１  格納モジュール
９０１−２  処理モジュール
９０１−３  受信モジュール
９０１−４  送信モジュール
９０３  記憶装置クライアント
【図１】
0006403140.tif 000002
【図２−１】
0006403140.tif 000003
【図２−２】
0006403140.tif 000004
【図２−３】
0006403140.tif 000005
【図３】
0006403140.tif 000006
【図４】
0006403140.tif 000007
【図５】
0006403140.tif 000008
【図６Ａ】
0006403140.tif 000009
【図６Ｂ】
0006403140.tif 000010
【図７】
0006403140.tif 000011
【図８】
0006403140.tif 000012
【図９】
0006403140.tif 000013