JP5116151B2 - 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム - Google Patents

仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム Download PDF

Info

Publication number
JP5116151B2
JP5116151B2 JP2007540027A JP2007540027A JP5116151B2 JP 5116151 B2 JP5116151 B2 JP 5116151B2 JP 2007540027 A JP2007540027 A JP 2007540027A JP 2007540027 A JP2007540027 A JP 2007540027A JP 5116151 B2 JP5116151 B2 JP 5116151B2
Authority
JP
Japan
Prior art keywords
storage
data
storage devices
mirroring
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.)
Expired - Fee Related
Application number
JP2007540027A
Other languages
English (en)
Other versions
JP2008519350A (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 JP2008519350A publication Critical patent/JP2008519350A/ja
Application granted granted Critical
Publication of JP5116151B2 publication Critical patent/JP5116151B2/ja
Expired - Fee Related 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/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
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • 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/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • 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
    • G06F11/2056Error 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 by mirroring
    • G06F11/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/325Display of status information by lamps or LED's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/11Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/327Table of contents
    • G11B27/329Table of contents on a disc [VTOC]
    • 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
    • G06F11/2056Error 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 by mirroring
    • G06F11/2087Error 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 by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1004Adaptive RAID, i.e. RAID system adapts to changing circumstances, e.g. RAID1 becomes RAID5 as disks fill up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1023Different size disks, i.e. non uniform size of disks in RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/40Combinations of multiple record carriers
    • G11B2220/41Flat as opposed to hierarchical combination, e.g. library of tapes or discs, CD changer, or groups of record carriers that together store one title
    • G11B2220/415Redundant array of inexpensive disks [RAID] systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/60Solid state media
    • G11B2220/65Solid state media wherein solid state memory is used for storing indexing information or metadata

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、デジタルデータ格納システムおよび方法に関連し、より具体的には、故障許容格納を提供するシステムおよび方法に関連する。
種々のRAID(Redundant Array of Independent Disks)のいずれか一つに従って、一定のパターンの冗長ディスク格納を提供することは、従来技術において公知である。一般的に、RAIDパターンを使用したディスクアレイは、経験豊かな情報技術者による管理を必要とする複雑な構造である。さらに、RAIDパターンを使用した多くのアレイ設計において、アレイにおけるディスクドライブの容量が均一でない場合には、設計は、アレイにおける最小のドライブの容量を超えるドライブの上で、いかなる容量を使用することもでき得ない。
標準的なRAIDシステムの一つの問題は、ディスクアレイのまれにしか使用されないエリアの上で、ディスク表面の破損が生じる可能性があることである。別のドライブが故障する場合には、破損が生じたことを決定することは必ずしも可能ではない。そのような場合には、破損されたデータは、RAIDアレイが故障したドライブを再構築するときに、伝播および保存され得る。
多くの格納システムにおいて、スペアの格納デバイスが使用可能状態で維持されるので、別の格納デバイスが故障した場合にそれが使用され得る。そのようなスペアの格納デバイスは、しばしば「ホットスペア」と呼ばれる。ホットスペアは、格納システムの通常の作動中は、データを格納するようには使用されない。活動状態の格納デバイスが故障するときには、故障した格納デバイスはホットスペアと論理的に置き換えられ、データはホットスペアの上に移動されるかまたはさもなければ再作成される。故障した格納デバイスが修復されるかまたは置き換えられる場合には、データは一般的に、(再)作動させられた格納デバイスの上に移動させられるかまたはさもなければ再作成されるので、別の故障の場合にそれが容易に使用される。ホットスペアディスクの維持は一般的に複雑であるので、熟練した管理者によって一般的に処理される。ホットスペアディスクは、追加の費用をも意味する。
(本発明の概要)
本発明の第1の実施形態において、データ損失なしに複数の格納デバイスのうちの一つの損失からの回復を可能にするために、該複数の格納デバイスにデータを格納する方法が提供される。該方法は、故障許容を提供するために、少なくとも一つの冗長スキームを使用して、該複数の格納デバイスの上にデータを格納することと、第1の格納デバイスの損失の際に、データの故障許容を復元するために、一つ以上の残りの該格納デバイスを自動的に再構成することとを含む。
本発明の第2の実施形態において、複数の格納デバイスと、該複数の格納デバイスに動作可能なように結合された格納マネジャーとを備える格納システムが提供される。該格納マネジャーは、故障許容を提供するために、少なくとも一つの冗長スキームを使用して、該複数の格納デバイスの上にデータを格納し、データの故障許容を復元するために、一つ以上の残りの該格納デバイスを自動的に再構成する。
関連する実施形態において、ミラリング、パリティを用いたストライピング、RAID6、二重パリティ、対角線パリティ、低密度パリティチェックコード、およびターボコードのうちの少なくとも一つを使用して、データが上記複数の格納デバイスに格納され得る。該格納デバイスは、4つ以上の格納デバイスにわたる第1のストライピングパターンを3つ以上の残りの格納デバイスにわたる第2のストライピングパターンに変換すること;3つの格納デバイスにわたるストライピングパターンを2つの残りの格納デバイスにわたるミラリングパターンに変換すること;2つの格納デバイスにわたるミラリングパターンを単一の格納デバイスの上のミラリングパターンに変換すること;格納デバイスの第1のペアにわたるミラリングパターンを格納デバイスの第2のペアにわたるミラリングパターンに変換すること;または一つの格納デバイスの上のミラリングパターンを別の格納デバイスの上のミラリングパターンに変換することによって、再構成され得る。
自動的な再構成を可能にするために、十分な量の利用可能な格納スペースが、上記複数の格納デバイスにわたって維持され得る。このことは、たとえば、多数のあり得る故障状態の各々についての再構成シナリオを決定することと、上記自動的な再構成を可能にするために、各格納デバイスの上で必要とされる格納スペースの総量を決定することとによって、なされ得る。上記必要とされる格納スペースの総量を決定することは、データの冗長格納のために各ドライブの上で必要とされるスペースの量を決定することと、必要とされるスペアワーキングスペース領域の量を決定することとを含み得る。自動的な再構成を可能にするためには不十分な量の利用可能な格納スペースがある場合には、追加の格納が必要とされることを示すために信号が生成され得る(たとえば、インジケータの状態を変化させることによって)。複数の格納スロットを有する格納システムにおいて、どのスロットに追加の格納が配置されるべきかについて決定がなされ得、その場合には信号がスロットを示し得る。
本発明の前述の特徴は、添付の図面を参照して、以下の詳細な説明を参照することによって容易に理解される。
(具体的な実施形態の詳細な説明)
定義。本明細書および添付の特許請求の範囲において使用されるように、文脈上特別な断りがない限り、以下の用語は指示された意味を有する。
オブジェクトの「チャンク」は、オブジェクトの抽象スライスであり、使用される物理的格納とは無関係に作られ、一般的にオブジェクトの隣接バイトの固定数である。
データ格納のための故障許容「パターン」は、データが一つ以上の格納デバイスにわたって冗長に分散される事項(particular)であり、なかでも、ミラリング(たとえばRAID1に類似した方法で)、ストライピング(たとえばRAID5に類似した方法で)、RAID6、二重パリティ、対角線パリティ、低密度パリティチェック(Low Density Parity Check)コード、ターボコード、または他の冗長スキーム、または冗長スキームの組み合わせであり得る。
所定のチャンクのハッシュ数は、該所定のチャンクが任意の他のチャンクのハッシュ数とは一般的に異なるハッシュ数を生成するときに、該他のチャンクが該所定のチャンクと同一のデータコンテンツを有するときを除いて、「一意」である。すなわち、2つのチャンクは、それらのコンテンツが同一でないときはいつでも、異なるハッシュ数を一般的に有する。以下に詳細に説明されるように、「一意」という用語は、この文脈において、同一でないチャンクに対して共通ハッシュ数をたまに生成するハッシュ関数から生成されるハッシュ数をカバーするように使用される。なぜなら、ハッシュ関数は、異なるチャンクについて異なる数を生成することにおいて、一般的に完全ではないからである。
「領域」は、格納媒体(たとえばハードドライブ)の上の隣接する物理ブロックのセットである
「ゾーン」は、2つ以上の領域からなる。ゾーンを構成する領域は、一般的に隣接することが要求されない。以下に説明される例示的な実施形態において、ゾーンは、1GBのデータまたは制御情報と等価なものを格納する。
「クラスタ」は、ゾーンの中の単位サイズであり、圧縮(以下に説明される)の単位を表す。以下に説明される例示的な実施形態において、クラスタは、4KB(すなわち8つの512バイトセクタ)であり、本質的にチャンクと同じである。
「冗長セット」は、データのセットに冗長性を提供するセクタ/クラスタのセットである。
「領域をバックアップすること」は、一つの領域のコンテンツを別の領域にコピーすることを含む。
「第1のペア」の格納デバイスおよび「第2のペア」の格納デバイスは、共通格納デバイスを含み得る。
「第1の複数の」格納デバイスおよび「第2の複数の」格納デバイスは、一つ以上の共通格納デバイスを含み得る。
「第1の配置」の格納デバイスおよび「第2の配置」の格納デバイスまたは「異なる配置」の格納デバイスは、一つ以上の共通格納デバイスを含み得る。
図1は、本発明の実施形態の図示であり、オブジェクト、この例においてはファイルが、格納のために一連のチャンクに分解される。最初に、ファイル11が格納ソフトウェアに渡され、そこでオブジェクト12として指定され、一意のオブジェクト識別番号、この場合は#007が割当てられる。新しいエントリ131は、オブジェクトテーブル13の中に作られ、この新しいオブジェクトの割当てを表す。オブジェクトは、今度はデータ121、122および123の「チャンク」に分解され、それらはオブジェクトの固定長セグメントである。各チャンクは、ハッシングアルゴリズムを通過させられ、ハッシングアルゴリズムはチャンクについて一意のハッシュ数を返す。このアルゴリズムは、リトライされたチャンクが格納されたチャンクと同一であることを保証するために、検索されたチャンクと、もともとのハッシュと比較された結果とに、後で適用され得る。各チャンクのハッシュ数は、後で完全なオブジェクトがチャンクの収集によって検索され得るように、オブジェクト132のエントリ行においてオブジェクトテーブル13の中に格納される。
図1においてさらに、チャンクハッシュは、今度はチャンクテーブル14の中の既存のエントリと比較される。既存のエントリ141と一致する任意のハッシュは、すでに格納されているので、行動はとられない(すなわち、データは再び格納されず、オブジェクトの自動的圧縮につながる)。新しいハッシュ(チャンクテーブル14の中に対応するエントリがないハッシュ)は、チャンクテーブル141の中に入力される。チャンクにおけるデータは、次に、故障許容格納のために最も効率的な方法で、利用可能な格納デバイス151、152および153の上に格納される。このアプローチは、チャンクデータが、たとえば、一つまたは2つのデバイスからなる格納システムの上にミラリングされた方法で、または3つ以上の格納デバイスを用いてシステムの上でパリティストライピングされた方法で格納されることにつながり得る。このデータは、物理的位置1511、1521および1531において格納デバイスの上に格納され、チャンクのすべての物理的部分が後で場所を突き止められ検索され得るように、これらの位置および位置の番号は、チャンクテーブルの列143および142に格納される。
図2は、より多くの格納デバイス(storage)の追加の結果として、チャンクのための故障許容格納のパターンがどのように動的に変化され得るかという同じ実施形態を示す。特に、図2は、追加の格納デバイスがシステム全体にひとたび追加されると、格納デバイスの上に物理的に格納されたチャンクが、新しいパターンにおいてどのようにレイアウトされ得るかを示す。図2aにおいて、格納システムは2つの格納デバイス221および222を備え、チャンクデータは、位置2211および2221において2つの格納デバイスの上に物理的にミラリングされ、故障許容を提供する。図2bにおいて、第3の格納デバイス223が追加され、チャンクをパリティストライピングした方法で格納することが可能になり、これは、ミラリングされたパターンよりも格納効率が良いパターンである。チャンクは、3つの物理的位置2311、2321および2331において、この新しいパターンにレイアウトされ、利用可能な格納デバイスにとる割合がはるかに低い。チャンクテーブル21はアップデートされて、新しいレイアウトが3つの位置212にすることと、新しいチャンクの物理的位置2311、2321および2331が213に記録されていることをも示す。
図3は、本発明の実施形態による、完成された(mature)格納システムを示し、ある期間にわたって機能していた。これは、可変格納容量を有する格納デバイスの上で、チャンクが、時間を経てどのように物理的に格納され得るかを図示する。この図は、40GB格納デバイス31と、80GB格納デバイス32と、120GB格納デバイス33とからなる格納システムを示す。最初に、チャンクは、40GB格納デバイス31が満杯になるまで、故障許容ストライプパターン34で格納される。次に、格納スペースの欠如のために、新しいデータは、80GB格納デバイス32および120GB格納デバイス33の上の利用可能なスペースの上に、ミラリングされたパターン36で格納される。80GB格納デバイス32がひとたび満杯になると、次に、新しいデータは単一のディスク故障許容パターン37でレイアウトされる。たとえ格納デバイスがデータ格納のための単一のプールを備えていても、チャンクにおいて格納されたようなデータそのものは、種々の別個のパターンで格納されている。
図4は、本発明の別の実施形態を図示し、非効率的な格納デバイスの使用と、故障許容の低いレベルとを警告するために、インジケータ状態が使用される。図4aにおいて、すべての3つの格納デバイス41、42および45は使用されていないスペースを有しており、効率的で故障許容の方法でデータが格納されていることを示すために、インジケータライト44は緑色である。図4bにおいて、40GB格納デバイス41は満杯になったので、新しいデータは、ミラリングされた冗長パターン46で、使用されていない残りのスペースを用いて2つの格納デバイス42および43の上のみに格納され得る。データは完全に冗長ではあるが、効率的に格納されていないことを示すために、インジケータライト44は琥珀色に変わった。図4cにおいて、120GB格納デバイス43のみが使用されていない残りのスペースを有しているので、すべての新しいデータは、この一つのデバイス43の上でミラリングされたパターンのみで格納され得る。故障許容はよりロバスト(robust)でなくなり、システムはスペースが非常に足りなくなっているので、より多くの格納デバイスの追加が必要であることを示すために、インジケータライト44は赤色に変わる。
一つの代替的な実施形態において、アレイにおけるそれぞれのドライブ/スロットに、たとえば3色(たとえば緑色、黄色、赤色)の形で、インジケータが提供される。一つの特定の実施形態において、ライトは、光る効果でディスクキャリアの前面全体を照らすように使用される。ライトは、システムの全体的な状態のみならず、(もしあれば)どのドライブ/スロットが注意を必要としているかを示すように制御される。それぞれの3色ライトは、少なくとも4つの状態に置かれ得、具体的には、オフ、緑色、黄色、赤色である。スロットが空であり、システムが十分な格納デバイスと冗長性をもって作動しているために、スロットにドライブがインストールされる必要がない場合には、特定のスロットのためのライトは、オフ状態に置かれ得る。特定のスロットのためのライトは、対応するドライブが十分であり、置き換えられる必要がない場合には、緑色状態に置かれ得る。特定のスロットのためのライトは、対応するドライブをより大きなドライブに置き換えることが推奨されるようにシステム操作が低下する場合には、黄色の状態に置かれ得る。特定のスロットのためのライトは、対応するドライブをインストールまたは置き換えなければならない場合には、赤色の状態に置かれ得る。必要または要求に応じて、たとえば、オンとオフとの状態の間でライトをフラッシュさせることによって、または2つの異なる色の間でライトをフラッシュさせる(たとえば、ドライブが置き換えられた後に、データの再レイアウトが進行中であるときに、赤色と緑色との間でフラッシュさせる)ことによって、追加の状態が示され得る。例示的な実施形態のさらなる詳細が、以下に説明される。
もちろん、システム状態とドライブ/スロット状態との両方を示すために、他の指示技術が使用され得る。たとえば、システム状態と、必要な場合には、注意を必要とするスロット番号とを示すために、LCDディスプレイが使用され得る。さらに、他の種類のインジケータ(たとえば、スロットインジケータまたは各スロット用のライトとともに、システムのための単一の状態インジケータ(たとえば緑色/黄色/赤色))が使用され得る。
図5は、図1〜3に関連して上述されたような、本発明の実施形態に従ったデータの格納、検索および再レイアウトにおいて使用される機能モジュールのブロック図である。通信のための入口点および出口点は、オブジェクトの格納または検索のためにオブジェクトをシステムに渡すオブジェクトインタフェース511と、格納システムを一つの大きな格納デバイスであるように見せるブロックインタフェース512と、格納システムをWindows(登録商標)ファイルシステムであるように見せるCIFSインタフェース513とである。これらのインタフェースがデータの格納を要求するとき、データはチャンクパーサ(Chunk Parser)52に渡され、チャンクパーサは、データのチャンクへの分解を実行し、オブジェクトテーブル512への最初のエントリを生成する(図1に関連して上述されたように)。これらのチャンクは、次にハッシュコード生成器53に渡され、ハッシュコード生成器は各チャンクについて関連するハッシュコードを生成し、それらをオブジェクトテーブルに入力するので、各オブジェクトに関連するチャンクは512で列挙される(図1に関連して上述されたように)。チャンクハッシュ数は、チャンクテーブル531におけるエントリと比較される。一致が見出された場合には、新しいチャンクは、格納システムにすでに格納されたチャンクと同一であるので、捨てられる。チャンクが新しい場合には、そのための新しいエントリがチャンクテーブル531の中に作成され、ハッシュされたチャンクは物理的格納マネジャー54に渡される。物理的格納マネジャーは、利用可能な格納デバイス571、572および573の上で可能な最も効率的なパターンでチャンクを格納して、チャンクのコンテンツが後で512で検索され得るように(図1に関連して上述されたように)、チャンクの物理的格納がどこで発生したかを示すために、チャンクテーブル531の中に対応するエントリを作成する。
オブジェクトインタフェース511、ブロックインタフェース512、またはCIFSインタフェース513による、図5におけるデータの検索は、検索マネジャー56に対するリクエストによって実行され、検索マネジャーは、どのチャンクがオブジェクトを含むかを決定するためにオブジェクトテーブル521を調べ、次にこれらのチャンクを物理的格納マネジャー54から要求する。物理的格納マネジャー54は、要求されたチャンクがどこに格納されているかを決定するためにチャンクテーブル531を調べ、次にそれらを検索し、完了したデータ(オブジェクト)を検索マネジャー56に返し、検索マネジャーは、要求しているインタフェースにデータを返す。図5には、故障許容マネジャー(FTL)55も含まれ、チャンクが可能な最も効率的な方法で格納されているかどうかを決定するために、絶えずチャンクテーブルをスキャンする。(格納デバイス571、572および573が追加されたり取り外されたりすると、これらは変化し得る。)チャンクが可能な最も効率的な方法で格納されていない場合には、FTLは、物理的格納マネジャー54に、チャンクについて新しいレイアウトパターンを作成し、チャンクテーブル531をアップデートするように、要求する。このようにして、すべてのデータは、アレイを含む格納デバイスの数について可能な最も効率的な方法で格納されたままでいる(図2および3に関連して上述されたように)。
以下は、本発明の例示的な実施形態のさらなる詳細を提供する。
(データレイアウトスキーム−ゾーン)
なかでも、ゾーンは、ディスクの上に格納されている実際のデータから、冗長性とディスク再レイアウトとを隠す効果を有する。ゾーンは、ゾーンのユーザに影響することなく、追加のレイアウト方法が追加および変更されることを可能にする。
格納アレイは、ゾーンと呼ばれる仮想セクションにおけるディスクの上で、データをレイアウトする。ゾーンは、所定および固定の量(たとえば1Gバイト)のデータを格納する。ゾーンは、単一のディスクの上に存在し得るか、あるいは一つ以上のドライブにわたってまたがり得る。ゾーンの物理的レイアウトは、そのゾーンについて指定された形で冗長性を提供する。
図6は、2つ以上のドライブを含むアレイにおいてミラリングが使用される例を示す。図7は、データを格納するために異なるレイアウトスキームを使用するいくつかの例示的なゾーンを示す。図は、ゾーンが1GBのデータを格納することを想定する。以下の点に留意されたい。
i)複数のドライブにまたがるゾーンは、セットにわたるドライブの中に同じオフセットを必ずしも使用しない。
ii)単一ドライブミラリングは、1Gのデータを格納するために2Gの格納デバイスを必要とする。
iii)二重ドライブミラリングは、1Gのデータを格納するために2Gの格納デバイスを必要とする。
iv)3つのドライブストライピングは、1Gのデータを格納するために1.5Gの格納デバイスを必要とする。
v)4つのドライブストライピングは、1Gのデータを格納するために1.33Gの格納デバイスを必要とする。
vi)ゾーンA、ゾーンBなどは、任意のゾーン名である。実際のインプリメンテーションにおいて、それぞれのゾーンは一意の数によって識別され得る。
vii)図によって暗示されるものの、ゾーンは必ずしもディスクの上で隣接しない(後で領域を参照)。
viii)ミラリングが2つのドライブに制約される技術的理由はない。たとえば、3ドライブシステムにおいて、データの一つのコピーが一つのドライブの上に格納され得、ミラリングされたデータの半分が他の2つのドライブのそれぞれの上に格納され得る。同様に、データは3つのドライブにわたってミラリングされ得、データの半分が2つのドライブのそれぞれの上にミラリングされ、ミラリングの半分が他の2つのドライブの上にミラリングされる。
(データレイアウトスキーム−領域)
各ディスクは、均等なサイズの領域に分割される。領域のサイズはゾーンよりもはるかに小さく、ゾーンは一つ以上のディスクからの一つ以上の領域から構築される。ディスクスペースの効率的な使用のために、領域のサイズは一般的に、異なるゾーンサイズと、アレイによってサポートされる異なる数のディスクとの共通因子である。例示的な実施形態において、領域はゾーンの1/12のデータサイズである。以下の表は、本発明の例示的な実施形態に従って、種々のレイアウトについての、領域/ゾーンの数と、領域/ディスクの数とを列挙する。
Figure 0005116151
Figure 0005116151
個々の領域は、使用済み、使用されていない、または不良としてマークされ得る。ゾーンが作成されるときには、適切なディスクから使用されていない領域のセットが、テーブルにおいて選択されログをとられる。これらの領域は、任意の順序であり得、ディスクの上で隣接する必要はない。データがゾーンに書き込まれるかまたはゾーンから読み取られるときには、アクセスは適切な領域にリダイレクトされる。なかでも、このことは、データの再レイアウトが柔軟かつ効率的な方法で生ずることを可能にする。時間を経て、異なるサイズのゾーンは、おそらく断片化を発生させ、小さすぎて完全なゾーンを保持できない多くのディスクエリアを残す。適切な領域サイズを使用することによって、断片化によって残されたすべてのギャップは、サイズにおいて少なくとも一つの領域になり、ディスク全体を断片化解消(de−fragment)する必要なしに、これらの小さなギャップの容易な再使用を可能にする。
(データレイアウトスキーム−再レイアウト)
インプリメンテーションを容易にするために、固定シーケンスの拡張および縮小が強化され得る。たとえば、2つのドライブが急に追加される場合には、第2のドライブを組み込むために第2の拡張が実行される前に、あたかも一つのドライブが追加されたかのように、ゾーンの拡張が中間の拡張を経由し得る。代替的には、複数のドライブを含む拡張および縮小は、中間のステップなしに、アトミックに(atomically)処理され得る。
任意の再レイアウトが生じる前に、必要とされるスペースが利用可能でなければならない。このことは、不必要な再レイアウトが生じないことを確実にするために、再レイアウトを始める前に計算されるべきである。
(レイアウトスキーム−ドライブ拡張)
以下は、本発明の例示的な実施形態に従って、単一ドライブミラリングから二重ドライブミラリングに拡張する一般的なプロセスを説明する。
i)単一ドライブミラリングが、データ「A」とミラリング「B」とを有すると想定する。
ii)ゾーンを「C」へと拡張するために、ドライブの上に12の領域を割当てる。
iii)ミラリング「B」を領域セット「C」にコピーする。
iv)すでにコピーされたデータへのいかなる書き込みも、「C」における適切な場所にミラリングされなければならない。
v)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「B」へのポインタを「C」へのポインタに置き換える。
vi)「B」を構成する領域を、使用されていないとしてマークする。
以下は、本発明の例示的な実施形態に従って二重ドライブミラリングからパリティを用いた三重ドライブストライピングへと拡張する、一般的なプロセスを説明する。
i)一つのドライブがデータ「A」を有し、第2のドライブがミラリング「B」を有すると想定する。
ii)パリティ情報「C」のために、第3のドライブの上に6つの領域を割当てる。
iii)「A」の第1の6領域と、「B」の第2の6領域とを使用して、パリティ情報を計算する。
iv)「C」にパリティ情報を置く。
v)すでに処理されたデータになされたいかなる書き込みも、「C」における適切な場所にパリティされなければならない。
vi)コピーが完了したら、新しいレイアウトタイプのポイントテーブルを用いて、ゾーンテーブルを、「A」の第1の半分と、「B」の第2の半分と、「C」とにアップデートする。
vii)「A」の第2の半分と「B」の第1の半分とを、使用されていないとしてマークする。
以下は、本発明の例示的な実施形態に従って三重ドライブストライピングからパリティを用いた四重ドライブストライピングに拡張する、一般的なプロセスを説明する。
i)一つのドライブがデータ「A」を有し、第2のドライブがデータ「B」を有し、第3のドライブがパリティ「P」を有すると想定する。
ii)ストライピングデータ「C」のために、第4のドライブの上に4つの領域を割当てる。
iii)「A」の最後の2領域を、「C」の最初の2領域にコピーする。
iv)「B」の最初の2領域を、「C」の最後の2領域にコピーする。
v)パリティドライブ「D」の上に4つの領域を割当てる。
vi)Aの最初の4領域と、Cと、Bの最後の4領域とを使用して、パリティ情報を計算する。
vii)パリティ情報を「D」に置く。
viii)すでに処理されたデータへのいかなる書き込みも、「D」における適切な場所にパリティされなければならない。
ix)新しいレイアウトタイプとポイントテーブルとを用いて、ゾーンテーブルを、「A」の第1の4領域と、「C」と、「B」の第2の4領域と、「D」とにアップデートする。
x)「A」の最後の2領域と、「B」の最初の2領域を、使用されていないとしてマークする。
(データレイアウトスキーム−ドライブ縮小)
ドライブ縮小は、ディスクが取り外されるかまたは故障するときに発生する。そのような場合には、アレイは、可能であればすべてのゾーンを冗長状態に戻すために、データを縮小する。ドライブ縮小は、拡張よりもやや複雑である。なぜなら、より多くの選択がなされるべきだからである。しかし、レイアウト方法の間の移行は、拡張と同様の方法で生じるが、逆の順序である。再生されるべきデータの量を最小限に保つことは、冗長性が可能な限り迅速に達成されることを可能にする。ドライブ縮小は、すべてのゾーンが再レイアウトされるまで、スペースが利用可能である間に、一般的に一度に1ゾーン先行する。一般的に言って、取り外されたかまたは故障したディスクの上に存在するデータのみが再構築される。
(どのように縮小するかの選択)
以下の表は、本発明の例示的な実施形態に従って、再レイアウトされる必要のある各ゾーンについての決定ツリーを説明する:
Figure 0005116151
Figure 0005116151
以下は、本発明の例示的な実施形態に従って、二重ドライブミラリングから単一ドライブミラリングに縮小する一般的なプロセスを説明する。
i)単一ドライブミラリングが、データ「A」と欠いているミラリング「B」とを有するか、またはその逆であると仮定する。
ii)「A」を「C」として含むドライブの上に12の領域を割当てる。
iii)データ「A」を領域セット「C」にコピーする。
iv)すでにコピーされたデータへのいかなる書き込みも、「C」における適切な場所にミラリングされなければならない。
v)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「B」へのポインタを「C」へのポインタに置き換える。
以下は、本発明の例示的な実施形態に従って、三重ドライブストライピングから二重ドライブミラリングに縮小する一般的なプロセスを説明する(パリティを欠いている)。
i)ストライピングは、異なるドライブの上のデータブロック「A」、「B」および「C」からなると想定する。パリティ「C」が欠けている。
ii)「A」をゾーンの第1の半分を含むものとして定義し、「B」をゾーンの第2の半分を含むものとして定義する。
iii)「A」ドライブの上に6つの領域「D」を割当て、「B」ドライブの上に6つの領域「E」を割当てる。
iv)「A」を「E」にコピーする。
v)「B」を「D」にコピーする。すでにコピーされたデータへのいかなる書き込みも、「D」および「E」における適切な場所にミラリングされなければならない。
vii)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「A」/「D」および「E」/「B」へのポインタを設定する。
以下は、本発明の例示的な実施形態に従って、三重ドライブストライピングから二重ドライブミラリングに縮小する一般的なプロセスを説明する(データを欠いている)。
i)ストライピングは、異なるドライブの上のデータブロック「A」、「B」および「C」からなると想定する。データ「C」が欠けている。
ii)「A」をゾーンの第1の半分を含むものとして定義し、「C」をゾーンの第2の半分を含むものとして定義する。
iii)「A」ドライブの上に6つの領域「D」を割当て、「B」ドライブの上に12の領域「E」を割当てる。
iv)「A」を「E」の第1の半分にコピーする。
v)「A」および「B」から、欠けているデータを再構築する。データを「D」に書き込む。
vi)「D」を「E」の第2の半分にコピーする。
vii)すでにコピーされたデータへのいかなる書き込みも、「D」および「E」における適切な場所にミラリングされなければならない。
viii)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「A」/「D」および「E」へのポインタを設定する。
ix)「B」領域を、使用されていないとしてマークする。
以下は、本発明の例示的な実施形態に従って、四重ドライブストライピングから三重ドライブストライピングに縮小する一般的なプロセスを説明する(パリティを欠いている)。
i)ストライピングは、異なるドライブの上のデータブロック「A」、「B」、「C」および「D」からなると仮定する。パリティ「D」が欠けている。
ii)「A」をゾーンの第1の3分の1を含むものとして定義し、「B」を第2の3分の1を含むものとして定義し、「C」を第3の3分の1を含むものとして定義する。
iii)「A」ドライブの上に2領域「G」を割当て、「C」ドライブの上に2領域「E」を割当て、「B」ドライブの上に6領域「F」を割当てる。
iv)「B」の第1の半分を「G」にコピーする。
v)「B」の第2の半分を「E」にコピーする。
vi)「A」/「G」および「E」/「C」からパリティを構築し、「F」に書き込む。
vii)すでにコピーされたデータへのいかなる書き込みも、「G」、「E」および「F」における適切な場所にミラリングされなければならない。
viii)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「A」/「G」、「E」/「C」、および「F」へのポインタを設定する。
ix)「B」領域を、使用されていないとしてマークする。
以下は、本発明の例示的な実施形態に従って、四重のドライブストライピングから三重のドライブストライピングに縮小する一般的なプロセスを説明する(最初の1/3を欠いている)。
i)ストライピングは、異なるドライブの上のデータブロック「A」、「B」、「C」および「D」からなると想定する。データ「A」が欠けている。
ii)「A」をゾーンの第1の3分の1を含むものとして定義し、「B」を第2の3分の1を含むものとして定義し、「C」を第3の3分の1を含むものとして定義し、「D」をパリティを含むものとして定義する。
iii)「B」ドライブの上に4領域「E」を割当て、「C」ドライブの上に2領域「F」を割当て、「D」ドライブの上に6領域「G」を割当てる。
iv)「B」の第2の半分を「F」にコピーする。
v)「B」、「C」および「D」から、欠けているデータを構築し、「E」に書き込む。
vi)「E」/「Bの第1の半分」と、「F」/「C」とから新しいパリティを構築し、「G」に書き込む。
vii)すでにコピーされたデータへのいかなる書き込みも、「B」、「E」、「F」および「G」における適切な場所にミラリングされなければならない。
viii)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「E」/「Bの第1の半分」、「F」/「C」、および「G」へのポインタを設定する。
ix)「B」の第2の半分および「D」の領域を、使用されていないとしてマークする。
以下は、本発明の例示的な実施形態に従って、四重のドライブストライピングから三重のドライブストライピングに縮小する一般的なプロセスを説明する(第2の1/3を欠いている)。
i)ストライピングは、異なるドライブの上のデータブロック「A」、「B」、「C」および「D」からなると想定する。データ「B」が欠けている。
ii)「A」をゾーンの第1の3分の1を含むものとして定義し、「B」を第2の3分の1を含むものとして定義し、「C」を第3の3分の1を含むものとして定義し、「D」をパリティを含むものとして定義する。
iii)「A」ドライブの上に2領域「E」を割当て、「C」ドライブの上に2領域「F」を割当て、「D」ドライブの上に6領域「G」を割当てる。
iv)「A」の第1の半分、「C」の第1の半分、および「D」の第1の半分から、欠けているデータを構築し、「E」に書き込む。
v)「A」の第2の半分、「C」の第2の半分、および「D」の第2の半分から、欠けているデータを構築し、「F」に書き込む。
vi)「A」/「E」および「F」/「C」から新しいパリティを構築し、「G」に書き込む。
vii)すでにコピーされたデータへのいかなる書き込みも、「E」、「F」および「G」における適切な場所にミラリングされなければならない。
viii)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「E」、「F」および「G」へのポインタを設定する。
ix)「D」領域を、使用されていないとしてマークする。
以下は、本発明の例示的な実施形態に従って、四重のドライブストライピングから三重のドライブストライピングへの縮小の一般的なプロセスを説明する(第3の1/3を欠いている)。
i)ストライピングは、異なるドライブの上のデータブロック「A」、「B」、「C」および「D」からなると想定する。データ「C」が欠けている。
ii)「A」をゾーンの第1の3分の1を含むものとして定義し、「B」を第2の3分の1を含むものとして定義し、「C」を第3の3分の1を含むものとして定義し、「D」をパリティを含むものとして定義する。
iii)「A」ドライブの上に2領域「E」を割当て、「B」ドライブの上に4領域「F」を割当て、「D」ドライブの上に6領域「G」を割当てる。
iv)「B」の第1の半分を「E」にコピーする。
v)「A」、「B」および「D」から、欠けているデータを構築し、「F」に書き込む。
vi)「A」/「E」と、「B」/「F」の第2の半分とから新しいパリティを構築し、「G」に書き込む。
vii)すでにコピーされたデータへのいかなる書き込みも、「E」、「F」および「G」における適切な場所にミラリングされなければならない。
viii)コピーが完了したら、新しいレイアウトタイプを用いてゾーンテーブルをアップデートし、「A」/「E」、「B」/「F」の第2の半分、および「G」へのポインタを設定する。
ix)「B」の第1の半分および「D」を、使用されていないとしてマークする。
たとえば、図3を再び参照して、ドライブ0またはドライブ1のいずれかが失われた場合には、ドライブ2の上に十分な利用可能なスペースがあるという条件で、二重ドライブミラリング(ゾーンB)はドライブ2の上で再構築され得る。同様に、ドライブ0〜2のいずれかが失われた場合には、ドライブ3の上に十分な利用可能なスペースがあるという条件で、ドライブストライピング(ゾーンC)は、ドライブ3を利用して再構築され得る。
(データレイアウトスキーム−ゾーン再構築)
ゾーン再構築は、ドライブが取り外されて、理想的なゾーン再レイアウトのために残りのドライブの上に十分なスペースがあるとき、あるいはドライブがより大きなサイズの新しいドライブと置き換えられたときに、生じる。
以下は、本発明の例示的な実施形態に従って、二重ドライブミラリングの再構築の一般的なプロセスを説明する。
i)単一ドライブミラリングが、データ「A」と欠けているミラリング「B」とを有すると想定する。
ii)「A」を含むドライブ以外のドライブの上に12の領域「C」を割当てる。
iii)データ「A」を「C」にコピーする。
iv)すでにコピーされたデータへのいかなる書き込みも、「C」における適切な場所にミラリングされなければならない。
v)コピーが完了したら、ゾーンテーブルをアップデートし、「B」へのポインタを「C」へのポインタにアップデートする。
以下は、本発明の例示的な実施形態に従って、三重ドライブストライピングの再構築の一般的なプロセスを説明する。
i)一つのドライブがデータ「A」を有し、第2のドライブがデータ「B」を有し、第3のドライブがパリティ「P」を有すると想定する。「B」が欠けている。どの断片が欠けているかは問題ではなく、必要とされる行動はすべての場合において同じであることに留意されたい。
ii)「A」および「P」を含むドライブ以外のドライブの上に、6つの領域「D」を割当てる。
iii)「A」および「P」から、欠けているデータを構築する。データを「D」に書き込む。
iv)すでに処理されたデータへのいかなる書き込みも、「D」における適切な場所にパリティされなければならない。
v)「B」へのポインタを「D」へのポインタに置き換えることによって、ゾーンテーブルをアップデートする。
この例示的な実施形態において、取り外されたドライブが別のドライブと置き換えられる場合に、4ドライブ再構築のみが生じる。再構築は、新しいドライブの上に6つの領域を割当てることと、他の3つの領域セットから、欠けているデータを再構築することとからなる。
(データレイアウトスキーム−一時的に欠けるドライブの問題)
ドライブが取り外されて、再レイアウトのための余地がないときには、古いドライブが再び取り付けられるか、またはドライブが新しいドライブと置き換えられるまで、アレイは劣化したモードで作動し続ける。新しいドライブが取り付けられる場合には、ドライブセットが再構築されるべきである。この場合には、データが再レイアウトされる。古いディスクがアレイの中に戻して置かれる場合には、それはもはや現在のディスクセットの一部ではなく、新しいディスクとしてみなされる。しかし、新しいディスクがアレイに置かれるのではなく、古いディスクが戻される場合には、古いディスクは、たとえ古いメンバであろうとも、やはりディスクセットのメンバであるとして認識される。この場合には、すでに再レイアウトされた任意のゾーンが新しい構成を保ち、古いディスクの上の領域は解放される。再レイアウトされていない任意のゾーンは、やはり古いディスクの適切な領域をポインティングする。しかし、劣化したゾーンに何らかの書き込みが実行され得た場合には、これらのゾーンはリフレッシュされる必要がある。生じたすべての書き込みのログをとるのではなく、変更された劣化領域はマークされ得る。このようにして、ディスクが置き換えられるときには、変更された領域のみがリフレッシュされる必要がある。
さらに、書き込まれたゾーンは、再レイアウトのための優先リストにさらに置かれ得る。このことは、ディスクが置き換えられた場合に、リフレッシュされる必要がある領域の数を低減し得る。タイムアウトも使用され得、その時点の後で、ディスクはたとえ置き換えられても消去される(wiped)。しかし、このタイムアウトは非常に大きくあり得、場合によると数分ではなく数時間である。
(データレイアウトスキーム−データ保全性)
上述のように、標準的なRAIDシステムの一つの問題は、ディスクアレイのまれにしか使用されないエリアの上で、ディスク表面の破損が生じる可能性があることである。別のドライブが故障する場合には、破損が生じたことを決定することは必ずしも可能ではない。そのような場合には、RAIDアレイが故障したドライブを再構築するときに、破損したデータが伝播され保存され得る。
上述のハッシュメカニズムは、RAIDのもとで利用可能なメカニズムにわたってデータ破損検出の追加のメカニズムを提供する。他の場合に述べられるように、チャンクが格納されるときに、そのチャンクについて、ハッシュ値が計算され格納される。チャンクが読み出されるときはいつでも、検索されたチャンクについてのハッシュ値が計算され得、格納されたハッシュ値と比較され得る。ハッシュ値が一致しない場合には(破損したチャンクを示し)、チャンクデータは冗長データから回復され得る。
ディスクの上のデータ破損が生じ得る時間窓(time window)を最小化するために、破損したデータを可能な限り速やかに発見し修正するように、ディスクの定期的なスキャンが実行される。それは、オプションとして、アレイからの読み出しにおいてチェックが実行されることをも可能にする。
(データレイアウトスキーム−ボリューム)
スパースボリューム(sparse volume)において、アレイにおけるディスクの上で利用可能な格納スペースの量に関わりなく、アレイは固定サイズ(たとえばMテラバイト)であることをつねに求める。アレイはSバイトの実際の格納スペースを含み、ここでS<=Mであり、データは、Mテラバイトのスペースの中の位置L1、L2、L3などに格納されるように要求され得ると仮定する。要求された位置Ln>Sである場合には、Lnのためのデータは、位置Pn<Sに格納されなければならない。このことは、図8に示されるように、Lnに基づいてインデックスPnに対するルックアップテーブルを含むことによって管理される。この特徴は、Windows(登録商標)、Linux(登録商標)およびApple(登録商標)のオペレーティングシステムなどの、ボリューム拡張をサポートしないオペレーティングシステムとともに、アレイが作動することを可能にする。さらに、アレイは、複数のスパースボリュームを提供し得、そのすべては同一の物理格納を共有する。それぞれのスパースボリュームは、専用のルックアップテーブルを有するが、データ格納のために同一の物理スペースを共有する。
(ドライブスロットインジケータ)
上述のように、格納アレイは一つ以上のドライブスロットからなる。それぞれのドライブスロットは、空であり得るか、またはハードディスクドライブを含み得る。それぞれのドライブスロットは、4つの状態を示す能力のある専用インジケータを有する。すなわち、オフ、OK、劣化、および故障である。状態は、一般的に以下のように解釈される:
Figure 0005116151
この例示的な実施形態において、赤色/琥珀色/緑色の発光ダイオード(LED)がインジケータとして使用される。LEDは、一般的に以下のように解釈される:
Figure 0005116151
図9は、本発明の例示的な実施形態に従った、利用可能な格納スペースを有し、故障許容方法において作動する、例示的なアレイを示す。スロットB、CおよびDには、格納デバイスが配置され、追加のデータを冗長に格納するために利用可能な十分な格納スペースがある。スロットB、CおよびDのインジケータは緑色であり(これらの格納デバイスが正しく作動しており、アレイデータが冗長であり、アレイが利用可能なディスクスペースを有することを示す)、スロットAのインジケータはオフである(格納デバイスをスロットAに配置する必要がないことを示す)。
図10は、本発明の例示的な実施形態に従った、冗長データ格納を維持するために十分なスペースを有せず、より多くのスペースが追加されなければならない、例示的なアレイを示す。スロットB、CおよびDには、格納デバイスが配置される。スロットCおよびDにおける格納デバイスは満杯である。スロットB、CおよびDのインジケータは緑色であり(これらの格納デバイスが正しく作動していることを示す)、スロットAのインジケータは赤色である(アレイが、冗長データ格納を維持するための十分なスペースを有せず、スロットAに格納デバイスが配置されるべきであることを示す)。
図11は、本発明の例示的な実施形態に従った、故障の場合に冗長データを維持することができなくあり得る、例示的なアレイを示す。スロットA、B、CおよびDには、格納デバイスが配置される。スロットCおよびDにおける格納デバイスは満杯である。スロットA、BおよびCのインジケータは緑色であり(アレイが正しく作動していることを示す)、スロットDのインジケータは琥珀色である(スロットDにおける格納デバイスが、より大きな格納容量を有する格納デバイスに置き換えられるべきであることを示す)。
図12は、本発明の例示的な実施形態に従った、格納デバイスが故障した例示的なアレイを示す。スロットB、CおよびDには、格納デバイスが配置される。スロットCにおける格納デバイスが故障した。スロットBおよびDのインジケータは緑色であり(これらが正しく作動していることを示す)、スロットCのインジケータは赤色であり(スロットCにおける格納デバイスが置き換えられるべきであることを示す)、スロットAのインジケータはオフである(格納デバイスがスロットAに配置される必要がないことを示す)。
以下は、本発明の例示的な実施形態のためのソフトウェア設計の説明である。ソフトウェア設計は、6つのソフトウェアレイヤに基づき、ソフトウェアレイヤは、ディスクに物理的にアクセスすることから、ホストコンピューティングシステムと通信することまでの、論理アーキテクチャにわたる。
この例示的な実施形態において、ファイルシステムは、Windows(登録商標)、Linux(登録商標)またはApple(登録商標)などのホストサーバに常駐し、USBデバイスまたはiSCSIデバイスとして格納アレイにアクセスする。ホストインタフェースを介して到着する物理的ディスクリクエストは、ホストリクエストマネジャー(Host Request Manager)(HRM)によって処理される。ホストI/Oインタフェースは、ホストに対するホストUSBまたはiSCSIインタフェースのプレゼンテーションを調整し(coordinate)、HRMとインタフェースする。HRMは、ホストI/Oインタフェースからのデータ読み出し/書き込みリクエストを調整し、読み出しおよび書き込みリクエストをタスク指名し、これらのリクエストが完了したときに、これらのリクエストのホストへの回収(retiring)を調整する。
格納アレイの何よりも重要な目的は、ひとたびデータがシステムによって受け入れられると、システムが現在格納する冗長性の最大量を利用して、データが確実な方法で格納されることを保証することである。アレイが物理的構成を変化させると、データは冗長性を維持する(さらに場合によると最大化する)ために再編成される。さらに、使用される格納量を低減するために、単純なハッシュに基づいた圧縮が使用される。
最も基本的なレイヤは、データを異なるディスクに格納するディスクドライバからなる。ディスクは、USBインタフェースを介して通り抜けた(tunneled)ATAなどの種々のインタフェースを介して接続され得る。
ディスクの上のセクタは、領域、ゾーン、およびクラスタに編成され、それぞれが異なる論理的役割を有する。
領域は、ディスクの上の隣接する物理ブロックのセットを表す。4ドライブシステムにおいて、それぞれの領域は、サイズが1/12GBであり、冗長性の最小単位を表す。領域の中のセクタが物理的に損傷していることがわかった場合は、領域全体が放棄される。
ゾーンは、冗長性の単位を表す。ゾーンは、適切な量の冗長性を提供するために、場合により異なるディスクの上の、多数の領域からなる。ゾーンは、1GBのデータ容量を提供するが、冗長性を提供するためにより多くの領域を要求し得る。冗長性のない1GBは、1セットの12領域(1GB)を要求する;1GBのミラリングされたゾーンは、2セットの1GB領域(24領域)を要求する;1GBの3ディスクストライピングされたゾーンは、3セットの0.5GB領域(18領域)を要求する。異なるゾーンは、異なる冗長特性を有する。
クラスタは、圧縮の基本単位を表し、ゾーンの中の単位サイズである。クラスタのサイズは現在4KB、すなわち8×512バイトセクタである。ディスクの上の多くのクラスタは、おそらく同じデータを含む。クラスタアクセステーブル(CAT)は、ハッシュ関数を介してクラスタの利用を追跡するために使用される。CATは、論理ホストアドレスと、ゾーンにおける適切なクラスタの位置との間の変換をする。
ディスクに書き込むときに、データがディスクの上にすでに存在するかどうかを知るためにハッシュ関数が使用される。そうである場合には、CATテーブルにおける適切なエントリが、既存のクラスタを示すように設定される。
CATテーブルは、自らのゾーンの中に常駐する。CATテーブルがゾーンのサイズを超える場合には、追加のゾーンが使用され、CATのその部分のゾーンに論理アドレスをマッピングするために、テーブルが使用される。代替的には、ゾーンはCATテーブルを含むように事前に割当てられる。
ホスト書き込み待ち時間を低減し、データ信頼性を保証するために、ジャーナルマネジャーが、(ディスクまたはNVRAMのいずれかに対する)すべての書き込みリクエストを記録する。システムが再起動される場合には、ジャーナルエントリは再起動に際してコミットされる。
ディスクは出入りし得、領域は、破損を有することがわかった場合には、使わなく(retire)され得る。これらの状況のいずれにおいても、レイアウトマネジャーは、冗長タイプを変更するために、またはゾーンの領域的な構成を変化させるために(領域が破損した場合に)、
ゾーンの中の領域を再編成することが可能である。
格納アレイは、物理的ディスクスペースの変化するレベルによって支援されて、仮想ディスクアレイを提供し、それはブロックレベルのインタフェースを提供するので、いつクラスタがファイルシステムによってもはや使われなくなるかは、明らかではない。結果として、使用されるクラスタスペースは、拡張し続ける。ガーベッジコレクタ(ホストまたはファームウェアのいずれかに位置する)は、どのクラスタが解放されたかを決定するためにファイルシステムを分析し、それらをハッシュテーブルから取り除く。
以下の表は、本発明の例示的な実施形態に従った6つのソフトウェアレイヤを示す:
Figure 0005116151
図13は、異なるソフトウェアレイヤと、それらが互いにどのように関連するかを表す、モジュール階層を示す。ソフトウェアレイヤリングは、明瞭なAPIおよび記述を提供するために、好ましくはリジッドである。
ガーベッジコレクタ(Garbage Collector)は、ホストファイルシステムによってもはや使われないクラスタを解放する。たとえば、ファイルが削除されるときに、そのファイルを含むために使用されたクラスタは、好ましくは解放される。
ジャーナルマネジャー(Journal Manager)は、書き込みの実行記録(journaling)の形を提供するので、電源異常または他のエラー状態の場合において、保留中の書き込みは失われない。
レイアウトマネジャー(Layout Manager)は、ゾーンの領域に対するゾーンのランタイム再レイアウトを提供する。このことは、ディスクの挿入/取り外しまたは故障の結果として生じ得る。
クラスタマネジャー(Cluster Manager)は、データゾーンのセットの中にクラスタを割当てる。ディスク利用デーモン(Disk Utilization Daemon)は、使用されていないディスクスペースを定期的にチェックする。
ロックテーブル(Lock Table)は、書き込み衝突発行(collision issues)の後で、読み出しを処理する。
ホストリクエストマネジャー(Host Request Manager)は、ホストおよびガーベッジコレクタからの読み出し/書き込みリクエストを処理する。書き込みはジャーナルマネジャーに渡されるが、読み出しはクラスタアクセステーブル(CAT)管理レイヤを介して処理される。
上述のように、代表的なファイルシステムにおいて、ある量のデータが一般的に事実上反復される。ディスクスペース利用を低減させるために、このデータの複数のコピーはディスクに書き込まれない。代わりに、一つのインスタンスが書き込まれ、同じデータのすべての他のインスタンスが、この一つのインスタンスに対して参照される。
この例示的な実施形態において、システムはつねにデータのクラスタの上で作動し(たとえば8つの物理的セクタ)、これはハッシュされる単位である。SHA1アルゴリズムは、160ビットハッシュを生成するために使用される。このことは、良好な独特さ(uniqueness)を含む多数の利益を有し、多数のプロセッサにおいてオンチップでサポートされる。すべての160ビットがハッシュ記録に格納されるが、最下位の16ビットのみがハッシュテーブルへのインデックスとして使用される。最も低い16ビットと一致する他のインスタンスは、リンクされたリストを介して連鎖される。
この例示的な実施形態において、一度に一つの読み出し/書き込み操作のみが生じ得る。性能の目的のために、クラスタをディスクに書き込むときにハッシュ分析が生じることは許されない。代わりに、ハッシュ分析は、ハッシュマネジャーによるバックグラウンド活動として生じる。
書き込みリクエストは、ジャーナルの書き込みキューから読み込まれ、完了に向けて処理される。データの一貫性を保証するために、書き込み操作がクラスタの上ですでに活動状態である場合には、書き込みは遅らせなければならない。他のクラスタの上の操作は、妨げられずに進行し得る。
クラスタ全体が書き込まれない限りは、書き込まれるデータは、クラスタに格納された既存のデータと併合される必要がある。論理セクタアドレス(LSA)に基づいて、クラスタのCATエントリが位置づけられる。ハッシュキー、ゾーン、およびクラスタオフセット情報は、この記録から獲得され、次に、ハッシュテーブルを検索して一致を見出すために使用され得る。これがクラスタである。
正しいハッシュエントリのルックアップの速度を改善するために、一度はSHA1ダイジェストを介して、次にゾーン/クラスタオフセットによって、ハッシュテーブルを二重にハッシュすることは十分に必要であり得る。ハッシュ記録がすでに使用されている場合には、参照カウントが減少させられる。参照カウントが現在ゼロであり、かつハッシュエントリによって参照されるスナップショットがない場合には、ハッシュエントリおよびクラスタは、それぞれのフリーリストに解放し返され得る。
もともとのクラスタデータは、これでクラスタのアップデートセクションと併合させられ、データは再ハッシュされる。新しいクラスタはフリーリストから除去され、併合されたデータはクラスタに書き込まれ、新しいエントリはハッシュテーブルに追加され、CATテーブルにおけるエントリは新しいクラスタを指し示すようにアップデートされる。
ハッシュテーブルをアップデートする結果として、エントリも内部キューに追加されて、バックグラウンドタスクによって処理される。このタスクは、新たに追加されたクラスタおよびハッシュエントリと、ハッシュテーブル行アドレスに一致する他のハッシュエントリとを比較し、これらが重複している場合には記録を結合し、必要に応じてハッシュエントリおよびCATテーブルエントリを解放する。これは、この活動によって書き込み待ち時間に負荷がかけられないことを保証する。この処理の間に故障(たとえば電力の損失)が生じる場合には、種々のテーブルが削除され得、結果としてデータの損失になる。テーブルは、最終コミットがアトミックであるか、あるいはジャーナルエントリが完全に完了しなかった場合には再実行され得るような方法で、管理されるべきである。
以下は、書き込み論理の疑似コードである。
Figure 0005116151
Figure 0005116151
読み出しリクエストもまた、一度に一つのクラスタ(「セクタ」ではなく)で処理される。読み出しリクエストは、上記に概説されたハッシュ関連の処理を経ない。代わりに、ホスト論理セクタアドレスが、CATを参照するために使用され、ゾーン番号とゾーンの中へのクラスタオフセットとを獲得する。読み出しリクエストは、CATキャッシュにおけるCATテーブルエントリをルックアップすべきであり、書き込み進行中のビットが設定されることにおいて遅延されなければならない。他の読み出し/書き込みは、妨げられずに進行し得る。データ保全性のチェックを改善するために、クラスタは、読み出されるときにハッシュされ、そのハッシュは、ハッシュ記録に格納されたSHA1ハッシュ値と比較される。このことは、ハッシュテーブルの中への検索キーとして、ハッシュ、ゾーン、およびクラスタを使用することを必要とする。
クラスタは、可能な限り少ないゾーンを使用するように割当てられる。なぜなら、ゾーンは、ディスクドライブの使用に直接的に対応するからである。すべてのゾーンについて、ハードドライブアレイの上に2つ以上の領域がある。ゾーンの数を最小化することによって、物理的領域の数が最小化され、したがってハードドライブアレイの上のスペースの消費が低減される。
クラスタマネジャーは、データゾーンのセットからクラスタを割当てる。ゾーンにおける使用されていないクラスタを把握するために、リンクされたリストが使用される。しかし、使用されていないクラスタの情報は、ディスクの上にビットマップ(ゾーンあたり32KB)として格納される。リンクされたリストは、ビットマップから動的に構築される。最初に、使用されていないクラスタの一定の数のリンクされたリストが、メモリの中で作成される。クラスタが割当てられると、リストは縮小する。所定の最低点において、使用されていないクラスタを表す新しいリンクされたリストのノードは、ディスクの上のビットマップから抽出される。このようにして、ビットマップは、割当て用に使用されていないクラスタを見出すために分析される必要はない。
この例示的な実施形態において、ハッシュテーブルは64Kの記録(ハッシュのより下位の16ビットによって索引をつけられる)であり、以下のフォーマットを有する:
Figure 0005116151
Figure 0005116151
オールゼロ(all zero)のクラスタは、かなり一般的であり得るので、たとえば決して削除され得ないように、オールゼロの場合は特別な場合として扱われ得る(したがってカウントをラッピング(wrapping)することは問題ではあり得ない)。
複数のハッシュが同一の最下位ハッシュを有するとき、あるいは2つのハッシュエントリが異なるデータクラスタを指し示すときには、使用されていないハッシュ記録のリンクされたリストが使用される。いずれの場合においても、使用されていないハッシュ記録は、リストから取られ、pNextHashポインタを介してリンクされる。
ハッシュマネジャーは、ハッシュテーブルに追加されたエントリを整頓し、ディスクの上の同一のクラスタを結合する。新しいハッシュ記録がハッシュテーブルに追加されると、メッセージがハッシュマネジャーに通知される。これは、ハッシュマネジャーによって自動的に行われる。バックグラウンド活動として、ハッシュマネジャーはキューの上のエントリを処理する。ハッシュマネジャーは、完全な(full)ハッシュ値が既存のハッシュ記録と一致するかどうかを知るために、完全なハッシュ値を比較する。そうする場合には、ハッシュマネジャーは、完成した(complete)クラスタデータも比較する。クラスタが一致する場合には、新しいハッシュ記録は使用されていないキューに捨て戻され得、ハッシュ記録カウントは増加させられ、重複するクラスタはクラスタの使用されていないキューに戻される。ハッシュマネジャーは、記録を結合するときに、スナップショットビットを前に伝播させるように注意しなければならない。
クラスタアクセステーブル(CAT)は、間接的なポインタを含む。ポインタは、ゾーンの中のデータクラスタ(0が最初のデータクラスタである)を指し示す。一つのCATエントリは、単一のデータクラスタ(暫定的にサイズが4KB)を参照する。多くの反復データがあるときには、ディスク使用要件を低減するために、CATが(ハッシングとともに)使用される。単一のCATは、格納の隣接ブロックをつねに表す。CATは、非データゾーンの中に含まれる。それぞれのCATエントリは48ビットである。以下の表は、それぞれのエントリがどのようにレイアウトされるかを示す(それぞれのデータゾーンが1GBのデータを含むと想定する):
Figure 0005116151
CATは64ビットの中に収まることが望ましいが、これは必要不可欠ではない。2TBアレイのためのCATテーブルは、現在、サイズが4GBまでである。それぞれのCATエントリは、データとゾーンの数とを含むゾーンを指し示す。
図14は、ゾーンにおけるデータクラスタにアクセスするために、CATがどのように使用されるかを示す。冗長データは、CATにおける2つ以上のエントリによって参照される。2つの論理クラスタが同じデータを含むので、それらのCATエントリは、同じ物理的クラスタに指し示される。
ハッシュキーエントリは、クラスタ全体の160ビットSHA1ハッシュ値の16ビット抽出を含む。このエントリは、書き込み操作の間にハッシュテーブルをアップデートするために使用される。
16TBのデータを参照するCATにおけるそれぞれのエントリにおいて、十分なビットがある。しかし、すべてのデータクラスタが互いに異なる場合には(コンテンツに関して)、2TBのデータを参照するために、ちょうど3ゾーン相当以上のCATエントリが必要とされる(それぞれのゾーンは、サイズが1GBであり、したがって1GBサイズのCATエントリを格納し得る。6バイトCATエントリを想定すると、178956970CATエントリ/ゾーンであり、すなわち、それぞれのクラスタが4Kである場合には、テーブルは約682GB/ゾーンを参照する)。
ホスト論理セクタ変換テーブルは、ホスト論理セクタアドレスをゾーン番号に変換するために使用される。ホスト論理セクタアドレスに対応するCATの部分は、このゾーンに常駐する。それぞれのCATエントリは、4096バイトのクラスタサイズを表すことに留意されたい。これは8つの512バイトセクタである。以下は、ホスト論理セクタ変換テーブルの表現を示す:
Figure 0005116151
Figure 0005116151
ゾーンは、CAT全体を保持するように事前に割当てられ得る。代替的に、CATに対してより多くのエントリが要求されるときには、ゾーンがCATに対して割当てられ得る。CATは、2TB仮想ディスクをホストセクタアドレススペースにマッピングするので、ホストによるハードディスクのパーティショニングまたはフォーマッティングの間に、おそらくCATの大部分が参照される。このことを理由として、ゾーンは事前に割当てられ得る。
CATは大きな1GB/ゾーンのテーブルである。使用されるクラスタのワーキングセットは、この大きなテーブルからのスパースセット(sparse set)である。性能の理由のために、活動状態のエントリは、ディスクから(おそらく時間的に)つねに読み込むのではなく、プロセッサメモリにおいてキャッシュされ得る。キャッシュを配置するために、少なくとも2つのオプションがあり、CATからの個々のエントリ、またはCATからの全体のクラスタである。
進行中の書き込みは、CATキャッシュテーブルと結合されるので、すべての未処理の書き込みがキャッシュの中に留まることを保証する必要がある。したがって、キャッシュは、少なくとも、未処理の書き込みリクエストの最大数と同じくらい大きい必要がある。
キャッシュにおけるエントリは、クラスタサイズ(すなわち4K)である。クラスタの上で作動中の進行中の書き込みがあるかどうかを知る必要がある。この指示は、クラスタについてのキャッシュエントリにおけるフラグとして格納され得る。以下の表は、CATキャッシュエントリのフォーマットを示す:
Figure 0005116151
キャッシュエントリにおける進行中のフラグは、2つの意味を有する。第一に、書き込みが進行中であり、クラスタの上のいかなる書き込み(または追加の書き込み)も、書き込みが完了するまでは延期されなければならない、ということを示す。第二に、キャッシュにおけるこのエントリは、ビットが設定される間はフラッシュ(flush)されてはならない。このことは、部分的にはビットの状態を保護するためであり、このクラスタが現在使用されているという事実を反映させるためでもある。さらに、このことは、キャッシュのサイズが、少なくとも、未処理の書き込み操作の数と同じくらい大きくなければならないことを意味する。
進行中の書き込みのインジケータをクラスタについてのキャッシュエントリに格納することの一つの利点は、現在操作中であるという事実を反映し、別のテーブルを有することを不要にし、追加のハッシュベースのルックアップ、またはこのビットもチェックするためのテーブルウォーク(table walk)を不要にすることである。キャッシュは、書き込み遅延(write−delayed)キャッシュであり得る。より早く書き込ませることは有益であり得るが、書き込み操作が完了したときにキャッシュエントリをディスクに書き戻すのみでよい。ハッシュされ得る未処理の書き込みエントリの数を増加させるために、ハッシュ関数または他のメカニズムが使用され得る。
代替のアプローチは、CATのクラスタ全体をキャッシュすることである(すなわちエントリのうちの4Kエントリ)。このことは、アクセスの良好な空間的局所性がある場合に、一般的に性能を改善し得る。CATエントリは48ビット幅なので、注意が払われる必要があり、キャッシュにおけるエントリの全体の数はない。以下の表は、クラスタされたCATキャッシュエントリの例を示す:
Figure 0005116151
テーブルサイズは、4096+996(4192バイト)であり得る。250エントリのキャッシュサイズを有する必要があると想定すると、キャッシュは約1MBを占め得る。
論理CATエントリアドレスの適切なマスキングによらずに、最初および最後のエントリが不完全であるかどうかを計算することは可能である。キャッシュするルックアップルーチンは、エントリのローディングの前にこれを行うべきであり、必要とされるCATクラスタをロードするべきである。
ホストがセクタ(またはクラスタ)読み出しリクエストを送信するときに、論理セクタアドレスを介して送信する。論理セクタアドレスは、ホストによって要求される実際のデータを含むゾーンにおけるクラスタのオフセットを獲得するために、CATの中へのオフセットとして使用される。その結果は、ゾーン番号と、そのゾーンの中へのオフセットとである。その情報は、レイヤ2(Layer 2)ソフトウェアに渡され、レイヤ2ソフトウェアは、次に、ドライブからロークラスタ(raw cluster)を抽出する。
ホストによっていまだかつて書き込まれていないクラスタを処理するために、すべてのCATエントリが、オールゼロを含む「デフォルト」クラスタを指し示すように初期化される。
ジャーナルマネジャーは、二層の書き込み実行記録システムである。システムの目的は、書き込みリクエストがホストから受け入れられ得ることを確実にし、データが保全性を保証しながら受け入れられたことをホストに迅速に示し返すことである。さらに、システムは、任意のディスク書き込みの間のシステムリセットの場合において、ブロックレベルデータまたはシステムメタデータ(たとえばCATおよびハッシュテーブルエントリ)の破損または損失がないことを保証する必要がある。
J1ジャーナルマネジャーは、すべての書き込みリクエストをホストからディスクへ可能な限り迅速にキャッシュする。ひとたび書き込みが首尾良く完了すると(すなわちデータがアレイによって受け入れられると)、ホストは、操作が完了したことを示すために信号を送られ得る。ジャーナルエントリは、故障から回復するときに、書き込みリクエストの回復を可能にする。ジャーナル記録は、ディスクに書き込まれるべきデータと、書き込みトランザクションに関連するメタデータとからなる。
ディスク読み出し/書き込みを低減するために、書き込みに関連するデータが書き込まれて、クラスタを解放する。このことは、データを自動的にミラリングする。使用されていないクラスタは、使用されていないクラスタのリストから取られる。ひとたびデータが書き込まれると、使用されていないクラスタのリストは、ディスクに書き戻されなければならない。
ジャーナル記録は、ミラリングされていないゾーンの上のジャーナルキューに対して書き込まれる。それぞれの記録は、サイズにおいてセクタであり、ジャーナル書き込みの間の故障が以前のジャーナルエントリを破損し得るリスクを低減するために、セクタ境界に位置合わせされる。ジャーナルエントリは、記録の終端において一意の増加するシーケンスカウントを含むので、キューの終端は容易に識別され得る。
ジャーナル書き込み操作は、スレッドを処理するホストキューの中で同期的に生じる。ジャーナル書き込みは、ディスクに書き込まれるときに順序づけられなければならないので、任意の時間において一つのスレッドのみがジャーナルに書き込み得る。J1テーブルにおけるジャーナルエントリのアドレスは、一意の識別子として使用され得るので、J1ジャーナルエントリは、J2ジャーナルにおけるエントリと相互に関連させられ得る。ひとたびジャーナルエントリが書き込まれると、トランザクション完了通知が、ホスト完了キューに対して通知される。今や書き込み操作が実行され得る。ジャーナル書き込みが完了する前の、クラスタに対するいかなる次の読み出しも、遅延されることを保証することが重要である。
以下の表は、J2ジャーナル記録のフォーマットを示す:
Figure 0005116151
それぞれのジャーナル記録は、セクタ境界に位置合わせされる。ジャーナル記録は、ゾーン/オフセット/サイズの組のアレイを含み得る。
図15は、本発明の例示的な実施形態に従ったジャーナルテーブルアップデートを示す。具体的には、ホスト書き込みリクエストが受信されるときに、ジャーナルテーブルがアップデートされ、一つ以上のクラスタが割当てられ、データがクラスタに書き込まれる。
ホストジャーナルリクエストが処理される。これらによって、クラスタは書き込まれ、ディスクにシャドウバック(shadow back)されなければならないメタデータ構造(たとえばCATテーブル)へのアップデートももたらされる。たとえシステムリセットが生じても、これらのメタデータ構造がディスクに正しく書き戻されることを保証することが重要である。低レベルディスクI/O書き込み(J2)ジャーナルは、このために使用される。
ホストインタフェースジャーナルエントリを処理するために、メタデータ構造の適切な操作が決定されるべきである。メモリにおいて変化が生じるべきであり、種々のディスクブロックへの変化の記録が生成されるべきである。この記録は、ディスクの上でなされるべき実際の変化を含む。アップデートされるそれぞれのデータ構造は、J2ジャーナルマネジャーを用いて登録される。この記録は、ディスクベースのジャーナルに記録されるべきであり、識別子を用いてスタンプされるべきである。記録がJ1ジャーナルエントリと結びつけられる場合には、識別子がリンクされるべきである。ひとたび記録が格納されると、ディスクへの変更がなされ得る(あるいはバックグラウンドタスクを介して行われ得る)。
J2ジャーナルは、論理的にレイヤ3において存在する。これは、ゾーンマネジャーを介した書き込みを含み得るメタデータアップデートを実行記録(journal)するために使用される。ジャーナルエントリの再生が生じるときには、ゾーンマネジャーの方法を使用する。ジャーナルそのものは、特殊な領域に格納され得る。ジャーナルエントリの短い寿命を考慮すれば、ジャーナルエントリはミラリングされない。
特に構造へのアップデートがアトミックである場合には、すべてのメタデータがJ2ジャーナルを経る必要はない。領域マネジャー構造は、J2ジャーナルを使用し得ない。たとえばバックグラウンドスレッドをチェックする保全性を用いて、領域マネジャービットマップにおける不整合を検出することが可能であり得る。
J2ジャーナルのための単純なアプローチは、単一の記録を含むことである。記録がディスクに対してコミットされるとすぐに、記録は再生され、ディスクの上の構造をアップデートする。複数のJ2記録を有することと、ディスクの上の記録のアップデートをコミットするバックグラウンドタスクを有することとは可能である。この場合、ジャーナルと、種々のデータ構造に関連する任意のキャッシングアルゴリズムとの間の相互作用に、周到な注意が払われる必要がある。
最初のアプローチは、ジャーナルエントリがディスクに対してコミットされるとすぐに、ジャーナルエントリを実行する。原則としては、J2の複数の同時ユーザがあり得るが、J2ジャーナルは一度に一人のユーザに対してロックされ得る。たとえこの場合においても、ジャーナルエントリは、実行依頼されたらすぐにコミットされるべきである。
任意のより高いレベルのジャーナル活動が生じる前に、メタデータ構造が修復されることを保証することが重要である。システム再起動の際に、J2ジャーナルが分析され、任意の記録が再生される。ジャーナルエントリがJ1ジャーナルエントリと相互に関連させられる場合には、J1エントリは、完成したものとしてマークされ、除去され得る。ひとたびすべてのJ2ジャーナルエントリが完成すると、メタデータは信頼性のある状態になり、任意の残りのJ1ジャーナルエントリが処理され得る。
J2ジャーナル記録は、以下の情報を含む。
・操作の数
・各操作は以下を含む:
−J1記録インジケータ
−書き込むべきゾーン/データオフセット
−書き込むべきデータ
−データのサイズ
−データクラスタの中へのオフセット
・ジャーナル記録識別子
・終端マーカ
このスキームは、たとえばJ2ジャーナルエントリの終端を識別するためにシーケンス番号を用いて、J2ジャーナルエントリをセクタ境界に置いて、J1ジャーナルスキームと同様に作動し得る。
J1データポインタインジケータが設定される場合には、この特定の操作が、J1ジャーナル記録を指し示し得る。ホストによって供給される書き込みデータは、われわれの(our)ジャーナルエントリにコピーされる必要はない。ジャーナル記録における操作の最大数は十分に理解されると予想されるので、操作は固定サイズとして定義されることができるべきである。
低レベル書き込み操作の間におけるセクタの破損(たとえば電力の損失によるもの)からの回復を可能にするために、J2ジャーナルは、書き込まれたセクタ全体を格納し得るので、必要な場合にはこの情報からセクタが再書き込みされ得る。代替的にまたは追加的に、書き込み操作の再生が必要とされるかどうかを決定するために、それぞれの変更されたセクタについて計算されたCRCは、J2記録に格納され得、ディスクの上のセクタから(たとえばゾーンマネジャーによって)計算されたCRCと比較され得る。
異なるジャーナルが異なる位置に格納され得るので、ジャーナル記録を補助格納デバイスに書き込むために提供されるインタフェースレイヤがある。位置は非揮発性であるべきである。2つの候補は、ハードディスクおよびNVRAMである。J1がハードディスクに格納される場合には、J1ジャーナルのミラリングされないゾーンに格納される。J1ジャーナルは、NVRAMに格納する候補である。J2ジャーナルは、特殊な領域に格納され得るが、ディスクの上に格納されるべきである(すなわち、短い寿命を有するので冗長ではない)。J2ジャーナルをディスクの上に格納する利点は、内部データ構造のアップデートの間にシステムリセットがある場合に、データ構造が一貫性のある状態に戻され得ることである(たとえユニットが長時間にわたって電源を入れられないままにされるとしても)。
ゾーンマネジャー(ZM)は、より高いレベルのソフトウェアによって必要とされるゾーンを割当てる。ZMへのリクエストは以下を含む:
a.ゾーンを割当てる
b.ゾーンを再割当て/解放する
c.L1に対してデータ読み出し/書き込みパススルーを制御する(?)
d.ゾーンにおけるクラスタの読み出し/書き込みをする(クラスタのオフセットとゾーン番号とを考慮して)
ZMは、冗長メカニズムを管理し(ドライブの数およびその相対的サイズの関数として)、ミラリング、ストライピング、およびデータの読み出し/書き込みのための他の冗長スキームを処理する。
ZMは、ゾーンを割当てる必要があるときには、2つ以上のセットの領域の割当てを要求する。たとえば、ゾーンは1GBのデータに対して割当てられ得る。このゾーンを構成する領域は、冗長データを含む1GBのデータを含むことができる。ミラリングメカニズムのために、ゾーンは、それぞれ1GBの2セットの領域からなる。別の例として、3ディスクストライピングメカニズムは、それぞれ1/2GBの3セットの領域を利用する。
ZMは、ゾーンを構成する領域の各セットの位置(ドライブ番号および開始領域番号)を見出すために、ZR変換テーブル(6)を使用する。1/12GBの領域サイズを想定すると、最大24領域が必要とされる。24領域は2×1GBゾーンを構成する。したがって、ZR変換テーブルは、ドライブ/領域データを提供する24列を含む。
ZMは一般的に以下のように働く:
a.SDM(単一ドライブミラリング)の場合には、24列が使用される。ドライブ番号はすべての列において同じである。それぞれのエントリは、ゾーンを構成する物理的ドライブの上の物理的領域に対応する。最初の12エントリは、データの一つのコピーを含む領域を指し示す。最後の12エントリは、データの第2のコピーを含む領域を指し示す。
b.DDM(二重ドライブミラリング)の場合は、最初の12エントリのドライブ番号が最後の12エントリのドライブ番号とは異なることを除いて、SDMと同じである。
c.ストライピングの場合には、3つ以上の列が使用され得る。たとえば、ストライピングが3つのドライブにわたって使用される場合には、6つの領域が3つの異なるドライブから必要とされ得(すなわち18エントリが使用される)、最初の6エントリが同じドライブ番号を含み、次の6エントリが別のドライブ番号を含み、それに続く6エントリが第3のドライブ番号を含み、未使用のエントリはゼロにされる。
以下は、ゾーン領域変換テーブルの表現を示す:
Figure 0005116151
読み出し/書き込みリクエストが入ってくるときに、ZMは、ゾーン番号およびそのゾーンの中へのオフセットを提供される。ZMは、そのゾーンについての冗長メカニズムを見出すためにZR変換テーブルを調べ、どのドライブ/領域が読み出し/書き込みされなければならないセクタを含むかを計算するためにオフセットを使用する。ドライブ/領域情報は、次に、実際の読み出し/書き込みを行うL1レイヤに提供される。使用(Usage)の列における追加の可能なエントリは、「使用されていない」である。「使用されていない」は、ゾーンが定義されているものの、現在は使用中ではないことを示す。
クラスタマネジャーは、データゾーンのセットの中のクラスタを割当ておよび再割当てする。
レイアウトマネジャーは、ゾーンの領域に対するゾーンのランタイム再レイアウトを提供する。このことは、ディスクの挿入/取り外しまたは故障の結果として生じ得る。
レイヤ1(L1)ソフトウェアは、物理的なドライブおよび物理的なセクタについて知っている。なかでも、L1ソフトウェアは、ゾーンマネジャーによる使用のために、物理的ドライブから領域を割当てる。この例示的な実施形態において、それぞれの領域は、4ドライブアレイシステムについて1/12GB(すなわち174763セクタ)のサイズを有する。より大きなドライブ最大数(8、12または16)を有するシステムは、異なる領域サイズを有する。
SD3(3つのドライブにわたるストライピング;パリティがプラスされた2データ)を用いて1GBのデータを含むゾーンを作成するためには、3つのドライブにおいてそれぞれ6つの領域を使用することになる(6×1/12=ドライブあたり1/2GB)。
この領域スキームの使用は、ゾーンが、たとえばミラリングからストライピングへと、移動または再構成されるときに、ディスクスペースのより良好な利用を提供することを可能にする。L1ソフトウェアは、領域のビットマップを用いて、物理的ドライブの上の利用可能なスペースを追跡する。それぞれのドライブは一つのビットマップを有する。それぞれの領域は、領域が使用されていないか、使用されているか、または不良であるかを追跡するために、ビットマップにおける2ビットによって表される。L2ソフトウェア(ZM)は、ゾーンを作成する必要があるときには、L1レイヤから領域のセットを得る。ゾーンを構成する領域は、ディスクの中で隣接しない。
L1へのリクエストは以下を含む:
a.データの読み出し/書き込みをする(領域のグループの中のクラスタに対して)
b.読み出し/書き込みを制御する(テーブル、データ構造、DICなど)
c.領域に対して物理的スペースを割当てる(1ドライブの中の実際の物理的セクタ)
d.領域を再割当てする
e.物理的ドライブの中の物理的クラスタに対してロー(Raw)読み出し/書き込みをする
f.領域から領域へデータをコピーする
g.領域を不良としてマークする
使用されていない領域ビットマップは大きくあり得、したがって、使用されていないエントリを見つけるための検索(最悪の場合、使用されていないエントリがない)は、遅くあり得る。性能を改善するために、ビットマップの一部がメモリの中に事前にロードされ得、使用されていない領域のリンクされたリストがメモリに格納され得る。活動状態のそれぞれのゾーンについてリストがある。リストの最低点に達した場合には、より多くの使用されていないエントリが、バックグランド活動としてディスクから読み出され得る。
ディスクマネジャー(Disk Manager)は、レイヤ0において作動する。以下の表に示されるように、2つのサブレイヤがあり、具体的には、抽象化レイヤと、物理的な格納アレイと通信するデバイスドライバとである。
Figure 0005116151
デバイスドライバ(Device Driver)レイヤはまた、いくつかのレイヤを含む。たとえば、USBドライブを使用する格納アレイのために、USB移送レイヤの一番上にATAまたはSCSIスタックがある。抽象化レイヤは、格納アレイにおいて使用されるドライブの種類から独立した、基本的な読み出し/書き込み機能を提供する。
一つ以上のディスクアクセスキューが、ディスクアクセスリクエストをキューに入れるために使用され得る。ディスクアクセスレートは、われわれのシステムにおける重要な性能ボトルネックの一つである。われわれは、全般的なシステム待ち時間を低減し、性能を改善するために、ディスクインタフェースがつねに可能な限りビジーに保たれることを確実にしたい。ディスクインタフェースへのリクエストは、非同期インタフェースを有するべきであり、ディスク操作が終了したときには、コールバックハンドラが操作を完了する。一つのディスクリクエストの完了は、キューの上の次のリクエストを自動的に開始する。ドライブごとに一つのキュー、またはすべてのドライブに一つのキューがあり得る。
レイヤ1は、ドライブを論理ドライブ番号として参照する。レイヤ0は、論理ドライブ番号を、物理的ドライブ参照に変換する(たとえば、オープン()コールの結果として、/dev/sdaまたはファイルデバイス番号)。柔軟性のために(USBを介した拡張)、それぞれの論理ドライブについてキューがあるべきである。
以下は、一部の例示的なオブジェクト定義およびデータフローである:
Figure 0005116151
Figure 0005116151
Figure 0005116151
以下は、物理的ディスクレイアウトの説明である。上述のように、それぞれのディスクは固定サイズの領域に分割される。この例示的な実施形態において、それぞれの領域は、4ドライブアレイシステムについて、1/12GB(すなわち174763セクタ)のサイズを有する。より大きなドライブ最大数(8、12または16)を有するシステムは、異なる領域サイズを有する。最初に、領域番号0および1は、領域マネジャーによる使用のために予約され、割当てのためには使用されない。領域番号1は、領域番号0のミラリングである。所定のハードディスクについて領域マネジャーによって使用されるすべての内部データは、このハードディスクの領域番号0および1に格納される。この情報は、他のドライブと重複(またはミラリング)されない。領域0または1のいずれかにエラーがある場合には、データを保持するために他の領域が割当てられ得る。ディスク情報構造(Disk Information Structure)は、これらの領域を指し示す。
それぞれのディスクは、ディスクと、ディスクが属するディスクセットと、ディスクについてのレイアウト情報とを識別する、DISを含む。ハードディスクの上の第1のセクタは予約されている。DISは、第1のセクタの後の、第1の不良でないクラスタに格納される。DISは、1KB相当のデータの中に含まれる。DISの2つのコピーがある。DISのコピーは、DISが属するディスクの上に格納される。さらに、システムにおけるすべてのディスクは、システムにおけるディスクのすべてのDISのコピーを含む。以下の表は、DISフォーマットを示す。
Figure 0005116151
Figure 0005116151
Figure 0005116151
領域マネジャーは、領域情報構造における内部データを格納する。以下の表は、領域情報構造フォーマットを示す。
Figure 0005116151
ゾーン情報構造は、ゾーンマネジャーがどこにゾーンテーブルを見出し得るかに関する情報を提供する。以下は、ゾーン情報構造フォーマットを示す。
Figure 0005116151
Figure 0005116151
高レベル情報ゾーンは、ハイレベルマネジャーによって使用されるゾーンテーブルおよび他のテーブルを含む。これらは、ミラリングを使用して保護される。
以下の表は、ゾーンテーブルノードフォーマットを示す。
Figure 0005116151
Figure 0005116151
以下は、ゾーン情報のレイアウトの説明である。ゾーンテーブルノード(Zones Table Nodes)のリンクされたリストは、以下の方法でZISの後に置かれる。
Figure 0005116151
この情報は、ゾーンテーブル領域(Zones Table Region)に格納される。
図16は、本発明の例示的な実施形態に従ったドライブレイアウトを示す。最初の2つの領域は、互いのコピーである。第3の(オプションの)ゾーンテーブル領域は、ゾーンテーブルを含む。一つ以上のドライブを有するシステムにおいて、ドライブのうちの2つのみがZTRを含む。一つのドライブのみを有するシステムにおいて、2つの領域は、ZTRの2つの(ミラリングされた)コピーを保持するために使用される。DISは、RISおよびZISの位置に関する情報を含む。RISの第1のコピーは、領域0の中にある必要はないことに留意されたい(たとえば、領域0が不良セクタを含む場合には、異なる領域に位置し得る)。
ゾーンマネジャーは、システム起動時にゾーンテーブルをロードする必要がある。それを行うために、ゾーンマネジャーは、領域番号およびオフセットをDISから抽出する。これは、ZISの開始を指し示す。
定モジュール(たとえばCATマネジャー)は、制御構造およびデータテーブルをゾーンに格納する。レイヤ3以上におけるモジュールについてのすべての制御構造は、ゾーン0に格納される構造から参照される。このことは、たとえば、実際のCAT(クラスタ割当てテーブル)の位置が、ゾーン0に格納されたデータ構造から参照されることを意味する。
以下の表は、ゾーン0情報テーブルフォーマットを示す。
Figure 0005116151
CATのリンクされたリストは、CATを含むゾーンを記述するノードのリンクされたリストである。以下の表は、CATのリンクされたリストのノードフォーマットを示す。
Figure 0005116151
Figure 0005116151
ハッシュテーブルのリンクされたリストは、ハッシュテーブルを保持するゾーンを記述するノードのリンクされたリストである。以下の表は、ハッシュテーブルのリンクされたリストのノードフォーマットを示す。
Figure 0005116151
図17は、本発明の例示的な実施形態に従った、ゾーン0のレイアウトと、他のゾーンがどのように参照されるかとを示す。
上述のように、冗長セットは、データのセットに対して冗長性を提供するセクタ/クラスタのセットである。領域をバックアップすることは、一つの領域のコンテンツを別の領域にコピーすることを含む。
データ読み出しエラーの場合には、より低いレベルのソフトウェア(ディスクマネジャーまたはデバイスドライバ)は、最初の失敗した試みの後に、追加の2回にわたって読み出しリクエストを再試行する。失敗状態は、ゾーンマネジャーに返される。次に、ゾーンマネジャーは、冗長クラスタから(読み出しによって)リクエストされるデータを、ディスクアレイにおいて再構築することを試みる。冗長データは、ミラリングされたクラスタ(SDM、DDMについて)、またはパリティを含むクラスタのセット(ストライピングされたインプリメンテーションについて)のいずれかであり得る。次に、再構築されたデータは、ホストに返される。ZMがデータを再構築することができない場合には、読み出しエラーがホストに返される。ゾーンマネジャーは、エラー通知パケット(Error Notification Packet)をエラーマネジャー(Error Manager)に送信する。図18は、本発明の例示的な実施形態に従った読み出しエラー処理を示す。
データ書き込みエラーの場合には、より低いレベルのソフトウェア(ディスクマネジャーまたはデバイスドライバ)は、最初の失敗した試みの後に、追加の2回にわたって書き込みリクエストを再試行する。失敗状態はゾーンマネジャーに返される。ゾーンマネジャーは、エラー通知パケットをエラーマネジャーに送信する。
このレベルにおいてデータ書き込みが実行されるときに、冗長情報もディスクに書き込まれる。結果として、一つのみのクラスタが書き込みエラーを有する限りは、次の読み出しはデータを再構築することができる。複数のディスクエラーがあり、冗長情報が読み出しまたは書き込みされ得ない場合には、少なくとも二つの可能なアプローチがある。
a.書き込みエラー状態をホストに戻す。冗長セットに関連するすべての領域を、不良セクタを含まない、新たに割当てられた領域に、バックアップする。
b.書き込みを遅らせる。冗長セットに関連するすべての領域を、不良セクタを含まない、新たに割当てられた領域に、バックアップする。次に、新たに割当てられた領域における適切なクラスタに書き込みを行う(すべての冗長部分、たとえばパリティなどとともに)。別個の書き込みキューは、遅らせられた書き込みを含むように使用され得る。
アプローチ(a)は、問題がある。なぜなら、ジャーナルの成功した書き込みの結果として、書き込み状態がすでにホストに送信されてい得るので、ホストはエラーがあったことを知り得ないからである。代替策は、読み出しの失敗を報告するが、書き込みを可能にすることである。CATにおけるビットは、特定のLBAが不良読み出しを戻すべきであることを追跡するために使用され得る。
図19は、本発明の例示的な実施形態に従ったエラー処理を示す。
エラーマネジャー(EM)は、クラスタが本当に不良であるかどうかを知るためにクラスタをチェックする。そうである場合には、領域全体が不良であると考えられる。領域のコンテンツは、同じディスクの上の新たに割当てられた領域にコピーされる。次に、現在の領域はBAD(不良)とマークされる。領域にコピーする間に、エラーマネジャーは、不良セクタに遭遇したときに、必要とあればデータを再構築する。図20は、本発明の例示的な実施形態に従った、エラーマネジャーによる不良領域のバックアップを示す論理フロー図である。
データ読み出しエラーがあり、エラーマネジャーが所定のクラスタについてデータを再構築できない場合には(たとえば、冗長セットにわたる読み出しエラーの結果として)、再構築され得ないデータの代わりに、ゼロが使用される。この場合には、不良セクタを含む他のセクタ(冗長セットからの)もまた、バックアップされなければならない。この場合もやはり、再構築され得ないデータの代わりにゼロが使用される。
ひとたび冗長セットのコピーが行われると、EMはゾーンのこの部分に対応するクラスタへのアクセスを使用不能にする。次にEMは、新たに割当てられた領域を指し示すように、ゾーンテーブルをアップデートする。次に、クラスタへのアクセスが再び使用可能にされる。
この例示的な実施形態は、8つのスナップショットをサポートするように設計される(これは、ハッシュ/クラスタのエントリが特定のスナップショットインスタンスによって使用されるかどうかを示す1バイトの使用を可能にする)。スナップショットに含まれる2つのテーブルがある。
1.スナップショットあたりのCATテーブルは、論理セクタアドレスと、そのLASについてのデータを含むディスクの上のクラスタとの関係を捉えるように、存在する必要がある。究極的には、スナップショットあたりのCATは、スナップショットが取られた瞬間におけるCATのコピーでなければならない。
2.ハッシュ値とデータクラスタとの間のマッピングをするシステムハッシュテーブル。ハッシュ関数は、どのスナップショットが使用されているかに関わらず同じ結果を返し、結果としてすべてのスナップショットにわたって共通である。結果として、このテーブルは、一意にクラスタが任意のスナップショットによって使用されているかどうかを理解しなければならない。ハッシュエントリを使用するスナップショットがない限りは、ハッシュクラスタエントリは、解放され得ないか、または新しいデータと置き換えられ得ない。
現在のものでありなおかつ追加されつつあるスナップショットが、つねにある。ハッシュエントリが作成またはアップデートされるときに、現在のスナップショット番号をそのハッシュエントリに適用する必要がある。スナップショットが作られるときに、現在のスナップショット番号が増加させられる。
任意のスナップショットによってもはや必要とされないクラスタ/ハッシュのエントリは、ハッシュテーブルをざっと読むこと(walking through)によって解放され、リタイヤ(retire)したスナップショットビットセットで任意のハッシュエントリを見出し、そのビットをクリアする。スナップショットバイトがゼロである場合には、ハッシュエントリはテーブルから除去され得、クラスタは解放され得る。
ハッシュツリーに追加されつつある任意の新しいエントリとの衝突を防ぐために(新しいスナップショット番号は、リタイヤするスナップショット番号と同じであるから)、7つのスナップショットのみが取られることが可能にされ得、最後の(8番目の)スナップショットはリタイヤするスナップショットである。ハッシュテーブルは、バックグラウンド活動として調べられ(walked)得る。
スナップショットを作成するために、主たるCATがアップデートされているときはいつでも、第2のCATゾーンが書き込まれ得る。これらのアップデートはキューに入れられ得、シャドー(shadow)CATは別のタスクとしてアップデートされ得る。スナップショットするために、シャドーCATはスナップショットCATになる。
ひとたびスナップショットが行われると、新しいスナップショットCATになる新しいゾーンにこのスナップショットテーブルをコピーするために、バックグランドプロセスが開始され得る。CATのコピーが完了するまではシャドーCATキューが処理されないように、キューが使用され得る。万一、シャドーCATをアップデートする前に故障が生じた場合には(この場合にはキューにおけるエントリが失われ得る)、アレイがオンラインにされる前に、主たるCATテーブルからの再シャドーが実行され得る。
代替的に、スナップショットが必要とされるときに、最初のCATコピーがプラスされた「デルタ」の収集がスナップショットを構成し得る。次に、バックグランドタスクが、この情報から完全なスナップショットCATを再構成し得る。このことは、スナップショットを行うためにダウンタイムをほとんどあるいはまったく必要とし得ない。一方、デルタの別のセットが、次のスナップショットのために収集され得る。
上述のように、いわゆる「ガーベッジコレクタ」は、ホストファイルシステムによってもはや使用されないクラスタを解放するために使用され得る(たとえばファイルが削除されるとき)。一般的に言って、ガーベッジ収集は、使用されていないブロックを見出し、それらのホストLSAを計算し、LSAに基づいてそれらのCATエントリの場所を突き止めることによって働く。特定のLSAについてCATエントリがない場合には、クラスタはすでに使用されていない。しかし、CATエントリの場所が突き止められる場合には、参照カウントが増加され、カウントがゼロに当たる場合にクラスタが解放される。
ガーベッジ収集の一つの問題は、ホストファイルシステムが使用しているブロックと、すでに使用され、ある時点で使用されていないとしてマークされたブロックとを区別することが難しくあり得ることである。ホストファイルシステムがブロックを書き込むときに、格納システムは、データのクラスタならびにそれを記述するCATエントリを割当てる。その時点から、たとえホストファイルシステムが次にそのブロックの使用を停止したとしても、一般的にクラスタは使用されているように見える(すなわち、クラスタは有効なCATエントリとともにまだ使用されている)。
たとえば、特定のホストファイルシステムは、使用されたディスクブロックを追跡するためにビットマップを使用する。最初は、ビットマップは、たとえばすべてのビットをクリアすることによって、すべてのブロックが使用されていないことを示す。ファイルシステムが使用されると、ホストファイルシステムは、使用されていないブロックビットマップを使用することによって、ブロックを割当てる。格納システムは、クラスタおよびCATエントリを以前に概略された(outlined)ものとして割当てることによって、物理的格納をこれらのファイルシステム割当てと関連づける。ホストファイルシステムが、一部のブロックを、使用されていないプールに解除するときに、使用されていないブロックビットマップにおける対応するビットをクリアする必要が単にある。格納システムの上で、このことは、ホストの使用されていないブロックビットマップの一部をたまたま含むクラスタへの書き込みとして、一般的に明らかにされ、おそらく解放された実際のクラスタに対するI/Oがない(しかし、たとえば、ホストファイルシステムが一部の強化されたセキュリティーモードで実行している場合には、解放されたクラスタに対するI/Oがあり得、その場合には、長期経過の(stale)クラスタコンテンツが攻撃者によって読み出され得る可能性を低減させるために、ゼロまたはランダムデータのクリプトストロングハッシュ(crypto strong hash)をクラスタにおそらく書き込み得る)。さらに、ホストファイルシステムが、新しい割当てリクエストを満たすときに以前に解放したブロックを再使用するという保証はない。したがって、ホストファイルシステムが、格納システムの観点から、新しい、すなわち以前に再使用されたブロックを割当て続ける場合には、格納システムは、使用されていないクラスタをすぐに使い果たしてしまい、圧縮によって再生され得るどんなスペースにも左右される。たとえば、ファイルシステムブロックが4kであると想定すると、ホストが、ファイルシステムブロック100〜500を割当て、次に使用されていないブロック300〜500を割当て、次にブロック1000〜1100を割当てる場合には、合計のファイルシステム使用は300ブロックになり、それでもアレイは500クラスタを使用する。
本発明の例示的な実施形態において、格納システムは、ホストファイルシステムのレイアウトにアクセスし、その使用されていないブロックビットマップを分析し、ファイルシステムによってもはや使用されていないクラスタを特定するためにその情報を使用することによって、ホストファイルシステムのディスクリソースの解放を検出し得る。格納システムが未使用のクラスタをこのように特定できるためには、格納システムは、ファイルシステムの使用されていないブロックビットマップの場所を突き止めて理解することができなければならない。したがって、格納システムは、所定のセットのファイルシステムを一般的にサポートし、格納システムは、ファイルシステムについて、使用されていないブロックビットマップの場所を突き止めて利用するのに十分なほど内部の働きを「理解」する。サポートされないファイルシステムについては、格納システムは、おそらくガーベッジ収集を実行することができず、したがって、過剰にコミットされることを回避するために、アレイの実際の物理的サイズの公示のみをするべきである。
ファイルシステムタイプ(たとえば、NTFS、FAT、ReiserFS、ext3)を決定するために、ファイルシステムのスーパーブロック(または同等の構造)の場所が突き止められる必要がある。スーパーブロックを見出すために、パーティションテーブルが分析されて、OSパーティションの場所を突き止める。OSパーティションの場所が突き止められると想定すると、スーパーブロックの場所を突き止める目的のために、OSパーティションが分析され、それによってファイルシステムタイプを特定する。ひとたびファイルシステムタイプがわかると、使用されていないブロックビットマップを見出すために、レイアウトが分析され得る。
使用されていないブロックの検索を容易にするために、たとえば、非公式の非冗長ゾーンに格納され得る使用されていないブロックビットマップのコピーを作り、そのコピーを使用して検索を実行することによって、ホストファイルシステムビットマップの履歴データが保たれ得る。ビットマップのサイズを考慮すれば、情報は、ビットマップ全体についてではなく、一度に比較的少数のクラスタについて保たれ得る。ガーベッジ収集が実行されるときに、現在の使用されていないブロックビットマップが、クラスタごとに履歴コピーと比較され得る。割当てられた状態から使用されない状態へと移行する任意のビットマップエントリが特定され得、ごみあさりをする(scavenging)操作が、再使用の良い候補であるクラスタに正確に向けられることを可能にする。それぞれのビットマップクラスタが処理されると、ビットマップ操作の経過する履歴を維持するために、履歴コピーが現在のコピーと置き換えられ得る。時間が経つにつれて、使用されていないブロックビットマップのコピーは、時間的にばらばらなクラスタの寄せ集めになるが、使用されていないエントリの場所を突き止めるために、現在のコピーがつねに使用されるので、このことは何の問題も引き起こさない。
特定の条件下で、たとえば、ホストファイルシステムが、使用されていないブロックビットマップを使用してディスクブロックを割当て、次にデータブロックを書き込み、次に変更されたビットマップをディスクに流し戻す場合には、使用されていないブロックビットマップに関する競争状態があり得る。そのような場合には、たとえファイルシステムがクラスタを使用中であるとしても、ガーベッジコレクタがクラスタを解放し得る。このことはファイルシステムの破損につながり得る。格納システムは、そのような条件を回避または処理するようにインプリメントされるべきである。
ガーベッジ収集はかなり高価な操作であり得、軽量のごみあさりがバックエンドI/O帯域幅を消費するので、ガーベッジ収集は過剰に使用されるべきではない。ガーベッジコレクタは、軽いバックグランドの遅いごみあさりから、積極的で重量の、または高優先度でさえあるごみあさりにわたる、いくつかのモードにおいて実行することができるべきである。たとえば、ガーベッジコレクタは、スペースの30%が使用されるときに、または少なくとも週に一回、軽く実行され得、スペースの50%が使用されるときに、やや激しく実行され得、ディスクスペースの90%以上が使用されるときに、すっかり高優先度のごみあさりで実行され得る。ガーベッジコレクタの積極性は、再利用するクラスタの目標数に限定することによって、およびおそらくそれぞれの収集実行について最大の許容できるI/Oカウントに限定することによって、制御され得る。たとえば、ガーベッジコレクタは、わずか10,000のI/Oを使用して1GBを再使用するように構成され得る。再利用リクエストを達成できなかったことは、次回に実行されるときにより積極的に操作するように、コレクタへのフィードバックとして使用され得る。ガーベッジコレクタがホストファイルシステム全体の使用されていないブロックビットマップを分析することと、おそらく可能なすべてのブロックを再使用することとの許可を、ガーベッジコレクタに与える、「すべて再使用」モードもあり得る。これは、アレイが(ほとんど)完全に満杯であるときに、クラスタを再使用する最後の試みとして行われ得る。ガーベッジコレクタは、そのルールを適用するために定期的に実行され得、ごみあさり操作を実行することを決定し得るかまたはし得ない。ごみあさり操作は、別のモジュール(たとえば領域マネジャーが領域を構築するためにクラスタを見出そうと努力しているときの領域マネジャー)から明示的に要求されることもできるべきである。
ガーベッジ収集機能は、状態インジケータメカニズムの中に結びつけられ得る。たとえば、ある時点において、格納システムは「赤色」状態にあり得るが、進行中のガーベッジ収集操作は「赤色」状態を消去するのに十分なスペースを解放し得る。関連する状態情報を示すために、追加のインジケータ状態が使用され得る(たとえば、赤色インジケータは、ガーベッジ収集操作が進行中であることを示すように点滅させられ得る)。
図21は、本発明の例示的な実施形態に従った、格納アレイの関連するコンポーネントを示す模式的なブロック図である。なかでも、格納アレイは、シャーシ2502を含み、格納マネジャー2504はシャーシ2502を介して複数の格納デバイス2508〜2508と通信し、格納デバイス2508〜2508はそれぞれ複数のスロット2506〜2506を通してシャーシに結合される。それぞれのスロット2506〜2506は、一つ以上のインジケータ2507〜2507と関連づけられ得る。なかでも、格納マネジャー2504は、上述の機能性をインプリメントするための種々のハードウェアおよびソフトウェアのコンポーネントを一般的に含む。ハードウェアコンポーネントは、プログラムコード、データ構造、およびデータを格納するためのメモリ、ならびにプログラムコードを実行するためのマイクロプロセッサシステムを一般的に含む。
(仮想ホットスペア)
上述のように、多くの格納システムにおいて、ホットスペア格納デバイスが作動可能状態において維持されるので、別の格納デバイスが故障した場合に迅速にオンラインにされ得る。本発明の特定の実施形態において、物理的に別個のホットスペアを維持するのではなく、複数の格納デバイスにわたる未使用の格納容量から、仮想ホットスペアが作成される。物理的なホットスペアとは異なり、この未使用の格納容量は、格納デバイスが残りの格納デバイスから回復されたデータを格納できない場合に利用可能である。
仮想ホットスペア機構は、ディスク故障の際にデータが冗長に再レイアウトされ得ることを保証するために、アレイの上に十分なスペースが利用可能であることを必要とする。したがって、進行中の方法で、格納システムは、一般的に、仮想ホットスペアのインプリメンテーションのために必要とされる未使用の格納容量の量を決定し(たとえば、格納デバイスの数、種々の格納デバイスの容量、格納されるデータの量、およびデータが格納される方法に基づいて)、仮想ホットスペアのために追加の格納容量が必要とされる場合に信号を発生する(たとえば、実質的に上述のような状態およびスロットを示す緑色/黄色/赤色のライトを使用して)。ゾーンが割当てられると、ディスクごとにそのゾーンを再レイアウトするためにいくつの領域が必要とされるかについての記録が保たれる。以下の表は、4つのドライブが使用される仮想ホットスペアを示す。
Figure 0005116151
Figure 0005116151
以下の表は、3つのドライブが使用される仮想ホットスペアを示す。
Figure 0005116151
この例示的な実施形態において、仮想ホットスペアは、1つまたは2つのドライブのみを有するアレイの上では利用可能ではない。それぞれのゾーンと、アレイにおけるディスクの数とに関する情報に基づいて、アレイは、それぞれのあり得るディスク故障について再レイアウトのシナリオを決定し、それぞれのシナリオについてそれぞれのドライブの上で十分なスペースが利用可能であることを保証する。生成される情報は、再レイアウトエンジンおよびゾーンマネジャーにフィードバックされ得るので、データは、データ格納とホットスペア機構との間で正しくバランスを取られ得る。ホットスペア機構は、再レイアウトが生じ得るように、ゾーンレイアウトデータから計算されるものに加えて、十分なスペアワーキングスペース領域を必要とすることに留意されたい。
図22は、本発明の例示的な実施形態に従った、仮想ホットスペアを管理するための例示的な論理を示す論理フロー図である。ブロック2102において、論理は、それぞれのあり得るディスク故障について再レイアウトのシナリオを決定する。ブロック2104において、論理は、最悪の事態のシナリオにおいてデータを冗長に再レイアウトするためにそれぞれのドライブの上で必要とされるスペースの量を決定する。ブロック2106において、論理は、最悪の事態のシナリオにおいてデータを冗長に再レイアウトするために必要とされるスペアワーキングスペース領域の量を決定する。ブロック2108において、論理は、最悪の事態のシナリオにおいてデータを冗長に再レイアウトすることを可能にするためにそれぞれのドライブの上で必要とされるスペースの総量を決定する(基本的に、再レイアウトのために必要とされるスペースの量と、必要とされるスペアワーキングスペース領域の量との合計)。ブロック2110において、論理は、格納システムが適切な大きさの利用可能な格納デバイスを含むかどうかを決定する。適切な大きさの利用可能な格納デバイスがある場合には(ブロック2112における「はい」)、論理反復はブロック2199において終了する。しかし、不適切な大きさの利用可能な格納装置がある場合には(ブロック2112における「いいえ」)、論理は、ブロック2114において、どのドライブ/スロットがアップグレードを必要とするかを決定する。次に、ブロック2116において、論理は、追加の格納スペースが必要とされるという信号を出し、どのドライブ/スロットがアップグレードを必要とするかを示す。論理反復は、ブロック2199において終了する。
図23は、本発明の例示的な実施形態に従った、図22のブロック2102におけるような、それぞれのあり得るディスク故障について再レイアウトのシナリオを決定するための例示的な論理を示す論理フロー図である。ブロック2202において、論理はゾーンを割当てる。次に、ブロック2204において、論理は、ディスクごとにそのゾーンを再レイアウトするためにいくつの領域が必要とされるかを決定する。論理反復は、ブロック2299において終了する。
図24は、本発明の例示的な実施形態に従った、仮想ホットスペア機能を呼び出すための例示的な論理を示す論理フロー図である。ブロック2302において、論理は、最悪の事態のシナリオの際にデータを冗長に再レイアウトすることを可能にするために利用可能な格納の十分な量を維持する。ブロック2304においてドライブの損失(たとえば取り外しまたは故障)を決定すると、論理は、ブロック2306において、データの故障許容を復元するために、一つ以上の残りのドライブを自動的に再構成する。論理反復は、ブロック2399において終了する。
図25は、本発明の例示的な実施形態に従った、図24のブロック2306におけるような、データの故障許容を復元するために一つ以上の残りのドライブを自動的に再構成するための例示的な論理を示す論理フロー図である。ブロック2402において、論理は、4つ以上の格納デバイスにわたる第1のストライピングパターンを、3つ以上の残りの格納デバイスにわたる第2のストライピングパターンに変換し得る。ブロック2404において、論理は、3つの格納デバイスにわたるストライピングパターンを、残りの2つの格納デバイスにわたるミラリングパターンに変換し得る。もちろん、論理は、ドライブの損失の後でデータを冗長に再レイアウトするために、他の方法でパターンを変換し得る。論理反復は、ブロック2499において終了する。
再び図21を参照すると、格納マネジャー2504は、上述のような仮想ホットスペア機能をインプリメントするための適切なコンポーネントおよび論理を一般的に含む。
(動的アップグレード)
格納の動的な拡大および縮小を処理するための上述の論理は、動的にアップグレード可能なシステムを提供するように延長され得る。該システムにおいて、格納デバイスは必要に応じてより大きな格納デバイスと置き換えられ得、冗長性が維持または拡張されて、なおかつより大きな格納デバイスによって提供される追加の格納スペースが、複数の格納デバイスにわたる利用可能な格納スペースのプールに含まれるように、既存のデータが格納デバイスにわたって自動的に再構成される。したがって、より小さな格納デバイスがより大きな格納デバイスに置き換えられるときに、すでに格納されたデータの冗長性を改善するため、ならびに追加のデータを格納するために、追加の格納スペースが使用され得る。より多くの格納スペースが必要とされるときはいつでも、適切な信号がユーザに提供され(たとえば実質的に上述のような緑色/黄色/赤色のライトを使用して)、ユーザは単に格納デバイスを取り外し得、それをより大きな格納デバイスと置き換え得る。
図26は、本発明の例示的な実施形態に従った、格納デバイスをアップグレードするための例示的な論理を示す論理フロー図である。ブロック2602において、論理は、第1の格納デバイスの上のデータを、その上に格納されたデータが他の格納デバイスの上で冗長に見えるように、格納する。ブロック2604において、論理は、第1の格納デバイスが、第1の格納デバイスよりも大きな格納容量を有する置換用デバイスと置き換えられたことを検出する。ブロック2606において、論理は、第1のデバイスの上に格納されたデータを、他のデバイスの上に冗長に格納されたデータを使用して、置換用デバイスの上に自動的に複写する。ブロック2608において、論理は、新しいデータを冗長に格納するために利用可能な置換用デバイスの上に、追加の格納スペースを作る。ブロック2610において、新しいデータに冗長性を提供するために利用可能な十分な量の格納容量を有するデバイスが他にない場合には、論理は、置換用デバイスの上の追加の格納スペースの中に、新しいデータを冗長に格納し得る。ブロック2612において、少なくとも一つの他のデバイスが、新しいデータに冗長性を提供するために利用可能な十分な量の格納容量を有する場合には、論理は、複数の格納デバイスにわたって新しいデータを冗長に格納し得る。
再び図21を参照すると、格納マネジャー2504は、上述のような動的アップグレード機能をインプリメントするための適切なコンポーネントおよび論理を一般的に含む。
(その他)
本発明の実施形態は、本明細書において全体が参照により援用されている、Geoffrey S.Barralの名義で2004年11月5日に出願された米国仮特許出願第60/625,495号に記述される態様で、周辺接続プロトコルを使用して、格納容量をホストコンピュータに提供するように使用され得る。
ハッシュアルゴリズムは、厳密に一意のハッシュ値を生成し得ないことが留意されるべきである。したがって、ハッシュアルゴリズムが、同一でないコンテンツを有するデータの2つのチャンクに対して、同じハッシュ値を生成することが考えられる。(ハッシュアルゴリズムを一般的に取り入れる)ハッシュ関数は、一意性を確認するメカニズムを一般的に含む。たとえば、上述のような本発明の例示的な実施形態において、一つのチャンクのハッシュ値が別のチャンクのハッシュ値と異なる場合には、これらのチャンクのコンテンツは同一でないと考えられる。しかし、一つのチャックのハッシュ値が別のチャンクのハッシュ値と同じである場合には、コンテンツが同一であるか同一でないかを決定するために、ハッシュ関数は、2つのチャンクのコンテンツを比較し得るか、または何らかの他のメカニズムを利用し得る(たとえば異なるハッシュ関数)。
論理フロー図は、本発明の種々の局面を示すために本明細書中で使用されるものであり、本発明を任意の特定の論理フローまたは論理インプリメンテーションに限定するものと解釈されるべきではないことが留意されるべきである。記載される論理は、全般的な結果を変化させることなく、またはさもなければ本発明の真の範囲から逸脱することなく、異なる論理ブロック(たとえば、プログラム、モジュール、機能、またはサブルーチン)に分割され得る。全般的な結果を変化させることなく、またはさもなければ本発明の真の範囲から逸脱することなく、しばしば、時間および論路要素が、追加され得、変更され得、省略され得、異なる順序で実行され得、または異なる論理構成を使用してインプリメントされ得る(たとえば、論理ゲート、ルーピング基本命令、条件付き論理、および他の論理構成)。
本発明は、プロセッサ(たとえば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、または汎用コンピュータ)とともに使用するコンピュータプログラム、プログラム可能論理デバイスとともに使用するプログラマブルロジック(たとえば、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array)(FPGA)、または他のPLD)、個別のコンポーネント、集積回路(たとえば、特定用途向けIC(Application Specific Integrated Circuit)(ASIC)、またはこれらの任意の組み合わせを含む任意の他の手段を含むが決してこれらに限定されない多くの異なる形で具体化され得る。
本明細書中にこれまで記載された機能性のすべてまたは一部をインプリメントするコンピュータプログラム論理は、ソースコードの形態、コンピュータ実行可能な形態、および種々の中間的な形態(たとえば、アセンブラ、コンパイラ、リンカ、またはロケータ)を含むが決してそれらに限定されない、種々の形において具体化され得る。ソースコードは、種々のオペレーティングシステムまたはオペレーティング環境とともに使用する、種々のプログラミング言語(たとえば、オブジェクトコード、アセンブリ言語、またはFortran、C、C++、JAVA(登録商標)、またはHTML)のいずれかにおいてインプリメントされる一連のコンピュータプログラム命令を含み得る。ソースコードは、種々のデータ構造および通信メッセージを定義および使用し得る。ソースコードはコンピュータ実行可能な形態(たとえば、インタプリタを介して)であり得、あるいはソースコードはコンピュータ実行可能な形態に変換され得る(たとえば、翻訳プログラム(translator)、アセンブラ、またはコンパイラを介して)。
コンピュータプログラムは、半導体メモリデバイス(たとえば、RAM、ROM、PROM、EEPROM、またはフラッシュプログラム可能RAM)、磁気メモリデバイス(たとえばディスケットまたは固定ディスク)、光メモリデバイス(たとえば、CD−ROM)、PCカード(たとえば、PCMCIAカード)、または他のメモリデバイスなどの有形の格納媒体において、永久的または一時的に、任意の形態(たとえば、ソースコードの形態、コンピュータ実行可能な形態、または中間的な形態)で固定され得る。コンピュータプログラムは、アナログテクノロジー、デジタルテクノロジー、光学テクノロジー、ワイヤレステクノロジー(たとえば、Bluetooth)、ネットワーキングテクノロジー、およびインターネットワーキングテクノロジーを含むが決してそれらに限定されない、種々の通信テクノロジーのいずれかを使用してコンピュータに送信可能な信号における任意の形態に固定され得る。コンピュータプログラムは、付随する印刷文書または電子文書とともに取り外し可能な格納媒体(たとえば、シュリンクラップソフトウェア)として任意の形態で配布され得るか、コンピュータシステム(たとえば、システムROMまたは固定ディスクの上)に事前ロードされ得るか、または通信システム(たとえば、インターネットまたはワールドワイドウェブ)を介してサーバまたは電子掲示板から配信され得る。
本明細書中にこれまで記載された機能性のすべてまたは一部をインプリメントするハードウェア論理(プログラム可能論理デバイスとともに使用するプログラマブルロジックを含む)は、従来のマニュアル方法を使用して設計され得るか、あるいは計算機援用設計(Computer Aided Design)(CAD)、ハードウェア記述言語(たとえば、VHDLまたはAHDL)、またはPLDプログラミング言語(たとえば、PALASM、ABEL、またはCUPL)などの種々のツールを使用して、設計、キャプチャ、シミュレーション、または電子的文書化をされ得る。
プログラマブルロジックは、半導体メモリデバイス(たとえば、RAM、ROM、PROM、EEPROM、またはフラッシュプログラム可能RAM)、磁気メモリデバイス(たとえば、ディスケットまたは固定ディスク)、光メモリデバイス(たとえば、CD−ROM)、または他のメモリデバイスなどの、有形の格納媒体において、永久的または一時的に固定され得る。プログラマブルロジックは、アナログテクノロジー、デジタルテクノロジー、光学テクノロジー、ワイヤレステクノロジー(たとえば、Bluetooth)、ネットワーキングテクノロジー、およびインターネットワーキングテクノロジーを含むが決してそれらに限定されない、種々の通信テクノロジーのいずれかを使用してコンピュータに送信可能な信号に固定され得る。プログラマブルロジックは、付随する印刷文書または電子文書とともに取り外し可能な格納媒体(たとえば、シュリンクラップ(shrink wrapped)ソフトウェア)として配布され得るか、コンピュータシステム(たとえば、システムROMまたは固定ディスクの上)に事前ロードされ得るか、または通信システム(たとえば、インターネットまたはワールドワイドウェブ)を介してサーバまたは電子掲示板から配信され得る。
本出願は、以下の米国特許出願に関連し、それらは本明細書と同じ日付で出願され、参照によりそれらの全体が本明細書に援用されている:
「Dynamically Expandable and Contractible Fault−Tolerant Storage System Permitting Variously Sized Storage Devices and Method」というタイトルの、代理人整理番号2950/103;
「Dynamically Upgradeable Fault−Tolerant Storage System Permitting Variously Sized Storage Devices and Method」というタイトルの、代理人整理番号2950/104;および
「Storage System Condition Indicator and Method」というタイトルの、代理人整理番号2950/107。
本発明は、本発明の真の範囲から逸脱することなく、他の特定の形において具体化され得る。記載された実施形態は、あらゆる点で、説明的なものとしてのみ考えられ、限定的なものとしては考えられない。
図1は、格納のためにオブジェクトが一連のチャンクに分析される、本発明の実施形態の図示である。 図2aおよび図2bは、同じ実施形態において、より多くの格納デバイスの追加の結果として、チャンクのための故障許容格納のパターンがどのように動的に変化させられ得るかを図示する。 図2aおよび図2bは、同じ実施形態において、より多くの格納デバイスの追加の結果として、チャンクのための故障許容格納のパターンがどのように動的に変化させられ得るかを図示する。 図3は、本発明のさらなる実施形態において、異なるサイズの格納デバイスを使用して構築された格納システムの上の異なる故障許容パターンにおけるチャンクの格納を図示する。 図4a、図4bおよび図4cは、非効率な格納の使用および低レベルの故障許容を警告するためにインジケータ状態が使用される、本発明の別の実施形態を図示する。 図4a、図4bおよび図4cは、非効率な格納の使用および低レベルの故障許容を警告するためにインジケータ状態が使用される、本発明の別の実施形態を図示する。 図4a、図4bおよび図4cは、非効率な格納の使用および低レベルの故障許容を警告するためにインジケータ状態が使用される、本発明の別の実施形態を図示する。 図5は、本発明の実施形態に従った、データの格納、検索および再レイアウトにおいて使用される機能性モジュールのブロック図である。 図6は、2つ以上のドライブを含むアレイにおいてミラリングが使用される例を示す。 図7は、異なるレイアウトスキームを使用してデータを格納するいくつかの例示的なゾーンを示す。 図8は、スパースボリュームをインプリメントするためのルックアップテーブルを示す。 図9は、本発明の例示的な実施形態に従った、利用可能な格納スペースを有し、かつ故障許容の方法で作動する、例示的なアレイのための、状態インジケータを示す。 図10は、本発明の例示的な実施形態に従った、冗長データ格納を維持するために十分なスペースを有せず、より多くのスペースが追加されなければならない、例示的なアレイの状態インジケータを示す。 図11は、本発明の例示的な実施形態に従った、故障の際に冗長データを維持することができ得ない例示的なアレイの状態インジケータを示す。 図12は、本発明の例示的な実施形態に従った、格納デバイスが故障した例示的なアレイの状態インジケータを示す。スロットB、CおよびDに、格納デバイスが配置されている。 図13は、例示的な実施形態の異なるソフトウェアレイヤを表すモジュール階層と、それらが互いにどのように関係するかとを示す。 図14は、本発明の例示的な実施形態に従って、ゾーンにおけるデータクラスタにアクセスするためにクラスタアクセステーブルがどのように使用されるかを示す。 図15は、本発明の例示的な実施形態に従ったジャーナルテーブルアップデートを示す。 図16は、本発明の例示的な実施形態に従ったドライブレイアウトを示す。 図17は、本発明の例示的な実施形態に従った、ゾーン0のレイアウトと、他のゾーンがどのように参照されるかとを示す。 図18は、本発明の例示的な実施形態に従った読み出しエラー処理を示す。 図19は、本発明の例示的な実施形態に従った書き込みエラー処理を示す。 図20は、本発明の例示的な実施形態に従った、エラーマネジャーによる不良領域のバックアップを示す論理フロー図である。 図21は、本発明の例示的な実施形態に従った格納アレイの関連コンポーネントを示す模式的なブロック図である。 図22は、本発明の例示的な実施形態に従った、仮想ホットスペアを管理するための例示的な論理を示す論理フロー図である。 図23は、本発明の例示的な実施形態に従った、図22のブロック2102におけるような、それぞれのあり得るディスク故障について再レイアウトシナリオを決定するための例示的な論理を示す論理フロー図である。 図24は、本発明の例示的な実施形態に従った、仮想ホットスペア機能を呼び出すための例示的な論理を示す論理フロー図である。 図25は、本発明の例示的な実施形態に従った、図24のブロック2306におけるような、データの故障許容を復元する一つ以上の残りのドライブを自動的に再構成するための例示的な論理を示す論理フロー図である。 図26は、本発明の例示的な実施形態に従った、格納デバイスをアップグレードするための例示的な論理を示す論理フロー図である。

Claims (28)

  1. 複数の格納デバイスを有する格納デバイスのセットからの格納デバイスの損失から回復する方法であって
    該方法は、
    単一の格納デバイス内にデータをミラリングすることなく該格納デバイスのセットにおける複数の格納デバイスにわたって故障許容の態様で該データを格納することと、
    該セットからの該格納デバイスの損失であって、一つ以上の残りの格納デバイスを有する減少したセットに帰結する損失の際に、該減少したセットの中の情報を使用して該データの部分を自動的に再構成することによって該減少したセット内に該部分を故障許容の態様で格納することであって、該再構成することは、該減少したセットが単一の格納デバイスのみを含む場合には、該単一の格納デバイス内にミラリングを用いて該部分を故障許容の態様で格納することを含む、ことと
    を包含する、方法。
  2. 複数の格納デバイスを有する格納デバイスのセットからの格納デバイスの損失から回復する方法であって
    該方法は、
    単一の格納デバイス内にデータをミラリングすることなく該格納デバイスのセットにおける複数の格納デバイスにわたって故障許容の態様で該データを格納することと、
    該セットからの該格納デバイスの損失であって、一つ以上の残りの格納デバイスを有する減少したセットに帰結する損失の際に、該減少したセットの中の情報を使用して該データの部分を自動的に再構成することによって該減少したセット内に該部分を故障許容の態様で格納することであって、該再構成することは、故障許容を提供するための格納スペースが単一の格納デバイスのみで利用可能である場合には、該単一の格納デバイス内にミラリングを用いて該部分を故障許容の態様で格納することを含む、ことと
    を包含する、方法。
  3. 前記複数の格納デバイスにわたって故障許容の態様で前記データを格納することが、ミラリング、パリティを用いたストライピング、RAID6、二重パリティ、対角線パリティ、低密度パリティチェックコード、およびターボコードのうちの少なくとも一つを包含する、請求項1または2に記載の方法。
  4. 前記自動的に再構成することが、4つ以上の格納デバイスにわたる第1のストライピングパターンを、3つ以上の残りの格納デバイスにわたる第2のストライピングパターンに変換することを包含する、請求項1または2に記載の方法。
  5. 前記自動的に再構成することが、3つの格納デバイスにわたるストライピングパターンを、2つの残りの格納デバイスにわたるミラリングパターンに変換することを包含する、請求項1または2に記載の方法。
  6. 前記自動的に再構成することが、2つの格納デバイスにわたるミラリングパターンを、単一の格納デバイスの上のミラリングパターンに変換することを包含する、請求項1または2に記載の方法。
  7. 前記自動的に再構成することが、格納デバイスの第1のペアにわたるミラリングパターンを、格納デバイスの第2のペアにわたるミラリングパターンに変換することを包含する、請求項1または2に記載の方法。
  8. 前記自動的に再構成することが、一つの格納デバイスの上のミラリングパターンを、別の格納デバイスの上のミラリングパターンに変換することを包含する、請求項1または2に記載の方法。
  9. 前記複数の格納デバイスが前記自動的な再構成を可能にするための適切な量の利用可能な格納スペースを含むかどうかを決定することをさらに包含する、請求項1または2に記載の方法。
  10. 前記複数の格納デバイスが前記自動的な再構成を可能にするための適切な量の利用可能な格納スペースを含むかどうかを決定することが、
    複数のあり得る故障状態の各々についての再構成シナリオを決定することと、
    該自動的な再構成を可能にするために、各格納デバイスの上で必要とされる格納スペースの総量を決定することと
    を包含する、請求項9に記載の方法。
  11. 前記必要とされる格納スペースの総量を決定することが、
    データの故障許容格納のために各格納デバイスの上で必要とされるスペースの量を決定することと、
    必要とされるスペアワーキングスペース領域の量を決定することと
    を包含する、請求項10に記載の方法。
  12. 前記複数の格納デバイスが不適切な量の利用可能な格納スペースを含む場合に、追加の格納が必要とされることを示すために信号を生成することをさらに包含する、請求項9に記載の方法。
  13. 前記信号を生成することが、インジケータの状態を変化させることを包含する、請求項12に記載の方法。
  14. 前記複数の格納デバイスが、複数のスロットを有するアレイにインストールされ、
    前記信号を生成することが、該アレイのどのスロットに追加の格納容量が配置されるべきかを決定し、該スロットを示すことを包含する、請求項12に記載の方法。
  15. 格納システムであって、
    複数の格納デバイスを含む格納デバイスのセットと、
    単一の格納デバイス内にデータをミラリングすることなく該格納デバイスのセットにおける複数の格納デバイスにわたって故障許容の態様で該データを格納する格納マネジャーと
    を備え、
    該セットからの該格納デバイスの損失であって、一つ以上の残りの格納デバイスを有する減少したセットに帰結する損失に際し、該格納マネジャーは、該減少したセットの中の情報を使用して該データの部分を自動的に再構成することによって該減少したセット内に該部分を故障許容の態様で格納し、該再構成することは、該減少したセットが単一の格納デバイスのみを含む場合には、該単一の格納デバイス内にミラリングを用いて該部分を故障許容の態様で格納することを含む、格納システム。
  16. 格納システムであって、
    複数の格納デバイスを含む格納デバイスのセットと、
    単一の格納デバイス内にデータをミラリングすることなく該格納デバイスのセットにおける複数の格納デバイスにわたって故障許容の態様で該データを格納する格納マネジャーと
    を備え、
    該セットからの該格納デバイスの損失であって、一つ以上の残りの格納デバイスを有する減少したセットに帰結する損失に際して、該格納マネジャーは、該減少したセットの中の情報を使用して該データの部分を自動的に再構成することによって該減少したセット内に該部分を故障許容の態様で格納し、該再構成することは、故障許容を提供するための格納スペースが単一の格納デバイスのみで利用可能である場合には、該単一の格納デバイス内にミラリングを用いて該部分を故障許容の態様で格納することを含む、格納システム。
  17. 前記格納マネジャーが、ミラリング、パリティを用いたストライピング、RAID6、二重パリティ、対角線パリティ、低密度パリティチェックコード、およびターボコードのうちの少なくとも一つを使用して、前記複数の格納デバイスにわたって故障許容の態様で前記データを格納する、請求項15または16に記載の格納システム。
  18. 前記格納マネジャーが、4つ以上の格納デバイスにわたる第1のストライピングパターンを、3つ以上の残りの格納デバイスにわたる第2のストライピングパターンに変換する、請求項15または16に記載の格納システム。
  19. 前記格納マネジャーが、3つの格納デバイスにわたるストライピングパターンを、2つの残りの格納デバイスにわたるミラリングパターンに変換する、請求項15または16に記載の格納システム。
  20. 前記格納マネジャーが、2つの格納デバイスにわたるミラリングパターンを、単一の格納デバイスの上のミラリングパターンに変換する、請求項15または16に記載の格納システム。
  21. 前記格納マネジャーが、格納デバイスの第1のペアにわたるミラリングパターンを、格納デバイスの第2のペアにわたるミラリングパターンに変換する、請求項15または16に記載の格納システム。
  22. 前記格納マネジャーが、一つの格納デバイスの上のミラリングパターンを、別の格納デバイスの上のミラリングパターンに変換する、請求項15または16に記載の格納システム。
  23. 前記格納マネジャーが、前記複数の格納デバイスが前記自動的な再構成を可能にするための適切な量の利用可能な格納スペースを含むかどうかを決定する、請求項15または16に記載の格納システム。
  24. 前記格納マネジャーが、
    複数のあり得る故障状態の各々についての再構成シナリオを決定し、
    前記自動的な再構成を可能にするために、各格納デバイスの上で必要とされる格納スペースの総量を決定する、請求項23に記載の格納システム。
  25. 前記格納マネジャーが、
    データの故障許容格納のために各格納デバイスの上で必要とされるスペースの量を決定することと、必要とされるスペアワーキングスペース領域の量を決定することとによって、必要とされる格納スペースの総量を決定する、請求項24に記載の格納システム。
  26. 前記格納マネジャーが、前記複数の格納デバイスが不適切な量の利用可能な格納スペースを含む場合に、追加の格納が必要とされることを示す信号を生成する、請求項23に記載の格納システム。
  27. 前記格納マネジャーが、インジケータの状態を変化させることによって信号を生成する、請求項26に記載のシステム。
  28. 前記複数の格納デバイスが、複数のスロットを有するアレイにインストールされ、
    前記格納マネジャーが、該アレイのどのスロットに追加の格納容量が配置されるべきかを決定し、該スロットを示す、請求項26に記載の格納システム。
JP2007540027A 2004-11-05 2005-11-04 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム Expired - Fee Related JP5116151B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US62549504P 2004-11-05 2004-11-05
US60/625,495 2004-11-05
US71876805P 2005-09-20 2005-09-20
US60/718,768 2005-09-20
PCT/US2005/039795 WO2006050455A2 (en) 2004-11-05 2005-11-04 Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011126796A Division JP2011198383A (ja) 2004-11-05 2011-06-06 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム

Publications (2)

Publication Number Publication Date
JP2008519350A JP2008519350A (ja) 2008-06-05
JP5116151B2 true JP5116151B2 (ja) 2013-01-09

Family

ID=36203290

Family Applications (5)

Application Number Title Priority Date Filing Date
JP2007540027A Expired - Fee Related JP5116151B2 (ja) 2004-11-05 2005-11-04 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム
JP2007540108A Expired - Fee Related JP5055125B2 (ja) 2004-11-05 2005-11-04 種々のサイズの格納デバイスを許容する動的にアップグレード可能な故障許容格納システムおよび方法
JP2007540136A Expired - Fee Related JP4950897B2 (ja) 2004-11-05 2005-11-04 種々のサイズの格納デバイスを可能にする動的に拡張可能かつ縮小可能な故障許容格納システム、および方法
JP2007540109A Expired - Fee Related JP4870678B2 (ja) 2004-11-05 2005-11-04 格納システム状態インジケータおよび方法
JP2011126796A Withdrawn JP2011198383A (ja) 2004-11-05 2011-06-06 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム

Family Applications After (4)

Application Number Title Priority Date Filing Date
JP2007540108A Expired - Fee Related JP5055125B2 (ja) 2004-11-05 2005-11-04 種々のサイズの格納デバイスを許容する動的にアップグレード可能な故障許容格納システムおよび方法
JP2007540136A Expired - Fee Related JP4950897B2 (ja) 2004-11-05 2005-11-04 種々のサイズの格納デバイスを可能にする動的に拡張可能かつ縮小可能な故障許容格納システム、および方法
JP2007540109A Expired - Fee Related JP4870678B2 (ja) 2004-11-05 2005-11-04 格納システム状態インジケータおよび方法
JP2011126796A Withdrawn JP2011198383A (ja) 2004-11-05 2011-06-06 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム

Country Status (8)

Country Link
US (5) US7814272B2 (ja)
EP (4) EP1825373A2 (ja)
JP (5) JP5116151B2 (ja)
KR (1) KR101146484B1 (ja)
CN (2) CN104699420A (ja)
AU (2) AU2005304759B2 (ja)
CA (2) CA2590875C (ja)
WO (4) WO2006052888A2 (ja)

Families Citing this family (323)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100611109B1 (ko) * 2000-01-14 2006-08-09 삼성전자주식회사 반도체 장치의 콘택홀 검사 방법
US8892878B2 (en) * 2003-05-09 2014-11-18 Oracle America, Inc. Fine-grained privileges in operating system partitions
US7966333B1 (en) 2003-06-17 2011-06-21 AudienceScience Inc. User segment population techniques
US8112458B1 (en) 2003-06-17 2012-02-07 AudienceScience Inc. User segmentation user interface
EP1825373A2 (en) 2004-11-05 2007-08-29 Data Robotics Incorporated Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US8296271B1 (en) 2005-03-28 2012-10-23 Federal Home Loan Mortgage Corporation System and method for optimizing data recovery in a parallel database
US7809752B1 (en) 2005-04-14 2010-10-05 AudienceScience Inc. Representing user behavior information
US7676467B1 (en) 2005-04-14 2010-03-09 AudienceScience Inc. User segment population techniques
JP4723921B2 (ja) * 2005-06-13 2011-07-13 株式会社日立製作所 記憶制御装置及びその制御方法
US8838466B2 (en) * 2005-12-02 2014-09-16 Guard Insurance Group System and method to track the status, physical location, and logical location of workflow objects in a workflow cycle
US7620710B2 (en) * 2005-12-19 2009-11-17 Commvault Systems, Inc. System and method for performing multi-path storage operations
KR100725410B1 (ko) * 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
JP4577242B2 (ja) * 2006-03-10 2010-11-10 日本電気株式会社 データバックアップシステム、データバックアップ方法、及びその動作制御プログラム
US7617361B2 (en) * 2006-03-29 2009-11-10 International Business Machines Corporation Configureable redundant array of independent disks
JP5167243B2 (ja) * 2006-04-04 2013-03-21 パーマビット テクノロジー コーポレイション 拡張性及び耐障害性を有する記憶システムのための記憶領域割当て及び消去符号化技法
JP2008009767A (ja) 2006-06-29 2008-01-17 Hitachi Ltd データ処理システム及びその方法並びにストレージ装置
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
WO2008070173A1 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US20080162915A1 (en) * 2006-12-29 2008-07-03 Price Mark H Self-healing computing system
US20080228828A1 (en) * 2007-03-16 2008-09-18 Microsoft Corporation Management of collections within a 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
US7797489B1 (en) 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
US8201018B2 (en) * 2007-09-18 2012-06-12 Hewlett-Packard Development Company, L.P. Control of sparing in storage systems
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7979635B2 (en) * 2008-02-14 2011-07-12 International Business Machines Corporation Apparatus and method to allocate resources in a data storage library
US20090228823A1 (en) * 2008-03-07 2009-09-10 Microsoft Corporation User interface for portable storage devices
US20090240717A1 (en) * 2008-03-20 2009-09-24 Hitachi, Ltd. Method and apparatus for verifying archived data integrity in integrated storage systems
EP2297742B1 (en) 2008-05-16 2013-07-24 Fusion-io, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US8219524B2 (en) * 2008-06-24 2012-07-10 Commvault Systems, Inc. Application-aware and remote single instance data management
JP2010009442A (ja) * 2008-06-30 2010-01-14 Fujitsu Ltd ディスクアレイシステム、ディスク制御装置及びその再構築処理方法
US8239623B2 (en) * 2008-07-03 2012-08-07 Oracle America, Inc. Scheduling read operations during drive reconstruction in an array of redundant disk drives
GB2463078B (en) * 2008-09-02 2013-04-17 Extas Global Ltd Distributed storage
CA2729078C (en) 2008-09-26 2016-05-24 Commvault Systems, Inc. Systems and methods for managing single instancing data
US9015181B2 (en) 2008-09-26 2015-04-21 Commvault Systems, Inc. Systems and methods for managing single instancing data
US8412677B2 (en) 2008-11-26 2013-04-02 Commvault Systems, Inc. Systems and methods for byte-level or quasi byte-level single instancing
JP5637552B2 (ja) * 2009-02-17 2014-12-10 日本電気株式会社 ストレージシステム
JP5407430B2 (ja) * 2009-03-04 2014-02-05 日本電気株式会社 ストレージシステム
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8171202B2 (en) * 2009-04-21 2012-05-01 Google Inc. Asynchronous distributed object uploading for replicated content addressable storage clusters
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US9009363B2 (en) * 2009-06-12 2015-04-14 Rasilient Systems, Inc. Methods for providing and indicating storage load indexes
CN101923441B (zh) * 2009-06-17 2012-08-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统
KR101674015B1 (ko) 2009-06-23 2016-11-08 시게이트 테크놀로지 엘엘씨 데이터 저장 매체 액세스 방법과 그와 같은 기능을 갖는 데이터 저장 장치 및 기록 매체
US8225135B2 (en) * 2009-07-07 2012-07-17 Drobo, Inc. System and method for protecting users of data storage systems against known problems
JP5040970B2 (ja) 2009-07-24 2012-10-03 富士通株式会社 システム制御サーバ、ストレージシステム、設定方法および設定プログラム
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
US20120143715A1 (en) * 2009-10-26 2012-06-07 Kave Eshghi Sparse index bidding and auction based storage
KR101656102B1 (ko) 2010-01-21 2016-09-23 삼성전자주식회사 컨텐츠 파일 생성/제공 장치 및 방법
US8751738B2 (en) 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
US8271731B2 (en) * 2010-02-26 2012-09-18 Red Hat, Inc. Non blocking rehashing
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9710294B2 (en) 2010-03-17 2017-07-18 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US10649799B2 (en) 2010-03-17 2020-05-12 Zerto Ltd. Hypervisor virtual server system, and method for providing data services within a hypervisor virtual server system
US9442748B2 (en) 2010-03-17 2016-09-13 Zerto, Ltd. Multi-RPO data protection
US11256529B2 (en) 2010-03-17 2022-02-22 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US9389892B2 (en) 2010-03-17 2016-07-12 Zerto Ltd. Multiple points in time disk images for disaster recovery
US8719307B2 (en) * 2010-04-23 2014-05-06 Red Hat, Inc. Concurrent linked hashed maps
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8515915B2 (en) * 2010-09-24 2013-08-20 Hitachi Data Systems Corporation System and method for enhancing availability of a distributed object storage system during a partial database outage
JP5170794B2 (ja) * 2010-09-28 2013-03-27 株式会社バッファロー 記憶システム及びフェイルオーバ制御方法
US8935492B2 (en) 2010-09-30 2015-01-13 Commvault Systems, Inc. Archiving data objects using secondary copies
US8583599B2 (en) * 2010-11-29 2013-11-12 Ca, Inc. Reducing data duplication in cloud storage
US8849758B1 (en) 2010-12-28 2014-09-30 Amazon Technologies, Inc. Dynamic data set replica management
US10922225B2 (en) 2011-02-01 2021-02-16 Drobo, Inc. Fast cache reheat
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
WO2013070273A1 (en) * 2011-04-01 2013-05-16 Nexsan Corporation Journaling raid system
JP5494556B2 (ja) * 2011-04-19 2014-05-14 コニカミノルタ株式会社 画像形成方法および画像形成装置
CN102819480A (zh) * 2011-06-08 2012-12-12 联想(北京)有限公司 一种监控计算机存储器的方法和计算机
US20130024723A1 (en) * 2011-07-19 2013-01-24 Promise Technology, Inc. Disk storage system with two disks per slot and method of operation thereof
US8488779B2 (en) * 2011-07-25 2013-07-16 Grey Heron Technologies, Llc Method and system for conducting high speed, symmetric stream cipher encryption
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
KR101695991B1 (ko) * 2011-09-06 2017-01-12 한국전자통신연구원 파일 데이터 분산 저장 장치 및 방법
US10223375B2 (en) * 2011-09-20 2019-03-05 Netapp, Inc. Handling data extent size asymmetry during logical replication in a storage system
US8799523B2 (en) 2011-09-21 2014-08-05 Kevin Mark Klughart Data storage architecture extension system and method
US9460110B2 (en) 2011-09-21 2016-10-04 Kevin Mark Klughart File system extension system and method
US8943227B2 (en) 2011-09-21 2015-01-27 Kevin Mark Klughart Data storage architecture extension system and method
US8813165B2 (en) 2011-09-25 2014-08-19 Kevin Mark Klughart Audio/video storage/retrieval system and method
US9870373B2 (en) 2011-09-21 2018-01-16 Kevin Mark Klughart Daisy-chain storage synchronization system and method
US9652343B2 (en) 2011-09-21 2017-05-16 Kevin Mark Klughart Raid hot spare system and method
US8959389B2 (en) 2011-11-23 2015-02-17 International Business Machines Corporation Use of a virtual drive as a hot spare for a raid group
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9304912B1 (en) * 2012-01-06 2016-04-05 Marvell International Ltd. Systems and methods for building redundancy data in a RAID system
WO2013108746A1 (ja) * 2012-01-16 2013-07-25 日本電気株式会社 検索システム、その制御方法、及びプログラム
JPWO2013108745A1 (ja) * 2012-01-16 2015-05-11 日本電気株式会社 ストレージ装置、その制御方法、及びプログラム
US8782375B2 (en) 2012-01-17 2014-07-15 International Business Machines Corporation Hash-based managing of storage identifiers
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
CN103226518B (zh) * 2012-01-31 2016-06-22 国际商业机器公司 一种在存储管理系统中进行卷扩展的方法和装置
EP2810171B1 (en) 2012-02-02 2019-07-03 Hewlett-Packard Enterprise Development LP Systems and methods for data chunk deduplication
US11232093B2 (en) 2012-03-02 2022-01-25 Pure Storage, Inc. Slice migration in a dispersed storage network
US10402393B2 (en) * 2012-03-02 2019-09-03 Pure Storage, Inc. Slice migration in a dispersed storage network
GB2500597B (en) * 2012-03-26 2014-06-18 Streetcloud Ltd Data server
US8719320B1 (en) 2012-03-29 2014-05-06 Amazon Technologies, Inc. Server-side, variable drive health determination
US9037921B1 (en) * 2012-03-29 2015-05-19 Amazon Technologies, Inc. Variable drive health determination and data placement
US8972799B1 (en) 2012-03-29 2015-03-03 Amazon Technologies, Inc. Variable drive diagnostics
US9792192B1 (en) * 2012-03-29 2017-10-17 Amazon Technologies, Inc. Client-side, variable drive health determination
US9513845B2 (en) * 2012-03-30 2016-12-06 Violin Memory Inc. Memory module virtualization
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
JP5857849B2 (ja) * 2012-03-30 2016-02-10 富士通株式会社 ストレージ装置、起動装置決定方法およびプログラム
EP4328751A3 (en) * 2012-06-07 2024-05-08 VSIP Holdings LLC Memory system management
JP2014056445A (ja) * 2012-09-12 2014-03-27 Fujitsu Ltd ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法
US9936020B2 (en) * 2012-10-30 2018-04-03 International Business Machines Corporation Access control of data in a dispersed storage network
US9836492B1 (en) * 2012-11-01 2017-12-05 Amazon Technologies, Inc. Variable sized partitioning for distributed hash tables
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US9703794B2 (en) * 2013-01-02 2017-07-11 International Business Machines Corporation Reducing fragmentation in compressed journal storage
CN103942112B (zh) * 2013-01-22 2018-06-15 深圳市腾讯计算机系统有限公司 磁盘容错方法、装置及系统
EP2951700A4 (en) 2013-01-30 2016-08-31 Hewlett Packard Entpr Dev Lp NONVOLATILE MEMORY WRITING MECHANISM
US9411736B2 (en) 2013-03-13 2016-08-09 Drobo, Inc. System and method for an accelerator cache based on memory availability and usage
US9417822B1 (en) * 2013-03-15 2016-08-16 Western Digital Technologies, Inc. Internal storage manager for RAID devices
US9542126B2 (en) * 2013-04-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Redundant array of independent disks systems that utilize spans with different storage device counts for a logical volume
JP6212934B2 (ja) * 2013-05-07 2017-10-18 富士通株式会社 ストレージシステム、情報処理装置の制御プログラム、およびストレージシステムの制御方法
US9760596B2 (en) * 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
WO2014185916A1 (en) 2013-05-16 2014-11-20 Hewlett-Packard Development Company, L.P. Selecting a store for deduplicated data
US10592347B2 (en) 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US9213611B2 (en) 2013-07-24 2015-12-15 Western Digital Technologies, Inc. Automatic raid mirroring when adding a second boot drive
US9514002B2 (en) * 2013-09-13 2016-12-06 Vmware, Inc. Incremental backups using retired snapshots
US9772907B2 (en) 2013-09-13 2017-09-26 Vmware, Inc. Incremental backups using retired snapshots
CN104572656B (zh) * 2013-10-12 2019-02-19 华为技术有限公司 一种磁盘镜像空间回收的方法及装置
US9495292B1 (en) * 2013-12-31 2016-11-15 EMC IP Holding Company, LLC Cache management
JP5954338B2 (ja) * 2014-01-14 2016-07-20 横河電機株式会社 計装システム及びその保守方法
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
JP6244974B2 (ja) * 2014-02-24 2017-12-13 富士通株式会社 ストレージ装置、及びストレージ装置の制御方法
US9817721B1 (en) * 2014-03-14 2017-11-14 Sanmina Corporation High availability management techniques for cluster resources
US10496671B1 (en) * 2014-05-05 2019-12-03 EMC IP Holding Company LLC Zone consistency
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
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
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
GB2527529B (en) * 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in 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
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
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
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10303570B2 (en) * 2014-10-17 2019-05-28 Hitachi, Ltd. Method and apparatus for managing data recovery of distributed storage system
US10922276B2 (en) * 2014-11-10 2021-02-16 Hewlett Packard Enterprise Development Lp Online file system check
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10013359B2 (en) * 2014-12-24 2018-07-03 University Of New Hampshire Redundant disk array storage system and method using heterogeneous disks and a lookup table
AU2014415350B2 (en) * 2014-12-27 2019-02-21 Huawei Technologies Co., Ltd. Data processing method, apparatus and system
US10482008B2 (en) 2015-01-23 2019-11-19 Hewlett Packard Enterprise Development Lp Aligned variable reclamation
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
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
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
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US9690660B1 (en) * 2015-06-03 2017-06-27 EMC IP Holding Company LLC Spare selection in a declustered RAID system
US10097636B1 (en) 2015-06-15 2018-10-09 Western Digital Technologies, Inc. Data storage device docking station
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10289326B2 (en) 2015-09-14 2019-05-14 HGST Netherlands, B.V. Optimized data layout for object store system
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
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10073625B2 (en) * 2016-01-06 2018-09-11 HGST Netherlands B.V. Variable-RPM hard disk drive control
US10545681B2 (en) 2016-02-08 2020-01-28 International Business Machines Corporation Asymmetric storage data distribution
US10152497B2 (en) * 2016-02-24 2018-12-11 Salesforce.Com, Inc. Bulk deduplication detection
US10901996B2 (en) 2016-02-24 2021-01-26 Salesforce.Com, Inc. Optimized subset processing for de-duplication
US10956450B2 (en) 2016-03-28 2021-03-23 Salesforce.Com, Inc. Dense subset clustering
US10949395B2 (en) 2016-03-30 2021-03-16 Salesforce.Com, Inc. Cross objects de-duplication
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10635344B2 (en) 2016-04-27 2020-04-28 International Business Machines Corporation Dynamic spare storage allocation by creating logical volumes from unused space allocated for user data of a raid storage
KR101734160B1 (ko) * 2016-04-28 2017-05-11 주식회사 디에이아이오 작업부하 편중을 완화하는 저장 장치
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
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
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
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
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
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
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
US10296498B2 (en) * 2016-08-23 2019-05-21 Oracle International Corporation Coordinated hash table indexes to facilitate reducing database reconfiguration time
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
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10387077B2 (en) * 2016-11-23 2019-08-20 Netflix, Inc. Techniques for efficiently accessing values spanning slabs of memory
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10331902B2 (en) 2016-12-29 2019-06-25 Noblis, Inc. Data loss prevention
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
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
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
CN106934014B (zh) * 2017-03-10 2021-03-19 山东省科学院情报研究所 一种基于Hadoop的网络数据挖掘与分析平台及其方法
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
JP2018181213A (ja) * 2017-04-20 2018-11-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
CN107180018B (zh) * 2017-05-17 2018-11-20 上海兆芯集成电路有限公司 基于散列的加速压缩方法以及使用此方法的装置
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
US10459809B2 (en) * 2017-06-30 2019-10-29 Intel Corporation Stacked memory chip device with enhanced data protection capability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10592478B1 (en) 2017-10-23 2020-03-17 EMC IP Holding Company LLC System and method for reverse replication
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
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
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
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
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
CN110413216B (zh) * 2018-04-28 2023-07-18 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US10817197B2 (en) * 2018-05-04 2020-10-27 Microsoft Technology Licensing, Llc Data partitioning in a distributed storage system
US11120046B2 (en) 2018-05-04 2021-09-14 Microsoft Technology Licensing Llc Data replication in a distributed storage system
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
US11093444B2 (en) * 2018-07-02 2021-08-17 Weka.IO Ltd. Access redirection in a distributive file 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
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
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
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN109783398B (zh) * 2019-01-18 2020-09-15 上海海事大学 一种基于相关感知页面级ftl固态硬盘性能优化方法
US11171671B2 (en) * 2019-02-25 2021-11-09 Samsung Electronics Co., Ltd. Reducing vulnerability window in key value storage server without sacrificing usable capacity
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
KR20210041655A (ko) 2019-10-07 2021-04-16 삼성전자주식회사 메모리 칩, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
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
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11775378B2 (en) 2019-12-16 2023-10-03 Micron Technology, Inc. Memory health status reporting
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11481593B2 (en) * 2020-06-22 2022-10-25 Western Digital Technologies, Inc. Color changing storage device housing
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11474900B2 (en) * 2020-08-04 2022-10-18 International Business Machines Corporation Dynamic rebuild capability in redundant array of independent disks (RAID) arrays using compressing drives
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11907068B2 (en) * 2021-02-16 2024-02-20 Nyriad, Inc. Read request response for reconstructed data in a degraded drive
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
US11726879B2 (en) * 2021-07-12 2023-08-15 Dell Products L.P. Multiple block error correction in an information handling system
CN113284039B (zh) * 2021-07-16 2021-10-08 杭州安恒信息技术股份有限公司 一种位图管理方法、装置、设备及可读存储介质
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
CN115562595B (zh) * 2022-12-06 2023-02-28 苏州浪潮智能科技有限公司 一种卷创建方法及装置、卷读写方法及装置、电子设备
CN117931247A (zh) * 2024-03-25 2024-04-26 青岛国创智能家电研究院有限公司 基于泛终端os的智能家电交互方法

Family Cites Families (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3370604A (en) * 1964-12-16 1968-02-27 Hudson Eugineering Company Self-priming liquid pumping system and primer valve
US3766534A (en) 1972-11-15 1973-10-16 Ibm Shift register storage unit with multi-dimensional dynamic ordering
US4221003A (en) * 1978-05-04 1980-09-02 International Business Machines Corporation Bubble domain relational data base system
US4288860A (en) * 1979-08-02 1981-09-08 Sperry Corporation Dynamic storage synchronizer using variable oscillator and FIFO buffer
US4607346A (en) * 1983-03-28 1986-08-19 International Business Machines Corporation Apparatus and method for placing data on a partitioned direct access storage device
JP2569010B2 (ja) * 1986-05-21 1997-01-08 株式会社日立製作所 半導体メモリ
US4864511A (en) 1987-01-27 1989-09-05 Storage Technology Corporation Automated cartridge system
US4833554A (en) * 1987-02-25 1989-05-23 Tandon Corporation Hard disk drive module and receptacle therefor
US4914656A (en) 1988-06-28 1990-04-03 Storage Technology Corporation Disk drive memory
US4989205A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US4989206A (en) * 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US5077736A (en) * 1988-06-28 1991-12-31 Storage Technology Corporation Disk drive memory
US4989506A (en) * 1988-11-09 1991-02-05 Whirlpool Corporation Charcoal filter system for a trash compactor
DE3911806A1 (de) 1989-04-11 1990-10-18 Mayer Fa Karl Spulmaschine mit mehreren spulstellen
US5144692A (en) 1989-05-17 1992-09-01 International Business Machines Corporation System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5101492A (en) 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
JPH03266039A (ja) 1990-03-16 1991-11-27 Fujitsu Ltd フリーフォーマットデータリンク処理方式
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
JPH0495121A (ja) 1990-08-08 1992-03-27 Nec Corp ファイル二重化方式
US5317728A (en) 1990-09-07 1994-05-31 International Business Machines Corporation Storage management of a first file system using a second file system containing surrogate files and catalog management information
US5210866A (en) * 1990-09-12 1993-05-11 Storage Technology Corporation Incremental disk backup system for a dynamically mapped data storage subsystem
US5269011A (en) 1990-09-24 1993-12-07 Emc Corporation Dynamically reconfigurable data storage system with storage system controllers selectively operable as channel adapters on storage device adapters
US5390313A (en) 1990-09-24 1995-02-14 Emc Corporation Data storage system with data mirroring and reduced access time data retrieval
JP3098584B2 (ja) * 1990-09-28 2000-10-16 ゼロックス コーポレイション 電子複写システムにおける障害除去及び回復方法及び装置
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5345584A (en) * 1991-03-11 1994-09-06 Laclead Enterprises System for managing data storage based on vector-summed size-frequency vectors for data sets, devices, and residual storage on devices
US5239659A (en) 1991-06-19 1993-08-24 Storage Technology Corporation Phantom duplex copy group apparatus for a disk drive array data storge subsystem
JPH0512104A (ja) * 1991-07-04 1993-01-22 Seikosha Co Ltd データ記憶制御装置
EP0601068B1 (en) 1991-08-19 2002-10-16 Energy Conversion Devices, Inc. Electrically erasable, directly overwritable, multibit single cell memory elements and arrays fabricated therefrom
US5325505A (en) 1991-09-04 1994-06-28 Storage Technology Corporation Intelligent storage manager for data storage apparatus having simulation capability
US5257379A (en) 1991-09-04 1993-10-26 International Business Machines Corporation Establishing synchronization of hardware and software I/O configuration definitions
US5139184A (en) * 1991-10-31 1992-08-18 Product Development Partners Garment hanger shoulder guard
US5323489A (en) 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
JP3160106B2 (ja) * 1991-12-23 2001-04-23 ヒュンダイ エレクトロニクス アメリカ ディスクアレーの区分け方法
US5454080A (en) 1992-02-10 1995-09-26 International Business Machines Corporation Removable hard disk drive system with circuit for hot insertion and removal responsive to contacts of zero-insertion-force connector on the lateral side of the drive
US5410737A (en) 1992-04-27 1995-04-25 American Pcs L.P. Frequency agile sharing technology (FAST) for a personal communications service system
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
US5596736A (en) * 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5535335A (en) * 1992-12-22 1996-07-09 International Business Machines Corporation Method and system for reporting the status of an aggregate resource residing in a network of interconnected real resources
JPH06230903A (ja) 1993-01-31 1994-08-19 Hitachi Ltd ディスクアレイ装置の障害回復方法、およびディスクアレイ装置
EP0612015A1 (en) * 1993-02-16 1994-08-24 International Business Machines Corporation Improved disk array system having special parity groups for data blocks with high update activity
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
JP2912802B2 (ja) * 1993-10-14 1999-06-28 富士通株式会社 ディスクアレイ装置の故障対処方法および装置
JPH07130139A (ja) 1993-11-01 1995-05-19 Fuji Electric Co Ltd ディスク記憶装置とそのデータ記録,再生方法
US5546558A (en) * 1994-06-07 1996-08-13 Hewlett-Packard Company Memory system with hierarchic disk array and memory map store for persistent storage of virtual mapping information
DE69533764T2 (de) 1994-06-22 2005-12-01 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
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
JPH0863298A (ja) * 1994-08-18 1996-03-08 Hitachi Ltd ディスクアレイ装置
US5987528A (en) * 1994-09-09 1999-11-16 Compaq Computer Corporation Controlling the flow of electronic information through computer hardware
JP2953960B2 (ja) 1994-09-14 1999-09-27 株式会社ピーエフユー ディスクアレイ装置
US5463776A (en) 1994-09-22 1995-10-31 Hewlett-Packard Company Storage management system for concurrent generation and fair allocation of disk space among competing requests
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US5664187A (en) 1994-10-26 1997-09-02 Hewlett-Packard Company Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US5524204A (en) * 1994-11-03 1996-06-04 International Business Machines Corporation Method and apparatus for dynamically expanding a redundant array of disk drives
JPH08190461A (ja) 1995-01-10 1996-07-23 Hitachi Ltd ディスクアレイシステム
JP3547877B2 (ja) 1995-01-11 2004-07-28 株式会社東芝 磁気記録再生装置
US5548712A (en) * 1995-01-19 1996-08-20 Hewlett-Packard Company Data storage system and method for managing asynchronous attachment and detachment of storage disks
US5542065A (en) * 1995-02-10 1996-07-30 Hewlett-Packard Company Methods for using non-contiguously reserved storage space for data migration in a redundant hierarchic data storage system
US5666512A (en) * 1995-02-10 1997-09-09 Hewlett-Packard Company Disk array having hot spare resources and methods for using hot spare resources to store user data
US5537534A (en) * 1995-02-10 1996-07-16 Hewlett-Packard Company Disk array having redundant storage and methods for incrementally generating redundancy as data is written to the disk array
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
JP3358687B2 (ja) 1995-03-13 2002-12-24 株式会社日立製作所 ディスクアレイ装置
US5875456A (en) * 1995-08-17 1999-02-23 Nstor Corporation Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array
JPH0962460A (ja) 1995-08-23 1997-03-07 Hitachi Ltd 情報処理システム
JP4095121B2 (ja) 1995-08-31 2008-06-04 キヤノン株式会社 図形処理装置及び図形処理方法
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
JPH09219003A (ja) 1996-02-13 1997-08-19 Toshiba Corp ディスク記録再生装置及びそれに適用するマルチヘッド方式の磁気ヘッド装置
JPH09269871A (ja) 1996-03-29 1997-10-14 Mitsubishi Electric Corp ディスクアレイ装置におけるデータ再冗長化方式
JPH09288547A (ja) * 1996-04-22 1997-11-04 Hitachi Inf Technol:Kk アレイ型記憶装置
US5881311A (en) 1996-06-05 1999-03-09 Fastor Technologies, Inc. Data storage subsystem with block based data management
JPH1011906A (ja) 1996-06-24 1998-01-16 Hitachi Ltd 磁気ディスク装置
US5864655A (en) * 1996-09-09 1999-01-26 International Business Machines Corporation Managing removable media in raid and rail environments
US5896256A (en) * 1997-01-06 1999-04-20 Sony Corporation Visual capacity indicator for data recording systems
US5825616A (en) * 1997-01-21 1998-10-20 Dell Usa, L.P. Media module locking and ejecting mechanism
JPH10260788A (ja) 1997-03-19 1998-09-29 Toshiba Corp ディスクアレイシステム
US5832235A (en) * 1997-03-26 1998-11-03 Hewlett-Packard Co. System and method for pattern matching using checksums
US7389312B2 (en) 1997-04-28 2008-06-17 Emc Corporation Mirroring network data to establish virtual storage area network
JPH1139102A (ja) 1997-07-24 1999-02-12 Nec Eng Ltd 磁気ディスク装置
DE19882609T1 (de) * 1997-08-15 2000-08-24 Seagate Technology Ausbildung von Redundanz bei einer objektorientierten Datenspeichervorrichtung
US6253300B1 (en) * 1997-08-20 2001-06-26 Powerquest Corporation Computer partition manipulation during imaging
US6016553A (en) 1997-09-05 2000-01-18 Wild File, Inc. Method, software and apparatus for saving, using and recovering data
JPH1186452A (ja) 1997-09-09 1999-03-30 Toshiba Corp ディスク記憶装置
US6032148A (en) * 1997-09-15 2000-02-29 Hewlett-Packard Company Multilevel storage system with hybrid data compression
EP1213722A3 (en) 1997-09-17 2005-03-09 Matsushita Electric Industrial Co., Ltd. Optical disc recording apparatus, computer-readable recording medium recording a file management program, and optical disc
US6219693B1 (en) 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
US6009478A (en) 1997-11-04 1999-12-28 Adaptec, Inc. File array communications interface for communicating between a host computer and an adapter
JP3618529B2 (ja) 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
US5986881A (en) 1997-11-17 1999-11-16 Hon Hai Precision Ind. Co., Ltd. Disk driver cage assembly with locking device
US5953729A (en) 1997-12-23 1999-09-14 Microsoft Corporation Using sparse file technology to stage data that will then be stored in remote storage
JP3649011B2 (ja) * 1998-01-09 2005-05-18 株式会社日立製作所 コンピュータシステム
US6151685A (en) * 1998-05-15 2000-11-21 International Business Machines Corporation System and method for recovering a segment directory for a log structured array
JP2000020248A (ja) 1998-06-26 2000-01-21 Nippon Digital Kenkyusho:Kk ディスクの障害回復方法、ディスクドライバおよび記録媒体
JP4293648B2 (ja) 1998-06-26 2009-07-08 株式会社日本デジタル研究所 ディスク装置におけるデータ保護方法、ディスク装置、およびプログラムを記録したコンピュータに読み取り可能な記録媒体
WO2000017874A1 (fr) 1998-09-18 2000-03-30 Kabushiki Kaisha Toshiba Procede d'enregistrement d'informations, dispositif d'enregistrement d'informations et support d'informations
US6606585B1 (en) 1998-10-13 2003-08-12 Hewlett-Packard Development Company, L.P. Acceptability testing for capacity planning of data storage system
US6119174A (en) 1998-10-13 2000-09-12 Hewlett-Packard Company Methods and apparatus for implementing quality-of-service guarantees in data storage systems
US6321317B1 (en) 1998-12-16 2001-11-20 Hewlett-Packard Co Apparatus for and method of multi-dimensional constraint optimization in storage system configuration
US6542961B1 (en) * 1998-12-22 2003-04-01 Hitachi, Ltd. Disk storage system including a switch
WO2000058837A1 (fr) * 1999-03-26 2000-10-05 Sony Corporation Gestion de fichiers, enregistrement/reproduction de donnees et dispositifs a cet effet
US6591339B1 (en) 1999-05-03 2003-07-08 3Ware, Inc. Methods and systems for selecting block sizes for use with disk arrays
US6370604B1 (en) 1999-05-07 2002-04-09 Intel Corporation Hot replacement of storage device in serial array of storage devices
US6754664B1 (en) * 1999-07-02 2004-06-22 Microsoft Corporation Schema-based computer system health monitoring
US6477544B1 (en) 1999-07-16 2002-11-05 Microsoft Corporation Single instance store for file systems
JP4040797B2 (ja) 1999-07-19 2008-01-30 株式会社東芝 ディスク制御装置および記録媒体
JP2001043117A (ja) * 1999-07-28 2001-02-16 Sharp Corp ディスク媒体管理方法
US6546499B1 (en) * 1999-10-14 2003-04-08 International Business Machines Corporation Redundant array of inexpensive platters (RAIP)
WO2001040925A1 (fr) 1999-12-02 2001-06-07 Fujitsu Limited Batterie de disques et procede d'extension de sa capacite
US6418449B1 (en) * 2000-01-06 2002-07-09 Inventec Corporation Method of cloning the file system of a window web operating system by using a bitmap file
JP2001206098A (ja) 2000-01-21 2001-07-31 Toyota Motor Corp 車両走行制御装置
US6615365B1 (en) * 2000-03-11 2003-09-02 Powerquest Corporation Storing a computer disk image within an imaged partition
US7216251B2 (en) 2000-02-19 2007-05-08 Powerquest Corporation Computer imaging recovery without a working partition or a secondary medium
TW512318B (en) * 2000-03-01 2002-12-01 Matsushita Electric Ind Co Ltd AV data recorder and its method, disk recorded by AV data recorder and the method
US6606651B1 (en) * 2000-05-03 2003-08-12 Datacore Software Corporation Apparatus and method for providing direct local access to file level data in client disk images within storage area networks
US6606561B2 (en) * 2000-05-17 2003-08-12 Omega Patents, L.L.C. Vehicle tracker including input/output features and related methods
US6892221B2 (en) * 2000-05-19 2005-05-10 Centerbeam Data backup
US6711572B2 (en) * 2000-06-14 2004-03-23 Xosoft Inc. File system for distributing content in a data network and related methods
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6851024B1 (en) * 2000-08-17 2005-02-01 Hewlett-Packard Development Company, L.P. Exclusive caching in computer systems
US20040236798A1 (en) * 2001-09-11 2004-11-25 Sudhir Srinivasan Migration of control in a distributed segmented file system
US6693766B1 (en) * 2000-09-21 2004-02-17 Hewlett-Packard Development Company, L.P. Disk drive system with hybrid surface-based data mapping and method of operation thereof
JP2002100128A (ja) 2000-09-26 2002-04-05 Minebea Co Ltd 磁気ディスク装置
US6745284B1 (en) * 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
GB0025226D0 (en) * 2000-10-14 2000-11-29 Ibm Data storage system and method of storing data
US6862151B2 (en) * 2000-11-15 2005-03-01 Seagate Technologies Llc Method and apparatus for read error recovery
JP2002175157A (ja) 2000-12-08 2002-06-21 Toshiba Corp ディスクアレイ装置
US6865527B2 (en) * 2000-12-18 2005-03-08 Hewlett-Packard Development Company, L.P. Method and apparatus for computing data storage assignments
KR100388498B1 (ko) * 2000-12-30 2003-06-25 한국전자통신연구원 복수 개의 레이드를 구비한 계층적 레이드 시스템
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020174295A1 (en) 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
GB2407896B (en) * 2001-01-31 2005-06-22 Hewlett Packard Co Storage apparatus
US6795895B2 (en) * 2001-03-07 2004-09-21 Canopy Group Dual axis RAID systems for enhanced bandwidth and reliability
JP2002288014A (ja) 2001-03-27 2002-10-04 Fujitsu Ltd ファイル管理システム及びファイルデータ書込方法
US6865640B2 (en) * 2001-04-26 2005-03-08 International Business Machines Corporation Hard disk drive library
US6934673B2 (en) * 2001-05-25 2005-08-23 Hewlett-Packard Development Company, L.P. Method and apparatus for predicting multi-part performability
US20020194427A1 (en) * 2001-06-18 2002-12-19 Ebrahim Hashemi System and method for storing data and redundancy information in independent slices of a storage device
KR100392382B1 (ko) * 2001-07-27 2003-07-23 한국전자통신연구원 동적 크기 변경 및 메타 데이터 양의 최소화를 위한 논리볼륨 관리 방법
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US6996668B2 (en) 2001-08-06 2006-02-07 Seagate Technology Llc Synchronized mirrored data in a data storage device
US6978259B1 (en) 2001-10-23 2005-12-20 Hewlett-Packard Development Company, L.P. Automated system adaptation technique particularly for data storage systems
US6728837B2 (en) * 2001-11-02 2004-04-27 Hewlett-Packard Development Company, L.P. Adaptive data insertion for caching
JP2003150323A (ja) 2001-11-13 2003-05-23 Hitachi Ltd 情報記憶装置
US7111117B2 (en) * 2001-12-19 2006-09-19 Broadcom Corporation Expansion of RAID subsystems using spare space with immediate access to new space
US6644556B2 (en) * 2002-01-18 2003-11-11 Hewlett-Packard Development Company, L.P. Storage device including storage space indication
JP4259800B2 (ja) 2002-01-31 2009-04-30 三菱電機株式会社 データ格納装置、データ管理方法及びプログラム
JP3590390B2 (ja) * 2002-03-13 2004-11-17 株式会社東芝 ディスク記憶装置における自己ミラーリング方法及び同方法を適用するディスク記憶装置
US6875011B2 (en) * 2002-03-20 2005-04-05 Masasuke Soeda Lighter and flint holder
US7072910B2 (en) * 2002-03-22 2006-07-04 Network Appliance, Inc. File folding technique
JP2003316525A (ja) 2002-04-26 2003-11-07 Seiko Epson Corp ディスクアレイ制御装置
CN1203433C (zh) 2002-06-26 2005-05-25 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
JP4246979B2 (ja) 2002-09-05 2009-04-02 株式会社日立製作所 装置管理システム
US20040078641A1 (en) * 2002-09-23 2004-04-22 Hewlett-Packard Company Operating system-independent file restore from disk image
JP2004118946A (ja) 2002-09-26 2004-04-15 Hitachi Ltd ディスクアレイ装置、記憶デバイスユニット、ディスクアレイ装置の制御方法、及びプログラム
US6711676B1 (en) * 2002-10-15 2004-03-23 Zomaya Group, Inc. System and method for providing computer upgrade information
US6857011B2 (en) 2002-10-31 2005-02-15 Paragon Development Systems, Inc. Method of remote imaging
JP2004213064A (ja) 2002-12-26 2004-07-29 Fujitsu Ltd Raid装置及びその論理デバイス拡張方法
JPWO2004075175A1 (ja) 2003-02-19 2006-06-01 富士通株式会社 磁気ディスク装置、そのアクセス制御方法、記録媒体
US20040173544A1 (en) * 2003-03-04 2004-09-09 Feng-Ming Chen Hard disc piling/assembling member of rack mount
JP4267353B2 (ja) * 2003-03-28 2009-05-27 株式会社日立製作所 データ移行支援システム、および、データ移行支援方法
US6912482B2 (en) * 2003-09-11 2005-06-28 Veritas Operating Corporation Data storage analysis mechanism
US7266638B2 (en) * 2003-10-06 2007-09-04 Dell Products L.P. System, method and software for reporting logical volume information on network attached storage appliances
JP4493321B2 (ja) 2003-11-19 2010-06-30 株式会社日立製作所 ディスクアレイ装置及びデータ退避方法
JP4634049B2 (ja) * 2004-02-04 2011-02-16 株式会社日立製作所 ディスクアレイ装置における異常通知制御
US7334156B2 (en) 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US7523140B2 (en) 2004-03-01 2009-04-21 Sandisk Il Ltd. File system that manages files according to content
US7188212B2 (en) 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US7536701B2 (en) 2004-10-13 2009-05-19 Certance Llc Lockable ejection system and method
EP1825373A2 (en) * 2004-11-05 2007-08-29 Data Robotics Incorporated Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
JP4690783B2 (ja) * 2005-06-08 2011-06-01 株式会社日立製作所 ボリューム管理システムおよびその方法
US8215727B2 (en) * 2007-04-13 2012-07-10 Drobo, Inc. Carrierless storage system enclosure with ejection mechanism

Also Published As

Publication number Publication date
WO2006050455A8 (en) 2006-12-28
JP2008521074A (ja) 2008-06-19
WO2006050455A2 (en) 2006-05-11
US20110035565A1 (en) 2011-02-10
CA2590875A1 (en) 2006-05-18
WO2006052888A3 (en) 2006-11-09
WO2006052830A3 (en) 2006-09-21
CA2590361A1 (en) 2006-05-18
CN104699420A (zh) 2015-06-10
JP2008519356A (ja) 2008-06-05
US20060112222A1 (en) 2006-05-25
WO2006052830A2 (en) 2006-05-18
US8156303B2 (en) 2012-04-10
US9043639B2 (en) 2015-05-26
EP1825372A2 (en) 2007-08-29
WO2006050455A3 (en) 2006-09-21
WO2006052829A3 (en) 2006-10-19
CN101872319A (zh) 2010-10-27
EP1825373A2 (en) 2007-08-29
WO2006052888A8 (en) 2006-12-28
WO2006052829A2 (en) 2006-05-18
EP1815337A2 (en) 2007-08-08
US20060129875A1 (en) 2006-06-15
JP2011198383A (ja) 2011-10-06
JP5055125B2 (ja) 2012-10-24
AU2005304792A1 (en) 2006-05-18
CA2590361C (en) 2012-01-03
EP1815340A2 (en) 2007-08-08
AU2005304792B2 (en) 2010-07-08
JP4870678B2 (ja) 2012-02-08
KR101146484B1 (ko) 2012-07-05
JP4950897B2 (ja) 2012-06-13
US7814272B2 (en) 2010-10-12
AU2005304759A1 (en) 2006-05-18
EP1815337B1 (en) 2013-05-15
US20060143380A1 (en) 2006-06-29
US20060174157A1 (en) 2006-08-03
JP2008519350A (ja) 2008-06-05
KR20070111450A (ko) 2007-11-21
US7818531B2 (en) 2010-10-19
CA2590875C (en) 2011-09-13
WO2006050455A9 (en) 2006-07-27
US7814273B2 (en) 2010-10-12
AU2005304759B2 (en) 2012-05-17
WO2006052888A2 (en) 2006-05-18
AU2005304759A2 (en) 2008-04-17
JP2008519359A (ja) 2008-06-05

Similar Documents

Publication Publication Date Title
JP5116151B2 (ja) 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム
JP4954277B2 (ja) ファイルシステム認識ブロック格納システム、装置、および方法
US7873782B2 (en) Filesystem-aware block storage system, apparatus, and method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100326

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100623

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100630

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100927

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110606

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110713

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110804

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110922

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120319

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120323

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121015

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151026

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees