一种用于固态硬盘的虚拟块管理方法与流程

文档序号:13675662阅读:163来源:国知局

本发明涉及存储管理技术领域,特别是涉及一种用于固态硬盘的虚拟块管理方法。



背景技术:

随着信息技术的发展,信息数据的存储成为信息技术发展的重要组成部分。

目前,信息数据的存储多离不开固态硬盘,固态硬盘的存储空间由多个lun组成,而一个lun包含若干物理block(块),由于block数量众多,单独对物理block进行信息记录耗费较多存储空间,固态硬盘多以多个物理block组成,通过virtualblock(虚拟块,由物理块根据一定规则组成的raid块)来对block进行分配和使用,同时方便raid管理。对虚拟块的管理是固态硬盘的重要内容,但是现有的虚拟块管理技术存在的问题如下:

描述虚拟块的数据结构存在冗余,由于固态硬盘中的virtualblock数目较多,virtualblock的存储空间浪费会造成较大的总空间浪费;且对虚拟块的分配、使用和回收的流程效率较低。

因此,如何减少存储空间的浪费,同时使得虚拟块的分配、使用和回收的流程统一高效,是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种用于固态硬盘的虚拟块管理方法,可以减少存储空间的浪费,同时使得虚拟块的分配、使用和回收的流程统一高效。

为解决上述技术问题,本发明提供了如下技术方案:

一种用于固态硬盘的虚拟块管理方法,包括:

预先建立用于描述虚拟块信息的数据结构,并将固态硬盘的各虚拟块的描述信息存储在该数据结构的对应位置;

在所述固态硬盘上电时,根据所述数据结构中保存的固态硬盘的虚拟块的描述信息构建多个管理链表,将相应的虚拟块数据结构地址存入对应链表项,并插入该管理链表中;

固态盘运行过程中,存在对虚拟块的操作时,从对应管理链表中取出表示虚拟块数据结构的地址,从对应地址中找到虚拟块信息,并进行相应操作;

在对虚拟块操作执行结束后,根据该虚拟块更改后得到的描述信息将虚拟块数据结构地址放置于对应的链表中。

优选地,所述预先建立用于描述虚拟块信息的数据结构,并将固态硬盘的各虚拟块的描述信息存储在该数据结构的对应位置,包括:

预先建立用于描述虚拟块信息的数据结构;

将固态硬盘的各虚拟块的虚拟块地址、擦除次数、状态和坏块信息存储在所述数据结构的对应位置。

优选地,所述在所述固态硬盘上电时,根据所述数据结构中保存的固态硬盘的虚拟块的描述信息构建多个管理链表,将相应的虚拟块数据结构地址存入对应链表项,并插入该管理链表中,包括:

在所述固态硬盘上电时,判断所述固态硬盘是否为第一次上电;

若是,则根据坏块扫描的结果初始化各对应虚拟块的信息,根据所述虚拟块的信息构建freelist和badlist,将空闲虚拟块设置状态为free并放置于freelist,将坏虚拟块设置状态为bad并放置于badlist;

若否,则根据所述固态硬盘下电时保存的虚拟块信息,构建freelist、badlist、usedlist和gclist。

优选地,所述固态盘运行过程中,存在对虚拟块的操作时,从对应管理链表中取出表示虚拟块数据结构的地址,从对应地址中找到虚拟块信息,并进行相应操作,包括:

在所述固态硬盘运行过程中,存在获取新的虚拟块用于写操作时,在所述freelist中取出相应的虚拟块数据结构地址,根据该虚拟块数据结构地址找到对应的虚拟块数据结构,并根据该虚拟块数据结构中的虚拟块地址找到对应的虚拟块;

将找寻到的虚拟块的状态由free更改为active;

控制处于active状态的虚拟块执行写操作。

优选地,所述在对虚拟块操作执行结束后,根据该虚拟块更改后得到的描述信息将虚拟块数据结构地址放置于对应的链表中,包括:

判断所述处于active状态的虚拟块的写操作是否执行完毕,并需要进行关闭操作;

若是,则将该虚拟块的状态更改为used,并将该虚拟块对应的数据结构地址添加至usedlist。

优选地,所述在对虚拟块操作执行结束后,根据该虚拟块更改后得到的描述信息将虚拟块数据结构地址放置于对应的链表中,还包括:

将写出错或读出错的虚拟块的状态更改为gc,并将相应虚拟块对应的数据结构地址添加至gclist。

优选地,所述在对虚拟块操作执行结束后,根据该虚拟块更改后得到的描述信息将虚拟块数据结构地址放置于对应的链表中,还包括:

在垃圾回收时,将回收出来的虚拟块的状态重新更改为free,并将相应虚拟块对应的数据结构地址添加至freelist。

与现有技术相比,上述技术方案具有以下优点:

本发明所提供的一种用于固态硬盘的虚拟块管理方法,包括:预先建立用于描述虚拟块信息的数据结构,并将固态硬盘的各虚拟块的描述信息存储在该数据结构的对应位置;在固态硬盘上电时,根据数据结构中保存的固态硬盘的虚拟块的描述信息构建多个管理链表,将相应的虚拟块数据结构地址存入对应链表项,并插入该管理链表中;固态盘运行过程中,存在对虚拟块的操作时,从对应管理链表中取出表示虚拟块数据结构的地址,从对应地址中找到虚拟块信息,并进行相应操作;在对虚拟块操作执行结束后,根据该虚拟块更改后得到的描述信息将虚拟块数据结构地址放置于对应的链表中。通过统一的数据结构对固态硬盘的虚拟块的信息进行描述,并建立多个管理链表对虚拟块进行统一的管理,所有的虚拟块的信息都挂在链表上,打开、关闭虚拟块或者对虚拟块进行垃圾回收等都通过链表操作而找到对应的虚拟块,即通过管理链表对虚拟块进行跟踪,实现了对虚拟块的使用和回收的管理,清晰简洁,降低了虚拟块的管理的复杂度,减少了存储空间的浪费,同时使得虚拟块的分配、使用和回收的流程统一高效。

附图说明

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

图1为本发明一种用于固态硬盘的虚拟块管理方法流程图。

具体实施方式

本发明的核心是提供一种用于固态硬盘的虚拟块管理方法,可以减少存储空间的浪费,同时使得虚拟块的分配、使用和回收的流程统一高效。

为了使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。

在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施的限制。

请参考图1,图1为本发明一种用于固态硬盘的虚拟块管理方法流程图。

本发明的一种具体实施方式提供了一种用于固态硬盘的虚拟块管理方法,包括:

s11:预先建立用于描述虚拟块信息的数据结构,并将固态硬盘的各虚拟块的描述信息存储在该数据结构的对应位置。

预先建立用于描述虚拟块信息的数据结构,并将固态硬盘的各虚拟块的描述信息存储在该数据结构的对应位置,包括:预先建立用于描述虚拟块信息的数据结构;将固态硬盘的各虚拟块的虚拟块地址、擦除次数、状态和坏块信息存储在数据结构的对应位置。

在本发明的一种实施方式中,采样统一的数据结构对virtualblock的信息进行描述,该信息包括vblockaddr(虚拟块地址),擦除次数,state(状态),badblockbitmap(坏块信息,即描述组成虚拟块的各个物理块是否是坏块)。

s12:在固态硬盘上电时,根据数据结构中保存的固态硬盘的虚拟块的描述信息构建多个管理链表,将相应的虚拟块数据结构地址存入对应链表项,并插入该管理链表中。

在本发明的一种实施方式中,在固态硬盘上电时,根据数据结构中保存的固态硬盘的虚拟块的描述信息构建多个管理链表,将相应的虚拟块数据结构地址存入对应链表项,并插入该管理链表中,包括:在固态硬盘上电时,判断固态硬盘是否为第一次上电;若是,则根据坏块扫描的结果初始化各对应虚拟块的信息,根据虚拟块的信息构建freelist和badlist,将空闲虚拟块设置状态为free并放置于freelist,将坏虚拟块设置状态为bad并放置于badlist;若否,则根据固态硬盘下电时保存的虚拟块信息,构建freelist、badlist、usedlist和gclist。

第一次上电时,根据坏块扫描的结果初始化虚拟块信息,根据虚拟块的描述信息构建管理链表freelist和badlist,此时将可用的空闲块(即空闲虚拟块)放入freelist,将坏块(即坏虚拟块,也即经过扫描组成虚拟块的物理块有坏块的虚拟块)放入badlist。

非首次上电时,根据下电时保存的虚拟块信息,优选构建出freelist、badlist、usedlist和gclist四个管理链表。

s13:固态盘运行过程中,存在对虚拟块的操作时,从对应管理链表中取出表示虚拟块数据结构的地址,从对应地址中找到虚拟块信息,并进行相应操作。

在本发明的一种实施方式中,固态盘运行过程中,存在对虚拟块的操作时,从对应管理链表中取出表示虚拟块数据结构的地址,从对应地址中找到虚拟块信息,,并进行相应操作包括:在固态硬盘运行过程中,存在获取新的虚拟块用于写操作时,在freelist中取出相应的虚拟块数据结构地址,根据该虚拟块数据结构地址找到对应的虚拟块数据结构,并根据该虚拟块数据结构中的虚拟块地址找到对应的虚拟块;将找寻到的虚拟块的状态由free更改为active;控制处于active状态的虚拟块执行写操作。

其中,管理链表中存储的是描述虚拟块数据结构的地址,根据虚拟块数据结构地址以找到虚拟块数据结构,根据虚拟块数据结构中的虚拟块地址以找到虚拟块,因为虚拟块是flash,而虚拟块地址是flash地址,虚拟块数据结构在内存中,虚拟块数据结构地址是内存地址,在对虚拟块进行操作时,需要虚拟块的必要信息,比如,写操作是不适合对坏块进行操作的,state,擦除次数,badblockbitmap对于操作虚拟块必不可少,有了虚拟块数据结构就可以下发对虚拟块的操作,例如下发写操作,将数据结构中的虚拟块地址和坏块信息下发下去,下层在执行时,会根据坏块信息只写非坏块,其他数据结构项在其他操作时有对应作用。

s14:在对虚拟块操作执行结束后,根据该虚拟块更改后得到的描述信息将虚拟块数据结构地址放置于对应的链表中。

在本发明的一种实施方式中,在对虚拟块操作执行结束后,根据该虚拟块更改后得到的描述信息将虚拟块数据结构地址放置于对应的链表中,包括:判断处于active状态的虚拟块的写操作是否执行完毕,并需要进行关闭操作;若是,则将该虚拟块的状态更改为used,并将该虚拟块对应的数据结构地址添加至usedlist。

进一步地,还包括:将写出错或读出错的虚拟块的状态更改为gc,并将相应虚拟块对应的数据结构地址添加至gclist。

在垃圾回收时,将回收出来的虚拟块的状态重新更改为free,并将相应虚拟块对应的数据结构地址添加至freelist

在本实施方式中,对虚拟块操作完成并进行关闭操作时,将该虚拟块的状态更改为used,即表示其状态为用过的,此时将该虚拟块对应的数据结构地址添加至usedlist。对于写出错或者读出错的虚拟块,将其状态更改为gc(即垃圾回收,指回收包含垃圾数据的空间以供写操作使用),并将对应的数据结构地址加入到gclist。在垃圾回收时,回收出来的虚拟块重新置为free,将对应的数据结构地址加入到freelist。进行垃圾回收有效地减少了存储空间的浪费。

综上,本发明所提供的用于固态硬盘的虚拟块管理方法,通过统一的数据结构对固态硬盘的虚拟块的信息进行描述,并建立多个管理链表对虚拟块进行统一的管理,所有的虚拟块的信息都挂在链表上,打开、关闭虚拟块或者对虚拟块进行垃圾回收等都通过链表操作而找到对应的虚拟块,即通过管理链表对虚拟块进行跟踪,实现了对虚拟块的使用和回收的管理,清晰简洁,降低了虚拟块的管理的复杂度,减少了存储空间的浪费,同时使得虚拟块的分配、使用和回收的流程统一高效。

以上对本发明所提供的一种用于固态硬盘的虚拟块管理方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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