CN106471461A - 自动重新配置存储装置存储器拓扑 - Google Patents

自动重新配置存储装置存储器拓扑 Download PDF

Info

Publication number
CN106471461A
CN106471461A CN201580036311.6A CN201580036311A CN106471461A CN 106471461 A CN106471461 A CN 106471461A CN 201580036311 A CN201580036311 A CN 201580036311A CN 106471461 A CN106471461 A CN 106471461A
Authority
CN
China
Prior art keywords
memory node
data
memory
storage
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.)
Granted
Application number
CN201580036311.6A
Other languages
English (en)
Other versions
CN106471461B (zh
Inventor
J·海耶斯
J·科尔格罗夫
R·李
J·鲁滨孙
I·奥斯特洛夫斯基
P·瓦耶尔
J·D·戴维斯
P·博迪斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pure Storage Inc
Original Assignee
Pure Storage Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/296,167 external-priority patent/US9367243B1/en
Priority claimed from US14/296,149 external-priority patent/US9612952B2/en
Application filed by Pure Storage Inc filed Critical Pure Storage Inc
Publication of CN106471461A publication Critical patent/CN106471461A/zh
Application granted granted Critical
Publication of CN106471461B publication Critical patent/CN106471461B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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

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 Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本申请提供一种存储集群。该存储集群包括在单个机箱内的多个存储节点。多个存储节点中的每个具有用于存储用户数据的非易失性固态存储器。该多个存储节点被配置以遍及具有所述用户数据的擦除编码的所述多个储存节点而分布用户数据和元数据,使得多个存储节点能够经由擦除编码在所述多个存储节点的两个失效的情况下访问所述用户数据。该多个存储节点被配置以响应于添加或移除存储节点中的一个而采用擦除编码以重新配置用户数据的冗余。

Description

自动重新配置存储装置存储器拓扑
背景技术
固态存储器诸如闪存目前用于固态驱动器(SSD)中以增大或替换用于存储大量数据的统称为旋转介质的常规硬盘驱动器(HDD)、可写CD(紧凑光盘)或可写DVD(数字通用光盘)驱动器,以及磁带驱动器。闪存和其它固态存储器具有与旋转介质不同的特性。然而,出于兼容性原因,许多固态驱动器被设计为符合硬盘驱动器标准,使得其难以提供增强的特征或利用闪存和其它固态存储器的独特方面的优点。
在此上下文内出现实施例。
发明内容
在一些实施例中,提供了存储集群(cluster)。该存储集群包括在单个机箱内的多个存储节点。多个存储节点中的每个具有用于存储用户数据的非易失性固态存储器。该多个存储节点被配置以用该用户数据的擦除编码在整个多个存储节点中分布用户数据和元数据,使得多个存储节点能够经由擦除编码,在多个存储节点中的两个失效(failure)的情况下访问所述用户数据。该多个存储节点被配置以响应于添加存储节点或移除存储节点中的一者而采用擦除编码来重新配置用户数据的冗余。
根据结合附图的以下详细描述,实施例的其它方面和优点将变得明显,其中附图通过示例的方式示出所描述的实施例的原理。
附图简述
通过参考结合附图的以下描述,可以最好地理解所描述的实施例及其优点。在不脱离所描述的实施例的精神和范围的情况下,这些附图不以任何方式限制本领域技术人员可以对所描述的实施例做出的形式上和细节上的任何改变。
图1是根据一些实施例的具有多个存储节点和耦合到每个存储节点以提供网络附加存储的内部存储的存储集群的透视图。
图2是企业计算系统的系统图,其能够使用图1的存储集群中的一个或更多个作为一些实施例中的存储资源。
图3是根据一些实施例示出的适用于图1的存储集群中的具有不同容量的多个存储节点和非易失性固态存储器的框图。
图4是根据一些实施例示出的耦合多个存储节点的互连开关的框图。
图5是根据一些实施例示出的存储节点的内容以及非易失性固态存储单元中的一个的内容的多级框图。
图6是在一些实施例中操作存储集群的方法的流程图。
图7A是在一些实施例中不同大小的数据条带,即不同的条带宽度的配置图。
图7B是根据一些实施例的跨越各种存储器容量的存储节点的数据条带的配置图。
图8A和图8B是根据一些实施例的用于访问存储节点中的用户数据的方法的流程图,其可以在存储集群、存储节点和/或非易失性固态存储装置的实施例上实践或由其实施例实践。
图9是示出可以实施本文所描述的实施例的示例性计算设备的图示。
具体实施方式
以下实施例描述了存储用户数据的存储集群,诸如源自一个或更多个用户或者客户端系统或者存储集群外部的其它源的用户数据。存储集群使用擦除编码和元数据的冗余副本跨越容纳在机箱内的存储节点分布用户数据。擦除编码指的是数据保护的方法,其中数据被分割成片段,被扩展以及用冗余数据片编码并且存储在一组不同的位置,诸如磁盘、存储节点或地理位置。闪存是可以与实施例集成的一种类型的固态存储器,尽管实施例可以扩展到其它类型的固态存储器或包括非固态存储器的其它存储介质。存储位置和工作负载的控制分布在集群对等系统中的存储位置。任务诸如各个存储节点之间的中介通信、检测存储节点何时变得不可用,以及平衡跨越各个存储节点的I/O(输入和输出)都在分布式基础上被处理。在一些实施例中,数据在支持数据恢复的数据片段或条带中跨越多个存储节点布局或分布。数据的所有权可以在集群内重新分配,与输入模式和输出模式无关。下文更详细描述的这种架构允许集群中的存储节点失效,而系统保持可操作,因为数据可以从其它存储节点重建并且因此保持可用于输入操作和输出操作。在各种实施例中,存储节点可以被称为集群节点、刀片(blade)或服务器。
存储集群包含在机箱内,机箱即容纳一个或更多个存储节点的箱体。一种向每个存储节点供电的机构诸如配电总线,以及通信机构,诸如使存储节点之间能够通信的通信总线可以被包括在机箱内。根据一些实施例,存储集群能够在一个位置作为独立系统运行。在一个实施例中,机箱包含可以独立地启用或禁用的配电总线和通信总线两者的至少两个实例。内部通信总线可以是以太网总线,然而,其它技术诸如外部组件快速互连(PCIExpress)、无限带宽以及其他同样是合适的。机箱提供用于外部通信总线的端口,外部通信总线用于能够直接地或通过交换机以及使多个机箱之间以及与客户端系统通信。外部通信可以使用技术诸如以太网、无限带宽、光纤通道等。在一些实施例中,外部通信总线使用不同的通信总线技术用于机箱间和客户端通信。如果交换机部署在机箱内或机箱之间,则交换机可以充当多个协议或技术之间的转换。当多个机箱被连接以定义存储集群时,存储集群可以由使用专有接口或标准接口,诸如网络文件系统(NFS)、通用互联网文件系统(CIFS)、小型计算机系统接口(SCSI)或超文本传输协议(HTTP)的客户端来访问。来自客户端协议的转换可以发生在交换机、机箱外部通信总线处或每个存储节点内。
每个存储节点可以是一个或更多个存储服务器,并且每个存储服务器连接到一个或更多个非易失性固态存储器单元,其可以被称为存储单元。一个实施例包括在每个存储节点中,以及在一个至八个非易失性固态存储器单元之间的单个存储服务器,然而这个示例并不意味着限制。该存储服务器可以包括处理器、动态随机存取存储器(DRAM)和用于内部通信总线的接口以及用于每个电源总线的配电。在存储节点内,在一些实施例中,接口和存储单元共享通信总线,例如PCI Express。非易失性固态存储器单元可以通过存储节点通信总线直接访问内部通信总线接口,或者请求存储节点访问总线接口。该非易失性固态存储器单元包含嵌入式中央处理单元(CPU)、固态存储控制器和一些固态大容量存储器,例如在一些实施例中在2兆兆字节至32兆兆字节(TB)之间。在非易失性固态存储器单元中包括嵌入式易失性存储介质诸如DRAM和能量储存装置。在一些实施例中,能量储存装置是电容器、超级电容器或电池,其使得能够在功率损耗的情况下将DRAM内容的子集传送到稳定的存储介质。在一些实施例中,非易失性固态存储器单元用存储类存储器诸如相变或磁阻随机存取存储器(MRAM)构建,其替代DRAM并且使电力保持装置能够减小。
存储节点和非易失性固态存储装置的许多特征中的一个是在存储集群中主动地重建数据的能力。存储节点和非易失性固态存储装置能够确定存储集群中的存储节点或非易失性固态存储器何时不可达的(unreachable),而不管是否存在尝试读取涉及该存储节点或非易失性固态存储装置的数据。然后存储节点和非易失性固态存储装置协作以在至少部分新的位置中恢复和重建数据。这构成主动重建,因为系统重建数据没有等待,直到从采用存储集群的客户端系统发起的读取访问需要数据。下面论述存储装置存储器及其操作的这些和进一步的细节。
图1是根据一些实施例的存储集群160的透视图,其具有多个存储节点150和耦合到每个存储节点的内部固态存储器,以提供网络附加存储或存储区域网络。网络附加存储、存储区域网络或存储集群或其它存储装置存储器可以包括一个或更多个存储集群160,每个存储集群160具有一个或更多个存储节点150,其处于物理组件和由此提供的存储装置存储器的量两者的灵活的和可重新配置的布置中。存储集群160被设计以装配在机架(rack)中,并且可以根据存储装置存储器的需要来设置和填充一个或更多个机架。存储集群160具有机箱138,其具有多个槽142。应当理解,机箱138可以被称为外壳、箱体或机架单元。在一个实施例中,机箱138具有十四个槽142,但容易设计其它数量的槽。例如,一些实施例具有四个槽、八个槽、十六个槽、三十二个槽或其它合适数量的槽。在一些实施例中,每个槽142能够容纳一个存储节点150。机箱138包括能够用于将机箱138安装在机架上的活板(flap)148。风扇144提供用于冷却存储节点150及其组件的空气循环,但是可以使用其它冷却组件,或者可以设计没有冷却组件的实施例。交换结构146将机箱138内的存储节点150耦合在一起并耦合到用于与存储器通信的网络。在图1所示的实施例中,交换结构146和风扇144左侧的槽142被示出为由存储节点150占据,而在交换结构146和风扇144右侧的槽142是空的并且可用于说明性目的而插入存储节点150。该配置是一个示例,并且一个或更多个存储节点150可以以各种进一步布置占据槽142。在一些实施例中,存储节点布置不需要是连续的或相邻的。存储节点150是可热插拔的,其意味着存储节点150能够插入到机架138中的槽142中,或者从槽142中移除,而不停止或关闭系统。在从槽142插入或移除存储节点150时,系统自动重新配置以便识别并适应改变。在一些实施例中,重新配置包括恢复冗余和/或重新平衡数据或负载。
每个存储节点150能够具有多个组件。在这里所示的实施例中,存储节点150包括由CPU 156即处理器、耦合到CPU 156的存储器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管理包括处理器116和随机存取存储器(RAM)118的处理资源104。网络控制器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所示,其示出了具有四、八和三十二TB容量的混合非易失性固态存储装置152的一个存储节点150的示例,每个具有三十二TB容量的非易失性固态存储装置152的另一个存储节点150,以及每个具有八TB容量的非易失性固态存储装置152的又一存储节点。根据本文的教导,容易地设计出各种进一步的组合和容量。在聚集的情况下,例如聚集存储以形成存储集群的上下文中,存储节点可以是非易失性固态存储装置152或包括非易失性固态存储装置152。非易失性固态存储装置152是方便的聚点,因为非易失性固态存储装置152可以包括非易失性随机存取存储器(NVRAM)组件,如下面将进一步描述的。
参考图1和图3,存储集群160是可扩展的,其意味着容易添加具有不均匀存储大小的存储容量,如上所述。在一些实施例中,一个或更多个存储节点150可以插入到每个机箱和存储集群自配置中,或从每个机箱和存储集群自配置中移除。插入式存储节点150,无论是安装在交付的或稍后添加的机箱中,都能够具有不同的大小。例如,在一个实施例中,存储节点150能够具有4TB的任何倍数,例如8TB、12TB、16TB、32TB等。在进一步的实施例中,存储节点150可以具有任何倍数的其它存储量或容量。每个存储节点150的存储容量被广播,并且影响如何对数据进行条带化的决定。为了最大的存储效率,实施例能够在条带中尽可能广泛地自配置,其受到连续操作的预定要求,以机箱内的至多一个或至多两个非易失性固态存储单元152或存储节点150为代价。
图4是示出了耦合多个存储节点150的通信互连170和配电总线172的框图。参考回到图1,在一些实施例中,通信互连170可以包括在交换结构146中或与交换结构146一起实施。在一些实施例中,在多个存储集群160占据机架的情况下,通信互连170可以包括在机架交换机的顶部中或与机架交换机的顶部一起实施。如图4所示,存储集群160被封闭在单个机箱138内。外部端口176通过通信互连170耦合到存储节点150,而外部端口174直接耦合到存储节点。外部电源端口178耦合到配电总线172。存储节点150可以包括如参考图3所述的非易失性固态存储装置152的变化量和不同容量。另外,一个或更多个存储节点150可以是如图4所示的仅计算存储节点。权限(authorities)168在非易失性固态存储装置152上实施,例如作为存储在存储器中的列表或其它数据结构。在一些实施例中,权限被存储在非易失性固态存储装置152内,并且由在非易失性固态存储装置152的控制器或其它处理器上执行的软件支持。在进一步的实施例中,权限168在存储节点150上被实施,例如作为存储在存储器154中并由在存储节点150的CPU 156上执行的软件支持的列表或其它数据结构。在一些实施例中,权限168控制数据如何以及在何处存储在非易失性固态存储装置152中。该控制有助于确定将哪种类型的擦除编码方案应用于数据,以及哪些存储节点150具有数据的哪些部分。每个权限168可以被分配给非易失性固态存储装置152。在各种实施例中,每个权限可以控制由文件系统、由存储节点150或由非易失性固态存储装置152分配给数据的索引节点号、段号或其它数据标识符的范围。
在一些实施例中,每条数据和每条元数据在系统中具有冗余。另外,每条数据和每条元数据具有所有者,这可以被称为权限。如果该权限不可达,例如通过存储节点的失效,则存在用于如何找到该数据或该元数据的继承计划。在各种实施例中,存在权限168的冗余副本。在一些实施例中,权限168具有与存储节点150和非易失性固态存储装置152的关系。覆盖数据段号的范围或该数据的其它标识符的每个权限168可以被分配给特定的非易失性固态存储装置152。在一些实施例中,用于所有此类范围的权限168分布在存储集群的非易失性固态存储装置152上。每个存储节点150具有提供对该存储节点150的一个或多个非易失性固态存储装置152的访问的网络端口。在一些实施例中,数据能够存储在与段号相关联的段中,并且该段号是针对RAID(独立磁盘的冗余阵列)条带的配置的一种间接性(indirection)。因此权限168的分配和使用建立了对数据的间接性。间接性可以被称为根据一些实施例的在这种情况下经由权限168间接引用数据的能力。段将一组非易失性固态存储装置152和本地标识符标识到可以包含数据的该组非易失性固态存储装置152中。在一些实施例中,本地标识符是到设备中的偏移,并且可以由多个段顺序地重复使用。在其它实施例中,本地标识符对于特定的段是唯一的且从不重复使用。非易失性固态存储装置152中的偏移被应用于定位数据以写入非易失性固态存储装置152或从非易失性固态存储装置152读取(以RAID条带的形式)。跨越非易失性固态存储装置152的多个单元条带化数据,该非易失性固态存储装置152可以包括或不同于具有用于特定数据段的权限168的非易失性固态存储装置152。
如果存在特定数据段被定位在何处的改变,例如在数据移动或数据重建期间,则在具有该权限168的非易失性固态存储装置152或存储节点150处,应该查阅该数据段的权限168。为了定位特定的数据片段,实施例计算数据段的散列值或应用索引节点号或数据段号。该操作的输出指向具有用于该特定数据片的权限168的非易失性固态存储装置152。在一些实施例中,该操作有两个阶段。第一阶段将实体标识符(ID),例如段号、索引节点号或目录号映射到权限标识符。该映射可以包括计算诸如散列或位掩码。第二阶段是将权限标识符映射到特定的非易失性固态存储装置152,其可以通过显式映射来完成。该操作是可重复的,使得当执行计算时,计算的结果可重复地且可靠地指向具有该权限168的特定非易失性固态存储装置152。该操作可包括作为输入的可达的(reachable)存储节点的组。如果该组可达的非易失性固态存储单元改变则最优组改变。在一些实施例中,持久值是当前分配(其总是为真),并且计算的值是集群将尝试重新配置的目标分配。该计算可以用于在存在一组非易失性固态存储装置152的情况下为权限确定最佳非易失性固态存储装置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型文件系统中,使用索引式节点或索引节点来处理数据,索引式节点或索引节点指定表示文件系统中的对象的数据结构。该对象可以是例如文件或目录。元数据可以伴随该对象,作为属性诸如在其它属性之间的许可数据和创建时间戳。段号可以被分配给文件系统中的此类对象的全部或一部分。在其它系统中,使用在其它地方分配的段号处理数据段。出于论述的目的,分布单元是实体,并且实体可以是文件、目录或段。也就是说,实体是由存储系统存储的数据或元数据的单元。实体被分组为称为权限的组。每个权限具有权限所有者,其是具有更新权限中的实体的专有权限的存储节点。换句话说,存储节点包含权限,而该权限包含实体。
段是根据一些实施例的数据的逻辑容器。段是介质地址空间和物理闪存位置之间的地址空间,即数据段号在该地址空间中。段也可以包含元数据,其可以使数据冗余能够被恢复(重写到不同的闪存位置或设备),而不需要更高级别的软件的参与。在一个实施例中,段的内部格式包含客户端数据和介质映射以确定该数据的位置。在适用的情况下,通过将段分割成多个数据和奇偶校验分片(shard)来保护每个数据段,例如,防止存储器和其它失效。根据擦除编码方案,该数据和奇偶校验分片在耦合到主机CPU 156(参见图5)的非易失性固态存储装置152上被分布,即条带化。术语段的使用是指在一些实施例中容器及其在段的地址空间中的位置。术语条带的使用是指与段相同的一组分片,并且包括根据一些实施例的分片如何与冗余或奇偶校验信息一起分布。
在整个存储系统上发生一系列地址空间变换。在顶部是链接到索引节点的目录条目(文件名)。索引节点指向介质地址空间,其中数据在逻辑上被存储。介质地址可以通过一系列间接介质进行映射以分散大文件的负载,或者实施数据服务,如重复数据删除或快照。介质地址可以通过一系列间接介质进行映射以分散大文件的负载,或者实施数据服务,如重复删除或快照。然后段地址被转换为物理闪存位置。根据一些实施例,物理闪存位置具有由系统中的闪存量限制的地址范围。介质地址和段地址是逻辑容器,并且在一些实施例中使用128位或更大的标识符以致实际上是无限的,其中重复使用的可能性被计算为比系统的预期寿命更长。在一些实施例中,以分层方式分配来自逻辑容器的地址。首先,可以向每个非易失性固态存储装置152分配一定范围的地址空间。在该分配的范围内,非易失性固态存储装置152能够分配地址而不与其它非易失性固态存储装置152同步。
数据和元数据由针对不同工作负载模式和存储设备优化的一组底层存储布局存储。这些布局包含多个冗余方案、压缩格式和索引算法。这些布局中的一些存储关于权限和权限主文件的信息,而其它布局存储文件元数据和文件数据。该冗余方案包括容许单个存储设备(诸如NAND闪存芯片)内的损坏的位的纠错码、容许多个存储节点的失效的擦除码,以及容许数据中心或区域失效的复制方案。在一些实施例中,在单个存储单元内使用低密度奇偶校验(LDPC)码。在一些实施例中,在存储集群内使用Reed-Solomon编码,并且在存储网格内使用镜像。元数据可以使用有序日志结构的索引(诸如日志结构的合并树)来存储,并且大数据可以不存储在日志结构的布局中。
为了保持跨越实体的多个副本的一致性,存储节点通过计算隐含地同意两个事物:(1)包含实体的权限,以及(2)包含权限的存储节点。实体到权限的分配能够通过将实体伪随机地分配给权限,通过基于外部产生的密钥将实体分割到范围中,或者通过将单个实体放置到每个权限中来完成。伪随机方案的示例是线性散列和复制下可扩展散列(Replication Under Scalable Hashing,RUSH)散列族,其包括受控的复制下可扩展散列(CRUSH)。在一些实施例中,伪随机分配仅用于向节点分配权限,因为该组节点能够改变。该组权限不能改变,因此在这些实施例中可以应用任何主观功能。一些布置方案自动在存储节点上设置权限,而其它布置方案依赖于权限到存储节点的显式映射。在一些实施例中,利用伪随机方案以从每个权限映射到一组候选权限所有者。与CRUSH相关的伪随机数据分布函数可以向存储节点分配权限,并创建在其中分配权限的列表。每个存储节点具有伪随机数据分布函数的副本,并且能够达到用于分布的相同计算,并且随后找到或定位权限。在一些实施例中,伪随机方案中的每个需要可达的存储节点的组作为输入,以便推断相同的目标节点。一旦实体已经被放置在权限中,该实体可以被存储在物理设备上,使得预期的失效将不会引起意外的数据丢失。在一些实施例中,重新平衡算法尝试在相同布局中的权限内以及在同一组机器上存储所有实体的副本。
预期失效的示例包括设备失效、被盗机器、数据中心火灾和区域灾害,诸如核事件或地质事件。不同的失效引起不同级别的可接受数据丢失。在一些实施例中,被盗的存储节点既不影响系统的安全性也不影响系统的可靠性,而取决于系统配置,区域事件可能引起没有数据丢失、几秒或几分钟的丢失更新,或甚至完全数据丢失。
在实施例中,用于存储冗余的数据的布置独立于用于数据一致性的权限的布置。在一些实施例中,包含权限的存储节点不包含任何持久存储装置。相反,存储节点连接到不包含权限的非易失性固态存储单元。存储节点和非易失性固态存储单元之间的通信互连由多种通信技术组成,并且具有不均匀的性能和容错特性。在一些实施例中,如上所述,非易失性固态存储单元经由PCI Express连接到存储节点,存储节点使用以太网背板在单个机箱内连接在一起,并且机箱连接在一起以形成存储集群。在一些实施例中,存储集群使用以太网或光纤通道连接到客户端。如果多个存储集群被配置到存储网格中,则使用互联网或其它长距离联网链路,诸如“地铁规模”链路或不经过互联网的专用链路来连接多个存储集群。
权限所有者具有修改实体,将实体从一个非易失性固态存储单元迁移到另一个非易失性固态存储单元以及添加和移除实体的副本的专有权。这允许维持底层数据的冗余。当权限所有者失效、将要退役或过载时,则权限被转移到新的存储节点。瞬时失效使得确保所有非失效机器在新的权限位置上一致是重要的。由于瞬时失效引起的模糊性可以通过协商一致的协议诸如Paxos、热-暖失效转移方案、经由远程系统管理员的手动干预,或者由本地硬件管理员(诸如通过物理地从集群移除失效机器,或按下失效机器上的按钮)自动实施。在一些实施例中,使用共识协议,并且失效转移是自动的。如果在太短的时间段内发生太多失效或复制事件,则系统进入自我保护模式,并且停止复制和数据移动活动,直到管理员根据一些实施例干预。
由于在存储节点之间传送权限,并且权限所有者更新其权限中的实体,系统在存储节点和非易失性固态存储单元之间传送消息。关于持久消息,具有不同目的的消息具有不同类型。根据消息的类型,该系统维持不同的排序和耐久性保证。随着持久消息被处理,该消息以多个耐久的和非耐久的存储硬件技术被临时存储。在一些实施例中,消息被存储在RAM、NVRAM中以及NAND闪存设备上,并且使用各种协议以便有效地使用每个存储介质。对延迟敏感的客户端请求可以持久保存在复制的NVRAM中,并且然后保存在随后的NAND中,而后台重新平衡操作直接保存到NAND。
持久消息在被复制之前被持久地存储。这允许系统继续服务于客户端请求,尽管存在失效和组件更换。虽然许多硬件组件包含对系统管理员、制造商、硬件供应链和持续监控质量控制基础设施可见的唯一标识符,但是运行在基础设施地址顶部上的应用程序将地址虚拟化。这些虚拟化地址在存储系统的整个生命周期内不会改变,无关于组件失效和替换。这允许存储系统的每个组件随时间被替换,而不需要重新配置或中断客户端请求处理。
在一些实施例中,虚拟化地址以足够的冗余被存储。连续监控系统将硬件和软件状态以及硬件标识符关联。这允许检测和预测由于失效组件和制造细节的失效。在一些实施例中,监控系统还使得能够在发生失效之前通过从关键路径移除组件,而使权限和实体主动转移远离受影响的设备。
参考图1至图4,除了通信信道中的组件冗余之外,存储集群160被配置以允许一个或更多个存储节点150的丢失。在一些实施例中,该集群冗余级别可以是对于相对小的存储集群160(小于8个存储节点150)是一,以及对于相对较大的存储集群160(8个或更多个存储节点150)是二,尽管任何数量都适合于集群冗余级别。在一些实施例中,在比冗余级别更多的存储节点150丢失时,存储集群160不能保证数据的可用性或未来更新的完整性。如上所述,经由段实施数据冗余。通过从非易失性固态存储装置152的子集中选择相同大小的分片来形成段,每个分片在不同的存储节点150内。保留分片以建立冗余级别,例如一或二,并且然后其余部分构成数据(数据分片)。使用ECC方案诸如奇偶校验或Reed-Soloman(RAID 6)来对分片进行编码,使得可以使用在计数上等于数据分片的分片的任何子集来重构完整的数据。存储集群冗余表示最小冗余级别,并且对于任何单独的数据元素可以超过该最小冗余级别。段被存储为一组非易失性固态存储单元、对每个非易失性固态存储单元是局部的任务(数据位置或奇偶校验)和分配单元。分配单元可以是在非易失性固态存储装置152内确定的物理地址或间接性。每个分片可以被分成页面,并且每个页面被分成码字。在一些实施例中,页面在大约4千字节(kB)和64kB之间,例如16kB,而码字在大约512字节到4kB之间,例如1kB。这些大小是一个示例,并且不意味着限制,因为可以利用用于码字和页面的任何合适的大小。码字包含本地纠错和校验和以验证纠错是成功的。该校验和与内容的逻辑地址被“盐化”,这意味着如果数据是不可校正的或错放的,则可能发生与校验的匹配的失败。在一些实施例中,当码字不通过校验和时,为了纠错算法的目的将其转换为“擦除”,使得可以重建码字。
如果存储节点150被添加到存储集群160,则目标段宽度(数据分片和奇偶校验分片)改变。新分配的段能够立即采用这些参数。如果新集群配置太窄,无法允许将段重建到目标冗余,则段将替换为新段。如果存储集群160已经增加了目标冗余,则能够分配和生成额外的冗余分片,而不改变段内容。所有其它段可以保持就位而不进行修改,从而使系统具有多个并发段尺寸。当目标段变得更宽和更有效时,该信息能够与其它信息组合以确定该段是否是与用于后台过程(如磨损级别或垃圾收集)的大多数相比更好的候选者。在一些实施例中,存储节点150能够具有不同大小的不同的非易失性固态存储装置152。如果存在每个大小的许多非易失性固态存储装置152的单元,则可以应用用于段的正常分配规则,并且非易失性固态存储装置152的较大大小的单元将具有更多重叠段。存储集群160还可以决定忽略多余空间或者分配较窄宽度的段以利用额外空间。
较大的存储集群160可以被划分为存储节点集合以增加冗余而不增加段宽度。作为示例,28个存储节点150的系统可以被划分为两个组群(group),每个组群具有14个存储节点150,每个具有10+2的段大小。当分配段时,系统被配置以不从多个组群中的存储节点选择分片。这种布置确保多达四个存储节点可能丢失,即每组群两个且系统正常操作。存储节点组群可以与机箱对准以利用用于冗余操作的较高带宽通信互连170。存储节点组群可以组合而不进行任何段重新配置。如果存储节点组群被分割,则跨越两个存储节点的任何段被分割。在存储节点组群被认为是独立的之前,分配在两个存储节点组群中的这些分割段使它们的分片在存储节点内重新对准。系统可以根据正常调度等待分片被重写,将分片重建到相同的存储节点组群中或将内容移动到另一个段中。
具有分配给段的至少一个分片的非易失性固态存储单元的总集可以被称为参考集。这些非易失性固态存储单元(经由它们的存储节点)首先被组织成存储节点组群,其中每个存储节点组群内具有冗余级别。在每个存储节点组群中满足冗余级别的任何子集是仲裁集组,其中整个存储集群可以正常操作。正在操作并且可以直接访问或经由通信总线间接访问的非易失性固态存储单元的当前集被称为可达集。当可达集形成有效仲裁集时,可以认为存储集群正在操作。被引用但不可达的设备可以被称为幻象设备。存储在该设备上的所有数据可以从同一段中的其它分片重建。存储集群尝试通过在可达设备上永久存储重建的分片以取消引用任何幻象设备。已经不在包含段分片的存储节点内的任何非易失性固态存储单元是重建的候选者。在一些实施例中,通过普通数据维护来进行重建,这将引起重叠段的解除分配,类似于垃圾收集。在读取、写入或计算方面确定相对效率的启发法可用于决定哪个路径是适当的。当没有段将分片映射到特定的非易失性固态存储单元上时,非易失性固态存储单元被视为被驱逐的且不再需要参与仲裁集。当不再存在任何幻象非易失性固态存储单元时,则存储集群处于完全冗余,并且可能在保持在仲裁集中的情况下进一步丢失存储节点。
在NVRAM中,冗余不是由段而是由消息组织的,其中每个消息(128字节到128kB)建立其自己的数据条带。在一些实施例中,NVRAM被维持在与段存储相同的冗余并且在相同的存储节点集合内操作。由于消息是单独存储的,条带宽度由消息大小和存储集群配置两者而确定。较大的消息可以更有效地存储为较宽条带。
图5是示出存储节点150的内容和存储节点150的非易失性固态存储装置152的内容的多级框图。在一些实施例中,数据通过网络接口控制器(NIC)202传送到存储节点150并且从存储节点150传送。每个存储节点150具有CPU 156以及一个或更多个非易失性固态存储装置152,如上所述。在图5中向下移动一级,每个非易失性固态存储装置152具有相对快速的非易失性固态存储器,诸如非易失性随机存取存储器(NVRAM)204和闪存存储器206。在一些实施例中,NVRAM 204可以是不需要编程/擦除周期的组件(DRAM、MRAM、PCM),并且可以是能够支持比从该存储器读取频繁得多地被写入的存储器。在图5中向下移动另一级,NVRAM 204在一个实施例中被实施为由能量储备218备份的高速易失性存储器,诸如动态随机存取存储器(DRAM)216。能量储备218提供充足的电力以在电源失效的情况下保持对DRAM216供电足够长时间用于将内容传送到闪存存储器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。在所示的实施例中,在可编程逻辑设备(PLD)208,例如现场可编程门阵列(FPGA)上实施I/O端口210、控制器212、DMA单元214和闪存I/O端口220。在该实施例中,每个闪存晶片222具有被组织为十六kB(千字节)页面224的页面,以及能够通过其将数据写入闪存晶片222或从闪存晶片222读取的寄存器226。在另外的实施例中,其它类型的固态存储器被代替闪存晶片222内所示的闪存存储器使用,或者除了闪存晶片222内所示的闪存存储器之外使用。
图6是用于操作存储集群的方法的流程图。该方法能够在如本文所述的存储集群和存储节点的各种实施例上实践或由其实践。该方法的各种步骤可以由处理器执行,诸如存储集群中的处理器或存储节点中的处理器。该方法的部分或全部可以在软件、硬件、固件或其组合中实施。该方法开始于动作602,其中用擦除编码分布用户数据。例如,用户数据可以使用一个或更多个擦除编码方案分布在存储集群的存储节点上。在存储集群中的存储节点中能够共存两个擦除编码方案(在一些实施例中,或者更多)。在一些实施例中,每个存储节点能够确定在写入数据时应用多个擦除编码方案中的哪个,并且能够确定在读取数据时应用哪个擦除编码方案。这些可以是相同的或不同的擦除编码方案。
该方法进行到动作604,其中检查存储集群中的存储节点。在一些实施例中,检查存储节点的心跳,其中每个存储节点周期性地发出充当心跳的消息。在另选实施例中,该检查是以查询存储节点的形式,并且对查询的响应的缺乏指示存储节点失效。在决定动作606中,确定两个存储节点是否不可达。例如,如果存储节点中的两个不再发出心跳,或存储节点中的两个无法响应查询,或这些或其它指示的某种组合,则其它存储节点中的一个可以确定存储节点中的两个是不可达的。如果不是这种情况,则流程分支回到动作602,以便继续分布用户数据,例如,当用户数据到达用于存储时将用户数据写入存储节点中。如果确定存储节点中的两个是不可达的,则流程继续到动作608。
在决定动作608中,使用擦除编码在剩余的存储节点中访问用户数据。应当理解,在一些实施例中,用户数据指的是源自一个或更多个用户或客户端系统或存储集群外部的其它源的数据。在一些实施例中,擦除编码类型包括双冗余,在这种情况下,对于两个失效存储节点,剩余存储节点具有可读用户数据。擦除编码类型可以包括允许从码字中丢失两个位的纠错码,其中数据分布在存储节点上,使得尽管存储节点中的两个丢失,数据仍能够被恢复。在决定动作610中,确定是否要重建数据。如果数据不应被重建,则流程分支回到动作602,以便用擦除编码继续分布用户数据。如果数据应被重建,则流程分支到动作612。在一些实施例中,重建数据的决定在两个存储节点不可达之后发生,但在其它实施例中重建数据的决定可发生在一个存储节点不可达之后。在重建数据的决定中可以考虑的各种机制包括纠错计数、纠错率、读取失败、写入失败、心跳丢失、未能回复查询等。对图6的方法的适当修改容易理解这些和另外的实施例。
在动作612中,使用擦除编码恢复数据。这可以根据如上所述的关于动作608的擦除编码的示例。更具体地,从剩余存储节点恢复数据,例如适当地使用纠错码或从剩余存储节点读取。在两种或更多种类型的擦除编码共存于存储节点中的情况下,可以使用这两种或更多种类型的擦除编码来恢复数据。在决定动作614中,确定是否应该并行读取数据。在一些实施例中,存在多于一个数据路径(例如,正如数据的双冗余),并且可以跨越两条路径并行地读取数据。如果数据不是并行读取,则流程分支到动作618。如果数据将被并行读取,则流程分支到动作616,其中结果被竞赛。然后将竞赛的胜利者用作恢复的数据。
在动作618中,确定用于重建的擦除编码方案。例如,在一些实施例中,每个存储节点能够在跨越存储单元写入数据时决定应用两个或更多个擦除编码方案中的哪个。在一些实施例中,存储节点协作以确定擦除编码方案。这可以通过确定哪个存储节点对特定数据段的擦除编码方案负责,或者通过分配存储节点以具有该责任来完成。在一些实施例中,采用各种机制诸如作证、投票或决策逻辑来实现该动作。非易失性固态存储装置可以充当证人(在一些实施例中)或者充当投票者(在一些实施例中),使得如果权限的一个副本变得有缺陷,则剩余的运行的非易失性固态存储装置和权限的剩余副本能够确定缺陷权限的内容。在动作620中,通过擦除编码将恢复的数据写入存储节点的其余部分。例如,为重建确定的擦除编码方案可以不同于在恢复数据中,即在读取数据中应用的擦除编码方案。更具体地,丢失存储节点中的两个可能意味着一些擦除编码方案不再适用于剩余的存储节点,并且然后存储节点切换到适用于剩余的存储节点的擦除编码方案。
改变数据条带314的配置的能力是存储节点150和非易失性固态存储装置152的许多特征中的一个。在图7A和图7B的示例中,数据以数据条带314、数据条带326、数据条带338、数据条带340、数据条带342、数据条带344的形式存储,其中数据被分割,即被分解和被分布在多个存储节点150上。在一些实施例中,数据可以跨越存储节点150中或多个存储节点150中的非易失性固态存储装置152被条带化。各种RAID配置和相关联的数据条带化方案和冗余级别是可能的,如由用于每个数据段的权限168所控制的。具有用于指定数据段的权限168的存储节点150可以是充当数据服务器的存储节点150、充当奇偶校验服务器的存储节点150或不具有固态存储装置152的存储节点150(仅计算)。在各种布置中,每个存储节点150或每个非易失性固态存储装置152为数据条带314提供一位数据或一个奇偶校验位。各种实施例实施纠错码(ECC),其允许恢复数据,即使一个或两个存储节点150失效或不可用。在一些实施例中,保存权限168的存储节点确定哪个RAID方案或级别且该权限168指向数据条带314。数据条带化能够在位级别、字节级别或块级别应用,并且进一步的数据条带化方案是可能的。在一些版本中,存储节点150或固态存储装置152可以对数据条带314贡献多于一个位。在一些实施例中,在每个非易失性固态存储装置152处执行纠错码计算,其用于非易失性固态存储装置152从段中包含的数据的分片。根据需要校正的数据的该分片被发送回具有用于数据的权限168的存储节点150,其中数据被重新装配。不止一个条带类型,或者RAID方案或级别可以存在于存储节点150上(即,共存于存储集群160中),如下面将进一步描述的。
图7A是不同大小,即不同条带宽度的数据条带314、数据条带326的配置图。这些数据条带314、数据条带326共存于存储节点150上,或者在一些实施例中共存于非易失性固态存储装置152上。例如,在具有双冗余的RAID方案或级别中,一个数据条带326被分割在三个存储节点150上。来自第一存储节点150的数据的相同副本存在于第二存储节点150和第三存储节点150的每个中。在示例数据条带326中,由于该数据恢复版本需要两个相同的数据副本,存储开销比数据存储容量多200%。换句话说,对于N位数据,相对的总存储量为(N+2N)除以N,其等于三,并且这与N无关。另一数据条带314被分割在用作数据服务器的存储节点150上,并被分割在用作提供p和q奇偶校验位的奇偶校验服务器的存储节点150上。根据在该数据条带314中具有两个奇偶校验位,即,奇偶校验位p和奇偶校验位q的RAID方案或级别,向存储节点150写入和从其读取用户数据。由于该特定纠错码将两个位添加到数据长度,因此对于N个位的数据,相对的存储开销与(N+2)除以N相关。例如,10加2冗余具有20%的存储器开销。因此较宽数据条带314与较窄数据条带326相比具有更高的存储效率和更低的存储开销。
图7B是根据一些实施例的跨越各种存储器容量的存储节点150的数据条带338、数据条带340、数据条带342、数据条带344的配置图。如图所示,存储节点150中的两个比存储节点150中的其它两个具有更大的容量,例如两倍。可以通过应用如图所示的数据条带338、数据条带340、数据条带342、数据条带344来使用这些存储节点150的所有容量。例如,两个数据带338、数据条带340被应用在较高容量存储节点150中的两个上,以及较低容量存储节点150中的一个上。两个数据条带342、数据条带344被应用在较低容量存储节点150中的一个上,以及较高容量存储节点150中的两个上。
各种实施例在加电时或在移除、替换或插入一个或更多个存储节点150和/或固态存储装置152时的自配置能力提供了自动重新配置的存储装置存储器拓扑。例如,在具有多个存储节点150和两级冗余的存储集群中,如上所述,可以丢失两个存储节点150并且仍然可以重建数据。在小配置中,存储集群160可以自配置以存储具有200%存储开销的两个复制副本,即数据的镜像。在较大的配置中,集群可以自配置为具有奇偶校验页,该奇偶校验页具有较低的存储开销。因此将存储开销重新配置为集群成员关系改变。存储节点150、固态存储装置152和存储集群160这些形式能够在RAID方案之间动态切换,并且在任何时刻可以具有RAID方案的混合组合。当存储集群160的拓扑改变并且可以保持原样,或者稍后根据新的RAID方案重建时,则不需要重建较早形成的条带。在一些实施例中,存储节点150和非易失性固态存储装置152能够在随后的访问,即写入或读取中,从一个数据条带化方案切换到另一个。到达的新数据可以写入到在数据的到达时刻就位的任何拓扑中。添加一个或更多个存储节点150或非易失性固态存储装置152不需要从系统中移除数据用于系统重新分区。存储集群160的拓扑,例如,一个或多个RAID方案和存储开销,被自动重新配置为存储集群160的几何形状,和/或改变每个存储节点150或每个非易失性固态存储装置152的存储容量。因此存储节点150和非易失性固态存储装置152在存储装置存储器的混合拓扑中实施在数据条带化例如RAID方案之间的动态切换。
具有存储节点150的存储集群160关于不同大小的数据条带的这种灵活性能够在升级、数据恢复、重建、重新分布、重新分配等期间被利用。例如,较小的系统可以具有2加1冗余,其意味着每个数据具有相同的副本,并且存在100%的存储器开销。较大的系统可以具有10加2冗余,其意味着只有20%的存储器开销。增加存储容量,使系统自配置冗余,从而减小存储开销并提高存储效率。存储节点150具有确定利用存储节点150的基本上所有可用存储容量的数据条带化方案的能力。相比之下,比起具有存储集群160的最小存储容量的任何存储节点150,固定数据条带化方案浪费具有更大容量的存储节点150的存储容量。系统可以具有由一个冗余方案保护的一些数据,以及由另一个冗余方案保护的一些数据。随着系统增长,数据可以通过不同级别的冗余被保护。因此,可以根据应用或其它期望的特性将多种数据保护方案集成到实施例中。这是分布式任务,因为存储节点150中的每个具有独立地选择RAID条带方案的能力。在一些实施例中,存储集群160在分布式基础上决定将数据作为到达以用于写入的数据而放置在哪里。
如上所述的实施例提供了非中断升级。这与以前的升级方法相比,包括一种俗称为“叉车式升级”的方法,其中必须将数据从被替换的组件中迁移出来。然后移除组件并用升级的组件替换,并将数据迁移回新的组件中。在当前描述的存储集群160中,可以替换或添加组件,并且系统在升级过程期间保持在线和可访问。存储集群160重新配置以吸收新组件。系统的完全升级可以通过本文描述的实施例递增地发生。例如,随着更新的固态技术的发展,其中技术具有与前几代不同的大小限制,实施例使得能够引入更新的固态技术来替换有缺陷的存储节点、增加额外的容量、利用更新的技术等。随着时间的推移,可以通过增量存储节点替换件来替换和/或升级整个系统。除了增加容量之外,实施例还以非破坏性方式覆盖容量的删除。
图8A是根据一些实施例的可以在存储集群、存储节点和/或非易失性固态存储器的实施例上实践或由其实践的用于访问存储节点中的用户数据的方法的流程图。该方法中描述的许多动作可以由一个或更多个处理器执行,诸如存储节点上的处理器和固态存储装置中的处理器。该方法的部分或全部可以在软件、硬件、固件或其组合中实施。存储节点和固态存储装置可以具有相同或不同的容量,如图3、图6和图7中所示。在该方法中,如果添加或移除存储节点,则存储节点和固态存储装置能够重新配置,并且即使两个存储节点失效也能够访问和重建用户数据。
在动作802中,将用户数据分布在存储集群的整个存储节点中。例如,存储节点可以关于跨越存储节点分割数据的一个或更多个数据条带化方案自配置。每个数据条带化方案是根据用户数据的冗余级别。可以使用一个或更多个擦除编码方案在存储集群的存储节点上分布用户数据。在存储集群中的存储节点中可以共存两个擦除编码方案(在一些实施例中,或者更多)。在一些实施例中,每个存储节点能够确定在写入数据时应用多个擦除编码方案中的哪个,并且能够确定在读取数据时应用哪个擦除编码方案。在决定动作804中,询问问题“是否添加存储节点?”如果答案为是,则存在添加的存储节点,流程分支到动作808以便重新配置。如果答案为否,则没有添加的存储节点,流程继续到决定动作806。在决定动作806中,询问问题“是否移除存储节点?”如果答案为否,则流程分支到决定动作810。如果答案为是,则移除存储节点,流程继续到动作808以便重新配置。
在动作808中,在存储节点中重新配置用户数据的冗余。例如,添加存储节点可以允许存储集群中的存储节点从两个复制副本重新配置为N+2冗余。移除存储节点可与此相反。将通过存储节点的自配置相应地调整数据条带化方案。在决定动作810中,询问问题“是否应压缩用户数据?”如果答案为否,则流程继续到决定动作814。如果答案为是,则流程分支到动作812,其中用户数据被压缩。可以使用相同的数据条带化方案或新的数据条带化方案(即,使用一个数据条带化方案读取数据,然后使用另一数据条带化方案压缩和写入数据)来执行压缩。
在决定动作814中,询问问题“两个存储节点不可达?”如果答案为否,则流程分支到动作802以便在整个存储节点中继续分布用户数据。如果答案为是,则流程分支到动作816以便访问数据并开始数据重建过程。在动作816中,访问用户数据。例如,由于两个存储节点不可达,所以可以在一个数据条带化方案(例如,RAID 1)中在用户数据的冗余副本中访问用户数据,或者可以应用纠错以从应用使用N加2冗余的数据条带化方案(例如,RAID6)的存储节点来读取数据。在动作818中,重建用户数据。例如,可以将恢复的数据写入剩余的存储节点,应用适当的数据条带化方案(即,与剩余的存储节点相匹配的数据条带化方案)。存储节点能够为数据分割方案自配置。在一些实施例中,多个数据条带化方案能够共存于存储集群和存储节点中,并且可以使用两种或更多种类型的擦除编码来恢复数据。
图8B是根据一些实施例的可以在存储集群、存储节点和/或非易失性固态存储装置的实施例上实践,或由该实施例实践的用于访问存储节点中的用户数据的方法的流程图。该方法中描述的许多动作可以由一个或更多个处理器执行,诸如存储节点上的处理器和固态存储装置中的处理器。该方法的部分或全部可以在软件、硬件、固件或其组合中实施。存储节点和固态存储装置能够具有相同或不同的容量,如图3、图6和图7中所示。在该方法中,如果添加或移除存储节点,则存储节点和固态存储装置可以重新配置,并且即使两个存储节点失效也能够访问和重建用户数据,同时一直支持非均匀存储大小和可扩展性。
在动作803中,用户数据分布在存储集群的整个存储节点中。例如,存储节点能够关于跨越存储节点分割数据的一个或更多个数据条带化方案自配置。每个数据条带化方案是根据用户数据的冗余级别。可以使用一个或更多个擦除编码方案在存储集群的存储节点上分布用户数据。在存储集群中的存储节点中可以共存两个擦除编码方案(在一些实施例中,或者更多)。在一些实施例中,每个存储节点能够确定在写入数据时应用多个擦除编码方案中的哪个,并且能够确定在读取数据时应用哪个擦除编码方案。这些可以是相同或不同的擦除编码方案。
在决定动作805中,确定两个存储节点是否不可达。如果答案为否,则流程分支回到动作803,以便继续在整个存储节点中分布用户数据。如果答案为是,则流程分支到动作807。在动作807中,经由擦除编码从剩余的存储节点访问用户数据。该访问可以包括读取或写入用户数据,或者重建用户数据。例如,由于两个存储节点已经失效,所以可以在一个数据条带化方案(例如,RAID 1)中的用户数据的冗余副本中访问用户数据,或者可以应用纠错以从应用使用N加2冗余的数据条带化方案(例如,RAID 6)的存储节点来读取数据。
在动作809中,添加存储节点。存储节点可以具有与其它存储节点相同的存储容量,或者具有不同的存储容量。在动作811中,确定擦除编码方案。例如,添加存储节点可以导致存储节点确定特定擦除编码方案适合于存储节点的新的总数,并且利用存储节点的所有存储容量。在动作813中,配置存储节点。该配置根据在动作811中确定的擦除编码方案。在一些实施例中,动作813中的配置响应于对正在添加的存储节点的检测而自动启动。
在动作815中,恢复用户数据。例如,类似于动作807中的访问,可以从剩余的存储节点恢复用户数据。存储节点可以应用适当的擦除编码方案以恢复用户数据。在动作817中,写入用户数据。例如,可以将在动作815中恢复的用户数据写入动作813中配置的存储节点,其是根据在动作811中确定的擦除编码方案。
应当理解,本文所描述的方法可以用数字处理系统来执行,诸如常规的通用计算机系统。另选地,可以使用被设计或被编程为仅执行一个功能的专用计算机。图9是示出可以实施本文所描述的实施例的示例性计算设备的图示。根据一些实施例,图9的计算设备可以用于执行存储节点或非易失性固态存储装置的功能的实施例。该计算设备包括通过总线905耦合到存储器903的中央处理单元(CPU)901,以及大容量存储设备907。在一些实施例中,该大容量存储设备907表示持久数据存储设备诸如磁盘驱动器,其可以是本地的或远程的。在一些实施例中,该大容量存储设备907可以实施备份存储。存储器903可以包括只读存储器、随机存取存储器等。在一些实施例中,驻留在该计算设备上的应用程序可以存储在计算机可读介质上,或者经由计算机可读介质诸如存储器903或大容量存储设备907被访问。应用程序还可以是经由该计算设备的网络调制解调器或其它网络接口被调制访问的调制电子信号的形式。应当理解,在一些实施例中,CPU 901可以在通用处理器、专用处理器或专门编程的逻辑器件中被体现。
显示器911通过总线905与CPU 901、存储器903和大容量存储设备907通信。显示器911被配置以显示与本文所述的系统相关联的任何可视化工具或报告。输入/输出设备909耦合到总线905以便将命令选择中的信息通信到CPU 901。应当理解,去往和来自外部设备的数据可以通过输入/输出设备909通信。CPU 901能够被定义为执行本文所描述的功能以能够实施参考图1至图6描述的功能。在一些实施例中,体现该功能的代码可以存储在存储器903或大容量存储设备907内,以由处理器诸如CPU 901执行。该计算设备上的操作系统可以是MS-WINDOWSTM、UNIXTM、LINUXTM、iOSTM、CentOSTM、AndroidTM、Redhat LinuxTM、z/OSTM或其它已知的操作系统。应当理解,本文描述的实施例也可以与虚拟化计算系统集成。
本文公开了详细的说明性实施例。然而,本文公开的具体功能细节仅是为了代表描述实施例的目的。然而,实施例可以以许多替代形式体现,并且不应被解释为仅限于本文所阐述的实施例。
应当理解,尽管这里可以使用术语第一、第二等以描述各种步骤或计算,但是这些步骤或计算不应当由这些术语限制。这些术语仅用于将一个步骤或计算与另一个步骤或计算相区分。例如,第一计算可以被称为第二计算,并且类似地,第二步骤可以被称为第一步骤,而不脱离本公开的范围。如本文所使用的,术语“和/或”以及“/”符号包括相关联的所列项目中的一个或更多个的任何和所有组合。
除非上下文另有明确说明,否则本文所使用的单数形式“一”、“一个”和“该”也旨在包括复数形式。将进一步理解,当在本文中使用时,术语“包含”、“正在包含”、“包括”和/或“正在包括”指定所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或更多个其它特征、整体、步骤、操作、元件、组件和/或其集合的存在或添加。因此,本文所使用的术语仅用于描述特定实施例的目的而不意在限制。
还应注意,在一些另选实施方案中,所述的功能/动作可以不按照附图中所示的顺序发生。例如,取决于所涉及的功能/动作,连续示出的两个图实际上可以基本上同时执行,或者有时可以以相反的顺序执行。
考虑到上述实施例,应当理解,实施例可以采用涉及存储在计算机系统中的数据的各种计算机实施的操作。这些操作是需要物理量的物理操纵的操作。通常,尽管不是必须的,这些量采取能够被存储、传送、组合、比较和以其它方式操纵的电或磁信号的形式。进一步地,所执行的操纵通常在术语中被称为诸如产生、识别、确定或比较。本文描述的形成实施例的一部分的任何操作是有用的机器操作。实施例还涉及用于执行这些操作的设备或装置。该装置能够为了所需目的而被特别构造,或者该装置可以是通过存储在计算机中的计算机程序选择性地被激活或被配置的通用计算机。特别地,各种通用机器可以与根据本文的教导编写的计算机程序一起使用,或者可以更方便地构造更专用的装置以执行所需的操作。
模块、应用、层、代理或其它方法可操作实体可以被实施为硬件、固件或者执行软件的处理器或其组合。应当理解,在本文公开了基于软件的实施例的情况下,该软件可以被实施在物理机器诸如控制器中。例如,控制器可以包括第一模块和第二模块。控制器可以被配置以执行例如方法、应用、层或代理的各种动作。
实施例还能够被实施为非暂时性计算机可读介质上的计算机可读代码。该计算机可读介质是能够存储数据的任何数据存储设备,该数据随后可以由计算机系统读取。该计算机可读介质的示例包括硬盘驱动器、网络附加存储装置(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所述的存储集群,其进一步包括:
所述多个存储节点被配置以容纳共存在所述多个存储节点中的不同的独立磁盘冗余阵列方案即RAID方案。
10.根据权利要求8所述的存储集群,其进一步包括:
所述多个存储节点被配置以将数据条带化方案从两个复制副本改变为N加2冗余。
11.根据权利要求8所述的存储集群,其进一步包括:
所述多个存储节点被配置使得当存储节点被添加到所述存储集群时,相对于所述存储集群的总存储的存储开销减小,并且存储效率提高。
12.根据权利要求8所述的存储集群,其进一步包括:
所述多个存储节点被配置以响应于存储集群成员关系改变来重新配置存储开销。
13.根据权利要求8所述的存储集群,其进一步包括:
所述多个存储节点中的每个被配置以基于所述多个存储节点中的其它存储节点的存储集群中的成员关系,而关于数据条带化方案自配置。
14.根据权利要求8所述的存储集群,其进一步包括:
所述多个存储节点被配置使得所述用户数据的不同部分在所述多个存储节点中具有不同的冗余级别。
15.一种用于访问具有非易失性固态存储器的多个存储节点中的用户数据的方法,其包括:
通过擦除编码将所述用户数据分布在整个所述多个存储节点中,其中所述多个存储节点容纳在将所述多个存储节点耦合为存储集群的单个机箱内,并且其中所述用户数据经由所述擦除编码在所述多个存储节点中的两个不可达的情况下在所述多个存储节点中是可访问的;
改变所述多个存储节点的成员关系;以及
响应于所改变的成员关系,经由所述擦除编码在所述多个存储节点中重新配置所述用户数据的冗余,其中处理器执行所述方法的至少一个步骤。
16.根据权利要求15所述的方法,其进一步包括:
压缩所述多个存储节点中的所述用户数据。
17.根据权利要求15所述的方法,其进一步包括:
将所述用户数据从第一数据条带化方案重建为第二数据条带化方案。
18.根据权利要求15所述的方法,其进一步包括:
根据第二数据条带化方案将第二数据写入所述多个存储节点中,其中所述用户数据根据第一数据条带化方案而作为第一数据保留在所述存储集群中。
19.根据权利要求15所述的方法,其进一步包括:
由所述多个存储节点中的一个选择第一独立磁盘冗余阵列级别即第一RAID级别作为所述用户数据的擦除编码;以及
由所述多个存储节点中的一个不同存储节点选择第二RAID级别作为经重新配置的所述用户数据的冗余。
20.根据权利要求15所述的方法,其中:
改变所述多个存储节点的所述成员关系包括将存储节点添加到所述存储集群或从所述存储集群中移除存储节点中的一者;以及
所述擦除编码和所述冗余包括在所述多个存储节点之间共存的两个或更多个RAID级别。
CN201580036311.6A 2014-06-04 2015-06-04 自动重新配置存储装置存储器拓扑 Active CN106471461B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/296,167 US9367243B1 (en) 2014-06-04 2014-06-04 Scalable non-uniform storage sizes
US14/296,149 2014-06-04
US14/296,167 2014-06-04
US14/296,149 US9612952B2 (en) 2014-06-04 2014-06-04 Automatically reconfiguring a storage memory topology
PCT/US2015/034302 WO2015188014A1 (en) 2014-06-04 2015-06-04 Automatically reconfiguring a storage memory topology

Publications (2)

Publication Number Publication Date
CN106471461A true CN106471461A (zh) 2017-03-01
CN106471461B CN106471461B (zh) 2020-10-30

Family

ID=54767407

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580036311.6A Active CN106471461B (zh) 2014-06-04 2015-06-04 自动重新配置存储装置存储器拓扑

Country Status (4)

Country Link
EP (1) EP3152648B1 (zh)
CN (1) CN106471461B (zh)
AU (1) AU2015269370B2 (zh)
WO (1) WO2015188014A1 (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107728935A (zh) * 2016-08-12 2018-02-23 谷歌有限责任公司 对分布式计算系统中的数据重新分区
CN108491169A (zh) * 2018-03-31 2018-09-04 北京联想核芯科技有限公司 配置独立冗余磁盘阵列raid条带的方法、装置、设备及介质
CN109144406A (zh) * 2017-06-28 2019-01-04 华为技术有限公司 分布式存储系统中元数据存储方法、系统及存储介质
CN109840051A (zh) * 2018-12-27 2019-06-04 华为技术有限公司 一种存储系统的数据存储方法及装置
CN109901953A (zh) * 2019-02-14 2019-06-18 新华三技术有限公司成都分公司 数据重构方法及装置
CN111066009A (zh) * 2017-10-23 2020-04-24 维卡艾欧有限公司 具有写入均衡的闪存寄存器
CN111813331A (zh) * 2019-04-10 2020-10-23 阿里巴巴集团控股有限公司 用于操作数据存储系统的方法、系统和非暂时性计算机可读介质
CN112889034A (zh) * 2018-10-15 2021-06-01 Netapp股份有限公司 对数据块的内容驱动的分布进行擦除编码
CN113687798A (zh) * 2021-10-26 2021-11-23 苏州浪潮智能科技有限公司 一种控制数据重构的方法、装置、设备及可读介质
CN114185485A (zh) * 2021-11-04 2022-03-15 浙江大华存储科技有限公司 静态电压表的节点处理方法、装置、计算机设备和存储介质
CN115114057A (zh) * 2021-03-19 2022-09-27 美光科技公司 管理在下移多层级存储器单元时的容量减小

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) * 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
CN111158589B (zh) * 2019-12-16 2023-10-20 绿晶半导体科技(北京)有限公司 存储阵列的动态管理方法和装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080098158A1 (en) * 2006-10-20 2008-04-24 Jun Kitahara Storage device and storing method
CN101676855A (zh) * 2008-09-11 2010-03-24 美国日本电气实验室公司 可变动的辅助存储系统和方法
US20110030236A1 (en) * 2009-01-27 2011-02-10 Schott Solar Ag Procedure for increasing the long-term stability of transport aids
US20110225352A1 (en) * 2007-08-13 2011-09-15 Duran Paul A Apparatus and system for object-based storage solid-state drive
US20110302369A1 (en) * 2010-06-03 2011-12-08 Buffalo Inc. Storage apparatus and control method therefor
US20120198152A1 (en) * 2011-02-01 2012-08-02 Drobo, Inc. System, apparatus, and method supporting asymmetrical block-level redundant storage
CN103348326A (zh) * 2010-09-28 2013-10-09 净睿存储股份有限公司 Ssd环境中的适配raid
CN103793182A (zh) * 2012-09-04 2014-05-14 Lsi公司 可扩展存储保护
CN104541251A (zh) * 2012-06-13 2015-04-22 卡林戈公司 在存储群集中的擦除编码和复制

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631271B2 (en) * 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US10157002B2 (en) * 2010-08-26 2018-12-18 International Business Machines Corporation Migrating an encoded data slice based on an end-of-life memory level of a memory device

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080098158A1 (en) * 2006-10-20 2008-04-24 Jun Kitahara Storage device and storing method
US20110225352A1 (en) * 2007-08-13 2011-09-15 Duran Paul A Apparatus and system for object-based storage solid-state drive
CN101676855A (zh) * 2008-09-11 2010-03-24 美国日本电气实验室公司 可变动的辅助存储系统和方法
US20110030236A1 (en) * 2009-01-27 2011-02-10 Schott Solar Ag Procedure for increasing the long-term stability of transport aids
US20110302369A1 (en) * 2010-06-03 2011-12-08 Buffalo Inc. Storage apparatus and control method therefor
CN103348326A (zh) * 2010-09-28 2013-10-09 净睿存储股份有限公司 Ssd环境中的适配raid
US20120198152A1 (en) * 2011-02-01 2012-08-02 Drobo, Inc. System, apparatus, and method supporting asymmetrical block-level redundant storage
CN104541251A (zh) * 2012-06-13 2015-04-22 卡林戈公司 在存储群集中的擦除编码和复制
CN103793182A (zh) * 2012-09-04 2014-05-14 Lsi公司 可扩展存储保护

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107728935B (zh) * 2016-08-12 2020-08-18 谷歌有限责任公司 对分布式计算系统中的数据重新分区
CN107728935A (zh) * 2016-08-12 2018-02-23 谷歌有限责任公司 对分布式计算系统中的数据重新分区
CN109144406A (zh) * 2017-06-28 2019-01-04 华为技术有限公司 分布式存储系统中元数据存储方法、系统及存储介质
CN109144406B (zh) * 2017-06-28 2020-08-07 华为技术有限公司 分布式存储系统中元数据存储方法、系统及存储介质
CN111066009A (zh) * 2017-10-23 2020-04-24 维卡艾欧有限公司 具有写入均衡的闪存寄存器
CN111066009B (zh) * 2017-10-23 2023-08-22 维卡艾欧有限公司 具有写入均衡的闪存寄存器
CN108491169A (zh) * 2018-03-31 2018-09-04 北京联想核芯科技有限公司 配置独立冗余磁盘阵列raid条带的方法、装置、设备及介质
CN108491169B (zh) * 2018-03-31 2020-12-29 深圳忆联信息系统有限公司 配置独立冗余磁盘阵列raid条带的方法、装置、设备及介质
CN112889034A (zh) * 2018-10-15 2021-06-01 Netapp股份有限公司 对数据块的内容驱动的分布进行擦除编码
CN109840051A (zh) * 2018-12-27 2019-06-04 华为技术有限公司 一种存储系统的数据存储方法及装置
CN109901953B (zh) * 2019-02-14 2022-07-08 新华三技术有限公司成都分公司 数据重构方法及装置
CN109901953A (zh) * 2019-02-14 2019-06-18 新华三技术有限公司成都分公司 数据重构方法及装置
CN111813331A (zh) * 2019-04-10 2020-10-23 阿里巴巴集团控股有限公司 用于操作数据存储系统的方法、系统和非暂时性计算机可读介质
CN115114057A (zh) * 2021-03-19 2022-09-27 美光科技公司 管理在下移多层级存储器单元时的容量减小
CN113687798A (zh) * 2021-10-26 2021-11-23 苏州浪潮智能科技有限公司 一种控制数据重构的方法、装置、设备及可读介质
CN114185485A (zh) * 2021-11-04 2022-03-15 浙江大华存储科技有限公司 静态电压表的节点处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN106471461B (zh) 2020-10-30
AU2015269370B2 (en) 2019-06-06
EP3152648A4 (en) 2018-02-28
WO2015188014A1 (en) 2015-12-10
AU2015269370A1 (en) 2016-12-22
EP3152648A1 (en) 2017-04-12
EP3152648B1 (en) 2021-08-04

Similar Documents

Publication Publication Date Title
US11385799B2 (en) Storage nodes supporting multiple erasure coding schemes
JP7135129B2 (ja) ストレージクラスター
CN106471461A (zh) 自动重新配置存储装置存储器拓扑
US11138082B2 (en) Action determination based on redundancy level
US9959170B2 (en) Automatically reconfiguring a storage memory topology
US20200192577A1 (en) Storage cluster operation using erasure coded data
AU2015300771B2 (en) Failure mapping in a storage array
US9817750B2 (en) Profile-dependent write placement of data into a non-volatile solid-state storage
CN110023896A (zh) 直接映射的闪存存储系统中的块合并
CN109716279A (zh) 用于写入持久性的自适应并发
AU2015269360A1 (en) Rebuilding data across storage nodes
AU2015269364B2 (en) Mechanism for persisting messages in a storage system
US11068363B1 (en) Proactively rebuilding data in a storage cluster

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
CB02 Change of applicant information

Address after: American California

Applicant after: Pure Storage Inc.

Address before: American California

Applicant before: PURE STORAGE INC.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant