【技术实现步骤摘要】
一种适用于ZNS SSD写放大优化的数据放置方法和系统
[0001]本专利技术属于计算机存储
,更具体地,涉及一种适用于ZNS SSD写放大优化的数据放置方法和系统。
技术介绍
[0002]近年来,随着互联网数据的爆炸式增长,越来越多的用户和企业选择将数据存放至云端。其中,云块存储系统以“块”为粒度管理用户数据,为提高系统的可用性和可靠性,在将用户数据写入分区命名空间固态硬盘(ZonedNamespacesolidstatedisk,简称ZNS SSD)中时,需要对这些数据进行冷热归类和分区放置,以减少垃圾回收过程中的数据迁移。
[0003]现有的数据放置方法主要有默认放置法、基于机器学习分类模型的放置方法、以及基于文件语义的放置方法等;其中默认放置法十分简单,不对数据块做任何处理,按顺序依次写入硬盘中;基于机器学习分类模型的放置方法普遍采用了聚类算法来对数据块进行分类,再将相同类别的数据写入同一区域中,例如:MLDC方法利用K
‑
means算法借助逻辑地址、请求大小、历史写入频率、新旧程度四个特征对数据块进行聚类,然后借助CART算法生成决策树作为分类器,对数据块进行分类;基于文件语义的放置方法借助文件系统对文件本身附加的属性信息来对文件进行分类,或是利用应用程序的上下文信息,例如:PCStream方法根据应用程序写入数据时所遵循的特定执行路径来对数据进行分类。
[0004]然而,上述数据放置方法均存在一些无法忽视的缺陷:第一、默认放置法并未区分冷热数据,会频繁触发垃圾回收操 ...
【技术保护点】
【技术特征摘要】
1.一种适用于ZNS SSD写放大优化的数据放置方法,其特征在于,包括以下步骤:(1)从测试数据集获取以字节为单位的输入输出(Input/output,简称IO)数据,将该IO数据转化为以块为单位的N个数据块;(2)设置计数器cnt_uw=1;(3)判断步骤(1)中得到的N个数据块中第cnt_uw个数据块对应的元数据信息是否存在于内存中,如果是则进入步骤(5),否则进入步骤(4);其中元数据信息包括步骤(1)中得到的N个数据块中第cnt_uw个数据块对应的LBA区间,用户写次数freq
uw
,垃圾回收写次数freq
gw
,以及该数据块对应的LBA区间内的数据上一次被修改时的全局计数器的值gt
pre
。(4)对步骤(1)中得到的N个数据块中的第cnt_uw个数据块执行新用户写操作,在内存中新增该数据块的元数据信息,并将该数据块的元数据信息中的用户写次数freq
uw
和垃圾回收写次数freq
gw
初始化为0,同时将该数据块的块寿命值设置为2
64
‑
1;(5)对步骤(1)中得到的N个数据块中的第cnt_uw个数据块执行用户写操作,以得到该数据块的块寿命值;(6)从内存中获取每个分区的无效数据量data
inv
和总数据量data
zone
,并根据无效数据量data
inv
和总数据量data
zone
获取该分区的无效数据占比gp、以及内存中全部M个分区整体的无效数据占比gp
all
;(7)判断步骤(6)中得到的全部M个分区整体的无效数据占比gp
all
是否大于全局垃圾回收阈值,如果是则进入步骤(8),否则进入步骤(14);(8)利用垃圾回收算法(Cost
‑
benefit
‑
enhanced,简称CBE)从内存中的全部M个分区中选择待进行垃圾回收操作的分区;(9)设置计数器cnt_gw=1;(10)判断步骤(8)选择的待进行垃圾回收操作的分区中的第cnt_gw个数据块是否有效,如果是则进入步骤(11),否则进入步骤(12);(11)对步骤(8)选择的待进行垃圾回收操作的分区中的第cnt_gw个数据块执行垃圾回收写操作,以修改其部分元数据信息,并将修改元数据信息后的该数据块迁移至内存中其他未写满的分区中;(12)判断cnt_gw是否等于步骤(8)选择的待进行垃圾回收操作的分区中的数据块总数,若是则进入步骤(13),否则将cnt_gw设置为cnt_gw+1,并返回步骤(10);(13)重置步骤(8)选择的待进行垃圾回收操作的分区,删除该分区中的无效数据,并返回步骤(7);(14)针对步骤(1)中得到的N个数据块中的第cnt_uw个数据块而言,根据该数据块的垃圾回收写次数freq
gw
和用户写次数freq
uw
、分区寿命队列、以及块寿命值获取该数据块的最终热度值,并将该数据块写入其最终热度值对应的分区中;(15)判断cnt_uw是否等于步骤(1)切分后的数据块数量N,若是则过程结束,否则将cnt_uw设置为cnt_uw+1,并返回步骤(3)。2.根据权利要求1所述的适用于ZNS SSD写放大优化的数据放置方法,其特征在于,步骤(5)包括以下子步骤:(5
‑
1)在内存中获取当前全局计数器的值gt和步骤(1)中得到的N个数据块中的第cnt_uw个数据块对应的LBA区间内的数据在上次被修改时全局计数器的值gt
pre
,并根据值gt和
gt
pre
获取该数据块的块寿命值BILT;本步骤中采用的公式如下:BILT=gt
‑
gt
pre
(5
‑
2)将步骤(1)中得到的N个数据块中的第cnt_uw个数据块的元数据信息中的用户写次数freq
uw
设置为freq
uw
+1,同时将该数据块对应的LBA区间内的数据在上次被修改时的全局计数器的值gt
pre
设置为当前全局计数器的值gt,并将当前全局计数器的值gt设置为gt+1。3.根据权利要求1或2所述的适用于ZNS SSD写放大优化的数据放置方法,其特征在于,步骤(6)是采用以下公式:步骤(6)是采用以下公式:4.根据权利要求1至3中任意一项所述的适用于ZNS SSD写放大优化的数据放置方法,其特征在于,步骤(8)包括以下步骤:(8
‑
1)设置计数器cnt_zone=1;(8
‑
2)判断内存中的全部M个分区中的第cnt_zone个分区是否已被写满,如果是则进入步骤(8
‑
3),否则进入步骤(8
‑
4)(8
‑
3)在内存中获取全部M个分区中的第cnt_zone个分区被写满时的全局计数器的值gt
fulled
,并结合步骤(6)中得到的该分区的无效数据占比gp以及当前全局计数器的值gt,获取该分区的分区寿命值t
zone
以及收益值cb,然后进入步骤(8
‑
4);(8
‑
4)判断cnt_zone是否等于M,若是则进入步骤(8
‑
5),否则将cnt_zone设置为cnt_zone+1,并返回步骤(8
‑
2);(8
‑
5)对步骤(8
‑
3)中得到的内存中全部M个分区的收益值按照从大到小的顺序进行排序,并获取收益值最大的分区作为待进行垃圾回收操作的分区;(8
‑
6)将步骤(8
‑
5)中得到的收益值最大的分区的分区寿命值t
zone
添加进内存中该分区对应类型的分区寿命队列中。5.根据权利要求4所述的适用于ZNS SSD写放大优化的数据放置方法,其特征在于,步骤(8
‑
3)是采用以下公式:t
zone
=gt
‑
gt
fulled
6.根据权利要求5所述的适用于ZNS SSD写放大优化的数据放置方法,其特征在于,分区寿命队列为先入先出FIFO队列,分区寿命队列的数量为内存中分区类型的数量L,对应ZNS SSD能够同时开放的最大分区数量。7.根据权利要求6所述的适用于ZNS SSD写放大优化的数据放置方法,其特征在于,步骤(11)包括以下步骤:(11
‑
1)在内存中获取当前全局计数器的值gt和步骤(8)选择...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。