[发明专利]一种Linux Bcache中的垃圾回收方法及系统有效
申请号: | 201911369383.9 | 申请日: | 2019-12-26 |
公开(公告)号: | CN111352860B | 公开(公告)日: | 2022-05-13 |
发明(设计)人: | 王云飞;沈海嘉;郭照斌;石胜男 | 申请(专利权)人: | 天津中科曙光存储科技有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F9/52 |
代理公司: | 北京德恒律治知识产权代理有限公司 11409 | 代理人: | 章社杲;卢军峰 |
地址: | 300000 天津市滨海新区*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 linux bcache 中的 垃圾 回收 方法 系统 | ||
本发明公开了一种Linux Bcache中的垃圾回收方法,包括设置辅助B+tree;在写请求流程与GC流程并发时,写请求的数据元素插入所述辅助B+tree中,并在GC流程结束后,将插入的所述数据元素插入到原始B+tree中。本发明方法通过辅助B+tree,避免了写请求与GC过程并发时,请求必须等待造成的流量中断;结合“可抢占式锁”解决了Bcache GC过程中,读请求必须等待造成的流量中断;同时通过维护GC任务优先级的方式,避免GC任务一直被抢占而造成的缓存设备空间分配中断。
技术领域
本发明涉及计算机存储优化技术领域,具体而言,为一种Linux Bcache中的垃圾回收方法及系统。
背景技术
Linux Bcache是Linux内核中的块设备缓存,基本功能是用固态硬盘(缓存设备)给机械硬盘(后端设备)做缓存。在Bcache中,用B+tree(一种多路搜索树)维护缓存设备和后端设备上面数据的映射关系。
该B+tree涉及的操作有“查找,遍历,插入,整理”四种,向缓存设备写数据会向B+tree插入元素;从缓存设备读数据会从B+tree查找元素;将缓存设备上的数据写回到后端设备(回刷)会遍历B+tree来标记缓存设备上有“脏数据”的区间;将缓存设备上的空间回收再利用(垃圾回收)会整理B+tree的所有节点。
为保护B+tree上面数据的可靠性,防止上述四个动作并发进行(比如在插入的同时查找),Bcache采用“读写锁”的方式:对B+tree上面某节点加“读锁”,用来查找和遍历,此时请求写锁的其他任务必须等待;对B+tree上面某节点加“写锁”,用来插入和整理,此时请求读锁或者请求写锁的其他任务必须等待。同理,垃圾回收过程需要对B+tree的根节点加“写锁”。
图1为Bcache中几种主要流程对B+tree的加锁请求示意图,在读写流程中如图(1a)所示:需要持有一条路径锁,即比如要操作的数据元素在node(节点)103中,bcache需要先请求node101的锁,再请求node102的锁,最终请求node103的锁,在操作数据结束后,依次释放node103、node102、node101的锁。在整个流程中,其他请求操作node101、node102、node103的流程都将等待。
如图(1b)所示的,在GC(Bcache中垃圾回收功能,将缓存上空间回收再利用)流程中,以节点合并为例,需要请求node101、node104、node105、node106、node107的锁,然后持有这些节点的锁尝试合并node105、node106、node107;在整个b+tree的所有GC操作完成后,最终释放node101的锁;在此过程中,所有其他请求node101锁的流程都将等待;因此GC流程需要长时间持有根节点node101写锁,以及短时间持有正在处理的一条路径锁。
由此可见,读写流程和GC流程操作的是同一颗B+tree,所有操作均需要请求根节点(node101)的锁;这样则不可避免的带来了锁竞争的问题。
由于Linux bcache的核心数据结构是B+tree,并且利用“读写锁”技术实现B+tree操作的并发控制;那么将根节点加“写锁”的垃圾回收过程中,所有块设备的读写请求都将等待,即Bcache垃圾回收的过程中,会造成读写业务的流量中断问题。
Bcache中的垃圾回收过程会涉及“B+tree节点合并”、“B+tree节点整理写入磁盘”、“标记缓存设备上各区间用途用量”等操作;这些操作耗时比较大,并且所使用的缓存设备容量越大,耗时越大;因此,随着固态硬盘的普及和容量增大,垃圾回收过程中的流量中断问题会越来越成为Bcache的性能瓶颈。
有鉴于此,特提出本发明。
发明内容
针对现有技术中的缺陷,本发明提供一种Linux Bcache中的垃圾回收方法和系统,解决上述Bcache垃圾回收的过程中的流量中断问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津中科曙光存储科技有限公司,未经天津中科曙光存储科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911369383.9/2.html,转载请声明来源钻瓜专利网。