一种基于固态硬盘的缓存加速方法与流程

文档序号:11950054阅读:418来源:国知局
一种基于固态硬盘的缓存加速方法与流程

本发明属于计算机应用领域,具体涉及一种基于固态硬盘的缓存加速方法。



背景技术:

固态硬盘(SSD,Solid State Drive)不同于传统的机械硬盘(HDD,Hard DiskDrive),固态硬盘是闪存介质,机械硬盘是磁存储介质(磁碟片+磁头),所以固态硬盘没有寻道时间,在随机读取零散小文件的时候效率非常高(操作系统、应用软件、游戏的程序文件基本都属于这种零散的小文件),也就是说加载程序的速度极快。用固态硬盘做高速缓存的目的就是把这些常用的程序文件都储存在固态硬盘里面,用的时候从固态硬盘里调去,其效率远远高于机械硬盘。但是毕竟现在的固态硬盘价格要远远高于机械硬盘,所以绝大多数的不太常用的数据还是储存在机械硬盘里更划算,因此固态硬盘和机械硬盘混合使用的策略普遍被采用。

固态硬盘缓存技术,即是将需要频繁读写的数据缓存到读写速度较为快速的固态硬盘中,加速这类热点数据的速写速度,同时将非热点数据存储在价格较为便宜的机械盘上。通过固态硬盘缓存技术,结合固态硬盘和机械硬盘的各自优势,可以提供高性价比的存储。

现有的固态硬盘缓存技术,受到内存缓存技术的影响,分为回写(write-back),直写(write-through)和绕写(只缓存读的数据,write-around)三种主要的缓存机制。而实际上,在基于内存的缓存机制中,write-through和write-around缓存机制是为了保证数据的写入的可靠性,避免因断电等原因导致的数据丢失(数据写入到了内存,但还未写入磁盘)。固态硬盘与内存很 大的不同就在于其本身是非易失性的,数据写入固态硬盘后,不会因为断电而丢失。因此,在基于固态硬盘的缓存策略中,采用write-back机制,既能保证数据的写入可靠性,也能提高写入的性能。

现有基于write-back的固态硬盘缓存机制,都采用了数据写入固态硬盘后,脏数据再回写到机械硬盘的策略,这一策略基本照搬了内存缓存的write-back机制,而忽略了内存和固态硬盘的性能差异。在基于固态硬盘的缓存中,脏数据回写时,数据会先从固态硬盘上读出,再写入到机械硬盘的,这会占用固态硬盘的读性能,会对其他读写操作造成影响。

鉴于上述原因,本发明提供一种新的基于固态硬盘的缓存加速方法,以解决上述问题。



技术实现要素:

本发明提供一种基于固态硬盘的缓存加速方法,包括以下步骤。

S1:将固态硬盘和机械硬盘分别均分成不同区块,其中所述区块均为页的倍数,且所述机械硬盘的区块大小不超过所述固态硬盘的区块大小。

S2:建立固态硬盘每个区块缓存的数据页到机械硬盘地址的映射,并将映射关系及映射表分别存储在固态硬盘及内存中。

S3:当发生数据读操作或写操作时,根据所述映射关系及映射表确定内存、固态硬盘及机械硬盘的读写顺序,并更新所述映射表。

优选的,在步骤S1中,所述固态硬盘的一个区块至少对应一个机械硬盘的区块。

优选的,在步骤S2中,内存缓存的映射表中还包括内存缓存数据到机械硬盘地址的映射关系。

优选的,在步骤S3中,当发生数据读操作时,优先查看内存缓存,如果缓存命中,直接读取,在内存缓存不命中的情况下,查看并尝试读取固态硬盘缓存,当两者都不命中时,直接从机械硬盘读取数据。

优选的,从机械硬盘读取所需数据后,根据内存缓存的映射表,将数据在对应的固态硬盘区块上更新,并分别更新内存和固态硬盘缓存的映射表。

优选的,更新所述内存和固态硬盘缓存的映射表后,若内存未被脏数据缓存页占满,则进行内存缓存替换,并更新内存缓存的映射表。

优选的,在步骤S3中,当发生数据写操作时,确定固态硬盘中未缓存有对应数据页,且所述固态硬盘未缓存满时,将数据写入空的固态硬盘缓存页,并更新映射表。

优选的,更新所述映射表后,确定内存未缓存有所述数据页且内存缓存区未被脏数据占满时,进行内存缓存替换,并更新映射表。

根据本发明提供的基于固态硬盘的缓存加速方法,将固态硬盘和机械硬盘分别均分成不同区块后,建立固态硬盘每个区块缓存的数据页到机械硬盘地址的映射,并将映射关系及映射表分别存储在固态硬盘及内存中。当发生数据读操作或写操作时,根据所述映射关系及映射表确定内存、固态硬盘及机械硬盘的读写顺序,并更新所述映射表。如此,利用内存作为固态硬盘回写缓冲区,避免了固态硬盘回写时的额外读操作,能够充分发挥固态硬盘的性能优势。

附图说明

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

图1是本发明较佳实施例提供的基于固态硬盘的缓存加速方法流程图;

图2是本发明较佳实施例提供的固态硬盘缓存与机械硬盘页地址对应关系示例;

图3是本发明较佳实施例提供的通过HASH方法将机械硬盘区块对应到固态硬盘区块示意图;

图4是本发明较佳实施例提供的固态硬盘映射表结构示意图;

图5是本发明较佳实施例提供的数据读操作工作流程图;

图6是本发明较佳实施例提供的数据写操作工作流程图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

图1是本发明较佳实施例提供的基于固态硬盘的缓存加速方法流程图。如图1所示,本发明较佳实施例提供的基于固态硬盘的缓存加速方法包括步骤S1~S3。

步骤S1:将固态硬盘和机械硬盘分别均分成不同区块,其中所述区块均为页的倍数,且所述机械硬盘的区块大小不超过所述固态硬盘的区块大小。

具体而言,设置缓存数据大小最小单位例如为4kB(即1页),系统将以页为单位对固态硬盘和机械硬盘存储空间进行编号,映射表(固)维护的即是固态硬盘每个页对应机械硬盘中的哪一页(每一项是一个包含固态硬盘页编号和机械硬盘页编号的二元组,并且固态硬盘的任意页编号都属于一个二元组)。于此,所述内存的缓存区域大小可根据实际系统配置做灵活调整,对此本发明并不作限定。

图2是本发明较佳实施例提供的固态硬盘缓存与机械硬盘页地址对应关系示例。如图2所示,如果固态硬盘的a页对应了机械硬盘的a’页,那固态 硬盘a页的数据就是对本应存储在机械硬盘a’页数据的缓存。如果固态硬盘a页内的数据与机械硬盘a’页内的数据不同,则固态硬盘A页缓存的是脏数据,其中(a,a’)为映射表(固)的一个二元组。

如上所述,在发生读操作时,会判断需要读取的数据是否已被缓存,如果要遍历整个映射表才能进行这一判断,效率会变得非常低。

本实施例中,所述固态硬盘的一个区块至少对应一个机械硬盘的区块,其对应关系可通过HASH方法来确定,例如HASH(A’)即是机械硬盘区块A’对应的固态硬盘区块号。图3是本发明较佳实施例提供的通过HASH方法将机械硬盘区块对应到固态硬盘区块示意图。如图3所示,HASH(A’)=HASH(B’)=A。当查找某一页机械硬盘上的数据页x’是否缓存在固态硬盘上时,通过HASH(x’/HU)计算得到固态硬盘区块号(设为X),再对映射表(固)中X区块对应的区域进行遍历(最多遍历SU个二元组),确认是否已被缓存,从而提高判断效率。同时,HASH计算的是机械硬盘区块号到固态硬盘区块号的映射,这使得部分相近的机械硬盘数据页会缓存在相近的固态硬盘区域中。于此,除上述HASH方法外,还可以采用先进先出(FIFO)、最近最少用(LRU)或其他缓存替换策略,然而对此本发明并不作限定。

步骤S2:建立固态硬盘每个区块缓存的数据页到机械硬盘地址的映射,并将映射关系及映射表分别存储在固态硬盘及内存中。

具体而言,内存维护缓存映射表并用来缓存数据,其主要作用是:减少固态硬盘缓存脏数据回写所消耗的固态硬盘读性能;加速缓存映射表的访问。在达到上述目标的前提下,如果有内存空间剩余,可用于读缓存,进一步提高部分热点数据的读速度。于此,内存缓存的映射表中还包括内存缓存数据到机械硬盘地址的映射关系。

当发生写操作时,数据写入固态硬盘缓存区的同时,写入内存缓存区,并由单独线程来负责将内存缓存区的脏数据同步到机械硬盘上,避免固态硬 盘缓存替换时脏数据的读出操作影响整体性能。同时,内存缓存区在较为空闲时(未被脏数据占满),可以用作部分非脏数据缓存,加速数据读操作(无论是脏数据还是非脏数据,只要内存读命中,可以直接从内存读取)。

本实施例中,为了保证映射关系不会丢失,在固态硬盘上有一个单独的区域是被用于存储映射表的,这一区域中每一个单元对应一个固态硬盘缓存页,0号单元对应固态硬盘第0个缓存页,1号单元对应固态硬盘第1个缓存页,以此类推。每个单元存储的内容为缓存的机械硬盘数据页编号以及是否为脏数据的标记。图4是本发明较佳实施例提供的固态硬盘映射表结构示意图。如图4所示,映射表0号单元存储内容为a和0,表示固态硬盘0号数据页缓存了机械硬盘a号数据页,并且该数据不是脏数据;映射表2号单元存储内容为c和1,表示固态硬盘2号数据页缓存了机械硬盘c号数据页,并且该数据是脏数据。于此,在内存映射表内,关于固态硬盘数据页到机械硬盘数据页的映射关系与映射表(固)是同步的,而内存数据页到机械硬盘数据页的映射则可以直接采用HASH加列表方式来实现。

步骤S3:当发生数据读操作或写操作时,根据所述映射关系及映射表确定内存、固态硬盘及机械硬盘的读写顺序,并更新所述映射表。

图5是本发明较佳实施例提供的数据读操作工作流程图。如图5所示,本发明较佳实施例提供的数据读操作工作流程包括步骤110~120:步骤110、拦截所有的读操作;步骤111、在内存中查询需要读取的数据页是否已被缓存;步骤112、如果已经被缓存,直接从内存中读取该数据页;步骤122、根据缓存替换策略的需求,更新内存维护的映射表;步骤113、如果内存缓存未命中,继续查看是否缓存在固态硬盘中;步骤121、如果缓存命中,直接读取固态硬盘缓存;步骤122、根据缓存替换策略的需求,更新内存维护的映射表;步骤114、如果固态硬盘缓存仍不命中,从机械硬盘读取所需数据;步骤115、如果对应的固态硬盘区块缓存已满;步骤117、进行缓存替换;步骤116、否则 直接写入空白缓存页;步骤119、同时更新内存维护的映射表和固态硬盘维护的映射表,并进行内存是否缓存判断;步骤120、如果可以缓存在内存中,则进行缓存替换,并更新内存维护的映射表。

参照图5,当发生数据读操作时,优先查看内存缓存,如果缓存命中,直接读取,在内存缓存不命中的情况下,查看并尝试读取固态硬盘缓存,当两者都不命中时,直接从机械硬盘读取数据。从机械硬盘读取所需数据后,根据内存缓存的映射表,将数据在对应的固态硬盘区块上更新,并分别更新内存和固态硬盘缓存的映射表。更新所述内存和固态硬盘缓存的映射表后,若内存未被脏数据缓存页占满,则进行内存缓存替换,并更新内存缓存的映射表。

图6是本发明较佳实施例提供的数据写操作工作流程图。如图6所示,本发明较佳实施例提供的数据写操作工作流程包括步骤210~221:步骤210、拦截所有的写操作;步骤211、查询固态硬盘是否缓存有该数据页;步骤215、如果是,更新该数据缓存页内容;步骤212、否则,查看相应固态硬盘缓存区块是否已缓存满;步骤213、如果该区块已缓存满,进行缓存替换;步骤214、如果不满,直接写入空白缓存页;步骤216、无论是否命中,都需要更新内存维护的映射表和固态硬盘维护的映射表;步骤217、查询内存是否缓存有该数据页;步骤220、如果是,则直接进行更新,并更新内存维护的映射表;步骤218、如果否,查看内存缓存区是否被脏数据占满,如果占满,放弃内存缓存该数据页;步骤219、否则进行内存缓存替换。

参照图6,当发生数据写操作时,确定固态硬盘中未缓存有对应数据页,且所述固态硬盘未缓存满时,将数据写入空的固态硬盘缓存页,并更新映射表。更新所述映射表后,确定内存未缓存有所述数据页且内存缓存区未被脏数据占满时,进行内存缓存替换,并更新映射表。

综上所述,根据本发明较佳实施例提供的基于固态硬盘的缓存加速方法,将固态硬盘和机械硬盘分别均分成不同区块后,建立固态硬盘每个区块缓存的数据页到机械硬盘地址的映射,并将映射关系及映射表分别存储在固态硬盘及内存中。当发生数据读操作或写操作时,根据所述映射关系及映射表确定内存、固态硬盘及机械硬盘的读写顺序,并更新所述映射表。在固态硬盘和机械盘混合存储场景中,能够利用固态硬盘缓存,使整个系统的读写性能更加迅速便捷。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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