System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及获取冷热数据,具体涉及一种通过驱动程序拦截监听nvme命令获取冷热数据的方法。
技术介绍
1、固态硬盘(solid state disk或solid state drive,简称ssd),又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。通常用nand flash存数据。nand flash闪存块在写数据之前必须整体擦除,擦除后才能处理追加写。nand flash闪存写入的最小粒度是page(页)。每个闪存块由一系列的页组成,闪存块被擦除时处于空状态(empty),当块内的页全部被写过时,就称这个闪存块满(full)了,闪存块如果满了就不能接收新的写入了,必须整体擦除后,才能接收新的写。
2、固态硬盘的使用寿命与闪存块擦除次数有关系,超过一定擦除次数后,固态硬盘将损坏,无法对数据进行读写。对固态硬盘闪存块进行擦除,将造成闪存块磨损,为此根据数据的访问频率和重要性,将数据分为热数据和冷数据的类别,固态硬盘(ssd)冷热数据的区分可以帮助优化数据存储,提高存储效率和容量利用率。通常的做法是将识别出来的冷热数据存储于不同区域,通过将冷热数据分开存储,可以减少冷数据对热数据读写性能的影响,提供更快的响应时间和更高的吞吐量。此外,固态硬盘的寿命与其擦写操作次数有关。热数据频繁地进行读写操作,而冷数据则很少被改变。将冷热数据分开存储可以降低ssd的擦写操作次数,从而延长其寿命。
3、冷热数据分开存储的关键是冷热数据的区分,可以使用不同的算法和技术通过驱动程序判断和识别热数据,现有技术区分冷热数据是用例
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
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)的映射表内。
...
【专利技术属性】
技术研发人员:沈嘉琦,吴礼优,姜敬青,肖海鹏,
申请(专利权)人:深圳市金胜电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。