缓存的处理方法和装置制造方法

文档序号:6639091阅读:162来源:国知局
缓存的处理方法和装置制造方法
【专利摘要】本发明实施例提供一种缓存的处理方法和装置,包括:接收读输入输出IO请求,并根据所述读IO请求,从父镜像中读取小数据块;若包含所述小数据块的第一大数据块不在缓存镜像中,则检查所述缓存镜像的存储空间是否已满或者所述存储空间的占用比例是否大于或者等于预设比例阈值;若所述缓存镜像的存储空间已满或者所述存储空间的占用比例大于或者等于所述预设比例阈值,则将所述第一大数据块替换所述缓存镜像中的第二大数据块,并将所述小数据块写入所述缓存镜像中所述第一大数据块对应的存储空间,用新的第一大数据块替换老化的第二大数据块,然后将需要写入的小数据块写入缓存镜像中,有效提高了存储空间的利用率。
【专利说明】缓存的处理方法和装置

【技术领域】
[0001] 本发明实施例设及存储技术,尤其设及一种缓存的处理方法和装置。

【背景技术】
[0002] 桌面云是将个人计算机桌面环境通过云计算模式从物理机分离出来,成为一种可 W对外提供桌面的服务。
[0003] 图1为现有技术中一种桌面云的应用场景示意图。如图1所示,该应用场景包括 父镜像1、缓存镜像2、子镜像3和虚拟机4,其中,缓存镜像2链接克隆于父镜像1,子镜像 3链接克隆于缓存镜像2。在该场景下,如图1所示,针对虚拟机4中的读写10,写10直接 将数据块写入到子镜像3中;读10先到子镜像中读取数据块,如果数据块存在于子镜像中, 则在子镜像中读取;如果数据块不存在于子镜像中,再到缓存镜像中读取;如果数据块不 存在于缓存镜像中,则到父镜像中读取,并将读取到的数据块写入到缓存镜像中,W便下一 次读取相同数据块时可W从缓存镜像中读取该数据块。
[0004] 但是,父镜像、缓存镜像、子镜像都采用虚拟硬盘文件格式(Virtual Hard Disk 化rmat,简称VHD),VHD文件的最大容量不超过本地存储文件系统的大小,并且,VHD无法进 行数据块的替换功能,例如,从父镜像中读取到的数据块只能通过追加的方式依次写入缓 存镜像中,当缓存镜像所在的本地存储文件系统空间用完后,就无法再将新的数据块写入 缓存镜像中,而缓存镜像中部分数据可能后续不会或很少再被读取,因此,导致缓存镜像中 的有用数据块比例变少,从而导致缓存空间的浪费。


【发明内容】

[0005] 本发明实施例提供一种缓存的处理方法和装置,用新的第一大数据块替换老化的 第二大数据块,然后将需要写入的小数据块写入缓存镜像中,有效提高了存储空间的利用 率。
[0006] 本发明实施例第一方面提供一种缓存的处理方法,包括:
[0007] 接收读输入输出10请求,并根据所述读10请求,从父镜像中读取小数据块;
[000引若包含所述小数据块的第一大数据块不在缓存镜像中,则检查所述缓存镜像的存 储空间是否已满或者所述存储空间的占用比例是否大于或者等于预设比例阔值;
[0009] 若所述缓存镜像的存储空间已满或者所述存储空间的占用比例大于或者等于所 述预设比例阔值,则将所述第一大数据块替换所述缓存镜像中的第二大数据块,并将所述 小数据块写入所述缓存镜像中所述第一大数据块对应的存储空间。
[0010] 在第一方面的第一种可能实现方式中,所述从父镜像中读取小数据块之后,所述 方法还包括:
[0011] 将包含所述小数据块的第一大数据块的访问计数值加1;
[0012] 则在所述若包含所述小数据块的第一大数据块不在缓存镜像中,则检查所述缓存 镜像的存储空间是否已满或者所述存储空间的占用比例是否大于或者等于预设比例阔值 之前,所述方法还包括:
[0013] 将所述第一大数据块的标识和对应的访问计数值写入管理链表。
[0014] 结合第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,还 包括:
[0015] 若所述缓存镜像的存储空间未满或者所述存储空间的占用比例小于所述预设比 例阔值,则将所述第一大数据块加入所述缓存镜像,并将所述小数据块写入所述缓存镜像 中所述第一大数据块对应的存储空间。
[0016] 结合第一方面的第一种可能实现方式,在第一方面的第=种可能实现方式中,所 述将所述第一大数据块替换所述缓存镜像中的第二大数据块,并将所述小数据块写入所述 缓存镜像中所述第一大数据块对应的存储空间,具体包括:
[0017] 根据所述第一大数据块的访问计数值,从所述管理链表的表头位置开始依次查 找,获取所述第二大数据块,将所述第二大数据块的标识和访问计数值从所述管理链表中 移除,并将所述第一大数据块的标识和访问计数值写入所述管理链表中第=个大数据块的 标识之前;其中,所述第二大数据块为在所述管理链表中,访问计数值小于或者等于第一大 数据块的访问计数值的第一个数据块;所述第=大数据块为删除了所述第二大数据块的标 识后的管理链表中,访问计数值大于或者等于所述第一大数据块的访问计数值的第一个数 据块;
[001引在块分配表BAT中将第二大数据块对应的位置标记失效,并将所述第一大数据块 的起始偏移位置存储到BAT中的第一大数据块对应的位置;其中,所述第一大数据块的起 始偏移位置为所述第二大数据块的起始偏移位置;
[0019] 将所述小数据块写入所述缓存镜像中所述第一大数据块的起始偏移位置对应的 存储空间。
[0020] 结合第一方面的第二种可能实现方式,在第一方面的第四种可能实现方式中,所 述将所述第一大数据块加入所述缓存镜像,并将所述小数据块写入所述缓存镜像中所述第 一大数据块对应的存储空间,具体包括:
[0021] 根据所述第一大数据块的访问计数值,将所述第一大数据块的标识和访问计数值 写入所述管理链表中;
[0022] 在所述缓存镜像中查找到一个空闲块,并将所述小数据块写入所述空闲块;其中, 所述空闲块为所述第一大数据块对应的存储空间;
[0023] 将所述空闲块的起始偏移位置写入BAT中所述空闲块对应的位置。
[0024] 结合第一方面的第一种可能实现方式,在第一方面的第五种可能实现方式中,若 所述第一大数据块在缓存镜像中,则根据所述访问计数值,在所述管理链表中更新所述第 一大数据块的标识所在的位置和所述访问计数值,并将所述小数据块写入所述缓存镜像中 第一大数据块对应的存储空间。
[0025] 本发明实施例第二方面提供一种缓存的处理装置,包括:
[0026] 读取模块,用于接收读输入输出10请求,并根据所述读10请求,从父镜像中读取 小数据块;
[0027] 检查模块,用于若包含所述小数据块的第一大数据块不在缓存镜像中,则检查所 述缓存镜像的存储空间是否已满或者所述存储空间的占用比例是否大于或者等于预设比 例阔值;
[002引处理模块,用于若所述缓存镜像的存储空间已满或者所述存储空间的占用比例大 于或者等于所述预设比例阔值,则将所述第一大数据块替换所述缓存镜像中的第二大数据 块,并将所述小数据块写入所述缓存镜像中所述第一大数据块对应的存储空间。
[0029] 在第二方面的第一种可能实现方式中,所述读取模块还用于将包含所述小数据块 的第一大数据块的访问计数值加1 ;
[0030] 所述处理模块还用于将所述第一大数据块的标识和对应的访问计数值写入管理 链表。
[0031] 结合第二方面的第一种可能实现方式,在第二方面的第二中可能实现方式中,所 述处理模块还用于若所述缓存镜像的存储空间未满或者所述存储空间的占用比例小于所 述预设比例阔值,则将所述第一大数据块加入所述缓存镜像,并将所述小数据块写入所述 缓存镜像中所述第一大数据块对应的存储空间。
[0032] 结合第二方面的第一种可能实现方式,在第二方面的第=种可能实现方式中,所 述处理模块包括:
[0033] 第二大数据块获取单元,用于根据所述第一大数据块的访问计数值,从所述管理 链表的表头位置开始依次查找,获取所述第二大数据块,将所述第二大数据块的标识和访 问计数值从所述管理链表中移除,并将所述第一大数据块的标识和访问计数值写入所述管 理链表中第=个大数据块的标识之前;其中,所述第二大数据块为在所述管理链表中,访问 计数值小于或者等于第一大数据块的访问计数值的第一个数据块;所述第=大数据块为删 除了所述第二大数据块的标识后的管理链表中,访问计数值大于或者等于所述第一大数据 块的访问计数值的第一个数据块;
[0034] 位置标记单元,用于在BAT中将第二大数据块对应的位置标记失效,并将所述第 一大数据块的起始偏移位置存储到BAT中的第一大数据块对应的位置;其中,所述第一大 数据块的起始偏移位置为所述第二大数据块的起始偏移位置;
[0035] 小数据块写入单元,用于将所述小数据块写入所述缓存镜像中所述第一大数据块 的起始偏移位置对应的存储空间。
[0036] 结合第二方面的第二种可能实现方式,在第二方面的第四种可能实现方式中,所 述处理模块包括:
[0037] 标识写入单元,用于根据所述第一大数据块的访问计数值,将所述第一大数据块 的标识和访问计数值写入所述管理链表中;
[003引空闲块获取单元,用于在所述缓存镜像中查找到一个空闲块,并将所述小数据块 写入所述空闲块;其中,所述空闲块为所述第一大数据块对应的存储空间;
[0039] 位置写入单元,用于将所述空闲块的起始偏移位置写入BAT中所述空闲块对应的 位置。
[0040] 结合第二方面的第一种可能实现方式,在第二方面的第五种可能实现方式中,所 述处理模块包括:
[0041] 更新单元,用于若所述第一大数据块在缓存镜像中,则根据所述访问计数值,在所 述管理链表中更新所述第一大数据块的标识所在的位置和所述访问计数值,并将所述小数 据块写入所述缓存镜像中第一大数据块对应的存储空间。
[0042] 本实施例提供的缓存的处理方法,接收读输入输出10请求,并根据读10请求,从 父镜像中读取小数据块,若包含小数据块的第一大数据块不在缓存镜像中,则检查缓存镜 像的存储空间是否已满或者存储空间的占用比例是否大于或者等于预设比例阔值,若缓存 镜像的存储空间已满或者存储空间的占用比例大于或者等于预设比例阔值,则将第一大数 据块替换缓存镜像中的第二大数据块,并将小数据块写入缓存镜像中第一大数据块对应的 存储空间。相较于现有技术中当缓存镜像的存储空间用完后,就无法再将新的数据块写入 缓存镜像的现象而言,本实施例中,当检查到缓存镜像中的存储空间已满或者存储空间的 占用比例大于或者等于预设比例阔值时,用第一大数据块替换缓存镜像中的第二大数据 块,并将小数据块写入缓存镜像中第二大数据块对应的存储空间,即用新的第一大数据块 替换老化的第二大数据块,然后将需要写入的小数据块写入缓存镜像中,有效提高了存储 空间的利用率。

【专利附图】

【附图说明】
[0043] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可W 根据该些附图获得其他的附图。
[0044] 图1为现有技术中一种桌面云的应用场景示意图;
[0045] 图2为本发明实施例一提供的缓存的处理方法流程图;
[0046] 图3为本发明实施例二提供的缓存的处理方法流程图;
[0047] 图4为第一大数据块的标识移动前的管理链表示意图;
[0048] 图5为第一大数据块的标识移动后的管理链表示意图;
[0049] 图6为位图表管理示意图;
[0化日]图7为本发明实施例=提供的缓存的处理方法流程图;
[0化1] 图8为实施例=中第一大数据块进入缓存镜像前的管理链表示意图;
[0化2]图9为实施例=中第一大数据块进入缓存镜像后的管理链表示意图;
[0化3] 图10为本发明实施例四提供的缓存的处理方法流程图;
[0化4]图11为实施例四中第一大数据块进入缓存镜像前的管理链表示意图;
[0化5] 图12为实施例四中第一大数据块进入缓存镜像后的管理链表示意图;
[0化6] 图13为本发明实施例五提供的缓存的处理装置的结构示意图;
[0化7] 图14为本发明实施例六提供的缓存的处理装置的结构示意图;
[0化引图15为本发明实施例走提供的缓存的处理装置的结构示意图;
[0化9] 图16为本发明实施例八提供的缓存的处理装置的结构示意图。

【具体实施方式】
[0060] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0061] 图2为本发明实施例一提供的缓存的处理方法流程图。在本实施例中,执行主体 可W为中央处理器(Central Processing化it,简称CPU)、服务器、物理主机、终端设备等, 本发明中并不W此为限。如图1所示,该方法包括W下步骤:
[0062] 步骤101、接收读输入输出(Input and Ou化ut,简称10)请求,并根据读10请求, 从父镜像中读取小数据块。
[0063] 在本实施例中,当接收到读10请求,且根据读10在子镜像和缓存镜像中都未命中 时,即根据读10在子镜像和缓存镜像中都没有读取到小数据块,则需要根据该读10请求, 从父镜像中读取小数据块。其中,读10请求中可W包括小数据块的标识,例如,小数据块的 编号或者小数据块存储的起始偏移地址等。一个大数据块可分为多个小数据块,例如,可W 将512B作为小数据块,2MB作为大数据块;也可W将2MB的数据块作为小数据块,将20GB的 数据块作为一个大数据块,可根据实际情况来设定,本发明中不做限制。
[0064] 步骤102、若包含小数据块的第一大数据块不在缓存镜像中,则检查缓存镜像的存 储空间是否已满或者存储空间的占用比例是否大于或者等于预设比例阔值。
[0065] 在本实施例中,包含小数据块的第一大数据块不在缓存镜像中,则说明该第一大 数据块中没有任何小数据块存储在缓存镜像的存储空间中,若该第一大数据块中有至少 一个小数据块存储在缓存镜像的存储空间中,则该第一大数据块在该缓存镜像中。缓存 镜像的存储空间可采用本地的高速存储设备,如存储速度和每秒输入输出量(Input and Ou化ut Per Second,简称lOP巧远大于普通硬盘的存储设备,可W是内存,也可W是固态硬 盘(Solid State Disk,简称SSD)等可W进行高速交互操作的存储设备,可W从成本、性能 及生命周期的角度考虑选择适合的存储设备来做缓存。
[0066] 步骤103、若缓存镜像的存储空间已满或者存储空间的占用比例大于或者等于预 设比例阔值,则将第一大数据块替换缓存镜像中的第二大数据块,并将小数据块写入缓存 镜像中第一大数据块对应的存储空间。
[0067] 在本实施例中,若缓存镜像的存储空间已满,即存储空间中不能再W追加的方式 存储任何方式,或者,若缓存镜像的存储空间的占用比例大于或者等于预设比例阔值,例 如,存储空间的占用比例超过80%时,将第一大数据块替换缓存镜像中的第二大数据块,并 将小数据块写入缓存镜像中第一大数据块对应的存储空间。第二大数据块为缓存镜像中, 被访问的次数相对较小的大数据块,或者是在预设时间段内没有被访问的大数据块,或者 也可W是被访问的次数小于或者等于第一大数据块被访问的次数的大数据块。
[0068] 可选地,在本实施例中,可W采用预先设定的缓存替换策略,用第一大数据块替换 缓存镜像中的第二大数据块。例如,缓存替换策略可W为最近最少使用(Least Recently Used,简称LRU)策略,也可W为最近最不常用(Least化equently Used,简称LFU)策略,或 者是其它的策略,本领域技术人员可W根据文件特性和使用场景角度考虑,选择适当的缓 存替换策略,本发明中并不W此为限。
[0069] 需要说明的是,本实施例中,并不是用第一大数据块中的数据替换缓存镜像中的 第二大数据块,而是在缓存镜像中找到一个被访问的次数相对较少的老化的大数据块后, 将该老化的大数据块作为第二大数据块,将缓存镜像中第二大数据块的存储空间预留给第 一大数据块,当第一大数据块中的小数据块被读取后,将该小数据块写入到缓存镜像中原 来的第二大数据块对应的存储空间上。
[0070] 本实施例提供的缓存的处理方法,接收读输入输出10请求,并根据读10请求,从 父镜像中读取小数据块,若包含小数据块的第一大数据块不在缓存镜像中,则检查缓存镜 像的存储空间是否已满或者存储空间的占用比例是否大于或者等于预设比例阔值,若缓存 镜像的存储空间已满或者存储空间的占用比例大于或者等于预设比例阔值,则将第一大数 据块替换缓存镜像中的第二大数据块,并将小数据块写入缓存镜像中第一大数据块对应的 存储空间。相较于现有技术中当缓存镜像的存储空间用完后,就无法再将新的数据块写入 缓存镜像的现象而言,本实施例中,当检查到缓存镜像中的存储空间已满或者存储空间的 占用比例大于或者等于预设比例阔值时,用第一大数据块替换缓存镜像中的第二大数据 块,并将小数据块写入缓存镜像中第二大数据块对应的存储空间,即用新的第一大数据块 替换老化的第二大数据块,然后将需要写入的小数据块写入缓存镜像中,有效提高了存储 空间的利用率。
[0071] 图3为本发明实施例二提供的缓存的处理方法流程图。如图3所示,该方法包括 W下步骤:
[0072] 步骤201、接收读输入输出10请求,并根据读10请求,从父镜像中读取小数据块。
[0073] 步骤202、将包含小数据块的第一大数据块的访问计数值加1。
[0074] 在本实施例中,访问计数值用于记录第一大数据块被访问的次数,当第一大数据 块中有小数据块被访问时,无论第一大数据块是否在缓存镜像中,都将第一大数据块的访 问计数值加1。
[0075] 步骤203、判断包含小数据块的第一大数据块是否在缓存镜像中,若是,即包含小 数据块的第一大数据块在缓存镜像中,则执行步骤208 ;若否,即包含小数据块的第一大数 据块不在缓存镜像中,则执行步骤204。
[0076] 步骤204、将第一大数据块的标识和对应的访问计数值写入管理链表。
[0077] 在本实施例中,管理链表用于管理缓存镜像中的大数据块,存储了大数据块的标 识和大数据块的访问计数值,该管理链表具体可W为L即链表。在管理链表中,头结点 化ead)指向最新加入而且访问计数最小的大数据块,尾结点(tail)指向最早加入而且访 问计数最大的大数据块。若管理链表中存在第一大数据块的标识,则该第一数据块在缓存 镜像中,即该第一大数据块中有小数据块存储在缓存镜像的存储空间中,若管理链表中没 有第一大数据块的标识,则该第一数据块不在缓存镜像中,即该第一大数据块中没有小数 据块存储在缓存镜像的存储空间中。
[007引当第一大数据块中的小数据块被访问,且该第一大数据块不在缓存镜像中,将第 一大数据块的标识和对应的访问计数值写入管理链表,表示该第一大数据块在缓存镜像 中。初始状态时,将所有大数据块的访问计数值置0,并用管理链表来管理该些大数据块,如 果大数据块中有小数据块进入缓存镜像,即第一大数据块包含的小数据块被读取后需要存 储到缓存镜像的存储空间时,则将第一大数据块标识和访问计数值加入管理链表中。
[0079] 步骤205、检查缓存镜像的存储空间是否已满或者存储空间的占用比例是否大于 或者等于预设比例阔值,若是,即缓存镜像的存储空间已满或者存储空间的占用比例大于 或者等于预设比例阔值,则执行步骤206 ;若否,即缓存镜像的存储空间未满或者存储空间 的占用比例小于预设比例阔值,则执行步骤207。
[0080] 步骤206、将第一大数据块替换缓存镜像中的第二大数据块,并将小数据块写入缓 存镜像中第一大数据块对应的存储空间。
[0081] 步骤207、将第一大数据块加入缓存镜像,并将小数据块写入缓存镜像中第一大数 据块对应的存储空间。结束。
[0082] 在本实施例中,将第一大数据块加入缓存镜像可采用两种方法,一种是提前预占, 一种是动态分配。提前预占方法是在缓存第一大数据块加入缓存时,不论第一大数据块中 的小数据块是否都能有机会被访问而存储到缓存镜像的存储空间中,就提前占用了缓存空 间中第一大数据块整体所需的空间(如2MB);动态分配方法在第一大数据块加入缓存镜像 时,只分配存储空间中小数据块所需的空间(如若干个512B),该种方式可W使更多有用的 小数据块进入缓存镜像中。
[0083] 步骤208、根据访问计数值,在管理链表中更新第一大数据块的标识所在的位置和 访问计数值,并将小数据块写入缓存镜像中第一大数据块对应的存储空间。
[0084] 在本实施例中,当第一大数据块在缓存镜像中时,即管理链表中有第一大数据块 的标识和访问计数值,根据访问计数值,在管理链表中,从第一大数据块的标识的位置开 始,找到访问计数值小于或者等于第一大数据块的访问计数值的第一个大数据块,将第一 大数据块的标识和访问计数值写入该第一个大数据块之前。
[0085] 图4为第一大数据块的标识移动前的管理链表示意图,图5为第一大数据块的标 识移动后的管理链表示意图。如图4和图5所示,缓存镜像中有3个大数据块;大数据块 1 @L0CK1),大数据块6炬LOCK6),大数据块8炬LOCKS),它们的访问计数值分别是化OCK1的 访问计数值为3, BL0CK6的访问计数值为2, BLOCKS的访问计数值为2。当化0CK8再次被 访问时,其访问计数值加1变为3,此时化0CK8的访问计数值已经大于化0CK6,而在管理链 表中,BLOCKS还在化0CK6前,则需要在管理链表中将化0CK8进行移动。在化0CK8当前位 置处,往后查找,找到第一个访问计数值大于或者等于3的数据块,此例中为化0CK1,如图5 所示,把化0CK8移动到管理链表中化0CK1前。
[0086] 可选地,本实施例中,还可使用位图表管理大数据块中的小数据块,例如,将2MB 的数据块作为大数据块,将512B的数据块作为小数据块,则在每一个2MB大数据块内部又 可W分为4096个512B小数据块,可W使用位图表来管理该些512B数据块,位图表中每一 个512B使用1个位来管理。图6为位图表管理不意图,如图6所不,该位图表中不出了两 个2MB的数据块的管理示意图,如果对应位值为0,则代表对应的512B不在缓存镜像的存储 空间中;反之,如果对应位值为1,则代表对应的512B在缓存镜像的存储空间中。需要说明 的是,图6仅示出了 8个512B数据块,并未将一个2MB数据块内的所有的512B数据块,具 体操作中W实际情况为准。
[0087] 在本实施例中,小数据块未写入缓存镜像的存储空间之前,位图表中的对应位置 为0,当小数据块写入缓存镜像中第一大数据块对应的存储空间后,需要将位图表中小数据 块对应的位置更新为1。
[008引本实施例提供的缓存的处理方法,接收读输入输出10请求,并根据读10请求,从 父镜像中读取小数据块,并将第一大数据块的访问计数值加1,若第一大数据块在缓存镜像 中,则根据访问计数值,在管理链表中更新第一大数据块的标识所在的位置和访问计数值, 并将小数据块写入缓存镜像中第一大数据块对应的存储空间,若第一大数据块不在缓存镜 像中,则将第一大数据块的标识和对应的访问计数值写入管理链表,并检查缓存镜像的存 储空间是否已满或者存储空间的占用比例是否大于或者等于预设比例阔值,若缓存镜像的 存储空间已满或者存储空间的占用比例大于或者等于预设比例阔值,则将第一大数据块替 换缓存镜像中的第二大数据块,并将小数据块写入缓存镜像中第一大数据块对应的存储空 间,若缓存镜像的存储空间未满或者存储空间的占用比例小于预设比例阔值,若否,即缓存 镜像的存储空间未满或者存储空间的占用比例小于预设比例阔值。相较于现有技术中当缓 存镜像的存储空间用完后,就无法再将新的数据块写入缓存镜像的现象而言,本实施例中, 不仅可W实现用新的第一大数据块替换老化的第二大数据块,然后将需要写入的小数据块 写入缓存镜像中,有效提高了存储空间的利用率,而且,使用管理链表管理缓存镜像中的大 数据块,根据大数据块的访问计数值可W方便快速的找到老化的数据块,提高了大数据块 的替换、加入和数据块标识在链表中移动的效率。
[0089] 图7为本发明实施例=提供的缓存的处理方法流程图。在上述实施例二的基础 上,步骤"将第一大数据块替换缓存镜像中的第二大数据块,并将小数据块写入缓存镜像中 第一大数据块对应的存储空间"的具体实现方式包括W下步骤:
[0090] 步骤301、根据第一大数据块的访问计数值,从管理链表的表头位置开始依次查 找,获取第二大数据块,将第二大数据块的标识和访问计数值从管理链表中移除,并将第一 大数据块的标识和访问计数值写入管理链表中第=个大数据块的标识之前。
[0091] 其中,第二大数据块为在管理链表中,访问计数值小于或者等于第一大数据块的 访问计数值的第一个数据块;第=大数据块为删除了第二大数据块的标识后的管理链表 中,访问计数值大于或者等于第一大数据块的访问计数值的第一个数据块。
[0092] 在本实施例中,在管理链表中,根据第一大数据块的访问计数值,从表头的位置开 始,查找到第一个访问计数值小于或者等于第二数据的访问计数值的数据块,将该数据块 作为第二大数据块,将第二大数据块的标识和访问计数值从管理链表中移除,表示该第二 大数据块不存在于缓存镜像中,将第一大数据块的标识和访问计数值写入管理链表中,表 示第一大数据块存在于缓存镜像中。
[0093] 图8为实施例=中第一大数据块进入缓存镜像前的管理链表示意图,图9为实施 例=中第一大数据块进入缓存镜像后的管理链表示意图。如图8所示,该管理链表中包括 数据块3炬LOCK3)、数据块6炬LOCK6)、数据块1 @L0CK1)和数据块8炬LOCKS),BLOCK3的访 问计数值为5,化0CK6的访问计数值为7,化0CK1的访问计数值为7, BLOCKS的访问计数值 为8 ;在缓存镜像外其它的数据块中,即第一大数据块为化0CK5,访问计数值为5。当化0CK5 再次被访问时,其访问计数值加1变为6,此时化0CK5的访问计数值已经大于化0CK3,即 BL0CK3为第一个访问计数值小于化0CK5的数据块,则将化0CK3作为第二大数据块,而在 管理链表中,BLOCKS不在链表中,即第一大数据块不在缓存镜像中,则需要在管理链表中进 行替换,如图9所示,将BLOCKS从链表中移除,并将BLOCKS加入管理链表。在将BLOCKS力口 入管理链表时,从头往后查找,找到第一个访问计数值大于或者等于6的数据块,此例中为 BL0CK6,即化0CK6为第四数据块,则把化0CK5加入到管理链表中化0CK6前。
[0094] 需要说明的是,本实施例中,管理链表中可W包括更多的数据块的标识的访问计 数值,并不W图8和图9为限。
[0095] 步骤302、在BAT中将第二大数据块对应的位置标记失效,并将第一大数据块的起 始偏移位置存储到BAT中的第一大数据块对应的位置。
[0096] 其中,第一大数据块的起始偏移位置为第二大数据块的起始偏移位置。
[0097] 在本实施例中,将2MB的数据块作为大数据块,将512B的数据块作为小数据块,使 用BAT来管理该些2MB块,BAT中存储了每一个2MB数据块在存储空间中的起始偏移位置。 例如,对于一个容量为20GB的VHD虚拟硬盘文件,其BAT项数量为10240个,如果第5个 2MB数据块存储在VHD虚拟硬盘文件偏移地址为100M的位置处,则在BAT中第5个表项处 的值就是100M,若BAT中的某一项为0XFFFFFFFF,则表示该数据块不存在于缓存镜像中。 [009引表1为实施例S中第一大数据块加入缓存镜像前的BAT,表2为实施例S中第一大 数据块加入缓存镜像后的BAT。如表1所示,该BAT中存储了S个数据块的起始位置偏移 地址,分别为6M+1. 5K,4M+化,2M+512,0M表示的为该BAT对应的存储空间中的相对起始偏 移位置,并不是存储空间中实际的起始偏移位置。在本实施例中,第二大数据块的起始偏移 位置为6M+1. 5K,则将BAT中第S个表项中标记为0XFFFFFFFF,则说明该第S数据不在缓存 镜像中,再将起始偏移位置写入6M+1. 5K写入BAT的第五个表项中,如表2所示,BAT中第 五个表项对应的为第一大数据块的起始偏移位置,则说明该第一大数据块存在于缓存镜像 中,并且,该第一大数据块的存储空间为原来的第二大数据块的存数空间。
[0099] 表 1
[0100]

【权利要求】
1. 一种缓存的处理方法,其特征在于,包括: 接收读输入输出10请求,并根据所述读10请求,从父镜像中读取小数据块; 若包含所述小数据块的第一大数据块不在缓存镜像中,则检查所述缓存镜像的存储空 间是否已满或者所述存储空间的占用比例是否大于或者等于预设比例阈值; 若所述缓存镜像的存储空间已满或者所述存储空间的占用比例大于或者等于所述预 设比例阈值,则将所述第一大数据块替换所述缓存镜像中的第二大数据块,并将所述小数 据块写入所述缓存镜像中所述第一大数据块对应的存储空间。
2. 根据权利要求1所述的方法,其特征在于,所述从父镜像中读取小数据块之后,所述 方法还包括: 将包含所述小数据块的第一大数据块的访问计数值加1 ; 则在所述若包含所述小数据块的第一大数据块不在缓存镜像中,则检查所述缓存镜像 的存储空间是否已满或者所述存储空间的占用比例是否大于或者等于预设比例阈值之前, 所述方法还包括: 将所述第一大数据块的标识和对应的访问计数值写入管理链表。
3. 根据权利要求1或2所述的方法,其特征在于,还包括: 若所述缓存镜像的存储空间未满或者所述存储空间的占用比例小于所述预设比例阈 值,则将所述第一大数据块加入所述缓存镜像,并将所述小数据块写入所述缓存镜像中所 述第一大数据块对应的存储空间。
4. 根据权利要求2所述的方法,其特征在于,所述将所述第一大数据块替换所述缓存 镜像中的第二大数据块,并将所述小数据块写入所述缓存镜像中所述第一大数据块对应的 存储空间,具体包括: 根据所述第一大数据块的访问计数值,从所述管理链表的表头位置开始依次查找,获 取所述第二大数据块,将所述第二大数据块的标识和访问计数值从所述管理链表中移除, 并将所述第一大数据块的标识和访问计数值写入所述管理链表中第三个大数据块的标识 之前;其中,所述第二大数据块为在所述管理链表中,访问计数值小于或者等于第一大数据 块的访问计数值的第一个数据块;所述第三大数据块为删除了所述第二大数据块的标识 后的管理链表中,访问计数值大于或者等于所述第一大数据块的访问计数值的第一个数据 块; 在块分配表BAT中将第二大数据块对应的位置标记失效,并将所述第一大数据块的起 始偏移位置存储到BAT中的第一大数据块对应的位置;其中,所述第一大数据块的起始偏 移位置为所述第二大数据块的起始偏移位置; 将所述小数据块写入所述缓存镜像中所述第一大数据块的起始偏移位置对应的存储 空间。
5. 根据权利要求3所述的方法,其特征在于,所述将所述第一大数据块加入所述缓存 镜像,并将所述小数据块写入所述缓存镜像中所述第一大数据块对应的存储空间,具体包 括: 根据所述第一大数据块的访问计数值,将所述第一大数据块的标识和访问计数值写入 所述管理链表中; 在所述缓存镜像中查找到一个空闲块,并将所述小数据块写入所述空闲块;其中,所述 空闲块为所述第一大数据块对应的存储空间; 将所述空闲块的起始偏移位置写入BAT中所述空闲块对应的位置。
6. 根据权利要求2所述的方法,其特征在于,若所述第一大数据块在缓存镜像中,则根 据所述访问计数值,在所述管理链表中更新所述第一大数据块的标识所在的位置和所述访 问计数值,并将所述小数据块写入所述缓存镜像中第一大数据块对应的存储空间。
7. -种缓存的处理装置,其特征在于,包括: 读取模块,用于接收读输入输出10请求,并根据所述读10请求,从父镜像中读取小数 据块; 检查模块,用于若包含所述小数据块的第一大数据块不在缓存镜像中,则检查所述缓 存镜像的存储空间是否已满或者所述存储空间的占用比例是否大于或者等于预设比例阈 值; 处理模块,用于若所述缓存镜像的存储空间已满或者所述存储空间的占用比例大于或 者等于所述预设比例阈值,则将所述第一大数据块替换所述缓存镜像中的第二大数据块, 并将所述小数据块写入所述缓存镜像中所述第一大数据块对应的存储空间。
8. 根据权利要求7所述的装置,其特征在于,所述读取模块还用于将包含所述小数据 块的第一大数据块的访问计数值加1 ; 所述处理模块还用于将所述第一大数据块的标识和对应的访问计数值写入管理链表。
9. 根据权利要求7或8所述的装置,其特征在于,所述处理模块还用于若所述缓存镜像 的存储空间未满或者所述存储空间的占用比例小于所述预设比例阈值,则将所述第一大数 据块加入所述缓存镜像,并将所述小数据块写入所述缓存镜像中所述第一大数据块对应的 存储空间。
10. 根权利要求8所述的装置,其特征在于,所述处理模块包括: 第二大数据块获取单元,用于根据所述第一大数据块的访问计数值,从所述管理链表 的表头位置开始依次查找,获取所述第二大数据块,将所述第二大数据块的标识和访问计 数值从所述管理链表中移除,并将所述第一大数据块的标识和访问计数值写入所述管理链 表中第三个大数据块的标识之前;其中,所述第二大数据块为在所述管理链表中,访问计数 值小于或者等于第一大数据块的访问计数值的第一个数据块;所述第三大数据块为删除了 所述第二大数据块的标识后的管理链表中,访问计数值大于或者等于所述第一大数据块的 访问计数值的第一个数据块; 位置标记单元,用于在BAT中将第二大数据块对应的位置标记失效,并将所述第一大 数据块的起始偏移位置存储到BAT中的第一大数据块对应的位置;其中,所述第一大数据 块的起始偏移位置为所述第二大数据块的起始偏移位置; 小数据块写入单元,用于将所述小数据块写入所述缓存镜像中所述第一大数据块的起 始偏移位置对应的存储空间。
11. 根据权利要求9所述的装置,其特征在于,所述处理模块包括: 标识写入单元,用于根据所述第一大数据块的访问计数值,将所述第一大数据块的标 识和访问计数值写入所述管理链表中; 空闲块获取单元,用于在所述缓存镜像中查找到一个空闲块,并将所述小数据块写入 所述空闲块;其中,所述空闲块为所述第一大数据块对应的存储空间; 位置写入单元,用于将所述空闲块的起始偏移位置写入BAT中所述空闲块对应的位 置。
12.根据权利要求8所述的方法,其特征在于,所述处理模块还包括: 更新单元,用于若所述第一大数据块在缓存镜像中,则根据所述访问计数值,在所述管 理链表中更新所述第一大数据块的标识所在的位置和所述访问计数值,并将所述小数据块 写入所述缓存镜像中第一大数据块对应的存储空间。
【文档编号】G06F11/14GK104503703SQ201410784834
【公开日】2015年4月8日 申请日期:2014年12月16日 优先权日:2014年12月16日
【发明者】李明君 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1