CN105302488A - 一种存储系统的数据写入方法及系统 - Google Patents
一种存储系统的数据写入方法及系统 Download PDFInfo
- Publication number
- CN105302488A CN105302488A CN201510708437.5A CN201510708437A CN105302488A CN 105302488 A CN105302488 A CN 105302488A CN 201510708437 A CN201510708437 A CN 201510708437A CN 105302488 A CN105302488 A CN 105302488A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- record
- file destination
- affairs
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种存储系统的数据写入方法及系统,包括:获取针对目标文件的追加写入请求,并记录目标文件的初始数据长度,其中,追加写入请求携带待写入数据;更改针对追加写入请求的事务中的执行内容为删除记录的初始数据长度;将待写入数据写入所述目标文件;记录更改后的事务至日志,并执行上述执行内容以删除记录的初始数据长度。在更改后的事务中不再包含待写入数据,相较现有技术中要将数据量较大的待写入数据写入日志中,本发明中将上述执行内容写入日志中能够显著减少日志写入的数据量,以此有效解决了现有技术中两次写入待写入数据使得存储系统的写入带宽只能达到磁盘物理带宽的一半,明显降低了存储系统的性能的问题。
Description
技术领域
本发明涉及云存储技术领域,特别是涉及一种存储系统的数据写入方法及系统。
背景技术
在存储系统中,事务通常指一系列相互关联的写操作的序列,这些操作构成一个整体的原子操作,即要么都成功执行,要么都没有执行,以保证系统状态的一致性和数据的完整性。举一个简单的例子,创建并写入一个新文件可以组成一个事务,它包括目录数据的更新、文件元数据的更新、文件数据的更新、系统统计数据的更新等多个相互关联的操作。在存储系统中,用户提交的一次写入请求通常都会组织成一个事务进行。
日志机制是实现事务的常用机制。在使用日志机制的云存储系统中,存在一个被称为日志的追踪文件。在日志机制中,一个事务所包含的所有操作及相关数据,都会先整合成一条日志,并记录到该追踪文件。只有在记录了该条日志之后,才会执行其中的操作。这样,一旦系统因故障而意外中止,在重启系统后,就可以通过读取日志,完整地恢复事务的执行。这个过程通常被称为日志的“回放”。
但是,日志机制在实现事务的同时,由于所有待写入数据既要先记录到日志,又要在执行事务时再写入到目标文件,实际上总共被写入了两次,使得存储系统的写入带宽只能达到磁盘物理带宽的一半,特别是在待写入数据的数据量较大的情况下,明显降低了存储系统的性能。
发明内容
有鉴于此,本发明提供了一种存储系统的数据写入方法及系统,以解决现有技术中两次写入待写入数据使得存储系统的写入带宽只能达到磁盘物理带宽的一半,明显降低了存储系统的性能的问题。
为解决上述技术问题,本发明提供存储系统的数据写入方法,包括:
获取针对目标文件的追加写入请求,并记录所述目标文件的初始数据长度;其中,所述追加写入请求携带待写入数据;
更改针对所述追加写入请求的事务中的执行内容为删除记录的所述初始数据长度;
将所述待写入数据写入所述目标文件;
记录更改后的所述事务至日志,并执行所述执行内容以删除所述记录的所述初始数据长度。
上述方法中,优选的,所述将所述待写入数据写入所述目标文件包括:
将所述待写入数据追加至所述目标文件的尾部。
上述方法中,优选的,所述将所述待写入数据追加至所述目标文件的尾部的过程中出现异常之后,还包括:
判断所述更改后的所述事务是否成功记录至所述日志;
当判定所述更改后的所述事务没有成功记录至所述日志时,利用所述记录的所述初始数据长度,回滚追加后的所述目标文件至初始状态。
本发明还提供了一种存储系统的数据写入系统,包括:
记录单元,用于获取针对目标文件的追加写入请求,并记录所述目标文件的初始数据长度;其中,所述追加写入请求携带待写入数据;
更改单元,用于更改针对所述追加写入请求的事务中的执行内容为删除记录的所述初始数据长度;
写入单元,用于将所述待写入数据写入所述目标文件;
执行单元,用于记录更改后的所述事务至日志,并执行所述执行内容以删除所述记录的所述初始数据长度。
上述系统中,优选的,所述写入单元具体用于将所述待写入数据追加至所述目标文件的尾部。
上述系统中,优选的,还包括:
回滚单元,用于所述将所述待写入数据追加至所述目标文件的尾部的过程中出现异常之后,判断所述更改后的所述事务是否成功记录至所述日志;当判定所述更改后的所述事务没有成功记录至所述日志时,利用所述记录的所述初始数据长度,回滚追加后的所述目标文件至初始状态。
以上本发明提供的一种存储系统的数据写入方法及系统中,获取针对待目标文件的追加写入请求,并记录所述目标文件的初始数据长度;更改针对所述追加写入请求的事务中的执行内容为删除记录的所述初始数据长度;将所述待写入数据写入所述目标文件;记录更改后的所述事务至日志,并执行所述执行内容以删除所述记录的所述初始数据长度。在更改后的事务中包含的执行内容为删除最开始记录的目标文件的初始数据长度,其不再包含待写入数据,通常情况下,上述执行内容(删除最开始记录的目标文件的初始数据长度)的数据量小于或远远小于待写入数据的数据量,以此,相较现有技术中要将数据量较大的待写入数据写入日志中,本发明中将上述执行内容写入日志中能够显著减少日志写入的数据量,以此有效解决了现有技术中两次写入待写入数据使得存储系统的写入带宽只能达到磁盘物理带宽的一半,明显降低了存储系统的性能的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种存储系统的数据写入方法的流程图;
图2为本发明实施例提供的一种存储系统的数据写入系统的结构框图示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的核心是提供一种存储系统的数据写入方法及系统,以解决现有技术中两次写入待写入数据使得存储系统的写入带宽只能达到磁盘物理带宽的一半,明显降低了存储系统的性能的问题。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
参考图1,图1示出了本发明实施例提供的一种存储系统的数据写入方法的流程图,该方法具体可以包括如下步骤:
步骤S100、获取针对目标文件的追加写入请求,并记录目标文件的初始数据长度;具体地,上述追加写入请求中携带待写入数据。上述将待写入数据写入目标文件具体为将待写入数据追加至目标文件的尾部,并保证这个待写入数据落盘。
需要说明的是,本发明提供的数据写入方法主要针对追加写入的写入方式,对于其他写入方式,比如会修改目标文件原有内容的写入方式,由于写入时可能会覆盖文件的原内容,在意外中断时,无法用较为简单的方式回滚文件,所以不能使用本发明所提供的数据写入方法。对于这类写入,可以沿用原有的日志机制。
其中,追加写入是一种常见的写入方式。它的特点是只会在文件的尾部追加新的数据,而不会覆盖文件的原有数据。在上传、拷贝、连续写入一个大文件时,应用程序往往会将该文件分为多次写入,这时的大部分写入都是追加写入。追加写入的一个特点是:一旦写入过程因意外而终止,可以简单地通过截断文件到原来的长度来恢复该文件的初始状态。本文描述的存储系统的数据写入方法就利用了追加写入的这一特点。
基于此,另外,可以将目标文件的初始数据长度记录至数据库中,这里之所以要记录目标文件的初始数据长度,是为了一旦写入因意外而中断,就可以通过该记录获取文件的初始数据长度,并通过截断文件到该长度,使文件恢复到写入之前的状态。
步骤S101、更改针对追加写入请求的事务中的执行内容为删除记录的初始数据长度;
在更改后的事务中包含的执行内容为删除最开始记录的目标文件的初始数据长度,其不再包含待写入数据,通常情况下,上述执行内容(删除最开始记录的目标文件的初始数据长度)的数据量小于或远远小于待写入数据的数据量,以此,相较现有技术中要将数据量较大的待写入数据写入日志中,本发明中将上述执行内容写入日志中能够显著减少日志写入的数据量,以此有效解决了现有技术中两次写入待写入数据使得存储系统的写入带宽只能达到磁盘物理带宽的一半,明显降低了存储系统的性能的问题。
步骤S102、将待写入数据写入目标文件;
步骤S103、记录更改后的事务至日志,并执行上述执行内容以删除记录的初始数据长度。
在存储系统重启时,判断更改后的事务是否成功记录至日志,通常情况下,会遇到以下两种情况:
其一,更改后的事务已经记录到日志,这时由于步骤S102是在步骤S103之前的,所以在确定更改后的事务已经记录到日志时可以认为已经顺利将待写入数据全部追加至目标文件中。这时只需要重新执行该更改后事务,就可以恢复系统正常状态下的执行流程。
具体地,按顺序读取所有的日志,对每条日志,重新执行相应的事务。
其二,更改后的事务没有记录到日志,这时我们可以认为存储系统在将待写入数据追加至目标文件的尾部的过程中出现了异常,使得更改后的事务没能顺利地记录至日志中,此时,由于数据库中关于目标文件的初始数据长度的记录仍然存在,但是不确定是否顺利将待写入数据全部追加至目标文件中,所以,为了保证目标文件的数据一致性和完整性,在对所有日志回放完成后,需要根据记录的初始数据长度,回滚追加后的目标文件至初始状态。
具体地,回滚的具体过程为:按相反顺序读取数据库中的剩余记录,对每条记录,截断相应文件到原来的长度,并删除该记录。
基于上述本发明实施例提供的存储系统的数据写入方法,本发明实施例还提供了一种存储系统的数据写入系统,参考图2,该系统200可以包括如下内容:
记录单元201,用于获取针对目标文件的追加写入请求,并记录目标文件的初始数据长度;其中,追加写入请求携带待写入数据;
更改单元202,用于更改针对追加写入请求的事务中的执行内容为删除记录的初始数据长度;
写入单元203,用于将待写入数据写入目标文件;
执行单元204,用于记录更改后的事务至日志,并执行上述执行内容以删除记录的初始数据长度。
上述系统200中,写入单元203具体用于将待写入数据追加至目标文件的尾部。
上述系统200中,还可以包括回滚单元,用于在存储系统在将待写入数据追加至目标文件的尾部的过程中出现故障之后,判断更改后的事务是否成功记录至日志;当判定更改后的事务没有成功记录至日志时,利用记录的初始数据长度,回滚追加后的目标文件至初始状态。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种存储系统的数据写入方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (6)
1.一种存储系统的数据写入方法,其特征在于,包括:
获取针对目标文件的追加写入请求,并记录所述目标文件的初始数据长度;其中,所述追加写入请求携带待写入数据;
更改针对所述追加写入请求的事务中的执行内容为删除记录的所述初始数据长度;
将所述待写入数据写入所述目标文件;
记录更改后的所述事务至日志,并执行所述执行内容以删除所述记录的所述初始数据长度。
2.如权利要求1所述的方法,其特征在于,所述将所述待写入数据写入所述目标文件包括:
将所述待写入数据追加至所述目标文件的尾部。
3.如权利要求2所述的方法,其特征在于,所述将所述待写入数据追加至所述目标文件的尾部的过程中出现异常之后,还包括:
判断所述更改后的所述事务是否成功记录至所述日志;
当判定所述更改后的所述事务没有成功记录至所述日志时,利用所述记录的所述初始数据长度,回滚追加后的所述目标文件至初始状态。
4.一种存储系统的数据写入系统,其特征在于,包括:
记录单元,用于获取针对目标文件的追加写入请求,并记录所述目标文件的初始数据长度;其中,所述追加写入请求携带待写入数据;
更改单元,用于更改针对所述追加写入请求的事务中的执行内容为删除记录的所述初始数据长度;
写入单元,用于将所述待写入数据写入所述目标文件;
执行单元,用于记录更改后的所述事务至日志,并执行所述执行内容以删除所述记录的所述初始数据长度。
5.如权利要求4所述的系统,其特征在于,所述写入单元具体用于将所述待写入数据追加至所述目标文件的尾部。
6.如权利要求5所述的系统,其特征在于,还包括:
回滚单元,用于在所述将所述待写入数据追加至所述目标文件的尾部的过程中出现异常之后,判断所述更改后的所述事务是否成功记录至所述日志;当判定所述更改后的所述事务没有成功记录至所述日志时,利用所述记录的所述初始数据长度,回滚追加后的所述目标文件至初始状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510708437.5A CN105302488B (zh) | 2015-10-27 | 2015-10-27 | 一种存储系统的数据写入方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510708437.5A CN105302488B (zh) | 2015-10-27 | 2015-10-27 | 一种存储系统的数据写入方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302488A true CN105302488A (zh) | 2016-02-03 |
CN105302488B CN105302488B (zh) | 2018-05-01 |
Family
ID=55199801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510708437.5A Active CN105302488B (zh) | 2015-10-27 | 2015-10-27 | 一种存储系统的数据写入方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302488B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862095A (zh) * | 2017-12-07 | 2018-03-30 | 中国银行股份有限公司 | 一种数据处理方法及装置 |
CN108664208A (zh) * | 2017-03-27 | 2018-10-16 | 纳思达股份有限公司 | 基于flash存储器的文件追加写操作方法及装置 |
CN110531933A (zh) * | 2019-08-23 | 2019-12-03 | 北京浪潮数据技术有限公司 | 数据处理方法及服务器 |
CN111245933A (zh) * | 2020-01-10 | 2020-06-05 | 上海德拓信息技术股份有限公司 | 一种基于日志的对象存储追加写实现方法 |
CN114297172A (zh) * | 2022-01-04 | 2022-04-08 | 北京乐讯科技有限公司 | 一种基于云原生的分布式文件系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028695A1 (en) * | 2001-05-07 | 2003-02-06 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
US20040044705A1 (en) * | 2002-08-30 | 2004-03-04 | Alacritus, Inc. | Optimized disk repository for the storage and retrieval of mostly sequential data |
CN1607498A (zh) * | 2003-10-13 | 2005-04-20 | 英业达股份有限公司 | 应用程序中存取文件数据的方法 |
CN103902227A (zh) * | 2012-12-28 | 2014-07-02 | 南京壹进制信息技术有限公司 | 一种支持追加写和共享读的文件存储方式 |
CN103902479A (zh) * | 2014-03-27 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于元数据日志的元数据缓存快速重建机制 |
-
2015
- 2015-10-27 CN CN201510708437.5A patent/CN105302488B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028695A1 (en) * | 2001-05-07 | 2003-02-06 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
US20040044705A1 (en) * | 2002-08-30 | 2004-03-04 | Alacritus, Inc. | Optimized disk repository for the storage and retrieval of mostly sequential data |
CN1607498A (zh) * | 2003-10-13 | 2005-04-20 | 英业达股份有限公司 | 应用程序中存取文件数据的方法 |
CN103902227A (zh) * | 2012-12-28 | 2014-07-02 | 南京壹进制信息技术有限公司 | 一种支持追加写和共享读的文件存储方式 |
CN103902479A (zh) * | 2014-03-27 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于元数据日志的元数据缓存快速重建机制 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664208A (zh) * | 2017-03-27 | 2018-10-16 | 纳思达股份有限公司 | 基于flash存储器的文件追加写操作方法及装置 |
CN108664208B (zh) * | 2017-03-27 | 2022-02-15 | 珠海极海半导体有限公司 | 基于flash存储器的文件追加写操作方法及装置 |
CN107862095A (zh) * | 2017-12-07 | 2018-03-30 | 中国银行股份有限公司 | 一种数据处理方法及装置 |
CN107862095B (zh) * | 2017-12-07 | 2021-06-01 | 中国银行股份有限公司 | 一种数据处理方法及装置 |
CN110531933A (zh) * | 2019-08-23 | 2019-12-03 | 北京浪潮数据技术有限公司 | 数据处理方法及服务器 |
CN110531933B (zh) * | 2019-08-23 | 2022-06-17 | 北京浪潮数据技术有限公司 | 数据处理方法及服务器 |
CN111245933A (zh) * | 2020-01-10 | 2020-06-05 | 上海德拓信息技术股份有限公司 | 一种基于日志的对象存储追加写实现方法 |
CN114297172A (zh) * | 2022-01-04 | 2022-04-08 | 北京乐讯科技有限公司 | 一种基于云原生的分布式文件系统 |
CN114297172B (zh) * | 2022-01-04 | 2022-07-12 | 北京乐讯科技有限公司 | 一种基于云原生的分布式文件系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105302488B (zh) | 2018-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3724764B1 (en) | Write-ahead style logging in a persistent memory device | |
US9229818B2 (en) | Adaptive retention for backup data | |
US7747664B2 (en) | Storage system format for transaction safe file system | |
US9811422B2 (en) | Head start population of an image backup | |
CN105302488A (zh) | 一种存储系统的数据写入方法及系统 | |
US9430333B2 (en) | Recovery of application from snapshot | |
CN103049539A (zh) | 一种文件系统中文件数据的存储方法及其装置 | |
US8600937B1 (en) | System and method for fast volume cloning | |
CN102541691B (zh) | 面向内存数据库oltp应用的日志检查点恢复方法 | |
CN102402471A (zh) | 基于存储阵列快照功能的数据实时备份方法及系统 | |
US9798761B2 (en) | Apparatus and method for fsync system call processing using ordered mode journaling with file unit | |
US10083087B1 (en) | Managing backup copies in cascaded data volumes | |
CN104166605A (zh) | 基于增量数据文件的数据备份方法及系统 | |
CN106357703B (zh) | 集群切换方法与设备 | |
CN107402848A (zh) | 一种快照数据一致性的实现方法 | |
WO2018000191A1 (zh) | 一种数据处理的方法和装置 | |
CN104268097A (zh) | 一种元数据处理方法及系统 | |
CN102073554A (zh) | 一种文件异常关闭的恢复方法和装置 | |
US8595271B1 (en) | Systems and methods for performing file system checks | |
WO2017067397A1 (zh) | 一种数据恢复方法和装置 | |
US10423494B2 (en) | Trimming unused blocks from a versioned image backup of a source storage that is stored in a sparse storage | |
WO2014019145A1 (zh) | 一种元数据的处理方法和装置 | |
KR101969799B1 (ko) | 전자 장치 및 제어 방법 | |
KR100775141B1 (ko) | 저널링이 적용된 fat 파일 시스템의 구현 방법 | |
US9727264B1 (en) | Tracking content blocks in a source storage for inclusion in an image backup of the source storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |