用于重新使用文件系统的存储块的方法和装置的制造方法

文档序号:10534731阅读:153来源:国知局
用于重新使用文件系统的存储块的方法和装置的制造方法
【专利摘要】本发明的各种实施例提供了一种用于重新使用文件系统的存储块的方法和装置。该文件系统基于瘦供应存储配置并且与另外的文件系统共享存储池。该方法包括响应于预定义的触发事件,检测文件系统的存储空间中未被使用的存储块。该方法还包括响应于检测到存储空间中未被使用的存储块,将未被使用的存储块提供给存储池以供重新使用。根据本发明的各种实施例,实现了存储池的存储空间的有效利用。
【专利说明】
用于重新使用文件系统的存储块的方法和装置
技术领域
[0001]本发明的各种实施方式涉及数据存储领域,并且更具体地,涉及用于重新使用文件系统的存储块的方法和装置。
【背景技术】
[0002]近年来,瘦供应(thin provis1n)存储配置因为能够使得用户有效地使用存储空间而被广泛使用。在采用瘦供应存储配置(例如,瘦供应的LUN(Logical Unit Number)分片)的存储系统中,基于具有一定存储容量的实际存储设备来创建一个或多个文件系统,其中为创建的文件系统设置的存储空间的大小总和可以大于实际存储设备的存储容量。实际存储设备的存储空间可以被视为存储池,所创建的文件系统根据实际的存储需求而共享该存储池。这样的配置有利于根据文件系统的用户对存储容量的需求来扩展实际存储设备而无需再修改文件系统的设置。如图1所示,在具有1TB存储容量的存储池103的基础上,可以根据瘦供应存储配置创建两个文件系统,即具有1TB的虚拟存储空间的文件系统101和具有5TB的虚拟存储空间的文件系统102。文件系统101和102根据存储需求从存储池103中获取存储块(storage block)用于存储数据。
[0003]在常规的基于瘦供应存储配置的存储系统中,当第一文件系统从共享的存储池中获取存储块用于存储数据后,该存储块不再能够被其他文件系统利用。也就是说,即使该存储块中的数据被删除,该存储块也不能够被其他文件系统重新使用,而是仅可以由第一文件系统使用。在实际应用中,这不利于存储设备的存储池的有效利用。例如,假如在图1所示的存储系统中文件系统101和文件系统102分别存储了 5TB的数据,那么具有10TB存储空间的存储池103不能够存储更多的数据。在这种情况下,即使将文件系统102的部分或全部数据从存储池103中删除,文件系统101也不能够重新使用文件系统102删除数据后未被使用的存储空间。这样造成了存储空间的低利用率。
[0004]因此,本领域中需要一种能够重新使用基于瘦供应配置的文件系统的存储块的技术方案。

【发明内容】

[0005]鉴于上述以及其他潜在问题中的一个或者多个问题,本发明的多种实施方式提供了用于重新使用文件系统的存储块的方法和装置。
[0006]根据本发明的第一方面,提供了一种用于重新使用文件系统的存储块的方法。该文件系统基于瘦供应存储配置并且与另外的文件系统共享存储池。该方法包括响应于预定义的触发事件,检测文件系统的存储空间中未被使用的存储块。该方法还包括响应于检测到存储空间中未被使用的存储块,将未被使用的存储块提供给存储池以供重新使用。
[0007]在本发明的一个实施例中,预定义的触发事件包括用户扫描请求、时间到期触发和存储阈值触发中的至少一项,存储阈值触发基于文件系统的最大存储使用量与当前的存储使用量中的至少一项。
[0008]在本发明的一个实施例中,该方法进一步包括在将未被使用的存储块提供给存储池之后,更新文件系统的最大存储使用量。
[0009]在本发明的一个实施例中,检测文件系统的存储空间中未被使用的存储块包括使用多个预定义的线程并行地扫描文件系统的存储空间,以检测未被使用的存储块。
[0010]在本发明的一个实施例中,将未被使用的存储块提供给存储池包括将未被使用的存储块从文件系统解映射,以及将解映射的存储块提供至存储池。
[0011 ] 在本发明的一个实施例中,在将所述未被使用的存储块提供给所述存储池之前,该方法进一步包括:针对文件文件系统,锁定未被使用的存储块。
[0012]在本发明的一个实施例中,文件系统支持快照功能。在该实施例中,在将未被使用的存储块提供给存储池之前,该方法进一步包括响应于文件系统具有至少一个快照,根据至少一个快照来确定未被使用的存储块是否能够被重新使用。
[0013]在本发明的一个实施例中,根据至少一个快照来确定未被使用的存储块是否能够被重新使用包括根据至少一个快照的时间顺序,检测未被使用的存储块在最近的快照中是否具有快照映射,快照映射指示未被使用的存储块中的数据在快照被采集之后已被映射至另外的存储块。在该实施例中,在检测到未被使用的存储块具有快照映射时,确定未被使用的存储块能够被重新使用而不需继续检测其他快照。
[0014]在本发明的一个实施例中,该方法进一步包括在检测到未被使用的存储块不具有快照映射时,检测未被使用的存储块在快照被采集的时间点处是否被分配用于存储数据。在该实施例中,在未被使用的存储块在快照被采集的时间点处被分配有数据时,确定未被使用的存储块不能够被重新使用而不继续检测其他快照。在该实施例中,在未被使用的存储块在快照被采集的时间点处未被分配有数据时,继续检测未被使用的存储块在下一个快照被采集的时间点处是否被分配用于存储数据。
[0015]在本发明的一个实施例中,该方法进一步包括在未被使用的存储块在快照被采集的时间点处未被分配有数据且快照是至少一个快照中的预定快照时,确定未被使用的存储块不能够被重新使用。
[0016]根据本发明的第二方面,提供了一种用于重新使用文件系统的存储块的装置。该文件系统基于瘦供应存储配置并且与另外的文件系统共享存储池。该装置包括存储空间扫描单元,被配置为响应于预定义的触发事件而检测文件系统的存储空间中未被使用的存储块。该装置还包括存储块供应单元,被配置为响应于检测到存储空间中未被使用的存储块而将未被使用的存储块提供给存储池以供重新使用。
[0017]在本发明的一个实施例中,预定义的触发事件包括用户扫描请求、时间到期触发和存储阈值触发中的至少一项,存储阈值触发基于文件系统的最大存储使用量与当前的存储使用量中的至少一项。
[0018]在本发明的一个实施例中,该装置进一步包括更新单元,被配置为在将未被使用的存储块提供给存储池之后更新文件系统的最大存储使用量。
[0019]在本发明的一个实施例中,存储空间扫描单元进一步被配置为使用多个预定义的线程并行地扫描文件系统的存储空间,以检测未被使用的存储块。
[0020]在本发明的一个实施例中,存储块供应单元进一步被配置为将未被使用的存储块从文件系统解映射,以及将解映射的存储块提供至存储池。
[0021]在本发明的一个实施例中,该装置进一步包括存储块锁定单元,被配置为在将未被使用的存储块提供给存储池之前,针对文件文件系统而锁定所述未被使用的存储块。
[0022]在本发明的一个实施例中,文件系统支持快照功能。在该实施例中,该装置进一步包括重新使用判断单元,被配置为在将未被使用的存储块提供给存储池之前,响应于文件系统具有至少一个快照而根据至少一个快照来确定未被使用的存储块是否能够被重新使用。
[0023]在本发明的一个实施例中,重新使用判断单元包括快照映射检测单元,被配置为根据至少一个快照的时间顺序而检测未被使用的存储块在最近的快照中是否具有快照映射,快照映射指示未被使用的存储块中的数据在快照被采集之后已被映射至另外的存储块。该重新使用判断单元还包括第一确定单元,被配置为在检测到未被使用的存储块具有快照映射时,确定未被使用的存储块能够被重新使用而不需继续检测其他快照。
[0024]在本发明的一个实施例中,重新使用判断单元进一步包括存储数据检测单元,被配置为在检测到未被使用的存储块不具有快照映射时,检测未被使用的存储块在快照被采集的时间点处是否被分配用于存储数据。该重新使用判断单元还包括第二确定单元,被配置为在未被使用的存储块在快照被采集的时间点处被分配有数据时,确定未被使用的存储块不能够被重新使用而不继续检测其他快照。
[0025]在本发明的一个实施例中,存储数据检测单元进一步被配置为在未被使用的存储块在快照被采集的时间点处未被分配有数据时,继续检测未被使用的存储块在下一个快照被采集的时间点处是否被分配用于存储数据。
[0026]在本发明的一个实施例中,重新使用判断单元进一步包括第三确定单元,被配置为在未被使用的存储块在快照被采集的时间点处未被分配有数据且快照是至少一个快照中的预定快照时,确定未被使用的存储块不能够被重新使用。
[0027]根据本发明的第三方面,提供了一种计算机可读存储介质。该计算机可读存储介质具有存储在其上的计算机可读程序指令,该计算机可读程序指令用于执行以上所描述的方法的步骤。
[0028]通过下文描述将会理解,根据本发明的实施例,通过本发明的多种实施例,通过扫描文件系统的存储空间来检测未被使用的存储块。当检测到未被使用的存储块时,将该存储块返回存储池,以使得该存储块能够被共享该存储池的所有文件系统重新使用。因此,实现了存储池的存储空间的有效利用。
【附图说明】
[0029]通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
[0030]图1不出了基于瘦供应存储配置的存储系统的不意图;
[0031]图2示出了适于用来实现本发明实施例的示例性计算机系统/服务器的框图;
[0032]图3示出了根据本发明的实施例的用于重新使用文件系统的存储块的方法的流程图;
[0033]图4示出了根据本发明的示例实施例的用于执行扫描文件系统的存储空间的图形用户界面(GUI)的不意图;
[0034]图5示出了根据本发明的实施例的用于确定未被使用的存储块是否能够被重新使用的过程的流程图;以及
[0035]图6示出了根据本发明的实施例的用于重新使用文件系统的存储块的装置的流程图。
具体实施例
[0036]下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0037]图2示出了适于用来实现本发明实施例的示例性计算机系统/服务器12的框图。图2显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0038]如图2所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0039]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0040]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0041]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如存储器30和/或缓存器32。计算机系统/服务器12可以进一步包括其他可移动/不可移动的、易失性/非易失性计算机系统存储介质。尽管图2中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0042]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括一一但不限于一一操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0043]根据需要,计算机系统/服务器12也可以与一个或多个外部设备(例如显示设备24、存储设备14等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其他模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0044]在对示例实施例的描述中,术语“包括”及其类似用语表示开放性包含,即“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”或“该实施例”表示“至少一个实施例”。
[0045]下面将详细描述本发明的实施例。通过下文描述将会理解,本发明的基本构思之一在于:通过扫描文件系统的存储空间来检测未被使用的存储块(该存储块先前从存储池中被获取用于存储该文件系统的数据并且随后该存储块中的数据可能被删除或被移动至其他存储块,从而导致该存储块是空闲的)。当检测到未被使用的存储块时,将该存储块返回存储池,以使得该存储块能够被共享该存储池的所有文件系统重新使用。因此,根据本发明的技术方案,文件系统中未被使用的存储块能够被回收以供重新使用。这增加了存储池的有效利用率。
[0046]首先参照图3,其示出了根据本发明的实施例的用于重新使用文件系统的存储块的方法300的流程图。应理解的是,方法300还可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
[0047]在步骤S301,响应于预定义的触发事件,检测文件系统的存储空间中未被使用的存储块。
[0048]在本发明的实施例中,文件系统通常基于瘦供应存储配置并且与另外的文件系统共享存储池。在一个示例中,文件系统可以获取存储池中的瘦供应逻辑单元(TLU)用于存储数据。该文件系统可以是例如图1所示的基于瘦供应存储配置的存储系统中的文件系统101或文件系统102,其与另一个文件系统共享存储池103。应当理解的是,图1仅是一个示例。该文件系统可以与更多的其他文件系统共享存储池,并且该文件系统可以被设置为具有更多或更少的虚拟存储空间。共享的存储池也可以具有更多或更少的实际存储容量。
[0049]在本发明的一个实施例中,文件系统的存储空间(该存储空间相对于存储池的实际存储空间而言是虚拟存储空间)可以由一个或多个柱面组(cylinder group)组成,其中每个柱面组可以包括一个或多个存储块(有时也被称为扇区)。在一些示例中,每个柱面组可以具有例如64MB的存储容量,而每个存储块可以具有例如8KB至64KB的存储容量。应当知道,柱面组或存储块是文件系统的组成单元,并且每个柱面组和存储块可以具有其他的存储容量。本发明的范围在此方面不受限制。
[0050]在本发明的实施例中,如以上所提及的,未被使用的存储块指的是该文件系统先前从存储池中获取用于存储数据并且随后其中的数据可能被删除或被移动的存储块。未被使用的存储块也被称为空闲存储块。在传统的基于瘦供应的存储系统中,文件系统中存在的空闲的存储块不会被识别并且被自动地返回到存储池中以供重新使用。
[0051]为了能够重新使用这些存储块,以便提高存储系统的利用率,本发明的实施例中可以扫描文件系统的存储空间以检测未被使用的存储块。该扫描可以响应于预定义的触发事件。在一些实施例中,该触发事件可以由文件系统的用户选择或者定义,并且可以包括用户扫描请求、时间到期触发和存储阈值触发中的至少一项。
[0052]在触发事件是用户扫描请求的实施例中,当接收到用户的扫描请求时,开始执行文件系统的扫描。通过该方式,用户可以根据需要随时触发扫描。
[0053]在触发事件是时间到期触发的实施例中,可以定义扫描的触发周期。该触发周期可以是一天、一周、或者一个月等等。同时,还可以定义执行扫描的触发时间段,例如,在零点至两点。因此,当检测到到达预定义的触发周期和/或触发时间段时,文件系统自动开始执行扫描。
[0054]在触发事件是存储阈值触发的实施例中,可以定义与文件系统的存储空间有关的阈值,例如文件系统的可用存储容量(即估计的未被使用的存储容量)的阈值,然后基于该阈值来触发扫描。当检测到当前的可用存储容量达到阈值,则开始执行扫描。在本发明的一个买施例中,存储阈值触发基于文件系统的最大存储使用量(High Water Maker,HffM)与当前的存储使用量中的至少一个。在一个示例中,可以根据文件系统的最大存储使用量与当前的存储使用量确定文件系统的可用存储量,并且根据可用存储量与预定阈值的比较来确定是否触发扫描。在一个示例中,预定阈值可以是可用存储量的数值,当确定的可用存储量大于或等于该数值时,开始执行扫描。在另一个示例中,预定阈值可以是针对当前存储使用量或当前可用存储量与最大存储使用量的百分比而设置的阈值。在又一个示例中,预定阈值可以是针对最大存储使用量与存储池的存储容量的百分比而设置的阈值,或者可以是针对最大存储使用量的数值而设置的阈值。
[0055]最大存储使用量指的是文件系统曾经达到的最大存储使用量。例如,如果该文件系统在时间点Tl的存储使用量是5TB且该值比时间点Tl之前的任意时间处的存储使用量大,那么文件系统在时间点Tl的最大存储使用量是5TB,而在该时间点处的存储使用量也是5TB。如果文件系统在Tl之后的时间点T2处删除了 ITB的数据,那么该文件系统在时间点T2处的最大存储使用量仍是在时间点Tl曾经达到的使用量5TB,而在时间点T2处的当前存储使用量是4TB。由于被删除的ITB的存储空间处于空闲状态且尚未被使用,因此根据最大存储使用量与当前的存储使用量可以确定文件系统的可用存储量是1TB。如果针对可用存储量设置的触发阈值是500GB,那么可以触发文件系统的扫描。
[0056]应当注意到,以上仅给出用于触发扫描的触发事件的一些示例。在其他实施例中,还可以采用其他的触发事件来触发扫描。例如,响应于文件系统的一个或多个存储块中的数据被删除而触发扫描。本发明的实施例在此方面不受限制。
[0057]还应当注意到,在一些实施例中,可以响应于两个或更多个触发事件的组合来发起文件系统的扫描。例如,在预定时间周期到期且可用存储量超过预定阈值时,开始执行扫描。又例如,在可用存储量超过预定阈值时向用户发送通知,并且在接收到用户请求扫描的请求时,才开始执行扫描。本发明的实施例在此方面不受限制。
[0058]在执行文件系统的扫描时,可以按柱面组为单位扫描该文件系统的存储空间,以找到每个柱面组中的空闲存储块。可以使用预先编写的线程来扫描文件系统的存储空间。在本发明的一个实施例中,为了提高扫描速度,可以使用多个预定义的线程并行地扫描文件系统的存储空间,以检测所述未被使用的存储块。例如,每个线程可以扫描文件系统的一个柱面组,以检测该柱面组中是否存在未被使用的存储块。
[0059]图4示出了根据本发明的示例实施例的用于执行扫描文件系统的存储空间的图形用户界面(GUI) 400的示意图。在GUI 400中,图标401和402可以由用户点击以开始扫描过程或结束扫描过程。框403示出了文件系统的当前存储可用量。状态表403示出了扫描过程的状态,例如是否扫描过程正在运行、其运行进度以及预计的剩余时间。用户配置表403示出了可以由用户个性化设置的用于触发扫描过程的触发事件。如图4所示,扫描的触发事件包括时间到期触发以及存储阈值触发,即在可用存储量达到文件系统的最大存储使用量的10%时,在每天早上零点到两点执行文件系统的扫描以检测空闲的存储块。
[0060]应当知道,图4中示出的仅是示例的图形用户界面。在使用过程中,图形用户界面可以被设计为其他式样或者可以包括更多或更少的功能。本发明的实施例在此方面不受限制。
[0061]如果在步骤S301检测到一个或多个未被使用的存储块,则方法300行进至步骤S302。在步骤S302,响应于检测到存储空间中未被使用的存储块,将未被使用的存储块提供给存储池以供重新使用。
[0062]在本发明的一个实施例中,当检测到未被使用的存储块时,将未被使用的存储块从文件系统解映射,并且将解映射的存储块提供至存储池。例如,当检测到未被使用的存储块时,文件系统向存储池的存储设备发送解映射命令(例如,通过SCSI (小型计算机系统接口)的“UNMAP”命令)。该存储设备可以对该存储块打洞(punch hole),以便将该存储块从文件系统解映射并且被返回到存储池中重新使用。
[0063]在对存储块进行打洞的过程中,也就是在执行检测到未被使用的存储块之后和在存储块被放入存储池重新使用之前,为了防止该文件系统的输入/输出(I/O)线程继续分配该存储块,可以针对该文件系统而锁定未被使用的存储块,以使得被锁定的存储块或者被锁定的包含该存储块的柱面组不被分配用于存储数据。该锁定可以是存储块级别或者柱面组级别的锁定。例如,仅锁定未被使用的存储块,或者锁定该未被使用的存储块所属的柱面组。因此,确保了在存储块的重新使用的过程中文件系统的读写任务的正常运行。
[0064]在本发明的实施例中,在一个或多个未被使用的存储块被提供至存储池之后,这些存储块可以被共享该存储池的所有文件系统重新使用,包括原先使用该存储块的文件系统。
[0065]因为将检测到的未被使用的存储块已从该文件系统解映射并且被提供至存储池,在本发明的一个实施例中,更新文件系统的最大存储使用量,以使得系统中记录的最大存储使用量能够反映出可用存储空间与当前存储空间使用量的和。在一个示例中,在将所有检测到的未被使用的存储块提供给存储池之后,如果尚未有新的数据被存储到该文件系统的存储空间中,那么最大可用存储量可以被更新为与当前存储空间使用量相同。
[0066]以上参照图3描述了根据本发明的实施例的用于重新使用文件系统的存储块的示例方法。该方法的各个步骤可以由运行该文件系统的计算设备来执行。该计算设备可以例如图2中所示出的计算系统。在一些实施例中,该计算设备上可以设置有多个文件系统。针对每个文件系统,均可以根据本发明的实施例提供的技术方案,完成将存储块回收到存储池中以供重新使用。
[0067]在一些使用情况中,文件系统可以支持快照功能。快照指的是对文件系统在某个时间点(有时被称为校验点(check point))的映像。例如,文件系统的快照可以指示在该快照被采集的时间点处该文件系统中存储的数据、数据的存储位置以及文件系统的其他方面等。由于文件系统在某个时间点的快照可能引用存储块中的数据,因此,在本发明的实施例中,在执行存储块的重新使用过程时,还可以考虑文件系统的快照。在本发明的一个实施例中,在将未被使用的存储块提供给存储池之前,即在方法300的步骤S302之前,可以判断文件系统是否具有快照,并且响应于文件系统具有至少一个快照,根据至少一个快照来确定未被使用的存储块是否能够被重新使用。
[0068]在判断未被使用的存储块是否能够被重新使用时,主要考虑该存储块的快照映射以及该存储块在快照被采集的时间点处是否被分配用于存储数据。
[0069]未被使用的存储块在每个快照中可能具有快照映射,该快照映射指示未被使用的存储块中的数据在该快照被采集之后和下一个快照被采集之前已被映射至另外的存储块。也就是说,对于考虑的一个快照,如果该快照引用的某个存储块中的数据在该快照被采集时已被分配用于存储数据,并且在该快照被采集之后该存储块中的数据被修改(例如,被用新的数据替换),那么该存储块中的原始数据将被写入到快照指定的其他存储空间中。在这种情况下,该存储块被记录为具有快照映射。也就是说,快照引用的该存储块中的数据已经在其他空间中具有备份。在这种情况下,如果该存储块中的数据随后被删除(也即,该存储块变成未被使用的存储块),那么该存储块可以被重新使用。
[0070]存储块的分配时间的信息可以用于确定该存储块在快照被采集的时间点处是否被分配用于存储数据。例如,如果在一个快照被采集的时间点处某个存储块未被分配用于存储数据,那么当后续该存储块被分配用于存储数据且其中的数据又被删除(即该存储块变成未被使用的存储块)时,该存储块可以被重新使用。原因在于该快照并未引用该存储块。如果该存储块在该快照被采集的时间点处被分配用于存储数据并且之后存储块中的数据被删除(即该存储块变成未被使用的存储块),那么该存储块不可以被重新使用。因为该快照正在引用该存储块。
[0071]以上介绍的两种情况仅是在文件系统具有一个快照的情况下的判断规则,当文件系统具有多个快照时,可以按照快照的时间顺序,从最近的快照开始依次判断未被使用的存储块的快照映射以及该存储块在每个快照被采集的时间点处是否被分配,从而综合判断是否能够将该存储块提供给存储池以便重新使用。
[0072]因为文件系统可能具有很多快照,如果按时间顺序针对所有快照执行判断,那么将花费较多时间。而且,由于仅文件系统中最近的快照的快照映射信息被存储在缓存中,其他快照的快照映射信息被存储在文件系统的存储空间中,如以上所提及的,为了保证文件系统的正常读写,该存储块或者包含该存储块的柱面组被锁定,因此,通常较容易获得最近的快照的快照映射信息。基于这些原因,为了提高存储块重新利用的过程的性能,在本发明的一些实施例中,将认为最近的快照对未被使用的存储块是否能够重新使用的判断具有较大影响力。在依据最近的快照无法确定该存储块是否能够被重新使用的时候,再利用下一个快照来执行判断。并且,在文件系统的快照的数目过多时,可以仅考虑预定数目的快照,而不是考虑文件系统的全部快照。
[0073]图5示出了根据本发明的实施例的用于确定未被使用的存储块是否能够被重新使用的过程500的流程图。
[0074]在步骤S501,检测未被使用的存储块在最近的快照中是否具有快照映射。具体地,可以根据快照被采集的时间顺序对文件系统的所有快照进行排列,并且确定最近的快照。
[0075]如果在步骤S501中检测到该存储块在该快照中具有快照映射,如以上所提及的,这指示该存储块中的被最近的快照所应用的数据已经被映射到该快照指定的另外的存储块。因此,该存储块能够被重新使用而不需继续检测其他快照,过程500结束。
[0076]如果在步骤S501中检测到该存储块不具有快照映射,则过程500行进至步骤S502。在步骤S502中,检测未被使用的存储块在当前快照被采集的时间点处是否被分配用于存储数据。存储块在某个时间点处是否被分配用于存储数据的信息也被文件系统记录。因此,通过检查该信息,可以确定存储块在当前快照被采集的时间点处是否被分配用于存储数据。
[0077]如以上所提及的,如果在步骤S501中检测到该存储块不具有快照映射且在步骤S502中检测到该存储块在当前快照被采集的时间点处被分配用于存储数据,也就是说该存储块被当前快照引用、且该存储块中的数据未被映射到其他存储块中,为了保证文件系统的快照功能正常运行,该存储块不能够被重新使用。此时,过程500结束。
[0078]如果在步骤S502中检测到该存储块在当前快照被采集的时间点处未被分配用于存储数据,过程500行进到步骤S503,确定是否存在下一个快照,即被采集的时间点在当前快照的时间点之前的快照。如果存在,过程500行进至步骤S504,将下一个快照视作当前快照、并且确定当前快照是否是活跃的。当前快照的活跃状态指示该快照可以被访问并且可以被检查存储块的信息,例如,存储块在该快照被采集的时间点处是否被分配用于存储数据的信息。
[0079]如果确定当前快照是不活跃的,为了确保文件系统的快照功能正常运行,确定该存储块不能够被重新使用,并且过程500结束。
[0080]如果确定当前快照是活跃的,过程500继续返回步骤S502。
[0081]如果在步骤S503处确定不存在下一个快照,即当前快照是文件系统的最后一个快照,则确定该未被使用的存储块不能够被重新使用并且过程500结束。也就是说,该存储块在文件系统的已有的所有快照被采集的时间点处均未被分配用于存储数据,那么该存储块不被快照引用,可以被重新使用。
[0082]由于文件系统可能具有较多的快照,可能需要花费较长时间按照过程500来确定一个未被使用的存储块是否能够被重新使用。因此,在一些实施例中,为了提高做出决策的速度和提高系统性能,可以仅考虑文件系统中预定数目的快照。例如,可以仅考虑文件系统中最新的16个快照。也就是说,在步骤S503处,如果当前快照是文件系统的所有快照中按时间顺序排序后的预定编号的快照,例如是第16个快照,那么确定该未被使用的存储块不能够被重新使用而不再继续检测其他的快照。
[0083]注意到,对于具有快照的文件系统中的每个未被使用的存储块,均可以按照过程500来判断该存储块是否能够被重新使用。
[0084]以上参照图5描述了在具有快照的文件系统中确定未被使用的存储块是否能够被重新使用的示例过程。应该注意到,图5中示出的过程500仅是示例。过程500中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。例如,步骤501和502的顺序可以交换。又例如,如果在步骤504中确定当前快照是活跃的,则过程500返回步骤501。也就是说,可以针对每个快照,均检测存储块是否具有映射和在相应的采集时间点处是否被分配用于存储数据。此外,过程500还可以包括附加的步骤和/或省略执行示出的步骤。例如,步骤S504可以被省略,即不考虑快照是否活跃。在该示例中,如果在步骤S503中确定存在下一个快照,则将下一个快照作为当前快照并且由步骤S503直接返回步骤S502。
[0085]上文已经结合若干具体实施例阐释了本发明的精神和原理。通过上述本发明的多种实施例,通过扫描文件系统的存储空间来检测未被使用的存储块。当检测到未被使用的存储块时,将该存储块返回存储池,以使得该存储块能够被共享该存储池的所有文件系统重新使用。因此,实现了存储池的存储空间的有效利用。用于回收文件系统的存储块的过程可以按照预定的触发策略来自动触发,从而能够及时、快速地重新使用空闲的存储块。此夕卜,该过程也不会影响到文件系统的正常读写操作。该过程也适合于具有快照功能的文件系统,避免了因为将存储块返回到存储池中而对存储快照造成的影响。
[0086]图6示出了根据本发明的实施例的用于重新使用文件系统的存储块的装置600的框图。该文件系统基于瘦供应存储配置并且与另外的文件系统共享存储池。如图6中所示,装置600包括存储空间扫描单元601,被配置为响应于预定义的触发事件而检测文件系统的存储空间中未被使用的存储块。装置600还包括存储块供应单元602,被配置为响应于检测到存储空间中未被使用的存储块而将未被使用的存储块提供给存储池以供重新使用。
[0087]在本发明的一个实施例中,预定义的触发事件包括用户扫描请求、时间到期触发和存储阈值触发中的至少一项,存储阈值触发基于文件系统的最大存储使用量与当前的存储使用量中的至少一项。
[0088]在本发明的一个实施例中,装置600进一步包括更新单元,被配置为在将未被使用的存储块提供给存储池之后更新文件系统的最大存储使用量。
[0089]在本发明的一个实施例中,存储空间扫描单元601进一步被配置为使用多个预定义的线程并行地扫描文件系统的存储空间,以检测所述未被使用的存储块。
[0090]在本发明的一个实施例中,存储块供应单元602进一步被配置为将未被使用的存储块从文件系统解映射,以及将解映射的存储块提供至存储池。
[0091]在本发明的一个实施例中,装置600进一步包括存储块锁定单元,被配置为在将未被使用的存储块提供给存储池之前,针对文件文件系统而锁定未被使用的存储块。
[0092]在本发明的一个实施例中,文件系统支持快照功能。在该实施例中,装置600进一步包括重新使用判断单元,被配置为在将未被使用的存储块提供给存储池之前,响应于文件系统具有至少一个快照而根据至少一个快照来确定未被使用的存储块是否能够被重新使用。
[0093]在本发明的一个实施例中,重新使用判断单元包括快照映射检测单元,被配置为根据至少一个快照的时间顺序而检测未被使用的存储块在最近的快照中是否具有快照映射,快照映射指示未被使用的存储块中的数据在快照被采集之后已被映射至另外的存储块。该重新使用判断单元还包括第一确定单元,被配置为在检测到未被使用的存储块具有快照映射时,确定未被使用的存储块能够被重新使用而不需继续检测其他快照。
[0094]在本发明的一个实施例中,重新使用判断单元进一步包括存储数据检测单元,被配置为在检测到未被使用的存储块不具有快照映射时,检测未被使用的存储块在快照被采集的时间点处是否被分配用于存储数据。该重新使用判断单元还包括第二确定单元,被配置为在未被使用的存储块在快照被采集的时间点处被分配有数据时,确定未被使用的存储块不能够被重新使用而不继续检测其他快照。
[0095]在本发明的一个实施例中,存储数据检测单元进一步被配置为在未被使用的存储块在快照被采集的时间点处未被分配有数据时,继续检测未被使用的存储块在下一个快照被采集的时间点处是否被分配用于存储数据。
[0096]在本发明的一个实施例中,重新使用判断单元进一步包括第三确定单元,被配置为在未被使用的存储块在快照被采集的时间点处未被分配有数据且快照是至少一个快照中的预定快照时,确定未被使用的存储块不能够被重新使用。
[0097]可以看出,图6的装置600可以实现如图3或5中所示的方法,并且尽管未进一步示出,装置600可以包括更多的功能单元以实现结合图3的方法300或结合图5的过程500所描述的多个实施例。进一步,装置600可以实现用每个分链表的活跃度来整体衡量每个分链表所包括的缓存数据的访问热度,在移除时能够移除整个系统中访问热度较低的缓存数据并且保留整个系统中访问热度较高的缓存数据,从而提高了系统的读写速率。
[0098]应当注意,为清晰起见,图6中没有示出装置600所包括的可选单元或者子单元。上文所描述的所有特征和操作分别适用于装置600。而且,装置600中的单元或子单元的划分不是限制性的而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实现。本发明的范围在此方面不受限制。
[0099]而且,装置600所包含的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。例如,在某些实施例中,装置600可以利用软件和/或固件来实现。备选地或附加地,装置600可以部分地或者完全地基于硬件来实现。例如,装置600中的一个或多个单元可以实现为集成电路(IC)芯片、专用集成电路(ASIC)、片上系统(SOC)、现场可编程门阵列(FPGA),等等。本发明的范围在此方面不受限制。
[0100]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。
[0101]计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(R0M)、可擦式可编程只读存储器(EPR0M或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(⑶-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0102]这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0103]用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如SmalltalkX++等,以及常规的过程式编程语言一诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0104]这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0105]这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0106]也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0107]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0108]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
【主权项】
1.一种用于重新使用文件系统的存储块的方法,所述文件系统基于瘦供应存储配置并且与另外的文件系统共享存储池,所述方法包括: 响应于预定义的触发事件,检测所述文件系统的存储空间中未被使用的存储块;以及响应于检测到所述存储空间中未被使用的存储块,将所述未被使用的存储块提供给所述存储池以供重新使用。2.根据权利要求1所述的方法,其中所述预定义的触发事件包括用户扫描请求、时间到期触发和存储阈值触发中的至少一项,所述存储阈值触发基于所述文件系统的最大存储使用量与当前的存储使用量中的至少一项。3.根据权利要求2所述的方法,进一步包括: 在将所述未被使用的存储块提供给所述存储池之后,更新所述文件系统的最大存储使用量。4.根据权利要求1所述的方法,其中检测所述文件系统的存储空间中未被使用的存储块包括: 使用多个预定义的线程并行地扫描所述文件系统的所述存储空间,以检测所述未被使用的存储块。5.根据权利要求1所述的方法,其中将所述未被使用的存储块提供给所述存储池包括: 将所述未被使用的存储块从所述文件系统解映射;以及 将解映射的存储块提供至所述存储池。6.根据权利要求1所述的方法,其中在将所述未被使用的存储块提供给所述存储池之前,所述方法进一步包括: 针对所述文件文件系统,锁定所述未被使用的存储块。7.根据权利要求1至6中任一项所述的方法,其中所述文件系统支持快照功能;以及 其中在将所述未被使用的存储块提供给所述存储池之前,所述方法进一步包括: 响应于所述文件系统具有至少一个快照,根据所述至少一个快照来确定所述未被使用的存储块是否能够被重新使用。8.根据权利要求7所述的方法,其中根据所述至少一个快照来确定所述未被使用的存储块是否能够被重新使用包括: 根据所述至少一个快照的时间顺序,检测所述未被使用的存储块在最近的快照中是否具有快照映射,所述快照映射指示所述未被使用的存储块中的数据在所述快照被采集之后已被映射至另外的存储块;以及 在检测到所述未被使用的存储块具有所述快照映射时,确定所述未被使用的存储块能够被重新使用而不需继续检测其他快照。9.根据权利要求8所述的方法,进一步包括: 在检测到所述未被使用的存储块不具有所述快照映射时,检测所述未被使用的存储块在所述快照被采集的时间点处是否被分配用于存储数据; 在所述未被使用的存储块在所述快照被采集的时间点处被分配有数据时,确定所述未被使用的存储块不能够被重新使用而不继续检测其他快照;以及 在所述未被使用的存储块在所述快照被采集的时间点处未被分配有数据时,继续检测所述未被使用的存储块在下一个快照被采集的时间点处是否被分配用于存储数据。10.根据权利要求9所述的方法,进一步包括: 在所述未被使用的存储块在所述快照被采集的时间点处未被分配有数据且所述快照是所述至少一个快照中的预定快照时,确定所述未被使用的存储块不能够被重新使用。11.一种用于重新使用文件系统的存储块的装置,所述文件系统基于瘦供应存储配置并且与另外的文件系统共享存储池,所述装置包括: 存储空间扫描单元,被配置为响应于预定义的触发事件而检测所述文件系统的存储空间中未被使用的存储块;以及 存储块供应单元,被配置为响应于检测到所述存储空间中未被使用的存储块而将所述未被使用的存储块提供给所述存储池以供重新使用。12.根据权利要求11所述的装置,其中所述预定义的触发事件包括用户扫描请求、时间到期触发和存储阈值触发中的至少一项,所述存储阈值触发基于所述文件系统的最大存储使用量与当前的存储使用量中的至少一项。13.根据权利要求12所述的装置,进一步包括: 更新单元,被配置为在将所述未被使用的存储块提供给所述存储池之后更新所述文件系统的最大存储使用量。14.根据权利要求11所述的装置,其中所述存储空间扫描单元进一步被配置为使用多个预定义的线程并行地扫描所述文件系统的所述存储空间,以检测所述未被使用的存储块。15.根据权利要求11所述的装置,其中所述存储块供应单元进一步被配置为将所述未被使用的存储块从所述文件系统解映射,以及将解映射的存储块提供至所述存储池。16.根据权利要求11所述的装置,所述装置进一步包括: 存储块锁定单元,被配置为在将所述未被使用的存储块提供给所述存储池之前,针对所述文件文件系统而锁定所述未被使用的存储块。17.根据权利要求11至16中任一项所述的装置,其中所述文件系统支持快照功能;以及 其中所述装置进一步包括: 重新使用判断单元,被配置为在将所述未被使用的存储块提供给所述存储池之前,响应于所述文件系统具有至少一个快照而根据所述至少一个快照来确定所述未被使用的存储块是否能够被重新使用。18.根据权利要求17所述的装置,其中所述重新使用判断单元包括: 快照映射检测单元,被配置为根据所述至少一个快照的时间顺序而检测所述未被使用的存储块在最近的快照中是否具有快照映射,所述快照映射指示所述未被使用的存储块中的数据在所述快照被采集之后已被映射至另外的存储块;以及 第一确定单元,被配置为在检测到所述未被使用的存储块具有所述快照映射时,确定所述未被使用的存储块能够被重新使用而不需继续检测其他快照。19.根据权利要求18所述的装置,其中所述重新使用判断单元进一步包括: 存储数据检测单元,被配置为在检测到所述未被使用的存储块不具有所述快照映射时,检测所述未被使用的存储块在所述快照被采集的时间点处是否被分配用于存储数据; 第二确定单元,被配置为在所述未被使用的存储块在所述快照被采集的时间点处被分配有数据时,确定所述未被使用的存储块不能够被重新使用而不继续检测其他快照, 其中所述存储数据检测单元进一步被配置为在所述未被使用的存储块在所述快照被采集的时间点处未被分配有数据时,继续检测所述未被使用的存储块在下一个快照被采集的时间点处是否被分配用于存储数据。20.根据权利要求19所述的装置,所述重新使用判断单元进一步包括: 第三确定单元,被配置为在所述未被使用的存储块在所述快照被采集的时间点处未被分配有数据且所述快照是所述至少一个快照中的预定快照时,确定所述未被使用的存储块不能够被重新使用。21.—种计算机可读存储介质,所述计算机可读存储介质具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据权利要求1到10中任一项所述的方法的步骤。
【文档编号】G06F12/02GK105893266SQ201510004776
【公开日】2016年8月24日
【申请日】2015年1月4日
【发明人】宫晨, 赵军平, 张明, 刘剑, 王登宇, 王磊
【申请人】伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1