CN107408074B - 存储系统架构 - Google Patents

存储系统架构 Download PDF

Info

Publication number
CN107408074B
CN107408074B CN201680015081.XA CN201680015081A CN107408074B CN 107408074 B CN107408074 B CN 107408074B CN 201680015081 A CN201680015081 A CN 201680015081A CN 107408074 B CN107408074 B CN 107408074B
Authority
CN
China
Prior art keywords
storage
nodes
path
units
node
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
CN201680015081.XA
Other languages
English (en)
Other versions
CN107408074A (zh
Inventor
约翰·海耶斯
约翰·科尔格洛夫
约翰·D·戴维斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingrui Storage Co ltd
Original Assignee
Jingrui Storage Co ltd
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 Jingrui Storage Co ltd filed Critical Jingrui Storage Co ltd
Publication of CN107408074A publication Critical patent/CN107408074A/zh
Application granted granted Critical
Publication of CN107408074B publication Critical patent/CN107408074B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种存储系统被提供。该存储系统包括:多个存储单元,该多个存储单元中的每一者具有用于存储用户数据的存储存储器;以及多个存储节点,该多个存储节点中的每一者被配置为具有用户数据的一部分的所有权。存储系统包括第一路径,该第一路径耦合多个存储单元,使得多个存储单元中的每一者在没有多个存储节点的协助的情况下能够经由第一路径与多个存储单元中的至少一个其他存储单元进行通信。

Description

存储系统架构
背景技术
为了存储大量数据,目前在固态驱动器(SSD)中使用诸如闪存的固态存储器来增强或取代统称为旋转介质的传统硬盘驱动器(HDD)、可写CD(高密度磁盘)或可写DVD(数字通用光盘)驱动器以及磁带驱动器。闪存和其他固态存储器具有与旋转介质不同的特性。但是,许多固态驱动器由于兼容性的原因被设计为符合硬盘驱动器标准,这使得难以提供闪存和其他固态存储器的增强特征或难以利用它们在独特方面的优势。旋转介质在常规存储阵列的存储单元或存储节点之间的连接通信路径的灵活性或可变性方面受到限制。
在此背景下提出各个实施例。
发明内容
在一些实施例中,提供了一种存储系统。该存储系统包括多个存储单元,该多个存储单元中的每一者具有用于存储用户数据的存储存储器,以及多个存储节点,该多个存储节点中的每一者被配置为具有用户数据的一部分的所有权。存储系统包括第一路径,该第一路径将多个存储单元耦合,使得多个存储单元中的每一者在没有多个存储节点的协助的情况下可以经由第一路径与多个存储单元中的至少一个其他存储单元进行通信。
在一些实施例中,提供了一种存储群集。存储群集包括单个机箱,该单个机箱具有多个插槽,每个插槽被配置为接收存储节点或存储单元,存储节点或存储单元中的每一者可占据多个插槽中的一者或多者。存储群集包括在所述单个机箱中的多个存储单元,这多个存储单元中的每一者具有用于存储用户数据的固态存储存储器。存储群集包括第一路径,该第一路径在单个机箱中并且将多个存储单元耦合,使得没有存储节点对从这多个存储单元中的第一者经由第一路径至这多个存储单元中的第二者的通信进行干涉或协助。在一些实施例中,提供了一种在单个机箱中的存储系统。存储系统包括在单个机箱中的多个存储单元,多个存储单元中的每一者具有用于存储用户数据的固态存储存储器。存储系统包括在单个机箱中的第一路径,多个存储单元中的每一者经由该第一路径与多个存储单元中的至少一个其他存储单元耦合以进行通信。存储系统包括在单个机箱中的多个存储节点,多个存储节点中的每一者在其中具有多个存储单元的子集并具有用户数据的一部分的所有权,其中多个存储节点不参与在存储单元之间进行的直接通信。存储系统包括在单个机箱中的第二路径,该第二连接将多个存储节点耦合。
从结合附图的以下详细描述,实施例的其他方面和优点将变得显而易见,附图通过示例的方式说明了所描述的实施例的原理。
附图说明
通过参考结合附图进行的以下描述,可以最好地理解所描述的实施例及其优点。在不脱离所描述的实施例的精神和范围的情况下,这些附图绝不限制本领域技术人员可以对所描述的实施例进行的形式和细节的任何改变。
图1是根据一些实施例的具有多个存储节点和耦合到每个存储节点以提供网络附接存储的内部存储装置的存储群集的透视图;
图2是在一些实施例中可以使用图1的存储群集中的一者或多者作为存储资源的企业计算系统的系统图;
图3是示出根据一些实施例的适合在图1的存储群集中使用的多个存储节点和具有不同容量的非易失性固态存储装置的框图;
图4是示出根据一些实施例的互连交换机耦合多个存储节点的的框图;
图5是根据一些实施例的显示存储节点的内容和非易失性固态存储单元中的一者的内容的多级框图;
图6A是根据一些实施例的存储群集的又一实施例的框图,该存储群集具有在存储节点和存储单元之间及之内的连接的一个示例;
图6B是根据一些实施例的图6A的存储群集内的连接的变体;
图7是根据一些实施例的图1-图5的存储群集的又一实施例的框图,该存储群集适用于数据存储或数据存储与计算的组合;
图8A是根据一些实施例的图1-图5的存储群集内的连接的又一实施例的框图;
图8B是根据一些实施例的图8A的存储群集内的连接的变体,其中交换机与存储单元耦合;
图9A是根据一些实施例的用于存储群集的耦合在一起的计算节点的架构的一个示例的框图;
图9B是根据一些实施例的图1-图5的存储群集内的连接的又一实施例的框图,该存储群集具有图9A的计算节点;
图9C是根据一些实施例的具有图9B的计算节点的存储群集的变体的框图,该框图描绘了多个机箱中的存储节点、存储单元和计算节点,它们全部耦合在一起作为一个或多个存储群集,并描绘了在机箱内及机箱之间的连接的变体;
图10是根据一些实施例的用于操作存储群集的方法的流程图,该方法可以在存储群集、存储节点和/或非易失性固态存储装置或存储单元的实施例上或通过它们的实施例实践;
图11是示出可实现本文所描述的实施例的示例性计算设备的图示。
具体实施方式
以下实施例描述了一种存储群集,该存储群集存储用户数据,例如,源自一个或多个用户或客户端系统或存储群集外部的其他来源的用户数据。存储群集使用纠删码及元数据冗余副本将用户数据跨越容置在机箱内的存储节点分布。纠删码是指一种数据保护或数据重建方法,在该方法中跨越一组不同的位置(例如,磁盘、存储节点或地理位置)对数据进行存储。闪存存储器是可与实施例结合的一种类型的固态存储器,但是实施例可延伸至其他类型的固态存储器或包括非固态存储器的其他存储介质。存储位置和工作负载的控制跨越在群集对等系统中的存储位置中分布。诸如在各存储节点之间进行中间通信、检测存储节点何时变为不可用以及跨越各种存储节点平衡I/O(输入和输出)之类的任务全部都是基于分布式进行处理的。在一些实施例中,数据以支持数据恢复的数据片段或数据条带的形式跨越多个存储节点设置或分布。数据的所有权可独立于输入和输出模式在群集内进行再分配。这种在下面被更详细地描述的架构在保持系统可操作的同时允许群集中的存储节点失效,因为数据可从其他存储节点处被重建,从而维持数据可用于进行输入和输出操作。在各种实施例中,存储节点可被称为群集节点、刀片或服务器。
存储群集包含在机箱内,即,容置一个或多个存储节点的壳体内。机箱内包括用于向各存储节点提供电力的机构(例如,配电总线)以及诸如能够在存储节点之间进行通信的通信机构(例如,通信总线)。根据一些实施例,存储群集可在一个位置中作为独立系统运行。在一个实施例中,机箱包含可以独立地启用或禁用的配电总线和通信总线二者的至少两个实例。内部通信总线可以是以太网总线,但是,诸如快捷外围外设互连(PCI Express)、无限带宽技术(InfiniBand)之类的其他技术也同样适用。机箱提供用于外部通信总线的端口,以直接地或通过交换机促进在多个机箱之间以及与客户端系统之间的通信。外部通信可使用诸如以太网、InfiniBand、光纤通道等技术。在一些实施例中,外部通信总线使用不同的通信总线技术用于机箱间通信和客户端通信。在交换机部署在机箱之内或之间的情况下,交换机可作为多种协议或技术之间的转换。当通过连接多个机箱来限定存储群集时,客户端可通过使用专用接口或标准接口访问存储群集,所述标准接口例如有网络文件系统(NFS)、通用互联网文件系统(CIFS)、小型计算机系统接口(SCSI)或超文本传输协议(HTTP)等。客户端协议的转换可能发生在交换机、机箱外部通信总线处或在每个存储节点内。
每个存储节点可以是一个或多个存储服务器,并且每个存储服务器连接至可被称为存储单元的一个或更多个非易失性固态存储器单元。一个实施例包括:每个存储节点中以及1至8个非易失性固态存储器单元之间的单个存储服务器,然而这一个示例并不意味着限制。存储服务器可包括处理器、动态随机存取存储器(DRAM)以及用于内部通信总线的接口和用于每个电力总线的配电接口。在一些实施例中,在存储节点内部,接口和存储单元共享通信总线(例如,PCI Express)。非易失性固态存储器单元可通过存储节点通信总线直接访问内部通信总线接口,或请求存储节点访问总线接口。在一些实施例中,非易失性固态存储器单元包含嵌入式中央处理单元(CPU)、固态存储控制器和一定数目的固态海量存储装置(例如,容量在2-32太字节(TB)之间)。在非易失性固态存储单元中包括诸如DRAM的嵌入式易失性存储介质和能量储备装置。在一些实施例中,能量储备装置为电容器、超级电容器或在断电的情况下能够向稳定存储介质传输DRAM内容的子集的电池。在一些实施例中,非易失性固态存储器单元由存储级存储器构成,例如替代DRAM并且能够实现低功率保持装置的相变或磁阻随机存取存储器(MRAM)。
存储节点和非易失性固态存储装置的许多特征中的一个是能够在存储群集中主动重建数据。存储节点和非易失性固态存储装置可确定在存储群集中的存储节点或非易失性存储节点固态存储装置何时无法访问,这与是否尝试进行对涉及该存储节点或非易失性固态存储装置的数据的读取无关。随后,存储节点和非易失性固态存储装置进行合作来在至少部分新的位置处恢复和重建数据。这构成主动重建,因为系统无需等待利用存储群集的客户端系统发起对数据进行读取访问就能重建数据。以下讨论存储存储器及其操作的这些细节和更多的细节。
图1是根据一些实施例的具有多个存储节点150和耦合到每个存储节点的内部固态存储器来提供网络附接存储或存储区域网络的存储群集160的透视图。网络附接存储、存储区域网络或存储群集或其他存储存储器可包括一个或多个存储群集160,每个存储群集160均具有一个或多个存储节点150,存储节点150在物理组件和由此提供的存储存储器的存储量方面灵活地且可重新配置地进行设置。存储群集160被设计为装配在机架中,并且可根据对存储存储器的需求来建立和填充一个或多个机架。存储群集160包括具有多个插槽142的机箱138。应当理解的是,机箱138可被称为外壳、壳体或机架单元。在一个实施例中,机箱138具有14个插槽142,但是其他数目的插槽也容易预想到。例如,一些实施例具有4个插槽、8个插槽、16个插槽、32个插槽或其他合适数目的插槽。在一些实施例中,每个插槽142可容置一个存储节点150。机箱138包括可用于将机箱138安装在机架上的翼片148。风扇144提供用于冷却存储节点150及其部件的空气循环,但是可以使用其他冷却部件,或者可以预想到不具有冷却部件的实施例。交换机结构146将机箱138内的存储节点150彼此耦合并将它们耦合到用于与存储器进行通信的网络。在图1描述的实施例中,出于说明性目的,交换机结构146和风扇144左侧的插槽142被示出为由存储节点150占据,而交换机结构146和风扇144右侧的插槽142是空的且可用用于插入存储节点150。这样的配置是一个示例,并且一个或多个存储节点150可以以各种其他布置形式占据插槽142。在一些实施例中,存储节点的布置不需要是顺序的或相邻的。存储节点150是可热插的,这意味着无需使系统停机或关闭便可将存储节点150插入至机箱138中的插槽142,或者从插槽142移除。一旦存储节点150插入插槽142或从插槽142移除,系统自动进行重新配置以识别并适应该变化。在一些实施例中,重新配置包括冗余恢复和/或数据或负载再平衡。
每个存储节点150可具有多个组件。在此示出的实施例中,存储节点150包括由CPU156(即,处理器)、耦合到CPU 156的存储器(MEM)154、以及耦合到CPU 156的非易失性固态存储装置152填充的印刷电路板158,但是可在进一步的实施例中使用其他配件和/或组件。存储器154具有由CPU 156执行的指令和/或由CPU 156操作的数据。如以下进一步的解释的,非易失性固态存储装置152包括闪存,或者在进一步的实施例中包括其他类型的固态存储器。
图2是企业计算系统102的系统图,其可使用图1中的一个或更多个存储节点、存储群集和/或非易失性固态存储器作为存储资源108。例如在一些实施例中,图2中的闪存存储装置128可结合图1中的存储节点、存储群集和/或非易失性固态存储器。企业计算系统102具有处理资源104、网络资源106和包括闪存存储装置128的存储资源108。闪存控制器130和闪存存储器132被包括在闪存存储装置128中。在各种实施例中,闪存存储装置128可包括一个或更多个存储节点或存储群集,其中闪存控制器130包括CPU,以及闪存存储器132包括存储节点的非易失性固态存储装置。在一些实施例中,闪存存储器132可包括不同类型的闪存存储器或相同类型的闪存存储器。企业计算系统102示出了适用于部署闪存存储器128的环境,但是闪存存储器128可用于其他更大或更小的计算系统或设备中,或者具有更少的资源或具有附加的资源的企业计算系统102的变体中。企业计算系统102可耦合到诸如互联网的网络140,以便提供或使用服务。例如,企业计算系统102可提供云服务、物理计算资源或虚拟计算服务。
在企业计算系统102中,通过各种控制器布置和管理各种资源。处理控制器110管理处理资源104,这些处理资源包括处理器116和随机存取存储器(RAM)118。网络控制器112管理网络资源106,这些网络资源包括路由器120、交换机122和服务器124。存储控制器114管理存储资源108,这些存储资源包括硬盘驱动器126和闪存存储装置128。实施例中可包括其他类型的处理资源、网络资源和存储资源。在一些实施例中,闪存存储装置128完全替代硬盘驱动器126。企业计算系统102可提供或分配各种资源作为物理计算资源,或在变体中作为物理计算资源支持的虚拟计算资源。例如,这些各种资源可通过使用一个或多个服务器运行软件来实现。在存储资源108中存储文件或数据对象或其他形式的数据。
在各种实施例中,企业计算系统102可包括由存储群集填充的多个机架,并且这些机架可位于单个物理位置中,例如,群集或服务器区中。在其他实施例中,多个机架可位于通过网络连接的多个物理位置中,例如在多个城市、州或国家中。每个机架、每个存储群集、每个存储节点和每个非易失性固态存储装置可以单独地配置有各自的存储空间,各自的存储空间随后可独立于彼此进行再配置。因此,可灵活地增加、升级、消减、恢复和/或再配置每个非易失性固态存储装置上的存储容量。在一些实施例中,如上所述,每个存储节点可实现一个或更多个服务器。
图3是示出适于在图1的存储群集中使用的具有多个存储节点150和不同容量的非易失性固态存储装置152的框图。每个存储节点150可具有一个或更多个非易失性固态存储装置152单元。在一些实施例中,每个非易失性固态存储装置152可具有与存储节点150(或其他存储节点150)上的其他非易失性固态存储装置152不同的容量。可选地,存储节点上或多个存储节点上的所有非易失性固态存储装置152可具有相同容量或相同和/或不同容量的组合。这种灵活性在图3中示出,图3示出存储节点的示例,在该示例中存储节点150具有容量为4TB、8TB和32TB的混合非易失性固态存储装置152,另一存储节点具有每个容量为32TB的非易失性固态存储装置152,又一存储节点具有每个容量为8TB的非易失性固态存储装置152。根据本文的教导,容易预想到进一步其他组合和容量。在有群集(例如,使存储装置群集以形成存储群集)的情况中,存储节点可以是或包括非易失性固态存储装置152。如将在以下进一步描述的,非易失性固态存储装置152是方便的群集点,因为非易失性固态存储装置152可包括非易失性随机存取存储器(NVRAM)组件。
参照图1和图3,如上所述,存储群集160是可缩放的,这意味着,容易添加存储大小不均匀的存储容量。在一些实施例中,一个或多个存储节点150可插接在每个机箱中或可从每个机箱移出,并且存储群集自配置。无论是交付时已安装在机箱中的插接式存储节点150或是之后要添加的插接式存储节点150都可具有不同的大小。例如,在一个实施例中,存储节点150可具有4TB的任何倍数,例如8TB、12TB、16TB、32TB等。在另外的实施例中,存储节点150可具有其他存储量或容量。每个存储节点150的存储容量被广播,并且由此对关于如何条带化数据的决定产生影响。为了实现最大的存储效率,受制于连续操作的预定要求(机箱内的非易失性固态存储单元152或存储节点150至多一个或两个失效),实施例可以在条带中尽可能宽地自配置。
图4是示出通信互连170和配电总线172耦合多个存储节点150的框图。返回参照图1,在一些实施例中,通信互连170可被包括在交换机结构146中或利用交换机结构146实现。在一些实施例中,在机架由多个存储群集160占据的情况下,通信互连170可被包括在架顶式交换机中或与架顶式交换机一起被实现。如图4所示,存储群集160被封装在单个机箱138中。外部端口176通过通信互连170耦合到存储节点150,而外部端口174直接耦合到存储节点。外部电源端口178耦合到配电总线172。如参照图3的描述,存储节点150可包括不同数量以及不同容量的非易失性固态存储装置152。此外,如图4中所示,一个或多个存储节点150可以是仅计算存储节点。在各种实施例中,仅计算存储节点150执行存储群集160的计算功能,或者用作计算节点利用去往、存储在存储群集160中的非易失性固态存储装置152或从存储群集160中的非易失性固态存储装置撷取的数据来执行计算功能和/或运行应用的功能。权限(authority)168在非易失性固态存储装置152中实现,例如作为存储在存储器中的列表或其他数据结构。在一些实施例中,权限存储在非易失性固态存储装置152内并得到在非易失性固态存储装置152的控制器或其他处理器上运行的软件的支持。在进一步的实施例中,权限存储在存储节点150中实现,例如作为存储在存储器154中并得到在存储节点150的CPU 156上运行的软件的支持的列表或其他数据结构。在一些实施例中,权限168控制数据如何存储在非易失性固态存储装置152中以及在非易失性固态存储装置152中何处存储数据。权限168的控制帮助确定将哪种类型的纠删码方案应用于数据,以及哪些存储节点150具有数据的哪些部分。每个权限168可被分配至非易失性固态存储装置152。在各种实施例中,每个权限可控制由文件系统、存储节点150、或非易失性固态存储装置152分配给数据的索引节点号、段号或其他数据标识符的范围。
在一些实施例中,在系统中每一数据片段和每一元数据片段都具有冗余。此外,每一数据片段和每一元数据片段都有所有者,也可被称为权限,或者在一些版本中被称为特权(ward),其中权限是一组或一套特权。如果(例如由于存储节点的失效)权限不可访问,则存在如何找到该数据或该元数据的接替计划。在各种实施例中,存在权限168的冗余副本。在一些实施例中,权限168与存储节点150和非易失性固态存储装置152有关联。覆盖一定范围的数据段号或数据的其他标识符的每个权限168(以及由此在权限为一组特权的实施例中的每组特权)可被分配给特定的非易失性固态存储装置152。在一些实施例中,用于所有这种范围的权限168被分布在存储群集的非易失性固态存储装置152上。每个存储节点150具有向该存储节点150的(一个或更多个)非易失性固态存储装置152提供访问的网络端口。在一些实施例中,数据可存储在与段号相关联的段中,并且该段号是针对RAID(独立磁盘的冗余阵列)条带的配置的间接寻址(indirection)。因此,权限168(以及可应用时的特权)的分配和使用建立到数据的间接寻址。根据一些实施例,间接寻址可被称为(在这种情况下经由权限168)间接引用数据的能力。段识别可能包含数据的一组非易失性固态存储装置152和对该非易失性固态存储器装置152的本地标识符。在一些实施例中,本地标识符是设备中的偏移,并且可被多个段依次地重复使用。在其他实施例中,本地标识符针对具体段是唯一的,并且不被重复使用。非易失性固态存储装置152中的偏移被应用于定位用于(以RAID条带的形式)向非易失性固态存储装置152写入的或从非易失性固态存储装置152读取的数据。数据跨越多个非易失性固态存储装置152单元被条带化,该多个非易失性固态存储装置152单元可包括或不同于具有用于具体数据段的权限168的非易失性固态存储装置152。
如果特定数据段所处的位置发生改变(例如在数据移动或数据重建期间),则应在具有该权限168的非易失性固态存储装置152或存储节点150处查询针对该数据段的权限168。为了定位具体数据片段,实施例计算针对数据段的哈希值或或应用索引节点号或数据段号。这个操作的输出指向具有针对该具体数据片段的权限168的非易失性固态存储装置152。在一些实施例中,该操作有两个阶段。第一阶段将实体标识符(ID)(例如,段号、索引节点号或目录号)映射至权限标识符。该映射可包括诸如哈希或位掩码的计算。第二阶段是将权限标识符映射到具体的非易失性固态存储装置152,该阶段可通过显式映射来完成。操作是可重复的,使得当执行计算时,计算的结果可重复地且可靠地指向具有该权限168的具体非易失性固态存储装置152。该操作可包括将一组可达到的存储节点作为输入。如果该组可达到的非易失性固态存储单元更改了,则最佳组随之更改。在一些实施例中,持续值是当前赋值(其总为真),并且所计算的值是群集将尝试重新配置的目标赋值。该计算可用于在存在构成相同群集的一组可达到的非易失性固态存储装置152的情况下,确定针对权限的最佳非易失性固态存储装置152。该计算还确定一组排序的对等非易失性固态存储装置152,其也会记录权限到非易失性固态存储装置的映射,使得即使在所分配的非易失性固态存储装置不可达到的情况下也可确定权限。在一些实施例中,如果特定权限168不可用,则可查询副本或替代权限168。
参照图1-图4,存储节点150上的CPU 156的许多任务中的两个是分解写入数据,并且重组读取数据。当系统确定数据要被写入时,针对该数据的权限168被如上定位。当数据的段ID已经被确定时,写入请求被转发至当前确定为通过段确定的权限168的主机的非易失性固态存储装置152。随后,非易失性固态存储装置152和对应的权限168所在的存储节点150的主机CPU 156将数据分解或分片,并将数据发送到各种非易失性固态存储装置152。传输的数据根据纠删码方案作为数据条带被写入。在一些实施例中,请求数据被拉回,而在其他实施例中,数据被推出。相反,当读取数据时,如上所述定位针对包含数据的段ID的权限168。非易失性固态存储装置152和对应的权限168所在的存储节点150的主机CPU 156从该权限指向的非易失性固态存储装置和对应的存储节点请求数据。在一些实施例中,从闪存存储装置读取作为数据条带的数据。然后,存储节点150的主机CPU 156根据适当的纠删码方案重组读取的数据、校正任何错误(若存在)、并向网络转发重组的数据。在进一步的实施例中,这些任务中的一些或全部可在非易失性固态存储装置152中处理。在一些实施例中,段主机请求通过如下方式将数据发送到存储节点150:请求来自存储的页面,并且随后将数据发送至进行最初请求的存储节点。
在一些系统中,例如在UNIX类型文件系统中,用指定表示文件系统中的对象的数据结构的索引点或索引节点来处理数据。例如,对象可以是文件或目录。元数据可以伴随对象作为诸如许可数据和创建时间戳等属性以及其他属性出现。段号可分配给文件系统中全部或部分这种对象。在其他系统中,数据段利用在别处分配的段号进行处理。出于讨论的目的,分配单位是实体,且实体可以是文件、目录或段。也就是说,实体是通过存储系统存储的数据或元数据的单元。实体被分组为被称为权限的集合。每个权限都有权限所有者,权限所有者是具有对权限中的实体更新的专用权的存储节点。换句话说,存储节点包含权限,而权限又包含实体。
根据一些实施例,段是数据的逻辑容器。段是介质地址空间和物理闪存位置之间的地址空间,也就是说,数据段号在该地址空间中。段还可包含元数据,这些元数据无需涉及更高级别的软件便可使数据冗余恢复(重写到不同的闪存位置或设备)。在一个实施例中,段的内部格式包含用于确定该数据的位置的客户数据和介质映射。在适用的情况下,通过将段分解成若干数据和校验碎片来保护每个数据段,例如免受存储器和其他故障。根据纠删码方案,数据和校验碎片跨越耦合到主机CPU 156(见图5)的非易失性固态存储装置152被分布,即条带化。在一些实施例中,术语“段”的使用是指容器及其在段的地址空间中的位置。根据一些实施例,术语“条带”的使用是指与段相同的一组碎片,并且包括碎片是如何连同冗余或校验信息一起分布。
一系列地址空间转换是跨越整个存储系统进行的。首先是链接到索引节点的目录条目(文件名)。索引节点指向逻辑存储数据的介质地址空间。介质地址可通过一系列间接介质被映射,以便分散大文件的负荷,或实现诸如删除重复或快照之类的数据服务。接着,段地址被转换成物理闪存位置。根据一些实施例,物理闪存位置具有通过系统中的闪存量限制的地址范围。介质地址和段地址是逻辑容器,并且在一些实施例中使用128位或更大的标识符,以便实践中可以无限大(具有在计算为比系统的预期寿命长的时期被重复使用的可能性)。在一些实施例中,以分层方式分配来自逻辑容器的地址。最初,每个非易失性固态存储装置152可被分配有一定范围的地址空间。在该分配的范围内,非易失性固态存储装置152能够分配地址而无需与其他非易失性固态存储装置152同步。
数据和元数据通过一组基础存储布局存储,该基础存储布局针对不同工作负载模式和存储设备是最优的。这些布局结合了多种冗余方案、压缩格式和索引算法。其中一些布局存储有关权限和权限主体的信息,而其他布局存储文件元数据和文件数据。冗余方案包括错误校正码,错误校正码容许在单个存储设备(例如,NAND闪存芯片)内的损坏位;纠删码,纠删码容许多个存储节点的失效;以及复制方案,复制方案容许数据中心或区域故障。在一些实施例中,在单个存储单元内使用低密度奇偶校验(LDPC)码。在一些实施例中,在存储群集中使用里所编码(Reed-Solomon编码),并且在存储网格内使用镜像。元数据可通过使用有序日志结构化索引(例如,日志结构合并树)被存储,并且在日志结构化布局中不可存储大数据。
为了维持跨越实体的多个副本的一致性,存储节点通过计算隐含地允许两件事:(1)包含实体的权限,以及(2)包含权限的存储节点。实体向权限的分配可通过以下方式进行:向权限伪随机地分配实体、基于外部产生的密钥将实体分割到各范围、或者将单个实体放置到每个权限。伪随机方案的示例是线性哈希和RUSH(Replication Under ScalableHashing,可扩展哈希算法下的复制算法)哈希族,包括CRUSH(Controlled ReplicationUnder Scalable Hashing,可扩展哈希算法下的可控复制算法)。在一些实施例中,所以伪随机分配仅被用于向节点分配权限,因为变节点集可能改变。因为权限集不能改变,所以任何主观功能可应用在这些实施例中。一些布局方案会自动将权限置于存储节点上,而其他布局方案依靠权限到存储节点的显式映射。在一些实施例中,利用伪随机方案将每个权限映射到一组候选权限所有者。与CRUSH相关的伪随机数据分布函数可将权限分配给存储节点并创建权限被分配至何处的列表。每个存储节点具有伪随机数据分布函数的副本,并且可实现有关分布、以及随后有关查找或定位权限的相同计算。为了得到相同的目标节点,在一些实施例中,每个伪随机方案请求一组可达到的存储节点作为输入。一旦实体被放置在权限中,该实体就可被存储在物理设备上,使得没有预期故障将造成数据的损失。在一些实施例中,再平衡算法尝试将所有实体的副本存储在相同布局中和同一组机器上的权限内。
预期故障的示例包括:设备故障、机器被盗、数据中心火灾和诸如核事件或地质事件的区域性灾害。不同的故障导致不同级别的可接受数据损失。在一些实施例中,被盗存储节点既不影响系统的安全性也不影响系统的可靠性,而根据系统配置,区域事件可能会导致无数据丢失、数秒钟或数分钟丢失更新、甚至是数据全部丢失。
在实施例中,放置针对存储冗余的数据与放置针对数据一致性的权限无关。在一些实施例中,包含权限的存储节点不包含任何永久存储装置。相反,存储节点被连接到不包含权限的非易失性固态存储单元。在存储节点和非易失性固态存储单元之间的通信互连由多种通信技术组成并具有非统一的性能和容错特性。在一些实施例中,如上所述,非易失性固态存储单元通过PCI express连接到存储节点,存储节点通过使用以太网背板在单个机箱内连接在一起,并且机箱连接在一起以形成存储群集。在一些实施例中,存储群集通过使用以太网或光纤通道连接到客户端。如果多个存储群集配置到存储网格中,则这多个存储群集使用互联网或其他远程网络链路(例如“城域网规模”链路或不经由互联网的私人链路)来连接。
权限所有者具有修改实体的专用权,以便将实体从一个非易失性固态存储单元迁移到另一非易失性固态存储单元以及添加和移除实体的副本。这允许维护基础数据的冗余。当权限所有者失效、停用或过载时,权限被转移到新的存储节点。瞬时失效使得确保所有非故障机器都同意新的权限位置是有意义的。由于瞬时失效引起的模糊性可通过一致性协议(例如,Paxos协议、热温失效转移方案)、经由远程系统管理员或本地硬件管理员的人工干预(例如,通过从群集物理地移除故障机器,或按下故障机器上的按钮)自动实现。在一些实施例中,一致性协议被使用,并且故障转移是自动发生的。根据一些实施例,如果在太短的时间周期内发生太多故障或复制事件,则系统进入自我保护模式并停止复制和数据移动活动,直到管理员进行干预为止。
当权限在存储节点之间转移以及权限所有者在其权限中更新实体时,系统在存储节点和非易失性固态存储单元之间传送消息。关于持续消息,具有不同目的的消息为不同的类型。根据消息的类型,系统保持不同的排序并保持稳定性。当持续消息正被处理时,该消息临时存储在多个持久性和非持久性存储硬件技术中。在一些实施例中,消息存储在RAM、NVRAM和NAND闪存设备中,并且各种协议被使用以便有效地使用每个存储介质。延迟敏感的客户端请求可保存在复制的NVRAM中,然后再保存在NAND中,同时后台再平衡操作直接保存到NAND。
持续消息在被复制之前被持久地存储。这允许系统在发生故障和更换组件的情况下继续服务客户端请求。虽然许多硬件组件包含对系统管理员、制造商、硬件供应链和持续监控质量控制设施可见的唯一标识符,但在基础设施地址之上运行的应用程序可虚拟化地址。这些经虚拟化的地址即使在发生组件故障和更换组件的情况下在存储系统的整个生命周期内都不会改变。这允许存储系统的每个组件无需重新配置或中断对客户端请求的处理就能被替换。
在一些实施例中,通过足够的冗余存储虚拟化地址。连续监控系统将硬件和软件状态与硬件标识符相关联。这允许检测和预测由于组件故障和制造细节造成的故障。在一些实施例中,监控系统还通过从关键路径移除组件,实现在故障发生之前离开受影响的设备的权限和实体。
图5是示出存储节点150的内容和存储节点150的非易失性固态存储装置152的内容的多级框图。在一些实施例中,数据通过接口控制器(NIC)202传输到存储节点150和从存储节点150向外传输。如上所述,每个存储节点150具有CPU 156和一个或多个非易失性固态存储装置152。在图5中向下移动一个级别,每个非易失性固态存储装置152具有相对较快的非易失性固态存储器,诸如非易失性随机存取存储器(NVRAM)204和闪存存储器206。在一些实施例中,NVRAM 204可以是不需要编程/擦除循环的组件(DRAM、MRAM、PCM),并且可以是支持写入远比读取操作更频繁的存储器。在图5中向下移动至另一级别,一个实施例中,NVRAM204被实现为高速易失性存储器,诸如动态随机存取存储器(DRAM)216,能量储备218作为其备份。在电源故障的情况下,能量储备218提供足够的电力来使DRAM 216供电足够长的时间以将内容传送到闪速存储器206。在一些实施例中,能量储备218是电容器、超级电容器、电池或其他装置,它们提供足够的能量供应以在电源故障的情况下将DRAM 216的内容传送到稳定的存储介质。闪存206被实现为多个闪存芯片222,其可被称为闪存芯片222的封装或闪存芯片222的阵列。应当理解的是,闪存芯片222可以通过以下任意多种方式被封装:每个封装单个芯片、每个封装多个芯片(即,多芯片封装)、混合封装、作为印刷电路板或其他基板上的裸芯片、作为密封芯片等。在所示的实施例中,非易失性固态存储装置152具有控制器212或其他处理器以及耦合到控制器212的输入输出(I/O)端口210。I/O端口210被耦合到闪存存储节点150的CPU 156和/或网络接口控制器202。闪存输入输出(I/O)端口220被耦合到闪存芯片222,以及直接存储器存取单元(DMA)214耦合到控制器212、DRAM 216和闪存芯片222。在所示的实施例中,I/O端口210、控制器212、DMA单元214和闪存I/O端口220在可编程逻辑器件(PLD)208上实现,例如现场可编程门阵列(FPGA)。在该实施例中,每个闪存芯片222具有被组成16kB(千字节)页224的页面和寄存器226,数据可通过该寄存器写入闪存芯片222或从闪存芯片222读取。在进一步的实施例中,使用其他类型的固态存储器来代替闪存芯片222内示出的闪速存储器或者在其之外使用。
图6A是图1-图5的存储群集160的进一步的实施例的框图。在该实施例中,组件位于机箱138中,例如具有图1所示的多个插槽的机箱138中。具有配电总线172(如图2所示)的电源606向机箱138中的各种组件供电。在一个实施例中,两个存储节点150被示为耦合到路径604,例如网络交换机620。其他路径也很容易预想到。路径604将存储节点150彼此耦合,并且还可将存储节点150耦合到机箱138外部的网络,从而允许连接到外部设备、系统或网络。
多个存储单元152通过不同于网络交换机620或其他路径604的另一路径602彼此耦合并被耦合到存储节点150。在一个实施例中,耦合存储单元152和存储节点150的另一路径602是PCI Express总线(PCIe),但是可以使用其他总线、网络和各种其他耦合方式。在一些实施例中,存在用于将存储节点150耦合到路径602(例如,PCI Express总线)的透明网桥。
为了连接到两个路径602、604,每个存储节点150具有两个端口608、610。每个存储节点150的端口610中的一者耦合到路径604中的一者,每个存储节点150的另一端口608耦合到另一路径602。
在一些实施例中,每个存储节点150可作为计算节点执行计算功能。例如,存储节点150可运行一个或多个应用。此外,存储节点150可经由路径602与存储单元152通信,以便写入和读取用户数据(例如,通过使用纠删码),如参照图1-图3的描述。作为另一示例,运行一个或多个应用的存储节点150可利用用户数据,生成用于存储在存储单元152中的用户数据、从存储单元152读取和处理用户数据,等等。即使损失了存储单元152中的一者,或在一些实施例中,损失了存储单元152中的两者,存储单元152、存储节点150和/或剩余存储单元152仍然可读取用户数据。
在一些实施例中,纠删码功能主要或完全在存储单元152中执行,这样释放了存储节点150的计算功率。这允许存储节点150将更多的关注放在例如运行一个或多个应用程序的计算节点任务上。在一些实施例中,纠删码功能主要或完全在存储节点150中执行。这允许存储节点150将更多的关注放在存储节点任务上。在一些实施例中,纠删码功能在存储节点150和存储单元152之间共享。这样允许存储节点150具有在计算节点任务和存储节点任务之间共享的可用计算带宽。
由于两个路径602、604彼此不同,许多优点变得显而易见。通路602、604都不会成为瓶颈,而在只存在一个将存储节点150与存储单元152彼此耦合以及耦合到外部网络的路径的情况下就可能会出现瓶颈。仅通过一条路径,敌意方便可访问对存储单元152直接访问,而不必经过存储节点150。通过两个路径602、604,存储节点150可通过一条路径604彼此耦合,例如,用于进行多处理器应用或处理器间通信。存储节点150中的任一者可使用另一路径602对存储单元152进行数据访问。因此,图6A所示的架构支持各种存储和计算功能及场景。特别地,图6A中所示的一个实施例是单个机箱138中的存储和计算系统。随着存储和/或计算需求的变化,形式为一个或多个存储节点150的处理能力和形式为一个或多个存储单元152的存储容量可容易地添加至机箱138。
图6B是图6A的存储群集160的变体。在这个版本中,路径612具有特定于包括在每个存储节点150中的存储单元152的部分。在一个实施例中,路径612被实现为将存储单元152和存储节点150彼此耦合的PCI Express总线。也就是说,在一些实施例中,一个刀片中的存储节点150和存储单元152共享PCI Express总线。PCI Express总线特定于这个刀片,并且不直接耦合到另一刀片的PCI Express总线。因此,刀片中的存储单元152可彼此进行通信,并与该刀片中的存储节点150进行通信。通过网络交换机620(例如路径614)来进行从一个刀片中的存储单元152或存储节点150至另一刀片中的存储节点150或存储单元152的通信。
图7是图1-图5中的存储群集160的适用于数据存储或数据存储和计算的组合的进一步的实施例的框图。图7的版本具有通过第一路径616彼此耦合的所有存储单元152,其中第一路径616可以是总线、网络或硬连线网、以及其他可能性。一个存储节点150耦合到两个存储单元152中的每一者。另一存储单元152耦合到另外两个存储单元152中的每一者。由存储节点150至存储单元152的耦合示出了第二路径618。
图8A是图1-图5中的存储群集160的具有交换机620的进一步的实施例的框图。一个交换机620将所有存储节点150彼此耦合。另一交换机620也将所有存储节点150彼此耦合。在该实施例中,每个存储节点150具有两个端口,其中每个端口连接至交换机620中的一者。端口和交换机620的这种布置为每个存储节点150提供两条路径以连接到任意其他存储节点150。例如,最左侧的存储节点150可经由所选择的第一交换机620或第二交换机620连接到最右侧的存储节点150(或存储群集160中的任何其他存储节点150)。应当理解的是,该架构将通信瓶颈消除。根据本文的教导,容易预想到具有一个交换机620、彼此耦合的两个交换机620或多于两个交换机620以及具有其他数目的端口或网络的其他实施例。
图8B是图8A中的存储群集160的变体,其中交换机620耦合存储单元152。如图8A的实施例中,交换机620耦合存储节点150,为每个存储节点150提供两条路径来与任何其他存储节点150进行通信。此外,交换机620耦合存储单元152。每个存储节点150中的存储单元152中的两者耦合到其中一个交换机620,并且每个存储节点150中的一个或多个存储单元152耦合到另一个交换机620。通过这种方式,每个存储单元152可经由交换机620中的一者连接到存储群集中的其他大约一半存储单元152。在一个变体中,交换机620彼此耦合(如图8B中的虚线所示),并且每个存储单元可经由交换机620连接到任意其他存储单元152。根据本文的教导,容易预想到具有一个交换机620、或其他数目的交换机以及其他连接布置和其他数目的连接组件的其他实施例。
图9A是针对存储群集160彼此耦合的计算节点626的框图。交换机620将所有计算节点626耦合在一起,使得每个计算节点626可经由交换机620与任意其他计算节点626进行通信。在各种实施例中,每个计算节点626可以是仅计算存储节点150或专用计算节点626。在所示的实施例中,计算节点626具有三个处理器复合体628。每个处理器复合体628具有端口630,并且还可具有本地存储器和进一步支持(例如,数字信号处理、直接存储器访问、各种形式的I/O、图形加速器、一个或多个处理器等)。每个端口630被耦合到交换机620。因此,在该架构中,每个处理器复合体628可经由相关联的端口630和交换机620与其他处理器复合体628中的每一者进行通信。在一些实施例中,每个处理器复合体628发布心拍(heartbeats)(心拍是一种被视为指示正在进行的操作的指示符的规律通信,无心拍发布表示计算节点或处理器可能发生故障或不可用)。在一些实施例中,每个计算节点626发布心拍。在另外的实施例中,存储节点150和/或存储单元152也发布心拍。
图9B是图1-图5中的存储群集160的进一步的实施例的框图,该实施例具有图9A的计算节点626。该实施例还示出了存储节点150。交换机620耦合所有存储节点150的所有端口、所有计算节点626的所有端口(例如,所有计算节点626的所有处理器复合体628)和所有存储单元152。在变体中,可在机箱138中安装更少或更多个存储节点150、更少或更多的计算节点626、更少或更多的存储单元152以及更少或更多的处理器复合体628。每个存储节点150、存储单元152或计算节点626可占据机箱138中的一个或多个插槽142(见图1)。应当理解的是,图9A和图9B是一个示例,并不意味着限制。在一些实施例中,多个交换机620可以集成到机箱138中,并且计算节点626可被耦合到多个交换机,以便实现由本文描述的实施例(类似于图8A和图8B的实施例)提供的通信灵活性。
图9C是具有图9B的计算节点626的存储群集160的变体的框图,其中描绘了多个机箱138中的存储节点150、存储单元152和计算节点626,它们全部耦合在一起作为一个或多个更多的存储群集160。多个机箱138可以被安装在机架上并以所示的方式被耦合在一起,以便存储群集160的扩展。在该实施例中,参照如上关于图9B所述,每个机箱138中的交换机620或多个交换机620将机箱138中的组件耦合,并且所有机箱138中的交换机620或多个交换机620在跨越所有机箱138耦合在一起。通过存储节点150和/或计算节点626、存储容量和/或计算容量(例如,运行应用程序、操作一个或多个系统等)的各种组合容易在虚拟计算环境中进行配置和扩展或缩减或虚拟化。交换机620的使用减少或取消了在许多其他机架安装系统中见到的常用的贴片布线(patch wiring)。
存储群集160的这个版本和其他版本的一些实施例可在一个机箱138、两个机箱138或更多机箱138中支持两个或多个独立的存储群集。在多存储群集环境中的每个存储群集160可在一个、另一个或两个或多个机箱138中具有各种组合的存储节点150、存储单元152和/或计算节点626。例如,第一存储群集160可在一个机箱138中具有多个存储节点150以及在另一机箱138中具有一个或多个存储节点150。第二存储群集160可在第一机箱138中具有一个或多个存储节点150以及在第二机箱中具有一个或多个存储节点150。这些存储群集160中的任一者可在机箱138中的任一者或两者中具有计算节点626。每个存储群集160可具有其自己的操作系统并且具有独立于一个或多个其他存储群集160运行的应用。
在图6A-图9C所示的一些或全部实施例中的多个特征是明显的。许多实施例提供了使每个存储单元152无需任何存储节点150的协助便可直接与一个或多个其他存储单元152进行通信的路径。也就是说,存储单元152无需存储节点150参与通信便可经由路径与其他存储单元152进行通信。没有存储节点150介入或协助经由该直接路径进行从一个存储单元152至另一存储单元152的通信。一些实施例提供了用于从任意存储单元152至任意其他存储单元152的任何通信的直接路径。一些实施例提供了用于这种从每个存储单元152至一个或多个其他存储单元152(但不一定是所有其他存储单元152)进行的通信的直接路径。在这些情况下,存储单元152可经由一个或多个存储节点150和另一路径(即在存储节点150的协助下)与另一存储单元进行通信。
在一些实施例中,用于从一个存储单元152至任意其他存储单元152的直接通信的路径包括在存储群集160的其他组件的耦合中。在一些实施例中,每个存储节点150可直接与在整个存储群集160中每个存储器单元152通信。在一些实施例中,每个存储节点150可直接与某些存储单元152通信,并且经由另一存储节点150与其他存储单元152通信。在一些实施例中,用于进行存储节点150之间的通信的路径和用于存储单元152之间的通信的路径是分开的,而在另一些实施例中,这些路径合并在一起。在一些实施例中,用于进行存储节点150和存储单元152之间的通信的路径和用于进行存储单元152之间的通信是分开的,并且在另一些实施例中,这些路径合并在一起。
在一些实施例中,一个版本的存储节点150具有两个端口608、610。在一些实施例中,两个端口608、610都用于经由两个不同的路径中被选择的一者与其他存储节点150进行通信。在一些实施例中,一个端口610用于经由一个路径与其他存储节点150进行通信,而另一端口608用于经由另一路径与存储单元152进行通信。在一些实施例中,两个端口608、610都用于与存储节点150和存储单元152进行通信。这些各种架构通过支持存储单元152之间的直接通信可减少通信瓶颈。存储节点150和处理及通信带宽不被束缚在支持存储单元152之间的通信中。这样的减荷结果是,存储节点150用于对用户数据进行更快的操作或这些功能可以被传送到存储单元152。
存储单元152之间的通信可包括数据、元数据、确保存储单元152处于活跃状态的消息、健康和/或状态信息等。当存储节点150(或存储节点150的处理器或控制器)没有干预存储单元152与其他存储单元152进行的直接通信时,存储节点150可自由地管理其他进程。在存储节点150和存储单元152之间或接管一些存储节点150的功能的存储单元152之间进行的通信可包括数据碎片,数据碎片具有数据、元数据(例如,关于数据的信息和与数据相关的信息)和元元数据(例如,关于元数据的元数据)。这种通信还可包括校验碎片、健康、状态和性能信息。通过使存储单元152可由其他存储单元152或存储节点150(例如,存储节点150的处理器)访问,数据所有权的特有性可以不同的程度从存储节点150转移到存储单元152。在一些实施例中,这会涉及权限168或特权通过各种方式在存储节点150和存储单元152中的转移。
利用网络上的存储单元152,存储单元152可直接与计算节点626进行通信。这种通信可涉及将计算节点标识符嵌入到请求中并使存储单元152直接将数据返回到计算节点626,而不是将数据返回到存储节点150之后再将数据返回到计算节点626。可为具有在存储单元152中查找数据的能力的计算节点626启用数据直接连接和数据高速缓存。计算节点626还可用于在数据流水线中对去往存储单元152的数据或来自存储单元152的数据进行特殊处理来实现过滤、变换等。因此,图6A-图9C中公开的架构示出在存储系统和存储及计算系统中组件的布置和组件之间的通信的灵活性。根据数据吞吐量和通信吞吐量以及数据的绝对量或相对量以及计算功能需求和预计增幅,一种架构可能比另一种架构更合适。在各种实施例中,存储容量和计算容量是可调整的、可扩充的和可扩展的。此外,这些实施例为负载平衡提供了更多的灵活性。
在本文公开的各种实施例中的存储群集160通常可与存储阵列相对照。存储节点150是创建存储群集160的集合的部分。每个存储节点150拥有用于提供数据所需的数据片和计算。需要多个存储节点150合作来存储和撷取数据。一般在存储阵列中使用的存储器或存储设备与处理和操作数据的关系较少。存储阵列中的存储器或存储设备接收读取、写入或擦除数据的命令。存储阵列中的存储器或存储设备意识不到它们嵌入在较大系统中或不知晓数据意味着什么。存储阵列中的存储器或存储设备可包括各种类型的存储器,例如RAM、固态驱动器、硬盘驱动器等。本文描述的存储单元152具有同时活跃且用于多个目的的多个接口。在一些实施例中,存储节点150的一些功能被转移到存储单元152中,从而将存储单元152转换成存储单元152和存储节点150的组合。将计算(相对于存储数据来说)放入存储单元152使计算更接近数据本身。各种系统实施例具有存储节点层的层级,这些存储节点层具有不同容量。相比之下,在存储阵列中,控制器拥有并了解关于控制器在架构层(shelf)或存储设备中所管理的数据的所有一切。如本文所述,在存储群集160中,在多个存储单元152和/或存储节点150中的多个控制器通过各种方式合作(例如,用来进行纠删码、数据分片、元数据通信和冗余、存储容量扩充或缩减、数据恢复等)。
图10是根据一些实施例的用于操作存储群集的方法的流程图,该方法可以在存储群集、存储节点和/或非易失性固态存储装置或存储单元的实施例上或通过它们的实施例实践。在动作1002中,第一存储单元从存储群集的存储节点接收关于元数据或部分用户数据的指示。例如,该指示可包括存储部分用户数据或数据碎片的指示、读取部分用户数据或数据碎片、由数据碎片构造数据、读取或写入校验碎片、对健康、状态或表现做出响应的指示等。
在动作1004中,第一存储单元经由不需要任何存储节点或多个存储节点的协助的路径与第二存储单元进行直接通信。该通信可涉及关于元数据或部分用户数据的通信。关于元数据通信的合适的示例是心拍通信(其涉及对健康、状态或表现做出响应的指示)。关于部分用户数据通信的示例是从另一个存储单元请求数据碎片,或者将校验碎片发送到另一个存储单元以写入该存储单元的闪存。根据本文的教导,容易预想到其他示例。在动作1006中,第二存储单元经由上述路径从第一存储单元接收通信信息。更具体地,第二存储单元从第一存储单元而不是存储节点直接接收通信信息。
在动作1008中,第二存储单元基于来自第一存储单元的通信信息来确定要进行的动作。根据通信的内容,第二存储单元可存储数据、存储元数据、读取数据或元数据并将其发送回第一存储单元、对来自第一存储单元的查询进行响应等等。在适当的情况下,响应可经由不需要任何存储节点或多个存储节点的协助的路径从第二存储单元发送回第一存储单元或另一存储单元。或者,该动作可以是第二存储单元与存储节点中的一者或计算节点进行通信。根据本文的教导,容易预想到进一步的动作示例。
应当理解,本文描述的方法可以用诸如常规的通用计算机系统的数字处理系统来执行。替代地,可以使用专门设计或编程为仅执行一个功能的专用计算机。图11是示出可以实现本文描述的实施例的示例性计算设备的图示。根据一些实施例,图11的计算设备可用于执行存储节点或非易失性固态存储单元的功能的实施例。计算设备包括通过总线1105耦合到存储器1103以及海量存储装置1107的中央处理单元(CPU)1101。在一些实施例中,海量存储装置1507表示可以是本地或远程的诸如软盘驱动器或固定盘驱动器的持久数据存储装置。在一些实施例中,海量存储装置1107可以实现备份存储装置。存储器1503可以包括只读存储器、随机存取存储器等。在一些实施例中,驻留在计算设备上的应用可以存储在诸如存储器1103或海量存储装置1107之类的计算机可读介质上或通过其访问。应用还可以是经由网络调制解调器或计算设备的其他网络接口调制的经调制的电子信号的形式。应当理解,在一些实施例中,CPU 1101可以被实现在通用处理器、专用处理器或专门编程的逻辑器件中。
显示器1111通过总线1105与CPU 1101、存储器1103和海量存储装置1107通信。显示器1111被配置为显示与本文描述的系统相关联的任何可视化工具或报告。输入/输出设备1109耦合到总线1505,以便将指令选择中的信息传送到CPU 1101。应当理解,可以通过输入/输出设备1109传送去往外部设备的数据和来自外部设备的数据。CPU 1101可以被定义为执行本文所描述的功能以使能参照图1-图6描述的功能。在一些实施例中,体现该功能的代码可以存储在存储器1103或海量存储装置1107中,以供处理器(例如CPU 1101)执行。计算设备上的操作系统可能是MS DOSTM、MS-WINDOWSTM、OS/2TM、UNIXTM、LINUXTM、或其他已知的操作系统。应当理解,本文描述的实施例还可以与利用物理计算资源实现的虚拟化计算系统集成。
这里公开了详细的说明性实施例。然而,本文公开的具体功能细节仅仅是为了描述实施例的代表。然而,实施例可以以许多替代形式实现,并且不应被解释为仅限于本文所阐述的实施例。
应当理解,尽管术语第一、第二等可以用于描述各种步骤或计算,但这些步骤或计算不应该受这些术语的限制。这些术语仅用于区分一个步骤或计算与另一个步骤。例如,可以将第一计算称为第二计算,并且类似地,第二步骤可以被称为第一步骤,而不脱离本公开的范围。如本文所使用的,术语“和/或”和“/”符号包括一个或多个相关列出的项目的任何和所有组合。
如本文所使用的,单数形式“一”、“一个””和“该”也旨在包括复数形式,除非上下文另有明确指示。将进一步理解,术语“包括”、“包含”、“具有”和/或“含有”在本文中使用时,指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合。因此,本文使用的术语仅用于描述特定实施例的目的,而不是限制性的。
还应当注意,在一些替代实施方式中,所关注的功能/动作可以以与附图中所示的顺序不同的顺序出现。例如,取决于所涉及的功能/动作,连续示出的两个图实际上可以基本上同时执行,或者有时可以以相反的顺序执行。
考虑到上述实施例,应当理解,实施例可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要对物理量进行物理处理的操作。通常,虽然不一定,这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电或磁信号的形式。此外,所执行的处理通常被称为诸如产生、识别、确定或比较的术语。构成实施例一部分的本文描述的任何操作都是有用的机器操作。实施例还涉及用于执行这些操作的设备或装置。该装置可以被特别地构造成用于所需目的,或者该装置可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。特别地,各种通用机器可以与根据本文的教导编写的计算机程序一起使用,或者可以更方便地构造更专用的装置来执行所需的操作。
模块、应用、层、代理或其他方法可操作实体可以被实现为硬件、固件或执行软件的处理器或其组合。应当理解,在这里公开了基于软件的实施例的情况下,该软件可以体现在诸如控制器的物理机器中。例如,控制器可以包括第一模块和第二模块。控制器可以被配置为执行例如方法、应用、层或代理的各种动作。
实施例还可以被实现为有形非暂态计算机可读介质上的计算机可读代码。计算机可读介质是可以存储数据的任何数据存储设备,所存储的数据随后可由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储(NAS)、只读存储器、随机存取存储器、CD-ROM、CD-R、CD-RW、磁带以及其它光学和非光学数据存储设备。计算机可读介质还可以分布在网络耦合的计算机系统上,使得计算机可读代码以分布式方式被存储和执行。本文描述的实施例可以用包括手持设备、平板电脑、微处理器系统、基于微处理器或可编程消费电子设备、小型计算机、大型计算机等的各种计算机系统配置来实现。实施例还可以在分布式计算环境中实现,其中任务由通过有线或无线网络链接的远程处理设备执行。
尽管以特定顺序描述了方法操作,但是应当理解,可以在描述的操作之间执行其他操作,可以调节所描述的操作以使得它们在稍微不同的时间发生,或者所描述的操作可以分布在系统中,这允许处理操作以与处理相关联的各种间隔发生。
在各种实施例中,本文描述的方法和机制的一个或多个部分可以形成云计算环境的一部分。在这样的实施例中,资源可以作为根据一个或多个不同模型的服务在因特网上提供。这些模型可包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。在IaaS中,计算机基础设施作为一项服务提供。在这种情况下,计算设备通常由服务提供商拥有和操作。在PaaS模型中,开发人员用来开发软件解决方案的软件工具和底层设备可以作为服务提供并由服务提供商托管。SaaS通常包括服务提供商许可软件作为按需服务。服务提供商可以托管软件,或者可以在给定的时间段内将软件部署到客户端。上述模型的许多组合是可能的并且是预期的。
各种单元、电路或其它组件可被描述或要求保护为“被配置为”执行一个或多个任务。在这种情况下,短语“被配置为”用于通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来暗指结构。因此,即使当单元/电路/组件当前不可操作(例如,未打开)时,指定的单元/电路/组件也可以被配置为执行任务。与“配置为”语言一起使用的单元/电路/组件包括硬件-例如电路、存储可运行以执行操作的程序指令的存储器等。记述单元/电路/组件“被配置为”执行一个或多个任务明确地意图是针对该单元/电路/组件不调用35U.S.C.112条第六款。此外,“被配置为”可以包括由软件和/或固件(例如,FPGA或通用处理器执行软件)操纵以能够执行所涉及的一个或多个任务的方式操作的通用结构(例如,通用电路)。“被配置为”还可以包括使制造过程(例如,半导体制造设施)适配以制造适于实现或执行一个或多个任务的设备(例如,集成电路)。
为了说明的目的,前面的描述已经参考具体实施例进行了描述。然而,上面的说明性讨论并不是穷举的,或将本发明限制于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。选择并描述实施例是为了最好地解释实施例及其实际应用的原理,从而使得本领域技术人员能够最佳地利用可适用于所考虑的特定用途的实施例和各种修改。因此,本实施例被认为是说明性的而不是限制性的,并且本发明不限于本文给出的细节,而是可以在所附权利要求的范围和等同内容中进行修改。

Claims (20)

1.一种存储系统,包括:
多个存储单元,该多个存储单元中的每一者具有用于存储用户数据的存储存储器;
多个存储节点,该多个存储节点中的每一者被配置为具有所述用户数据的一部分的所有权,所述多个存储节点中的每一者包括所述多个存储单元中的一部分;以及
第一路径,该第一路径与所述多个存储单元耦合,使得所述多个存储单元中的每一者在没有所述多个存储节点的协助的情况下能够经由所述第一路径与所述多个存储单元中的至少一个其他存储单元进行通信。
2.根据权利要求1所述的存储系统,还包括:
第二路径,该第二路径与所述多个存储节点耦合,使得所述多个存储节点中的每一者能够经由所述第二路径与所述多个存储节点中的每一其他存储节点进行通信。
3.根据权利要求1所述的存储系统,还包括:
所述第一路径的第一部分,该第一部分与所述多个存储单元的第一子集耦合;以及
所述第一路径的第二部分,该第二部分与所述多个存储单元的第二子集耦合。
4.根据权利要求1所述的存储系统,还包括:
所述第一路径将所述多个存储单元中的每一者与所述多个存储单元中的每一其他存储单元耦合;以及
第二路径,该第二路径与所述多个存储节点耦合。
5.根据权利要求1所述的存储系统,其中所述第一路径包括网络交换机。
6.根据权利要求1所述的存储系统,其中所述存储存储器包括固态存储存储器。
7.根据权利要求1所述的存储系统,还包括:
多个计算节点;
所述第一路径将所述多个存储单元中的每一者与所述多个存储单元中的每一其他存储单元耦合;
所述第一路径将所述多个计算节点中的每一者与所述多个计算节点中的每一其他计算节点耦合;
所述第一路径将所述多个计算节点中的每一者耦合到所述多个存储节点中的每一者;
所述第一路径将所述多个存储节点中的每一者与所述多个存储节点中的每一其他存储节点耦合;以及
所述第一路径将所述多个存储节点中的每一者耦合到所述多个存储单元中的每一者。
8.一种存储群集,包括:
在多个机箱中的每一者中的多个存储单元;
多个存储节点,每一个存储节点包括所述多个存储单元中的一部分;
所述多个存储单元中的每一者具有用于存储用户数据的固态存储存储器;
第一路径,该第一路径在每一个机箱中并且将所述多个存储单元耦合,使得没有存储节点对从所述多个存储单元中的第一者经由所述第一路径至所述多个存储单元中的第二者的通信进行干涉或协助。
9.根据权利要求8所述的存储群集,还包括:
第二路径;
第一存储节点;
第二存储节点,该第二存储节点经由所述第二路径耦合到所述第一存储节点;
所述多个存储单元中的第一者和所述多个存储单元中的第二者,这两者经由所述第一路径的一部分彼此耦合并耦合到所述第一存储节点;以及
所述多个存储单元中的第二者和所述多个存储单元中的第三者,这两者经由所述第一路径的另一部分彼此耦合并耦合到所述第二存储节点。
10.根据权利要求8所述的存储群集,还包括:
所述第一路径将所述多个存储单元中的每一者与所述多个存储单元中的每一其他存储单元耦合;
第一存储节点,该第一存储节点经由第二路径的一部分耦合到所述多个存储单元中的第一者和第二者;以及
第二存储节点,该第二存储节点经由所述第二路径的另一部分耦合到所述多个存储单元中的第三者和第四者。
11.根据权利要求8所述的存储群集,还包括:
至少一个交换机,所述至少一个交换机包括所述第一路径;
多个存储节点,所述至少一个交换机将所述多个存储节点耦合。
12.根据权利要求8所述的存储群集,还包括:
一个或多个计算节点;
所述一个或多个计算节点中的每一者具有一个或多个处理器复合体;以及
所述第一路径将所述一个或多个计算节点中的每一者的所述一个或多个处理器复合体中的每一者耦合在一起。
13.根据权利要求8所述的存储群集,还包括:
交换机,该交换机包括所述第一路径;
一个或多个计算节点;
一个或多个存储节点;以及
所述交换机将所述一个或多个计算节点中的每一者、所述一个或多个存储节点中的每一者以及所述多个存储单元中的每一者耦合在一起。
14.根据权利要求8所述的存储群集,还包括:
一个或多个存储节点或一个或多个计算节点;
所述第一路径将所述一个或多个存储节点或所述一个或多个计算节点耦合在一起;
另一机箱,该另一机箱其中还具有另外第一路径;
所述另一机箱中的另外多个存储单元;
所述另一机箱中的另外一个或多个存储节点或另外一个或多个计算节点;以及
所述第一路径耦合到所述另外第一路径,使得所述多个存储单元中的每一者、所述一个或多个存储节点或所述一个或多个计算节点、所述另外多个存储单元中的每一者、和所述另外一个或多个存储节点或所述另外一个或多个计算节点能够经由所述第一路径或所述另外第一路径在彼此之间进行通信,并且能够被配置为一个或多个存储群集。
15.一种存储系统,包括:
多个存储单元;
所述多个存储单元中的每一者具有用于存储用户数据的固态存储存储器;
第一路径,所述多个存储单元中的每一者经由所述第一路径与所述多个存储单元中的至少一个其他存储单元耦合以进行通信;
多个存储节点,所述多个存储节点中的每一者在其中具有所述多个存储单元的子集并且具有对所述用户数据的一部分的所有权,其中所述多个存储节点不参与在存储单元之间进行的直接通信;以及
第二路径,该第二路径将所述多个存储节点耦合。
16.根据权利要求15所述的存储系统,还包括:
所述第一路径包括将所述多个存储单元中的第一者和第二者彼此耦合并耦合到所述多个存储节点中的第一者的第一总线;
所述第一路径包括将所述多个存储单元中的第三者和第四者彼此耦合并耦合到所述多个存储节点中的第二者的第二总线;以及
包括所述第二路径的交换机,该交换机被配置为耦合到所述存储系统外部的网络。
17.根据权利要求15所述的存储系统,还包括:
所述第一路径包括将所述多个存储单元耦合的总线,所述总线除了通过所述多个存储单元之外不耦合到所述多个存储节点;
所述多个存储节点中的第一者耦合到所述多个存储单元中的第一者和第二者;以及
所述多个存储节点中的第二者耦合到所述多个存储单元中的第三者和第四者。
18.根据权利要求15所述的存储系统,其中所述多个存储单元中的每一者经由所述第一路径与所述多个存储单元中的每个其他存储单元耦合以进行通信,所述存储节点不参与在所述存储节点之间进行的这种直接通信。
19.根据权利要求15所述的存储系统,还包括:
至少一个交换机,其中所述第一路径和所述第二路径包括在所述至少一个交换机中。
20.根据权利要求15所述的存储系统,还包括:
一个或多个计算节点,每个计算节点具有一个或多个处理器复合体;以及
至少一个交换机,所述至少一个交换机包括所述第一路径和所述第二路径,所述至少一个交换机将所述一个或多个计算节点中的每一者的所述一个或多个处理器复合体中的每一者、所述多个存储节点中的每一者和所述多个存储单元中的每一者耦合在一起。
CN201680015081.XA 2015-02-10 2016-01-22 存储系统架构 Active CN107408074B (zh)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
CN107408074A CN107408074A (zh) 2017-11-28
CN107408074B true CN107408074B (zh) 2021-07-27

Family

ID=56615039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680015081.XA Active CN107408074B (zh) 2015-02-10 2016-01-22 存储系统架构

Country Status (5)

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

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US10514847B2 (en) 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US10771550B2 (en) * 2016-12-28 2020-09-08 Amazon Technologies, Inc. Data storage system with redundant internal networks
US10509601B2 (en) 2016-12-28 2019-12-17 Amazon Technologies, Inc. Data storage system with multi-tier control plane
US11010064B2 (en) 2017-02-15 2021-05-18 Amazon Technologies, Inc. Data system with flush views
US10521135B2 (en) 2017-02-15 2019-12-31 Amazon Technologies, Inc. Data system with data flush mechanism
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
CN112527186B (zh) * 2019-09-18 2023-09-08 华为技术有限公司 一种存储系统、存储节点和数据存储方法
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 (zh) * 2021-06-01 2023-11-07 阿里巴巴新加坡控股有限公司 用于分区拆分与合并的方法、处理器可读介质和系统

Citations (4)

* 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
CN101019120A (zh) * 2004-10-12 2007-08-15 国际商业机器公司 用于使存储管理便于进行的设备、系统和方法
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

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658478B1 (en) * 2000-08-04 2003-12-02 3Pardata, Inc. Data storage system
US8660131B2 (en) * 2005-06-09 2014-02-25 Nxp B.V. Storage unit for communication system node, method for data storage and communication system node
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 (zh) * 2012-11-14 2015-07-08 清华大学 一种基于多dsp处理器平台的分布式实时多任务操作系统

Patent Citations (4)

* 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
CN101019120A (zh) * 2004-10-12 2007-08-15 国际商业机器公司 用于使存储管理便于进行的设备、系统和方法
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
CN107408074A (zh) 2017-11-28
JP6796589B2 (ja) 2020-12-09
EP3256939A4 (en) 2018-08-29
AU2016218381B2 (en) 2021-03-11
WO2016130301A1 (en) 2016-08-18
EP3256939A1 (en) 2017-12-20
JP2018506123A (ja) 2018-03-01
AU2016218381A1 (en) 2017-08-24

Similar Documents

Publication Publication Date Title
US11714715B2 (en) Storage system accommodating varying storage capacities
US11677825B2 (en) Optimized communication pathways in a vast storage system
US11079962B2 (en) Addressable non-volatile random access memory
US11188269B2 (en) Configuration for multiple logical storage arrays
CN107408074B (zh) 存储系统架构
CN106471461B (zh) 自动重新配置存储装置存储器拓扑
CN107851061B (zh) 远程存储器中硬件辅助的事务提交
CN109416620B (zh) 存储集群
CN107851117B (zh) 大目录的有效分配

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant