CN110622147B - 存储虚拟化系统中占位符的元数据存储 - Google Patents

存储虚拟化系统中占位符的元数据存储 Download PDF

Info

Publication number
CN110622147B
CN110622147B CN201880031642.4A CN201880031642A CN110622147B CN 110622147 B CN110622147 B CN 110622147B CN 201880031642 A CN201880031642 A CN 201880031642A CN 110622147 B CN110622147 B CN 110622147B
Authority
CN
China
Prior art keywords
file
blob
placeholder
data
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880031642.4A
Other languages
English (en)
Other versions
CN110622147A (zh
Inventor
N·R·克里斯蒂安森
C·A·巴克豪斯
M·J·诺瓦克
谢平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110622147A publication Critical patent/CN110622147A/zh
Application granted granted Critical
Publication of CN110622147B publication Critical patent/CN110622147B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

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

Abstract

在计算设备上执行的文件系统可将文件的占位符存储在计算设备的辅助存储设备上。该占位符可以包括:稀疏数据流,该稀疏数据流不包含该文件的该数据或包含该文件的该数据中的一些数据,并且所述稀疏数据流包含信息,该信息使得该文件的远程存储数据能够从该网络被取回。当用于文件的数据中的一些或全部被远程存储时,计算设备可以依赖于存储虚拟化提供器来创建用于文件的元数据。因此,在计算设备上执行的文件系统可以从存储虚拟化提供器接收用于存储与文件相关联的元数据的请求。响应于此请求,文件系统可以将元数据作为二进制大对象(BLOB)存储在针对文件的占位符的辅助数据流中。

Description

存储虚拟化系统中占位符的元数据存储
技术领域
本公开总体上涉及计算机领域,并且更具体地涉及存储虚拟化系统中占位符的元数据存储。
背景技术
随着计算机系统中对数据存储的需求不断增长,云存储提供程序的使用正在增加。使用云存储时,文件或目录的数据被存储“在云中”,而不是被存储在用户的本地计算设备上。当需要文件或目录的数据时,可以将其“从云中”拉回到用户的本地计算设备上。在典型的计算机系统中,位于例如索引器的计算设备上的组件可以被配置为索引与文件相关联的属性,并将这些属性作为元数据与文件一起存储。不幸的是,为存储在云中的文件创建和存储元数据的过程不像将这些文件本地存储在计算设备上时那样无缝。
发明内容
本文公开了允许从存储虚拟化提供器或期望存储由存储虚拟化提供器托管的文件的元数据的任何其他应用、模块或组件接收文件的元数据,并使元数据被存储在本地计算设备的辅助存储设备上的文件的占位符内。例如,在存储虚拟化系统中,文件的数据可以被远程地存储诸如在网络上(即,在云中),并且由本地计算设备的应用、模块或组件对文件的数据的访问可以由在本地计算设备上执行的存储虚拟化提供器处理,该存储虚拟化提供器被配置为根据需要取回文件的远程存储数据。在这样的系统中,计算设备的文件系统的存储虚拟化过滤器可以将文件的占位符存储在计算设备的辅助存储设备上。文件的占位符可以包括:稀疏数据流,该稀疏数据流不包含文件的数据或包含文件的数据中的一些数据,并且所述稀疏数据流包含信息,该信息使得文件的远程存储的数据能够根据需要从网络被取回。尽管占位符实际上可能不保持文件的任意数据,但占位符可能会呈现在计算设备上运行的应用中,就好像完整文件被存储在辅助存储设备中一样。然而,由于文件的某些或全部数据是远程存储的,并且不存在于本地计算设备上,因此本地计算设备上可能会为文件生成诸如索引器的元数据的某些应用或组件无法这样做。因为并非文件的所有数据都驻留在本地计算设备上。例如在某些元数据的情况下,文件系统可能需要依赖存储虚拟化提供器来生成与文件相关联的元数据,因为存储虚拟化提供器在远程存储设备上管理完整的文件(即其所有数据)。本文公开了使本地计算设备上的诸如存储虚拟化提供器的应用或其他实体能够请求将用于远程存储的文件的元数据与本地计算设备上的文件相关联地存储的方法和装置。根据本文公开的方法和装置,在一个实施例中,当接收到这样的请求时,本地计算设备上的文件系统的存储虚拟化过滤器将占位符内的文件的元数据存储在计算设备的辅助存储设备上。在一个实施例中,文件系统可以将元数据作为二进制大对象(BLOB)存储在文件的占位符的辅助数据流中。
附图说明
当结合附图阅读时,将更好地理解前述发明内容以及下面的具体实施方式。为了说明本公开,示出了本公开的各个方面。然而,本公开不限于所讨论的特定方面。在附图中:
图1示出了示例性计算设备,其中可以采用本文公开的方面;
图2示出了根据一个实施例的用于存储虚拟化的示例架构;
图3A示出了根据一个实施例的常规文件;
图3B示出了根据一个实施例的用于文件的占位符;
图3C示出了文件的占位符的重新解析点;
图4示出了根据一个实施例的用于存储虚拟化的架构的更多细节;
图5示出了根据一个实施例的为文件创建占位符的过程;
图6示出了根据一个实施例的访问用于占位符的文件数据的过程;
图7A示出了图6的文件数据访问过程的示例细节;
图7B示出了图6的文件数据访问过程的另外的示例细节;
图8A示出了根据一个实施例的常规目录;
图8B示出了根据一个实施例的用于目录的占位符;
图8C示出了根据一个实施例的用于目录占位符的重新解析点;
图9示出了根据一个实施例的用于占位符目录的枚举的过程;
图10是示例目录架构的图;
图11示出了用于将元数据存储在文件的占位符的辅助数据流中的过程;
图12示出了示例辅助数据流;以及
图13示出了用于创建和存储二进制大对象(BLOB)的过程。
具体实施方式
本文公开了允许从存储虚拟化提供程序或任意其他应用、模块或组件接收文件的元数据的技术,其希望对存储虚拟化提供程序托管的文件的元数据进行存储,并将该元数据存储在本地计算设备的辅助存储装置上的该文件的占位符内。例如在计算设备上执行的文件系统可以从存储虚拟化提供程序或从另一个应用、模块或组件接收用于存储与文件相关联的元数据的请求。并且响应于该请求,文件系统可以将元数据作为二进制大对象(BLOB)存储在文件的占位符的辅助数据流中。
示例计算设备
图1示出了示例计算设备112,其中可以实现或体现本文公开的技术和解决方案。计算设备112可以是各种不同类型的计算设备中的任意一种,包括但不限于计算机、个人计算机、服务器、便携式计算机、移动计算机、可穿戴计算机、笔记本电脑、平板计算机、个人数字助理、智能手机、数码相机或自动执行计算的任意其他机器。
计算设备112包括处理单元114、系统存储器116和系统总线118。系统总线118将包括但不限于将系统存储器116耦合到处理单元114的系统组件。处理单元114可以是各种可用处理器中的任意一个。双微处理器和其他多处理器架构也可以用作处理单元114。
系统总线118可以是几种类型的总线结构中的任意一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用任意可用总线架构的本地总线,包括但不限于:行业标准架构(ISA)、微通道架构(MSA)、扩展ISA(EISA)、智能驱动电子(IDE)、VESA本地总线(VLB)、外围组件互连(PCI)、卡总线、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、火线(IEEE 1394)和小型计算机系统接口(SCSI)。
系统存储器116包括易失性存储器120和非易失性存储器122。基本输入/输出系统(BIOS)被存储在非易失性存储器122中,该基本输入/输出系统(BIOS)包含诸如在启动期间在计算设备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(DRRAM)。
计算设备112还可以包括可移除/不可移除、易失性/非易失性计算机可读存储介质,其在本文中可以称为辅助存储装置。图1以例如磁盘存储设备124的形式示出了辅助存储设备。辅助存储设备(例如磁盘存储设备124)包括但不限于像磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、存储器卡(诸如SD存储器卡)、或记忆棒的设备。此外,磁盘存储设备124可以单独地或与其他存储介质结合地包括存储介质,包括但不限于光盘驱动器,诸如光盘ROM设备(CD-ROM)、可记录CD的驱动器(CD-RDrive)、CD可重写驱动器(CD-RW驱动器)、或数字多功能磁盘ROM驱动器(DVD-ROM)。为了促进磁盘存储设备124到系统总线118的连接,通常使用可移动或不可移动接口,诸如接口126。术语磁盘存储设备和辅助存储设备在本文中可以互换使用。
图1进一步描绘了充当用户与计算设备112中描述的基本计算机资源之间的中介的软件。这种软件包括操作系统128。可以存储在磁盘存储设备124上的操作系统128充当控制和分配计算设备112的资源。应用130利用操作系统128通过存储在系统存储器116或磁盘存储设备124中的程序模块132和程序数据134对资源进行管理。应当理解,本文描述的方面可以用各种操作系统或操作系统的组合来实现。如图进一步所示,操作系统128包括文件系统129,用于在磁盘存储设备124上存储和组织计算机文件及其包含的数据,以使其易于查找和访问它们。
用户可以通过输入设备136向计算设备112输入命令或信息。输入设备136包括但不限于定点设备,诸如鼠标、轨迹球、触控笔、触摸板、键盘、麦克风、游戏杆、游戏垫、卫星天线、扫描仪、电视调谐卡、数码相机、数码摄像机、网络摄像机等。这些和其他输入设备通过系统总线118经由接口端口138连接到处理单元114。接口端口138包括例如串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备140使用与输入设备136相同类型的端口中的一些。因此,例如USB端口可用于向计算设备112提供输入,并将信息从计算设备112输出到输出设备140。提供输出适配器142以说明除了其他输出设备140之外,还需要特殊适配器的一些输出设备140,例如监视器、扬声器和打印机。作为示例而非限制,输出适配器142包括视频和声卡,它们提供了输出设备140和系统总线118之间的连接的部件。应当注意,其他设备和/或设备系统同时提供输入和输出功能两者,诸如远程计算机144。
计算设备112可以使用到诸如一个或多个远程计算设备144的一个或多个远程计算设备的逻辑连接,在联网环境中运行。一个或多个远程计算设备144可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的设备、对等设备、与计算设备112完全相同的另一个计算设备等,并且通常包括相对于计算设备112所述的许多或所有元素。为了简洁起见,仅示出了具有远程计算设备144的存储器存储设备146。远程计算设备144通过网络接口148逻辑地连接到计算设备112,然后经由通信连接150物理地连接到计算设备112。网络接口148涵盖诸如局域网(LAN)和广域网(WAN)的通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜缆分布式数据接口(CDDI)、以太网、令牌环等。WAN技术包括但不限于点对点链接、如集成服务数字网络(ISDN)及其上的变体的电路交换网络、分组交换网络和数字用户线(DSL)。
一个或多个通信连接150是指用来将网络接口148连接到总线118的硬件/软件。尽管为了说明清楚起见,示出了通信连接150在计算设备112内部,但是它也可以在计算设备112外部。仅出于示例性目的,连接到网络接口148所必需的硬件/软件包括内部和外部技术,诸如包括常规电话级调制解调器、电缆调制解调器和DSL调制解调器的调制解调器、ISDN适配器和以太网卡。
如本文中所使用的,术语“组件”、“系统”、“模块”等旨在指代与计算机有关的实体,或者是硬件、硬件和软件的组合、软件或者是执行中的软件。例如组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用和服务器都可以是组件。一个或多个组件可以驻留在执行的进程和/或线程中,并且组件可以位于一台计算机上和/或分布在两个或多个计算机之间。
存储虚拟化
根据本文公开的存储虚拟化技术,可以在本地计算设备上为文件或目录创建占位符。占位符在计算设备上作为常规文件或目录呈现给用户或应用。也就是说,应用可以在文件或目录上发出I/O调用,就像文件或目录存储在本地一样,但是占位符可能不包含文件或目录的所有数据。图2是示出了根据一个实施例的用于实现本文描述的存储虚拟化技术的架构的组件的框图。如图所示,在一个实施例中,该架构包括:用户模式存储虚拟化提供器模块202,负责从网络208(例如“从云”)取回远程存储的文件和目录数据;文件系统过滤器204,在本文中被称为存储虚拟化过滤器,其创建和管理文件和目录的占位符,并通知用户模式存储虚拟化提供器对其数据由过滤器204和提供器202管理的文件或目录的访问尝试;用户模式库206,抽象出提供器过滤器通信的许多细节;以及外壳210,用作应用130和存储虚拟化提供器202访问文件系统129的接口。注意,尽管存储虚拟化提供器202在图2所示的实施例中以用户模式运行,然而,在其他实施例中,存储虚拟化提供器202可以是内核模式组件。所公开的架构不限于本文描述的用户模式实施例。
在所示的实施例中,用户模式存储虚拟化提供器模块202可以由向计算设备用户提供远程存储服务的远程存储服务或实体的开发者来实现(例如编程)。有时也称为云存储服务的这种远程存储服务的示例包括Microsoft OneDrive和类似服务。因此,可能存在多个不同的存储虚拟化提供器,每个虚拟化提供器都用于不同的远程存储服务。在所示的实施例中,存储虚拟化提供器模块202经由由用户模式库206定义和实现的应用编程接口(API)来与存储虚拟化过滤器204对接。存储虚拟化提供器模块202实现智能和功能,智能和功能对向网络208上的远程存储位置(未显示)存储文件或目录数据/从网络208上的远程存储位置(未显示)取回文件或目录数据是必需的。
用户模式库206抽象化了存储虚拟化过滤器204和存储虚拟化提供器202之间的许多通信细节。通过提供在外观上比直接调用各种文件系统API更简单和更统一的API,可以使实现存储虚拟化提供器202更容易。这些API旨在重新分发并完整记录,以供第三方开发用于其远程存储服务的存储虚拟化提供器。而且,通过实现这样的库206,可以在不破坏应用兼容性的情况下改变底层的提供器-过滤器通信接口。
如上所述,本文描述的存储虚拟化技术可以应用于计算设备中的文件和目录。仅为了便于说明,将首先解释这些存储虚拟化技术在文件上的操作,然后是这些技术在目录上的操作的解释。
文件的存储虚拟化
在一个实施例中,文件可以以常规文件或占位符开始。图3A示出了常规文件300的示例。如图所示,常规文件通常包含关于文件的元数据302(例如属性、时间戳等)、保存持文件数据的主要数据流304、以及可选的一个或多个辅助数据流306。相反,如图3B所示,在一个实施例中,占位符308包括:用于文件的元数据310,其可以与常规文件300的元数据302完全相同;以及稀疏的主数据流312,其可以不包含文件的数据或包含文件的某些数据(其余数据由远程存储提供器远程存储);信息314,使得文件的远程存储数据能够被取回;以及可选的一个或多个辅助数据流316。由于占位符308表示的文件的全部或部分数据未作为主要数据流被存储在文件中,因此占位符308可能会占用计算设备的本地存储的较少的空间。请注意,占位符有时可能包含文件的所有数据(例如因为已取回所有数据),但作为占位符,它仍由本文所述的存储虚拟化过滤器204和存储虚拟化提供器202管理。
参照图3C,在一个实施例中,使文件的远程存储的数据能够被取回的信息314包括重新解析点。如图所示,重新解析点是包括标签322和伴随数据324的数据结构。标签322用于将重新解析点与计算设备的文件系统堆栈中的特定文件系统过滤器相关联。在本实施例中,标签将重新解析点标识为与存储虚拟化过滤器204相关联。在一个实施例中,重新解析点的数据324可包括与存储虚拟化提供器202关联的全局唯一标识符(GUID),以将存储虚拟化提供器202标识为占位符的实际文件数据的提供器。另外,数据324可以包括文件本身的标识符,诸如文件名或其他文件标识符。
在一个实施例中,占位符不包含任意文件数据。相反,在存在访问由占位符表示的文件的数据的请求时,存储虚拟化过滤器204必须与存储虚拟化提供器202配合以取回所有文件数据,从而有效地恢复本地磁盘存储设备124上的文件的全部内容。然而,在其他实施例中,部分数据取回能够被实现。在这些实施例中,文件的主数据流的某些范围可以作为占位符的一部分被本地存储,而其他范围由存储虚拟化提供器202远程存储和管理。在这样的实施例中,占位符的重新解析点的数据324可能包含数据结构,诸如“磁盘上”位图,该数据结构标识本地存储的文件范围(即块)与远程存储的文件范围。在一个实施例中,这种磁盘上位图可以包括比特序列,其中每个比特代表文件的一个4KB块。在其他实施例中,每个比特可以代表不同大小的数据块。在一个实施例中,如果对应的块已经存在于本地存储器中,则设置一个比特。如下所述,当接收到读取由占位符表示的文件范围的请求时,存储虚拟化过滤器204检查磁盘位图以确定文件的哪些部分(如果有的话)在本地存储中不存在。对于不存在的文件的每个范围,存储虚拟化过滤器204然后将请求虚拟化提供器202从远程存储设备中取回那些范围。
图4是图2的存储虚拟化架构的框图,体现在实现Microsoft Windows操作系统并且其中文件系统129包括Microsoft NTFS文件系统的计算设备中。应当理解,图4所示的架构仅仅是一个示例,并且本文描述的存储虚拟化解决方案的各方面绝不限于该示例环境中的实现。相反,可以在任意合适的操作系统和文件系统环境中实现本文公开的方面。
如图4所示,应用130可以通过经由Windows操作系统的Win32API 402调用适当的I/O调用来执行文件操作(例如创建,打开,读取,写入)。这些I/O调用然后将传递到操作系统内核空间中的I/O管理器404。I/O管理器会将I/O调用传递到文件系统的堆栈,该堆栈可能包含一个或多个文件系统过滤器。最初,该调用将通过这些过滤器传递到文件系统129本身。在Microsoft的NTFS重新解析点技术的情况下,如果文件系统访问磁盘存储设备124上包含重新解析点数据结构的文件,则文件系统会将I/O请求传递回堆栈406。对应于重新解析点的标记(即,全局唯一标识符)的文件系统过滤器将把I/O识别为与要由该过滤器处理的其访问的文件有关。过滤器将处理I/O,并且然后将I/O传递回文件系统,以进行过滤器所促进的恰当处理。
在本文所述的占位符文件的情况下,文件系统将把I/O请求向上传递回堆栈到存储虚拟化过滤器204,该存储虚拟化过滤器204将根据下文所述的方法处理I/O请求。
继续参考图4,图5是示出了根据图4所示的示例架构的由存储虚拟化过滤器204执行的以便为文件创建占位符的步骤的流程图。该过程可以由存储虚拟化提供器202发起,其可以调用用户模式库206的CreatePlaceholders功能来这样做。库206将进而将该调用转换为到存储虚拟化过滤器204的对应CreatePlaceholders消息,存储虚拟化过滤器204将在图5的步骤502中接收该消息。接下来,响应于CreatePlaceholders消息,存储虚拟化过滤器204将创建一个长度为0的文件,其用作占位符,如步骤504所示。CreatePlaceholders消息将包含由存储虚拟化提供器202给出的占位符的文件名。在步骤506,存储虚拟化过滤器204将0长度文件标记为稀疏文件。在一个实施例中,这可以通过设置占位符的元数据的属性来完成。标记为稀疏文件的文件将被基础文件系统识别为包含稀疏数据集合-通常为全零。文件系统将通过不为文件分配硬盘驱动器空间来做出响应(在可能包含非零数据的区域中除外)。
继续图5所示的过程,在步骤508,存储虚拟化过滤器204将文件的主数据流长度设置为存储虚拟化提供器202在CreatePlaceholders消息中给出的值。在步骤510中,存储虚拟化过滤器204为占位符文件设置任意附加元数据,诸如时间戳、访问控制列表(ACL)以及由存储虚拟化提供器202在CreatePlaceholders消息中提供的任意其他元数据。最后,在步骤512中,存储虚拟化过滤器204设置重新解析点并将其存储在占位符文件中。如以上结合图3C所述,重新解析点包括将其与存储虚拟化过滤器204和数据相关联的标签,其可以包括请求占位符的存储虚拟化提供器202的标识符、文件名或存储虚拟化提供器202给定的其他文件标识符、以及磁盘位图或用于识别占位符是否包含文件数据的任何范围的其他数据结构。
一旦占位符的创建完成,则占位符将作为在计算设备上本地存储的任意其他文件呈现给用户或应用(例如应用130)。即,文件数据的远程存储的细节被有效地从应用中隐藏了。
为了使应用对文件发出I/O请求,应用通常必须首先请求文件系统打开文件。在本实施例中,应用将经由Win32 API发出带有OPEN_EXISTING标志设置的CreateFile调用。打开文件的请求将通过文件系统堆栈406向下流到文件系统129。如上所述,在占位符文件的情况下,文件系统129将检测文件中的重新解析点的存在,并且将将请求发送回堆栈406,其中存储虚拟化过滤器204将拦截该请求。存储虚拟化过滤器204将执行打开文件所需的操作,然后将请求以允许文件系统完成文件打开操作的方式重新发布到文件系统129。然后,文件系统会将打开的文件的句柄返回给请求的应用。此时,应用130然后可以对文件发出I/O调用(例如读取、写入等)。
图6是示出了根据一个实施例的用于处理I/O请求以读取由占位符表示的文件的全部或一部分的方法的流程图。读取由占位符表示的文件的请求可以以ReadFile调用的形式经由Win32 API 402来自应用130。如所示,在步骤602中,存储虚拟化过滤器204将接收到ReadFile调用。在步骤604,存储虚拟化过滤器204将确定所请求的文件数据范围是否存在于占位符中,或者其是否由存储虚拟化提供器202远程存储。可以通过检查磁盘上的位图来进行此确定,该位图是作为占位符的重新解析点的数据的一部分被存储的。如果存储虚拟化过滤器204确定请求的数据范围被存储在本地(例如因为它是与先前的I/O请求一起从远程存储设备中取回的),则在步骤606中,存储虚拟化过滤器204将ReadFile调用传递到文件系统129用于正常处理。然后,文件系统会将数据返回到发出请求的应用。
如果本地存储设备中不存在全部或某些数据,则在步骤608中,存储虚拟化过滤器204必须制定一个或多个GetFileData请求到存储虚拟化提供器202以取回所需数据。读取通常会导致部分取回,而某些数据修改操作可能会触发完整文件的取回。一旦确定了期望的取回范围,存储虚拟化过滤器204就必须决定是否为所有范围、部分范围或不为该范围生成GetFileData请求。优选地,过滤器尝试仅针对特定范围生成一次GetFileData。因此,如果较早的GetFileData请求未完成,并且其请求范围与未完成的GetFileData请求重叠的另一个操作到达,则过滤器204将修剪第二个操作所需的范围,以便其对提供器202的GetFileData请求不与先前的请求重叠。这种修剪可能会导致根本没有GetFileData请求。图7A示出了该功能。
如图7A所示,第二ReadFile请求(“ReadFile 2”)与先前请求(“ReadFile 1”)重叠。因此,存储虚拟化过滤器204修剪它生成的对存储虚拟化提供器202的GetFileData请求的请求范围。这两个先前的请求完全涵盖了第三个ReadFile请求(“ReadFile 3”),因此不需要过滤器204取回数据以满足该请求。ReadFile 3所请求的所有数据将已经响应前两个请求而被取回。因此,如图所示,存储虚拟化过滤器204确定它需要取回的远程存储数据的任何部分(即,它已确定需要一个或多个GetFileData请求的数据)是否先前已经从存储虚拟化提供器202被请求但尚未接收到,并且如果是,则它会修剪对存储虚拟化提供器的任何新请求,以使它们不会与以前请求但尚未收到数据的任何请求重叠。
如图7B所示,存储虚拟化过滤器204可以通过检查磁盘上的位图来确定文件数据的哪些范围需要从存储虚拟化提供器202请求,在一个实施例中,磁盘上的位图被保留为占位符的重新解析点的数据的一部分。位图在图中被描绘为中间的矩形。已存储在磁盘上的文件范围由位图中带阴影的空格指示。如上所述,位图的每个位可以指示由占位符表示的文件的对应范围(例如每个比特可以代表对应的4KB范围)的状态。如图7B中所示,在检查位图之后,存储虚拟化过滤器204能够确定可以从磁盘读取哪些数据以及从存储虚拟化提供器202需要哪些数据。底部矩形示出了比较ReadFile请求与磁盘上位图的结果。指示了过滤器将从磁盘读取的区域,作为过滤器需要从提供器202获得的区域。
在一个实施例中,存储虚拟化过滤器204还可以维护每个文件的运行中GetFileData请求树。树中的每个条目都会记录过滤器已从提供器请求但尚未收到的数据的偏移量和长度。可以通过文件偏移量来索引树。对于过滤器204确定尚不存在的每个区域,过滤器204可以查阅运行中的树以确定是否可能已经请求了其可能需要的区域中的任意一个。这可能会导致GetFileData请求的进一步拆分。一旦过滤器确定了它需要发送的最后GetFileData请求集合,它就可以将GetFileData请求插入到运行中的树中并将它们发送给提供器202。
再次参考图6,在步骤608中,存储虚拟化过滤器204将向存储虚拟化提供器202发出任意必要的GetFileData请求。在接收到时,在虚拟化提供器202中集成的用户模式库将调用由存储虚拟化提供器202实现的对应的GetFileData回调函数。存储虚拟化提供器202随后将执行从网络上的远程存储设备中取回所请求的数据所需的操作。然后,存储虚拟化提供器202将数据返回到库206,并且在步骤610中,将请求的文件数据返回到存储虚拟化过滤器204。这时,有两种替代方案。
在一种替代方案中,在步骤612中,存储虚拟化过滤器向文件系统129发出WriteFile请求,其请求将取回的数据写入占位符的数据流。然后,在步骤614中,存储虚拟化过滤器204将更新磁盘上的位图以指示特定范围的数据现在驻留磁盘上。注意,在一个实施例中,存储虚拟化过滤器204在未修改的驻留数据和已修改的驻留数据之间进行区分,并且该区分可以潜在地帮助驻留和远程数据的差分同步。
替代地,根据本文所述的存储虚拟化解决方案的另一特征,代替将取回的数据写入磁盘,存储虚拟化过滤器204可以直接将所请求的数据返回给应用130,而无需将数据存储在磁盘上。在磁盘空间已经受到限制的情况下,这可能是有利的。此特征还可用于实现从远程存储设备到请求应用的数据流形式。
根据本文所述的存储虚拟化技术的另一方面,存储虚拟化过滤器204还可以发起和管理常规文件到占位符的转换。在此过程中,将如上所述为文件创建占位符,并将常规文件的主要数据流的数据发送到存储虚拟化提供器202,以在网络上进行远程存储。仅出于描述的方便,将常规文件转换为占位符并将其主要数据流数据移至远程存储设备的方法可以称为“脱水”,而从远程存储设备中取回占位符的远程存储数据并将其写回磁盘的方法可以称为“水化”。
目录的存储虚拟化
本文描述的存储虚拟化技术还可以以类似于如何对待文件的方式应用于目录。在许多文件系统中,目录本身是作为文件实现的。如图8A所示,目录800通常包括元数据802,元数据802提供关于目录的各种信息,诸如目录的名称、其长度、创建时间以及对文件系统或应用有用的其他信息。除了元数据802,目录800还将包含一个或多个子目录条目804。每个子条目可以表示目录或目录的子目录中的文件。例如针对文件的子条目可能包含存储与该文件关联的属性(例如文件是“只读”还是“隐藏”)的字段、存储该文件的文件名字符的字段、存储指示文件创建的日期和时间的信息的一个或多个字段、指示文件的大小以的字段、以及指示在文件的数据所驻留的存储介质上的起始位置(例如起始簇)的字段。当然,这仅仅是子条目的格式和内容的一个示例,并且可以理解,子条目的格式和内容可能因文件系统而异。针对子目录的子条目可以包括代表子目录的文件的类似字段。目录通常是较大目录架构的一部分。这种架构的最顶层目录通常称为根目录。
根据本文公开的存储虚拟化技术,可以为目录创建占位符。图8B示出了目录的示例占位符。如图所示,占位符可以包括文件,该文件包含:元数据808,其可以包括完整目录的一些或全部元数据802;以及目录的没有、一些或所有子条目810;以及信息812,其使得该目录的任意远程存储的子条目能够被取回。因为由占位符目录806表示的目录的所有或某些子条目可能没有被存储在辅助存储(例如磁盘存储设备124)上的目录中,所以占位符目录806可能会在计算设备的本地存储设备中占用较少的空间。
参照图8C,在一个实施例中,使得该目录的远程存储的子条目能够被取回的信息812包括重新解析点814。如图所示,重新解析点814是包括标签816和伴随数据818的数据结构。如上所述,标签用于将重新解析点与计算设备的文件系统堆栈中的特定文件系统过滤器相关联。在本实施例中,标签将重新解析点标识为与存储虚拟化过滤器204相关联。在一个实施例中,重新解析点814的数据818可以包括与存储虚拟化提供器202相关联的全局唯一标识符-以标识存储虚拟化提供器202作为占位符目录的实际子条目的提供器。另外,数据818可以包括目录本身的标识符,诸如目录名称或其他目录标识符。
如同在文件的占位符的情况下一样,正在通过网络在远程存储设备上维护完整目录架构的存储虚拟化提供器202可以请求为目录创建占位符。然而,在目录的情况下,存储虚拟化提供器202可以最初仅请求为远程存储的目录架构中的根目录创建占位符。然后,当应用开始枚举该目录时,存储虚拟化提供器202可以请求为根目录下的子目录(即子目录)和/或文件创建附加的占位符。如本文中所使用的,短语“枚举目录”等是指过程,通过该过程,包括任意文件或子目录(任意文件或子目录中的每一个在目录中由一个或多个相应的子条目表示)的目录的内容,在对计算设备文件系统进行请求时,可以被检查或取回(诸如以目录列表的形式)。
与文件的占位符的创建一样,存储虚拟化提供器202可以例如通过调用用户模式库206的CreatePlaceholders函数来请求为目录创建占位符。在该示例实现中,库206将进而将该调用转换为到存储虚拟化过滤器502的相应CreatePlaceholders消息。响应于CreatePlaceholders消息,存储虚拟化过滤器204将创建用作目录的占位符的空目录(即,空文件)。然后,存储虚拟化过滤器204可以在占位符目录中存储与该目录关联的任意附加元数据,诸如时间戳、访问控制列表(ACL)和由存储虚拟化提供器202在CreatePlaceholders消息中提供的其他元数据。然后,存储虚拟化过滤器204将向占位符添加信息,该信息使目录的任意远程存储的子条目能够从远程存储设备中被取回。在图8C所示的实施例中,该信息可以包括重新解析点。如以上结合图8C所述,重新解析点包括将其与存储虚拟化过滤器204和数据相关联的标签,其可以包括请求占位符的存储虚拟化提供器202的标识符以及目录名或由存储虚拟化提供器202给定的其他目录标识符。
一旦完成了用于目录的占位符的创建,该占位符将作为本地存储在计算设备上的目录呈现给用户或应用(例如应用130)。也就是说,目录的远程存储的详细信息实际上已从应用中隐藏了。
用于枚举由占位符表示的目录的过程类似于图6中所示的用于访问文件的占位符的数据的过程。图9示出了根据一个实施例的由存储虚拟化过滤器204执行的用于目录枚举的步骤。应用通常将经由例如需要枚举目录的Win32 API调用来启动目录枚举,诸如列出目录内容的请求或访问目录路径中具有目录的文件的请求。如图9所示,在步骤902中,从应用接收I/O调用以枚举目录。如在文件的情况下,该I/O调用或请求将被传递到文件系统129,在本文所示的实施例中,文件系统129将检测目录占位符中的重新解析点并将I/O调用传递回到文件系统堆栈到存储虚拟化过滤器204进行处理。
如图9所示,在一个实施例中,在步骤904中,存储虚拟化过滤器204将通过向存储虚拟化提供器202发出StartDirectoryEnumeration命令。在接收到该命令后,存储虚拟化提供器202将建立可以在目录的枚举请求集合中使用的上下文。StartDirectoryEnumeration命令将包括从远程存储的目录架构的根到要枚举的目录的路径名。在步骤906中,存储虚拟化过滤器将向存储虚拟化提供器202发出GetDirectoryEntries命令,以请求存储虚拟化提供器202从远程存储设备中取回(即取到)目录的子目录条目的全部或一些范围(例如1到N)。在一个实施例中,第一GetDirectoryEntries命令可以包括搜索字符串,并且存储虚拟化提供器202可以仅取回与该搜索字符串匹配的目录条目。搜索字符串可以是完整文件名,例如foo.txt或通配符名称,例如foo*。响应于GetDirectoryEntries命令,库206将调用由存储虚拟化提供器202实现的相应的回调函数,这将使存储虚拟化提供器202从远程存储设备中取回所请求的条目,并将它们返回给存储虚拟化过滤器204。在步骤908中,存储虚拟化过滤器204从存储虚拟化提供器202接收所取回的目录条目,然后可以将接收到的条目返回给请求应用或可能已经触发了枚举的其他实体。
在一个实施例中,如可选步骤910所示,可以将在步骤908中接收的子条目写入计算设备的辅助存储设备(例如磁盘存储设备124)上的目录的占位符。这可能会导致辅助存储设备上目录的部分表示。在后续枚举中,这可能会导致处理速度更快,因为满足后续枚举所需的子条目实际上可能本地存储在辅助存储设备上的、枚举目录的占位符内。此外,当目录的子条目中的至少一些被本地存储在辅助存储设备上时,存储虚拟化过滤器204可以通过以下各项来响应对该目录的后续枚举请求:枚举本地存储的子条目和远程存储的子条目,然后在将枚举的条目返回给请求的应用之前合并结果。在一个实施例中,在该合并过程期间有任意冲突的条目的事件中,本地存储的子条目可以优先于从远程存储设备取回的子条目。也就是说,如果在本地存储设备中(例如在辅助存储设备上的目录占位符内)和目录的远程存储表示中都存在相同子条目的版本,则本地存储的版本将返回给请求的应用而不是从远程存储设备中取回的版本。替代地,在其他实施例中,可以建立策略,通过该策略,从远程存储设备取回的子条目优先于任意本地存储的子条目。
在枚举完成之后,在一个实施例中,存储虚拟化过滤器204可以通过向存储虚拟化提供器202发出EndDirectoryEnumeration命令来结束枚举过程,并且在接收到该命令时,存储虚拟化提供器202将释放在过程中使用的任意资源,例如存储器或打开的句柄。
对于目录而言,将提取的子条目写入本地存储设备的过程与对于文件而言是不同的。如上所述,存储虚拟化提供器202可以最初仅请求为远程存储的目录架构中的根目录创建占位符目录。然后,当应用开始枚举该目录时,存储虚拟化提供器202可以请求为孩子子目录和/或根目录下的文件创建附加的占位符。替代地,存储虚拟化过滤器204可以决定是否为孩子子目录和/或根目录下的文件创建附加的占位符。例如由存储虚拟化提供器202在远程存储设备上维护的远程存储目录架构可以具有图10所示的架构。如图所示,示例架构具有名为“foo”的根目录,其中包含文件“1.txt”、“2.txt”、“3.txt”和名为“bar”的子目录。当应用请求枚举根目录foo时,上述过程将返回文件1.txt、2.txt、以及3.txt的子条目以及子目录bar的子条目。但是到那时,存储在计算设备的辅助存储设备中的唯一项目是目录foo。因此,结合该目录枚举,存储虚拟化提供器202还可以请求存储虚拟化过滤器204为文件1.txt、2.txt和3.txt以及子目录bar中的每一个创建占位符。
继续该示例,这时目录架构的磁盘表示将包括目录foo,以及1.txt,2.txt和3.txt和子目录bar的占位符。假设远程存储的虚拟目录架构还包括路径为foo\bar\foo1\bar1\5.txt的文件,并且应用请求该文件。存储虚拟化过滤器204将需要为附加子目录foo1和bar1以及文件5.txt中的每一个取回并创建占位符。根据本文公开的存储虚拟化技术,存储虚拟化过滤器204可以一次全部请求或者可以在迭代过程中被请求。
更具体地说,在一个实施例中,存储虚拟化过滤器204可以将重新解析处理标志附加到请求,以便当应用对该文件的请求到达文件系统时,如果部分磁盘上目录架构表示的最后一个组件(示例中为“bar”)包含存储虚拟化过滤器204的重新解析点标签,则文件系统将使用STATUS_REPARSE完成请求。
在对此状态代码的虚拟化过滤器的句柄中,它向存储虚拟化提供器202发送GetPlaceholderInformation命令,该命令具有关于虚拟化根的下一个组件的名称,例如在本示例中为bar\foo1。在接收到该命令之后,存储虚拟化提供器202检查所请求的路径是否存在于远程存储设备中,并且如果是,则虚拟化提供器202将为foo1创建占位符所需的信息返回给存储虚拟化过滤器204。然后,存储虚拟化过滤器204将在foo\bar\文件夹下创建名为foo1的文件,该文件用作foo1的占位符,并在该文件上设置重新解析点,然后重新发出应用的请求。虚拟化过滤器204将重复该过程以为组件bar1和5.txt创建占位符。注意,在其他实施例中,代替虚拟化过滤器204在从虚拟化提供器202接收到创建占位符所需的信息之后为每个组件自动创建占位符,虚拟化提供器202而是可以在遍历路径的每个组件时通过调用用户模式库的CreatePlaceholders函数,请求为每个组件创建占位符。
在辅助存储设备上创建5.txt之后,由于5.txt是请求中的最后一个组件,因此存储虚拟化过滤器204将在重新发出请求之前清除重新解析处理标志。然后,文件系统129这次将以STATUS_SUCCESS完成请求,以便请求将完成并返回到应用。
由于目录枚举的性质,使用占位符的目录架构的本地磁盘表示可能不完整。例如当枚举路径foo\bar\foo1\bar1\5.txt时,可以为子目录foo1和bar1以及文件5.txt创建占位符。然而,可能是这种情况,目录foo\bar也可能包含子目录foo2和foo3(如图10所示)。可能尚未为这些子目录创建占位符。因此,子目录foo,bar,foo1,bar1和5.txt的占位符可以形成远程存储在网络上的完整目录架构的部分表示。此外,应用可能会更改本地磁盘表示。例如应用可以在目录foo\bar\foo1\bar1中创建一个新文件6.txt。或者,应用可以从该目录中删除文件5.txt或重命名该文件。根据本文所述的存储虚拟化技术的另一方面,存储虚拟化过滤器204和存储虚拟化提供器202可以执行同步操作,以确保磁盘上目录架构的任意部分表示都与远程存储设备上的完整目录架构的对应部分保持同步。
因为本文公开的存储虚拟化技术的目标是从对应用隐藏远程存储的详细信息,使得目录和文件的呈现给应用似乎就像它们都在本地存储和维护一样,因此应用对磁盘上表示的任何更改均应优先。因此,当文件系统响应于来自应用的请求而进行了更改,诸如删除或重命名文件时,需要一种机制来在合并操作期间通知存储虚拟化提供器202已经发生了这种更改,以确保其他应用将无法打开或在后续目录枚举中看到此文件。根据本文公开的存储虚拟化技术的另一方面,介绍了墓碑(“tombstone”)的概念。墓碑是在由占位符表示的文件或目录被应用删除或重命名之后保留在计算机设备(例如磁盘存储设备124)的辅助存储设备上的信息。在一个实施例中,可以通过占位符的元数据中的新标志或属性为已删除的文件或目录来实现墓碑。该标志指示该文件或目录已被删除或重命名,并且存储虚拟化过滤器204和存储虚拟化提供器202可以协作以确保当同步磁盘上和远程存储表示时,墓碑表示的删除或重命名将对远程存储设备上的整个目录层次结构进行。
占位符的元数据存储
参考图3A,常规文件可以包含有关文件的元数据302(例如属性、时间戳等)、保持文件数据的主要数据流304、以及可选的一个或多个辅助数据数据流306。存储文件的计算设备可以被配置为基于包含在文件的主要数据流304中的信息为文件生成元数据302。相反,如图3B所示,文件的占位符308可以包括:文件的元数据310,其可以与常规文件300的元数据302完全相同;稀疏的主数据流312,其可以不包含文件的任意数据或不包含文件的某些数据;信息314,其使得文件的远程存储数据能够被取回;以及可选的一个或多个辅助数据流316。由于稀疏的主要数据流312可能不包含生成关于文件的元数据302所需的数据或仅包含生成关于文件的元数据302所需的数据的一部分,因此存储文件308的占位符的计算设备可能无法生成文件的占位符308的元数据302。生成元数据302所需的文件数据的其余部分可以由远程存储提供器远程存储。
在示例计算设备中,诸如图1中所示的计算设备112,索引器(未示出)可以被配置为标识存储在计算设备112上的文件的属性并将这些属性存储在计算设备112中的数据库中,诸如辅助存储设备。例如存储在辅助存储设备中的一种类型的属性可以是作为文件的元数据的一部分的属性,诸如时间戳或文件的大小。存储在辅助存储设备中的第二类型的属性可以是可以通过读取文件本身的内容而获得的属性,诸如在文件是音乐文件的示例中的艺术家或曲目长度。这些属性可以存储在辅助存储设备中,然后由索引器使用计算设备112的搜索功能进行取回。然而,当与文件相关联的一些或全部数据被远程存储提供器远程存储而不是存储在计算设备本身上时,计算设备112可能无法为给定文件生成元数据302,因为索引器无法访问生成元数据所需的文件内容。因此,计算设备112可能需要依赖远程存储提供器(例如存储虚拟化提供器202)来生成元数据302。
图11示出了用于接收与文件的相关联的元数据的示例方法,该文件的内容被远程地存储并将该元数据存储在计算设备的辅助存储设备中。该方法可以在包括处理器、存储器和辅助存储设备的计算设备中实现,诸如计算设备112。
在步骤1102,可以将文件的占位符存储在计算设备的辅助存储设备上。辅助存储设备可以是例如图1中所示的磁盘存储设备124。文件可以包括数据,数据中的至少一些被存储在远离辅助存储设备的网络上,诸如网络(例如云)208。占位符可以由存储虚拟化过滤器204生成,并且可以在用户或应用中呈现为计算设备上的常规文件或目录。然而,占位符可能不包含文件或目录的数据中的全部或甚至任意一个。例如存储虚拟化提供器202可以将与文件相关联的数据中的全部或至少一些存储在远程网络中。占位符中的每一个可以包括:稀疏数据流,该稀疏数据流不包含文件的任意数据,或包含文件的某些数据,以及使得文件的远程存储的数据能够从网络中被取回的信息。
在步骤1104中,可以接收存储与文件相关联的元数据的请求。可以例如由存储虚拟化过滤器204从外壳210接收用于存储与文件相关联的元数据的请求。或者,在一些实施例中,可以直接从在诸如存储虚拟化提供器202的计算设备上运行的应用或其他模块接收该请求。存储虚拟化过滤器204可以创建和管理文件和目录以及与文件和目录相关联的元数据的占位符,并且可以向用户模式存储虚拟化提供器202通知将访问通知尝试访问其数据由过滤器204和提供器202管理的文件或目录。
在步骤1106,元数据可以由存储虚拟化过滤器204存储在给定文件的占位符的辅助数据流中。元数据可以作为二进制大对象(BLOB)被存储在辅助数据流中。BLOB可以是被存储为单个实体的二进制数据(例如图像、音频或其他多媒体对象)的集合。在一个示例中,给定文件的占位符的辅助数据流可以保持多个BLOB,每个BLOB包含与该文件相关联的不同元数据。每个BLOB可以存储特定类型的元数据。
图12中示出了可以在其中存储一个或多个BLOB的占位符的辅助数据流的示例说明。可以基于例如辅助数据流的一个或多个特征来命名辅助数据流。辅助数据流可以具有与主要数据流相似的属性。例如可以使用用于主要数据流的相同数据流API来执行辅助数据流的读取和写入操作。如图9所示,辅助数据流可以包括用于存储关于辅助数据流和存储在辅助数据流中的一个或多个BLOB的信息的头部。例如头部的第一部分可以包括关于辅助数据流的一般信息,诸如数据流的大小、数据流的某些特征的位置等。辅助数据流的头部可以进一步包括有关存储在辅助数据流中的一个或多个BLOB中的每一个的信息。在头部之后,辅助数据流可以进一步包括用于一个或多个BLOB的存储的属性区域。当多于一个BLOB被存储在数据流上时,BLOB可能会相互偏移,从而BLOB的内容不会重叠。BLOB之间可能也有空白空间,以允许BLOB中的一个或多个的增长。为了节省空间,还可以在辅助数据流中使用多种压缩算法来压缩一个或多个BLOB。辅助数据流中一个或多个BLOB的偏移和压缩属性可以以索引的形式存储在头部中,每个BLOB在索引中都有自己的条目,用于指定该BLOB在辅助数据流中的偏移(例如以字节为单位)以及可选的BLOB的其他任意属性,诸如任意压缩属性。附加地或替代地,偏移和压缩信息可以被存储在BLOB本身内。
图4所示的存储虚拟化过滤器204可以执行一个或多个BLOB的存储。然而,存储虚拟化过滤器204可能不知道BLOB中包含的属性。换句话说,BLOB的属性对于存储虚拟化过滤器204可以是不透明的。在一个实施例中,存储虚拟化过滤器204可以简单地意识到存在具有不透明属性的一定大小的BLOB,并且某些更高级别实体(例如外壳210)用于存储该BLOB或从辅助存储设备取回该BLOB。
如图4进一步所示,外壳210可以在计算设备112的用户模式下运行。外壳210可以促进在计算设备112的内核模式下运行的应用130或存储虚拟化提供器202与存储虚拟化过滤器204之间的通信。例如外壳210可以将API暴露给应用130或存储虚拟化提供器202中的至少一个,以允许应用或存储虚拟化提供器与存储虚拟化过滤器204进行通信。在一个实施例中,外壳210可以调用存储虚拟化过滤器API以指示存储虚拟化过滤器204将一个或多个BLOB存储在诸如磁盘存储设备124的辅助存储设备中。外壳210可能能够访问一个或多个BLOB的属性。
图13示出了由外壳210实现的用于文件的存储虚拟化的示例方法。外壳可以暴露应用程序接口(API),以供应用或存储虚拟化提供器中的至少一个用于在计算设备的辅助存储设备中的元数据的存储。辅助存储设备上可以存储有文件的占位符,该文件包括数据,数据中的至少一些被存储在远离辅助存储设备的网络。占位符可以包括:稀疏数据流,该稀疏数据流不包含文件的任意数据,或包含文件的某些数据,以及使得文件的远程存储的数据能够从网络取回的信息。
在步骤1302,外壳210可以接收设置文件的一个或多个属性的请求。例如外壳210可以从应用130或存储虚拟化提供器202中的至少一个接收请求以设置作为文件的元数据的一部分的属性,诸如时间戳或文件的大小。附加地或替代地,外壳210可以从应用130或存储虚拟化提供器202中的至少一个接收请求以设置可以通过读取文件本身的内容而获得的属性,诸如在该文件是音乐文件的示例中的艺术家或曲目长度。在一个实施例中,其中计算设备的基础操作系统是可从Microsoft Corporation获得的WINDOWS操作系统,可以以对操作系统支持的iPropertyStore接口的方法调用的形式接收用于设置文件的一个或多个属性的请求。
在步骤1304,外壳210可以将一个或多个属性组合成二进制大对象(BLOB),并且在步骤1306,外壳210可以向被配置为管理辅助存储设备上的文件的存储的文件系统发送用于将BLOB存储在给定文件的占位符中的请求。在一个示例中,用于将BLOB存储在给定文件的占位符中的请求可以包括将BLOB存储在给定文件的占位符的辅助数据流中的请求。
BLOB可以与BLOB标识符相关联,使得外壳210可以基于BLOB标识符将某些属性与BLOB相关联。在一个实施例中,可以通过外壳210或存储虚拟化过滤器204之一将BLOB标识符分配给BLOB。标识符可以是数字,诸如32位整数。在一个实施例中,标识符可以是全局唯一标识符(GUID)。这些比特中的某些位可能被保留用于可能影响存储虚拟化过滤器204某些行为的“标志”的放置。例如给定标志可以指示BLOB只能存储在占位符上,而不能存储在非占位符文件上。因此,如果该占位符曾经被转换成非占位符文件(例如通过文件的水化),则存储虚拟化过滤器204可以删除具有仅占位符标志的BLOB。
在一个实施例中,应用或存储虚拟化提供器202可以被配置为与外壳210通信以设置或取回一个或多个BLOB的属性值。在该示例中,用于存储与给定文件相关联的元数据的请求可以起源于应用或存储虚拟化提供器202。应用或存储虚拟化提供器202可以知道文件的特定属性。为了设置给定的BLOB的属性值,应用或存储虚拟化提供器202可以向外壳210发送消息,请求该外壳在文件上设置属性。在一个实施例中,该请求可以采取从应用或存储虚拟化提供器到外壳的IPProperty API的形式。外壳210然后可以形成保持那些属性值的BLOB,该BLOB调用存储虚拟化过滤器API以将BLOB存储在辅助存储设备上的文件的占位符中(例如在占位符的辅助数据流中)。
在另一个示例中,应用130可能想要查询存储在辅助存储设备中的BLOB的属性。例如应用130可以是想要查询给定歌曲文件的作者的音乐应用。应用130可以与外壳210通信以从BLOB取回所请求的属性。响应于此通信,外壳210可以使用对存储虚拟化过滤器204的适当API调用从存储虚拟化过滤器204取回信息。
可以对存储在辅助存储设备上的文件的占位符中的一个或多个BLOB进行许多操作,诸如存储、取回、锁定和解锁BLOB。然而,应理解,操作不限于这四个操作。为了存储或取回BLOB,外壳210可以分别调用存储虚拟化过滤器204的存储属性API或取回属性API。例如响应于来自应用或存储虚拟化提供器的设置现有音乐文件的属性的请求,诸如音乐文件的艺术家的名称,外壳210可以形成包含该属性的BLOB,然后调用存储虚拟化过滤器204的存储属性API以便于使BLOB被存储在文件的占位符中。为了取回存储在BLOB中的元数据,外壳可以调用存储虚拟化过滤器204的取回属性API,以使包含元数据的BLOB从文件的占位符中被取回。在一实施例中,API可用于一次存储或取回两个或多个BLOB。因此,这些操作可以一次对BLOB集合进行操作。如果第一次调用存储或取回API时尚未创建辅助数据流,则存储虚拟化过滤器204可以被配置为自动创建辅助数据流。
存储属性API可用于更新存储在替换数据流中的现有BLOB。当调用存储属性API来存储具有与现有BLOB相同的唯一标识符的BLOB时,可以用新的BLOB覆盖整个现有BLOB,从而有效地对其进行更新。然而,BLOB标识符可以保持不变。存储属性API也可以用于删除现有的BLOB。为了删除现有的BLOB,外壳可以使用要删除的BLOB的标识符和BLOB长度为0的指示来调用存储属性API。当接收到这样的存储属性API调用时,存储虚拟化过滤器204将删除BLOB。因此,使用相同的存储属性API,可以从占位符的辅助数据流中添加、更新或删除BLOB。取回属性API可能根本不会修改辅助数据流。
除了外壳之外,其他应用、模块或组件也可能能够存储、取回、更新和取回存储的BLOB。例如如果外壳或应用想要对特定的BLOB执行一系列操作,并且不想其他应用能够读取该BLOB或对该BLOB进行修改,则该应用可以使用锁定属性API来锁定BLOB。给定的应用可以使用单个锁定属性API调用来锁定多个BLOB。在一个实施例中,存在可用于应用的两种类型的锁:“排他锁”和“共享锁”。排他锁可以使应用对BLOB具有排他访问权限,直到应用调用解锁属性API。在特定应用已锁定给定BLOB的情况下,其他任意应用都无法读取BLOB或对其进行修改。另一方面,共享锁可以允许多个应用同时锁定给定的BLOB。因此,即使应用B已经锁定了BLOB,应用A仍能够请求BLOB上的共享锁。在一个实施例中,共享锁可以允许任意后续的锁定器读取BLOB,但可能不允许后续的锁定器进行编辑。因此,在上面的示例中,应用A可能能够读取BLOB的属性,但可能无法对BLOB进行更改。在另一个示例中,当BLOB处于共享锁下时,没有应用可以对BLOB进行修改。在又一个示例中,两个或更多应用可以关于共享锁下的对BLOB的读取和写入操作的规则集合达成一致。如果应用尝试一次获取多个BLOB上的锁,并且BLOB之一已处于排他锁之下,则对于所有BLOB而言,整个锁定操作可能会失败。替代地,可以仅在不处于排他锁之下的BLOB上为应用授予锁。由于存储虚拟化过滤器204是负责存储和取回操作的组件,因此存储虚拟化过滤器204可以知道已经锁定了特定BLOB的特定应用。
如本文中所讨论的,应用130可与外壳210通信以请求将个别属性值设置在文件上或在给定BLOB中被添加或更新。应用可以通过诸如32位整数(例如GUID)的BLOB标识符来标识BLOB。然后,外壳可以调用诸如存储属性API的存储虚拟化过滤器API以将BLOB存储在辅助数据流中。然后,存储虚拟化过滤器204可以将BLOB存储在辅助数据流中。在另一个示例中,应用可能希望取回给定BLOB的单个属性。应用可以与外壳进行通信以调用诸如取回属性API的存储虚拟化过滤器API,从而使存储虚拟化过滤器在辅助数据流中找到BLOB,并将BLOB的内容传递给外壳。然后,外壳可以取回所请求的属性,并将其返回给应用。
在一个实施例中,应用可能想要修改存储在现有BLOB中的属性值。外壳可以确定需要被更新BLOB中的特定值,但存在必须保留的BLOB中的其他属性。为了解决这个问题,外壳可以在要更改的BLOB上获得排他锁。然后,外壳可以调用取回属性API,以将BLOB的属性读取到外壳的存储器中。然后,外壳可以对BLOB进行解码,以便它知道BLOB的所有单个值。外壳可以更改应用所请求的要修改的属性,但是可以保留BLOB中存储的所有其他属性值不变。然后,外壳可以将值集合重新编码为新的BLOB,并且可以调用存储属性API以将新的BLOB存储在辅助存储设备中。然而,外壳将为新的BLOB使用与原始BLOB相同的标识符。然后,存储虚拟化过滤器204可以覆盖旧的BLOB,并且外壳210可以调用解锁属性API以对BLOB进行解锁。
外壳210可以被配置为基于BLOB的类型来对一个或多个BLOB进行排序。在一个实施例中,辅助存储设备中存在两种类型的BLOB:存储虚拟化提供器补充属性BLOB和文件格式属性BLOB。存储虚拟化提供器补充属性BLOB可以包括由存储虚拟化提供器202生成或由存储虚拟化提供器提供的属性,并且为此,存储虚拟化提供器可能会向外壳作出与存储虚拟化提供器正在远程存储上管理的文件相关联地存储的请求。这些属性可以是在存储虚拟化提供器的上下文中描述文件的属性,诸如是否签出文件、上次修改文件的人、以及文件是否在两个或多个用户之间共享。相反,文件格式属性BLOB可能包含可从文件本身的内容派生的信息。在文件是音乐文件的示例中,文件格式属性BLOB可以存储有关艺术家的元数据、曲目数、每个曲目的长度等。当文件随后完全水化时,可能不再需要文件格式属性BLOB,因为文件的内容可能存在于计算设备上。因此,当文件完全水化时,可以删除文件格式属性BLOB,因为使用最新信息更为合理。然而,任意存储虚拟化提供器补充属性BLOB都可以保持不变。应该理解,也可以包括其他类型的BLOB。在一个实施例中,第三类别的BLOB可以允许应用添加描述文件的元数据。例如如果该应用是可以执行面部识别的照片应用,则该应用可能能够将与检测到的面部相关联的名称作为元数据存储在BLOB中。
可以以多种方式来格式化BLOB。在一个实施例中,属性存储可以使用例如全局唯一标识符(GUI)来标识BLOB的某些属性。然而,还可能存储未知的属性。这些属性可以具有几乎可以是任意可序列化的类型(例如字符串、布尔值、有符号/无符号整数等)的值。这些属性可以序列化为内部格式,然后在读取后被反序列化。如本文所讨论的,BLOB也可以被压缩以节省辅助存储设备中的空间。
本文描述的各方面的图示旨在提供对各个方面的结构的一般理解。这些说明并不旨在用作对利用本文描述的结构或方法的装置和系统的所有元件和特征的完整描述。在回顾本公开之后,许多其他方面对于本领域技术人员而言可能是显而易见的。例如尽管本文讨论的方法和系统已经应用于存储虚拟化系统中占位符的使用,但是应当理解,该方法和系统可以用于多种目的。可以利用本公开内容的其他方面并且从本公开内容得出其他方面,使得可以在不脱离本公开内容的范围的情况下,进行结构和逻辑上的替换和改变。因此,本公开和附图应被认为是示意性而非限制性的。
结合本文公开的方面描述的各种示意性的逻辑块、配置、模块和方法步骤或指令可以被实现为电子硬件或计算机软件。各种示意性的组件、块、配置、模块或步骤已经按照其功能进行了总体描述。将这种功能性实现为硬件还是软件取决于特定的应用和施加在整个系统上的设计约束。可以针对每个特定应用以各种方式来实现所描述的功能,但是这种实现决定不应被解释为导致脱离本公开的范围。
结合本文公开的方面或其某些方面或其部分描述的各种示意性逻辑块、配置、模块和方法步骤或指令可以以计算机可执行指令(即程序代码)的形式体现,计算机可执行指令被存储在计算机可读存储介质上,该计算机可执行指令在由诸如计算设备的机器执行时执行和/或实现本文所述的系统、方法和过程。具体地,可以以这样的计算机可执行指令的形式来实现上述任意步骤、操作或功能。计算机可读存储介质包括以用于信息的存储的任意非暂态(即,有形或物理)方法或技术实现的易失性和非易失性、可移除和不可移除介质,但是这样的计算机可读存储介质不包括信号。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能磁盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或可用于存储所需信息且可由计算机访问的任意其他有形或物理介质。
尽管已经用特定于结构特征和/或动作的语言描述了主题,但是应该理解,所附权利要求书中定义的主题不一定限于上述特定特征或动作。相反,以上描述的特定特征和动作被公开为实现权利要求的示例,并且其他等效特征和动作旨在在权利要求的范围内。
提供对这些方面的描述以能够实现这些方面的制造或使用。这些方面的各种修改将是显而易见的,并且在不脱离本公开的范围的情况下,本文中定义的一般原理可以应用于其他方面。因此,本公开内容不旨在限于本文中所示的方面,而是应被赋予与如所附权利要求书所界定的原理和新颖特征一致的可能的最广范围。

Claims (19)

1.一种存储元数据的方法,所述方法包括:
在计算设备的存储设备上存储针对文件的占位符,其中所述文件的数据从所述存储设备被远程存储,并且所述占位符包括:
稀疏数据流,所述稀疏数据流不包含所述文件的所述数据或包含所述文件的所述数据中的一些数据;以及
信息,所述信息使得所述文件的远程存储的所述数据能够被取回;
接收用于存储与所述文件相关联的元数据的请求;
将所述元数据作为二进制大对象BLOB存储在所述占位符的辅助数据流中,所述BLOB包括相关联的标志;
取回所述文件的被远程存储的所述数据;
将所取回的所述数据存储到所述存储设备的主数据流中,从而将所述占位符转换为常规文件;以及
响应于所述占位符被转换为所述常规文件,基于所述相关联的标志,确定从所述辅助数据流中删除所述BLOB,所述相关联的标志指示在所述占位符被转换为所述常规文件时所述BLOB是否被删除。
2.根据权利要求1所述的方法,其中所述辅助数据流包括多个BLOB,每个BLOB包括与所述文件相关联的不同类型的元数据。
3.根据权利要求2所述的方法,其中所述辅助数据流包括用于存储关于所述多个BLOB的信息的头部。
4.根据权利要求1所述的方法,其中所述BLOB中包含的属性对于所述存储设备的文件系统是不透明的。
5.根据权利要求1所述的方法,还包括:
从应用接收用于锁定所述BLOB的请求;以及
响应于所述请求,锁定所述BLOB,从而向所述应用提供对所述BLOB的排他访问。
6.根据权利要求1所述的方法,其中用于存储元数据的所述请求是从管理远程存储的所述数据的存储虚拟化提供器或应用之一接收的。
7.根据权利要求1所述的方法,其中所述BLOB是同步补充属性BLOB或文件格式属性BLOB之一。
8.一种计算设备,包括:
处理器,
存储设备,以及
存储器,所述存储器存储计算机可执行指令,所述计算机可执行指令在由所述处理器执行时实现用于管理所述计算设备的所述存储设备上的文件的存储的文件系统,所述文件系统被配置执行操作,所述操作包括:
在所述存储设备上存储针对文件的占位符,其中所述文件的数据从所述存储设备被远程存储,并且所述占位符包括:
稀疏数据流,所述稀疏数据流不包含所述文件的所述数据或包含所述文件的所述数据中的一些数据;
信息,所述信息使得所述文件的远程存储的所述数据能够从网络被取回;接收用于存储与所述文件相关联的元数据的请求;将所述元数据作为二进制大对象BLOB存储在所述占位符的辅助数据流中,所述BLOB具有相关联的标识符,所述相关联的标识符包括标志,所述标志指示在所述占位符被转换为常规文件时所述BLOB是否允许被保留;
取回所述文件的被远程存储的数据;
将已取回的数据存储到所述存储设备的主数据流中,从而将所述占位符转换为常规文件;以及
根据所述标志,确定从所述辅助数据流中删除所述BLOB。
9.根据权利要求8所述的计算设备,其中所述辅助数据流包括多个BLOB,每个BLOB包括与所述文件相关联的不同类型的元数据。
10.根据权利要求9所述的计算设备,其中所述辅助数据流包括用于存储关于所述多个BLOB的信息的头部。
11.根据权利要求8所述的计算设备,其中所述BLOB中包含的属性对于所述存储设备的文件系统是不透明的。
12.根据权利要求8所述的计算设备,其中用于存储元数据的所述请求是从管理远程存储在所述网络上的所述文件的所述数据的存储虚拟化提供器或应用之一接收的。
13.根据权利要求8所述的计算设备,所述操作还包括:
从应用接收用于锁定所述BLOB的请求;以及
响应于所述请求,锁定所述BLOB,从而向所述应用提供对所述BLOB的排他访问。
14.根据权利要求8所述的计算设备,其中所述BLOB是同步补充属性BLOB或文件格式属性BLOB之一。
15.一种用于管理与文件关联的元数据的方法,所述方法包括:
在计算设备的存储设备上存储针对文件的占位符,其中所述文件的数据从所述存储设备被远程存储,并且所述占位符包括:信息,所述信息使得所述文件的远程存储的所述数据能够被取回;
接收用于存储与所述文件相关联的元数据的请求;
将所述元数据作为二进制大对象BLOB存储在所述占位符的辅助数据流中,所述BLOB具有相关联的标志,所述相关联的标志指示在所述占位符被转换为常规文件时所述BLOB是否被删除;
取回所述文件的远程存储的数据;
将所取回的所述数据存储到所述存储设备的主数据流中,从而将所述占位符转换为所述常规文件;以及
响应于所述占位符被转换为所述常规文件,基于所述相关联的标志,确定从所述辅助数据流中删除所述BLOB。
16.根据权利要求15所述的方法,其中所述辅助数据流包括多个BLOB,每个BLOB包括与所述文件相关联的不同类型的元数据。
17.根据权利要求16所述的方法,其中所述辅助数据流包括用于存储关于所述多个BLOB的信息的头部。
18.根据权利要求15所述的方法,其中所述BLOB中包含的属性对于所述存储设备的文件系统是不透明的。
19.根据权利要求15所述的方法,其中用于存储元数据的所述请求是从管理所述远程存储的数据的存储虚拟化提供器或应用之一接收的。
CN201880031642.4A 2017-05-11 2018-04-23 存储虚拟化系统中占位符的元数据存储 Active CN110622147B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762504767P 2017-05-11 2017-05-11
US62/504,767 2017-05-11
US15/848,519 US11507534B2 (en) 2017-05-11 2017-12-20 Metadata storage for placeholders in a storage virtualization system
US15/848,519 2017-12-20
PCT/US2018/028768 WO2018208482A1 (en) 2017-05-11 2018-04-23 Metadata storage for placeholders in a storage virtualization system

Publications (2)

Publication Number Publication Date
CN110622147A CN110622147A (zh) 2019-12-27
CN110622147B true CN110622147B (zh) 2024-01-16

Family

ID=64097207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880031642.4A Active CN110622147B (zh) 2017-05-11 2018-04-23 存储虚拟化系统中占位符的元数据存储

Country Status (4)

Country Link
US (2) US11507534B2 (zh)
EP (1) EP3622416B1 (zh)
CN (1) CN110622147B (zh)
WO (1) WO2018208482A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068351B2 (en) * 2018-11-19 2021-07-20 International Business Machines Corporation Data consistency when switching from primary to backup data storage
US11443052B2 (en) 2019-03-21 2022-09-13 Microsoft Technology Licensing, Llc Secure area in a file storage system
US11269700B2 (en) * 2019-04-23 2022-03-08 Apple Inc. System call interception for file providers
US20210342308A1 (en) * 2020-04-30 2021-11-04 Unity IPR ApS System and method for performing context aware operating file system virtualization

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645323A (zh) * 2003-12-16 2005-07-27 微软公司 以存储技术抽象方式在文件内创建文件系统
CN101361048A (zh) * 2006-02-03 2009-02-04 国际商业机器公司 在信息生命周期管理环境中将文件恢复到其适当的存储级
US9239762B1 (en) * 2009-08-11 2016-01-19 Symantec Corporation Method and apparatus for virtualizing file system placeholders at a computer
CN105431838A (zh) * 2013-05-01 2016-03-23 微软技术许可有限责任公司 串流内容和占位符

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6868424B2 (en) * 2002-07-25 2005-03-15 Xerox Corporation Electronic filing system with file-placeholders
US7158973B2 (en) 2002-12-12 2007-01-02 Sun Microsystems, Inc. Method and apparatus for centralized management of a storage virtualization engine and data services
US7236987B1 (en) 2003-02-28 2007-06-26 Sun Microsystems Inc. Systems and methods for providing a storage virtualization environment
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
US7734661B2 (en) * 2003-08-11 2010-06-08 Descisys Limited Method and apparatus for accessing multidimensional data
US7454406B2 (en) * 2005-04-29 2008-11-18 Adaptec, Inc. System and method of handling file metadata
JP2007328611A (ja) 2006-06-08 2007-12-20 Hitachi Ltd ストレージ仮想化システム及び方法
US7886183B2 (en) 2008-08-07 2011-02-08 Symantec Operating Corporation Providing fault tolerant storage system to a cluster
US8495036B2 (en) * 2008-10-24 2013-07-23 Microsoft Corporation Blob manipulation in an integrated structured storage system
CN101794219B (zh) 2009-12-30 2012-12-12 飞天诚信科技股份有限公司 .net文件的压缩方法和装置
CN101751473A (zh) * 2009-12-31 2010-06-23 中兴通讯股份有限公司 一种修改记录项的查找、更新和同步方法及数据同步设备
US8868508B2 (en) * 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US8856089B1 (en) * 2010-08-27 2014-10-07 Amazon Technologies, Inc. Sub-containment concurrency for hierarchical data containers
WO2012042509A1 (en) 2010-10-01 2012-04-05 Peter Chacko A distributed virtual storage cloud architecture and a method thereof
US8924964B2 (en) * 2010-11-01 2014-12-30 Microsoft Corporation Dynamic allocation and assignment of virtual environment
US9020892B2 (en) * 2011-07-08 2015-04-28 Microsoft Technology Licensing, Llc Efficient metadata storage
US9167313B1 (en) 2011-10-27 2015-10-20 Amazon Technologies, Inc. Methods and system for transferring data for remote storage
US8832296B2 (en) 2011-12-15 2014-09-09 Microsoft Corporation Fast application streaming using on-demand staging
US8938550B2 (en) 2011-12-15 2015-01-20 Microsoft Corporation Autonomous network streaming
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US20130226876A1 (en) 2012-02-29 2013-08-29 Construcs, Inc. Synchronizing local clients with a cloud-based data storage system
WO2013160930A1 (en) 2012-04-23 2013-10-31 Hitachi, Ltd. Storage system and storage virtualization method
US20130311597A1 (en) 2012-05-16 2013-11-21 Apple Inc. Locally backed cloud-based storage
JP5987498B2 (ja) 2012-06-27 2016-09-07 富士通株式会社 ストレージ仮想化装置、ストレージ仮想化方法及びストレージ仮想化プログラム
US10754699B2 (en) 2012-08-05 2020-08-25 International Business Machines Corporation Remote provisioning of virtual appliances for access to virtualized storage
US9552363B2 (en) * 2013-04-30 2017-01-24 Microsoft Technology Licensing, Llc File management with placeholders
US9166866B2 (en) * 2013-04-30 2015-10-20 Microsoft Technology Licensing, Llc Hydration and dehydration with placeholders
US10157186B2 (en) 2013-07-18 2018-12-18 Microsoft Technology Licensing, Llc Data handling
US20150032690A1 (en) 2013-07-25 2015-01-29 Microsoft Corporation Virtual synchronization with on-demand data delivery
US9424062B1 (en) 2014-03-24 2016-08-23 Amazon Technologies, Inc. Virtualization infrastructure support
GB2525613A (en) 2014-04-29 2015-11-04 Ibm Reduction of processing duplicates of queued requests
US10191914B2 (en) * 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US9852117B1 (en) * 2015-06-01 2017-12-26 Haydn Labs, Inc. Text-fragment based content editing and publishing
US20170060941A1 (en) * 2015-08-25 2017-03-02 Futurewei Technologies, Inc. Systems and Methods for Searching Heterogeneous Indexes of Metadata and Tags in File Systems
US9870367B2 (en) * 2016-01-04 2018-01-16 Acronis International Gmbh System and method of using data blocks to optimize file storage
US9811575B2 (en) * 2016-03-30 2017-11-07 Sas Institute Inc. Dynamic distributed generation of data representations from highly condensed data
US20180059990A1 (en) 2016-08-25 2018-03-01 Microsoft Technology Licensing, Llc Storage Virtualization For Files

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645323A (zh) * 2003-12-16 2005-07-27 微软公司 以存储技术抽象方式在文件内创建文件系统
CN101361048A (zh) * 2006-02-03 2009-02-04 国际商业机器公司 在信息生命周期管理环境中将文件恢复到其适当的存储级
US9239762B1 (en) * 2009-08-11 2016-01-19 Symantec Corporation Method and apparatus for virtualizing file system placeholders at a computer
CN105431838A (zh) * 2013-05-01 2016-03-23 微软技术许可有限责任公司 串流内容和占位符

Also Published As

Publication number Publication date
EP3622416A1 (en) 2020-03-18
WO2018208482A1 (en) 2018-11-15
CN110622147A (zh) 2019-12-27
EP3622416B1 (en) 2024-06-05
US20180329905A1 (en) 2018-11-15
US20230080984A1 (en) 2023-03-16
US11507534B2 (en) 2022-11-22

Similar Documents

Publication Publication Date Title
CN109906433B (zh) 针对容器的存储隔离
RU2348973C2 (ru) Способы развертывания и свертывания для обеспечения управления свойствами файлов между системами объектов
US20230080984A1 (en) Metadata storage for placeholders in a storage virtualization system
JP2708331B2 (ja) ファイル装置およびデータファイルアクセス方法
US10996897B2 (en) Storage virtualization for directories
US7386532B2 (en) System and method for managing versions
RU2377646C2 (ru) Системы и способы для обеспечения услуг синхронизации для блоков информации, управляемых аппаратной/программной интерфейсной системой
US8694497B2 (en) Method, system, and computer program product for enabling file system tagging by applications
US6789094B2 (en) Method and apparatus for providing extended file attributes in an extended attribute namespace
US7676481B2 (en) Serialization of file system item(s) and associated entity(ies)
TW200408980A (en) System and method for managing file names for file system filter drivers
KR20060095448A (ko) 데이터베이스 내부에 표현된 파일 시스템
US20090254585A1 (en) Method for Associating Administrative Policies with User-Definable Groups of Files
KR20060112183A (ko) 컴퓨터에 저장된 아이템의 프리젠테이션 시스템 및 방법

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