CN111587423B - 分布式存储系统的分层数据策略 - Google Patents

分布式存储系统的分层数据策略 Download PDF

Info

Publication number
CN111587423B
CN111587423B CN201880086411.3A CN201880086411A CN111587423B CN 111587423 B CN111587423 B CN 111587423B CN 201880086411 A CN201880086411 A CN 201880086411A CN 111587423 B CN111587423 B CN 111587423B
Authority
CN
China
Prior art keywords
state
data
data block
data blocks
degradation
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
CN201880086411.3A
Other languages
English (en)
Other versions
CN111587423A (zh
Inventor
马奥尔·本-达扬
奥姆里·帕尔蒙
利兰·兹维贝
卡纳尔·阿迪蒂
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.)
Weka Io Ltd
Original Assignee
Weka Io 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
Application filed by Weka Io Ltd filed Critical Weka Io Ltd
Priority to CN202311499987.1A priority Critical patent/CN117453136A/zh
Publication of CN111587423A publication Critical patent/CN111587423A/zh
Application granted granted Critical
Publication of CN111587423B publication Critical patent/CN111587423B/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/0662Virtualisation aspects
    • 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/061Improving I/O performance
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0647Migration mechanisms
    • G06F3/0649Lifecycle 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/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/0656Data buffering 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

多个计算设备经由网络彼此可通信地耦接,并且多个计算设备中的每一个可操作地耦接至多个存储设备中的一个或多个。存储设备可以被分配给多个存储层之一,存储设备中的数据可以被重新分配给不同存储层中的另一存储设备。

Description

分布式存储系统的分层数据策略
优先权要求
本申请要求2017年11月13日提交的标题为“分布式存储系统的分层数据策略”的美国临时专利申请62/585,204以及2018年9月5日提交的标题为“分布式存储系统的分层数据策略”的美国专利申请No.16/121,524的优先权。
背景技术
通过将这样的方法与参照附图在本公开的其余部分中阐述的本方法和系统的一些方面进行比较,数据存储的常规方法的局限性和缺点对于本领域技术人员将变得显而易见。
相关申请的交叉引用
题为“分布式擦除编码虚拟文件系统”的美国专利申请号15/243,519的全文通过将其整体引入而结合于本文中。
发明内容
提供了用于分布式存储系统中的分层数据策略的方法和系统,该方法和系统基本上由至少一个附图示出和/或结合至少一个附图进行了描述,并在权利要求中更完整地阐述。
附图说明
图1示出根据本公开的方面的虚拟文件系统的各种示例配置。
图2示出根据本公开的方面的虚拟文件系统节点的示例配置。
图3示出根据本公开的示例实现方式的虚拟文件系统的另一种表示。
图4示出根据本公开的示例实现方式的分层存储器的示例。
图5是示出根据本公开的示例实现方式的扩展区的状态的示例表。
图6是说明根据本发明的示例实现方式的扩展区的降级或读取高速缓存条目的删除的示例流程图。参考图6,示出了流程图。
图7是说明根据本发明的示例实现的删除读取高速缓冲存储器中的扩展区的实例流程图。
图8示出其中两个分布式故障弹性地址空间驻留在多个固态存储盘上的示例实现方式。
图9示出了根据本公开的示例实现方式的前向纠错方案,其可以用于保护存储到虚拟文件系统的非易失性存储器的数据。
具体实施方式
传统上,文件系统使用对元数据结构(例如,目录,文件,属性,文件内容)的集中控制。如果可以从单个服务器访问本地文件系统而该服务器发生故障,则由于没有进一步的保护,该文件系统的数据可能会丢失。为了增加保护,某些文件系统(例如NetApp提供的文件系统)以主动-被动方式使用了一对或多对控制器,以跨两台或多台计算机复制元数据。其他解决方案以集群方式使用了多个元数据服务器(例如,由IBM GPFS,Dell EMC Isilon,Lustre等提供)。但是,由于传统集群系统中的元数据服务器的数量被限制为少量,因此此类系统无法扩展。
本公开中的系统适用于小型集群,并且还可以扩展到许多成千上万个节点。讨论了关于非易失性存储器(NVM)(例如,以固态驱动器(SSD)形式出现的闪存)的示例实施例。NVM可以分为4kB“块”(block)和128MB“组块”(chunk)。“扩展区”(extent)也可以存储在易失性存储器中,例如用于快速访问的RAM,也可以由NVM存储备份。扩展区可以存储块的指针,例如,指向存储在块中的1MB数据的256个指针。在其他实施例中,也可以使用更大或更小的存储器划分。本公开中的元数据功能可以有效地分布在许多服务器上。例如,在大的负荷指向文件系统名称空间的特定部分的“热点”的情况下,则此负荷可以分布在多个节点上。
图1示出根据本公开的方面的虚拟文件系统(VFS)的各种示例配置。图1中所示的是局域网(LAN)102,其包括一个或多个VFS节点120(由1至J的整数索引,j≥1),并且可选地包括(虚线所示):一个或多个专用存储节点106(由1至M的整数索引,M≥1);一个或多个计算节点104(由1至N的整数索引,N≥1);和/或将LAN 102连接到远程网络118的边缘路由器。远程网络118可选地包括一个或多个存储服务114(由1至K的整数索引,K≥1);和/或一个或多个专用存储节点115(由1至L的整数索引,对于L≥1)。
每个VFS节点120j(j为整数,其中1≤j≤J)是网络计算设备(例如,服务器,个人计算机等),其包括用于运行VFS进程以及可选的客户端进程的电路(或者直接在设备104n的操作系统上和/或在设备104n中运行的一个或多个虚拟机中)。
计算节点104是可以在没有VFS后端的情况下运行VFS前端的联网设备。计算节点104可以通过将SR-IOV放入NIC并使用完整的处理器内核来运行VFS前端。备选地,计算节点104可以通过经由Linux内核联网堆栈路由联网并且使用内核进程调度来运行VFS前端,因此不具有完整内核的要求。如果用户不想为VFS分配完整的核心,或者联网硬件与VFS要求不兼容,这将很有用。
图2示出根据本公开的方面的VFS节点的示例配置。VFS节点包括VFS前端202和驱动器208、VFS存储器控制器204、VFS后端206和VFS SSD代理214。如本公开中所使用的,“VFS进程”是实现以下中的一个或多个的进程:VFS前端202、VFS存储器控制器204、VFS后端206和VFS SSD代理214。因此,在示例实现方式中,可以在客户端进程和VFS进程之间共享VFS节点的资源(例如,处理和存储器资源)。VFS的进程可以配置为要求相对少量的资源,以最大程度地减少对客户端应用程序的性能的影响。VFS前端202、VFS存储器控制器204和/或VFS后端206和/或VFS SSD代理214可以在主机201的处理器上或在网络适配器218的处理器上运行。对于多核处理器,不同的VFS进程可以在不同的内核上运行,并且可以运行服务的不同子集。从客户端进程212的角度来看,与虚拟文件系统的接口独立于运行VFS进程的特定物理机器。客户端进程只需要驱动器208和前端202存在就能为它们提供服务。
VFS节点可以被实现为直接在操作系统上运行的单个租户服务器(例如,裸机),或者被实现为裸机服务器中的虚拟机(VM)和/或容器(例如Linux容器(LXC))。VFS可以在LXC容器中作为VM环境运行。因此,在VM内部,仅包含VFS的LXC容器可以运行。在经典的裸机环境中,存在用户空间应用程序,并且VFS在LXC容器中运行。如果服务器正在运行其他容器化的应用程序,则VFS可能在容器部署环境(例如Docker)的管理范围之外的LXC容器内运行。
VFS节点可以由操作系统和/或虚拟机监视器(VMM)(例如,管理程序)服务。VMM可以用于在主机201上创建并运行VFS节点。多个内核可以驻留在运行VFS的单个LXC容器内,并且VFS可以使用单个Linux内核在单个主机201上运行。因此,单个主机201可以包括多个VFS前端202、多个VFS存储器控制器204、多个VFS后端206和/或一个或多个VFS驱动器208。VFS驱动器208可以在LXC容器的范围之外的内核空间中运行。
单个根输入/输出虚拟化(SR-IOV)PCIe虚拟功能可用于在用户空间222中运行网络堆栈210。SR-IOV允许隔离PCI Express,从而可以在虚拟环境上共享单个物理PCIExpress,并且可以向单个物理服务器计算机上的不同虚拟组件提供不同的虚拟功能。I/O堆栈210使VFS节点能够绕过标准TCP/IP堆栈220并直接与网络适配器218通信。可以通过无锁队列将用于uniX(POSIX)VFS功能的便携式操作系统接口提供给VFS驱动器208。SR-IOV或完整的PCIe物理功能地址也可以用于在用户空间222中运行非易失性存储器Express(NVMe)驱动器214,从而完全绕开Linux IO堆栈。NVMe可以用于访问通过PCI Express(PCIe)总线连接的非易失性存储介质216。非易失性存储介质216例如可以是固态驱动器(SSD)形式的闪存或固态硬盘(SSD)或内存模块(DIMM)形式的存储类存储器(SCM)。其他示例可能包括存储类存储器技术,例如3D-XPoint。
通过将物理SSD 216与SSD代理214和联网210耦接,可以将SSD实现为联网设备。可替代地,可以通过使用诸如NVMe-oF(基于结构的NVMe)的网络协议将SSD实现为附接网络的NVMe SSD 242或244。NVMe-oF可以允许使用冗余网络链路访问NVMe设备,从而提供更高级别或弹性。网络适配器226、228、230和232可以包含用于连接到NVMe SSD 242和244的硬件加速,以将它们转换为联网的NVMe-oF设备而无需使用服务器。NVMe SSD242和244可以各自包括两个物理端口,并且可以通过这些端口中的任何一个来访问所有数据。
每个客户端进程/应用程序212可以直接在操作系统上运行,或者可以在由操作系统和/或管理程序服务的虚拟机和/或容器中运行。客户端进程212可以在执行其主要功能的过程中从存储器读取数据和/或将数据写入存储器中。然而,客户端进程212的主要功能与存储无关(即,该过程仅关注其数据被可靠地存储并且在需要时可被检索,而不关注数据的存储位置、时间或方式)。引起这种过程的示例应用程序包括:电子邮件服务器、Web服务器、办公效率应用程序、客户关系管理(CRM)、动画视频渲染、基因组计算、芯片设计、软件构建和企业资源计划(ERP)。
客户端应用程序212可以对与VFS驱动器208通信的内核224进行系统调用。VFS驱动器208将相应的请求放在VFS前端202的队列上。如果存在几个VFS前端,则驱动器可能会负荷均衡地对不同的前端进行访问,以确保始终通过同一前端访问单个文件/目录。这可以通过基于文件或目录的ID对前端进行“碎片化”(sharding)来完成。VFS前端202提供接口以用于基于负责该操作的存储桶将文件系统请求路由到适当的VFS后端。适当的VFS后端可以在同一主机上,也可以在另一主机上。
VFS后端206托管多个存储桶,其中每个存储桶服务于它接收的文件系统请求,并执行任务来另外地管理虚拟文件系统(例如,负荷平衡、日志记录、维护元数据、缓存、在层之间移动数据、删除过时数据、更正损坏的数据等)。
VFS SSD代理214处理与相应的存储设备216的交互。这可以包括例如转换地址,以及生成发布给存储设备的命令(例如,在SATA、SAS、PCIe或其他合适的总线上)。因此,VFSSSD代理214用作虚拟文件系统的VFS后端206和存储设备216之间的中介。SSD代理214也可以与支持标准协议的标准网络存储设备通信,标准协议例如NVMe-oF(基于结构的NVMe)。
图3示出根据本公开的示例实现方式的虚拟文件系统的另一种表示。在图3中,元件302表示虚拟文件系统驻留在的各个节点(计算,存储和/或VFS)的存储器资源(例如DRAM和/或其他短期内存)和处理(例如,x86处理器、ARM处理器、NIC、ASIC)资源,例如,如上关于图2所描述的。元件308表示提供虚拟文件系统的长期存储的一个或多个物理存储设备216。
如图3所示,物理存储被组织为多个分布式故障弹性地址空间(DFRAS)518。每个分布式故障弹性地址空间包括多个组块310,组块310又包括多个块312。将块312组织成组块310仅是在一些实现中的便利,并且可能并非在所有实现中都进行。每个块312存储提交的数据316(其可以采取下面讨论的各种状态)和/或描述或引用提交的(committed)数据316的元数据314。
将存储设备308组织成多个DFRAS使得能够从虚拟文件系统的许多(可能是全部)节点进行高性能并行提交(例如,图1的所有节点1041–104N,1061–106M和1201–120J可以并行执行并发提交)。在一个示例实现方式中,虚拟文件系统的每个节点可以拥有多个DFRAS中的相应一个或多个,并对其拥有的DFRAS具有独占读取/提交访问权限。
每个存储桶拥有DFRAS,并因此在对其进行写入时不需要与任何其他节点进行协调。每个存储桶可能会在许多不同的SSD上的许多不同组块上建立条带,因此每个存储桶及其DFRAS可以基于许多参数选择当前要写入的“组块条带”,并且一旦将组块分配给该存储桶,就无需进行协调就可以进行写入。所有存储桶都可以有效地写入所有SSD,而无需协调。
每个DFRAS仅由在特定节点上运行的其所有者存储桶所拥有和访问,从而允许VFS的每个节点控制存储设备308的一部分,而不必与任何其他节点进行协调(在初始化期间或在节点故障之后[重新]分配持有DFRAS的存储桶期间除外,例如,这可以与存储设备308的实际读取/提交操作异步执行)。因此,在这样的实现方式中,每个节点可以独立于其他节点正在做什么而读取/提交到其存储桶的DFRAS,而在读取并提交到存储设备308时不需要达成任何共识。此外,在特定节点发生故障的情况下,该特定节点拥有多个存储桶的事实允许更智能且更有效地将其工作负荷重新分配给其他节点(而不是将整个工作负荷分配给单个节点,可能会创建“热点”)。就这一点而言,在一些实现方式中,存储桶的数量相对于系统中的节点的数量可能较大,使得任何一个存储桶可能是放置在另一节点上的相对较小的负荷。这允许根据其他节点的能力和容量对发生故障的节点的负荷进行细粒度的重新分配(例如,具有更多功能和容量的节点可能会获得故障节点存储桶的较高百分比)。
为了允许这种操作,可以保持元数据,该元数据将每个存储桶映射到其当前拥有的节点,使得可以将对存储设备308的读取和提交重定向到适当的节点。
负荷分配是可能的,因为整个文件系统元数据空间(例如,目录、文件属性、文件中的内容范围等)可以分解(例如,切碎或碎片化)成均匀的小片(例如,“碎片”)。例如,具有30k服务器的大型系统可以将元数据空间分成128k或256k的碎片。
每个这样的元数据碎片可以被保存在“存储桶”中。每个VFS节点可能负责几个存储桶。当存储桶在给定的后端上正在服务元数据碎片时,该存储桶被视为该存储桶的“活动”或“领导者”(leader)。通常,存储桶比VFS节点多。例如,有6个节点的小型系统可以有120个存储桶,而有1,000个节点的大型系统可以有8k个存储桶。
每个存储桶可以在一小群节点上活动,通常5个节点组成该存储桶的五元组。集群配置使所有参与节点都保持关于每个存储桶的五元组分配的最新信息。
每个五元组监视自己。例如,如果集群中有1万台服务器,并且每个服务器有6个存储桶,则每个服务器将只需要与30台不同的服务器进行通信即可维护其存储桶的状态(6个存储桶将具有6个五元组,因此6*5=30)。这比集中式实体必须监视所有节点并保持集群范围的状态要少得多。使用五元组可以使性能随着更大的集群而扩展,因为当集群大小增加时,节点不会执行更多的工作。这可能会带来一个缺点,即在“哑”模式下,一个小型集群实际上可以产生比物理节点更多的通信,但是可以通过它们共享所有存储桶而在两台服务器之间仅发送单个心跳来克服此缺点(随着集群的增长,这将更改为仅一个存储桶,但是如果您有一个5个服务器的小型集群,则它将仅在所有消息中包括所有存储桶,而每个服务器将仅与其他4个服务器通信)。五元组可以使用类似于Raft共识算法的算法进行决策(即达成共识)。
每个存储桶可能都有可以运行它的一组计算节点。例如,五个VFS节点可以运行一个存储桶。但是,在任何给定时刻,组中只有一个节点是控制器/领导者。此外,对于足够大的集群,没有两个存储桶共享同一组。如果集群中只有5个或6个节点,则大多数存储桶可以共享后端。在一个相当大的集群中,可能有许多不同的节点组。例如,在26个节点的情况下,有超过个可能的五节点组(即五元组)。
组中的所有节点都知道并同意(即达成共识)哪个节点是该存储桶的实际活动控制器(即领导者)。访问存储桶的节点可能会记住(“缓存”)组中(例如五个)成员中该存储桶的领导者的最后一个节点。如果它访问存储桶领导者,则存储桶领导者执行所请求的操作。如果它访问的节点不是当前领导者,则该节点指示领导者“重定向”访问。如果访问缓存的领导者节点超时,则联系节点可以尝试使用同一五元组的另一个节点。集群中的所有节点共享集群的公用“配置”,这使节点可以知道哪个服务器可以运行每个存储桶。
每个存储桶可都有负荷/使用率值,该值指示文件系统上运行的应用程序对存储桶的使用程度。例如,即使使用的存储桶数量不平衡,具有11个使用率较低的存储桶的服务器节点也可以接收另一个元数据存储桶,以在具有9个使用率较高的存储桶的服务器之前运行。可以根据平均响应等待时间、并发运行的操作数、内存消耗或其他指标来确定负荷值。
即使VFS节点没有故障,也可能会发生重新分发。如果系统根据跟踪的负荷指标识别出一个节点比其他节点更忙,则系统可以将其一个存储桶移动(即“故障转移”)到另一台不太繁忙的服务器。但是,在实际将存储桶重新定位到不同主机之前,可以通过转移写入和读取来实现负荷平衡。由于每次写入可能在由DFRAS决定的不同的节点组上结束,因此具有较高负荷的节点可能不会被选择在要写入数据的条带中。系统还可能选择不提供来自高负荷节点的读取。例如,可以执行“降级模式读取”,其中,从同一条带的其他块重构高负荷节点中的块。降级模式读取是通过同一条带中的其余节点执行的读取,并且通过故障保护来重建数据。当读取延迟过高时,可能会执行降级模式读取,因为读取的发起者可能会认为该节点已关闭。如果负荷足够高以创建更高的读取延迟,则集群可以恢复为从其他节点读取该数据,并使用降级模式读取来重建所需的数据。
每个存储桶管理其自己的分布式擦除编码实例(即,DFRAS 518),并且不需要与其他存储桶协作来执行读取或写入操作。可能有成千上万个并发的分布式擦除编码实例同时工作,每个实例用于不同的存储桶。这是扩展性能不可或缺的一部分,因为它可以有效地将任何大型文件系统划分为不需要协调的独立部分,从而无论扩展规模如何都可以提供高性能。
每个存储桶处理属于其碎片的所有文件系统操作。例如,目录结构,文件属性和文件数据范围将属于特定存储桶的管辖范围。
从任何前端完成的操作开始于找出哪个存储桶拥有该操作。然后确定该存储桶的后端领导者和节点。可以通过尝试最近知道的领导者来执行该确定。如果最近知道的领导者不是当前领导者,则该节点可能知道哪个节点是当前领导者。如果最近知道的领导者不再是存储桶的五元组的一部分,则该后端将让前端知道应该回到配置中以找到存储桶的五元组的成员。操作的分布允许复杂的操作由多个服务器而不是标准系统中的单个计算机处理。
如果集群的大小很小(例如5个),并且使用五元组,则将有多个存储桶共享同一组。随着集群大小的增长,将重新分配存储桶,以使没有两个组相同。
另外,本发明的各种实施例还可具有一种用于将文件分类为多个层之一或“层”的方法。此方法可以确定更改文件的存储位置,是否应缓存文件和/或是否应预取文件。分层可能取决于文件的各种元数据,例如上次修改或访问的时间、位置、扩展名、大小等,和/或用户定义的策略(例如,每个目录、每个-文件、每个设备等)。
本公开的各种实施例可以具有可以直接连接到服务器的“本地”SSD存储,并且较低层的“对象存储”可以是例如非SSD存储。其他实施方式可以具有两个以上的层。通常,各个实施方式在不同层中可以具有不同的存储速度,和/或较低层中的存储器可能由于距离控制对各个层中存储器的访问的服务器更远而具有更大的延迟。
图4示出根据本公开的示例实现的分层存储器的示例。参照图4,示出了可以与存储器的各个层通信的主机400。例如,给定的存储器可能属于4层402、404、406和408之一。
在四层存储器中,主层402中的存储器可以具有最高性能的非易失性存储器(NVM)。主层402可以不绑定到特定类型的NVM。而是,可以支持各种类型的NVM。例如,尽管目前可以使用闪存,但是可以使用其他类型的技术,例如FeRAM。主层402可以是本地或具有低延迟支持的网络连接存储(NAS),例如,以太网、RDMA、NVM Express通过结构等。
主层之下的下一层可以是低耐久性层404。该层可以使用可能比主层NVM便宜的NVM,并因此具有较慢的访问时间。可以通过直接连接在本地将其配置为主层,也可以将其配置为NAS。
低耐久性层404之下的下一层可以是对象存储层406。对象存储层406也可以是本地或NAS,具有内部总线,例如PCIE,SAS或SATA,以及与主层NVM一样,允许在网络中访问NVM的电路。一些对象存储层406可以使用例如磁性技术,但是可以使用任何合适的技术。
下一个较低层可以被称为存档层408。该层可以用于很少被访问的数据。例如,出于法规上的原因,可能需要数据,而法律或法规要求实体将数据保留一定的时间。因此,存档层408存储器可以位于远程位置,并且花费数小时或数天来访问数据可能是可接受的。例如,存档层408存储器可以基于云,或存储在建筑物中的磁带备份等。
主层402可以保存所有元数据。主层402也可以用于两种类型的缓存。由于磁性介质在读取数据时可能具有较高的延迟,因此可能在较低层中存在用于磁性存储的读取高速缓存。因此,预取算法可以确定正在读取哪些文件,并使用各种试探法来执行预取以及其他技术以确保将来对相同类型数据的读取将非常快。主层402还可将写高速缓存用于写入数据,以避免对NVM的写放大,优化网络吞吐量和/或减少等待时间。
本公开的各个实施例可以允许对主层402、低耐久性层404、对象存储层406和存档层408中的一个或多个进行存储器管理。存储器管理的一部分可以包括例如在一个或多个层中为数据分配状态。
图5是示出根据本公开的示例实现方式的扩展区的状态的示例表。参照图5,示出了具有8行的表格500,其中,每行是扩展区的可能状态。可以通过3位标签(可以称为“标签”)来标识8种可能的状态。
存储器的各个层中的每个扩展区的状态可以被保存在注册表中的“标签”中,其中,注册表是保存所有文件的元数据的数据结构。注册表中的每个条目都可以引用一个扩展区,并且标签可以是条目的一部分。因此,标签可以指数据的扩展区。注册表可以存储在RAM中以便快速访问。
标签可以例如指用来决定何时降级文件的层3种状态,用来决定何时删除读取的高速缓存的3种状态以及扩展区是否全部在SSD上(“本地”)。这8种状态可以由3位标签表示。降级状态可以被标记为例如本地0,本地1,本地2,并且删除读取高速缓存可以被标记为例如保留0,保留1,保留2。当扩展区处于本地2状态时,该扩展区可能是降级到较低层存储的候选对象。类似地,当扩展区位于本地2时,该扩展区可能是将其数据从读取高速缓存中删除的候选对象。
降级周期可以是系统在将扩展区降级(降级)到对象存储之前等待存储区的写入的周期。这可能与文件的更新速度有关,其中,如果至少在降级周期未对其进行修改,则可以认为它可能在不久的将来不会被修改。降级周期可以由适当的硬件电路利用适当的时钟信号来计数。
保留期可以是如果没有读取文件,则在删除文件之前将文件保留在读取高速缓存中的时间。因此,这与从文件读取数据的频率有关。保留期限过后没有被读取,可以假定该扩展区可能在不久的将来不会被读取。可以通过适当的硬件电路利用适当的时钟信号来计数保留期。如果读取了扩展区,则将再次从对象存储中获取扩展区(或其一部分),并将其再次存储在读取高速缓存中。
背压与存储桶具有的自由空间量有关。如果存储桶的可用空间太小而无法进行新的写入操作,它将调用对象存储的背压机制,因此对象存储可以释放数据。首先释放的数据可能是保留时间已过的读取高速缓存块,然后可以根据上次触摸它们的日期/时间来降级数据块。
图6是说明根据本发明的示例实现的存储器块的降级的实例流程图。参照图6,示出了流程图600,其中扩展区中的4K块可以处于当前状态602。关于降级,最低状态可以是本地0,然后下一个较高状态可以是本地1,并且最高状态可能是本地2。在601,每当对4kB块进行写入操作时,该块的降级状态可以被重置为最低状态。
在604处,可以进行检查以查看降级周期是否到期而没有到扩展区的写入。如果不是,则可以通过返回到604来稍后检查计时器。如果是,则可以在606处检查状态以查看降级状态是否处于最高状态本地2。如果是这样,则无需将降级状态增加到更高的状态。如果否,则在返回到当前状态602之前,降级状态在608处增加。例如,将本地0状态增加到本地1状态,或者将本地1状态增加到本地2状态。
处于本地2状态的块表示在至少一个降级周期以及可能在两个降级周期未对其进行更新,因此可以将其降级到对象存储。
可以遵循类似的过程来删除读取高速缓存中的块。
图7是说明根据本发明的示例实现方式的删除读取缓存中的存储器块的实例的流程图。参照图7,示出了流程图700,其中,扩展区内的4K块可以处于当前状态702。关于删除读取的缓存条目,最低状态可以是保留0,然后下一个较高状态可以是保留1,且最高状态可能是保留2。在701处,无论何时从4kB块读取,可以将该块的用于删除读取高速缓存条目的状态重置为最低状态。
在704处,可以进行检查以查看降级周期是否到期而不访问块。如果否,则可以通过返回到704来稍后进行检查。如果是,则可以在706处进行检查以查看删除状态是否处于最高状态保留2。如果是,则无需将删除状态增加到更高的状态。如果否,则在708处,在返回到当前状态702之前,将删除状态增加。例如,将保留0状态递增至保留1状态,或者将保留1状态递增至保留2状态。
保留期和降级周期可以不同或者可以相同。可以例如根据存储器访问的数量,现有的保留期和降级周期中的存储器访问的速率和/或存储器管理系统可能会跟踪的其他参数来动态地改变保留期和降级周期中的每一个。
处于保留2状态的块指示在至少一个保留期内并且可能在两个保留期内未对其进行读取,因此可以将其从读取缓存中删除。
由于注册表可以在快速存储设备中,例如RAM中,因此可以快速查看注册表中的块状态。因此,查找需要移至下层存储(已降级)的块或可以从读取缓存中安全删除的缓存数据块可以非常有效地完成,而无需对慢速存储器上的数据结构进行读取和/或写入。
通常,当数据存储在SSD上时,数据可能处于“本地”状态。“读取高速缓存”数据是存储在对象存储中的数据,也高速缓存在SSD中以提高性能。“对象”数据可以是对象存储中的数据,而不是高速缓存在SSD中的数据。状态可能不是针对扩展区,而是针对该扩展区内的256个4k块中的每个块,因为可以覆盖数据。
作为覆盖扩展区中的不同块的示例,可以将“本地”扩展区降级到对象存储。扩展区的状态(扩展区中的所有数据块)然后可以从“本地”更改为“读取高速缓存”,因为本地副本仍然可用。如果修改了扩展区的某些4k块,则这些4k块将再次处于“本地”状态。如果由于背压或服务器故障而导致某些读取高速缓存块不再位于系统上,则这些块的状态将更改为“对象”。因此,单个扩展区在不同状态下可能具有不同的块。
关于对象存储,对象存储系统上的对象名称可以从扩展区ID导出,但是名称中也可以具有版本ID。出于两个原因,可能需要版本ID。首先,扩展区可能会降级几次(因为它可能会被覆盖),因此扩展区可能有多个版本,尤其是在还实现了快照的情况下。
其次,当对象存储系统是一致的,并且如果在短顺序调用相同对象到对象存储的两次PUT(写入),则第一个PUT可能是实际保存的,而不是第一个PUT后随第二个PUT。如果不保留PUT的顺序,可能会出现第一次PUT的数据被保存而第二次PUT不发生的情况。
作为示例,如果降级与第一PUT一起发生,并且在相同扩展区上进行了更多写入,然后服务器在确认第一PUT之前发生故障,则新服务器可能已经考虑了该写入。但是,由于尚未确认降级的PUT,因此可能是“保留”该PUT。因此,文件系统将假定对象后来的PUT被更改的块接受,因此文件系统将与对象存储不同步。但是,如果在每个PUT之后增加索引,则可能不会发生。第一个PUT将增加计数器,并将其记入日志,并且在故障转移之后,将进行下一个PUT,因为不知道第一个PUT是成功的,但是具有不同的索引,因此,在最坏的情况下,文件系统可能会“浪费”对象,但不会丢失数据完整性。
这可以允许文件系统有效地管理非常大量的数据,但是将所有相关的元数据保留在RAM中并且使得对PUT的扩展区的选择非常简单。当背压机制启动时,它还可以允许系统非常有效地确定哪些块将成为降级或删除读取缓存的良好候选者。
与在其上分层有文件系统的基于块的系统相反,由于文件系统管理文件,因此,本公开的各种实施例可能能够执行有效的预取,并且因此知道文件的存储位置。但是,独立于块系统运行的文件系统可能无法将块位置与文件相关联。而且,如果必须从性能较低的介质中检索一个块,则块系统可能不知道下一读取预取将在哪里发生,因为文件系统管理数据的放置,但是该块系统通常独立地管理数据的预取文件系统。
本公开的各种实施例还可以降级或删除整个扩展区,例如,取决于扩展区中的多少块可以准备从读取缓存降级或删除。
在本公开的各种实施例中,扩展区可以通知其他扩展区其从对象存储读取数据,使得这些扩展区可以选择从对象存储中预取数据。例如,扩展区可以通知接下来的5个扩展区。一旦扩展区接收到越来越近的扩展区中发生读取的通知,它就可以决定通知更远的扩展区,以便可以并行读取更多数据。
本公开的各种实施例可以提供其他管理机制。例如,特定文件或文件的某些部分可能被标记为“固定”,以便这些文件始终存储在SSD上而不降级。特定文件或文件的一部分可以标记为“始终读取高速缓存”,因此即使将它们降级,也将有这些文件的读取高速缓存副本。如果存在节点故障,则可以在恢复节点后立即从对象存储中重新获取文件。
可以提供CLI(命令)以重新获取(水合)文件列表,以将文件列表降级到对象存储器,或者清除从SSD读取的文件列表的缓存以释放SSD空间。文件列表中的每个文件可以是整个文件或文件的一部分。
本公开的各种实施例可以支持用于对象存储的各种后端,包括后端存储服务。但是,应注意,某些后端存储服务可能具有非常有限的存储桶。例如,某些后端存储服务可能允许每个存储桶仅约1M对象。SWIFT存储系统可以是一种这样的后端存储服务。但是,由于本公开的各种实施例可以支持比1M扩展区更多的扩展区,因此出于某些目的1M对象限制可能太小。
因此,为了避开每个存储桶限制的对象数目,可以创建大量的存储桶。例如,创建1M存储桶可能支持1012个对象。创建更多的存储桶将支持更多的对象。
然后,文件系统可以使用对象的哈希来选择存储桶。密钥哈希的前几位可用于决定将哪个存储桶用于该对象。
如果其中一个存储桶装满了,第一个选择可能是从新的桶列表开始,同时仍然记住旧的桶列表。然后可以在扩展区上存储存储桶配置的索引,以有效地获得新配置。这种表示可以允许扩展区保持桶配置的计数器,并且具有不需要数据移动的优点。
第二种选择可以是要求用户将存储桶的数量加倍,并在“碎片”上再增加一位。可能会根据存储桶的较大尺寸来写入新对象,并且根据检查额外增加的位,可能有一个正在进行的将对象迁移到新存储桶的过程。只要后台进程仍在工作,文件系统将首先尝试使用多余的位按其最终位置获取(读取)对象,如果不存在,尝试从旧存储桶中读取对象。这可能具有文件系统使用该文件系统的单个后端配置的优势,但缺点是每当存储桶数量增加一倍时,它就必须在存储桶之间进行数据移动。
可以跨越多于单个对象存储空间的非常大的名称空间也可以扩展。例如,可以聚合十个50PB的对象存储系统以支持1/2Exabyte系统。例如,此聚合可与将密钥存储在指示其实际映射到哪个后端对象的扩展区中的第一个选项一起使用。
一种方法可以是在扩展区和对象之间具有1:1映射。但是某些后端对象存储可能无法很好地处理小对象,而1MB文件可能仍被认为很小。
系统的各种实施例可以允许例如4MB-32MB的最佳对象大小的配置以促进对象存储系统的更高吞吐量。这些大小将是扩展区大小的倍数,其中扩展区可以是1MB。
然后,在进行降级和检索时,文件系统可以使用新的大小作为对象大小。对象可以全部与所请求的大小对齐,因此,如果对象大小为10MB,则所有对象都可以以10MB对齐的偏移量开始。
对齐的第一个扩展区可以称为该对象的“控制器”,并且拥有该扩展区的存储桶可以收集所有扩展存储区的所有数据,包括来自其他存储桶以及可能来自其他节点的数据,并写入该数据。
如果注册表扫描不是控制器的扩展区之一,则决定可能需要降级,它将向控制器发送RPC以启动降级。同样,如果需要从对象存储中获取数据,则可以通过控制器扩展区读取数据并将其分发到其余存储桶。
本公开的各种实施例具有比对象存储系统更多的内部吞吐量,因此可以使用一些实施例资源,以便对象存储解决方案可以提供更多的整体吞吐量性能。
当初始配置时,文件系统可以决定扩展区之间如何分配扩展区。如果文件系统尽早确定需要更大对象的对象存储已被利用,则可以将相邻扩展区分组在同一存储桶中,因此与将扩展区聚合到单个对象相关的网络流量将更少。
如所公开的,本公开的实施例可以包括多个存储设备,其中多个存储设备中的每一个可以被分配给上层或下层。每个存储设备可用于存储一个或多个数据块,并且每个数据块可与一个状态相关联。处理器可以被配置为读取与特定数据块相关联的当前状态,并且取决于当前状态,执行以下之一:将每个特定数据块降级到下层中的第二存储设备;和从读取高速缓存中删除每个特定数据块。
可能存在多个降级状态,并且系统可以包括适当的电路以计算降级周期。当降级周期的计数结束时,可以将不在最高降级状态的每个数据块增加到下一个更高的降级状态。如果对任何数据块进行写入访问,则将这些数据块重置为最低降级状态。处于最高降级状态的任何数据块都可以降级到下一个较低层。
数据块可以是例如4KB。
可能存在多个删除状态,并且系统可以包括适当的电路以计算保留期。当保留期的计数结束时,可以将不处于最高删除状态的每个数据块增加到下一个较高的删除状态。如果对任何数据块进行了读取访问,则可以将那些数据块重置为最低删除状态。处于最高删除状态的任何数据块都可以从读取高速缓存中删除。
本公开的实施例还可以包括对多个存储设备中的每一个执行存储器管理,多个存储设备中的每一个可以被分配给上层或下层,其中多个存储设备中的每一个包括数据块。每个数据块可以具有对应的状态。处理器可以读取每个数据块的状态并将数据块降级到较低层(如果由数据块的状态表明),或者可以从读取缓存中删除数据块(如果由数据块的状态表明)。
可能存在多个降级状态,并且该方法可以包括计算降级周期。当结束降级周期的计数时,可以将不在最高降级状态的每个数据块增加到下一个更高的降级状态。如果对任何数据块进行写入访问,则可以将那些数据块重置为最低降级状态。处于最高降级状态的任何数据块都可以降级到下一个较低层。
可以存在多个删除状态,并且该方法可以包括计算保留期。当计数保留期结束时,可以将未处于最高删除状态的每个数据块增加到下一个较高的删除状态。如果对任何数据块进行了读取访问,则可以将那些数据块重置为最低删除状态。处于最高删除状态的任何数据块都可以从读取缓存中删除。
图8示出其中两个分布式故障弹性地址空间驻留在多个固态存储盘上的示例实现方式。组块5101,1至510D,C可以被组织为多个组块条带5201-520S(S是整数)。在示例实现方式中,使用前向纠错(例如,擦除编码)来分别保护每个组块条带520s(s是整数,其中1≤s≤S)。因此,可以基于期望的数据保护级别来确定任何特定组块条带520s中的组块510d,c的数量。
为了说明的目的,假设每个组块条带520s包括N=M+K(其中,N,M和K中的每个是整数)个组块510d,c,则N个组块510d,c中的M个可以存储数据码(对于当前存储设备通常是二进制数字或“位”)且N个组块510d,c中的K个可以存储保护码(再次通常是位)。然后,虚拟文件系统可以向每个条带520s分配来自N个不同故障域的N个组块510d,c
如本文所用,“故障域”是指一组组件,其中任何一个组件中的故障(组件掉电,变得无响应等)可能导致所有组件的故障。例如,如果机架具有单个机架顶部交换机,则该交换机的故障将使与该机架上的所有组件(例如,计算、存储和/或VFS节点)的连接断开。因此,对于系统的其余部分,这等效于该机架上的所有组件如同一起出现故障。根据本公开的虚拟文件系统可以包括比组块510更少的故障域。
在对于每个这样的节点,虚拟文件系统的节点以完全冗余的方式仅与单个存储设备506连接和供电的示例实现方式中,故障域可以仅仅是该单个存储设备506。因此,在示例实现方式中,每个组块条带520s包括位于存储设备5061-506D的N个中的每个上的多个组块510d,c(因此,D大于或等于N)。这样的实现方式的示例在图7中显示。
在图8中,D=7,N=5,M=4,K=1,并且存储设备被组织为两个DFRAS。这些数字仅用于说明,而无意作为限制。第一DFRAS的三个组块条带520被任意地调出以用于说明。第一组块条带5201由组块5101,1、5102,2、5103,3、5104,5和5105,6组成;第二组块条带5202由组块5103,2、5104,3、5105,3、5106,2和5107,3组成;第三组块条带5203由组块5101,4、5102,4、5103,5、5105,7和5107,5组成。
尽管在实际实现方式中在图8的简单示例中D=7和N=5,但是D可能比N大得多(例如,大于1的整数倍,并且可能高至多个数量级),并且可以选择两个值,以使单个DFRAS的任何两个组块条带520驻留在同一组N个存储设备506(或更一般地说,在同一组N个故障域)上的概率低于所需阈值。以此方式,任何单个存储设备506d(或更普遍地,任何单个故障域)的故障将导致(期望统计可能基于以下各项确定:D和N的选定值,N个存储设备506的大小以及故障域的布置)任何特定条带520s的至多一个组块510b,c的丢失。更进一步,双重故障将导致绝大多数条带最多丢失单个块510b,c,并且只有少量的条带(基于D和N的值确定)将从任何特定的条带520s中丢失两个组块(例如,两次故障的条带数量可能会比一次故障的条带数量成指数地减少)。
例如,如果每个存储设备506d是1TB,并且每个组块是128MB,则存储设备506d的故障将导致(期望统计可能基于以下各项确定:D和N的选定值,N个存储设备506的大小以及故障域的布置)7812(=1TB/128MB)个组块条带520丢失一个组块510。对于每个这样的受影响的组块条带520s,可以使用适当的前向纠错算法和组块条带520s的其他N-1个组块来快速地重建丢失的组块510d,c。此外,由于受影响的7812个组块条带均匀分布在所有存储设备5061-506D中,因此重建丢失的7812个组块510d,c将涉及(希望的统计可能基于以下项确定:D和N的选定值,N个存储设备506的大小以及故障域的布置)从每个存储设备5061-506D读取相同数量的数据(即,重建丢失的数据的负担均匀地分布在所有存储设备5061-506D中,以便从故障中非常快速地恢复)。
接下来,转向两个存储设备5061–506D并发故障的情况(或更一般地说,两个故障域的并发故障),由于每个DFRAS的组块条带5201-520S在所有存储设备5061-506D上的均匀分布,只有极少数的组块条带5201-520S会丢失N个组块中的两个。虚拟文件系统可操作为基于元数据快速识别这种两次丢失的组块条带,该元数据指示组块条带5201-520S与存储设备5061-506D之间的映射。一旦识别出这样的两次丢失组块条带,虚拟文件系统就可以在开始重建一次丢失组块条带化之前优先考虑重建那些两次丢失组块条带。其余的组块条带将仅具有单个丢失的组块,并且对于它们(受影响的组块条带中的绝大多数),两个存储设备506d的并发故障与仅一个存储设备506d的故障相同。类似的原理适用于三个并发故障(在两个并发故障场景中,具有三个故障块的组块条带的数量将远远少于具有两个故障块的数量),依此类推。在示例实现方式中,可以基于组块条带520s中的丢失数量来控制执行组块条带520s的重构的速率。这可以通过例如控制执行用于重建的读取和提交的速率,执行用于重建的FEC计算的速率,传送用于重建的网络消息的速率等来实现。
图9示出根据本公开的示例实现方式的前向纠错方案,其可以用于保护存储到虚拟文件系统的非易失性存储器的数据。所示为DFRAS的块条带5301–5304的存储块9021,1–9027,7。在图8的保护方案中,每个条带的五个块用于存储数据码,且每个条带的两个块用于保护码(即,M=5和K=2)的数据存储。在图9中,使用以下公式(1)-(9)计算保护码:
/>
因此,图9中的四个条带5301-5304是多个条带(在这种情况下为四个条带)FEC保护域的一部分,并且任何块条带5301-5304中的任何两个或更少块的丢失通过使用以上等式(1)-(9)的各种组合来恢复。为了进行比较,单条带保护域的示例是:如果仅通过P1保护D11,D22,D33,D44,D54,并且将D11,D22,D33,D44,D54和P1全部写入条带5301(5301是单个条带FEC保护域)。
根据本公开的示例实现方式,多个计算设备经由网络彼此通信地耦接,并且多个计算设备中的每一个包括多个存储设备中的一个或多个。多个故障弹性地址空间分布在多个存储设备上,使得多个故障弹性地址空间中的每一个跨越多个存储设备。多个故障弹性地址空间中的每一个被组织成多个条带(例如,如图8和图9所示的多个530)。多个条带中的每个或多个条带是多个前向纠错(FEC)保护域(例如,诸如图9中的多条带FEC域)中的相应一个域的一部分。多个条带中的每一个可以包括多个存储块(例如,多个512)。多个条带中的特定条带的每个块可以位于多个存储设备中的不同存储设备上。多个存储块的第一部分(例如,由图9的条带5301的9021,2–9021,6组成的5个数量)可用于存储数据码,而多个存储块的第二部分(例如,图9的条带5301的两个9021,1和9021,7的数量)可以用于存储至少部分地基于数据码计算出的保护码。多个计算设备可以可操作以对多个条带进行排序。该排序可以用于选择多个条带中的哪个条带用于对多个故障弹性地址空间之一的下一提交操作。排序可以基于在多个条带中的每个条带中有多少个受保护和/或不受保护的存储块。对于多个条带中的任何一个,该排序可以基于存储在具有多个条带中的特定一个的多个存储设备上的位图。该排序可以基于多个条带中的每个条带中当前存储数据的块的数量。该排序可以基于用于向多个条带中的每个条带进行提交的读取和写入开销。每个故障弹性地址空间可以在任何给定时间仅由多个计算设备之一拥有,并且多个故障弹性地址空间中的每个只能由其所有者读取和写入。每个计算设备可以拥有多个故障弹性地址空间。多个存储设备可以被组织成多个故障域。多个条带中的每个条带可以跨越多个故障域。每个故障弹性地址空间可以跨越所有多个故障域,使得当多个故障域中的任何特定故障域发生故障时,在多个故障域中的每个其他故障域之间分配用于重建丢失数据的工作量。多个条带可以分布在多个故障域上,使得在多个故障域中的两个故障域同时发生故障的情况下,多个故障域中的两个故障域上的多个条带中的任何一个特定条带的两个块出现的机率小于多个故障域中的两个故障域上的多个条带中的任何特定条带中只有一个块存在的几率。多个计算设备可用于首先重建具有两个故障块的多个条带中的任何一个,然后重建仅具有一个故障块的多个条带中的任何一个。多个计算设备可用于以比仅具有一个故障块的多个条带的重建速率更高的速率(例如,在专用于重建的CPU时钟周期中,百分比较大,专用于重建的网络传输机会占较大百分比,等等)来执行具有两个故障块的多个条带的重建。多个计算设备可用于在一个或多个故障域发生故障的情况下,基于丢失了多个条带中的同一条带的多少其他块来确定重建任何特定丢失块的速率。其中,多个故障域中的一个或多个包括多个存储设备。多个FEC保护域中的每一个可以跨越多个条带中的多个条带。多个条带可以被组织为多个组(例如,图8中的组块条带5201-520S),其中,多个组中的每一个包括多个条带中的一个或多个,以及多个计算设备可操作用于对每个组,对组的多个条带中的一个或多个进行排序。多个计算设备可操作为:对多个组中的选定的一组执行连续的提交操作,直到组的多个条带中的一个或多个条带不再满足确定的标准为止,并且在多个组中选择的一个不再满足确定的标准时,选择多个组中的另一个。该标准可以基于有多少块可用于新数据写入。
尽管已经参考某些实现描述了本方法和/或系统,但是本领域技术人员将理解,在不脱离本方法和/或系统的范围的情况下,可以进行各种改变并且可以替换等同物。另外,在不脱离本发明范围的情况下,可以做出许多修改以使特定情况或材料适应本发明的教导。因此,意图是本方法和/或系统不限于所公开的特定实现,而是本方法和/或系统将包括落入所附权利要求的范围内的所有实现。
如本文所使用的,术语“电路”和“电路系统”是指物理电子组件(即硬件)以及任何软件和/或固件(“代码”),其可以配置硬件,由硬件执行和/或与硬件相关联。如本文所使用的,例如,特定的处理器和存储器在执行第一行或多行代码时可以包括第一“电路”,并且在执行第二行或多行代码时可以包括第二“电路”。如本文所用,“和/或”是指列表中由“和/或”连接的任何一个或多个项目。作为示例,“x和/或y”表示三元素集{(x),(y),(x,y)}中的任何元素。换句话说,“x和/或y”是指“x和y之一或两者”。作为另一个示例,“x,y和/或z”表示七元素集{(x),(y),(z),(x,y),(x,z),(y,z),(x,y,z)}。换句话说,“x,y和/或z”是指“x,y和z中的一个或多个”。如本文所使用的,术语“示例性”是指用作非限制性示例,实例或说明。如本文所使用的,术语“例如”和“例如”引出一个或多个非限制性示例,实例或插图的列表。如本文所利用的,只要电路包含执行该功能所需的必要硬件和代码(如有必要),该电路就“可操作”以执行功能,而不管该功能的性能是否被禁用(例如,通过用户可配置的设置,出厂调整等)。

Claims (14)

1.一种系统,包括:
多个存储设备,其中:
所述多个存储设备中的每个存储设备被分配给上层和下层之一;
所述多个存储设备中的每个存储设备能够操作以存储一个或多个数据块;以及
所述一个或多个数据块中的每一个都与状态相关联,其中,所述状态包括多个删除状态;以及
处理器,被配置为读取与所述多个存储设备中的第一存储设备中的特定数据块相关联的当前状态,其中,根据所述当前状态,所述处理器被配置为执行以下操作之一:
将所述特定数据块降级到所述下层中的第二存储设备;
从读取高速缓存中删除所述特定数据块;
所述系统进一步包括电路,所述电路被配置为计数到保留期,
其中,如果完成对所述保留期的计数,则将不在最高删除状态的每个数据块增加到下一个较高的删除状态,并且
如果对所述数据块中的一个进行了读取访问,则将所述数据块中的一个重置为最低删除状态。
2.根据权利要求1所述的系统,其中,所述状态包括多个降级状态。
3.根据权利要求2所述的系统,包括被配置为计算降级周期的电路。
4.根据权利要求3所述的系统,其中:
如果所述降级周期的计数完成,则将不在最高降级状态的每个数据块增加到下一个更高的降级状态,并且
如果对所述每个数据块进行写入访问,则将所述每个数据块重置为最低降级状态。
5.根据权利要求4所述的系统,其中,处于所述最高降级状态的所述每个数据块被降级到所述下层。
6.根据权利要求1所述的系统,其中,每个所述数据块是4KB的数据块。
7.根据权利要求1所述的系统,其中,处于所述最高删除状态的所述每个数据块被从所述读取高速缓存中删除。
8.一种方法,包括:
对分配给上层和下层之一的多个存储设备中的每一个执行存储器管理,其中:
所述多个存储设备的每一个包括数据块;以及
每个所述数据块具有对应的状态;以及
由处理器读取所述每个所述数据块的状态,其中,所述状态包括多个删除状态;以及
根据所述状态执行以下操作之一:
将所述每个所述数据块降级到所述下层;
从读取高速缓存中删除所述每个所述数据块,
所述方法进一步包括计算保留期,其中,
如果完成对所述保留期的计数,则将不在最高删除状态的所述每个所述数据块增加到下一个较高的删除状态,并且
如果对所述数据块中的一个进行了读取访问,则将所述数据块中的一个重置为最低删除状态。
9.根据权利要求8所述的方法,其中,所述状态包括多个降级状态。
10.根据权利要求9所述的方法,包括计算降级周期。
11.根据权利要求10所述的方法,其中:
如果完成对所述降级周期的计数,则将不在最高降级状态的所述每个所述数据块增加到下一个更高的降级状态,并且
如果对所述每个所述数据块进行写入访问,则将存储器的所述每个所述数据块重置为最低降级状态。
12.根据权利要求11所述的方法,其中,处于所述最高降级状态的所述每个所述数据块被降级到所述下层。
13.根据权利要求8所述的方法,其中,所述每个所述数据块是4KB的块。
14.根据权利要求8所述的方法,其中,将处于所述最高删除状态的所述每个所述数据块从所述读取高速缓存中删除。
CN201880086411.3A 2017-11-13 2018-10-05 分布式存储系统的分层数据策略 Active CN111587423B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311499987.1A CN117453136A (zh) 2017-11-13 2018-10-05 用于分布式存储系统中的分层数据策略的系统和方法

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762585204P 2017-11-13 2017-11-13
US62/585,204 2017-11-13
US16/122,524 US11061622B2 (en) 2017-11-13 2018-09-05 Tiering data strategy for a distributed storage system
US16/122,524 2018-09-05
PCT/IB2018/001280 WO2019092499A1 (en) 2017-11-13 2018-10-05 Tiering data strategy for a distributed storage system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311499987.1A Division CN117453136A (zh) 2017-11-13 2018-10-05 用于分布式存储系统中的分层数据策略的系统和方法

Publications (2)

Publication Number Publication Date
CN111587423A CN111587423A (zh) 2020-08-25
CN111587423B true CN111587423B (zh) 2023-09-19

Family

ID=66432065

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311499987.1A Pending CN117453136A (zh) 2017-11-13 2018-10-05 用于分布式存储系统中的分层数据策略的系统和方法
CN201880086411.3A Active CN111587423B (zh) 2017-11-13 2018-10-05 分布式存储系统的分层数据策略

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311499987.1A Pending CN117453136A (zh) 2017-11-13 2018-10-05 用于分布式存储系统中的分层数据策略的系统和方法

Country Status (4)

Country Link
US (3) US11061622B2 (zh)
EP (1) EP3710941A4 (zh)
CN (2) CN117453136A (zh)
WO (1) WO2019092499A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061622B2 (en) 2017-11-13 2021-07-13 Weka.IO Ltd. Tiering data strategy for a distributed storage system
US10719417B2 (en) * 2018-01-30 2020-07-21 EMC IP Holding Company, LLC Data protection cluster system supporting multiple data tiers
US11042661B2 (en) * 2018-06-08 2021-06-22 Weka.IO Ltd. Encryption for a distributed filesystem
US11231876B2 (en) * 2019-09-24 2022-01-25 Western Digital Technologies, Inc. Initial data placement in hybrid object storage system
US11645174B2 (en) * 2019-10-28 2023-05-09 Dell Products L.P. Recovery flow with reduced address lock contention in a content addressable storage system
US20200319812A1 (en) * 2020-06-03 2020-10-08 Intel Corporation Intermediary for storage command transfers
CN114268640B (zh) * 2020-09-16 2022-09-09 上海交通大学 云边协同的工业物联网智能路由系统
CN112333283B (zh) * 2020-11-20 2022-12-13 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 自主高端存储阵列系统架构
US20230031304A1 (en) * 2021-07-22 2023-02-02 Vmware, Inc. Optimized memory tiering
US11669257B2 (en) * 2021-10-08 2023-06-06 Hewlett Packard Enterprise Development Lp Container management in a storage system
CN116820353B (zh) * 2023-08-28 2024-01-26 苏州浪潮智能科技有限公司 分布式存储系统的数据处理方法、系统、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101131673A (zh) * 2006-08-22 2008-02-27 中兴通讯股份有限公司 一种通用缓存的方法
CN101859283A (zh) * 2010-03-22 2010-10-13 吴欣延 一种内置射频识别rfid加密的固态硬盘的控制方法
US8315995B1 (en) * 2008-09-09 2012-11-20 Peer Fusion, Inc. Hybrid storage system
US8370597B1 (en) * 2007-04-13 2013-02-05 American Megatrends, Inc. Data migration between multiple tiers in a storage system using age and frequency statistics
CN103605483A (zh) * 2013-11-21 2014-02-26 浪潮电子信息产业股份有限公司 一种分级存储系统中块级数据特征处理方法
CN103984648A (zh) * 2013-02-07 2014-08-13 Lsi公司 为了改进i/o性能而压制数据高速缓存速率的方法
CN104166631A (zh) * 2014-09-11 2014-11-26 浪潮(北京)电子信息产业有限公司 LLC中Cache行的替换方法
CN104317731A (zh) * 2014-10-17 2015-01-28 杭州华为数字技术有限公司 一种分层存储管理方法、装置及存储系统

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487636B1 (en) 2000-04-24 2002-11-26 Hewlett-Packard Co. Method and apparatus for mapping data in a heterogeneous disk array storage system
US7024427B2 (en) 2001-12-19 2006-04-04 Emc Corporation Virtual file system
US6898667B2 (en) * 2002-05-23 2005-05-24 Hewlett-Packard Development Company, L.P. Managing data in a multi-level raid storage array
US7610329B2 (en) 2002-07-30 2009-10-27 Storediq, Inc. Method and apparatus for managing file systems and file-based data storage
US7877511B1 (en) 2003-01-13 2011-01-25 F5 Networks, Inc. Method and apparatus for adaptive services networking
US20050289152A1 (en) 2004-06-10 2005-12-29 Earl William J Method and apparatus for implementing a file system
US7681072B1 (en) 2004-08-13 2010-03-16 Panasas, Inc. Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices
US8365021B2 (en) 2005-06-17 2013-01-29 Nec Corporation Information processing device comprising a plurality of domains having a plurality of processors, recovery device, program and recovery method
US20070014331A1 (en) 2005-07-12 2007-01-18 John Eldon Ultra-wideband communications system and method
US7447839B2 (en) 2005-09-13 2008-11-04 Yahoo! Inc. System for a distributed column chunk data store
US8347010B1 (en) 2005-12-02 2013-01-01 Branislav Radovanovic Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US7860865B2 (en) 2005-12-19 2010-12-28 Yahoo! Inc. System of a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7921132B2 (en) 2005-12-19 2011-04-05 Yahoo! Inc. System for query processing of column chunks in a distributed column chunk data store
US7769723B2 (en) * 2006-04-28 2010-08-03 Netapp, Inc. System and method for providing continuous data protection
US7793146B1 (en) 2007-08-07 2010-09-07 Panasas, Inc. Methods for storing data in a data storage system where a RAID-X format or formats are implemented at a file level
US8645749B2 (en) 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
US8458287B2 (en) 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US8370672B2 (en) 2010-02-26 2013-02-05 Microsoft Corporation Reducing power consumption of distributed storage systems
US8495296B2 (en) * 2010-05-18 2013-07-23 International Business Machines Corporation System and method for optimizing data remanence over hubrid disk clusters using various storage technologies
WO2012109679A2 (en) 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for application direct virtual memory management
US20140244897A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US9489148B2 (en) 2013-03-13 2016-11-08 Seagate Technology Llc Selecting between non-volatile memory units having different minimum addressable data unit sizes
US9483431B2 (en) 2013-04-17 2016-11-01 Apeiron Data Systems Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA)
JP2017512350A (ja) 2014-03-08 2017-05-18 ディアマンティ インコーポレイテッド 集中型ネットワーキング及びストレージのための方法及びシステム
KR101551817B1 (ko) * 2014-05-22 2015-09-09 한국전자통신연구원 메모리 삭제 방법 및 이를 위한 장치
US9087012B1 (en) 2014-06-04 2015-07-21 Pure Storage, Inc. Disaster recovery at high reliability in a storage cluster
US9582363B2 (en) 2014-06-09 2017-02-28 International Business Machines Corporation Failure domain based storage system data stripe layout
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9921910B2 (en) 2015-02-19 2018-03-20 Netapp, Inc. Virtual chunk service based data recovery in a distributed data storage system
US9448887B1 (en) 2015-08-22 2016-09-20 Weka.IO Ltd. Distributed erasure coded virtual file system
US10007809B1 (en) * 2015-08-26 2018-06-26 EMC IP Holding Company LLC Fine-grained self-shredding data in a secure communication ecosystem
US10552046B2 (en) * 2017-04-27 2020-02-04 International Business Machines Corporation Automatic tiering of storage using dynamic grouping
US11061622B2 (en) 2017-11-13 2021-07-13 Weka.IO Ltd. Tiering data strategy for a distributed storage system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101131673A (zh) * 2006-08-22 2008-02-27 中兴通讯股份有限公司 一种通用缓存的方法
US8370597B1 (en) * 2007-04-13 2013-02-05 American Megatrends, Inc. Data migration between multiple tiers in a storage system using age and frequency statistics
US8315995B1 (en) * 2008-09-09 2012-11-20 Peer Fusion, Inc. Hybrid storage system
CN101859283A (zh) * 2010-03-22 2010-10-13 吴欣延 一种内置射频识别rfid加密的固态硬盘的控制方法
CN103984648A (zh) * 2013-02-07 2014-08-13 Lsi公司 为了改进i/o性能而压制数据高速缓存速率的方法
CN103605483A (zh) * 2013-11-21 2014-02-26 浪潮电子信息产业股份有限公司 一种分级存储系统中块级数据特征处理方法
CN104166631A (zh) * 2014-09-11 2014-11-26 浪潮(北京)电子信息产业有限公司 LLC中Cache行的替换方法
CN104317731A (zh) * 2014-10-17 2015-01-28 杭州华为数字技术有限公司 一种分层存储管理方法、装置及存储系统

Also Published As

Publication number Publication date
EP3710941A1 (en) 2020-09-23
US20210294536A1 (en) 2021-09-23
WO2019092499A1 (en) 2019-05-16
US11061622B2 (en) 2021-07-13
CN111587423A (zh) 2020-08-25
US11656803B2 (en) 2023-05-23
US20190146718A1 (en) 2019-05-16
CN117453136A (zh) 2024-01-26
US20230280944A1 (en) 2023-09-07
EP3710941A4 (en) 2021-08-25

Similar Documents

Publication Publication Date Title
CN111587423B (zh) 分布式存储系统的分层数据策略
CN111587428B (zh) 分布式存储系统中的元数据日志
CN111587418B (zh) 分布式存储系统的目录结构
CN111587425B (zh) 分布式存储系统中的文件操作
WO2020016649A2 (en) Pushing a point in time to a backend object storage for a distributed storage system
CN111587421B (zh) 分布式存储系统电源故障阻抗的方法和系统
US11693818B2 (en) Data migration in a distributive file system
CN112262407A (zh) 分布式文件系统中基于gpu的服务器
CN111587420A (zh) 分布式存储系统快速故障恢复的方法和系统
CN111066009B (zh) 具有写入均衡的闪存寄存器
CN112513828B (zh) 以分布式方式实现文件的一致性和页面高速缓存支持
EP3807767A2 (en) Storage system spanning multiple failure domains
CN112292661A (zh) 扩展分布式存储系统
CN112005225A (zh) 具有盘上哈希的闪存注册表
US12038871B2 (en) Data migration in a distributive file system

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