JP6382454B2 - 分散ストレージ及びレプリケーションシステム、並びに方法 - Google Patents

分散ストレージ及びレプリケーションシステム、並びに方法 Download PDF

Info

Publication number
JP6382454B2
JP6382454B2 JP2017539482A JP2017539482A JP6382454B2 JP 6382454 B2 JP6382454 B2 JP 6382454B2 JP 2017539482 A JP2017539482 A JP 2017539482A JP 2017539482 A JP2017539482 A JP 2017539482A JP 6382454 B2 JP6382454 B2 JP 6382454B2
Authority
JP
Japan
Prior art keywords
partition
view
osd
node
osd node
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.)
Active
Application number
JP2017539482A
Other languages
English (en)
Other versions
JP2017534133A (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 JP2017534133A publication Critical patent/JP2017534133A/ja
Application granted granted Critical
Publication of JP6382454B2 publication Critical patent/JP6382454B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2064Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring while ensuring consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • 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/466Transaction processing
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Description

本発明は、IT(Information Technology)情報技術分野に関し、詳細には、分散ストレージ及びレプリケーションシステム、並びに方法に関する。
情報技術の急速な発展、及びインターネットの広い応用とともに、人々によって生成されるデータは、爆発的な様態で増加し、このことが、データストレージの拡張性により高い要件を課す。従来のストレージアレイシステムと比べて、分散ストレージシステムは、より良い拡張性、及び一般的なハードウェアデバイス互換性を有し、将来においてデータストレージの要件をより良く満たすことが可能である。
分散ストレージシステムにおいて、一般に、大量のストレージノードが分散システムを形成するように編成され、データ信頼性は、異なるノード間のデータレプリケーション及びバックアップによって確実にされて、データが異なるすべてのストレージノード上にレプリカを有するようになる。複数のデータレプリカのデータ整合性をどのようにして確実にすべきかが、長期にわたって分散ストレージシステムの直面する問題となっている。データ整合性を確実にする事例において、システムパフォーマンス及び利用可能性もまた、重要性の高まる考慮事項となる。
図1は、既存の2フェーズコミットプロトコル(2 Phase Commit,2PC)を示し、これは、典型的な集中型の強整合性レプリカ制御プロトコルであり、多くの分散データベースシステムにおいてレプリカ整合性を確実にするのに使用される。
2フェーズコミットプロトコルにおいて、システムは、一般に、2つのタイプのノード、すなわち、コーディネータ(coordinator)と、参加者(participant)とを含む。コーディネータは、データ更新に関して投票を開始すること、及び投票決定を通知することを実行することを担い、参加者は、データ更新に関する投票に参加し、投票決定を実行する。
2フェーズコミットプロトコルは、2つのフェーズを含み、すなわち、フェーズ1は、コミット要求フェーズであり、コーディネータが、データ変更に関して投票するよう参加者に指示し、参加者が、参加者自らの投票結果、すなわち、はい又はいいえについてコーディネータに通知し、フェーズ2は、コミットフェーズであり、コーディネータが、第1のフェーズにおける投票結果により決定、すなわち、コミット又は取消しを行う。
2フェーズコミットプロトコルを1回、実行することに成功することは、4つのメッセージを用いてコーディネータと各参加者の間で少なくとも2ラウンドの対話を要求し、対話の過度の回数がパフォーマンスを低下させる。さらに、2フェーズコミットプロトコルにおいて、ノードが障害を有するようになった場合、又は応答を有さないことが続く場合、別のIO要求は、ブロックされ、最終的に、タイムアウトのために失敗し、データロールバックが実行される必要がある。2フェーズコミットプロトコルは、比較的低い障害耐性及び利用可能性を有する。
本発明の実施形態が、分散ストレージ及びレプリケーションシステム、並びに分散ストレージシステムにおいてデータストレージ及びレプリケーションを管理するための方法を提供して、既存の整合性レプリケーションプロトコルの低いパフォーマンス及び低い利用可能性の問題を解決するようにする。
第1の態様によれば、分散ストレージ及びレプリケーションシステムが提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求により、IO要求に対応するデータの記憶を実行するように適応され、MDCは、システムにおけるOSDノードが障害を有するOSDノードであると決定し、障害を有するOSDノード上のpartitionを決定し、障害を有するOSDノード上のpartitionを含むpartitionグループのpartitionビューを更新し、更新されたpartitionビューにおける一次OSDノードに更新通知を送信するように適応され、一次OSDノードは、MDCモジュールによって送信された更新通知を受信した後、更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理するように適応される。
第1の態様の第1の可能な実施様態において、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを特に含み、一次OSDノードは、更新されたpartitionビューにより、一次OSDノード上にローカルで記憶されたpartitionビューを更新するようにさらに適応され、更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理することは、更新されたローカルで記憶されたpartitionビューにより、IOルーティングモジュールからのIO要求に対応するデータを、partitionステータスが更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード上に、或いはpartitionステータスが更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード、及びpartitionステータスが更新されたローカルで記憶されたpartitionビューにおいて不整合であるが、データを回復している二次OSDノードの上にレプリケートすることを特に含む。
第1の態様の第1の可能な実施様態を参照して、第2の可能な実施様態において、MDCモジュールは、IOビューを生成し、IOビューは、partitionグループの一次OSDノードの識別子を含み、並びにIOルーティングモジュール、及びpartitionビューにおいてpartitionが位置付けられるOSDノードにIOビューを送信するように適応され、一次OSDノードは、更新されたpartitionビューにより、一次OSDノード上にローカルで記憶されたIOビューを更新し、及び更新されたローカルで記憶されたIOビューにより、IO要求に対応するデータのレプリケーションを処理するようにさらに適応される。
第1の態様の第2の可能な実施様態を参照して、第3の可能な実施様態において、MDCモジュールは、障害を有するOSDノード上のpartitionが一次partitionを含むと決定した場合、一次partitionを含むpartitionグループのIOビューを更新し、更新されたIOビューについて更新されたpartitionビューにおける二次OSDノードに通知するようにさらに適応され、更新されたpartitionビューにおける二次OSDノードは、更新されたIOビューにより、ローカルで記憶されたIOビューを更新し、更新されたローカルで記憶されたIOビューにより、IO要求に対応するデータのレプリケーションを処理するように適応される。
第1の態様の第3の可能な実施様態を参照して、第4の可能な実施様態において、障害を有するOSDノード上のpartitionを含むpartitionグループのpartitionビューを更新することは、障害を有するOSDノード上のpartitionが二次partitionを含む場合、二次partitionを含むpartitionグループのpartitionビューにおいて障害を有するOSDノードのpartitionステータスに不整合であるという印を付けること、並びに障害を有するOSDノード上のpartitionが一次partitionを含む場合、一次partitionを含むpartitionグループのpartitionビューにおいて一次OSDノードの役割をする障害を有するOSDノードを新たな二次OSDノードとして設定すること、新たな二次OSDノードに対応するpartitionステータスに不整合であるという印を付けること、partitionステータスが整合性がある二次OSDノードを、一次partitionを含むpartitionグループのpartitionビューにおける元の二次OSDノードから選択すること、及び選択された二次OSDノードを新たな一次OSDノードとして設定することを特に含む。
第2の態様によれば、分散ストレージ及びレプリケーションシステムが提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのパーティションは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビュー及びIOビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含み、IOビューは、partitionグループの一次OSDの識別子を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求によりIOデータ記憶を実行するように適応され、IOルーティングモジュールは、IO要求を受信し、IO要求はkeyを含み、keyにより、IO要求に対応するデータが属するpartitionグループを決定し、及びデータが属するpartitionグループの一次OSDノードを決定し、データが属するpartitionグループのIOビューのIOビューバージョン情報をIO要求に追加し、及び決定された一次OSDノードに、IOビューバージョン情報を搬送するIO要求を送信するように適応され、一次OSDノードは、IO要求を受信し、IOビューバージョン情報により、IO要求におけるIOビューバージョンが、一次OSDノード上にローカルで記憶されたIOビューバージョンと整合性があると決定した後、IO要求を実行し、IOビューバージョン情報を搬送するレプリケーション要求を生成し、及びデータが属するpartitionグループの二次OSDノードにレプリケーション要求を送信するように適応され、二次OSDノードは、レプリケーション要求を受信し、及びIOビューバージョン情報により、レプリケーション要求におけるIOビューバージョンが、二次OSDノード上にローカルで記憶されたIOビューバージョンと整合性があると決定した後、レプリケーション要求を実行して、二次OSDノード上のIO要求に対応するデータが、一次OSDノード上のIO要求に対応するデータと整合性を保つように適応される。
第2の態様の第1の可能な実施様態において、一次OSDノードは、IOビューバージョン情報により、IO要求におけるIOビューバージョンが、一次OSD上にローカルで記憶されたIOビューバージョンより早期であると決定した後、IOルーティングモジュールにエラーを返し、及びIO要求におけるIOビューバージョンが、一次OSD上にローカルで記憶されたIOビューバージョンより後期であると決定した後、キャッシュキューにIO要求を追加し、及びデータが属するpartitionグループのIOビューのIOビューバージョン情報に関してMDCモジュールにクエリを行って、一次OSD上にローカルで記憶されたIOビューバージョンがIO要求におけるIOビューバージョンと整合性があると決定した後、IO要求を実行するようにさらに適応され、IOルーティングモジュールは、一次OSDノードによって返されたエラーを受信した後、データが属するpartitionグループのIOビューに関してMDCモジュールにクエリを行い、及び更新されたIOビューバージョン情報を獲得した後、更新されたIOビューバージョン情報を搬送するIO要求を送信するように適応される。
第2の態様、又は第2の態様の第1の可能な実施様態を参照して、第2の可能な実施様態において、IOビューバージョン情報は、IOビューバージョン番号を含み、一次OSDノードは、IO要求に関するシーケンス識別子をさらに生成し、シーケンス識別子を、二次OSDノードに送信されるレプリケーション要求に追加し、シーケンス識別子は、IOビューバージョン番号と、シーケンス番号とを含み、シーケンス番号は、IOビューバージョン内のIOビューにおけるpartitionグループに対応するデータに対する変更操作の通し番号を示し、二次OSDノードは、シーケンス識別子によりレプリケーション要求を実行するようにさらに適応される。
第2の態様の第2の可能な実施様態を参照して、第3の可能な実施様態において、レプリケーション要求は、partitionグループに関する一次OSDノードによって送信された前のレプリケーション要求におけるシーケンス識別子をさらに搬送し、二次OSDノードは、レプリケーション要求を受信した後、前のレプリケーション要求におけるシーケンス識別子が、二次OSDノード上にローカルで記憶された最大のシーケンス識別子と整合性がある場合、レプリケーション要求を実行するようにさらに適応される。
第2の態様、又は第2の態様の第1、第2、及び第3の可能な実施様態を参照して、第4の可能な実施様態において、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを特に含み、MDCモジュールは、IO要求を処理するプロセスにおいて、一次OSDノードが障害を有するようになったことを検出した場合、データが属するpartitionグループのpartitionビューにおける一次OSDノードを新たな二次OSDノードとして設定し、及び新たな二次OSDのpartitionステータスに不整合であるという印を付け、データが属するpartitionグループのpartitionビューにおける二次OSDノードの任意の二次OSDノードを新たな一次OSDノードとして設定し、データが属するpartitionグループの更新されたpartitionビューについて新たな一次OSDノードに通知し、新たな一次OSDノードを使用することによって、データが属するpartitionグループのIOビューを更新し、及びデータが属するpartitionの更新されたIOビューについてIOルーティングモジュールに通知するようにさらに適応され、IOルーティングモジュールは、MDCモジュールによって送信されたpartitionグループのものである更新されたIOビューを受信し、及びpartitionグループの更新されたIOビューにより新たな一次OSDノードにIO要求を送信するようにさらに適応され、新たな一次OSDノードは、IO要求を受信し、IO要求を実行した後、第2のレプリケーション要求を生成し、及び第2のレプリケーション要求を、partitionステータスが、データが属するpartitionグループの更新されたpartitionビューにおいて整合性のある二次OSDノードに送信するように適応される。
第2の態様、又は第2の態様の第1、第2、及び第3の可能な実施様態を参照して、第5の可能な実施様態において、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを特に含み、MDCモジュールは、IO要求を処理するプロセスにおいて、二次OSDノードのうちのいずれかの二次OSDノードが障害を有するようになったことを検出した場合、データが属するpartitionグループのpartitionビューにおけるそのいずれかの二次OSDのpartitionステータスに不整合であるという印を付け、及びデータが属するpartitionグループの更新されたpartitionビューについて一次OSDノードに通知するようにさらに適応され、一次OSDノードは、データが属するpartitionグループの更新されたpartitionビューを受信した後、partitionステータスが、更新されたpartitionビューにおいて整合性がある二次OSDノードにレプリケーション要求を送信し、及びpartitionステータスが不整合である二次OSDノードにレプリケーション要求を送信することを省くように適応される。
第3の態様によれば、分散ストレージ及びレプリケーションシステムが提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビュー及びIOビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含み、IOビューは、partitionグループの一次OSDの識別子を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求により、IO要求に対応するデータの記憶を実行するように適応され、OSDノードは、フェイルバックの後、MDCモジュールにOSDノード上のpartitionを含むpartitionグループのIOビューを要求するクエリ要求を送信し、OSDノードは、フェイルバックOSDノードと呼ばれ、クエリ要求は、フェイルバックOSDノードのOSD識別子を搬送し、MDCによって返されるIOビューを受信し、IOビューにおける一次OSDに対して、障害中にフェイルバックOSDノードによって更新されたデータを回復することを要求するデータ回復要求を開始し、障害中に更新され、かつ一次OSDによって送信されるデータを受信し、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartitionビューにより、IO要求のレプリケーションを処理するように適応され、MDCモジュールは、フェイルバックOSDノードのクエリ要求を受信し、クエリ要求におけるOSD識別子によりフェイルバックOSDノードにIOビューを返し、及びフェイルバックOSDノードがデータ回復を完了した後、partitionグループのpartitionビューを更新するように適応され、一次OSDノードは、フェイルバックOSDノードのデータ回復要求を受信し、フェイルバックOSDノードに、障害中に更新されたデータを送信し、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理するように適応される。
第3の態様の第1の可能な実施様態において、一次OSDノードは、データ回復要求を受信した後、フェイルバックOSDノード上のpartitionに関するIOルーティングモジュールによって送信されたIO要求を受信し、IO要求を実行し、及びフェイルバックOSDノードに、IOキー情報、及びIO要求に対応するデータを搬送するレプリケーション要求を送信するようにさらに適応され、フェイルバックOSDノードは、ログに、IOキー情報、及びIO要求に対応するデータを搬送するレプリケーション要求を書き込み、データ回復が完了された後、ログのレコードにより、IO要求に対応するデータを、フェイルバックOSDノードによって管理される物理ストレージリソースに対して更新する。
第3の態様の第1の可能な実施様態を参照して、第2の可能な実施様態において、データ回復要求は、フェイルバックOSDノード上のpartitionに関するIO操作のものであり、かつフェイルバックOSDノード上にローカルで記録された最大のシーケンス識別子を搬送し、最大のシーケンス識別子は、フェイルバックOSDノード上のpartitionを含むpartitionグループのIOビューの最新のIOビューバージョン番号であり、データに対する変更操作の最大の通し番号が、最新のIOビューバージョン番号に対応するIOビューにおけるpartitionに対応し、障害中に更新されたデータをフェイルバックOSDノードに送信することは、データ回復要求における最大のシーケンス識別子が、一次OSDノード上にローカルで記憶された現在の最小のシーケンス識別子以上であると決定すること、障害中にフェイルバックOSDノードに欠落しているentryをフェイルバックOSDノードに送信すること、entryによりフェイルバックOSDノードによって開始されたデータ回復要求を受信すること、及びentryに対応するデータをフェイルバックOSDノードに送信することを含み、最小のシーケンス識別子は、partitionグループのIOビューのものであり、かつ一次OSDノード上に記憶された最小のIOビューバージョン番号であり、データに対する変更操作の最小の通し番号は、最小のIOビューバージョン番号に対応するIOビューにおけるpartitionに対応する。
第3の態様の第1の可能な実施様態を参照して、第の可能な実施様態において、データ回復要求は、フェイルバックOSDノード上のpartitionに関するIO操作のものであり、かつフェイルバックOSDノード上にローカルで記録された最大のシーケンス識別子を搬送し、最大のシーケンス識別子は、フェイルバックOSDノード上のpartitionを含むpartitionグループのIOビューの最新のIOビューバージョン番号を含み、データに対する変更操作の最大の通し番号が、最新のIOビューバージョン番号に対応するIOビュー内のIOビューにおけるpartitionに対応し、障害中に更新されたデータをフェイルバックOSDノードに送信することは、データ回復要求における最大のシーケンス識別子が、一次OSDノード上にローカルで記憶された現在の最小のシーケンス識別子より小さいと決定すること、一次OSD上にローカルで記憶された現在の最小のシーケンス識別子をフェイルバックOSDノードに送信すること、partitionグループに属し、かつ一次OSDノード上にある一次partitionに対応するすべてのデータを同期させるために、フェイルバックOSDノードによって開始されたデータ回復要求を受信すること、及び一次partitionに対応するすべてのデータをフェイルバックOSDノードに送信することを含み、最小のシーケンス識別子は、partitionグループのIOビューのものであり、かつ一次OSDノード上に記憶された最小のIOビューバージョン番号であり、データに対する変更操作の最小の通し番号が、最小のIOビューバージョン番号に対応するIOビューにおけるpartitionに対応する。
第4の態様によれば、分散ストレージ及びレプリケーションシステムが提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求により、IO要求に対応するデータの記憶を実行するように適応され、システムは、メモリと、プロセッサとを含み、メモリは、コンピュータ可読命令を記憶するように適応され、命令は、MDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実行するのに使用され、プロセッサは、メモリに接続され、メモリの中の命令を読み取り、かつ命令により、プロセッサが、システムにおけるOSDノードが障害を有するOSDノードであると決定し、障害を有するOSDノード上のpartitionを決定し、障害を有するOSDノード上のpartitionを含むpartitionグループのpartitionビューを更新し、及び更新されたpartitionビューにおけるpartitionグループが位置付けられる一次OSDノードに更新通知を送信して、一次OSDノードが、更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理する、ことを可能にするように適応される。
第5の態様によれば、分散ストレージ及びレプリケーションシステムが提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビュー及びIOビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含み、IOビューは、partitionグループの一次OSDの識別子を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求により、IO要求に対応するデータの記憶を実行するように適応され、システムは、メモリと、プロセッサとを含み、メモリは、コンピュータ可読命令を記憶するように適応され、命令は、MDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実行するのに使用され、プロセッサは、メモリに接続され、メモリの中の命令を読み取り、かつ命令により、プロセッサが、IOルーティングモジュールが、IO要求を受信し、IO要求はkeyを含み、keyにより、IO要求に対応するデータが属するpartitionグループを決定し、及びデータが属するpartitionグループの一次OSDノードを決定し、データが属するpartitionグループのIOビューのIOビューバージョン情報をIO要求に追加し、及び決定された一次OSDノードに、IOビューバージョン情報を搬送するIO要求を送信することを可能にすること、一次OSDノードが、IO要求を受信し、IOビューバージョン情報により、IO要求におけるIOビューバージョンが、ローカルで記憶されたIOビューバージョンと整合性があると決定した後、IO要求を実行し、IOビューバージョン情報を搬送するレプリケーション要求を生成し、及びデータが属するpartitionの二次OSDノードにレプリケーション要求を送信することを可能にすること、並びに二次OSDノードが、レプリケーション要求を受信し、及びIOビューバージョン情報により、レプリケーション要求におけるIOビューバージョンが、二次OSDノード上にローカルで記憶されたIOビューバージョンと整合性があると決定した後、レプリケーション要求を実行して、二次OSDノード上のIO要求に対応するデータが、一次OSDノード上のIO要求に対応するデータと整合性を保つことを可能にする、ことを可能にするように適応される。
第6の態様によれば、分散ストレージ及びレプリケーションシステムが提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビュー及びIOビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含み、IOビューは、partitionグループの一次OSDの識別子を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求により、IO要求に対応するデータの記憶を実行するように適応され、システムは、メモリと、プロセッサとを含み、メモリは、コンピュータ可読命令を記憶するように適応され、命令は、MDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実行するのに使用され、プロセッサは、メモリに接続され、メモリの中の命令を読み取り、かつ命令により、プロセッサが、OSDノードが、フェイルバックの後、MDCモジュールにOSDノード上のpartitionを含むpartitionグループのIOビューを要求するクエリ要求を送信し、OSDノードは、フェイルバックOSDノードと呼ばれ、クエリ要求は、フェイルバックOSDノードのOSD識別子を搬送し、MDCによって返されるIOビューを受信し、IOビューにおける一次OSDに対して、障害中にフェイルバックOSDノードによって更新されたデータを回復することを要求するデータ回復要求を開始し、障害中に更新され、かつ一次OSDによって送信されるデータを受信し、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartitionビューにより、IO要求のレプリケーションを処理することを可能にし、MDCモジュールが、フェイルバックOSDノードのクエリ要求を受信し、クエリ要求におけるOSD識別子によりフェイルバックOSDノードにIOビューを返し、及びフェイルバックOSDノードがデータ回復を完了した後、partitionグループのpartitionビューを更新することを可能にすること、並びに一次OSDノードが、フェイルバックOSDノードのデータ回復要求を受信し、フェイルバックOSDノードに、障害中に更新されたデータを送信し、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理することを可能にすること、を可能にするように適応される。
第7の態様によれば、分散ストレージシステムにおいてデータ記憶及びデータレプリケーションを管理するための方法が提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求により、IO要求に対応するデータの記憶を実行するように適応され、方法は、システムにおけるOSDノードが障害を有するOSDノードであると決定し、障害を有するOSDノード上のpartitionを決定し、障害を有するOSDノード上のpartitionを含むpartitionグループのpartitionビューを更新し、及び更新されたpartitionビューにおける一次OSDノードに更新通知を送信する工程を含み、一次OSDノードは、MDCモジュールによって送信された更新通知を受信した後、更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理するように適応される。
第7の態様の第1の可能な実施様態において、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを特に含み、一次OSDノードは、更新されたpartitionビューにより、一次OSDノード上にローカルで記憶されたpartitionビューを更新するようにさらに適応され、更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理することは、更新されたローカルで記憶されたpartitionビューにより、IOルーティングモジュールからのIO要求に対応するデータを、partitionステータスが更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード上に、或いはpartitionステータスが更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード、及びpartitionステータスが更新されたローカルで記憶されたpartitionビューにおいて不整合であるが、データを回復している二次OSDノードの上にレプリケートすることを特に含む。
第7の態様の第1の可能な実施様態を参照して、第2の可能な実施様態において、方法は、障害を有するOSDノード上のpartitionが一次partitionを含むと決定した場合、MDCモジュールによる、一次partitionを含むpartitionグループのIOビューを更新し、及び更新されたIOビューについて更新されたpartitionビューにおける二次OSDノードに通知する工程と、並びに更新されたpartitionビューにおける二次OSDノードによる、更新されたIOビューにより、ローカルで記憶されたIOビューを更新し、及び更新されたローカルで記憶されたIOビューにより、IO要求に対応するデータのレプリケーションを処理する工程と、をさらに含む。
第7の態様の第2の可能な実施様態を参照して、第3の可能な実施様態において、障害を有するOSDノード上のpartitionを含むpartitionグループのpartitionビューを更新することは、障害を有するOSDノード上のpartitionが二次partitionを含む場合、二次partitionを含むpartitionグループのpartitionビューにおいて障害を有するOSDノードのpartitionステータスに不整合であるという印を付ける工程と、並びに障害を有するOSDノード上のpartitionが一次partitionを含む場合、一次partitionを含むpartitionグループのpartitionビューにおいて一次OSDノードの役割をする障害を有するOSDノードを新たな二次OSDノードとして設定し、新たな二次OSDノードに対応するpartitionステータスに不整合であるという印を付けること、partitionステータスが整合性がある二次OSDノードを、一次partitionを含むpartitionグループのpartitionビューにおける元の二次OSDノードから選択し、及び選択された二次OSDノードを新たな一次OSDノードとして設定する工程と、を特に含む。
第8の態様によれば、分散ストレージシステムにおいてデータ記憶及びデータレプリケーションを管理するための方法が提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビュー及びIOビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含み、IOビューは、partitionグループの一次OSDの識別子を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求によりIOデータ記憶を実行するように適応され、方法は、IOルーティングモジュールが、IO要求を受信し、IO要求はkeyを含み、keyにより、IO要求に対応するデータが属するpartitionグループを決定し、及びデータが属するpartitionグループの一次OSDノードを決定し、データが属するpartitionグループのIOビューのIOビューバージョン情報をIO要求に追加し、及び決定された一次OSDノードに、IOビューバージョン情報を搬送するIO要求を送信するように適応されること、一次OSDノードが、IO要求を受信し、IOビューバージョン情報により、IO要求におけるIOビューバージョンが、一次OSDノード上にローカルで記憶されたIOビューバージョンと整合性があると決定した後、IO要求を実行し、IOビューバージョン情報を搬送するレプリケーション要求を生成し、及びデータが属するpartitionグループの二次OSDノードにレプリケーション要求を送信するように適応されること、二次OSDノードが、レプリケーション要求を受信し、及びIOビューバージョン情報により、レプリケーション要求におけるIOビューバージョンが、二次OSDノード上にローカルで記憶されたIOビューバージョンと整合性があると決定した後、レプリケーション要求を実行して、二次OSDノード上のIO要求に対応するデータが、一次OSDノード上のIO要求に対応するデータと整合性を保つように適応されること、を含む。
第8の態様の第1の可能な実施様態を参照して、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを特に含み、方法は、IO要求を処理するプロセスにおいて、一次OSDノードが障害を有するようになったことを検出した場合、MDCモジュールによる、データが属するpartitionグループのpartitionビューにおける一次OSDノードを新たな二次OSDノードとして設定し、及び新たな二次OSDのpartitionステータスに不整合であるという印を付ける工程と、データが属するpartitionグループのpartitionビューにおける二次OSDノードの任意の二次OSDノードを新たな一次OSDノードとして設定し、データが属するpartitionグループの更新されたpartitionビューについて新たな一次OSDノードに通知する工程と、新たな一次OSDノードを使用することによって、データが属するpartitionグループのIOビューを更新し、及びデータが属するpartitionの更新されたIOビューについてIOルーティングモジュールに通知する工程と、をさらに含み、IOルーティングモジュールは、MDCモジュールによって送信されたpartitionグループのものである更新されたIOビューを受信し、及びpartitionグループの更新されたIOビューにより新たな一次OSDノードにIO要求を送信するようにさらに適応され、新たな一次OSDノードは、IO要求を受信し、IO要求を実行した後、第2のレプリケーション要求を生成し、及び第2のレプリケーション要求を、partitionステータスが、データが属するpartitionグループの更新されたpartitionビューにおいて整合性のある二次OSDノードに送信するように適応される。
第2の態様の第2の可能な実施様態を参照して、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを特に含み、方法は、IO要求を処理するプロセスにおいて、二次OSDノードのうちのいずれかの二次OSDノードが障害を有するようになったことを検出した場合、MDCモジュールによる、データが属するpartitionグループのpartitionビューにおけるそのいずれかの二次OSDノードのpartitionステータスに不整合であるという印を付け、及びデータが属するpartitionグループの更新されたpartitionビューについて一次OSDノードに通知する工程をさらに含み、一次OSDノードは、データが属するpartitionグループの更新されたpartitionビューを受信した後、partitionステータスが、更新されたpartitionビューにおいて整合性がある二次OSDノードにレプリケーション要求を送信し、及びpartitionステータスが不整合である二次OSDノードにレプリケーション要求を送信することを省くように適応される。
第9の態様によれば、分散ストレージシステムにおいてデータ記憶及びデータレプリケーションを管理するための方法が提供され、システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを含み、MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、二次partitionを含むpartitionグループの二次OSDノードであり、並びにpartitionによりpartitionビュー及びIOビューを生成し、partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を含み、IOビューは、partitionグループの一次OSDの識別子を含む、ように適応され、IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、OSDノードは、IO要求により、IO要求に対応するデータの記憶を実行するように適応され、方法は、OSDノードが、フェイルバックの後、MDCモジュールにOSDノード上のpartitionを含むpartitionグループのIOビューを要求するクエリ要求を送信し、OSDノードは、フェイルバックOSDノードと呼ばれ、クエリ要求は、フェイルバックOSDノードのOSD識別子を搬送し、MDCによって返されるIOビューを受信し、IOビューにおける一次OSDに対して、障害中にフェイルバックOSDノードによって更新されたデータを回復することを要求するデータ回復要求を開始し、障害中に更新され、かつ一次OSDによって送信されるデータを受信し、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartitionビューにより、IO要求のレプリケーションを処理するように適応されること、MDCモジュールが、フェイルバックOSDノードのクエリ要求を受信し、クエリ要求におけるOSD識別子によりフェイルバックOSDノードにIOビューを返し、及びフェイルバックOSDノードがデータ回復を完了した後、partitionグループのpartitionビューを更新するように適応されること、及び一次OSDノードが、フェイルバックOSDノードのデータ回復要求を受信し、フェイルバックOSDノードに、障害中に更新されたデータを送信し、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartitionビューにより、IO要求に対応するデータのレプリケーションを処理するように適応されること、を含む。
本発明の実施形態における技術的ソリューションをより明確に説明するのに、以下に、本発明を説明するのに要求される添付の図面について簡単に説明する。明らかに、以下の説明における添付の図面は、本発明のいくつかの実施形態を示すに過ぎず、当業者は、それでも、創造的な努力なしにこれらの添付の図面から他の図面を導き出すことが可能である。
従来技術における2フェーズコミットプロトコルを示す流れ図である。 本発明の実施形態による分散ストレージ及びレプリケーションシステムを示す概略アーキテクチャ図である。 本発明の別の実施形態による分散ストレージ及びレプリケーションシステムを示す概略アーキテクチャ図である。 本発明の別の実施形態による分散ストレージ及びレプリケーションシステムを示す概略アーキテクチャ図である。 本発明の実施形態によるクラスタビューを示す概略図である。 本発明の実施形態によるOSDビューステータス遷移を示す概略図である。 本発明の別の実施形態による分散ストレージ及びレプリケーションシステムを示す概略構造図である。 本発明の実施形態によるビュー初期化を示す流れ図である。 本発明の実施形態によるIO要求処理を示す流れ図である。 本発明の実施形態によるIO要求処理を示す流れ図である。 本発明の実施形態によるOSD障害処理を示す流れ図である。 本発明の実施形態によるOSD障害処理を示す流れ図である。 本発明の実施形態によるOSDフェイルバック処理を示す流れ図である。 本発明の実施形態によるOSDフェイルバック処理を示す流れ図である。 本発明の実施形態によるOSDフェイルバック処理を示す流れ図である。 本発明の実施形態によるOSDフェイルバック処理プロセスにおけるデータ回復を示す流れ図である。 本発明の実施形態によるOSDフェイルバック処理プロセスにおけるデータ回復を示す流れ図である。 本発明の実施形態によるOSDがクラスタから出た後に実行される処理を示す流れ図である。 本発明の実施形態によるOSDがクラスタから出た後に実行される処理を示す流れ図である。 本発明の実施形態による新たなOSDがクラスタに参加した後に実行される処理を示す流れ図である。 本発明の実施形態による新たなOSDがクラスタに参加した後に実行される処理を示す流れ図である。
以下に、本発明の実施形態における添付の図面を参照して、本発明の実施形態における技術的ソリューションを明確に、かつ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態のすべてではなく、いくつかに過ぎない。創造的な努力なしに本発明の実施形態に基づいて当業者によって得られる他のすべての実施形態は、本発明の保護範囲に入るべきものとする。
図2Aに示されるとおり、本発明の特定の実施形態は、本発明のこの実施形態において言及されるデータ記憶及びレプリケーションを管理及び制御するために、分散ストレージ及びレプリケーション制御システムを提供する。分散ストレージ及びレプリケーション制御システムは、3つの副層、すなわち、ステータス層、インターフェース層、及びデータ層を主に含む。ステータス層は、メタデータ制御Meta Data Controller(MDC)モジュール202を含み、実際の応用において、MDCの二次MDCが構成される必要があるかどうか、及び二次MDCの数量は、要件に応じて決定されることが可能であり、二次MDCは、一次MDCモジュールが障害を有するようになった場合、一次MDCの役割をするように適応される。インターフェース層は、複数のIOルーティングモジュール(Input/Output入出力ルーティングモジュール)204(クライアントとも呼ばれ、この2つの概念は、本発明の実施において互換的であり得る)を含む。データ層は、複数のオブジェクトベースのストレージデバイスObject Storage Device(OSD)ノード206を含む。ステータス層は、ステータスビューメッセージを使用することによってインターフェース層及びデータ層と通信する。例えば、MDCモジュール202が、ステータスビューメッセージを使用することによってIOルーティングモジュール204及びOSDノード206に更新通知を送信して、IOルーティングモジュール204及びOSDノード206がローカルクラスタビュー(viewと呼ばれることも可能であり、この2つの概念は、本発明の実施において互換的であり得る)を更新するようにする、又はMDCモジュール202によって生成された、若しくは更新されたクラスタビューをIOルーティングモジュール204及びOSDノード206に直接に送信するように指示する。インターフェース層とデータ層は、サービスメッセージを使用することによって互いに通信する。例えば、IOルーティングモジュール204が、IOデータ記憶及びレプリケーションを要求するIO要求メッセージをOSDノード206に送信する。
MDCモジュール202は、クラスタ構成情報の供給のための入口として、各OSDノードにアプリケーションストレージスペースにおける論理ストレージリソースの論理パーティション(partition)を割り当て、partitionによりクラスタビューを生成し、クラスタビューを維持し、かつ更新し、及びクラスタビュー更新について、対応するIOルーティングモジュール204及びOSDノード206に通知するように適応される。
IOルーティングモジュール204は、クラスタビューにより対応するOSDノードに上位層アプリケーションのIO要求をルーティングするように、かつ転送するように適応される。
OSDノード206は、データバックアップ整合性を実現するために、クラスタビューによりIO要求に対して関連するIO操作を実行し、関連するIO操作は、データを記憶しかつレプリケートすることを含み、及びOSDノード206によって管理される物理ストレージリソース(例えば、ローカルディスク又は外部ストレージリソース)上でデータ操作を編成する、ように適応される。
前述のMDCモジュール、IOルーティングモジュール、及びOSDノードは、ハードウェア、ファームウェア、ソフトウェア、又は以上の組合せによって実施され得ることが理解され得る。実際のアプリケーションにおいて、特定の実施様態は、製品設計要件又は製造費用を考慮して決定され、本発明は、特定の実施様態に限定されるべきものではない。
本発明の特定の実施形態において、分散ストレージ及びレプリケーションシステム全体が、独立したプラットフォーム又はサーバ(例えば、前述の図2Bにおける分散ストレージ及びレプリケーション制御プラットフォーム)に配置されて、そのプラットフォーム又はサーバに接続された分散ストレージシステムにおけるデータレプリケーション及びデータ記憶を管理するようにする。
本発明の別の特定の実施形態において、分散ストレージ及びレプリケーション制御システムは、図2Cに示される分散ストレージシステムにおいて分散された様態で配置され得る。分散ストレージシステムは、複数のサーバはホストを含み、この実施形態におけるホスト又はサーバは、物理ホスト又は物理サーバであり、すなわち、プロセッサ及びメモリなどのハードウェアを含む。前述のMDCモジュール202は、分散ストレージシステムにおいて1つだけのサーバ若しくはホストの上に(二次MDCなし)、又は2つのサーバ若しくはホストの上に(1つの一次MDCモジュール、及び1つの二次MDCモジュール)、又は3つのサーバ若しくはホスト上に(1つの一次MDCモジュール、及び2つの二次MDCモジュール)配置されることが可能である。IOルーティングモジュール204は、分散ストレージシステムにおいて各サーバ又は各ホストの上に配置される。OSDノード206は、分散ストレージシステムにおいてストレージリソースを有する各サーバ又は各ホストの上に配置されて、ローカルストレージリソース又は外部ストレージリソースを管理し、かつ制御するようにする。実際の応用形態において、IOルーティングモジュール又はOSDノード、或いはIOルーティングモジュールとOSDノードの両方が、1つのホスト上に配置されてもよく、特定の配置様態は、本発明において限定されない、実際の特定の状況により決定されることが可能である。図2CにおけるMDCモジュール202、IOルーティングモジュール204、及びOSDノード206が、図2Bに示される分散ストレージシステムにおいて分散レプリケーションプロトコル層と呼ばれる分散ストレージ制御システムを構成する。分散ストレージシステムは、分散レプリケーションプロトコル層を使用することによってストレージ層におけるストレージリソースに対するIOデータ記憶及びレプリケーションを制御する。ストレージ層は、複数のサーバ又はホストの上のローカルストレージリソースを含み、分散レプリケーションプロトコル層にあり、かつサーバ又はホストの上に分散されたモジュールは、ネットワーク層における交換データネットワークを使用することによって互いに対話する。特定の実施様態において、イーサネット又はinfinibandが使用されてもよい。前述のイーサネット又はinfinibandは、本発明のこの実施形態において限定されない、本発明のこの実施形態において使用される高速交換データネットワークの例示的な実施様態に過ぎないことを理解されたい。
以下に、特定の実施形態及び実施様態を使用して、前述の分散ストレージ及びレプリケーション制御システムにおけるMDCモジュール202、IOルーティングモジュール204、及びOSDノード206の接続及び対話、特定の機能などについて詳細に説明する。
本発明の特定の実施形態において、MDCモジュールのパーティション機能は、MDCモジュールが、各OSDノードによって管理される物理ストレージリソースのステータスにより、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する論理パーティション(partition)を構成することを特に含み得る。partitionは、アプリケーションストレージスペースにおける特定の数量のデータブロックを含む。ストレージ層における物理ストレージスペースと比べて、アプリケーション層におけるアプリケーションストレージスペースは、アプリケーション層によってユーザに割り当てられた特定の量の論理ストレージスペースであり、ストレージ層における物理ストレージスペースの論理マッピングである。すなわち、本明細書におけるpartitionの概念は、物理ストレージスペースパーティションの概念とは異なる。データが記憶される際、アプリケーションストレージスペースにおける1つのpartitionのスペースが、物理ストレージスペースにおける1つ又は複数のパーティションにマップされることが可能である。partitionの特定の粒度は、クラスタ構成情報から獲得されることが可能であり、又は特定の規則によりMDCモジュールによって決定されることが可能であり、又は別の様態によって決定されることが可能であり、このことは、本発明において限定されない。
特定の実施様態において、MDCモジュールは、partitionサイズ構成情報、ローカルストレージリソースステータス、及び外部ストレージリソースステータス(例えば、通常どおりにアクセスされるSAN(Storage Area Network,ストレージエリアネットワーク)のLUN(Logical Unit Number,論理単位番号)情報)などの情報によりpartitionのクラスタビューを生成することが可能である。
一般に、データ信頼性及びデータ利用可能性を確実にするのに、partitionは、異なるOSDノード上に記憶されたレプリカを有し、partitionレプリカ数量は、構成ファイルを使用することによって構成されることが可能であり、又は特定のアルゴリズムによりMDCによって決定されることが可能である。分類により一次partition及び二次partitionが存在する。すなわち、partitionの複数のレプリカから1つのレプリカが一次レプリカとして選択され、その一次レプリカが一次partitionと呼ばれ、partitionの一次レプリカ以外のレプリカは、二次partitionと呼ばれる。一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、一次partitionが位置付けられるOSDノードが、一次partitionを含むpartitionグループの一次OSDノードと呼ばれ、この実施形態において説明される一次OSDは、partitionグループの一次OSDを指し、二次partitionが位置付けられるOSDノードが、二次partitionを含むpartitionグループの二次OSDノードと呼ばれ、この実施形態において説明される二次OSDは、partitionグループの二次OSDを指す。
理解を容易にするのに、以下に、図2において提供される実施形態を参照してさらなる説明を提供する。図2に示されるとおり、ホスト又はサーバserver_1(本発明のこの実施形態におけるホスト及びサーバの概念は、互換的であり得る)の上でOSDによって管理されるストレージリソースが、partition1、partition2、及びpartition3(略してP1、P2、P3)、並びにpartition4’、partition5’、及びpartition6’(略してP4’、P5’、P6’)に分割され、P4’、P5’、P6’は、それぞれ、サーバserver_2上のOSDノード上のpartition4、partition5、及びpartition6(略してP4、P5、及びP6)のレプリカである。server_1上のOSD上のpartitionとストレージ層における物理ストレージリソースの間に対応するマッピング関係が存在する。例えば、OSD上の1つのpartitionのスペースが、物理ストレージスペースにおける1つ又は複数のBlockにマップされる。
ホスト又はサーバserver_1の上のOSDが、一次partition(P1、P2、P3)及び二次partition(P4’、P5’、P6’)を管理し、OSDは、別々に、P1及びP1’を含むpartitionグループの一次OSDノード、P2及びP2’を含むpartitionグループの一次OSDノード、並びにP3及びP3’を含むpartitionグループの一次OSDノードであり、さらに、OSDは、別々に、P4及びP4’を含むpartitionの二次OSDノード、P5及びP5’を含むpartitionの二次OSDノード、並びにP6及びP6’を含むpartitionの二次OSDノードである。異なるpartitionグループに関して、同一のOSDノードが、同時に一次OSDノードと二次OSDノードの役割をすることが可能であることが知られ得る。
前述のパーティション、び対応するレプリカは、以下の要因により設定されることが可能であり、特定の応用形態において、別の要因がディスクパーティションを設定するのに、かつ計画するのに考慮に入れられることが可能である。
第1に、データセキュリティであり、すなわち、各パーティションのレプリカが可能な限り異なるホスト又はサーバに分散されるべきである。データセキュリティの要点は、partitionの複数のレプリカが同一のホスト又はサーバの上に配置されることを許されないことである。第2に、データ平衡であり、各OSD上のpartitionの数量が可能な限り同一に保たれる。各OSD上の一次partitionの数量、二次partition1の数量、及び二次partition2の数量は、可能な限り同一に保たれて、すべてのOSD上で処理されるサービスが平衡されて、ホットスポットが出現しないようにされる。第3に、データ拡散であり、すなわち、各OSD上のpartitionのレプリカが、可能な限り均等に異なる他のOSDに分散されるべきであり、同一の要件が、より高レベルの物理構成要素にも当てはまる。
に示されるとおり、本発明の特定の実施形態において、MDCモジュールがクラスタビュー情報を生成することは、MDCが、管理者によって供給されるクラスタ構成情報、及びパーティション状況によりクラスタビュー情報を生成することを特に含むことが可能である。特に、クラスタビュー情報は、3つの次元におけるクラスタビュー、すなわち、OSDビュー(OSD view)、IOビュー(IO view)、及びPartitionビュー(partition view)を含む。
OSD viewは、クラスタにおけるOSDノードのステータス情報を含む。特定の実施様態において、OSD viewは、OSDノードのIDと、OSDノードのステータス情報とを含むことが可能であり、OSD IDは、OSDマーカ又はOSD番号である。図に示される本発明の実施形態において、OSDステータスは、OSDが障害を有するかどうかにより、「アップ(UP)」状態と「ダウン(DOWN)」状態に特に分類されること、及びOSDがクラスタから出るかどうかにより、「アウト(OUT)」状態と「イン(IN)」状態に分類されることが可能である。図に示されるとおり、特定のステータス遷移は、フェイルバックの後、OSDノードが初期化され、又は再起動され、次に、「イン(IN)」かつ「ダウン(DOWN)」状態から「イン(IN)」かつ「アップ(UP)」状態に遷移することを含む。OSDの障害が特定の閾値を超えて(例えば、5分を超えて)続く場合、OSDノードは、クラスタから追放され、相応するように、OSDノードは、「イン(IN)」かつ「ダウン(DOWN)」状態から「アウト(OUT)」かつ「ダウン(DOWN)」状態に遷移する。本発明の特定の実施形態において、OSD viewは、OSD viewバージョン番号、OSD view ID、又はビューバージョンに印を付ける他の任意の情報などのOSD viewバージョン情報をさらに含むことが可能である。
IO viewは、partitionグループの一次OSDノードを識別する識別子を含む。特定の実施様態において、IO viewは、partitionグループIDと、partitionグループIDに対応するpartitionグループの一次OSDノードの識別子とを含むことが可能である。各IO viewは、IO viewを識別するIO viewバージョン情報を有し、IO viewバージョン情報は、IO viewのバージョンを識別して、異なるモジュールがIO viewバージョンを比較するのを助けるようにするのに使用されるIO view ID(IO viewバージョン番号とも呼ばれ得る)であることが可能である。特定の実施形態において、IO viewバージョン情報は、IO viewに含められても、IO viewから除外されてもよい。
partition viewは、partitionグループにおけるpartitionが位置付けられるOSDについての情報を含む。特定の実施様態において、partition viewは、partitionグループID、partitionグループIDに対応するpartitionグループにおける各パーティションが位置付けられるOSD、及びそのOSDの一次/二次ID、並びに各パーティションのOSDに対応するpartitionステータスを含むことが可能である。partition viewは、一次partitionが位置付けられるOSDノードについての情報(OSDノードID、OSDノードの一次/二次ID、及び一次partitionのOSDノードに対応するpartitionステータスなどの)と、一次partitionに対応する二次partition(1つ又は複数の二次partitionが存在することが可能である)が位置付けられるOSDノードについての情報(OSDノードID、OSDノードの一次/二次ID、及びそのOSDに対応する二次partitionのpartitionステータスなどの)とを含む。特定の実施形態において、partitionステータスは、2つのタイプ、すなわち、「整合性がある」と「不整合である」に分類されることが可能であり、「整合性がある」は、二次partitionにおけるデータが一次partitionにおけるものと整合性があることを示し、「不整合である」は、二次partitionにおけるデータが一次partitionにおけるものと不整合であり得ることを示す。各partition viewは、partition viewを識別するpartition viewバージョン情報を有し、partition viewバージョン情報は、モジュールが viewを比較するようにpartition view ID(partition viewバージョン番号とも呼ばれ得る)であり得る。特定の実施形態において、partition viewバージョン情報は、partition viewに含められても、partition viewから除外されてもよい。特定の実施形態において、IO viewは、partition viewのサブセットである、すなわち、partition viewは、IO view情報を含むので、partition viewは、IO viewバージョン情報をさらに含むことが可能である。
MDCは、クラスタビューを維持し、管理し、かつ更新し、障害、フェイルバック、障害の後にクラスタから出て、フェイルバックの後にクラスタに再び参加し、及びクラスタに新たに参加することなどのOSDノードステータスにより、クラスタビューを更新し、並びにクラスタビュー更新について関連するモジュールに通知して、関連するモジュールが、更新されたクラスタビューにより、対応するIO要求に対応するデータのレプリケーションを処理する、ようにさらに適応される。
特定の実施様態において、対話を減らし、かつ管理リソース及びストレージリソースを節約するのに、OSD viewが、MDC上にだけ存在することが可能であり、partition viewが、MDCモジュール及び一次OSDノードの上にだけ存在することが可能であり、IO viewが、MDCモジュール、IOルーティングモジュール、一次OSDノード、及び二次OSDノードの上に存在する。MDCモジュールは、partition viewにおけるpartitionが位置付けられる一次OSDノードにだけpartition viewを送信し、又はpartition viewにおけるpartitionが位置付けられる一次OSDノードにだけローカルpartition viewを更新するよう指示し、partition viewの一部分を構成するIO view(すなわち、IO viewは、partition viewのサブviewと見なされ得る)をIOルーティングモジュール、一次OSDノード、及び二次OSDノードに送信し、又は対応するモジュールにローカルで記憶されたIO viewを更新するよう指示する。特定の実施プロセスに関しては、後段の特定の手順、及びOSDがクラスタに参加する手順を参照されたい。実際の応用形態において、MDCモジュールは、構成情報若しくは特定のポリシーにより、かつクラスタビューの基本的機能により、クラスタビューを異なる形態で設定してもよく、このことは、本発明のこの実施形態において限定されない。
本発明の特定の実施形態において、IOルーティングモジュールは、IO要求ルーティング機能を実施するように主に適応される。IOルーティングモジュールは、MDCモジュールからクラスタにおけるすべてのpartitionのIO viewを獲得し、IO viewをキャッシュする。サービスIO要求がIOルーティングモジュールに着信すると、IOルーティングモジュールは、IO要求の中のkeyを使用することによって計算を用いて(ハッシュアルゴリズム又は別のアルゴリズムが計算方法において使用され得る)、IOが属するpartitionグループを獲得し、次に、ローカルで記憶されたIO viewを探索して、partitionグループに対応する一次OSDノードを見出し、一次OSDノードにIO要求を送信する。IOルーティングモジュールは、MDCモジュールから受信されたIO view更新通知を処理し、更新通知は、例えば、更新されるべきコンテンツを示す更新されたIO view又は対応する更新インジケーション情報を含み得、更新通知によりローカルで記憶されたIO viewを更新し、及び更新されたローカルで記憶されたIO viewによりIO要求をルーティングする。特定の実施プロセスに関しては、以下の特定の手順を参照されたい。
本発明の特定の実施形態において、OSDノードが、クラスタビューによりIO要求を処理してIO操作を実行することは、以下を特に含む。すなわち、
OSDノードが一次OSDノードの役割をする場合、一次OSDノードは、IOルーティングモジュールによって送信されたIO要求を受信すること、IO要求を実行すること、及び対応する二次OSDノードにレプリケーション要求を送信して、IOデータ記憶及びレプリケーションを実行するように主に適応される。一次OSDノードは、MDCモジュールから一次OSDノード上のpartitionのpartition viewを受信し、partition viewを記憶する。一次OSDノードは、partition viewによりIO要求のレプリケーションを処理する。一次OSDノードはさらに、MDCモジュールから、partition viewについての更新通知を受信し、更新通知によりローカルで記憶されたpartition viewを更新し、及び更新されたpartition viewにより、IO要求に対応するデータのレプリケーションを処理し、更新通知は、更新されたpartition view又は対応する更新情報を含むことが可能であり、それにより、OSDノードが、更新されたpartition view又は更新情報によりローカルで記憶されたpartition view及びIO viewを更新するようになっている。OSDノードが二次OSDノードの役割を果たす場合、二次OSDノードが、一次OSDノードのレプリケーション要求を受信し、レプリケーション要求によりデータレプリケーション及びデータバックアップを実行し、MDCモジュールから、二次OSDノード上のデータが属するpartitionのIO viewを受信し、IO viewを記憶し、IO viewにより、IO要求に対応するデータのレプリケーションを処理し、MDCモジュールから、IO viewについての更新通知をさらに受信し、更新通知によりローカルで記憶されたIO viewを更新し、更新されたIO viewにより、IO要求に対応するデータのレプリケーションを処理するように適応される。特定の実施プロセスに関しては、後段の特定の手順を参照されたい。
本発明の特定の実施形態において、前述の実施形態における分散ストレージ及びレプリケーションシステム(図2A、図2B、及び図2Cに示される)が、図5に示されるシステムに基づいて実施され得る。図5に示されるとおり、システムは、1つ又は複数のメモリ502、1つ又は複数の通信インターフェース504、及び1つ又は複数のプロセッサ506、或いは別のデータ対話ネットワーク(複数のプロセッサとメモリの間の対話のために使用され、図示されない)を含むことが可能である。
メモリ502は、読取り専用メモリ(Read Only Memory,ROM)、スタティックストレージデバイス、ダイナミックストレージデバイス、又はランダムアクセスメモリ(Random Access Memory,RAM)などの様々なタイプのメモリであることが可能である。メモリ502は、オペレーティングシステム、並びに別のアプリケーションプログラムの命令及びアプリケーションデータを記憶することが可能であり、命令は、本発明の様々な実施形態におけるMDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実行するために使用される命令を含む。
メモリ502に記憶された命令は、プロセッサ506によって実施され、実行される。
通信インターフェース504は、メモリ502とプロセッサ506の間の通信、プロセッサ間の通信、メモリ間の通信、及びシステムと別のデバイス若しくは通信ネットワークの間の通信を実施するように適応される。
プロセッサ506は、汎用中央処理装置(Central Processing Unit,CPU)、マイクロプロセッサ、特定用途向け集積回路(Application Specific Integrated Circuit,ASIC)、或いは1つ又は複数の集積回路であることが可能であり、関連するプログラムを実行して、本発明の様々な実施形態において説明されるMDCモジュール、IOルーティングモジュール、及びOSDノードの間の対話の手順、並びに実施される機能を実行するように適応される。
理解を容易にし、不必要な繰り返しの説明を回避するのに、後段の特定の実施形態が、本発明の実施形態において説明されるMDCモジュール、IOルーティングモジュール、及びOSDノードの間の対話の手順、並びに実施される機能がどのように、図5に示されるシステムにおいて実行されるかを説明するのに使用される。本発明のすべての実施形態に基づいて、当業者は、図5に示されるシステムが、他の様々な実施形態において説明される事例を実施するのに適応されることが可能であり、それらの事例のすべては、本発明の記録され開示される範囲に入ることを理解されよう。
実施形態1
プロセッサは、メモリに接続されて、メモリの中の命令を読み取ることであって、命令は、MDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実行するために使用される命令を含むこと、及び命令により、プロセッサが以下の操作、すなわち、
MDCモジュールが、システムにおけるOSDノードが障害を有するOSDノードであると決定すること、障害を有するOSDノード上のpartitionを決定すること、障害を有するOSDノード上のpartitionを含むpartitionグループのpartition viewを更新すること、及び更新されたpartition viewにおけるpartitionグループが位置付けられている一次OSDノードに更新通知を送信して、一次OSDノードが、更新されたpartition viewにより、IO要求に対応するデータのレプリケーションを処理することを可能にすること、
を実行することを可能にするように適応される。
前述の実施形態において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能は、1つのホストによって実施され得ることに留意されたい。この事例において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実施するための命令は、ホストのメモリの中に存在することが可能であり、ホストのプロセッサが、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実施するための命令をメモリから読み取る。別の実施形態において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能は、複数のホストによって対話様態で実施され得る。この事例において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードは、異なるホストのメモリに分散様態で記憶される。例えば、ホスト1のプロセッサが、前述のMDCモジュールの機能を実行し、ホスト2のプロセッサが、一次OSDノードの機能を実行し、ホスト3が、IOルーティングモジュールの機能を実行する。
実施形態2
プロセッサは、メモリに接続されて、メモリの中の命令を読み取ることであって、命令は、MDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実行するために使用される命令を含むこと、及び命令により、プロセッサが以下の操作、すなわち、
IOルーティングモジュールが、IO要求を受信することであって、IO要求は、keyを含む、受信すること、keyにより、IO要求に対応するデータが属するpartitionグループを決定すること、データが属するpartitionグループの一次OSDノードを決定すること、データが属するpartitionグループのIO viewのIO viewバージョン情報をIO要求に追加すること、及び決定された一次OSDノードに、IO viewバージョン情報を搬送するIO要求を送信すること、を可能にすること、
一次OSDノードが、IO要求を受信すること、IO viewバージョン情報により、IO要求におけるIO viewバージョンが、ローカルで記憶されたIO viewバージョンと整合性があると決定した後、IO要求を実行すること、IO viewバージョン情報を搬送するレプリケーション要求を生成すること、及びレプリケーション要求を、データが属するpartitionの二次OSDノードに送信すること、を可能にすること、並びに
二次OSDノードが、レプリケーション要求を受信し、IO viewバージョン情報により、レプリケーション要求におけるIO viewバージョンが、二次OSDノード上にローカルで記憶されたIO viewバージョンと整合性があると決定した後、レプリケーション要求を実行して、二次OSDノード上のIO要求に対応するデータが、一次OSDノード上のIO要求に対応するデータと整合性を保つことを可能にすること、
を実行することを可能にするように適応される。
同様に、前述の実施形態において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能は、1つのホストによって実施されることが可能である。この事例において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実施するための命令は、ホストのメモリの中に存在することが可能であり、ホストのプロセッサが、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実施するための命令をメモリから読み取る。別の実施形態において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能は、複数のホストによって対話様態で実施され得る。この事例において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードは、異なるホストのメモリに分散様態で記憶される。例えば、ホスト1のプロセッサが、前述のIOルーティングモジュールの機能を実行し、ホスト2のプロセッサが、一次OSDノードの機能を実行し、ホスト3のプロセッサが、二次OSDノードの機能を実行し、ホスト4のプロセッサが、MDCモジュールの機能を実行する。
実施形態3
プロセッサは、メモリに接続されて、メモリの中の命令を読み取ることであって、命令は、MDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実行するために使用される命令を含むこと、及び命令により、プロセッサが以下の操作、すなわち、
OSDノードが、フェイルバックの後、MDCモジュールに、OSDノード上のpartitionを含むpartitionグループのIO viewを要求するクエリ要求を送信することであって、OSDノードは、フェイルバックOSDノードと呼ばれ、クエリ要求は、フェイルバックOSDノードのOSD識別子を搬送する、送信すること、MDCによって返されるIO viewを受信すること、IO viewにおける一次OSDに対してデータ回復要求を開始して、障害中にフェイルバックOSDノードによって更新されたデータを回復することを要求すること、障害中に更新され、かつ一次OSDによって送信されるデータを受信すること、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartition viewにより、IO要求のレプリケーションを処理すること、を可能にすること、
MDCモジュールが、フェイルバックOSDノードのクエリ要求を受信すること、クエリ要求におけるOSD識別子によりフェイルバックOSDノードにIO viewを返すこと、及びフェイルバックOSDノードがデータ回復を完了した後、partitionグループのpartition viewを更新すること、を可能にすること、並びに
一次OSDノードが、フェイルバックOSDノードのデータ回復要求を受信すること、フェイルバックOSDノードに、障害中に更新されたデータを送信すること、及びpartitionグループのものであり、かつフェイルバックOSDノードがデータ回復を完了した後にMDCモジュールによって更新されたpartition viewにより、IO要求に対応するデータのレプリケーションを処理すること、を可能にすること、
を実行することを可能にするように適応される。
同様に、前述の実施形態において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能は、1つのホストによって実施されることが可能である。この事例において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実施するための命令は、ホストのメモリの中に存在することが可能であり、ホストのプロセッサが、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能を実施するための命令をメモリから読み取る。別の実施形態において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードの機能は、複数のホストによって対話様態で実施され得る。この事例において、前述のMDCモジュール、IOルーティングモジュール、及びOSDノードは、異なるホストのメモリに分散様態で記憶される。例えば、ホスト1のプロセッサが、前述のフェイルバックOSDノードの機能を実行し、ホスト2のプロセッサが、一次OSDノードの機能を実行し、ホスト3のプロセッサが、MDCモジュールの機能を実行し、ホスト4のプロセッサが、IOルーティングモジュールの機能を実行する。
以下に、複数の特定の手順実施形態を使用して、前述の分散ストレージ及びレプリケーション制御システムにおけるMDCモジュール202、IOルーティングモジュール204、及びOSDノード206の接続及び対話、特定の機能などを詳細にさらに説明する。これらの特定の手順実施形態は、クラスタビューの初期化された生成及び獲得の手順、IO要求処理手順、OSD障害処理手順、OSDノードフェイルバック手順、データ回復手順、OSDノードが障害の後にクラスタから出る手順、新たなOSDノードがクラスタに参加する手順を含み、これらの手順が、以下に1つずつ詳細に説明される。
前述の実施形態におけるすべてのステップ、又はすべての機能が必要であるわけではなく、ステップのシーケンスは、説明を簡単にすることを目的としているに過ぎず、本発明の問題解決法の原理により必然的に要求されるのでない限り、特に限定されず、さらに、ステップにおける特定の実施態は、説明的な例として使用されるに過ぎず、本発明の保護範囲に対する特定の限定を構成しないことに留意されたい。本発明の明細書全体に基づいて、当業者は、実際の状況により前述のステップに対して、対応する追加又は削除、或いは非独創的な変更又は置換を行うこと、並びにそれらのステップにおける様々な実施様態を、他のステップにおける実施様態と組み合わせて、異なる実施形態を形成することが可能であり、以上のすべては、本発明の記録され開示される範囲に入る。
クラスタビューの初期化された生成及び獲得の手順
図6が、本発明によるクラスタビューの初期化された生成及び獲得の実施形態を示す。この実施形態において、MDCモジュールは、管理者によって供給されるクラスタ構成情報により初期クラスタビューを生成する。IOルーティングモジュール及びOSDノードが、初期化中にviewに関してMDCモジュールにクエリを行う。この実施形態は、図2Aないし図2C、及び図5において説明される実施形態において言及されるMDCモジュール、IOルーティングモジュール、及びOSDノードによって実行される。
システム初期化中、MDCモジュールがまず開始され、次に、IOルーティングモジュール及びOSDノードによる、MDCからviewを獲得することが開始される。特定のプロセスは、以下のステップを含む。すなわち、
602 ユーザ又は管理者が、MDCモジュールにクラスタ構成情報を供給し、クラスタ構成情報は、クラスタトポロジ情報、partition数量、及びレプリカ数量などのシステム構成パラメータを含むことが可能であり、クラスタトポロジ情報は、サーバの数量及びサーバのIPアドレス、ラック情報、各サーバ上のOSDノードの数量、並びにOSDノードによって管理される物理ストレージリソースについての情報(例えば、OSDノードに対応するローカルディスク情報)などを主に含む。
604 MDCが、供給されたクラスタ構成により初期クラスタビューを生成し、3つのタイプのクラスタビュー(OSD view、partition view、及びIO view)が既に前段で説明されており、MDCは、構成されたOSD情報によりOSD viewを生成し、partition割当てアルゴリズム、構成されたpartition数量、レプリカ数量、及びOSDノード数量を使用することによってpartition viewを生成し、partition viewのサブセットであるIO viewをさらに生成する必要はなく、partition viewが生成される場合、partition割当て平衡(各OSDノード上のpartitionの数量が可能な限り同一に保たれる)及びセキュリティ(partitionレプリカが存在するOSDノードが異なるサーバ、又は異なるラックにある)が一般に考慮される必要がある。
606 IOルーティングモジュールの初期化を開始し、IO viewに関してMDCモジュールにクエリを行い、開始される場合、IOルーティングモジュールは、MDCから関連するviewを獲得して、正常に機能するようにする必要がある。
608 OSDノードの初期化を開始し、partition view及びIO viewに関してMDCモジュールにクエリを行い、OSDノードは、OSDノード上に分散された一次partitionを含むpartitionグループのpartition view、及びOSDノード上に分散された二次partitionを含むpartitionグループのIO viewを獲得する必要がある。
610 MDCモジュールが、すべてのpartitionグループのIO viewをIOルーティングモジュールに返す。
612 MDCモジュールが、OSDノードに、OSDノード上に分散された一次partitionを含むpartitionグループのpartition view、及びOSDノード上に分散された二次partitionを含むpartitionグループのIO viewを返す。
IO要求処理手順
図7A及び図7Bが、本発明によるIO要求手順の実施形態を示す。この実施形態は、図2Aないし図2C、及び図5において説明される実施形態において言及されるIOルーティングモジュール及びOSDノードによって実行される。理解を容易にするのに、partitionグループ(Partition X)が、この実施形態における説明のための例として使用され、Partition Xは、本発明のこの実施形態における分散レプリケーションプロトコル層によって管理され、保持される任意のパーティションあることが可能であり、Partition Xが位置付けられる一次OSDノードは、Partition X一次OSDノードと略記され、Partition Xにおける二次partitionが位置付けられる二次OSD1ノードは、Partition X二次OSD1ノードと略記され、Partition Xが位置付けられる二次partition上の二次OSD2ノードは、Partition X二次OSD2ノードと略記される。partitionXは、以下の特定の説明における例として使用される。この実施形態におけるIO操作手順(例えば、書込み操作又は変更操作)は、以下のステップを特に含む。すなわち、
702 IOルーティングモジュールが、ホスト(例えば、IOルーティングモジュールが位置付けられる図2Cに示されるサーバ)によって送信されるIO要求を受信する。
704 IOルーティングモジュールが、受信されたIO要求により、IO要求に対応するデータ(IOデータとも呼ばれ得る)のpartitionを獲得し、そのpartitionを含むpartitionグループの一次OSDノードを獲得する。
特定の実施様態において、IOルーティングモジュールは、ハッシュアルゴリズムを使用することによって計算を用いて、かつIO要求において搬送されるKeyにより、IO要求に対応するデータを含むpartitionグループのpartition IDを獲得することが可能であり、次に、partition IDを使用することによってIO viewを探索して、partitionグループの一次OSDノードを獲得するようにする。前述したとおり、本明細書におけるpartition IDに対応するpartitionグループは、この実施形態におけるpartition Xである。Keyは、上位層サービスにおいて定義される数字又は文字ストリングであり、データブロックを識別するのに使用される。
706 IOルーティングモジュールが、partitionグループの一次OSDノードにIO要求を送信し、要求は、IO viewバージョン情報(例えば、IO view ID)、IOキー情報、及びIOデータを搬送する。
前述の説明によれば、この実施形態におけるpartitionグループは、partition Xであり、したがって、IO要求は、partition Xの一次OSDノード、すなわち、partition X一次OSDノードに送信される。特定の実施様態において、IO view IDは、IO viewバージョン番号と呼ばれることも可能であり、IO viewバージョン番号は、ビューバージョンを識別するのに主に使用され、単調増加し、小さいIO view IDは、一次OSDノードによって保持されるビューバージョンが古くなっていることを示し、整合性を確実にするための要件は、IO処理手順においてすべてのモジュールによって見られるviewに整合性があることである。IOキー情報は、keyと、offsetと、lengthとを含むことが可能であり、offsetは、keyによって識別されるデータブロックにおける開始位置に対するIOデータのオフセットを示し、lengthは、IOデータの長さを示す。
708 IO viewバージョン情報により、IO要求において搬送されるビューバージョンがローカルで記憶されたビューバージョンと整合性があると決定された後、IO要求に関してシーケンス(Seq)ID(シーケンス識別子とも呼ばれ得る)を生成し、特に、IO要求において搬送されるIO view IDがローカルで記憶されたIO view IDと整合性があると判定した後、一次OSDノードが、IO要求に関するシーケンス識別子を生成する。
特定の実施様態において、SeqIDは、ビューバージョン番号と、シーケンス番号、sequence number(Seq NO)とを含む。ビューバージョン番号は、IO viewが変化するにつれて単調増加し、Seq NOは、1つのIO viewバージョン内のIO viewにおけるpartitionに対応するデータに対する変更操作(例えば、書込み及び削除)の通し番号を示す。IO viewが変化した後、SeqIDにおけるSeq NOは、0から再び増加することを開始する。Partition X一次OSDノードが、IO要求において搬送されるIO view IDがローカルで記憶されたIO view IDと整合性があるかどうかを比較することは、特に、Partition X一次OSDノードがまず、IO view IDを比較し、より大きいIO view IDは、より大きいSeqIDを示し、IO view IDが等しい場合、次に、Seq NOを比較し、より大きいSeq NOは、より大きいSeqIDを示し、IO view IDとSeq NOがともに同一である場合に限り、そのことは、SeqIDに整合性があることを示すことであり得る。
710 ローカルIO viewがより大きい場合、IOルーティングモジュールにエラーを返す、又はローカルIO viewがより小さい場合、キャッシュキューにIO要求を追加し、partition viewに関してMDCモジュールにクエリを行う。
特定の実施様態において、IO要求におけるIO view IDがローカルで記憶されたIO view ID未満であると決定した後、Partition X一次OSDノードが、IOルーティングモジュールにエラーを返し、IOルーティングモジュールが、partitionグループのIO viewに関してMDCモジュールにクエリを行い、更新されたIO view IDを獲得した後、IO要求を再送信する、或いはIO要求におけるIO view IDがローカルで記憶されたIO view IDより大きいと決定した後、Partition X一次OSDノードが、キャッシュキューにIO要求を追加し、partitionグループのIO viewのIO view IDに関してMDCモジュールにクエリを行って、ローカルで記憶されたIO view IDが、IO要求におけるIO view IDと整合性があると決定した後、IO要求を実行するようにする。
712 1つのentryを記録し、そのentryは、操作タイプと、PartitionグループIDと、SeqIDと、keyとを含む。
特定の実施様態において、操作タイプは、書込み、削除などを含むことが可能である。書込み操作に関して、entryは、前述のoffset及びlengthをさらに含むことが可能である。さらに、様々なタイプの操作に関して、entryは、操作が成功したかどうかを記述するのに使用されるステータス情報をさらに含むことが可能である。一般に、同一のpartitionグループに対するすべての変更操作(書込み操作及び削除操作など)に連続的に番号が付けられる。
714 IO要求を実行し、partitionグループの二次OSDノードについての情報を獲得するようにpartitionグループのpartition viewにクエリを行う。
特定の実施様態において、IO要求を実行することは、IO要求を書き込むことであり、IOデータは、Partition X一次OSDノードによって管理されるローカル物理ストレージリソース(例えば、磁気ディスクなどの図2Cに示されるキャッシュ層若しくは永続層、又は前述した外部物理ストレージリソースSAN)に書き込まれ、IO要求が削除要求である場合、Partition X一次OSDノードによって管理されるローカル物理ストレージリソース上の対応するデータが、削除される。特定の実施形態において、Partition X一次OSDノードは、レプリケーション要求をさらに生成する。特定の実施において、レプリケーション要求は、IO要求の制御部分を別個に組み立てることによって生成されたレプリケーション要求であることが可能であり、Partition Xの二次OSDノード上のIO要求に対応するデータは、Partition X一次OSDノード上のIO要求に対応するデータと整合性がある。
716(1)/(2) Partition X二次OSD1ノードとPartition X二次OSD2ノードにレプリケーション要求を別々に送信し、レプリケーション要求は、SeqIDを搬送する。
特定の実施様態において、レプリケーション要求は、元の要求におけるkey、offset、length及びIOデータなどの情報をさらに含むことが可能である。レプリケーション要求が書込みレプリケーション要求である場合、レプリケーション要求は、key、offset、length、及びIOデータを搬送し、レプリケーション要求が削除レプリケーション要求である場合、レプリケーション要求は、keyだけを搬送する。
718 レプリケーション要求におけるIO view IDがローカルで記憶されたIO view IDと整合性があると決定された後、レプリケーション要求を処理する。
特定の実施様態において、前述のステップ718に加えて、手順は、以下のステップをさらに含むことが可能である。すなわち、
レプリケーション要求におけるIO view IDがローカルで記憶されたIO view ID未満であると決定した後、Partition X二次OSD1ノード又はPartition X二次OSD2が、Partition X一次OSDノードにエラーを返し、Partition X一次OSDノードが、partitionグループのIO viewに関してMDCモジュールにクエリを行い、更新されたIO view IDを獲得した後、レプリケーション要求を再送信し、又はレプリケーション要求におけるIO view IDがローカルで記憶されたIO view IDより大きいと決定した後、Partition X二次OSD1ノード又はPartition X二次OSD2ノードが、キャッシュキューにレプリケーション要求を追加し、partitionグループのIO viewバージョン番号に関してMDCモジュールにクエリを行って、ローカルで記憶されたIO view IDが、IO要求におけるIO view IDと整合性があると決定した後、レプリケーション要求を実行するようにする。
既存の2フェーズコミットプロトコルにおいて、参加者が提案を拒否した場合、IO手順全体がロールバックされる必要があり、このことは、相当に大きいオーバヘッドをもたらす。しかし、この実施形態において、二次OSDノードが要求を拒否した場合、最新のviewのクエリがまず行われ、次に、処理が続き、ロールバックは、実行される必要がなく、したがって、このことが、システム全体のフォールトトレランス及び利用可能性を向上させる。
既存の2フェーズコミットプロトコルにおいて、1つの通常のIOプロセスにおいて、コーディネータと参加者の間でメッセージ対話が2回、実行される必要がある。しかし、この実施形態において、IOプロセスは、1回だけしか実行される必要がなく、一次ノードと二次ノードの間のメッセージ対話は、1回だけ実行され、このことが、メッセージ対話によってもたらされるIO遅延を短縮し、システム全体の効率及びパフォーマンスを向上させる。
特定の実施様態において、レプリケーション要求は、partition XのPartition X一次OSDノードによって送信された前のレプリケーション要求におけるSeqIDをさらに搬送することが可能であり、IO手順は、ステップ720をさらに含むことが可能である。
720 前のレプリケーション要求に入っており、かつレプリケーション要求において搬送されるSeqIDを最大のローカルSeqIDと比較し、SeqIDが最大のローカルSeqIDより大きい場合、欠落している要求を送信するようPartition X一次OSDノードに要求する、又はSeqIDが最大のローカルSeqIDと整合性がある場合、後続のステップにおいて処理することを続ける。
レプリケーション要求は、前のレプリケーション要求に入っているSeqIDを搬送し、このことが、IO viewバージョン番号の変更によってもたらされる欠落したデータを防止することが可能である。さらに、欠落したデータが送信され、このことが、一次OSDノードと二次OSDノードがすべてのIOを実行するシーケンスに整合性があることを確実にし、かつデータバックアップ整合性をさらに向上させることが可能である。
特定の実施様態において、前のレプリケーション要求に入っており、かつレプリケーション要求において搬送されるSeqIDが最大のローカルSeqID未満の場合、エラーがpartition X一次OSDノードに返され、partition X一次OSDノードが、レプリケーション要求を再送信する、又はSeqIDが、さらにクエリすることを用いて決定され、SeqIDが決定された後、更新されたSeqIDが獲得され、次に、エラーを直接に返す代わりに、処理が継続する。この2つの事例において、処理は、ロールバックのために終了される必要がなく、このことが、システムのフォールトトレランス及び利用可能性、並びにシステム全体のパフォーマンスをさらに向上させる。
IO操作が一次OSDノードと二次OSDノードの両方によって実行される必要がある場合、一次OSDノードと二次OSDノードがすべてのIO操作を実行するシーケンスに整合性があることを確実にすることが要求され、そうであることは、複数のpartitionレプリカの整合性を確実にする鍵である。
722 1つのentryを記録し、レプリケーション操作を実行する。
特定の実施様態において、entryは、操作タイプ、Partition ID、SeqID、及びkeyを含み、操作タイプは、書込み、削除などを含むことが可能である。書込み操作に関して、entryは、前述のoffset及びlengthをさらに含むことが可能である。さらに、様々なタイプの操作に関して、entryは、操作が成功したかどうかを記述するのに使用されるステータス情報をさらに含むことが可能である。レプリケーション要求を実行することは、レプリケーション要求が書込みレプリケーション要求である場合、レプリケーション要求がkey、offset、length、及びIOデータを搬送すること、及びレプリケーション要求が削除レプリケーション要求である場合、レプリケーション要求がkeyだけを搬送することを特に含む。
724/726 partition X二次OSD1ノードとpartition X二次OSD2ノードが、partition X一次OSDノードに応答要求成功メッセージを別々に送信する。
72 partition X一次OSDノードが、IOルーティングモジュールに応答要求成功メッセージを送信する。
前述のIO要求実施形態に基づいて、IO要求を処理するプロセスにおいて、partition X一次OSDノード又はpartition X二次OSDノードが、障害を有するようになる(例えば、IO要求がpartition X一次OSDノードに着信した後、partition X一次OSDノードが障害を有するようになる)こと、或いはpartition X二次OSDノードが、障害を有するようになり、新たなOSDノードが、partition Xの二次OSDノードとしてシステムに参加することなどを想定すると、これらの事例において、前述の実施形態におけるIO要求処理手順は、以下の実施形態において説明される処理プロセスをさらに含むことが可能である。
IO要求がpartition X一次OSDノードに着信した後、partition X一次OSDノードが障害を有するようになった場合、IO処理手順は、以下を含む。すなわち、
partition X一次OSDノードが障害を有するようになった後、システムにおけるMDCモジュールが、IO要求を処理するプロセスにおいて、partition X一次OSDノードが障害を有するようになったことを検出した場合、partitionグループのpartition viewにおけるpartition X一次OSDノードを新たなpartition X二次OSDノードとして設定し、その新たなpartition X二次OSDノードのpartitionステータスに不整合であるという印を付け、partitionグループのpartition viewにおけるpartition X二次OSD1ノードを新たなpartition X一次OSDノードとして設定し、その新たなpartition X一次OSDノードにpartitionグループの更新されたpartition viewを送信し、partitionグループのIO viewにおけるpartition X二次OSD1ノードを新たなpartition X一次OSDノードとして設定し、IOルーティングモジュールにpartitionグループの更新されたIO viewを送信し、
IOルーティングモジュールが、partitionグループのものであり、かつMDCモジュールによって送信される更新されたIO viewを受信し、partitionグループの更新されたIO viewにより、その新たなpartition X一次OSDノードにIO要求を送信し、かつ
その新たなpartition X一次OSDノードが、IO要求を受信すること、IO要求を実行した後、レプリケーション要求を生成すること、及びその新たなレプリケーション要求を、partitionの更新されたpartition viewにおける別の二次OSDノードに送信するように適応され、レプリケーション要求を生成するステップ、及びレプリケーション要求を送信するステップは、前述のステップ714及び716と同一である。
IO要求がpartition X一次OSDノードに着信した後、partition X二次OSDノードが障害を有するようになった場合、IO処理手順は、以下を含む。すなわち、
partition X二次OSDノードが障害を有するようになった後、MDCモジュールが、IO要求を処理するプロセスにおいて、partition X二次OSDノードが障害を有するようになったことを検出した場合、partition viewにおけるpartition X二次OSDノードのpartitionステータスに不整合であるという印を付け、partition X一次OSDノードにpartitionグループの更新されたpartition viewを送信するようにさらに適応され、かつ
一次OSDノードが、partitionグループの更新されたpartition viewを受信した後、更新されたpartition viewにおいてpartitionステータスに整合性がある別の二次OSDノードにレプリケーション要求を送信し、partitionステータスが不整合であるpartition X二次OSDノードにレプリケーション要求を送信することを省くように適応される。
2フェーズコミットプロトコルにおいて、コーディネータが障害を有するようになった場合、IO処理は、中断され、コーディネータが正常に戻った場合に限り、継続する。この実施形態において、一次OSDノードが障害を有するようになった後、MDCノードは、投票を用いて新たな一次OSDノードを迅速に決定することができ、かつIO処理を迅速に再開することができ、したがって、高い利用可能性、及び強いフォールトトレランスが実現される。
さらに、2フェーズコミットプロトコルにおいて、参加者が障害を有するようになった場合、又は応答を有さないことが続く場合、別のIO要求は、継続的に阻止され、タイムアウトのために最終的に失敗し、ロールバックが実行される必要がある。この事例において、二次ノードが障害を有するようになった場合、MDCが、view変更を行うよう一次ノードに指示して、障害を有するOSDノードを隔離する、又は無視するようにし、別のIO要求に対する処理を阻止することなしにIO要求処理を継続するようにし、このことが、より良好なフォールトトレランスを有し、ノード障害を扱うこと、及びノードフェイルバックを実行することを迅速に行うことができる。例えば、N+1のレプリカのうちのNのレプリカの障害が許容されることが可能であり、このことが、ストレージシステムのパフォーマンス及び利用可能性をさらに向上させる。低い利用可能性を有するシステムは、劣悪な拡張性を不可避に有し、ストレージノード障害は、大規模な分散ストレージシステムにおいてよくあるため、複雑で、大量のプロトコル対話が、システム拡張性をさらに低減する可能性がある。
さらに、ストレージノード障害の影響範囲が、partition粒度におけるクラスタビューの制御を用いて大幅に狭められることが可能であり、したがって、ストレージシステムは、大規模に拡張されることが可能であり、システム拡張性が向上される。
IO要求がpartition X一次OSDノードに着信した後、MDCが、新たなOSDノードがクラスタに参加して、partition Xの二次OSDノードの役割をすることを発見し、IO処理手順は、以下を含む。すなわち、
MDCモジュールが、IO要求を処理するプロセスにおいて、新たなOSDノードがクラスタに参加することを決定した場合、partition X一次OSDノードに、その新たなOSDノードが、partition Xが位置付けられる新たな二次OSDノードの役割をすることを通知し、partitionデータ同期が完了された後、partitionグループのpartition view及びIO viewを更新し、partition X一次OSDノード上にローカルで記憶されたpartition viewを更新するようpartition X一次OSDノードに指示し、かつ
partition X一次OSDノードが、partition X一次OSDノード上の一次partitionのデータを新たな二次OSDノードに同期させ、更新されたローカルで記憶されたpartitionにより、その新たな二次OSDノードにレプリカ要求を送信する。
OSD障害処理手順
ストレージノード障害は、大規模な分散ストレージシステムにおいてよくある。いくつかのOSDノードが障害を有する場合、システムは、IOサービスを正常に提供することができる必要がある。本発明のこの実施形態において、すべてのIO要求に対する処理は、MDCモジュールによって保持されるクラスタビューに依存し、クラスタにおけるOSDノードが障害を有するようになった場合、クラスタビューも相応するように更新されて、IO要求が適切に、効率的に処理され得るようにする必要がある。
OSDノード障害がIO要求のレプリケーションに対する適切な処理に影響を及ぼすのを防止するのに、以下の処理が一般に実行される必要がある。第1に、MDCモジュールが、OSDノードのステータスを検出し、OSDノードが障害を有するようになった場合、MDCモジュールが、その障害を時間内に発見することが可能であり、第2に、OSD障害を発見した後、MDCモジュールが、ビューに正しい変更を行う処理を時間内に実行し、その変更について関連するIOルーティングモジュール及びOSDノードに通知する必要があり、第3に、関連するIOルーティングモジュール及びOSDノードが、MDCの更新通知を受信した後、更新されたビューにより対応するIO要求を処理して、モジュール及びノードが、更新されたビューを時間内に獲得することができるようにして、その結果、IO要求が平滑に、効果的に処理されることを確実にする。
MDCモジュールは、以下の2つのモードにおいてOSDノード障害を検出することが可能である。すなわち、(1)MDCモジュールが、すべてのOSDノード上の障害検出を担い、各OSDノードが、MDCモジュールにハートビートメッセージを規則的に送信し、OSDノードが、指定された期間内にMDCモジュールにハートビートメッセージを送信しない場合、MDCモジュールは、OSDノードが障害を有するようになったと決定し、(2)OSDノードが、互いにハートビートメッセージを規則的に送信して障害を検出し、検出する側が、指定された期間内に検出される側のハートビートメッセージを受信しない場合、検出する側が、対応するOSDノードが障害を有するようになったとMDCモジュールに報告する。
前述したとおり、partition viewとIO viewはともにpartitionグループの点で説明され、一般に、OSDノード上に複数のpartitionが存在する。1つのOSDノードの障害は、複数のpartitionを含む複数のpartitionグループに関するビュー更新と関係し、すべてのpartitionグループに関するビュー更新は、互いに独立であり、すなわち、
(1)障害を有するOSDノード上のpartitionが二次partitionを含む場合、二次partitionを含むpartitionグループのpartition viewにおける障害を有するOSDノードのpartitionステータスに不整合であるという印が付けられ、同時に、partitionグループの一次OSDノードに更新されたpartition viewについての通知が行われ、partitionプロセスの一次OSDノードが、更新されたpartition viewにより、IO要求に対応するデータのレプリケーションを処理し、
(2)障害を有するOSDノード上のpartitionが一次partitionを含む場合、一次partitionを含むpartitionグループのpartition viewにおいて一次OSDノードの役割をする障害を有するOSDノードが、新たな二次OSDノードとして設定され、新たな二次OSDノードに対応するpartitionステータスに不整合であるという印が付けられ、partitionステータスに整合性がある二次OSDノードが、一次partitionを含むpartitionグループのpartition viewにおける元の二次OSDノードから選択され、選択された二次OSDノードが新たな一次OSDノードとして設定され、次に、その新たな一次OSDノードにpartition view更新についての通知が行われ、別の二次OSDノードにIO view更新についての通知が行われ、partitionグループの一次OSDが障害を有するようになり、かつすべての二次partitionが位置付けられるOSDノードのpartitionステータスが不整合である場合、partition view及びIO viewに対して変更はまったく行われず、一次partitionレプリカが、最新の完全なデータを有することを確実にして、その結果、データレプリケーション整合性を確実にすることが要求される。
関連するIOルーティングモジュール及びOSDノードが、MDCの更新通知を受信した後、更新されたビューにより対応するIO要求を処理することは、
新たな一次OSDノードが、更新されたローカルで記憶されたpartition viewにより、IOルーティングモジュールからのIO要求に対応するデータを、更新されたローカルで記憶されたpartition viewにおける、partitionステータスに整合性があるpartitionが位置付けられるpartition上の二次OSDノード上に、又は更新されたローカルで記憶されたpartition viewに位置付けられる、partitionステータスが不整合であるが、データを回復しているpartition上の二次OSDノードに障害を隔離するように、かつ適切な、中断のないIO要求処理を確実にするようにして、その結果、システムのフォールトトレランスを向上させ、かつシステムのパフォーマンス及び利用可能性を相応するように向上させることを特に含み得る。さらに、OSDノード障害の影響範囲が、partition粒度におけるクラスタビューの制御を用いて狭められることが可能であり、したがって、システムは、大規模に拡張されることが可能であり、システム拡張性が向上される。
最後に、障害を有するOSDノードがフェイルバック及びデータ回復を完了した後、MDCモジュールが、partition view及びIO viewをさらに更新し、さらに更新されたpartition viewにおけるpartitionが位置付けられる一次OSDノードに、そのさらに更新されたpartition viewについて通知し、さらに更新されたpartition viewにおけるpartitionが位置付けられる二次OSDノードに、そのさらに更新されたIO viewを送信して、そのさらに更新されたpartition view又はIO viewを受信するモジュール又はOSDノードが、ローカルで記憶されたpartition view又はIO viewを更新し、かつそのさらに更新されたpartition view又はIO viewにより、IO要求に対応するデータのレプリケーションを処理するようにする。
ビューは、時間内に更新されて、フェイルバックノードが、クラスタに迅速に参加してIO要求を処理することができるようにされ、このことが、システムのパフォーマンス及び効率を向上させる。
理解を容易にするのに、以下は、説明のために特定の実施形態を使用する。図8A及び図8Bが、本発明によるOSDノード障害処理手順の実施形態を示す。この実施形態は、図2Aないし図2C、及び図5において説明される実施形態において言及されるMDCモジュール、IOルーティングモジュール、及びOSDノードによって実行される。理解を容易にするのに、この実施形態におけるOSDノードの中のOSDxノード、OSDyノード、及びOSDzノードが、説明のための例として使用され、OSDxノード、OSDyノード、又はOSDzノードは、本発明のこの実施形態における分散レプリケーションプロトコル層における複数のOSDノードのうちのいずれか1つのOSDノードであることが可能である。さらに、理解を容易にするのに、この実施形態において、OSDxノードは、partitionグループ1(略してP1)の一次OSDノードであり、かつpartitionグループn(略してPn)の二次OSDノードであり、OSDyノードは、Pnの一次OSDノードであり、かつP1の二次OSDノードであり、OSDzノードは、Pnの二次OSDノードであり、かつP1の二次OSDノードであるものと想定される。この実施形態におけるOSDノード障害処理手順は、以下のステップを特に含む。すなわち、
802/804/806 OSDxノード、OSDyノード、及びOSDzノードが、一次MDCモジュールにハートビートメッセージを別々に、規則的に送信する。
808 OSDxノードが、障害を有するようになる。
実際のアプリケーションにおいて、様々なソフトウェア障害、ハードウェア障害、又はネットワーク障害が存在することが可能である。例えば、ソフトウェアBUG、一時的ネットワーク切断、サーバ再起動などによってもたらされるプログラムプロセス再起動のため、OSDノードが、IO要求を処理することができず、データ記憶機能及びデータレプリケーション機能を実施することができない。
810 MDCモジュールが、OSDxノードが所定の時間内にハートビートメッセージを送信しないことを検出した場合、MDCモジュールは、OSDxノードが障害を有するようになると決定する。
実際の応用形態において、前述したとおり、MDCは、別の様態で、OSDxノードが障害を有するようになると決定することも可能である。例えば、機能するOSDノードが、OSDノードが障害を有するようになることをMDCモジュールに通知する。
812 MDCモジュールが、障害状況によりビュー更新を実行する。
特定の実施様態において、MDCは、決定された障害を有するOSDノード上のpartitionを含むpartitionグループにより、対応するpartitionグループのクラスタビューを更新する。この実施形態において、障害を有するOSDxノード上のpartitionを含むpartitionは、P1及びPnを含み、したがって、MDCは、P1及びPnのクラスタビューを更新する必要があり、このことは、
(1)OSD viewを更新すること、すなわち、OSDxノードのステータスが、「イン(IN)」かつ「アップ(UP)」状態から「イン(IN)」かつ「ダウン(DOWN)」状態に更新されること、
(2)partition viewを変更すること、すなわち、P1に関して、OSDyノードがP1の一次OSDノードとして設定され(partitionステータスに整合性がある第1の二次OSDノードが、P1の二次OSDノードリストから選択され、partitionグループの一次OSDノードとして設定される)、OSDxがP1の二次OSDノードとして設定され、OSDxの対応するpartitionステータスが「不整合である」に更新され、Pnに関して、Pnの二次OSDxのpartitionステータスが不整合に変更されること、
(3)IO viewを更新すること、すなわち、P1に関して、元のOSDxノードが、P1のIO viewにおける一次OSDノードとしてOSDyノードで置き換えられ、Pnに関して、障害を有するOSDxノードは、Pnの二次OSDノードの役割をするに過ぎず、Pnの一次OSDyノードは、障害を有するようにならないため、PnのIO viewは更新されないことを特に含み得る。
814 OSDyノード(更新の後、P1の一次OSDノードの役割をし、依然として、Pnの一次OSDノードの役割をする)に、P1及びPnのpartition viewの更新について通知し、更新することは、OSDyノードをP1の一次OSDノードとして設定すること、OSDxをP1の二次OSDノードとして設定し、かつOSDxの対応するpartitionステータスを「不整合である」に設定すること、及びPnの二次OSDxノードのpartitionステータスを「不整合である」に変更することを含む。
816 OSDzノードにP1のIO viewの更新について通知する、すなわち、OSDzノードに、P1の一次OSDノードがOSDyノードで置き換えられることを通知する。
818 IOルーティングモジュールにP1のIO viewの更新について通知する、すなわち、IOルーティングモジュールに、P1の一次OSDノードがOSDyノードで置き換えられることを通知する。
820 OSDyノードが、MDCモジュールの通知を処理し、ローカルで記憶されたビュー情報(partition view及びIO view)を更新し、MDCモジュールによって通知される最新のビューにより、IO要求に対応するデータのレプリケーションを処理する。
特定の実施様態において、更新の後のP1の一次OSDノードとして、OSDyノードが、P1のpartition view及びIO viewを更新し、Pnの元のOSDノードとして、OSDyノードが、Pnのpartition viewを更新する。
P1上のIO操作に関して、IOルーティングモジュールによって転送されたIO要求を受信した後、OSDyノードは、IO要求を実行し、レプリケーション要求を生成し、更新されたpartition viewにおけるP1の二次OSDノード、すなわち、OSDzノードにレプリケーション要求を送信し、OSDzノードの対応するpartitionステータスは、「整合性がある」。OSDxノードは、P1の新たな二次OSDノードの役割をし、OSDxノードのpartitionステータスは、「不整合である」ため、OSDyノードは、OSDxノードにレプリケーション要求をもはや送信せず、このことが、障害隔離を実施し、P1上の連続的なIO要求処理に影響を及ぼさない。
Pn上のIO操作に関して、IOルーティングモジュールによって転送されたIO要求を受信した後、OSDyノードは、IO要求を実行し、レプリケーション要求を生成し、更新されたpartition viewにおけるPnの二次OSDノード、すなわち、OSDzノードにレプリケーション要求を送信し、OSDzノードの対応するpartitionステータスは、「整合性がある」。OSDxノードは、Pnの二次OSDノードの役割をし、OSDxノードのpartitionステータスは、「不整合である」ため、OSDyノードは、OSDxノードにレプリケーション要求をもはや送信せず、このことが、障害隔離を実施し、P1上の連続的なIO要求処理に影響を及ぼさない。
2フェーズコミットプロトコルにおいて、参加者が障害を有するようになった場合、又は応答を有さないことが続く場合、別のIO要求は、継続的に阻止され、タイムアウトのために最終的に失敗し、ロールバックが実行される必要がある。この実施形態において、二次OSDノードが障害を有するようになった場合、MDCが、ビュー変更を行うよう一次ノードに指示して、障害を有するノードを無視するようにし、障害を有するノードを隔離するようにし、別のIO要求に対する処理を阻止することなしにIO要求処理を継続するようにし、このことが、より良好なフォールトトレランス及び利用可能性を有する。
822 MDCモジュールのビュー通知を処理し、ローカルで記憶されたIO view情報を更新する。
824 MDCモジュールのビュー通知を処理し、ローカルで記憶されたIO view情報を更新し、MDCモジュールによって通知される最新のIOューにより、IO要求ルーティング及び転送を実行する。
特定の実施様態において、P1上のIO処理に関して、P1が位置付けられる元の一次OSDxノードが、P1のIO処理プロセスにおいて障害を有するようになった場合、MDCが、P1のpartition viewを時間内に更新し、IOルーティングモジュールが、更新されたpartition viewにおけるP1の新たに選択された一次OSDyノードにより、新たに選択されたOSDyノードにIO要求を再び転送する。
本発明のこの実施形態において、一次OSDノードが障害を有するようになった後、MDCノードは、投票を用いて新たな一次ノードを迅速に決定すること、及びIO処理を迅速に再開することができ、二次ノードが障害を有するようになった場合、MDCは、ビュー変更を行うよう一次ノードに指示して、障害を有するOSDノードを隔離する、又は無視するようにし、別のIO要求に対する処理を阻止することなしにIO要求処理を継続するようにし、このことが、より良好なフォールトトレランスを有し、ノード障害を迅速に扱うことができる。例えば、N+1のレプリカのうちのNのレプリカの障害が許容されることが可能であり、このことが、ストレージシステムのパフォーマンス及び利用可能性をさらに向上させる。低い利用可能性を有するシステムは、劣悪な拡張性を不可避に有し、ストレージノード障害は、大規模な分散ストレージシステムに一般的であるため、複雑で、大量のプロトコル対話が、システム拡張性をさらに低減する可能性がある。さらに、ストレージノード障害の影響範囲が、partition粒度におけるクラスタビューの制御を用いて大幅に狭められることが可能であり、したがって、ストレージシステムは、大規模に拡張されることが可能であり、システム拡張性が向上される。
OSDノードフェイルバック手順
新たなデータ変更操作が、OSDノードの障害中に生じる可能性があり、したがって、障害を有するOSDノードが正常に戻り、クラスタに再び参加してサービスを提供する前に、データ回復及びデータ同期がまず実行されて、障害を有するOSDノードを、一次レプリカのものと整合性がある状態に戻すようにする必要がある。
本発明の実施形態において、OSDノードフェイルバック手順は、3つのフェーズに分割され得る。すなわち、
(1)二次OSDノードが、一次OSDノードと、障害中に一次OSDノードによって実行されたデータ変更を同期し、これは、インクリメンタルな同期プロセスであり、無論、実際の応用形態において、partitionのすべてのデータは、実際の状況により同期され得る。
(2)二次OSDノードが一次OSDノードのものと整合性がある状態に戻った後、MDCモジュールが、クラスタビューを変更する。
(3)MDCモジュールが、各モジュール及び各ノードに更新されたクラスタビューについて通知して、各モジュール及び各ノードが、通知された更新されたクラスタビューによりIO要求レプリケーション又はIO要求転送を処理するようにする。
実際の応用形態において、一次OSDノードが、データ回復プロセスにおいてIO要求を受信した後、フェイルバックノードにレプリケーション要求を送信した場合、OSDノードフェイルバック手順は、以下のフェーズをさらに含むことが可能である。すなわち、
二次OSDノードが、一次OSDノードのレプリケーション要求が受信された後に、一次OSDとデータを同期するプロセスにおいて記録されたログを再生し、ログに入っているデータを書き込む。このようにして、フェイルバックプロセスにおいて、フェイルバックOSDノードのすべてのデータが一次OSDノードのものと整合性があることが確実にされて、その結果、一次OSDノードと二次OSDノードの間のデータ整合性をさらに向上させることが可能である。
データ同期プロセスの特定の手順に関しては、後段の図10A及び図10Bにおいて与えられる特定の実施形態を参照されたい。
クラスタビュー更新及び更新通知プロセスは、以下の事例を含むことが可能である。すなわち、
(1)OSDノードが、障害前にpartitionグループの二次OSDノードである場合、partition viewだけが変更されることが可能であり、partition viewに対応する二次OSDノードのpartitionステータスは、「整合性がある」状態に変更され、変更されたpartition viewが一次OSDノードに通知される。
(2)OSDノードが、障害前にpartitionグループの一次OSDノードである場合、partition viewとIO viewの両方が変更され、前のOSDノードがpartitionグループの新たな一次OSDノードに設定され、現在の一次OSDがpartitionグループの二次OSDノードとして設定され、新たな一次OSDノードがpartition viewを変更するよう指示され、IOルーティングモジュール及び二次OSDノードがIO viewを変更するよう指示される。
実際の応用形態において、障害を有するOSDノードが、指定された期間内に正常に戻らない場合、MDCモジュールが、そのOSDノードをクラスタから追放し、そのOSDノード上に配分されたpartitionを別のOSDノードに移行させる。特定の手順に関しては、後段の図11A及び図11Bにおいて与えられる、OSDノードがクラスタから出る特定の実施形態を参照されたい。
理解を容易にするのに、以下に、説明のために特定の実施形態を使用する。図9A、図9B、及び図9Cが、本発明によるOSDノードフェイルバック処理手順の実施形態を示す。この実施形態は、図2Aないし図2C、及び図5において説明される実施形態において言及されるMDCモジュール、IOルーティングモジュール、及びOSDノードによって実行される。理解を容易にするのに、この実施形態において、フェイルバックOSDノード上のpartitionを含むpartitionグループが、partitionグループ1(略してP1)と、partitionグループn(略してPn)とを含む例が、説明のために使用され、この実施形態におけるOSDノード障害処理手順は、以下のステップを特に含むものと想定される。すなわち、
902 フェイルバックOSDノードが、フェイルバックOSDノードに関するクラスタビュー情報をMDCモジュールに要求し、要求は、そのOSDノードのOSD IDを搬送する。
特定の実施様態に関しては、図6のステップ608において説明される前述のプロセスを参照されたい。
904 MDCモジュールが、そのOSD IDによりpartition viewのクエリを行って、そのOSDに関するpartition情報を獲得する。
特定の実施様態において、MDCは、フェイルバックOSDのOSD IDにより、フェイルバックOSD上のP1及びPnに対応するpartition viewのクエリを別々に行って、P1のpartition情報とPnのpartition情報を別々に獲得する。partition情報は、IO viewを含むことが可能であり、partitionステータスをさらに含むことが可能である。
906 OSDノードにpartition情報を返す。
908/910 MDCによって返されるpartition情報によりpartitionグループの一次OSDノードに対してデータ回復プロセスを開始し、障害中に失われたentry情報をP1とPnの一次OSDノードから別々に獲得し、entry情報は、SeqIDを搬送する。
本発明の特定の実施形態において、一次OSDノード(例えば、Pnの一次OSDノード)が、フェイルバックプロセスにおいてIO書込み要求を受信した場合、一次OSDノードが、Pnのすべての二次OSDノードにレプリケーション要求を送信する必要があり、フェイルバック手順は、以下のステップ912〜916、及びステップ918をさらに含むことが可能である。
912 Pnの一次OSDノードが、フェイルバック中にホストからIO書込み要求を受信する。
914 Partitionが位置付けられる二次OSDノードにレプリケーションIO情報を送信する。
特定の実施様態において、前述のステップ912〜914に関しては、図7A及び図7Bにおける前述のIO操作手順を参照されたい。
916 ログ(log)にレプリケーションIOキー情報を書き込む。
特定の実施様態において、IO要求に対応するデータは、ログに書き込まれることも可能であり、このステップにおけるIOキー情報に関しては、図7A及び図7Bにおける前述のIO操作手順の説明を参照されたい。
918 一次OSDノードによって返される異なるentry数量情報により、かつentryによりデータ要求メッセージを繰り返し送信して、データ回復プロセスが完了されることを保証する。
特定の実施様態に関しては、後段の図11A及び図11Bにおけるデータ回復手順を参照されたい。
920 ログに記録されたIO情報により、かつログの記録によりIOを書き込む。
特定の実施様態において、データ回復、及び一次OSDノードとの同期を完了した後、フェイルバックOSDノードは、フェイルバックOSDノードによって管理される物理ストレージリソースに、ログに記録されたIO情報により、Pnの一次OSDからのレプリケーション要求に対応するデータを書き込む。
IO要求は、フェイルバックプロセスにおいてログに書き込まれ、次に、障害中に生成されたIO要求が、障害中に失われたデータが回復された後に書き込まれ、このことが、一次OSDノード及び二次OSDノードがすべてのIO操作を実行するシーケンスに整合性があることを確実にすること、及びデータバックアップ整合性をさらに向上させることが可能である。
922/924 データ回復を完了し、P1とPnの一次OSDノードに別々に通知する。
特定の実施様態において、MDCモジュールは、2つの様態で、クラスタビューの更新を実行するよう指示されることが可能であり、様態1において、データ回復が完了された後、フェイルバックOSDノードが一次OSDノードにP1及びPnについて通知して、一次OSDノードが、クラスタビューを更新するようMDCノードに指示するようにする。様態2に関しては、以下のステップ930を参照されたい。
実際の応用形態において、クラスタビューを更新するよう指示する前に、フェイルバックOSDノードは、フェイルバックOSDノード上のpartitionのpartitionステータスをさらに決定することが可能であり、partitionステータスが不整合であると決定した後、クラスタビュー更新手順をトリガする。フェイルバックOSDノードは、前述のステップ906において返されるpartition情報を収集することによってpartitionステータス情報をさらに獲得することが可能である。
926/928 P1とPnの一次OSDノードは、partition viewを変更するようMDCに別々に指示し、通知が、partitionグループID、二次OSDのID、及びビューバージョンを搬送する。
特定の実施様態において、フェイルバックOSDノード上のpartitionのpartitionステータスを整合性があるに更新するようMDCモジュールに要求する通知が、MDCモジュールに送信され、通知は、OSDノード上のpartitionを含むpartitionグループのpartitionグループID、二次OSDノード(すなわち、フェイルバックOSDノード)のID、及びビューバージョンを搬送する。本明細書におけるpartitionグループIDは、partitionグループの更新されるべきビューに印を付けるのに使用され、OSD IDは、障害を有するOSDノードに印を付けるのに使用され、本明細書におけるビューバージョンは、P1及びPnが位置付けられる一次OSDノード上にローカルで記憶された最新のpartition viewのビューバージョンであり、ビューバージョンの機能は、通知を受信して、通知におけるpartition viewのビューバージョンが、MDCによってローカルで保持される最新のpartition viewのビューバージョンと整合性があると決定した後、MDCが、クラスタビュー更新処理を実行して、その結果、IO処理手順においてすべてのモジュール又はすべてのノードによって見られるクラスタビューに整合性があることを確実にすること、及びデータバックアップ整合性を向上させることである。
実際の応用形態において、通知におけるpartition viewのビューバージョンが、MDCによってローカルで保持される最新のpartition viewのビューバージョンと不整合であると決定された場合、最新のpartition viewは、P1及びPnが位置付けられる一次OSDノードにさらに送信され、P1及びPnの一次データと二次データに整合性があると決定された後、クラスタビューが更新される。
928 Partition Viewを変更するよう、かつフェイルバックOSDノードのステータスを整合性があるに更新するようMDCに指示し、指示が、partitionグループID、二次OSDのID、及びビューバージョンを搬送する。
930 データ回復を完了し、Partition Viewを変更するよう一次MDCに指示し、通知が、PartitionグループID、二次OSDのID、及びビューバージョンを搬送する。
特定の実施様態において、データ回復を完了した後、フェイルバックOSDノードは、MDCモジュールに通知を送信して、フェイルバックOSDノード上のpartitionのpartitionステータスを整合性があるに更新するようMDCモジュールに指示する。前述の様態1と様態2の間の違いは、この場合のビューバージョンが、フェイルバックOSDノード上にローカルで記憶された最新のpartition viewのpartition viewバージョン又は最新のIO viewのIO viewバージョンであることであり(ビューバージョンがpartition viewであるか、又はIO viewであるかは、フェイルバックOSDノードが、障害前に一次OSDノードであるか、二次ノードであるかに特に依存する)、通知におけるビューバージョンにより、MDCモジュールによってローカルで保持される対応するビューバージョンに整合性があると決定した後、MDCモジュールが、クラスタビュー更新処理を実行することである。
932 Partition ViewにおけるフェイルバックOSDノードのpartitionステータスを整合性があるに更新する。
特定の実施様態において、フェイルバックOSDノード上のP1及びPnのpartition viewにおいてフェイルバックOSDノードに対応するpartitionステータスが、「整合性がある」に更新される。
934 ビュー比較を用いて、フェイルバックOSDノードが、障害前にいくつかのpartitionの一次OSDノードであるかどうかを決定する。
特定の実施様態において、フェイルバックOSDノード上のP1及びPnのものであり、かつMDCモジュールによってローカルで保持される最新のpartition viewを、P1及びPnの初期化されたpartition viewと比較することによって、フェイルバックOSDノードがP1の一次OSDノードであるかどうかが決定される、又はフェイルバックOSDノード上のP1及びPnのものであり、かつMDCモジュールによってローカルで保持される最新のIO viewを、P1及びPnの初期化されたIO viewと比較することによって、フェイルバックOSDノードがP1の一次OSDノードであるかどうかが決定される。
936 フェイルバックノードを一次OSDノードとして再設定し、Partition Viewを更新する。
特定の実施様態において、P1に関して、MDCが、フェイルバックOSDノードをP1の新たな一次OSDノードとして再設定し、P1が位置付けられる現在の一次OSDノードをP1の新たな二次OSDノードとして設定し、P1のpartition viewを更新し、Pnに関して、フェイルバックOSDノードが最初にPnの二次OSDノードであるため、Pnに関して、フェイルバックOSDノードの一次/二次識別変更問題は関与しない。
938 フェイルバックOSDノードが最初に一次ノードである場合、最新のPartition ViewをフェイルバックOSDノードに送信する。
特定の実施様態において、フェイルバックOSDノードが最初にP1の一次ノードであり、かつフェイルバックOSDノードが、ステップ937によりフェイルバックOSDノードの新たな一次OSDノードとして設定されるため、P1の更新された最新のPartition Viewが、フェイルバックOSDノードの新たな一次OSDノード、すなわち、フェイルバックOSDノードに送信される必要がある。フェイルバックOSDノードは最初にPnの一次ノードではないため、Pnの最新のpartition viewが、フェイルバックOSDノードに送信されないことが可能である。
940/942 ローカルIOビューを更新するよう二次OSDに指示する。
特定の実施様態において、P1及びPnの最新のpartition View又は最新のIO viewにより、P1とPnの新たな一次OSDノードが別々に獲得され、P1とPnの最新のIO Viewが、それぞれ、P1の新たな一次OSDノード、及びPnの一次OSDノードに送信される(Pnに関して、一次OSDノードの変化は関与しないため、IO viewは、それでも、Pnの元の一次OSDノードに送信される)。
944 フェイルバックOSDノードが、Partition Viewとローカルで記憶されたIO viewにおける一次OSDに整合性があるかどうかを決定し、フェイルバックOSDノードが一次ノードとして設定されているかどうかを決定し、IO viewを更新する。
最新のpartition viewを受信した後、フェイルバックOSDノードは、最新のpartition Viewとローカルで記憶されたIO viewにおける一次OSDに整合性があるかどうかを決定し、フェイルバックOSDノードが一次ノードとして設定されているかどうかを決定し、最新のpartition Viewとローカルで記憶されたIO viewにおける一次OSDに整合性があり、かつフェイルバックOSDノードが一次ノードとして設定されている場合、IO view及びローカルで記憶されたpartition viewを更新し、更新されたpartition view、及び更新されたIO viewにより、IO要求と関係するデータのレプリケーションを処理する。
946 IOビューを更新し、一次OSDが二次OSDとして設定されている場合、Partition Viewを削除する。
特定の実施様態において、P1及びPnの現在の一次OSDノード(すなわち、データ回復が完了された後、更新が開始する前に存在するOSDノード)が、更新されたIO viewを受信し、それぞれのローカルで記憶されたIO viewを更新する。P1の現在の一次OSDノードに関して、現在の一次OSDノードは、MDCモジュールによってP1の新たな二次OSDノードとして設定されているため、P1の現在の一次OSDノードが、ローカルで記憶されたpartition viewを削除し、更新されたローカルで記憶されたIO viewによりIO要求のレプリケーションを処理する。
本発明のこの実施形態において、OSDノードが障害を有するようになった後、MDCが、ビュー更新を実行するよう別の関連するノードに指示して、障害を有するOSDノードを隔離する、又は無視するようにし、別のIO要求に対する処理を阻止することなしにIO要求処理を継続するようにし、ノードフェイルバックの後、ビューを更新し、関連する各ノードに通知を行って、フェイルバックノードが、作業のためにクラスタに迅速に再び参加することができるようにし、このことが、ノード障害及びフェイルバックを迅速に処理することが可能であり、より良好なフォールトトレランスを有し、ストレージシステムのパフォーマンス及び利用可能性を向上させる。低い利用可能性を有するシステムは、劣悪な拡張性を不可避に有し、ストレージノード障害は、大規模な分散ストレージシステムにおいてよくあるため、複雑で、大量のプロトコル対話が、システム拡張性をさらに低減する可能性がある。さらに、ストレージノード障害の影響範囲が、partition粒度におけるクラスタビューの制御を用いて大幅に狭められることが可能であり、したがって、ストレージシステムは、大規模に拡張されることが可能であり、システム拡張性が向上される。
データ回復手順
以下に、特定の実施形態を使用することによって図9A、図9B、及び図9Cにおける前述のOSDフェイルバック処理プロセスにおけるデータ回復処理手順を説明する。理解を容易にするのに、この実施形態において、フェイルバックOSDノード上のpartitionを含むpartitionグループが、partition1(略してP1)と、partitionn(略してPn)とを含む例が、説明のために使用されるものと想定される。図10A及び図10Bに示されるとおり、この実施形態におけるOSDノード障害処理手順は、以下のステップを特に含む。すなわち、
1002 フェイルバックOSDノードが、各partitionの記録されたentryにおける最大SeqIDをローカルで獲得する。
図7A及び図7Bの前述の実施形態におけるステップ712及びステップ722に示されるとおり、システムにおけるOSDノードが、IO処理プロセスにおいてpartition上の各IO操作に関して1つのentryを記録する。前述したとおり、entryは、IO操作タイプと、Partition IDと、SeqIDと、keyとを含み、entryは、操作が成功したかどうかを記述するのに使用されるステータス情報をさらに含むことが可能である。さらに、IO書込み操作に関して、entryは、前述のoffset及びlengthをさらに含むことが可能である。例えば、この実施形態において、P1及びPnの上のIO書込み操作に関する最大のSeqIDが別々に獲得される。
1004/1006 OSDに欠落しているentryを獲得するようP1とPnの一次OSDノードに別々に要求し、その要求は、partitionグループID及びそれぞれの最大のSeqIDを搬送する。
シナリオ1 二次OSDの最大のSeqIDが、一次OSDによって記録されたentryの範囲に入る。
1008/1010 P1とPnの一次OSDノードが、フェイルバックOSDノード欠落しているentryをフェイルバックOSDノードに別々に送信する。
特定の実施様態において、フェイルバックOSDノードの最大のSeqIDが1.6であり、一次OSDの現在の最大のSeqIDが1.16である場合、1.7から1.16までのSeqIDを有する、対応する10のentryが二次OSDに送信され、このことは、理解を容易にするよう与えられる例に過ぎない。実際の応用形態において、SeqID番号付け規則又は番号付け様態は、異なることが可能であり、P1とPnの一次OSDノードに異なるentryが欠落していることが可能である。
1012/1014 フェイルバックOSDノードが、前のステップにおいて獲得されたentryによりデータ同期を繰り返し実行し、要求は、key、offset、及びlengthなどのIOキー情報を搬送する。
特定の実施様態において、フェイルバックOSDノードが、獲得されたentryにより、データ同期要求をバッチにおいて1つずつ、P1及びPnが位置付けられた一次OSDノードに送信し、要求は、key、offset、及びlengthなどのIOキー情報を搬送する。
1016 対応するデータを送信する。
特定の実施様態において、P1及びPnの一次OSDノードが、獲得されたデータ同期要求における情報により、各entryに対応するデータをフェイルバックOSDノードに送信する。
シナリオ2 二次OSDの最大のSeqIDが、一次OSDによって記録されたentryの範囲に入らず、一次OSDの最小のSeqID未満である。
1018 一次OSDの最小のSeqIDを送信し、entryをまったく送信しない。
特定の実施様態において、Pnの一次OSDノードが、フェイルバックOSDノードの最大のSeqIDが、一次OSDによって記録されたentryの範囲に入らない、すなわち、最大のSeqIDが、Pnの一次OSDの最小のSeqID未満であると決定する事例において、Pnの一次OSDの最小のSeqIDがフェイルバックOSDノードに送信され、entryは、フェイルバックOSDノードにまったく送信されず、このことが、フェイルバックOSDノードが、Pnの一次OSDノードが、インクリメンタルの同期を用いてデータ回復が完了され得ないほど、データを書き込まないか、又は過度のデータを書き込むかを決定するのを助ける。
1020 partitionデータ同期を繰り返し要求し、要求が、partitionグループIDを搬送する。
フェイルバックOSDノードが、Pnの一次OSDノードにpartition全体のデータの同期を要求し、例えば、この実施形態におけるPnの一次OSD上の一次partitionのデータが、フェイルバックOSDノード上のPnの二次partitionのデータと同期され、要求は、partitionグループIDを搬送する。特定の実施様態において、partitionのデータの量は、一般に、極めて大きく、したがって、データは、1つの要求を使用することによって完全に伝送されることは可能でなく、さらに、一次ノードは、フェイルバックノードのIO能力を知らず、フェイルバックOSDノードにデータを継続的に送信し、フェイルバックノードは、データを処理することに失敗する可能性があり、したがって、一次ノードは、フェイルバックノードがデータ同期を要求する場合に限り、フェイルバックノードにデータを送信する。フェイルバックOSDノードは、状況によりPnの一次OSDノードに同期要求を繰り返し送信して、partitionにおけるすべてのデータが同期されるまで、partition全体におけるデータを同期する。実際の応用形態において、partition全体が、本発明において限定されない、別の様態で同期されてもよい。
1022 1つ又は複数のkeyに対応するデータを送信する。
Pnの一次OSDノードが、各回にフェイルバックOSDノードによって送信された同期要求により、その1つ又は複数のkeyに対応するデータを送信する。
OSDノードが障害の後にクラスタから出る手順
OSDノードが、障害が事前設定された時間閾値(例えば、5分)を超えて続いた後、又はOSDノード上でハードウェア障害が生じた後、正常に戻り、クラスタに再び参加することが依然としてできない場合、障害を有するOSDノードは、クラスタから追放されて、データ信頼性を保証する必要がある。
OSDノードによるクラスタから出ることは、partition再分散及びデータ移行のプロセスであり、partition再分散において、各ノードの平衡及びレプリカセキュリティが考慮される必要がある。データ移行プロセスにおけるIO処理は、フェイルバック手順及びデータ回復手順における処理と整合性があり、データ移行が完了された後、一次レプリカと二次レプリカは整合性がある状態に到達し、MDCがビュー更新及び通知を実行するプロセスは、フェイルバックが完了された後に実行されるビュー更新処理と整合性がある。関連する各OSDノードが、更新されたビューによりIO要求に対するレプリケーション処理又は転送処理を実行するプロセスは、フェイルバックが完了された後に最新のビューにより各OSDノードによって実行されるIO処理とも整合性がある。
理解を容易にするのに、以下に、説明のために特定の実施形態を使用する。図11A及び図11Bは、本発明によるOSDノードフェイルバック処理手順の実施形態を示す。この実施形態は、図2Aないし図2C、及び図5において説明される実施形態において言及されるMDCモジュール、IOルーティングモジュール、及びOSDノードによって実行される。理解を容易にするのに、この実施形態において、関連するOSDノードは、OSD1ノード、OSD2ノード、及びOSDnノードであり、OSD1ノードは、partitionグループ1(略してP1)の一次OSDノード、及びpartitionグループ2(略してP2)の二次OSDノードであり、OSD2ノードは、P1の二次OSDノードであり、OSDnノードは、P2の一次OSDノードであるものと想定される。この実施形態における、OSDノードが障害を有するようになった後に出る処理手順は、以下のステップを特に含む。すなわち、
1100 OSD1ノードが障害を有するようになる。
1102 MDCモジュールが、OSD1の障害が所定の閾値を超えて続くこと、又はOSD1上でハードウェア障害が生じたことを見出した場合、MDCが、OSD1をクラスタから追放し、ビューを変更し、OSD1ノード上のpartition(この場合、partitionは、P1の一次partition、及びP2の二次partitionである)を他のOSDノード、例えば、この実施形態におけるOSD2ノード及びOSDnノードに移行させる。
1104 MDCモジュールが、OSD2ノードにビュー更新について通知し、OSD2ノードがP1の一次ノードとして設定され、P2の二次ノードとなる。
1106 MDCモジュールが、OSDnノードにビュー更新について通知し、OSDnノードは、P2の一次ノードであり、P1の二次ノードとなる。
1108 OSD2ノードが、P2のデータを同期するようOSDnノードに要求する。
OSDnノードは、P2の一次OSDノードであるため、OSD2ノードが、OSDn上のP2の一次partitionのデータを同期して、OSD2上のP2の二次partitionのデータがOSDn上のP2の一次partitionのデータと整合性があるようにするようOSDnノードに要求する。特定の同期手順は、図10A及び図10Bに示される前述のデータ回復手順におけるpartition全体のデータの同期手順と同様であり、詳細がここで再び説明されることはない。
1110 OSDnノードが、P1のデータを同期するようOSD2ノードに要求する。
OSD2ノードは、P1の元の二次OSDノードであるため、OSD1ノードが、P1の新たな二次OSDノードとして障害を有するようになった後、OSDnノードは、P1のデータをOSD2とだけしか同期することができず、OSDnノードは、OSD2上のP1の一次partitionのデータを同期して、OSDn上のP1の二次partitionのデータがOSD2上のP1の一次partitionのデータと整合性があるようにするようOSD2ノードに要求する。
1112 partitionデータ同期を完了する。
1114 OSD2ノードが、MDCモジュールにP2のデータ移行が完了されたことを通知する。
1116 OSDnノードが、MDCモジュールにP1のデータ移行が完了されたことを通知する。
1118 MDCモジュールが、対応する通知によりビュー更新を実行する。
特定のビュー更新原理は、前述の手順において説明されるものと同一であり、更新プロセスは、前述の手順において説明されるものと同一であり、詳細がここで再び説明されることはない。
1120 ビュー更新を通知し、P1の二次OSDnノードのpartitionステータスは、整合性がある。
1122 ビュー更新を通知し、P2の二次OSD2ノードのpartitionステータスは、整合性がある。
1124 OSD2ノード及びOSDnノードが、最新のビューにより、IO要求に対応するデータのレプリケーションを処理する。
新たなOSDノードがクラスタに参加する手順
新たなノードがクラスタに参加し、別のOSDノード上に最初に分散されているpartitionが、クラスタに参加する新たなOSDノードに移行されて、データ分散平衡を保証する必要がある。新たなノードがクラスタに参加する手順は、データ移行、データ移行後のビュー更新、ビュー更新通知、及び更新されたビューによりIO要求のレプリケーションに対して関連するOSDノードによって実行される処理に主に関する。
データ移行プロセスにおけるIO処理は、フェイルバック手順及びデータ回復手順における処理と合致しており、データ移行が完了された後、MDCがビュー更新及びビュー通知を実行するプロセスは、フェイルバックが完了された後に実行されるビュー更新処理と整合性がある。関連する各OSDノードが、更新されたビューにより、IO要求に対応するデータのレプリケーションを処理するプロセスもまた、フェイルバックが完了された後に最新のビューにより各OSDノードによって実行されるIO処理と整合性がある。
特定の実施形態において、データ移行が完了された後、ビュー更新を実行することは、以下、すなわち、(1)クラスタに参加する新たなノードが、依然として、いくつかのpartitionグループの二次OSDノードであること、partitionステータスに整合性があること、及びpartitionグループの元の二次OSDがもはや、partitionの二次ノードではないこと、(2)クラスタに参加する新たなノードがいくつかのpartitionグループの一次OSDノードとして設定されること、及びpartitionグループがもはや、元の一次OSDノードに属さないこと(partitionグループがもはや、元の一次OSD上に分散されないこと)を含むことが可能である。
理解を容易にするのに、以下に、説明のために特定の実施形態を使用する。この実施形態は、図2Aないし図2C、及び図5において説明される実施形態において言及されるMDCモジュール、IOルーティングモジュール、及びOSDノードによって実行される。理解を容易にするのに、この実施形態において、関連するOSDノードは、OSD1ノード、OSDnノード、及びクラスタに参加する新たなOSDノードであり、OSD1は、partitionグループP1(略してP1)の一次OSDノード、及びpartitionグループPn(略してPn)の二次OSDノードであり、OSDnは、Pnの一次OSDノード、及びP1の二次OSDノードであり、クラスタに参加する新たなOSDノードは、P1の二次OSDノード、及びPnの二次OSDノードであるものと想定される。図12A及び図12Bに示されるとおり、この実施形態における、新たなOSDノードがクラスタに参加する手順は、以下のステップを特に含む。すなわち、
1202 新たなOSDノードがクラスタに参加する構成コマンドをMDCモジュールに供給する。
特定の実施様態において、システム管理者が、構成コマンドを使用することによって、新たなOSDノードがクラスタに参加することをMDCモジュールに通知することが可能である。
1204 MDCモジュールは、ビュー更新を実行し、いくつかのOSDノード上のpartitionを、クラスタに参加する新たなOSDノードに移行させる。
この実施形態において、MDCモジュールは、OSD1ノード上のP1の二次partition、及びOSDnノード上のPnの二次partitionを、クラスタに参加する新たなOSDノードに移行させて、クラスタに参加する新たなOSDノードが、P1の新たな二次OSDノード、及びPnの新たな二次OSDノードの役割をするようにする。
1206 OSD1ノードにビュー更新について通知し、新たな二次OSDを追加する。
特定の実施様態において、MDCモジュールは、ビュー更新についてOSD1ノードに通知し、クラスタに参加する新たなOSDノードが、P1の二次OSDノードとしてP1の新たなpartition viewに追加され、対応するpartitionステータスは「不整合である」(クラスタに参加する新たなOSDノードとOSD1ノードが、P1の同期されたデータをまだ有しないため)。
1208 OSDnノードにビュー更新について通知し、新たな二次OSDを追加する。
特定の実施様態において、クラスタに参加する新たなOSDノードは、Pnの二次OSDノードとしてPnの新たなpartition viewに追加され、対応するpartitionステータスは、「不整合である」(クラスタに参加する新たなOSDノードとOSDnノードが、Pnの同期されたデータをまだ有しないため)。
1210 クラスタに参加する新たなOSDノードを開始する。
特定の実施様態において、クラスタに参加する新たなOSDノードが新たなOSDノードとしてクラスタに参加した後、初期化プロセスが実行される。特定のプロセスは、図6におけるクラスタビューの初期化された生成及び獲得の前述の手順と同一であり、詳細がここで再び説明されることはない。
1212 OSDノードのpartition情報を返す。
特定の実施様態において、MDCモジュールが、クラスタに参加する新たなOSDノード上のpartitionのビュー、すなわち、この実施形態においてP1のIO view及びPnのIO viewを、クラスタに参加する新たなOSDノードに返す。
1214 クラスタに参加する新たなOSDノードが、partitionデータを同期するよう一次OSD1ノードに要求する。
特定の実施様態において、クラスタに参加する新たなOSDノードが、MDCによって返されるP1のIO viewにより、P1のデータを同期して、すなわち、OSD1ノード上のP1の一次partitionのデータを同期して、クラスタに参加する新たなOSDノード上のP1の二次partitionのデータが、OSD1ノード上のP1の一次partitionのデータと整合性があるようにするようP1の一次OSDノード、すなわち、OSD1に要求する。
特定の同期手順は、図10A及び図10Bに示される前述のデータ回復手順におけるpartition全体のデータの同期手順と同様であり、詳細がここで再び説明されることはない。
1216 クラスタに参加する新たなOSDノードが、partitionデータを同期するよう一次OSDnノードに要求する。
特定の実施様態において、クラスタに参加する新たなOSDノードは、MDCによって返されるPnのIOビューにより、Pnのデータを同期して、すなわち、OSDnノード上のPnの一次partitionのデータを同期して、クラスタに参加する新たなOSDノード上のPnの二次partitionのデータが、OSDnノード上のPnの一次partitionのデータと整合性があるようにするようPnの一次OSDノード、すなわち、OSDnに要求する。
特定の同期手順は、図10A及び図10Bに示される前述のデータ回復手順におけるpartition全体のデータの同期手順と同様であり、詳細がここで再び説明されることはない。
1218 partitionデータ同期を完了する。
1220 二次ノードがpartitionデータ移行を完了したことをMDCに通知する。
特定の実施様態において、OSD1ノードが、クラスタに参加する新たなOSDノードがP1のデータ同期を完了したことをMDCモジュールに通知する。
1222 二次ノードがpartitionデータ移行を完了したことをMDCに通知する。
特定の実施様態において、OSDnノードが、クラスタに参加する新たなOSDノードがPnのデータ同期を完了したことをMDCモジュールに通知する。
1224 MDCモジュールが、ビュー更新を実行する。
特定のビュー更新原理は、前述の手順において説明されるものと同一であり、更新プロセスは、前述の手順において説明されるものと同一であり、詳細がここで再び説明されることはない。
1226〜1230 ビュー更新についてOSD1ノード、OSDnノード、クラスタに参加する新たなOSDノードに別々に通知する。
1232 OSD1ノード、OSDnノード、クラスタに参加する新たなOSDノードが、更新されたビューにより、IO要求に対応するデータのレプリケーションを処理する。
実施形態の前述の説明に基づいて、当業者は、関係のあるハードウェアに指示するプログラムによって実施され得る実施形態における方法のステップのすべて、又はいくつかを理解することが可能である。そのプログラムは、コンピュータ可読記憶媒体に記憶されることが可能である。そのプログラムが実行されると、方法実施形態のステップが実行される。その記憶媒体は、例えば、ROM/RAM、磁気ディスク、又は光ディスクである。
前述の説明は、本発明の特定の実施形態に過ぎず、本発明の保護範囲を限定することは意図していない。本発明において開示される技術範囲内で当業者によって容易に考案される変形及び置換は、本発明の保護範囲に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲の対象とされるべきものとする。

Claims (12)

  1. 分散ストレージ及びレプリケーションシステムであって、前記システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを備え、前記MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、前記少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び前記一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、前記一次partitionを備えるpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、前記二次partitionを備えるpartitionグループの二次OSDノードであり、並びに前記partitionによりpartitionビューを生成し、前記partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を備える、ように適応され、前記IOルーティングモジュールは、受信されたIO要求をOSDノードへルーティングするように適応され、前記OSDノードは、前記IO要求により、前記IO要求に対応するデータの記憶を実行するように適応され、
    前記MDCは、当該システムの中のOSDノードが障害を有するOSDノードであると決定し、前記障害を有するOSDノード上のpartitionを決定し、前記障害を有するOSDノード上の前記partitionを備えるpartitionグループのpartitionビューを更新し、前記更新されたpartitionビューにおける一次OSDノードに更新通知を送信し、
    前記一次OSDノードは、前記MDCモジュールによって送信された前記更新通知を受信した後、前記更新されたpartitionビューにより、前記IO要求に対応する前記データのレプリケーションを処理するように適応され
    前記partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを備え、前記一次OSDノードは、前記更新されたpartitionビューにより、前記一次OSDノード上にローカルで記憶されたpartitionビューを更新するようにさらに適応され、
    前記更新されたpartitionビューにより、前記IO要求に対応する前記データのレプリケーションを前記処理することは、
    前記更新されたローカルで記憶されたpartitionビューにより、前記IOルーティングモジュールからの前記IO要求に対応する前記データを、partitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード上に、或いはpartitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード、及びpartitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて不整合であるが、データを回復している二次OSDノードの上にレプリケートすることを備える、
    システム。
  2. 前記MDCモジュールは、IOビューを生成し、前記IOビューは、partitionグループの一次OSDノードの識別子を備え、並びに前記IOルーティングモジュール、及び前記partitionビューにおいて前記partitionが位置付けられる前記OSDノードに前記IOビューを送信するように適応され、
    前記一次OSDノードは、前記更新されたpartitionビューにより、前記一次OSDノード上にローカルで記憶されたIOビューを更新し、及び前記更新されたローカルで記憶されたIOビューにより、前記IO要求に対応する前記データのレプリケーションを処理するようにさらに適応される、請求項に記載のシステム。
  3. 前記MDCモジュールは、前記障害を有するOSDノード上の前記partitionが一次partitionを備えると決定した場合、前記一次partitionを備えるpartitionグループのIOビューを更新し、前記更新されたIOビューについて前記更新されたpartitionビューにおける二次OSDノードに通知するようにさらに適応され、
    前記更新されたpartitionビューにおける前記二次OSDノードは、前記更新されたIOビューにより、ローカルで記憶されたIOビューを更新し、前記更新されたローカルで記憶されたIOビューにより、前記IO要求に対応する前記データのレプリケーションを処理するように適応される、請求項に記載のシステム。
  4. 前記MDCモジュールは、前記更新されたIOビューについて前記IOルーティングモジュールに通知するようにさらに適応され、
    前記IOルーティングモジュールは、前記更新されたIOビューにより、前記IOルーティングモジュール上にローカルで記憶されたIOビューを更新し、前記更新されたローカルで記憶されたIOビューにより、前記IO要求の転送を処理する、請求項に記載のシステム。
  5. 前記障害を有するOSDノード上の前記partitionを備えるpartitionグループのpartitionビューを前記更新することは、
    前記障害を有するOSDノード上の前記partitionが二次partitionを備える場合、前記二次partitionを備えるpartitionグループのpartitionビューにおいて前記障害を有するOSDノードのpartitionステータスに不整合であるという印を付けること、並びに
    前記障害を有するOSDノード上の前記partitionが前記一次partitionを備える場合、前記一次partitionを備える前記partitionグループのpartitionビューにおいて一次OSDノードの役割をする前記障害を有するOSDノードを新たな二次OSDノードとして設定すること、前記新たな二次OSDノードに対応するpartitionステータスに不整合であるという印を付けること、partitionステータスが整合性がある二次OSDノードを、前記一次partitionを備える前記partitionグループの前記partitionビューにおける元の二次OSDノードから選択すること、及び前記選択された二次OSDノードを新たな一次OSDノードとして設定することを備える、請求項に記載のシステム。
  6. 前記障害を有するOSDノードがフェイルバック及びデータ回復を完了した後、前記MDCモジュールは、前記更新されたpartitionビュー及び前記更新されたIOビューをさらに更新し、前記さらに更新されたpartitionビューにおける一次OSDノードに更新通知を送信し、及び前記さらに更新されたpartitionビューにおける二次OSDノードに更新通知を送信するように適応され、
    前記さらに更新されたpartitionビューにおける前記一次OSDノードは、前記さらに更新されたpartitionビューにより、前記IO要求に対応する前記データのレプリケーションを処理するように適応され、
    前記さらに更新されたpartitionビューにおける前記二次OSDノードは、前記さらに更新されたIOビューにより、前記IO要求に対応する前記データのレプリケーションを処理するように適応される、請求項に記載のシステム。
  7. 前記システムは複数のホストを備え、前記MDCモジュール、前記IOルーティングモジュール、及び前記OSDノードは、前記複数のホストのうちの少なくとも1つに別々に配置され、前記OSDノードは、前記ホスト上の物理ストレージリソースを管理するように適応される、請求項1からのいずれか一項に記載のシステム。
  8. 分散ストレージ及びレプリケーションシステムであって、前記システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを備え、前記MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、前記少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、前記一次partitionを含むpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、前記二次partitionを備えるpartitionグループの二次OSDノードであり、並びに前記partitionによりpartitionビューを生成し、前記partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報、並びにpartitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを備える、ように適応され、前記IOルーティングモジュールは、受信されたIO要求をOSDノードへルーティングするように適応され、前記OSDノードは、前記IO要求により、前記IO要求に対応するデータの記憶を実行するように適応され、
    前記システムは、メモリと、プロセッサとを備え、
    前記メモリは、コンピュータ可読命令を記憶するように適応され、前記命令は、前記MDCモジュール、前記IOルーティングモジュール、及び前記OSDノードの機能を実行するのに使用され、
    前記プロセッサは、前記メモリに接続され、前記メモリの中の前記命令を読み取り、かつ前記命令により、前記プロセッサが、
    前記システムにおけるOSDノードが障害を有するOSDノードであると決定し、前記障害を有するOSDノード上のpartitionを決定する工程と、
    前記障害を有するOSDノード上の前記partitionを備えるpartitionグループのpartitionビューを更新する工程と、
    前記更新されたpartitionビューにおける前記partitionグループが位置付けられる一次OSDノードに更新通知を送信して、前記一次OSDノードが、前記更新されたpartitionビューにより、前記一次OSDノードにローカルで記憶されたpartitionビューを更新し、前記更新されたローカルで記憶されたpartitionビューにより、前記IOルーティングモジュールからの前記IO要求に対応する前記データを、partitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード上に、或いはpartitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード、及びpartitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて不整合であるが、データを回復している二次OSDノードの上にレプリケートするようにする工程と、
    を実行することを可能にするように適応される、システム。
  9. 分散ストレージシステムにおいてデータ記憶及びデータレプリケーションを管理するための方法であって、前記システムは、少なくとも1つのメタデータ制御(MDC)モジュールと、複数のIOルーティングモジュールと、複数のオブジェクトベースのストレージデバイス(OSD)ノードとを備え、前記MDCモジュールは、各OSDノードに関して、各OSDノードによって管理される物理ストレージリソースに対応する少なくとも1つの論理パーティション(partition)を構成し、前記少なくとも1つのpartitionは、一次partition、二次partition、又は一次partitionと二次partitionの任意の組合せであり、一次partition、及び前記一次partitionに対応する二次partitionは、partitionグループを構成し、同一のpartitionグループの中の一次partitionと二次partitionは、異なるOSDノード上に位置付けられ、一次partitionが位置付けられるOSDノードは、前記一次partitionを備えるpartitionグループの一次OSDノードであり、二次partitionが位置付けられるOSDノードは、前記二次partitionを備えるpartitionグループの二次OSDノードであり、並びに前記partitionによりpartitionビューを生成し、前記partitionビューは、partitionグループの中のpartitionが位置付けられるOSDについての情報を備える、ように適応され、前記IOルーティングモジュールは、OSDノードに受信されたIO要求をルーティングするように適応され、前記OSDノードは、前記IO要求により、前記IO要求に対応するデータの記憶を実行するように適応され、前記方法は、
    前記システムにおけるOSDノードが障害を有するOSDノードであると決定し、前記障害を有するOSDノード上のpartitionを決定し、前記障害を有するOSDノード上の前記partitionを備えるpartitionグループのpartitionビューを更新すること、及び前記更新されたpartitionビューにおける一次OSDノードに更新通知を送信する工程を備え、
    前記一次OSDノードは、前記MDCモジュールによって送信された前記更新通知を受信した後、前記更新されたpartitionビューにより、前記IO要求に対応する前記データのレプリケーションを処理するように適応され
    前記partitionビューは、partitionグループの中のpartitionが位置付けられるOSDのものである一次/二次ID及び対応するpartitionステータスを特に備え、前記一次OSDノードは、前記更新されたpartitionビューにより、前記一次OSDノード上にローカルで記憶されたpartitionビューを更新するようにさらに適応され、
    前記更新されたpartitionビューにより、前記IO要求に対応する前記データのレプリケーションを前記処理することは、
    前記更新されたローカルで記憶されたpartitionビューにより、前記IOルーティングモジュールからの前記IO要求に対応する前記データを、partitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード上に、或いはpartitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて整合性がある二次OSDノード、及びpartitionステータスが前記更新されたローカルで記憶されたpartitionビューにおいて不整合であるが、データを回復している二次OSDノードの上にレプリケートすることを備える、方法。
  10. 前記方法は、
    前記障害を有するOSDノード上の前記partitionが一次partitionを備えると決定した場合、前記MDCモジュールによる、前記一次partitionを備えるpartitionグループのIOビューを更新し、及び前記更新されたIOビューについて前記更新されたpartitionビューにおける二次OSDノードに通知する工程と、
    前記更新されたpartitionビューにおける前記二次OSDノードによる、前記更新されたIOビューにより、ローカルで記憶されたIOビューを更新し、及び前記更新されたローカルで記憶されたIOビューにより、前記IO要求に対応する前記データのレプリケーションを処理する工程と、
    をさらに備える請求項に記載の方法。
  11. 前記障害を有するOSDノード上の前記partitionを備えるpartitionグループのpartitionビューを前記更新することは、
    前記障害を有するOSDノード上の前記partitionが二次partitionを備える場合、前記二次partitionを備えるpartitionグループのpartitionビューにおいて前記障害を有するOSDノードのpartitionステータスに不整合であるという印を付けること、並びに
    前記障害を有するOSDノード上の前記partitionが前記一次partitionを備える場合、前記一次partitionを備える前記partitionグループのpartitionビューにおいて一次OSDノードの役割をする前記障害を有するOSDノードを新たな二次OSDノードとして設定し、前記新たな二次OSDノードに対応するpartitionステータスに不整合であるという印を付け、partitionステータスが整合性がある二次OSDノードを、前記一次partitionを備える前記partitionグループの前記partitionビューにおける元の二次OSDノードから選択し、及び前記選択された二次OSDノードを新たな一次OSDノードとして設定することを備える、請求項10に記載の方法。
  12. 前記方法は、
    前記障害を有するOSDノードがフェイルバック及びデータ回復を完了した後、前記MDCモジュールによる、前記更新されたpartitionビュー及び前記更新されたIOビューをさらに更新し、前記さらに更新されたpartitionビューにおける一次OSDノードに更新通知を送信し、及び前記さらに更新されたpartitionビューにおける二次OSDノードに更新通知を送信する工程と、
    前記さらに更新されたpartitionビューにおける前記一次OSDノードによる、前記さらに更新されたpartitionビューにより、前記IO要求に対応する前記データのレプリケーションを処理する工程と、
    前記さらに更新されたpartitionビューにおける前記二次OSDノードによる、前記さらに更新されたIOビューにより、前記IO要求に対応する前記データのレプリケーションを処理する工程と、
    をさらに備える請求項11に記載の方法。
JP2017539482A 2014-11-06 2014-11-06 分散ストレージ及びレプリケーションシステム、並びに方法 Active JP6382454B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/090445 WO2016070375A1 (zh) 2014-11-06 2014-11-06 一种分布式存储复制系统和方法

Publications (2)

Publication Number Publication Date
JP2017534133A JP2017534133A (ja) 2017-11-16
JP6382454B2 true JP6382454B2 (ja) 2018-08-29

Family

ID=55908392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017539482A Active JP6382454B2 (ja) 2014-11-06 2014-11-06 分散ストレージ及びレプリケーションシステム、並びに方法

Country Status (7)

Country Link
US (1) US10713134B2 (ja)
EP (1) EP3159794B1 (ja)
JP (1) JP6382454B2 (ja)
CN (1) CN106062717B (ja)
BR (1) BR112016030547B1 (ja)
SG (1) SG11201703220SA (ja)
WO (1) WO2016070375A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875259B2 (en) 2014-07-22 2018-01-23 Oracle International Corporation Distribution of an object in volatile memory across a multi-node cluster
US10275184B2 (en) 2014-07-22 2019-04-30 Oracle International Corporation Framework for volatile memory query execution in a multi node cluster
US10002148B2 (en) * 2014-07-22 2018-06-19 Oracle International Corporation Memory-aware joins based in a database cluster
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US10567500B1 (en) * 2015-12-21 2020-02-18 Amazon Technologies, Inc. Continuous backup of data in a distributed data store
JP2018073231A (ja) * 2016-11-01 2018-05-10 富士通株式会社 ストレージシステムおよびストレージ装置
JP6279780B1 (ja) * 2017-02-20 2018-02-14 株式会社東芝 分散ストレージの非同期リモートレプリケーションシステムおよび分散ストレージの非同期リモートレプリケーション方法
WO2018188089A1 (zh) * 2017-04-14 2018-10-18 华为技术有限公司 数据处理方法、存储系统和交换设备
CN107046575B (zh) * 2017-04-18 2019-07-12 南京卓盛云信息科技有限公司 一种用于云存储系统的高密度存储方法
CN107678918B (zh) * 2017-09-26 2021-06-29 郑州云海信息技术有限公司 一种分布式文件系统的osd心跳机制设置方法及装置
CN107832164A (zh) * 2017-11-20 2018-03-23 郑州云海信息技术有限公司 一种基于Ceph的故障硬盘处理的方法及装置
WO2019119212A1 (zh) 2017-12-18 2019-06-27 华为技术有限公司 识别osd亚健康的方法、装置和数据存储系统
CN109995813B (zh) * 2017-12-29 2021-02-26 华为技术有限公司 一种分区扩展方法、数据存储方法及装置
CN110096220B (zh) * 2018-01-31 2020-06-26 华为技术有限公司 一种分布式存储系统、数据处理方法和存储节点
CN110515535B (zh) * 2018-05-22 2021-01-01 杭州海康威视数字技术股份有限公司 硬盘读写控制方法、装置、电子设备及存储介质
CN108845772B (zh) * 2018-07-11 2021-06-29 郑州云海信息技术有限公司 一种硬盘故障处理方法、系统、设备及计算机存储介质
CN110874382B (zh) * 2018-08-29 2023-07-04 阿里云计算有限公司 一种数据写入方法、装置及其设备
CN109144789B (zh) * 2018-09-10 2020-12-29 网宿科技股份有限公司 一种重启osd的方法、装置及系统
CN109144788B (zh) * 2018-09-10 2021-10-22 网宿科技股份有限公司 一种重建osd的方法、装置及系统
CN109189738A (zh) * 2018-09-18 2019-01-11 郑州云海信息技术有限公司 一种分布式文件系统中主osd的选取方法、装置及系统
CN111104057B (zh) * 2018-10-25 2022-03-29 华为技术有限公司 存储系统中的节点扩容方法和存储系统
CN109558437B (zh) * 2018-11-16 2021-01-01 新华三技术有限公司成都分公司 主osd调整方法及装置
CN111435331B (zh) * 2019-01-14 2022-08-26 杭州宏杉科技股份有限公司 存储卷写数据方法、装置、电子设备及机器可读存储介质
US11514024B2 (en) 2019-01-31 2022-11-29 Rubrik, Inc. Systems and methods for shard consistency in a clustered database
US10997130B2 (en) * 2019-01-31 2021-05-04 Rubrik, Inc. Systems and methods for node consistency in a clustered database
US11016952B2 (en) 2019-01-31 2021-05-25 Rubrik, Inc. Systems and methods to process a topology change in a clustered database
CN111510338B (zh) * 2020-03-09 2022-04-26 苏州浪潮智能科技有限公司 一种分布式块存储网络亚健康测试方法、装置及存储介质
US11223681B2 (en) * 2020-04-10 2022-01-11 Netapp, Inc. Updating no sync technique for ensuring continuous storage service in event of degraded cluster state
CN112596935B (zh) * 2020-11-16 2022-08-30 新华三大数据技术有限公司 一种osd故障处理方法及装置
CN112819592B (zh) * 2021-04-16 2021-08-03 深圳华锐金融技术股份有限公司 业务请求处理方法、系统、计算机设备和存储介质
CN113254277B (zh) * 2021-06-15 2021-11-02 云宏信息科技股份有限公司 存储集群osd故障修复方法、存储介质、监视器及存储集群

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790788A (en) * 1996-07-23 1998-08-04 International Business Machines Corporation Managing group events by a name server for a group of processors in a distributed computing environment
JP3563907B2 (ja) * 1997-01-30 2004-09-08 富士通株式会社 並列計算機
US6308300B1 (en) * 1999-06-04 2001-10-23 Rutgers University Test generation for analog circuits using partitioning and inverted system simulation
CN1258145C (zh) * 2002-08-06 2006-05-31 中国科学院计算技术研究所 基于虚拟存储的智能网络存储设备的系统
US7395265B2 (en) 2004-08-27 2008-07-01 Hitachi, Ltd. Data processing system and storage subsystem provided in data processing system
JP4519573B2 (ja) * 2004-08-27 2010-08-04 株式会社日立製作所 データ処理システム及び方法
US20060182050A1 (en) * 2005-01-28 2006-08-17 Hewlett-Packard Development Company, L.P. Storage replication system with data tracking
US7917469B2 (en) * 2006-11-08 2011-03-29 Hitachi Data Systems Corporation Fast primary cluster recovery
US8533155B2 (en) 2009-10-30 2013-09-10 Hitachi Data Systems Corporation Fixed content storage within a partitioned content platform, with replication
US8645460B2 (en) * 2008-10-07 2014-02-04 Huazhong University Of Science And Technology Method for managing object-based storage system
US8644188B1 (en) * 2009-06-25 2014-02-04 Amazon Technologies, Inc. Providing virtual networking functionality for managed computer networks
US8074107B2 (en) * 2009-10-26 2011-12-06 Amazon Technologies, Inc. Failover and recovery for replicated data instances
CN101751284B (zh) * 2009-12-25 2013-04-24 华为技术有限公司 一种分布式虚拟机监控器的i/o资源调度方法
WO2011100366A2 (en) 2010-02-09 2011-08-18 Google Inc. System and method for managing replicas of objects in a distributed storage system
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
CN102025550A (zh) * 2010-12-20 2011-04-20 中兴通讯股份有限公司 一种分布式集群中数据管理的系统和方法
US9805108B2 (en) * 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US8572031B2 (en) * 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US8583773B2 (en) * 2011-01-11 2013-11-12 International Business Machines Corporation Autonomous primary node election within a virtual input/output server cluster
US8615676B2 (en) * 2011-03-24 2013-12-24 International Business Machines Corporation Providing first field data capture in a virtual input/output server (VIOS) cluster environment with cluster-aware vioses
US8713282B1 (en) * 2011-03-31 2014-04-29 Emc Corporation Large scale data storage system with fault tolerance
JP2012221419A (ja) * 2011-04-13 2012-11-12 Hitachi Ltd 情報記憶システム及びそのデータ複製方法
US8924974B1 (en) * 2011-06-08 2014-12-30 Workday, Inc. System for error checking of process definitions for batch processes
US20130029024A1 (en) 2011-07-25 2013-01-31 David Warren Barbeque stove
CN102355369B (zh) * 2011-09-27 2014-01-08 华为技术有限公司 虚拟化集群系统及其处理方法和设备
WO2013117002A1 (zh) * 2012-02-09 2013-08-15 华为技术有限公司 一种数据重建方法、装置和系统
CN102571452B (zh) * 2012-02-20 2015-04-08 华为技术有限公司 多节点管理的方法和系统
CN103294675B (zh) 2012-02-23 2018-08-03 上海盛大网络发展有限公司 一种分布式存储系统中的数据更新方法及装置
CN102724057B (zh) * 2012-02-23 2017-03-08 北京市计算中心 一种面向云计算平台的分布式层次化自主管理方法
US9009421B2 (en) * 2012-11-13 2015-04-14 International Business Machines Corporation Dynamically improving memory affinity of logical partitions
CN103051691B (zh) * 2012-12-12 2015-09-09 华为技术有限公司 分区分配方法、装置以及分布式存储系统
US10282228B2 (en) * 2014-06-26 2019-05-07 Amazon Technologies, Inc. Log-based transaction constraint management

Also Published As

Publication number Publication date
EP3159794B1 (en) 2019-01-16
JP2017534133A (ja) 2017-11-16
SG11201703220SA (en) 2017-05-30
EP3159794A4 (en) 2017-10-25
US10713134B2 (en) 2020-07-14
BR112016030547A2 (ja) 2017-05-22
CN106062717A (zh) 2016-10-26
BR112016030547A8 (pt) 2022-07-12
CN106062717B (zh) 2019-05-03
WO2016070375A1 (zh) 2016-05-12
BR112016030547B1 (pt) 2022-11-16
US20170242767A1 (en) 2017-08-24
EP3159794A1 (en) 2017-04-26

Similar Documents

Publication Publication Date Title
JP6382454B2 (ja) 分散ストレージ及びレプリケーションシステム、並びに方法
US11360854B2 (en) Storage cluster configuration change method, storage cluster, and computer system
EP2758888B1 (en) Storage area network attached clustered storage system
EP3127018B1 (en) Geographically-distributed file system using coordinated namespace replication
US9934242B2 (en) Replication of data between mirrored data sites
US9639437B2 (en) Techniques to manage non-disruptive SAN availability in a partitioned cluster
TW202037138A (zh) 共識系統停機時間恢復
JP2019219954A (ja) クラスタストレージシステム、データ管理制御方法、データ管理制御プログラム
JP6491210B2 (ja) 分散データグリッドにおいて永続性パーティションリカバリをサポートするためのシステムおよび方法
WO2012071920A1 (zh) 分布式内存数据库的实现方法、系统、令牌控制器及内存数据库
GB2484086A (en) Reliability and performance modes in a distributed storage system
CN105069152B (zh) 数据处理方法及装置
CN113010496B (zh) 一种数据迁移方法、装置、设备和存储介质
CN105493474A (zh) 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法
CN112000444B (zh) 数据库事务处理方法、装置、存储介质和电子设备
WO2015196692A1 (zh) 一种云计算系统以及云计算系统的处理方法和装置
EP2980707B1 (en) Method for creating a database clone of a distributed database, system for creating a database clone of a distributed database, program and computer program product

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180622

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: 20180703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180801

R150 Certificate of patent or registration of utility model

Ref document number: 6382454

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250