本发明涉及数据存储,特别涉及一种用于避免固态硬盘垃圾回收写和host写冲突的方法。
背景技术:
1、传统的固态硬盘垃圾回收机制和写机制是两个独立的流程,垃圾回收机制即将某个block中有效的数据块读出来,然后重新写入到一块新的block,再将原block擦除掉;host写流程即host下发一笔带着逻辑地址的数据,由控制器分配这笔数据逻辑地址相对应的物理地址,再由控制器写入flash中对应的物理地址中。
2、当固态硬盘中某闪存块的旧数据要被改写,首先是重新由host下发一笔数据,这笔数据的逻辑地址已经存在于固态硬盘的映射表内,但是按照nand flash的特性,同一块闪存块无法在没有被擦除的前提下被写入,控制器需要重新分配一块flash的物理地址和这笔数据的逻辑地址对应,然后将这笔数据写入到flash新的物理地址中,再把当前最新的映射关系更新进映射表中,原来旧的物理地址上的数据则等待固态硬盘的垃圾回收机制回收擦除掉。
3、然而由于垃圾回收机制和写流程相互独立,在固态硬盘内进行改写的同时也可能存在进行垃圾回收的操作,此时就有可能出现两者操作同一块逻辑地址,改写的新数据先载入flash对应的物理地址,垃圾回收机制再载入原本的旧数据到flash对应的物理地址中,此时host写的新数据被垃圾回收机制写的旧数据覆盖,映射表被垃圾回收机制写入旧数据的映射关系更新,host再去下发读那部分改写的逻辑地址的命令,读出对应flash物理地址中的数据,会发现这将是原垃圾回收机制写入的那笔旧数据。
技术实现思路
1、本申请通过提供一种用于避免固态硬盘垃圾回收写和host写冲突的方法,解决了现有技术中垃圾回收和改写同一块闪存地址导致的新数据被旧数据覆盖的问题。
2、本申请实施例提供了一种用于避免固态硬盘垃圾回收写和host写冲突的方法,该方法包括:
3、步骤一:在垃圾回收过程中,当数据从闪存(flash)读取至动态随机存取存储器(dram)准备写入时,执行以下操作:
4、(a)在控制器内部的映射表中查找该笔数据的逻辑地址对应的物理地址;
5、(b)判断该逻辑地址对应的物理地址是否已发生变化,以确认该笔数据是否为有效数据;
6、步骤二:在将垃圾回收数据从dram写入闪存后,至更新映射表之前的时间段内,执行以下操作:
7、(a)监控并记录映射表内物理地址发生变化的部分,即发生主机(host)改写的部分;
8、(b)对于已写入闪存的整个目标数据(target数据),在映射表内物理地址发生变化的映射关系中搜索并剔除与目标数据中每一笔数据物理地址相匹配的映射关系;
9、(c)将剔除后的目标数据映射关系更新至映射表中,完成垃圾回收过程。
10、上述实施例的有益效果在于:本方法通过在数据写入dram前和写入flash后两个阶段分别进行有效性判断和映射关系更新,有效避免了因垃圾回收与host改写冲突导致的新数据被旧数据覆盖的问题,提高了闪存存储系统的数据完整性和系统稳定性。
11、在上述实施例基础上,本申请可进一步改进,具体如下:
12、在本申请其中一个实施例中,所述步骤一中的查找和判断操作用于在数据写入dram前确认其有效性,避免无效数据被错误处理。
13、在本申请其中一个实施例中,所述步骤二中的监控和记录操作由存储器内部算法执行,用于统计并记录映射关系的修改动作,以在更新映射表时剔除因host改写而失效的旧数据映射关系。
14、在本申请其中一个实施例中,所述步骤二中的剔除操作具体为:将垃圾回收后已写入闪存的target数据中每一笔数据的物理地址与映射表内记录的修改记录进行比对,若命中,则视为旧数据并剔除其映射关系;未命中的部分则保留并更新至映射表中。
15、本申请实施例还提供了一种采用上述方法的装置,包括:映射关系监测模块、dram写入控制模块和flash写入后映射更新模块,其中:
16、映射关系监测模块用于实时监测映射表中逻辑地址与物理地址的对应关系变化;
17、dram写入控制模块根据映射关系监测模块的结果,控制垃圾回收过程中数据对dram的写入操作;
18、flash写入后映射更新模块在垃圾回收数据写入flash后,根据映射关系监测模块的结果,判断剔除已发生变化的映射关系,并更新映射表。
19、本申请实施例还提供了一种采用上述方法的系统,包括闪存、动态随机存取存储器、控制器及映射表,所述控制器采用如上述所述的方法,以避免在垃圾回收过程中新数据被旧数据覆盖。
1.一种用于避免固态硬盘垃圾回收写和host写冲突的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于:所述数据写入dram前的映射关系检查步骤包括:检查该数据逻辑地址对应的物理地址在所述映射表中是否已发生变化,若发现物理地址已发生变化,则取消该数据对所述dram的写入操作;若物理地址未发生变化,则正常执行写入所述dram的操作。
3.根据权利要求1所述的方法,其特征在于:所述整包目标数据写入flash后映射关系更新的有效性判断步骤包括:监控并记录所述映射表中逻辑地址对应的物理地址的变更情况,遍历准备更新的映射关系,对于每一个映射关系,检查其逻辑地址对应的物理地址是否已发生变化,并据此剔除已发生变化的映射关系的更新。
4.根据权利要求3所述的方法,其特征在于,所述监控并记录映射表中逻辑地址对应的物理地址的变更情况操作由存储器内部算法执行,用于统计并记录映射关系的修改动作。
5.根据权利要求3所述的方法,其特征在于,所述剔除已发生变化的映射关系的更新操作具体为:将垃圾回收后已写入闪存的所述整包目标数据中每一笔数据的物理地址与映射表内记录的修改记录进行比对,若命中,则视为旧数据并剔除其映射关系;未命中的部分则保留并更新至所述映射表中。
6.一种用于避免固态硬盘垃圾回收写和host写冲突的装置,其特征在于:采用如权利要求1-5任一所述的方法,还包括:映射关系监测模块、dram写入控制模块和flash写入后映射更新模块,其中:
7.一种用于避免固态硬盘垃圾回收写和host写冲突的系统,其特征在于:采用如权利要求1-5任一所述的方法,还包括闪存、动态随机存取存储器、控制器及映射表,所述控制器采用如权利要求1-5任一所述的方法,以避免在垃圾回收过程中新数据被旧数据覆盖。