JP6307537B2 - Ssd環境のための適応的raid - Google Patents

Ssd環境のための適応的raid Download PDF

Info

Publication number
JP6307537B2
JP6307537B2 JP2016034148A JP2016034148A JP6307537B2 JP 6307537 B2 JP6307537 B2 JP 6307537B2 JP 2016034148 A JP2016034148 A JP 2016034148A JP 2016034148 A JP2016034148 A JP 2016034148A JP 6307537 B2 JP6307537 B2 JP 6307537B2
Authority
JP
Japan
Prior art keywords
data
raid
data storage
storage devices
storage device
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.)
Active
Application number
JP2016034148A
Other languages
English (en)
Other versions
JP2016105320A (ja
Inventor
コルグローヴ,ジョン
ヘイズ,ジョン
ホン,ボー
ミラー,イーサン
Original Assignee
ピュア・ストレージ・インコーポレイテッド
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 ピュア・ストレージ・インコーポレイテッド filed Critical ピュア・ストレージ・インコーポレイテッド
Publication of JP2016105320A publication Critical patent/JP2016105320A/ja
Application granted granted Critical
Publication of JP6307537B2 publication Critical patent/JP6307537B2/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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、コンピュータネットワークに関し、より詳細には、複数のソリッドステートストレージデバイス間でデータを効率的に分散させる発明に関する。
コンピュータのメモリストレージ及びデータ帯域幅が増すと、企業が日々管理するデータの量及び複雑性も増す。通常、データセンターなどの大規模分散型ストレージシステムは、多くの業務を実行する。分散型ストレージシステムは、1又はそれ以上のネットワークにより相互接続されたクライアントコンピュータに結合することができる。分散型ストレージシステムのいずれかの部分が不良を起こし、又は利用できなくなった場合には、企業活動が損なわれ、又は完全に停止する恐れがある。従って、分散型ストレージシステムは、データの利用可能性及び高パフォーマンス機能のための高い標準を維持すると予想される。本明細書で使用するストレージディスクは、ストレージ技術のタイプによってはディスクを含まないものもあるので、ストレージデバイスと呼ぶことができる。
多くの場合、ストレージデバイスは、データ損失からの保護のために、エラー検出機構及びエラー訂正機構を含む。多くの場合、これらの機構は、デバイスにより生成されてデバイス自体に記憶されるエラー訂正符号の形をとる。また、分散型ストレージシステムは、分散アルゴリズムを利用して、一群のストレージデバイス間でデータを分散させることもできる。一般に、これらのアルゴリズムは、中央ディレクトリに依拠せずにデータオブジェクトをストレージデバイスにマッピングする。このようなアルゴリズムの例に、レプリケーション・アンダー・スケーラブル・ハッシング(RUSH)及びコントロールド・レプリケーション・アンダー・スケーラブル・ハッシング(CRUSH)がある。分散型ストレージシステム内の複数のクライアントは、中央ディレクトリを伴わずに複数のサーバ上のデータオブジェクトに同時にアクセスすることができる。また、記憶されているメタデータの量を低減することもできる。しかしながら、容量、入力/出力(I/O)特性及び信頼性問題が異なる複数のストレージディスク間でデータを分散させるという困難なタスクが依然として残る。ストレージデバイス自体と同様に、これらのアルゴリズムも、(RAID5及びRAID6などの)RAIDタイプアルゴリズム又はリードソロモン符号などのエラー検出及び訂正アルゴリズムを含むことができる。
動的に追加及び除去できる複数のストレージデバイス間でデータを分散させるために使用する方法は、選択したストレージデバイスに関連する技術及び機構によって決まる。例えば、上述したアルゴリズムは、ハードディスクドライブ(HDD)を利用するシステムに合わせて開発されたものである。HDDは、各々が磁気媒体で被覆された1又はそれ以上の回転ディスクを含む。これらのディスクは、毎日数時間にわたり毎分数千回転の速さで回転する。また、この回転ディスク上への磁気読み込み/書き込み装置の位置付けには、磁気アクチュエータが関与する。これらのアクチュエータは、摩擦、摩耗、振動及び機械的不均衡の影響を受けやすく、結果的に信頼性問題が生じる。上述したデータ分散アルゴリズムは、HDDのこれらの特性及び挙動に基づくものである。
別のタイプの記憶ディスクの例に、ソリッドステートディスク(SSD)がある。ソリッドステートディスクは、ソリッドステートドライブと呼ぶこともできる。SSDは、HDDインターフェイスをエミュレートできるが、HDDで見られるような電気機械デバイスではなく固体メモリを利用して永続データを記憶する。例えば、SSDは、一群のフラッシュメモリを含むことができる。可動部品又は機械的遅延がなければ、SSDのアクセス時間及びレイテンシは、HDDよりも短くなり得る。しかしながら、通常、SSDの書き込みレイテンシはかなり長い。入力/出力(I/O)特性が異なることに加え、SSDの故障モードもHDDとは異なる。従って、記憶のためにSSDを備えたシステムでは、HDDに合わせて開発された分散型データ配置アルゴリズムを利用しながら高パフォーマンス及び高信頼性を実現できない場合がある。
上記に鑑み、複数のソリッドステートストレージデバイス間でデータを効率的に分散し、エラーを検出して訂正するためのシステム及び方法が望まれている。
複数のソリッドステートストレージデバイス間でデータを効率的に分散して管理するためのコンピュータシステム及び方法の様々な実施形態を開示する。
1つの実施形態では、コンピュータシステムが、ネットワークを介して読み込み及び書き込み要求を受け取るように結合された1又はそれ以上のデータストレージアレイにネットワークを介して読み込み及び書き込み要求を伝達するように構成された複数のクライアントコンピュータを備える。複数のストレージデバイス上に複数の記憶位置を有する(単複の)データストレージアレイを企図する。様々な実施形態では、このストレージデバイスが、データを記憶して保護するための独立ドライブ冗長アレイ(RAID)構成で構成される。データストレージデバイスは、フラッシュメモリセルなどの、データ記憶のための固体メモリ技術を含むことができる。データストレージデバイスは、データを記憶する際に使用するための第1のRAIDレイアウトを決定し、この第1のRAIDレイアウトに従ってデバイスグループに第1のRAIDストライプを書き込むように構成されたストレージコントローラをさらに含む。このコントローラは、第1の状態を検出したことに応答して、第1のRAIDレイアウトとは異なる第2のRAIDレイアウトを決定し、この第2のレイアウトに従ってデバイスグループに第2のRAIDストライプを書き込むように構成され、これによりデバイスグループは、第1のRAIDレイアウト及び第2のRAIDレイアウトに従うデータを同時に記憶するようになる。様々な実施形態では、第1の状態が、デバイスグループにデータを記憶するための空間を割り当てるべきであることを検出することを含む。また、このコントローラが、複数のストレージデバイスのうちの1又はそれ以上のデバイスの特性に少なくとも部分的に基づいて、使用すべきRAIDレイアウトのタイプを決定する実施形態も企図される。
以下の説明及び添付図面を検討すると、これらの及びその他の実施形態が明らかになるであろう。
ネットワークアーキテクチャの1つの実施形態を示す汎用ブロック図である。 動的デバイス内冗長スキームの1つの実施形態の汎用ブロック図である。 データストレージサブシステムにおいてデバイス内保護を調整する方法の1つの実施形態を示す汎用フロー図である。 ストレージサブシステムの1つの実施形態の汎用ブロック図である。 デバイスユニットの1つの実施形態の汎用ブロック図である。 状態テーブルの1つの実施形態を示す汎用ブロック図である。 フレキシブルなRAIDデータレイアウトアーキテクチャの1つの実施形態を示す汎用ブロック図である。 フレキシブルなRAIDデータレイアウトアーキテクチャの別の実施形態を示す汎用ブロック図である。 データストレージサブシステム内のレイアウトを動的に決定する方法の1つの実施形態を示す汎用フロー図である。 フレキシブルなRAIDデータレイアウトアーキテクチャのさらに別の実施形態を示す汎用ブロック図である。 デバイスレイアウトの1つの実施形態を示す図である。 セグメントの1つの実施形態を示す図である。 異なるページタイプ内のデータストレージ構成の1つの実施形態を示す汎用ブロック図である。 ハイブリッドRAIDデータレイアウトの1つの実施形態を示す汎用ブロック図である。 データストレージサブシステム内で代替のRAID構成を選択する方法の1つの実施形態を示す汎用フロー図である。
本発明は様々な修正及び代替形態が可能であるが、図面には特定の実施形態を一例として示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではなく、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全ての修正物、同等物及び代替物を含むことを意図するものであると理解されたい。
以下の説明では、本発明を完全に理解できるように数多くの具体的な詳細を示す。しかしながら、当業者であれば、これらの具体的な詳細を伴わずに本発明を実施できると認識すべきである。いくつかの例では、本発明を曖昧にしないように、周知の回路、構造、信号、コンピュータプログラム命令及び技術については詳細に示していない。
図1を参照すると、ネットワークアーキテクチャ100の1つの実施形態の汎用ブロック図を示している。後述するように、ネットワークアーキテクチャ100の1つの実施形態は、ネットワーク180を介して互いに、及びデータストレージアレイ120a〜120bに相互接続されたクライアントコンピュータシステム110a〜110bを含む。ネットワーク180は、スイッチ140を介して第2のネットワーク190に結合することができる。このネットワーク190を介して、クライアントコンピュータシステム110cが、クライアントコンピュータシステム110a〜110b及びデータストレージアレイ120a〜120bに結合される。また、ネットワーク190は、スイッチ150を介してインターネット160又はその他の外部ネットワークに結合することもできる。
なお、代替の実施形態では、クライアントコンピュータ及びサーバ、スイッチ、ネットワーク、データストレージアレイ及びデータストレージデバイスの数及びタイプが、図1に示すものに限定されない。1又はそれ以上のクライアントは、様々な時点でオフライン動作することができる。また、動作中、ユーザがネットワークアーキテクチャ100への接続、切断及び再接続を行うと、個々のクライアントコンピュータの接続タイプが変化することもある。図1に示す構成要素の各々のさらなる説明を手短に行う。まず、データストレージアレイ120a〜120bにより提供される機能のいくつかの概要について説明する。
ネットワークアーキテクチャ100では、データストレージアレイ120a〜120bの各々を、クライアントコンピュータシステム110a〜110cなどの異なるサーバ及びコンピュータ間のデータの共有に使用することができる。また、データストレージアレイ120a〜120bを、ディスクのミラーリング、バックアップ及び復元、保存データの保管及び検索、並びにストレージデバイス間のデータ移行に使用することもできる。代替の実施形態では、クラスタを形成するために、1又はそれ以上のクライアントコンピュータシステム110a〜110cを、高速ローカルエリアネットワーク(LAN)を介して互いにリンクさせることができる。互いにリンクされた1又はそれ以上のノードはクラスタを形成し、これによりデータストレージアレイ120a〜120bの1つに存在するクラスタ共有ボリュームなどのストレージリソースを共有することができる。
データストレージアレイ120a〜120bの各々は、データ記憶のためのストレージサブシステム170を含む。ストレージサブシステム170は、複数のストレージデバイス176a〜176mを含むことができる。これらのストレージデバイス176a〜176mは、クライアントコンピュータシステム110a〜110cにデータ記憶サービスを提供することができる。ストレージデバイス176a〜176mの各々は、読み込み及び書き込み要求を受け取るとともに、各々をアレイ内の行及び列としてアドレス指定可能な複数のデータ記憶位置を含むように構成することができる。1つの実施形態では、ストレージデバイス176a〜176m内のデータ記憶位置を、論理的で冗長なストレージコンテナ又はRAIDアレイ(低価格/独立ディスク冗長アレイ)内に配置することができる。しかしながら、ストレージデバイス176a〜176mは、ディスクを含まないこともある。1つの実施形態では、ストレージデバイス176a〜176mの各々が、従来のハードディスクドライブ(HDD)とは異なる技術をデータ記憶に利用することができる。例えば、ストレージデバイス176a〜176mの1又はそれ以上は、永続データを記憶するための固体メモリから成るストレージを含み、又はこれにさらに結合することができる。他の実施形態では、ストレージデバイス176a〜176mの1又はそれ以上が、スピン注入法、磁気抵抗ランダムアクセスメモリ(MRAM)法、又はその他の記憶技術を利用するストレージを含み、又はこのようなストレージにさらに結合することができる。これらの異なる記憶技術により、ストレージデバイス間で異なる信頼性特性が生じ得る。
ストレージデバイス176a〜176mの各々において使用される技術及び機構のタイプにより、データオブジェクトマッピング、並びにエラー検出及び訂正に使用するアルゴリズムを決定することができる。これらのアルゴリズムで使用されるロジックを、基本オペレーティングシステム(OS)116、ファイルシステム140、ストレージサブシステムコントローラ174内の1又はそれ以上のグローバルRAIDエンジン178、及びストレージデバイス176a〜176mの各々における制御ロジックのうちの1又はそれ以上に含めることができる。
1つの実施形態では、含まれる固体メモリが、ソリッドステートドライブ(SSD)技術を含む。通常、SSD技術は、フラッシュメモリセルを利用する。当業で周知のように、フラッシュメモリセルは、フローティングゲート内に捕捉され蓄積された電子の範囲に基づく二進値を保持する。完全に消去されたフラッシュメモリセルは、フローティングゲート内に電子を全く又は最低数しか蓄積していない。消去されたフラッシュメモリセルには、シングルレベルセル(SLC)フラッシュの二進1などの特定の二進値が関連付けられる。マルチレベルセル(MLC)フラッシュでは、消去されたフラッシュメモリセルに二進値11が関連付けられる。フラッシュメモリセル内の制御ゲートに所与の閾値電圧よりも高い電圧を印加した後、このフラッシュメモリセルは、フローティングゲート内に所与の範囲の電子を捕捉する。従って、プログラムされた(書き込まれた)フラッシュメモリセルには、SLCフラッシュの二進0などの別の特定の二進値が関連付けられる。MLCフラッシュセルでは、制御ゲートに印加された電圧に応じて、プログラムされたメモリセルに複数の二進値の1つを関連付けることができる。
一般的に言えば、SSD技術では、読み込みアクセスレイテンシタイムがHDD技術よりも短い。しかしながら、SSDの書き込みパフォーマンスは、SSD内の未使用のプログラマブルブロックの利用可能性によって大きく影響を受ける。SSDの書き込みパフォーマンスは、SSDの読み込みパフォーマンスに比べて大幅に遅いので、同様のレイテンシを予想する一部の機能又は動作に関する問題が生じることがある。また、HDD技術とSDD技術の間の技術及び機構の違いにより、データストレージデバイス176a〜176mの信頼性特性に違いが生じることがある。
様々な実施形態では、SSD内のフラッシュセルに新たなデータが書き込まれる前に、一般にこのフラッシュセルを消去しなければならない。また、様々なフラッシュ技術における消去動作は、ブロック単位で行わなければならない。従って、ブロック(消去セグメント又は消去ブロック)内のフラッシュメモリセルは、全てまとめて消去される。フラッシュ消去ブロックは、複数のページを含むことができる。例えば、1ページのサイズが4キロバイト(KB)であり、1ブロックが64ページ、すなわち256KBを含むことができる。フラッシュデバイスでは、読み込み動作に比べて消去動作のレイテンシの方が相対的に高いことがあり、これにより対応する書き込み動作のレイテンシが増すことがある。フラッシュ技術のプログラミング又は読み込みは、消去ブロックサイズよりも低い粒度レベルで行うことができる。例えば、フラッシュセルには、バイトサイズ、単語サイズ又はその他のサイズでプログラム又は読み込みを行うことができる。
フラッシュセルには、反復的な消去プログラム動作後に摩耗が生じる。この場合、この摩耗は、MLCフラッシュセルの基板とフローティングゲートの間の誘電酸化物層に注入され捕捉される電荷によるものである。1つの例では、MLCフラッシュセルが、10,000〜100,000サイクルなどの、消去及びプログラム動作を受ける回数限界を有することができる。また、SSDには、別のフラッシュセルの消去又はプログラム中に隣接する又は近隣のフラッシュセルに偶発的状態変化を引き起こすプログラムディスターブエラーが生じることがある。さらに、SSDは、別のフラッシュセルの読み込み中に近隣のフラッシュセルの偶発的状態変化が生じるリードディスターブエラーも含む。
1又はそれ以上のストレージデバイス176a〜176mの各々の特性が分かると、より効率的なデータオブジェクトマッピング、並びにエラー検出及び訂正を行うことができる。1つの実施形態では、ストレージコントローラ174内のグローバルRAIDエンジン178が、ストレージデバイス176a〜176mに関して、I/O要求の応答時間に一貫性がないこと、対応するアクセスに対するデータが誤っていること、エラー率及びアクセス率のうちの少なくとも1つ又はそれ以上を検出することができる。グローバルRAIDエンジン178は、少なくともこれらの特性に応答して、ストレージデバイス176a〜176m内の対応するストレージデバイスグループにいずれのRAIDデータレイアウトアーキテクチャを利用すべきかを判断することができる。また、グローバルRAIDエンジン178は、ストレージデバイス176a〜176mの特性に基づいて、デバイス内冗長スキーム及びデバイス間RAIDデータレイアウトを動的に変更することができる。
図1に、1つの実施形態による、説明した特徴が可能なシステムの例を示す。さらなる詳細については以下で示す。以下、図1を参照しながら、ネットワークアーキテクチャ100の構成要素についてさらに説明する。
ネットワークアーキテクチャの構成要素
繰り返すが、図示のように、ネットワークアーキテクチャ100は、ネットワーク180及び190を介して互いに及びデータストレージアレイ120a〜120bに相互接続されたクライアントコンピュータシステム110a〜110cを含む。ネットワーク180及び190は、無線接続、直接ローカルエリアネットワーク(LAN)接続、ストレージエリアネットワーク(SAN)、インターネットなどの広域ネットワーク(WAN)接続及びルータなどを含む様々な技術を含むことができる。ネットワーク180及び190は、1又はそれ以上のLANを含むことができ、これらは無線であってもよい。ネットワーク180及び190は、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/又はソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/又はソフトウェア、ルータ、リピータ、スイッチ及び/又はグリッドなどをさらに含むことができる。ネットワーク180及び190内では、イーサネット(登録商標)、ファイバチャネル、ファイバチャネルオーバーイーサネット(FCoE)及びiSCSIなどのプロトコルを使用することができる。スイッチ140は、ネットワーク180及び190の両方に関連するプロトコルを利用することができる。ネットワーク190は、伝送制御プロトコル(TCP)及びインターネットプロトコル(IP)、すなわちTCP/IPなどの、インターネット160に使用される通信プロトコルの組と整合することができる。スイッチ150は、TCP/IPスイッチとすることができる。
クライアントコンピュータシステム110a〜110cは、デスクトップパソコン(PC)、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、サーバ、サーバファーム、携帯情報端末(PDA)及びスマートフォンなどのあらゆる数の固定又はモバイルコンピュータを表す。一般的に言えば、クライアントコンピュータシステム110a〜110cは、1又はそれ以上のプロセッサコアを備えた1又はそれ以上のプロセッサを含む。各プロセッサコアは、所定の汎用命令セットに従って命令を実行するための回路を含む。例えば、x86命令セットアーキテクチャを選択することができる。或いは、Alpha(登録商標)、PowerPC(登録商標)、SPARC(登録商標)又はその他のいずれの汎用命令セットアーキテクチャを選択してもよい。プロセッサコアは、データ及びコンピュータプログラム命令を求めてキャッシュメモリサブシステムにアクセスすることができる。キャッシュサブシステムは、ランダムアクセスメモリ(RAM)及びストレージデバイスを含む記憶階層に結合することができる。
クライアントコンピュータシステム内の各プロセッサコア及び記憶階層は、ネットワークインターフェイスにさらに接続することができる。クライアントコンピュータシステム110a〜110cの各々は、ハードウェア構成要素に加え、記憶階層内に記憶された基本オペレーティングシステム(OS)を含むことができる。この基本OSは、例えば、MS−DOS(登録商標)、MS−WINDOWS(登録商標)、OS/2(登録商標)、UNIX(登録商標)、Linux(登録商標)、Solaris(登録商標)、又は別の公知のオペレーティングシステムなどの様々な特定のオペレーティングシステムのいずれかを表すことができる。従って、基本OSは、エンドユーザに様々なサービスを提供するとともに、様々なプログラムの実行をサポートするソフトウェアフレームワークを提供することができる。また、クライアントコンピュータシステム110a〜110cの各々は、高水準バーチャルマシン(VM)をサポートするために使用されるハイパーバイザを含むことができる。当業者には周知のように、デスクトップ及びサーバ内で仮想化を使用して、OSなどのソフトウェアをシステムのハードウェアから完全に又は部分的に分離することができる。仮想化により、データストレージアレイ120a〜120bの各々におけるストレージデバイス176a〜176mに対応する(論理装置番号(LUN)などの)論理記憶エンティティなどのように、各々が独自のリソースを有する同じ機械上で複数のOSが実行されているという錯覚をエンドユーザに与えることができる。
データストレージアレイ120a〜120bの各々は、クライアントコンピュータシステム110a〜110cなどの異なるサーバ間のデータの共有に使用することができる。データストレージアレイ120a〜120bの各々は、データを記憶するためのストレージサブシステム170を含む。ストレージサブシステム170は、複数のストレージデバイス176a〜176mを含むことができる。これらのストレージデバイス176a〜176mの各々は、SSDとすることができる。コントローラ174は、受け取った読み込み/書き込み要求を処理するためのロジックを含むことができる。例えば、少なくともコントローラ174において、手短に上述したアルゴリズムを実行することができる。受け取った書き込み要求などの動作のバッチ処理には、ランダムアクセスメモリ(RAM)172を使用することができる。
記憶媒体130に記憶された基本OS132、ファイルシステム134、いずれかのOSドライバ(図示せず)及びその他のソフトウェアは、ファイル及びLUNへのアクセスを可能にする機能を提供し、これらの機能を管理することができる。基本OS134及びOSドライバは、記憶媒体130上に記憶された、受け取った要求に対応する1又はそれ以上のメモリアクセス動作をストレージサブシステム170内で行うようにプロセッサ122により実行可能なプログラム命令を含むことができる。
データストレージアレイ120a〜120bの各々は、ネットワークインターフェイス124を使用してネットワーク180に接続することができる。1つの実施形態では、クライアントコンピュータシステム110a〜110cと同様に、ネットワークインターフェイス124の機能をネットワークアダプタカード上に含めることができる。ネットワークインターフェイス124の機能は、ハードウェア及びソフトウェアの両方を使用して実装することができる。ネットワークインターフェイス124のネットワークカードによる実装上には、ランダムアクセスメモリ(RAM)及び読み取り専用メモリ(ROM)の両方を含めることができる。1又はそれ以上の特定用途向け集積回路(ASIC)を使用して、ネットワークインターフェイス124の機能を提供することができる。
1つの実施形態では、ユーザデータ及び対応するエラー訂正符号(ECC)情報のデータレイアウトを最適化しようと努めるデータストレージモデルを作成することができる。1つの実施形態では、このモデルが、ストレージシステム内のストレージデバイスの特性に少なくとも部分的に基づく。例えば、ソリッドステートストレージ技術を利用するストレージシステムでは、特定のデバイスの特性を使用してこのストレージデバイスのためのモデルを作成するとともに、このモデルが、対応するデータストレージ構成アルゴリズムを通知する機能を果たすようにすることもできる。例えば、使用中の特定のストレージデバイスが、時間とともに信頼性の変化を示す場合、データストレージ構成を動的に変更する上でこのような特性を考慮することができる。
一般的に言えば、コンピューティングシステムのために開発されるあらゆるモデルは不完全である。多くの場合、現実のシステムで所与のシステムを完全にモデル化するには、考慮すべき変数が単純に多すぎる。場合によっては、完全ではないが価値のあるモデルを開発することが可能な場合もある。以下でより詳細に説明するように、基礎を成すデバイスの特性に基づいてストレージシステムをモデル化する実施形態を説明する。様々な実施形態では、システムがどのように挙動し得るかに関するいくつかの予測に基づいてデータストレージ構成の選択が行われる。デバイスの挙動によっては、デバイスの特性の理解に基づいて、他のデバイスの挙動より予測しやすいものもある。しかしながら、デバイスの動作は時間とともに変化することがあり、これに応じて、選択したデータレイアウトも変化することがある。本明細書で使用するデバイスの特性とは、全体としてのデバイスの特性、チップ又はその他の構成要素などのデバイスの下位部分の特性、消去ブロックの特性、又はデバイスに関する他のあらゆる特性のことを意味することができる。
デバイス内冗長性
ここで図2を参照すると、動的デバイス内冗長スキームの1つの実施形態を示す汎用ブロック図を示している。当業者には周知のように、ストレージデバイス内の潜在的なセクタエラーの影響を低減するように複数のデバイス内冗長スキームの1つを選択することができる。通常、「セクタ」という用語は、ディスク上の所与のトラック内のセグメントなどの、HDD上における基本記憶単位を意味する。ここでは、「セクタ」という用語は、SSD上における基本的な割り当て単位(アロケーションユニット)を意味することもできる。
SSD内のアロケーションユニットは、SSD内の1又はそれ以上の消去ブロックを含むことができる。図2を参照すると、ユーザデータ210は、エンドユーザが修正及びアクセスすべき記憶データ、並びにデバイス間エラー訂正符号(ECC)データの両方を意味することができる。デバイス間ECCデータは、ユーザデータを保持する他のストレージデバイス上の1又はそれ以上のページから生成されたパリティ情報とすることができる。例えば、デバイス間ECCデータは、RAIDデータレイアウトアーキテクチャで使用されるパリティ情報とすることができる。ユーザデータ210は、ストレージデバイス176a〜176kのうちの1又はそれ以上に含まれる1又はそれ以上のページ内に記憶することができる。1つの実施形態では、ストレージデバイス176a〜176kの各々がSSDである。
SSD内の消去ブロックは、複数のページを含むことができる。上述したように、1つの実施形態では、1ページが4KBのデータ記憶空間を含むことができる。1消去ブロックは、64ページ、すなわち256KBを含むことができる。他の実施形態では、消去ブロックが1メガバイト(MB)もの大きさであり、256ページを含むことができる。アロケーションユニットのサイズは、アロケーションユニットのオーバーヘッドトラッキングを低減するために、十分に大きなサイズの比較的少ないユニットが与えられるように選択することができる。1つの実施形態では、1又はそれ以上の状態テーブルが、アロケーションユニットの状態(割り当て済み、空き、消去済み、エラー)、摩耗レベル、及びアロケーションユニット内で発生した総エラー数(訂正可能及び/又は訂正不能)を維持することができる。様々な実施形態では、アロケーションユニットのサイズを、所与のデバイスが利用できるアロケーションユニットの数とアロケーションユニットを維持するオーバーヘッドとのバランスをとるように選択することができる。例えば、1つの実施形態では、アロケーションユニットのサイズを、SSDの総記憶容量の1/100パーセントとなるように選択することができる。ページ、消去ブロック及びその他の単位構成に関する他の量のデータ記憶空間も可能であり、企図される。
ストレージデバイス内の所与のセクタ又はその他の記憶単位にアクセスできない場合、潜在的セクタエラー(LSE)が発生する。この所与のセクタでは、読み込み又は書き込み動作を完了できないことがある。また、訂正不能なエラー訂正符号(ECC)エラーが存在することもある。LSEは、所与のセクタがアクセスを受けるまで検出されないエラーである。従って、この所与のセクタに以前に記憶したあらゆるデータが失われる恐れがある。ストレージデバイスの不具合後のRAID再構成中に1つのLSEが生じた場合、これによりデータ損失に至る恐れがある。SSDでは、デバイスの使用年数、デバイスサイズ、アクセス率、ストレージの圧縮度、及び以前の訂正可能及び訂正不能なエラーの発生といった統計値のうちの少なくとも1つから、別のLSEの発生確率が増加することがある。所与のストレージデバイス内のLSE及びデータ損失を防ぐために、この所与のストレージデバイス内で多様なデバイス内冗長スキームの1つを使用することができる。
デバイス内冗長スキームは、所与のストレージデバイス内で、パリティ情報などのECC情報を利用する。このデバイス内冗長スキーム及びそのECC情報は、所与のデバイスに対応し、所与のデバイス内に維持することができるが、デバイス自体が内部的に生成して維持できるECCとは異なる。一般的に言えば、デバイスの内部的に生成され維持されるECCは、このデバイスを含むシステムからは見えない。所与のストレージデバイスに含まれるデバイス内ECC情報を使用して、この所与のストレージデバイス内におけるデータ記憶の信頼性を高めることができる。このデバイス内ECC情報は、RAIDデータレイアウトアーキテクチャで利用されるパリティ情報などの、別のストレージデバイスに含めることができる他のECC情報に加えられる。
極めて効果的なデバイス内冗長スキームは、所与のRAIDデータレイアウトの信頼性を十分に高めて、パリティ情報を保持するために使用されるデバイスの数を減少させることができる。例えば、各デバイス上のデータを保護するためにデバイス内冗長性が加わった場合、ダブルパリティRAIDレイアウトをシングルパリティRAIDレイアウトに置き換えることができる。一定レベルの記憶効率を得るためには、デバイス内冗長スキームにおける冗長性を高めると、所与のストレージデバイスの信頼性が高まる。しかしながら、このようにして冗長性を高めると、この所与のストレージデバイスの入力/出力(I/O)性能に関する不利点も増える可能性がある。
1つの実施形態では、デバイス内冗長スキームが、デバイスを、ユーザデータを記憶するための一群の場所に分割する。例えば、ストライプ250a〜250cによって示すような、RAIDレイアウト内のストライプに対応するデバイス内の一群の場所に分割することができる。ユーザデータ又はデバイス間RAID冗長性情報は、データ210によって示すように、ストレージデバイス176a〜176kの各々の1又はそれ以上のページに記憶することができる。各ストレージデバイス内では、1又はそれ以上のページにデバイス内エラー回復データ220を記憶することができる。本明細書では、デバイス内エラー回復データ220をデバイス内冗長データ220と呼ぶことができる。当業者であれば周知のように、デバイス内冗長データ220は、データ210内の情報の選択した一部に対してある関数を実行することにより取得することができる。XORベースの演算を使用して、デバイス内冗長データ220に記憶すべきパリティ情報を導出することができる。デバイス内冗長スキームの他の例としては、シングルパリティチェック(SPC)、最大距離分離(MDS)消去符号、インタリーブパリティチェック符号(IPC)、ハイブリッドSPC及びMDS符号(MDS+SPC)、及びカラム対角パリティ(CDP)が挙げられる。これらのスキームは、データ220を計算する方法に応じて、もたらされる信頼性及びオーバーヘッドの点で異なる。このシステムは、上述の冗長性情報に加え、デバイス上の領域のチェックサム値を計算するように構成することもできる。例えば、デバイスに情報が書き込まれた時にチェックサムを計算することができる。このチェックサムは、システムによって記憶される。システムは、デバイスから情報が読み戻された時に再びチェックサムを計算し、これを最初に記憶した値と比較することができる。2つのチェックサムが異なる場合、情報が正しく読み込まれておらず、システムは、他のスキームを使用してデータを回復することができる。チェックサム機能の例には、巡回冗長検査(CRC)、MD5及びSHA−1がある。
ストライプ250a〜250cに示すように、所与のストライプ内にデータ210を記憶するために使用する幅、すなわちページ数は、ストレージデバイス176a〜176kの各々において同じものとなり得る。しかしながら、ストライプ250b〜250cに示すように、所与のストライプ内にデバイス内冗長データ220を記憶するために使用する幅、すなわちページ数は、ストレージデバイス176a〜176kの各々において同じでない場合がある。1つの実施形態では、所与のストレージデバイスの特性又は挙動の変化により、対応するデバイス内冗長データ220を記憶するために使用する幅を少なくとも部分的に決定することができる。例えば、上述したように、フラッシュセルには、ページをプログラムすること又は読み込むことによって近隣のページに支障を来たし、これらの近隣のページ内にエラーを引き起こし得るプログラムディスターブエラー及びリードディスターブエラーが生じる。ストレージデバイスが古くなってより多くのエラーが生じている場合、対応するデバイス内冗長データ220の量が増加することがある。例えば、ストライプ250bの書き込み動作前に、ストレージデバイス176a〜176kの各々の特性をモニタし、これを使用してエラー率の増加を予測することができる。ストレージデバイス176c及び176jのエラーの増加が予測されることが検出される可能性がある。これに応答して、ストレージデバイス176c及び176jのデバイス内冗長データ220の量が増加することがある。図2のストライプ250a及び250bの例では、ストライプ250a及び250bのストレージデバイス176c及び176jの記憶されている保護データの量の増加を確認することができる。例えば、この時点で、ストレージデバイス176c及び176jをシングルパリティで保護するのではなく、これらのデバイスをダブルパリティ又はトリプルパリティで保護することができる。なお、デバイス176c及び176jのデバイス内保護の量を増加させても、同じストライプ内の他のデバイスにおける量を対応して増加させる必要はない。むしろ、ストライプのデータは、各デバイスにおいて望むように異なるレベルの保護を有することができる。
様々な実施形態では、所与のレベルのデータ保護の増減を選択的に行うことができる。例えば、1つの実施形態では、上記の例におけるストレージデバイス176c及び176jなどの、より多くのエラーを生成することが検出されたストレージデバイスに対してしか保護の増加を行わなくてよい。別の実施形態では、ストレージデバイス176c及び176jがより多くのエラーを生成することが検出された場合、ストレージデバイス176a〜176kの各々に対して保護の増加を行うことができる。1つの実施形態では、デバイス176kなどのパリティデバイス上におけるデバイス内保護の量を増加させるために、ストライプ内で保護されているデータの量を減少させることが必要となる場合がある。例えば、所与のストライプのパリティデバイス上に記憶されたデバイス内データの量を増加させると、このデバイスが記憶するストライプ内のデータのためのパリティデータの量が必然的に減少する。このパリティデータの量が、ストライプ内のデータを全て保護するために必要な量未満に減少した場合、パリティ保護を継続することが望ましい場合にはストライプ内のデータを減少させなければならない。ストライプ内に記憶されるデータの量の減少させる代替案として、パリティデータを記憶するための異なるデバイスを選択することもできる。様々な選択肢が可能であり、企図される。また、本明細書に記載する図2及びその他の図には、(176kなどの)別個のパリティデバイスを示していることがあるが、様々な実施形態では、パリティを単一のデバイスに記憶するのではなく複数のデバイスに分散させることができる。従って、別個のパリティデバイスの図示は、一般に説明を簡単にするための論理的な表現と見なすことができる。
ここで図3を参照すると、データストレージサブシステムにおけるデバイス内保護を調整する方法300の1つの実施形態を示している。一般に、ネットワークアーキテクチャ100及びデータストレージアレイ120a〜120b内で具体化される構成要素は、方法300に従って動作することができる。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
ブロック302において、ストレージデバイスにユーザデータを記憶するための第1の空き容量を決定する。このユーザデータは、データ210に関して上述したように、RAIDアーキテクチャで使用されるエンドユーザアプリケーション又はデバイス間パリティ情報内で使用されるデータとすることができる。この第1の空き容量は、上述したようなストレージデバイス内の1又はそれ以上のページを含むことができる。1つの実施形態では、ストレージコントローラ174内のグローバルRAIDエンジン178が、ストレージデバイス176a〜176mの各々から挙動統計値を受け取る。グローバルRAIDエンジン178は、ストレージデバイス176a〜176mの2又はそれ以上を含む所与のデバイスグループについて、RAIDデータレイアウト及びこれらの2又はそれ以上のストレージデバイスの各々に維持すべき最初のデバイス内冗長性の量を決定することができる。ブロック304において、RAIDエンジン178は、対応するデバイス内保護データをストレージデバイスに記憶するための第2の空き容量を決定することができる。この第2の空き容量は、ストレージデバイス内の1又はそれ以上のページを含むことができる。デバイス内保護データは、上述したデバイス内冗長データ220に対応することができる。
ブロック306において、所与のデバイスグループに含まれる各ストレージデバイス内の第1の空き容量にデータを書き込む。1つの実施形態では、ユーザデータ及びデバイス間パリティ情報が、いずれも所与のデバイスグループに含まれる複数のストレージデバイスにわたる単一のRAIDストライプとして書き込まれる。再び図2を参照して分かるように、対応する書き込まれるデータの幅は、各ストレージデバイスにおいて同じである。ブロック308において、ECCアルゴリズム、XORベースのアルゴリズム、又はその他のあらゆる適当なアルゴリズムにより、デバイス内保護データを生成する。また、システムは、正しく取り出されなかったデータを識別しやすくするためにチェックサムを生成することができる。ブロック310において、生成されたデバイス内保護データを、ストレージデバイス内の第2の空き容量に書き込む。
ブロック312において、RAIDエンジン178は、1又はそれ以上のストレージデバイスの挙動をモニタすることができる。1つの実施形態では、RAIDエンジン178が、対応するストレージデバイスのモデルを含み、このモデルに入力すべき挙動統計値をストレージデバイスから受け取ることができる。このモデルは、ストレージデバイスの既知の特性を利用することにより、ストレージデバイスの挙動を予測することができる。例えば、このモデルは、所与のストレージデバイスのエラー率の増加が近いことを予測することができる。RAIDエンジン178は、信頼性に影響を与える所与のストレージデバイスの特性を検出した(条件付きブロック314)場合、ブロック316において、データ及び対応するデバイス内冗長データを記憶するための第1及び第2の空き容量を調整することができる。例えば、RAIDエンジンは、少なくともデバイスの使用年数、アクセス率及びエラー率などの上述した統計値をモニタすることができる。再び図2を参照して分かるように、RAIDエンジン178は、ストレージデバイス176c及び176jのエラー数が増加したことを検出することができる。或いは、RAIDエンジンは、ストレージデバイス176c及び176jのエラー数の増加を予測することができる。従って、RAIDエンジン178は、第2のストライプ250bを書き込む前に、ストレージデバイス176a〜176kの各々にデータ210及びデータ220を記憶するために使用するページ数を調整することができる。同様に、RAIDエンジン178は、ストレージデバイス176bの信頼性が低下していることを検出することができる。従って、RAIDエンジン178は、第3のストライプ250cを書き込む前に、ストレージデバイス176a〜176kの各々にデータ210及びデータ220を記憶するために使用するページ数を再び調整することができる。
ストレージデバイス特性のモニタリング
ここで図4を参照すると、ストレージサブシステムの1つの実施形態の汎用ブロック図を示している。1又はそれ以上のデバイスグループ173a〜173mの1つにおいて、1又はそれ以上のストレージデバイス176a〜176mの各々を分割することができる。同様に、他のデバイスを含む他のデバイスグループも存在し得る。各ストレージデバイスの対応する動作キュー及び状態テーブルを、デバイスユニット400a〜400wの1つに含めることができる。これらのデバイスユニットを、RAM172に記憶することができる。デバイスグループ173a〜173mの各々に関し、対応するRAIDエンジン178a〜178mを含めることができる。各RAIDエンジン178は、対応するデバイスグループ内のストレージデバイスの各々の統計値を追跡するモニタ410を含むことができる。データレイアウトロジック420は、対応するストレージデバイス内の、ユーザデータ、デバイス間冗長データ及びデバイス内冗長データに対して割り当てるべき空き容量を決定することができる。ストレージコントローラ174は、ウェアレベリング、ガベージコレクション、I/Oスケジューリング、重複除外、並びに着信及び発信パケットのプロトコル変換といったタスクのうちの少なくとも1つを行うためのその他の制御ロジック430を含むことができる。
ここで図5を参照すると、デバイスユニットの1つの実施形態の汎用ブロック図を示している。デバイスユニットは、デバイスキュー510及びテーブル520を含むことができる。デバイスキュー510は、読み込みキュー512、書き込みキュー514、及びその他の動作キュー516などの1又はそれ以上の他のキューを含むことができる。各キューは、1又はそれ以上の対応する要求530a〜530dを記憶するための複数のエントリを含むことができる。例えば、対応するSSDのデバイスユニットは、少なくとも読み込み要求、書き込み要求、トリム要求及び消去要求などを記憶するためのキューを含むことができる。テーブル520は、状態データ又は統計値530を記憶するための複数のエントリを各々が含む1又はそれ以上の状態テーブル522a〜522bを含むことができる。また、この図及びその他の図には、キュー及びテーブルが特定数のエントリを含むように示しているが、必ずしもエントリ自体が互いに対応するわけではない。さらに、キュー、テーブル及びエントリの数は、図示のものとは異なることがあり、また互いに異なることもある。
ここで図6を参照すると、所与のデバイスに対応する状態テーブルの1つの実施形態を示す汎用ブロック図を示している。1つの実施形態では、このようなテーブルが、SSDなどの所与のストレージデバイスの状態情報、エラー情報及び摩耗率情報に対応するデータを含むことができる。この情報に、対応するRAIDエンジンがアクセスすることにより、このRAIDエンジンは、デバイス間保護及びデバイス内保護の両方に使用するデータ記憶及びスキームのために割り当てられた空間を動的に変更できるようになる。1つの実施形態では、この情報が、デバイスの使用年数602、エラー率604、デバイス606上で検出された総エラー数、回復可能なエラー数608、回復不能なエラー数610、デバイスのアクセス率612、記憶されたデータの使用年数614、及び割り当て空間616a〜616nの1又はそれ以上の割り当て状態、のうちの少なくとも1つ又はそれ以上を含むことができる。これらの割り当て状態は、使用中、空き、及びエラーなどを含むことができる。
フレキシブルなRAIDレイアウト
ここで図7を参照すると、フレキシブルなRAIDデータレイアウトアーキテクチャの1つの実施形態を示す汎用ブロック図を示している。RAIDエンジンは、ストレージデバイス176a〜176kに使用すべき保護レベルを決定することができる。例えば、RAIDエンジンは、ストレージデバイス176a〜176kにRAIDダブルパリティを利用すると決定することができる。デバイス間冗長データ240は、対応するユーザデータから生成されたRAIDダブルパリティ値を表すことができる。1つの実施形態では、ストレージデバイス176j及び176kが、ダブルパリティ情報を記憶することができる。他のレベルのRAIDパリティ保護も可能であり、企図されると理解されたい。また、他の実施形態では、ダブルパリティ情報を、各RAIDストライプのストレージデバイス176j及び176kに記憶するのではなく、この記憶をストレージデバイス間で循環させることもできる。ダブルパリティ情報がストレージデバイス176j及び176kに記憶されるように示しているのは、図示及び説明を簡単にするためである。
ここで図8を参照すると、フレキシブルなRAIDデータレイアウトアーキテクチャの別の1つの実施形態を示す汎用ブロック図を示している。図7に示す例と同様に、ストレージデバイス176a〜176kにはダブルパリティを使用することができる。この例では、RAIDダブルパリティについて説明するが、RAIDデータレイアウトアーキテクチャではあらゆる量の冗長性を選択することができる。
動作中、RAIDエンジン178は、ストレージデバイス176a〜176kの特性をモニタして、デバイスが最初の又はその他の所与の信頼性レベルよりも高い信頼性レベルを示していると判断することができる。これに応答して、RAIDエンジン178は、RAID保護をRAIDダブルパリティからRAIDシングルパリティに変更することができる。他のRAIDデータレイアウトアーキテクチャでは、サポートされている冗長性の量を別様に減少させることができる。他の実施形態では、ストレージデバイス176a〜176kのモニタ及び保護レベルの変更を、ストレージコントローラ174内の他のロジックによって行うことができる。
引き続き上記の例を参照すると、所与のRAIDストライプ上で実行される後続の書き込み動作に関しては、シングルパリティ情報のみを生成して記憶することができる。例えば、サポートされている冗長性の量を変更した後の書き込み動作に関しては、後続のRAIDストライプ内でストレージデバイス176kを使用しなくてもよい。また、ストレージデバイス176kに記憶されたデータを無効にし、これによりストレージを解放することもできる。その後、ストレージデバイス176kの解放されたデータに対応するページを、他の用途に再割り当てすることができる。このパリティ保護の量を低減し、パリティ保護データを記憶するために以前に使用されていた空間を解放するプロセスのことを、「パリティシュレッディング」と呼ぶことができる。さらに、ストレージデバイス176kがSSDである実施形態では、ストライプ250a内のページを書き換える前に、ストレージデバイス176k内で1又はそれ以上の消去動作を行うことができる。
上記のパリティシュレッディングの例を引き続き参照すると、パリティシュレッディング後にストライプ250a内のストレージデバイス176kの再割り当てされたページに記憶されたデータは、ストライプ250aに対応しない他のRAIDストライプのユーザデータ又は対応するRAIDシングルパリティ情報を保持することができる。例えば、ストライプ250a内のストレージデバイス176a〜176jに記憶されたデータは、パリティシュレッディング前に実行される1又はそれ以上の書き込み動作に対応することができる。ストライプ250a内のストレージデバイス176kに記憶されたデータは、パリティシュレッディング後に実行される1又はそれ以上の書き込み動作に対応することができる。同様に、ストライプ250b内のストレージデバイス176a〜176jに記憶されたデータは、パリティシュレッディング前に実行される1又はそれ以上の書き込み動作に対応することができる。ストライプ250b内のストレージデバイス176kのページは、解放後に消去して、サポートされている冗長性の量を変更した後に実行される1又はそれ以上の書き込み動作に対応するデータに書き換えることができる。なお、冗長性情報が複数のストレージデバイスを循環する場合、このスキームはより一層効果的となり得る。このような実施形態では、シュレッディングにより解放される空間も、同様にストレージデバイスにわたって分散される。
再び図8を参照すると、ストライプ250c内のストレージデバイス176kに示す割り当て解除されたページは、パリティシュレッディング前にRAIDダブルパリティ情報を記憶していた可能性のある記憶位置を表す。しかしながら、現時点でこれらのページは無効であり、未だ再割り当てされていない。上記の例では、ストレージデバイス176k内のページを解放して再割り当てする方法及びタイミングが、SSDの特定の特性によって決まる。これらの特性の例として、1又はそれ以上のページを再プログラムする(書き換える)前に少なくとも消去ブロック全体を消去することが挙げられる。図8からわかるように、パリティをシュレッドする際に、デバイス全体をシュレッドする必要はない。むしろ、個々のストライプに関して、望むようにパリティをシュレッドすることができる。
同様に、ストライプのパリティ保護を増加させることもでき、別のデバイス上に記憶された保護データをストライプに追加することもできる。
ここで図9を参照すると、RAIDレイアウトを動的に決定する方法の1つの実施形態を示している。一般に、ネットワークアーキテクチャ100及びデータストレージアレイ120a〜120b内で具体化される構成要素は、方法900に従って動作することができる。図9には、2つのプロセス910及び920を示している。これらのプロセスの各々は、同時に又は所与の順序で動作することができる。さらに、この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。ブロック910は、ストレージ制御システムが、システム内のストレージデバイスの特性及び挙動をモニタするプロセスを示す(ブロック912)。例えば、図6で説明したような特性を観察及び/又は記録することができる。信頼性の変化などの特定の状態が検出された場合(判定ブロック914)、記憶したデータに使用する保護の量を変更することができる(ブロック916)。例えば、所与のデバイスの使用年数が比較的短い場合には、デバイスの信頼性が分からないことがある(例えば、デバイスが「初期故障」を起こして比較的早い時期に機能しなくなることもある)。従って、RAIDストライプ毎に1又はそれ以上の追加のストレージデバイスを使用して、パリティ情報を記憶することができる。その後の時点で、時間とともにこれらのデバイスが信頼できると判明した時に、この追加の保護を除去することができる。様々な実施形態では、デバイスのエラー率に関する特性を維持することができる。例えば、訂正可能な及び/又は訂正不能なエラーに関する特性を維持し、これらを使用して所与のデバイスの信頼性に関する判断を行うことができる。ストレージコントローラは、この情報に基づいて、デバイス又はストライプの様々な保護レベルを動的に変更することができる。
図9のブロック920は、ストレージのストライプ又はその他の部分を割り当てる時点で(判定ブロック922)、データに使用すべきレイアウト及び保護レベルに関する決定を行なう(ブロック924)ことができるプロセスを大まかに示すものである。なお、この時にブロック910のプロセスを実施することもできる。或いは、既にプロセス910によって保護レベルが決定され記憶されている場合もある。この場合、ブロック924の決定は、この記憶されているデータに基づくことができる。1つの実施形態では、所与のレイアウトを決定すると、このレイアウトに使用すべき特定のデバイスをデバイスグループから選択することができる(ブロック925)。例えば、1つの実施形態では、20個のデバイスからなるグループを使用することができる。5+2のレイアウトを決定した場合、この20個のデバイスからなるグループから任意の7つのデバイスを使用するように選択することができる。また、選択した5+2のレイアウトによるその後の書き込みにおいて、この同じ7つのデバイスを使用する必要はない。ストライプのレイアウト、保護レベル及びデバイスを決定した後、このストライプに書き込みを行うことができる(ブロック926)。
様々な実施形態では、RUSHアルゴリズムを利用して、所与のストライプのデータ及び冗長性情報がいずれのデバイス上に存在するようになるかを判断することができる。例えば、RUSHアルゴリズムを使用して、ストレージデバイス176a〜176kの所与のストライプの8+2のRAIDレイアウトに利用すべき特定のデバイスを選択することができる。一般的に言えば、本明細書では、一般にM+Nのレイアウトは、所与のデータストライプのM個のデータデバイス及びN個のパリティデバイスを含むレイアウトを表すことができる。また、上述したように、パリティを完全に特定のデバイス内に配置するのではなく、デバイスにわたって分散させることもできる。従って、8+2のレイアウトは、10個のデバイスにわたってストライピングされたデータ及びパリティを含むことができ、これらのデバイスのうちの8つがデータを記憶し、2つがパリティを記憶する。その後のある時点で、12+2のレイアウトを選択することができる。このように、書き込みを行う(例えば、ストライプを書き込む)時点で、所望のレイアウト及び保護特性を動的に決定することができる。1つの実施形態では、ストレージデバイス176a〜176kが、30個、50個、又はそれ以上のストレージデバイスなどの、10個よりも多くのストレージデバイスを含むことができる。しかしながら、8+2のレイアウトによるストライプでは、ストレージデバイスのうちの10個しか利用されない。なお、デバイスのうちの任意の10個を選択し、ストライプを記憶する際に使用するこれらの10個のデバイスを選択するために、任意の好適なアルゴリズムを使用することができる。例えば、CRUSHアルゴリズムを使用して、所与の8+2のRAIDレイアウトのために、ストレージデバイス176a〜176kのうちのいずれの10個を利用すべきかを選択することができる。
ストレージデバイス176a〜176kのために選択される8+2のRAIDレイアウトの1つの例では、これらのストレージデバイスのうちの2つを使用して、パリティ情報などのエラー訂正符号(ECC)情報を記憶することができる。この情報を使用して、再構成読み込み要求を行うことができる。再び図8を参照すると、この例では、RAIDダブルパリティ情報を記憶するためにストレージデバイス176j及び176kを選択することができる。この場合も、パリティ情報を常に同じストレージデバイスに記憶するのではなく、RAIDアレイに含まれるストレージデバイス176a〜176kの各々の間で循環式に記憶することができる。図示及び説明を簡単にするために、ストレージデバイス176j及び176kがRAIDダブルパリティを記憶しているものとして説明する。
ブロック926において、書き込み動作の実行中に、RAIDアレイに含まれる複数のストレージデバイスにわたり、メタデータ、ユーザデータ、デバイス内パリティ情報及びデバイス間パリティ情報をRAIDストライプとして書き込むことができる。ブロック912において、RAIDエンジン178は、RAIDアレイ内の1又はそれ以上のストレージデバイスの挙動をモニタすることができる。1つの実施形態では、RAIDエンジン178が、図4に示すようなモニタ410及びデータレイアウトロジック420を含むことができる。RAIDエンジン178は、少なくとも所与のストレージデバイスの使用年数、エラー数及びエラータイプ、最後のデータ割り当て以降に検出された構成変更、所与のデータの使用年数、及びRAIDアレイ内の記憶空間の現在の使用状況などをモニタすることができる。
RAIDエンジン178によりモニタされたデータは、図4に示すデバイスユニット400a〜400wの1つなどのRAM172に記憶することができる。このデータを記憶するために、図5及び図6に示す例のようなテーブルを使用することができる。対応するRAIDエンジンに含まれるロジックは、ストレージデバイスの最新の統計値をモニタすることにより、ストレージデバイスの挙動を検出して予測することができる。例えば、このモデルは、所与のストレージデバイスのエラー率の増加が近いことを予測することができる。
(単複の)ストレージデバイスの信頼性が増したことが検出された(条件付きブロック908)場合、ブロック910において、RAIDエンジンは、システム内のデータ保護レベルを低下させることができる。例えば、1つの実施形態では、ストレージサブシステムに記憶されているパリティ情報の量を減少させることができる。上記の例に関して、RAIDエンジンは、対応する8+2のRAIDアレイのRAIDダブルパリティをRAIDシングルパリティに低下させて、8+1のRAIDアレイに変換することができる。他の例では、所与のRAIDアレイが、ブロック916の前に、RAIDアーキテクチャにおいてNレベルの量の冗長性又はパリティを利用していることがある。ブロック916において、RAIDエンジンは、N>1かつ1<m<Nとする(N−m)レベルの量の冗長性を利用すると決定することができる。従って、その後の所与のRAIDストライプの書き込み動作中には、所与のRAIDストライプ内で、より少ないm個のストレージデバイスに書き込みが行われるようになる。
RAIDエンジン(又は別の構成要素)は、システム内のデータ保護レベルを低下させるために、上述したようなパリティシュレッディングを行うことができる。その後、ストレージコントローラ174は、シュレッディング動作の結果として解放されたページを、その後の書き込み動作で使用されるように再割り当てすることができる。
上述したように、ストレージデバイス176a〜176kの各々が古くなってデータで満たされると、RAIDアレイから追加のパリティ情報を除去することができる。メタデータ、ユーザデータ、対応するデバイス内冗長性情報、及びデバイス間冗長性情報の一部は残存する。8+2のRAIDアレイを使用した上記の例に関しては、ストレージデバイス176a〜176jに記憶された情報が残存する。一方、追加のデバイス間冗長性情報又は追加のパリティ情報は、RAIDアレイから除去することができる。例えば、ストレージデバイス176kに記憶された追加のパリティ情報を、RAIDストライプから除去することができる。
上記の例でストレージデバイス176a〜176jに記憶された情報などの残存した情報は、適所に残存することができる。上記の例におけるストレージデバイス176k内の対応するページなどの、追加のパリティ情報を記憶する記憶空間は、その後の書き込み動作のために再利用して再割り当てすることができる。1つの実施形態では、個々の新たな割り当てにより、新たな仮想アドレスが受け取られる。個々の新たな割り当ては、所与のサイズ、所与の配置又は構成を有することができ、所与の(仮想又は物理)記憶空間に適応することができる。1つの実施形態では、ストレージデバイス176a〜176kの各々及びストレージデバイス内の各割り当てページが、識別情報を含むヘッダを有する。このような識別情報により、所与の構成を変更することなく、解放された追加のパリティ情報のために記憶空間を再利用できるようになる。
ストレージデバイス176a〜176kの1又はそれ以上がSSDである実施形態では、消去ブロック内の1又はそれ以上のページを再プログラムする前に消去ブロックが消去される。従って、ストレージデバイス176kがSSDである実施形態では、ストレージデバイス176k内の解放されたページを再プログラムする前に、対応する消去ブロックが消去される。元々の8+2のRAIDアレイを使用する上記の例に関しては、ページにデータ210を再プログラムする前に、ストライプ250a〜250b内のストレージデバイス176kの1又はそれ以上の消去ブロックが消去される。この時、元々の8+2のRAIDアレイは8+1のRAIDアレイになっており、ストレージデバイス176jは、パリティシュレッディング前に書き込まれたRAIDストライプにシングルパリティ情報を提供する。
当業者には周知のように、所与のストレージデバイスの読み込み又は書き込みエラー中には、対応するRAIDストライプ内のサポートされているデバイス間パリティ情報からデータを再構成することができる。この再構成されたデータをストレージデバイスに書き込むことができる。しかしながら、この再構成されたデータがストレージデバイスに対して書き込みエラーとなった場合、このストレージデバイス上に記憶されている全てのデータを、対応するパリティ情報から再生することができる。この再生されたデータは、別の場所に再配置ことができる。フラッシュメモリでは、フラッシュ変換層(FTL)が、データの記憶位置をリマップする。また、フラッシュメモリでは、データの再配置が、消去ブロック内の対応するページを再プログラムする前に消去ブロック全体を消去することを含む。マッピングテーブルを消去ブロック対ページの粒度に維持することにより、リマッピングテーブルをよりコンパクトにすることができる。さらに、再配置中には、パリティシュレッディング中に解放された追加のページを使用することができる。
オフセットパリティ
ここで図10を参照すると、フレキシブルなRAIDデータレイアウトアーキテクチャのさらに別の実施形態を示す汎用ブロック図を示している。図8に示す汎用ブロック図と同様に、フレキシブルなRAIDデータレイアウトアーキテクチャを使用することができる。ストレージデバイス176a〜176kは、複数のストレージデバイスにわたってレイアウトされた複数のRAIDストライプを含む。ストレージデバイス176a〜176kの各々は複数のページを含むが、図を簡単にするために、ページ1010及びページ1020にしかラベルを付けていない。図示の例では、ストレージデバイス176j及び176kがダブルパリティ情報を記憶するダブルパリティRAIDデータレイアウトが選択されている。
ストレージデバイス176a〜176kのページの各々は、特定のタイプのデータを記憶する。一部のページは、ユーザデータ210及び対応する生成されたデバイス間パリティ情報240を記憶する。他のページは、対応する生成されたデバイス内パリティ情報220を記憶する。さらに他のページは、メタデータ242を記憶する。メタデータ242は、ページヘッダ情報、RAIDストライプ識別情報、及び1又はそれ以上のRAIDストライプのログデータなどを含むことができる。ストレージデバイス176a〜176kのページの各々は、デバイス間パリティ保護及びデバイス内パリティ保護に加え、各所与のページに記憶されたチェックサムなどの追加の保護を含むこともできる。様々な実施形態では、各ストライプの最初の単一のメタデータページを、他のストライプヘッダから再生することができる。或いは、データをデバイス間パリティによって保護できるように、このページがパリティシャード内の異なるオフセットに存在することもできる。「シャード」は、デバイスの一部を表す。従って、パリティシャードは、パリティデータを記憶するデバイスの一部を意味する。
物理層
様々な実施形態では、本明細書で説明するシステムが物理層を含み、これを通じてシステムの他の要素がストレージデバイスと通信することができる。例えば、スケジューリングロジック、RAIDロジック及びその他のロジックは、ソフトウェア及び/又はハードウェアのあらゆる好適な組み合わせを含む物理層を介してストレージデバイスと通信することができる。一般に、物理層は、永続ストレージへのアクセスの提供及びデータストレージの完全性に関する機能の実行を含む様々な機能を実行する。
図11Aに、500GBのデバイスの仮想デバイスレイアウトの1つの実施形態を示す。様々な実施形態では、本明細書で説明するストレージデバイスの最初にパーティションテーブル1101をフォーマットし、デバイスの最後にパーティションテーブルのコピーをフォーマットすることができる。また、最初と最後のブロックにデバイスヘッダ1103を記憶することができる。例えば、フラッシュベースのストレージデバイスでは、最初と最後の消去ブロックにデバイスヘッダを記憶することができる。上述したように、消去ブロックは、典型的には256KB〜1MBのフラッシュ構造である。第1の消去ブロック内には、追加の未使用空間を確保することができる(パディング1105)。各デバイスには、ログ及び診断情報1107を書き込むための第2の消去ブロックを確保することができる。これらの間の残りの消去ブロックは、複数の消去ブロックのアロケーションユニット(AU)1109に分割される。AUサイズは、デバイス毎に十分な数のAUが存在して良好な割り当て粒度が得られるように選択することができる。1つの実施形態では、オーバーヘッドを避けるのに十分な多さではあるが、追跡しやすいように多すぎない単位での割り当てを可能にするように、デバイス上に10,000個ほどの範囲内のAUが存在する。AU(割り当て済み/空き/消去済み/不良)の状態の追跡は、AU状態テーブルに維持することができる。AUの摩耗率は、摩耗レベルテーブルに維持することができ、総エラー数は、AUエラーテーブルに維持することができる。
様々な実施形態では、物理層が、(異なるノード上に存在し得る)デバイスの組にわたる各デバイス内の1つのセグメントシャードを含むセグメント内で空間を割り当てる。図11Bに、セグメント及びそのセグメントの様々な識別可能部分の1つの実施形態を、1つの考えられるセグメントレイアウトで示す。セグメントに記憶されたデータのタイプを示す凡例も含む。図示の実施形態では、複数のデバイスに記憶された単一のセグメントを示している。データデバイス:データ0〜データN、並びにパリティデバイス:パリティP及びパリティQを示す。1つの実施形態では、各セグメントシャードが、各デバイス上でシャードのサイズが等しくなるように、デバイスに1又はそれ以上のアロケーションユニットを含む。セグメントシャードを示すために、セグメントシャード1123を挙げている。図11Bには、I/O読み込みサイズ1127も示しており、これは1つの実施形態ではページに対応する。I/Oシャードのページパリティの1又はそれ以上のページを含むことができるI/Oパリティチャンク1129も示している。
1つの実施形態では、各セグメントが、以下のパラメータのうちの1又はそれ以上を含むことができる独自の構成を有する。
(1)RAIDレベル−セグメント内のデバイス間保護に使用されるRAIDレベル。
これにより、ミラーリング、パリティ、又はECC RAID、及びどれだけのセグメントシャードがパリティを含むかを決定することができる。
(2)デバイスレイアウトI/Oシャードサイズ−書き込み中に各デバイスにわたるストライピングに使用するサイズを表す。このサイズは、典型的には256KB〜1MBとなり、恐らくは各デバイス上の消去ブロックサイズの倍数となる。図11Bには、例示目的でI/Oシャードサイズ1125を挙げている。
(3)I/O読み込みサイズ−論理的読み込みサイズである。各I/Oシャードを一連の論理ページとしてフォーマットすることができる。さらに各ページは、ページ内のデータのヘッダ及びチェックサムを含むことができる。読み込みが発行された場合、この読み込みは、1又はそれ以上の論理ページに対するものとなり、チェックサムを使用して各ページ内のデータを検証することができる。
(4)I/OシャードRAIDレベル−I/Oシャードは、再生中に見つかった潜在的なエラーを処理すべきシャード内パリティを有する。このパラメータは、どのタイプのパリティがシャード内保護に使用されているか、従ってどれだけのシャード内パリティのコピーが維持されるかを決定する。
(5)I/Oパリティチャンク−様々な実施形態では、ストレージデバイスが、ページ単位でECCを行うことができる。従って、エラーが見つかった場合、物理ページ全体の不具合を示している可能性がある。I/Oパリティチャンクは、セグメント内の各デバイス上の物理ページサイズの最小公倍数であり、I/Oパリティチャンク又はI/O読み込みサイズのうちの大きい方にI/Oシャードをストライピングすることにより、シャード内パリティが計算される。ページパリティの1又はそれ以上のページを含めることができる。様々な実施形態では、チェックサム検証が失敗に終わった場合、このパリティを使用してデータを再生することができる。
様々な実施形態では、個々の新たなセグメントに書き込みが行われる際に、そのセグメントのRAID構成が選択される。RAID構成の選択は、現在のアクティブなノード及びデバイスの組、並びにセグメント内のデータのタイプなどの因子に基づくことができる。例えば、10個のノード又はデバイスが利用可能な場合、(8+2)のRAID6の構成を選択し、2つのデバイス又はノード故障に耐えるように、これらのノードにわたってセグメントをストライピングすることができる。その後、ノードが故障した場合、次のセグメントを(7+2)のRAID6の構成に切り替えることができる。セグメント内では、セグメントシャードの一部がデータを含み、一部が(パリティなどの)ECCを含む。
1つの実施形態では、5種類のセグメントが存在する。これらのセグメントのうちの3つは、AU状態テーブル、AUエラーテーブル及び摩耗率テーブルに対応する。いくつかの実施形態では、これらの3つのセグメントをミラーリングしてさらに保護することができる。これらの3つのセグメントに加え、ミラーリングを通じてさらに保護することもできるメタデータセグメントが存在する。最後に、クライアントブロック及びログ情報を保持するデータセグメントが存在する。ログ情報は、セグメント内のクライアントブロックに関連する最新情報を含む。データセグメントは、パリティP及びパリティQシャードを使用して、図11Bに示すようなRAID6によって保護される可能性が高い。上記に加え、起動時に全てのセグメントシャードのヘッダからの情報を投入されるメモリ内データ構造としてセグメントテーブルが維持される。いくつかの実施形態では、このテーブルを全てのノード上で完全にキャッシュして、あらゆるノードがストレージアクセスを物理アドレスに変換できるようにすることができる。しかしながら、他の実施形態では、論理基準を取ってデータが記憶されているセグメントレイアウトノードを識別できるセグメントテーブルを各ノードが有することができるオブジェクトストレージモデルを使用することができる。その後、ノード上の正確な記憶位置を識別するための要求がノードに伝えられる。図11Bには、セグメント内のかなりの量の空間を占めるあらゆる(ボリューム、スナップショットの)組み合わせを識別するセグメントテールデータも示す。スナップショットを除去する場合、データスクラバが、このデータに基づいて、ガベージコレクションを行うセグメントの識別を支援することができる。
1つの実施形態では、基本書き込み単位が、セグメント内のデバイスの各々における1つのI/Oシャードであるsegioである。segio内の各論理ページには、ページのチェックサム(「メディア」チェックサムと呼ぶことができる)を含むページヘッダが、データの実際のページサイズが1ページをわずかに下回るようにフォーマットされる。セグメントのパリティシャード内のページについては、データページ内のページチェックサムがパリティページによって保護されるように、ページヘッダが小さくなっている。各I/Oシャードの最終ページは、この場合も小さなヘッダを有して、消去ブロック内の全てのチェックサム及びページデータをページ不具合から保護するパリティページである。ここで言うページサイズとは、1又はそれ以上の物理フラッシュページとすることができるI/O読み込みサイズのことである。セグメントによっては、物理ページよりも小さな読み込みサイズを使用することができる。この方法は、検索情報に対する読み込みをインデックスで駆動することができ、より小さなデータ部分を読み込みながら所望のデータを取得できるメタデータに対して行うことができる。このような場合、物理ページの半分を読み込むということは、より少ないデータをI/Oバス(及びネットワーク)に結び付けて、より少ないデータを検証する(例えば、チェックサムを行う)ことを意味する。ある実施形態は、物理ページよりも小さい読み込みサイズをサポートするために、消去ブロックの最後に複数のパリティページを含んで、全てのパリティページの全体的サイズがフラッシュページサイズに等しくなるようにすることができる。
消去ブロックの摩耗率が増すにつれ、エラーの可能性は高くなる。摩耗率を追跡することに加え、高いエラー確率が識別される1又は複数の消去ブロック上に、エラーが観察される頻度に関するデータを維持することもできる。消去ブロックによっては、単一のRAID5パリティの代わりに、消去ブロックの最後にダブル又トリプルエラー訂正パリティを保持することを決定できるものもある。この場合、これに応じてsegioのデータペイロードを低減することができる。全ての消去ブロックではなく、segio内の不良な消去ブロックのみを低減することが必要となり得る。消去ブロック内のページヘッダを使用して、いずれのページがパリティであり、いずれのページがデータであるかを識別することができる。
ストレージからページが読み込まれる時には常に、ページチェックサムを使用してコンテンツを検証することができる。この検証がうまくいかなかった場合、デバイス内パリティを使用してデータの再生を試みることができる。これがうまくいかなかった場合、セグメントのデバイス間ECCを使用してデータを再構成することができる。
データセグメントでは、ペイロード領域を2つの領域に分割することができる。記憶されたクライアントブロックに関する最新情報を含むことができるログデータとしてフォーマットされたページが存在するようになる。ペイロード領域の残りは、クライアントブロックとしてフォーマットされたページを含むことができる。このクライアントブロックデータは、圧縮された形で記憶することができる。数多くの圧縮アルゴリズムが可能であり、企図される。また、様々な実施形態では、Intel(登録商標)高度暗号化標準命令を使用してチェックサムを生成することができる。また、データと同じページ内に存在して、データの圧縮に使用するアルゴリズムの識別などの、クライアントブロックを読み込むために必要な情報を含むクライアントブロックのヘッダも存在することができる。ガベージコレクションは、segio内のクライアントブロックヘッダ及びログエントリの両方を利用することができる。また、クライアントブロックは、重複除外、及び解凍データの正しさをチェックするために使用される未圧縮データのチェックサムとすることができるデータハッシュを有することができる。
いくつかの実施形態では、セグメント及びsegioが、これらを順序付けるために使用される単調増加するID番号を有することができる。segioへの書き込みの一部として、論理層が、以前のフラッシュに対する依存を記録することができる。起動時には、物理層が、セグメント及びsegiosの順序付きリストを構築することができ、segioが別の未完成のsegioに依存している場合、これをロールバックして書き込まれていないと見なすことができる。
摩耗率テーブル
各デバイスのローカルなセグメントには、各デバイスの摩耗率テーブル(WLT)を記憶することができる。この情報を、各セグメントシャードのヘッダに記憶することもできる。1つの実施形態では、摩耗情報が、アロケーションユニットが消去及び再利用された回数を表す整数である。摩耗情報は正確でない場合もあるので、一定量の行動が行われた場合、又は相当期間にわたってシステムがアイドルであった場合に、デバイスに対するテーブルのフラッシュを行なうことができる。WLTは、新たなWLTセグメントを割り当てる際に古いWLTセグメントをクリーニングすることに関与することもできる。追加の保護層を加えるために、古いコピーを解放する前にこれらを維持することができる。例えば、テーブルマネージャが、WLTエントリの以前の消去ブロック及び現在の消去ブロックを常に保持し、新たなセグメントを割り当てる場合には、この新たなセグメントの第2の消去ブロックに書き込みを行うまで古いセグメントを解放しないように保証する。
AU状態テーブル
AU状態テーブル(AST)は、各AUの状態を追跡する。この状態には、空き、割り当て済み、消去済み、及び不良がある。このASTを、デバイス上のセグメントに記憶することができる。割り当て済み又は空きへの状態変更は同期更新とすることができ、不良又は消去済みへの状態変更は非同期更新とすることができる。一般に、このテーブルは十分に小さく、NVRAMに記録できるだけの十分な更新を有することができる。ASTは、新たなセグメントを割り当てる際に古いWLTセグメントをクリーニングすることに関与することができる。ASTは、ドライブ上の各AUの第1のブロックをスキャンすることによって完全に回復できるので、古いASTのコピーを保持する必要はない。
AUエラーテーブル
AUエラーテーブル(AET)を使用して、各AU内の回復可能エラー及び回復不能エラーの数を追跡することができる。AETは、デバイス上のセグメントに記憶され、各フィールドは、2バイトの整数とすることができる。このテーブル全体は、AU当たり4バイトの比較的小さなものとすることができる。
ここで図11Cを参照すると、異なるページタイプ内のデータストレージ構成の1つの実施形態を示す汎用ブロック図を示している。図示の実施形態では3つのページタイプを示しているが、他のタイプも可能であり、企図される。図示のページタイプは、メタデータ1150を含むページ1110、ユーザデータ1160を含むページ1120、及びパリティ情報1170(デバイス間又はデバイス内)を含むページ1130を含む。ページ1110〜1130の各々は、ヘッダ及び識別情報を含むことができるメタデータ1140を含む。また、1110〜1130ページの各々は、対応するチェックサム又はその他のエラー検出及び/又は訂正符号などのページ内エラー回復データ1142を含むことができる。このチェックサム値により、所与のデバイスグループ内のストレージデバイス176a〜176kに記憶されたデータをさらに保護することができる。
さらに、ページ1130は、ページ間エラー回復データ1144を含むことができる。このデータ1144は、他のストレージデバイスに記憶されたページ内データ1142から導出されたECC情報とすることができる。例えば、再び図10を参照すると、デバイス間パリティ情報240を記憶するストレージデバイス176j内の各ページが、ページ間エラー回復データ1144を記憶することもできる。データ1144は、パリティ、チェックサム、又はストレージデバイス176a〜176iの1又はそれ以上に記憶されたページ内エラー回復データ1142から生成されたその他の値とすることもできる。1つの実施形態では、データ1144が、他のストレージデバイスに記憶された1又はそれ以上の他のチェックサム値1142から生成されたチェックサム値である。ストレージデバイス176jの所与のページ内のデータ1144を、ストレージデバイス176a〜176iの1又はそれ以上の対応するページ内のデータ1142と位置合わせするために、対応するページにパディング1146を追加することができる。
1つの実施形態では、エンドユーザアプリケーションが、HDDでは512バイトのセクタの境界上でI/O動作を実行する。追加の保護を加えるために、8バイトのチェックサムを加えて520バイトのセクタを形成することができる。様々な実施形態では、フラッシュメモリベースのシステム内で圧縮及びリマッピングを行って、セクタ境界ではなくバイト境界上にユーザデータを配置可能にすることができる。また、ヘッダの後であってユーザデータの前のページ内にチェックサム(8バイト又は4バイトなど)を配置して、これを圧縮することができる。ページ1110〜1130の各々には、この配置を示している。
エンドユーザアプリケーションが512バイトのセクタを読み込む場合、1つの実施形態では2KB〜8KBのサイズの対応するページが、ページの最初に8バイトのチェックサムによる追加の保護を有する。様々な実施形態では、2セクタサイズの非電力のためにこのページをフォーマットしなくてもよい。ページ1110〜1120に示すように、チェックサムをページ内に2、3バイトオフセットさせることができる。このオフセットにより、ページ1130などのパリティページが、パリティページをカバーするチェックサム、及び他のページのチェックサムを保護するためのECCを記憶できるようになる。
さらに別の保護レベルでは、チェックサム値を計算する際にデータ位置情報を含めることができる。ページ1110〜1130の各々におけるデータ1142は、この情報を含むことができる。この情報は、論理アドレス及び物理アドレスの両方を含むことができる。この情報には、セクタ番号、データチャンク及びオフセット番号、トラック番号、平面番号などを含めることもできる。
代替の構成
ここで図12を参照すると、ハイブリッドRAIDデータレイアウト1200の1つの実施形態を示す汎用ブロック図を示している。3つの区分を示しているが、あらゆる数の区分を選択することができる。各区分は、図1に示すデバイスグループ713a〜173bなどの別個のデバイスグループに対応することができる。各区分は、複数のストレージデバイスを含む。1つの実施形態では、CRUSHアルゴリズムなどのアルゴリズムを利用して、データストレージに使用すべきRAIDデータレイアウトアーキテクチャにおいていずれのデバイスを使用すべきかを選択することができる。
図示の例には、L+1のRAIDアレイ、M+1のRAIDアレイ及びN+1のRAIDアレイを示している。様々な実施形態では、L、M及びNが全て異なってもよく、同じであってもよく、又はこれらの組み合わせであってもよい。例えば、区分1にRAIDアレイ1210を示している。他のストレージデバイス1212は、区分1内の他のRAIDアレイの候補である。同様に、RAIDアレイ1220は、区分2内の所与のRAIDアレイを示す。他のストレージデバイス1222は、区分2内の他のRAIDアレイの候補である。RAIDアレイ1230は、区分3内の所与のRAIDアレイを示す。他のストレージデバイス1232は、区分3内の他のRAIDアレイの候補である。
RAIDアレイ1210、1220及び1230の各々では、ストレージデバイスP1が、それぞれのRAIDアレイ内のRAIDシングルパリティ保護を行う。ストレージデバイスD1〜DNは、それぞれのRAIDアレイ内のユーザデータを記憶する。この場合も、ストレージデバイスD1〜DNとP1の間で、ユーザデータ及びRAIDシングルパリティ情報の記憶を循環させることができる。しかしながら、デバイスD1〜DNにユーザデータが記憶されたものとして説明する。同様に、図示及び説明を容易にするために、デバイスP1にRAIDシングルパリティ情報が記憶されたものとして説明する。
1又はそれ以上の所与のRAIDアレイに対してさらなる量の冗長性をサポートするために、3つの区分の各々のうちの1又はそれ以上のストレージデバイスを選択することができる。例えば、区分3内のストレージデバイスQ1を、RAIDアレイ1210、1220及び1230の各々と組み合わせることができる。ストレージデバイスQ1は、RAIDアレイ1210、1220及び1230の各々にRAIDダブルパリティ情報を提供することができる。この追加のパリティ情報は、アレイ1210、1220又は1230の1つにストライプが書き込まれた時に生成され記憶される。さらに、この追加のパリティ情報は、アレイ1210、1220及び1230の各々のストライプをカバーすることができる。従って、総ストレージデバイス数に対するRAIDパリティ情報を記憶するストレージデバイスの数の比率が小さくなる。例えば、区分の各々がN+2のRAIDアレイを使用する場合、総ストレージデバイス数に対するRAIDパリティ情報を記憶するストレージデバイスの数の比率は、3(2)/(3(N+2))、すなわち2/N+2である。対照的に、ハイブリッドRAIDレイアウト1200の比率は、(3+1)/(3(N+1))、すなわち4/(3(N+1))である。
ユーザデータの記憶に使用するストレージデバイスの数を増やすことにより、上記の比率を低減することが可能である。例えば、ストレージデバイスQ1を利用するのではなく、区分の各々が3N+2のRAIDアレイを利用するようにすることができる。このような場合、総ストレージデバイス数に対するRAIDパリティ情報を記憶するストレージデバイスの数の比率は、2/(3N+2)である。しかしながら、再構成読み込み動作中には、単一のデバイス故障のための再構成読み込み要求を(3N+1)個のストレージデバイスが受け取る。対照的に、ハイブリッドRAIDレイアウト1200では、単一のデバイス故障のための再構成読み込み要求をN個のストレージデバイスしか受け取らない。
なお、3つの区分の各々は、異なるRAIDデータレイアウトアーキテクチャを利用することができる。所与のRAIDデータレイアウトアーキテクチャの選択は、総ストレージデバイス数に対するRAIDパリティ情報を記憶するストレージデバイスの数の所与の比率に基づくことができる。また、この選択は、再構成中に再構成読み込み要求を受け取ることができる所与のストレージデバイス数に基づくこともできる。例えば、RAIDアレイ1210、1220及び1230は、L+a、M+b及びN+cなどの構成をそれぞれ含むことができる。
区分内のRAIDアレイの1又はそれ以上に対してさらなる量の冗長性をサポートするために、上記の条件に基づいてストレージデバイスQ1などの1又はそれ以上のストレージデバイスを選択することができる。上記のRAIDアレイ及びこれらのRAIDアレイの各々に対して追加の保護を行うストレージデバイスの数Qを含む3つの区分の例では、総ストレージデバイス数に対するRAIDパリティ情報を記憶するストレージデバイスの数の比率は、(a+b+c+Q)/(L+a+M+b+N+c+Q)である。単一のデバイス故障の場合、上記の例における区分1〜3では、再構成読み込み要求を受け取るストレージデバイスの数は、それぞれL、M及びNである。なお、一般に上記の説明は、図12の3つの異なる区分について行ったものである。このような実施形態では、所与のレイアウトが特定のデバイスグループに制限されるこの種の「ハード」区分が、1つの区分内の再構成読み込みが別の区分の再構成読み込みと衝突しないことを保証することができる。しかしながら、他の実施形態では、区分が、上述したようなハードではないこともある。むしろ、デバイスのプールを考えた場合、これらのデバイスのいずれからもレイアウトを選択することができる。例えば、デバイスを大きなプールとして扱う場合、(L+1、M+1、N+1)+1などのレイアウトを構成することが可能である。従って、構成が重複し、再構成読み込みが衝突しかねない可能性がある。プールのサイズに対してL、M及びNが小さい場合、通常の読み込みに対する再構成読み込みの割合を低く保つことができる。
ここで図13を参照すると、データストレージサブシステムにおいて代替のRAID構成を選択する方法1300の1つの実施形態を示している。一般に、ネットワークアーキテクチャ100及びデータストレージアレイ120a〜120b内で具体化される構成要素は、方法1300に従って動作することができる。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
ブロック1302において、ストレージコントローラ174内のRAIDエンジン178又はその他のロジックが、所与の数のデバイスを使用して、ストレージサブシステムの各区分内のRAIDアレイにユーザデータを記憶すると決定する。その後、RUSH又はその他のアルゴリズムを使用して、いずれのデバイスを使用すべきかを選択することができる。1つの実施形態では、各区分が、同じ数のストレージデバイスを利用する。他の実施形態では、各区分が、異なる固有の数のストレージデバイスを利用してユーザデータを記憶することができる。ブロック1304において、ストレージコントローラ174が、いくつかのストレージデバイスがサブシステムの各区分内に対応するデバイス間エラー回復(パリティ)データを記憶するのをサポートすると決定することができる。この場合も、各区分は、同じ数又は異なる固有の数のストレージデバイスを利用してRAIDパリティ情報を記憶することができる。
ブロック1306において、ストレージコントローラは、Q個のストレージデバイスが追加のデバイス間エラー回復(パリティ)データをサブシステムの区分にわたって記憶するのをサポートすると決定することができる。ブロック1308において、選択したストレージデバイスに、ユーザデータ及び対応するRAIDパリティデータを書き込むことができる。再び図12を参照すると、区分1のRAIDアレイ1210などの所与のRAIDアレイに書き込みが行われた時に、1又はそれ以上のビットのパリティ情報を生成して、区分3のストレージデバイスQ1に記憶することができる。
ストレージコントローラ174が、所与の区分内で読み込み再構成を行う状態を検出した(条件付きブロック1310)場合、及び所与の区分が、RAIDパリティ情報を保持しているストレージデバイスを、いくつかの利用できないストレージデバイスを処理するのに十分な数だけ有している(条件付きブロック1312)場合、ブロック1314において、この所与の区分内の1又はそれ以上の対応するストレージデバイスを使用して(単複の)再構成読み込み動作を行う。この状態は、デバイス故障によって所与のRAIDアレイ内のストレージデバイスを利用できないこと、又はこれらのデバイスが所与のパフォーマンスレベル未満で動作していることを含むことができる。この所与のRAIDアレイは、所与の区分内のRAIDパリティ情報を記憶している数のストレージデバイスを使用して、最大数の利用できないストレージデバイスを処理することができる。例えば、上記の例の区分1のRAIDアレイ1210がL+aのRAIDアレイである場合、このRAIDアレイ1210は、1<=k<=aとするk個のストレージデバイスが利用できない場合に、区分1内のストレージデバイスのみを利用して読み込み再構成を行うことができる。
所与の区分が、RAIDパリティ情報を保持しているストレージデバイスを、いくつかの利用できないストレージデバイスを処理するのに十分な数だけ有していない(条件付きブロック1312)場合、及びこのいくつかの利用できないストレージデバイスを処理するのに十分なQ個のストレージデバイスが存在する(条件付きブロック1316)場合、ブロック1318において、1又はそれ以上の対応するQ個のストレージデバイスを使用して再構成読み込み動作を行う。読み込み再構成中には、ユーザデータを記憶している他の区分内の1又はそれ以上のストレージデバイスにアクセスすることができる。これらのストレージデバイスの選択は、1又はそれ以上のQ個のストレージデバイスに記憶されたパリティ情報の導出方法に基づくことができる。例えば、再び図12を参照すると、ストレージデバイスQ1に記憶された対応するRAIDパリティ情報を生成するために使用された可能性があるという理由で、読み込み再構成中に区分2のストレージデバイスD2にアクセスすることができる。いくつかの利用できないストレージデバイスを処理するのに十分な数のQ個のストレージデバイスが存在しない場合(条件付きブロック1316)、ブロック1320において、対応するユーザデータを別のソースから読み込むことができ、又はこれらのユーザデータを失われたものと見なすことができる。
なお、上述の実施形態は、ソフトウェアを含むことができる。このような実施形態では、方法及び/又は機構を実装するプログラム命令をコンピュータ可読媒体で搬送し、又はこれに記憶することができる。プログラム命令を記憶するように構成された数多くのタイプの媒体が利用可能であり、これらは、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM、DVD、フラッシュメモリ、プログラマブルROM(PROM)、ランダムアクセスメモリ(RAM)及び他の様々な形態の揮発性又は不揮発性ストレージを含む。
様々な実施形態では、本明細書で説明した方法及び機構の1又はそれ以上の部分が、クラウドコンピューティング環境の一部を成すことができる。このような実施形態では、1又はそれ以上の様々なモデルにより、インターネットを介してリソースをサービスとして提供することができる。このようなモデルとして、インフラストラクチャ・アズ・ア・サービス(IaaS)、プラットホーム・アズ・ア・サービス(PaaS)、及びソフトウェア・アズ・ア・サービス(SaaS)を挙げることができる。IaaSでは、コンピュータインフラストラクチャがサービスとして配信される。このような場合、一般にサービスプロバイダがコンピュータ設備を所有し運営する。PaaSモデルでは、開発者がソフトウェアソリューションを開発するために使用するソフトウェアツール及び基本設備をサービスプロバイダがサービスとして供給しホストすることができる。通常、SaaSは、サービスプロバイダのライセンスソフトウェアをサービスオンデマンドとして含む。サービスプロバイダは、このソフトウェアをホストすることができ、又はこのソフトウェアを一定期間にわたって顧客に展開することができる。上記のモデルの数多くの組み合わせが可能であり、企図される。
以上、実施形態についてかなり詳細に説明したが、上記開示を完全に理解すると、当業者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正を全て含むと解釈すべきであることが意図される。

Claims (19)

  1. 読み込み及び書き込み要求を受け取るように構成されたデータストレージサブシステムと、ストレージコントローラとを備えたコンピュータシステムであって、
    前記データストレージサブシステムは、独立ドライブ冗長アレイ(RAID)構成で複数のデータストレージデバイス上に複数のデータ記憶位置を含み、
    前記ストレージコントローラは、
    前記複数のデータストレージデバイスに、第1のRAIDストライプを書き込み、
    前記第1のRAIDストライプを書き込むことは、前記複数のデータストレージデバイスの第1のデータストレージデバイスに記憶される前記第1のRAIDストライプの第1のRAIDデータを保護するためのデバイス内保護データを記憶するための第1の空き容量を、前記第1のデータストレージデバイスに配置することを含み、
    前記複数のデータストレージデバイスに、第2のRAIDストライプを書き込み、
    前記第2のRAIDストライプを書き込むことは、前記第1の空き容量を配置することに加えて、前記第1のデータストレージデバイスに記憶される前記第2のRAIDストライプの第2のRAIDデータを保護するためのデバイス内保護データを記憶するための第2の空き容量を、前記第1のデータストレージデバイスに配置することを含み、
    前記第1の空き容量は、前記第2の空き容量とは異なる、
    ように構成される、
    コンピュータシステム。
  2. 前記ストレージコントローラは、
    データを記憶する際に使用するための、前記第1のRAIDストライプのための第1のRAIDレイアウトを決定し、
    データを記憶する際に使用するための、前記第2のRAIDストライプのための第2のRAIDレイアウトを決定し、前記第2のRAIDレイアウトは前記第1のRAIDレイアウトとは異なるように更に構成されることを特徴とする請求項1に記載のコンピュータシステム。
  3. 前記ストレージコントローラは、前記複数のデータストレージデバイスの特定のデータストレージデバイスにおける信頼性を決定し、決定された前記信頼性に基づき前記第2のRAIDストライプのためのデバイス間RAIDレベルを選択し、
    前記信頼性は、前記特定のデータストレージデバイスの使用年数に少なくとも部分的に基づいて決定され、前記複数のデータストレージデバイスは複数のソリッドステートドライブを含み、前記信頼性は、前記特定のデータストレージデバイスを含むソリッドステートドライブのアクセス率に少なくとも部分的に基づくことを特徴とする請求項1に記載のコンピュータシステム。
  4. 前記ストレージコントローラは、前記複数のデータストレージデバイスの特定のデータストレージデバイスにおける信頼性を決定し、決定された前記信頼性に基づき前記第2のRAIDストライプのためのデバイス間RAIDレベルを選択し、
    前記信頼性は、前記特定のデータストレージデバイスのエラー率に少なくとも部分的に基づいて決定されることを特徴とする請求項1に記載のコンピュータシステム。
  5. 前記ストレージコントローラは、
    前記第1のRAIDストライプのRAIDデータに対応するデバイス間保護データを記憶している特定の記憶位置を識別し、
    前記特定の記憶位置を割り当て解除する、ように構成されることを特徴とする請求項1に記載のコンピュータシステム。
  6. 前記ストレージコントローラは、前記特定の記憶位置のうちの1又はそれ以上を、第3のRAIDストライプにおける付加的なRAIDデータを記憶するために再割り当てするように更に構成される、
    ことを特徴とする請求項5に記載のコンピュータシステム。
  7. 再割り当てされた特定の記憶位置は、前記デバイス間保護データに使用していたものと同じサイズ又は配列を前記付加的なRAIDデータに使用しなくてもよい、ことを特徴とする請求項6に記載のコンピュータシステム。
  8. 前記複数のデータストレージデバイスのうちの前記第1のデータストレージデバイスは、データを消去ブロックサイズ単位で消去するように構成され、前記ストレージコントローラは、消去ブロックよりもサイズが小さなデータ部分へのアクセスに失敗したことを検出したことに応答して、
    前記失敗したデータ部分を含むデータの特定の消去ブロックサイズ部分を識別し、
    再生されたデータ部分を形成できなかった前記データ部分を再生し、
    前記第1のデータストレージデバイスが、前記再生されたデータ部分を含むデータの前記特定の消去
    ブロックサイズ部分を書き込むようにする、ように構成されることを特徴とする請求項1に記載のコンピュータシステム。
  9. 前記ストレージコントローラは、あるデータ部分へのアクセスに失敗したことを検出したことに応答して、
    再生されたデータ部分を形成できなかった前記データ部分を再生し、
    前記複数のデータストレージデバイスのうちの特定のデータストレージデバイス内のデバイス間保護データをシュレッドし、
    前記再生されたデータ部分を特定の記憶位置に記憶する、ように構成されることを特徴とする請求項1に記載のコンピュータシステム。
  10. 前記ストレージコントローラは、前記複数のデータストレージデバイスのうちの特定のデータストレージデバイスに、前記特定のデータストレージデバイスが記憶しているデータ部分をリマップして書き換えるようにするコマンドを発行するようにさらに構成される、ことを特徴とする請求項1に記載のコンピュータシステム。
  11. コンピューティングシステムで使用するための方法であって、
    独立ドライブ冗長アレイ(RAID)構成で複数のデータストレージデバイスの複数のデータ記憶位置を含むデータストレージサブシステムにおいて読み込み及び書き込み要求を受け取るステップを含み、
    前記複数のデータストレージデバイスに、第1のRAIDストライプを書き込むステップを含み、
    前記第1のRAIDストライプを書き込むステップは、前記複数のデータストレージデバイスの第1のデータストレージデバイスに記憶される前記第1のRAIDストライプの第1のRAIDデータを保護するためのデバイス内保護データを記憶するための第1の空き容量を、前記第1のデータストレージデバイスに配置することを含み、
    前記複数のデータストレージデバイスに、第2のRAIDストライプを書き込むステップを含み、
    前記第2のRAIDストライプを書き込むステップは、前記第1の空き容量を配置することに加えて、前記第1のデータストレージデバイスに記憶される前記第2のRAIDストライプの第2のRAIDデータを保護するためのデバイス内保護データを記憶するための第2の空き容量を、前記第1のデータストレージデバイスに配置することを含み、
    前記第1の空き容量は、前記第2の空き容量とは異なる、
    ことを特徴とする方法。
  12. データを記憶する際に使用するための、前記第1のRAIDストライプのための第1のRAIDレイアウトを決定し、
    データを記憶する際に使用するための、前記第2のRAIDストライプのための第2のRAIDレイアウトを決定し、前記第2の
    RAIDレイアウトは前記第1のRAIDレイアウトとは異なるように更に構成されることを特徴とする請求項11に記載の方法。
  13. 記複数のデータストレージデバイスの特定のデータストレージデバイスにおける信頼性を決定し、決定された前記信頼性に基づき前記第2のRAIDストライプのためのデバイス間RAIDレベルを選択し、
    前記信頼性は、前記特定のデータストレージデバイスの使用年数に少なくとも部分的に基づいて決定されることを特徴とする請求項11に記載の方法。
  14. 記複数のデータストレージデバイスの特定のデータストレージデバイスにおける信頼性を決定し、決定された前記信頼性に基づき前記第2のRAIDストライプのためのデバイス間RAIDレベルを選択し、
    前記信頼性は、前記特定のデータストレージデバイスのエラー率に少なくとも部分的に基づいて決定されることを特徴とする請求項11に記載の方法。
  15. 前記第1のRAIDストライプのRAIDデータに対応するデバイス間保護データを記憶している特定の記憶位置を識別するステップと、
    前記特定の記憶位置を割り当て解除するステップと、を更に含むことを特徴とする請求項11に記載の方法。
  16. 前記特定の記憶位置のうちの1又はそれ以上を、第3のRAIDストライプにおける付加的なRAIDデータを記憶するために再割り当てする、ことを更に含む請求項15に記載の方法。
  17. 再割り当てされた特定の記憶位置は、前記デバイス間保護データに使用していたものと同じサイズ又は配列を前記付加的なRAIDデータに使用しなくてもよい、ことを特徴とする請求項16に記載の方法。
  18. 前記複数のデータストレージデバイスのうちの特定のデータストレージデバイスは、データを消去ブロックサイズ単位で消去するように構成され、前記方法は、消去ブロックよりもサイズが小さなデータ部分へのアクセスに失敗したことを検出したことに応答して、
    前記失敗したデータ部分を含むデータの特定の消去ブロックサイズ部分を識別するステップと、
    再生されたデータ部分を形成できなかった前記データ部分を再生するステップと、
    前記第1のデータストレージデバイスが、前記再生されたデータ部分を含むデータの前記特定の消去ブロックサイズ部分を書き込むようにするステップと、をさらに含むことを特徴とする請求項11に記載の方法。
  19. プログラム命令を記憶するコンピュータ可読記憶媒体であって、前記プログラム命令は、
    独立ドライブ冗長アレイ(RAID)構成で複数のデータストレージデバイスの複数のデータ記憶位置を含むデータストレージサブシステムにおいて読み込み及び書き込み要求を受け取るステップが実行可能であり、
    前記複数のデータストレージデバイスに、第1のRAIDストライプを書き込むステップが実行可能であり、
    前記第1のRAIDストライプを書き込むステップは、前記複数のデータストレージデバイスの第1のデータストレージデバイスに記憶される前記第1のRAIDストライプの第1のRAIDデータを保護するためのデバイス内保護データを記憶するための第1の空き容量を、前記第1のデータストレージデバイスに配置することを含み、
    前記複数のデータストレージデバイスに、第2のRAIDストライプを書き込むステップが実行可能であり、
    前記第2のRAIDストライプを書き込むステップは、前記第1の空き容量を配置することに加えて、前記第1のデータストレージデバイスに記憶される前記第2のRAIDストライプの第2のRAIDデータを保護するためのデバイス内保護データを記憶するための第2の空き容量を、前記第1のデータストレージデバイスに配置することを含み、
    前記第1の空き容量は、前記第2の空き容量とは異なる、
    ことを特徴とするコンピュータ可読記憶媒体。
JP2016034148A 2010-09-28 2016-02-25 Ssd環境のための適応的raid Active JP6307537B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/892,894 2010-09-28
US12/892,894 US8775868B2 (en) 2010-09-28 2010-09-28 Adaptive RAID for an SSD environment

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013531644A Division JP5894167B2 (ja) 2010-09-28 2011-09-19 Ssd環境のための適応的raid

Publications (2)

Publication Number Publication Date
JP2016105320A JP2016105320A (ja) 2016-06-09
JP6307537B2 true JP6307537B2 (ja) 2018-04-04

Family

ID=44720158

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013531644A Active JP5894167B2 (ja) 2010-09-28 2011-09-19 Ssd環境のための適応的raid
JP2016034148A Active JP6307537B2 (ja) 2010-09-28 2016-02-25 Ssd環境のための適応的raid

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013531644A Active JP5894167B2 (ja) 2010-09-28 2011-09-19 Ssd環境のための適応的raid

Country Status (6)

Country Link
US (6) US8775868B2 (ja)
EP (2) EP3082047B1 (ja)
JP (2) JP5894167B2 (ja)
KR (1) KR20130118876A (ja)
CN (1) CN103348326B (ja)
WO (1) WO2012044488A1 (ja)

Families Citing this family (614)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US11275509B1 (en) 2010-09-15 2022-03-15 Pure Storage, Inc. Intelligently sizing high latency I/O requests in a storage environment
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9244769B2 (en) 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US20220398156A1 (en) * 2010-10-01 2022-12-15 Pure Storage, Inc. Distributed multi-level protection in a hyper-converged infrastructure
US20120150793A1 (en) * 2010-12-08 2012-06-14 Christopher Paul Carroll Systems and methods for file loading
US8601313B1 (en) * 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8615681B2 (en) * 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8850104B2 (en) * 2011-03-21 2014-09-30 Apple Inc. Independent management of data and parity logical block addresses
GB2492981B (en) * 2011-07-18 2014-03-26 Qando Service Inc Data reconstruction
US11636031B2 (en) 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
KR101801147B1 (ko) * 2011-08-30 2017-11-27 삼성전자주식회사 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
CN106469029B (zh) * 2011-12-31 2019-07-23 华为数字技术(成都)有限公司 数据分层存储处理方法、装置和存储设备
US8966170B2 (en) * 2012-01-31 2015-02-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Elastic cache of redundant cache data
US8719540B1 (en) 2012-03-15 2014-05-06 Pure Storage, Inc. Fractal layout of data blocks across multiple devices
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US8341342B1 (en) 2012-03-23 2012-12-25 DSSD, Inc. Storage system with incremental multi-dimensional RAID
KR20130111821A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 Raid 메모리 시스템
US9600359B2 (en) 2012-05-31 2017-03-21 Hewlett Packard Enterprise Development Lp Local error detection and global error correction
US11032259B1 (en) 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
US8745415B2 (en) 2012-09-26 2014-06-03 Pure Storage, Inc. Multi-drive cooperation to generate an encryption key
US10623386B1 (en) 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US9411717B2 (en) * 2012-10-23 2016-08-09 Seagate Technology Llc Metadata journaling with error correction redundancy
US8966310B2 (en) 2012-11-15 2015-02-24 Elwha Llc Redundancy for loss-tolerant data in non-volatile memory
US9323499B2 (en) 2012-11-15 2016-04-26 Elwha Llc Random number generator functions in memory
US9026719B2 (en) 2012-11-15 2015-05-05 Elwha, Llc Intelligent monitoring for computation in memory
US9442854B2 (en) 2012-11-15 2016-09-13 Elwha Llc Memory circuitry including computational circuitry for performing supplemental functions
US8925098B2 (en) 2012-11-15 2014-12-30 Elwha Llc Data security and access tracking in memory
US8464095B1 (en) 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9582465B2 (en) * 2012-11-15 2017-02-28 Elwha Llc Flexible processors and flexible memory
US9059736B2 (en) * 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9448883B1 (en) * 2012-12-04 2016-09-20 Cadence Design Systems, Inc. System and method for allocating data in memory array having regions of varying storage reliability
US9372726B2 (en) 2013-01-09 2016-06-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US9589008B2 (en) 2013-01-10 2017-03-07 Pure Storage, Inc. Deduplication of volume regions
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US11733908B2 (en) 2013-01-10 2023-08-22 Pure Storage, Inc. Delaying deletion of a dataset
US11768623B2 (en) 2013-01-10 2023-09-26 Pure Storage, Inc. Optimizing generalized transfers between storage systems
US8554997B1 (en) 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
US10452498B2 (en) 2013-06-28 2019-10-22 Hewlett Packard Enterprise Development Lp Fault tolerance for persistent main memory
CN104347122B (zh) * 2013-07-31 2017-08-04 华为技术有限公司 一种消息式内存模组的访存方法和装置
US9747993B2 (en) 2013-08-13 2017-08-29 Empire Technology Development Llc Memory systems
WO2015046645A1 (en) * 2013-09-27 2015-04-02 Inha-Industry Partnership Institute Deduplication of parity data in ssd based raid systems
KR101532283B1 (ko) * 2013-11-04 2015-06-30 인하대학교 산학협력단 Ssd 기반 raid 스토리지에서 데이터 및 패리티 디스크의 복합적 중복제거 방법
US11630585B1 (en) 2016-08-25 2023-04-18 Pure Storage, Inc. Processing evacuation events in a storage array that includes a plurality of storage devices
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US11128448B1 (en) 2013-11-06 2021-09-21 Pure Storage, Inc. Quorum-aware secret sharing
US10365858B2 (en) 2013-11-06 2019-07-30 Pure Storage, Inc. Thin provisioning in a storage device
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
US9274722B2 (en) 2013-12-06 2016-03-01 Concurrent Ventures, LLP System, method and article of manufacture for monitoring, controlling and improving storage media system performance
WO2015085313A1 (en) * 2013-12-06 2015-06-11 Concurrent Ventures, LLC System and method for dynamically load balancing storage media devices based on a mid-range performance level
US10235096B2 (en) 2013-12-06 2019-03-19 Concurrent Ventures, LLC System and method for dynamically load balancing storage media devices based on an average or discounted average sustained performance level
US10048895B2 (en) 2013-12-06 2018-08-14 Concurrent Ventures, LLC System and method for dynamically load balancing storage media devices based on a mid-range performance level
US9436404B2 (en) 2013-12-06 2016-09-06 Concurrent Ventures, LLC System and method for dynamically load balancing across storage media devices having fast access rates
US9898195B2 (en) 2013-12-09 2018-02-20 Empire Technglogy Development Llc Hardware interconnect based communication between solid state drive controllers
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9208086B1 (en) 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US9454434B2 (en) * 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US9483349B2 (en) 2014-01-17 2016-11-01 Netapp, Inc. Clustered raid data organization
US8949692B1 (en) 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US20150205667A1 (en) * 2014-01-23 2015-07-23 DSSD, Inc. Method and system for service-aware data placement in a storage system
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
US9348695B2 (en) 2014-05-21 2016-05-24 Sandisk Technologies Inc. System and method of storing redundancy data
US9478274B1 (en) 2014-05-28 2016-10-25 Emc Corporation Methods and apparatus for multiple memory maps and multiple page caches in tiered memory
US9543988B2 (en) * 2014-05-29 2017-01-10 Netapp, Inc. Adaptively strengthening ECC for solid state cache
US9779268B1 (en) 2014-06-03 2017-10-03 Pure Storage, Inc. Utilizing a non-repeating identifier to encrypt data
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
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
EP3152648B1 (en) * 2014-06-04 2021-08-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US10496556B1 (en) 2014-06-25 2019-12-03 Pure Storage, Inc. Dynamic data protection within a flash storage system
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9563509B2 (en) 2014-07-15 2017-02-07 Nimble Storage, Inc. Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system
US10296469B1 (en) 2014-07-24 2019-05-21 Pure Storage, Inc. Access control in a flash storage system
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery 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
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9864761B1 (en) 2014-08-08 2018-01-09 Pure Storage, Inc. Read optimization operations in a storage system
US9112890B1 (en) 2014-08-20 2015-08-18 E8 Storage Systems Ltd. Distributed storage over shared multi-queued storage device
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10430079B2 (en) 2014-09-08 2019-10-01 Pure Storage, Inc. Adjusting storage capacity in a computing system
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
US9274720B1 (en) 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
US10275171B2 (en) 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US10164841B2 (en) 2014-10-02 2018-12-25 Pure Storage, Inc. Cloud assist for storage systems
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
KR102177421B1 (ko) 2014-10-15 2020-11-11 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러
US9535619B2 (en) 2014-11-10 2017-01-03 Dell Products, Lp Enhanced reconstruction in an array of information storage devices by physical disk reduction without losing data
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9727485B1 (en) 2014-11-24 2017-08-08 Pure Storage, Inc. Metadata rewrite and flatten optimization
US9519666B2 (en) 2014-11-27 2016-12-13 E8 Storage Systems Ltd. Snapshots and thin-provisioning in distributed storage over shared storage devices
US9773007B1 (en) 2014-12-01 2017-09-26 Pure Storage, Inc. Performance improvements in a storage system
WO2016090541A1 (zh) * 2014-12-09 2016-06-16 清华大学 数据存储系统和数据存储方法
JP6357580B2 (ja) * 2014-12-11 2018-07-11 株式会社東芝 アレイ符号
US9588842B1 (en) 2014-12-11 2017-03-07 Pure Storage, Inc. Drive rebuild
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US9864769B2 (en) 2014-12-12 2018-01-09 Pure Storage, Inc. Storing data utilizing repeating pattern detection
US10545987B2 (en) 2014-12-19 2020-01-28 Pure Storage, Inc. Replication to the cloud
US11947968B2 (en) 2015-01-21 2024-04-02 Pure Storage, Inc. Efficient use of zone in a storage device
US10296354B1 (en) 2015-01-21 2019-05-21 Pure Storage, Inc. Optimized boot operations within a flash storage array
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9710165B1 (en) 2015-02-18 2017-07-18 Pure Storage, Inc. Identifying volume candidates for space reclamation
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
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
US9946471B1 (en) * 2015-03-31 2018-04-17 EMC IP Holding Company LLC RAID groups based on endurance sets
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
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US9525737B2 (en) * 2015-04-14 2016-12-20 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US11102298B1 (en) 2015-05-26 2021-08-24 Pure Storage, Inc. Locally providing cloud storage services for fleet management
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US9594678B1 (en) 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US9444822B1 (en) 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9300660B1 (en) 2015-05-29 2016-03-29 Pure Storage, Inc. Providing authorization and authentication in a cloud for a user of a storage array
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US9588691B2 (en) 2015-06-10 2017-03-07 Pure Storage, Inc. Dynamically managing control information in a storage device
US9766837B2 (en) * 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
US10496626B2 (en) 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US10310740B2 (en) * 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US10191841B2 (en) 2015-07-06 2019-01-29 Shannon Systems Ltd. Host device, access system, and access method
CN106339179B (zh) * 2015-07-06 2020-11-17 上海宝存信息科技有限公司 主机装置、存取系统、以及存取方法
US9697079B2 (en) 2015-07-13 2017-07-04 International Business Machines Corporation Protecting data integrity in de-duplicated storage environments in combination with software defined native raid
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
US10180803B2 (en) 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US9760432B2 (en) * 2015-07-28 2017-09-12 Futurewei Technologies, Inc. Intelligent code apparatus, method, and computer program for memory
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US9892071B2 (en) 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US9851762B1 (en) 2015-08-06 2017-12-26 Pure Storage, Inc. Compliant printed circuit board (‘PCB’) within an enclosure
US10198194B2 (en) 2015-08-24 2019-02-05 Pure Storage, Inc. Placing data within a storage device of a flash array
US11625181B1 (en) 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
US11294588B1 (en) 2015-08-24 2022-04-05 Pure Storage, Inc. Placing data within a storage device
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
KR20170028825A (ko) 2015-09-04 2017-03-14 퓨어 스토리지, 아이앤씨. 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색
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
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
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
US10360119B2 (en) 2015-10-06 2019-07-23 Netapp, Inc. Data recovery in a distributed storage system
US9886203B2 (en) 2015-10-22 2018-02-06 International Business Machines Corporation Shifting wearout of storage disks
US10514978B1 (en) 2015-10-23 2019-12-24 Pure Storage, Inc. Automatic deployment of corrective measures for storage arrays
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US11360844B1 (en) 2015-10-23 2022-06-14 Pure Storage, Inc. Recovery of a container storage provider
US9384082B1 (en) 2015-10-23 2016-07-05 Pure Storage, Inc. Proactively providing corrective measures for storage arrays
US9836366B2 (en) 2015-10-27 2017-12-05 Netapp, Inc. Third vote consensus in a cluster using shared storage devices
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US9740414B2 (en) 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
US10374868B2 (en) 2015-10-29 2019-08-06 Pure Storage, Inc. Distributed command processing in a flash storage system
US10353777B2 (en) 2015-10-30 2019-07-16 Pure Storage, Inc. Ensuring crash-safe forward progress of a system configuration update
US10437480B2 (en) 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9760479B2 (en) 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9846538B2 (en) 2015-12-07 2017-12-19 International Business Machines Corporation Data integrity and acceleration in compressed storage environments in combination with software defined native RAID
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US11616834B2 (en) 2015-12-08 2023-03-28 Pure Storage, Inc. Efficient replication of a dataset to the cloud
US10162835B2 (en) 2015-12-15 2018-12-25 Pure Storage, Inc. Proactive management of a plurality of storage arrays in a multi-array system
US11347697B1 (en) 2015-12-15 2022-05-31 Pure Storage, Inc. Proactively optimizing a storage system
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
US10346043B2 (en) 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
US10146618B2 (en) * 2016-01-04 2018-12-04 Western Digital Technologies, Inc. Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
US9886314B2 (en) 2016-01-28 2018-02-06 Pure Storage, Inc. Placing workloads in a multi-array system
US10572460B2 (en) 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
US9760297B2 (en) 2016-02-12 2017-09-12 Pure Storage, Inc. Managing input/output (‘I/O’) queues in a data storage system
KR102533389B1 (ko) 2016-02-24 2023-05-17 삼성전자주식회사 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템
US10318378B2 (en) 2016-02-25 2019-06-11 Micron Technology, Inc Redundant array of independent NAND for a three-dimensional memory array
US10198313B2 (en) 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
US11995315B2 (en) 2016-03-16 2024-05-28 Pure Storage, Inc. Converting data formats in a storage system
US9959043B2 (en) 2016-03-16 2018-05-01 Pure Storage, Inc. Performing a non-disruptive upgrade of data in a storage system
US10127113B1 (en) 2016-03-31 2018-11-13 EMC IP Holding Company LLC Method and system for checkerboard RAID
US9842084B2 (en) 2016-04-05 2017-12-12 E8 Storage Systems Ltd. Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US9841921B2 (en) 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US9811264B1 (en) 2016-04-28 2017-11-07 Pure Storage, Inc. Deploying client-specific applications in a storage system utilizing redundant system resources
US9952767B2 (en) 2016-04-29 2018-04-24 Netapp, Inc. Consistency group management
US10303390B1 (en) 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US10452297B1 (en) 2016-05-02 2019-10-22 Pure Storage, Inc. Generating and optimizing summary index levels in a deduplication storage system
US10133503B1 (en) 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
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
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
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
TWI634418B (zh) * 2016-07-13 2018-09-01 大陸商深圳衡宇芯片科技有限公司 用於程式化失敗時回復資料的方法與控制器及使用該方法與控制器的系統
US10452310B1 (en) 2016-07-13 2019-10-22 Pure Storage, Inc. Validating cabling for storage component admission to a storage array
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
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10459652B2 (en) 2016-07-27 2019-10-29 Pure Storage, Inc. Evacuating blades in a storage array that includes a plurality of blades
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10474363B1 (en) 2016-07-29 2019-11-12 Pure Storage, Inc. Space reporting in a storage system
US10290353B2 (en) * 2016-09-06 2019-05-14 Western Digital Technologies, Inc. Error mitigation for 3D NAND flash memory
US10235229B1 (en) 2016-09-07 2019-03-19 Pure Storage, Inc. Rehabilitating storage devices in a storage array that includes a plurality of storage devices
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US10671439B1 (en) 2016-09-07 2020-06-02 Pure Storage, Inc. Workload planning with quality-of-service (‘QOS’) integration
US11531577B1 (en) 2016-09-07 2022-12-20 Pure Storage, Inc. Temporarily limiting access to a storage device
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US11481261B1 (en) 2016-09-07 2022-10-25 Pure Storage, Inc. Preventing extended latency in a storage system
US10908966B1 (en) 2016-09-07 2021-02-02 Pure Storage, Inc. Adapting target service times in a storage system
US11960348B2 (en) 2016-09-07 2024-04-16 Pure Storage, Inc. Cloud-based monitoring of hardware components in a fleet of storage systems
US10331588B2 (en) 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
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
KR102545698B1 (ko) 2016-09-27 2023-06-19 삼성전자주식회사 데이터 저장 시스템
CN109196456B (zh) * 2016-09-27 2021-06-04 株式会社日立制作所 存储系统和存储系统管理方法
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US10162523B2 (en) 2016-10-04 2018-12-25 Pure Storage, Inc. Migrating data between volumes using virtual copy operation
US10613974B2 (en) 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
US10191662B2 (en) 2016-10-04 2019-01-29 Pure Storage, Inc. Dynamic allocation of segments in a flash storage system
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
KR20180040767A (ko) 2016-10-12 2018-04-23 삼성전자주식회사 Raid 방식으로 데이터를 저장하는 스토리지 장치
US10372368B2 (en) 2016-10-13 2019-08-06 International Business Machines Corporation Operating a RAID array with unequal stripes
US10007459B2 (en) 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11379132B1 (en) 2016-10-20 2022-07-05 Pure Storage, Inc. Correlating medical sensor data
US10185505B1 (en) 2016-10-28 2019-01-22 Pure Storage, Inc. Reading a portion of data to replicate a volume based on sequence numbers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
US10162566B2 (en) 2016-11-22 2018-12-25 Pure Storage, Inc. Accumulating application-level statistics in a storage system
US11620075B2 (en) 2016-11-22 2023-04-04 Pure Storage, Inc. Providing application aware storage
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10452290B2 (en) 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash 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
US10489307B2 (en) 2017-01-05 2019-11-26 Pure Storage, Inc. Periodically re-encrypting user data stored on a storage device
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11093146B2 (en) 2017-01-12 2021-08-17 Pure Storage, Inc. Automatic load rebalancing of a write group
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10503700B1 (en) 2017-01-19 2019-12-10 Pure Storage, Inc. On-demand content filtering of snapshots within a storage system
US11340800B1 (en) 2017-01-19 2022-05-24 Pure Storage, Inc. Content masking in a storage system
US10031872B1 (en) 2017-01-23 2018-07-24 E8 Storage Systems Ltd. Storage in multi-queue storage devices using queue multiplexing and access control
US11163624B2 (en) * 2017-01-27 2021-11-02 Pure Storage, Inc. Dynamically adjusting an amount of log data generated for a storage system
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US11675520B2 (en) 2017-03-10 2023-06-13 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US11442825B2 (en) 2017-03-10 2022-09-13 Pure Storage, Inc. Establishing a synchronous replication relationship between two or more storage systems
US10454810B1 (en) 2017-03-10 2019-10-22 Pure Storage, Inc. Managing host definitions across a plurality of storage systems
US11803453B1 (en) 2017-03-10 2023-10-31 Pure Storage, Inc. Using host connectivity states to avoid queuing I/O requests
US11089105B1 (en) 2017-12-14 2021-08-10 Pure Storage, Inc. Synchronously replicating datasets in cloud-based storage systems
US11169727B1 (en) 2017-03-10 2021-11-09 Pure Storage, Inc. Synchronous replication between storage systems with virtualized storage
US11941279B2 (en) 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US10521344B1 (en) 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US12056383B2 (en) 2017-03-10 2024-08-06 Pure Storage, Inc. Edge management service
US11762568B2 (en) 2017-03-16 2023-09-19 Microsoft Technology Licensing, Llc Storage system control
US10552062B2 (en) 2017-03-20 2020-02-04 Samsung Electronics Co., Ltd. System and method for storing very large key value objects
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices
US10795760B2 (en) 2017-03-20 2020-10-06 Samsung Electronics Co., Ltd. Key value SSD
JP2018163450A (ja) * 2017-03-24 2018-10-18 日本電気株式会社 データ記憶制御装置、データ記憶システム、データ記憶方法およびプログラム
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US10459664B1 (en) 2017-04-10 2019-10-29 Pure Storage, Inc. Virtualized copy-by-reference
US11403019B2 (en) 2017-04-21 2022-08-02 Pure Storage, Inc. Deduplication-aware per-tenant encryption
US12045487B2 (en) 2017-04-21 2024-07-23 Pure Storage, Inc. Preserving data deduplication in a multi-tenant storage system
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10289491B1 (en) * 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10524022B2 (en) 2017-05-02 2019-12-31 Seagate Technology Llc Data storage system with adaptive data path routing
US11868629B1 (en) 2017-05-05 2024-01-09 Pure Storage, Inc. Storage system sizing service
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11593036B2 (en) 2017-06-12 2023-02-28 Pure Storage, Inc. Staging data within a unified storage element
US12086651B2 (en) 2017-06-12 2024-09-10 Pure Storage, Inc. Migrating workloads using active disaster recovery
US12086650B2 (en) 2017-06-12 2024-09-10 Pure Storage, Inc. Workload placement based on carbon emissions
US11340939B1 (en) 2017-06-12 2022-05-24 Pure Storage, Inc. Application-aware analytics for storage systems
US10613791B2 (en) 2017-06-12 2020-04-07 Pure Storage, Inc. Portable snapshot replication between storage systems
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US11989429B1 (en) 2017-06-12 2024-05-21 Pure Storage, Inc. Recommending changes to a storage system
US10884636B1 (en) 2017-06-12 2021-01-05 Pure Storage, Inc. Presenting workload performance in a storage system
US11442669B1 (en) 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
US10552090B2 (en) * 2017-09-07 2020-02-04 Pure Storage, Inc. Solid state drives with multiple types of addressable memory
US12061822B1 (en) 2017-06-12 2024-08-13 Pure Storage, Inc. Utilizing volume-level policies in a storage system
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US11422731B1 (en) 2017-06-12 2022-08-23 Pure Storage, Inc. Metadata-based replication of a dataset
WO2018231350A1 (en) 2017-06-12 2018-12-20 Pure Storage, Inc. Accessible fast durable storage integrated into a bulk storage device
US10853148B1 (en) 2017-06-12 2020-12-01 Pure Storage, Inc. Migrating workloads between a plurality of execution environments
US11609718B1 (en) 2017-06-12 2023-03-21 Pure Storage, Inc. Identifying valid data after a storage system recovery
US11016824B1 (en) 2017-06-12 2021-05-25 Pure Storage, Inc. Event identification with out-of-order reporting in a cloud-based environment
US11210133B1 (en) 2017-06-12 2021-12-28 Pure Storage, Inc. Workload mobility between disparate execution environments
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US11561714B1 (en) 2017-07-05 2023-01-24 Pure Storage, Inc. Storage efficiency driven migration
US10795583B2 (en) 2017-07-19 2020-10-06 Samsung Electronics Co., Ltd. Automatic data placement manager in multi-tier all-flash datacenter
US11477280B1 (en) 2017-07-26 2022-10-18 Pure Storage, Inc. Integrating cloud storage services
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US11086525B2 (en) * 2017-08-02 2021-08-10 Kove Ip, Llc Resilient external memory
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10685010B2 (en) 2017-09-11 2020-06-16 Amazon Technologies, Inc. Shared volumes in distributed RAID over shared multi-queue storage devices
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
US10776202B1 (en) 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
US10452444B1 (en) 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US11861423B1 (en) 2017-10-19 2024-01-02 Pure Storage, Inc. Accelerating artificial intelligence (‘AI’) workflows
US10671435B1 (en) 2017-10-19 2020-06-02 Pure Storage, Inc. Data transformation caching in an artificial intelligence infrastructure
US11455168B1 (en) 2017-10-19 2022-09-27 Pure Storage, Inc. Batch building for deep learning training workloads
US11494692B1 (en) 2018-03-26 2022-11-08 Pure Storage, Inc. Hyperscale artificial intelligence and machine learning infrastructure
US12067466B2 (en) 2017-10-19 2024-08-20 Pure Storage, Inc. Artificial intelligence and machine learning hyperscale infrastructure
US10360214B2 (en) 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
CN107870744A (zh) * 2017-10-27 2018-04-03 上海新储集成电路有限公司 一种非同步镜像的混合硬盘阵列存储系统及方法
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10467107B1 (en) 2017-11-01 2019-11-05 Pure Storage, Inc. Maintaining metadata resiliency among storage device failures
US10509581B1 (en) 2017-11-01 2019-12-17 Pure Storage, Inc. Maintaining write consistency in a multi-threaded storage system
US10817392B1 (en) 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
US10484174B1 (en) 2017-11-01 2019-11-19 Pure Storage, Inc. Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices
US10671494B1 (en) 2017-11-01 2020-06-02 Pure Storage, Inc. Consistent selection of replicated datasets during storage system recovery
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
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10936238B2 (en) 2017-11-28 2021-03-02 Pure Storage, Inc. Hybrid data tiering
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US10496541B2 (en) 2017-11-29 2019-12-03 Samsung Electronics Co., Ltd. Dynamic cache partition manager in heterogeneous virtualization cloud cache environment
US10795598B1 (en) 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
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
US11036677B1 (en) 2017-12-14 2021-06-15 Pure Storage, Inc. Replicated data integrity
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10901634B2 (en) 2018-01-12 2021-01-26 Seagate Technology Llc Self-healing in a storage system where critical storage group is rebuilt with different raid geometry using remaining functioning drives (in the critical storage group) that have not failed, and not all data, drained from the critical storage group, is stopped in the critical storage group that is rebuilt
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
CN110058785B (zh) * 2018-01-18 2022-07-05 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10970395B1 (en) 2018-01-18 2021-04-06 Pure Storage, Inc Security threat monitoring for a storage system
US11144638B1 (en) 2018-01-18 2021-10-12 Pure Storage, Inc. Method for storage system detection and alerting on potential malicious action
US10992533B1 (en) 2018-01-30 2021-04-27 Pure Storage, Inc. Policy based path management
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10942650B1 (en) 2018-03-05 2021-03-09 Pure Storage, Inc. Reporting capacity utilization in a storage system
US11861170B2 (en) 2018-03-05 2024-01-02 Pure Storage, Inc. Sizing resources for a replication target
US10521151B1 (en) 2018-03-05 2019-12-31 Pure Storage, Inc. Determining effective space utilization in a storage system
US11150834B1 (en) 2018-03-05 2021-10-19 Pure Storage, Inc. Determining storage consumption in a storage system
US11972134B2 (en) 2018-03-05 2024-04-30 Pure Storage, Inc. Resource utilization using normalized input/output (‘I/O’) operations
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network
US10917471B1 (en) 2018-03-15 2021-02-09 Pure Storage, Inc. Active membership in a cloud-based storage system
US10924548B1 (en) 2018-03-15 2021-02-16 Pure Storage, Inc. Symmetric storage using a cloud-based storage system
US12066900B2 (en) 2018-03-15 2024-08-20 Pure Storage, Inc. Managing disaster recovery to cloud computing environment
US11210009B1 (en) 2018-03-15 2021-12-28 Pure Storage, Inc. Staging data in a cloud-based storage system
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US11288138B1 (en) 2018-03-15 2022-03-29 Pure Storage, Inc. Recovery from a system fault in a cloud-based storage system
US11171950B1 (en) 2018-03-21 2021-11-09 Pure Storage, Inc. Secure cloud-based storage system management
US11095706B1 (en) 2018-03-21 2021-08-17 Pure Storage, Inc. Secure cloud-based storage system management
US10838833B1 (en) 2018-03-26 2020-11-17 Pure Storage, Inc. Providing for high availability in a data analytics pipeline without replicas
US11934322B1 (en) 2018-04-05 2024-03-19 Pure Storage, Inc. Multiple encryption keys on storage drives
US10832728B2 (en) * 2018-04-05 2020-11-10 International Business Machines Corporation Location selection based on adjacent location errors
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
US11392553B1 (en) 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US10678433B1 (en) 2018-04-27 2020-06-09 Pure Storage, Inc. Resource-preserving system upgrade
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
TWI650763B (zh) 2018-05-14 2019-02-11 慧榮科技股份有限公司 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US10992598B2 (en) 2018-05-21 2021-04-27 Pure Storage, Inc. Synchronously replicating when a mediation service becomes unavailable
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US12086431B1 (en) 2018-05-21 2024-09-10 Pure Storage, Inc. Selective communication protocol layering for synchronous replication
US10871922B2 (en) 2018-05-22 2020-12-22 Pure Storage, Inc. Integrated storage management between storage systems and container orchestrators
US10678436B1 (en) 2018-05-29 2020-06-09 Pure Storage, Inc. Using a PID controller to opportunistically compress more data during garbage collection
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
US10776046B1 (en) 2018-06-08 2020-09-15 Pure Storage, Inc. Optimized non-uniform memory access
US11281577B1 (en) 2018-06-19 2022-03-22 Pure Storage, Inc. Garbage collection tuning for low drive wear
US10929229B2 (en) 2018-06-21 2021-02-23 International Business Machines Corporation Decentralized RAID scheme having distributed parity computation and recovery
US10884889B2 (en) * 2018-06-22 2021-01-05 Seagate Technology Llc Allocating part of a raid stripe to repair a second raid stripe
US11748196B2 (en) 2018-06-29 2023-09-05 International Business Machines Corporation Adaptive parity rotation for redundant arrays of independent disks
US11157361B2 (en) 2018-06-29 2021-10-26 International Business Machines Corporation Efficient utilization of storage space in arrays of storage drives
US11869586B2 (en) 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
US11403000B1 (en) 2018-07-20 2022-08-02 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11416298B1 (en) 2018-07-20 2022-08-16 Pure Storage, Inc. Providing application-specific storage by a storage system
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11632360B1 (en) 2018-07-24 2023-04-18 Pure Storage, Inc. Remote access to a storage device
US11146564B1 (en) 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
US11954238B1 (en) 2018-07-24 2024-04-09 Pure Storage, Inc. Role-based access control for a storage system
US11593000B2 (en) 2018-07-26 2023-02-28 Huawei Technologies Co., Ltd. Data processing method and apparatus
US11055008B2 (en) * 2018-08-02 2021-07-06 EMC IP Holding Company LLC Managing wear balancing in mapped RAID storage systems
US10996886B2 (en) * 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11133076B2 (en) 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US11194759B2 (en) 2018-09-06 2021-12-07 Pure Storage, Inc. Optimizing local data relocation operations of 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
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US11860820B1 (en) 2018-09-11 2024-01-02 Pure Storage, Inc. Processing data through a storage system in a data pipeline
TWI703438B (zh) * 2018-09-11 2020-09-01 慧榮科技股份有限公司 映射表更新方法
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10846216B2 (en) 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11113409B2 (en) 2018-10-26 2021-09-07 Pure Storage, Inc. Efficient rekey in a transparent decrypting storage array
US12026381B2 (en) 2018-10-26 2024-07-02 Pure Storage, Inc. Preserving identities and policies across replication
US10671302B1 (en) 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
US10963189B1 (en) 2018-11-18 2021-03-30 Pure Storage, Inc. Coalescing write operations in a cloud-based storage system
US11526405B1 (en) 2018-11-18 2022-12-13 Pure Storage, Inc. Cloud-based disaster recovery
US11023179B2 (en) 2018-11-18 2021-06-01 Pure Storage, Inc. Cloud-based storage system storage management
US12026061B1 (en) 2018-11-18 2024-07-02 Pure Storage, Inc. Restoring a cloud-based storage system to a selected state
US12026060B1 (en) 2018-11-18 2024-07-02 Pure Storage, Inc. Reverting between codified states in a cloud-based storage system
US11340837B1 (en) 2018-11-18 2022-05-24 Pure Storage, Inc. Storage system management via a remote console
US11650749B1 (en) 2018-12-17 2023-05-16 Pure Storage, Inc. Controlling access to sensitive data in a shared dataset
US11003369B1 (en) 2019-01-14 2021-05-11 Pure Storage, Inc. Performing a tune-up procedure on a storage device during a boot process
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US11588633B1 (en) 2019-03-15 2023-02-21 Pure Storage, Inc. Decommissioning keys in a decryption storage system
US11042452B1 (en) 2019-03-20 2021-06-22 Pure Storage, Inc. Storage system data recovery using data recovery as a service
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
US11397674B1 (en) 2019-04-03 2022-07-26 Pure Storage, Inc. Optimizing garbage collection across heterogeneous flash devices
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US10990480B1 (en) 2019-04-05 2021-04-27 Pure Storage, Inc. Performance of RAID rebuild operations by a storage group controller of a storage system
US11068162B1 (en) 2019-04-09 2021-07-20 Pure Storage, Inc. Storage management in a cloud data store
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11392555B2 (en) 2019-05-15 2022-07-19 Pure Storage, Inc. Cloud-based file services
US11853266B2 (en) 2019-05-15 2023-12-26 Pure Storage, Inc. Providing a file system in a cloud environment
US11126364B2 (en) 2019-07-18 2021-09-21 Pure Storage, Inc. Virtual storage system architecture
US11327676B1 (en) 2019-07-18 2022-05-10 Pure Storage, Inc. Predictive data streaming in a virtual storage system
US12001355B1 (en) 2019-05-24 2024-06-04 Pure Storage, Inc. Chunked memory efficient storage data transfers
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
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
US11106370B2 (en) 2019-07-02 2021-08-31 Micron Technology, Inc. Changing of memory components to be used for a stripe based on an endurance condition
US10929046B2 (en) 2019-07-09 2021-02-23 Pure Storage, Inc. Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device
US11550514B2 (en) 2019-07-18 2023-01-10 Pure Storage, Inc. Efficient transfers between tiers of a virtual storage system
US11487715B1 (en) * 2019-07-18 2022-11-01 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11526408B2 (en) 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11861221B1 (en) 2019-07-18 2024-01-02 Pure Storage, Inc. Providing scalable and reliable container-based storage services
US11422751B2 (en) 2019-07-18 2022-08-23 Pure Storage, Inc. Creating a virtual storage system
US11093139B1 (en) 2019-07-18 2021-08-17 Pure Storage, Inc. Durably storing data within a virtual storage system
US11086713B1 (en) 2019-07-23 2021-08-10 Pure Storage, Inc. Optimized end-to-end integrity storage system
JP6942163B2 (ja) * 2019-08-06 2021-09-29 株式会社日立製作所 ドライブボックス、ストレージシステム及びデータ転送方法
US11086553B1 (en) 2019-08-28 2021-08-10 Pure Storage, Inc. Tiering duplicated objects in a cloud-based object store
US11693713B1 (en) 2019-09-04 2023-07-04 Pure Storage, Inc. Self-tuning clusters for resilient microservices
US11963321B2 (en) 2019-09-11 2024-04-16 Pure Storage, Inc. Low profile latching mechanism
US11797569B2 (en) 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US11625416B1 (en) 2019-09-13 2023-04-11 Pure Storage, Inc. Uniform model for distinct types of data replication
US12045252B2 (en) 2019-09-13 2024-07-23 Pure Storage, Inc. Providing quality of service (QoS) for replicating datasets
US11573864B1 (en) 2019-09-16 2023-02-07 Pure Storage, Inc. Automating database management in a storage system
US11669386B1 (en) 2019-10-08 2023-06-06 Pure Storage, Inc. Managing an application's resource stack
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11403043B2 (en) 2019-10-15 2022-08-02 Pure Storage, Inc. Efficient data compression by grouping similar data within a data segment
RU2019134842A (ru) * 2019-10-30 2021-04-30 ИЭмСи АйПи ХОЛДИНГ КОМПАНИ, ЛЛС Система и способ выбора уровня избыточного массива независимых дисков (raid) для экстента сегмента запоминающего устройства
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US12079502B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Storage element attribute-based determination of a data protection policy for use within a storage system
US12050689B2 (en) 2019-11-22 2024-07-30 Pure Storage, Inc. Host anomaly-based generation of snapshots
US12050683B2 (en) 2019-11-22 2024-07-30 Pure Storage, Inc. Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US12079333B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Independent security threat detection and remediation by storage systems in a synchronous replication arrangement
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US12067118B2 (en) 2019-11-22 2024-08-20 Pure Storage, Inc. Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against a storage system
US12079356B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Measurement interval anomaly detection-based generation of snapshots
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11930112B1 (en) 2019-12-06 2024-03-12 Pure Storage, Inc. Multi-path end-to-end encryption in a storage system
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
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
US11733901B1 (en) 2020-01-13 2023-08-22 Pure Storage, Inc. Providing persistent storage to transient cloud computing services
US11709636B1 (en) 2020-01-13 2023-07-25 Pure Storage, Inc. Non-sequential readahead for deep learning training
US11720497B1 (en) 2020-01-13 2023-08-08 Pure Storage, Inc. Inferred nonsequential prefetch based on data access patterns
US12014065B2 (en) 2020-02-11 2024-06-18 Pure Storage, Inc. Multi-cloud orchestration as-a-service
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US10990474B1 (en) * 2020-03-06 2021-04-27 Seagate Technology Llc Cost-benefit aware read-amplification in RAID scrubbing
US11321006B1 (en) 2020-03-25 2022-05-03 Pure Storage, Inc. Data loss prevention during transitions from a replication source
US12038881B2 (en) 2020-03-25 2024-07-16 Pure Storage, Inc. Replica transitions for file storage
US11301152B1 (en) 2020-04-06 2022-04-12 Pure Storage, Inc. Intelligently moving data between storage systems
US11630598B1 (en) 2020-04-06 2023-04-18 Pure Storage, Inc. Scheduling data replication operations
US11494267B2 (en) 2020-04-14 2022-11-08 Pure Storage, Inc. Continuous value data redundancy
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
US11921670B1 (en) 2020-04-20 2024-03-05 Pure Storage, Inc. Multivariate data backup retention policies
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US20210357119A1 (en) * 2020-05-15 2021-11-18 Rey Bruce Artificial intelligence-based hybrid raid controller device
US11431488B1 (en) 2020-06-08 2022-08-30 Pure Storage, Inc. Protecting local key generation using a remote key management service
CN111767165B (zh) * 2020-06-30 2024-06-14 杭州海康存储科技有限公司 数据处理方法、装置及控制设备
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
US12056625B2 (en) 2020-08-03 2024-08-06 Dell Products L.P. Determination of storage configuration for enterprise distributed environment
US11507298B2 (en) * 2020-08-18 2022-11-22 PetaIO Inc. Computational storage systems and methods
US11275652B1 (en) * 2020-09-01 2022-03-15 EMC IP Holding Company LLC Storing erasure coded data based on reliability of storage devices
US12079222B1 (en) 2020-09-04 2024-09-03 Pure Storage, Inc. Enabling data portability between systems
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
US11934675B2 (en) * 2020-09-12 2024-03-19 Western Digital Technologies, Inc. Mixed mode block cycling for intermediate data
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
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
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
US11853285B1 (en) 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
US20240106892A1 (en) 2021-01-25 2024-03-28 Volumez Technologies Ltd. Remote Online Volume Cloning Method and System
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
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
CN115220646A (zh) * 2021-04-21 2022-10-21 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US12086649B2 (en) 2021-05-12 2024-09-10 Pure Storage, Inc. Rebalancing in a fleet of storage systems using data science
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11816129B2 (en) 2021-06-22 2023-11-14 Pure Storage, Inc. Generating datasets using approximate baselines
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
JP2023044168A (ja) 2021-09-17 2023-03-30 キオクシア株式会社 メモリコントローラ、メモリシステム、及び情報処理システム
US11797377B2 (en) 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11893263B2 (en) 2021-10-29 2024-02-06 Pure Storage, Inc. Coordinated checkpoints among storage systems implementing checkpoint-based replication
US11914867B2 (en) 2021-10-29 2024-02-27 Pure Storage, Inc. Coordinated snapshots among storage systems implementing a promotion/demotion model
US11714723B2 (en) 2021-10-29 2023-08-01 Pure Storage, Inc. Coordinated snapshots for data stored across distinct storage environments
US11803329B2 (en) 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11922052B2 (en) 2021-12-15 2024-03-05 Pure Storage, Inc. Managing links between storage objects
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
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
US11847071B2 (en) 2021-12-30 2023-12-19 Pure Storage, Inc. Enabling communication between a single-port device and multiple storage system controllers
US12001300B2 (en) 2022-01-04 2024-06-04 Pure Storage, Inc. Assessing protection for storage resources
CN114442950B (zh) * 2022-01-21 2024-01-23 山东云海国创云计算装备产业创新中心有限公司 一种数据恢复方法、系统、装置及计算机可读存储介质
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction
WO2023162465A1 (ja) * 2022-02-24 2023-08-31 ソニーセミコンダクタソリューションズ株式会社 ライトバッファ制御回路
CN116027991B (zh) * 2023-03-29 2023-09-19 苏州浪潮智能科技有限公司 Raid阵列管理方法、装置、raid卡及存储介质
CN117908804B (zh) * 2024-03-19 2024-05-28 中国空气动力研究与发展中心计算空气动力研究所 基于作业感知的文件条带化方法、装置、设备及介质

Family Cites Families (200)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5208813A (en) 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
DE69131551T2 (de) * 1990-11-09 2000-02-17 Emc Corp., Hopkinton Logische Aufteilung eines Speichersystems mit redundanter Matrix
US5379305A (en) * 1992-07-20 1995-01-03 Digital Equipment Corporation Error correction system with selectable error correction capabilities
US5403639A (en) 1992-09-02 1995-04-04 Storage Technology Corporation File server having snapshot application data groups
DE9310582U1 (de) 1993-07-15 1993-09-23 Paul Hettich GmbH & Co, 32278 Kirchlengern Rasteinrichtung fuer schubkaesten o.dgl.
JP2905368B2 (ja) * 1993-08-10 1999-06-14 富士通株式会社 誤り検出・訂正方法
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
JPH08137627A (ja) * 1994-11-07 1996-05-31 Fujitsu Ltd ディスクアレイ装置
US6412045B1 (en) 1995-05-23 2002-06-25 Lsi Logic Corporation Method for transferring data from a host computer to a storage media using selectable caching strategies
JP3062050B2 (ja) 1995-07-21 2000-07-10 インターナショナル・ビジネス・マシーンズ・コーポレ−ション ディスク駆動制御方法及び装置
US5822782A (en) 1995-10-27 1998-10-13 Symbios, Inc. Methods and structure to maintain raid configuration information on disks of the array
JP3648311B2 (ja) 1995-12-12 2005-05-18 富士通株式会社 ディスクアレイ装置
JPH09244931A (ja) 1996-03-06 1997-09-19 Mitsubishi Electric Corp リアルタイムファイルシステム
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
JP3595099B2 (ja) * 1997-03-17 2004-12-02 富士通株式会社 デバイスアレイ・システム
US5940838A (en) 1997-07-11 1999-08-17 International Business Machines Corporation Parallel file system and method anticipating cache usage patterns
US6038639A (en) 1997-09-09 2000-03-14 Storage Technology Corporation Data file storage management system for snapshot copy operations
JPH11305954A (ja) 1998-04-27 1999-11-05 Oki Electric Ind Co Ltd 半導体記憶装置及び半導体記憶装置の書き換え制御方法
US6530035B1 (en) * 1998-10-23 2003-03-04 Oracle Corporation Method and system for managing storage systems containing redundancy data
US6799283B1 (en) 1998-12-04 2004-09-28 Matsushita Electric Industrial Co., Ltd. Disk array device
JP2000181803A (ja) 1998-12-18 2000-06-30 Fujitsu Ltd 鍵管理機能付電子データ保管装置および電子データ保管方法
US6275898B1 (en) * 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US6834298B1 (en) 1999-09-21 2004-12-21 Siemens Information And Communication Networks, Inc. System and method for network auto-discovery and configuration
US6516425B1 (en) * 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
JP2002108573A (ja) 2000-09-28 2002-04-12 Nec Corp ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体
US6718448B1 (en) 2000-11-28 2004-04-06 Emc Corporation Queued locking of a shared resource using multimodal lock types
US6757769B1 (en) 2000-11-28 2004-06-29 Emc Corporation Cooperative lock override procedure
KR100388498B1 (ko) * 2000-12-30 2003-06-25 한국전자통신연구원 복수 개의 레이드를 구비한 계층적 레이드 시스템
US6681290B2 (en) 2001-01-29 2004-01-20 International Business Machines Corporation Physical data layout to reduce seeks in a raid system
US6850938B1 (en) 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
JP4457185B2 (ja) 2001-02-13 2010-04-28 ネットアップ,インコーポレイテッド シリコンベースのストレージ仮想化サーバ
US6854071B2 (en) 2001-05-14 2005-02-08 International Business Machines Corporation Method and apparatus for providing write recovery of faulty data in a non-redundant raid system
US6981171B2 (en) * 2001-06-05 2005-12-27 Sun Microsystems, Inc. Data storage array employing block verification information to invoke initialization procedures
US7075874B2 (en) * 2001-07-17 2006-07-11 Hewlett-Packard Development Company, L.P. Data storage device monitoring system, method and removable data carrier use with data storage systems
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
JP2003122508A (ja) * 2001-10-15 2003-04-25 Hitachi Ltd ボリューム管理方法及び装置
US6973549B1 (en) 2001-12-10 2005-12-06 Incipient, Inc. Locking technique for control and synchronization
US6986015B2 (en) 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US7111117B2 (en) * 2001-12-19 2006-09-19 Broadcom Corporation Expansion of RAID subsystems using spare space with immediate access to new space
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
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
US6938123B2 (en) 2002-07-19 2005-08-30 Storage Technology Corporation System and method for raid striping
US7260628B2 (en) 2002-09-06 2007-08-21 Hitachi, Ltd. Event notification in storage networks
US7216164B1 (en) 2002-10-09 2007-05-08 Cisco Technology, Inc. Methods and apparatus for determining the performance of a server
US6952794B2 (en) * 2002-10-10 2005-10-04 Ching-Hung Lu Method, system and apparatus for scanning newly added disk drives and automatically updating RAID configuration and rebuilding RAID data
US7028218B2 (en) 2002-12-02 2006-04-11 Emc Corporation Redundant multi-processor and logical processor configuration for a file server
JP2004213064A (ja) * 2002-12-26 2004-07-29 Fujitsu Ltd Raid装置及びその論理デバイス拡張方法
EP1611518A1 (en) 2003-04-07 2006-01-04 Itracs Corporation Network security system based on physical location
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
GB0320494D0 (en) 2003-09-02 2003-10-01 Ibm Methods apparatus and controllers for a raid storage system
US7865485B2 (en) 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
US7206991B2 (en) * 2003-10-15 2007-04-17 Lsi Logic Corporation Method, apparatus and program for migrating between striped storage and parity striped storage
JP4426262B2 (ja) 2003-11-26 2010-03-03 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の障害回避方法
US8560747B1 (en) 2007-02-16 2013-10-15 Vmware, Inc. Associating heartbeat data with access to shared resources of a computer system
JP4456909B2 (ja) 2004-03-29 2010-04-28 株式会社日立製作所 バックアップ方法、ストレージシステム及びそのプログラム
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
US7424482B2 (en) 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
US8402325B2 (en) * 2004-08-02 2013-03-19 St-Ericsson Sa Data storage and replay apparatus
US7681072B1 (en) 2004-08-13 2010-03-16 Panasas, Inc. Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices
JP4555029B2 (ja) * 2004-09-01 2010-09-29 株式会社日立製作所 ディスクアレイ装置
US7330998B2 (en) * 2004-09-20 2008-02-12 Intel Corporation Data integrity verification
US20060074940A1 (en) 2004-10-05 2006-04-06 International Business Machines Corporation Dynamic management of node clusters to enable data sharing
US7769975B2 (en) * 2004-11-15 2010-08-03 International Business Machines Corporation Method for configuring volumes in a storage system
JP4324088B2 (ja) * 2004-12-17 2009-09-02 富士通株式会社 データ複製制御装置
US7363444B2 (en) 2005-01-10 2008-04-22 Hewlett-Packard Development Company, L.P. Method for taking snapshots of data
US7398460B1 (en) * 2005-01-31 2008-07-08 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7484137B2 (en) 2005-03-31 2009-01-27 Hitachi Global Storage Technologies Netherlands B.V. RAID system using regional error statistics for redundancy grouping
US7913300B1 (en) 2005-04-08 2011-03-22 Netapp, Inc. Centralized role-based access control for storage servers
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US8364845B2 (en) 2005-05-19 2013-01-29 Wyse Technology Inc. Method and system for thin client configuration
WO2006123416A1 (ja) 2005-05-19 2006-11-23 Fujitsu Limited ディスク故障復旧方法及びディスクアレイ装置
JP4347265B2 (ja) * 2005-05-31 2009-10-21 Necシステムテクノロジー株式会社 Raid制御装置、およびraid制御方法
JP4690783B2 (ja) * 2005-06-08 2011-06-01 株式会社日立製作所 ボリューム管理システムおよびその方法
US7933936B2 (en) 2005-06-10 2011-04-26 Network Appliance, Inc. Method and system for automatic management of storage space
US7979613B2 (en) 2005-07-15 2011-07-12 International Business Machines Corporation Performance of a storage system
JP2007087036A (ja) 2005-09-21 2007-04-05 Hitachi Ltd スナップショット維持装置及び方法
JP4662548B2 (ja) 2005-09-27 2011-03-30 株式会社日立製作所 スナップショット管理装置及び方法並びにストレージシステム
US20070124648A1 (en) * 2005-10-31 2007-05-31 Ajay Dholakia Data protection method
JP4927408B2 (ja) 2006-01-25 2012-05-09 株式会社日立製作所 記憶システム及びそのデータ復元方法
JP2007199953A (ja) 2006-01-25 2007-08-09 Fujitsu Ltd ディスクアレイ装置およびディスクアレイ制御方法
US7743197B2 (en) 2006-05-11 2010-06-22 Emulex Design & Manufacturing Corporation System and method for virtualizing PCIe devices
JP2007233903A (ja) 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US8832247B2 (en) 2006-03-24 2014-09-09 Blue Coat Systems, Inc. Methods and systems for caching content at multiple levels
US7580956B1 (en) * 2006-05-04 2009-08-25 Symantec Operating Corporation System and method for rating reliability of storage devices
US7987438B2 (en) 2006-08-10 2011-07-26 International Business Machines Corporation Structure for initializing expansion adapters installed in a computer system having similar expansion adapters
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7555599B2 (en) 2006-09-06 2009-06-30 International Business Machines Corporation System and method of mirrored RAID array write management
US7475215B2 (en) 2006-09-08 2009-01-06 Lsi Corporation Identification of uncommitted memory blocks during an initialization procedure
WO2008065695A1 (fr) 2006-11-27 2008-06-05 Fujitsu Limited Programme de gestion de serveur, programme de gestion de serveur de messagerie, système de gestion de serveur et procédé de gestion de serveur
US8694712B2 (en) 2006-12-05 2014-04-08 Microsoft Corporation Reduction of operational costs of virtual TLBs
WO2008070172A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for remote direct memory access to a solid-state storage device
US20080155191A1 (en) 2006-12-21 2008-06-26 Anderson Robert J Systems and methods for providing heterogeneous storage systems
US8370562B2 (en) 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
JP4900811B2 (ja) 2007-03-30 2012-03-21 株式会社日立製作所 記憶システムおよび記憶制御方法
JP4529990B2 (ja) 2007-03-30 2010-08-25 ブラザー工業株式会社 画像処理プログラム及び画像処理装置
US7958303B2 (en) 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
US8086652B1 (en) 2007-04-27 2011-12-27 Netapp, Inc. Storage system-based hole punching for reclaiming unused space from a data container
JP5018880B2 (ja) 2007-05-30 2012-09-05 富士通株式会社 画像暗号化装置、画像復号装置、方法、及びプログラム
US7765426B2 (en) 2007-06-07 2010-07-27 Micron Technology, Inc. Emerging bad block detection
WO2008152708A1 (ja) * 2007-06-13 2008-12-18 Fujitsu Limited Raidグループ変換装置、raidグループ変換方法およびraidグループ変換プログラム
US8874854B2 (en) 2007-07-30 2014-10-28 International Business Machines Corporation Method for selectively enabling and disabling read caching in a storage subsystem
JP2009037304A (ja) * 2007-07-31 2009-02-19 Hitachi Ltd Raidレベルを変更する機能を有したストレージシステム
CN101402501A (zh) 2007-10-02 2009-04-08 周述均 医院污水无害化处理工艺及其全自动控制装置
JP2009211202A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
US7970994B2 (en) 2008-03-04 2011-06-28 International Business Machines Corporation High performance disk array rebuild
US8352540B2 (en) 2008-03-06 2013-01-08 International Business Machines Corporation Distinguishing data streams to enhance data storage efficiency
JP4862847B2 (ja) * 2008-03-07 2012-01-25 日本電気株式会社 ディスクアレイのデータ復旧方法、ディスクアレイシステム及び制御プログラム
US7873619B1 (en) 2008-03-31 2011-01-18 Emc Corporation Managing metadata
US8621241B1 (en) 2008-04-25 2013-12-31 Netapp, Inc. Storage and recovery of cryptographic key identifiers
US8117464B1 (en) 2008-04-30 2012-02-14 Netapp, Inc. Sub-volume level security for deduplicated data
US7958304B1 (en) * 2008-04-30 2011-06-07 Network Appliance, Inc. Dynamically adapting the fault tolerance and performance characteristics of a raid-based storage system by merging and splitting raid groups
US9678879B2 (en) 2008-05-29 2017-06-13 Red Hat, Inc. Set partitioning for encoding file system allocation metadata
US20090300283A1 (en) * 2008-05-29 2009-12-03 Yutaka Kudo Method and apparatus for dissolving hot spots in storage systems
JP2010015197A (ja) * 2008-06-30 2010-01-21 Toshiba Corp ストレージ制御装置、データ復元装置およびストレージシステム
US8296547B2 (en) 2008-08-27 2012-10-23 International Business Machines Corporation Loading entries into a TLB in hardware via indirect TLB entries
US20100057673A1 (en) 2008-09-04 2010-03-04 Boris Savov Reusable mapping rules for data to data transformation
JP4792490B2 (ja) * 2008-09-08 2011-10-12 株式会社日立製作所 記憶制御装置及びraidグループの拡張方法
US20100077205A1 (en) 2008-09-19 2010-03-25 Ekstrom Joseph J System and Method for Cipher E-Mail Protection
US8756369B2 (en) 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US8239734B1 (en) * 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
JP4399021B1 (ja) 2008-10-29 2010-01-13 株式会社東芝 ディスクアレイ制御装置および記憶装置
US7945733B2 (en) 2008-12-12 2011-05-17 Lsi Corporation Hierarchical storage management (HSM) for redundant array of independent disks (RAID)
US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
KR101638764B1 (ko) 2008-12-19 2016-07-22 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 균일한 판독 대기시간을 위한 중복 데이터 저장
US8312204B2 (en) 2009-01-23 2012-11-13 Seagate Technology Llc System and method for wear leveling in a data storage device
JP4869368B2 (ja) 2009-03-12 2012-02-08 株式会社東芝 ストレージ装置及び仮想化装置
US7941584B2 (en) 2009-03-26 2011-05-10 Arm Limited Data processing apparatus and method for performing hazard detection
US8560787B2 (en) 2009-03-30 2013-10-15 International Business Machines Corporation Incremental backup of source to target storage volume
US8205065B2 (en) 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
TWI397009B (zh) 2009-04-30 2013-05-21 Inventec Corp 基本輸入輸出系統的資料處理裝置
US8180955B2 (en) 2009-05-06 2012-05-15 Via Telecom, Inc. Computing systems and methods for managing flash memory device
US8037391B1 (en) 2009-05-22 2011-10-11 Nvidia Corporation Raid-6 computation system and method
CN101576833B (zh) * 2009-06-26 2012-05-23 杭州华三通信技术有限公司 一种独立磁盘冗余阵列raid数据重建方法和装置
EP2302638B1 (fr) 2009-09-21 2013-04-17 STMicroelectronics (Rousset) SAS Procédé d'écriture et de lecture de données dans une mémoire non volatile, au moyen de métadonnées
US8688906B2 (en) * 2009-11-16 2014-04-01 Lenovo (Singapore) Pte. Ltd. Apparatus and method for distributing writes asymmetrically among drives
US8510569B2 (en) 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US9134918B2 (en) 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
US8452932B2 (en) 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US9059851B2 (en) 2010-02-23 2015-06-16 Salesforce.Com, Inc. Method and computer program product for order preserving symbol based encryption
JP4892072B2 (ja) 2010-03-24 2012-03-07 株式会社東芝 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
US20110252289A1 (en) * 2010-04-08 2011-10-13 Seagate Technology Llc Adjusting storage device parameters based on reliability sensing
US8799747B2 (en) * 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US8738970B2 (en) 2010-07-23 2014-05-27 Salesforce.Com, Inc. Generating performance alerts
US8713268B2 (en) 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8463991B2 (en) * 2010-09-28 2013-06-11 Pure Storage Inc. Intra-device data protection in a raid array
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9229808B2 (en) * 2010-10-01 2016-01-05 Pure Storage, Inc. Reconstruct reads in a raid array with dynamic geometries
US20120117029A1 (en) 2010-11-08 2012-05-10 Stephen Gold Backup policies for using different storage tiers
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8595267B2 (en) 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8751463B1 (en) 2011-06-30 2014-06-10 Emc Corporation Capacity forecasting for a deduplicating storage system
US8788788B2 (en) 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US8793467B2 (en) 2011-09-30 2014-07-29 Pure Storage, Inc. Variable length encoding in a storage system
JP5768587B2 (ja) 2011-08-17 2015-08-26 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
US8700875B1 (en) 2011-09-20 2014-04-15 Netapp, Inc. Cluster view for storage devices
JP5735654B2 (ja) 2011-10-06 2015-06-17 株式会社日立製作所 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム
US8825605B2 (en) 2011-10-11 2014-09-02 Netapp, Inc. Deduplication aware scheduling of requests to access data blocks
US8918579B2 (en) 2012-02-06 2014-12-23 Sandisk Technologies Inc. Storage device and method for selective data compression
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US9519647B2 (en) 2012-04-17 2016-12-13 Sandisk Technologies Llc Data expiry in a non-volatile device
US8996881B2 (en) 2012-04-23 2015-03-31 International Business Machines Corporation Preserving redundancy in data deduplication systems by encryption
US8793466B2 (en) 2012-04-27 2014-07-29 Netapp, Inc. Efficient data object storage and retrieval
US9645177B2 (en) 2012-05-04 2017-05-09 Seagate Technology Llc Retention-drift-history-based non-volatile memory read threshold optimization
US8874850B1 (en) 2012-05-10 2014-10-28 Netapp, Inc. Hierarchically tagged cache
US20130318314A1 (en) 2012-05-25 2013-11-28 Red Hat, Inc. Managing copies of data on multiple nodes using a data controller node to avoid transaction deadlock
AU2013277351A1 (en) 2012-06-18 2015-01-22 Actifio, Inc. Enhanced data management virtualization system
US8959305B1 (en) 2012-06-29 2015-02-17 Emc Corporation Space reclamation with virtually provisioned devices
US9489293B2 (en) 2012-08-17 2016-11-08 Netapp, Inc. Techniques for opportunistic data storage
US9154298B2 (en) 2012-08-31 2015-10-06 Cleversafe, Inc. Securely storing data in a dispersed storage network
JP5954081B2 (ja) 2012-09-26 2016-07-20 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9176858B2 (en) 2012-11-19 2015-11-03 Hitachi, Ltd. Storage system configured to selectively utilize data compression based on real pool usage rates
US9348840B2 (en) 2012-12-14 2016-05-24 Intel Corporation Adaptive data striping and replication across multiple storage clouds for high availability and performance
US9589008B2 (en) 2013-01-10 2017-03-07 Pure Storage, Inc. Deduplication of volume regions
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9335932B2 (en) 2013-03-15 2016-05-10 Bracket Computing, Inc. Storage unit selection for virtualized storage units
US9519575B2 (en) 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US9516016B2 (en) 2013-11-11 2016-12-06 Pure Storage, Inc. Storage array password management
JP6233086B2 (ja) 2014-02-20 2017-11-22 富士通株式会社 ストレージ制御装置,ストレージシステム及び制御プログラム
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
US9361469B2 (en) 2014-03-26 2016-06-07 Amazon Technologies, Inc. Electronic communication with secure screen sharing of sensitive information
US9513820B1 (en) 2014-04-07 2016-12-06 Pure Storage, Inc. Dynamically controlling temporary compromise on data redundancy
US9563509B2 (en) 2014-07-15 2017-02-07 Nimble Storage, Inc. Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US10459657B2 (en) 2016-09-16 2019-10-29 Hewlett Packard Enterprise Development Lp Storage system with read cache-on-write buffer
US10402266B1 (en) * 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system

Also Published As

Publication number Publication date
WO2012044488A1 (en) 2012-04-05
US8775868B2 (en) 2014-07-08
EP3082047A1 (en) 2016-10-19
US11435904B1 (en) 2022-09-06
CN103348326B (zh) 2016-03-30
JP2016105320A (ja) 2016-06-09
US20220413958A1 (en) 2022-12-29
US10452289B1 (en) 2019-10-22
JP5894167B2 (ja) 2016-03-23
CN103348326A (zh) 2013-10-09
US11797386B2 (en) 2023-10-24
US20120079318A1 (en) 2012-03-29
EP3082047B1 (en) 2020-07-08
US9594633B2 (en) 2017-03-14
KR20130118876A (ko) 2013-10-30
US20140317447A1 (en) 2014-10-23
US20240152425A1 (en) 2024-05-09
EP2622475A1 (en) 2013-08-07
JP2013539132A (ja) 2013-10-17

Similar Documents

Publication Publication Date Title
JP6307537B2 (ja) Ssd環境のための適応的raid
JP6247334B2 (ja) 動的構成のraidアレイにおける再構成読み込み
US12086030B2 (en) Data protection using distributed intra-device parity and inter-device parity
US20210173741A1 (en) Distributed multi-level protection in a hyper-converged infrastructure
JP5848353B2 (ja) Raidアレイにおけるデバイス内データ保護
US20120084504A1 (en) Dynamic raid geometries in an ssd environment
US20120084507A1 (en) Multi-level protection with intra-device protection in a raid array based storage system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180312

R150 Certificate of patent or registration of utility model

Ref document number: 6307537

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250