CN111066009A - 具有写入均衡的闪存寄存器 - Google Patents
具有写入均衡的闪存寄存器 Download PDFInfo
- Publication number
- CN111066009A CN111066009A CN201880058207.0A CN201880058207A CN111066009A CN 111066009 A CN111066009 A CN 111066009A CN 201880058207 A CN201880058207 A CN 201880058207A CN 111066009 A CN111066009 A CN 111066009A
- Authority
- CN
- China
- Prior art keywords
- memory
- register
- vfs
- bucket
- computing devices
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 51
- 230000008859 change Effects 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 40
- 238000010200 validation analysis Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 abstract description 65
- 230000008569 process Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 9
- 238000012937 correction Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 3
- 239000002184 metal Substances 0.000 description 3
- 229910052751 metal Inorganic materials 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
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
交叉引用
通过引用将题为“分布式擦除编码虚拟文件系统”的美国专利申请号15/243,519的全部内容结合在此。
背景技术
通过该方案与本公开参考附图的剩余部分中阐述的当前方法和系统的一些方面的比较,数据存储的常规方案的局限性和缺点将对本领域技术人员变得显而易见。
发明内容
如权利要求中更为完整地阐述的,提供了一种用于具有写入均衡的NAND闪存持久寄存器的方法和系统,其具有如至少结合附图中的至少一个所示出和/或所描述的写入均衡(write leveling)。
附图说明
图1示出了根据本公开的方面的虚拟文件系统的各种示例性配置。
图2示出了根据本公开的方面的虚拟文件系统节点的示例性配置。
图3示出了根据本公开的示例性实施方式的虚拟文件系统的另一表示法。
图4示出了根据本公开的示例性实施方式的具有写入均衡的闪存寄存器的实施例。
图5示出了根据本公开的示例性实施方式的与图4中的闪存寄存器相关联的阴影寄存器的实施例。
图6是示出根据本公开的示例性实施方式的用于在负载平衡分布式存储系统中使用闪存寄存器进行写入均衡的方法的流程图。
图7示出了其中两个分布式故障弹性地址空间位于多个固态存储盘上的示例性实施方式。
图8示出了根据本公开的示例性实施方式的可以用于保护存储至虚拟文件系统的非易失性存储器的数据的前向纠错方案。
具体实施方式
NAND闪存装置在其寿命期间支持有限数量的写入,并且所支持的并发写入的数量低于所支持的并发读取的数量。当叶部获得更新时,因为树数据结构需要写入对所有的指针层进行更新,所以在设计中主要使用传统的基于树的数据结构,但是,当必须保存在基于NAND闪存的介质中时,传统的基于树的数据结构是低效的。因为NAND闪存的写入数量有限,所以树数据结构不合适。
本公开中描述的数据结构使得对于基于闪存的存储器而言,写入转为读取更为高效且便宜。该数据结构提供写入均衡以及缓存。通常,读取比写入还快。例如,一些基于NAND闪存的装置在给定时间内的读取的数量是写入的数量的十倍。因此,本公开的各方面提供一种用于能够有效地将写入操作转为读取操作的NAND闪存的合适数据结构。
本公开中的系统适用于小型集群,并且还能够扩展至许多成千上万个节点。讨论了关于非易失性存储器(NVM)的示例性实施方式,例如,采用固态驱动(SSD)形式的闪存。NVM可以划分成4kB“区块”和128MB“组块”。“盘区(Extents)”可以存储在易失性存储器中,例如,用于快速访问、也由NVM存储支持的RAM。盘区可以存储区块的指针,例如,将256个指针存储成区块中存储的1MB数据。在其他实施方式中,还可以使用更大或更小的存储器划分。在本公开中,元数据功能可以有效地散布在多个服务器上。例如,在其中大负载锁定文件系统命名空间的指定部分的“热点”情况下,该负载能够跨多个节点进行分布。
图1示出了根据本公开的各方面的虚拟文件系统(VFS)的各种示例性配置。图1中所示的是包括一个或多个VFS节点120(由从1至J的整数表示,j≥1)的局域网(LAN)102,并且可选地包括(由虚线指示的):一个或多个专用存储节点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容器内运行。
操作系统和/虚拟机监控器(VMM)(例如,超级监视器)可以为VFS节点提供服务。可以使用VMM在主机201上创建VFS节点并且运行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进行通信。可以通过无锁队列向VFS驱动器208提供uniX(POSIX)VFS功能的便携式操作系统接口。也可以使用SR-IOV或完整的PCIe物理功能地址在用户空间222中运行非易失性存储器标准(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 SSD242和244的硬件加速器,以在不使用服务器的情况下将其转换成网络NVMe-oF装置。NVMeSSD 242和244均可以包括两个物理端口,并且可以通过这些端口中的任一个端口访问全部数据。
每个客户端进程/应用程序212可以直接在操作系统上运行或可以在由操作系统和/或超级监视器服务的虚拟机和/或容器中运行。客户端进程212在执行其主要功能的过程中可以从储存器中读取数据和/或将数据写入储存器中。然而,客户端进程212的主要功能与储存器无关(即,进程仅关注其数据被可靠地存储并且根据需要进行检索,并且并不关注何地按、何时、或如何存储数据)。产生该进程的示例性应用包括:电子邮件服务器、网络服务器、办公生产应用、客户关系管理(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作为存储装置216与虚拟文件系统的VFS后端206之间的中介体来进行操作。SSD代理214还能够与支持诸如NVMe-oF(基于光纤通道的NVMe)等标准协议的标准网络存储装置进行通信。
图3示出了根据本公开的示例性实施方式的虚拟文件系统的另一表示法。诸如上面关于图2描述的,在图3中,元素302表示存储器资源(例如,DRAM和/或其他短期存储器)及其上寄存虚拟文件系统的各个节点(计算、存储、和/或VFS)的处理(例如,x86处理器、ARM处理器、NIC、ASIC、FPGA等)资源。元素308表示提供虚拟文件系统的长期存储的一个或多个物理存储装置216。
如图3中所示,将物理储存器组织成多个分布式故障弹性地址空间(DFRAS)518。其中,每个分布式故障弹性地址空间包括多个组块310,其又包括多个区块312。在一些实施方式中,仅出于方便将区块312组织成组块310,并且并非可以在所有的实施方式中实施。每个区块312存储提交数据316(可以采用下述所述各种状态)和/或描述或参考提交数据316的元数据314。
将储存器308组织成多个DFRAS能够使得从虚拟文件系统的多个-或许全部节点(例如,图1中的全部节点1041-104N、1061-106M、以及1201-120J可以并行执行并发提交)进行高性能并行提交。在示例性的实施方式中,虚拟文件系统中的每个节点可以拥有多个DFRAS中的相应一个或多个DFRAS并且对其自身的DFRAS具有独占读取/提交访问。
每个桶拥有一个DFRAS,因此在对其进行写入时不需要与任意其他节点进行协作。每个桶可以跨多个不同SSD上的多个不同组块构建条带,由此具有其自身DFRAS的每个桶能够基于多个参数选择同时写入哪一“组块条带”,并且一旦将组块分配至该桶,则不需要进行协作来实施此操作。所有的桶能够有效地写入至所有的SSD,而不需要任何协作。
仅通过在指定节点上运行的其自身桶而拥有和访问的各个DFRAS允许VFS中的各个节点对储存器308的一部分进行控制,而不需要与任意其他节点进行协作(在初始化期间或节点故障之后保存DFRAS的桶的[再]分布过程除外,例如,对储存器308的实际读取/提交可以异步执行的[再]分布)。由此,在该实施方式中,每个节点可以独立于其他节点正在进行的操作而对其桶的DFRAS进行读取/提交,而不需要在对储存器308进行读取和提交时达成任何共识。进一步地,在特定节点出现故障的情况下,特定节点拥有多个桶的事实允许将其工作负荷更为智能和有效地再分配至其他节点(而无需将全部工作负荷分配至单一的节点,从而可能创建“热点”)。鉴于此,在一些实施方式中,桶的数量相对于系统中的节点的数量可能较大,以使得任意一个桶可以是置于另一节点上的相对较小的负荷。这允许根据其他节点(例如,可以赋予具有更大能力和容量的节点更高百分比的故障节点桶)的能力和容量对故障节点的负荷进行细粒度的再分布。
为了允许该操作,可以保存将各个桶映射至其当前拥有节点的元数据,以使得能够将对储存器308的读取和提交重新定向至适当的节点。
因为能够将整个文件系统元数据空间(例如,目录、文件属性、文件中的内容范围等)分割(例如、切割或切分)成小的均匀的碎片(例如,“碎片”),所以能够进行负载分布。例如,具有30k服务器的大型系统能够将元数据空间切割成128k或256k碎片。
可以将每个这种元数据碎片保存在“桶”中。每个VFS节点可以负责若干个桶。当桶服务于给定后端上的元数据碎片时,桶被视为“激活”或该桶的“领导者”。通常,存在比VFS节点多许多的桶。例如,具有6个节点的小型系统能够具有120个桶,并且具有1000个节点的大型系统能够具有8k个桶。
在小的节点集合中,通常是在形成该桶的五组的5个节点中,可以激活每个桶。关于每个桶的五组(pneta-group)分布,集群配置保持所有参与的节点更新。
每五组对其自身进行监测。例如,如果集群具有10k服务器并且每个服务器具有6个桶,则每个服务器仅需要与30个不同的服务器进行对话来保持其桶的状态(6个桶将具有6个五组,因此,6*5=30)。这相比于中心实体不得不对全部节点进行监测并且保持集群范围的状态是小许多的数量。当集群大小增加时,由于节点并不执行更多的工作,所以使用五组允许以更大的集群执行扩展。这可能产生这样的缺点,即,在“哑”模式中,相比于存在物理节点,小型集群能够实际地产生更多的通信,但是,通过仅向其共享的所有桶发送两个服务器之间的单个心跳而克服该缺点(随着集群的增长,这将变成仅一个桶,但是,如果您具有小的5服务器集群,则其仅将所有的桶包括在所有的消息中并且每个服务器将仅与另4个进行对话)。五组可以使用与Raft共识算法相似的算法进行判断(即,达成共识)。
每个桶可以具有对其进行运行的一组计算节点。例如,五个VFS节点能够运行一个桶。然而,在任何给定时刻,该组中只有一个节点是控制器/领导者。进一步地,对于足够大的集群,无任何两个桶共享同一分组。如果集群中仅存在5个或6个节点,则大多数的桶可以共享后端,在相当大的集群中,存在多个截然不同的节点分组。例如,对于26个节点,有超过6400个可能的五节点分组(即,五组)。
分组中的所有节点获知哪一节点是该桶的实际激活控制器(即,领导者)并且就此达成一致(即,达成共识)。访问桶的节点可以记住(“缓存”)组成员(例如,五个)之中作为该桶的领导者的最后节点。如果其访问桶领导者,则桶领导者执行所需求的操作。如果其访问不是当前领导者的节点,则该节点指示领导者对访问进行“重新定向”。如果访问已缓存的领导者节点过期,则联系节点可以尝试同一五组中的不同节点。集群中的所有节点共享集群的共同“配置”,从而允许节点获知哪一服务器可以运行各个桶。
每个桶可以具有指示文件系统上运行的应用所使用的桶重多少的负载/使用值。例如,即使所使用的多个桶之间存在不平衡,具有11个轻便使用桶的服务器节点也可以接收另元数据桶,以在具有9个重使用桶的服务器之前进行运行。可以根据平均响应延迟、当前运行操作的数量、所消耗的存储器、或其他度量判断负载值。
即使当VFS节点不出现故障时,也可能进行再分布。如果系统基于所跟踪的负载度量识别一个节点比其他节点繁忙,则系统能够将其一个桶移至较不繁忙的另一服务器(即,“故障”)。然而,在将桶实际地重新定位至不同的主机之前,可以通过对写入和读取进行转换来实施负载平衡。因为每个写入可以在由DFRAS判定的不同节点组中结束,所以不可以选择具有更高负载的节点处于所写入数据的条带中。系统还可以选择不服务于来自高负载节点的读取。例如,可以执行“降级模式读取”,其中,从同一条带的其他区块对高负载节点中的区块进行重构。降级模式读取是经由同一条带中的其余节点执行的读取,并且经由故障保护对数据进行重构。由于读取的发起者可以假设该节点在下方,当读取延迟过高时,可以执行降级模式读取。如果负载足够高而创建更高的读取延迟,则集群可以恢复至从其他节点读取数据并且使用降级模式读取对所需数据进行重构。
每个桶管理其自身的分布式擦除编码实例(即,DFRAS 518)并且并不需要与其他桶协作来执行读取和写入操作。存在潜在的上千个并发分布式擦除编码实例同时工作,每个分布式擦除编码实例用于不同的桶。由于其有效地允许将任意较大的文件系统划分成不需要进行协作的独立碎片,这是扩展性能的完整部分,由此提供与扩展无关的高性能。
每个桶对落入其碎片中的所有文件系统操作进行处理。例如,目录结构、文件属性、以及文件数据范围将落入具体桶的管辖内。
通过查找哪一桶拥有该操作而开始从任意前端完成的操作。然后,判断该桶的后端领导者及节点。通过尝试最后获知的领导者可以执行该判断。如果最后获知的领导者不是当前领导者,则该节点可以获知哪一节点是当前领导者。如果最后获知的领导者不再是桶的五组的一部分,则该后端将使前端获知其应恢复配置,以查找桶的五组中的成员。操作的分布允许通过多个服务器、而非通过标准系统中的单一计算机来处理复杂的操作。
文件系统元数据是由目录建立的,并且目录保存关于其中存储的文件的信息。由保存该文件的基本数据的索引节点区块表示每个文件,并且还由保存关于将什么范围存储在文件系统中的指定信息的范围区块表示每个文件。寄存器是保存存储系统的所有索引节点和范围信息的数据结构。寄存器还允许在不同类型的信息之间进行转换。通过使用键/值存储,对象ID(即,键)将数据锁定在4k区块内。对象ID可以是32位宽,并且值可以是4k区块及小的标签。
对于“设置”命令,寄存器接收该对象的对象类型ID(例如,目录ID、索引节点ID、范围ID等)及新的4k区块值。所存储的4k数据的一部分是指向该4k区块的对象(即,“反向指针”)的ID。
对于“获取”命令,寄存器接收对象类型ID和反向指针并且返回NULL(即,该对象不存在)或表示该对象的4k。
因为不同的对象类型能够获取相同的ID,所以反向指针是重要的,但是,同一对象ID不能指向不同的对象类型。因此,获知对象ID允许对具有同一对象ID的所有区块执行并发读取,并且仅返回具有正确反向指针的一个区块。因为可以并行执行这些并发读取,所以整体延迟保持非常低。每个节点所支持的并发桶的数量基于向寄存器提供多少RAM存储器。
使用寄存器从指针/键指向区块数据。每个桶保存并且管理其自身的寄存器。寄存器的脏部(即,尚未移至闪存的信息)是RAM。还通过DFRAS中的分布式擦除编码(DEC)保护寄存器数据。通过变成其桶的领导者的另一节点能够对寄存器进行完全重构(对脏部进行扫描)。
图4示出了根据本公开的示例性实施方式的具有写入均衡的闪存寄存器401的实施例。在本实施例中,寄存器包括两项-L1(1级)项和L2(2级)项。每个寄存器可以将512个L1区块(总共2MB)保存在RAM中。通过对象的寄存器散列ID的前9位推导正确的L1键(512阵列中的索引)。每个L1区块可以保存四个L2组的数据,因此,可以存在总共2048(512x4)个L2组。由寄存器散列ID的前11位指定每个L2组。前9位指向右侧L1区块,并且然后,其他2位拾取该L1区块内的L2组信息。
每个L2组的信息被存储在该L1区块的约11kB内。每个区块还存储指向其的区块ID的4字节ID,因此,其能够在查询表中进行验证。因此,该数据结构能够存储4092字节的数据。
4k区块中的多个分类元组(键、值)最终将导致产生实际的数据区块,并且通过正确的反向指针选择数据区块。由此,实施非常良好的“分支因子”,并且需要的更新更少。多次L2更新将对同一L1区块进行更新,并且达到正确的L2区块仅需要两次读取(读取存储器中、指向正确L2区块的L1区块)。
读取对象需要至少两次跳跃。跳跃次数基于每4k区块的约400个指针表的分支因子。指针是4字节长并且存储在分布式擦除编码(DEC)中的区块ID也是4字节长,因此,每项是8字节。
可以使用L1区块中的1kB对实际数据的正确L2区块进行加载。1kB列出了每个L2的ID范围。当系统启动时,存在该范围的单个L2区块,从而保存其跨越的21位的所有ID范围(即,32-11=21)。当该L2区块变满(达到4k)时,其被分裂,并且然后L1将指向两个L2区块。当每个L2区块变满时,L2区块将分裂成两个新的L2区块。指向L2区块的L1区块对各个L2区块保存的范围进行更新并且对新L2区块的指针进行更新。
如果系统上存在许多随机工作,则将存在导致许多L2改变、导致一些L1改变、导致写入放大(即,单个区块写入的写入操作更多)的许多值改变。然而,通过使用阴影寄存器可以“均衡化”(即,减少)写入放大。
图5示出了根据本公开的示例性实施方式的与图4中的闪存寄存器相关联的阴影寄存器的实施例。每个L1和L2区块可以与包含已提交至NVM的实际数据的改变的4k“阴影”区块相关联。
对于图4中具有512个L1区块和2048个L2区块的闪存寄存器401,相关联的阴影寄存器包括10M字节(2560x4k区块)。阴影位403指示4k值区块是否具有阴影。当键(出于示出之目的,被示出为4位)具有相关联的阴影值时,设置位。因此,仅根据需要执行对4k区块的改变的搜索。如果阴影位403中的特定位指示不存在4k值的阴影区块,则返回4k值,而不对阴影寄存器501进行搜索。
通过使用阴影区块,存储值的实际4k区块不需要在各个值改变时而改变。当4k值区块的一部分不得不改变时,将差异(可能较小)存储在跟随这种改变的L1阴影区块中。一旦L1的阴影区块变满(例如,该水平以下的4k累积改变),L1阴影区块则被破坏并且将这种改变向下推入至L2阴影区块中,并且然后,清除L1阴影区块。当L2阴影区块变满时(例如,其所指向的值的4k累积改变),将这种改变推送至实际值区块中(并且清除指示这些区块具有阴影化数据的位)。对于任意的值设置,因为不将实际的4k数据写入盘中,所以对闪存的写入是“均衡的”,但是,在长时间段内仅写入一次。系统可以将寄存器的大量值设置累积成单次操作,因此,系统不会对大量的4k区块进行改变,而只将少数的更新写入相关的阴影L1和L2区块,由此将实际需要的写入减少至最小。
通过查找实际的4k值并且通过相关L1和L2阴影检查是否存在其所应用的任何改变,阴影操作还反向进行。因为这种覆盖检查可能相当昂贵,所以可以将所有值的大型位图保存在存储器(例如,RAM)中,并且能够对键是否存储覆盖改变进行标记。因此,仅需要时才可以执行对改变的搜索。仅将位图存储在存储器(例如,RAM)中,但是,在出现故障之后,其能够从盘上数据结构轻易地进行重构。因为该数据结构保存多次操作的状态,所以其允许多次写入,以累积成更少数量的盘上写入。
图6是示出负载平衡分布式存储系统中的使用闪存寄存器进行写入均衡的示例性方法的流程图。每个物理SSD包括数据组块(例如,128MB组块),并且每个组块包括区块(例如,4kB区块)。将该物理存储器映射至多个逻辑范围(例如,将指针映射至256个区块)。将这种映射保存在作为寄存器的VFS中。VFS后端包括管理其相关联的寄存器的桶。
在框601中,VFS前端接收写入请求。在框603中,判断拥有与写入请求相关联的桶的VFS后端。该VFS后端可以与接收写入请求的VFS前端位于同一服务器上。可替代地,该VFS后端可以位于另一服务器上。在框605中,根据索引节点ID和偏移量的函数(例如,散列)来访问桶中的二级寄存器。在框607中,在一级寄存器中对经由写入而对闪存寄存器(例如,在SSD中)进行的改变进行阴影化。在框609中,如果改变的数量超过一级寄存器阴影的容量,则将这种改变推送至二级寄存器。在框611中,如果被推送至二级的改变的数量超过二级寄存器阴影的容量,则对一级和二级寄存器进行更新并且与和存储在变满的L2阴影页面中的键相关联的实际4k值一起写入至闪存寄存器中(例如,SSD中)。如果被推送至二级寄存器的改变的数量不超过二级寄存器阴影的容量,则桶仅能够继续对写入请求和元数据改变进行处理,从而对阴影页面做出少量更新并且不需要每次操作写入完整的4k页面。
图7示出了其中两个分布式故障弹性地址空间寄存在多个固态存储盘上的示例性实施方式。可以将组块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包括寄存在N个存储装置5061-506D(由此,D大于或等于N)中的每个存储装置上的多个组块510d,c。图7中示出了该实施方式的实施例。
在图7中,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构成。
尽管在图7的简单实例中,D=7并且N=5,然而,在实际实施方式中,D可以比N大许多(例如,大于1的整数的倍数并且可能高出许多数量级)并且两个值可以选择为使得寄存在N个存储装置506的同一集合(或更一般地,N个故障域的同一集合)上的单个DFRAS的任意两个组块条带520的概率低于所需阈值。同样,任意单个存储装置506d(或更一般地,任意单个故障域)出现故障将导致(可能基于下列项判断的所需统计:D和N的选择值,N个存储装置506的大小,以及故障域的布置)至多丢失任意特定条带520s中的一个组块510b,c。甚至进一步地,双重故障将导致大多数的条带至多丢失单个组块510b,c并且仅少量的条带(基于D和N的值判断)将丢失任意特定条带520中的两个组块(例如,两个故障条带的数量可以呈指数式地小于一个故障条带的数量)。
例如,如果每个存储装置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计算的速率、用于重构的网络消息进行通信的速率而实施。
图8示出了根据本公开的示例性实施方式的用于保护存储至虚拟文件系统的非易失性存储器的数据的前向纠错方案。示出了DFRAS的区块条带5301-5304中的存储区块9021,1-9027,7。在图8的保护方案中,每个条带中的五个区块用于存储数据数字版权每个条带中的两个区块用于保护数字的数据存储(即,M=5并且K=2)。在图8中,使用下列等式(1)-(9)计算保护数字:
由此,图8中的四个条带5301-5304构成多条带(在这种情况下,为四个条带)FEC保护域的一部分并且能够使用上述等式(1)-(9)的各种组合而恢复任意区块条带5301-5304中丢失的任意两个或更少的区块。出于比较,单一条带保护域的实施例将如同D11、D22、D33、D44、D54仅被P1保护并且将D11、D22、D33、D44、D54、以及P1全部写入至条带5301(5301将是单一条带FEC保护域)。
根据本公开的示例性实施方式,多个计算装置经由网络通信地耦合至彼此,并且多个计算装置中的每个计算装置包括多个存储装置中的一个或多个存储装置。多个故障弹性地址空间跨多个存储装置分布,以使得多个故障弹性地址空间中的每个故障弹性地址空间跨多个存储装置。多个故障弹性地址空间中的每一个故障弹性地址空间被组织成多个条带(例如,如图7和8中的多个530)。多个条带中的每一个或多个条带构成多个前向纠错(FEC)保护域(例如,诸如图8中的多条带FEC域)中的相应一个保护域的一部分。多个条带中的每个条带可以包括多个存储区块(例如,多个512)。多个条带中的特定条带的每个区块可寄存在多个存储装置中的不同存储装置上。多个存储区块的第一部分(例如,由图8中的条带5301的9021,2-9021,6构成的五个数量)可以用于存储数据数字,并且多个存储区块的第二部分(例如,图8中的条带5301的两个9021,1和9021,7的数量)可以用于存储至少部分基于数据数字计算的保护数字。多个计算装置能够操作为对多个条带进行排名。排名可以用于选择在对多个故障弹性地址空间中的一个故障弹性地址空间的下一个提交操作时使用多个条带中的哪个条带。排名可以基于多个条带的每个条带中有多少保护和/或未保护存储区块。对于多个条带中的任意一个特定条带,排名可以基于存储在具有多个条带的一个特定条带的多个存储装置上的位图。排名可以基于多个条带的每个条带中有当前存储数据的多少个区块。排名可以基于提交至多个条带中的每个条带的读取和写入开销。在任意给定时间,可以仅由多个计算装置中的一个计算装置拥有各个故障弹性地址空间,并且可以仅通过其拥有者对多个故障弹性地址空间中的每一个故障弹性地址空间进行读取和写入。每个计算装置可以拥有多个故障弹性地址空间。可以将多个存储装置组织成多个故障域。多个条带中的每一个条带可以跨多个故障域。每个故障弹性地址空间可以跨多个故障域中的全部故障域,以使得一旦多个故障域中的任意一个特定故障域出现故障,则在多个故障域中的各个其他故障域之间分布用于对丢失数据进行重构的工作负荷。多个条带可以跨多个故障域分布,以使得在多个故障域中的两个故障域出现并发故障的情况下,寄存在多个故障域的两个故障域上的多个条带中的任意一个特定条带的两个区块的改变呈指数式地小于寄存在多个故障域的两个故障域上的多个条带中的任意一个特定条带的仅一个区块的改变。多个计算装置可以操作为首先对具有两个故障区块的多个条带中的任意条带进行重构,并且然后,对仅具有一个故障区块的多个条带中的任意条带进行重构。多个计算装置可以操作为以比仅具有一个故障区块的多个条带的重构速率更高的速率(例如,以重构专用的CPU时钟占空比的更大百分比、重构专用的网络传输机会的更大百分比等)执行具有两个故障区块的多个条带的重构。在一个或多个故障域出现故障的情况下,多个计算装置可以操作为基于多个条带中的同一个条带的其他区块丢失的数量而判断对任意特定的丢失区块进行重构的速率。其中,多个故障域中的一个或多个故障域包括多个存储装置。多个FEC保护域中的每个保护域可以跨多个条带中的多个条带。可以将多个条带组织成多个组(例如,图7中的组块条带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中的一个或多个”。如此处使用的,术语“示例性的”指用作非限制性实施例、实例、或示例。如此处使用的,术语“例如(e.g.)”和“例如(for example)”阐述了一个或多个非限制性实施例、实例、或示例的列表。如此处使用的,只要线路包括执行功能所需的硬件和代码(如果有必要),则与功能的性能是否被禁用或未启用无关(例如,通过用户配置设置、工厂维修等),线路“能够操作为”执行功能。
Claims (20)
1.一种用于控制存储器访问的系统,包括:
分布式文件服务器的存储器;以及
多个计算装置,能够操为将数据分配至所述分布式文件服务器的所述存储器中,其中,所述存储器的一部分与存储在所述多个计算装置中的一个计算装置上的元数据桶相关联;
其中,所述元数据桶包括能够由多个计算装置中的一个计算装置根据索引节点ID和偏移量进行访问的二级寄存器,并且其中,所述二级寄存器被配置为:
在一级寄存器中对所述存储器的改变进行阴影化;
如果所述改变的数量超过所述一级寄存器的容量,则将所述改变推送至所述二级寄存器;并且
如果被推送至所述二级寄存器的所述改变的数量超过所述二级寄存器的容量,则根据记录在所述一级寄存器和所述二级寄存器中的所述改变来对所述存储器进行更新。
2.根据权利要求1所述的系统,其中,所述多个计算装置包括多个虚拟文件系统(VFS)节点。
3.根据权利要求2所述的系统,其中,所述元数据桶被保存在所述多个VFS节点中的一个VFS节点中的VFS后端上。
4.根据权利要求3所述的系统,其中,所述元数据桶是所述VFS后端上的多个桶中的一个桶。
5.根据权利要求4所述的系统,其中,所述多个桶中的每个桶管理其自身的寄存器。
6.根据权利要求4所述的系统,其中,所述VFS后端能够操作为根据记录在所述二级寄存器中的所述改变来对从所述存储器读取的数据进行改变。
7.根据权利要求1所述的系统,其中,通过分布式擦除编码来保护所述元数据桶中的所述二级寄存器。
8.根据权利要求1所述的系统,其中,所述存储器是非易失性闪存。
9.根据权利要求1所述的系统,其中,根据一个或多个反向指针的验证来保护所述元数据桶中的所述二级寄存器,其中,所述反向指针包括指向寄存器区块的对象的区块ID。
10.根据权利要求1所述的系统,其中,所述计算装置能够操作为根据存储在寄存器区块中的指针表来定位存储器区块。
11.一种用于控制存储器访问的方法,包括:
经由多个计算装置中的一个计算装置将数据分配至分布式文件服务器的存储器中,其中,所述存储器的一部分与存储在所述多个计算装置中的所述一个计算装置上的元数据桶相关联;
根据索引节点ID和偏移量来访问所述元数据桶中的二级寄存器,其中,所述访问是经由所述多个计算装置中的一个计算装置执行的;
将对所述存储器进行的改变记录在一级寄存器中,其中,所述记录是经由所述多个计算装置中的所述一个计算装置执行的;并且
如果所述改变的数量超过了所述一级寄存器的容量,则将所述改变推送至所述二级寄存器;并且
如果被推送至二级的所述改变的数量超过所述二级寄存器容量,则根据记录在所述一级寄存器和所述二级寄存器中的所述改变来对所述存储器进行更新。
12.根据权利要求11所述的方法,其中,所述多个计算装置包括多个虚拟文件系统(VFS)节点。
13.根据权利要求12所述的方法,其中,所述元数据桶被保存在所述多个VFS节点中的一个VFS节点中的VFS后端上。
14.根据权利要求13所述的方法,其中,所述元数据桶是所述VFS后端上的多个桶中的一个桶。
15.根据权利要求14所述的方法,其中,所述多个桶中的每个桶管理其自身的寄存器。
16.根据权利要求11所述的方法,其中,通过分布式擦除编码来保护所述元数据桶中的所述二级寄存器。
17.根据权利要求11所述的方法,其中,所述方法包括:使用所述二级寄存器来对从所述存储器中读取的数据进行改变。
18.根据权利要求11所述的方法,其中,所述存储器是非易失性闪存。
19.根据权利要求11所述的方法,其中,通过对一个或多个反向指针进行验证来保护所述元数据桶中的所述二级寄存器,其中,反向指针包括指向寄存器区块的对象的区块ID。
20.根据权利要求11所述的方法,其中,所述方法包括:根据存储在寄存器区块中的指针表来进行分支。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311197661.3A CN117032586A (zh) | 2017-10-23 | 2018-10-04 | 具有写入均衡的闪存寄存器 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/791,188 | 2017-10-23 | ||
US15/791,188 US10394490B2 (en) | 2017-10-23 | 2017-10-23 | Flash registry with write leveling |
PCT/IB2018/001227 WO2019081974A1 (en) | 2017-10-23 | 2018-10-04 | FLASH REGISTER WITH WRITING LEVEL |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311197661.3A Division CN117032586A (zh) | 2017-10-23 | 2018-10-04 | 具有写入均衡的闪存寄存器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111066009A true CN111066009A (zh) | 2020-04-24 |
CN111066009B CN111066009B (zh) | 2023-08-22 |
Family
ID=66169878
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880058207.0A Active CN111066009B (zh) | 2017-10-23 | 2018-10-04 | 具有写入均衡的闪存寄存器 |
CN202311197661.3A Pending CN117032586A (zh) | 2017-10-23 | 2018-10-04 | 具有写入均衡的闪存寄存器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311197661.3A Pending CN117032586A (zh) | 2017-10-23 | 2018-10-04 | 具有写入均衡的闪存寄存器 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10394490B2 (zh) |
EP (1) | EP3701389A4 (zh) |
CN (2) | CN111066009B (zh) |
WO (1) | WO2019081974A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448900A (zh) * | 2022-04-02 | 2022-05-06 | 南京邮电大学 | 基于扩展raft算法的SDN控制器交互方法及系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190044853A1 (en) * | 2018-01-12 | 2019-02-07 | Intel Corporation | Switch-assisted data storage network traffic management in a data storage center |
US11042661B2 (en) * | 2018-06-08 | 2021-06-22 | Weka.IO Ltd. | Encryption for a distributed filesystem |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060248088A1 (en) * | 2005-04-29 | 2006-11-02 | Michael Kazar | System and method for multi-tiered meta-data caching and distribution in a clustered computer environment |
US20150101024A1 (en) * | 2013-10-03 | 2015-04-09 | Cleversafe, Inc. | Dispersed storage system with identity unit selection and methods for use therewith |
CN104750658A (zh) * | 2013-12-27 | 2015-07-01 | 英特尔公司 | 辅助式一致共享存储器 |
US20160188218A1 (en) * | 2014-12-31 | 2016-06-30 | Cleversafe, Inc. | Synchronizing storage of data copies in a dispersed storage network |
US9448887B1 (en) * | 2015-08-22 | 2016-09-20 | Weka.IO Ltd. | Distributed erasure coded virtual file system |
US20160350326A1 (en) * | 2013-05-10 | 2016-12-01 | Extenua, Inc. | Concurrency control in virtual file system |
US20170004131A1 (en) * | 2015-07-01 | 2017-01-05 | Weka.IO LTD | Virtual File System Supporting Multi-Tiered Storage |
CN106471461A (zh) * | 2014-06-04 | 2017-03-01 | 纯存储公司 | 自动重新配置存储装置存储器拓扑 |
US20170097771A1 (en) * | 2015-10-01 | 2017-04-06 | Netapp, Inc. | Transaction log layout for efficient reclamation and recovery |
CN106663054A (zh) * | 2014-07-02 | 2017-05-10 | 纯存储公司 | 在非易失性固态储存器中的非易失性ram存储器和闪存存储器 |
US20170199823A1 (en) * | 2014-07-02 | 2017-07-13 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133606A1 (en) | 2003-01-02 | 2004-07-08 | Z-Force Communications, Inc. | Directory aggregation for files distributed over a plurality of servers in a switched file system |
US7412496B2 (en) | 2003-08-22 | 2008-08-12 | Emc Corporation | Management of the file-modification time attribute in a multi-processor file server system |
US8954654B2 (en) | 2008-06-18 | 2015-02-10 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance |
US8706694B2 (en) | 2008-07-15 | 2014-04-22 | American Megatrends, Inc. | Continuous data protection of files stored on a remote storage device |
-
2017
- 2017-10-23 US US15/791,188 patent/US10394490B2/en active Active
-
2018
- 2018-10-04 EP EP18871443.0A patent/EP3701389A4/en active Pending
- 2018-10-04 CN CN201880058207.0A patent/CN111066009B/zh active Active
- 2018-10-04 WO PCT/IB2018/001227 patent/WO2019081974A1/en unknown
- 2018-10-04 CN CN202311197661.3A patent/CN117032586A/zh active Pending
-
2019
- 2019-04-22 US US16/390,202 patent/US10684799B2/en active Active
-
2020
- 2020-06-15 US US16/901,049 patent/US20200379686A1/en active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060248088A1 (en) * | 2005-04-29 | 2006-11-02 | Michael Kazar | System and method for multi-tiered meta-data caching and distribution in a clustered computer environment |
US20160350326A1 (en) * | 2013-05-10 | 2016-12-01 | Extenua, Inc. | Concurrency control in virtual file system |
US20150101024A1 (en) * | 2013-10-03 | 2015-04-09 | Cleversafe, Inc. | Dispersed storage system with identity unit selection and methods for use therewith |
CN104750658A (zh) * | 2013-12-27 | 2015-07-01 | 英特尔公司 | 辅助式一致共享存储器 |
CN106471461A (zh) * | 2014-06-04 | 2017-03-01 | 纯存储公司 | 自动重新配置存储装置存储器拓扑 |
CN106663054A (zh) * | 2014-07-02 | 2017-05-10 | 纯存储公司 | 在非易失性固态储存器中的非易失性ram存储器和闪存存储器 |
US20170199823A1 (en) * | 2014-07-02 | 2017-07-13 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US20160188218A1 (en) * | 2014-12-31 | 2016-06-30 | Cleversafe, Inc. | Synchronizing storage of data copies in a dispersed storage network |
US20170004131A1 (en) * | 2015-07-01 | 2017-01-05 | Weka.IO LTD | Virtual File System Supporting Multi-Tiered Storage |
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 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448900A (zh) * | 2022-04-02 | 2022-05-06 | 南京邮电大学 | 基于扩展raft算法的SDN控制器交互方法及系统 |
CN114448900B (zh) * | 2022-04-02 | 2022-08-02 | 南京邮电大学 | 基于扩展raft算法的SDN控制器交互方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10684799B2 (en) | 2020-06-16 |
CN111066009B (zh) | 2023-08-22 |
EP3701389A4 (en) | 2021-08-04 |
WO2019081974A1 (en) | 2019-05-02 |
EP3701389A1 (en) | 2020-09-02 |
US10394490B2 (en) | 2019-08-27 |
CN117032586A (zh) | 2023-11-10 |
US20200379686A1 (en) | 2020-12-03 |
US20190243581A1 (en) | 2019-08-08 |
US20190121578A1 (en) | 2019-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111587428B (zh) | 分布式存储系统中的元数据日志 | |
CN111587418B (zh) | 分布式存储系统的目录结构 | |
CN111587423B (zh) | 分布式存储系统的分层数据策略 | |
US10783078B1 (en) | Data reduction techniques in a flash-based key/value cluster storage | |
US10852965B2 (en) | Write folding mechanism using reusable shared striping in a storage system | |
CN111587425B (zh) | 分布式存储系统中的文件操作 | |
CN111587421B (zh) | 分布式存储系统电源故障阻抗的方法和系统 | |
CN112262407A (zh) | 分布式文件系统中基于gpu的服务器 | |
CN111587420A (zh) | 分布式存储系统快速故障恢复的方法和系统 | |
CN111066009B (zh) | 具有写入均衡的闪存寄存器 | |
CN113039514A (zh) | 分布式文件系统中的数据迁移 | |
CN112292661A (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 |