本发明涉及固态硬盘,特别是涉及一种dram-less固态硬盘的映射表双重更新实现方法、装置、计算机设备和存储介质。
背景技术:
1、dram-less ssd能够缓存的映射表较小,当脏的映射表缓存超过阈值就需要将脏映射写入nand以保障系统有足够的干净映射缓存可用。对于大范围随机写场景,需要访问的映射表不能全部加载到ram,对于映射表没有加载的情形,通常会将写入过程新生成映射做临时缓存,然后批量从nand加载映射分片并与临时映射缓存合并后回写到nand,以减少映射表写入量,来提升大范围随机写性能。
2、然而,在现有技术中对于大范围随机读写混合场景,读命令会提前触发映射表的合并并生成脏的映射表,进而导致期望通过批量合映射回写nand,以降低映射表写入量的策略失效。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种dram-less固态硬盘的映射表双重更新实现方法、装置、计算机设备和存储介质。
2、一种dram-less固态硬盘的映射表双重更新实现方法,所述方法包括:
3、获取写请求并为所述写请求分配物理地址,判断所述写请求对应的映射表是否已加载;
4、若已加载则新生成的映射既会记录到映射临时缓存也会更新到映射表,但不会将映射表标记为脏,若未加载则记录映射表到临时映射缓存并判断临时映射缓存是否已满;
5、若所述临时映射缓存已满则触发临时映射缓存合并再将数据写入nand,若所述临时映射缓存未满则直接将数据写入nand;
6、获取读请求,判断所述读请求对应的映射表是否已加载;
7、若未加载则从nand加载映射表分片并检查临时映射缓存是否为空;
8、若临时映射缓存为空则遍历临时映射,将属于当前映射表分片的临时映射进行合并,同时并不删除临时映射也不标记映射分片为脏。
9、在其中一个实施例中,在所述若临时映射缓存为空则遍历临时映射,将属于当前映射表分片的临时映射进行合并,同时并不删除临时映射也不标记映射分片为脏的步骤之后还包括:
10、查询映射表获取物理地址,从nand读取数据。
11、在其中一个实施例中,所述方法还包括:
12、遍历全部临时映射,判断临时映射对应的映射分片是否已加载;
13、若对应的映射分片已加载,则标记映射分片为脏,同时删除所述映射分片对应的全部临时映射;
14、若对应的映射分片未加载,则从nand加载对应的映射分片,将属于所述映射分片的临时映射全部合并到映射分片,待合并完成后删除所述映射分片的临时映射并标记所述映射分片为脏。
15、在其中一个实施例中,所述方法还包括:
16、若全部映射分片都为脏,则需要先将脏映射分片存储到nand释放出干净映射分片。
17、一种dram-less固态硬盘的映射表双重更新实现装置,所述装置包括:
18、写请求处理模块,所述写请求处理模块用于获取写请求并为所述写请求分配物理地址,判断所述写请求对应的映射表是否已加载;若已加载则新生成的映射既会记录到映射临时缓存也会更新到映射表,但不会将映射表标记为脏;若未加载则记录映射表到临时映射缓存并判断临时映射缓存是否已满;若所述临时映射缓存已满则触发临时映射缓存合并再将数据写入nand,若所述临时映射缓存未满则直接将数据写入nand;
19、读请求处理模块,所述读请求处理模块用于获取读请求,判断所述读请求对应的映射表是否已加载;若未加载则从nand加载映射表分片并检查临时映射缓存是否为空;若临时映射缓存为空则遍历临时映射,将属于当前映射表分片的临时映射进行合并,同时并不删除临时映射也不标记映射分片为脏。
20、在其中一个实施例中,所述读请求处理模块还用于:
21、查询映射表获取物理地址,从nand读取数据。
22、在其中一个实施例中,所述装置还包括映射合并模块,所述映射合并模块用于:
23、遍历全部临时映射,判断临时映射对应的映射分片是否已加载;
24、若对应的映射分片已加载,则标记映射分片为脏,同时删除所述映射分片对应的全部临时映射;
25、若对应的映射分片未加载,则从nand加载对应的映射分片,将属于所述映射分片的临时映射全部合并到映射分片,待合并完成后删除所述映射分片的临时映射并标记所述映射分片为脏。
26、在其中一个实施例中,所述装置还包括映射释放模块,所述映射释放模块用于:
27、若全部映射分片都为脏,则需要先将脏映射分片存储到nand释放出干净映射分片。
28、一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
29、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
30、上述dram-less固态硬盘的映射表双重更新实现方法、装置、计算机设备和存储介质,可以有效地避免在读写混合场景中,映射表提前与临时映射合并生成脏映射表的情形。对于映射表已加载的场景,新生成的映射既会记录到临时缓存,也会更新到映射表,但不会将映射表标记为脏;只有当临时映射缓存满了之后,才进行一次完整映射表合并操作,在此次合并过程才会生成脏的映射表分片,并在合并完成后删除全部临时映射。如此可以极大减少映射表的存储,大幅提升大范围随机读写混合性能。
1.一种dram-less固态硬盘的映射表双重更新实现方法,所述方法包括:
2.根据权利要求1所述的dram-less固态硬盘的映射表双重更新实现方法,其特征在于,在所述若临时映射缓存为空则遍历临时映射,将属于当前映射表分片的临时映射进行合并,同时并不删除临时映射也不标记映射分片为脏的步骤之后还包括:
3.根据权利要求2所述的dram-less固态硬盘的映射表双重更新实现方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的dram-less固态硬盘的映射表双重更新实现方法,其特征在于,所述方法还包括:
5.一种dram-less固态硬盘的映射表双重更新实现装置,其特征在于,所述装置包括:
6.根据权利要求5所述的dram-less固态硬盘的映射表双重更新实现装置,其特征在于,所述读请求处理模块还用于:
7.根据权利要求6所述的dram-less固态硬盘的映射表双重更新实现装置,其特征在于,所述装置还包括映射合并模块,所述映射合并模块用于:
8.根据权利要求7所述的dram-less固态硬盘的映射表双重更新实现装置,其特征在于,所述装置还包括映射释放模块,所述映射释放模块用于:
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。