缓存磁盘支持热插拔的方法和装置与流程

文档序号:20874844发布日期:2020-05-26 16:21阅读:565来源:国知局
缓存磁盘支持热插拔的方法和装置与流程

本发明涉及缓存技术领域,特别是指一种缓存磁盘支持热插拔的方法和装置。



背景技术:

bcache是linux内核块设备层cache,支持多块机械硬盘(hdd)使用同一块固态硬盘(ssd)作为缓存磁盘,它让ssd作为hdd的缓存成为了可能。

目前,ssd硬盘已经比较普及了,其特点是对于随机读写的iops(input/outputoperationspersecond,每秒读写次数)要远远超过传统机械硬盘(hdd);但是价格贵,容量小是ssd硬盘弱于传统机械硬盘的缺点。因此,bcache(b+树缓存)技术就是用一块ssd来作为cache(缓存),即用于缓存的块设备;将机械硬盘作为存储数据的仓库,即被缓存的块设备;依靠ssd的特性来就加速后端机械硬盘的读写过程。

通常,bcache的磁盘不支持热插拔;也就是说,带电插拔bcache的磁盘磁盘,将导致磁盘中的缓存数据异常。



技术实现要素:

有鉴于此,本发明的目的在于提出一种缓存磁盘支持热插拔的方法和装置,实现bcache磁盘的热插拔,即bcache的磁盘在热插拔后仍然可以保证插拔前缓存的数据的正常。

基于上述目的,本发明提供一种缓存磁盘支持热插拔的方法,包括:

检测到bcache磁盘的用于缓存的块设备cache_dev磁盘或被缓存的块设备cached_dev磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,以及所述cached_dev磁盘中的脏数据状态标识;

检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注册所述bcache磁盘的cache_dev磁盘和cached_dev磁盘,并根据保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘。

所述保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,具体包括:

保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的缓存cache集合标识;

其中,所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的缓存cache集合标识为相同标识。

其中,所述根据保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘,具体为:

根据保持的cache_dev磁盘与cached_dev磁盘相同的缓存cache集合标识,确认所述cache_dev磁盘与cached_dev磁盘属于所述bcache磁盘;

根据保持的所述cached_dev磁盘的脏数据状态标识,在所述脏数据状态标识有效的情况下将所述cache_dev磁盘中缓存的数据写入到所述cached_dev磁盘中。

较佳地,在所述检测到bcache磁盘的用于缓存的块设备cache_dev磁盘或被缓存的块设备cached_dev磁盘被拔出后,还包括:

触发禁止缓存cache集合的读写操作的标识,其中,所述cache集合是由所述bcache磁盘的cache_dev磁盘和cached_dev磁盘所组成。

较佳地,在所述检测到所述cache_dev磁盘或cached_dev磁盘被插入后,还包括:

注销掉所述bcache磁盘的cache集合,以清除掉禁止所述cache集合的读写操作的标识;

注册所述cache_dev磁盘和cached_dev磁盘。

较佳地,在所述检测到bcache磁盘的用于缓存的块设备cache_dev磁盘或被缓存的块设备cached_dev磁盘被拔出后,还包括:

解绑并停止所述bcache磁盘的cache_dev磁盘和cached_dev磁盘。

本发明还提供一种缓存磁盘支持热插拔的装置,包括:磁盘拔插检测模块,进一步还包括:

磁盘信息保持模块,用于在所述磁盘拔插检测模块检测到bcache磁盘的cache_dev磁盘或cached_dev磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,以及所述cached_dev磁盘中的脏数据状态标识;

磁盘注册模块,用于在所述磁盘拔插检测模块检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注册所述cache_dev磁盘和cached_dev磁盘;

bcache磁盘恢复模块,用于根据所述磁盘信息保持模块保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如上所述的bcache磁盘支持热插拔的方法。

本发明技术方案中,检测到bcache磁盘的用于缓存的块设备(cache_dev)磁盘或被缓存的块设备(cached_dev)磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,以及所述cached_dev磁盘中的脏数据状态标识;检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注册所述bcache磁盘的cache_dev磁盘和cached_dev磁盘,并根据保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘。

这样,通过保持被拔出的cache_dev/cached_dev磁盘,与bcache磁盘中其它磁盘的关联关系,则可以在该cache_dev/cached_dev磁盘被重新插入时,根据保持的关联关系识别出插入的cache_dev/cached_dev磁盘与其它磁盘属于同一bcache磁盘,且可根据所述cached_dev磁盘中有效的脏数据状态标识,将之前缓存于cache_dev磁盘中的数据继续写入到所述bcache磁盘的cached_dev磁盘中,从而实现恢复所述bcache磁盘,避免磁盘间传输的数据出现异常,即热插拔后仍然可以获得插拔前缓存的数据。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种缓存磁盘支持热插拔的方法流程图;

图2为本发明实施例提供的一种缓存磁盘支持热插拔的装置内部结构框图;

图3为本发明实施例提供的一种电子设备硬件结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

本发明的发明人对现有bcache磁盘热插拔后数据出现异常的原因进行分析:bcache磁盘通常包括多块磁盘,即包括一个ssd作为用于缓存的块设备(cache_dev)磁盘,多个hdd作为被缓存的块设备(cached_dev)磁盘。当带电拔出其中一块磁盘时,磁盘间的关联性将被破坏,导致在磁盘间传输的数据出现异常。

基于上述分析,本发明技术方案中,检测到bcache磁盘的用于缓存的块设备(cache_dev)磁盘或被缓存的块设备(cached_dev)磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,以及所述cached_dev磁盘中的脏数据状态标识;检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注册所述bcache磁盘的cache_dev磁盘和cached_dev磁盘,并根据保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘。

这样,通过保持被拔出的cache_dev/cached_dev磁盘,与bcache磁盘中其它磁盘的关联关系,则可以在该cache_dev/cached_dev磁盘被重新插入时,根据保持的关联关系识别出插入的cache_dev/cached_dev磁盘与其它磁盘属于同一bcache磁盘,且可根据所述cached_dev磁盘中有效的脏数据状态标识,将之前缓存于cache_dev磁盘中的数据继续写入到所述bcache磁盘的cached_dev磁盘中,从而实现恢复所述bcache磁盘,避免磁盘间传输的数据出现异常,即热插拔后仍然可以获得插拔前缓存的数据。

下面结合附图详细说明本发明实施例的技术方案。

本发明提供的一种缓存磁盘支持热插拔的方法,具体流程如图1所示,包括如下步骤:

步骤s101:检测到bcache磁盘的cache_dev磁盘或cached_dev磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,以及所述cached_dev磁盘中的脏数据状态标识。

具体地,检测到bcache磁盘的cache_dev磁盘或cached_dev磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的缓存cache集合标识,以及所述cached_dev磁盘中的脏数据状态标识。

其中,所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的缓存(cache)集合标识为相同标识,而相同的cache集合标识表明了cache_dev磁盘与cached_dev磁盘的关联关系。

步骤s102:触发禁止缓存(cache)集合的读写操作的标识。

其中,所述cache集合是由所述bcache磁盘的cache_dev磁盘和cached_dev磁盘所组成。

步骤s103:解绑并停止所述bcache磁盘的cache_dev磁盘和cached_dev磁盘。

步骤s104:在所述检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注销掉所述bcache磁盘的缓存(cache)集合。

具体地,在所述检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注销掉所述bcache磁盘的缓存(cache)集合,从而清除掉禁止所述cache集合的读写操作的标识。

步骤s105:注册所述cache_dev磁盘和cached_dev磁盘。

步骤s106:根据保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘。

具体地,根据插入的cache_dev/cached_dev磁盘与所述bcache磁盘的其它磁盘相同的cache集合标识,识别出插入的cache_dev/cached_dev磁盘与所述bcache磁盘的其它磁盘的关联关系;

根据识别的磁盘的关联关系,以及所述cached_dev磁盘中有效的脏数据状态标识,可以将所述cache_dev磁盘中缓存的数据继续写入到cached_dev磁盘中,从而实现恢复所述bcache磁盘,避免磁盘间传输的数据出现异常,即热插拔后仍然可以获得插拔前缓存的数据。

需要说明的是,本发明实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本发明实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。

基于上述的缓存磁盘支持热插拔的方法,本发明实施例提供的一种缓存磁盘支持热插拔的装置,结构如图2所示,包括:磁盘拔插检测模块201、磁盘信息保持模块202、磁盘注册模块203、bcache磁盘恢复模块204。

其中,磁盘拔插检测模块201用于检测cache_dev磁盘或cached_dev磁盘的拔插;

磁盘信息保持模块202用于在所述磁盘拔插检测模块201检测到bcache磁盘的cache_dev磁盘或cached_dev磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,以及所述cached_dev磁盘中的脏数据状态标识;

磁盘注册模块203用于在所述磁盘拔插检测模块201检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注册所述cache_dev磁盘和cached_dev磁盘;

bcache磁盘恢复模块204用于根据所述磁盘信息保持模块202保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘。

进一步,本发明实施例提供的一种bcache磁盘支持热插拔的装置还包括:禁止读写操作模块205、磁盘集合注销模块206、磁盘解绑停止模块207。

其中,禁止读写操作模块205用于在所述磁盘拔插检测模块检测到bcache磁盘的cache_dev磁盘或cached_dev磁盘被拔出后,触发禁止缓存cache集合的读写操作的标识,其中,所述cache集合是由所述bcache磁盘的cache_dev磁盘和cached_dev磁盘所组成;

磁盘集合注销模块206用于在所述磁盘拔插检测模块检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注销掉所述bcache磁盘的cache集合,以清除掉禁止所述cache集合的读写操作的标识。

磁盘解绑停止模块207用于在所述磁盘拔插检测模块检测到bcache磁盘的cache_dev磁盘或cached_dev磁盘被拔出后,解绑并停止所述bcache磁盘的cache_dev磁盘和cached_dev磁盘。

图3示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的bcache磁盘支持热插拔的方法。

存储器1020可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本发明技术方案中,检测到bcache磁盘的用于缓存的块设备(cache_dev)磁盘或被缓存的块设备(cached_dev)磁盘被拔出后,保持所述bcache磁盘的cache_dev磁盘与cached_dev磁盘的关联关系,以及所述cached_dev磁盘中的脏数据状态标识;检测到所述cache_dev磁盘或cached_dev磁盘被插入后,注册所述bcache磁盘的cache_dev磁盘和cached_dev磁盘,并根据保持的关联关系和所述cached_dev磁盘中的脏数据状态标识,恢复所述bcache磁盘。

这样,通过保持被拔出的cache_dev/cached_dev磁盘,与bcache磁盘中其它磁盘的关联关系,则可以在该cache_dev/cached_dev磁盘被重新插入时,根据保持的关联关系识别出插入的cache_dev/cached_dev磁盘与其它磁盘属于同一bcache磁盘,且可根据所述cached_dev磁盘中有效的脏数据状态标识,将之前缓存于cache_dev磁盘中的数据继续写入到所述bcache磁盘的cached_dev磁盘中,从而实现恢复所述bcache磁盘,避免磁盘间传输的数据出现异常,即热插拔后仍然可以获得插拔前缓存的数据。

本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。

本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1