JP2010079886A - 拡張可能な2次ストレージシステムと方法 - Google Patents

拡張可能な2次ストレージシステムと方法 Download PDF

Info

Publication number
JP2010079886A
JP2010079886A JP2009195144A JP2009195144A JP2010079886A JP 2010079886 A JP2010079886 A JP 2010079886A JP 2009195144 A JP2009195144 A JP 2009195144A JP 2009195144 A JP2009195144 A JP 2009195144A JP 2010079886 A JP2010079886 A JP 2010079886A
Authority
JP
Japan
Prior art keywords
data
storage
containers
node
nodes
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
JP2009195144A
Other languages
English (en)
Other versions
JP5539683B2 (ja
JP2010079886A5 (ja
Inventor
Cezary Dubnicki
ダブニッキ セザリー
Christian Ungurenau
ウングレアヌ クリスチャン
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.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America Inc
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 NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2010079886A publication Critical patent/JP2010079886A/ja
Publication of JP2010079886A5 publication Critical patent/JP2010079886A5/ja
Application granted granted Critical
Publication of JP5539683B2 publication Critical patent/JP5539683B2/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data

Landscapes

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

Abstract

【課題】分割可能で、併合可能で、転送可能な複数の冗長なデータコンテナの複数のチェーンを採用することによって、複数のデータサービスを提供する。
【解決手段】複数のデータブロック704,708をノードネットワーク内の複数の異なる物理ストレージノード内に位置している異なる複数のデータコンテナ716に分配して、ストレージノードネットワークの構成に応答して自動的に分割および/または併合可能で、異なる複数のストレージノードにわたって分配されている消失符号化されている複数のフラグメント内に保存する。複数のコンテナの冗長な複数のチェーンを利用している分散2次ストレージシステム内で提供されるデータサービスは、グローバル重複排除、動的拡張性、複数の冗長クラスのサポート、データの位置の検出、データの高速な読み取りと書き込み、ノードまたはディスクの障害によるデータの再構築を有することができる。
【選択図】図7

Description

本出願は、2008年9月11日に出願された仮出願通し番号第61/095,994号に対する優先権を主張する。
本発明は、一般的にデータの保存に関し、特に2次ストレージシステムへのデータの保存に関する。
企業環境では重要な局面である2次ストレージ技術の開発は、企業によって課される増大する困難な要求と歩調を合わせなければならなかった。たとえば、そのような要求には、様々な程度の重要性を備えているデータに対する様々な程度の信頼性、可用性、および保持期間の同時提供がある。さらに、サーベンス・オクスリー法(SOX)、医療保険の相互運用性と説明責任に関する法律(HIPPA)、愛国者法、および米国証券取引委員会規則17a−4(t)などの法的な要件に合致するように、企業環境は、2次ストレージシステムに改善されたセキュリティ、追跡可能性、およびデータ監査を要求してきた。その結果、好ましい2次ストレージアーキテクチャは、厳重なデータ保持と消去手順とを厳格に定め、実施している。さらに、2次ストレージアーキテクチャは、データを保持し回復し、要求に応じてデータを提示しなければならないが、それができない場合、業務効率の深刻な損失ばかりではなく、罰金や刑事訴訟となることさえあるからである。さらに、企業は、比較的限定された情報技術(IT)予算を採用していることが多いため、ストレージの利用率の改善と増大するデータ管理コストの削減との両方に関して、効率も最重要でもある。さらに、増大し続ける作成されたデータとそれに対応した固定されたバックアップウィンドウについて、性能とバックアップ容量の適切な拡張に対する明確な要求がある。
ディスク対象重複排除仮想テープライブラリ(VTL)、ディスクベースのバックエンドサーバ、および内容アドレス指定可能なソリューションの進歩によって実証されたように、これらの企業ニーズに対応する相当な進歩があった。しかし、既存のソリューションは、2次ストレージに保存されているデータの量の指数的な増加に関連した問題に適切に対応していない。
たとえば、ネットワークに構成され、共通の管理下にあるストレージエリアネットワーク(SAN)などの1次ストレージとは異なり、2次ストレージは、各々が専用化され、複雑な、そしてしばしば手動の管理を使用することになるストレージアイランドである多数の高度に特化した専用構成要素を有している。したがって、総保有コスト(TCO)の大部分は、複数の2次ストレージの構成要素の比較的大きな範囲の管理にあてられることがある。
さらに、既存のシステムは、固定された容量を各ストレージ装置に割り当て、重複排除をただ1つの装置に制限しており、そのために容量利用率が低下し、複数の構成要素上に保存されている複数の複製による空間の無駄使いにつながっている。たとえば、公知のシステムは大きな安価なディスクによる冗長アレイ(RAID)システムを有しており、これが、潜在的に複数のしかし数が限定されているコントローラを有している1つのコントロールボックスを実現する。これらのシステムのデータ構成は、固定サイズのブロックインターフェイスに基づいている。さらに、これらのシステムは、固定データ冗長スキームを採用し、固定された最大容量を利用し、空であってもパーティション全体を再構築する再構成スキームを適用することにおいて限定されている。さらに、これらのシステムは、重複排除を実現する手段を有することができないが、これはそのようなシステムを使用した重複排除は、より高い階層内に実装しなければならないからである。
他の公知の装置は、DataDomainなどの1つのボックス内の進歩したストレージ、またはEMC Centraなどのクラスタ化されているストレージを実現する。これらの種類のシステムの欠点は、限定された容量と性能とを提供する、グローバルな重複排除(DataDomain)とは反対にボックス毎の重複排除を採用する、またはファイル全体に基づいている(EMC Centera)ことである。これらのシステムは、重複排除などの高度なサービスのいくつかを提供するが、これらのシステムは集中化されていることが多く、これらのシステムによって保存されているメタデータ/データは標準的なRAIDスキームを超える冗長性は有していない。
最後に、これらの公知の2次ストレージ装置の各々は、固定され、限定された性能、信頼性、および可用性を実現するので、これらの面において企業の2次ストレージの非常に高い全体の要求を満たすことは非常に困難である。
本発明の様々な典型的な実施態様の方法とシステムとは、いくつかの異なるデータサービスの実装を促進するデータ構成スキームを提供することによって、従来技術の欠点に対応する。さらに、典型的な装置と方法とは、従来技術を改善するが、これは典型的な実装は、変化するネットワーク構成に自動的に対応し、冗長性を実現することによって、動的な状態を許容するからである。特に、典型的な実装は、変化しているネットワーク構成に応答してデータコンテナおよび/またはデータコンテナのチェーンを分割、併合、および/または転送してもよいが、これは公知のプロセスに対する顕著な利点である。
本発明の典型的な一実施態様において、2次ストレージ上のデータを管理する方法は、複数のデータブロックをノードネットワーク内の複数の異なる物理ストレージノード内に位置している異なる複数のデータコンテナに分配して、複数のノード内の複数のデータコンテナの冗長なチェーンを生成するステップと、アクティブな複数のストレージノードのネットワークへの追加を検出するステップと、追加の検出に応答して複数のコンテナの少なくとも1つのチェーンを自動的に分割するステップと、ノード障害に対するシステム堅牢性を強化するように、複数のコンテナの少なくとも1つのチェーンから分割されたデータの少なくとも一部を複数のストレージノードの1つから複数のストレージノードの他の1つに転送するステップとを有する。
本発明の代替の典型的な実施態様において、2次ストレージシステムは、複数の物理ストレージノードのネットワークを有し、各ストレージノードは、他の複数のストレージノード内の複数のデータコンテナの複数のチェーンについて冗長な複数のデータコンテナのチェーン内の複数のデータブロックの複数のフラグメントを保存するように構成されているストレージ媒体と、アクティブな複数のストレージノードのネットワークへの追加を検出し、追加の検出に応答してストレージ媒体上の複数のコンテナの少なくとも1つのチェーンを自動的に分割して、ノード障害に対するシステム堅牢性を強化するように、複数のコンテナの少なくとも1つのチェーンから分割されたデータの少なくとも一部を異なるストレージノードに転送するように構成されているストレージサーバとを有する。
本発明の代替の典型的な実施態様において、2次ストレージシステム上でデータを管理する方法は、複数のデータブロックをノードネットワーク内の複数の異なる物理ストレージノード内に位置している異なる複数のデータコンテナに分配して、複数のノード内の複数のデータコンテナの冗長なチェーンを生成するステップと、ネットワーク内のアクティブな複数のストレージノードの数の変化を検出するステップと、複数のコンテナの管理可能性を保証するように、変化の検出に応答して、複数のストレージノードの1つに位置している少なくとも1つのデータコンテナを、異なるストレージノード内に位置している他のデータコンテナに自動的に併合するステップとを有する。
これらの、そしてその他の特徴と利点とは、添付図面と共に読むべきそれらの具体的な実施形態の以下の詳細な説明から明らかになるであろう。
本開示は、好ましい実施形態の以下の説明において、図面を参照して詳細を示す。
本原理の1つの典型的な実装による2次ストレージシステムのバックエンド部分のデータブロック構成スキームのブロック図/流れ図である。 本原理の1つの典型的な実装による2次ストレージシステムのブロック図/流れ図である。 本原理の1つの典型的な実装による物理ストレージノードのブロック図/流れ図である。 本原理の1つの典型的な実装によるアクセスノードのブロック図/流れ図である。 本原理の1つの典型的な実施形態による、複数のデータブロックの複数のハッシュプレフィックスによる複数のストレージノードのグループ化を示している固定プレフィックスネットワークの図である。 本原理の1つの典型的な実装によるデータを分配するシステムのブロック図/流れ図である。 本原理の一実施形態によって、データの分割、連結、および削除と、ストレージノードのストレージノードネットワークへの追加または追加データのロードに応答したストレージ空間の再利用を示しているブロック図/流れ図である。 本原理の典型的な実装による2次ストレージシステム内でのデータ管理方法のブロック図/流れ図である。 本原理の1つの典型的な実装による2次ストレージシステムによって実行可能な複数のデータサービスを示しているブロック図/流れ図である。 本原理の典型的な実装によるデータコンテナのチェーン内のホール(穴)を検出するようにスキャン動作中の異なる時間フレームを示しているブロック図/流れ図である。 本原理の典型的な実装によるデータコンテナのチェーン内のホールを検出するようにスキャン動作中の異なる時間フレームを示しているブロック図/流れ図である。 本原理の典型的な実装によるデータコンテナのチェーン内のホールを検出するようにスキャン動作中の異なる時間フレームを示しているブロック図/流れ図である。 本原理の代替の典型的な実装による2次ストレージシステム内でのデータ管理方法のブロック図/流れ図である。
前述のように、商用の要求を満たすために、分散している複数の2次ストレージシステムは、様々なサービスを実施できなければならない。たとえば、保存されているデータの可用性の高速の判断(つまり、読み取ることができるかまたは失われているかの判断)、複数のデータ冗長クラスのサポート、任意の所与の瞬間についてのデータ冗長レベルの高速の判断(つまり、所与のデータが消失せずに耐えることができるノード/ディスク障害の数の判断)、冗長レベルが減少した場合の指定された冗長レベルまでのデータの高速の再構築、高レベルの性能でのデータの書き込みと読み取り、ネットワーク構成の変化(新規のノードの追加および/または古いノードの削除または障害など)に応答したデータ位置の調整による動的な拡張性の提供、オンデマンドデータ削除、およびグローバルで効果的な重複の排除が含まれる。
高性能グローバル重複排除、分散システム内での動的拡張性、削除サービス、障害回復などのこれらデータサービスの任意の1つは実装がそれ自体比較的容易であるのに対して、それらの各々を共に提供することはかなり困難である。たとえば、ストレージシステムが大きくなったり、複数のストレージノードの構成が変化したときに複製されたデータの位置の決定は困難であるので、重複排除と動的拡張性との間には拮抗した関係がある。さらに、重複排除の実現とオンデマンド削除との間には、相反する関係がある。たとえば、データの消失を防止するために、削除が予定されていたデータの重複排除を回避しなければならない。障害が発生した場合の削除の判断が一貫していなければならないため、耐障害性の実現と削除との間にも拮抗した関係がある。
前述のように、RAIDなどの現在の2次ストレージシステムは、そのようなデータサービスの組み合わせを適切に提供することができない。本発明の典型的な実装は、効率と性能とを維持しながら、様々な種類のデータサービスによって課される要求をバランスさせる新規の手段を提供することによって、従来技術の欠陥に対応している。たとえば、以下で説明する典型的なデータ構成スキームによって、これらのサービス間の拮抗関係と相反関係とを解決して、これらのサービスの各々の2次ストレージシステムへの実装を促進することができる。
以下で説明するように、本発明の典型的な実施形態には、複数のストレージノードのグリッドとして構成されているバックエンドを有する商用ストレージシステムが含まれる。当業者には理解されるように、フロントエンドは、ネットワークファイルシステム(NFS)プロトコルまたは一般的なインターネットファイルシステム(CIFS)プロトコルなどの標準的なファイルシステムインターフェイスを使用して実装可能な性能に対応した複数のアクセスノードの層を有していてもよい。本明細書で開示している本原理は、主に、内容アドレス指定可能なストレージに基づいている場合がある、2次ストレージシステムのバックエンド部分を対象にしている。
本原理の典型的な実装によれば、2次ストレージ容量は、全てのクライアントとバックアップデータやアーカイブデータなどの全ての種類の2次ストレージデータの間で動的に共有することができる。容量の共有に加えて、ストレージ容量の効率を改善するように、以下で説明するシステム全体にわたる重複排除を適用することができる。典型的なシステム実装は、可用性が高いが、これはオンライン拡張とアップグレードとをサポートし、複数のノードとネットワークの障害に耐え、障害後に自動的にデータを再構築し、ユーザに保存されているデータの回復を知らせることができるためである。保存されているデータの信頼性と可用性とは、各々の書き込みを行う複数のクライアントによってさらに動的に調整することができるが、これは以下でより完全に説明するように、バックエンドが複数のデータ冗長性クラスをサポートできるからである。
本原理の典型的な実施形態は、データ再構築、分散およびオンデマンドデータ削除、グローバル重複排除、およびデータ完全性管理などの効率的なデータサービスを実装するように以下で説明するように修正されるさまざまなスキームと特徴とを採用することができる。そのような特徴は、重複排除を安く安全に実装できるようにする、修正された内容アドレス指定ストレージパラダイムの利用を有していてもよい。他の特徴には、拡張可能で、耐障害性のシステムの構築と、重複排除のグローバルレベルへの拡張を可能にする修正分散ハッシュテーブルが含まれていてもよい。さらに、所望の冗長レベルと結果のストレージオーバーヘッドとの間の粒度の細かい制御によって、保存されているデータに冗長性を追加するように消失符号を採用してもよい。ハードウェア実装は、未使用時に大きく、しかし安価なストレージ容量を提供する、大きな、信頼性の高いSATAディスクを利用することができる。安価だが強力な計算リソースを提供するので、マルチコアCPUを採用することもできる。
本原理の典型的なシステム実装は、少なくとも数千の専用のストレージノードまたはストレージ装置に拡張可能であって、より大きな構成が潜在的に可能な未使用時ストレージ容量が数百ペタバイト程度となる。システム実装は、潜在的に多数のストレージノードを有することができるが、システムは対外的には1つの大きなシステムとして動作してもよい。さらに、本明細書で以下に説明するシステム実装は、1つの固定されているアクセスプロトコルを定義する必要はなく、ファイルシステムインターフェイスなどの標準を使用している従来のアプリケーションと非常に特別なアクセス方法を使用している新しいアプリケーションの両方をサポートすることができるように柔軟にすることができることにも注意すべきである。新しいプロトコルは、既存のプロトコルを使用しているクライアントを妨害せずに、新しいプロトコルドライバを使用してオンラインで追加することができる。したがって、システム実装は、ストリームデータアクセスを使用している場合、カスタム化されている新しいアプリケーションと商用レガシーアプリケーションの両方をサポートすることができる。
2次ストレージ実装の他の典型的な特徴によって、障害および更新と拡張のデータとシステムアクセシビリティに対する影響を限定したり取り除くことができるため、さまざまな状況におけるシステムの連続動作が可能になる。分散アーキテクチャのおかげで、たとえばローリングアップグレードなどのハードウェアまたはソフトウェアのアップグレード中の非停止システム可用性を維持し、それによってコストがかかる一切のダウンタイムの必要性をなくすことが可能であることも多い。さらに、典型的なシステムは、ディスク障害によるハードウェア障害、ネットワーク障害、停電の場合、そして何らかのソフトウェア障害の場合でさえも、自動自己回復が可能である。さらに、典型的なシステムは、特定の、構成可能な数の障害停止と、断続的なハードウェア障害とに耐えることができる。さらに、ランダムなデータ破壊の検出に、データ完全性検査の数個の層を採用することができる。
典型的なシステムの他の重要な機能は、高いデータ信頼性、可用性、および完全性の保証である。たとえば、データの各ブロックは、要求された数のディスクとノードの障害までブロックが存続するように、ユーザ選択冗長レベルで書き込むことができる。ユーザ選択可能な冗長レベルは、各ブロックをフラグメントに消失符号化することによって実現することができる。消失符号は、同じ量の容量オーバーヘッドについて、単純な複製に対して、桁違いに平均故障間隔を延長する。障害後、ブロックが読み取り可能なままである場合、ユーザに要求されたレベルに戻るまで冗長性を回復するように、システム実装は自動的にデータ再構築のスケジューリングを行うことができる。さらに、2次ストレージシステムの実装は、永久的なデータ消失が長期間隠れたままにならないことを保証することができる。システムのグローバルな状態は、全ての保存されているブロックが読み取り可能かどうかと、読み取り可能な場合に、データ消失が発生するまでに耐えることができるディスクとノードの障害の回数を示していていもよい。
ここで、同じ番号は同じまたは同様な構成要素を指している図面を詳細に、そして最初に図1を参照すると、本原理の1つの典型的な実装の2次ストレージ装置のデータブロック構成の表現100を示している。データブロック構成のプログラミングモデルは、大量の、可変サイズの、内容アドレス指定されており、そして非常に弾力性のあるブロックの抽象化に基づいている。ブロックアドレスは、たとえばその内容のSHA−lハッシュから導出されてもよい。ブロックはデータと、任意採用で、書き込み済みのブロックを指しているポインタの配列とを有していてもよい。ブロックは、より良好な重複排除比を可能にする可変サイズであってもよい。さらに、ポインタは、オブジェクトによってもはや使用されないメモリが再利用される「ガーベッジコレクション」として実装されるデータ削除を促進するように露出していてもよい。さらに、2次ストレージシステムのバックエンド部分は、新しいプロトコルと従来のプロトコルとを実装するように、プロトコルドライバによって使用される低レベルブロックインターフェイスをエクスポートしてもよい。ファイルシステムなどの高レベルブロックインターフェイスの代わりのそのようなブロックインターフェイスの提供は、実装を簡略化し、バックエンドをフロントエンドからきれいに分離することを可能にしている。さらに、そのようなインターフェイスは、幅広い多くの高レベルプロトコルの効率的な実装も可能にする。
図1に示しているように、2次ストレージシステムのバックエンド部分の複数のブロックは、無閉路有効グラフ(DAG)を構成してもよい。各ブロックのデータ部分は斜線が施してあるのに対して、ポインタ部分は斜線が施されていない。ドライバは複数のデータブロックの複数のツリーを描くように構成されていてもよい。しかし、典型的な2次ストレージシステムの重複排除の機能のため、これらのツリーは重複排除ブロックの位置で重なっており、有向グラフを構成している。さらに、ブロックアドレス用に使用されるハッシュが確実である限り、これらの構造内では閉路はあり得ない。
DAG内の起点となる頂点は、通常「検索可能保持ルート」と呼ばれる特別なブロック型のブロックである。通常のデータとアドレスの配列以外に、保持ルートは、ブロックの位置を求めるために使用されるユーザ定義検索キーを有するように構成されていてもよい。そのようなキーは任意のデータとすることができる。ユーザは、暗号ブロック内容アドレスの代わりに、検索キーを入力することによって、検索可能ブロックを検索することができる。その結果、ユーザは保存されているデータにアクセスするために内容アドレスを覚える必要がない。たとえば、同じファイルシステムの複数のスナップショットは、ファイルシステム名とスナップショットごとに増分されるカウンタとを有している検索キーを備えている検索可能保持ルートとして構成されている各ルートを有することができる。検索可能ブロックはユーザに見えるアドレスを有しておらず、ポインタで指すことができない。そのため、検索可能ブロックは、ブロック構造内に閉路を作るために使用することはできない。
図1を再度参照すると、ブロックの組100は、102と104の2つが保持ルートである3つのソース頂点102、104、および106を有している。その他のソース頂点106は通常のブロックであって、DAGのこの部分は依然として作成中であることを示している。
アプリケーションプログラミングインターフェイス(API)操作には、以下で説明するように、通常ブロックの書き込みと読み出し、検索可能な保持ルートの書き込み、検索キーに基づく保持ルートの検索、関連付けられている削除ルート書き込みによって削除される保持ルートの指定されたキーを使用したマーキングが含まれていてもよい。ただし、データストリームの複数のブロックへの切断は、ドライバによって実施されてもよい。
本原理の1つの典型的な態様によれば、ブロックの書き込み時に、ユーザはブロックを複数の使用可能な冗長クラスの1つに割り当てることができる。各クラスは、データ冗長性とストレージオーバーヘッドとの間の異なるトレードオフを表していてもよい。たとえば、低冗長性データクラス内のブロックは、たった1回のディスク障害に耐えるのに対して、そのブロックサイズに対するストレージオーバーヘッドは最小である。それに対して、重要なデータクラス内のブロックは、異なるディスクと物理ノード上で多数回の複製が可能である。本原理の2次ストレージシステムは、これら2つの両極端の間のさまざまな冗長性クラスをサポートしている。
また、典型的な2次ストレージシステムは、1つのブロックを直接削除する方法は提供すべきではないが、これらはそのようなブロックは他のブロックから参照されている可能性があることに注意すべきである。逆に、APIは、ユーザが保持ルートをマーキングして、DAGのどの部分を削除すべきかを示すことができるようにしてもよい。動作中ではない保持ルートをマーキングするために、ユーザは特別な「検索可能削除ルート」と呼ばれるブロックに削除される保持ルートの検索キーと同一の検索キーを割り当てることによって、そのブロックを書き込んでもよい。
たとえば、図1を再度参照すると、削除ルート108を保持ルートSP1 102に関連付けてもよい。2次ストレージシステムによって採用されている削除アルゴリズムは、動作中の保持ルートから到達不能な全てのブロックに削除のためのマーキングをするように構成されていてもよい。たとえば、図1において、ユーザが削除ルート108を書き込む場合、点線を有している全てのブロック、ブロックA 106、D110、B 112、およびE112が削除のためにマーキングされてもよい。ただしブロックA 106も削除のためにマーキングされているが、これは、それを指している保持ルートが存在しないのに対して、ブロックF 116は保持されており、これは保持ルートSP2 104から到達可能であるためである。ここで、ブロック104は動作中であるが、これは該当する削除ルートを有していないためである。データの削除中は、システムが削除されるブロックを特定する短い読み取り専用期間が存在する。実際の空間再利用は、通常の読み取り/書き込み中にバックグランド内で発生する。さらに、読み取り専用期間に入る前に、保持される全てのブロックは、動作中の保持ルートによって指されていなければならない
ここで図2を参照すると、前述のデータ構成モデルとAPI動作とを実装可能な、本原理の典型的な一実施形態の2次ストレージシステム200の高レベルブロック図/フロー図を示している。当然、本明細書で説明する実施形態は、全体がハードウェアであってもよいし、ハードウェアとソフトウェアの構成要素の両方を有していてもよい。好ましい実施形態では、本発明は、ハードウェアと、ファームウェア、常駐ソフトウェア、マイクロコード等を有する、しかしこれらには限定されないソフトウェアとに実装されている。
実施形態は、コンピュータまたは任意の命令実行装置によってまたはそれらと共に使用されるプログラムコードを提供するコンピュータが使用可能なまたはコンピュータが読み取り可能な媒体からアクセス可能なコンピュータプログラム製品を有していてもよい。コンピュータが使用可能なまたはコンピュータが読み取り可能な媒体には、命令実行装置によってまたはそれと共に使用されるプログラムを保存する任意の装置が含まれる。媒体は、磁気、光学、電子、電磁、赤外線、または半導体の装置とすることができる。媒体は、半導体メモリ、磁気テープ、取り外し可能なコンピュータディスケット(登録商標)、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、固定磁気ディスク、光学ディスク等のコンピュータが読み取り可能な媒体を有していてもよい。
さらに、コンピュータ読み取り可能媒体は、コンピュータ読み取り可能プログラムを有していていもよく、コンピュータ読み取り可能プログラムは、コンピュータで実行されたときに、コンピュータに本明細書で開示している方法のステップを実行させるおよび/または複数のストレージノード上の1つまたは2つ以上のストレージサーバを実現する。同様に、機械によって実行可能な命令のプログラムを具体的に実現している機械によって読み取り可能なプログラムストレージ装置は、2次ストレージ装置上のデータを管理するための、以下でより完全に説明する方法の複数のステップを実行するように構成することができる。
装置200は、ユーザ入力と対話し、データを保存し、検索し、削除し、さもなければ管理するようにユーザコマンドを実装するように構成されているアプリケーション層202を有していてもよい。アプリケーション層202の下位のAPI 204は、アプリケーション層202と通信し、データ管理を実施するようにフロントエンドシステム206と対話するように構成されていてもよい。フロントエンドシステム206は、内部ネットワーク210と通信する複数のアクセスノード208a〜fを有していてもよい。さらに、フロントエンドシステム206は、アプリケーションプログラムインターフェイス214を介してバックエンドシステム212と対話してもよく、それに対してアプリケーションプログラムインターフェイス214はプロトコルドライバ216と対話してもよい。バックエンドシステム212は、アプリケーション層からは、大きなストレージユニット内のファイルシステムの集合と見なすことができる複数のストレージノード218a〜fのグリッドを有していてもよい。さらに、本明細書では簡潔になるように6つのストレージノードを示しているが、構成の選択に従って、任意の数のストレージノードを設けることができる。典型的な実施形態においては、アクセスノードの数は、1からストレージノードの半分の範囲とすることができるが、範囲はストレージノードとアクセスノードとを実装するために使用されるハードウェアに依存して変化してもよい。複数のバックエンドストレージノードは、内部ネットワーク210を介して通信することもできる。
図2を継続して参照しながら、ここで図3と4を参照すると、本原理の実施形態の典型的なストレージノード218と典型的なアクセスノード208とを示している。ストレージノード218は、1つまたは2つ以上のストレージサーバ302、処理ユニット304、および保存媒体304を有している。ストレージサーバは、処理ユニット304とストレージ媒体306との上で動作するように構成されているソフトウェア構成において実装されてもよい。同様に、アクセスノード208は1つまたは2つ以上のプロキシサーバ402、処理ユニット404、およびストレージ媒体406を有していてもよい。当然、複数のストレージノードとアクセスノードとは本明細書では別のマシン上に実装されているように記述されているが、複数のストレージノードとアクセスノードとが同じマシン上に実装できることが考えられる。したがって、当業者には理解されるように、1つのマシンが、複数のストレージノードとアクセスノードの両方を同時に実装してもよい。
当然、2次ストレージシステム200は、本明細書で教えることを考慮すると、当業者に理解されるようにハードウェアとソフトウェアとの様々な形態で実装することができる。たとえば、適切なシステムは、1つのバックエンドストレージサーバ上で動作し、6つの500GB SATAディスク、6GBのRAM、2つのデュアルコア3GHz CPUと2つのGigEカードとを有するように構成されている複数のストレージノードを有することができる。その代わりに、各ストレージノードは、2つのバックエンドストレージサーバを実行し、12の1TB SATAディスク、20GBのRAM、2つの4ウェイ3GHz CPUと4つのGigEカードとを有するように構成されていてもよい。さらに、たとえば、アクセスノード208は、6GB RAM、2つのデュアルコア3GHz CPU、2つのGigEカード、およびただの小さいローカルストレージを有していてもよい。さらに、複数のストレージノードとアクセスノードとは、Linux、バージョンRed Hat EL5.1を実行するようにも構成されていてもよい。しかし、ハードウェア構成要素の詳細な説明は例示に過ぎないことを理解すべきであって、それは、他の構成とハードウェア構成要素とを当業者が本明細書で開示されている教えを考慮して実装可能であるためである。
図2〜4を再度参照すると、前述のように、2次ストレージシステム200の複数の構成要素は、複数のストレージサーバ302、プロキシサーバ402、およびプロトコルドライバ216を有していてもよい。さらに、各ストレージノード218は1つまたは2つ以上のストレージサーバ302のプロセスをホストするように構成されていてもよい。ストレージノード218上で実行されるストレージサーバ302の数は、その利用可能なリソースに依存している。ノード218が大きくなると、より多くのサーバ302が当然実行される。各サーバ302は、そのストレージノードの特定の数のディスクを排他的に担当するように構成されていてもよい。たとえばマルチコアCPUを使用して、コアの数の各増加に対してストレージサーバ302当たりの並列性を一定に維持することが可能で、複数のストレージサーバを1つのストレージノード上に配置することができる。
前述のように、複数のプロキシサーバ402が複数のアクセスノード上で実行され、同じブロックAPIをストレージサーバとしてエクスポートしてもよい。プロキシサーバ402は、複数のバックエンドノードを探し出して、最適化されたメッセージ経路設定とキャッシュ操作とを実施するようなサービスを提供するように構成されていてもよい。
複数のプロトコルドライバ216は、複数のアクセスプロトコルを実装するようにバックエンドシステム212によってエクスポートされたAPI 216を使用するように構成されていてもよい。複数のプロトコルドライバは実行時に複数のストレージサーバ302とプロキシサーバ402とにロードされてもよい。どのノードに所与のドライバをロードするかは、使用可能なリソースとドライバリソース要求とに依存する。ファイルシステムドライバなどのリソースを要求するドライバは、プロキシサーバ402にロードされてもよい。
ストレージサーバ302は、分散環境で使用されるマルチコアCPU用に構成されてもよい。さらに、複数のストレージサーバ302の特徴は、複数のプログラマの複数のチームによる平行した開発のサポートを実現してもよい。さらに、ストレージサーバ302の複数の特徴は、結果として得られるシステムの保守性、試験容易性、および信頼性も実現してもよい。
ストレージサーバ302の特徴を実装するには、「パイプライン化ユニット」と呼ばれる複数のステーションを有している非同期パイプライン化メッセージパッシングフレームワークを採用することができる。パイプライン内の各ユニットは、単一スレッドであって、他のユニットと一切のデータ構造体の書き込み共有の必要がない。さらに、パイプライン化ユニットは、何らかの内部ワーカスレッドも有していてもよい。典型的な一実施形態では、複数のパイプライン化ユニットは、メッセージパッシングによってのみ通信する。そのため、複数のパイプライン化ユニットは、同じ物理ノード上に共に存在したり、複数のノードに分配されていてもよい。通信しているパイプライン化ユニットが同じノード上に共に存在している場合、読み取り専用共有を最適化として使用することができる。同期と並列性の問題は、1つのパイプライン化ユニットだけに限定することができる。さらに、各パイプライン化ユニットは、他のパイプライン化ユニットのスタブを提供することによって独立してテストすることができる。
拡張が容易になるように、データの保存位置を整理するために分散ハッシュテーブル(DHT)を採用することができる。分散ストレージ装置は、ストレージ利用効率と十分なデータ冗長性を有していなければならないため、DHTの追加の機能を使用しなければならない。たとえば、追加の機能は、ストレージ利用率と、選択されたオーバーレイネットワークと消失符号化などのデータ冗長性スキームとの統合の容易さとを保証しなければならない。既存のDHTがそのような特徴を適切に提供しないため、固定プレフィックスネットワーク(FPN)分散ハッシュテーブルの修正版を使用することができる。
ここで図5を参照すると、本原理の典型的な実施形態の固定プレフィックスネットワークの表現500を示している。FPNにおいて、各オーバーレイノード502、504は、両オーバーレイノードの識別子でもあるハッシュキープレフィックスが厳密に1つ割り当てられている。全てのプレフィックスが1つになって、ハッシュキー空間全体をカバーしており、オーバーレイネットワークはそれらを分割した状態に維持しようとし続ける。たとえば、ノード506〜512にいずれか1つのノードであるFPNノードは、FPNノードの識別子と等しいハッシュキーを担当している。図5の上部は、プリフィックス空間を4つの互いに交わらない部分空間に分割している4つのFPNノード506〜512をリーフとして有しているプレフィックスツリーを示している。
本原理の態様のDHTについては、FPNは、図5に示しているように「スーパーノード」を使用して修正することができる。スーパーノードはFPNノード(そして、その場合、FPNノードはハッシュキープレフィックスによって識別され)を表していてもよく、ノード障害に対する回復力を増大させるために数個の物理ノードにわたっている。たとえば、図5に示しているように、バックエンドネットワークが6つのストレージノード514a〜514fを有している場合、各スーパーノード506〜512は、独立している物理ストレージノード514a〜514f上に配置可能な、複数のスーパーノードコンポーネント516の「スーパーノード濃度」と呼ばれる定数を有することができる。同じスーパーノードの複数のコンポーネントは「ピア」と呼ばれる。したがって、各スーパーノードは、ストレージノード514a〜514fの部分集合と見なすことができる。たとえば、スーパーノード506は、複数のストレージノードの部分集合514a〜514dを有していてもよい。さらに、各ストレージノードは、スーパーノードの総数未満である多数のスーパーノードに含まれていてもよい。たとえば、ノード514aは、4つのスーパーノードのうち3つ、つまりスーパーノード506、510、および512に含まれていてもよい。
本原理の典型的な実装によれば、固定プレフィックスネットワークは、複数のデータブロックストレージを複数のストレージノードに割り当てるために使用することができる。たとえば、データのハッシュ後、ハッシュ結果の初めの2、3のビット、この例では最初の2ビットは、複数のデータブロックを各スーパーノードに分配するために使用することができる。たとえば、「00」で始まるハッシュ値を有しているデータブロックはスーパーノード506に割り当て可能で、「01」で始まるハッシュ値を有しているデータブロックはスーパーノード508に割り当て可能で、「10」で始まるハッシュ値を有しているデータブロックはスーパーノード510に割り当て可能で、「11」で始まるハッシュ値を有しているデータブロックはスーパーノード512に割り当て可能である。その後、図6を参照して以下でより完全に説明するように、データブロックの複数の部分をデータブロックが割り当てられているスーパーノードの複数のコンポーネント516の間で分配することができる。ここで、スーパーノード506の複数のコンポーネントは、00:0、00:1、00:2、00:3と表される。その他のスーパーノードのコンポーネントも同様に表される。
ただし、スーパーノード濃度は、たとえば4〜32の範囲にある。しかし、他の範囲を採用することができる。好ましい実施形態では、スーパーノード濃度は12に設定されている。典型的な実施形態では、スーパーノード濃度は、全てのスーパーノードに対して同じで、システムの全寿命を通して一定であってもよい。
当然、複数のスーパーノードピアは、スーパーノードに適用すべきあらゆる変更を判断するために分散合意アルゴリズムを採用することができる。たとえば、ノード障害後、複数のスーパーノードピアは、どの物理ノード上で失われた複数のコンポーネントのインカーネーションを再作成すべきかを決定することができる。さらに、複数のスーパーノードピアは、どの代替の複数のノードが障害を起こしたノードに置き換わるかを決定することができる。たとえば、図5を再び参照すると、ノード1 514aで障害が発生した場合、スーパーノード506の他の複数のコンポーネントのデータで、消失符号化を使用してコンポーネント00:1をノード5 514eにおいて再構築できる。同様に、ノード1 514aに障害が発生した場合、スーパーノード510のその他のコンポーネントのデータを使用してコンポーネント10:0をノード3 514cにおいて再構築することができる。さらに、スーパーノード512のその他のコンポーネントのデータを使用してコンポーネント11:2をノード4 514dにおいて再構築することができる。
本原理の2次ストレージの実施形態によって実現する読み取りと書き込みの処理については、書き込み時は、データのブロックがブロックのハッシュが所属しているハッシュキー空間に該当しているスーパーノードの複数のピアの1つへ送られてもよい。次に、書き込み処理ピアは、以下でより完全に説明するように、適切な複製が保存済みかどうかを確認してもよい。複製が見つかれば、そのアドレスが返され、そうでなければ、新しいブロックが圧縮され、ユーザに要求されれば、フラグメント化され、フラグメントが該当しているスーパーノードの残りの複数のピアに分配される。代替の実装によれば、アクセスノード上のブロックをハッシュして、データなしでハッシュ値だけをストレージノードに送信することによって重複排除を実行してもよい。ここで、複数のストレージノードは、アクセスノードから受信したハッシュ値を保存されている複数のブロックのハッシュ値と比較することによって、ブロックが複製かどうかを判断する。
読み取り要求も、データブロックのハッシュキーに該当しているスーパーノードの複数のピアの1つに送られる。ピアは局所的に見つけることができる最初のブロックメタデータを見つけ出して、消失符号化スキームに従ってデータブロックを再構築するために十分な最小の数のフラグメントを読み取るためにフラグメント読み取り要求を他の複数のピアに送信してもよい。複数の要求のいずれかがタイムアウトした場合、全ての残りのフラグメントを読み取ることができる。十分な数のフラグメントが見つかった後、ブロックを再構築し、展開し(ブロックが圧縮されている場合)、確認し、確認が成功した場合、ユーザに返すことが可能である。
一般に、読み取りはストリームアクセスに対しては非常に効果的であるが、これは全てのフラグメントが順番にあらかじめディスクからローカルキャッシュにプリフェッチできるからである。しかし、ピアによってフラグメントを見つけることは非常に手の込んだ処理となることがある。しばしば、フラグメントの場所は、ローカルノードインデックスとローカルキャッシュとを参照することによって決定することができるが、場合によっては、たとえば、コンポーネントの移動中または断続的な障害の後では、要求されたフラグメントはそのフラグメントの以前の複数の位置の1つだけにしか存在しないこともある。この場合、ピアは、たとえば、コンポーネントの以前の複数の位置の形跡を逆の順番で検索することによって、失われたデータの分散検索を指示してもよい。
本原理の2次ストレージシステムの実施形態に含まれることがある他の典型的な特徴は複数のデータブロックの複数のコンポーネントがシステムの異なる物理ストレージノード全体に適切に分散されることを保証する「ロードバランシング」である。複数の物理ストレージノード内にコンポーネントを分散させることによって、システムのサバイバビリティ、データの回復力と可用性、ストレージ稼働率、およびシステムパフォーマンスを改善する。たとえば、1つのマシンに配置するピアコンポーネントが多すぎると、該当しているノードが失われた場合に壊滅的な結果となることがある。その結果、影響を受けるスーパーノードは、障害から回復しないことがあり、これは回復できないコンポーネントが多すぎるためである。ストレージノードが回復可能であっても、データのいくつかあるいは全部が読み取り可能でないことがあるが、これは失われたフラグメントが多すぎるからである。また、使用可能なノードリソースに比例してコンポーネントが物理ストレージノードに割り当てられたときにシステムの性能が最大化されるが、これは各ストレージノードの負荷がストレージノードに割り当てられている複数のコンポ−ネットが対応しているハッシュキープレフィックス空間に比例しているからである。
典型的なシステム実装は、障害弾力性、性能、およびストレージ稼働率が最大化されている状態に到達するように、全ての物理マシンつまりストレージノードにわたってコンポーネント分配の平均化を連続して試みるように構成することができる。所与の分配の品質は、システムエントロピーと呼ばれるこれらの目標に優先順位を付ける多次元関数によって、計測することができる。そのような平均化は、ローカルにホストされているコンポーネントの隣接するストレージノードへの一式の全ての考え得る転送を定期的に考慮するように構成可能な各マシン/ストレージノードによって実施することができる。ストレージノードが分配を改善するであろう転送を発見すると、そのようなコンポーネント転送が実行される。さらに、同時に発生した複数の相容れない転送を防止する保護をシステムに追加することができる。コンポーネントが新しい場所に到着した後で、そのデータも古い場所から新しい場所に移動される。データ転送はバックグラウンドで実行可能であるが、これは場合によっては実行に長い時間がかかることもあるからである。
ストレージノードマシンの2次ストレージシステムへの/からの追加と削除の管理にもロードバランシングを使用することもできる。前述と同じエントロピー関数は、複数のマシンの追加/削除後の結果としてのコンポーネント分配の質の計測にも適用可能である。
典型的な2次ストレージ装置の他の重要な特徴は、スーパーノードの濃度の選択であるが、スーパーノードの濃度の選択は2次ストレージシステムの特性に対して重大な影響を有することがあるためである。第1に、スーパーノード濃度は、耐えうるノード障害の最大数を定めてもよい。たとえば、バックエンドストレージネットワークは、各スーパーノードが動作している限り、ストレージノード障害に耐えることができる。少なくともスーパーノードの複数のピアの半分と1つとが動作状態にあって合意に到達すれば、スーパーノードは動作状態を維持する。その結果、2次ストレージシステムは、各スーパーノードの複数のピアをホスティングしている複数のストレージノードの中で、たかだかスーパーノード濃度マイナス1の永久的なノードの障害があっても存続する。
スーパーノード濃度は、拡張性にも影響する。所与の濃度について、各スーパーノードが存続する確率は、固定している。さらに、存続の確率は、スーパーノード濃度に直接依存している。
最後に、スーパーノード濃度は、利用可能なデータ冗長性クラスの数に影響する。たとえば、消失符号化は、ブロックが依然として再構築可能であるときに、失われてもよいフラグメントの最大数を使用してパラメータ化されている。消失符号化が採用され、スーパーノード濃度フラグメントを作る場合、耐えられる失われたフラグメントの数は、1からスーパーノード濃度マイナス1(後者の場合、そのようなブロックのスーパーノード濃度の数だけのコピーが維持できる)の間で変化しうる。耐えられる失われたフラグメントの数のそのような選択の各々によって、様々なデータ冗長性クラスを定めることができる。前述のように、各クラスは、たとえば、消失符号化によるストレージオーバーヘッドと障害弾力性との間の、さまざまなトレードオフを示していてもよい。そのようなオーバーヘッドは、耐えられる失われたフラグメントの数の、スーパーノード濃度と耐えられる失われたフラグメントの数との差に対する比によって特徴付けることができる。たとえば、スーパーノード濃度が12で、ブロックがたかだか3つのフラグメントを失ってもよい場合、このクラスのストレージオーバーヘッドは3対(12−3)、つまり33%で与えられる。
図6と7を参照すると、本原理の実装による複数のデータコンテナのチェーンを使用している2次ストレージシステムの典型的なデータ構成構造600、700を示している。保存されているデータの図示の構成600、700によって、信頼性、可用性、および性能の程度を高くすることができる。そのようなデータ構成構造を使用した2次ストレージシステムの実装によって、保存されているデータの可用性の高速な特定と、障害に応答して指定された冗長レベルへのデータの再構築が可能になる。指定された冗長レベルへのデータの再構築によって、有効なユーザデータを収容していない場合でもディスク全体を再構築するRAIDなどのシステムに対する顕著な利点が実現される。以下で説明するように、データブロックコンポーネントはデータ転送の前にノード間を移動するため、システムは、古いコンポーネントの位置からデータを見つけ出し、検索することができ、これは、データの再構築に比べてはるかにより効果的である。1つのストリーム内に書き込まれている複数のデータブロックは、読み取りと書き込みの性能を最大化するように互いに近くに配置すべきである。さらに、以下で説明するデータ構造の実装を採用しているシステムは、システムは任意の動作している保持ルートから到達可能なデータブロックを削除して、到達不能なデータブロックによって占められている空間を再利用するオンデマンド分散データ削除もサポートしてもよい。
図6は、本原理の1つの典型的な実装によってデータを分配するシステム600のブロック図/流れ図を示している。図6に示しているように、データブロックA 604、B 606、C 608、D 610、E 612、F 614、およびG 616を有しているデータストリーム602は、SHA−1などのハッシュ関数または任意の他の適切な内容アドレス指定可能なストレージスキームを適用することができる。当業者には理解されるように、内容アドレス指定可能なストレージスキームは、データブロックの一意のアドレスを得るために、ハッシュ関数をデータブロックの内容に適用することができる。したがって、データブロックアドレスは、データブロックの内容に基づいている。
図5を参照しながら図6に戻ると、説明している例においては、データブロックA 604、D 610、およびF 616のハッシュ結果はプレフィックス「01」を有している。したがって、複数のブロックA 604、D 610、およびF 616は、スーパーノード508に割り当てることができる。複数のデータブロックに対する複数のハッシュがデータストリームから計算された後、個別のデータブロックを圧縮(618)し、消失符号化(620)することができる。前述のように、データ冗長性を実装するために消失符号化を採用することができる。1つのデータブロックの異なる結果として得られた消失符号フラグメント622がデータブロックが割り当てられているスーパーノードの複数のピアコンポーネント516に分配されてもよい。たとえば、図6は、プレフィックスが01の複数のデータブロック、つまりデータブロックA 604、D 610、およびF 616の異なる複数の消失符号化フラグメント622が保存されているスーパーノード508の複数のピアコンポーネント01:0、01:1、01:2、および01:3を示している。
典型的な2次ストレージシステムの実施形態のデータ管理の基本ロジックユニットは、本明細書では「synchrun」と定義されており、synchrunは書き込み処理ピアコンポーネントによって書き込まれる、所与のスーパーノードに属している多数の連続しているデータブロックである。たとえば、synchrun 624は、該当しているスーパーノードの各コンポーネント516の多数の連続しているデータブロックフラグメント626を有している。本明細書では、各フラグメントは、データストリーム602に出現する複数のブロックの順番に保存されていてもよい。たとえば、ブロックF 614の複数のフラグメントは、ブロックD 610の複数のフラグメントの前に保存され、それに対して、ブロックD 610はブロックA 604の前に保存されている。時間の順序を保持することによって、データの管理が容易になり、ストレージシステムの状態の推定が可能になる。たとえば、時間の順序の保持によって、システムは特定の日付以前のデータが障害の際に再構築可能であると判断できる。
ここでは、ブロックの書き込みは、実質的に、そのフラグメント622をスーパーノード濃度の数だけ書き込むことである。したがって、各synchrunは、ピア毎に1つのスーパーノード濃度の数のsynchrunコンポーネントによって表すことができる。synchrunコンポーネントはたとえば複数のフラグメント626などの複数のフラグメントの時間の順序に対応しており、フラグメントはsynchrunコンポーネントが属しているスーパーノードプリフィックスによってフィルタリングされている。コンテナは、1つまたは2つ以上のsynchrunコンポーネントを保存することができる。スーパーノードのi番目のピアについて、対応しているsynchrunコンポーネントは複数のsynchrunブロックのすべてのi番目のフラグメントを有している。synchrunは論理構造に過ぎないが、synchrunコンポーネントは対応しているピアに実際に存在している。
所与の書き込み処理ピアに対して、2次ストレージシステムは任意の所与の時間に開いているsynchrunは1つだけであるように構成されていてもよい。その結果、そのようなsynchrunはすべて、書き込み処理ピアによって定められた順番で、チェーン内で論理的に順番が設定できる。複数のsynchrunコンポーネントは、本明細書ではsynchrunコンポーネントコンテナ(SCC)628と呼ばれるデータ構造内に配置することができる。各SCCは、1つまたは2つ以上のチェーン隣接synchrunコンポーネントを有することができる。したがって、複数のSCCも、synchrunコンポーネントチェーンと同様に複数のチェーンを構成する。さらに、複数のSCCが1つのピア内に含まれていてもよい。たとえば、ピア01:0はSCC630、SCC632、およびSCC634を有していてもよい。したがって、1つのピア上で順番が設定されている複数のSCCは、「ピアSCCチェーン」636と呼ばれる。さらに、複数のsynchrunのチェーンは、複数のピアSCCチェーンのスーパーノード濃度によって表すことができる。図7ではたとえば複数の列724〜732の位置のピアチェーンを示しており、以降でより完全に説明する。
複数のピアSCCチェーンは、複数のsynchrunコンポーネント/フラグメント622メタデータおよびそれらのフラグメントの数について一般的に同じ場合があるが、時には、たとえばチェーンホール(穴)が生じるノード障害が原因で異なることもある。このチェーン構成によって、データ検索や削除、グローバル重複排除、およびデータ再構築などの比較的簡単で効果的な2次ストレージシステムのデータサービスの実装が可能になる。たとえば、チェーンホールを使用して、データが使用可能かどうか(つまり、全ての対応しているブロックが再構築可能かどうか)を判断することができる。したがって、各ブロックを完全に再構築するのに使用されるフラグメントの数に等しい十分な数のピアチェーンにホールが一切無い場合、データは利用可能であると考えられる。複数の冗長なクラスが使用される場合、データの可用性を各冗長クラスについて同様に判断することができる。
さらに、当然、システムは様々な種類のメタデータを保存してもよい。たとえば、データブロックのメタデータは他の複数のデータブロックへの露出しているポインタを有していてもよく、複数のデータブロックは複数のポインタを備えているデータブロックの各フラグメントを使用して複製可能である。他のメタデータには、たとえば、ブロックハッシュ情報とブロック回復力情報とを有しているフラグメントメタデータがある。フラグメントメタデータは、データとは別個に保存可能であって、各フラグメントを使用して複製することができる。さらに、データコンテナは、コンテナが保存している複数のsynchrunコンポーネントの範囲などの、保存しているチェーンの一部に関連しているメタデータを有していてもよい。コンテナが保持しているこのメタデータによって、システム内のデータの状態と、データ構築と転送などのデータサービスの性能とを高速に推測することができる。したがって、各コンテナは、データとメタデータの両方を有している。前述のように、メタデータは、複製することができるのに対して、ユーザによって要求されたデータの冗長レベルは、消失符号のパラメータ化によって維持することができる。したがって、スーパーノード508の複数のコンポーネント/ストレージノードの各々に保存されているデータの複数のコンテナの複数のチェーンは、同一のメタデータを有しているが、異なるデータを有している複数のチェーンが存在できるという点で、冗長であると考えることができる。さらに、複数のコンテナの複数のチェーンは冗長と考えることもできるが、これは、たとえば異なるチェーンにデータを保存するための消失符号化の使用によって、データ自体がある意味で冗長であるからである。
ここで図7を参照すると、本原理の実施形態による、データの分割、連結、および削除とストレージノードネットワーク内への複数のストレージノードの追加および/または複数のストレージノードに保存されているデータの追加に応答したストレージ空間再利用を示しているデータ構成構造700を示している。行702は2つのsynchrun A 704とB 706とを示しており、両者は、ハッシュキー空間全体に対応している空のプレフィックススーパーノードに属している。ここでは、各synchrunコンポーネントは1つのSCC内に配置されており、複数の個別のフラグメント708も示している。これらのsynchrunのsynchrunコンポーネントを備えているSCCを互いに並べて配置されている複数の長方形として示している。前述のように、複数のsynchrunのチェーンは、複数のピアSCCチェーンのスーパーノード濃度によって表すことができる。図7の残りの部分については、そのようなピアSCCチェーンを1つだけ示している。
本原理の実施形態によれば、各スーパーノードは、最終的にはたとえばデータのロードまたは複数の物理ストレージノードの追加などに応答して分割されることがある。たとえば、行710に示しているように、分割は、通常のFPN分割であっても良く、その結果が親のプレフィクスからそれぞれ0と1とによって拡張されているプレフィックスを備えているそれぞれのスーパーノードSCCチェーン712と714を有している2つの新規のスーパーノードとなってもよい。スーパーノードの分割後、各スーパーノード内の各synchrunも、半分に分割されてもよく、複数のフラグメントがそれらのハッシュプリフィックスに基づいてそれらに分配される。たとえば、行710は、プレフィックス0のスーパーノードの一方のチェーン712と、プレフィックス1のスーパーノードの他方のチェーン714との2つのチェーンを示している。ただし、分割の結果、synchrun A 704とB 706との複数のフラグメント708は、これら2つの独立しているチェーン712と714とに分配され、2つのチェーンは異なるスーパーノードの下にある別個のストレージノードに保存することができる。その結果、4つのsynchrun716、718、720、および722が作られるが、新規のsynchrun716、718、720、および722の各々は、それぞれ元のsynchrun704および706のほぼ半分の大きさである。
さらに、当然、物理ストレージノードが2次ストレージシステムに追加され、システムが複数のスーパーノードを分割することによって応答すると、システムは複数の物理ストレージノードを、図5に関して前述したように、新しいスーパーノードと古いスーパーノードの両方に割り当てるように構成することができる。たとえば、2次ストレージシステムは、複数の物理ストレージノードを全てのスーパーノードの間に均等に分配してもよい。
本発明の実施形態の他の典型的な特徴において、2次ストレージシステムは、限定されている数のローカルSCCを保持していてもよい。たとえば、SCCの数は、図7の行724に示しているように、SCCの最大の大きさに到達するまで、隣接しているsynchrunコンポーネントを1つのSCCに統合する、つまり連結することによって、維持することができる。ローカルSCCの数を制限することによって、SCCメタデータをRAMに保存することが可能になり、それに対して、データサービスを提供するための動作を高速に決定することが可能になる。SCCの目標サイズは、複数のSCCがメインメモリに読み込み可能なように、たとえば100MB未満に設定可能な構成定数であってもよい。SCC連結は、ピアチェーンが同様の形式を維持するように、全てのピア上で緩く同期していてもよい。
図7を引き続き参照すると、データ削除を図7の行726に示しており、網掛けされている複数のデータフラグメントが削除される。その後、行730と732にそれぞれ示しているように、ストレージ空間が再利用され、別個の複数のSCCの残りの複数のデータフラグメントを連結することができる。削除サービスを以下でより完全に説明する。
図6と7とに関して説明した前述のデータ構成は、静的システム内に実装するのは比較的簡単であるが、2次ストレージシステムの動的なバックエンド内に実装するのは非常に複雑である。たとえば、ピアがロードバランシング中に別の物理ストレージに転送される場合、その複数のチェーンは、1度に1つのSCCずつ、バックグラウンドで新しい位置に転送されてもよい。同様に、典型的な実施形態によれば、スーパーノードの分割後、スーパーノードの全てのSCCが即座に分割されずに、2次ストレージシステムは、複数のチェーンを現在のスーパーノードの複数の位置と形状とに調整するためにバックグラウンド操作を実行してもよい。その結果、任意の所与の瞬間に、複数のチェーンは部分的に分割されていたり、部分的にピアの以前の複数の位置に存在したり、または両方の状態にあることがある。1つまたは2つ以上の物理ストレージノード障害の場合、SCCチェーンのいくつかに相当なホールが存在することがある。ピアチェーンは、システム内のスーパーノード濃度チェーン冗長性のために、同じデータを記述しているので、データ再構築のために十分な数の完全な複数のチェーンが存在しなければならない。それに応じて、チェーンの冗長性によって、転送/障害が存在している場合でも、システム内のデータを推測することができる。
前述のデータ構成構造に基づいて、本原理の2次ストレージシステムの実施形態は、データの回復可能性の判断、データの自動再構築、ロードバランシング、削除と空間の再利用、データの位置の探し出し、重複排除、およびその他のデータサービスを効果的に提供することができる。
データ再構築については、ストレージノードまたはディスクの障害時に、それらに存在している複数のSCCが失われることがある。その結果、冗長レベルが採用されると、これらのSCCに属している複数のフラグメントを備えている複数のデータブロックの冗長性が、これらのブロックの書き込み時にユーザによって要求される冗長レベルまでせいぜい低くされる。最悪の場合、十分な数のフラグメントが残っていない場合、所与のブロックが完全に失われることがある。ブロックの冗長性が所望のレベルであることを保証するように、2次ストレージシステムはホールを探すために複数のSCCチェーンをスキャンし、たとえば失われた各SCCに対するバックグランドジョブなど消失符号化スキームに基づいてデータ再構築のスケジューリングを行ってもよい。
典型的な実施形態について、複数のピアSCCを1つの再構築セッションで再構築することができる。たとえばSCCメタデータに基づいて、データ再構築に使用される最小の数のピアSCCが再構築を実行しているピアによって読み取られる。その後、再構築される1つまたは2つ以上のSCCに含まれることになる失われた複数のフラグメントを得るために、消失符号化と復号化がそれらにまとめて適用される。再構築された複数のSCCは、任意の分割と連結とを実施することによって、同じフォーマットを有するように構成することが可能で、それによって高速で大量の再構築が可能になる。次に、再構築された複数のSCCを現在の目的の複数の位置に送信することができる。
2次ストレージシステムの実施形態で実施可能な他のサービスには重複排除があり、重複排除は複数のストレージノードにわたって分散化することが可能で、多くのさまざまな側面について構成することが可能である。たとえば、ファイル全体、ファイルの部分集合、固定サイズブロック、または可変サイズブロックなど、重複が検出されるレベルを設定することができる。さらに、重複が検出され、それが保存される前のオンラインや、重複がディスクに到達した後のバックグラウンドなどの重複排除が実施される時期を設定することができる。重複排除の精度も調整可能である。たとえば、書き込まれている対象の複製が存在するたびに検出するようにシステムを設定することが可能で、これは「信頼できる」と呼ぶことが可能であり、またシステムはより高速な性能が得られるように複製ファイルの存在を見積もることも可能で、これは「おおよその」と呼ぶことができる。2つの対象が同一であることを確認する方法も設定可能である。たとえば、システムは2つの対象コンテンツの信頼性の高いハッシュを比較したり、その代わりにこれらのオブジェクトのデータを直接比較するように構成することができる。さらに、検出の範囲をローカルにする、所与のノード上に存在しているデータのみに限定する、全てのノードの全てのデータが使用されるようにグローバルにするなど、検出の範囲を変更することができる。
好ましい実施形態では、2次ストレージシステムは可変サイズブロック、オンライン、ハッシュ確認グローバル重複排除スキームを複数のストレージノードに実装する。高速なおおよその重複排除を通常の複数のブロックに使用可能であるのに対して、同じ検索プリフィックスを備えている2つまたは3つ以上のブロックが同じ複数のブロックを指していることを確認するために信頼できる重複排除を保持ルートに使用することができる。どちらの場合も、冗長クラスが採用されている場合、書き込まれているブロックの潜在的な複製は書き込みで要求されるクラスよりも弱くない冗長クラスを有していなければならず、潜在的な古い複製が再構築可能でなければならない。ここで、より弱い冗長クラスは、より低い冗長性を指している。
通常のブロック書き込み時には、重複排除ファイルの検索を書き込み要求を処理しているピアおよび/または最も長く動作しているピア上で実施することができる。たとえば、ピアが動作しているときに書き込まれる2つの同じブロックがそのピアによって処理されるように、書き込みを処理するピアをブロックのハッシュに基づいて選択することができる。したがって、ピアにおいて第1のブロックの複製となる第2のブロックを容易に判断することができる。書き込み処理ピアがデータ転送またはコンポーネント回復のせいで最近作られ、ピアがまだ有するべき全てのデータを有しておらずローカルSCCチェーンが不完全な場合、より複雑な状況が発生する。そのような場合、同じスーパーノード内で書き込み処理ピアとして最も長く動作しているピアについて、使用可能な複製があるかどうかが調べられる。最も長く動作しているピアのチェックは経験則による手段に過ぎないが、最も長く動作しているピアの適切なSCCチェーンが完全でなくなることは起こりそうもなく、それはSCCチェーンが完全ではない状態は大きな障害の後で通常発生するからである。さらに、特定のブロックについて、大きな障害の場合に、重複を排除するたった1つの機会が失われた場合でさえ、次の同一のブロックを重複排除しなければならない。
保持ルート上での書き込みについては、2次ストレージシステムは、同じ検索プレフィックスを備えている2つのブロックが同じ複数のブロックを指していることを確認しなければならない。そうしない場合、保持ルートは、複数のスナップショットの識別に使用できなくなる。その結果、正確で信頼性が高い重複排除スキームを保持ルートに適用しなければならない。通常のブロックへの書き込みと同様に、書き込みを処理するピアを、どのような重複であってもピア上に存在することになるようにブロックのハッシュに基づいて選択することができる。しかし、ローカルな完全なSCCチェーンが書き込みを処理するピアに存在しないときには、書き込み処理ピアは、重複排除クエリーをそのスーパーノード内の他の全てのピアに送信することができる。これらのピアの各々は、重複をローカルにチェックする。否定の応答は、応答の基になるSCCチェーンの複数の部分の要約の記述を有していてもよい。書き込み処理ピアは全ての応答を収集してもよい。少なくとも1つの肯定の応答があれば、重複が発見されている。そうでなく、全ての応答が否定であれば、書き込み処理ピアは、否定の応答に添付されている任意のチェーン情報を使用して完全なチェーンの構築を試みてもよい。SCCチェーン全体が構築可能な場合、新しいブロックは重複ではないと判断される。そうではない場合、大規模な障害の後に起こることがあるデータ再構築が進行中であることを示している特別なエラーステータスを伴って保持ルートの書き込みを拒否してもよい。チェーン全体を対象とすることができないときには、書き込みは後で発行されなければならない。
2次ストレージシステムの実施形態によって実行できる他のデータサービスには、データ削除とストレージ空間の再利用がある。前述のように、典型的な2次ストレージ装置は、内容アドレス指定可能性、分散と耐障害、および重複排除などの機能を有していてもよい。これらの機能によって、データ削除の実装において複雑な問題が発生する。内容アドレス指定可能装置の実施形態における削除は、周知の分散ガーベッジコレクションと多少似ている一方で、本明細書において以下で説明するように相当な違いがある。
ブロックがブロックの古い他のコピーに対して重複排除されるかどうかを判断する場合、典型的な2次ストレージシステムの実施形態は、古いブロックの削除がスケジュールされていないことを確認しなければならない。どのブロックを保持し、どれを削除するかは、分散している設定と障害の存在とに存していなければならない。たとえば、削除の判断は、断続的な障害によって一時的に失われてはならないが、これは削除がスケジュールされている複数の重複ブロックが除外される可能性があるためである。さらに、データ削除アルゴリズムの堅牢性は、データの堅牢性よりも高くなければならない。この性質は望ましいが、それは、いくつかのブロックがたとえ失われても、データ削除は失われたデータを論理的に取り除き、ユーザが明示的に動作を要求したときに、システムを修復できなければならないためである。
2次ストレージシステムの典型的な実施形態において構成を簡単にし、実装を管理可能にするために、削除を2つの段階に分割することが可能で、これら2つの段階は、複数のブロックが削除のためにマークされる読み取り専用段階と、削除のためにマークされた複数のブロックが再利用され、ユーザは読み取りと書き込みの両方を発行することができる読み書き段階である。読み取り専用段階を有することで、削除の実装が簡略化され、それは書き込みのブロックマーキング処理への影響が取り除かれるためである。
再び図7を参照すると、特定のブロックを指している複数のシステムデータブロック内のポインタの数をカウントするように構成されているブロックあたり参照カウンタを使用して削除を実装することもできる。特定の実装においては、複数の参照カウンタは書き込み時に即座に更新する必要はない。その代わりに、それらを読み取り専用段階毎に増加するように更新することが可能で、その段階の間に2次ストレージシステムは前回の読み取り専用段階以来書き込まれた全てのポインタを処理する。検出された各ポインタについて、それが指すブロックの参照カウンタが増分される。すべてのポインタが検出され、増分が完了すると、参照カウンタがゼロの全てのブロックが削除のためにマークされる。たとえば、図7に示しているように、複数のフラグメント728を削除のためにマークされた複数のデータブロックに含めることができる。さらに、削除のためにマーク済みのブロック(削除ルートが関連付けられているルートを含む)によって指されているブロックの参照カウンタは、減分することができる。その後、減分によって参照カウンタがゼロに等しくなっているあらゆるブロックが削除のためにマークされ、削除のために既にマークされているブロックによって指されているブロックの参照カウンタを減分することができる。マーキングと減分の処理は、あらたに削除のためにマークできるブロックが無くなるまで繰り返すことができる。この時点で、読み取り専用段階が終了してもよく、削除のためにマークされたブロックをバックグラウンドで取り除くことができる。
前述のような典型的な削除処理は全てのポインタだけでなく、全てのブロックのメタデータも使用する。ポインタとブロックメタデータを全てのピア上で複製すること可能で、いくつかのブロックがもはや再構築可能ではない場合でも、ピア上に少なくとも1つのブロックフラグメントが存在する限り、削除を進めることができる。
複数のブロックは、複数のフラグメントとして保存できるので、ブロック参照カウンタは各フラグメントについて保存することができる。したがって、所与のブロックの各フラグメントは、ブロックの参照カウンタの値が同じでなければならない。参照カウンタは読み取り専用段階に関わっている複数のピア上で別個に計算することができる。削除が開始される前に、そのような各ピアは、フラグメントメタデータとポインタとに関して完全なSCCチェーンを有していなければならない。スーパーノード内の全てのピアが関わる必要はないが、何らかの最小の数のピアが読み取り専用段階を完了するように関わっていなければならない。計算された複数のカウンタは、後で、バックグラウンドで残りのピアに伝搬させてもよい。
カウンタ計算における冗長性によって、物理ストレージノードの障害が発生してもあらゆる削除の決定を存続されることができる。しかし、削除計算の中間結果は存続する必要はない。特定の典型的な実施形態では、任意の中間計算結果はストレージノード障害によって失われることがある。ストレージノードに障害が発生すると、読み取り専用段階にもはや関わることができないピアが多すぎる場合、計算全体が繰り返されることがある。しかし、各スーパーノード内の十分な数のピアが障害の影響を受けない場合、削除を依然として継続することができる。読み取り専用段階の終了時に、新しいカウンタ値が耐障害性を有するように設定され、全ての動作していないブロック(参照カウンタがゼロに等しいブロック)が物理ストレージからバックグラウンドで一掃される。たとえば、図7の行730内に図示しているように、動作していないブロックを一掃することができる。
ここで図8、9、および10A〜10Cを参照し、継続して図2、3、5、および6を参照すると、本原理の典型的な実装による2次ストレージシステム上のデータを管理する方法800とシステム200、600を図示している。当然、典型的な2次ストレージシステムの前述の機能の各々は、個別であれ、任意の組み合わせであれ、方法800とシステム200および600において実装可能である。したがって、本明細書において以下で説明する方法800およびシステム200と600内の特徴は典型例に過ぎず、前述の特徴は当業者によって理解されるように、本明細書で説明する教えを考慮して、方法とシステムの実装に追加することができる。
方法800は、ステップ801において、たとえば図6に関して前述したように、ハッシュ関数を複数のデータブロックの入力ストリームに任意採用で適用するステップを有していてもよい。たとえば、SHA−1ハッシュ関数を採用することができる。
任意採用で、ステップ802において、図6のブロック620に関して前述したように、複数のデータブロックを消失符号化することができる。
ステップ804で、たとえば図6に関して前述したように、複数のデータブロックは、ノードネットワーク内の複数の異なる物理ストレージノードに位置している異なるコンテナに分配して、複数のノード内の複数のデータコンテナの冗長な複数のチェーンを生成することができる。たとえば、分配するステップは、たとえばデータブロックA 604のような複数のデータブロックの1つの複数のフラグメントが異なる複数のストレージノードに保存されるように、消失符号化された複数のフラグメント622を異なる複数のデータコンテナ628に保存するステップを有していてもよい。たとえば、異なる複数のストレージノードは、スーパーノード508の下にある図5と6のノード514bと514d〜fに対応していてもよい。さらに、前述のように、複数のデータブロックの複数のフラグメントはストレージノードのストレージ媒体上で内容アドレス指定されていてもよい。さらに、内容アドレスの異なるプリフィックスを複数のストレージノードの異なる部分集合に関連付けてもよいことに注意すべきである。たとえば、図5と6とを参照して前述したように、ハッシュキープリフィックスを、各々が複数のストレージノードにまたがっていることもある、異なるスーパーノード506〜512に関連付けてもよい。さらに、スーパーノードの対応している複数のデータコンテナの複数のチェーンの各々が、前述のようにたとえばハッシュ値と信頼性レベル等のデータブロック情報を記述している同じメタデータを有していてもよい。さらに、メタデータは、前述のように複数のデータコンテナ内の複数のデータブロックの間の露出した複数のポインタを有していてもよい。
ステップ806で、アクティブなストレージノードのストレージノードネットワークへの追加が1つまたは2つ以上のストレージノードによって検出されてもよい。たとえば、1つまたは2つ以上のストレージノードの明示的な追加または削除が追加および/または削除を示している管理コマンドを受信することによってピアコンポーネントによって検出されてもよい。
ステップ808では、複数のコンテナの少なくとも1つのチェーンが、複数のアクティブなストレージノードの追加の検出に応答して、分割されてもよい。たとえば、図7の行702と710に関して前述したように、複数のコンテナの1つまたは2つ以上のチェーンが分割されてもよい。当然、分割するステップは、1つまたは2つ以上のデータコンテナ628を分割するステップおよび/または1つまたは2つ以上のデータコンテナ/synchrunチェーン636を分割するステップを有していてもよい。たとえば、複数のデータコンテナのチェーンを分割するステップは、複数のコンテナのチェーンの少なくとも1つのデータコンテナを分割するステップを有していてもよい。さらに、たとえば、追加された1つまたは2つ以上のノードに応答して、所望の冗長レベルの維持のために、またはロードバランシングを実行するために、メタデータをコンテナチェーンの分割中に参照してもよい。さらに、自動分割は、たとえば図7に関して前述したように、新しい複数のスーパーノードまたは複数のストレージノードの複数の部分集合を生成するように、複数の内容アドレスの少なくとも1つのプレフィックスを拡張するステップを有していてもよいことに注意すべきである。
ステップ810において、コンテナの少なくとも1つのチェーンのデータ分割部分の少なくとも一部分は、ノード障害に対するシステム堅牢性を増大させるように、1つのストレージノードから他のストレージノードに転送されてもよい。たとえば、図7に関して前述したように、複数のSCCのチェーンの複数のコンテナに保存されている複数のデータブロックフラグメントを分割して、他の複数のスーパーノードに分配してもよい。前述のように、異なる複数のスーパーノードが異なる複数のストレージノードコンポーネントを有していてもよく、そのため、1つのスーパーノードまたは複数のノードの部分集合から他のスーパーノードまたは複数のノードの部分集合への転送は、異なる複数のストレージノード間の転送を有していてもよい。前述のように、分割は、新しい複数のストレージノードの2次ストレージシステムへの追加に応答して実行されてもよい。したがって、新しい複数のスーパーノードの生成とそれらの間でのデータ分配とによって、データのストレージが分散し、1つまたは2つ以上のノード障害に対する堅牢性を実現するように、ネットワーク内の複数のストレージノードを効率的に使用することができる。異なる複数のストレージノード上の様々な冗長なデータによって、障害の際のデータ再構築が促進される。
ステップ812で、少なくとも1つのデータコンテナを他のデータコンテナに併合することができる。たとえば、図7に関して前述したように、特定の数のSCCを維持するように分割後、複数のデータコンテナを有している2つのsynchrun716と720とは、同様に複数のデータコンテナを有している2つのsynchrun718と722とにそれぞれ併合することができる。さらに、併合は、たとえば図7の行726、730、および732に関して前述したように、削除と再利用の後に実施することもできる。
方法800の任意の部分の実行中に、1つまたは2つ以上のデータサービスもステップ814で実行することができる。ステップ814を方法800の最後に示しているが、方法800の任意の他のステップの最中、任意の他の2つのステップの間、または任意の他のステップの後に実行することもできる。たとえば、ロードバランシングなどのデータサービスの実装を支援するように、本方法を実行することができる。図9に示しているように、データサービスの実行は、複数のデータコンテナチェーンの1つのストレージノードまたはスーパーノードコンポーネントから他のストレージノードまたはスーパーノードコンポーネントへの転送902を有していてもよい。時間の順序に従っている複数のピアチェーンの構成は複数のデータコンテナチェーンの転送を促進する。
ステップ904と908とにおいて、データ書き込みと読み出しとを実行することができる。たとえば、前述のように、書き込み中に、データのブロックを、ブロックが属しているハッシュキー空間に割り当てられているスーパーノードの複数のピアノ1つに経由させることができる。さらに、重複検出も書き込み時に実行することができる。読み出しについては、たとえば、前述のように、読み出しリクエストもブロックのハッシュキーが該当しているスーパーノードの複数のピアノ1つに経由させることができる。ブロックを読み取るステップは、ブロックメタデータを読み取るステップと、前述のように消失符号化スキームによってブロックの再構築に十分な数のフラグメントを得るように複数のフラグメント読み取り要求を他の複数のピアに転送するステップとを有することができる。
ステップ906では、複数のデータコンテナの複数のチェーンが複数のホールを有しているかどうかを決定することができる。複数のデータコンテナチェーン内の複数のホールの識別によって、たとえば、データの読み取り、データの可用性の判断、データ削除の実行、障害に応答したデータの再構築、および分散グローバル重複排除が促進される。たとえば、複数のホールの特定によって、コンテナに保存されている複数のデータフラグメントが利用不能であることが示される。その結果、ストレージサーバは、データの再構築時に、他のデータフラグメントを他のピアで探さなければならない。データの再構築は、たとえば、データの読み取りがきっかけとなってもよい。同様に、複数のホールの識別は、ユーザ定義冗長レベルがシステム上で維持されているかどうかのシステムテスト時に実行されてもよい。
ストレージサーバが複数のコンテナの複数のチェーンが複数のホールを有しているかどうかを判断できる一例を、スーパーノードの複数のピア上のsynchrunチェーンスキャンのさまざまな時間フレームを示している図10A〜10Cに示している。たとえば、図10Aにおいて、ストレージサーバはスーパーノード508に属している全てのピア上でsynchrun1002を同時にスキャンするように構成されていてもよい。図10Bでは、システムは、複数のデータブロックのストリームの時間の順序で次のsynchrun1008をスーパーノード508に属している全てのピア上で同時にスキャンしてホール1004を見つけ出すように先に移動してもよい。同様に、図10Cでは、システムは、複数のデータブロックのストリームの時間の順序で次のsynchrun1010をスーパーノード508に属している全てのピア上で同時にスキャンしてホール1006を見つけ出すように先に移動してもよい。たとえば、このようにしてノードとディスクとの障害に起因する複数のチェーンホールが検出できる。さらに、チェーンは前述のようにチェーンとデータ冗長性を使用して再構築できる。
図9に戻ると、前述のように、ステップ910でデータ可用性の判断を実行することができる。さらに、ストレージノード障害に応答したデータの再構築もステップ912で実行することができる。たとえば、前述のように、システムは複数のSCCチェーンを複数のホールを探すようにスキャンして、データ再構築を失われた各々のSCCに対するバックグラウンドジョブとしてスケジュールすることができる。さらに、再構築は前述のようにフラグメントメタデータおよび/またはコンテナメタデータを参照することによって実行することができる。
ステップ914で、データ削除を実行することができる。たとえば、データ削除は、前述のように、オンデマンドでおよび/または重複排除に関連して実行することができる。さらに、データ削除は、たとえば、参照カウンタを使用するステップと、指しているポインタのない任意のブロックを繰り返し削除するステップとを有することができる。たとえばフラグメントメタデータを参照することによって、複数のポインタを取得することができる。
ステップ916では、詳細に前述したように、分散グローバル重複排除を実行することができる。たとえば、前述のように、高速のおおよその重複排除を通常のブロックに対して実行することができるのに対して、信頼できる重複排除を保持ノードに対して実行することができる。さらに、重複排除を、データ書き込みの一部として、オンラインで実行することができる。
当然、図9に示している全てのサービスは任意採用であるが、好ましいシステムは図9に関して説明した全てのサービスを実行できる能力を有している。さらに、ステップ902と906とをステップ908〜916の前に実行するように示しているが、ステップ908〜916のいずれも、ステップ902と906の一方または両方を実行せずに実行することができる。
さらに、図2と3に戻ると、当然、システム200のバックエンドの複数のストレージノード上で動作している複数のストレージサーバは、図8と9を参照して前述したように任意の1つまたは2つ以上のステップを実行するように構成することができる。したがって、システム200のバックエンドの以下の説明は、例示のみであって、当然、前述の特徴の任意の1つまたは2つ以上を本明細書に含めることができる。
前述のように、システム200のバックエンド212は、物理ストレージノード218a〜218fのネットワークを有していてもよい。さらに、各ストレージノードはストレージ媒体とプロセッサと有していてもよく、ストレージ媒体は他の複数のストレージノードの複数のデータコンテナの複数のチェーンに関して冗長な複数のデータコンテナのチェーン内の複数のデータブロックのフラグメントを保存するように構成されていてもよい。たとえば、図6に関して前述のように、データブロック604、610、および616の複数のフラグメント622を、他のピア01:1〜01:3内に保存されている複数のコンテナの複数のチェーンについて冗長な、ピア01:0内の複数のデータコンテナ636のチェーン内に保存することができる。
さらに、各ストレージサーバ302は図8に関して前述したステップ806、808、および810を実行するように構成されていてもよい。さらに、各ストレージサーバは、図9に関して説明した任意のデータサービスを実行するように構成されていてもよい。さらに、前述のように、複数のデータコンテナの1つまたは2つ以上のチェーンは、複数のデータコンテナの他の複数のチェーンと同じメタデータを有していてもよい。メタデータは、ストレージノード内のデータの状態を記述していてもよい。また、前述のように、ストレージサーバは、ストレージサーバに関連付けられているストレージ媒体上の複数のコンテナの少なくとも1つのチェーンを自動的に分割するために、メタデータを参照してもよい。さらに、前述のように、メタデータは、複数のデータコンテナ内の複数のデータブロック間の露出している複数のポインタを有していてもよく、ストレージサーバは複数のポインタを使用してデータ削除を実行するように構成されていてもよい。
図6のステップ801に関して前述したように、複数のデータブロックとそれらの対応する複数のフラグメントとは、ハッシュ関数に基づいて内容アドレス指定されていてもよい。同様に、複数のハッシュキーの複数のプレフィックスは、異なる複数のスーパーノードまたは複数のストレージノードの複数の部分集合に関連付けられていてもよい。たとえば、図5に示しているように、プレフィックス「00」は部分集合ストレージノード514a〜514dに関連付けられていてもよく、プレフィックス「01」は部分集合ストレージノード514bおよび514d〜514fに関連付けられていてもよい等である。さらに、ステップ808に関連して前述したように、複数のコンテナのチェーンを自動分割するステップは、複数のプレフィックスの少なくとも1つを拡張して複数のストレージノードの少なくとも1つの追加の部分集合を生成するステップを有していてもよい。たとえば、前述のように、スーパーノードに割り当てられているプレフィクスが「01」の場合、スーパーノードは割り当てられているプレフィックスがそれぞれ「010」と「011」である2つのスーパーノードに分割することができる。さらに、新しいスーパーノードの各々は、新しいそして異なる複数のコンポーネントまたはピアの複数の集合またはそれらに割り当てられている複数のストレージノードの部分集合を有していてもよい。さらに、ステップ810に関して前述したように、ストレージサーバによって開始された転送は、複数のコンテナの1つまたは2つ以上のチェーンから分割されたデータの少なくとも一部を新しく生成されたまたは追加された複数のストレージノードの部分集合に分配するステップを有していてもよい。
ここで、図7と8とを参照しながら図11を参照すると、本原理の他の典型的な実装によって2次ストレージシステム上でデータを管理する方法1100を示している。当然、典型的な2次ストレージシステムと方法の前述の機能の各々は、個別であれ、任意の組み合わせであれ、方法1100において実装可能である。したがって、本明細書において以下で説明する方法1100の特徴は典型例に過ぎず、前述の特徴は当業者によって理解されるように、本明細書で説明する教えを考慮して、方法1100に追加することができる。
方法800と同様に、方法1100は、図8に関して前述したように、任意採用のステップ801と802を実行することによって開始されてもよい。さらに、図8を参照して前述したように、複数のデータブロックがノートネットワーク内の異なる複数のストレージノードの異なる複数のデータコンテナに分配され、複数のノード内の複数のデータコンテナの冗長な複数のチェーンを生成するステップ804を実行することができる。
ステップ1106では、1つまたは2つ以上のストレージサーバがストレージノードネットワーク内のアクティブな複数のストレージノードの数の変化を検出してもよい。アクティブな複数のノードの数の変化は、少なくとも1つのストレージノードのストレージノードネットワークへの追加および/またはノードのストレージネットワークからの削除が含まれていてもよい。前述のように、たとえば、ノードの追加や削除は、追加および/または削除を示している管理コマンドを受信することによってピアコンポーネントまたはその対応しているストレージサーバによって検出されてもよい。さらに、ノード障害は、pingを採用することによって、複数のピアコンポーネントまたはそれらに対応しているストレージサーバで検出可能であることに注意すべきである。たとえば、複数のピアコンポーネントは、互いにpingを行って数個のpingが失われたことを検出した後にノードで障害が発生したことを推定するように構成することができる。
ステップ1108では、ストレージサーバは、変化の検出に応答して、ストレージノードの1つに位置している少なくとも1つのデータコンテナを他のストレージノード内に位置している他のデータコンテナに自動的に併合するように構成されていてもよい。たとえば、ノードがネットワークに追加された場合、図7の列710と724に関して前述したように、複数のデータコンテナが併合されることがある。たとえば、コンテナ718は、コンテナ716との併合の前に異なるストレージノードを起源としていてもよい。
その代わりに、ノードがストレージシステムから取り除かれる場合、ステップ1106で複数のストレージサーバは異なる複数のストレージノードからの複数のデータコンテナを併合するように構成されてもよい。たとえば、ストレージサーバはノードが取り除かれることを示している管理コマンドを受け取ってもよい。ノードを実際に取り除く前に、複数のストレージサーバは取り除かれるノード内の複数のデータコンテナを残る複数のノード内のコンテナに併合するように構成されていてもよい。たとえば、図7の列702、710、および724に関連して前述した処理は、たとえばコンテナ718と720などの異なる複数のストレージノードからのコンテナをより大きな複数のsynchrunチェーンに併合するように、単純に逆にすることができる。併合を複数のコンテナの管理可能性を確実にするおよび/またはシステム性能を改善するように実行することができる。その後、前述のように、再分配または再バランシングを実施することができる。さらに、たとえば図8を参照して前述したように、方法1100の任意の点でステップ814を実行することができる。
また、本発明の典型的な方法とシステムとはシステムにおける管理ノードの追加/削除とノードの障害/回復とを区別するように構成されていてもよいことに注意すべきである。管理ノードの追加/削除は、システム内にあるべき複数のノードの管理リストに示されていてもよい。この区別は、自動システム管理において便利である。たとえば、ノードの管理リストに従ってシステムに接続すべきではない複数の外部のまたは不正なノードの検出に、この区別を採用することができる。たとえば、外部ノードがシステムに接続しようとしたときに、ノードの管理リストを採用することによって、接続を拒否したり、外部ノードを取り除くことができる。区別は、全てのノードがアクティブなシステムが正常な状態にある時のシステムの予測される未使用時容量の計算や、正常な状態の非正常状態からの区別にも利用することもできる。区別の他の用途も考えられる。
前述の典型的な方法とシステムとは、グローバル重複排除、動的拡張性、複数の冗長クラスのサポート、データの位置の探し出し、データの高速な読み取りと書き込み、ノードまたはディスク障害によるデータの再構築など2次ストレージシステム内での数個のデータサービスの効率的で効果的な提供を促進する。ネットワーク構成の変化に応答して分割、併合、および転送するように構成されている複数のデータコンテナの冗長な複数のチェーンに基づいている前述の典型的なデータ構成構造によってこれらのサービスの各々の分散2次ストレージ装置内での実装が可能になる。複数のチェーンコンテナ内の冗長性によって、データサービスの提供において耐障害性が実現される。たとえば、複数のチェーン内の複数の複製によってメタデータが保存されているため、障害時にデータが失われていてもデータ削除を進めることができる。さらに、冗長性によって、前述のように、効率的な分散データ再構築も可能になる。さらに、複数のデータコンテナ内の複数のデータブロックの保存の時間順序とコンテナメタデータとの両方によって、システムの状態の高速な推定とデータ再構築などの動作が可能になる。他のブロックを指している露出しているポインタを有しているデータブロックメタデータによって、分散耐障害データ削除の実装が可能になる。さらに、複数のチェーンコンテナ内の動的な性質によって、効果的な拡張性が実現される。たとえば、データサービスを提供するためにストレージ空間を完全に最適化し利用するように、ストレージノードネットワーク構成の変化に自動的に対応するように、複数のコンテナを分割、転送、および/または併合することができる。さらに、動的な性質によってデータの位置の容易な特定が可能になる。
(説明を意図し限定を意図していない)システムと方法との好ましい実施形態を説明したが、前述の教えの下で当業者は修正や変更を行うことができることに注意しなければならない。そのため、当然、添付の請求項によって概要が示されている本発明の範囲と精神に含まれており開示している特定の実施形態において変更を行うことができる。特許法で要求される詳細と具体性を伴って本発明の態様をこのように説明したが、特許状によって請求し保護されるように望むものを添付の請求項において説明している。
100 データブロック構成
102、104、106 ソース頂点
108 削除ルート
110、112、114、116 ブロック
202 アプリケーション層
204、214 API
206 フロントエンドシステム
208a〜208f アクセスノード
210 内部ネットワーク
212 バックエンドシステム
216 プロトコルドライバ
218a〜218f ストレージノード
302 ストレージサーバ
304、404 処理ユニット
306、406 ストレージ媒体
402 プロキシサーバ
500 固定プレフィックスネットワーク
502、504 オーバーレイノード
506〜512 スーパーノード
514a〜514f ストレージノード
516 スーパーノードコンポーネント
600、700 データ構成構造
602 データストリーム
604〜616 データブロック
618 圧縮
620 消失符号化
624、704、706、716、718、720、722、734、736、1002、1008 synchrun
626 ピアSCCチェーン
628、630、632、634 synchrunコンポーネントコンテナ(SCC)
636 データコンテナ/synchrunチェーン
702、710、724、726、730、732 行
708、728 フラグメント
712、714 スーパーノードSCCチェーン
1004、1006 ホール(穴)

Claims (20)

  1. 複数のデータブロックをノードネットワーク内の複数の異なる物理ストレージノード内に位置している異なる複数のデータコンテナに分配して、前記複数のノード内の前記複数のデータコンテナの冗長なチェーンを生成するステップと、
    アクティブな複数のストレージノードの前記ネットワークへの追加を検出するステップと、
    前記追加の検出に応答して、複数のコンテナの少なくとも1つのチェーンを自動的に分割するステップと、
    ノード障害に対するシステム堅牢性を強化するように、前記複数のコンテナの少なくとも1つのチェーンから分割されたデータの少なくとも一部を前記複数のストレージノードの1つから前記複数のストレージノードの他の1つに転送するステップとを有する2次ストレージシステム上でデータを管理する方法。
  2. 前記自動的に分割するステップは、少なくとも1つのデータコンテナを分割するステップを有し、前記データの少なくとも一部は、前記分割するステップ以前に、少なくとも1つのデータコンテナに保存されている、請求項1に記載の方法。
  3. 前記自動的に分割するステップは、前記複数のコンテナの少なくとも1つのチェーンから少なくとも1つのデータコンテナを分割するステップを有し、前記データの少なくとも一部は、前記分割するステップ以前に、少なくとも1つのデータコンテナに保存されている請求項1に記載の方法。
  4. 前記少なくとも1つのデータコンテナを他のデータコンテナと併合するステップをさらに有する請求項3に記載の方法。
  5. 複数のデータコンテナの前記複数のチェーンの少なくとも1つは、複数のデータコンテナの他の複数のチェーンと同じメタデータを有し、前記メタデータはデータブロック情報を記述している請求項1に記載の方法。
  6. 障害に応答して前記メタデータを使用してデータを再構築するステップをさらに有する請求項5に記載の方法。
  7. 前記メタデータは前記複数のデータコンテナ内のデータブロック間の複数のポインタを有する請求項5に記載の方法。
  8. 前記複数のポインタを使用してデータを消去するステップをさらに有する請求項7に記載の方法。
  9. 消失符号化された複数のフラグメントを生成するように、前記複数のデータブロックを消失符号化するステップをさらに有し、前記分配するステップは、消失符号化された複数のフラグメントを、前記複数のデータブロックの1つからの前記複数のフラグメントが異なる複数のストレージノードに保存されるように、前記異なる複数のデータコンテナに保存するステップを有する請求項1に記載の方法。
  10. 前記複数のデータブロックの少なくとも1つが前記2次ストレージシステムで使用可能かどうかを判断するために、前記複数のデータコンテナの複数の冗長なチェーンのいずれかが複数のホールを有しているかどうかを判断するステップをさらに有する請求項9に記載の方法。
  11. 複数の物理ストレージノードのネットワークを有する、2次ストレージシステムであって、
    各ストレージノードは、
    他の複数のストレージノード内の複数のデータコンテナの複数のチェーンについて冗長な複数のデータコンテナのチェーン内の複数のデータブロックの複数のフラグメントを保存するように構成されているストレージ媒体と、
    アクティブな複数のストレージノードの前記ネットワークへの追加を検出して、前記追加の検出に応答して前記ストレージ媒体上の複数のコンテナの少なくとも1つのチェーンを自動的に分割して、ノード障害に対するシステム堅牢性を強化するように、前記複数のコンテナの少なくとも1つのチェーンから分割されたデータの少なくとも一部を異なるストレージノードに転送するように構成されているストレージサーバとを有する2次ストレージシステム。
  12. 前記ストレージサーバは、データ読み取り、データ書き込み、データの可用性の判断、データ転送、分配されているグローバル複製排除の中の少なくとも1つを実行するようにさらに構成されている請求項11に記載の2次ストレージシステム。
  13. 複数のデータコンテナの前記複数のチェーンの少なくとも1つは、複数のデータコンテナの他のチェーンと同じメタデータを有し、前記メタデータはデータブロック情報を記述している請求項11に記載の2次ストレージシステム。
  14. 前記メタデータは前記複数のデータコンテナ内のデータブロック間の複数のポインタを有し、前記ストレージサーバは、前記複数のポインタを使用してデータ消去を実施するように構成されている請求項13に記載の2次ストレージシステム。
  15. 前記複数のデータブロックの前記複数のフラグメントは、ハッシュ関数に従って、前記ストレージ媒体上で内容アドレス指定されている請求項11に記載の2次ストレージシステム。
  16. 複数の内容アドレスの異なるプレフィックスは、複数のストレージノードの異なる複数の部分集合に関連付けられている請求項15に記載の2次ストレージシステム。
  17. 前記自動分割は、複数のストレージノードの少なくとも1つの追加の部分集合を生成するように前記複数のプレフィックスの少なくとも1つを拡張することを有する請求項16に記載の2次ストレージシステム。
  18. 前記転送は、前記複数のコンテナの少なくとも1つのチェーンから分割された前記データの少なくとも一部分を前記追加の部分集合に分配することを有する請求項17に記載の2次ストレージシステム。
  19. 複数のデータブロックを前記ノードネットワーク内の複数の異なる物理ストレージノード内に位置している異なる複数のデータコンテナに分配して、前記複数のノード内の前記複数のデータコンテナの冗長なチェーンを生成するステップと、
    前記ネットワーク内のアクティブな複数のストレージノードの数の変化を検出するステップと、
    前記複数のコンテナの管理可能性を保証するように、前記変化の検出に応答して、前記複数のストレージノードの1つに位置している少なくとも1つのデータコンテナを、異なるストレージノード内に位置している他のデータコンテナに自動的に併合するステップとを有する2次ストレージシステム上でデータを管理する方法。
  20. 前記アクティブなノードの数の前記変化は、少なくとも1つのストレージノードの前記ネットワークへの追加、少なくとも1つのストレージノードの前記ネットワークからの削除の少なくとも1つを有する請求項19に記載の方法。
JP2009195144A 2008-09-11 2009-08-26 拡張可能な2次ストレージシステムと方法 Active JP5539683B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US9599408P 2008-09-11 2008-09-11
US61/095,994 2008-09-11
US12/511,126 2009-07-29
US12/511,126 US7992037B2 (en) 2008-09-11 2009-07-29 Scalable secondary storage systems and methods

Publications (3)

Publication Number Publication Date
JP2010079886A true JP2010079886A (ja) 2010-04-08
JP2010079886A5 JP2010079886A5 (ja) 2012-08-09
JP5539683B2 JP5539683B2 (ja) 2014-07-02

Family

ID=41566013

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009195158A Expired - Fee Related JP5506290B2 (ja) 2008-09-11 2009-08-26 検索可能なブロックを用いた連想記憶システムおよびその方法
JP2009195144A Active JP5539683B2 (ja) 2008-09-11 2009-08-26 拡張可能な2次ストレージシステムと方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009195158A Expired - Fee Related JP5506290B2 (ja) 2008-09-11 2009-08-26 検索可能なブロックを用いた連想記憶システムおよびその方法

Country Status (5)

Country Link
US (1) US7992037B2 (ja)
EP (1) EP2164006A3 (ja)
JP (2) JP5506290B2 (ja)
CN (1) CN101676855B (ja)
CA (1) CA2676593C (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010257477A (ja) * 2010-06-21 2010-11-11 Hitachi Ltd 記憶制御システム及び同システムの制御方法
JP2011238179A (ja) * 2010-05-13 2011-11-24 Hitachi Solutions Ltd 検索方法、統合検索サーバ及びコンピュータプログラム
WO2012029256A1 (en) * 2010-08-31 2012-03-08 Nec Corporation Storage system
WO2012029258A1 (en) * 2010-08-31 2012-03-08 Nec Corporation Storage system
WO2012032727A1 (en) * 2010-09-09 2012-03-15 Nec Corporation Storage system
JP2012194989A (ja) * 2012-05-29 2012-10-11 Hitachi Solutions Ltd 検索方法、統合検索サーバ及びコンピュータプログラム
JP2013514560A (ja) * 2010-09-30 2013-04-25 日本電気株式会社 ストレージシステム
JP2013091182A (ja) * 2011-10-24 2013-05-16 Fuji Xerox Co Ltd 画像形成システム、画像形成装置及びプログラム
JP2013541083A (ja) * 2010-09-03 2013-11-07 シマンテック コーポレーション 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム及び方法
JP2016027496A (ja) * 2015-10-08 2016-02-18 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタシステムデータ処理方法及び装置
JP2016157368A (ja) * 2015-02-26 2016-09-01 日本電気株式会社 記憶システム、記憶方法、及び、プログラム
JP2017004513A (ja) * 2015-06-04 2017-01-05 華為技術有限公司Huawei Technologies Co.,Ltd. データ分配方法、データ記憶方法、関係する装置及びシステム
WO2017068617A1 (ja) * 2015-10-19 2017-04-27 株式会社日立製作所 ストレージシステム
JP2017142605A (ja) * 2016-02-09 2017-08-17 株式会社日立製作所 バックアップリストアシステム及びリストア方法
US10133640B2 (en) 2015-02-26 2018-11-20 Fujitsu Limited Storage apparatus and storage system

Families Citing this family (256)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10169229B2 (en) * 2012-06-05 2019-01-01 International Business Machines Corporation Protocols for expanding existing sites in a dispersed storage network
US8522073B2 (en) * 2009-02-03 2013-08-27 Bittorrent, Inc. Distributed storage of recoverable data
US8140491B2 (en) * 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US9537705B1 (en) * 2009-03-31 2017-01-03 EMC IP Holding Company LLC Global space reduction groups
US9626305B1 (en) * 2009-03-31 2017-04-18 EMC IP Holding Company LLC Complementary space reduction
US8656057B1 (en) 2009-04-01 2014-02-18 Emc Corporation Opportunistic restore
US8688779B2 (en) 2009-04-08 2014-04-01 Blackberry Limited Publishing location for a limited time
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8510275B2 (en) 2009-09-21 2013-08-13 Dell Products L.P. File aware block level deduplication
US8862559B2 (en) * 2009-10-06 2014-10-14 Dell Products L.P. Scalable mechanism for detection of commonality in a deduplicated data set
US8396899B2 (en) * 2009-11-23 2013-03-12 Dell Products L.P. Efficient segment detection for deduplication
US8407193B2 (en) * 2010-01-27 2013-03-26 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
US8732133B2 (en) * 2010-03-16 2014-05-20 Commvault Systems, Inc. Extensible data deduplication system and method
US8312237B2 (en) 2010-04-02 2012-11-13 Autonomy, Inc. Automated relocation of in-use multi-site protected data storage
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
US8397080B2 (en) 2010-07-29 2013-03-12 Industrial Technology Research Institute Scalable segment-based data de-duplication system and method for incremental backups
WO2012030383A1 (en) 2010-08-31 2012-03-08 Falconstor, Inc. Data deduplication
US8473778B2 (en) * 2010-09-08 2013-06-25 Microsoft Corporation Erasure coding immutable data
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589625B2 (en) * 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
CN102014150B (zh) * 2010-09-29 2013-12-11 厦门市美亚柏科信息股份有限公司 一种基于udp分布式小文件存储系统及其数据处理方法
US9400799B2 (en) * 2010-10-04 2016-07-26 Dell Products L.P. Data block migration
CN102467458B (zh) * 2010-11-05 2014-08-06 英业达股份有限公司 建立数据区块的索引方法
JP5620792B2 (ja) * 2010-11-08 2014-11-05 株式会社デジタル・メディア総合研究所 分散アーカイブシステム並びにデータアーカイブ装置及びデータ復元装置
JP5477927B2 (ja) 2011-01-28 2014-04-23 日本電気株式会社 ストレージシステム
US8825720B1 (en) * 2011-04-12 2014-09-02 Emc Corporation Scaling asynchronous reclamation of free space in de-duplicated multi-controller storage systems
EP2702502A4 (en) 2011-04-29 2015-06-03 Tata Consultancy Services Ltd ARCHIVING AND RECOVERY SYSTEM
CN108664555A (zh) * 2011-06-14 2018-10-16 慧与发展有限责任合伙企业 分布式文件系统中的去重复
US8732401B2 (en) * 2011-07-07 2014-05-20 Atlantis Computing, Inc. Method and apparatus for cache replacement using a catalog
US8447732B2 (en) 2011-08-02 2013-05-21 International Business Machines Corporation Deduplication in network storage with data residence compliance
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9665304B2 (en) 2011-09-07 2017-05-30 Nec Corporation Storage system with fast snapshot tree search
CN103019614B (zh) 2011-09-23 2015-11-25 阿里巴巴集团控股有限公司 分布式存储系统管理装置及方法
US8468138B1 (en) 2011-12-02 2013-06-18 International Business Machines Corporation Managing redundant immutable files using deduplication in storage clouds
US8676850B2 (en) 2012-04-06 2014-03-18 International Business Machines Corporation Prioritization mechanism for deletion of chunks of deduplicated data objects
CN103425435B (zh) * 2012-05-15 2016-01-20 深圳市腾讯计算机系统有限公司 磁盘存储方法及磁盘存储系统
EP2672387B1 (en) * 2012-06-04 2018-08-01 Amplidata NV A distributed object storage system
WO2014026355A1 (en) * 2012-08-16 2014-02-20 Empire Technology Development Llc Storing encoded data files on multiple file servers
US8769105B2 (en) 2012-09-14 2014-07-01 Peaxy, Inc. Software-defined network attachable storage system and method
US9336223B2 (en) 2012-09-24 2016-05-10 International Business Machines Corporation Selective erasure of expired files or extents in deduplicating virtual media for efficient file reclamation
CN103051676A (zh) * 2012-11-26 2013-04-17 浪潮电子信息产业股份有限公司 一种分布式数据存储管理方法
US9069472B2 (en) 2012-12-21 2015-06-30 Atlantis Computing, Inc. Method for dispersing and collating I/O's from virtual machines for parallelization of I/O access and redundancy of storing virtual machine data
US9277010B2 (en) 2012-12-21 2016-03-01 Atlantis Computing, Inc. Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment
US20140214775A1 (en) * 2013-01-29 2014-07-31 Futurewei Technologies, Inc. Scalable data deduplication
US9471590B2 (en) 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
US9372865B2 (en) 2013-02-12 2016-06-21 Atlantis Computing, Inc. Deduplication metadata access in deduplication file system
US9250946B2 (en) 2013-02-12 2016-02-02 Atlantis Computing, Inc. Efficient provisioning of cloned virtual machine images using deduplication metadata
US9361302B1 (en) * 2013-03-04 2016-06-07 Emc Corporation Uniform logic replication for DDFS
US9195673B2 (en) * 2013-03-15 2015-11-24 International Business Machines Corporation Scalable graph modeling of metadata for deduplicated storage systems
CN105324765B (zh) 2013-05-16 2019-11-08 慧与发展有限责任合伙企业 选择用于去重复数据的存储区
CN105359107B (zh) 2013-05-16 2019-01-08 慧与发展有限责任合伙企业 报告针对分布式对象取回的数据的降级状态
CN105339929B (zh) 2013-05-16 2019-12-03 慧与发展有限责任合伙企业 选择用于取消重复数据的存储
US9501360B2 (en) * 2013-07-01 2016-11-22 International Business Machines Corporation Rebuilding data while reading data in a dispersed storage network
US9928248B2 (en) 2013-07-08 2018-03-27 International Business Machines Corporation Self-healing by hash-based deduplication
CN103401945B (zh) * 2013-08-14 2016-08-10 青岛大学 一种服务组合动态重构方法
CN103401944B (zh) * 2013-08-14 2016-04-06 青岛大学 一种服务组合动态重构系统
US9298386B2 (en) 2013-08-23 2016-03-29 Globalfoundries Inc. System and method for improved placement of blocks in a deduplication-erasure code environment
US9336076B2 (en) 2013-08-23 2016-05-10 Globalfoundries Inc. System and method for controlling a redundancy parity encoding amount based on deduplication indications of activity
CN104462124B (zh) * 2013-09-22 2018-04-06 中国电信股份有限公司 基于线性哈希表的数据存储平台组织方法和数据存储平台
EP2863566B1 (en) 2013-10-18 2020-09-02 Université de Nantes Method and apparatus for reconstructing a data block
US10545918B2 (en) 2013-11-22 2020-01-28 Orbis Technologies, Inc. Systems and computer implemented methods for semantic data compression
KR102238590B1 (ko) * 2013-11-29 2021-04-09 삼성전자주식회사 데이터 패킷 전송의 인증 및 검증 방법, 및 상기 방법을 수행하는 장치들
US9495373B2 (en) 2013-12-06 2016-11-15 International Business Machines Corporation File versions within content addressable storage
US9483481B2 (en) 2013-12-06 2016-11-01 International Business Machines Corporation Files having unallocated portions within content addressable storage
US9684666B1 (en) 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
US9679012B1 (en) 2014-02-28 2017-06-13 Pivotal Software, Inc. Parallel streaming of external data
US9684671B1 (en) 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
US9886457B2 (en) * 2014-03-10 2018-02-06 International Business Machines Corporation Deduplicated data processing hierarchical rate control in a data deduplication system
US10055352B2 (en) 2014-03-11 2018-08-21 Amazon Technologies, Inc. Page cache write logging at block-based storage
US9600203B2 (en) * 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
US9612952B2 (en) 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
CN106471461B (zh) * 2014-06-04 2020-10-30 净睿存储股份有限公司 自动重新配置存储装置存储器拓扑
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US10242020B2 (en) 2014-06-17 2019-03-26 International Business Machines Corporation Placement of data fragments generated by an erasure code in distributed computational devices based on a deduplication factor
US9613078B2 (en) 2014-06-26 2017-04-04 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
WO2015200686A1 (en) * 2014-06-26 2015-12-30 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9823969B2 (en) 2014-09-02 2017-11-21 Netapp, Inc. Hierarchical wide spreading of distributed storage
US20160062832A1 (en) 2014-09-02 2016-03-03 Netapp. Inc. Wide spreading data storage architecture
US9767104B2 (en) 2014-09-02 2017-09-19 Netapp, Inc. File system for efficient object fragment access
WO2016043757A1 (en) * 2014-09-18 2016-03-24 Hewlett Packard Enterprise Development Lp Data to be backed up in a backup system
WO2016048263A1 (en) 2014-09-22 2016-03-31 Hewlett Packard Enterprise Development Lp Identification of content-defined chunk boundaries
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US10042848B1 (en) * 2014-12-19 2018-08-07 Amazon Technologies, Inc. Sparse index-based storage, retrieval, and management of stored data
US9959274B2 (en) * 2014-12-19 2018-05-01 Amazon Technologies, Inc. Volume-level redundancy coding techniques for sequential transfer optimized storage devices
US20180095891A1 (en) * 2014-12-31 2018-04-05 International Business Machines Corporation Purpose-driven division between logical and physical storage allocation
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10037336B1 (en) 2015-03-27 2018-07-31 EMC IP Holding Company LLC Performing block deduplication using block sequence classifications
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
CN104794015B (zh) * 2015-04-16 2017-08-18 华中科技大学 一种实时流计算流速感知弹性执行容错系统
US9431061B1 (en) 2015-04-24 2016-08-30 Netapp, Inc. Data write deferral during hostile events
US9817715B2 (en) 2015-04-24 2017-11-14 Netapp, Inc. Resiliency fragment tiering
US20160328162A1 (en) 2015-05-07 2016-11-10 Pure Storage, Inc. Logical arrays running on physical hardware where reserve physical capacity is available
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10296219B2 (en) 2015-05-28 2019-05-21 Vmware, Inc. Data deduplication in a block-based storage system
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10001944B2 (en) * 2015-08-28 2018-06-19 Qualcomm Incorporated Systems and methods for data organization in storage systems using large erasure codes
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
CN106503010B (zh) * 2015-09-07 2019-11-26 北京国双科技有限公司 一种数据库更改写入分区的方法及装置
US10120893B1 (en) * 2015-09-17 2018-11-06 Amazon Technologies, Inc. Storing data to content-addressable storage
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
KR20170048721A (ko) * 2015-10-27 2017-05-10 삼성에스디에스 주식회사 분산 처리를 위한 대용량 파일의 블록화 방법 및 그 장치
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10379742B2 (en) 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
TW201734750A (zh) 2016-01-15 2017-10-01 飛康國際股份有限公司 包含固態硬碟儲存裝置及類似物的重複資料刪除快取記憶體
US10514984B2 (en) 2016-02-26 2019-12-24 Netapp, Inc. Risk based rebuild of data objects in an erasure coded storage system
US10055317B2 (en) 2016-03-22 2018-08-21 Netapp, Inc. Deferred, bulk maintenance in a distributed storage system
US9841921B2 (en) * 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
KR102589259B1 (ko) * 2016-06-20 2023-10-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10547681B2 (en) 2016-06-30 2020-01-28 Purdue Research Foundation Functional caching in erasure coded storage
US9946463B2 (en) 2016-07-12 2018-04-17 Western Digital Technologies, Inc. Compression of indirection tables
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10459652B2 (en) * 2016-07-27 2019-10-29 Pure Storage, Inc. Evacuating blades in a storage array that includes a plurality of blades
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9959049B1 (en) * 2016-09-29 2018-05-01 EMC IP Holding Company LLC Aggregated background processing in a data storage system to improve system resource utilization
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
CN108073521B (zh) * 2016-11-11 2021-10-08 深圳市创梦天地科技有限公司 一种数据去重的方法和系统
CN106648858A (zh) * 2016-11-29 2017-05-10 深圳市捷顺科技实业股份有限公司 一种c#接口数据交互管理系统
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
CN106775497A (zh) * 2017-01-19 2017-05-31 郑志超 基于区块链的分布式存储方法及设备
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
CN107040582B (zh) * 2017-02-17 2020-08-14 创新先进技术有限公司 一种数据处理方法及装置
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10664442B1 (en) * 2017-07-14 2020-05-26 EMC IP Holding Company LLC Method and system for data consistency verification in a storage system
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10855445B2 (en) * 2018-03-01 2020-12-01 Intuit, Inc. Summary chains in distributed systems
CN108572845B (zh) * 2018-03-15 2022-05-31 华为技术有限公司 分布式微服务集群的升级方法及相关系统
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11341102B1 (en) 2018-09-06 2022-05-24 Side, Inc. Multi-tier blockchain-based system and method for document transformation and accountability
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11481159B2 (en) * 2019-08-05 2022-10-25 Visa International Service Association System, method, and computer program product for generating a data storage server distribution pattern
US11347553B2 (en) * 2019-08-27 2022-05-31 EMC IP Holding Company LLC Data distribution for fast recovery in cluster-based storage systems
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11416058B2 (en) * 2020-10-28 2022-08-16 Western Digital Technologies, Inc. Efficient data storage usage associated with ungraceful shutdown
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
CN112687335A (zh) * 2021-01-08 2021-04-20 北京果壳生物科技有限公司 基于链式搜索算法的母系mt单倍群鉴定方法、装置及设备
CN113114526B (zh) * 2021-03-12 2022-09-30 广州技象科技有限公司 一种基于分包防干扰的数据传输方法及装置
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142751A (ja) * 1999-11-12 2001-05-25 Hitachi Ltd データベース管理方法および装置並びにデータベース管理プログラムを記録した記憶媒体
JP2003524243A (ja) * 2000-02-18 2003-08-12 アヴァマー テクノロジーズ インコーポレイテッド 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法
JP2005327291A (ja) * 2004-05-14 2005-11-24 Microsoft Corp 部分的複製を使用する、Webコンテンツの分散型ホスティング
JP2007073003A (ja) * 2005-09-09 2007-03-22 Canon Inc データ保全装置及びその方法及びそのプログラム記録媒体
US20070214183A1 (en) * 2006-03-08 2007-09-13 Omneon Video Networks Methods for dynamic partitioning of a redundant data fabric
WO2008030694A1 (en) * 2006-09-06 2008-03-13 Microsoft Corporation Dynamic fragment mapping
JP2008181213A (ja) * 2007-01-23 2008-08-07 Fuji Xerox Co Ltd 情報管理システム、情報管理装置およびプログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485474A (en) * 1988-02-25 1996-01-16 The President And Fellows Of Harvard College Scheme for information dispersal and reconstruction
US20020178162A1 (en) * 2001-01-29 2002-11-28 Ulrich Thomas R. Integrated distributed file system with variable parity groups
US7870218B2 (en) * 2003-04-09 2011-01-11 Nec Laboratories America, Inc. Peer-to-peer system and method with improved utilization
US7526672B2 (en) * 2004-02-25 2009-04-28 Microsoft Corporation Mutual exclusion techniques in a dynamic peer-to-peer environment
US7213022B2 (en) * 2004-04-29 2007-05-01 Filenet Corporation Enterprise content management network-attached system
US7203871B2 (en) * 2004-06-03 2007-04-10 Cisco Technology, Inc. Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes
US7734643B1 (en) * 2004-06-30 2010-06-08 Oracle America, Inc. Method for distributed storage of data
US7552356B1 (en) * 2004-06-30 2009-06-23 Sun Microsystems, Inc. Distributed data storage system for fixed content
US8725705B2 (en) * 2004-09-15 2014-05-13 International Business Machines Corporation Systems and methods for searching of storage data with reduced bandwidth requirements
US7590632B1 (en) * 2004-10-12 2009-09-15 Sun Microsystems, Inc. Method for serializer maintenance and coalescing
FR2878673B1 (fr) * 2004-11-26 2007-02-09 Univ Picardie Jules Verne Etab Systeme et procede de sauvegarde distribuee perenne
JP2008544397A (ja) * 2005-06-23 2008-12-04 イーエムシー コーポレイション ファイルシステム内へのコンテンツの格納を管理する方法および装置
US8880799B2 (en) * 2005-09-30 2014-11-04 Cleversafe, Inc. Rebuilding data on a dispersed storage network
JP2009522656A (ja) * 2006-01-03 2009-06-11 イーエムシー コーポレイション 記憶システムを再構成するための方法及び装置
US20070177739A1 (en) * 2006-01-27 2007-08-02 Nec Laboratories America, Inc. Method and Apparatus for Distributed Data Replication
US7743023B2 (en) * 2006-02-01 2010-06-22 Microsoft Corporation Scalable file replication and web-based access
US9047310B2 (en) * 2006-02-22 2015-06-02 Microsoft Technology Licensing, Llc Reliable, efficient peer-to-peer storage
EP2016512A2 (en) * 2006-03-28 2009-01-21 EMC Corporation Methods and apparatus for transferring content from a storage system
US8140625B2 (en) * 2007-02-20 2012-03-20 Nec Laboratories America, Inc. Method for operating a fixed prefix peer to peer network

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142751A (ja) * 1999-11-12 2001-05-25 Hitachi Ltd データベース管理方法および装置並びにデータベース管理プログラムを記録した記憶媒体
JP2003524243A (ja) * 2000-02-18 2003-08-12 アヴァマー テクノロジーズ インコーポレイテッド 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法
JP2005327291A (ja) * 2004-05-14 2005-11-24 Microsoft Corp 部分的複製を使用する、Webコンテンツの分散型ホスティング
JP2007073003A (ja) * 2005-09-09 2007-03-22 Canon Inc データ保全装置及びその方法及びそのプログラム記録媒体
US20070214183A1 (en) * 2006-03-08 2007-09-13 Omneon Video Networks Methods for dynamic partitioning of a redundant data fabric
WO2008030694A1 (en) * 2006-09-06 2008-03-13 Microsoft Corporation Dynamic fragment mapping
JP2008181213A (ja) * 2007-01-23 2008-08-07 Fuji Xerox Co Ltd 情報管理システム、情報管理装置およびプログラム

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011238179A (ja) * 2010-05-13 2011-11-24 Hitachi Solutions Ltd 検索方法、統合検索サーバ及びコンピュータプログラム
JP2010257477A (ja) * 2010-06-21 2010-11-11 Hitachi Ltd 記憶制御システム及び同システムの制御方法
JP2013514558A (ja) * 2010-08-31 2013-04-25 日本電気株式会社 ストレージシステム
WO2012029258A1 (en) * 2010-08-31 2012-03-08 Nec Corporation Storage system
JP2013514557A (ja) * 2010-08-31 2013-04-25 日本電気株式会社 ストレージシステム
US9201891B2 (en) 2010-08-31 2015-12-01 Nec Corporation Storage system
WO2012029256A1 (en) * 2010-08-31 2012-03-08 Nec Corporation Storage system
US9110839B2 (en) 2010-08-31 2015-08-18 Nec Corporation Storage system for storing target data and address data
JP2013541083A (ja) * 2010-09-03 2013-11-07 シマンテック コーポレーション 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム及び方法
WO2012032727A1 (en) * 2010-09-09 2012-03-15 Nec Corporation Storage system
JP2013514561A (ja) * 2010-09-09 2013-04-25 日本電気株式会社 ストレージシステム
US8924663B2 (en) 2010-09-09 2014-12-30 Nec Corporation Storage system, computer-readable medium, and data management method having a duplicate storage elimination function
US9256368B2 (en) 2010-09-30 2016-02-09 Nec Corporation System and method for deduplication of distributed data
JP2013514560A (ja) * 2010-09-30 2013-04-25 日本電気株式会社 ストレージシステム
JP2013091182A (ja) * 2011-10-24 2013-05-16 Fuji Xerox Co Ltd 画像形成システム、画像形成装置及びプログラム
JP2012194989A (ja) * 2012-05-29 2012-10-11 Hitachi Solutions Ltd 検索方法、統合検索サーバ及びコンピュータプログラム
JP2016157368A (ja) * 2015-02-26 2016-09-01 日本電気株式会社 記憶システム、記憶方法、及び、プログラム
US10133640B2 (en) 2015-02-26 2018-11-20 Fujitsu Limited Storage apparatus and storage system
JP2017004513A (ja) * 2015-06-04 2017-01-05 華為技術有限公司Huawei Technologies Co.,Ltd. データ分配方法、データ記憶方法、関係する装置及びシステム
JP2016027496A (ja) * 2015-10-08 2016-02-18 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタシステムデータ処理方法及び装置
WO2017068617A1 (ja) * 2015-10-19 2017-04-27 株式会社日立製作所 ストレージシステム
JP2017142605A (ja) * 2016-02-09 2017-08-17 株式会社日立製作所 バックアップリストアシステム及びリストア方法

Also Published As

Publication number Publication date
JP5539683B2 (ja) 2014-07-02
CN101676855A (zh) 2010-03-24
JP2010157204A (ja) 2010-07-15
JP5506290B2 (ja) 2014-05-28
CA2676593C (en) 2015-04-07
EP2164006A2 (en) 2010-03-17
EP2164006A3 (en) 2014-06-11
US20100064166A1 (en) 2010-03-11
CN101676855B (zh) 2014-04-02
CA2676593A1 (en) 2010-03-11
US7992037B2 (en) 2011-08-02

Similar Documents

Publication Publication Date Title
JP5539683B2 (ja) 拡張可能な2次ストレージシステムと方法
US11677687B2 (en) Switching between fault response models in a storage system
US11687423B2 (en) Prioritizing highly performant storage systems for servicing a synchronously replicated dataset
US12008404B2 (en) Executing a big data analytics pipeline using shared storage resources
US10733053B1 (en) Disaster recovery for high-bandwidth distributed archives
US20220050858A1 (en) Snapshot-Based Hydration Of A Cloud-Based Storage System
US11704044B2 (en) Modifying a cloned image of replica data
EP3485401B1 (en) Distributed deletion of a file and directory hierarchy
US11966841B2 (en) Search acceleration for artificial intelligence
CN110720088A (zh) 集成到大容量存储设备的可访问快速耐久存储
US11797211B2 (en) Expanding data structures in a storage system
US11119656B2 (en) Reducing data distribution inefficiencies
US11144638B1 (en) Method for storage system detection and alerting on potential malicious action
US20240184472A1 (en) Optimized read request processing for relocated data

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120625

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120625

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

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: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5539683

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140501

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350