JP6796589B2 - Storage system architecture - Google Patents

Storage system architecture Download PDF

Info

Publication number
JP6796589B2
JP6796589B2 JP2017542073A JP2017542073A JP6796589B2 JP 6796589 B2 JP6796589 B2 JP 6796589B2 JP 2017542073 A JP2017542073 A JP 2017542073A JP 2017542073 A JP2017542073 A JP 2017542073A JP 6796589 B2 JP6796589 B2 JP 6796589B2
Authority
JP
Japan
Prior art keywords
storage
nodes
path
units
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017542073A
Other languages
Japanese (ja)
Other versions
JP2018506123A (en
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
Priority claimed from US14/618,999 external-priority patent/US9213485B1/en
Application filed by ピュア ストレージ, インコーポレイテッド, ピュア ストレージ, インコーポレイテッド filed Critical ピュア ストレージ, インコーポレイテッド
Publication of JP2018506123A publication Critical patent/JP2018506123A/en
Application granted granted Critical
Publication of JP6796589B2 publication Critical patent/JP6796589B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Description

総体的にスピン媒体として知られている従来のハードディスクドライブ(HDD)、書き込み可能なCD(コンパクトディスク)又は書き込み可能なDVD(デジタル多様性ディスク)ドライブ、及び大量のデータを記憶するためのテープドライブを増強し又はそれに置き換わるソリッドステートドライブ(SSD)には、現在、フラッシュのようなソリッドステートメモリが使用されている。フラッシュ及び他のソリッドステートメモリは、スピン媒体とは異なる特性を有する。更に、多くのソリッドステートドライブは、互換性の理由でハードディスクドライブ規格に合致するよう設計され、これは、フラッシュ及び他のソリッドステートメモリの独特の観点の利点を取り入れるか又は改善された特徴を与えるのを困難にする。スピン媒体は、従来のストレージアレイのストレージユニット又はストレージノード間の接続通信経路の融通性又は多様性に限度がある。 Traditional hard disk drives (HDDs), writable CDs (compact discs) or writable DVDs (digital diversity discs) drives, commonly known as spin media, and tape drives for storing large amounts of data. Solid state drives (SSDs) that augment or replace are currently used in solid state memories such as flash. Flash and other solid-state memories have different properties than spin media. In addition, many solid-state drives are designed to meet hard disk drive standards for compatibility reasons, which incorporates or provides improved features that take advantage of the unique perspectives of flash and other solid-state memories. Make it difficult. Spin media has limited flexibility or versatility of connection communication paths between storage units or storage nodes in conventional storage arrays.

本実施形態は、このような状況において得られたものである。 The present embodiment is obtained in such a situation.

ある実施形態において、ストレージシステムが提供される。該ストレージシステムは、複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのストレージメモリを有し、更に、複数のストレージノードを備え、それら複数のストレージノードの各々は、ユーザデータの一部分の所有権を有するように構成される。又、ストレージシステムは、複数のストレージユニットを結合する第1経路を備え、複数のストレージユニットの各々が複数のストレージノードからの支援なしに第1経路を経て複数のストレージユニットの少なくとも1つの他のストレージユニットと通信できるようにする。 In certain embodiments, a storage system is provided. The storage system comprises a plurality of storage units, each of the plurality of storage units having a storage memory for user data, further comprising a plurality of storage nodes, and each of the plurality of storage nodes. It is configured to own a portion of the user data. Further, the storage system includes a first path for connecting the plurality of storage units, and each of the plurality of storage units goes through the first path without assistance from the plurality of storage nodes, and at least one other of the plurality of storage units. Allow communication with the storage unit.

ある実施形態において、ストレージクラスターが提供される。該ストレージクラスターは、複数のスロットを有する単一シャーシを備え、各スロットは、ストレージノード又はストレージユニットを受け入れるように構成され、その各々は、複数のスロットのうちの1つ以上を占有することができる。ストレージクラスターは、単一シャーシに複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有する。ストレージクラスターは、複数のストレージユニットを結合する第1経路を単一シャーシに備え、複数のストレージユニットのうちの第1ストレージユニットから第1経路を経て複数のストレージユニットのうちの第2ストレージユニットへの通信に介入したり又はそれを支援したりするストレージノードがないようにする。 In certain embodiments, storage clusters are provided. The storage cluster comprises a single chassis with multiple slots, each slot being configured to accommodate a storage node or storage unit, each of which may occupy one or more of the plurality of slots. it can. A storage cluster comprises multiple storage units in a single chassis, each of which has solid state storage memory for user data. The storage cluster has a first path for connecting a plurality of storage units in a single chassis, and from the first storage unit among the plurality of storage units to the second storage unit among the plurality of storage units via the first path. Make sure there are no storage nodes that intervene or support the communication.

ある実施形態において、単一シャーシのストレージシステムが提供される。該ストレージシステムは、単一シャーシに複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有する。又、ストレージシステムは、単一シャーシに第1経路を備え、複数のストレージユニットの各々は、その第1経路を経て複数のストレージユニットのうちの少なくとも1つの他のストレージユニットと通信するように結合される。又、ストレージシステムは、単一シャーシに複数のストレージノードを備え、それら複数のストレージノードの各々は、複数のストレージユニットのサブセットを有し且つユーザデータの一部分の所有権を有し、ここで、複数のストレージノードは、ストレージユニット間の直接的な通信に関与しない。又、ストレージシステムは、複数のストレージノードを結合する第2経路を単一シャーシに備えている。 In certain embodiments, a single chassis storage system is provided. The storage system comprises a plurality of storage units in a single chassis, each of which has a solid state storage memory for user data. Further, the storage system includes a first path in a single chassis, and each of the plurality of storage units is coupled so as to communicate with at least one other storage unit among the plurality of storage units via the first path. Will be done. Also, a storage system comprises a plurality of storage nodes in a single chassis, each of which has a subset of a plurality of storage units and owns a portion of user data. Multiple storage nodes are not involved in direct communication between storage units. Further, the storage system includes a second path for connecting a plurality of storage nodes in a single chassis.

本実施形態の他の観点及び効果は、ここに述べる実施形態の原理を一例として示す添付図面に関連した以下の詳細な説明から明らかとなろう。 Other aspects and effects of this embodiment will become apparent from the following detailed description relating to the accompanying drawings which illustrate the principles of the embodiments described herein.

ここに述べる実施形態及びその効果は、添付図面を参照した以下の説明から最も良く理解されるであろう。それらの図面は、ここに述べる実施形態の精神及び範囲から逸脱せずに当業者によりここに述べる実施形態に対してなされる形態及び細部の変更を何ら限定するものではない。 The embodiments described herein and their effects will be best understood from the following description with reference to the accompanying drawings. These drawings do not limit any modification of the embodiments and details made by those skilled in the art to the embodiments described herein without departing from the spirit and scope of the embodiments described herein.

ある実施形態によりネットワークアタッチ型ストレージを形成するために多数のストレージノード及び各ストレージノードに結合された内部ストレージを伴うストレージクラスターの斜視図である。FIG. 5 is a perspective view of a storage cluster with a large number of storage nodes and internal storage coupled to each storage node to form network-attached storage according to an embodiment. ある実施形態においてストレージリソースとして図1のストレージクラスターの1つ以上を使用できる企業用コンピューティングシステムのシステム図である。FIG. 5 is a system diagram of an enterprise computing system that can use one or more of the storage clusters of FIG. 1 as storage resources in certain embodiments. ある実施形態により図1のストレージクラスターに使用するのに適した異なる容量をもつ多数のストレージノード及び不揮発性ソリッドステートストレージを示すブロック図である。FIG. 5 is a block diagram showing a large number of storage nodes with different capacities and non-volatile solid-state storage suitable for use in the storage cluster of FIG. 1 according to certain embodiments. ある実施形態により多数のストレージノードを結合する相互接続スイッチを示すブロック図である。It is a block diagram which shows the interconnection switch which connects a large number of storage nodes by a certain embodiment. ある実施形態によりストレージノードのコンテンツ及び1つの不揮発性ソリッドステートストレージユニットのコンテンツを示すマルチレベルブロック図である。It is a multi-level block diagram which shows the content of a storage node and the content of one non-volatile solid state storage unit according to an embodiment. ある実施形態によりストレージノードとストレージユニットとの間及びそれらの中での接続を一例として有するストレージクラスターの更に別の実施形態のブロック図である。FIG. 5 is a block diagram of yet another embodiment of a storage cluster having connections between and within storage nodes and storage units as an example according to one embodiment. ある実施形態による図6Aのストレージクラスター内での接続の変形例である。It is a modification of the connection in the storage cluster of FIG. 6A according to an embodiment. ある実施形態によりデータストレージ又はデータストレージとコンピューティングとの組み合せに適した図1ないし5のストレージクラスターの更に別の実施形態のブロック図である。FIG. 6 is a block diagram of yet another embodiment of a storage cluster of FIGS. 1-5 suitable for data storage or a combination of data storage and computing according to one embodiment. ある実施形態によりスイッチを伴う図1ないし5のストレージクラスター内の接続の更に別の実施形態のブロック図である。FIG. 5 is a block diagram of yet another embodiment of the connection within the storage cluster of FIGS. 1-5 with a switch according to one embodiment. ある実施形態によりストレージユニットを結合するスイッチを伴う図8Aのストレージクラスター内の接続の変形例を示す。A variant of the connection within the storage cluster of FIG. 8A with a switch that couples the storage units according to one embodiment is shown. ある実施形態によりストレージクラスターに対して一緒に結合されたコンピュータノードのアーキテクチャーの一例のブロック図である。It is a block diagram of an example of the architecture of a computer node coupled together with respect to a storage cluster according to an embodiment. ある実施形態により図9Aのコンピュータノードを伴う図1ないし5のストレージクラスターの更に別の実施形態のブロック図である。FIG. 5 is a block diagram of yet another embodiment of the storage cluster of FIGS. 1-5 with the computer node of FIG. 9A according to one embodiment. ある実施形態により図9Bのコンピュータノードを伴うストレージクラスターの変形例のブロック図で、多数のシャーシにおいて1つ以上のストレージクラスターとして全てが一緒に結合されたストレージノード、ストレージユニット及びコンピュータノードと、シャーシ内及びシャーシ間の接続の変形例とを示す図である。In a block diagram of a variant of a storage cluster with computer nodes in FIG. 9B according to an embodiment, a chassis, a storage node, a storage unit, and a computer node, all of which are combined together as one or more storage clusters in many chassis. It is a figure which shows the modification of the connection inside and between chassis. ある実施形態によりストレージクラスター、ストレージノード及び/又は不揮発性ソリッドステートストレージ又はストレージユニットの実施形態において又は実施形態により実施できるストレージクラスター動作方法のフローチャートである。It is a flowchart of the storage cluster operation method which can be carried out in the embodiment of a storage cluster, a storage node and / or a non-volatile solid state storage or a storage unit by an embodiment, or by an embodiment. ここに述べる実施形態を具現化する規範的なコンピューティング装置を示す図である。It is a figure which shows the normative computing device which embodies the embodiment described here.

以下の実施形態は、ユーザデータ、例えば、1人以上のユーザ、又はクライアントシステム、或いはストレージクラスターの外部の他のソースから発生するユーザデータを記憶するストレージクラスターについて述べる。ストレージクラスターは、消去コーディング及びメタデータの冗長コピーを使用してシャーシ内に収容されたストレージノードにわたりユーザデータを分散する。消去コーディングとは、ディスク、ストレージノード又は地理的位置のような異なる位置のセットにわたりデータが記憶されるデータ保護又は再構成の方法を指す。フラッシュメモリは、本実施形態に一体化されるソリッドステートメモリの1つのタイプであるが、本実施形態は、非ソリッドステートメモリを含む他のタイプのソリッドステートメモリ又は他のストレージ媒体へと拡張することができる。ストレージ位置及びワークロードの制御は、クラスター化ピア・ツー・ピアシステムのストレージ位置にわたって分散される。種々のストレージノード間の通信を仲裁し、ストレージノードが利用できなくなるときを検出し、そして種々のストレージノードにわたりI/O(入力及び出力)をバランシングするようなタスクは、全て、分散ベースで取り扱われる。ある実施形態では、データは、データ回復をサポートするデータ断片又はストライプで多数のストレージノードにわたってレイアウト又は分散される。データの所有権は、入力及び出力パターンに関わりなくクラスター内で再指定することができる。以下に詳細に述べるこのアーキテクチャーは、システムが動作したまま、クラスターのストレージノードが失敗となるのを許す。というのは、データは、他のストレージノードから再構成することができ、従って、入力及び出力動作について利用可能に保たれるからである。種々の実施形態において、ストレージノードは、クラスターノード、ブレード、又はサーバーとも称される。 The following embodiments describe storage clusters that store user data, such as user data originating from one or more users, or client systems, or other sources outside the storage cluster. Storage clusters use erase coding and redundant copies of metadata to distribute user data across storage nodes housed within the chassis. Erasing coding refers to a method of data protection or reconstruction in which data is stored across different sets of locations, such as disks, storage nodes, or geographic locations. Flash memory is a type of solid state memory integrated into this embodiment, but this embodiment extends to other types of solid state memory or other storage media, including non-solid state memory. be able to. Storage location and workload control is distributed across the storage locations of clustered peer-to-peer systems. All tasks such as arbitrating communication between different storage nodes, detecting when storage nodes become unavailable, and balancing I / O (inputs and outputs) across different storage nodes are handled on a distributed basis. Is done. In certain embodiments, the data is laid out or distributed across a large number of storage nodes with data fragments or stripes that support data recovery. Data ownership can be redesignated within the cluster regardless of input and output patterns. This architecture, detailed below, allows the storage nodes in the cluster to fail while the system is still running. This is because the data can be reconstructed from other storage nodes and therefore remains available for input and output behavior. In various embodiments, the storage node is also referred to as a cluster node, blade, or server.

ストレージクラスターは、シャーシ内、即ち1つ以上のストレージノードを収容するエンクロージャー内に収容される。各ストレージノードに電力を供給するメカニズム、例えば、配電バス、並びに通信メカニズム、例えば、ストレージノード間の通信を可能にする通信バスは、シャーシ内に含まれる。ある実施形態によれば、ストレージクラスターは、1つの位置において独立システムとして実行することができる。ある実施形態において、シャーシは、独立してイネーブル又はディスエイブルされる配電及び通信の両バスの少なくとも2つのインスタンスを収容する。内部通信バスは、イーサネットバスであるが、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス、インフィニバンド、等の他のテクノロジーも等しく適当である。シャーシは、多数のシャーシ間の通信を、直接的に、又はスイッチを通して、及びクライアントシステムと共に、可能にするための外部通信バスのポートを与える。外部通信は、イーサネット(登録商標)、インフィニバンド、ファイバーチャンネル、等のテクノロジーを使用する。ある実施形態では、外部通信バスは、シャーシ間及びクライアント間通信に対して異なる通信バステクノロジーを使用する。シャーシ内又はシャーシ間にスイッチが配備される場合には、スイッチは、多数のプロトコル又はテクノロジー間の変換体として働く。ストレージクラスターを画成するために多数のシャーシが接続されるときには、ストレージクラスターは、ネットワークファイルシステム(NFS)、普通のインターネットファイルシステム(CIFS)、小型コンピュータシステムインターフェイス(SCSI)又はハイパーテキスト転送プロトコル(HTTP)のような独占的インターフェイス又は標準的インターフェイスを使用してクライアントによりアクセスすることができる。クライアントプロトコルからの変換は、スイッチ、シャーシ外部通信又は各ストレージノード内において行われる。 The storage cluster is housed in a chassis, i.e., in an enclosure that houses one or more storage nodes. A mechanism for supplying power to each storage node, such as a distribution bus, and a communication mechanism, for example, a communication bus that enables communication between storage nodes, are included within the chassis. According to certain embodiments, the storage cluster can run as an independent system in one location. In certain embodiments, the chassis houses at least two instances of both power distribution and communication buses that are independently enabled or disabled. The internal communication bus is an Ethernet bus, but other technologies such as Peripheral Component Interconnect (PCI) Express, InfiniBand, etc. are equally suitable. The chassis provides a port for an external communication bus to enable communication between multiple chassis, either directly or through a switch and with the client system. External communication uses technologies such as Ethernet (registered trademark), InfiniBand, and fiber channels. In certain embodiments, the external communication bus uses different communication bus technologies for chassis-to-chassis and client-to-client communication. When a switch is deployed within or between chassis, the switch acts as a transformant between a number of protocols or technologies. When multiple chassis are connected to define a storage cluster, the storage cluster can be a network file system (NFS), a regular Internet file system (CIFS), a small computer system interface (SCSI) or a hypertext transfer protocol (SCSI). It can be accessed by the client using an exclusive or standard interface such as HTTP). Conversion from the client protocol takes place within the switch, chassis external communication or within each storage node.

各ストレージノードは、1つ以上のストレージサーバーであり、そして各ストレージサーバーは、ストレージユニットと称される1つ以上の不揮発性ソリッドステートメモリユニットに接続される。1つの実施形態では、各ストレージノードに及び1つないし8つの不揮発性ソリッドステートメモリユニット間に単一のストレージサーバーが含まれるが、この一例に限定されない。ストレージサーバーは、プロセッサ、ダイナミックランダムアクセスメモリ(DRAM)、並びにインターネット通信バス及び各電力バスの配電のためのインターフェイスを備えている。ストレージノード内では、インターフェイス及びストレージユニットは、通信バス、例えば、ある実施形態では、PCIエクスプレスを共有する。不揮発性ソリッドステートメモリユニットは、ストレージノード通信バスを経て内部通信バスインターフェイスに直接アクセスするか、又はバスインターフェイスにアクセスするようストレージノードに要求する。不揮発性ソリッドステートメモリユニットは、埋め込み型中央処理ユニット(CPU)、ソリッドステートストレージコントローラ、及びある実施形態では例えば2−32テラバイト(TB)のソリッドステート大量ストレージの量を含む。DRAMのような埋め込み型揮発性ストレージ媒体及びエネルギー貯蔵装置が不揮発性ソリッドステートメモリユニットに含まれる。ある実施形態では、エネルギー貯蔵装置は、停電の場合にDRAMコンテンツのサブセットを安定なストレージ媒体に転送できるキャパシタ、スーパーキャパシタ又はバッテリである。ある実施形態では、不揮発性ソリッドステートメモリユニットは、ストレージクラスメモリ、例えば、DRAMに取って代わるもので減少電力保持装置を可能にする相変化又は磁気抵抗ランダムアクセスメモリ(MRAM)と共に構成される。 Each storage node is one or more storage servers, and each storage server is connected to one or more non-volatile solid-state memory units called storage units. In one embodiment, each storage node includes a single storage server between one or eight non-volatile solid-state memory units, but is not limited to this example. The storage server includes a processor, dynamic random access memory (DRAM), and an interface for power distribution of the Internet communication bus and each power bus. Within the storage node, the interface and storage unit share a communication bus, eg, in some embodiments, PCI Express. The non-volatile solid-state memory unit either directly accesses the internal communication bus interface via the storage node communication bus or requires the storage node to access the bus interface. The non-volatile solid state memory unit includes an embedded central processing unit (CPU), a solid state storage controller, and, in certain embodiments, an amount of solid state mass storage, eg 2-32 terabytes (TB). Embedded volatile storage media such as DRAM and energy storage devices are included in the non-volatile solid state memory unit. In certain embodiments, the energy storage device is a capacitor, supercapacitor or battery capable of transferring a subset of DRAM content to a stable storage medium in the event of a power outage. In certain embodiments, the non-volatile solid-state memory unit is configured with storage class memory, eg, a phase change or magnetoresistive random access memory (MRAM) that replaces DRAM and allows a reduced power holding device.

ストレージノード及び不揮発性ソリッドステートストレージの多数の特徴の1つは、ストレージクラスターにおいてデータを先験的に再構築する能力である。ストレージノード及び不揮発性ソリッドステートストレージは、ストレージノード又は不揮発性ソリッドステートストレージに関するデータを読み取る試みがあるかどうかに関わらず、ストレージクラスターのストレージノード又は不揮発性ソリッドステートストレージに到達できないときを決定することができる。ストレージノード及び不揮発性ソリッドステートストレージは、次いで、少なくとも部分的に新たな位置においてデータを回復し且つ再構築するように協働する。これは、ストレージクラスターを使用するクライアントシステムから開始された読み取りアクセスに対してデータが必要になるまで待機することなくシステムがデータを再構築するという点で先見的再構築を構成する。ストレージメモリ及びその動作のこれら及び更に別の細部を以下に述べる。 One of the many features of storage nodes and non-volatile solid-state storage is the ability to a priori reconstruct data in storage clusters. The storage node and non-volatile solid-state storage determine when the storage node or non-volatile solid-state storage of the storage cluster is unreachable, regardless of whether there is an attempt to read data about the storage node or non-volatile solid-state storage. Can be done. Storage nodes and non-volatile solid-state storage then work together to recover and reconstruct data at least partially in new locations. This constitutes a forward-looking rebuild in that the system rebuilds the data without waiting for the data to be needed for read access initiated by the client system using the storage cluster. These and other details of the storage memory and its operation are described below.

図1は、ある実施形態によりネットワークアタッチ型ストレージ又はストレージエリアネットワークを形成するために多数のストレージノード150及び各ストレージノードに結合された内部ソリッドステートメモリを伴うストレージクラスター160の斜視図である。ネットワークアタッチ型ストレージ、ストレージエリアネットワーク又はストレージクラスター或いは他のストレージメモリは、1つ以上のストレージノード150を各々有する1つ以上のストレージクラスター160を、物理的コンポーネント及びそれにより与えられる量のストレージメモリの両方の柔軟で且つ再構成可能な配列で備えることができる。ストレージクラスター160は、ラックに適合するように設計され、そして1つ以上のラックをストレージメモリとして必要に応じて設定し且存在させることができる。ストレージクラスター160は、多数のスロット142を有するシャーシ138を含む。シャーシ138は、ハウジング、エンクロージャー、又はラックユニットとも称されることが明らかである。1つの実施形態において、シャーシ138は、14個のスロット142を有するが、他の数のスロットも容易に案出される。例えば、ある実施形態では、4個のスロット、8個のスロット、16個のスロット、32個のスロット、又は他の数のスロットがある。ある実施形態において、各スロット142は、1つのストレージノード150を収容することができる。シャーシ138は、シャーシ138をラックにマウントするのに使用できるフラップ148を備えている。ファン144は、ストレージノード150及びそのコンポーネントを冷却するための空気循環を与えるが、他の冷却コンポーネントを使用することもでき、或いは冷却コンポーネントをもたない実施形態も案出できる。スイッチファブリック146は、シャーシ138内のストレージノード150を一緒に結合しそしてメモリへの通信のためにネットワークに結合する。図1に示す実施形態では、スイッチファブリック146及びファン144の左のスロット142は、ストレージノード150により占有されて示されているが、スイッチファブリック146及びファン144の右のスロット142は、例示の目的で、空であり、ストレージノード150を挿入するのに利用できる。この構成は一例に過ぎず、そして種々の更に別の配列では、1つ以上のストレージノード150がスロット142を占有する。ストレージノードの配列は、ある実施形態では、連続的又は隣接である必要はない。ストレージノード150は、ホットプラグ型であり、これは、システムを停止又はパワーダウンせずに、ストレージノード150をシャーシ138のスロット142に挿入し又はスロット142から除去できることを意味する。ストレージノード150をスロット142に挿入し又はそこから除去するときに、システムは、その変化を認識し且つそれに適応するために自動的に再構成する。ある実施形態では、再構成は、冗長性の回復及び/又はデータ又は負荷の再バランシングを含む。 FIG. 1 is a perspective view of a storage cluster 160 with a large number of storage nodes 150 and internal solid-state memory coupled to each storage node to form a network-attached storage or storage area network according to certain embodiments. A network-attached storage, storage area network or storage cluster or other storage memory comprises one or more storage clusters 160, each with one or more storage nodes 150, of physical components and the amount of storage memory provided thereby. Both flexible and reconfigurable sequences can be provided. The storage cluster 160 is designed to fit racks, and one or more racks can be configured and exist as storage memory as needed. The storage cluster 160 includes a chassis 138 with a large number of slots 142. It is clear that chassis 138 is also referred to as a housing, enclosure, or rack unit. In one embodiment, the chassis 138 has 14 slots 142, but other numbers of slots are readily devised. For example, in some embodiments, there are 4 slots, 8 slots, 16 slots, 32 slots, or a number of other slots. In certain embodiments, each slot 142 can accommodate one storage node 150. Chassis 138 includes flaps 148 that can be used to mount chassis 138 in a rack. Fan 144 provides air circulation to cool the storage node 150 and its components, but other cooling components may be used, or embodiments without cooling components can be devised. The switch fabric 146 joins the storage nodes 150 in chassis 138 together and joins the network for communication to memory. In the embodiment shown in FIG. 1, the left slot 142 of the switch fabric 146 and the fan 144 is shown occupied by the storage node 150, whereas the right slot 142 of the switch fabric 146 and the fan 144 is for purposes of illustration. It is empty and can be used to insert the storage node 150. This configuration is only an example, and in various other arrays, one or more storage nodes 150 occupy slot 142. The array of storage nodes does not have to be continuous or adjacent in some embodiments. The storage node 150 is a hot plug type, which means that the storage node 150 can be inserted into or removed from slot 142 of chassis 138 without stopping or powering down the system. When the storage node 150 is inserted into or removed from slot 142, the system automatically reconfigures to recognize and adapt to the change. In certain embodiments, the reconfiguration comprises restoring redundancy and / or rebalancing the data or load.

各ストレージノード150は、多数のコンポーネントを有することができる。ここに示す実施形態では、ストレージノード150は、CPU156、即ちプロセッサ、CPU156に結合されたメモリ154、及びCPU156に結合された不揮発性ソリッドステートストレージ152が存在するプリント回路板158を備えているが、更に別の実施形態では、他のマウンティング及び/又はコンポーネントを使用することができる。メモリ154は、CPU156により実行されるインストラクション及び/又はCPU156により操作されるデータを有する。以下に詳細に述べるように、不揮発性ソリッドステートストレージ152は、フラッシュを含み、又は更に別の実施形態では、他のタイプのソリッドステートメモリを含む。 Each storage node 150 can have a large number of components. In the embodiment shown here, the storage node 150 comprises a CPU 156, a printed circuit board 158 in which a processor, a memory 154 coupled to the CPU 156, and a non-volatile solid state storage 152 coupled to the CPU 156 reside. In yet another embodiment, other mounting and / or components can be used. The memory 154 has instructions executed by the CPU 156 and / or data manipulated by the CPU 156. As described in detail below, the non-volatile solid state storage 152 includes flash, or, in yet another embodiment, other types of solid state memory.

図2は、ストレージリソース108として図1のストレージノード、ストレージクラスター及び/又は不揮発性ソリッドステートストレージの1つ以上を使用できる企業用コンピューティングシステム102のシステム図である。例えば、図2のフラッシュストレージ128は、ある実施形態において、図1のストレージノード、ストレージクラスター、及び/又は不揮発性ソリッドステートストレージを一体化したものでよい。企業用コンピューティングシステム102は、処理リソース104、ネットワークリソース106、及びフラッシュストレージ128を含むストレージリソース108を有する。フラッシュストレージ128には、フラッシュコントローラ130及びフラッシュメモリ132が含まれる。種々の実施形態において、フラッシュストレージ128は、CPUを含むフラッシュコントローラ130、及びストレージノードの不揮発性ソリッドステートストレージを含むフラッシュメモリ132と共に、1つ以上のストレージノード又はストレージクラスターを含むことができる。ある実施形態において、フラッシュメモリ132は、異なるタイプのフラッシュメモリ又は同じタイプのフラッシュメモリを含んでもよい。企業用コンピューティングシステム102は、フラッシュストレージ128を配備するのに適した環境を示すが、フラッシュストレージ128は、より大きな又はより小さな他のコンピューティングシステム又は装置に、或いはより少数の又は付加的なリソースを伴う企業用コンピューティングシステム102の変形形態に使用することができる。企業用コンピューティングシステム102は、サービスを提供するか又は利用するためにインターネットのようなネットワーク140に結合される。例えば、企業用コンピューティングシステム102は、クラウドサービス、物理的コンピューティングリソース、又はバーチャルコンピューティングサービスを提供することができる。 FIG. 2 is a system diagram of an enterprise computing system 102 that can use one or more of the storage nodes, storage clusters, and / or non-volatile solid-state storage of FIG. 1 as storage resources 108. For example, the flash storage 128 of FIG. 2 may, in certain embodiments, integrate the storage node, storage cluster, and / or non-volatile solid-state storage of FIG. The enterprise computing system 102 has a storage resource 108 including a processing resource 104, a network resource 106, and a flash storage 128. The flash storage 128 includes a flash controller 130 and a flash memory 132. In various embodiments, the flash storage 128 may include one or more storage nodes or storage clusters, along with a flash controller 130 including a CPU and a flash memory 132 including non-volatile solid state storage of the storage nodes. In certain embodiments, the flash memory 132 may include different types of flash memory or the same type of flash memory. The enterprise computing system 102 exhibits a suitable environment for deploying the flash storage 128, which may be used for other larger or smaller computing systems or devices, or for fewer or additional. It can be used as a variant of the enterprise computing system 102 with resources. The enterprise computing system 102 is coupled to a network 140 such as the Internet to provide or use services. For example, the enterprise computing system 102 can provide cloud services, physical computing resources, or virtual computing services.

企業用コンピューティングシステム102では、種々のリソースが種々のコントローラにより配列及び管理される。処理コントローラ110は、プロセッサ116及びランダムアクセスメモリ(RAM)118を含む処理リソース104を管理する。ネットワークコントローラ112は、ルーター120、スイッチ122及びサーバー124を含むネットワークリソース106を管理する。ストレージコントローラ114は、ハードドライブ126及びフラッシュストレージ128を含むストレージリソース108を管理する。これら実施形態には、他のタイプの処理リソース、ネットワークリソース及びストレージリソースが含まれてもよい。ある実施形態では、フラッシュストレージ128がハードドライブ126に完全に置き換わる。企業用コンピューティングシステム102は、種々のリソースを、物理的コンピューティングリソースとして、或いは変形例では、物理的コンピューティングリソースによりサポートされたバーチャルコンピューティングリソースとして与え又は割り当てることができる。例えば、種々のリソースは、ソフトウェアを実行する1つ以上のサーバーを使用して実施することができる。ファイル又は他のオブジェクト、或いは他の形態のデータは、ストレージリソース108に記憶される。 In the enterprise computing system 102, various resources are arranged and managed by various controllers. The processing controller 110 manages a processing resource 104 including a processor 116 and a random access memory (RAM) 118. The network controller 112 manages a network resource 106 that includes a router 120, a switch 122, and a server 124. The storage controller 114 manages a storage resource 108 including a hard drive 126 and a flash storage 128. These embodiments may include other types of processing resources, network resources and storage resources. In one embodiment, the flash storage 128 completely replaces the hard drive 126. The enterprise computing system 102 can provide or allocate various resources as physical computing resources or, in a variant, as virtual computing resources supported by physical computing resources. For example, various resources can be implemented using one or more servers running the software. Files or other objects, or other forms of data, are stored in storage resource 108.

種々の実施形態において、企業用コンピューティングシステム102は、ストレージクラスターが存在する多数のラックを備え、それらは、クラスター又はサーバーファームのような単一の物理的位置に配置される。他の実施形態では、多数のラックは、ネットワークで結ばれた種々の都市、州又は国々のような多数の物理的位置に配置される。各ラック、各ストレージクラスター、各ストレージノード及び各不揮発性ソリッドステートストレージは、各量のストレージスペースと共に個々に構成され、これは、次いで、他のものに関わりなく再構成することができる。従って、ストレージ容量は、不揮発性ソリッドステートストレージの各々において、柔軟に追加でき、アップグレードでき、差し引きでき、回復でき及び/又は再構成できる。上述したように、各ストレージノードは、ある実施形態において1つ以上のサーバーを実施することができる。 In various embodiments, the enterprise computing system 102 comprises a large number of racks in which storage clusters reside, which are located in a single physical location, such as a cluster or server farm. In other embodiments, multiple racks are located in multiple physical locations such as various networked cities, states or countries. Each rack, each storage cluster, each storage node and each non-volatile solid-state storage is individually configured with each amount of storage space, which can then be reconfigured independently of anything else. Therefore, storage capacity can be flexibly added, upgraded, deducted, recovered and / or reconfigured in each of the non-volatile solid state storages. As mentioned above, each storage node can implement one or more servers in certain embodiments.

図3は、図1のシャーシに使用するのに適した異なる容量をもつ多数のストレージノード150及び不揮発性ソリッドステートストレージ152を示すブロック図である。各ストレージノード150は、不揮発性ソリッドステートストレージ152の1つ以上のユニットを有する。各不揮発性ソリッドステートストレージ152は、ある実施形態では、ストレージノード150又は他のストレージノード150における他の不揮発性ソリッドステートストレージ152からの異なる容量を含んでもよい。或いは又、ストレージノード又は多数のストレージノードにおける全ての不揮発性ソリッドステートストレージ152は、同じ容量を有してもよいし、又は同じ及び/又は異なる容量の組み合せを有してもよい。この融通性が図3に示されており、図3は、4、8及び32TB容量の混合不揮発性ソリッドステートストレージ152を有する1つのストレージノード150、各々32TB容量の不揮発性ソリッドステートストレージ152を有する別のストレージノード150、及び各々8TB容量の不揮発性ソリッドステートストレージ152を有する更に別のストレージノードの一例を示す。ここに述べる教示に従って更に別の種々の組み合せ及び容量が容易に案出される。クラスター化、例えば、ストレージクラスターを形成するためのクラスター化ストレージの状況において、ストレージノードは、不揮発性ソリッドステートストレージ152であるか又はそれを含む。不揮発性ソリッドステートストレージ152は、以下に更に述べるように、不揮発性ソリッドステートストレージ152が不揮発性ランダムアクセスメモリ(NVRAM)コンポーネントを含むので、便利なクラスター化ポイントである。 FIG. 3 is a block diagram showing a large number of storage nodes 150 and non-volatile solid state storage 152 with different capacities suitable for use in the chassis of FIG. Each storage node 150 has one or more units of non-volatile solid state storage 152. Each non-volatile solid-state storage 152 may include, in certain embodiments, different capacities from the storage node 150 or another non-volatile solid-state storage 152 at the other storage node 150. Alternatively, all non-volatile solid-state storage 152 in the storage node or multiple storage nodes may have the same capacity, or may have the same and / or different capacity combinations. This flexibility is shown in FIG. 3, which has one storage node 150 with mixed non-volatile solid-state storage 152 with 4, 8 and 32 TB capacity, each with 32 TB capacity non-volatile solid state storage 152. An example of yet another storage node having another storage node 150 and each having a non-volatile solid state storage 152 having a capacity of 8 TB is shown. Yet another variety of combinations and capacities are readily devised according to the teachings described herein. In the context of clustering, eg, clustered storage for forming a storage cluster, the storage node is or includes non-volatile solid state storage 152. The non-volatile solid-state storage 152 is a convenient clustering point as the non-volatile solid-state storage 152 includes a non-volatile random access memory (NVRAM) component, as further described below.

図1及び3を参照すれば、ストレージクラスター160は、拡張可能であり、これは、上述したように、非均一のストレージサイズを伴うストレージ容量が容易に追加されることを意味する。1つ以上のストレージノード150を各シャーシに差し込んだり除去したりすることができ、そしてある実施形態では、ストレージクラスターが自己構成である。プラグインストレージノード150は、納入時にシャーシに設置されたものでも、後から追加されるものでも、異なるサイズをもつことができる。例えば、ある実施形態では、ストレージノード150は、4TBの倍数をもつことができ、例えば、8TB、12TB、16TB、32TB、等である。更に別の実施形態では、ストレージノード150は、他のストレージ量又は容量の倍数でもよい。各ストレージノード150のストレージ容量がブロードキャストされ、データをどのようにストライプ化するかの判断に影響を及ぼす。最大ストレージ効率のため、一実施形態では、ストライプをできるだけ広く自己構成することができ、これは、シャーシ内の不揮発性ソリッドステートストレージユニット152又はストレージノード150が1個まで又は2個まで失われる連続動作という所定条件を受ける。 With reference to FIGS. 1 and 3, the storage cluster 160 is expandable, which means that storage capacity with non-uniform storage size is easily added, as described above. One or more storage nodes 150 can be plugged in and removed from each chassis, and in certain embodiments, the storage cluster is self-configuring. The plug-in storage node 150 can have different sizes, whether it is installed in the chassis at the time of delivery or added later. For example, in some embodiments, the storage node 150 can have multiples of 4TB, such as 8TB, 12TB, 16TB, 32TB, and so on. In yet another embodiment, the storage node 150 may be another storage amount or multiple of capacity. The storage capacity of each storage node 150 is broadcast, which influences the determination of how to strip the data. For maximum storage efficiency, in one embodiment, the stripes can be self-configured as widely as possible, which is a continuous loss of up to one or two non-volatile solid-state storage units 152 or storage nodes 150 in the chassis. It receives a predetermined condition of operation.

図4は、多数のストレージノード150を結合する通信相互接続170及び配電バス172を示すブロック図である。図1に戻ると、通信相互接続170は、ある実施形態では、スイッチファブリック146に含まれるか又はそれで実施される。多数のストレージクラスター160がラックを占有するところでは、通信相互接続170は、ある実施形態では、ラックスイッチの頂部に含まれるか又はそれで実施される。図4に示すように、ストレージクラスター160は、単一シャーシ138内に収容される。外部ポート176は、通信相互接続170を通してストレージノード150へ結合され、一方、外部ポート174は、ストレージノードへ直結される。外部電力ポート178は、配電バス172に結合される。ストレージノード150は、図3を参照して述べたように、変化する量及び異なる容量の不揮発性ソリッドステートストレージ152を含む。加えて、1つ以上のストレージノード150は、図4に示すように、計算専用のストレージノードである。計算専用のストレージノード150は、ストレージクラスター160の計算機能を遂行するか、又は計算ノードとして機能して計算機能を遂行し及び/又はアプリケーションを実行し、これは、種々の実施形態において、ストレージクラスター160の不揮発性ソリッドステートストレージ152を行先とするか又はそれに記憶されるか又はそこから検索されるユーザデータを使用する。オーソリティ168は、不揮発性ソリッドステートストレージ152において、例えば、メモリに記憶されたリスト又は他のデータ構造体として実施される。ある実施形態では、オーソリティは、不揮発性ソリッドステートストレージ152内に記憶され、そして不揮発性ソリッドステートストレージ152のコントローラ又は他のプロセッサで実行されるソフトウェアによりサポートされる。更に別の実施形態では、オーソリティ168は、ストレージノード150において、例えば、メモリ154に記憶されたリスト又は他のデータ構造体として実施され、そしてストレージノード150のCPU156で実行されるソフトウェアによりサポートされる。オーソリティ168は、ある実施形態では、不揮発性ソリッドステートストレージ152においてどのようにそしてどこにデータが記憶されるかを制御する。この制御は、どのタイプの消去コーディングスキムをデータに適用するかそしてどのストレージノード150がデータのどの部分を有するか決定する上で助けとなる。各オーソリティ168は、不揮発性ソリッドステートストレージ152に指定される。各オーソリティは、種々の実施形態において、iノード番号の範囲、セグメント番号、又はデータに指定される他のデータ識別子を、ファイルシステムにより、又はストレージノード150により、又は不揮発性ソリッドステートストレージ152により制御する。 FIG. 4 is a block diagram showing a communication interconnect 170 and a distribution bus 172 that connect a large number of storage nodes 150. Returning to FIG. 1, the communication interconnect 170 is, in certain embodiments, included in or implemented in switch fabric 146. Where a large number of storage clusters 160 occupy the rack, the communication interconnect 170 is, in certain embodiments, included or implemented at the top of the rack switch. As shown in FIG. 4, the storage cluster 160 is housed in a single chassis 138. The external port 176 is coupled to the storage node 150 through the communication interconnect 170, while the external port 174 is directly connected to the storage node. The external power port 178 is coupled to the distribution bus 172. Storage node 150 includes non-volatile solid-state storage 152 in varying amounts and different capacities, as described with reference to FIG. In addition, one or more storage nodes 150 are calculation-only storage nodes, as shown in FIG. The compute-only storage node 150 either performs the compute functions of the storage cluster 160 or acts as a compute node to perform compute functions and / or execute applications, which, in various embodiments, is the storage cluster. Uses user data destined for, stored in, or retrieved from 160 non-volatile solid-state storage 152. Authority 168 is implemented in the non-volatile solid-state storage 152, for example, as a list or other data structure stored in memory. In certain embodiments, the authority is stored in the non-volatile solid-state storage 152 and is supported by software running on the controller or other processor of the non-volatile solid-state storage 152. In yet another embodiment, authority 168 is implemented at storage node 150, for example as a list or other data structure stored in memory 154, and is supported by software running on CPU 156 of storage node 150. .. Authority 168, in certain embodiments, controls how and where data is stored in the non-volatile solid-state storage 152. This control helps determine which type of erase coding skim is applied to the data and which storage node 150 has which part of the data. Each authority 168 is designated as non-volatile solid state storage 152. In various embodiments, each authority controls a range of inode numbers, segment numbers, or other data identifiers specified in the data by the file system, by the storage node 150, or by the non-volatile solid-state storage 152. To do.

各データ断片及び各メタデータ断片は、ある実施形態では、システムにおいて冗長性を有する。加えて、各データ断片及び各メタデータ断片は、オーソリティと称されるか又はある変形例ではワード(ward)と称される所有者を有し、オーソリティは、ワードのグループ又はセットである。例えば、ストレージノードの失敗によりそのオーソリティに到達できない場合には、そのデータ又はそのメタデータをどのように見出すかについての成功のプランがある。種々の実施形態において、オーソリティ168の冗長コピーがある。オーソリティ168は、ある実施形態では、ストレージノード150及び不揮発性ソリッドステートストレージ152に対してある関係を有する。ある範囲のデータセグメント番号又は他のデータ識別子をカバーする各オーソリティ168(従って、オーソリティがワードのグループである実施形態では、ワードの各グループ)が、特定の不揮発性ソリッドステートストレージ152に指定される。ある実施形態において、全てのそのような範囲に対するオーソリティ168は、ストレージクラスターの不揮発性ソリッドステートストレージ152にわたって分散される。各ストレージノード150は、そのストレージノード150の不揮発性ソリッドステートストレージ152へのアクセスを与えるネットワークポートを有する。データは、セグメント番号に関連したセグメントに記憶され、そしてそのセグメント番号は、ある実施形態では、RAID(独立ディスクの冗長アレイ)ストライプの構成に対する間接参照(indirection)である。従って、オーソリティ168(及びもし該当する場合には、ワード)の指定及び使用は、データへの間接参照を確立する。間接参照は、ある実施形態によれば、データを間接的に、このケースでは、オーソリティ168を経て、参照する能力とも称される。セグメントは、不揮発性ソリッドステートストレージ152のセットを識別し、データを含む不揮発性ソリッドステートストレージ152のセットに対する位置識別子である。ある実施形態では、位置識別子は、装置に対するオフセットであり、多数のセグメントにより順次に再使用される。他の実施形態では、位置識別子は、特定のセグメントに対して独特のもので、決して再使用されない。不揮発性ソリッドステートストレージ152におけるオフセットは、(RAIDストライプの形態において)不揮発性ソリッドステートストレージ152に書き込み又はそこから読み取るために位置データに適用される。データは、不揮発性ソリッドステートストレージ152の多数のユニットにわたってストライプ化され、これは、特定のデータセグメントに対してオーソリティ168を有する不揮発性ソリッドステートストレージ152を含んでもよいし又はそれとは異なってもよい。 Each data fragment and each metadata fragment, in certain embodiments, has redundancy in the system. In addition, each data fragment and each metadata fragment has an owner referred to as an authority or, in some variants, a ward, an authority being a group or set of words. For example, if a storage node fails to reach its authority, there is a successful plan on how to find that data or its metadata. In various embodiments, there are redundant copies of authority 168. Authority 168, in certain embodiments, has a relationship with storage node 150 and non-volatile solid-state storage 152. Each authority 168 covering a range of data segment numbers or other data identifiers (and thus, in embodiments where the authority is a group of words, each group of words) is designated for a particular non-volatile solid-state storage 152. .. In certain embodiments, the authority 168 for all such ranges is distributed across the non-volatile solid-state storage 152 of the storage cluster. Each storage node 150 has a network port that provides access to the non-volatile solid state storage 152 of that storage node 150. The data is stored in the segment associated with the segment number, which in certain embodiments is an indirection to the configuration of a RAID (redundant array of independent disks) stripes. Therefore, the designation and use of authority 168 (and words, if applicable) establishes an indirect reference to the data. Indirect reference, according to some embodiments, is also referred to as the ability to reference data indirectly, in this case via authority 168. A segment identifies a set of non-volatile solid-state storage 152 and is a location identifier for the set of non-volatile solid-state storage 152 containing data. In some embodiments, the location identifier is an offset to the device and is sequentially reused by a number of segments. In other embodiments, the location identifier is unique to a particular segment and is never reused. The offset in the non-volatile solid state storage 152 is applied to the position data for writing to or reading from the non-volatile solid state storage 152 (in the form of RAID stripes). Data is striped across a number of units of non-volatile solid-state storage 152, which may or may not include non-volatile solid-state storage 152 having authority 168 for a particular data segment. ..

例えば、データの移動中又はデータの再構成中にデータの特定セグメントが位置する場所が変化する場合は、そのデータセグメントに対するオーソリティ168を、そのオーソリティ168を有する不揮発性ソリッドステートストレージ152又はストレージノード150において協議しなければならない。データの特定断片を位置決めするため、これら実施形態では、データセグメントに対するハッシュ値を計算するか、或いはiノード番号又はデータセグメント番号を適用する。この動作の出力は、その特定のデータ断片に対してオーソリティ168を有する不揮発性ソリッドステートストレージ152を指す。ある実施形態では、このオペレーションに対して2つの段階がある。第1の段階は、エンティティ識別子(ID)、例えば、セグメント番号、iノード番号、又はディレクトリ番号をオーソリティ識別子へマップする。このマッピングは、ハッシュ又はビットマスクのような計算を含む。第2の段階は、オーソリティ識別子を特定の不揮発性ソリッドステートストレージ152へマッピングし、これは、明確なマッピングを通して行われる。オペレーションは、繰り返し可能であり、計算が遂行されるときに、計算の結果は、オーソリティ168を有する特定の不揮発性ソリッドステートストレージ152を繰り返し且つ確実に指す。オペレーションは、到達可能なストレージノードを入力として含む。到達可能な不揮発性ソリッドステートストレージユニットのセットが変化する場合には、最適なセットが変化する。ある実施形態において、持続される値は、現在指定であり(これは常に真であり)、そして計算された値は、クラスターが再構成を試みるターゲット指定である。この計算は、到達可能で且つ同じくラスターを構成する不揮発性ソリッドステートストレージ152のセットの存在中にオーソリティに対して最適な不揮発性ソリッドステートストレージ152を決定するのに使用される。又、この計算は、不揮発性ソリッドステートストレージのマッピングに対してオーソリティを記録するピア不揮発性ソリッドステートストレージ152の順序付けされたセットも決定し、指定の不揮発性ソリッドステートストレージが到達不能であってもオーソリティを決定できるようにする。ある実施形態において特定のオーソリティ168が利用できない場合には複写又は代用オーソリティ168が協議される。 For example, if the location of a particular segment of data changes during data movement or data reconstruction, the authority 168 for that data segment is assigned to the non-volatile solid-state storage 152 or storage node 150 having that authority 168. Must be discussed at. In these embodiments, a hash value for a data segment is calculated or an inode number or data segment number is applied to position a particular piece of data. The output of this operation refers to the non-volatile solid state storage 152 having authority 168 for that particular piece of data. In one embodiment, there are two stages to this operation. The first step maps an entity identifier (ID), such as a segment number, inode number, or directory number, to an authority identifier. This mapping involves calculations such as hashes or bitmasks. The second step maps the authority identifier to a particular non-volatile solid state storage 152, which is done through explicit mapping. The operation is repeatable, and when the calculation is performed, the result of the calculation repeatedly and reliably points to a particular non-volatile solid state storage 152 having authority 168. The operation includes a reachable storage node as input. If the set of reachable non-volatile solid-state storage units changes, the optimal set changes. In certain embodiments, the persisted value is the current specification (which is always true), and the calculated value is the target specification that the cluster attempts to reconfigure. This calculation is used to determine the optimal non-volatile solid-state storage 152 for authority in the presence of a set of non-volatile solid-state storage 152 that is reachable and also constitutes a raster. This calculation also determines an ordered set of peer non-volatile solid-state storage 152 that records authority for mapping of non-volatile solid-state storage, even if the specified non-volatile solid-state storage is unreachable. Be able to determine authority. If a particular authority 168 is not available in certain embodiments, a copy or substitute authority 168 is discussed.

図1ないし4を参照すれば、ストレージノード150におけるCPU156の多数のタスクのうちの2つは、書き込みデータの解体、及び読み取りデータの再アッセンブルである。データを書き込むべきであるとシステムが決定すると、そのデータに対するオーソリティ168が上述したように位置される。データのセグメントIDが既に決定されているときに、セグメントから決定されたオーソリティ168のホストであると現在決定されている不揮発性ソリッドステートストレージ152へ書き込み要求が転送される。不揮発性ソリッドステートストレージ152及びそれに対応するオーソリティ168が存在するストレージノード150のホストCPU156は、データを解体又は共有し、そしてデータを種々の不揮発性ソリッドステートストレージ152へ送信する。送信されたデータは、消去コードスキームに従ってデータストライプとして書き込まれる。ある実施形態では、データをプルすることが要求され、そして他の実施形態では、データがプッシュされる。逆に、データが読み取られるときは、データを含むセグメントIDに対するオーソリティ168が上述したように位置される。不揮発性ソリッドステートストレージ152及びそれに対応するオーソリティ168が存在するストレージノード150のホストCPU156は、オーソリティにより指摘された不揮発性ソリッドステートストレージ及びそれに対応するストレージノードからデータを要求する。ある実施形態では、データは、フラッシュストレージからデータストライプとして読み取られる。ストレージノード150のホストCPU156は、次いで、読み取ったデータを再アッセンブルし、エラー(もしあれば)を適当な消去コードスキームに従って修正し、そしてその再アッセンブルされたデータをネットワークに転送する。更に別の実施形態では、これらタスクの幾つか又は全部を不揮発性ソリッドステートストレージ152において取り扱うことができる。ある実施形態では、セグメントホストが、ストレージからページを要求し、次いで、オリジナルの要求をしたストレージノードへデータを送信することにより、ストレージノード150へ送信されるべきデータを要求する。 Referring to FIGS. 1 to 4, two of the many tasks of the CPU 156 at the storage node 150 are disassembling the write data and reassembling the read data. When the system determines that the data should be written, the authority 168 for that data is positioned as described above. When the segment ID of the data has already been determined, the write request is transferred from the segment to the non-volatile solid-state storage 152 currently determined to be the host of the determined authority 168. The host CPU 156 of the storage node 150 in which the non-volatile solid-state storage 152 and the corresponding authority 168 are present disassembles or shares the data and transmits the data to various non-volatile solid-state storage 152. The transmitted data is written as a data stripe according to the erasure code scheme. In some embodiments it is required to pull the data, and in other embodiments the data is pushed. Conversely, when the data is read, the authority 168 for the segment ID containing the data is positioned as described above. The host CPU 156 of the storage node 150 in which the non-volatile solid-state storage 152 and the corresponding authority 168 are present requests data from the non-volatile solid-state storage pointed out by the authority and the corresponding storage node. In certain embodiments, the data is read from flash storage as data stripes. The host CPU 156 of the storage node 150 then reassembles the read data, corrects any errors (if any) according to the appropriate erase code scheme, and transfers the reassembled data to the network. In yet another embodiment, some or all of these tasks can be handled in the non-volatile solid state storage 152. In one embodiment, the segment host requests the data to be sent to the storage node 150 by requesting the page from the storage and then sending the data to the storage node that made the original request.

あるシステム、例えば、UNIXスタイルのファイルシステムでは、データがインデックスノード又はiノードで取り扱われ、これは、ファイルシステムにおけるオブジェクトを表わすデータ構造体を特定する。オブジェクトは、例えば、ファイル又はディレクトリである。メタデータは、オブジェクトを、他の属性の中で、許可データ及び生成タイムスタンプのような属性として付随する。ファイルシステムにおけるそのようなオブジェクトの全部又は一部分にセグメント番号を指定することができる。他のシステムでは、データセグメントは、どこかで指定されたセグメント番号で取り扱われる。説明上、配布の単位はエンティティであり、そしてエンティティは、ファイル、ディレクトリ又はセグメントである。即ち、エンティティは、ストレージシステムにより記憶されるデータ又はメタデータの単位である。エンティティは、オーソリティと称されるセットにグループ化される。各オーソリティは、オーソリティ所有者を有し、これは、オーソリティにおけるエンティティを更新する排他的権利を有するストレージノードである。換言すれば、ストレージノードは、オーソリティを含み、そしてオーソリティは、次いで、エンティティを含む。 In some systems, such as UNIX-style file systems, data is handled by index nodes or inodes, which identify data structures that represent objects in the file system. The object is, for example, a file or directory. Metadata accompanies an object, among other attributes, as attributes such as authorization data and generation timestamps. Segment numbers can be specified for all or part of such objects in the file system. In other systems, data segments are treated with a segment number specified somewhere. Descriptionally, the unit of distribution is an entity, and an entity is a file, directory or segment. That is, an entity is a unit of data or metadata stored by a storage system. Entities are grouped into sets called authorities. Each authority has an authority owner, which is a storage node that has the exclusive right to update an entity in the authority. In other words, the storage node contains an authority, and the authority then contains an entity.

ある実施形態によれば、セグメントは、データの論理的コンテナである。セグメントは、媒体アドレススペースと物理的フラッシュ位置との間のアドレススペースであり、即ちデータセグメント番号は、このアドレススペースにおけるものである。又、セグメントは、メタデータも含み、これは、高レベルソフトウェアを伴わずにデータ冗長性を回復できるようにする(異なるフラッシュ位置又は装置への再書き込み)。1つの実施形態では、セグメントの内部フォーマットは、クライアントデータ、及びそのデータの位置を決定するための媒体マッピングを含む。各データセグメントは、例えば、セグメントを多数のデータ及びパリティ断片(shard)に適宜分断することにより、例えば、メモリ及び他の欠陥から保護される。データ及びパリティ断片は、消去コードスキームに従ってホストCPU156(図5を参照)に結合された不揮発性ソリッドステートストレージ152にわたって分散され、即ちストライプされる。セグメントという語の使用は、ある実施形態では、コンテナ、及びセグメントのアドレススペースにおけるその位置を指す。ストライプという語の使用は、セグメントと同じ断片セットを指し、そしてある実施形態によれば、断片が冗長性又はパリティ情報と共にどのように分散されるかを含む。 According to one embodiment, a segment is a logical container for data. The segment is the address space between the media address space and the physical flash location, i.e. the data segment number is in this address space. The segment also contains metadata, which allows data redundancy to be restored without high-level software (rewriting to a different flash location or device). In one embodiment, the internal format of the segment includes client data and media mapping to determine the location of that data. Each data segment is protected, for example, from memory and other defects by appropriately dividing the segment into a large number of data and parity fragments (shards). The data and parity fragments are distributed, or striped, across the non-volatile solid-state storage 152 coupled to the host CPU 156 (see FIG. 5) according to the erase code scheme. The use of the term segment, in certain embodiments, refers to the container and its location in the address space of the segment. The use of the term stripe refers to the same set of fragments as a segment, and according to certain embodiments, includes how the fragments are distributed with redundancy or parity information.

ストレージシステム全体にわたって一連のアドレススペース変換が行われる。最上部には、iノードにリンクするディレクトリ入力(ファイル名)がある。iノードは、データが論理的に記憶されている媒体アドレススペースを指す。媒体アドレスは、大きなファイルの負荷を分散させるか、或いは複写排除又はスナップショットのようなデータサービスを実施するために、一連の間接的媒体を通してマップされる。媒体アドレスは、大きなファイルの負荷を分散させるか、或いは複写排除又はスナップショットのようなデータサービスを実施するために、一連の間接的媒体を通してマップされる。次いで、セグメントアドレスが物理的フラッシュ位置に変換される。物理的フラッシュ位置は、ある実施形態によれば、システム内のフラッシュの量により限定されるアドレス範囲を有する。媒体アドレス及びセグメントアドレスは、論理的コンテナであり、ある実施形態では、128ビット以上の識別子を使用して実際上無限であるようにするが、おそらく、再使用は、システムの予想寿命より長いと計算される。論理的コンテナからのアドレスは、ある実施形態では、ハイアラーキー形態で割り当てられる。最初、各不揮発性ソリッドステートストレージ152には、ある範囲のアドレススペースが指定される。この指定の範囲内で、不揮発性ソリッドステートストレージ152は、他の不揮発性ソリッドステートストレージ152と同期せずに、アドレスを割り当てることができる。 A series of address space translations are performed throughout the storage system. At the top is a directory input (filename) that links to the inode. The inode refers to the medium address space where the data is logically stored. Media addresses are mapped through a set of indirect media to offload large files or to perform data services such as copy exclusion or snapshots. Media addresses are mapped through a set of indirect media to offload large files or to perform data services such as copy exclusion or snapshots. The segment address is then translated into a physical flash position. The physical flash location, according to certain embodiments, has an address range limited by the amount of flash in the system. The media and segment addresses are logical containers, and in some embodiments, 128-bit or higher identifiers are used to make them virtually infinite, but perhaps reuse is longer than the expected life of the system. It is calculated. Addresses from the logical container are, in some embodiments, assigned in a hierarchy form. Initially, each non-volatile solid-state storage 152 is designated with a range of address spaces. Within this specification, the non-volatile solid-state storage 152 can be assigned an address without synchronizing with other non-volatile solid-state storage 152.

データ及びメタデータは、変化するワークロードパターン及びストレージ装置に対して最適化された基本的ストレージレイアウトのセットにより記憶される。これらのレイアウトは、多数の冗長性スキーム、圧縮フォーマット、及びインデックスアルゴリズムを合体する。これらレイアウトのあるものは、オーソリティ及びオーソリティマスターに関する情報を記憶し、一方、他のものは、ファイルメタデータ及びファイルデータを記憶する。冗長性スキームは、(NANDフラッシュチップのような)単一ストレージ装置内の崩壊ビットを許容するエラー修正コード、多数のストレージノードの欠陥を許容する消去コード、及びデータセンター又は領域欠陥を許容する複写スキームを含む。ある実施形態において、低密度パリティチェック(LDPC)コードが単一のストレージユニット内に使用される。ある実施形態において、リードソロモンエンコーディングがストレージクラスター内に使用され、そしてミラーリングがストレージグリッド内に使用される。メタデータは、(ログ構造化合併ツリーのような)順序付けされたログ構造化インデックスを使用して記憶され、そして大きなデータは、ログ構造化レイアウトには記憶されない。 Data and metadata are stored by a set of basic storage layouts optimized for changing workload patterns and storage devices. These layouts combine a number of redundancy schemes, compression formats, and indexing algorithms. Some of these layouts store information about the authority and authority master, while others store file metadata and file data. Redundancy schemes include error correction codes that allow decay bits in a single storage device (such as NAND flash chips), erase codes that allow defects in many storage nodes, and replication that allows data center or area defects. Includes scheme. In certain embodiments, a low density parity check (LDPC) code is used within a single storage unit. In certain embodiments, Reed-Solomon encoding is used within the storage cluster and mirroring is used within the storage grid. Metadata is stored using an ordered log-structured index (such as a log-structured merger tree), and large data is not stored in the log-structured layout.

エンティティの多数のコピーにわたって一貫性を維持するために、ストレージノードは、計算を通して次の2つのことに暗示的に合意する。(1)エンティティを含むオーソリティ、及び(2)オーソリティを含むストレージノード。オーソリティへのエンティティの指定は、オーソリティにエンティティを擬似ランダムに指定するか、外部で生成されたキーに基づいてエンティティを範囲に分割するか、又は単一エンティティを各オーソリティに入れることにより、実行できる。擬似ランダムスキームの例は、リニアハッシング、及びハッシュのレプリケーションアンダースケーラブルハッシング(RUSH)ファミリーであり、これは、コントロールドレプリケーションアンダースケーラブルハッシング(CRUSH)を含む。ある実施形態において、擬似ランダム指定は、ノードのセットが変化するのでノードにオーソリティを指定するためにのみ使用される。オーソリティのセットは変化せず、従って、これらの実施形態では、主観的な機能が適用される。ある配置スキームは、オーソリティをストレージノードに自動的に配置するが、他の配置スキームは、オーソリティをストレージノードに明確にマッピングすることに依存する。ある実施形態では、擬似ランダムスキームは、各オーソリティから候補オーソリティ所有者のセットへマップするために使用される。CRUSHに関連した擬似ランダムデータ配布機能は、ストレージノードにオーソリティを指定し、そしてどこにオーソリティが指定されるかのリストを生成する。各ストレージノードは、擬似ランダムデータ配布機能のコピーを有し、配布のための同じ計算に到達し、そしてその後に、オーソリティを見つけ又は位置付けする。擬似ランダムスキームの各々は、同じターゲットノードを結論とするために、ある実施形態では、ストレージノードの到達可能なセットを入力として要求する。エンティティがオーソリティに入れられると、そのエンティティが物理的装置に記憶され、予想される欠陥が予期せぬデータロスを招くことがないようにする。ある実施形態では、再バランシングアルゴリズムが全てのエンティティのコピーを同じレイアウトのオーソリティ内に及び同じマシンセットに記憶するように試みる。 In order to maintain consistency across multiple copies of an entity, storage nodes implicitly agree on two things through computation: (1) an authority containing an entity, and (2) a storage node containing an authority. Specifying an entity to an authority can be done by specifying the entity to the authority in a pseudo-random manner, dividing the entity into ranges based on externally generated keys, or putting a single entity in each authority. .. Examples of pseudo-random schemes are linear hashing, and the replication underscalable hashing (RUSH) family of hashes, which includes controlled replication underscalable hashing (CRUSH). In certain embodiments, the pseudo-random designation is only used to specify the authority of a node as the set of nodes changes. The set of authorities does not change, so in these embodiments subjective functions apply. Some placement schemes automatically place the authority on the storage node, while other placement schemes rely on explicitly mapping the authority to the storage node. In some embodiments, a pseudo-random scheme is used to map from each authority to a set of candidate authority owners. The pseudo-random data distribution feature associated with CRUSH specifies an authority for a storage node and produces a list of where the authority is specified. Each storage node has a copy of the pseudo-random data distribution function, arrives at the same calculation for distribution, and then finds or positions the authority. Each of the pseudo-random schemes, in certain embodiments, requires an reachable set of storage nodes as input to conclude the same target node. When an entity is placed in the authority, it is stored in the physical device so that the expected defects do not lead to unexpected data loss. In one embodiment, the rebalancing algorithm attempts to store copies of all entities within the same layout authority and in the same machine set.

予想される欠陥は、例えば、装置の欠陥、盗難マシン、データセンターの火災、及び地域的大災害、例えば、原子力事故又は地域的事故を含む。異なる欠陥は、異なるレベルの許容データロスを招く。ある実施形態において、盗難のストレージノードは、システムのセキュリティにも信頼性にも影響しないが、システムの構成によっては、地域的事故は、データのロスを生じないか、数秒又は数分のロストアップデートを生じるか、又は完全なデータロスを生じる。 Possible defects include, for example, equipment defects, stolen machines, data center fires, and regional catastrophes, such as nuclear or regional accidents. Different defects result in different levels of tolerable data loss. In some embodiments, the stolen storage node does not affect the security or reliability of the system, but depending on the system configuration, a regional accident may result in no data loss or lost updates of seconds or minutes. Or cause complete data loss.

これら実施形態において、ストレージ冗長性のためのデータの配置は、データ一貫性のためのオーソリティの配置とは独立している。ある実施形態において、オーソリティを含むストレージノードは、持続的なストレージを含まない。むしろ、ストレージノードは、オーソリティを含まない不揮発性ソリッドステートストレージユニットに接続される。ストレージノードと、不揮発性ソリッドステートストレージユニットとの間の通信相互接続は、多数の通信テクノロジーより成り、そして非均一性能及び欠陥許容特性を有する。ある実施形態では、上述したように、不揮発性ソリッドステートストレージユニットは、PCIエクスプレスを経てストレージノードに接続され、ストレージノードは、イーサネットバックプレーンを使用して単一シャーシ内で一緒に接続され、そしてシャーシは、ストレージクラスターを形成するように一緒に接続される。ストレージクラスターは、ある実施形態では、イーサネット又はファイバーチャンネルを使用してクライアントに接続される。多数のストレージクラスターがストレージグリッドへと構成される場合には、多数のストレージクラスターは、インターネット又は他の長距離ネットワークリンク、例えば、インターネットを横断しない「メトロスケール」リンク又はプライベートリンクを使用して接続される。 In these embodiments, the placement of data for storage redundancy is independent of the placement of authorities for data consistency. In certain embodiments, the storage node containing the authority does not include persistent storage. Rather, the storage node is connected to a non-volatile solid-state storage unit that does not contain authority. The communication interconnect between the storage node and the non-volatile solid-state storage unit consists of a number of communication technologies and has non-uniform performance and defect tolerance characteristics. In one embodiment, as described above, the non-volatile solid-state storage unit is connected to the storage node via PCI Express, the storage nodes are connected together in a single chassis using an Ethernet backplane, and The chassis are connected together to form a storage cluster. In some embodiments, the storage cluster is connected to the client using Ethernet or fiber channels. When many storage clusters are configured in a storage grid, many storage clusters connect using the Internet or other long-distance network links, such as "metroscale" or private links that do not cross the Internet. Will be done.

オーソリティ所有者は、ある不揮発性ソリッドステートストレージユニットから別の不揮発性ソリッドステートストレージユニットへエンティティを移動しそしてエンティティのコピーを追加及び除去するようにエンティティを変更するための排他的権利を有する。これは、基礎的データの冗長性を維持することを許す。オーソリティ所有者が失敗となるか、閉鎖されるか又は過負荷になったときは、オーソリティが新たなストレージノードへ移行される。一時的な欠陥は、全ての非欠陥マシンが新たなオーソリティ位置に合意することを保証するためには些細なことではない。一時的な欠陥により生じる曖昧さは、Paxos、ホット−ウオームフェイルオーバースキームのようなコンセンサスプロトコルにより、又はリモートシステムアドミニストレータによる手動介入を経て、又はローカルハードウェアアドミニストレータにより(例えば、クラスターから欠陥マシンを物理的に除去するか又は欠陥マシンのボタンを押すことにより)自動的に達成できる。ある実施形態では、コンセンサスプロトコルが使用され、そしてフェイルオーバーは、自動的である。あまりに多数の欠陥又は複写事故があまりに短い期間内に生じる場合には、システムは、ある実施形態によれば、自己保存モードに入り、そして複写及びデータ移動アクティビティを、アドミニストレータが介入するまで、停止する。 The authority owner has the exclusive right to move an entity from one non-volatile solid state storage unit to another and modify the entity to add and remove copies of the entity. This allows to maintain the redundancy of the underlying data. If the authority owner fails, is closed, or is overloaded, the authority is migrated to a new storage node. Temporary flaws are not trivial to ensure that all non-defective machines agree on a new authority position. Ambiguities caused by temporary defects can be disambiguated by consensus protocols such as Paxos, hot-war failover schemes, or through manual intervention by remote system administrators, or by local hardware administrators (eg, physics of defective machines from a cluster). It can be achieved automatically (by removing it or pressing a button on the defective machine). In some embodiments, a consensus protocol is used, and failover is automatic. If too many defects or copying accidents occur within too short a period of time, the system, according to certain embodiments, goes into self-preservation mode and suspends copying and data movement activities until the administrator intervenes. ..

オーソリティがストレージノード間で転送され、そしてオーソリティ所有者がオーソリティにおけるエンティティを更新するときには、システムは、ストレージノードと不揮発性ソリッドステートストレージユニットとの間でメッセージを転送する。持続性メッセージに関しては、目的の異なるメッセージは、タイプが異なる。メッセージのタイプに基づき、システムは、異なる順序及び耐久性の保証を維持する。持続性メッセージが処理されるときに、メッセージは、多数の耐久性及び非耐久性ストレージハードウェアテクノロジーにおいて一時的に記憶される。ある実施形態では、メッセージは、RAM、NVRAM及びNANDフラッシュ装置に記憶され、そして各ストレージ媒体を効率的に使用するために様々なプロトコルが使用される。レイテンシーに敏感なクライアント要求は、複写型NVRAMに、その後、NANDに持続されるが、バックグランド再バランシングオペレーションは、直接、NANDに持続される。 When an authority is transferred between storage nodes and the authority owner updates an entity in the authority, the system transfers a message between the storage node and the non-volatile solid-state storage unit. With respect to persistent messages, messages with different purposes are of different types. Based on the type of message, the system maintains different order and durability guarantees. When a persistent message is processed, the message is temporarily stored in a number of durable and non-durable storage hardware technologies. In certain embodiments, the messages are stored in RAM, NVRAM and NAND flash devices, and various protocols are used to make efficient use of each storage medium. Latency-sensitive client requests are persisted in copy NVRAM and then NAND, while background rebalancing operations are persisted directly in NAND.

持続メッセージは、複写される前に、持続的に記憶される。これは、システムが、欠陥及びコンポーネント交換にも関わらず、クライアント要求にサービスし続けられるようにする。多くのハードウェアコンポーネントは、システムアドミニストレータ、製造者、ハードウェア供給チェーン及び進行中の監視クオリティ制御インフラストラクチャーに見える独特の識別子を含むが、インフラストラクチャーアドレスの最上部で実行されるアプリケーションは、アドレスをバーチャル化する。それらのバーチャル化されたアドレスは、コンポーネントの欠陥及び交換にも関わらず、ストレージシステムの寿命にわたって変化しない。これは、クライアント要求処理を再構成又は中断せずに、ストレージシステムの各コンポーネントを時間と共に交換できるようにする。 Persistent messages are persistently stored before being copied. This allows the system to continue to serve client requests despite defects and component replacements. Many hardware components include unique identifiers that appear to be system administrators, manufacturers, hardware supply chains, and ongoing monitoring quality control infrastructure, but applications running at the top of the infrastructure address address the address. Virtualize. Their virtualized addresses do not change over the life of the storage system, despite component defects and replacements. This allows each component of the storage system to be replaced over time without reconfiguring or interrupting client request processing.

ある実施形態では、バーチャル化されたアドレスは、充分な冗長度で記憶される。連続監視システムは、ハードウェア及びソフトウェア状態とハードウェア識別子とを相関させる。これは、欠陥コンポーネント及び製造細部による故障を検出及び予想できるようにする。又、監視システムは、ある実施形態では、故障が生じる前に重要な経路からコンポーネントを除去することにより、オーソリティ及びエンティティを影響下の装置から先験的に転送できるようにする。 In some embodiments, the virtualized address is stored with sufficient redundancy. The continuous monitoring system correlates the hardware and software state with the hardware identifier. This makes it possible to detect and predict failures due to defective components and manufacturing details. Surveillance systems also allow, in certain embodiments, a priori transfer of authorities and entities from affected devices by removing components from critical paths before failure occurs.

図5は、ストレージノード150のコンテンツ及びストレージノード150の不揮発性ソリッドステートストレージ152のコンテンツを示す多レベルブロック図である。ある実施形態では、データは、ネットワークインターフェイスコントローラ(NIC)202によりストレージノード150へ及びストレージノード150から通信される。各ストレージノード150は、上述したように、CPU156、及び1つ以上の不揮発性ソリッドステートストレージ152を有する。図5において1レベル下に移動すると、各不揮発性ソリッドステートストレージ152は、比較的高速の不揮発性ソリッドステートメモリ、例えば、不揮発性ランダムアクセスメモリ(NVRAM)204及びフラッシュメモリ206を有する。ある実施形態では、NVRAM204は、プログラム/消去サイクルを要求しないコンポーネント(DRAM、MRAM、PCM)であり、且つメモリが読み取られるより著しく頻繁に書き込まれるようサポートされるメモリである。図5において別のレベル下に移動すると、NVRAM204は、1つの実施形態では、エネルギー貯蔵器218によりバックアップされるダイナミックランダムアクセスメモリ(DRAM)216のような高速揮発性メモリとして実施される。エネルギー貯蔵器218は、停電の場合にフラッシュメモリ206へコンテンツを転送するに充分なほど長くDRAM216を通電状態に保持するのに充分な電力を供給する。ある実施形態では、エネルギー貯蔵器218は、停電の場合に安定したストレージ媒体にDRAM216のコンテンツを転送できるに充分な適度なエネルギーを供給するキャパシタ、スーパーキャパシタ、バッテリ又は他の装置である。フラッシュメモリ206は、多数のフラッシュダイ222として実施され、これは、フラッシュダイ222のパッケージ又はフラッシュダイ222のアレイとも称される。フラッシュダイ222は、多数の仕方でパッケージでき、例えば、パッケージ当たり1つのダイで、又はパッケージ当たり多数のダイで(即ち、マルチチップパッケージ)、ハイブリッドパッケージで、プリント回路板又は他の基板上の裸のダイとして、カプセル型ダイとして、等々でパッケージできることが明らかである。ここに示す実施形態では、不揮発性ソリッドステートストレージ152は、コントローラ212又は他のプロセッサと、コントローラ212に結合された入力/出力(I/O)ポート210とを有する。I/Oポート210は、フラッシュストレージノード150のCPU156及び/又はネットワークインターフェイスコントローラ202に結合される。フラッシュ入力/出力(I/O)ポート220は、フラッシュダイ222に結合され、そして直接メモリアクセスユニット(DMA)214は、コントローラ212、DRAM216及びフラッシュダイ222に結合される。ここに示す実施形態では、I/Oポート210、コントローラ212、DMAユニット214、及びフラッシュI/Oポート220は、プログラマブルロジック装置(PLD)208、例えば、フィールドプログラマブルゲートアレイ(FPGA)において実施される。この実施形態では、各フラッシュダイ222は、16kB(キロバイト)ページ224として編成されたページ、及びフラッシュダイ222へデータを書き込んだり又はそこからデータを読み取ったりするときに通るレジスタ226を有する。更に別の実施形態では、フラッシュダイ222内に示されたフラッシュメモリに代って、又はそれに加えて、他のタイプのソリッドステートメモリが使用される。 FIG. 5 is a multi-level block diagram showing the contents of the storage node 150 and the contents of the non-volatile solid state storage 152 of the storage node 150. In certain embodiments, data is communicated to and from storage node 150 by network interface controller (NIC) 202. Each storage node 150 has a CPU 156 and one or more non-volatile solid-state storages 152, as described above. Moving down one level in FIG. 5, each non-volatile solid state storage 152 has relatively fast non-volatile solid state memory, such as non-volatile random access memory (NVRAM) 204 and flash memory 206. In certain embodiments, NVRAM 204 is a component (DRAM, MRAM, PCM) that does not require a program / erase cycle and is a memory that is supported so that the memory is written significantly more often than it is read. Moving down another level in FIG. 5, NVRAM 204 is implemented in one embodiment as a fast volatile memory such as dynamic random access memory (DRAM) 216 backed up by energy storage 218. The energy storage 218 supplies sufficient power to keep the DRAM 216 energized long enough to transfer content to the flash memory 206 in the event of a power outage. In certain embodiments, the energy storage 218 is a capacitor, supercapacitor, battery or other device that provides adequate energy to transfer the contents of the DRAM 216 to a stable storage medium in the event of a power outage. The flash memory 206 is implemented as a number of flash dies 222, also referred to as a package of flash dies 222 or an array of flash dies 222. The flash die 222 can be packaged in many ways, eg, with one die per package, or with multiple dies per package (ie, a multi-chip package), in a hybrid package, bare on a printed circuit board or other substrate. It is clear that it can be packaged as a die, a capsule die, and so on. In the embodiments shown herein, the non-volatile solid state storage 152 has a controller 212 or other processor and an input / output (I / O) port 210 coupled to the controller 212. The I / O port 210 is coupled to the CPU 156 and / or network interface controller 202 of the flash storage node 150. The flash input / output (I / O) port 220 is coupled to the flash die 222, and the direct memory access unit (DMA) 214 is coupled to the controller 212, DRAM 216 and flash die 222. In the embodiments shown herein, the I / O port 210, the controller 212, the DMA unit 214, and the flash I / O port 220 are implemented in a programmable logic device (PLD) 208, such as a field programmable gate array (FPGA). .. In this embodiment, each flash die 222 has a page organized as 16 kB (kilobytes) page 224 and a register 226 through which data is written to or read from the flash die 222. In yet another embodiment, other types of solid state memory are used in place of or in addition to the flash memory shown within the flash die 222.

図6Aは、図1ないし5のストレージクラスター160の更なる実施形態のブロック図である。この実施形態では、図1に示す多数のスロットを伴うシャーシ138のようなシャーシ138にコンポーネントが設けられる。配電バス172(図2に見られる)を伴う電源606は、シャーシ138内の種々のコンポーネントへ電力を供給する。2つのストレージノード150が、1つの実施形態において、ネットワークスイッチ620のような経路604に結合されて示されている。更に別の経路が容易に案出される。経路604は、ストレージノード150を互いに結合すると共に、ストレージノード150をシャーシ138の外部のネットワークにも結合して、外部装置、システム又はネットワークに接続できるようにする。 FIG. 6A is a block diagram of a further embodiment of the storage cluster 160 of FIGS. 1-5. In this embodiment, components are provided on chassis 138, such as chassis 138 with a large number of slots as shown in FIG. Power supply 606 with distribution bus 172 (as seen in FIG. 2) powers various components within chassis 138. Two storage nodes 150 are shown coupled in one embodiment to a path 604 such as a network switch 620. Yet another route is easily devised. Route 604 couples the storage nodes 150 to each other and also to the network outside the chassis 138 so that it can be connected to an external device, system or network.

多数のストレージユニット152が、ストレージノード150を結合するネットワークスイッチ620又は他の経路604とは個別の別の経路602により、互いに且つストレージノード150に結合される。1つの実施形態では、ストレージユニット152及びストレージノード150を結合する経路602は、PCIエクスプレスバス(PCIe)であるが、他のバス、ネットワーク及び種々の更に別のカップリングを使用することができる。ある実施形態では、ストレージノード150を経路602、例えば、PCIエクスプレスバスに結合するための透過的ブリッジが設けられる。 A large number of storage units 152 are coupled to each other and to the storage node 150 by a network switch 620 that couples the storage nodes 150 or another route 602 that is separate from the other route 604. In one embodiment, the path 602 connecting the storage unit 152 and the storage node 150 is a PCI Express Bus (PCIe), but other buses, networks and various other couplings can be used. In one embodiment, a transparent bridge is provided to connect the storage node 150 to the path 602, eg, the PCI Express Bus.

2つの経路602、604に接続するために、各ストレージノード150は、2つのポート608、610を有する。各ストレージノード150のポート610の1つは、経路604の1つに結合され、各ストレージノード150の他のポート608は、他の経路602に結合される。 Each storage node 150 has two ports 608,610 to connect to the two paths 602,604. One of the ports 610 of each storage node 150 is coupled to one of the routes 604, and the other port 608 of each storage node 150 is coupled to the other route 602.

ある実施形態では、ストレージノード150の各々は、計算ノードとして計算機能を遂行する。例えば、ストレージノード150は、1つ以上のアプリケーションを実行することができる。更に、ストレージノード150は、経路602を経てストレージユニット152と通信し、図1ないし3を参照して上述したように、ユーザデータの書き込み及び読み取りを行う(例えば、消去コードを使用して)。別の例として、1つ以上のアプリケーションを実行するストレージノード150は、ユーザデータを使用し、ストレージユニット152に記憶するためにユーザデータを発生し、ストレージユニット152からユーザデータを読み取って処理し、等々を行うことができる。ストレージユニット152の1つが失われても、又はある実施形態では、ストレージユニット152の2つが失われても、ストレージノード150及び/又は残りのストレージユニット152が依然ユーザデータを読み取ることができる。 In certain embodiments, each of the storage nodes 150 performs a computational function as a compute node. For example, the storage node 150 can execute one or more applications. Further, the storage node 150 communicates with the storage unit 152 via the path 602 and writes and reads user data (eg, using an erase code) as described above with reference to FIGS. 1 to 3. As another example, a storage node 150 that executes one or more applications uses user data, generates user data for storage in storage unit 152, reads user data from storage unit 152, processes it, and processes it. And so on. Even if one of the storage units 152 is lost, or in some embodiments, two of the storage units 152 are lost, the storage node 150 and / or the remaining storage unit 152 can still read the user data.

ある実施形態では、消去コード機能がストレージユニット152においてほとんど又は完全に遂行され、これは、ストレージノード150の計算能力を解放する。これは、ストレージノード150が1つ以上のアプリケーションを実行するといった計算ノードの任務により多く集中できるようにする。ある実施形態では、消去コード機能は、ストレージノード150においてほとんど又は完全に遂行される。これは、ストレージノード150がストレージノードの任務により多く集中できるようにする。ある実施形態では、消去コード機能は、ストレージノード150及びストレージユニット152にわたって分担される。これは、ストレージノード150が利用可能な計算帯域巾を計算ノードの任務とストレージノードの任務との間で分担させることができる。 In certain embodiments, the erase code function is performed almost or completely in the storage unit 152, which frees up the computing power of the storage node 150. This allows the storage node 150 to focus more on the task of the compute node, such as running one or more applications. In certain embodiments, the erase code function is performed almost or completely on the storage node 150. This allows the storage node 150 to focus more on the mission of the storage node. In certain embodiments, the erase code function is shared across the storage node 150 and the storage unit 152. This allows the compute bandwidth available to the storage node 150 to be shared between the compute node mission and the storage node mission.

2つの経路602、604が互いに個別である状態で、多数の効果が明らかとなる。いずれの経路602、604も、ストレージノード150及びストレージユニット152を互いに且つ外部ネットワークに結合する経路が1つしかない場合に生じるボトルネックとはならない。1つの経路しかない状態では、敵意のあるものが、ストレージノード150を通して進む必要なく、ストレージユニット152への直接的なアクセスを得ることができる。2つの経路602、604がある状態では、ストレージノード150は、例えば、マルチプロセスアプリケーション又はプロセッサ間通信に対して1つの経路604を通して互いに結合することができる。他方の経路602は、ストレージユニット152におけるデータアクセスに対してストレージノード150の各々により使用することができる。従って、図6Aに示すアーキテクチャーは、種々のストレージ及び計算機能並びにシナリオをサポートする。特に、図6Aに示す1つの実施形態は、単一シャーシ138におけるストレージ及び計算システムである。1つ以上のストレージノード150の形態の処理能力、及び1つ以上のストレージユニット152の形態のストレージ容量は、ストレージ及び/又は計算が変更を必要とするとき、シャーシ138に容易に追加することができる。 With the two paths 602, 604 being separate from each other, a number of effects become apparent. Neither of the routes 602 and 604 is a bottleneck that occurs when there is only one route that connects the storage node 150 and the storage unit 152 to each other and to the external network. With only one route, the hostile can gain direct access to the storage unit 152 without having to travel through the storage node 150. With the two paths 602, 604 present, the storage nodes 150 can be coupled to each other through one path 604, for example for multi-process applications or interprocessor communication. The other path 602 can be used by each of the storage nodes 150 for data access in the storage unit 152. Therefore, the architecture shown in FIG. 6A supports a variety of storage and computing functions as well as scenarios. In particular, one embodiment shown in FIG. 6A is a storage and computing system in a single chassis 138. The processing power in the form of one or more storage nodes 150, and the storage capacity in the form of one or more storage units 152, can be easily added to chassis 138 when storage and / or calculations require changes. it can.

図6Bは、図6Aのストレージクラスター160の変形例である。この変形例では、経路612は、各ストレージノード150に含まれたストレージユニット152特有の部分を有する。1つの実施形態において、経路612は、ストレージユニット152及びストレージノード150を一緒に結合するPCIエクスプレスバスとして実施される。即ち、ある実施形態では、1つのブレードにおけるストレージノード150及びストレージユニット152がPCIエクスプレスバスを共有する。PCIエクスプレスバスは、ブレード特有であり、別のブレードのPCIエクスプレスバスには直接結合されない。従って、あるブレードのストレージユニット152は、互いに且つそのブレードのストレージノード150と通信することができる。あるブレードのストレージユニット152又はストレージノード150から別のブレードのストレージノード150又はストレージユニット152への通信は、ネットワークスイッチ620、例えば、経路614を経て行われる。 FIG. 6B is a modification of the storage cluster 160 of FIG. 6A. In this modification, the path 612 has a portion specific to the storage unit 152 included in each storage node 150. In one embodiment, the route 612 is implemented as a PCI Express bus that connects the storage unit 152 and the storage node 150 together. That is, in one embodiment, the storage node 150 and the storage unit 152 in one blade share a PCI Express bus. The PCI Express Bus is blade-specific and is not directly coupled to the PCI Express Bus of another blade. Therefore, the storage unit 152 of a blade can communicate with each other and with the storage node 150 of that blade. Communication from the storage unit 152 or storage node 150 of one blade to the storage node 150 or storage unit 152 of another blade is performed via a network switch 620, for example, a path 614.

図7は、データストレージ、又はデータストレージと計算との組み合せに適した、図1ないし5のストレージクラスター160の更に別の実施形態のブロック図である。図7の変形例は、他の可能性の中でも、バス、ネットワーク、又はハードワイヤードメッシュである第1経路616により一緒に結合された全てのストレージユニット152を有する。2つのストレージユニット152の各々に1つのストレージノード150が結合される。2つの更に別のストレージユニット152の各々には、別のストレージユニット152が結合される。ストレージノード150からストレージユニット152への結合は、第2の経路618を示す。 FIG. 7 is a block diagram of yet another embodiment of the storage cluster 160 of FIGS. 1-5, which is suitable for data storage or a combination of data storage and computation. The variant of FIG. 7 has all storage units 152 coupled together by a first path 616, which is a bus, network, or hardwired mesh, among other possibilities. One storage node 150 is coupled to each of the two storage units 152. A separate storage unit 152 is coupled to each of the two further separate storage units 152. The coupling from the storage node 150 to the storage unit 152 indicates a second path 618.

図8Aは、スイッチ620を伴う、図1ないし5のストレージクラスター160の更に別の実施形態のブロック図である。1つのスイッチ620が全てのストレージノード150を互いに結合する。別のスイッチ620も全てのストレージノード150を互いに結合する。この実施形態では、各ストレージノード150が2つのポートを有し、各ポートはスイッチ620の1つに接続される。ポート及びスイッチ620のこの配列は、各ストレージノード150を他のストレージノード150に接続するための2つの経路を与える。例えば、最も左のストレージノード150は、第1スイッチ620又は第2スイッチ620のいずれかを選択することで最も右のストレージノード150(又はストレージクラスター160における他のストレージノード150)に接続することができる。このアーキテクチャーは、通信ボトルネックを緩和させることを理解されたい。1つのスイッチ620、互いに結合された2つのスイッチ620、3つ以上のスイッチ620、及び他の数のポート又はネットワークを伴う更に別の実施形態が、ここに述べる教示を踏まえて、容易に案出される。 FIG. 8A is a block diagram of yet another embodiment of the storage cluster 160 of FIGS. 1-5 with a switch 620. One switch 620 couples all storage nodes 150 together. Another switch 620 also couples all storage nodes 150 together. In this embodiment, each storage node 150 has two ports, each port connected to one of the switches 620. This array of ports and switches 620 provides two routes for connecting each storage node 150 to another storage node 150. For example, the leftmost storage node 150 can be connected to the rightmost storage node 150 (or another storage node 150 in the storage cluster 160) by selecting either the first switch 620 or the second switch 620. it can. It should be understood that this architecture alleviates communication bottlenecks. Yet another embodiment with one switch 620, two switches 620 coupled to each other, three or more switches 620, and a number of other ports or networks is readily devised in light of the teachings described herein. Is done.

図8Bは、ストレージユニット152を結合するスイッチ620を伴う、図8Aのストレージクラスター160の変形例を示す。図8Aの実施形態と同様に、スイッチ620は、ストレージノード150を結合し、各ストレージノード150に対して他のストレージノード150と通信するための2つの経路を与える。更に、スイッチ620は、ストレージユニット152を結合する。各ストレージノード150におけるストレージユニット152の2つがスイッチ620の1つに結合され、そして各ストレージノード150におけるストレージユニット152の1つ以上がスイッチ620の別の1つに結合される。このように、各ストレージユニット152は、スイッチ620の1つを経てストレージクラスターにおける他のストレージユニット152のほぼ半分に接続される。変形例では、スイッチ620が互いに結合され(図8Bに破線で示すように)、そして各ストレージユニットは、スイッチ620を経て他のストレージユニット152へ接続される。1つのスイッチ620、又は他の数のスイッチ620及び接続の配列、並びに接続されるコンポーネントの数を伴う更に別の実施形態も、ここに述べる教示を踏まえて、容易に案出される。 FIG. 8B shows a modification of the storage cluster 160 of FIG. 8A with a switch 620 that couples the storage unit 152. Similar to the embodiment of FIG. 8A, the switch 620 combines the storage nodes 150 and provides each storage node 150 with two routes for communicating with the other storage nodes 150. Further, the switch 620 couples the storage unit 152. Two of the storage units 152 at each storage node 150 are coupled to one of the switches 620, and one or more of the storage units 152 at each storage node 150 are coupled to another one of the switches 620. In this way, each storage unit 152 is connected to approximately half of the other storage units 152 in the storage cluster via one of the switches 620. In a variant, the switches 620 are coupled together (as shown by the dashed line in FIG. 8B), and each storage unit is connected to another storage unit 152 via the switch 620. Yet another embodiment with one switch 620, or an array of other numbers of switches 620 and connections, and the number of components connected is also readily devised in light of the teachings described herein.

図9Aは、ストレージクラスター160に対して一緒に結合される計算ノード626のブロック図である。スイッチ620が全ての計算ノード626を一緒に結合し、各計算ノード626がスイッチ620を経て他の計算ノード626と通信できるようにする。種々の実施形態では、各計算ノード626が、計算専用のストレージノード150又は特殊な計算ノード626である。ここに示す実施形態では、計算ノード626は、3つのプロセッサ複合体628を有する。各プロセッサ複合体628は、ポート630を有し、そしてローカルメモリ及び更に別のサポート(例えば、デジタル信号処理、直接メモリアクセス、I/Oの種々の形態、グラフィック加速度計、1つ以上のプロセッサ、等)も有する。各ポート630は、スイッチ620に結合される。従って、各プロセッサ複合体628は、このアーキテクチャーでは、関連ポート630及びスイッチ620を経て他の各プロセッサ複合体628と通信することができる。ある実施形態では、各プロセッサ複合体628は、ハートビート(進行中のオペレーションの指示子として観察できる規則的な通信であって、計算ノード又はプロセッサの考えられる欠陥又は非利用性を知らせるハートビートはない)を発生する。ある実施形態では、各計算ノード626は、ハートビートを発生する。更に別の実施形態において、ストレージノード150及び/又はストレージユニット152もハートビートを発生する。 FIG. 9A is a block diagram of compute nodes 626 coupled together with respect to the storage cluster 160. Switch 620 joins all compute nodes 626 together, allowing each compute node 626 to communicate with other compute nodes 626 via switch 620. In various embodiments, each compute node 626 is a compute-only storage node 150 or a special compute node 626. In the embodiment shown here, the compute node 626 has three processor complexes 628. Each processor complex 628 has port 630 and local memory and yet another support (eg, digital signal processing, direct memory access, various forms of I / O, graphic accelerometers, one or more processors, etc. Etc.) Each port 630 is coupled to a switch 620. Therefore, each processor complex 628 can communicate with each other processor complex 628 via the associated port 630 and switch 620 in this architecture. In certain embodiments, each processor complex 628 is a heartbeat, a regular communication that can be observed as an indicator of ongoing operations, indicating a possible defect or non-availability of a compute node or processor. Not). In certain embodiments, each compute node 626 generates a heartbeat. In yet another embodiment, the storage node 150 and / or the storage unit 152 also generate a heartbeat.

図9Bは、図9Aの計算ノード626を伴う、図1ないし5のストレージクラスター160の更に別の実施形態のブロック図である。この実施形態も、ストレージノード150と共に示されている。スイッチ620は、全てのストレージノード150の全てのポート、全ての計算ノード626の全てのポート(例えば、全ての計算ノード626の全てのプロセッサ複合体628)、及びすべてのストレージユニット152を結合する。変形例において、より少数又はより多数のストレージノード150、より少数又はより多数の計算ノード626、より少数又はより多数のストレージユニット152、及びより少数又はより多数のプロセッサ複合体628をシャーシ138に設置することができる。各ストレージノード150、ストレージユニット152又は計算ノード626は、シャーシ138の1つ以上のスロット142(図1を参照)を占有する。図9A及び9Bは、1つの例に過ぎず、これに限定されないことを理解されたい。ある実施形態では、多数のスイッチ620がシャーシ138に一体化され、そして計算ノード626は、図8A及び8Bの実施形態と同様に、ここに述べる実施形態により提供される通信の融通性を達成するために多数のスイッチに結合される。 9B is a block diagram of yet another embodiment of the storage cluster 160 of FIGS. 1-5, with the compute node 626 of FIG. 9A. This embodiment is also shown with the storage node 150. Switch 620 joins all ports of all storage nodes 150, all ports of all compute nodes 626 (eg, all processor complexes 628 of all compute nodes 626), and all storage units 152. In a variant, fewer or more storage nodes 150, fewer or more compute nodes 626, fewer or more storage units 152, and fewer or more processor complexes 628 are installed in chassis 138. can do. Each storage node 150, storage unit 152 or compute node 626 occupies one or more slots 142 (see FIG. 1) of chassis 138. It should be understood that FIGS. 9A and 9B are merely examples and are not limited thereto. In one embodiment, a number of switches 620 are integrated into chassis 138, and compute node 626, similar to the embodiments of FIGS. 8A and 8B, achieves the communication flexibility provided by the embodiments described herein. Combined with a large number of switches.

図9Cは、図9Bの計算ノード626を伴うストレージクラスター160の変形を示すブロック図で、多数のシャーシ138内のストレージノード150、ストレージユニット152及び計算ノード626を示し、これらは、全て1つ以上のストレージクラスター160として一緒に結合される。多数のシャーシ138は、ストレージクラスター160の拡張のために、ラックマウント型で、ここに示すように一緒に結合することができる。この実施形態では、各シャーシ138のスイッチ620(1つ又は複数)は、シャーシ138のコンポーネントを、図9Bを参照して上述したように結合し、そして全てのシャーシ138のスイッチ620(1つ又は複数)は、全てのシャーシ138にわたって一緒に結合される。ストレージノード150及び/又は計算ノード626の種々の組み合せで、ストレージ容量及び/又は計算容量(例えば、アプリケーション、オペレーティングシステム、等を実行するための)が容易に構成され、拡張又は収縮され、或いはバーチャル計算環境においてバーチャル化される。スイッチ620の使用で、多くの他のラックマウントシステムに見られる通常のパッチ配線が減少され又は排除される。 FIG. 9C is a block diagram showing a variant of the storage cluster 160 with compute nodes 626 of FIG. 9B, showing storage nodes 150, storage units 152 and compute nodes 626 in a number of chassis 138, all of which are one or more. Combined together as a storage cluster 160 of. A number of chassis 138s are rack-mounted and can be coupled together as shown here for expansion of the storage cluster 160. In this embodiment, the switches 620 (s) of each chassis 138 combine the components of the chassis 138 as described above with reference to FIG. 9B, and the switches 620 (s) of all chassis 138. The plurality) are coupled together across all chassis 138. Various combinations of storage nodes 150 and / or compute nodes 626 allow storage capacity and / or compute capacity (eg, to run applications, operating systems, etc.) to be easily configured, expanded or contracted, or virtual. Virtualized in a computing environment. The use of switch 620 reduces or eliminates the usual patch wiring found in many other rack mount systems.

ストレージクラスター160のこの及び他の形態の幾つかの実施形態は、1つのシャーシ138、2つのシャーシ138又は多数のシャーシ138において2つ以上の独立したストレージクラスターをサポートすることができる。多ストレージクラスター環境における各ストレージクラスター160は、ストレージノード150、ストレージユニット152及び/又は計算ノード626を、1つの、別の又は両方の、或いはそれ以上のシャーシ138において、種々の組み合せで、有することができる。例えば、第1のストレージクラスター160は、あるシャーシ138に多数のストレージノード150を有し、そして別のシャーシ138に1つ以上のストレージノード150を有することができる。第2のストレージクラスター160は、第1シャーシ138に1つ以上のストレージノード150を、そして第2シャーシ138に1つ以上のストレージノード150を有することができる。これらストレージクラスター160のいずれかは、シャーシ138のいずれか又は両方に計算ノード626を有することができる。各ストレージクラスター160は、それ自身のオペレーティングシステムを有し、且つ他のストレージクラスター160とは独立して実行するそれ自身のアプリケーションを有する。 Some embodiments of this and other embodiments of the storage cluster 160 can support two or more independent storage clusters in one chassis 138, two chassis 138s or multiple chassis 138s. Each storage cluster 160 in a multi-storage cluster environment has storage nodes 150, storage units 152 and / or compute nodes 626 in various combinations in one, another, or more, or more chassis 138. Can be done. For example, the first storage cluster 160 may have a large number of storage nodes 150 in one chassis 138 and one or more storage nodes 150 in another chassis 138. The second storage cluster 160 can have one or more storage nodes 150 in the first chassis 138 and one or more storage nodes 150 in the second chassis 138. Any of these storage clusters 160 may have compute nodes 626 on either or both of chassis 138. Each storage cluster 160 has its own operating system and has its own application running independently of the other storage clusters 160.

図6A−9Cに示す実施形態の幾つか又は全部において多数の特徴が明らかである。多くの実施形態は、各ストレージユニット152がストレージノード150からの支援なしに1つ以上の他のストレージユニット152と直接通信できるような経路を提供する。即ち、ストレージユニット152は、その経路を経て別のストレージユニット152と通信することができ、ストレージノード150は、そのような通信に関わることがない。この直接的経路を経てあるストレージユニット152から別のストレージユニット152への通信に介入し又はそれを支援するストレージノード150はない。ある実施形態では、ストレージユニット152から他のストレージユニット152へ通信するためのそのような直接的経路が設けられる。ある実施形態では、各ストレージユニット152から1つ又は多数の他のストレージユニット152へのそのような直接的経路が設けられるが、必ずしも、他の全てのストレージユニット152ではない。これらの場合に、ストレージユニット152は、1つ以上のストレージノード150及び別の経路を経て、即ちストレージノード150からの支援を得て、別のストレージユニット152と通信することができる。 Many features are apparent in some or all of the embodiments shown in FIGS. 6A-9C. Many embodiments provide a route through which each storage unit 152 can communicate directly with one or more other storage units 152 without assistance from the storage node 150. That is, the storage unit 152 can communicate with another storage unit 152 via the path, and the storage node 150 is not involved in such communication. There is no storage node 150 that intervenes or supports communication from one storage unit 152 to another storage unit 152 via this direct path. In one embodiment, such a direct route is provided for communicating from the storage unit 152 to another storage unit 152. In some embodiments, such a direct route from each storage unit 152 to one or more other storage units 152 is provided, but not necessarily all other storage units 152. In these cases, the storage unit 152 can communicate with another storage unit 152 via one or more storage nodes 150 and another path, i.e. with the support of the storage node 150.

ある実施形態において、あるストレージユニット152から他のストレージユニット152への直接的通信のための経路は、ストレージクラスター160の他のコンポーネントのカップリングに含まれる。ある実施形態では、各ストレージノード150は、全ストレージクラスター160の各ストレージユニット152と直接通信することができる。ある実施形態では、各ストレージノード150は、ストレージユニット152の幾つかと直接的に通信し、そして別のストレージノード150を経て他のストレージユニット152と通信することができる。ある実施形態では、ストレージノード150間の通信及びストレージユニット152間の通信のための経路が分離され、他の実施形態では、それら経路が組み合わされる。ある実施形態では、ストレージノード150とストレージユニット152との間の通信、及びストレージユニット152間の通信のための経路が分離され、そして他の実施形態では、それら経路が組み合わされる。 In certain embodiments, the path for direct communication from one storage unit 152 to another storage unit 152 is included in the coupling of other components of the storage cluster 160. In certain embodiments, each storage node 150 can communicate directly with each storage unit 152 of all storage clusters 160. In one embodiment, each storage node 150 can communicate directly with some of the storage units 152 and with other storage units 152 via another storage node 150. In one embodiment, the routes for communication between the storage nodes 150 and between the storage units 152 are separated, and in other embodiments, the routes are combined. In some embodiments, the routes for communication between the storage node 150 and the storage unit 152, and for communication between the storage units 152, are separated, and in other embodiments, the routes are combined.

ストレージノード150のある態様は、2つのポート608、610を有する。両ポート608、610は、ある実施形態では、2つの異なる経路の選択を経て他のストレージノード150へ通信するのに使用される。ある実施形態では、一方のポート610は、一方の経路を経て他のストレージノード150へ通信するのに使用され、そして別のポート608は、別の経路を経てストレージユニット152と通信するのに使用される。両ポート608、610は、ある実施形態では、ストレージノード150及びストレージユニット152と通信するのに使用される。ストレージユニット152間の直接的な通信をサポートすることにより、これらの種々のアーキテクチャーは、通信ボトルネックを減少することができる。ストレージノード150、並びに処理及び通信帯域巾は、ストレージユニット152間の通信をサポートする上でタイアップされない。このオフロード化の結果として、ユーザデータに対する高速オペレーションのためにストレージノード150は、それらの機能をストレージユニット152へ移行させることができる。 One aspect of the storage node 150 has two ports 608,610. Both ports 608,610 are used in certain embodiments to communicate to another storage node 150 via a selection of two different routes. In one embodiment, one port 610 is used to communicate with the other storage node 150 via one route, and another port 608 is used to communicate with the storage unit 152 via another route. Will be done. Both ports 608,610 are used in certain embodiments to communicate with the storage node 150 and the storage unit 152. By supporting direct communication between storage units 152, these various architectures can reduce communication bottlenecks. The storage node 150, as well as the processing and communication bandwidth, are not tied up to support communication between the storage units 152. As a result of this offloading, the storage node 150 can transfer those functions to the storage unit 152 for high-speed operation on user data.

ストレージユニット152間の通信は、ストレージユニット152が生きていて、健康で、及び/又は状態情報、等であることを確認するために、データ、メタデータ、メッセージを含むことができる。ストレージユニット152が他のストレージユニット152と直接通信する状態で、ストレージノード150(又はストレージノード150のプロセッサ又はコントローラ)が介入せずに、ストレージノード150は、他のプロセスを自由に管理する。ストレージノード150とストレージユニット152との間の通信、又はストレージノード150の幾つかの機能を引き継ぐときのストレージユニット152間の通信は、データ、メタデータ(例えば、データに関する及びデータに関連した情報)、並びにメタメタデータ(例えば、メタデータに関するメタデータ)を伴うデータ断片を含むことができる。又、そのような通信は、パリティ断片、ヘルス、状態及び性能情報を含むこともできる。ストレージユニット152を他のストレージユニット152又はストレージノード150(例えば、ストレージノード150のプロセッサ)によりアクセスできるようにすることで、データ所有権の区別を可変度合でストレージノード150からストレージユニット152へシフトすることができる。これは、ある実施形態では、オーソリティ168又はワードをストレージノード150及びストレージユニット152間でシフトすることを含む。 Communication between storage units 152 may include data, metadata, messages, etc. to ensure that the storage unit 152 is alive, healthy, and / or state information, etc. With the storage unit 152 communicating directly with the other storage unit 152, the storage node 150 is free to manage other processes without the intervention of the storage node 150 (or the processor or controller of the storage node 150). Communication between the storage node 150 and the storage unit 152, or communication between the storage units 152 when taking over some functions of the storage node 150, is data, metadata (eg, data-related and data-related information). , As well as data fragments with metadata (eg, metadata about the metadata). Such communications can also include parity fragments, health, state and performance information. By making the storage unit 152 accessible by another storage unit 152 or a storage node 150 (for example, the processor of the storage node 150), the distinction of data ownership is shifted from the storage node 150 to the storage unit 152 in a variable degree. be able to. This includes shifting the authority 168 or word between the storage node 150 and the storage unit 152 in certain embodiments.

ネットワーク上のストレージユニット152では、ストレージユニット152が計算ノード626と直接的に通信することができる。そのような通信は、計算ノードの識別子を要求に埋め込み、そしてストレージユニット152が、データをストレージノード150へ、次いで、計算ノード626へ返送するのではなく、データを計算ノード626へ直接返送するようにさせることを含む。データの直接的接続、及びデータのキャッシングは、ストレージユニット152においてデータを見つけるためのインテリジェンスを有する計算ノード626について可能とされる。又、計算ノード626は、ストレージユニット152へ進むか又はそこから到来するデータに対して、フィルタリング、変換、等を実施するデータパイプラインにおける特殊な処理に使用することができる。従って、図6A−9Cに示したアーキテクチャーは、ストレージシステム並びにストレージ及び計算システムにおけるコンポーネントの配列及びコンポーネント間の通信についての融通性を示している。データスループット及び通信スループット、そして絶対的又は相対的量のデータ及び計算機能のニーズ並びに予想成長に基づき、あるアーキテクチャーが別のアーキテクチャーより適当となる。ストレージ容量及び計算容量は、種々の実施形態において、調整可能であり、拡張可能であり、そして増減可能である。更に、実施形態は、負荷バランシングのためにより大きな融通性を与える。 In the storage unit 152 on the network, the storage unit 152 can directly communicate with the compute node 626. Such communication embeds the compute node identifier in the request so that the storage unit 152 returns the data directly to the compute node 626 instead of returning the data to the storage node 150 and then to the compute node 626. Including letting you. Direct data connection and data caching are enabled for compute node 626, which has the intelligence to find data in storage unit 152. The compute node 626 can also be used for special processing in the data pipeline that performs filtering, conversion, etc. on the data that proceeds to or arrives from the storage unit 152. Therefore, the architecture shown in FIGS. 6A-9C demonstrates flexibility in the arrangement of components and communication between components in storage systems as well as storage and computing systems. Based on data throughput and communication throughput, as well as the needs and expected growth of absolute or relative quantities of data and computing capabilities, one architecture is more suitable than another. Storage capacity and computational capacity are adjustable, expandable, and adjustable in various embodiments. In addition, the embodiment provides greater flexibility for load balancing.

ストレージクラスター160は、ここに開示する種々の実施形態において、一般的に、ストレージアレイと対照的である。ストレージノード150は、ストレージクラスター160を生成する集合の一部分である。各ストレージノード150は、データのスライスを所有しそしてデータを与えるために要求される計算を行う。データを記憶及び検索するよう協働するために多数のストレージノード150が要求される。一般的に、ストレージアレイに使用されるストレージメモリ又はストレージ装置は、データの処理及び操作があまり含まれない。ストレージアレイにおけるストレージメモリ又はストレージ装置は、データを読み取り、書き込み又は消去するためのコマンドを受け取る。ストレージアレイにおけるストレージメモリ又はストレージ装置は、それらが埋め込まれた大きなシステム又はデータが何を意味するかについて知らない。ストレージアレイにおけるストレージメモリ又はストレージ装置は、種々のタイプのストレージメモリ、例えば、RAM、ソリッドステートドライブ、ハードディスクドライブ、等を含む。ここに述べるストレージユニット152は、同時にアクティブで且つ多数の目的を果たす多数のインターフェイスを有する。ある実施形態では、ストレージノード150の機能の幾つかがストレージユニット152へシフトされ、ストレージユニット152をストレージユニット152及びストレージノード150の組み合せへと変換する。(ストレージデータに対して)計算をストレージユニット152に入れることで、この計算をデータそれ自体により近いものにする。種々のシステム実施形態は、異なる能力をもつストレージノードレイヤのハイアラーキーを有する。対照的に、ストレージアレイでは、コントローラは、コントローラがシェルフ又はストレージ装置において管理する全てのデータに関して何でも所有し且つ知っている。ここに述べるストレージクラスター160において、多数のストレージユニット152及び/又はストレージノード150の多数のコントローラが種々の仕方で(例えば、消去コーディング、データ断片化、メタデータ通信及び冗長性、ストレージ容量拡張又は収縮、データ回復、等のために)協働する。 The storage cluster 160 is generally in contrast to the storage array in the various embodiments disclosed herein. The storage node 150 is a part of the set that creates the storage cluster 160. Each storage node 150 owns a slice of data and performs the calculations required to provide the data. A large number of storage nodes 150 are required to collaborate to store and retrieve data. Generally, the storage memory or storage device used for a storage array does not include much data processing and manipulation. A storage memory or storage device in a storage array receives commands to read, write, or erase data. Storage memory or storage devices in a storage array do not know what the large system or data in which they are embedded means. Storage memory or storage devices in a storage array include various types of storage memory, such as RAM, solid state drives, hard disk drives, and the like. The storage unit 152 described herein has a large number of interfaces that are active at the same time and serve many purposes. In one embodiment, some of the functions of the storage node 150 are shifted to the storage unit 152, converting the storage unit 152 into a combination of the storage unit 152 and the storage node 150. Putting the calculation (for storage data) into the storage unit 152 makes this calculation closer to the data itself. Various system embodiments have storage node layer hierarchy with different capabilities. In contrast, in a storage array, the controller owns and knows everything about all the data that the controller manages on the shelf or storage device. In the storage cluster 160 described herein, a large number of storage units 152 and / or a large number of controllers of storage nodes 150 are used in various ways (eg, erase coding, data fragmentation, metadata communication and redundancy, storage capacity expansion or contraction). Collaborate (for data recovery, etc.).

図10は、ある実施形態によりストレージクラスター、ストレージノード及び/又は不揮発性ソリッドステートストレージ又はストレージユニットの実施形態において又は実施形態により実施できるストレージクラスター動作方法のフローチャートである。アクション1002において、第1のストレージユニットは、メタデータに関する指示又はユーザデータの一部分をストレージクラスターのストレージノードから受信する。例えば、その指示は、ユーザデータの一部分又はデータ断片を記憶し、ユーザデータの一部分又はデータ断片を読み取り、データ断片からデータを構成し、パリティ断片を読み取り又は書き込むための指示、ヘルス、状態又は性能に関して応答するための指示、等を含む。 FIG. 10 is a flowchart of a storage cluster operation method that can be implemented in or according to an embodiment of a storage cluster, a storage node and / or a non-volatile solid-state storage or storage unit according to an embodiment. In action 1002, the first storage unit receives instructions regarding metadata or a portion of user data from the storage nodes of the storage cluster. For example, the instructions store a portion or data fragment of user data, read a portion or data fragment of user data, construct data from the data fragment, and read or write a parity fragment, health, state or performance. Includes instructions for responding to, etc.

アクション1004において、第1のストレージユニットは、ストレージノード(1つ又は複数)からの支援を要求しない経路を経て第2のストレージユニットと直接通信する。この通信は、ユーザデータの一部分又はメタデータに関する通信を含む。メタデータに関する通信の適当な一例は、ハートビートの通信である(これは、ヘルス、状態又は性能について応答する指示に関連している)。ユーザデータの一部分に関する通信の例は、別のストレージユニットからデータ断片を要求するか、又はそのストレージユニットのフラッシュメモリに書き込むために別のストレージユニットへパリティ断片を送信することである。更に別の例は、ここに述べる教示を踏まえて、容易に案出される。アクション1006において、第2のストレージユニットは、第1のストレージユニットから経路を経て通信を受信する。より詳細には、第2のストレージユニットは、ストレージノードからではなく、第1のストレージユニットから直接通信を受け取る。 In action 1004, the first storage unit communicates directly with the second storage unit via a route that does not require assistance from the storage node (s). This communication includes communication relating to a portion of user data or metadata. A good example of communication regarding metadata is heartbeat communication (which is related to instructions that respond to health, condition, or performance). An example of communication for a portion of user data is requesting a data fragment from another storage unit or sending a parity fragment to another storage unit for writing to the flash memory of that storage unit. Yet another example is easily devised in light of the teachings described herein. In action 1006, the second storage unit receives communication from the first storage unit via a route. More specifically, the second storage unit receives communication directly from the first storage unit rather than from the storage node.

アクション1008において、第2のストレージユニットは、第1のストレージユニットからの通信に基づいてアクションを決定する。通信のコンテンツに基づき、第2のストレージユニットは、データを記憶し、メタデータを記憶し、データ又はメタデータを読み取り、そしてそれを第1のストレージユニットへ返送し、第1のストレージユニットからの質問に応答し、等である。適当である場合には、応答が、第2のストレージユニットから第1のストレージユニットへ送信されるか、又はストレージノード(1つ又は複数)からの支援を要求しない経路を経て別のストレージユニットへ送信される。或いは、第2のストレージユニットに対して、ストレージノードの1つ又は計算ノードと通信するアクションが取られる。アクションの更に別の例は、ここに述べる教示を踏まえて、容易に案出される。 In action 1008, the second storage unit determines the action based on the communication from the first storage unit. Based on the content of the communication, the second storage unit stores the data, stores the metadata, reads the data or metadata, and returns it to the first storage unit, from the first storage unit. Answer questions, and so on. Where appropriate, the response is sent from the second storage unit to the first storage unit, or to another storage unit via a route that does not require assistance from the storage node (s). Will be sent. Alternatively, for the second storage unit, an action is taken to communicate with one of the storage nodes or the compute node. Yet another example of an action is easily devised in light of the teachings presented here.

ここに述べる方法は、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行されることが明らかである。1つの機能だけを遂行するように設計又はプログラムされた特殊目的コンピュータを代替的に使用してもよい。図11は、ここに述べる実施形態を具現化する規範的コンピューティング装置を示す図である。図11のコンピューティング装置は、ある実施形態によりストレージノード又は不揮発性ソリッドステートストレージユニットの機能の実施形態を遂行するのに使用される。コンピューティング装置は、中央処理ユニット(CPU)1101を備え、これは、バス1105を通してメモリ1103及び大量ストレージ装置1107に結合される。大量ストレージ装置1107は、ある実施形態においてローカル又はリモートであるディスクドライブのような持続的データストレージ装置を表わす。大量ストレージ装置1107は、ある実施形態では、バックアップストレージを実施することができる。メモリ1103は、リードオンリメモリ、ランダムアクセスメモリ、等を含む。コンピューティング装置に常駐するアプリケーションは、ある実施形態では、メモリ1103又は大量ストレージ装置1107のようなコンピュータ読み取り可能な媒体を経て記憶又はアクセスされる。又、アプリケーションは、ネットワークモデム又はコンピューティング装置の他のネットワークインターフェイスを経てアクセスされる変調型電子信号の形態でもよい。CPU1101は、ある実施形態では、汎用プロセッサ、特殊目的プロセッサ又は特殊プログラムのロジック装置で実施されてもよいことが明らかである。 It is clear that the methods described here are carried out in digital processing systems such as conventional general purpose computer systems. A special purpose computer designed or programmed to perform only one function may be used as an alternative. FIG. 11 is a diagram showing a normative computing device that embodies the embodiments described herein. The computing device of FIG. 11 is used to carry out an embodiment of the function of a storage node or non-volatile solid state storage unit according to certain embodiments. The computing device includes a central processing unit (CPU) 1101, which is coupled to memory 1103 and mass storage device 1107 through bus 1105. Mass storage device 1107 represents a persistent data storage device, such as a disk drive that is local or remote in certain embodiments. Mass storage device 1107 can, in certain embodiments, implement backup storage. The memory 1103 includes a read-only memory, a random access memory, and the like. Applications resident in a computing device are stored or accessed in certain embodiments via a computer-readable medium such as memory 1103 or mass storage device 1107. The application may also be in the form of a modulated electronic signal accessed via a network modem or other network interface of a computing device. It is clear that the CPU 1101 may, in certain embodiments, be implemented in a general purpose processor, a special purpose processor, or a logic device of a special program.

ディスプレイ1111は、バス1105を通して、CPU1101、メモリ1103、及び大量ストレージ装置1107と通信する。ディスプレイ1111は、ここに述べるシステムに関連した視覚化ツール又はレポートを表示するよう構成される。入力/出力装置1109は、コマンド選択の情報をCPU1101へ通信するためにバス505に結合される。外部装置へ及び外部装置からのデータは、入力/出力装置1109を通して通信される。CPU1101は、図1ないし6を参照して述べた機能を可能とするためにここに述べる機能を実行することが定義される。この機能を実施するコードは、ある実施形態では、CPU1101のようなプロセッサにより実行するためにメモリ1103又は大量ストレージ装置1107内に記憶される。コンピューティング装置のオペレーティングシステムは、MS−WINDOWSTM、UNIXTM、LINUXTM、iOSTM、CentOSTM、AndroidTM、Redhat LinuxTM、z/OSTM、又は他の既知のオペレーティングシステムである。ここに述べる実施形態は、バーチャル化コンピューティングシステムとも一体化できることが明らかである。 The display 1111 communicates with the CPU 1101, the memory 1103, and the mass storage device 1107 through the bus 1105. Display 1111 is configured to display visualization tools or reports associated with the systems described herein. The input / output device 1109 is coupled to the bus 505 to communicate command selection information to the CPU 1101. Data to and from the external device is communicated through the input / output device 1109. The CPU 1101 is defined to perform the functions described herein in order to enable the functions described with reference to FIGS. 1-6. In certain embodiments, the code that performs this function is stored in memory 1103 or mass storage device 1107 for execution by a processor such as CPU 1101. The operating system of the computing device is MS-WINDOWS TM , UNIX TM , LINUX TM , iOS TM , CentOS TM , Android TM , Redhat Linux TM , z / OS TM , or other known operating system. It is clear that the embodiments described here can also be integrated with a virtual computing system.

詳細な規範的な実施形態がここに開示された。しかしながら、ここに開示された特定の機能は、実施形態を説明するためのものに過ぎない。しかしながら、それら実施形態は、多数の別の形態で実施されてもよく、ここに述べた実施形態のみに限定されない。 Detailed normative embodiments are disclosed herein. However, the particular features disclosed herein are merely for the purpose of illustrating embodiments. However, those embodiments may be implemented in a number of other embodiments and are not limited to the embodiments described herein.

第1、第2、等の語は、ここでは、種々のステップ又は計算を説明するために使用されるが、それらのステップ又は計算は、それらの語によって限定されないことを理解されたい。それらの語は、あるステップ又は計算を別のステップ又は計算と区別するためにのみ使用される。本開示の範囲から逸脱せずに、例えば、第1の計算は、第2の計算と称することができ、そして同様に、第2のステップは、第1のステップと称することができる。ここで使用する「及び/又は」という語及び「/」記号は、1つ以上の関連リスト項目のいずれか及び全ての組み合せを含む。 It should be understood that the terms first, second, etc. are used herein to describe the various steps or calculations, but those steps or calculations are not limited by those terms. Those terms are used only to distinguish one step or calculation from another. Without departing from the scope of the present disclosure, for example, the first calculation can be referred to as the second calculation, and similarly, the second step can be referred to as the first step. The word "and / or" and the "/" symbol used herein include any and all combinations of one or more related list items.

ここで使用する単数形“a”、“an”及び“the”は、文脈が明確に指示しない限り、複数形も包含するものとする。“comprises(備える)”、“comprising(備えている)”、“includes(含む)”及び/又は“including(含んでいる)”は、ここで使用されるとき、述べた特徴、整数、ステップ、オペレーション、要素、及び/又はコンポーネントの存在を特定するが、1つ以上の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、及び/又はそのグループの存在又は追加を除外するものではないことを更に理解されたい。それ故、ここで使用する用語は、特定の実施形態を説明するものに過ぎず、それに限定されない。 The singular forms "a", "an" and "the" as used herein shall also include the plural form unless the context explicitly indicates. “Comprises”, “comprising”, “includes” and / or “including”, when used herein, are the features, integers, steps, described above. Identify the existence of operations, elements, and / or components, but do not preclude the existence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Please understand further. Therefore, the terms used herein are merely to describe a particular embodiment and are not limited thereto.

又、別の実施形態において、ここに述べる機能/行為は、図示されたのとは異なる順序で行われてもよいことに注意されたい。例えば、連続的に示される2つの図は、含まれる機能/行為に基づいて、実際上、実質的に同時に実行されてもよいし、或いは時には逆の順序で実行されてもよい。 It should also be noted that in another embodiment, the functions / actions described herein may be performed in a different order than shown. For example, the two figures shown in succession may be executed substantially simultaneously, or sometimes in reverse order, based on the functions / actions included.

以上の実施形態に念頭に置いて、それらの実施形態は、コンピュータシステムに記憶されたデータを伴う種々のコンピュータ実施オペレーションを使用できることを理解されたい。それらのオペレーションは、物理量の物理的操作を要求するものである。通常、必ずしもそうではないが、それらの量は、記憶、転送、合成、比較、及びその他、操作することのできる電気的又は磁気的信号の形態をとる。更に、遂行される操作は、生成、識別、又は比較という語でしばしば表わされる。実施形態の一部分を形成するここに述べるオペレーションは、いずれも、有用なマシンオペレーションである。又、実施形態は、それらのオペレーションを遂行するためのデバイス又は装置にも関連する。装置は、要求された目的のために特別に構成されてもよいし、或いは装置は、コンピュータに記憶されたコンピュータプログラムにより選択的にアクチベート又は構成される汎用コンピュータでもよい。特に、種々の汎用マシンは、ここに述べる教示に従って書かれたコンピュータプログラムと共に使用されてもよいし、或いは要求されたオペレーションを遂行するための特殊な装置を構成するのがより便利である。 With the above embodiments in mind, it should be understood that those embodiments can use various computer-implemented operations with data stored in the computer system. Those operations require physical manipulation of physical quantities. Usually, but not always, their quantities take the form of electronic or magnetic signals that can be stored, transferred, synthesized, compared, and otherwise manipulated. Moreover, the operations performed are often referred to by the terms generation, identification, or comparison. All of the operations described herein that form part of an embodiment are useful machine operations. The embodiments also relate to devices or devices for performing those operations. The device may be specially configured for the requested purpose, or the device may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written according to the teachings described herein, or it is more convenient to configure special equipment to perform the requested operation.

モジュール、アプリケーション、レイヤ、エージェント、又は他の方法−動作可能なエンティティは、ハードウェア、ファームウェア、又はプロセッサ実行ソフトウェア、或いはその組み合せとして実施することができる。又、ソフトウェアベースの実施形態がここに開示されたが、ソフトウェアは、コントローラのような物理的マシンで実施できることが明らかである。例えば、コントローラは、第1モジュール及び第2モジュールを備えている。コントローラは、例えば、方法、アプリケーション、レイヤ、又はエージェントの種々のアクションを遂行するように構成できる。 Modules, applications, layers, agents, or other methods-workable entities can be implemented as hardware, firmware, or processor execution software, or a combination thereof. Also, although software-based embodiments have been disclosed herein, it is clear that the software can be implemented on a physical machine such as a controller. For example, the controller includes a first module and a second module. The controller can be configured to perform various actions of, for example, a method, application, layer, or agent.

又、実施形態は、非一時的コンピュータ読み取り可能な媒体上のコンピュータ読み取り可能なコードとして実施することができる。コンピュータ読み取り可能な媒体は、データを記憶し、その後、コンピュータシステムにより読み取られるデータストレージ装置である。コンピュータ読み取り可能な媒体は、例えば、ハードドライブ、ネットワークアタッチ型ストレージ(NAS)、リードオンリメモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、並びに他の光学的及び非光学的データストレージ装置を含む。又、コンピュータ読み取り可能な媒体は、ネットワーク結合のコンピュータシステムにわたって分散されて、コンピュータ読み取り可能なコードが分散形態で記憶され且つ実行されるようにすることができる。ここに述べる実施形態は、ハンドヘルド装置、タブレット、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者電子装置、ミニコンピュータ、メインフレームコンピュータ、等を含む種々のコンピュータシステム構成で実施できる。又、実施形態は、ワイヤベースのネットワーク又はワイヤレスネットワークを通してリンクされるリモート処理装置によりタスクが遂行される分散型コンピューティング環境でも実施できる。 The embodiment can also be implemented as a computer-readable code on a non-temporary computer-readable medium. A computer-readable medium is a data storage device that stores data and then is read by a computer system. Computer-readable media include, for example, hard drives, network-attached storage (NAS), read-only memory, random access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical tapes. Includes optical data storage equipment. Computer-readable media can also be distributed across network-coupled computer systems so that computer-readable code is stored and executed in distributed form. The embodiments described herein can be implemented in various computer system configurations including handheld devices, tablets, microprocessor systems, microprocessor-based or programmable consumer electronic devices, minicomputers, mainframe computers, and the like. The embodiments can also be implemented in a decentralized computing environment in which tasks are performed by remote processing devices linked through wire-based or wireless networks.

方法のオペレーションは、特定の順序で説明したが、ここに述べたオペレーションとオペレーションとの間に他のオペレーションが遂行されてもよく、ここに述べたオペレーションは、それらが若干異なる時間に行われるように調整されてもよく、或いはここに述べるオペレーションは、処理に関連した種々の間隔で処理オペレーションを行えるようにするシステムにおいて分散されてもよい。 The operations of the method have been described in a particular order, but other operations may be performed between the operations described here, such that the operations described here are performed at slightly different times. Alternatively, the operations described herein may be distributed in a system that allows processing operations to be performed at various processing-related intervals.

種々の実施形態において、ここに述べる方法及びメカニズムの1つ以上の部分は、クラウドコンピューティング環境の一部分を形成してもよい。そのような実施形態では、1つ以上の種々のモデルによるサービスとしてインターネットを経てリソースが提供される。そのようなモデルは、インフラストラクチャーをサービス(IaaS)として含み、プラットホームをサービス(PaaS)として含み、そしてソフトウェアをサービス(SaaS)として含む。IaaSでは、コンピュータインフラストラクチャーがサービスとして与えられる。そのようなケースでは、コンピューティング装置は、一般的に、サービスプロバイダーにより所有されそして動作される。PaaSモデルでは、ソフトウェア解決策を開発するために開発者により使用されるソフトウェアツール及び基本的な装置は、サービスプロバイダーによりサービスとして提供されそしてホストされる。SaaSは、典型的に、ソフトウェアをオンデマンドでサービスとして使用許諾するサービスプロバイダーを含む。サービスプロバイダーは、ソフトウェアをホストしてもよいし、又は所与の期間中に顧客にソフトウェアを配備してもよい。以上のモデルの多数の組み合せが考えられ、そして意図される。 In various embodiments, one or more parts of the methods and mechanisms described herein may form part of a cloud computing environment. In such an embodiment, resources are provided via the Internet as a service according to one or more different models. Such a model includes the infrastructure as a service (IaaS), the platform as a service (PaaS), and the software as a service (SaaS). In Infrastructure as a Service, computer infrastructure is provided as a service. In such cases, the computing device is generally owned and operated by the service provider. In the PaaS model, software tools and basic equipment used by developers to develop software solutions are provided and hosted as services by service providers. SaaS typically includes a service provider that licenses the software as a service on demand. The service provider may host the software or deploy the software to the customer during a given period of time. Many combinations of the above models are conceivable and intended.

種々のユニット、回路又は他のコンポーネントは、タスク(1つ又は複数)を遂行するように「構成される」として記述され又は請求項に述べられる。そのような文脈では、「構成される」という句は、ユニット/回路/コンポーネントがオペレーション中にタスク(1つ又は複数)を遂行する構造体(例えば、回路)を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット/回路/コンポーネントは、特定のユニット/回路/コンポーネントが現在動作していなくても(例えば、オンでなくても)タスクを遂行するように構成されると言うことができる。「構成される」という語と共に使用されるユニット/回路/コンポーネントは、ハードウェアを含み、例えば、オペレーション等を具現化するために実行可能なプログラムインストラクションを記憶するメモリ、回路を含む。1つ以上のタスクを遂行するようにユニット/回路/コンポーネントが「構成される」ことを述べることは、そのユニット/回路/コンポーネントに対して、35U.S.C.112、第6節を引用しないことが明確に意図される。更に、「構成される」は、論争中のタスク(1つ又は複数)を遂行できるように動作するためにソフトウェア及び/又はファームウェア(例えば、FPGA又は汎用プロセッサ実行ソフトウェア)により操作される一般的構造(例えば、一般的回路)を含む。又、「構成される」は、1つ以上のタスクを実施又は遂行するための装置(例えば、集積回路)を製造するように製造プロセス(例えば、半導体製造ファシリティ)を適応させることも含む。 The various units, circuits or other components are described or claimed as "configured" to perform a task (s). In such a context, the phrase "configured" by indicating that a unit / circuit / component includes a structure (eg, a circuit) that performs a task (s) during operation. Used to imply a structure. Thus, a unit / circuit / component can be said to be configured to perform a task even if a particular unit / circuit / component is not currently operating (eg, not on). Units / circuits / components used with the term "configured" include hardware, eg, memory, circuits that store program instructions that can be executed to embody operations and the like. To state that a unit / circuit / component is "configured" to perform one or more tasks is 35 U.S. S. C. It is clearly intended not to cite 112, Section 6. In addition, "configured" is a general structure operated by software and / or firmware (eg, FPGA or general purpose processor execution software) to operate to perform a controversial task (s). Includes (eg, general circuits). "Constructing" also includes adapting a manufacturing process (eg, a semiconductor manufacturing facility) to manufacture a device (eg, an integrated circuit) for performing or performing one or more tasks.

以上、特定の実施形態を参照して、本発明を説明した。しかしながら、以上の説明は、余すところのないものでもないし、ここに開示する正確な形態に本発明を限定するものでもない。前記教示に鑑み多数の変更や修正が考えられる。前記実施形態は、それら実施形態の原理及びその実際の応用を最良に説明するために選択され記述されたもので、当業者が、意図された特定の使用に適するように実施形態及び種々の変更を最良に利用できるようにする。従って、本発明の実施形態は、例示であって、これに限定されず、本発明は、ここに述べた詳細に限定されず、特許請求の範囲及びその等効物内で変更されてもよい。 The present invention has been described above with reference to the specific embodiments. However, the above description is not exhaustive and does not limit the present invention to the exact form disclosed herein. Many changes and modifications can be considered in view of the above teachings. The embodiments have been selected and described to best explain the principles of those embodiments and their practical applications, and will be adapted by those skilled in the art to suit their intended specific use. To make the best use of. Therefore, embodiments of the present invention are exemplary and not limited thereto, and the present invention is not limited to the details described herein and may be modified within the scope of the claims and their equivalents. ..

102:企業用コンピューティングシステム
104:処理リソース
106:ネットワークリソース
108:ストレージリソース
110:処理コントローラ
112:ネットワークコントローラ
114:ストレージコントローラ
116:プロセッサ
118:RAM
120:ルーター
122:スイッチ
124:サーバー
126:ハードドライブ
128:フラッシュストレージ
130:フラッシュコントローラ
132:フラッシュメモリ
138:シャーシ
140:ネットワーク
142:スロット
144:ファン
146:スイッチファブリック
148:フラップ
150:ストレージノード
152:不揮発性ソリッドステートストレージ
154:メモリ
156:CPU
158:プリント回路板
160:ストレージクラスター
168:オーソリティ
170:通信相互接続
172:配電
174、176:外部ポート
178:外部電源
204:不揮発性ランダムアクセスメモリ(NVRAM)
206:フラッシュメモリ
208:プログラマブルロジック装置(PLD)
210:入力/出力(I/O)ポート
212:コントローラ
214:直接メモリアクセスユニット(DMA)
216:ダイナミックランダムアクセスメモリ(DRAM)
218:エネルギー貯蔵器
222:フラッシュダイ
226:レジスタ
602、604、612、614:経路
606:電源
616:第1経路
618:第2経路
620:ネットワークスイッチ
622、624:経路
626:計算ノード
628:プロセッサ複合体
630:ポート
1101:CPU
1103:メモリ
1105:バス
1107:大量ストレージ装置
1109:入力/出力装置
1111:ディスプレイ
102: Enterprise computing system 104: Processing resource 106: Network resource 108: Storage resource 110: Processing controller 112: Network controller 114: Storage controller 116: Processor 118: RAM
120: Router 122: Switch 124: Server 126: Hard drive 128: Flash storage 130: Flash controller 132: Flash memory 138: Chassis 140: Network 142: Slot 144: Fan 146: Switch fabric 148: Flap 150: Storage node 152: Non-volatile solid state storage 154: Memory 156: CPU
158: Printed circuit board 160: Storage cluster 168: Authority 170: Communication interconnection 172: Distribution 174, 176: External port 178: External power supply 204: Non-volatile random access memory (NVRAM)
206: Flash memory 208: Programmable logic device (PLD)
210: Input / output (I / O) port 212: Controller 214: Direct memory access unit (DMA)
216: Dynamic Random Access Memory (DRAM)
218: Energy storage 222: Flash die 226: Registers 602, 604, 612, 614: Path 606: Power supply 616: First path 618: Second path 620: Network switch 622, 624: Path 626: Computation node 628: Processor Complex 630: Port 1101: CPU
1103: Memory 1105: Bus 1107: Mass storage device 1109: Input / output device 1111: Display

Claims (19)

ストレージシステムにおいて、
複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのストレージメモリを有し、
複数のストレージノードを更に備え、それら複数のストレージノードの各々は、ユーザデータの一部分の所有権を有するように構成され、及び
前記複数のストレージユニットを結合する第1経路を備え、前記複数のストレージユニットの各々が前記複数のストレージノードからの支援なしに第1経路を経て前記複数のストレージユニットの少なくとも1つの他のストレージユニットと通信できるようにされ、前記第1経路は、ネットワークスイッチを含む、
ストレージシステム。
In the storage system
It has multiple storage units, each of which has a storage memory for user data.
A plurality of storage nodes are further provided, and each of the plurality of storage nodes is configured to have ownership of a part of the user data, and includes a first path for connecting the plurality of storage units, and the plurality of storages. Each of the units is allowed to communicate with at least one other storage unit of the plurality of storage units via a first path without assistance from the plurality of storage nodes, the first path including a network switch.
Storage system.
前記複数のストレージノードを結合する第2経路を備え、前記複数のストレージノードの各々が第2経路を経て前記複数のストレージノードの各他のストレージユニットと通信できるようにする、請求項1に記載のストレージシステム。 The first aspect of the present invention, wherein the second path for connecting the plurality of storage nodes is provided, and each of the plurality of storage nodes can communicate with each other storage unit of the plurality of storage nodes via the second path. Storage system. 前記複数のストレージユニットの第1サブセットを結合する前記第1経路の第1部分
更に備えた、請求項1に記載のストレージシステム。
The first portion of the first path that joins the first subset of the plurality of storage units.
Further comprising, a storage system according to claim 1.
前記複数のストレージノードを結合する第2経路を備え、
前記第1経路は、前記複数のストレージユニットの各々を前記複数のストレージユニットの各他のストレージユニットに結合する請求項1に記載のストレージシステム。
A second path for connecting the plurality of storage nodes is provided.
The storage system according to claim 1, wherein the first path connects each of the plurality of storage units to each other storage unit of the plurality of storage units.
前記複数のストレージユニットの第2サブセットを結合する前記第1経路の第2部分を更に備える、請求項に記載のストレージシステム。 The storage system according to claim 3 , further comprising a second portion of the first path that combines the second subsets of the plurality of storage units . 前記ストレージメモリは、ソリッドステートストレージメモリを含む、請求項1に記載のストレージシステム。 The storage system according to claim 1, wherein the storage memory includes a solid state storage memory. 互いに結合され、かつ、前記第1経路を通って前記複数のストレージノードを結合する複数の計算ノードを更に備え
請求項1に記載のストレージシステム。
Are coupled to each other, and, further Ru comprising a plurality of compute nodes for coupling said plurality of storage nodes through said first path,
The storage system according to claim 1.
ストレージクラスターにおいて、
複数のスロットを備え、各スロットは、ストレージノード又はストレージユニットを受け入れるよう構成され、その各々は、前記複数のスロットの1つ以上を占有することができ、
複数のストレージユニットを備え、
前記複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有し、
第1経路を備え、この第1経路は、この第1経路を経て前記複数のストレージユニットの第1ストレージユニットから前記複数のストレージユニットの第2ストレージユニットへの通信に介入するか又はそれを支援するストレージノードがないように前記複数のストレージユニットを結合し、
少なくとも1つのネットワークスイッチを備え、この少なくとも1つのネットワークスイッチは、前記第1経路を含み、
複数のストレージノードを備え、前記少なくとも1つのネットワークスイッチは、前記複数のストレージノードを結合する、
ストレージクラスター。
In a storage cluster
It comprises a plurality of slots, each slot being configured to accept a storage node or storage unit, each of which can occupy one or more of the plurality of slots.
Equipped with multiple storage units
Each of the plurality of storage units has a solid state storage memory for user data.
A first path is provided, and the first path intervenes in or supports communication from the first storage unit of the plurality of storage units to the second storage unit of the plurality of storage units via the first path. storage node to the plurality of storage units coupled so as not,
It comprises at least one network switch, the at least one network switch including said first path.
A plurality of storage nodes are provided, and the at least one network switch combines the plurality of storage nodes.
Storage cluster.
前記複数のストレージノードに結合する第2経路を更に備える
請求項8に記載のストレージクラスター。
A second path that connects to the plurality of storage nodes is further provided .
The storage cluster according to claim 8.
前記第1経路は、前記複数のストレージユニットの各々を前記複数のストレージユニットの各他のストレージユニットに結合する
請求項8に記載のストレージクラスター。
Said first path couples each of the plurality of storage units to each other storage units of said plurality of storage units,
The storage cluster according to claim 8.
1つ以上の計算ノードを更に備え、
前記1つ以上の計算ノードの各々は、1つ以上のプロセッサ複合体を有する、
請求項8に記載のストレージクラスター。
With one or more compute nodes
Each of the one or more computing nodes, which have the one or more processor complex,
The storage cluster according to claim 8.
1つ以上の計算ノードを更に備え、
前記ネットワークスイッチは、前記1つ以上の計算ノードの各々、前記ストレージノードの各々、
及び前記複数のストレージユニットの各々を一緒に結合する、
請求項8に記載のストレージクラスター。
With one or more compute nodes
The network switch, each of the one or more computing nodes, each of the storage nodes,
And combine each of the plurality of storage units together.
The storage cluster according to claim 8.
前記第1経路は、前記1つ以上の計算ノードの各々の前記1つ以上のプロセッサ複合体の各々を一緒に結合する、
請求項12に記載のストレージクラスター。
The first path joins each of the one or more processor complexes of each of the one or more compute nodes together.
The storage cluster according to claim 12 .
ストレージシステムにおいて、
複数のストレージユニットを備え、
前記複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有し、
第1経路を更に備え、前記複数のストレージユニットの各々は、前記第1経路を経て前記複数のストレージユニットの少なくとも1つの他のストレージユニットと通信するように結合され、
複数のストレージノードを更に備え、それら複数のストレージノードの各々は、その中に複数のストレージユニットのサブセットを有すると共に、ユーザデータの一部分の所有権を有し、前記複数のストレージノードは、ストレージユニット間の直接的通信には関与せず、
前記複数のストレージノードを結合する第2経路を更に備え
及び
少なくとも1つのネットワークスイッチであって、前記第1経路及び前記第2経路は、その少なくとも1つのネットワークスイッチに含まれる、
ストレージシステム。
In the storage system
Equipped with multiple storage units
Each of the plurality of storage units has a solid state storage memory for user data.
A first path is further provided, and each of the plurality of storage units is coupled so as to communicate with at least one other storage unit of the plurality of storage units via the first path.
A plurality of storage nodes are further provided, and each of the plurality of storage nodes has a subset of a plurality of storage units in the plurality of storage nodes and has ownership of a part of user data, and the plurality of storage nodes are storage units. Not involved in direct communication between
Further provided with a second path for connecting the plurality of storage nodes ,
as well as
At least one network switch, the first path and the second path are included in the at least one network switch.
Storage system.
前記第1経路は、前記複数のストレージユニットの第1及び第2のストレージユニットを互いに且つ前記複数のストレージノードの第1ストレージノードに結合する第1バスを含み、
前記第1経路は、前記複数のストレージユニットの第3及び第4のストレージユニットを互いに且つ前記複数のストレージノードの第2ストレージノードに結合する第2バスを含む、
請求項14に記載のストレージシステム。
The first path includes a first bus that connects the first and second storage units of the plurality of storage units to each other and to the first storage node of the plurality of storage nodes.
Said first path, said plurality of storage units of the third and fourth storage units to each other and second bus including binding to a second storage node of the plurality of storage nodes,
The storage system according to claim 14 .
前記第1経路は、前記複数のストレージユニットを結合するバスを備え、このバスは、前記複数のストレージユニットを通ることを除いて前記複数のストレージノードに結合されていない
請求項14に記載のストレージシステム。
The first path includes a bus that connects the plurality of storage units, and this bus is not connected to the plurality of storage nodes except through the plurality of storage units.
The storage system according to claim 14 .
前記複数のストレージユニットの各々は、前記第1経路を経て前記複数のストレージユニットの各他のストレージユニットと通信するように結合され、前記ストレージノードは、それらストレージユニット間のそのような直接的通信には関与しない、請求項14に記載のストレージシステム。 Each of the plurality of storage units is coupled to communicate with each other storage unit of the plurality of storage units via the first path, and the storage node is such a direct communication between the storage units. 14. The storage system of claim 14 , which is not involved in. 少なくとも1つのネットワークスイッチを更に備え、前記第1経路及び前記第2経路は、その少なくとも1つのネットワークスイッチに含まれる、請求項14に記載のストレージシステム。 Further comprising at least one network switch, the first path and the second path is included in at least one network switch, storage system according to claim 14. 1つ以上の計算ノードを更に備え、その各々は、1つ以上のプロセッサ複合体を有する、請求項14に記載のストレージシステム。 Further comprising one or more computing nodes, each of which have a one or more processors complex storage system according to claim 14.
JP2017542073A 2015-02-10 2016-01-22 Storage system architecture Active JP6796589B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/618,999 2015-02-10
US14/618,999 US9213485B1 (en) 2014-06-04 2015-02-10 Storage system architecture
PCT/US2016/014604 WO2016130301A1 (en) 2015-02-10 2016-01-22 Storage system architecture

Publications (2)

Publication Number Publication Date
JP2018506123A JP2018506123A (en) 2018-03-01
JP6796589B2 true JP6796589B2 (en) 2020-12-09

Family

ID=56615039

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017542073A Active JP6796589B2 (en) 2015-02-10 2016-01-22 Storage system architecture

Country Status (5)

Country Link
EP (1) EP3256939A4 (en)
JP (1) JP6796589B2 (en)
CN (1) CN107408074B (en)
AU (1) AU2016218381B2 (en)
WO (1) WO2016130301A1 (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509601B2 (en) 2016-12-28 2019-12-17 Amazon Technologies, Inc. Data storage system with multi-tier control plane
US10514847B2 (en) 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10771550B2 (en) * 2016-12-28 2020-09-08 Amazon Technologies, Inc. Data storage system with redundant internal networks
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US10521135B2 (en) 2017-02-15 2019-12-31 Amazon Technologies, Inc. Data system with data flush mechanism
US11010064B2 (en) 2017-02-15 2021-05-18 Amazon Technologies, Inc. Data system with flush views
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
CN112527186B (en) * 2019-09-18 2023-09-08 华为技术有限公司 Storage system, storage node and data storage method
US11182096B1 (en) 2020-05-18 2021-11-23 Amazon Technologies, Inc. Data storage system with configurable durability
US11681443B1 (en) 2020-08-28 2023-06-20 Amazon Technologies, Inc. Durable data storage with snapshot storage space optimization
CN113297432B (en) * 2021-06-01 2023-11-07 阿里巴巴新加坡控股有限公司 Method, processor-readable medium, and system for partition splitting and merging

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643748B1 (en) * 2000-04-20 2003-11-04 Microsoft Corporation Programmatic masking of storage units
US6658478B1 (en) * 2000-08-04 2003-12-02 3Pardata, Inc. Data storage system
US20060080319A1 (en) * 2004-10-12 2006-04-13 Hickman John E Apparatus, system, and method for facilitating storage management
WO2006131879A2 (en) * 2005-06-09 2006-12-14 Nxp B.V. Storage unit for a communication system node, method for data storage and communication system node
US20120203712A1 (en) * 2011-04-26 2012-08-09 Fennell Paul Method and apparatus for issuing municipal bonds redeemable for future payments of taxes and other obligations to issuing municipality
US8924632B2 (en) * 2011-09-16 2014-12-30 Apple Inc. Faster tree flattening for a system having non-volatile memory
US8726084B2 (en) * 2011-10-14 2014-05-13 Honeywell International Inc. Methods and systems for distributed diagnostic reasoning
US8792492B2 (en) * 2011-10-17 2014-07-29 Telcordia Technologies, Inc. Open communication method in a heterogeneous network
US9116819B2 (en) * 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system
CN103019838B (en) * 2012-11-14 2015-07-08 清华大学 Multi-DSP (Digital Signal Processor) platform based distributed type real-time multiple task operating system
US8850108B1 (en) * 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US8874836B1 (en) * 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage

Also Published As

Publication number Publication date
CN107408074B (en) 2021-07-27
AU2016218381B2 (en) 2021-03-11
WO2016130301A1 (en) 2016-08-18
JP2018506123A (en) 2018-03-01
CN107408074A (en) 2017-11-28
AU2016218381A1 (en) 2017-08-24
EP3256939A4 (en) 2018-08-29
EP3256939A1 (en) 2017-12-20

Similar Documents

Publication Publication Date Title
US11677825B2 (en) Optimized communication pathways in a vast storage system
JP7135129B2 (en) storage cluster
US11079962B2 (en) Addressable non-volatile random access memory
US11188269B2 (en) Configuration for multiple logical storage arrays
JP6796589B2 (en) Storage system architecture
US11704073B2 (en) Ownership determination for accessing a file
US11734186B2 (en) Heterogeneous storage with preserved addressing
US20230275965A1 (en) Multilevel Load Balancing

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180606

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180705

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191101

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200330

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200923

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20200923

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20201002

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20201005

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201116

R150 Certificate of patent or registration of utility model

Ref document number: 6796589

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250