CN111149081B - 负载平衡分配式存储系统中的元数据控制 - Google Patents

负载平衡分配式存储系统中的元数据控制 Download PDF

Info

Publication number
CN111149081B
CN111149081B CN201880062914.7A CN201880062914A CN111149081B CN 111149081 B CN111149081 B CN 111149081B CN 201880062914 A CN201880062914 A CN 201880062914A CN 111149081 B CN111149081 B CN 111149081B
Authority
CN
China
Prior art keywords
vfs
computing devices
metadata
bucket
nodes
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
CN201880062914.7A
Other languages
English (en)
Other versions
CN111149081A (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 CN202311171351.4A priority Critical patent/CN117215484A/zh
Publication of CN111149081A publication Critical patent/CN111149081A/zh
Application granted granted Critical
Publication of CN111149081B publication Critical patent/CN111149081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

多个计算装置经由网络可通信地彼此耦接,并且多个计算装置中的每一个可操作地耦接到多个存储装置中的一个或多个。多个故障弹性地址空间跨过多个存储装置被分配,使得多个故障弹性地址空间中的每一个跨越多个存储装置。多个计算装置保持将每个故障弹性地址空间映射到多个计算装置中的一个的元数据。元数据经分组为桶。每个桶存储在一组计算装置中。然而,在任何给定时间,只有该组的领导者能够直接访问特定桶。

Description

负载平衡分配式存储系统中的元数据控制
背景技术
通过将这些方法与参考附图在本公开的其余部分中阐述的本方法和系统的一些方面进行比较,传统的数据存储的方法的限制和缺点对于本领域技术人员将变得显而易见。
通过引用合并
在此通过引用将标题为“分配式擦除编码虚拟文件系统”的美国专利申请No.15/243,519并入全文。
发明内容
本公开提供了用于负载平衡分配式存储系统中的元数据控制的方法和系统,基本上如结合至少一个附图所示和/或所述的,如权利要求中更完整地阐述的。
附图说明
图1示出了根据本公开的各方面的虚拟文件系统的各种示例配置。
图2示出了根据本公开的各方面的虚拟文件系统节点的示例配置。
图3示出了根据本公开的示例实现方式的虚拟文件系统的另一表示。
图4示出了根据本公开的示例实现方式的在添加VFS之后在负载平衡分配式存储系统中的元数据桶控制的示例。
图5示出了根据本公开的示例实现方式的在负载平衡分配式存储系统中划分元数据桶的示例。
图6示出了根据本公开的示例实现方式的VFS故障之后负载平衡分配式存储系统中的元数据控制的示例。
图7是示出用于负载平衡分配式存储系统中的元数据控制的示例方法的流程图。
具体实施方式
一般来说,文件系统使用对元数据结构(例如目录、文件、属性、文件内容)的集中控制。如果可从单个服务器访问本地文件系统并且该服务器发生故障,由于没有进一步的保护,文件系统的数据则可能会丢失。为了增加保护,一些文件系统(例如,由NetApp提供的)已经以主动-被动方式使用一对或多对控制器来在两个或多个计算机上复制元数据。其他解决方案以集群方式使用了多个元数据服务器(例如,由IBM GPFS、Dell EMC Isilon、Lustre等提供)。然而,由于传统集群系统中的元数据服务器的数量仅限于较小的数量,所以这样的系统不能扩展。
本公开中的系统适用于小型集群,并且还可以扩展到许多、成千上万个节点。讨论了关于非易失性存储器(NVM),例如以固态驱动器(SSD)形式出现的闪存的示例实施例。NVM可以经划分为4kB“区块”和128MB“组块”。“盘区”可以存储在易失性存储器中,例如用于快速访问的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),和/或将LAN102连接到远程网络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可以作为VM环境在LXC容器内运行。因此,在VM内部,可能运行的唯一事情是包括VFS的LXC容器。在传统的裸机环境中,存在用户空间应用程序,并且VFS在LXC容器中运行。如果服务器正在运行其他容器化应用程序,则VFS可以在LXC容器内运行,该LXC容器在容器部署环境的管理范围之外(例如,对接器)。
操作系统和/或虚拟机监控器(VMM)(例如,管理程序)可以为VFS节点提供服务。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中运行非易失性存储器快速(NVMe)驱动器214,从而完全绕过Linux IO栈。NVMe可以用于访问经由PCI快速(PCIe)总线附接的非易失性存储介质216。非易失性存储介质220可以是例如固态驱动器(SSD)形式的闪存或SSD或存储器模块(DIMM)形式的存储型存储器(SCM)。其他示例可以包括存储型存储器技术,诸如3D-XPoint。
SSD可以通过将物理SSD 216与SSD代理214和网络210耦接来实现为网络装置。可替换地,SSD可以通过使用诸如NVMe-oF(基于结构的NVMe)的网络协议来实现为附网NVMeSSD 222或224。NVMe-oF可以允许使用冗余网络链路访问NVMe装置,从而提供更高级别或弹性。网络适配器226、228、230和232可以包括用于连接到NVMe SSD 222和224的硬件加速,以在不使用服务器的情况下将它们转换为网络NVMe-oF装置。NVMe SSD 222和224可以各自包括两个物理端口,并且可以通过这些端口中的任一个来访问所有数据。
每个客户端进程/应用程序212可以直接在操作系统上运行,或者可以在由操作系统和/或管理程序服务的虚拟机和/或容器中运行。客户端进程212可以在执行其主要功能的过程中从存储器读取数据和/或向存储器写入数据。然而,客户端进程212的主要功能与存储无关(即,该进程仅关心其数据经可靠地存储并且在需要时可检索,而不涉及在何处、何时存储数据或如何存储数据)。产生这些进程的示例应用程序包括:电子邮件服务器、web服务器、办公室生产力应用程序、客户关系管理(CRM)、动画视频呈现、基因组学计算、芯片设计、软件构建和企业资源计划(ERP)。
客户端应用程序212可以对与VFS驱动器208通信的内核224进行系统调用。VFS驱动器208将相应的请求放在VFS前端202的队列中。如果存在若干VFS前端,则驱动器可以对不同的前端进行负载平衡访问,确保总是经由同一前端访问单个文件/目录。这可以通过基于文件或目录的ID“分割”前端来完成。VFS前端202提供用于基于负责该操作的桶将文件系统请求路由到适当的VFS后端的接口。适当的VFS后端可以位于同一主机上,也可以位于另一主机上。
VFS后端206主存几个桶,它们中的每一个服务于它接收并执行任务的文件系统请求,否则管理虚拟文件系统(例如,负载平衡、日志记录、保持元数据、高速缓存、在层之间移动数据、移除陈旧数据、纠正损坏数据等)。
VFS SSD代理214处理与相应存储装置216的交互。这可以包括,例如,转换地址,以及生成向存储装置发出的命令(例如,在SATA、SAS、PCIe或其他合适的总线上)。因此,VFSSSD代理214用作存储装置216和虚拟文件系统的VFS后端206之间的中介。SSD代理214还可以与支持诸如NVMe-oF(基于结构的NVMe)的标准协议的标准网络存储装置通信。
图3示出了根据本公开的示例实现方式的虚拟文件系统的另一表示。在图3中,元件302表示其上驻留虚拟文件系统的各种节点(计算、存储和/或VFS)的存储器资源(例如DRAM和/或其他短期存储器)和处理(例如x86处理器、ARM处理器、NIC、ASIC、FPGA等)资源,诸如以上关于图2所描述的。元件308表示提供虚拟文件系统的长期存储的一个或多个物理存储装置216。
如图3所示,将物理存储器组织成多个分配式故障弹性地址空间(DFRAS)518。每个空间包括多个组块310,组块310又包括多个区块312。将区块312组织成组块310仅在一些实现方式中是方便的,而并非在所有实现方式中都是这样的。每个区块312存储已提交数据316(其可以采取下面讨论的各种状态)和/或描述或引用已提交数据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节点可以负责几个桶。当桶服务给定后端上的元数据碎片时,桶被认为是“激活的”或是该桶的“领导者”。通常,存在比VFS节点多得多的桶。例如,具有6个节点的小系统可以具有120个桶,而具有1000个节点的较大系统可以具有8k的桶。
每个桶在小的节点集合上可以时激活的,通常是形成该桶的五组的五个节点。集群配置可以让所有参与节点保持与每个桶的五组指定有关的最新信息。
每个五组监控其自身。例如,如果集群具有10k个服务器,并且每个服务器具有6个桶,则每个服务器将仅需要与30个不同的服务器通话以维持其桶的状态(6个桶将具有6个五组,因此6*5=30)。与集中式实体必须监控所有节点并保持集群范围状态的情况相比,这是小得多的数量。五组的使用允许性能随着更大的集群而扩展,因为当集群大小增加时节点不执行更多的工作。这可能造成这样的缺点,即在“哑”模式下,与物理节点相比,小型集群实际上可能产生更多的通信,但是,通过在两个服务器之间只发送单个心跳以及它们共享的所有桶,可以克服这个缺点(因为集群增长后,这将变成只有一个桶,但是如果您有一个小的五个服务器的集群,那么它将只在所有消息中包括所有桶,并且每个服务器将只与其他四个服务器通话)。五组可以使用类似Raft一致性算法的算法来决定(即达到一致性)。
每个桶可以具有一组可以运行它的计算节点。例如,五个VFS节点可以运行一个桶。然而,在任何给定时刻,组中只有一个节点是控制器/领导者。此外,对于足够大的集群,没有两个桶共享相同的组。如果在集群中只有5或6个节点,则大多数桶可以共享后端。在相当大的集群中,存在许多不同的节点组。例如,对于26个节点,超过64000可能的五节点组(即五组)。
组中的所有节点均已知并同意(即达成一致)哪个节点是该桶的实际激活控制器(即,领导者)。访问该桶的节点可以记住(“高速缓存”)作为该组(例如,五个)成员中该桶的领导者的最后节点。如果它访问桶领导者,则桶领导者执行所请求的操作。如果它访问不是当前领导者的节点,则该节点指示领导者“重定向”访问。如果存在访问高速缓存的领导者节点的超时,则联系节点可以尝试相同五组的不同节点。集群中的所有节点共享集群的公共“配置”,这允许节点知道哪个服务器可以运行每个桶。
每个桶可以具有指示在文件系统上运行的应用程序正在使用桶的程度的负载/使用值。例如,具有11个轻度使用的桶的服务器节点可以接收在具有9个重度使用的桶的服务器之前运行的另一个元数据桶,即使在所使用的桶的数量中存在不平衡。可根据平均响应延迟、并发运行操作的数目、所消耗的存储器或其他度量来确定负载值。
即使当VFS节点没有故障时,也可能发生重新分配。如果系统基于所跟踪的负载度量识别一个节点比其他节点繁忙,则系统可将其桶中的一个移动(即,“故障转移”)到较不繁忙的另一服务器。然而,在实际将桶重新定位到不同主机之前,可通过转移写入和读取来实现负载平衡。由于每次写入可以在由DFRAS决定的不同节点组上结束,所以具有较高负载的节点可以不被选择在数据正被写入的条带中。该系统还可以选择不服务来自高负载节点的读取。例如,可执行“降级模式读取”,其中从同一条带的其他区块重构高负载节点中的区块。降级模式读取是经由同一条带中的其余节点执行的读取,且经由故障保护重构数据。当读取延迟过高时,可执行降级模式读取,因为读取的启动器可假设节点关闭。如果负载足够高以创建更高的读取延迟,则集群可以回复到从其他节点读取该数据并使用降级模式读取来重构所需数据。
每个桶管理其自己的分配式擦除编码示例(即,DFRAS 518),且不需要与其他桶协作来执行读取或写入操作。潜在地存在数千个并行的分配式擦除编码示例并行工作,每个示例用于不同的桶。这是扩展性能的组成部分,因为它有效地允许任何大的文件系统被划分成不需要协调的独立的片段,因此提供了与扩展无关的高性能。
每个桶处理落入其碎片中的所有文件系统操作。例如,目录结构、文件属性和文件数据范围将落入特定桶的管辖区域。
从任何前端完成的操作通过找出哪个桶拥有该操作而开始。然后确定该桶的后端领导者和节点。该确定可以通过尝试最后已知的领导者来执行。如果最后已知的领导者不是当前领导者,则该节点可以知道哪个节点是当前领导者。如果最后已知的领导者不再是桶的五组的一部分,则该后端将让前端知道它应该回到该配置以找到桶的五组的成员。操作的分配允许复杂的操作由多个服务器处理,而不是由标准系统中的单个计算机处理。
如果集群尺寸较小(例如,5)且使用五组,则将存在共享相同组的桶。随着集群尺寸的增长,桶经重新分配,使得没有两个组相同。
图4示出了根据本公开的示例实现方式在添加VFS之后负载平衡分配式存储系统中的元数据桶控制的示例。关于图4、5和6,为了说明的目的,假定三成员组。如上所述,一组VFS可以是任何数量。因为在这个示例中没有两个桶共享相同的组,所以桶也可以根据它们的组来标记。对于四个节点,存在4个可能的三节点组。对于五个节点,存在十个可能的三节点组。对于六个节点,存在20个/>可能的三节点组。
图4示出了五个VFS后端2061-2065。最初存在前四个VFS后端2061-2064。稍后添加最后的后端VFS后端2065。最初在前四个VFS后端2061-2064的集群中形成四个唯一的组(A、B、C和D)。
VFS后端2061最初包括组A桶、组B桶和组C桶。包括VFS后端2061的VFS是组C的领导者,并且是能够访问与桶C中的元数据相关联的DFRAS的唯一VFS。VFS后端2062最初包括组A桶、组B桶和组D桶,并且包括VFS后端2062的VFS是组A的领导者,并且是能够访问与桶A中的元数据相关联的DFRAS的唯一VFS。VFS后端2063最初包括组A桶、组C桶和组D桶,并且包括VFS后端2063的VFS是组D的领导者,并且是能够访问与桶D中的元数据相关联的DFRAS的唯一VFS。VFS后端2064最初包括组B桶、组C桶和组D桶,并且包括VFS后端2064的VFS是组B的领导者,并且是能够访问与桶B中的元数据相关联的DFRAS的唯一VFS。而且,如果后端不是组领导,则它可以识别组领导。
每次新的后端节点加入集群时,可以重新配置每个桶的组,并且新的组的配置被传送到所有当前节点。可以执行配置改变,使得每个组的领导者节点不改变,并且在添加新节点时不允许领导者改变。这确保了这种操作的开销不会限制系统的整体性能并且不会影响可扩展性。
在新的组的配置经发送到所有节点之后,其被认为是激活的,并且现在新节点也可以控制一些桶。该新节点将是一个或多个组的一部分,并且可以负责一些桶,以便使集群负载最平衡。
可以与一个配置重新计算和通信同时添加几个节点。当添加所有新节点时,工作负荷可以在新集群的资源上重新分配给重新平衡所需的所有桶。当添加多个节点时,系统可能需要几次负载平衡迭代来稳定到最佳状态。
当VFS后端2065加入集群时,重新计算每个桶的组,并且将新组的配置传送到所有当前节点。如图4所示,例如,作为该重新配置的结果,来自VFS后端2063的桶A和来自VFS后端2064的桶C可以移动到VFS后端2065中。
每个桶可以分成两半以加倍桶的数量。通过增加桶的数量,系统能够扩展以支持更大的节点集群。而且,如果单个桶最终非常繁忙(例如,热点),则可以将桶分成两半,直到单个最繁忙的桶变得足够小以容纳一个CPU核心。即使数据经密码散列并且在桶上经均匀地分割,仍然可能存在工作负荷能够以大量工作“攻击”单个桶的情况。能够执行这种划分使得这种情况得到缓解。
图5示出了根据本公开的示例实现方式在负载平衡分配式存储系统中划分元数据桶的示例。图5还示出了一个后端是一个以上桶的领导者的示例。例如,第二VFS后端2062是桶A1和C2的领导者。桶B1和D1在VFS后端2062中处于“待机”模式。
假定包括四个VFS后端2061-2064和组A、B、C和D桶的图4的初始集群是图5的起点。图5添加了两个新的VFS后端2065和2066。然后,分别划分组A、B、C和D桶,从而形成组A1、A2、B1、B2、C1、C2、D1和D2桶。组A、B、C和D桶的先前领导者分别是组A1、B1、C1和D1桶的领导者。组A2、B2、C2和D2桶将开始由相同的后端领导者以保持连续操作,但是将根据负载快速地重新分配到四个原始VFS后端2061-2064和两个新VFS后端2065和2066中。
如果服务器发生故障,则将该服务器的元数据碎片(服务器是桶领导者)基于其负载移动到其他服务器。可以根据每个节点控制多少桶来确定重新分配。例如,如果系统中的每个VFS节点控制十个激活的元数据桶并且服务器之一发生故障,则十个其他服务器的工作负荷将增加10%。类似于负载平衡操作,也可以根据实际负载来确定重新分配。从发生故障的服务器重新分配桶可能会首先用最低的当前负载填充服务器。可以通过每个桶处理的操作量,或者通过该桶经其对等端感知的延迟来计算负载。通过到对等端的有效延迟观察负载说明了系统控制之外的情况,诸如拥塞的网络链路等。通过将发生故障的服务器的激活地桶移动到最不繁忙的服务器,可以降低所有服务器上的负载可变性。降低负载可变性的能力有助于线性性能可扩展性。
图6示出了根据本公开的示例实现方式的VFS故障之后负载平衡分配式存储系统中的元数据控制的示例。假设图5中的VFS后端2063发生故障。如图6所示,分别重新分配桶A1、C1、D1和B2到VFS后端2064、2066、2065和2061
图7是示出用于负载平衡分配式存储系统中的元数据控制的示例方法的流程图。在框702中,分配元数据碎片到桶中,其中每个桶与具有已知领导者的唯一VFS后端组相关联。每组中的服务器在它们自己当中决定哪一个最好运行桶。存在许多并行的小决策,没有中央权限,正如我们试图拥有尽可能少的中央决策。一旦我们让所有节点知道要运行什么选项(存在什么节点和组的集中式配置),所有决策对于它们的组而言变成本地的。如上所述,组领导是具有访问与特定元数据碎片相关联的存储器的能力的唯一VFS后端。
在框704中,桶领导者监控后端上的负载平衡,并确定改变组领导和/或划分桶是否可以改善负载平衡。在框706中,如果VFS后端发生故障,则该后端上的桶经重新分配。在框708中,如果添加了一个或多个VFS后端,则来自先前VFS后端的桶经重新分配到新的VFS后端中而不改变组领导。
每个后端将其自己的负载(以及其通过向其对等端提供的延迟感知到的负载)与其共享桶的其他后端进行比较。如果后端注意到其负载太高,则它将查看其领导者桶及其所有对等端,并优化什么桶移动将是最有意义的。即使集群包括大量服务器,每个这样的本地改进也可以包括较少数量的服务器。
虽然已经参考某些实现方式描述了本方法和/或系统,但是本领域技术人员应当理解,在不脱离本方法和/或系统的范围的情况下,可以进行各种改变并且可以替换等同物。此外,在不脱离本发明的范围的情况下,可以进行许多修改以使特定情况或材料适应本公开的教导。因此,希望本方法和/或系统不限于所公开的特定实现方式,而是本方法和/或系统将包括落入所附权利要求的范围内的所有实现方式。
如本文所使用的,术语“电路(circuits)”和“电路(circuitry)”指的是物理电子部件(即硬件)和任何软件和/或固件(“代码”),其可以配置硬件,由硬件执行,或者以其他方式与硬件相关联。如本文中所使用,例如,特定处理器和存储器在执行第一一个或多个代码行时可以包括第一“电路”,且在执行第二一个或多个代码行时可以包括第二“电路”。如本文所用,“和/或”是指列表中通过“和/或”连接的任何一个或多个项目。例如,“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中的一个或多个”。如本文所用,术语“示例性”是指充当非限制性示例、实例或说明。如本文所用,术语“例如(e.g.)”和“例如(for example)”列出了一个或多个非限制性示例、实例或说明。如本文所用,无论功能的性能是否被禁用(例如,通过用户可配置设置、工厂微调等),只要电路包括执行功能所必需的硬件和代码(如果有必要的话),电路就“可操作地”执行该功能。

Claims (14)

1.一种用于控制存储器访问的系统,包括:
多个存储装置,其中,多个故障弹性地址空间跨过所述多个存储装置被分配,使得所述多个故障弹性地址空间中的每一个跨越所述多个存储装置中的一个以上存储装置;以及
多个计算装置,经由网络彼此通信地耦接并且经由所述网络通信地耦接到一个或多个存储装置,其中,所述多个计算装置能够操作为保持将每个故障弹性地址空间映射到所述多个计算装置中的一个上的元数据,
其中,将元数据分配到多个桶中,其中,每个桶与所述多个计算装置中的一组计算装置相关联;并且
仅允许由与已分配了特定地址空间相关联的元数据的桶的领导者来访问所述特定地址空间,
其中,当所述桶服务给定后端上的元数据碎片时,所述桶被认为是领导者。
2.根据权利要求1所述的系统,其中,所述多个计算装置包括多个虚拟文件系统VFS节点。
3.根据权利要求2所述的系统,其中,所述元数据经划分为多个元数据碎片,并且其中,所述多个元数据碎片中的每个元数据碎片被指定给所述多个VFS节点中的唯一的VFS节点组。
4.根据权利要求3所述的系统,其中,每个VFS节点组包括所述多个VFS节点中的五个VFS节点。
5.根据权利要求3所述的系统,其中,组中的所有VFS节点均已知并同意领导者。
6.根据权利要求3所述的系统,其中,所述多个故障弹性地址空间中的特定一个仅能够由已指定了与特定故障弹性地址空间相关联的元数据碎片的所述VFS节点组的领导者来访问。
7.根据权利要求1所述的系统,其中,所述故障弹性地址空间中的每一个在任何给定时间仅由所述多个计算装置中的一个拥有。
8.根据权利要求1所述的系统,其中,所述计算装置中的每一个拥有所述多个故障弹性地址空间。
9.根据权利要求1所述的系统,其中,在所述多个计算装置中的一个发生故障的情况下,所述多个计算装置能够操作为重新分配在故障的计算装置上的元数据。
10.根据权利要求1所述的系统,其中,在所述多个计算装置中的计算装置的数量发生改变的情况下,所述多个计算装置能够操作为根据与所述多个计算装置中的每个计算装置相关联的负载值来重新分配元数据。
11.根据权利要求1所述的系统,其中,每个地址空间在任何给定时间仅具有一个所述领导者。
12.根据权利要求11所述的系统,其中,所述计算装置中的每一个是所述多个桶的所述领导者。
13.根据权利要求1所述的系统,其中,所述系统包括在负载不平衡的情况下改变组领导。
14.根据权利要求1所述的系统,其中,所述系统包括在负载不平衡的情况下划分和重新分配所述多个桶中的桶。
CN201880062914.7A 2017-08-07 2018-08-06 负载平衡分配式存储系统中的元数据控制 Active CN111149081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311171351.4A CN117215484A (zh) 2017-08-07 2018-08-06 负载平衡分配式存储系统中的元数据控制

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/670,189 US10545921B2 (en) 2017-08-07 2017-08-07 Metadata control in a load-balanced distributed storage system
US15/670,189 2017-08-07
PCT/IB2018/001006 WO2019030566A2 (en) 2017-08-07 2018-08-06 CONTROLLING METADATA IN A DISTRIBUTED STORAGE SYSTEM BALANCED IN LOAD

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311171351.4A Division CN117215484A (zh) 2017-08-07 2018-08-06 负载平衡分配式存储系统中的元数据控制

Publications (2)

Publication Number Publication Date
CN111149081A CN111149081A (zh) 2020-05-12
CN111149081B true CN111149081B (zh) 2023-07-21

Family

ID=65229728

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201880062914.7A Active CN111149081B (zh) 2017-08-07 2018-08-06 负载平衡分配式存储系统中的元数据控制
CN202311171351.4A Pending CN117215484A (zh) 2017-08-07 2018-08-06 负载平衡分配式存储系统中的元数据控制

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311171351.4A Pending CN117215484A (zh) 2017-08-07 2018-08-06 负载平衡分配式存储系统中的元数据控制

Country Status (4)

Country Link
US (4) US10545921B2 (zh)
EP (2) EP3665561B1 (zh)
CN (2) CN111149081B (zh)
WO (1) WO2019030566A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10545921B2 (en) 2017-08-07 2020-01-28 Weka.IO Ltd. Metadata control in a load-balanced distributed storage system
CN111902717A (zh) * 2018-03-22 2020-11-06 莫列斯有限公司 从多个独立的传感器通过一共用的线缆提交数据的系统和方法
US11042661B2 (en) * 2018-06-08 2021-06-22 Weka.IO Ltd. Encryption for a distributed filesystem
US11169746B2 (en) * 2018-06-19 2021-11-09 Weka.IO LTD Expanding a distributed storage system
WO2020186081A1 (en) * 2019-03-12 2020-09-17 Intel Corporation Computational data storage systems
CN110597809B (zh) * 2019-08-21 2023-05-23 中山大学 一种支持树状数据结构的一致性算法系统及其实现方法
CN112788082A (zh) * 2019-11-08 2021-05-11 内江市下一代互联网数据处理技术研究所 一种高可用的内存缓存系统
US11720413B2 (en) * 2020-06-08 2023-08-08 Samsung Electronics Co., Ltd. Systems and methods for virtualizing fabric-attached storage devices
US11907752B1 (en) * 2022-12-16 2024-02-20 City Storage Systems Llc Work distribution service
CN117857649B (zh) * 2024-03-07 2024-04-30 西安众望能源科技有限公司 一种传输控制协议数据包的传输方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032216A (en) * 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
CN102483707A (zh) * 2009-06-22 2012-05-30 思杰系统有限公司 在负载平衡的多核环境中保持源ip的系统和方法
CN102483754A (zh) * 2009-06-26 2012-05-30 森普利维蒂公司 在非均匀存取存储器中的可扩展编制索引
CN105612490A (zh) * 2013-10-02 2016-05-25 网络装置公司 用于分布式存储架构的盘区散列技术
US9602424B1 (en) * 2014-03-31 2017-03-21 Amazon Technologies, Inc. Connection balancing using attempt counts at distributed storage systems
CN113407749A (zh) * 2021-06-28 2021-09-17 北京百度网讯科技有限公司 图片索引构建方法、装置、电子设备以及存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8229893B2 (en) 2010-02-01 2012-07-24 Hitachi Data Systems Corporation Metadata management for fixed content distributed data storage
US20070208780A1 (en) 2006-03-02 2007-09-06 Anglin Matthew J Apparatus, system, and method for maintaining metadata for offline repositories in online databases for efficient access
EP2158542B1 (en) * 2006-04-04 2019-06-05 Red Hat, Inc. Storage assignment and erasure coding technique for scalable and fault tolerant storage system
KR20090026941A (ko) * 2007-09-11 2009-03-16 삼성전자주식회사 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
US8046467B2 (en) * 2008-08-29 2011-10-25 Microsoft Corporation Maintaining client affinity in network load balancing systems
US8145598B2 (en) * 2009-02-23 2012-03-27 Iron Mountain Incorporated Methods and systems for single instance storage of asset parts
US20110153606A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Apparatus and method of managing metadata in asymmetric distributed file system
US8805967B2 (en) * 2010-05-03 2014-08-12 Panzura, Inc. Providing disaster recovery for a distributed filesystem
US9348696B2 (en) * 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
US20130179481A1 (en) * 2012-01-11 2013-07-11 Tonian Inc. Managing objects stored in storage devices having a concurrent retrieval configuration
WO2013147785A1 (en) * 2012-03-29 2013-10-03 Hitachi Data Systems Corporation Highly available search index with storage node addition and removal
US9043458B2 (en) * 2013-03-19 2015-05-26 Cognizant Technology Solutions India Pvt. Ltd. Framework for facilitating implementation of multi-tenant SaaS architecture
US10069677B2 (en) * 2013-04-06 2018-09-04 Citrix Systems, Inc. Systems and methods to collect logs from multiple nodes in a cluster of load balancers
US9256549B2 (en) * 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US10162843B1 (en) * 2014-05-05 2018-12-25 EMC IP Holding Company LLC Distributed metadata management
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9838477B2 (en) * 2014-10-30 2017-12-05 Netapp, Inc. Techniques for storing and distributing metadata among nodes in a storage cluster system
US9836404B2 (en) 2015-08-14 2017-12-05 Netapp, Inc. Write mirroring to storage class memory devices
US9448887B1 (en) 2015-08-22 2016-09-20 Weka.IO Ltd. Distributed erasure coded virtual file system
US20170097771A1 (en) 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US11669320B2 (en) * 2016-02-12 2023-06-06 Nutanix, Inc. Self-healing virtualized file server
CN107315533A (zh) * 2016-04-26 2017-11-03 杭州海康威视数字技术股份有限公司 一种数据存储方法及装置
US11030176B2 (en) * 2016-07-01 2021-06-08 Ebay Inc. Distributed storage of metadata for large binary data
US10387992B2 (en) * 2017-04-07 2019-08-20 Intel Corporation Apparatus and method for dynamic provisioning, quality of service, and prioritization in a graphics processor
US10380039B2 (en) * 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
US10545921B2 (en) 2017-08-07 2020-01-28 Weka.IO Ltd. Metadata control in a load-balanced distributed storage system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032216A (en) * 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
CN102483707A (zh) * 2009-06-22 2012-05-30 思杰系统有限公司 在负载平衡的多核环境中保持源ip的系统和方法
CN102483754A (zh) * 2009-06-26 2012-05-30 森普利维蒂公司 在非均匀存取存储器中的可扩展编制索引
CN105612490A (zh) * 2013-10-02 2016-05-25 网络装置公司 用于分布式存储架构的盘区散列技术
US9602424B1 (en) * 2014-03-31 2017-03-21 Amazon Technologies, Inc. Connection balancing using attempt counts at distributed storage systems
CN113407749A (zh) * 2021-06-28 2021-09-17 北京百度网讯科技有限公司 图片索引构建方法、装置、电子设备以及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种自适应文件系统元数据服务负载均衡策略;佘楚玉;温武少;肖扬;刘育擘;贾殷;;软件学报(第08期);全文 *

Also Published As

Publication number Publication date
EP4280067A3 (en) 2023-12-06
EP3665561A4 (en) 2021-08-11
US20190042591A1 (en) 2019-02-07
WO2019030566A3 (en) 2019-04-25
CN117215484A (zh) 2023-12-12
US20230099290A1 (en) 2023-03-30
EP3665561A2 (en) 2020-06-17
US20240061812A1 (en) 2024-02-22
EP3665561B1 (en) 2023-09-27
CN111149081A (zh) 2020-05-12
US20200159699A1 (en) 2020-05-21
WO2019030566A2 (en) 2019-02-14
US10545921B2 (en) 2020-01-28
US11847098B2 (en) 2023-12-19
EP4280067A2 (en) 2023-11-22
US11544226B2 (en) 2023-01-03

Similar Documents

Publication Publication Date Title
CN111149081B (zh) 负载平衡分配式存储系统中的元数据控制
CN111587418B (zh) 分布式存储系统的目录结构
CN112262407A (zh) 分布式文件系统中基于gpu的服务器
US11693738B2 (en) Storage system spanning multiple failure domains
US11755252B2 (en) Expanding a distributed storage system
CN111587420A (zh) 分布式存储系统快速故障恢复的方法和系统
US20230221897A1 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
US11093444B2 (en) Access redirection in a distributive file system
CN113039514A (zh) 分布式文件系统中的数据迁移
CN112005225A (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