CN108052644B - 数据模式日志文件系统的数据写入方法及系统 - Google Patents
数据模式日志文件系统的数据写入方法及系统 Download PDFInfo
- Publication number
- CN108052644B CN108052644B CN201711408984.7A CN201711408984A CN108052644B CN 108052644 B CN108052644 B CN 108052644B CN 201711408984 A CN201711408984 A CN 201711408984A CN 108052644 B CN108052644 B CN 108052644B
- Authority
- CN
- China
- Prior art keywords
- blocks
- log
- written
- files
- weak fingerprint
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开基于固态硬盘的数据模式日志文件系统的数据写入方法及系统。该方法包括:a、为待写入日志块计算日志块弱指纹;b、检测指纹库中是否存在一样的日志块弱指纹,若否,新增日志块弱指纹记录,其含有a中的日志块弱指纹及相应的日志块号,执行c;若是,执行c;c、将待写入的日志块执行物理的写;d、为待写入文件块计算文件块弱指纹;e、检测指纹库中与该文件块弱指纹相匹配的日志块弱指纹的计数是否为1,若是,修改待写入文件块的地址映射表,将其逻辑地址映射到对应的日志块的物理地址中;若否,将待写入文件块执行物理的写。本发明可大幅度减少日志文件系统的重复写,提高日志文件系统的性能和延长固态硬盘的寿命。
Description
技术领域
本发明涉及固态硬盘技术领域,尤其涉及一种基于固态硬盘的数据模式日志文件系统的数据写入方法及系统。
背景技术
目前,几乎所有的文件系统都提供日志功能,以保护文件系统以及文件在遇到突然断电等原因导致系统非正常停机后的完整性,而这样的文件系统称为日志文件系统,日志文件系统可以运行在数据模式(datajournaling)或元数据模式(metadatajournaling)。在数据模式中,文件系统更新时的元数据和数据都先写入日志中,之后再写入文件系统中,这种模式可以最大程度地保护文件系统的完整性,但是这将写入固态硬盘的数据量加倍了,会严重降低文件系统写操作的性能。而在元数据模式中,只有元数据写入日志中,数据直接写到文件系统中,不必被重复写,这样会极大地提高写操作的速度,但是文件系统和数据的完整性无法得到充分保障,无法满足一些要求高可靠性的应用程序的需求。
使用块去重技术(block-level deduplication)可以有效地去除在数据模式日志文件系统中的重复写,固态硬盘(Solid State Drives,SSD)的记录介质只能承受有限次的写,一旦超过其容许的次数,SSD可能实现,去重技术可以显著减少写操作,从而提高SSD的寿命。但是现有的去重技术需要对每一个要写的块计算一个唯一的指纹(fingerprint),以用其进行比较确定是否是重复写。随着SSD的访问速度越来越快,如果直接用现有的块去重技术,其计算需要的时间在SSD写操作的执行时间中占的比例越来越大,会严重损害SSD的性能,让块去重技术无法有效应用,而且每一唯一的指纹为256bit,需要占用SSD中较大的DRAM来存储大量的块指纹。
发明内容
本发明所要解决的技术问题在于提供了一种能大幅度减少日志文件系统的重复写,提高日志文件系统性能和延长固态硬盘寿命的且占用较少DRAM的基于固态硬盘的数据模式日志文件系统的数据写入方法及系统。
为解决上述技术问题,本发明采用以下技术方案:
一方面,本发明提供了基于固态硬盘的数据模式日志文件系统的数据写入方法,数据写入方法包括写日志块和写文件块两个步骤;
所述写日志块的步骤包括:
a、利用哈希函数为待写入日志块计算日志块弱指纹;
b、检测指纹库中是否存在有其日志块弱指纹与所述待写入日志块的日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤b1;若是,则执行步骤b2;
b1、新增一日志块弱指纹记录,其包括有步骤a中计算出的待写入日志块的日志块弱指纹及相应的日志块号,并将该日志块弱指纹的计数设置为1,然后执行步骤c;
b2、将匹配的日志块弱指纹记录中的日志块弱指纹的计数加1,并将待写入日志块的日志块号也保存在所述匹配的日志块弱指纹记录中,然后执行步骤c;
c、将待写入的日志块写入配置的物理地址对应的闪存中;
所述写文件块步骤包括:
h、利用哈希函数为待写入文件块计算文件块弱指纹;
i、检测指纹库中与待写入文件块的文件块弱指纹相匹配的日志块弱指纹的计数是否为1,若是,执行步骤i1;若否,执行步骤j;
i1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该匹配的日志块弱指纹相应的日志块号对应的日志块的物理地址中;
j、将待写入文件块写入配置的物理地址对应的闪存中。
其中,所述步骤c之后还包括:步骤d、将该物理地址的计数设置为1;
所述步骤i1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该匹配的日志块弱指纹相应的日志块号对应的日志块的物理地址中之后还包括:步骤k、在对应的物理地址的计数上加1;
所述步骤d之后还包括:步骤e、当日志块从日志文件系统中删除时,将该日志块的日志块号对应的日志块弱指纹记录中的日志块弱指纹的计数减1,并将该日志块号从该日志块弱指纹记录中删除;
所述步骤d和步骤k之后还包括:
步骤l、当文件块从日志文件系统中删除时,将该文件块映射到的物理地址的计数减1;
步骤m、当物理地址的计数为0时,对该物理地址进行擦除。
其中,所述步骤c之后还包括:统计指纹库中计数大于1的日志块弱指纹的数量,若该数量大于预置数量,则停止为待写入日志的日志块计算和检测日志块弱指纹。
其中,所述停止为日志块计算和检测日志块弱指纹之后还包括:当指纹库中计数大于1的日志块弱指纹的数量小于等于预置数量时,为待写入日志的日志块计算和检测日志块弱指纹。
其中,所述哈希函数为CRC32。
第二方面,本发明提供了另基于固态硬盘的数据模式日志文件系统的另一种数据写入方法,该所述数据写入方法包括写日志块和写文件块两个步骤;
所述写日志块的步骤包括:
C、利用哈希函数为待写入日志块计算第一日志块弱指纹;
D、检测指纹库中是否存在有其第一日志块弱指纹与所述待写入日志块的第一日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤B1;若是,则执行步骤B2;
B1、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹及相应的日志块号,然后执行步骤D;
B2、利用哈希函数为所述待写入日志块计算第二日志块弱指纹,然后执行步骤C;
C、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹、步骤B2中计算出的待写入日志块的第二日志块弱指纹及相应的日志块号,然后执行步骤D;
D、将待写入的日志块写入配置的物理地址对应的闪存中;
写文件块,所述写文件块包括:
H、利用哈希函数为待写入文件块计算第一文件块弱指纹;
I、检测指纹库中与待写入文件块的第一文件块弱指纹相匹配的第一日志块弱指纹的日志块弱指纹记录的计数是否为1,若是,执行步骤I1;若否,执行步骤I2;
I1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该日志文件块弱指纹记录中日志块号对应的日志块的物理地址中;
I2、利用哈希函数为待写入文件块计算第二文件块弱指纹,然后执行步骤J;
J、检测步骤I中检测出的日志文件块弱指纹记录中其第二日志块弱指纹与步骤I2计算出的第二文件块弱指纹相匹配的日志块弱指纹记录的计数是否为1,若是,执行步骤J1;若否,执行步骤J2;
J1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到其第二日志块弱指纹与该待写入文件块的第二文件块弱指纹相匹配的日志文件块弱指纹记录的日志块号对应的日志块的物理地址中;
J2、将待写入的文件块写入配置的物理地址对应的闪存中。
其中,所述哈希函数为CRC32。
第三方面,本发明提供了基于固态硬盘的数据模式日志文件系统的数据写入系统,该数据写入系统包括:
日志块写入模块,所述日志块写入模块用于:
a、利用哈希函数为待写入日志块计算日志块弱指纹;
b、检测指纹库中是否存在有其日志块弱指纹与所述待写入日志块的日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤b1;若是,则执行步骤b2;
b1、新增一日志块弱指纹记录,其包括有步骤a中计算出的待写入日志块的日志块弱指纹及相应的日志块号,并将该日志块弱指纹的计数设置为1,然后执行步骤c;
b2、将匹配的日志块弱指纹记录中的日志块弱指纹的计数加1,并将待写入日志块的日志块号也保存在所述匹配的日志块弱指纹记录中,然后执行步骤c;
c、将待写入的日志块写入配置的物理地址对应的闪存中;
文件块写入模块,所述文件块写入模块用于:
h、利用哈希函数为待写入文件块计算文件块弱指纹;
i、检测指纹库中与待写入文件块的文件块弱指纹相匹配的日志块弱指纹的计数是否为1,若是,执行步骤i1;若否,执行步骤j;
i1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该匹配的日志块弱指纹相应的日志块号对应的日志块的物理地址中;
j、将待写入文件块写入配置的物理地址对应的闪存中。
其中,所述哈希函数为CRC32。
第四方面,本发明提供了基于固态硬盘的数据模式日志文件系统的另一种数据写入系统,该数据写入系统包括:
日志块写入模块,所述日志块写入模块用于:
A、利用哈希函数为待写入日志块计算第一日志块弱指纹;
B、检测指纹库中是否存在有其第一日志块弱指纹与所述待写入日志块的第一日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤B1;若是,则执行步骤B2;
B1、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹及相应的日志块号,然后执行步骤D;
B2、利用哈希函数为所述待写入日志块计算第二日志块弱指纹,然后执行步骤C;
C、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹、步骤B2中计算出的待写入日志块的第二日志块弱指纹及相应的日志块号,然后执行步骤D;
D、将待写入的日志块写入配置的物理地址对应的闪存中;
文件块写入模块,所述文件块写入模块用于:
H、利用哈希函数为待写入文件块计算第一文件块弱指纹;
I、检测指纹库中与待写入文件块的第一文件块弱指纹相匹配的第一日志块弱指纹的日志块弱指纹记录的计数是否为1,若是,执行步骤I1;若否,执行步骤I2;
I1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该日志文件块弱指纹记录中日志块号对应的日志块的物理地址中;
I2、利用哈希函数为待写入文件块计算第二文件块弱指纹,然后执行步骤J;
J、检测步骤I中检测出的日志文件块弱指纹记录中其第二日志块弱指纹与步骤I2计算出的第二文件块弱指纹相匹配的日志块弱指纹记录的计数是否为1,若是,执行步骤J1;若否,执行步骤J2;
J1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到其第二日志块弱指纹与该待写入文件块的第二文件块弱指纹相匹配的日志文件块弱指纹记录的日志块号对应的日志块的物理地址中;
J2、将待写入的文件块写入配置的物理地址对应的闪存中。
与现有技术相比,本发明的有益效果为:本发明提供的方法当日志文件系统的挂载模式为数据模式时,当写入的数据块为日志块时,利用哈希函数为待写入日志块计算第一日志块弱指纹;检测指纹库中是否存在相匹配的第一日志块弱指纹,若否,则新增一日志块弱指纹记录,其包括待写入日志块的第一日志块弱指纹及相应的日志块号,并将该第一日志块弱指纹的计数设置为1,然后将待写入的日志块写入配置的物理地址对应的闪存中;若是,则直接将待写入的日志块写入配置的物理地址对应的闪存中,将匹配的日志块弱指纹记录中的第一日志块弱指纹的计数加1;当写入的数据块为文件块时,利用哈希函数为待写入文件块计算第一文件块弱指纹;检测指纹库中与待写入文件块的第一文件块弱指纹相匹配的第一日志块弱指纹的计数是否为1,若是,则修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该匹配的第一日志块弱指纹相应的日志块号对应的日志块的物理地址中;若否,则将待写入文件块写入配置的物理地址对应的闪存中,本发明能大幅度减少日志文件系统的重复写,提高文件系统的性能和延长固态硬盘的寿命,而且为数据块计算弱指纹,减少了对固态硬盘DRAM的占用。
附图说明
图1是本发明具体实施方式中提供的一种写日志块的实施例的方法流程图。
图2是本发明具体实施方式中提供的一种写文件块的实施例的方法流程图。
图3是本发明具体实施方式中提供的另一种写日志块的实施例的方法流程图。
图4是本发明具体实施方式中提供的另一种写文件块的实施例的方法流程图。
图5是本发明具体实施方式中提供的基于固态硬盘的数据模式日志文件系统的数据写入系统的实施例的结构方框图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图1-2对本发明实施例提供的基于固态硬盘的数据模式日志文件系统的数据写入方法作进一步的详细描述,本发明实施例提供的数据模式日志文件系统的数据写入方法包括写日志块和写文件块两个步骤,图1是本发明具体实施方式中提供的一种写日志块的实施例的方法流程图,图2是本发明具体实施方式中提供的一种写文件块的实施例的方法流程图。如图1所示,在一些实施例中,写日志块包括步骤S101~步骤S103,具体如下:
步骤S101:利用哈希函数为待写入日志块计算日志块弱指纹。
其中,本实施例采用的哈希函数为CRC32,CRC32计算得到的弱指纹只有32bit,比用于计算唯一指纹(256bit)的函数要快很多,更重要的是占用DRAM资源少,有利于提高固态硬盘的性能。需要说明的是,用户也可以采用其它轻量的哈希函数来计算日志块和文件块的弱指纹,这里不做限定。
在一些实施例中,在步骤S101之前固态硬盘需要确定日志文件系统的挂载模式为数据模式挂载,确定日志文件系统的挂载模式为数据模式挂载的步骤包括步骤S1和步骤S2,具体如下:
步骤S1:当日志文件系统在以数据模式挂载时,将该挂载模式记录在超级块中。
步骤S2:文件系统在所述超级块中确认日志文件系统的挂载模式为数据模式,并默认对每个写入的块第一次是以日志块的形式写入日志中,然后再以文件块的形式写入文件系统中。
在日志文件系统的超级块(superblock)中读取日志的起始地址,将写入固态硬盘的块分成写入日志的块(称为日志块)和写入其他位置的块(称为文件块),日志文件系统在以数据模式挂载时,将这一挂载模式记录在超级块中,固态硬盘的文件系统便可在超级块中得知日志文件系统的挂载模式为数据模式,因此文件系统会默认对每一个块的写都会写两次,第一次以日志块的形式写入日志中,然后再以文件块的形式写入文件系统中,任何的日志文件系统都保证这个先后次序的执行。
步骤S102:检测指纹库中是否存在有其日志块弱指纹与所述待写入日志块的日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤S1021;若是,则执行步骤S1022。
步骤S1021:新增一日志块弱指纹记录,其包括有步骤S101中计算出的待写入日志块的日志块弱指纹及相应的日志块号,并将该日志块弱指纹的计数设置为1,然后执行步骤S103。
步骤S1022:将匹配的日志块弱指纹记录中的日志块弱指纹的计数加1,并将待写入日志块的日志块号也保存在所述匹配的日志块弱指纹记录中,然后执行步骤S103。
步骤S103:将待写入的日志块写入配置的物理地址对应的闪存中。
本实施例检测指纹库中是否存在有其日志块弱指纹与待写入日志块的日志块弱指纹相匹配的日志块弱指纹记录,即检测指纹库中是否存在与待写入日志块的日志块弱指纹一样的日志块弱指纹,若否,则新增一日志块弱指纹记录,其包括有待写入日志块的日志块弱指纹及相应的日志块号,并将该日志块弱指纹的计数设置为1,然后将待写入的日志块写入配置的物理地址对应的闪存中;若是,则直接将待写入的日志块写入配置的物理地址对应的闪存中,并将匹配的日志块弱指纹记录中的日志块弱指纹的计数加1,将待写入日志块的日志块号也保存在所述匹配的日志块弱指纹记录中。
如图2所示,在一些实施例中,写文件块包括:
步骤S201:利用哈希函数为待写入文件块计算文件块弱指纹。
步骤S202:检测指纹库中与待写入文件块的文件块弱指纹相匹配的日志块弱指纹的计数是否为1,若是,执行步骤S203;若否,执行步骤S204。
步骤S203:修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该匹配的日志块弱指纹相应的日志块号对应的日志块的物理地址中。
步骤S204:将待写入文件块写入配置的物理地址对应的闪存中。
因为每一个数据块都是先以日志块的形式写入日志,再以文件块的形式写入文件系统中,所以当待写入的数据块为文件块时,在指纹库中必有一个与其文件块弱指纹匹配的日志块弱指纹,如果该匹配的日志块弱指纹的计数为1,该待写入文件块的写可以由修改固态硬盘中的FTL(Flash translation layer,闪存转换层)的逻辑地址到物理地址的地址映射表来完成,将该待写入文件块的逻辑地址映射到该匹配的日志块弱指纹相应的日志块号对应的日志块的物理地址中即可,而不必进行物理的写。若匹配的日志块弱指纹的计数不为1(即大于1),则直接将待写入文件块写入到配置的物理地址中即可。该方法既减少了文件块的重复写,提高了固态硬盘的寿命和性能,也减少了对DRAM资源的占用。
在一些实施例中,所述步骤S103:将待写入的日志块写入配置的物理地址对应的闪存中之后还包括步骤S104:将该物理地址的计数设置为1。所述步骤S203:修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该匹配的日志块弱指纹相应的日志块号对应的日志块的物理地址中之后还包括步骤S2031:在对应的物理地址的计数上加1。所述步骤S104:将该物理地址的计数设置为1之后还包括步骤S1041:当日志块从日志文件系统中删除时,将该日志块的日志块号对应的日志块弱指纹记录中的日志块弱指纹的计数减1,并将该日志块号从该日志块弱指纹记录中删除。在步骤S203和步骤S204之后还包括:
步骤S205:当文件块从日志文件系统中删除时,将该文件块映射到的物理地址的计数减1。
步骤S206:当物理地址的计数为0时,对该物理地址进行擦除。
每个物理地址都有一个计数,指示当前写入到该物理地址的数据块及映射到该物理块的逻辑块的总数目,当日志块写入到该物理地址时,将该物理地址的计数设置为1,而当将文件块的逻辑地址映射到所述日志块的物理地址中时在该物理地址的计数上加1;而当日志块从日志中删除和当文件块从日志文件系统中删除时,均将对应的物理地址(为写入的物理地址或映射到的物理地址)的计数减1,而当物理地址的计数为0时,则对该物理地址进行擦除。这样也减少了对物理地址擦除的次数,有利于提高固态硬盘的寿命和性能。
在一些实施例中,步骤S103:将待写入的日志块写入配置的物理地址对应的闪存中之后还包括步骤S105:统计指纹库中计数大于1的日志块弱指纹的数量,若该数量大于预置数量,则停止为待写入日志的日志块计算和检测日志块弱指纹。步骤S105之后,在待写入的数据块为文件块时,直接将文件块写入配置的物理地址对应的闪存中。在步骤S105之后还包括步骤S106:当指纹库中计数大于1的日志块弱指纹的数量小于等于预置数量时,为待写入日志的日志块计算和检测日志块弱指纹。因为在一个较短的时间窗口里不会有大量具有相同日志块弱指纹的日志块,也不会有大量或者全部的文件块的写会被消除,当发现大量计数大于1的弱指纹时,暂停为文件块计算和比较弱指纹,直到指纹库中计数大于1的弱指纹的数量小于等于预置计数。这样,使得当日志文件系统有大量具有相同日志块弱指纹的日志块时,停止为待写入的日志块计算日志块弱指纹,减少固态硬盘的工作量,直接将日志块和文件块分别写入配置的物理地址,而当指纹库中计数大于1的日志块弱指纹的数量小于等于预置数量时,在为待写入日志的日志块计算和检测日志块弱指纹,再利用修改文件块的地址映射表的方法来减少文件块的写入,既提高了固态硬盘的寿命也减少了对DRAM的占用。
本实施例提供的数据块的写入方法,在日志文件系统的挂载模式为数据模式时,为待写入日志块根据指纹库中具有两个以上的日志块弱指纹的数量来计算和检测待写入日志块的日志块弱指纹,并为待写入文件块计算文件块弱指纹,若指纹库中与该文件块弱指纹相匹配的日志块弱指纹的计数为1,则修改待写入文件块的地址映射表,将其逻辑地址映射到该匹配的日志块弱指纹对应的日志块的物理地址中即可,无需对文件块进行物理的写,既保证了日志文件系统的可靠性,也延长固态硬盘的寿命。
下面结合附图3-4对本发明实施例提供的基于固态硬盘的数据模式日志文件系统的另一种数据写入方法作进一步的详细描述,图3是本发明具体实施方式中提供的另一种写日志块的实施例的方法流程图,图4是本发明具体实施方式中提供的另一种写文件块的实施例的方法流程图。如图3所示,在一些实施例中,写日志块包括:
步骤S301:利用哈希函数为待写入日志块计算第一日志块弱指纹。
步骤S302:检测指纹库中是否存在有其第一日志块弱指纹与所述待写入日志块的第一日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤S3021;若是,则执行步骤S3022。
步骤S3021:新增一日志块弱指纹记录,其包括有步骤S301中计算出的待写入日志块的第一日志块弱指纹及相应的日志块号,然后执行步骤S304。
步骤S3022:利用哈希函数为所述待写入日志块计算第二日志块弱指纹,然后执行步骤S303。
步骤S303:新增一日志块弱指纹记录,其包括有步骤S301中计算出的待写入日志块的第一日志块弱指纹、步骤S3022中计算出的待写入日志块的第二日志块弱指纹及相应的日志块号,然后执行步骤S304。
步骤S304:将待写入的日志块写入配置的物理地址对应的闪存中。
本实施例采用的哈希函数为CRC32,CRC32计算得到的弱指纹只有32bit,比用于计算唯一指纹的函数(256bit)要快很多,更重要的是占用DRAM少,有利于提高固态硬盘的性能,但是CRC32不能保证不同内容的数据块一定有不同的哈希值,所以当两个数据块的哈希值一样,并不能确定这两个块的内容一样,因此当测到指纹库中已存在与该待写入日志块的第一日志块弱指纹一样的第一日志块弱指纹时,利用哈希函数为该待写入日志块继续计算第二日志块弱指纹,以使待写入日志块能区别于其他日志块,新增一日志块弱指纹记录用于存储为待写入日志块计算的第一日志块弱指纹、第二日志块弱指纹和对应的日志块号。当测到指纹库中不存在与该待写入日志块的第一日志块弱指纹一样的第一日志块弱指纹时,新增一日志块弱指纹记录用于存储为待写入日志块计算的第一日志块弱指纹和对应的日志块号。无论哪种情况,最后待写入日志块都会写入配置的物理地址对应的闪存中。
如图4所示,在一些实施例中,写文件块包括:
步骤S401:利用哈希函数为待写入文件块计算第一文件块弱指纹。
步骤S402:检测指纹库中与待写入文件块的第一文件块弱指纹相匹配的第一日志块弱指纹的日志块弱指纹记录的计数是否为1,若是,执行步骤S4021;若否,执行步骤S4022。
步骤S4021:修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该日志文件块弱指纹记录中日志块号对应的日志块的物理地址中。
步骤S4022:利用哈希函数为待写入文件块计算第二文件块弱指纹,然后执行步骤S403。
步骤S403:检测步骤S402中检测出的日志文件块弱指纹记录中其第二日志块弱指纹与步骤S4022计算出的第二文件块弱指纹相匹配的日志块弱指纹记录的计数是否为1,若是,执行步骤S4031;若否,执行步骤S4032。
步骤S4031:修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到其第二日志块弱指纹与该待写入文件块的第二文件块弱指纹相匹配的日志文件块弱指纹记录的日志块号对应的日志块的物理地址中。
步骤S4032:将待写入的文件块写入配置的物理地址对应的闪存中。
因为每一个数据块都是先以日志块的形式写入日志,再以文件块的形式写入文件系统中,所以当待写入的数据块为文件块时,在指纹库中必有一个其第一日志块弱指纹与该待写入文件块的第一文件块弱指纹匹配的日志块弱指纹记录,如果检测出的日志块弱指纹记录的计数为1,该待写入文件块的写可以由修改固态硬盘中的FTL的逻辑地址到物理地址的地址映射表来完成,将该待写入文件块的逻辑地址映射到该检测出的日志块弱指纹记录中的日志块号对应的日志块的物理地址中即可,而不必对待写入文件块进行物理的写。若检测出的日志块弱指纹记录的计数不为1(即大于1),则继续计算为待写入文件块计算第二文件块弱指纹,在所有所述检测出的日志块弱指纹记录中,检测其第二日志块弱指纹与待写入文件块的第二文件块弱指纹匹配的日志块弱指纹记录的计数是否为1,若是,则修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到其第二日志块弱指纹与该待写入文件块的第二文件块弱指纹相匹配的日志文件块弱指纹记录的日志块号对应的日志块的物理地址中;若否,则将待写入的文件块写入配置的物理地址对应的闪存中。
本实施例提供的数据块的写入方法通过为指纹库中存在相同的第一日志块弱指纹的日志块计算第二日志块弱指纹,对应文件块也将计算第二文件块弱指纹的方法,提高了文件块与日志块的唯一对应性,进一步减少了文件块的重复写,提高了固态硬盘的寿命和性能。
以下是本发明具体实施方式中提供的基于固态硬盘的数据模式日志文件系统的数据写入系统的实施例,系统的实施例基于上述的方法的实施例实现,在系统中未尽的描述,请参考前述方法的实施例。
图5是本发明具体实施方式中提供的基于固态硬盘的数据模式日志文件系统的数据写入系统的实施例的结构方框图,如图5所示,本发明实施例提供了基于固态硬盘的数据模式日志文件系统的数据写入系统,该数据写入系统包括日志块写入模块51和文件块写入模块52,日志块写入模块51用于:
a、利用哈希函数为待写入日志块计算日志块弱指纹。
b、检测指纹库中是否存在有其日志块弱指纹与所述待写入日志块的日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤b1;若是,则执行步骤b2。
b1、新增一日志块弱指纹记录,其包括有步骤a中计算出的待写入日志块的日志块弱指纹及相应的日志块号,并将该日志块弱指纹的计数设置为1,然后执行步骤c。
b2、将匹配的日志块弱指纹记录中的日志块弱指纹的计数加1,并将待写入日志块的日志块号也保存在所述匹配的日志块弱指纹记录中,然后执行步骤c。
c、将待写入的日志块写入配置的物理地址对应的闪存中。
文件块写入模块,所述文件块写入模块用于:
h、利用哈希函数为待写入文件块计算文件块弱指纹。
i、检测指纹库中与待写入文件块的文件块弱指纹相匹配的日志块弱指纹的计数是否为1,若是,执行步骤i1;若否,执行步骤j。
i1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该匹配的日志块弱指纹相应的日志块号对应的日志块的物理地址中。
j、将待写入文件块写入配置的物理地址对应的闪存中。
其中,所述哈希函数为CRC32。
本实施例提供的数据块的写入系统,在日志文件系统的挂载模式为数据模式时,为待写入日志块根据指纹库中具有两个以上的日志块弱指纹的数量来计算和检测待写入日志块的日志块弱指纹,并为待写入文件块计算文件块弱指纹,若指纹库中与该文件块弱指纹相匹配的日志块弱指纹的计数为1,则修改待写入文件块的地址映射表,将其逻辑地址映射到该匹配的日志块弱指纹对应的日志块的物理地址中即可,无需对文件块进行物理的写,既保证了日志文件系统的可靠性,也延长固态硬盘的寿命。
本发明实施例还提供了基于固态硬盘的数据模式日志文件系统的另一种数据写入系统,该数据写入系统包括:日志块写入模块和文件块写入模块。本发明实施例中,所述日志块写入模块用于:
A、利用哈希函数为待写入日志块计算第一日志块弱指纹。
B、检测指纹库中是否存在有其第一日志块弱指纹与所述待写入日志块的第一日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤B1;若是,则执行步骤B2。
B1、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹及相应的日志块号,然后执行步骤D。
B2、利用哈希函数为所述待写入日志块计算第二日志块弱指纹,然后执行步骤C。
C、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹、步骤B2中计算出的待写入日志块的第二日志块弱指纹及相应的日志块号,然后执行步骤D。
D、将待写入的日志块写入配置的物理地址对应的闪存中。
本发明实施例提供的文件块写入模块用于:
H、利用哈希函数为待写入文件块计算第一文件块弱指纹。
I、检测指纹库中与待写入文件块的第一文件块弱指纹相匹配的第一日志块弱指纹的日志块弱指纹记录的计数是否为1,若是,执行步骤I1;若否,执行步骤I2。
I1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该日志文件块弱指纹记录中日志块号对应的日志块的物理地址中。
I2、利用哈希函数为待写入文件块计算第二文件块弱指纹,然后执行步骤J。
J、检测步骤I中检测出的日志文件块弱指纹记录中其第二日志块弱指纹与步骤I2计算出的第二文件块弱指纹相匹配的日志块弱指纹记录的计数是否为1,若是,执行步骤J1;若否,执行步骤J2。
J1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到其第二日志块弱指纹与该待写入文件块的第二文件块弱指纹相匹配的日志文件块弱指纹记录的日志块号对应的日志块的物理地址中。
J2、将待写入的文件块写入配置的物理地址对应的闪存中。
本实施例提供的数据块的写入方法通过为指纹库中存在相同的第一日志块弱指纹的日志块计算第二日志块弱指纹,对应文件块也将计算第二文件块弱指纹的方法,提高了文件块与日志块的唯一对应性,进一步减少了文件块的重复写,提高了固态硬盘的寿命和性能。
本发明实施例还提供了一种固态硬盘,其中该闪存控制器可存储有程序,该程序执行用于执行上述方法实施例中记载的方法的部分或全部步骤。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在固态硬盘的闪存控制器中,包括若干指令用以使得一个固态硬盘执行本发明各个实施例所述方法的全部或部分步骤。
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。
Claims (3)
1.基于固态硬盘的数据模式日志文件系统的数据写入方法,其特征在于,所述数据写入方法包括写日志块和写文件块两个步骤;
所述写日志块的步骤包括:
A、利用哈希函数为待写入日志块计算第一日志块弱指纹;
B、检测指纹库中是否存在有其第一日志块弱指纹与所述待写入日志块的第一日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤B1;若是,则执行步骤B2;
B1、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹及相应的日志块号,然后执行步骤D;
B2、利用哈希函数为所述待写入日志块计算第二日志块弱指纹,然后执行步骤C;
C、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹、步骤B2中计算出的待写入日志块的第二日志块弱指纹及相应的日志块号,然后执行步骤D;
D、将待写入的日志块写入配置的物理地址对应的闪存中;
写文件块,所述写文件块包括:
H、利用哈希函数为待写入文件块计算第一文件块弱指纹;
I、检测指纹库中与待写入文件块的第一文件块弱指纹相匹配的第一日志块弱指纹的日志块弱指纹记录的计数是否为1,若是,执行步骤I1;若否,执行步骤I2;
I1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该日志文件块弱指纹记录中日志块号对应的日志块的物理地址中;
I2、利用哈希函数为待写入文件块计算第二文件块弱指纹,然后执行步骤J;
J、检测步骤I中检测出的日志文件块弱指纹记录中其第二日志块弱指纹与步骤I2计算出的第二文件块弱指纹相匹配的日志块弱指纹记录的计数是否为1,若是,执行步骤J1;若否,执行步骤J2;
J1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到其第二日志块弱指纹与该待写入文件块的第二文件块弱指纹相匹配的日志文件块弱指纹记录的日志块号对应的日志块的物理地址中;
J2、将待写入的文件块写入配置的物理地址对应的闪存中。
2.根据权利要求1所述的数据写入方法,其特征在于,所述哈希函数为CRC32。
3.基于固态硬盘的数据模式日志文件系统的数据写入系统,其特征在于,所述数据写入系统包括:
日志块写入模块,所述日志块写入模块用于:
A、利用哈希函数为待写入日志块计算第一日志块弱指纹;
B、检测指纹库中是否存在有其第一日志块弱指纹与所述待写入日志块的第一日志块弱指纹相匹配的日志块弱指纹记录,若否,则执行步骤B1;若是,则执行步骤B2;
B1、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹及相应的日志块号,然后执行步骤D;
B2、利用哈希函数为所述待写入日志块计算第二日志块弱指纹,然后执行步骤C;
C、新增一日志块弱指纹记录,其包括有步骤A中计算出的待写入日志块的第一日志块弱指纹、步骤B2中计算出的待写入日志块的第二日志块弱指纹及相应的日志块号,然后执行步骤D;
D、将待写入的日志块写入配置的物理地址对应的闪存中;
文件块写入模块,所述文件块写入模块用于:
H、利用哈希函数为待写入文件块计算第一文件块弱指纹;
I、检测指纹库中与待写入文件块的第一文件块弱指纹相匹配的第一日志块弱指纹的日志块弱指纹记录的计数是否为1,若是,执行步骤I1;若否,执行步骤I2;
I1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到该日志文件块弱指纹记录中日志块号对应的日志块的物理地址中;
I2、利用哈希函数为待写入文件块计算第二文件块弱指纹,然后执行步骤J;
J、检测步骤I中检测出的日志文件块弱指纹记录中其第二日志块弱指纹与步骤I2计算出的第二文件块弱指纹相匹配的日志块弱指纹记录的计数是否为1,若是,执行步骤J1;若否,执行步骤J2;
J1、修改待写入文件块的地址映射表,将该待写入文件块的逻辑地址映射到其第二日志块弱指纹与该待写入文件块的第二文件块弱指纹相匹配的日志文件块弱指纹记录的日志块号对应的日志块的物理地址中;
J2、将待写入的文件块写入配置的物理地址对应的闪存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408984.7A CN108052644B (zh) | 2017-12-22 | 2017-12-22 | 数据模式日志文件系统的数据写入方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408984.7A CN108052644B (zh) | 2017-12-22 | 2017-12-22 | 数据模式日志文件系统的数据写入方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108052644A CN108052644A (zh) | 2018-05-18 |
CN108052644B true CN108052644B (zh) | 2019-05-21 |
Family
ID=62131528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711408984.7A Active CN108052644B (zh) | 2017-12-22 | 2017-12-22 | 数据模式日志文件系统的数据写入方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052644B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124939A (zh) * | 2018-10-31 | 2020-05-08 | 深信服科技股份有限公司 | 一种基于全闪存阵列的数据压缩方法及系统 |
CN111597159A (zh) * | 2020-07-27 | 2020-08-28 | 成都智明达电子股份有限公司 | 一种提高ext4文件系统读写速率的方法 |
CN112580068B (zh) * | 2020-11-30 | 2023-05-23 | 北卡科技有限公司 | 一种SQLite数据库安全增强方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646069B (zh) * | 2012-02-23 | 2014-12-10 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN103150258B (zh) * | 2013-03-20 | 2017-02-01 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种固态存储系统的写入、读取及垃圾收集方法 |
CN103309815B (zh) * | 2013-05-23 | 2015-09-23 | 华中科技大学 | 一种提高固态盘有效容量和寿命的方法和系统 |
CN106886370B (zh) * | 2017-01-24 | 2019-12-06 | 华中科技大学 | 一种基于ssd去重技术的数据安全删除方法及系统 |
CN107391774B (zh) * | 2017-09-15 | 2019-11-19 | 厦门大学 | 基于重复数据删除的日志文件系统的垃圾回收方法 |
-
2017
- 2017-12-22 CN CN201711408984.7A patent/CN108052644B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108052644A (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9785575B2 (en) | Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes | |
US10127166B2 (en) | Data storage controller with multiple pipelines | |
CN103150258B (zh) | 一种固态存储系统的写入、读取及垃圾收集方法 | |
US9164840B2 (en) | Managing a solid state drive (‘SSD’) in a redundant array of inexpensive drives (‘RAID’) | |
US9665485B2 (en) | Logical and physical block addressing for efficiently storing data to improve access speed in a data deduplication system | |
US20150169442A1 (en) | Garbage collection scaling | |
US20150039815A1 (en) | System and method for interfacing between storage device and host | |
CN108052644B (zh) | 数据模式日志文件系统的数据写入方法及系统 | |
US10467102B1 (en) | I/O score-based hybrid replication in a storage system | |
WO2019191219A1 (en) | Specifying media type in write commands | |
CN104461935A (zh) | 一种进行数据存储的方法、装置及系统 | |
US8775742B2 (en) | System and method for cache management in a DIF enabled storage system | |
US20140304464A1 (en) | Methods and systems for performing deduplication in a data storage system | |
JP2009230628A5 (zh) | ||
GB2543392A (en) | Methods and systems for improving storage journaling | |
CN108027713A (zh) | 用于固态驱动器控制器的重复数据删除 | |
US20160011965A1 (en) | Pass through storage devices | |
US11561707B2 (en) | Allocating data storage based on aggregate duplicate performance | |
CN109840047A (zh) | 一种降低读延时的方法及装置 | |
US8924642B2 (en) | Monitoring record management method and device | |
Wu et al. | FastGC: Accelerate garbage collection via an efficient copyback-based data migration in SSDs | |
US9619336B2 (en) | Managing production data | |
CN109375868B (zh) | 一种数据存储方法、调度装置、系统、设备及存储介质 | |
US20150032985A1 (en) | Memory allocation analysis | |
CN103399783A (zh) | 虚拟机的镜像文件的存储方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |