一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件系统读写正确性测试方法、装置及存储介质与流程

2023-01-15 03:36:30 来源:中国专利 TAG:


1.本发明涉及文件系统技术领域,尤其涉及一种文件系统读写正确性测试方法、装置及存储介质。


背景技术:

2.在文件系统开发和调试中,其读写功能的正确性是至关重要的,如果读写操作不能得到预期的结果,那么将会导致文件系统不可用,因而进行文件系统读写正确性测试是十分必要的。
3.如在实际应用中,会存在以下情况:在用户应用层面,文件操作的最小单位是字节,可以对文件的任意字节进行读写。但是在操作系统层面,文件操作的最小单位是内存页面,必须整页面读写。在磁盘层面,io操作的最小单位是扇区,必须整扇区读写。各个层级有不同的对齐要求。对于顺序读写文件操作,文件系统以整页面执行操作,同时也就保证了块对齐和扇区对齐,不会产生异常。但是对于随机操作来说,起点和终点可以在任何位置,如果将未按照扇区对齐的io请求,直接发送给存储设备会导致其无法执行操作、读写进程阻塞。而错误的对齐操作会导致文件被错误的内容覆盖(比如一个页面写入了31个字节,写入时结束位置需要按扇区对齐至512字节,如果未能正确处理31字节之后的481字节内容,会造成磁盘上的数据被随机内容覆盖),上述错误难以直接进行判别。
4.又例如,io请求有方向区别,读取是将磁盘上的内容装入内存分页,写入是将内存分页的内容装入磁盘,如果错误的设置了io请求的方向,会导致本应写入磁盘的数据被磁盘上当前内容覆盖,或者本应装入内存的数据被内存的当前值覆盖。如果读写的内容由单一或者有规律的数值构成,如连续的0,该类错误的覆盖也难以被识别到。
5.而对正确性的验证需要考虑各种特殊边界条件,现有技术中用于文件系统性能测试的工具如数据拷贝工具dd和磁盘测试工具fio,通常都是仅着眼于测试文件系统或者设备的性能,而不关注读写操作本身是否正确完成。以dd为例,它是采用固定的数据源,以顺序读写的方式进行操作,虽然可以在读写完成后验证数据正确性,但顺序读写的方式往往会掩盖一些特殊条件下才会触发的故障,比如在不按扇区对齐的位置开始写入和结束写入。而fio作为一种性能测试工具,虽然可以执行随机操作,但是无法验证内容的正确性。因此亟需提供一种测试文件系统读写正确性测试方法,以使得能够精准、快速的对文件系统执行随机的写入操作,并读取写入内容进行操作正确性测试、验证。


技术实现要素:

6.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、成本低、测试效率以及精度高的文件系统读写正确性测试方法、装置及存储介质。
7.为解决上述技术问题,本发明提出的技术方案为:一种文件系统读写正确性测试方法,步骤包括:
在待测试文件系统中创建指定大小的测试文件并将所述测试文件划分为多个数据块;选取一个数据块进行处理,先将随机数据写入预先申请的第一缓存空间,将第一缓存空间的数据写入当前数据块中,然后对第一缓存空间的内容进行随机修改并写入当前数据块中,以对当前数据块的内容随机进行随机修改,保留所述第一缓存空间的内容作为参照数据,并将当前数据块的内容读取至第二缓存空间;分别读取第二缓存空间以及保留在所述第一缓存空间的参照数据并比对是否存在差异,得到当前数据块的比对结果;根据所有数据块的比对结果判定待测试文件系统的数据读写是否存在错误。
8.进一步的,所述将所述测试文件划分为多个数据块时,根据单次处理数据量大小以及内存大小进行数据块划分。
9.进一步的,所述将随机数据写入预先申请的第一缓存空间,将第一缓存空间的数据写入当前数据块中包括:生成第一随机数据并使用生成的第一随机数据初始化所述第一缓存空间;执行写操作将所述第一缓存空间完整的写入当前数据块所在的文件空间;执行文件同步操作以将当前数据写入磁盘。
10.进一步的,所述对第一缓存空间的内容进行随机修改并写入当前数据块中包括:生成第二随机数据并将生成的第二随机数据写入所述第一缓存空间,以更新第一缓存空间对应区间数据内容;将所述第一缓存空间中当前数据内容写入当前数据块所在的文件空间;执行文件同步操作以将当前更新数据写入磁盘。
11.进一步的,循环执行多次所述生成第二随机数据并将生成的第二随机数据写入第一缓存空间a,以使得随机写入内容均匀分布在测试文件的对应区域中。
12.进一步的,所述生成第二随机数据并将生成的第二随机数据写入第一缓存空间包括:随机选择一个块内起点偏移量,从块内起点开始在一个页面长度范围内的空间中取随机数,生成所述第二随机数据;以当前数据块的起点偏移量加上所述块内起点偏移量作为写入起点,在一个页面长度范围内将所述第二随机数据写入所述第一缓存空间。
13.进一步的,所述随机选择一个块内起点偏移量时具体在0到1024mb的空间范围内随机选择所述块内起点偏移量。
14.进一步的,所述分别读取第二缓存空间以及保留在所述第一缓存空间的参照数据并比对是否存在差异包括:逐字节比较第二缓存空间与对应的所述参照数据的数据一致性,如果一致判定当前数据块读写操作成功,如果检测到存在不一致的数据则输出对应的数据信息,如果所有数据块的比较结果均一致,则判定待测试的文件系统读写操作正确,所述数据信息包括数据内容、偏移量以及数据大小中任意一种或多种。
15.一种文件系统读写正确性测试装置,包括:创建文件模块,用于在待测试文件系统中创建指定大小的测试文件并将所述测试文件划分为多个数据块;
数据操作模块,用于选取一个数据块进行处理,先将随机数据写入预先申请的第一缓存空间,将第一缓存空间的数据写入当前数据块中,然后对第一缓存空间的内容进行随机修改并写入当前数据块中,以对当前数据块的内容随机进行随机修改,保留所述第一缓存空间的内容作为参照数据,并将当前数据块的内容读取至第二缓存空间;数据比对模块,用于分别读取第二缓存空间以及保留在所述第一缓存空间的参照数据并比对是否存在差异,得到当前数据块的比对结果;正确性判断模块,用于根据所有数据块的比对结果判定待测试文件系统的数据读写是否存在错误。
16.一种存储有计算机程序的计算机可读存储介质,所述计算机程序执行时实现如上述的方法。
17.与现有技术相比,本发明的优点在于:1、本发明通过创建测试文件并分块后对各数据块进行处理,通过缓存空间将随机的数据存入测试文件,对文件数据执行随机修改并保留缓存空间中的数据作为参照数据,最后将测试文件中的数据读出,与参照数据进行比对以判断数据是否一致,根据所有数据块的比对结果最终判断出文件的写入和读取是否正确完成,能够精准、快速的实现文件系统读写正确性的测试。
18.2、本发明进一步通过以动态、随机的测试数据覆盖整个存储空间,结合进行逐字节比对,能够有效探测特殊位置、特殊尺寸、包括特殊内容的io操作才能触发的文件系统故障,进一步提高文件系统读写正确性测试的精度,从而为文件系统读写功能调试提供有效依据。
附图说明
19.图1是本实施例文件系统读写正确性测试方法的实现流程示意图。
20.图2是本发明在具体应用实施例中测试文件的生成及数据块划分的原理示意图。
21.图3是本发明在具体应用实施例中实现文件系统读写正确性测试的详细实现流程示意图。
22.图4是本发明具体应用实施例中对文件进行随机修改的详细实现流程示意图。
23.图5是本发明在具体应用实施例中数据块的详细处理流程示意图。
24.图6是本发明在具体应用实施例中执行数据一致性比对的原理流程示意图。
具体实施方式
25.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
26.如图1所示,本实施例文件系统读写正确性测试方法的步骤包括:s01.在待测试文件系统中创建指定大小的测试文件并将测试文件划分为多个数据块,测试文件即为用于测试的数据文件;s02.选取一个数据块进行处理,先将随机数据写入预先申请的第一缓存空间a,将第一缓存空间的数据写入当前数据块中,然后对第一缓存空间a的内容进行随机修改并写入当前数据块中,以对当前数据块的内容随机进行随机修改,保留第一缓存空间a的内容作
为参照数据,并将当前数据块的内容读取至第二缓存空间b;s03.分别读取当第二缓存空间以及保留在第一缓存空间的并比对是否存在差异,得到当前数据块的比对结果;s04.根据所有数据块的比对结果判定待测试文件系统的数据读写是否存在错误。
27.本实施例针对于对文件系统读写正确性进行测试的需求,通过创建测试文件并分块后对各数据块进行处理,通过缓存空间将随机的数据存入测试文件,对文件数据执行随机修改并保留缓存空间中内容以作为参照数据,最后将测试文件中的数据读出,与参照数据进行比对以判断数据是否一致,根据所有数据块的比对结果最终判断出文件的写入和读取是否正确完成,能够精准、快速的实现文件系统读写正确性的测试。
28.如图2所示,本实施例步骤s01中首先创建指定大小的测试文件,优选的,测试文件大小可以使测试文件能够充分覆盖文件系统所管理的空间,例如创建128gb的测试文件,具体可以根据实际需求配置。创建测试文件后进一步划分为多个数据块,具体根据单次处理数据量大小以及内存大小进行数据块划分,例如将测试文件按照偏移量划分为以内存可以容纳的尺寸,如划分为以1gb为单元的数据块,以确保单次处理的数据量在内存可以支持的范围内。后续对划分出的各数据块再按顺序选定进行读写正确性的测试、验证处理。
29.本实施例中,预先在内存中申请两个缓存空间(第一缓存空间a、第一缓存空间b),以分别用于存储对测试文件的数据块进行读、写操作的数据,先将随机数据写入第一缓存空间a,将第一缓存空间的数据写入当前数据块中,然后将修改数据写入第一缓存空间a,再将第一缓存空间a中数据写入当前数据块,以对当前数据块中内容进行随机修改,同时将随机修改后当前数据块的内容写入第二缓存空间b,则通过比对缓存空间a、b的数据一致性,即可判断数据块的读写操作正确性。
30.本实施例中,步骤s02中将随机数据写入预先申请的第一缓存空间,将第一缓存空间的数据写入当前数据块中的具体步骤包括:s211.生成第一随机数据并使用生成的第一随机数据初始化预先申请的第一缓存空间a;s212.执行写操作将第一缓存空间a完整的写入当前数据块所在的文件空间;s213.执行文件同步操作以将当前数据写入磁盘。
31.本实施例中,步骤s02中对对第一缓存空间的内容进行随机修改并写入当前数据块中的具体步骤包括:s221.生成第二随机数据并将生成的第二随机数据写入第一缓存空间a,以更新第一缓存空间a对应区间数据内容;s222.将第一缓存空间a中当前数据内容写入当前数据块所在的文件空间;s223.执行文件同步操作以将当前更新数据写入磁盘。
32.上述步骤s221中,具体通过循环执行多次(如1000次)生成第二随机数据并将生成的第二随机数据写入第一缓存空间a,以使得随机写入内容能够均匀分布在测试文件的对应区域中,从而可以对测试文件进行完整、充分的测试、验证。
33.本实施例中,上述步骤s221生成第二随机数据并将生成的第二随机数据写入第一缓存空间a的具体步骤包括:s2111.随机(如在0到1024mb的空间范围内)选择一个块内起点偏移量,从块内起
点开始在一个页面长度范围内的空间中取随机数,生成第二随机数据;s2112.以当前数据块的起点偏移量加上块内起点偏移量作为写入起点,在一个页面长度范围内将第二随机数据写入第一缓存空间a。
34.本实施例通过上述步骤,可以生成动态、随机的测试数据覆盖测试空间的整个存储空间,有效确保测试效果。
35.本实施例通过按顺序选择一个数据块写入随机内容作为初始数据,将初始数据保留在内存(第一缓存空间a)并将文件同步到磁盘,在内存中的数据作为参照,而保存在磁盘上的数据作为测试对象;在选定的数据块范围内,随机选择起点对保留在内存中的数据进行随机的内容修改并仅将修改的部分写入到磁盘,执行文件同步,以对内存中的参照数据和磁盘上的测试文件执行同样的部分修改操作并确保修改生效。按照上述完成对当前数据块的随机修改后,根据当前数据块偏移量从测试文件中加载当前数据块的内容至第二缓存空间b,若文件系统读写操作正确,则较第一缓存空间a、b中内容应当是一致的,则通过比较第一缓存空间a、b中内容即可判断文件系统读写操作的正确性。
36.本实施例中,步骤s03分别读取第二缓存空间以及保留在第一缓存空间的参照数据并比对是否存在差异的具体步骤包括:逐字节比较当前数据块与对应的参照数据的数据一致性,如果一致判定当前数据块读写操作成功,如果检测到存在不一致的数据则输出对应的数据信息,步骤s04中如果所有数据块的比较结果均一致,则判定待测试的文件系统读写操作正确,数据信息包括数据内容、偏移量以及数据大小等。
37.本实施例通过生成动态、随机的测试数据覆盖整个存储空间,结合进行逐字节比对,能够有效探测某些特殊位置、特殊尺寸、包括特殊内从而容的io操作才能触发的文件系统故障,进一步提高文件系统读写正确性测试、验证的精度,为文件系统读写功能调试提供有效依据。
38.在具体应用实施例中,执行完步骤s02后,先清空文件缓存再重新读出选定数据块,并与内存中保留的数据块进行逐字节比对,判断是否存在差异。如果有差异存在,说明数据在写入或者读取流程中发生了变化,将两份数据以及相关信息输出至指定的位置。上述变化可能是数据发生了错位、或者是内容错误,或者是由于写入操作超越了边界造成磁盘上现有数据的损坏,后续可以根据两份数据的具体内容以及相关信息对错误进行推测。对文件的每个数据块分别执行步骤s02~s04的验证操作,若均通过测试则判定文件系统读写功能是正确的。
39.以下以在在具体应用实施例中采用本发明上述方法实现文件系统读写正确性测试为例,对本发明进行进一步说明,如图3、4所示,详细步骤为:步骤1.在指定文件系统中按照用户设定的大小生成用于测试的数据文件,并且将该文件划分成以1gb(1024mb)为单元的多个数据块,以测试过程中按顺序依次选择数据块执行验证操作。
40.步骤2.在内存中申请两个尺寸为1gb的缓存空间a与b。
41.步骤3.判断是否处理完全部数据块。如果还有未处理的数据块,针对第一缓存空间a进行以下操作:步骤3.1.在0到1024m的空间范围内逐字节生成0-255之间的随机数,并使用该随机数初始化空间a。
42.步骤3.2.按顺序选择一个数据块,执行写操作将第一缓存空间a(读空间)完整的写入选定数据块所在的文件空间。
43.步骤3.3.执行文件同步操作确保数据存入物理设备,则在磁盘以及第一缓存空间a中均存储有对测试文件当前选定数据块随机写入的数据。
44.步骤3.4. 关闭文件。
45.步骤3.5执行open打开操作重新打开文件。
46.步骤3.6.在0到1024m的取值范围内生成随机数,用作随机写入的起点。
47.步骤3.7.从第一缓存空间a的上述起点开始,一个内存分页的长度范围内逐字节生成0-255取值范围内的随机数,更新第一缓存空间a的对应区间数据内容。
48.步骤3.8.从步骤3.6选定的起点开始,对第一缓存空间a一个内存分页长度范围内的数据向测试文件执行写入操作。
49.步骤3.9.执行文件同步操作以确保数据存入物理设备,则。
50.步骤3.10.将步骤3.5至3.7循环执行1000次,使随机写入内容均匀的分布在文件的对应区域中。
51.步骤3.11.执行close关闭操作关闭文件。
52.步骤3.12. 通过操作系统的procfs机制,清空文件缓存页面。
53.步骤4.针对第二缓存空间b(读空间)进行以下操作:步骤4.1.重新打开测试文件按照步骤3.2所选择的数据块偏移量从文件加载1024mb数据至第二缓存空间b。
54.步骤4.2.比对及异常结果输出:逐字节比较内存空间a与b的数据一致性,如检测到不一致的数据,将两份数据内容及其尺寸与偏移量信息输出至用户指定的存储位置,结束测试。后续用户可以通过两份数据的差异推测错误的产生原因。
55.步骤4.3如果比对无差异,返回步骤3.2对下一个数据块进行测试。当所有数据块测试完毕无差异,判定文件系统读写功能正确完成。
56.如图5所示,本实施例对每个数据块进行处理时,对于选定的一个1gb数据块,首先申请两个1gb的内存缓存空间(a与b);用取值范围为0-255个随机数逐字节填充内存缓存空间a,然后将内存缓存空间a的数据写入测试文件,执行同步操作并关闭文件,确保数据写入磁盘;再次打开文件,随机在0到1024mb的空间范围内随机选择一个块内起点偏移量,向该起点开始,一个页面长度(65536字节)范围内的空间,逐字节填充取值在0-255范围内的随机数以用于写入测试缓冲区;以选定数据块的起点偏移量,加上块内起点偏移量作为写入起点,一个页面长度作为范围内将上述随机数写入测试文件中,重复执行多次(如1000次),使随机写入内容均匀的分布在当前测试的数据块中;再次关闭文件,通过procfs清空文件缓存,确保数据必须从磁盘读取;重新打开文件,从选定数据块的起点开始将1gb的内容从测试文件读取到内存空间b,最后对内存缓存空间a与b作逐字节对比以判断数据一致性。
57.如图6所示,若内存空间a与b在内容上一致,则判断当前数据块读写操作均成功。如果存在差异,则将两个内存空间输出到文件,以便用户分析故障可能的成因。
58.本实施例文件系统读写正确性测试装置包括:创建文件模块,用于在待测试文件系统中创建指定大小的测试文件并将测试文件划分为多个数据块;
数据操作模块,用于选取一个数据块进行处理,先将随机数据写入预先申请的第一缓存空间,将第一缓存空间的数据写入当前数据块中,然后对第一缓存空间的内容进行随机修改并写入当前数据块中,以对当前数据块的内容随机进行随机修改,保留第一缓存空间的内容作为参照数据;数据比对模块,用于分别读取第二缓存空间以及保留在第一缓存空间的参照数据并比对是否存在差异,得到当前数据块的比对结果;正确性判断模块,用于根据所有数据块的比对结果判定待测试文件系统的数据读写是否存在错误。
59.本实施例文件系统读写正确性测试装置与上述文件系统读写正确性测试方法为一一对应,在此不再一一赘述。
60.本实施例还提供存储有计算机程序的计算机可读存储介质,计算机程序执行时实现如上述方法。
61.上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献