CN112379833A - 文件缓存装置、文件缓存、闲置空间回收及故障恢复方法 - Google Patents
文件缓存装置、文件缓存、闲置空间回收及故障恢复方法 Download PDFInfo
- Publication number
- CN112379833A CN112379833A CN202011252362.1A CN202011252362A CN112379833A CN 112379833 A CN112379833 A CN 112379833A CN 202011252362 A CN202011252362 A CN 202011252362A CN 112379833 A CN112379833 A CN 112379833A
- Authority
- CN
- China
- Prior art keywords
- file
- block
- linked list
- management control
- unit
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000011084 recovery Methods 0.000 title claims abstract description 16
- 238000004064 recycling Methods 0.000 title claims description 9
- 239000007787 solid Substances 0.000 claims abstract description 49
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种文件缓存装置、文件缓存、闲置空间回收及故障恢复方法,其中,文件缓存装置包括内存及固态硬盘,固态硬盘包括存储块,内存包括与存储块一一对应的管理控制块,管理控制块包括第一单元和第二单元;第二单元存储对应的存储块的地址;用于缓存第一文件的所有存储块对应的管理控制块链接形成第一文件块链表,其中管理控制块的第一单元存储相连的下一个管理控制块的地址或空地址;未缓存数据的所有存储块对应的管理控制块链接形成空闲块链表,其中管理控制块的第一单元存储相连的下一个管理控制块的地址或空地址。本发明可有效提高将缓存文件进行落盘时的灵活性。
Description
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种文件缓存装置、文件缓存、闲置空间回收及故障恢复方法。
背景技术
在对象存储场景中,高速写入是非常重要的技术要求,常用的机械硬盘对于连续写入时有较好的性能,但对于随机写入性能较差。而在对象存储场景中,由于会汇聚不同的小文件追加写入到大块文件中,因而为了提高机械硬盘的写入性能,无法避免需要进行缓存,在汇聚到大量的数据后进行连续写入,以达到最高写入性能。
通过使用固态硬盘做缓存,可以避免现有的用内存做缓存时掉电丢失数据的问题。在使用固态硬盘缓存小文件时,通常先在固态硬盘中创建一个超大文件,将需要缓存的小文件顺序写入这个超大文件中,将超大文件像一个环形队列空间进行使用。
当需要将超大文件进行落盘操作时,需要将超大文件中先缓存的数据先取出来落入机械硬盘,但是如果想将超大文件的中间部分文件或其它任意位置文件先落盘,就无法实现,因此这种用固态硬盘中超大文件顺序缓存小文件的方式具有落盘操作缺乏灵活性的问题。
发明内容
本发明提供一种文件缓存装置、文件缓存、闲置空间回收及故障恢复方法,用以克服上述现有技术中存在的技术问题,以提高将缓存文件进行落盘时的灵活性。
本发明提供的一种文件缓存装置,包括内存及固态硬盘,其特征在于,所述固态硬盘包括存储块,所述内存包括与所述存储块一一对应的管理控制块,所述管理控制块包括第一单元和第二单元;所述第二单元存储对应的所述存储块的地址;用于缓存第一文件的所有存储块对应的管理控制块链接形成第一文件块链表,所述第一文件块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址;未缓存数据的所有存储块对应的管理控制块链接形成空闲块链表,所述空闲块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址。
进一步地,属于第一类型的所述第一文件所对应的所述第一文件块链表为第一组内文件块链表,所述内存还包括与所述第一组内文件块链表一一对应的文件控制块,所述文件控制块链接形成第一文件组链表,以使属于所述第一类型的所述第一文件组合成第一文件组;所述文件控制块包括第三单元和第四单元;所述第四单元用于存储对应的所述第一组内文件块链表中第一管理控制块的地址;所述第三单元用于存储链接的下一个文件控制块的地址或空地址。
可选地,所述存储块包括属性区和数据区,所述数据区用于存储部分或全部所述第一文件,所述属性区用于存储属性信息。
本发明提供的一种文件缓存方法,使用上述的文件缓存装置,包括:从所述空闲块链表中的第一个所述管理控制块开始获取指定数量连续的所述管理控制块,以创建第二文件块链表;使所述第二文件块链表中所述管理控制块对应的存储块按照所述管理控制块的链接顺序存储第二文件。
进一步地,上述文件缓存方法还包括:在创建所述第二文件块链表之前,根据所述第二文件的大小以及所述存储块的大小计算获得所述指定数量。
进一步地,上述文件缓存方法还包括:创建第二文件指针,用于存储所述第二文件块链表中第一个所述管理控制块的地址;将所述第二文件块链表中最后一个所述管理控制块的所述第一单元的内容存储于空闲块指针中;将空地址存储于所述第二文件块链表中最后一个所述管理控制块的所述第一单元中。
进一步地,当所述第二文件属于第二类型时,所述第二文件对应的第二文件块链表为第二组内文件块链表,上述文件缓存方法还包括:创建与所述第二组内文件块链表一一对应的文件控制块,所述文件控制块包括第三单元和第四单元;使所述第四单元存储对应的所述第二组内文件块链表的第一个管理控制块的地址;将与所述第二组内文件块链表一一对应的文件控制块链接形成第二文件组链表,以使属于所述第二类型的所述第二文件组合成第二文件组,所述第三单元用于存储链接的下一个所述文件控制块的地址或空地址。
可选地,上述文件缓存方法还包括:生成占用属性信息;将所述占用属性信息存储于所述存储块中。
本发明提供的一种闲置空间回收方法,使用上述的文件缓存装置,包括:将所述第一文件块链表中第一个所述管理控制块的地址存储于所述空闲块链表中最后一个所述管理控制块的所述第一单元中,以将所述第一文件块链表链接在所述空闲块链表尾部。
进一步地,上述闲置空间回收方法还包括:将空闲属性信息存储于所述第一文件块链表中所有所述管理控制块对应的存储块中。
本发明提供的一种故障恢复方法,使用包括内存及固态硬盘的文件缓存装置,所述固态硬盘包括具有指定位置和指定大小的、用于存储数据和属性信息的存储块,所述方法包括:
根据所述指定位置和所述指定大小获取所有所述存储块的地址及属性信息;在所述内存中创建与所述存储块一一对应的管理控制块,所述管理控制块包括第一单元和第二单元,所述第二单元存储对应的存储块的地址;将所述属性信息为空闲属性信息的所有存储块对应的管理控制块链接形成空闲块链表,所述空闲块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址;将所述属性信息为占用属性信息且属于同一个文件的所有存储块,按照所述占用属性信息中文件块序号,将对应的管理控制块顺序链接形成文件块链表,所述文件块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址。
进一步地,上述故障恢复方法还包括:将所述属性信息为占用属性信息且属于同一个文件组的所有文件块链表指定为组内文件块链表;创建与所述组内文件块链表一一对应的文件控制块,所述文件组控制块包括第三单元和第四单元;使所述第四单元存储对应的组内文件块链表的第一个管理控制块的地址;将所述组内文件块链表对应的文件控制块链接形成文件组链表,所述第三单元用于存储链接的下一个所述文件控制块的地址或空地址。
本发明提供的文件缓存装置、文件缓存、闲置空间回收、故障恢复方法中,固态硬盘包括存储块,内存中包括与存储块一一对应的管理控制块,管理控制块的第二单元中存储有对应存储块的地址,且用于存储一个文件的所有存储块对应的管理控制块链接形成文件块链表,未缓存数据的所有存储块对应的管理控制块链接形成空闲块链表,链接是通过管理控制块中第一单元存储相连的下一个管理控制块的地址实现的,链表的最后一个管理控制块中第一单元存储空地址,表示为链表尾部。
也就是说,文件存储在固态硬盘的一个或多个存储块中,同时,在内存中有一个文件块链表将存储块的地址存储在其中各个管理控制块第二单元中,使得通过内存的一个文件块链表就可以找到这个文件在固态硬盘的存储位置,进而使得每个存储在固态硬盘上的文件都可以通过一个独立的文件块链表进行寻址,这样在文件落盘操作时就可以根据需要选取任何一个文件块链表从而找到对应文件的存储位置,从而将这个存储位置上的文件进行落盘,实现灵活的落盘操作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种文件缓存装置的结构示意图;
图2为本发明实施例提供的另一种文件缓存装置中内存的结构示意图;
图3为本发明实施例提供的一种文件缓存方法的流程图;
图4为本发明实施例提供的一种闲置空间回收方法的流程图;
图5为本发明实施例提供的一种故障恢复方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的技术方案更加清楚,以下结合附图对本发明的实施例进行详细说明。
图1为本发明实施例提供的一种文件缓存装置的结构示意图,如图1所示,本实施例中的文件缓存装置包括:内存1及固态硬盘2,其中,固态硬盘2包括存储块21,内存1包括与存储块21一一对应的管理控制块11,管理控制块包括第一单元a和第二单元b,该第二单元b存储对应的存储块21的地址。图1中第二单元b与存储块21之间的连线代表两者之间的对应关系。
本实施例将固态硬盘里的缓存空间预先划分成指定大小的若干个存储块21,使得每一个存储块的首地址为已知的固定地址,便于与内存中的管理控制块11一一对应进行管理,具体地,可以将固态硬盘作为裸盘使用,把所有缓存空间划分为若干个存储块,也可以在固态硬盘上安装文件系统后创建一个超大文件,把超大文件划分为若干个存储块。例如需要使用1TB的空间为缓存空间,则安装文件系统时,使用文件系统在固态硬盘中分配一个1TB的超大文件,在文件系统异常重启、设备断电重启等异常事件发生时,此文件将一直存在使用,不回收。
使用裸盘与使用超大文件的区别在于,超大文件的缓存使用区域是这个超大文件所分配的所有空间,而裸盘则将整个固态硬盘用于缓存,并不设立文件系统,自行维护管理固态硬盘的写入与读取。
用于缓存第一文件的所有存储块21对应的管理控制块11链接形成第一文件块链表3,该第一文件块链表3中管理控制块11的第一单元存储相连的下一个管理控制块11的地址或空地址。
需要说明的是:这里的“第一文件”用于在名称上与下述实施例中的“第二文件”相区别,“第一文件块链表”用于在名称上与下述实施例中的“第二文件块链表”相区别,一个存储在固态硬盘中的文件对应形成一个文件块链表,不同的文件对应不同的文件块链表,这里的文件可以是第一文件也可以是第二文件,可以有多个不同的第一文件,也可以有多个不同的第二文件。
链表是一种物理存储单元上非连续、非顺序的存储结构,本实施例中的第一文件块链表3中,一个管理控制块11就是一个存储单元,两个相连的管理控制块11中,前一个管理控制块11中第一单元a存储了后一个管理控制块11的地址,最后一个管理控制块11中第一单元a存储空地址,表示第一文件块链表的尾部,从而形成一个单向链表。图1中第一文件块链表3里,相邻管理控制块11之间的连线表示链接关系。链表建立时通常需创建一个指针指向链表的头部,即链表中第一个存储单元的地址,以便于对链表进行寻址。在本实施例中,形成第一文件块链表3时也创建了第一文件指针31,用于指向第一文件块链表3的头部。
本发明实施例提供的文件缓存装置中,未缓存数据的所有存储块21对应的管理控制块11链接形成空闲块链表4,该空闲块链表4中管理控制块11的第一单元a存储相连的下一个管理控制块11的地址或空地址。
本实施例中的空闲块链表4中,一个管理控制块11就是一个存储单元,两个相连的管理控制块11中,前一个管理控制块11中第一单元a存储了后一个管理控制块11的地址,最后一个管理控制块11中第一单元a存储空地址,表示空闲块链表的尾部,从而形成一个单向链表。另外,形成空闲块链表4时也创建了空闲块指针41,用于指向空闲块链表4的头部。空闲块链表4的作用是将未缓存数据的存储块用内存里建立的链表进行管理,以便在后续缓存新文件时为新文件分配存储空间、落盘后回收闲置空间。
本发明实施例提供的文件缓存装置中,固态硬盘包括存储块,内存中包括与存储块一一对应的管理控制块,管理控制块的第二单元中存储有对应存储块的地址,且用于存储一个文件的所有存储块对应的管理控制块链接形成文件块链表,未缓存数据的所有存储块对应的管理控制块链接形成空闲块链表,链接是通过管理控制块中第一单元存储相连的下一个管理控制块的地址实现的,链表的最后一个管理控制块中第一单元存储空地址,表示为链表尾部。
也就是说,文件存储在固态硬盘的一个或多个存储块中,同时,在内存中有一个文件块链表将存储块的地址存储在其中各个管理控制块第二单元中,使得通过内存的一个文件块链表就可以找到这个文件在固态硬盘的存储位置,进而使得每个存储在固态硬盘上的文件都可以通过一个独立的文件块链表进行寻址,这样在文件落盘操作时就可以根据需要选取任何一个文件块链表从而找到对应文件的存储位置,从而将这个存储位置上的文件进行落盘,实现灵活的落盘操作。
另外,将固态硬盘划分成存储块与内存中的管理控制块一一对应进行使用时,可实现对指定存储块的控制,就像使用内存一样方便灵活,而且可以高效的利用固态硬盘的高速读写能力进行缓存,由于不需要进行文件IO操作,写入时没有额外的IO开销。
上述实施例提供的文件缓存装置中,属于第一类型的第一文件所对应的第一文件块链表为第一组内文件块链表6,内存1还可以包括与第一组内文件块链表6一一对应的文件控制块12,文件控制块12链接形成第一文件组链表5,以使属于第一类型的第一文件组合成第一文件组。此处的第一类型、第一组内文件块链表、第一文件组链表、第一文件组中的“第一”均是用于与下面实施例描述的第二类型、第二组内文件块链表、第二文件组链表、第二文件组中的“第二”在名称上相互区别。
如图2所示,其中,文件控制块12包括第三单元e和第四单元f,该第四单元f用于存储对应的第一组内文件块链表6中第一个管理控制块11的地址,该第三单元e用于存储链接的下一个文件控制块12的地址或空地址。当文件控制块12是文件组链表5中最后一个文件控制块12时,该文件控制块12中第三单元中存储空地址,表示是文件组链表的尾部。
文件控制块12之间的连线表示两者之间的链接关系,图2中仅示出了由两个文件控制块链接形成的文件组链表5,本发明不限于此,文件组链表5中的文件控制块12的个数可根据实际需要选择。
第一类型可以是图片、视频、文本等,对于属于第一类型的一组第一文件,通常需要一起落盘,这时,可以通过形成文件组链表把同一类型的第一文件对应的第一文件块链表通过文件控制块12组织起来,将这些第一文件块链表指定为第一组内文件块链表,以在名称上与其它没有成组的第一文件块链表相区别。例如,图2中,两个文件控制块12链接,前一个文件控制块12中第三单元e存储后一个文件控制块12的地址,前一个文件控制块中第四单元f存储对应的第一组内文件块链表6的第一个管理控制块11的地址,后一个文件控制块12中第四单元f存储另一个第一组内文件块链表6的第一个管理控制块11的地址。通过这种方式,把两个第一组内文件块链表组织在一起。
同样地,文件组链表创建是也需要创建一个文件组指针51,存储第一个文件控制块12的地址,以指向第一文件组链表5的头部。
上述实施例中,存储块21可以包括属性区c和数据区d,如图1所示,该数据区d用于存储部分或全部第一文件,而属性区c用于存储属性信息。
第一文件可以存储在一个存储块中,也可以存储在多个存储块21中,存储第一文件所需的存储块21的数量需要根据第一文件的大小和存储块21的预先分配的指定大小来确定。存储有数据的存储块21可以在属性区存储一些属性信息,例如,用于表示存储块已存储数据的占用标识、用于表示存储块未存储数据的空闲标识、用于表示存储数据所属文件的文件ID、用于表示存储数据属于文件第几部分的文件块序号等。
通过存储属性信息,可以在文件缓存装置异常重启、断电重启等异常事件发生时,内存中的内容消失后,根据固态硬盘中固定地址的各存储块21的属性信息,在内存中重建一一对应的管理控制块,并将与存储同一个文件的存储块对应的管理控制块链接形成文件块链表,将与未存储数据的存储块对应的管理控制块链接形成文件块链表。从而实现了掉电不丢失数据的功能。
图3为本发明实施例提供的一种文件缓存方法的流程图,如图3所示,该文件缓存方法使用了上述实施例提供的文件缓存装置,该方法具体包括如下步骤。
步骤301、从空闲块链表中的第一个管理控制块开始获取指定数量连续的管理控制块,以创建第二文件块链表。
具体地,指定数量可以通过待存储的第二文件的大小以及存储块的大小来确定,通过从空闲块链表头部开始取出指定数量个连续的管理控制块,相当于从空闲块链表头部开始取出了一个链表,将这个链表指定为第二文件块链表,作为对应第二文件的文件块链表。
步骤302、使第二文件块链表中管理控制块对应的存储块按照管理控制块的链接顺序存储第二文件。
具体地,第二文件块链表中指定数量的管理控制块对应着指定数量的存储块,需要将第二文件存储于这些存储块中,存储时需要按照第二文件块链表中管理控制块的链接顺序来存储第二文件。
例如,第二文件块链表中有3个管理控制块,依次为第一管理控制块、第二管理控制块和第三管理控制块;第一管理控制块对应第一存储块,第二管理控制块对应第二存储块,第三管理控制块对应第三存储块,第二文件的第一部分存储在第一存储块里,第二文件的第二部分存储在第二存储块里,第二文件的最后一部分存储在第三存储块里。
本发明提供的文件缓存方法中,使用了上述实施例提供的文件缓存装置,通过从空闲块链表的头部开始获取了指定数量连续的管理控制块形成了新的文件块链表,以将该链表对应的存储块存储新的第二文件,从而通过简便的方法为新的缓存文件分配存储空间并建立新的链表。
使得通过内存的一个文件块链表就可以找到这个文件在固态硬盘的存储位置,进而使得每个存储在固态硬盘上的文件都可以通过一个独立的文件块链表进行寻址,这样在文件落盘操作时就可以根据需要选取任何一个文件块链表从而找到对应文件的存储位置,从而将这个存储位置上的文件进行落盘,实现灵活的落盘操作。
上述的文件缓存方法还可以包括:在创建第二文件块链表之前,可根据第二文件的大小以及存储块的预先分配的指定大小计算获得该指定数量。
例如,第二文件大小为2M,存储块大小为500K,则可以用第二文件大小除以存储块大小,计算获得指定数量为4。
上述的文件缓存方法还可以包括:创建第二文件指针,用于存储第二文件块链表中第一个管理控制块的地址;将第二文件块链表中最后一个管理控制块的第一单元的内容存储于空闲块指针中;将空地址存储于第二文件块链表中最后一个管理控制块的第一单元中。
具体地,在从空闲块链表头部开始取出一段链表作为第二文件块链表后,需要将已有空闲块指针指向空闲块链表中剩余管理控制块中的第一个管理控制块的地址,也就是将第二文件块链表中最后一个管理控制块的第一单元内容存储在空闲块指针中,从而更新空闲块指针以指向空闲块链表的新头部。便于下一个文件或文件组缓存时,通过空闲块指针找到空闲块链表的头部。
对于新建的第二文件块链表,需要创建第二文件指针指向第二文件块链表头部,即把第二文件块链表中第一个管理控制块的地址存储在第二文件指针中,并将空地址存储于第二文件块链表中最后一个管理控制块的第一单元中,以断开第二文件块链表与空闲块链表之间的链接。由此方便快捷地创建了第二文件块链表。
当第二文件属于第二类型时,第二文件对应的第二文件块链表可以称为第二组内文件块链表,上述的文件缓存方法还可以包括:创建与第二组内文件块链表一一对应的文件控制块,该文件控制块包括第三单元和第四单元;使文件控制块的第四单元存储对应的第二组内文件块链表的第一个管理控制块的地址;将与第二组内文件块链表一一对应的文件控制块链接形成第二文件组链表,以使属于第二类型的第二文件组合成第二文件组,文件控制块的第四单元用于存储链接的下一个文件控制块的地址或空地址。
具体地,如图2所示,内存中还可以形成第二文件组链表,以把属于第二类型的第二文件对应的第二文件块链表组织在一起,便于一起寻址和落盘。第二类型可以是图片、视频、文本等与第一类型相区别的类型。需要形成第二文件组的第二文件对应的第二文件块链表可称为第二组内文件块链表,每一个第二组内文件块链表都是使用上述实施例描述的文件缓存方法创建的。该方法还可包括创建与第二组内文件块链表一一对应的文件控制块,每个文件控制块对应一个第二组内文件块链表,这些文件控制块链接在一起形成第二文件组链表,将对应的第二组内文件块链表中第一个管理控制块的地址保存在该文件控制块的第四单元中。文件控制块的第三单元用于保存相连的下一个文件控制块的地址,文件组链表里最后一个文件控制块的第三单元存储空地址,表示文件组链表的尾部。
另外,上述的文件缓存方法还可以包括生成占用属性信息;将该占用属性信息存储于存储块中。
具体地,存储块中不仅存储数据,也可以存储属性信息,当存储块存储有数据时,可以根据数据生成属性信息,成为占用属性信息,其中可以包括用于表示存储块已存储数据的占用标识、用于表示存储数据所属文件的文件ID、用于表示存储数据属于文件第几部分的文件块序号等。如上所述,这些属性信息可以用于文件缓存装置掉电后在内存中恢复各个链表,防止数据丢失。随后将存储块属性区原有的属性信息刷新成生成的占用属性信息。
当存储块存储的数据所属的第二文件是第二文件组中的文件,则生成的占用属性信息还包括用于表示存储数据所属文件组的文件组ID以及用于表示存储数据属于文件组第几个的文件组序号等。
图4为本发明实施例提供的一种闲置空间回收方法的流程图,如图4所示,该方法使用了上述实施例描述的文件缓存装置,且该方法包括如下步骤。
步骤401、将第一文件块链表中第一个管理控制块的地址存储于空闲块链表中最后一个管理控制块的第一单元中,以将第一文件块链表链接在空闲块链表尾部。
具体地,此步骤是在第一文件落盘后执行,第一文件落盘后,用于存储第一文件的存储块就变成未存储数据的存储块,这些存储块对应的第一文件块链表需要回收至空闲块链表的尾部,以供后续缓存文件时使用。在回收时,只需要将第一文件块链表中第一个管理控制块的地址存储于空闲块链表中最后一个管理控制块的第一单元中,这样第一文件块链表就可以链接在空闲块链表尾部,以使落盘后闲置的存储块被回收成为空闲块,供其它文件存储时使用。
对于其它的文件,如第二文件、第三文件……等,还有文件组,均可以采用此方法进行闲置空间的回收,只需要将文件或文件组对应的文件块链表逐个链接在空闲块链表的尾部即可。
本发明提供的闲置空间回收方法中,使用了上述实施例提供的文件缓存装置,不仅通过将第一文件落盘后空闲的存储块对应的第一文件块链表链接至空闲块链表的尾部,使得未存储数据的存储块得以回收,以供后续缓存其它文件时使用;也使得通过内存的一个文件块链表就可以找到这个文件在固态硬盘的存储位置,这样在文件落盘操作时就可以根据需要选取任何一个文件块链表从而找到对应文件的存储位置,从而将这个存储位置上的文件进行落盘,实现灵活的落盘操作。
上述实施例提供的闲置空间回收方法中,还可以包括:将空闲属性信息存储于第一文件块链表中所有管理控制块对应的存储块中。
具体地,该步骤是在第一文件块链表回收至空闲块链表中后,对回收的所有用于存储第一文件的存储块的属性区进行刷新,将原本的占用属性信息更新为空闲属性信息,该空闲属性信息可以包括用于表示存储块未存储数据的占用标识。如上所述,属性信息可以用于文件缓存装置掉电后在内存中恢复各个链表,防止数据丢失。
图5为本发明实施例提供的一种故障恢复方法的流程图,该方法使用了包括内存及固态硬盘的文件缓存装置,其中,固态硬盘包括具有指定位置和指定大小的用于存储数据和属性信息的存储块如图5所示,该方法包括如下步骤。
步骤501、根据指定位置和指定大小获取所有存储块的地址及属性信息。
具体地,该方法是在系统异常重启或设备掉电重启,内存的内容全部消失后,为恢复文件缓存装置正常工作而执行的。固态硬盘里内容在系统异常重启或设备掉电重启后不受影响,其上的缓存空间预先被划分成指定大小的若干个存储块,使得每一个存储块的首地址为已知的固定地址,这样就可以从固定位置的存储块获得该存储块的地址,以及存储在该存储块中的属性信息。
有些存储块已存储数据,而有些存储块未存储数据,每个存储块还存储有属性信息,属性信息可用来表示存储块是否被占用,也可用来表示所存储数据的属性,如上述实施例的描述,属性信息可以包括用于表示存储块已存储数据的占用标识、用于表示存储块未存储数据的空闲标识、用于表示存储数据所属文件的文件ID、用于表示存储数据属于文件第几部分的文件块序号、用于表示存储数据所属文件组的文件组ID以及用于表示存储数据属于文件组第几个的文件组序号等。
步骤502、在内存中创建与存储块一一对应的管理控制块,该管理控制块包括第一单元和第二单元,第二单元存储对应的存储块的地址。
具体地,管理控制块通过在第二单元中存储对应存储块的地址,来保证与存储块一一对应。
步骤503、将属性信息为空闲属性信息的所有存储块对应的管理控制块链接形成空闲块链表,空闲块链表中管理控制块的第一单元存储相连的下一个管理控制块的地址或空地址。
具体地,当存储块已存储数据时,该存储块中保存的属性信息为根据所存储数据获得的占用属性信息,其中包括占用标识,用于表示该存储块已存储数据;当存储块未存储数据时,该存储块中保存的属性信息为空闲属性信息,其中包括空闲标识,用于表示该存储块未存储数据。
属性信息为空闲属性信息的存储块未存储数据,为空闲存储块,将这些存储块对应的管理控制块链接起来形成空闲块链表,具体就是将空闲块链表中管理控制块的第一单元存储相连的下一个管理控制块的地址,如果管理控制块是空闲块链表里的最后一个管理控制块,则该管理控制块的第一单元存储空地址。
步骤504、将属性信息为占用属性信息且属于同一个文件的所有存储块,按照占用属性信息中文件块序号,将对应的管理控制块顺序链接形成文件块链表,文件块链表中管理控制块的第一单元存储相连的下一个管理控制块的地址或空地址。
属性信息为占用属性信息的存储块已存储数据,将这些存储块中属于同一个文件的存储块对应的管理控制块,按照占用属性信息中文件块序号链接起来形成文件块链表。具体来说就是,属性信息里还包含有所存储数据的属性,即该数据属于哪个文件的文件ID、该数据属于文件中的第几部分的文件块序号,根据文件ID就可以把属于同一个文件的存储块集中在一起,根据文件块序号就可以知道哪个存储块存储的是文件的第一部分、第二部分等,按照这个顺序把各存储块对应的管理控制块链接起来形成一个文件块链表。
也就是将后一个管理控制块的地址存储在相连的前一个管理控制块的第一单元中,如果管理控制块是文件块链表里的最后一个管理控制块,则该管理控制块的第一单元存储空地址。
需要说明的是:步骤503和步骤504的执行顺序不限于上述的顺序,也可以是先执行步骤504再执行步骤503,还可以是同时执行。另外,再固态硬盘上预先划分存储块时,可以将固态硬盘作为裸盘使用,把所有缓存空间划分为若干个存储块,也可以在固态硬盘上安装文件系统后创建一个超大文件,把超大文件划分为若干个存储块。
本发明提供的故障恢复方法中,使用了包括内存及固态硬盘的文件缓存装置,其中固态硬盘包括用于存储数据和属性信息的存储块,由于在发生故障后内存中的内容全部消失,为了继续使文件缓存装置能继续缓存文件且能寻址已存储的文件,采用了在内存中创建与存储块一一对应的管理控制块的方法,存储块的第二单元存储了对应存储块的地址,另外根据存储块的属性信息,将属于同一个文件的所有存储块对应的管理控制块依序链接形成文件块链表,未缓存数据的所有存储块对应的管理控制块链接形成空闲块链表,链接是通过管理控制块中第一单元存储相连的下一个管理控制块的地址实现的,链表的最后一个管理控制块中第一单元存储空地址,表示为链表尾部。
也就是说,通过在内存中恢复形成链表,使得通过内存的一个文件块链表就可以找到这个文件在固态硬盘的存储位置,进而使得每个存储在固态硬盘上的文件都可以通过一个独立的文件块链表进行寻址,这样在文件落盘操作时就可以根据需要选取任何一个文件块链表从而找到对应文件的存储位置,从而将这个存储位置上的文件进行落盘,实现灵活的落盘操作,也使得文件缓存装置在故障发生后通过恢复方法能继续进行文件缓存及落盘操作。
另外,将固态硬盘划分成存储块与内存中的管理控制块一一对应进行使用时,可实现对指定存储块的控制,就像使用内存一样方便灵活,而且可以高效的利用固态硬盘的高速读写能力进行缓存,由于不需要进行文件IO操作,写入时没有额外的IO开销。
上述实施例提供的故障恢复方法中,还可以包括:将属性信息为占用属性信息且属于同一个文件组的所有文件块链表指定为组内文件块链表;创建与组内文件块链表一一对应的文件控制块,文件控制块包括第三单元和第四单元;使文件组控制块的第四单元存储对应的组内文件块链表的第一个管理控制块的地址;将组内文件块链表对应的文件控制块链接形成文件组链表,第三单元存储链接的下一个文件组控制块的地址或空地址。
具体地,如图2所示,内存中存在文件组链表,以把属于同一类型的几个文件对应的文件块链表组织在一起,便于一起寻址和落盘。故障恢复时,需要在重新创建的文件块链表对应的存储块里查找属性信息,如果包含文件组ID以及文件组序号,就需要将文件组ID相同的文件块链表指定为组内文件块链表,每一个组内文件块链表都是使用上述实施例描述的故障恢复方法中文件块链表的创建方法创建的。首先创建与组内文件块链表一一对应的文件控制块,每个文件控制块对应一个组内文件块链表,将对应的组内文件块链表中第一个管理控制块的地址保存在该文件控制块的第四单元中。然后,将组内文件块链表对应的文件控制块链接形成文件组链表,文件控制块的第三单元用于保存相连的下一个文件控制块的地址,文件组链表里最后一个文件控制块的第三单元存储空地址,表示文件组链表的尾部。由此在内存中恢复文件组链表。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种文件缓存装置,包括内存及固态硬盘,其特征在于,所述固态硬盘包括存储块,所述内存包括与所述存储块一一对应的管理控制块,所述管理控制块包括第一单元和第二单元;所述第二单元存储对应的所述存储块的地址;
用于缓存第一文件的所有存储块对应的管理控制块链接形成第一文件块链表,所述第一文件块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址;
未缓存数据的所有存储块对应的管理控制块链接形成空闲块链表,所述空闲块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址。
2.根据权利要求1所述的装置,其特征在于,属于第一类型的所述第一文件所对应的所述第一文件块链表为第一组内文件块链表,所述内存还包括与所述第一组内文件块链表一一对应的文件控制块,所述文件控制块链接形成第一文件组链表,以使属于所述第一类型的所述第一文件组合成第一文件组;
所述文件控制块包括第三单元和第四单元;所述第四单元用于存储对应的所述第一组内文件块链表中第一管理控制块的地址;所述第三单元用于存储链接的下一个文件控制块的地址或空地址。
3.根据权利要求1或2所述的装置,其特征在于,所述存储块包括属性区和数据区,所述数据区用于存储部分或全部所述第一文件,所述属性区用于存储属性信息。
4.一种文件缓存方法,其特征在于,使用权利要求1~3任一项所述的文件缓存装置,包括:
从所述空闲块链表中的第一个所述管理控制块开始获取指定数量连续的所述管理控制块,以创建第二文件块链表;
使所述第二文件块链表中所述管理控制块对应的存储块按照所述管理控制块的链接顺序存储第二文件。
5.根据权利要求4所述的方法,其特征在于,还包括:在创建所述第二文件块链表之前,根据所述第二文件的大小以及所述存储块的大小计算获得所述指定数量。
6.根据权利要求4所述的方法,其特征在于,还包括:
创建第二文件指针,用于存储所述第二文件块链表中第一个所述管理控制块的地址;
将所述第二文件块链表中最后一个所述管理控制块的所述第一单元的内容存储于空闲块指针中;
将空地址存储于所述第二文件块链表中最后一个所述管理控制块的所述第一单元中。
7.根据权利要求4所述的方法,其特征在于,当所述第二文件属于第二类型时,所述第二文件对应的第二文件块链表为第二组内文件块链表,所述方法还包括:
创建与所述第二组内文件块链表一一对应的文件控制块,所述文件控制块包括第三单元和第四单元;
使所述第四单元存储对应的所述第二组内文件块链表的第一个管理控制块的地址;
将与所述第二组内文件块链表一一对应的文件控制块链接形成第二文件组链表,以使属于所述第二类型的所述第二文件组合成第二文件组,所述第三单元用于存储链接的下一个所述文件控制块的地址或空地址。
8.根据权利要求4~7任一项所述的方法,其特征在于,还包括:生成占用属性信息;将所述占用属性信息存储于所述存储块中。
9.一种闲置空间回收方法,其特征在于,使用权利要求1~3任一项所述的文件缓存装置,包括:
将所述第一文件块链表中第一个所述管理控制块的地址存储于所述空闲块链表中最后一个所述管理控制块的所述第一单元中,以将所述第一文件块链表链接在所述空闲块链表尾部。
10.根据权利要求9所述的方法,其特征在于,还包括:将空闲属性信息存储于所述第一文件块链表中所有所述管理控制块对应的存储块中。
11.一种故障恢复方法,其特征在于,使用包括内存及固态硬盘的文件缓存装置,所述固态硬盘包括具有指定位置和指定大小的用于存储数据和属性信息的存储块,所述方法包括:
根据所述指定位置和所述指定大小获取所有所述存储块的地址及属性信息;
在所述内存中创建与所述存储块一一对应的管理控制块,所述管理控制块包括第一单元和第二单元,所述第二单元存储对应的存储块的地址;
将所述属性信息为空闲属性信息的所有存储块对应的管理控制块链接形成空闲块链表,所述空闲块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址;
将所述属性信息为占用属性信息且属于同一个文件的所有存储块,按照所述占用属性信息中文件块序号,将对应的管理控制块顺序链接形成文件块链表,所述文件块链表中所述管理控制块的所述第一单元存储相连的下一个管理控制块的地址或空地址。
12.根据权利要求11所述的方法,其特征在于,还包括:将所述属性信息为占用属性信息且属于同一个文件组的所有文件块链表指定为组内文件块链表;创建与所述组内文件块链表一一对应的文件控制块,所述文件组控制块包括第三单元和第四单元;使所述第四单元存储对应的组内文件块链表的第一个管理控制块的地址;将所述组内文件块链表对应的文件控制块链接形成文件组链表,所述第三单元用于存储链接的下一个所述文件控制块的地址或空地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011252362.1A CN112379833A (zh) | 2020-11-12 | 2020-11-12 | 文件缓存装置、文件缓存、闲置空间回收及故障恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011252362.1A CN112379833A (zh) | 2020-11-12 | 2020-11-12 | 文件缓存装置、文件缓存、闲置空间回收及故障恢复方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112379833A true CN112379833A (zh) | 2021-02-19 |
Family
ID=74582084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011252362.1A Pending CN112379833A (zh) | 2020-11-12 | 2020-11-12 | 文件缓存装置、文件缓存、闲置空间回收及故障恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379833A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094374A (zh) * | 2021-04-27 | 2021-07-09 | 广州炒米信息科技有限公司 | 分布式存储和检索方法、装置及计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584518B1 (en) * | 2000-01-07 | 2003-06-24 | International Business Machines Corporation | Cycle saving technique for managing linked lists |
CN1517906A (zh) * | 2003-01-14 | 2004-08-04 | 联想(北京)有限公司 | 文件系统及文件管理方法 |
CN101187901A (zh) * | 2007-12-20 | 2008-05-28 | 康佳集团股份有限公司 | 一种实现文件访问的高速缓存系统和方法 |
CN101221465A (zh) * | 2008-01-04 | 2008-07-16 | 东南大学 | 用于降低硬盘功耗的数据缓冲区实现方法 |
CN101692655A (zh) * | 2009-10-23 | 2010-04-07 | 烽火通信科技股份有限公司 | 一种数据帧存储管理装置 |
US20100169551A1 (en) * | 2008-12-27 | 2010-07-01 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
CN102768645A (zh) * | 2012-06-14 | 2012-11-07 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的固态硬盘预取方法和固态硬盘ssd |
CN106776375A (zh) * | 2016-12-27 | 2017-05-31 | 东方网力科技股份有限公司 | 一种磁盘内部的数据缓存方法及装置 |
-
2020
- 2020-11-12 CN CN202011252362.1A patent/CN112379833A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584518B1 (en) * | 2000-01-07 | 2003-06-24 | International Business Machines Corporation | Cycle saving technique for managing linked lists |
CN1517906A (zh) * | 2003-01-14 | 2004-08-04 | 联想(北京)有限公司 | 文件系统及文件管理方法 |
CN101187901A (zh) * | 2007-12-20 | 2008-05-28 | 康佳集团股份有限公司 | 一种实现文件访问的高速缓存系统和方法 |
CN101221465A (zh) * | 2008-01-04 | 2008-07-16 | 东南大学 | 用于降低硬盘功耗的数据缓冲区实现方法 |
US20100169551A1 (en) * | 2008-12-27 | 2010-07-01 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
CN101692655A (zh) * | 2009-10-23 | 2010-04-07 | 烽火通信科技股份有限公司 | 一种数据帧存储管理装置 |
CN102768645A (zh) * | 2012-06-14 | 2012-11-07 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的固态硬盘预取方法和固态硬盘ssd |
CN106776375A (zh) * | 2016-12-27 | 2017-05-31 | 东方网力科技股份有限公司 | 一种磁盘内部的数据缓存方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094374A (zh) * | 2021-04-27 | 2021-07-09 | 广州炒米信息科技有限公司 | 分布式存储和检索方法、装置及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4186438A (en) | Interactive enquiry system | |
CN101577735B (zh) | 一种接管故障元数据服务器的方法、装置及系统 | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
US20180173598A1 (en) | Storage device and block storage method based on the storage device | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
CN105897859B (zh) | 一种存储系统 | |
CN104580439A (zh) | 一种云存储系统中使数据均匀分布的方法 | |
CN113626431A (zh) | 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统 | |
CN113377292B (zh) | 一种单机存储引擎 | |
US6804746B2 (en) | Method and system for optimizing data storage and retrieval by an audio/video file system using hierarchical file allocation table | |
CN100437524C (zh) | 用于将文件的数据存储在存储块中的高速缓存方法及系统 | |
CN113360098A (zh) | 一种数据写入方法、装置、系统、电子设备及存储介质 | |
CN113704217A (zh) | 一种分布式持久性内存文件系统中元数据及数据组织架构方法 | |
CN112379833A (zh) | 文件缓存装置、文件缓存、闲置空间回收及故障恢复方法 | |
CN115617264A (zh) | 分布式存储方法及装置 | |
CN115756955A (zh) | 一种数据备份、数据恢复的方法、装置及计算机设备 | |
CN109753224B (zh) | 存储结构及存储结构配置方法 | |
CN112784188A (zh) | 一种页面渲染方法及装置 | |
CN113805864A (zh) | 一种项目工程的生成方法、装置、电子设备及存储介质 | |
CN108304144B (zh) | 数据写入、读取方法与系统、数据读写系统 | |
CN104133970A (zh) | 一种数据空间管理方法及装置 | |
CN113485874A (zh) | 数据处理方法及分布式存储系统 | |
CN111400248B (zh) | 写数据、恢复数据的方法及文件系统 | |
JP4792335B2 (ja) | Raid装置、raid制御プログラムおよびキャッシュ管理方法 | |
CN105068896B (zh) | 基于raid备份的数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |