本発明は、ストレージ技術の分野に関するものであり、具体的には、分散ファイルストレージシステムにおけるデータ処理の方法およびデバイスに関するものである。
コンピュータ技術およびネットワーク技術の発展ならびに人間生活の情報化の結果、ストレージシステムの記憶容量の拡大、およびストレージシステムの高性能化に対する要求がユーザから出てきた。ストレージシステムも、コンピュータ内蔵のメモリから、ストレージアレイなどの独立ストレージシステム、またはネットワークアタッチトストレージ(Network Attached Storage、NAS)へ、次いで、大規模分散ファイルストレージシステムへと発展している。デジタル化の程度が高まるにつれ、ストレージオブジェクトも、もっぱら構造化データであるオブジェクトからピクチャまたはマイクロビデオなどのもっぱら非構造化ファイルデータであるオブジェクトへと変化している。これにより、ストレージシステムのファイルデータアクセス性能に対する要求条件が高まり、したがって、これは、大規模分散ファイルストレージシステムのアクセス性能を改善する現在のストレージ分野における最優先事項となっている。
分散ファイルストレージシステムは、複数のストレージサーバノードを備え、複数のストレージサーバは、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成し、大規模ネットワークRAID(Redundant Array of Inexpensive Disks、リダンダント・アレイ・オブ・インエクスペンシブ・ディスクズ)を構成し、それに加えて、すべてのストレージサーバは、外部からデータ読み出し書き込みサービスを同時に提供する。ファイルデータが、分散ファイルストレージシステムに格納されるときに、クロスノードRAIDアルゴリズム(たとえば、RAID5、RAID6、またはRAIDZ)、または消失訂正符号(Erasure Code)アルゴリズムなどのアルゴリズムを使用することによって、ストライピング(Stripe)がファイルデータに対して実行される、すなわち、ファイルデータが複数のデータストリップ(Strip)に分割され、対応するパリティストリップが生成され、次いで、データトリップおよびパリティストリップが対応するノードのストレージサーバに格納される。格納されているファイルデータが読み出されると、ユーザによって読み出される必要がある元のファイルデータをその後構築するために特定の量のデータストリップおよびパリティストリップがストレージサーバノードから読み出される。
分散ファイルストレージシステム内のクラスタサイズが増加するにつれ、分散ファイルストレージシステム全体の空間利用度を改善するために、ストライピングがファイルデータに対して実行されるときに分割によって得られるデータストリップの量が次第に大きくなり、読み出し書き込みオペレーションが実行されるときにディスクIOオペレーションおよびネットワークIOオペレーションの量もしかるべく増大する。このようにして、ファイルデータに対してストライピングが実行されるときに分割によって得られるデータストリップの量は、しかるべく増大し、それによって、小さなファイルのシナリオにおける分散ファイルストレージシステムのアクセス性能に大きな負担がかかる。
このような事情に鑑みて、本発明によって解決されるべき技術的課題は、小さなファイルのシナリオにおける分散ファイルストレージシステムのアクセス性能をどのように改善するかである。
前述の目的を達成するために、本発明の実施形態では、以下の技術的解決策を使用する。
本発明の第1の態様は、分散ファイルストレージシステムに適用されるデータ処理方法を提供し、この方法は、クライアントエージェントによって、ユーザのデータ処理要求を受信するステップであって、データ処理要求は、ターゲットファイルのファイル識別子、オフセットアドレス、ファイル長、および他の情報を搬送し、ターゲットファイルは、データ処理要求で処理される必要があるファイルである、ステップと、クライアントエージェントによって、データ処理要求で搬送される、ターゲットファイルの冗長情報をファイル識別子に従って取得するステップであって、冗長情報は、分散ファイルストレージシステムのデータストリップの量Nおよび分散ファイルストレージシステムのパリティストリップの量Mを含む、ステップと、データ処理要求で搬送されるターゲットファイルのオフセットアドレスおよびファイル長に従ってターゲットファイルの有効ストリップの量DSCを決定するステップであって、有効ストリップは、ターゲットファイルのデータを含むストリップである、ステップと、有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定するステップと、実際のストリップの量N'に従って対応するストリップを決定し、対応するストリップを処理するステップとを含む。
第1の態様に関して、可能なインプリメント方法において、
有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定するステップでは、特に、有効ストリップの量DSCが、パリティストリップの量M以下である場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となるか、または有効ストリップの量DSCが、パリティストリップの量Mより大きい場合、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなる。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
複数のパリティストリップの量Mおよび複数のデータストリップの量Nがあり、MおよびNは、互いに対応しており、対応するディレクトリ情報テーブル内に別々に格納される。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求がデータ書き込み要求である場合に、実際のストリップの量N'に従って対応するストリップを決定するステップ、および対応するストリップを処理するステップは、
ターゲットファイルに対してストライピング処理を実行してN'個の実際のストリップを取得し、冗長アルゴリズムを使用することによってM個のパリティストリップを生成するステップと、
コンシステンシーラベル情報(consistency label information)および有効ストリップの量DSCに関する情報をN'個の実際のストリップおよびM個のパリティストリップに追加するステップであって、コンシステンシーラベル情報は、タイムスタンプまたはバージョン番号であり得る、ステップと、
N'個の実際のストリップおよびM個のパリティストリップを対応するストレージサーバノード上に別々に書き込むステップとをさらに含む。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求が、データ読み出し要求である場合、この方法は、ファイル識別子に従ってターゲットファイルのストリップの分配情報を取得するステップをさらに含み、実際のストリップの量N'に従って対応するストリップを決定し、対応するストリップを処理するステップは、特に、
新しいデータブロック読み出し要求を生成するステップであって、データブロック読み出し要求は、ストレージサーバノードからターゲットファイルのストリップを読み出すために使用される、ステップであって、ターゲットファイルのストリップの取得された分配情報に従って、データブロック読み出し要求を実際のストリップを格納するストレージサーバノードに送信するステップと、
実際のストリップを格納するストレージサーバノードの応答メッセージを受信するステップであって、応答メッセージは、実際のストリップが読み出され得ることを示す成功応答メッセージであるか、または実際のストリップが読み出され得ないことを示す不成功応答メッセージであり、成功応答メッセージは、コンシステンシーラベル情報および実際のストリップの有効ストリップの量DSCに関する情報を搬送する、ステップと、
受信された応答メッセージに従って、ターゲットファイルが読み出され得るかどうかを判定するステップとをさらに含む。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
受信された応答メッセージに従って、ターゲットファイルが読み出され得るかどうかを判定するステップでは、特に、
受信された成功応答メッセージの量が実際のストリップの量N'に等しく、すべての成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは読み出され得るか、または
受信された成功応答メッセージの量が、実際のストリップの量N'より少ない場合、受信された成功応答メッセージの量が、パリティストリップの量Mより多いかどうかが判定され、
受信された成功応答メッセージの量が、パリティストリップの量Mより多い場合、成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC以上であるかどうかと、成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じであるかどうかが判定され、成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DS以上であり、すべての成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは読み出されることができ、成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC以上でなく、すべての成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じではない場合、データブロック読み出し要求が、取得された分配情報に従って、パリティストリップを格納するストレージサーバノードに送信され、パリティストリップを格納するストレージサーバノードによって返される成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC以上であり、成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは読み出されることができ、またはパリティストリップを格納するストレージサーバノードによって返される成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC未満であるか、もしくは成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じでない場合、ターゲットファイルは読み出されることができない。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、この方法は、
受信された成功応答メッセージの量が、パリティストリップの量M以下であり、データブロック読み出し要求が、取得された分配情報に従って、パリティストリップを格納するストレージサーバノードに送信される場合、
パリティストリップを格納するストレージサーバノードによって返される応答メッセージを受信するステップと、
パリティストリップを格納するストレージサーバノードによって返される応答メッセージに従って、ターゲットファイルが読み出されることができるかどうかを判定するステップとをさらに含む。
本発明の第2の態様では、分散ファイルストレージシステムにおいてデータ処理方法を実装するためのデバイス30を実現し、デバイス30は、分散ファイルストレージシステム10においてストレージサーバノード101と通信し、デバイスは、受信モジュール301、処理モジュール303、および送信モジュール305を備え、
受信モジュール301は、ユーザのデータ処理要求を受信するように構成され、データ処理要求は、ターゲットファイルのファイル識別子、オフセットアドレス、ファイル長、および他の情報を搬送し、ターゲットファイルは、データ処理要求で処理される必要があるファイルであり、
処理モジュール303は、
データ処理要求で搬送される、ターゲットファイルの冗長情報をファイル識別子に従ってストレージサーバノードから取得し、冗長情報は、分散ファイルストレージシステムのデータストリップの量Nおよび分散ファイルストレージシステムのパリティストリップの量Mを含み、
データ処理要求で搬送されるターゲットファイルのオフセットアドレスおよび長さ情報に従ってターゲットファイルの有効ストリップの量DSCを決定し、有効ストリップは、ターゲットファイルのデータを含むストリップであり、
有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定し、
実際のストリップの量N'に従って対応するストリップを決定し、対応するストリップを処理するように構成され、
送信モジュール305は、処理の結果をユーザにフィードバックするように構成される。
第2の態様に関して、可能な実装方法において、
デバイス30は、分散ファイルストレージシステム10に接続されているアプリケーションサーバ20上に、または分散ファイルストレージシステム10内のストレージサーバノード101上に配置される。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定するステップでは、特に、
有効ストリップの量DSCが、パリティストリップの量M以下である場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となるか、または
有効ストリップの量DSCが、パリティストリップの量Mより大きい場合、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'DSCとなる。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求がデータ書き込み要求である場合に、実際のストリップの量N'に従って対応するストリップを決定するステップ、および対応するストリップを処理するステップは、
ターゲットファイルに対してストライピング処理を実行してN'個の実際のストリップを取得し、冗長アルゴリズムを使用することによってM個のパリティストリップを生成するステップと、
コンシステンシーラベル情報および有効ストリップの量DSCに関する情報をN'個の実際のストリップおよびM個のパリティストリップに追加するステップであって、コンシステンシーラベル情報は、タイムスタンプまたはバージョン番号であり得る、ステップと、
N'個の実際のストリップおよびM個のパリティストリップを対応するストレージサーバノード上に別々に書き込むステップとをさらに含む。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求がデータ書き込み要求である場合に、実際のストリップの量N'に従って対応するストリップを決定するステップ、および対応するストリップを処理するステップは、
新しいデータブロック読み出し要求を生成するステップであって、データブロック読み出し要求は、ストレージサーバノードからターゲットファイルのストリップを読み出すために使用される、ステップであって、ターゲットファイルのストリップの取得された分配情報に従って、データブロック読み出し要求を実際のストリップを格納するストレージサーバノードに送信するステップと、
実際のストリップを格納するストレージサーバノードの応答メッセージを受信するステップであって、応答メッセージは、実際のストリップが読み出され得ることを示す成功応答メッセージであるか、または実際のストリップが読み出され得ないことを示す不成功応答メッセージであり、成功応答メッセージは、実際のストリップのコンシステンシーラベル情報および有効ストリップの量DSCに関する情報を搬送する、ステップと、
受信された応答メッセージに従って、ターゲットファイルが読み出され得るかどうかを判定するステップとをさらに含む。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、受信モジュールは、ユーザのデータ削除要求を受信するようにさらに構成され、データ削除要求は、ターゲットファイルのファイル識別子を搬送し、ターゲットファイルは、削除されることを必要とするファイルであり、
処理モジュールは、ファイル識別子に従ってストレージサーバノードから冗長情報を取得し、冗長情報は、分散ファイルストレージシステムのデータストリップの量Nおよび分散ファイルストレージシステムのパリティストリップの量Mを含み、
分散ファイルストレージシステムのデータストリップの量Nに従って、ターゲットファイルのストリップを格納するストレージサーバノードを決定し、
データ削除要求をターゲットファイルのストリップを格納するストレージサーバノードに送信し、
ターゲットファイルのストリップを格納するストレージサーバノードの応答メッセージを受信し、応答メッセージは、削除成功を示す応答メッセージ、削除対象が存在していないことを示す応答メッセージ、および削除不成功を示す応答メッセージのうちの1つであり、
削除成功を示す受信された応答メッセージおよび削除対象が存在していないことを示す応答メッセージとの量が、データストリップの量Nを超える場合に、削除は成功であり、そうでなければ、削除は不成功であり、
送信モジュールは、削除成功または削除不成功の結果をユーザにフィードバックするように構成される。
本発明の実施形態において、有効ストリップは、ターゲットファイルのサイズに従って決定され、ターゲットファイルの実際のストリップも、さらに決定され、したがって、いずれの場合も予想ターゲットファイルが取得され得ることが保証され得る場合に、分散ファイルストレージシステム10内の空ストリップの量は、さらに低減されるものとしてよく、これにより、小さなファイルのシナリオにおける大量のネットワーク読み出し書き込みI/Oオペレーションおよびディスク読み出し書き込みI/Oオペレーションを低減することができ、それにより、分散ストレージシステム10の性能が改善される。
本発明の実施形態または従来技術における技術的解決策をより明確に説明するために、以下において、従来技術の実施形態の説明に必要な添付図面を簡単に紹介する。明らかに、以下の説明の添付図面は、本発明のいくつかの実施形態を示しており、当業者であれば、これらの添付図面から他の図面を導き出すことができる。
分散ファイルストレージシステムの概略構造図である。
ストリップの分配の概略図である
本発明の一実施形態によりデータ処理要求を実装するための方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ書き込み要求である方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ読み出し要求である方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ読み出し要求である方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ削除要求である方法の概略流れ図である。
本発明の一実施形態により分散ファイルストレージシステムにおいてデータ処理方法を実装するためのデバイスの概略構造図である。
本発明のさまざまな例示的な実施形態、特徴、および態様は、添付図面を参照しつつ以下で詳細に説明される。添付図面中の同じ参照符号は、同じまたは類似の機能を有するコンポーネントを示す。実施形態のさまざまな態様が添付図面中に示されているが、特に断りのない限り、添付図面を縮尺通りに製図することは必要ない。
それに加えて、本発明をよりよく説明するために、以下の特定の実装方法に、多数の具体的詳細が提示されている。いくつかの実施形態では、本発明の本旨を明確に述べるために、当業者に知られている方法、手段、コンポーネント、および回路については、詳細に説明されていない。
複数のストレージサーバノード101を備える、分散ファイルストレージシステム10の主要構成部品が、図1に示されており、複数のストレージサーバノード101は、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成する。分散ファイルストレージシステム10は、フロントエンド(Front-End)スイッチ50およびバックエンド(Back-End)スイッチ60をさらに備える。フロントエンドスイッチ50は、外部サービス要求機能およびユーザデータとクラスタとの間のデータ交換を実装するように構成される。バックエンドスイッチ60は、内部要求機能およびクラスタ内のストレージサーバノードの間のデータ交換を実装するように構成される。アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。
分散ファイルストレージシステム10において、一般的に、それぞれのアプリケーションは、ストレージサーバノード101と2つの方法で相互にやり取りする。第1の方法では、それぞれのアプリケーションが、標準ポータブルオペレーティングシステムインターフェース(Portable Operating System Interface、略してPOSIX)を使用することによって、アプリケーションサーバ20上に配備されるファイルシステムクライアントエージェントCA(Client Agent)30に直接アクセスする。分散ファイルストレージシステム10の、サービスを外部から提供する、ポータルとして、クライアントエージェント30は、アプリケーションの要求を受信した後に、クラスタ内のストレージサーバノード101と相互にやり取りする。第2のアクセス方法は、それぞれのアプリケーションは、一般的に使用されているNASプロトコル(NFS/CIFSなど)クライアントを使用することによって対応するネットワークアタッチトストレージサーバ(Network Attached Storage Server、NAS Server)にアクセスし、NAS Serverおよびストレージサーバノード101は一緒に配備され、次いで、NAS ServerはServerノード上に配備されているファイルシステムクライアントエージェント30にアクセスし、ストレージサービスを実装する。本発明の実装原理を明確に説明するために、特定の説明に第1のアクセス方法が使用され、第2のアクセス方法では、類似の実装原理を使用する。
図1に示されているサービスシステムは、一例として使用されている。サービスシステムは、2つのアプリケーションサーバ20を備え、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、ユーザのデータ処理要求は、最初に、アプリケーションサーバ20上のクライアントエージェント30に送信され、これにより、クライアントエージェント30は、データ処理要求に対して対応する処理を実行する。クライアントエージェント30がストレージサーバノード101上に配備されている場合、ユーザのデータ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ処理要求を、対応するストレージサーバノード101上のクライアントエージェント30に送信し、ストレージサーバノード101上のクライアントエージェント30が、データ処理要求を処理する。
分散ファイルストレージシステム10内のストレージサーバ101が相互接続されて、クラスタを形成し、大規模ネットワークRAIDを構成し、N+M個の冗長保護メカニズムが、格納されているデータに使用される。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って固定された値に設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに生成されるデータストリップの量であり、Nは、分散ファイルストレージシステム10内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。分散ファイルストレージシステム10のNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。メタデータ情報テーブルは、既存の実装方法におけるものと同じであり、したがって、さらに本明細書で説明することはしない。説明をより明確にするために、処理されるべきファイルデータの1つは1つのデータストライプと称され、ストライピング処理が1つのデータストライプに対して実行されるときに、データストライプは、N個のデータストリップに分割され、M個のパリティストリップは、冗長アルゴリズムに従って生成される。
クライアントエージェント30は、受信されたファイルデータに対してストライピング処理を実行し、ファイルデータをN個のデータストリップに分割し、次いで、冗長アルゴリズムに従ってM個のパリティストリップを生成し、生成されたデータストリップおよびパリティストリップを対応するストレージサーバノード101に格納し、同じタイムスタンプもしくはバージョン番号、または他のコンシステンシーラベル情報をデータストリップおよびパリティストリップに記録する。N個のデータストリップおよびM個のパリティストリップが対応するストレージサーバノード101に書き込まれる。これらのストリップは、ストレージサーバノード101の番号付け順序でストレージサーバノード101に書き込まれるか、または他のルールに従って対応するサーバノード101に書き込まれ得る。書き込みルールは、既存の書き込みルールと同じであり、本明細書ではそれに加えて説明することはしない。ユーザがファイルデータを読み出すことを必要とする場合、クライアントエージェント30は、読み出される必要のあるファイルデータの識別情報を使用することによって、コンシステンシーラベル情報が同じである特定の量のデータストリップまたはパリティストリップを読み出し、それによりユーザによって読み出される必要のあるファイルデータを取得する。冗長アルゴリズムのコンシステンシー原理によれば、N+M冗長保護が使用されるデータストライプが読み出されるときに、読み出されたデータストライプが予想されたデータであることを保証するためにコンシステンシーラベル情報がN+Mストリップにおいて同じである少なくともN個のストリップが取得される必要がある。
図1に示されている分散ファイルストレージシステム10は、8個のストレージサーバノード101を備える。分散ファイルストレージシステム10のMが2に設定され、Nは6に設定されると仮定する。確かに、Mは2に設定され、Nは5に設定され得る。この実施形態では、Nが6であり、Mが2であることが、説明の例として使用される。ファイルデータが分散ファイルストレージシステム10に格納される必要がある場合、アプリケーションサーバ20上のクライアントエージェント30は、格納される必要のあるファイルデータを受信し、ファイルデータに対してストライピング処理を実行してファイルデータを6個のデータストリップに分割し、次いで、冗長アルゴリズムを使用することによって2つのパリティストリップを生成し、同じタイムスタンプもしくはバージョン番号、またはデータストリップおよびパリティストリップ内の他のコンシステンシーラベル情報を記録する。クライアントエージェント30は、ストレージサーバノード1上の6個のデータストリップをストレージサーバノード101の順にストレージサーバノード6に別々に格納し、2つのパリティストリップを、たとえば、図2に示されている順序で、ストレージサーバノード7およびストレージサーバノード8に格納する。ファイルデータが読み出される必要があるときに、クライアントエージェント30は、ファイルデータの識別情報に従って、コンシステンシーラベル情報がストレージサーバノード101から同じである少なくとも6個のストリップを読み出し、6個のストリップは、データストリップおよびパリティストリップ内の任意の6個のストリップである。
小さなファイルデータのシナリオでは、有効なファイルデータは、いくつかのデータストリップのみを占有するものとしてよく、既存の実装解決策では、残りのデータストリップは、有効なファイルデータを含まない空のストリップである。図1および図2に示されているように、Nが6であり、Mが2である分散ファイルストレージシステム10において、8個のストレージサーバノード101があり、データストリップは、ストレージサーバノード1からストレージサーバノード6上に格納され、パリティストリップは、ストレージサーバノード7およびストレージサーバ8上に格納される。ストライピングが、小さなファイルデータに対して実行される場合、2つのデータストリップのみ、たとえば、D1およびD2が占有され、これはストレージサーバノード1およびストレージサーバノード2上に格納され、タイムスタンプT1が記録される。残り4つのデータストリップD3からD6は、ファイルデータを含まないが、同じタイムスタンプT1は、まだ、既存の実装方法においてストレージサーバノード3から6上に記録される必要がある。パリティストリップD7およびD8は、ストレージサーバノード7およびストレージサーバノード8上にそれぞれ格納され、同じタイムスタンプT1が記録される。小さなファイルデータが読み出されるときに、タイムスタンプT1が記録される少なくとも6個のストリップが、予想される小さなファイルデータを取得するために読み出される必要がある。その結果、小さなファイルデータが書き込まれるか、または読み出されるときに、空のストリップに対するI/Oオペレーションが引き起こされ、分散ファイルストレージシステムのディスクIOおよびネットワークIOリソースが占有される。大規模分散ファイルストレージシステムは、大量のデータストリップを有するので、小さなファイルデータについて生成される空のストリップの量は、それに応じて増加する。この場合、分散ファイルストレージシステムの大量のディスクI/OおよびネットワークI/Oリソースが無駄に使われ、これにより、分散ファイルストレージシステムのIO性能に影響が及ぶ。
本発明は、空のストリップ上のオペレーションを低減し、分散ファイルストレージシステムのディスクI/OおよびネットワークI/Oのオーバーヘッドを軽減し、分散ファイルストレージシステムのIO性能を改善することができる、分散ファイルストレージシステム10内の小さなファイルデータを処理するための新しい方法を提供する。本発明は、もっぱら、処理されるべきファイルの異なるサイズに従ってN'+M冗長保護メカニズムを使用する。Mは、分散ファイルストレージシステムのパリティストリップの量であり、N'は、ファイルデータに対してストライピングが実行されるときにファイルデータのサイズに従って決定される実際のストリップの量である。分割を使って得られる実際のストリップの量N'は、ファイルデータのサイズと共に変化し、ファイルデータの実際のストリップの量の動的な調整を実装することができる。これは、小さなファイルのシナリオにおいて空のストリップの量を減らすことができ、したがって、分散ファイルストレージシステムにおけるディスクIOオペレーションおよびネットワークIOオペレーションの量が低減され、分散ファイルストレージシステムの性能が改善される。本発明によって提供される解決策で、そのまま、さまざまな異常の場合における予想されるファイルデータを取得することができることを保証するために、N'は、Mより大きい必要があり、言い換えると、実際のデータストリップの量およびパリティストリップの量は、多数決原理の条件を満たしている必要があり、データは、異常な場合に復元可能である。
図1に示されているように、本発明の一実施形態が適用可能である分散ファイルストレージシステム10の構造は、8基のストレージサーバ101を備え、複数のストレージサーバ101は、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、フロントエンドスイッチ50を使用することによってユーザデータとクラスタとの間の通信を実装する。クラスタ内のストレージサーバノード101は、バックエンドスイッチ60を使用することによって内部通信を実装する。クライアントエージェント30は、分散ファイルストレージシステム10内のそれぞれのストレージサーバノード101上にも配備され、それぞれのストレージサーバノード101上に配備されているクライアントエージェント30の機能は、アプリケーションサーバ20上に配備されているクライアントエージェント30の機能に類似しており、さらに説明することはしない。
分散ファイルストレージシステムの冗長性では、Mが2であり、Nは6である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピング処理がファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。
アプリケーションサーバ20上のクライアントエージェント30は、アプリケーションによって送信されるユーザのデータ処理要求を受信し、データ処理要求は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送し、ターゲットファイルは、処理対象のファイルである。ファイルデータの有効ストリップの量(Data Strip Count、DSC)は、データ処理要求で搬送されるオフセットアドレスおよび長さ情報に従って計算され、有効ストリップは、ファイルデータを含むデータストリップである。小さなファイルデータのシナリオでは、ファイルデータに対してストライピングが実行されるときに分割を用いて得られる有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nより少ない。小さなファイルデータのシナリオでは、より大規模な分散ファイルストレージシステムは、有効ストリップの量DSCと分散ファイルストレージシステムのデータストリップの量Nとの差がより大きいことを示す。
クライアントエージェント30が、分散ファイルストレージシステム10内のストレージサーバノード101上に配備されるときに、データ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ要求を、ストレージサーバ上のクライアントエージェント30に送信する。アプリケーションサーバ20によってデータ処理要求をストレージサーバ101上のクライアントエージェントに送信するための方法は、既存の方法に類似しており、ここで再び詳細に説明することはしない。ストレージサーバ101上でクライアントエージェント30によるデータ処理要求を処理するための方法は、アプリケーションサーバ20上のクライアントエージェント30の処理方法に類似しており、さらに説明することはしない。
アプリケーションサーバ20上のクライアントエージェント30は、有効ストリップの計算された量DSCをパリティストリップの量Mと比較する。冗長アルゴリズムの多数決原理により、どのような障害が発生しようと処理中に予想されるファイルデータが取得され得ることを保証するために、パリティストリップの量Mを超えるストリップの量が読み出される必要がある。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。実際のストリップの量N'と、有効ストリップの量DSCとの量の差は、空のストリップ、すなわち、加える必要のある空のストリップの量ESCを加えることによって補償される必要があり、この場合、ESC=N'-DSC=(M+1)-DSCである。これは、分散ファイルストレージシステム内の空のストリップの量を低減し、それに応じて、空のストリップ上の読み出し書き込みIOオペレーションを低減し、これにより、分散ファイルストレージシステムのIO性能を改善することができる。
有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなる。この場合、空のストリップの量は0であり、言い換えると、空のストリップはいっさい加えられる必要がなく、そのため、分散ファイルストレージシステム内の空のストリップの量が低減される。
ファイルデータが大きい場合、有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nと同じであってよく、この場合、空のストリップの量は0である、すなわち、空のストリップはいっさい追加される必要がない。
実際のストリップの量N'は、ファイルデータのサイズに従って動的に調整され、特に、小さなファイルデータのシナリオでは、実際のストリップの量N'が、分散ファイルストレージシステムのデータストリップの量Nの代わりに、使用され、したがって、分散ファイルストレージシステム内の空のストリップの量は、効果的に低減される。それに応じて、空のストリップ上の読み出し書き込みIOオペレーションは低減され、分散ファイルストレージシステムのIO性能が改善される。
クライアントエージェント30は、N'の実際のストリップ上で対応する処理を実行する。特定の処理方法は、異なる種類のデータ処理要求に従って変わる。
データ処理要求がデータ書き込み要求である例を使用することによって、詳細な説明が以下に示され、実装方法のプロセスが、図3に示されている。この方法が適用可能である分散ファイルストレージシステムも、図1に示されている分散ファイルストレージシステム10を例として使用することによってさらに説明されている。
図1に示されている分散ファイルストレージシステム10において、ストレージサーバノード1からストレージサーバノード8への相互接続が低遅延および高スループットのネットワークを使用することによって行われ、クラスタを形成する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、フロントエンドスイッチ50を使用することによってユーザデータとクラスタとの間の通信を実装する。クラスタ内のストレージサーバノード101は、バックエンドスイッチ60を使用することによって内部通信を実装する。クライアントエージェント30は、分散ファイルストレージシステム10内のそれぞれのストレージサーバノード101上にも配備されてもよく、クライアントエージェント30の機能は、アプリケーションサーバ20上に配備されているクライアントエージェント30の機能に類似しており、さらに説明することはしない。
N+M冗長保護メカニズムは、分散ファイルストレージシステム10に格納されるファイルデータに使用される。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム10内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステム10のNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。NとMとの和は、分散ファイルストレージシステム10内のストレージサーバノードの全量に等しいものとしてよいか、または複数のストリップが、1つのストレージサーバノード101上に格納されるものとしてよい、すなわち、NとMとの和も、ストレージサーバノードの全量より大きいものとしてよい。この実施形態では、分散ファイルストレージシステム10のNは6であり、Mは2である。標準ポータブルオペレーティングシステムインターフェースを通じて、データ書き込み要求が、アプリケーションサーバ20上に配備されているファイルシステムのクライアントエージェント30に送信される。クライアントエージェント30は、データ書き込み要求を処理し、次いで、フロントエンドスイッチ50を使用することによってストレージサーバノード101と通信する。クライアントエージェント30がストレージサーバノード101上に配備される場合、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ書き込み要求を、対応するストレージサーバノード101上のクライアントエージェント30に送信し、次いで、ストレージサーバノード101上のクライアントエージェント30は、データ書き込み要求を処理し、バックエンドスイッチ60を使用することによってクラスタ内のストレージサーバノード101と通信する。
ユーザのファイルデータが分散ファイルストレージシステム10に書き込まれる必要がある場合、ユーザは、クライアントを使用することによってアプリケーションサーバ20上のクライアントエージェント30へのデータ書き込み要求を開始する。説明の便宜上、書き込まれるべきファイルデータは、ターゲットファイルと称される。クライアントエージェント30は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送するデータ書き込み要求を受信する。この実施形態では、ファイル識別子FIDは、485であり、オフセットアドレスは0Kであり、ファイル長は160Kである。クライアントエージェント30は、ターゲットファイルのファイル識別子に従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報およびストリップのサイズを取得し、冗長情報は、NおよびMの値である。この実施形態では、Nの値は6であり、Mの値は2であり、ストリップのサイズは128Kである。
クライアントエージェント30は、データ書き込み要求で搬送されるオフセットアドレスおよびファイル長情報、ストリップの取得されたサイズに従って、ターゲットファイルに対してストライピング処理を実行して、ターゲットファイルの有効ストリップの量DSCを取得する。この実施形態では、ターゲットファイルのオフセットアドレス0Kであり、ファイル長は160Kであり、ストリップのサイズは128Kであり、したがって、クライアントエージェントは、ターゲットファイルに対してストライピング処理を実行して、2つの有効スリップを生成する。
クライアントエージェント30は、ターゲットファイルに対してストライピング処理が実行されたときに分割を用いて得られる有効ストリップの量DSCを、パリティストリップの取得された量Mと比較する。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。この場合、空のストリップが追加される必要があり、加える必要のある空のストリップの量ESCは、実際のストリップの量N'から有効ストリップの量DSCを引いた値に等しい、ESC=N'-DSC=(M+1)-DSCである。有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなり、この場合、空のストリップが追加される必要がある。
この実施形態では、有効ストリップの量DSCが2であり、パリティストリップの量Mは2であり、したがって、有効ストリップの量DSCは、パリティストリップの量Mに等しい、すなわち、DSC=Mである。この場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1であり、N'=2+1=3である。ストライピング処理がターゲットファイルに対して実行される場合、ターゲットファイルは3つのストリップに分割される必要がある、すなわち、ターゲットファイルの実際のストリップの量N'は3であり、分割を用いて得られるターゲットファイルの有効ストリップの量DSCは、2なので、この場合、1つの空のストリップのみが追加される必要がある。しかし、既存の実装方法では、ターゲットファイルは、6個のデータストリップを有し、2つの有効ストリップがある場合には、4個の空のストリップが追加される必要がある。これからわかるように、本発明の方法を使用することによって、空のストリップの量は大幅に低減され得る。
ターゲットファイルに対してストライピングが実行されたときに分割を用いて得られる有効ストリップの量DSCが1であり、パリティストリップの量Mが2である場合、ターゲットファイルの有効ストリップの量DSCは、パリティストリップの量Mより少ない、この場合、DSC<Mである。この場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1であり、N'=2+1=3である。ストライピングがターゲットファイルに対して実行される場合、ターゲットファイルは3つのストリップに分割される必要がある、すなわち、ターゲットファイルの実際のストリップの量N'は3であり、分割を用いて得られるターゲットファイルの有効ストリップの量DSCは、1なので、この場合、2つの空のストリップが追加される必要がある。
それに加えて、ターゲットファイルに対してストライピングが実行されたときに分割を用いて得られる有効ストリップの量DSCが、パリティストリップの量Mより大きい、すなわち、DSC>Mとなる場合がある。たとえば、クライアントエージェントがターゲットファイルに対してストライプ処理を実行するときに分割を用いて得られる有効ストリップの量DSCは、5であり、この場合、DSC>Mであり、実際のストリップの量N'は、DSCに等しい、すなわち、N'=5であり、空のストリップはいっさい追加される必要はない。
これからわかるように、本発明の方法を使用することによって、ターゲットファイルの実際のストリップの量N'は、ターゲットファイルのサイズに従って動的に調整されるものとしてよく、これは、ターゲットファイルがいずれの場合も正しく読み出されることを保証するだけでなく、空のストリップの量を有効に低減することもできる。それに応じて、空のストリップ上の読み出し書き込みIOオペレーションは低減され、分散ファイルストレージシステムのIO性能が改善される。
クライアントエージェント30は、冗長アルゴリズムを使用することによって、取得された実際のストリップの量N'に従ってM個のパリティストリップを生成し、コンシステンシーラベル情報および有効ストリップの量DSCの情報をN'個の実際のストリップおよびM個のパリティストリップに加える。コンシステンシーラベル情報は、同じタイムスタンプ(timestamp)またはバージョン番号に関する情報であってよい。
たとえば、クライアントエージェント30は、ターゲットファイルに対してストライピング処理を実行し、有効ストリップD1およびD2を取得する。この場合、ターゲットファイルの有効ストリップの量DSCは2である。有効ストリップの量2はパリティストリップの量2と比較され、有効ストリップの量DSCは、パリティストリップの量Mに等しく、ターゲットファイルの実際のストリップの量N'は、3に等しく、この場合、1つの空のストリップD3が追加される必要がある。クライアントエージェントは、ストリップD1、D2、およびD3に従ってパリティストリップD7およびD8を生成し、タイムスタンプT1および2に等しい有効ストリップの量DSCをストリップD1、D2、D3、D7、およびD8に加える。
クライアントエージェント30は、コンシステンシーラベル情報および有効ストリップの量DSCを搬送する実際のストリップおよびパリティストリップを対応するストレージサーバノード101に書き込む。それぞれのストリップが書き込まれるべきストレージサーバノード101を特に決定するための方法は、既存の実装方法に類似しており、再び詳細に説明することはしない。クライアントエージェント30は、実際のストリップの量N'、パリティストリップの量M、およびターゲットファイルのストリップの分配情報をファイルメタデータ情報テーブルに格納し、これにより、ターゲットファイルが読み出されるときに対応するストレージサーバノード101からターゲットファイルのストリップを読み出すのを助ける。
たとえば、クライアントエージェント30は、タイムスタンプT1および2に等しい有効ストリップの量DSCを有するD1、D2、およびD3をストレージサーバノード1、ストレージサーバノード2、およびストレージサーバノード3に、それぞれ、格納し、タイムスタンプT1および2に等しい有効ストリップの量DSCを有するD7およびD8をストレージサーバノード7およびストレージサーバノード8に、それぞれ、格納する。クライアントエージェント30は、3に等しい実際のストリップの量N'、2に等しいパリティストリップの量M、およびターゲットファイルのストリップの分配情報をファイルメタデータ情報テーブルに格納する。
クライアントエージェント30が、ストレージサーバノード101上に配備される分散ファイルストレージシステム10について、クライアントエージェント30は、バックエンドスイッチ60を使用することによって、ストリップの格納などの、オペレーションを実装し、特定の実装方法は、既存の実装方法と同じであり、本明細書ではさらに説明することはしない。
これからわかるように、ターゲットファイルが小さいファイルデータであるシナリオでは、ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られる有効ストリップの量DSCが分散ファイルストレージシステムのパリティストリップの量Mより小さい場合に、実際のストリップの量N'はパリティストリップの量Mに1を加えた値に等しく、Mの値は一般的には小さく、この場合、ごく少数の空のストリップを追加するだけでよい。ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られ有効ストリップの量DSCが、分散ファイルストレージシステムのパリティストリップの量Mより多い場合、実際のストリップの量N'は、この場合、有効ストリップの量に等しく、いっさい空のストリップが追加される必要はない。このようにして、ターゲットファイルが、小さいファイルデータである場合、ターゲットファイルに対してストライピング処理が実行されて、従来技術の分散ファイルストレージシステムのNのデータストリップの量の代わりに、N'個の実際のストリップを生成し、これにより、空のストリップの量を低減し、実際、空のストリップ上の書き込みオペレーションを低減し、分散ファイルストレージシステム内のIOオペレーションを低減し、分散ファイルストレージシステムの性能を改善する。特に、大規模な分散ファイルストレージシステムでは、分散ファイルストレージシステムの性能を改善する効果はより明らかである。
以下の実施形態では、データ処理要求がデータ読み出し要求である例を使用することによって、詳細な説明が示され、実装方法のプロセスが、図4に示されている。データ読み出し要求は、ユーザがターゲットファイルを読み出すことを必要とするという要求を指す。分散ファイルストレージシステム10の構造は、データ書き込み要求であるデータ処理要求が適用される分散ファイルストレージシステム10の構造と同じであり、これは図1に示されている。この方法実施形態では、これは、Nが6であり、Mが2であるという説明に対する一例としても使用される。NおよびMの値は、必要に応じて他の数値に設定することもでき、その実装原理は同じであり、さらに説明することはしない。それに加えて、この実施形態では、クライアントエージェント30がアプリケーションサーバ20上に配備される一例を使用することによっても説明がなされる。
ユーザが、格納されているファイルデータを分散ファイルストレージシステム10から読み出すことを必要とする場合、ユーザは、アプリケーションサーバ20上のクライアントエージェント30へのデータ読み出し要求を開始する。説明をわかりやすくするため、ユーザによって読み出されるべきファイルデータは、ターゲットファイルと称される。ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送するデータ読み出し要求。データ読み出し要求を受信した後に、クライアントエージェント30は、データ読み出し要求で搬送されるファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステム10の冗長情報を取得し、冗長情報は、NおよびMの値である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピング処理がファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステム10のNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。この実施形態では、分散ファイルストレージシステム10のNの値は6であり、分散ファイルストレージシステム10のMの値は2である。
データ読み出し要求を受信した後に、アプリケーションサーバ20上のクライアントエージェント30は、データストリップの量N、パリティストリップの量M、およびファイル識別子によるターゲットファイルのストリップのサイズを取得することができる。クライアントエージェントは、データ読み出し要求で搬送されるオフセットアドレスおよびファイル長情報、およびストリップのサイズに従ってターゲットファイルの有効ストリップの量DSCを算出する。特定の計算方法は、データ書き込み要求に対する解決策における方法に類似しており、本明細書でさらに説明することはしない。以下のステップでは、これは、ターゲットのファイルの有効ストリップの量は2であり、ターゲットファイルの実際のストリップの量は3であり、ターゲットファイルのパリティストリップの量は2であるという説明に対する例として使用される。クライアントエージェント30は、データ読み出し要求で搬送されるファイル識別子FIDを使用することによってターゲットファイルのストリップの分配情報を見つけ、分配情報に従って、ターゲットファイルの実際のストリップおよびパリティストリップが格納されるストレージサーバノードを決定することができ、実際のストリップの計算された量N'およびパリティストリップの量に従って、ターゲットファイルの実際のストリップおよびパリティストリップを格納するサーバノードの配置をさらに決定することができる。
クライアントエージェント30は、新しいデータブロック読み出し要求を生成し、データブロック読み出し要求を決定されたストレージサーバノード101に送信する。データブロック読み出し要求は、ストレージサーバノード101上のターゲットファイルのストリップを読み出すために使用される。
クライアントエージェント30は、データブロック読み出し要求をすべての決定されたストレージサーバノード101に送信するか、またはデータブロック読み出し要求を分散ファイルストレージシステム10内のすべてのストレージサーバノード101に送信することができる。クライアントエージェント30は、また、データブロック読み出し要求を最初にターゲットファイルの実際のストリップを格納するストレージサーバノード101に送信することができ、ターゲットファイルの実際のストリップを格納するストレージサーバノード101によってフィードバックされる応答が、ターゲットファイルが正しく読み出せないことを示す場合、クライアントエージェント30は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信する。この実施形態では、最後の場合は説明のために使用される、すなわち、データブロック読み出し要求は、ターゲットファイルの実際のストリップを格納するストレージサーバノード101に最初に送信され、ターゲットファイルの実際のストリップを格納するストレージサーバノード101によってフィードバックされる応答が、正しく読み出されることができない場合、データブロック読み出し要求は、ターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信される。
データブロック読み出し要求を受信した後に、ストレージサーバノード101は、データブロック読み出し要求で搬送されるファイル識別子に従って、格納されている対応するストリップが読み出せるかどうかを判定し、格納されている対応するストリップが読み出せる場合、ストレージサーバノード101は、ストリップが読み出せることを示す成功応答メッセージをクライアントエージェントに送信し、成功応答メッセージは、ストリップのコンシステンシーラベル情報および有効ストリップの量DSCに関する情報を搬送し、格納されている対応するストリップがないか、または格納されている対応するストリップが損傷し、読み出し不能である場合、ストレージサーバノード101は、ストリップが読み出せないことを示す不成功応答メッセージをクライアントエージェントに送信する。
クライアントエージェント30は、データブロック読み出し要求をターゲットファイルの実際のストリップを格納するストレージサーバノード101に送信し、それぞれのストレージサーバノード101によって返されるデータブロック読み出し要求の応答メッセージを受信する。成功応答メッセージの量が実際のストリップの量N'と同じであり、すべての成功応答メッセージ内の、コンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは、この場合に、読み出されるものとしてよく、クライアントエージェント30は、実際のストリップを読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。実際のストリップを読み出し、クライアントエージェント30によりターゲットファイルを構築する実装方法は、既存の方法と同じであり、本明細書ではさらに説明することはしない。
たとえば、データ読み出し要求を受信した後に、クライアントエージェント30は、データ読み出し要求で搬送されるターゲットファイルのファイル識別子に従ってメタデータ情報テーブルを検索し、ターゲットファイルのデータストリップの量Nが6であり、パリティストリップの量Mが2であることを取得し、ターゲットファイルのストリップの分配情報を取得する、すなわち、実際のストリップD1はストレージサーバノード1上に格納され、実際のストリップD2はストレージサーバノード2上に格納され、実際のストリップD3はストレージサーバノード3上に格納され、パリティストリップD7はストレージサーバノード7上に格納され、パリティストリップD8はストレージサーバノード8上に格納される。クライアントエージェント30は、データ読み出し要求で搬送される情報およびターゲットファイルのファイル識別子を使用することによって得られる情報に従ってターゲットファイルの有効ストリップの量DSCおよびターゲットファイルの実際のストリップの量N'を計算する。詳細な計算方法については、データ書き出し要求のプロセスにおける関連する説明を参照されたい。
クライアントエージェント30は、新しいデータブロック読み出し要求を生成し、データブロック読み出し要求は、ストレージサーバノード101からターゲットファイルのストリップを読み出すために使用される。
クライアントエージェント30は、データブロック読み出し要求をターゲットファイルの実際のストリップを格納するストレージサーバノード1から3に送信する。ストレージサーバノード1から3は、実際のストリップが読み出され得ることを示す成功応答メッセージを返し、成功応答メッセージは、それぞれ、ストリップのタイムスタンプ情報および有効ストリップの量に関する情報を搬送する。クライアントエージェント30は、タイムスタンプ情報およびすべての成功応答メッセージで搬送される有効ストリップの量に関する情報が、別々に同じであるかどうかを判定する。タイムスタンプ情報およびすべての成功応答メッセージで搬送される有効ストリップの量に関する情報が、別々に同じである場合、クライアントエージェント30は、実際のストリップを読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。本発明のこの実施形態では、クライアントエージェント30は、コンシステンシーラベル情報および有効ストリップの量に関する情報がすべて別々に同じである3つのストリップを読み出すことをのみを必要とする。しかし、従来技術では、予想されたターゲットファイルを取得するために、同じコンシステンシーラベル情報および有効ストリップの量DSCに関する同じ情報を有するN(N=6)のストリップが読み出されることが必要である。その結果、さらに3つの空のストリップが読み出される必要があり、それによって、分散ファイルストレージシステム内のIOオペレーションの無駄が生じる。大規模な分散ファイルストレージシステムでは、データストリップの量Nの値は大きく、それに応じて、操作される必要のある空のストリップの量もより大きく、これにより、分散ファイルストレージシステムのIO性能に対する負担が増大する。この実施形態で言及されている方法を使用することによって、空のストリップに対する読み出しオペレーションは、効果的に低減されるものとしてよく、これにより、分散ファイルストレージシステム全体のIO性能が改善される。
ターゲットファイルの実際のストリップを格納するストレージサーバノード101によってフィードバックされる成功応答メッセージの量が、実際のストリップの量N'より小さいか、または同じコンシステンシーラベル情報および有効ストリップの量DSCに関する同じ情報を搬送する成功応答メッセージの量が、実際のストリップの量N'よりも少ない場合、成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量DSCに関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかがさらに判定される。
成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、クライアントエージェント30は、成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定し、それらが、ターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、クライアントエージェント30は、対応する処理を実行し、特定の処理方法は、既存の実装方法と同じであり、本明細書でさらに説明することはしない。成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、クライアントエージェント30は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信し、ターゲットファイルのパリティストリップを格納するストレージサーバノード101の応答メッセージを受信する。次いで、クライアントエージェント30は、すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定し、それらが、ターゲットファイルの有効ストリップの量DSC以上である場合、クライアントエージェント30は、この場合、予想されたターゲットファイルを読み出すことができ、それらが、ターゲットファイルの有効ストリップの量DSC未満である場合、クライアントエージェント30は、ユーザに、読み出しが不成功であることを示すメッセージをフィードバックする。
成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量M以下である場合、クライアントエージェント30は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信し、ターゲットファイルのパリティストリップを格納するストレージサーバノード101の応答メッセージを受信する。次いで、クライアントエージェント30は、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、クライアントエージェント30は、すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量Mよりも少ない場合、クライアントエージェント30は、ユーザに、読み出しが不成功であることを示すメッセージをフィードバックする。
以下では、ターゲットのファイルの有効ストリップの量DSCは2であり、ターゲットファイルの実際のストリップの量N'は3であり、ターゲットファイルのパリティストリップの量Mは2である例を使用することによって説明が行われる。ターゲットファイルの有効ストリップD1は、ストレージサーバノード1上に格納され、ターゲットファイルの有効ストリップD2は、ストレージサーバノード2上に格納され、ターゲットファイルの空のストリップD3は、ストレージサーバノード3上に格納され、パリティストリップD7はストレージサーバノード7上に格納され、パリティストリップD8はストレージサーバノード8上に格納される。ストリップD1、D2、D3、D7、およびD8において、コンシステンシーラベル情報はタイムスタンプT1であり、有効ストリップの量に関する情報はDSC=2である。クライアントエージェント30は、最初に、ユーザの受信されたデータブロック読み出し要求を、ストレージサーバノード1、ストレージサーバノード2、およびストレージサーバノード3に送信する。ストレージサーバノード1、ストレージサーバノード2、およびストレージサーバノード3がすべて、成功応答メッセージをクライアントエージェント30に送信する場合、クライアントエージェント30は、ストリップの3つの成功応答メッセージがあり、成功応答メッセージで搬送されるタイムスタンプおよびDSCが別々に同じである、すなわち、成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量がターゲットファイルの実際のストリップの量3と同じであると判定し、この場合、予想されたターゲットファイルが読み出されるものとしてよく、クライアントエージェント30は、ストリップD1、D2、およびD3を読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。ストレージサーバノード1およびストレージサーバノード3が両方とも、成功応答メッセージをフィードバックし、成功応答メッセージが、タイムスタンプT1およびストリップD1およびD3の有効ストリップの量DSC=2に関する情報を搬送するが、ストレージサーバノード2は、この場合に格納されているストリップD2が損傷しているため不成功応答メッセージをフィードバックする場合、成功応答が返されるストリップは2つしかない、すなわち、クライアントは2つの成功応答メッセージを受信し、その量は、ターゲットファイルの実際のストリップの量3より少なく、クライアントエージェント30は、成功応答メッセージの量2を、分散ファイルストレージシステムのパリティストリップの量2とさらに比較する必要がある。成功応答メッセージの量2は、分散ファイルストレージシステムのパリティストリップの量2と同じであり、したがって、クライアントエージェント30は、データブロック読み出し要求をストレージサーバノード7およびストレージサーバノード8に送信する。ストレージサーバノード7およびストレージサーバノード8は、両方とも成功応答メッセージをクライアントエージェント30にフィードバックし、成功応答メッセージは、タイムスタンプT1およびストリップD7およびD8の有効ストリップの量DSC=2に関する情報を別々に搬送する。クライアントエージェント30は、同じタイムスタンプおよび有効ストリップの量に関する同じ情報を有する受信された成功応答メッセージの量の和(有効ストリップに対する成功応答メッセージの量とパリティストリップに対する成功応答メッセージの量との和(1+2=3))をターゲットファイルの有効ストリップの量2と比較する。この場合、同じタイムスタンプおよび有効ストリップの量に関する同じ情報を有する成功応答メッセージの量は、ターゲットファイルの有効ストリップの量2より大きく、この場合、予想されたターゲットファイルが読み出されるものとしてよく、クライアントエージェント30は、ストリップD1、D7、およびD8を読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。
データ処理要求は、データ削除要求またはデータ切り捨て要求であってもよく、実装プロセスは、図5Aおよび図5Bに示されている。データ処理要求が適用される分散ファイルストレージシステム10の構造は、図1に示されている、他のデータ処理要求の構造と同じである。データ削除要求の実装方法は、データ切り捨て要求の実装方法に類似しており、データ削除要求は、説明のために以下で例として使用され、データ切り捨て要求の実装方法について、さらに説明することはしない。この実施形態では、分散ファイルストレージシステムのNの値は6であり、Mの値2である。NおよびMの値は、必要に応じて他の数値に設定することもでき、その実装原理は同じであり、さらに説明することはしない。それに加えて、この実施形態では、クライアントエージェント30がアプリケーションサーバ20上に配備される一例を使用することによっても説明がなされる。
ユーザは、アプリケーションサーバ20上のクライアントエージェント30へのデータ削除要求を開始し、ユーザによって削除されるべきファイルデータは、ターゲットファイルと称され、データ削除要求は、ストレージサーバノード上に格納されているターゲットファイルの関係するストリップを削除するために使用される。ターゲットファイルのファイル識別子FIDに関する情報を搬送するデータ削除要求。データ削除要求を受信した後に、クライアントエージェント30は、データ削除要求で搬送される、ファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報およびストリップの分配情報を取得し、冗長情報は、NおよびMの値である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。
ここで、これは、分散ファイルストレージシステムのパリティストリップの量Mが2であり、分散ファイルストレージシステムのデータストリップの量Nが6であるという説明に対する例として使用される。
クライアントエージェントは、ストリップの取得された分配情報に従って分散ファイルストレージシステム10内の対応するストレージサーバノード101にデータ削除要求を送信する。データ削除要求を受信するストレージサーバノード101が、ターゲットファイルのストリップを有していないか、またはターゲットファイルの空のストリップのみを有している場合、削除対象が存在しないことを示す応答メッセージが、クライアントエージェント30に返される。データ削除要求を受信したストレージサーバノード101が、ターゲットファイルの有効ストリップまたはパリティストリップを格納する場合、ストリップが削除された後に削除成功を示す応答メッセージがクライアントエージェント30に返される。削除が実行され得ないか、または完全な削除が実行されない場合、削除不成功を示す応答メッセージがクライアントエージェント30にフィードバックされる。ストレージサーバノードの応答メッセージを受信した後、クライアントエージェント30は、削除対象が存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上であるかどうかを判定する。言い換えると、分散ファイルストレージシステム内に格納されているターゲットファイルのストリップの量は、分散ファイルストレージシステムのパリティストリップの量Mを超えるべきでなく、これにより、ターゲットファイルが削除された後にターゲットファイルが分散ファイルストレージシステムから読み出せないことが確実になる。ストリップが存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上である場合、クライアントエージェント30は、ユーザに、削除成功を示す応答メッセージを返す。そうでない場合、クライアントエージェント30は、ユーザに、削除不成功を示す応答メッセージを返す。
たとえば、データ削除要求を受信した後に、クライアントエージェント30は、データ削除要求で搬送されるターゲットファイルのファイル識別子に従ってメタデータ情報テーブルを検索し、分散ファイルストレージシステムのパリティストリップの量Mが2であり、分散ストレージシステムのデータストリップの量Nが6あることを取得し、ストリップの分配情報を取得する。クライアントエージェント30は、ストリップの分配情報に従って分散ストレージシステム30内の対応するそれぞれのストレージサーバノード101に受信されたデータ削除要求を送信する。たとえば、ストレージサーバノード1は、ターゲットファイルの有効ストリップD1を格納し、ストレージサーバノード2は、ターゲットファイルの有効ストリップD2を格納し、クライアントエージェント30は、受信されたデータ削除要求をストレージサーバノード1およびストレージサーバノード2に送信し、ストレージサーバノード1およびストレージサーバノード2は、ストリップD1およびD2をそれぞれ削除し、削除が成功した後に削除成功を示す応答メッセージをクライアントエージェント30に返す。ストレージサーバノード3は、ターゲットファイルの空のストリップを格納し、ストレージサーバノード4、ストレージサーバノード5、およびストレージサーバノード6は、ターゲットファイルのストリップを有していない。データ削除要求を受信した後に、ストレージサーバノード3から6はそれぞれ、クライアントエージェント30に、削除対象が存在しないことを示す応答メッセージをフィードバックする。ストレージサーバノード7およびストレージサーバノード8は、ターゲットファイルのパリティストリップを格納し、したがって、対応するストリップD7およびD8を別々に削除し、削除が成功した後にクライアントエージェント30に削除成功を示す応答メッセージを返す。クライアントエージェント30は、データ削除成功を示す4つの応答メッセージおよび削除対象が存在しないことを示す4つの応答メッセージを受信し、これらはストレージサーバノード101によって返される。削除成功を示す受信された応答メッセージと削除対象が存在しないことを示す受信された応答メッセージとの総量は8であり、これは、分散ファイルストレージシステムのデータストリップの量より多く、したがって、クライアントエージェント30は、ユーザに、削除成功を示す応答を返す。データ処理要求がデータ削除要求である場合、削除成功を示す返された応答メッセージの量と削除対象が存在しないことを示す返された応答メッセージの量との和が、分散ファイルストレージシステムのデータストリップの量N以上であるときのみ、クライアントエージェントは、ユーザに、削除成功を示すメッセージを返すことができる。データ削除オペレーションでは、分散ファイルストレージシステムのデータストリップの量Nがこの和と比較される必要があり、データ書き込み要求およびデータ読み出し要求の場合、ターゲットファイルの実際のストリップの量N'は、この和と比較される必要がある。これは、もっぱら、ターゲットファイルのストリップが削除された後、ターゲットファイルが再び読み出され得ないことを確実にすることを意図している。
同様に、切り捨てによりデータストライプを削除するための方法は、データストリップを削除するための方法と同じであり、本明細書ではさらに説明することはしない。
本発明で提供される方法を使用することによって、ファイルが、分散ファイルストレージシステムに書き込まれるときに、N'+M冗長保護メカニズムは、書き込まれるファイルのサイズに従って使用される、すなわち、ターゲットファイルに対してストライピングが実行されるときに、ターゲットファイルのサイズに従って異なる量のストリップが生成される、すなわち、実際のストリップの量N'が、ターゲットファイルのサイズに従って生成される。これは、予想されたターゲットファイルがいかなる場合にも正しく取得され得るだけでなく、分散ファイルストレージシステム内の空のストリップ量を低減し、分散ファイルストレージシステム内のディスクIOオペレーションおよびネットワークIOオペレーションの量を低減し、分散ファイルストレージシステムの性能を改善することを効果的に行えることをも保証することができる。
本発明は、分散ファイルストレージシステムにおいてデータ処理方法を実装するためのデバイスをさらに提供する。本発明のこの実施形態では、デバイスは、クライアントエージェントであってよい。図1に示されているように、デバイスは、分散ファイルストレージシステムに接続されているアプリケーションサーバ上に配備され得るか、または分散ファイルストレージシステム内のストレージサーバノード上に配備され得る。
図1に示されているように、分散ファイルストレージシステム10は、複数のストレージサーバ101を備え、複数のストレージサーバ101は、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成する。分散ファイルストレージシステム10は、フロントエンド(Front-End)スイッチ50およびバックエンド(Back-End)スイッチ60をさらに備える。フロントエンドスイッチ50は、外部サービス要求機能およびユーザデータとクラスタとの間のデータ交換を実装するように構成される。バックエンドスイッチ60は、内部サービス要求機能およびクラスタ内のストレージサーバノード101の間のデータ交換を実装するように構成される。アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。
デバイスが、分散ファイルストレージシステム10に接続されているアプリケーションサーバ20上に配備される場合、それぞれのアプリケーションは、標準ポータブルオペレーティングシステムインターフェース(Portable Operating System Interface、略してPOSIX)を使用することによって、アプリケーションサーバ20上に配備されるファイルシステムクライアントエージェントCA(Client Agent)30に直接アクセスする。分散ファイルストレージシステム10の、サービスを外部から提供する、ポータルとして、クライアントエージェント30は、アプリケーションの要求を受信した後に、クラスタ内のストレージサーバ101と相互にやり取りする。デバイスが、分散ファイルストレージシステム内のストレージサーバノード101上に配備されるときに、それぞれのアプリケーションは、一般的に使用されているNASプロトコル(NFS/CIFSなど)クライアントを使用することによって対応するネットワークアタッチトストレージサーバ(Network Attached Storage Server、NAS Server)にアクセスし、NAS Serverおよびストレージサーバは一緒に配備され、次いで、NAS ServerはServerノード上に配備されているファイルシステムクライアントエージェントにアクセスし、ストレージサービスを実装する。本発明の実装原理を明確に説明するために、特定の説明に第1のアクセス方法が使用され、第2のアクセス方法では、類似の実装原理を使用する。
デバイスのデータ処理方法を明確に説明するために、デバイスがクライアントエージェントである例を使用することによって説明がなされている。
図1に示されているサービスシステムは、一例として使用されている。サービスシステムは、2つのアプリケーションサーバ20を備え、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、ユーザのデータ処理要求は、最初に、アプリケーションサーバ20上のクライアントエージェント30に送信され、これにより、クライアント30は、データ処理要求に対して対応する処理を実行する。クライアントエージェント30がストレージサーバノード101上に配備されている場合、ユーザのデータ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ処理要求を、対応するストレージサーバノード101上のクライアントエージェント30に送信し、ストレージサーバノード101上のクライアントエージェント30が、データ処理要求を処理する。
分散ファイルストレージシステム10内のストレージサーバ101が相互接続されて、クラスタを形成し、大規模ネットワークRAIDを構成し、N+M個の冗長保護メカニズムが、格納されているデータに使用される。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って固定された値に設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム10内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。説明をより明確にするために、処理されるべきファイルデータの1つは1つのデータストライプと称され、ストライピングが1つのデータストライプに対して実行されるときに、データストライプは、N個のデータストリップに分割され、M個のパリティストリップは、冗長アルゴリズムに従って生成される。
クライアントエージェント30は、受信モジュール301、処理モジュール303、および送信モジュール305を備える。
クライアントエージェント30受信モジュール301は、アプリケーションによって送信されデータ処理要求を受信するように構成され、データ処理要求は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送する。ターゲットファイルは、処理対象のファイルである。処理モジュール303は、データ処理要求で搬送されるオフセットアドレスおよび長さ情報に従って、ファイルデータの有効ストリップの量(Data Strip Count、DSC)を計算する。有効ストリップは、ファイルデータを含むデータストリップである。小さなファイルデータのシナリオでは、ファイルデータに対してストライピングが実行されるときに分割を用いて得られる有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nより少ない。小さなファイルデータのシナリオでは、より大規模な分散ファイルストレージシステム10は、有効ストリップの量DSCと分散ファイルストレージシステムのデータストリップの量Nとの差がより大きいことを示す。
クライアントエージェント30が、分散ファイルストレージシステム10内のサーバノード101上に配備されるときに、データ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ要求を、ストレージサーバ101上のクライアントエージェント30に送信する。アプリケーションサーバ20によってデータ処理要求をストレージサーバ101上のクライアントエージェント30に送信するための方法は、既存の方法に類似しており、ここで再び詳細に説明することはしない。ストレージサーバ101上でクライアントエージェント30によるデータ処理要求を処理するための方法は、アプリケーションサーバ20上のクライアントエージェント30の処理方法に類似しており、さらに説明することはしない。
処理モジュール303は、有効ストリップの計算された量DSCをパリティストリップの量Mと比較する。冗長アルゴリズムの多数決原理により、どのような障害が発生しようと処理中に予想されるファイルデータが取得され得ることを保証するために、パリティストリップの量Mを超えるストリップの量が読み出される必要がある。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。実際のストリップの量N'と、有効ストリップの量DSCとの量の差は、空のストリップ、すなわち、加える必要のある空のストリップの量を加えることによって補償される必要があり、この場合、ESC=N'-DSC=(M+1)-DSCである。これは、分散ファイルストレージシステム内の空のストリップの量を低減し、それに応じて、空のストリップ上の読み出し書き込みIOオペレーションを低減し、これにより、分散ファイルストレージシステムのIO性能を改善することができる。
有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなる。この場合、空のストリップの量は0であり、言い換えると、空のストリップはいっさい加える必要がなく、そのため、分散ファイルストレージシステム内の空のストリップの量が低減される。
ファイルデータが大きい場合、有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nと同じであってよく、この場合、空のストリップの量は0である、すなわち、空のストリップはいっさい追加される必要がない。
実際のストリップの量N'は、ファイルデータのサイズに従って動的に調整され、特に、小さなファイルデータのシナリオでは、実際のストリップの量N'が、分散ファイルストレージシステムのデータストリップの量Nの代わりに、使用され、したがって、分散ファイルストレージシステム内の空のストリップの量は、効果的に低減される。それに応じて、空のストリップ上の読み出し書き込みIOオペレーションは低減され、分散ファイルストレージシステムのIO性能が改善される。
対応する処理が、N'個の実際のストリップに対して実行される。特定の処理方法は、異なる種類のデータ処理要求に従って変わる。
送信モジュール305は、処理モジュール303によって実行される処理の結果をユーザにフィードバックするように構成される。
データ処理要求が、データ書き込み要求である場合、受信モジュール301は、データ書き込み要求を受信するように構成される。
処理モジュール303は、データ書き込み要求で搬送されるオフセットアドレスおよびファイル長情報、およびストリップの取得されたサイズに従って、ターゲットファイルに対してストライピング処理を実行して、ターゲットファイルの有効ストリップの量DSCを取得する。
処理モジュール303は、ターゲットファイルに対してストライピングが実行されたときに分割を用いて得られる有効ストリップの量DSCを、パリティストリップの取得された量Mと比較する。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。この場合、空のストリップが追加される必要があり、加える必要のある空のストリップの量ESCは、実際のストリップの量N'から有効ストリップの量DSCを引いた値に等しい、ESC=N'-DSC=(M+1)-DSCである。有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなり、この場合、空のストリップが追加される必要がない。
処理モジュール303は、冗長アルゴリズムを使用することによって、取得された実際のストリップに従ってM個のパリティストリップを生成し、コンシステンシーラベル情報および有効ストリップの量DSCをN'個の実際のストリップおよびM個のパリティストリップに加える。コンシステンシーラベル情報は、同じタイムスタンプまたはバージョン番号に関する情報であってよい。
処理モジュール303は、コンシステンシーラベル情報および有効ストリップの量DSCを搬送する実際のストリップおよびパリティストリップを対応するストレージサーバノードに書き込む。それぞれのストリップが書き込まれるべきストレージサーバノードを特に決定するための方法は、既存の実装方法に類似しており、再び詳細に説明することはしない。処理モジュール303は、実際のストリップの量N'、パリティストリップの量M、およびターゲットファイルのストリップの分配情報をファイルメタデータ情報テーブルに格納し、これにより、ターゲットファイルが読み出されるときに対応するストレージサーバノードからターゲットファイルのストリップを読み出すのを助ける。
これからわかるように、ターゲットファイルが小さいファイルデータであるシナリオでは、ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られる有効ストリップの量DSCが分散ファイルストレージシステムのパリティストリップの量Mより小さい場合に、実際のストリップの量N'はパリティストリップの量Mに1を加えた値に等しく、Mの値は一般的には小さく、この場合、ごく少数の空のストリップを追加するだけでよい。ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られ有効ストリップの量DSCが、分散ファイルストレージシステムのパリティストリップの量Mより多い場合、実際のストリップの量N'は、この場合、有効ストリップの量に等しく、いっさい空のストリップが追加される必要はない。このようにして、ターゲットファイルが、小さいファイルデータである場合、ターゲットファイルに対してストライピング処理が実行されて、従来技術の分散ファイルストレージシステムのNのデータストリップの量の代わりに、N'個の実際のストリップを生成し、これにより、空のストリップの量を低減し、実際、空のストリップ上の書き込みオペレーションを低減し、分散ファイルストレージシステム10内のIOオペレーションを低減し、分散ファイルストレージシステム10の性能を改善する。特に、大規模な分散ファイルストレージシステム10では、分散ファイルストレージシステム10の性能を改善する効果はより明らかである。
データ処理要求が、データ読み出し要求である場合、ユーザによって読み出されるべきファイルデータは、ターゲットファイルと称される。データ読み出し要求は、対応するサーバノード上に格納されているターゲットファイルのストリップが読み出され、元のターゲットファイルが構築され復元されるという要求である。
受信モジュール301は、データ読み出し要求を受信するように構成され、データ読み出し要求は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送する。処理モジュール303は、データ読み出し要求で搬送されるファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報を取得し、冗長情報は、NおよびMの値である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。
処理モジュール303は、ファイル識別子に従ってデータストリップの量N、パリティストリップの量M、およびターゲットファイルのストリップのサイズを検索することができる。処理モジュール303は、データ読み出し要求で搬送されるターゲットファイルのオフセットアドレスおよびファイル長情報、およびストリップのサイズに従ってターゲットファイルの有効ストリップの量DSCを計算する。特定の計算方法は、データ書き込み要求に対する解決策における方法に類似しており、本明細書でさらに説明することはしない。処理モジュール303は、データ読み出し要求で搬送されるファイル識別子を使用することによってターゲットファイルのストリップの分配情報を見つけ、分配情報に従って、ターゲットファイルの実際のストリップおよびパリティストリップが格納されるストレージサーバノードを決定することができ、実際のストリップの計算された量N'およびパリティストリップの量に従って、ターゲットファイルの実際のストリップおよびパリティストリップを格納するサーバノードの配置をさらに決定することができる。処理モジュール303は、データ読み出し要求をすべての決定されたストレージサーバノードに送信するか、またはデータ読み出し要求を分散ファイルストレージシステム内のすべてのストレージサーバノードに送信することができる。処理モジュール303は、また、データ読み出し要求を最初にターゲットファイルの実際のストリップを格納するストレージサーバノードに送信することができ、ターゲットファイルの実際のストリップを格納するストレージサーバノードによってフィードバックされる応答が、ターゲットファイルが正しく読み出せないことを示す場合、処理モジュール303は、データ読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信する。この実施形態では、最後の場合は説明のために使用される、すなわち、処理モジュール303は、最初に、データ読み出し要求を、ターゲットファイルの実際のストリップを格納するストレージサーバノードに送信し、ターゲットファイルの実際のストリップを格納するストレージサーバノードによってフィードバックされる応答が、ターゲットファイルが正しく読み出せないことを示す場合、データ読み出し要求は、ターゲットファイルのパリティストリップを格納するストレージサーバノードに送信される。
処理モジュールは、新しいデータブロック読み出し要求を生成し、データブロック読み出し要求を決定されたストレージサーバノード101に送信する。データブロック読み出し要求は、ストレージサーバノード101上のターゲットファイルのストリップを読み出すために使用される。
データブロック読み出し要求を受信した後に、ストレージサーバノードは、データブロック読み出し要求で搬送されるファイル識別子に従って、格納されている対応するストリップが読み出せるかどうかを判定し、格納されている対応するストリップが読み出せる場合、ストレージサーバノードは、ストリップが読み出せることを示す成功応答メッセージを処理モジュール303に送信し、成功応答メッセージは、ストリップのコンシステンシーラベル情報および有効ストリップの量DSCに関する情報を搬送し、格納されている対応するストリップがないか、または格納されている対応するストリップが損傷し、読み出し不能である場合、ストレージサーバノードは、ストリップが読み出せないことを示す不成功応答メッセージを処理モジュール303に送信する。
処理モジュール303は、データブロック読み出し要求をターゲットファイルの実際のストリップを格納するストレージサーバノードに送信し、それぞれのストレージサーバノードによって返されるデータブロック読み出し要求の応答メッセージを受信する。成功応答メッセージの量が実際のストリップの量N'と同じであり、すべての成功応答メッセージ内の、コンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは、この場合に、読み出されるものとしてよく、処理モジュール303は、実際のストリップを読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。実際のストリップを読み出し、処理モジュール303によりターゲットファイルを構築する実装方法は、既存の方法と同じであり、本明細書ではさらに説明することはしない。ターゲットファイルの実際のストリップを格納するストレージサーバノードによってフィードバックされる成功応答メッセージの量が、実際のストリップの量N'より小さいか、または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、実際のストリップの量N'よりも少ない場合、成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかがさらに判定される。
ターゲットファイルの実際のストリップを格納するストレージサーバノードによってフィードバックされる成功応答メッセージの量が、実際のストリップの量N'より小さいか、または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、実際のストリップの量N'よりも少ない場合、成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量DSCに関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかがさらに判定される。
成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、処理モジュール303は、成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定し、成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、処理モジュール303は、対応する処理を実行し、特定の処理方法は、既存の実装方法と同じであり、本明細書でさらに説明することはしない。成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、処理モジュール303は、データ読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノードに送信し、ターゲットファイルのパリティストリップを格納するストレージサーバノードの応答メッセージを受信する。次いで、処理モジュール303は、すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。
成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量M以下である場合、処理モジュール303は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノードに送信し、ターゲットファイルのパリティストリップを格納するストレージサーバノードの応答メッセージを受信する。次いで、処理モジュール303は、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、処理モジュール303は、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量Mよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。
データ処理要求は、データ削除要求またはデータ切り捨て要求であってもよい。データ削除要求の実装方法は、データ切り捨て要求の実装方法に類似しており、データ削除要求は、説明のために以下で例として使用され、データ切り捨て要求の実装方法について、さらに説明することはしない。
ユーザによって削除されるべきファイルデータは、ターゲットファイルと称され、ストレージサーバノード上に格納されているターゲットファイルの関係するストリップを削除するためにデータ削除要求が使用される。データ削除要求は、ターゲットファイルのファイル識別子FIDに関する情報を搬送する。受信モジュール301は、データ削除要求を受信し、処理モジュール303は、受信されたデータ削除要求で搬送される、ファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報およびストリップの分配情報を取得し、冗長情報は、NおよびMの値である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。
処理モジュール303は、ストリップの取得された分配情報に従って分散ファイルストレージシステム内の対応するストレージサーバノードにデータ削除要求を送信する。データ削除要求を受信するストレージサーバノードが、ターゲットファイルのストリップを有していないか、またはターゲットファイルの空のストリップのみを有している場合、削除対象が存在しないことを示す応答メッセージが、処理モジュール303に返される。データ削除要求を受信したストレージサーバノードが、ターゲットファイルの有効ストリップまたはパリティストリップを格納する場合、ストリップが削除された後に削除成功を示す応答メッセージが処理モジュール303に返される。削除が実行され得ないか、または完全な削除が実行され得ない場合、削除不成功を示す応答メッセージが処理モジュール303にフィードバックされる。ストレージサーバノードの応答メッセージを受信した後、処理モジュール303は、削除対象が存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上であるかどうかを判定する。言い換えると、分散ファイルストレージシステム内に格納されているターゲットファイルのストリップの量は、分散ファイルストレージシステムのパリティストリップの量Mを超えるべきでなく、これにより、ターゲットファイルが削除された後にターゲットファイルが分散ファイルストレージシステムから読み出せないことが確実になる。ストリップが存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上である場合、削除成功を示す応答メッセージがユーザに返される。そうでない場合、削除不成功を示す応答メッセージがユーザに返される。
本発明のこの実施形態で提供されるデバイスでは、ファイルが、分散ファイルストレージシステムに書き込まれるときに、N'+M冗長保護メカニズムは、書き込まれるファイルのサイズに従って使用される、すなわち、ターゲットファイルに対してストライピングが実行されるときに、ターゲットファイルのサイズに従って異なる量のストリップが生成される、すなわち、異なる量N'の実際のストリップが生成される。これは、予想されたターゲットファイルがいかなる場合にも正しく取得され得るだけでなく、分散ファイルストレージシステム内の空のストリップ量を低減し、分散ファイルストレージシステム内のディスクIOオペレーションおよびネットワークIOオペレーションの量を低減し、分散ファイルストレージシステムの性能を改善することを効果的に行えることをも保証することができる。
当業者であれば、本明細書で説明されている実施形態の中の例示的なユニットおよびアルゴリズムステップは、電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアとの組み合わせによって実装され得ることに気づき得る。これらの機能が、ハードウェアによって実装されるのか、ソフトウェアによって実装されるのかは、特定の用途および技術的解決手段の設計上の制約条件で決まる。当業者は、特定の用途に対して説明されている機能を実装するために異なる方法を選択することができるが、その実装は、本発明の範囲を超えると考えられるべきでない。
これらの機能が、コンピュータソフトウェアの形態で実装され、独立した製品として販売または使用される場合、本発明の技術的解決策の全部または一部(たとえば、従来技術に寄与する部分)は、ある程度、コンピュータソフトウェア製品の形態で実装されるものとみなされ得る。コンピュータソフトウェア製品は、一般的に、コンピュータ可読不揮発性記憶媒体に格納され、本の実施形態において説明されている方法のステップの全部または一部を実行するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、もしくはネットワークデバイス、または同様のものであってよい)に指示するための複数の命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能なハードディスク、リードオンリーメモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクなどの、プログラムコードを格納することができる媒体を含む。
前述の説明は、本発明の単に特定の実施形態にすぎず、本発明の保護範囲を制限することを意図されていない。本発明において開示されている技術の範囲内で当業者が考え付く変更形態または代替的形態は、本発明の保護範囲内にあるものとする。したがって、本発明の保護範囲は、請求項の保護範囲に従うものとする。
1 ストレージサーバノード
2 ストレージサーバノード
3 ストレージサーバノード
4 ストレージサーバノード
5 ストレージサーバノード
6 ストレージサーバノード
7 ストレージサーバノード
8 ストレージサーバ
10 分散ファイルストレージシステム
20 アプリケーションサーバ
30 デバイス
30 ファイルシステムクライアントエージェントCA(Client Agent)
50 フロントエンド(Front-End)スイッチ
60 バックエンド(Back-End)スイッチ
101 ストレージサーバノード
301 受信モジュール
303 処理モジュール
305 送信モジュール
本発明は、ストレージ技術の分野に関するものであり、具体的には、分散ファイルストレージシステムにおけるデータ処理の方法およびデバイスに関するものである。
コンピュータ技術およびネットワーク技術の発展ならびに人間生活の情報化の結果、ストレージシステムの記憶容量の拡大、およびストレージシステムの高性能化に対する要求がユーザから出てきた。ストレージシステムも、コンピュータ内蔵のメモリから、ストレージアレイなどの独立ストレージシステム、またはネットワークアタッチトストレージ(Network Attached Storage、NAS)へ、次いで、大規模分散ファイルストレージシステムへと発展している。デジタル化の程度が高まるにつれ、ストレージオブジェクトも、もっぱら構造化データであるオブジェクトからピクチャまたはマイクロビデオなどのもっぱら非構造化ファイルデータであるオブジェクトへと変化している。これにより、ストレージシステムのファイルデータアクセス性能に対する要求条件が高まり、したがって、これは、大規模分散ファイルストレージシステムのアクセス性能を改善する現在のストレージ分野における最優先事項となっている。
分散ファイルストレージシステムは、複数のストレージサーバノードを備え、複数のストレージサーバは、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成し、大規模ネットワークRAID(Redundant Array of Inexpensive Disks、リダンダント・アレイ・オブ・インエクスペンシブ・ディスクズ)を構成し、それに加えて、すべてのストレージサーバは、外部からデータ読み出し書き込みサービスを同時に提供する。ファイルデータが、分散ファイルストレージシステムに格納されるときに、クロスノードRAIDアルゴリズム(たとえば、RAID5、RAID6、またはRAIDZ)、または消失訂正符号(Erasure Code)アルゴリズムなどのアルゴリズムを使用することによって、ストライピング(Stripe)がファイルデータに対して実行される、すなわち、ファイルデータが複数のデータストリップ(Strip)に分割され、対応するパリティストリップが生成され、次いで、データトリップおよびパリティストリップが対応するノードのストレージサーバに格納される。格納されているファイルデータが読み出されると、ユーザによって読み出される必要がある元のファイルデータをその後構築するために特定の量のデータストリップおよびパリティストリップがストレージサーバノードから読み出される。
分散ファイルストレージシステム内のクラスタサイズが増加するにつれ、分散ファイルストレージシステム全体の空間利用度を改善するために、ストライピングがファイルデータに対して実行されるときに分割によって得られるデータストリップの量が次第に大きくなり、読み出し書き込みオペレーションが実行されるときにディスクIOオペレーションおよびネットワークIOオペレーションの量もしかるべく増大する。このようにして、ファイルデータに対してストライピングが実行されるときに分割によって得られるデータストリップの量は、しかるべく増大し、それによって、小さなファイルのシナリオにおける分散ファイルストレージシステムのアクセス性能に大きな負担がかかる。
このような事情に鑑みて、本発明によって解決されるべき技術的課題は、小さなファイルのシナリオにおける分散ファイルストレージシステムのアクセス性能をどのように改善するかである。
前述の目的を達成するために、本発明の実施形態では、以下の技術的解決策を使用する。
本発明の第1の態様は、分散ファイルストレージシステムに適用されるデータ処理方法を提供し、この方法は、クライアントエージェントによって、ユーザのデータ処理要求を受信するステップであって、データ処理要求は、ターゲットファイルのファイル識別子、オフセットアドレス、ファイル長、および他の情報を搬送し、ターゲットファイルは、データ処理要求で処理される必要があるファイルである、ステップと、クライアントエージェントによって、データ処理要求で搬送される、ターゲットファイルの冗長情報をファイル識別子に従って取得するステップであって、冗長情報は、分散ファイルストレージシステムのデータストリップの量Nおよび分散ファイルストレージシステムのパリティストリップの量Mを含む、ステップと、データ処理要求で搬送されるターゲットファイルのオフセットアドレスおよびファイル長に従ってターゲットファイルの有効ストリップの量DSCを決定するステップであって、有効ストリップは、ターゲットファイルのデータを含むストリップである、ステップと、有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定するステップと、実際のストリップの量N'に従って対応するストリップを決定し、対応するストリップを処理するステップとを含む。
第1の態様に関して、可能なインプリメント方法において、
有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定するステップでは、特に、有効ストリップの量DSCが、パリティストリップの量M以下である場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となるか、または有効ストリップの量DSCが、パリティストリップの量Mより大きい場合、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなる。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
複数のパリティストリップの量Mおよび複数のデータストリップの量Nがあり、MおよびNは、互いに対応しており、対応するディレクトリ情報テーブル内に別々に格納される。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求がデータ書き込み要求である場合に、実際のストリップの量N'に従って対応するストリップを決定するステップ、および対応するストリップを処理するステップは、
ターゲットファイルに対してストライピング処理を実行してN'個の実際のストリップを取得し、冗長アルゴリズムを使用することによってM個のパリティストリップを生成するステップと、
コンシステンシーラベル情報(consistency label information)および有効ストリップの量DSCに関する情報をN'個の実際のストリップおよびM個のパリティストリップに追加するステップであって、コンシステンシーラベル情報は、タイムスタンプまたはバージョン番号であり得る、ステップと、
N'個の実際のストリップおよびM個のパリティストリップを対応するストレージサーバノード上に別々に書き込むステップとをさらに含む。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求が、データ読み出し要求である場合、この方法は、ファイル識別子に従ってターゲットファイルのストリップの分配情報を取得するステップをさらに含み、実際のストリップの量N'に従って対応するストリップを決定し、対応するストリップを処理するステップは、特に、
新しいデータブロック読み出し要求を生成するステップであって、データブロック読み出し要求は、ストレージサーバノードからターゲットファイルのストリップを読み出すために使用される、ステップであって、ターゲットファイルのストリップの取得された分配情報に従って、データブロック読み出し要求を実際のストリップを格納するストレージサーバノードに送信するステップと、
実際のストリップを格納するストレージサーバノードの応答メッセージを受信するステップであって、応答メッセージは、実際のストリップが読み出され得ることを示す成功応答メッセージであるか、または実際のストリップが読み出され得ないことを示す不成功応答メッセージであり、成功応答メッセージは、コンシステンシーラベル情報および実際のストリップの有効ストリップの量DSCに関する情報を搬送する、ステップと、
受信された応答メッセージに従って、ターゲットファイルが読み出され得るかどうかを判定するステップとをさらに含む。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
受信された応答メッセージに従って、ターゲットファイルが読み出され得るかどうかを判定するステップでは、特に、
受信された成功応答メッセージの量が実際のストリップの量N'に等しく、すべての成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは読み出され得るか、または
受信された成功応答メッセージの量が、実際のストリップの量N'より少ない場合、受信された成功応答メッセージの量が、パリティストリップの量Mより多いかどうかが判定され、
受信された成功応答メッセージの量が、パリティストリップの量Mより多い場合、成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC以上であるかどうかと、成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じであるかどうかが判定され、成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DS以上であり、すべての成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは読み出されることができ、成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC以上でなく、すべての成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じではない場合、データブロック読み出し要求が、取得された分配情報に従って、パリティストリップを格納するストレージサーバノードに送信され、パリティストリップを格納するストレージサーバノードによって返される成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC以上であり、成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは読み出されることができ、またはパリティストリップを格納するストレージサーバノードによって返される成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSC未満であるか、もしくは成功応答メッセージで搬送されるコンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じでない場合、ターゲットファイルは読み出されることができない。
第1の態様および前述の可能な実装方法に関して、別の可能な実装方法において、この方法は、
受信された成功応答メッセージの量が、パリティストリップの量M以下であり、データブロック読み出し要求が、取得された分配情報に従って、パリティストリップを格納するストレージサーバノードに送信される場合、
パリティストリップを格納するストレージサーバノードによって返される応答メッセージを受信するステップと、
パリティストリップを格納するストレージサーバノードによって返される応答メッセージに従って、ターゲットファイルが読み出されることができるかどうかを判定するステップとをさらに含む。
本発明の第2の態様では、分散ファイルストレージシステムにおいてデータ処理方法を実装するためのデバイス30を実現し、デバイス30は、分散ファイルストレージシステム10においてストレージサーバノード101と通信し、デバイスは、受信モジュール301、処理モジュール303、および送信モジュール305を備え、
受信モジュール301は、ユーザのデータ処理要求を受信するように構成され、データ処理要求は、ターゲットファイルのファイル識別子、オフセットアドレス、ファイル長、および他の情報を搬送し、ターゲットファイルは、データ処理要求で処理される必要があるファイルであり、
処理モジュール303は、
データ処理要求で搬送される、ターゲットファイルの冗長情報をファイル識別子に従ってストレージサーバノードから取得し、冗長情報は、分散ファイルストレージシステムのデータストリップの量Nおよび分散ファイルストレージシステムのパリティストリップの量Mを含み、
データ処理要求で搬送されるターゲットファイルのオフセットアドレスおよびファイル長に従ってターゲットファイルの有効ストリップの量DSCを決定し、有効ストリップは、ターゲットファイルのデータを含むストリップであり、
有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定し、
実際のストリップの量N'に従って対応するストリップを決定し、対応するストリップを処理するように構成され、
送信モジュール305は、処理の結果をユーザにフィードバックするように構成される。
第2の態様に関して、可能な実装方法において、
デバイス30は、分散ファイルストレージシステム10に接続されているアプリケーションサーバ20上に、または分散ファイルストレージシステム10内のストレージサーバノード101上に配置される。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定するステップでは、特に、
有効ストリップの量DSCが、パリティストリップの量M以下である場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となるか、または
有効ストリップの量DSCが、パリティストリップの量Mより大きい場合、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなる。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求がデータ書き込み要求である場合に、実際のストリップの量N'に従って対応するストリップを決定するステップ、および対応するストリップを処理するステップは、
ターゲットファイルに対してストライピング処理を実行してN'個の実際のストリップを取得し、冗長アルゴリズムを使用することによってM個のパリティストリップを生成するステップと、
コンシステンシーラベル情報および有効ストリップの量DSCに関する情報をN'個の実際のストリップおよびM個のパリティストリップに追加するステップであって、コンシステンシーラベル情報は、タイムスタンプまたはバージョン番号であり得る、ステップと、
N'個の実際のストリップおよびM個のパリティストリップを対応するストレージサーバノード上に別々に書き込むステップとをさらに含む。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、
データ処理要求がデータ読み出し要求である場合に、実際のストリップの量N'に従って対応するストリップを決定するステップ、および対応するストリップを処理するステップは、
新しいデータブロック読み出し要求を生成するステップであって、データブロック読み出し要求は、ストレージサーバノードからターゲットファイルのストリップを読み出すために使用される、ステップであって、ターゲットファイルのストリップの取得された分配情報に従って、データブロック読み出し要求を実際のストリップを格納するストレージサーバノードに送信するステップと、
実際のストリップを格納するストレージサーバノードの応答メッセージを受信するステップであって、応答メッセージは、実際のストリップが読み出され得ることを示す成功応答メッセージであるか、または実際のストリップが読み出され得ないことを示す不成功応答メッセージであり、成功応答メッセージは、実際のストリップのコンシステンシーラベル情報および有効ストリップの量DSCに関する情報を搬送する、ステップと、
受信された応答メッセージに従って、ターゲットファイルが読み出され得るかどうかを判定するステップとをさらに含む。
第2の態様および前述の可能な実装方法に関して、別の可能な実装方法において、受信モジュールは、ユーザのデータ削除要求を受信するようにさらに構成され、データ削除要求は、ターゲットファイルのファイル識別子を搬送し、ターゲットファイルは、削除されることを必要とするファイルであり、
処理モジュールは、ファイル識別子に従ってストレージサーバノードから冗長情報を取得し、冗長情報は、分散ファイルストレージシステムのデータストリップの量Nおよび分散ファイルストレージシステムのパリティストリップの量Mを含み、
分散ファイルストレージシステムのデータストリップの量Nに従って、ターゲットファイルのストリップを格納するストレージサーバノードを決定し、
データ削除要求をターゲットファイルのストリップを格納するストレージサーバノードに送信し、
ターゲットファイルのストリップを格納するストレージサーバノードの応答メッセージを受信し、応答メッセージは、削除成功を示す応答メッセージ、削除対象が存在していないことを示す応答メッセージ、および削除不成功を示す応答メッセージのうちの1つであり、
削除成功を示す受信された応答メッセージおよび削除対象が存在していないことを示す応答メッセージとの量が、データストリップの量Nを超える場合に、削除は成功であり、そうでなければ、削除は不成功であり、
送信モジュールは、削除成功または削除不成功の結果をユーザにフィードバックするように構成される。
本発明の実施形態において、有効ストリップの量は、ターゲットファイルのサイズに従って決定され、ターゲットファイルの実際のストリップの量も、さらに決定され、したがって、いずれの場合も予想ターゲットファイルが取得され得ることが保証され得る場合に、分散ファイルストレージシステム10内の空ストリップの量は、さらに低減されるものとしてよく、これにより、小さなファイルのシナリオにおける大量のネットワーク読み出し書き込みI/Oオペレーションおよびディスク読み出し書き込みI/Oオペレーションを低減することができ、それにより、分散ファイルストレージシステム10の性能が改善される。
本発明の実施形態または従来技術における技術的解決策をより明確に説明するために、以下において、従来技術の実施形態の説明に必要な添付図面を簡単に紹介する。明らかに、以下の説明の添付図面は、本発明のいくつかの実施形態を示しており、当業者であれば、これらの添付図面から他の図面を導き出すことができる。
分散ファイルストレージシステムの概略構造図である。
ストリップの分配の概略図である
本発明の一実施形態によりデータ処理要求を実装するための方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ書き込み要求である方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ読み出し要求である方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ読み出し要求である方法の概略流れ図である。
本発明の一実施形態によるデータ処理要求がデータ削除要求である方法の概略流れ図である。
本発明の一実施形態により分散ファイルストレージシステムにおいてデータ処理方法を実装するためのデバイスの概略構造図である。
本発明のさまざまな例示的な実施形態、特徴、および態様は、添付図面を参照しつつ以下で詳細に説明される。添付図面中の同じ参照符号は、同じまたは類似の機能を有するコンポーネントを示す。実施形態のさまざまな態様が添付図面中に示されているが、特に断りのない限り、添付図面を縮尺通りに製図することは必要ない。
それに加えて、本発明をよりよく説明するために、以下の特定の実装方法に、多数の具体的詳細が提示されている。いくつかの実施形態では、本発明の本旨を明確に述べるために、当業者に知られている方法、手段、コンポーネント、および回路については、詳細に説明されていない。
複数のストレージサーバノード101を備える、分散ファイルストレージシステム10の主要構成部品が、図1に示されており、複数のストレージサーバノード101は、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成する。分散ファイルストレージシステム10は、フロントエンド(Front-End)スイッチ50およびバックエンド(Back-End)スイッチ60をさらに備える。フロントエンドスイッチ50は、外部サービス要求機能およびユーザデータとクラスタとの間のデータ交換を実装するように構成される。バックエンドスイッチ60は、内部要求機能およびクラスタ内のストレージサーバノードの間のデータ交換を実装するように構成される。アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。
分散ファイルストレージシステム10において、一般的に、それぞれのアプリケーションは、ストレージサーバノード101と2つの方法で相互にやり取りする。第1の方法では、それぞれのアプリケーションが、標準ポータブルオペレーティングシステムインターフェース(Portable Operating System Interface、略してPOSIX)を使用することによって、アプリケーションサーバ20上に配備されるファイルシステムクライアントエージェントCA(Client Agent)30に直接アクセスする。分散ファイルストレージシステム10の、サービスを外部から提供する、ポータルとして、クライアントエージェント30は、アプリケーションの要求を受信した後に、クラスタ内のストレージサーバノード101と相互にやり取りする。第2のアクセス方法は、それぞれのアプリケーションは、一般的に使用されているNASプロトコル(NFS/CIFSなど)クライアントを使用することによって対応するネットワークアタッチトストレージサーバ(Network Attached Storage Server、NAS Server)にアクセスし、NAS Serverおよびストレージサーバノード101は一緒に配備され、次いで、NAS ServerはServerノード上に配備されているファイルシステムクライアントエージェント30にアクセスし、ストレージサービスを実装する。本発明の実装原理を明確に説明するために、特定の説明に第1のアクセス方法が使用され、第2のアクセス方法では、類似の実装原理を使用する。
図1に示されているサービスシステムは、一例として使用されている。サービスシステムは、2つのアプリケーションサーバ20を備え、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、ユーザのデータ処理要求は、最初に、アプリケーションサーバ20上のクライアントエージェント30に送信され、これにより、クライアントエージェント30は、データ処理要求に対して対応する処理を実行する。クライアントエージェント30がストレージサーバノード101上に配備されている場合、ユーザのデータ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ処理要求を、対応するストレージサーバノード101上のクライアントエージェント30に送信し、ストレージサーバノード101上のクライアントエージェント30が、データ処理要求を処理する。
分散ファイルストレージシステム10内のストレージサーバノード101が相互接続されて、クラスタを形成し、大規模ネットワークRAIDを構成し、N+M個の冗長保護メカニズムが、格納されているデータに使用される。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って固定された値に設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに生成されるデータストリップの量であり、Nは、分散ファイルストレージシステム10内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。分散ファイルストレージシステム10のNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。メタデータ情報テーブルは、既存の実装方法におけるものと同じであり、したがって、さらに本明細書で説明することはしない。説明をより明確にするために、処理されるべきファイルデータの1つは1つのデータストライプと称され、ストライピング処理が1つのデータストライプに対して実行されるときに、データストライプは、N個のデータストリップに分割され、M個のパリティストリップは、冗長アルゴリズムに従って生成される。
クライアントエージェント30は、受信されたファイルデータに対してストライピング処理を実行し、ファイルデータをN個のデータストリップに分割し、次いで、冗長アルゴリズムに従ってM個のパリティストリップを生成し、生成されたデータストリップおよびパリティストリップを対応するストレージサーバノード101に格納し、同じタイムスタンプもしくはバージョン番号、または他のコンシステンシーラベル情報をデータストリップおよびパリティストリップに記録する。N個のデータストリップおよびM個のパリティストリップが対応するストレージサーバノード101に書き込まれる。これらのストリップは、ストレージサーバノード101の番号付け順序でストレージサーバノード101に書き込まれるか、または他のルールに従って対応するサーバノード101に書き込まれ得る。書き込みルールは、既存の書き込みルールと同じであり、本明細書ではそれに加えて説明することはしない。ユーザがファイルデータを読み出すことを必要とする場合、クライアントエージェント30は、読み出される必要のあるファイルデータの識別情報を使用することによって、コンシステンシーラベル情報が同じである特定の量のデータストリップまたはパリティストリップを読み出し、それによりユーザによって読み出される必要のあるファイルデータを取得する。冗長アルゴリズムのコンシステンシー原理によれば、N+M冗長保護が使用されるデータストライプが読み出されるときに、読み出されたデータストライプが予想されたデータであることを保証するためにコンシステンシーラベル情報がN+Mストリップにおいて同じである少なくともN個のストリップが取得される必要がある。
図1に示されている分散ファイルストレージシステム10は、8個のストレージサーバノード101を備える。分散ファイルストレージシステム10のMが2に設定され、Nは6に設定されると仮定する。確かに、Mは2に設定され、Nは5に設定され得る。この実施形態では、Nが6であり、Mが2であることが、説明の例として使用される。ファイルデータが分散ファイルストレージシステム10に格納される必要がある場合、アプリケーションサーバ20上のクライアントエージェント30は、格納される必要のあるファイルデータを受信し、ファイルデータに対してストライピング処理を実行してファイルデータを6個のデータストリップに分割し、次いで、冗長アルゴリズムを使用することによって2つのパリティストリップを生成し、同じタイムスタンプもしくはバージョン番号、またはデータストリップおよびパリティストリップ内の他のコンシステンシーラベル情報を記録する。クライアントエージェント30は、ストレージサーバノード1上の6個のデータストリップをストレージサーバノード101の順にストレージサーバノード6に別々に格納し、2つのパリティストリップを、たとえば、図2に示されている順序で、ストレージサーバノード7およびストレージサーバノード8に格納する。ファイルデータが読み出される必要があるときに、クライアントエージェント30は、ファイルデータの識別情報に従って、コンシステンシーラベル情報がストレージサーバノード101から同じである少なくとも6個のストリップを読み出し、6個のストリップは、データストリップおよびパリティストリップ内の任意の6個のストリップである。
小さなファイルデータのシナリオでは、有効なファイルデータは、いくつかのデータストリップのみを占有するものとしてよく、既存の実装解決策では、残りのデータストリップは、有効なファイルデータを含まない空のストリップである。図1および図2に示されているように、Nが6であり、Mが2である分散ファイルストレージシステム10において、8個のストレージサーバノード101があり、データストリップは、ストレージサーバノード1からストレージサーバノード6上に格納され、パリティストリップは、ストレージサーバノード7およびストレージサーバ8上に格納される。ストライピングが、小さなファイルデータに対して実行される場合、2つのデータストリップのみ、たとえば、D1およびD2が占有され、これはストレージサーバノード1およびストレージサーバノード2上に格納され、タイムスタンプT1が記録される。残り4つのデータストリップD3からD6は、ファイルデータを含まないが、同じタイムスタンプT1は、まだ、既存の実装方法においてストレージサーバノード3から6上に記録される必要がある。パリティストリップD7およびD8は、ストレージサーバノード7およびストレージサーバノード8上にそれぞれ格納され、同じタイムスタンプT1が記録される。小さなファイルデータが読み出されるときに、タイムスタンプT1が記録される少なくとも6個のストリップが、予想される小さなファイルデータを取得するために読み出される必要がある。その結果、小さなファイルデータが書き込まれるか、または読み出されるときに、空のストリップに対するI/Oオペレーションが引き起こされ、分散ファイルストレージシステムのディスクIOおよびネットワークIOリソースが占有される。大規模分散ファイルストレージシステムは、大量のデータストリップを有するので、小さなファイルデータについて生成される空のストリップの量は、それに応じて増加する。この場合、分散ファイルストレージシステムの大量のディスクI/OおよびネットワークI/Oリソースが無駄に使われ、これにより、分散ファイルストレージシステムのIO性能に影響が及ぶ。
本発明は、空のストリップ上のオペレーションを低減し、分散ファイルストレージシステムのディスクI/OおよびネットワークI/Oのオーバーヘッドを軽減し、分散ファイルストレージシステムのIO性能を改善することができる、分散ファイルストレージシステム10内の小さなファイルデータを処理するための新しい方法を提供する。本発明は、もっぱら、処理されるべきファイルの異なるサイズに従ってN'+M冗長保護メカニズムを使用する。Mは、分散ファイルストレージシステムのパリティストリップの量であり、N'は、ファイルデータに対してストライピングが実行されるときにファイルデータのサイズに従って決定される実際のストリップの量である。分割を使って得られる実際のストリップの量N'は、ファイルデータのサイズと共に変化し、ファイルデータの実際のストリップの量の動的な調整を実装することができる。これは、小さなファイルのシナリオにおいて空のストリップの量を減らすことができ、したがって、分散ファイルストレージシステムにおけるディスクIOオペレーションおよびネットワークIOオペレーションの量が低減され、分散ファイルストレージシステムの性能が改善される。本発明によって提供される解決策で、そのまま、さまざまな異常の場合における予想されるファイルデータを取得することができることを保証するために、N'は、Mより大きい必要があり、言い換えると、実際のデータストリップの量およびパリティストリップの量は、多数決原理の条件を満たしている必要があり、データは、異常な場合に復元可能である。
図1に示されているように、本発明の一実施形態が適用可能である分散ファイルストレージシステム10の構造は、8基のストレージサーバノード101を備え、複数のストレージサーバノード101は、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、フロントエンドスイッチ50を使用することによってユーザデータとクラスタとの間の通信を実装する。クラスタ内のストレージサーバノード101は、バックエンドスイッチ60を使用することによって内部通信を実装する。クライアントエージェント30は、分散ファイルストレージシステム10内のそれぞれのストレージサーバノード101上にも配備され、それぞれのストレージサーバノード101上に配備されているクライアントエージェント30の機能は、アプリケーションサーバ20上に配備されているクライアントエージェント30の機能に類似しており、さらに説明することはしない。
分散ファイルストレージシステムの冗長性では、Mが2であり、Nは6である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピング処理がファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。
図3のブロック100に示されているように、アプリケーションサーバ20上のクライアントエージェント30は、アプリケーションによって送信されるユーザのデータ処理要求を受信し、データ処理要求は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送し、ターゲットファイルは、処理対象のファイルである。図3のブロック320に示されているように、ファイルデータの有効ストリップの量(Data Strip Count、DSC)は、データ処理要求で搬送されるオフセットアドレスおよびファイル長情報に従って計算され、有効ストリップは、ファイルデータを含むデータストリップである。小さなファイルデータのシナリオでは、ファイルデータに対してストライピングが実行されるときに分割を用いて得られる有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nより少ない。小さなファイルデータのシナリオでは、より大規模な分散ファイルストレージシステムは、有効ストリップの量DSCと分散ファイルストレージシステムのデータストリップの量Nとの差がより大きいことを示す。
クライアントエージェント30が、分散ファイルストレージシステム10内のストレージサーバノード101上に配備されるときに、データ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ処理要求を、ストレージサーバノード上のクライアントエージェント30に送信する。アプリケーションサーバ20によってデータ処理要求をストレージサーバノード101上のクライアントエージェントに送信するための方法は、既存の方法に類似しており、ここで再び詳細に説明することはしない。ストレージサーバノード101上でクライアントエージェント30によるデータ処理要求を処理するための方法は、アプリケーションサーバ20上のクライアントエージェント30の処理方法に類似しており、さらに説明することはしない。
アプリケーションサーバ20上のクライアントエージェント30は、有効ストリップの計算された量DSCをパリティストリップの量Mと比較し、図3のブロック340に示されているように、有効ストリップの、有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定する。冗長アルゴリズムの多数決原理により、どのような障害が発生しようと処理中に予想されるファイルデータが取得され得ることを保証するために、パリティストリップの量Mを超えるストリップの量が読み出される必要がある。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。実際のストリップの量N'と、有効ストリップの量DSCとの量の差は、空のストリップ、すなわち、加える必要のある空のストリップの量ESCを加えることによって補償される必要があり、この場合、ESC=N'-DSC=(M+1)-DSCである。これは、分散ファイルストレージシステム内の空のストリップの量を低減し、それに応じて、空のストリップ上の読み出し書き込みIOオペレーションを低減し、これにより、分散ファイルストレージシステムのIO性能を改善することができる。
有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなる。この場合、空のストリップの量は0であり、言い換えると、空のストリップはいっさい加えられる必要がなく、そのため、分散ファイルストレージシステム内の空のストリップの量が低減される。
ファイルデータが大きい場合、有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nと同じであってよく、この場合、空のストリップの量は0である、すなわち、空のストリップはいっさい追加される必要がない。
実際のストリップの量N'は、ファイルデータのサイズに従って動的に調整され、特に、小さなファイルデータのシナリオでは、実際のストリップの量N'が、分散ファイルストレージシステムのデータストリップの量Nの代わりに、使用され、したがって、分散ファイルストレージシステム内の空のストリップの量は、効果的に低減される。それに応じて、空のストリップ上の読み出し書き込みIOオペレーションは低減され、分散ファイルストレージシステムのIO性能が改善される。
図3のブロック360に示されているように、クライアントエージェント30は、N'の実際のストリップ上で対応する処理を実行する。特定の処理方法は、異なる種類のデータ処理要求に従って変わる。
データ処理要求がデータ書き込み要求である例を使用することによって、詳細な説明が以下に示され、実装方法のプロセスが、図4に示されている。この方法が適用可能である分散ファイルストレージシステムも、図1に示されている分散ファイルストレージシステム10を例として使用することによってさらに説明されている。
図1に示されている分散ファイルストレージシステム10において、ストレージサーバノード1からストレージサーバノード8への相互接続が低遅延および高スループットのネットワークを使用することによって行われ、クラスタを形成する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、フロントエンドスイッチ50を使用することによってユーザデータとクラスタとの間の通信を実装する。クラスタ内のストレージサーバノード101は、バックエンドスイッチ60を使用することによって内部通信を実装する。クライアントエージェント30は、分散ファイルストレージシステム10内のそれぞれのストレージサーバノード101上にも配備されてもよく、クライアントエージェント30の機能は、アプリケーションサーバ20上に配備されているクライアントエージェント30の機能に類似しており、さらに説明することはしない。
N+M冗長保護メカニズムは、分散ファイルストレージシステム10に格納されるファイルデータに使用される。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム10内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステム10のNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。NとMとの和は、分散ファイルストレージシステム10内のストレージサーバノードの全量に等しいものとしてよいか、または複数のストリップが、1つのストレージサーバノード101上に格納されるものとしてよい、すなわち、NとMとの和も、ストレージサーバノードの全量より大きいものとしてよい。この実施形態では、分散ファイルストレージシステム10のNは6であり、Mは2である。標準ポータブルオペレーティングシステムインターフェースを通じて、データ書き込み要求が、アプリケーションサーバ20上に配備されているファイルシステムのクライアントエージェント30に送信される。クライアントエージェント30は、データ書き込み要求を処理し、次いで、フロントエンドスイッチ50を使用することによってストレージサーバノード101と通信する。クライアントエージェント30がストレージサーバノード101上に配備される場合、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ書き込み要求を、対応するストレージサーバノード101上のクライアントエージェント30に送信し、次いで、ストレージサーバノード101上のクライアントエージェント30は、データ書き込み要求を処理し、バックエンドスイッチ60を使用することによってクラスタ内のストレージサーバノード101と通信する。
ユーザのファイルデータが分散ファイルストレージシステム10に書き込まれる必要がある場合、ユーザは、クライアントを使用することによってアプリケーションサーバ20上のクライアントエージェント30へのデータ書き込み要求を開始する。説明の便宜上、書き込まれるべきファイルデータは、ターゲットファイルと称される。図4のブロック100に示されているように、クライアントエージェント30は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送するデータ書き込み要求を受信する。この実施形態では、ファイル識別子FIDは、485であり、オフセットアドレスは0Kであり、ファイル長は160Kである。図4のブロック400に示されているように、クライアントエージェント30は、ターゲットファイルのファイル識別子に従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報およびストリップのサイズを取得し、冗長情報は、NおよびMの値である。この実施形態では、Nの値は6であり、Mの値は2であり、ストリップのサイズは128Kである。
図4のブロック420に示されているように、クライアントエージェント30は、データ書き込み要求で搬送されるオフセットアドレスおよびファイル長情報、ストリップの取得されたサイズに従って、ターゲットファイルに対してストライピング処理を実行して、ターゲットファイルの有効ストリップの量DSCを取得する。この実施形態では、ターゲットファイルのオフセットアドレス0Kであり、ファイル長は160Kであり、ストリップのサイズは128Kであり、したがって、クライアントエージェントは、ターゲットファイルに対してストライピング処理を実行して、2つの有効スリップを生成する。
図4のブロック440に示されているように、クライアントエージェント30は、ターゲットファイルに対してストライピング処理が実行されたときに分割を用いて得られる有効ストリップの量DSCを、パリティストリップの取得された量Mと比較する。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。この場合、空のストリップが追加される必要があり、加える必要のある空のストリップの量ESCは、実際のストリップの量N'から有効ストリップの量DSCを引いた値に等しい、ESC=N'-DSC=(M+1)-DSCである。有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなり、この場合、空のストリップが追加される必要がある。
この実施形態では、有効ストリップの量DSCが2であり、パリティストリップの量Mは2であり、したがって、有効ストリップの量DSCは、パリティストリップの量Mに等しい、すなわち、DSC=Mである。この場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1であり、N'=2+1=3である。ストライピング処理がターゲットファイルに対して実行される場合、ターゲットファイルは3つのストリップに分割される必要がある、すなわち、ターゲットファイルの実際のストリップの量N'は3であり、分割を用いて得られるターゲットファイルの有効ストリップの量DSCは、2なので、この場合、1つの空のストリップのみが追加される必要がある。しかし、既存の実装方法では、ターゲットファイルは、6個のデータストリップを有し、2つの有効ストリップがある場合には、4個の空のストリップが追加される必要がある。これからわかるように、本発明の方法を使用することによって、空のストリップの量は大幅に低減され得る。
ターゲットファイルに対してストライピングが実行されたときに分割を用いて得られる有効ストリップの量DSCが1であり、パリティストリップの量Mが2である場合、ターゲットファイルの有効ストリップの量DSCは、パリティストリップの量Mより少ない、この場合、DSC<Mである。この場合、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1であり、N'=2+1=3である。ストライピングがターゲットファイルに対して実行される場合、ターゲットファイルは3つのストリップに分割される必要がある、すなわち、ターゲットファイルの実際のストリップの量N'は3であり、分割を用いて得られるターゲットファイルの有効ストリップの量DSCは、1なので、この場合、2つの空のストリップが追加される必要がある。
それに加えて、ターゲットファイルに対してストライピングが実行されたときに分割を用いて得られる有効ストリップの量DSCが、パリティストリップの量Mより大きい、すなわち、DSC>Mとなる場合がある。たとえば、クライアントエージェントがターゲットファイルに対してストライプ処理を実行するときに分割を用いて得られる有効ストリップの量DSCは、5であり、この場合、DSC>Mであり、実際のストリップの量N'は、DSCに等しい、すなわち、N'=5であり、空のストリップはいっさい追加される必要はない。
これからわかるように、本発明の方法を使用することによって、ターゲットファイルの実際のストリップの量N'は、ターゲットファイルのサイズに従って動的に調整されるものとしてよく、これは、ターゲットファイルがいずれの場合も正しく読み出されることを保証するだけでなく、空のストリップの量を有効に低減することもできる。それに応じて、空のストリップ上の読み出し書き込みIOオペレーションは低減され、分散ファイルストレージシステムのIO性能が改善される。
クライアントエージェント30は、(図4のブロック460に示されているように、)冗長アルゴリズムを使用することによって、取得された実際のストリップの量N'に従ってM個のパリティストリップを生成し、図4のブロック480に示されているように、コンシステンシーラベル情報および有効ストリップの量DSCの情報をN'個の実際のストリップおよびM個のパリティストリップに加える。コンシステンシーラベル情報は、同じタイムスタンプ(timestamp)またはバージョン番号に関する情報であってよい。
たとえば、クライアントエージェント30は、ターゲットファイルに対してストライピング処理を実行し、有効ストリップD1およびD2を取得する。この場合、ターゲットファイルの有効ストリップの量DSCは2である。有効ストリップの量2はパリティストリップの量2と比較され、有効ストリップの量DSCは、パリティストリップの量Mに等しく、ターゲットファイルの実際のストリップの量N'は、3に等しく、この場合、1つの空のストリップD3が追加される必要がある。クライアントエージェントは、ストリップD1、D2、およびD3に従ってパリティストリップD7およびD8を生成し、タイムスタンプT1および2に等しい有効ストリップの量DSCをストリップD1、D2、D3、D7、およびD8に加える。
図4のブロック490に示されているように、クライアントエージェント30は、コンシステンシーラベル情報および有効ストリップの量DSCを搬送する実際のストリップおよびパリティストリップを対応するストレージサーバノード101に書き込む。それぞれのストリップが書き込まれるべきストレージサーバノード101を特に決定するための方法は、既存の実装方法に類似しており、再び詳細に説明することはしない。クライアントエージェント30は、実際のストリップの量N'、パリティストリップの量M、およびターゲットファイルのストリップの分配情報をファイルメタデータ情報テーブルに格納し、これにより、ターゲットファイルが読み出されるときに対応するストレージサーバノード101からターゲットファイルのストリップを読み出すのを助ける。
たとえば、クライアントエージェント30は、タイムスタンプT1および2に等しい有効ストリップの量DSCを有するD1、D2、およびD3をストレージサーバノード1、ストレージサーバノード2、およびストレージサーバノード3に、それぞれ、格納し、タイムスタンプT1および2に等しい有効ストリップの量DSCを有するD7およびD8をストレージサーバノード7およびストレージサーバノード8に、それぞれ、格納する。クライアントエージェント30は、3に等しい実際のストリップの量N'、2に等しいパリティストリップの量M、およびターゲットファイルのストリップの分配情報をファイルメタデータ情報テーブルに格納する。
クライアントエージェント30が、ストレージサーバノード101上に配備される分散ファイルストレージシステム10について、クライアントエージェント30は、バックエンドスイッチ60を使用することによって、ストリップの格納などの、オペレーションを実装し、特定の実装方法は、既存の実装方法と同じであり、本明細書ではさらに説明することはしない。
これからわかるように、ターゲットファイルが小さいファイルデータであるシナリオでは、ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られる有効ストリップの量DSCが分散ファイルストレージシステムのパリティストリップの量Mより小さい場合に、実際のストリップの量N'はパリティストリップの量Mに1を加えた値に等しく、Mの値は一般的には小さく、この場合、ごく少数の空のストリップを追加するだけでよい。ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られ有効ストリップの量DSCが、分散ファイルストレージシステムのパリティストリップの量Mより多い場合、実際のストリップの量N'は、この場合、有効ストリップの量に等しく、いっさい空のストリップが追加される必要はない。このようにして、ターゲットファイルが、小さいファイルデータである場合、ターゲットファイルに対してストライピング処理が実行されて、従来技術の分散ファイルストレージシステムのNのデータストリップの量の代わりに、N'個の実際のストリップを生成し、これにより、空のストリップの量を低減し、実際、空のストリップ上の書き込みオペレーションを低減し、分散ファイルストレージシステム内のIOオペレーションを低減し、分散ファイルストレージシステムの性能を改善する。特に、大規模な分散ファイルストレージシステムでは、分散ファイルストレージシステムの性能を改善する効果はより明らかである。
以下の実施形態では、データ処理要求がデータ読み出し要求である例を使用することによって、詳細な説明が示され、実装方法のプロセスが、図5Aおよび図5Bに示されている。データ読み出し要求は、ユーザがターゲットファイルを読み出すことを必要とするという要求を指す。分散ファイルストレージシステム10の構造は、データ書き込み要求であるデータ処理要求が適用される分散ファイルストレージシステム10の構造と同じであり、これは図1に示されている。この方法実施形態では、これは、Nが6であり、Mが2であるという説明に対する一例としても使用される。NおよびMの値は、必要に応じて他の数値に設定することもでき、その実装原理は同じであり、さらに説明することはしない。それに加えて、この実施形態では、クライアントエージェント30がアプリケーションサーバ20上に配備される一例を使用することによっても説明がなされる。
ユーザが、格納されているファイルデータを分散ファイルストレージシステム10から読み出すことを必要とする場合、ユーザは、アプリケーションサーバ20上のクライアントエージェント30へのデータ読み出し要求を開始する。説明をわかりやすくするため、ユーザによって読み出されるべきファイルデータは、ターゲットファイルと称される。図5Aのブロック100に示されているように、クライアントエージェント30は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送するデータ読み出し要求を受信する。データ読み出し要求を受信した後に、図5Aのブロック500に示されているように、クライアントエージェント30は、データ読み出し要求で搬送されるファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステム10の冗長情報を取得し、冗長情報は、NおよびMの値である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピング処理がファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステム10のNおよびMは、分散ファイルストレージシステム10のファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。この実施形態では、分散ファイルストレージシステム10のNの値は6であり、分散ファイルストレージシステム10のMの値は2である。
データ読み出し要求を受信した後に、アプリケーションサーバ20上のクライアントエージェント30は、データストリップの量N、パリティストリップの量M、およびファイル識別子によるターゲットファイルのストリップのサイズを取得することができる。図5Aのブロック501に示されているように、クライアントエージェントは、データ読み出し要求で搬送されるオフセットアドレスおよびファイル長情報、およびストリップのサイズに従ってターゲットファイルの有効ストリップの量DSCを算出する。特定の計算方法は、データ書き込み要求に対する解決策における方法に類似しており、本明細書でさらに説明することはしない。以下のステップでは、これは、ターゲットのファイルの有効ストリップの量は2であり、ターゲットファイルの実際のストリップの量は3であり、ターゲットファイルのパリティストリップの量は2であるという説明に対する例として使用される。クライアントエージェント30は、データ読み出し要求で搬送されるファイル識別子FIDを使用することによってターゲットファイルのストリップの分配情報を見つけ、分配情報に従って、ターゲットファイルの実際のストリップおよびパリティストリップが格納されるストレージサーバノードを決定することができ、実際のストリップの計算された量N'およびパリティストリップの量に従って、ターゲットファイルの実際のストリップおよびパリティストリップを格納するサーバノードの配置をさらに決定することができる。
クライアントエージェント30は、新しいデータブロック読み出し要求を生成し、データブロック読み出し要求を決定されたストレージサーバノード101に送信する。データブロック読み出し要求は、ストレージサーバノード101上のターゲットファイルのストリップを読み出すために使用される。
クライアントエージェント30は、データブロック読み出し要求をすべての決定されたストレージサーバノード101に送信するか、またはデータブロック読み出し要求を分散ファイルストレージシステム10内のすべてのストレージサーバノード101に送信することができる。クライアントエージェント30は、また、データブロック読み出し要求を最初にターゲットファイルの実際のストリップを格納するストレージサーバノード101に送信することができ、ターゲットファイルの実際のストリップを格納するストレージサーバノード101によってフィードバックされる応答が、ターゲットファイルが正しく読み出せないことを示す場合、クライアントエージェント30は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信する。この実施形態では、最後の場合は説明のために使用される、すなわち、データブロック読み出し要求は、ターゲットファイルの実際のストリップを格納するストレージサーバノード101に最初に送信され、ターゲットファイルの実際のストリップを格納するストレージサーバノード101によってフィードバックされる応答が、正しく読み出されることができない場合、データブロック読み出し要求は、ターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信される。
データブロック読み出し要求を受信した後に、ストレージサーバノード101は、データブロック読み出し要求で搬送されるファイル識別子に従って、格納されている対応するストリップが読み出せるかどうかを判定し、格納されている対応するストリップが読み出せる場合、ストレージサーバノード101は、ストリップが読み出せることを示す成功応答メッセージをクライアントエージェントに送信し、成功応答メッセージは、ストリップのコンシステンシーラベル情報および有効ストリップの量DSCに関する情報を搬送し、格納されている対応するストリップがないか、または格納されている対応するストリップが損傷し、読み出し不能である場合、ストレージサーバノード101は、ストリップが読み出せないことを示す不成功応答メッセージをクライアントエージェントに送信する。
クライアントエージェント30は、データブロック読み出し要求をターゲットファイルの実際のストリップを格納するストレージサーバノード101に送信し、それぞれのストレージサーバノード101によって返されるデータブロック読み出し要求の応答メッセージを受信する。成功応答メッセージの量が実際のストリップの量N'と同じであり、すべての成功応答メッセージ内の、コンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは、この場合に、読み出されるものとしてよく(図5Aのブロック511に示されているように)、クライアントエージェント30は、実際のストリップを読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。実際のストリップを読み出し、クライアントエージェント30によりターゲットファイルを構築する実装方法は、既存の方法と同じであり、本明細書ではさらに説明することはしない。
たとえば、データ読み出し要求を受信した後に、クライアントエージェント30は、データ読み出し要求で搬送されるターゲットファイルのファイル識別子に従ってメタデータ情報テーブルを検索し、ターゲットファイルのデータストリップの量Nが6であり、パリティストリップの量Mが2であることを取得し、ターゲットファイルのストリップの分配情報を取得する、すなわち、実際のストリップD1はストレージサーバノード1上に格納され、実際のストリップD2はストレージサーバノード2上に格納され、実際のストリップD3はストレージサーバノード3上に格納され、パリティストリップD7はストレージサーバノード7上に格納され、パリティストリップD8はストレージサーバノード8上に格納される。クライアントエージェント30は、データ読み出し要求で搬送される情報およびターゲットファイルのファイル識別子を使用することによって得られる情報に従ってターゲットファイルの有効ストリップの量DSCおよびターゲットファイルの実際のストリップの量N'を計算する。詳細な計算方法については、データ書き出し要求のプロセスにおける関連する説明を参照されたい。
クライアントエージェント30は、新しいデータブロック読み出し要求を生成し、データブロック読み出し要求は、ストレージサーバノード101からターゲットファイルのストリップを読み出すために使用される。
クライアントエージェント30は、データブロック読み出し要求をターゲットファイルの実際のストリップを格納するストレージサーバノード1から3に送信する。ストレージサーバノード1から3は、実際のストリップが読み出され得ることを示す成功応答メッセージを返し、成功応答メッセージは、それぞれ、ストリップのタイムスタンプ情報および有効ストリップの量に関する情報を搬送する。クライアントエージェント30は、タイムスタンプ情報およびすべての成功応答メッセージで搬送される有効ストリップの量に関する情報が、別々に同じであるかどうかを判定する。タイムスタンプ情報およびすべての成功応答メッセージで搬送される有効ストリップの量に関する情報が、別々に同じである場合、クライアントエージェント30は、実際のストリップを読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。本発明のこの実施形態では、クライアントエージェント30は、コンシステンシーラベル情報および有効ストリップの量に関する情報がすべて別々に同じである3つのストリップを読み出すことをのみを必要とする。しかし、従来技術では、予想されたターゲットファイルを取得するために、同じコンシステンシーラベル情報および有効ストリップの量DSCに関する同じ情報を有するN(N=6)のストリップが読み出されることが必要である。その結果、さらに3つの空のストリップが読み出される必要があり、それによって、分散ファイルストレージシステム内のIOオペレーションの無駄が生じる。大規模な分散ファイルストレージシステムでは、データストリップの量Nの値は大きく、それに応じて、操作される必要のある空のストリップの量もより大きく、これにより、分散ファイルストレージシステムのIO性能に対する負担が増大する。この実施形態で言及されている方法を使用することによって、空のストリップに対する読み出しオペレーションは、効果的に低減されるものとしてよく、これにより、分散ファイルストレージシステム全体のIO性能が改善される。
図5Aのブロック505に示されているように、ターゲットファイルの実際のストリップを格納するストレージサーバノード101によってフィードバックされる成功応答メッセージの量が、実際のストリップの量N'より小さいか、または同じコンシステンシーラベル情報および有効ストリップの量DSCに関する同じ情報を搬送する成功応答メッセージの量が、実際のストリップの量N'よりも少ない場合、成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量DSCに関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかがさらに判定される。
成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、クライアントエージェント30は、成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定し(図5Aのブロック551に示されているように)、それらが、ターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく(図5Aのブロック511に示されているように)、クライアントエージェント30は、対応する処理を実行し、特定の処理方法は、既存の実装方法と同じであり、本明細書でさらに説明することはしない。成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、クライアントエージェント30は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信し(図5Bのブロック553に示されているように)、ターゲットファイルのパリティストリップを格納するストレージサーバノード101の応答メッセージを受信する。次いで、クライアントエージェント30は、すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定し(図5Bのブロック557に示されているように)、それらが、ターゲットファイルの有効ストリップの量DSC以上である場合、クライアントエージェント30は、この場合、予想されたターゲットファイルを読み出すことができ、それらが、ターゲットファイルの有効ストリップの量DSC未満である場合、クライアントエージェント30は、ユーザに、読み出しが不成功であることを示すメッセージをフィードバックする(図5Bのブロック513に示されているように)。
成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量M以下である場合、クライアントエージェント30は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信し(図5Bのブロック507に示されているように)、ターゲットファイルのパリティストリップを格納するストレージサーバノード101の応答メッセージを受信する。次いで、クライアントエージェント30は、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかを判定する(図5Bのブロック509に示されているように)。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、クライアントエージェント30は、すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定する(図5Bのブロック510に示されているように)。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量Mよりも少ない場合、クライアントエージェント30は、ユーザに、読み出しが不成功であることを示すメッセージをフィードバックする。
以下では、ターゲットのファイルの有効ストリップの量DSCは2であり、ターゲットファイルの実際のストリップの量N'は3であり、ターゲットファイルのパリティストリップの量Mは2である例を使用することによって説明が行われる。ターゲットファイルの有効ストリップD1は、ストレージサーバノード1上に格納され、ターゲットファイルの有効ストリップD2は、ストレージサーバノード2上に格納され、ターゲットファイルの空のストリップD3は、ストレージサーバノード3上に格納され、パリティストリップD7はストレージサーバノード7上に格納され、パリティストリップD8はストレージサーバノード8上に格納される。ストリップD1、D2、D3、D7、およびD8において、コンシステンシーラベル情報はタイムスタンプT1であり、有効ストリップの量に関する情報はDSC=2である。クライアントエージェント30は、最初に、ユーザの受信されたデータブロック読み出し要求を、ストレージサーバノード1、ストレージサーバノード2、およびストレージサーバノード3に送信する。ストレージサーバノード1、ストレージサーバノード2、およびストレージサーバノード3がすべて、成功応答メッセージをクライアントエージェント30に送信する場合、クライアントエージェント30は、ストリップの3つの成功応答メッセージがあり、成功応答メッセージで搬送されるタイムスタンプおよびDSCが別々に同じである、すなわち、成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量がターゲットファイルの実際のストリップの量3と同じであると判定し、この場合、予想されたターゲットファイルが読み出されるものとしてよく、クライアントエージェント30は、ストリップD1、D2、およびD3を読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。ストレージサーバノード1およびストレージサーバノード3が両方とも、成功応答メッセージをフィードバックし、成功応答メッセージが、タイムスタンプT1およびストリップD1およびD3の有効ストリップの量DSC=2に関する情報を搬送するが、ストレージサーバノード2は、この場合に格納されているストリップD2が損傷しているため不成功応答メッセージをフィードバックする場合、成功応答が返されるストリップは2つしかない、すなわち、クライアントは2つの成功応答メッセージを受信し、その量は、ターゲットファイルの実際のストリップの量3より少なく、クライアントエージェント30は、成功応答メッセージの量2を、分散ファイルストレージシステムのパリティストリップの量2とさらに比較する必要がある。成功応答メッセージの量2は、分散ファイルストレージシステムのパリティストリップの量2と同じであり、したがって、クライアントエージェント30は、データブロック読み出し要求をストレージサーバノード7およびストレージサーバノード8に送信する。ストレージサーバノード7およびストレージサーバノード8は、両方とも成功応答メッセージをクライアントエージェント30にフィードバックし、成功応答メッセージは、タイムスタンプT1およびストリップD7およびD8の有効ストリップの量DSC=2に関する情報を別々に搬送する。クライアントエージェント30は、同じタイムスタンプおよび有効ストリップの量に関する同じ情報を有する受信された成功応答メッセージの量の和(有効ストリップに対する成功応答メッセージの量とパリティストリップに対する成功応答メッセージの量との和(1+2=3))をターゲットファイルの有効ストリップの量2と比較する。この場合、同じタイムスタンプおよび有効ストリップの量に関する同じ情報を有する成功応答メッセージの量は、ターゲットファイルの有効ストリップの量2より大きく、この場合、予想されたターゲットファイルが読み出されるものとしてよく、クライアントエージェント30は、ストリップD1、D7、およびD8を読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。
データ処理要求は、データ削除要求またはデータ切り捨て要求であってもよく、実装プロセスは、図6に示されている。データ処理要求が適用される分散ファイルストレージシステム10の構造は、図1に示されている、他のデータ処理要求の構造と同じである。データ削除要求の実装方法は、データ切り捨て要求の実装方法に類似しており、データ削除要求は、説明のために以下で例として使用され、データ切り捨て要求の実装方法について、さらに説明することはしない。この実施形態では、分散ファイルストレージシステムのNの値は6であり、Mの値2である。NおよびMの値は、必要に応じて他の数値に設定することもでき、その実装原理は同じであり、さらに説明することはしない。それに加えて、この実施形態では、クライアントエージェント30がアプリケーションサーバ20上に配備される一例を使用することによっても説明がなされる。
ユーザは、アプリケーションサーバ20上のクライアントエージェント30へのデータ削除要求を開始し、ユーザによって削除されるべきファイルデータは、ターゲットファイルと称され、データ削除要求は、ストレージサーバノード上に格納されているターゲットファイルの関係するストリップを削除するために使用される。クライアントエージェント30は、ターゲットファイルのファイル識別子FIDに関する情報を搬送するデータ削除要求を受信する(図6のブロック100に示されているように)。データ削除要求を受信した後に、クライアントエージェント30は、データ削除要求で搬送される、ファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報およびストリップの分配情報を取得し、冗長情報は、NおよびMの値である(図6のブロック600に示されているように)。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。
ここで、これは、分散ファイルストレージシステムのパリティストリップの量Mが2であり、分散ファイルストレージシステムのデータストリップの量Nが6であるという説明に対する例として使用される。
クライアントエージェントは、ストリップの取得された分配情報に従って分散ファイルストレージシステム10内の対応するストレージサーバノード101にデータ削除要求を送信する(図6のブロック620に示されているように)。データ削除要求を受信するストレージサーバノード101が、ターゲットファイルのストリップを有していないか、またはターゲットファイルの空のストリップのみを有している場合、削除対象が存在しないことを示す応答メッセージが、クライアントエージェント30に返される。データ削除要求を受信したストレージサーバノード101が、ターゲットファイルの有効ストリップまたはパリティストリップを格納する場合、ストリップが削除された後に削除成功を示す応答メッセージがクライアントエージェント30に返される。削除が実行され得ないか、または完全な削除が実行されない場合、削除不成功を示す応答メッセージがクライアントエージェント30にフィードバックされる。ストレージサーバノードの応答メッセージを受信した後(図6のブロック640に示されているように)、クライアントエージェント30は、削除対象が存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上であるかどうかを判定する。言い換えると、分散ファイルストレージシステム内に格納されているターゲットファイルのストリップの量は、分散ファイルストレージシステムのパリティストリップの量Mを超えるべきでなく、これにより、ターゲットファイルが削除された後にターゲットファイルが分散ファイルストレージシステムから読み出せないことが確実になる。ストリップが存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上である場合、クライアントエージェント30は、ユーザに、削除成功を示す応答メッセージを返す。そうでない場合、クライアントエージェント30は、ユーザに、削除不成功を示す応答メッセージを返す(図6のブロック660に示されているように)。
たとえば、データ削除要求を受信した後に、クライアントエージェント30は、データ削除要求で搬送されるターゲットファイルのファイル識別子に従ってメタデータ情報テーブルを検索し、分散ファイルストレージシステムのパリティストリップの量Mが2であり、分散ファイルストレージシステムのデータストリップの量Nが6あることを取得し、ストリップの分配情報を取得する。クライアントエージェント30は、ストリップの分配情報に従って分散ファイルストレージシステム10内の対応するそれぞれのストレージサーバノード101に受信されたデータ削除要求を送信する。たとえば、ストレージサーバノード1は、ターゲットファイルの有効ストリップD1を格納し、ストレージサーバノード2は、ターゲットファイルの有効ストリップD2を格納し、クライアントエージェント30は、受信されたデータ削除要求をストレージサーバノード1およびストレージサーバノード2に送信し、ストレージサーバノード1およびストレージサーバノード2は、ストリップD1およびD2をそれぞれ削除し、削除が成功した後に削除成功を示す応答メッセージをクライアントエージェント30に返す。ストレージサーバノード3は、ターゲットファイルの空のストリップを格納し、ストレージサーバノード4、ストレージサーバノード5、およびストレージサーバノード6は、ターゲットファイルのストリップを有していない。データ削除要求を受信した後に、ストレージサーバノード3から6はそれぞれ、クライアントエージェント30に、削除対象が存在しないことを示す応答メッセージをフィードバックする。ストレージサーバノード7およびストレージサーバノード8は、ターゲットファイルのパリティストリップを格納し、したがって、対応するストリップD7およびD8を別々に削除し、削除が成功した後にクライアントエージェント30に削除成功を示す応答メッセージを返す。クライアントエージェント30は、データ削除成功を示す4つの応答メッセージおよび削除対象が存在しないことを示す4つの応答メッセージを受信し、これらはストレージサーバノード101によって返される。削除成功を示す受信された応答メッセージと削除対象が存在しないことを示す受信された応答メッセージとの総量は8であり、これは、分散ファイルストレージシステムのデータストリップの量より多く、したがって、クライアントエージェント30は、ユーザに、削除成功を示す応答を返す。データ処理要求がデータ削除要求である場合、削除成功を示す返された応答メッセージの量と削除対象が存在しないことを示す返された応答メッセージの量との和が、分散ファイルストレージシステムのデータストリップの量N以上であるときのみ、クライアントエージェントは、ユーザに、削除成功を示すメッセージを返すことができる。データ削除オペレーションでは、分散ファイルストレージシステムのデータストリップの量Nがこの和と比較される必要があり、データ書き込み要求およびデータ読み出し要求の場合、ターゲットファイルの実際のストリップの量N'は、この和と比較される必要がある。これは、もっぱら、ターゲットファイルのストリップが削除された後、ターゲットファイルが再び読み出され得ないことを確実にすることを意図している。
同様に、切り捨てによりデータストライプを削除するための方法は、データストリップを削除するための方法と同じであり、本明細書ではさらに説明することはしない。
本発明で提供される方法を使用することによって、ファイルが、分散ファイルストレージシステムに書き込まれるときに、N'+M冗長保護メカニズムは、書き込まれるファイルのサイズに従って使用される、すなわち、ターゲットファイルに対してストライピングが実行されるときに、ターゲットファイルのサイズに従って異なる量のストリップが生成される、すなわち、実際のストリップの量N'が、ターゲットファイルのサイズに従って生成される。これは、予想されたターゲットファイルがいかなる場合にも正しく取得され得るだけでなく、分散ファイルストレージシステム内の空のストリップ量を低減し、分散ファイルストレージシステム内のディスクIOオペレーションおよびネットワークIOオペレーションの量を低減し、分散ファイルストレージシステムの性能を改善することを効果的に行えることをも保証することができる。
本発明は、分散ファイルストレージシステムにおいてデータ処理方法を実装するためのデバイスをさらに提供する。本発明のこの実施形態では、デバイスは、クライアントエージェントであってよい。図1に示されているように、デバイスは、分散ファイルストレージシステムに接続されているアプリケーションサーバ上に配備され得るか、または分散ファイルストレージシステム内のストレージサーバノード上に配備され得る。
図1に示されているように、分散ファイルストレージシステム10は、複数のストレージサーバノード101を備え、複数のストレージサーバノード101は、低遅延および高スループットのネットワーク(たとえば、IBネットワーク、または10G Ethernet(登録商標))を使用することによって相互接続されて、クラスタを形成する。分散ファイルストレージシステム10は、フロントエンド(Front-End)スイッチ50およびバックエンド(Back-End)スイッチ60をさらに備える。フロントエンドスイッチ50は、外部サービス要求機能およびユーザデータとクラスタとの間のデータ交換を実装するように構成される。バックエンドスイッチ60は、内部サービス要求機能およびクラスタ内のストレージサーバノード101の間のデータ交換を実装するように構成される。アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。
デバイスが、分散ファイルストレージシステム10に接続されているアプリケーションサーバ20上に配備される場合、それぞれのアプリケーションは、標準ポータブルオペレーティングシステムインターフェース(Portable Operating System Interface、略してPOSIX)を使用することによって、アプリケーションサーバ20上に配備されるファイルシステムクライアントエージェントCA(Client Agent)30に直接アクセスする。分散ファイルストレージシステム10の、サービスを外部から提供する、ポータルとして、クライアントエージェント30は、アプリケーションの要求を受信した後に、クラスタ内のストレージサーバノード101と相互にやり取りする。デバイスが、分散ファイルストレージシステム内のストレージサーバノード101上に配備されるときに、それぞれのアプリケーションは、一般的に使用されているNASプロトコル(NFS/CIFSなど)クライアントを使用することによって対応するネットワークアタッチトストレージサーバ(Network Attached Storage Server、NAS Server)にアクセスし、NAS Serverおよびストレージサーバは一緒に配備され、次いで、NAS ServerはServerノード上に配備されているファイルシステムクライアントエージェントにアクセスし、ストレージサービスを実装する。本発明の実装原理を明確に説明するために、特定の説明に第1のアクセス方法が使用され、第2のアクセス方法では、類似の実装原理を使用する。
デバイスのデータ処理方法を明確に説明するために、デバイスがクライアントエージェントである例を使用することによって説明がなされている。
図1に示されているサービスシステムは、一例として使用されている。サービスシステムは、2つのアプリケーションサーバ20を備え、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって分散ファイルストレージシステム10と通信する。クライアントエージェント30は、アプリケーションサーバ20上に配備され、ユーザのデータ処理要求は、最初に、アプリケーションサーバ20上のクライアントエージェント30に送信され、これにより、クライアント30は、データ処理要求に対して対応する処理を実行する。クライアントエージェント30がストレージサーバノード101上に配備されている場合、ユーザのデータ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ処理要求を、対応するストレージサーバノード101上のクライアントエージェント30に送信し、ストレージサーバノード101上のクライアントエージェント30が、データ処理要求を処理する。
分散ファイルストレージシステム10内のストレージサーバノード101が相互接続されて、クラスタを形成し、大規模ネットワークRAIDを構成し、N+M個の冗長保護メカニズムが、格納されているデータに使用される。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステム10によって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って固定された値に設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム10内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム10内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。説明をより明確にするために、処理されるべきファイルデータの1つは1つのデータストライプと称され、ストライピングが1つのデータストライプに対して実行されるときに、データストライプは、N個のデータストリップに分割され、M個のパリティストリップは、冗長アルゴリズムに従って生成される。
図7に示されているように、クライアントエージェント30は、受信モジュール301、処理モジュール303、および送信モジュール305を備える。
クライアントエージェント30受信モジュール301は、アプリケーションによって送信されデータ処理要求を受信するように構成され、データ処理要求は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送する。ターゲットファイルは、処理対象のファイルである。処理モジュール303は、データ処理要求で搬送されるオフセットアドレスおよび長さ情報に従って、ファイルデータの有効ストリップの量(Data Strip Count、DSC)を計算する。有効ストリップは、ファイルデータを含むデータストリップである。小さなファイルデータのシナリオでは、ファイルデータに対してストライピングが実行されるときに分割を用いて得られる有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nより少ない。小さなファイルデータのシナリオでは、より大規模な分散ファイルストレージシステム10は、有効ストリップの量DSCと分散ファイルストレージシステムのデータストリップの量Nとの差がより大きいことを示す。
クライアントエージェント30が、分散ファイルストレージシステム10内のストレージサーバノード101上に配備されるときに、データ処理要求を受信した後に、アプリケーションサーバ20は、フロントエンドスイッチ50を使用することによって、データ処理要求を、ストレージサーバノード101上のクライアントエージェント30に送信する。アプリケーションサーバ20によってデータ処理要求をストレージサーバノード101上のクライアントエージェント30に送信するための方法は、既存の方法に類似しており、ここで再び詳細に説明することはしない。ストレージサーバノード101上でクライアントエージェント30によるデータ処理要求を処理するための方法は、アプリケーションサーバ20上のクライアントエージェント30の処理方法に類似しており、さらに説明することはしない。
処理モジュール303は、有効ストリップの計算された量DSCをパリティストリップの量Mと比較する。冗長アルゴリズムの多数決原理により、どのような障害が発生しようと処理中に予想されるファイルデータが取得され得ることを保証するために、パリティストリップの量Mを超えるストリップの量が読み出される必要がある。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。実際のストリップの量N'と、有効ストリップの量DSCとの量の差は、空のストリップ、すなわち、加える必要のある空のストリップの量を加えることによって補償される必要があり、この場合、ESC=N'-DSC=(M+1)-DSCである。これは、分散ファイルストレージシステム内の空のストリップの量を低減し、それに応じて、空のストリップ上の読み出し書き込みIOオペレーションを低減し、これにより、分散ファイルストレージシステムのIO性能を改善することができる。
有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなる。この場合、空のストリップの量は0であり、言い換えると、空のストリップはいっさい加える必要がなく、そのため、分散ファイルストレージシステム内の空のストリップの量が低減される。
ファイルデータが大きい場合、有効ストリップの量DSCは、分散ファイルストレージシステムのデータストリップの量Nと同じであってよく、この場合、空のストリップの量は0である、すなわち、空のストリップはいっさい追加される必要がない。
実際のストリップの量N'は、ファイルデータのサイズに従って動的に調整され、特に、小さなファイルデータのシナリオでは、実際のストリップの量N'が、分散ファイルストレージシステムのデータストリップの量Nの代わりに、使用され、したがって、分散ファイルストレージシステム内の空のストリップの量は、効果的に低減される。それに応じて、空のストリップ上の読み出し書き込みIOオペレーションは低減され、分散ファイルストレージシステムのIO性能が改善される。
対応する処理が、N'個の実際のストリップに対して実行される。特定の処理方法は、異なる種類のデータ処理要求に従って変わる。
送信モジュール305は、処理モジュール303によって実行される処理の結果をユーザにフィードバックするように構成される。
データ処理要求が、データ書き込み要求である場合、受信モジュール301は、データ書き込み要求を受信するように構成される。
処理モジュール303は、データ書き込み要求で搬送されるオフセットアドレスおよびファイル長情報、およびストリップの取得されたサイズに従って、ターゲットファイルに対してストライピング処理を実行して、ターゲットファイルの有効ストリップの量DSCを取得する。
処理モジュール303は、ターゲットファイルに対してストライピングが実行されたときに分割を用いて得られる有効ストリップの量DSCを、パリティストリップの取得された量Mと比較する。有効ストリップの量DSCが、パリティストリップの量M以下であるときに、すなわち、DSC≦Mであるときに、ターゲットファイルの実際のストリップの量N'は、パリティストリップの量Mに1を加えたもの、すなわち、N'=M+1となる。この場合、空のストリップが追加される必要があり、加える必要のある空のストリップの量ESCは、実際のストリップの量N'から有効ストリップの量DSCを引いた値に等しい、ESC=N'-DSC=(M+1)-DSCである。有効ストリップの量DSCが、パリティストリップの量Mより大きいとき、すなわち、DSC>Mであるときに、ターゲットファイルの実際のストリップの量N'は、有効ストリップの量DSCに等しい、すなわち、N'=DSCとなり、この場合、空のストリップが追加される必要がない。
処理モジュール303は、冗長アルゴリズムを使用することによって、取得された実際のストリップに従ってM個のパリティストリップを生成し、コンシステンシーラベル情報および有効ストリップの量DSCをN'個の実際のストリップおよびM個のパリティストリップに加える。コンシステンシーラベル情報は、同じタイムスタンプまたはバージョン番号に関する情報であってよい。
処理モジュール303は、コンシステンシーラベル情報および有効ストリップの量DSCを搬送する実際のストリップおよびパリティストリップを対応するストレージサーバノードに書き込む。それぞれのストリップが書き込まれるべきストレージサーバノードを特に決定するための方法は、既存の実装方法に類似しており、再び詳細に説明することはしない。処理モジュール303は、実際のストリップの量N'、パリティストリップの量M、およびターゲットファイルのストリップの分配情報をファイルメタデータ情報テーブルに格納し、これにより、ターゲットファイルが読み出されるときに対応するストレージサーバノードからターゲットファイルのストリップを読み出すのを助ける。
これからわかるように、ターゲットファイルが小さいファイルデータであるシナリオでは、ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られる有効ストリップの量DSCが分散ファイルストレージシステムのパリティストリップの量Mより小さい場合に、実際のストリップの量N'はパリティストリップの量Mに1を加えた値に等しく、Mの値は一般的には小さく、この場合、ごく少数の空のストリップを追加するだけでよい。ターゲットファイルに対してストライピング処理が実行されるときに分割を用いて得られ有効ストリップの量DSCが、分散ファイルストレージシステムのパリティストリップの量Mより多い場合、実際のストリップの量N'は、この場合、有効ストリップの量に等しく、いっさい空のストリップが追加される必要はない。このようにして、ターゲットファイルが、小さいファイルデータである場合、ターゲットファイルに対してストライピング処理が実行されて、従来技術の分散ファイルストレージシステムのNのデータストリップの量の代わりに、N'個の実際のストリップを生成し、これにより、空のストリップの量を低減し、実際、空のストリップ上の書き込みオペレーションを低減し、分散ファイルストレージシステム10内のIOオペレーションを低減し、分散ファイルストレージシステム10の性能を改善する。特に、大規模な分散ファイルストレージシステム10では、分散ファイルストレージシステム10の性能を改善する効果はより明らかである。
データ処理要求が、データ読み出し要求である場合、ユーザによって読み出されるべきファイルデータは、ターゲットファイルと称される。データ読み出し要求は、対応するサーバノード上に格納されているターゲットファイルのストリップが読み出され、元のターゲットファイルが構築され復元されるという要求である。
受信モジュール301は、データ読み出し要求を受信するように構成され、データ読み出し要求は、ターゲットファイルのファイル識別子FID、オフセットアドレス(offset)、ファイル長(length)、および他の情報を搬送する。処理モジュール303は、データ読み出し要求で搬送されるファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報を取得し、冗長情報は、NおよびMの値である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。
処理モジュール303は、ファイル識別子に従ってデータストリップの量N、パリティストリップの量M、およびターゲットファイルのストリップのサイズを検索することができる。処理モジュール303は、データ読み出し要求で搬送されるターゲットファイルのオフセットアドレスおよびファイル長情報、およびストリップのサイズに従ってターゲットファイルの有効ストリップの量DSCを計算する。特定の計算方法は、データ書き込み要求に対する解決策における方法に類似しており、本明細書でさらに説明することはしない。処理モジュール303は、データ読み出し要求で搬送されるファイル識別子を使用することによってターゲットファイルのストリップの分配情報を見つけ、分配情報に従って、ターゲットファイルの実際のストリップおよびパリティストリップが格納されるストレージサーバノードを決定することができ、実際のストリップの計算された量N'およびパリティストリップの量に従って、ターゲットファイルの実際のストリップおよびパリティストリップを格納するサーバノードの配置をさらに決定することができる。処理モジュール303は、データ読み出し要求をすべての決定されたストレージサーバノードに送信するか、またはデータ読み出し要求を分散ファイルストレージシステム内のすべてのストレージサーバノードに送信することができる。処理モジュール303は、また、データ読み出し要求を最初にターゲットファイルの実際のストリップを格納するストレージサーバノードに送信することができ、ターゲットファイルの実際のストリップを格納するストレージサーバノードによってフィードバックされる応答が、ターゲットファイルが正しく読み出せないことを示す場合、処理モジュール303は、データ読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノード101に送信する。この実施形態では、最後の場合は説明のために使用される、すなわち、処理モジュール303は、最初に、データ読み出し要求を、ターゲットファイルの実際のストリップを格納するストレージサーバノードに送信し、ターゲットファイルの実際のストリップを格納するストレージサーバノードによってフィードバックされる応答が、ターゲットファイルが正しく読み出せないことを示す場合、データ読み出し要求は、ターゲットファイルのパリティストリップを格納するストレージサーバノードに送信される。
処理モジュールは、新しいデータブロック読み出し要求を生成し、データブロック読み出し要求を決定されたストレージサーバノード101に送信する。データブロック読み出し要求は、ストレージサーバノード101上のターゲットファイルのストリップを読み出すために使用される。
データブロック読み出し要求を受信した後に、ストレージサーバノードは、データブロック読み出し要求で搬送されるファイル識別子に従って、格納されている対応するストリップが読み出せるかどうかを判定し、格納されている対応するストリップが読み出せる場合、ストレージサーバノードは、ストリップが読み出せることを示す成功応答メッセージを処理モジュール303に送信し、成功応答メッセージは、ストリップのコンシステンシーラベル情報および有効ストリップの量DSCに関する情報を搬送し、格納されている対応するストリップがないか、または格納されている対応するストリップが損傷し、読み出し不能である場合、ストレージサーバノードは、ストリップが読み出せないことを示す不成功応答メッセージを処理モジュール303に送信する。
処理モジュール303は、データブロック読み出し要求をターゲットファイルの実際のストリップを格納するストレージサーバノードに送信し、それぞれのストレージサーバノードによって返されるデータブロック読み出し要求の応答メッセージを受信する。成功応答メッセージの量が実際のストリップの量N'と同じであり、すべての成功応答メッセージ内の、コンシステンシーラベル情報および有効ストリップの量DSCに関する情報が、別々に同じである場合、ターゲットファイルは、この場合に、読み出されるものとしてよく、処理モジュール303は、実際のストリップを読み出し、ターゲットファイルを構築し、ターゲットファイルをユーザに送信する。実際のストリップを読み出し、処理モジュール303によりターゲットファイルを構築する実装方法は、既存の方法と同じであり、本明細書ではさらに説明することはしない。ターゲットファイルの実際のストリップを格納するストレージサーバノードによってフィードバックされる成功応答メッセージの量が、実際のストリップの量N'より小さいか、または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、実際のストリップの量N'よりも少ない場合、成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかがさらに判定される。
成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、処理モジュール303は、成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定し、成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、処理モジュール303は、対応する処理を実行し、特定の処理方法は、既存の実装方法と同じであり、本明細書でさらに説明することはしない。成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、処理モジュール303は、データ読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノードに送信し、ターゲットファイルのパリティストリップを格納するストレージサーバノードの応答メッセージを受信する。次いで、処理モジュール303は、すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。
成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量M以下である場合、処理モジュール303は、データブロック読み出し要求をターゲットファイルのパリティストリップを格納するストレージサーバノードに送信し、ターゲットファイルのパリティストリップを格納するストレージサーバノードの応答メッセージを受信する。次いで、処理モジュール303は、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が分散ファイルストレージシステムのパリティストリップの量Mより多いかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方とも分散ファイルストレージシステムのパリティストリップの量Mよりも多い場合、処理モジュール303は、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効なストリップの量DSC以上であるかどうかを判定する。すべての成功応答メッセージの量および同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、両方ともターゲットファイルの有効ストリップの量DSC以上である場合、予想されたターゲットファイルは、この場合に、読み出されるものとしてよく、すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、ターゲットファイルの有効ストリップの量DSCよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。すべての成功応答メッセージの量または同じコンシステンシーラベル情報および有効ストリップの量に関する同じ情報を搬送する成功応答メッセージの量が、分散ファイルストレージシステムのパリティストリップの量Mよりも少ない場合、読み出し不成功を示すメッセージがユーザにフィードバックされる。
データ処理要求は、データ削除要求またはデータ切り捨て要求であってもよい。データ削除要求の実装方法は、データ切り捨て要求の実装方法に類似しており、データ削除要求は、説明のために以下で例として使用され、データ切り捨て要求の実装方法について、さらに説明することはしない。
ユーザによって削除されるべきファイルデータは、ターゲットファイルと称され、ストレージサーバノード上に格納されているターゲットファイルの関係するストリップを削除するためにデータ削除要求が使用される。データ削除要求は、ターゲットファイルのファイル識別子FIDに関する情報を搬送する。受信モジュール301は、データ削除要求を受信し、処理モジュール303は、受信されたデータ削除要求で搬送される、ファイル識別子FIDに従ってファイルシステムのメタデータ情報テーブルから分散ファイルストレージシステムの冗長情報およびストリップの分配情報を取得し、冗長情報は、NおよびMの値である。Mは、格納されているファイルデータに対して冗長保護を実行するために分散ファイルストレージシステムによって使用されるパリティストリップの量であり、Mの特定の値は、サービス要求条件に従って設定され得る。Nは、ストライピングがファイルデータに対して実行されるときに分割を用いて得られるデータストリップの量であり、Nは、分散ファイルストレージシステム内のストレージサーバノードの量およびMの値に従って計算されるか、またはサービス要求条件に従って固定された値に設定され得る。Nの同じ値およびMの同じ値は、すべてのディレクトリについて分散ファイルストレージシステム内に設定され得るか、またはNの異なる値およびMの異なる値が、サービス要求条件に従って決定される、特定のディレクトリに対して設定され得る。この実施形態では、同じNおよび同じMが、説明の一例として使用されている。分散ファイルストレージシステムのNおよびMは、分散ファイルストレージシステムのファイルデータメタデータ情報テーブル内に格納される。ディレクトリに対するMおよびNは、ディレクトリメタデータテーブル内に格納される。
処理モジュール303は、ストリップの取得された分配情報に従って分散ファイルストレージシステム内の対応するストレージサーバノードにデータ削除要求を送信する。データ削除要求を受信するストレージサーバノードが、ターゲットファイルのストリップを有していないか、またはターゲットファイルの空のストリップのみを有している場合、削除対象が存在しないことを示す応答メッセージが、処理モジュール303に返される。データ削除要求を受信したストレージサーバノードが、ターゲットファイルの有効ストリップまたはパリティストリップを格納する場合、ストリップが削除された後に削除成功を示す応答メッセージが処理モジュール303に返される。削除が実行され得ないか、または完全な削除が実行され得ない場合、削除不成功を示す応答メッセージが処理モジュール303にフィードバックされる。ストレージサーバノードの応答メッセージを受信した後、処理モジュール303は、削除対象が存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上であるかどうかを判定する。言い換えると、分散ファイルストレージシステム内に格納されているターゲットファイルのストリップの量は、分散ファイルストレージシステムのパリティストリップの量Mを超えるべきでなく、これにより、ターゲットファイルが削除された後にターゲットファイルが分散ファイルストレージシステムから読み出せないことが確実になる。ストリップが存在していないことを示す受信された応答メッセージと削除成功を示す受信された応答メッセージとの和が、分散ファイルストレージシステムのデータストリップの量N以上である場合、削除成功を示す応答メッセージがユーザに返される。そうでない場合、削除不成功を示す応答メッセージがユーザに返される。
本発明のこの実施形態で提供されるデバイスでは、ファイルが、分散ファイルストレージシステムに書き込まれるときに、N'+M冗長保護メカニズムは、書き込まれるファイルのサイズに従って使用される、すなわち、ターゲットファイルに対してストライピングが実行されるときに、ターゲットファイルのサイズに従って異なる量のストリップが生成される、すなわち、異なる量N'の実際のストリップが生成される。これは、予想されたターゲットファイルがいかなる場合にも正しく取得され得るだけでなく、分散ファイルストレージシステム内の空のストリップ量を低減し、分散ファイルストレージシステム内のディスクIOオペレーションおよびネットワークIOオペレーションの量を低減し、分散ファイルストレージシステムの性能を改善することを効果的に行えることをも保証することができる。
当業者であれば、本明細書で説明されている実施形態の中の例示的なユニットおよびアルゴリズムステップは、電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアとの組み合わせによって実装され得ることに気づき得る。これらの機能が、ハードウェアによって実装されるのか、ソフトウェアによって実装されるのかは、特定の用途および技術的解決手段の設計上の制約条件で決まる。当業者は、特定の用途に対して説明されている機能を実装するために異なる方法を選択することができるが、その実装は、本発明の範囲を超えると考えられるべきでない。
これらの機能が、コンピュータソフトウェアの形態で実装され、独立した製品として販売または使用される場合、本発明の技術的解決策の全部または一部(たとえば、従来技術に寄与する部分)は、ある程度、コンピュータソフトウェア製品の形態で実装されるものとみなされ得る。コンピュータソフトウェア製品は、一般的に、コンピュータ可読不揮発性記憶媒体に格納され、本の実施形態において説明されている方法のステップの全部または一部を実行するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、もしくはネットワークデバイス、または同様のものであってよい)に指示するための複数の命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能なハードディスク、リードオンリーメモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクなどの、プログラムコードを格納することができる媒体を含む。
前述の説明は、本発明の単に特定の実施形態にすぎず、本発明の保護範囲を制限することを意図されていない。本発明において開示されている技術の範囲内で当業者が考え付く変更形態または代替的形態は、本発明の保護範囲内にあるものとする。したがって、本発明の保護範囲は、請求項の保護範囲に従うものとする。
1 ストレージサーバノード
2 ストレージサーバノード
3 ストレージサーバノード
4 ストレージサーバノード
5 ストレージサーバノード
6 ストレージサーバノード
7 ストレージサーバノード
8 ストレージサーバ
10 分散ファイルストレージシステム
20 アプリケーションサーバ
30 デバイス
30 ファイルシステムクライアントエージェントCA(Client Agent)
50 フロントエンド(Front-End)スイッチ
60 バックエンド(Back-End)スイッチ
101 ストレージサーバノード
301 受信モジュール
303 処理モジュール
305 送信モジュール