CN102934094A - 用于文件***存储设备的分层分配 - Google Patents

用于文件***存储设备的分层分配 Download PDF

Info

Publication number
CN102934094A
CN102934094A CN2011800295587A CN201180029558A CN102934094A CN 102934094 A CN102934094 A CN 102934094A CN 2011800295587 A CN2011800295587 A CN 2011800295587A CN 201180029558 A CN201180029558 A CN 201180029558A CN 102934094 A CN102934094 A CN 102934094A
Authority
CN
China
Prior art keywords
space
node
data structure
hierarchical data
distribute
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
Application number
CN2011800295587A
Other languages
English (en)
Other versions
CN102934094B (zh
Inventor
T.J.米勒
J.M.卡吉尔
W.R.蒂普顿
S.费尔马
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 Corp
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 Corp filed Critical Microsoft Corp
Publication of CN102934094A publication Critical patent/CN102934094A/zh
Application granted granted Critical
Publication of CN102934094B publication Critical patent/CN102934094B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Abstract

在此描述的主题的各方面涉及存储空间分配。在各方面,分层数据结构用于跟踪利用文件***管理的存储空间的分配数据。分层数据结构可以具有多个级别,其中每个级别具有与不同的存储空间的粒度有关的数据。分层数据结构的各部分可以独立于分层数据结构的其他部分被锁定。分层数据结构可以指示:存储空间的一个或多个部分用于目录的独家使用。在预期后续操作中可以在分配的空间中预留额外空间。分配请求器可以从与分层数据结构的不同级别相关联的区域中获得存储空间分配。

Description

用于文件***存储设备的分层分配
背景技术
除了其他方面,文件***负责管理存储设备的空闲空间。为此,文件***可以维持与存储设备上的空间相对应的全局线性位图。位图的每个比特可以对应于存储设备上的空间组块(chunk)。如果比特被设置,则这可以指示相应的空间组块被使用。如果该比特没有被设置,则这可以指示相应的空间组块没有被使用。随着存储设备日益增大的大小,这个方案变得效率低下。
在此请求保护的主题不限于解决诸如上述环境中的任何缺陷或仅操作在诸如上述环境中的实施例。相反,仅提供这个背景来阐明其中可以实践在此描述的一些实施例的一种示例技术领域。
发明内容
简略地,在此描述的主题的各方面涉及存储空间分配(storage allocation)。在各方面,分层数据结构用于跟踪利用文件***管理的存储空间(storage)的分配数据。分层数据结构可以具有多个级别(level),其中每个级别具有与不同的存储空间的粒度有关的数据。分层数据结构的各部分可以与分层数据结构的其他部分无关地进行锁定。分层数据结构可以指示:存储空间的一个或多个部分用于文件***对象的独家使用。在预期后续操作中可以在分配的空间中预留额外空间。分配请求器可以从与分层数据结构的不同级别相关联的区域中获得存储空间分配。
提供这个发明内容部分来简略地标识下面在具体描述部分中进一步描述的主题的一些方面。这个内容部分既不打算标识所请求保护的主题的关键特征或基本特征,也不打算用于限制所请求保护的主题的范围。
除非上下文另有明确指示,否则短语“在此描述的主题”指的是在具体描述部分中描述的主题。术语“方面”将被解读为“至少一个方面”。标识在具体描述部分中描述的主题的方面不打算标识所请求保护的主题的关键特征或基本特征。
附图说明
上述的方面以及在此描述的主题的其他方面通过示例来阐明而不在附图中进行限制,其中在附图中相同的参考数字指示相似的元素,且其中:
图1是代表其中可以合并在此描述的主题的各方面的示例的通用计算环境的框图;
图2是显示根据在此描述的主题的方面的部分分配数据结构的框图;
图3是通常代表可以用于根据在此描述的主题的方面跟踪区域的分配数据的示例数据结构的框图;
图4是代表根据在此描述的主题的方面配置的***的框图;和
图5-6是通常代表可以根据在此描述的主题的方面发生的动作的流程图。
具体实施方式
如在此使用的,术语“包括”及其变体将被解读为意味着“包括但不限于”的开放式术语。除非上下文另有明确指示,否则术语“或”将被解读为“和/或”。术语“基于”将被解读为“至少部分基于”。术语“一个实施例”和“实施例”将被解读为“至少一个实施例”。术语“另一实施例”将被解读为“至少一个其他实施例”。在下文可以包括显式或隐式的其他定义。
示例操作环境
图1显示其上可以实现在此描述的主题的各方面的合适的计算***环境100的示例。计算***环境100只是合适的计算环境的一个示例,并且不打算提议关于在此描述的主题的各方面的使用或功能的范围的任何限制。计算环境100也不应被解释为具有与示例操作环境100中示出的组件之中的任何一个或其组合有关的任何依赖或要求。
在此描述的主题的各方面可利用众多其他的通用或专用计算***环境或配置来操作。可能适合于与在此描述的主题的各方面一起使用的众所周知的计算***、环境或配置的示例包括个人计算机、服务器计算机、手持式或膝上型设备、多处理器***、基于微控制器的***、机顶盒、可编程消费类电子设备、网络PC、小型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打印机、包括机顶盒的电器、媒体中心或其他电器、汽车嵌入式或附着式计算设备、其他移动设备、包括任何上述***或设备的分布式计算环境等等。
在此描述的主题的各方面可以在计算机执行的计算机可执行指令诸如程序模块的通用上下文中进行描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。在此描述的主题的各方面也可以在其中利用通过通信网络链接的远程处理设备执行任务的分布式计算环境中进行实践。在分布式计算环境中,程序模块可能位于包括记忆存储设备的本地和远程计算机存储媒体二者中。
参考图1,用于实现在此描述的主题的各方面的示例***包括采用计算机110的形式的通用计算设备。计算机可以包括能够执行指令的任何电子设备。计算机110的组件可以包括处理单元120、***存储器130以及将包括***存储器的各种***组件耦合至处理单元120的***总线121。***总线121可以是包括存储器总线或存储控制器、外设总线以及使用各种总线架构中的任何一种的本地总线的若干种类型的总线结构中的任何一种。通过示例而非限制,这样的架构包括Industry Standard Architecture(工业标准架构)(ISA)总线、Micro Channel Architecture(微通道架构)(MCA)总线、Enhanced(增强型)ISA(EISA)总线、Video Electronics Standard Association(视频电子学标准协会)(VESA)本地总线、也被称为Mezzanine总线的Peripheral Component Interconnect(外设组件互连)(PCI)总线、Peripheral Component Interconnect Extended(外设组件互连扩展)(PCI-X)总线、Advanced Graphics Port(高级图形端口)(AGP)以及PCI express(PCIe)。
计算机110一般包括各种计算机可读媒体。计算机可读媒体能够是任何的可用媒体,其能够被计算机110访问并且包括易失性和非易失性媒体以及可移除和不可移除媒体二者。通过示例而非限制,计算机可读媒体可以包括计算机存储媒体和通信媒体。
计算机存储媒体包括以任何的用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的方法或技术来实现的易失性和非易失性以及可移除和不可移除媒体二者。计算机存储媒体包括RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多用途盘(DVD)或其他光盘存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储设备或任何其他的能够用于存储期望信息并且能够被计算机11访问的介质。
通信媒体一般收录(embody)计算机可读指令、数据结构、程序模块或调制数据信号诸如载波或其他传输机制中的其他数据,并且包括任何的信息传递媒体。术语“调制数据信号”意味着其一个或多个特性采用诸如编码信号中的信息的方式来设置或改变的信号。通过示例而非限制,通信媒体包括有线媒体诸如有线网络或直接连线连接以及无线媒体诸如声学、RF、红外和其他无线媒体。上述的任何的组合也应该被包括在计算机可读媒体的范围内。
***存储器130包括采用易失性和/或非易失性存储器诸如只读存储器(ROM)131和随机存取存储器(RAM)132的形式的计算机存储媒体。一般在ROM 131中存储基本输入/输出***133(BIOS),其包含有助于诸如在启动期间在计算机110内的各元素之间传递信息的基本例程。RAM 132一般包含由处理单元120立即可访问和/或目前对其操作的数据和/或程序模块。通过示例而非限制,图1显示操作***134、应用程序135、其他程序模块136和程序数据137。
计算机110也可以包括其他的可移除/不可移除、易失性/非易失性计算机存储媒体。仅通过示例,图1显示从中读取或写入不可移除的非易失性磁媒体的硬盘驱动器141、从中读取或写入可移除的非易失性磁盘152的磁盘驱动器151以及从中读取或写入可移除的非易失性光盘156诸如CD-ROM或其他光学媒体的光盘驱动器155。能够在示例操作环境中使用的其他的可移除/不可移除的易失性/非易失性计算机存储媒体包括磁带盒、闪存卡、数字多用途盘、其他光盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141一般通过诸如接口140之类的不可移除的存储器接口连接到***总线121,而磁盘驱动器151和光盘驱动器155一般利用诸如接口150之类的可移除的存储器接口连接到***总线121。
上述的且在图1中显示的驱动器及其相关联的计算机存储媒体为计算机110提供计算机可读指令、数据结构、程序模块以及其他数据的存储。在图1中,例如,硬盘驱动器141被显示为存储操作***144、应用程序145、其他程序模块146和程序数据147。注意:这些组件能够与操作***134、应用程序135、其他程序模块136以及程序数据137相同或不同。在此对于操作***144、应用程序145、其他程序模块146以及程序数据147给予不同的编号,以阐明在最低程度上它们是不同的拷贝。
用户可以通过输入设备诸如键盘162以及通常被称为鼠标、轨迹球或触摸板的指示设备161将命令和信息输入计算机110。其他输入设备(未显示)可以包括麦克风、摇杆、游戏手柄、卫星天线、扫描仪、触敏屏幕、书写板等等。这些和其他输入设备通常通过耦合到***总线的用户输入接口160连接到处理单元120,但是可以利用其他接口和总线结构诸如并行端口、游戏端口或通用串行总线(USB)来连接。
监视器191或其他类型的显示设备也经由接口诸如视频接口190连接到***总线121。除了监视器之外,计算机还可以包括其他的外设输出设备,诸如扬声器197和打印机196,这些外设输出设备可以通过输出外设接口195来连接。
计算机110可以操作在使用至一个或多个远程计算机诸如远程计算机180的逻辑连接的联网环境中。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他共同网络节点并且一般包括上面相对于计算机110描述的元素中的许多或所有元素,尽管在图1中仅示出了记忆存储设备181。图1所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也可以包括其他网络。这样的联网环境在办公室、企业范围内的计算机网络、内部网和因特网中是司空见惯的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN联网环境中使用时,计算机110可以包括用于通过诸如因特网之类的WAN 173建立通信的调制解调器172或其他装置。可以是内部或外部的调制解调器172可以经由用户输入接口160或其他适当机制而连接到***总线121。在联网环境中,相对于计算机110描绘的程序模块或其部分可以存储在远程记忆存储设备中。通过示例而非限制,图1将远程应用程序185显示为驻留在存储设备181上。将意识到:所显示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他装置。
存储管理
如前所述,将全局线性位图用于在文件***上分配存储空间可能变得效率低下。图2是显示根据在此描述的主题的各方面的部分分配数据结构的框图。分配数据结构205是分层的,并且可以包括任何数量的级别。如所示的,分配数据结构包括三个级别210-212。级别210可以被假设为高于级别211,而级别211可以被假设为高于级别212。
每一个级别可以包括指示用于不同的存储空间的粒度(例如,大小)的分配数据的一个或多个节点。例如,级别210可以包括依照吉字节来指示分配数据的一个或多个节点,级别211可以包括依照兆字节来指示分配数据的一个或多个节点,而级别212可以包括依照千字节来指示分配数据的一个或多个节点。注意:吉字节、兆字节和千字节的使用仅是示例性的,并且不打算将在此描述的主题的各方面仅限于这些大小。类似地,即使显示三个级别,但是在其他的实施例中可以具有两个、四个或更多的级别。
每一个节点可以根据位图、阵列、范围映射(range map)或具有代表节点的分配状态的数据的其他数据结构来指示分配数据。例如,如果存储空间的大小是1000吉字节,节点215可以包括包含1000比特的位图,其中一个比特用于每个吉字节的存储空间。类似地,如果利用级别211上的节点代表的区域的大小是1吉字节并且级别211上的分配单元的大小是1兆字节,那么节点216可以包括1024个比特来代表1024兆字节的存储空间。类似地,如果利用级别212上的节点代表的区域的大小是1兆字节并且级别212上的分配单元的大小是1千字节,那么节点217和218各自可以包括1024比特来代表1024千字节的存储空间。
图3是一般代表可以用于根据在此描述的主题的各方面跟踪区域的分配数据的示例数据结构的框图。数据结构可以对应于图2的节点。数据结构305包括标题310和位图315。例如,标题310可以包括以下的一个或多个:1)指示与数据结构相对应的区域驻留在物理存储空间上的位置的值;2)区域的大小;3)位图315中的比特的数量;4)利用每一个比特代表的字节的数量或其他存储测量(也被称为分配单元的分配大小);5)位图315中的空闲比特的数量,其指示用于数据结构的未分配空间;6)位图315中的比特的最大连续数量,其指示用于数据结构的未分配空间的最大连续大小;7)与区域是否位于卷(volume)的一个或多个快照(snapshot)内以及(一个或多个)快照的(一个或多个)标识符有关的数据;8)其他数据,等等。
返回到图2,从一个级别到另一个级别的“扇出(fan out)”在各级别之间可能是相同的或不同的。扇出指的是对于高级别的单个分配单元而言较低级别节点具有的分配单元的数量。例如,高级别节点可以利用1比特代表吉字节,而正好在高级别节点下方的节点可以将吉字节分成N个区域并且利用N个比特来代表这N个区域。在实现中,利用高级别上的节点代表的区域的大小可以被正好位于高级别节点下方的节点所代表的区域的大小整除(例如,没有余数)。
在一种实现中,存储空间的分配可以利用单片(monolithic)分配器来执行,其中单片分配器使用诸如分配数据结构205之类的数据结构来确定存储设备的空闲部分(有时被称为未分配部分)并由此分配(这些空闲部分)。在另一种实现中,存储空间的分配可以利用一组分层对象(有时被称为分配器)来执行,其中这些对象可以负责分配存储空间中的特定大小的分配单元。在这种实现中,分配器可以被指派来管理利用分配数据结构的一个或多个节点代表的存储空间。每一个分配器可以负责维持用于该分配器管理的存储空间的分配数据。在这种实现中,分配数据结构205可以利用分配器管理的数据结构的集合(collection)来代表。
分配器可以包括一个或多个分配存储器以及解除分配存储器的组件或由这一个或多个组件组成。在一个实施例中,每一个分配器可以作为单独的软件对象来实现。在另一实施例中,一个或多个组件可以实现多个分配器或单个单片分配器。如在此使用的,术语组件将被解读为包括设备的所有或一部分、一个或多个软件模块的集合或其部分、一个或多个软件模块或其部分和一个或多个设备或其部分的某种组合等等。
从概念性观点来看,可能更容易可视化分配器的分层而非单片分配器。虽然在此描述主题的各方面时有时使用这个观点,但是并没有将在此描述的主题的各方面限于分配各块的多个分立分配器的意图。实际上,在此,如果引用多个分配器,那么这些引用在其他实施例中也将被解释为覆盖执行所指示的动作的单个单片分配器。因而,分配器的“分层”可以指的是以与分配器的分层相类似的方式来分配存储空间的各个块的单个单片分配器。
当分配器接收到分配请求时,分配器可以搜索与分配器管理的一个或多个区域相对应的数据结构,以找到足够的存储空间来满足该请求。如果分配器无法在这些区域中找到足够的总的空闲存储空间乃至足够“合适的”空闲存储空间,该分配器可以提出更高级别分配器的分配请求。“合适的”存储空间可以指的是具有满足邻近(contiguity)标准的块、满足位置标准的块或满足某种其他标准的块的存储空间。
邻近标准指的是存储空间的块彼此的接近度(closeness)。对于盘驱动器和其他存储设备来说,具有彼此一个挨着一个或者至少紧邻的块可以加速对这些块的访问。严格的邻近标准是使得所有被分配的块在物理存储设备上是物理上邻近的。更放松的邻近标准是使得分配的块是“接近”邻近的,其中相邻的块位于彼此的设定阈值内。在一个示例的接近邻近的标准中,将要分配的每一个块与分配的相邻块相距可能不超过X个块。邻近标准可以指的是与将分配用于分配请求的块有关的平均值和均值标准。例如,相邻块之间的平均距离可能不超过所选择的平均值和/或均值。
位置标准可以指的位于或靠近指定的存储空间的物理位置的块。例如,一些应用可能寻求分配来自存储空间的特定物理部分的块。这些应用可以提供存储空间上用于分配空间的期望位置的“提示”。作为响应,可以在分层数据结构的一个或多个级别上进行现有空闲空间的搜索。该搜索可以通过依照与“提示的”(例如,期望的)位置的接近性搜索足够大的区域来进行。分配器随后可以提供与期望位置最靠近的空闲空间的指示。
上述的标准并不打算是在尝试分配存储空间时可以应用的详尽的或穷举的标准。基于在此的教导,本领域技术人员可以认识到:其他的可能有助于分配存储空间的标准而不偏离在此描述的主题的各方面的精神或范围。
当较高级别分配器接收到来自较低级别分配器的分配请求时,较高级别分配器可以搜索与较高级别分配器所管理的一个或多个区域相对应的数据结构,分配该区域中的存储空间,更新数据结构来指示该分配,并向较低级别分配器提供针对所分配的存储空间的句柄(handle)。该句柄可以包括或引用至少指示所分配的存储空间的位置的数据。连同接收句柄,较低级别分配器可以初始化数据结构,以考虑(account for)从亲代(parent)分配器分配的空间,并且可以由此开始分配空间。
例如,如果与节点217相对应的分配器无法找到足够的空闲空间来满足分配请求,该分配器可以向与节点216相对应的分配器发送分配请求。作为响应,这个亲代分配器可以找到可用存储空间的区域,将该存储空间标记为被分配,并向请求分配器返回针对该存储空间的句柄。作为响应,请求分配器可以初始化与所返回的存储空间相对应的数据结构(例如,另一节点)以指示该存储空间是空闲的,可以根据该分配器管理的包括返回的存储空间以及该分配器管理的其他存储空间在内的任何空闲的存储空间来满足任何的未决分配请求,并且可以酌情更新(一个或多个)数据结构。
如果较高级别分配器无法找到足够的存储空间,它可以发出更高级别分配器的分配请求,以此类推,直至或找到足够的存储空间或确定没有足够的存储空间可用于满足分配请求。
释放空间与分配空间类似地但是在相反的方向进行。例如,在释放区域中的空间(例如删除或截短文件)时,分配器可以将该空间返回给亲代分配器,可以在预期后续分配请求中持有(hold onto)该空间,或可以采取某种其他动作。如果返回的空间使得包括该空间的亲代的区域是完全空闲的话,那么亲代可以将空闲区域返回给其亲代(如果有的话),以此类推,直至到达与分层数据结构的最高级别相关联的分配器。
在一个实施例中,存储空间消耗方(consumer)可以显式地从分层数据结构的任何级别中请求存储空间。例如,需要大量存储空间(例如,吉字节)的存储空间消耗方可以发出利用与节点215相关联的分配器直接满足的分配请求。作为另一示例,消耗方可以显式地请求从与节点216相关联的分配器中分配存储空间。
在另一实施例中,存储空间消耗方可以提供期望的分配大小并允许分配管理器(或单片存储空间分配器)确定从中分配存储空间的适当级别。例如,存储空间消耗方可以请求10千字节的存储空间而不指定将从中分配存储空间的特定级别。作为响应,分配管理器可以确定用于为该请求分配存储空间的分层数据结构的级别,并且可以向适当分配器发送分配存储空间的请求。
在单片存储空间分配器的情况中,单片存储空间分配器可以遍历(traverse)分配数据结构205来确定从中分配存储空间的适当级别,并且可以响应于分配请求来由此分配存储空间。确定适当级别可以基于分配请求所请求的存储空间的大小、每一个级别的存储空间的可用性、在每一个级别上可用的存储空间的邻近度、其他标准等等。
例如,对于数吉字节的请求,适当级别可以是级别210。作为另一示例,对于几个兆字节的请求,适当级别可以是级别211。作为另一示例,对于500兆字节的请求,适当级别可以是级别210或级别211。
被分配给最终消耗方(例如,诸如应用)的级别的分配空间可能在数据结构205的较低级别中没有附加信息。例如,如果直接从级别210中给应用分配10吉字节,则这可以利用节点215中的数据来指示并且在级别211-212的节点中可能没有附加信息。
在某级别的空间被分配给在较低级别上的节点时,那个空间的分配可以进一步利用在较低级别上的数据来定义。例如,在位置220上的数据指示:就涉及节点215而言,分配与位置220相对应的存储空间。换句话说,与位置220相对应的存储空间的整个块不可以分配给另一分配请求器,直至那个存储空间已被释放并被返回到节点215。
此外,即使已从特定级别上的特定节点分配了存储空间,这也不意味着:所分配的所有存储空间当前被分配给存储空间的最终消耗方。例如,位置220所指示的分配进一步利用级别211的节点216中的数据来定义。节点216指示:存储空间的部分从节点216的角度来分配,并且存储空间的其他部分未被分配。再次,被分配给较低级别分配器的诸如在位置221和222上的部分可以进一步利用较低级别中的数据来定义。
节点215-218中的标签“A”和“F”指示与节点215-218相关联的存储空间的分配状态。例如,“F”可以对应于空闲的存储空间上的邻近区域,而“A”可以对应于被部分或完全分配的存储空间上的邻近区域。如果某区域已被分配给一个或多个较低级别分配器并且在该区域中仍然剩余未分配的空间,那么该区域被部分分配。如果某区域已被分配给最终消耗方,或者如果该区域已被分配给一个或多个较低级别分配器并且较低级别分配器中的所有空间已被分配给最终消耗方,则该区域被完全分配。标签“A”和“F”仅仅为了方便起见,并且利用这些标签所指示的信息可以利用位图或其他数据来代表,如前所述。
一些区域可以是专用的,并且可以仅被分配给某些文件***对象或其部分。例如,在一个实施例中,一个或多个区域可以被指派给目录。当在该目录中创建或扩展文件时,可以从该目录专有的区域中分配空间。如果在指派给目录的(一个或多个)专用区域中没有足够的空间,那么可以从较高级别分配器中指派一个或多个附加区域给该目录。一旦被指派给该目录,这些附加的(一个或多个)区域也可以变成该目录专用的。为其他实体创建或扩展的文件无法访问被指派给该目录的(一个或多个)专用区域。
区域中的空间可以被预留用于未来的与该区域有关的操作。例如,在写时拷贝技术中,可以在修改数据之前制作数据的拷贝。作为另一示例,可能已知某些文件随时间而增长。在区域中预留空间可以使得这些和其他操作更为有效。在区域中预留空间尤其在该区域是专用的时候也可以避免争用。将要预留的空间量可以依照百分比、块的数量、大小或以某一其他方式来指定。
在分配区域中的空闲空间时,可以在分层数据结构的一部分上获取锁定。例如,在分配与节点217相关联的区域中的空闲空间时,对于与节点217相关联的数据可以获取锁定。虽然这种锁定可以阻止另一分配请求器同时分配与节点217相关联的空间,但是它并没有阻止分配器分配与其他节点相关联的区域中的空间。
图4是代表根据在此描述的主题的各方面配置的***的框图。图4所示的组件是示例性的,并且不意味着可能需要或包括的所有详尽的组件。在其他实施例中,结合图4描述的组件和/或功能可以包括在其他组件(显示或未显示)中或置于子组件中而不偏离在此描述的主题的各方面的精神或范围。在一些实施例中,结合图4描述的组件和/或功能可以分布在多个设备上。
转到图4,***405可以包括分配请求器410、分配组件415、存储装置450和其他组件(未显示)。分配组件415可以包括空闲空间管理器420、元数据管理器425、存储管理器430、分配器435、预留管理器440、锁定管理器445和其他组件(未显示)。***405可以在一个或多个计算机上或利用一个或多个计算机(例如,图1的计算机110)来实现。
分配组件415中的一个或多个的动作可以利用一个或多个进程来执行。如在此使用的术语“进程(process)”及其变体可以包括一个或多个执行任务的传统进程、线程、组件、库、对象等等。进程可以在硬件、软件或软硬件的组合中实现。在实施例中,进程是任何的计算机机制,然而,尽管如此称谓,其能够执行动作或在执行动作中使用。进程可以分布在多个设备或单个设备上。
在一个实施例中,分配组件415可以作为分配器对象的方法来实现。在另一实施例中,分配组件415中的一个或多个可以作为一个或多个函数来实现。如在此使用的术语“函数(function)”可以被视为执行一个或多个任务的代码的一部分。虽然函数可以包括返回数据的代码块,但是其并不限于返回数据的代码块。函数也可以执行特定任务而不返回任何数据。此外,函数可能具有或可能不具有输入参数。函数可以包括子例程、子程序、过程、方法、例程等等。
分配请求器410是寻求从分配组件415获得存储空间的任何实体。一些示例的实体包括应用、操作***组件、数据库、分配器(在具有多个分配器的实现中)等等。分配请求器410可以驻留在托管分配组件415中的一个或多个的设备上或可以驻留在不同的设备上。
存储装置450包括任何的能够存储文件并利用文件***来管理的存储媒体。存储装置450可以是外部的、内部的或包括对于***405而言是内部和外部二者的组件。如在此使用的术语文件包括目录、文件、其他文件***对象等等。如在此使用的,文件包括数据。
术语数据将被广义解读为包括可以利用一个或多个计算机存储元素来代表的任何事。在逻辑上,数据可以被表示为易失性或非易失性存储器中的一系列1和0。在具有非二进制存储介质的计算机中,数据可以根据存储介质的能力来代表。数据可以被组织成不同类型的数据结构,其包括简单数据类型诸如数字、字母等等、分层的、链接的或其他相关的数据类型、包括多个其他数据结构或简单数据类型的数据结构等等。数据的一些示例包括信息、程序代码、程序状态、程序数据、其他数据等等。
空闲空间管理器425可用于搜索节点的分配数据,以找到存储设备上的空闲空间来分配给分配请求。如前所述,分配数据可以被安排在分层数据结构中,其中分层数据结构指示在分层数据结构的不同级别上的节点配对之间(例如,分层)的关系。
两个直接相关的节点(例如,具有亲代/子代关系的节点)指示用于不同粒度级别的一些存储空间的分配数据。例如,参考结合图2所述的示例,节点215可以包括指示在1吉字节粒度上的分配数据的分配数据(例如,在位置220上),其中1吉字节粒度上的分配数据对应于指示用于相同的1吉字节但是在1兆字节粒度上的分配数据的分配数据(例如,节点216的分配数据)。
此外,注意:被显示用于每一个节点的分配数据可以代表与这些节点相关联的存储空间的邻近区域。例如,在紧挨着位置221的位置上的分配数据可以代表在存储设备上可用的物理上与位置221所代表的存储空间相邻近的存储空间。
也如前所述,用于每一个节点的分配数据指示是否与该节点相关联的区域的部分被分配(从该节点的角度来看)。
元数据管理器425可操作来更新节点的分配数据,以响应与该节点相关联的存储空间被分配给分配请求器(或由分配请求器释放)。如前所述,元数据管理器425也可以更新位图或其他分配表示数据来反映分配状态和其他分配数据(例如,标题中的数据)。
存储管理器430可用于存储和提供对于存储设备的文件的访问。存储管理器430可以包括能够与存储设备的硬件通信的低级例程。
分配器435可用于利用空闲空间管理器420来为分配请求找到空闲空间。分配器可以进一步可用于利用元数据管理器425,以便结合为分配请求分配空间来更新分配数据。在一个实施例中,空闲空间管理器420和元数据管理器425的功能可以包括在分配器自身中。
预留管理器440可用于为分配请求预留附加空间。例如,预留管理器440可以增加分配请求所请求的空间,以确保附加空间可用于牵涉前述的分配空间的后续操作。在一个实施例中,在可以省略分配空间和预留服务器440时,分配器435可以自动地预留附加空间。
锁定管理器445可用于结合为分配请求分配空间来锁定分层分配数据结构的部分。在锁定分层数据结构的一个部分中,锁定管理器445可以允许分层数据结构的其他部分与锁定的部分同时地、独立地进行锁定(例如,对于其他分配请求)。
在其中具有一个以上的分配器的实施例中,分配组件415中的一个或多个可以被复制,以便与分配器一起使用。
虽然上述的环境包括各种数量的实体,但是将认识到:可以采用这些实体和其他实体之中更多、更少的实体或不同的组合而不偏离在此描述的主题的各方面的精神或范围。此外,如本领域技术人员将明白的,这些实体可以采用各种方式来配置而不偏离在此描述的主题的各方面的精神或范围。
图5-6是一般代表可以根据在此描述的主题的各方面而发生的动作的流程图。为了解释的简单起见,结合图5-6描述的方法作为一系列动作来描绘和描述。将明白和意识到:在此描述的主题的各方面并不受所示的动作的限制和/或并不受动作的顺序的限制。在一个实施例中,这些动作按照如下所述的顺序发生。然而,在其他实施例中,这些动作可以并行发生、按照另一顺序发生和/或与在此没有呈现和描述的其他动作一起发生。此外,并不是所有示出的动作都是实现根据在此描述的主题的各方面的方法所需要的。此外,本领域技术人员将明白和意识到:该方法能够或者经由状态图表示为一系列相关的状态或表示为事件。
转到图5,在方框505,这些动作开始。在方框510,存储空间可以被格式化。例如,参考图4,存储管理器430可以格式化存储装置450。连同格式化存储空间,在存储空间上可以创建和存储分层数据结构(例如,诸如图2所示的分层数据结构)。在被首先创建时,分层数据结构可以具有代表存储空间中的空闲空间的最高级别中的一个或多个节点。其他级别可以具有零个节点,直至这些级别中的存储空间被分配。
在方框515,分配请求被接收。例如,参考图4,可以从分配请求器410接收分配请求。分配请求是分配利用文件***管理的存储装置中的存储空间的请求。分配请求可以连同处于期望位置上的提示一起到来,其中将分配来自或靠近期望位置的存储空间。
在方框520,如果合适的话,该分配所请求的大小可以被增大预留量。例如,参考图4,预留管理器440可以增大该分配所请求的大小,以确保附加空间被预留用于后续操作,如前所述。如果附加信息的预留不是所期望的,那么可以省略这个方框的动作。
在方框525,分层数据结构被访问。例如,参考图2-3,数据结构205可以被访问。数据结构205可以包括图3的数据结构305中的多个。如前所述,分层数据结构包括与存储空间上的分配空间和未分配空间有关的数据。这个数据指示存储空间的多个区域。该数据进一步指示在分层数据结构的不同级别上的节点配对之间的关系。如前所述,两个直接相关的节点(例如,亲代和子代节点)指示用于在不同粒度级别上的存储空间中的一些的分配数据。
在方框530,为该请求的分配空间确定分层数据结构的级别。例如,参考图2和4,分配器435可以确定使用级别216来满足针对多个兆字节的存储空间的请求。作为另一示例,如果分配请求器显式地请求某个级别,那么分配器435可以但并不要求使用那个级别。
在方框535,搜索所确定的级别的一个或多个节点以查找空闲空间。例如,参考图2,可以搜索级别211的一个或多个节点,以查找合适的空闲空间。如果没有足够的空闲空间是可用的,那么可以从亲代节点分配附加空间。随后,包括从附加空间获得的空间在内的空间可以被分配,以满足分配请求。
在方框540,空闲空间被分配给分配请求。例如,参考图2,来自节点217的空间可以被分配,以满足分配请求。
在方框545,分配数据被更新,以指示空闲空间已被分配。例如,参考图3,位图或其他数据结构可以被更新,以指示空闲空间已被分配。
在方框550,可以执行其他动作,如果有的话。
转到图6,在方框605,这些动作开始。在方框610,接收格式化文件***的存储空间的请求。例如,参考图4,文件***可以接收格式化存储装置450的卷的请求。
在方框615,响应于该请求,创建分层数据结构。该分层数据结构包括与存储空间有关的分配数据。如前所述,分层数据结构能够指示在不同粒度级别上的存储空间的区域的分配。分层数据结构包括与存储空间的区域相关联的一个或多个节点,其中每一个节点包括与存储空间的相关联区域有关的分配数据。节点的分配数据是独立于另一节点的分配数据而可锁定的。
例如,参考图2,与分层数据结构205相类似的分层数据结构可以被创建。在初始创建分层数据结构时,由于在格式化之后存储空间可能没有分配的存储空间,所以它可能只有一个级别。如果在格式化期间创建根目录,那么在根目录消耗存储空间中的空间时,可以创建多个级别。
在方框620,分层数据结构可以存储在存储空间上。例如,参考图4,在创建分层数据结构之后,分层数据结构可以存储在存储装置450上。
在方框625,分层数据结构可以被更新。例如,与节点相关联的区域可以被标记用于文件***的目录的独家使用。作为另一示例,在一个级别中的子代节点可以被创建,亲代节点的分配数据可以被修改以指示已将存储空间分配给子代节点,并且在子代节点中可以初始化分配数据以指示:分配给子代节点的存储空间是经由子代节点可分配的。如前所述,这可能牵涉更新位图或其他适当的数据结构。
作为另一示例,用于分层数据结构的每一个节点的标题信息可以被更新,以包括指示节点的区域在存储空间上的物理位置的值、指示区域的大小的值以及指示位图中代表该区域的分配数据的比特的数量的值。例如,标题信息也可以利用指示节点的区域的未分配空间数量的值以及指示节点的区域中最大邻近的未分配空间的值来更新。
在方框630,可以执行其他动作,如果有的话。
如从以上的详细描述中能够看出的,已描述了与存储空间分配有关的各方面。虽然在此描述的主题的各方面易受各种修改和替换构造的影响,但是其中的某些示出的实施例显示在附图中并且在上面具体进行描述了。然而,应该明白:并没有将所请求保护的主题局限于所公开的具体形式的意图,而恰恰相反,意图旨在覆盖落入在此描述的主题的各个方面的精神和范围内的所有修改、替换构造以及等价物。

Claims (15)

1.一种至少部分利用计算机实现的方法,所述方法包括:
接收分配利用文件***管理的存储空间的请求;
响应于所述请求,访问包括与存储空间上的分配空间和未分配空间有关的数据的分层数据结构,所述数据指示存储空间的多个区域,所述数据进一步指示在分层数据结构的不同级别上的节点配对之间的关系,其中两个直接相关的节点指示在不同粒度级别上的存储空间中的一些的分配数据;
确定用于为所述请求分配空间的分层数据结构的级别;
使用所述级别的一个或多个节点来搜索分层数据结构,以查找空闲空间;
为所述请求分配空闲空间;
更新分层数据结构,以指示空闲空间已被分配。
2.权利要求1的方法,其中使用所述级别的一个或多个节点来搜索分层数据结构以查找空闲空间包括:访问分层数据结构中的标题和位图,所述标题与一个或多个节点之中的一个节点相关联,所述标题包括一个或多个节点中的所述一个节点的分配单元的分配大小、指示与一个或多个节点中的所述一个节点相对应的存储空间的物理位置的值以及所述位图中比特的数量,所述位图指示与一个或多个节点中的所述一个节点相对应的存储空间的分配状态。
3.权利要求2的方法,其中访问标题包括访问所述标题中的附加数据,所述附加数据指示与一个或多个节点中的所述一个节点相关联的未分配空间的大小以及与一个或多个节点中的所述一个节点相关联的未分配空间的最大邻近大小。
4.权利要求1的方法,进一步包括:接收指示在存储空间上用于分配空间的期望物理位置的提示,根据与期望物理位置的接近性来搜索分层数据结构以查找所述区域的空闲空间,以及提供与期望物理位置最靠近的空闲空间的指示。
5.权利要求1的方法,其中接收分配利用文件***管理的存储空间的请求包括接收在目录内创建或扩展文件的请求,以及其中为所述请求分配空闲空间包括分配所述目录专用的一个或多个区域中的空闲空间。
6.权利要求1的方法,进一步包括:预留附加空闲空间,用于与被分配用于所述请求的空闲空间有关的后续操作。
7.权利要求1的方法,其中为所述请求分配空闲空间包括:在分层数据结构的一部分上获取锁定,同时允许在分层数据结构的其他部分上获取其他锁定。
8.一种计算机存储介质,其具有计算机可执行指令,所述计算机可执行指令在被运行时执行包括以下的动作:
接收格式化文件***的存储空间的请求;
响应于所述请求,创建包括与存储空间有关的分配数据的分层数据结构,所述分层数据结构能够指示在不同粒度级别上的存储空间的区域的分配,所述分层数据结构包括与存储空间的所述区域相关联的一个或多个节点,每一个节点包括与存储空间的相关联区域有关的分配数据,一个节点的分配数据是独立于另一节点的分配数据而可锁定的;
将分层数据结构存储在存储空间上。
9.权利要求8的计算机存储介质,进一步包括:修改分层数据结构,以指示与节点相关联的区域仅用于文件***的目录的独家使用。
10.权利要求8的计算机存储介质,进一步包括:创建分层数据结构的子代节点,修改子代节点的亲代节点的分配数据来指示亲代节点的区域的一部分已被分配给子代节点,以及修改子代节点的分配数据来指示所述区域的所述部分是经由子代节点而可分配的。
11.权利要求8的计算机存储介质,进一步包括:利用标题信息来更新一个或多个节点中的每一个节点,所述标题信息包括指示所述节点的区域在存储空间上的物理位置的值、指示所述区域的大小的值以及指示代表所述区域的分配数据的位图中的比特数量的值。
12.一种在计算环境中的***,包括:
存储管理器,可用于存储和提供针对存储设备的文件的访问;
空闲空间管理器,可用于搜索节点的分配数据,以找到存储设备上的空闲空间,以便为存储设备的存储空间的分配请求而分配,所述分配数据被安排在分层数据结构中,所述分层数据结构指示在分层数据结构的不同级别上的节点配对之间的关系,其中两个直接相关的节点指示在不同粒度级别上的存储空间中的一些的分配数据;
元数据管理器,可用于更新所述节点的分配数据,所述分配数据指示与所述节点相关联的存储设备的邻近区域,所述分配数据也指示是否所述区域的部分被分配;
分配器,可用于利用空闲空间管理器来为分配请求找到空闲空间,所述分配器进一步可用于利用元数据管理器来结合为分配请求分配空间而更新分配数据。
13.权利要求12的***,进一步包括锁定管理器,其可用于结合为分配请求分配空间来锁定分层数据结构的第一部分,所述分层数据结构的至少第二部分是独立于第一部分而可锁定的。
14.权利要求12的***,进一步包括预留管理器,其可用于为分配请求预留附加空间。
15.权利要求12的***,其中元数据管理器进一步可用于更新分配数据,其中分配数据指示所述区域中的空闲空间的大小以及所述区域中的最大邻近空闲空间。
CN201180029558.7A 2010-06-16 2011-06-03 用于文件***存储设备的分层分配 Active CN102934094B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/816419 2010-06-16
US12/816,419 US9218135B2 (en) 2010-06-16 2010-06-16 Hierarchical allocation for file system storage device
US12/816,419 2010-06-16
PCT/US2011/039073 WO2011159495A2 (en) 2010-06-16 2011-06-03 Hierarchical allocation for file system storage device

Publications (2)

Publication Number Publication Date
CN102934094A true CN102934094A (zh) 2013-02-13
CN102934094B CN102934094B (zh) 2014-12-03

Family

ID=45329716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180029558.7A Active CN102934094B (zh) 2010-06-16 2011-06-03 用于文件***存储设备的分层分配

Country Status (4)

Country Link
US (2) US9218135B2 (zh)
EP (1) EP2583181A4 (zh)
CN (1) CN102934094B (zh)
WO (1) WO2011159495A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107209715A (zh) * 2015-08-20 2017-09-26 华为技术有限公司 文件数据访问方法和计算机***
CN107357869A (zh) * 2017-07-03 2017-11-17 张宇 一种适用于云存储的文件操作方法
CN110737397A (zh) * 2018-07-20 2020-01-31 伊姆西Ip控股有限责任公司 用于管理存储***的方法、设备和计算机程序产品
CN113168403A (zh) * 2018-12-13 2021-07-23 祖克斯技术有限公司 设备消息框架
CN113597605A (zh) * 2019-03-22 2021-11-02 微软技术许可有限责任公司 多级数据沿袭视图

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738681B1 (en) * 2010-12-23 2014-05-27 Emc Corporation Hierarchical cooperative storage services
US9934140B1 (en) * 2012-03-27 2018-04-03 EMC IP Holding Company LLC Allocating blocks in storage systems
CN102693325B (zh) 2012-06-12 2014-06-11 腾讯科技(深圳)有限公司 一种文件存储方法和装置
US9519439B2 (en) * 2013-08-28 2016-12-13 Dell International L.L.C. On-demand snapshot and prune in a data storage system
GB2528333A (en) * 2014-07-15 2016-01-20 Ibm Device and method for determining a number of storage devices for each of a plurality of storage tiers and an assignment of data to be stored in the plurality
US10482012B1 (en) * 2014-12-31 2019-11-19 Storone Ltd. Storage system and method of operating thereof
KR102380979B1 (ko) * 2015-01-05 2022-04-01 삼성전자 주식회사 이미지의 메타데이터 관리 방법 및 장치
US9898197B1 (en) * 2015-03-26 2018-02-20 EMC IP Holding Company LLC Lock-free memory management
US11625181B1 (en) * 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
US20170060924A1 (en) * 2015-08-26 2017-03-02 Exablox Corporation B-Tree Based Data Model for File Systems
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储***的方法和设备
CN108959300B (zh) * 2017-05-19 2022-07-22 华为技术有限公司 文件存储方法和存储装置
US10331374B2 (en) 2017-06-30 2019-06-25 Oracle International Corporation High-performance writable snapshots in data storage systems
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10496331B2 (en) * 2017-12-04 2019-12-03 Vmware, Inc. Hierarchical resource tree memory operations
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
US10394717B1 (en) 2018-02-16 2019-08-27 Microsoft Technology Licensing, Llc Central processing unit cache friendly multithreaded allocation
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
CN109669640B (zh) * 2018-12-24 2023-05-23 浙江大华技术股份有限公司 一种数据存储方法、装置、电子设备及介质
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10944826B2 (en) * 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US10921986B2 (en) 2019-05-14 2021-02-16 Oracle International Corporation Efficient space management for high performance writable snapshots
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11294725B2 (en) 2019-11-01 2022-04-05 EMC IP Holding Company LLC Method and system for identifying a preferred thread pool associated with a file system
US11409696B2 (en) 2019-11-01 2022-08-09 EMC IP Holding Company LLC Methods and systems for utilizing a unified namespace
US11741056B2 (en) * 2019-11-01 2023-08-29 EMC IP Holding Company LLC Methods and systems for allocating free space in a sparse file system
US11392464B2 (en) 2019-11-01 2022-07-19 EMC IP Holding Company LLC Methods and systems for mirroring and failover of nodes
US11288211B2 (en) 2019-11-01 2022-03-29 EMC IP Holding Company LLC Methods and systems for optimizing storage resources
US11288238B2 (en) 2019-11-01 2022-03-29 EMC IP Holding Company LLC Methods and systems for logging data transactions and managing hash tables
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11474938B2 (en) 2021-01-18 2022-10-18 EMC IP Holding Company LLC Data storage system with multiple-size object allocator for disk cache
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11740822B2 (en) 2021-04-29 2023-08-29 EMC IP Holding Company LLC Methods and systems for error detection and correction in a distributed storage system
US11567704B2 (en) 2021-04-29 2023-01-31 EMC IP Holding Company LLC Method and systems for storing data in a storage pool using memory semantics with applications interacting with emulated block devices
US11669259B2 (en) 2021-04-29 2023-06-06 EMC IP Holding Company LLC Methods and systems for methods and systems for in-line deduplication in a distributed storage system
US11579976B2 (en) 2021-04-29 2023-02-14 EMC IP Holding Company LLC Methods and systems parallel raid rebuild in a distributed storage system
US11604610B2 (en) 2021-04-29 2023-03-14 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes
US12007942B2 (en) 2021-10-27 2024-06-11 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11960723B2 (en) * 2022-05-27 2024-04-16 Samsung Electronics Co., Ltd. Method and system for managing memory associated with a peripheral component interconnect express (PCIE) solid-state drive (SSD)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6874062B1 (en) * 2000-02-22 2005-03-29 Unisys Corporation System and method for utilizing a hierarchical bitmap structure for locating a set of contiguous ordered search items having a common attribute
CN1950802A (zh) * 2004-02-13 2007-04-18 扎鲁纳股份有限公司 存储器分配
US20080208802A1 (en) * 2007-02-26 2008-08-28 International Business Machines Corporation Method and system for utilizing a hierarchical bitmap structure to provide a fast and reliable mechanism to represent large deleted data sets in relational databases
CN101488919A (zh) * 2009-02-13 2009-07-22 华为技术有限公司 存储地址分配方法和装置
US20100125583A1 (en) * 2008-10-30 2010-05-20 Corene Casper Tracking Memory Space in a Storage System

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791623A (en) * 1986-04-03 1988-12-13 Optotech, Inc. File management system for use in an optical data storage system
CA2119788C (en) 1992-07-24 1996-12-31 Peter L. Morse Computer method and system for allocating and freeing memory
WO1994025913A2 (en) 1993-04-30 1994-11-10 Novadigm, Inc. Method and apparatus for enterprise desktop management
US5490274A (en) * 1993-06-30 1996-02-06 Microsoft Corporation Modified buddy system for managing disk space
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5897661A (en) * 1997-02-25 1999-04-27 International Business Machines Corporation Logical volume manager and method having enhanced update capability with dynamic allocation of storage and minimal storage of metadata information
US6175900B1 (en) 1998-02-09 2001-01-16 Microsoft Corporation Hierarchical bitmap-based memory manager
DE10127198A1 (de) 2001-06-05 2002-12-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten
US7315894B2 (en) 2001-07-17 2008-01-01 Mcafee, Inc. Network data retrieval and filter systems and methods
AU2003249434A1 (en) 2002-08-30 2004-03-19 Koninklijke Philips Electronics N.V. Dynamic memory management
US7272698B2 (en) * 2003-03-19 2007-09-18 Autodesk, Inc. Heap memory management
CA2426619A1 (en) * 2003-04-25 2004-10-25 Ibm Canada Limited - Ibm Canada Limitee Defensive heap memory management
US20070067366A1 (en) 2003-10-08 2007-03-22 Landis John A Scalable partition memory mapping system
US7263592B2 (en) * 2004-03-29 2007-08-28 International Business Machines Corporation Method for completely lock-free user-level dynamic memory allocation
US7246216B2 (en) 2004-07-14 2007-07-17 Lsi Corporation Dynamic partitioning of storage media for mixed applications
US20070214314A1 (en) 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
US7945726B2 (en) 2006-05-08 2011-05-17 Emc Corporation Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system
WO2008094455A2 (en) 2007-01-26 2008-08-07 Cheriton David R Hierarchical immutable content-addressable memory processor
US7853759B2 (en) * 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
WO2009098547A1 (en) * 2008-02-08 2009-08-13 Freescale Semiconductor, Inc. Memory management
US7792879B2 (en) 2008-03-11 2010-09-07 Intel Corporation Efficient heap utilization and partitioning
CN101320351A (zh) 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
CN101329655B (zh) 2008-07-31 2011-09-28 北京天碁科技有限公司 一种内存管理方法和内存管理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6874062B1 (en) * 2000-02-22 2005-03-29 Unisys Corporation System and method for utilizing a hierarchical bitmap structure for locating a set of contiguous ordered search items having a common attribute
CN1950802A (zh) * 2004-02-13 2007-04-18 扎鲁纳股份有限公司 存储器分配
US20080208802A1 (en) * 2007-02-26 2008-08-28 International Business Machines Corporation Method and system for utilizing a hierarchical bitmap structure to provide a fast and reliable mechanism to represent large deleted data sets in relational databases
US20100125583A1 (en) * 2008-10-30 2010-05-20 Corene Casper Tracking Memory Space in a Storage System
CN101488919A (zh) * 2009-02-13 2009-07-22 华为技术有限公司 存储地址分配方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107209715A (zh) * 2015-08-20 2017-09-26 华为技术有限公司 文件数据访问方法和计算机***
CN107209715B (zh) * 2015-08-20 2019-09-27 华为技术有限公司 文件数据访问方法和计算机***
US10606769B2 (en) 2015-08-20 2020-03-31 Huawei Technologies Co., Ltd. Time-restricted access to file data
CN107357869A (zh) * 2017-07-03 2017-11-17 张宇 一种适用于云存储的文件操作方法
CN110737397A (zh) * 2018-07-20 2020-01-31 伊姆西Ip控股有限责任公司 用于管理存储***的方法、设备和计算机程序产品
CN110737397B (zh) * 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 用于管理存储***的方法、设备和计算机程序产品
CN113168403A (zh) * 2018-12-13 2021-07-23 祖克斯技术有限公司 设备消息框架
CN113597605A (zh) * 2019-03-22 2021-11-02 微软技术许可有限责任公司 多级数据沿袭视图
CN113597605B (zh) * 2019-03-22 2024-05-10 微软技术许可有限责任公司 多级数据沿袭视图

Also Published As

Publication number Publication date
US9218135B2 (en) 2015-12-22
EP2583181A2 (en) 2013-04-24
US9575678B2 (en) 2017-02-21
WO2011159495A2 (en) 2011-12-22
WO2011159495A3 (en) 2012-04-19
EP2583181A4 (en) 2016-10-12
US20160098224A1 (en) 2016-04-07
US20110314246A1 (en) 2011-12-22
CN102934094B (zh) 2014-12-03

Similar Documents

Publication Publication Date Title
CN102934094B (zh) 用于文件***存储设备的分层分配
CN102782683B (zh) 用于数据库服务器的缓冲池扩展
CN104346357B (zh) 一种嵌入式终端的文件存取方法及***
US9003135B2 (en) Efficient allocation and reclamation of thin-provisioned storage
US8239648B2 (en) Reclamation of thin provisioned disk storage
US8250310B2 (en) Assigning data to NVRAM of shared access hybrid hard drives
KR20210027642A (ko) 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
US10908960B2 (en) Resource allocation based on comprehensive I/O monitoring in a distributed storage system
CN103077121B (zh) 一种闪存存储设备中数据管理的方法及装置
CN105373342A (zh) 异构统一存储器
US20080082525A1 (en) File storage system, file storing method and file searching method therein
CN110109868B (zh) 用于索引文件的方法、装置和计算机程序产品
CN103620549A (zh) 用于统一数据存储的存储介质抽象
US11249919B2 (en) Apparatus and method for managing meta data for engagement of plural memory system to store data
KR20200068941A (ko) 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
CN110147203B (zh) 一种文件管理方法、装置、电子设备及存储介质
US20200042225A1 (en) Apparatus and method for controlling metadata for engagement of plural memory systems
CN113495889A (zh) 一种分布式对象存储方法、装置、电子设备及存储介质
US11442628B2 (en) Apparatus and method for engaging a plurality of memory systems with each other
CN107111549B (zh) 一种文件***的管理方法及装置
WO2023143596A1 (zh) 存储方法、存储管理设备、存储盘和存储***
CN107766001B (zh) 一种基于用户群组的存储配额方法
CN113778688B (zh) 内存管理***、内存管理方法、内存管理装置
CN103106246A (zh) 一种分布式文件***的存储空间的管理方法及***
CN103139604B (zh) 一种基于缓存模型的ipqam频点分配与回收方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150424

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150424

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.