本发明专利技术公开了一种带缓存的存储系统空间回收的方法及应用,该方法包括以下步骤:存储系统在收到操作系统的取消映射请求后,查询文件对应的IndexAVL树中是否存在本次取消映射的数据区域;若是,删除所述IndexAVL树中本次取消映射数据区域覆盖的所有节点;以及建立所述取消映射请求类型的检查点,并在文件对应的UnmapAVL树中插入本次取消映射的数据区域的节点。该方法能够通过IndexAVL树和UnmapAVL树实现取消映射异步执行,避免阻塞上层的取消映射请求的调用;还能够在存储系统收到对文件的读请求时,确保取消映射后未再重新写入的区域不会返回脏数据。不会返回脏数据。不会返回脏数据。
【技术实现步骤摘要】
带缓存的存储系统空间回收的方法及应用
[0001]本专利技术是关于存储系统领域,特别是关于一种带缓存的存储系统空间回收的方法及应用。
技术介绍
[0002]存储系统能够以文件、块等方式提供存储给主机使用。操作系统在新建文件的时候向存储系统申请对应的存储空间,随着文件写入数据量的增大,其使用的存储空间也逐渐变大。操作系统在删除文件的时候只是删除文件的索引,文件占用的空间不会真正释放。这使得操作系统已经不再使用的存储空间在存储系统上还是分配的,对于存储系统来说是不清楚操作系统是否还在使用该段空间,这就导致了存储空间的利用率低。
[0003]随着存储系统和操作系统的发展,现在操作系统能够发送unmap,trim,discard等请求给存储系统,告知存储系统哪段存储空间可以回收,然后存储系统如果支持unmap,trim,discard等命令则回收该空间,回收后的空间可以再次被分配。
[0004]目前大多数存储系统都会利用容量较小但是性能高的SSD(如NVMe SSD)来做缓存,后端使用容量大但是性能较弱的HDD或者STATA SSD,这样整个系统就既能提供很好的性能和存储容量。数据在写入缓存后即可返回给主机,存储系统在后台再把数据写到更慢的存储介质。为了系统的高效性,存储系统在缓存的实现会比后端存储更高效,大部分是直接写存储介质。目前大部分存储系统在收到操作系统的unmap请求后,一般需要先把缓存的数据写入到后端存储,然后再在后端存储系统上回收空间。
[0005]公开于该
技术介绍
部分的信息仅仅旨在增加对本专利技术的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
技术实现思路
[0006]本专利技术的目的在于提供一种带缓存的存储系统空间回收的方法及应用,解决取消映射前需将缓存数据写入后端存储导致的时间长的问题。
[0007]为实现上述目的,本专利技术的实施例提供了一种带缓存的存储系统空间回收的方法。
[0008]在本专利技术的一个或多个实施方式中,所述方法包括:存储系统在收到操作系统的取消映射请求后,查询文件对应的IndexAVL树中是否存在本次取消映射的数据区域;若是,删除所述IndexAVL树中本次取消映射数据区域覆盖的所有节点;以及建立所述取消映射请求类型的检查点,并在文件对应的UnmapAVL树中插入本次取消映射的数据区域的节点。
[0009]在本专利技术的一个或多个实施方式中,所述方法还包括:查询所述Index AVL树中是否存在本次写请求数据区域的节点;若是,根据本次写请求更新所述节点;若否,在所述IndexAVL树中插入新节点,并将本次写请求数据写入缓存SSD设备。
[0010]在本专利技术的一个或多个实施方式中,所述方法还包括:查询所述Unmap AVL树中是否存在本次写请求数据区域的节点;若是,删除所述Unmap AVL树中本次写请求数据区域的
节点。
[0011]在本专利技术的一个或多个实施方式中,所述方法还包括:缓存系统在收到对文件的读请求后,查询所述文件对应的所述IndexAVL树中是否存在本次读请求数据区域的节点;若是,根据所述节点记录的写操作信息从缓存SSD设备中读取数据;若否,查询所述UnmapAVL树中是否存在本次读请求数据区域的节点;若是,返回预设值;若否,从后端存储读取数据。
[0012]在本专利技术的一个或多个实施方式中,所述方法还包括:将文件的写操作信息记录至对应AVL树的叶子节点,并将所述文件的数据写入缓存SSD设备中,其中,所述写操作信息至少包括:所述缓存SSD设备的ID,所述缓存SSD设备的偏移位置以及对应后端文件的偏移位置。
[0013]在本专利技术的一个或多个实施方式中,所述方法还包括:在存储系统将所述检查点刷到后端存储后,存储系统给后端存储发送取消映射请求,并将所述UnmapAVL树中本次取消映射数据区域的节点删除。
[0014]在本专利技术的一个或多个实施方式中,所述方法还包括:建立创建快照的请求;将数据从缓存系统刷到后端存储,并将所述数据对应的节点从所述Index AVL树中删除;以及后端存储执行快照请求。
[0015]在本专利技术的另一个方面当中,提供了一种带缓存的存储系统空间回收的装置,其包括查询模块、删除模块和建立模块。
[0016]查询模块,用于供存储系统在收到操作系统的取消映射请求后,查询文件对应的IndexAVL树中是否存在本次取消映射的数据区域。
[0017]删除模块,用于删除所述IndexAVL树中本次取消映射数据区域覆盖的所有节点。
[0018]建立模块,用于建立所述取消映射请求类型的检查点,并在文件对应的UnmapAVL树中插入本次取消映射的数据区域的节点。
[0019]在本专利技术的一个或多个实施方式中,所述查询模块还用于:查询所述Index AVL树中是否存在本次写请求数据区域的节点;若是,根据本次写请求更新所述节点;若否,在所述IndexAVL树中插入新节点,并将本次写请求数据写入缓存SSD设备。
[0020]在本专利技术的一个或多个实施方式中,所述查询模块还用于:查询所述UnmapAVL树中是否存在本次写请求数据区域的节点;若是,删除所述Unmap AVL树中本次写请求数据区域的节点。
[0021]在本专利技术的一个或多个实施方式中,所述查询模块还用于:缓存系统在收到对文件的读请求后,查询所述文件对应的所述IndexAVL树中是否存在本次读请求数据区域的节点;若是,根据所述节点记录的写操作信息从缓存SSD设备中读取数据;若否,查询所述UnmapAVL树中是否存在本次读请求数据区域的节点;若是,返回预设值;若否,从后端存储读取数据。
[0022]在本专利技术的一个或多个实施方式中,所述建立模块还用于:将文件的写操作信息记录至对应AVL树的叶子节点,并将所述文件的数据写入缓存SSD设备中,其中,所述写操作信息至少包括:所述缓存SSD设备的ID,所述缓存SSD设备的偏移位置以及对应后端文件的偏移位置。
[0023]在本专利技术的一个或多个实施方式中,所述删除模块还用于:在存储系统将所述检
查点刷到后端存储后,存储系统给后端存储发送取消映射请求,并将所述UnmapAVL树中本次取消映射数据区域的节点删除。
[0024]在本专利技术的一个或多个实施方式中,所述删除模块还用于:建立创建快照的请求;将数据从缓存系统刷到后端存储,并将所述数据对应的节点从所述IndexAVL树中删除;以及后端存储执行快照请求。
[0025]在本专利技术的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的带缓存的存储系统空间回收的方法。
[0026]在本专利技术的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的带缓存的存储系统空间回收本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种带缓存的存储系统空间回收的方法,其特征在于,所述方法包括:存储系统在收到操作系统的取消映射请求后,查询文件对应的IndexAVL树中是否存在本次取消映射的数据区域;若是,删除所述IndexAVL树中本次取消映射数据区域覆盖的所有节点;以及建立所述取消映射请求类型的检查点,并在文件对应的UnmapAVL树中插入本次取消映射的数据区域的节点。2.如权利要求1所述的带缓存的存储系统空间回收的方法,其特征在于,所述方法还包括:查询所述IndexAVL树中是否存在本次写请求数据区域的节点;若是,根据本次写请求更新所述节点;若否,在所述IndexAVL树中插入新节点,并将本次写请求数据写入缓存SSD设备。3.如权利要求2所述的带缓存的存储系统空间回收的方法,其特征在于,所述方法还包括:查询所述UnmapAVL树中是否存在本次写请求数据区域的节点;若是,删除所述UnmapAVL树中本次写请求数据区域的节点。4.如权利要求1所述的带缓存的存储系统空间回收的方法,其特征在于,所述方法还包括:缓存系统在收到对文件的读请求后,查询所述文件对应的所述IndexAVL树中是否存在本次读请求数据区域的节点;若是,根据所述节点记录的写操作信息从缓存SSD设备中读取数据;若否,查询所述UnmapAVL树中是否存在本次读请求数据区域的节点;若是,返回预设值;若否,从后端存储读取数据。5.如权利要求1所述的带缓存的存储系统空间回收的方法,其特征在于,所述方法还包括:将文件的写操作信息记录至对应AVL树的叶子节点,并将所述文件的数据写入缓存SSD设备中,其...
【专利技术属性】
技术研发人员:刘相文,方敏,
申请(专利权)人:江苏安超云软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。