JP2017514210A - オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステム - Google Patents

オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステム Download PDF

Info

Publication number
JP2017514210A
JP2017514210A JP2016558104A JP2016558104A JP2017514210A JP 2017514210 A JP2017514210 A JP 2017514210A JP 2016558104 A JP2016558104 A JP 2016558104A JP 2016558104 A JP2016558104 A JP 2016558104A JP 2017514210 A JP2017514210 A JP 2017514210A
Authority
JP
Japan
Prior art keywords
request
amount
processing
controller
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016558104A
Other languages
English (en)
Other versions
JP6403140B2 (ja
Inventor
燕群 童
燕群 童
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017514210A publication Critical patent/JP2017514210A/ja
Application granted granted Critical
Publication of JP6403140B2 publication Critical patent/JP6403140B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステムを開示する。前記オブジェクト・ベース記憶システムにおける前記サービス・フロー制御方法は、コントローラにより、第1のオブジェクトIO要求を受信するステップと、処理量閾値と処理すべき量を取得するステップと、前記処理すべき量が前記処理量閾値より小さい場合、前記第1のオブジェクトIO要求を記憶装置クライアントに送信し、前記処理すべき量を更新するステップと、前記第1のオブジェクトIO要求に対して前記記憶装置クライアントにより応答された第1の応答メッセージを受信するステップであって、前記第1の応答メッセージは前記第1のオブジェクトIO要求の処理結果を運搬する、ステップと、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って前記処理量閾値を調節するステップとである。前記処理量閾値は、記憶装置によるオブジェクトIO要求を処理した結果に従って調節され、前記記憶装置に送信されたオブジェクトIO要求の量を制御でき、その結果、前記記憶装置がオブジェクトIO要求で過負荷とならず、全てのリソースを利用して前記オブジェクトIO要求を効果的に処理でき、それにより、前記オブジェクト・ベース記憶システムの性能と成功率が高まる。

Description

本発明は記憶の分野に関し、特に、オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステムに関する。
インターネットおよびWeb2.0の急速な発展とともに、ウェブ(Web)アプリケーションは何十億もの小さなファイルを生み出した。さらに、人々はより多くの画像、ビデオ、音楽をアップロードしており、何百億もの電子メールを送信しており、これがより多くのデータを生成する。インターネット・データ・センタ(IDC、Internet Data Center)の統計によれば、データ量は次の10年には44倍に成長すると期待されており、全世界のデータは2020年までには35ZB(Zettabyte)に達するであろう。80%は構造化されていないデータであり、大部分は非活性のデータである。かかる大容量データをどのように格納するかに関する問題がある。
かかる大量のデータ量に対して、PB(Petabyte)での拡張可能性のみを有するブロック記憶技術およびファイル記憶技術は効果がないように見える。オブジェクト・ベース記憶システム(Object−Based Storage System)は当該ブロック記憶技術の直接アクセスおよび当該ファイル記憶技術のデータ共有のような利点を有し、高い信頼性のある、クロス・プラットフォームの、安全なデータ共有記憶システムを提供する。
図1に示すように、オブジェクト・ベース記憶システムは一般にコントローラ101、記憶装置クライアント103、および記憶装置クラスタ104を備える。コントローラ101をさらに外部クライアントに接続してもよく、当該外部クライアントを、別の装置(例えば、ドメイン・ネーム・サーバ)に接続してもよい(当該外部クライアントおよび当該ドメイン・ネーム・サーバは図1には示されていない)。記憶装置クライアント103は記憶装置クラスタ104内の複数の記憶装置に接続され、記憶装置は、IP(internet protocol)ハード・ディスクまたは別のスマート・ディスク、例えば、固体ドライブ(Solid State Drive、SSD)であってもよい。
オブジェクト・ベース記憶システムでは、コンテナ(バケット(bucket))およびオブジェクト(object)に基づく2層サービス・モデルが最も広く利用されている。当該コンテナは、特殊トップ・レベル・ディレクトリまたはグローバルに一意なドメイン・ネームとして理解することができる。当該オブジェクトはオブジェクト記憶に対する基本単位である。各オブジェクトはデータおよびデータ属性集合の組合せである。データ属性は、アプリケーションの必要に応じて設定してもよく、データ分散、サービス品質等を含む。当該オブジェクトは自己の属性を維持し、これにより、記憶システムの管理作業が簡略化され、柔軟性が高まる。当該オブジェクトは、異なるサイズを有してもよく、データ構造全体、例えば、ファイル、データベース・エントリ、ディレクトリ等を含んでもよい。
コンテナ動作(バケット動作とも呼ばれうる)が実施される場合、ユーザは、クライアントを用いることによってコントローラにコンテナIO(入出力)要求を送信し、オブジェクト動作が実施されるとき、当該クライアントはオブジェクトIO要求を当該コントローラに送信する。オブジェクトIO要求と比べると、コンテナIO要求は一般に小さく、一般に1メガバイト(M)を超えない。当該オブジェクトIO要求は一般に大きく、大きなものは数Mであることがあり、または、1M未満であることがある。本発明の諸実施形態では、処理を、IO要求がコンテナIO要求またはオブジェクトIO要求であるかどうかに関らずIO要求のサイズに従ってのみ実施することができる。したがって、以下の説明では、IO要求は特にコンテナIO要求またはオブジェクトIO要求とは呼ばれず、単にオブジェクトIO要求と呼ばれる。
オブジェクトIO要求は書込みオブジェクトIO要求または読取りオブジェクトIO要求であってもよい。当該実施形態では、特に断らない限り、説明する手続きは書込みオブジェクトIO要求および読取りオブジェクトIO要求の両方に適用可能である。
ユーザがデータを読み書きする必要があるとき、外部クライアントは、オブジェクトIO要求をコントローラ101に送信するために使用され、次いで、コントローラ101は、オブジェクトIO要求を記憶装置クライアント103に送信し、記憶装置クライアント103は、アルゴリズムを用いることによって当該オブジェクトIO要求を対応する記憶装置に送信し、当該記憶装置は当該オブジェクトIO要求を処理する。各記憶装置は、制限された量のオブジェクトIO要求を処理し、一時的に格納することができる。ピーク・サービス時間の間、以下のケースが生ずる可能性がある。即ち、オブジェクトIO要求が各記憶装置の処理能力とキャッシュ能力を超える速度で配送される。処理できないオブジェクトIO要求については、当該記憶装置はさらに過負荷応答をフィードバックする必要がある。当該過負荷応答をフィードバックするために占有される記憶装置のリソースは、1つのオブジェクトIO要求を処理するのに必要なリソースより少なくない。この結果、より多くのオブジェクトIO要求が処理できないこととなりうる。
さらに、大きなオブジェクトIO要求は一般に複数の小さなオブジェクトIO要求に分割され、1つの小さなオブジェクトIO要求の処理に失敗するならば、当該大きなオブジェクトIO要求の処理に失敗する。小さなオブジェクトIO要求は通常、長時間待つ必要があり、長時間待った後の処理失敗の可能性が増大する。
処理に失敗したオブジェクトIO要求およびタイムリに処理できないオブジェクトIO要求は、処理のために繰返しの試行で記憶装置に再送され、これが、悪循環を形成し、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システム全体の性能および成功率を低下させる。
本発明の諸実施形態では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステムを提供して、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率がピーク・サービス時間に低いという先行技術の問題を解決する。
本発明の当該実施形態の第1の態様では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法を提供する。オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、当該方法は、コントローラにより、第1のオブジェクトIO要求を受信するステップと、処理量閾値と処理すべき量を取得するステップであって、処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量であるステップと、処理すべき量が処理量閾値より小さい場合、第1のオブジェクトIO要求を記憶装置クライアントに送信し、処理すべき量を更新するステップと、第1のオブジェクトIO要求に対して記憶装置クライアントにより応答された第1の応答メッセージを受信するステップであって、第1の応答メッセージは第1のオブジェクトIO要求の処理結果を運搬する、ステップと、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って処理量閾値を調節するステップとを含む。
第1の態様を参照して、第1の態様の第1の可能な実装方式では、当該方法は、コントローラが第2のオブジェクトIO要求を受信したとき、処理量閾値の現在値および処理すべき量の現在値を取得するステップと、処理すべき量の現在値が処理量閾値の現在値以上である場合、拒否応答メッセージまたはビジー応答メッセージで応答するステップとをさらに含む。
第1の態様または第1の態様の第1の可能な実装方式を参照して、第1の態様の第2の可能な実装方式では、当該方法は、第1のオブジェクトIO要求を記憶装置クライアントに送信した後に休止時間を開始するステップと、コントローラが第3のオブジェクトIO要求を受信したとき、処理量閾値の現在値および処理すべき量の現在値を取得するステップと、処理すべき量の現在値が処理量閾値の現在値より小さい場合、休止時間が終了した後に第3のオブジェクトIO要求を記憶装置クライアントに送信し、処理すべき量を更新するステップとをさらに含む。
第1の態様、第1の態様の第1の可能な実装方式、または第1の態様の第2の可能な実装方式を参照して、第1の態様の第3の可能な実装方式では、第1のオブジェクトIO要求に対して記憶装置クライアントにより応答された第1の応答メッセージを受信した後、当該方法は、送信量を更新するステップであって、当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量であるステップと、第1の応答メッセージで運搬される処理結果が処理成功を示す場合、処理成功量を更新するステップであって、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量であるステップ、または、第1の応答メッセージで運搬される処理結果が処理失敗を示す場合、処理成功量を不変に保つステップとをさらに含む。
第1の態様または第1の態様の第1の可能な実装方式を参照して、第1の態様の第4の可能な実装方式では、第1のオブジェクトIO要求を記憶装置クライアントに送信するステップは、分割サイズ閾値を取得するステップであって、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズ閾値であるステップと、第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きいとき、コントローラにより、第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するステップであって、各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬するステップとを含み、第1のオブジェクトIO要求を記憶装置クライアントに送信するステップは特に、コントローラにより、第1のサブオブジェクトIO要求を記憶装置クライアントに送信するステップと、休止時間を開始し、休止時間が終了した後に、第2のサブオブジェクトIO要求を記憶装置クライアントに送信するステップと、複数のサブオブジェクトIO要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るステップとである。
第1の態様の第4の可能な実装方式を参照して、第1の態様の第5の可能な実装方式では、コントローラにより、第1のサブオブジェクトIO要求を記憶装置クライアントに送信した後に、当該方法は、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信するステップであって、当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬するステップと、送信量を更新するステップであって、当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量であるステップと、当該処理結果が処理成功を示す場合、処理成功量を更新するステップであって、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量であるステップ、または、当該処理結果が最終処理失敗を示す場合、処理成功量を不変に保つステップと、複数のサブオブジェクトIO要求の処理結果が受信されるまで、記憶装置クライアントにより応答される応答メッセージを受信するステップの実行に戻るステップとをさらに含む。
第1の態様の第3の可能な実装方式または第1の態様の第5の可能な実装方式を参照して、第1の態様の第6の可能な実装方式では、記憶装置クライアントによるオブジェクトIO要求の受信された処理結果に従って処理量閾値を調節するステップは、コントローラにより、事前に設定された期間に従って、送信量の現在値および処理成功量の現在値を定期的に取得するステップと、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算するステップと、当該処理成功率を第1の調節係数として用いることによって処理量閾値を調節するステップとを含む。
第1の態様の第6の可能な実装方式を参照して、第1の態様の第7の可能な実装方式では、当該方法は、第2の調節係数に従って、第1の調節係数に従って調節を実施した後に取得された処理量閾値を調節するステップであって、第2の調節係数の値は第1の調節係数の値に比例するステップをさらに含む。
第1の態様の第6の可能な実装方式または第1の態様の第7の可能な実装方式を参照して、第1の態様の第8の可能な実装方式では、処理量閾値の上限および下限はコントローラで設定され、当該方法は、処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された処理量閾値の値が処理量閾値の上限と下限の間にあるようにするステップをさらに含む。
第1の態様の第3の可能な実装方式または第1の態様の第5の可能な実装方式を参照して、第1の態様の第9の可能な実装方式では、当該方法は、コントローラにより、事前に設定された期間に従って、送信量の現在値および処理成功量の現在値を定期的に取得するステップと、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算するステップと、当該処理成功率を第1の調節係数として用いることによって休止時間を調節するステップとをさらに含む。
第1の態様の第9の可能な実装方式を参照して、第1の態様の第10の可能な実装方式では、当該方法は、第3の調節係数と第1の調節係数に従って休止時間を調節するステップであって、第3の調節係数の値は第1の調節係数の値と反比例するステップをさらに含む。
第1の態様の第9の可能な実装方式または第1の態様の第10の可能な実装方式を参照して、第1の態様の第11の可能な実装方式では、休止時間の上限および下限はコントローラで設定され、当該方法は、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするステップをさらに含む。
第1の態様または第1の態様の任意の可能な実装方式を参照して、第1の態様の第12の可能な実装方式では、当該方法は、コントローラにより、オブジェクトIO要求を送信した要求者に応答メッセージで応答するステップであって、当該応答メッセージはオブジェクトIO要求の最終処理結果を運搬するステップと、処理すべき量を更新するステップとをさらに含む。
本発明の当該実施形態の第2の態様ではオブジェクト・ベース記憶システムにおけるサービス・フロー制御方法を提供する。オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、当該方法は、コントローラにより、第1のオブジェクトIO要求を受信するステップと、分割サイズ閾値を取得するステップであって、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズであるステップと、第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きいとき、コントローラにより、第2のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するステップであって、各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬するステップと、第1のサブオブジェクトIO要求を記憶装置クライアントに送信し、休止時間を開始するステップと、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信するステップであって、当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬するステップと、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するステップとを含む。
第2の態様を参照して、第2の態様の第1の可能な実装方式では、休止時間を開始した後、当該方法は、休止時間が終了した後、第2のサブオブジェクトIO要求を記憶装置クライアントに送信するステップと、複数のサブオブジェクトIO要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るステップとをさらに含む。
第2の態様または第2の態様の第1の可能な実装方式を参照して、第2の態様の第2の可能な実装方式では、第1のサブオブジェクトIO要求に対する応答メッセージを受信した後、当該方法は、送信量を更新するステップであって、当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量であるステップと、第1の応答メッセージで運搬される第1のオブジェクトIO要求の処理結果が処理成功を示す場合、処理成功量を更新するステップであって、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量であるステップ、または、第1の応答メッセージで運搬される第1のオブジェクトIO要求の処理結果が最終処理失敗を示す場合、処理成功量を不変に保つステップと、複数のサブオブジェクトIO要求の処理結果が受信されるまで、記憶装置クライアントにより応答される応答メッセージを受信するステップの実行に戻るステップとをさらに含む。
第2の態様、第2の態様の第1の可能な実装方式、または第2の態様の第2の可能な実装方式を参照して、第2の態様の第3の可能な実装方式では、当該事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するステップは特に、コントローラにより、事前に設定された期間に従って、送信量の現在値および処理成功量の現在値を定期的に取得するステップと、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算するステップと、当該処理成功率を第1の調節係数として用いることによって休止時間を調節するステップとである。
第2の態様の第3の可能な実装方式を参照して、第2の態様の第4の可能な実装方式では、当該方法は、第3の調節係数に従って、調節が実施された後に取得された休止時間を第1の調節係数に従って調節するステップであって、第3の調節係数の値は第1の調節係数の値と反比例するステップをさらに含む。
第2の態様の第3の可能な実装方式または第2の態様の第4の可能な実装方式を参照して、第2の態様の第5の可能な実装方式では、休止時間の上限および下限はコントローラで設定され、当該方法は、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするステップをさらに含む。
本発明の当該実施形態の第3の態様では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラを提供する。コントローラは格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備える。受信モジュール703は、第1のオブジェクトIO要求を受信し、第1のオブジェクトIO要求を処理モジュール702に送信し、第1のオブジェクトIO要求を受信した後、処理モジュール702は処理量閾値と処理すべき量を格納モジュール701から取得するように構成される。処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量である。処理すべき量が処理量閾値より小さい場合、処理モジュール702はさらに、第1のオブジェクトIO要求を送信モジュール704に送信し、格納モジュール701内の処理すべき量を更新するように構成される。送信モジュール704はさらに、第1のオブジェクトIO要求を記憶装置クライアントに送信し、第1のオブジェクトIO要求に対して記憶装置クライアントにより応答された第1の応答メッセージを受信し、第1の応答メッセージを処理モジュール702に送信するように構成される。第1の応答メッセージは第1のオブジェクトIO要求の処理結果を運搬する。処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って格納モジュール701内の処理量閾値を調節するように構成される。
第3の態様を参照して、第3の態様の第1の可能な実装方式では、処理すべき量が処理量閾値以上である場合、処理モジュール702はさらに、拒否応答メッセージまたはビジー応答メッセージで第1のオブジェクトIO要求の要求者に応答するように構成される。
第3の態様または第3の態様の第1の可能な実装方式を参照して、第3の態様の第2の可能な実装方式では、処理モジュール702はさらに、第1のオブジェクトIO要求を送信モジュール704に送信した後に休止時間を開始し、休止時間が終了した後に第2のオブジェクトIO要求を送信モジュール704に送信するように構成される。
第3の態様、第3の態様の第1の可能な実装方式、または第3の態様の第2の可能な実装方式を参照して、第3の態様の第3の可能な実装方式では、処理モジュール702はさらに、第1の応答メッセージを受信した後、格納モジュール704内の送信量を更新し、第1の応答メッセージで運搬される処理結果が処理成功を示す場合、格納モジュール704内の処理成功量を更新するように構成される。当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量であり、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
第3の態様または第3の態様の第1の可能な実装方式を参照して、第3の態様の第4の可能な実装方式では、処理モジュール702はさらに、第1のオブジェクトIO要求が分割サイズ閾値より大きいとき、第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割し、送信モジュール704を用いることによって、分割によって得られた第1のサブオブジェクトIO要求を記憶装置クライアントに送信し、休止時間を開始し、休止時間が終了した後に送信モジュール704を用いることによって第2のサブオブジェクトIO要求を送信するように構成される。各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬し、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズ閾値である。
第3の態様の第4の可能な実装方式を参照して、第3の態様の第5の可能な実装方式では、受信モジュール704は、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、当該応答メッセージを処理モジュール702に送信する。当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬する。処理モジュール702はさらに、第1のサブオブジェクトIO要求の処理結果を受信し、送信量を更新するように構成される。当該送信量は記憶装置クライアントに送信されたオブジェクトIO要求の量である。当該処理結果が処理成功を示す場合、処理モジュール702はさらに、処理成功量を更新するように構成される。当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
第3の態様の第3の可能な実装方式または第3の態様の第5の可能な実装方式を参照して、第3の態様の第6の可能な実装方式では、事前に設定された条件が満たされたとき、処理モジュール702が、格納モジュール701内の処理量閾値をオブジェクトIO要求の受信された処理結果に従って調節することは特に、処理モジュール702が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、当該処理成功率を第1の調節係数として用いることによって処理量閾値を調節することである。
第3の態様の第6の可能な実装方式を参照して、第3の態様の第7の可能な実装方式では、処理モジュール702はさらに、第2の調節係数に従って、第1の調節係数に従って調節を実施した後に取得された処理量閾値を調節するように構成される。第2の調節係数の値は第1の調節係数の値に比例する。
第3の態様の第6の可能な実装方式または第3の態様の第7の可能な実装方式を参照して、第3の態様の第8の可能な実装方式では、格納モジュール701は処理量閾値の上限および下限をさらに格納し、処理モジュール702はさらに、処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された処理量閾値の値が処理量閾値の上限と下限の間にあるようにするように構成される。
第3の態様の第3の可能な実装方式または第3の態様の第5の可能な実装方式を参照して、第3の態様の第9の可能な実装方式では、処理モジュール702はさらに、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、当該処理成功率を第1の調節係数として用いることによって休止時間を調節するように構成される。
第3の態様の第9の可能な実装方式を参照して、第3の態様の第10の可能な実装方式では、処理モジュール702はさらに第3の調節係数と第1の調節係数に従って休止時間を調節するように構成される。第3の調節係数の値は第1の調節係数の値と反比例する。
第3の態様の第9の可能な実装方式または第3の態様の第10の可能な実装方式を参照して、第3の態様の第11の可能な実装方式では、格納モジュール701は休止時間の上限および下限をさらに格納し、処理モジュール702はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
第3の態様または第3の態様の任意の可能な実装方式を参照して、第3の態様の第12の可能な実装方式では、処理モジュール702はさらに、受信モジュール703を用いることによって、オブジェクトIO要求を送信した要求者に応答メッセージで応答し、処理すべき量を更新するように構成される。当該応答メッセージはオブジェクトIO要求の最終処理結果を運搬する。
本発明の当該実施形態の第4の態様ではオブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラを提供する。コントローラは、格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備える。受信モジュール703は、第1のオブジェクトIO要求を受信し、第1のオブジェクトIO要求を処理モジュール702に送信するように構成され、処理モジュール702は、第1のオブジェクトIO要求を受信した後、分割サイズ閾値を格納モジュール701から取得するように構成され、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズであり、処理モジュール702はさらに、第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きいとき、第2のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するように構成され、各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬し、第1のサブオブジェクトIO要求を送信モジュール704に送信し、休止時間を開始し、送信モジュール704は、第1のサブオブジェクトIO要求をコントローラに接続された記憶装置クライアントに送信し、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、第1のサブオブジェクトIO要求に対する応答メッセージを処理モジュール702に送信するように構成され、当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬し、処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するように構成される。
第4の態様を参照して、第4の態様の第1の可能な実装方式では、処理モジュール702はさらに、休止時間が開始された後、休止時間が終了した後に当該送信モジュールを用いることによって、第2のサブオブジェクトIO要求を記憶装置クライアントに送信し、当該複数のサブオブジェクトIO要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るように構成される。
第4の態様または第4の態様の第1の可能な実装方式を参照して、第4の態様の第2の可能な実装方式では、処理モジュール702はさらに、第1のサブオブジェクトIO要求に対する応答メッセージを受信した後、送信量を更新するように構成される。当該送信量は、送信モジュール704を用いることによって処理モジュール702により記憶装置クライアントに送信されたオブジェクトIO要求の量である。第1のサブオブジェクトIO要求に対する応答メッセージで運搬される第1のオブジェクトIO要求の処理結果が処理成功を示す場合、処理モジュール702はさらに、処理成功量を更新するか、または、第1のサブオブジェクトIO要求に対する応答メッセージで運搬される第1のオブジェクトIO要求の処理結果が最終処理失敗を示す場合、処理成功量を不変に保つように構成される。当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
第4の態様、第4の態様の第1の可能な実装方式、または第4の態様の第2の可能な実装方式を参照して、第4の態様の第3の可能な実装方式では、処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するように構成されることは特に、処理モジュール702が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、当該処理成功率を第1の調節係数として用いることによって休止時間を調節することである。
第4の態様の第3の可能な実装方式を参照して、第4の態様の第4の可能な実装方式では、処理モジュール702はさらに、第3の調節係数に従って、調節が実施された後に取得された休止時間を第1の調節係数に従って調節するように構成される。第3の調節係数の値は第1の調節係数の値と反比例する。
第4の態様の第3の可能な実装方式または第4の態様の第4の可能な実装方式を参照して、第4の態様の第5の可能な実装方式では、格納モジュール701は休止時間の上限および下限をさらに格納し、処理モジュール702はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
本発明の当該実施形態の第5の態様では、請求項20乃至39の何れか1項に記載のコントローラを備える、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するための装置を提供する。
本発明の当該実施形態の第6の態様では、請求項20乃至39の何れか1項に記載のコントローラ、記憶装置クライアント、および少なくとも2つの記憶装置を備える、サービス・フロー制御を実装できるシステムを提供する。コントローラは記憶装置クライアントに接続され、記憶装置クライアントは当該少なくとも2つの記憶装置に接続される。
本発明の当該実施形態では、オブジェクト・ベース記憶システムが大量のオブジェクトIO要求を受信するのでオブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの性能および成功率がピーク・サービス時間に低いというケースを考慮して、オブジェクト・ベース記憶システムのプロセッサに、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値、即ち、処理量閾値を追加し、対応してオブジェクトIO要求の処理結果に従って処理量閾値を調節し、オブジェクト・ベース記憶システムにより受信されたオブジェクトIO要求の量およびオブジェクト・ベース記憶システム内の記憶装置に送信されたオブジェクトIO要求の量を制御することを提供する。これにより、記憶装置により受信されたオブジェクトIO要求が当該記憶装置の処理能力およびキャッシュ能力を超過せず、その結果、当該記憶装置の全てのリソースはオブジェクトIO要求を効果的に処理するために使用され、それにより、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率が高まることを保証することができる。
本発明の当該実施形態では、休止時間をオブジェクト・ベース記憶システムのプロセッサに追加し、対応して休止時間をオブジェクトIO要求の処理結果に従って調節し、オブジェクトIO要求をオブジェクト・ベース記憶システム内の記憶装置に送信するための時間間隔を制御し、当該記憶装置により処理される必要のないオブジェクトIO要求を制御することをさらに提供する。その結果、当該記憶装置により受信されたオブジェクトIO要求が当該記憶装置の処理能力およびキャッシュ能力を超過せず、当該記憶装置の全てのリソースはオブジェクトIO要求を効果的に処理するために使用され、それにより、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率が高まる。
オブジェクト・ベース記憶システムのシステム・アーキテクチャの略図である。 オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法の手続きを示す図である。 オブジェクト・ベース記憶システムにおける別のサービス・フロー制御方法の手続きを示す図である。 オブジェクト・ベース記憶システムにおけるさらに別のサービス・フロー制御方法の手続きを示す図である。 オブジェクト・ベース記憶システムにおけるさらに別のサービス・フロー制御方法の手続きを示す図である。 オブジェクト・ベース記憶システムにおけるさらに別のサービス・フロー制御方法の手続きを示す図である。 オブジェクト・ベース記憶システムのシステム・アーキテクチャの別の略図である。 オブジェクト・ベース記憶システム内のさらなるサービス・フロー制御方法の手続きを示す図である。 オブジェクト・ベース記憶システム内のさらなるサービス・フロー制御方法の手続きを示す図である。 オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラの略構造図である。 オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのサービス・フロー制御装置の略構造図である。 サービス・フロー制御を実装できるオブジェクト・ベース記憶システムの略図である。
本発明では、オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステムを提供する。オブジェクト・ベース記憶システム内のコントローラは、記憶装置によるオブジェクトIO要求を処理した結果に従って、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値、即ち、処理量閾値を調節して、受信されたオブジェクトIO要求の量に対する制御を実装し、その結果、処理のために記憶装置に送信されるオブジェクトIO要求の量は当該記憶装置の処理能力およびキャッシュ能力を超過せず、これが当該記憶装置の処理能力を保証し、それによりオブジェクト・ベース記憶システムによるオブジェクトIO要求の処理の成功率およびタイムリ性が高まる。
添付図面を参照して、以下では、本発明の当該実施形態の技術的解決策の実装方法、具体的な実装方式、および対応する実現可能な有利な効果を詳細に説明する。明らかに、説明する実施形態は本発明の当該実施形態の全部ではなく一部である。
図1は、本発明の1実施形態に従うオブジェクト・ベース記憶システムの略構造図を示す。図1に示すように、コントローラ101は、記憶装置ディスク・クライアント103に接続され、記憶装置ディスク・クライアント103は、記憶装置クラスタ104内の複数の記憶装置に接続される。コントローラ101をさらに外部クライアントに接続してもよく、当該外部クライアントをさらに別の装置に接続してもよい。コントローラ101および記憶装置クライアント103を1つのサーバで配置してもよく、または、2つのサーバで配置してもよく、当該サーバは、HTTP(Hyper Text Transfer Protocol)サーバ、即ち、HTTPプロトコルを用いるサーバであってもよい。コントローラ101は一般に記憶装置クライアント103と1対1関係にある。即ち、1つのコントローラ101は1つの記憶装置クライアント103に対応する。当該記憶システムは、複数のグループのコントローラおよび記憶装置クライアント(図1では図示せず)をさらに含んでもよく、コントローラは対応する記憶装置クライアントを用いることによって記憶装置クラスタ内の記憶装置に接続される。当該記憶装置クラスタは複数の記憶装置を備え、当該複数の記憶装置は、分散アルゴリズムを用いることによって一意な名前空間および拡張可能な記憶空間を当該グループのコントローラおよび記憶装置クライアントに提供する。当該記憶装置クラスタを、当該グループのコントローラおよび記憶装置クライアントが独立にサービス制御と動作を実施するために、複数の記憶装置クライアントにより共有してもよい。実際の適用では、各グループのコントローラおよび記憶装置クライアントを、当該記憶装置クラスタ内の幾つかの記憶装置にのみ接続してもよい。
本発明の当該実施形態を、グループのコントローラおよび記憶装置クライアントが存在し、コントローラ101および記憶装置クライアント103が1つのHTTPサーバに展開されている例を用いることによって説明する。
本発明の当該実施形態では、記憶装置はIPディスクであり、記憶装置クライアントはIPディスク・クライアントであり、当該IPディスク・クライアントを複数のIPディスクに接続してもよい。IPディスクは、分散アルゴリズムを用いることによって一意な名前空間および拡張可能な大容量記憶空間を提供する。オブジェクト・ベース記憶システム内のIPディスクに、鍵−値を基本アクセス単位として用いることによってアクセスしてもよい。1つの鍵−値動作は1つのIO要求であり、オブジェクトIO要求の属性のようなパラメータに従って計算を実施した後に得られる値である。各鍵は1つの値に対応し、当該値はIPディスク上のオブジェクトの記憶位置およびサイズを示す。別のタイプのスマート・ディスク、例えば、SSDを記憶装置として使用してもよい。特に断らない限り、別のタイプの記憶装置の実装原理はIPディスクと同様である。
図2−1は、オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法の手続きを示す。
ステップ201:コントローラが第1のオブジェクトIO要求を受信する。
ユーザが、クライアントを用いることによってコントローラに第1のオブジェクトIO要求を送信する。第1のオブジェクトIO要求をコントローラに送信する前に、当該クライアントは、さらに、先ずコントローラのドメイン・ネーム情報をドメイン・ネーム・サーバに送信してもよい。当該ドメイン・ネーム・サーバは、コントローラのIPアドレスをクライアントに返し、次いで、クライアントが、第1のオブジェクトIO要求を受信されたIPアドレスに従って対応するコントローラに送信する。
ステップ203:コントローラが処理量閾値と処理すべき量を取得する。処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量である。
コントローラは、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の最大値、即ち、処理量閾値を格納する。コントローラはさらに、オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量、即ち、処理すべき量を記録する。オブジェクト・ベース記憶システム内のオブジェクトIO要求の処理すべき量の値は当該オブジェクトIO要求の処理結果とともに変化する。本発明の当該実施形態では、処理量閾値を、オブジェクトIO要求の処理結果に従ってコントローラにより動的に調節して、処理量閾値が現在の状況においてオブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の最大値であることを保証してもよい。
ステップ205:処理すべき量が処理量閾値より小さい場合、コントローラは、第1のオブジェクトIO要求を記憶装置クライアントに送信し、処理すべき量を更新する。
処理すべき量および処理量閾値が比較される。処理すべき量が処理量閾値より小さいとき、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの能力の上限に到達せず、より多くのオブジェクトIO要求をさらに処理することができる。したがって、コントローラは、受信された第1のオブジェクトIO要求を記憶装置クライアントに送信する。この場合、オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量が増大し、処理すべき量を更新する必要がある。実際の動作では、コントローラにより第1のオブジェクトIO要求を記憶装置クライアントに送信するステップとコントローラにより処理すべき量を更新するステップの間に厳密な順序はない。コントローラは、先ず第1のオブジェクトIO要求を記憶装置クライアントに送信し、次いで、処理すべき量を更新してもよく、または、先ず処理すべき量を更新し、次いで第1のオブジェクトIO要求を記憶装置クライアントに送信してもよい。
処理すべき量を、カウンタを用いることにより記録してもよい。処理すべき量が更新されると、当該カウンタに1が加えられる。確かに、処理すべき量を別の方式で記録し更新してもよい。例えば、処理すべき量の統計値をさらに、カウント・ダウンの方式で収集してもよい。ここでは全ての例を説明しているわけではない。
実際の適用では、コントローラは、先ず処理すべき量Nに1を加え、次いで第1のオブジェクトIO要求を記憶装置クライアントに送信してもよく、または、先ず第1のオブジェクトIO要求を記憶装置クライアントに送信し、次いで処理すべき量Nに1を加えてもよい。当該2つの動作の間の順序に厳密な制限はない。
記憶装置クライアントは、第1のオブジェクトIO要求を処理のために対応する記憶装置に送信する。第1のオブジェクトIO要求を受信した後、記憶装置クライアントはインタフェースを受信された第1のオブジェクトIO要求に割り当てる。当該インタフェースは、第1のオブジェクトIO要求に対応する記憶装置に関する情報を決定する。記憶装置クライアントは、第1のオブジェクトIO要求を、当該記憶装置に関する決定された情報に従って当該記憶装置に送信する。当該記憶装置は、受信されたオブジェクトIO要求を待ち行列に入れ、当該オブジェクトIO要求を1つずつ処理する。第1のオブジェクトIO要求を処理した後、当該記憶装置は、第1のオブジェクトIO要求に対する応答メッセージで記憶装置クライアントに応答する。当該応答メッセージは、第1のオブジェクトIO要求の処理結果に関する情報を運搬する。
処理に成功したオブジェクトIO要求に対して、記憶装置は記憶装置クライアントに処理成功を示す情報を運搬する応答メッセージで応答し、待ち行列内の次のオブジェクトIO要求の処理を開始する。オブジェクトIO要求をタイムリに処理できないとき、当該記憶装置は過負荷応答メッセージで記憶装置クライアントに応答する。或る理由、例えば、装置故障、信号損失等のため処理に成功しなかったオブジェクトIO要求に対して、当該記憶装置は記憶装置クライアントに処理失敗を示す情報を運搬する応答メッセージで応答する。処理失敗を示す応答メッセージを受信した後、記憶装置クライアントは、特定の時間量に到達するかまたはオブジェクトIO要求を処理するための所定の期限を超えるまで、処理が不成功であったオブジェクトIO要求を処理のために記憶装置に再送してもよい。所定の期限が終了したときに記憶装置クライアントが応答メッセージを受信しなかった場合、記憶装置クライアントはまた、オブジェクトIO要求を処理のために記憶装置に再送してもよい。特定量の試行の後にオブジェクトIOの処理に成功しなかったとき、応答メッセージは最終処理失敗を示す処理結果を運搬する。試行の量はサービス要件に従ってオブジェクト・ベース記憶システムにより設定される。
ステップ207:コントローラが第1のオブジェクトIO要求に対する記憶装置クライアントにより応答される応答メッセージを受信する。当該応答メッセージは第1のオブジェクトIO要求の処理に不成功であったかまたは成功したかを示す処理結果を運搬する。
記憶装置クライアントが第1のオブジェクトIO要求に対する記憶装置により応答された応答メッセージを受信する。当該応答メッセージは、第1のオブジェクトIO要求の処理に不成功であったかまたは成功したかを示す処理結果を運搬する。次いで、記憶装置クライアントは受信された応答メッセージでコントローラに応答する。
第1のオブジェクトIO要求に対する記憶装置クライアントにより応答された応答メッセージを受信した後、コントローラは当該応答メッセージで第1のオブジェクトIO要求の要求者に応答し、処理すべき量を更新する。オブジェクトIO要求が記憶装置クライアントに送信されるとき、処理すべき量を更新するための方法は処理すべき量を更新するための方法と一貫する必要がある。例えば、1つのオブジェクトIO要求を記憶装置クライアントに送信した後、コントローラは処理すべき量に1を加える。この場合、1つの応答メッセージでオブジェクトIO要求の要求者に応答するとき、コントローラは、処理すべき量から1を減ずる。
コントローラが第1のオブジェクトIO要求に対する記憶装置クライアントにより応答された応答メッセージを受信したとき、処理すべき量を更新してもよい。換言すれば、1つのオブジェクトIO要求に対する記憶装置クライアントにより応答される応答メッセージを受信したとき、コントローラは、処理すべき量を更新し、例えば、処理すべき量から1を減ずる。このように、オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量を、処理すべき量を増大または減少させることによって正確に記録してもよい。
別のオブジェクトIO要求が受信されたとき、コントローラは処理すべき量の現在値を処理量閾値の現在値と比較し、比較結果に従って当該オブジェクトIO要求を受理するかどうかを判定する。処理すべき量の現在値が処理量閾値の現在値以上であるとき、オブジェクト・ベース記憶システムは別のオブジェクトIO要求を処理することができない。記憶装置クライアントを用いることによって、当該別のオブジェクトIO要求をさらに受理し、処理のために記憶装置に送信する場合、当該記憶装置は追加の性能を使用してシステム・ビジー応答メッセージで応答してもよく、これは、処理されているオブジェクトIO要求に影響を及ぼし、当該オブジェクトIO要求の遅延の増大と故障率の増大の原因となり、最終的に、記憶装置の性能は悪化する。したがって、処理すべき量の現在値が処理量閾値の現在値以上であるとき、コントローラは、拒否応答メッセージまたはビジー応答メッセージで当該オブジェクトIO要求の要求者に直接応答し、当該オブジェクトIO要求を破棄する。
ステップ209:コントローラは、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って処理量閾値を調節する。
当該事前に設定された条件が、事前に設定された期間、処理すべき量の所定値、または処理すべき量および処理量閾値の間の所定の差異であってもよい。当該事前に設定された条件が満たされたとき、例えば、当該事前に設定された期間が終了し、コントローラは、処理量閾値の値をオブジェクトIO要求の受信された処理結果に従って調節する。ここでのオブジェクトIO要求の処理結果はコントローラにより受信された全てのオブジェクトIO要求の処理結果であってもよく、または、当該期間内にコントローラにより受信されたオブジェクトIO要求の処理結果であってもよい。当該期間が終了した後、コントローラは、受信されたオブジェクトIO要求の結果の全てを削除して他を受信し、または、全てのオブジェクトIO要求の処理結果を保持してもよく、本発明の当該実施形態では限定されない。
事前に設定された条件が満たされたとき、応答メッセージが必ずしも全ての送信されたオブジェクトIO要求に対して受信されないことがありうることに留意すべきである。換言すれば、応答メッセージが第1のオブジェクトIO要求に対して受信されるかどうかは、コントローラが、受信された応答メッセージ内で運搬されるオブジェクトIO要求の処理結果に従って処理量閾値を調節することには影響しない。したがって、ステップ207およびステップ209の間に厳密な順序はない。
記憶装置により処理でき一時的に格納されるオブジェクトIO要求の量は制限されない。ピーク・サービス時間の間、各記憶装置は大量のIO要求を処理する必要がある。オブジェクトIO要求を配送する速度が記憶装置の処理能力およびキャッシュ能力を超えるとき、幾つかのオブジェクトIO要求を処理することができない。タイムリに処理できないオブジェクトIO要求については、記憶装置は過負荷応答メッセージを記憶装置クライアントにフィードバックし、記憶装置クライアントが当該オブジェクトIO要求を再試行し、記憶装置に再送することを試みる。しかし、当該過負荷応答メッセージをフィードバックすると、記憶装置の多くのディスク・リソースを占有する。このように、オブジェクトIO要求を処理するための記憶装置の性能は悪化し、待ち行列におけるオブジェクトIO要求の待機時間が増大する。このサイクルが反復されると、記憶装置の処理性能は悪化し、オブジェクトIO要求の待機時間が増大し、オブジェクトIO要求をタイムリに処理できず、オブジェクトIO要求を処理する故障率が増大する。
本発明の当該実施形態では、コントローラは、記憶装置クライアントに送信されたオブジェクトIO要求の量を制御する。処理量閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の最大値、即ち、オブジェクト・ベース記憶システム内の記憶装置により処理できるオブジェクトIO要求の量の最大値を表す。記憶装置により処理できるオブジェクトIO要求の量は当該記憶装置のリソースの占有とともに変化する。したがって、本発明の当該実施形態では、コントローラはオブジェクトIO要求の処理結果に従って処理量閾値の値を動的に調節し、調節の後に取得された処理量閾値に従って受信されたオブジェクトIO要求の量を制御する、即ち、処理すべき量の値を制御し、その結果、処理すべきオブジェクトIO要求の量はオブジェクト・ベース記憶システムの処理能力を超過せず、オブジェクト・ベース記憶システムの全てのリソースはオブジェクトIO要求を効果的に処理するために使用され、これは、オブジェクト・ベース記憶システムの処理性能と成功率を高め、オブジェクトIO要求の処理遅延を削減する。
図2−1に示す流れ図に基づいて、当該サービス・フロー制御方法は図2−2に示すように以下のステップをさらに含んでもよい。
ステップ202:コントローラが第2のオブジェクトIO要求を受信する。ステップ202の実装方法はステップ201と同じであり、ここでは説明せず、図2−2では図示しない。
ステップ204:コントローラが、処理量閾値の現在値および処理すべき量の現在値を取得する。ステップ204の実装方法はステップ202と同様である。処理量閾値はオブジェクトIO要求の処理結果に従ってコントローラにより動的に調節され、処理すべき量はまた受信されたオブジェクトIO要求の量に従って調節されるので、オブジェクトIO要求を受信した後、コントローラは、コントローラに現在格納されている処理すべき量の値および処理量閾値を取得する。ステップ204はここでは再度説明せず、図2−2では図示しない。
ステップ206:処理すべき量の現在値が処理量閾値の現在値以上である場合、コントローラは拒否応答メッセージまたはビジー応答メッセージで応答する。
処理量閾値の現在値および処理すべき量の現在値を取得した後、コントローラは、当該2つの値を比較し、処理すべき量の現在値が処理量閾値より小さいとき、ステップ205と後述の方法を実行する。これはここでは説明しない。処理すべき量の現在値が処理量閾値の現在値以上であるとき、処理すべきオブジェクトIO要求の量がオブジェクト・ベース記憶システムの処理能力を超過するか、または、オブジェクト・ベース記憶システムの処理能力に達する。別のオブジェクトIO要求がさらに受信される場合、圧力が確実にオブジェクト・ベース記憶システムにかかり、オブジェクト・ベース記憶システムは、リソースを利用してこれらの過負荷オブジェクトIO要求を処理する必要があり、これがオブジェクト・ベース記憶システム全体の性能に影響し、処理効率を低下させる。したがって、処理すべき量の現在値が処理量閾値以上であるとき、コントローラはもはや別のオブジェクトIO要求を受理せず、コントローラは拒否応答メッセージまたはビジー応答メッセージで、第2のオブジェクトIO要求を送信したクライアントに応答する。さらに、コントローラは、さらに第2のオブジェクトIO要求を破棄してもよい。
処理すべき量の現在値が処理量閾値の現在値以上であるとき、コントローラはもはや別のオブジェクトIO要求を受理しないが、記憶装置クライアントを用いることによって処理のために記憶装置に送信されたオブジェクトIO要求の量を制御するために、オブジェクトIO要求を送信した要求者に拒否応答メッセージまたはビジー応答メッセージで直接応答する。これにより、過度なオブジェクトIO要求が記憶装置に送信されたために生ずる輻輳を回避し、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの効率を高め、オブジェクトIO要求の遅延を削減する。
図2−3は、オブジェクト・ベース記憶システム内のサービス・フロー制御を実施するための方法の別の実装方式を示す。図2および図3に示す方法の手続きに基づいて、コントローラによりオブジェクトIO要求を記憶装置クライアントに送信するための時間間隔が追加される。具体的な方法手続きは以下の通りである。
ステップ211:第1のオブジェクトIO要求を記憶装置クライアントに送信した後、コントローラが休止時間を開始する。休止時間は、コントローラにより2つのオブジェクトIO要求を記憶装置クライアントに送信する間の時間間隔である。コントローラは、タイマを用いることによって休止時間を記録してもよい。休止時間を開始することは、当該タイマを開始することであってもよい。
ステップ213:コントローラが第3のオブジェクトIO要求を受信し、処理量閾値の現在値および処理すべき量の現在値を取得する。ステップ213の実装方法はステップ201と同じであり、ここでは説明せず、図2−3では図示しない。
ステップ213とステップ211の間に厳密な順序はない。換言すれば、コントローラは、休止時間を開始する前に第3のオブジェクトIO要求を受信してもよく、または、休止時間を開始した後に第3のオブジェクトIO要求を受信してもよい。
ステップ215:処理すべき量の現在値が処理量閾値の現在値より小さい場合、コントローラは、休止時間が終了した後に第3のオブジェクトIO要求を記憶装置クライアントに送信し、処理すべき量を更新する。
コントローラは、処理量閾値の取得された現在値を処理すべき量の取得された現在値と比較する。処理すべき量の現在値が処理量閾値の現在値より小さいとき、オブジェクト・ベース記憶システムはさらに別のオブジェクトIO要求を受理してもよく、コントローラは、受信された第3のオブジェクトIO要求を処理のために記憶装置クライアントに送信してもよい。この方法の手続きと以上の2つの方法の手続きの間の差異は、処理すべき量の現在値が処理量閾値の現在値より小さいと判定した後、コントローラは第3のオブジェクトIO要求を記憶装置クライアントに即時に送信しないが、休止時間が終了するまで待機し、次いで、第3のオブジェクトIO要求を記憶装置クライアントに送信する必要があるということにある。換言すれば、第1のオブジェクトIO要求を記憶装置クライアントに送信した後、コントローラは、特定の時間間隔(即ち、休止時間)だけ待機し、次いで、第3のオブジェクトIO要求を記憶装置クライアントに送信する必要がある。記憶装置クライアントは第3のオブジェクトIO要求を処理のために対応する記憶装置に送信する。
このように、オブジェクトIO要求を記憶装置に送信するための時間を調節してもよく、その結果、当該記憶装置は当該オブジェクトIO要求を処理するためのより多くの時間を有することができ、これにより、当該記憶装置上のオブジェクトIO要求の輻輳が回避され、当該記憶装置の全てのリソースが当該オブジェクトIO要求を処理するために使用されることが保証され、それによりオブジェクトIO要求を処理するためのオブジェクト・ベース記憶システム全体の効率が高まる。
処理すべき量を更新するための方式と時間は以上の実施形態で説明したものと同じであり、ここでは再度説明しない。
休止時間を、タイマを用いることにより記録してもよい。時間間隔をカウント方式で記録してもよく、または、時間間隔をカウントダウン方式で記録してもよい。
ステップ217:コントローラが、事前に設定された条件が満たされたとき、休止時間をオブジェクトIO要求の受信された処理結果に従って調節する。
当該事前に設定された条件は、事前に設定された期間または休止時間の事前に設定された値であってもよい。当該事前に設定された条件が満たされたとき、例えば、当該事前に設定された期間が終了したとき、コントローラは、オブジェクトIO要求の受信された処理結果に従って休止時間の値を調節する。ここでのオブジェクトIO要求の処理結果は、コントローラにより受信された全てのオブジェクトIO要求の処理結果、または、当該期間内にコントローラにより受信されたオブジェクトIO要求の処理結果であってもよい。当該期間が終了した後、コントローラは、受信されたオブジェクトIO要求の処理結果の全てを削除して他のものを受信するか、または、全てのオブジェクトIO要求の処理結果を保持してもよく、本発明の当該実施形態では限定されない。
当該事前に設定された条件が満たされたとき、応答メッセージが必ずしも全ての送信されたオブジェクトIO要求に対して受信されない可能性がある。換言すれば、送信されたオブジェクトIO要求に対して応答メッセージが受信されるかどうかはコントローラが受信された応答メッセージに従って休止時間を調節することには影響しない。したがって、第3のオブジェクトIO要求に対する応答メッセージを受信するステップはここでは説明しない。
本発明の当該実施形態では、休止時間は、オブジェクトIO要求の受信された処理結果を用いることによってコントローラにより調節されてもよい。このように、コントローラは、オブジェクトIO要求を処理のために記憶装置に送信するための時間間隔を制御することによって、処理のために記憶装置に送信されたオブジェクトIO要求の量を制御してもよく、これは、処理のために記憶装置に送信されたオブジェクトIO要求の量が当該記憶装置の処理能力を超過せず、当該記憶装置上のオブジェクトIO要求の輻輳が防止され、オブジェクト・ベース記憶システム内のオブジェクトIO要求の処理効率が高まり、オブジェクトIO要求の遅延が削減されることを保証する。
コントローラがオブジェクトIO要求の受信された処理結果に従って上述の処理量閾値または休止時間を動的に調節することを実装するために、コントローラは、当該オブジェクトIO要求の処理結果に関する統計を収集し、当該処理結果を分析する必要がある。本発明の当該実施形態では、コントローラはオブジェクトIO要求の処理成功率に従って処理量閾値または休止時間を動的に調節する。コントローラはまた、オブジェクトIO要求の処理失敗率に従って処理量閾値または休止時間を動的に調節してもよいか、または、コントローラはまた、オブジェクトIO要求の処理成功率または処理失敗率および別の因子に従って処理量閾値または休止時間を動的に調節してもよいことは理解されうる。
動的な調節が、特定の時間ルールに従って実施されてもよく、または、オブジェクトIO要求の具体的な量が記憶装置クライアントに送信された後に実施されてもよい。本発明の当該実施形態を、コントローラが処理量閾値または休止時間を定期的に調節する例を用いることによって説明する。
コントローラがオブジェクトIO要求の受信された処理結果に従って処理量閾値または休止時間を定期的に調節することを実装するために、送信量と処理成功量をコントローラに記録する必要がある。当該送信量とは、コントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量のことをいい、当該処理成功量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトIO要求の間で処理に成功したオブジェクトIO要求の量のことをいう。当該送信量を、コントローラ内のカウンタを設定することにより記録してもよく、当該処理成功量をまた、コントローラ内のカウンタを設定することにより記録してもよい。
当該送信量を2つの方式で更新してもよい。1方式では、当該送信量は、コントローラが1つのオブジェクトIO要求を記憶装置クライアントに送信した後に更新される。例えば、現在記録されている送信量に1を加える。別の方式では、当該送信量は、コントローラがオブジェクトIO要求を記憶装置クライアントに送信し、当該オブジェクトIO要求に対して記憶装置クライアントにより応答される応答メッセージを受信した後に更新される。例えば、現在記録されている送信量に1を加える。第2の方式では、当該応答された応答メッセージが処理成功を示す応答メッセージまたは処理失敗を示す応答メッセージであるかどうかに関らず、1つの応答メッセージが受信されたならば現在記録されている送信量に1を加える必要がある。
後者の更新方式は特に、コントローラが1つのオブジェクトIO要求を記憶装置クライアントに送信した後、記憶装置クライアントが受信されたオブジェクトIO要求を処理のために記憶装置に送信するというものである。記憶装置は応答メッセージで記憶装置クライアントに応答する。当該応答メッセージは、当該オブジェクトIO要求の処理結果、例えば、処理失敗または処理成功を運搬する。次いで記憶装置クライアントは当該応答メッセージでコントローラに応答する。当該応答メッセージを受信した後、コントローラは、現在記録されている送信量を更新し、例えば、現在記録されている送信量に1を加える。
処理成功量を更新するための方式は、オブジェクトIO要求に対して記憶装置クライアントにより応答される応答メッセージを受信したとき、コントローラが、当該応答メッセージで運搬される処理結果が処理成功を示す場合に処理成功量を更新し、例えば、現在記録されている処理成功量に1を加えるというものである。
事前に設定された期間が終了したとき、コントローラは、送信量の現在値および処理成功量の現在値を取得し、オブジェクトIO要求の処理成功率を計算し、計算の後に取得された処理成功率を第1の調節係数として用いることによって処理量閾値または休止時間を調節する。当該処理成功率は、成功率=処理成功量の現在値/送信量の現在値*100%であってもよい。
コンスタントな観察と実験を通じて、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの能力は、送信量および成功率とともに変化することが分かる。したがって、本発明の当該実施形態では、別の調節係数に従って、成功率に従って調節が実施された後に取得された処理量閾値または休止時間を調節することが提供される。処理量閾値に対して、調節係数は処理成功率に比例する。休止時間に対して、調節係数は処理成功率に反比例する。係数の間の関係をより明確に説明するために、処理成功率を第1の調節係数と称し、処理量閾値を調節するための調節係数を第2の調節係数と称し、休止時間を調節するための調節係数を第3の調節係数と称する。第2の調節係数は定数であり、第2の調節係数の値は第1の調節係数の値に比例する。即ち、第1の調節係数の大きな値は第2の調節係数の大きな値を示す。第3の調節係数は定数であり、第3の調節係数の値は第1の調節係数の値と反比例する。即ち、第1の調節係数の大きな値は第2の調節係数の小さな値を示す。
さらに、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量は制限されず、限定なしに増大または減少させることはできない。したがって、処理量閾値の上限および下限を、コントローラ内で事前に設定してもよい。処理量閾値の上限はオブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の最大量であり、処理量閾値の下限は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の最小量である。第1の調節係数または第1の調節係数および第2の調節係数に従ってコントローラによって計算することにより取得された処理量閾値が処理量閾値の上限と下限の間にないとき、計算後に取得された処理量閾値を修正する必要がある。例えば、第1の調節係数または第1の調節係数および第2の調節係数に従ってコントローラによって計算することにより取得された処理量閾値が処理量閾値の上限より大きい場合、当該取得された処理量閾値は処理量閾値の上限に等しくなるように調節され、第1の調節係数または第1の調節係数および第2の調節係数に従ってコントローラによって計算することにより取得された処理量閾値が処理量閾値の下限より小さい場合、当該取得された処理量閾値は処理量閾値の下限に等しくなるように調節される。
同様に、オブジェクト・ベース記憶システムの休止時間をまた制限する必要がある。したがって休止時間の上限および下限をまたコントローラ内で事前に設定してもよい。第1の調節係数または第1の調節係数および第3の調節係数に従って調節を実施することによってコントローラにより取得された休止時間は、当該休止時間の事前に設定された上限と事前に設定された下限との間にある必要がある。第1の調節係数または第1の調節係数および第3の調節係数に従ってコントローラによって計算することによって取得された休止時間が当該休止時間の事前に設定された上限と事前に設定された下限との間にない場合、計算後に取得された休止時間を当該休止時間の上限と下限に従って修正する必要がある。例えば、第1の調節係数または第1の調節係数および第3の調節係数に従ってコントローラによって計算することによって取得された休止時間が当該休止時間の設定された上限より大きい場合、当該取得された休止時間は、休止時間の上限に等しくなるように調節され、または、第1の調節係数または第1の調節係数および第3の調節係数に従ってコントローラによって計算することによって取得された休止時間が休止時間の設定された下限より小さい場合、当該取得された休止時間は休止時間の下限に等しくなるように調節される。
以下では、具体的な例を用いることによって、どのように事前に設定された期間に従って処理量閾値および休止時間を調節するかを説明する。
当該方法の実施形態では、期間は1分に事前に設定され、コントローラに格納される。当該期間を必要に応じて別の値に設定してもよいことは当業者により理解されうる。例えば、当該期間は30秒に設定される。当該期間を、コントローラ内でタイマを設定することにより記録してもよい。当該事前に設定された期間が終了したとき、コントローラは、現在の送信量および現在の処理成功量を取得し、処理量閾値および/または休止時間を調節するようにトリガされる。換言すれば、本発明の当該実施形態では、コントローラは、処理量閾値および/または休止時間を毎分調節する。
先ず、事前に設定された期間に従って処理量閾値を調節するための方法を、例を用いることによって説明する。
M=M×r×μである。Mは調節後に取得される新たな処理量閾値であり、Mは処理量閾値の現在値であり、rは第1の調節係数の現在値であり、μは第1の調節係数に対する第2の調節係数の値である。μはrに比例する。即ち、大きな第1の調節係数rは大きな第2の調節係数μを示し、小さな第1の調節係数rは小さな第2の調節係数μを示す。rは処理成功量の現在値の送信量の現在値に対する割合、即ち、r=(p/q)×100%である。pは処理成功量の現在値であり、qは送信量の現在値である。
当該実施形態では、処理量閾値は区分的関数を用いることによって調節される。計算式は以下の通りである。
M=MMin(r<0.2);
M=M×r×0.6(0.2≦r<0.6);
M=M×r×0.8(0.6≦r<0.8);
M=M×r×1.0(0.8≦r<0.95);
M=M×r×1.1(M<MMax、かつ、r≧0.95);
M=MMax(M=MMax、かつ、r≧0.95)
Minは処理量閾値の下限であり、MMaxは処理量閾値の上限であり、処理量閾値の上限および下限は事前に設定される。サービスが開始される前に、Mの初期値はM=MMaxに設定され、rの初期値は100%に設定される。サービスが継続すると、事前に設定された期間が終了したとき、コントローラは、rの現在値に従い対応する式を選択することによって計算および調節を実施し、処理量閾値の新たな値を取得する。
以下では、例を用いることによって事前に設定された期間に従って休止時間を調節するための方法を説明する。
t=(t+Constant)/r×μである。tは調節後に取得された新たな休止時間であり、tは休止時間の現在値であり、rは第1の調節係数の現在値であり、μは第1の調節係数の値に対する第3の調節係数の値である。μはrに反比例する。即ち、大きな第1の調節係数rは小さな第3の調節係数μを示し、小さな第1の調節係数rは大きな第3の調節係数μを示す。rは処理成功量の現在値の送信量の現在値に対する割合、即ち、r=(p/q)×100%である。pは処理成功量の現在値であり、qは送信量の現在値である。
当該実施形態では、休止時間は区分的関数を用いることによって調節される。計算式は以下の通りである。
t=tMaxDelay(r<0.2);
t=(t+15)/r×1.6(0.2≦r<0.6);
t=(t+15)/r×1.4(0.6≦r<0.8);
t=(t+15)/r×1.0(0.8≦r<0.95);
t=(t+0)/r×0.9(t≧tThreshold、かつ、r≧0.95);
t=tMinDelay(t<tThreshold、かつ、r≧0.95)
MinDelayは休止時間の下限であり、tMaxDelayは休止時間の上限であり、休止時間の上限と下限は事前に設定される。当該実施形態では、休止時間の下限は0に設定され、休止時間はミリ秒である。
各オブジェクトIO要求のサイズは異なる。一般に、オブジェクトIO要求の分割サイズ閾値はコントローラにおいて事前に設定され、分割サイズ閾値より大きいオブジェクトIO要求を大きなオブジェクトIO要求と称し、分割サイズ閾値より小さいオブジェクトIO要求を小さなオブジェクトIO要求と称する。分割サイズ閾値とは、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズのことをいう。コントローラにより受理されたオブジェクトIO要求が分割サイズ閾値より大きい、即ち、当該受理されたオブジェクトIO要求が大きなオブジェクトIO要求であるとき、コントローラは、当該大きなオブジェクトIO要求を複数のサブオブジェクトIO要求に分割する。分割により得られたサブオブジェクトIO要求の何れも分割サイズ閾値より大きくなく、分割により得られたサブオブジェクトIO要求は同じ識別子を運搬し、当該同じ識別子は、当該サブオブジェクトIO要求が同一の大きなオブジェクトIO要求を分割することにより得られることを示すために使用される。一般に、コントローラは、分割サイズ閾値に従って当該大きなオブジェクトIO要求を分割する。
例えば、オブジェクトIO要求の事前に設定された分割サイズ閾値は1メガバイト(M)である。コントローラにより受理された第1のオブジェクトIO要求が4.5Mであるとき、第1のオブジェクトIO要求は大きなオブジェクトIO要求であり、コントローラは、分割サイズ閾値に従って第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割する。本発明の当該実施形態では、コントローラは、第1のオブジェクトIO要求を5個のサブオブジェクトIO要求に1Mの単位で分割する。当該5個のサブオブジェクトおよびそれらのサイズは、それぞれ、第1のサブオブジェクトIO要求で1M、第2のサブオブジェクトIO要求で1M、第3のサブオブジェクトIO要求で1M、第4のサブオブジェクトIO要求で1M、第5のサブオブジェクトIO要求で0.5Mであってもよい。さらに、当該5個のサブオブジェクトIO要求は同じ識別子を運搬する。
コントローラが大きなオブジェクトIO要求を処理する方式を、上述の第1のオブジェクトIO要求が大きなオブジェクトIO要求である(即ち、第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きい)例を用いることによって説明する。その手続きを図3に示す。大きなオブジェクトIO要求を処理する方式は、図2−1または図2−2および対応する説明で説明したオブジェクトIO要求を処理する方式と部分的に同一である。同一の部分の説明は再度詳細には説明しない。
ステップ301:コントローラが第1のオブジェクトIO要求を受信する。第1のオブジェクトIO要求はコントローラで事前に設定された分割サイズ閾値より大きい。分割サイズ閾値とは、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズのことをいう。ステップ301は、第1のオブジェクトIO要求がこの場合大きなオブジェクトIO要求であることを除いてステップ201と同様である。
ステップ303:コントローラが処理量閾値の現在値および処理すべき量の現在値を取得する。ステップ303はステップ203と同様である。
ステップ305:コントローラが、処理すべき量の現在値が処理量閾値の現在値より小さいと判定し、コントローラが、処理すべき量を更新し、第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割する。各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、各サブオブジェクトIO要求は同じ識別子を運搬する。この場合、処理すべき量を更新するためにコントローラにより使用される方法はステップ205で説明したのと同一である。
処理すべき量を更新するステップと第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するステップとの間の順序には要件はない。処理すべき量が、第1のオブジェクトIO要求が分割される前に更新されてもよいか、または、第1のオブジェクトIO要求を、処理すべき量が更新される前に分割してもよいか、または、この2つを同時に実施してもよい。
ステップ205では、コントローラが第1のオブジェクトIO要求を記憶装置クライアントに送信したとき、処理すべき量に1つの単位だけ加える、即ち、処理すべき量に1を加えることに留意すべきである。当該実施形態では、第1のオブジェクトIO要求は複数のサブオブジェクトIO要求に分割され、記憶装置クライアントに送信される。この場合、処理すべき量にまた1つの単位だけ加える、即ち、処理すべき量に1を加える。処理すべき量とは、コントローラにより受理された処理すべきオブジェクトIO要求の量のことをいい、当該量は、受理されたオブジェクトIO要求が分割されるサブオブジェクトIO要求の量とは無関係である。
記憶装置クライアントがIPディスク・クライアントであり、記憶装置がIPディスクであるとき、IPディスク・クライアントは、同一のインタフェースを、同じ識別子を運搬するIO要求に割り当てる。換言すれば、大きなIO書込み要求を分割することにより得られた複数のオブジェクトIO書込み要求はIPディスク・クライアントの1つのインタフェースにより処理される。当該インタフェースは、割り当てられたオブジェクトIO要求の鍵値を計算し、対応するIPディスクに関する情報を当該鍵値に従って取得し、当該オブジェクトIO書込み要求を処理のために当該対応するIPディスクに送信する。1つのIO要求が複数のIO要求に分割された後、分割により得られた各IO要求は異なるKEY値を有するので、分割により得られたIO要求を処理のために異なるIPディスクに送信することが可能である。IPディスク・クライアントは、並列処理を実施し、複数のIO要求を同時に処理して、計算後に取得されたKEY値を用いることによって当該IO要求を対応するIPディスクに送信してもよい。
小さなオブジェクトIO要求のメタデータとデータを別々に格納してもよい。即ち、異なる鍵値がメタデータとデータに対して使用される。メタデータとデータを一緒に格納してもよい。即ち、メタデータとデータが1つの鍵値を共有する。メタデータとデータが一緒に格納されるとき、メタデータとデータのサイズの合計は分割サイズ閾値を超えることはできない。メタデータとデータが別々に格納されるとき、メタデータの鍵値はコンテナ名およびオブジェクト名であり、データの鍵値は当該データに従ってランダムに生成された文字列である。異なる鍵値がメタデータとデータに対して使用されるので、メタデータとデータを、同一のIPディスクに格納してもよく、または、異なるIPディスクに格納してもよい。メタデータとデータが一緒に格納され、メタデータとデータが1つの鍵値を共有するとき、メタデータとデータは同一の位置に一緒に格納される。メタデータとデータが一緒に格納されるとき、1つのIO動作のみを実施する必要がある。既存の技術的解決策を使用して、オブジェクトIO要求を処理のために対応するIPディスクに送信するステップを実装してもよく、ここでは詳細には説明しない。
ステップ307:コントローラが、分割によって得られた第1のサブオブジェクトIO要求を記憶装置クライアントに送信し、休止時間を開始する。
ステップ309:休止時間が終了した後、コントローラが、第2のサブオブジェクトIO要求を記憶装置クライアントに送信し、分割により得られた複数のサブオブジェクトIO要求が送信されるまで当該サイクルを繰り返す。
本ステップにおける休止時間は上述の休止時間と本質的に同一であり、その調節方法も同一であり、ここでは再度説明しない。
記憶装置クライアントと記憶装置は、受信されたサブオブジェクトIO要求を、受信されたオブジェクトIO要求を処理するための方式と同一の方式で処理し、既存の実装方式を使用してもよく、したがって、さらなる説明はここでは提供しない。当該サブオブジェクトIO要求を処理した後、記憶装置が対応する応答メッセージで記憶装置クライアントに応答し、次いで、記憶装置クライアントが当該対応する応答メッセージでコントローラに応答する。当該応答メッセージは対応するオブジェクトIO要求の処理結果を運搬する。これらのプロセスは上で詳細に説明されており、ここでは再度説明しない。
ステップ311:コントローラが第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信する。当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬する。コントローラはさらに、分割により得られた他の複数のサブオブジェクトIO要求の応答メッセージを受信する。
ステップ313:コントローラが、事前に設定された条件が満たされたとき、(サブオブジェクトIO要求を含む)オブジェクトIO要求の受信された処理結果に従って処理量閾値を調節する。
ステップ313の方法はステップ209で説明した方法と同一であり、ここでは再度説明しない。さらに、同様に、ステップ313とステップ311の間に厳密な順序はない。換言すれば、コントローラが、(サブオブジェクトIO要求を含む)オブジェクトIO要求の受信された処理結果に従って処理量閾値を調節することは、コントローラが第1のサブオブジェクトIO要求または別のサブオブジェクトIO要求に対する応答メッセージを受信するかどうかによって影響されない。
大きなオブジェクトIO要求を分割することは、コントローラに記録された送信量と処理成功量に影響を及ぼすことに留意すべきである。送信量とは、コントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量のことをいい、処理成功量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトIO要求の間で処理に成功したオブジェクトIO要求の量のことをいう。したがって、大きなオブジェクトIO要求が分割されるケースでは、コントローラは、1つのオブジェクトIO要求でなく、分割により得られた複数のサブオブジェクトIO要求を記憶装置クライアントに送信する。換言すれば、送信量とは、それが分割されていないオブジェクトIO要求または分割により得られたサブオブジェクトIO要求であるかどうかに関らず、実際にコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量のことをいう。同様に、処理成功量とは、分割されていないオブジェクトIO要求および分割により得られたサブオブジェクトIO要求を含む、コントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量のことをいう。
したがって、第1のサブオブジェクトIO要求を記憶装置クライアントに送信した後、コントローラは、送信量を更新、例えば、送信量に1を加える。コントローラが第1のサブオブジェクトIO要求に対する応答メッセージを受信すると、第1のサブオブジェクトIO要求に対する応答メッセージが処理成功を示す処理結果を運搬する場合、コントローラはさらに、処理成功量を更新する必要があり、例えば、処理成功量に1を加え、または、第1のサブオブジェクトIO要求に対する応答メッセージが処理失敗を示す処理結果を運搬する場合、コントローラは処理成功量を更新しない。即ち、処理成功量は不変のままである。
同様に、第2のサブオブジェクトIO要求を記憶装置に送信した後、コントローラは、送信量に1を加える。コントローラが第2のサブオブジェクトIO要求に対する記憶装置クライアントにより応答された応答メッセージを受信した後、第2のサブオブジェクトIO要求に対する応答メッセージが処理成功を示す処理結果を運搬する場合、コントローラは、処理成功量に1を加える。任意選択で、第1のサブオブジェクトIO要求を記憶装置クライアントに送信した後、かつ、第1のサブオブジェクトIO要求に対する応答メッセージを受信した後、コントローラはまた、送信量を更新、例えば、送信量に1を加えてもよい。この場合、第1のサブオブジェクトIO要求に対する応答メッセージ内の処理結果に従って、処理成功量を更新するかどうかをさらに判定する必要がある。具体的な方式は上述の方式と同一であり、ここでは再度説明しない。同様に、第2のサブオブジェクトIO要求に対する応答メッセージを受信した後、コントローラは、送信量に1を加え、次いで、第2のサブオブジェクトIO要求の応答に従って、処理成功量を更新するかどうかを判定する。
大きなオブジェクトIO要求が分割されるケースでは、処理量閾値と処理すべき量を調節する方式は、特に、送信量と処理成功量が異なってカウントされることを除いて上述の方式と同一であり、ここでは再度説明しない。
大きなオブジェクトIO要求を分割することにより得られた複数のサブオブジェクトIO要求のうち何れか1つの処理結果が処理失敗を示す場合、当該大きなオブジェクトIO要求の処理は不成功であることに留意すべきである。この場合、コントローラは、処理失敗を示す応答メッセージで当該大きなオブジェクトIO要求の要求者に応答し、当該大きなオブジェクトIO書込み要求を分割することにより得られ記憶装置に書き込まれている他の小さなオブジェクトIOを削除するように記憶装置クライアントに指示する必要がある。処理失敗を示す任意のサブオブジェクトIO要求の応答メッセージを受信すると、コントローラはさらに、処理が不成功であったサブオブジェクトIO要求を記憶装置クライアントに再送してもよく、特定量の試行または特定の期間の後に受信された応答メッセージが最終結果である。
さらに、クライアント内で分割された後、大きなオブジェクトIO要求をまた、対応する処理のためにコントローラに送信してもよい。この場合、オブジェクトIO要求の分割サイズ閾値はクライアントにおいて事前に設定され、クライアントは、分割サイズ閾値に従って当該大きなオブジェクトIO要求を分割し、次いで、サブオブジェクトIO要求をコントローラに1つずつ送信する。コントローラに対して、クライアントにより分割により得られたサブオブジェクトIO要求または分割されていないオブジェクトIO要求が受信されたかどうかに関らず、その処理方式は図2、図3、図4の処理方式、および対応する説明と同一であり、ここでは再度説明しない。
上述のように、コントローラが受信された大きなオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するケースでは、コントローラはまた、特定のルールおよびオブジェクトIO要求またはサブオブジェクトIO要求の処理結果に従って処理量閾値と処理すべき量を動的に調節し、オブジェクト・ベース記憶システムにより受理されたオブジェクトIO要求の量を制御してもよい。これにより、コントローラにより受理されたオブジェクトIO要求の量がオブジェクトIO要求における記憶装置の処理能力を超過しないことが保証され、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システム全体の性能が保証される。
本発明の別の実施形態では、オブジェクト・ベース記憶システム内のサービス・フロー制御のための別の方法を開示する。当該方法では、分割により得られたサブオブジェクトIO要求に対して休止時間を開始して、オブジェクト・ベース記憶システム内の記憶装置クライアントと記憶装置に送信されるオブジェクトIO要求の量を調節し、特定のルールおよび記憶装置と記憶装置クライアントにより応答されたオブジェクトIO要求の処理結果に従って休止時間を動的に調節し、それにより、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの性能を保証する。図4は、当該方法の具体的な実装手続きを示す。当該方法は図1に示すオブジェクト・ベース記憶システムに適用可能であり、オブジェクト・ベース記憶システムの関連説明は再度説明しない。
ステップ401:コントローラが第1のオブジェクトIO要求を受信する。第1のオブジェクトIO要求はコントローラ内で事前に設定された分割サイズ閾値より大きい。分割サイズ閾値とは、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズのことをいう。当該ステップはステップ201と同様であり、ここでは詳細には説明しない。
ステップ403:コントローラが分割サイズ閾値を取得する。
ステップ405:第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きいとき、コントローラは、第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割する。分割により得られた各サブオブジェクトIO要求は分割サイズ閾値より大きくなく、同じ識別子を運搬する。一般に、コントローラは、分割サイズ閾値に従って第1のオブジェクトIO要求を分割する。例えば、分割サイズ閾値は1メガバイト(M)であり、第1のオブジェクトIO要求は3.7Mであり、コントローラは、分割サイズ閾値に従って第1のオブジェクトIO要求を4つのサブオブジェクトIO要求、即ち、第1のサブオブジェクトIO要求で1M、第2のサブオブジェクトIO要求で1M、第3のサブオブジェクトIO要求で1M、第4のサブオブジェクトIO要求で0.7Mに分割する。
ステップ407:コントローラが、分割により得られた第1のサブオブジェクトIO要求を記憶装置クライアントに送信し、休止時間を開始する。記憶装置クライアントが第1のサブオブジェクトIO要求を処理する方式は記憶装置クライアントがオブジェクトIO要求を処理するステップ203で説明した方式と同一であり、ここでは再度説明しない。
コントローラは、タイマを用いることによって休止時間を記録してもよい。休止時間を開始することが当該タイマを開始することであってもよい。休止時間を、タイマを用いることにより記録してもよい。時間間隔をカウント方式で記録してもよく、または、時間間隔をカウントダウン方式で記録してもよい。
ステップ409:休止時間が終了した後、コントローラが、分割により得られた第2のサブオブジェクトIO要求を記憶装置クライアントに送信し、コントローラが分割により得られた全ての複数のサブオブジェクトIO要求を記憶装置クライアントに送信するまで当該サイクルを繰り返す。記憶装置クライアントが第2のサブオブジェクトIO要求および別のサブオブジェクトIO要求を処理する方式は記憶装置クライアントが第1のサブオブジェクトIO要求または別のオブジェクトIO要求を処理する方式と同一であり、再度説明しない。
ステップ411:コントローラが、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信する。当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬する。当該処理結果は、処理成功または処理失敗を示す最終結果であってもよい。
ステップ409とステップ411の間の順序に厳密な限定はなく、当該2つは互いに影響しないことに留意すべきである。換言すれば、第1のサブオブジェクトIO要求に対して、コントローラが第1のサブオブジェクトIO要求を記憶装置クライアントに送信するステップは常に、コントローラがを第1のサブオブジェクトIO要求に対する応答メッセージを記憶装置クライアントから受信するステップの前である。しかし、コントローラが第2のサブオブジェクトIO要求を記憶装置クライアントに送信するステップとコントローラが第1のサブオブジェクトIO要求に対する応答メッセージを記憶装置クライアントから受信するステップの間の順序には要件はなく、当該2つのステップを交互に実装してもよく、これらは相互に独立である。例えば、コントローラは、第1のサブオブジェクトIO要求の送信に続く休止時間が終了した後に、第2のサブオブジェクトIO要求を記憶装置クライアントに送信する必要がある。しかし、第1のサブオブジェクトIO要求に対する応答メッセージを、第2のサブオブジェクトIO要求が送信される前または第2のサブオブジェクトIO要求が送信された後にコントローラにより受信してもよい。
ステップ413:事前に設定された条件が満たされたとき、コントローラが、(サブオブジェクトIO要求を含む)オブジェクトIO要求の受信された処理結果に従って休止時間を調節する。
ステップ413およびステップ411の間に厳密な順序関係はないことに留意すべきである。事前に設定された条件が満たされたとき、コントローラは、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信しているかもしれず、または、コントローラは、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信していないかもしれない。コントローラが第1のサブオブジェクトIO要求および第2のサブオブジェクトIO要求に対する記憶装置クライアントにより応答された応答メッセージを受信しているが、第3のサブオブジェクトIO要求および第4のサブオブジェクトIO要求の応答を受信していない可能性もある。この場合、コントローラは、別のオブジェクトIO要求または別のサブオブジェクトIO要求の応答された応答メッセージ、および当該応答メッセージ内の処理結果に従って休止時間を調節する。
このように、コントローラが、オブジェクトIO要求を処理のために記憶装置に送信するための時間間隔を制御することによって、処理のために当該記憶装置に送信されたオブジェクトIO要求の量を制御してもよく、これにより、処理のために当該記憶装置に送信されたオブジェクトIO要求の量が当該記憶装置の処理能力を超過せず、当該記憶装置上のオブジェクトIO要求の輻輳が防止され、オブジェクト・ベース記憶システム内のオブジェクトIO要求を処理する効率が高まり、オブジェクトIO要求の遅延が削減されることが保証される。
当該方法はステップ415をさらに含んでもよい。第1のオブジェクトIO要求を分割することにより得られた全てのサブオブジェクトIO要求の応答メッセージを受信したとき、コントローラは、第1のオブジェクトIO要求を分割することにより得られた全てのサブオブジェクトIO要求の応答メッセージで運搬される処理結果に従って、第1のオブジェクトIO要求に対する応答メッセージで第1のオブジェクトIO要求を送信した要求者に応答する。第1のオブジェクトIO要求に対する応答メッセージは第1のオブジェクトIO要求の処理結果を運搬する。第1のオブジェクトIO要求を分割することにより得られた全てのサブオブジェクトIO要求の応答メッセージが処理成功を示す処理結果を運搬するとき、コントローラは、処理成功を示す結果を運搬する第1のオブジェクトIO要求に対する応答メッセージで第1のオブジェクトIO要求の要求者に応答し、そうでなければ、コントローラは、処理失敗を示す結果を運搬する第1のオブジェクトIO要求に対する応答メッセージで第1のオブジェクトIO要求の要求者に応答する。
第1のオブジェクトIO要求に対する応答メッセージで第1のオブジェクトIO要求の要求者に応答するとき、コントローラは処理すべき量を更新する。上述の方法と同様に、コントローラは処理すべき量から1を減ずる。具体的な処理方法は再度説明しない。
コントローラがオブジェクトIO要求およびサブオブジェクトIO要求の受信した処理結果に従って休止時間を動的に調節することを実装するために、コントローラは、当該オブジェクトIO要求および当該サブオブジェクトIO要求の処理結果の統計を収集し、当該処理結果を分析する必要がある。本発明の当該実施形態では、コントローラは、当該オブジェクトIO要求および当該サブオブジェクトIO要求の処理成功率に従って、動的に休止時間を調節する。コントローラはまた、当該オブジェクトIO要求および当該サブオブジェクトIO要求の処理失敗率に従って休止時間を動的に調節してもよく、または、コントローラはまた、オブジェクトIO要求の処理成功率または処理失敗率、および別の因子に従って休止時間を動的に調節してもよいことは理解されうる。
動的な調節を、特定の時間ルールに従って実施してもよく、または、休止時間が特定の値に達した後に実施してもよい。本発明の当該実施形態を、コントローラが休止時間を定期的に調節する例を用いることによって説明する。
オブジェクトIO要求およびサブオブジェクトIO要求の受信した処理結果に従ってコントローラが休止時間を定期的に調節することを実装するために、送信量と処理成功量をコントローラに記録する必要がある。送信量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトIO要求およびサブオブジェクトIO要求の量のことをいい、処理成功量とは、コントローラにより記憶装置クライアントに送信されたオブジェクトIO要求およびサブオブジェクトIO要求の間で処理に成功したオブジェクトIO要求およびサブオブジェクトIO要求の量のことをいう。送信量を、コントローラ内のカウンタを設定することにより記録してもよく、処理成功量をまたコントローラ内のカウンタを設定することにより記録してもよい。
送信量を2つの方式で更新してもよい。1方式では、コントローラが1つのオブジェクトIO要求を記憶装置クライアントに送信した後に、送信量が更新される。例えば、現在記録されている送信量に1を加える。別の方式では、コントローラがオブジェクトIO要求を記憶装置クライアントに送信し記憶装置クライアントにより応答されたオブジェクトIO要求に対する応答メッセージを受信した後に、送信量が更新される。例えば、現在記録されている送信量に1を加える。第2の方式では、応答された応答メッセージが処理成功を示す応答メッセージまたは処理失敗を示す応答メッセージであるかどうかに関らず、1つの応答メッセージが受信された場合に現在記録されている送信量に1を加える必要がある。コントローラがサブオブジェクトIO要求を記憶装置クライアントに送信するときの更新方式は同一である。即ち、1つのサブオブジェクトIO要求を記憶装置クライアントに送信した後、コントローラは現在記録されている送信量に1を加えるか、または、1つのサブオブジェクトIO要求を記憶装置クライアントに送信した後および当該サブオブジェクトIO要求に対する記憶装置クライアントにより応答される応答メッセージを受信した後、コントローラは、現在記録されている送信量に1を加える。処理成功量を更新する方式は、1つのオブジェクトIO要求またはサブオブジェクトIO要求に対する記憶装置クライアントにより応答される応答メッセージを受信したとき、当該応答メッセージで運搬される処理結果が処理成功を示す場合、コントローラは処理成功量を更新、例えば、現在記録されている処理成功量に1を加えるというものである。事前に設定された期間が終了すると、コントローラは、送信量の現在値および処理成功量の現在値を取得し、処理成功率を計算し、計算後に取得された処理成功率を第1の調節係数として用いることによって休止時間を調節する。処理成功率は、処理成功量の送信量に対する比率であってもよい。
コンスタントな観察と実験を通じて、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの能力は、送信量および成功率とともに変化することが分かる。したがって、本発明の当該実施形態では、別の調節係数に従って、成功率に従って調節を実施することにより得られた休止時間を調節することを提供する。当該調節係数は処理成功率に反比例する。係数の間の関係をより明確に説明するために、処理成功率を第1の調節係数と称し、休止時間を調節するための調節係数を第3の調節係数と称する。第3の調節係数は定数であり、第3の調節係数の値は第1の調節係数の値と反比例する。
さらに、オブジェクト・ベース記憶システムの休止時間を制限なしに増大または減少させることはできない。したがって、オブジェクト・ベース記憶システムの休止時間を制限する必要がある。休止時間の上限および下限を、コントローラ内で事前に設定してもよい。第1の調節係数または第1の調節係数および第3の調節係数に従って調節を実施することによってコントローラにより得られた休止時間は、当該休止時間の事前に設定された上限と事前に設定された下限との間にある必要がある。第1の調節係数または第1の調節係数および第3の調節係数に従ってコントローラによって計算することによって得られた休止時間が当該休止時間の事前に設定された上限と事前に設定された下限との間にない場合、計算後に取得された休止時間を休止時間の上限と下限に従って修正する必要がある。例えば、第1の調節係数または第1の調節係数および第3の調節係数に従ってコントローラによって計算することによって得られた休止時間が休止時間の設定された上限より大きい場合、当該取得された休止時間は、休止時間の上限に等しくなるように調節され、または、第1の調節係数または第1の調節係数および第3の調節係数に従ってコントローラによって計算することによって得られた休止時間が休止時間の設定された下限より小さい場合、当該取得された休止時間は休止時間の下限に等しくなるように調節される。
以下では、具体的な例を用いることによって、事前に設定された期間に従って休止時間をどのように調節するかを説明する。
当該方法の実施形態では、期間は1分に事前に設定され、コントローラに格納される。当該期間を必要に応じて別の値に設定してもよいことは当業者には理解されうる。例えば、当該期間は30秒に設定される。当該期間を、コントローラ内のタイマを設定することにより記録してもよい。事前に設定された期間が終了したとき、コントローラは、現在の送信量と現在の処理成功量を取得し休止時間を調節するようにトリガされる。換言すれば、本発明の当該実施形態では、コントローラは休止時間を毎分調節する。
以下では、例を用いることによって、事前に設定された期間に従って休止時間を調節するための方法を説明する。
t=(t+Constant)/r×μである。tは調節後に取得された新たな休止時間であり、tは休止時間の現在値であり、rは第1の調節係数の現在値であり、μは第1の調節係数の値に対する第3の調節係数の値である。μはrに反比例する。即ち、大きな第1の調節係数rは小さな第3の調節係数μを示し、小さな第1の調節係数rは大きな第3の調節係数μを示す。rは処理成功量の現在値の送信量の現在値に対する割合、即ち、r=(p/q)×100%である。pは処理成功量の現在値であり、qは送信量の現在値である。
当該実施形態では、休止時間は区分的関数を用いることによって調節される。計算式は以下の通りである。
t=tMaxDelay(r<0.2);
t=(t+10)/r×1.6(0.2≦r<0.5);
t=(t+10)/r×1.4(0.5≦r<0.8);
t=(t+10)/r×1.0(0.8≦r<0.95);
t=(t+0)/r×0.9(t≧tThreshold、かつ、r≧0.95);
t=tMinDelay(t<tThreshold、かつ、r≧0.95)
MinDelayは休止時間の下限であり、tMaxDelayは休止時間の上限であり、休止時間の上限と下限は事前に設定される。当該実施形態では、休止時間の下限は0に設定される。
以下では、具体的な例を用いることによって、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するための方法の手続きを例示的に説明する。図5は、当該方法のプロセスが適用可能であるオブジェクト・ベース記憶システムを示し、図6は当該方法の手続きを示す。
図5に示すオブジェクト・ベース記憶システムはコントローラ501、IPディスク・クライアント503、およびIPディスク・クラスタ504を備える。換言すれば、図5に示すオブジェクト・ベース記憶システム内の記憶装置はIPディスクであり、対応する記憶装置クライアントはIPディスク・クライアントである。コントローラ501はIPディスク・クライアント503に接続され、コントローラ501とIPディスク・クライアント503は1つのサーバに展開される。当該サーバがHTTPサーバであってもよい。IPディスク・クライアント503は、IPディスク・クラスタ504内の幾つかのIPディスク(504−1、504−2、504−3、および504−4)に接続される。コントローラ501はクライアント502にさらに接続される。クライアント502はオブジェクトIO要求をコントローラ501に送信する。
コントローラ501は処理量閾値Mおよび処理すべき量Nを格納する。処理量閾値Mとは、オブジェクト・ベース記憶システムにより現在処理できるオブジェクトIO要求の最大量のことをいい、処理すべき量Nはオブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量である。本発明の当該実施形態では、Mの現在値は2000であり、Nの現在値は1500である。即ち、M=2000、およびN=1500である。
コントローラ501は、休止時間tをさらに格納する。休止時間tは、コントローラ501により2つのオブジェクトIO要求をIPディスク・クライアントに送信する間の時間間隔である。本発明の当該実施形態では、tの現在値は100ミリ秒である。即ち、t=100ミリ秒である。
コントローラ501は期間Tをさらに格納する。コントローラはMおよびtの値を当該期間に従って更新する。本発明の当該実施形態では、Tは30秒である。
コントローラ501は、送信量Pおよび処理成功量Qをさらに格納する。送信量Pとは、コントローラ501によりIPディスク・クライアントに送信されたオブジェクトIO要求の量のことをいい、処理成功量Qとは、コントローラ501によりIPディスク・クライアントに送信されたオブジェクトIO要求の間で処理に成功したオブジェクトIO要求の量のことをいう。本発明の当該実施形態では、Pの現在値は2800であり、Qの現在値は2400である。即ち、P=2800、およびQ=2400である。
コントローラ501は、オブジェクトIO要求の分割サイズ閾値をさらに格納する。本発明の当該実施形態では、分割サイズ閾値は1Mである。
コントローラは、処理量閾値Mおよび休止時間tの調節式をさらに格納する。処理量閾値Mの調節式は以下の通りである。
M=MMin(r<0.2);
M=M×r×0.6(0.2≦r<0.6);
M=M×r×0.8(0.6≦r<0.8);
M=M×r×1.0(0.8≦r<0.95);
M=M×r×1.1(M<MMax、かつ、r≧0.95);
M=MMax(M=MMax、かつ、r≧0.95)
Min=200、MMax=3000、かつ、r=(Q/P)×100%
休止時間tの調節式は以下の通りである。
t=tMaxDelay(r<0.2);
t=(t+15)/r×1.6(0.2≦r<0.6);
t=(t+15)/r×1.4(0.6≦r<0.8);
t=(t+15)/r×1.0(0.8≦r<0.95);
t=(t+0)/r×0.9(t≧tThreshold、かつ、r≧0.95);
t=tMinDelay(t<tThreshold、かつ、r≧0.95)
MinDelay=0、tMaxDelay=200、かつ、r=(Q/P)×100%
オブジェクト・ベース記憶システム内のサービス・フロー制御を実装するための方法の手続きは以下の通りである。
ステップ601:コントローラ501が、クライアント502により送信された第1のオブジェクトIO要求を受信する。第1のオブジェクトIO要求のサイズは3.5Mである。
ステップ602:コントローラ501が、MおよびNの現在値(M=2000、およびN=1500)を取得し、MおよびNの値を比較する。
ステップ603:N<Mである場合、コントローラ501が、処理すべき量Nを更新し、分割サイズ閾値(1M)に従って第1のオブジェクトIO要求を分割する。処理すべき量Nの現在値Nは1501に更新され、第1のオブジェクトIO要求は4つのサブオブジェクトIO要求に分割される。当該4つのサブオブジェクトIO要求はそれぞれ、第1のサブオブジェクトIO要求(1M)、第2のサブオブジェクトIO要求(1M)、第3のサブオブジェクトIO要求(1M)、および第4のサブオブジェクトIO要求(0.5M)である。当該4つのサブオブジェクトIO要求は同じ識別子を運搬する。
比較結果がN>Mである場合、コントローラ501は、第1のオブジェクトIO要求を送信したクライアント201にシステム・ビジー応答メッセージで応答する。この場合、コントローラ501は、処理すべき量Nを更新せず、第1のオブジェクトIO要求を破棄する。
ステップ604:コントローラ501は、第1のサブオブジェクトIO要求をIPディスク・クライアント503に送信し、休止時間を開始する。第1のサブオブジェクトIO要求を受信した後、IPディスク・クライアント503は、事前に設定された鍵−値アルゴリズムに従って、第1のサブオブジェクトIO要求を処理のためにIPディスク504−3に送信する。第1のサブオブジェクトIO要求を処理した後、IPディスク504−3は第1のサブオブジェクトIO要求に対する応答メッセージでIPディスク・クライアント503に応答する。当該応答メッセージは、第1のサブオブジェクトIO要求の処理に成功したことを示す処理結果を運搬する。IPディスク・クライアント503は受信された応答メッセージでコントローラ501に応答する。
ステップ605:休止時間が終了した後、即ち、コントローラ501が第1のサブオブジェクトIO要求をIPディスク・クライアント503に送信した後100ミリ秒で、コントローラ501は、第2のサブオブジェクトIO要求をIPディスク・クライアント503に送信し、休止時間を開始する。同様に、第2のサブオブジェクトIO要求を受信した後、IPディスク・クライアント503は、事前に設定された鍵−値アルゴリズムに従って、第1のサブオブジェクトIO要求を処理のためにIPディスク504−2に送信する。IPディスク・クライアント503は、サブオブジェクトIO要求内のメタデータのような情報に従っておよび当該鍵−値アルゴリズムに従って具体的なIPディスクを決定する。第1のオブジェクトIO要求を分割することにより得られた4つのサブオブジェクトIO要求を、処理のために同一のIPディスクに送信してもよく、または、処理のために異なるIPディスクに送信してもよい。
ステップ606:休止時間が終了した後、コントローラ501は、第3のサブオブジェクトIO要求をIPディスク・クライアント503に送信し、休止時間を開始する。IPディスク・クライアント503を用いて第3のサブオブジェクトIO要求を処理する方法は上述したものと同じであり、ここでは再度説明しない。
ステップ607:休止時間が終了した後、コントローラ501は、第4のサブオブジェクトIO要求をIPディスク・クライアント503に送信する。IPディスク・クライアント503を使用して第4のサブオブジェクトIO要求を処理する方法は上述したものと同じであり、ここでは再度説明しない。
ステップ608:コントローラ501が、第1のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2801に更新され、当該応答メッセージが第1のサブオブジェクトIO要求の処理に成功したことを示す応答メッセージを運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2401に更新される。
ステップ608およびステップ605乃至ステップ607の間には厳密な時間順序はなく、ステップ808をステップ804の後に実施する必要がある。
ステップ609:コントローラ501が、第2のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2802に更新される。当該応答メッセージが第2のサブオブジェクトIO要求の処理に成功したことを示す応答メッセージを運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2402に更新される。
ステップ609およびステップ606乃至ステップ608の間には厳密な時間順序はなく、ステップ609をステップ605の後に実施するだけでよい。
ステップ610:事前に設定された期間が終了したとき、コントローラ501は、処理量閾値Mおよび休止時間tの値を(サブオブジェクトIO要求を含む)オブジェクトIO要求の受信された処理結果に従って調節する。
コントローラ501は、送信量Pの現在値および処理成功量Qの現在値を取得し、現在の成功率を計算する。したがって、r=(Q/P)×100%=(2402/2802)×100%=0.86;
M=M×r×1.0=2000×0.86×1.0=1720;および
t=(t+15)/r×1.0=(100+15)/0.86×1.0=134
である。
処理量閾値Mおよび休止時間tが調節された後、コントローラ501により再度取得された処理量閾値Mおよび休止時間tの現在値は当該調節後の値である。したがって、M=1720、およびt=134ミリ秒である。
事前に設定された期間が終了したとき、コントローラ501が、送信量Pの現在値および処理成功量Qの現在値を(サブオブジェクトIO要求を含む)オブジェクトIO要求の取得された処理結果に従ってを取得し、対応する計算および調節を実施するのであれば、ステップ610および他のステップの間には厳密な時間順序はない。
ステップ611:コントローラ501が、第3のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2803に更新される。当該応答メッセージが第3のサブオブジェクトIO要求の処理に成功したことを示す応答メッセージを運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2403に更新される。
同様に、ステップ611をステップ606の後に実施するだけでよく、ステップ611およびステップ607乃至ステップ610の間には厳密な時間順序はない。
ステップ612:コントローラ501が、第4のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2804に更新される。当該応答メッセージが第4のサブオブジェクトIO要求の処理に成功したことを示す応答メッセージを運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2404に更新される。
同様に、ステップ612をステップ607の後に実施するだけでよく、ステップ612およびステップ608乃至ステップ611の間には厳密な時間順序はない。
ステップ613:コントローラ501が、第1のオブジェクトIO要求を分割することにより得られた4つのサブオブジェクトIO要求全ての応答メッセージが受信され、全ての応答メッセージが処理成功を示す処理結果を運搬すると判定する。コントローラ501は第1のオブジェクトIO要求に対する応答メッセージでクライアント502に応答する。第1のオブジェクトIO要求に対する応答メッセージは処理成功を示す情報を運搬する。コントローラ501は処理すべき量Nを更新する。処理すべき量Nの現在値Nは1500に更新される。
コントローラ501により受信された第1のオブジェクトIO要求のサブオブジェクトIO要求に対する応答メッセージのうち1つのサブオブジェクトIO要求に対する応答メッセージが処理失敗を示す情報を運搬する場合、コントローラ501は処理失敗を示す応答メッセージでクライアント502に応答する。この場合、コントローラ501はまた、処理すべき量Nを更新する必要がある。処理すべき量Nの現在値Nは1500に更新される。
換言すれば、コントローラ501がオブジェクトIO要求に対する応答メッセージでクライアント502に応答するならば、当該オブジェクトIO要求の処理に成功したかまたは不成功であったかどうかに関らず、処理すべき量Nを更新する必要がある。処理すべき量Nの現在値Nから1が引かれる。確かに、コントローラ501が処理失敗を示す応答メッセージでクライアント502に応答する前に、コントローラはさらに、当該オブジェクトIO要求を処理のためにIPディスク・クライアント503に特定の時間量だけ送信してもよい。
第1のオブジェクトIO要求を分割することにより得られた任意のサブオブジェクトIO要求に対する応答された応答メッセージで運搬される最終結果が処理失敗を示す情報であるとき、処理失敗を示す応答メッセージでクライアント502に応答することに加えて、コントローラはさらに、第1のオブジェクトIO要求を分割することにより得られた複数のサブオブジェクトIO要求に関する情報を削除し、後続の処理を実施しないように記憶装置クライアント503および記憶装置504に指示する必要がある。具体的な処理方式は先行技術の方式と同一であり、ここでは再度詳細には説明しない。
ステップ614:コントローラ501が、クライアント502により送信された第2のオブジェクトIO要求を受信する。第2のオブジェクトIO要求のサイズは0.8Mである。
ステップ615:コントローラ501がMおよびNの現在値(M=1720、およびN=1500)を取得し、MおよびNの値を比較する。
ステップ616:N<Mである場合、コントローラ501が、処理すべき量Nを更新し、第2のオブジェクトIO要求をIPディスク・クライアント503に送信する。処理すべき量Nの現在値Nは1501に更新される。第2のオブジェクトIO要求が分割サイズ閾値より小さいので、この場合、コントローラ501は第2のオブジェクトIO要求を分割せず、第2のオブジェクトIO要求をIPディスク・クライアント503に送信する。
ステップ617:コントローラ501が、第2のオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信する。コントローラ501が送信量Pを更新する。送信量の現在値Pは2805に更新される。当該応答メッセージが、第2のオブジェクトIO要求の処理に成功したことを示す応答メッセージを運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2405に更新される。
ステップ618:コントローラ501が、クライアント502により送信された第3のオブジェクトIO要求を受信する。第3のオブジェクトIO要求のサイズは0.7Mである。
ステップ618とステップ617の間に厳密な順序はない。
ステップ619:コントローラ501が、MおよびNの現在値(M=1720、およびN=1501)を取得し、MおよびNの値を比較する。
ステップ620:N<Mである場合、コントローラ501が、処理すべき量Nを更新し、第3のオブジェクトIO要求をIPディスク・クライアント503に送信する。処理すべき量Nの現在値Nは1502に更新される。第3のオブジェクトIO要求が分割サイズ閾値より小さいので、この場合、コントローラ501は第3のオブジェクトIO要求を分割せず、第3のオブジェクトIO要求をIPディスク・クライアント503に送信する。
ステップ621:コントローラ501が、第3のオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信する。コントローラ501が送信量Pを更新する。送信量の現在値Pは2806に更新される。当該応答メッセージが、第3のオブジェクトIO要求の処理が不成功であったことを示す応答メッセージを運搬する場合、コントローラ501は処理成功量Qを更新しない。処理成功量Qの現在値は不変のままである。即ち、Q=2405である。
類推により、次の期間が終了すると、コントローラ501は、送信量Pの現在値と処理成功量Qの現在値を取得し、現在の成功率を計算し、次いで、処理量閾値Mと休止時間tを現在の成功率に従って調節する。
上述の幾つかのステップの間の時間順序には厳密な要件はないことに留意すべきである。本発明の当該実施形態における方法の手続きは例示的に説明されたにすぎず、本発明を限定しようとするものではない。例えば、コントローラ501が第3のサブオブジェクトIO要求をIPディスク・クライアント503に送信する前に、コントローラ501は第1のサブオブジェクトIO要求に対する応答メッセージを受信している。別の例として、コントローラ501が第4のサブオブジェクトIO要求をIPディスク・クライアント503に送信する前に、事前に設定された期間が終了する。この場合、コントローラ501は、パラメータの現在値に従ってMとtを調節する。コントローラ501が第2のオブジェクトIO要求と第3のオブジェクトIO要求を受信した後に当該期間が終了し、次いで、コントローラ501がパラメータの現在値に従ってMとtを調節することも可能である。
本発明の当該実施形態により提供する方法を用いることによって、コントローラは、オブジェクトIO要求の処理結果に従って処理量閾値と休止時間を定期的に調節して、処理のために記憶装置クライアントおよび記憶装置に送信されるオブジェクトIO要求の量、および時間間隔を調節する。これにより、処理のために記憶装置に送信されたオブジェクトIO要求の量は当該記憶装置の処理能力を超過せず、当該記憶装置で生ずる輻輳が回避され、それによりオブジェクト・ベース記憶システムの処理性能が高まり、遅延が削減されることを保証することができる。
本発明の1実施形態はさらに、以上の方法を実装するためのコントローラを提供する。図7はコントローラの具体的な構造を示す。
図7に示すように、コントローラは格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備える。
受信モジュール703は、クライアントを用いることによってユーザにより送信されたオブジェクトIO要求を受信し、当該受信されたオブジェクトIO要求に対する応答メッセージでクライアントに応答するように構成される。当該応答メッセージは、当該オブジェクトIO要求の処理に成功したかまたは不成功であったことを示す処理結果を運搬する。受信モジュール703はさらに、処理モジュール702のコマンドを受信した後、システム・ビジー応答メッセージまたは拒否応答メッセージでクライアントに応答するように構成される。
送信モジュール704は、オブジェクトIO要求を記憶装置クライアントに送信し、記憶装置クライアントにより応答されるオブジェクトIO要求に対する応答メッセージを受信するように構成される。当該応答メッセージは、処理成功を示す処理結果または処理失敗を示す処理結果を含む、当該オブジェクトIO要求の処理結果を運搬する。
格納モジュール701は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の現在の最大量である、処理すべき量の閾値と、オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の現在の量である、処理すべき量と、コントローラにより(サブオブジェクトIO要求を含む)2つのオブジェクトIO要求を記憶装置クライアントに送信するステップの間の現在の時間間隔である、休止時間と、コントローラが処理量閾値と休止時間を更新するための期間である、期間と、コントローラにより記憶装置クライアントに送信されている(サブオブジェクトIO要求を含む)オブジェクトIO要求の量である、送信量と、その処理結果が処理成功を示す、コントローラにより記憶装置クライアントに送信された(サブオブジェクトIO要求を含む)オブジェクトIO要求のうち(サブオブジェクトIO要求を含む)オブジェクトIO要求の量である、処理成功量と、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズである、分割サイズ閾値と、事前に設定された条件が満たされたとき処理すべき量の閾値を調節するために使用される、処理すべき量の閾値の調節式と、事前に設定された条件が満たされたとき休止時間を調節するために使用される、休止時間の調節式とを含む、コントローラにより要求される情報を格納するように構成される。
以上の情報は、サービス要件に従って選択されてもよく、必ずしも全体が選択されるわけではない。例えば、大きなオブジェクトIO要求(そのサイズが分割サイズ閾値より大きいオブジェクトIO要求)をコントローラに送信する前に、クライアントが当該オブジェクトIO要求を分割するケースでは、分割サイズ閾値はクライアントに格納され、コントローラの格納モジュールは分割サイズ閾値に関する情報を格納する必要はない。さらに、オブジェクトIO要求の具体的な量が記憶装置クライアントに送信された後に処理すべき量の閾値または休止時間が更新された場合、当該格納モジュールは当該期間に関する情報を格納する必要はない。確かに、ユーザはまた、必要に応じて他の情報を格納モジュール701に格納してもよく、ここでは例を用いることによって再度説明しない。
処理モジュール702は、判定、計算、および比較のような関連処理を実行するように構成される。例えば、処理モジュール702は以下の動作を実装するように構成される。
処理モジュール702がオブジェクトIO要求を受信モジュール703から取得する。
処理モジュール702が必要なデータ情報を格納モジュール701から取得する。
処理モジュール702は、当該格納モジュールから取得された処理すべき量の閾値の現在値および処理すべき量の現在値を比較し、それらの間のサイズ関係を決定する。処理すべき量の現在値が処理すべき量の閾値の現在値より小さいとき、処理モジュール702は、処理すべき量の現在値を更新し、対応する処理をオブジェクトIO要求に対して実施し、処理すべき量の現在値が処理すべき量の閾値の現在値以上であるとき、処理モジュール702は、受信モジュール703を用いることによって、拒否応答メッセージまたはシステム・ビジー応答メッセージでクライアントに応答する。
オブジェクトIO要求のサイズが取得された分割サイズ閾値より大きいとき、処理モジュール702は、分割サイズ閾値に従って当該オブジェクトIO要求を複数のサブオブジェクトIO要求に分割する。分割により得られた複数のサブオブジェクトIO要求の各々は分割サイズ閾値より大きくないサイズを有し、同じ識別子を運搬する。
オブジェクトIO要求は、送信モジュール704を用いることによって記憶装置クライアントに送信される。処理モジュール702がさらに、1つのオブジェクトIO要求を記憶装置クライアントに送信した後に休止時間を開始し、休止時間が終了した後に、次のオブジェクトIO要求を記憶装置クライアントに送信してもよい。あるいは、処理モジュール702は、分割により得られたサブオブジェクトIO要求に対してのみ休止時間を開始する、即ち、1つのサブオブジェクトIO要求を送信した後に休止時間を開始し、休止時間が終了した後、次のサブオブジェクトIO要求を記憶装置クライアントに送信する。
処理モジュール702はさらに、送信モジュール704から、オブジェクトIO要求に対する記憶装置クライアントにより応答される応答メッセージを取得し、受信モジュール703を用いることによって、当該オブジェクトIO要求に対する応答メッセージでクライアントに応答するように構成される。1つのオブジェクトIO要求を複数のサブオブジェクトIO要求に分割した後、および、当該オブジェクトIO要求の全てのサブオブジェクトIO要求の応答メッセージを取得した後、処理モジュール702は、全てのサブオブジェクトIO要求に対する応答メッセージで運搬される処理結果に従って、当該オブジェクトIO要求に対する応答メッセージでクライアントに応答する。当該オブジェクトIO要求の全てのサブオブジェクトIO要求に対する応答メッセージが処理成功を示す応答メッセージを運搬する場合、処理モジュール702は、クライアントに、当該オブジェクトIO要求の処理に成功したことを示す応答メッセージで応答し、そうでなければ、処理モジュール702は、クライアントに、当該オブジェクトIO要求の処理が不成功であったことを示す応答メッセージで応答する。
処理モジュール702はさらに、送信量と処理成功量の値を更新するように構成される。送信量は、処理モジュール702が、送信モジュール704を用いることによって、オブジェクトIO要求またはサブオブジェクトIO要求を記憶装置クライアントに送信した後に更新されてもよく、または、送信モジュール704を用いることによって当該オブジェクトIO要求または当該サブオブジェクトIO要求に対する1つまたは複数の応答メッセージが取得された後に更新されてもよい。処理成功量は、処理モジュール702が、送信モジュール704を用いることによって、当該オブジェクトIO要求または当該サブオブジェクトIO要求に対する1つまたは複数の応答メッセージを取得したときに更新され、当該1つまたは複数の応答メッセージは処理成功を示す処理結果を運搬する。詳細な説明および例は具体的な更新方法に対して上で与えられており、ここでは再度説明しない。
処理モジュール702はさらに、事前に設定された期間が終了したかどうかを判定し、当該事前に設定された期間が終了したとき、処理量閾値と休止時間を調節するように構成される。
処理モジュール702はさらに、格納された式に従って処理量閾値および/または休止時間を調節するように構成される。詳細な説明および例は具体的な調節方法に関して上で与えられており、ここでは再度説明しない。
記憶装置に送信されるオブジェクトIO要求の量が増大し性能が低下したとき、コントローラは、特定のアルゴリズムを用いることによって、オブジェクトIO要求に対する受信された応答メッセージに従って処理量閾値および/または休止時間の値を調節してもよい。オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量が処理量閾値以上であるとき、コントローラは、拒否応答メッセージまたはビジー応答メッセージで要求者に直接応答し、当該受信されたオブジェクトIO要求を破棄する。
格納された処理量閾値を用いることによって、コントローラは、記憶装置クライアントを用いることによって処理のために記憶装置に送信されるオブジェクトIO要求の量を制御してもよい。これにより、当該記憶装置に送信されたオブジェクトIO要求の量が当該記憶装置の能力を超過せず、その結果、当該記憶装置の全ての処理リソースおよびキャッシュ・リソースが当該オブジェクトIO要求を効果的に処理するために使用され、それにより、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システム全体の性能と成功率が高まることが保証される。コントローラはさらに、格納された休止時間を用いることによって、記憶装置クライアントを用いることによってオブジェクトIO要求またはサブオブジェクトIO要求を当該記憶装置に送信するための時間間隔を調節してもよく、その結果、当該記憶装置は待ち行列内のオブジェクトIO要求を処理するための十分な時間を有し、それにより、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの性能と成功率が高まる。
本発明の当該実施形態により提供するコントローラは、オブジェクト・ベース記憶システム内のサービス・フロー制御を実装するように構成され、格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備える。
特に、受信モジュール703は、第1のオブジェクトIO要求を受信し、第1のオブジェクトIO要求を処理モジュール702に送信するように構成される。
第1のオブジェクトIO要求を受信した後、処理モジュール702は処理量閾値と処理すべき量を格納モジュール701から取得する。処理量閾値はオブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値であり、処理すべき量はオブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量である。
処理すべき量が処理量閾値より小さい場合、処理モジュール702はさらに、第1のオブジェクトIO要求を送信モジュール704に送信し、格納モジュール701内の処理すべき量を更新するように構成される。
送信モジュール704は、第1のオブジェクトIO要求を記憶装置クライアントに送信し、第1のオブジェクトIO要求に対して記憶装置クライアントにより応答された第1の応答メッセージを受信し、第1の応答メッセージを処理モジュール702に送信するように構成される。第1の応答メッセージは第1のオブジェクトIO要求の処理結果を運搬する。
処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って格納モジュール701内の処理量閾値を調節するように構成される。
処理すべき量が処理量閾値以上である場合、処理モジュール702はさらに、拒否応答メッセージまたはビジー応答メッセージで第1のオブジェクトIO要求の要求者に応答するように構成される。
処理モジュール702はさらに、第1のオブジェクトIO要求を送信モジュール704に送信した後に休止時間を開始し、休止時間が終了した後に第2のオブジェクトIO要求を送信モジュール704に送信するように構成される。
処理モジュール702はさらに、第1の応答メッセージを受信した後、格納モジュール704内の送信量を更新し、第1の応答メッセージで運搬される処理結果が処理成功を示す場合、格納モジュール704内の処理成功量を更新するように構成される。送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量であり、処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
処理モジュール702はさらに、第1のオブジェクトIO要求が分割サイズ閾値より大きいとき、第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割し、送信モジュール704を用いることによって、分割によって得られた第1のサブオブジェクトIO要求を記憶装置クライアントに送信し、休止時間を開始し、休止時間が終了した後に送信モジュール704を用いることによって第2のサブオブジェクトIO要求を送信するように構成される。各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬し、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズ閾値である。
受信モジュール704は、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、当該応答メッセージを処理モジュール702に送信する。当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬する。処理モジュール702はさらに、第1のサブオブジェクトIO要求の処理結果を受信し、送信量を更新するように構成される。送信量は記憶装置クライアントに送信されたオブジェクトIO要求の量である。当該処理結果が処理成功を示す場合、処理モジュール702はさらに、処理成功量を更新するように構成される。処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
当該事前に設定された条件が満たされたとき、処理モジュール702が、格納モジュール701内の処理量閾値をオブジェクトIO要求の受信された処理結果に従って調節することは特に、処理モジュール702が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、当該処理成功率を第1の調節係数として用いることによって処理量閾値を調節することである。
処理モジュール702はさらに、第2の調節係数に従って、第1の調節係数に従って調節を実施した後に取得された量閾値を調節するように構成される。第2の調節係数の値は第1の調節係数の値に比例する。
格納モジュール701は当該量閾値の上限および下限をさらに格納する。
処理モジュール702はさらに、処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された処理量閾値の値が処理量閾値の上限と下限の間にあるようにするように構成される。
処理モジュール702はさらに、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、当該処理成功率を第1の調節係数として用いることによって休止時間を調節するように構成される。
処理モジュール702はさらに、第3の調節係数と第1の調節係数に従って休止時間を調節するように構成される。第3の調節係数の値は第1の調節係数の値と反比例する。
格納モジュール701は休止時間の上限および下限をさらに格納する。
処理モジュール702はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
処理モジュール702はさらに、受信モジュール703を用いることによってオブジェクトIO要求を送信した要求者に応答メッセージで応答し、処理すべき量を更新するように構成される。当該応答メッセージはオブジェクトIO要求の最終処理結果を運搬する。
本発明の1実施形態はさらに、コントローラの別の具体的な機能を提供する。コントローラは格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備える。
受信モジュール703は、第1のオブジェクトIO要求を受信し、第1のオブジェクトIO要求を処理モジュール702に送信するように構成される。
処理モジュール702は、第1のオブジェクトIO要求を受信した後、分割サイズ閾値を格納モジュール701から取得するように構成される。分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズである。
処理モジュール702はさらに、第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きいとき、第2のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割し、第1のサブオブジェクトIO要求を送信モジュール704に送信し、休止時間を開始するように構成される。各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬する。
送信モジュール704はさらに、第1のサブオブジェクトIO要求をコントローラに接続された記憶装置クライアントに送信し、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、第1のサブオブジェクトIO要求に対する応答メッセージを処理モジュール702に送信するように構成される。当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬する。
処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するように構成される。
処理モジュール702はさらに、休止時間が開始された後、休止時間が終了した後に当該送信モジュールを用いることによって、第2のサブオブジェクトIO要求を記憶装置クライアントに送信し、複数のサブオブジェクトIO要求が記憶装置クライアントに送信されるまで、休止時間を開始するステップの実行に戻るように構成される。
処理モジュール702はさらに、第1のサブオブジェクトIO要求に対する応答メッセージを受信した後、送信量を更新するように構成される。送信量は、送信モジュール704を用いることによって処理モジュール702により記憶装置クライアントに送信されたオブジェクトIO要求の量である。第1のサブオブジェクトIO要求に対する応答メッセージで運搬される第1のオブジェクトIO要求の処理結果が処理成功を示す場合、処理モジュール702はさらに、処理成功量を更新するか、または、第1のサブオブジェクトIO要求に対する応答メッセージで運搬される第1のオブジェクトIO要求の処理結果が最終処理失敗を示す場合、処理成功量を不変に保つように構成される。処理成功量は記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
処理モジュール702がさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するように構成されることは特に、処理モジュール702が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、当該処理成功率を第1の調節係数として用いることによって休止時間を調節することである。
処理モジュール702はさらに、第3の調節係数に従って、調節が実施された後に取得された休止時間を第1の調節係数に従って調節するように構成される。第3の調節係数の値は第1の調節係数の値と反比例する。
格納モジュール701は休止時間の上限および下限をさらに格納する。
処理モジュール702はさらに、休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された休止時間の値が休止時間の上限と下限の間にあるようにするように構成される。
コントローラによりオブジェクトIO要求を処理するために使用される方法の手続きは上述の手続きと同様であり、詳細は図2−1、図2−2、図2−3、図3、図4、および対応する説明で示されており、当該実施形態では再度詳細に説明することはしない。
コントローラをまた、CPUとメモリを備えた装置と見なしてもよい。当該メモリはプログラムを格納し、当該CPUは、当該メモリ内の当該プログラムを用いることによって以上のサービス・フロー制御方法を実行する。コントローラはさらにインタフェースを備えてもよい。当該インタフェースは記憶装置クライアントに接続されるように構成され、当該インタフェースの機能は、例えば、当該CPUによる処理により生成されたオブジェクトIO要求を記憶装置クライアントに送信することであってもよい。当該インタフェースはまた、オブジェクト・ベース記憶システム外部の別のクライアントクライアントに接続されてもよく、クライアントにより送信される様々なオブジェクトIO要求を受信するように構成される。
本発明の1実施形態はさらに、図8に示すように、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのサービス・フロー制御装置8を提供する。装置8はコントローラ801を備え、コントローラ801は受信モジュール801−3、格納モジュール801−1、処理モジュール801−2、および送信モジュール801−4を備える。コントローラは上述のサービス・フロー制御方法を実装するように構成され、コントローラ801は図7および対応する説明におけるコントローラと同一の構造および機能を有し、ここでは再度説明しない。
本発明の1実施形態はさらに、図9に示すように、サービス・フロー制御を実装するためのオブジェクト・ベース記憶システムを提供する。オブジェクト・ベース記憶システムはコントローラ901、記憶装置クライアント903、および少なくとも2つの記憶装置905を備える。コントローラ901は記憶装置クライアント903に接続され、記憶装置クライアント903は少なくとも2つの記憶装置905に接続される。コントローラ901と記憶装置クライアント903を同一のサーバに配置してもよい。コントローラ901は受信モジュール901−3、格納モジュール901−1、処理モジュール901−2、および送信モジュール901−4を備える。コントローラは、上述のサービス・フロー制御方法を実装するように構成され、コントローラ901は図7および対応する説明におけるコントローラと同一の構造および機能を有し、ここでは再度説明しない。
当該実装方式の以上の説明に基づいて、本発明を、必要な普遍的ハードウェアに加えてソフトウェアにより実装してもよく、または、確かに、ハードウェアのみにより実装してもよいことは明らかに理解されうる。大抵の環境では、前者が好適な実装方式である。かかる理解に基づいて、本発明の技術的解決策は本質的に、または、先行技術に貢献する部分を、ソフトウェア製品の形で実装してもよい。当該ソフトウェア製品は、コンピュータのフロッピ・ディスク、ハード・ディスクまたは光ディスクのような可読記憶媒体に格納され、本発明の当該実施形態で説明した方法を実施するようにコンピュータ装置(パーソナル・コンピュータ、サーバ、またはネットワーク装置であってもよい)に指示するための幾つかの命令を含む。
本発明の当該実施形態では、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の処理量閾値はコントローラ内で設定され、記憶装置によりオブジェクトIO要求の受信された処理結果に従って、処理量閾値は、事前に設定されたアルゴリズムを用いることによって特定のルールに従って動的に調節される。このように、コントローラが、記憶装置クライアントを用いることによって当該記憶装置に送信されたオブジェクトIO要求の量を制御してもよく、その結果、当該記憶装置により受信されたオブジェクトIO要求の量は当該記憶装置の処理能力を超過しない。したがって、当該記憶装置の全てのリソースを使用して当該オブジェクトIO要求を効果的に処理でき、これは、当該オブジェクトIO要求の処理成功率を保証し、オブジェクト・ベース記憶システムの処理性能を高める。さらに、時間間隔、即ち、2つのオブジェクトIO要求(またはサブオブジェクトIO要求)を送信する間の休止時間もコントローラ内で設定される。コントローラは、記憶装置クライアントを用いることによって当該記憶装置に送信されたオブジェクトIO要求の量を調節することによって、当該記憶装置に送信されたオブジェクトIO要求の量をより正確に制御でき、これは、当該記憶装置の全てのリソースを、当該オブジェクトIO要求を効果的に処理するために使用でき、オブジェクト・ベース記憶システムの処理性能が高まることを保証する。
明らかに、当業者は本発明の趣旨と範囲から逸脱しない様々な修正と変形を本発明に対して行うことができる。本発明は、これらの修正と変形が以下の諸請求項とそれらの均等な技術により定義される保護範囲内にあるのであれば、これらの修正と変形を包含することを意図するものである。
101 コントローラ
103 記憶装置クライアント
104 記憶装置クラスタ
501 コントローラ
502 クライアント
503 IPディスク・クライアント
504 IPディスク・クラスタ
701 格納モジュール
702 処理モジュール
703 受信モジュール
704 送信モジュール
801−1 格納モジュール
801−2 処理モジュール
801−3 受信モジュール
801−4 送信モジュール
901−1 格納モジュール
901−2 処理モジュール
901−3 受信モジュール
901−4 送信モジュール
903 記憶装置クライアント
第1の態様の第3の可能な実装方式または第1の態様の第5の可能な実装方式を参照して、第1の態様の第6の可能な実装方式では、オブジェクトIO要求の受信された処理結果に従って処理量閾値を調節するステップは、コントローラにより、事前に設定された期間に従って、送信量の現在値および処理成功量の現在値を定期的に取得するステップと、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算するステップと、当該処理成功率を第1の調節係数として用いることによって処理量閾値を調節するステップとを含む。
本発明の当該実施形態の第2の態様ではオブジェクト・ベース記憶システムにおけるサービス・フロー制御方法を提供する。オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、当該方法は、コントローラにより、第1のオブジェクトIO要求を受信するステップと、分割サイズ閾値を取得するステップであって、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズであるステップと、第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きいとき、コントローラにより、第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するステップであって、各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬するステップと、第1のサブオブジェクトIO要求を記憶装置クライアントに送信し、休止時間を開始するステップと、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信するステップであって、当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬するステップと、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するステップとを含む。
第3の態様、第3の態様の第1の可能な実装方式、または第3の態様の第2の可能な実装方式を参照して、第3の態様の第3の可能な実装方式では、処理モジュール702はさらに、第1の応答メッセージを受信した後、格納モジュール701内の送信量を更新し、第1の応答メッセージで運搬される処理結果が処理成功を示す場合、格納モジュール701内の処理成功量を更新するように構成される。当該送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量であり、当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
第3の態様の第4の可能な実装方式を参照して、第3の態様の第5の可能な実装方式では、送信モジュール704は、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、当該応答メッセージを処理モジュール702に送信する。当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬する。処理モジュール702はさらに、第1のサブオブジェクトIO要求の処理結果を受信し、送信量を更新するように構成される。当該送信量は記憶装置クライアントに送信されたオブジェクトIO要求の量である。当該処理結果が処理成功を示す場合、処理モジュール702はさらに、処理成功量を更新するように構成される。当該処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
第3の態様の第3の可能な実装方式または第3の態様の第5の可能な実装方式を参照して、第3の態様の第6の可能な実装方式では、事前に設定された条件が満たされたとき、処理モジュール702が、格納モジュール701内の処理量閾値をオブジェクトIO要求の受信された処理結果に従って調節するように構成されることは特に、処理モジュール702が、事前に設定された期間に従って送信量の現在値および処理成功量の現在値を定期的に取得し、送信量の現在値および処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、当該処理成功率を第1の調節係数として用いることによって処理量閾値を調節することである。
本発明の当該実施形態の第4の態様ではオブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラを提供する。コントローラは、格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備える。受信モジュール703は、第1のオブジェクトIO要求を受信し、第1のオブジェクトIO要求を処理モジュール702に送信するように構成され、処理モジュール702は、第1のオブジェクトIO要求を受信した後、分割サイズ閾値を格納モジュール701から取得するように構成され、分割サイズ閾値は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズであり、処理モジュール702はさらに、第1のオブジェクトIO要求のサイズが分割サイズ閾値より大きいとき、第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するように構成され、各サブオブジェクトIO要求のサイズは分割サイズ閾値より大きくなく、同じ識別子を運搬し、第1のサブオブジェクトIO要求を送信モジュール704に送信し、休止時間を開始し、送信モジュール704は、第1のサブオブジェクトIO要求をコントローラに接続された記憶装置クライアントに送信し、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、第1のサブオブジェクトIO要求に対する応答メッセージを処理モジュール702に送信するように構成され、当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬し、処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って休止時間を調節するように構成される。
本発明の当該実施形態の第5の態様では、第3の態様、第4の態様、およびそれらの可能な実装法式の何れか1つに記載のコントローラを備える、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するための装置を提供する。
本発明の当該実施形態の第6の態様では、第3の態様、第4の態様、およびそれらの可能な実装法式の何れか1つに記載のコントローラ、記憶装置クライアント、および少なくとも2つの記憶装置を備える、サービス・フロー制御を実装できるシステムを提供する。コントローラは記憶装置クライアントに接続され、記憶装置クライアントは当該少なくとも2つの記憶装置に接続される。
図1は、本発明の1実施形態に従うオブジェクト・ベース記憶システムの略構造図を示す。図1に示すように、コントローラ101は、記憶装置クライアント103に接続され、記憶装置クライアント103は、記憶装置クラスタ104内の複数の記憶装置に接続される。コントローラ101をさらに外部クライアントに接続してもよく、当該外部クライアントをさらに別の装置に接続してもよい。コントローラ101および記憶装置クライアント103を1つのサーバで配置してもよく、または、2つのサーバで配置してもよく、当該サーバは、HTTP(HyperText Transfer Protocol)サーバ、即ち、HTTPプロトコルを用いるサーバであってもよい。コントローラ101は一般に記憶装置クライアント103と1対1関係にある。即ち、1つのコントローラ101は1つの記憶装置クライアント103に対応する。当該オブジェクトベース記憶システムは、複数のグループのコントローラおよび記憶装置クライアント(図1では図示せず)をさらに含んでもよく、コントローラは対応する記憶装置クライアントを用いることによって記憶装置クラスタ内の記憶装置に接続される。当該記憶装置クラスタは複数の記憶装置を備え、当該複数の記憶装置は、分散アルゴリズムを用いることによって一意な名前空間および拡張可能な記憶空間を当該グループのコントローラおよび記憶装置クライアントに提供する。当該記憶装置クラスタを、当該グループのコントローラおよび記憶装置クライアントが独立にサービス制御と動作を実施するために、複数の記憶装置クライアントにより共有してもよい。実際の適用では、各グループのコントローラおよび記憶装置クライアントを、当該記憶装置クラスタ内の幾つかの記憶装置にのみ接続してもよい。
本発明の当該実施形態では、記憶装置はIPディスクであり、記憶装置クライアントはIPディスク・クライアントであり、当該IPディスク・クライアントを複数のIPディスクに接続してもよい。IPディスクは、分散アルゴリズムを用いることによって一意な名前空間および拡張可能な大容量記憶空間を提供する。オブジェクト・ベース記憶システム内のIPディスクに、鍵−値を基本アクセス単位として用いることによってアクセスしてもよい。1つの鍵−値動作は1つのIO要求であり、オブジェクトIO要求の属性のようなパラメータに従って計算を実施した後に得られる値である。鍵は、ユーザにより指定されたデータ・ブロックの一意な識別子であり、鍵を記憶装置により使用して特定のデータ・ブロックを発見してもよい。値は、鍵に対応するデータ・ブロックの内容である。各鍵は1つの値に対応し、当該値はIPディスク上のオブジェクトの記憶位置およびサイズを示す。別のタイプのスマート・ディスク、例えば、SSDを記憶装置として使用してもよい。特に断らない限り、別のタイプの記憶装置の実装原理はIPディスクと同様である。
処理に成功したオブジェクトIO要求に対して、記憶装置は記憶装置クライアントに処理成功を示す情報を運搬する応答メッセージで応答し、待ち行列内の次のオブジェクトIO要求の処理を開始する。オブジェクトIO要求をタイムリに処理できないとき、当該記憶装置は過負荷応答メッセージで記憶装置クライアントに応答する。或る理由、例えば、装置故障、信号損失等のため処理に成功しなかったオブジェクトIO要求に対して、当該記憶装置は記憶装置クライアントに処理失敗を示す情報を運搬する応答メッセージで応答する。処理失敗を示す応答メッセージを受信した後、記憶装置クライアントは、特定の時間量に到達するかまたはオブジェクトIO要求を処理するための所定の期限を超えるまで、処理が不成功であったオブジェクトIO要求を処理のために記憶装置に再送してもよい。所定の期限が終了したときに記憶装置クライアントが応答メッセージを受信しなかった場合、記憶装置クライアントはまた、オブジェクトIO要求を処理のために記憶装置に再送してもよい。特定量の試行の後にオブジェクトIO要求の処理に成功しなかったとき、応答メッセージは最終処理失敗を示す処理結果を運搬する。試行の量はサービス要件に従ってオブジェクト・ベース記憶システムにより設定される。
当該事前に設定された条件が、事前に設定された期間、処理すべき量の所定値、または処理すべき量および処理量閾値の間の所定の差異であってもよい。当該事前に設定された条件が満たされたとき、例えば、当該事前に設定された期間が終了し、コントローラは、処理量閾値の値をオブジェクトIO要求の受信された処理結果に従って調節する。ここでのオブジェクトIO要求の処理結果はコントローラにより受信された全てのオブジェクトIO要求の処理結果であってもよく、または、当該期間内にコントローラにより受信されたオブジェクトIO要求の処理結果であってもよい。当該期間が終了した後、コントローラは、受信されたオブジェクトIO要求の処理結果の全てを削除して他を受信し、または、全てのオブジェクトIO要求の処理結果を保持してもよく、本発明の当該実施形態では限定されない。
記憶装置により処理でき一時的に格納されるオブジェクトIO要求の量は制限されない。ピーク・サービス時間の間、各記憶装置は大量のオブジェクトIO要求を処理する必要がある。オブジェクトIO要求を配送する速度が記憶装置の処理能力およびキャッシュ能力を超えるとき、幾つかのオブジェクトIO要求を処理することができない。タイムリに処理できないオブジェクトIO要求については、記憶装置は過負荷応答メッセージを記憶装置クライアントにフィードバックし、記憶装置クライアントが当該オブジェクトIO要求を再試行し、記憶装置に再送することを試みる。しかし、当該過負荷応答メッセージをフィードバックすると、記憶装置の多くのディスク・リソースを占有する。このように、オブジェクトIO要求を処理するための記憶装置の性能は悪化し、待ち行列におけるオブジェクトIO要求の待機時間が増大する。このサイクルが反復されると、記憶装置の処理性能は悪化し、オブジェクトIO要求の待機時間が増大し、オブジェクトIO要求をタイムリに処理できず、オブジェクトIO要求を処理する故障率が増大する。
処理量閾値の現在値および処理すべき量の現在値を取得した後、コントローラは、当該2つの値を比較し、処理すべき量の現在値が処理量閾値の現在値より小さいとき、ステップ205と後述の方法を実行する。これはここでは説明しない。処理すべき量の現在値が処理量閾値の現在値以上であるとき、処理すべきオブジェクトIO要求の量がオブジェクト・ベース記憶システムの処理能力を超過するか、または、オブジェクト・ベース記憶システムの処理能力に達する。別のオブジェクトIO要求がさらに受信される場合、圧力が確実にオブジェクト・ベース記憶システムにかかり、オブジェクト・ベース記憶システムは、リソースを利用してこれらの過負荷オブジェクトIO要求を処理する必要があり、これがオブジェクト・ベース記憶システム全体の性能に影響し、処理効率を低下させる。したがって、処理すべき量の現在値が処理量閾値の現在値以上であるとき、コントローラはもはや別のオブジェクトIO要求を受理せず、コントローラは拒否応答メッセージまたはビジー応答メッセージで、第2のオブジェクトIO要求を送信したクライアントに応答する。さらに、コントローラは、さらに第2のオブジェクトIO要求を破棄してもよい。
図2−3は、オブジェクト・ベース記憶システム内のサービス・フロー制御を実施するための方法の別の実装方式を示す。図2−1および図2−2に示す方法の手続きに基づいて、コントローラによりオブジェクトIO要求を記憶装置クライアントに送信するための時間間隔が追加される。具体的な方法手続きは以下の通りである。
事前に設定された期間が終了したとき、コントローラは、送信量の現在値および処理成功量の現在値を取得し、オブジェクトIO要求の処理成功率を計算し、計算の後に取得された処理成功率を第1の調節係数として用いることによって処理量閾値または休止時間を調節する。当該処理成功率は、成功率=処理成功量の現在値/送信量の現在値×100%であってもよい。
コンスタントな観察と実験を通じて、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システムの能力は、送信量および成功率とともに変化することが分かる。したがって、本発明の当該実施形態では、別の調節係数に従って、成功率に従って調節が実施された後に取得された処理量閾値または休止時間を調節することが提供される。処理量閾値に対して、調節係数は処理成功率に比例する。休止時間に対して、調節係数は処理成功率に反比例する。係数の間の関係をより明確に説明するために、処理成功率を第1の調節係数と称し、処理量閾値を調節するための調節係数を第2の調節係数と称し、休止時間を調節するための調節係数を第3の調節係数と称する。第2の調節係数は定数であり、第2の調節係数の値は第1の調節係数の値に比例する。即ち、第1の調節係数の大きな値は第2の調節係数の大きな値を示す。第3の調節係数は定数であり、第3の調節係数の値は第1の調節係数の値と反比例する。即ち、第1の調節係数の大きな値は第3の調節係数の小さな値を示す。
例えば、オブジェクトIO要求の事前に設定された分割サイズ閾値は1メガバイト(M)である。コントローラにより受理された第1のオブジェクトIO要求が4.5Mであるとき、第1のオブジェクトIO要求は大きなオブジェクトIO要求であり、コントローラは、分割サイズ閾値に従って第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割する。本発明の当該実施形態では、コントローラは、第1のオブジェクトIO要求を5個のサブオブジェクトIO要求に1Mの単位で分割する。当該5個のサブオブジェクトIO要求およびそれらのサイズは、それぞれ、第1のサブオブジェクトIO要求で1M、第2のサブオブジェクトIO要求で1M、第3のサブオブジェクトIO要求で1M、第4のサブオブジェクトIO要求で1M、第5のサブオブジェクトIO要求で0.5Mであってもよい。さらに、当該5個のサブオブジェクトIO要求は同じ識別子を運搬する。
記憶装置クライアントがIPディスク・クライアントであり、記憶装置がIPディスクであるとき、IPディスク・クライアントは、同一のインタフェースを、同じ識別子を運搬するIO要求に割り当てる。換言すれば、大きなIO書込み要求を分割することにより得られた複数のオブジェクトIO書込み要求はIPディスク・クライアントの1つのインタフェースにより処理される。当該インタフェースは、割り当てられたオブジェクトIO要求の鍵値を計算し、対応するIPディスクに関する情報を当該鍵値に従って取得し、当該オブジェクトIO書込み要求を処理のために当該対応するIPディスクに送信する。1つのIO要求が複数のIO要求に分割された後、分割により得られた各IO要求は異なる値を有するので、分割により得られたIO要求を処理のために異なるIPディスクに送信することが可能である。IPディスク・クライアントは、並列処理を実施し、複数のIO要求を同時に処理して、計算後に取得された値を用いることによって当該IO要求を対応するIPディスクに送信してもよい。
同様に、第2のサブオブジェクトIO要求を記憶装置に送信した後、コントローラは、送信量に1を加える。コントローラが第2のサブオブジェクトIO要求に対する記憶装置クライアントにより応答された応答メッセージを受信した後、第2のサブオブジェクトIO要求に対する応答メッセージが処理成功を示す処理結果を運搬する場合、コントローラは、処理成功量に1を加える。任意選択で、第1のサブオブジェクトIO要求を記憶装置クライアントに送信した後、かつ、第1のサブオブジェクトIO要求に対する応答メッセージを受信した後、コントローラはまた、送信量を更新、例えば、送信量に1を加えてもよい。この場合、第1のサブオブジェクトIO要求に対する応答メッセージ内の処理結果に従って、処理成功量を更新するかどうかをさらに判定する必要がある。具体的な方式は上述の方式と同一であり、ここでは再度説明しない。同様に、第2のサブオブジェクトIO要求に対する応答メッセージを受信した後、コントローラは、送信量に1を加え、次いで、第2のサブオブジェクトIO要求の応答メッセージに従って、処理成功量を更新するかどうかを判定する。
大きなオブジェクトIO要求を分割することにより得られた複数のサブオブジェクトIO要求のうち何れか1つの処理結果が処理失敗を示す場合、当該大きなオブジェクトIO要求の処理は不成功であることに留意すべきである。この場合、コントローラは、処理失敗を示す応答メッセージで当該大きなオブジェクトIO要求の要求者に応答し、当該大きなオブジェクトIO要求を分割することにより得られ記憶装置に書き込まれている他のサブオブジェクトIO要求を削除するように記憶装置クライアントに指示する必要がある。処理失敗を示す任意のサブオブジェクトIO要求の応答メッセージを受信すると、コントローラはさらに、処理が不成功であったサブオブジェクトIO要求を記憶装置クライアントに再送してもよく、特定量の試行または特定の期間の後に受信された応答メッセージが最終結果である。
上述のように、コントローラが受信された大きなオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するケースでは、コントローラはまた、特定のルールおよびオブジェクトIO要求またはサブオブジェクトIO要求の処理結果に従って処理量閾値と処理すべき量を動的に調節し、オブジェクト・ベース記憶システムにより受理されたオブジェクトIO要求の量を制御してもよい。これにより、コントローラにより受理されたオブジェクトIO要求の量がオブジェクトベース記憶システムにおける記憶装置の処理能力を超過しないことが保証され、オブジェクトIO要求を処理するためのオブジェクト・ベース記憶システム全体の性能が保証される。
ステップ413およびステップ411の間に厳密な順序関係はないことに留意すべきである。事前に設定された条件が満たされたとき、コントローラは、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信しているかもしれず、または、コントローラは、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信していないかもしれない。コントローラが第1のサブオブジェクトIO要求および第2のサブオブジェクトIO要求に対する記憶装置クライアントにより応答された応答メッセージを受信しているが、第3のサブオブジェクトIO要求および第4のサブオブジェクトIO要求の応答メッセージを受信していない可能性もある。この場合、コントローラは、別のオブジェクトIO要求または別のサブオブジェクトIO要求の応答された応答メッセージ、および当該応答メッセージ内の処理結果に従って休止時間を調節する。
図5に示すオブジェクト・ベース記憶システムはコントローラ501、IPディスク・クライアント503、およびIPディスク・クラスタ504を備える。換言すれば、図5に示すオブジェクト・ベース記憶システム内の記憶装置はIPディスクであり、対応する記憶装置クライアントはIPディスク・クライアントである。コントローラ501はIPディスク・クライアント503に接続され、コントローラ501とIPディスク・クライアント503は1つのサーバに展開される。当該サーバがHTTPサーバであってもよい。IPディスク・クライアント503は、IPディスク・クラスタ504内のIPディスクに接続される。コントローラ501はクライアント502にさらに接続される。クライアント502はオブジェクトIO要求をコントローラ501に送信する。
比較結果がN>Mである場合、コントローラ501は、第1のオブジェクトIO要求を送信したクライアント502にシステム・ビジー応答メッセージで応答する。この場合、コントローラ501は、処理すべき量Nを更新せず、第1のオブジェクトIO要求を破棄する。
ステップ605:休止時間が終了した後、即ち、コントローラ501が第1のサブオブジェクトIO要求をIPディスク・クライアント503に送信した後100ミリ秒で、コントローラ501は、第2のサブオブジェクトIO要求をIPディスク・クライアント503に送信し、休止時間を開始する。同様に、第2のサブオブジェクトIO要求を受信した後、IPディスク・クライアント503は、事前に設定された鍵−値アルゴリズムに従って、第2のサブオブジェクトIO要求を処理のためにIPディスク504−2に送信する。IPディスク・クライアント503は、サブオブジェクトIO要求内のメタデータのような情報に従っておよび当該鍵−値アルゴリズムに従って具体的なIPディスクを決定する。第1のオブジェクトIO要求を分割することにより得られた4つのサブオブジェクトIO要求を、処理のために同一のIPディスクに送信してもよく、または、処理のために異なるIPディスクに送信してもよい。
ステップ608:コントローラ501が、第1のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2801に更新され、当該応答メッセージが第1のサブオブジェクトIO要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2401に更新される。
ステップ608およびステップ605乃至ステップ607の間には厳密な時間順序はなく、ステップ608をステップ604の後に実施する必要がある。
ステップ609:コントローラ501が、第2のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2802に更新される。当該応答メッセージが第2のサブオブジェクトIO要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2402に更新される。
ステップ611:コントローラ501が、第3のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2803に更新される。当該応答メッセージが第3のサブオブジェクトIO要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2403に更新される。
ステップ612:コントローラ501が、第4のサブオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信し、コントローラ501が送信量Pを更新する。送信量の現在値Pは2804に更新される。当該応答メッセージが第4のサブオブジェクトIO要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2404に更新される。
第1のオブジェクトIO要求を分割することにより得られた任意のサブオブジェクトIO要求に対する応答された応答メッセージで運搬される最終結果が処理失敗を示す情報であるとき、処理失敗を示す応答メッセージでクライアント502に応答することに加えて、コントローラはさらに、第1のオブジェクトIO要求を分割することにより得られた複数のサブオブジェクトIO要求に関する情報を削除し、後続の処理を実施しないようにIPディスク・クライアント503およびIPディスク・クラスタ504に指示する必要がある。具体的な処理方式は先行技術の方式と同一であり、ここでは再度詳細には説明しない。
ステップ617:コントローラ501が、第2のオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信する。コントローラ501が送信量Pを更新する。送信量の現在値Pは2805に更新される。当該応答メッセージが、第2のオブジェクトIO要求の処理に成功したことを示す処理結果を運搬する場合、コントローラ501は処理成功量Qを更新する。処理成功量Qの現在値Qは2405に更新される。
ステップ621:コントローラ501が、第3のオブジェクトIO要求に対するIPディスク・クライアント503により応答された応答メッセージを受信する。コントローラ501が送信量Pを更新する。送信量の現在値Pは2806に更新される。当該応答メッセージが、第3のオブジェクトIO要求の処理が不成功であったことを示す処理結果を運搬する場合、コントローラ501は処理成功量Qを更新しない。処理成功量Qの現在値Qは不変のままである。即ち、Q=2405である。
格納モジュール701は、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の現在の最大量である、処理量閾値と、オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の現在の量である、処理すべき量と、コントローラにより(サブオブジェクトIO要求を含む)2つのオブジェクトIO要求を記憶装置クライアントに送信するステップの間の現在の時間間隔である、休止時間と、コントローラが処理量閾値と休止時間を更新するための期間である、期間と、コントローラにより記憶装置クライアントに送信されている(サブオブジェクトIO要求を含む)オブジェクトIO要求の量である、送信量と、その処理結果が処理成功を示す、コントローラにより記憶装置クライアントに送信された(サブオブジェクトIO要求を含む)オブジェクトIO要求のうち(サブオブジェクトIO要求を含む)オブジェクトIO要求の量である、処理成功量と、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズである、分割サイズ閾値と、事前に設定された条件が満たされたとき処理量閾値を調節するために使用される、処理量閾値の調節式と、事前に設定された条件が満たされたとき休止時間を調節するために使用される、休止時間の調節式とを含む、コントローラにより要求される情報を格納するように構成される。
以上の情報は、サービス要件に従って選択されてもよく、必ずしも全体が選択されるわけではない。例えば、大きなオブジェクトIO要求(そのサイズが分割サイズ閾値より大きいオブジェクトIO要求)をコントローラに送信する前に、クライアントが当該オブジェクトIO要求を分割するケースでは、分割サイズ閾値はクライアントに格納され、コントローラの格納モジュールは分割サイズ閾値に関する情報を格納する必要はない。さらに、オブジェクトIO要求の具体的な量が記憶装置クライアントに送信された後に処理量閾値または休止時間が更新された場合、当該格納モジュールは当該期間に関する情報を格納する必要はない。確かに、ユーザはまた、必要に応じて他の情報を格納モジュール701に格納してもよく、ここでは例を用いることによって再度説明しない。
処理モジュール702は、当該格納モジュールから取得された処理量閾値の現在値および処理すべき量の現在値を比較し、それらの間のサイズ関係を決定する。処理すべき量の現在値が処理量閾値の現在値より小さいとき、処理モジュール702は、処理すべき量の現在値を更新し、対応する処理をオブジェクトIO要求に対して実施し、処理すべき量の現在値が処理量閾値の現在値以上であるとき、処理モジュール702は、受信モジュール703を用いることによって、拒否応答メッセージまたはシステム・ビジー応答メッセージでクライアントに応答する。
処理モジュール702はさらに、送信モジュール704から、オブジェクトIO要求に対する記憶装置クライアントにより応答される応答メッセージを取得し、受信モジュール703を用いることによって、当該オブジェクトIO要求に対する応答メッセージでクライアントに応答するように構成される。1つのオブジェクトIO要求を複数のサブオブジェクトIO要求に分割した後、および、当該オブジェクトIO要求の全てのサブオブジェクトIO要求の応答メッセージを取得した後、処理モジュール702は、全てのサブオブジェクトIO要求に対する応答メッセージで運搬される処理結果に従って、当該オブジェクトIO要求に対する応答メッセージでクライアントに応答する。当該オブジェクトIO要求の全てのサブオブジェクトIO要求に対する応答メッセージが処理成功を示す処理結果を運搬する場合、処理モジュール702は、クライアントに、当該オブジェクトIO要求の処理に成功したことを示す応答メッセージで応答し、そうでなければ、処理モジュール702は、クライアントに、当該オブジェクトIO要求の処理が不成功であったことを示す応答メッセージで応答する。
処理モジュール702はさらに、第1の応答メッセージを受信した後、格納モジュール701内の送信量を更新し、第1の応答メッセージで運搬される処理結果が処理成功を示す場合、格納モジュール701内の処理成功量を更新するように構成される。送信量はコントローラにより記憶装置クライアントに送信されるオブジェクトIO要求の量であり、処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
送信モジュール704は、第1のサブオブジェクトIO要求に対して記憶装置クライアントにより応答された応答メッセージを受信し、当該応答メッセージを処理モジュール702に送信する。当該応答メッセージは第1のサブオブジェクトIO要求の処理結果を運搬する。処理モジュール702はさらに、第1のサブオブジェクトIO要求の処理結果を受信し、送信量を更新するように構成される。送信量は記憶装置クライアントに送信されたオブジェクトIO要求の量である。当該処理結果が処理成功を示す場合、処理モジュール702はさらに、処理成功量を更新するように構成される。処理成功量は、記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である。
処理モジュール702はさらに、第2の調節係数に従って、第1の調節係数に従って調節を実施した後に取得された処理量閾値を調節するように構成される。第2の調節係数の値は第1の調節係数の値に比例する。
格納モジュール701は当該処理量閾値の上限および下限をさらに格納する。
コントローラをまた、CPUとメモリを備えた装置と見なしてもよい。当該メモリはプログラムを格納し、当該CPUは、当該メモリ内の当該プログラムを用いることによって以上のサービス・フロー制御方法を実行する。コントローラはさらにインタフェースを備えてもよい。当該インタフェースは記憶装置クライアントに接続されるように構成され、当該インタフェースの機能は、例えば、当該CPUによる処理により生成されたオブジェクトIO要求を記憶装置クライアントに送信することであってもよい。当該インタフェースはまた、オブジェクト・ベース記憶システム外部の別のクライアントに接続されてもよく、クライアントにより送信される様々なオブジェクトIO要求を受信するように構成される。
本発明の当該実施形態では、オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の処理量閾値はコントローラ内で設定され、オブジェクトIOの受信された処理結果に従って、処理量閾値は、事前に設定されたアルゴリズムを用いることによって特定のルールに従って動的に調節される。このように、コントローラが、記憶装置クライアントを用いることによって当該記憶装置に送信されたオブジェクトIO要求の量を制御してもよく、その結果、当該記憶装置により受信されたオブジェクトIO要求の量は当該記憶装置の処理能力を超過しない。したがって、当該記憶装置の全てのリソースを使用して当該オブジェクトIO要求を効果的に処理でき、これは、当該オブジェクトIO要求の処理成功率を保証し、オブジェクト・ベース記憶システムの処理性能を高める。さらに、時間間隔、即ち、2つのオブジェクトIO要求(またはサブオブジェクトIO要求)を送信する間の休止時間もコントローラ内で設定される。コントローラは、記憶装置クライアントを用いることによって当該記憶装置に送信されたオブジェクトIO要求の量を調節することによって、当該記憶装置に送信されたオブジェクトIO要求の量をより正確に制御でき、これは、当該記憶装置の全てのリソースを、当該オブジェクトIO要求を効果的に処理するために使用でき、オブジェクト・ベース記憶システムの処理性能が高まることを保証する。

Claims (40)

  1. オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法であって、前記オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、前記方法は、
    前記コントローラにより、第1のオブジェクトIO要求を受信するステップと、
    処理量閾値と処理すべき量を取得するステップであって、前記処理量閾値は前記オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値であり、前記処理すべき量は前記オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量である、ステップと、
    前記処理すべき量が前記処理量閾値より小さい場合、前記第1のオブジェクトIO要求を前記記憶装置クライアントに送信し、前記処理すべき量を更新するステップと、
    前記第1のオブジェクトIO要求に対して前記記憶装置クライアントにより応答された第1の応答メッセージを受信するステップであって、前記第1の応答メッセージは前記第1のオブジェクトIO要求の処理結果を運搬する、ステップと、
    事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って前記処理量閾値を調節するステップと、
    を含む、方法。
  2. 前記コントローラが第2のオブジェクトIO要求を受信したとき、前記処理量閾値の現在値および前記処理すべき量の現在値を取得するステップと、
    前記処理すべき量の現在値が前記処理量閾値の現在値以上である場合、拒否応答メッセージまたはビジー応答メッセージで応答するステップと、
    をさらに含む、請求項1に記載の方法。
  3. 前記第1のオブジェクトIO要求を前記記憶装置クライアントに送信した後に休止時間を開始するステップと、
    前記コントローラが第3のオブジェクトIO要求を受信したとき、前記処理量閾値の現在値および前記処理すべき量の現在値を取得するステップと、
    前記処理すべき量の現在値が前記処理量閾値の現在値より小さい場合、前記休止時間が終了した後に前記第3のオブジェクトIO要求を前記記憶装置クライアントに送信し、前記処理すべき量を更新するステップと、
    をさらに含む、請求項1または2に記載の方法。
  4. 前記第1のオブジェクトIO要求に対して前記記憶装置クライアントにより応答された第1の応答メッセージを受信した後、前記方法は、
    送信量を更新するステップであって、前記送信量は前記コントローラにより前記記憶装置クライアントに送信されたオブジェクトIO要求の量である、ステップと、
    前記第1の応答メッセージで運搬される処理結果が処理成功を示す場合、処理成功量を更新するステップであって、前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である、ステップ、または、前記第1の応答メッセージで運搬される処理結果が処理失敗を示す場合、処理成功量を不変に保つステップと、
    をさらに含む、請求項1乃至3の何れか1項に記載の方法。
  5. 前記第1のオブジェクトIO要求を前記記憶装置クライアントに送信するステップは、
    分割サイズ閾値を取得するステップであって、前記分割サイズ閾値は、前記オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズ閾値である、ステップと、
    前記第1のオブジェクトIO要求のサイズが前記分割サイズ閾値より大きいとき、前記コントローラにより、前記第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するステップであって、各サブオブジェクトIO要求のサイズは前記分割サイズ閾値より大きくなく、同じ識別子を運搬する、ステップと、
    を含み、
    前記第1のオブジェクトIO要求を前記記憶装置クライアントに送信するステップは特に、
    前記コントローラにより、第1のサブオブジェクトIO要求を前記記憶装置クライアントに送信するステップと、
    前記休止時間が終了した後に、休止時間を開始し、第2のサブオブジェクトIO要求を前記記憶装置クライアントに送信するステップと、
    前記複数のサブオブジェクトIO要求が前記記憶装置クライアントに送信されるまで、前記休止時間を開始するステップの実行に戻るステップと、
    である、請求項1または2に記載の方法。
  6. 前記コントローラにより、第1のサブオブジェクトIO要求を前記記憶装置クライアントに送信した後に、
    前記第1のサブオブジェクトIO要求に対して前記記憶装置クライアントにより応答された応答メッセージを受信するステップであって、前記応答メッセージは前記第1のサブオブジェクトIO要求の処理結果を運搬するステップと、
    送信量を更新するステップであって、前記送信量は前記コントローラにより前記記憶装置クライアントに送信されたオブジェクトIO要求の量であるステップと、
    前記処理結果が処理成功を示す場合、処理成功量を更新するステップであって、前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量であるステップ、または、
    前記処理結果が最終処理失敗を示す場合、処理成功量を不変に保つステップと、
    前記複数のサブオブジェクトIO要求の処理結果が受信されるまで、前記記憶装置クライアントにより応答される応答メッセージを受信するステップの実行に戻るステップと、
    をさらに含む、請求項5に記載の方法。
  7. 前記記憶装置クライアントによるオブジェクトIO要求の受信された処理結果に従って前記処理量閾値を調節するステップは、
    前記コントローラにより、事前に設定された期間に従って、前記送信量の現在値および前記処理成功量の現在値を定期的に取得するステップと、
    前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算するステップと、
    前記処理成功率を第1の調節係数として用いることによって前記処理量閾値を調節するステップと、
    を含む、請求項4または6に記載の方法。
  8. 第2の調節係数に従って、前記第1の調節係数に従って調節を実施した後に取得された量閾値を調節するステップであって、前記第2の調節係数の値は前記第1の調節係数の値に比例するステップをさらに含む、請求項7に記載の方法。
  9. 前記処理量閾値の上限および下限は前記コントローラで設定され、前記方法は、
    前記処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された前記処理量閾値の値が前記処理量閾値の上限および下限の間にあるようにするステップ
    をさらに含む、請求項7または8に記載の方法。
  10. 前記コントローラにより、事前に設定された期間に従って、前記送信量の現在値および前記処理成功量の現在値を定期的に取得するステップと、
    前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算するステップと、
    前記処理成功率を第1の調節係数として用いることによって前記休止時間を調節するステップと、
    をさらに含む、請求項4または6に記載の方法。
  11. 第3の調節係数と前記第1の調節係数に従って前記休止時間を調節するステップであって、前記第3の調節係数の値は前記第1の調節係数の値と反比例するステップをさらに含む、請求項10に記載の方法。
  12. 前記休止時間の上限および下限は前記コントローラで設定され、前記方法は、
    前記休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された前記休止時間の値が前記休止時間の上限と下限の間にあるようにするステップ
    をさらに含む、請求項10または11に記載の方法。
  13. 前記コントローラにより、オブジェクトIO要求を送信した要求者に応答メッセージで応答するステップであって、前記応答メッセージは前記オブジェクトIO要求の最終処理結果を運搬するステップと、
    前記処理すべき量を更新するステップと、
    をさらに含む、請求項1乃至12の何れか1項に記載の方法。
  14. オブジェクト・ベース記憶システムにおけるサービス・フロー制御方法であって、前記オブジェクト・ベース記憶システムはコントローラおよび記憶装置クライアントを備え、前記方法は、
    前記コントローラにより、第1のオブジェクトIO要求を受信するステップと、
    分割サイズ閾値を取得するステップであって、前記分割サイズ閾値は、前記オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズ閾値であるステップと、
    前記第1のオブジェクトIO要求のサイズが前記分割サイズ閾値より大きいとき、前記コントローラにより、前記第2のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割するステップであって、各サブオブジェクトIO要求のサイズは前記分割サイズ閾値より大きくなく、同じ識別子を運搬するステップと、
    第1のサブオブジェクトIO要求を前記記憶装置クライアントに送信し、休止時間を開始するステップと、
    前記第1のサブオブジェクトIO要求に対して前記記憶装置クライアントにより応答された応答メッセージを受信するステップであって、前記応答メッセージは前記第1のサブオブジェクトIO要求の処理結果を運搬するステップと、
    事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って前記休止時間を調節するステップと、
    を含む、方法。
  15. 休止時間を開始した後、
    前記休止時間が終了した後、第2のサブオブジェクトIO要求を前記記憶装置クライアントに送信するステップと、
    前記複数のサブオブジェクトIO要求が前記記憶装置クライアントに送信されるまで、前記休止時間を開始するステップの実行に戻るステップと、
    をさらに含む、請求項14に記載の方法。
  16. 前記第1のサブオブジェクトIO要求に対する応答メッセージを受信した後、
    送信量を更新するステップであって、前記送信量は前記コントローラにより前記記憶装置クライアントに送信されたオブジェクトIO要求の量である、ステップと、
    前記第1の応答メッセージで運搬される第1のオブジェクトIO要求の前記処理結果が処理成功を示す場合、処理成功量を更新するステップであって、前記処理成功量は前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量であるステップ、または、前記第1の応答メッセージで運搬される前記第1のオブジェクトIO要求の前記処理結果が最終処理失敗を示す場合、処理成功量を不変に保つステップと、
    前記複数のサブオブジェクトIO要求の処理結果が受信されるまで、前記記憶装置クライアントにより応答される応答メッセージを受信するステップの実行に戻るステップと、
    をさらに含む、請求項14または15に記載の方法。
  17. 事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って前記休止時間を調節するステップは特に、
    前記コントローラにより、事前に設定された期間に従って、前記送信量の現在値および前記処理成功量の現在値を定期的に取得するステップと、
    前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算するステップと、
    前記処理成功率を第1の調節係数として用いることによって前記休止時間を調節するステップと、
    である、請求項14乃至16の何れか1項に記載の方法。
  18. 第3の調節係数に従って、調節が実施された後に取得された休止時間を前記第1の調節係数に従って調節するステップであって、前記第3の調節係数の値は前記第1の調節係数の値と反比例するステップをさらに含む、請求項17に記載の方法。
  19. 前記休止時間の上限および下限は前記コントローラで設定され、前記方法は、
    前記休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された前記休止時間の値が前記休止時間の上限と下限の間にあるようにするステップ
    をさらに含む、請求項17または18に記載の方法。
  20. オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラであって、前記コントローラは格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備え、
    前記受信モジュール703は、第1のオブジェクトIO要求を受信し、前記第1のオブジェクトIO要求を前記処理モジュール702に送信するように構成され、
    前記処理モジュール702は、前記第1のオブジェクトIO要求を受信した後、処理量閾値と処理すべき量を前記格納モジュール701から取得し、前記処理量閾値は前記オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求の量の閾値であり、前記処理すべき量は前記オブジェクト・ベース記憶システム内の処理すべきオブジェクトIO要求の量であり、
    前記処理すべき量が前記処理量閾値より小さい場合、前記処理モジュール702はさらに、前記第1のオブジェクトIO要求を前記送信モジュール704に送信し、前記格納モジュール701内の前記処理すべき量を更新するように構成され、
    前記送信モジュール704はさらに、前記第1のオブジェクトIO要求を記憶装置クライアントに送信し、前記第1のオブジェクトIO要求に対して前記記憶装置クライアントにより応答された第1の応答メッセージを受信し、前記第1の応答メッセージを前記処理モジュール702に送信するように構成され、前記第1の応答メッセージは前記第1のオブジェクトIO要求の処理結果を運搬し、
    前記処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って前記格納モジュール701内の前記処理量閾値を調節するように構成される、
    コントローラ。
  21. 前記処理すべき量が前記処理量閾値以上である場合、前記処理モジュール702はさらに、拒否応答メッセージまたはビジー応答メッセージで前記第1のオブジェクトIO要求の要求者に応答するように構成される、請求項20に記載のコントローラ。
  22. 前記処理モジュール702はさらに、前記第1のオブジェクトIO要求を前記送信モジュール704に送信した後に休止時間を開始し、前記休止時間が終了した後に第2のオブジェクトIO要求を前記送信モジュール704に送信するように構成される、請求項20乃至21に記載のコントローラ。
  23. 前記処理モジュール702はさらに、
    前記第1の応答メッセージを受信した後、前記格納モジュール704内の送信量を更新し、
    前記第1の応答メッセージで運搬される処理結果が処理成功を示す場合、前記格納モジュール704内の処理成功量を更新する
    ように構成され、
    前記送信量は前記コントローラにより前記記憶装置クライアントに送信されたオブジェクトIO要求の量であり、
    前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である、
    請求項20乃至22の何れか1項に記載のコントローラ。
  24. 前記処理モジュール702はさらに、
    前記第1のオブジェクトIO要求が分割サイズ閾値より大きいとき、前記第1のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割し、
    前記送信モジュール704を用いることによって、分割によって得られた第1のサブオブジェクトIO要求を前記記憶装置クライアントに送信し、
    休止時間を開始し、前記休止時間が終了した後に前記送信モジュール704を用いることによって第2のサブオブジェクトIO要求を送信する
    ように構成され、
    各サブオブジェクトIO要求のサイズは前記分割サイズ閾値より大きくなく、同じ識別子を運搬し、前記分割サイズ閾値は、前記オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズ閾値である、
    請求項20または21に記載のコントローラ。
  25. 前記受信モジュール704は、前記第1のサブオブジェクトIO要求に対して前記記憶装置クライアントにより応答された応答メッセージを受信し、前記応答メッセージを前記処理モジュール702に送信し、前記応答メッセージは前記第1のサブオブジェクトIO要求の処理結果を運搬し、
    前記処理モジュール702はさらに、前記第1のサブオブジェクトIO要求の前記処理結果を受信し、送信量を更新するように構成され、前記送信量は前記記憶装置クライアントに送信されたオブジェクトIO要求の量であり、
    前記処理結果が処理成功を示す場合、前記処理モジュール702はさらに、処理成功量を更新するように構成され、前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である、
    請求項24に記載のコントローラ。
  26. 前記事前に設定された条件が満たされたとき、前記処理モジュール702が、オブジェクトIO要求の受信された処理結果に従って前記格納モジュール701内の前記処理量閾値を調節することは特に、
    前記処理モジュール702は、事前に設定された期間に従って前記送信量の現在値および前記処理成功量の現在値を定期的に取得し、前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、前記処理成功率を第1の調節係数として用いることによって前記処理量閾値を調節する
    ことである、請求項23または25に記載のコントローラ。
  27. 前記処理モジュール702はさらに、第2の調節係数に従って、前記第1の調節係数に従って調節を実施した後に取得された量閾値を調節するように構成され、前記第2の調節係数の値は前記第1の調節係数の値に比例する、請求項26に記載のコントローラ。
  28. 前記格納モジュール701は前記量閾値の上限および下限をさらに格納し、
    前記処理モジュール702はさらに、前記処理量閾値の上限または下限に従って、調節の後に取得された処理量閾値を修正して、調節の後に取得された前記処理量閾値の値が前記処理量閾値の上限および下限の間にあるようにするように構成される、
    請求項26または27に記載のコントローラ。
  29. 前記処理モジュール702はさらに、事前に設定された期間に従って前記送信量の現在値および前記処理成功量の現在値を定期的に取得し、前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、前記処理成功率を第1の調節係数として用いることによって前記休止時間を調節するように構成される、請求項23または25に記載のコントローラ。
  30. 前記処理モジュール702はさらに、第3の調節係数と前記第1の調節係数に従って前記休止時間を調節するように構成され、前記第3の調節係数の値は前記第1の調節係数の値と反比例する、請求項29に記載のコントローラ。
  31. 前記格納モジュール701は前記休止時間の上限および下限をさらに格納し、
    前記処理モジュール702はさらに、前記休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された前記休止時間の値が前記休止時間の上限と下限の間にあるようにするように構成される、
    請求項29または30に記載のコントローラ。
  32. 前記処理モジュール702はさらに、前記受信モジュール703を用いることによって、オブジェクトIO要求を送信した要求者に応答メッセージで応答し、前記処理すべき量を更新するように構成され、前記応答メッセージは前記オブジェクトIO要求の最終処理結果を運搬する、請求項20乃至31の何れか1項に記載のコントローラ。
  33. オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するためのコントローラであって、前記コントローラは格納モジュール701、処理モジュール702、受信モジュール703、および送信モジュール704を備え、
    前記受信モジュール703は、第1のオブジェクトIO要求を受信し、前記第1のオブジェクトIO要求を前記処理モジュール702に送信するように構成され、
    前記処理モジュール702は、前記第1のオブジェクトIO要求を受信した後、分割サイズ閾値を前記格納モジュール701から取得するように構成され、前記分割サイズ閾値は、前記オブジェクト・ベース記憶システムにより処理できるオブジェクトIO要求のサイズであり、
    前記処理モジュール702はさらに、前記第1のオブジェクトIO要求のサイズが前記分割サイズ閾値より大きいとき、前記第2のオブジェクトIO要求を複数のサブオブジェクトIO要求に分割し、第1のサブオブジェクトIO要求を前記送信モジュール704に送信し、休止時間を開始するように構成され、各サブオブジェクトIO要求のサイズは前記分割サイズ閾値より大きくなく、同じ識別子を運搬し、
    前記送信モジュール704は、前記第1のサブオブジェクトIO要求を前記コントローラに接続された記憶装置クライアントに送信し、前記第1のサブオブジェクトIO要求に対して前記記憶装置クライアントにより応答された応答メッセージを受信し、前記第1のサブオブジェクトIO要求に対する前記応答メッセージを前記処理モジュール702に送信するように構成され、前記応答メッセージは前記第1のサブオブジェクトIO要求の処理結果を運搬し、
    前記処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って前記休止時間を調節するように構成される、
    コントローラ。
  34. 前記処理モジュール702はさらに、
    前記休止時間が開始された後、前記休止時間が終了した後に前記送信モジュールを用いることによって、第2のサブオブジェクトIO要求を前記記憶装置クライアントに送信し、
    前記複数のサブオブジェクトIO要求が前記記憶装置クライアントに送信されるまで、前記休止時間を開始するステップの実行に戻る
    ように構成される、請求項33に記載のコントローラ。
  35. 前記処理モジュール702はさらに、前記第1のサブオブジェクトIO要求に対する前記応答メッセージを受信した後、送信量を更新するように構成され、前記送信量は、前記送信モジュール704を用いることによって前記処理モジュール702により前記記憶装置クライアントに送信されたオブジェクトIO要求の量であり、
    前記第1のサブオブジェクトIO要求に対する前記応答メッセージで運搬される前記第1のオブジェクトIO要求の前記処理結果が処理成功を示す場合、前記処理モジュール702はさらに、処理成功量を更新するか、または、前記第1のサブオブジェクトIO要求に対する前記応答メッセージで運搬される前記第1のオブジェクトIO要求の前記処理結果が最終処理失敗を示す場合、処理成功量を不変に保つように構成され、前記処理成功量は、前記記憶装置クライアントにより成功裏に処理された受信されたオブジェクトIO要求の量である、
    請求項33または34に記載のコントローラ。
  36. 前記処理モジュール702はさらに、事前に設定された条件が満たされたとき、オブジェクトIO要求の受信された処理結果に従って前記休止時間を調節するように構成されることは特に、
    前記処理モジュール702は、事前に設定された期間に従って前記送信量の現在値および前記処理成功量の現在値を定期的に取得し、前記送信量の現在値および前記処理成功量の現在値に従ってオブジェクトIO要求の処理成功率を計算し、前記処理成功率を第1の調節係数として用いることによって前記休止時間を調節する
    ことである、請求項33乃至35の何れか1項に記載のコントローラ。
  37. 前記処理モジュール702はさらに、第3の調節係数に従って、調節が実施された後に取得された休止時間を前記第1の調節係数に従って調節するように構成され、前記第3の調節係数の値は前記第1の調節係数の値と反比例する、請求項36に記載のコントローラ。
  38. 前記格納モジュール701は前記休止時間の上限および下限をさらに格納し、
    前記処理モジュール702はさらに、前記休止時間の上限または下限に従って、調節後に取得された休止時間を修正して、調節の後に取得された前記休止時間の値が前記休止時間の上限と下限の間にあるようにするように構成される、
    請求項36または37に記載のコントローラ。
  39. 請求項20乃至39の何れか1項に記載のコントローラを備える、オブジェクト・ベース記憶システムにおけるサービス・フロー制御を実装するための装置。
  40. 請求項20乃至39の何れか1項に記載のコントローラ、記憶装置クライアント、および少なくとも2つの記憶装置を備えた、サービス・フロー制御を実装するためのオブジェクト・ベース記憶システムであって、前記コントローラは前記記憶装置クライアントに接続され、前記記憶装置クライアントは前記少なくとも2つの記憶装置に接続される、オブジェクト・ベース記憶システム。
JP2016558104A 2014-10-22 2014-10-22 オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステム Active JP6403140B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/089180 WO2016061766A1 (zh) 2014-10-22 2014-10-22 对象存储系统中的业务流控制方法、控制器和系统

Publications (2)

Publication Number Publication Date
JP2017514210A true JP2017514210A (ja) 2017-06-01
JP6403140B2 JP6403140B2 (ja) 2018-10-10

Family

ID=55760058

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016558104A Active JP6403140B2 (ja) 2014-10-22 2014-10-22 オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステム

Country Status (5)

Country Link
US (2) US9804981B2 (ja)
EP (1) EP3128420B1 (ja)
JP (1) JP6403140B2 (ja)
CN (1) CN105900061B (ja)
WO (1) WO2016061766A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180335975A1 (en) * 2017-05-16 2018-11-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Translating a host data storage command into multiple disk commands
US10599340B1 (en) * 2017-07-13 2020-03-24 EMC IP Holding LLC Policy driven IO scheduler to improve read IO performance in hybrid storage systems
US10719245B1 (en) * 2017-07-13 2020-07-21 EMC IP Holding Company LLC Transactional IO scheduler for storage systems with multiple storage devices
CN107465630B (zh) * 2017-08-30 2021-08-31 郑州云海信息技术有限公司 一种带宽流量监管方法及系统
CN107911840A (zh) * 2017-11-21 2018-04-13 青岛海信电器股份有限公司 流媒体传输的控制方法及装置
CN110740099B (zh) * 2018-07-18 2023-03-31 阿里巴巴集团控股有限公司 一种数据流控方法和装置
CN109101194A (zh) * 2018-07-26 2018-12-28 郑州云海信息技术有限公司 一种刷写性能优化方法和存储系统
US11157205B2 (en) * 2018-11-15 2021-10-26 Western Digital Technologies, Inc. Object storage system with control entity quota enforcement
US11204717B2 (en) 2018-11-15 2021-12-21 Western Digital Technologies, Inc. Object storage system with access control quota status check
US11580082B2 (en) 2018-11-15 2023-02-14 Western Digital Technologies, Inc. Object storage system with control entity quota usage mapping
CN110096379B (zh) * 2019-04-30 2022-09-09 武汉斗鱼鱼乐网络科技有限公司 基于通用协议的消息分发方法、装置、设备及存储介质
EP3942749A4 (en) 2019-05-23 2023-06-07 Hewlett Packard Enterprise Development LP OPTIMIZED ADAPTIVE ROUTING TO REDUCE THE NUMBER OF JUMPS
CN110333770B (zh) * 2019-07-10 2023-05-09 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
CN110377536B (zh) * 2019-07-12 2023-05-12 深信服科技股份有限公司 数据处理方法、装置、设备及计算机可读存储介质
CN110650206B (zh) * 2019-09-29 2022-03-11 北京天融信网络安全技术有限公司 分布式存储系统中io流量控制方法、装置和存储介质
CN111190709B (zh) * 2019-11-19 2024-04-12 泰康保险集团股份有限公司 处理请求的方法、装置、电子设备及可读存储介质
CN111291104B (zh) * 2020-01-20 2023-07-28 中国银联股份有限公司 一种基于异步应答的传输数据的方法及系统
CN113849129B (zh) * 2021-09-18 2023-08-25 苏州浪潮智能科技有限公司 一种存储控制器间的io请求转发方法、装置及设备
CN113741991B (zh) * 2021-11-04 2022-02-18 苏州浪潮智能科技有限公司 提升ssd服务质量方法、装置、计算机设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002108841A (ja) * 2000-10-03 2002-04-12 Shimadzu Corp 分散型制御システム
JP2004310652A (ja) * 2003-04-10 2004-11-04 Just Syst Corp 情報配信装置および情報配信装置に利用可能なアクセス管理方法
CN100466625C (zh) * 2006-09-07 2009-03-04 华为技术有限公司 一种实现业务流量控制的方法及系统
US20110153724A1 (en) * 2009-12-23 2011-06-23 Murali Raja Systems and methods for object rate limiting in multi-core system
US20120239376A1 (en) * 2011-03-14 2012-09-20 Sap Ag Predicting performance of a consolidated virtualized computing environment
US20140047000A1 (en) * 2012-08-07 2014-02-13 Ca, Inc. Systems and methods for throttling polling

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065767B2 (en) 2001-06-29 2006-06-20 Intel Corporation Managed hosting server auditing and change tracking
US7765555B2 (en) * 2005-06-17 2010-07-27 Oracle America, Inc. Facilitating bulk lock-unbiasing in an object-based system
WO2007002799A1 (en) 2005-06-29 2007-01-04 Lightspeed Logic, Inc. Methods and systems for placement
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US9104599B2 (en) * 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
CN100476742C (zh) * 2007-02-09 2009-04-08 华中科技大学 基于对象存储设备的负载平衡方法
US7877556B2 (en) * 2007-03-30 2011-01-25 Hitachi, Ltd. Method and apparatus for a unified storage system
CN101776946B (zh) * 2010-01-20 2011-06-15 中国人民解放军国防科学技术大学 一种基于对象存储系统的功耗控制方法
US8984216B2 (en) * 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
CN101957729B (zh) * 2010-09-27 2014-07-02 中兴通讯股份有限公司 逻辑块变换方法及基于该方法兼容用户读写的方法和装置
US9589029B2 (en) * 2010-12-28 2017-03-07 Citrix Systems, Inc. Systems and methods for database proxy request switching
CN103036956B (zh) * 2012-11-30 2016-03-30 航天恒星科技有限公司 一种分布式组态化海量数据归档系统及实现方法
US20140153577A1 (en) * 2012-12-03 2014-06-05 Aruba Networks, Inc. Session-based forwarding
CN103150225B (zh) * 2013-03-25 2014-04-09 中国人民解放军国防科学技术大学 基于应用级代理的对象并行存储系统磁盘满异常容错方法
US9652514B2 (en) * 2014-05-20 2017-05-16 Citrix Systems, Inc. Systems and methods for redirect handling
US9639854B2 (en) * 2014-06-26 2017-05-02 Nuance Communications, Inc. Voice-controlled information exchange platform, such as for providing information to supplement advertising
US20160062832A1 (en) * 2014-09-02 2016-03-03 Netapp. Inc. Wide spreading data storage architecture
JP6443170B2 (ja) * 2015-03-26 2018-12-26 富士通株式会社 階層ストレージ装置,階層ストレージ制御装置,階層ストレージ制御プログラム及び階層ストレージ制御方法
US9787772B2 (en) * 2015-05-19 2017-10-10 Netapp, Inc. Policy based alerts for networked storage systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002108841A (ja) * 2000-10-03 2002-04-12 Shimadzu Corp 分散型制御システム
JP2004310652A (ja) * 2003-04-10 2004-11-04 Just Syst Corp 情報配信装置および情報配信装置に利用可能なアクセス管理方法
CN100466625C (zh) * 2006-09-07 2009-03-04 华为技术有限公司 一种实现业务流量控制的方法及系统
US20110153724A1 (en) * 2009-12-23 2011-06-23 Murali Raja Systems and methods for object rate limiting in multi-core system
US20120239376A1 (en) * 2011-03-14 2012-09-20 Sap Ag Predicting performance of a consolidated virtualized computing environment
US20140047000A1 (en) * 2012-08-07 2014-02-13 Ca, Inc. Systems and methods for throttling polling

Also Published As

Publication number Publication date
US20170220500A1 (en) 2017-08-03
EP3128420A1 (en) 2017-02-08
JP6403140B2 (ja) 2018-10-10
WO2016061766A1 (zh) 2016-04-28
EP3128420A4 (en) 2017-08-23
CN105900061A (zh) 2016-08-24
US9984013B2 (en) 2018-05-29
CN105900061B (zh) 2018-01-16
US20180018293A1 (en) 2018-01-18
EP3128420B1 (en) 2019-08-28
US9804981B2 (en) 2017-10-31

Similar Documents

Publication Publication Date Title
JP6403140B2 (ja) オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステム
US11157324B2 (en) Partitioning for delayed queues in a distributed network
US20170031622A1 (en) Methods for allocating storage cluster hardware resources and devices thereof
WO2023050901A1 (zh) 一种负载均衡方法、装置、设备、计算机存储介质和程序
US10944683B1 (en) Hybrid queue system for request throttling
WO2019184096A1 (zh) 一种下载数据资源的方法和系统
US11461150B1 (en) Autoscaling and throttling in an elastic cloud service
EP2913981B1 (en) Image forming system, relay server, communication controlling method and non-transitory computer readable recording medium
US9152639B2 (en) Method and apparatus to transfer file data to a cloud environment
CN109815204A (zh) 一种基于拥塞感知的元数据请求分发方法及设备
CN113268329A (zh) 一种请求调度方法、装置及存储介质
EP3886396A1 (en) Methods for dynamically controlling transmission control protocol push functionality and devices thereof
US10182057B1 (en) Highly scalable fine grained rate limiting
EP3707610B1 (en) Redundant data storage using different compression processes
CN107483637B (zh) 一种基于nfs的客户端链接管理方法及装置
JP2004046372A (ja) 分散処理システム、リソース割当方法およびプログラムならびにリソース割当プログラムが記録された記録媒体
US10091068B1 (en) System for modeling distributed systems
JP6280237B2 (ja) 計算機システム及びデータ処理方法
JP2019526860A (ja) スケーラブルなリアルタイムメッセージングシステム
CN116028196A (zh) 数据处理方法、装置及存储介质
JP2015094976A (ja) 情報処理装置、情報処理方法、及び、プログラム
CN112751895A (zh) 通信连接保活方法及其系统
WO2016070364A1 (zh) 一种数据分发方法,装载机及存储系统
JP5690287B2 (ja) 負荷分散プログラムおよび負荷分散装置
WO2021036989A1 (zh) 一种数据访问的方法、装置及系统

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180803

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180814

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180904

R150 Certificate of patent or registration of utility model

Ref document number: 6403140

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250