掌桥专利:专业的专利平台
掌桥专利
首页

一种数据存储方法、装置、设备及可读存储介质

文献发布时间:2023-06-19 13:29:16


一种数据存储方法、装置、设备及可读存储介质

技术领域

本申请涉及存储技术领域,特别是涉及一种数据存储方法、装置、设备及可读存储介质。

背景技术

大数据的出现对存储容量的增长带来了很大的挑战。磁盘存储由于具备大容量、低成本的优势,在存储系统中占据重要地位。受超顺磁效应(SuperparaMagnetic Effect)的影响,硬盘的面密度即将达到极限,而瓦记录(shingled magnetic recording,SMR)技术能够在硬盘的基础上,以较小成本实现磁盘面密度的增长,从而保证磁盘容量的增长。

然而,由于瓦记录技术存在写放大问题:当瓦记录磁盘空闲空间低于设定的阈值后,将启动垃圾回收操作,例如将瓦记录分区A和瓦记录分区B的有效数据合并到瓦记录分区C上,那么瓦记录分区A和瓦记录分区B变成空闲分区,可以重新使用。频繁的垃圾回收操作会导致瓦记录磁盘性能严重下降。

综上所述,如何有效地解决因写放大而导致的瓦记录磁盘性能下降等问题,是目前本领域技术人员急需解决的技术问题。

发明内容

本申请的目的是提供一种数据存储方法、装置、设备及可读存储介质,能够使得瓦记录磁盘垃圾回收操作,不影响磁盘性能。

为解决上述技术问题,本申请提供如下技术方案:

一种数据存储方法,包括:

接收磁盘阵列的写数据访问请求,并确定待写入的目标数据;

判断所述磁盘阵列内的瓦记录磁盘是否在进行垃圾回收;

如果是,则将所述目标数据写入所述磁盘阵列内的硬盘条带;

如果否,则将所述目标数据写入所述磁盘阵列内的瓦记录磁盘条带。

优选地,还包括:

对所述磁盘阵列的状态进行监测;

在所述磁盘阵列处于空闲状态的情况下,将所述硬盘条带中存储的数据搬移至所述瓦记录磁盘条带。

优选地,将所述目标数据写入所述磁盘阵列内的瓦记录磁盘条带,包括:

将所述目标数据顺序写入所述瓦记录磁盘条带,并将校验数据写入到所述硬盘条带中的校验数据区。

优选地,还包括:

获取每个所述瓦记录磁盘中被使用空间大小;

判断所述被使用空间大小是否超过阈值;

如果是,则启动全局垃圾回收操作。

优选地,还包括:

接收所述磁盘阵列的读数据访问请求,并确定待读数据的逻辑块地址和数据长度;

利用所述逻辑块地址和所述数据长度,查询所述待读数据的存储位置;

从所述存储位置中读取所述待读数据。

优选地,从所述存储位置中读取所述待读数据,包括:

若所述存储位置属于所述硬盘条带,则向所述硬盘条带发送所述读数据访问请求,并从所述硬盘条带中读取所述待读数据。

优选地,从所述存储位置中读取所述待读数据,包括:

若所述存储位置属于所述瓦记录磁盘条带,则向所述瓦记录磁盘条带发送所述读数据访问请求,经过地址转换查找到在所述瓦记录磁盘条带中的存储位置并读取所述待读数据。

一种数据存储装置,包括:

请求接收单元,用于接收磁盘阵列的写数据访问请求,并确定待写入的目标数据;

回收判断单元,用于判断所述磁盘阵列内的瓦记录磁盘是否在进行垃圾回收;

硬盘写入单元,用于如果所述磁盘阵列内的瓦记录磁盘在进行垃圾回收,则将所述目标数据写入所述磁盘阵列内的硬盘条带;

磁盘写入单元,用于如果所述磁盘阵列内的瓦记录磁盘未进行垃圾回收,则将所述目标数据写入所述磁盘阵列内的瓦记录磁盘条带。

一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述数据存储方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据存储方法的步骤。

应用本申请实施例所提供的方法,接收磁盘阵列的写数据访问请求,并确定待写入的目标数据;判断磁盘阵列内的瓦记录磁盘是否在进行垃圾回收;如果是,则将目标数据写入磁盘阵列内的硬盘条带;如果否,则将目标数据写入磁盘阵列内的瓦记录磁盘条带。

磁盘阵列包括瓦记录磁盘条带和硬盘条带。当该磁盘阵列接收到写数据访问请求后,首先确定出待写入的目标数据,然后明确瓦记录磁盘是否在进行垃圾回收。如果瓦记录磁盘在进行垃圾回收,此时将目标数据写入到硬盘条带中,避免对瓦记录磁盘的垃圾回收造成干扰,从而避免产生写放大问题;如果瓦记录磁盘没有进行垃圾回收,则直接将目标数据写入到瓦记录磁盘条带中。即,在磁盘阵列中将瓦记录磁盘和硬盘相结合,基于瓦记录磁盘是否在进行垃圾回收,而将目标数据写入到不同的条带中,以避免因瓦记录磁盘产生写放大问题,而影响磁盘整体性能。

相应地,本申请实施例还提供了与上述数据存储方法相对应的数据存储装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例中一种数据存储方法的实施流程图;

图2为本申请实施例中一种数据存储方法的实施示意图;

图3为本申请实施例中一种数据存储装置的结构示意图;

图4为本申请实施例中一种电子设备的结构示意图;

图5为本申请实施例中一种电子设备的具体结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例中一种数据存储方法的流程图,该方法包括以下步骤:

S101、接收磁盘阵列的写数据访问请求,并确定待写入的目标数据。

其中,磁盘阵列包括瓦记录磁盘条带和硬盘条带。瓦记录磁盘条带即指由瓦记录磁盘构成的条带,硬盘条带即指由硬盘构成的条带。

举例说明:该磁盘阵列可以具体包含多个HM-SMR drive(瓦记录磁盘)和多个HDD(hard disk drive,传统磁盘、电脑硬盘,本文简称硬盘),其中多个HM-SMR drive(hostmanaged shingled magnetic recording drive,主机管理的瓦记录磁盘)组成RAID0(Stripe或Striping,没有奇偶校验的条带,本文简称条带),而多个HDD也组成RAID0。为了便于区别不同的RAID0,在本申请中,将由瓦记录磁盘组成的条带称之为瓦记录磁盘条带,将由硬盘组成的条带称之为硬盘条带。

写数据访问请求可以具体为用户发起,请求向磁盘阵列中写入目标数据的请求,相应地,该目标数据即为用户数据。当然,该写数据访问请求可以为上层应用发起,即当需求进行数据存储时发起写数据访问请求,相应地的目标数据即为上层应用需存储的数据,如监控数据、日志数据或其他数据。下面以目标数据为用户数据为例,对其存储过程进行详细说明,对于其他数据类型的存储方式可参照与此,在此不再一一赘述

在接收到写数据访问请求后,首先确定该请求对应待写入的目标数据。具体的,还可以确定该待写入数据的逻辑块地址和数据长度,以便在明确将其写入何种条带后,为其分配对应的存储地址和存储空间大小,对于分配到具体的某个条带后,如何将其写入条带内部的存储空间,可以参照具体的条带的数据存储流程。

S102、判断磁盘阵列内的瓦记录磁盘是否在进行垃圾回收。

考虑到当瓦记录磁盘在进行垃圾回收时,其内部会存在数据的搬移写入,以及瓦记录分区的合并以及状态的变更,若此时再继续向瓦记录磁盘写入新数据,会造成写放大问题,使得数据写入效率过低,严重时可能还会产生存储空间混乱的问题。因此,在需要写入目标数据时,可以先明确一下当前时刻瓦记录磁盘中是否在进行垃圾回收操作。

可以通过监督瓦记录磁盘的不同瓦记录分区之间是否存在数据搬移,来确定当前时刻瓦记录磁盘中是否在进行垃圾回收操作。具体的,若不同瓦记录分区之间存在数据搬移,如瓦记录分区A和瓦记录分区B的有效数据在往瓦记录分区C搬移,则表明当前时刻瓦记录磁盘在进行垃圾回收操作,反之,则可以确定当前没有进行垃圾回收操作。

在本申请中的一种具体实施方式中,垃圾回收过程具体包括:

步骤一、获取每个瓦记录磁盘中被使用空间大小;

步骤二、判断被使用空间大小是否超过阈值;

步骤三、如果是,则启动全局垃圾回收操作。

即,当存在至少一个瓦记录磁盘中被使用空间大小在超过预设的垃圾回收对应的阈值的情况下,将进行全局垃圾回收操作。在实际应用中,可以设置一个垃圾回收模块,该模块可以记录每个HM-SMR drive中被使用的空间,判断是否存在至少1个HM-SMR drive中被使用的空间超过规定的阈值,若否,则表明此时不需进行垃圾回收,若是,启动全局垃圾回收操作,即每个HM-SMR drive执行瓦记录分区合并操作。

如果瓦记录磁盘在进行垃圾回收,为了避免产生写放大问题,则不继续将新数据(即目标数据)写入瓦记录磁盘条带,而是写入硬盘条带,即执行步骤S103的操作,反之,则执行步骤S104的操作。

S103、将目标数据写入磁盘阵列内的硬盘条带。

具体的,可将目标数据写入基于硬盘的RAID0中,并将该目标数据写入位置标记为1(当然也可以用其他数值进行标记,只要区别于瓦记录磁盘条件的位置即可)。记录目标数据的写入位置,用于后续查询目标数据的所归属的条带类型。

S104、将目标数据写入磁盘阵列内的瓦记录磁盘条带。

具体的,当瓦记录磁盘没有进行垃圾回收操作时,此时向瓦记录磁盘条带写入新数据不会产生写放大问题,因而可以正常向瓦记录磁盘条带写入该目标数据。

优选地,当瓦记录磁盘条带具体为HM-SMR drive组成的RAID0,相应地,步骤S104将目标数据写入瓦记录磁盘条带,包括:将目标数据顺序写入瓦记录磁盘条带,并将校验数据写入到硬盘条带中的校验数据区。将目标数据分发给由HM-SMR drive组成的RAID0,并将该数据写入位置标记为0。对于分发给HM-SMR drive的目标数据,可将其转换成顺序写数据;对于由HM-SMR drive组成的RAID0所生成的校验数据,可将其分发给由HDD组成的RAID0的校验数据区。

相应地,由于在瓦记录磁盘进行垃圾回收时,对应的目标数据是写入到硬盘条带中的,也就是说,用户数据可能存在于瓦记录磁盘中,也可能存在于硬盘中。基于此,在本申请的一种具体实施方式中,数据的读取过程具体包括:

步骤一、接收磁盘阵列的读数据访问请求,并确定待读数据的逻辑块地址和数据长度;

步骤二、利用逻辑块地址和数据长度,查询待读数据的存储位置;

步骤三、从存储位置中读取待读数据。

其中,步骤三从存储位置中读取待读数据,具体包括:

情况1:若存储位置属于硬盘条带,则向硬盘条带发送读数据访问请求,并从硬盘条带中读取待读数据。

情况2:若存储位置属于瓦记录磁盘条带,则向瓦记录磁盘条带发送读数据访问请求,经过地址转换查找到在瓦记录磁盘条带中的存储位置并读取待读数据。

也就是说,当用户读请求访问磁盘阵列,可根据读请求(即读数据访问请求)的LBA(logical block address,逻辑块地址)和请求数据长度,查询所请求数据位置,若所请求数据(即待读数据)在基于HM-SMR drive组成的RAID0中,向基于HM-SMR drive的RAID0(即瓦记录磁盘条带)发送读请求,经过地址转换模块查找到在HM-SMR drive中的存储位置,读取数据后返回给用户;若所请求数据在基于硬盘组成的RAID0(即硬盘条带)中,则向基于硬盘的RAID0发送读请求,读取数据后返回给用户。

优选地,为了方便管理,还可以在磁盘阵列空闲状态将存入硬盘条带中的数据搬移至瓦记录磁盘条带中。具体的实现过程,包括:

步骤一、对磁盘阵列的状态进行监测;

步骤二、在磁盘阵列处于空闲状态的情况下,将硬盘条带中存储的数据搬移至瓦记录磁盘条带。

具体的,可以通过对磁盘阵列的I/O(输入/输出(Input/Output))进行监测,在输入、输出处于空闲状态下,将硬盘条带中存储的数据搬移到瓦记录磁盘条带中。其中,空闲状态可以基于相关阈值进行设定,如输入在输入阈值以内,输出在输出阈值以内,对于相应阈值的设定,可以根据实际需求进行设置和调整,在此不再一一列举。

或者,可以对磁盘阵列的读请求和写请求进行监管,当发现无待处理的读请求或写请求时,或者待处理的读请求或写请求的数量低于预先设置的数量阈值,确定磁盘阵列处于空闲状态。

需要注意的是,这里从硬盘条带中搬移至瓦记录磁盘条带中的数据是指在瓦记录磁盘垃圾回收期间,存入的用户数据,而并非是将硬盘条带中的全部数据搬移至瓦记录磁盘条带中。

应用本申请实施例所提供的方法,接收磁盘阵列的写数据访问请求,并确定待写入的目标数据;判断磁盘阵列内的瓦记录磁盘是否在进行垃圾回收;如果是,则将目标数据写入磁盘阵列内的硬盘条带;如果否,则将目标数据写入磁盘阵列内的瓦记录磁盘条带。

磁盘阵列包括瓦记录磁盘条带和硬盘条带。当该磁盘阵列接收到写数据访问请求后,首先确定出待写入的目标数据,然后明确瓦记录磁盘是否在进行垃圾回收。如果瓦记录磁盘在进行垃圾回收,此时将目标数据写入到硬盘条带中,避免对瓦记录磁盘的垃圾回收造成干扰,从而避免产生写放大问题;如果瓦记录磁盘没有进行垃圾回收,则直接将目标数据写入到瓦记录磁盘条带中。即,在磁盘阵列中将瓦记录磁盘和硬盘相结合,基于瓦记录磁盘是否在进行垃圾回收,而将目标数据写入到不同的条带中,以避免因瓦记录磁盘产生写放大问题,而影响磁盘整体性能。

为便于本领域技术人员更好地理解和应用本申请所提供的数据存储方法,下面结合具体的应用场景为例,对数据存储方法进行详细说明。

请参考图2,图2为本申请实施例中一种数据存储方法的实施示意图。

如图2所示,磁盘阵列可以包含多个HM-SMR drive和多个HDD,其中多个HM-SMRdrive组成RAID0,用于存储用户数据,而多个HDD也组成RAID0,该RAID0可以进一步划分为校验数据区和用户数据暂存区(对应图示暂存区),校验数据区用于存储根据用户数据生成的校验数据,而用户数据暂存区用于当HM-SMR drive垃圾回收时暂时存储的用户数据。

在实际使用时,可以设置数据分发模块来实现上述方法实施例的数据写入和数据读取对应的相关步骤,设置垃圾回收模块来实现垃圾回收处理;设置地址转换模块来实现地址转换。

在该磁盘阵列中,写流程主要包括以下几个步骤:

步骤一:用户写数据访问磁盘阵列,数据分发模块记录用户写数据的LBA地址和数据长度,若由HM-SMR drive组成的RAID0在执行垃圾回收操作,转向步骤七,若没有执行垃圾回收操作,转向步骤二;

步骤二:数据分发模块将用户写数据分发给由HM-SMR drive组成的RAID0,并将该数据写入位置标记为0;

步骤三:对于分发给HM-SMR drive的用户数据,地址转换模块可将其转换成顺序写数据,以便由HM-SMR drive组成的RAID0可以快速进行顺序写入操作;

步骤四:对于由HM-SMR drive组成的RAID0所生成的校验数据,数据分发模块可将其分发给由HDD组成的RAID0的校验数据区;

步骤五:垃圾回收模块记录每个HM-SMR drive中被使用的空间,判断某个HM-SMRdrive中被使用的空间是否超过规定的阈值,若否,转向步骤一,若是,转向步骤六;

步骤六:启动全局垃圾回收操作,即每个HM-SMR drive执行瓦记录分区合并操作;

步骤七:数据分发模块将用户数据写入基于硬盘的RAID0中的用户数据暂存区,并将该数据写入位置标记为1;

步骤八:当存储系统处于空闲的时候,将用户数据暂存区的用户数据迁移到由HM-SMR drive组成的RAID0,并将用户数据暂存区中已迁移的用户数据所占的空间标记为空闲空间。

相应地,在该磁盘阵列中,读流程主要包括以下几个步骤:

步骤一:用户读请求访问磁盘阵列,数据分发模块根据读请求的LBA和请求数据长度,查询所请求数据位置,若所请求数据在基于HM-SMR drive组成的RAID0中,转向步骤二,若所请求数据在基于硬盘组成的RAID0的缓存区中,转向步骤三;

步骤二:数据分发模块向基于HM-SMR drive的RAID0发送读请求,经过地址转换模块查找到在HM-SMR drive中的存储位置,读取数据后返回给用户;

步骤三:数据分发模块向基于硬盘的RAID0发送读请求,读取数据后返回给用户。

如此,便可充分发挥HM-SMR drive和传统磁盘低成本、大容量、较好顺序写性能的优势。

相应于上面的方法实施例,本申请实施例还提供了一种数据存储装置,下文描述的数据存储装置与上文描述的数据存储方法可相互对应参照。

参见图3所示,该装置包括数据分发模块,该模块具体包括以下单元:

请求接收单元101,用于接收磁盘阵列的写数据访问请求,并确定待写入的目标数据;

回收判断单元102,用于判断磁盘阵列内的瓦记录磁盘是否在进行垃圾回收;

硬盘写入单元103,用于如果磁盘阵列内的瓦记录磁盘在进行垃圾回收,则将目标数据写入磁盘阵列内的硬盘条带;

磁盘写入单元104,用于如果磁盘阵列内的瓦记录磁盘未进行垃圾回收,则将目标数据写入磁盘阵列内的瓦记录磁盘条带。

应用本申请实施例所提供的装置,接收磁盘阵列的写数据访问请求,并确定待写入的目标数据;判断磁盘阵列内的瓦记录磁盘是否在进行垃圾回收;如果是,则将目标数据写入磁盘阵列内的硬盘条带;如果否,则将目标数据写入磁盘阵列内的瓦记录磁盘条带。

磁盘阵列包括瓦记录磁盘条带和硬盘条带。当该磁盘阵列接收到写数据访问请求后,首先确定出待写入的目标数据,然后明确瓦记录磁盘是否在进行垃圾回收。如果瓦记录磁盘在进行垃圾回收,此时将目标数据写入到硬盘条带中,避免对瓦记录磁盘的垃圾回收造成干扰,从而避免产生写放大问题;如果瓦记录磁盘没有进行垃圾回收,则直接将目标数据写入到瓦记录磁盘条带中。即,在磁盘阵列中将瓦记录磁盘和硬盘相结合,基于瓦记录磁盘是否在进行垃圾回收,而将目标数据写入到不同的条带中,以避免因瓦记录磁盘产生写放大问题,而影响磁盘整体性能。

在本申请的一种具体实施方式中,数据分发模块,还包括:

数据回迁单元,用于对磁盘阵列的状态进行监测;在磁盘阵列处于空闲状态的情况下,将硬盘条带中存储的数据搬移至瓦记录磁盘条带。

在本申请的一种具体实施方式中,磁盘写入单元104,具体用于将目标数据顺序写入瓦记录磁盘条带,并将校验数据写入到硬盘条带中的校验数据区。

在本申请的一种具体实施方式中,该装置还包括:

垃圾回收模块,用于获取每个瓦记录磁盘中被使用空间大小;判断被使用空间大小是否超过阈值;如果是,则启动全局垃圾回收操作。

在本申请的一种具体实施方式中,请求接收单元101,还用于接收磁盘阵列的读数据访问请求,并确定待读数据的逻辑块地址和数据长度;

地址查询单元,用于利用逻辑块地址和数据长度,查询待读数据的存储位置;

数据读取单元,用于从存储位置中读取待读数据。

在本申请的一种具体实施方式中,数据读取单元,具体用于若存储位置属于硬盘条带,则向硬盘条带发送读数据访问请求,并从硬盘条带中读取待读数据。

在本申请的一种具体实施方式中,数据读取单元,具体用于若存储位置属于瓦记录磁盘条带,则向瓦记录磁盘条带发送读数据访问请求,经过地址转换查找到在瓦记录磁盘条带中的存储位置并读取待读数据。

相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种数据存储方法可相互对应参照。

参见图4所示,该电子设备包括:

存储器332,用于存储计算机程序;

处理器322,用于执行计算机程序时实现上述方法实施例的数据存储方法的步骤。

具体的,请参考图5,图5为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。

电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。

上文所描述的数据存储方法中的步骤可以由电子设备的结构实现。

相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种数据存储方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的数据存储方法的步骤。

该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

技术分类

06120113693683