一种SSD缓存池的管理方法、系统以及装置与流程

文档序号:17473496发布日期:2019-04-20 05:58阅读:162来源:国知局
一种SSD缓存池的管理方法、系统以及装置与流程

本发明涉及san存储技术领域,特别涉及一种ssd缓存池的管理方法;还涉及一种ssd缓存池的管理系统、装置以及计算机可读存储介质。



背景技术:

目前,业界用于对ssd(solidstatedisk,固态硬盘)盘进行虚拟化的ssd缓存池与raido类似,将ssd缓存池上的资源进行分块,并将各数据块以条带的形式分配给ssd缓存池上的ssd缓存分区,从而实现负载均衡。当其中的某块ssd盘出现故障时,由于无法从发生故障的ssd盘读取数据,也无法将数据写入发生故障的ssd盘中,从而致使i/o访问无法实现,造成整个ssd缓存池脱机,影响其他正常的ssd盘的使用,用户业务无法正常实施。

有鉴于此,如何提供一种ssd缓存池的管理方案,确保在ssd盘发生故障的情况下主机端的i/o访问仍可正常进行,实现ssd缓存池的高可用,提高用户体验是本领域技术人员亟待解决的技术问题。



技术实现要素:

本发明的目的是提供一种ssd缓存池的管理方法,可以确保在ssd盘故障的情况下i/o访问仍然能够正常进行,实现ssd缓存池的高可用,提高用户体验;本发明的另一目的是提供一种ssd缓存池的管理系统、装置以及计算机可读存储介质,均具有上述有益效果。

为解决上述技术问题,本发明提供了一种ssd缓存池的管理方法,包括:

接收驱动发送的故障ssd盘的地址并将所述地址记录于故障盘列表;

接收主机端的i/o请求后,根据所述i/o请求及所述故障盘列表判断所述主机端的目标ssd盘是否为所述故障ssd盘;

若所述目标ssd盘为所述故障ssd盘,则将所述i/o请求下发至hdd盘,以使所述主机端访问所述hdd盘实现读操作或写操作。

可选的,所述接收到主机端的i/o请求后,根据所述i/o请求及所述故障盘列表判断所述主机端的目标ssd盘是否为所述故障ssd盘,包括:

当所述主机端访问到所述目标ssd盘后,根据所述i/o请求及所述故障盘列表判断所述主机端的所述目标ssd盘是否为所述故障ssd盘。

可选的,所述接收到主机端的i/o请求后,根据所述i/o请求及所述故障盘列表判断所述主机端的目标ssd盘是否为所述故障ssd盘,包括:

在所述主机端访问到所述目标ssd盘前,根据所述i/o请求及所述故障盘列表判断所述主机端的所述目标ssd盘是否为所述故障ssd盘。

可选的,还包括:

将ssd缓存分区中占用所述故障ssd盘的元数据标记为无效;

更新ssd缓存池的位图中所述元数据对应的数据块为不可用状态;

将所述故障ssd盘标记为失效状态。

本发明还提供了一种ssd缓存池的管理系统,包括:

记录模块,用于接收驱动发送的故障ssd盘的地址,并将所述地址记录于故障盘列表;

判断模块,用于接收主机端的i/o请求,根据所述i/o请求及所述故障盘列表判断所述主机端的目标ssd盘是否为所述故障ssd盘;

发送模块,用于若所述目标ssd盘为所述故障ssd盘,则将所述i/o请求下发至hdd盘,以使所述主机端访问所述hdd盘实现读操作或写操作。

可选的,所述判断模块具体用于当所述主机端访问到所述目标ssd盘后,根据所述i/o请求及所述故障盘列表判断所述主机端的所述目标ssd盘是否为所述故障ssd盘。

可选的,所述判断模块具体用于在所述主机端访问到所述目标ssd盘前,根据所述i/o请求及所述故障盘列表判断所述主机端的所述目标ssd盘是否为所述故障ssd盘。

可选的,还包括:

第一标记模块,用于将ssd缓存分区中占用所述故障ssd盘的元数据标记为无效;

更新模块,用于更新ssd缓存池的位图中所述元数据对应的数据块为不可用状态;

第二标记模块,用于将所述故障ssd盘标记为失效状态。

为解决上述技术问题,本发明还提供了一种ssd缓存池的管理装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述任一项所述ssd缓存池的管理方法的步骤。

为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的ssd缓存池的管理方法的步骤。

本发明所提供的ssd缓存池的管理方法,包括接收驱动发送的故障ssd盘的地址并将所述地址记录于故障盘列表;接收主机端的i/o请求后,根据所述i/o请求及所述故障盘列表判断所述主机端的目标ssd盘是否为所述故障ssd盘;若所述目标ssd盘为所述故障ssd盘,则将所述i/o请求下发至hdd盘,以使所述主机端访问所述hdd盘实现读操作或写操作。

可见,本发明所提供的ssd缓存池的管理方法,通过驱动自动识别故障ssd盘,进而ssd缓存池接收驱动发送的故障ssd盘的地址并将故障ssd盘的地址写入故障盘列表。当接收主机端的i/o请求后,即可依据此i/o请求以及故障盘列表,判断主机端访问的目标ssd盘是否为故障ssd盘,如果主机端的目标ssd盘为故障ssd盘,则将主机端的i/o请求下发至hdd盘,以使主机端通过访问hdd盘实现读操作或写操作,从而即使ssd缓存池发生ssd盘故障,通过该方法,也可确保i/o请求不受影响,主机端的访问能够正常进行,有效提高了用户体验。

本发明所提供的ssd缓存池的管理系统、ssd缓存池以及计算机可读存储介质,均具有上述有益效果。

附图说明

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

图1为本发明实施例所提供的ssd缓存池的管理方法的流程示意图;

图2为本发明实施例所提供的ssd缓存池的管理系统的示意图;

图3为本发明实施例所提供的ssd缓存池的管理装置的示意图。

具体实施方式

本发明的核心是提供一种ssd缓存池的管理方法,可以确保在ssd盘故障的情况下i/o访问仍然能够正常进行,实现ssd缓存池的高可用,提高用户体验;本发明的另一核心是提供一种ssd缓存池的管理系统、装置以及计算机可读存储介质,均具有上述有益效果。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的ssd缓存池的管理方法的流程示意图;参考图1可知,该管理方法包括:

s100:接收驱动发送的故障ssd盘的地址,并将地址记录于故障盘列表;

具体的,本步骤旨在自动识别ssd缓存池中的故障ssd盘并进行记录,为后续操作提供判别依据。具体通过驱动检测ssd缓存池中是否存在故障ssd盘,当某块ssd盘发生故障时,驱动即可检测到ssd盘坏块或ssd盘脱机。进而,驱动会将故障ssd盘的地址发送至ssd缓存池。ssd缓存池接收驱动发送的故障ssd盘的地址后进一步将故障ssd盘的地址记录在故障盘列表中,如记录在fail_drive_list[]数组中,从而以此故障盘列表为依据,避免主机端访问此故障盘列表中任意一个地址对应的故障ssd盘使其读操作或写操作无法实现的情况发生。

s200:接收主机端的i/o请求,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘;

具体的,ssd缓存池接收到主机端的i/o请求后,进一步根据此i/o请求以及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘,具体可对i/o请求进行解析得到主机端的目标ssd盘,进而将主机端的目标ssd盘的地址与故障盘列表中的地址进行比对,从而判断主机端的目标ssd盘是否为故障ssd盘,若主机端的目标ssd盘的地址与故障列表中的某一地址一致,则主机端的目标ssd盘为故障ssd盘,相反,若主机端的目标ssd盘的地址与故障列表中的各地址均不一致,则主机端的目标ssd盘不是故障ssd盘。

其中,对于上述判断主机端的目标ssd盘是否为故障ssd盘的时间,本发明不做唯一限定,可以根据实际需要进行差异性设置。例如,可以在主机端的i/o请求达到对应的目标ssd盘后再进行上述判断,或者还可以在主机端的i/o请求达到对应的目标ssd盘前便进行上述判断等。

在一种具体的实施方式中,上述接收主机端的i/o请求后,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘包括:当主机端访问到目标ssd盘后,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘。

具体的,鉴于ssd盘发生故障的时间随机且不可预知,为了提高判断结果的可靠性,本实施例在主机端访问到目标ssd盘后,才根据该i/o请求以及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘。因此,即使ssd缓存池中的ssd盘在临近主机端访问到目标ssd盘的时刻发生故障,也可及时将此故障ssd盘的地址记录在故障盘列表中,从而将此故障ssd盘纳入上述判断的比对范围,避免遗漏故障ssd盘而导致主机端访问无法正常实现的情况发生。

在另一种具体的实施方式中,上述接收主机端的i/o请求后,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘包括:在主机端访问到目标ssd盘前,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘。

具体的,接收主机端的i/o请求后,ssd缓存池首先会对该i/o请求进行处理,以确定主机端的目标ssd盘具体为ssd缓存池中的哪一块ssd盘,进而在确定目标ssd盘后,主机端才会进一步访问到目标ssd盘。本实施例在主机端访问到目标ssd盘前,即在处理i/o请求的过程中便开始进行上述判断,从而若在主机端访问到目标ssd盘前就判断出主机端的目标ssd盘为故障ssd盘,则可停止主机端对目标ssd盘的访问。主机端在访问到目标ssd盘前即可转而访问hdd盘,从而减少软件运行工作量,提高运行效率。

进一步,还可以在主机端访问到目标ssd盘前以及当主机端访问到目标ssd盘后均根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘。即首先在主机端访问到目标ssd盘前进行上述判断,若通过此次判断得知主机端的目标ssd盘为故障ssd盘,则直接将此i/o请求下发至hdd盘,主机端直接去访问该hdd盘;若在该过程中判断得知主机端的目标ssd盘不是故障ssd盘,则进一步在主机端访问到目标ssd盘后再次进行上述判断操作,以确定此时主机端的目标ssd盘是否已经发生故障而成为故障ssd盘。

s300:若目标ssd盘为故障ssd盘,则将i/o请求下发至hdd盘,以使主机端访问hdd盘实现读操作或写操作。

具体的,由于故障ssd盘无法正常实现主机端的访问需求,即无法将数据写入故障ssd盘,也无法从故障ssd盘读取数据,因此,为满足主机端的访问需求,当ssd缓存池通过判断得知主机端的目标ssd盘为故障ssd盘时,会将主机端的i/o请求下发至hdd盘,以使主机端访问该hdd盘实现读操作或写操作。当然,若主机端的目标ssd盘不是故障ssd盘时,主机端可正常访问该目标ssd盘。

综上所述,本发明所提供的ssd缓存池的管理方法,通过驱动自动识别故障ssd盘,进而ssd缓存池接收驱动发送的故障ssd盘的地址并将故障ssd盘的地址写入故障盘列表。当接收主机端的i/o请求后,即可依据此i/o请求以及故障盘列表,判断主机端访问的目标ssd盘是否为故障ssd盘,如果主机端的目标ssd盘为故障ssd盘,则将主机端的i/o请求下发至hdd盘,以使主机端通过访问hdd盘实现读操作或写操作,从而即使ssd缓存池发生ssd盘故障,通过该方法,也可确保i/o请求不受影响,主机端的访问能够正常进行,有效提高了用户体验。

在上述实施例的基础上:可选的,还包括:将ssd缓存分区中占用故障ssd盘的元数据标记为无效;更新ssd缓存池的位图中上述元数据对应的数据块为不可用状态;将故障ssd盘标记为失效状态。

具体的,由于ssd二级缓存只用作读加速,所以被缓存到ssd盘上的数据都是clen数据,即实际只是生产数据的一个备份,ssd缓存中的数据丢失不会造成生产数据的丢失,故在ssd缓存中的ssd盘出现故障时可以将故障ssd盘从ssd缓存池中剔除,保证ssd缓存池中其他正常的ssd盘可以继续正常使用。因此,在上述实施例实现故障ssd盘自动识别的基础上,本实施例进一步实现故障ssd盘的自动剔除,在不影响用户正常业务的情况下,恢复ssd缓存池正常使用。具体而言,ssd缓存池会将加入到池中的ssd盘标记为member状态,即成员状态,同时会统一将ssd缓存池中的所有ssd盘划分为相同大小的数据块进行管理,并通过bitmap,即位图,标记这些数据块的使用情况。在ssd缓存池上创建ssd缓存时会根据分区的容量在ssd缓存池中分配数据块,ssd缓存池通过元数据标记数据块属于哪一个ssd缓存分区并更新bitmap将分区占用的数据块标记为“已使用”,另外ssd缓存池为其上创建的每一个ssd缓存分区维护一组元数据,标记每一个被占用数据块是否包含有效数据以及有效数据的长度等。当ssd缓存池中某个ssd盘出现故障后,驱动通过事件通知ssd缓存池,随后ssd缓存池便会识别故障ssd盘,并做相应的剔除处理,包括将ssd缓存分区中占用故障ssd盘的元数据标记为无效;更新ssd缓存池的位图中上述元数据对应的数据块为不可用状态;将故障ssd盘标记为失效状态。

通过本实施例所提供的ssd缓存池的管理方法,可以自动识别故障ssd盘,并将故障ssd盘剔除,从而保证ssd缓存池正常可用,可以在当ssd存储池出现故障ssd盘时,能够在不影响用户的正常业务的情况下恢复ssd缓存池正常使用,且不需人为参与,可有效降低维护成本,提高用户体验。

本发明还提供了一种ssd缓存池的管理系统,下文描述的该管理系统可以与上文描述的管理方法相互对应参照。请参考图2,图2为本发明实施例所提供的ssd缓存池的管理系统的示意图;结合图2可知,该管理系统包括:

记录模块10,用于接收驱动发送的故障ssd盘的地址并将地址记录于故障盘列表;

判断模块20,用于接收主机端的i/o请求,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘;

发送模块30,用于若目标ssd盘为故障ssd盘,则将i/o请求下发至hdd盘,以使主机端访问hdd盘实现读操作或写操作。

在上述实施例的基础上,可选的,判断模块20具体用于当主机端访问到目标ssd盘后,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘。

在上述实施例的基础上,可选的,判断模块20具体用于在主机端访问到目标ssd盘前,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘。

在上述实施例的基础上,可选的,还包括:

第一标记模块,用于将ssd缓存分区中占用故障ssd盘的元数据标记为无效;

更新模块,用于更新ssd缓存池的位图中元数据对应的数据块为不可用状态;

第二标记模块,用于将故障ssd盘标记为失效状态。

本发明还提供了一种ssd缓存池的管理装置,请参考图3,图3为本发明实施例所提供的ssd缓存池的管理装置的示意图;由图3可知,该管理装置包括存储器1和处理器2。其中,存储器1,用于存储计算机程序;处理器2,用于执行计算机程序时实现如下步骤:

接收驱动发送的故障ssd盘的地址并将地址记录于故障盘列表;接收主机端的i/o请求后,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘;若目标ssd盘为故障ssd盘,则将i/o请求下发至hdd盘,以使主机端访问hdd盘实现读操作或写操作。

对于本发明所提供的元数据落盘设备的介绍请参照上述元数据落盘方法的实施例,本发明在此不做赘述。

本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如下的步骤:

接收驱动发送的故障ssd盘的地址并将地址记录于故障盘列表;接收主机端的i/o请求后,根据i/o请求及故障盘列表判断主机端的目标ssd盘是否为故障ssd盘;若目标ssd盘为故障ssd盘,则将i/o请求下发至hdd盘,以使主机端访问hdd盘实现读操作或写操作。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

对于本发明所提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦写可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的ssd缓存池的管理方法、系统、装置及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围。

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