JP2021099814A - ストレージクラスター - Google Patents

ストレージクラスター Download PDF

Info

Publication number
JP2021099814A
JP2021099814A JP2021014529A JP2021014529A JP2021099814A JP 2021099814 A JP2021099814 A JP 2021099814A JP 2021014529 A JP2021014529 A JP 2021014529A JP 2021014529 A JP2021014529 A JP 2021014529A JP 2021099814 A JP2021099814 A JP 2021099814A
Authority
JP
Japan
Prior art keywords
storage nodes
storage
data
user data
volatile solid
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
JP2021014529A
Other languages
English (en)
Other versions
JP7135129B2 (ja
Inventor
ジョン ヘイズ
Hayes John
ジョン ヘイズ
ジョン コルグローヴ
Colgrove John
ジョン コルグローヴ
ロバート リー
Robert Lee
ロバート リー
ピーター ヴァイゲル
Vajgel Peter
ピーター ヴァイゲル
パール ボテス
Botes Par
パール ボテス
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.)
Pure Storage Inc
Original Assignee
Pure Storage 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 Pure Storage Inc filed Critical Pure Storage Inc
Publication of JP2021099814A publication Critical patent/JP2021099814A/ja
Application granted granted Critical
Publication of JP7135129B2 publication Critical patent/JP7135129B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)
  • Hardware Redundancy (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)

Abstract

【課題】単一シャーシ内の複数のストレージノードを提供する。【解決手段】単一シャーシ内の複数のストレージノードは、ストレージクラスターとして一緒に通信する。複数のストレージノードの各々は、ユーザデータストレージとして不揮発性ソリッドステートメモリを含む。複数のストレージノードがユーザデータにアクセスするための方法は、複数のストレージノードのうちの2つが失われても、複数のストレージノードが、消去コードを使用してユーザデータを読み取る能力を維持するように、複数のストレージノード全体にわたりユーザデータ及びユーザデータに関連したメタデータを配布する。【選択図】図6

Description

スピンメディアとして全体的に知られている従来のハードディスクドライブ(HDD)や書き込み可能なCD(コンパクトディスク)や書き込み可能なDVD(デジタル多様性ディスク)ドライブ、及びテープドライブを増強するか又はそれに置き換えて大量のデータを記憶するために、現在、フラッシュのようなソリッドステートメモリがソリッドステートドライブ(SSD)に使用されている。フラッシュ及び他のソリッドステートメモリは、スピンメディアとは異なる特性を有する。又、互換性の理由で多数のソリッドステートドライブがハードディスクドライブの規格に適合するように設計されるが、これは、フラッシュ及び他のソリッドステートメモリの特徴の向上を与えたり又はその独特の観点の利点を取り入れたりすることを困難にしている。
このような状況の中で実施形態が生成される。
ある実施形態では、単一シャーシにおける複数のストレージノードが提供される。単一シャーシにおける複数のストレージノードは、ストレージクラスターとして一緒に通信するように構成される。複数のストレージノードの各々は、ユーザデータストレージとして不揮発性ソリッドステートメモリを含む。複数のストレージノードは、ユーザデータ及びユーザデータに関連したメタデータを複数のストレージノード全体にわたって配布して、複数のストレージノードのうちの2つが失われても、複数のストレージノードが消去コードを使用してユーザデータを読み取る能力を維持するように構成される。シャーシは、配電バス、高速通信バス、並びにそれら配電及び通信バスを使用する1つ以上のストレージノードを設置する能力を含む。更に、不揮発性ソリッドステートメモリを有する複数のストレージノードにおいてユーザデータにアクセスするための方法も提供される。
ここに述べる実施形態の他の観点及び効果は、それら実施形態の原理を一例として示す添付図面を参照した以下の詳細な説明から明らかとなるであろう。
ここに述べる実施形態及びその効果は、添付図面に関連した以下の説明を参照することにより最も良く理解されよう。これらの図面は、ここに述べる実施形態に対して、ここに述べる実施形態の精神及び範囲から逸脱せずに当業者によりなされる形態及び細部の変更を何ら限定するものではない。
ある実施形態により、複数のストレージノードと、ネットワーク取り付け型ストレージを形成するために各ストレージノードに結合された内部ストレージとを伴うストレージクラスターの斜視図である。 ある実施形態により、図1のストレージクラスターの1つ以上をストレージリソースとして使用できる企業用コンピューティングシステムのシステム図である。 ある実施形態により、図1のストレージクラスターに使用するのに適した複数のストレージノード及び異なる能力を伴う不揮発性ソリッドステートストレージを示す図である。 ある実施形態により、複数のストレージノードを結合する相互接続スイッチを示すブロック図である。 ある実施形態により、ストレージノードのコンテンツと、不揮発性ソリッドステートストレージユニットの1つのコンテンツとを示す多レベルブロック図である。 ある実施形態により、ストレージクラスター、ストレージノード及び/又は不揮発性ソリッドステートストレージの実施形態において又は実施形態により実施できるストレージクラスターの動作方法のフローチャートである。 ここに述べる実施形態を具現化する規範的なコンピューティング装置を示す図である。
以下の実施形態は、1つ以上のユーザ又はクライアントシステム或いは他の外部ソースから発生されるユーザデータのようなユーザデータを記憶するストレージクラスターについて述べる。このストレージクラスターは、消去コードと、メタデータの冗長コピーとを使用して、シャーシ内に収容されたストレージノードにわたりユーザデータを配布する。消去コードとは、ディスク、ストレージノード又は地理的位置のような1組の異なる位置にわたりデータが記憶されるデータ保護又は再構成の方法を指す。フラッシュメモリは、実施形態と一体化される一形式のソリッドステートメモリであるが、実施形態は、他の形式のソリッドステートメモリ、又は非ソリッドステートメモリを含む他のストレージ媒体へ拡張することができる。ストレージ位置及びワークロードの制御は、クラスター化されたピア・ツー・ピアシステムにおけるストレージ位置にわたって分散される。種々のストレージノード間の通信を仲裁し、ストレージノードが利用できなくなったときを検出し、そして種々のストレージノードにわたってI/O(入力及び出力)のバランスを取るようなタスクは、全て、分散ベースで取り扱われる。データは、ある実施形態では、データの回復をサポートするデータフラグメント又はストライプで複数のストレージノードにわたって広げられ又は配布される。入力及び出力パターンとは独立してクラスター内でデータの所有権を再指定することができる。以下に詳細に述べるこのアーキテクチャーは、システムが動作したまま、クラスター内のストレージノードがフェイルするのを許す。というのは、データは、他のストレージノードから再構成することができ、従って、入力及び出力動作に利用可能に保たれるからである。種々の実施形態では、ストレージノードは、クラスターノード、ブレード又はサーバーとも称される。
ストレージクラスターは、シャーシ、即ち1つ以上のストレージノードを収容するエンクロージャ内に収容される。各ストレージノードに電力を供給するメカニズム、例えば、配電バス、及び通信メカニズム、例えば、ストレージノード間の通信を可能にする通信バスは、シャーシ内に含まれる。ストレージクラスターは、ある実施形態によれば、1つの位置において独立システムとして動作することができる。1つの実施形態では、シャーシは、独立してイネーブル又はディスエイブルされる配電及び通信バスの両方の、少なくとも2つのインスタンスを収容する。内部通信バスは、イーサネット(登録商標)表バスであるが、ペリフェラル・コンポーネント・インターコネクト(PCI)エクスプレス、インフィニバンド、等の他の技術も、等しく適当である。シャーシは、複数のシャーシ間の直接的通信又はスイッチを通しての通信、及びクライアントシステムとの通信を可能にするために外部通信バスのポートを形成する。外部通信は、イーサネット、インフィニバンド、ファイバーチャンネル、等の技術を使用する。ある実施形態では、外部通信バスは、シャーシ間及びクライアント通信に対して異なる通信バス技術を使用する。シャーシ内又はシャーシ間にスイッチが配備されている場合には、そのスイッチは、複数のプロトコル又は技術の間を変換するものとして働く。複数のシャーシがストレージクラスターを画成するように接続されるとき、ストレージクラスターは、独占的インターフェイス又は標準的インターフェイス、例えば、ネットワークファイルシステム(NFS)、共通インターネットファイルシステム(CIFS)、小型コンピュータシステムインターフェイス(SCSI)又はハイパーテキスト転送プロトコル(HTTP)を使用して、クライアントによりアクセスされる。クライアントプロトコルからの変換は、スイッチ、シャーシ外部通信バス、又は各ストレージノード内で行われる。

各ストレージノードは、1つ以上のストレージサーバーであり、そして各ストレージサーバーは、1つ以上の不揮発性ソリッドステートメモリユニットに接続され、これは、ストレージユニットとも称される。ある実施形態は、各ストレージノード内及び1から8の不揮発性ソリッドステートメモリユニット間に単一のストレージサーバー含むが、この一例は、これに限定されるものではない。ストレージサーバーは、内部通信バスのためのプロセッサ、ダイナミックランダムアクセスメモリ(DRAM)及びインターフェイスと、各電源バスのための配電手段とを含む。ストレージノードの内部では、インターフェイス及びストレージユニットが通信バスを共有し、例えば、ある実施形態では、PCIエクスプレスを共有する。不揮発性ソリッドステートメモリユニットは、ストレージノード通信バスを通して内部通信バスインターフェイスに直接的にアクセスするか、又はバスインターフェイスにアクセスすることをストレージノードに要求する。不揮発性ソリッドステートメモリユニットは、埋め込み型中央処理ユニット(CPU)、ソリッドステートストレージコントローラ、及びある実施形態では、例えば、2−32テラバイト(TB)の大型のソリッドステート大量ストレージを収容する。不揮発性ソリッドステートメモリユニットには、DRAMのような埋め込み型揮発性ストレージ媒体、及びエネルギー貯蔵器が含まれる。ある実施形態では、エネルギー貯蔵器は、停電の場合にDRAMコンテンツのサブセットを安定なストレージ媒体に転送できるようにするキャパシタ、スーパーキャパシタ又はバッテリである。ある実施形態では、不揮発性ソリッドステートメモリユニットは、ストレージクラスメモリで構成され、例えば、DRAMに取って代わり且つ省電力維持装置を可能にする相変化又は磁気抵抗性ランダムアクセスメモリ(MRAM)で構成される。
ストレージノード及び不揮発性ソリッドステートストレージの多数の特徴の1つは、ストレージクラスターにおいてデータを先見的に再構築する能力である。ストレージノード及び不揮発性ソリッドステートストレージは、そのストレージノード又は不揮発性ソリッドステートストレージに関するデータを読み取る試みがあるかどうかとは独立して、ストレージクラスターのストレージノード又は不揮発性ソリッドステートストレージに到達できないときを決定することができる。ストレージノード及び不揮発性ソリッドステートストレージは、次いで、少なくとも部分的に新しい位置でデータを回復し且つ再構築するように協働する。これは、ストレージクラスターを使用するクライアントシステムから開始される読み取りアクセスのためにデータが必要になるまで待機することなくシステムがデータを再構築するという点で先見的再構築を構成する。ストレージメモリ及びその動作のこれら及び更なる詳細を以下に述べる。
図1は、ある実施形態により、ネットワーク取り付け型ストレージ又はストレージエリアネットワークを形成するために、複数のストレージノード150、及び各ストレージノードに結合された内部ソリッドステートメモリを伴うストレージクラスター160の斜視図である。ネットワーク取り付け型ストレージ、ストレージエリアネットワーク、ストレージクラスター、又は他のストレージメモリは、物理的コンポーネント及びそれにより与えられる多量のストレージメモリの両方の、柔軟で且つ再構成可能な構成において、1つ以上のストレージノード150を各々有する1つ以上のストレージクラスター160を含むことができる。ストレージクラスター160は、ラックに適合するように設計され、そしてストレージメモリについて述べるように、1つ以上のラックをセットアップしそしてポピュレートすることができる。ストレージクラスター160は、複数のスロット142をもつシャーシ138を有する。シャーシ138は、ハウジング、エンクロージャ又はラックユニットとも称される。ある実施形態では、シャーシ138は、14個のスロット142を有するが、他の数のスロットも容易に考えられる。例えば、ある実施形態は、4つのスロット、8つのスロット、16個のスロット、32個のスロット、又は他の適当な数のスロットを有する。各スロット142は、ある実施形態では、1つのストレージノード150を収容することができる。シャーシ138は、ラックにシャーシ138をマウントするのに使用できるフラップ148を備えている。ファン144は、ストレージノード150及びそのコンポーネントを冷却するための空気循環を与えるが、他の冷却コンポーネントを使用することもでき、又は冷却コンポーネントをもたない実施形態も案出される。スイッチファブリック146は、シャーシ138内のストレージノード150を一緒に結合すると共に、メモリへの通信のためにネットワークにも結合する。図1に示す実施形態では、スイッチファブリック146及びファン144の左側のスロット142は、ストレージノード150によって占有されて示されており、一方、スイッチファブリック146及びファン144の右側のスロット142は、空であり、例示の目的でストレージノード150を挿入するのに使用できる。この構成は一例に過ぎず、更に別の種々の構成では、1つ以上のストレージノード150がスロット142を占有することができる。ストレージノードの配列は、ある実施形態では、順次又は隣接である必要はない。ストレージノード150は、ホットプラグ可能であり、これは、システムを停止又はパワーダウンすることなく、ストレージノード150をシャーシ138のスロット142に挿入したり、又はスロット142から取り外したりできることを意味する。ストレージノード150をスロット142に挿入したり取り外したりする際に、システムは、変化を認識しそして変化に適応するために自動的に再構成する。再構成とは、ある実施形態では、冗長性の回復及び/又はデータ又は負荷の再バランスを含む。
各ストレージノード150は、複数のコンポーネントを有する。ここに示す実施形態では、ストレージノード150は、CPU156、即ちプロセッサによりポピュレートされたプリント回路板158、CPU156に結合されたメモリ154、及びCPU156に結合された不揮発性ソリッドステートストレージ152を備えているが、更に別の実施形態では、他の取り付け物及び/又はコンポーネントを使用することができる。メモリ154は、CPU156により実行されるインストラクション及び/又はCPU156により操作されるデータを有する。以下に更に説明するように、不揮発性ソリッドステートストレージ152は、フラッシュを含み、又は更に別の実施形態では、他の形式のソリッドステートメモリを含む。
図2は、図1のストレージノード、ストレージクラスター及び/又は不揮発性ソリッドステートストレージの1つ以上をストレージリソース108として使用できる企業用コンピューティングシステム102のシステム図である。例えば、図2のフラッシュストレージ128は、ある実施形態では、図1のストレージノード、ストレージクラスター及び/又は不揮発性ソリッドステートストレージを一体化するものである。企業用コンピューティングシステム102は、処理リソース104と、ネットワークリソース106と、フラッシュストレージ128を含むストレージリソース108とを有する。フラッシュストレージ128にはフラッシュコントローラ130及びフラッシュメモリ132が含まれる。種々の実施形態において、フラッシュストレージ128は、1つ以上のストレージノード又はストレージクラスターを、CPUを含むフラッシュコントローラ130、及びストレージノードの不揮発性ソリッドステートストレージを含むフラッシュメモリ132と共に含むことができる。ある実施形態では、フラッシュメモリ132は、異なる形式のフラッシュメモリ、又は同じ形式のフラッシュメモリを含む。企業用コンピューティングシステム102は、フラッシュストレージ128の配備に適した環境を示しているが、フラッシュストレージ128は、より大きな又はより小さな他のコンピューティングシステム又は装置に、或いはより少数の又は付加的なリソースを伴う種々の企業用コンピューティングシステム102に使用することができる。企業用コンピューティングシステム102は、サービスを提供し又はサービスを利用するために、インターネットのようなネットワーク140に結合される。例えば、企業用コンピューティングシステム102は、クラウドサービス、物理的コンピューティングサービス、又はバーチャルコンピューティングサービスを提供することができる。
企業用コンピューティングシステム102では、種々のリソースが種々のコントローラにより配置され且つ管理される。処理コントローラ110は、プロセッサ116及びランダムアクセスメモリ(RAM)118を含む処理リソース104を管理する。ネットワークコントローラ112は、ルータ120、スイッチ122及びサーバー124を含むネットワークリソース106を管理する。ストレージコントローラ114は、ハードドライブ126及びフラッシュストレージ128を含むストレージリソース108を管理する。この実施形態には、他の形式の処理リソース、ネットワークリソース、及びストレージリソースを含ませることができる。ある実施形態では、フラッシュストレージ128がハードドライブ126に完全に置き換わる。企業用コンピューティングシステム102は、種々のリソースを、物理的コンピューティングリソースとして、又はその変形例では、物理的コンピューティングリソースによりサポートされるバーチャルコンピューティングリソースとして、提供し又は割り当てることができる。例えば、種々のリソースは、ソフトウェアを実行する1つ以上のサーバーを使用して具現化することができる。ストレージリソース108には、ファイル又はデータオブジェクト或いは他の形態のデータが記憶される。
種々の実施形態において、企業用コンピューティングシステム102は、ストレージクラスターによってポピュレートされた複数のラックを備え、そしてそれらは、クラスター又はサーバーファームのような単一の物理的位置に配置される。他の実施形態では、複数のラックを、種々の都市、州又は国々のような複数の物理的位置に配置して、ネットワークで接続することができる。各ラック、各ストレージクラスター、各ストレージノード、及び各不揮発性ソリッドステートストレージは、各量のストレージスペースで個々に構成され、そのストレージスペースは、次いで、他とは独立して構成することができる。従って、不揮発性ソリッドステートストレージの各々においてストレージ容量を柔軟に追加し、アップグレードし、差し引きし、回復させ、及び/又は再構成することができる。上述したように、各ストレージノードは、ある実施形態では、1つ以上のサーバーを具現化することができる。
図3は、図1のシャーシに使用するのに適した複数のストレージノード150及び異なる能力を伴う不揮発性ソリッドステートストレージ152を示すブロック図である。各ストレージノード150は、不揮発性ソリッドステートストレージ152の1つ以上のユニットを有することができる。各不揮発性ソリッドステートストレージ152は、ある実施形態では、ストレージノード150又は他のストレージノード150における他の不揮発性ソリッドステートストレージ152とは異なる容量を含む。或いは又、ストレージノード又は複数のストレージノードにおける全ての不揮発性ソリッドステートストレージ152が、同じ容量を有してもよいし、或いは同じ及び/又は異なる容量を組み合わせて有してもよい。この融通性が図3に示されており、図3は、4、8及び32のTB容量の混合不揮発性ソリッドステートストレージ152を有するあるストレージノード150;各々32TB容量の不揮発性ソリッドステートストレージ152を有する別のストレージノード150;及び各々8TB容量の不揮発性ソリッドステートストレージ152を有する更に別のストレージノード;の一例を示している。ここに述べる教示によれば、更に別の種々の組み合わせ及び容量が容易に案出される。クラスター化、例えば、ストレージをクラスター化してストレージクラスターを形成する状況では、ストレージノードが、不揮発性ソリッドステートストレージ152でもよいし又はそれを含んでもよい。以下に更に述べるように、不揮発性ソリッドステートストレージ152は、便利なクラスター化ポイントである。というのは、不揮発性ソリッドステートストレージ152は、不揮発性ランダムアクセスメモリ(NVRAM)コンポーネントを含むからである。
図1及び3を参照すれば、ストレージクラスター160は、拡張可能であり、これは、上述したように、非均一なストレージサイズのストレージ容量が容易に追加されることを意味する。1つ以上のストレージノード150を各シャーシに差し込んだり取り外したりすることができ、そしてある実施形態では、ストレージクラスターが自己構成を行う。プラグインストレージノード150は、納入時にシャーシに設置されるか又は後で追加されるかに関わらず、異なるサイズとすることができる。例えば、ある実施形態では、ストレージノード150は、4TBの倍数、例えば、8TB、12TB、16TB、32TB、等である。更に別の実施形態では、ストレージノード150は、他のストレージ量又は容量の倍数である。各ストレージノード150のストレージ容量は、ブロードキャストされて、データをどのようにストライプ化するかの判断に影響を及ぼす。最大ストレージ効率のために、ある実施形態では、シャーシ内の不揮発性ソリッドステートストレージユニット152又はストレージノード150が1つ又は2つまで失われて動作を継続するという所定の要件を受けて、ストライプにおいてできるだけ広く自己構成することができる。
図4は、複数のストレージノード150を結合する通信相互接続部170及び配電バス172を示すブロック図である。図1に戻ると、通信相互接続部170は、ある実施形態では、スイッチファブリック146で具現化されるか又はそれに含まれる。複数のストレージクラスター160がラックを占有する場合には、通信相互接続部170は、ある実施形態では、ラックスイッチの頂部で具現化されるか又はそれに含まれる。図4に示すように、ストレージクラスター160は、単一のシャーシ138内に包囲される。通信相互接続部170を通して外部ポート176がストレージノード150に結合され、一方、外部ポート174がストレージノードに直結される。外部電源ポート178が配電バス172に結合される。ストレージノード150は、図3を参照して述べたように、変化する量及び異なる容量の不揮発性ソリッドステートストレージ152を含む。更に、1つ以上のストレージノード150は、図4に示したように、計算のみのストレージノードでもよい。オーソリティ(authority)168は、不揮発性ソリッドステートストレージ152において、例えば、メモリに記憶されたリスト又は他のデータ構造体として具現化される。ある実施形態では、オーソリティは、不揮発性ソリッドステートストレージ152内に記憶され、そして不揮発性ソリッドステートストレージ152のコントローラ又は他のプロセッサで実行されるソフトウェアによりサポートされる。更に別の実施形態では、オーソリティ168は、ストレージノード150において、例えば、メモリ154に記憶されたリスト又は他のデータ構造体として具現化され、そしてストレージノード150のCPU156で実行されるソフトウェアによりサポートされる。オーソリティ168は、ある実施形態では、不揮発性ソリッドステートストレージ152のどこにどのようにデータを記憶するか制御する。この制御は、どの形式の消去コードスキームがデータに適用されるか及びどのストレージノード150がデータのどの部分を有するか決定する上で役立つ。各オーソリティ168は、不揮発性ソリッドステートストレージ152に指定される。各オーソリティは、種々の実施形態において、ファイルシステム、ストレージノード150又は不揮発性ソリッドステートストレージ152によりデータに指定されるinode番号、セグメント番号、又は他のデータ識別子の範囲を制御する。
データの各断片及びメタデータの各断片は、ある実施形態では、システムにおいて冗長性を有する。更に、データの各断片及びメタデータの各断片は、オーソリティとも称されるオーナー(owner)を有する。そのオーソリティが、例えば、ストレージノードの欠陥により到達不能である場合には、そのデータ又はそのメタデータをどのように見つけるかについての継承のプランがある。種々の実施形態において、オーソリティ168の冗長コピーがある。オーソリティ168は、ある実施形態では、ストレージノード150及び不揮発性ソリッドステートストレージ152との関係を有している。ある範囲のデータセグメント番号又は他のデータ識別子をカバーする各オーソリティ168は、特定の不揮発性ソリッドステートストレージ152に指定される。ある実施形態では、そのような全ての範囲に対するオーソリティ168は、ストレージクラスターの不揮発性ソリッドステートストレージ152にわたって分散される。各ストレージノード150は、そのストレージノード150の不揮発性ソリッドステートストレージ152へのアクセスを与えるネットワークポートを有する。データは、セグメント番号に関連したセグメントに記憶され、そしてそのセグメント番号は、ある実施形態では、RAID(独立ディスクの冗長アレイ)ストライプの構成に対する間接参照(indirection)である。従って、オーソリティ168の指定及び使用は、データの間接参照を確立する。間接参照は、ある実施形態によれば、このケースではオーソリティ168を経て、データを間接的に参照する能力とも称される。セグメントは、不揮発性ソリッドステートストレージ152のセットを識別し、そしてローカル識別子は、データを収容する不揮発性ソリッドステートストレージ152のセットに対するものである。ある実施形態では、ローカル識別子は、装置に対するオフセットであり、複数のセグメントにより順次に再使用される。他の実施形態では、ローカル識別子は、特定のセグメントに対して独特のものであり、決して再使用されない。不揮発性ソリッドステートストレージ152のオフセットは、不揮発性ソリッドステートストレージ152への書き込み又はそこからの読み取りのための位置データに適用される(RAIDストライプの形態)。データは、不揮発性ソリッドステートストレージ152の複数のユニットにわたってストライプ化され、これは、特定のデータセグメントに対してオーソリティ168を有する不揮発性ソリッドステートストレージ152を含んでもよいし又はそれとは異なるものでもよい。
例えば、データの移動中又はデータの再構成中に、データの特定セグメントが位置する場所に変化がある場合には、そのオーソリティ168を有する不揮発性ソリッドステートストレージ152又はストレージノード150において、そのデータセグメントについてオーソリティ168と協議しなければならない。特定のデータ断片を探索するために、この実施形態では、データセグメントのハッシュ値が計算されるか、或いはinode番号又はデータセグメント番号が適用される。この動作の出力は、その特定のデータ断片に対してオーソリティ168を有する不揮発性ソリッドステートストレージ152を指す。ある実施形態では、この動作に対して2つのステージがある。第1のステージは、エンティティ識別子(ID)、例えば、セグメント番号、inode番号、又はディレクトリ番号をオーソリティ識別子へマップする。このマッピングは、ハッシュ又はビットマスクのような計算を含む。第2のステージは、オーソリティ識別子を特定の不揮発性ソリッドステートストレージ152へマップすることであり、これは、明示的マッピングを通して行われる。この動作は繰り返すことができ、計算が行われたとき、計算結果が、オーソリティ168を有する特定の不揮発性ソリッドステートストレージ152を繰り返し且つ確実に
指すようにする。この動作は、到達可能なストレージノードのセットを入力として含む。到達可能な不揮発性ソリッドステートストレージユニットのセットが変化する場合には、最適なセットも変化する。ある実施形態では、持続値は、現在指定値(常に真)であり、そして計算値は、クラスターが再構成を試みるところのターゲット指定値である。この計算は、到達可能で且つ同じクラスターを構成する不揮発性ソリッドステートストレージ152のセットの存在中にオーソリティに対して最適な不揮発性ソリッドステートストレージ152を決定するのに使用される。又、この計算は、指定の不揮発性ソリッドステートストレージが到達不能であってもオーソリティが決定されるようにオーソリティを不揮発性ソリッドステートストレージのマッピングに記録するピアな不揮発性ソリッドステートストレージ152の順序付けされたセットも決定する。ある実施形態では、特定のオーソリティ168が利用できない場合に、複写又は代用オーソリティ168と協議する。
図1から4を参照すれば、ストレージノード150におけるCPU156の多数のタスクのうちの2つは、書き込みデータを分解し及び読み取りデータを再組み立てすることである。データを書き込むべきであることをシステムが決定すると、そのデータに対してオーソリティ168が上述したように探索される。データのセグメントIDが既に決定されているときには、そのセグメントから決定されたオーソリティ168のホストであると現在決定された不揮発性ソリッドステートストレージ152へ書き込み要求が転送される。不揮発性ソリッドステートストレージ152及びそれに対応するオーソリティ168が存在するストレージノード150のホストCPU156は、次いで、データを分解又は破片化し、そしてデータを種々の不揮発性ソリッドステートストレージ152へ送出させる。その送出されたデータは、消去コードスキームに従ってデータストライプとして書き込まれる。ある実施形態では、データをプルすることが要求され、そして他の実施形態では、データがプッシュされる。逆に、データを読み取るときには、データを含むセグメントIDに対するオーソリティ168が上述したように探索される。不揮発性ソリッドステートストレージ152及びそれに対応するオーソリティ168が存在するストレージノード150のホストCPU156は、オーソリティにより指摘された不揮発性ソリッドステートストレージ及びそれに対応するストレージノードからデータを要求する。ある実施形態では、データは、フラッシュストレージからデータストライプとして読み取られる。ストレージノード150のホストCPU156は、次いで、読み取りデータを再組み立てし、エラー(もしあれば)を適当な消去コードスキームに基づいて修正し、そしてその再組み立てされたデータをネットワークへ転送する。更に別の実施形態では、これらタスクの幾つか又は全部が不揮発性ソリッドステートストレージ152において取り扱われる。ある実施形態では、セグメントホストは、ストレージからページを要求し、次いで、最初に要求を発したストレージノードへデータを送信することにより、ストレージノード150へのデータの送信を要求する。
あるシステム、例えば、UNIXスタイルのファイルシステムでは、データがインデックスノード又はinodeで取り扱われ、これは、ファイルシステムにおいてオブジェクトを表すデータ構造を特定する。オブジェクトは、例えば、ファイル又はディレクトリである。メタデータは、オブジェクトを、他の属性の中でも、許可データ及び生成タイムスタンプのような属性として付随する。セグメント番号は、ファイルシステムにおけるそのようなオブジェクトの全部又は一部分に指定される。他のシステムでは、データセグメントが、どこかで指定されたセグメント番号で取り扱われる。説明上、配布の単位は、エンティティであり、そしてエンティティは、ファイル、ディレクトリ、又はセグメントである。即ち、エンティティは、ストレージシステムにより記憶されるデータ又はメタデータの単位である。エンティティは、オーソリティと称されるセットにグループ分けされる。各オーソリティは、オーソリティオーナーを有し、これは、オーソリティにおけるエンティティを更新する排他的権利を有するストレージノードである。換言すれば、ストレージノードは、オーソリティを含み、次いで、オーソリティは、エンティティを含む。
セグメントは、ある実施形態によれば、データの論理的コンテナである。又、セグメントは、媒体アドレススペースと物理的フラッシュ位置との間のアドレススペースであり、即ち、このアドレススペースにはデータセグメント番号がある。又、セグメントは、メタデータも含み、これは、高レベルソフトウェアに関与せずにデータ冗長性を回復(異なるフラッシュ位置又は装置への再書き込み)させることができる。ある実施形態では、セグメントの内部フォーマットは、クライアントデータと、そのデータの位置を決定するための媒体マッピングとを含む。各データセグメントは、そのセグメントを多数のデータ及びパリティシャード(該当する場合)へ分断することにより、例えば、メモリ及び他の欠陥から保護される。データ及びパリティシャードは、消去コードスキームによりホストCPU156(図5)に結合された不揮発性ソリッドステートストレージ152にわたって配布され、即ちストライプ化される。期間セグメントの使用は、ある実施形態では、セグメントのアドレススペースにおけるコンテナ及びその場所を指す。期間ストライプの使用は、セグメントと同じシャードセットを指し、ある実施形態によれば、シャードが冗長性又はパリティ情報と共にどのように配布されるかを含む。
一連のアドレススペース変換がストレージシステム全体にわたって行われる。最上部には、ディレクトリエンティティ(ファイル名)があって、inodeにリンクしている。inodeは、データが論理的に記憶された媒体アドレススペースを指す。媒体アドレスは、一連の間接的媒体を通してマップされて、大きなファイルの負荷を分散させるか、或いは複写除外又はスナップショットのようなデータサービスを具現化する。媒体アドレスは、一連の間接的媒体を通してマップされて、大きなファイルの負荷を分散させるか、或いは複写除外又はスナップショットのようなデータサービスを具現化する。セグメントアドレスは、次いで、物理的フラッシュ位置に変換される。物理的フラッシュ位置は、ある実施形態では、システムにおけるフラッシュの量により限定されたアドレス範囲を有する。媒体アドレス及びセグメントアドレスは、論理的コンテナであり、ある実施形態では、
128ビット以上の識別子を使用して、実際上無限であるようにし、再使用の見込みは、システムの予想寿命より長いと計算される。論理的コンテナからのアドレスは、ある実施形態では、ハイアラーキー形態で割り当てられる。最初に、各不揮発性ソリッドステートストレージ152には、ある範囲のアドレススペースが指定される。この指定範囲内で、不揮発性ソリッドステートストレージ152は、他の不揮発性ソリッドステートストレージ152と同期せずに、アドレスを割り当てることができる。
データ及びメタデータは、変化するワークロードパターン及びストレージ装置に対して最適化された基礎的なストレージレイアウトのセットにより記憶される。これらのレイアウトは、複数の冗長性スキーム、圧縮フォーマット及びインデックスアルゴリズムを合体する。これらのレイアウトの幾つかは、オーソリティ及びオーソリティマスターに関する情報を記憶し、一方、他のレイアウトは、ファイルメタデータ及びファイルデータを記憶する。冗長性スキームは、単一のストレージ装置(NANDフラッシュチップのような)内の崩壊ビットを許容するエラー修正コード、複数のストレージノードの欠陥を許容する消去コード、及びデータセンター又は領域欠陥を許容する複写スキームを含む。ある実施形態では、低密度のパリティチェック(LDPC)コードが単一のストレージユニット内で使用される。ある実施形態では、リード・ソロモンエンコーディングがストレージクラスター内で使用され、そしてミラーリングがストレージグリッド内で使用される。メタデータは、順序付けされたログ構造化インデックス(例えば、Log Structured Merge Tree)を使用して記憶され、そしてログ構造化レイアウトには大きなデータが記憶されない。
エンティティの複数のコピーにわたって一貫性を維持するため、ストレージノードは、計算を通して2つのことに暗示的に合意する。(1)エンティティを含むオーソリティ、及び(2)オーソリティを含むストレージノード。オーソリティへのエンティティの指定は、エンティティをオーソリティに擬似ランダムに指定するか、エンティティを、外部で発生されるキーに基づいて範囲に分割するか、又は単一エンティティを各オーソリティに配置することにより行うことができる。擬似ランダムスキームは、例えば、リニアハッシュ、及びハッシュのレプリケーション・アンダー・スケーラブル・ハッシュ(RUSH)ファミリーであり、これは、コントロールド・レプリケーション・アンダー・スケーラブル・ハッシュ(CRUSH)を含む。ある実施形態では、擬似ランダム指定は、ノードのセットが変化し得るために、オーソリティをノードに指定することにしか利用されない。オーソリティのセットは変化せず、従って、これらの実施形態では、主観的機能が適用される。ある配置スキームは、ストレージノードにオーソリティを自動的に配置するが、他の配置スキームは、ストレージノードへのオーソリティの明示的マッピングに依存する。ある実施形態では、擬似ランダムスキームは、各オーソリティから候補オーソリティオーナーのセットへマップするのに使用される。CRUSHに関連した擬似ランダムデータ配布機能は、オーソリティをストレージノードに指定し、そしてオーソリティがどこに指定されているかのリストを生成する。各ストレージノードは、擬似ランダムデータ配布機能のコピーを有し、そしてオーソリティを配布し及び後で発見又は探索するために同じ計算に到着する。擬似ランダムスキームの各々は、ある実施形態では、同じターゲットノードで終らすためにストレージノードの到達可能なセットを入力として要求する。あるエンティティがオーソリティに配置されると、そのエンティティは、予想される欠陥が予期せぬデータロスを招くことがないように物理的な装置に記憶される。ある実施形態では、再バランスアルゴリズムが、全てのエンティティのコピーを、同じマシンセットにおいて且つ同じレイアウトでオーソリティ内に記憶するように試みる。
予想される欠陥は、例えば、装置の欠陥、マシン盗難、データセンターの火災、並びに地域の大災害、例えば、原子力事故や地質学的事象を含む。異なる欠陥は、異なるレベルの許容データロスを招く。ある実施形態では、ストレージノード盗難は、システムのセキュリティにも信頼性にも影響がないが、システムの構成によっては、地域の出来事がノーロスデータ(no loss of data)、数秒又は数分のロスト・アップデート、又は完全なデータロスを招くことがある。
これらの実施形態では、ストレージ冗長性のためのデータの配置は、データ一貫性のためのオーソリティの配置とは独立している。ある実施形態では、オーソリティを含むストレージノードは、持続性ストレージを含まない。むしろ、ストレージノードは、オーソリティを含まない不揮発性ソリッドステートストレージに接続される。ストレージノードと不揮発性ソリッドステートストレージユニットとの間の通信相互接続部は、複数の通信技術より成り、そして非均一な性能及び欠陥許容特性を有する。ある実施形態では、上述したように、不揮発性ソリッドステートストレージユニットは、PCIエクスプレスを経てストレージノードに接続され、ストレージノードは、イーサネットバックプレーンを使用して単一のシャーシ内で一緒に接続され、そしてシャーシは、ストレージクラスターを形成するように一緒に接続される。ストレージクラスターは、ある実施形態では、イーサネット又はファイバーチャンネルを使用してクライアントに接続される。複数のストレージクラスターがストレージグリッドへと構成される場合には、複数のストレージクラスターは、インターネット又は他の長距離ネットワークリンク、例えば、インターネットを横断しない「メトロスケール」リンク又はプライベートリンクを使用して、接続される。
オーソリティオーナーは、エンティティを変更し、エンティティをある不揮発性ソリッドステートストレージユニットから別の不揮発性ソリッドステートストレージユニットへ移行し、及びエンティティのコピーを追加及び除去するための排他的権利を有する。これは、基礎的データの冗長性の維持を許す。オーソリティオーナーが失敗するか、退役させられるか、又は過負荷となったときに、オーソリティは、新たなストレージノードへ移行される。過渡的な欠陥は、全ての非欠陥マシンが新たなオーソリティ位置に合意することを保証するには、些細なことではない。過渡的な欠陥のために生じる曖昧さは、コンセンサスプロトコル、例えば、Paxos、ホット・ウォームフェイルオーバースキームにより、又はリモートシステムアドミニストレータによる手動での介在を経て、又はローカルハードウェアアドミニストレータにより(例えば、クラスターから欠陥マシンを物理的に除去するか又は欠陥マシンのボタンを押すことにより)、自動的に解消される。ある実施形態では、コンセンサスプロトコルが使用され、そしてフェイルオーバーは自動である。あまりに短い期間内にあまりに多数の欠陥や複写事象が生じる場合、ある実施形態では、システムが自己保存モードに入り、そしてアドミニストレータの介在まで複写及びデータ移動アクティビティを停止する。
オーソリティはストレージノード間に転送されそしてオーソリティはそれらのオーソリティに更新エンティティを所有するので、システムは、ストレージノードと不揮発性ソリッドステートストレージユニットとの間にメッセージを転送する。持続メッセージに関しては、異なる目的のメッセージは、異なる形式のものである。メッセージの形式に基づいて、システムは、異なる順序及び耐久性保証を維持する。持続メッセージが処理されるときに、メッセージは、複数の耐久性及び非耐久性ストレージハードウェア技術で一時的に記憶される。ある実施形態では、メッセージは、RAM、NVRAM及びNANDフラッシュ装置に記憶され、そして各ストレージ媒体を効率的に使用するために種々のプロトコルが使用される。レイテンシーに敏感なクライアントの要求は、複写NVRAM、その後、NANDにおいて持続されるが、バックグランド再バランス動作は、NANDへ直接的に持続される。
持続メッセージは、複写されるまで持続的に記憶される。これは、システムが、欠陥及びコンポーネントの交換にも関わらず、クライアントの要求にサービスし続けられるようにする。多くのハードウェアコンポーネントは、システムアドミニストレータ、製造者、ハードウェア供給チェーン、及び進行中監視クオリティコントロールインフラストラクチャーに見える独特の識別子を含むが、インフラストラクチャーアドレスの最上部で実行されるアプリケーションは、アドレスをバーチャル化する。これらのバーチャル化されたアドレスは、コンポーネントの欠陥及び交換に関わらず、ストレージシステムの寿命にわたって変化しない。これは、クライアント要求処理の再構成又は中断を伴わずにストレージシステムの各コンポーネントを時間と共に交換できるようにする。
ある実施形態では、バーチャル化されたアドレスは、充分な冗長性で記憶される。連続的監視システムは、ハードウェア及びソフトウェア状態とハードウェア識別子を相関させる。これは、欠陥コンポーネント及び製造細部による欠陥の検出及び予想を許す。又、監視システムは、ある実施形態では、重要な経路からコンポーネントを除去することにより欠陥が生じるまで影響のある装置からのオーソリティ及びエンティティの先見的転送も可能にする。
図5は、ストレージノード150のコンテンツ及びストレージノード150の不揮発性ソリッドステートストレージ152のコンテンツを示す多レベルブロック図である。ある実施形態では、データは、ネットワークインターフェイスコントローラ(NIC)202によりストレージノード150へ及びストレージノード150から通信される。上述したように、各ストレージノード150は、CPU156及び1つ以上の不揮発性ソリッドステートストレージ152を有する。図5において1レベル下方に移動すると、各不揮発性ソリッドステートストレージ152は、比較的高速の不揮発性ソリッドステートメモリ、例えば、不揮発性ランダムアクセスメモリ(NVRAM)204、及びフラッシュメモリ206を有する。ある実施形態では、NVRAM204は、プログラム/消去サイクルを要求しないコンポーネント(DRAM、MRAM、PCM)であり、且つメモリの読み取りより遥かに頻繁に書き込みをサポートできるメモリである。図5において別のレベル下方に移動すると、NVRAM204は、ある実施形態では、エネルギー貯蔵器218によりバックアップされるダイナミックランダムアクセスメモリ(DRAM)216のような高速揮発性メモリとして具現化される。エネルギー貯蔵器218は、停電の際にフラッシュメモリ206にコンテンツを転送するに充分な長さでDRAM216を通電状態に保持するに充分な電力を供給する。ある実施形態では、エネルギー貯蔵器218は、停電時に安定な記憶媒体にDRAM216のコンテンツを転送できるに充分な適当なエネルギー供給を与えるキャパシタ、スーパーキャパシタ、バッテリ、又は他の装置である。フラッシュメモリ206は、複数のフラッシュダイ222として具現化され、これは、フラッシュダイ222のパッケージ又はフラッシュダイ222のアレイとも称される。フラッシュダイ222は、パッケージ当たり1つのダイ、パッケージ当たり複数のダイ(即ち、マルチチップパッケージ)、ハイブリッドパッケージ、プリント回路板又は他の基板上の裸ダイ、カプセル化ダイ、等の多数の仕方でパッケージできることが明らかである。ここに示す実施形態では、不揮発性ソリッドステートストレージ152は、コントローラ212又はプロセッサと、コントローラ212に結合された入力/出力(I/O)ポート210とを有する。I/Oポート210は、フラッシュストレージノード150のCPU156及び/又はネットワークインターフェイスコントローラ202に結合される。フラッシュ入力/出力(I/O)ポート220は、フラッシュダイ222に結合され、そしてダイレクトメモリアクセスユニット(DMA)214は、コントローラ212、DRAM216及びフラッシュダイ222に結合される。ここに示す実施形態では、I/Oポート210、コントローラ212、DMAユニット214及びフラッシュI/Oポート220は、プログラマブルロジック装置(PLD)208、例えば、フィールドプログラマブルゲートアレイ(FPGA)において具現化される。この実施形態では、各フラッシュダイ222は、16kB(キロバイト)ページ224として編成されたページと、フラッシュダイ222へデータを書き込むか又はそこから読み取るところのレジスタ226とを有する。更に別の実施形態では、フラッシュダイ222内に示されたフラッシュメモリに代って、又はそれに加えて、他の形式のソリッドステートメモリが使用される。
図6は、ストレージクラスターを操作する方法のフローチャートである。この方法は、ここに述べるストレージクラスター及びストレージノードの種々の実施形態において又は種々の実施形態により実施することができる。この方法の種々のステップは、ストレージクラスターのプロセッサ又はストレージノードのプロセッサのようなプロセッサによって遂行することができる。この方法は、その一部分又は全体を、ソフトウェア、ハードウェア、ファームウェア、又はその組み合わせで実施することができる。この方法は、ユーザデータを消去コードと共に配布するアクション602で開始される。例えば、ユーザデータは、1つ以上の消去コードスキームを使用してストレージクラスターのストレージノードにわたって配布することができる。ストレージクラスターのストレージノードには2つ(又はある実施形態ではそれ以上)の消去コードスキームが共存できる。ある実施形態では、各ストレージノードは、データを書き込むときに複数の消去コードスキームのどれを適用するか決定し、そしてデータを読み取るときにどの消去コードスキームを適用するか決定することができる。これらは、同じ消去コードスキームでもよいし又は異なる消去コードスキームでもよい。
この方法は、アクション604へ進み、ストレージクラスターのストレージノードがチェックされる。ある実施形態では、ストレージノードが心臓鼓動についてチェックされ、各ストレージノードは、心臓鼓動として働くメッセージを周期的に発生する。別の実施形態では、チェックは、ストレージノードに質問する形態であり、質問に対して応答がないことは、ストレージノードが欠陥であることを指示する。判断アクション606において、2つのストレージノードが到達不能であるかどうか決定される。例えば、ストレージノードの2つがもはや心臓鼓動を発生しないか、又はストレージノードの2つが質問に応答しないか、又はそれらの組み合わせであるか、或いは他の指示である場合には、他のストレージノードの1つは、ストレージノードの2つが到達不能であると決定することができる。このような状態でない場合には、フローがアクション602へ戻り、例えば、ユーザデータが到達するときにストレージのためにユーザデータをストレージノードに書き込む等の、ユーザデータの配布を継続する。ストレージノードの2つが到達不能であると決定された場合には、フローがアクション608へ続く。
判断アクション608において、消去コードを使用して残りのストレージノードにおいてユーザデータにアクセスする。ユーザデータは、ある実施形態では、ストレージクラスターの外部の1人以上のユーザ又はクライアントシステム或いは他のソースから発生するデータを指すことが明らかである。ある実施形態では、消去コードの形式は、二重冗長性を含み、このケースでは、2つの欠陥ストレージノードがある状態で、残りのストレージノードが読み取り可能なユーザデータを有する。消去コード形式は、コードワードのうちの2ビットのロスを許すエラー修正コードを含み、ストレージノードの2つが失われてもデータを回復できるようにストレージノードにわたってデータが配布される。判断アクション610では、データを再構築すべきかどうか決定される。データを再構築すべきでない場合には、フローがアクション602へ戻り、ユーザデータを消去コードと共に配布することを継続する。データを再構築すべき場合には、フローがアクション612へ分岐する。ある実施形態では、データを再構築する判断は、2つのストレージノードが到達不能になった後に行われるが、他の実施形態では、データを再構築する判断は、1つのストレージノードが到達不能になった後に行われてもよい。データを再構築する判断に考慮される種々のメカニズムは、エラー修正カウント、エラー修正レート、読み取り欠陥、書き込み欠陥、心臓鼓動のロス、質問に対する応答欠陥、等を含む。図6の方法に対する適当な変更は、これら及び更に別の実施形態について容易に理解されよう。
アクション612において、消去コードを使用してデータが回復される。これは、アクション608に関して上述した消去コードの例によるものである。より詳細には、データは、残りのストレージノードから、例えば、エラー修正コードを使用して回復されるか、又は残りのストレージノードから読み取られるか、の適当な方である。2つ以上の形式の消去コードがストレージノードに共存する場合には、2つ以上の形式の消去コードを使用してデータを回復することができる。判断アクション614において、データを並列に読み取らねばならないかどうか決定される。ある実施形態では、2つ以上のデータ経路があり(例えば、データの二重冗長性)、データは、2つの経路にわたって並列に読み取ることができる。データを並列に読み取るべきでない場合には、フローがアクション618へ分岐する。データを並列に読み取るべきである場合には、フローがアクション616へ分岐し、結果の競争となる。次いで、競争の勝者が、回復されたデータとして使用される。
アクション618において、再構築のため消去コードスキームが決定される。例えば、ある実施形態では、各ストレージノードは、ストレージユニットにわたってデータを書き込むときに2つ以上の消去コードスキームのどれを適用するか判断することができる。ある実施形態では、ストレージノードは、消去コードスキームを決定するように協働する。これは、どのストレージノードが特定データセグメントのための消去コードスキームについての役割を果たすか決定することにより、又はその役割を果たすためのストレージノードを指定することにより、行うことができる。ある実施形態では、証言、投票、又は判断ロジック、等の種々のメカニズムを使用して、このアクションを達成する。不揮発性ソリッドステートストレージは、証言者(ある実施形態では)又は投票者(ある実施形態では)として働き、オーソリティのあるコピーが欠陥となった場合に、不揮発性ソリッドステートストレージの残りの機能及びオーソリティの残りのコピーが欠陥オーソリティのコンテンツを決定できるようにする。アクション620において、回復されたデータが、消去コードと共に、残りのストレージノードにわたって書き込まれる。例えば、再構築のために決定される消去コードスキームは、データを回復する際に、即ちデータを読み取る際に適用される消去コードスキームとは異なる。より詳細には、2つのストレージノードが失われることは、ある消去コードスキームを残りのストレージノードにもはや適用できず、そしてストレージノードは、残りのストレージノードに適用できる消去コードスキームへ切り換えられることを意味する。
ここに述べる方法は、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行されることが明らかである。或いは又、1つの機能のみを遂行するように設計又はプログラムされた特殊目的コンピュータが使用されてもよい。図7は、ここに述べる実施形態を具現化する規範的コンピューティング装置を示す図である。図7のコンピューティング装置は、ある実施形態により、ストレージノード又は不揮発性ソリッドステートストレージのための機能の実施形態を遂行するのに使用される。このコンピューティング装置は、中央処理ユニット(CPU)701を備え、これは、バス705を通して、メモリ703及び大量ストレージ装置707に結合される。大量ストレージ装置707は、ある実施形態では、ローカル又はリモートであるディスクドライブのような持続性データストレージ装置を表わす。大量ストレージ装置707は、ある実施形態では、バックアップストレージを具現化するものである。メモリ703は、リードオンリメモリ、ランダムアクセスメモリ、等を含む。コンピューティング装置に存在するアプリケーションは、ある実施形態では、メモリ703又は大量ストレージ装置707のようなコンピュータ読み取り可能な媒体に記憶されるか又はそれを経てアクセスされる。又、アプリケーションは、コンピューティング装置のネットワークモデム又は他のネットワークインターフェイスを経てアクセスされる変調電子信号の形態でもよい。CPU701は、ある実施形態では、汎用プロセッサ、特殊目的プロセッサ、又は特別にプログラムされたロジック装置で実施されることが明らかである。
ディスプレイ711は、バス705を経て、CPU701、メモリ703及び大量ストレージ装置707と通信する。ディスプレイ711は、ここに述べるシステムに関連した視覚ツール又はレポートを表示するよう構成される。入力/出力装置709は、コマンド選択の情報をCPU701へ通信するためにバス505に結合される。外部装置への及び外部装置からのデータは、入力/出力装置709を経て通信されることが明らかである。CPU701は、図1から6を参照して述べた機能を可能にするためにここに述べる機能を実行するよう定義される。この機能を実施するコードは、ある実施形態では、CPU701のようなプロセッサにより実行するためにメモリ703又は大量ストレージ装置707内に記憶される。コンピューティング装置のオペレーティングシステムは、MS−WINDOWSTM、UNIXTM、LINUXTM、iOSTM、CentOSTM、AndroidTM、Redhat LINUXTM、z/OSTM、又は他の既知のオペレーティングシステムである。又、ここに述べる実施形態は、バーチャル型コンピューティングシステムと一体化できることが明らかである。
ここでは、詳細な説明のための実施形態が開示される。しかしながら、ここに開示される特定の機能的詳細は、実施形態を説明するための単なる代表例に過ぎない。しかしながら、それら実施形態は、多数の別の形態で実施されてもよく、ここに述べる実施形態のみに限定されると解釈してはならない。
第1、第2、等の語は、ここでは、種々のステップ又は計算を説明するために使用されるが、これらのステップ又は計算は、これらの語により限定されてはならないことを理解されたい。これらの語は、あるステップ又は計算を別のものと区別するために使用されるに過ぎない。例えば、この開示の範囲から逸脱せずに、第1の計算は、第2の計算と呼ばれてもよく、そして同様に、第2のステップは、第1のステップと呼ばれてもよい。ここで使用する語「及び/又は」及び記号「/」は、列挙される関連アイテムの1つ以上のいずれの及び全ての組み合わせを含む。
ここで使用する単数形“a”“an”及び“the”は、文脈がそうでないことを明らかに示さない限り、複数形も含むものとする。更に、語“comprises(備える)”“comprising(備えている)”“includes(含む)”及び/又は“including(含んでいる)”は、ここで使用するとき、述べた特徴、整数、ステップ、オペレーション、エレメント、及び/又はコンポーネントの存在を特定するが、1つ以上の他の特徴、整数、ステップ、オペレーション、エレメント、コンポーネント、及び/又はそのグループの存在又は追加を除外するものではない。それ故、ここで使用する用語は、特定の実施形態を説明するためのものに過ぎず、それに限定されるものではない。
又、別の具現化では、示された機能/行動は、図に示された順序から外れて行われてもよいことに注意されたい。例えば、順次に示された2つの図面は、関与する機能/行動に基づいて、実際には、実質的に同時に実行されてもよいし、又は時々、逆の順序で実行されてもよい。
前記実施形態に留意して、それらの実施形態は、コンピュータシステムに記憶されたデータに関与する種々のコンピュータ実施オペレーションを使用することを理解されたい。それらのオペレーションは、物理量の物理的操作を要求するものである。通常、必ずしもそうでないが、それらの量は、記憶、転送、合成、比較、さもなければ、操作することのできる電気的又は磁気的信号の形態をとる。更に、遂行される操作は、しばしば、発生、識別、決定、又は比較、等の語で呼ばれる。実施形態の一部分を形成するここに述べるオペレーションは、いずれも、有用なマシンオペレーションである。又、それらの実施形態は、それらのオペレーションを遂行するためのデバイス又は装置にも関連している。その装置は、要求された目的に対して特に構成されてもよいし、又は装置は、コンピュータに記憶されたコンピュータプログラムにより選択的にアクチベートされ又は構成される汎用コンピュータでもよい。特に、種々の汎用マシンは、ここでの教示に従って書かれたコンピュータプログラムで使用することもできるし、又は要求されたオペレーションを遂行するために特殊な装置を構成することも便利である。
モジュール、アプリケーション、レイヤ、エージェント、又は他の、方法で動作可能なエンティティは、ハードウェア、ファームウェア、又はプロセッサ実行ソフトウェア、或いはその組み合わせとして具現化される。ソフトウェアベースの実施形態がここに開示される場合には、コントローラのような物理的マシンにおいてソフトウェアを実施できることが明らかであろう。例えば、コントローラは、第1モジュール及び第2モジュールを含むことができる。コントローラは、例えば、方法、アプリケーション、レイヤ又はエージェントの種々のアクションを遂行するように構成できる。
又、それらの実施形態は、非一時的コンピュータ読み取り可能な媒体上のコンピュータ読み取り可能なコードとして具現化することもできる。コンピュータ読み取り可能な媒体は、コンピュータシステムにより後で読み取られるデータを記憶できるデータストレージ装置である。コンピュータ読み取り可能な媒体は、例えば、ハードドライブ、ネットワーク取り付け型ストレージ(NAS)、リードオンリメモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、並びに他の光学的及び非光学的データストレージ装置を含む。又、コンピュータ読み取り可能な媒体は、ネットワーク結合のコンピュータシステムにわたって分散されて、コンピュータ読み取り可能なコードが分散形態で記憶され且つ実行されるようにする。ここに述べる実施形態は、ハンドヘルド装置、タブレット、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者向け電子装置、消費者向け電子装置、ミニコンピュータ、メインフレームコンピュータ、等を含む種々のコンピュータシステム構成で具現化される。又、これら実施形態は、ワイヤベースネットワーク又はワイヤレスネットワークを通してリンクされたリモート処理装置によってタスクが遂行される分散型コンピューティング環境において具現化することもできる。
方法の操作は、特定の順序で説明したが、説明した操作と操作との間に他の操作が遂行されてもよく、説明した操作は、それらが若干異なる時間に生じるように調整されてもよく、又は説明した操作は、処理に関連した種々の間隔で処理操作を行えるシステムにおいて分散されてもよいことを理解されたい。
種々の実施形態において、ここに述べる方法及びメカニズムの1つ以上の部分がクラウドコンピューティング環境の一部分を形成してもよい。そのような実施形態では、リソースが1つ以上の種々のモデルに従ってサービスとしてインターネットを経て与えられる。そのようなモデルは、インフラストラクチャーをサービス(IaaS)として、プラットホームをサービス(PaaS)として、及びソフトウェアをサービス(SaaS)として含む。IaaSでは、コンピュータインフラストラクチャーがサービスとして配信される。そのようなケースでは、コンピューティング装置は、一般的に、サービスプロバイダーにより所有されそして操作される。PaaSモデルでは、ソフトウェア解決策を開発するためにデベロッパーにより使用されるソフトウェアツール及びその基礎的な装置は、サービスとして提供され、そしてサービスプロバイダーによりホストされる。SaaSは、典型的に、サービスプロバイダーのライセンスソフトウェアをオンデマンドのサービスとして含む。サービスプロバイダーは、ソフトウェアをホストするか、又はソフトウェアを所与の期間中顧客に配備する。前記モデルの多数の組み合わせが考えられ、そして意図される。
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」として説明され又は請求される。この点に関して、句「構成される」は、ユニット/回路/コンポーネントがオペレーション中に1つ又は複数のタスクを遂行する構造体(例えば、回路)を含むことを示すことで構造体を暗示するのに使用される。従って、ユニット/回路/コンポーネントは、指定のユニット/回路/コンポーネントが現在動作していない(例えば、オンでない)ときでもタスクを遂行するように構成されると言うことができる。「構成される」言語と共に使用されるユニット/回路/コンポーネントは、ハードウェア、例えば、回路、オペレーションを実施するために実行可能なプログラムインストラクションを記憶するメモリ、等を含む。ユニット/回路/コンポーネントが1つ以上のタスクを遂行するように「構成される」と表すことは、そのユニット/回路/コンポーネントに対して35 U.S.C.112を引用しないことが明確に意図される。更に、「構成される」は、問題のタスク(1つ又は複数)を遂行できるやり方でソフトウェア及び/又はファームウェア(例えば、FPGA、又はソフトウェアを実行する汎用プロセッサ)を動作することで操作される包括的構造体(例えば、包括的回路)を含む。又、「構成される」は、1つ以上のタスクを実施又は遂行するための装置(例えば、集積回路)を製造するように製造プロセス(例えば、半導体製造ファシリティ)を適応させる
ことも含む。
以上の記載は、説明上、特定の実施形態を参照して述べた。しかしながら、上述した議論は、余すところのないものではなく、又、本発明を、ここに開示する正確な形態に限定するものでもない。前記教示に鑑み多数の変更及び変形が考えられる。前記実施形態は、それら実施形態の原理及びその実際的な応用を最良に説明するために選択され且つ記載されたもので、従って、当業者であれば、それら実施形態及び種々の変更を、意図される特定の用途に適するように最良に利用することができるであろう。従って、ここに示す実施形態は、例示と考えられ、これに限定されるものではなく、そして本発明は、ここに示す詳細に限定されず、特許請求の範囲内及びその等効物の中で変更可能である。
102:企業用コンピューティングシステム
104:処理リソース
106:ネットワークリソース
108:ストレージリソース
110:処理コントローラ
112:ネットワークコントローラ
114:ストレージコントローラ
116:プロセッサ
118:ランダムアクセスメモリ(RAM)
120:ルータ
122:スイッチ
124:サーバー
126:ハードドライブ
128:フラッシュストレージ
130:フラッシュコントローラ
132:フラッシュメモリ
138:シャーシ
140:ネットワーク
142:スロット
144:ファン
146:スイッチファブリック
148:フラップ
150:ストレージノード
152:不揮発性ソリッドステートストレージ
154:メモリ
156:CPU
158:プリント回路板
160:ストレージクラスター
701:CPU
703:メモリ
705:バス
707:大量ストレージ
709:入力/出力装置
711:ディスプレイ

Claims (20)

  1. 単一シャーシ内の複数のストレージノードにおいて、
    前記複数のストレージノードは、ストレージクラスターとして一緒に通信するように構成され、
    前記複数のストレージノードの各々は、ユーザデータ記憶のための不揮発性ソリッドステートメモリを有し、及び
    前記複数のストレージノードは、前記複数のストレージノードの2つが失われても、前記複数のストレージノードが、消去コードを使用してユーザデータを読み取る能力を維持するように、前記複数のストレージノード全体にわたりユーザデータ及びユーザデータに関連したメタデータを配布するように構成される、
    複数のストレージノード。
  2. 前記複数のストレージノードは、2つの消去コードスキームに従いユーザデータを配布するように構成され、及び前記2つの消去コードスキームは、前記複数のストレージノードに共存する、請求項1に記載の複数のストレージノード。
  3. 前記単一シャーシは、前記複数のストレージノードを結合する配電及び内部通信バスを伴うエンクロージャであり、そして前記単一シャーシは、前記複数のストレージノードを外部通信バスに結合する、請求項1に記載の複数のストレージノード。
  4. 前記不揮発性ソリッドステートメモリは、フラッシュメモリのアレイを含む、請求項1に記載の複数のストレージノード。
  5. 前記不揮発性ソリッドステートメモリは、
    コントローラ、
    前記コントローラに結合された揮発性メモリ、及び
    前記揮発性メモリに結合されたエネルギー貯蔵器、
    を備え、前記不揮発性ソリッドステートメモリは、停電が検出されると、前記揮発性メモリ内のデータを前記フラッシュアレイに転送する、請求項4に記載の複数のストレージノード。
  6. 前記複数のストレージノードの各々は、質問を監視し及びそれに応答するように構成され、質問に対する応答がないことは、前記複数のストレージノードの1つが欠陥であることを示す、請求項1に記載の複数のストレージノード。
  7. 前記単一シャーシは、複数のスロットを含み、それらの複数のスロットのうちの各スロットは、前記複数のストレージノードのうちの1つのストレージノードを収容するように構成される、請求項1に記載の複数のストレージノード。
  8. 単一シャーシ内に複数のストレージノードを備え、
    前記複数のストレージノードの各々は、ユーザデータ記憶のための不揮発性ソリッドステートメモリを有し、及び
    前記複数のストレージノードは、前記複数のストレージノードの2つが欠陥である状態で、前記複数のストレージノードが、消去コードを経て、ユーザデータにアクセスできるように、前記複数のストレージノード全体にわたりユーザデータ及びユーザデータに関連したメタデータを配布するように構成される、
    ストレージクラスター。
  9. 前記複数のストレージノードは、前記複数のストレージノードにわたり第1の消去コードスキームに従って書かれたデータを読み取るように構成され、及び
    前記複数のストレージノードは、前記複数のストレージノードにわたり第2の消去コードスキームに従って書かれたデータを読み取るように構成され、前記第1の消去コードスキームに従って書かれたデータは、前記複数のストレージノードにおいて、前記第2の消去コードスキームに従って書かれたデータと共存する、
    請求項8に記載のストレージクラスター。
  10. 前記単一シャーシは、前記複数のストレージノードを包囲し、そして前記単一シャーシは、
    前記複数のストレージノード間に通信を与える通信バス、及び
    前記複数のストレージノードに電力を供給する配電システム、
    を備えた請求項8に記載のストレージクラスター。
  11. 前記複数のストレージノードのうちの各ストレージノードは、フラッシュメモリアレイに結合されたプロセッサを有するプリント回路板を含む、請求項8に記載のストレージクラスター。
  12. 前記単一シャーシは、複数のスロットを含み、それらの複数のスロットのうちの各スロットは、前記複数のストレージノードのうちの1つのストレージノードを収容するように構成される、請求項8に記載のストレージクラスター。
  13. 前記複数のストレージノードの各々は、ユーザデータを読み取る試みとは独立して、前記複数のストレージノードの1つの欠陥を決定するように構成される、請求項8に記載のストレージクラスター。
  14. 前記複数のストレージノードは、ユーザデータの異なる部分にアクセスするために異なる形式の消去コードを適用するように構成される、請求項8に記載のストレージクラスター。
  15. 不揮発性ソリッドステートメモリを有する複数のストレージノードのユーザデータにアクセスするための方法において、
    消去コードを通して複数のストレージノード全体にわたってユーザデータを配布し、前記複数のストレージノードは、それらストレージノードをクラスターとして結合する単一シャーシ内に収容され、
    前記複数のストレージノードのうちの2つが到達不能であることを決定し、及び
    前記複数のストレージノードの残りから、消去コードを経て、ユーザデータにアクセスし、プロセッサが少なくとも1つの方法オペレーションを遂行する、
    ことを含む方法。
  16. 第1の形式の消去コードを使用して前記複数のストレージノードの残りにわたりユーザデータを読み取り、及び
    第2の形式の消去コードを使用して前記複数のストレージノードの残りにわたりユーザデータを書き込む、
    ことを更に含む、請求項15に記載の方法。
  17. 前記消去コードは、前記複数のストレージノードに共存する2つの異なる消去コードスキームを含む、請求項15に記載の方法。
  18. 前記複数のストレージノードのうちの2つが到達不能であることを決定するのは、心臓鼓動の欠如、質問に対する応答の欠如、又は時間切れの1つに基づく、請求項15に記載の方法。
  19. 前記単一シャーシは、前記複数のストレージノード間に通信を与える通信相互接続を含み、及び前記単一シャーシは、前記複数のストレージノードを結合する配電バスを含む、
    請求項15に記載の方法。
  20. 複数の消去コードスキームのどれをユーザデータの配布に適用するか、前記複数のストレージノードにわたって協働的に決定することを更に含む、請求項15に記載の方法。
JP2021014529A 2014-06-04 2021-02-01 ストレージクラスター Active JP7135129B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US14/296,151 US8850108B1 (en) 2014-06-04 2014-06-04 Storage cluster
US14/296,151 2014-06-04
US14/491,552 US9563506B2 (en) 2014-06-04 2014-09-19 Storage cluster
US14/491,552 2014-09-19
US14/610,766 2015-01-30
US14/610,766 US9201600B1 (en) 2014-06-04 2015-01-30 Storage cluster
JP2017516635A JP6903005B2 (ja) 2014-06-04 2015-02-27 ストレージクラスター

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017516635A Division JP6903005B2 (ja) 2014-06-04 2015-02-27 ストレージクラスター

Publications (2)

Publication Number Publication Date
JP2021099814A true JP2021099814A (ja) 2021-07-01
JP7135129B2 JP7135129B2 (ja) 2022-09-12

Family

ID=51588310

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017516635A Active JP6903005B2 (ja) 2014-06-04 2015-02-27 ストレージクラスター
JP2021014529A Active JP7135129B2 (ja) 2014-06-04 2021-02-01 ストレージクラスター

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017516635A Active JP6903005B2 (ja) 2014-06-04 2015-02-27 ストレージクラスター

Country Status (7)

Country Link
US (7) US8850108B1 (ja)
EP (1) EP3036639B1 (ja)
JP (2) JP6903005B2 (ja)
KR (2) KR102118306B1 (ja)
CN (1) CN105706065A (ja)
AU (3) AU2015268889A1 (ja)
WO (1) WO2015187218A1 (ja)

Families Citing this family (195)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9256566B1 (en) 2013-01-24 2016-02-09 Seagate Technology Llc Managed reliability of data storage
JP6368155B2 (ja) * 2013-06-18 2018-08-01 株式会社半導体エネルギー研究所 プログラマブルロジックデバイス
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
JP6521643B2 (ja) 2014-01-24 2019-05-29 株式会社半導体エネルギー研究所 半導体装置
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9075773B1 (en) 2014-05-07 2015-07-07 Igneous Systems, Inc. Prioritized repair of data storage failures
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
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
US9612952B2 (en) 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9201735B1 (en) 2014-06-25 2015-12-01 Igneous Systems, Inc. Distributed storage data repair air via partial data rebuild within an execution path
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
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
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 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
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
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9053114B1 (en) 2014-08-07 2015-06-09 Igneous Systems, Inc. Extensible data path
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
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
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10983859B2 (en) * 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9098451B1 (en) * 2014-11-21 2015-08-04 Igneous Systems, Inc. Shingled repair set for writing data
CN107408074B (zh) * 2015-02-10 2021-07-27 净睿存储股份有限公司 存储系统架构
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US10404523B2 (en) 2015-03-09 2019-09-03 Vapor IO Inc. Data center management with rack-controllers
US10833940B2 (en) 2015-03-09 2020-11-10 Vapor IO Inc. Autonomous distributed workload and infrastructure scheduling
US10257268B2 (en) 2015-03-09 2019-04-09 Vapor IO Inc. Distributed peer-to-peer data center management
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US9276900B1 (en) 2015-03-19 2016-03-01 Igneous Systems, Inc. Network bootstrapping for a distributed storage system
US11294893B2 (en) * 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
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
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
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
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
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
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10230678B2 (en) 2015-08-20 2019-03-12 International Business Machines Corporation Storing messages of a message queue
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
US9785525B2 (en) 2015-09-24 2017-10-10 Netapp, Inc. High availability failover manager
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9836366B2 (en) 2015-10-27 2017-12-05 Netapp, Inc. Third vote consensus in a cluster using shared storage devices
US10108377B2 (en) * 2015-11-13 2018-10-23 Western Digital Technologies, Inc. Storage processing unit arrays and methods of use
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
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
US9998119B2 (en) 2016-05-20 2018-06-12 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device, electronic component, and electronic device
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
US10010008B2 (en) 2016-06-28 2018-06-26 Dell Products, L.P. Sled mounted processing nodes for an information handling system
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 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
US20180034908A1 (en) * 2016-07-27 2018-02-01 Alibaba Group Holding Limited Disaggregated storage and computation system
US10169152B2 (en) 2016-09-12 2019-01-01 International Business Machines Corporation Resilient data storage and retrieval
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
CN108139971B (zh) * 2016-09-29 2020-10-16 华为技术有限公司 一种可扩展内存的芯片
WO2018067467A1 (en) * 2016-10-03 2018-04-12 Ocient Llc Infrastructure improvements for use in a massively parallel database management system
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11461273B1 (en) * 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
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
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10191812B2 (en) 2017-03-30 2019-01-29 Pavilion Data Systems, Inc. Recovery mechanism for low latency metadata log
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US10445004B2 (en) 2017-03-30 2019-10-15 Pavilion Data Systems, Inc. Low latency metadata log
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding 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
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
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
US10545823B2 (en) * 2017-10-13 2020-01-28 Cisco Technology, Inc. Accelerating erasure code replication in distributed systems
US10452444B1 (en) * 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
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
KR102471415B1 (ko) * 2018-01-17 2022-11-29 에스케이하이닉스 주식회사 반도체 장치
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
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
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
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
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
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
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
WO2020081512A1 (en) 2018-10-15 2020-04-23 Netapp, Inc. Improving available storage space in a system with varying data redundancy schemes
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
CN111338647B (zh) * 2018-12-18 2023-09-12 杭州海康威视数字技术股份有限公司 一种大数据集群管理方法和装置
CN111488239B (zh) * 2019-01-28 2023-07-07 伊姆西Ip控股有限责任公司 存储数据的方法、装置和计算机程序产品
US10963378B2 (en) 2019-03-19 2021-03-30 International Business Machines Corporation Dynamic capacity allocation of stripes in cluster based storage systems
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
US20200327025A1 (en) * 2019-04-10 2020-10-15 Alibaba Group Holding Limited Methods, systems, and non-transitory computer readable media for operating a data storage system
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
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
CN110912832A (zh) * 2019-10-15 2020-03-24 深圳市恒扬数据股份有限公司 流量负载均衡的处理方法、装置、电子设备及存储介质
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
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
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
KR20220077208A (ko) * 2020-11-30 2022-06-09 삼성전자주식회사 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법
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
US11340987B1 (en) 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
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
US11347607B1 (en) 2021-04-16 2022-05-31 EMC IP Holding Company LLC Data storage cluster with witness node for selecting surviving storage node after replication failure
US11556441B2 (en) 2021-04-16 2023-01-17 EMC IP Holding Company LLC Data storage cluster with quorum service protection
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11797377B2 (en) 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11803329B2 (en) 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11816359B2 (en) 2021-12-16 2023-11-14 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11940911B2 (en) 2021-12-17 2024-03-26 Netapp, Inc. Persistent key-value store and journaling system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010128886A (ja) * 2008-11-28 2010-06-10 Fujitsu Ltd 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム
JP2013539133A (ja) * 2010-09-28 2013-10-17 ピュア・ストレージ・インコーポレイテッド Raidアレイにおけるデバイス内データ保護
JP2013544386A (ja) * 2010-09-24 2013-12-12 ヒタチ データ システムズ コーポレーション 分散型データベースにおいてインテグリティを管理するためのシステム及び方法
WO2014025821A2 (en) * 2012-08-08 2014-02-13 Amazon Technologies, Inc. Archival data identification

Family Cites Families (239)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390327A (en) 1993-06-29 1995-02-14 Digital Equipment Corporation Method for on-line reorganization of the data on a RAID-4 or RAID-5 array in the absence of one disk and the on-line restoration of a replacement disk
US5479653A (en) 1994-07-14 1995-12-26 Dellusa, L.P. Disk array apparatus and method which supports compound raid configurations and spareless hot sparing
US5649093A (en) 1995-05-22 1997-07-15 Sun Microsystems, Inc. Server disk error recovery system
JP3641872B2 (ja) 1996-04-08 2005-04-27 株式会社日立製作所 記憶装置システム
US7133511B2 (en) 1998-12-11 2006-11-07 Securelogix Corporation Telephony security system
US6725392B1 (en) * 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
CN1357182A (zh) 1999-04-27 2002-07-03 V·A·米什克 用于加密信息的方法以及用于实现该方法的设备
US6275898B1 (en) 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US6643748B1 (en) 2000-04-20 2003-11-04 Microsoft Corporation Programmatic masking of storage units
US6738875B1 (en) 2000-07-31 2004-05-18 Microsoft Corporation Efficient write-watch mechanism useful for garbage collection in a computer system
JP2002050183A (ja) 2000-07-31 2002-02-15 Mitsubishi Electric Corp 半導体記憶装置
US6658478B1 (en) 2000-08-04 2003-12-02 3Pardata, Inc. Data storage system
US7107480B1 (en) 2000-12-22 2006-09-12 Simpletech, Inc. System and method for preventing data corruption in solid-state memory devices after a power failure
US6836816B2 (en) 2001-03-28 2004-12-28 Intel Corporation Flash memory low-latency cache
US7444532B2 (en) 2001-12-03 2008-10-28 Dell Products L.P. System and method for autonomous power sequencing
US20030110205A1 (en) 2001-12-07 2003-06-12 Leith Johnson Virtualized resources in a partitionable server
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
US7032125B2 (en) 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US7051155B2 (en) 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US7076606B2 (en) 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US7774325B2 (en) * 2002-10-17 2010-08-10 Intel Corporation Distributed network attached storage system
US7162575B2 (en) 2002-12-20 2007-01-09 Veritas Operating Corporation Adaptive implementation of requested capabilities for a logical volume
US7159150B2 (en) 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7119572B2 (en) 2003-07-02 2006-10-10 Daniel Industries, Inc. Programmable logic device configuration via device communication lines
CN100578493C (zh) 2003-07-16 2010-01-06 乔蒂德有限公司 分布式数据库系统
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
US20050114595A1 (en) 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
US7370220B1 (en) 2003-12-26 2008-05-06 Storage Technology Corporation Method and apparatus for controlling power sequencing of a plurality of electrical/electronic devices
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7334156B2 (en) 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US7546342B2 (en) * 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
US8090837B2 (en) 2004-05-27 2012-01-03 Hewlett-Packard Development Company, L.P. Communication in multiprocessor using proxy sockets
US7634566B2 (en) 2004-06-03 2009-12-15 Cisco Technology, Inc. Arrangement in a network for passing control of distributed data between network nodes for optimized client access based on locality
US7536506B2 (en) 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US7164608B2 (en) 2004-07-28 2007-01-16 Aplus Flash Technology, Inc. NVRAM memory cell architecture that integrates conventional SRAM and flash cells
US7424592B1 (en) 2004-07-30 2008-09-09 Symantec Operating Corporation System and method for implementing volume sets in a storage system
US7681105B1 (en) 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network
US8375146B2 (en) 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
US7681104B1 (en) 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for erasure coding data across a plurality of data stores in a network
CN104699420A (zh) 2004-11-05 2015-06-10 德洛博公司 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法
US20060114930A1 (en) 2004-11-17 2006-06-01 International Business Machines (Ibm) Corporation In-band control of indicators to identify devices distributed on the same domain
US8180855B2 (en) 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US8886778B2 (en) 2005-04-29 2014-11-11 Netapp, Inc. System and method for proxying network management protocol commands to enable cluster wide management of data backups
US8660131B2 (en) 2005-06-09 2014-02-25 Nxp B.V. Storage unit for communication system node, method for data storage and communication system node
US20070079068A1 (en) 2005-09-30 2007-04-05 Intel Corporation Storing data with different specified levels of data redundancy
US7558859B2 (en) 2005-10-17 2009-07-07 Microsoft Corporation Peer-to-peer auction based data distribution
US8010485B1 (en) * 2005-10-20 2011-08-30 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
US8010829B1 (en) * 2005-10-20 2011-08-30 American Megatrends, Inc. Distributed hot-spare storage in a storage cluster
US7778960B1 (en) * 2005-10-20 2010-08-17 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
US7730258B1 (en) 2005-11-01 2010-06-01 Netapp, Inc. System and method for managing hard and soft lock state information in a distributed storage system environment
US8020047B2 (en) 2006-01-17 2011-09-13 Xyratex Technology Limited Method and apparatus for managing storage of data
US9390019B2 (en) 2006-02-28 2016-07-12 Violin Memory Inc. Method and apparatus for providing high-performance and highly-scalable storage acceleration
US20070208790A1 (en) * 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US20070214314A1 (en) 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
US20070214194A1 (en) 2006-03-07 2007-09-13 James Reuter Consistency methods and systems
US7444499B2 (en) 2006-03-28 2008-10-28 Sun Microsystems, Inc. Method and system for trace generation using memory index hashing
JP2007265314A (ja) * 2006-03-30 2007-10-11 Mitsubishi Electric Information Systems Corp 分散ストレージシステム及び分散ストレージプログラム
US8615599B1 (en) 2006-03-31 2013-12-24 Cisco Technology, Inc. Method and apparatus for preventing loops in a network by controlling broadcasts
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US20070268905A1 (en) 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
CN101454745B (zh) 2006-05-24 2012-09-05 克姆佩棱特科技公司 用于raid管理、重新分配以及重新分段的系统和方法
WO2007149977A2 (en) 2006-06-21 2007-12-27 Rf Code, Inc. Location-based security, privacy, access control and monitoring system
US7743276B2 (en) 2006-09-27 2010-06-22 Hewlett-Packard Development Company, L.P. Sufficient free space for redundancy recovery within a distributed data-storage system
JP4932427B2 (ja) 2006-10-20 2012-05-16 株式会社日立製作所 記憶装置及び記憶方法
US7970873B2 (en) 2006-10-30 2011-06-28 Dell Products L.P. System and method for assigning addresses to information handling systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US20080155191A1 (en) 2006-12-21 2008-06-26 Anderson Robert J Systems and methods for providing heterogeneous storage systems
US8046548B1 (en) * 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US8498967B1 (en) * 2007-01-30 2013-07-30 American Megatrends, Inc. Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US7908448B1 (en) * 2007-01-30 2011-03-15 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems with write-back cache
US8140625B2 (en) 2007-02-20 2012-03-20 Nec Laboratories America, Inc. Method for operating a fixed prefix peer to peer network
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8706914B2 (en) 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US7987383B1 (en) * 2007-04-27 2011-07-26 Netapp, Inc. System and method for rapid indentification of coredump disks during simultaneous take over
US7958303B2 (en) 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
US8819311B2 (en) * 2007-05-23 2014-08-26 Rpx Corporation Universal user input/output application layers
WO2008152708A1 (ja) 2007-06-13 2008-12-18 Fujitsu Limited Raidグループ変換装置、raidグループ変換方法およびraidグループ変換プログラム
US8051362B2 (en) 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
US8140719B2 (en) 2007-06-21 2012-03-20 Sea Micro, Inc. Dis-aggregated and distributed data-center architecture using a direct interconnect fabric
IES20080508A2 (en) 2007-06-22 2008-12-10 Tenoware R & D Ltd Network distributed file system
JP2009037304A (ja) 2007-07-31 2009-02-19 Hitachi Ltd Raidレベルを変更する機能を有したストレージシステム
US7970919B1 (en) 2007-08-13 2011-06-28 Duran Paul A Apparatus and system for object-based storage solid-state drive and method for configuring same
US7565446B2 (en) 2007-08-27 2009-07-21 Gear Six, Inc. Method for efficient delivery of clustered data via adaptive TCP connection migration
WO2009032711A1 (en) 2007-08-29 2009-03-12 Nirvanix, Inc. Policy-based file management for a storage delivery network
US7991822B2 (en) 2007-08-29 2011-08-02 International Business Machines Corporation Propagation of updates for attributes of a storage object from an owner node of the storage object to other nodes
US8225006B1 (en) 2007-08-30 2012-07-17 Virident Systems, Inc. Methods for data redundancy across three or more storage devices
US7827439B2 (en) 2007-09-28 2010-11-02 Symantec Corporation System and method of redundantly storing and retrieving data with cooperating storage devices
US8661218B1 (en) 2007-10-18 2014-02-25 Datadirect Networks, Inc. Method for reducing latency in a solid-state memory system while maintaining data integrity
US7870105B2 (en) 2007-11-20 2011-01-11 Hitachi, Ltd. Methods and apparatus for deduplication in storage system
WO2009065318A1 (fr) * 2007-11-22 2009-05-28 China Mobile Communications Corporation Procédé de stockage de données, serveur de gestion, équipement et système de stockage
KR20090082784A (ko) 2008-01-28 2009-07-31 삼성전자주식회사 Nvram 셀을 채용한 플래쉬 메모리 장치
US8423739B2 (en) 2008-02-06 2013-04-16 International Business Machines Corporation Apparatus, system, and method for relocating logical array hot spots
US8161309B2 (en) 2008-02-19 2012-04-17 International Business Machines Corporation Apparatus, system, and method for controlling power sequence in a blade center environment
US7885938B1 (en) 2008-02-27 2011-02-08 Symantec Corporation Techniques for granular recovery of data from local and remote storage
JP4729062B2 (ja) 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
US8346778B2 (en) 2008-05-21 2013-01-01 Oracle International Corporation Organizing portions of a cascading index on disk
FR2931970B1 (fr) 2008-05-27 2010-06-11 Bull Sas Procede de generation de requetes de manipulation d'une base de donnees d'initialisation et d'administration d'une grappe de serveurs , support de donnees et grappe de serveurs correspondants
US8145841B2 (en) 2008-06-06 2012-03-27 Pivot3 Method and system for initializing storage in a storage system
US9323681B2 (en) 2008-09-18 2016-04-26 Avere Systems, Inc. File storage system, cache appliance, and method
US8706694B2 (en) 2008-07-15 2014-04-22 American Megatrends, Inc. Continuous data protection of files stored on a remote storage device
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US8108502B2 (en) 2008-07-24 2012-01-31 Symform, Inc. Storage device for use in a shared community storage network
TW201007574A (en) 2008-08-13 2010-02-16 Inventec Corp Internet server system and method of constructing and starting a virtual machine
US7992037B2 (en) 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US8351290B1 (en) 2008-09-12 2013-01-08 Marvell International Ltd. Erased page detection
US8224782B2 (en) 2008-09-29 2012-07-17 Hitachi, Ltd. System and method for chunk based tiered storage volume migration
US8086634B2 (en) 2008-10-07 2011-12-27 Hitachi, Ltd. Method and apparatus for improving file access performance of distributed storage system
US8086911B1 (en) * 2008-10-29 2011-12-27 Netapp, Inc. Method and apparatus for distributed reconstruct in a raid system
WO2010064328A1 (en) 2008-12-03 2010-06-10 Hitachi, Ltd. Information processing system and method of acquiring backup in an information processing system
US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
US7941697B2 (en) 2008-12-30 2011-05-10 Symantec Operating Corporation Failure handling using overlay objects on a file system using object based storage devices
US8397016B2 (en) 2008-12-31 2013-03-12 Violin Memory, Inc. Efficient use of hybrid media in cache architectures
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
CA2689744C (en) 2009-01-08 2015-05-05 New Flyer Industries Canada Ulc System and method for monitoring operation of vehicles
US8522073B2 (en) * 2009-02-03 2013-08-27 Bittorrent, Inc. Distributed storage of recoverable data
US8145838B1 (en) * 2009-03-10 2012-03-27 Netapp, Inc. Processing and distributing write logs of nodes of a cluster storage system
US8225057B1 (en) * 2009-03-24 2012-07-17 Netapp, Inc. Single-system configuration for backing-up and restoring a clustered storage system
US8117388B2 (en) 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
EP2435926A4 (en) 2009-05-29 2013-05-29 Hewlett Packard Development Co SYSTEM AND METHOD FOR ASSIGNING RESOURCES OF A SERVER TO A VIRTUAL MACHINE
US8145840B2 (en) 2009-06-05 2012-03-27 Lsi Corporation Method and system for storing excess data in a redundant array of independent disk level 6
WO2010147596A1 (en) * 2009-06-19 2010-12-23 Hewlett-Packard Development Company, L.P. Enclosure power controller
KR101626528B1 (ko) 2009-06-19 2016-06-01 삼성전자주식회사 플래시 메모리 장치 및 이의 데이터 독출 방법
EP2455865B1 (en) 2009-07-17 2020-03-04 Toshiba Memory Corporation Memory management device
US8458287B2 (en) 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US8176284B2 (en) 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
WO2011031899A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
US8706715B2 (en) 2009-10-05 2014-04-22 Salesforce.Com, Inc. Methods and systems for joining indexes for query optimization in a multi-tenant database
US20110119462A1 (en) 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US8484259B1 (en) 2009-12-08 2013-07-09 Netapp, Inc. Metadata subsystem for a distributed object store in a network storage system
US8140821B1 (en) 2009-12-18 2012-03-20 Emc Corporation Efficient read/write algorithms and associated mapping for block-level data reduction processes
US8583866B2 (en) * 2010-02-22 2013-11-12 International Business Machines Corporation Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8103904B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8756387B2 (en) 2010-03-05 2014-06-17 International Business Machines Corporation Method and apparatus for optimizing the performance of a storage system
US8627138B1 (en) 2010-03-26 2014-01-07 Emc Corporation Data protection system and method
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US8631269B2 (en) * 2010-05-21 2014-01-14 Indian Institute Of Science Methods and system for replacing a failed node in a distributed storage network
US8239618B2 (en) 2010-05-27 2012-08-07 Dell Products L.P. System and method for emulating preconditioning of solid-state device
JP5521794B2 (ja) 2010-06-03 2014-06-18 株式会社バッファロー 記憶装置及びその制御プログラム
US9552299B2 (en) 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US9818478B2 (en) 2012-12-07 2017-11-14 Attopsemi Technology Co., Ltd Programmable resistive device and memory using diode as selector
US9842222B2 (en) 2010-08-25 2017-12-12 International Business Machines Corporation Securely rebuilding an encoded data slice
US10157002B2 (en) 2010-08-26 2018-12-18 International Business Machines Corporation Migrating an encoded data slice based on an end-of-life memory level of a memory device
US8473778B2 (en) 2010-09-08 2013-06-25 Microsoft Corporation Erasure coding immutable data
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US9009724B2 (en) 2010-09-24 2015-04-14 Hewlett-Packard Development Company, L.P. Load balancing data access in virtualized storage nodes
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8327080B1 (en) * 2010-09-28 2012-12-04 Emc Corporation Write-back cache protection
US11232022B2 (en) 2010-10-29 2022-01-25 Samsung Electronics Co., Ltd. Memory system, data storage device, user device and data management method thereof having a data management information matching determination
US8949502B2 (en) 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM
US8484163B1 (en) 2010-12-16 2013-07-09 Netapp, Inc. Cluster configuration backup and recovery
US8738582B2 (en) * 2010-12-27 2014-05-27 Amplidata Nv Distributed object storage system comprising performance optimizations
US8627136B2 (en) * 2010-12-27 2014-01-07 Netapp Inc. Non-disruptive failover of RDMA connection
US8935576B2 (en) * 2011-01-18 2015-01-13 International Business Machines Corporation Automated cabling process for a complex environment
EP2671160A2 (en) 2011-02-01 2013-12-11 Drobo, Inc. System, apparatus, and method supporting asymmetrical block-level redundant storage
KR101502896B1 (ko) 2011-02-14 2015-03-24 주식회사 케이티 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
US20120226934A1 (en) 2011-03-01 2012-09-06 Rao G R Mohan Mission critical nand flash
US9021215B2 (en) 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
EP2702502A4 (en) * 2011-04-29 2015-06-03 Tata Consultancy Services Ltd ARCHIVING AND RECOVERY SYSTEM
US8725730B2 (en) 2011-05-23 2014-05-13 Hewlett-Packard Development Company, L.P. Responding to a query in a data processing system
US8544029B2 (en) 2011-05-24 2013-09-24 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US8930714B2 (en) 2011-07-19 2015-01-06 Elwha Llc Encrypted memory
US9575903B2 (en) 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US8930307B2 (en) 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
EP2742428B1 (en) 2011-08-12 2016-01-06 Sandisk Enterprise IP LLC Cache management including solid state device virtualization
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US9021053B2 (en) * 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8886910B2 (en) 2011-09-12 2014-11-11 Microsoft Corporation Storage device drivers and cluster participation
US8959110B2 (en) 2011-09-18 2015-02-17 Microsoft Technology Licensing, Llc Dynamic query for external data connections
US8862928B2 (en) * 2011-09-20 2014-10-14 Cloudbyte, Inc. Techniques for achieving high availability with multi-tenant storage when a partial fault occurs or when more than two complete faults occur
US8700875B1 (en) * 2011-09-20 2014-04-15 Netapp, Inc. Cluster view for storage devices
US20130173853A1 (en) 2011-09-26 2013-07-04 Nec Laboratories America, Inc. Memory-efficient caching methods and systems
US8990495B2 (en) 2011-11-15 2015-03-24 Emc Corporation Method and system for storing data in raid memory devices
US8713405B2 (en) 2011-11-22 2014-04-29 Simplivity Corporation Method and apparatus for allocating erasure coded data to disk storage
JP5923964B2 (ja) 2011-12-13 2016-05-25 富士通株式会社 ディスクアレイ装置、制御装置、およびプログラム
US8788913B1 (en) 2011-12-30 2014-07-22 Emc Corporation Selection of erasure code parameters for no data repair
EP2791774A1 (en) 2012-02-08 2014-10-22 Hitachi, Ltd. Storage apparatus with a plurality of nonvolatile semiconductor storage units and control method thereof to place hot data in storage units with higher residual life and cold data in storage units with lower residual life
US8819383B1 (en) 2012-02-17 2014-08-26 Netapp, Inc. Non-disruptive realignment of virtual data
US8856619B1 (en) 2012-03-09 2014-10-07 Google Inc. Storing data across groups of storage nodes
US9323667B2 (en) 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
EP2660723A1 (en) 2012-05-03 2013-11-06 Thomson Licensing Method of data storing and maintenance in a distributed data storage system and corresponding device
US8762353B2 (en) 2012-06-13 2014-06-24 Caringo, Inc. Elimination of duplicate objects in storage clusters
US8799746B2 (en) 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
US8930633B2 (en) 2012-06-14 2015-01-06 International Business Machines Corporation Reducing read latency using a pool of processing cores
US9053808B2 (en) 2012-06-21 2015-06-09 Sandisk Technologies Inc. Flash memory with targeted read scrub algorithm
US8850288B1 (en) 2012-06-27 2014-09-30 Amazon Technologies, Inc. Throughput-sensitive redundancy encoding schemes for data storage
US9271229B2 (en) * 2012-07-20 2016-02-23 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for partial downloading in wireless distributed networks
CN103577274B (zh) 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
KR102003930B1 (ko) 2012-07-31 2019-07-25 삼성전자주식회사 불휘발성 메모리 장치의 데이터 라이팅 제어방법 및 웨어레벨링 제어 기능을 가지는 메모리 콘트롤러
US9189650B2 (en) 2012-07-31 2015-11-17 J.D. Power And Associates Privacy preserving method for summarizing user data
US8904231B2 (en) * 2012-08-08 2014-12-02 Netapp, Inc. Synchronous local and cross-site failover in clustered storage systems
US9122401B2 (en) 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US8929066B2 (en) 2012-08-28 2015-01-06 Skyera, Inc. Chassis with separate thermal chamber for solid state memory
US9778856B2 (en) 2012-08-30 2017-10-03 Microsoft Technology Licensing, Llc Block-level access to parallel storage
US9613656B2 (en) 2012-09-04 2017-04-04 Seagate Technology Llc Scalable storage protection
US8887011B2 (en) 2012-09-13 2014-11-11 Sandisk Technologies Inc. Erased page confirmation in multilevel memory
US9116819B2 (en) 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system
US9348538B2 (en) 2012-10-18 2016-05-24 Netapp, Inc. Selective deduplication
KR20140072637A (ko) 2012-12-05 2014-06-13 삼성전자주식회사 비휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법
US20140181402A1 (en) 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
US9134908B2 (en) 2013-01-09 2015-09-15 Apple Inc. Logical volume space sharing
US8862847B2 (en) 2013-02-08 2014-10-14 Huawei Technologies Co., Ltd. Distributed storage method, apparatus, and system for reducing a data loss that may result from a single-point failure
US20140237164A1 (en) 2013-02-19 2014-08-21 Kabushiki Kaisha Toshiba Hybrid drive that implements a deferred trim list
US8824261B1 (en) 2013-03-07 2014-09-02 Seagate Technology Llc Peer to peer vibration mitigation
US9201733B2 (en) 2013-03-13 2015-12-01 Futurewei Technologies, Inc. Systems and methods for data repair
US11086898B2 (en) * 2013-03-13 2021-08-10 Amazon Technologies, Inc. Token-based admission control for replicated writes
US9025393B2 (en) 2013-03-25 2015-05-05 Seagate Technology Llc Method of optimizing solid state drive soft retry voltages
CN103135946B (zh) * 2013-03-25 2014-11-26 中国人民解放军国防科学技术大学 基于ssd的大规模存储系统中的文件布局方法
WO2014153716A1 (zh) * 2013-03-26 2014-10-02 北京大学深圳研究生院 一种最小带宽再生码的编码和存储节点修复方法
ES2687609T3 (es) 2013-05-02 2018-10-26 Huawei Technologies Co., Ltd. Sistema informático, método para acceder a un terminal de interconexión de componentes periféricos exprés y equipo
US9098447B1 (en) * 2013-05-20 2015-08-04 Amazon Technologies, Inc. Recovery of corrupted erasure-coded data files
US9674105B2 (en) * 2013-06-19 2017-06-06 International Business Machines Corporation Applying a platform code level update to an operational node
US9244761B2 (en) 2013-06-25 2016-01-26 Microsoft Technology Licensing, Llc Erasure coding across multiple zones and sub-zones
US9378084B2 (en) 2013-06-25 2016-06-28 Microsoft Technology Licensing, Llc Erasure coding across multiple zones
US20150032720A1 (en) 2013-07-23 2015-01-29 Yahoo! Inc. Optimizing database queries
US20150039645A1 (en) 2013-08-02 2015-02-05 Formation Data Systems, Inc. High-Performance Distributed Data Storage System with Implicit Content Routing and Data Deduplication
US20150039849A1 (en) 2013-08-02 2015-02-05 Formation Data Systems, Inc. Multi-Layer Data Storage Virtualization Using a Consistent Data Reference Model
US9465735B2 (en) 2013-10-03 2016-10-11 Qualcomm Incorporated System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity
US9553822B2 (en) 2013-11-12 2017-01-24 Microsoft Technology Licensing, Llc Constructing virtual motherboards and virtual storage devices
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US8843700B1 (en) 2013-11-29 2014-09-23 NXGN Data, Inc. Power efficient method for cold storage data retention management
US9667496B2 (en) 2013-12-24 2017-05-30 International Business Machines Corporation Configuration updates across peer storage systems
US9251064B2 (en) 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US9829066B2 (en) 2014-04-07 2017-11-28 Gates Corporation Electrically conductive power transmission belt
US9075773B1 (en) * 2014-05-07 2015-07-07 Igneous Systems, Inc. Prioritized repair of data storage failures
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9003144B1 (en) * 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of 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
JP6483966B2 (ja) 2014-07-04 2019-03-13 キヤノン株式会社 画像読取装置、画像読取装置を含むシステム、画像読取装置により実行される方法、およびプログラム
US10983859B2 (en) * 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9384082B1 (en) 2015-10-23 2016-07-05 Pure Storage, Inc. Proactively providing corrective measures for storage arrays
US10289488B1 (en) * 2017-04-27 2019-05-14 EMC IP Holding Company LLC System and method for recovery of unrecoverable data with erasure coding and geo XOR

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010128886A (ja) * 2008-11-28 2010-06-10 Fujitsu Ltd 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム
JP2013544386A (ja) * 2010-09-24 2013-12-12 ヒタチ データ システムズ コーポレーション 分散型データベースにおいてインテグリティを管理するためのシステム及び方法
JP2013539133A (ja) * 2010-09-28 2013-10-17 ピュア・ストレージ・インコーポレイテッド Raidアレイにおけるデバイス内データ保護
WO2014025821A2 (en) * 2012-08-08 2014-02-13 Amazon Technologies, Inc. Archival data identification

Also Published As

Publication number Publication date
KR20170097791A (ko) 2017-08-28
US9934089B2 (en) 2018-04-03
US20200257591A1 (en) 2020-08-13
US20150355969A1 (en) 2015-12-10
KR102118306B1 (ko) 2020-06-03
US10671480B2 (en) 2020-06-02
AU2017200947A1 (en) 2017-03-02
KR20160039265A (ko) 2016-04-08
KR101770547B1 (ko) 2017-08-23
AU2018202365A1 (en) 2018-04-26
EP3036639A1 (en) 2016-06-29
AU2018202365B2 (en) 2020-03-05
JP2017519320A (ja) 2017-07-13
JP6903005B2 (ja) 2021-07-14
AU2015268889A1 (en) 2016-02-25
US20180225174A1 (en) 2018-08-09
US11714715B2 (en) 2023-08-01
WO2015187218A1 (en) 2015-12-10
US9201600B1 (en) 2015-12-01
JP7135129B2 (ja) 2022-09-12
US20230376379A1 (en) 2023-11-23
CN105706065A (zh) 2016-06-22
US20160085628A1 (en) 2016-03-24
US9563506B2 (en) 2017-02-07
US20150355848A1 (en) 2015-12-10
EP3036639A4 (en) 2016-07-13
EP3036639B1 (en) 2020-04-15
US8850108B1 (en) 2014-09-30

Similar Documents

Publication Publication Date Title
JP7135129B2 (ja) ストレージクラスター
US11593203B2 (en) Coexisting differing erasure codes
US11138082B2 (en) Action determination based on redundancy level
US11385799B2 (en) Storage nodes supporting multiple erasure coding schemes
JP6796589B2 (ja) ストレージシステムアーキテクチャー
US11734186B2 (en) Heterogeneous storage with preserved addressing
US20240160540A1 (en) Data rebuild independent of error detection
AU2015269364B2 (en) Mechanism for persisting messages in a storage system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220601

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220831

R150 Certificate of patent or registration of utility model

Ref document number: 7135129

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150