利用数据不同特征延长SSD寿命的方法、装置、设备及介质


利用数据不同特征延长ssd寿命的方法、装置、设备及介质
技术领域
1.本发明属于ssd数据存储技术领域,更具体地,涉及一种利用数据不同特征延长ssd寿命的方法、装置、设备及介质。


背景技术:



2.3d nand闪存是目前广泛应用的存储设备,它的性能和可靠性是当前人们重点关注的问题。在固态硬盘(solid state drives,ssd)中,存在一种叫读干扰的电路级噪声,造成读干扰的主要原因是读积累,当读取块的次数过多时,这种操作会严重干扰块的电压分布。因此,当块中存在读干扰时,nand闪存读取一个页面的时间可能要长好几倍甚至永久丢失这个被干扰的页面。在ssd中有一个叫读重写的操作,它类似于gc操作,即对一个被严重干扰的块进行擦除操作,如果这个被干扰的块中有有效的数据,那么有效的数据必须被写入一个新的空闲块。这些擦除操作会延长ssd的响应时间、增加写放大、并缩短服务寿命。目前传统的读干扰管理技术主要有固件级纠正和设备级管理两种方式,固件级纠正是指降低数据块的读取电压,以此来减少读干扰,设备级管理是指通过对数据的放置方式进行管理,减少每个块的读取干扰。实验证明,将读重写产生的回写数据(默认回写数据大部分都是热读数据)分散到多个数据块中,并与其它用户写数据结合,可以在一定程度上减少读重写的次数,延长ssd的寿命并缩短ssd的反应时间,以此来提高ssd的性能和保证ssd的可靠性。


技术实现要素:



3.本发明的目的是为了解决现有技术中的上述缺陷,提供一种利用数据不同特征延长ssd寿命的方法、装置、计算机设备及存储介质。
4.本发明的第一个目的可以通过采取如下技术方案达到:
5.一种利用数据不同特征来延长ssd寿命的方法,应用于由存在块读干扰而需要对块数据进行擦除重写的固态硬盘中,以下固态硬盘简称ssd中,所述方法包括以下步骤:
6.s1、在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块;
7.s2、当第一或第二写边界块中填充的数据达到事先设置的阈值之后,将第一或第二写边界块放到数据写入池,如果数据写入池中已经填满数据块,则轮询数据写入池中的数据块并出读取次数最少的数据块,如果这个数据块的被读取次数比达到阈值的第一或第二写边界块的被读取次数多,则将当前第一或第二写边界块与数据写入池中的这个数据块进行调换,即当前第一或第二写边界块进入数据写入池,而置换出来的数据块成为当前第一或第二写边界块;
8.s3、根据数据写入池中的块数量动态调整写边界块的数据填充阈值,假设数据写入池中有n个数据块,则第一写边界块中用户写数据的阈值就为数据块容量的(n

1)/n,预留1/n的空闲空间,当第一写边界块中的用户写数据达到阈值后执行步骤s2,预留的1/n的
空闲空间用来存放读重写数据;同样的,第二写边界块中的读重写数据的比例为数据块容量的1/n,预留(n

1)/n的空闲空间,即第一写边界块和第二写边界块中读重写数据占数据块空间的比例始终为数据写入池中数据块数量的倒数;
9.s4、当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则执行步骤s2;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将该写满了的数据块驱离数据写入池,并执行步骤s3;
10.s5、当读重写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将读重写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并执行步骤s3;如果数据写入池中都是预填充了读重写数据的数据块,判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中,如果达到了则直接写入数据写入池。
11.进一步地,所述步骤s4过程如下:
12.s41、轮询数据写入池中的数据块,寻预先填充了读重写数据并且读取次数最少的数据块,如果可以到,则转入步骤s42,如果不能到,则转入步骤s43;
13.s42、直接将用户写数据写入寻到的数据块中;
14.s43、将用户写数据写入第一写边界块中,如果刚好达到第一写边界块的阈值,则判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则转入步骤s44,如果达到了则转入步骤s45;
15.s44、将当前第一写边界块放入数据写入池中,到空闲块池中随机取一个空闲块成为新的第一写边界块;
16.s45、到数据写入池中轮询出一个读次数最大的块与当前第一写边界块进行比较,如果当前第一写边界块的读取次数较少,则将当前第一写边界块与数据写入池中的这个数据块进行置换,即当前第一写边界块进入数据写入池,而置换出来的数据块成为当前第一写边界块。
17.进一步地,所述步骤s5过程如下:
18.s51、轮询数据写入池中的数据块,寻预先填充了用户写数据并且读取次数最少的数据块,如果可以到,则转入步骤s52,如果不能到,则转入步骤s53;
19.s52、直接将读重写数据写入寻到的数据块中;
20.s53、判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则转入步骤s54,如果达到了则转入步骤s55;
21.s54、将读重写数据写入第二写边界块中,如果刚好达到了第二写边界块的阈值,则将当前第二写边界块放入数据写入池中,到空闲块池中随机取一个空闲块成为新的第二写边界块;
22.s55、到数据写入池中轮询出一个读次数最小的数据块,直接将读重写数据写入这个数据块中,如果这个数据块刚好写满,则将其驱离数据写入池,并执行步骤s3。
23.进一步地,所述第一写边界块中用户写数据的填充阈值γ1=(n

1)/n,n为数据写
入池中的块数量。通过预先在第一写边界块中填充大量用户写数据,可以提高步骤s4中预测数据块未来的读取次数的准确性。
24.进一步地,所述第二写边界块中读重写数据的填充阈值γ2=1/n,n为数据写入池中的块数量。将读重写数据分散到多个数据块中,可以减少单个数据块的读干扰,将读干扰均匀分布到读次数较少的数据块中。
25.进一步地,所述数据写入池中为数据块容量设置一个容量初始值和容量最大值,当数据块数量小于容量初始值时,所述第一写边界块和第二写边界块中填充阈值的n都设置为容量初始值;当数据块数量大于等于初始值时,所述第一写边界块和第二写边界块中填充阈值的n即为当前数据写入池中的块数量。
26.进一步地,所述步骤s4中,从数据写入池中轮询出一个读取次数最少的数据块时,如果有多个数据块具有相同的读取次数,则选择失效页面较多的数据块。失效的页面在未来不会再被读取,假设其它页面的读取频率相近,则失效页面较多的数据块在未来产生的读干扰会更少。
27.进一步地,所述步骤s5中,当数据写入池中都是预填充了读重写数据的数据块时,由于第二写边界块预填充读重写数据的阈值是1/n,当前数据写入池中的数据块会有大量的空闲空间,因此数据写入池中的块数量达到容量初始值时不会继续扩大容量到容量最大值,而是保持当前容量直到数据写入池中的数据块空间填满数据。
28.本发明的第二个目的可以通过采取如下技术方案达到:
29.一种利用数据不同特征延长ssd寿命的装置,所述装置包括:
30.初始化模块,用于在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块;
31.第一数据模块,用于当第一或第二写边界块中填充的数据达到事先设置的阈值之后,将第一或第二写边界块放到数据写入池,如果数据写入池中已经填满数据块,则轮询数据写入池中的数据块并出读取次数最少的数据块,如果这个数据块的被读取次数比达到阈值的第一或第二写边界块的被读取次数多,则将当前第一或第二写边界块与数据写入池中的这个数据块进行调换,即当前第一或第二写边界块进入数据写入池,而置换出来的数据块成为当前第一或第二写边界块;
32.第二数据模块,用于根据数据写入池中的块数量动态调整写边界块的数据填充阈值,假设数据写入池中有n个数据块,则第一写边界块中用户写数据的阈值就为数据块容量的(n

1)/n,预留1/n的空闲空间,当第一写边界块中的用户写数据达到阈值后执行第一数据模块,预留的1/n的空闲空间用来存放读重写数据;同样的,第二写边界块中的读重写数据的比例为数据块容量的1/n,预留(n

1)/n的空闲空间,即第一写边界块和第二写边界块中读重写数据占数据块空间的比例始终为数据写入池中数据块数量的倒数;
33.写数据处理模块,用于当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则执行第一数据模块;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将该写满了的数据块驱离数据写入池,并执行第二数
据模块;
34.读数据处理模块,用于当读重写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将读重写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并执行第二数据模块;如果数据写入池中都是预填充了读重写数据的数据块,判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中,如果达到了则直接写入数据写入池。
35.本发明的第三个目的可以通过采取如下技术方案达到:
36.一种计算机设备,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现上述的利用数据不同特征延长ssd寿命的方法。
37.本发明的第四个目的可以通过采取如下技术方案达到:
38.一种存储介质,存储有程序,所述程序被处理器执行时,实现上述的利用数据不同特征延长ssd寿命的方法。
39.本发明相对于现有技术具有如下的优点及效果:
40.(1)本发明方法使用从用户请求中提取的读取次数较少的数据预先填充每个块的特定部分,然后用读重写引起的回写数据对事先预填充了用户数据的块进行填充,通过第一写边界块和第二写边界块的阈值控制数据块中用户写数据和读重写数据的比例,避免某些块积累过多读干扰而需要进行擦除操作。
41.(2)本发明方法通过数据写入池中的多个块从用户写数据中提取出读取次数较少的数据,有利于将读重写引起的回写数据分散到大范围的块中并与读取次数较少的数据结合,从而减少第二次读重写的发生和块整体的读次数。
附图说明
42.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
43.图1是本发明中公开的一种利用数据不同特征延长ssd寿命的方法的原理图;
44.图2是本发明的步骤s4的细化流程图;
45.图3是本发明的步骤s5的细化流程图;
46.图4是本发明实施例3中利用数据不同特征延长ssd寿命的装置结构框图;
47.图5是本发明实施例4中计算机设备的结构框图。
具体实施方式
48.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.实施例1
50.如图1、图2和图3所示,本实施例公开了一种利用数据不同特征延长ssd寿命的方法,应用在固态盘存储系统中,利用从用户请求中提取的读取次数较少的数据预先填充每
个块的特定部分,接着用读重写引起的回写数据对事先预填充了用户数据的块进行填充,通过第一写边界块和第二写边界块的阈值控制数据块中用户写数据和读重写数据的比例,避免某些块积累过多读干扰而需要进行擦除操作。同时,通过数据写入池中的多个块从用户写数据中提取出读取次数较少的数据,将读重写引起的回写数据分散到大范围的块中并与读取次数较少的数据结合,从而减少第二次读重写的发生和块整体的读次数。最后对这种固态盘数据管理方法进行性能测试,从多角度评估本发明对闪存系统的性能影响。本发明在固态盘板载缓存dram中为每个逻辑块设置了数据预填充属性,用于标识逻辑块预填充的数据类型,同时动态设置了预填充阈值和数据写入池的最大块容量,主要分为五个步骤:
51.s1、在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块。
52.s2、动态调整第一写边界块、第二写边界块的阈值和数据写入池的最大容量。数据写入池容量的初始值设置为20,第一写边界块中用户写数据的阈值设置为19/20,第二写边界块中读重写数据的阈值设置为1/20。
53.s3、当数据写入池填满20个块之后,每新增一个数据块就调整第一写边界块和第二写边界块的阈值,比如数据写入池有21个块时,第一写边界块中用户写数据的阈值设置为20/21,第二写边界块中读重写数据的阈值设置为1/21。数据写入池的最大容量设置为40。
54.s4、如图2所示,当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则轮询出数据写入池中读次数最多的数据块并与第一写边界块比较,如果第一写边界块的读次数较少,则第一写边界块进入数据写入池,而读次数较多的数据块成为新的第一写边界块;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并调整第一写边界块和第二写边界块的阈值。
55.s5、如图3所示,当读重写数据到来时,轮询数据写入池中的数据块,寻预先填充了用户写数据并且读取次数最少的数据块,如果可以到,则直接将读重写数据写入寻到的数据块中;如果不能到,则判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中;如果达到了则到数据写入池中轮询出一个读次数最小的数据块,直接将读重写数据写入这个数据块中。
56.综上所述,本实施例提出的一种利用数据不同特征延长ssd寿命的方法是通过设置第一写边界块、第二写边界块和数据写入池,将写入数据按照各自的数据特征进行合理地分配与结合,提前设置第一写边界块和第二写边界块的数据写入阈值;如表1所示,调整数据写入池容量的初始值会改变负载的读重写次数,将读干扰平均分配到数据写入池中的多个数据块上,避免某些块因为严重的读干扰积累而需要进行额外的读重写操作,在减少读重写发生次数的同时,缩短ssd的读延迟时间,缓解读重写引起的ssd可靠性问题。
57.实施例2
58.本实施例继续公开一种利用数据不同特征延长ssd寿命的方法,主要分为五个步骤:
59.s1、在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块。
60.s2、动态调整第一写边界块、第二写边界块的阈值和数据写入池的最大容量。数据写入池容量的初始值设置为10,第一写边界块中用户写数据的阈值设置为9/10,第二写边界块中读重写数据的阈值设置为1/10。
61.s3、当数据写入池填满10个块之后,每新增一个数据块就调整第一写边界块和第二写边界块的阈值,比如数据写入池有11个块时,第一写边界块中用户写数据的阈值设置为10/11,第二写边界块中读重写数据的阈值设置为1/11。数据写入池的最大容量设置为20。
62.s4、如图2所示,当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则轮询出数据写入池中读次数最多的数据块并与第一写边界块比较,如果第一写边界块的读次数较少,则第一写边界块进入数据写入池,而读次数较多的数据块成为新的第一写边界块;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并调整第一写边界块和第二写边界块的阈值。
63.s4、如图3所示,当读重写数据到来时,轮询数据写入池中的数据块,寻预先填充了用户写数据并且读取次数最少的数据块,如果可以到,则直接将读重写数据写入寻到的数据块中;如果不能到,则判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中;如果达到了则到数据写入池中轮询出一个读次数最小的数据块,直接将读重写数据写入这个数据块中。
64.综上所述,本实施例提出的一种利用数据不同特征延长ssd寿命的方法是通过设置第一写边界块、第二写边界块和数据写入池,将写入数据按照各自的数据特征进行合理地分配与结合,提前设置第一写边界块和第二写边界块的数据写入阈值。
65.表1.不同数据写入池容量初始值在不同负载下的读重写次数对比表
[0066][0067]
如表1所示,调整数据写入池容量的初始值会改变负载的读重写次数,将读干扰平
均分配到数据写入池中的多个数据块上,避免某些块因为严重的读干扰积累而需要进行额外的读重写操作,在减少读重写发生次数的同时,缩短ssd的读延迟时间,缓解读重写引起的ssd可靠性问题。
[0068]
实施例3
[0069]
如图4所示,本实施例提供了一种利用数据不同特征延长ssd寿命的装置,该装置包括初始化模块401、第一数据模块402、第二数据模块403、写数据处理模块404,读数据处理模块405,各个模块的具体功能如下:
[0070]
初始化模块401,用于在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块;
[0071]
第一数据模块402,用于当第一或第二写边界块中填充的数据达到事先设置的阈值之后,将第一或第二写边界块放到数据写入池,如果数据写入池中已经填满数据块,则轮询数据写入池中的数据块并出读取次数最少的数据块,如果这个数据块的被读取次数比达到阈值的第一或第二写边界块的被读取次数多,则将当前第一或第二写边界块与数据写入池中的这个数据块进行调换,即当前第一或第二写边界块进入数据写入池,而置换出来的数据块成为当前第一或第二写边界块;
[0072]
第二数据模块403,用于根据数据写入池中的块数量动态调整写边界块的数据填充阈值,假设数据写入池中有n个数据块,则第一写边界块中用户写数据的阈值就为数据块容量的(n

1)/n,预留1/n的空闲空间,当第一写边界块中的用户写数据达到阈值后执行第一数据模块,预留的1/n的空闲空间用来存放读重写数据;同样的,第二写边界块中的读重写数据的比例为数据块容量的1/n,预留(n

1)/n的空闲空间,即第一写边界块和第二写边界块中读重写数据占数据块空间的比例始终为数据写入池中数据块数量的倒数;
[0073]
写数据处理模块404,用于当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则执行第一数据模块;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将该写满了的数据块驱离数据写入池,并执行第二数据模块;
[0074]
读数据处理模块405,用于当读重写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将读重写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并执行第二数据模块;如果数据写入池中都是预填充了读重写数据的数据块,判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中,如果达到了则直接写入数据写入池。
[0075]
本实施例中各个模块的具体实现可以参见上述实施例1,在此不再一一赘述;需要说明的是,本实施例提供的装置仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0076]
实施例4
[0077]
本实施例提供了一种计算机设备,该计算机设备可以为计算机,如图5所示,其通过系统总线501连接的处理器502、存储器、输入装置503、显示器504和网络接口505,该处理器用于提供计算和控制能力,该存储器包括非易失性存储介质506和内存储器507,该非易失性存储介质506存储有操作系统、计算机程序和数据库,该内存储器507为非易失性存储介质中的操作系统和计算机程序的运行提供环境,处理器502执行存储器存储的计算机程序时,实现上述实施例1提出的一种利用数据不同特征来延长ssd寿命的方法,以下固态硬盘简称ssd中,包括以下步骤:
[0078]
s1、在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块;
[0079]
s2、当第一或第二写边界块中填充的数据达到事先设置的阈值之后,将第一或第二写边界块放到数据写入池,如果数据写入池中已经填满数据块,则轮询数据写入池中的数据块并出读取次数最少的数据块,如果这个数据块的被读取次数比达到阈值的第一或第二写边界块的被读取次数多,则将当前第一或第二写边界块与数据写入池中的这个数据块进行调换,即当前第一或第二写边界块进入数据写入池,而置换出来的数据块成为当前第一或第二写边界块;
[0080]
s3、根据数据写入池中的块数量动态调整写边界块的数据填充阈值,假设数据写入池中有n个数据块,则第一写边界块中用户写数据的阈值就为数据块容量的(n

1)/n,预留1/n的空闲空间,当第一写边界块中的用户写数据达到阈值后执行步骤s2,预留的1/n的空闲空间用来存放读重写数据;同样的,第二写边界块中的读重写数据的比例为数据块容量的1/n,预留(n

1)/n的空闲空间,即第一写边界块和第二写边界块中读重写数据占数据块空间的比例始终为数据写入池中数据块数量的倒数;
[0081]
s4、当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则执行步骤s2;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将该写满了的数据块驱离数据写入池,并执行步骤s3;
[0082]
s5、当读重写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将读重写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并执行步骤s3;如果数据写入池中都是预填充了读重写数据的数据块,判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中,如果达到了则直接写入数据写入池。
[0083]
实施例5
[0084]
本实施例提供了一种存储介质,该存储介质为计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时,实现上述实施例1的一种利用数据不同特征来延长ssd寿命的方法,以下固态硬盘简称ssd中,包括以下步骤:
[0085]
s1、在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一
写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块;
[0086]
s2、当第一或第二写边界块中填充的数据达到事先设置的阈值之后,将第一或第二写边界块放到数据写入池,如果数据写入池中已经填满数据块,则轮询数据写入池中的数据块并出读取次数最少的数据块,如果这个数据块的被读取次数比达到阈值的第一或第二写边界块的被读取次数多,则将当前第一或第二写边界块与数据写入池中的这个数据块进行调换,即当前第一或第二写边界块进入数据写入池,而置换出来的数据块成为当前第一或第二写边界块;
[0087]
s3、根据数据写入池中的块数量动态调整写边界块的数据填充阈值,假设数据写入池中有n个数据块,则第一写边界块中用户写数据的阈值就为数据块容量的(n

1)/n,预留1/n的空闲空间,当第一写边界块中的用户写数据达到阈值后执行步骤s2,预留的1/n的空闲空间用来存放读重写数据;同样的,第二写边界块中的读重写数据的比例为数据块容量的1/n,预留(n

1)/n的空闲空间,即第一写边界块和第二写边界块中读重写数据占数据块空间的比例始终为数据写入池中数据块数量的倒数;
[0088]
s4、当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则执行步骤s2;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将该写满了的数据块驱离数据写入池,并执行步骤s3;
[0089]
s5、当读重写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将读重写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并执行步骤s3;如果数据写入池中都是预填充了读重写数据的数据块,判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中,如果达到了则直接写入数据写入池。
[0090]
本实施例中所述的存储介质可以是磁盘、光盘、计算机存储器、随机存取存储器(ram,randomaccessmemory)、u盘、移动硬盘等介质。
[0091]
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

技术特征:


1.一种利用数据不同特征来延长ssd寿命的方法,应用于由存在块读干扰而需要对块数据进行擦除重写的固态硬盘中,以下固态硬盘简称ssd中,其特征在于,所述方法包括以下步骤:s1、在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块;s2、当第一或第二写边界块中填充的数据达到事先设置的阈值之后,将第一或第二写边界块放到数据写入池,如果数据写入池中已经填满数据块,则轮询数据写入池中的数据块并出读取次数最少的数据块,如果这个数据块的被读取次数比达到阈值的第一或第二写边界块的被读取次数多,则将当前第一或第二写边界块与数据写入池中的这个数据块进行调换,即当前第一或第二写边界块进入数据写入池,而置换出来的数据块成为当前第一或第二写边界块;s3、根据数据写入池中的块数量动态调整写边界块的数据填充阈值,假设数据写入池中有n个数据块,则第一写边界块中用户写数据的阈值就为数据块容量的(n

1)/n,预留1/n的空闲空间,当第一写边界块中的用户写数据达到阈值后执行步骤s2,预留的1/n的空闲空间用来存放读重写数据;同样的,第二写边界块中的读重写数据的比例为数据块容量的1/n,预留(n

1)/n的空闲空间,即第一写边界块和第二写边界块中读重写数据占数据块空间的比例始终为数据写入池中数据块数量的倒数;s4、当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达到阈值,则执行步骤s2;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将该写满了的数据块驱离数据写入池,并执行步骤s3;s5、当读重写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将读重写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并执行步骤s3;如果数据写入池中都是预填充了读重写数据的数据块,判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中,如果达到了则直接写入数据写入池。2.根据权利要求1所述的利用数据不同特征延长ssd寿命的方法,其特征在于,所述步骤s4过程如下:s41、轮询数据写入池中的数据块,寻预先填充了读重写数据并且读取次数最少的数据块,如果可以到,则转入步骤s42,如果不能到,则转入步骤s43;s42、直接将用户写数据写入寻到的数据块中;s43、将用户写数据写入第一写边界块中,如果刚好达到第一写边界块的阈值,则判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则转入步骤s44,如果达到了则转入步骤s45;s44、将当前第一写边界块放入数据写入池中,到空闲块池中随机取一个空闲块成为新的第一写边界块;
s45、到数据写入池中轮询出一个读次数最大的块与当前第一写边界块进行比较,如果当前第一写边界块的读取次数较少,则将当前第一写边界块与数据写入池中的这个数据块进行置换,即当前第一写边界块进入数据写入池,而置换出来的数据块成为当前第一写边界块。3.根据权利要求1所述的利用数据不同特征延长ssd寿命的方法,其特征在于,所述步骤s5过程如下:s51、轮询数据写入池中的数据块,寻预先填充了用户写数据并且读取次数最少的数据块,如果可以到,则转入步骤s52,如果不能到,则转入步骤s53;s52、直接将读重写数据写入寻到的数据块中;s53、判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则转入步骤s54,如果达到了则转入步骤s55;s54、将读重写数据写入第二写边界块中,如果刚好达到了第二写边界块的阈值,则将当前第二写边界块放入数据写入池中,到空闲块池中随机取一个空闲块成为新的第二写边界块;s55、到数据写入池中轮询出一个读次数最小的数据块,直接将读重写数据写入这个数据块中,如果这个数据块刚好写满,则将其驱离数据写入池,并执行步骤s3。4.根据权利要求1所述的利用数据不同特征延长ssd寿命的方法,其特征在于,所述第一写边界块中用户写数据的填充阈值γ1=(n

1)/n。5.根据权利要求1所述的利用数据不同特征延长ssd寿命的方法,其特征在于,所述第二写边界块中读重写数据的填充阈值γ2=1/n,n为数据写入池中的块数量。6.一种基于权利要求1至5任一所述利用数据不同特征延长ssd寿命的方法的装置,其特征在于,所述装置包括:初始化模块,用于在ssd中建立第一写边界块、第二写边界块和一个数据写入池,其中,所述第一写边界块用于存放新写入的用户写数据,所述第二写边界块用于存放读重写引起的回写数据,所述数据写入池用于存放一定数量的第一写边界块和第二写边界块;第一数据模块,用于当第一或第二写边界块中填充的数据达到事先设置的阈值之后,将第一或第二写边界块放到数据写入池,如果数据写入池中已经填满数据块,则轮询数据写入池中的数据块并出读取次数最少的数据块,如果这个数据块的被读取次数比达到阈值的第一或第二写边界块的被读取次数多,则将当前第一或第二写边界块与数据写入池中的这个数据块进行调换,即当前第一或第二写边界块进入数据写入池,而置换出来的数据块成为当前第一或第二写边界块;第二数据模块,用于根据数据写入池中的块数量动态调整写边界块的数据填充阈值,假设数据写入池中有n个数据块,则第一写边界块中用户写数据的阈值就为数据块容量的(n

1)/n,预留1/n的空闲空间,当第一写边界块中的用户写数据达到阈值后执行第一数据模块,预留的1/n的空闲空间用来存放读重写数据;同样的,第二写边界块中的读重写数据的比例为数据块容量的1/n,预留(n

1)/n的空闲空间,即第一写边界块和第二写边界块中读重写数据占数据块空间的比例始终为数据写入池中数据块数量的倒数;写数据处理模块,用于当用户写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则将用户写数据写到当前第一写边界块中,如果第一写边界块中的数据达
到阈值,则执行第一数据模块;如果数据写入池中都是预填充了读重写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将用户写数据写入该数据块中,如果数据写入池中某个数据块写满了则将该写满了的数据块驱离数据写入池,并执行第二数据模块;读数据处理模块,用于当读重写数据到来时,如果数据写入池中都是预填充了用户写数据的数据块,则从数据写入池中轮询出一个读取次数最少的数据块,将读重写数据写入该数据块中,如果数据写入池中某个数据块写满了则将其驱离数据写入池,并执行第二数据模块;如果数据写入池中都是预填充了读重写数据的数据块,判断数据写入池中的数据块数量是否达到数据写入池容量的最大值,如果没有达到则将读重写数据写入第二写边界块中,如果达到了则直接写入数据写入池。7.一种计算机设备,包括处理器以及用于存储处理器可执行程序的存储器,其特征在于,所述处理器执行存储器存储的程序时,实现权利要求1-5任一项所述的利用数据不同特征延长ssd寿命的方法。8.一种存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1-5任一项所述的利用数据不同特征延长ssd寿命的方法。

技术总结


本发明公开了一种利用数据不同特征延长SSD寿命的方法、装置、设备及介质,该方法针对SSD数据块由于严重读干扰需要执行擦除操作从而影响到SSD寿命的问题,提出通过两个写边界块和一个数据写入池对数据进行管理,将低读取频率的用户写入数据与高读取频率的读重写数据按比例混合到同一个块中,从而减少数据块读干扰以及擦除次数,以此延长SSD寿命。本发明利用SSD中写入数据的不同特征,在减少读重写发生次数的同时,缩短SSD的读延迟时间,缓解读重写引起的SSD可靠性问题。写引起的SSD可靠性问题。写引起的SSD可靠性问题。


技术研发人员:

邓玉辉 张根雄

受保护的技术使用者:

暨南大学

技术研发日:

2022.08.10

技术公布日:

2022/10/25

本文发布于:2024-09-21 15:44:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/9318.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   边界   池中   重写
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议