本发明涉及固态硬盘(ssd)垃圾回收领域,具体涉及一种带有碎片整理功能的固态存储垃圾回收方法。
背景技术:
1、固态硬盘(ssd)由于其高速读写、低功耗、无噪音等优点,广泛应用于计算机和移动设备。然而,由于ssd中ftl算法映射的异地更新策略,当用户长时间进行多任务等操作后会导致数据碎片化,进而降低ssd的性能和寿命。传统的垃圾回收机制虽然能够回收已删除数据的空间,但长时间多任务并行写入及增量写入等操作,对固态硬盘来说相同的逻辑地址对应到不同的物理地址,逻辑地址的局部性将被破坏,当碎片累积后相同的主机io请求ssd内部将产生更多的软件消耗及更多nand flash操作,造成性能降低且延迟变长,由此可见,传统碎片整理带来的写放大不能对碎片化的数据进行高效整理。
技术实现思路
1、本发明目的是提供一种带有碎片整理功能的ssd垃圾回收方法及设备,将碎片整理算法结合垃圾回收,提高了在长期使用之后的顺序读取性能。
2、本发明为实现上述目的,通过以下技术方案实现:
3、一种带有碎片整理功能的固态存储垃圾回收方法,包括步骤:
4、碎片识别;
5、建立垃圾回收策略,根据有效数据权重和碎片化权重对碎片化的数据块重新整理排布决定回收数据块的顺序;
6、建立碎片整理策略,开启碎片整理后按照物理页顺序进行待回收数据块有效数据读取,并读取有效数据对应的逻辑地址,将该页逻辑地址缺失的部分,按照逻辑地址读取映射表,获得物理地址并读取,数据收集完毕后写入到垃圾回收的待回收数据块;
7、动态学习:通过学习用户的使用模式和行为,不断优化碎片整理算法和垃圾回收策略。
8、具体的垃圾回收策略为,根据物理块得分进行优先回收物理块的挑选,物理块得分=有效df数*有效数据权重+(1/(碎片化程度值+命令放大系数))*碎片化权重,其中有效数据权重+碎片化权重=100,碎片化权重随读操作命令放大系数增大而增大,命令放大系数是读操作发送到后端命令的放大系数。
9、优选的,碎片化程度值的计算方式为:按照每个物理页逻辑地址连续性进行计算,不连续的df个数即为碎片化程度值。
10、优选的,命令放大系数的计算方式为:当io请求是读操作时,记录bs大小及发送到后端的命令数,定义全部连续且对齐的状态下发送后端命令数为com_0,定义不连续状态下发送后端命令数为com_df,命令放大系数=com_df/com_0。
11、优选的,碎片整理策略为,在空闲块数量不足需要进行垃圾回收来释放空闲块时,如果碎片化程度低或io压力大,则关闭碎片整理,按照传统方式挑选优先回收的物理块;否则根据物理块得分进行优先回收物理块的挑选。
12、优选的,碎片整理策略还包括判定当前逻辑地址是否是写热数据,如果是,则不进行碎片整理;如果当前逻辑地址是读热数据、读冷数据或写冷数据,则开启碎片整理。
13、权重的取值通常为,当ssd性能降低时减小碎片化权重,当io压力小时,提升碎片化权重。
14、优选的,碎片化权重范围为10-30。
15、具体的,当无效df值小于等于2时,为碎片化程度低,大于2为碎片化程度高;当运行超过一半负荷时,为io压力大,不到或等于一半负荷时,为io压力小。
16、本发明还公开了一种带有碎片整理功能的固态存储垃圾回收设备,包括:
17、至少一个处理器,以及与至少一个处理器通信连接的存储器;
18、其中,存储器存储有可被所述至少一个处理器执行的指令,指令被所述至少一个处理器执行,以使至少一个处理器能够执行上述方法之一。
19、本发明的优点在于:提供了一种带有碎片整理功能的ssd垃圾回收方法及设备,通过碎片整理算法和智能垃圾回收策略的综合应用,显著提升了ssd的性能和寿命,为ssd技术的进一步发展和应用带来了新的可能性。通过本发明,ssd设备在进行垃圾回收时,不仅能够高效地回收已删除数据的空间,更重要的是能够对碎片化的数据进行整理,提高数据的连续性,从而显著提升ssd的读写性能和寿命。另外,智能垃圾回收策略还能进一步减少垃圾回收对性能造成的干扰,增强用户体验。
1.一种带有碎片整理功能的固态存储垃圾回收方法,其特征在于,包括步骤:
2.根据权利要求1所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,所述垃圾回收策略为,根据物理块得分进行优先回收物理块的挑选,物理块得分=有效df数*有效数据权重+(1/(碎片化程度值+命令放大系数))*碎片化权重,其中有效数据权重+碎片化权重=100,碎片化权重随读操作命令放大系数增大而增大,命令放大系数是读操作发送到后端命令的放大系数。
3.根据权利要求2所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,所述碎片化程度值的计算方式为:按照每个物理页逻辑地址连续性进行计算,不连续的df个数即为碎片化程度值。
4.根据权利要求2所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,所述命令放大系数的计算方式为:当io请求是读操作时,记录bs大小及发送到后端的命令数,定义全部连续且对齐的状态下发送后端命令数为com_0,定义不连续状态下发送后端命令数为com_df,命令放大系数=com_df/com_0。
5.根据权利要求2所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,所述碎片整理策略为,在空闲块数量不足需要进行垃圾回收来释放空闲块时,如果碎片化程度低或io压力大,则关闭碎片整理,按照传统方式挑选优先回收的物理块;否则根据物理块得分进行优先回收物理块的挑选。
6.根据权利要求1所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,所述碎片整理策略还包括判定当前逻辑地址是否是写热数据,如果是,则不进行碎片整理;如果当前逻辑地址是读热数据、读冷数据或写冷数据,则开启碎片整理。
7.根据权利要求1所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,当ssd性能降低时减小碎片化权重,当io压力小时,提升碎片化权重。
8.根据权利要求1所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,所述碎片化权重范围为10-30。
9.根据权利要求5或7所述带有碎片整理功能的固态存储垃圾回收方法,其特征在于,当碎片化程度值小于等于2时,为碎片化程度低,大于2为碎片化程度高;当运行超过一半负荷时,为io压力大,不到或等于一半负荷时,为io压力小。
10.一种带有碎片整理功能的固态存储垃圾回收设备,其特征在于,包括: