CN106802923A - 一种基于固态盘的文件更新方法及系统 - Google Patents
一种基于固态盘的文件更新方法及系统 Download PDFInfo
- Publication number
- CN106802923A CN106802923A CN201611176282.6A CN201611176282A CN106802923A CN 106802923 A CN106802923 A CN 106802923A CN 201611176282 A CN201611176282 A CN 201611176282A CN 106802923 A CN106802923 A CN 106802923A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- modification
- modified
- write
- 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.)
- Granted
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/11—File system administration, e.g. details of archiving or snapshots
-
- 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/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
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)
Abstract
本发明公开了一种基于固态盘的文件更新方法及系统,针对文件的修改操作,文件系统在文件索引节点inode中添加修改记录,在文件执行修改操作时在修改记录中添加修改信息,在修改文件时,只需将修改的文件部分写入固态盘即可,减少了写入固态盘的数据量,减少了文件写入消耗的时间,提高了文件应用的性能。并且较少的数据量写入可以减少固态盘异地更新引起的写放大,延长固态盘的寿命。
Description
技术领域
本发明属于数据存储技术领域,更具体地,涉及一种基于固态盘的文件更新方法及系统。
背景技术
闪存是一种非易失的存储器,基于闪存的固态盘具有高性能、低功耗、高可靠等诸多优点,一出现就迅速得到学术界和工业界的接受和重视,逐渐成为计算机存储系统的重要组成部分。近年来,闪存技术得到了长足的发展,随着制造技术的不断进步,闪存存储器在容量上得到了提升,单位价格也有所下降。闪存芯片的部署正在从移动设备中走到个人计算机以及大规模数据中心中去。
针对文件的更新操作,传统的处理方法是将整个文件读取到内存中,添加待插入的数据或者删除数据,然后将整个文件写回到磁盘中。特别地,如果对MB级甚至GB级的大文件仅仅修改几个bit,会产生很大的写放大。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于固态盘的文件更新方法及系统,可以支持对文件的插入和删除,并且对文件中已有数据的修改,可以结合插入和删除实现。由此解决现有技术文件系统中文件更新造成的写放大的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于固态盘的文件更新方法,包括:
(1)文件应用向待修改文件中删除和/或插入一段数据;
(2)存储系统读取该待修改文件的索引节点inode,并放置到内存中;
(3)将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;
(4)在内存中写入待插入的数据和/或删除待删除的数据;
(5)将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。
优选地,所述方法还包括:
当对修改后的文件执行读取操作时,读取inode中的修改记录中的修改信息,判断对文件的修改类型是插入操作还是删除操作;
若是删除操作,则跳过从删除位置开始的长度为待删除数据长度的数据,获取剩余位置处的数据;
若是插入操作,则读取到文件的插入位置时,先读取从待插入数据的物理地址开始的长度为待插入数据的长度的数据,然后从插入位置的下一位置处继续读取数据。
按照本发明的另一方面,提供了一种基于固态盘的文件更新系统,包括:
文件修改模块,用于通过文件应用向待修改文件中删除和/或插入一段数据;
inode读取模块,用于通过存储系统读取该待修改文件的索引节点inode,并放置到内存中;
修改记录添加模块,用于将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;
内存数据修改模块,用于在内存中写入待插入的数据和/或删除待删除的数据;
固态硬盘数据修改模块,用于将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。
优选地,所述系统还包括:
判断模块,用于当对修改后的文件执行读取操作时,读取inode中的修改记录中的修改信息,判断对文件的修改类型是插入操作还是删除操作;
第一判断处理模块,用于在是删除操作时,跳过从删除位置开始的长度为待删除数据长度的数据,获取剩余位置处的数据;
第二判断处理模块,用于在是插入操作时,读取到文件的插入位置时,先读取从待插入数据的物理地址开始的长度为待插入数据的长度的数据,然后从插入位置的下一位置处继续读取数据。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,主要有以下的技术优点:
1、修改文件时,只需将待修改的文件部分写入固态盘,减少了写入固态盘的数据量。
2、由于只写入修改部分的数据,减少了文件写入消耗的时间,提高了文件应用的性能。
3、由于闪存单元的擦除次数有限,较少的数据量写入可以减少固态盘异地更新引起的写放大,延长固态盘的寿命。
附图说明
图1为本发明实施例公开的一种基于固态盘的文件更新方法的流程示意图;
图2为文件inode的结构示意图;
图3为本发明实施例公开的一种基于固态盘的文件更新流程的交互结构示意图;
图4为插入数据前的数据布局;
图5为插入数据后的数据布局;
图6为删除数据前的数据布局;
图7为删除数据后的数据布局;
图8为修改数据之前的数据布局;
图9为修改数据之后的数据布局;
图10为更新缓存前的数据布局;
图11为更新缓存后的数据布局;
图12为本发明实施例公开的一种基于固态盘的文件更新系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
图1是本发明实施例公开的一种基于固态盘的文件更新方法的流程示意图,在图1所示的方法中,包括以下步骤:
(1)文件应用向待修改文件中删除和/或插入一段数据;
(2)存储系统读取该待修改文件的索引节点inode,并放置到内存中;
(3)将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;
为了减少由修改文件数据导致的写放大,可以通过在元数据层修改指针来降低写的数据量。在索引节点inode中添加了修改记录ModificationRecords用于记录对文件的修改信息。如图2所示,修改记录中的修改项是<operation,*addr1,*addr2,length>四元组的形式,其中operation分为两种状态插入INSERT和删除DELETE,表示对文件的修改是插入数据还是删除数据。*addr1表示对文件修改的位置,*addr2表示插入数据的物理地址。对于INSERT状态,len表示待插入数据的长度;对于DELETE状态,len表示待删除数据的长度,即将被删除的部分标记为删除状态。
(4)在内存中写入待插入的数据和/或删除待删除的数据;
(5)将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。
为了方便对本发明实施例公开的一种基于固态盘的文件更新方法的理解,以下分别进行具体的举例说明。
图3为本发明实施例公开的一种基于固态盘的文件更新方法的流程的交互结构示意图,在对文件进行插入操作时,在元数据中的修改记录添加修改信息,只需要写入插入数据就能完成对文件的修改,达到了降低写放大的目的。以图4为例,是向一个文件中插入数据的具体过程。如图4中所示,在插入数据之前,该文件由4096*4字节的数据内容,由4个指针指向这4个数据页。如图5中所示,插入大小为100字节的数据之后,该文件指向数据的指针多出一项,修改记录中的项记录了添加这个指针的修改信息。而多出的指针指向的数据页P5,包含插入的100字节数据。以这种方式只需要写入一个4KB大小的数据页和一个指针,即可完成对文件的修改,相比于重新写入数据大大降低了写放大。
当需要删除文件中的一段数据时,我们只需要在inode中的修改记录中添加一条删除数据的记录,即将待删除数据标记为删除状态,并不是物理意义上的删除。删除数据前的数据布局如图6所示,删除数据后的数据布局如图7所示。
当需要对文件做修改时,我们可以将插入和删除结合起来达到修改文件的目的。如图8所示,是通过插入和删除来修改文件的实例。图8是插入数据前的数据布局,该文件由4096*4字节的数据内容,由4个指针指向这4个数据页。我们对闪存页P2上的数据进行修改,首先我们读取P2上的数据到内存中,修改数据,写入到一个新的闪存页P5,然后将P2所在的闪存页标记为删除,最后更新元数据中指向数据的指针即可。修改文件之后的数据布局如图9所示。
当对修改后的文件执行读取操作时,我们需要读取inode中的修改记录中的项,根据operation的类型判断对文件执行了插入操作还是删除操作。若是删除操作,则需要跳过*addr1开始长度为len的数据,获取剩余位置的数据;若是插入操作,则读取到文件的*addr1位置时,先读取*addr2开始长度为len的数据,然后再从*addr1+1处继续读取数据。
如图10所示,由于为了避免写入过多的数据在元数据中添加了指向待插入数据的指针,导致缓存cache中的数据和实际数据不一致。因此,需要更新缓存保证数据的一致性。一种可行的方式是,通过更新缓存中的数据页,将新插入的数据插入到缓存中的对应位置,但是这种方式相对复杂,会增加写操作的开销。本发明实施例提出一种简单高效的方法,当因为元数据中添加指针导致缓存中数据不一致时,将缓存中的数据全部释放掉,然后从固态硬盘SSD上重新读取数据,更新缓存后的数据布局如图11所示。由于SSD具有读写的不对称性,读性能比写性能要好,可以很快重新缓存数据,同时不会占据SSD有限的写带宽。
如图12所示为本发明实施例公开的一种基于固态盘的文件更新系统,在图12所示的系统中包括以下模块:
文件修改模块,用于通过文件应用向待修改文件中删除和/或插入一段数据;
inode读取模块,用于通过存储系统读取该待修改文件的索引节点inode,并放置到内存中;
修改记录添加模块,用于将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;
内存数据修改模块,用于在内存中写入待插入的数据和/或删除待删除的数据;
固态硬盘数据修改模块,用于将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。
本发明所述的基于固态盘的文件更新方法及系统,其基本思想是在元数据中的修改记录添加修改信息,只需要写入插入数据就能完成对文件的修改,达到了降低写放大的目的。具体修改信息的记录会有多种,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于固态盘的文件更新方法,其特征在于,包括:
(1)文件应用向待修改文件中删除和/或插入一段数据;
(2)存储系统读取该待修改文件的索引节点inode,并放置到内存中;
(3)将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;
(4)在内存中写入待插入的数据和/或删除待删除的数据;
(5)将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当对修改后的文件执行读取操作时,读取inode中的修改记录中的修改信息,判断对文件的修改类型是插入操作还是删除操作;
若是删除操作,则跳过从删除位置开始的长度为待删除数据长度的数据,获取剩余位置处的数据;
若是插入操作,则读取到文件的插入位置时,先读取从待插入数据的物理地址开始的长度为待插入数据的长度的数据,然后从插入位置的下一位置处继续读取数据。
3.一种基于固态盘的文件更新系统,其特征在于,包括:
文件修改模块,用于通过文件应用向待修改文件中删除和/或插入一段数据;
inode读取模块,用于通过存储系统读取该待修改文件的索引节点inode,并放置到内存中;
修改记录添加模块,用于将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;
内存数据修改模块,用于在内存中写入待插入的数据和/或删除待删除的数据;
固态硬盘数据修改模块,用于将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。
4.根据权利要求3所述的系统,其特征在于,所述系统还包括:
判断模块,用于当对修改后的文件执行读取操作时,读取inode中的修改记录中的修改信息,判断对文件的修改类型是插入操作还是删除操作;
第一判断处理模块,用于在是删除操作时,跳过从删除位置开始的长度为待删除数据长度的数据,获取剩余位置处的数据;
第二判断处理模块,用于在是插入操作时,读取到文件的插入位置时,先读取从待插入数据的物理地址开始的长度为待插入数据的长度的数据,然后从插入位置的下一位置处继续读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611176282.6A CN106802923B (zh) | 2016-12-19 | 2016-12-19 | 一种基于固态盘的文件更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611176282.6A CN106802923B (zh) | 2016-12-19 | 2016-12-19 | 一种基于固态盘的文件更新方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106802923A true CN106802923A (zh) | 2017-06-06 |
CN106802923B CN106802923B (zh) | 2020-05-19 |
Family
ID=58984770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611176282.6A Active CN106802923B (zh) | 2016-12-19 | 2016-12-19 | 一种基于固态盘的文件更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106802923B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851672A (zh) * | 2006-04-05 | 2006-10-25 | 北京飞天诚信科技有限公司 | 一种闪存的安全读写方法 |
US20080077590A1 (en) * | 2006-09-22 | 2008-03-27 | Honeywell International Inc. | Efficient journaling and recovery mechanism for embedded flash file systems |
US7849257B1 (en) * | 2005-01-06 | 2010-12-07 | Zhe Khi Pak | Method and apparatus for storing and retrieving data |
CN102053879A (zh) * | 2010-12-16 | 2011-05-11 | 国网电力科学研究院 | 基于falsh的自恢复实时文件系统 |
CN103294710A (zh) * | 2012-02-28 | 2013-09-11 | 北京新媒传信科技有限公司 | 一种数据存取方法和装置 |
US20140173226A1 (en) * | 2012-12-13 | 2014-06-19 | Infinidat Ltd. | Logical object deletion |
CN104376099A (zh) * | 2014-11-25 | 2015-02-25 | 贵州电力试验研究院 | 一种基于闪存的文件系统的实现方法和实现装置 |
CN106020736A (zh) * | 2016-06-08 | 2016-10-12 | 重庆大学 | 一种内存文件系统中的数据一致性更新方法 |
-
2016
- 2016-12-19 CN CN201611176282.6A patent/CN106802923B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7849257B1 (en) * | 2005-01-06 | 2010-12-07 | Zhe Khi Pak | Method and apparatus for storing and retrieving data |
CN1851672A (zh) * | 2006-04-05 | 2006-10-25 | 北京飞天诚信科技有限公司 | 一种闪存的安全读写方法 |
US20080077590A1 (en) * | 2006-09-22 | 2008-03-27 | Honeywell International Inc. | Efficient journaling and recovery mechanism for embedded flash file systems |
CN102053879A (zh) * | 2010-12-16 | 2011-05-11 | 国网电力科学研究院 | 基于falsh的自恢复实时文件系统 |
CN103294710A (zh) * | 2012-02-28 | 2013-09-11 | 北京新媒传信科技有限公司 | 一种数据存取方法和装置 |
US20140173226A1 (en) * | 2012-12-13 | 2014-06-19 | Infinidat Ltd. | Logical object deletion |
CN104376099A (zh) * | 2014-11-25 | 2015-02-25 | 贵州电力试验研究院 | 一种基于闪存的文件系统的实现方法和实现装置 |
CN106020736A (zh) * | 2016-06-08 | 2016-10-12 | 重庆大学 | 一种内存文件系统中的数据一致性更新方法 |
Non-Patent Citations (1)
Title |
---|
曲玉宝 等: "JFFS:日志闪存文件系统", 《西部广播电视》 * |
Also Published As
Publication number | Publication date |
---|---|
CN106802923B (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100484147B1 (ko) | 플래시 메모리 관리 방법 | |
CN102129435B (zh) | 数据存储业务控制方法及系统 | |
US8225029B2 (en) | Data storage processing method, data searching method and devices thereof | |
CN100498740C (zh) | 一种数据缓存处理方法、系统及数据缓存装置 | |
CN103080910B (zh) | 存储系统 | |
US7761648B2 (en) | Caching method for NAND flash translation layer | |
CN104238962B (zh) | 向缓存中写入数据的方法及装置 | |
CN106527969B (zh) | 一种寿命均衡的NandFlash存储器读写方法 | |
CN103838853B (zh) | 一种基于不同存储介质的混合文件系统 | |
CN105955664B (zh) | 一种基于段结构的瓦记录转换层的读写方法 | |
WO2016095151A1 (en) | Storing log records in a non-volatile memory | |
CN107784121A (zh) | 一种基于非易失内存的日志文件系统的小写优化方法 | |
CN106354658B (zh) | 一种降低混合映射算法中映射表内存资源占用的方法 | |
CN106104463A (zh) | 用于存储设备的故障安全操作的系统和方法 | |
CN100580669C (zh) | 在Flash存储介质上的关于文件分配表的缓存实现方法 | |
CN103246615B (zh) | 一种闪存存储设备中数据管理的方法及装置 | |
CN102609335B (zh) | 一种实现写时复制保护元数据的装置及方法 | |
Zimmermann et al. | Forensic analysis of YAFFS2 | |
CN105630406B (zh) | 利用mram作为编辑缓存区的存储系统及编辑缓存方法 | |
Lee et al. | An efficient buffer management scheme for implementing a B-tree on NAND flash memory | |
CN107193947A (zh) | 一种文件系统缓存增量刷新方法及系统 | |
CN104657471B (zh) | 一种fat文件系统的预分配文件建立方法及系统 | |
CN112395260B (zh) | 一种数据存储方法及介质 | |
CN106802923A (zh) | 一种基于固态盘的文件更新方法及系统 | |
Lee et al. | RMSS: an efficient recovery management scheme on NAND flash memory based solid state disk |
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 |