CN109074379A - 针对文件级重影的文件系统支持 - Google Patents
针对文件级重影的文件系统支持 Download PDFInfo
- Publication number
- CN109074379A CN109074379A CN201780022482.2A CN201780022482A CN109074379A CN 109074379 A CN109074379 A CN 109074379A CN 201780022482 A CN201780022482 A CN 201780022482A CN 109074379 A CN109074379 A CN 109074379A
- Authority
- CN
- China
- Prior art keywords
- file
- stored
- data
- file system
- engine
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
由一个或多个分层引擎执行的文件系统对重影的认识允许文件系统接收和储存指示重影文件区间的分层引擎的标识符和供分层引擎稍后使用的重影的文件区间的存储位置的元数据。文件系统能够接收和处理要读取和写入具有重影的区间的文件的请求。
Description
相关申请的交叉引用
本申请要求于2016年3月31日提交的美国专利申请No.62/315,996的优先权,其内容为了所有目的通过引用被整体地并入本文。
背景
在计算中,文件系统管理文件的存储和检索,并且将每个文件的数据储存在文件系统本地的存储中的一个或多个数据流中。重影(ghosting)过程(例如,去重复或云分层)可将文件的数据的范围或区间移动到其一个或多个数据流之外的位置。重影的区间的新存储位置通常由分层引擎管理并且不被文件系统知道。
概述
在现有的去重复和云分层实现中,关于重影的数据区间的元数据的管理由位于底层计算机系统的文件系统之上的实体(通常被称为分层引擎)执行;文件系统不知道任何重影的区间。这可能导致在用户应用所作的数据访问方面的低效。
本公开的各方面允许文件系统对由一个或多个分层引擎执行的重影的认识。文件系统可管理文件的存储和检索,并且将每个文件的数据储存在一个或多个数据流中。文件系统还可针对由文件系统管理的多个文件中的每一者维护关于文件的数据的一个或多个范围(即,区间)的元数据,对于被储存在文件系统本地的存储内的每个数据范围,该元数据包括本地存储内的该数据范围的存储位置的指示。文件系统可以从分层引擎接收指示由文件系统管理的文件之一的数据范围由该分层引擎储存在被该分层引擎知道和管理的位置中(不在该文件的一个或多个数据流内)的请求,该请求包括该数据范围的标识和与该分层引擎相关联的标识符。响应于该请求,文件系统可针对所标识的数据范围在由文件系统维护的元数据内储存该数据范围没有被储存在该文件的一个或多个数据流内(即,它被重影)的指示、和该请求被接收自的分层引擎的标识符。本文中所公开的各方面使文件系统能够接收和处理要读取其中一个或多个区间已被重影的文件的请求,以及将任何重影的区间的所储存的元数据返回给合适的分层引擎。本文中所公开的各方面还使文件系统能够接收和处理要写入或删除在其中一个或多个区间已被重影的文件的请求。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的概念的选集。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图简述
当结合附图阅览时,可以更好地理解前面的概述以及下面的详细描述。为了解说本公开,示出了本公开的各个方面。然而,本公开不限于所讨论的特定方面。在附图中:
图1解说了其中可以采用本文中所公开的各方面的示例性操作环境;
图2A解说了由文件系统维护的示例文件布局图条目;
图2B解说了在区间的重影已被执行之后的图2A的文件布局图条目的示例;
图3A解说了由文件系统维护的另一示例文件布局图条目;
图3B解说了在区间的重影已被执行之后的图3A的文件布局图条目的示例;
图4A解说了由文件系统维护的又一个示例文件布局图条目;
图4B解说了重影之后的图4A的文件布局图条目的示例;
图5是解说重影文件区间的方法的一实施例的循序图;
图6是解说读取重影的文件的方法的一实施例的循序图;
图7是解说写入已被至少部分地重影的文件的方法的一实施例的循序图;以及图8解说了根据一个实施例的用于利用文件系统实现去重复的示例架构。
详细描述
文件系统管理文件的存储和检索,并且将每个文件的数据储存在一个或多个数据流中。通常,文件被储存在文件系统本地的存储介质上的卷的块(有时被称为簇)中,所述存储介质诸如硬盘驱动器(HDD)、固态驱动器(SSD)、或任何其他合适的存储介质。如果文件太大以至于不适配单个块,则该文件可被储存在若干块中,这些块在存储介质上既可以是连续的也可以不连续。例如,文件A可能需要存储在四个块中(A[1]、A[2]、A[3]和A[4]),并且如果卷(V)具有十个块,则文件A可能被储存在该卷的块V[1]、V[2]、V[5]和V[9]中,但不一定按照顺序次序。因此,为了访问由文件系统维护的数据,文件系统维护每个文件的元数据,该元数据针对文件的数据的每个范围(即,区间)标识存储卷的这些数据范围被储存在其中的(诸)位置或(诸)块。该元数据有时被称为文件布局图,并且它可以采取各种不同的形式,诸如举例而言,表格。仅为了便于描述,该元数据在下文中将被称为“文件布局图”。
在一个实施例中,对于由文件系统管理或维护的多个文件中的每个文件,文件布局图储存将文件的每个数据范围(即,区间)映射到存储卷的其上储存了该数据的对应块的元数据。为了简化复杂度,被储存在存储位置的连续区段中的各块可被分组在一起。例如,用于文件A的文件布局图条目可包含三个条目,其中每个条目对应于(并标识)文件A的某块或块范围,以及指向存储介质的卷内的其上储存了它们的这些块(一个或多个块)的位置的指针:A[1-2]被储存在V[1-2]中;A[3]被储存在V[9]中;并且A[4]被储存在V[5]中。需要注意,A[4]在A[3]“之前”被储存在卷上,这可能发生在正常操作中。文件的每个块或块范围可被称为“区间”。例如,A[1]可以是文件A的区间,而A[1-2]也可以是文件A的区间。
如本文中所使用,对计算实体“知道”某事物或具有某事物的“知识”的提及意指该计算实体包含它可以从中辨别出该某事物的信息。如果计算实体不“知道”某事物,则它就不包含这样的信息。例如,如果文件被储存在不被文件系统知道的位置中,则文件系统不包含它自身可从中确定该位置的信息。
在计算中,重影指代将用户数据从其一个或多个数据流移出到不同位置的一般过程。换言之,文件的被移动的范围或区间的数据被储存在不在数据流内且不被文件系统知道的位置中。该位置可以在文件被储存的相同的存储卷上、在不同计算机上、在云存储位置中、或任何其他可行的存储位置。例如,重影的两个方法是去重复和云分层。
去重复(有时被称为数据优化)是以下动作:降低需要被储存在盘上或需要跨网络进行传送的数据的物理字节量而不会损害原始数据的保真性或完整性。去重复可降低储存数据所需的存储容量,并因此可导致存储硬件成本和数据管理成本方面的节省。去重复为处置被数字地储存的数据的快速增长提供了解决方案。
去重复可根据一种或多种技术来被执行,以消除被持久地储存的文件内的和被持久地储存的文件之间的冗余。例如,根据一种技术,在一个或多个文件中出现多次的唯一数据区域可被标识,并且仅这些被标识出的唯一数据区域(也被称为数据“组块(chunk)”)的单个副本可被物理地储存。对这些被标识出的数据组块的引用可被储存以指示文件和文件中包括它们的位置。
云分层与去重复类似,不同之处在于存储位置不位于文件的相同存储卷上。相反,数据组块可被储存在云存储位置中。
术语“重影的区间”指代用户文件中的已被移动到另一位置的数据的区间或范围。原始数据的检索需要额外的信息片段,这些信息片段可被称为“重影元数据”。重影元数据是描述重影的区间的位置的元数据。
在现有系统中,重影由负责维护重影的区间的重影元数据的分层引擎来执行;底层文件系统不知道这些重影的区间。换言之,分层引擎必须维护其自己的文件布局图,以便能够定位任何重影的区间的数据。文件系统可以不在其用于重影的区间的文件布局图中储存任何有意义的元数据。当文件系统从用户应用接收要检索其中一个或多个区间可能被重影的文件的请求时,文件系统可返回重影的区间的空数据,使分层引擎负责定位和检索重影的区间以便满足该用户应用请求。附加地,在分层引擎仅仅处置重影的情况下,文件系统不具有重影的文件的组成的完整知识,并且可能在文件中看到零数据。
本公开的各方面允许对由一个或多个分层引擎执行的重影的文件系统认识。文件系统可从分层引擎接收请求,该请求指示由文件系统管理的文件之一的数据范围或块要被重影(即,由该分层引擎储存)在被该分层引擎知道和管理的位置中(不在该文件的一个或多个数据流内),诸如另一存储卷或云存储位置。该请求可标识文件数据的范围并包括与分层引擎相关联的标识符。响应于该请求,文件系统可对其维护的与所标识的文件数据的范围相关联的元数据进行修改,以包括该文件数据的范围没有被储存在该文件的一个或多个数据流内(即,它被重影)的指示且进一步包括该请求被接收自的分层引擎的标识符。储存分层引擎的标识符使文件系统能够在每分层引擎的基础之上储存元数据;不同的分层引擎可对文件的不同部分进行重影。本文中所公开的各方面进一步使得来自分层引擎的这样的请求能够包括附加的分层引擎元数据,该元数据反映数据范围的存储位置不在文件的一个或多个数据流内。分层引擎可稍后从文件系统检索该附加元数据,以定位不在文件的一个或多个数据流内的存储位置中的文件数据。文件系统可将该附加的分层引擎元数据储存在由文件系统针对所标识的文件数据范围而维护的文件系统元数据中。在重影之后,文件系统可释放文件系统的本地存储内的所标识的数据范围的存储位置的磁盘空间。该可用磁盘空间可接着被用来储存其他文件数据。
此外,本文中所公开的各方面使文件系统能够接收和处理要读取文件的请求。更具体而言,文件系统可经由分层引擎从文件系统的客户端(诸如用户应用或重影引擎)接收要读取文件的至少一部分内容的请求。文件系统可根据该文件系统针对所请求的文件而维护的文件系统元数据确定该文件的所请求部分的至少一个数据范围由分层引擎储存并且没有被储存在该文件的一个或多个数据流内。对于被确定为由分层引擎储存且没有被储存在文件的一个或多个数据流内的该至少一个数据范围,文件系统可向分层引擎返回该确定的指示。分层引擎接着负责检索没有被储存在文件的一个或多个数据流内的该数据范围,以便满足客户端请求。对于所请求部分的被储存在文件的一个或多个数据流内的任何数据范围,文件系统可基于由文件系统针对这些范围而维护的元数据从文件系统的本地存储检索这些范围的数据,并将这些范围的数据返回给分层引擎。
本文中所公开的各方面还使文件系统能够接收和处理要对文件写入的请求。文件系统可经由分层引擎从文件系统的客户端接收要对文件的至少一部分内容进行写入的请求。文件系统可根据该文件系统针对所请求的文件而维护的文件系统元数据确定该文件的所请求部分的至少一个数据范围由分层引擎储存并且没有被储存在该文件的一个或多个数据流内。对于被确定为由分层引擎储存且没有被储存在文件的一个或多个数据流内的该至少一个数据范围,文件系统可向分层引擎返回该确定的指示。文件系统可接着从分层引擎接收由该分层引擎储存的该至少一个数据范围。然后,文件系统可将由分层引擎存储的该至少一个数据范围储存在文件的一个或多个数据流中,并且针对该至少一个数据范围中的每一者在由文件系统维护的元数据内储存该数据范围被储存在该文件的一个或多个数据流内的指示。文件系统可接着满足客户端请求并写入文件的内容中。
本文中所公开的各方面进一步使文件系统能够接收和处理要删除文件的请求。更具体而言,文件系统可经由分层引擎从文件系统的客户端接收要删除文件的内容的请求。文件系统可根据该文件系统针对所请求的文件而维护的文件系统元数据确定该文件的所请求部分的一个或多个数据范围由至少一个分层引擎储存并且没有被储存在该文件的一个或多个数据流内。对于被确定为由该至少一个分层引擎储存且没有被储存在文件的一个或多个数据流内的该一个或多个数据范围,文件系统可向该至少一个分层引擎返回该确定的指示。该至少一个分层引擎接着负责删除没有被储存在该文件的一个或多个数据流内的该数据范围。对于所请求部分的被储存在文件的一个或多个数据流内的任何数据范围,文件系统可基于由文件系统针对这些范围而维护的元数据从文件系统的本地存储删除这些范围的数据。
图1解说了用于实现本公开的各个方面的示例性环境100。如图所示,环境100包括计算设备112。计算设备112可以是各种不同类型的计算设备中的任何一种,包括但不限于计算机、个人计算机、服务器、便携式计算机、移动计算机、可穿戴计算机、膝上型计算机、平板、个人数字助理、智能电话、数码相机、或自动地执行计算的任何其他机器。
计算设备112包括处理单元114、系统存储器116以及系统总线118。系统总线118将包括但不仅限于系统存储器116的系统组件耦合到处理单元114。处理单元114可以是各种可用处理器中的任何一种。也可以采用双微处理器及其他多处理器架构作为处理单元114。
系统总线118可以是若干类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用总线架构的本地总线,所述可用总线架构包括但不限于,工业标准架构(ISA)、微通道架构(MSA)、扩展ISA(EISA)、智能驱动电子(IDE)、VESA本地总线(VLB)、外围组件互连(PCI)、卡总线、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储器卡国际协会总线(PCMCIA)、火线(Firewire)(IEEE 1394)、和小型计算机系统接口(SCSI)。
系统存储器116包括易失性存储器120和非易失性存储器122。基本输入/输出系统(BIOS)被储存在非易失性存储器122中,包含诸如在启动期间在计算设备112内的元件之间传输信息的基本例程。作为解说而非限制,非易失性存储器122可包括只读存储器(ROM)、可编程序ROM(PROM)、电可编程序ROM(EPROM)、电可擦除ROM(EEPROM)、或闪存存储器。易失性存储器120包括充当外部高速缓存存储器的随机存取存储器(RAM)。作为解说而非限制,RAM在许多形式中是可用的,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、和直接Rambus RAM(DDRAM)。
计算设备112还包括可移动/不可移动、易失性/非易失性计算机可读存储介质。图1解说了例如盘存储124。盘存储124包括但不仅限于,如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、存储器卡(诸如SD存储器卡)、或记忆棒之类的设备。另外,盘存储124可以单独地或与其他存储介质相组合地包括存储介质,所述其他存储介质包括但不仅限于诸如压缩盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)之类的光盘驱动器。为了促成盘存储设备124连接到系统总线118,通常使用诸如接口126之类的可移动或不可移动接口。
图1进一步描绘了充当用户与合适的操作环境100中所描述的基本计算机资源之间的中介的软件。这样的软件包括操作系统128。可被储存在盘存储124上的操作系统128用于控制和分配计算设备112的资源。应用130利用由操作系统128通过被储存在系统存储器116中或者被储存在盘存储124上的程序模块132和程序数据134对资源所作的管理。应当领会,本文中所描述的各方面可以用各种操作系统或操作系统的组合来实现。如进一步所示,操作系统128包括文件系统129,以用于在盘存储器124上储存和组织计算机文件及它们包含的数据,以便于查找和访问这些文件。
用户可通过(诸)输入设备136将命令或信息输入到计算设备112中。输入设备136包括但不限于,诸如鼠标之类的定点设备、轨迹球、触控笔、触摸板、键盘、话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、电视调谐卡、数码相机、数字摄像机、web相机等。这些及其他输入设备经由(诸)接口端口138通过系统总线118连接到处理单元114。(诸)接口端口138包括例如,串行端口、并行端口、游戏端口、和通用串行总线(USB)。(诸)输出设备140与(诸)输入设备136使用一些相同类型的端口。因此,例如,可以使用USB端口来向计算设备112提供输入,以及从计算设备112向输出设备140输出信息。提供输出适配器142以解说存在如监视器、扬声器、和打印机之类的一些输出设备140,还有需要特殊适配器的其他输出设备140。作为解说而非限制,输出适配器142包括在输出设备140和系统总线118之间提供连接装置的视频卡和声卡。应当注意,其他设备和/或设备系统提供诸如(诸)远程计算机144之类的输入和输出两种功能。
计算设备112可以使用到诸如(诸)远程计算设备144之类的一个或多个远程计算设备的逻辑连接来在联网环境中工作。(诸)远程计算设备144可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、对等设备、与计算设备112完全相同的另一计算设备等,并且通常包括关于计算设备112所描述的许多或所有元件。为了简洁起见,仅存储器存储设备146与(诸)远程计算设备144一起被例示。(诸)远程计算设备144通过网络接口148被逻辑地连接到计算设备112,并接着经由通信连接150被物理地连接。网络接口148涵盖诸如局域网(LAN)和广域网(WAN)之类的通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网、令牌环等。WAN技术包括但不限于,点对点链路、电路交换网(如综合业务数字网(ISDN)及其变体)、分组交换网络、和数字订户线路(DSL)。(诸)通信连接150指代被用来将网络接口148连接到总线118的硬件/软件。尽管为解说清楚起见通信连接150被示出在计算设备112的内部,但是它也可以在计算设备112的外部。连接到网络接口148所需的硬件/软件仅出于示例性目的可以包括内部和外部技术,诸如调制解调器(包括常规电话级调制解调器、电缆调制解调器和DSL调制解调器)、ISDN适配器、和以太网卡。
如本文中所使用,术语“组件”、“系统”、“模块”等旨在指代计算机相关实体,要么是硬件、硬件和软件的组合、软件、要么是执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行件、执行的线程、程序、和/或计算机。作为解说,在服务器上运行的应用和该服务器两者都可以是组件。一个或多个组件可驻留在进程和/或执行的线程内,并且组件可位于一台计算机上和/或分布在两台或更多台计算机之间。需要注意,对于本文中所解说的数据结构,所有字段都被描述为小的字节存储次序(littleendian)。如上所提到的,当前文件系统不提供对重影或维护重影元数据的本机支持。相反,文件系统依赖于一个或多个分层引擎来处置重影,并且可以在其文件布局图中针对重影的文件数据范围仅保持空值,从而使文件系统不完全了解重影的文件的组成。
为了解决这些问题,本公开的各方面使得重影元数据支持能够被实现到文件系统中。在本文中所公开的各实施例中,本公开的各方面在被称为弹性文件系统(ReFS)的文件系统中实现。然而,应当理解,本文中所描述的各方面可被应用于采用包含元数据条目的文件布局图以提供关于被储存在卷上的文件的信息的任何文件系统。所要求保护的主题绝不限于ReFS文件系统,并且对ReFS的讨论仅作为示例。
与文件系统的交互通过文件系统控制(FSCTL)方法或命令是可能的,该交互也可被称为请求。为了在文件系统中实现重影支持,在一个实施例中,介绍了分层引擎可以使用以对文件区间进行重影的新的FSCTL方法。新的FSCTL方法至少包括用于对文件区间进行重影的重影区间方法和用于检索这些重影的文件区间的FSCTL查询重影的区间的方法。
新的重影区间方法可以由分层引擎调用以对文件进行重影。该方法可被用来重影整个文件或文件的一部分,并且可根据需要来被调用任意次数,以重影文件的更多部分或更新已被重影的范围。在一个实施例中,分层引擎必须具有对指定的文件句柄的ReFS中的写权限或FILE_WRITE_DATA权限,以便能够对文件的数据范围进行重影。作为给新的FSCTL重影区间方法的输入而被提供的结构可在文件布局图中详述要重影文件的哪个范围和要储存在由文件系统针对该重影的范围维护的元数据内的重影元数据:
FileHandle是要重影的文件名或文件标识符。
FileOffset指示要重影的范围在哪里开始的文件视图偏移。
ByteCount指示该范围有多长。
MetadataLength指示要放置在文件布局图中的元数据的长度。
Metadata是在重影之后被放置在给定范围的文件布局图中的重影元数据。
在读取和写入时,分层引擎可查询文件系统以读取文件的至少一部分内容。文件系统可根据所请求的文件范围的元数据确定文件的所请求部分是在文件的一个或多个数据流内,还是由分层引擎(不在文件的一个或多个数据流内)在被分层引擎知道和管理的位置中维护。对于被储存在文件的一个或多个数据流内的文件的各部分,文件系统可使用元数据来检索数据并将其返回给分层引擎。对于由分层引擎储存并且没有被储存在文件的一个或多个数据流内的各部分,文件系统可将元数据返回给分层引擎,该分层引擎可接着使用该元数据来查询其数据存储并检索数据。元数据帮助分层引擎将重影的范围映射到正确的数据。在写入期间,分层引擎可以在检索到重影的数据之后将其返回给文件的一个或多个数据流。在删除期间,类似的过程被执行,但是分层引擎和文件系统可删除数据而不是检索它。在一些实施例中,分层引擎标识符被包括在Metadata(元数据)参数中。在其他实施例中,分层引擎标识符是其自己的参数。分层引擎标识符可在文件系统被移动或者多个分层引擎正在使用文件系统的情况下(因为不同的分层引擎可对文件的不同部分进行重影)被用来唯一地标识执行重影的分层引擎。
可以提供与以上GHOST_EXTENTS_DATA结构类似的结构,供与新的FSCTL查询重影的区间的方法一起使用,以检索文件系统为其文件布局图中的文件维护的元数据。然而,Metadata变量将被空地发送到文件系统,并且文件系统将把Metadata和MetadataLength变量指派为被储存在文件布局图中的值。其他实施例可以针对类似结果使用不同的参数。
在ReFS中,文件是块的基于字节的虚拟视图。偏移0处的文件的第一字节经由文件布局图中的元数据被映射到卷中的某个块。用于文件布局图的ReFS术语是“运行表”。运行表使用虚拟集群编号(文件的块编号)作为密钥,并且使用逻辑集群编号(存储位置的块编号)作为值。该值还可包括诸如给定文件区间的校验和之类的信息。为了支持重影,ReFS利用针对文件布局图中范围的新类型的映射,其允许文件布局图将文件区间范围映射到由分层引擎提供的重影元数据。重影操作更新正被重影的文件区间范围以释放当前被分配给该范围的任何块,并且储存由分层引擎提供的重影元数据,而不是储存包含逻辑集群编号的元数据。ReFS中的重影是群集对齐的,这意味着重影操作发生在群集边界上,并且群集大小是文件驻留在的存储位置的固定属性。
图2A和2B分别解说了根据一个实施例的在对文件进行重影之前和之后的文件系统的文件布局图。在两个附图中,顶部行的块表示由文件系统针对具有至少九个块的文件而维护的文件布局图,并且底部行的块表示其中可储存文件块的存储卷(SV)210。在图2A中,文件布局图条目202A包含将文件块[0-2]映射到SV[59-61]的元数据,条目204A包含将文件块[3-4]映射到SV[55-56]的元数据,条目206A包含将文件块[5-7]映射到SV[65-67]的元数据,并且条目208A包含将文件块[8-9]映射到SV[70-71]的元数据。在本示例中,重影操作(诸如以上介绍的FSCTL重影区间方法)由对文件块[5-9]进行重影的名为“Client(客户端)1”的分层引擎执行。分层引擎将重影的区间储存在文件系统知识的外部的位置。在该示例中,分层引擎可将该位置称为“Block(块)10”。在重影操作期间,文件系统从分层引擎接收指示要重影的文件的数据范围([5-9])、分层引擎的标识符(Client1)以及在该示例中描述供读取操作期间由分层引擎使用的重影的区间的存储位置(块10)的元数据的请求。文件系统将来自分层引擎的该信息储存在它为重影的范围维护的元数据中。重影操作的结果如图2B所示。文件块[0-4]、条目202B和204B保持不变,但是文件块[5-9]现在被合并到单个文件布局图条目206B中并映射到[Client1,Block10],其指示分层引擎的标识符和供分层引擎使用的重影的文件区间的存储位置。为了检索重影的区间,Client1将请求从文件系统读取文件的文件块[5-9]。文件系统将确定文件块处于被Client1知道和管理的位置中,并且将返回元数据[Client1,Block10]以指示分层引擎(Client1)负责检索数据范围。Client1将验证标识符是否为其自己的,并接着在由元数据“Block10”表示的其重影的位置中检索该重影的区间的数据。
图3A和3B类似地解说了在重影操作之前和之后的文件布局图的另一示例。再次,在两个附图中,顶部行的块表示用于具有至少九个块的文件的文件布局图,并且底部行的块表示其中可储存文件块的存储卷(SV)310。在图3A中,文件布局图条目302A包含将文件块[0-5]映射到SV[59-64]的元数据,条目304A包含将文件块[6-7]映射到SV[55-56]的元数据,并且条目306A包含将文件块[8-9]映射到SV[70-71]的元数据。类似于以上的图2A和2B,重影操作由对文件块[3-7]进行重影的名为“Client1”的分层引擎执行。分层引擎将在其数据存储的“Block11”中储存重影的区间[3-5]并在其数据存储的“Block13”中储存重影的区间[6-7]。重影操作的结果如图3B所示。文件布局图现在具有四个条目。条目302B包含将文件块[0-2]映射到SV[59-61]的元数据,条目304B包含将文件块[3-5]映射到[Client1,Block11]的元数据,条目306B包含将文件块[6-7]映射到[Client1,Block13]的元数据,并且条目308B包含将文件块[8-9]映射到SV[70-71]的元数据。可以使用与图2A和2B的过程完全相同的过程来执行检索重影的文件区间。
图4A和4B解说了在重影操作之前和之后的文件布局图的又一个示例。在图4A中,文件布局图条目402A包含将文件块[0-5]映射到SV[59-64]的元数据,条目404A包含将文件块[6-7]映射到SV[55-56]的元数据,并且条目406A包含将文件块[8-9]映射到SV[70-71]的元数据。类似于以上的图2A-B和3A-B,重影操作由对文件块[3-7]进行重影的名为“Client1”的分层引擎执行。分层引擎将在其存储的“Block11”中储存重影的区间[3-5]。重影操作的结果如图4B所示。文件布局图仍具有三个条目,但是这些条目已被改变。条目402B包含将文件块[0-2]映射到SV[59-61]的元数据,条目404B包含将文件块[3-7]映射到[Client1,Block11]的元数据,并且条目308B包含将文件块[8-9]映射到SV[70-71]的元数据。
图5-7是解说在云分层示例的上下文中的以上所描述的重影方法的实施例的调用流程。图5解说了用于对文件区间进行重影的示例调用流程,图6解说了用于读取重影的文件的示例调用流程,并且图7解说了用于写入已被至少部分地重影的文件的示例调用流程。
具体而言,图5解说了用于使用云分层对文件区间进行重影的示例调用流程。可以通过使用以上所介绍的FSCTL重影区间方法来执行该过程。在该示例中,除了分层引擎560之外,重影过程中还涉及了附加客户端(重影引擎550)。重影引擎550可执行读取文件和确定文件区间将被储存在哪里(即,重影的元数据将在重影过程结束时引用的位置)的处理功能,以减轻分层引擎560需要执行这些操作的压力。如以上所描述,分层引擎560执行文件区间和元数据的读取和写入。
当执行初始重影操作时,要重影的文件可被整体地读取。在步骤502处,重影引擎550执行ReadFile(读取文件)操作并将其发送到分层引擎560。在步骤504处,分层引擎560已接收到ReadFile请求并将其传递到文件系统570以查找被储存在文件系统570的文件布局图中的文件的位置元数据。文件系统570已接收到读取请求并且已经由其元数据定位了文件。在步骤506处,文件系统570从盘580读取文件。盘580可以是用于储存文件数据的任何合适的本地存储介质,诸如HDD。在步骤508处,盘580用文件内容和文件被适当地读取了的状态指示进行回复。在步骤510处,文件系统570已接收到文件和状态指示并将它们传递回分层引擎560,该分层引擎560在步骤512处将它们传递给重影引擎550。在步骤512被完成之后,重影引擎550拥有文件的内容,并且可根据需要来操纵和储存文件。
在步骤514处,重影引擎550将文件上传到云590。云590可以是对重影引擎550而言可访问的任何合适的云存储位置。在步骤516处,云590已接收到经上传的文件并且向重影引擎550回复文件已被保存的成功指示。
为了完成重影过程,文件系统570的文件布局图必须用如以上所描述的元数据来被更新。在步骤518处,重影引擎550将GhostFile(重影文件)操作发送到分层引擎560,其指示它已将文件储存在云590中。如以上所描述,分层引擎560创建元数据,以保存在与重影的文件相对应的文件系统570的文件布局图条目中。元数据可包括分层引擎560的标识符和关于云590中储存了重影的数据的位置的附加元数据。在步骤520处,分层引擎560使用WriteMetadata(写元数据)命令将该元数据发送到文件系统570。在步骤522处,文件系统570将元数据写入被储存在盘580上的文件的文件布局图条目,并且在步骤524处,盘580返回写入成功了的指示。在步骤524之后,文件系统570的文件布局图现在包含具有分层引擎560的标识符的元数据和反映重影的数据的实际位置的附加元数据,分层引擎560可稍后使用上述元数据以响应于例如读取文件的用户应用请求来对重影的数据进行检索。在步骤526处,文件系统570通知分层引擎560WriteMetadata操作成功,并且在步骤528处,分层引擎560通知重影引擎550重影操作成功。文件(或其部分)现在是重影的。
图6解说了用于读取已使用云分层被重影了的文件或文件的一部分(诸如来自图5的文件)的示例调用流程。可以通过使用以上所介绍的FSCTL查询重影的区间的方法来执行该过程。分层引擎660、文件系统670、盘680、和云690可以是与图5中所见的那些实体相同的实体。在该示例中,客户端(用户app650)正在尝试访问重影的文件。分层引擎660可能已是或可能不是重影了该文件的分层引擎。因为文件是使用云分层来被重影的,所以云690可以具有可由能够读取被保存在文件系统670的文件布局图中的元数据的任何分层引擎访问的通用资源标识符(URI)。然而,如果文件是使用去重复而不是使用云分层来被重影的,则分层引擎660可能需要是重影了该文件的分层引擎,因为将不存在这样的URI。
在步骤602处,用户app 650请求读取文件或文件的一部分,并且该请求被传递到分层引擎660。在步骤604处,分层引擎660请求从文件系统670读取文件。在步骤606处,文件系统670从被保存在盘680上的文件的文件布局图中读取与文件相关联的元数据。在步骤608处,文件系统670确定文件的至少一个数据范围被储存在被分层引擎知道和管理的位置中,并且不位于盘680上的文件的一个或多个数据流内,即该至少一个范围被重影。在步骤610处,文件系统670向分层引擎660指示文件(或文件的至少一个区间)被重影。在其中文件系统670意识到分层引擎660能够读取重影的文件的元数据的替代实施例中,可能不需要步骤610-616。然而,出于解说目的,如果分层引擎660不是重影了文件的分层引擎,或者如果不同实体(诸如用户app 650)尝试在没有适当的分层引擎的情况下访问重影的文件,则很明显,文件系统670能够返回文件被重影了的状态指示。
在步骤612处,分层引擎660知道文件被重影并且它负责检索文件数据以便满足客户端用户app 650的读取请求。分层引擎660发出ReadMetadata(读元数据)命令以在文件系统670的用于文件的文件布局图条目中检索元数据。在步骤614处,文件系统670接收该请求并向盘680上的它的文件布局图发出读取请求以检索指示重影的文件的(或重影的文件区间的)位置的元数据,并且在步骤616处,文件系统670从盘680接收元数据。在步骤618处,文件系统670将元数据和读取成功了的状态指示发送到分层引擎660。
现在,分层引擎660可读取元数据以确定重影的文件的位置。在该示例中,分层引擎660发现文件被储存在云690中的云存储中。在步骤620处,分层引擎660请求从云690下载文件,并且在步骤622处,从云690接收文件和下载成功了的状态指示。最后,在步骤624处,分层引擎660将文件连同来自步骤602的初始读取请求成功了的指示一起发送给用户app650。用户app 650现在具有对文件的访问权。
图7解说了用于写入(如图5所示)以及读取(如图6所示)已使用云分层被至少部分地重影了的文件的示例调用流程。用户app 750、分层引擎760、文件系统770、盘780、和云790可以是与图6中所见的那些实体相同的实体。在该示例中,用户app 750已读取了重影的文件,并且正在尝试对文件作出更改并保存它们。
在步骤702处,用户app 750请求对被至少部分地重影的文件进行写入,并且该请求被传递到分层引擎760。分层引擎760可取决于文件的状态来执行不同的操作。如果对文件的修改是在被保存到文件系统770和盘780的各部分中被作出的,则分层引擎760可跳到步骤716。然而,如果修改影响了被重影到云790的文件区间,则分层引擎760可将文件的经修改的文件区间重聚到一个存储位置。否则,文件数据的内容可能被不正确地保存。该重聚过程被称为修补非对齐的写入,如图7所解说。例如,如果文件如图3B所示是重影的,并且用户app 750修改块[5]中的单个字节,则分层引擎760必须盖写整个块的数据,因为文件系统通常是块可寻址的(block-addressable)。作为结果,分层引擎760必须检索对应于块[5]的重影的区间,以重聚文件以供写入。
在步骤704处,分层引擎760通过执行图6的步骤612-622中所解说的读取过程来发起修补非对齐的写入过程。这可以通过使用如以上所描述的FSCTL查询重影的区间的方法来被执行。分层引擎760发出ReadMetadata(读元数据)命令以在文件系统770的用于文件的文件布局图条目中检索元数据。在步骤706处,文件系统770接收该请求并向其被储存在盘780上的文件布局图发出读取请求,以检索指示重影的文件的位置的元数据。在步骤708处,文件系统770从盘780接收元数据。在步骤710处,文件系统770将元数据和读取成功了的状态指示发送到分层引擎760。分层引擎760可读取元数据以确定重影的文件的位置。再次,分层引擎760发现文件被储存在云790中。在步骤712处,分层引擎760请求从云790下载文件,并且在步骤714处,从云790接收文件和下载成功了的状态指示。现在,分层引擎760具有由用户app 750修改了的文件的各区间,并且可将修改写入由文件系统770维护的文件。
在步骤716处,分层引擎向文件系统770发出写入命令,以将由用户app 750作出的修改写入文件,从而在过程中使先前被重影的各区间与它们的一个或多个数据流重聚。在步骤718处,文件系统770将修改写入本地存储盘780上的文件,并且修改用于文件的文件布局图条目中的元数据。在步骤720处,文件系统被通知写入是成功的,并且在步骤722处,文件系统向分层引擎760发送写入成功了的状态指示。在步骤724处,分层引擎760接着发送步骤702中所发出的写命令成功了的指示。
图8解说了根据本文中所描述的各重影方面的一个实施例的用于利用ReFS文件系统实现去重复的示例架构。该架构可实现以上所描述的方法,并且允许ReFS在重影的区间和稀疏(sparse)区间之间进行区分。如以上所描述,分层引擎负责读取和写入元数据以及储存包含重影的区间的存储位置的映射图。
图8被划分成三个块,即数据访问810、元数据820以及管理任务830。数据访问块810被进一步划分成用户模式(UM)和内核模式(KM)。用户模式指代用户同系统的交互。例如,用户可以使用可对文件系统上的文件执行读取和写入的用户应用812。这里,文件系统是ReFS 816。内核模式由被安装在实现图8的架构的计算系统上的操作系统(OS)来处置。KM中的动作对于使用用户应用812的用户而言是未知的。当用户应用812尝试向ReFS 816发出读取或写入命令时,该命令首先传递通过去重复(dedup)过滤器814。这里,去重复过滤器814充当分层引擎,但是特定用于去重复。使去重复过滤器814充当ReFS816和用户应用812之间的中介允许去重复过滤器814在用户应用812与文件数据交互之前和之后处置重影。
如图8中所解说,去重复过滤器814与元数据块820的各种组件交互。用户文件携带被储存在重解析点822中的标识重影的文件的重解析点。流映射图容器824保持组块元数据和散列,以用于标识重影的文件区间被储存的位置。数据容器826保持经去重复的数据区间。调用位图及相关联的元数据读取和写入(附图中它们的图标上带有“x”)对于实现去重复系统而言不再是必需的,因为ReFS 816能够跟踪重影的区间,如以上所描述。文件区间运行表828充当用于ReFS 816的文件布局图,从而将文件块的映射图保持到存储位置和/或元数据。文件区间运行表828中的元数据保持对流映射图824中的数据的引用。文件区间运行表828中的重影的区间携带固定大小的ID和范围(<offset,length>)。管理任务块830提供帮助重影过程更有效地运行的组件。重影/优化组件832在后处理去重复过程中帮助去重复过滤器814,非常类似于图5的重影引擎550。擦洗组件834周期性地扫描并修复去重复(Dedup)元数据中的错误。垃圾收集组件836周期性地回收由重影创建的被释放的磁盘空间。擦洗器838周期性地扫描并修复文件区间运行表828中的错误。
ReFS 816可被启用以提供重影过程的许多方面并减轻去重复过滤器814上的负担。ReFS 816可提供重影接口以用重影的ID标记重影的区间,并且同时释放重影的文件的磁盘空间。ReFS 816可进一步在数据访问路径上向去重复过滤器814提供重影状态查询接口,以允许去重复过滤器814查询ReFS数据文件的重影状态。ReFS 816可将各种重影参数(诸如举例而言,文件的重影的区间ID)储存在文件区间运行表828中。
在替代实施例中,ReFS 816可在文件区间运行表828中储存更少的信息。例如,文件区间运行表828中的各区间可携带一位标志以指示它们是否为重影的。在另一示例中,ReFS 816可通过以下来支持共存于相同文件上的多个HSM分层解决方案:为每个HSM分层解决方案分配唯一所有者ID,将该唯一所有者ID与每个重影的范围相关联,以及持久保存该唯一所有者ID而不是使用文件区间运行表828中的一位标志。
本文中所构想的实施例包括以下:
1.一种在包括文件系统和文件系统本地的存储的计算机系统中的方法,该文件系统管理文件的存储和检索以及将每个文件的数据储存在一个或多个数据流中,该方法包括:
由文件系统针对由文件系统管理的多个文件中的每一者维护关于文件的一个或多个数据范围的元数据,对于被储存在文件系统本地的存储内的每个数据范围,该元数据包括本地存储内的该数据范围的存储位置的指示;
由文件系统从分层引擎接收指示由文件系统管理的文件之一的数据范围由该分层引擎储存在被该分层引擎知道和管理的位置中(不在该文件的一个或多个数据流内)的请求,该请求包括该数据范围的标识和与该分层引擎相关联的标识符;以及
响应于该请求,针对所标识的数据范围在由文件系统维护的元数据内储存该数据范围没有被储存在该文件的一个或多个数据流内的指示和与分层引擎相关联的标识符。
2.如实施例1的方法,其中来自分层引擎的请求进一步包括供分层引擎使用的附加元数据,该附加元数据反映不在文件的一个或多个数据流内的数据范围的存储位置,该方法进一步包括:
响应于该请求,针对所标识的数据范围在由文件系统维护的元数据内储存在该请求中接收到的附加元数据。
3.如实施例1或2中任一项的方法,进一步包括:
由文件系统经由分层引擎从文件系统的客户端接收要访问文件的至少一部分内容的请求;
根据由文件系统维护的元数据确定文件的所请求部分的至少一个数据范围被分层引擎储存且没有被储存在文件的一个或多个数据流内;以及
对于被确定为由分层引擎储存且没有被储存在文件的一个或多个数据流内的该至少一个数据范围,向分层引擎返回其指示,
由此分层引擎负责检索没有被储存在文件的一个或多个数据流内的该数据范围,以便满足客户端请求。
4.如实施例3的方法,进一步包括:
对于文件的所请求部分的被储存在文件的一个或多个数据流内的任何数据范围,基于由文件系统针对这些范围而维护的元数据从文件系统的本地存储检索这些范围的数据,以及将这些范围的数据返回给分层引擎。
5.如实施例3或4中任一项的方法,客户端是用户应用或重影引擎。
6.如实施例1至5中任一项的方法,不在文件的一个或多个数据流内的位置是云存储位置。
7.如实施例1至6中任一项的方法,该方法进一步包括:
由文件系统从第二分层引擎接收指示文件的第二数据范围由该第二分层引擎储存于不在该文件的一个或多个数据流内的位置中的请求,该请求包括该第二数据范围的标识和与该第二分层引擎相关联的标识符;以及
响应于该请求,针对该第二数据范围在由文件系统维护的元数据内储存该第二数据范围没有被储存在该文件的一个或多个数据流内的指示和与该第二分层引擎相关联的标识符。
8.如实施例1至7中任一项的方法,进一步包括:
在针对所标识的数据范围在由文件系统维护的元数据内储存该所标识的数据范围没有被储存在该文件的一个或多个数据流内的指示和请求被接收自的分层引擎的标识符之后,
在文件系统的本地存储内释放所标识的数据范围的存储位置的磁盘空间。
9.如实施例1至8中任一项的方法,进一步包括:
由文件系统经由分层引擎从文件系统的客户端接收要对文件的至少一部分内容进行写入的请求;
根据由文件系统维护的元数据确定文件的所请求部分的至少一个数据范围被分层引擎储存且没有被储存在文件的一个或多个数据流内;
对于被确定为由分层引擎储存且没有被储存在文件的一个或多个数据流内的该至少一个数据范围,向分层引擎返回其指示,
由文件系统从分层引擎接收由该分层引擎储存的该至少一个数据范围;
在文件的一个或多个数据流内储存由分层引擎储存的所接收的至少一个数据范围;
针对所接收的至少一个数据范围中的每一者在由文件系统维护的元数据内储存该数据范围被储存在文件的一个或多个数据流内的指示;以及
响应该请求,对文件的内容进行写入。
10.如实施例1至9中任一项的方法,进一步包括:
由文件系统经由分层引擎从文件系统的客户端接收要删除文件的内容的请求;根据由文件系统维护的元数据确定所请求的文件的一个或多个数据范围被至少一个分层引擎储存且没有被储存在文件的一个或多个数据流内;
对于被确定为由该至少一个分层引擎储存且没有被储存在文件的一个或多个数据流内的该一个或多个数据范围,向该至少一个分层引擎返回其指示,
由此该至少一个分层引擎负责删除没有被储存在文件的一个或多个数据流内的该一个或多个数据范围;以及
对于所请求文件的被储存在文件的一个或多个数据流内的任何数据范围,从文件系统的本地存储删除这些范围的数据并删除文件系统针对这些范围而维护的元数据。
11.一种包括处理单元、存储器和在处理单元上执行的文件系统的计算设备,该文件系统管理文件的存储和检索,以及将每个文件的数据储存在一个或多个数据流中,该文件系统当在处理单元上执行时执行包括以下的操作:
针对由文件系统管理的多个文件中的每一者维护关于文件的一个或多个数据范围的元数据,对于被储存在文件系统本地的存储内的每个数据范围,该元数据包括本地存储内的该数据范围的存储位置的指示;
从分层引擎接收指示由文件系统管理的文件之一的数据范围由该分层引擎储存在被该分层引擎知道和管理的位置中(不在该文件的一个或多个数据流内)的请求,该请求包括该数据范围的标识和与该分层引擎相关联的标识符;以及响应于该请求,针对所标识的数据范围在所维护的元数据内储存该数据范围没有被储存在该文件的一个或多个数据流内的指示和与分层引擎相关联的标识符。
12.如实施例11的计算设备,其中来自分层引擎的请求进一步包括供分层引擎使用的附加元数据,该附加元数据反映不在文件的一个或多个数据流内的数据范围的存储位置,其中该文件系统进一步执行包括以下的操作:
响应于该请求,针对所标识的数据范围在所维护的元数据内储存在该请求中接收到的附加元数据。
13.如实施例11或12中任一项的计算设备,其中该文件系统进一步执行包括以下的操作:
经由分层引擎从文件系统的客户端接收要读取文件的至少一部分内容的请求;根据所维护的元数据确定文件的所请求部分的至少一个数据范围被分层引擎储存且没有被储存在文件的一个或多个数据流内;以及
对于被确定为由分层引擎储存且没有被储存在文件的一个或多个数据流内的该至少一个数据范围,向分层引擎返回其指示,
由此分层引擎负责检索没有被储存在文件的一个或多个数据流内的该数据范围,以便满足客户端请求。
14.如实施例13的计算设备,其中该文件系统进一步执行包括以下的操作:
对于所请求部分的被储存在文件的一个或多个数据流内的任何数据范围,基于针对这些范围的所维护的元数据从文件系统的本地存储检索这些范围的数据,以及将这些范围的数据返回给分层引擎。
15.如实施例13或14中任一项的计算设备,客户端是用户应用或重影引擎。
16.如实施例11至15中任一项的计算设备,不在文件的一个或多个数据流内的位置是云存储位置。
17.如实施例11至16中任一项的计算设备,其中该文件系统进一步执行包括以下的操作:
由文件系统从第二分层引擎接收指示文件的第二数据范围由该第二分层引擎储存于不在该文件的一个或多个数据流内的位置中的请求,该请求包括该第二数据范围的标识和与该第二分层引擎相关联的标识符;以及
响应于该请求,针对该第二数据范围在由文件系统维护的元数据内储存该第二数据范围没有被储存在该文件的一个或多个数据流内的指示和与该第二分层引擎相关联的标识符。
18.如实施例11至17中任一项的计算设备,其中该文件系统进一步执行包括以下的操作:
针对所标识的数据范围在由文件系统维护的元数据内储存该所标识的数据范围没有被储存在该文件的一个或多个数据流内的指示和请求被接收自的分层引擎的标识符之后,
在文件系统的本地存储内释放所标识的数据范围的存储位置的磁盘空间。
19.如实施例11至18中任一项的计算设备,其中该文件系统进一步执行包括以下的操作:
由文件系统经由分层引擎从文件系统的客户端接收要对文件的至少一部分内容进行写入的请求;
根据由文件系统维护的元数据确定文件的所请求部分的至少一个数据范围被分层引擎储存且没有被储存在文件的一个或多个数据流内;
对于被确定为由分层引擎储存且没有被储存在文件的一个或多个数据流内的该至少一个数据范围,向分层引擎返回其指示,
由文件系统从分层引擎接收由该分层引擎储存的该至少一个数据范围;
在文件的一个或多个数据流内储存由分层引擎储存的所接收的至少一个数据范围;
针对所接收的至少一个数据范围中的每一者在由文件系统维护的元数据内储存该数据范围被储存在文件的一个或多个数据流内的指示;以及
响应该请求,对文件的内容进行写入。
20.如实施例11至19中任一项的计算设备,其中该文件系统进一步执行包括以下的操作:
由文件系统经由分层引擎从文件系统的客户端接收要删除文件的内容的请求;根据由文件系统维护的元数据确定所请求的文件的一个或多个数据范围被至少一个分层引擎储存且没有被储存在文件的一个或多个数据流内;
对于被确定为由该至少一个分层引擎储存且没有被储存在文件的一个或多个数据流内的该一个或多个数据范围,向该至少一个分层引擎返回其指示,
由此该至少一个分层引擎负责删除没有被储存在文件的一个或多个数据流内的该一个或多个数据范围;以及
对于所请求文件的被储存在文件的一个或多个数据流内的任何数据范围,从文件系统的本地存储删除这些范围的数据并删除文件系统针对这些范围而维护的元数据。
本文中所描述的各方面的说明旨在提供对各个方面的结构的一般理解。所述说明并不旨在用作对利用本文中所描述的结构或方法的装置和系统的全部元素和特征的完整描述。在阅读本公开时许多其他方面对于本领域技术人员来说是显而易见的。可以使用其他方面且可以从本公开中推导出其他方面,使得可以在不背离本公开的范围的情况下作出结构和逻辑替换及改变。相应地,本公开和附图被视为是说明性的而非限制性的。
结合本文中所公开的各方面描述的各种说明性逻辑块、配置、模块、和方法步骤或指令可被实现为电子硬件或计算机软件。各种说明性组件、块、配置、模块、或步骤已在其功能性方面被一般性地描述。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。所描述的功能性可针对每种特定应用以不同方式来实现,但此类实现决策不应当被解读为致使脱离本公开的范围。
结合本文中所公开的各方面或其某些方面或部分描述的各种说明性逻辑块、配置、模块、和方法步骤或指令可以以被储存在计算机可读存储介质上的计算机可执行指令(即,程序代码)的形式来体现,所述指令在由诸如计算设备之类的机器执行时执行和/或实现本文中所描述的系统、方法和过程。具体而言,以上所描述的任何步骤、操作或功能可以以此类计算机可执行指令的形式来实现。计算机可读存储介质包括以用于存储信息的任何非瞬态(即,有形或物理)方法或技术实现的易失性和非易失性、可移动和不可移动介质,但是这样的计算机可读存储介质不包括信号。计算机可读存储介质包括但不限于,RAM、ROM、EEPROM、闪存存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或可被用来储存期望的信息且可由计算机访问的任何其他有形或物理介质。
虽然已用结构特征和/或动作专用的语言描述了本主题,但应当理解,所附权利要求书中限定的主题不必限于以上所描述的具体特征或动作。相反,以上所描述的具体特征和动作是作为实现权利要求书的示例而公开的,并且其他等价特征和动作旨在处于权利要求书的范围内。
提供这些方面的描述是为了使这些方面得以制定或使用。对这些方面的各种修改将容易是显而易见的,并且本文中所定义的一般原理可被应用到其他方面而不会背离本公开的范围。因此,本公开并非旨在被限定于在此所示的各方面,而是应符合可能与如下面的权利要求书所限定的原理和新颖性特征相一致的最广范围。
Claims (15)
1.一种在包括文件系统和所述文件系统本地的存储的计算机系统中的方法,所述文件系统管理文件的存储和检索以及将每个文件的数据储存在一个或多个数据流中,所述方法包括:
由所述文件系统针对由所述文件系统管理的多个文件中的每一者维护关于所述文件的一个或多个数据范围的元数据,对于被储存在所述文件系统本地的所述存储内的每个数据范围,所述元数据包括所述本地存储内的所述数据范围的存储位置的指示;
由所述文件系统从分层引擎接收指示由所述文件系统管理的所述文件之一的数据范围由所述分层引擎储存在被所述分层引擎知道和管理的位置中而不在所述文件的所述一个或多个数据流内的请求,所述请求包括所述数据范围的标识和与所述分层引擎相关联的标识符;以及
响应于所述请求,针对所标识的数据范围在由所述文件系统维护的所述元数据内储存所述数据范围没有被储存在所述文件的所述一个或多个数据流内的指示和与所述分层引擎相关联的所述标识符。
2.根据权利要求1所述的方法,其特征在于,来自所述分层引擎的所述请求进一步包括供所述分层引擎使用的附加元数据,所述附加元数据反映不在所述文件的所述一个或多个数据流内的所述数据范围的存储位置,所述方法进一步包括:
响应于所述请求,针对所标识的数据范围在由所述文件系统维护的所述元数据内储存在所述请求中接收到的所述附加元数据。
3.根据权利要求1或2中任一项所述的方法,其特征在于,进一步包括:
由所述文件系统经由所述分层引擎从所述文件系统的客户端接收要访问文件的至少一部分内容的请求;
根据由所述文件系统维护的所述元数据确定所述文件的所请求部分的至少一个数据范围被所述分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内;以及
对于被确定为由所述分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内的所述至少一个数据范围,向所述分层引擎返回其指示,
由此所述分层引擎负责检索没有被储存在所述文件的所述一个或多个数据流内的所述数据范围,以便满足所述客户端请求。
4.根据权利要求3所述的方法,其特征在于,进一步包括:
对于所述文件的所请求部分的被储存在所述文件的所述一个或多个数据流内的任何数据范围,基于由所述文件系统针对这些范围而维护的所述元数据从所述文件系统的所述本地存储检索这些范围的数据,以及将这些范围的数据返回给所述分层引擎。
5.根据权利要求3或4中任一项所述的方法,其特征在于,所述客户端是用户应用或重影引擎。
6.根据权利要求1至5中任一项所述的方法,其特征在于,不在所述文件的所述一个或多个数据流内的所述位置是云存储位置。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法进一步包括:
由所述文件系统从第二分层引擎接收指示所述文件的第二数据范围由所述第二分层引擎储存于不在所述文件的所述一个或多个数据流内的位置中的请求,所述请求包括所述第二数据范围的标识和与所述第二分层引擎相关联的标识符;以及
响应于所述请求,针对所述第二数据范围在由所述文件系统维护的所述元数据内储存所述第二数据范围没有被储存在所述文件的所述一个或多个数据流内的指示和与所述第二分层引擎相关联的所述标识符。
8.根据权利要求1至7中任一项所述的方法,其特征在于,进一步包括:
针对所标识的数据范围在由所述文件系统维护的所述元数据内储存所标识的数据范围没有被储存在所述文件的所述一个或多个数据流内的指示和所述请求被接收自的所述分层引擎的所述标识符之后,
在所述文件系统的所述本地存储内释放所标识的数据范围的所述存储位置的磁盘空间。
9.根据权利要求1至8中任一项所述的方法,其特征在于,进一步包括:
由所述文件系统经由所述分层引擎从所述文件系统的客户端接收要对文件的至少一部分内容进行写入的请求;
根据由所述文件系统维护的所述元数据确定所述文件的所请求部分的至少一个数据范围被所述分层引擎储存且不被储存在所述文件的所述一个或多个数据流内;
对于被确定为由所述分层引擎储存且不被储存在所述文件的所述一个或多个数据流内的所述至少一个数据范围,向所述分层引擎返回其指示,
由所述文件系统从所述分层引擎接收由所述分层引擎储存的所述至少一个数据范围;
在所述文件的所述一个或多个数据流内储存由所述分层引擎储存的所接收的至少一个数据范围;
针对所接收的至少一个数据范围中的每一者在由所述文件系统维护的所述元数据内储存所述数据范围被储存在所述文件的所述一个或多个数据流内的指示;以及
响应所述请求,对所述文件的内容进行写入。
10.根据权利要求1至9中任一项所述的方法,其特征在于,进一步包括:
由所述文件系统经由所述分层引擎从所述文件系统的客户端接收要删除文件的内容的请求;
根据由所述文件系统维护的所述元数据确定所请求的文件的一个或多个数据范围被至少一个分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内;
对于被确定为由所述至少一个分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内的所述一个或多个数据范围,向所述至少一个分层引擎返回其指示,
由此所述至少一个分层引擎负责删除没有被储存在所述文件的所述一个或多个数据流内的所述一个或多个数据范围;以及
对于所请求文件的被储存在所述文件的所述一个或多个数据流内的任何数据范围,从所述文件系统的所述本地存储删除这些范围的数据并删除所述文件系统针对这些范围而维护的所述元数据。
11.一种包括处理单元、存储器和在所述处理单元上执行的文件系统的计算设备,所述文件系统管理文件的存储和检索,以及将每个文件的数据储存在一个或多个数据流中,所述文件系统当在所述处理单元上执行时执行包括以下的操作:
针对由所述文件系统管理的多个文件中的每一者维护关于所述文件的一个或多个数据范围的元数据,对于被储存在所述文件系统本地的存储内的每个数据范围,所述元数据包括所述本地存储内的所述数据范围的存储位置的指示;
从分层引擎接收指示由所述文件系统管理的所述文件之一的数据范围由所述分层引擎储存在被所述分层引擎知道和管理的位置中而不在所述文件的所述一个或多个数据流内的请求,所述请求包括所述数据范围的标识和与所述分层引擎相关联的标识符;以及
响应于所述请求,针对所标识的数据范围在所维护的元数据内储存所述数据范围没有被储存在所述文件的所述一个或多个数据流内的指示和与所述分层引擎相关联的所述标识符。
12.根据权利要求11所述的计算设备,其特征在于,来自所述分层引擎的所述请求进一步包括供所述分层引擎使用的附加元数据,所述附加元数据反映不在所述文件的所述一个或多个数据流内的所述数据范围的存储位置,其中所述文件系统进一步执行包括以下的操作:
响应于所述请求,针对所标识的数据范围在所维护的元数据内储存在所述请求中接收到的所述附加元数据。
13.根据权利要求11或12中任一项所述的计算设备,其特征在于,所述文件系统进一步执行包括以下的操作:
经由所述分层引擎从所述文件系统的客户端接收要读取文件的至少一部分内容的请求;
根据所维护的元数据确定所述文件的所请求部分的至少一个数据范围被所述分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内;以及
对于被确定为由所述分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内的所述至少一个数据范围,向所述分层引擎返回其指示,
由此所述分层引擎负责检索没有被储存在所述文件的所述一个或多个数据流内的所述数据范围,以便满足所述客户端请求。
14.根据权利要求11至13中任一项所述的计算设备,其特征在于,所述文件系统进一步执行包括以下的操作:
由所述文件系统经由所述分层引擎从所述文件系统的客户端接收要对文件的至少一部分内容进行写入的请求;
根据由所述文件系统维护的所述元数据确定所述文件的所请求部分的至少一个数据范围被所述分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内;
对于被确定为由所述分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内的所述至少一个数据范围,向所述分层引擎返回其指示,
由所述文件系统从所述分层引擎接收由所述分层引擎储存的所述至少一个数据范围;
在所述文件的所述一个或多个数据流内储存由所述分层引擎储存的所接收的至少一个数据范围;
针对所接收的至少一个数据范围中的每一者在由所述文件系统维护的所述元数据内储存所述数据范围被储存在所述文件的所述一个或多个数据流内的指示;以及
响应所述请求,对所述文件的内容进行写入。
15.根据权利要求11至14中任一项所述的计算设备,其特征在于,所述文件系统进一步执行包括以下的操作:
由所述文件系统经由所述分层引擎从所述文件系统的客户端接收要删除文件的内容的请求;
根据由所述文件系统维护的所述元数据确定所请求的文件的一个或多个数据范围被至少一个分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内;
对于被确定为由所述至少一个分层引擎储存且没有被储存在所述文件的所述一个或多个数据流内的所述一个或多个数据范围,向所述至少一个分层引擎返回其指示,
由此所述至少一个分层引擎负责删除没有被储存在所述文件的所述一个或多个数据流内的所述一个或多个数据范围;以及
对于所请求文件的被储存在所述文件的所述一个或多个数据流内的任何数据范围,从所述文件系统的所述本地存储删除这些范围的数据并删除所述文件系统针对这些范围而维护的所述元数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662315996P | 2016-03-31 | 2016-03-31 | |
US62/315,996 | 2016-03-31 | ||
US15/198,587 US20170286442A1 (en) | 2016-03-31 | 2016-06-30 | File system support for file-level ghosting |
US15/198,587 | 2016-06-30 | ||
PCT/US2017/022864 WO2017172377A1 (en) | 2016-03-31 | 2017-03-17 | File system support for file-level ghosting |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109074379A true CN109074379A (zh) | 2018-12-21 |
Family
ID=59961598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780022482.2A Withdrawn CN109074379A (zh) | 2016-03-31 | 2017-03-17 | 针对文件级重影的文件系统支持 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170286442A1 (zh) |
EP (1) | EP3436973A1 (zh) |
CN (1) | CN109074379A (zh) |
WO (1) | WO2017172377A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016032904A1 (en) * | 2014-08-27 | 2016-03-03 | Mokhtarzada Holdings, Llc | Method and system for expanding storage capacity of a drive using cloud storage systems |
US10257258B2 (en) | 2016-10-31 | 2019-04-09 | International Business Machines Corporation | Transferring data between block and file storage systems |
US11249664B2 (en) * | 2018-10-09 | 2022-02-15 | Western Digital Technologies, Inc. | File system metadata decoding for optimizing flash translation layer operations |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005050381A2 (en) * | 2003-11-13 | 2005-06-02 | Commvault Systems, Inc. | Systems and methods for performing storage operations using network attached storage |
US8694469B2 (en) * | 2009-12-28 | 2014-04-08 | Riverbed Technology, Inc. | Cloud synthetic backups |
US9852149B1 (en) * | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Transferring and caching a cloud file in a distributed filesystem |
US9984093B2 (en) * | 2014-08-06 | 2018-05-29 | Quest Software Inc. | Technique selection in a deduplication aware client environment |
US10515055B2 (en) * | 2015-09-18 | 2019-12-24 | Netapp, Inc. | Mapping logical identifiers using multiple identifier spaces |
US9946605B2 (en) * | 2015-11-25 | 2018-04-17 | Veritas Technologies Llc | Systems and methods for taking snapshots in a deduplicated virtual file system |
-
2016
- 2016-06-30 US US15/198,587 patent/US20170286442A1/en not_active Abandoned
-
2017
- 2017-03-17 WO PCT/US2017/022864 patent/WO2017172377A1/en active Application Filing
- 2017-03-17 EP EP17714130.6A patent/EP3436973A1/en not_active Ceased
- 2017-03-17 CN CN201780022482.2A patent/CN109074379A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
WO2017172377A1 (en) | 2017-10-05 |
US20170286442A1 (en) | 2017-10-05 |
EP3436973A1 (en) | 2019-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10664453B1 (en) | Time-based data partitioning | |
CN101743546B (zh) | 用于提供快照的文件系统的分层存储管理 | |
US7386552B2 (en) | Methods of migrating data between storage apparatuses | |
US10303649B2 (en) | Storage media abstraction for uniform data storage | |
CN107180092B (zh) | 一种文件系统的控制方法、装置及终端 | |
US9916258B2 (en) | Resource efficient scale-out file systems | |
US9449007B1 (en) | Controlling access to XAM metadata | |
CN111417939A (zh) | 分布式文件系统中的分层存储 | |
CN109906446A (zh) | 存储虚拟化系统中的多层合并 | |
US8285749B2 (en) | Computer system and recording medium | |
US7376681B1 (en) | Methods and apparatus for accessing information in a hierarchical file system | |
CN103038742B (zh) | 用于在分布式存储系统内动态复制数据的方法和系统 | |
CN104778192B9 (zh) | 表示可内容寻址存储系统的目录结构 | |
US7366836B1 (en) | Software system for providing storage system functionality | |
EP4241166A1 (en) | Data connector component for implementing data requests | |
US10359964B2 (en) | Reducing time to read many files from tape | |
CN109074379A (zh) | 针对文件级重影的文件系统支持 | |
US9727588B1 (en) | Applying XAM processes | |
CN113448946B (zh) | 数据迁移方法及装置、电子设备 | |
US10884649B2 (en) | Tape drive data reclamation | |
CN109697021A (zh) | 一种磁盘快照的数据处理方法及装置 | |
Koltsidas et al. | Seamlessly integrating disk and tape in a multi-tiered distributed file system | |
US7979665B1 (en) | Method and apparatus for processing access requests in a computer system | |
EP2104045A2 (en) | Methods and apparatus for transferring content from a storage system | |
KR102167167B1 (ko) | Ssd 장치를 관리하는 방법 및 그 ssd 장치 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20181221 |