一种支持固态盘缓存动态分配的混合存储系统和方法
【专利摘要】本发明提供了一种支持固态盘缓存动态分配的混合存储系统和方法,该方法用固态盘和磁盘构建混合存储系统,其中固态盘用作磁盘的缓存,本发明方法实时监控应用的负载特征及固态盘缓存命中率,并建立应用的性能模型,从而根据应用的性能需求和负载特征的变化动态地分配固态盘缓存空间。本发明提供的固态盘缓存管理方法可以根据应用的性能需求合理地分配固态盘缓存空间,实现应用级的缓存区分服务,并通过将应用的固态盘缓存空间进一步划分为读缓存和写缓存区间,减少脏数据块及其带来的页复制和垃圾回收开销,同时将空闲的固态盘缓存空间按照应用的缓存利用效率分配给应用,从而提高混合存储系统的固态盘缓存命中率和整体性能。
【专利说明】一种支持固态盘缓存动态分配的混合存储系统和方法
【技术领域】
[0001]本发明属于计算机存储【技术领域】,具体涉及一种支持固态盘缓存动态分配的混合存储系统和方法,上述系统可以根据应用的负载特征和性能需求,动态地分配和调整每个应用的固态盘缓存空间大小以满足应用延迟需求,并优化混合存储系统的整体性能。
【背景技术】
[0002]鉴于固态盘和磁盘在价格、容量、寿命等方面具有各自的优势,数据中心越来越倾向于用固态盘和磁盘构建大容量、高性能和低价格的混合存储系统。由于固态盘的容量和价格介于磁盘和内存之间,因此,大量混合存储系统将固态盘用作磁盘的缓存,其中最典型的代表当属Facebook公司的Flashcache内核模块,Flashcache采用固态盘作为磁盘的缓存,加速数据库MySQL的访问性能,以弥补传统磁盘随机读写的性能缺陷。
[0003]然而,在大规模数据服务中心,大量的并发应用共享存储系统,相互竞争固态盘缓存资源,应用之间的相互干扰会破坏每个应用内部的访问局部性,降低了固态盘缓存命中率。同时,在上述混合存储系统中,固态盘作为磁盘的缓存资源,可以加速每个应用的访问性能,从而向应用提供更优质的服务,因此,每个应用所获得的固态盘存储容量将直接影响其最终访问性能,盲目的固态盘缓存竞争可能导致应用的性能无法得到保证。同时,在数据服务中心环境下,不同的应用具有不同的服务质量需求,比如,在线事务处理和游戏要求比较低的响应延迟,而多媒体应用则属于软实时应用,备份等应用则对延迟没有明显的限制,因此,数据中心需要优化存储系统的整体性能,并同时根据应用的性能需求提供区分的存储服务。尽管相对于内存资源,固态盘的容量更大,价格更便宜,但对于海量的数据而言,固态盘的容量仍然不过是沧海一粟。因此,为应用分配的固态盘缓存资源大小不仅直接影响着应用的服务质量,也会影响到存储系统的整体性能。
[0004]因此,在基于固态盘和磁盘的混合存储系统中,如何根据应用的性能需求和负载特征的动态变化,设计出一种固态盘缓存动态分配的方法,从而在满足应用对数据访问性能需求的同时,提高存储系统的整体性能,是数据服务中心目前亟需解决的问题。
【发明内容】
[0005]为了解决上述问题,本发明提出了一种支持固态盘缓存动态分配的混合存储系统,可以根据应用的负载特征和性能需求动态地分配固态盘缓存空间,从而向并发应用提供区分的存储服务质量保证,并提高了固态盘缓存空间利用效率,极大地提高了混合存储系统的整体性能。
[0006]本发明公布了一种混合存储系统,包括一块或多块固态盘组成的固态盘阵列设备、一块或多块磁盘组成的磁盘阵列以及固态盘缓存管理模块。所述混合存储系统对于操作系统或应用程序展现为统一的逻辑存储设备,所述固态盘与磁盘通过控制器与计算机系统总线相连。在上述混合存储系统中,固态盘用作磁盘的缓存,用以加速应用的访问与降低请求的响应时间,而固态盘缓存管理模块则负责固态盘缓存管理及空间分配,并向上层应用提供区分的存储服务质量保障。
[0007]本发明的主要原理为:在上述基于固态盘与磁盘的混合存储系统中,通过管理和分配每个应用所获得的固态盘缓存空间大小可以实现基于应用级别的区分存储服务。固态盘缓存管理模块可以根据应用的优先级和性能需求,对关键的应用分配更多的固态盘资源,从而使得不同优先级的应用可以使用的固态盘缓存空间大小不同。同时,可以根据应用负载特征变化和固态盘利用效率动态地调整每个应用所获得的固态盘空间大小,从而避免固态盘空间浪费并提高了存储系统的整体性能。
[0008]本发明是通过如下方式实现的,固态盘缓存管理模块通过实时记录应用的历史缓存空间分配情况和命中率,以及应用的I/o负载特征和平均延迟,根据历史统计信息,并采用多元回归方法,动态地提取和建立应用访问性能与固态盘缓存分配之间的关系模型。根据应用的性能模型,固态盘缓存管理模块可以确定满足应用性能所需要的最小固态盘缓存大小,并将分配给应用的固态盘缓存进一步划分为读缓存和写缓存。同时,鉴于不同应用的缓存利用效率不同,固态盘缓存管理模块将空闲固态盘空间按不同应用的缓存利用效率分配给应用以提高混合存储系统的整体性能。
[0009]为了实现上述目的,本发明提出了一种支持固态盘缓存动态分配的混合存储系统,所述系统包括:
[0010]一块或多块固态盘组成的固态盘阵列、一块或多块磁盘组成的磁盘阵列以及固态盘缓存管理模块;
[0011]其中所述混合存储系统对于操作系统或应用程序展现为统一的逻辑设备,所述固态盘与磁盘通过控制器与计算机系统总线相连,其中所述固态盘作为所述磁盘的缓存;
[0012]所述固态盘缓存管理模块用于记录每个应用的读写请求比例、每个应用的读写缓存命中率、固态盘与磁盘的响应时间,并用于根据这些数据以及预先为每个应用指定的目标延迟,计算满足每个应用的目标延迟所需求的固态盘的最小读缓存和写缓存大小,并根据计算的最小读写缓存大小和固态盘的存储容量为每个应用分配固态盘缓存。
[0013]具体地,所述固态盘缓存管理模块具体包括负载分析器、缓存分配模块、性能监控器、缓存映射表模块和请求处理模块,其中:
[0014]所述缓存分配模块,用于在系统初始化时,为每个应用分配相同大小的读缓存区和写缓存区;
[0015]所述负载分析器,用于在读写请求到达时,记录每个应用的读写请求比例;
[0016]所述性能监控器,用于在读写请求完成时,统计固态盘和磁盘的响应时间以及每个应用的读写缓存命中率;
[0017]所述缓存映射表模块,存储有位图映射表和哈希冲突链表,其中位图映射表用于管理和标记固态盘中空闲的数据块,而哈希冲突链表用于加速判断请求是否存储在固态盘中;
[0018]所述请求处理模块,用于在读写请求到达时,先判断请求的类型,从而将应用的写请求数据写入到存储系统中或是向应用返回其请求的读数据;
[0019]所述缓存分配模块,还用于根据所述负载分析器记录的每个应用的读写请求比例、性能监控器统计的固态盘、磁盘的响应时间以及每个应用的读写缓存命中率,和预先为每个应用指定的目标延迟,实时计算满足每个应用延迟需求的固态盘的最小读缓存和写缓存大小,根据计算的读缓存和写缓存大小以及存储系统的配置计算分配给每个应用的读缓存和写缓存大小,并根据分配给每个应用的最佳读缓存和写缓存大小调整每个应用的读缓存区和写缓存区。进一步地,所述缓存分配模块实时计算满足每个应用延迟需求的固态盘
的读缓存区大小.
【权利要求】
1.一种支持固态盘缓存动态分配的混合存储系统,其特征在于,所述系统包括: 一块或多块固态盘组成的固态盘阵列、一块或多块磁盘组成的磁盘阵列以及固态盘缓存管理模块; 其中所述混合存储系统对于操作系统或应用程序展现为统一的逻辑设备,所述固态盘与磁盘通过控制器与计算机系统总线相连,其中所述固态盘作为所述磁盘的缓存; 所述固态盘缓存管理模块用于记录每个应用的读写请求比例、每个应用的读写缓存命中率、固态盘与磁盘的响应时间,并用这些数据以及预先为每个应用指定的目标延迟,计算满足每个应用延迟所需求的最小固态盘读缓存和写缓存大小,并根据计算的最小读缓存和写缓存大小为每个应用分配固态盘缓存。
2.根据权利要求1所述的混合存储系统,其特征在于,所述固态盘缓存管理模块具体包括负载分析器、缓存分配模块、性能监控器、缓存映射表模块和请求处理模块,其中: 所述缓存分配模块,用于在系统初始化时,为每个应用分配相同大小的读缓存区和写缓存区; 所述负载分析器,用于在读写请求到达时,记录每个应用的读写请求比例; 所述性能监控器,用于在读写请求完成时,统计固态盘和磁盘的响应时间以及每个应用的读写缓存命中率; 所述缓存映射表模块 ,存储有位图映射表和哈希冲突链表,其中位图映射表用于管理和标记固态盘中空闲的数据块,而哈希冲突链表用于加速判断请求是否存储在固态盘中; 所述请求处理模块,用于在读写请求到达时,先判断请求的类型,从而将应用的写请求数据写入到存储系统中或是向应用返回其请求的读数据; 所述缓存分配模块,还用于根据所述负载分析器记录的每个应用的读写请求比例、性能监控器统计的固态盘、磁盘的响应时间以及每个应用的读写缓存命中率,和预先为每个应用指定的目标延迟,实时计算满足每个应用延迟需求的固态盘的最小读缓存和写缓存大小,根据计算的读缓存和写缓存大小以及存储系统的配置计算分配给每个应用的最佳读缓存和写缓存大小,并根据分配给每个应用的最佳读缓存和写缓存大小调整每个应用的读缓存区和写缓存区。
3.根据权利要求2所述的混合存储系统,其特征在于,所述缓存分配模块实时计算满足每个应用延迟需求的固态盘的读缓存区大小和写缓存区大小.C1fmts?具体为: 求解目标函数minC, =Ci+G,其约束条件为:
'T- < Ti
I — /arg
?C'R > O ,
C > O 其中,?和Cii分别为应用ai的读缓存区和写缓存区大小,Ci表示应用%固态盘缓存总大小,I ^ i ^ N, N为运行于混合存储系统上的应用数目; 3Ta1I=表示为应用Bi所指定的目标延迟; Ti为应用%的请求平均响应时间,Ti=PiXTm^(1-Pl)XKrileiPi为应用ai的读请求所占比例; Timod为应用%读请求的平均响应时间,
4.根据权利要求2或3所述的混合存储系统,其特征在于,所述缓存分配模块根据上述计算的读缓存和写缓存大小以及存储系统的配置计算分配给每个应用的最佳读缓存区大小Ciww和写缓存区大小,具体为: 当混合存储系统有空闲固态盘缓存空间时,则将剩余固态盘缓存空间按照应用的缓存利用效率分配给所有应用以提高混合存储系统效率; 当所有应用所需求的固态盘缓存空间超过了混合存储系统中固态盘空间大小时,则将固态盘缓存空间按需求比例分配给所有应用以保证服务公平性;具体来说: 若
5.根据权利要求2至4任一项所述的混合存储系统,其特征在于,所述缓存分配模块根据分配给每个应用的最佳读缓存区和写缓存区的大小调整每个应用的读缓存区和写缓存区,具体为: 若应用%当前读缓存大小超过<4,/τ ,则根据LRU算法将相应的多余缓存数据置为无效;若应用%当前写缓存大小超过,则根据LRU算法将相应的写缓存数据刷回到磁盘上,并将缓存数据置为无效; 当应用的读或写缓存小于所分配的固态盘缓存空间大小时,则将空闲的固态盘缓存块加入到应用对应的读写缓存区。
6.根据权利要求1至5任一项所述的混合存储系统,其特征在于,所述请求处理模块对读写请求的操作具体为: 判断到达请求的类型; 当到达请求为读请求时,请求处理模块根据数据块的物理位置在缓存映射表模块中的哈希冲突链表查找数据块是否在固态盘中,若固态盘缓存命中,则直接从固态盘中读取数据返回给上层应用;否则,从磁盘中读取用户请求的数据,并且将用户请求的数据写入到固态盘中;当请求处理模块需要向固态盘中写入数据时,若固态盘有空闲空间时,则直接将最近访问的数据写入到固态盘中;否则,请求处理模块会根据LRU算法将最近最少访问的数据块置为无效,并写入新数据; 对于写操作请求,请求处理模块根据请求数据的物理地址在缓存映射表模块中的哈希冲突链表中查找数据块是否在固态盘中;当请求的数据在应用的读缓存区时,请求处理模块需要将读缓存区中相应的数据置为无效,并将数据写入到应用的写缓存区;如果请求的数据已经在写缓存区,则直接更新写缓存区中对应的数据;当写请求未命中时,请求处理模块则将新数据直接写入到应用的固态盘写缓存区中,而数据刷新则通过后台进程进行;当固态盘没有空间容纳新数据时,请求处理模块则从固态盘缓存中读出脏数据,并将其写到磁盘上。
7.一种基于固态盘和磁盘混合存储系统的动态分配方法,其特征在于,所述方法包括以下步骤: (O当应用的读写请求到达时,记录每个应用的读写请求比例;请求完成时,统计每个应用的读写缓存命中率及固态盘和磁盘的响应时间;所述数据用于计算满足每个应用的目标延迟所需求的固态盘的最小读缓存和写缓存大小;(2)计算每个应用的读负载特征常量和写负载特征常量;假设分配给应用%的固态盘读缓存区和写缓存大小分别为Ci和,对应的读缓存和写缓存命中率分别为Irli和H。,根据最近若干组观测值并采用曲线拟合方法估计该应用负载的读和写特征常量和/1:
8.如权利要求7所述的方法,其特征在于,所述步骤(6)中为应用分配固态盘缓存空间具体为: 若
9.如权利要求8所述的方法,其特征在于,还包括,根据分配给各应用的固态盘缓存空间大小调整各应用的固态盘缓存区,具体为: 若应用%当前读缓存大小超过
【文档编号】G06F12/08GK103902474SQ201410145032
【公开日】2014年7月2日 申请日期:2014年4月11日 优先权日:2014年4月11日
【发明者】冯丹, 王芳, 张泉, 谢燕文 申请人:华中科技大学