
技术摘要:
本发明提供一种基于SSD的缓存管理系统及方法,系统包括:客户端、机械硬盘存储模块、固态硬盘存储模块,以及用于对所述机械硬盘存储模块和固态硬盘存储模块进行数据存储管理的缓存管理模块,当数据节点读取数据时,通过解析文件标识,查找目标数据;本发明中采用无元数 全部
背景技术:
传统的存储系统的存储资源一般只有机械硬盘(HDD)构成,在读IO密集型场景,磁 盘往往会成为瓶颈。为了提升系统性能,减小请求响应时间、提高吞吐率等,大多存储系统 采用在内存和普通的机械硬盘之间增加固态硬盘,作为二级缓存。固态硬盘(solid state disk,简称SSD)是一种非易失性存储器,即可以保证数据断电不丢失,又可以提供比HDD更 高的读写速度;但是固态硬盘的擦除次数有限,其寿命较HDD短。 针对SSD的以上特点,现有技术中的缓存管理方案大多为在写数据时,直接写入 HDD;读数据时,需要统计数据热度,通过热度统计算法,将HDD中的冷数据回写到SSD中,就 成了热数据; 但是,现有的存储方案存在以下问题: 1、采用统计热数据的方式,本身就具有滞后性。在冷数据还未成为热数据这段时 间,多次读并未加速,在加载成为热数据之后,读的次数很少甚至不读的话,之后的读加速 的实际意义不大。 2、统计数据热度,并将数据从HDD回写到SSD的过程,可能会增加磁盘读IO,会影响 系统对外的瞬时读性能; 3、读SSD的前提,需要将SSD中数据与HDD中的数据映射关系加载到内存,或者是 SSD元数据信息加载到内存,若数据粒度较小,数据量大,会导致内存占用高,程序重启再次 加载耗时较长; 因此,需要一种适用于实时读取或准实时读数据且小IO密集型场景的存储方案, 来解决上述技术问题。
技术实现要素:
鉴于以上所述现有技术的缺点,本发明提供一种基于SSD的缓存管理系统及方法, 以解决上述技术问题。 本发明提供的基于SSD的缓存管理系统,包括: 客户端、机械硬盘存储模块、固态硬盘存储模块,以及用于对所述机械硬盘存储模 块和固态硬盘存储模块进行数据存储管理的缓存管理模块,所述机械硬盘存储模块包括一 个或多个机械硬盘,所述固态硬盘存储模块包括一个或多个固态硬盘; 当数据节点读取数据时,通过解析文件标识,查找内存中是否有目标数据,所述文 件标识包括固态硬盘索引和机械硬盘索引; 若内存中有目标数据,则直接返回数据; 若没有,则通过所述固态硬盘索引校验固态硬盘中是否存在, 如果固态硬盘中存在则从固态硬盘中读取数据; 4 CN 111552442 A 说 明 书 2/7 页 如果固态硬盘中不存在则通过机械硬盘索引从机械硬盘中读取后,返回至客户 端。 可选的,所述缓存管理模块预先在机械硬盘上根据写入数据生成机械硬盘索引; 当所述写入数据写入至固态硬盘时,根据固态硬盘中块的位置生成固态硬盘索 引; 根据所述机械硬盘索引和固态硬盘索引,获取文件标识,并反馈至客户端。 可选的,所述固态硬盘索引包括文件所在的块信息和写入起始位置,所述块信息 包括资源编号、块标识和偏移;所述机械硬盘索引包括文件的位置和长度。 可选的,通过客户端将文件标识发送至数据节点,数据节点解析文件标识后,若内 存中没有目标数据,则通过校验固态硬盘索引中的资源编号和块标识是否存在,如果存在, 则通过所述资源编号获取资源路径和文件写入偏移;如果资源编号和块标识已无效或不存 在,则通过机械硬盘索引从机械硬盘中读取。 本发明还提供一种基于SSD的缓存管理方法,包括: 当数据节点读取数据时,通过解析文件标识,查找内存中是否有目标数据,所述文 件标识包括固态硬盘索引和机械硬盘索引; 若内存中有目标数据,则直接返回数据; 若没有,则通过所述固态硬盘索引校验固态硬盘中是否存在, 如果固态硬盘中存在则从固态硬盘中读取数据; 如果固态硬盘中不存在则通过机械硬盘索引从机械硬盘中读取后,返回至客户 端。 可选的,预先在机械硬盘上根据写入数据生成机械硬盘索引; 当所述写入数据写入至固态硬盘时,根据固态硬盘中块的位置生成固态硬盘索 引; 根据所述机械硬盘索引和固态硬盘索引,获取文件标识。 可选的,所述固态硬盘索引包括文件所在的块信息和写入起始位置,所述块信息 包括资源编号、块标识和偏移;所述机械硬盘索引包括文件的位置和长度。 可选的,将固态硬盘存储空间划分为多个大小相同的块,每个块包括首部索引区、 中间数据区和尾部索引区,所述首部索引区包括块标识和数据长度,所述尾部索引区包括 与首部索引区相同的块标识; 当初始化加载固态硬盘资源时,将每个块的索引信息加载至内存中,读取并验证 块的首部索引区块标识的有效性, 若无效则将所述块标记为未使用; 若有效则继续验证尾部索引区中的块标识,如果与首部索引区中的块标识不相 同,则将所述块标记为未使用,如果相同,则对数据长度的有效性进行验证, 若数据长度无效,则将所述块标记为未使用; 若数据长度有效,则根据首部索引区获取所述块归属的数据节点。 可选的,对所述块标识的序号按时间顺序进行单调递增编号,当数据节点向缓存 管理模块请求缓存空间时,检查未使用容量是否足够, 若足够,则获取最近偏移的块,并将所述最近偏移的块信息返回至数据节点 5 CN 111552442 A 说 明 书 3/7 页 若不够,则获取序号最老的块,如果所述最老的块未被使用,则直接返回给数据节 点,如果已被使用,且被请求的数据节点使用,则生成新的块信息,返回给数据节点覆盖原 有块,如果已被使用,且被其他数据节点使用时,如果使用中的数据节点不在线,则直接返 回所述块;如果使用中的数据节点在线,则对块进行回收。 可选的,当客户端通过数据节点写数据时,通过预先设置的阈值对文件的大小进 行数据过滤,对满足过滤条件的数据写入固态硬盘之前,判断是否有可用的块, 如果有,则直接将过滤后的文件聚合写入块中,并生成固态硬盘索引, 如果没有,则进行空间申请,若申请成功则直接在申请成功的块中写入数据,若申 请失败,则判定固态硬盘写入失败,并返回只有机械硬盘索引的文件标识。 本发明的有益效果:本发明中的基于SSD的缓存管理系统及方法,采用无元数据的 结构,减少了元数据更新带来的SSD磨损,提高了SSD存储空间的利用率,大大缩短了进程重 启加载时间,减少了内存占用;在读文件时,只需通过文件File ID就可以快速定位到文件 是否存在于SSD上,以及在SSD上的写入位置和长度,以最直接的方式获取到文件,节省了复 杂的查找算法,从而大幅度提高了查找效率。 附图说明 图1是本发明实施例中基于SSD的缓存管理系统的读取数据的流程示意图。 图2是本发明实施例中基于SSD的缓存管理系统的缓存管理模块分配和回收Block 的流程示意图。 图3是本发明实施例中基于SSD的缓存管理系统的写数据流程示意图。 图4是本发明实施例中基于SSD的缓存管理系统的SSD存储空间分布示意图。