(57)【要約】  分散型ストレージシステムにアクセスするための方法、関係する装置及び関係するシステムが開示される。データアクセス方法は分散型ストレージシステムに適用され、分散型ストレージシステムはm個のストレージノードを含み、m個のストレージノードは第１のストレージノードを含み、各ストレージノードは少なくとも１つのメモリを含む。当該方法は、第１のストレージノードにより、端末から第１のデータ読み取り要求を受信するステップと、第１のストレージノードが、第１の位置情報に基づいて、第１のデータが位置するメモリが第１のメモリであると決定し、第１のメモリが第１のストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のストレージノードにより、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信するステップとを含む。データ読み取り量が低減され、それにより、メモリ負荷を低減するのに役立ち、さらに、システム性能を改善するのに役立つ。
2019532440.tif 000002
【特許請求の範囲】
【請求項１】
データアクセス方法であって、当該方法は分散型ストレージシステムに適用され、前記分散型ストレージシステムはm個のストレージノードを含み、前記m個のストレージノードは第１のストレージノードを含み、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、当該方法は、
前記第１のストレージノードにより、端末から第１のデータ読み取り要求を受信するステップであり、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用される、ステップと、
前記第１のストレージノードが、前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定し、前記第１のメモリが前記第１のストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のストレージノードにより、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を含む方法。
【請求項２】
前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記第１のストレージノードにより、前記第１のデータ読み取り要求を前記第２のストレージノードに転送するステップと、
前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第２のストレージノードにより、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を更に含む、請求項１に記載の方法。
【請求項３】
前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にある場合、或いは前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記第１のストレージノードにより、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットの識別子を前記第１のデータ読み取り要求に追加し、前記状態情報セットの前記識別子が追加された前記第１のデータ読み取り要求を前記第２のストレージノードに送信するステップと、
前記第２のストレージノードが前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を更に含む、請求項１に記載の方法。
【請求項４】
前記第１のメモリが信頼されていないアクセス状態にあると決定され、前記第１のデータが属するストライプのストリップが位置するN個のメモリ内のx個のメモリが前記第１のストレージノードに属し、前記N個のメモリ内のN-x個のメモリが前記第１のストレージノードとは異なるy個のストレージノードに属する場合、前記第１のストレージノードにより、前記ストライプのストライプ識別子と、前記状態情報セットの識別子とを搬送するデータ読み取り要求を前記y個のストレージノードに送信するステップと、
前記第１のストレージノードから前記データ読み取り要求を受信した後に、前記y個のストレージノードのそれぞれにより、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストレージノードに含まれる対応するメモリから前記ストライプの対応するストリップを読み取り、前記ストライプの前記読み取られた対応するストリップを前記第１のストレージノードに送信するステップと、
前記第１のストレージノードにより、前記y個のストレージノード及び前記第１のストレージノードから収集された前記ストライプのストリップに基づいて、前記第１のデータを取得するための検査演算を実行し、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記取得された第１のデータを搬送する、ステップと
を更に含む、請求項１に記載の方法。
【請求項５】
前記m個のストレージノードのうち１つは管理ノードであり、
当該方法は、
前記第１のメモリの状態が第１の状態から第２の状態に変化したとき、前記第１のストレージノードにより、メモリ状態変化報告を前記管理ノードに送信するステップであり、前記メモリ状態変化報告は、前記第１のメモリが前記第２の状態にあることを示し、前記第１の状態は前記第２の状態とは異なり、前記第１の状態及び前記第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含む、ステップと、
前記第１のストレージノードから前記メモリ状態変化報告を受信した後に、前記管理ノードにより、前記管理ノードによりキャッシュされた状態情報セットに記録された前記第１のメモリの状態を前記第２の状態に更新し、前記管理ノードによりキャッシュされた前記状態情報セットのバージョン番号を更新し、前記管理ノードにより、更新された状態情報セットを前記m個のストレージノード内の前記管理ノード以外のストレージノードに送信するステップと、
前記第１のストレージノードにより、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットを更新するために、前記管理ノードからの前記状態情報セットを使用するステップと
を更に含む、請求項１乃至４のうちいずれか１項に記載の方法。
【請求項６】
前記第１のストレージノードにより、前記端末から第１のデータ書き込み要求を受信するステップであり、前記第１のデータ書き込み要求は第２のデータ及び第２の位置情報を搬送し、前記第２の位置情報は、前記第２のデータが属するデータボディ内の前記第２のデータの位置を記述するために使用される、ステップと、
前記第１のストレージノードにより、前記第２の位置情報に基づいて、前記第２のデータを書き込むことに関するW個のメモリを決定し、前記第２のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するステップであり、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である、ステップと、
前記第１のストレージノードによりキャッシュされた前記状態情報セットが、前記W個のメモリ内のW1個のメモリが非オフライン状態にあることを現在記録しているとき、前記ストライプのストリップ及び前記状態情報セットの前記識別子を搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するステップと、
前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記y2個のストレージノードのそれぞれにより、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むか、或いは前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子とは異なると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むことを拒否するステップと
を更に含む、請求項１乃至５のうちいずれか１項に記載の方法。
【請求項７】
前記第１のストレージノードにより、前記端末から第２のデータ書き込み要求を受信するステップであり、前記第２のデータ書き込み要求は第３のデータ及び第３の位置情報を搬送し、前記第３の位置情報は、前記第３のデータが属するデータボディ内の前記第３のデータの位置を記述するために使用される、ステップと、
前記第３の位置情報に基づいて、前記第３のデータを書き込むことに関するW個のメモリを決定した後に、前記第１のストレージノードにより、前記第３のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するステップであり、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である、ステップと、
前記第１のストレージノードによりキャッシュされた前記状態情報セットが、前記W個のメモリ内のW1個のメモリが非オフライン状態にあることを現在記録しており、前記第１のストレージノードと、状態情報セットをリリースするように構成された前記管理ノードとが接続状態にある場合、前記ストライプのストリップを搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するステップと、
前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記y2個のストレージノードのそれぞれにより、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むステップと
を更に含む、請求項１乃至５のうちいずれか１項に記載の方法。
【請求項８】
W1はW未満であり、前記第１のストレージノードによりキャッシュされた前記状態情報セットは、前記W個のメモリ内のW2個のメモリがオフライン状態にあることを現在記録しており、
当該方法は、
前記第１のストレージノードにより、第１の再構築ログを生成するステップであり、前記第１の再構築ログは、前記W2個のメモリ内の第２のメモリのメモリ識別子を記録し、前記第１の再構築ログは、前記W個のストリップ内の前記第２のメモリに対応する第１のストリップのストリップ識別子を更に記録し、前記第１の再構築ログは、前記ストライプの前記ストライプ識別子を更に記録し、前記第２のメモリは前記W2個のメモリ内のいずれかのメモリである、ステップと、
前記W2個のメモリ内の前記第２のメモリが再びオンラインになり、前記第２のメモリが属する前記第２のストレージノードが前記第２のメモリのオフライン期間中に生成された前記第１の再構築ログを収集した後に、前記第２のストレージノードにより、前記第１の再構築ログに記録された、前記第２のメモリに書き込まれる必要がある前記第１のストリップの前記ストリップ識別子を取得し、前記ストライプに含まれる前記第１のストリップ以外のW-T個のストリップが位置するW-T個のメモリを決定し、前記W-T個のメモリから前記W-T個のストリップを読み取り、前記第２のメモリに書き込まれる必要がある前記第１のストリップを再構築するために前記W-T個のストリップを使用することにより、検査演算を実行し、前記再構築された第１のストリップを前記第２のメモリに書き込むステップと
を更に含む、請求項６又は７に記載の方法。
【請求項９】
m個のストレージノードを含む分散型ストレージシステムであって、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、
前記m個のストレージノード内の第１のストレージノードは、
端末から第１のデータ読み取り要求を受信し、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用され、前記第１の位置情報に基づいて、前記第１のデータが位置する第１のメモリを決定し、
前記第１のメモリが前記第１のストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を前記端末に送信し、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ように構成される、分散型ストレージシステム。
【請求項１０】
当該分散型ストレージシステムは、状態情報セットをリリースするように構成された管理ノードを更に含み、
前記第１のストレージノードは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記第１のストレージノードと、状態情報セットをリリースするように構成された前記管理ノードとが接続状態にある場合、前記第１のデータ読み取り要求を前記第２のストレージノードに転送するように更に構成され、
前記第２のストレージノードは、前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するように構成され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項９に記載の分散型ストレージシステム。
【請求項１１】
前記第１のストレージノードは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にある場合、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットの識別子を前記第１のデータ読み取り要求に追加し、前記状態情報セットの前記識別子が追加された前記第１のデータ読み取り要求を前記第２のストレージノードに送信するように更に構成され、
前記第２のストレージノードは、前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記第２のストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するように構成され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項９に記載の分散型ストレージシステム。
【請求項１２】
前記第１のストレージノードは、前記第１のメモリが信頼されていないアクセス状態にあると決定され、前記第１のデータが属するストライプのストリップが位置するN個のメモリ内のx個のメモリが前記第１のストレージノードに属し、前記N個のメモリ内のN-x個のメモリが前記第１のストレージノードとは異なるy個のストレージノードに属する場合、前記ストライプのストライプ識別子と、前記状態情報セットの識別子とを搬送するデータ読み取り要求を前記y個のストレージノードに送信するように更に構成され、
前記y個のストレージノードのそれぞれは、前記第１のストレージノードから前記データ読み取り要求を受信した後に、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストレージノードに含まれる対応するメモリから前記ストライプの対応するストリップを読み取り、前記ストライプの前記読み取られた対応するストリップを前記第１のストレージノードに送信するように構成され、
前記第１のストレージノードは、前記y個のストレージノード及び前記第１のストレージノードから収集された前記ストライプのストリップに基づいて、前記第１のデータを取得するための検査演算を実行し、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記端末に送信するように更に構成され、前記第１のデータ読み取り応答は前記取得された第１のデータを搬送する、請求項９に記載の分散型ストレージシステム。
【請求項１３】
前記m個のストレージノードのうち１つは管理ノードであり、
前記第１のストレージノードは、前記第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を前記管理ノードに送信するように更に構成され、前記メモリ状態変化報告は、前記第１のメモリが前記第２の状態にあることを示し、前記第１の状態は前記第２の状態とは異なり、前記第１の状態及び前記第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含み、
前記管理ノードは、前記第１のストレージノードから前記メモリ状態変化報告を受信した後に、前記管理ノードによりキャッシュされた状態情報セットに記録された前記第１のメモリの状態を前記第２の状態に更新し、前記管理ノードによりキャッシュされた前記状態情報セットのバージョン番号を更新するように構成され、前記管理ノードは、更新された状態情報セットを前記m個のストレージノード内の前記管理ノード以外のストレージノードに送信し、
前記第１のストレージノードは、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットを更新するために、前記管理ノードからの前記状態情報セットを使用するように更に構成される、請求項９乃至１２のうちいずれか１項に記載の分散型ストレージシステム。
【請求項１４】
前記第１のストレージノードは、前記端末から第１のデータ書き込み要求を受信するように更に構成され、前記第１のデータ書き込み要求は第２のデータ及び第２の位置情報を搬送し、前記第２の位置情報は、前記第２のデータが属するデータボディ内の前記第２のデータの位置を記述するために使用され、
前記第１のストレージノードは、前記第２の位置情報に基づいて、前記第２のデータを書き込むことに関するW個のメモリを決定し、前記第２のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満であり、
前記第１のストレージノードは、前記第１のストレージノードによりキャッシュされた前記状態情報セットが、前記W個のメモリ内のW1個のメモリが非オフライン状態にあることを現在記録しているとき、前記ストライプのストリップ及び前記状態情報セットの前記識別子を搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するように更に構成され、
前記y2個のストレージノードのそれぞれは、前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むか、或いは前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子とは異なると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むことを拒否するように構成される、請求項９乃至１２のうちいずれか１項に記載の分散型ストレージシステム。
【請求項１５】
前記第１のストレージノードは、前記端末から第２のデータ書き込み要求を受信するように更に構成され、前記第２のデータ書き込み要求は第３のデータ及び第３の位置情報を搬送し、前記第３の位置情報は、前記第３のデータが属するデータボディ内の前記第３のデータの位置を記述するために使用され、
前記第１のストレージノードは、前記第３の位置情報に基づいて、前記第３のデータに関するW個のメモリを決定した後に、前記第３のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満であり、
前記第１のストレージノードは、前記第１のストレージノードによりキャッシュされた前記状態情報セットに現在記録されている前記W個のメモリ内の状態を決定し、前記W個のメモリ内のW1個のメモリが非オフライン状態にあると決定され、前記第１のストレージノードと、状態情報セットをリリースするように構成された前記管理ノードとが接続状態にある場合、前記ストライプのストリップを搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するように更に構成され、
前記y2個のストレージノードのそれぞれは、前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むように構成される、請求項９乃至１２のうちいずれか１項に記載の分散型ストレージシステム。
【請求項１６】
W1はW未満であり、前記第１のストレージノードによりキャッシュされた前記状態情報セットは、前記W個のメモリ内のW2個のメモリがオフライン状態にあることを現在記録しており、
前記第１のストレージノードは、第１の再構築ログを生成するように更に構成され、前記第１の再構築ログは、前記W2個のメモリ内の第２のメモリのメモリ識別子を記録し、前記第１の再構築ログは、前記W個のストリップ内の前記第２のメモリに対応する第１のストリップのストリップ識別子を更に記録し、前記第１の再構築ログは、前記ストライプの前記ストライプ識別子を更に記録し、前記第２のメモリは前記W2個のメモリ内のいずれかのメモリであり、
前記W2個のメモリ内の前記第２のメモリが再びオンラインになり、前記第２のメモリが属する前記第２のストレージノードが前記第２のメモリのオフライン期間中に生成された前記第１の再構築ログを収集した後に、前記第２のストレージノードは、前記第１の再構築ログに記録された、前記第２のメモリに書き込まれる必要がある前記第１のストリップの前記ストリップ識別子を取得し、
前記ストライプに含まれる前記第１のストリップ以外のW-T個のストリップが位置するW-T個のメモリを決定し、前記W-T個のメモリから前記W-T個のストリップを読み取り、前記第２のメモリに書き込まれる必要がある前記第１のストリップを再構築するために前記W-T個のストリップを使用することにより、検査演算を実行し、前記再構築された第１のストリップを前記第２のメモリに書き込む、請求項１４又は１５に記載の分散型ストレージシステム。
【請求項１７】
ストレージノードであって、当該ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、当該ストレージノードは、
端末から第１のデータ読み取り要求を受信するように構成された通信ユニットであり、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用される、通信ユニットと、
前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定され、前記第１のメモリが前記ストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のメモリから前記第１のデータを読み取るように構成された処理制御ユニットと
を含み、
前記通信ユニットは、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を前記端末に送信するように更に構成され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ストレージノード。
【請求項１８】
前記通信ユニットは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記ストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記第１のデータ読み取り要求を前記第２のストレージノードに転送するように更に構成され、
前記第１のデータ読み取り要求は、前記第２のストレージノードに対して、前記ストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記ストレージノード又は前記端末に送信するようにトリガーするために使用され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項１７に記載のストレージノード。
【請求項１９】
前記通信ユニットは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にある場合、或いは前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットの識別子を前記第１のデータ読み取り要求に追加し、前記状態情報セットの前記識別子が追加された前記第１のデータ読み取り要求を前記第２のストレージノードに送信するように更に構成され、
前記第１のデータ読み取り要求は、前記第２のストレージノードに対して、前記ストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記第２のストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記ストレージノード又は前記端末に送信するようにトリガーするために使用され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項１７に記載のストレージノード。
【請求項２０】
前記m個のストレージノードのうち１つは管理ノードであり、
前記通信ユニットは、前記第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を前記管理ノードに送信するように更に構成され、前記メモリ状態変化報告は、前記第１のメモリが前記第２の状態にあることを示し、前記第１の状態は前記第２の状態とは異なり、前記第１の状態及び前記第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含み、前記メモリ状態変化報告は、前記管理ノードに対して、前記第１のストレージノードから前記メモリ状態変化報告を受信した後に、前記管理ノードによりキャッシュされた状態情報セットに記録された前記第１のメモリの状態を前記第２の状態に更新し、前記管理ノードによりキャッシュされた前記状態情報セットのバージョン番号を更新し、更新された状態情報セットを前記m個のストレージノード内の前記管理ノード以外のストレージノードに送信するようにトリガーするために使用され、
前記処理制御ユニットは、前記ストレージノードにより現在キャッシュされている前記状態情報セットを更新するために、前記管理ノードからの前記状態情報セットを使用するように構成される、請求項１７乃至１９のうちいずれか１項に記載のストレージノード。
【請求項２１】
第１のストレージノードに適用されるデータアクセス方法であって、前記第１のストレージノードはm個のストレージノードを含む分散型ストレージシステムに位置し、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、当該方法は、
前記第１のストレージノードにより、第１のデータ読み取り要求を受信するステップであり、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用される、ステップと、
前記第１のストレージノードが、前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定し、前記第１のメモリが前記第１のストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のストレージノードにより、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を含む方法。
【請求項２２】
ストレージノードであって、当該ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、
当該ストレージノードは、互いに結合されたプロセッサ及び通信インタフェースを含み、
前記プロセッサは、前記通信インタフェースを使用することにより、第１のデータ読み取り要求を受信し、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用され、前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定され、前記第１のメモリが前記第１のストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のメモリから前記第１のデータを読み取り、前記通信インタフェースを使用することにより、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を送信し、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ように構成される、ストレージノード。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願はコンピュータ技術の分野に関し、具体的には、分散型ストレージシステムにアクセスするための方法、関係する装置及び関係するシステムに関する。
【背景技術】
【０００２】
従来のネットワークストレージシステムは、全てのデータを記憶するために集中型ストレージサーバを使用する。このようなアーキテクチャでは、ストレージサーバは、システム性能のボトルネックと、信頼性及びセキュリティにおける弱点になり、大規模ストレージアプリケーションの要件を満たすことが困難である。分散型ストレージシステムでは、データは、分散化された方式で複数の別々のデバイス（すなわち、ストレージノード）に記憶される。分散型ストレージシステムは、スケーラブルなシステム構造を使用し、ストレージ負荷を共有するために複数のストレージノードを使用する。分散型ストレージシステムは、システム信頼性、可用性、アクセス効率及びスケーラビリティを改善するのに役立つ。
【０００３】
ストレージ容量が絶えず増加するにつれて、分散型ストレージシステムにおけるストレージノード及びハードディスクの数も増加する。ますます多くの分散型ストレージシステムは、データ信頼性を改善するために、異なるハードディスク上の記憶のためにデータを分散化するために、イレージャーコード（英文：erasure  code,  略称：EC）技術を使用する。システム信頼性を確保しつつ、EC技術はシステム性能を有効に更に改善できる。明らかに、EC技術に加えて、他の同様の冗長検査技術もまた、分散型ストレージシステムにおいて使用されてもよい。
【０００４】
ストライプ（stripe）（例えば、ECストライプ）は、複数のストリップ（英文：strip）を含み、具体的には、N個のデータストリップ及びM個のパリティストリップ（例えば、２つのデータstrip及び１つのパリティstrip）を含んでもよい。M個のパリティストリップは、N個のデータストリップに基づく計算を用いて取得される。データストリップの長さは、1Mbまででもよい。従来の技術では、読み取り操作において読み取られるべきターゲットデータがストライプの小部分のみを占有しているとしても、データ正確性検査が実行できるように、ターゲットデータが属するストライプ内の全てのデータストリップ及びパリティストリップが各読み取り操作において読み取られる必要があり、それにより、ターゲットデータの正確性を確保する。しかし、ストライプの長さは通常では長く、したがって、ランダム読み取りのようなシナリオでは、ハードディスクの負荷が増加し、システム性能が大きく低減される。
【発明の概要】
【０００５】
この出願の実施例は、データアクセス方法並びに関係する装置及びシステムを提供する。
【０００６】
第１の態様によれば、この出願の実施例はデータ読み取り方法を提供する。当該方法は、m個のストレージノードを含む分散型ストレージシステムに適用され、各ストレージノードは少なくとも１つのメモリ（例えば、メモリはハードディスク又は他の形式のメモリでもよい）を含み、mは1より大きい整数である。当該方法は以下のステップを含んでもよい。例えば、端末が分散型ストレージシステムから第１のデータを読み取ることを要求する必要があるとき、m個のストレージノード内の第１のストレージノードは、端末から第１のデータ読み取り要求を受信してもよく、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用される。第１のストレージノードが、第１の位置情報に基づいて、第１のデータが位置するメモリが第１のメモリであると決定し、第１のメモリが第１のストレージノードに属する場合、第１のストレージノードは、状態情報セット（第１のストレージノードによりキャッシュされた状態情報セット）に現在記録されている第１のメモリの状態（例えば、第１のメモリは信頼されたアクセス状態又は信頼されていないアクセス状態にあってもよい）を決定する。第１のメモリが信頼されたアクセス状態にあると決定されたとき、第１のストレージノードは、第１のメモリから第１のデータを読み取る。第１のストレージノードは、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送し、第１のデータは、第１のデータが属するストリップ内のデータの一部又は全部である。
【０００７】
この出願の実施例におけるデータボディは、例えば、ファイル、オブジェクト、ファイルセグメント、データベースレコード、データセグメント等でもよい。
【０００８】
この出願の実施例における状態情報セットは、ハードディスクの状態等を記録するために使用され、状態情報セットのフォーマットは、例えば、ファイル又は他のデータフォーマットでもよい。状態情報セットのフォーマットがファイルである場合、状態情報セットはまた、「状態ファイル」とも呼ばれてもよい。
【０００９】
前述の解決策では、メモリ状態を記録するために使用される状態情報セットが分散型ストレージシステムに導入され、したがって、状態情報セットが分散型ストレージシステムにおけるメモリのアクセス状態を記録及び管理するために使用されてもよいことが習得できる。状態情報セットにおいて信頼されたアクセス状態になっているとして記録されたメモリについて、要求されたデータは、メモリから直接読み取られて端末にフィードバックできる。信頼されたアクセスのこのような場合、関係するストライプの全てのストリップを読み取り、次に、正確性検査を実行する従来の方式における複雑なステップは必要なく、データ読み取り量が低減され、それにより、メモリ負荷を低減するのに役立ち、さらに、システム性能を改善するのに役立つ。
【００１０】
さらに、この出願のいくつかの可能な実現方式では、第１のストレージノードが状態情報セットに現在記録されている第１のメモリの状態を決定する前に、第１のストレージノードは、まず、状態情報セットがキャッシュされているか否かを決定してもよく、状態情報セットがキャッシュされている場合、第１のストレージノードは、キャッシュされた状態情報セットに現在記録されている第１のメモリの状態を決定してもよく、或いは状態情報セットがキャッシュされておらず、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第１のストレージノードは、まず、キャッシュするために管理ノードから状態情報セットを取得し、次に、キャッシュされた状態情報セットに現在記録されている第１のメモリの状態を決定する。
【００１１】
さらに、この出願のいくつかの可能な実現方式では、第１のストレージノードが状態情報セットに現在記録されている第１のメモリの状態を決定する前に、第１のストレージノードは、まず、状態情報セットがキャッシュされているか否かを決定してもよく、状態情報セットがキャッシュされている場合、第１のストレージノードは、キャッシュされた状態情報セットが取得されている持続時間が持続時間閾値を超えるか否かを決定してもよい（持続時間閾値は、例えば、2分、10分又は30分でもよく、一般的に、現在キャッシュされている状態情報セットが取得されている、より長い持続時間は、状態情報セットの無効のより高い可能性を示す）。キャッシュされた状態情報セットが取得されている持続時間が持続時間閾値を超え、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第１のストレージノードは、まず、管理ノードから状態情報セットを取得し、以前にキャッシュされた状態情報セットを更新するために、最新の取得された状態情報セットを使用し、次に、キャッシュされた状態情報セットに現在記録されている第１のメモリの状態を決定する。キャッシュされた状態情報セットが取得されている持続時間が持続時間閾値を超えないか、或いは第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にない場合、第１のストレージノードは、キャッシュされた状態情報セットに現在記録されている第１のメモリの状態を決定する。
【００１２】
さらに、この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含んでもよい。第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあると決定され（具体的には、例えば、第１のストレージノードは、状態情報セットに基づいて、第１のメモリが信頼されたアクセス状態にあると決定し、すなわち、第１のストレージノードによりキャッシュされた状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを記録する）、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合（第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にあるとき、第１のストレージノードによりキャッシュされた状態情報セットが、管理ノードによりリリースされた最新の状態情報セットであるという比較的高い可能性が存在し、したがって、第１のストレージノードにより現在キャッシュされている状態情報セットが現在有効であるという比較的高い可能性が存在する。したがって、第１のストレージノードが、キャッシュされた状態情報セットに基づいて、第１のメモリが信頼されたアクセス状態にあると決定する場合は、第１のメモリの実際の状況と一致するという非常に高い可能性が存在すると考えられてもよい）、第１のストレージノードは、第１のデータ読み取り要求を第２のストレージノードに転送する。第１のストレージノードから第１のデータ読み取り要求を受信した後に、第２のストレージノードは、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００１３】
この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含んでもよい。第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある（具体的には、例えば、第１のストレージノードにより現在キャッシュされている状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを記録する）場合、或いは第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあり、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合（第１のストレージノードと、管理ノードとが接続状態にあるとき、第１のストレージノードが管理ノードによりリリースされた最新の状態情報セットを取得するという非常に高い可能性が存在する）、第１のストレージノードは、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子を第１のデータ読み取り要求に追加し、状態情報セットの識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信してもよい。
【００１４】
第１のストレージノードから第１のデータ読み取り要求を受信した後に、第２のストレージノードは、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合（第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであるとき、これは、第１のストレージノード及び第２のストレージノードが同じ状態情報セットを現在キャッシュしていることを示し、この場合、第１のストレージノードにより現在キャッシュされている状態情報セットが現在有効であるという非常に高い可能性が存在する。この場合、第１のストレージノードと、管理ノードとが接続状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットが現在有効であるという可能性が更に増加する。したがって、第１のストレージノードが、第１のストレージノードにより現在キャッシュされている状態情報セットに基づいて、第１のメモリが信頼されたアクセス状態にあると決定する場合は、第１のメモリの実際の状況と一致するという非常に高い可能性が存在する）、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信してもよく、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００１５】
この出願の実施例では、状態情報セットの識別子は、例えば、状態情報セットのバージョン番号及び／又は状態情報セットのデータダイジェストを含む。或るバージョンの状態情報セットの識別子は、具体的には、このバージョンの状態情報セットを表すことができる如何なる情報でもよいことが理解され得る。状態情報セットのバージョン番号及び／又はデータダイジェストは、状態情報セットの識別子の単に可能な例である。
【００１６】
一般的に、管理ノードの役目は、特定のノード（例えば、分散型ストレージシステムにおける特定のストレージノード）により果たされる。しかし、いくつかの特別な場合（例えば、現在の管理ノードが故障になったか、或いは十分な処理能力を有さない）、管理ノードの役目を果たすストレージノードはまた、変化することを許容されてもよい。例えば、ストレージノードAは、或る期間内に管理ノードの役目を果たすが（この場合、管理ノードのノード識別子はまた、ストレージノードAのノード識別子である）、他の期間内では、ストレージノードAは、もはや管理ノードの役目を果たさず、その代わりに、ストレージノードBが管理ノードの役目を果たす（この場合、管理ノードのノード識別子は、ストレージノードBのノード識別子である）。すなわち、管理ノードの役目を果たすストレージノードはいくつかの特別な場合に変化し得るため、管理ノードのノード識別子（すなわち、管理ノードの役目を果たすストレージノードのノード識別子）は変化してもよい。分散型ストレージシステムにおける各ストレージノードは、最新の管理ノードとして現在考えられているストレージノードのノード識別子をキャッシュしてもよく、管理ノードの役目を果たすストレージノードが変化したと見出したとき、ストレージノードは、ストレージノードにより以前にキャッシュされた管理ノードのノード識別子を更新するためにストレージノードにより見出された最新の管理ノードのノード識別子を使用する。
【００１７】
この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含んでもよい。第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあり（具体的には、例えば、第１のストレージノードによりキャッシュされた状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを記録する）、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にあるとき、第１のストレージノードは、第１のストレージノードにより現在キャッシュされている、状態情報セットをリリースするように構成された管理ノードのノード識別子を第１のデータ読み取り要求に追加し、管理ノードのノード識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信する。
【００１８】
第２のストレージノードが第１のストレージノードから第１のデータ読み取り要求を受信した場合、或いは第２のストレージノードが第１のストレージノードから第１のデータ読み取り要求を受信し、第２のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第２のストレージノードは、第１のデータ読み取り要求で搬送された管理ノードのノード識別子を、第２のストレージノードにより現在キャッシュされている管理ノードのノード識別子と比較し、第１のデータ読み取り要求で搬送された管理ノードのノード識別子が、第２のストレージノードにより現在キャッシュされている管理ノードのノード識別子と同じであると比較により決定された場合（第１のストレージノード及び第２のストレージノードが管理ノードの同じノード識別子をキャッシュするとき、これは、第１のストレージノード及び第２のストレージノードが管理ノードとして同じストレージノードを考えていることを示し、第１のストレージノードと第２のストレージノードとの双方により管理ノードとして考えられているストレージノードが、分散型ストレージシステムにおける現在の最新の管理ノードであるという非常に高い可能性が存在する。この場合、第１のストレージノードと、管理ノードとが接続状態にある場合、第１のストレージノードによりキャッシュされた状態情報セットが現在有効であるという非常に高い可能性が存在する。したがって、第１のストレージノードが、第１のストレージノードによりキャッシュされた状態情報セットに基づいて、第１のメモリが信頼されたアクセス状態にあると決定する場合は、第１のメモリの実際の状況と一致するという非常に高い可能性が存在すると考えられてもよい）、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００１９】
この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含んでもよい。第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある（具体的には、例えば、第１のストレージノードによりキャッシュされた状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを記録する）場合、或いは第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあり（例えば、第１のストレージノードによりキャッシュされた状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを記録する）、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第１のストレージノードは、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子と、状態情報セットをリリースするように構成された管理ノードのノード識別子とを第１のデータ読み取り要求に追加し、状態情報セットの識別子及び管理ノードのノード識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信する。
【００２０】
第２のストレージノードが第１のストレージノードから第１のデータ読み取り要求を受信した場合、或いは第２のストレージノードが第１のストレージノードから第１のデータ読み取り要求を受信し、第２のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第２のストレージノードは、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された管理ノードのノード識別子を、第２のストレージノードにより現在キャッシュされている管理ノードのノード識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定され、第１のデータ読み取り要求で搬送された管理ノードのノード識別子が、第２のストレージノードにより現在キャッシュされている管理ノードのノード識別子と同じであると比較により決定された場合（第１のストレージノード及び第２のストレージノードが管理ノードの同じノード識別子をキャッシュするとき、これは、第１のストレージノード及び第２のストレージノードが管理ノードとして同じストレージノードを考えていることを示し、第１のストレージノードと第２のストレージノードとの双方により管理ノードとして考えられているストレージノードが、分散型ストレージシステムにおける現在の最新の管理ノードであるという非常に高い可能性が存在する。この場合、第１のストレージノード及び第２のストレージノードが同じ状態情報セットを現在キャッシュしている場合、第１のストレージノードにより現在キャッシュされている状態情報セットが現在有効であるという非常に高い可能性が存在する。さらに、第１のストレージノード及び／又は第１のストレージノードと、管理ノードとが接続状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットが現在有効であるというより高い可能性が存在する。したがって、第１のストレージノードが、第１のストレージノードにより現在キャッシュされている状態情報セットに基づいて、第１のメモリが信頼されたアクセス状態にあると決定する場合は、第１のメモリの実際の状況と一致するという非常に高い可能性が存在する）、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００２１】
この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含む。第１のストレージノードが、第１のストレージノードが信頼されていないアクセス状態にあると決定した場合、第１のストレージノードは、第１のデータが属するストライプを決定し、第１のストレージノードは、ストライプのストリップが位置するN個のメモリを決定する。
【００２２】
N個のメモリが全て第１のストレージノードに属する場合、第１のストレージノードは、N個のメモリからストライプのストリップを読み取り、第１のストレージノードは、ストライプの読み取られたストリップに基づいて、第１のデータを取得するための検査演算を実行し（具体的には、第１のストレージノードは、ストライプの読み取られたストリップに基づいて、第１のデータが属するストリップを取得するための検査演算を実行し、次に、第１のデータが属するストリップから第１のデータを取得する）、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信し、第１のデータ読み取り応答は取得された第１のデータを搬送する。
【００２３】
この出願のいくつかの可能な実現方式では、第１のデータが属するストライプのストリップが位置するN個のメモリ内のx個のメモリ（x個のメモリは第１のメモリを含む）が第１のストレージノードに属し、N個のメモリ内のN-x個のメモリが第１のメモリとは異なるy個のストレージノードに属するとき、当該方法は以下のステップを更に含んでもよい。第１のストレージノードが、第１のメモリが信頼されていないアクセス状態にあると決定し、N個のメモリ内の第１のメモリ以外のメモリが信頼されたアクセス状態にあると決定した場合（或いは第１のストレージノードが、第１のメモリが信頼されていないアクセス状態にあると決定し、N個のメモリ内の第１のストレージノード以外のメモリが信頼されたアクセス状態にあると決定し、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合）、第１のストレージノードは、ストライプのストライプ識別子と、第１のストレージノードによりキャッシュされた状態情報セットの識別子とを搬送するデータ読み取り要求をy個のストレージノードに送信する。対応して、第１のストレージノードからデータ読み取り要求を受信した後に、y個のストレージノードのそれぞれは、データ読み取り要求で搬送された状態情報セットの識別子を、ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、データ読み取り要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合（データ読み取り要求で搬送された状態情報セットの識別子が、データ読み取り要求を受信したストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであるとき、これは、第１のストレージノード及びデータ読み取り要求を受信したストレージノードが同じ状態情報セットを現在キャッシュしていることを示し、この場合、第１のストレージノードにより現在キャッシュされている状態情報セットが現在有効であるという非常に高い可能性が存在する。この場合、第１のストレージノードと、管理ノードとが接続状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットが現在有効であるという可能性が更に増加する。したがって、第１のストレージノードが、第１のストレージノードにより現在キャッシュされている状態情報セットに基づいて、第１のメモリが信頼されていないアクセス状態にあると決定する場合は、第１のメモリの実際の状況と一致するという非常に高い可能性が存在する）、ストレージノードに含まれる対応するメモリからストライプの対応するストリップを読み取り、ストライプの読み取られた対応するストリップを第１のストレージノードに送信してもよい。
【００２４】
対応して、第１のストレージノードは、y個のストレージノード及び第１のストレージノードから収集されたストライプのストリップ（これは第１のデータが属するストリップを含まない）に基づいて、第１のデータを取得するための検査演算を実行し、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信し、第１のデータ読み取り応答は取得された第１のデータを搬送する。
【００２５】
この出願のいくつかの可能な実現方式では、m個のストレージノードのうち１つは管理ノードである。当該方法は以下のステップを更に含んでもよい。第１のメモリの状態が第１の状態から第２の状態に変化したとき、第１のストレージノードは、メモリ状態変化報告を管理ノードに送信し、メモリ状態変化報告は、第１のメモリが第２の状態にあることを示し、第１の状態は第２の状態とは異なり、第１の状態及び第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含む。
【００２６】
対応して、第１のストレージノードからメモリ状態変化報告を受信した後に、管理ノードは、管理ノードによりキャッシュされた状態情報セットに記録された第１のメモリの状態を第２の状態に更新し、管理ノードによりキャッシュされた状態情報セットのバージョン番号を更新してもよく、管理ノードは、更新された状態情報セットをm個のストレージノード内の管理ノード以外のストレージノードに送信する。
【００２７】
対応して、第１のストレージノードは、第１のストレージノードにより現在キャッシュされている状態情報セットを更新するために、管理ノードからの状態情報セットを使用する。
【００２８】
この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含む。例えば、端末が第２のデータを分散型ストレージシステムに書き込むことを要求する必要があるとき、第１のストレージノードは、端末から第１のデータ書き込み要求を受信してもよく、第１のデータ書き込み要求は第２のデータ及び第２の位置情報を搬送し、第２の位置情報は、第２のデータが属するデータボディ内の第２のデータの位置を記述するために使用される。第１のストレージノードは、第２の位置情報に基づいて、第２のデータを書き込むことに関するW個のメモリを決定する。第１のストレージノードは、第２のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得する。T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【００２９】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットに現在記録されているW個のメモリの状態を決定し、W個のメモリ内のW1個のメモリが非オフライン状態にある（且つ、例えば、W個のメモリ内のW2個のメモリがオフライン状態にある）と決定されたとき、ストライプのストリップ及び状態情報セットの識別子を搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信する。
【００３０】
対応して、第１のストレージノードからデータ書き込み要求を受信した後に、y2個のストレージノードのそれぞれは、データ書き込み要求で搬送された状態情報セットの識別子を、ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、例えば、データ書き込み要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むか、或いはデータ書き込み要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子とは異なると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むことを拒否する。
【００３１】
他の例では、この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含んでもよい。例えば、端末が第３のデータを分散型ストレージシステムに書き込むことを要求する必要があるとき、第１のストレージノードは、端末から第２のデータ書き込み要求を受信し、第２のデータ書き込み要求は第３のデータ及び第３の位置情報を搬送し、第３の位置情報は、第３のデータが属するデータボディ内の第３のデータの位置を記述するために使用される。第１のストレージノードは、第３の位置情報に基づいて、第３のデータを書き込むことに関するW個のメモリを決定する。第１のストレージノードは、第３のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得する。T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【００３２】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットに現在記録されているW個のメモリの状態を決定し、W個のメモリ内のW1個のメモリが非オフライン状態にある（且つ、例えば、W個のメモリ内のW2個のメモリがオフライン状態にある）と決定され、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、ストライプのストリップを搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信する。対応して、第１のストレージノードからデータ書き込み要求を受信した後に、y2個のストレージノードのそれぞれは、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込んでもよい。
【００３３】
他の例では、この出願のいくつかの可能な実現方式では、当該方法は以下のステップを更に含んでもよい。第１のストレージノードは、端末から第３のデータ書き込み要求を受信し、第３のデータ書き込み要求は第４のデータ及び第４の位置情報を搬送し、第４の位置情報は、第４のデータが属するデータボディ内の第４のデータの位置を記述するために使用される。第４の位置情報に基づいて、第４のデータを書き込むことに関するW個のメモリを決定した後に、第１のストレージノードは、第４のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得する。T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。第１のストレージノードによりキャッシュされた状態情報セットが、W個のメモリ内のW1個のメモリが非オフライン状態にある（且つ、例えば、W個のメモリ内のW2個のメモリがオフライン状態にある）ことを現在記録しており、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にあるとき、第１のストレージノードは、ストライプのストリップと、状態情報セットをリリースするように構成された管理ノードのノード識別子とを搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信する。
【００３４】
対応して、第１のストレージノードからデータ書き込み要求を受信した後に、y2個のストレージノードのそれぞれは、データ書き込み要求で搬送された管理ノードのノード識別子を、ストレージノードにより現在キャッシュされている管理ノードのノード識別子と比較し、データ書き込み要求で搬送された管理ノードのノード識別子が、ストレージノードにより現在キャッシュされている管理ノードのノード識別子と同じであると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むか、或いはデータ書き込み要求で搬送された管理ノードのノード識別子が、ストレージノードにより現在キャッシュされている管理ノードのノード識別子とは異なると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むことを拒否する。
【００３５】
この出願のいくつかの可能な実現方式では、メモリがオフライン等のため、メモリ（例えば、第２のメモリ）に割り当てられたストリップがメモリに書き込まれるのに失敗したとき、メモリが再びオンラインになった後に関係するストリップ再構築を実行するために再構築機構が使用されてもよい。例えば、W1はW未満であり、第１のストレージノードによりキャッシュされた状態情報セットは、W個のメモリ内のW2個のメモリがオフライン状態にあることを現在記録している。当該方法は以下のステップを更に含んでもよい。第１のストレージノードは、第１の再構築ログを生成し、第１の再構築ログは、W2個のメモリ内の第２のメモリのメモリ識別子を記録し、第１の再構築ログは、W個のストリップ内の第２のメモリに対応する第１のストリップのストリップ識別子を更に記録し、第１の再構築ログは、ストライプのストライプ識別子を更に記録し、第２のメモリはW2個のメモリ内のいずれかのメモリである。
【００３６】
対応して、W2個のメモリ内の第２のメモリが再びオンラインになり、第２のメモリが属する第２のストレージノードが第２のメモリのオフライン期間中に生成された第１の再構築ログを収集した後に、第２のストレージノードは、第１の再構築ログに記録された、第２のメモリに書き込まれる必要がある第１のストリップの識別子を取得し、ストライプに含まれる第１のストリップ以外のW-T個のストリップが位置するW-T個のメモリを決定し、W-T個のメモリからW-T個のストリップを読み取り、第２のメモリに書き込まれる必要がある第１のストリップを再構築するためにW-T個のストリップを使用することにより、検査演算を実行し、再構築された第１のストリップを第２のメモリに書き込む。
【００３７】
前述の例示の解決策は、状態情報セットの有効性を或る程度検証するために使用できるいくつかの可能な実現方式を提供することが習得できる。これらの可能な実現方式は、複数の信頼性レベルの検証要件を満たすのに役立ち、さらに、複数の読み取り／書き込みアクセス効率要件を満たすのに役立つ。
【００３８】
第２の態様によれば、この出願の実施例は分散型ストレージシステムを更に提供する。分散型ストレージシステムはm個のストレージノードを含み、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数である。
【００３９】
m個のストレージノード内の第１のストレージノードは、端末から第１のデータ読み取り要求を受信し、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用され、第１の位置情報に基づいて、第１のデータが位置する第１のメモリを決定し、
第１のメモリが第１のストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送する、ように構成される。第１のデータは、例えば、第１のデータが属するストリップ内のデータの一部又は全部である。
【００４０】
この出願のいくつかの可能な実現方式では、分散型ストレージシステムは、状態情報セットをリリースするように構成された管理ノードを更に含む。
【００４１】
第１のストレージノードは、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあり、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第１のデータ読み取り要求を第２のストレージノードに転送するように更に構成される。
【００４２】
第２のストレージノードは、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信するように更に構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００４３】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子を第１のデータ読み取り要求に追加し、状態情報セットの識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信するように更に構成される。
【００４４】
第２のストレージノードは、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信するように構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００４５】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子と、状態情報セットをリリースするように構成された管理ノードのノード識別子とを第１のデータ読み取り要求に追加し、状態情報セットの識別子及び管理ノードのノード識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信するように更に構成される。
【００４６】
対応して、第２のストレージノードは、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された管理ノードのノード識別子を、第２のストレージノードにより現在キャッシュされている管理ノードのノード識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定され、第１のデータ読み取り要求で搬送された管理ノードのノード識別子が、第２のノードにより現在キャッシュされている管理ノードのノード識別子と同じであると比較により決定された場合、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信するように構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００４７】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、第１のメモリが信頼されていないアクセス状態にあると決定され、第１のデータが属するストライプのストリップが位置するN個のメモリ内のx個のメモリが第１のストレージノードに属し、N個のメモリ内のN-x個のメモリが第１のストレージノードとは異なるy個のストレージノードに属する場合、ストライプのストライプ識別子と、状態情報セットの識別子とを搬送するデータ読み取り要求をy個のストレージノードに送信するように更に構成される。
【００４８】
y個のストレージノードのそれぞれは、第１のストレージノードからデータ読み取り要求を受信した後に、データ読み取り要求で搬送された状態情報セットの識別子を、ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、データ読み取り要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、ストレージノードに含まれる対応するメモリからストライプの対応するストリップを読み取り、ストライプの読み取られた対応するストリップを第１のストレージノードに送信するように構成される。
【００４９】
第１のストレージノードは、y個のストレージノード及び第１のストレージノードから収集されたストライプのストリップに基づいて、第１のデータを取得するための検査演算を実行し、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信するように更に構成され、第１のデータ読み取り応答は取得された第１のデータを搬送する。
【００５０】
この出願のいくつかの可能な実現方式では、例えば、m個のストレージノードのうち１つは管理ノードである。第１のストレージノードは、第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を管理ノードに送信するように更に構成され、メモリ状態変化報告は、第１のメモリが第２の状態にあることを示し、第１の状態は第２の状態とは異なり、第１の状態及び第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含む。
【００５１】
管理ノードは、第１のストレージノードからメモリ状態変化報告を受信した後に、管理ノードによりキャッシュされた状態情報セットに記録された第１のメモリの状態を第２の状態に更新し、管理ノードによりキャッシュされた状態情報セットのバージョン番号を更新するように構成され、管理ノードは、更新された状態情報セットをm個のストレージノード内の管理ノード以外のストレージノードに送信する。
【００５２】
対応して、第１のストレージノードは、第１のストレージノードにより現在キャッシュされている状態情報セットを更新するために、管理ノードからの状態情報セットを使用するように更に構成される。対応して、他のストレージノードもまた、他のストレージノードにより現在キャッシュされている状態情報セットを更新するために、管理ノードからの状態情報セットを使用する。
【００５３】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、端末から第１のデータ書き込み要求を受信するように更に構成され、第１のデータ書き込み要求は第２のデータ及び第２の位置情報を搬送し、第２の位置情報は、第２のデータが属するデータボディ内の第２のデータの位置を記述するために使用される。
【００５４】
第１のストレージノードは、第２の位置情報に基づいて、第２のデータを書き込むことに関するW個のメモリを決定し、第２のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【００５５】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットが、W個のメモリ内のW1個のメモリが非オフライン状態にあり、W個のメモリ内のW2個のメモリがオフライン状態にあることを現在記録しているとき、ストライプのストリップ及び状態情報セットの識別子を搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信するように更に構成される。
【００５６】
対応して、y2個のストレージノードのそれぞれは、第１のストレージノードからデータ書き込み要求を受信した後に、データ書き込み要求で搬送された状態情報セットの識別子を、ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、データ書き込み要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むか、或いはデータ書き込み要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子とは異なると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むことを拒否するように構成される。
【００５７】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、端末から第２のデータ書き込み要求を受信するように更に構成され、第２のデータ書き込み要求は第３のデータ及び第３の位置情報を搬送し、第３の位置情報は、第３のデータが属するデータボディ内の第３のデータの位置を記述するために使用される。
【００５８】
第１のストレージノードは、第３の位置情報に基づいて、第３のデータを書き込むことに関するW個のメモリを決定した後に、第３のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【００５９】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットに現在記録されているW個のメモリの状態を決定し、W個のメモリ内のW1個のメモリが非オフライン状態にある（且つ、例えば、W個のメモリ内のW2個のメモリがオフライン状態にある）と決定され、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、ストライプのストリップを搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信するように更に構成される。
【００６０】
対応して、y2個のストレージノードのそれぞれは、第１のストレージノードからデータ書き込み要求を受信した後に、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むように構成される。
【００６１】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、端末から第３のデータ書き込み要求を受信するように更に構成され、第３のデータ書き込み要求は第４のデータ及び第４の位置情報を搬送し、第４の位置情報は、第４のデータが属するデータボディ内の第４のデータの位置を記述するために使用される。
【００６２】
第１のストレージノードは、第４の位置情報に基づいて、第４のデータを書き込むことに関するW個のメモリを決定した後に、第４のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【００６３】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットが、W個のメモリ内のW1個のメモリが非オフライン状態にある（且つ、例えば、W個のメモリ内のW2個のメモリがオフライン状態にある）ことを現在記録しており、第１のストレージノードノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にあるとき、ストライプのストリップと、状態情報セットをリリースするように構成された管理ノードのノード識別子とを搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信するように更に構成される。
【００６４】
対応して、y2個のストレージノードのそれぞれは、第１のストレージノードからデータ書き込み要求を受信した後に、データ書き込み要求で搬送された管理ノードのノード識別子を、ストレージノードにより現在キャッシュされている管理ノードのノード識別子と比較し、データ書き込み要求で搬送された管理ノードのノード識別子が、ストレージノードにより現在キャッシュされている管理ノードのノード識別子と同じであると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むか、或いはデータ書き込み要求で搬送された管理ノードのノード識別子が、ストレージノードにより現在キャッシュされている管理ノードのノード識別子とは異なると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むことを拒否するように構成される。
【００６５】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、第１の再構築ログを生成するように更に構成され、第１の再構築ログは、W2個のメモリ内の第２のメモリのメモリ識別子を記録し、第１の再構築ログは、W個のストリップ内の第２のメモリに対応する第１のストリップのストリップ識別子を更に記録し、第１の再構築ログは、ストライプのストライプ識別子を更に記録し、第２のメモリはW2個のメモリ内のいずれかのメモリである。
【００６６】
対応して、例えば、W2個のメモリ内の第２のメモリが再びオンラインになり、第２のメモリが属する第２のストレージノードが第２のメモリのオフライン期間中に生成された第１の再構築ログを収集した後に、第２のストレージノードは、第１の再構築ログに記録された、第２のメモリに書き込まれる必要がある第１のストリップの識別子を取得し、ストライプに含まれる第１のストリップ以外のW-T個のストリップが位置するW-T個のメモリを決定し、W-T個のメモリからW-T個のストリップを読み取り、第２のメモリに書き込まれる必要がある第１のストリップを再構築するためにW-T個のストリップを使用することにより、検査演算を実行し、再構築された第１のストリップを第２のメモリに書き込む。
【００６７】
第３の態様によれば、この出願の実施例はストレージノードを更に提供する。ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数である。ストレージノードは、通信ユニットと処理制御ユニットとを含む。
【００６８】
通信ユニットは、端末から第１のデータ読み取り要求を受信するように構成され、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用される。
【００６９】
処理制御ユニットは、第１の位置情報に基づいて、第１のデータが位置するメモリが第１のメモリであると決定され、第１のメモリがストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のメモリから第１のデータを読み取るように構成される。
【００７０】
通信ユニットは、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信するように更に構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００７１】
この出願のいくつかの可能な実現方式では、通信ユニットは、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあり、ストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第１のデータ読み取り要求を第２のストレージノードに転送するように更に構成される。
【００７２】
第１のデータ読み取り要求は、第２のストレージノードに対して、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答をストレージノード又は端末に送信するようにトリガーするために使用され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００７３】
この出願のいくつかの可能な実現方式では、通信ユニットは、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子を第１のデータ読み取り要求に追加し、状態情報セットの識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信するように更に構成される。
【００７４】
第１のデータ読み取り要求は、第２のストレージノードに対して、ストレージノードから第１のデータ読み取り要求を受信した後に、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答をストレージノード又は端末に送信するようにトリガーするために使用され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【００７５】
この出願のいくつかの可能な実現方式では、m個のストレージノードのうち１つは管理ノードである。
【００７６】
通信ユニットは、第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を管理ノードに送信するように更に構成され、メモリ状態変化報告は、第１のメモリが第２の状態にあることを示し、第１の状態は第２の状態とは異なり、第１の状態及び第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含む。メモリ状態変化報告は、管理ノードに対して、第１のストレージノードからメモリ状態変化報告を受信した後に、管理ノードによりキャッシュされた状態情報セットに記録された第１のメモリの状態を第２の状態に更新し、管理ノードによりキャッシュされた状態情報セットのバージョン番号を更新し、更新された状態情報セットをm個のストレージノード内の管理ノード以外のストレージノードに送信するようにトリガーするために使用される。
【００７７】
処理制御ユニットは、ストレージノードにより現在キャッシュされている状態情報セットを更新するために、管理ノードからの状態情報セットを使用するように構成される。
【００７８】
第４の態様によれば、この出願の実施例は、第１のストレージノードに適用されるデータアクセス方法を提供する。第１のストレージはm個のストレージノードを含む分散型ストレージシステムに位置し、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数である。
【００７９】
当該方法は、第１のストレージノードにより、（端末から）第１のデータ読み取り要求を受信するステップであり、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用される、ステップと、第１のストレージノードが、第１の位置情報に基づいて、第１のデータが位置するメモリが第１のメモリであると決定し、第１のメモリが第１のストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のストレージノードにより、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を送信するステップであり、第１のデータ読み取り応答は読み取られた第１のデータを搬送する、ステップとを含む。
【００８０】
第５の態様によれば、この出願の実施例はストレージノードを提供する。ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数である。
【００８１】
ストレージノードは、互いに結合されたプロセッサ及び通信インタフェースを含む。プロセッサは、前述の態様において第１のストレージノード（又は他のストレージノード）により実行される方法のステップの一部又は全部を実行するように構成される。
【００８２】
例えば、プロセッサは、通信インタフェースを使用することにより、第１のデータ読み取り要求を受信し、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用され、第１の位置情報に基づいて、第１のデータが位置するメモリが第１のメモリであると決定され、第１のメモリが第１のストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のメモリから第１のデータを読み取り、通信インタフェースを使用することにより、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送する、ように構成される。
【００８３】
第６の態様によれば、この出願の実施例はコンピュータ読み取り可能記憶媒体を提供する。コンピュータ読み取り可能記憶媒体はプログラムコードを記憶する。プログラムコードは、第１の態様におけるいずれかのストレージノード（例えば、第１のストレージノード又は第２のストレージノード）により実行される方法のステップの一部又は全部を実行するために使用される命令を含む。
【００８４】
第７の態様によれば、この出願の実施例は命令を含むコンピュータプログラムプロダクトを提供する。コンピュータプログラムプロダクトがコンピュータ（コンピュータは、例えばストレージノードである）上で実行したとき、コンピュータは、前述の態様におけるいずれかのストレージノード（例えば、第１のストレージノード又は第２のストレージノード）により実行される方法のステップの一部又は全部を実行する。
【００８５】
第８の態様によれば、この出願の実施例は、互いに結合されたプロセッサ及び通信インタフェースと、メモリとを含むストレージノードを提供する。プロセッサは、前述の態様におけるいずれかのストレージノードにより実行される方法のステップの一部又は全部を実行するように構成される。
【００８６】
第９の態様によれば、この出願の実施例は、分散型ストレージシステムと端末とを含んでもよいサービスシステムを更に提供する。分散型ストレージシステム及び端末は通信可能に接続される。分散型ストレージシステムは、この出願の実施例において提供されるいずれかの分散型ストレージシステムである。
【図面の簡単な説明】
【００８７】
【図１−Ａ】この出願の実施例に従って例示されるいくつかの分散型ストレージシステムの概略アーキテクチャ図である。
【図１−Ｂ】この出願の実施例に従って例示されるいくつかの分散型ストレージシステムの概略アーキテクチャ図である。
【図１−Ｃ】この出願の実施例に従って例示されるメモリ状態遷移の概略図である。
【図１−Ｄ】この出願の実施例に従って例示される状態情報セットの編成形式の概略図である。
【図１−Ｅ】この出願の実施例に従って例示されるいくつかのストライプ編成形式の概略図である。
【図１−Ｆ】この出願の実施例に従って例示されるいくつかのストライプ編成形式の概略図である。
【図２−Ａ】この出願の実施例に従って例示されるいくつかのファイル編成形式の概略図である。
【図２−Ｂ】この出願の実施例に従って例示されるいくつかのファイル編成形式の概略図である。
【図３−Ａ】この出願の実施例に従って例示される状態更新方法の概略フローチャートである。
【図３−Ｂ】この出願の実施例に従って例示される状態情報セットのいくつかの編成形式の概略図である。
【図３−Ｃ】この出願の実施例に従って例示される状態情報セットのいくつかの編成形式の概略図である。
【図４−Ａ】この出願の実施例に従って例示される他の状態更新方法の概略フローチャートである。
【図４−Ｂ】この出願の実施例に従って例示される状態情報セットのいくつかの編成形式の概略図である。
【図４−Ｃ】この出願の実施例に従って例示される状態情報セットのいくつかの編成形式の概略図である。
【図５−Ａ】この出願の実施例に従って例示される他のデータアクセス方法の概略フローチャートである。
【図５−Ｂ】この出願の実施例に従って例示される再構築ログの編成形式の概略図である。
【図６】この出願の実施例に従って例示される他のデータアクセス方法の概略フローチャートである。
【図７−Ａ】この出願の実施例に従って例示されるデータ再構築方法の概略フローチャートである。
【図７−Ｂ】この出願の実施例に従って例示される状態情報セットのいくつかの編成形式の概略図である。
【図７−Ｃ】この出願の実施例に従って例示される状態情報セットのいくつかの編成形式の概略図である。
【図８】この出願の実施例に従って例示される他のデータアクセス方法の概略フローチャートである。
【図９】この出願の実施例に従って例示される他のデータアクセス方法の概略フローチャートである。
【図１０】この出願の実施例に従って例示される他のデータアクセス方法の概略フローチャートである。
【図１１】この出願の実施例に従って例示される分散型ストレージシステムの概略図である。
【図１２】この出願の実施例に従って例示されるストレージノードの概略図である。
【図１３】この出願の実施例に従って例示される他のストレージノードの概略図である。
【発明を実施するための形態】
【００８８】
この出願の明細書、特許請求の範囲及び添付図面において言及される「含む」、「持つ」という用語、又はこれらの他の変形は、非排他的な包含をカバーすることを意図する。例えば、一連のステップ又はユニットを含むプロセス、方法、システム、プロダクト又はデバイスは、記載のステップ又はユニットに限定されず、任意選択で、記載されていないステップ又はユニットを更に含んでもよく、或いは任意選択で、プロセス、方法、プロダクト又はデバイスの他の固有のステップ又はユニットを更に含む。さらに、「第１」、「第２」、「第３」、「第４」等の用語は、特定の順序を記述するのではなく、対象を区別するために使用される。
【００８９】
添付図面を参照して、以下に、まず、分散型ストレージシステムのいくつかの可能なアーキテクチャについて説明する。
【００９０】
図１−Ａ及び図１−Ｂを参照すると、この出願の実施例におけるいくつかの技術的解決策は、図１−Ａ若しくは図１−Ｂに例示されるアーキテクチャの分散型ストレージシステム、又は分散型ストレージシステムの変形アーキテクチャに基づいて具体的に実現されてもよい。分散型ストレージシステムは、インターネットを使用することにより接続された複数のストレージノードを含む（いくつかのシナリオでは、ストレージノードはまた、「ストレージサービングノード」と呼ばれてもよい）。端末は、ネットワークを使用することにより、分散型ストレージシステムへの読み取り／書き込みのようなアクセスを実行してもよい。
【００９１】
この出願の実施例における端末（terminal）のプロダクト形式は、例えば、モバイルインターネットデバイス、ノートブックコンピュータ、サーバ、タブレットコンピュータ、パームトップコンピュータ、デスクトップコンピュータ、移動電話、又はデータ読み取り要求若しくはデータ書き込み要求のようなデータアクセス要求を送信可能な他のプロダクト形式の端末デバイスでもよいことが理解され得る。この出願の実施例では、端末はまた、ホスト（host）により置換されてもよい。
【００９２】
ストレージノードは１つ以上のメモリを含む。この出願の実施例におけるメモリは不揮発性記憶媒体を含み、不揮発性記憶媒体を含むメモリはまた、不揮発性メモリとも呼ばれてもよい。実施例では、メモリは、例えば、ハードディスク、消去可能コンパクトディスク又はソリッドステートディスクのような記憶媒体でもよい。図１−Ａ及び図１−Ｂでは、メモリがハードディスクである例が説明のために使用される。
【００９３】
ストレージノードは、ネットワークインタフェースカード、内部メモリ、プロセッサ、拡張カード等を更に含んでもよい。プロセッサは、例えば、拡張カードを使用することにより、メモリに相互接続されてもよい。ストレージノードは、ストレージノードのネットワークインタフェースカードを使用することにより、他のストレージノード又は他の周辺デバイスに相互接続されてもよい。ネットワークインタフェースカードは、ストレージノードの通信インタフェースとして考えられてもよい。
【００９４】
プロセッサは機能ユニットを含んでもよく、これらの機能ユニットは、ハードウェア（例えば、プロセッサ／フィールドプログラマブルゲートアレイ（英文：field  programmable  gate  array,  略称：FPGA）回路、又はプロセッサ／FPGA回路と他の補助ハードウェアとの組み合わせ）でもよく、或いはソフトウェアでもよい。例えば、図１−Ｂに例示されるアーキテクチャでは、プロセッサは、クライアント（英文：client）、データサービス（英文：data  service,  略称：DS）ユニット及び状態モニタ（monitor）のような機能を実行してもよい。実行されているとき、これらの機能は、プロセッサ内のモジュールとして考えられてもよい。実行されていないとき、これらの機能を実現するためのプログラムは、内部メモリ内のプログラムでもよく、この場合、これらのモジュールは内部メモリに位置するとも考えられてもよい。一般的に、これらの機能は各ストレージノードにあり、具体的には、各ストレージノード内のプロセッサと内部メモリとの組み合わせにある。説明の便宜上のため、これらのモジュールは、図１−Ｂではプロセッサ内に描かれている。いくつかの特別な場合、例えば、システム・オン・チップ（system  on  chip,  SoC）では、プロセッサ自体がストレージ機能を有し、プログラムコードはプロセッサに直接焼かれてもよい。この場合、内部メモリはもはや必須のコンポーネントではない。
【００９５】
clientは、対応するストレージノードのシステム入出力（英文：input  output,  略称：IO）インタフェースであり、主に、他のデバイス（例えば、端末又は他のストレージノード）により送信されたアクセス要求を受信する役目をする。アクセス要求はまた、IO要求とも呼ばれる。アクセス要求は、例えば、データ読み取り要求又はデータ書き込み要求である。DSユニットは、主に、clientにより送信されたアクセス要求を受信し、アクセス要求に基づいてローカルメモリ上で読み取り／書き込み操作を実行し、読み取り／書き込み操作の結果をclientに返信する役目をする。monitorは、対応するストレージノードに含まれるメモリの状態を監視する役目をしてもよく、明らかに、monitorは、対応するストレージノードの状態等を監視する役目を更にしてもよい。
【００９６】
例えば、monitorは、分散型ストレージシステムにおいて各ストレージノードに配置されてもよく、各ストレージノード内のmonitorは、このストレージノードに含まれるメモリの状態のような情報を監視するように構成されてもよい。さらに、全てのストレージノードのmonitorは、monitorクラスタを形成するように一緒に接続されてもよい。さらに、１つの「プライマリmonitor」は、管理者により指定された方式で或いは選択アルゴリズムを使用することにより、monitorクラスタから選択され、残りのmonitorは「セカンダリmonitor」である。プライマリmonitorが位置するストレージノードは「管理ノード」と呼ばれてもよい。例えば、各セカンダリmonitorは、セカンダリmonitorが位置するストレージノードに含まれる各メモリの現在状態をプライマリmonitorに送信してもよい。プライマリmonitorは、各ストレージノードに含まれるメモリの状態のような収集された情報に基づいて、状態情報セットを生成してもよい。状態情報セットは、例えば、簡単には「ノードマップ（英文：node  map）」、「状態ファイル」等と呼ばれてもよい。状態情報セットは、各メモリの状態のような情報を記録する。さらに、例えば、セカンダリmonitorは、セカンダリmonitorが位置するストレージノードの現在状態をプライマリmonitorに送信してもよい。状態情報セットは、各ストレージノードの状態等を更に記録してもよい。前述のように、monitorは、内部メモリ内のプログラムを実行することにより、プロセッサにより実現される機能である。一般的に、monitorはプロセッサ及び内部メモリの機能であるか、或いはmonitorはストレージノードの機能であると考えられてもよい。したがって、以下の説明では、プライマリmonitorの機能は、プライマリプロセッサにより、或いはプライマリプロセッサとプロセッサと内部メモリとにより、或いはプライマリストレージノードにより実行されてもよく、セカンダリmonitorの機能は、セカンダリプロセッサにより、或いはセカンダリプロセッサとプロセッサと内部メモリとにより、或いはセカンダリストレージノードにより実行されてもよい。
【００９７】
プライマリmonitorは、最新の状態情報セットを他のストレージノードにアクティブにプッシュしてもよく、或いは他のストレージノードは、プライマリmonitorから最新の状態情報セットをアクティブに要求してもよい。他のストレージノード内のmonitor（すなわち、セカンダリmonitor）は、受信した状態情報セットを他のストレージノードの内部メモリにキャッシュしてもよく、内部メモリにキャッシュされた状態情報セットは、対応するストレージノード（対応するmonitor）によりローカルで維持される状態情報セットである。セカンダリmonitorがプライマリmonitorから状態情報セットを受信する毎に、セカンダリmonitorは、セカンダリmonitorにより現在キャッシュされている状態情報セットを更新するために、プライマリmonitorから最後に受信した状態情報セットを使用してもよい。すなわち、セカンダリmonitorは、現在キャッシュされている状態情報セットが、セカンダリmonitorにより受信された最新の状態情報セットであることを確保する。
【００９８】
セカンダリmonitorとプライマリmonitorとが接続状態にあるとき、セカンダリmonitorにより現在キャッシュされている状態情報セットは、通常ではプライマリmonitorによりリリースされた最新の状態情報セットであることが理解され得る。しかし、セカンダリmonitorとプライマリmonitorとが接続状態にないとき、セカンダリmonitorはプライマリmonitorによりリリースされた最新の状態情報セットを見逃す可能性があり、したがって、セカンダリmonitorにより現在キャッシュされている状態情報セットは、プライマリmonitorによりリリースされた最新の状態情報セットではない可能性がある。明らかに、セカンダリmonitorとプライマリmonitorとが接続状態にない期間内に、プライマリmonitorが新たな状態情報セットをリリースしていない場合、セカンダリmonitorにより現在キャッシュされている状態情報セットは、依然としてプライマリmonitorによりリリースされた最新の状態情報セットである可能性がある。接続状態のデバイスは、互いに直接的に或いは間接的に通信できる。したがって、管理ノードに接続されている状態にあるストレージノードは、管理ノードから最新バージョンの状態情報セットを取得できる。
【００９９】
メモリの状態（アクセス状態）は、オンライン（英文：online）状態と、オフライン（英文：offline）状態とを含む。オンライン状態は、データ再構築状態と、信頼されたアクセス状態とを含む。データ再構築状態はまた、キャッチアップ（英文：catchup）状態とも呼ばれてもよい。信頼されたアクセス状態はまた、正常（英文：normal）状態とも呼ばれてもよい。
【０１００】
データ再構築が実行される必要がある場合、メモリは、データ再構築が完了した後に、信頼されたアクセス状態に入ってもよく、或いはデータ再構築が実行される必要がない場合、メモリは、例えば、オフライン状態から信頼されたアクセス状態に直接変化してもよいことが理解され得る。一般的に、オフライン状態とデータ再構築状態との双方は、信頼されていないアクセス状態と考えられることができる。
【０１０１】
メモリの状態は、メモリ内のデータの有効性（すなわち、信頼できるか否か）を反映する。メモリが信頼されたアクセス状態にある場合、これは、メモリに割り当てられたデータが全て成功してメモリに書き込まれたことを示す。すなわち、割り当てられたデータが全て書き込まれたメモリは、信頼されたアクセス状態にある。例えば、メモリが信頼されたアクセス状態にあるとき、このような状態のメモリ上のデータは有効であると考えられてもよい。例えば、メモリがデータ再構築状態にあるとき、これは、この時点ではメモリがオフライン期間中に失われた関係するデータを再構築していることを示す。この場合、メモリ上のデータはおそらく無効であり、すなわち、メモリは信頼されていないアクセス状態にあると考えられてもよい。メモリがオフライン状態であるとき、この場合、メモリ上のデータは無効であり、すなわち、メモリは信頼されていないアクセス状態にあると考えられてもよい。オフライン状態のメモリはアクセスできず、データがメモリから読み取られることも、メモリに書き込まれることもできないことが理解され得る。
【０１０２】
図１−Ｃを参照すると、図１−Ｃは、メモリの異なる状態の間の遷移の可能な方式を例示する。メモリは、オンライン状態からオフライン状態に変化してもよく、或いはオフライン状態からオンライン状態に変化してもよい。具体的には、例えば、メモリは、オフライン状態からデータ再構築状態又は信頼されたアクセス状態に変化してもよく、或いはデータ再構築状態から信頼されたアクセス状態に変化してもよく、或いはデータ再構築状態又は信頼されたアクセス状態からオフライン状態に変化してもよい。
【０１０３】
メモリは、複数の要因のため、offlineになってもよい。例えば、ストレージノード内のメモリがストレージノードにより検出できないとき、或いはストレージノードがメモリから故障状態報告（故障状態報告は、メモリがofflineであることを示す）を受信したとき、ストレージノードは、対応するメモリの状態をoffline状態に設定してもよい。他の例では、管理ノード（プライマリmonitor）がストレージノードからハートビートメッセージを受信するのに複数の連続する回数失敗したとき、これは、ストレージノードがoffline状態であることを示し、管理ノードは、ストレージノードに含まれる全てのメモリをoffline状態になるように設定してもよい。
【０１０４】
状態情報セットは、メモリIDと各メモリの状態とを記録してもよく、各メモリが属するストレージノードのノードIDと状態とを更に記録してもよい。図１−Ｄを参照すると、図１−Ｄは、状態情報セットの可能な表現形式を例示する。状態情報セットは、状態情報セットのバージョン番号と、各メモリ（メモリは、例えば、図面におけるハードディスクである）の識別子及び状態（状態は、例えば、オフライン状態、データ再構築状態又は信頼されたアクセス状態でもよい）とを含む。
【０１０５】
メモリの状態は時間と共に変化するため、状態情報セットは、メモリの状態の変化時に適応的に更新される。例えば、管理ノード（プライマリmonitor）がメモリ状態変化報告（メモリの状態が変化したこと、例えば、メモリがプラグを抜かれて電源オフになったこと、又は再び電源オンになったこと）を受信したか、或いはメモリがオフラインである（例えば、管理ノードは特定の持続時間内に対応するストレージノードからハートビートメッセージを受信していない）と決定した後に、管理は、状態情報セットを更新する条件が満たされたと考え、管理ノードは、状態情報セットを更新する。更新された状態情報セットは新しいバージョン番号に対応し、更新された状態情報セットは、変化したメモリ状態を記録する。管理ノードは、更新された状態情報セットを他のストレージノード（セカンダリmonitor）にプッシュする。状態情報セットのバージョン番号は、グローバル変数に基づいてプライマリmonitorにより生成されてもよい。具体的には、例えば、状態情報セットが更新される毎に、バージョン番号は現状に基づいて+1又は+2だけインクリメントする。したがって、異なるバージョン番号は異なる状態情報セットを示してもよく、２つの状態情報セットが同じであるか否かは、２つの状態情報セットのバージョン番号を比較することにより決定できる。
【０１０６】
分散型ストレージシステムにおけるメモリは、様々なデータボディを記憶してもよい（データボディは、メモリにより記憶できるデータを示し、データボディは、例えば、ファイル、オブジェクト、レコード、又は他のフォーマットのデータでもよい）。一般的に、システム信頼性のような要因を考えると、同じデータボディの異なるストリップは、それぞれ異なるメモリに記憶される。パリティストリップは、データストリップに対して冗長検査演算（例えば、EC演算）を実行することにより取得できる。検査冗長構成（例えば、EC構成）は、ストライプ内のデータストリップとパリティストリップとの間の比例関係を記述するために使用される。例えば、ファイルの検査冗長構成はA:Tとして記されてもよく、この場合、Aはストライプに含まれるデータストリップの数であり、T（Tは冗長を示す）はストライプに含まれるパリティストリップの数である。例えば、冗長検査アルゴリズムがECアルゴリズムであると仮定すると、検査冗長構成（すなわち、EC構成）が2:1であるとき、2はストライプ（ECストライプ）に含まれるデータストリップの数であり、1はストライプに含まれるパリティストリップの数である。すなわち、この場合、ストライプは2個のデータストリップと1個のパリティストリップとを含み、ストライプに含まれる2個のデータストリップ及び1個のパリティストリップは、それぞれ異なるメモリに記憶される。すなわち、ストライプに含まれる2個のデータストリップ及び1個のパリティストリップを記憶するために、3個のメモリが必要である。他の例では、検査冗長構成（すなわち、EC構成）が16:4であると仮定すると、16はストライプ（ECストライプ）に含まれるデータストリップの数であり、4はストライプに含まれるパリティストリップの数である。すなわち、この場合、ストライプは16個のデータストリップと4個のパリティストリップとを含み、この場合、ストライプに含まれる20個のストリップをそれぞれ記憶するために、20個のメモリが必要である。他の場合も類推して理解され得る。図１−Ｅは、2個のデータストリップと1個のパリティストリップとを含むストライプを例示する。図１−Ｆは、複数のデータストリップと複数のパリティストリップとを含むストライプを示す。
【０１０７】
さらに、１つの分散型ストレージシステムは１つ以上の検査冗長構成をサポートでき、各検査冗長構成は１つ以上の検査メンバグループに対応してもよく、各検査メンバグループは複数のメモリを含む。明らかに、異なる検査メンバグループに含まれるメモリは、完全に異なってもよく、或いは部分的に異なってもよく、すなわち、各メモリは、１つ以上の検査メンバグループに仕えてもよい。例えば、検査冗長構成が2:1である場合、検査冗長構成に対応する各検査メンバグループは、3個（2+1=3）のメモリを含む。例えば、検査冗長構成が4:2である場合、検査冗長構成に対応する各検査メンバグループは、6個（4+2=6）のメモリを含む。例えば、検査冗長構成が16:4である場合、検査冗長構成に対応する各検査メンバグループは、20個（16+4=20）のメモリを含み、以下同様である。
【０１０８】
さらに、ファイルの長さが大きすぎる（例えば、ファイルの長さが1Gbより大きい）とき、場合によって、管理の便宜上のため、ファイルはファイルセグメント、例えば、500Mb又は1Gbより大きくないファイルセグメントに分割されてもよい。図２−Ａを参照すると、図２−Ａは、ファイルがファイルセグメントに分割される概略図である。ファイルの各ファイルセグメントは同じ或いは異なる検査冗長構成に対応してもよく、異なるファイルセグメントの検査メンバグループは同じでもよく、或いは異なってもよい。この場合、ファイルセグメントはファイルとして考えられてもよい。例えば、図２−Ｂを参照すると、図２−Ｂは、ファイルがファイルセグメントに分割されない概略図である。
【０１０９】
以下に、いくつかの実施例を使用することにより、この出願におけるいくつかの関係する方法について説明する。
【０１１０】
実施例１
添付図面を参照して、以下に、まず、状態更新方法を説明するための例を使用する。状態更新方法は分散型ストレージシステムに適用される。例えば、分散型ストレージシステムはm個のストレージノードを含む。m個のストレージノードは、例えば、ストレージノードNd2、Nd1、Nd3及びNd4を含んでもよい。例えば、ストレージノードNd1は管理ノードである。分散型ストレージシステムがより多くの或いはより少ないストレージノードを含む場合における実現方式も類推により理解され得る。以下の例示の解決策では、非管理ノードは、主に、管理ノードに対して、状態情報セットを更新及びリリースするようにアクティブにトリガーする。
【０１１１】
図３−Ａを参照すると、図３−Ａは、この出願の実施例による状態更新方法の概略フローチャートである。図３−Ａを参照すると、この出願の実施例において提供される状態更新方法は以下のステップを含んでもよい。
【０１１２】
301.ストレージノードNd2内のメモリNd2-D1の状態が変化したとき、ストレージノードNd2は、メモリ状態変化報告Report1を管理ノードNd1に送信し、メモリ状態変化報告Report1は、メモリNd2-D1の最新の変化した状態を示すために使用される。
【０１１３】
メモリ状態変化報告Report1は、メモリNd2-D1のメモリ識別子、状態識別子等を搬送してもよい。例えば、メモリNd2-D1の最新の変化した状態がoffline状態であるとき、メモリ状態変化報告Report1で搬送されるメモリNd2-D1の状態識別子は、offline状態を示す。他の例では、メモリNd2-D1の最新の変化した状態がデータ再構築状態であるとき、メモリ状態変化報告Report1で搬送されるメモリNd2-D1の状態識別子は、データ再構築状態を示す。更に他の例では、メモリNd2-D1の最新の変化した状態が信頼されたアクセス状態であるとき、メモリ状態変化報告Report1で搬送されるメモリNd2-D1の状態識別子は、信頼されたアクセス状態を示し、以下同様である。
【０１１４】
302.管理ノードNd1は、ストレージノードNd2からメモリ状態変化報告Report1を受信し、管理ノードNd1は、メモリ状態変化報告Report1に基づいて、管理ノードNd1により現在キャッシュされている状態情報セットを更新する。
【０１１５】
具体的には、例えば、管理ノードNd1は、管理ノードNd1により現在キャッシュされている状態情報セットに記録されたメモリNd2-D1の状態を、メモリ状態変化報告Report1により示されるメモリNd2-D1の状態に更新し、状態情報セット内のバージョン番号（すなわち、状態情報セット自体のバージョン番号）を更新する。
【０１１６】
例えば、monitorが各ストレージノードに配置されるとき、具体的には、ストレージノードNd2内のセカンダリmonitorは、メモリ状態変化報告Report1をストレージノードNd1に送信してもよい。対応して、管理ノードNd1内のプライマリmonitorは、ストレージノードNd2からメモリ状態変化報告Report1を受信してもよい。
【０１１７】
例えば、管理ノードNd1により更新されていない状態情報セットが図３−Ｂに例示される。例えば、管理ノードNd1により更新されている状態情報セットが図３−Ｃに例示される。明らかに、実際の用途では、状態情報セットはこのような例示の形式に限定されない。
【０１１８】
303.管理ノードNd1は、最新の更新された状態情報セットを他のストレージノードに送信する。
【０１１９】
対応して、ストレージノードNd2、Nd3及びNd4は、管理ノードNd1から更新された状態情報セットを別々に受信する。ストレージノードNd2、Nd3及びNd4は、これらのそれぞれ現在キャッシュされている状態情報セットを更新するために、管理ノードNd1からの状態情報セットを別々に使用する。このように、ストレージノード（Nd1、Nd2、Nd3及びNd4）によりキャッシュされた状態情報セットは、相対的に同期され続けることができる。
【０１２０】
前述の解決策は、非管理ノードが、主に、管理ノードに対して、状態情報セットを更新及びリリースするようにアクティブにトリガーする機構を提供する。具体的には、ストレージノード内のメモリの状態が変化したとき、ストレージノードは、メモリ状態変化報告を管理ノードにアクティブに送信し、それにより、管理ノードに対して、メモリ状態変化報告に基づいてタイムリーに状態情報セットを更新及びリリースするようにトリガーする。この機構は、分散型ストレージシステムにおける各ストレージノードが状態情報セットを最大限まで同期させることを可能にするのに役立ち、各ストレージノードが分散型ストレージシステムにおける各メモリの状態を比較的正確に習得することを可能にするのに役立ち、メモリの状態に基づいて実行される以降の読み取り／書き込み操作の基礎としての役割をする。
【０１２１】
実施例２
添付図面を参照して、以下に、他の状態更新方法を説明するための例を使用する。状態更新方法は分散型ストレージシステムに適用される。例えば、分散型ストレージシステムはm個のストレージノードを含んでもよい。m個のストレージノードは、例えば、ストレージノードNd2、Nd1、Nd3、…、及びNd4を含んでもよい。例えば、ストレージノードNd1は管理ノードである。分散型ストレージシステムがより多くの或いはより少ないストレージノードを含む場合における実現方式も類推により理解され得る。以下の例示の解決策では、管理ノードは、主に、他のストレージノードに対するハートビート監視の結果に基づいて状態情報セットを更新及びリリースする。
【０１２２】
図４−Ａを参照すると、図４−Ａは、この出願の他の実施例による他の状態更新方法の概略フローチャートである。図４−Ａを参照すると、この出願の他の実施例において提供される他の状態更新方法は以下のステップを含んでもよい。
【０１２３】
401.管理ノードNd1は、各ストレージノードにより周期的に送信されるハートビートメッセージを受信する。
【０１２４】
402.管理ノードNd1が指定の持続時間（指定の持続時間は、例えば、5分、10分、20分、1分又は他の持続時間でもよい）内に、ストレージノードNd2により送信されるハートビートメッセージを受信していないとき、管理ノードNd1は、ストレージノードNd2がオフライン状態にあると考えてもよく、ストレージノードNd2がオフライン状態にあると考えたとき、管理ノードNd1は、管理ノードNd1により現在キャッシュされている状態情報セットを更新する。
【０１２５】
具体的には、管理ノードNd1は、管理ノードNd1に現在キャッシュされている状態情報セットに記録された、ストレージノードNd2に含まれる全てのメモリの状態をオフライン状態に更新し、状態情報セットのバージョン番号を更新する。
【０１２６】
例えば、monitorが各ストレージノードに配置されるとき、具体的には、管理ノードNd1内のプライマリmonitorは、各ストレージノード内のセカンダリmonitorにより周期的に送信されるハートビートメッセージを受信してもよい。
【０１２７】
例えば、ストレージノードNd2はメモリNd2-D1、Nd2-D2及びNd2-D3を含む。この場合、例えば、管理ノードNd1により更新されていない状態情報セットが図４−Ｂに例示され、例えば、管理ノードNd1により更新されている状態情報セットが図４−Ｃに例示される。明らかに、実際の用途では、状態情報セットはこのような例示の形式に限定されない。
【０１２８】
403.管理ノードNd1は、最新の更新された状態情報セットを他のストレージノードに送信する。
【０１２９】
対応して、ストレージノードNd3及びNd4は、管理ノードNd1から更新された状態情報セットを別々に受信する。ストレージノードNd3及びNd4は、これらのそれぞれ現在キャッシュされている状態情報セットを更新するために、管理ノードNd1からの状態情報セットを別々に使用する。このように、管理ノードNd1によりキャッシュされた状態情報セットは、他のストレージノード（例えば、Nd3及びNd4）によりキャッシュされた状態情報セットと相対的に同期され続けることができる。しかし、ストレージノードNd2はオフライン状態にあり、したがって、管理ノードNd1によりリリースされた最新の状態情報セットを受信できない。したがって、オフライン期間中に、ストレージノードNd2によりキャッシュされた状態情報セットは、管理ノードによりキャッシュされた状態情報セットと同期され続けることはできない。ストレージノードNd2が再びオンラインになったとき、ストレージノードNd2は、ストレージノードNd2にキャッシュされた状態情報セットを更新するために、管理ノードから最新の状態情報セットをアクティブに要求してもよい。明らかに、ストレージノードNd2は、代替として、管理ノードが最新の状態情報セットを再びリリースするまで、パッシブに待機し、ストレージノードNd2によりキャッシュされた状態情報セットを更新するために、管理ノードにより再びリリースされた最新の状態情報セットを使用してもよい。
【０１３０】
前述の解決策は、管理ノードが、主に、他のストレージノードに対するハートビート監視の結果に基づいて状態情報セットを更新及びリリースする機構を提供する。この機構は、分散型ストレージシステムにおける各ストレージノードが状態情報セットを最大限まで同期させることを可能にするのに役立ち、各ストレージノードが分散型ストレージシステムにおける各メモリの状態を比較的正確に習得することを可能にするのに役立ち、メモリの状態に基づいて実行される以降の読み取り／書き込み操作の基礎としての役割をする。
【０１３１】
いくつかの可能な実現方式では、図３−Ａ及び図４−Ａにおいて説明した状態更新方法は共に、同じ分散型ストレージシステムに適用されてもよいことが理解され得る。すなわち、管理ノードは、他のストレージノードに対するハートビート監視の結果に基づいて状態情報セットを更新及びリリースし、代替として、非管理ノードは、管理ノードに対して、状態情報セットを更新及びリリースするようにアクティブにトリガーしてもよい。
【０１３２】
実施例３
添付図面を参照して、以下に、データアクセス方法を説明するための例を更に使用し、これは、端末が分散型ストレージシステムからのデータを書き込む可能なシナリオに主に使用される。データアクセス方法は分散型ストレージシステムに適用される。例えば、分散型ストレージシステムはm個のストレージノードを含み、m個のストレージノードは、ストレージノードNd1及びNd2を含む。メモリNd2-D1、メモリNd2-D2及びメモリNd2-D3は全てストレージノードNd2に位置する。この実施例は、主に、対応する検査冗長構成が具体的に2:1であり、すなわち、ストライプが2個のデータストリップと1個のパリティストリップとを含む例を使用することにより説明する。他の検査冗長構成の場合も類推により理解され得る。
【０１３３】
図５−Ａを参照すると、図５−Ａは、この出願の実施例によるデータアクセス方法の概略フローチャートである。図５−Ａに例示するように、この出願の実施例において提供されるデータアクセス方法は以下のステップを含んでもよい。
【０１３４】
501.端末がデータを分散型ストレージシステムに書き込む必要があるとき、端末は、書き込み対象のデータを搬送するデータ書き込み要求を分散型ストレージシステムに送信する。以下の説明の便宜上のため、この実施例ではデータ書き込み要求はWq3という名で呼ばれる。このステップでは、ストレージノードNd1は端末からデータ書き込み要求Wq3を受信する。
【０１３５】
データ書き込み要求Wq3は、データData1（データData1は書き込み対象のデータである）と、データData1が属するファイルのファイル識別子と、データData1の位置情報とを搬送してもよい。データData1の位置情報は、データData1が属するファイル内のデータData1の位置を記述するために使用される。データData1の位置情報は、例えば、データData1のファイルオフセットアドレス（データData1のファイルオフセットアドレスはファイル内のデータData1の開始位置を示す）、データData1の長さ等を含む。
【０１３６】
502.ストレージノードNd1は、データData1を2個のデータストリップ（以下の説明の便宜上のため、この実施例では2個のデータストリップはデータストリップPd1及びデータストリップPd2という名で呼ばれる）にセグメント化し、ストレージノードNd1は、2個のデータストリップを使用することによる計算を用いて、1個のパリティストリップ（以下の説明の便宜上のため、この実施例ではパリティストリップはパリティストリップPj1という名で呼ばれる）を取得し、1個のパリティストリップ及び2個のデータストリップは、3個のストリップを含む1個のストライプを形成する。例えば、データストリップPd1及びデータストリップPd2は長さが同じでもよく、或いは異なってもよい。
【０１３７】
503.ストレージノードNd1は、データData1の位置情報に基づいて、データData1を書き込むことに関するメモリを決定する。
【０１３８】
例えば、ストレージノードNd1により決定された、データData1を書き込むことに関するメモリは、メモリNd2-D1、メモリNd2-D2及びメモリNd2-D3である。
【０１３９】
一般的に、メモリへのファイルデータの割り当て中に、ファイルデータのセグメントが記憶のために具体的に割り当てられるメモリは、通常では、ファイル内のファイルデータの位置に基づいて決定される。したがって、データData1を書き込むことに関するメモリは、データData1の位置情報に基づいて決定されてもよい。
【０１４０】
前述の3個のメモリ（Nd2-D1、Nd2-D2及びNd2-D3）は3個のストリップと１対１の対応関係にある。具体的には、例えば、パリティストリップPj1はメモリNd2-D3に対応し、データストリップPd1はメモリNd2-D1に対応し、データストリップPd2はメモリNd2-D2に対応する。
【０１４１】
504.ストレージノードNd1は、ストレージノードNd1によりローカルにキャッシュされた状態情報セットに現在記録されているメモリNd2-D1、メモリNd2-D2及びメモリNd2-D3の状態を決定する。
【０１４２】
ストレージノードNd1によりローカルにキャッシュされた状態情報セットが、メモリNd2-D2及びNd2-D3がオンライン状態（信頼されたアクセス状態又はデータ再構築状態）にあり、メモリNd2-D1がオフライン状態にあることを現在記録している場合が、以下の説明のための例として使用される。
【０１４３】
505.メモリNd2-D2及びメモリNd2-D3がオンライン状態にあり、メモリNd2-D1がオフライン状態にあると決定されたとき、ストレージノードNd2はデータストリップPd2をメモリNd2-D2に書き込み、ストレージノードNd2はパリティストリップPj1をメモリNd2-D3に書き込む。
【０１４４】
EC検査アルゴリズムによれば、特定の数のストリップが書き込まれるのに失敗したとしても、書き込まれるのに失敗したストリップは、成功して書き込まれたストリップを使用することによる再構築により回復でき、データロスが引き起こされないため、このステップにおいて、データは、オフラインストレージノードが存在するとしても、通常では残りの非オフラインストレージノードに書き込まれる。書き込まれるのに失敗したストリップの数がパリティストリップの数を超えないという条件で、EC検査アルゴリズムは通常通り機能できる。明らかに、他の検査アルゴリズムも同様である。
【０１４５】
506.ストレージノードNd2内のメモリNd2-D1はオフライン状態にあり、したがって、データストリップPd1はメモリNd2-D1に書き込まれるのに失敗するため、ストレージノードNd1又はストレージノードNd2は再構築ログlog1を生成する。
【０１４６】
再構築ログlog1は、書き込まれるのに失敗したストリップ（データストリップPd1）のストリップ識別子と、ストリップが書き込まれるのに失敗したメモリ（メモリNd2-D1）のメモリ識別子とを記録する。再構築ログlog1は、書き込まれるのに失敗したストリップ（データストリップPd1）が属するストライプのストライプ識別子等を更に記録してもよい。再構築ログlog1は、メモリNd2-D1が再びオンラインになった後に、データストリップPd1の以降の再構築に使用される。図５−Ｂは、再構築ログlog1の可能な表現形式を例示する。明らかに、他の表現形式も使用されてもよい。
【０１４７】
メモリNd2-D1もまた信頼されたアクセス状態にある場合、ストレージノードNd2は、データストリップPd1をメモリNd2-D1に直接書き込んでもよいことが理解され得る。この場合、ストレージノードNd1又はストレージノードNd2は、再構築ログlog1を生成する関係するステップを実行する必要はない。
【０１４８】
前述の解決策が主に使用されるデータ書き込みシナリオは、ストライプ内のストリップに対応するメモリが全て同じストレージノードに位置する可能なシナリオである。この可能なシナリオでは、メモリ状態を記録するために使用される状態情報セットが分散型ストレージシステムに導入され、したがって、状態情報セットは、分散型ストレージシステムにおけるメモリのアクセス状態を記録及び管理するために使用されてもよい。データは、オンライン状態のメモリに直接書き込まれることができる。オフライン状態のメモリについて、関係する再構築ログは、データ書き込みの試みが失敗した後に、関係する再構築ログを生成する必要なく、直接生成できる。この実施例で例示されるシナリオにおいて、従来技術では、まず、データ書き込みの試みが行われ、関係する再構築ログは、データ書き込みの試みが失敗した後に生成される。この実施例の解決策では、無駄な試みが低減でき、それにより、データ書き込み効率を改善し、さらに、システム性能を改善するのに役立つ。
【０１４９】
実施例４
添付図面を参照して、以下に、他のデータアクセス方法を説明するための例を更に使用し、これは、端末が分散型ストレージシステムからのデータを書き込む他の可能なシナリオに主に使用される。前の実施例では、ストリップに対応するメモリは同じストレージノードに位置する。この実施例のシナリオでは、これらのメモリは異なるストレージノードに位置する。
【０１５０】
例えば、分散型ストレージシステムはm個のストレージノードを含み、m個のストレージノードは、ストレージノードNd2、Nd1、Nd3及びNd4を含む。メモリNd2-D1はストレージノードNd2に属し、メモリNd3-D1はストレージノードNd3に属し、メモリNd4-D1はストレージノードNd4に属する。この実施例は、主に、検査冗長構成が具体的に2:1であり、すなわち、ストライプが2個のデータストリップと1個のパリティストリップとを含む例を使用することにより説明する。他の検査冗長構成の場合も類推により理解され得る。
【０１５１】
図６を参照すると、図６は、この出願の他の実施例による他のデータアクセス方法の概略フローチャートである。図６に例示するように、この出願の他の実施例において提供される他のデータアクセス方法は以下のステップを含んでもよい。
【０１５２】
601及び602.ステップ601及び602はステップ501及び502と同じである。したがって、関係する説明について、対応するステップ501及び502を参照し、詳細はここでは再び説明しない。
【０１５３】
603.ストレージノードNd1は、データData1の位置情報に基づいて、データData1を書き込むことに関するメモリを決定する。
【０１５４】
例えば、ストレージノードNd1により決定された、データData1を書き込むことに関するメモリは、メモリNd2-D1、メモリNd3-D1及びメモリNd4-D1である。前述の3個のメモリ（Nd2-D1、Nd3-D1及びNd4-D1）は3個のストリップと１対１の対応関係にある。具体的には、例えば、パリティストリップPj1はメモリNd4-D1に対応し、データストリップPd1はメモリNd2-D1に対応し、データストリップPd2はメモリNd3-D1に対応する。
【０１５５】
604.ストレージノードNd1は、ストレージノードNd1によりローカルにキャッシュされた状態情報セットに現在記録されているメモリNd2-D1、メモリNd3-D1及びメモリNd4-D1の状態を決定する。ストレージノードNd1によりローカルにキャッシュされた状態情報セットが、メモリNd3-D1及びNd4-D1がオンライン状態にあり、メモリNd2-D1がオフライン状態にあることを現在記録している場合が、説明のための例として使用される。
【０１５６】
具体的には、ストレージノードNd1と、管理ノードとが接続状態にある場合、ストレージノードNd1は、ストレージノードNd1によりローカルにキャッシュされた状態情報セットに現在記録されているメモリNd2-D1、メモリNd3-D1及びメモリNd4-D1の状態を決定できる。
【０１５７】
605.メモリNd3-D1及びメモリNd4-D1がオンライン状態にあり、メモリNd2-D1がオフライン状態にあると決定されたとき、ストレージノードNd1は、データ書き込み要求Wq1を、メモリNd3-D1が属するストレージノードNd3に送信し、ストレージノードNd1は、データ書き込み要求Wq2を、メモリNd4-D1が属するストレージノードNd4に送信する。
【０１５８】
例えば、データ書き込み要求Wq1は、データストリップPd2と、現在ストレージノードNd1によりローカルにキャッシュされている状態情報セットのバージョン番号とを搬送する。さらに、データ書き込み要求Wq1は、データストリップPd2の長さ（長さは、例えば、110Kbでもよい）、データストリップPd2のファイルオフセットアドレス、データストリップPd2が属するストライプのストライプ識別子、データストリップPd2のストリップ識別子、データストリップPd2が属するファイルのファイル識別子等を更に搬送してもよい。
【０１５９】
他の例では、データ書き込み要求Wq2は、パリティストリップPj1と、現在ストレージノードNd1によりローカルにキャッシュされている状態情報セットのバージョン番号とを搬送してもよい。さらに、データ書き込み要求Wq2は、パリティストリップPj1の長さ、パリティストリップPj1が属するストライプのストライプ識別子、パリティストリップPj1のストリップ識別子等を更に搬送してもよい。
【０１６０】
ストレージノードNd1は、ストレージノードNd1によりキャッシュされた状態情報セットのバージョン番号を、他のストレージノードに送信されるデータ書き込み要求に追加し、それにより、他のストレージノードは、バージョン番号を比較することにより、ストレージノードNd1によりキャッシュされた状態情報セットが有効であるか否かを検証できることが理解され得る。
【０１６１】
606.ストレージノードNd1からデータ書き込み要求Wq1を受信した後に、ストレージノードNd3は、データ書き込み要求Wq1で搬送された状態情報セットのバージョン番号を、ストレージノードNd3により現在キャッシュされている状態情報セットのバージョン番号と比較する。
【０１６２】
データ書き込み要求Wq1で搬送された状態情報セットのバージョン番号が、ストレージノードNd3により現在キャッシュされている状態情報セットのバージョン番号と同じであると比較により決定され、ストレージノードNd3と、管理ノードとが接続状態にある（すなわち、ストレージノードNd3内のセカンダリmonitorが通常通り管理ノード内のプライマリmonitorに接続される）場合、ストレージノードNd3内のセカンダリmonitorは、管理ノード内のプライマリmonitorによりリリースされた最新バージョンの状態情報セットを通常通りタイムリーに受信できると考えられてもよい。したがって、この場合、ストレージノードNd3により現在キャッシュされている状態情報セットは、プライマリmonitorにより維持される最新バージョンの状態情報セットであると考えられてもよい。データ書き込み要求Wq1で搬送された状態情報セットのバージョン番号は、ストレージノードNd3により現在キャッシュされている状態情報セットのバージョン番号と同じであり、すなわち、ストレージノードNd1により現在キャッシュされている状態情報セットもまた、プライマリmonitorにより維持される最新バージョンの状態情報セットである。この場合、ストレージノードNd1により現在キャッシュされている状態情報セットに記録されたメモリNd3-D1の状態（信頼されたアクセス状態）もまた、実際の状況と一致すると想定され、ストレージノードNd3は、データストリップPd2をメモリNd3-D1に書き込む。
【０１６３】
さらに、データ書き込み要求Wq1で搬送された状態情報セットのバージョン番号が、ストレージノードNd3により現在キャッシュされている状態情報セットのバージョン番号と異なると比較により決定された場合、Nd1に記録されたNd3-D1の状態が正確でないと考えられてもよい。言い換えると、Nd1に記録されたNd3-D1の状態は信頼されたアクセス状態であるが、Nd3-D1の実際の状態が信頼されたアクセス状態であることが確保できない。Nd3-D1は信頼されていないアクセス状態にあってもよいため、ストレージノードNd3は、データストリップPd2をメモリNd3-D1に書き込むことを拒否してもよい。
【０１６４】
ストレージノードと、管理ノードとが接続状態にあるとき、ストレージノードによりキャッシュされた状態情報セットが、管理ノードによりリリースされた最新の状態情報セットであるという比較的高い可能性が存在する点に特に留意すべきである。しかし、いくつかの比較的特別な場合、ストレージノードと、管理ノードとが接続状態にあるとしても、ちょうど管理ノードが状態情報セットをリリースした時点でストレージノードが一時的に故障になった場合、或いはちょうど管理ノードが状態情報セットをリリースした時点でストレージノードと管理ノードとの間の通信の品質が極めて悪い場合、ストレージノードが管理ノードによりリリースされた最新の状態情報セットを取得できないことがあり得る。すなわち、ストレージノードと、管理ノードとが接続状態にあるとしても、ストレージノードによりキャッシュされた状態情報セットが、管理ノードによりリリースされた最新の状態情報セットでないという非常に低い可能性が依然として存在する。したがって、ストレージノードと、管理ノードとが接続状態にあるとき、これらのそれぞれ現在キャッシュされている状態情報セットのバージョン番号が更に比較され、バージョン番号が同じである場合、これらのそれぞれ現在キャッシュされている状態情報セットが有効であると考えられてもよい。このやり方は信頼性を更に改善できる。
【０１６５】
さらに、ストレージノードNd3は、データ書き込み要求Wq1に応答するために使用されるデータ書き込み応答Wr1をストレージノードNd1に送信する。データ書き込み応答Wr1は、データストリップPd2に対する書き込み操作の結果を搬送する。具体的には、ストレージノードNd3がデータストリップPd2をメモリNd3-D1に成功して書き込んだとき、書き込み操作の結果は書き込み成功であり、或いはストレージノードNd3がデータストリップPd2をメモリNd3-D1に書き込むのに失敗した（例えば、ストレージノードNd2がデータストリップをメモリNd3-D1に書き込むことを拒否する）とき、書き込み操作の対応する結果は書き込み失敗である。
【０１６６】
607.ストレージノードNd1からデータ書き込み要求Wq2を受信した後に、ストレージノードNd4は、パリティストリップPj1をメモリNd4-D1に書き込むか否かを決定するために、ステップ606と同様に、状態情報セットのバージョン番号の間の比較を行う（違いは、ストレージノードNd3がストレージノードNd4に変わり、データ書き込み要求Wq1がデータ書き込み要求Wq2に変わることにある）。ステップ607の具体的な実行プロセスはここでは再び説明しない。
【０１６７】
ステップ606及びステップ607は、同時に実行されてもよく、或いは１つずつ実行されてもよい。
【０１６８】
608.ストレージノードNd1は、ストレージノードNd3からデータ書き込み応答Wr1を受信し、ストレージノードNd1は、ストレージノードNd4からデータ書き込み応答Wr2を受信する。
【０１６９】
さらに、データ書き込み応答が対応する書き込み失敗を示す場合、ストレージノードNd1は、再書き込みを要求するために、対応するデータ書き込み要求を再送信してもよい。例えば、データ書き込み応答Wr1が対応する書き込み失敗を示す場合、ストレージノードNd1は、データ書き込み要求Wq1をストレージノードNd3に再送信してもよい。
【０１７０】
609.ストレージノードNd2内のメモリNd2-D1はオフライン状態にあり、データストリップPd1はメモリNd2-D1に書き込まれるのに失敗するため、ストレージノードNd1は再構築ログlog1を生成し、ストレージノードNd1は、再構築ログlog1をストリップが成功して書き込まれたストレージノード（例えば、ストレージノードNd3及び／又はストレージノードNd4）に送信する。対応して、ストレージノードNd3及び／又はストレージノードNd4は、再構築ログlog1を受信及び記憶してもよく、再構築ログlog1は、メモリNd2-D1が再びオンラインになった後に、データストリップPd1の以降の再構築に使用される。
【０１７１】
再構築ログlog1は、書き込まれるのに失敗したストリップ（データストリップPd1）のストリップ識別子と、ストリップが書き込まれるのに失敗したメモリ（メモリNd2-D1）のメモリ識別子とを記録する。再構築ログlog1は、書き込まれるのに失敗したストリップ（データストリップPd1）が属するストライプのストライプ識別子等を更に記録してもよい。
【０１７２】
前述の解決策が主に使用されるデータ書き込みシナリオは、ストライプ内のストリップに対応するメモリが同じストレージノードに位置しない可能なシナリオである。この可能なシナリオでは、メモリ状態を記録するために使用される状態情報セットが分散型ストレージシステムに導入され、したがって、状態情報セットは、分散型ストレージシステムにおけるメモリのアクセス状態を記録及び管理するために使用されてもよい。
【０１７３】
具体的には、この実施例は、書き込み対象のデータを書き込むための方法を記載しており、書き込み対象のデータに対応するストライプ内のストリップに対応するメモリは、同じストレージノードに位置しない。ストレージノードNd1と、管理ノードとが接続状態にあり、ストレージノードNd1によりキャッシュされた状態情報セットが、メモリNd3-D1及びNd4-D1がオンラインであることを記録するとき、ストレージノードNd1は、データがメモリNd3-D1及びNd4-1に成功して書き込まれることができると前もって考える。ストレージノードNd1によりキャッシュされた状態情報セットの有効性を検証するために、ストレージノードNd1は、ストレージノードNd1によりキャッシュされた状態情報セットのバージョン番号を、他のストレージノード（ストレージノードNd3及びストレージノードNd4）に送信されるデータ書き込み要求に追加する。他のストレージノードは、データ書き込み要求で搬送された状態情報セットのバージョン番号を、他のストレージノードによりキャッシュされた状態情報セットのバージョン番号と比較する。データ書き込み要求で搬送された状態情報セットのバージョン番号が、他のストレージノードにより現在キャッシュされている状態情報セットのバージョン番号と同じであるとき、ストレージノードNd1によりキャッシュされた状態情報セットが有効であると考えられてもよい。したがって、状態情報セットに記録された関係するメモリの状態は正確であると想定される。この場合、対応するデータ書き込みは通常では成功であり、したがって、データは、関係するメモリに直接書き込まれる。そうでない場合、ストレージノードNd1によりキャッシュされた状態情報セットが無効である可能性があると考えられてもよく、したがって、状態情報セットに記録された関係するメモリの状態は不正確である可能性がある。この場合、対応するデータ書き込みは失敗する可能性が非常に高く、従って、書き込みを拒否することが比較的適切なやり方である。
【０１７４】
この実施例の効果は以下の点で前述の実施例のものと同様である。オフライン状態のメモリについて、関係する再構築ログは、データ書き込みの試みが失敗した後に、従来の方式で関係する再構築ログを生成する必要なく、直接生成でき、それにより、データ書き込み効率を改善し、システム性能を改善するのに役立つ。
【０１７５】
実施例５
添付図面を参照して、以下に、データ再構築方法を説明するための例を更に使用する。データ再構築方法は分散型ストレージシステムに適用される。例えば、分散型ストレージシステムはm個のストレージノードを含んでもよく、m個のストレージノードは、ストレージノードNd1、Nd2、Nd3及びNd4を含む。ストレージノードNd1は、状態情報セットをリリースする管理ノード（すなわち、プライマリmonitorが位置するストレージノード）である。例えば、メモリNd2-D1はストレージノードNd2に属し、メモリNd3-D1はストレージノードNd3に属し、メモリNd4-D1はストレージノードNd4に属する。データ再構築方法は、例えば、図６に例示される解決策の後に実行されてもよい。
【０１７６】
図７−Ａを参照すると、図７−Ａは、この出願の実施例によるデータ再構築方法の概略フローチャートである。図７−Ａに例示するように、この出願の実施例において提供されるデータ再構築方法は以下のステップを含んでもよい。
【０１７７】
701.ストレージノードNd2が、メモリNd2-D1がオンラインになったと決定したとき、ストレージノードNd2は、メモリ状態変化報告P2を管理ノードNd1に送信し、メモリ状態変化報告P2は、メモリNd2-D1の状態がオフライン状態からデータ再構築状態に変化したことを示してもよい。具体的には、例えば、メモリ状態変化報告P2は、メモリ識別子と、メモリNd2-D1の状態識別子とを搬送してもよい（状態識別子はデータ再構築状態の状態識別子であり、すなわち、状態識別子により示される状態はデータ再構築状態である）。
【０１７８】
702.管理ノードNd1は、ストレージノードNd2からメモリ状態変化報告P2を受信し、管理ノードNd1は、キャッシュされた状態情報セットを更新する。具体的には、管理ノードNd1は、管理ノードNd1によりキャッシュされた状態情報セットに記録されたメモリNd2-D1の状態を、メモリ状態変化報告P2により示されるメモリNd2-D1の状態に更新し、状態情報セットに記録されたバージョン番号を更新する。
【０１７９】
例えば、monitorが各ストレージノードに配置されるとき、具体的には、ストレージノードNd2内のセカンダリmonitorは、メモリ状態変化報告P2を管理ノードNd1に送信してもよい。対応して、管理ノードNd1内のプライマリmonitorは、ストレージノードNd2からメモリ状態変化報告P2を受信してもよい。
【０１８０】
例えば、管理ノードNd1により更新されていない状態情報セットが図３−Ｃに例示される。例えば、管理ノードNd1により更新されている状態情報セットが図７−Ｂに例示される。明らかに、実際の用途では、状態情報セットはこのような例示の形式に限定されない。
【０１８１】
703.ストレージノードNd1は、更新された状態情報セットを他のストレージノードに送信する。
【０１８２】
対応して、ストレージノードNd2、Nd3及びNd4は、管理ノードNd1から更新された状態情報セットを別々に受信する。ストレージノードNd2、Nd3及びNd4は、これらの現在キャッシュされている状態情報セットを更新するために、管理ノードNd1からの状態情報セットを使用する。このように、ストレージノード（Nd1、Nd2、Nd3及びNd4）により維持される状態情報セットは、相対的に同期され続けることができる。
【０１８３】
704.ストレージノードNd1は、ストレージノードNd2に対して、メモリNd2-D1のためのデータ再構築を実行するように命令する。
【０１８４】
管理ノードNd1は、更新された状態情報セットを送信することにより、ストレージノードNd2に対して、メモリNd2-D1のためのデータ再構築を実行するように命令してもよく、代替として、管理ノードNd1は、他のメッセージ（例えば、データ再構築通知メッセージ）を使用することにより、ストレージノードNd2に対して、メモリNd2-D1のためのデータ再構築を実行するように命令してもよい。
【０１８５】
705.ストレージノードNd2が管理ノードNd1からメモリNd2-D1のためのデータ再構築の通知を受信した後に、ストレージノードNd2は、ストレージノードNd3及び／又はストレージノードNd4から、メモリNd2-D1のオフライン期間中に生成された関係する再構築ログを収集する。
【０１８６】
706.ストレージノードNd2は、メモリNd2-D1のオフライン期間中に生成された、収集された関係する再構築ログに基づいて、データを再構築する。
【０１８７】
具体的には、例えば、ストレージノードNd2は、メモリNd2-D1のオフライン期間中に生成された再構築ログlog1を収集する。再構築ログlog1は、メモリNd2-D1のオフライン期間中に書き込まれるのに失敗したストリップ（データストリップPd1）のストリップ識別子と、ストリップがメモリNd2-D1のオフライン期間中に書き込まれるのに失敗したメモリ（メモリNd2-D1）のメモリ識別子とを記録する。さらに、再構築ログlog1は、書き込まれるのに失敗したストリップ（データストリップPd1）が属するストライプのストライプ識別子等を記録してもよい。
【０１８８】
ストレージノードNd2は、データストリップPd1が属するストライプのストライプ識別子に基づいて、データストリップPd1が属するストライプを決定し、データストリップPd1が属するストライプの他のストリップ（データストリップPd2及びパリティストリップPj1）を取得してもよい。ストレージノードNd2は、データストリップPd1を再構築するために、データストリップPd2及びパリティストリップPj1に基づいて冗長検査演算を実行する。ストレージノードNd2は、再構築されたデータストリップPd1をメモリNd2-D1に書き込む。
【０１８９】
ストレージノードNd2がメモリNd2-D1のオフライン期間中に生成された複数の関係する再構築ログを収集したとき、ストレージノードNd2は、まず、複数の収集された再構築ログに対して重複排除を実行し、次に、重複排除の後に取得された各再構築ログに基づいてデータ再構築を別々に実行してもよいことが理解され得る。再構築ログに基づいてデータ再構築を実行する方式は、前述の例に記載のものと同じでもよい。
【０１９０】
707.メモリNd2-D1のためのデータ再構築が完了した後に、ストレージノードNd2は、メモリNd2-D1の状態を信頼されたアクセス状態に設定する。さらに、ストレージノードNd2は、メモリ状態変化報告P3を管理ノードNd1に送信してもよく、メモリ状態変化報告P3は、メモリNd2-D1の状態がデータ再構築状態から信頼されたアクセス状態に変化したことを示してもよい。
【０１９１】
708.管理ノードNd1は、ストレージノードNd2からメモリ状態変化報告P3を受信し、管理ノードNd1は、キャッシュされた状態情報セットを更新する。具体的には、ストレージノードNd1は、ストレージノードNd1によりキャッシュされた状態情報セットに記録されたメモリNd2-D1の状態を、メモリ状態変化報告P3により示されるメモリNd2-D1の状態に更新し、状態情報セットに記録されたバージョン番号を更新する。
【０１９２】
例えば、monitorが各ストレージノードに配置されるとき、具体的には、ストレージノードNd2内のセカンダリmonitorは、メモリ状態変化報告P3を管理ノードNd1に送信してもよい。対応して、管理ノードNd1内のプライマリmonitorは、ストレージノードNd2からメモリ状態変化報告P3を受信してもよい。
【０１９３】
例えば、管理ノードNd1により更新されていない状態情報セットが図７−Ｂに例示される。例えば、管理ノードNd1により更新されている状態情報セットが図７−Ｃに例示される。明らかに、実際の用途では、状態情報セットはこのような例示の形式に限定されない。
【０１９４】
709.管理ノードNd1は、更新された状態情報セットを他のストレージノード（例えば、Nd2、Nd3及びNd4）に送信する。
【０１９５】
対応して、ストレージノードNd2、Nd3及びNd4は、ストレージノードNd1から更新された状態情報セットを別々に受信してもよい。ストレージノードNd2、Nd3及びNd4は、これらの現在キャッシュされている状態情報セットを更新するために、管理ノードNd1からの状態情報セットを別々に使用してもよい。このように、ストレージノード（Nd1、Nd2、Nd3及びNd4）によりキャッシュされた状態情報セットは、できるだけ相対的に同期され続けることができる。
【０１９６】
前述の解決策は、オフラインのメモリが再びオンラインになった後のデータ再構築シナリオに主に使用され、前述の解決策は、このような可能なシナリオにおいて可能なデータ再構築機構を提供する。元々オフラインであるメモリが再びオンラインになった後に、メモリのストレージノードは管理ノードに通知する。管理ノードは、管理ノードに記録されたメモリの状態を「データ再構築状態」に更新し、次に、管理ノードは、メモリの状態が「データ再構築状態」に更新されていることを他のストレージノードに通知するために、最新の状態情報セットを他のストレージノードにリリースする。以降、関係するストレージノードは、以前にメモリに書き込まれるのに失敗したストリップを再構築する。再構築が完了した後に、再びオンラインになったメモリが位置するストレージノードは、再びオンラインになったメモリの状態を「信頼されたアクセス状態」に更新し、管理ノードに対して、再びオンラインになったメモリの状態を「信頼されたアクセス状態」に更新するように命令する。以降、管理ノードは、再びオンラインになったメモリの状態が「信頼されたアクセス状態」に更新されていることを残りのストレージノードに通知するために、最新の状態情報セットを他のストレージノードに再びリリースする。
【０１９７】
この実施例では、メモリ状態を記録するために使用される状態情報セットが導入され、したがって、状態情報セットは、分散型ストレージシステムにおけるメモリのアクセス状態を記録及び管理するために使用されてもよい。これは、分散型ストレージシステムにおけるストレージノードがメモリの状態切り替え（「オフライン状態」から「データ再構築状態」へ、且つ、その後の「データ再構築状態」から「信頼されたアクセス状態」への切り替え）を比較的正確に習得するのに役立ち、読み取り／書き込みの試みの失敗の可能性を低減するのに役立ち、システム性能を改善するのに役立つ。
【０１９８】
実施例６
関係する添付図面を参照して、以下に、他のデータアクセス方法を説明するための例を更に使用する。これは、端末が分散型ストレージシステムからデータを読み取る可能なシナリオに主に使用される。データアクセス方法は分散型ストレージシステムに適用される。例えば、分散型ストレージシステムはm個のストレージノードを含み、m個のストレージノードは、ストレージノードNd2、Nd1、Nd3及びNd4を含む。メモリNd2-D1はストレージノードNd2に属し、メモリNd3-D1はストレージノードNd3に属し、メモリNd4-D1はストレージノードNd4に属する。この実施例は、データボディのフォーマットがファイルである例を使用することにより説明する。
【０１９９】
図８を参照すると、図８は、この出願の実施例によるデータアクセス方法の概略フローチャートである。図８に示すように、この出願の実施例において提供されるデータアクセス方法は以下のステップを含んでもよい。
【０２００】
801.端末が分散型ストレージシステムからデータを読み取る必要があるとき、端末は、データ読み取り要求を分散型ストレージシステムに送信する。以下の説明の便宜上のため、この実施例ではデータ読み取り要求はRq1という名で呼ばれる。このステップでは、例えば、分散型ストレージシステムにおけるストレージノードNd1は端末からデータ読み取り要求Rq1を受信する。
【０２０１】
例えば、データ読み取り要求Rq1は、データData2（データData2は読み取り対象のデータである）が属するファイルのファイル識別子と、データData2の位置情報とを搬送する。データData2の位置情報は、データData2が属するファイル内のデータData2の位置を記述するために使用される。データData2の位置情報は、例えば、データData2のファイルオフセットアドレス（データData2のファイルオフセットアドレスはファイル内のデータData2の開始位置又は終了位置を示す）、データData2の長さ等を含んでもよい。
【０２０２】
802.ストレージノードNd1は、データData2の位置情報に基づいて、データData2が位置するメモリを決定する。
【０２０３】
例えば、ストレージノードNd1は、データData2が位置するメモリがメモリNd2-D1であると決定する。例えば、Data2が属するファイルは、記憶中に複数のデータストリップ（及びパリティストリップ）に分割され、データストリップのうち１つがメモリNd2-D1に記憶され、データData2はこのストリップの一部分である。
【０２０４】
803.ストレージノードNd1は、ストレージノードNd1によりローカルにキャッシュされた状態情報セットに現在記録されているメモリNd2-D1の状態を決定する。この実施例では、ストレージノードNd1と、管理ノードとは接続状態にあってもよく、或いは接続状態になくてもよい。
【０２０５】
例えば、ストレージノードNd1により現在キャッシュされている状態情報セットが、メモリNd2-D1が信頼されたアクセス状態にあることを記録するとき、ステップ804が実行され、或いはストレージノードNd1により現在維持されている状態情報セットが、メモリNd2-D1がデータ再構築状態又はオフライン状態にあることを記録するとき、ステップ807が実行される。
【０２０６】
804.メモリNd2-D1が信頼されたアクセス状態にあると決定された場合、ストレージノードNd1は、更新されたデータ読み取り要求Rq1を取得するために、現在ストレージノードNd1にローカルにキャッシュされている状態情報セットのバージョン番号をデータ読み取り要求Rq1に追加してもよく、ストレージノードNd1は、更新されたデータ読み取り要求Rq1を、メモリNd2-D1が属するストレージノードNd2に送信する。
【０２０７】
すなわち、更新されたデータ読み取り要求Rq1は、現在ストレージノードNd1によりローカルにキャッシュされている状態情報セットのバージョン番号を搬送してもよい。さらに、データ読み取り要求Rq1は、データData2の位置情報、データストリップPd2が属するファイルのファイル識別子等を更に搬送してもよい。
【０２０８】
ストレージノードNd1は、主に、他のストレージノードがバージョン番号を比較することにより、ストレージノードNd1によりキャッシュされた状態情報セットが有効であるか否かを検証するのに役立てるために、ストレージノードNd1によりキャッシュされた状態情報セットのバージョン番号を、他のストレージノードに送信されるデータ読み取り要求に追加することが理解され得る。
【０２０９】
805.ストレージノードNd1からデータ読み取り要求Rq1を受信した後に、ストレージノードNd2は、データ読み取り要求Rq1で搬送された状態情報セットのバージョン番号を、ストレージノードNd2により現在維持されている状態情報セットのバージョン番号と比較してもよい。
【０２１０】
データ読み取り要求Rq1で搬送された状態情報セットのバージョン番号が、ストレージノードNd2により現在キャッシュされている状態情報セットのバージョン番号と同じであると比較により決定され、ストレージノードNd2と、管理ノードとが接続状態にある場合（すなわち、ストレージノードNd2内のセカンダリmonitorが通常通り管理ノード内のプライマリmonitorに接続され、この場合、ストレージノードNd2により現在キャッシュされている状態情報セットがプライマリmonitorにより維持される最新バージョンの状態情報セットであるという極めて高い可能性が存在すると考えられてもよい）、ストレージノードNd2は、メモリNd2-D1からデータData2を読み取ってもよい。代替として、データ読み取り要求Rq1で搬送された状態情報セットのバージョン番号が、ストレージノードNd2により現在キャッシュされている状態情報セットのバージョン番号とは異なると比較により決定された場合、ストレージノードNd2は、メモリNd2-D1からデータを読み取ることを拒否してもよい。代替として、ストレージノードNd2と、管理ノードとが接続状態にない場合（すなわち、セカンダリノードNd2内のセカンダリmonitorが通常通り管理ノード内のプライマリmonitorに接続されず、この場合、ストレージノードNd2により現在キャッシュされている状態情報セットがプライマリmonitorにより維持される最新バージョンの状態情報セットである可能性があり、或いはプライマリmonitorにより維持される最新バージョンの状態情報セットでない可能性があると考えられてもよい）、ストレージノードNd2は、メモリNd2-D1からデータを読み取ることを拒否してもよい。明らかに、比較的低い検証レベルのいくつかのシナリオでは、ストレージノードNd2と、管理ノードとが接続状態にあるか否かに拘わらず、データ要求Rq1で搬送された状態情報セットのバージョン番号が、ストレージノードNd2により現在キャッシュされている状態情報セットのバージョン番号と同じであるという条件で、ストレージノードNd2がメモリNd2-D1からデータData2を読み取ることができることも可能である。
【０２１１】
ストレージノードNd2がメモリNd2-D1からデータData2を成功して読み取ったとき、ストレージノードNd2は、データ読み取り要求Rq1に応答するために使用されるデータ読み取り応答Rr1をストレージノードNd1に送信し、データ読み取り応答Rr1は読み取られたデータData2を搬送する。ストレージノードNd2がメモリNd2-D1からデータData2を読み取るのに失敗した（例えば、ストレージノードNd2がメモリNd2-D1からデータを読み取ることを拒否する）とき、データ読み取り応答Rr1は読み取り操作の結果を搬送してもよい（読み取り操作の結果は読み取り失敗である）。
【０２１２】
806.ストレージノードNd1は、ストレージノードNd2からデータ読み取り応答Rr1を受信し、ストレージノードNd2がデータData2を成功して読み取った場合、ストレージノードNd1は、データ読み取り応答Rr1からデータData2を取得してもよい。
【０２１３】
ストレージノードNd1は、データ読み取り要求Rq1に応答するために使用されるデータ読み取り応答Rr1を端末に送信し、データ読み取り応答Rr1はデータData2を搬送する。次に、この手順が終了する。
【０２１４】
807.メモリNd2-D1が信頼されていないアクセス状態にあると決定された場合、ストレージノードNd1は、データData2が属するデータストリップPd1を決定し、ストレージノードNd1は、データストリップPd1が属するストライプを決定し、ストライプは、データストリップPd1とデータストリップPd2とパリティストリップPj1とを含む。ストレージノードNd1は、データストリップPd2及びパリティストリップPj1が位置するメモリを決定する。
【０２１５】
例えば、データストリップPd2が位置するメモリはメモリNd3-D1として記され、メモリNd3-D1が属するストレージノードはストレージノードNd3として記される。例えば、パリティストリップPj1が位置するメモリはメモリNd4-D1として記され、メモリNd4-D1が属するストレージノードはストレージノードNd4として記される。
【０２１６】
このステップでは、読み取り対象のデータData2が属するストリップが位置するメモリは信頼されていないアクセス状態にある。したがって、このステップでは、読み取り要求を受信したストレージノードNd1は、ストライプの残りのストリップが位置するメモリを決定し、それにより、以降、検査アルゴリズムを使用することにより、Data2が位置するストリップを回復するために残りのストリップを使用し、Data2を取得する。
【０２１７】
808.ストレージノードNd1は、データ読み取り要求Rq3を、メモリNd3-D1が属するストレージノードNd3に送信し、ストレージノードNd1は、データ読み取り要求Rq4を、メモリNd4-D1が属するストレージノードNd4に送信する。
【０２１８】
例えば、データ読み取り要求Rq3は、データストリップPd2のストリップ識別子と、ストレージノードNd1により現在キャッシュされている状態情報セットのバージョン番号とを搬送する。さらに、データ読み取り要求Rq3は、データストリップPd2の長さ（長さは、例えば、110Kb又は他の長さである）と、データストリップPd2のファイルオフセットアドレスと、データストリップPd2が属するストライプのストライプ識別子と、データストリップPd2が属するファイルのファイル識別子とを更に搬送してもよく、データストリップPd2が属するファイルセグメントのセグメント識別子ですら更に搬送してもよい。
【０２１９】
例えば、データ読み取り要求Rq4は、パリティストリップPj1のストリップ識別子と、現在ストレージノードNd1によりローカルにキャッシュされている状態情報セットのバージョン番号とを搬送する。さらに、データ読み取り要求Rq4は、パリティストリップPj1の長さ、パリティストリップPj1が属するストライプのストライプ識別子等を更に搬送してもよい。
【０２２０】
809.ストレージノードNd1からデータ読み取り要求Rq3を受信した後に、ストレージノードNd3は、データ読み取り要求Rq3で搬送された状態情報セットのバージョン番号を、ストレージノードNd3により現在キャッシュされている状態情報セットのバージョン番号と比較する。データ読み取り要求Rq3で搬送された状態情報セットのバージョン番号が、ストレージノードNd3により現在キャッシュされている状態情報セットのバージョン番号と同じであると比較により決定され、ストレージノードNd3と、管理ノードとが接続状態にある場合（すなわち、ストレージノードNd3内のセカンダリmonitorが通常通り管理ノード内のプライマリmonitorに接続され、この場合、ストレージノードNd3により現在キャッシュされている状態情報セットが、プライマリmonitorにより維持される最新バージョンの状態情報セットであると考えられてもよく、データ読み取り要求Rq3で搬送された状態情報セットのバージョン番号は、ストレージノードNd3により現在キャッシュされている状態情報セットのバージョン番号と同じであり、すなわち、ストレージノードNd1により現在キャッシュされている状態情報セットもまた、プライマリmonitorにより維持される最新バージョンの状態情報セットであり、この場合、ストレージノードNd1により現在キャッシュされている状態情報セットに記録されたメモリNd3-D1の状態（信頼されたアクセス状態）も正確である）、ストレージノードNd3は、メモリNd3-D1からデータストリップPd2を読み取る。代替として、データ読み取り要求Rq3で搬送された状態情報セットのバージョン番号が、ストレージノードNd3により現在維持されている状態情報セットのバージョン番号とは異なると比較により決定された場合、ストレージノードNd3は、メモリNd3-D1からデータストリップPd2を読み取ることを拒否してもよい。
【０２２１】
さらに、ストレージノードNd3は、データ読み取り要求Rq3に応答するために使用されるデータ読み取り応答Rr3をストレージノードNd1に送信する。データ読み取り応答Rr3は、データストリップPd2に対する読み取り操作の結果を搬送する。具体的には、ストレージノードNd3がメモリNd3-D1からデータストリップPd2を成功して読み取ったとき、データ読み取り応答Rr3で搬送される読み取り操作の結果は読み取り成功であり、データ読み取り応答Rr3はデータストリップPd2を搬送する。ストレージノードNd3がメモリNd3-D1からデータストリップPd2を読み取るのに失敗した（例えば、ストレージノードNd3がメモリNd3-D1からデータストリップPd2を読み取ることを拒否する）とき、データ読み取り応答Rr3で搬送される読み取り操作の結果は読み取り失敗である。
【０２２２】
810.ストレージノードNd1からデータ読み取り要求Rq4を受信した後に、ストレージノードNd4は、ストレージノードNd3により実行されるものと同様の操作（例えば、状態情報セットのバージョンを比較し、データ読み取り応答Rr4をストレージノードNd1に送信する）を実行する。このステップについてステップ809に対して参照が行われてもよく、したがって、詳細はここでは説明しない。
【０２２３】
811.ストレージノードNd1は、ストレージノードNd3からデータ読み取り応答Rr3を受信し、ストレージノードNd1は、ストレージノードNd4からデータ読み取り応答Rr4を受信する。
【０２２４】
さらに、データ読み取り応答が対応する読み取り失敗を示す場合、ストレージノードNd1は、再読み取りを要求するために、対応するデータ読み取り要求を再送信してもよい。例えば、データ読み取り応答Rr3が対応する読み取り失敗を示す場合、ストレージノードNd1は、データストリップPd2を読み取ることを再び要求するために、データ読み取り要求をストレージノードNd3に再送信してもよい。他の例では、データ読み取り応答Rr4が対応する読み取り操作失敗を示す場合、ストレージノードNd1は、パリティストリップPj1を読み取ることを再び要求するために、データ読み取り要求Rq4を再送信してもよく、以下同様である。
【０２２５】
812.ストレージノードNd1がデータストリップPd2及びパリティストリップPj1を取得したとき、ストレージノードNd1は、データストリップPd1を取得してデータストリップPd1からデータData2を取得するために、データストリップPd2及びパリティストリップPj1を使用することにより、検査演算を実行する。ストレージノードNd1は、データ読み取り要求Rq1に応答するために使用されるデータ読み取り応答Rr1を端末に送信し、データ読み取り応答Rr1はデータData2を搬送する。
【０２２６】
ストレージノードNd1がストレージノードNd2からのデータ読み取り応答Rr1からデータData2を取得したとき、ストレージノードNd1は、データ読み取り要求Rq1に応答するために使用されるデータ読み取り応答Rr1を端末に送信し、データ読み取り応答Rr1はデータData2を搬送する。
【０２２７】
前述の解決策では、メモリ状態を記録するために使用される状態情報セットが分散型ストレージシステムに導入され、したがって、状態情報セットは、分散型ストレージシステムにおけるメモリのアクセス状態を記録及び管理するために使用されてもよいことが習得できる。具体的には、機構は以下のように導入される。データ読み取り要求を受信したストレージノードは、データ読み取り要求で搬送された状態情報セットのバージョン番号と、ストレージノードにより現在キャッシュされている状態情報セットのバージョン番号との間の比較の結果に基づいて、対応するデータ読み取り判断を行う。バージョン番号比較は、使用される状態情報セットの有効性をより良く決定するのに役立つ。検証を用いて信頼されたアクセス状態にあると見出されたメモリについて、要求されたデータはメモリから直接読み取られ、端末にフィードバックできる。このような信頼されたアクセスの場合、関係するストライプの全てのストリップを読み取り、次に、正確性検査を実行する従来の方式における複雑なステップは必要なく、データ読み取り量が低減され、それにより、メモリ負荷を低減するのに役立ち、さらに、システム性能を改善するのに役立つ。
【０２２８】
この実施例は、読み取り対象のデータを読み取るための方法を記載しており、読み取り対象のデータは、ストリップの一部分又は全体のストリップである。ストリップが位置するストレージノードが信頼されている場合、読み取り対象のデータは、要求を送信したデバイス（端末又はホスト）に直接返信される。ストリップが位置するストレージノードが信頼されていない（再構築状態又はオフライン状態にある）場合、検査演算は、読み取り対象のデータが属するストライプの他のストリップ（読み取り対象のデータが属するストリップ以外のストリップ）を使用することにより実行され、それにより、読み取り対象のデータが属するストリップを取得し、ストリップから読み取り対象のデータを取得する。
【０２２９】
ストレージノードNd1は、主に、他のストレージノードがバージョン番号を比較することにより、ストレージノードNd1によりキャッシュされた状態情報セットが有効であるか否かを検証するのに役立てるために、ストレージノードNd1によりキャッシュされた状態情報セットのバージョン番号を、他のストレージノードに送信されるデータ読み取り要求に追加する。ストレージノードNd2が通常通り管理ノードに接続されるとき、この場合、データ要求Rq1で搬送された状態情報セットのバージョン番号が、ストレージノードNd2により現在キャッシュされている状態情報セットのバージョン番号と同じである場合、ストレージノードNd1及びNd2が同じ最新の状態情報セットをキャッシュすると考えられてもよく、ストレージノードNd2はメモリNd2-D1からデータData2を読み取ることができる。代替として、ストレージノードNd2が通常通り管理ノードに接続されていないとき、この場合、ストレージノードNd2により現在キャッシュされている状態情報セットは、管理ノードによりリリースされた最新バージョンの状態情報セットである可能性があるか、或いは管理ノードによりリリースされた最新バージョンの状態情報セットでない可能性があると考えられてもよい。ストレージノードNd2により現在キャッシュされている状態情報セットの有効性を決定することは困難であり、したがって、ストレージノードNd2は、メモリNd2-D1からデータData2を読み取ることを拒否してもよい。明らかに、比較的低い検証レベルのいくつかのシナリオでは、ストレージノードNd2と、管理ノードとが接続状態にあるか否かに拘わらず、データ要求Rq1で搬送された状態情報セットのバージョン番号が、ストレージノードNd2により現在キャッシュされている状態情報セットのバージョン番号と同じであるという条件で（２つのバージョン番号が同じであるとき、ストレージノードNd1によりキャッシュされた状態情報セットが有効であるという比較的高い可能性が存在する）、ストレージノードNd2がメモリNd2-D1からデータData2を読み取ることができることも可能である。状態情報セットの有効性を検証するためのいくつかの機構が導入され、したがって、これは、使用される状態情報セットの有効性をより良く決定するのに役立つ。
【０２３０】
実施例７
添付図面を参照して、以下に、他のデータアクセス方法を更に説明する。データアクセス方法は分散型ストレージシステムに適用される。例えば、分散型ストレージシステムはm個のストレージノードを含み、m個のストレージノードは、ストレージノードNd1、Nd2、Nd3及びNd4を含む。メモリNd2-D1はストレージノードNd2に属する。この実施例は、データボディがファイルである例を使用することにより説明する。
【０２３１】
図９を参照すると、図９は、この出願の他の実施例による他のデータアクセス方法の概略フローチャートである。図９に示すように、この出願の他の実施例において提供される他のデータアクセス方法は以下のステップを含んでもよい。
【０２３２】
901.端末が分散型ストレージシステムからデータを読み取る必要があるとき、端末は、データ読み取り要求を分散型ストレージシステムに送信する。以下の説明の便宜上のため、この実施例ではデータ読み取り要求はRq1という名で呼ばれる。このステップでは、例えば、分散型ストレージシステムにおけるストレージノードNd2は端末からデータ読み取り要求Rq1を受信する。
【０２３３】
例えば、ステップ901においてデータ読み取り要求Rq1で搬送される関係する情報は、ステップ801においてデータ読み取り要求Rq1で搬送される関係する情報と同じである。
【０２３４】
902.ストレージノードNd2は、データData2の位置情報に基づいて、データData2が位置するメモリを決定する。位置情報に従って、データが位置するメモリを決定する解決策は、他の実施例において既に説明しており、したがって、ここでは再び説明しない。
【０２３５】
例えば、ストレージノードNd2は、データData2が位置するメモリがメモリNd2-D1であると決定する。
【０２３６】
903.ストレージノードNd2は、ストレージノードNd2によりローカルにキャッシュされた状態情報セットに記録されたメモリNd2-D1の状態を決定する。
【０２３７】
例えば、ストレージノードNd2により現在キャッシュされている状態情報セットは、メモリNd2-D1が信頼されたアクセス状態にあることを記録し、ストレージノードNd2と、管理ノードとが接続状態にある（すなわち、ストレージノードNd2内のセカンダリmonitorが通常通り管理ノード内のプライマリmonitorに接続され、この場合、ストレージノードNd2により現在キャッシュされている状態情報セットがプライマリmonitorによりリリースされた最新バージョンの状態情報セットであると考えられてもよい）。
【０２３８】
904.メモリNd2-D1が信頼されたアクセス状態にあると決定された場合、ストレージノードNd2は、メモリNd2-D1からデータData2を読み取ってもよく、ストレージノードNd2は、データ読み取り要求Rq1に応答するために使用されるデータ読み取り応答Rr1を端末に送信し、データ読み取り応答Rr1はデータData2を搬送する。
【０２３９】
代替として、メモリNd2-D1が信頼されていないアクセス状態にあると決定されたとき、図８に例示されるシナリオにおける実現方式に参照が行われてもよく、データData2が属するストライプの他のストリップを収集し、他のストリップを使用することによりData2を取得する。具体的な実現方式についての詳細はここでは再び説明しない。
【０２４０】
前述の解決策では、メモリ状態を記録するために使用される状態情報セットが分散型ストレージシステムに導入され、したがって、状態情報セットは、分散型ストレージシステムにおけるメモリのアクセス状態を記録及び管理するために使用されてもよいことが習得できる。具体的には、機構は以下のように導入される。データ読み取り要求を受信したストレージノードは、ストレージノードによりキャッシュされた状態情報セットに記録された関係するメモリの状態と、ストレージノードと状態情報セットをリリースする管理ノードとの間の接続の状態とに基づいて、対応するデータ読み取り判断を行う。これは、使用される状態情報セットの有効性をより良く決定するのに役立つ。検証を用いて信頼されたアクセス状態にあると見出されたメモリについて、要求されたデータはメモリから直接読み取られ、端末にフィードバックできる。このような信頼されたアクセスの場合、関係するストライプの全てのストリップを読み取り、次に、正確性検査を実行する従来の方式における複雑なステップは必要なく、データ読み取り量が低減され、それにより、メモリ負荷を低減するのに役立ち、さらに、システム性能を改善するのに役立つ。
【０２４１】
この解決策では、読み取り対象のデータ（データData2）が、端末／ホストからデータ読み取り要求を受信したストレージノード（Nd2）のメモリ（ND2-D1）に位置し、ストレージノード（Nd2）と、管理ノードとが接続状態にある場合、ストレージノード（Nd2）によりローカルにキャッシュされた状態情報セットに記録されたメモリ状態が比較的信頼性が高いと考えられてもよい。状態情報セットが、メモリ（Nd2-D1）が信頼されたアクセス状態にあることを記録するとき、読み取り対象のデータ（データData2）はメモリから直接読み取られ、次に、端末／ホストに返信できる。
【０２４２】
実施例８
添付図面を参照して、以下に、他のデータアクセス方法を更に説明する。データアクセス方法は分散型ストレージシステムに適用される。例えば、分散型ストレージシステムはm個のストレージノードを含み、m個のストレージノードは、ストレージノードNd2、Nd1、Nd3及びNd4を含む。メモリNd2-D1はストレージノードNd2に属し、メモリNd3-D1はストレージノードNd3に属し、メモリNd4-D1はストレージノードNd4に属する。この実施例は、データボディがファイルである例を使用することにより説明する。
【０２４３】
図１０を参照すると、図１０は、この出願の他の実施例による他のデータアクセス方法の概略フローチャートである。図１０に示すように、この出願の他の実施例において提供される他のデータアクセス方法は以下のステップを含んでもよい。
【０２４４】
1001及び1002.ステップ1001及び1002はステップ801及び802と同じである。したがって、関係する説明について、対応するステップ801及び802を参照し、詳細はここでは再び説明しない。
【０２４５】
1003.ストレージノードNd1と、管理ノードとが接続状態にあるとき、ストレージノードNd1は、ストレージノードNd1によりローカルにキャッシュされた状態情報セットに記録されたメモリNd2-D1の状態を決定する。
【０２４６】
例えば、ストレージノードNd1により現在キャッシュされている状態情報セットが、メモリNd2-D1が信頼されたアクセス状態にあることを記録するとき、ステップ1004が実行され、或いはストレージノードNd1により現在維持されている状態情報セットが、メモリNd2-D1がデータ再構築状態又はオフライン状態にあることを記録するとき、ステップ1007が実行される。
【０２４７】
ストレージノードNd1と、管理ノードとが接続状態にないとき、ストレージノードNd1は、データ読み取り要求Rq1を管理ノードに転送してもよく、或いはデータ読み取り要求Rq1を、管理ノードに接続されている状態にある他のストレージノードに転送してもよく、Rq1を受信した他のストレージノードは、他のストレージノードによりローカルにキャッシュされた状態情報セットに記録されたメモリNd2-D1の状態を決定し、メモリNd2-D1の状態に従って以降の関係する操作を実行する。以降の操作についての詳細について、この実施例におけるステップ1003及び1011を参照する。この実施例では、ストレージノードNd1と、管理ノードとが接続状態にある場合が、説明のための例として使用される。
【０２４８】
1004.メモリNd2-D1が信頼されたアクセス状態にあると決定された場合、ストレージノードNd1は、データ読み取り要求Rq1を、メモリNd2-D1が属するストレージノードNd2に送信する。
【０２４９】
1005.ストレージノードNd2がストレージノードNd1からデータ読み取り要求Rq1を受信した後に、ストレージノードNd2は、メモリNd2-D1からデータData2を読み取ってもよい。ストレージノードNd2は、データ読み取り要求Rq1に応答するために使用されるデータ読み取り応答Rr1をストレージノードNd1に更に送信し、データ読み取り応答Rr1は読み取られたデータData2を搬送する。
【０２５０】
1006.ストレージノードNd1は、ストレージノードNd2からデータ読み取り応答Rr1を受信し、ストレージノードNd2がデータData2を成功して読み取った場合、ストレージノードNd1は、データ読み取り応答Rr1からデータData2を取得してもよい。このステップが実行された後に、手順が終了し、以下のステップ1007及び他のステップはもはや実行されない。
【０２５１】
1007.メモリNd2-D1が信頼されていないアクセス状態にあると決定された場合、ストレージノードNd1は、データData1が属するデータストリップPd1を決定し、ストレージノードNd1は、データストリップPd1が属するストライプを決定し、ストライプは、データストリップPd1とデータストリップPd2とパリティストリップPj1とを含む。ストレージノードNd1は、データストリップPd2及びパリティストリップPj1が位置するメモリを決定する。
【０２５２】
例えば、データストリップPd2が位置するメモリはメモリNd3-D1として記され、メモリNd3-D1が属するストレージノードはストレージノードNd3として記される。例えば、パリティストリップPj1が位置するメモリはメモリNd4-D1として記され、メモリNd4-D1が属するストレージノードはストレージノードNd4として記される。ストレージノードNd1は、ストレージノードNd1によりローカルにキャッシュされた状態情報セットに記録されたメモリNd3-D1及びNd4-D1の状態を決定する。
【０２５３】
ストレージノードNd1により現在キャッシュされている状態情報セットが、メモリNd3-D1及びNd4-D1が信頼されたアクセス状態にあることを記録することが、以下の説明のための例として使用される。ストレージノードNd1により現在維持されている状態情報セットが、メモリNd3-D1及びNd4-D1が信頼されていないアクセス状態にあることを記録するとき、データ読み取り失敗が直接フィードバックされてもよく、或いは現在キャッシュされている状態情報セットに記録されたメモリNd1-D1、Nd3-D1及びNd4-D1の状態が指定の持続時間の後に再び検査されることを示す。
【０２５４】
1008.ストレージノードNd1は、データ読み取り要求Rq3を、メモリNd3-D1が属するストレージノードNd3に送信し、ストレージノードNd1は、データ読み取り要求Rq4を、メモリNd4-D1が属するストレージノードRq4に送信する。
【０２５５】
例えば、データ読み取り要求Rq3は、データストリップPd2のストリップ識別子を搬送する。データ読み取り要求Rq3は、データストリップPd2の長さ（例えば、110Kb）と、データストリップPd2のファイルオフセットアドレスと、データストリップPd2が属するストライプのストライプ識別子と、データストリップPd2が属するファイルのファイル識別子とを更に搬送してもよく、データストリップPd2が属するファイルセグメントのセグメント識別子ですら更に搬送してもよい。
【０２５６】
例えば、データ読み取り要求Rq4は、パリティストリップPj1のストリップ識別子を搬送する。さらに、データ読み取り要求Rq4は、パリティストリップPj1の長さ、パリティストリップPj1が属するストライプのストライプ識別子等を更に搬送してもよい。
【０２５７】
1009.ストレージノードNd3がストレージノードNd1からデータ読み取り要求Rq3を受信した後に、ストレージノードNd3は、メモリNd3-D1からデータストリップPd2を読み取る。
【０２５８】
さらに、ストレージノードNd3は、データ読み取り要求Rq3に応答するために使用されるデータ読み取り応答Rr3をストレージノードNd1に送信する。データ読み取り応答Rr3は、データストリップPd2に対する読み取り操作の結果を搬送する。具体的には、ストレージノードNd3がメモリNd3-D1からデータストリップPd2を成功して読み取ったとき、データ読み取り応答Rr3で搬送される読み取り操作の結果は読み取り成功であり、データ読み取り応答Rr3はデータストリップPd2を搬送する。ストレージノードNd3がメモリNd3-D1からデータストリップPd2を読み取るのに失敗したとき、データ読み取り応答Rr3で搬送される読み取り操作の結果は読み取り失敗である。
【０２５９】
1010.ストレージノードNd4がストレージノードNd1からデータ読み取り要求Rq4を受信した後に、ストレージノードNd4は、メモリNd4-D1からパリティストリップPj1を読み取る。
【０２６０】
さらに、ストレージノードNd4は、データ読み取り要求Rq4に応答するために使用されるデータ読み取り応答Rr4をストレージノードNd1に送信する。データ読み取り応答Rr4は、パリティストリップPj1に対する読み取り操作の結果を搬送する。具体的には、ストレージノードNd4がメモリNd4-D1からパリティストリップPj1を成功して読み取ったとき、データ読み取り応答Rr4で搬送される読み取り操作の結果は読み取り成功であり、データ読み取り応答Rr4はパリティストリップPj1を搬送する。ストレージノードNd4がメモリNd4-D1からパリティストリップPj1を読み取るのに失敗したとき、データ読み取り応答Rr4で搬送される読み取り操作の結果は読み取り失敗である。
【０２６１】
1011.ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、ストレージノード、及び1012。ステップ1011及び1012はステップ811及び812と同じである。
【０２６２】
この実施例では、ストレージノード（Nd1）は読み取り要求を受信するが、読み取られる必要があるデータ（データData1）は、他のストレージノード（Nd2）のメモリ（Nd2-D1）に位置する。Nd2と、管理ノードとが接続状態にあり、Nd2によりローカルにキャッシュされた状態情報セットに記録されたメモリNd2-D1の状態が、信頼されたアクセス状態である場合、読み取られる必要があるデータは、Nd2-D1から直接読み取られることができる。Nd2と、管理ノードとが接続状態にない場合、他のメモリに位置するストリップ（データストライプPd2及びパリティストライプPj1）が位置するメモリ（Nd3-D1及びNd4-D1）が決定され、ストライプは、読み取られる必要があるデータが位置するストリップにある。他のメモリに位置するストリップ（データストライプPd2及びパリティストライプPj1）が位置するメモリ（Nd3-D1及びNd4-D1）が、信頼されたアクセス状態にあり、メモリNd3-D1及びNd4-D1が属するストレージノードと、管理ノードとが接続状態にある場合、他のメモリに位置するストライプが読み取られ、読み取られる必要があるデータ（データData1）が位置するストリップ（Pd2）は、検査アルゴリズムを使用することにより取得され、読み取られる必要があるデータ（データData1）はPd1から取得され、端末／ホストに返信される。
【０２６３】
前述の解決策では、メモリ状態を記録するために使用される状態情報セットが分散型ストレージシステムに導入され、したがって、状態情報セットは、分散型ストレージシステムにおけるメモリのアクセス状態を記録及び管理するために使用されてもよいことが習得できる。具体的には、機構は以下のように導入される。データ読み取り要求を受信して転送するストレージノードは、ストレージノードによりキャッシュされた、リリースされた状態情報セットに記録された関係するメモリの状態と、ストレージノードと状態情報セットをリリースする管理ノードとの間の接続の状態とに基づいて、対応するデータ読み取り要求転送判断を行う。これは、使用される状態情報セットの有効性をより良く決定するのに役立つ。信頼されたアクセス状態のメモリについて、関係するストレージノードは、メモリから要求されたデータを読み取り、読み取られたデータを端末にフィードバックするように直接トリガーできる。信頼されたアクセスのこのような場合、関係するストライプの全てのストリップを読み取り、次に、正確性検査を実行する従来の方式における複雑なステップは必要なく、データ読み取り量が低減され、それにより、メモリ負荷を低減するのに役立ち、さらに、システム性能を改善するのに役立つ。
【０２６４】
以下に、前述の解決策を実現するための関係する装置を更に提供する。
【０２６５】
図１１を参照すると、この出願の実施例は、分散型ストレージシステム1100を提供する。分散型ストレージシステムはm個のストレージノードを含み、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数である。m個のストレージノード内の第１のストレージノード1110は、端末から第１のデータ読み取り要求を受信し、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用され、第１の位置情報に基づいて、第１のデータが位置する第１のメモリを決定し、
第１のメモリが第１のストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送する、ように構成される。第１のデータは、例えば、第１のデータが属するストリップ内のデータの一部又は全部である。
【０２６６】
この出願のいくつかの可能な実現方式では、分散型ストレージシステムは、状態情報セットをリリースするように構成された管理ノードを更に含む。
【０２６７】
第１のストレージノードは、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあり、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第１のデータ読み取り要求を第２のストレージノードに転送するように更に構成される。
【０２６８】
第２のストレージノード1120は、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信するように構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【０２６９】
この出願のいくつかの可能な実現方式では、第１のストレージノード1110は、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子を第１のデータ読み取り要求に追加し、状態情報セットの識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信するように更に構成される。
【０２７０】
第２のストレージノード1120は、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信するように構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【０２７１】
この出願のいくつかの可能な実現方式では、第１のストレージノード1110は、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子と、状態情報セットをリリースするように構成された管理ノードのノード識別子とを第１のデータ読み取り要求に追加し、状態情報セットの識別子及び管理ノードのノード識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信するように更に構成される。
【０２７２】
対応して、第２のストレージノード1120は、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された管理ノードのノード識別子を、第２のストレージノードにより現在キャッシュされている管理ノードのノード識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定され、第１のデータ読み取り要求で搬送された管理ノードのノード識別子が、第２のノードにより現在キャッシュされている管理ノードのノード識別子と同じであると比較により決定された場合、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を第１のストレージノード又は端末に送信するように構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【０２７３】
この出願のいくつかの可能な実現方式では、第１のストレージノード1110は、第１のメモリが信頼されていないアクセス状態にあると決定され、第１のデータが属するストライプのストリップが位置するN個のメモリ内のx個のメモリが第１のストレージノードに属し、N個のメモリ内のN-x個のメモリが第１のストレージノードとは異なるy個のストレージノードに属する場合、ストライプのストライプ識別子と、状態情報セットの識別子とを搬送するデータ読み取り要求をy個のストレージノードに送信するように更に構成される。
【０２７４】
y個のストレージノードのそれぞれは、第１のストレージノードからデータ読み取り要求を受信した後に、データ読み取り要求で搬送された状態情報セットの識別子を、ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、データ読み取り要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、ストレージノードに含まれる対応するメモリからストライプの対応するストリップを読み取り、ストライプの読み取られた対応するストリップを第１のストレージノードに送信するように構成される。
【０２７５】
第１のストレージノードは、y個のストレージノード及び第１のストレージノードから収集されたストライプのストリップに基づいて、第１のデータを取得するための検査演算を実行し、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信するように更に構成され、第１のデータ読み取り応答は取得された第１のデータを搬送する。
【０２７６】
この出願のいくつかの可能な実現方式では、例えば、m個のストレージノードのうち１つは管理ノードである。第１のストレージノードは、第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を管理ノードに送信するように更に構成され、メモリ状態変化報告は、第１のメモリが第２の状態にあることを示し、第１の状態は第２の状態とは異なり、第１の状態及び第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含む。
【０２７７】
管理ノードは、第１のストレージノードからメモリ状態変化報告を受信した後に、管理ノードによりキャッシュされた状態情報セットに記録された第１のメモリの状態を第２の状態に更新し、管理ノードによりキャッシュされた状態情報セットのバージョン番号を更新するように構成され、管理ノードは、更新された状態情報セットをm個のストレージノード内の管理ノード以外のストレージノードに送信する。
【０２７８】
対応して、第１のストレージノードは、第１のストレージノードにより現在キャッシュされている状態情報セットを更新するために、管理ノードからの状態情報セットを使用するように更に構成される。対応して、他のストレージノードもまた、他のストレージノードにより現在キャッシュされている状態情報セットを更新するために、管理ノードからの状態情報セットを使用する。
【０２７９】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、端末から第１のデータ書き込み要求を受信するように更に構成され、第１のデータ書き込み要求は第２のデータ及び第２の位置情報を搬送し、第２の位置情報は、第２のデータが属するデータボディ内の第２のデータの位置を記述するために使用される。
【０２８０】
第１のストレージノードは、第２の位置情報に基づいて、第２のデータを書き込むことに関するW個のメモリを決定し、第２のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【０２８１】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットが、W個のメモリ内のW1個のメモリが非オフライン状態にあり、W個のメモリ内のW2個のメモリがオフライン状態にあることを現在記録しているとき、ストライプのストリップ及び状態情報セットの識別子を搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信するように更に構成される。
【０２８２】
対応して、y2個のストレージノードのそれぞれは、第１のストレージノードからデータ書き込み要求を受信した後に、データ書き込み要求で搬送された状態情報セットの識別子を、ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、データ書き込み要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むか、或いはデータ書き込み要求で搬送された状態情報セットの識別子が、ストレージノードにより現在キャッシュされている状態情報セットの識別子とは異なると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むことを拒否するように構成される。
【０２８３】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、端末から第２のデータ書き込み要求を受信するように更に構成され、第２のデータ書き込み要求は第３のデータ及び第３の位置情報を搬送し、第３の位置情報は、第３のデータが属するデータボディ内の第３のデータの位置を記述するために使用される。
【０２８４】
第１のストレージノードは、第３の位置情報に基づいて、第３のデータを書き込むことに関するW個のメモリを決定した後に、第３のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【０２８５】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットに現在記録されているW個のメモリの状態を決定し、W個のメモリ内のW1個のメモリが非オフライン状態にある（且つ、例えば、W個のメモリ内のW2個のメモリがオフライン状態にある）と決定され、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、ストライプのストリップを搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信するように更に構成される。
【０２８６】
対応して、y2個のストレージノードのそれぞれは、第１のストレージノードからデータ書き込み要求を受信した後に、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むように構成される。
【０２８７】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、端末から第３のデータ書き込み要求を受信するように更に構成され、第３のデータ書き込み要求は第４のデータ及び第４の位置情報を搬送し、第４の位置情報は、第４のデータが属するデータボディ内の第４のデータの位置を記述するために使用される。
【０２８８】
第１のストレージノードは、第４の位置情報に基づいて、第４のデータを書き込むことに関するW個のメモリを決定し、第４のデータをW-T個のデータストリップにセグメント化し、W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、T個のパリティストリップ及びW-T個のデータストリップは、W個のストリップを含むストライプを形成し、W個のメモリはW個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である。
【０２８９】
第１のストレージノードは、第１のストレージノードによりキャッシュされた状態情報セットが、W個のメモリ内のW1個のメモリが非オフライン状態にある（且つ、例えば、W個のメモリ内のW2個のメモリがオフライン状態にある）ことを現在記録しており、第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にあるとき、ストライプのストリップと、状態情報セットをリリースするように構成された管理ノードのノード識別子とを搬送するデータ書き込み要求を、W1個のメモリが属するy2個のストレージノードに送信するように更に構成される。
【０２９０】
対応して、y2個のストレージノードのそれぞれは、第１のストレージノードからデータ書き込み要求を受信した後に、データ書き込み要求で搬送された管理ノードのノード識別子を、ストレージノードにより現在キャッシュされている管理ノードのノード識別子と比較し、データ書き込み要求で搬送された管理ノードのノード識別子が、ストレージノードにより現在キャッシュされている管理ノードのノード識別子と同じであると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むか、或いはデータ書き込み要求で搬送された管理ノードのノード識別子が、ストレージノードにより現在キャッシュされている管理ノードのノード識別子とは異なると比較により決定された場合、ストライプの対応するストリップをストレージノードに含まれる対応するメモリに書き込むことを拒否するように構成される。
【０２９１】
この出願のいくつかの可能な実現方式では、第１のストレージノードは、第１の再構築ログを生成するように更に構成され、第１の再構築ログは、W2個のメモリ内の第２のメモリのメモリ識別子を記録し、第１の再構築ログは、W個のストリップ内の第２のメモリに対応する第１のストリップのストリップ識別子を更に記録し、第１の再構築ログは、ストライプのストライプ識別子を更に記録し、第２のメモリはW2個のメモリ内のいずれかのメモリである。
【０２９２】
対応して、例えば、W2個のメモリ内の第２のメモリが再びオンラインになり、第２のメモリが属する第２のストレージノードが第２のメモリのオフライン期間中に生成された第１の再構築ログを収集した後に、第２のストレージノードは、第１の再構築ログに記録された、第２のメモリに書き込まれる必要がある第１のストリップの識別子を取得し、ストライプに含まれる第１のストリップ以外のW-T個のストリップが位置するW-T個のメモリを決定し、W-T個のメモリからW-T個のストリップを読み取り、第２のメモリに書き込まれる必要がある第１のストリップを再構築するためにW-T個のストリップを使用することにより、検査演算を実行し、再構築された第１のストリップを第２のメモリに書き込む。
【０２９３】
この実施例における分散型ストレージシステム1100の機能は、前述の方法の実施例における解決策に基づいて実現されてもよいことが理解され得る。記載されていないいくつかの部分ついて、前述の実施例を参照する。
【０２９４】
図１２を参照すると、この出願の実施例は、ストレージノード1200を更に提供する。ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数である。ストレージノードは、通信ユニットと処理制御ユニットとを含む。
【０２９５】
通信ユニット1210は、端末から第１のデータ読み取り要求を受信するように構成され、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用される。
【０２９６】
処理制御ユニット1220は、第１の位置情報に基づいて、第１のデータが位置するメモリが第１のメモリであると決定され、第１のメモリがストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のメモリから第１のデータを読み取るように構成される。
【０２９７】
通信ユニット1210は、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を端末に送信するように更に構成され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【０２９８】
この出願のいくつかの可能な実現方式では、通信ユニット1210は、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にあり、ストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、第１のデータ読み取り要求を第２のストレージノードに転送するように更に構成される。
【０２９９】
第１のデータ読み取り要求は、第２のストレージノードに対して、第１のストレージノードから第１のデータ読み取り要求を受信した後に、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答をストレージノード又は端末に送信するようにトリガーするために使用され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【０３００】
この出願のいくつかの可能な実現方式では、通信ユニットは、第１のメモリがm個のストレージノード内の第２のストレージノードに属し、第１のメモリが信頼されたアクセス状態にある場合、第１のストレージノードにより現在キャッシュされている状態情報セットの識別子を第１のデータ読み取り要求に追加し、状態情報セットの識別子が追加された第１のデータ読み取り要求を第２のストレージノードに送信するように更に構成される。
【０３０１】
第１のデータ読み取り要求は、第２のストレージノードに対して、ストレージノードから第１のデータ読み取り要求を受信した後に、第１のデータ読み取り要求で搬送された状態情報セットの識別子を、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、第１のデータ読み取り要求で搬送された状態情報セットの識別子が、第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、第１のメモリから第１のデータを読み取り、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答をストレージノード又は端末に送信するようにトリガーするために使用され、第１のデータ読み取り応答は読み取られた第１のデータを搬送する。
【０３０２】
この出願のいくつかの可能な実現方式では、m個のストレージノードのうち１つは管理ノードである。
【０３０３】
通信ユニットは、第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を管理ノードに送信するように更に構成され、メモリ状態変化報告は、第１のメモリが第２の状態にあることを示し、第１の状態は第２の状態とは異なり、第１の状態及び第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又  信頼されたアクセス状態のうちいずれか１つをそれぞれ含む。
【０３０４】
メモリ状態変化報告は、管理ノードに対して、第１のストレージノードからメモリ状態変化報告を受信した後に、管理ノードによりキャッシュされた状態情報セットに記録された第１のメモリの状態を第２の状態に更新し、管理ノードによりキャッシュされた状態情報セットのバージョン番号を更新し、更新された状態情報セットをm個のストレージノード内の管理ノード以外のストレージノードに送信するようにトリガーするために使用される。
【０３０５】
処理制御ユニットは、ストレージノードにより現在キャッシュされている状態情報セットを更新するために、管理ノードからの状態情報セットを使用するように構成される。
【０３０６】
この実施例におけるストレージノード1200の機能は、前述の方法の実施例における解決策に基づいて具体的に実現されてもよいことが理解され得る。記載されていないいくつかの部分ついて、前述の実施例を参照する。
【０３０７】
図１３を参照すると、この出願の実施例はストレージノード1300を提供する。ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数である。
【０３０８】
ストレージノードは、互いに結合されたプロセッサ1310及び通信インタフェース1320を含む。プロセッサは、前述の方法の実施例のそれぞれにおいて第１のストレージノード又は他のストレージノードにより実行される方法のステップの一部又は全部を実行するように構成される。
【０３０９】
メモリ1330は、命令及びデータを記憶するように構成され、プロセッサ1310は、命令を実行するように構成され、通信インタフェース1320は、プロセッサ1310の制御で他のデバイスと通信するように構成される。命令を実行するとき、プロセッサ1310は、命令に従って、この出願の前述の実施例におけるいずれかの方法においていずれかのストレージノードにより実行されるステップの一部又は全部を実行できる。
【０３１０】
プロセッサ1310はまた、中央処理装置（英文：Central  Processing  Unit,  略称：CPU）とも呼ばれる。具体的な用途では、ストレージノードのコンポーネントは、例えば、バスシステムを使用することにより一緒に結合される。データバスに加えて、バスシステムは、電力バス、制御バス、状態信号バス等を含んでもよい。しかし、説明の明確性のため、様々なバスは図面においてバスシステム1340として記される。この出願の前述の実施例に開示された方法は、プロセッサ1310に適用されてもよく、或いはプロセッサ1310により実現されてもよい。プロセッサ1310は集積回路チップでもよく、信号処理能力を有する。実現プロセスにおいて、前述の方法のステップは、プロセッサ1310内のハードウェアの集積論理回路、又はソフトウェアの形式の命令を使用することにより完成されてもよい。プロセッサ1310は、汎用プロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路、フィールドプログラマブルゲートアレイ若しくは他のプログラム可能論理コンポーネント、ディスクリートゲート若しくはトランジスタ論理コンポーネント、又はディスクリートハードウェアコンポーネントでもよい。プロセッサ1310は、この出願の実施例に開示された方法、ステップ及び論理ブロック図を実現又は実行してもよい。汎用プロセッサ1310はマイクロプロセッサでもよく、或いはプロセッサはいずれかの従来のプロセッサ等でもよい。この出願の実施例を参照して開示された方法のステップは、ハードウェアデコーディングプロセッサを使用することにより直接実行及び完了されてもよく、或いはデコーディングプロセッサ内のハードウェア及びソフトウェアモジュールの組み合わせを使用することにより実行及び完了されてもよい。ソフトウェアモジュールは、ランダムアクセスメモリ、フラッシュメモリ、フラッシュメモリ、読み取り専用メモリ、プログラム可能読み取り専用メモリ、電気的消去可能プログラム可能メモリ又はレジスタのような当該分野における成熟した記憶媒体に位置してもよい。記憶媒体はメモリ1330に位置する。例えば、プロセッサ1310は、メモリ1320からの情報を読み取り、ハードウェアと組み合わせて前述の方法のステップを完了できる。
【０３１１】
例えば、プロセッサ1310は、通信インタフェース1320を使用することにより、第１のデータ読み取り要求を受信し、第１のデータ読み取り要求は第１の位置情報を搬送し、第１の位置情報は、第１のデータが属するデータボディ内の第１のデータの位置を記述するために使用され、第１の位置情報に基づいて、第１のデータが位置するメモリが第１のメモリであると決定され、第１のメモリが第１のストレージノードに属する場合、状態情報セットが、第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、第１のメモリから第１のデータを読み取り、通信インタフェースを使用することにより、第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を送信し、第１のデータ読み取り応答は読み取られた第１のデータを搬送する、ように構成される。
【０３１２】
この出願の実施例はコンピュータ読み取り可能記憶媒体を提供する。コンピュータ読み取り可能記憶媒体はプログラムコードを記憶する。プログラムコードは、第１の態様におけるいずれかのストレージノード（例えば、第１のストレージノード又は第２のストレージノード）により実行される方法のステップの一部又は全部を実行するために使用される命令を含む。
【０３１３】
さらに、この出願の実施例は命令を含むコンピュータプログラムプロダクトを提供する。コンピュータプログラムプロダクトがコンピュータ（コンピュータは、例えばストレージノードである）上で実行したとき、コンピュータは、前述の実施例におけるいずれかのストレージノード（例えば、第１のストレージノード又は第２のストレージノード）により実行される方法のステップの一部又は全部を実行する。
【０３１４】
さらに、この出願の実施例は、分散型ストレージサービスシステムと端末とを含むサービスシステムを更に提供する。分散型ストレージサービスシステム及び端末は通信可能に接続される。分散型ストレージサービスシステムは、この出願の実施例において提供されるいずれかの分散型ストレージシステムである。
【０３１５】
前述の実施例の全部又は一部は、ソフトウェア、ハードウェア、ファームウェア又はこれらのいずれかの組み合わせを用いて実現されてもよい。ソフトウェアが実施例を実現するために使用されるとき、実施例は、全て或いは部分的にコンピュータプログラムプロダクトの形式で実現されてもよい。コンピュータプログラムプロダクトは１つ以上のコンピュータ命令を含む。コンピュータプログラム命令がコンピュータにロードされて実行されたとき、この出願の実施例による手順又は機能が全て或いは部分的に生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク又は他のプログラム可能装置でもよい。コンピュータ命令は、コンピュータ読み取り可能記憶媒体に記憶されてもよく、或いはコンピュータ読み取り可能記憶媒体から他のコンピュータ読み取り可能記憶媒体に送信されてもよい。例えば、コンピュータ命令は、有線（例えば、同軸ケーブル、光ファイバ又はデジタル加入者線）又は無線（例えば、赤外線、無線又はマイクロ波）の方式で、ウェブサイト、コンピュータ、サーバ又はデータセンタから他のウェブサイト、コンピュータ、サーバ又はデータセンタに送信されてもよい。コンピュータ読み取り可能記憶媒体は、コンピュータによりアクセス可能ないずれかの使用可能な媒体、又は１つ以上の使用可能な媒体を統合するサーバ若しくはデータセンタのようなデータ記憶デバイスでもよい。使用可能な媒体は、磁気媒体（例えば、フロッピーディスク、ハードディスク又は磁気テープ）、光媒体（例えば、光ディスク）、半導体媒体（例えば、ソリッドステートディスク）等でもよい。前述の実施例では、実施例の説明はそれぞれの焦点を有する。実施例において詳細に記載されていない部分について、他の実施例における関係する説明に参照が行われてもよい。
【０３１６】
簡単な説明のため、前述の方法の実施例は一連の動作として表される点に留意すべきである。しかし、この出願に従って、いくつかのステップが他の順序で或いは同時に実行されてもよいため、当業者は、この出願が記載の動作の順序に限定されないことを認識するべきである。この明細書に記載の実施例は、全て例示の実施例であり、関係する動作及びモジュールは必ずしもこの出願により必要とされるとは限らないことが、当業者により更に認識されるべきである。
【０３１７】
この出願において提供されるいくつかの実施例において、開示の装置は他の方式で実現されてもよいことが理解されるべきである。例えば、記載の装置の実施例は単なる例である。例えば、ユニットの分割は、単に論理的な機能分割であり、実際の実現方式では他の分割でもよい。例えば、複数のユニット又はコンポーネントは結合されてもよく、或いは他のシステムに統合されてもよく、或いはいくつかの特徴が無視されてもよく或いは実行されなくてもよい。さらに、表示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを使用することにより実現されてもよい。装置又はユニットの間の間接結合又は通信接続は電気的又は他の形式で実現されてもよい。
【０３１８】
別々の部分として記載したユニットは、物理的に別々でもよく或いは別々でなくてもよく、ユニットとして表示された部分は、物理的なユニットでもよく或いは物理的なユニットでなくてもよく、１つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、実施例の解決策の目的を達成するために、実際の要件に依存して選択されてもよい。
【０３１９】
さらに、この出願の実施例における機能ユニットは１つの処理ユニットに統合されてもよく、或いはユニットのそれぞれが物理的に単独で存在してもよく、或いは２つ以上のユニットが１つのユニットに統合される。統合されたユニットは、ハードウェアの形式で実現されてもよく、或いはソフトウェア機能ユニットの形式で実現されてもよい。
【０３２０】
統合されたユニットがソフトウェア機能ユニットの形式で実現されて独立したプロダクトとして販売又は使用されるとき、統合されたユニットはコンピュータアクセス可能なメモリに記憶されてもよい。このような理解に基づいて、この出願の技術的解決策は本質的に、或いは従来技術に寄与する部分、又は技術的解決策の全部若しくは一部は、ソフトウェアプロダクトの形式で実現されてもよい。コンピュータソフトウェアプロダクトはメモリに記憶され、コンピュータデバイス（パーソナルコンピュータ、サーバ又はネットワークデバイスでもよく、具体的にはコンピュータデバイス内のプロセッサでもよい）に対してこの出願の実施例に記載の前述の方法のステップの全部又は一部を実行するように命令するための要求を含む。
【０３２１】
前述の実施例は、単にこの出願の技術的解決策を説明するものであり、この出願を限定することを意図するものではない。この出願について、前述の実施例を参照して詳細に説明したが、当業者は、この出願の実施例の技術的解決策の真意及び範囲を逸脱することなく、依然として前述の実施例に記載の技術的解決策に変更を行ってもよく、或いはそのいくつかの技術的特徴に等価置換を行ってもよいことを理解するべきである。
【図１−Ａ】
2019532440.tif 000003
【図１−Ｂ】
2019532440.tif 000004
【図１−Ｃ】
2019532440.tif 000005
【図１−Ｄ】
2019532440.tif 000006
【図１−Ｅ】
2019532440.tif 000007
【図１−Ｆ】
2019532440.tif 000008
【図２−Ａ】
2019532440.tif 000009
【図２−Ｂ】
2019532440.tif 000010
【図３−Ａ】
2019532440.tif 000011
【図３−Ｂ】
2019532440.tif 000012
【図３−Ｃ】
2019532440.tif 000013
【図４−Ａ】
2019532440.tif 000014
【図４−Ｂ】
2019532440.tif 000015
【図４−Ｃ】
2019532440.tif 000016
【図５−Ａ】
2019532440.tif 000017
【図５−Ｂ】
2019532440.tif 000018
【図６】
2019532440.tif 000019
【図７−Ａ】
2019532440.tif 000020
【図７−Ｂ】
2019532440.tif 000021
【図７−Ｃ】
2019532440.tif 000022
【図８】
2019532440.tif 000023
【図９】
2019532440.tif 000024
【図１０】
2019532440.tif 000025
【図１１】
2019532440.tif 000026
【図１２】
2019532440.tif 000027
【図１３】
2019532440.tif 000028
【手続補正書】
【提出日】平成31年4月23日(2019.4.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データアクセス方法であって、当該方法は分散型ストレージシステムに適用され、前記分散型ストレージシステムはm個のストレージノードを含み、前記m個のストレージノードは第１のストレージノードを含み、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、当該方法は、
前記第１のストレージノードにより、端末から第１のデータ読み取り要求を受信するステップであり、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用される、ステップと、
前記第１のストレージノードが、前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定し、前記第１のメモリが前記第１のストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のストレージノードにより、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を含む方法。
【請求項２】
前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記第１のストレージノードにより、前記第１のデータ読み取り要求を前記第２のストレージノードに転送するステップと、
前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第２のストレージノードにより、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を更に含む、請求項１に記載の方法。
【請求項３】
前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にある場合、或いは前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記第１のストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記第１のストレージノードにより、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットの識別子を前記第１のデータ読み取り要求に追加し、前記状態情報セットの前記識別子が追加された前記第１のデータ読み取り要求を前記第２のストレージノードに送信するステップと、
前記第２のストレージノードが前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と同じであると比較により決定された場合、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を更に含む、請求項１に記載の方法。
【請求項４】
前記第１のメモリが信頼されていないアクセス状態にあると決定され、前記第１のデータが属するストライプのストリップが位置するN個のメモリ内のx個のメモリが前記第１のストレージノードに属し、前記N個のメモリ内のN-x個のメモリが前記第１のストレージノードとは異なるy個のストレージノードに属する場合、前記第１のストレージノードにより、前記ストライプのストライプ識別子と、前記状態情報セットの識別子とを搬送するデータ読み取り要求を前記y個のストレージノードに送信するステップと、
前記第１のストレージノードから前記データ読み取り要求を受信した後に、前記y個のストレージノードのそれぞれにより、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストレージノードに含まれる対応するメモリから前記ストライプの対応するストリップを読み取り、前記ストライプの前記読み取られた対応するストリップを前記第１のストレージノードに送信するステップと、
前記第１のストレージノードにより、前記y個のストレージノード及び前記第１のストレージノードから収集された前記ストライプのストリップに基づいて、前記第１のデータを取得するための検査演算を実行し、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記端末に送信するステップであり、前記第１のデータ読み取り応答は前記取得された第１のデータを搬送する、ステップと
を更に含む、請求項１に記載の方法。
【請求項５】
前記m個のストレージノードのうち１つは管理ノードであり、
当該方法は、
前記第１のメモリの状態が第１の状態から第２の状態に変化したとき、前記第１のストレージノードにより、メモリ状態変化報告を前記管理ノードに送信するステップであり、前記メモリ状態変化報告は、前記第１のメモリが前記第２の状態にあることを示し、前記第１の状態は前記第２の状態とは異なり、前記第１の状態及び前記第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含む、ステップと、
前記第１のストレージノードから前記メモリ状態変化報告を受信した後に、前記管理ノードにより、前記管理ノードによりキャッシュされた状態情報セットに記録された前記第１のメモリの状態を前記第２の状態に更新し、前記管理ノードによりキャッシュされた前記状態情報セットのバージョン番号を更新し、前記管理ノードにより、更新された状態情報セットを前記m個のストレージノード内の前記管理ノード以外のストレージノードに送信するステップと、
前記第１のストレージノードにより、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットを更新するために、前記管理ノードからの前記状態情報セットを使用するステップと
を更に含む、請求項１乃至４のうちいずれか１項に記載の方法。
【請求項６】
前記第１のストレージノードにより、前記端末から第１のデータ書き込み要求を受信するステップであり、前記第１のデータ書き込み要求は第２のデータ及び第２の位置情報を搬送し、前記第２の位置情報は、前記第２のデータが属するデータボディ内の前記第２のデータの位置を記述するために使用される、ステップと、
前記第１のストレージノードにより、前記第２の位置情報に基づいて、前記第２のデータを書き込むことに関するW個のメモリを決定し、前記第２のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するステップであり、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である、ステップと、
前記第１のストレージノードによりキャッシュされた前記状態情報セットが、前記W個のメモリ内のW1個のメモリが非オフライン状態にあることを現在記録しているとき、前記ストライプのストリップ及び前記状態情報セットの前記識別子を搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するステップと、
前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記y2個のストレージノードのそれぞれにより、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むか、或いは前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子とは異なると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むことを拒否するステップと
を更に含む、請求項１乃至５のうちいずれか１項に記載の方法。
【請求項７】
前記第１のストレージノードにより、前記端末から第２のデータ書き込み要求を受信するステップであり、前記第２のデータ書き込み要求は第３のデータ及び第３の位置情報を搬送し、前記第３の位置情報は、前記第３のデータが属するデータボディ内の前記第３のデータの位置を記述するために使用される、ステップと、
前記第３の位置情報に基づいて、前記第３のデータを書き込むことに関するW個のメモリを決定した後に、前記第１のストレージノードにより、前記第３のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するステップであり、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満である、ステップと、
前記第１のストレージノードによりキャッシュされた前記状態情報セットが、前記W個のメモリ内のW1個のメモリが非オフライン状態にあることを現在記録しており、前記第１のストレージノードと、状態情報セットをリリースするように構成された前記管理ノードとが接続状態にある場合、前記ストライプのストリップを搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するステップと、
前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記y2個のストレージノードのそれぞれにより、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むステップと
を更に含む、請求項１乃至５のうちいずれか１項に記載の方法。
【請求項８】
W1はW未満であり、前記第１のストレージノードによりキャッシュされた前記状態情報セットは、前記W個のメモリ内のW2個のメモリがオフライン状態にあることを現在記録しており、
当該方法は、
前記第１のストレージノードにより、第１の再構築ログを生成するステップであり、前記第１の再構築ログは、前記W2個のメモリ内の第２のメモリのメモリ識別子を記録し、前記第１の再構築ログは、前記W個のストリップ内の前記第２のメモリに対応する第１のストリップのストリップ識別子を更に記録し、前記第１の再構築ログは、前記ストライプの前記ストライプ識別子を更に記録し、前記第２のメモリは前記W2個のメモリ内のいずれかのメモリである、ステップと、
前記W2個のメモリ内の前記第２のメモリが再びオンラインになり、前記第２のメモリが属する前記第２のストレージノードが前記第２のメモリのオフライン期間中に生成された前記第１の再構築ログを収集した後に、前記第２のストレージノードにより、前記第１の再構築ログに記録された、前記第２のメモリに書き込まれる必要がある前記第１のストリップの前記ストリップ識別子を取得し、前記ストライプに含まれる前記第１のストリップ以外のW-T個のストリップが位置するW-T個のメモリを決定し、前記W-T個のメモリから前記W-T個のストリップを読み取り、前記第２のメモリに書き込まれる必要がある前記第１のストリップを再構築するために前記W-T個のストリップを使用することにより、検査演算を実行し、前記再構築された第１のストリップを前記第２のメモリに書き込むステップと
を更に含む、請求項６又は７に記載の方法。
【請求項９】
m個のストレージノードを含む分散型ストレージシステムであって、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、
前記m個のストレージノード内の第１のストレージノードは、
端末から第１のデータ読み取り要求を受信し、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用され、前記第１の位置情報に基づいて、前記第１のデータが位置する第１のメモリを決定し、
前記第１のメモリが前記第１のストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を前記端末に送信し、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ように構成される、分散型ストレージシステム。
【請求項１０】
当該分散型ストレージシステムは、状態情報セットをリリースするように構成された管理ノードを更に含み、
前記第１のストレージノードは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記第１のストレージノードと、状態情報セットをリリースするように構成された前記管理ノードとが接続状態にある場合、前記第１のデータ読み取り要求を前記第２のストレージノードに転送するように更に構成され、
前記第２のストレージノードは、前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するように構成され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項９に記載の分散型ストレージシステム。
【請求項１１】
前記第１のストレージノードは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にある場合、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットの識別子を前記第１のデータ読み取り要求に追加し、前記状態情報セットの前記識別子が追加された前記第１のデータ読み取り要求を前記第２のストレージノードに送信するように更に構成され、
前記第２のストレージノードは、前記第１のストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記第２のストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記第１のストレージノード又は前記端末に送信するように構成され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項９に記載の分散型ストレージシステム。
【請求項１２】
前記第１のストレージノードは、前記第１のメモリが信頼されていないアクセス状態にあると決定され、前記第１のデータが属するストライプのストリップが位置するN個のメモリ内のx個のメモリが前記第１のストレージノードに属し、前記N個のメモリ内のN-x個のメモリが前記第１のストレージノードとは異なるy個のストレージノードに属する場合、前記ストライプのストライプ識別子と、前記状態情報セットの識別子とを搬送するデータ読み取り要求を前記y個のストレージノードに送信するように更に構成され、
前記y個のストレージノードのそれぞれは、前記第１のストレージノードから前記データ読み取り要求を受信した後に、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストレージノードに含まれる対応するメモリから前記ストライプの対応するストリップを読み取り、前記ストライプの前記読み取られた対応するストリップを前記第１のストレージノードに送信するように構成され、
前記第１のストレージノードは、前記y個のストレージノード及び前記第１のストレージノードから収集された前記ストライプのストリップに基づいて、前記第１のデータを取得するための検査演算を実行し、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記端末に送信するように更に構成され、前記第１のデータ読み取り応答は前記取得された第１のデータを搬送する、請求項９に記載の分散型ストレージシステム。
【請求項１３】
前記m個のストレージノードのうち１つは管理ノードであり、
前記第１のストレージノードは、前記第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を前記管理ノードに送信するように更に構成され、前記メモリ状態変化報告は、前記第１のメモリが前記第２の状態にあることを示し、前記第１の状態は前記第２の状態とは異なり、前記第１の状態及び前記第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含み、
前記管理ノードは、前記第１のストレージノードから前記メモリ状態変化報告を受信した後に、前記管理ノードによりキャッシュされた状態情報セットに記録された前記第１のメモリの状態を前記第２の状態に更新し、前記管理ノードによりキャッシュされた前記状態情報セットのバージョン番号を更新するように構成され、前記管理ノードは、更新された状態情報セットを前記m個のストレージノード内の前記管理ノード以外のストレージノードに送信し、
前記第１のストレージノードは、前記第１のストレージノードにより現在キャッシュされている前記状態情報セットを更新するために、前記管理ノードからの前記状態情報セットを使用するように更に構成される、請求項９乃至１２のうちいずれか１項に記載の分散型ストレージシステム。
【請求項１４】
前記第１のストレージノードは、前記端末から第１のデータ書き込み要求を受信するように更に構成され、前記第１のデータ書き込み要求は第２のデータ及び第２の位置情報を搬送し、前記第２の位置情報は、前記第２のデータが属するデータボディ内の前記第２のデータの位置を記述するために使用され、
前記第１のストレージノードは、前記第２の位置情報に基づいて、前記第２のデータを書き込むことに関するW個のメモリを決定し、前記第２のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満であり、
前記第１のストレージノードは、前記第１のストレージノードによりキャッシュされた前記状態情報セットが、前記W個のメモリ内のW1個のメモリが非オフライン状態にあることを現在記録しているとき、前記ストライプのストリップ及び前記状態情報セットの前記識別子を搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するように更に構成され、
前記y2個のストレージノードのそれぞれは、前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子を、前記ストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むか、或いは前記データ書き込み要求で搬送された前記状態情報セットの前記識別子が、前記ストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子とは異なると比較により決定された場合、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むことを拒否するように構成される、請求項９乃至１２のうちいずれか１項に記載の分散型ストレージシステム。
【請求項１５】
前記第１のストレージノードは、前記端末から第２のデータ書き込み要求を受信するように更に構成され、前記第２のデータ書き込み要求は第３のデータ及び第３の位置情報を搬送し、前記第３の位置情報は、前記第３のデータが属するデータボディ内の前記第３のデータの位置を記述するために使用され、
前記第１のストレージノードは、前記第３の位置情報に基づいて、前記第３のデータに関するW個のメモリを決定した後に、前記第３のデータをW-T個のデータストリップにセグメント化し、前記W-T個のデータストリップを使用することによる計算を用いてT個のパリティストリップを取得するように更に構成され、前記T個のパリティストリップ及び前記W-T個のデータストリップは、W個のストリップを含むストライプを形成し、前記W個のメモリは前記W個のストリップと１対１の対応関係にあり、T及びWは正の整数であり、TはW未満であり、
前記第１のストレージノードは、前記第１のストレージノードによりキャッシュされた前記状態情報セットに現在記録されている前記W個のメモリ内の状態を決定し、前記W個のメモリ内のW1個のメモリが非オフライン状態にあると決定され、前記第１のストレージノードと、状態情報セットをリリースするように構成された前記管理ノードとが接続状態にある場合、前記ストライプのストリップを搬送するデータ書き込み要求を、前記W1個のメモリが属するy2個のストレージノードに送信するように更に構成され、
前記y2個のストレージノードのそれぞれは、前記第１のストレージノードから前記データ書き込み要求を受信した後に、前記ストライプの対応するストリップを前記ストレージノードに含まれる対応するメモリに書き込むように構成される、請求項９乃至１２のうちいずれか１項に記載の分散型ストレージシステム。
【請求項１６】
W1はW未満であり、前記第１のストレージノードによりキャッシュされた前記状態情報セットは、前記W個のメモリ内のW2個のメモリがオフライン状態にあることを現在記録しており、
前記第１のストレージノードは、第１の再構築ログを生成するように更に構成され、前記第１の再構築ログは、前記W2個のメモリ内の第２のメモリのメモリ識別子を記録し、前記第１の再構築ログは、前記W個のストリップ内の前記第２のメモリに対応する第１のストリップのストリップ識別子を更に記録し、前記第１の再構築ログは、前記ストライプの前記ストライプ識別子を更に記録し、前記第２のメモリは前記W2個のメモリ内のいずれかのメモリであり、
前記W2個のメモリ内の前記第２のメモリが再びオンラインになり、前記第２のメモリが属する前記第２のストレージノードが前記第２のメモリのオフライン期間中に生成された前記第１の再構築ログを収集した後に、前記第２のストレージノードは、前記第１の再構築ログに記録された、前記第２のメモリに書き込まれる必要がある前記第１のストリップの前記ストリップ識別子を取得し、
前記ストライプに含まれる前記第１のストリップ以外のW-T個のストリップが位置するW-T個のメモリを決定し、前記W-T個のメモリから前記W-T個のストリップを読み取り、前記第２のメモリに書き込まれる必要がある前記第１のストリップを再構築するために前記W-T個のストリップを使用することにより、検査演算を実行し、前記再構築された第１のストリップを前記第２のメモリに書き込む、請求項１４又は１５に記載の分散型ストレージシステム。
【請求項１７】
ストレージノードであって、当該ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、当該ストレージノードは、
端末から第１のデータ読み取り要求を受信するように構成された通信ユニットであり、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用される、通信ユニットと、
前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定され、前記第１のメモリが前記ストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のメモリから前記第１のデータを読み取るように構成された処理制御ユニットと
を含み、
前記通信ユニットは、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を前記端末に送信するように更に構成され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ストレージノード。
【請求項１８】
前記通信ユニットは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記ストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記第１のデータ読み取り要求を前記第２のストレージノードに転送するように更に構成され、
前記第１のデータ読み取り要求は、前記第２のストレージノードに対して、前記ストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記ストレージノード又は前記端末に送信するようにトリガーするために使用され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項１７に記載のストレージノード。
【請求項１９】
前記通信ユニットは、前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にある場合、或いは前記第１のメモリが前記m個のストレージノード内の第２のストレージノードに属し、前記第１のメモリが信頼されたアクセス状態にあり、前記ストレージノードと、状態情報セットをリリースするように構成された管理ノードとが接続状態にある場合、前記ストレージノードにより現在キャッシュされている前記状態情報セットの識別子を前記第１のデータ読み取り要求に追加し、前記状態情報セットの前記識別子が追加された前記第１のデータ読み取り要求を前記第２のストレージノードに送信するように更に構成され、
前記第１のデータ読み取り要求は、前記第２のストレージノードに対して、前記ストレージノードから前記第１のデータ読み取り要求を受信した後に、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子を、前記第２のストレージノードにより現在キャッシュされている状態情報セットの識別子と比較し、前記第１のデータ読み取り要求で搬送された前記状態情報セットの前記識別子が、前記第２のストレージノードにより現在キャッシュされている前記状態情報セットの前記識別子と同じであると比較により決定された場合、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される前記第１のデータ読み取り応答を前記ストレージノード又は前記端末に送信するようにトリガーするために使用され、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、請求項１７に記載のストレージノード。
【請求項２０】
前記m個のストレージノードのうち１つは管理ノードであり、
前記通信ユニットは、前記第１のメモリの状態が第１の状態から第２の状態に変化したとき、メモリ状態変化報告を前記管理ノードに送信するように更に構成され、前記メモリ状態変化報告は、前記第１のメモリが前記第２の状態にあることを示し、前記第１の状態は前記第２の状態とは異なり、前記第１の状態及び前記第２の状態は、以下の状態、すなわち、オフライン状態、データ再構築状態又は信頼されたアクセス状態のうちいずれか１つをそれぞれ含み、前記メモリ状態変化報告は、前記管理ノードに対して、前記ストレージノードから前記メモリ状態変化報告を受信した後に、前記管理ノードによりキャッシュされた状態情報セットに記録された前記第１のメモリの状態を前記第２の状態に更新し、前記管理ノードによりキャッシュされた前記状態情報セットのバージョン番号を更新し、更新された状態情報セットを前記m個のストレージノード内の前記管理ノード以外のストレージノードに送信するようにトリガーするために使用され、
前記処理制御ユニットは、前記ストレージノードにより現在キャッシュされている前記状態情報セットを更新するために、前記管理ノードからの前記状態情報セットを使用するように構成される、請求項１７乃至１９のうちいずれか１項に記載のストレージノード。
【請求項２１】
第１のストレージノードに適用されるデータアクセス方法であって、前記第１のストレージノードはm個のストレージノードを含む分散型ストレージシステムに位置し、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、当該方法は、
前記第１のストレージノードにより、第１のデータ読み取り要求を受信するステップであり、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用される、ステップと、
前記第１のストレージノードが、前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定し、前記第１のメモリが前記第１のストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のストレージノードにより、前記第１のメモリから前記第１のデータを読み取り、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を送信するステップであり、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ステップと
を含む方法。
【請求項２２】
ストレージノードであって、当該ストレージノードは、分散型ストレージシステムに含まれるm個のストレージノードのうち１つであり、各ストレージノードは少なくとも１つのメモリを含み、各メモリは不揮発性記憶媒体を含み、mは1より大きい整数であり、
当該ストレージノードは、互いに結合されたプロセッサ及び通信インタフェースを含み、
前記プロセッサは、前記通信インタフェースを使用することにより、第１のデータ読み取り要求を受信し、前記第１のデータ読み取り要求は第１の位置情報を搬送し、前記第１の位置情報は、第１のデータが属するデータボディ内の前記第１のデータの位置を記述するために使用され、前記第１の位置情報に基づいて、前記第１のデータが位置するメモリが第１のメモリであると決定され、前記第１のメモリが前記ストレージノードに属する場合、状態情報セットが、前記第１のメモリが信頼されたアクセス状態にあることを現在記録しているとき、前記第１のメモリから前記第１のデータを読み取り、前記通信インタフェースを使用することにより、前記第１のデータ読み取り要求に応答するために使用される第１のデータ読み取り応答を送信し、前記第１のデータ読み取り応答は前記読み取られた第１のデータを搬送する、ように構成される、ストレージノード。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０５
【補正方法】変更
【補正の内容】
【０１０５】
メモリの状態は時間と共に変化するため、状態情報セットは、メモリの状態の変化時に適応的に更新される。例えば、管理ノード（プライマリmonitor）がメモリ状態変化報告（メモリの状態が変化したこと、例えば、メモリがプラグを抜かれて電源オフになったこと、又は再び電源オンになったこと）を受信したか、或いはメモリがオフラインである（例えば、管理ノードは特定の持続時間内に対応するストレージノードからハートビートメッセージを受信していない）と決定した後に、管理ノードは、状態情報セットを更新する条件が満たされたと考え、管理ノードは、状態情報セットを更新する。更新された状態情報セットは新しいバージョン番号に対応し、更新された状態情報セットは、変化したメモリ状態を記録する。管理ノードは、更新された状態情報セットを他のストレージノード（セカンダリmonitor）にプッシュする。状態情報セットのバージョン番号は、グローバル変数に基づいてプライマリmonitorにより生成されてもよい。具体的には、例えば、状態情報セットが更新される毎に、バージョン番号は現状に基づいて+1又は+2だけインクリメントする。したがって、異なるバージョン番号は異なる状態情報セットを示してもよく、２つの状態情報セットが同じであるか否かは、２つの状態情報セットのバージョン番号を比較することにより決定できる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０２５４
【補正方法】変更
【補正の内容】
【０２５４】
1008.ストレージノードNd1は、データ読み取り要求Rq3を、メモリNd3-D1が属するストレージノードNd3に送信し、ストレージノードNd1は、データ読み取り要求Rq4を、メモリNd4-D1が属するストレージノードNd4に送信する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０２６１
【補正方法】変更
【補正の内容】
【０２６１】
1011及び1012.ステップ1011及び1012はステップ811及び812と同じである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０２６２
【補正方法】変更
【補正の内容】
【０２６２】
この実施例では、ストレージノード（Nd1）は読み取り要求を受信するが、読み取られる必要があるデータ（データData1）は、他のストレージノード（Nd2）のメモリ（Nd2-D1）に位置する。Nd2と、管理ノードとが接続状態にあり、Nd2によりローカルにキャッシュされた状態情報セットに記録されたメモリNd2-D1の状態が、信頼されたアクセス状態である場合、読み取られる必要があるデータは、Nd2-D1から直接読み取られることができる。Nd2と、管理ノードとが接続状態にない場合、他のメモリに位置するストリップ（データストリップPd2及びパリティストリップPj1）が位置するメモリ（Nd3-D1及びNd4-D1）が決定され、ストライプは、読み取られる必要があるデータが位置するストリップにある。他のメモリに位置するストリップ（データストリップPd2及びパリティストリップPj1）が位置するメモリ（Nd3-D1及びNd4-D1）が、信頼されたアクセス状態にあり、メモリNd3-D1及びNd4-D1が属するストレージノードと、管理ノードとが接続状態にある場合、他のメモリに位置するストライプが読み取られ、読み取られる必要があるデータ（データData1）が位置するストリップ（Pd2）は、検査アルゴリズムを使用することにより取得され、読み取られる必要があるデータ（データData1）はPd1から取得され、端末／ホストに返信される。
【国際調査報告】
2019532440.tif 000029
2019532440.tif 000030
2019532440.tif 000031
2019532440.tif 000032