CN116490847A - 支持分布式文件系统中的垃圾收集的虚拟数据复制 - Google Patents
支持分布式文件系统中的垃圾收集的虚拟数据复制 Download PDFInfo
- Publication number
- CN116490847A CN116490847A CN202080106598.6A CN202080106598A CN116490847A CN 116490847 A CN116490847 A CN 116490847A CN 202080106598 A CN202080106598 A CN 202080106598A CN 116490847 A CN116490847 A CN 116490847A
- Authority
- CN
- China
- Prior art keywords
- block
- logical address
- dfs
- module
- disk
- 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
- 230000010076 replication Effects 0.000 title claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 167
- 230000008569 process Effects 0.000 claims abstract description 113
- 238000013507 mapping Methods 0.000 claims description 71
- 239000012634 fragment Substances 0.000 claims description 38
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000013519 translation Methods 0.000 claims description 3
- 230000000903 blocking effect Effects 0.000 abstract description 8
- 230000015556 catabolic process Effects 0.000 abstract description 4
- 238000006731 degradation reaction Methods 0.000 abstract description 4
- 238000012005 ligant binding assay Methods 0.000 description 139
- 239000008186 active pharmaceutical agent Substances 0.000 description 41
- 238000004891 communication Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000007723 transport mechanism Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 239000002253 acid Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005755 formation reaction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002184 dynamic force spectroscopy Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0608—Saving storage space on storage systems
-
- 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/064—Management of blocks
-
- 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]
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
方法和系统实现了一种虚拟复制操作,该操作改进了在分布式文件系统处对抢占式垃圾收集策略的支持。垃圾收集过程抢先对日志结构文件系统中的数据执行复制。为了使线程阻塞写入操作不跨分布式文件系统节点集群的节点分布,从而避免计算性能的衰退,提供了一种虚拟复制操作,该虚拟复制操作基于主节点元数据,对存储有要虚拟复制的区块的每个块节点进行定位,并调用逻辑地址映射器的重映射API,该重映射API是由块节点的本地文件系统提供的。每个块节点的逻辑地址映射器执行将磁盘地址从源逻辑区块地址重映射到目的地区块地址,而不将数据从一个磁盘地址重定位到另一个磁盘地址。这些重映射的结果可作为元数据存储在主节点处,替换先前映射的元数据。
Description
背景技术
数据存储已经越来越多地进入云计算的领域,其中,在联网的分布式服务器上托管文件系统使远程存储的文件的可用性和可靠性得到了极大提高,并且使得能够通过同样的分布式计算资源为数据工作负载提供服务,该分布式计算资源可以被缩放以满足大规模计算应用和项目的需要。因此,期望分布式文件系统(“DFS”)以对本地文件系统公用且与本地文件系统集成的方式,来建立对文件的访问。长期地作为系统调用的标准建立的可移植操作系统接口(“POSIX”)应用编程接口(“API”)已经越来越多地在各种DFS实现方式中得到支持,以建立与本地文件系统的兼容性。此外,DFS实现方式还提供了web服务API,可以通过网络连接来访问该web服务API。
在来自诸如云计算和云服务供应商之类的供应商的DFS的许多竞争实现方式中,API通常提供抽象物(abstraction),针对分布式存储和分布式计算资源的终端用户,这些抽象物隐藏了底层硬件设计和架构,并隐藏了文件和资源的管理。例如,来自终端用户计算设备的、对DFS API的调用以读取和写入远程存储的文件,可以导致在数据中心或云计算系统的不同分布式节点之间复制和移动这些存储的文件的数据,而不使这种复制和移动对终端用户透明。
为了维护针对终端用户隐藏底层架构和资源管理的抽象物,以高效的方式来执行由DFS API调用触发的进程越来越重要。因此,虽然进程在管理分布式存储资源和分布式计算资源方面可能具有强化作用,但是这些进程所产生的计算工作负载不应该过于密集,以免干扰用户级进程并降低这些用户级进程的效率。
附图说明
参考附图来阐述具体实施方式。在图中,附图标记的最左侧的(多个)数字标识附图标记第一次出现的图。在不同的图中使用相同的附图标记表示相似或相同的项或特征。
图1示出了根据本公开的示例实施例的计算系统的架构图。
图2示出了根据本公开的示例实施例的分布式文件系统节点集群的架构图。
图3示出了根据本公开的示例实施例的、可以调用虚拟数据复制方法的垃圾收集方法的流程图。
图4A和图4B示出了根据本公开的示例实施例的虚拟数据复制方法的流程图。
图5示出了根据本公开的示例实施例的、在块(chunk)节点的托管式存储的逻辑地址映射器处执行的重映射方法的流程图。
图6示出了图3、图4A、图4B和图5的方法的概要,如参考图2所示。
图7A和图7B示出了用于实现本文所描述的用于虚拟数据复制的过程和方法的示例分布式文件系统。
图8A和图8B示出了用于实现本文所描述的用于虚拟数据复制的过程和方法的示例块节点。
图9A至图9D示出了用于实现本文所描述的用于虚拟数据复制的过程和方法的示例多层系统。
具体实施方式
本文所讨论的系统和方法旨在实现分布式文件系统,并且更具体地,旨在实现一种分布式文件系统:在这种分布式文件系统中,在节点集群的块节点处的虚拟数据复制增强了由本地文件系统实现的垃圾收集过程的性能。
图1示出了根据本公开的示例实施例的计算系统100的架构图。计算系统100可以是云计算系统,该云计算系统可以提供服务器的集合,该服务器托管式存储资源和计算资源,以提供分布式文件系统、分布式计算和并行计算、物理的或虚拟的存储资源和计算机资源的改善的可用性、以及类似的益处。
计算系统100可以通过物理的或虚拟的服务器节点104的云网络102实现,所述物理的或虚拟的服务器节点104通过物理网络连接或虚拟网络连接来连接。此外,网络102可以终止于物理的或虚拟的边缘节点106,该物理的或虚拟的边缘节点106位于云网络102的物理边缘和/或逻辑边缘处。边缘节点106可以连接到任何数量的终端设备108。
可以在云网络102的节点集群112上实现分布式文件系统(“DFS”)。一些数量的节点集群112可以在一个或多个数据中心114处托管。每个数据中心114可以包括一些数量的服务器节点104,这些数量的服务器节点104在逻辑上组织成一些数量的节点集群112,其中,服务器节点104可以是云网络102的节点,或者可以是通过网络连接与云网络102通信的节点。
在DFS节点集群112内,该DFS节点集群112中的服务器节点104可以包括主节点116和多个块节点118。在DFS节点集群112处托管的DFS可以配置主节点116以及每个块节点118,以根据文件系统通信协议,通过任何数量的网络连接,各自与任何数量的终端设备108和与云网络102的任何数量的服务器节点104通信,该文件系统通信协议实现了提供文件操作调用的一个或多个应用编程接口(“API”)。文件操作调用包括例如API调用,该API调用使每个块节点118创建文件、删除文件、从文件读取、写入文件、重命名文件、将文件从文件系统层次结构(hierarchy)中的一个位置移动到该文件系统层次结构中的另一个位置等。
可以在每个DFS节点集群112处托管物理存储和/或虚拟存储(“托管式存储120”)。例如,可以在DFS节点集群112的一个或多个块节点118处托管物理存储和/或虚拟存储。数据可以被存储为预定大小的逻辑区块(block),这些逻辑区块可以各自被单独称为“块”。DFS可以一起配置块节点118,以创建每个单独数据块的多个副本,其中,单独的副本可以分布式地存储在多个块节点118上,提供了冗余并增加了在DFS节点集群112处存储的所有数据块的可用性。
DFS还可以配置每个块节点118,以在托管式存储120上执行存储器操作和磁盘操作。例如,块节点118可以被配置为:读取存储在托管式存储120上的数据、将数据写入托管式存储120、将数据从托管式存储120上的一个地址复制到托管式存储120上的另一个地址或者将数据从托管式存储120上的一个逻辑区块复制到托管式存储120上的另一个逻辑区块、将数据从托管式存储120上的一个地址移动到托管式存储120上的另一个地址或者将数据从托管式存储120上的一个逻辑区块移动到托管式存储120上的另一个逻辑区块,等等。如将在随后所描述的,可以由本地文件系统执行诸如磁盘操作之类的这些操作。
DFS还可以配置主节点116以存储元数据,该元数据与每个数据区块在块节点118中的位置有关。元数据可以提供如下二者之间的映射:根据(如由DFS所定义的)文件系统层次结构的文件;以及构成文件的每个数据区块,该文件包括如位于块节点118中的、每个数据区块的副本。
计算系统100还可以实现一个或多个存储服务。利用托管式存储120作为存储服务底层的存储资源,可以在计算系统100的任何数量的节点集群处以及在计算系统100中的任何数量的服务器节点处托管存储服务。可以至少部分地在不是作为DFS节点集群112的一部分的服务器节点104处托管存储服务,并且可以另外至少部分地在DFS节点集群112的一些服务器节点104处托管存储服务。例如,一个或多个存储服务可以包括:存储架构的各种实现方式,诸如例如区块设备服务、对象存储、分布式文件系统等;以及,本领域技术人员所知道的任何这种适当的数据存储实现方式,该数据存储实现方式受益于跨多个服务器节点分布的托管式存储。如将在随后所描述的,该一个或多个存储服务可以作为托管式服务提供给DFS节点集群112的客户端。
DFS还可以在DFS节点集群112处实现垃圾收集(“GC”)协调器进程。如将在随后所描述的,GC协调器进程可以为DFS和在该DFS中实现的一个或多个存储服务提供GC服务,以提高所述DFS和所述一个或多个存储服务对底层托管式存储的读写性能的效率。GC协调器进程可以在DFS节点集群112的一个或多个协调服务器节点上运行,诸如例如至少一个主节点116上运行,或者,GC协调器进程可以通常以任何合适的方式运行,使得运行GC协调器进程的一个或多个协调服务器节点可以与DFS节点集群112的任何数量的其他服务器节点通信,DFS节点集群112的每个其他服务器节点都运行GC工作进程。如将在随后所描述的,GC协调器进程可以作为托管式服务提供给DFS节点集群112的客户端。
如本文所描述的文件系统通信协议可以实现API,诸如可移植操作系统接口(“POSIX”)API、用户空间文件系统(“FUSE”)API、网络文件系统(“NFS”)API、表述性状态转移(“REST”)API等。
托管式存储120可以包括各种形式的计算机可读存储介质,这些计算机可读存储介质可以包括易失性存储器(例如随机存取存储器(“RAM”))和/或非易失性存储器(例如只读存储器(“ROM”)、闪存等)。计算机可读存储介质还可以包括附加的可移动存储和/或不可移动存储,该附加的可移动存储和/或不可移动存储包括但不限于闪存、磁存储、光存储和/或者带存储,该闪存、磁存储、光存储和/或者带存储可以提供计算机可读指令、数据结构、程序模块等的非易失性存储。
非暂时性计算机可读存储介质是计算机可读介质的示例。计算机可读介质包括至少两种类型的计算机可读介质,即计算机可读存储介质和通信介质。计算机可读存储介质包括易失性介质和非易失性介质、可移动介质和不可移动介质,这些介质在用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何过程或技术中实现。计算机可读存储介质包括但不限于相变存储器(“PRAM”)、静态随机存取存储器(“SRAM”)、动态随机存取存储器(“DRAM”)、其他类型的随机存取存储器(“RAM”)、只读存储器(“ROM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储器技术、光盘只读存储器(“CD-ROM”)、数字多功能盘(“DVD”)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者能够用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可以在诸如载波之类的调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所限定的,计算机可读存储介质不包括通信介质。
计算系统100可以包括任何数量的DFS节点集群112。每个DFS节点集群112可以实现为不同数据存储工作负载提供服务的单独DFS。每个DFS节点集群112的服务器节点104还可以托管负责不同计算工作负载的服务,这些服务可以生成要存储在文件系统节点集群112的块节点118处的数据。在不受限的情况下,托管式服务可以包括一个或多个存储服务和如上所描述的GC协调器进程。托管式服务可以通过网络连接被一些数量的终端设备108访问,在利用服务器节点104的计算资源来执行本地生成的计算任务时,这些终端设备108可以充当托管式服务的客户端。在针对服务器节点104执行的计算任务而利用DFS作为文件系统的扩展或整体时,这些服务器节点104反过来可以充当DFS节点集群112的客户端。
通过如上所描述的计算系统100的实现方式,包括一些数量的计算机可执行指令的计算任务可以本地源自终端设备108,终端设备108可以对DFS节点集群112的服务器节点104进行托管式服务API调用,使这些服务器节点104执行构成计算任务的计算机可执行指令。计算机可执行指令的执行可以配置服务器节点104,以对在主节点116和块节点118上实现的DFS进行文件操作API调用。通过对构成计算任务的计算机可执行指令进行执行而生成的数据然后可以以块的形式、以一些数量的副本的形式存储在块节点118处。
图2示出了根据本公开的示例实施例的DFS节点集群112的架构图。示出的是主节点116和一些数量的块节点118。每个块节点118存储一些数量的块202,其中,存储在单独的块节点118上的任何块可以是存储在其他单独的块节点118上的至少一些数量的其他块的副本。主节点116存储元数据204,该元数据204提供如下二者之间的映射:根据(如由DFS所定义的)文件系统层次结构的文件;以及构成文件的每个数据区块,该文件包括如位于块节点118中的、每个数据区块的副本。
DFS节点集群112的客户端206可以是执行如下操作的任何计算系统:该计算系统执行计算任务,并且利用DFS节点集群112的块节点118作为本地文件系统的扩展、利用DFS节点集群112的块节点118代替本地文件系统、以虚拟化本地文件系统的能力来利用DFS节点集群112的块节点118等。例如,客户端206可以是除DFS节点集群112的服务器节点之外的、云网络102的服务器节点104,或者可以是DFS节点集群112的、包括主节点116和块节点118在内的服务器节点104。
根据本公开的示例实施例,在DFS节点集群112处实现的DFS 212可以在逻辑上将文件组织为日志结构文件系统,其中,存储在DFS中的数据的每次修改可以被存储为诸如日志之类的顺序数据结构的头部的附加物(append)。因此,对DFS 212调用以执行其中修改数据的、任何类型的逻辑文件操作,可以使DFS文件系统将附加物写入这种顺序数据结构的头部,该附加物反映了通过文件操作所做的修改。
此外,每个块节点118可以被配置为执行磁盘操作,例如,读取存储在块节点118的本地存储210上的数据、将数据写入本地存储210、将数据从本地存储210上的一个地址复制到本地存储210上的另一个地址或者将数据从本地存储210上的一个逻辑区块复制到本地存储210上的另一个逻辑区块、将数据从本地存储210上的一个地址移动到本地存储210上的另一地址或者从将数据从本地存储210上的一个逻辑区块移动到本地存储210上的另一个逻辑区块,等等。每个这样的磁盘操作可以通过对相应块节点118的本地文件系统208的调用来执行。
根据本公开的示例实施例,块节点118的本地存储210可以包括托管式存储120的子集。
在反映写入文件系统的数据的更多当前版本时,将DFS文件系统实现为日志结构文件系统还可以使后续的附加物取代先前的附加物,使先前的附加物变得过时。因此,DFS节点集群112还可以实现垃圾收集(“GC”)协调器进程,该GC协调器进程控制DFS节点集群112处的GC工作进程。通常,GC是执行(如上所描述的)复制操作和移动操作的一种后台操作,以便通过将有效数据复制到新文件、将旧数据标记为无效并最终回收无效数据所占用的空间,来回收存储空间。GC协调器进程连同运行的GC工作进程可以遍历DFS 212的顺序数据结构,识别陈旧的附加物中的数据,并通过在陈旧的附加物所占用的存储空间内写入后续的附加物来回收陈旧的附加物占用的存储空间。GC工作进程通常可以由根据本公开的示例实施例的块节点作为后台进程来执行,该后台进程具有比如下更低的优先级:例如执行构成计算任务的计算机可执行指令、以及执行磁盘操作。在日志结构文件系统上建立的任何及所有存储服务可以依赖GC进程,以通过将有效数据复制到新文件、将旧数据标记为无效并最终回收无效数据所占用的空间,来回收存储空间,如后续所描述,这些存储服务为诸如区块设备服务、对象存储、分布式文件系统等,如上所描述的,但不限于此。
应当理解,虽然在服务器节点上运行的GC工作进程可以是后台进程,但是GC工作进程可以作为前台进程来运行,以便如上所描述地执行空间回收。因此,每次GC工作进程回收DFS 212的文件系统的空间时,在被称为线程阻塞的现象中,由运行GC工作进程的节点对其他指令的执行可能会被暂停,直到GC工作进程完成回收。跨DFS(包括跨各个块节点118)的存储空间的更高的利用率,通常与GC工作进程对空间进行更频繁的回收相关,导致更频繁地暂停正常的工作负载节点,以执行GC读取和GC写入。导致线程阻塞的这种专用GC计算工作负载是依赖GC工作进程的文件系统的特征,该GC工作进程诸如为日志结构文件系统的某些实现方式。
根据本公开的示例实施例的DFS的实现方式可以使GC协调器进程引起GC工作进程,以回收映射到存储在一个块节点上的数据的空间,该块节点对应于存储在其他块节点上的相同数据的副本。本领域技术人员将理解,DFS的实现方式可以使GC协调器进程能够协调多个块节点118,以将在存储的数据的副本之一处对该存储的数据的改变传播到块节点当中的相同数据的每个其他副本,使得DFS节点集群112的块节点当中所存储的相同数据的各个副本同步。为了理解本公开的示例实施例,本文不需要进一步详细描述多个数据副本的同步,除了需要注意:应用于由GC协调器进程协调的空间回收时的这种同步可以引起专用GC工作进程计算工作负载,并且可以引起跨网络的多个服务器节点的额外的计算工作负载,例如在一个服务器节点处读取数据,并经由如上所描述的文件系统通信协议发送消息,以使所读取的数据在一些数量的其他服务器节点处被写入。跨云网络的线程阻塞工作负载的这种传播可以导致性能大规模衰退。因此,如上所描述的,在常规操作过程中,在服务器节点104处托管的任何及所有存储服务可能遭受性能衰退。虽然GC名义上是后台进程,但是在操作中,GC可以将大量计算和网络资源从托管式存储服务转移走,特别是在容量利用率高的节点集群上倾向于这样做。因此,对于云计算和云服务供应商来说,服务质量(“QoS”)和提供服务的成本可能会受到不利影响。
此外,由日志结构文件系统执行的、诸如文件系统的逻辑区块的压缩、碎片整理和去重之类的其他数据操作,也可能引起在DFS节点集群112中跨数据的多个副本来传播同步操作时传播线程阻塞工作负载。
因此,基于如本文所描述的、在一些数量的DFS节点集群处实现DFS的计算系统,本公开的示例实施例提供了一种在DFS节点集群上虚拟数据复制及其同步的方法,以在本地文件系统处重映射逻辑区块。归因于实现此类虚拟数据复制方法,在DFS节点集群的服务器节点处托管的、如上所描述的任何及所有存储服务可以获得如下益处:减少的数据操作工作负载,以及减少的压缩、碎片整理和去重;这些益处的细节将在随后描述。
根据本公开的示例实施例,DFS节点集群的每个块节点处的托管式存储可以至少部分地使用任何合适的存储设备来实现,该任何合适的存储设备可被配置为将逻辑区块地址映射到磁盘地址(如将在随后描述的),诸如闪存。在服务器节点处并入的闪存可以通过本地文件系统提供逻辑区块寻址(“LBA”)重映射API调用。
根据本公开的示例实施例,重映射API调用可以在如本文所描述的各种API(诸如可移植操作系统接口(“POSIX”)API、用户空间文件系统(“FUSE”)API、网络文件系统(“NFS”)API、表述性状态转移(“REST”)API等)中实现。虽然可以从在计算系统的用户空间中运行的计算机可执行指令来调用重映射API调用,但是由重映射API调用所调用的指令(如将在随后描述的)可以在计算系统的内核空间中执行。
重映射API调用可以作用于托管式存储的存储控制器,该存储控制器可以实现闪存转换层(“FTL”),即托管式存储所在的块节点上的本地文件系统的子系统。FTL可以实现一映射,该映射为:诸如托管式存储中的块的逻辑地址之类的逻辑区块地址(“LBA”)到诸如闪存之类的底层存储设备的磁盘地址的映射。该映射可以被存储在索引图中,该索引图被存储在托管式存储底层的一个或多个存储设备的存储器中。尽管可以以与任何特定磁盘地址解耦的逻辑顺序来寻址LBA,但是每个LBA可以被映射到底层存储设备上的任何磁盘地址(该任何磁盘地址可以通过为闪存设备的寻址而建立的区块、页和扇区标识符等来识别)。FTL还可以实现LBA到不同磁盘地址的重映射,该不同磁盘地址诸如在闪存文件系统操作的正常过程中(例如,在本领域技术人员已知的闪存设备的磨损均衡的过程中,与特定LBA对应的底层数据理所当然地可能需要重定位到不同的磁盘地址)。
更一般地,重映射API可以作用于托管式存储的逻辑地址映射器。托管式存储可以由各种底层存储设备实现,不限于闪存;在这种其他情况下,存储设备仍然可以实现LBA到底层存储设备的磁盘地址的映射,磁盘地址符合本领域技术人员已知的任何磁盘寻址系统。这种映射可以在存储设备驱动器中、在存储设备固件上、在存储设备的物理控制器电路中的集成电路中等实现。为了本公开的示例实施例的目的,为了简洁起见,LBA到磁盘地址(包括如上给出的、但不限于FTL和每个其他示例)的映射的每种此类实现方式可以称为“逻辑地址映射器”。
根据本公开的示例实施例,在DFS节点集群处实现的DFS可以实现API,诸如可移植操作系统接口(“POSIX”)API、用户空间文件系统(“FUSE”)API、网络文件系统(“NFS”)API、表述性状态转移(“REST”)API等。这些API面对DFS节点集群的客户端,这些API可以提供抽象物,这些抽象物针对客户端隐藏底层托管式存储的物理和逻辑组织,以及针对客户端隐藏诸如重映射API之类的底层本地文件系统API。
图3示出了根据本公开的示例实施例的、可以调用虚拟数据复制方法的垃圾收集方法300的流程图。根据本公开的示例实施例,可以在DFS节点集群处托管的DFS处实现垃圾收集方法300。应当理解,虽然如随后所描述的,垃圾收集过程在DFS节点集群的服务器节点的后台中运行,但是如上所描述的一个或多个托管式存储服务的过程可以同时在任何数量的这些服务器节点的前台中运行。如上所描述的,存储服务的过程的这种前台执行可以引起磁盘操作,并且这些磁盘操作的执行(这些磁盘操作无需被进一步详细描述)可以满足以下条件:例如GC触发条件和复制阈值。因此,以下可以被称为存储服务的磁盘操作所调用的虚拟复制操作:如上所描述的,由于在存储服务的某些磁盘操作之后满足的复制阈值和GC触发条件,而执行的后续步骤。
在步骤302,触发垃圾收集(“GC”)工作进程,以通过满足GC协调器进程检测到的GC触发条件而唤醒,该GC工作进程在分布式文件系统(“DFS”)节点集群的服务器节点上运行。
如上所描述的,GC协调器进程可以在DFS节点集群的一个或多个协调服务器节点(例如,在至少一个主节点)上运行,或者,GC协调器进程可以通常以如下任何合适的方式运行:使得运行GC协调器进程的一个或多个协调服务器节点可以与DFS节点集群的任何数量的其他服务器节点通信,DFS节点集群112的每个其他服务器节点都运行GC工作进程。
GC工作进程同样可以在DFS节点集群的一个或多个服务器节点上运行,并且可以在线程中运行,该线程在休眠状态下作为后台线程在服务器节点上运行。
GC触发条件的满足可以反映在数据的构成(composition)中,该数据的构成附加到如由日志结构文件系统实现的、诸如日志之类的顺序数据结构。例如,一旦顺序数据结构中陈旧的附加物与非陈旧的附加物的比率超过比例阈值,则可以满足GC触发条件。此外,GC触发条件可以基于诸如比率这样的构成,这些构成是跨DFS节点集群的大多数或所有服务器节点测量到的,并且被求和、求平均、归一化或以其他方式聚合,以反映DFS节点集群的托管式存储处的数据的总体构成。GC协调器进程可以监视跨大多数或所有服务器节点的数据的构成,以确定是否满足GC触发条件。
GC协调器进程然后可以跨DFS节点集群的一个或多个网络连接发送信号,其中该信号可以是例如内核级系统调用,该内核级系统调用用于触发运行GC工作进程的线程以唤醒。
在步骤304,GC工作进程确定顺序数据结构的第一数据范围和第二数据范围。
在DFS处,GC工作进程可以遍历由DFS文件系统(例如日志结构文件系统)实现的顺序数据结构,并且针对该顺序数据结构内的每个连续的数据范围(应当理解,关于顺序数据结构的连续的数据范围是指顺序数据结构中的连续的逻辑区块地址,这些连续的逻辑区块地址被映射到对应的磁盘地址,所述对应的磁盘地址不一定是连续的),确定该连续的数据范围是否小于或大于虚拟复制阈值。可以将每个较小的连续的数据范围确定为要复制的数据的第一数据范围,并且可以将每个这样的数据范围记录在第一列表数据结构中。可以将每个较大的连续的数据范围确定为要虚拟复制的数据的第二数据范围,并且可以将每个这样的数据范围记录在第二列表数据结构中。
虚拟复制阈值可以是例如数千字节的大小。
GC工作进程可以在协调服务器节点上运行的GC协调器进程的协调下,通过跨DFS节点集群的一个或多个网络连接发送的一个或多个信号来执行步骤304。
在步骤306,GC工作进程创建新的顺序数据结构,并向该新的顺序数据结构复制每个第一数据范围的数据。
GC工作进程创建诸如新日志之类的新的顺序数据结构,以便将非陈旧的附加数据重新组织到压缩的、非碎片化范围的磁盘地址。以这种方式,在复制完成之后,可以完全释放和回收包含陈旧的附加数据在内的整个先前的顺序数据结构。
然而,出现两种类型的复制操作,包括根据本公开的示例实施例的“虚拟复制”操作。应当理解,与实际复制操作相比,虚拟复制不需要执行诸如读操作和写操作之类的数据操作。相反,执行虚拟复制操作,以在新的顺序数据结构中为要虚拟复制的数据的第二数据范围建立逻辑区块地址(“LBA”),而不将数据本地复制到顺序数据结构,该逻辑区块地址被映射到所述要虚拟复制的数据实际所在的磁盘地址。
通过在新的顺序数据结构的至少一部分上调用虚拟复制而不是正常复制操作,根据本公开的示例实施例的GC工作进程可以避免在托管DFS节点集群的云网络上出现大量线程阻塞工作负载。连续的数据范围越大,第二数据范围中的至少一些第二数据范围越可能涉及在DFS节点集群的其他块节点上非本地存储的要虚拟复制的数据。因此,应该虚拟复制较大的连续的数据范围,而不是正常复制较大的连续的数据范围,以使这种统计可能性的性能影响最小化。
GC工作进程可以在协调服务器节点上运行的GC协调器进程的协调下,通过跨DFS节点集群的一个或多个网络连接发送的一个或多个信号来执行步骤306。
在步骤308,GC工作进程将每个第二数据范围、先前的顺序数据结构和新的顺序数据结构传递给DFS API的虚拟复制操作调用作为参数。
不是在块节点的本地文件系统中实现虚拟复制操作,而是可以在DFS级别下实现虚拟复制操作,使得虚拟复制操作可以在块节点间的基础上被执行,同时针对本地文件系统隐藏块节点间磁盘操作和网络通信。后续将参考图4A和图4B进一步详细描述虚拟复制操作,并且可以对GC工作进程隐藏虚拟复制操作的细节。
GC工作进程可以在协调服务器节点上运行的GC协调器进程的协调下,通过跨DFS节点集群的一个或多个网络连接发送的一个或多个信号来执行步骤308。
在步骤310,GC工作进程基于虚拟复制操作调用来获得与每个第二数据范围对应的逻辑地址。
如后续参考图5所描述的,GC工作进程例如可以基于逻辑地址映射器返回的目的地LBA获得逻辑地址。另选地,GC工作进程可以将不同的逻辑地址映射到逻辑地址映射器返回的目的地LBA。另选地,GC工作进程可以分配逻辑地址而不是目的地LBA,以对应于每个第二数据范围。
通过接收此输出,GC工作进程可以将虚拟复制操作理解为已完成。
GC工作进程可以通过跨DFS节点集群的一个或多个网络连接发送的一个或多个信号将与每个第二数据范围对应的、获得的逻辑地址传送给在协调服务器节点上运行的GC协调器进程。
在步骤312,GC协调器进程向DFS节点集群的主节点通知新的顺序数据结构。
GC协调器进程可以根据如上所描述的文件系统通信协议与主节点通信,并且GC协调器进程可以调用DFS API调用来配置主节点,以更新依照文件系统层次结构的文件与构成文件的每个数据区块之间的映射,使得文件被映射到新的顺序数据结构的区块而不是先前的顺序数据结构的区块。
因为第一数据范围和第二数据范围所描述的数据现在最可能对应于不同的磁盘地址,所以主节点还可以更新第一数据范围的索引和第二数据范围的索引。可以通过依次读取写入顺序数据结构的附加物的磁盘地址,来更新第一数据范围的索引。可以基于从根据步骤310的虚拟复制操作调用返回的磁盘地址,来更新第二数据范围的索引。
随后,DFS参考新的顺序文件结构在DFS节点集群处处理后续的文件操作。根据存储在主节点处的元数据,附加到新的顺序文件结构的后续文件写入可以指向在块节点的托管式存储处存储的块的磁盘操作。
随后,GC工作进程可以回收与先前的顺序文件结构对应的逻辑地址作为空闲空间。根据本领域技术人员已知的垃圾收集技术,可以针对新文件操作回收这样的逻辑地址。
图4A和图4B示出了根据本公开的示例实施例的虚拟数据复制方法400的流程图。
在步骤402,在分布式文件系统节点集群处托管的分布式文件系统接收虚拟复制操作调用,该虚拟复制操作调用具有数据范围、源数据结构和目的地数据结构作为参数。
虚拟复制操作调用可以是参考图3在步骤308中进行的调用。数据范围可以是GC工作进程传递的第二数据范围中的任何第二数据范围;源数据结构可以是GC工作进程传递的先前的顺序数据结构(将在虚拟复制操作调用之后被回收),并且目的地数据结构可以是新的顺序数据结构。
根据本公开的示例实施例,数据范围可以识别要至少由源数据结构虚拟复制的数据的范围、要开始复制的字节偏移以及要复制的数据的字节长度。
根据本公开的示例实施例,源数据结构应该包括一些数量的顺序附加物,诸如日志条目;每个这样的顺序附加物应该是可读的,但是在传递给虚拟复制操作调用之前,应该关闭每个这样的顺序附加物,以防止进一步写入。
根据本公开的示例实施例,目的地数据结构应该包括对写入操作开放的、诸如日志之类的至少一个顺序数据结构。
为了理解本公开的示例实施例的目的,假设数据范围、源数据结构和目的地数据结构根据上述特征是各自有效的,并且没有涉及无效地址、对写入未开放的目的地等。
在步骤404,DFS从DFS节点集群的主节点检索映射元数据,该映射元数据包括从源数据结构到在DFS节点集群的多个块节点上存储的区块的映射。
如本文所描述的映射元数据可以与每个数据区块在DFS节点集群的块节点中的位置有关。例如,数据区块可以是如上所描述的块。映射元数据可以提供如下二者之间的映射:根据(如由DFS所定义的)文件系统层次结构的文件;以及构成文件的每个数据区块,该文件包括如位于块节点中的、每个数据区块的副本。
根据本公开的示例实施例,传递给虚拟复制操作调用的一个或多个第二数据范围在字节大小方面足够大,使得所述一个或多个第二数据范围期望映射到跨多于一个的块节点存储的区块。因此,为了避免跨DFS节点集群的线程阻塞工作负载,根据本公开的示例实施例的虚拟复制操作可以对映射区块执行虚拟复制,而不是对映射区块进行正常复制,以写入目的地数据结构。
基于映射元数据,针对有效性可以检查虚拟复制操作调用的参数,诸如数据范围、源数据结构和目的地数据结构。在任何有效性检查失败的情况下,DFS都可以使虚拟复制操作调用返回失败。
在步骤406,DFS定位存储在块节点处的、源数据结构的区块。
可以以这种方式跨任何数量的块节点来定位源数据结构的每个区块。每个块节点可以存储一个或多个这样定位区块。
在步骤408,DFS将数据范围划分为多个逻辑地址片段,每个逻辑地址片段对应于在块节点上存储的定位区块。
每个逻辑地址片段包括与在一个块节点上存储的定位区块对应的数据范围内的连续地址范围。这些块节点可以相同或可以不同。如果在数据范围中找到多个单独的连续地址范围,则每个连续地址范围对应于在同一块节点上存储的定位区块,则每个这样的连续地址区域可以是不同的逻辑地址片段。
在步骤410,DFS将具有逻辑地址片段参数的复制命令转发到存储有对应定位区块的块节点。
复制命令可以是例如支持节点间消息传递的协议中的、由DFS API实现的命令。例如,复制命令可以是由DFS API(诸如POSIX、FUSE、NFS等)根据远程过程调用(“RPC”)协议的任何实现方式的命令。根据本公开的示例实施例,应当在每个块节点处实现对协议的支持。
在步骤412,块节点接收具有逻辑地址片段参数的复制命令,并在块节点的托管式存储上将逻辑地址片段转换为源逻辑区块地址(“LBA”)。
以此方式,位于块节点的托管式存储处的一个或多个LBA(即,根据块节点的实现方式的块)被识别为源LBA,将从该源LBA执行虚拟复制。块节点可以在源列表数据结构中记录对源LBA的转换引用。每个源LBA可以包括对每个逻辑地址片段内的如上所描述的每个定位区块的引用,即,每个区块大小对齐的数据区块包含要复制的源数据。
如上所描述的,LBA可以由在块节点的托管式存储上实现的逻辑地址映射器映射到磁盘地址。然而,不需要在知道到磁盘地址的映射的情况下,执行逻辑地址片段到LBA的转换。
在步骤414,块节点在与源LBA对应的、块节点的托管式存储上保留目的地LBA。
每个目的地LBA可以是由在块节点的托管式存储上实现的逻辑地址映射器映射到空闲磁盘空间的任何LBA。正如块节点在源列表数据结构中记录对源LBA的引用一样,块节点可以在目的地列表数据结构中记录对目的地LBA的引用。
在步骤416,块节点将与对目的地LBA的引用配对的对源LBA的引用传递给块节点的托管式存储的逻辑地址映射器的重映射调用。
可以根据如上所描述的重映射API调用进行重映射调用。如上所描述的逻辑地址映射器可以实现如下的映射:诸如托管式存储中块的逻辑地址之类的LBA到诸如闪存之类的底层存储设备的磁盘地址的映射。因此,逻辑地址映射器可以通过确定映射到源LBA的磁盘地址并且将磁盘地址重映射到目的地LBA,来执行根据本公开的示例实施例的重映射操作,从较高级进程(诸如DFS)的角度实现了“虚拟复制”,而实际上不对托管式存储底层的存储设备上的数据进行重定位。随后参考图5给出执行重映射操作的逻辑地址映射器的细节。
逻辑地址映射器可以随后根据如下所描述的图5的方法将目的地LBA返回到块节点。
在步骤418,块节点将目的地LBA写入块节点的重映射区块。
可以将目的地LBA写入块节点的现有区块或块节点的新区块。不管怎样,作为虚拟复制操作的结果,重映射区块取代如上所描述的先前定位的区块。
在步骤420,块节点将重映射区块返回到DFS。
在步骤422,DFS合并从块节点接收到的重映射区块,以形成目的地数据结构和新的映射元数据。
可以按逻辑地址顺序来组织所接收到的区块,以形成逻辑地址片段,该逻辑地址片段可以被重构以形成目的地数据结构。基于该合并,可以生成新的映射元数据,该新的映射元数据包括从目的地数据结构到存储在DFS节点集群的多个块节点(这些块节点是返回重映射区块的块节点)上的区块的映射。
在步骤424,DFS响应于虚拟复制操作调用,返回新的映射元数据。
新的映射元数据可以提供与来自虚拟复制操作调用的每个第二数据范围对应的逻辑地址,如上参考图3所描述的。因此,图3的方法可以从此继续。
图5示出了根据本公开的示例实施例的、在块节点的托管式存储的逻辑地址映射器处执行的重映射方法500的流程图。
在步骤502,块节点的托管式存储的逻辑地址映射器接收重映射调用,该重映射调用具有与对目的地LBA的引用配对的对源逻辑区块地址(“LBA”)的引用作为参数。
重映射调用可以是参考图4B在步骤416中进行的调用。
为了理解本公开的示例实施例的目的,假设针对托管式存储的区块地址,对源LBA的引用和对目的地LBA的引用都是有效的,并且没有涉及无效地址;并且,在没有任何LBA出现多于一次的情况下,对源LBA的引用和对目的地LBA的引用各自在操作调用中传递的参数内都是唯一的。
逻辑地址映射器可以通过按顺序为每个重映射调用分配序列号,来识别多个重映射调用。
逻辑地址映射器可以将每个源LBA-目的地LBA配对存储在存储器中。
在步骤504,逻辑地址映射器将目的地LBA映射到一磁盘地址,该磁盘地址被映射到与该目的地LBA配对的源LBA。
基于对源LBA的引用,逻辑地址映射器可以通过如下方式来确定源LBA已经映射到的磁盘地址:根据如上所描述的一个或多个存储设备的存储器中所存储的索引图,查找对源LBA的引用。根据本公开的示例实施例,如本文所述的重映射操作寻求将磁盘地址映射到配对的目的地LBA而不是源LBA,从而替换源LBA。
在步骤506,逻辑地址映射器将目的地LBA到托管式存储的磁盘地址的映射写入。
可以将目的地LBA到磁盘地址的每个映射写入磁盘,使得在中断或电力循环的情况下保持重映射操作的一致性。(根据本领域技术人员已知的数据交易保证,诸如原子性、一致性、隔离性和持久性(“ACID”),本上下文中的一致性可以确保例如单个条目将是有效的并且将反映每个先前条目。)每个这样的映射可以作为条目被写入作为本地文件系统实现的本地磁盘日志。
在步骤508,逻辑地址映射器将目的地LBA到磁盘地址的映射提交给托管式存储的文件系统。
例如,在将每个映射作为条目写入本地磁盘日志的情况下,逻辑地址映射器可以通过进一步记录在已记录的映射之后的提交区块,来提交每个已记录的映射。根据本地文件系统的磁盘日志实现方式,提交区块可以包含任何标准化数据,该磁盘日志实现方式指示在系统故障之后,提交区块之前的所有条目将不会被恢复。(根据本领域技术人员已知的数据交易保证,诸如ACID,本上下文中的原子性可以确保不会部分地执行重映射的各个条目,使得在系统故障的情况下不会在部分状态下提交重映射。)
在步骤510,逻辑地址映射器利用目的地LBA到磁盘地址的映射,来更新托管式存储的索引图。
由于重映射操作的结果现在已经被提交到托管式存储,因此可以安全地更新索引图,以丢弃从源LBA到磁盘地址的过时映射。如本领域技术人员已知的那样实现的TRIM操作可以随后应用于响应于存储空间需要而被擦除的那些区块。
在步骤508之后但在步骤510之前发生系统故障的情况下,根据本地文件系统中的磁盘日志的实现方式,可以重新播放已被写入每个映射的日志,以重建要对索引图进行的更新。
逻辑地址映射器可以随后向块节点返回目的地LBA,指示重映射操作的成功。
在步骤512,逻辑地址映射器可以将索引图写入检查点日志。
可以在任何时间写入索引图或者以任何给定间隔周期性地写入索引图,以建立对已完成的最新重映射调用的引用。例如,如上所描述的,可以将索引图与序列号相关联地写入检查点日志。在目的地LBA到写入托管式存储的磁盘地址的任何映射都具有比检查点日志中的最新的序列号低的序列号的情况下,可以在提交写入托管式存储的映射之前,通过垃圾收集丢弃这些映射。
图6示出了图3、图4A、图4B和图5的方法的概要,如参考图2所示的。
如以上图2中所示,根据本公开的示例实施例的DFS节点集群112包括主节点116和一些数量的块节点118。每个块节点118存储一些数量的块202,其中存储在单独块节点118上的任何块可以是存储在其他单独块节点118上的至少一些数量的其他块的副本。该主节点116存储元数据204,该元数据204提供了如下二者之间的映射:根据(如由DFS所定义的)文件系统层次结构的文件;以及构成文件的每个数据区块,该文件包括如位于块节点118中的、每个数据区块的副本。
DFS节点集群112的客户端206可以是进行如下操作的任何计算系统:执行计算任务,并且利用DFS节点集群112的块节点118作为本地文件系统的扩展、利用DFS节点集群112的块节点118代替本地文件系统、以虚拟化本地文件系统的能力利用DFS节点集群112的块节点118等。例如,客户端206可以是除DFS节点集群112的服务器节点之外的、云网络102的服务器节点104,或者可以是DFS节点集群的、包括主节点116和块节点118在内的服务器节点104。
每个块节点118可以被配置为:执行磁盘操作,诸如读取存储在托管式存储120上的数据、将数据写入托管式存储120、将数据从托管式存储120上的一个地址复制到托管式存储120上的另一个地址或者将数据从托管式存储120上的一个逻辑区块复制到托管式存储120上的另一个逻辑区块、将数据从托管式存储120上的一个地址移动到托管式存储120上的另一地址或者从将数据从托管式存储120上的一个逻辑区块移动到托管式存储120上的另一个逻辑区块,等等。每个这样的磁盘操作可以通过对相应的块节点118的本地文件系统208的调用来执行。
根据本公开的示例实施例,在DFS节点集群112处实现的DFS可以在逻辑上将文件组织为日志结构文件系统,其中,存储在DFS中的数据的每次修改都可以被存储为对诸如日志之类的顺序数据结构的头部的附加物。因此,对DFS进行调用以执行其中数据被修改的任何类型的逻辑文件操作,可以使DFS将附加物写入这种顺序数据结构的头部,该附加物反映了通过文件操作所做的修改。
在反映写入文件系统的数据的更多当前版本时,将DFS实现为日志结构文件系统还可以使后续的附加物取代先前的附加物,使先前的附加物变得过时。因此,DFS还可以实现在DFS节点集群112处控制GC工作进程的垃圾收集(“GC”)协调器进程。GC协调器进程连同运行的GC工作进程可以遍历DFS 212的顺序数据结构,识别陈旧的附加物中的数据,并通过在空间内写入后续的附加物来回收陈旧的附加物所占用的存储空间。GC工作进程通常可以由根据本公开的示例实施例的服务器节点执行为后台进程,该后台进程执行磁盘操作,并且具有比例如执行构成计算任务的计算机可执行指令低的优先级。
如以上图3中所示,基于GC触发条件的满足,在DFS节点集群112的服务器节点104上运行的GC工作进程被协调服务器节点上运行的GC协调器进程触发以唤醒。GC工作进程在分布式文件系统212处确定顺序数据结构602的第一数据范围604和第二数据范围606。GC工作进程创建新的顺序数据结构608,并向该新的顺序数据结构608复制每个第一数据范围604的数据。GC工作进程将每个第二数据范围606、先前的顺序数据结构602和新的顺序数据结构608传递给DFS API的虚拟复制操作调用作为参数。
接下来,在DFS节点集群112处托管的分布式文件系统212接收虚拟复制操作调用,该虚拟复制操作调用具有数据范围610、源数据结构612和目的地数据结构614作为参数。DFS从DFS节点集群112的主节点116检索映射元数据204,该映射元数据204包括从源数据结构612到在DFS节点集群112的多个块节点118上存储的区块的映射。DFS定位存储在块节点118处的、源数据结构的区块。DFS将数据范围610划分为多个逻辑地址片段616,每个逻辑地址片段616对应于在块节点118上存储的定位区块618。DFS将具有逻辑地址片段参数的复制命令转发到存储有对应定位区块618的块节点118。
接下来,块节点118接收具有逻辑地址片段616参数的复制命令,并在块节点118的托管式存储120上将逻辑地址片段616转换为源逻辑区块地址(“源LBA 620”)。块节点在与源LBA 620对应的、块节点118的托管式存储120上保留目的地LBA 622。块节点118将与对目的地LBA 622的引用配对的对源LBA 620的引用传递给块节点118的托管式存储120的逻辑地址映射器624的重映射调用。
接下来,块节点118的托管式存储120的逻辑地址映射器624接收重映射调用,该重映射调用具有与对目的地LBA 622的引用配对的对源LBA 620的引用作为参数。逻辑地址映射器将目的地LBA 622映射到一磁盘地址628,该磁盘地址628被映射到与目的地LBA 622配对的源LBA 620。逻辑地址映射器将目的地LBA 622到托管式存储120的磁盘地址628的映射写入。逻辑地址映射器将目的地LBA 622到磁盘地址628的映射提交给托管式存储120的本地文件系统208。逻辑地址映射器利用目的地LBA 622到磁盘地址628的映射,来更新托管式存储120的索引图630。逻辑地址映射器将索引图630写入检查点日志。
接下来,块节点118将目的地LBA 622写入块节点118的重映射区块626。块节点118将重映射区块626返回到DFS。
接下来,DFS合并从块节点118接收到的重映射区块626,以形成目的地数据结构614和新的映射元数据632。DFS响应于虚拟复制操作调用,返回新的映射元数据632。
接下来,GC工作进程基于虚拟复制操作调用来获得与每个第二数据范围606对应的逻辑地址。GC协调器进程向DFS节点集群112的主节点116通知新的顺序数据结构608。
图7A和图7B示出了用于实现以上所描述的、虚拟数据复制的过程和方法的示例分布式文件系统700。
本文所描述的技术和机制可以由系统700的多个实例以及任何其他计算设备、系统和/或环境来实现。系统700可以是本领域技术人员已知的提供物理计算资源或虚拟计算资源的单个计算系统或边缘主机。其示例包括如本文所描述的DFS节点集群的至少一个节点。图7A和图7B中所示的系统700仅是系统的一个示例,并不旨在对用于执行以上所描述的进程和/或过程的任何计算设备的使用范围或功能提出任何限制。可适合于与实施例一起使用的其他公知的计算设备、系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、游戏控制台、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境、使用现场可编程门阵列(“FPGA”)和专用集成电路(“ASIC”)的实现方式等。
系统700可以包括一个或多个处理器702以及在通信上联接到(多个)处理器702的系统存储器704。(多个)处理器702和系统存储器704可以是物理的,或者可以是虚拟化的和/或分布式的。(多个)处理器702可以执行一个或多个模块和/或进程,以使(多个)处理器702执行各种功能。在实施例中,(多个)处理器702可以包括中央处理单元(“CPU”)、图形处理单元(“GPU”)、CPU和GPU两者、或者本领域已知的其他处理单元或组件。另选地,(多个)处理器702中的每个处理器可以拥有该处理器自己的本地存储器,该本地存储器还可以存储程序模块、程序数据和/或一个或多个操作系统。
取决于系统700的确切配置和类型,系统存储器704可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存、微型硬盘驱动器、存储器卡等)、或者它们的一些组合。系统存储器704可以包括可由(多个)处理器702执行的一个或多个计算机可执行模块706。
模块706可以包括但不限于调用接收模块708、元数据检索模块710、区块定位模块712、范围划分模块714、命令转发模块716、区块合并模块718、元数据返回模块720和垃圾收集模块722。垃圾收集模块722可以被存储在同一系统700上作为上述模块的其余部分,或者可以被存储在系统700的不同实例上。垃圾收集模块722还可以包括唤醒子模块724、范围确定子模块726、数据结构创建子模块728、操作调用传递子模块730、地址接收子模块732和主通知子模块734。
调用接收模块708可以被配置为如上参考图4A和图4B所描述的,接收虚拟复制操作调用。
元数据检索模块710可以被配置为如上参考图4A和图4B所描述的,从DFS节点集群的主节点检索映射元数据。
区块定位模块712可以被配置为如上参考图4A和图4B所描述的,定位存储在块节点处的、源数据结构的区块。
范围划分模块714可以被配置为如上参考图4A和图4B所描述的,将数据范围划分为多个逻辑地址片段。
命令转发模块716可以被配置为如上参考图4A和图4B所描述的,将复制命令转发到块节点。
区块合并模块718可以被配置为如上参考图4A和图4B所描述的,合并从块节点接收到的重映射区块。
元数据返回模块720可以被配置为如上参考图4A和图4B所描述的,响应于虚拟复制操作调用,返回新的映射元数据。
唤醒子模块724可以被配置为如上参考图3所描述的,唤醒GC工作线程。
范围确定子模块726可以被配置为如上参考图3所描述的,在本地文件系统处确定顺序数据结构的第一数据范围和第二数据范围。
数据结构创建子模块728可以被配置为如上参考图3所描述的,创建新的顺序数据结构。
操作调用传递子模块730可以被配置为如上参考图3所描述的,传递虚拟复制操作调用。
地址接收子模块732可以被配置为如上参考图3所描述的,接收逻辑地址。
主通知子模块734可以被配置为如上参考图3所描述的,通知主节点。
系统700还可以包括输入/输出(I/O)接口740和通信模块750,该通信模块750使得系统700能够通过网络(诸如以上参考图1所描述的云网络)与其他系统和设备通信。网络可以包括互联网、诸如有线网络或直接有线连接之类的有线媒介、以及诸如声学、射频(“RF”)、红外和其他无线媒介之类的无线媒介。
如上所描述的方法的一些或所有操作能够通过执行存储在计算机可读存储介质上的、如下所定义的计算机可读指令来执行。如在说明书和权利要求中使用的术语“计算机可读指令”包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。计算机可读指令能够在各种系统配置上实现,这些系统配置包括单处理器系统或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的系统、可编程消费电子产品、它们的组合等。
计算机可读存储介质可以包括易失性存储器(诸如随机存取存储器(“RAM”))和/或非易失性存储器(诸如只读存储器(“ROM”)、闪存等)。计算机可读存储介质还可以包括附加的可移动存储和/或不可移动存储,该附加的可移动存储和/或不可移动存储包括但不限于闪存、磁存储、光存储和/或者带存储,该闪存、磁存储、光存储和/或者带存储可以提供计算机可读指令、数据结构、程序模块等的非易失性存储。
非暂时性计算机可读存储介质是计算机可读介质的示例。计算机可读介质包括至少两种类型的计算机可读介质,即计算机可读存储介质和通信介质。计算机可读存储介质包括易失性的和非易失性的介质、可移动的和不可移动的介质,这些介质在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何过程或技术中实现。计算机可读存储介质包括但不限于相变存储器(“PRAM”)、静态随机存取存储器(“SRAM”)、动态随机存取存储器(“DRAM”)、其他类型的随机存取存储器(“RAM”)、只读存储器(“ROM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储器技术、光盘只读存储器(“CD-ROM”)、数字多功能盘(“DVD”)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者能够用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可以在已调制的数据信号(诸如载波)或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机可读存储介质不包括通信介质。
在一个或多个非暂时性计算机可读存储介质上存储的计算机可读指令,当由一个或多个处理器执行时,可执行如上参考图1至图6所描述的操作。通常,计算机可读指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且能够以任何顺序和/或并行地对任何数量的所描述的操作进行组合,以实现过程。
图8A和图8B示出了用于实现以上所描述的、虚拟数据复制的过程和方法的示例服务器节点系统800。
本文所描述的技术和机制可以由系统800的多个实例以及任何其他计算设备、系统和/或环境来实现。系统800可以是本领域技术人员已知的提供物理计算资源或虚拟计算资源的单个计算系统或边缘主机。其示例包括如本文所描述的DFS节点集群的至少一个节点。图8A和图8B中所示的系统800仅是系统的一个示例,并不旨在对用于执行以上所描述的进程和/或过程的任何计算设备的使用范围或功能提出任何限制。可适合于与实施例一起使用的其他公知的计算设备、系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、游戏控制台、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境、使用现场可编程门阵列(“FPGA”)和专用集成电路(“ASIC”)的实现方式等。
系统800可以包括一个或多个处理器802以及在通信上联接到(多个)处理器802的系统存储器804。(多个)处理器802和系统存储器804可以是物理的,或者可以是虚拟化的和/或分布式的。(多个)处理器802可以执行一个或多个模块和/或进程,以使(多个)处理器802执行各种功能。在实施例中,(多个)处理器802可以包括中央处理单元(“CPU”)、图形处理单元(“GPU”)、CPU和GPU两者、或者本领域已知的其他处理单元或组件。另选地,(多个)处理器802中的每个处理器可以拥有该处理器自己的本地存储器,该本地存储器还可以存储程序模块和程序数据。
取决于系统800的确切配置和类型,系统存储器804可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存、微型硬盘驱动器、存储卡等)、或者它们的一些组合。系统存储器804可以包括可由(多个)处理器802执行的一个或多个计算机可执行模块806。
模块806可以包括但不限于块节点模块808和逻辑地址映射器模块810。块节点模块808可以包括命令接收子模块812、保留子模块814、重映射调用传递子模块816、区块写入子模块818和区块返回子模块820。逻辑地址映射器模块810可以包括调用接收子模块822、映射子模块824、映射写入子模块826、映射提交子模块828、索引图更新子模块830和索引图写入子模块832。
命令接收子模块812可以被配置为如上参考图4A和图4B所描述的,接收复制命令。
保留子模块814可以被配置为如上参考图4A和图4B所描述的,在托管式存储上保留目的地LBA。
重映射调用传递子模块816可以被配置为如上参考图4A和图4B所描述的,将与对目的地LBA的引用配对的对源LBA的引用传递给重映射调用。
区块写入子模块818可以被配置为如上参考图4A和图4B所描述的,将目的地LBA写入重映射区块。
区块返回子模块820可以被配置为如上参考图4A和图4B所描述的,将重映射区块返回到DFS。
调用接收子模块822可以被配置为如上参考图5所描述的,接收重映射调用,该重映射调用具有与对目的地LBA的引用配对的对源LBA的引用。
映射子模块824可以被配置为如上参考图5所描述的,将目的地LBA映射到一磁盘地址,该磁盘地址被映射到与目的地LBA配对的源LBA。
映射写入子模块826可以被配置为如上参考图5所描述的,将目的地LBA到磁盘地址的映射写入托管式存储。
映射提交子模块828可以被配置为如上参考图5所描述的,将目的地LBA到磁盘地址的映射提交给托管式存储的本地文件系统。
索引图更新子模块830可以被配置为如上参考图5所描述的,利用目的地LBA到磁盘地址的映射,来更新托管式存储的索引图。
索引图写入子模块832可以被配置为如上参考图5所描述的,将索引图写入检查点日志。
系统800还可以包括输入/输出(I/O)接口840和通信模块850,该通信模块850使得系统800能够通过网络(诸如以上参考图1所描述的云网络)与其他系统和设备通信。网络可以包括互联网、诸如有线网络或直接有线连接之类的有线媒介、以及诸如声学、射频(“RF”)、红外和其他无线媒介之类的无线媒介。
如上所描述的方法的一些或所有操作能够通过执行存储在计算机可读存储介质上的、如下所定义的计算机可读指令来执行。如在说明书和权利要求中使用的术语“计算机可读指令”包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。计算机可读指令能够在各种系统配置上实现,这些系统配置包括单处理器系统或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的系统、可编程消费电子产品、它们的组合等。
计算机可读存储介质可以包括易失性存储器(诸如随机存取存储器(“RAM”))和/或非易失性存储器(诸如只读存储器(“ROM”)、闪存等)。计算机可读存储介质还可以包括附加的可移动存储和/或不可移动存储,该附加的可移动存储和/或不可移动存储包括但不限于闪存、磁存储、光存储和/或者带存储,该闪存、磁存储、光存储和/或者带存储可以提供计算机可读指令、数据结构、程序模块等的非易失性存储。
非暂时性计算机可读存储介质是计算机可读介质的示例。计算机可读介质包括至少两种类型的计算机可读介质,即计算机可读存储介质和通信介质。计算机可读存储介质包括易失性的和非易失性的介质、可移动的和不可移动的介质,这些介质在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何过程或技术中实现。计算机可读存储介质包括但不限于相变存储器(“PRAM”)、静态随机存取存储器(“SRAM”)、动态随机存取存储器(“DRAM”)、其他类型的随机存取存储器(“RAM”)、只读存储器(“ROM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储器技术、光盘只读存储器(“CD-ROM”)、数字多功能盘(“DVD”)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者能够用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可以在已调制的数据信号(诸如载波)或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机可读存储介质不包括通信介质。
在一个或多个非暂时性计算机可读存储介质上存储的计算机可读指令,当由一个或多个处理器执行时,可执行如上参考图1至图6所描述的操作。通常,计算机可读指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且能够以任何顺序和/或并行地对任何数量的所描述的操作进行组合,以实现过程。
图9A至图9D示出了用于实现以上所描述的、虚拟数据复制的过程和方法的示例多层系统900。
本文中所描述的、在分布式文件系统700和服务器节点系统800上实现的技术和机制可以各自在多层系统900的实例上实现,导致在同一系统上实现由分布式文件系统700和服务器节点800概念化的每“层”功能。系统900可以是本领域技术人员已知的提供物理计算资源或虚拟计算资源的单个计算系统或边缘主机。其示例包括如本文所描述的DFS节点集群的至少一个节点。图9A至9D中所示的系统900仅是系统的一个示例,并不旨在对用于执行以上所描述的进程和/或过程的任何计算设备的使用范围或功能提出任何限制。可适合于与实施例一起使用的其他公知的计算设备、系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、游戏控制台、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境、使用现场可编程门阵列(“FPGA”)和专用集成电路(“ASIC”)的实现方式等。
系统900可以包括一个或多个处理器902以及在通信上联接到(多个)处理器902的系统存储器904。(多个)处理器902和系统存储器904可以是物理的,或者可以是虚拟化的和/或分布式的。(多个)处理器902可以执行一个或多个模块和/或进程,以使(多个)处理器902执行各种功能。在实施例中,(多个)处理器902可以包括中央处理单元(“CPU”)、图形处理单元(“GPU”)、CPU和GPU两者、或者本领域已知的其他处理单元或组件。另选地,(多个)处理器902中的每个处理器可以拥有该处理器自己的本地存储器,该本地存储器还可以存储程序模块和程序数据。
取决于系统900的确切配置和类型,系统存储器904可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存、微型硬盘驱动器、存储卡等)、或者它们的一些组合。系统存储器904可以包括可由(多个)处理器902执行的一个或多个计算机可执行模块706。
模块906可以包括但不限于调用接收模块908、元数据检索模块910、区块定位模块912、范围划分模块914、命令转发模块916、区块合并模块18、元数据返回模块920和垃圾收集模块922。垃圾收集模块922可以存储在同一系统900上作为上述模块的其余部分,或者可以存储在系统900的不同实例上。垃圾收集模块922还可以包括唤醒子模块924、范围确定子模块926、数据结构创建子模块928、操作调用传递子模块930、地址接收子模块932和主通知子模块934。
模块906还可以包括但不限于块节点模块936和逻辑地址映射器模块938。块节点模块936可以包括命令接收子模块940、保留子模块942、重映射调用传递子模块944、区块写入子模块946和区块返回子模块948。逻辑地址映射器模块938可以包括调用接收子模块950、映射子模块952、映射写入子模块954、映射提交子模块956、索引图更新子模块958和索引图写入子模块960。
调用接收模块908可以被配置为如上参考图4A和图4B所描述的,接收虚拟复制操作调用。
元数据检索模块910可以被配置为如上参考图4A和图4B所描述的,从DFS节点集群的主节点检索映射元数据。
区块定位模块912可以被配置为如上参考图4A和图4B所描述的,定位存储在块节点处的、源数据结构的区块。
范围划分模块914可以被配置为如上参考图4A和图4B所描述的,将数据范围划分为多个逻辑地址片段。
命令转发模块916可以被配置为如上参考图4A和图4B所描述的,将复制命令转发到块节点。
区块合并模块918可以被配置为如上参考图4A和图4B所描述的,合并从块节点接收到的重映射区块。
元数据返回模块920可以被配置为如上参考图4A和图4B所描述的,响应于虚拟复制操作调用,返回新的映射元数据。
唤醒子模块924可以被配置为如上参考图3所描述的,唤醒GC工作线程。
范围确定子模块926可以被配置为如上参考图3所描述的,在本地文件系统处确定顺序数据结构的第一数据范围和第二数据范围。
数据结构创建子模块928可以被配置为如上参考图3所描述的,创建新的顺序数据结构。
操作调用传递子模块930可以被配置为如上参考图3所描述的,传递虚拟复制操作调用。
地址接收子模块932可以被配置为如上参考图3所描述的,接收逻辑地址。
主通知子模块934可以被配置为如上参考图3所描述的,通知主节点。
命令接收子模块940可以被配置为如上参考图4A和图4B所描述的,接收复制命令。
保留子模块942可以被配置为如上参考图4A和图4B所描述的,在托管式存储上保留目的地LBA。
重映射调用传递子模块944可以被配置为如上参考图4A和图4B所描述的,将与对目的地LBA的引用配对的对源LBA的引用传递给重映射调用。
区块写入子模块946可以被配置为如上参考图4A和图4B所描述的,将目的地LBA写入重映射区块。
区块返回子模块948可以被配置为如上参考图4A和图4B所描述的,将重映射区块返回到DFS。
调用接收子模块950可以被配置为如上参考图5所描述的,接收重映射调用,该重映射调用具有与对目的地LBA的引用配对的对源LBA的引用。
映射子模块952可以被配置为如上参考图5所描述的,将目的地LBA映射到一磁盘地址,该磁盘地址被映射到与目的地LBA配对的源LBA。
映射写入子模块954可以被配置为如上参考图5所描述的,将目的地LBA到磁盘地址的映射写入托管式存储。
映射提交子模块956可以被配置为如上参考图5所描述的,将目的地LBA到磁盘地址的映射提交给托管式存储的本地文件系统。
索引图更新子模块958可以被配置为如上参考图5所描述的,利用目的地LBA到磁盘地址的映射,来更新托管式存储的索引图。
索引图写入子模块960可以被配置为如上参考图5所描述的,将索引图写入检查点日志。
系统900还可以包括输入/输出(I/O)接口970和通信模块980,该通信模块980使得系统900能够通过网络(诸如以上参考图1所描述的云网络)与其他系统和设备通信。网络可以包括互联网、诸如有线网络或直接有线连接之类的有线媒介、以及诸如声学、射频(“RF”)、红外和其他无线媒介之类的无线媒介。
如上所描述的方法的一些或所有操作能够通过执行存储在计算机可读存储介质上的、如下所定义的计算机可读指令来执行。如在说明书和权利要求中使用的术语“计算机可读指令”包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。计算机可读指令能够在各种系统配置上实现,这些系统配置包括单处理器系统或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的系统、可编程消费电子产品、它们的组合等。
计算机可读存储介质可以包括易失性存储器(诸如随机存取存储器(“RAM”))和/或非易失性存储器(诸如只读存储器(“ROM”)、闪存等)。计算机可读存储介质还可以包括附加的可移动存储和/或不可移动存储,该附加的可移动存储和/或不可移动存储包括但不限于闪存、磁存储、光存储和/或者带存储,该闪存、磁存储、光存储和/或者带存储可以提供计算机可读指令、数据结构、程序模块等的非易失性存储。
非暂时性计算机可读存储介质是计算机可读介质的示例。计算机可读介质包括至少两种类型的计算机可读介质,即计算机可读存储介质和通信介质。计算机可读存储介质包括易失性的和非易失性的介质、可移动的和不可移动的介质,这些介质在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何过程或技术中实现。计算机可读存储介质包括但不限于相变存储器(“PRAM”)、静态随机存取存储器(“SRAM”)、动态随机存取存储器(“DRAM”)、其他类型的随机存取存储器(“RAM”)、只读存储器(“ROM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储器技术、光盘只读存储器(“CD-ROM”)、数字多功能盘(“DVD”)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者能够用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可以在已调制的数据信号(诸如载波)或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机可读存储介质不包括通信介质。
应当进一步理解,如本文所描述的托管式存储可以至少部分地在多层系统900处托管。
在一个或多个非暂时性计算机可读存储介质上存储的计算机可读指令,当由一个或多个处理器执行时,可执行如上参考图1至图6所描述的操作。通常,计算机可读指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且能够以任何顺序和/或并行地对任何数量的所描述的操作进行组合,以实现过程。
通过上述技术方案,本公开提供了一种虚拟复制操作,该虚拟复制操作改进了在分布式文件系统处对抢占式垃圾收集策略的支持。提供了一种垃圾收集过程,该垃圾收集过程抢先对日志结构文件系统中的数据执行复制,以避免出现繁重的线程阻塞工作负载。为了使线程阻塞写入操作不跨分布式文件系统节点集群的节点分布,并且从而避免计算性能的衰退,在DFS API中提供了虚拟复制操作,该虚拟复制操作基于主节点元数据对存储有要虚拟复制的区块的每个块节点进行定位,并调用逻辑地址映射器的重映射API,该重映射API是由块节点的本地文件系统提供的。每个块节点的逻辑地址映射器执行从源逻辑区块地址到目的地区块地址的、磁盘地址的重映射,而不将数据从一个磁盘地址重定位到另一个磁盘地址。这些重映射的结果可以作为元数据存储在主节点处,替换先前映射的元数据。以这种方式,对构成抢占式垃圾收集策略的基础所必需的复制操作进行虚拟执行,绕过了跨DFS节点集群的大量磁盘级工作负载。
示例条项
A、一种方法,包括:在分布式文件系统(“DFS”)节点集群处,确定顺序数据结构的第一数据范围和第二数据范围;创建新的顺序数据结构,并向该新的顺序数据结构复制每个第一数据范围的数据;以及将每个第二数据范围、顺序数据结构和新的顺序数据结构传递给DFS的虚拟复制操作调用作为参数。
B、根据段落A所述的方法,还包括:从虚拟复制操作调用接收与每个第二数据范围对应的逻辑地址。
C、根据段落B所述的方法,还包括:向DFS节点集群的主节点通知新的顺序数据结构。
D、一种方法,包括:在DFS节点集群处接收虚拟复制操作调用,该虚拟复制操作调用具有数据范围、源数据结构和目的地数据结构作为参数;从DFS节点集群的主节点检索映射元数据,该映射元数据包括从源数据结构到在DFS节点集群的多个块节点上存储的区块的映射;定位存储在块节点处的、源数据结构的区块;将数据范围划分为多个逻辑地址片段,每个逻辑地址片段对应于在块节点上存储的定位区块;以及将具有逻辑地址片段参数的复制命令转发到存储有对应定位区块的块节点。
E、根据权利要求D所述的方法,还包括:合并从块节点接收到的重映射区块,以形成目的地数据结构和新的映射元数据;以及响应于虚拟复制操作调用,返回该新的映射元数据。
F、一种方法,包括:从分布式文件系统(“DFS”)接收具有逻辑地址片段参数的复制命令,并在托管式存储上将逻辑地址片段转换为源逻辑区块地址(“源LBA”);在与源LBA对应的托管式存储上保留目的地LBA;以及将与对目的地LBA的引用配对的对源LBA的引用传递给托管式存储的逻辑地址映射器的重映射调用。
G、根据段落F所述的方法,还包括:由逻辑地址映射器接收重映射调用,该重映射调用具有与对目的地LBA的引用配对的对源LBA的引用作为参数;以及由逻辑地址映射器利用目的地LBA到磁盘地址的映射来更新托管式存储的索引图。
H、根据段落G所述的方法,其中,通过如下操作将目的地LBA映射到磁盘地址:由逻辑地址映射器将目的地LBA映射到一磁盘地址,该磁盘地址被映射到与目的地LBA配对的源LBA。
I、根据段落H所述的方法,还包括:由逻辑地址映射器将目的地LBA到托管式存储的磁盘地址的映射写入;以及由逻辑地址映射器将目的地LBA到磁盘地址的映射提交给托管式存储的本地文件系统。
J、根据段落G所述的方法,还包括:由逻辑地址映射器向重映射调用分配序列号;以及由逻辑地址映射器将索引图与序列号相关联地写入检查点日志。
K、根据段落F所述的方法,还包括:将目的地LBA写入重映射区块,并将重映射区块返回到DFS。
L、根据段落F所述的方法,其中,托管式存储至少包括闪存存储设备。
M、一种方法,包括:一个或多个处理器;以及在通信上联接到所述一个或多个处理器的存储器;该存储器存储有能够由一个或多个处理器执行的计算机可执行模块,该计算机可执行模块在由一个或多个处理器执行时,执行相关联的操作,该计算机可执行模块包括块节点模块,该块节点模块还包括:命令接收子模块、保留子模块和重映射调用传递子模块;该命令接收子模块被配置为从分布式文件系统(“DFS”)接收具有逻辑地址片段参数的复制命令,并在托管式存储上将逻辑地址片段转换为源逻辑区块地址(“源LBA”);该保留子模块被配置为在与源LBA对应的托管式存储上保留目的地LBA;该重映射调用传递子模块被配置为将与对目的地LBA的引用配对的对源LBA的引用传递给托管式存储的逻辑地址映射器的重映射调用。
N、根据段落M所述的系统,还包括逻辑地址映射器模块,该逻辑地址映射器模块还包括:调用接收子模块和索引图更新子模块;该调用接收子模块被配置为接收重映射调用,该重映射调用具有与对目的地LBA的引用配对的对源LBA的引用作为参数;该索引图更新子模块被配置为利用目的地LBA到磁盘地址的映射,来更新托管式存储的索引图。
O、根据段落N所述的系统,其中,逻辑地址映射器模块还包括映射子模块,该映射子模块被配置为将目的地LBA映射到一磁盘地址,该磁盘地址被映射到与目的地LBA配对的源LBA。
P、根据段落O所述的系统,其中,逻辑地址映射器模块还包括:映射写入子模块和映射提交子模块;该映射写入子模块被配置为将目的地LBA到托管式存储的磁盘地址的映射写入;该映射提交子模块被配置为将目的地LBA到磁盘地址的映射提交给托管式存储的本地文件系统。
Q、根据段落N所述的系统,其中,逻辑地址映射器模块还被配置为向重映射调用分配序列号,并将索引图与序列号相关联地写入检查点日志。
R、根据段落M所述的系统,其中,块节点模块还包括:区块写入模块和区块返回模块;该区块写入模块被配置为将目的地LBA写入重映射区块;该区块返回模块被配置为将重映射区块返回到DFS。
S、根据段落M所述的系统,其中,托管式存储至少包括闪存存储设备。
T、一种计算机可读存储介质,该计算机可读存储介质存储有能够由一个或多个处理器执行的计算机可读指令,该计算机可读指令当由一个或多个处理器执行时,使所述一个或多个处理器执行操作,该操作包括:从分布式文件系统(“DFS”)接收具有逻辑地址片段参数的复制命令,并在托管式存储上将逻辑地址片段转换为源逻辑区块地址(“源LBA”);在与源LBA对应的托管式存储上保留目的地LBA;以及将与对目的地LBA的引用配对的对源LBA的引用传递给托管式存储的逻辑地址映射器的重映射调用。
U、根据段落T所述的计算机可读存储介质,其中,所述操作还包括:由逻辑地址映射器接收重映射调用,该重映射调用具有与对目的地LBA的引用配对的对源LBA的引用作为参数;以及由逻辑地址映射器利用目的地LBA到磁盘地址的映射,来更新托管式存储的索引图。
V、根据段落U所述的计算机可读存储介质,其中,通过如下方式将目的地LBA映射到磁盘地址:由逻辑地址映射器将目的地LBA映射到一磁盘地址,该磁盘地址被映射到与目的地LBA配对的源LBA。
W、根据段落V所述的计算机可读存储介质,其中,所述操作还包括:由逻辑地址映射器将目的地LBA到托管式存储的磁盘地址的映射写入;以及由逻辑地址映射器将目的地LBA到磁盘地址的映射提交给托管式存储的本地文件系统。
X、根据段落U所述的计算机可读存储介质,其中,所述操作还包括:由逻辑地址映射器向重映射调用分配序列号;以及由逻辑地址映射器将索引图与序列号相关联地写入检查点日志。
Y、根据段落T所述的计算机可读存储介质,其中,所述操作还包括:将目的地LBA写入重映射区块,并将重映射区块返回到DFS。
Z、根据段落T所述的计算机可读存储介质,其中,托管式存储至少包括闪存存储设备。
尽管已经以特定于结构特征和/或方法行为的语言来描述主题,但是应当理解,所附的权利要求中限定的主题不一定限于所描述的特定特征或行为。而是,公开特定特征和行为作为实现权利要求的示例性形式。
Claims (20)
1.一种方法,包括:
在分布式文件系统(“DFS”)执行虚拟复制操作期间,从所述DFS接收复制命令;
基于所述复制命令的转换参数,将重映射调用传递给托管式存储的逻辑地址映射器;
由所述逻辑地址映射器在所述托管式存储的索引图处对到磁盘地址的映射进行更新;以及
将重映射区块返回到所述DFS,使所述DFS完成所述虚拟复制操作。
2.根据权利要求1所述的方法,其中,所述虚拟复制操作通过存储服务的磁盘操作来调用,所述存储服务在实现所述DFS的DFS节点集群的服务器节点上托管。
3.根据权利要求2所述的方法,其中,通过磁盘操作调用的所述虚拟复制操作包括GC工作进程,所述GC工作进程在所述磁盘操作之后确定大于虚拟复制阈值的数据范围。
4.根据权利要求3所述的方法,其中,所述复制命令的数据范围参数包括多个逻辑地址片段,所述多个逻辑地址片段中的每个逻辑地址片段对应于所述托管式存储处的定位区块。
5.根据权利要求4所述的方法,其中,所述重映射调用的源LBA参数包括列表,所述列表记录了所述多个逻辑地址片段中的每个定位区块,并且所述重映射调用的目的地LBA参数包括所述托管式存储处的多个保留区块。
6.根据权利要求5所述的方法,其中,由所述逻辑地址映射器对到所述磁盘地址的映射进行更新包括:将所述磁盘地址从对所述源LBA参数的定位区块的引用重映射到对所述目的地LBA参数的保留区块的引用。
7.根据权利要求6所述的方法,还包括:
由所述逻辑地址映射器将更新后的到所述磁盘地址的映射提交给所述托管式存储的本地文件系统;
由所述逻辑地址映射器向所述重映射调用分配序列号;以及
由所述逻辑地址映射器将所述索引图与所述序列号相关联地写入检查点日志。
8.一种系统,包括:
一个或多个处理器;
至少部分地在所述系统处托管的存储;以及
在通信上联接到所述一个或多个处理器的存储器,所述存储器存储有能够由所述一个或多个处理器执行的计算机可执行模块,当所述计算机可执行模块由所述一个或多个处理器执行时,所述计算机可执行模块执行相关联的操作,所述计算机可执行模块包括:
在所述系统处托管的存储服务,所述存储服务被配置为执行调用虚拟复制操作调用的磁盘操作;
调用接收模块,所述调用接收模块被配置为接收所述虚拟复制操作调用;
命令转发模块,所述命令转发模块被配置为转发复制命令;
块节点模块,所述块节点模块还包括:
命令接收子模块,所述命令接收子模被配置为从所述命令转发模块接收复制命令;
重映射调用传递子模块,所述重映射调用传递子模块被配置为基于所述复制命令的转换参数,向所述系统的逻辑地址映射器模块传递重映射调用;以及
区块返回模块,所述区块返回模块被配置为返回重映射区块;以及
逻辑地址映射器模块,所述逻辑地址映射器模块还包括:
索引图更新子模块,所述索引图更新子模块被配置为在托管式存储的索引图处对到磁盘地址的映射进行更新。
9.根据权利要求8所述的系统,还包括垃圾收集模块,所述垃圾收集模块还包括:
范围确定子模块,所述范围确定子模块被配置为确定GC工作进程,所述GC工作进程在所述磁盘操作之后确定大于虚拟复制阈值的数据范围。
10.根据权利要求9所述的系统,其中,所述复制命令的数据范围参数包括多个逻辑地址片段,所述多个逻辑地址片段中的每个逻辑地址片段对应于所述托管式存储处的定位区块。
11.根据权利要求10所述的系统,其中,所述命令接收子模块还被配置为记录列表,所述列表记录了所述多个逻辑地址片段中的每个定位区块,并且所述重映射调用的源LBA参数包括记录了每个定位区块的所述列表。
12.根据权利要求11所述的系统,其中,所述逻辑地址映射器模块还包括保留模块,所述保留模块被配置为保留所述托管式存储处的多个保留区块,并且所述重映射调用的目的地LBA参数包括所述多个保留区块。
13.根据权利要求12所述的系统,其中,所述索引图更新子模块被配置为通过将所述磁盘地址从对所述源LBA参数的定位区块的引用重映射到对所述目的地LBA参数的保留区块的引用,来对到所述磁盘地址的映射进行更新。
14.根据权利要求13所述的系统,其中,所述逻辑地址映射器模块还包括映射提交子模块,所述映射提交子模块被配置为将更新后的到所述磁盘地址的映射提交给所述托管式存储的本地文件系统;并且
所述逻辑地址映射器模块还被配置为向所述重映射调用分配序列号,并将所述索引图与所述序列号相关联地写入检查点日志。
15.一种计算机可读存储介质,所述计算机可读存储介质存储有能够由一个或多个处理器执行的计算机可读指令,当所述计算机可读指令由所述一个或多个处理器执行时,所述计算机可读指令使所述一个或多个处理器执行操作,所述操作包括:
在分布式文件系统(“DFS”)执行虚拟复制操作期间,从所述DFS接收复制命令;
基于所述复制命令的转换参数,将重映射调用传递给所述DFS的托管式存储的逻辑地址映射器;
由所述逻辑地址映射器在所述托管式存储的索引图处对到磁盘地址的映射进行更新;以及
将重映射区块返回到所述DFS,使所述DFS完成所述虚拟复制操作。
16.根据权利要求15所述的计算机可读存储介质,其中,所述虚拟复制操作是通过存储服务的磁盘操作来调用的,所述存储服务在实现所述DFS的DFS节点集群的服务器节点上托管。
17.根据权利要求16所述的计算机可读存储介质,其中,通过磁盘操作调用的所述虚拟复制操作包括GC工作进程,所述GC工作进程在所述磁盘操作之后确定大于虚拟复制阈值的数据范围。
18.根据权利要求17所述的计算机可读存储介质,其中,所述复制命令的数据范围参数包括多个逻辑地址片段,所述多个逻辑地址片段中的每个逻辑地址片段对应于所述托管式存储处的定位区块。
19.根据权利要求18所述的计算机可读存储介质,其中,所述重映射调用的源LBA参数包括列表,所述列表记录了所述多个逻辑地址片段中的每个定位区块,并且所述重映射调用的目的地LBA参数包括所述托管式存储处的多个保留区块。
20.根据权利要求19所述的计算机可读存储介质,其中,由所述逻辑地址映射器对到所述磁盘地址的映射进行更新包括:将所述磁盘地址从对所述源LBA参数的定位区块的引用重映射到对所述目的地LBA参数的保留区块的引用。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/126866 WO2022094895A1 (en) | 2020-11-05 | 2020-11-05 | Virtual data copy supporting garbage collection in distributed file systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116490847A true CN116490847A (zh) | 2023-07-25 |
CN116490847B CN116490847B (zh) | 2024-11-15 |
Family
ID=
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110289049A1 (en) * | 2010-05-19 | 2011-11-24 | Microsoft Corporation | Scaleable fault-tolerant metadata service |
US20120011340A1 (en) * | 2010-01-06 | 2012-01-12 | Fusion-Io, Inc. | Apparatus, System, and Method for a Virtual Storage Layer |
GB201311259D0 (en) * | 2013-06-25 | 2013-08-14 | Ibm | Replication for on-line hot-standby database |
CN103279568A (zh) * | 2013-06-18 | 2013-09-04 | 无锡紫光存储系统有限公司 | 一种元数据管理系统及方法 |
US20180300203A1 (en) * | 2017-04-18 | 2018-10-18 | Netapp, Inc. | Systems and methods for backup and restore of distributed master-slave database clusters |
CN109086457A (zh) * | 2018-09-05 | 2018-12-25 | 华南理工大学 | 一种分布式视频帧随机读取的元数据服务系统及工作方法 |
CN109144406A (zh) * | 2017-06-28 | 2019-01-04 | 华为技术有限公司 | 分布式存储系统中元数据存储方法、系统及存储介质 |
US20190303035A1 (en) * | 2018-03-27 | 2019-10-03 | EMC IP Holding Company LLC | Copying garbage collector for geographically distributed data storage environment |
US10620883B1 (en) * | 2019-01-04 | 2020-04-14 | Cohesity, Inc. | Multi-format migration for network attached storage devices and virtual machines |
US10795812B1 (en) * | 2017-06-30 | 2020-10-06 | EMC IP Holding Company LLC | Virtual copy forward method and system for garbage collection in cloud computing networks |
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120011340A1 (en) * | 2010-01-06 | 2012-01-12 | Fusion-Io, Inc. | Apparatus, System, and Method for a Virtual Storage Layer |
US20110289049A1 (en) * | 2010-05-19 | 2011-11-24 | Microsoft Corporation | Scaleable fault-tolerant metadata service |
CN103279568A (zh) * | 2013-06-18 | 2013-09-04 | 无锡紫光存储系统有限公司 | 一种元数据管理系统及方法 |
GB201311259D0 (en) * | 2013-06-25 | 2013-08-14 | Ibm | Replication for on-line hot-standby database |
CN105339939A (zh) * | 2013-06-25 | 2016-02-17 | 国际商业机器公司 | 对在线热备份数据库的复制 |
US20180300203A1 (en) * | 2017-04-18 | 2018-10-18 | Netapp, Inc. | Systems and methods for backup and restore of distributed master-slave database clusters |
CN109144406A (zh) * | 2017-06-28 | 2019-01-04 | 华为技术有限公司 | 分布式存储系统中元数据存储方法、系统及存储介质 |
US10795812B1 (en) * | 2017-06-30 | 2020-10-06 | EMC IP Holding Company LLC | Virtual copy forward method and system for garbage collection in cloud computing networks |
US20190303035A1 (en) * | 2018-03-27 | 2019-10-03 | EMC IP Holding Company LLC | Copying garbage collector for geographically distributed data storage environment |
CN109086457A (zh) * | 2018-09-05 | 2018-12-25 | 华南理工大学 | 一种分布式视频帧随机读取的元数据服务系统及工作方法 |
US10620883B1 (en) * | 2019-01-04 | 2020-04-14 | Cohesity, Inc. | Multi-format migration for network attached storage devices and virtual machines |
Also Published As
Publication number | Publication date |
---|---|
WO2022094895A1 (en) | 2022-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8943282B1 (en) | Managing snapshots in cache-based storage systems | |
US9135123B1 (en) | Managing global data caches for file system | |
US20190340157A1 (en) | Log-structured storage device format | |
US8055864B2 (en) | Efficient hierarchical storage management of a file system with snapshots | |
US9405473B2 (en) | Dense tree volume metadata update logging and checkpointing | |
US9697219B1 (en) | Managing log transactions in storage systems | |
US20210344772A1 (en) | Distributed database systems including callback techniques for cache of same | |
US9582198B2 (en) | Compressed block map of densely-populated data structures | |
US8190850B1 (en) | Virtual block mapping for relocating compressed and/or encrypted file data block blocks | |
KR100439675B1 (ko) | 대용량 공유 저장장치를 위한 효율적인 스냅샷 수행방법 | |
US9959074B1 (en) | Asynchronous in-memory data backup system | |
US11409454B1 (en) | Container ownership protocol for independent node flushing | |
JP2010102738A (ja) | ハードウェアベースのファイルシステムのための装置および方法 | |
US11340829B1 (en) | Techniques for log space management involving storing a plurality of page descriptor (PDESC) page block (PB) pairs in the log | |
US11620062B1 (en) | Resource allocation techniques using a metadata log | |
US20160246522A1 (en) | Exactly once semantics | |
US11256434B2 (en) | Data de-duplication | |
US11886427B1 (en) | Techniques for efficient journal space handling and recovery processing with multiple logs | |
CN116490847B (zh) | 支持分布式文件系统中的垃圾收集的虚拟数据复制 | |
US20230409218A1 (en) | Container flush ownership assignment | |
US11860736B2 (en) | Resumable copy-on-write (COW) B+tree pages deletion | |
US11797214B2 (en) | Micro-batching metadata updates to reduce transaction journal overhead during snapshot deletion | |
US11829328B2 (en) | Garbage collection from archival of storage snapshots | |
US20230229332A1 (en) | Techniques for performing metadata updates | |
US20230177069A1 (en) | Efficient journal log record for copy-on-write b+ tree operation |
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 |