JP2016510148A - 分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス - Google Patents

分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス Download PDF

Info

Publication number
JP2016510148A
JP2016510148A JP2015559412A JP2015559412A JP2016510148A JP 2016510148 A JP2016510148 A JP 2016510148A JP 2015559412 A JP2015559412 A JP 2015559412A JP 2015559412 A JP2015559412 A JP 2015559412A JP 2016510148 A JP2016510148 A JP 2016510148A
Authority
JP
Japan
Prior art keywords
strip
amount
file
strips
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015559412A
Other languages
English (en)
Other versions
JP6106901B2 (ja
Inventor
洪星 郭
洪星 郭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016510148A publication Critical patent/JP2016510148A/ja
Application granted granted Critical
Publication of JP6106901B2 publication Critical patent/JP6106901B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明は、分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス30に関するものであり、この方法は、クライアントエージェント30によって、ユーザのデータ処理要求を受信するステップであって、データ処理要求は、ターゲットファイルのファイル識別子、オフセットアドレス、ファイル長、および他の情報を搬送する、ステップと、クライアントエージェント30によって、データ処理要求で搬送される冗長情報をファイル識別子に従って取得するステップであって、冗長情報は、分散ファイルストレージシステムのデータストリップの量Nおよび分散ファイルストレージシステムのパリティストリップの量Mを含む、ステップと、データ処理要求で搬送されるオフセットアドレスおよび長さ情報に従ってターゲットファイルの有効ストリップの量DSCを決定するステップと、有効ストリップの量DSCとパリティストリップの量Mに従ってターゲットファイルの実際のストリップの量N'を決定するステップと、実際のストリップの量N'に従って対応するストリップを決定し、対応するストリップを処理するステップとを含む。ターゲットファイルに対してストライピングが実行されると生成される実際のストリップの量は、処理されるべきファイルのサイズに従って動的に調整され、これはいかなる場合も予想されたターゲットファイルが取得され得ることを保証するだけでなく、分散ファイルストレージシステム10内の空のストリップの量を低減することもでき、したがって、小さなファイルのシナリオにおける大量のネットワーク読み出し書き込みI/Oオペレーションおよびディスク読み出し書き込みI/Oオペレーションは、低減され、これにより分散ファイルストレージシステム10の性能を改善できる。

Description

本発明は、ストレージ技術の分野に関するものであり、具体的には、分散ファイルストレージシステムにおけるデータ処理の方法およびデバイスに関するものである。
コンピュータ技術およびネットワーク技術の発展ならびに人間生活の情報化の結果、ストレージシステムの記憶容量の拡大、およびストレージシステムの高性能化に対する要求がユーザから出てきた。ストレージシステムも、コンピュータ内蔵のメモリから、ストレージアレイなどの独立ストレージシステム、またはネットワークアタッチトストレージ(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 送信モジュール

Claims (13)

  1. 分散ファイルストレージシステムに適用されるデータ処理方法であって、
    クライアントエージェントによって、ユーザのデータ処理要求を受信するステップであって、前記データ処理要求は、ターゲットファイルのファイル識別子、オフセットアドレス、ファイル長、および他の情報を搬送し、前記ターゲットファイルは、前記データ処理要求で処理される必要があるファイルである、ステップと、
    前記クライアントエージェントによって、前記データ処理要求で搬送される、前記ターゲットファイルの冗長情報を前記ファイル識別子に従って取得するステップであって、前記冗長情報は、前記分散ファイルストレージシステムのデータストリップの量Nおよび前記分散ファイルストレージシステムのパリティストリップの量Mを含む、ステップと、
    前記データ処理要求で搬送される前記ターゲットファイルの前記オフセットアドレスおよび前記長さ情報に従って前記ターゲットファイルの有効ストリップの量DSCを決定するステップであって、前記有効ストリップは、前記ターゲットファイルのデータを含むストリップである、ステップと、
    前記有効ストリップの前記量DSCと前記パリティストリップの前記量Mに従って前記ターゲットファイルの実際のストリップの量N'を決定するステップと、
    前記実際のストリップの前記量N'に従って対応するストリップを決定し、前記対応するストリップを処理するステップとを含む、方法。
  2. 前記有効ストリップの前記量DSCと前記パリティストリップの前記量Mに従って前記ターゲットファイルの実際のストリップの量N'を決定する前記ステップは、特に、
    前記有効ストリップの前記量DSCが、前記パリティストリップの前記量M以下である場合、前記ターゲットファイルの前記実際のストリップの前記量N'は、前記パリティストリップの前記量Mに1を加えたもの、すなわち、N'=M+1となるか、または
    前記有効ストリップの前記量DSCが、前記パリティストリップの前記量Mより大きい場合、前記ターゲットファイルの前記実際のストリップの前記量N'は、前記有効ストリップの前記量DSCに等しい、すなわち、N'=DSCとなる、請求項1に記載の方法。
  3. 複数の前記パリティストリップの前記量Mおよび複数の前記データストリップの前記量Nがあり、MおよびNは、互いに対応しており、対応するディレクトリ情報テーブル内に別々に格納される、請求項1または2に記載の方法。
  4. 前記データ処理要求が、データ書き込み要求である場合に、前記実際のストリップの前記量N'に従って対応するストリップを決定し、前記対応するストリップを処理する前記ステップは、
    前記ターゲットファイルに対してストライピング処理を実行してN'個の実際のストリップを取得し、冗長アルゴリズムを使用することによってM個のパリティストリップを生成するステップと、
    コンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する情報を前記N'個の実際のストリップおよび前記M個のパリティストリップに追加するステップであって、前記コンシステンシーラベル情報は、タイムスタンプまたはバージョン番号であり得る、ステップと、
    前記N'個の実際のストリップおよび前記M個のパリティストリップを対応するストレージサーバノードに別々に書き込むステップとをさらに含む、請求項1から3のいずれか一項に記載の方法。
  5. 前記データ処理要求が、データ読み出し要求である場合、前記ファイル識別子に従って前記ターゲットファイルの前記ストリップの分配情報を取得するステップをさらに含み、前記実際のストリップの前記量N'に従って対応するストリップを決定し、前記対応するストリップを処理する前記ステップは、特に、
    新しいデータブロック読み出し要求を生成するステップであって、前記データブロック読み出し要求は、ストレージサーバノードから前記ターゲットファイルのストリップを読み出すために使用される、ステップと、
    前記ターゲットファイルの前記ストリップの前記取得された分配情報に従って、前記データブロック読み出し要求を実際のストリップを格納するストレージサーバノードに送信するステップと、
    前記実際のストリップを格納する前記ストレージサーバノードの応答メッセージを受信するステップであって、前記応答メッセージは、前記実際のストリップが読み出され得ることを示す成功応答メッセージであるか、または前記実際のストリップが読み出され得ないことを示す不成功応答メッセージであり、前記成功応答メッセージは、コンシステンシーラベル情報および前記実際のストリップの前記有効ストリップの前記量DSCに関する情報を搬送する、ステップと、
    前記受信された応答メッセージに従って、前記ターゲットファイルが読み出され得るかどうかを判定するステップとである、請求項1から3のいずれか一項に記載の方法。
  6. 前記受信された応答メッセージに従って、前記ターゲットファイルが読み出され得るかどうかを判定する前記ステップは、特に、
    受信された成功応答メッセージの量が前記実際のストリップの前記量N'に等しく、前記成功応答メッセージで搬送されるコンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する情報が、別々に同じである場合、前記ターゲットファイルは読み出され得るか、または
    受信された成功応答メッセージの量が、前記実際のストリップの前記量N'より少ない場合、前記受信された成功応答メッセージの前記量が、前記パリティストリップの前記量Mより多いかどうかが判定され、
    前記受信された成功応答メッセージの前記量が、前記パリティストリップの前記量Mより多い場合、前記成功応答メッセージの前記量が、前記ターゲットファイルの前記有効ストリップの前記量DSC以上であるかどうかと、前記成功応答メッセージで搬送されるコンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する情報が、別々に同じであるかどうかが判定され、前記成功応答メッセージの前記量が、前記ターゲットファイルの前記有効ストリップの前記量DSC以上であり、すべての前記成功応答メッセージで搬送される前記コンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する前記情報が、別々に同じである場合、前記ターゲットファイルは読み出されることができ、前記成功応答メッセージの前記量が、前記ターゲットファイルの前記有効ストリップの前記量DSC以上でなく、すべての前記成功応答メッセージで搬送される前記コンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する前記情報が、別々に同じではない場合、前記データブロック読み出し要求が、前記取得された分配情報に従って、パリティストリップを格納するストレージサーバノードに送信され、前記パリティストリップを格納する前記ストレージサーバノードによって返される成功応答メッセージの量が、前記ターゲットファイルの前記有効ストリップの前記量DSC以上であり、前記成功応答メッセージで搬送されるコンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する情報が、別々に同じである場合、前記ターゲットファイルは読み出されることができ、または前記パリティストリップを格納する前記ストレージサーバノードによって返される成功応答メッセージの量が、前記ターゲットファイルの前記有効ストリップの前記量DSC未満であるか、もしくは前記成功応答メッセージで搬送されるコンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する情報が、別々に同じでない場合、前記ターゲットファイルは読み出されることができない、請求項5に記載の方法。
  7. 前記受信された成功応答メッセージの前記量が、前記パリティストリップの前記量M以下である場合に、前記取得された分配情報に従って、前記パリティストリップを格納する前記ストレージサーバノードに前記データブロック読み出し要求を送信するステップと、
    前記パリティストリップを格納する前記ストレージサーバノードによって返される応答メッセージを受信するステップと、
    前記パリティストリップを格納する前記ストレージサーバノードによって返される前記応答メッセージに従って、前記ターゲットファイルは読み出されることができるかどうかを判定するステップとをさらに含む、請求項6に記載の方法。
  8. 分散ファイルストレージシステムにおいてデータ処理方法を実装するためのデバイス30であって、前記デバイス30は、前記分散ファイルストレージシステム10内のストレージサーバノード101と通信し、前記デバイスは、受信モジュール301、処理モジュール303、および送信モジュール305を備え、
    前記受信モジュール301は、ユーザのデータ処理要求を受信するように構成され、前記データ処理要求は、ターゲットファイルのファイル識別子、オフセットアドレス、ファイル長、および他の情報を搬送し、前記ターゲットファイルは、前記データ処理要求で処理される必要があるファイルであり、
    前記処理モジュール303は、
    前記データ処理要求で搬送される、前記ターゲットファイルの冗長情報を前記ファイル識別子に従って前記ストレージサーバノードから取得し、前記冗長情報は、前記分散ファイルストレージシステムのデータストリップの量Nおよび前記分散ファイルストレージシステムのパリティストリップの量Mを含み、
    前記データ処理要求で搬送される前記ターゲットファイルの前記オフセットアドレスおよび前記ファイル長に従って前記ターゲットファイルの有効ストリップの量DSCを決定し、前記有効ストリップは、前記ターゲットファイルのデータを含むストリップであり、
    前記有効ストリップの前記量DSCと前記パリティストリップの前記量Mに従って前記ターゲットファイルの実際のストリップの量N'を決定し、
    前記実際のストリップの前記量N'に従って対応するストリップを決定し、前記対応するストリップを処理するように構成され、
    前記送信モジュール305は、前記処理の結果を前記ユーザにフィードバックするように構成される、デバイス30。
  9. 前記デバイス30は、前記分散ファイルストレージシステム10に接続されているアプリケーションサーバ20上に、または前記分散ファイルストレージシステム10内の前記ストレージサーバノード101上に配置される請求項8に記載のデバイス。
  10. 前記有効ストリップの前記量DSCと前記パリティストリップの前記量Mに従って前記ターゲットファイルの実際のストリップの量N'を決定する前記ステップは、特に、
    前記有効ストリップの前記量DSCが、前記パリティストリップの前記量M以下である場合、前記ターゲットファイルの前記実際のストリップの前記量N'は、前記パリティストリップの前記量Mに1を加えたもの、すなわち、N'=M+1となるか、または
    前記有効ストリップの前記量DSCが、前記パリティストリップの前記量Mより大きい場合、前記ターゲットファイルの前記実際のストリップの前記量N'は、前記有効ストリップの前記量DSCに等しい、すなわち、N'DSCとなる、請求項8または9に記載のデバイス。
  11. 前記データ処理要求が、データ書き込み要求である場合に、前記実際のストリップの前記量N'に従って対応するストリップを決定し、前記対応するストリップを処理する前記ステップは、
    前記ターゲットファイルに対してストライピング処理を実行してN'個の実際のストリップを取得し、冗長アルゴリズムを使用することによってM個のパリティストリップを生成するステップと、
    コンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する情報を前記N'個の実際のストリップおよび前記M個のパリティストリップに追加するステップであって、前記コンシステンシーラベル情報は、タイムスタンプまたはバージョン番号であり得る、ステップと、
    前記N'個の実際のストリップおよび前記M個のパリティストリップを対応するストレージサーバノードに別々に書き込むステップとをさらに含む、請求項8から10のいずれか一項に記載のデバイス。
  12. 前記データ処理要求が、データ書き込み要求である場合に、前記実際のストリップの前記量N'に従って対応するストリップを決定し、前記対応するストリップを処理する前記ステップは、
    新しいデータブロック読み出し要求を生成するステップであって、前記データブロック読み出し要求は、ストレージサーバノードから前記ターゲットファイルのストリップを読み出すために使用される、ステップと、
    前記ターゲットファイルの前記ストリップの取得された分配情報に従って、前記データブロック読み出し要求を実際のストリップを格納するストレージサーバノードに送信するステップと、
    前記実際のストリップを格納する前記ストレージサーバノードの応答メッセージを受信するステップであって、前記応答メッセージは、前記実際のストリップが読み出され得ることを示す成功応答メッセージであるか、または前記実際のストリップが読み出され得ないことを示す不成功応答メッセージであり、前記成功応答メッセージは、前記実際のストリップのコンシステンシーラベル情報および前記有効ストリップの前記量DSCに関する情報を搬送する、ステップと、
    前記受信された応答メッセージに従って、前記ターゲットファイルが読み出され得るかどうかを判定するステップとをさらに含む、請求項8から11のいずれか一項に記載のデバイス。
  13. 前記受信モジュールは、前記ユーザのデータ削除要求を受信するようにさらに構成され、前記データ削除要求は、ターゲットファイルのファイル識別子を搬送し、前記ターゲットファイルは、削除されることを必要とするファイルであり、
    前記処理モジュールは、前記ファイル識別子に従って前記ストレージサーバノードから前記冗長情報を取得し、前記冗長情報は、前記分散ファイルストレージシステムの前記データストリップの前記量Nおよび前記分散ファイルストレージシステムの前記パリティストリップの前記量Mを含み、
    前記分散ファイルストレージシステムの前記データストリップの前記量Nに従って、前記ターゲットファイルのストリップを格納するストレージサーバノードを決定し、
    前記データ削除要求を前記ターゲットファイルの前記ストリップを格納する前記ストレージサーバノードに送信し、
    前記ターゲットファイルの前記ストリップを格納する前記ストレージサーバノードの応答メッセージを受信し、前記応答メッセージは、削除成功を示す応答メッセージ、削除対象が存在していないことを示す応答メッセージ、および削除不成功を示す応答メッセージのうちの1つであり、
    削除成功を示す受信された応答メッセージおよび前記削除対象が存在していないことを示す応答メッセージとの量が、前記データストリップの前記量Nを超える場合に、前記削除は成功であり、そうでなければ、前記削除は不成功であり、
    前記送信モジュールは、前記削除成功または前記削除不成功の結果を前記ユーザにフィードバックするように構成される、請求項8から12のいずれか一項に記載のデバイス。
JP2015559412A 2013-12-31 2013-12-31 分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス Active JP6106901B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/091143 WO2015100627A1 (zh) 2013-12-31 2013-12-31 一种分布式文件存储系统中的数据处理方法及设备

Publications (2)

Publication Number Publication Date
JP2016510148A true JP2016510148A (ja) 2016-04-04
JP6106901B2 JP6106901B2 (ja) 2017-04-05

Family

ID=52162404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015559412A Active JP6106901B2 (ja) 2013-12-31 2013-12-31 分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス

Country Status (7)

Country Link
US (1) US10127233B2 (ja)
EP (1) EP2933733A4 (ja)
JP (1) JP6106901B2 (ja)
CN (1) CN104272274B (ja)
AU (1) AU2013409624B2 (ja)
CA (1) CA2897129C (ja)
WO (1) WO2015100627A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019504369A (ja) * 2016-11-25 2019-02-14 華為技術有限公司Huawei Technologies Co.,Ltd. データチェック方法および記憶システム

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6318878B2 (ja) * 2014-06-04 2018-05-09 富士通株式会社 通信装置、システム及び通信処理方法
CN104639661A (zh) * 2015-03-13 2015-05-20 华存数据信息技术有限公司 分布式存储系统及文件存储和读取方法
CN106161523B (zh) * 2015-04-02 2019-11-22 腾讯科技(深圳)有限公司 一种数据处理方法和设备
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
CN105404469B (zh) * 2015-10-22 2018-11-13 浙江宇视科技有限公司 一种视频数据的存储方法和系统
CN105426483B (zh) * 2015-11-19 2019-01-11 华为技术有限公司 一种基于分布式系统的文件读取方法及装置
US11847095B1 (en) * 2015-12-30 2023-12-19 EMC IP Holding Company LLC Managing truncation of files of file systems
CN105824721B (zh) * 2016-03-14 2019-07-12 浙江宇视科技有限公司 一种数据存储系统及其存储纠删方法
CN107203559B (zh) * 2016-03-17 2021-01-01 华为技术有限公司 一种划分数据条带的方法和装置
US10545825B2 (en) 2016-04-29 2020-01-28 Synamedia Limited Fault-tolerant enterprise object storage system for small objects
CN107247714B (zh) * 2016-06-01 2018-02-27 国家电网公司 一种基于分布式存储技术的小文件存取系统的存取方法
CN107819729B (zh) * 2016-09-13 2021-06-25 腾讯科技(深圳)有限公司 一种数据请求方法及其系统、接入设备、存储设备和存储介质
CN108021333B (zh) * 2016-11-03 2021-08-24 阿里巴巴集团控股有限公司 随机读写数据的系统、装置及方法
CN108241548A (zh) * 2016-12-23 2018-07-03 航天星图科技(北京)有限公司 一种基于分布式系统的文件读取方法
CN108934187B (zh) * 2017-03-29 2020-08-25 华为技术有限公司 分布式存储系统的访问方法和相关装置和相关系统
US10057373B1 (en) * 2017-05-15 2018-08-21 Palantir Technologies Inc. Adaptive computation and faster computer operation
CN107273048B (zh) * 2017-06-08 2020-08-04 浙江大华技术股份有限公司 一种数据写入方法及装置
CN109947842B (zh) * 2017-07-27 2021-06-18 杭州海康威视数字技术股份有限公司 分布式存储系统中的数据存储方法、装置及系统
CN109597566B (zh) * 2017-09-30 2022-03-04 杭州海康威视系统技术有限公司 一种数据读取、存储方法及装置
CN107679197A (zh) * 2017-10-10 2018-02-09 郑州云海信息技术有限公司 一种文件截断的优化方法及装置
CN110325958B (zh) * 2017-10-13 2021-09-17 华为技术有限公司 分布式块存储系统中数据存储方法、装置及计算机可读存储介质
CN109672544B (zh) 2017-10-13 2020-12-11 杭州海康威视系统技术有限公司 一种数据处理方法、装置及分布式存储系统
CN107918527B (zh) * 2017-11-01 2021-04-23 北京小米移动软件有限公司 存储空间分配方法及装置以及文件存储方法及装置
US11580068B2 (en) 2017-12-15 2023-02-14 Palantir Technologies Inc. Systems and methods for client-side data analysis
CN110109886B (zh) * 2018-02-01 2022-11-18 中兴通讯股份有限公司 分布式文件系统的文件存储方法及分布式文件系统
US10783214B1 (en) 2018-03-08 2020-09-22 Palantir Technologies Inc. Adaptive and dynamic user interface with linked tiles
CN110413202B (zh) * 2018-04-28 2024-03-08 伊姆西Ip控股有限责任公司 数据复制方法、设备和计算机程序产品
US10768844B2 (en) 2018-05-15 2020-09-08 International Business Machines Corporation Internal striping inside a single device
CN109165208B (zh) * 2018-07-26 2020-12-15 佛山市电子政务科技有限公司 一种用于将数据加载到数据库中的方法及系统
US10606851B1 (en) 2018-09-10 2020-03-31 Palantir Technologies Inc. Intelligent compute request scoring and routing
CN109597903B (zh) * 2018-11-21 2021-12-28 北京市商汤科技开发有限公司 图像文件处理装置和方法、文件存储系统及存储介质
CN109726036B (zh) * 2018-11-21 2021-08-20 华为技术有限公司 一种存储系统中的数据重构方法和装置
US10409641B1 (en) 2018-11-26 2019-09-10 Palantir Technologies Inc. Module assignment management
CN111274208B (zh) * 2018-12-05 2023-06-30 杭州海康威视系统技术有限公司 锁定文件的方法和装置
CN109634525B (zh) * 2018-12-10 2022-03-08 浪潮电子信息产业股份有限公司 一种存储系统有效容量的估算方法、系统及相关组件
EP3889778B1 (en) * 2018-12-22 2023-05-10 Huawei Cloud Computing Technologies Co., Ltd. Distributed storage system and computer program product
CN109814805B (zh) 2018-12-25 2020-08-25 华为技术有限公司 存储系统中分条重组的方法及分条服务器
WO2020181478A1 (zh) * 2019-03-12 2020-09-17 华为技术有限公司 亚健康节点的管理方法和装置
CN110308875B (zh) * 2019-06-27 2023-07-14 深信服科技股份有限公司 数据读写方法、装置、设备及计算机可读存储介质
CN112394876B (zh) * 2019-08-14 2024-02-23 深圳市特思威尔科技有限公司 大文件存储/读取方法、存储/读取装置和计算机设备
CN112579554A (zh) * 2019-09-29 2021-03-30 北京金山云网络技术有限公司 服务器配置文件的批量对比方法、装置及电子设备
CN110795391A (zh) * 2019-10-28 2020-02-14 深圳市元征科技股份有限公司 一种汽修资料处理方法、装置及电子设备和存储介质
LU101763B1 (en) * 2020-05-04 2021-11-05 Microsoft Technology Licensing Llc Microsegment secure speech transcription
CN111858540A (zh) * 2020-07-28 2020-10-30 昆明大棒客科技有限公司 带权重的分布式数据存储方法、系统和存储介质
CN112083888A (zh) * 2020-09-10 2020-12-15 北京金山云网络技术有限公司 文件存储方法、装置和电子设备
CN113010103B (zh) * 2021-01-15 2023-03-21 腾讯科技(深圳)有限公司 数据存储方法、装置、相关设备及存储介质
CN114281267B (zh) * 2021-12-30 2024-04-26 西北工业大学 分布式存储系统间的数据迁移方法和装置
CN115277735B (zh) * 2022-07-20 2023-11-28 北京达佳互联信息技术有限公司 数据的处理方法和装置、电子设备及存储介质
CN116521091B (zh) * 2023-06-28 2023-09-15 苏州浪潮智能科技有限公司 数据读取方法、装置、设备、数据传输系统及存储介质
CN117057142B (zh) * 2023-08-15 2024-06-18 中交一公局集团有限公司 一种基于数字孪生的车辆测试数据处理方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0772985A (ja) * 1992-10-23 1995-03-17 At & T Global Inf Solutions Internatl Inc Raidレベル5ディスクアレイにおけるリード−モディファイ−ライト パリティ オペレーションの遅延イニシエション方法
JP2012517628A (ja) * 2009-02-09 2012-08-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 電力損失事象時にnvsデータを迅速に保護する方法、システム、及びコンピュータ・プログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4451916A (en) * 1980-05-12 1984-05-29 Harris Corporation Repeatered, multi-channel fiber optic communication network having fault isolation system
US7685126B2 (en) * 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
JP3682256B2 (ja) * 2001-11-30 2005-08-10 株式会社東芝 ディスクアレイ装置及び同装置におけるパリティ処理方法
US6985995B2 (en) 2002-03-29 2006-01-10 Panasas, Inc. Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
US7328305B2 (en) * 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
KR100579133B1 (ko) * 2004-12-06 2006-05-12 한국전자통신연구원 블록분할 디스크 어레이에서의 분산 패러티를 이용한데이터 배치 방법 및 블록분할 분산패러티 디스크어레이에서의 대형/소형 블록 읽기/쓰기 제어 방법
US7788303B2 (en) * 2005-10-21 2010-08-31 Isilon Systems, Inc. Systems and methods for distributed system scanning
US8209587B1 (en) * 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US8442751B2 (en) * 2007-11-27 2013-05-14 The Boeing Company Onboard electronic distribution system
US8209513B2 (en) 2009-11-12 2012-06-26 Autonomy, Inc. Data processing system with application-controlled allocation of file storage space
CN101834898B (zh) * 2010-04-29 2013-01-30 中科院成都信息技术有限公司 一种网络分布式编码存储方法
DE112011102242T5 (de) * 2010-07-02 2013-04-25 International Business Machines Corporation Vorrichtung zum Verarbeiten einer Stapelarbeitseinheit
US9092864B2 (en) * 2010-11-30 2015-07-28 Pixart Imaging Inc Displacement detection apparatus and method
JP5405513B2 (ja) 2011-03-22 2014-02-05 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
CN102364472A (zh) * 2011-10-25 2012-02-29 中兴通讯股份有限公司 数据存储方法及系统
CN102624866B (zh) 2012-01-13 2014-08-20 北京大学深圳研究生院 一种存储数据的方法、装置及分布式网络存储系统
CN102801784B (zh) * 2012-07-03 2015-11-25 华为技术有限公司 一种分布式数据存储方法及设备
CN102855194B (zh) * 2012-08-08 2015-05-13 北京君正集成电路股份有限公司 数据存储方法和存储器
US8909860B2 (en) * 2012-08-23 2014-12-09 Cisco Technology, Inc. Executing parallel operations to increase data access performance
US9317363B2 (en) * 2013-11-06 2016-04-19 International Business Machines Corporation Management of a secure delete operation in a parity-based system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0772985A (ja) * 1992-10-23 1995-03-17 At & T Global Inf Solutions Internatl Inc Raidレベル5ディスクアレイにおけるリード−モディファイ−ライト パリティ オペレーションの遅延イニシエション方法
JP2012517628A (ja) * 2009-02-09 2012-08-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 電力損失事象時にnvsデータを迅速に保護する方法、システム、及びコンピュータ・プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016037341; 井口 寧 ほか: '信頼性を考慮したグリッド向け自律分散ストレージシステム' 情報処理学会論文誌 第47巻 No.SIG7, 20060515, 219-230, 社団法人情報処理学会 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019504369A (ja) * 2016-11-25 2019-02-14 華為技術有限公司Huawei Technologies Co.,Ltd. データチェック方法および記憶システム
US10303374B2 (en) 2016-11-25 2019-05-28 Huawei Technologies Co.,Ltd. Data check method and storage system

Also Published As

Publication number Publication date
WO2015100627A1 (zh) 2015-07-09
AU2013409624B2 (en) 2016-11-17
CN104272274B (zh) 2017-06-09
CA2897129A1 (en) 2015-07-09
AU2013409624A1 (en) 2015-07-30
EP2933733A4 (en) 2016-05-11
US20150324371A1 (en) 2015-11-12
EP2933733A1 (en) 2015-10-21
CA2897129C (en) 2022-03-15
JP6106901B2 (ja) 2017-04-05
US10127233B2 (en) 2018-11-13
CN104272274A (zh) 2015-01-07

Similar Documents

Publication Publication Date Title
JP6106901B2 (ja) 分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス
US10783038B2 (en) Distributed generation of random data in a storage system
US10782880B2 (en) Apparatus and method for providing storage for providing cloud services
US9811546B1 (en) Storing data and metadata in respective virtual shards on sharded storage systems
US10198356B2 (en) Distributed cache nodes to send redo log records and receive acknowledgments to satisfy a write quorum requirement
US10942812B2 (en) System and method for building a point-in-time snapshot of an eventually-consistent data store
US9213489B1 (en) Data storage architecture and system for high performance computing incorporating a distributed hash table and using a hash on metadata of data items to obtain storage locations
US8972779B2 (en) Method of calculating parity in asymetric clustering file system
CN110209535B (zh) 用于分布式数据库系统的快速崩溃恢复
US9317213B1 (en) Efficient storage of variably-sized data objects in a data store
US8996803B2 (en) Method and apparatus for providing highly-scalable network storage for well-gridded objects
US20210405915A1 (en) Distributed function processing with estimate-based scheduler
CN108540510B (zh) 一种云主机创建方法、装置及云服务系统
CN111949210A (zh) 分布式存储系统中元数据存储方法、系统及存储介质
US20210073140A1 (en) Hardware assisted data lookup methods
US20190347165A1 (en) Apparatus and method for recovering distributed file system
EP3449372B1 (en) Fault-tolerant enterprise object storage system for small objects
US11669402B2 (en) Highly efficient native application data protection for office 365
US8825985B2 (en) Data transfer reduction in scale out architectures
US10503409B2 (en) Low-latency lightweight distributed storage system
US10063256B1 (en) Writing copies of objects in enterprise object storage systems
WO2022083267A1 (zh) 数据处理方法、装置、计算节点以及计算机可读存储介质
US11586595B1 (en) Space-efficient techniques for generating unique instances of data objects

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170216

R150 Certificate of patent or registration of utility model

Ref document number: 6106901

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250