一种基于固态硬盘的读缓存管理方法及装置的制造方法_2

文档序号:8258371阅读:来源:国知局
有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0066]参见图1,为本发明实施例提供的一种基于SSD的读缓存管理方法的流程示意图,在本发明实施例中,所述方法包括:
[0067]S101、接收读请求,并判断所述读请求是否命中所述第一队列和所述第二队列。
[0068]具体的,SSD (Solid State Driver,固态硬盘)作为下级存储介质的缓存,下级存储介质可是机械磁盘HDD,HDD的访问速度小于SSD,但是每字节的成本低于SSD。SSD中包括第一队列和第二队列,第一队列包括至少一个数据块,数据块为下级存储介质中的数据块的副本或数据块的元数据的副本,即第一队列中的数据块分为已存储状态和未存储状态,其中,已存储状态表示第一队列中的数据块存储的数据为下级存储介质中的数据块存储的数据的副本,下级存储介质中的数据块存储的数据已实际存储于SSD中;未存储状态表示第一队列中的数据块存储数据是下级存储中的数据块存储的数据的元数据,下级存储介质中的数据块中的数据未实际存储于SSD中。可以理解的是,数据的元数据的大小要小于数据本身的大小。
[0069]第二队列中存放第一队列中根据预设的缓存替换算法淘汰的数据块,第二队列中的淘汰的数据块是已存储状态的数据块。读缓存管理装置接收读请求,读请求可以是SSD的上级缓存介质发出的,如DRAM或主存储器等,读请求中携带逻辑地址,读缓存管理装置根据逻辑地址判断第一队列中和第二队列中存在逻辑地址对应的数据块,如果存在,表明读请求命中,如果不存在,表明读请求不命中。
[0070]需要说明的是,本发明实施例的所列的情景为,SSD运行一段时间后,其包括的第一队列为满状态。
[0071]S102、若二者均未命中,根据缓存替换算法选择并删除所述第一队列中的淘汰数据块。
[0072]具体的,第一队列和第二队列均没有命中,读缓存管理装置需要从下级缓存介质中确定读请求对应的数据块,并插入到第一队列中,如果第一队列中为满队列,插入操作之前,需要从第一队列中删除一个数据块,具体选择第一队列中的哪个数据块进行删除,可以依据现有技术的缓存替换算法,例如LRU、LIRS或ARC等缓存替换算法,本发明不作限制。如果,读缓存管理装置从第一队列中选择已存储状态的数据块,本发明实施例称为淘汰数据块,读缓存管理装置删除选择的淘汰数据块,如果淘汰数据块为已存储状态,执行S103 ;如果读缓存管理装置选择的淘汰数据块为未存储状态,将淘汰数据块从第一队列中删除,并从SSD中删除。
[0073]S103、若所述淘汰数据块为已存储状态,将所述淘汰数据块插入所述第二队列中。
[0074]具体的,读缓存管理装置将已存储状态的淘汰数据块插入第二队列中,从第一队列中删除的淘汰数据块并没有从SSD中删除,而是进入到第二队列中,第二队列中的数据块均为已存储状态。
[0075]S104、从下级存储介质中确定所述读请求对应的目标数据块,将所述目标数据块插入所述第一队列中;其中,所述目标数据块为未存储状态。
[0076]具体的,读缓存管理装置根据读请求直接对下级缓存介质中的目标数据块进行读操作,并将目标数据块中的数据返回给读请求发出的对象,读操作完成后,读缓存管理装置将读请求对应的目标数据块的数据的元数据生成未存储状态的目标数据块,读缓存管理装置将未存储状态的目标数据块插入到第一队列中。
[0077]实施本发明的实施例,针对SSD擦写次数存在限制的缺点,与现有的缓存替换算法结合,将第一队列中淘汰出来的数据块插入到设置的第二队列中,并没有直接从SSD中直接删除,增加淘汰数据块在SSD中停留时间,从而提高SSD的读命中率,同时当SDD未命中时,将元数据写入第一队列中,又可以减少SDD写入量,延长了 SSD的使用寿命。
[0078]可选的,在本发明的一些实施例中,所述方法还包括:
[0079]若所述读请求未命中所述第一队列但命中所述第二队列,删除所述第二队列中所述读请求对应的命中数据块;
[0080]将所述命中数据块插入所述第一队列中。
[0081]具体的,若读请求未命中第一队列,但命中第二队列,删除第二队列中读请求对应的数据块,本发明实施例称为命中数据块,缓存管理装置将命中数据块插入到第一队列中,如果第一队列此时未满,直接将命中数据块插入第一队列即可,如果第一队列此时已满,根据预设的缓存替换算法从第一队列中删除一个数据块,删除操作完成后,再将命中数据块插入到第一队列中。
[0082]需要说明的是,如果第一队列删除的数据块为已存储状态,该删除的数据块仍然需要插入到第二队列中。
[0083]可选的,在本发明的一些实施例中,还包括:
[0084]计算所述所述第二队列中的待处理数据块的空闲时间;其中,所述待处理数据块为所述第二队列中的数据块的任意一个;
[0085]当所述待处理数据块持续未访问的时间大于所述待处理数据块的空闲时间时,将所述待处理数据块从所述第二队列中删除;
[0086]获取所述待处理数据块的身份标识,并将所述待处理数据块的身份标识插入到第三队列中。
[0087]具体的,第二队列的长度是有限制的,第二队列中的数据块如果长时间没有访问,需要将冷门数据块进行淘汰,以便让热门数据块进入到SSD中。第二队列中数据块的淘汰可以空闲时间为依据,当数据块持续未访问的时间大于数据块的空闲时间,将数据块从第二队列中删除,并从SSD中删除,读缓存管理装置获取删除的数据块的身份标识,将身份标识插入到第三队列中,第三队列是一个一定长度的队列,可以为一个FIFO队列,读缓存管理装置将删除的数据块的身份标识插入到第三队列的队尾。
[0088]可选的,在本发明的一些实施例中,所述计算所述所述第二队列中的待处理数据块的空闲时间包括:
[0089]统计所述待处理数据块在所述第一队列中的命中次数M和所述第二队列中的命中次数N ;
[0090]根据所述命中次数M和所述命中次数N计算所述待处理数据块的空闲时间。
[0091]具体的,读缓存管理装置将第二队列中的数据块进行分为三类,分别为:陌生块、普通块和好块,数据块的属性不同,对应的空闲时间也不相同,在本发明实施例中,数据块的计算方法如下:
[0092]好块:数据块在第一队列中的命中次数为M,在第二队列中的命中次数为N,如果M=T*N,T为大于I的常数,表明该数据块非常热门,该数据块称为好块。好块经常位于第一队列中,好块在第二队列中设置的空闲时间也较长,如果基准空闲时间为I,则好块的空闲时间为G1*I,Gl为大于I的常数。
[0093]普通块:满足M < T*N的数据块,表明普通块经常出现在第二队列中,被命中后还能回到第一队列中,普通块的空闲时间设置为G2*I,G2 <G1。
[0094]陌生块,新进入第一队列的数据块,第一队列中的命中次数为1,空闲时间设置为基准空闲时间I。
[0095]可选的,在本发明的一些实施例中,所述将所述淘汰数据块插入所述第二队列中包括:
[0096]获取所述淘汰数据块的身份信息;
[0097]若所述淘汰数据块的身份信息不在所述第三队列中,将所述淘汰数据块插入所述第二队列中;
[0098]若所述淘汰数据块的身份信息在所述第三队列中,判断所述淘汰数据块的淘汰时长是否大于预设时间阈值,若为是,将所述淘汰数据块插入所述第二队列中。
[0099]具体的,第三队列中身份标识对应的数据块在预设时长内不能进入第二队列中,当第一队列中有数据块需要淘汰时,读缓存管理装置获取该数据块的身份标识,判断身份标识是否在第三队列中,若为是,读缓存管理装置计算当前时刻和数据块上一次淘汰的时刻的时长,若计算的时长大于预设时间阈值,将淘汰的数据块插入到第二队列中,否则,将淘汰的数据块从第一队列中删除,并从SSD中删除,不再进入第二队列中。
[0100]如果淘汰的数据块的身份标识不在第三队列中,将该数据块插入到第二队列中。
[0101]可选的,在本发明的一些实施例中,所述当所述待处理数据块持续未访问的时间大于所述待处理数据块的空闲时间时,将所述待处理数据块从所述第二队列中删除之后,还包括:
[0102]搜索所述第一队列中首个未存储状态的数据块;
[0103]将所述首个未存储状态的数据块写入所述SSD中,并在写入操作完成后将该数据块设置为已存储状态;或者
[0104]确定所述第一队列中前K位未存储状态的数据块;其中K为大于O的整数;
[0105]将所述K个数据块中访问量最大的数据块写入所述SSD,并在写入操作完成后将所述访问量最大的数据块设置为已存储状态。
[0106]具体的,第二队列中的数据块被删除之后,读缓存管理装置需要从下级缓存介质中调入数据写入SSD中的数据块中,缓存更新策略可以是:
[0107]读缓存管理装置搜索第一队列中未存储状态的数据块,将为存储状态的数据块写入SSD是指:读缓存管理装置根据数据块中的元数据,将下级缓存介质中的元数据对应的写入到数据块中,在写入操作完成后,将该数据块设置为已存储状态。
[0108]或者,读缓存管理装置根据访问量取得第一队列中在前K位的未存储状态的数据块,将K个数据块中访问量最大的数据块写入所述SSD,并在写入操作完成后将访问量最大的数据块设置为已存储状态。
[0109]参见图2,为本发明实施例提供的一种基于SSD的读缓存管理方法的流程示意图,在本发明实施例中,所述方法包括:
[0110]S201、接收读请求。
[0111]S202、判断是否命中第一队列,其中,若为是,执行S202,若为否,执行S203。
[0112]S203、判断是否命中第二队列,若为是,执行S207,若为否,执行S210。
[0113
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1