缓存数据的刷盘方法及装置制造方法及图纸

技术编号:11185603 阅读:128 留言:0更新日期:2015-03-25 14:13
本发明专利技术提供一种缓存数据的刷盘方法及装置。一种缓存数据的刷盘方法,应用于存储系统中,所述存储系统包括控制器、磁盘和SSD,所述SSD作为所述磁盘的缓存,所述方法由控制器执行,所述方法包括:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;根据脏数据块的标识与LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。

【技术实现步骤摘要】

本专利技术实施例涉及存储技术,尤其涉及一种缓存数据的刷盘方法及装置
技术介绍
随着固态硬盘(SSD,Solid State Drive)技术的成熟和成本的下降,越来越多的存储系统开始选用SSD作为高速缓冲存储器(cache)介质。现有技术中,存储系统通过cache技术进行写缓存时:控制器首先接收处理器下发的写请求,其中该写请求包括了待写入数据及该待写入数据对应的逻辑区块地址(LBA,Logical Block Address);其次,将待写入数据写入到SSD的缓存块中,将该缓存块的状态设置为脏数据块,并将该脏数据块的标识与待写入数据对应的LBA进行关联存储;最后在cache的刷盘时机,向磁盘进行数据同步(即将写缓存中的数据发送到磁盘进行存储,本专利技术中也称为cache的刷盘)。现有技术中,在进行cache刷盘时:控制器采用异步IO的方式向SSD发送多个缓存数据读取请求以获得多个脏数据块的缓存数据;并在接收到任一缓存数据读取请求对应的缓存数据后,将该缓存数据及该缓存数据对应的LBA发送至磁盘,以使磁盘将该缓存数据存储至对应的LBA。由于磁盘存储数据时,首先需要将磁头步进到LBA所指示的位置,再将缓存数据进行存储;因此,现有技术中,存在控制器刷盘效率低的问题。
技术实现思路
本专利技术提供一种缓存数据的刷盘方法及装置,用以解决现有技术中控制器刷盘效率低的问题。第一方面,本专利技术提供一种缓存数据的刷盘方法,应用于存储系统中,所述存储系统包括控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,所述方法由控制器执行,所述方法包括:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。结合第一方面,在第一方面的第一种可能实现的方式中,所述向所述SSD发送缓存数据读取请求之前,还包括:根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。结合第一方面的第一种可能实现的方式,在第一方面的第二种可能实现的方式中,所述根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,包括:根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于或等于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;从所述第一队列中选择所述M个待刷盘的脏数据块。结合第一方面的第第二种可能实现的方式,在第一方面的第三种可能实现的方式中,从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。结合第一方面的第二种或第三种可能实现的方式,在第一方面的第四种可能实现的方式中,所述方法还包括:根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;相应的,向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识,包括:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。第二方面,本专利技术提供一种控制器,所述控制器应用于存储系统中,所述存储系统包括所述控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,所述控制器包括:读取请求发送模块,用于向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;读取响应接收模块,用于接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;LBA确定模块,用于根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;刷盘模块,用于根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。结合第二方面,在第二方面的第一种可能实现的方式中,所述读取请求发送模块,还用于:根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。结合第二方面的第一种可能实现的方式,在第二方面的第二种可能实现的方式中,所述读取请求发送模块,具体用于:根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;从所述第一队列中选择所述M个待刷盘的脏数据块。结合第二方面的第二种可能实现的方式,在第二方面的第三种可能实现的方式中,所述读取请求发送模块,具体用于:从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。结合第二方面的第二种或第三种可能实现的方式,在第二方面的第四种可能实现的方式中,所述读取请求发送模块,还用于:根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;相应的,所述读取请求发送模块,具体用于:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。本专利技术提供一种缓存数据的刷盘方法及装置,通过根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘,避免了由于磁盘来回寻道而浪费的刷盘时间,提高了控制器的刷盘效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性本文档来自技高网...
缓存数据的刷盘方法及装置

【技术保护点】
一种缓存数据的刷盘方法,其特征在于,应用于存储系统中,所述存储系统包括控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,所述方法由控制器执行,所述方法包括:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。

【技术特征摘要】
1.一种缓存数据的刷盘方法,其特征在于,应用于存储系统中,所述存
储系统包括控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,
所述方法由控制器执行,所述方法包括:
向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个
待刷盘的脏数据块的标识;
接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N
个待刷盘的脏数据块的缓存数据,M大于或等于N;
根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N
个待刷盘的脏数据块分别对应的LBA;
根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大
的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
2.根据权利要求1所述的方法,其特征在于,所述向所述SSD发送缓
存数据读取请求之前,还包括:
根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏
数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所
述当前刷盘操作的LBA。
3.根据权利要求2所述的方法,其特征在于,所述根据当前刷盘操作的
LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,包括:
根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏
数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于或
等于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所
述当前刷盘操作的LBA;
从所述第一队列中选择所述M个待刷盘的脏数据块。
4.根据权利要求3所述的方法,其特征在于,从所述第一队列中选择
LBA值小的所述M个待刷盘的脏数据块。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的
脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据
块;
相应的,向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包
括M个待刷盘的脏数据块的标识,包括:
向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合
并后的待刷盘的脏数据块的标识...

【专利技术属性】
技术研发人员:张志乐
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1