(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-22
(45)【発行日】2024-03-04
(54)【発明の名称】データ検証の方法および装置、ならびに記憶媒体
(51)【国際特許分類】
G06F 3/06 20060101AFI20240226BHJP
G06F 13/10 20060101ALI20240226BHJP
【FI】
G06F3/06 305A
G06F3/06 301X
G06F3/06 304R
G06F3/06 540
G06F13/10 340A
(21)【出願番号】P 2020572791
(86)(22)【出願日】2019-06-14
(86)【国際出願番号】 CN2019091227
(87)【国際公開番号】W WO2020001287
(87)【国際公開日】2020-01-02
【審査請求日】2022-06-10
(31)【優先権主張番号】201810687959.5
(32)【優先日】2018-06-28
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】100188558
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【氏名又は名称】▲高▼橋 史生
(72)【発明者】
【氏名】ピンファン・ソン
(72)【発明者】
【氏名】ユエシェン・グ
【審査官】上島 拓也
(56)【参考文献】
【文献】米国特許出願公開第2012/0117351(US,A1)
【文献】特開2017-010425(JP,A)
【文献】特表2016-526720(JP,A)
【文献】特開2008-040718(JP,A)
【文献】米国特許出願公開第2011/0289366(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
データ検証装置によって実行されるデータ検証方法であって、
前記データ検証装置の決定モジュールによって、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、前記検証対象のデータブロックが位置するストレージノードは、前記分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含み、前記決定することは、
前記複数のデータブロックから第1のデータブロックを前記検証対象のデータブロックとして選択することであって、前記第1のデータブロックは、レプリカが位置するストレージノードのうち、第1のストレージノードの数が所定の数に達するデータブロックであり、前記第1のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択することを含む、決定することと、
前記データ検証装置の検証モジュールによって、前記検証対象のデータブロックを検証することと、
を含む、
方法。
【請求項2】
前記所定の数は、前記データブロックのすべてのレプリカの数である、請求項1に記載の方法。
【請求項3】
前記第1のデータブロックは、前記複数のデータブロックから、第1のマッピングテーブルに従って、前記検証対象のデータブロックとして選択され、前記第1のマッピングテーブルは、ストレージノードのアドレスと前記ストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、請求項1または2に記載の方法。
【請求項4】
データ検証装置によって実行されるデータ検証方法であって、
前記データ検証装置の決定モジュールによって、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、前記検証対象のデータブロックが位置するストレージノードは、前記分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定することと、
前記データ検証装置の検証モジュールによって、前記検証対象のデータブロックを検証することであって、
データブロックスライスを取得するために、前記検証対象のデータブロックに対して2次スライスを実行することと、
前記データブロックスライスを検証することと、
を含む、検証することと、
を含む、
方法。
【請求項5】
前記データブロックスライスを検証するステップが、
前記データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定することと、
前記判定の結果が、前記データブロックスライスが位置するストレージノードでの前記検証要求の数が前記検証要求の上限に達していないということである場合、前記データブロックスライスを検証することと、を含む、請求項4に記載の方法。
【請求項6】
前記データブロックスライスが位置するストレージノードでの前記検証要求の数が、所定の期間内にゼロにリセットされる、請求項5に記載の方法。
【請求項7】
第2のマッピングテーブルに従って、前記データブロックスライスが位置するストレージノードでの前記検証要求の数が、前記検証要求の上限に達していないかどうかを判定することであって、前記第2のマッピングテーブルは、前記ストレージノードのアドレスと、前記ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、決定すること、を含む、請求項5または6に記載の方法。
【請求項8】
前記データブロックスライスを検証するステップの後、前記方法が、
前記データ検証装置の再試行モジュールによって、バックオフ再試行様式で前記データブロックスライスに対して検証再試行を実行することであって、前記バックオフ再試行様式は、前記データブロックスライスに対して遅延再試行を実行することである、実行すること、をさらに含む、請求項4に記載の方法。
【請求項9】
バックオフ再試行様式で前記データブロックスライスに対して検証再試行を実行するステップが、
検証再試行のプロセス中、現在の再試行の直前の先行再試行の時間間隔によって前記現在の再試行の時間間隔を決定することであって、前記現在の再試行の前記時間間隔が、前記先行再試行の前記時間間隔よりも大きい、決定すること、を含む、請求項8に記載の方法。
【請求項10】
分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定し、前記複数のデータブロックから、第1のデータブロックを前記検証対象のデータブロックとして選択するように構成された決定モジュールであって、前記検証対象のデータブロックが位置するストレージノードは、前記分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含み、前記第1のデータブロックは、レプリカが位置するストレージノードのうち、第1のストレージノードの数が所定の数に達するデータブロックであり、前記第1のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、決定モジュールと、
前記検証対象のデータブロックを検証するように構成された検証モジュールと、
を含む、データ検証装置。
【請求項11】
記憶媒体であって、前記記憶媒体は、その中にプログラム命令を記憶し、前記プログラム命令は、実行時に、請求項1~9のいずれか一項に記載のデータ検証方法を実行するために、前記記憶媒体が位置するデバイスを制御する、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年6月28日に出願され、「DATA VERIFICATION METHOD AND APPARATUS,AND STORAGE MEDIUM」と題された中国特許出願第201810687959.5号の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【0002】
本発明は、コンピュータの分野に関し、より詳細には、データ検証の方法および装置、ならびに記憶媒体に関する。
【背景技術】
【0003】
大規模な分散ストレージシステムでは、入出力(IO)リンクが長く、ノードの数が多いため、単一のノードでのデータ破損の可能性が大幅に増加する。したがって、システムに記憶されているデータブロックの整合性を検証し、データブロックの複数のレプリカに整合性があるかどうかをチェックすることが非常に必要になる。しかしながら、データ検証自体は、分散ストレージシステムにおけるネットワークおよびストレージノードの追加の帯域幅リソースを占有する必要がある。分散ストレージシステムのユーザは、多くの場合、低遅延および高スループットを強く求めている。その結果、データ整合性検証を迅速に完了することができ、同時にユーザのフロントエンドでの読み取り/書き込み操作への影響を最小限に抑えるデータ検証の解決策が望まれる。
【0004】
関連技術には、主に以下の2つのデータ検証の解決策がある。解決策I:検証プログラムは、すべてのレプリカが位置するストレージノードに、指定されたデータブロックの検証要求を送信し、ストレージノードは、レプリカ全体のデータを読み取り、CRC32/MD5などの検証アルゴリズムを使用して、レプリカデータ全体のチェックコードを計算し、それらを検証プログラムに返し、次いで、検証プログラムは、すべてのストレージノードによって返されたチェックコードを比較し、それらが同じであるかどうかを確認し、それらが異なる場合、複数のレプリカのデータは整合性がない。解決策II:検証プログラムは、データブロックにおいて2次スライスを実行し、検証プログラムは、チェックされていないスライスを選択し、すべてのレプリカが位置するストレージノードに、指定されたデータブロックの指定されたスライスの検証要求を送信し、ストレージノードは、レプリカの指定されたスライスのデータを読み取り、CRC32/MD5などの検証アルゴリズムを使用して、スライスデータのチェックコードを計算し、それらを検証プログラムに返し、検証プログラムは、すべてのストレージノードによって返されたチェックコードを比較し、それらが同じであるかどうかを確認し、それらが異なる場合、スライスは、再試行キューに加わり、さらに再試行される。最大再試行数を超えた後も、すべてのストレージノードによって返されるチェックコードが依然として異なる場合、複数のレプリカのデータは整合性がない。
【0005】
上述の解決策Iでは、主に読み取り専用データの検証に使用される。ユーザがデータを継続的に更新する場合、ネットワーク上のデータ送信遅延のために、データブロックの複数のレプリカが位置するストレージノードの一部は、書き込み要求を受信していることがあり、一方で、一部は書き込み要求を受信していないことがある。したがって、短期間内に不整合が見つかるのが一般的である。この時点で、データ検証は、不正確な結論につながり得る不整合な結果をもたらし、したがって、誤検知を引き起こすことがある。加えて、この解決策は、検証要求ごとにレプリカ全体のデータを読み取り、これは、ストレージノードの多数のディスク帯域幅リソースを占有し、これによって、ユーザの通常の読み取り要求の性能に大きな不具合が発生する。
【0006】
上述の解決策IIは、2次スライスおよび再試行を採用しており、これは、ユーザへの検証要求によって引き起こされる読み取りの不具合を低減し、動的なデータ変更によって引き起こされる誤検知を減少させる。それにもかかわらず、データ検証は、依然として、検証中のストレージノードの特定のディスクおよびネットワーク帯域幅を占有する。したがって、ユーザの読み取り/書き込み要求は、検証中のストレージノードにアクセスする必要があるので、性能の低下の問題が依然として存在する。
【0007】
そのため、関連技術では、データ検証プロセス中にユーザのフロントエンドでの読み取り/書き込み操作が影響を受け、性能が低下する。
【0008】
前述の問題に関して、効果的な解決策は提案されていない。
【発明の概要】
【課題を解決するための手段】
【0009】
本発明の実施形態は、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術の技術的問題を少なくとも解決するために、データ検証の方法および装置、ならびに記憶媒体を提供する。
【0010】
本発明の実施形態の一態様によれば、データ検証方法が提供され、データ検証方法は、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定することと、検証対象のデータブロックを検証することと、を含む。
【0011】
本発明の実施形態の別の態様によれば、データ検証装置がさらに提供され、データ検証装置は、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するように構成された決定モジュールであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定モジュールと、検証対象のデータブロックを検証するように構成された検証モジュールと、を含む。
【0012】
本発明の実施形態の別の態様によれば、プログラム命令を記憶する記憶媒体がさらに提供され、プログラム命令は、実行時に、記憶媒体が位置するデバイスを制御して、上記のうちのいずれか1つに従ってデータ検証方法を実行する。
【0013】
本発明の実施形態の別の態様によれば、プログラムを実行するように構成されたプロセッサがさらに提供され、プログラムは、実行時に、上記のうちのいずれか1つに従ってデータ検証方法を実行する。
【0014】
本発明の実施形態では、検証対象のデータブロックを有するストレージノードを使用することは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードの様式を含み、決定された検証対象のデータブロックが位置するストレージノードは、検証対象のデータブロックの検証中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過大な負荷がかかるという問題を引き起こすのを防止する、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含み、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的を達成し、それによって、読み取り/書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【0015】
本明細書に記載される図面は、本発明のさらなる理解を容易にすることを意図しており、本出願の一部を構成する。本発明の例示的な実施形態およびその説明は、本発明を説明するために使用され、本発明に対する不適切な制限と見なされることは意図していない。図面は以下のとおりである。
【図面の簡単な説明】
【0016】
【
図1】データ検証方法を実施するように構成されたコンピュータ端末(またはモバイルデバイス)のハードウェア構造のブロック図を示す図である。
【
図2】本出願の実施形態1に従って提供されるデータ検証方法のフローチャートを示す図である。
【
図3】本出願の任意選択的な実施形態に従って提供される単一ファイルの処理フローの概略図を示す図である。
【
図4】本発明の一実施形態に従って提供されるデータ検証装置の構造ブロック図を示す図である。
【
図5】本発明の一実施形態によるコンピュータ端末の構造ブロック図を示す図である。
【発明を実施するための形態】
【0017】
当業者が本発明の技術的解決策をよりよく理解することを可能にするために、本発明の実施形態における技術的解決策について、本発明の実施形態における添付図面を参照して、以下に明確かつ完全に説明する。明らかに、記載される実施形態は、本発明の実施形態のすべてではなく一部にすぎない。創造的努力なしに本発明の実施形態に基づいて当業者によって取得可能なすべての他の実施形態は、本発明の保護範囲内に入るものとする。
【0018】
本発明の明細書、特許請求の範囲、および前述の図面における「第1」および「第2」を含む用語は、類似の対象を区別するために使用され、必ずしも特定の順番または順序を説明するために使用されるのではないことに留意されたい。このように使用されるデータは、適切な状況下で交換可能であり、したがって、本明細書に記載される本発明の実施形態は、本明細書に例示または記載されるもの以外の順番で実施できることを理解されたい。加えて、「含む」および「有する」という用語、ならびにそれらの任意の変形は、非排他的な包括をカバーすることを意図している。例えば、一連のステップまたはユニットを含むプロセス、方法、システム、製品、またはデバイスは、必ずしも明示的に列挙されたステップまたはユニットに制限されるものではなく、明示的に列挙されていないか、またはそのようなプロセス、方法、製品、もしくはデバイスに固有の他のステップまたはユニットを含んでもよい。
【0019】
まず、本出願の実施形態の説明に現れる名詞または用語のいくつかは、次のように説明される。
【0020】
分散ストレージシステム:全体として外部にストレージサービスを提供する、いくつかのノードで構成されるシステムである。これは、通常、分散アルゴリズムを使用して、高可用性および高性能を提供し、一部のノードの障害に耐えることができ、例えば、マスタ制御ノードおよびストレージノードを含むことができる。
【0021】
マスタ制御ノード:分散ストレージシステムにおけるメタデータを管理するノードであり、「マスタノード」とも称される。
【0022】
ストレージノード:アプリケーションデータを分散ストレージシステムに記憶するノードであり、概して、いくつかの記憶媒体で構成される。
【0023】
データブロック:分散ストレージシステムでは、データ分散のバランスのために、ファイルは固定サイズに従っていくつかのブロックに分割される。各ブロックは、データブロックと称され、これは、元のファイルの連続データの一部に対応する。
【0024】
レプリカ:分散ストレージシステムでは、データセキュリティのために、データブロックが複製され、より多くのコピーが作成され、異なるストレージノードに記憶され、各コピーはレプリカと称される。
【0025】
分散ストレージシステムには多数のノードおよびファイル、ならびに大量のデータがあるため、システム内のすべてのファイルを効率的かつ迅速に検証するために、本出願によって提供される検証プロセスは、分散ストレージシステムにおけるファイルのリストを取得し、次いで、各ファイルの検証タスクを作成し、それをスレッドプールに追加し、最後に、すべての検証タスクを高い同時性レベルNで同時に処理する。
【0026】
関連技術では、データ検証の解決策は、データ検証プロセス中のユーザフロントエンドの読み取り/書き込み性能に影響を与える。この問題に関して、本出願の実施形態は、以下で詳細に説明される対応する解決策を提供する。
【0027】
実施形態1
本発明の実施形態によれば、データ検証の方法の実施形態がさらに提供される。添付の図面のフローチャートに示されているステップは、コンピュータ実行可能命令のセットなど、コンピュータシステムにおいて実行できることに留意されたい。フローチャートに論理的な順序が示されているが、場合によっては、本明細書に示されているか、または記載されているステップは、異なる順番で実行されてもよい。
【0028】
データ検証プロセス中に、ストレージノードは、データブロックを読み取り、検証要求に従ってチェックコードを計算する。しかしながら、分散ストレージシステムにはより多くのストレージノードがあり、データ検証は、検証中のストレージノードの一定量のディスクおよびネットワーク帯域幅を占有する。本出願では、ストレージノードが負荷分散されて、同時に実行されるより多くの検証タスクがいくつかのストレージノードに過剰に集中し、これにより一部のストレージノードに過度の負荷がかかることを防止する。本出願は、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させる。加えて、複数の検証タスクが検証要求を送信するとき、グローバルトラフィック制御様式を使用して、単位時間あたりの各ストレージノードでの検証要求の数を特定の範囲内で制御することができることを確実にし、単位時間あたりの各ストレージノードでのデータ検証によって発生する追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にする。言い換えれば、単一のストレージノードの場合、グローバルトラフィック制御様式によって、すべての検証タスクによって送信される検証要求の総数を許容範囲内に制限することができ、単一のストレージノードに過度の負荷がかかる問題を効果的に回避することができる。負荷分散処理様式がない場合、ほとんどの検証タスクが同じストレージノードに同時にアクセスすることがあり、次いで、グローバルトラフィック制御様式が単一のストレージノードに使用される場合、すべての検証タスクが遅くなり、クラスタの全体的な検証速度が遅くなることに留意されたい。負荷分散処理様式では、複数の検証タスクが検証のためにストレージノードに過剰に集中する状況が発生しないため、異なる検証タスク間の競合が低減し、クラスタの全体的な検証速度が効果的に向上する。
【0029】
さらに、本出願は、あまりにも多くの検証要求が通常の読み取り/書き込み間隔に影響を与える状況を回避するために、バックオフ様式で再試行を実施する。前述の様々な様式のうちの1つ以上を通じて、本出願は、同時性の高いデータ検証プロセスによるストレージノードのディスクおよびネットワークリソースの占有を減少させ、それによって、同時に検証タスクの迅速な完了を維持しながら、データ検証プロセスがユーザフロントエンドでの読み取り/書き込み操作に与える影響を効果的に低減する。したがって、データ検証は、ユーザの知らないうちに正常に実行することができる。
【0030】
上記の考えに基づいて、本出願の実施形態1で提供される方法の実施形態は、モバイル端末、コンピュータ端末、または同様のコンピューティング装置で実行することができる。
図1は、データ検証方法を実施するように構成されたコンピュータ端末(またはモバイルデバイス)のハードウェア構造のブロック図を示す。
図1に示されるように、コンピュータ端末10(またはモバイルデバイス10)は、1つ以上の(図には102a、102b、…、102nとして示される)プロセッサ102(プロセッサ102は、MCUのようなマイクロプロセッサ、またはFPGAのようなプログラマブルロジックデバイスなどの処理装置を含み得る)、データを記憶するためのメモリ104、および通信機能のための送信モジュール106を含み得るが、これらに制限されない。加えて、これは、ディスプレイ、入力/出力インターフェース(Input/output interface)、ユニバーサルシリアルバス(USB)ポート(I/Oインターフェースのポートのうちの1つとして含めることができる)、ネットワークインターフェース、電源、および/またはカメラも含み得る。当業者であれば、
図1に示される構造が単なる例示であり、上述の電子装置の構造を制限するものではないことを理解することができる。例えば、コンピュータ端末10はまた、
図1に示されるものよりも多いもしくは少ない構成要素を含んでいてもよく、または
図1に示されるものとは異なる構成を有していてもよい。
【0031】
前述の1つ以上のプロセッサ102および/または他のデータ処理回路は、本明細書では、概して「データ処理回路」と称され得ることに留意されたい。データ処理回路は、全体的または部分的に、ソフトウェア、ハードウェア、ファームウェア、または任意の他の組み合わせとして具体化することができる。加えて、データ処理回路は、単一の独立した処理モジュールであってもよく、またはコンピュータ端末10(もしくはモバイルデバイス)における他の構成要素のうちのいずれか1つに完全にまたは部分的に統合されてもよい。本出願の実施形態に関与するとき、データ処理回路は、一種のプロセッサ(例えば、インターフェースに接続された可変抵抗端子経路の選択)として制御される。
【0032】
メモリ104は、本発明の実施形態におけるデータ検証方法に対応するプログラム命令/データ記憶装置などのソフトウェアプログラムおよびアプリケーションソフトウェアのモジュールを記憶するために使用され得る。プロセッサ102は、メモリ104に記憶されたソフトウェアプログラムおよびモジュールを実行して、様々な機能アプリケーションおよびデータ処理を実行し、すなわち、前述のアプリケーションプログラムのデータ検証方法を達成する。メモリ104は、高速ランダムアクセスメモリを含んでもよく、また、1つ以上の磁気記憶装置、フラッシュメモリなどの不揮発性メモリ、または他の不揮発性ソリッドステートメモリも含んでもよい。いくつかの例では、メモリ104は、プロセッサ102に対してリモートに配設されたメモリをさらに含んでいてもよい。これらのリモートメモリは、ネットワークを介してコンピュータ端末10に接続され得る。前述のネットワークの例は、インターネット、企業イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびこれらの組み合わせを含むが、これらに制限されない。
【0033】
送信装置106は、ネットワークを介して、データを受信または送信するために使用される。前述のネットワークの例は、コンピュータ端末10の通信プロバイダによって提供される無線ネットワークを含み得る。一例では、送信装置106は、インターネットとの通信が妥当なものになるように、基地局を介して他のネットワークデバイスに接続することができるネットワークアダプタ(ネットワークインターフェースコントローラ、NIC)を含む。一例では、送信装置106は、無線様式でインターネットと通信するために使用される無線周波数(RF)モジュールであってもよい。
【0034】
ディスプレイは、例えば、タッチスクリーン液晶ディスプレイ(LCD)であってもよく、これによって、ユーザは、コンピュータ端末10(またはモバイルデバイス)のユーザインターフェースと対話することができる。
【0035】
前述の動作環境において、本出願は、
図2に示されるようなデータ検証方法を提供する。
図2は、本出願の実施形態1に従って提供されるデータ検証方法のフローチャートを示し、
図2に示されるように、この方法は、以下を含む。
ステップS202:分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む。
【0036】
前述の負荷分散戦略を使用して、分散ストレージシステム内のデータブロックを記憶するストレージノードに検証タスクを分散させることができることに留意されたい。例えば、特定のストレージノードに多数の検証タスクがある(検証タスクの数が閾値に達した)場合、または検証タスクが複雑である(検証タスクの複雑さが閾値を超えている)場合、ストレージノードを過負荷と見なすことができる。データブロックを検証する必要があるとき、ストレージノードに対応すべきであることが判明した場合、この時点ではデータブロックは検証されていない。しかしながら、データブロックに対応するストレージノードでの検証タスクがほんのわずかであるとき、または検証タスクが単純であるとき、データブロックを検証することができる。このようにして、一部のストレージノードに過度の負荷がかからないように、分散ストレージシステムにおけるストレージノードでの検証タスクを分散させることができる。
【0037】
前述の分散ストレージシステムにおける負荷分散戦略を満たすストレージノードは、分散ストレージシステムにおける複数のストレージノードの中で、そのように制限されないが、より少ない(検証タスクの数が閾値未満である)、またはより単純な(検証タスクの複雑さが閾値未満である)検証タスクを有するストレージノードと見なすことができることに留意されたい。
【0038】
データセキュリティのために、データブロックを複製し、複数のレプリカを作成することができる。各レプリカは、異なるストレージノードにそれぞれ記憶され、すなわち、各レプリカがストレージノードに対応する。したがって、本出願の任意選択的な実施形態では、前述のステップS202は、複数のデータブロックから第1のデータブロックを検証対象のデータブロックとして選択するように具体化することができ、第1のデータブロックは、レプリカが位置するストレージノードのうち、第1のストレージノードの数が所定の数に達するデータブロックであり、第1のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである。すなわち、決定された検証対象のデータブロックのレプリカが位置しているストレージノードのうち、検証タスクが少ないストレージノードの数が所定の数に達する。
【0039】
必要に応じて、前述の所定の数をあらかじめ設定しておいてもよいことに留意されたい。本発明の任意選択的な実施形態では、前述の所定の数は、データブロックのすべてのレプリカの数であり得る。すなわち、前述の検証対象のデータブロックのすべてのレプリカが位置するストレージノードでは、検証タスクが少ないと見なすことができる。
【0040】
本出願の任意選択的な実施形態では、第1のデータブロックは、複数のデータブロックから、第1のマッピングテーブルに従って、検証対象のデータブロックとして選択され得、第1のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する。
【0041】
データブロックを事前に先入れ先出しキューに記憶することができることに留意されたい。例えば、Mをストレージノードでの検証タスクの上限(検証タスクの最大数)とし、テーブルAを第1のマッピングテーブルとし、テーブルAの「キー」値は、ストレージノードのアドレスを表し、「キー」値に対応する「値」値は、ストレージノードにアクセスする同時検証タスクの数を表す。前述のステップS202は、以下のように具体化することができる。先入れ先出しキューからデータブロックを抽出し、抽出されたデータブロックのレプリカのアドレス情報が使用され、各レプリカのアドレス情報について、テーブルAの「キー」値の列または行で対応するレプリカのアドレス情報を検索し、アドレス情報が存在する場合、レプリカのアドレス情報に対応するストレージノードでの検証タスクの数が前述のMに達しているかどうかを判定し、前述のデータブロックのすべてのレプリカが位置するストレージノードでの検証タスクの数がMに達していないとき、テーブルA内の対応するストレージノードに対応する「値」値を1つ増加させ、この時点でのデータブロックは、検証対象のデータブロックであり、データブロックのすべてのレプリカが位置するストレージノードのうち、少なくとも1つのストレージノードでの検証タスクの数がMに達したとき、データブロックを前述の先入れ先出しキューの最後に挿入し、再度データブロックを抽出して、(データブロックのすべてのレプリカが位置するストレージノードでの検証タスクの数がMに達していない)抽出されたデータブロックが負荷分散戦略を満たすデータブロックになるまで、前述の検索および判定プロセスを続行する。
【0042】
ステップS204:検証対象のデータブロックを検証する。
【0043】
本出願の前述の実施形態1に開示された解決策において、分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定した後、検証対象のデータブロックを検証する。決定された検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであり、この解決策は、負荷分散戦略に基づいて、検証対象のデータブロックの決定を達成することができる。
【0044】
検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであることに容易に気付き、すなわち、決定された検証対象のデータブロックが位置するストレージノードが分散ストレージシステムにおける負荷分散戦略を満たし、これは、前述の決定された検証対象のデータブロックが、実際に負荷分散戦略に基づいて決定されていることも意味する。したがって、本出願の実施形態で提供される前述の解決策を通じて、検証対象のデータブロックを検証するプロセス中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過度の負荷を引き起こすという問題を回避することができ、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的を達成し、それによって、読み取り/書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【0045】
動的データ変更によって引き起こされる誤検知を低減し、送信トラフィックを低減するために、本発明の任意選択的な実施形態では、前述のステップS204は、データブロックスライスを取得するために、検証対象のデータブロックに対して2次スライスを実行し、データブロックスライスを検証するように具体化することができる。
【0046】
ストレージノードにおけるデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にするために、本出願は任意選択的な実施形態を提供することに留意されたい。すなわち、データブロックスライスを検証することは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するように具体化することができる。すなわち、データブロックスライスが位置するストレージノードでの検証要求の数を特定の範囲内に制御することによって、ストレージノードでのデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にすることができ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り/書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【0047】
検証要求の上限は、単位時間あたりストレージノードに送信することができる検証要求の最大数であり得るが、そのように制限されないことに留意されたい。検証要求の前述の上限は、ストレージノードの特性に基づいて事前設定されてもよく、または経験に応じて設定されてもよいが、そのように制限されない。
【0048】
ストレージノードのディスクおよびネットワークリソースの占有をより良好に減少させるために、さらに、単位時間あたりのストレージノードでの検証要求の数を特定の範囲内になるように制御することができることを確実にすることができ、それによって、単位時間あたりのストレージノードでの検証要求の数を許容範囲内になるように制御することができることを確実にすることができる。本発明の任意選択的な実施形態では、前述のデータブロックスライスが位置するストレージノードでの検証要求の数は、所定の期間内にゼロにリセットされる。
【0049】
前述の単位時間における「単位」は、1秒、3秒、5秒、50ミリ秒など、任意の時間とすることができるが、そのように制限されないことに留意されたい。任意選択的に、前述の所定の期間は、単位時間と見なすことができるが、それによっては制限されない。
【0050】
本発明の任意選択的な実施形態では、第2のマッピングテーブルに基づいて、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定することができ、第2のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する。
【0051】
ストレージノードのアドレスは、第2のマッピングテーブル内の「キー」値として使用することができ、ストレージノードにアクセスする検証要求の数は、第2のマッピングテーブル内の「キー」値に対応する「値」値として使用することができるが、それによって制限されないことに留意されたい。
【0052】
例えば、テーブルBを第2のマッピングテーブルとし、テーブルBの「キー」値は、ストレージノードのアドレスを表し、「キー」値に対応する「値」値は、ストレージノードにアクセスする検証要求の数を表し、Nを検証要求の上限(検証要求の最大数)とする。検証要求がストレージノードに送信される前に、ストレージノードのアドレス情報を使用してテーブルBを検索し、その期間にストレージノードに送信された検証要求の数がNに達するかどうかを確認し、Nに達していない場合、検証要求を送信し、ストレージノードのアドレスに対応するテーブルBの「値」値を1つ増加させ、Nに達した場合、一定の期間待ち、次いで、トラフィック制御条件が満たされるまでテーブルBを再度検索してから、検証要求を送信する。
【0053】
前述のデータブロックスライスの検証後、チェックコードに整合性がない状況が発生する場合があることに留意されたい。この時点で、ユーザがデータブロックスライスに対応する間隔を変更している可能性が高く、データは動的に変化している。したがって、本出願の前述の実施形態では、前述のデータブロックスライスの検証後、前述の方法は、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行することをさらに含み得、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである。
【0054】
本出願の任意選択的な実施形態では、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行することは、検証再試行のプロセス中、現在の再試行の時間間隔は、現在の再試行の直前の先行再試行の時間間隔によって決定され、現在の再試行の時間間隔は、先行再試行の時間間隔よりも大きい、ように具体化することができる。
【0055】
前述のバックオフ再試行様式でのデータブロックスライスにおける検証再試行によって、本出願は、再試行要求が多すぎて、前述のデータブロックスライスに対応する通常の読み取り/書き込み間隔に影響を与えることを回避し、前述のデータブロックスライスを連続的に監視する時間も増加し、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り/書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【0056】
現在の再試行の時間間隔が、現在の再試行の直前の先行再試行の時間間隔によって決定されるステップは、以下のように具体化することができることに留意されたい:再帰関数処理を通じて、先行再試行の時間間隔から所定の値が取得され、所定の値および再試行の間隔の上限値のうちの小さい方が、現在の再試行の時間間隔である。
【0057】
分散ストレージシステムには多数のノードおよびファイル、ならびに大量のデータがあるため、システム内のすべてのファイルを効率的かつ迅速に検証するために、分散ストレージシステムにおけるファイルのリストを取得した後、解決策は、各ファイルの検証タスクを作成し、それをスレッドプールに追加し、最後に、すべての検証タスクを高い同時性レベルで同時に処理することに留意されたい。ここで、
図3は、本出願の任意選択的な実施形態に従って提供される単一ファイルの処理フローの概略図を示す。
図3に示されるように、単一ファイルの処理フローは、以下を含む。
ステップ301:マスタノードからファイルのデータブロックリストを取得する。
ステップ302:データブロックリストに未処理のデータブロックがあるかどうかを判定し、判定結果が「はい」の場合、ステップ303に進み、判定結果が否定である場合、プロセスは終了する。
ステップ303:負荷分散戦略を満たすデータブロックを抽出する。
ステップ304:固定サイズに従ってデータブロックに対して2次スライスを実行する。
ステップ305:未処理のスライスがあるかどうかを判定し、判定結果が「はい」の場合、ステップ306に進み、判定結果が否定である場合、ステップ302に進む。
ステップ306:スライスを抽出し、いくつかのレプリカが位置するストレージノードにスライスのチェックコードを要求する(すべての要求はグローバルトラフィック制御を通過する必要がある)。
ステップ307:チェックコードに整合性がないかどうかを判定し、そうである場合、ステップ308に進み、そうでない場合、ステップ305に進む。
ステップ308:確認のためにバックオフ再試行を実行する。
【0058】
単一の検証タスクごとに、最初にファイルのすべてのデータブロックと、これらのデータブロックのすべてのレプリカのアドレス情報がマスタノードを介して取得され、次いで、これらのデータブロックが先入れ先出しキューに挿入される。キューの場合、ストレージノードの負荷分散の原則に従って、毎回好適なデータブロックがキューから選択され、データブロックに対して2次スライスが実行され、次いで、すべてのスライスが整合性について順番に検証される。検証プロセス中、グローバルトラフィック制御が検証要求に課される。データブロックのすべてのスライスが検証されると、次のデータブロックを選択して、すべてのデータブロックが検証されるまで続行する。次いで、単一の検証タスクが終了する。
【0059】
単一のスライスの検証プロセス中、最初に、検証要求が、レプリカが位置するストレージノードに送信される。検証要求は、データブロック名、データブロック内のスライスのオフセット、およびスライスの長さを含む。ストレージノードは、検証要求に従ってレプリカの指定されたスライスのデータを読み取り、チェックコードを計算し、次いで、スライスのチェックコードを返す。異なるレプリカのスライスのチェックコードが比較され、それらが異なる場合、確認のためにバックオフ再試行が実行される。整合性がないチェックノードを有することが最終的に確認されたスライスについて、警告メッセージが生成される。
【0060】
すなわち、本出願の前述の実施形態では、フロントエンドの読み取り/書き込みへの影響は、主に、ストレージノードの負荷分散、検証要求のグローバルトラフィック制御、およびバックオフ再試行などの戦略を組み合わせることによって低減される。詳細がそれぞれ以下に記載されている。
(1)ストレージノードの負荷分散
同時に実行されるより多くの検証タスクがいくつかのストレージノードに多数の検証要求を集中させて、一部のストレージノードに過度の負荷がかかるのを防止するために、ストレージノードは、この任意選択的な解決策で負荷分散され、同じストレージノードに同時にアクセスできる検証タスクの最大数M(検証タスクの前述の上限に相当)を設定し、グローバルマッピングテーブルA(前述の第1のマッピングテーブルに相当)を作成し、テーブルAの「キー」は、ストレージノードのアドレスを表し、対応する「値」は、ストレージノードにアクセスする同時検証タスクの数を表す。これは、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させる。
【0061】
単一の検証タスクでは、データブロックが先入れ先出しキューから抽出されるたびに、特定のレプリカが位置するストレージノードに同時アクセスし得る検証タスクの数がMに達したかどうかを確認するために、データブロックのいくつかのレプリカのアドレス情報を使用して、テーブルA内で検索する必要がある。データブロックのすべてのレプリカが位置するストレージノードでの検証タスクの数がMに達していない場合、テーブルA内のストレージノードに対応する「値」値が1つ増加し、データブロックが処理され、そうでない場合、データブロックは、キューの最後に挿入され、別のデータブロックが抽出されて、負荷分散戦略を満たすデータブロックが抽出されるまで、前述の負荷分散チェックが続行される。
【0062】
(2)検証要求のグローバルトラフィック制御
この任意選択的な解決策では、検証プログラムのより多くの検証タスクが、検証要求を送信するときにグローバルトラフィック制御を通過する。単一のストレージノードの場合、グローバルトラフィック制御様式によって、すべての検証タスクによって送信される検証要求の数を許容範囲内に制限することができ、単一のストレージノードに過度の負荷がかかる問題を効果的に回避することができる。グローバルトラフィック制御は、検証プログラムによって単位時間あたり各ストレージノードに送信される検証要求の数を特定の範囲内に制御することができることを確実にするために使用され、それによって、各ストレージノードへのデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にし、単位時間あたり単一のストレージノードに送信できる検証要求の最大数をN(検証要求の前述の上限に相当)として設定し、グローバルマッピングテーブルB(前述の第2のマッピングテーブルに相当)を作成し、テーブル内の「キー」は、ストレージノードのアドレスを表し、対応する「値」は、特定の時間範囲内のストレージノードにすべての検証タスクによって送信された検証要求の数を表す。短い時間間隔(例えば、1秒/1分)(前述の所定の期間に相当)で、テーブルB内のすべてのストレージノードに対応する統計結果がゼロにリセットされ、次いで、統計が再実行される。時間間隔は、タイムスライスと称される。
【0063】
単一の検証タスクでは、検証プログラムが検証要求をストレージノードに送信する前に、ストレージノードのアドレス情報を使用してテーブルB内の検索を実行して、現在のタイムスライス内でストレージノードに送信された検証要求の数が上限Nに達したかどうかを確認する必要がある。それがNに達していない場合、検証要求が送信され、テーブルB内のストレージノードに対応する送信された要求の数が1つ増加し、そうでない場合、検証タスクは、しばらく待ち、次いで、実際に要求を送信する前に、トラフィック制御条件が満たされるまでテーブルB内で検索を再度実行する必要がある。
【0064】
(3)バックオフ再試行
整合性がないチェックコードを有するスライスが見つかった場合、ユーザがスライスに対応する間隔を変更している可能性が高く、データは動的に変化している。この場合、この好ましい解決策は、再試行を実行する。それにもかかわらず、再試行要求が多すぎて、通常の読み取り/書き込み間隔に影響を与えることを回避し、スライスを継続的に監視するためのより長い時間枠を有するために、この好ましい解決策は、バックオフ様式で再試行を実行し、再試行の最大数をZ、再試行間隔の初期値をT0、上限をTm、および再帰関数をF(x)として設定し、n番目の再試行の間隔をTnとして設定し、Tn=F(Tn-1)、およびTn>=Tn-1とする。
【0065】
再試行プロセス中、最初の再試行間隔をT1=T0とし、その後、各再試行間隔Tnについて、再帰関数F(x)に従って、先行再試行間隔Tn-1(先行再試行の時間間隔に相当)から暫定値Txが計算され、TxとTmのうちの小さい方の値が、再試行後にスライスが整合性検証に合格したことがわかるまで、または再試行回数がZに達するまで、この現在の再試行の実際の間隔(この現在の再試行の時間間隔に相当)として使用され、その後、再試行が終了する。
【0066】
前述のM、N、およびZはすべてゼロよりも大きい整数であるが、それらはそのように制限されないことに留意されたい。
【0067】
前述の方法の実行本体は、上記の
図1に示される端末であっても、検証プログラムなどのプログラムであってもよいことに留意されたい。検証プログラムは、端末または端末とは別のサードパーティデバイスに位置し得るが、それによって制限されない。
【0068】
前述の方法の実施形態では、説明を簡単にするために、それらはすべて一連の動作の組み合わせとして表されていることに留意されたい。しかしながら、当業者は、一部のステップが本発明に従って別の順番でまたは同時に実行され得るので、本発明は、記載された一連の動作によって制限されないことをわかっているはずである。次に、当業者は、本明細書に記載された実施形態がすべて好ましい実施形態であり、関与する動作およびモジュールが本発明によって必ずしも必要とされないこともわかっているはずである。
【0069】
当業者であれば、上記の実装形態の様式の説明から、上記の実施形態に従った方法が、ソフトウェアおよび必要な一般的なハードウェアプラットフォームによって、また明らかにハードウェアによって実施することができることを明確に理解することができる。しかしながら、多くの場合、前者がより良好な実施様式である。そのような理解に基づいて、本質的に本発明の技術的解決策、または現在の技術に寄与するその部分は、ソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品は、端末デバイス(携帯電話、コンピュータ、サーバ、ネットワークデバイスなどであり得る)が本発明の各実施形態の方法を実行できるようにするためのいくつかの命令を含む記憶媒体(ROM/RAM、磁気ディスク、または光ディスクなど)に記憶される。
【0070】
実施形態2
本発明の一実施形態によれば、前述のデータ検証方法を実施するための装置がさらに提供され、これは
図4に示されている。
図4は、本発明の一実施形態に従って提供されるデータ検証装置の構造ブロック図を示し、装置は、
分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するように構成された決定モジュール42であって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定モジュール42を含む。
【0071】
前述の負荷分散戦略を使用して、分散ストレージシステム内のデータブロックを記憶するストレージノードに検証タスクを分散させることができることに留意されたい。例えば、特定のストレージノードに多数の検証タスクがある(検証タスクの数が閾値に達した)場合、または検証タスクが複雑である(検証タスクの複雑さが閾値を超えている)場合、ストレージノードを過負荷と見なすことができる。データブロックを検証する必要があるとき、ストレージノードに対応すべきであることが判明した場合、この時点ではデータブロックは検証されていない。しかしながら、データブロックに対応するストレージノードでの検証タスクがほんのわずかであるとき、または検証タスクが単純であるとき、データブロックを検証することができる。このようにして、一部のストレージノードに過度の負荷がかからないように、分散ストレージシステムにおけるストレージノードでの検証タスクを分散させることができる。
【0072】
前述の分散ストレージシステムにおける負荷分散戦略を満たすストレージノードは、分散ストレージシステムにおける複数のストレージノードの中で、そのように制限されないが、より少ない(検証タスクの数が閾値未満である)、またはより単純な(検証タスクの複雑さが閾値未満である)検証タスクを有するストレージノードと見なすことができることに留意されたい。
【0073】
データセキュリティのために、データブロックを複製し、複数のレプリカを作成することができる。各レプリカは、異なるストレージノードにそれぞれ記憶され、すなわち、各レプリカがストレージノードに対応する。したがって、本出願の任意選択的な実施形態では、前述の決定モジュール42は、複数のデータブロックから第1のデータブロックを検証対象のデータブロックとして選択するためにさらに使用され、第1のデータブロックは、レプリカが位置するストレージノードのうち、第1のストレージノードの数が所定の数に達するデータブロックであり、第1のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである。すなわち、決定された検証対象のデータブロックのレプリカが位置しているストレージノードのうち、検証タスクが少ないストレージノードの数が所定の数に達する。
【0074】
必要に応じて、前述の所定の数をあらかじめ設定しておいてもよいことに留意されたい。本発明の任意選択的な実施形態では、前述の所定の数は、データブロックのすべてのレプリカの数であり得る。すなわち、前述の検証対象のデータブロックのすべてのレプリカが位置するストレージノードでは、検証タスクが少ないと見なすことができる。
【0075】
本出願の任意選択的な実施形態では、前述の決定モジュール42は、複数のデータブロックから、第1のマッピングテーブルに従って、検証対象のデータブロックとして第1のデータブロックを選択することができ、第1のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する。
【0076】
検証モジュール44は、前述の決定モジュール42に接続され、検証対象のデータブロックを検証するように構成される。
【0077】
本出願の前述の実施形態2に開示された解決策では、決定モジュール42が、分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定した後、検証モジュール44が、検証対象のデータブロックを検証する。決定された検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードである。この解決策は、負荷分散戦略に基づいて、検証対象のデータブロックの決定を達成することができる。
【0078】
検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであることに容易に気付き、すなわち、決定された検証対象のデータブロックが位置するストレージノードが分散ストレージシステムにおける負荷分散戦略を満たし、これは、前述の決定された検証対象のデータブロックが実際に負荷分散戦略に基づいて決定されていることも意味する。したがって、本出願の実施形態で提供される前述の解決策を通じて、検証対象のデータブロックを検証するプロセス中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過度の負荷を引き起こすという問題を回避することができ、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的を達成し、それによって、読み取り/書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【0079】
送信トラフィックを低減するために、本発明の任意選択的な実施形態では、検証モジュール44は、データブロックスライスを取得するために、検証対象のデータブロックに対して2次スライスを実行するように構成された処理ユニットと、前述の処理ユニットに接続され、データブロックスライスを検証するように構成された検証ユニットとを含む。
【0080】
ストレージノードにおけるデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にするために、本出願は任意選択的な実施形態を提供することに留意されたい。すなわち、前述の検証ユニットは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するためにさらに使用される。すなわち、データブロックスライスが位置するストレージノードでの検証要求の数を特定の範囲内に制御することによって、ストレージノードでのデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にすることができ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り/書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【0081】
検証要求の上限は、単位時間あたりストレージノードに送信することができる検証要求の最大数であり得るが、そのように制限されないことに留意されたい。検証要求の前述の上限は、ストレージノードの特性に基づいて事前設定されてもよく、または経験に応じて設定されてもよいが、そのように制限されない。
【0082】
ストレージノードのディスクおよびネットワークリソースの占有をより良好に減少させるために、さらに、単位時間あたりのストレージノードでの検証要求の数を特定の範囲内に制御することができることを確実にすることができ、それによって、単位時間あたりのストレージノードでの検証要求の数を許容範囲内に制御することができることを確実にすることができる。本発明の任意選択的な実施形態では、前述のデータブロックスライスが位置するストレージノードでの検証要求の数は、所定の期間内にゼロにリセットされる。
【0083】
前述の単位時間における「単位」は、1秒、3秒、5秒、50ミリ秒など、任意の時間とすることができるが、そのように制限されないことに留意されたい。任意選択的に、前述の所定の期間は、単位時間と見なすことができるが、それによっては制限されない。
【0084】
本発明の任意選択的な実施形態では、前述の検証ユニットは、第2のマッピングテーブルに基づいて、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定することができ、第2のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する。
【0085】
ストレージノードのアドレスは、第2のマッピングテーブル内の「キー」値として使用することができ、ストレージノードにアクセスする検証要求の数は、第2のマッピングテーブル内の「キー」値に対応する「値」値として使用することができるが、それによって制限されないことに留意されたい。
【0086】
前述のデータブロックスライスの検証後、チェックコードに整合性がない状況が発生する場合があることに留意されたい。この時点で、ユーザがデータブロックスライスに対応する間隔を変更している可能性が高く、データは動的に変化している。したがって、本出願の前述の実施形態では、前述のデータブロックスライスの検証後、前述の装置は、前述の検証ユニットに接続された再試行モジュールをさらに含み、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するように構成され得、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである。
【0087】
本出願の任意選択的な実施形態では、検証再試行のプロセス中、現在の再試行の時間間隔は、現在の再試行の直前の先行再試行の時間間隔によって決定され、現在の再試行の時間間隔は、先行再試行の時間間隔よりも大きい。
【0088】
前述のバックオフ再試行様式でのデータブロックスライスにおける検証再試行によって、本出願は、再試行要求が多すぎて、前述のデータブロックスライスに対応する通常の読み取り/書き込み間隔に影響を与えることを回避し、前述のデータブロックスライスを連続的に監視する時間も増加し、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り/書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【0089】
現在の再試行の時間間隔が、現在の再試行の直前の先行再試行の時間間隔によって決定されるステップは、再帰関数処理を通じて先行再試行の時間間隔から所定の値が取得され、所定の値と再試行の間隔の上限値のうちの小さい方がこの再試行の時間間隔である、ように具体化することができることに留意されたい。
【0090】
ここで、前述の決定モジュール42および検証モジュール44は、実施形態1のステップS202~S204に対応することに留意されたい。2つのモジュールおよび対応するステップによって達成される例および適用シナリオは同じであるが、前述の実施形態1によって開示される内容に制限されない。前述のモジュールは、装置の一部として実施形態1で提供されるコンピュータ端末10で実行することができる。
【0091】
実施形態3
本発明の一実施形態は、コンピュータ端末を提供し、コンピュータ端末は、コンピュータ端末グループ内の任意のコンピュータ端末デバイスであり得る。任意選択的に、この実施形態では、前述のコンピュータ端末は、モバイル端末などの端末デバイスで置き換えられてもよい。
【0092】
任意選択的に、この実施形態では、前述のコンピュータ端末は、コンピュータネットワーク内のより多くのネットワークデバイスのうちの少なくとも1つに位置し得る。
【0093】
この実施形態では、前述のコンピュータ端末は、アプリケーションプログラムのデータ検証方法において、以下のステップ:分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードである、決定するステップと、検証対象のデータブロックを検証するステップと、のプログラムコードを実行することができる。
【0094】
任意選択的に、
図5は、本発明の一実施形態によるコンピュータ端末の構造ブロック図を示す。
図5に示されるように、コンピュータ端末5は、1つ以上(図には1つのみが示されている)のプロセッサ52、メモリ54、および送信装置56を含み得る。
【0095】
ここで、メモリ54は、本発明の実施形態におけるデータ検証の方法および装置に対応するプログラム命令/モジュールなどのソフトウェアプログラムおよびモジュールを記憶するために使用することができる。プロセッサ52は、メモリ54に記憶されたソフトウェアプログラムおよびモジュールを実行して、様々な機能アプリケーションおよびデータ処理を実行し、すなわち、アプリケーションプログラムの前述のデータ検証方法を達成する。メモリ54は、高速ランダムアクセスメモリを含んでもよく、また、1つ以上の磁気記憶装置、フラッシュメモリなどの不揮発性メモリ、または他の不揮発性ソリッドステートメモリも含んでもよい。いくつかの例では、メモリ54は、プロセッサに対してリモートに配設されたメモリをさらに含んでいてもよい。これらのリモートメモリは、ネットワークを介してコンピュータ端末5に接続され得る。前述のネットワークの例は、インターネット、企業イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびこれらの組み合わせを含むが、これらに制限されない。
【0096】
プロセッサ52は、送信装置を介して、メモリに記憶された情報およびアプリケーションプログラムを呼び出して、以下のステップ実行することができる:分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定するステップ、および検証対象のデータブロックを検証するステップ。
【0097】
任意選択的に、前述のプロセッサは、複数のデータブロックから第1のデータブロックを検証対象のデータブロックとして選択するステップであって、第1のデータブロックは、レプリカが位置するストレージノードのうちの第1のストレージノードの数が所定の数に達するデータブロックであり、第1のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択するステップのプログラムコードを実行することもできる。
【0098】
任意選択的に、前述のプロセッサは、複数のデータブロックから、第1のマッピングテーブルに従って、検証対象のデータブロックとして第1のデータブロックを選択するステップであって、第1のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、選択するステップのプログラムコードを実行することもできる。
【0099】
任意選択的に、前述のプロセッサは、データブロックスライスを取得するために、検証対象のデータブロックに対して2次スライスを実行するステップと、データブロックスライスを検証するステップと、のプログラムコードを実行することもできる。
【0100】
任意選択的に、前述のプロセッサは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するステップのプログラムコードを実行することもできる。
【0101】
任意選択的に、前述のプロセッサは、第2のマッピングテーブルに従って、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定するステップであって、第2のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、判定するステップのプログラムコードを実行することもできる。
【0102】
任意選択的に、前述のプロセッサは、データブロックスライスの検証後、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するステップであって、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである、実行するステップのプログラムコードを実行することもできる。
【0103】
本出願の前述の実施形態1に開示された解決策において、分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定した後、検証対象のデータブロックが検証される。決定された検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであり、この解決策は、負荷分散戦略に基づいて、検証対象のデータブロックの決定を達成することができる。
【0104】
検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであることに容易に気付き、すなわち、決定された検証対象のデータブロックが位置するストレージノードが分散ストレージシステムにおける負荷分散戦略を満たし、これは、前述の決定された検証対象のデータブロックが実際に負荷分散戦略に基づいて決定されていることも意味する。したがって、本出願の実施形態で提供される前述の解決策を通じて、検証対象のデータブロックを検証するプロセス中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過度の負荷を引き起こすという問題を回避することができ、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り/書き込み操作への影響を低減するという目的を達成し、それによって、読み取り/書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り/書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【0105】
当業者であれば、
図5に示される構造は例示のためにすぎず、コンピュータ端末は、スマートフォン(アンドロイド(登録商標)電話、iOS電話など)、タブレットコンピュータ、ハンドヘルドコンピュータ、およびモバイルインターネットデバイス(MID)、PAD、および他の端末機器でもあり得ることを理解することができる。上記の電子デバイスの構造は、
図5によって制限されない。例えば、コンピュータ端末5は、
図5に示されるものよりも多いかもしくは少ない構成要素(ネットワークインターフェース、ディスプレイデバイスなど)をさらに含んでいてもよく、または
図5に示されるものとは異なる構成を有していてもよい。
【0106】
当業者であれば、前述の実施形態の様々な方法におけるステップのすべてまたは一部が、プログラムを介して端末デバイスの関連ハードウェアに命令することによって完了され得ることを理解することができる。プログラムは、コンピュータ可読記憶媒体に記憶することができ、これは、フラッシュディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光ディスクなどを含み得る。
【0107】
実施形態4
本発明の実施形態は、記憶媒体をさらに提供する。任意選択的に、この実施形態では、前述の実施形態1で提供されるデータ検証方法によって実行されるプログラムコードを記憶するために、前述の記憶媒体が使用されてもよい。
【0108】
任意選択的に、この実施形態では、前述の記憶媒体は、コンピュータネットワーク内のコンピュータ端末グループの任意のコンピュータ端末、またはモバイル端末グループの任意のモバイル端末に位置し得る。
【0109】
任意選択的に、この実施形態では、記憶媒体は、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定するステップと、検証対象のデータブロックを検証するステップと、を実行するためのプログラムコードを記憶するように構成される。
【0110】
任意選択的に、前述の記憶媒体は、複数のデータブロックから第1のデータブロックを検証対象のデータブロックとして選択するステップであって、第1のデータブロックは、レプリカが位置するストレージノードのうちの第1のストレージノードの数が所定の数に達するデータブロックであり、第1のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【0111】
任意選択的に、前述の記憶媒体は、複数のデータブロックから、第1のマッピングテーブルに従って、検証対象のデータブロックとして第1のデータブロックを選択するステップであって、第1のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、選択するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【0112】
任意選択的に、前述の記憶媒体は、データブロックスライスを取得するために、検証対象のデータブロックに対して2次スライスを実行するステップと、データブロックスライスを検証するステップと、を実行するためのプログラムコードを記憶するようにさらに構成される。
【0113】
任意選択的に、前述の記憶媒体は、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【0114】
任意選択的に、前述の記憶媒体は、第2のマッピングテーブルに従って、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを決定するステップであって、第2のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、決定するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【0115】
任意選択的に、前述の記憶媒体は、データブロックスライスの検証後、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するステップであって、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである、実行するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【0116】
実施形態5
この実施形態は、プロセッサを提供し、プロセッサは、実行時に、前述の実施形態1で提供されるデータ検証方法によって実行されるプログラムコードを実行するプログラムを実行するために使用される。
【0117】
任意選択的に、この実施形態では、前述のプロセッサは、コンピュータネットワーク内のコンピュータ端末グループの任意のコンピュータ端末、またはモバイル端末グループの任意のモバイル端末に位置し得る。
【0118】
任意選択的に、この実施形態では、プロセッサは、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定するステップと、検証対象のデータブロックを検証するステップと、のプログラムコードを実行するように構成される。
【0119】
任意選択的に、この実施形態では、プロセッサは、複数のデータブロックから第1のデータブロックを検証対象のデータブロックとして選択するステップであって、第1のデータブロックは、レプリカが位置するストレージノードのうちの第1のストレージノードの数が所定の数に達するデータブロックであり、第1のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択するステップのプログラムコードを実行するように構成される。
【0120】
任意選択的に、この実施形態では、プロセッサは、複数のデータブロックから、第1のマッピングテーブルに従って、検証対象のデータブロックとして第1のデータブロックを選択するステップであって、第1のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、選択するステップのプログラムコードを実行するように構成される。
【0121】
任意選択的に、この実施形態では、プロセッサは、データブロックスライスを取得するために、検証対象のデータブロックに対して2次スライスを実行するステップと、データブロックスライスを検証するステップと、のプログラムコードを実行するように構成される。
【0122】
任意選択的に、この実施形態では、プロセッサは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するステップのプログラムコードを実行するように構成される。
【0123】
任意選択的に、この実施形態では、プロセッサは、第2のマッピングテーブルに従って、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定するステップであって、第2のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、判定するステップのプログラムコードを実行するように構成される。
【0124】
任意選択的に、この実施形態では、プロセッサは、データブロックスライスの検証後、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するステップであって、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである、実行するステップのプログラムコードを実行するように構成される。
【0125】
簡潔な説明のために、前述の方法の実施形態はすべて一連の動作の組み合わせとして表されていることに留意されたい。しかしながら、当業者は、一部のステップが本出願に従って代替の順番でまたは並列に実行され得るので、本出願は、記載された一連の動作によって制限されないことをわかっているはずである。次に、当業者は、本明細書に記載された実施形態がすべて好ましい実施形態であり、関与する動作およびモジュールが本出願によって必ずしも必要とされないこともわかっているはずである。
【0126】
本発明の実施形態の通し番号は、単に説明のためのものであり、実施形態の品質の順番を表すものではない。
【0127】
本発明の前述の実施形態では、各実施形態の説明は、それ自体の重要性を有する。一実施形態に詳細に説明されていない任意の部分については、他の実施形態の関連する説明を参照することができる。
【0128】
本出願に提供されるいくつかの実施形態では、開示された技術的内容は、他の様式で実施され得ることを理解されたい。ここで、上記で説明した装置の実施形態は、単なる例示である。例えば、ユニットの分割は、単に論理的な機能の分割にすぎない。実際の実装では、他の分割様式が存在し得る。例えば、複数のユニットもしくは構成要素が、結合されてもよく、または別のシステムに統合されてもよく、または一部の特徴が、無視されるか、もしくは実装されなくてもよい。加えて、表示もしくは記載された相互結合、直接結合、または通信接続は、なんらかのインターフェースを通じて達成され得、ユニットもしくはモジュールの間接結合もしくは通信接続は、電気的な形態または他の形態であってもよい。
【0129】
個別の構成要素として説明されているユニットは、物理的に分離されていてもされていなくてもよく、ユニットとして表示される構成要素は、物理的なユニットであってもそうでなくてもよい。すなわち、それらは1つの場所に位置していてもよく、または複数のネットワークユニットに分散されてもよい。ユニットのいくつかまたはすべては、実施形態の解決策の目的を達成するための実際の必要性に従って選択されてもよい。
【0130】
さらに、本発明の様々な実施形態の機能ユニットが、1つの処理ユニットに統合されてもよく、または各ユニットが、物理的に単独に存在してもよく、または2つ以上のユニットが1つのユニットに統合されてもよい。前述の統合されたユニットは、ハードウェアまたはソフトウェア機能ユニットの形態で実装され得る。
【0131】
統合されたユニットがソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用される場合、それらは、コンピュータ可読記憶媒体に記憶され得る。そのような理解に基づいて、本質的に本発明の技術的解決策、または現在の技術に寄与する部分、または全体的もしくは部分的な技術的解決策は、ソフトウェア製品の形態で具体化することができ、コンピュータソフトウェア製品は、コンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイスなどであり得る)が本発明の各実施形態に記載されている方法のステップの全部または一部を実行できるようにするためのいくつかの命令を含む記憶媒体に記憶される。前述の記憶媒体は、USBフラッシュディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、モバイルハードディスク、磁気ディスク、光ディスク、またはプログラムコードを記憶し得る他の媒体を含む。
【0132】
前述の実施形態は、単に本発明の好ましい実施形態である。当業者にとって、本発明の原理から逸脱せずに、いくつかの改善および修正がなされ得ることに留意されたい。これらの改善および修正もまた、本発明の保護範囲内に収まると見なされるべきである。
【符号の説明】
【0133】
10 コンピュータ端末
102A プロセッサ
102B プロセッサ
102N プロセッサ
102 プロセッサ
104 メモリ
42 決定モジュール
44 検証モジュール
5 コンピュータ端末
52 プロセッサ
54 メモリ
56 送信装置