用于最小化存储系统和其设备内的SSD中的碎片化的方法与流程

文档序号:16990028发布日期:2019-03-02 00:53阅读:228来源:国知局
用于最小化存储系统和其设备内的SSD中的碎片化的方法与流程

本申请要求于2016年6月28日提交的美国实用专利申请序列号15/195,093的优先权,并且其全部内容通过引用而被并入本文。

本技术总体上涉及数据存储管理,并且更具体地涉及用于最小化存储系统和其设备内的固态设备(ssd)中的碎片化的方法。



背景技术:

将数据集重复写入到数据存储介质以及将数据集从数据存储介质擦除,使得存储空间被低效地使用并且该现象被称为数据存储介质内的碎片化。数据存储介质内的碎片化现象会降低存储容量,并且增加访问和读取时间。当计算设备没有分配足够的连续存储空间来将完整数据集编码为单个序列,而是将数据集分成在其他数据集之间的间隙中被编码的部分时,碎片化发生。通常,这些数据存储介质间隙的出现是因为删除了较早的数据集,或是将多余空间分配给另一被存储的数据集。数据存储介质被碎片化的程度在很大程度上取决于被存储在该数据存储介质上的数据集的大小和数量。

为了解决碎片化问题,现有技术使用碎片整理(defragmentation)技术,其中被写入到数据存储介质的数据集被重新排列,使得每个数据集的分段被连续地写入。遗憾的是,现有技术中使用的技术未能显著减少碎片化并且是耗时的、存储器密集型操作,这种操作在被执行时会显著降低计算机系统的性能。

附图说明

图1是具有最小化存储系统内的ssd中的碎片化的存储管理计算设备的环境的框图;

图2是图1中所示的示例性存储管理计算设备的框图;以及

图3是用于最小化存储系统内的ssd中的碎片化的方法的示例的示例性流程图。

具体实施方式

在图1中图示了具有多个客户端计算设备12(1)-12(n)、示例性存储管理计算设备14、多个存储设备16(1)-16(n)的环境10。在该特定示例中,图1中的环境10包括经由一个或多个通信网络30而被耦合的多个客户端计算设备12(1)-12(n)、存储管理计算设备14以及多个存储设备16(1)-16(n),尽管该环境可以包括其他类型和数量的系统、设备、组件和/或其他元件。用于最小化存储系统内的ssd中的碎片化的方法的示例由存储管理计算设备14执行,尽管本文图示和描述的方法可以由其他类型和/或数量的其他计算系统和设备执行。环境10可以包括其他类型和数量的其他网络元件和设备,这些网络元件和设备是本领域中通常是已知的并且在本文中将不再图示或描述。本技术提供了许多优点,包括提供用于最小化存储系统内的ssd中的碎片化的方法、非暂时性计算机可读介质和设备。

参见图2,在该示例中,存储管理计算设备14包括通过总线26而被耦合在一起的处理器18、存储器20和通信接口24,尽管存储管理计算设备14可以在其他配置中包括的其他类型和数量的元件。

基于在本文的示例中所图示和描述的分类的输入/输出请求,存储管理计算设备14的处理器18可以执行被存储在存储器20中的一个或多个编程指令以用于动态资源预留,尽管其他类型和数量的功能和/或其他操作也可以被执行。存储管理计算设备14的处理器18可以包括一个或多个中央处理器(“cpu”)或具有一个或多个处理核心的通用处理器,诸如(多个)处理器,尽管(多个)其他类型的处理器(例如,)也可以被使用。

存储管理计算设备14的存储器20存储用于本文所描述以及图示的本技术的一个或多个方面的编程指令和其他数据,尽管编程指令中的一些或所有编程指令也可以在别处被存储和执行。各种不同类型的存储器存储设备可以被用于存储器20,这些存储器存储设备诸如系统中的非易失性存储器、随机存取存储器(ram)或只读存储器(rom)、或软盘、硬盘、cdrom、dvdrom或者由被耦合到处理器18的磁、光或其他读取和写入系统读取和写入的其他计算机可读介质。

存储管理计算设备14的通信接口24与多个客户端计算设备12(1)-12(n)和多个存储设备16(1)-16(n)可操作地耦合并且通信,这些接口和设备通过通信网络30而被全部耦合在一起,尽管其他类型和数量的通信网络或系统具有到其他设备和元件的、其他类型和数量的连接和配置。仅以示例的方式,通信网络30可以使用以太网上的tcp/ip以及工业标准协议,包括nfs、cifs、soap、xml、ldap和snmp,尽管其他类型和数量的通信网络可以被使用。该示例中的通信网络30可以采用任何合适的接口机制和网络通信技术,包括例如任何局域网、任何广域网(例如,互联网)、处于任何合适形式的电信业务(例如,语音、调制解调器等)、公共交换电话网(pstn)、基于以太网的分组数据网络(pdn),以及其任何组合等。在该示例中,总线26是通用串行总线,尽管使用其他的总线类型和链路可以被使用,诸如pci-express或超传输总线。

多个客户端计算设备12(1)-12(n)中的每个客户端计算设备包括中央处理器(cpu)或处理器、存储器和i/o系统,它们通过总线或其他链路而被耦合在一起,尽管其他数量和类型的网络设备可以被使用。多个客户端计算设备12(1)-12(n)与用于存储管理的存储管理计算设备14通信,尽管客户端计算设备12(1)-12(n)可以与用于其他目的的存储管理计算设备14交互。以示例的方式,多个客户端计算设备12(1)-12(n)可以运行(多个)应用,这些应用可以提供接口以经由通信网络30以做出在存储管理计算设备14或多个存储设备16(1)-16(n)内访问、修改、删除、编辑、读取或写入数据的请求。

多个存储设备16(1)-16(n)中的每个存储设备包括中央处理器(cpu)或处理器、以及i/o系统,它们通过总线或其他链路而被耦合在一起,尽管其他数量和类型的网络设备可以被使用。多个存储设备16(1)-16(n)中的每个存储设备帮助存储数据,尽管多个存储设备16(1)-16(n)可以帮助诸如存储文件或数据的其他类型的操作。响应于来自存储管理计算设备14和多个客户端计算设备12(1)-12(n)的请求,各种网络处理应用(诸如,cifs应用、nfs应用、http网络数据存储设备应用、和/或ftp应用)可以在多个存储设备16(1)-16(n)上操作并且传输数据(例如,文件或网页),。应当理解,多个存储设备16(1)-16(n)可以是硬件(诸如硬盘驱动器、固态设备(ssd)或磁带)或者软件,或者可以表示可以包括内部或外部网络的、具有多个外部资源服务器的系统。尽管在该示例中图示的是多个存储设备16(1)-16(n)在存储管理计算设备14的外部,但是在其他示例中多个存储设备16(1)-16(n)可以驻留在存储管理计算设备14内。

尽管示例性网络环境10包括本文所描述和图示的多个客户端计算设备12(1)-12(n)、存储管理计算设备14、以及多个存储设备16(1)-16(n),但是其他类型和数量的系统、设备、组件和/或其他拓扑中的其他元件可以被使用。应当理解,本文描述的示例的系统是针对示例性的目的,因为如本领域普通技术人员将理解的,被用于实现该示例的具体硬件和软件的许多变型是可行的。

另外,在任何示例中,两个或多个计算系统或设备可以替代系统或设备中的任何一个。相应地,分布式处理的原理和优点(诸如冗余和复制)也可以根据需要而被实现,以增加示例的设备和系统的鲁棒性和性能。示例也可以被实现在使用任何合适的接口机制和业务技术而跨任何合适的网络扩展的计算机系统上,仅以示例方式,包括处以任何合适的形式的电信业务(例如,语音和调制解调器)、无线业务媒体、无线业务网络、蜂窝业务网络、g3业务网络、公共交换电话网(pstn)、分组数据网络(pdn)、互联网、内联网以及其组合。

各示例还可以被体现为其上存储有指令的非暂时性计算机可读介质,指令用于如本文以示例的方式描述和说明的本技术的一个或多个方面,如本文所述的,当指令由处理器执行时使得处理器执行实现如本文的示例描述和图示的本技术的方法所必需的步骤。

现在,本文将参考图1-图3来描述用于最小化存储系统内的ssd中的碎片化的方法示例。示例性方法开始于步骤305,其中存储管理计算设备14接收来自多个客户端计算设备12(1)-12中的一个客户端计算设备的数据操作请求,诸如(以示例的方式)读取请求和写入请求,尽管存储管理计算设备14可以接收来自其他设备的其他类型和/或数量的请求。在该特定示例中,接收的数据操作请求包括对对象的写入请求,尽管存储管理计算设备14可以接收来自其他设备的其他类型和/或数量的数据操作请求。

接下来在步骤310中,存储管理计算设备14将接收的写入数据操作高速缓存到存储管理计算设备14的存储器20内的高速缓存中,尽管存储管理计算设备14可以将该操作高速缓存或以其他方式存储在其他存储器位置处。

接下来在步骤315中,在高速缓存接收的写入数据操作时,存储管理计算设备14可以确定存储器20内的高速缓存何时达到阈值大小。在该特定示例中,存储器20内的高速缓存具有存储的或以其他方式设置的阈值大小,在达到该阈值之后高速缓存不能接收进一步的数据。相应地,当存储管理计算设备14确定高速缓存尚未达到阈值大小时,则采用“否”分支回到步骤305,其中存储管理计算设备14继续接收来自多个客户端计算设备12(1)-12(n)的数据操作请求。

然而,如果回到步骤315中、当存储管理计算设备14确定高速缓存已满时,则采用“是”分支到步骤320。在步骤320中,存储管理计算设备14标识多个存储设备16(1)-16(n)中的是固态驱动器(ssd)的一个存储设备中的分配区域,尽管存储管理计算设备14可以标识其他存储器位置处的分配区域,诸如存储器20中的。在该示例中,分配区域涉及ssd中的存储器空间,其中来自高速缓存的内容可以被转移。另外在该示例中,存储管理计算设备14包括被存储在存储器20中的元数据,该元数据包括ssd内的存储器条中的地址范围,ssd可以阶段存储(stage)存储器20内的高速缓存中冲出的数据。存储管理计算设备14可以使用元数据来标识分配区域,尽管存储管理计算设备14可以使用其他类型和/或数量的信息来标识分配区域。此外,在该示例中,由存储管理计算设备14标识的分配区域的大小至少等于高速缓存中的将要被转移的数据的大小,尽管分配区域的大小可以大于被转移的数据的大小。此外,在该示例中,标识的分配区域的地址范围可以包括空闲空间与先前被存储的数据的组合(由于先前存储了碎片数据)。

接下来在步骤325中,存储管理计算设备14确定或标识高速缓存中的数据量,该数据量可以从标识的分配区域的地址范围的开始到标识的分配区域的地址范围的结尾而被顺序地转移到标识的分配区域。

在步骤330中,在遍历期间,存储管理计算设备14确定何时存在被存储在标识的分配区域的地址范围中的数据,尽管存储管理计算设备14也可以使用其他技术来进行该确定。在该示例中,由存储管理计算设备14标识的分配区域可以包括先前从存储器20内的高速缓存转移的数据,尽管标识的分配区域也可以包括其他类型和/或数量的数据。相应地,当存储管理计算设备14确定数据存在在该地址范围中时,则采用“是”分支到步骤335。

在步骤335中,存储管理计算设备14读取分配区域的地址范围中的先前被存储的数据。在该示例中,存储管理计算设备14被要求读取分配区域的地址范围中的先前被存储的数据,因为在将数据写回ssd之前必须首先读取该数据。

接下来在步骤340中,存储管理计算设备14将来自步骤335的读取数据与被要求转移到分配区域的高速缓存数据组合,尽管存储管理计算设备14可以添加其他类型和/或数量的信息。

接下来在步骤345中,存储管理计算设备14将存储器20内的高速缓存中存在的数据和所读取的、先前被存储的数据写入或转移回ssd内的标识的分配区域中。另外,回到步骤330中,当存储管理计算设备14确定在遍历期间没有找到数据时,则采用“否”分支到该步骤345。当示例性流程进行到步骤345、其中标识的分配区域的地址范围中没有数据时,存储管理计算设备14只将来自存储器20内的高速缓存的数据写入或转移到标识的分配区域。在该示例中,存储管理计算设备14开始从标识的分配区域的地址范围的开始写入或转移数据,并且继续在该地址范围中顺序地写入或转移数据。通过顺序地将数据写入分配区域,该技术能够减少多个存储设备16(1)-16(n)内的ssd中的碎片化,并且示例性方法在步骤350处结束。

相应地,如在本文中以示例方式说明和描述的,该技术提供了许多优点,包括提供用于最小化企业存储系统内的ssd中的碎片化的方法、非暂时性计算机可读介质和设备。通过将数据顺序地写入ssd中的分配区域,该技术能够显著减少ssd中的碎片化,从而增加ssd的存储器利用率。

已经如此描述了本技术的基本概念,本领域技术人员可明显看出,前述详细公开内容旨在仅以示例的方式呈现而非限制性的。尽管本文中没有明确说明,但是本领域技术人员会预期将发生各种变化、改进和修改。这些变化、改进和修改旨在由此暗示,并且在本技术的精神和范围内。另外,处理元件或序列的阐述顺序,或者数字、字母或其他名称的使用,并不旨在将要求保护的过程限制为任何顺序,除非可以在权利要求中指定。因此,本发明仅受权利要求及其等同物的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1