System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 通过驱动程序拦截监听NVMe命令获取冷热数据方法与系统技术方案_技高网

通过驱动程序拦截监听NVMe命令获取冷热数据方法与系统技术方案

技术编号:40781173 阅读:5 留言:0更新日期:2024-03-25 20:25
本发明专利技术公开一种通过驱动程序拦截监听NVMe命令获取冷热数据方法,涉及获取冷热数据领域,包括:创建热数据统计表;加载热数据驱动,获取主机命令;判断是否有需要直接设置热数据的应用模块;从直接设置热数据应用模块中解析数据,将热数据特殊标记值插入热数据统计表;判断拦截监听命令是否为NVMe命令;解析NVMe命令数据中的write命令信息;判断write命令信息中的时间间隔是否小于热数据读写阈值时间;将write命令中的逻辑块地址记录计数值加1更新至热数据统计表中;将热数据统计表中time字段时间戳更新为监听时间。通过内核模块中的钩子函数来监听和拦截NVMe命令来处理分析冷热数据的筛选和预测,继而向固件发送解析到的冷热数据信息。

【技术实现步骤摘要】

本专利技术涉及获取冷热数据,具体涉及一种通过驱动程序拦截监听nvme命令获取冷热数据的方法。


技术介绍

1、固态硬盘(solid state disk或solid state drive,简称ssd),又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。通常用nand flash存数据。nand flash闪存块在写数据之前必须整体擦除,擦除后才能处理追加写。nand flash闪存写入的最小粒度是page(页)。每个闪存块由一系列的页组成,闪存块被擦除时处于空状态(empty),当块内的页全部被写过时,就称这个闪存块满(full)了,闪存块如果满了就不能接收新的写入了,必须整体擦除后,才能接收新的写。

2、固态硬盘的使用寿命与闪存块擦除次数有关系,超过一定擦除次数后,固态硬盘将损坏,无法对数据进行读写。对固态硬盘闪存块进行擦除,将造成闪存块磨损,为此根据数据的访问频率和重要性,将数据分为热数据和冷数据的类别,固态硬盘(ssd)冷热数据的区分可以帮助优化数据存储,提高存储效率和容量利用率。通常的做法是将识别出来的冷热数据存储于不同区域,通过将冷热数据分开存储,可以减少冷数据对热数据读写性能的影响,提供更快的响应时间和更高的吞吐量。此外,固态硬盘的寿命与其擦写操作次数有关。热数据频繁地进行读写操作,而冷数据则很少被改变。将冷热数据分开存储可以降低ssd的擦写操作次数,从而延长其寿命。

3、冷热数据分开存储的关键是冷热数据的区分,可以使用不同的算法和技术通过驱动程序判断和识别热数据,现有技术区分冷热数据是用例如数据的访问频率、时间戳等进行判断。如现有技术中公开的专利文献“cn116225334a,一种冷热数据存储方法、装置以及介质”,该专利文献公开的技术为在接收到写命令时,获取当前固态硬盘的时间戳;将时间戳和写命令对应的逻辑区块地址以及写命令中的用户数据一起保存;查询逻辑区块地址冷热属性表以获取用户数据的冷热属性;根据冷热属性将用户数据存入对应的存储位置。

4、利用固态硬盘的时间戳和用户数据来区分冷热数据不够准确,是本领域技术人员亟待解决的问题。


技术实现思路

1、本专利技术旨在至少解决现有技术中存在的技术问题之一。为此,本专利技术实施例提出一种通过驱动程序拦截监听nvme命令获取冷热数据的方法,本方法通过驱动程序通过拦截函数去获取nvme命令并解析,从而获得包括lba(逻辑块地址)范围、操作类型(读或写)、操作大小等记录表,准确实现热数据的标记和系统冷热数据的区分。

2、根据本专利技术的第一方面实施例的一种通过驱动程序拦截监听nvme命令获取冷热数据的方法,所述方法步骤包括:

3、s0:创建热数据统计表,包括time、count、flag、pre_flag、special_flag、data:lba,block,size字段;

4、s1:加载热数据驱动,获取主机命令;

5、s2:判断主机命令中是否有需要直接设置热数据的应用模块,若有转至s3,若无在则转至s5;

6、s3:从直接设置热数据应用模块中解析数据,将热数据特殊标记设置为true;

7、s4:将热数据特殊标记值插入热数据统计表;

8、s5:拦截监听命令(nvme)并判断拦截监听命令是否为nvme命令,若否转至s6,若是转至s7;

9、s6:结束拦截监听命令;

10、s7:解析nvme命令中的数据;

11、s8:获取nvme命令数据中的write命令信息;

12、s9:判断write命令信息中的时间间隔是否小于热数据读写阈值时间,若是转至s10若否转至s17;

13、s10:将write命令中的逻辑块地址记录计数值加1更新至热数据统计表中;

14、s11:将热数据统计表中time字段时间戳更新为监听时间;

15、s12:内部函数根据热数据统计表中count数获取热数据;

16、s13:判断count数较高的数据是否小于预设阀值数据,若是转至s14,若否转至s16;

17、s14:根据热数据统计表中block数据大小重新排序;

18、s15:设置热数据统计表中pre_flag值为真,更新热数据统计表;

19、s16:将lba被监听次数多的次数的平均值前10%~20%数据flag设置为true,标记为热数据,更新更新热数据统计表;

20、s17:将write命令中的逻辑块地址记录计数值count设置为1;

21、s18:判断热数据统计表中flag是否为true,若是转至s19,若否转至s12;

22、s19:设置热数据统计表中flag为false,pre_flag=true,转至s12。

23、进一步地,所述预设阀值数据为条件为:pre_flag为true且flag为false的数据。

24、进一步地,所述热数据读写阈值时间为ssd磁盘整盘读写时获取平均时长的数据,包括写数据至磁盘时间和读磁盘数据时间。

25、进一步地,所述热数据读写阈值时间映射存至ssd的hard id与读写d(w),d(r)的映射表内。

26、进一步地,所述热数据占比范围为ssd磁盘整盘读写时lba被监听次数的平均值10%~20%,作为其热数据占比范围。

27、进一步地,所述热数据占比范围存至ssd的hard id与n(w),n(r)的映射表内。

28、进一步地,所述热数据统计表,存储在内存或寄存器中。

29、根据本专利技术实施例的通过驱动程序拦截监听nvme命令获取冷热数据方法,至少具有如下

30、有益效果:

31、通过内核模块中的钩子函数来监听和拦截nvme命令来处理分析冷热数据的筛选和预测,继而向固件发送解析到的冷热数据信息。将冷热数据分开存储可以降低ssd的擦写操作次数,从而延长其寿命。

32、本专利技术实施例还提出一种通过驱动程序拦截监听nvme命令获取冷热数据系统,包括:

33、热数据驱动模块、数据解析模块、热数据统计表模块、nvme命令解析模块、控制器;

34、所述热数据驱动模块:用于获取、解析主机命令数据;

35、所述数据解析模块:用于解析主机命令、nvme命令中的热数据;

36、所述热数据统计表模块,执行权利要求1至权利要求7所述方法,将热数据状态更新至热数据统计表中,由控制器执行冷热数据处理。

37、根据本专利技术第二方面实施例的通过驱动程序拦截监听nvme命令获取冷热数据系统,至少具有如下有益效果:

38、通过内核模块中的钩子函数来监听和拦截nvme命令来处理分析冷热数据的筛选和预测,继而向固件发送解析到的冷热数据信息。将冷热数据分开存储可以降低ssd的擦写操作次数,从而延长其寿命。

39、本专利技术的附加方面和优点本文档来自技高网...

【技术保护点】

1.一种通过驱动程序拦截监听NVMe命令获取冷热数据方法,其特征在于,所述方法步骤包括:

2.根据权利要求1所述的通过驱动程序拦截监听NVMe命令获取冷热数据方法,所述预设阀值数据为条件为:pre_flag为true且flag为false的数据。

3.根据权利要求1所述的通过驱动程序拦截监听NVMe命令获取冷热数据方法,所述热数据读写阈值时间为SSD磁盘整盘读写时获取平均时长的数据,包括写数据至磁盘时间和读磁盘数据时间。

4.根据权利要求3所述的通过驱动程序拦截监听NVMe命令获取冷热数据方法,所述热数据读写阈值时间映射存至SSD的hard id与读写d(w),d(r)的映射表内。

5.根据权利要求1所述的通过驱动程序拦截监听NVMe命令获取冷热数据方法,所述热数据占比范围为SSD磁盘整盘读写时lba被监听次数的平均值10%~20%,作为其热数据占比范围。

6.根据权利要求5所述的通过驱动程序拦截监听NVMe命令获取冷热数据方法,所述热数据占比范围存至SSD的hard id与n(w),n(r)的映射表内。

7.根据权利要求1所述的通过驱动程序拦截监听NVMe命令获取冷热数据方法,所述热数据统计表,存储在内存或寄存器中。

8.一种通过驱动程序拦截监听NVMe命令获取冷热数据系统,其特征在于,包括:热数据驱动模块、数据解析模块、热数据统计表模块、NVMe命令解析模块、控制器;

...

【技术特征摘要】

1.一种通过驱动程序拦截监听nvme命令获取冷热数据方法,其特征在于,所述方法步骤包括:

2.根据权利要求1所述的通过驱动程序拦截监听nvme命令获取冷热数据方法,所述预设阀值数据为条件为:pre_flag为true且flag为false的数据。

3.根据权利要求1所述的通过驱动程序拦截监听nvme命令获取冷热数据方法,所述热数据读写阈值时间为ssd磁盘整盘读写时获取平均时长的数据,包括写数据至磁盘时间和读磁盘数据时间。

4.根据权利要求3所述的通过驱动程序拦截监听nvme命令获取冷热数据方法,所述热数据读写阈值时间映射存至ssd的hard id与读写d(w),d(r)的映射表内。

...

【专利技术属性】
技术研发人员:沈嘉琦吴礼优姜敬青肖海鹏
申请(专利权)人:深圳市金胜电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1