CN104956318A - 用于在数据存储系统中实现存储的细粒度、可伸缩分配的方法和装置 - Google Patents

用于在数据存储系统中实现存储的细粒度、可伸缩分配的方法和装置 Download PDF

Info

Publication number
CN104956318A
CN104956318A CN201380071937.1A CN201380071937A CN104956318A CN 104956318 A CN104956318 A CN 104956318A CN 201380071937 A CN201380071937 A CN 201380071937A CN 104956318 A CN104956318 A CN 104956318A
Authority
CN
China
Prior art keywords
chunk
file system
stripe set
last
string
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
CN201380071937.1A
Other languages
English (en)
Other versions
CN104956318B (zh
Inventor
马克·斯蒂芬·莱克
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.)
Hitachi Vantara LLC
Original Assignee
Hitachi Data Systems Engineering UK Ltd
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 Hitachi Data Systems Engineering UK Ltd filed Critical Hitachi Data Systems Engineering UK Ltd
Publication of CN104956318A publication Critical patent/CN104956318A/zh
Application granted granted Critical
Publication of CN104956318B publication Critical patent/CN104956318B/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/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • 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/11File system administration, e.g. details of archiving or snapshots
    • 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/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/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage 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/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
    • 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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一方面,本发明针对一种以细粒度、可缩放的方式扩大针对文件系统的存储空间的方法。该方法包括由文件服务器确定针对跨度的组块串偏置,其中该组块串偏置指示与针对文件系统的地址翻译表中的条目相关联的存储空间的连续组块的数量。该方法包括由文件服务器接收要扩大针对文件系统的存储空间的请求。该方法包括由组块分配器至少部分地基于带区集上未使用的组块的数量和带区集上正由文件系统使用的组块数量,对一组带区集中的每一带区集进行记分。该方法包括由组块分配器分配带区集上具有最高记分的组块,其中所分配的组块位于预留用于其他文件系统的组块串之外。

Description

用于在数据存储系统中实现存储的细粒度、可伸缩分配的方法和装置
技术领域
本发明涉及数据存储系统,而且更具体地,本发明涉及能够向文件系统进行磁盘空间的细粒度、可伸缩分配的数据存储系统。
背景技术
在今天的信息时代,数据存储系统经常管理不时需要动态扩大磁盘空间的文件系统。经常,文件系统在存储增量方面扩大(在本申请中称为“组块”)。数据存储系统可以允许选择不同的指导组块大小,虽然存储系统可以分配大小偏离指导组块大小的组块。在一个示例性的数据存储系统中,组块大小可以从1千兆字节(GiB)到100GiB。在另一示例性数据存储系统中,组块大小可以从0.5GiB到18GiB。
这样的系统的文件服务器将文件系统空间中磁盘空间的虚拟地址翻译成物理存储器中的磁盘空间的地址,且其可以使用固定大小的表来跟踪向文件系统分配的磁盘空间的组块(例如,在一示例性的数据存储系统中具有1023条目的表,其中例如,每一条目用于存储组块的开始物理地址和与组块的大小相关的信息(例如,组块长度或组块的结束地址)并映射到虚拟文件系统地址的范围)。使用固定大小的表通常限制了文件系统的最大大小,即仅允许向文件系统分配预定的最大数目的组块。可以在硬件中实现固定大小的表,而且在任何情况下,增加表大小以允许支持更大的文件系统可能是行不通的。
为特定的文件系统选择指导组块大小实质上是用户期望文件系统增长多大和存储空间的利用效率之间的折衷。一般而言,选择较小的指导组块大小提供了高效的存储空间利用率但是限制了文件系统的最大大小,而选择较大的指导组块大小经常导致低效的存储空间利用但是增加了最大的文件系统大小。
发明内容
在某些实施例中,提供了一种用于扩大用于文件系统的存储空间的方法和数据存储系统,该文件系统包括从多个带区集中选择的多个组块,其中文件系统的虚拟地址空间被映射到与组块关联的物理存储地址。该方法包含保持组块数据库以跟踪与文件系统关联的组块,组块数据库包含固定数量的条目,每一条目能够存储与分配给文件系统的一部分存储空间的开始地址和长度相关的信息;接收请求以扩大文件系统;基于组块数据库识别与文件系统关联的最后组块;当至少一个组块可用于向文件系统分配时,从与最后的组块相同的带区集分配该至少一个组块且该至少一个组块与最后的组块连续;以及更新组块数据库中与最后的组块关联的条目以反映由所分配的至少一个组块所表示的连续存储空间的长度的增加。
在各个可供替换的实施例中,在确定来自与该最后的组块相同的带区集且与该最后的组块连续的至少一个组块可用于向文件系统分配之前,预留来自与该最后的组块相同的带区集且与该最后的组块连续的至少一个组块,以便该至少一个组块保持可用。
确定来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块是否可用于向文件系统分配可涉及:确定针对文件系统的活动组块串长度以及当活动组块串长度小于组块串偏置以及存在来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块时确定存在可用于向文件系统分配的至少一个组块。在这个方面,分配至少一个组块可涉及:从与最后的组块相同的带区集分配多达N个组块,且这N个组块与最后的组块连续,其中N等于组块串偏置减去活动组块串长度。该方法还可涉及:确定组块串偏置,例如通过基于带区集的数量和文件系统的数量确定组块串偏置。
该方法还可涉及:当来自与最后的组块相同的带区集且与最后的组块连续的这样的至少一个组块被确定为不可用时,从不同的带区集分配至少一个组块。
在某些实施例中,可以在硬件中保持组块数据库,且数据存储系统可以包括在基于软件的组块分配器和该硬件之间耦合的接口,并且组块分配器通过该接口访问组块数据库。
在其它实施例中,提供了一种用于以细粒度、可缩放的方式扩大用于文件系统的存储空间的方法和数据存储系统。该方法包括:由文件服务器确定针对一跨度的组块串偏置,其中该组块串偏置指示了与用于文件系统的地址翻译表中的条目相关联的磁盘空间的多个连续的组块。该方法包括由文件服务器接收对于扩大用于文件系统的磁盘空间的请求。该方法包括由组块分配器至少部分地基于在带区集上的多个未使用的组块的数目和正由文件系统使用的带区集上的组块的数目,对一组带区集中的每一带区集记分。该方法包括由组块分配器分配带区集上的具有最高记分的组块,其中所分配的组块位于预留用于其他文件系统的组块串之外。
确定针对一跨度的组块串偏置可以包括由文件服务器确定缺省组块串偏置。确定针对一跨度的组块串偏置可以包括由文件服务器基于带区集的数目和文件系统的数目确定组块串偏置。
对每一带区集的记分可以包括由组块分配器确定文件系统的所分配的最后的组块之后的组块可用;由组块分配器确定针对文件系统的当前带区集的偏置因子,其中当前的带区集包括文件系统的所分配的最后的组块;以及由组块分配器对具有偏置因子的当前的带区集记分。对每一带区集记分可以包括由组块分配器确定在文件系统的所分配的最后的组块之后的组块由另一文件系统使用;以及由组块分配器至少部分地基于带区集上未使用的组块的数目与预留用于其他文件系统的组块的数目之间的差,来对一组带区集中的每一带区集进行记分。对每一带区集记分可以包括由组块分配器至少部分地基于带区集上未使用的组块的数目、跨度权重、正由文件系统使用的带区集上的组块的数目、以及文件系统权重,来对一组带区集中的每一带区集进行记分。
在具有最高分数的带区集上分配组块可以包括由组块分配器选择文件系统的所分配的最后的组块之后的组块。分配带区集上的具有最高分数的组块可以包括由组块分配器搜索长度至少为组块串偏置的未预留的组块的组块串;以及,由组块分配器选择该组块串中的第一组块。分配带区集上具有最高分数的的组块可以包括由组块分配器搜索其长度至少是组块串偏置的预留组块的组块串;以及由组块分配器选择在该组块串的后半部分中的第一组块。
在又一实施例中,提供了一种用于扩大用于文件系统的存储空间的方法和数据存储系统,该文件系统包括从多个带区集选择的多个组块,其中文件系统的虚拟地址空间被映射到与组块关联的物理存储地址。该方法涉及:保持组块数据库以跟踪与多个文件系统关联的组块,该组块数据库包含固定数量的条目,每一条目能够存储与向文件系统中的一个文件系统所分配的一部分存储空间的开始地址和长度相关的信息;接收用于扩大多个文件系统中的一文件系统的请求;选择从其处分配存储空间的带区集;利用带区集上的开始地址从组块数据库获取条目,其中该条目与多个文件系统中的不同文件系统的活动组块串相对应;识别带区集上位于N个组块之后的至少一个组块,上述N个组块跟在活动组块串中最后的组块之后且与该最后的组块连续,其中N等于组块串偏置减去活动组块串的活动组块串长度;以及如果该至少一个组块可用,则向文件系统分配至少一个组块。
在各种可供替换的实施例中,该方法可以进一步涉及:继续利用带区集上的开始地址从组块数据库获取条目以及识别位于N个组块之后的至少一个组块,上述N个组块跟在活动组块串中的最后的组块之后且与该最后的组块连续,直到该至少一个组块可用。识别带区集上的至少一个组块可涉及:识别等于组块串偏置的可用的组块的组块串或识别带区集上可用的组块的最长组块串。
在又一其它实施例中,提供了一种用于扩大用于文件系统的存储空间的方法和数据存储系统,该文件系统包括从多个带区集中选择的多个组块,其中文件系统的虚拟地址空间被映射到与组块关联的物理存储地址。该方法涉及:保持组块数据库以跟踪与多个文件系统关联的组块,组块数据库包含固定数量的条目,每一条目能够存储与向文件系统中的一个文件系统所分配的一部分存储空间的开始地址和长度相关的信息;接收用于扩大多个文件系统中的一文件系统的请求;确定针对该请求的组块的数目超过组块串偏置中的组块数目乘以跨度上带区集的数目;通过将针对该请求的组块的数目除以带区集的数目来确定从每一带区集分配的组块的数目;在每一带区集上搜索可用的组块的组块串,其等于要从每一带区集分配的组块的数目;从每一带区集分配可用组块的组块串;以及,针对可用组块的每一组块串在组块数据库中创建与可用组块的组块串关联的条目,其中条目包括组块串的长度。
实施例还可以包括配置成执行上述方法中的任何一个方法的计算机程序。
实施例还可以包括装置,该装置包含有形的计算机可读介质,在该有形的计算机可读介质中包含配置成执行上述方法中的任何一个方法的计算机程序。
可以公开和主张保护另外的实施例。
附图说明
通过参考随后的具体描述将更容易理解本发明的前述特征,参考附图,其中:
图1是表示根据本发明一示例性实施例的文件存储系统的示意性框图;
图2是表示根据本发明一示例性实施例示出文件系统的通用格式的示意性框图;
图3是表示在本发明的示例性实施例中示出在存储块与带区集(stripeset)之间的关系的示意图;
图4是表示文件存储系统的文件服务器的示意性框图;
图5是表示带区集中组块的示意性表示,其包含已经被使用的一些组块以及可向文件系统分配的一些空闲的组块;
图6是表示如在示例性的现有技术的实施例中在特定的点适时可以找到的表9025的示意性表示,其中在单独的表条目中存储用于每一新的组块的信息;
图7是表示如在示例性的实施例中在特定的点适时可以找到的表9025的示意性表示,其中可以在单个表条目中存储针对连续组块的信息,代替在图6中示出的表9025。
图8是表示根据一示例性实施例示出图7中的表条目9030如何被修改成合并两个另外的连续组块的表9025的示意性表示;
图9是表示根据一示例性实施例将图4中的文件系统空间扩大相同大小(例如X)的三个组块的示意性表示;
图10是表示根据一示例性实施例的用于通用组块分配过程的流程图;
图11是表示选择带区集和要向文件系统分配的带区集上的组块的方法的示例性流程图;
图12是表示选择带区集的方法的示例性流程图,在当前的带区集包含针对所示出和描述的该文件系统的可扩大的活动组块串时将从该带区集分配组块;
图13是表示选择带区集的方法的示例性流程图,在当前的带区集不包含针对所示出和描述的该文件系统的可扩大的活动组块串时将从该带区集分配组块;
图14是表示存储向文件系统分配的组块串的文件系统空间中的开始和结束地址的示例性表;
图15是表示减小组块串偏置以提高横跨跨度(span)的负载平衡的方法的示例性流程图;
图16是表示搜索带区集上用于向文件系统分配的非预留的组块的方法的示例性流程图;以及
图17是表示横跨跨度中的所有带区集分配存储空间的方法的示例性流程图。
应该注意的是,前述的附图和附图中描述的元件不一定绘制成一致的比例或绘制成任何比例。除非上下文另有说明,否则类似的元件由类似的数字指示。具体实施方式
定义。如在说明书和所附权利要求书中所使用的,随后的术语应该具有所指示的含义,除非上下文另有需求:
“存储设备”是用于存储数据的设备或系统。存储设备可以包括一个或多个磁或磁光或光盘驱动器、固态存储设备、或磁带。为了方便起见,存储设备有时被称为“磁盘”或“硬盘”。数据存储系统可以包括具有相同或不同存储容量的相同或不同类型的存储设备。
“RAID控制器”是将若干存储设备的存储容量组合到存储空间的虚拟块中的设备或系统,该存储空间的虚拟块或者可以被称为“系统驱动器”(“SD”)、“逻辑单元”(“LU”或“LUN”)、或“卷”。典型地,SD大于单个存储设备,从若干存储设备获取空间,且包含冗余信息,以便其能够经得起某些数量的磁盘的故障而没有数据损失。在示例性的实施例中,每一SD与唯一的标识符相关联,该唯一的标识符在下文中被称为“逻辑单元标识符”或“LUID”,且每一SD将不大于预定的最大尺寸,例如2TB-64TB或更大的。当向SD发送命令时,RAID控制器典型地同时向SD的所有存储设备转发命令。RAID控制器有助于克服典型的存储设备的三个主要限制,即存储设备典型地是存储系统中最慢的组件,其典型地最可能遭受灾难性的故障,且其典型地具有相对较小的存储容量。
“RAID系统”是包含一个或多个RAID控制器和多个存储设备的设备或系统。典型地,RAID系统将包含两个RAID控制器(以便在另一个故障的情况下,一个能够保持工作,以及还在两个都正常工作时共享负载)和许多存储设备。在示例性的实施例中,RAID系统典型地配置有2个和32个之间的SD,虽然在各个实施例中,示例性的RAID系统可以有更多个SD。当文件服务器需要存储或获取数据时,其向RAID系统的RAID控制器发送命令,其继而负责向前向单个存储设备路由命令并在必要时存储或获取数据。利用一些RAID系统,可以在SD之间建立镜像关系,使得为了冗余的目的,向一个SD(被称为“主SD”)写入的数据由RAID系统自动地向另一SD(在本申请中被称为“辅助SD”或“镜像SD”)写入。可以由与主SD相同的RAID系统或由不同的本地或远程RAID系统管理辅助SD。镜像SD有效地提供了跨SD的RAID 1+0功能,以提供从一SD的丢失或损坏中的恢复或在一些情形下可能从甚至多个SD的丢失或损坏中的恢复。
“文件系统”是在文件存储系统中存储的文件和目录(文件夹)的结构。在一些实施例中,文件系统是在一个或多个带区集的组块上驻留的磁盘空间的虚拟化区域。在文件存储系统中,典型地使用多个虚拟存储结构来管理文件系统,且在示例性实施例中,使用被称为范围、带区集和跨度的虚拟存储结构的层级来管理文件系统。“范围”由主SD独自或应该包含相同的数据并从而将相同的存储容量提供为单个SD的主/辅助SD对组成。“带区集”由一个或多个范围组成。在一些实施例中,带区集可以包含多达三十二(32)个逻辑单元(“LU”)。如果其全部组块都被使用,则该带区集是“满的”。否则,该带区集是“不满的”。“跨度”由一个或多个带区集(例如,多达64个带区集,其中带区集不需要彼此具有相同的容量或包含相同数目的LU)。在一些实施例中,跨度包含多个文件系统(例如,多达128个文件系统)组成。从而,跨度最终由一个或多个SD组成(典型地4到50个SD)。跨度可以被划分成一个或多个文件系统,每一文件系统具有单独的名称和标识符以及潜在不同的特性(例如,一文件系统可以被格式化具有32KB簇而另一个文件系统具有4KB簇,一文件系统可以是蠕虫而另一个不是等)。跨度上的每一文件系统分别被格式化、安装和卸载。可以以任何顺序以及在任何时候创建和删除文件系统。文件系统可以被配置成自动扩大(或可供选择的避免或限制自动扩大)或可以被手动扩大。在某些实施例中,文件服务器在“组块数据库”中存储文件系统的磁盘空间的虚拟和物理地址。为了文件系统的目的,跨度上磁盘空间的不连续的组块看上去是连续的磁盘空间。在各个实施例中,文件服务器将关于文件系统的磁盘空间的信息存储在磁盘接口(DI)芯片上表的条目中。表中的每一条目包括向文件系统分配的一部分磁盘空间的开始和结束位置。
“组块”是单个带区集上的磁盘空间区域。在一些实施例中,组块可以是添加到文件系统的磁盘空间的增量。每一组块驻留在单个带区集上,例如组块不跨越多个带区集。在一些实施例中,组块的大小的范围可以在1千兆字节(GiB)和100GiB之间。当一组块尚未向文件系统分配时,该组块是“可用的”或“空闲的”。当一组块已经被分配时,组块是“被使用的”且不能向另一文件系统分配或在相同的文件系统中被重用。组块是“空闲的”或“被使用的”,例如,组块不能被部分使用和部分空闲。在一些实施例中,当跨度被创建时,管理员设置指导组块大小。指导组块大小是对该跨度中组块大小的近似。允许文件服务器分配不同大小的组块。从而,跨度中的组块可以具有彼此不同的容量以及与指导组块大小不同的容量。
“组块串(run)”是在文件系统空间内和逻辑单元空间内连续的一系列一个或多个组块。从而,文件服务器可以对一个组块串中的所有组块执行单个连续的读或写操作。此外,可以将读或写操作翻译成针对带区集中的逻辑单元中的每一个可比较的操作,以在每一逻辑单元上以相同的地址开始以及在每一逻辑单元上以相同的地址结束。在典型的实施例中,在某些环境下,一个组块串可以以单个组块开始并被扩大成包括来自单个带区集的多个连续的组块。
“组块串偏置”是在用于存储向文件系统分配的磁盘空间的地址的表中的单个条目中存储的组块串的优选长度。组块串偏置可以指示文件服务器可以容忍带区集之间的负载失衡的程度。当组块串偏置较低时,文件服务器更频繁地从不同的带区集分配组块以保持横跨跨度的负载平衡(例如,文件服务器在其开始从一个带区集分配组块之前从另一个带区集分配较少的组块)。在一些实施例中,当跨度具有较少的组块但是许多带区集时,文件服务器确定更低的组块串偏置以提供横跨跨度的负载平衡。
“活动组块串”是向可以扩大的文件系统分配的组块的组块串。该组块串是文件系统中的最后的组块串,且紧跟在该组块串之后的是与该组块串相同的带区集上的空闲组块。
可以将带区集上空闲组块的组块串分成两个组块串。组块串中的一个是“主张的组块串”,其是紧跟在活动组块串之后的空闲组块的组块串,其长度比组块串偏置更短。所主张的组块串可以包括需要延长该活动组块串以便其长度等于组块串偏置的多个组块。
“未主张的组块串”是紧跟着主张的组块串之后的空闲组块的组块串。组块分配器任意从未主张的组块串分配组块。
“组块数据库”是用于跟踪与一个或多个文件系统关联的组块的存储结构。图1是根据本发明的一示例性实施例的文件存储系统的示意性框图。除了其他的之外,文件存储系统包括通过诸如互联网协议网络(例如,互联网)之类的通信网络9004与各种客户端设备90061-9006M通信以及还通过诸如光纤通道网络之类的存储网络9010与各种RAID系统90081-9008N通信的多个文件服务器(为了简单和方便起见示出了单个文件服务器9002)。客户端设备90061-9006M和文件服务器9002使用诸如CIFS和/或NFS之类的一个或多个网络文件协议通信。文件服务器9002和RAID系统90081-9008N使用诸如SCSI之类的存储协议通信。应该注意的是,文件存储系统应该包括在各种配置中互连的多个文件服务器和多个RAID系统,包括全网状配置,在该全网状配置中任何文件服务器可以通过冗余和交换光纤通道网络与任何RAID系统通信。
文件服务器9002管理一个或多个文件系统。文件服务器9002可以被配置成允许客户端访问文件系统的一部分,诸如在指定名称下的树或子树。在CIFS用语中,可以将这样的访问称为“共享”,而在NFS用语中,可以将这样的访问称为“出口”。在内部,文件服务器9002可以包括各种硬件实现的和/或硬件加速的子系统,例如,如在美国专利申请No.09/879,798和10/889,158中所描述的,通过引用上文将其并入,且其可以包括基于硬件的、包含多个链接的子模块的文件系统,例如,如在美国专利申请No.10/286,015和11/841,353中所描述的,通过引用上文可以将其并入。
每一RAID系统9008通常包括至少一个RAID控制器(且为了冗余,通常是两个RAID控制器)以及由RAID控制器管理的多个物理存储设备(例如,磁盘)。RAID系统9008将其存储资源聚集到多个SD中。例如,每一RAID系统9008可以被配置具有2到32个之间的SD,虽然在一些示例中,每一个RAID系统可以被配置用于更多的SD。每一SD可以被限制在预定的最大尺寸(例如,2TB-64TB或更多)。将若干存储设备组合到SD可以提供多种益处,包括增加的速度(相对较慢的单个存储设备,但是可以跨若干存储设备对数据进行条带化处理以使瓶颈变宽)、增加的容量(单个存储设备相对较小,但是可以组合若干存储设备来提供更可用的空间)、抽象化(所使用的空间量可以大于或小于单个存储设备的大小)、回弹性(可以将相同的或冗余的信息存储在每一存储设备上,以便SD可以承受存储设备的损失)。
文件服务器9002被配置成使用一个或多个SD,其可以来自单个RAID系统或来自多个RAID系统。文件服务器9002通常可以询问RAID系统以发现每一SD是主要的还是辅助的。控制哪一个SD由文件服务器9002使用的方法在本申请中被称为“许可”。从而,在实践中,文件服务器9002将典型地被许可用于一些SD以及不被许可用于其他的SD。
在内部,文件服务器9002能够将若干SD组合到在本申请中被称为“跨度”的更大的存储池。在本质上,跨度是若干SD的RAID 0阵列。将若干SD组合到跨度内提供了与通过将多个物理磁盘组合到SD内获得的益处相类似的益处,包括增加的速度(在多个RAID系统上的多个SD之间扩展I/O可以进一步加宽存储瓶颈)、增加的存储容量(跨度可以比单个SD更大,其可以被限制在二兆兆字节)、以及另外的抽象化,其可以允许更灵活的存储空间分配。
图2是根据本发明一示例性实施例的跨度的示意框图。如所示出的,跨度9011由逻辑上提供连续存储空间的编号为90121-9012K的多个带区集组成。每一带区集9012继而由一个或多个范围以及从而一个或多个SD组成。在该示例中,带区集90121包括编号90131-9013J的范围。
当向带区集写入大量的数据时,文件服务器9002通常跨带区集中的多个范围/SD将数据“条带化”而不是向单个范围/SD写入所有的数据。例如,当写入大量的数据时,文件服务器9002可以将第一个4MB数据写入范围/SD90131中、将下一个4MB数据写入范围/SD 90132中等等,在向范围/SD 9013J写入数据之后,循环回到范围/SD 90131。除了其他的之外,这样的“条带化”增加了文件服务器9002使用若干SD(以及从而若干存储设备)的机会,上述若干SD可能由若干RAID系统管理。
应该注意的是,在示例性的实施例中,当创建跨度时,跨度9011初始地包含单个带区集,但是随着时间的过去,可以向跨度添加另外的带区集,且不同的带区集可以具有不同数目的范围/SD。在示例性的实施例中,每一带区集可以包含多达32个SD,而不管其容量。可以镜像化每一SD,但是这样的镜像由RAID系统执行而不是由文件服务器9002执行;从而,对于被镜像化的SD,文件服务器9002仅向主SD发送命令,且对于每带区集的32个SD的限制,只有主SD才被计数。此外,在示例性的实施例中,一旦创建了带区集,则不再向带区集添加SD。从而,为了将SD添加到跨度,为了另外的SD形成新的带区集,且在本质上新的带区集被连接到跨度中现有的带区集。
从而,例如,跨度初始地可以包括具有编号为0-3的四个SD的单个带区集。为了将三个编号5-7的新的SD添加到该跨度,创建了包含SD 5-7的第二带区集,且第二带区集被连接到第一带区集。现有的数据横跨在跨度中的所有7个SD未“被重复条带化”。
本质上,可以将文件系统视作为具有N个顺序的存储块的连续的存储空间。为了讨论的目的,可以顺序地从0至N-1将块逻辑地编号。实际上,文件系统存储空间在跨度中可能在物理上是不连续的,但是其可以包含来自多个带区集的存储空间。一般而言,文件服务器9002将文件系统存储块映射到跨度内的物理存储位置。从而,在文件系统包括来自多个带区集的存储空间的示例性的实施例中,第一组文件系统存储块将映射到第一带区集,第二组文件系统存储块将映射到第二带区集,以此类推。
图3是示出在本发明的示例性实施例中在存储块与带区集之间的关系的示意图。在该示例中,存在包括来自两个带区集的组块的编号为0-(N-1)的N个存储块,其中第一个M个块(编号为0至M-1)映射到来自带区集1的组块,并且剩余的N-M个块(编号为M至N-1)映射到来自带区集2的组块。应该注意的是,可能存在与每一带区集关联的数百万个块,且块的数目可能在每一带区集中是不同的。应该注意的是,因为随着时间的变化向文件系统进行分配,因此典型的文件系统将具有来自每一带区集的许多范围。例如,其可能具有来自带区集0的7GiB、来自带区集2的9GiB、来自带区集1的13GiB、来自带区集0的11GiB、来自带区集1的18GiB、来自带区集0的8GiB、来自带区集2的21GiB等。此外,其可以具有来自相同带区集的不同区域的若干连续的范围,在跨度仅包含一个或两个带区集的情况下,这尤其可能。
图4是根据一示例性实施例的文件服务器9002上的跨度管理器9003的示意框图。除了其他的之外,跨度管理器9003包括一个或多个组块分配器9014和VLSI接口9015,通过VLSI接口9015跨度管理器9003与各种基于硬件的文件系统组件接口,包括具有表9025的磁盘接口(DI)芯片9020,该表9025存储向文件系统分配的组块串的位置。跨度管理器9003还与组块数据库9030接口,该组块数据库9030存储与向文件系统分配的组块相关的信息。在许多实施例中,组块数据库9030存储关于跨度上的每一组块的信息。组块数据库9030存储关于跨度上的每个组块的信息。跨度管理器9003的组块分配器9014操作组块数据库9030。
DI芯片9020负责连接到物理存储器(例如,在后端光纤通道SAN上的磁盘和/或固态存储器)以及负责控制数据如何被存储并在这些物理设备之间分布。当跨度管理器9003从客户端设备9006接收请求以扩大文件系统的磁盘空间时,组块分配器9014确定向文件系统分配哪一个或那些组块。
在一些实施例中,文件服务器9002包括单个组块分配器9014。组块分配器9014针对不同的跨度存储跨度权重和文件系统权重组,如在本申请中进一步描述的。组块分配器9014基于被扩大的文件系统驻留在其上的跨度来选择跨度权重和文件系统权重。在其他实施例中,文件服务器9002包括不同的组块分配器9014,每一组块分配器9014存储不同组的跨度和文件系统权重。在一些实施例中,跨度管理器9003基于客户端设备9006选择组块分配器9014。在一些实施例中,跨度管理器9003基于要被扩大的文件系统来选择组块分配器9014。
组块分配器9014确定组块的虚拟地址和逻辑单元上磁盘空间中的相应物理地址,以及逻辑单元的设备标识符。组块分配器9014存储与组块数据库9025中以及DI芯片9020中的表9025中所分配的组块相关的信息。在一些实施例中,组块分配器9014将关于每一单个分配的组块的信息存储在组块数据库9025中。组块分配器9014还通过VLSI接口9015更新DI芯片9020上的表9025以反映新分配的组块。
在一些实施例中,表9205包括卷映射表和带区集映射表。组块分配器9014存储和/或更新在卷映射表的条目中的组块串的文件系统空间的开始和结束地址。带区集映射表存储文件系统空间中的地址与SD空间中的地址之间的关系。从而,使用卷映射和带区集映射表,文件系统可以访问已经分配给其的磁盘空间的组块。在一些实施例中,组块分配器9014存储诸如虚拟地址、物理地址、以及与组块相对应的设备标识符之类的信息。在一些实施例中,虚拟地址是文件系统偏移,设备标识符是LU设备标识符,且物理地址是逻辑单元上的偏移。
在示例性的实施例中,当文件系统由一个或多个组块扩大而不是以随便的方式从带区集分配组块以及针对每一添加的组块使用组块数据库9025中的单独的表条目时,跨度管理器9003,尤其是组块分配器9014,在下文更充分讨论的某些环境下,从与文件系统中存在的最后的组块(即,与组块数据库9025中最后填充的条目关联的组块)相同的带区集分配一个或多个组块,且上述一个或多个组块与上述最后的组块相连,且组块数据库9025中相应的条目被更新成反映向文件系统分配的磁盘空间中的有效增加。以此方式,与最后的表条目关联的虚拟文件系统地址的范围增长并映射到物理存储器的多个连续的组块,而不利用另外的表条目,并从而将这些表条目留用于进一步扩大。因此,通常可以扩大文件系统以在不扩大表大小的情况下包括更大的组块数目(例如,在使用具有1023个条目的固定大小的表的系统中超过1023个组块)。
图5是在一带区集中组块的示意性表示,该带区集包括一些已经被使用的组块和一些可向文件系统分配的空闲的组块。为了方便起见,“空闲的”组块被称为“空闲1”、“空闲2”等。在该实施例中,带区集包括被使用的组块的不连续组块串。已使用的组块1和2被分配给相同的文件系统。当文件服务器9002搜索空闲的组块来分配给不同的文件系统时,文件服务器9002搜索跟在文件系统的活动组块串(例如,所主张的组块串)之后的预定数目的空闲组块,如在本申请中进一步描述的。从而,文件服务器9002绕开空闲的组块,以便文件系统在后来可以扩大到所主张的组块串中的组块。文件服务器9002在所主张的组块串之后向不同的文件系统分配组块,例如,组块“被使用的3”。为了展示的目的,假设针对跨度管理器9003接收一请求,以将给定的文件系统扩大大小为X的三个组块。跨度管理器从可用的存储器分配三个组块。虽然三个组块可以来自单个带区集或来自两个或三个不同的带区集,为了该展示,假定来自图5的组块“空闲1”、“空闲2”和“空闲3”被分配用于该文件系统。
图6是表9025的示意性表示,如在示例性的现有技术实施例中在特定的时间点可以找到的,其中针对每一新的组块的信息存储在单独的表条目中。为了方便和简单起见,将该表表示为存储组块指针和大小,虽然在实际的实施例中,该表可以包含用于跟踪与向文件系统分配的组块关联的逻辑和物理地址和设备的、另外的和/或可供选择的信息(例如,存储向文件系统分配的组块或组块的组块串的开始和结束地址)。当首先创建文件系统时,表9025中的字段是空白的。当文件服务器9002向文件系统分配组块时,每一新近分配的组块的地址和大小被存储在条目字段中。文件服务器9002可以向文件系统分配三个新的组块,从而占用了表9025中的三个条目。向表条目9030中写入针对第一组块的信息,包括指向在先前的空字段9040中的组块开始的指针(在该示例中,指向组块“空闲1”的开始的指针)且组块大小X在字段9050中;针对第二组块的信息被写入表条目9031中,包括指向在先前的空字段9041中的组块开始的指针(在该示例中,指向组块“空闲2”的开始的指针)且组块大小X在字段9051中;且针对第三组块的信息被写入到表条目9032中,包括指向在先前的空字段9042中的组块开始的指针(在该示例中,指向组块“空闲3”的开始的指针)且组块大小X在字段9052中。虚拟文件系统地址空间被增加了3X。在备选的实施例中,每一分配的组块可以具有相同的大小。在这些实施例中,表9025可以包括单个列,其中列中的每一条目存储了组块的开始的地址。
图7是表9025的示意性表示,如在示例性实施例中在特定的时间点可以找到的,其中针对连续组块的信息可以存储在单个表条目中,代替在表6中示出的表9025。特别地,使用上文所述的、在其中来自图5的连续的组块“空闲1”、“空闲2”、和“空闲3”被分配用于文件系统的示例,表条目9030用于存储组块串的三个连续的组块的信息。指向组块串的开始的指针(在该示例中,指向组块“空闲1”的开始的指针)已经被写入字段9040。指向组块串的结束的指针(在该示例中,指向组块“空闲3”的结束的指针)已经被写入字段9050。以此方式,即使跨度管理器9003分配三个新的组块并将上述组块添加到文件系统,连续的组块也仅占据一个表条目并使得其在表9025作为具有较大组块尺寸的单个组块出现(即,跨越所存储的地址的组块)。
为了进一步展示的目的,假设接收了进一步的请求以供跨度管理器9003将文件系统扩大两个或更多个组块,且组块管理器9003确定其应该从相同的带区集分配接下来的两个连续的组块(例如,图5中的组块“空闲4”和“空闲5”)。
图8是根据一示例性的实施例示出图7中的表条目9030如何被修改成并入了两个另外的连续块的表9025的示意性表示。具体地,指向组块串中的第一个组块的开始的指针保持在字段9040中,而存储在字段9050中的组块串的结束的地址被改变(在该示例中,被改变为组块“空闲5”的结束),以便在开始和结束地址之间的磁盘空间包含另外两个连续分配的组块。以此方式,即使跨度管理器9003现在已经从存储器分配了5个连续的组块并将上述组块添加到文件系统,连续的组块仍然仅占据一个表条目。
在典型的实施例中,仅利用在表9025中最后使用或未使用的表条目来进行使用聚合的连续组块的文件系统的扩大,以便将虚拟的文件系统地址空间的相应扩展映射到被添加到文件系统末尾的新存储空间。例如,再次参考图4,如果将3个组块添加到文件系统,则文件系统地址空间将从N增加到(N+3X),但是与针对块0至(N-1)的存储空间相对应的物理地址必须维持不变或特定的虚拟文件系统地址则指向无效的物理地址位置。图9是图4中扩大3个大小为X的组块的文件系统空间的示意性表示。原始文件系统空间9060维持在逻辑地址范围0至(N-1)且新近分配的文件系统空间9070位于逻辑地址范围N至(N+3X-1)。
图10是根据一示例性实施例的针对通用组块分配过程的流程图。具体地,图10描述了用于由文件服务器扩大针对文件系统的存储空间的通用组块分配过程,其中文件系统包括从多个带区集选择的多个组块,且文件服务器将文件系统的虚拟地址空间映射到与组块关联的物理存储地址。在块1002中开始,文件服务器保持组块数据库以跟踪与文件系统关联的组块,组块数据库包括固定数量的条目,每一条目能够存储与向文件系统分配的一部分存储空间的开始地址和长度相关的信息。在框1004中,文件服务器接收要扩大文件系统的请求。在框1006中,文件服务器基于组块数据库识别与文件系统关联的最后的组块。在框1008中,文件服务器确定来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块是否可用于向文件服务器分配。在本申请中讨论的示例性实施例的上下文中,确定来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块是否“可用于”向文件系统分配可以不仅将组块是否空闲考虑在内而且可以将诸如组块串偏置和其他因素之类的其他因素考虑在内,如在下文所讨论的。在框1010中,当至少一个组块被确定为可用时,文件服务器分配来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块。在框1012中,文件服务器更新与文件系统的最后的组块关联的表中的条目,以反映由所分配的至少一个组块代表的连续存储空间的长度的增加。
在某些示例性实施例中,向能够从带区集分配且与单个表条目关联的多个连续组块施加了各种限制(下文更充分讨论的),以便在一些情形中,即使另外的连续组块可能已经从特定的带区集分配且与单个表条目关联,组块中的至少一些组块也从不同的带区集分配以跨多个带区集分布存储空间(以及从而存储空间访问)。例如,假设特定的文件系统中最后的组块是来自特定带区集的A个连续组块的一个组块串的一部分(在本申请中其可以被称为“活动组块串长度”),其中A大于或等于一但是小于预定的组块串偏置。此外,假设接收要将文件系统扩大B个组块的请求,其中(A+B)大于预定的组块串偏置。即使存在从与最后的组块相同的带区集可用且与最后的组块连续的B个组块,组块分配器9014通常也将仅从该带区集分配N个组块,其中N等于组块串偏置减去活动组块串长度;组块分配器9014通常将从一个或多个其他的带区集分配剩余的组块,如根据预定的选择方案所选择、下文更充分讨论的。但是,在一些实施例中,如果最近已经将带区集添加到跨度且上述带区集比其他带区集成比例地更空,则组块分配器9014可以在更空的带区集分配较长的组块串,而不管组块串偏置的长度。
虽然,在一些示例性的实施例中,组块分配器9014可以实时确定一个或多个组块是否可以从与最后的组块相同的带区集分配且与最后的组块连续,在某些示例性实施例中,组块分配器9014可以在下文更充分讨论的某些环境下,至少暂时地从带区集预留一个或多个连续的组块,以允许这样的组块在未来的时间以连续的方式被分配至文件系统。具体地,在这样的情形下,当组块分配器9014从带区集分配一个或多个连续的组块以向文件系统分配且存在另外的连续的组块在未来可以被分配给文件系统的可能性时,组块分配器9014可以预留该带区集中、与所分配的组块连续的一个或多个组块,以便如果且当该文件系统在未来被扩大时,这样的预留组块可用于分配给文件系统。一般而言,组块分配器9014将仅预留组块至预留的组块可以被分配而不超过预定的组块串偏置的程度,即如果已经从带区集向文件系统分配的连续的组块的数目(在本申请中其被称为“活动组块串长度”)已经到达预定的组块串偏置,则组块分配器9014典型地不预留任何组块;否则,组块分配器9014可以预留多达N个组块,其中N等于预定的组块串偏置减去活动组块串长度。当针对其他的文件系统分配组块时,组块分配器9014避免预留的组块,至少直到预留的组块被返回到可用组块的“池”中(例如,如果预留的组块变成仅有的可用于被分配的组块)。应该注意的是,组块分配器9014可以针对多个不同文件系统中的每一个文件系统保持一组单独的预留组块。
从而,当文件系统的存储空间扩大时,文件服务器9002可以从预留用于文件系统的组块串中分配组块。因为具有多个组块的组块串可以占用组块数据库中的单个条目,所以文件系统可以包括比组块数据库将允许的更多的组块。从而,在该系统中,可以有效地使用存储空间,文件系统可以以较小的增量添加存储空间,文件系统可以是可缩放的,且可以迅速地执行地址翻译。
此外,文件服务器9002可以试图跨带区集分配文件系统的累积负载和每一文件系统的单个负载。当文件系统请求磁盘空间扩大时,文件服务器9002考虑多个因素以确定选择哪一个带区集用于磁盘空间的下一次分配。用于评估带区集的示例性因素包括在带区集上需要分配的组块的数目,以使得带区集与最满的带区集和在带区集上正由文件系统使用的组块的数目成比例地满。
在一些实施例中,示例性的因素对跨带区集平衡文件系统的负载在带区集上实现平衡总负载的优先级,或者反之亦然。当跨度上的大多数或全部的文件系统被预计很忙时,跨带区平衡总负载可能具有更重要的优先级。当小比例的文件系统被预计很忙时,在任何给定的时刻或在峰值时刻期间,跨带区集平衡每一文件系统的负载可能变成优先。可以以应用于参数的权重来实现这些目标的相对重要性以确定下一个应该从其处分配磁盘空间的带区集。上述权重可以是跨度权重和文件系统权重。较大的跨度权重以平衡跨带区集的跨度的总负载为优先,且跨度权重被应用于测量跨带区集的组块分配的不平衡(例如,在带区集上将需要分配的以使得带区集与最满的带区集成比例的满的组块的数目)。较大的文件系统权重以跨带区集平衡活动文件系统为优先,且文件系统权重被应用于针对跨带区集的特定文件系统测量组块分配的不平衡。
在一些实施例中,文件服务器9002具有针对跨度和文件系统权重存储不同值的单个组块分配器9014。在各个实施例中,文件服务器9002具有不同的组件分配器9014,其可以针对跨度和文件系统权重具有不同的值,且文件服务器9002可以基于客户端进行请求、文件系统被扩大或任何其他的变量选择组块分配器9014以处理对磁盘空间扩大的请求。基于本申请中讨论的至少这些参数,文件服务器9002上的组块分配器9014选择包括向文件系统分配的最后的组块的带区集或一新的带区集。
当组块分配器9014选择具有文件系统的最后分配的组块的带区集时,组块分配器9014,当可能时,分配紧跟在最后的组块之后的组块。当组块分配器9014选择新的带区集时,组块分区器9014分配组块且其还针对来自文件系统的未来的请求(例如,主张的组块串),预留磁盘空间的多个随后的、连续的组块。从而,当文件系统请求另外的磁盘空间时,组块分配器9014可以从已经为其留出的磁盘空间分配组块。此外,当组块分配器9014在新的带区集上搜索磁盘空间时,组块分配器9014可以绕过已经被预留用于其他文件系统的可用组块。
关于要预留的连续组块的数目,文件服务器9002可以确定用于跨度的组块串偏置。虽然文件服务器9002将分配与组块串偏置对应的组块的数目,但是在一些情形下,文件服务器9002可以分配不同的数目,如下文更详细描述的。
现在描述具体示例性实施例的细节。在这些具体的示例性实施例中,文件服务器9002接收关于与跨带区集分配单个文件系统的负载相比跨带区集分配跨度的总负载的相对重要性的信息。在一些实施例中,文件服务器9002针对跨度权重和文件系统权重存储缺省值。在一些实施例中,文件服务器9002的管理员可以将跨度权重和文件系统权重输入到文件服务器9002。在一些实施例中,管理员针对跨度中的每一文件系统输入个别的和/或不同的文件系统权重。在一些实施例中,在向文件服务器系统订制或请求新的文件系统之后,客户端可以输入跨度和/或文件系统权重以由文件服务器9002存储。文件服务器9002可以将权重存储在组块分配器9014中。在一些实施例中,文件服务器9002将权重存储在跨度磁盘上配置中(例如,Cod)。
在各个实施例中,权重的值的范围在零(0)和十(10)之间。跨度权重和文件系统权重的缺省值可以是10。在一些实现中,如果客户不提供关于针对负载分配的优先级的信息,则文件服务器9002将跨度权重和文件系统权重设置成相同的值。该值可以是十(10)、五(5)、或由本领域的普通技术人员所期望的任何其他值。
文件服务器9002确定针对该跨度的组块串偏置。在一些实施例中,文件服务器9002使用由客户针对客户的跨度和/或文件系统输入的组块串偏置。在一些实施例中,文件服务器9002使用在存储器中存储的缺省值。缺省组块串偏置可以是64个组块,虽然还可以使用其他的缺省值。
在一些实施例中,文件服务器9002基于文件系统的数目和跨度上带区集的数目来确定组块串偏置。例如,当跨度具有几个组块和很多带区集时,较小的组块串偏置可以提高跨带区集的负载平衡。文件服务器9002可以根据跨度的参数减小组块串偏置。
在一些实施例中,文件服务器9002可以将带区集的数目除以2。文件服务器9002可以将结果值除以文件系统的数目。文件服务器9002可以将结果值与在存储器中存储的缺省组块串偏置进行比较,并将组块串偏置设置成较小的值。在一些实施例中,针对跨度的组块串偏置可以在0个组块与250个组块之间,虽然还可以使用其他范围的针对组块串偏置的潜在值。
在操作中,在客户端设备9006处的用户向文件服务器9002发送请求以扩大针对文件系统的磁盘空间。在一些实施例中,该请求包括要添加到文件系统的磁盘空间量。文件服务器9002确定与磁盘空间量相对应的组块数量,例如,通过将所请求的磁盘空间量除以组块的指导大小。
当接收请求以扩大文件系统时,组块分配器9014选择一个或多个带区集以向文件系统分配组块。如上文所描述的,组块分配器9014可以针对文件系统预留带区集上的组块串。由于该原因,当组块分配器9014确定用于向文件系统进行下一次分配的带区集时,组块分配器9014可以具有朝向带区集的偏置,其包括文件系统的最近分配的组块(在本申请中也称为“当前的带区集”)。在一些情形下,组块分配器9014还可选择用于分配的新的带区集。组块分配器9014可以改变成其他的带区集以平衡跨度的总负载、跨带区集平衡文件系统负载、或出于任何其他的原因。
在一些实施例中,组块分配器9014基于至少在带区集中需要分配以使得带区集与最满的带区集成比例地满的组块数目、带区集上已经分配给正被扩大的文件系统的所使用的组块数量、跨度权重、以及文件系统权重来选择带区集。如果组块分配器9014确定当前的带区集上所剩余的可能是有利的,则当选择该带区集时,组块分配器9014可以通过将偏置因子添加到当前的带区集上可用的组块数目来偏置其选择。
在一些实施例中,组块分配器9014可以使用各种标准来确定是否将带区集的选择朝向当前的带区集偏置。例如,仅在文件系统已经具有至少一个所分配的组块的情况下,组块分配器9014可以偏置选择,从而具有当前的带区集,且在文件系统的所分配的最后的组块之后的组块可用,以便分配器总是偏置朝向使用下一个组块且避免了开始新组块串的需要。当首先创建了文件系统时,因为文件系统尚不具有跨带区集分配的负载,所以组块分配器9014可能主要关心分配跨度的总负载。在另一示例中,如果紧跟在所分配的文件系统的最后的组块之后的组块可用,则组块分配器9014可以偏置选择。如果该组块不可用,则文件系统被认为扩大成预留用于该文件系统的组块的整个组块串。由于下一个分配需要表中的新条目,所以当前带区上剩余的不一定有利。在一些实施例中,在偏置选择之前,文件服务器9002可能需要这些条件中的一个或多个。
可以以多种方式来确定偏置因子。在一些实施例中,组块分配器9014确定要向正被扩大的文件系统分配的组块的数量。例如,组块分配器9014可以将由文件系统所请求的分配的大小除以组块的指导大小。组块分配器9014可以确定可在当前的带区集上分配的组块的数量。例如,组块分配器9014可以将扩大的组块的数目除以仍然具有可以被分配的磁盘空间的带区集的数量。
组块分配器9014可以计算偏置因子,该偏置因子考虑了在磁盘上连续放置较大组块串且当跨度具有许多文件系统时避免分裂组块串的有利条件。为了考虑前者,组块分配器9014可以确定与在当前的带区集上分配的多个组块的相比较更大的组块串偏置(在本申请中还被称为“连续因子”)。为了考虑后者,文件服务器9002可以将文件系统的数量除以带区集的数量。如果该商大于1,则偏置因子可以是该商乘以连续因子。否则,偏置因子可以等于连续因子。
为了选择带区集,组块分配器9014对每一带区集进行记分并选择具有最高分的带区集。上述记分可以包括跨度子记分和文件系统子记分。在一些实施例中,记分可以是跨度子记分和文件系统子记分的总和。对于跨度子记分,组块分配器9014可以首先确定需要在带区集上分配以使得带区集与最满的带区集成比例地满的组块的数目。在一些实施例中,跨度子记分可以是跨度权重和需要在带区上分配以使得带区集与最满的带区集成比例地满的组块的数目的乘积。从而,带区集的记分的一部分可以考虑相对于其他带区集该带区集的可用性,以推定该跨度的负载。
针对文件系统子记分,组块分配器9014可以确定带区集上已经向文件系统分配的组块的数量。文件系统子记分可以是文件系统权重和该组块数量的乘积。从而,带区集的记分的一部分可以考虑将向带区集分配以使得其如最满的带区集一样满的组块的数量。
在一些实施例中,当文件服务器9002不将选择偏置朝向当前的带区集时,组块分配器9014可以考虑当组块分配器9014确定带区集上可用的组块的数目时已经被预留用于其他文件系统的组块。例如,如果其他文件系统中的任何一个文件系统在带区集上具有活动组块串,则为了组块串长度等于组块串偏置,组块分配器9014可以确定将需要附加到活动组块串的组块的数目。组块分配器9014可以从带区集上可用的组块的总数目减去该数目。最后的数目可以乘以跨度权重以确定带区集的跨度子记分。然后,组块分配器9014确定带区集的文件系统记分和总记分。组块分配器9014选择选择具有最高记分的带区集。
在一些实施例中,当文件服务器9002将选择偏置朝向当前的带区集时,带区集上可用组块的数量可是未分配的组件的总数目。此外,组块分配器9014可以将偏置因子加到当前的带区集上可用的组块数量。如果当前的带区集具有最高的记分或针对最高记分的连结,则组块分配器9014选择当前的带区集。否则,组块分配器9014重新计算记分,如同组块分配器9014未偏置选择并选择具有最高记分的带区集。
在一些实施例中,当组块分配器9014选择第一个组块用于新的文件系统时,组块分配器9014选择在超过一个SD上托管的带区集。在许多实施例中,文件系统的第一个组块包括与文件系统的结构相关的信息(例如,元数据)。通过选择在超过一个SD上托管的带区集,组块分配器9014冗余地存储这样的关键信息以确保在另一备份故障的情况下可获得至少一个备份。在一些实施例中,在选择带区集时,组块分配器9014将单个SD上的所有带区集排除在外。在一些实施例中,如果多SD带区集中没有带区集具有空闲的组块,则组块分配器9014返回考虑单SD带区集。
组块分配器9014在所选择的带区集上选择一个或多个组块以向文件系统分配。如果组块分配器9014选择当前的带区集,则组块分配器9014可以确定紧跟在文件系统的所分配的最后的组块之后的组块是否可用。如果可用,则组块分配器9014向文件系统分配该组块。
当组块分配器9014选择新的带区集时,组块分配器9014可以搜索未预留的组块的组块串并将其中的第一个组块分配至文件系统。组块分配器9014可以搜索其长度至少为组块串偏置的未预留的组块的组块串。如果组块分配器9014找到这样的组块串,则文件服务器9002可以向文件系统分配该组块串中的第一个组块。组块分配器9014可以搜索带区集上未预留的组块的最长组块串并向文件系统分配该组块串中的第一个组块。
在一些情形下,组块分配器9014可能无法找到具有期望长度的未预留组块的组块串,例如组块串偏置。在这些情形下,组块分配器9014可以搜索所主张的组块串(例如,预留用于其他文件系统的未分配的组块串)。在一些实施例中,组块分配器9014可以搜索其长度等于组块串偏置的所主张的组块串。组块分配器9014可以向文件系统分配所主张的组块串的后半部分中的第一个组块。在一些实施例中,如果文件系统已经请求了扩大需要所主张的组块串中超过一半的组块的磁盘空间,则组块分配器9014识别所主张的组块串的前半部分中的组块,以便所请求的组块的分配将填充所主张的组块串的后一部分。以此方式,文件服务器9002可以针对文件系统保留一些可伸缩性,即使当可用的磁盘空间变得不足时。如果组块分配器9014无法找到长度等于组块串偏置的所主张的组块串,则组块分配器9014可以搜索带区集上的最长的所主张的组块串并向文件系统分配其第一个组块。
在一些实施例中,如果组块分配器9014无法找到用于分配的组块,则分配可能失败。文件服务器9002可以向客户端9006返回错误消息。
在一些实施例中,组块分配器9014可以搜索组块串等于用于期望在带区集上分配的文件系统的组块数量的组块串而不是搜索长度等于组块串偏置的组块串。如上文所描述的,该数量可以是要向文件系统分配的组块的总数除以不满的带区集的数量。在一些实施例中,当长度超过跨度的组块串偏置时,组块分配器9014根据该长度进行搜索。
在一些情形下,请求针对文件系统的磁盘空间扩大包括指示从其处应该分配磁盘空间的带区集。如果该带区集不是文件系统的当前的带区集,则组块分配器9014可以根据本申请中描述的方法中的任何一个方法搜索组块。
如果带区集是文件系统的当前的带区集,则组块分配器9014可以紧跟在活动组块串之后分配该组块。如果扩大需要超过一个组块,则组块分配器9014可以继续分配组块直到组块串的长度等于组块串偏置。在一些实施例中,如果活动组块串之后的组块可用,则组块分配器9014可以扩大组块串超过组块串偏置。在一些实施例中,对于扩大中剩余的组块,组块分配器9014可以根据本申请中描述的其他方法中的任何一个方法搜索磁盘空间。
在一些情形下,来自用户的请求包括请求磁盘空间的较大扩大。为了横跨跨度分配新负载,组块分配器9014可以从具有可用组块的每一带区集向文件系统分配组块。在一些实施例中,组块分配器9014可以将请求中的组块数量除以未满带区集的数量。组块分配器9014可以针对长度等于商的未主张的组块串搜索每一带区集,且每一组块串可以占据文件系统的表中的单个条目。在一些情形下,组块分配器9014可以在每一带区集上分配长度比组块串偏置更长的组块串。在一些实施例中,如果商比组块串偏置更小,则组块分配器9014可以根据本申请中所描述的方法中的任何一个方法选择带区集并分配等于组块串偏置的组块的组块串。组块分配器9014可以继续选择带区集并分配组块串偏置的组块,直到请求中的所有磁盘空间已经被分配给文件系统。
现在参考图11,示出和描述了一种选择带区集以及带区集上用于向文件系统分配的组块的方法的示例性流程图。该方法包括针对跨度确定组块串偏置,其中组块串偏置指示与针对文件系统的地址翻译表中的条目相关联的磁盘空间的连续组块的数目(步骤5005)。当组块分配器已经向文件系统分配的带区集上的磁盘空间的连续组块的数目等于组块串偏置时,组块分配器可以确定用于提供磁盘空间扩大的新的带区集。在一些实施例中,文件服务器可以获取在存储器中存储的缺省组块串偏置。在一些实施例中,文件服务器基于带区集的数量和文件系统的数量确定潜在的组块串偏置。例如,文件系统可以将带区集的数量除以2并将结果值除以文件系统的数量。如果该结果比缺省组块串偏置更小,则该结果可以变成组块串偏置。
该方法包括接收要扩大针对文件系统的磁盘空间的请求(步骤5010)。在一些实施例中,文件服务器基于文件系统请求扩大磁盘空间获取跨度权重和文件系统权重。在一些实施例中,文件服务器的单个组块分配器获取跨度权重和文件系统权重。在其他实施例中,文件服务器基于文件系统从多个组块分配器选择组块分配器。在这些实施例中,每一组块分配器可以存储唯一的一对跨度和文件系统权重。
该方法包括至少部分地基于带区集上未使用的组块的数量和带区集上正由文件系统使用的组块的数量对一组带区集中的每一带区集进行记分(步骤5015)。对于每一带区集,组块分配器可以将跨度权重乘以带区集上需要分配的以使该带区集与最满的带区集成比例地满的组块的数量。对于每一带区集,组块分配器还可以将文件系统权重乘以带区集上正由文件系统使用的组块的数量。组块分配器可以将带区集的记分设置成等于这两个乘积的总和。在一些实施例中,组块分配器可以包括当针对当前的带区集确定记分时的偏置因子。在一些实施例中,带区集上未使用的组块的数目可以考虑预留用于其他文件系统的磁盘空间的未分配的组块。
该方法包括分配带区集上具有最高记分的组块,其中所分配的组块位于预留用于其他文件系统的组块串之外(步骤5020)。如果文件系统当前的带区集具有最高的记分,则组块分配器可以分配在所分配的、文件系统的最后的组块之后的组块。在一些实施例中,组块分配器可以搜索未预留的组块的组块串并向文件系统分配其中的第一个组块。组块分配器可以搜索长度为至少组块串偏置的未预留的组块的组块串并向文件系统分配组块串中的第一个组块。组块分配器可以搜索带区集上未预留组块的最长的组块串并向文件系统分配该组块串中的第一个组块。
在一些实施例中,组块分配器可以搜索长度等于组块串偏置的所主张的组块串。组块分配器可以向文件系统分配所主张的组块串的后半部分中的第一个组块,或如由本申请中描述的其他方法所描述的在所主张的组块串中的任何其他组块。在一些实施例中,组块分配器可以搜索在带区集上最长的所主张的组块串并向文件系统分配其第一个组块。
现在参考图12,示出并描述了一种选择带区集的方法的示例性流程图,在当前的带区集包括针对文件系统可扩大的活动组块串时,将从上述带区集分配组块。该方法包括确定带区集上在文件系统的所分配的最后组块之后的组块可用(步骤6005)。组块分配器可以定位文件系统的所分配的最后组块并确定随后的组块是否可用。在一些实施例中,组块分配器可以确定文件系统的活动组块串的长度不等于组块串偏置。
该方法包括确定针对具有文件系统的所分配的最后的组块的带区集的偏置因子(步骤6010)。在一些实施例中,组块分配器首先通过例如将由文件系统所请求的分配的大小除以组块的指导大小来确定要向正被扩大的文件系统分配的组块的数目。组块分配器可以通过例如将扩大中的组块的数目除以仍然具有能被分配的磁盘的带区集的数目来确定在当前的带区集上可以被分配的组块的数目。
偏置因子可以考虑当跨度具有许多文件系统时,在磁盘空间中连续设置较大的组块串并避免分裂组块串的有利条件。为了考虑前者,组块分配器可以确定与在当前的带区集上可以分配的组块的数目相比较更大的组块串偏置(在本申请中也被称为连续因子)。为了考虑后者,文件服务器可以将文件系统的数目除以带区集的数目。如果商大于1,则偏置因子可以是该商乘以连续因子。否则,偏置因子可以等于连续因子。
该方法可以包括至少部分地基于偏置因子、在带区集上需要分配以使得带区集与最满的带区集成比例地满的组块数量、和/或在正由文件系统使用的带区集上的组块数量,对具有文件系统的所分配的最后的组块的带区集进行记分(步骤6015)。组块分配器可以将偏置因子添加到带区集上可用组块的数量。组块分配器可以将该数量乘以宽度权重以及正由文件系统使用的带区集上的组块数量乘以文件系统权重。这两个乘积的总和可以是当前带区集的记分。
该方法可以包括至少部分地基于在带区集上需要分配以使得带区集与最满的带区集成比例地满的组块的数量、和/或带区集上正由文件系统使用的组块数量,来对其他带区集中的每一个带区集进行记分(步骤6020)。对于每一带区集,组块分配器可以将跨度权重乘以在带区集上需要分配以使得带区集与最满的带区集成比例地满的组块的数量,且文件系统权重乘以带区集上正由文件系统使用的组块数量。这两个乘积的总和可以是带区集的记分。
该方法可以包括选择具有最高记分的带区集(步骤6025)。如果当前的带区集具有最高记分或针对最高记分的连结,则文件服务器选择当前的带区集。否则,文件服务器可以重新计算记分,就像文件服务器不将选择偏置朝向当前的带区集一样,如在本申请中所描述的,并选择具有最高记分的带区集。
现在参考图13,示出并描述了一种在当前的带区集不包含针对该文件系统的可扩大的活动组块串时选择带区集的方法的示例性流程图。该方法包括确定带区集上在文件系统的所分配的最后的组块之后的组块正由另一文件系统使用、位于不同的带区集上、还是不存在(步骤7005)。组块分配器可以定位文件系统的所分配的最后的组块并确定随后的最后是否可用。在一些实施例中,组块分配器可以确定已经向另一文件系统分配了该组块。在一些实施例中,组块分配器可以确定文件系统的所分配的最后的组块是带区集上最后的组块,使得下一个组块不存在。在一些实施例中,组块分配器可以确定下一个组块在不同的带区集上。
该方法包括至少部分地基于在带区集上需要分配以使得带区集与最满的带区集成比例地满的组块的数量与预留用于其他文件系统的组块的数量之间的差、以及带区集上正由文件系统使用的组块数量,来对一组带区集中的每一带区集进行记分(步骤7010)。对于每一带区集,文件服务器可以确定未使用的组块数量和预留用于文件系统的组块的数量。文件服务器可以将预留的组块的数量从未使用的组块的数量中减去,并将该差乘以跨度权重。文件服务器可以将带区集上正由文件系统使用的组块数量乘以文件系统权重。乘积的总和将是带区集的记分。
该方法包括选择具有最高记分的带区集(步骤7015)。文件服务器比较带区集的记分并选择具有最高记分的带区集。
现在参考图14,示出并描述了存储向文件系统分配的组块串的文件系统空间中的开始和结束地址的示例性表9025’。表9025’位于DI芯片上,例如DI芯片9020。示例性的表9025’是卷映射表。在示例性实施例中,针对文件系统的卷映射表具有也存储在DI芯片上的相关联的带区集映射表(为了方便起见,未示出)。卷映射表中的条目将地址存储在用于组块串的文件系统中。带区集映射表中相应的条目将位置存储在SD上,其中文件系统空间中的地址映射到上述SD。
在表9052’的一示例性使用中,跨度具有64个组块的缺省组块串偏置且文件服务器9002已经针对其组块串偏置选择了缺省的组块串偏置。表9025’具有三个条目且每一条目将位置存储在向文件系统分配的组块的组块串的文件系统空间中。为了第一个组块串,组块分配器9014选择带区集并搜索16个组块的未主张组块串。组块分配器9014选择并将针对未主张的组块串中的第一个组块的开始地址BA1存储在表中的第一个条目中。组块分配器9014还将该组块的最后一个地址EA1存储在表条目中,其代表活动组块串的结束。当文件系统请求另外的磁盘空间扩展时,组块分配器9014分配在EA1之后连续的组块并更新所存储的组块串的结束地址EA1,直到在BA1与EA1之间的文件空间与已经向文件系统分配的磁盘空间的16个连续的组块相对应。
下一次文件系统请求扩大磁盘空间时,组块分配器9014选择带区集并搜索16个组块的另一个未主张的组块串。组块分配器9014选择并将针对在该下一个未主张的组块串中的第一组块的开始地址BA2和结束地址EA2存储在表中的第二个条目中。再次,组块分配器9014分配在EA2之后的连续的组块并更新所存储的该组块串的结束地址EA2直到在BA2与EA2之间的文件空间与已经向文件系统分配的磁盘空间的16个连续的组块相对应。
为了磁盘空间的下一次扩大,组块分配器9014再次选择带区集并搜索16个组块的未主张组块串。组块分配器9014选择并将针对该下一个未主张组块串中的第一个组块的开始地址BA3和结束地址EA3存储在该表的第三个条目中。再次,组块分配器9014分配在EA3之后的连续的组块并更新所存储的该组块串的结束地址EA3,直到在BA3与EA3之间的文件空间与已经向文件系统分配的磁盘空间的16个连续的组块相对应。在对表9052’的另一示例性的使用中,跨度具有三个带区集和16个组块的缺省组块串偏置。文件系统已经请求了等于300个组块的磁盘空间的较大分配。为了平衡横跨跨度的负载,组块分配器9014试图向三个带区集中的每一个带区集分配100个组块。在该实施例中,组块分配器9014针对100个组块的未主张组块串搜索每一带区集。组块分配器9014在地址BA1与EA1之间找到在第一带区集上的100个组块的未主张组块串。组块分配器9014向文件系统分配这100个组块并将地址BA1和EA1存储到表9025’的第一个条目中。
组块分配器9014在地址BA2与EA2之间在第二带区集上找到100个组块的未主张组块串。组块分配器9014向文件系统分配这100个组块并将地址BA2和EA2存储到表9025’的第二个条目中。组块分配器9014在地址BA3与EA3之间在第三带区集上找到100个组块的未主张组块串。组块分配器9014向文件系统分配这100个组块并将地址BA3和EA3存储到表9025”的第三个条目中。以此方式,不管16个组块的组块串偏置如何,组块分配器9014能够分配较长的组块串以在使用尽量少的额外表条目的同时横跨跨度分布较大的磁盘空间分配。
现在参考图15,示出并描述了一种减少组块串偏置以提高横跨跨度的负载平衡的方法的示例性流程图。该方法包括获得缺省的组块串偏置(步骤1505)。在一些实施例中,文件服务器9002从存储器获取由数据存储系统的用户输入的缺省组块串偏置。在其他实施例中,文件服务器9002从存储器获取由跨度的管理员所设置的缺省组块串偏置。该方法包括将带区集的数量除以2并将结果值除以文件系统的数量(步骤1510)。该方法包括将产生的商与缺省组块串偏置进行比较(步骤1515)。该方法包括设置组块串偏置等于较小的值(步骤1520)。
现在参考图16,示出并描述了一种搜索带区集上用于向文件系统分配的未预留的组块的方法的示例性流程图。该方法包括保持组块数据库以跟踪与多个文件系统关联的组块,组块数据库包括固定数量的条目,每一条目能够存储与向文件系统中的一个所分配的一部分存储空间的开始地址和长度相关的信息(步骤1605)。该方法包括接收要扩大多个文件系统中的一文件系统的请求(步骤1610)。该方法包括选择从其处分配存储空间的带区集(步骤1615)。该方法包括利用带区集上的开始地址从组块数据库中获取条目,其中该条目与在多个文件系统中不同文件系统的活动组块串相对应(步骤1620)。该方法包括识别带区集上位于N个组块之后的至少一个组块,上述N个组块跟在活动组块串中的最后的组块之后并与该最后的组块连续,其中N等于组块串偏置减去活动组块串的活动长度(步骤1625)。该方法包括在至少一个组块可用的情况下向文件系统分配至少一个组块(步骤1630)。
现在参考图17,示出并描述了一种由文件服务器扩大用于文件系统的存储空间的方法的示例性流程图,该文件系统包括从多个带区集选择的多个组块,文件服务器将文件系统的虚拟地址空间映射到通过文件服务器与组块相关联的物理存储地址。
该方法包括保持组块数据库以跟踪与多个文件系统关联的组块,组块数据库包括固定数量的条目,每一条目能够存储与向其中一个文件系统分配的一部分存储空间的开始地址和长度相关的信息(步骤1705)。该方法包括接收要扩大多个文件系统中的一文件系统的请求(步骤1710)。该方法包括确定针对该请求的组块数量超过组块串偏置中的组块数量与跨度上的带区集数量的乘积(步骤1715)。该方法包括通过将针对该请求的组块数量除以带区集的数量来确定要从每一带区集分配的组块数量(步骤1720)。该方法包括在每一带区集上搜索等于要从每一带区集分配的组块数量的可用组块的组块串(步骤1725)。该方法包括从每一带区集分配可用组块的组块串(步骤1730)。该方法包括针对可用组块的每一组块串在与可用组块的组块串相关联的组块数据库中创建一条目,其中该条目包括组块串的长度(步骤1735)。
在上文描述的示例性实施例中,可以使用组块串偏置来限制向文件系统分配的组块的组块串长度。从而,虽然基于固定长度的组块数据库,上文的示例性实施例通常允许向文件系统分配较大数量的组块,但是组块串偏置仍然可以有效地限制文件系统可以被扩大到多大,例如,而不是文件系统被限制成X个组块,其中X是组块数据库中的条目数量,在某些实施例中,文件系统可以被有效地限制成(组块串偏置*X)个组块。从而,在各个备选的实施例中,当文件系统处于或接近其最后的组块数据库条目时,组块串偏置限制(以及组块串偏置被应用的方式以及组块被预留的方式)可以被修改成允许更长的组块串长度。仅作为一个示例,当文件系统处于其最后的组块数据库条目时,可以针对文件系统增加或完全地去除组块串偏置以允许文件系统继续扩大,且结合这样的对组块串偏置的增加或去除,可以预留较大数目的连续组块,例如,预定的最大数量的组块或对文件系统的预定百分比的增加(例如,需要将文件系统扩大预定百分比所需的组块数量)。
应该注意的是,在本申请中使用术语“服务器”来描述可以在通信系统中使用的设备且其不应被解释为将本发明限制成任何特定类型的设备。从而,本发明的实施例可以在客户端、服务器、计算机、交换机、或其他类型的通信设备中实现。
本发明可以以许多不同的形式来实现,其包括但绝不限制于,用于与处理器一起使用的计算机程序逻辑(例如,微处理器、微控制器、数字信号处理器、或通用计算机)、用于与可编程逻辑设备一起使用的可编程逻辑(例如,现场可编程门阵列(FPGA)或其他PLD)、分立组件、集成电路(例如,专用集成电路(ASIC))、或包括其任何组合的任何其他模块。
实现先前在本申请中描述的功能的全部或一部分的计算机程序逻辑可以以各种形式实现,包括但绝不限于,源代码形式、计算机可执行形式、以及各种中间形式(例如,由汇编器、编译器、链接器、或定位器产生的形式)。源代码可以包括以合适的编程语言(例如,目标代码、汇编语言、或诸如Fortran、C、C++、JAVA、或HTML之类的高级语言)实现的一系列计算机程序指令,以与各种操作系统或操作环境一起使用。源代码可以定义并使用各种数据结构和通信消息。源代码可以为计算机可执行的形式(例如,通过解释器),或源代码可以被转换成计算机可执行形式(例如,通过翻译器、汇编器、或编译器)。
计算机程序可以永久地或暂时地以任何形式(例如,源代码形式、计算机可执行形式、或中间形式)固定在有形的存储介质中,例如半导体存储设备(例如,RAM、ROM、PROM、EEPROM、或闪速可编程RAM)、磁存储设备(例如,磁盘或固定磁盘)、光存储设备(例如,CD-ROM)、PC卡(例如,PCMCIA卡)、或其他存储设备。计算机程序可以以任何形式固定在信号中,该信号可以使用各种通信技术中的任何一种向计算机发送,包括但不限于模拟技术、数字技术、光学技术、无线技术(例如,蓝牙)、联网技术、和网络互联技术。计算机程序可以作为具有伴随着的印刷或电子文档(例如,紧缩套装软件)的可移动存储介质以任何形式分布,利用计算机系统(例如,在系统ROM或固定磁盘上)预装载、或通过通信系统(例如,互联网或万维网)从服务器或电子公告板发布。
实现先前在本申请中描述的功能的全部或一部分的硬件逻辑(包括可编程逻辑以与可编程逻辑设备一起使用)可以使用传统手工方法来设计或可以使用诸如计算机辅助设计(CAD)、硬件描述语言(例如,VHDL或AHDL)、或PLD编程语言(例如,PALASM、ABEL、或CUPL)之类的各种工具来设计、捕获、仿真、或电子归档。
可编程逻辑可以永久地或暂时地固定在有形存储介质中,例如半导体存储设备(例如,RAM、ROM、PROM、EEPROM、或闪速可编程RAM)、磁存储设备(例如,磁盘或固定磁盘)、光存储设备(例如,CD-ROM)、或其他存储设备。可编程逻辑可以固定在信号中,该信号可以使用各种通信技术中的任何一种向计算机发送,包括但不限于模拟技术、数字技术、光学技术、无线技术(例如,蓝牙)、联网技术、和网络互联技术。可编程逻辑可以作为具有伴随着的印刷或电子文档(例如,紧缩套装软件)的可移动存储介质分布、利用计算机系统(例如,在系统ROM或固定磁盘上)预装载、或通过通信系统(例如,互联网或万维网)从服务器或电子公告板发布。
本发明的各个实施例的特征可以在于在该段之后(且在本申请的末尾提供的实际权利要求之前)的段落中列出的潜在权利要求。这些潜在的权利要求形成了本申请的书面描述的一部分。因此,随后的潜在权利要求的主题可以在后面的程序中被呈现为实际的权利要求,上述后面的程序包括该申请或基于该申请主张优先权的任何申请。包含这样的潜在权利要求不应该被解释为意味着实际的权利要求不覆盖潜在权利要求的主题。从而,不将这些潜在权利要求呈现在后面的程序中的决定不应被解释为将本主题捐赠给公众。
在没有限制的情况下,可以请求保护的潜在主题(以字母“P”开始以避免与下文中呈现的实际权利要求混淆)包括:
P16.一种以细粒度、可缩放的方式扩大针对文件系统的存储空间的方法,该方法包括:
由文件服务器确定针对跨度的组块串偏置,其中该组块串偏置指示与针对文件系统的地址翻译表中的条目相关联的存储空间的多个连续组块;
由文件服务器接收对针对文件系统的存储空间扩大的请求;
由组块分配器至少部分地基于带区集中未使用的组块的数量和带区集上正由文件系统使用的组块的数量对一组带区集中的每一带区集进行记分;以及
由组块分配器分配带区集上具有最高记分的组块,其中所分配的组块位于预留用于其他文件系统的组块串之外。
P17.根据权利要求P16所述的方法,其中确定针对跨度的组块串偏置包括:
由文件服务器确定缺省组块串偏置。
P18.根据权利要求P16所述的方法,其中确定针对跨度的组块串偏置包括:
由文件服务器基于带区集的数量和文件系统的数量确定组块串偏置。
P19.根据权利要求P16所述的方法,其中对每一带区集记分还包括:
由组块分配器确定在文件系统的所分配的最后的组块之后的组块可用;
由组块分配器确定针对文件系统的当前的带区集的偏置因子,其中当前的带区集包括文件系统的所分配的最后的组块;以及
由组块分配器利用该偏置因子对当前的带区集记分。
P20.根据权利要求P16所述的方法,其中对每一带区集进行记分还包括:
由组块分配器确定在文件系统的所分配的最后的组块之后的组块由另一文件系统使用;以及
由组块分配器至少部分地基于带区集上未使用的组块的数量与预留用于其他的文件系统组块的数量之间的差,对一组带区集中的每一带区集进行记分。
P21.根据权利要求P16所述的方法,其中对每一带区集记分还包括:
由组块分配器至少部分地基于带区集上未使用的组块的数量、跨度权重、带区集上正由文件系统使用的组块的数量、以及文件系统权重来对该组带区集中的每一带区集进行记分。
P22.根据权利要求P16所述的方法,其中分配带区集上具有最高记分的组块包括:
由组块分配器选择在文件系统的所分配的最后的组块之后的组块。
P23.根据权利要求P16所述的方法,其中分配带区集上具有最高记分的组块包括:
由组块分配器搜索长度为至少所述组块串偏置的未预留的组块的组块串;以及
由组块分配器选择该组块串中的第一组块。
P24.根据权利要求P16所述的方法,其中分配带区集上具有最高记分的组块包括:
由组块分配器搜索长度为至少所述组块串偏置的预留的组块的组块串;以及
由组块分配器选择该组块串的后半部分中的第一组块。
P25.一种数据存储系统,包括:
文件服务器,该文件服务器包括组块分配器,其中文件服务器被配置成确定针对跨度的组块串偏置,其中该组块串偏置指示与针对文件系统的地址翻译表中的条目相关联的存储空间的多个连续组块;以及
其中组块分配器被配置成至少部分地基于带区集中未使用的组块的数量和带区集上正由文件系统使用的组块的数量对一组带区集中的每一带区集进行记分;并且分配带区集上具有最高记分的组块,其中所分配的组块位于预留用于其他文件系统的组块串之外。
P26.根据权利要求P25所述的数据存储系统,其中文件服务器还被配置成确定缺省的组块串偏置。
P27.根据权利要求P25所述的数据存储系统,其中文件服务器进一步被配置成基于带区集的数量和文件系统的数量确定组块串偏置。
P28.根据权利要求25所述的数据存储系统,其中组块分配器还被配置成确定在文件系统的所分配的最后的组块之后的组块可用;确定针对文件系统的当前的带区集的偏置因子,其中当前的带区集包括文件系统的所分配的最后的组块;以及利用该偏置因子对当前的带区集记分。
P29.根据权利要求P25所述的数据存储系统,其中组块分配器还被配置成确定在文件系统的所分配的最后的组块之后的组块由另一文件系统使用;以及至少部分地基于带区集上未使用的组块的数量与预留用于其他的文件系统组块的数量之间的差,对一组带区集中的每一带区集进行记分。
P30.根据权利要求P25所述的数据存储系统,其中组块分配器还被配置成至少部分地基于带区集上未使用的组块的数量、跨度权重、带区集上正由文件系统使用的组块的数量、以及文件系统权重来对该组带区集中的每一带区集进行记分。
P31.根据权利要求P25所述的数据存储系统,其中组块分配器还被配置成选择在文件系统的所分配的最后的组块之后的组块。
P32.根据权利要求P25所述的数据存储系统,其中组块分配器还被配置成搜索长度为至少所述组块串偏置的未预留的组块的组块串;以及选择该组块串中的第一组块。
P33.根据权利要求P25所述的数据存储系统,其中组块分配器还被配置成搜索长度为至少所述组块串偏置的预留的组块的组块串;以及选择该组块串的后半部分中的第一组块。
P34.一种由文件服务器扩大针对文件系统的存储空间的方法,该文件系统包括从多个带区集选择的多个组块,文件服务器将文件系统的虚拟地址空间映射到与组块关联的物理存储地址,该方法包括,通过文件服务器:
保持组块数据库以跟踪与多个文件系统关联的组块,组块数据库包括固定数量的条目,每一条目能够存储与向文件系统中的一个文件系统分配的一部分存储空间的开始地址和长度相关的信息;
接收要扩大多个文件系统中的一文件系统的请求;
选择从其处要分配存储空间的带区集;
利用带区集上的开始地址从组块数据库获取条目,其中该条目与多个文件系统中不同文件系统的活动组块串相对应;
识别带区集上位于N个组块之后的至少一个组块,上述N个组块跟在活动组块串中的最后的组块之后且与该最后的组块连续,其中N等于组块串偏置减去活动组块串的活动组块串长度;以及
如果上述至少一个组块可用,则向文件系统分配该至少一个组块。
P35.根据权利要求P34所述的方法,还包括:
继续利用带区集上的开始地址从组块数据库获取条目并识别位于N个组块之后的至少一个组块,直到该至少一个组块可用,上述N个组块跟在活动组块串中的最后组块之后且与该最后的组块连续。
P36.根据权利要求P34所述的方法,其中识别带区集上的至少一个组块包括:
识别等于组块串偏置的可用组块的组块串。
P37.根据权利要求P34所述的方法,其中识别带区集上的至少一个组块包括:
识别带区集上可用组块的最长组块串。
P38.一种数据存储系统,包括:
存储器,其中存储了用于跟踪与多个文件系统关联的组块的组块数据库,组块数据库包含固定数量的条目,每一条目能够存储与向文件系统分配的一部分存储空间的开始地址和长度相关的信息;以及
组块分配器,其被配置成接收要扩大多个文件系统中的一文件系统的请求,选择从其处要分配存储空间的带区集,利用带区集上的开始地址从组块数据库获取条目,其中该条目与多个文件系统中不同文件系统的活动组块串相对应,识别带区集上位于N个组块之后的至少一个组块,上述N个组块跟在活动组块串中的最后的组块之后且与该最后的组块连续,其中N等于组块串偏置减去活动组块串的活动组块串长度,以及如果上述至少一个组块可用,则向文件系统分配该至少一个组块。
P39.根据权利要求P38所述的数据存储系统,其中组块分配器还被配置成继续利用带区集上的开始地址从组块数据库获取条目并识别位于N个组块之后的至少一个组块,直到至少一个组块可用,上述N个组块跟在活动组块串中的最后的组块之后且与该最后的组块连续。
P40.根据权利要求P38所述的数据存储系统,其中组块分配器还被配置成识别等于组块串偏置的可用组块的组块串。
P41.根据权利要求P38所述的数据存储系统,其中组块分配器还被配置成识别带区集上可用组块的最长组块串。
P42.一种用于由文件服务器扩大针对文件系统的存储空间的方法,该文件系统包括从多个带区集选择的多个组块,文件服务器将文件系统的虚拟地址空间映射到与组块关联的物理存储地址,该方法包括,通过文件服务器:
保持组块数据库以跟踪与多个文件系统关联的组块,组块数据库包括固定数量的条目,每一条目能够存储与向文件系统中的一个文件系统分配的一部分存储空间的开始地址和长度相关的信息;
接收要在多个文件系统中扩大文件系统的请求;
确定针对该请求的组块数量超过组块串偏置中组块的数量与跨度上带区集的数量的乘积;
通过将针对请求的组块的数量除以带区集的数量来确定要从每一带区集分配的组块的数量;
在每一带区集上搜索等于要从每一带区集分配的组块数量的可用组块的组块串;
从每一带区集分配可用组块的组块串;以及
针对可用组块的每一组块串,在组块数据库中创建与可用组块的组块串关联的条目,其中该条目包括组块串的长度。
P43.一种数据存储系统,包括:
存储器,其中存储了用于跟踪与多个文件系统关联的组块的组块数据库,组块数据库包含固定数量的条目,每一条目能够存储与向文件系统中的一个文件系统分配的一部分存储空间的开始地址和长度相关的信息;以及
组块分配器,其被配置成接收要扩大多个文件系统中的一文件系统的请求,确定针对该请求的组块的数量超过组块串偏置中组块的数量与跨度上带区集的数量的乘积,通过将针对请求的组块的数量除以带区集的数量来确定要从每一带区集分配的组块的数量,在每一带区集上搜索等于要从每一带区集分配的组块数量的可用组块的组块串,从每一带区集分配可用组块的组块串,以及针对可用组块的每一组块串,在组块数据库中创建与可用组块的组块串关联的条目,其中该条目包括组块串的长度。
本发明可以在不偏离本发明的真正范围的情况下以其他特定的形式实现。在所有的方面将所描述的实施例仅认为是示例性的且非限制性的。

Claims (20)

1.一种由文件服务器扩大针对文件系统的存储空间的方法,该文件系统包括从多个带区集选择的多个组块,文件服务器将文件系统的虚拟地址空间映射到与组块关联的物理存储地址,该方法包括,通过文件服务器:
保持组块数据库以跟踪与文件系统关联的组块,组块数据库包括固定数量的条目,每一条目能够存储与向文件系统分配的一部分存储空间的开始地址和长度相关的信息;
接收请求以扩大文件系统;
基于组块数据库识别与文件系统关联的最后的组块;
当至少一个组块可用于向该文件系统分配时,从与最后的组块相同的带区集分配该至少一个组块且该至少一个组块与最后的组块连续;以及
更新组块数据库中与最后的组块关联的条目以反映由所分配的至少一个组块表示的连续存储空间的长度的增加。
2.根据权利要求1所述的方法,还包括:
在确定来自与该最后的组块相同的带区集且与该最后的组块连续的至少一个组块是否可用于向文件系统分配之前,预留来自与该最后的组块相同的带区集且与该最后的组块连续的至少一个组块,以便该至少一个组块保持可用。
3.根据权利要求1所述的方法,还包括:确定来自与该最后的组块相同的带区集且与该最后的组块连续的至少一个组块是否可用于向文件系统分配,其中所述确定步骤包括:
确定针对文件系统的活动组块串长度;以及
确定当活动组块串长度小于组块串偏置且存在来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块时,存在至少一个组块可用于向文件系统分配。
4.根据权利要求3所述的方法,其中分配至少一个组件的步骤包括:从与最后的组块相同的带区集分配多达N个组块,且该N个组块与最后的组块连续,其中N等于组块串偏置减去活动组块串长度。
5.根据权利要求3所述的方法,还包括:
确定组块串偏置。
6.根据权利要求5所述的方法,其中确定组块串偏置的步骤包括:
基于带区集的数量和文件系统的数量确定组块串偏置。
7.根据权利要求1所述的方法,还包括:
当来自与最后的组块相同的带区集且与最后的组块连续的这样的至少一个组块被确定为不可用时,从不同的带区集分配至少一个组块。
8.一种数据存储系统,包括:
存储器,其中存储了用于跟踪与文件系统关联的组块的组块数据库,组块数据库包含固定数量的条目,每一条目能够存储与向文件系统分配的一部分存储空间的开始地址和长度相关的信息;以及
组块分配器,其被配置成接收要扩大文件系统的请求,基于组块数据库识别与文件系统关联的最后的组块,当至少一个组块可用于向文件系统分配时,从与最后的组块相同的带区集分配与最后的组块连续的至少一个组块,以及更新组块数据库中与最后的组块关联的条目以反映由所分配的至少一个组块表示的连续存储空间的长度的增加。
9.根据权利要求8所述的数据存储系统,其中组块分配器还被配置成在确定来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块是否可用于向文件系统分配之前,预留来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块,以便该至少一个组块保持可用。
10.根据权利要求8所述的数据存储系统,其中组块分配器被配置成通过确定针对文件系统的活动组块串长度以及当活动组块串长度小于组块串偏置且存在来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块时确定存在至少一个组块可用于向文件系统分配,来确定来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块是否可用于向文件系统分配。
11.根据权利要求10所述的数据存储系统,其中组块分配器被配置成通过从与最后的组块相同的带区集分配与最后的组块连续的多达N个组块来分配至少一个组块,其中N等于组块串偏置减去活动组块串长度。
12.根据权利要求10所述的数据存储系统,其中组块分配器还被配置成确定组块串偏置。
13.根据将权利要求12所述的数据存储系统,其中组块分配器被配置成通过基于带区集的数量和文件系统的数量确定组块串偏置,来确定组块串偏置。
14.根据权利要求8所述的数据存储系统,其中组块分配器还被配置成当来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块被确定为不可用时,从不同的带区集分配至少一个组块。
15.根据权利要求8所述的数据存储系统,其中组块数据库保持在硬件中,且其中数据存储系统包括在组块分配器与硬件之间耦合的接口,并且组块分配器通过该接口访问组块数据库。
16.一种由文件服务器扩大针对文件系统的存储空间的计算机程序,该文件系统包括从多个带区集选择的多个组块,文件服务器将文件系统的虚拟地址空间映射到与组块关联的物理存储地址,该计算机程序配置成使文件服务器:
保持组块数据库以跟踪与文件系统关联的组块,组块数据库包括固定数量的条目,每一条目能够存储与向文件系统分配的一部分存储空间的开始地址和长度相关的信息;
接收要扩大文件系统的请求;
基于组块数据库识别与文件系统关联的最后的组块;
当至少一个组块可用于向该文件系统分配时,从与最后的组块相同的带区集分配该至少一个组块且该至少一个组块与最后的组块连续;以及
更新组块数据库中与最后的组块关联的条目以反映由所分配的至少一个组块表示的连续存储空间的长度的增加。
17.根据权利要求16所述的计算机程序,还被配置成使文件服务器:
在确定来自与该最后的组块相同的带区集且与该最后的组块连续的至少一个组块是否可用于向文件系统分配之前,预留来在与该最后的组块相同的带区集且与最后的组块连续的至少一个组块,以便该至少一个组块保持可用。
18.根据权利要求16所述的计算机程序,还被配置成使文件服务器确定来自与最后的组块相同的带区集且与该最后的组块连续的至少一个组块是否可用于向文件系统分配,所述确定步骤包括:
确定针对文件系统的活动组块串长度;以及
当活动组块串长度小于组块串偏置且存在来自与最后的组块相同的带区集且与最后的组块连续的至少一个组块时确定存在至少一个组块可用于向文件系统分配。
19.根据权利要求18所述的计算机程序,其中:
分配至少一个组块的步骤包括从与最后的组块相同的带区集分配多达N个组块,且这N个组块与最后的组块连续,其中N等于组块串偏置减去活动组块串长度;或
计算机程序还被配置成使文件服务器确定组块串偏置。
20.根据权利要求16所述的计算机程序,还被配置成使文件服务器:
当来自与最后的组块相同的带区集且与最后的组块连续的这样的至少一个组块被确定为不可用时,从不同的带区集分配至少一个组块。
CN201380071937.1A 2013-02-01 2013-02-01 用于在数据存储系统中实现存储的细粒度、可伸缩分配的方法和装置 Active CN104956318B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/024350 WO2014120240A1 (en) 2013-02-01 2013-02-01 Method and apparatus to enable finer-grained, scalable allocation of storage in a data storage system

Publications (2)

Publication Number Publication Date
CN104956318A true CN104956318A (zh) 2015-09-30
CN104956318B CN104956318B (zh) 2018-05-18

Family

ID=51262801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380071937.1A Active CN104956318B (zh) 2013-02-01 2013-02-01 用于在数据存储系统中实现存储的细粒度、可伸缩分配的方法和装置

Country Status (5)

Country Link
US (1) US10789209B2 (zh)
EP (1) EP2951674B1 (zh)
JP (1) JP6067888B2 (zh)
CN (1) CN104956318B (zh)
WO (1) WO2014120240A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146456B1 (en) * 2016-12-30 2018-12-04 EMC IP Holding Company LLC Data storage system with multi-level, scalable metadata structure
WO2019245445A1 (en) * 2018-06-21 2019-12-26 Telefonaktiebolaget Lm Ericsson (Publ) Memory allocation in a hierarchical memory system
CN110222019B (zh) * 2019-05-08 2023-12-19 安克创新科技股份有限公司 文件系统所占空间的调整方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124137A1 (en) * 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
US20040015672A1 (en) * 2002-07-17 2004-01-22 Masse Wayne P. Method, system, and storage medium for optimizing disk space and information access
US20070260842A1 (en) * 2006-05-08 2007-11-08 Sorin Faibish Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system
WO2009049009A1 (en) * 2007-10-12 2009-04-16 Bluearc Uk Limited System, device, and method for detecting and configuring mirror relationships in a storage system
US20090327368A1 (en) * 2008-06-30 2009-12-31 Bluearc Uk Limited Dynamic Write Balancing in a Data Storage System

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU575182B2 (en) * 1984-06-28 1988-07-21 Wang Laboratories, Inc. Self extending memory file
JP2000010738A (ja) * 1998-06-17 2000-01-14 Toshiba Corp ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
EP1407386A2 (en) * 2001-06-21 2004-04-14 ISC, Inc. Database indexing method and apparatus
JP4236590B2 (ja) * 2002-03-13 2009-03-11 富士通株式会社 Raid装置の制御装置
JP3788961B2 (ja) * 2002-08-30 2006-06-21 株式会社東芝 ディスクアレイ装置及び同装置におけるレイドレベル変更方法
JP3730609B2 (ja) * 2002-09-11 2006-01-05 株式会社東芝 冗長化論理ディスクに対するライトスルー処理方法、ライトスルー処理用プログラム及びディスクコントローラ
US7213021B2 (en) * 2004-03-11 2007-05-01 Hitachi, Ltd. Method and apparatus for storage network management
JP2005346564A (ja) * 2004-06-04 2005-12-15 Hitachi Global Storage Technologies Netherlands Bv ディスク装置及びディスク装置の制御方法並びに改竄検出方法
US7389382B2 (en) * 2005-06-08 2008-06-17 Cisco Technology, Inc. ISCSI block cache and synchronization technique for WAN edge device
US7502908B2 (en) * 2006-05-04 2009-03-10 International Business Machines Corporation Method for providing an address format compatible with different addressing formats used for addressing different sized address spaces
US7961959B2 (en) * 2006-08-24 2011-06-14 Dell Products L.P. Methods and apparatus for reducing storage size
JP5320678B2 (ja) * 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US8331663B2 (en) * 2007-06-28 2012-12-11 Qualcomm Incorporated Efficient image compression scheme to minimize storage and bus bandwidth requirements
US7886124B2 (en) * 2007-07-30 2011-02-08 Oracle International Corporation Method and mechanism for implementing dynamic space management for large objects
US8533417B2 (en) * 2009-06-03 2013-09-10 Hitachi, Ltd. Method and apparatus for controlling data volume creation in data storage system with dynamic chunk allocation capability
WO2011045838A1 (en) * 2009-10-15 2011-04-21 Hitachi,Ltd. Storage system, storage apparatus, and optimization method of storage areas of storage system
DE102010009427B4 (de) * 2010-02-26 2012-03-08 Heckler & Koch Gmbh Drehwarzenverschluss und Waffe

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124137A1 (en) * 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
US20040015672A1 (en) * 2002-07-17 2004-01-22 Masse Wayne P. Method, system, and storage medium for optimizing disk space and information access
US20070260842A1 (en) * 2006-05-08 2007-11-08 Sorin Faibish Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system
WO2009049009A1 (en) * 2007-10-12 2009-04-16 Bluearc Uk Limited System, device, and method for detecting and configuring mirror relationships in a storage system
US20090327368A1 (en) * 2008-06-30 2009-12-31 Bluearc Uk Limited Dynamic Write Balancing in a Data Storage System

Also Published As

Publication number Publication date
US20150370823A1 (en) 2015-12-24
WO2014120240A1 (en) 2014-08-07
CN104956318B (zh) 2018-05-18
EP2951674A1 (en) 2015-12-09
EP2951674A4 (en) 2016-08-03
EP2951674B1 (en) 2019-08-14
US10789209B2 (en) 2020-09-29
JP2016511879A (ja) 2016-04-21
JP6067888B2 (ja) 2017-01-25

Similar Documents

Publication Publication Date Title
JP7374939B2 (ja) 分散型ストレージシステム
US7721044B1 (en) Expanding the storage capacity of a virtualized data storage system
KR102444832B1 (ko) 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝
US20210263658A1 (en) Data system with flush views
US10521135B2 (en) Data system with data flush mechanism
US10628043B1 (en) Systems and methods for implementing a horizontally federated heterogeneous cluster
US9459806B2 (en) Combining virtual mapping metadata and physical space mapping metadata
CN111158587B (zh) 基于存储池虚拟化管理的分布式存储系统及数据读写方法
US8312242B2 (en) Tracking memory space in a storage system
US8402214B2 (en) Dynamic page reallocation storage system management
CN103502926A (zh) 基于扩展区的存储架构
CN104395904A (zh) 高效的数据对象存储和检索
US8539142B2 (en) Storage system comprising nonvolatile semiconductor storage media
JP5944536B2 (ja) ストレージ装置及び記憶制御方法
CN108536392B (zh) 混合数据查找方法
CN101976181A (zh) 一种存储资源的管理方法及管理装置
US11188258B2 (en) Distributed storage system
EP2318913B1 (en) Dynamic write balancing in a data storage system
CN104956318A (zh) 用于在数据存储系统中实现存储的细粒度、可伸缩分配的方法和装置
CN101997919A (zh) 一种存储资源的管理方法及管理装置
US11182077B1 (en) Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US11188425B1 (en) Snapshot metadata deduplication
US11340795B2 (en) Snapshot metadata management
US11947799B1 (en) Systems and methods for using the TRIM command with solid state devices

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20190424

Address after: American California

Patentee after: Hitachi Data Management Co. Ltd.

Address before: Burke County, England

Patentee before: HITACHI DATA SYSTEM ENGINEERING UK LTD.

TR01 Transfer of patent right