一种数据测试方法及装置的制造方法

文档序号:9547038阅读:331来源:国知局
一种数据测试方法及装置的制造方法
【技术领域】
[0001]涉及数据存储技术领域,具体地涉及到一种数据测试方法及装置。
【背景技术】
[0002]在存储系统中缓存模块的掉电一致性功能是必须解决的一个问题,功能的可靠性需要相应的测试方法和测试工具来保证。比较可靠、高效的测试方法直接影响掉电一致性功能的开发进度和可靠性。如果没有一个完善的动态测试方法,掉电一致性功能的可靠性就无法保证。
[0003]—般情况下存储系统为了保证系统的10PS,需要提供缓存模块,输入输出(10)数据最终由缓存模块进行落盘,如果在输入输出(10)数据写入缓存模块后还未来得及落盘的情况下,整个存储系统出现断电,此时缓存模块需要确保每一个已经成功写入缓存的10都能够正常落盘,而存储系统断电势必会导致运行在客户端的一致性测试工具暂停当前的测试,等到存储系统恢复后才能继续进行。
[0004]落盘,是指从缓存写入磁盘。数据从外部首先写入到缓存,经过缓存写入到磁盘。
[0005]另外,数据从磁盘读出时,也是先经过缓存,经过缓存读出到外部。
[0006]也就是说,现有技术中,在断电瞬间,一致性测试工具停止校验,但是还会有一部分输入输出(10)数据被成功下发到缓存中,这一部分输入输出(10)数据,并没有进行一致性校验,
[0007]在存储系统上电后,输入输出(10)数据继续下发,一致性测试工具继续校验,但是在断电瞬间已经成功下发的输入输出(10)数据却没有进行一致性校验。
[0008]因此,需要一种更加科学的数据测试方法,能够校验断电瞬间和断电之前的已经成功下发的输入输出(10)数据。

【发明内容】

[0009]为了解决上述问题,本发明提供了动态测试方案,更好的实现掉电一致性功能的测试,提高整个存储系统的数据一致性能力和可靠性。
[0010]一种数据校验方法,所述方法包括:
[0011]生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息;
[0012]对所述动态文件进行解析,解析出所述每一个输入输出(10)数据的属性信息,所述属性信息用于确定每一个输入输出(10)数据;
[0013]对解析后的所述每一个输入输出(10)数据进行校验。
[0014]可选地,所述方法还包括:
[0015]生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息之前,
[0016]建立红黑树;
[0017]将属性为写的输入输出(10)数据插入到所述红黑树中;
[0018]生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息,包括:
[0019]将红黑树中的每一个属性为写的输入输出(10)数据的属性信息写入到动态文件中。
[0020]可选地,所述方法还包括:
[0021]将属性为写的输入输出(10)数据插入到所述红黑树中之前,包括:
[0022]如果所述红黑树中已经存储输入输出(10)数据,
[0023]判断所述将要插入的属性为写的输入输出(10)数据的地址是否覆盖所述红黑树中的已经存储的输入输出(10)数据的地址,
[0024]如果覆盖,则删除所述红黑树中的已经存储的输入输出(10)数据。
[0025]一种数据校验装置,所述装置包括:
[0026]动态文件生成模块,用于生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息;
[0027]动态文件解析模块,用于对所述动态文件进行解析,解析出所述每一个输入输出(10)数据的属性信息,所述属性信息用于确定每一个输入输出(10)数据;
[0028]输入输出(10)校验模块,用于对解析后的每一个输入输出(10)数据进行校验。
[0029]可选地,所述装置还包括整理模块,用于在所述动态文件生成模块生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息之前,对所述输入输出(10)数据进行整理,
[0030]具体包括:
[0031]建立红黑树;
[0032]将属性为写的输入输出(10)数据插入到所述红黑树中;
[0033]所述动态文件生成模块,用于生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息,包括:
[0034]将红黑树中的每一个属性为写的输入输出(10)数据的属性信息写入到动态文件中。
[0035]可选地,所述整理模块,将属性为写的输入输出(10)数据插入到所述红黑树中之
、广.刖,
[0036]包括:
[0037]如果所述红黑树中已经存储输入输出(10)数据,
[0038]判断所述将要插入的属性为写的输入输出(10)数据的地址是否覆盖所述红黑树中的已经存储的输入输出(10)数据的地址,
[0039]如果覆盖,则删除所述红黑树中的已经存储的输入输出(10)数据。
[0040]在数据下发过程中通过文件形式记录所有成功下发的输入输出10数据;掉电的瞬间,也可以将掉电瞬间成功下发的输入输出10数据记录在文件中,留作后续的校验,解决了掉电瞬间已经成功下发到缓存但可能还没来得及落盘的输入输出(10)无法有效校验的问题。
[0041]因为缓存是易失性存储,掉电数据就会丢失,断电瞬间和断电之前已经成功提交到缓存的10都需要校验。
[0042]本发明的技术方案,就是在掉电的时候采取一定机制,把成功写入到缓存的数据刷写到磁盘上去,确保数据的安全。
[0043]本发明通过文件形式记录输入输出10数据写入队列,并且能够将数据下发和校验分开进行,引入红黑树结构,解决了由于输入输出10数据覆盖导致的校验不通过的技术问题。
[0044]更好地实现掉电一致性功能,提高整个存储系统的数据一致性能力和可靠性。
【附图说明】
[0045]图1是本发明的一种数据测试方法流程示意图;
[0046]图2是本发明的一种数据测试装置结构示意图;
[0047]图3是本发明动态文件生成结构示意图;
[0048]图4是本发明的动态文件提取结构示意图;
[0049]图5是本发明的动态文件生成算法示意图。
【具体实施方式】
[0050]下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
[0051]需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0052]—种数据测试方法,所述方法包括:
[0053]生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息;
[0054]对所述动态文件进行解析,解析出所述每一个输入输出(10)数据属性信息,所述属性信息用于确定每一个输入输出(10)数据;
[0055]对解析后的所述每一个输入输出(10)数据进行校验。
[0056]本申请的技术方案,在掉电前,动态文件记录下发的输入输出(10)队列中的所有成功写入到缓存的输入输出(10);在存储目标机掉电瞬间,运行在客户端的测试工具能够继续记录断电瞬间,以及断电之前,已经成功下发的输入输出(10)数据。本发明能够校验已经成功下发的输入输出(10)数据,更好地测试缓存掉电一致性功能,提高整个存储系统的数据一致性能力和可靠性。
[0057]图1是本发明的一种数据测试方法流程示意图;
[0058]步骤S01:生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息;
[0059]步骤S02:对所述动态文件进行解析,解析出所述每一个输入输出(10)数据属性信息,所述属性信息用于确定每一个输入输出(10)数据;
[0060]步骤S03:对解析后的所述每一个输入输出(10)数据进行校验。
[0061]在掉电前,用动态文件记录外部向磁盘发送的输入输出(10),在外部与磁盘之间,一般都是设置缓存,数据先发送到缓存,然后从缓存发送到磁盘。
[0062]外部发送的输入输出(10)数据写入到缓存;在掉电瞬间,以及掉电之前,就能够记录已经成功下发到缓存的输入输出(10)数据。
[0063]也就是说,输入输出(10)数据,先在缓存中,属性为写的输入输出(10)将会写入到磁盘,将这些属性为写的数据,用动态文件记录这些数据的信息,信息包括这些数据的长度,序列号等。序列号用来标识每一个数据块的编号,长度用来表示该数据块的地址的范围。这些属性信息用来标识该数据块。
[0064]本发明的技术方案,提供了一种动态测试数据一致性的方法。
[0065]通过文件形式记录输入输出(10)数据写入队列,并且能够将数据下发和校验分开进行,在数据下发过程中不仅通过文件形式记录所有下发的输入输出(10)数据,同时也会将下发输入输出(10)数据中完成的写属性输入输出(10)数据的属性信息记录到一个单独的动态日志文件中。在进行校验时,能够根据动态日志文件对输入输出(10)数据下发过程中写属性的输入输出(10)数据进行一致性校验,从而实现数据一致性的动态校验。
[0066]可选地,所述方法还包括:
[0067]生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息之前,
[0068]建立红黑树;
[0069]将属性为写的输入输出(10)数据插入到所述红黑树中;
[0070]生成动态文件,所述动态文件用于记录每一个属性为写的写入到缓存的输入输出(10)数据的属性信息,包括:
[0071]将红黑树中的每一个属性为写的输入输出(10)数据的属性信息写入到动态文件中。
[0072]可选地,所述方法还包括:
[0073]将属性为写的输入输出(10)数据插入到所述红黑树中之前,包括:
[0074]如果所述红黑树中已经存储输入输出(10)数据,
[0075]判断所述将要插入的属性为写的输入输出(10)数据的地址是否覆盖所述红黑树中的已经存储的输入输出(10)数据的地址,
[0076]如果覆盖,则删除所述红黑树中的已经存储的输入输出(10)数据。
[0077]现有技术中,输入输出(10)数据由于偏移或长度随机产生的情况下,会出现输入输出(10)数据的覆盖。
[0078]如果后续的输入输出(10)数据对前面的输入输出(10)进行了覆盖,在进行校验时,必然会出现数据不一致的问题,校验不能通过。
[0079]比如,第一批数据下发到缓存,其中包括第一数据块,占用的地址为0
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1