(57)【要約】  本発明は、データ検証の方法および装置、ならびに記憶媒体を開示する。この方法は、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定することと、検証対象のデータブロックを検証することと、を含む。本発明は、データ検証プロセス中にユーザのフロントエンドでの読み取り／書き込み性能が影響を受ける関連技術の技術的問題を解決する。
2021529392.tif 000002
【特許請求の範囲】
【請求項１】
データ検証方法であって、
分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、前記検証対象のデータブロックが位置するストレージノードは、前記分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定することと、
前記検証対象のデータブロックを検証することと、を含む、データ検証方法。
【請求項２】
前記分散ストレージシステムにおける前記所定のファイルに対応する前記複数のデータブロックの中から前記検証対象のデータブロックを前記決定することは、
前記複数のデータブロックから第１のデータブロックを前記検証対象のデータブロックとして選択することであって、前記第１のデータブロックは、レプリカが位置するストレージノードのうち、第１のストレージノードの数が所定の数に達するデータブロックであり、前記第１のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択することと、を含む、請求項１に記載の方法。
【請求項３】
前記所定の数は、前記データブロックのすべてのレプリカの数である、請求項２に記載の方法。
【請求項４】
前記第１のデータブロックは、前記複数のデータブロックから、第１のマッピングテーブルに従って、前記検証対象のデータブロックとして選択され、前記第１のマッピングテーブルは、ストレージノードのアドレスと前記ストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、請求項２または３に記載の方法。
【請求項５】
前記検証対象のデータブロックを検証するステップは、
データブロックスライスを取得するために、前記検証対象のデータブロックに対して２次スライスを実行することと、
前記データブロックスライスを検証することと、を含む、請求項１に記載の方法。
【請求項６】
前記データブロックスライスを検証するステップが、
前記データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定することと、
前記判定の結果が、前記データブロックスライスが位置するストレージノードでの前記検証要求の数が前記検証要求の上限に達していないということである場合、前記データブロックスライスを検証することと、を含む、請求項５に記載の方法。
【請求項７】
前記データブロックスライスが位置するストレージノードでの前記検証要求の数が、所定の期間内にゼロにリセットされる、請求項６に記載の方法。
【請求項８】
第２のマッピングテーブルに従って、前記データブロックスライスが位置するストレージノードでの前記検証要求の数が、前記検証要求の上限に達していないかどうかを判定することであって、前記第２のマッピングテーブルは、前記ストレージノードのアドレスと、前記ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、決定すること、を含む、請求項６または７に記載の方法。
【請求項９】
前記データブロックスライスを検証するステップの後、前記方法が、
バックオフ再試行様式で前記データブロックスライスに対して検証再試行を実行することであって、前記バックオフ再試行様式は、前記データブロックスライスに対して遅延再試行を実行することである、実行すること、をさらに含む、請求項５に記載の方法。
【請求項１０】
バックオフ再試行様式で前記データブロックスライスに対して検証再試行を実行するステップが、
検証再試行のプロセス中、現在の再試行の直前の先行再試行の時間間隔によって前記現在の再試行の時間間隔を決定することであって、前記現在の再試行の前記時間間隔が、前記先行再試行の前記時間間隔よりも大きい、決定すること、を含む、請求項９に記載の方法。
【請求項１１】
データ検証装置であって、
分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するように構成された決定モジュールであって、前記検証対象のデータブロックが位置するストレージノードは、前記分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定モジュールと、
前記検証対象のデータブロックを検証するように構成された検証モジュールと、を含む、データ検証装置。
【請求項１２】
前記決定モジュールは、前記複数のデータブロックから、第１のデータブロックを前記検証対象のデータブロックとして選択するように構成されており、前記第１のデータブロックは、レプリカが位置するストレージノードのうち、第１のストレージノードの数が所定の数に達するデータブロックであり、前記第１のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、請求項１１に記載の装置。
【請求項１３】
記憶媒体であって、前記記憶媒体は、その中にプログラム命令を記憶し、前記プログラム命令は、実行時に、請求項１〜１０のいずれか一項に記載のデータ検証方法を実行するために、前記記憶媒体が位置するデバイスを制御する、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１８年６月２８日に出願され、「ＤＡＴＡ  ＶＥＲＩＦＩＣＡＴＩＯＮ  ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ，ＡＮＤ  ＳＴＯＲＡＧＥ  ＭＥＤＩＵＭ」と題された中国特許出願第２０１８１０６８７９５９．５号の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【０００２】
本発明は、コンピュータの分野に関し、より詳細には、データ検証の方法および装置、ならびに記憶媒体に関する。
【背景技術】
【０００３】
大規模な分散ストレージシステムでは、入出力（ＩＯ）リンクが長く、ノードの数が多いため、単一のノードでのデータ破損の可能性が大幅に増加する。したがって、システムに記憶されているデータブロックの整合性を検証し、データブロックの複数のレプリカに整合性があるかどうかをチェックすることが非常に必要になる。しかしながら、データ検証自体は、分散ストレージシステムにおけるネットワークおよびストレージノードの追加の帯域幅リソースを占有する必要がある。分散ストレージシステムのユーザは、多くの場合、低遅延および高スループットを強く求めている。その結果、データ整合性検証を迅速に完了することができ、同時にユーザのフロントエンドでの読み取り／書き込み操作への影響を最小限に抑えるデータ検証の解決策が望まれる。
【０００４】
関連技術には、主に以下の２つのデータ検証の解決策がある。解決策Ｉ：検証プログラムは、すべてのレプリカが位置するストレージノードに、指定されたデータブロックの検証要求を送信し、ストレージノードは、レプリカ全体のデータを読み取り、ＣＲＣ３２／ＭＤ５などの検証アルゴリズムを使用して、レプリカデータ全体のチェックコードを計算し、それらを検証プログラムに返し、次いで、検証プログラムは、すべてのストレージノードによって返されたチェックコードを比較し、それらが同じであるかどうかを確認し、それらが異なる場合、複数のレプリカのデータは整合性がない。解決策ＩＩ：検証プログラムは、データブロックにおいて２次スライスを実行し、検証プログラムは、チェックされていないスライスを選択し、すべてのレプリカが位置するストレージノードに、指定されたデータブロックの指定されたスライスの検証要求を送信し、ストレージノードは、レプリカの指定されたスライスのデータを読み取り、ＣＲＣ３２／ＭＤ５などの検証アルゴリズムを使用して、スライスデータのチェックコードを計算し、それらを検証プログラムに返し、検証プログラムは、すべてのストレージノードによって返されたチェックコードを比較し、それらが同じであるかどうかを確認し、それらが異なる場合、スライスは、再試行キューに加わり、さらに再試行される。最大再試行数を超えた後も、すべてのストレージノードによって返されるチェックコードが依然として異なる場合、複数のレプリカのデータは整合性がない。
【０００５】
上述の解決策Ｉでは、主に読み取り専用データの検証に使用される。ユーザがデータを継続的に更新する場合、ネットワーク上のデータ送信遅延のために、データブロックの複数のレプリカが位置するストレージノードの一部は、書き込み要求を受信していることがあり、一方で、一部は書き込み要求を受信していないことがある。したがって、短期間内に不整合が見つかるのが一般的である。この時点で、データ検証は、不正確な結論につながり得る不整合な結果をもたらし、したがって、誤検知を引き起こすことがある。加えて、この解決策は、検証要求ごとにレプリカ全体のデータを読み取り、これは、ストレージノードの多数のディスク帯域幅リソースを占有し、これによって、ユーザの通常の読み取り要求の性能に大きな不具合が発生する。
【０００６】
上述の解決策ＩＩは、２次スライスおよび再試行を採用しており、これは、ユーザへの検証要求によって引き起こされる読み取りの不具合を低減し、動的なデータ変更によって引き起こされる誤検知を減少させる。それにもかかわらず、データ検証は、依然として、検証中のストレージノードの特定のディスクおよびネットワーク帯域幅を占有する。したがって、ユーザの読み取り／書き込み要求は、検証中のストレージノードにアクセスする必要があるので、性能の低下の問題が依然として存在する。
【０００７】
そのため、関連技術では、データ検証プロセス中にユーザのフロントエンドでの読み取り／書き込み操作が影響を受け、性能が低下する。
【０００８】
前述の問題に関して、効果的な解決策は提案されていない。
【発明の概要】
【課題を解決するための手段】
【０００９】
本発明の実施形態は、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術の技術的問題を少なくとも解決するために、データ検証の方法および装置、ならびに記憶媒体を提供する。
【００１０】
本発明の実施形態の一態様によれば、データ検証方法が提供され、データ検証方法は、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定することと、検証対象のデータブロックを検証することと、を含む。
【００１１】
本発明の実施形態の別の態様によれば、データ検証装置がさらに提供され、データ検証装置は、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するように構成された決定モジュールであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定モジュールと、検証対象のデータブロックを検証するように構成された検証モジュールと、を含む。
【００１２】
本発明の実施形態の別の態様によれば、プログラム命令を記憶する記憶媒体がさらに提供され、プログラム命令は、実行時に、記憶媒体が位置するデバイスを制御して、上記のうちのいずれか１つに従ってデータ検証方法を実行する。
【００１３】
本発明の実施形態の別の態様によれば、プログラムを実行するように構成されたプロセッサがさらに提供され、プログラムは、実行時に、上記のうちのいずれか１つに従ってデータ検証方法を実行する。
【００１４】
本発明の実施形態では、検証対象のデータブロックを有するストレージノードを使用することは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードの様式を含み、決定された検証対象のデータブロックが位置するストレージノードは、検証対象のデータブロックの検証中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過大な負荷がかかるという問題を引き起こすのを防止する、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含み、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的を達成し、それによって、読み取り／書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【００１５】
本明細書に記載される図面は、本発明のさらなる理解を容易にすることを意図しており、本出願の一部を構成する。本発明の例示的な実施形態およびその説明は、本発明を説明するために使用され、本発明に対する不適切な制限と見なされることは意図していない。図面は以下のとおりである。
【図面の簡単な説明】
【００１６】
【図１】データ検証方法を実施するように構成されたコンピュータ端末（またはモバイルデバイス）のハードウェア構造のブロック図を示す図である。
【図２】本出願の実施形態１に従って提供されるデータ検証方法のフローチャートを示す図である。
【図３】本出願の任意選択的な実施形態に従って提供される単一ファイルの処理フローの概略図を示す図である。
【図４】本発明の一実施形態に従って提供されるデータ検証装置の構造ブロック図を示す図である。
【図５】本発明の一実施形態によるコンピュータ端末の構造ブロック図を示す図である。
【発明を実施するための形態】
【００１７】
当業者が本発明の技術的解決策をよりよく理解することを可能にするために、本発明の実施形態における技術的解決策について、本発明の実施形態における添付図面を参照して、以下に明確かつ完全に説明する。明らかに、記載される実施形態は、本発明の実施形態のすべてではなく一部にすぎない。創造的努力なしに本発明の実施形態に基づいて当業者によって取得可能なすべての他の実施形態は、本発明の保護範囲内に入るものとする。
【００１８】
本発明の明細書、特許請求の範囲、および前述の図面における「第１」および「第２」を含む用語は、類似の対象を区別するために使用され、必ずしも特定の順番または順序を説明するために使用されるのではないことに留意されたい。このように使用されるデータは、適切な状況下で交換可能であり、したがって、本明細書に記載される本発明の実施形態は、本明細書に例示または記載されるもの以外の順番で実施できることを理解されたい。加えて、「含む」および「有する」という用語、ならびにそれらの任意の変形は、非排他的な包括をカバーすることを意図している。例えば、一連のステップまたはユニットを含むプロセス、方法、システム、製品、またはデバイスは、必ずしも明示的に列挙されたステップまたはユニットに制限されるものではなく、明示的に列挙されていないか、またはそのようなプロセス、方法、製品、もしくはデバイスに固有の他のステップまたはユニットを含んでもよい。
【００１９】
まず、本出願の実施形態の説明に現れる名詞または用語のいくつかは、次のように説明される。
【００２０】
分散ストレージシステム：全体として外部にストレージサービスを提供する、いくつかのノードで構成されるシステムである。これは、通常、分散アルゴリズムを使用して、高可用性および高性能を提供し、一部のノードの障害に耐えることができ、例えば、マスタ制御ノードおよびストレージノードを含むことができる。
【００２１】
マスタ制御ノード：分散ストレージシステムにおけるメタデータを管理するノードであり、「マスタノード」とも称される。
【００２２】
ストレージノード：アプリケーションデータを分散ストレージシステムに記憶するノードであり、概して、いくつかの記憶媒体で構成される。
【００２３】
データブロック：分散ストレージシステムでは、データ分散のバランスのために、ファイルは固定サイズに従っていくつかのブロックに分割される。各ブロックは、データブロックと称され、これは、元のファイルの連続データの一部に対応する。
【００２４】
レプリカ：分散ストレージシステムでは、データセキュリティのために、データブロックが複製され、より多くのコピーが作成され、異なるストレージノードに記憶され、各コピーはレプリカと称される。
【００２５】
分散ストレージシステムには多数のノードおよびファイル、ならびに大量のデータがあるため、システム内のすべてのファイルを効率的かつ迅速に検証するために、本出願によって提供される検証プロセスは、分散ストレージシステムにおけるファイルのリストを取得し、次いで、各ファイルの検証タスクを作成し、それをスレッドプールに追加し、最後に、すべての検証タスクを高い同時性レベルＮで同時に処理する。
【００２６】
関連技術では、データ検証の解決策は、データ検証プロセス中のユーザフロントエンドの読み取り／書き込み性能に影響を与える。この問題に関して、本出願の実施形態は、以下で詳細に説明される対応する解決策を提供する。
【００２７】
実施形態１
本発明の実施形態によれば、データ検証の方法の実施形態がさらに提供される。添付の図面のフローチャートに示されているステップは、コンピュータ実行可能命令のセットなど、コンピュータシステムにおいて実行できることに留意されたい。フローチャートに論理的な順序が示されているが、場合によっては、本明細書に示されているか、または記載されているステップは、異なる順番で実行されてもよい。
【００２８】
データ検証プロセス中に、ストレージノードは、データブロックを読み取り、検証要求に従ってチェックコードを計算する。しかしながら、分散ストレージシステムにはより多くのストレージノードがあり、データ検証は、検証中のストレージノードの一定量のディスクおよびネットワーク帯域幅を占有する。本出願では、ストレージノードが負荷分散されて、同時に実行されるより多くの検証タスクがいくつかのストレージノードに過剰に集中し、これにより一部のストレージノードに過度の負荷がかかることを防止する。本出願は、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させる。加えて、複数の検証タスクが検証要求を送信するとき、グローバルトラフィック制御様式を使用して、単位時間あたりの各ストレージノードでの検証要求の数を特定の範囲内で制御することができることを確実にし、単位時間あたりの各ストレージノードでのデータ検証によって発生する追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にする。言い換えれば、単一のストレージノードの場合、グローバルトラフィック制御様式によって、すべての検証タスクによって送信される検証要求の総数を許容範囲内に制限することができ、単一のストレージノードに過度の負荷がかかる問題を効果的に回避することができる。負荷分散処理様式がない場合、ほとんどの検証タスクが同じストレージノードに同時にアクセスすることがあり、次いで、グローバルトラフィック制御様式が単一のストレージノードに使用される場合、すべての検証タスクが遅くなり、クラスタの全体的な検証速度が遅くなることに留意されたい。負荷分散処理様式では、複数の検証タスクが検証のためにストレージノードに過剰に集中する状況が発生しないため、異なる検証タスク間の競合が低減し、クラスタの全体的な検証速度が効果的に向上する。
【００２９】
さらに、本出願は、あまりにも多くの検証要求が通常の読み取り／書き込み間隔に影響を与える状況を回避するために、バックオフ様式で再試行を実施する。前述の様々な様式のうちの１つ以上を通じて、本出願は、同時性の高いデータ検証プロセスによるストレージノードのディスクおよびネットワークリソースの占有を減少させ、それによって、同時に検証タスクの迅速な完了を維持しながら、データ検証プロセスがユーザフロントエンドでの読み取り／書き込み操作に与える影響を効果的に低減する。したがって、データ検証は、ユーザの知らないうちに正常に実行することができる。
【００３０】
上記の考えに基づいて、本出願の実施形態１で提供される方法の実施形態は、モバイル端末、コンピュータ端末、または同様のコンピューティング装置で実行することができる。図１は、データ検証方法を実施するように構成されたコンピュータ端末（またはモバイルデバイス）のハードウェア構造のブロック図を示す。図１に示されるように、コンピュータ端末１０（またはモバイルデバイス１０）は、１つ以上の（図には１０２ａ、１０２ｂ、…、１０２ｎとして示される）プロセッサ１０２（プロセッサ１０２は、ＭＣＵのようなマイクロプロセッサ、またはＦＰＧＡのようなプログラマブルロジックデバイスなどの処理装置を含み得る）、データを記憶するためのメモリ１０４、および通信機能のための送信モジュール１０６を含み得るが、これらに制限されない。加えて、これは、ディスプレイ、入力／出力インターフェース（Ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｉｎｔｅｒｆａｃｅ）、ユニバーサルシリアルバス（ＵＳＢ）ポート（Ｉ／Ｏインターフェースのポートのうちの１つとして含めることができる）、ネットワークインターフェース、電源、および／またはカメラも含み得る。当業者であれば、図１に示される構造が単なる例示であり、上述の電子装置の構造を制限するものではないことを理解することができる。例えば、コンピュータ端末１０はまた、図１に示されるものよりも多いもしくは少ない構成要素を含んでいてもよく、または図１に示されるものとは異なる構成を有していてもよい。
【００３１】
前述の１つ以上のプロセッサ１０２および／または他のデータ処理回路は、本明細書では、概して「データ処理回路」と称され得ることに留意されたい。データ処理回路は、全体的または部分的に、ソフトウェア、ハードウェア、ファームウェア、または任意の他の組み合わせとして具体化することができる。加えて、データ処理回路は、単一の独立した処理モジュールであってもよく、またはコンピュータ端末１０（もしくはモバイルデバイス）における他の構成要素のうちのいずれか１つに完全にまたは部分的に統合されてもよい。本出願の実施形態に関与するとき、データ処理回路は、一種のプロセッサ（例えば、インターフェースに接続された可変抵抗端子経路の選択）として制御される。
【００３２】
メモリ１０４は、本発明の実施形態におけるデータ検証方法に対応するプログラム命令／データ記憶装置などのソフトウェアプログラムおよびアプリケーションソフトウェアのモジュールを記憶するために使用され得る。プロセッサ１０２は、メモリ１０４に記憶されたソフトウェアプログラムおよびモジュールを実行して、様々な機能アプリケーションおよびデータ処理を実行し、すなわち、前述のアプリケーションプログラムのデータ検証方法を達成する。メモリ１０４は、高速ランダムアクセスメモリを含んでもよく、また、１つ以上の磁気記憶装置、フラッシュメモリなどの不揮発性メモリ、または他の不揮発性ソリッドステートメモリも含んでもよい。いくつかの例では、メモリ１０４は、プロセッサ１０２に対してリモートに配設されたメモリをさらに含んでいてもよい。これらのリモートメモリは、ネットワークを介してコンピュータ端末１０に接続され得る。前述のネットワークの例は、インターネット、企業イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびこれらの組み合わせを含むが、これらに制限されない。
【００３３】
送信装置１０６は、ネットワークを介して、データを受信または送信するために使用される。前述のネットワークの例は、コンピュータ端末１０の通信プロバイダによって提供される無線ネットワークを含み得る。一例では、送信装置１０６は、インターネットとの通信が妥当なものになるように、基地局を介して他のネットワークデバイスに接続することができるネットワークアダプタ（ネットワークインターフェースコントローラ、ＮＩＣ）を含む。一例では、送信装置１０６は、無線様式でインターネットと通信するために使用される無線周波数（ＲＦ）モジュールであってもよい。
【００３４】
ディスプレイは、例えば、タッチスクリーン液晶ディスプレイ（ＬＣＤ）であってもよく、これによって、ユーザは、コンピュータ端末１０（またはモバイルデバイス）のユーザインターフェースと対話することができる。
【００３５】
前述の動作環境において、本出願は、図２に示されるようなデータ検証方法を提供する。図２は、本出願の実施形態１に従って提供されるデータ検証方法のフローチャートを示し、図２に示されるように、この方法は、以下を含む。
ステップＳ２０２：分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定することであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む。
【００３６】
前述の負荷分散戦略を使用して、分散ストレージシステム内のデータブロックを記憶するストレージノードに検証タスクを分散させることができることに留意されたい。例えば、特定のストレージノードに多数の検証タスクがある（検証タスクの数が閾値に達した）場合、または検証タスクが複雑である（検証タスクの複雑さが閾値を超えている）場合、ストレージノードを過負荷と見なすことができる。データブロックを検証する必要があるとき、ストレージノードに対応すべきであることが判明した場合、この時点ではデータブロックは検証されていない。しかしながら、データブロックに対応するストレージノードでの検証タスクがほんのわずかであるとき、または検証タスクが単純であるとき、データブロックを検証することができる。このようにして、一部のストレージノードに過度の負荷がかからないように、分散ストレージシステムにおけるストレージノードでの検証タスクを分散させることができる。
【００３７】
前述の分散ストレージシステムにおける負荷分散戦略を満たすストレージノードは、分散ストレージシステムにおける複数のストレージノードの中で、そのように制限されないが、より少ない（検証タスクの数が閾値未満である）、またはより単純な（検証タスクの複雑さが閾値未満である）検証タスクを有するストレージノードと見なすことができることに留意されたい。
【００３８】
データセキュリティのために、データブロックを複製し、複数のレプリカを作成することができる。各レプリカは、異なるストレージノードにそれぞれ記憶され、すなわち、各レプリカがストレージノードに対応する。したがって、本出願の任意選択的な実施形態では、前述のステップＳ２０２は、複数のデータブロックから第１のデータブロックを検証対象のデータブロックとして選択するように具体化することができ、第１のデータブロックは、レプリカが位置するストレージノードのうち、第１のストレージノードの数が所定の数に達するデータブロックであり、第１のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである。すなわち、決定された検証対象のデータブロックのレプリカが位置しているストレージノードのうち、検証タスクが少ないストレージノードの数が所定の数に達する。
【００３９】
必要に応じて、前述の所定の数をあらかじめ設定しておいてもよいことに留意されたい。本発明の任意選択的な実施形態では、前述の所定の数は、データブロックのすべてのレプリカの数であり得る。すなわち、前述の検証対象のデータブロックのすべてのレプリカが位置するストレージノードでは、検証タスクが少ないと見なすことができる。
【００４０】
本出願の任意選択的な実施形態では、第１のデータブロックは、複数のデータブロックから、第１のマッピングテーブルに従って、検証対象のデータブロックとして選択され得、第１のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する。
【００４１】
データブロックを事前に先入れ先出しキューに記憶することができることに留意されたい。例えば、Ｍをストレージノードでの検証タスクの上限（検証タスクの最大数）とし、テーブルＡを第１のマッピングテーブルとし、テーブルＡの「キー」値は、ストレージノードのアドレスを表し、「キー」値に対応する「値」値は、ストレージノードにアクセスする同時検証タスクの数を表す。前述のステップＳ２０２は、以下のように具体化することができる。先入れ先出しキューからデータブロックを抽出し、抽出されたデータブロックのレプリカのアドレス情報が使用され、各レプリカのアドレス情報について、テーブルＡの「キー」値の列または行で対応するレプリカのアドレス情報を検索し、アドレス情報が存在する場合、レプリカのアドレス情報に対応するストレージノードでの検証タスクの数が前述のＭに達しているかどうかを判定し、前述のデータブロックのすべてのレプリカが位置するストレージノードでの検証タスクの数がＭに達していないとき、テーブルＡ内の対応するストレージノードに対応する「値」値を１つ増加させ、この時点でのデータブロックは、検証対象のデータブロックであり、データブロックのすべてのレプリカが位置するストレージノードのうち、少なくとも１つのストレージノードでの検証タスクの数がＭに達したとき、データブロックを前述の先入れ先出しキューの最後に挿入し、再度データブロックを抽出して、（データブロックのすべてのレプリカが位置するストレージノードでの検証タスクの数がＭに達していない）抽出されたデータブロックが負荷分散戦略を満たすデータブロックになるまで、前述の検索および判定プロセスを続行する。
【００４２】
ステップＳ２０４：検証対象のデータブロックを検証する。
【００４３】
本出願の前述の実施形態１に開示された解決策において、分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定した後、検証対象のデータブロックを検証する。決定された検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであり、この解決策は、負荷分散戦略に基づいて、検証対象のデータブロックの決定を達成することができる。
【００４４】
検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであることに容易に気付き、すなわち、決定された検証対象のデータブロックが位置するストレージノードが分散ストレージシステムにおける負荷分散戦略を満たし、これは、前述の決定された検証対象のデータブロックが、実際に負荷分散戦略に基づいて決定されていることも意味する。したがって、本出願の実施形態で提供される前述の解決策を通じて、検証対象のデータブロックを検証するプロセス中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過度の負荷を引き起こすという問題を回避することができ、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的を達成し、それによって、読み取り／書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【００４５】
動的データ変更によって引き起こされる誤検知を低減し、送信トラフィックを低減するために、本発明の任意選択的な実施形態では、前述のステップＳ２０４は、データブロックスライスを取得するために、検証対象のデータブロックに対して２次スライスを実行し、データブロックスライスを検証するように具体化することができる。
【００４６】
ストレージノードにおけるデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にするために、本出願は任意選択的な実施形態を提供することに留意されたい。すなわち、データブロックスライスを検証することは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するように具体化することができる。すなわち、データブロックスライスが位置するストレージノードでの検証要求の数を特定の範囲内に制御することによって、ストレージノードでのデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にすることができ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り／書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【００４７】
検証要求の上限は、単位時間あたりストレージノードに送信することができる検証要求の最大数であり得るが、そのように制限されないことに留意されたい。検証要求の前述の上限は、ストレージノードの特性に基づいて事前設定されてもよく、または経験に応じて設定されてもよいが、そのように制限されない。
【００４８】
ストレージノードのディスクおよびネットワークリソースの占有をより良好に減少させるために、さらに、単位時間あたりのストレージノードでの検証要求の数を特定の範囲内になるように制御することができることを確実にすることができ、それによって、単位時間あたりのストレージノードでの検証要求の数を許容範囲内になるように制御することができることを確実にすることができる。本発明の任意選択的な実施形態では、前述のデータブロックスライスが位置するストレージノードでの検証要求の数は、所定の期間内にゼロにリセットされる。
【００４９】
前述の単位時間における「単位」は、１秒、３秒、５秒、５０ミリ秒など、任意の時間とすることができるが、そのように制限されないことに留意されたい。任意選択的に、前述の所定の期間は、単位時間と見なすことができるが、それによっては制限されない。
【００５０】
本発明の任意選択的な実施形態では、第２のマッピングテーブルに基づいて、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定することができ、第２のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する。
【００５１】
ストレージノードのアドレスは、第２のマッピングテーブル内の「キー」値として使用することができ、ストレージノードにアクセスする検証要求の数は、第２のマッピングテーブル内の「キー」値に対応する「値」値として使用することができるが、それによって制限されないことに留意されたい。
【００５２】
例えば、テーブルＢを第２のマッピングテーブルとし、テーブルＢの「キー」値は、ストレージノードのアドレスを表し、「キー」値に対応する「値」値は、ストレージノードにアクセスする検証要求の数を表し、Ｎを検証要求の上限（検証要求の最大数）とする。検証要求がストレージノードに送信される前に、ストレージノードのアドレス情報を使用してテーブルＢを検索し、その期間にストレージノードに送信された検証要求の数がＮに達するかどうかを確認し、Ｎに達していない場合、検証要求を送信し、ストレージノードのアドレスに対応するテーブルＢの「値」値を１つ増加させ、Ｎに達した場合、一定の期間待ち、次いで、トラフィック制御条件が満たされるまでテーブルＢを再度検索してから、検証要求を送信する。
【００５３】
前述のデータブロックスライスの検証後、チェックコードに整合性がない状況が発生する場合があることに留意されたい。この時点で、ユーザがデータブロックスライスに対応する間隔を変更している可能性が高く、データは動的に変化している。したがって、本出願の前述の実施形態では、前述のデータブロックスライスの検証後、前述の方法は、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行することをさらに含み得、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである。
【００５４】
本出願の任意選択的な実施形態では、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行することは、検証再試行のプロセス中、現在の再試行の時間間隔は、現在の再試行の直前の先行再試行の時間間隔によって決定され、現在の再試行の時間間隔は、先行再試行の時間間隔よりも大きい、ように具体化することができる。
【００５５】
前述のバックオフ再試行様式でのデータブロックスライスにおける検証再試行によって、本出願は、再試行要求が多すぎて、前述のデータブロックスライスに対応する通常の読み取り／書き込み間隔に影響を与えることを回避し、前述のデータブロックスライスを連続的に監視する時間も増加し、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り／書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【００５６】
現在の再試行の時間間隔が、現在の再試行の直前の先行再試行の時間間隔によって決定されるステップは、以下のように具体化することができることに留意されたい：再帰関数処理を通じて、先行再試行の時間間隔から所定の値が取得され、所定の値および再試行の間隔の上限値のうちの小さい方が、現在の再試行の時間間隔である。
【００５７】
分散ストレージシステムには多数のノードおよびファイル、ならびに大量のデータがあるため、システム内のすべてのファイルを効率的かつ迅速に検証するために、分散ストレージシステムにおけるファイルのリストを取得した後、解決策は、各ファイルの検証タスクを作成し、それをスレッドプールに追加し、最後に、すべての検証タスクを高い同時性レベルで同時に処理することに留意されたい。ここで、図３は、本出願の任意選択的な実施形態に従って提供される単一ファイルの処理フローの概略図を示す。図３に示されるように、単一ファイルの処理フローは、以下を含む。
ステップ３０１：マスタノードからファイルのデータブロックリストを取得する。
ステップ３０２：データブロックリストに未処理のデータブロックがあるかどうかを判定し、判定結果が「はい」の場合、ステップ３０３に進み、判定結果が否定である場合、プロセスは終了する。
ステップ３０３：負荷分散戦略を満たすデータブロックを抽出する。
ステップ３０４：固定サイズに従ってデータブロックに対して２次スライスを実行する。
ステップ３０５：未処理のスライスがあるかどうかを判定し、判定結果が「はい」の場合、ステップ３０６に進み、判定結果が否定である場合、ステップ３０２に進む。
ステップ３０６：スライスを抽出し、いくつかのレプリカが位置するストレージノードにスライスのチェックコードを要求する（すべての要求はグローバルトラフィック制御を通過する必要がある）。
ステップ３０７：チェックコードに整合性がないかどうかを判定し、そうである場合、ステップ３０８に進み、そうでない場合、ステップ３０５に進む。
ステップ３０８：確認のためにバックオフ再試行を実行する。
【００５８】
単一の検証タスクごとに、最初にファイルのすべてのデータブロックと、これらのデータブロックのすべてのレプリカのアドレス情報がマスタノードを介して取得され、次いで、これらのデータブロックが先入れ先出しキューに挿入される。キューの場合、ストレージノードの負荷分散の原則に従って、毎回好適なデータブロックがキューから選択され、データブロックに対して２次スライスが実行され、次いで、すべてのスライスが整合性について順番に検証される。検証プロセス中、グローバルトラフィック制御が検証要求に課される。データブロックのすべてのスライスが検証されると、次のデータブロックを選択して、すべてのデータブロックが検証されるまで続行する。次いで、単一の検証タスクが終了する。
【００５９】
単一のスライスの検証プロセス中、最初に、検証要求が、レプリカが位置するストレージノードに送信される。検証要求は、データブロック名、データブロック内のスライスのオフセット、およびスライスの長さを含む。ストレージノードは、検証要求に従ってレプリカの指定されたスライスのデータを読み取り、チェックコードを計算し、次いで、スライスのチェックコードを返す。異なるレプリカのスライスのチェックコードが比較され、それらが異なる場合、確認のためにバックオフ再試行が実行される。整合性がないチェックノードを有することが最終的に確認されたスライスについて、警告メッセージが生成される。
【００６０】
すなわち、本出願の前述の実施形態では、フロントエンドの読み取り／書き込みへの影響は、主に、ストレージノードの負荷分散、検証要求のグローバルトラフィック制御、およびバックオフ再試行などの戦略を組み合わせることによって低減される。詳細がそれぞれ以下に記載されている。
（１）ストレージノードの負荷分散
同時に実行されるより多くの検証タスクがいくつかのストレージノードに多数の検証要求を集中させて、一部のストレージノードに過度の負荷がかかるのを防止するために、ストレージノードは、この任意選択的な解決策で負荷分散され、同じストレージノードに同時にアクセスできる検証タスクの最大数Ｍ（検証タスクの前述の上限に相当）を設定し、グローバルマッピングテーブルＡ（前述の第１のマッピングテーブルに相当）を作成し、テーブルＡの「キー」は、ストレージノードのアドレスを表し、対応する「値」は、ストレージノードにアクセスする同時検証タスクの数を表す。これは、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させる。
【００６１】
単一の検証タスクでは、データブロックが先入れ先出しキューから抽出されるたびに、特定のレプリカが位置するストレージノードに同時アクセスし得る検証タスクの数がＭに達したかどうかを確認するために、データブロックのいくつかのレプリカのアドレス情報を使用して、テーブルＡ内で検索する必要がある。データブロックのすべてのレプリカが位置するストレージノードでの検証タスクの数がＭに達していない場合、テーブルＡ内のストレージノードに対応する「値」値が１つ増加し、データブロックが処理され、そうでない場合、データブロックは、キューの最後に挿入され、別のデータブロックが抽出されて、負荷分散戦略を満たすデータブロックが抽出されるまで、前述の負荷分散チェックが続行される。
【００６２】
（２）検証要求のグローバルトラフィック制御
この任意選択的な解決策では、検証プログラムのより多くの検証タスクが、検証要求を送信するときにグローバルトラフィック制御を通過する。単一のストレージノードの場合、グローバルトラフィック制御様式によって、すべての検証タスクによって送信される検証要求の数を許容範囲内に制限することができ、単一のストレージノードに過度の負荷がかかる問題を効果的に回避することができる。グローバルトラフィック制御は、検証プログラムによって単位時間あたり各ストレージノードに送信される検証要求の数を特定の範囲内に制御することができることを確実にするために使用され、それによって、各ストレージノードへのデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にし、単位時間あたり単一のストレージノードに送信できる検証要求の最大数をＮ（検証要求の前述の上限に相当）として設定し、グローバルマッピングテーブルＢ（前述の第２のマッピングテーブルに相当）を作成し、テーブル内の「キー」は、ストレージノードのアドレスを表し、対応する「値」は、特定の時間範囲内のストレージノードにすべての検証タスクによって送信された検証要求の数を表す。短い時間間隔（例えば、１秒／１分）（前述の所定の期間に相当）で、テーブルＢ内のすべてのストレージノードに対応する統計結果がゼロにリセットされ、次いで、統計が再実行される。時間間隔は、タイムスライスと称される。
【００６３】
単一の検証タスクでは、検証プログラムが検証要求をストレージノードに送信する前に、ストレージノードのアドレス情報を使用してテーブルＢ内の検索を実行して、現在のタイムスライス内でストレージノードに送信された検証要求の数が上限Ｎに達したかどうかを確認する必要がある。それがＮに達していない場合、検証要求が送信され、テーブルＢ内のストレージノードに対応する送信された要求の数が１つ増加し、そうでない場合、検証タスクは、しばらく待ち、次いで、実際に要求を送信する前に、トラフィック制御条件が満たされるまでテーブルＢ内で検索を再度実行する必要がある。
【００６４】
（３）バックオフ再試行
整合性がないチェックコードを有するスライスが見つかった場合、ユーザがスライスに対応する間隔を変更している可能性が高く、データは動的に変化している。この場合、この好ましい解決策は、再試行を実行する。それにもかかわらず、再試行要求が多すぎて、通常の読み取り／書き込み間隔に影響を与えることを回避し、スライスを継続的に監視するためのより長い時間枠を有するために、この好ましい解決策は、バックオフ様式で再試行を実行し、再試行の最大数をＺ、再試行間隔の初期値をＴ０、上限をＴｍ、および再帰関数をＦ（ｘ）として設定し、ｎ番目の再試行の間隔をＴｎとして設定し、Ｔｎ＝Ｆ（Ｔｎ−１）、およびＴｎ＞＝Ｔｎ−１とする。
【００６５】
再試行プロセス中、最初の再試行間隔をＴ１＝Ｔ０とし、その後、各再試行間隔Ｔｎについて、再帰関数Ｆ（ｘ）に従って、先行再試行間隔Ｔｎ−１（先行再試行の時間間隔に相当）から暫定値Ｔｘが計算され、ＴｘとＴｍのうちの小さい方の値が、再試行後にスライスが整合性検証に合格したことがわかるまで、または再試行回数がＺに達するまで、この現在の再試行の実際の間隔（この現在の再試行の時間間隔に相当）として使用され、その後、再試行が終了する。
【００６６】
前述のＭ、Ｎ、およびＺはすべてゼロよりも大きい整数であるが、それらはそのように制限されないことに留意されたい。
【００６７】
前述の方法の実行本体は、上記の図１に示される端末であっても、検証プログラムなどのプログラムであってもよいことに留意されたい。検証プログラムは、端末または端末とは別のサードパーティデバイスに位置し得るが、それによって制限されない。
【００６８】
前述の方法の実施形態では、説明を簡単にするために、それらはすべて一連の動作の組み合わせとして表されていることに留意されたい。しかしながら、当業者は、一部のステップが本発明に従って別の順番でまたは同時に実行され得るので、本発明は、記載された一連の動作によって制限されないことをわかっているはずである。次に、当業者は、本明細書に記載された実施形態がすべて好ましい実施形態であり、関与する動作およびモジュールが本発明によって必ずしも必要とされないこともわかっているはずである。
【００６９】
当業者であれば、上記の実装形態の様式の説明から、上記の実施形態に従った方法が、ソフトウェアおよび必要な一般的なハードウェアプラットフォームによって、また明らかにハードウェアによって実施することができることを明確に理解することができる。しかしながら、多くの場合、前者がより良好な実施様式である。そのような理解に基づいて、本質的に本発明の技術的解決策、または現在の技術に寄与するその部分は、ソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品は、端末デバイス（携帯電話、コンピュータ、サーバ、ネットワークデバイスなどであり得る）が本発明の各実施形態の方法を実行できるようにするためのいくつかの命令を含む記憶媒体（ＲＯＭ／ＲＡＭ、磁気ディスク、または光ディスクなど）に記憶される。
【００７０】
実施形態２
本発明の一実施形態によれば、前述のデータ検証方法を実施するための装置がさらに提供され、これは図４に示されている。図４は、本発明の一実施形態に従って提供されるデータ検証装置の構造ブロック図を示し、装置は、
分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するように構成された決定モジュール４２であって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定モジュール４２を含む。
【００７１】
前述の負荷分散戦略を使用して、分散ストレージシステム内のデータブロックを記憶するストレージノードに検証タスクを分散させることができることに留意されたい。例えば、特定のストレージノードに多数の検証タスクがある（検証タスクの数が閾値に達した）場合、または検証タスクが複雑である（検証タスクの複雑さが閾値を超えている）場合、ストレージノードを過負荷と見なすことができる。データブロックを検証する必要があるとき、ストレージノードに対応すべきであることが判明した場合、この時点ではデータブロックは検証されていない。しかしながら、データブロックに対応するストレージノードでの検証タスクがほんのわずかであるとき、または検証タスクが単純であるとき、データブロックを検証することができる。このようにして、一部のストレージノードに過度の負荷がかからないように、分散ストレージシステムにおけるストレージノードでの検証タスクを分散させることができる。
【００７２】
前述の分散ストレージシステムにおける負荷分散戦略を満たすストレージノードは、分散ストレージシステムにおける複数のストレージノードの中で、そのように制限されないが、より少ない（検証タスクの数が閾値未満である）、またはより単純な（検証タスクの複雑さが閾値未満である）検証タスクを有するストレージノードと見なすことができることに留意されたい。
【００７３】
データセキュリティのために、データブロックを複製し、複数のレプリカを作成することができる。各レプリカは、異なるストレージノードにそれぞれ記憶され、すなわち、各レプリカがストレージノードに対応する。したがって、本出願の任意選択的な実施形態では、前述の決定モジュール４２は、複数のデータブロックから第１のデータブロックを検証対象のデータブロックとして選択するためにさらに使用され、第１のデータブロックは、レプリカが位置するストレージノードのうち、第１のストレージノードの数が所定の数に達するデータブロックであり、第１のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである。すなわち、決定された検証対象のデータブロックのレプリカが位置しているストレージノードのうち、検証タスクが少ないストレージノードの数が所定の数に達する。
【００７４】
必要に応じて、前述の所定の数をあらかじめ設定しておいてもよいことに留意されたい。本発明の任意選択的な実施形態では、前述の所定の数は、データブロックのすべてのレプリカの数であり得る。すなわち、前述の検証対象のデータブロックのすべてのレプリカが位置するストレージノードでは、検証タスクが少ないと見なすことができる。
【００７５】
本出願の任意選択的な実施形態では、前述の決定モジュール４２は、複数のデータブロックから、第１のマッピングテーブルに従って、検証対象のデータブロックとして第１のデータブロックを選択することができ、第１のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する。
【００７６】
検証モジュール４４は、前述の決定モジュール４２に接続され、検証対象のデータブロックを検証するように構成される。
【００７７】
本出願の前述の実施形態２に開示された解決策では、決定モジュール４２が、分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定した後、検証モジュール４４が、検証対象のデータブロックを検証する。決定された検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードである。この解決策は、負荷分散戦略に基づいて、検証対象のデータブロックの決定を達成することができる。
【００７８】
検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであることに容易に気付き、すなわち、決定された検証対象のデータブロックが位置するストレージノードが分散ストレージシステムにおける負荷分散戦略を満たし、これは、前述の決定された検証対象のデータブロックが実際に負荷分散戦略に基づいて決定されていることも意味する。したがって、本出願の実施形態で提供される前述の解決策を通じて、検証対象のデータブロックを検証するプロセス中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過度の負荷を引き起こすという問題を回避することができ、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的を達成し、それによって、読み取り／書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【００７９】
送信トラフィックを低減するために、本発明の任意選択的な実施形態では、検証モジュール４４は、データブロックスライスを取得するために、検証対象のデータブロックに対して２次スライスを実行するように構成された処理ユニットと、前述の処理ユニットに接続され、データブロックスライスを検証するように構成された検証ユニットとを含む。
【００８０】
ストレージノードにおけるデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にするために、本出願は任意選択的な実施形態を提供することに留意されたい。すなわち、前述の検証ユニットは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するためにさらに使用される。すなわち、データブロックスライスが位置するストレージノードでの検証要求の数を特定の範囲内に制御することによって、ストレージノードでのデータ検証によって引き起こされる追加のリソースオーバーヘッドを許容範囲内で制御することができることを確実にすることができ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り／書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【００８１】
検証要求の上限は、単位時間あたりストレージノードに送信することができる検証要求の最大数であり得るが、そのように制限されないことに留意されたい。検証要求の前述の上限は、ストレージノードの特性に基づいて事前設定されてもよく、または経験に応じて設定されてもよいが、そのように制限されない。
【００８２】
ストレージノードのディスクおよびネットワークリソースの占有をより良好に減少させるために、さらに、単位時間あたりのストレージノードでの検証要求の数を特定の範囲内に制御することができることを確実にすることができ、それによって、単位時間あたりのストレージノードでの検証要求の数を許容範囲内に制御することができることを確実にすることができる。本発明の任意選択的な実施形態では、前述のデータブロックスライスが位置するストレージノードでの検証要求の数は、所定の期間内にゼロにリセットされる。
【００８３】
前述の単位時間における「単位」は、１秒、３秒、５秒、５０ミリ秒など、任意の時間とすることができるが、そのように制限されないことに留意されたい。任意選択的に、前述の所定の期間は、単位時間と見なすことができるが、それによっては制限されない。
【００８４】
本発明の任意選択的な実施形態では、前述の検証ユニットは、第２のマッピングテーブルに基づいて、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定することができ、第２のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する。
【００８５】
ストレージノードのアドレスは、第２のマッピングテーブル内の「キー」値として使用することができ、ストレージノードにアクセスする検証要求の数は、第２のマッピングテーブル内の「キー」値に対応する「値」値として使用することができるが、それによって制限されないことに留意されたい。
【００８６】
前述のデータブロックスライスの検証後、チェックコードに整合性がない状況が発生する場合があることに留意されたい。この時点で、ユーザがデータブロックスライスに対応する間隔を変更している可能性が高く、データは動的に変化している。したがって、本出願の前述の実施形態では、前述のデータブロックスライスの検証後、前述の装置は、前述の検証ユニットに接続された再試行モジュールをさらに含み、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するように構成され得、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである。
【００８７】
本出願の任意選択的な実施形態では、検証再試行のプロセス中、現在の再試行の時間間隔は、現在の再試行の直前の先行再試行の時間間隔によって決定され、現在の再試行の時間間隔は、先行再試行の時間間隔よりも大きい。
【００８８】
前述のバックオフ再試行様式でのデータブロックスライスにおける検証再試行によって、本出願は、再試行要求が多すぎて、前述のデータブロックスライスに対応する通常の読み取り／書き込み間隔に影響を与えることを回避し、前述のデータブロックスライスを連続的に監視する時間も増加し、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的をさらに達成し、それによって、読み取り／書き込み性能の向上の技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術の技術的な問題をより良好に解決する。
【００８９】
現在の再試行の時間間隔が、現在の再試行の直前の先行再試行の時間間隔によって決定されるステップは、再帰関数処理を通じて先行再試行の時間間隔から所定の値が取得され、所定の値と再試行の間隔の上限値のうちの小さい方がこの再試行の時間間隔である、ように具体化することができることに留意されたい。
【００９０】
ここで、前述の決定モジュール４２および検証モジュール４４は、実施形態１のステップＳ２０２〜Ｓ２０４に対応することに留意されたい。２つのモジュールおよび対応するステップによって達成される例および適用シナリオは同じであるが、前述の実施形態１によって開示される内容に制限されない。前述のモジュールは、装置の一部として実施形態１で提供されるコンピュータ端末１０で実行することができる。
【００９１】
実施形態３
本発明の一実施形態は、コンピュータ端末を提供し、コンピュータ端末は、コンピュータ端末グループ内の任意のコンピュータ端末デバイスであり得る。任意選択的に、この実施形態では、前述のコンピュータ端末は、モバイル端末などの端末デバイスで置き換えられてもよい。
【００９２】
任意選択的に、この実施形態では、前述のコンピュータ端末は、コンピュータネットワーク内のより多くのネットワークデバイスのうちの少なくとも１つに位置し得る。
【００９３】
この実施形態では、前述のコンピュータ端末は、アプリケーションプログラムのデータ検証方法において、以下のステップ：分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードである、決定するステップと、検証対象のデータブロックを検証するステップと、のプログラムコードを実行することができる。
【００９４】
任意選択的に、図５は、本発明の一実施形態によるコンピュータ端末の構造ブロック図を示す。図５に示されるように、コンピュータ端末５は、１つ以上（図には１つのみが示されている）のプロセッサ５２、メモリ５４、および送信装置５６を含み得る。
【００９５】
ここで、メモリ５４は、本発明の実施形態におけるデータ検証の方法および装置に対応するプログラム命令／モジュールなどのソフトウェアプログラムおよびモジュールを記憶するために使用することができる。プロセッサ５２は、メモリ５４に記憶されたソフトウェアプログラムおよびモジュールを実行して、様々な機能アプリケーションおよびデータ処理を実行し、すなわち、アプリケーションプログラムの前述のデータ検証方法を達成する。メモリ５４は、高速ランダムアクセスメモリを含んでもよく、また、１つ以上の磁気記憶装置、フラッシュメモリなどの不揮発性メモリ、または他の不揮発性ソリッドステートメモリも含んでもよい。いくつかの例では、メモリ５４は、プロセッサに対してリモートに配設されたメモリをさらに含んでいてもよい。これらのリモートメモリは、ネットワークを介してコンピュータ端末５に接続され得る。前述のネットワークの例は、インターネット、企業イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびこれらの組み合わせを含むが、これらに制限されない。
【００９６】
プロセッサ５２は、送信装置を介して、メモリに記憶された情報およびアプリケーションプログラムを呼び出して、以下のステップ実行することができる：分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定するステップ、および検証対象のデータブロックを検証するステップ。
【００９７】
任意選択的に、前述のプロセッサは、複数のデータブロックから第１のデータブロックを検証対象のデータブロックとして選択するステップであって、第１のデータブロックは、レプリカが位置するストレージノードのうちの第１のストレージノードの数が所定の数に達するデータブロックであり、第１のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択するステップのプログラムコードを実行することもできる。
【００９８】
任意選択的に、前述のプロセッサは、複数のデータブロックから、第１のマッピングテーブルに従って、検証対象のデータブロックとして第１のデータブロックを選択するステップであって、第１のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、選択するステップのプログラムコードを実行することもできる。
【００９９】
任意選択的に、前述のプロセッサは、データブロックスライスを取得するために、検証対象のデータブロックに対して２次スライスを実行するステップと、データブロックスライスを検証するステップと、のプログラムコードを実行することもできる。
【０１００】
任意選択的に、前述のプロセッサは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するステップのプログラムコードを実行することもできる。
【０１０１】
任意選択的に、前述のプロセッサは、第２のマッピングテーブルに従って、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定するステップであって、第２のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、判定するステップのプログラムコードを実行することもできる。
【０１０２】
任意選択的に、前述のプロセッサは、データブロックスライスの検証後、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するステップであって、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである、実行するステップのプログラムコードを実行することもできる。
【０１０３】
本出願の前述の実施形態１に開示された解決策において、分散ストレージシステムにおける所定のファイルに含まれる複数のデータブロックの中から検証対象のデータブロックを決定した後、検証対象のデータブロックが検証される。決定された検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであり、この解決策は、負荷分散戦略に基づいて、検証対象のデータブロックの決定を達成することができる。
【０１０４】
検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードであることに容易に気付き、すなわち、決定された検証対象のデータブロックが位置するストレージノードが分散ストレージシステムにおける負荷分散戦略を満たし、これは、前述の決定された検証対象のデータブロックが実際に負荷分散戦略に基づいて決定されていることも意味する。したがって、本出願の実施形態で提供される前述の解決策を通じて、検証対象のデータブロックを検証するプロセス中に、多数の検証要求がいくつかのストレージノードに集中し、一部のストレージノードに過度の負荷を引き起こすという問題を回避することができ、異なる検証タスク間の競合を効果的に低減し、分散ストレージシステムにおけるクラスタの全体的な検証速度を大幅に向上させ、ストレージノードのディスクおよびネットワークリソースの占有を減少させ、かつデータ検証プロセス中のユーザのフロントエンドでの読み取り／書き込み操作への影響を低減するという目的を達成し、それによって、読み取り／書き込み性能の向上という技術的効果を達成し、データ検証プロセス中にユーザのフロントエンドの読み取り／書き込み性能が影響を受ける関連技術における技術的問題を解決する。
【０１０５】
当業者であれば、図５に示される構造は例示のためにすぎず、コンピュータ端末は、スマートフォン（アンドロイド（登録商標）電話、ｉＯＳ電話など）、タブレットコンピュータ、ハンドヘルドコンピュータ、およびモバイルインターネットデバイス（ＭＩＤ）、ＰＡＤ、および他の端末機器でもあり得ることを理解することができる。上記の電子デバイスの構造は、図５によって制限されない。例えば、コンピュータ端末５は、図５に示されるものよりも多いかもしくは少ない構成要素（ネットワークインターフェース、ディスプレイデバイスなど）をさらに含んでいてもよく、または図５に示されるものとは異なる構成を有していてもよい。
【０１０６】
当業者であれば、前述の実施形態の様々な方法におけるステップのすべてまたは一部が、プログラムを介して端末デバイスの関連ハードウェアに命令することによって完了され得ることを理解することができる。プログラムは、コンピュータ可読記憶媒体に記憶することができ、これは、フラッシュディスク、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク、または光ディスクなどを含み得る。
【０１０７】
実施形態４
本発明の実施形態は、記憶媒体をさらに提供する。任意選択的に、この実施形態では、前述の実施形態１で提供されるデータ検証方法によって実行されるプログラムコードを記憶するために、前述の記憶媒体が使用されてもよい。
【０１０８】
任意選択的に、この実施形態では、前述の記憶媒体は、コンピュータネットワーク内のコンピュータ端末グループの任意のコンピュータ端末、またはモバイル端末グループの任意のモバイル端末に位置し得る。
【０１０９】
任意選択的に、この実施形態では、記憶媒体は、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定するステップと、検証対象のデータブロックを検証するステップと、を実行するためのプログラムコードを記憶するように構成される。
【０１１０】
任意選択的に、前述の記憶媒体は、複数のデータブロックから第１のデータブロックを検証対象のデータブロックとして選択するステップであって、第１のデータブロックは、レプリカが位置するストレージノードのうちの第１のストレージノードの数が所定の数に達するデータブロックであり、第１のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【０１１１】
任意選択的に、前述の記憶媒体は、複数のデータブロックから、第１のマッピングテーブルに従って、検証対象のデータブロックとして第１のデータブロックを選択するステップであって、第１のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、選択するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【０１１２】
任意選択的に、前述の記憶媒体は、データブロックスライスを取得するために、検証対象のデータブロックに対して２次スライスを実行するステップと、データブロックスライスを検証するステップと、を実行するためのプログラムコードを記憶するようにさらに構成される。
【０１１３】
任意選択的に、前述の記憶媒体は、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【０１１４】
任意選択的に、前述の記憶媒体は、第２のマッピングテーブルに従って、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを決定するステップであって、第２のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、決定するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【０１１５】
任意選択的に、前述の記憶媒体は、データブロックスライスの検証後、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するステップであって、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである、実行するステップを実行するためのプログラムコードを記憶するようにさらに構成される。
【０１１６】
実施形態５
この実施形態は、プロセッサを提供し、プロセッサは、実行時に、前述の実施形態１で提供されるデータ検証方法によって実行されるプログラムコードを実行するプログラムを実行するために使用される。
【０１１７】
任意選択的に、この実施形態では、前述のプロセッサは、コンピュータネットワーク内のコンピュータ端末グループの任意のコンピュータ端末、またはモバイル端末グループの任意のモバイル端末に位置し得る。
【０１１８】
任意選択的に、この実施形態では、プロセッサは、分散ストレージシステムにおける所定のファイルに対応する複数のデータブロックの中から検証対象のデータブロックを決定するステップであって、検証対象のデータブロックが位置するストレージノードは、分散ストレージシステムにおける負荷分散戦略を満たすストレージノードを含む、決定するステップと、検証対象のデータブロックを検証するステップと、のプログラムコードを実行するように構成される。
【０１１９】
任意選択的に、この実施形態では、プロセッサは、複数のデータブロックから第１のデータブロックを検証対象のデータブロックとして選択するステップであって、第１のデータブロックは、レプリカが位置するストレージノードのうちの第１のストレージノードの数が所定の数に達するデータブロックであり、第１のストレージノードは、検証タスクの数が検証タスクの上限に達していないストレージノードである、選択するステップのプログラムコードを実行するように構成される。
【０１２０】
任意選択的に、この実施形態では、プロセッサは、複数のデータブロックから、第１のマッピングテーブルに従って、検証対象のデータブロックとして第１のデータブロックを選択するステップであって、第１のマッピングテーブルは、ストレージノードのアドレスとストレージノードにアクセスする同時検証タスクの数との間の対応関係を記憶する、選択するステップのプログラムコードを実行するように構成される。
【０１２１】
任意選択的に、この実施形態では、プロセッサは、データブロックスライスを取得するために、検証対象のデータブロックに対して２次スライスを実行するステップと、データブロックスライスを検証するステップと、のプログラムコードを実行するように構成される。
【０１２２】
任意選択的に、この実施形態では、プロセッサは、データブロックスライスが位置するストレージノードにおける検証要求の数が検証要求の上限に達していないかどうかを判定し、判定結果が、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないということである場合、データブロックスライスを検証するステップのプログラムコードを実行するように構成される。
【０１２３】
任意選択的に、この実施形態では、プロセッサは、第２のマッピングテーブルに従って、データブロックスライスが位置するストレージノードでの検証要求の数が検証要求の上限に達していないかどうかを判定するステップであって、第２のマッピングテーブルは、ストレージノードのアドレスと、ストレージノードにアクセスする検証要求の数との間の対応関係を記憶する、判定するステップのプログラムコードを実行するように構成される。
【０１２４】
任意選択的に、この実施形態では、プロセッサは、データブロックスライスの検証後、バックオフ再試行様式でデータブロックスライスに対して検証再試行を実行するステップであって、バックオフ再試行様式は、データブロックスライスに対して遅延再試行を実行することである、実行するステップのプログラムコードを実行するように構成される。
【０１２５】
簡潔な説明のために、前述の方法の実施形態はすべて一連の動作の組み合わせとして表されていることに留意されたい。しかしながら、当業者は、一部のステップが本出願に従って代替の順番でまたは並列に実行され得るので、本出願は、記載された一連の動作によって制限されないことをわかっているはずである。次に、当業者は、本明細書に記載された実施形態がすべて好ましい実施形態であり、関与する動作およびモジュールが本出願によって必ずしも必要とされないこともわかっているはずである。
【０１２６】
本発明の実施形態の通し番号は、単に説明のためのものであり、実施形態の品質の順番を表すものではない。
【０１２７】
本発明の前述の実施形態では、各実施形態の説明は、それ自体の重要性を有する。一実施形態に詳細に説明されていない任意の部分については、他の実施形態の関連する説明を参照することができる。
【０１２８】
本出願に提供されるいくつかの実施形態では、開示された技術的内容は、他の様式で実施され得ることを理解されたい。ここで、上記で説明した装置の実施形態は、単なる例示である。例えば、ユニットの分割は、単に論理的な機能の分割にすぎない。実際の実装では、他の分割様式が存在し得る。例えば、複数のユニットもしくは構成要素が、結合されてもよく、または別のシステムに統合されてもよく、または一部の特徴が、無視されるか、もしくは実装されなくてもよい。加えて、表示もしくは記載された相互結合、直接結合、または通信接続は、なんらかのインターフェースを通じて達成され得、ユニットもしくはモジュールの間接結合もしくは通信接続は、電気的な形態または他の形態であってもよい。
【０１２９】
個別の構成要素として説明されているユニットは、物理的に分離されていてもされていなくてもよく、ユニットとして表示される構成要素は、物理的なユニットであってもそうでなくてもよい。すなわち、それらは１つの場所に位置していてもよく、または複数のネットワークユニットに分散されてもよい。ユニットのいくつかまたはすべては、実施形態の解決策の目的を達成するための実際の必要性に従って選択されてもよい。
【０１３０】
さらに、本発明の様々な実施形態の機能ユニットが、１つの処理ユニットに統合されてもよく、または各ユニットが、物理的に単独に存在してもよく、または２つ以上のユニットが１つのユニットに統合されてもよい。前述の統合されたユニットは、ハードウェアまたはソフトウェア機能ユニットの形態で実装され得る。
【０１３１】
統合されたユニットがソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用される場合、それらは、コンピュータ可読記憶媒体に記憶され得る。そのような理解に基づいて、本質的に本発明の技術的解決策、または現在の技術に寄与する部分、または全体的もしくは部分的な技術的解決策は、ソフトウェア製品の形態で具体化することができ、コンピュータソフトウェア製品は、コンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワークデバイスなどであり得る）が本発明の各実施形態に記載されている方法のステップの全部または一部を実行できるようにするためのいくつかの命令を含む記憶媒体に記憶される。前述の記憶媒体は、ＵＳＢフラッシュディスク、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、モバイルハードディスク、磁気ディスク、光ディスク、またはプログラムコードを記憶し得る他の媒体を含む。
【０１３２】
前述の実施形態は、単に本発明の好ましい実施形態である。当業者にとって、本発明の原理から逸脱せずに、いくつかの改善および修正がなされ得ることに留意されたい。これらの改善および修正もまた、本発明の保護範囲内に収まると見なされるべきである。
【符号の説明】
【０１３３】
１０  コンピュータ端末
１０２Ａ  プロセッサ
１０２Ｂ  プロセッサ
１０２Ｎ  プロセッサ
１０２  プロセッサ
１０４  メモリ
４２  決定モジュール
４４  検証モジュール
５  コンピュータ端末
５２  プロセッサ
５４  メモリ
５６  送信装置
【図１】
2021529392.tif 000003
【図２】
2021529392.tif 000004
【図３】
2021529392.tif 000005
【図４】
2021529392.tif 000006
【図５】
2021529392.tif 000007
【国際調査報告】
2021529392.tif 000008
2021529392.tif 000009
2021529392.tif 000010
2021529392.tif 000011