CN103902474B - 一种支持固态盘缓存动态分配的混合存储系统和方法 - Google Patents
一种支持固态盘缓存动态分配的混合存储系统和方法 Download PDFInfo
- Publication number
- CN103902474B CN103902474B CN201410145032.0A CN201410145032A CN103902474B CN 103902474 B CN103902474 B CN 103902474B CN 201410145032 A CN201410145032 A CN 201410145032A CN 103902474 B CN103902474 B CN 103902474B
- Authority
- CN
- China
- Prior art keywords
- solid
- application
- state disk
- write
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种支持固态盘缓存动态分配的混合存储系统和方法,该方法用固态盘和磁盘构建混合存储系统,其中固态盘用作磁盘的缓存,本发明方法实时监控应用的负载特征及固态盘缓存命中率,并建立应用的性能模型,从而根据应用的性能需求和负载特征的变化动态地分配固态盘缓存空间。本发明提供的固态盘缓存管理方法可以根据应用的性能需求合理地分配固态盘缓存空间,实现应用级的缓存区分服务,并通过将应用的固态盘缓存空间进一步划分为读缓存和写缓存区间,减少脏数据块及其带来的页复制和垃圾回收开销,同时将空闲的固态盘缓存空间按照应用的缓存利用效率分配给应用,从而提高混合存储系统的固态盘缓存命中率和整体性能。
Description
技术领域
本发明属于计算机存储技术领域,具体涉及一种支持固态盘缓存动态分配的混合存储系统和方法,上述系统可以根据应用的负载特征和性能需求,动态地分配和调整每个应用的固态盘缓存空间大小以满足应用延迟需求,并优化混合存储系统的整体性能。
背景技术
鉴于固态盘和磁盘在价格、容量、寿命等方面具有各自的优势,数据中心越来越倾向于用固态盘和磁盘构建大容量、高性能和低价格的混合存储系统。由于固态盘的容量和价格介于磁盘和内存之间,因此,大量混合存储系统将固态盘用作磁盘的缓存,其中最典型的代表当属Facebook公司的Flashcache内核模块,Flashcache采用固态盘作为磁盘的缓存,加速数据库MySQL的访问性能,以弥补传统磁盘随机读写的性能缺陷。
然而,在大规模数据服务中心,大量的并发应用共享存储系统,相互竞争固态盘缓存资源,应用之间的相互干扰会破坏每个应用内部的访问局部性,降低了固态盘缓存命中率。同时,在上述混合存储系统中,固态盘作为磁盘的缓存资源,可以加速每个应用的访问性能,从而向应用提供更优质的服务,因此,每个应用所获得的固态盘存储容量将直接影响其最终访问性能,盲目的固态盘缓存竞争可能导致应用的性能无法得到保证。同时,在数据服务中心环境下,不同的应用具有不同的服务质量需求,比如,在线事务处理和游戏要求比较低的响应延迟,而多媒体应用则属于软实时应用,备份等应用则对延迟没有明显的限制,因此,数据中心需要优化存储系统的整体性能,并同时根据应用的性能需求提供区分的存储服务。尽管相对于内存资源,固态盘的容量更大,价格更便宜,但对于海量的数据而言,固态盘的容量仍然不过是沧海一粟。因此,为应用分配的固态盘缓存资源大小不仅直接影响着应用的服务质量,也会影响到存储系统的整体性能。
因此,在基于固态盘和磁盘的混合存储系统中,如何根据应用的性能需求和负载特征的动态变化,设计出一种固态盘缓存动态分配的方法,从而在满足应用对数据访问性能需求的同时,提高存储系统的整体性能,是数据服务中心目前亟需解决的问题。
发明内容
为了解决上述问题,本发明提出了一种支持固态盘缓存动态分配的混合存储系统,可以根据应用的负载特征和性能需求动态地分配固态盘缓存空间,从而向并发应用提供区分的存储服务质量保证,并提高了固态盘缓存空间利用效率,极大地提高了混合存储系统的整体性能。
本发明公布了一种混合存储系统,包括一块或多块固态盘组成的固态盘阵列设备、一块或多块磁盘组成的磁盘阵列以及固态盘缓存管理模块。所述混合存储系统对于操作系统或应用程序展现为统一的逻辑存储设备,所述固态盘与磁盘通过控制器与计算机系统总线相连。在上述混合存储系统中,固态盘用作磁盘的缓存,用以加速应用的访问与降低请求的响应时间,而固态盘缓存管理模块则负责固态盘缓存管理及空间分配,并向上层应用提供区分的存储服务质量保障。
本发明的主要原理为:在上述基于固态盘与磁盘的混合存储系统中,通过管理和分配每个应用所获得的固态盘缓存空间大小可以实现基于应用级别的区分存储服务。固态盘缓存管理模块可以根据应用的优先级和性能需求,对关键的应用分配更多的固态盘资源,从而使得不同优先级的应用可以使用的固态盘缓存空间大小不同。同时,可以根据应用负载特征变化和固态盘利用效率动态地调整每个应用所获得的固态盘空间大小,从而避免固态盘空间浪费并提高了存储系统的整体性能。
本发明是通过如下方式实现的,固态盘缓存管理模块通过实时记录应用的历史缓存空间分配情况和命中率,以及应用的I/O负载特征和平均延迟,根据历史统计信息,并采用多元回归方法,动态地提取和建立应用访问性能与固态盘缓存分配之间的关系模型。根据应用的性能模型,固态盘缓存管理模块可以确定满足应用性能所需要的最小固态盘缓存大小,并将分配给应用的固态盘缓存进一步划分为读缓存和写缓存。同时,鉴于不同应用的缓存利用效率不同,固态盘缓存管理模块将空闲固态盘空间按不同应用的缓存利用效率分配给应用以提高混合存储系统的整体性能。
为了实现上述目的,本发明提出了一种支持固态盘缓存动态分配的混合存储系统,所述系统包括:
一块或多块固态盘组成的固态盘阵列、一块或多块磁盘组成的磁盘阵列以及固态盘缓存管理模块;
其中所述混合存储系统对于操作系统或应用程序展现为统一的逻辑设备,所述固态盘与磁盘通过控制器与计算机系统总线相连,其中所述固态盘作为所述磁盘的缓存;
所述固态盘缓存管理模块用于记录每个应用的读写请求比例、每个应用的读写缓存命中率、固态盘与磁盘的响应时间,并用于根据这些数据以及预先为每个应用指定的目标延迟,计算满足每个应用的目标延迟所需求的固态盘的最小读缓存和写缓存大小,并根据计算的最小读写缓存大小和固态盘的存储容量为每个应用分配固态盘缓存。
具体地,所述固态盘缓存管理模块具体包括负载分析器、缓存分配模块、性能监控器、缓存映射表模块和请求处理模块,其中:
所述缓存分配模块,用于在系统初始化时,为每个应用分配相同大小的读缓存区和写缓存区;
所述负载分析器,用于在读写请求到达时,记录每个应用的读写请求比例;
所述性能监控器,用于在读写请求完成时,统计固态盘和磁盘的响应时间以及每个应用的读写缓存命中率;
所述缓存映射表模块,存储有位图映射表和哈希冲突链表,其中位图映射表用于管理和标记固态盘中空闲的数据块,而哈希冲突链表用于加速判断请求是否存储在固态盘中;
所述请求处理模块,用于在读写请求到达时,先判断请求的类型,从而将应用的写请求数据写入到存储系统中或是向应用返回其请求的读数据;
所述缓存分配模块,还用于根据所述负载分析器记录的每个应用的读写请求比例、性能监控器统计的固态盘、磁盘的响应时间以及每个应用的读写缓存命中率,和预先为每个应用指定的目标延迟,实时计算满足每个应用延迟需求的固态盘的最小读缓存和写缓存大小,根据计算的读缓存和写缓存大小以及存储系统的配置计算分配给每个应用的读缓存和写缓存大小,并根据分配给每个应用的最佳读缓存和写缓存大小调整每个应用的读缓存区和写缓存区。进一步地,所述缓存分配模块实时计算满足每个应用延迟需求的固态盘的读缓存区大小和写缓存区大小具体为:
求解目标函数 其约束条件为:
其中,和分别为应用ai的读缓存区和写缓存区大小,Ci表示应用ai固态盘缓存总大小,1≤i≤N,N为运行于混合存储系统上的应用数目;
是为应用ai指定的目标延迟;
Ti为应用ai的请求平均响应时间,
Pi为应用ai的读请求所占比例;
为应用ai读请求的平均响应时间,
为应用ai写请求的平均响应时间,
和分别为应用ai的读请求和写请求的缓存命中率, 和分别为读负载特征常量和写负载特征常量,和分别为应用ai的读缓存区和写缓存区大小;
TR_SSD和TW_SSD分别为固态盘的读和写的操作开销,TR_HDD和TW_HDD分别为磁盘读和写的访问时间;
求解目标函数得到的和的最优结果,即为满足每个应用延迟需求的固态盘的读缓存区大小和写缓存区大小
进一步地,所述缓存分配模块根据上述计算的读缓存和写缓存大小以及存储系统的配置计算分配给每个应用的最佳读缓存区大小和写缓存区大小具体为:
混合存储系统有空闲固态盘缓存空间时,则将剩余固态盘缓存空间按照应用的缓存利用效率分配给所有应用以提高混合存储系统效率;
当所有应用所需求的固态盘缓存空间超过了混合存储系统中固态盘空间大小时,则将固态盘缓存空间按需求比例分配给所有应用以保证服务公平性;具体来说:
若时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
若时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
其中,C为所述固态盘的存储容量大小;Tk为应用ak关于读缓存区大小和写缓存区大小下的请求平均响应时间函数;和分别表示对和求偏导。
进一步地,所述缓存分配模块根据分配给每个应用的最佳读缓存区和写缓存区的大小调整每个应用的读缓存区和写缓存区,具体为:
若应用ai当前读缓存大小超过则根据近期最少使用算法(Least RecentlyUsed,LRU)算法将相应的多余缓存数据置为无效;若应用ai当前写缓存大小超过则根据LRU算法将相应的写缓存数据刷回到磁盘上,并将缓存数据置为无效;
当应用的读或写缓存小于所分配的固态盘缓存空间大小时,则将空闲的固态盘缓存块加入到应用对应的读写缓存区。
进一步地,所述请求处理模块对读写请求的操作具体为:
判断到达请求的类型;
当到达请求为读请求时,请求处理模块根据数据块的物理位置在缓存映射表模块中的哈希冲突链表查找数据块是否在固态盘中,若固态盘缓存命中,则直接从固态盘中读取数据返回给上层应用;否则,从磁盘中读取用户请求的数据,并且将用户请求的数据写入到固态盘中;当请求处理模块需要向固态盘中写入数据时,若固态盘有空闲空间时,则直接将最近访问的数据写入到固态盘中;否则,请求处理模块会根据LRU算法将最近最少访问的数据块置为无效,并写入新数据;
对于写操作请求,请求处理模块根据请求数据的物理地址在缓存映射表模块中的哈希冲突链表中查找数据块是否在固态盘中;当请求的数据在应用的读缓存区时,请求处理模块需要将读缓存区中相应的数据置为无效,并将数据写入到应用的写缓存区;如果请求的数据已经在写缓存区,则直接更新写缓存区中对应的数据;当写请求未命中时,请求处理模块则将新数据直接写入到应用的固态盘写缓存区中,而数据刷新则通过后台进程进行;若固态盘没有空间容纳新数据时,请求处理模块则从固态盘缓存中读出脏数据,并将其写到磁盘上。
按照本发明的另一方面,还提出了一种基于固态盘和磁盘混合存储系统的动态分配方法,用于根据应用的性能需求与负载特征变化动态调整每个应用的固态盘缓存空间大小,所述方法如下:
(1)系统初始化时,系统管理员为每个应用ai(1≤i≤N,N为混合存储系统上的应用数目)指定目标延迟且为每个应用分配相同大小的读缓存区和写缓存区。当请求到达时,记录每个应用的读写请求比例;请求完成时,统计每个应用的读写缓存命中率及固态盘、磁盘的响应时间。所述数据用于计算满足每个应用的目标延迟所需求的固态盘的最小读缓存和写缓存大小。
(2)计算每个应用的读负载特征常量和写负载特征常量。假设分配给应用ai的固态盘读缓存区和写缓存大小分别为对应的读缓存和写缓存命中率分别为和则可以根据最近若干组观测值并采用曲线拟合方法估计该应用负载的读和写特征常量和
(3)根据混合存储系统的读写操作流程,建立每个应用的延迟与缓存命中率关系模型;假设应用ai读请求和写请求的缓存命中率分别为为和固态盘的读写操作开销分别为TR_SSD和TW_SSD,磁盘读写访问时间分别为TR_HDD和TW_HDD,
应用ai读请求的平均响应时间通过如下公式计算:
应用ai写请求的平均响应时间则通过如下公式计算:
同时,根据每个应用的读请求所占比例Pi,计算应用ai的请求平均响应时间为:
(4)根据步骤(2)中应用命中率与缓存空间关系,及步骤(3)中延迟与缓存命中率模型,构建应用延迟与其缓存空间大小之间的关系函数:
其中和分别为应用ai在当前的读缓存区和写缓存区大小,表示读请求平均响应时间关于读缓存区大小的函数,表示写请求平均响应时间关于写缓存区大小的函数;
(5)根据应用延迟与缓存空间大小关系及应用的延迟需求,采用非线性规划方法计算满足应用延迟需求的读缓存大小和写缓存大小其中目标函数为:
约束条件为:
求解目标函数得到的和的最优结果,即为满足每个应用延迟需求的固态盘的读缓存区大小和写缓存区大小
(6)当混合存储系统有空闲固态盘缓存空间时,则将其按照应用的缓存利用效率分配给所有应用以提高混合存储系统效率;当所有应用所需求的固态盘缓存空间超过了混合存储系统中固态盘空间大小时,则按需求比例分配给所有应用以保证服务公平性。
即,当(C为固态盘存储容量大小)时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
当时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
Tk为应用ak关于读缓存区大小和写缓存区大小下的请求平均响应时间函数;和分别表示对和求偏导。
(7)调整每个应用的固态盘缓存分区。
若应用ai当前读缓存大小超过则根据LRU算法将相应的多余缓存区域的数据置为无效;若应用ai当前写缓存大小超过则根据LRU算法将相应的写缓存数据刷回到磁盘上,并将缓存数据置为无效。当应用的读或写缓存小于所分配的固态盘缓存空间大小时,则将空闲的固态盘缓存块加入到应用对应的读写缓存区。
(8)在系统运行过程中,固态盘缓存管理模块会持续收集应用的负载特征信息及读写缓存大小与缓存命中率,并转入步骤(2)重新计算满足性能需求的固态盘缓存空间大小,并调整每个应用的读写缓存区。
本发明解决了在基于固态盘和磁盘的混合存储系统中如何分配和管理固态盘缓存空间以保证应用的存储服务质量的问题,具有以下有益效果:
1、满足应用基于延迟的区分存储服务质量需求。混合存储系统在运行过程中持续收集应用的负载特征和设备响应时间等信息,并根据应用的负载特征变化及性能需求动态地分配固态盘缓存空间,可以有效地利用高性能高价格的固态盘设备,避免了应用盲目竞争固态盘空间而导致性能下降,保证了应用的延迟需求;
2、本发明中的动态固态盘缓存分配方法可以提高固态盘资源利用效率。当系统有空闲的固态盘缓存时,本发明方法按照应用的缓存资源利用效率分配资源,能够有效的提高系统整体缓存命中率而不影响应用的服务质量保障;将应用的固态盘缓存空间划分为读写分区,可以减少固态盘内部的擦除和垃圾回收开销;
3、本发明中的混合存储具有较高的性价比。将容量小价格高的固态盘用作磁盘的缓存,利用固态盘优异的随机读性能,缓存访问频繁的数据,减少了原来计算机系统中对磁盘的随机读访问;利用固态盘作为磁盘的写缓存,通过对写操作进行重新排序和合并,有效地降低了磁盘的平均寻道时间,将随机写操作转化为顺序写,进一步地提高了系统性能;
4、本发明中的系统和方法是基于现有标准的计算机系统结构及固态盘的性能特征,采用反馈的方式获取磁盘和固态盘的性能参数,不依赖于具体的固态盘和硬盘型号以及上层操作系统的类型,可以方便地在文件系统、数据库或设备驱动等各个层次灵活实现,具有良好的可移植性。
附图说明
图1为本发明混合存储系统结构及固态盘缓存管理模块示意图;
图2为本发明实施例中混合存储系统的读操作流程图;
图3为本发明实施例中混合存储系统的写操作流程图;
图4为本发明实施例中计算满足应用性能需求所需固态盘缓存大小的示意图;
图5为本发明实施例中调整每个应用的固态盘缓存空间大小的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例提供的混合存储系统至少包括一个固态盘和一个磁盘及固态盘缓存管理模块,如图1所示。本发明所提到的混合存储系统是将固态盘用作磁盘的缓存,用于缓存计算机最近访问的数据,且为多个应用程序所共享。通过采用较高随机访问性能的固态盘缓存访问频繁的数据,从而构建高性能、低成本、大容量的存储系统。而固态盘缓存管理模块则负责固态盘缓存空间的管理与分配,向应用提供存储服质量保证,主要包括缓存分配模块、负载分析器、性能监控器、请求处理模块及缓存映射表模块。应用程序发送到混合存储系统中的请求都被固态盘缓存管理模块截获,负载分析器统计每个应用的读请求所占百分比,并通过缓存映射表模块查找请求是否在固态盘缓存中。当请求完成时,性能监控器记录每个应用的读和写缓存命中率、固态盘和磁盘的访问时间。所有的统计信息都反馈给缓存分配模块,缓存分配模块则根据系统为每个应用设置的延迟需求和负载的动态变化实时地调整每个应用的读写缓存分区大小,从而保证应用的服务质量需求。
固态盘缓存管理模块为每个应用分别维护一个读LRU链表和一个写LRU链表,用于控制每个应用的读缓存区和写缓存区大小,并对来自各个应用的读请求和写请求分别进行处理,其中:
对于来自应用ai的读请求,首先在应用ai的固态盘缓存区中查找,若请求命中则直接向应用返回请求的数据,若不命中则访问磁盘,从而减少了磁盘的读取操作;
对于来自应用ai的写请求,首先写入应用ai所属的固态盘写缓存区中,然后通过后台进程将脏数据刷回到磁盘上,且在写回磁盘前根据脏数据的物理位置进行排序,从而减少磁盘的平均寻道时间。
具体地,图2所示为固态盘缓存系统的读操作流程图。
步骤S01:当收到来自应用程序的读请求时,则在缓存映射表模块中查找该请求是否在固态盘中,若请求命中,则执行步骤S02,否则,执行步骤S05;
步骤S02:检查请求是否在该应用的读缓存区中,若在,则直接访问固态盘并执行步骤S07,否则,执行步骤S03;
步骤S03:检查应用的读缓存区是否已满。若读缓存区已满,则从读LRU链表中选择数据块替换出固态盘缓存,并执行步骤S04,否则直接执行步骤S04;
步骤S04:将请求块从该应用的写缓存区移动到读缓存区中,将请求的数据块返回给应用程序并写入到磁盘上,然后执行步骤S07
步骤S05:若该应用的读缓存区已满,则从LRU链表中替换出最近不频繁访问的数据块并执行步骤S06;否则,直接执行步骤S06;
步骤S06:访问磁盘,读取请求数据,并将请求数据写入固态盘缓存中;
步骤S07:更新应用的读缓存命中率及设备的响应时间,结束访问。
图3所示为固态盘缓存系统的写操作流程图。
步骤P01:当收到来自应用程序的写请求时,则在位图映射表中查找该请求是否在固态盘中,若请求命中,则执行步骤P02,否则,执行步骤P05;
步骤P02:检查请求是否在该应用的写缓存区中,若在写缓存区中,则将新请求直接写入到固态盘缓存中,并执行步骤P06,否则执行步骤P03;
步骤P03:若该应用的写缓存区已满,则从写LRU链表中找到待替换出去的脏数据并将其写入到磁盘中,然后执行步骤P04,否则执行步骤P04;
步骤P04:将请求块从该应用的读缓存区移动到写缓存区中,并将新请求的数据块写入到固态盘中,然后执行步骤P06;
步骤P05:如果该应用的写缓存区未满,则将新请求数据写入到该应用的写缓存区中,并执行步骤P06;否则,将LRU链表中需要替换出的数据块写入磁盘,并将新数据块写入到该应用的写缓存区中,然后执行步骤P06;
步骤P06:更新应用的读缓存命中率及设备的响应时间,结束访问。
满足应用性能需求所需要的最小固态盘缓存空间如图4所示。
步骤C01:根据历史记录信息中每个应用的固态盘读写缓存大小及对应的读写缓存命中率计算应用的负载特征常量。
步骤C02:根据混合存储系统中请求的处理流程及应用的负载特征为每个应用建立响应时间与固态盘缓存命中率之间的性能关系模型。
步骤C03:根据应用的延迟需求及性能模型,采用非线性规则方法计算满足应用性能需求所需要的最小读缓存大小和写缓存大小
步骤C04:检查所有应用需求的固态盘缓存空间是否超过系统中固态盘容量。若超过,则将固态盘容量按照应用的需求比例分配给所有应用;否则,将剩余固态盘按照应用的缓存利用效率分配给所有应用。
步骤C05:获得分配给每个应用的最佳读缓存区大小和写缓存大小每个应用获得的固态盘缓存总大小则为
固态盘缓存空间调整过程如图5所示。
步骤T01:检查每个应用的总缓存区大小是否等于若是,则执行步骤T04,否则,执行步骤T02;
步骤T02:若应用ai当前固态盘缓存大于则从其中选出多余的固态盘缓存。若选取的缓存来自应用的写缓存区,则先将脏数据块刷回到磁盘并将对应缓存置为空闲;否则,直接多余的缓存置为空闲。
步骤T03:将空闲的缓存区加入到当前固态盘缓存小于的应用缓存链表中以保证每个应用的固态盘缓存大小等于
步骤T04:检查应用当前的读缓存和写缓存区大小是否分别和若应用的写缓存区大于最佳值,则从应用的写LRU链表中选出多余缓存块,将脏数据块刷回到磁盘上,然后将空闲的缓存块加入该应用的读缓存区中;否则,根据该应用的读LRU链表中多余缓存块置为空闲并加入到应用的写缓存区中。
步骤T05:重复步骤T04,检查所有应用的读写缓存大小。当所有应用的读和写缓存大小都等于其最佳值,则结束缓存调整过程。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种支持固态盘缓存动态分配的混合存储系统,其特征在于,所述系统包括:
一块或多块固态盘组成的固态盘阵列、一块或多块磁盘组成的磁盘阵列以及固态盘缓存管理模块;
其中所述混合存储系统对于操作系统或应用程序展现为统一的逻辑设备,所述固态盘与磁盘通过控制器与计算机系统总线相连,其中所述固态盘作为所述磁盘的缓存;
所述固态盘缓存管理模块用于记录每个应用的读写请求比例、每个应用的读写缓存命中率、固态盘与磁盘的响应时间,并用这些数据以及预先为每个应用指定的目标延迟,计算满足每个应用延迟所需求的最小固态盘读缓存和写缓存大小,并根据计算的最小读缓存和写缓存大小为每个应用分配固态盘缓存;所述固态盘缓存管理模块具体包括负载分析器、缓存分配模块、性能监控器、缓存映射表模块和请求处理模块,其中:
所述缓存分配模块,用于在系统初始化时,为每个应用分配相同大小的读缓存区和写缓存区;
所述负载分析器,用于在读写请求到达时,记录每个应用的读写请求比例;
所述性能监控器,用于在读写请求完成时,统计固态盘和磁盘的响应时间以及每个应用的读写缓存命中率;
所述缓存映射表模块,存储有位图映射表和哈希冲突链表,其中位图映射表用于管理和标记固态盘中空闲的数据块,而哈希冲突链表用于加速判断请求是否存储在固态盘中;
所述请求处理模块,用于在读写请求到达时,先判断请求的类型,从而将应用的写请求数据写入到存储系统中或是向应用返回其请求的读数据;
所述缓存分配模块,还用于根据所述负载分析器记录的每个应用的读写请求比例、性能监控器统计的固态盘、磁盘的响应时间以及每个应用的读写缓存命中率,和预先为每个应用指定的目标延迟,实时计算满足每个应用延迟需求的固态盘的最小读缓存和写缓存大小,根据计算的读缓存和写缓存大小以及存储系统的配置计算分配给每个应用的最佳读缓存和写缓存大小,并根据分配给每个应用的最佳读缓存和写缓存大小调整每个应用的读缓存区和写缓存区;所述缓存分配模块实时计算满足每个应用延迟需求的固态盘的读缓存区大小和写缓存区大小具体为:
求解目标函数其约束条件为:
其中,和分别为应用ai的读缓存区和写缓存区大小,Ci表示应用ai固态盘缓存总大小,1≤i≤N,N为运行于混合存储系统上的应用数目;
表示为应用ai所指定的目标延迟;
Ti为应用ai的请求平均响应时间,
Pi为应用ai的读请求所占比例;
为应用ai读请求的平均响应时间,
为应用ai写请求的平均响应时间,
和分别为应用ai的读请求和写请求的缓存命中率, 和分别为读负载特征常量和写负载特征常量;
TR_SSD和TW_SSD分别为固态盘的读和写的操作开销,TR_HDD和TW_HDD分别为磁盘读和写的访问时间;
求解目标函数得到的和的最优结果,即为满足每个应用延迟需求的固态盘的读缓存区大小和写缓存区大小
2.根据权利要求1所述的混合存储系统,其特征在于,所述缓存分配模块根据上述计算的读缓存和写缓存大小以及存储系统的配置计算分配给每个应用的最佳读缓存区大小和写缓存区大小具体为:
当混合存储系统有空闲固态盘缓存空间时,则将剩余固态盘缓存空间按照应用的缓存利用效率分配给所有应用以提高混合存储系统效率;
当所有应用所需求的固态盘缓存空间超过了混合存储系统中固态盘空间大小时,则将固态盘缓存空间按需求比例分配给所有应用以保证服务公平性;具体来说:
若时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
若时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
其中,C为所述固态盘的存储容量大小;Tk为应用ak关于读缓存区大小和写缓存区大小下的请求平均响应时间函数;和分别表示对和求偏导。
3.根据权利要求2所述的混合存储系统,其特征在于,所述缓存分配模块根据分配给每个应用的最佳读缓存区和写缓存区的大小调整每个应用的读缓存区和写缓存区,具体为:
若应用ai当前读缓存大小超过则根据LRU算法将相应的多余缓存数据置为无效;若应用ai当前写缓存大小超过则根据LRU算法将相应的写缓存数据刷回到磁盘上,并将缓存数据置为无效;
当应用的读或写缓存小于所分配的固态盘缓存空间大小时,则将空闲的固态盘缓存块加入到应用对应的读写缓存区。
4.根据权利要求1至3任一项所述的混合存储系统,其特征在于,所述请求处理模块对读写请求的操作具体为:
判断到达请求的类型;
当到达请求为读请求时,请求处理模块根据数据块的物理位置在缓存映射表模块中的哈希冲突链表查找数据块是否在固态盘中,若固态盘缓存命中,则直接从固态盘中读取数据返回给上层应用;否则,从磁盘中读取用户请求的数据,并且将用户请求的数据写入到固态盘中;当请求处理模块需要向固态盘中写入数据时,若固态盘有空闲空间时,则直接将最近访问的数据写入到固态盘中;否则,请求处理模块会根据LRU算法将最近最少访问的数据块置为无效,并写入新数据;
对于写操作请求,请求处理模块根据请求数据的物理地址在缓存映射表模块中的哈希冲突链表中查找数据块是否在固态盘中;当请求的数据在应用的读缓存区时,请求处理模块需要将读缓存区中相应的数据置为无效,并将数据写入到应用的写缓存区;如果请求的数据已经在写缓存区,则直接更新写缓存区中对应的数据;当写请求未命中时,请求处理模块则将新数据直接写入到应用的固态盘写缓存区中,而数据刷新则通过后台进程进行;当固态盘没有空间容纳新数据时,请求处理模块则从固态盘缓存中读出脏数据,并将其写到磁盘上。
5.一种基于固态盘和磁盘混合存储系统的动态分配方法,其特征在于,所述方法包括以下步骤:
(1)当应用的读写请求到达时,记录每个应用的读写请求比例;请求完成时,统计每个应用的读写缓存命中率及固态盘和磁盘的响应时间;利用统计所得的每个应用的读写缓存命中率及固态盘和磁盘的响应时间计算满足每个应用的目标延迟所需求的固态盘的最小读缓存和写缓存大小;
(2)计算每个应用的读负载特征常量和写负载特征常量;假设分配给应用ai的固态盘读缓存区和写缓存大小分别为和对应的读缓存和写缓存命中率分别为和根据最近若干组观测值并采用曲线拟合方法估计该应用负载的读和写特征常量和
(3)根据混合存储系统的读写操作流程,建立每个应用的延迟与缓存命中率关系模型;假设应用ai读请求和写请求的缓存命中率分别为为和固态盘的读写操作开销分别为TR_SSD和TW_SSD,磁盘读写访问时间分别为TR_HDD和TW_HDD,
应用ai读请求的平均响应时间通过如下公式计算:
应用ai写请求的平均响应时间则通过如下公式计算:
同时,根据每个应用的读请求所占比例Pi,计算应用ai的请求平均响应时间为:
(4)根据步骤(2)中应用命中率与缓存空间关系,及步骤(3)中延迟与缓存命中率模型,构建应用延迟与缓存空间大小之间的关系函数:
其中和分别为应用ai在当前的读缓存区和写缓存区大小,和分别为应用ai在当前的读缓存区大小和写缓存区大小下的读请求平均响应时间函数和写请求平均响应时间函数;
(5)采用非线性规划方法计算满足应用延迟需求的读缓存和写缓存大小其中目标函数为:
约束条件为:
求解目标函数可以得到和的最优结果,即为满足每个应用延迟需求的固态盘的读缓存区大小和写缓存区大小
(6)当混合存储系统有空闲固态盘缓存空间时,则将其按照应用的缓存利用效率分配给所有应用以提高混合存储系统效率;当所有应用所需求的固态盘缓存空间超过了混合存储系统中固态盘空间大小时,则按需求比例分配给所有应用以保证服务公平性。
6.如权利要求5所述的方法,其特征在于,所述步骤(6)中为应用分配固态盘缓存空间具体为:
若时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
若时,应用ai所获得的最佳读缓存大小为:
最佳写缓存大小为:
其中,C为所述固态盘的存储容量大小;Tk为应用ak关于读缓存区大小和写缓存区大小下的请求平均响应时间函数;和分别表示对和求偏导。
7.如权利要求6所述的方法,其特征在于,还包括,根据分配给各应用的固态盘缓存空间大小调整各应用的固态盘缓存区,具体为:
若应用ai当前读缓存大小超过则根据LRU算法将相应的多余缓存数据置为无效;若应用ai当前写缓存大小超过则根据LRU算法将相应的写缓存数据刷回到磁盘上,并将缓存数据置为无效;
当应用的读或写缓存小于所分配的固态盘缓存空间大小时,则将空闲的固态盘缓存块加入到应用对应的读写缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410145032.0A CN103902474B (zh) | 2014-04-11 | 2014-04-11 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410145032.0A CN103902474B (zh) | 2014-04-11 | 2014-04-11 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902474A CN103902474A (zh) | 2014-07-02 |
CN103902474B true CN103902474B (zh) | 2017-02-08 |
Family
ID=50993808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410145032.0A Active CN103902474B (zh) | 2014-04-11 | 2014-04-11 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902474B (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446896B (zh) | 2014-08-29 | 2018-05-04 | 国际商业机器公司 | 映射化简应用的缓存管理方法和装置 |
CN104407986B (zh) * | 2014-10-27 | 2018-03-13 | 华为技术有限公司 | 在存储设备中配置缓存的方法、装置及控制器 |
CN104461914A (zh) * | 2014-11-10 | 2015-03-25 | 浪潮电子信息产业股份有限公司 | 一种自动精简配置的自适应优化方法 |
CN105701029B (zh) * | 2014-11-25 | 2018-11-06 | 华为技术有限公司 | 一种异构存储优化方法及装置 |
CN104461393B (zh) * | 2014-12-09 | 2017-05-17 | 华中科技大学 | 一种闪存存储器的混合映射方法 |
CN107209738B (zh) * | 2015-05-02 | 2020-01-10 | 慧与发展有限责任合伙企业 | 储存存储器直接访问 |
CN104933153B (zh) * | 2015-06-24 | 2018-04-10 | 华中科技大学 | 一种基于协作的固态盘存储系统性能提高方法 |
WO2017031637A1 (zh) * | 2015-08-21 | 2017-03-02 | 华为技术有限公司 | 一种内存访问方法、装置和系统 |
CN105183378A (zh) * | 2015-08-31 | 2015-12-23 | 北京神州云科数据技术有限公司 | 自适应混合读/写缓存的方法 |
CN106569728B (zh) * | 2015-10-09 | 2021-02-23 | 中兴通讯股份有限公司 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
CN105511811B (zh) * | 2015-12-07 | 2018-09-07 | 浪潮(北京)电子信息产业有限公司 | 一种提高文件系统吞吐量的方法与系统 |
CN106933708B (zh) * | 2015-12-29 | 2020-03-20 | 伊姆西Ip控股有限责任公司 | 有助于进行存储系统恢复的方法、装置以及一种存储系统 |
CN105740170B (zh) * | 2016-01-22 | 2020-12-04 | 浪潮(北京)电子信息产业有限公司 | 一种缓存脏页刷写方法及装置 |
CN107305475A (zh) * | 2016-04-22 | 2017-10-31 | 中国科学院微电子研究所 | 一种flashcache混合存储系统的缓存调度方法及系统 |
CN107305477A (zh) * | 2016-04-25 | 2017-10-31 | 中国科学院微电子研究所 | 一种flashcache混合存储系统的缓存读写操作方法及系统 |
CN107506314B (zh) * | 2016-06-14 | 2021-05-28 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和装置 |
CN106502591B (zh) * | 2016-10-26 | 2019-10-25 | 深信服科技股份有限公司 | 一种基于混合存储产品的存储控制方法和存储控制装置 |
CN108153685A (zh) * | 2016-12-06 | 2018-06-12 | 阿里巴巴集团控股有限公司 | 一种处理请求的方法、装置及设备、可读介质 |
CN108255601B (zh) * | 2016-12-29 | 2021-01-15 | 华为技术有限公司 | 一种分配llc资源的方法及装置 |
CN106686082B (zh) * | 2016-12-29 | 2020-09-11 | 华为技术有限公司 | 存储资源调整方法及管理节点 |
CN108733316B (zh) * | 2017-04-17 | 2021-08-31 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和管理器 |
CN107221351B (zh) * | 2017-05-27 | 2020-06-02 | 华中科技大学 | 一种固态盘系统中纠错码的优化处理方法及其应用 |
CN109508140B (zh) * | 2017-09-15 | 2022-04-05 | 阿里巴巴集团控股有限公司 | 存储资源管理方法、装置、电子设备及电子设备、系统 |
CN107704364B (zh) * | 2017-09-30 | 2019-08-06 | Oppo广东移动通信有限公司 | 后台应用程序管控方法、装置、存储介质及电子设备 |
US11636014B2 (en) | 2017-10-31 | 2023-04-25 | SK Hynix Inc. | Memory system and data processing system including the same |
KR20200088634A (ko) | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | 메모리 시스템, 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법 |
KR102394695B1 (ko) * | 2017-11-08 | 2022-05-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
CN108121601B (zh) * | 2017-11-08 | 2021-11-05 | 上海格蒂电力科技有限公司 | 一种基于权重的应用资源调度装置及方法 |
CN109933279B (zh) * | 2017-12-19 | 2021-01-22 | 中国科学院声学研究所 | 一种支持混合存储系统的内容过滤方法 |
CN108459826B (zh) * | 2018-02-01 | 2020-12-29 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN108446399B (zh) * | 2018-03-29 | 2021-07-30 | 重庆大学 | 一种结构化海量实时数据的动态存储优化方法 |
CN109451008B (zh) * | 2018-10-31 | 2021-05-28 | 中国人民大学 | 一种云平台下多租户的带宽保障框架和成本优化方法 |
CN109800185B (zh) * | 2018-12-29 | 2023-10-20 | 上海霄云信息科技有限公司 | 一种数据存储系统中的数据缓存方法 |
CN110569201B (zh) * | 2019-08-23 | 2021-09-10 | 苏州浪潮智能科技有限公司 | 一种固态硬盘GC下降低写latency的方法及装置 |
CN110688062B (zh) * | 2019-08-26 | 2021-03-30 | 华为技术有限公司 | 一种缓存空间的管理方法及装置 |
CN111026335A (zh) * | 2019-12-12 | 2020-04-17 | 天地伟业技术有限公司 | 一种优化存储性能提升硬盘兼容性的方法 |
CN112000296B (zh) * | 2020-08-28 | 2024-04-09 | 北京计算机技术及应用研究所 | 一种全闪存阵列中的性能优化系统 |
CN113377291B (zh) * | 2021-06-09 | 2023-07-04 | 北京天融信网络安全技术有限公司 | 一种缓存设备的数据处理方法、装置、设备及介质 |
CN114415969B (zh) * | 2022-02-09 | 2023-09-29 | 杭州云合智网技术有限公司 | 交换芯片报文动态存储方法 |
CN115499305B (zh) * | 2022-07-29 | 2024-04-26 | 天翼云科技有限公司 | 一种分布式集群存储设备的部署方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567225A (zh) * | 2011-12-28 | 2012-07-11 | 北京握奇数据系统有限公司 | 一种管理系统内存的方法及装置 |
CN103279429A (zh) * | 2013-05-24 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种应用感知的分布式全局共享缓存分区方法 |
CN103678166A (zh) * | 2013-08-16 | 2014-03-26 | 记忆科技(深圳)有限公司 | 一种采用固态硬盘作为计算机高速缓存的实现方法及系统 |
-
2014
- 2014-04-11 CN CN201410145032.0A patent/CN103902474B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567225A (zh) * | 2011-12-28 | 2012-07-11 | 北京握奇数据系统有限公司 | 一种管理系统内存的方法及装置 |
CN103279429A (zh) * | 2013-05-24 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种应用感知的分布式全局共享缓存分区方法 |
CN103678166A (zh) * | 2013-08-16 | 2014-03-26 | 记忆科技(深圳)有限公司 | 一种采用固态硬盘作为计算机高速缓存的实现方法及系统 |
Non-Patent Citations (1)
Title |
---|
Flash-Disc混合盘存储调度策略研究;吕士朋;《中国优秀硕士学位论文全文数据库(电子期刊)》;20090515;第2009年卷;第17页,第19页,第27页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103902474A (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902474B (zh) | 一种支持固态盘缓存动态分配的混合存储系统和方法 | |
CN110134514B (zh) | 基于异构内存的可扩展内存对象存储系统 | |
CN103608782B (zh) | Lsb页面和msb页面中的选择性数据存储 | |
US20110246742A1 (en) | Memory pooling in segmented memory architecture | |
US7392363B2 (en) | System and method of allocating contiguous memory in a data processing system | |
JP3962368B2 (ja) | 共用リソースを動的に割り振るためのシステムおよび方法 | |
CN104317742B (zh) | 一种优化空间管理的自动精简配置方法 | |
CN104809076B (zh) | Cache的管理方法及装置 | |
CN102207830B (zh) | 一种缓存动态分配管理方法及装置 | |
CN107018172B (zh) | 用于在分布式缓存存储器中自适应分区的系统和方法 | |
CN107423234A (zh) | 多处理器系统及缓存共享方法 | |
US11093410B2 (en) | Cache management method, storage system and computer program product | |
CN105095094A (zh) | 内存管理方法和设备 | |
CN103678149B (zh) | 数据处理的方法及设备 | |
CN106528438A (zh) | 一种固态存储设备的分段式垃圾回收方法 | |
CN101373445B (zh) | 一种内存调度方法及装置 | |
CN105917318A (zh) | 用于实现基于ssd的i/o高速缓存的系统和方法 | |
CN106775466A (zh) | 一种无dram的ftl读缓存管理方法及装置 | |
CN107515728A (zh) | 发挥闪存设备内部并发特性的数据管理方法和装置 | |
CN109582600A (zh) | 一种数据处理方法及装置 | |
CN105573682A (zh) | 一种san存储系统及其数据读写方法 | |
CN104111896B (zh) | 大数据处理中的虚拟内存管理方法及其装置 | |
CN108647155A (zh) | 一种基于深度学习的多级cache共享的方法和装置 | |
CN105376269B (zh) | 虚拟机存储系统及其实现方法和装置 | |
CN111078143B (zh) | 基于段映射进行数据布局和调度的混合存储方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |